/// EE 3755 -- Spring 2002 -- Computer Organization
//
/// Example used in class 22 April 2002.
/// Day 1: MIPS Processor Functional Simulator
// Will be added to each day.
`define MIPS_PROG "tfirst.v"
module proc(exc,clk);
input clk;
output exc;
// add $2, $3, $4
reg [31:0] pc, npc;
reg [31:0] ir;
reg [5:0] opcode, func;
reg [4:0] rs, rt, rd, sa;
reg [7:0] mem ['h400000:'h400200];
reg [31:0] gpr [0:31];
parameter F_add = 6'h20;
parameter F_sll = 6'h0;
parameter F_srl = 6'h2;
parameter F_sub = 6'h22;
parameter F_or = 6'h25;
always @( posedge clk ) begin
ir = {mem[pc],mem[pc+1],mem[pc+2],mem[pc+3]};
{opcode, rs, rt, rd, sa, func} = ir;
if( opcode == 0 ) begin
case( func )
F_add: gpr[rd] = gpr[rs] + gpr[rt];
F_sub: gpr[rd] = gpr[rs] - gpr[rt];
default: $stop;
endcase
end
gpr[0] = 0;
pc = pc + 4;
end
endmodule
`include "mips_fs_tb.v"