Assignment 1: Implementation of A Processor (10marks) : Constant RDST Opcode
Assignment 1: Implementation of A Processor (10marks) : Constant RDST Opcode
Design and implement (in Verilog) datapath and control unit for a single cycle processor (including
instruction memory) which has two classes of instructions. The two classes of instructions along with
the example usage and instruction decoding to be used are as below
1. Immediate Type
Example: li r1, constant loads immediate signed value specified in the instruction to the
register R1
Opcode Rdst Constant
Assume there are 32 32-bit general purpose registers indicated by r0, r1, r2…r31 and corresponding
register numbers (00000), (00001)………..(11111).
Assume the Opcode for Immediate type and R-type instructions as below
Instruction Class Opcode
Immediate type 111111
Register Type 000000
Additionally R-type instructions have multiple variations defined by their function codes. The R-type
instructions should include add, sub, AND, OR, srl (Shift right logical), sll (shift left logical) .The
different R-type instructions that the processor should support are tabulated below.
Page 1
As part of the assignment the following files should be submitted in zipped folder.
1. PDF version of this Document with all the Questions below answered with file name as
IDNO_NAME.pdf.
2. Design Verilog Files for all the Sub-modules (including control unit).
3. Design Verilog file for the main processor.
The name of the zipped folder should be in the format IDNO_NAME.zip
The due date for submission is 7-April-2020, 5:00 PM.
Q6.1. Draw the block level design of the processor (datapath + control unit) for above
specifications. (you can modify the design given in the class ppts and copy the image of final
design here)
Page 2
Answer:
Q6.2. List the different blocks that will be required for implementation of datapath of the above
processor.
Answer:
Q6.3. Most of the datapath blocks that are listed above have already been implemented as part
of previous labs. Implement the blocks which have not been implemented in the previous labs
and copy the images of those Verilog codes here.
Page 3
Answer:
Q6.4. Assume Main control unit generates all the control signals. List different control signals
that will be required for the above processor. Also specify the value of the control signals for
different instructions.
Answer:
li r1, 8
add r0, r1, r2
Q6.5. Implement the main control unit and copy the image of Verilog code of Main control unit
here.
Answer:
Q6.6. Implement complete processor in Verilog (Instantiate all the datapath blocks and main
control unit as modules). Copy the image of Verilog code of the processor here.
Answer:
Q6.7. Test the processor design by initializing the instruction memory with a set of instructions
(at least 5 instructions). List below the instructions you have used to initialize the instruction
memory. Verify if the register file is changing according to the instructions. (Register file contains
unknowns, you can initialize the register file or you can load values into the register file using li
instruction specified earlier).
Page 4
Sequence of Instructions Implemented:
Q6.8. Verify if the register file is getting updated according to your sequence of instructions
(mentioned earlier).
Copy verified Register file waveform here (show only the Registers that get updated, CLK, and
RESET):
Unrelated Questions
What were the problems you faced during the implementation of the processor?
Answer:
Did you implement the processor on your own? If you took help from someone whose help did you
take? Which part of the design did you take help for?
Answer:
Name: Date:
ID No.:
Page 5
Control_input write Imm_sel/shamt_se Im_gen li_sel Alu_ctrl
l / imm_sel_1 / imm_sel_2 /alu_src
1xxxx 1 0 1 1 0010
01000 1 0 0 0 0010
01010 1 0 0 0 0100
01100 1 0 0 0 0000
01101 1 0 0 0 0001
00000 1 1 0 0 1000
00010 1 1 0 0 1001
Page 6