What is an FPGA?
An FPGA (Field-Programmable Gate Array) is a programmable network of digital logic. Traditionally, FPGAs have been used for signal processing, protocol conversion, network switching, and a variety of other compute-intensive applications. However, with the emergence of a new generation of cheap, low-power FPGAs in small packages, today, FPGAs can used for a wide range of more basic digital tasks in a system, even applications like sensor data aggregation and glue logic replacement. At the high end of the spectrum, modern SOC (System-On-Chip) FPGAs combine a high-end microprocessor and a network of programmable logic on a single chip. The functions in the programmable logic have direct access to the system bus of the microprocessor, allowing implementation of very high-bandwidth and low-latency custom peripherals.
When a product reaches high enough shipping volume to justify the mask costs, an FPGA design can be converted to ASIC (Application Specific Integrated Circuit) to further increase performance and reduce power consumption, size, and cost.
FPGA Development Process
The first step in the FPGA development process is to create a specification document, and to review it with the customer and with the hardware engineers. We then procure pre-built IP (intellectual property) for key standard functions, and write RTL (register-transfer-level) code in an HDL (hardware description language) to do the remaining custom functions. We simulate the design to verify its functionality and performance, then generate a bitstream to test the design on real hardware.
We typically develop FPGA RTL in parallel with the PCB design, working in simulation and on development boards from the FPGA manufacturer until the PCB is assembled and has passed the first level of functional electrical testing. With this approach, we can often get the FPGA up-and-running on the board within just a few days of receiving the assembled PCBs.
For more information on FPGAs, check out our blog posts!
We can help with your project.