Why learn FPGA Design?


I have been asked in the comments why invest time and money to learn how to use FPGAs? First of all, if you are interested in advanced digital hardware design FPGAs are essentially the only game in town. Unless you are working on million dollar ASIC designs, the only way to do really advanced hardware design at a reasonable cost is with an FPGA.


Yes, there are DSPs and embedded micro-controllers and if you want to just toggle an LED a few times a second then an FPGA is not the right choice. But if you need to take in real time HD video and toggle 6 million LEDs at a rate of 60 frames per second then an FPGA is essentially the only choice you have.


You will never find an FPGA in your phone or tablet but the cellphone base station you are connecting to is full of FPGAs. The cable modem you might use to connect to the Internet is most likely talking to an FPGA at the other end of the cable. The whole Internet routing infrastructure runs on FPGAs.


There is a good chance your flat screen TV contains one or more FPGAs. If you had an ultrasound, CT-scan or MRI recently an FPGA was at the heart of that equipment. Self-driving cars are just around the corner and the amount of real-time signal processing required makes FPGAs a very good choice for that application. Data center acceleration, artificial intelligence and neural networks are very hot subjects right now and FPGAs are in the middle of it.


At the same time, the field of digital hardware design is changing fast. We are in the process of moving away from HDL design towards HLS design. Because FPGAs have become so large and powerful we will use HDL design flows like RTL using VHDL or Verilog less and more and more high level languages like C/C++/SystemC. C to gates design flows offer higher design productivity and faster time to market. Unfortunately the quality of results of HLS synthesis is still not very good and the idea that you will take arbitrary existing C code and with no knowledge of FPGA architecture or even hardware design, push a button and convert it to an efficient hardware implementation is still a pipe dream and will stay so for years to come.


Software design engineers with FPGA knowledge are as rare as hardware designers that are able to write good software. Engineers with expertise in both fields will be in high demand in the years to come.


So as a hobbyist or software engineer do you need to know about FPGA design? It depends on what your hobby is. If your hobby is say cryptocurrency mining then FPGA design knowledge could be essential for you. But even if your hobby or day job is not neural networks and AI today, we are in the middle of a revolution and 5 years from now these could become your hobby or day job. Having FPGA design skills might come in very handy at some point.