实验五_存储器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成原理
实验五《存储器设计》
实验报告
姓名:吴速碘黄紫微
学号:******** ********
班级:计算机二班
日期2015、5、25
实验五存储器设计
一、实验目的
1、掌握RAM和ROM的Verilog语言描述方法;
2、学习用宏模块的方法定制RAM和ROM。
二、实验任务
1、设计并实现一个128*16 的单端口的RAM;
2、设计并实现一个128*16的ROM;
3、设计并实现一个双端口的128*16的RAM
4、设计并实现一个16*32的FIFO。
5、设计并实现正弦信号发生器,见“正弦信号发生器实验指南”。
三、实验步骤
1 编写Verilog代码(见附页)
2功能仿真
进行分析与综合,排除语法上的错误
建立波形仿真文件,输入激励
生成功能仿真网表
进行功能仿真,观察输出结果
3选择器件
DE2_70开发板的使用者请选择EP2C70F896C6
4绑定管脚
5 下载验证
DE2_70开发板的下载:使用USB-Blaster进行下载
四、实验内容
五、实验思考题
1、分析存储器采用三态输出的原因是什么?
存储器的输出端是连接在数据总线上的。数据总线相当于一条车流频繁的大马路,必须在绿灯条件下,车辆才能进入这条大马路,否则要撞车发生交通事故。同
理,存储器中的数据是不能随意传送到数据总线上的。例如,若数据总线上的数
据是“1”(高电平5V),存储器中的数据是“0”(低电平0V),两种数据若碰到一
起就会发生短路而损坏单片机。因此,存储器输出端口不仅能呈现“l”和“0”两
种状态,还应具有第三种状态“高阻"态。呈“高阻"态时,输出端口相当于断开,对数据总线不起作用,此时数据总线可被其他器件占用。当其他器件呈“高阻”态
时,存储器在片选允许和输出允许的条件下,才能将自己的数据输出到数据总线
上。
2、单端口和双端口的区别是什么?
单端口ram是ram的读写只有一个端口,同时只能读或者只能写。
双端口ram是ram读端口和写端口分开,一个端口能读,另一个端口可以同时写。
3、什么情况下考虑采用双端口存储器?
(1)为了使CPU不致因为等待存储器读写操作的完成而无事可做,可以采取一些加速CPU和存储器之间有效传输的特殊措施:
●采用更高速的主存储器,或加长存储器的字长;
●采用并行操作的双端口存储器;
●在CPU和主存储器之间插入一个高速缓冲存储器(Cache),以缩短读出时间;
●在每个存储器周期中存取几个字.(采用交叉存储器)
(2)双端口存储器是指同一个存储器具有两组相互独立的读写控制线路,由于进行
并行的独立操作,是一种高速工作的存储器。
(3)
●当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当
任一端口被选中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片
选控制和输出驱动控制。
●当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为解决此问题,特
设置了BUSY标志。由片上的判断逻辑决定对哪个端口优先进行读写操作,而暂
时关闭另一个被延迟的端口。
●总之,当两个端口均为开放状态(BUSY为高电平)且存取地址相同时,发生读写
冲突.此时判断逻辑可以使地址匹配或片使能匹配下降至5ns,并决定对哪个端
口进行存取.
4、FIFO的工作特点是什么?为什么常用于实现程序中的子程序调用、递归等?
特点:
FIFO存储器是系统的缓冲环节,如果没有FIFO存储器,整个系统就不可能正常工作,它主要有几方面的功能:
1)对连续的数据流进行缓存,防止在进机和存储操作时丢失数据;
2)数据集中起来进行进机和存储,可避免频繁的总线操作,减轻CPU的负担;
3)允许系统进行DMA操作,提高数据的传输速度。这是至关重要的一点,如果不采用DMA操作,数据传输将达不到传输要求,而且大大增加CPU的负担,无法同时完成数据的存储工作。
因此,选择合适的存储芯片对于提高系统性能很重要,在以往的设计中经常采用的是“乒乓型”存储方式,这种方式就是采用两片存储器,数据首先进入其中一片,当数据满时再让数据进入第二片存储器,同时通过逻辑控制,将第一片存储器中的数据取走,以此类推,两片轮流对数据进行缓存。这种方式有着较明显的缺点,首先是控制复杂,要有专门的逻辑来维护这种轮流机制;其次,数据流的流向要不断变化,限制了数据流的速率,还容易产生干扰。从数据传输上说,缓存芯片容量越大,对后续时序要求就越低,可减少总线操作的频次;但从数据存储上说,就意味着需要开辟更大的内存空间来进行进行缓冲,会增加计算机的内存开销,而且容量越大,成本也越高。因此,在综合考虑系统性能和成本的基础上,选择满足系统需要的芯片即可。
在FIFO存储器而不是地址总线上附加了表示内部缓冲器状态(Buffer Full,缓冲器已满;Buffer Empty,缓冲器为空)的状态引脚,连接于FIFO的双方利用该状态进行操作的控制。另外,还设计了在接通电源及复位(Reset)或由于操作中的某些异常等原因而重新初始化(无数据状态)FIFO的复位引脚,这可以说是FIFO存储器的特点。
Verilog代码
《sinwaveV》
module sinwaveV
#(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=6)
(
input clk,
output reg [(DATA_WIDTH-1):0] q
);
reg [(ADDR_WIDTH-1):0] Q1;
wire newclk;
reg [4:0] clk_cnt;
assign newclk = clk_cnt[4];
always @(posedge CLK)
begin
clk_cnt <= clk_cnt+1;
end
always @(posedge newclk)
begin
Q1<=Q1+1;
end
lpm_rom0 lpm_rom0_inst ( .address ( Q1), .clock ( CLK ), .q ( DOUT ) ); endmodule