/// EE 3755 -- Fall 2012 -- Computer Organization // /// Example used in class 5 November 2012. /// MIPS Processor Functional Simulator, Day 1 // // Will be added to each day. // `define MIPS_PROG "tfirst.v" module proc(exc,clk); input clk; output exc; // add $2, $3, $4 reg [7:0] mem ['h400000:'h400200]; reg [31:0] gpr[0:31]; reg [31:0] pc; reg [31:0] instruction_register; reg [4:0] rs, rt, rd; parameter F_ADD = 0x20; parameter F_SUB = 0x22; always @ ( posedge clk ) begin instruction_register = { mem['h400000], mem['h400001], mem['h400002], mem['h400003] }; opcode = instruction_register[31:26]; rs = instruction_register[25:21]; rt = instruction_register[20:16]; rd = instruction_register[15:11]; func = instruction_register[5:0]; case ( func ) F_ADD: gpr[rd] = gpr[rs] + gpr[rt]; F_SUB: gpr[rd] = gpr[rs] - gpr[rt]; endcase end endmodule `include "mips_fs_tb.v"