Every now and again I receive a query with regard to someone starting out in FPGAs. Each time I typically answer based on whatever How To articles / evaluation boards / books / etc. recently passed under my nose, but that's really not the best way to do things. My current musings were triggered by the following query from a visitor to Programmable Logic DesignLine:
I am a newbie to the wonderful world of FPGAs and am seeking advice on some quick how-to articles and sites. I enjoy the articles on your site but admittedly they are over my head.
So, let's take a step back and think about this. Let's assume that we are really kicking off from ground zero. Maybe we know a little Verilog or a smidgen of VHDL, but not very much. Also, let's assume that we have a vague idea as to what's inside an FPGA, but we're not too clear on the nitty-gritty details. On this basis, what would any of us really like to see if we were starting out ourselves?
Well, first of all, for myself, I would like to have access to a cheap-and-cheerful development board. Nothing fancy, you understand – I'd be happy if it contained only a small-ish FPGA containing only a basic fabric (look-up tables, some RAM, and perhaps a few multipliers), a small amount of external RAM, some LEDs, some switches, and perhaps some simple input/output (I/O) ports that I could eventually use to connect to the outside world.
With regard to programming this little scamp, I'd prefer a USB connection to my PC, because (a) there always seem to be "gotchas" when using RS232 ports these days and (b) a lot of machines don't have RS232 ports anyway.
In the case of the design tools/suite, I would like something that really is intuitive and easy to use (as opposed to something that I'm told is intuitive and easy to use, but that I later discover actually requires six-months of intensive training before you can perform even the simplest of tasks).
Ideally I'd like to start with a simple schematic entry that allowed me to capture and connect a few logic gates – somehow associated their inputs and outputs with the switches and LEDs on the development board, respectively – generate a corresponding configuration file, load it into the FPGA on the development board, set the beast running, and play with the switches and watch the LEDs ("Ooooh, shiny!").
Given a choice, I'd like this to be really easy and really painless, with step-by-step instructions that guide me all the way through the process and present me with a quick success that would really bolster my confidence.
Next, I'd like to re-generate my original circuit in my choice of Verilog or VHDL, synthesize it, generate a corresponding configuration file, and prove that everything works as before.
Once I have the basic concepts under my belt, I would like to have access to a series of simple exercises that build upon each other to improve my understanding of the HDL of my choice and also the more advanced aspects of the FPGA design process such as using simulators, creating and using constraint files, debugging things when they don't work as planned, and so forth.
Eventually I'd like these exercises to build up to the level of using an 8-bit soft-core CPU in conjunction with some of my own logic and programming this little rascal with an assembler and/or a C compiler.
So, is there anything at all like this out there? And, if not, why not?
Questions? Comments? Feel free to email me – Clive "Max" Maxfield – at firstname.lastname@example.org). And, of course, if you haven't already done so, don't forget to Sign Up for our weekly Programmable Logic DesignLine Newsletter.