1、FPGA
1.1 What is FPGA?
FPGA is short for Field-Programmable Gate Array and is a type of integrated circuit. An engineer or designer can program it after manufacturing to carry out various tasks.
FPGAs come with many programmable logic blocks and frameworks of interconnects that can be reconfigured to be rewired. The logic gates can be inter-wired using different configurations, which allow them to be wired together. You can perform complex combinational functions by configuring the logic blocks and secure logic gates such as XOR and AND.
You will also find memory components in an FPGA, including complete memory blocks and simple flip-flops.
FPGAs are found in automobiles, data centers, medical equipment, image and video processing tools, wired communications, and so on.
Image 1: FPGA Vs. Microcontroller
1.2 FPGA Programming
FPGA programming is the process of configuring or reconfiguring the IC using Hardware Descriptive Languages such as VHDL and Verilog. Through programming, FPGAs can perform specific functions by connecting the logic blocks and interconnects.
FPGA Programming Language
Programming language for FPGA-called hardware
Description Language, as it is meant for designing or describing hardware. The two languages commonly used to program FPGAs include VHDL and Verilog HDL.
VHDL
The US Department of Defense developed VHDL, a VHSIC (Very High Speed Integrated Circuits) language. The Department researched the language during the 1980s to create high-speed circuits. It was adopted as the IEEE Standard 1076 in the year 1987.
It is widely used to design analog mixed and digital signal circuits.
Verilog HDL
Huang, P. Goel, and P. Moorby to carry out simulation and model gates in 1984 for a logic simulator. D. Warmke, C.-L, created the language. Cadence took over the project in 1990, and it acquired IEEE Standard 1364 in 1995.
It is used to validate and design digital circuits as well as for analog or mixed-signal circuits.
1.3 FPGA Board
FPGAs are integrated circuits meant to carry out specific tasks. You can purchase FPGAs as a standalone product or for FPGA boards used for emulation and development purposes.
FPGA boards make your job easy and don't require you to purchase additional peripheral devices. The panels have some forms of external storage and come with RAM and ROM for performing tasks. You may also find switches, LEDs, pin expansion headers, flip-flops, and necessary I/O ports.
It can be a cost-effective option to buy an FPGA board rather than investing in separate pieces of hardware.
1.4 FPGA Tutorial
It would help if you understood digital logic design and were familiar with logic gates and sequential and combinational logic circuits. Then you can learn the Verilog or VHDL programming language to configure your FPGAs.
If you want to get some help, many online videos can be used to get step-by-step instructions. There are also many guides and tutorials available on the internet to learn FPGA programming.
Now we will be taking a look at microcontrollers in our next chapter.
2、FPGA Vs Microcontroller--Microcontroller
Microcontrollers are like computers with their RAM, ROM, I/O ports, and other peripheral devices to perform specific tasks. You can find different microcontrollers such as Arduino microcontroller and Pic Microcontroller.
Image 2: FPGA Vs. Microcontroller
PIC Microcontroller
Microchip Technology produces PIC microcontrollers based on the PIC1650 developed by General Instrument. The earlier versions came out in 1976, and the company sold more than twelve billion kits by 2013.
The microcontrollers can be reprogrammed and utilize the flash memory for storage. The microcontrollers come in different models, and modern ones use powerful chips with instructions for digital signal processing.
You can purchase them in different pin combinations ranging from 6 pins to 144 pin chips. It also includes communication ports, USB, I/O pins, and ADC and DAC modules. You can use the company-provided software to program the microcontrollers.
Microcontroller Programming
Microcontrollers can be programmed using a variety of assembly languages. Currently, many high-level programming languages are also used, such as JavaScript, Python, and C. Some languages have been designed based on purpose, while others are general programming languages such as C.
The general-purpose languages may come with some restrictions and features to support a microcontroller's unique capabilities. Manufacturers also release a programming environment for the users to aid in its development.
In the next chapter, we will take a look at the differences between microprocessors and microcontrollers. FPGA Vs Microcontroller
3、Microprocessor Vs. Microcontroller
Many people use the terms microprocessor and microcontroller interchangeably, but they are two completely different things. You can find some similarities between them, and both are designed to carry out real-time activities.
Microprocessors and microcontrollers cannot be differentiated just by the visual survey, and both are types of IC. You can find different versions in the market ranging from 6 pins to up to 100 pins based on the purpose and features.
Image 3:FPGA Vs. Microcontroller
3.1 Difference between Microprocessor and Microcontroller
Microprocessors are ICs that come with a computer or CPU inside and are equipped with processing power. Examples can be Pentium 3, 4, i5, core two duos, and others found in computers.
You will not find peripherals such as RAM, ROM on the chip. The peripherals are provided out of the chip by the designer to achieve functionality.
The microcontroller is a computer with RAM, ROM, timers, I/O ports, and other peripherals. They are also known as a computer on a single chip or mini-computers for this reason. There are many microcontrollers available today with a variety of features in different versions.
Microprocessors are bulky due to the external peripherals, whereas microcontrollers are smaller. Microprocessors form the heart of a computing system, while microcontrollers drive embedded systems.
Microcontrollers are engineered to carry out specific tasks where the input and output have been defined. Some processing is carried out based on the nature of the application, and work is generated. The specificity of the tasks requires significantly less usage of I/O ports, RAM, ROM and can be made to accommodate on a single chip.
FPGA Vs Microcontroller
The advantages include reduced costs and can be found in remote controls, mobiles, keyboards, pen drives, digital cameras, etc.
You don't use microprocessors for specific tasks but for multi-facet tasks such as developing games, software, websites, and video editing. The relationship between input and output is not defined in this case.
Microprocessors are meant to handle complex tasks and achieve clock speeds much higher than microcontrollers. Modern microprocessors can go beyond 1 GHz, while microcontrollers achieve a maximum of 30 to 50 MHz.
Another difference is related to cost. You can buy a microcontroller at a much lesser price than a microprocessor. However, using a microcontroller in place of a microprocessor is unsuitable, while using a microprocessor in place of a microcontroller makes the application costly.
The cost is also less because microcontrollers are set up using CMOS technology. Microprocessors require multiple external components to function and become expensive in the end.
Microcontrollers have a power-saving system, while microprocessors are devoid of such a feature. Microprocessors also consume less power compared to the microprocessor as they do not need contribution from external components.
Harvard architecture is used to design a microcontroller with specific information memory and programming. Microprocessors are designed with a von-Neumann architecture, where memory is transferred to an equivalent memory module.
Microprocessors do not need as many registers as microcontrollers. The former have memory-based operations, and the latter makes programs more accessible to write.
We have covered the differences between microprocessors and microcontrollers, and you should have a clear understanding of both by now. Now we will explore the differences between FPGA and microcontrollers.
4、FPGA Vs Microcontroller--FPGA Vs. Microcontrollers
Microcontrollers and FPGAs are the two most essential tools used by hobbyists and electrical engineers alike. It is necessary to go through a discussion o FPGA vs. microcontroller to distinguish between the two.
However, first, we will take a look at the similarities too! Both the components are meant to monitor output values and the effect based on the output value in a broader sense. You can create a microcontroller architecture using an FPGA, but the reverse is not possible.
Image 4: FPGA Vs. Microcontroller
4.1 FPGA Vs Microcontroller--Difference between FPGA and Microcontrollers
Almost every computing device comes with an embedded microcontroller for carrying out tasks and interactions. It can be programmed to carry out simple tasks on behalf of other hardware. You can compare the structure of a microcontroller with that of a computer, which has all necessary peripherals such as memory, input-output ports, and timers.
FPGA is an integrated circuit with millions of logic gates and can be made to carry out tasks by programming the logic gates. FPGAs need external peripherals such as RAM and ROM for their application.
The microcontroller uses a software program to execute commands consecutively, such as C, C++. The programming connection of the FPGA is on the logic circuit and uses programming solutions such as VHDL and Verilog.
The processing power of microcontrollers is time-limited and based on its processor cycling power. FPGAs are space limited; you need to create more logic circuits to achieve your desired coding scale.
FPGAs are more versatile and flexible due to their nature. They are 'field-programmable- you can reprogram the FPGA to perform any logic task that can be accommodated within the available logic gates. The logic gates can be rewired as often as required to change the program and carry out a different task.
Microcontrollers can perform limited tasks because they come with instructions and their circuitry. A programmer has to abide by the restrictions while developing code. FPGA Vs Microcontroller
The two also differ in the methods used to process instructions. Microcontrollers read through each line of the program sequentially; the commands are also processed in sequence. FPGAs can process orders simultaneously and can execute numerous lines of codes at a given moment. They are also wired just like an electric circuit so that you can get suitable parallel circuits.
However, in microcontrollers, the processor switches from one code to another to achieve parallelism. You will find it easier to write the following codes on microcontrollers than FPGAs.
The parallel processing capability of FPGAs enables you to control interruptions effectively by using Finite State Machines (FSMs). In the case of microcontrollers, you have to account for the time taken by ISR to resolve an interruption.
You can rewire an FPGA easily just by reprogramming it. The configuration in an FPGA is loaded on the configurable logic cells when the power is switched on. You don't need to make any changes in the hardware to reprogram the FPGA.
Microcontrollers can execute a program and carry out general tasks. If you want to change the instruction set of the board, then you will need to modify the layout of the silicon IC.
FPGAs are suitable for the high-speed processing of parallel data and come with a high degree of customizability. However, they also have the drawbacks of prototype operation and the complexity of configuration. FPGA Vs Microcontroller
It takes time to create an FPGA function as you need to compile all the codes from scratch and then convert them into machine language. You can find ready-made packages for microcontrollers to perform specific tasks and customize them to suit your needs.
Microcontrollers are simple to use and configure and can handle high-speed sequential data. However, they lack some of the features of FPGAs. Microcontrollers are more flexible when it comes to programming but cannot be customized accurately through hardware.
You also will face a steep learning curve when dealing with FPGA programming. You can adapt the trial and error method and test your developments using microcontrollers.
When dealing with the differences between microcontroller and FPGA, you also need to account for power consumption. We will discuss the topic in the next chapter.
5、FPGA Vs. Microcontroller Power Consumption
FPGAs are known to consume more power than microcontrollers for various reasons. It can pose a challenge to engineers who are out to make efficient power systems. FPGAs can cross the power limitations of an embedded system and may not be suitable for all purposes.
FPGAs have been used for emulation and prototyping, but they are not as efficient as other components such as ASICs. You can reprogram an FPGA, but it will come with the drawback of inefficiency as logic utilization becomes low because of place-and-route constraints.
It also consumes high power due to unused transistors. Inefficient clock trees and extended signal paths also contribute to increased power consumption.
FPGAs for high-speed tasks beyond microcontroller capabilities. For this reason, FPGAs are not optimized for power consumption. Microcontrollers have processing speeds of only a few MHz and consume much less power compared to FPGAs.
You can also find idle or power-saving modes on microcontrollers, making them a sustainable choice in many cases. Some come with sleep currents less than 1 µA and can function at a few µA during slow clock rates.
You won't be able to find any FPGA with such low requirements of power in the market. That is why many FPGA systems use a microcontroller on the board to increase power efficiency.
Image 5: FPGA Vs. Microcontroller