杭电计组实验5-存储器设计实验_第1页
杭电计组实验5-存储器设计实验_第2页
杭电计组实验5-存储器设计实验_第3页
杭电计组实验5-存储器设计实验_第4页
杭电计组实验5-存储器设计实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、杭州电子科技大学计算机学院实验报告实验项目: 课程名称:计算机组成原理与系统结构设计姓名: 学号: 同组姓名: 学号: 实验位置(机号): 实验日期: 指导教师: 实验内容(算法、程序、步骤和方法)1、 实验目的(1) 掌握灵活应用Verilog HDL进行各种描述与建模的技巧和方法。(2) 学习在ISE中设计生成M恶魔人员IP核的方法。(3)学习存储器的结构及读写原理,掌握存储器的设计方法。2、 实验仪器 ISE工具软件三、步骤、方法(1)在ISE的工程目录里生成一个扩展名为Test_Mem.coe。该文件是用于Memory IP核的初始化文件。文件包括两行,memory_initializ

2、ation_radix=16;memory_initialization_vector=,00010fff,FFFF0000,0000FFFF,aaaaaaaa,bbbbbbbb;(2) 启动ISE工具软件,选择File-New Project,输入工程名shiyan5,默认选择后,点击Next按钮,确认工程信息后点击Finish按钮,创建一个完整的工程(3) 在工程管理区的任意位置右击,选择New Source命令。弹出New Source Wizard对话框,选择IP(CORE Generator&Architecture Wizard),并输入存储器IP核的名称RAM_B,点击Next按

3、钮进入下一步,在IP核选择界面,选择Memories&Storage Elements下的Block Memory Generator选项,单击next按钮,点击Finish进入参数设置。(4) Memory IP参数设置。在第1页选择默认接口:Native.第2页选择Memory Type为Single Port RAM.第三页修改Write Width为32,Write Depth为64.选择Always Enabled。第4页选中Load Init File,选择第一步生成的COE文档。第5页和第6页默认无需修改。单击Generate按钮,系统将在工程管理区生成一个RAM_B存储器模块:

4、RAM_B(RAM_B.xco)。之后在过程管理区会出现核生成器菜单。(5) 调用RAM_B模块:双击过程管理区的View HDL Instruction Template,右侧代码区出现RAM_B的调用模板。(6) 在工程管理区的任意位置右击,选择New Source命令。弹出New Source Wizard对话框,选择Verilog Module,并输入Verilog文件名ram,点击Next按钮进入下一步,点击Finish完成创建。将RAM_B的调用模板粘贴过来。并对ram进行仿真。(7) 在工程管理区的任意位置右击,选择New Source命令。弹出New Source Wizard

5、对话框,选择Verilog Module,并输入Verilog文件名jicunqidui,点击Next按钮进入下一步,点击Finish完成创建。利用实验四对这个进行编码。(8)在工程管理区的任意位置右击,选择New Source命令。弹出New Source Wizard对话框,选择Verilog Module,并输入Verilog文件名jicunchu,点击Next按钮进入下一步,点击Finish完成创建。编辑程序源代码,对jicunqidui和ram进行调用,然后编译。并进行运行,观察是否正确。(9)在工程管理区将View类型设置成Simulation,在任意位置右击,选择New Sour

6、ce命令,选择Verilog Test Fixture选项。点击Next,点击Finish,完成。编写仿真代码,观察仿真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至正确。(10)由于实验五并未链接实验板,所以后面的链接实验板的步骤此处没有。操作过程及结果一,操作过程实验过程和描述:Module jicunchu(R_Addr_A,R_Addr_B,Clk,W_Addr,W_Data,R_Data_A,R_Data_B,Reset,Write_reg ,wea,addr,douta );input Clk;input Reset;input 4:0R_Addr_A; input 4:

