杭电计组实验5存储器设计实验#精选Word格式.docx

上传人:b****5 文档编号:16480664 上传时间:2022-11-24 格式:DOCX 页数:12 大小:40.85KB
下载 相关 举报
杭电计组实验5存储器设计实验#精选Word格式.docx_第1页
第1页 / 共12页
杭电计组实验5存储器设计实验#精选Word格式.docx_第2页
第2页 / 共12页
杭电计组实验5存储器设计实验#精选Word格式.docx_第3页
第3页 / 共12页
杭电计组实验5存储器设计实验#精选Word格式.docx_第4页
第4页 / 共12页
杭电计组实验5存储器设计实验#精选Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

杭电计组实验5存储器设计实验#精选Word格式.docx

《杭电计组实验5存储器设计实验#精选Word格式.docx》由会员分享,可在线阅读,更多相关《杭电计组实验5存储器设计实验#精选Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

杭电计组实验5存储器设计实验#精选Word格式.docx

步骤和方法)

(2)启动ISE工具软件,选择File->

NewProject,输入工程名shiyan5,默认选择后,点击Next按钮,确认工程信息后点击Finish按钮,创建一个完整的工程

(3)在工程管理区的任意位置右击,选择NewSource命令。

弹出NewSourceWizard对话框,选择IP(COREGenerator&

ArchitectureWizard),并输入存储器IP核的名称RAM_B,点击Next按钮进入下一步,在IP核选择界面,选择Memories&

StorageElements下的BlockMemoryGenerator选项,单击next按钮,点击Finish进入参数设置。

(4)MemoryIP参数设置。

在第1页选择默认接口:

Native.第2页选择MemoryType为SinglePortRAM.第三页修改WriteWidth为32,WriteDepth为64选择AlwaysEnabled。

第4页选中LoadInitFile,选择第一步生成的COE文档。

第5页和第6页默认无需修改。

单击Generate按钮,系统将在工程管理区生成一个RAM_B存储器模块:

RAM_B(RAM_B.xco)。

之后在过程管理区会出现核生成器菜单。

(5)调用RAM_B模块:

双击过程管理区的ViewHDLInstructionTemplate,右侧代码区出现RAM_B的调用模板。

(6)在工程管理区的任意位置右击,选择NewSource命令。

弹出NewSourceWizard对话框,选择VerilogModule,并输入Verilog文件名ram,点击Next按钮进入下一步,点击

Finish完成创建。

将RAM_B的调用模板粘贴过来。

并对ram进行仿真。

(7)在工程管理区的任意位置右击,选择NewSource命令。

弹出NewSourceWizard对

话框,选择VerilogModule,并输入Verilog文件名jicunqidui,点击Next按钮进入下一步,点击Finish完成创建。

利用实验四对这个进行编码。

(8)在工程管理区的任意位置右击,选择NewSource命令。

话框,选择VerilogModule,并输入Verilog文件名jicunchu,点击Next按钮进入下一步,点击Finish完成创建。

编辑程序源代码,对jicunqidui和ram进行调用,然后编译。

并进

行运行,观察是否正确。

(9)在工程管理区将View类型设置成Simulation,在任意位置右击,选择NewSource命令,选择VerilogTestFixture选项。

点击Next,点击Finish,完成。

编写仿真代码,观察仿真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至正确。

(10)由于实验五并未链接实验板,所以后面的链接实验板的步骤此处没有。

操作过程及结果

一,操作过程

实验过程和描述:

Module

jicunchu(RAddrA,RAddrB,Clk,WAddr,WData,RDataA,RDataB,Reset,Writereg,w

ea,addr,douta);

inputClk;

inputReset;

input[4:

0]R_Addr_A;

input[4:

0]R_Addr_B;

0]W_Addr;

output[31:

0]R_Data_A;

0]R_Data_B;

input[31:

0]W_Data;

inputwireWrite_reg;

inputwirewea;

input[7:

2]addr;

0]douta;

jicunqiduiFA0(

•R_Addr_A(R_Addr_A),

•R_Addr_B(R_Addr_B),

•Clk(Clk),

•W_Addr(W_Addr),

•W_Data(W_Data),

•Reset(Reset),

•R_Data_A(R_Data_A),

•R_Data_B(R_Data_B),

•Write_reg(Write_reg));

ramFA1(

•wea(wea),

.addr(addr[7:

2]),

.dina(R_Data_A),

.douta(douta),

.clk(Clk));

endmodule

module

jicunqidui(R_Addr_A,R_Addr_B,Clk,W_Addr,W_Data,R_Data_A,R_Data_B,Reset,Write_reg);

inputClk,Reset;

