FPGA is a special logic chip that is semi-customized and programmable. It allows users to define the chip's hardware functionality at any time. By opening up the logic blocks, connections, I/O, and other resources inside the chip for users to configure, the same FPGA can not only implement the channel coding function in 5G base stations but can also be reconfigured and immediately applied to industrial machine tools, medical equipment, etc. devices.
FPGA consists of three major parts: programmable logic blocks, programmable wiring, and programmable I/O.
1) The programmable logic block is the most important part of the FPGA architecture and is responsible for carrying out the main circuit functions. The two most important "building blocks" in programmable logic blocks are LUT (Look-up Table) and registers. Each logic unit includes a LUT4. several multiplexers (MUX) and a register, which can complete sequential circuits and combinational circuits, representing the basic capacity of the FPGA. Programmable logic blocks are essentially built from multiple LUTs, MUXes, and registers that carry the individual logic "gates" in a circuit. There are often hundreds of thousands of logic blocks in modern FPGAs, which can be connected to each other or process IO input signals independently at the same time. There is no need to waste time processing control instructions. This is the reason why FPGA has good parallelism.
2) Programmable connections are responsible for connecting many modules in the FPGA, connecting these logic blocks together in a way that satisfies timing constraints with optimal delay, and together form a larger-scale circuit, integrating the target circuit in the FPGA. Implemented on FPGA, it contains three core steps:
a) Mapping: Map the logic gates of the circuit to different LUTs to form a LUT-level netlist;
b) Packing: Place these LUTs into CLB to form a CLB-level netlist;
c) Place-and-route: Place the CLBs in appropriate locations and connect them to each other.
3) Programmable I/O is responsible for the interaction between the FPGA and the outside world and can implement more complex functions such as serializing and deserializing signals, delaying signals to align the clock, etc. Programmable IO is composed of an IOB module (Input/output Buffer) and adjacent IO logic resources. Responsible for the interaction between FPGA and the outside world, and can perform complex processing on input and output signals. FPGAs usually have hundreds to thousands of pins. In addition to dedicated pins for clock, power, and configuration, most of the pins are responsible for introducing or outputting signals.
Millions or even tens of millions of gate-level circuits connect different logic units together through programmable connections. The registers in the logic units can be used as storage units to send the results of the combinational logic to the input of the next combinational circuit. The entire circuit can work simultaneously like an assembly line.
Since the processing and transmission of data signals take time, the transmission and change of clock signals also take time. If the layout and wiring methods are unreasonable, the data will arrive at the next register too late or too early, that is, the data acquisition will fail. Case. Large circuits often have hundreds of thousands of CLBs that need to be connected. This complex work requires dedicated EDA tools from FPGA manufacturers. Because placement and routing involve the specific internal architecture of the FPGA, which is the secret of each FPGA company, it cannot be completed by a third party and can only be performed on the FPGA company's EDA.
Modern FPGA is a mixture of logic units and solidified units such as ARM, DSP, transceivers, and CPUs. In addition to process and power consumption, the performance indicators for evaluating FPGAs can be divided into three categories: logic resources, IO resources, and solidified units. , respectively representing the performance of FPGA in terms of capacity, interface, and specific functions. Moreover, traditional LUT4 has gradually been upgraded to LUT6. LUT8 or even higher, making it increasingly difficult to convert FPGA capacity into gate-level scale. Therefore, after 2000. the "number of logical units" was adopted internationally as the basic capacity indicator.
Features of FPGA:
(1) Flexible design: It is a hardware-reconfigurable chip structure with a rich number of input and output unit pins and flip-flops internally;
(2) Strong compatibility: FPGA chips are compatible with large-scale integrated circuits such as CMOS and TTL, and can collaborate to complete computing tasks;
(3) Parallel computing: The internal structure of FPGA can build a corresponding number of pipelines according to the number of data packet steps. Different pipelines process different data packets to achieve pipeline parallelism and data parallelism;
(4) Strong applicability: It is one of the devices with the shortest development cycle and the lowest application risk among dedicated circuits (some customers can obtain suitable FPGA chips without investing in research and development);
(5) Rapid development: FPGA chip products can quickly enter the application market and are irreplaceable;
Comparison between FPGA and general-purpose CPU:
The CPU is a general-purpose device. The FPGA architecture emphasizes computing efficiency compared to the CPU architecture. Relying on FPGA parallel computing to process visual algorithms can greatly increase the computing speed and reduce latency. The computing speed can be increased several to dozens of times.
FPGA vs GPU comparison:
(1) The GPU computing peak value (10Tflops) is significantly higher than the FPGA computing peak value (less than 1TFlops);
(2) The bandwidth of the GPU memory interface is better than the DDR interface used by FPGA, which can meet the needs of frequent and large data access to memory;
(3) Hardware resources cannot be changed after the GPU design is completed. FPGA can program hardware according to specific applications and has strong flexibility;
(4) The average power consumption of FPGA (10W) is much lower than the average power consumption of GPU (200W), which can effectively solve the heat dissipation problem;
Main application scenarios of FPGA:
(1) Base stations in the communications industry, whether RRU/AAU, BBU/DU/CU, or even core network equipment, need to use FPGA to implement functions such as Turbo encoding and protocol processing acceleration. Wireless signal measurement instruments priced at hundreds of thousands or even millions of yuan will also use high-end FPGAs priced at tens of thousands of yuan for signal processing and control;
(2) In the national defense and military industry, typical scenarios such as radar data processing need to meet the characteristics of large capacity, low latency, and high reliability to achieve microsecond-level processing requirements. This latency and stability requirement can only be achieved by FPGA; Similarly to the inertial navigation system that uses fiber optic gyroscopes, FPGA can perform low-latency control of optical signals to achieve high-precision and high-dynamic measurements of fiber optic gyroscopes;
(3) Industry: Since there are a large number of low-latency scenarios in the industry, FPGA is widely used in the industrial field. It is commonly used in servo motor drives. It often adopts a CPU+FPGA architecture to achieve microsecond-level control loop feedback/ , like the Xilinx Zynq series (SoC FPGA), which has a wide range of applications in the industry. In addition, FPGAs are also used in laser equipment for signal control of picosecond/femtosecond lasers;
(4) Automobile: Typical applications are in the field of ADAS. This is because FPGA has lower latency than GPU and can ensure better braking distance; in addition, FPGA is also used in scenes such as driving rearview mirrors;
(5) Security & Video: It is mainly used in front-end data collection and low-latency processing of security high-definition video, and is also widely used in LED screen displays;
(6) AI: Deep learning models often involve a large number of multiplications and accumulations, and are particularly suitable for using FPGA parallel computing to speed up training.
When using FPGAs (Field Programmable Gate Arrays), there are several important things to note to ensure safety and effectiveness:
Ensure good heat dissipation: FPGAs may generate significant amounts of heat under heavy loads. Therefore, users should take appropriate cooling measures, such as installing heat sinks and fans, to maintain the normal operating temperature of the FPGA chip. Excessive heat can cause performance degradation or even damage hardware.
Handle the power supply with care: When connecting the power supply, always use a power adapter that meets the specifications and ensure that the voltage and current meet the requirements of the FPGA. Incorrect power supply may cause damage to the FPGA chip or other circuit components.
Prevent electrostatic discharge: FPGAs are very sensitive to electrostatic discharge, so necessary protective measures must be taken when handling the FPGA board. Use anti-static gloves, static mats, and other protective equipment to ensure that no damage is caused to the FPGA chip during handling.
Properly design circuit layout: Good circuit layout practices should be followed when designing FPGA circuit boards. Avoid signal interference and electromagnetic interference, reduce circuit noise, and ensure good signal integrity.
Pay attention to firmware security: To protect the security of the FPGA system, appropriate measures should be taken to protect the firmware from unauthorized access and malicious attacks. This includes using encryption techniques to protect sensitive information and taking access control measures to limit access to the FPGA system.
Regular backup of data and firmware: It is very important to regularly back up the data and firmware in the FPGA system to prevent data loss or system crashes. Backup can ensure that you can quickly restore to the previous state in case of unexpected situations, avoiding work interruption and data loss.