实验目的
- 熟悉并掌握 MIPS 计算机中寄存器堆的原理和设计方法
- 理解源操作数/目的操作数的概念
实验环境
MIPS寄存器

模块接口设计
1个写端口和2个读端口

名称宽度方向描述clk1IN时钟信号raddr15IN寄存器堆读地址1rdata132OUT寄存器堆返回数据1raddr25IN寄存器堆读地址2rdata232OUT寄存器堆返回数据2we1IN寄存器堆写使能waddr5IN寄存器堆写地址wdata32IN寄存器堆写数据寄存器堆(regfile)实现了32个32位通用寄存器。
- 可以同时进行两个寄存器的读操作和一个寄存器的写操作。
- 写:写使能信号(we)为1时写有效,为0时无效。(write enable)
- 读:读操作可以同时读两个寄存器。
- 同时对同一个寄存器进行读写时,读的数据为旧的数据。
- 读写均为同步。
- 0号寄存器恒为0。
设计代码
[code]`define REG_DATA_WIDTH 31:0`define REG_NUM 31:0`define REG_ADDR_WIDTH 4:0`define REG_ADDR_BIT 5 // 地址线宽`define REG_DATA_BIT 32 // 数据线宽module regfile( input clk, input [`REG_ADDR_WIDTH] raddr1, input [`REG_ADDR_WIDTH] raddr2, input we, // 写使能 input [`REG_ADDR_WIDTH] waddr, // 写地址 input [`REG_DATA_WIDTH] wdata, // 写数据 output reg [`REG_DATA_WIDTH] rdata1, output reg [`REG_DATA_WIDTH] rdata2 ); // 数组表示寄存器堆 reg [`REG_DATA_WIDTH] mips_regfile [`REG_NUM]; // 读1 always @(posedge clk) begin if (raddr1 == {`REG_ADDR_BIT{1'b0}}) begin rdata1 |