1、寄存器堆的设计寄存器堆的设计 作者: 日期: 寄存器堆设计1、 功能概述:S指令格式中的寄存器号是5it,指令可以访问532个32位的寄存器。这样的一堆寄存器“堆在一起”构成一个寄存器堆(Regster Fil)。2、 接口说明:寄存器堆模块接口信号说明表脉冲reg,复位端reg,写使能端reg,写地址re,写数据eg,读地址一reg,读地址二re,读数据一eg,读数据二re;设计思路:1、复位处理是利用标志位flag实现的,当复位时,flag=0;利用i来计数,当i1时,flag都等于0;直到i=32,复位完成,flag,这时,才可以进行写操作。2、当复位时,需要2个脉冲才能将寄存器全部复位
2、。复位未完成,flag一直等于0。若复位未完成时,进行写操作,这时,并不能写进去,便出错了。所以,进行32分频,当寄存器可以写入时,复位已完成。3、 设计电路源代码/-32个3位寄存器堆odul regi( inpu reg, /脉冲 iputreg, /复位端 inureg, /写使能端 iut: reg读地址一 int:0 re读地址二 input:0 re, /写地址 iput31:0 g, /写数据 utpu3:0 eg读数据一 outut 31:0 reg读数据二 ); /-reg31:egis0:; /实现寄存功能rg 4: i; /实现lag的变换egfla; /实现复位的标志e
3、 r; /实现写数据的脉冲reg 4:0count; /-2分频处理aay(poeg reg r poege re)begin f(r) begin cont=5d0; re1b0; enelse f(count516)begi count=coun1b1; end eseein ount5d; regreg; endend/-复位处理aly(posee reg o poede eg)egin if(reg)gi i=0; a=10; ed ele(i5b1111) begin ii+1b1; flag=b; ndlse fa1;end/-写操作always(osdgr)begin if(la
4、g) regfile=30; else egin (rg(ed0)) /写使能端为一,写地址不为零 begin egfilesrg=reg; /写入 endn/-读操作assign eg(eg)?32d:regfereg;assign eg(regd0)?32d:reilesreg;/-endmodu4、 设计电路仿真所设计的指令存储器模块电路,采用IS仿真器工具进行了设计仿真验证,验证结果表明存储器功能以及接口时序完全正确,如下是仿真验证的波形图。附件1是仿真激励源代码。图 寄存器堆电路读写仿真波形图附件1:mdule eg;/ Inputs re clk;e rt; Wen;reg 4:0
5、 Rar_1; reg 4:dr_2;reg 4:0 Wad;r 31:0Wdta;/ Outpuswire31: Raa_1; wie3:0 Rata2; / Intatiateth Unit Unde Tet () reg ( .g(lk), .reg(rt), .eg(We), .eg(Radd_), .reg(dd_2), .reg(Wr), .re(Wdat), .reg(Rdaa_1),.rg(data_2) ); lways 0.25ck=clk; reg 5:0j,k; iii begin clk = 1b0; sb1; Wen=1b0; Raddr = d; Rdr_2 d0
6、;War = 5d; Wdata=320; nd integ #6 rt 1b0; /复位 32 Wen = 1b; Waddr = d; ta =$rndom; /写操作 #1 Wadd 530; Wdata =$raom; #1 Waddr = 5d0; Wdata = 32hfff; #1 W= 1b0; Radr_1 5d5; Radr_2 = 5d30; /无法写入无法写入 #16 Raddr_1 d0;ddr2 5d0; /- Wen 1b1; /写操作 for(j=0;j632;j=+1) beg (osedge clk)#Wddr = j;Wdata = 31; end - W
7、n 1b0; 读操作for(k0;k6d;kk1)bgn (osede clk)6Radr_1 ; Rr = 31-; ed ed endoduleodl rg; / Inputseg lk;reg ; regWe; reg 4: Radr_1; reg 4:0 Radr_2; rg4: ddr; re 31:Wdat; / Otuts ie 3: Rda_; wre 31:0 Rdata_2; / Insatatete Unit nder Test(UUT)re ( .reg(ck), .e(rst), .re(Wen), eg(Raddr_), reg(Rad2),.eg(adr), .r
8、g(Wda), eg(Rda_), .reg(Rdata_) );awas #.5 clk=ck; re :0j,; iitalbeginclk = 10; rs = 11; e = 1b; Rar_1 = 50; addr2 = 5d0; Waddr = 5d0;Wa=3d0; end ntial bin #16 rst = 1; 复位 #32Wen = 1;Wdd = d5; Wdata = $andm; 写操作 #6 Wad = 5d30; data= $rndom; 1add = 5d; ta = 32hffff; 16 en 10; Raddr 55; Rdr_ = 5d30; /无法写入无法写入 #16 Raddr_1 = 5d;Rdr_2 5d0; -#Wen = 1; /写操作fo(j=0;j6d32;j=j+) begn (edge k) #6 Waddr = j; Wata= 31;end /- #8Wen1b0; /读操作 fr(k;d32;k=k+) begin (osde ck) #16 Raddr_1 =;dd_2 = 31-k; enn endmodue
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1