资料简介
南通大学信息科学技术学院
《计算机组成实验》
实验报告
实验名称 存储器的设计与实现
班级 物联网工程 192
学生姓名 谢焘 学号 1930110689
指导教师 成耀
日 期 年 6 月 9 日
实验 存储器的设计与实现
一、实验目的
1.熟悉 Vivado 软件的使用方法。
2.熟悉存储器的功能。
3.掌握自顶而下的硬件模块设计方法。
4.掌握电路仿真测试方法,掌握仿真激励文件的编写,掌握仿真输出的分析方法。
二、实验任务
1.利用 Verilog HDL 设计一个容量是 128B,字长是 32 位的 ROM,完成仿真测试。该 RAM 应满足
以下要求:
① 地址线:单向,用于传送地址,以便按地址访问存储单元。
② 数据线:单,用于将数据从存储矩阵读出。
2. 利用 Verilog HDL 设计一个容量是 128B,字长是 32 位的 RAM,完成仿真测试。该 RAM 应满足
以下要求:
① 地址线:单向,用于传送地址,以便按地址访问存储单元。
② 数据线:有两组单向的数据线,一组用于将数据存入存储矩阵,另一组用于从存储矩阵读出数
③ 读/写控制线:单向,分时发送读或写命令,要求保证读时不写,写时不读。
三、设计步骤
1.指令存储器 ROM
(1)实验电路原理及信号说明
指令存储器的逻辑结构如图所示:
信号名 功能 位宽 类型
Addr 指令地址 32 输入
Inst 指令内容 32 输出
具体设计如下:
依据当前 pc,读取指令寄存器中相对应地址的指令。将 pc 的输入作为敏感变量,当 pc 发生
改变的时候,则进行指令的读取,根据相关的地址,输出指令寄存器中相对应的指令。本实验的
容量为 32 条,需要由 5 位有效地址译出 ,又由于指令为 32 位,每次地址需要+4,所以从第 3 位
开始读 5 位。
Addr[31:0] Inst[31:0]
InstMem
ROM
(2)实验电路设计
module INSTMEM(Addr,Inst);//指令存储器
input[31:0]Addr;
output[31:0]Inst;
wire[31:0]Rom[31:0];
assign Rom[5'h00]=32'h20010008;//addi $1,$0,8 $1=8
assign Rom[5'h01]=32'h3402000C;//ori $2,$0,12 $2=12
assign Rom[5'h02]=32'h00221820;//add $3,$1,$2 $3=20
assign Rom[5'h03]=32'h0041;//sub $4,$2,$1 $4=4
assign Rom[5'h04]=32'h00222824;//and $5,$1,$2 $5=8
assign Rom[5'h05]=32'h00223025;//or $6,$1,$2 $6=12
assign Rom[5'h06]=32'hAD02000A;//sw $2 10($8) memory[$8+10]=10
assign Rom[5'h07]=32'h00221826;//xor $3,$1,$2
assign Rom[5'h08]=32'h30470009;//andi $7,$2,9
assign Rom[5'h09]=32'h382300EF;//xori $3,$1,0xef
assign Rom[5'h0A]=32'hXXXXXXXX;//以下留空,暂未设计存储指令
assign Rom[5'h0B]=32'hXXXXXXXX;
assign Rom[5'h0C]=32'hXXXXXXXX;
assign Rom[5'h0D]=32'hXXXXXXXX;
assign Rom[5'h0E]=32'hXXXXXXXX;
assign Rom[5'h0F]=32'hXXXXXXXX;
assign Rom[5'h10]=32'hXXXXXXXX;
assign Rom[5'h11]=32'hXXXXXXXX;
assign Rom[5'h12]=32'hXXXXXXXX;
assign Rom[5'h13]=32'hXXXXXXXX;
assign Rom[5'h14]=32'hXXXXXXXX;
assign Rom[5'h15]=32'hXXXXXXXX;
assign Rom[5'h16]=32'hXXXXXXXX;
assign Rom[5'h17]=32'hXXXXXXXX;
assign Rom[5'h18]=32'hXXXXXXXX;
assign Rom[5'h19]=32'hXXXXXXXX;
assign Rom[5'h1A]=32'hXXXXXXXX;
assign Rom[5'h1C]=32'hXXXXXXXX;
assign Rom[5'h1D]=32'hXXXXXXXX;
assign Rom[5'h1E]=32'hXXXXXXXX;
assign Rom[5'h1F]=32'hXXXXXXXX;
assign Inst=Rom[Addr[6:2]];
RTL 视图如下:
2.数据存储器 RAM
(1)实验电路原理及信号说明
本实验的数据存储器,直接使用通用代码实现。由于需要支持取数/存数指令,所以要在指令储
存器的基础上增加写入数据的数据写入端口,写使能信号(... 查看更多