Thursday, August 25, 2011

The Difficulties That Lie in Hardware Programming

Hardware programming can be an unknown and scary world for a lot of software programmers out there. The syntax looks like nothing they've seen, the code runs differently and even the compilation and testing of it is different. So I'm going to take some time and clarify the main difficulties and mysteries that involve hardware programming so that software developers can better understand what could await them.
Logic Gates Galore:
There are two different kinds of hardware programming to tell you the truth, the one that deals with transistor blocks and another that deals solely with logic gates. Here I want to discuss the later because it is actually the real hardware programming that designers deal with to make complicated chips. Transistor block programming called VLSI (Very Large Scale Integrated Circuits) is another topic as far as I'm discussing here. Logic gates though are the next level above transistors and are involved in much more complicated programming. This is because VLSI involves putting the blocks of transistors together manually rather than have you program them automatically like Hardware Description Languages.
Hardware Description Language:
This is the name of the coding used to program higher level logic gate functions automatically. You also need an FPGA (Field Programmable Gate Array) separately from you computer in order to fully test this code. This is because what is happening is that this FPGA is simulating the different functions of the logic gates you are coding by actually creating them virtually on this board with all their parameters. This includes timings as well, which represents the basis for all the problems that might arise during hardware programming. The main problems that arise from this though are two things. One is compilation time, because the FPGA is connected externally and it take quite a while to compile your code. This will eventually lead to longer times testing your code and debugging it which will cause you significant overhead compared to software coding. The second thing is that the code doesn't run in sequence like software languages. HDL code runs in blocks because that is how real chips operate physically. This physical limitation imposes programming limitations that case many hardware designers to be frustrated. This is because you may not understand completely why a certain error may be occurring and may be simply because circuit timings are not synchronized.
So I hope I clarified to you some aspects of hardware programming problems that you didn't understand before. It is my hope that with this information you can be better prepared for hardware programming and its tribulations that may await you.

No comments:

Post a Comment