inputwire[4:

inputwire[32:

reg[31:

0]REG_Files[31:

0];

outputwire[0:

31]R_Data_A;

31]R_Data_B;

integeri=0;

always@(posedgeClkorposedgeReset)

begin

if(Reset)

for(i=0;

i<

=31;

i=i+1)

REG_Files[i]<

=32'

bO;

end

else

beginif(Write_reg)REG_Files[W_Addr]<

=W_Data;

assignR_Data_A=REG_Files[R_Addr_A];

assignR_Data_B=REG_Files[R_Addr_B];

moduleram(clk,wea,addr,dina,douta);

inputclk;

input[0:

0]wea;

0]dina;

RAMByourinstaneename(

.clka(clk),//inputclka

.wea(wea),//input[0:

0]wea.addra(addr[7:

2]),//input[5:

0]addra

.dina(dina),//input[31:

0]dina.douta(douta)//output[31:

0]douta

);

仿真代码

Jicunchu的仿真

moduletext2;

//Inputs

reg[4:

0]R_Addr_A;

0]R_Addr_B;

regClk;

0]W_Addr;

0]W_Data;

regReset;

regWrite_reg;

regwea;

reg[7:

2]addr;

//Outputs

wire[31:

0]R_Data_A;

0]R_Data_B;

0]douta;

//InstantiatetheUnitUnderTest(UUT)jicunchuuut(

.R_Addr_A(R_Addr_A),.R_Addr_B(R_Addr_B),.Clk(Clk),

.W_Addr(W_Addr),

.W_Data(W_Data),

.R_Data_A(R_Data_A),.R_Data_B(R_Data_B),.Reset(Reset),.Write_reg(Write_reg),.wea(wea),

.douta(douta)

initialbegin

//InitializeInputs

R_Addr_A=0;

R_Addr_B=0;

Clk=0;

W_Addr=0;

W_Data=0;

Reset=1;

Write_reg=0;

wea=0;

addr=0;

//Wait100nsforglobalresettofinish

//Addstimulushere

#100;

Reset=0;

W_Addr=5'

b11011;

W_Data=32'

b11111111110001111111111101101111;

Write_reg=1;

Clk=0;

#50;

Clk=1;

R_Addr_A=5'

Write_reg=0;

#10;

wea=1;

addr=8'

b00110100;

wea=0;

Endmodule

RAM的仿真

moduletext3;

regclk;

reg[0:

0]wea;

0]dina;

//InstantiatetheUnitUnderTest(UUT)ramuut(

.clk(clk),

.wea(wea),

.dina(dina),

//InitializeInputs

clk=0;

dina=0;

//Wait100nsforglobalresettofinish#100;

addr=6'

b000001;

dina=32'

elk=1;

elk=0;

end

RTL图

jicunchu

r

douta(3l:

O>

RAddr0)

R_pa»

a_^A(31-0)

RAddr

WA[lilr(4O)

W_Da(t円[为口

Clk

Wuata

Reset

wea

wntereg

■上

iiLUndiu.1

 

结果

思考题:

(3)设计实现一个ROM,常规存储器是单端口存储器,每次只接收一个地址,访问一个存储单元,从中读取或写入一个字节或字。

主存储器是信息交换的中心,一方面CPU频

繁地与主存交换信息,另一方面外设也较频繁地与主存交换信息,而单端口存储器每次只能接受一个访存者,或是读或是写,这就影响到存储器的整体工作速度。

双端口存储器具有两个彼此独立的读写口,每个读写口都有一套自己的地址寄存器和译

码电路,可以并行地独立工作。

两个读写口可以按各自接收的地址同时读出或写入,或一

个写入而另一个读出。

与两个独立的存储器不冋,两个读写口的访存空间相冋,可以访问冋一个存储单兀。

通常使双端口存储器的一个读写口面向CPU,另一个读写口则面向外设

或输入输出处理机

实验体会

通过本次实验熟练掌握ISE软件,并运用该软件设计存储器,了解了存储器的结构设计和工作原理,并实现在ISE中生成MemoryIP核。

调用了生成的存储器模块,并在理解的

基础上自己设计了一个简单的存储器。

在之后的波形仿真图模拟时,我对于波形的识图能力不太强,后来通过了仔细分析,经数据波形验证,实验准确元成。

其中wea(Mem_Write)控制存储器读操作核与操作。

第一

次接触这种MemoryIP核的应用,感觉收获了很多。

指导

教师

评议

实验步骤写的时候,最好自己按照所做步骤写,二人不要一模一样。

成绩:

指导教师签名:

最新文件仅供参考已改成word文本。

方便更改如有侵权请联系网站删除

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

当前位置:首页 > PPT模板 > 中国风

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

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