Learning to program FPGAs will stand you in good stead for a lot of different jobs in both development and software engineering. FPGAs can be used to read sensors, control machines and provide data and analysis. They are an important part of controlling a lot of major machines and plants.
How To Learn FPGA Programming?
Learning FPGA programming is not easy. There is a wealth of information about basic programming concepts out there, but not so much about FPGAs. The best starting point would probably be to develop some familiarity with programming C or a similar language, so that you understand concepts such as loops, IF statements, case statemetns, variables and constants, as well as simple operations. Once you understand this, you can start learning FPGA-specific concepts. A lot of low cost fpga board xilinx are programmed using Verilog, which is quite similar to C in terms of syntax.
FPGAs are, essentially, a huge array of gates, with built in interfaces, endpoints, memory controllers and other additions to them. It would be perhaps more fair to say that an FPGA is a large scale, highly capable CPLD, rather than just blittling it by saying that it is just a bunch of gates.
Verilog Programming Language
Verilog is a programming language that can be used to describe the operations that you want to do. Before HDLs such as Verilog became popular, programmers would use a schematic to lay out what they wanted to do. Schematics are still useful, but they do not scale well. When you start trying to do the schematics for more complex applications it gets harder to keep track of what is going on. Schematics can be useful for people who have some background in electronics, but it is a very good idea to learn how to work with an HDL. This will stand you in good stead when you reach the point where you are woking with more complex applications.
You don’t need an IDE to work with Verilog – although it will help. You can use a good text editor – something such as Notepad++ which has some good indentation management and syntax highlighting features. You will also need to download the development tools from Xilinx themselves.
You can learn Verilog quite easily, since the syntax is so similar to plain old C, however the difference between ‘knowing the syntax’ and ‘being a good programmer’ is massive. Good programmers have an understanding of not just the syntax, but also how to handle the issue of concurrency. In most standard programming tasks you would be thinking of one thing happening at a time. In FPGAs, many things are happening at the same time.
Verilog deals with what is happening in a digital circuit. Verilog uses modules that are the equivalent to components in the circuit – such as a gate or a complex entity such as an ALU. Modules are, in some ways, similar to C++ classes, and they can be instantiated and used in a similar way. In Verilog, you would describe the inputs, outputs and assignments for each part of the circuit.