Skip to content

Latest commit

 

History

History
executable file
·
80 lines (59 loc) · 3.88 KB

content.asc

File metadata and controls

executable file
·
80 lines (59 loc) · 3.88 KB

Prerequisite skills

Here are the skills that I think are required for somebody wanting to learn to program FPGAs. None of these are essential, but I will assume that you have them during this book, and won’t bother delving into them. If you are particularly weak in any areas, then be prepared to learn!

  • Programming ability in a low level language (e.g. 'C' or assembler)

Do you know what a byte is-- how many bits it contains and what values it can hold? What does a bit shift two bits to the left do? What happens when you treat an unsigned number as signed? Do you have any idea of the ASCII code for 'Z'?

  • Familiarity with the basic boolean operations

If you can draw the truth tables for AND, OR, NOT, NOR, NAND and XOR then you have all the skills needed-- this isn’t like the old days when you needed to simplify logic equations yourself, that is what computers are for. If you can draw a Karnaugh map and convert it into a logic equation then you are most probably overqualified in this area!

  • An understanding of number representations and binary math

If you can’t add binary numbers without a calculator, you will struggle. If you can divide or multiply in binary using a pen and paper, you will be fine.

Throughout this book I only use the binary and decimal number systems. VHDL understands hexadecimal constants, but I don’t often use them as you are unable to tell if x"3F" is 8 bits, 7 bits or 6 bits in size-- but "0111111" is 7 bits, no questions asked.

An innate sense of the size of numbers in binary will help you avoid problems. Being able to answer questions like "How many bits do I need to count to one million?" off the top of your head will be a big advantage. If you can’t do this, print out a table of the powers of two and stick it on the wall. Yes, I’m being serious-- when you spend hours trying to work out why your comparison of a 10 bit counter against 1523 is always false, you will kick yourself.

  • An understanding of circuit schematics used in digital designs helps

You will be getting really close to the hardware, so although it is not essential for using FPGAs, the ability to look at the board’s schematics and seeing how the hardware works is very helpful. As all the development board schematics are available, it comes in handy when tracking down what external connections are used for on the FPGA.

  • Microcontroller development experience

A little bit of microcontroller development experience is useful, but not essential. If you have played around in the embedded space you will have some familiarity with the sorts of problems you will encounter. You will also be familiar with how to debug without the help of high level debugging tools, and will be able to pick up the simulator much quicker. Yes, using an Arduino counts as microcontroller development.

Other resources you will need

  • A modest PC is all you need

A PC equivalent to a current entry-level laptop running either Windows XP, Windows 7 or Linux (Dual-Core CPU with 2GB RAM and 20GB free disk) is all you need. We are only using small FPGAs, so nothing high-end is required.

  • Internet access is a must

You must have a broadband connection with an internet plan that enables you to download the multi-GB design software. It will also be helpful for downloading product documentation and seeking help.

  • Money, or a friend with an FPGA development board to lend

Around US$79 + p&p will get you a modest FPGA development board. Borrowing one is even cheaper, but unless you are really good at sharing don’t go halves with a friend in buying a board-- they are small enough to carry around with your laptop bag, allowing you to try things out when inspiration strikes or on a rainy lunchtime.

Now, with all that out of the way, let’s move on to the interesting stuff!