Do you need an FPGA in your embedded system or electronic device?
#FPGA, #electronics, #embedded systems
1. What are FPGAs and why have they been invented?
Field-Programmable Gate Arrays (FPGAs) are integrated circuits that can be programmed after manufacturing in the field, hence the name. They consist of configurable logic blocks and interconnects, allowing them to perform various digital functions (Programming an FPGA: An Introduction to How It Works – Xilinx or History of FPGA).
FPGAs were invented to bridge the gap between software and hardware engineering. In the mid-1980s, Ross Freeman and his colleagues bought the technology from Zilog and started Xilinx, targeting the ASIC emulation and education markets. Altera was founded with similar technology at its core.
FPGAs offer flexibility in digital design, unlike Application-Specific Integrated Circuits (ASICs) that are custom-built for specific tasks and cannot be changed after manufacturing.
2. How does using FPGAs compare to the use of microcontrollers?
FPGAs and microcontrollers are both integral to the field of embedded systems, but they serve different purposes. The main difference lies in the level of customization and complexity. FPGAs allow for greater customization and more complex processes, as well as retroactive changes to hardware. In contrast, microcontrollers are cost-effective but much less customizable.
Microcontrollers are compact integrated circuits designed for specific tasks. They combine a processor core, memory, and various peripherals into a single chip, providing a cost-effective solution for simple to moderately complex applications.
On the other hand, FPGAs are highly versatile integrated circuits that allow users to create custom digital circuits by programming them at a hardware level. Unlike microcontrollers that execute instructions sequentially, FPGAs can be reprogrammed to perform different tasks by altering their internal connections and logic.
3. What are the benefits of using FPGAs in an embedded project?
FPGAs provide benefits such as high speed, predictability, longevity, and instant-on operation which make them an ideal choice for many embedded system applications.
They offer high compute density with lower power consumption, reconfigurable hardware, and high customization. FPGAs are especially useful in applications like vision systems, military and aerospace, sensor fusion, edge computing, signal processing, telecommunications, deep packet inspections, security, network processing, industrial measurements, cloud computing, automotive, IoT, medical and embedded AI.
4. Why is FPGA-based development so different from microcontrollers programming?
Unlike microcontrollers which are designed for specific tasks, where you write sequential code in C or C++ or other similar programming language, with FPGAs you are designing digital circuits. This shift in mindset from procedural programming to parallel programming is what makes FPGA development quite different. FPGAs can handle parallel inputs, performing multiple operations simultaneously. They are programmed using Hardware Description Languages like VHDL or Verilog or SpinalHDL brought to life recently.
5. What tools and famous FPGA manufacturers are used?
FPGAs are developed using tools provided by FPGA manufacturers. The two leading companies in the FPGA industry are Xilinx, recently acquired by AMD, and Intel, which acquired Altera. Xilinx offers a wide range of FPGA devices and best-in-class EDA tools (Vivado and Vitis). Other notable manufacturers include Lattice, Microchip, Efinix and Gowin Semiconductor.
Figure 1. AMD Xilinx Kintex Ultrascale Chip – an example of FPGA
6. The stages of FPGA development process
The FPGA development process for embedded systems can be broadly divided into several stages (FPGA programming stages, Step-by-step FPGA programming):
Stage 1. Defining System Requirements: This is the first step in developing a new system or initiating a significant upgrade to an existing system. It involves developing a clear and detailed understanding of what the system is supposed to do.
Stage 2. Design Phase: This phase focuses on transferring the initial concept or idea into an actual FPGA device.
Stage 3. Verification: This stage involves testing the design to ensure it meets the defined system requirements.
Stage 4. Implementation: In this phase, the verified design is translated into a programming file for the FPGA device.
Stage 5. Iterative Development: FPGA development often proceeds in phases as the initial design becomes specified in more detail. It is common to iterate through these phases several times for a large project, developing a small portion of the total design during each pass.
7. The cost and complexity of FPGA use
The cost and complexity of FPGA use are intertwined. FPGAs are more expensive than microcontrollers due to their flexibility and complexity. The cost of an FPGA can range from a few dollars to several thousand, depending on its size and features. Additionally, the development tools for FPGAs, such as Xilinx’s Vivado or Intel’s Quartus, can also add to the cost. Despite the higher upfront cost, FPGAs can be more cost-effective in the long run due to their reprogrammability and versatility
8. Most famous FPGA applications
FPGAs are widely used in various fields such as telecommunications, digital signal processing, video and image processing, aerospace & defense, and high performance computing. A few examples:
1. SmartNICs by Xilinx: Xilinx’s Smart Network Interface Cards (SmartNICs) are used in data centers for offloading CPU-intensive tasks.
2. Microsoft Azure: Microsoft uses Intel FPGAs to accelerate networking and machine learning tasks in its Azure cloud platform.
3. AWS F1 Instances: Amazon Web Services offers F1 instances, which are FPGA-accelerated virtual machines in the cloud.
4. Cisco Routers: Cisco uses FPGAs in their high-end routers for tasks like deep packet inspection.
5. Tesla’s FSD Computer: Tesla’s Full Self-Driving (FSD) computer uses FPGAs for accelerating neural network processing.
6. Hamamatsu’s ORCA-Quest scientific camera and X-ray food inspection system: These cameras use Intel® Arria® 10 and Intel® Cyclone® 10 FPGAs for real-time image processing and high-bandwidth interfaces.
and many more…
9. How to start with FPGA development?
The best way to start your FGPA development is to contact a team that has wide and recent experience in FPGA development. There are many companies in the world that can offer FGPA development outsourcing. Some of them are listed on AMD and Intel website as members of the respective partner programs.
Embevity has recently become and AMD Adaptive Computing Partner due to their experience and commitment to FPGA development.