The University of Texas at Austin
Department of Electrical and Computer Engineering

Homework 4

EE 382N – Spring 2008
Yale N. Patt, Instructor
Rustam Miftakhutdinov, Aater Suleman, TAs
Due Monday, February 25th, 2008, before lecture in ENS 532 at 10pm, Friday, February 29th, 2008

Part 1

The next step in your computer design is to add the control. This is the last assignment that you will work on by yourself. Starting with Homework 5, you will be part of a group, and we will expect to see a single solution from the entire group.

In this assignment, you are asked to specify the mechanism for generating the control signals that control the data path. This means all the control signals that will be needed every cycle to process every opcode, data type, and addressing mode that has been specified thus far. If you are planning to use microprogrammed control, these control signals will be generated centrally. Your job in this assignment is to specify the microinstruction, its fields for controlling the data path and the microsequencer, and the micro-orders that make up each field. If you are planning to pipeline your design (highly recommended), then these control signals will be distributed over the various stages of the pipeline for processing each ISA instruction through the entire pipeline. Where each control signal for each stage is generated is your decision. Also, for a pipelined design, it is important to provide sufficient interlocks to ensure safe execution of each instruction through the pipeline.

Your specification at this point does not have to specify the actual logic required to specify each control signal. However, we do want to see input/output behavior; that is, we want to see what input signals are required to specify each control signal. These can be shown as block diagrams on your drawings.

Hand in hard copies of the schematics of the control structure you create.

Part 2

Specify all the control logic required to completely emulate one of the three sets of x86 instructions specified below. Complete emulation means from the fetch of the first instruction to the destination write of the last instruction. Use Verilog to implement your design.

Please use structural Verilog to implement logic structures for your chosen test case. For example, if you are doing the register file test case, please implement the register file in structural Verilog. You can implement the other structures (such as caches and dependency checker) in behavioral Verilog in this case. However, note that you should still design and show all of the structures the homework description requires in your data path and control path.

Simulate your design and verify that it works for the set of x86 instructions you have chosen. Use Virsim to monitor important data and control signals in the cpu. Hand in annotated hard copies of your Virsim graphs. Please make sure that all signals on the printouts are readable. Use several pages if necessary.

Part 3

Hand in a block diagram of your datapath with explanations to clarify all signals shown.

Assume that testcase starts at memory location x3000.