My name is Christos Merinopoulos (a.k.a. Nemos). On the one hand I have long been involved with electronics and embedded systems design; on the other hand, however, I have always been hesitant whenever I've had to deal with FPGA designs. This trepidation is not new for me; as far back as my college era we had courses pertaining to FPGAs -- including VHDL-- but I never seemed to gain a full understanding of FPGA technology.
Today's university courses are much improved and include many useful technologies that allow students to evaluate their FPGA designs in real hardware and in real-time; however, many students still have questions about the usefulness of FPGAs. The situation was much worse 10 or more years ago, because the cost of FPGAs and FPGA development systems was relatively high, so the only experience a student could have was via a software platform used to capture the design in VHDL and then emulate the device.
To be honest, until recently I still had questions like "Why should one consider FPGA technology when we have well-known microcontrollers available to us?" Now I feel I understand the answer to these questions, and I thought it might be useful for me to share this knowledge with others, so if you currently have these kinds of concerns, please bear with me.
Let's start with the most basic question: "What is an FPGA?" The term FPGA stands for Field-Programmable Gate Array. These are programmable logic devices, which means that they can be programmed (or configured) to act like any digital circuit; thus, we are not creating software, but instead we are building up the hardware.
Digital functions are composed of lots of simple ("primitive") logic gates, such as NOT, AND, OR, NAND, NOR, and XOR. By connecting these primitive logic gates in various topologies, we can create a digital circuit performs in a specific way. Modern FPGAs can contain the equivalent of anything from hundreds of thousands to tens of millions of primitive logic gates. In the case of an FPGA, we can configure it to perform whatever digital function(s) we require. Thus, as opposed to writing a software program that causes a microcontroller to act in a specific way, we can configure the hardware inside the FPGA to create a circuit that operates in a certain way.
Why are FPGAs becoming so famous today?
Unfortunately, the electronic industry is closely connected with production costs. In many cases, it is difficult for innovative technologies that have a relative high production cost to be adapted by the majority of users, including designers, hobbyists, and students.
In the early days of FPGAs, it was somewhat expensive -- especially for hobbyists -- to purchase the equipment required to develop and to program a device based on FPGA technology. High-end FPGAs are still very expensive, but lower-end and mid-range devices are now very affordable and -- in many cases -- the tools are also low-cost or even free.
Another consideration is that early FPGAs were somewhat limited in terms of capacity and performance. By comparison, even relatively low-end FPGAs today boast tremendous capacity and can operate at hundreds of megahertz.
In closing, I would like to ask if you also have concerns about using FPGAs. Are you currently working with FPGAs, or are you thinking that you would like to use them but you don't know how to start? Please share your thoughts in the comments below.