2023年存储器设计-存储器设计课程设计.docx
《2023年存储器设计-存储器设计课程设计.docx》由会员分享,可在线阅读,更多相关《2023年存储器设计-存储器设计课程设计.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年存储器设计:存储器设计课程设计 计算机组成原理试验 试验五 存储器设计 专业班级:计算机科学与技术 学号: 0936008 姓名:冯帆 学号: 0936036 姓名:张琪 试验地点: 理工楼901 试验五 存储器设计 一、试验目的 1、 驾驭RAM 和ROM 的Verilog 语言描述方法; 2、 学习用宏模块的方法定制RAM 和ROM 。 二、试验内容 1、设计并实现一个8*8 的单端口的RAM ; 2、设计并实现一个128*16的ROM ; 3、设计并实现一个双端口的128*16的RAM 。 4、设计并实现正弦信号发生器,参考“正弦信号发生器试验指南”。 三、试验仪器及设备: P
2、C 机+ Quartus 9.0 + DE2-70 四、试验步骤 1. 打开Quartus 软件,新建工程。 2分析单端口,双端口,ROM,RAM 的含义。 3Verilog 程序如下,并简洁注释。 /*单端口的RAM*/ module SingleRamTest(read_data, read_address, write_data, write_address, memwrite, clock, reset); output 7:0 read_data; /数据的输出 input 2:0 read_address; /读数据地址的输入 input 7:0 write_data; /写数据地
3、址的输入 input 2:0 write_address; /写数据地址的输入 input memwrite; /若该信号为1,进行写操作,反之,写操作 input clock; input reset; /复位和时钟信号 reg 7:0 read_data, mem0, mem1,mem2,mem3,mem4,mem5,mem6,mem7; /设置存储器存储单元 /* Block for memory read */ always (read_address or mem0 or mem1 or mem2 or mem3 or mem4 or mem5 or mem6 or mem7) /若
4、上述信号有一个发生改变,则启动该模块 begin case(read_address) /读地址确定唯一的存储单元并将数据存储到readdata 中 3b 000: read_data = mem0; 3b 001: read_data = mem1; 3b 010: read_data = mem2; 3b 011: read_data = mem3; 3b 100: read_data = mem4; 3b 101: read_data = mem5; 3b 110: read_data = mem6; 3b 111: read_data = mem7; /* Unimplemented
5、memory */ default: read_data = 8h FF; endcase end /* Block for memory write */ always (posedge clock or posedge reset) /在时钟或者复位信号的限制下 begin if (reset) /假如复位,则全部存储单元都设置为初始化值 begin /* Initial values for memory (optional) */ mem0 = 8h 55; mem1 = 8h 55; mem2 = 8h 55; mem3 = 8h 55; mem4 = 8h 55; mem5 = 8
6、h 55; mem6 = 8h 55; mem7 = 8h 55; end else if (memwrite) /若不复位,且写信号有效,则将writedata 的值写到mem 存储单元里 /* write new value to memory */ case (write_address) 3b 000 : mem0 = write_data; 3b 001 : mem1 = write_data; 3b 010 : mem2 = write_data; 3b 011 : mem3 = write_data; 3b 100 : mem4 = write_data; 3b 101 : me
7、m5 = write_data; 3b 110 : mem6 = write_data; 3b 111 : mem7 = write_data; endcase end endmodule 设计并实现一个128*16的ROM 。 程序及注释如下: module RomTest #(parameter DATA_WIDTH=16, parameter ADDR_WIDTH=7) ( input (ADDR_WIDTH-1):0 addr, /地址宽度为16位的addr input clk, output reg (DATA_WIDTH-1):0 q /数据宽度为16位的q ); / Declar
8、e the ROM variable reg DATA_WIDTH-1:0 rom2*ADDR_WIDTH-1:0; / Initialize the ROM with $readmemb. Put the memory contents / in the file single_port_rom_init.txt. Without this file, / this design will not compile. / See Verilog LRM 1364-2023 Section 17.2.8 for details on the / format of this file. Init
9、ial /读文件中对rom 的初始化值 begin $readmemb(single_port_rom_init.txt, rom); end always (posedge clk) /q输出在addr 地址存储的值 begin q end endmodule 设计并实现一个双端口的128*16的RAM 利用宏模块对RAM 进行自定义,得到如下程序。 / megafunction wizard: %ALTSYNCRAM% / GENERATION: STANDARD / VERSION: WM1.0 / MODULE: altsyncram / = / File Name: altsyncr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 存储器 设计 课程设计
限制150内