MIPS寄存器堆

打印 上一主题 下一主题

主题 1006|帖子 1006|积分 3028

实验目的


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


  • Vivado 集成开发环境
MIPS寄存器



  • 寄存器R0的值恒为0
模块接口设计

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表