设计题目:基于MIPS32的五级流水及中断控制器设计
目录
一、设计实验条件	
二、设计任务及要求	
三、设计报告的内容	
其中,S2-S0 对应的功能表如下:	
根据原理图,我们可以得到 RS 触发器的真值表。	
二、实现一个 32 位的 ALU	
三、实现 RS 触发器	
其中我们预定义寄存器的值始终如下:	
2.测试的结果如下	
根据波形图,可以知道我们设计的 SUBU 指令的五级流水是正确的。二 、 32               位               ALU          测 试1.测试的核心代码如下	
h0 到 h7 分别是,加法,减法,或,与,带进位的加法和减法,A 取反,以及直接输出 A。比较结果,发现结果没有错误。根据波形图,可以知道我们设计的	
与真值表比较可以知道,当 SD 为 1 的时候,RD 为 0,Q 置 1;SD 为 0 的时	
endmodule	
endmodule	
endmodule	
./Code-ALU/add.v	
endmodule	
endmodule	
endmodule	
./Code-ALU/alu.v	
`include "define.v"	
input wire[`SELECT_WIDTH] s,	
`ADD: begin	
end	
end	
end	
end	
`define InstValid 1'b0	//指令有效	
`define EXE_SUBU 6'b100011	
`define EXE_SUBU_OP 8'b00010001	
`define EXE_RES_ARITHMETIC 3'b100	
`define InstAddrBus 31:0 //ROM 的地址总线宽度	
./Code-SUB 指令/ex.v	
output reg[`AluOpBus]	aluop_o, output reg[`AluSelBus] alusel_o, output reg[`RegBus] reg1_o,	
reg[`RegBus]	imm;	
end else begin	
end	
end else begin	
end	
./Code-SUB 指令/id_ex.v	
wire[`RegAddrBus] id_wd_o;	
wire[`RegBus] ex_reg2_i; wire ex_wreg_i; wire[`RegAddrBus] ex_wd_i;	
wire ex_wreg_o; wire[`RegAddrBus] ex_wd_o; wire[`RegBus] ex_wdata_o;	
wire mem_wreg_i; wire[`RegAddrBus] mem_wd_i; wire[`RegBus] mem_wdata_i;	
wire mem_wreg_o; wire[`RegAddrBus] mem_wd_o; wire[`RegBus] mem_wdata_o;	
wire wb_wreg_i; wire[`RegAddrBus] wb_wd_i; wire[`RegBus] wb_wdata_i;	
wire reg2_read; wire[`RegBus] reg1_data; wire[`RegBus] reg2_data; wire[`RegAddrBus] reg1_addr; wire[`RegAddrBus] reg2_addr;	
./Code-SUB 指令/openmips_min_sopc_tb.v	
input wire	
input wire[`RegAddrBus]	 raddr1, output reg[`RegBus] rdata1,	
input wire	
input wire[`RegAddrBus]	 raddr2, output reg[`RegBus] rdata2	
reg[`RegBus] regs[0:`RegNum-1];	
end	
`RegNumLog2'h0)) begin	
一、设计实验条件 
计算机组成原理实验室
二、设计任务及要求
设计并实现指令 SUBU rd. rs, rt;
32 位 ALU;
RS 触发器;
三、设计报告的内容
1. 前言
MIPS 架构 20 多年前由斯坦福大学开发,是一种简洁、优化、具有高度扩展性的 RISC 架构。它的基本特点是:包含大量的寄存器、指令数和字符、可视的管道延时时隙,这些特性使 MIPS 架构能够提供最高的每平方毫米性能和当今 SoC 设计中最低的能耗。
我们知道,RISC 的一大特点是:大量使用寄存器。这是因为寄存器的存取可以在一个时钟周期内完成,同时使用寄存器也大大简化了寻址方式。与其相应 的,MIPS32 的指令中除加载(LDA)和存储(STO)指令外,都是使用寄存器或立即数作为操作数的。MIPS32 中的寄存器分为两类:通用寄存器(General Purpose Register, GPR)、特殊寄存器。
MIPS32 架构定义了 32 个通用寄存器,使用 $0、$1…$31 表示,都是 32 位。其中 $0 般用做常量 0。





