Question: ` include prj _ definition.v module CONTROL _ UNIT ( MEM _ DATA, RF _ DATA _ W , RF _ ADDR _
include prjdefinition.v
module CONTROLUNITMEMDATA, RFDATAW RFADDRW RFADDRR RFADDRR RFREAD, RFWRITE,
ALUOP ALUOP ALUOPRN, MEMADDR, MEMREAD, MEMWRITE,
RFDATAR RFDATAR ALURESULT, ZERO, CLK RST;
Output signals
Outputs for register file
output DATAINDEXLIMIT: RFDATAW;
output ADDRESSINDEXLIMIT: RFADDRW RFADDRR RFADDRR;
output RFREAD, RFWRITE;
Outputs for ALU
output DATAINDEXLIMIT: ALUOP ALUOP;
output ALUOPRNINDEXLIMIT: ALUOPRN;
Outputs for memory
output ADDRESSINDEXLIMIT: MEMADDR;
output MEMREAD, MEMWRITE;
Input signals
input DATAINDEXLIMIT: RFDATAR RFDATAR ALURESULT;
input ZERO, CLK RST;
Inout signal
inout DATAINDEXLIMIT: MEMDATA;
State nets
wire : procstate;
PROCSM statemachineSTATEprocstateCLKCLKRSTRST;
always @ procstate
begin
TBD: Code for the control unit model
end
task printinstruction;
input DATAINDEXLIMIT: inst;
reg : opcode;
reg : rs;
reg : rt;
reg : rd;
reg : shamt;
reg : funct;
reg : immediate;
reg : address;
begin
parse the instruction
Rtype
opcode rs rt rd shamt, funct inst;
Itype
opcode rs rt immediate inst;
Jtype
opcode address inst;
$write@ dns Xh $time, inst;
caseopcode
RType
h : begin
casefunct
h: $writeadd rd rd rd; rd rs rt;
h: $writesub rd rd rd; rd rs rt;
hc: $writemul rd rd rd; rd rs rt;
h: $writeand rd rd rd; rd rs rt;
h: $writeor rd rd rd; rd rs rt;
h: $writenor rd rd rd; rd rs rt;
ha: $writeslt rd rd rd; rd rs rt;
h: $writesll rd rdXh; rd rs shamt;
h: $writesrl rd rdXh; rd rs shamt;
h: $writejr rd; rs;
default: $write;
endcase
end
Itype
h : $writeaddi rd rdXh; rt rs immediate;
hd : $writemuli rd rdXh; rt rs immediate;
hc : $writeandi rd rdXh; rt rs immediate;
hd : $writeori rd rdXh; rt rs immediate;
hf : $writelui rdXh; rt immediate;
ha : $writeslti rd rdXh; rt rs immediate;
h : $writebeq rd rdXh; rt rs immediate;
h : $writebne rd rdXh; rt rs immediate;
h : $writelw rd rdXh; rt rs immediate;
hb : $writesw rd rdXh; rt rs immediate;
JType
h : $writejmp Xh; address;
h : $writejal Xh; address;
hb : $writepush;;
hc : $writepop;;
default: $write;
endcase
$write
;
end
endtask
endmodule;
module PROCSMSTATECLKRST;
list of inputs
input CLK RST;
list of outputs
output : STATE;
TBD implement the state machine here
endmodule;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
