Before the development of CAD, electronic circuits were designed and manufactured by hand. Some advanced stores used geometric software to create the tracks with the Gerber photoplotter. The process was essentially graphic, with a transition from the electronic diagram to a layer for the UV insolation machine.
The development of FPGA circuits is often referred to as programming. In this context, however, the term is to be understood differently than it is known from the creation of software for processors. As part of the development process, a circuit design is first carried out, followed by a check of the resulting hardware description using simulation tools and then an implementation (place and route) and, if necessary, runtime-based simulation. Only then can the implemented circuit be tested on the real FPGA.
|Table of Contents|
Why Do We Need to Know About FPGA?
Electronic CAD, also known in English as EDA (for Electronic design automation), is the category of tools used for the design and production of electronic systems ranging from PCB to IC. We need commercial services for electronics for two broad reasons: (i) For hobby-grade production from open source projects and (ii) For commercial production from any source. The services for hobby-grade production are often cheaper and devoid of strict maintenance of the technical standard. However, if you’re looking for professional electronic design services, you may want to contact outsourcing companies like Integra Sources. Many of the methodologies have similarities with software development, however, there is a need to explain FPGA-based systems. CAD has rapidly gained prominence with the continuous miniaturization of semiconductor technology. Engineers build and test circuits on a computer before starting manufacturing. Service-concept companies also use CAD software to evaluate new concepts and prepare them for manufacturing. CAD tools are also used to synthesize and implement functions in FPGAs.
The basic structure of an FPGA
The essential basic structure of an FPGA is a field (array) of base blocks, each with a simple programmable lookup table (LUT) and a 1-bit register (flip-flop). Depending on the number of available inputs, the LUTs can realize any n-digit binary function. The desired function is programmed by storing the defining truth table in the SRAM cells of the LUT, the function calculation by reading out the memory address determined by the inputs. For a long time, LUT structures with 4 binary inputs were common. Newer FPGAs are transitioning to LUTs with up to 6 inputs to reduce the overhead of LUT-to-LUT connections to realize functions with more inputs.
In addition to the LUTs, the connection of the components can also be configured on the FPGA in large degrees of freedom. Multiplexer structures in the base blocks often enable very fast local signal paths, for integrating or bypassing the flip-flop, for feedback from its output, for connecting neighboring blocks and the like. For the more distant connections, there is a grid of immense bus structures between the base blocks, to which inputs and outputs can be connected.
Application of FPGA
By configuring the internally available elements, various circuits and functions can be realized in an FPGA. These range from circuits of low complexity, such as a simple synchronous counter or interfaces for digital devices, to highly complex circuits such as memory controllers and complete microprocessors.
FPGAs are used in all areas of digital technology, but especially where fast signal processing and flexible switching changes are important, for example, to be able to make subsequent improvements to the implemented functions without having to change the hardware directly. A large field of application is the creation of prototypes in ASIC development for the previous test as well as the area of maintenance, in which it is a matter of storing electronics for old, no longer available digital components or microcontrollers.
With the introduction of FPGAs, compact, user-specific circuits in small quantities were made possible. Today, they allow the inexpensive and flexible production of complex systems such as mobile phone base stations as an alternative to more expensive contract manufacturing by semiconductor manufacturers.
In addition to the FPGAs, there are also FPGAs (Field Programmable Analog Array), which contain not only digital but above all analogue function blocks that can be programmed and connected by the user. These are primarily filters and RF components.
Since their beginnings, FPGAs have increasingly expanded their field of application from the classic “glue logic”, i.e. the pure connection logic between different digital components, and are now also used in medium quantities for the realization of complex digital circuits up to complete digital systems. Due to the reconfigurability of FPGAs directly at the end-user, there is also the significant advantage of being able to react to current technical developments and being able to adapt the digital circuits through updates without having to directly change the underlying hardware of the FPGA chips.
FPGAs are used, for example, for real-time processing of the simple to complex algorithms, for digital signal processing in the context of digital filters or for fast Fourier transformation. Protocol implementations such as parts of the Ethernet MAC layer, the encoding of digital video signals, the encryption of data and error correction methods are also areas of application.
Especially in areas where algorithms or protocols are subject to rapid development, the use of reconfigurable FPGAs instead of ASICs is appropriate. The advantages are – fast time to market, the possibility of subsequent bug fixes, adaptation to new developments.
FPGA-based parallel computers are also very suitable for some classes of computing problems.
The configuration of an FPGA is created either graphically using a schematic or textually with a hardware description language. These are primarily VHDL or Verilog, which describes the entire function of the circuit in the form of structures and processes. A so-called synthesis tool executes this description like a program and then creates a specific netlist for the desired block in several steps using the resources available in this block.
After the description during the design flow, further steps such as functional simulation, synthesis follow.
Based on a verified logic circuit, the netlist for the specific FPGA is then implemented, whereby external function blocks, which are offered by third-party providers and previously only existed as black boxes, are also inserted. Likewise, in this step, partial circuits intended for testing the FPGA, such as integrated Logic Analyzers, can be added.
By applying further boundary conditions, the conversion to a programming file for loading the FPGA takes place, from which in turn another programming file can be generated, which serves to load the flash memory.