FPGAs and Microprocessor Design
Contents |
Introduction
In this course you will create a microprocessor using an FPGA.
This course is an attempt to recreate the good parts of ENGG*3380 Computer Organization and Design at the University of Guelph, the 2007 outline of which is available online. It will also be changed to suit a kwartzlab type environment: low cost, short time, asynchronous study, free / open source tools, use of peer resources, and collaboratively improved course materials.
Objectives
If you finish all the regular parts of the course, you should be able to:
- describe the functionality of basic microprocessor elements in English
- describe basic microprocessor elements in a hardware description language (VHDL or Verilog)
- run and interpret simulations of logic hardware
- synthesize a description of a hardware and program it onto an FPGA
- write a program in machine code for a MIPS processor you have designed
- relaxen und watchen Das Blinkenlights
Textbooks
- Digital Design and Computer Architecture appears to follow the same path as this course intends to, and covers both VHDL and Verilog. Also seems to start from first principles, which is good for this course. UW Davis Centre at the University of Waterloo has a copy. See Trellis.
Tools
There are a few choices for technologies, and these impact what tools can be used. The choices are Verilog vs. VHDL for a hardware description language and Altera Xilinx for an FPGA manufacturer (and consequently provider of synthesis tools).
General
- ModelSim PE Student Edition does simulations of VHDL and Verilog designs and is free. Windows only.
- GTKWave is used to view wave files output when a simulation is run from a command line tool like Icarus Verilog or GHDL. This will let you see the behaviour of the different logic elements in your design.
- SPIM is MIPS simulator.
Verilog
- Icarus Verilog looks like a very promising FOSS Verilog simulation tool, and maybe it can do some form of synthesis?
VHDL
- GHDL is a VHDL simulator that in pwalker's experience is kind of clunky, but maybe that's VHDL's fault.
Altera
- Altera's design software is called Quartus II and they have a free version for Windows or Linux, although there are some limitations which I still have to check out.
- The Altera Cyclone II FPGA Starter Development Kit looks promising at $150 USD.
Xilinx
- Xilinx's design software is called ISE and they have a free version for Windows or Linux. This is the software that pwalker had to use, and he hates its clunky slowness.
- Digilent's FPGA boards seems like the place to go for Xilinx products.
Further Reading
If you're looking to launch off from this topic into other areas, or to get more in depth into the same areas, these may be useful. You can find some of them locally through Trellis.
- Computer Organization and Design: The hardware/software interface, 4th ed. - more advanced and higher level topics that probably don't match the scope of this course
- Computer Architecture: A Quantitative Approach, 4th ed. is about making processors fast, I think.
- Fundamentals of Digital Logic with Verilog Design should have more info about Verilog.