FPGA (Field Programmable gate array)
FPGA or field programmable gate array are device which are composed of CLB( Configurable Logic Blocks) and that are connected using a programmable link between them. FPGA have capabilities to reprogram in the field of operation many times as user may required . the main difference between FPGA and ASIC 's are that the ASIC 's are application specific and developed with only one application or some while in production phase where as the fpga are like a plain ground with all the necessary tools so that you may build your own system as per requirement on the go without going to change the production phase so now we know the basic of FPGA but how does it work and what are its application. FPGA are very fast devices in comparison to the microprocessors or micro controllers.
Xilinx FPGA internal Architecture
image source: Researchgate
FPGA architecture & working:
FPGA are consists of Configurable Logic blocks with interconnection of programmable links so when we want to use fpga for some application it may required to program its hardware function as per our requirement so that may be done by the Hardware programming Language like VHDL and Verilog.
Building blocks of FPGA are Broadly separated in three types.
- CLB( Configurable Logic blocks)
- Programmable Interconnects
- Input/output blocks
1. CLB: The CLB are consists of FLIP FLOP and LUTs (Look up tables) the flip flop are the binary shift registers used to save logical states and the aslo to synchronize the logic within the fpga circuit. the flip flop may hold the 0 or until the next clock is available which also called as latching process. where as the LUT or the lookup table are combination of gates (Nand, Nor) for implementation of your logic on the FPGA or we can say the LUTs are a piece of RAM which may be loaded every time when by boot or power up our FPGA with the required Truth table of you need as the program may be.
2. Programmable interconnects : there the interconnect or say programmable links used in any fpga to configure the hardware circuit as the application may be when we say a programmable links it means that it is like a way of how the input are connected to the outputs as per our program.
3.Input output Block: this block of FPGA are used to provide the input data to fpga and to Out the processed data from the FPGA . the logical input and and outputs of any FPGA can be configured by UCF or user constraint file which as a mapping of logic input out put to the pins of the FPGA device without using UCF configuration user may not able to provide any input or output from the FPGA when they were able implement there logic on the device.
Programming of FPGA
Programming of FPGA maybe done by making program using any hardware language like VHDL and Verilog with the use of some open source Compilers like FREE-HDL or some proprietary software from Xilinx or Micro semi or Intel or others. but the in now days the C language is also used to make programs for FPGA devices as the IDE 's available are some how intelligent that they may convert the C logic's to the equivalent VHDL or Verilog does and then the synthesis may be done. after the compilation a .bit .bin file or .elf file be generated to be programmed in FPGA devices so that they may work as intended to do so.
IP(intellectual Property): the software and hardware coded reusable block that may be used in any FPGA for application development.when we talk about hardware IP it may me some type of Layout or VHDl code for some Chip Core or peripheral devices. IP are same as library in software programming environment. IP are mostly available in synthesized RTL(Register Transfer Logic) Level. but some time Gate level Net-list are also available.all IP have some type of licencing associated with it there are many open IP cores and proprietary IP cores are available now days . one very reputed open source IP source is opencores.org .
Whats is SOC ?
SOC: System on Chip are application specific IC(integrated circuits) or say a ASIC(application specific integrated circuit) which has a complete system on a single chip which means any SOC may consist of a processor , memory, i/o blocks, and some time some RF circuits also. the all components i discussed here about soc are bare minimum in actual world the numbers may be very large and there may be multi-core Soc or say a secondary memory included on it . the applications of Soc may as microprocessor system, Micro controllers system, WiFi device , DSP or a GPU system in general.
The PSoc 's are also very common in theses days which are used in FPGA by programming the IP(intellectual property of the soc ) examples from Xilinx's are Zynq Soc and MP Soc.
Soc may be divided in 4 types as per there design and application.
1. The Soc which are design for general purpose computing or for mobile devices called as SOC based on micro Processors.
2. the SoCs which are designed for Embedded systems and Networking devices are called as SoC based on Microconrtrollers.( some networking and embedded system design also use micro Processor based SoC )
3. The SoCs which are designed for the use with some very complex application and not covered by the others are Application Specific Soc used in Space or Nuclear based research projects.
4. the SoCs which are used for design with FPGA are the Programmable SoCs and they have very limited program-ability as compare to FPGA Devices.
Programming of SoC
Programming of Soc are not that complex as FPGA and also don't required some additional knowledge of the SoC architecture model . just the data sheet of the SoC may used to know the registers and there programming model and the knowledge of any high level language may be adequate to program it . The only vital requirement is the the availability of the compiler of that particular language and the BSP( the board support package for the same). in some cases of Embedded system design the BSP are also to needed to be developed by the programmers and that may include some complex programming and hardware knowledge of boot process is needed if the device is new or custom made and there is no prior library or core programs are available for that particular SoC for that specific application.
Consumer devices FPGA vs SOC
when we talk about consumer electronics we are talking about the devices which are surrounded us every time like TV , Refrigerator, AC and mobile phones and many more devices . if we look in to theses devices they are mostly a mass production products and do not need any variation from one to another for same device. so the use of Soc may benefit the manufacturer by reducing the cost of production , programming and also the maintenance and also in very cost effective way . but when be talk about a device which may require some additional capabilities and customization for customer need and if also there is a variability of feature is needed product by product it may useful to use FPGA based designs that they may cater the fastest operation process along with minimum cost to customize the product without any hardware changes so when a off the self device is needed by the consumer without any modification a SoC may be the first choice by the manufacturer where as when the the demand is variable and the feature is consumer specific the Device a manufacturer may use are mostly FPGA. so that the alteration of functions or features of the device may done easily without any additional hardware replacement or upgrade cost .