This section of FAQs has questions realted to FPGA fundamentals and its applications.
What is FPGA?
FPGA stands for “Field Programmable Gate Array”. This is a chip which consists of programmable hardware which can be used to design any digital circuit in it. The following figure shows the essential components of FPGA.
The logic blocks contain the multiplexers, Look up tables, flip flops and necessary switches to connect appropriate blocks.
The programmable interconnects will be useful to connect appropriate logic blocks and I/O blocks.
The I/O blocks allow the FPGA pin to be configured for input/ouput/inout. These blocks also allow to choose the drive strength etc.
Modern FPGAs has several other features in them. Browse through the following links to read more about the FPGA features.
Today most of the FPGA based development starts with HDL coding. The first design cycle in FPGA based design would be writing a proper HDL code then after few design cycles it can be implemented on FPGA
How FPGAs are useful?
An FPGA consist of lot of programmable hardware in it like multiplexers, lookup tables, gates and flip flops which all can be connected using fuses/switches. The fuses are basically programmable so that we can configure any type of hardware in FPGA with in less design time.
What are PLDs?
PLD stands for “Programmable Logic Devise”. These devices are a class of chips which are programmable for any particular purpose.
Eg: PALs, PLAs, CPLDs, and FPGAs
What are different types of PLDs?
The Programmable Logic Arrays (PLA), Programmable Array Logic (PAL), PROMs, CPLDs and FPGA these all come under class of PLDs.
Who are different companies manufacturing FPGAs?
FPGAs are manufactured by several companies. Among them Xilinx, Altera, Lattice semiconductors and Actel are very popular.
What are the steps involved in FPGA based design?
The different steps in FPGA based design are Design entry, Simulation, Synthesis and Implementation. The design entry mainly describes the circuit may be in VHDL or Verilog or C or by any other means. In simulation we verify the functionality of the circuit by simulating it on computer. In synthesis code will be translated to an implementable form in FPGA (.bit file).
Please read the chapter 2 of Xilinx ISE “synthesis and simulation design guide” document which describes the various steps involved in FPGA based design.
How is FPGA different than Micro Processor or Micro controller?
A typical Microprocessor or Microcontroller consist of an ALU, Registers and Control unit etc. in it. These devices understand some set of machine codes called instructions. So any piece of job which has to be done by a Microprocessor or Microcontroller has to be instructed in a sequential set of instructions, which is typically called program. This program will reside in a RAM or a ROM and a Microprocessor or Microcontroller takes instruction by instruction and executes the job.
Where as an FPGA consists of internally a programmable hardware lot many multiplexers, lookup tables, flip-flops and several gates. The logic in FPGA is implemented by connecting the appropriate hardware through some programmable switches and once the logic is configured in FPGA according to the inputs the proper output are generated on FPGA. So FPGA basically works by configuring itself for the required logic.
It can be observed that microprocessor/microcontroller is sequential by its nature of execution. Where as FPGA can simultaneously execute the given tasks (parallel).
How a Typical FPGA works?
FPGA consist of lot of programmable hardware in it, like Multiplexers, lookup tables Gates and also Flip-flops to implement any hardware. All these blocks are connected to each other through programmable switches to realize the specific logic. The programmable switches are programmed in such a way that the appropriate circuit is implemented in FPGA.
.
How to decide whether to use FPGA or Micro Processor or Micro controller for a typical embedded system?
To implement an embedded system we can have several choices like FPGA, Microprocessor, Microcontroller and DSP processor etc. if the embedded system has lot of sequential nature like algorithmic nature in it. Then a typical Microprocessor or Microcontroller is more suitable. If majority of the software if for reading & writing into I/Os and it requires several peripherals then Microcontroller would be suitable option. But if lot of computational intensive processing is involved then Micro processor is preferred option.
Apart from these if the application demands a parallel hardware realization (or a parallel implementation) and several peripherals on chip then FPGA is the preferred option.
How a typical Microprocessor works?
A Micro Processor understands a few set of machine codes called instructions. For any job which has to be get it done by Microprocessor has to be provided in those sequential set of instructions what is typically called as program. This program will reside in RAM or ROM may be in side the chip or out side the chip. Once the Microprocessor starts executing program it keeps taking in the instructions one by one and executes the job. So a Microprocessor is inherently sequential in executing the program.
Why Majority of high-end defense and space communication systems use FPGA?
A general high-end communication systems used in Military or commercial communication applications require a lot of parallelism and high throughput. FPGA provides programmable logic which can be configured according to the application with lot of parallelism. Hence FPGAs become a preferred option to build complex communication system.
When DSP is performed on FPGA ?
If the Digital Signal Processing applications require a lot of parallelism means several digital signal processing blocks need to run parallely or concurrently then FPGA is preferred option.
How to Choose PDSP or FPGA for a given digital signal processing application?
Whether you pick a PDSP or an FPGA for a digital signal processing application depends on the type of application and the expected throughput from the application. If the required DSP application is more algorithmic in nature or is more sequential in nature then a PDSP will be a preferred option. Where as if the require DSP is highly parallel or concurrent then the FPGA will be preferred option. Today in most of the advance DSP applications where you need a high throughput or extremely high speed DSP then FPGA is highly used in industry.
What are different techniques used in DSP application development on FPGA?
There are a lot many differences between the developments of application on a PDSP when we compare with development on FPGA. When we are developing a DSP application on FPGA we used few different techniques for achieving several advantages. Some of the techniques are distributed arithmetic, bit serial arithmetic, digit serial arithmetic and using some other special number system to give high performance on FPGA.
Do FPGA provide special feature for DSP application development?
Yes. Today several FPGA manufactures provides different types of FPGA which come with some special hardware which is suitable for DSP application development. For Example, Most of the FPGAs which are aimed for DSP application development come with MAC unit (Multiply and Accumulate Unit) so that the DSP application can run faster on FPGA. For more information on this particular aspect lot of literature can be browse on internet from several FPGA vender websites.
Yes. Today the DSP processor, FPGA and several embedded processors they all work on standard interfaces. So it is possible to connect them for developing a bigger application.