/// 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"