Welcome back to the Digilent Blog! If you’re new to Digilent, our community, or even FPGAs or coding in general then you’re in for a treat. I have recently started getting back into FPGAs and relearning how to program them. If you’re a long time user to FPGAs coding one can come more naturally. The learning process can be difficult for some people while easier for other. Here I hope to compile a list of resources that I found useful when learning how to program an FPGA.
One of the first things a good friend recommended is look up a cheat sheet for the language you are coding in. This was helpful because it outlined all the important basics that someone would need to know. You can even look at an FPGA cheat sheet to get a better understanding of the components of the device.
The next thing I found helpful is reading. I’m more of a tactile learner myself so it was helpful for me to get a hard copy of a book or print out some PDFs. I found a book that simplifies Verilog and sums up a lot of key parts. It’s a massive help when getting started with Verilog. “Verilog By Example” by Blaine C. Readler is a good book to take a look at. The author also has a VHDL version of the book, which may also be helpful.
Once you kind of have a slight grasp on the language you want, it would be beneficial to do some simple projects to see how it works exactly. Digilent conveniently has a great learning site. At the learning site there are simple projects for you to try out to become more comfortable with programming your FPGA. One of the first ones I would suggest to try is blinking an LED.
It has been apparent that the main source of help that I have found is through the internet. I also have a great set of colleagues that I can ask for help or explain how something would work. If you’re thinking that you don’t have an easily accessible network of peers to discuss your issues with then you may be mistake as there are tons of websites that have forums for you to pose questions to or even just read old problems so you know how to avoid them. Digilent also has their own forum with a team to answer those questions.
When you go to code a project my final words of advice are to draw it out. Draw out your data path. Draw out your Finite State Machine. I find this immensely helpful. It will allow me to trace through my diagrams and see where my data is going or where my machine will be in the state machine. If you aren’t a visual learner I would still recommend this because it can clear up your thoughts so that everything is clearer.
There are a bunch of resources out there for everyone. If you feel like learning a new language is really daunting or overwelming there’s a lot of people out there that are willing to help. As an old cartoon character used to say “Take chances. Make mistakes. Get Messy!” ~ Ms Frizzle (The Magic School Bus). The best way to learn is to try for yourself and experience what you you’re learning. I take that to heart.
I hope this post provided some insight to learning FPGAs and their coding languages. Don’t be afraid to ask questions or make mistakes. It’s the only way you’re going to learn. Anyway, have a great day everyone and enjoy your learning experience.