Project Description

In this project you are asked to implement a simple single-cycle processor. Your processor should handle the following subset of MIPS instruction set: be sure to use the MIPS opcodes - it'll make your life much easier

As part of the implementation, you should design, implement, and test an 8-register bank, an ALU, and a control mechanism. You may use any basic building blocks provided by the Mentor Graphics library (i.e. you don't have to design adders, multiplexers, etc from scratch). 1-bit adders can be found in gen_lib under fa and ha for full adder and half adder, respectively.

Your design will need a memory element, which can be found in Mentor's gen_lib. Use the component named ram.3so. You will need to specify the address line size (32 bits), and the input-output line sizes (also 32 bits). The memory is loaded with a test file by updating the input file name.

To design the controller, you may use either a ROM or a PLA component, both of which are also found in Mentor's gen_lib. Some usage instructions for PLA's and Memory can be found here.


Test Files

The format for input files is
        address / data_at_address;
one address-data pair per line in hex. Comment lines are allowed, and must begin with a #.

There are three official test files. You may, of course, write your own smaller tests as well, but you need not turn those in.
Here are the test programs you must turn in traces for:

The test files are extracted from a MIPS simulator called SPIM. The simulator assumes that code begins at address 0x00400020, so make sure that the program counter is loaded with an appropriate initial value.
 

THINGS TO TURN IN:

You should turn in a report describing and justifying your design decisions and describing the problems you have encountered and how you solved them. The report should not exceed 10 pages and should contain:
  1. Schematics of the datapath, register bank, ALU.
  2. Table summarizing control signals.
  3. Clearly labeled traces with opcodes labeled with instructions names of the above programs, demonstrating that the correct result was obtained (i.e. you have to figure out what the program did, and show the memory location(s) where the results are stored. Please use hex for bus values.
There will also be a demo session
Back to ECE 361