7、0R_Addr_B;input 4:0W_Addr;output 31:0R_Data_A;output 31:0R_Data_B;input 31:0W_Data;input wire Write_reg;input wire wea;input 7:2addr;output 31:0douta;jicunqidui FA0( .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

8、_Data_B), .Write_reg(Write_reg);ram FA1( .wea(wea), .addr(addr7:2), .dina(R_Data_A), .douta(douta), .clk(Clk);endmodulemodule jicunqidui(R_Addr_A,R_Addr_B,Clk,W_Addr,W_Data,R_Data_A,R_Data_B,Reset,Write_reg);input Clk,Reset;input wire Write_reg;input wire4:0R_Addr_A;input wire4:0W_Addr;input wire4:0

9、R_Addr_B;input wire32:0W_Data;reg 31:0REG_Files31:0;output wire0:31R_Data_A;output wire0:31R_Data_B;integer i=0;always(posedge Clk or posedge Reset)begin if(Reset) begin for(i=0;i=31;i=i+1) REG_Filesi=32b0; endelse begin if(Write_reg) REG_FilesW_Addr=W_Data; endend assign R_Data_A=REG_FilesR_Addr_A;

10、 assign R_Data_B=REG_FilesR_Addr_B;endmodulemodule ram(clk,wea,addr,dina,douta);input clk;input 0:0wea;input 7:2addr;input 31:0dina;output 31:0douta;RAM_B your_instance_name ( .clka(clk), / input clka .wea(wea), / input 0 : 0 wea .addra(addr7:2), / input 5 : 0 addra .dina(dina), / input 31 : 0 dina

11、.douta(douta) / output 31 : 0 douta);endmodule仿真代码Jicunchu的仿真module text2;/ Inputsreg 4:0 R_Addr_A;reg 4:0 R_Addr_B;reg Clk;reg 4:0 W_Addr;reg 31:0 W_Data;reg Reset;reg Write_reg;reg wea;reg 7:2 addr;/ Outputswire 31:0 R_Data_A;wire 31:0 R_Data_B;wire 31:0 douta;/ Instantiate the Unit Under Test (UU

12、T)jicunchu uut (.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), .addr(addr7:2), .douta(douta);initial begin/ Initialize InputsR_Addr_A = 0;R_Addr_B = 0;Clk = 0;W_Addr = 0

13、;W_Data = 0;Reset = 1;Write_reg = 0;wea = 0;addr = 0;/ Wait 100 ns for global reset to finish / Add stimulus here #100;Reset = 0;Clk = 0;#100;W_Addr =5b11011;W_Data = 32b ;Write_reg = 1;Clk=0;#50;Clk=1;#100;R_Addr_A = 5b11011;R_Addr_B = 0;Clk = 0;Write_reg = 0;#100;R_Addr_A = 5b11011;Write_reg=0;Clk

14、 = 0;W_Addr = 0;W_Data = 0;#10; Clk=0;wea = 1;addr =8b;#10;Clk=1;#100;wea = 0;addr =8b;#100;Clk=0;#10;Clk=1;end EndmoduleRAM的仿真module text3;/ Inputsreg clk;reg 0:0 wea;reg 7:2 addr;reg 31:0 dina;/ Outputswire 31:0 douta;/ Instantiate the Unit Under Test (UUT)ram uut (.clk(clk), .wea(wea), .addr(addr

15、7:2), .dina(dina), .douta(douta);initial begin/ Initialize Inputsclk = 0;wea = 0;addr = 0;dina = 0;/ Wait 100 ns for global reset to finish#100; / Add stimulus hereclk = 0;wea = 0;addr = 6b;dina = 32b ;#100;clk = 1;wea = 0;addr = 6b;dina = 32b ;#100;clk = 0;wea = 1;addr = 6b;dina = 32b ;#100;clk = 1

16、;wea = 1;addr = 6b;dina = 32b ;end endmoduleRTL图2、 结果思考题:(3) 设计实现一个ROM,常规存储器是单端口存储器,每次只接收一个地址,访问一个存储单元,从中读取或写入一个字节或字。主存储器是信息交换的中心,一方面CPU频繁地与主存交换信息,另一方面外设也较频繁地与主存交换信息,而单端口存储器每次只能接受一个访存者,或是读或是写,这就影响到存储器的整体工作速度。 双端口存储器具有两个彼此独立的读写口,每个读写口都有一套自己的地址寄存器和译码电路,可以并行地独立工作。两个读写口可以按各自接收的地址同时读出或写入,或一个写入而另一个读出。与两个独立的存储器不同,两个读写口的访存空间相同,可以访问同一个存储单元。通常使双端口存储器的一个读写口面向CPU,另一个读写口则面向外设或输入输出处理机实验体会 通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论