寄存器堆的设计

上传人:公**** 文档编号:496742155 上传时间:2023-01-28 格式:DOCX 页数:8 大小:109.88KB
返回 下载 相关 举报
寄存器堆的设计_第1页
第1页 / 共8页
寄存器堆的设计_第2页
第2页 / 共8页
寄存器堆的设计_第3页
第3页 / 共8页
寄存器堆的设计_第4页
第4页 / 共8页
寄存器堆的设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《寄存器堆的设计》由会员分享,可在线阅读,更多相关《寄存器堆的设计(8页珍藏版)》请在金锄头文库上搜索。

1、寄存器堆设计1、功能概述:MIPS指令格式中的寄存器号是5bits,指令可以访问2=32个32位的寄存器。这样的 一堆寄存器“堆在一起”构成一个寄存器堆(Register File)。2、接口说明:寄存器堆模块接口信号说明表脉冲 regfile_clk,复位端 regfiles_rst,写使能端 regfiles_Wen,写地址 regfile_Waddr,写数据 regfiles_Wdata,读地址一 regfiles_Raddr_1,读地址二 regfiles_Raddr_2,读数据一 regfiles_Rdata_1,读数据二 regfiles_Rdata_2;设计思路:1、复位处理是利

2、用标志位flag实现的,当复位时,flag=O;利用i来计数,当i31 时,flag都等于0;直到i=32,复位完成,flag=1,这时,才可以进行写操作。2、当复位时,需要32 个脉冲才能将寄存器全部复位。复位未完成, flag 一直等于 0。若复位未完成时,进行写操作,这时,并不能写进去,便出错了。所以,进行 32 分频,当寄存器可以写入时,复位已完成。3、设计电路源代码/32 个 32 位寄存器堆module regfile(input regfile_clk, input regfile_rst, input regfile_Wen,/脉冲/复位端/写使能端input 4:0 regf

3、ile_Raddr_l,读地址一 input 4:0 regfile_Raddr_2,读地址二 input 4:0 regfile_Waddr, /写地址 input 3l:0 regfile_Wdata, /写数据output 31:0 regfile_Rdata_1,读数据一output 31:0 regfile_Rdata_2读数据二);/reg 31:0regfiles0:31; reg 4:0 i;reg flag;reg regfile_clk_1;reg 4:0count;/-32 分频处理/实现寄存功能/实现 flag 的变换 /实现复位的标志 /实现写数据的脉冲always(

4、posedge regfile_clk or posedge regfile_rst) beginif(regfile_rst)begin count=5d0;regfile_clk_1=1b0;endelse if(count5d16) begincount=count+1b1;endelsebegin count=5d0;regfile_clk_1=regfile_clk_1; endend/-复位处理always(posedge regfile_clk or posedge regfile_rst) beginif(regfile_rst)begini=5d0;endelse if(i5

5、b11111) begini=i+1b1;flag=1b0;endelseflag=1b1;end /-写操作always(posedge regfile_clk_1)beginif(flag)regfilesi=32d0;elsebeginif(regfile_Wen&(regfile_Waddr!=5d0) / 写使能端为一,写地址不为零beginregfilesregfile_Waddr=regfile_Wdata; / 写入endendend /-读操作assign regfile_Rdata_1=(regfile_Raddr_1=5d0)?32d0:regfilesregfile_R

6、addr_1;assign regfile_Rdata_2=(regfile_Raddr_2=5d0)?32d0:regfilesregfile_Raddr_2;/endmodule4、设计电路仿真所设计的指令存储器模块电路,采用ISE仿真器工具进行了设计仿真验证,验证结果表明存储器功能以及接口时序完全正确,如下是仿真验证的波形图。附件 1 是仿真激励源代码。图 5 寄存器堆电路读写仿真波形图附件 1:module regfile_test;/ Inputsreg clk;reg rst;reg Wen;reg 4:0 Raddr_1;reg 4:0 Raddr_2;reg 4:0 Waddr

7、;reg 31:0Wdata;/ Outputswire 31:0 Rdata_1;wire 31:0 Rdata_2;/ Instantiate the Unit Under Test (UUT) regfile U1 (.regfile_clk(clk),.regfile_rst(rst),.regfile_Wen(Wen), .regfile_Raddr_1(Raddr_1), .regfile_Raddr_2(Raddr_2), .regfile_Waddr(Waddr), .regfile_Wdata(Wdata), .regfile_Rdata_1(Rdata_1), .regfi

8、le_Rdata_2(Rdata_2);always #0.25 clk=clk;reg 5:0j,k;initial begin clk = 1b0; rst = 1b1;Wen = 1b0;Raddr_1 = 5d0;Raddr_2 = 5d0;Waddr = 5d0;Wdata = 32d0; endinitial begin/复位/写操作#16 rst = 1b0;#32 Wen = 1b1; Waddr = 5d5; Wdata = $random;#16 Waddr = 5d30; Wdata = $random;#16 Waddr = 5d0; Wdata = 32hffff;/

9、无法写入无法写入#16 Wen= 1b0; Raddr_1 = 5d5; Raddr_2 = 5d30;#16 Raddr_1 = 5d0;Raddr_2 = 5d0;/#16 Wen = 1b1;/写操作for(j=0;j6d32;j=j+1)begin(posedge clk) #16 Waddr = j;Wdata = 31-j;end/#48 Wen = 1b0;/读操作for(k=0;k6d32;k=k+1)begin(posedge clk) #16 Raddr_1 = k;Raddr_2 = 31-k;endend endmodule module regfile_test;/

10、Inputs reg clk; reg rst;reg Wen;reg 4:0 Raddr_1;reg 4:0 Raddr_2;reg 4:0 Waddr;reg 31:0Wdata;/ Outputswire 31:0 Rdata_1;wire 31:0 Rdata_2;/ Instantiate the Unit Under Test (UUT) regfile U1 (.regfile_clk(clk),.regfile_rst(rst),.regfile_Wen(Wen), .regfile_Raddr_1(Raddr_1), .regfile_Raddr_2(Raddr_2), .r

11、egfile_Waddr(Waddr), .regfile_Wdata(Wdata), .regfile_Rdata_1(Rdata_1), .regfile_Rdata_2(Rdata_2);always #0.25 clk=clk;reg 5:0j,k;initial beginclk = 1b0; rst = 1b1;Wen = 1b0; Raddr_1 = 5d0; Raddr_2 = 5d0;Waddr = 5d0; Wdata = 32d0;endinitial begin/复位/写操作#16 rst = 1b0;#32 Wen = 1b1; Waddr = 5d5; Wdata

12、= $random;#16 Waddr = 5d30; Wdata = $random;#16 Waddr = 5d0; Wdata = 32hffff;/无法写入无法写入#16 Wen= 1b0; Raddr_1 = 5d5; Raddr_2 = 5d30;#16 Raddr_1 = 5d0;Raddr_2 = 5d0;/#16 Wen = 1b1;/写操作for(j=0;j6d32;j=j+1)begin(posedge clk) #16 Waddr = j;Wdata = 31-j;end/#48 Wen = 1b0;/读操作for(k=0;k6d32;k=k+1)begin(posedge clk) #16 Raddr_1 = k;Raddr_2 = 31-k;endend endmodule

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号