On this page, I will document some of our CS281/CS282 circuit design projects. The goal is to use breadboards and FPGA's to give perspective to the VHDL simulations we do normally in class. We will primarially use the:
Students that do projects are encouraged to work in teams (which can include myself!), particularly with students that lack circuit design experience. This is a learning opportunity and a chance to get people excited about what we do. As we progress, we will log the experience here as a sort of living document. Students who participate in the project on work agreed upon between the student(s) and the instructor will receive extra credit torwards their grade.
We anticipate needing enough supplies for 10 groups.
Breadboard a 4-bit Computer
FPGA
- Spartan 3E board, per group (either the 200 – no memory, or the 500 – with memory = much cooler)
- ModelSim MXE software (the Xilinx edition). Download and get the free student edition license (you don't need to buy anything!).
- Xilinx WebPack (also free; web site registration required)
Here are two ideas I have, involving breadboards and FPGA. It is only necessary to do one project to get extra credit, and this is negotiable with the instructor. Note that these are separate projects: you do not have to do both breadboard and FPGA! Of course, you could...
Option 1: Breadboard a 4-bit Computer
I'd like to start by building a 4-bit computer on breadboards. The functionality would be similar to a random access machine that performs arithmetic functionality (sort of a 4-bit calculator). It will include muxes, latches, an adder, and a control unit. Notice that you've implemented, simulated, or seen all of these components, making this a pretty managable project. The steps you should carry out and write up (remember we want to show others what we did -- take pictures!) are:
- Design, build and test a 2-1 mux
- Design, build and test an unclocked RS latch - this will serve as your register
- Using existing D-Latch chips, make 3 4-bit registers ($rs, $rt, $rd) and put them on separate breadboards
- Build an adder
- Issue add commands using a control unit or dedicated logic
- Implement 2's complement
Option 2: FPGA
For details on the Spartan 3 FPGA's, see my MCS Society presentaiton from Fall 08.
- Synthesize an AND gate from VHDL to the FPGA, and do the same for a 2-1 mux to get familiar with the FPGA. Synthesize existing circuits as well to get familiar with the Xilinx interface. See the tutorials below.
- Synthesize the Random Access Machine (RAM) from VHDL to an FPGA, and issue opcodes that output either to LED or to VGA. One challenge is to determine how to produce output. VGA is fun but more complicated. On the other hand, many of the components you'll need for the RAM will be useful for the CS282 course project, which is to produce the MIPS architecture in VHDL. Perhaps the rotating knob can change register numbers and memory addresses (which you can display on the numeric LEDs), and output the value using the lighted LEDs, etc.
- Synthesize the MIPS architecture from VHDL to an FPGA.
- Run something nontrivial on the MIPS architecture.
- Extend the MIPS architecture.
- Write other cool things on the FPGA (see below).