FPGA or field programmable gate array is a semiconductor integrated circuit where electrical functionality is customized to accelerate key workloads.
FPGA is a semiconductor IC where a large majority of the electrical functionality inside the device can be changed, changed by the design engineer, changed during the PCB assembly process, or even changed after the equipment has been shipped to customers out in the ‘field’.
SoC FPGA devices integrate both processor and FPGA architectures into a single device.
Integrating the high-level management functionality of processors and the stringent, real-time operations, extreme data processing, or interface functions of an FPGA (Field Programmable Gate Array) into a single device forms an even more powerful embedded computing platform.
Consequently, they provide higher integration, lower power, smaller board size, and higher bandwidth communication between the processor and FPGA. They also include a rich set of peripherals, on-chip memory, an FPGA-style logic array, and high speed transceivers.
FPGA functionality can change upon every power-up of the device.
Get products to market quicker and/or increase your system performance.
Today’s FPGAs include on-die processors, transceiver I/O’s at 28 Gbps (or faster), RAM blocks, DSP engines, and more.
Total Cost of Ownership (TCO)
While ASICs may cost less per unit than an equivalent FPGA, building them requires a non-recurring expense (NRE), expensive software tools, specialized design teams, and long manufacturing cycles.
Processors in SoC FPGAs can be “hard” or “soft." Hard processors are implemented in the fixed silicon logic of the SoC FPGA similar to serial transceivers. On SoC FPGAs, however, the processor is surrounded by programmable logic that you can use for custom or application-specific functions. Hard processors offer higher CPU performance than soft processors, depending on factors such as processor architecture, clock rate, and process technology. As the name implies, hard processor feature sets are fixed and typically offered only as a variation of a particular SoC FPGA. The number and type of hard processors within an SoC FPGA are also fixed as a function of that particular SoC FPGA. Altera® offers hard processors in Intel® Stratix® 10 SoC FPGA, Intel® Arria® 10 SoC FPGA, Arria® V SoC FPGA, and Cyclone® V SoC FPGA families.
Soft processors, such as the Nios® II processor, are implemented in programmable logic, use on-chip resources such as logic elements, multipliers, and memory, and can be instantiated in almost any FPGA family. The performance and cost of a soft processor depend mainly on the FPGA in which the processor is instantiated, but performance and cost are typically lower than in hard processors. The number of soft processors that can be instantiated in a single device is limited only by the device’s resources (that is, its logic and memory). High-density FPGAs, for example, can contain hundreds of soft processors. Likewise, different types of soft processors can be implemented: 16 or 32 bit, performance optimized, logic-area optimized, and so on. You can choose to migrate your soft processor designs to hard processor implementations when moving to gate arrays or cell-based designs. One or more soft processors can likewise be used in the FPGA portion of an SoC FPGA.
There are many ways to use FPGAs in an embedded system. Typical uses include:
- I/O and peripheral expansion-Add peripherals missing from your current processor such as LCD or memory controllers, or increase the number of I/O channels in your system by adding Ethernet, general-purpose I/O (GPIO), or UART ports.
- Coprocessing-Boost system performance by moving compute-intensive algorithms from software running on a processor to hardware in the FPGA. Signal processing, image processing, and packet processing applications achieve orders of magnitude performance improvement running in hardware rather than software.
- Custom embedded controller-You decide which (and how many) processors, peripherals, interfaces, direct memory access (DMA) channels, and memories to include in your custom embedded controller.
- Multiprocessor-Accelerate your software development, improve code reliability, and increase maintainability by distributing tasks across several CPUs. You can design a multiprocessor system as a custom system inside a single FPGA or to augment an external CPU or digital signal processor.