0
点赞
收藏
分享

微信扫一扫

实验2 存储器设计与实现【计算机组成原理】


实验2 存储器设计与实现【计算机组成原理】

  • ​​实验2 存储器设计与实现​​
  • ​​一、实验目的​​
  • ​​二、实验环境​​
  • ​​三、实验原理​​
  • ​​四、实验任务​​
  • ​​五、实验结果:​​
  • ​​六、心得体会:​​

实验2 存储器设计与实现

一、实验目的

  1. 掌握单端口RAM和ROM原理和设计方法。
  2. 掌握32位数据的读出和写入方法。
  3. 掌握ModelSim和ISE\Vivado工具软件。
  4. 掌握基本的测试代码编写和FPGA开发板使用方法。

二、实验环境

  1. 装有ModelSim和ISE\Vivado的计算机。
  2. Sword\Basys3\EGo1实验系统。

三、实验原理

片内存储器分为RAM和ROM两大类。RAM是随机存储器,存储单元的内容可按需随意取出或存入。这种存储器在断电后将丢失所有数据,因此一般用来存储一些短时间内使用的程序和数据。

ROM即只读存储器,是一种只能读出事先存储的数据的存储器,其特性是存入的数据无法改变。也就是说,这种存储器只能读不能写。由于ROM在断电之后数据不会丢失,所以通常用在不需经常变更的电子资料。
通常情况下,存储器系统是按照字节(Byte)编址,但CPU访问时,通常按照字(Word)读取,因此地址就有字节地址和字地址的区别。以32位处理器为例,如图2所示。

图2 32位处理器字节编址与字地址示意图

四、实验任务

  1. 用Verilog HDL设计深度为1K个字单元、每个单元位宽为32 bit的单端口ROM,在Modelsim上完成仿真测试,要求用组合逻辑完成,按照字地址读取,要求读取采用组合逻辑。
  2. 用Verilog HDL设计深度为1K个字单元、每个单元位宽为32 bit的单端口RAM,在Modelsim上完成仿真测试,要求能够按照字地址进行读和写操作,其中读取用组合逻辑完成,写入用时序逻辑完成。

图3 32位存储器物理结构示意图

五、实验结果:

(1)ROM
1.运算程序:

module ROM(addr, data, oe);
output [31:0] data;
input [31:0] addr;
input oe;
reg[31:0] mem [0:1023];
assign data= (oe==0)?mem[addr[11:2]]:8'hzz;
initial
begin
mem[0]=32'hffff_ffff;
mem[1]=32'h1111_1111;
mem[2]=32'h8888_8888;
mem[3]=32'h2222_2222;
mem[4]=32'haaaa_aaaa;
end
endmodule

2.测试程序:

module ROM(addr, data, oe);
output [31:0] data;
input [31:0] addr;
input oe;
reg[31:0] mem [0:1023];
assign data= (oe==0)?mem[addr[11:2]]:8'hzz;
initial
begin
mem[0]=32'hffff_ffff;
mem[1]=32'h1111_1111;
mem[2]=32'h8888_8888;
mem[3]=32'h2222_2222;
mem[4]=32'haaaa_aaaa;
end

endmodule

3.仿真图

实验2 存储器设计与实现【计算机组成原理】_工具软件

(2) RAM
1.运算程序:

module RAM(
input wire [31:0] addr,
input wire [31:0] inData,
input wire cs,
input wire we,
input wire clk,
input wire [31:0] outData
);
reg [31:0] memData [1023:0];
assign outData=(!cs&&we)?(memData[addr[11:2]]):(32'hzz);
always@(posedge clk)
if(!cs&&!we)
memData[addr[11:2]]=inData;
else;
endmodule

2.测试程序:

module RAM_tb;
reg [31:0]addr;
reg [31:0]inData;
reg cs,we;
reg clk;
wire [31:0]outData;
RAM U1(addr,inData,cs,we,clk,outData);
always #10 clk=~clk;
initial
begin
cs=0;we=0;
clk=0;addr=0;inData=11;
#50 addr=4;inData=12;
#50 addr=8;inData=13;
#50 we=1;
#50 addr=0;
#50 addr=4;
#50 addr=8;
end
endmodule

3.仿真图

实验2 存储器设计与实现【计算机组成原理】_数据_02

六、心得体会:

通过本次实验的学习,我掌握了单端口RAM和ROM原理和设计方法;掌握了32位数据的读出和写入方法;掌握了ModelSim和ISE\Vivado工具软件;掌握了基本的测试代码编写和FPGA开发板使用方法。


举报

相关推荐

0 条评论