寄存器堆的设计Word文档格式.docx

上传人:b****7 文档编号:21851862 上传时间:2023-02-01 格式:DOCX 页数:9 大小:57.28KB
下载 相关 举报
寄存器堆的设计Word文档格式.docx_第1页
第1页 / 共9页
寄存器堆的设计Word文档格式.docx_第2页
第2页 / 共9页
寄存器堆的设计Word文档格式.docx_第3页
第3页 / 共9页
寄存器堆的设计Word文档格式.docx_第4页
第4页 / 共9页
寄存器堆的设计Word文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

寄存器堆的设计Word文档格式.docx

《寄存器堆的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《寄存器堆的设计Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

寄存器堆的设计Word文档格式.docx

 input reg,   //复位端

input reg,   //写使能端

input [4:

0]reg读地址一

input [4:

0]reg读地址二

 input [4:

0]reg, //写地址

 input [31:

0]reg,//写数据

 output [31:

0]reg读数据一

  output[31:

0]reg读数据二

);

//----------------------------------

reg [31:

0]regfiles[0:

31];

 //实现寄存功能

reg[4:

0]i;

     //实现flag的变换

reg flag;

    //实现复位的标志

regreg;

     //实现写数据的脉冲

reg[4:

0]count;

   

//---32分频处理

always@(posedgeregorposedgereg)

begin

  if(reg)

begin

 count<

=5'

d0;

ﻩreg<

=1'

b0;

    

ﻩend

ﻩelseif(count<

5'

d16)

ﻩbegin

ﻩcount<

=count+1'b1;

     

end

else

ﻩbegin

ﻩcount<

=5'

d0;

ﻩreg<

=~reg;

end

//---复位处理

always@(posedgeregorposedgereg)

begin

 if(reg)

ﻩbegin

 i<

=5'

d0;

ﻩflag<=1'b0;

 

ﻩendﻩ 

else if(i<

5'b11111)

ﻩ i<

=i+1'

b1;

 flag<

=1'

b0;

     

end

ﻩelse

  flag<

=1'

b1;

//---写操作

always@(posedge reg)

 if(~flag)

ﻩregfiles[i]<=32'd0;

else

 begin

 if(reg(reg'

d0))      //写使能端为一,写地址不为零

ﻩbegin

ﻩﻩregfiles[reg]<=reg;

     //写入

ﻩﻩﻩend

ﻩﻩend

end

//---读操作

assignreg(reg'

d0)?

32'

d0:

regfiles[reg];

assignreg(reg'

d0)?

regfiles[reg];

//

//----------------------------------------

endmodule

4、设计电路仿真

所设计的指令存储器模块电路,采用ISE仿真器工具进行了设计仿真验证,验证结果表明存储器功能以及接口时序完全正确,如下是仿真验证的波形图。

附件1是仿真激励源代码。

图5 寄存器堆电路读写仿真波形图

附件1:

modulereg;

ﻩ//Inputs

regclk;

ﻩregrst;

 

regWen;

ﻩreg[4:

0]Raddr_1;

reg[4:

0] Raddr_2;

ﻩreg[4:

0]Waddr;

ﻩreg[31:

0]Wdata;

ﻩ//Outputs

ﻩwire [31:

0]Rdata_1;

wire [31:

0]Rdata_2;

//Instantiate theUnitUnderTest(UUT)

reg(

ﻩ.reg(clk), 

ﻩ.reg(rst),

.reg(Wen),

.reg(Raddr_1),

ﻩﻩ.reg(Raddr_2),

ﻩ.reg(Waddr),

ﻩ.reg(Wdata),

ﻩ.reg(Rdata_1), 

ﻩﻩ.reg(Rdata_2)

ﻩalways#0.25 clk<

=~clk;

 

reg[5:

0]j,k;

initialbegin

clk=1'

rst = 1'

ﻩWen = 1'

ﻩRaddr_1=5'

Raddr_2=5'd0;

ﻩﻩWaddr=5'd0;

ﻩWdata = 32'

ﻩinitial begin

 #16rst =1'

b0;

          //复位

#32Wen=1'

b1;

Waddr=5'd5;

Wdata= $random;

   //写操作

 #16Waddr= 5'd30;

Wdata= $random;

   #16Waddr=5'

d0;

Wdata=32'

hffff;

    

    #16Wen=1'

Raddr_1= 5'd5;

Raddr_2=5'

d30;

   //无法写入无法写入

  #16Raddr_1=5'

Raddr_2=5'

ﻩ//----------------------------------------

ﻩ#16Wen =1'

b1;

    //写操作

ﻩfor(j=0;

j<6'

d32;

j=j+1)

ﻩbegin

ﻩ@(posedgeclk) #16 Waddr=j;

ﻩﻩWdata=31-j;

ﻩend

ﻩ//----------------------------------------

#48Wen=1'

     //读操作

ﻩﻩfor(k=0;

k<6'

d32;

k=k+1)

ﻩﻩbegin

ﻩ@(posedgeclk) #16 Raddr_1= k;

ﻩRaddr_2=31-k;

end

end

   

endmodule

modulereg;

//Inputs

ﻩregclk;

ﻩregrst;

ﻩreg Wen;

reg[4:

0]Raddr_1;

reg[4:

0]Raddr_2;

reg [4:

0]Waddr;

reg[31:

0]Wdata;

//Outputs

wire[31:

0]Rdata_1;

wire[31:

0]Rdata_2;

//Instantiate theUnitUnderTest (UUT)

ﻩreg(

ﻩ.reg(clk),

ﻩﻩ.reg(rst),

ﻩ.reg(Wen),

ﻩ.reg(Raddr_1),

ﻩ.reg(Raddr_2), 

ﻩﻩ.reg(Waddr),

ﻩ.reg(Wdata),

ﻩ.reg(Rdata_1),

.reg(Rdata_2)

);

ﻩalways#0.25clk<

=~clk;

ﻩreg[5:

0]j,k;

initial begin

ﻩﻩclk=1'

b0;

ﻩrst=1'b1;

ﻩWen=1'b0;

ﻩRaddr_1=5'

ﻩRaddr_2=5'

ﻩWaddr=5'

ﻩﻩWdata = 32'

initialbegin

#16rst=1'

b0;

        //复位

ﻩ#32 Wen=1'

b1;

 Waddr=5'

d5;

Wdata=$random;

 //写操作

#16Waddr=5'd30;

Wdata =$random;

#16 Waddr=5'

d0;

Wdata=32'

hffff;

  

 #16Wen=1'

b0;

Raddr_1=5'

d5;

Raddr_2=5'

     //无法写入无法写入

#16Raddr_1=5'

Raddr_2 =5'

ﻩ//----------------------------------------

ﻩﻩ#16 Wen=1'

b1;

     //写操作

ﻩﻩfor(j=0;

j<

6'

d32;

j=j+1)

begin

ﻩ@(posedgeclk)#16Waddr=j;

Wdata =31-j;

ﻩﻩend

//----------------------------------------

ﻩ#48 Wen = 1'

     //读操作

ﻩfor(k=0;

k<

6'

d32;

k=k+1)

ﻩbegin

ﻩ@(posedgeclk)#16Raddr_1= k;

ﻩﻩRaddr_2=31-k;

end

ﻩend

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1