杭电计组实验5存储器设计实验#精选Word格式.docx
《杭电计组实验5存储器设计实验#精选Word格式.docx》由会员分享,可在线阅读,更多相关《杭电计组实验5存储器设计实验#精选Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
步骤和方法)
(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文本。
方便更改如有侵权请联系网站删除