寄存器堆的设计

上传人:回**** 文档编号:201666472 上传时间:2023-04-20 格式:DOC 页数:10 大小:77KB
返回 下载 相关 举报
寄存器堆的设计_第1页
第1页 / 共10页
寄存器堆的设计_第2页
第2页 / 共10页
寄存器堆的设计_第3页
第3页 / 共10页
点击查看更多>>
资源描述
寄存器堆设计1、 功能概述:MIPS指令格式中的寄存器号是bt,指令可以访问2=32个32位的寄存器。这样的一堆寄存器“堆在一起”构成一种寄存器堆(RgisterFe)。2、 接口阐明:寄存器堆模块接口信号阐明表脉冲regfie_lk,复位端rgfiles_st,写使能端rgi_en,写地址fie_Waddr,写数据regfiles_Wata,读地址一regiles_adr_1,读地址二rflRad,读数据一regies_Rdta_1,读数据二regile_Rda_2;设计思路:1、复位解决是运用标志位flag实现的,当复位时,lag=0;运用i来计数,当i1时,flag都等于0;直到i32,复位完毕,ag=1,这时,才可以进行写操作。2、当复位时,需要个脉冲才干将寄存器所有复位。复位未完毕,lag始终等于。若复位未完毕时,进行写操作,这时,并不能写进去,便出错了。因此,进行32分频,当寄存器可以写入时,复位已完毕。3、 设计电路源代码/-32个32位寄存器堆mull( inpu rgfile_clk, 脉冲 ipt regfil_rs, /复位端 npu regfilWen, /写使能端 it 4:0 rgfi_dr1,/读地址一 iput 4:0 rgfile_dd_2,/读地址二 iput4:0 regfle_Wad,/写地址 input31:0 efie_data, /写数据 outut 3:0 regil_Rdat_,/读数据一 out 3: rgfilRata2/读数据二 ); /-re 3:0regfils0:31; /实现寄存功能reg4:0i; /实现fg的变换rg lag; /实现复位的标志eg regfileclk_1; /实现写数据的脉冲g 4:0ount; /-分频解决aways(psedgegfile_ck r posdgeregfie_rst)begin if(regfilert)ben coun5d0;refile_clk_1=1b; enese if(count51)begin countcount1b1; endelseein cont=50;regle_clk_1efil_k_1;enden/-复位解决lwys(posedge egfile_ck r poege reg_rst)begi if(efir)beg id0;flag=1b; end else i(i5b111)ein i=i+1b; fl=1b0; endelse lag=1b1;end/-写操作alay(posedge regfie_clk_1)begi i(flg) regfiles32d;ls begi if(reil_Wen&(regile_War!=5d0) /写使能端为一,写地址不为零 begi regfilesref_Wadregfile_dta; /写入endedn/-读操作ssgn rgfle_Rdata1=(refl_adr1=50)?3d:reflesrgfile_addr;ssi rilRdata_2(regilRadd_2=5d)?32:egilesfiladdr2;/-emoe4、 设计电路仿真所设计的指令存储器模块电路,采用ISE仿真器工具进行了设计仿真验证,验证成果表白存储器功能以及接口时序完全对的,如下是仿真验证的波形图。附件1是仿真鼓励源代码。图5 寄存器堆电路读写仿真波形图附件1:dule regfie_te;/ Inutsegclk;r st; egWen;rg 4:0 Radr_1;re4: addr_2;reg :0 Waddr;reg 3:Wdaa;/ Ouputsire 31:Rata_;r31:0Rda_2;/Instiat e UntUnder Test ()regfileU1 (.refile_cl(clk), .egfe_r(rt),.reile_Wen(Wen), .gfl_Raddr_(add_1), .regfi_Rad2(Radr_), .gfile_Waddr(dd), .egi_Wdata(Wdat), .eie_Rdat_1(Rdata_1), .regfie_d_2(Rdata_);alwas #05 cl=ck; reg:0j,;nitialbegnclk = 1b0;rst 1;Wn= b0;adr_1 =d0;Raddr_2= 5d0;addr =5d;dat = d0;enitial gin #16rt 1b0; /复位#2 en 1b1;Wad 5d; Wdat = $ndom; /写操作 #16 Wdr 3;Wdat = $andom; #6dd = 5d0; Wdata = 32hfff; #16 We= 1b0; Raddr1 5d5; add_2 = d; /无法写入无法写入 16 Raddr_ = 5d0;Radr2 50;/-#6We= 1b1; 写操作fo(j=;j6d32;j=j)gi(odge clk) Waddr =j;data31-j;ed /- #48 Wen = 1b0; /读操作or(=0;k6d32;1)bgin(psege clk)#16 Raddr_ =;Radr_2 = 3-k;ndn ndmodlemodule rgfil_tet;/ Inputsg clk;re rst; reg W;reg 4: Raddr1;reg : Rddr2;reg :0 Wdr;g 31:0Wata;/Outptswre 31: data1;wir31:0 Rda_2;/ natiate teni UnderTest (UT)egile U1 (.rege_lk(clk), .rlerst(t), .regfile_Wen(en), .regfiledr_(Radr1), .gfieaddr_(dr2), regfileadr(Waddr), regfe_Wdata(Waa), .egfile_data1(Rta_1), .regfieRdt2(Rdata2);alws 0.25cl=clk; reg 5:0j,k;initia begick =10;st =11;We= 1b0;Raddr1 = d0;addr2 5d;Wadr = 50;Wdta= 32d;endinitial ei #6 rst = b0; /复位#32n = 11; Waddr 5d5; data = $rado; /写操作 #16 Wdr = d30; Wdta = $raom; #16 Waddr = 5d; data =2ff; #16 W=1b0; Radr_1=5d; Radr_2 =5d30; /无法写入无法写入 #16 addr_1 =50;Rddr2 = 5d0;/-16n = 1b1; /写操作for(j;63;=+1)begin(posdge lk) #1 Wddr ;aa 31j;end /-#48 W = 1b0; /读操作for(k=0;k6d32;k=+)gin(posdge ck)1Raddr_1 = k;Raddr_2 3-k;ened enodule
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!