实验五存储器设计

上传人:阳*** 文档编号:40983494 上传时间:2021-11-18 格式:DOCX 页数:20 大小:44.38KB
返回 下载 相关 举报
实验五存储器设计_第1页
第1页 / 共20页
实验五存储器设计_第2页
第2页 / 共20页
实验五存储器设计_第3页
第3页 / 共20页
点击查看更多>>
资源描述
计算机组成原理实验五存储器设计实验报告姓名:吴速碘 黄紫微 学号:13052 班级:计算机二班日期2015、5、25实验五 存储器设计一、 实验目的1、 掌握RAM和ROM的Verilog语言描述方法;2、 学习用宏模块的方法定制RAM和ROM。二、 实验任务1、设计并实现一个128*16 的单端口的RAM;2、设计并实现一个128*16的ROM;3、设计并实现一个双端口的128*16的RAM4、设计并实现一个16*32的FIFO。5、设计并实现正弦信号发生器,见“正弦信号发生器实验指南”。三、 实验步骤1 编写Verilog代码(见附页)2功能仿真进行分析与综合,排除语法上的错误建立波形仿真文件,输入激励生成功能仿真网表进行功能仿真,观察输出结果3选择器件DE2_70开发板的使用者请选择EP2C70F896C64绑定管脚5 下载验证DE2_70开发板的下载:使用USB-Blaster进行下载四、实验内容五、实验思考题1、分析存储器采用三态输出的原因是什么?存储器的输出端是连接在数据总线上的。数据总线相当于一条车流频繁的大马路,必须在绿灯条件下,车辆才能进入这条大马路,否则要撞车发生交通事故。同理, 存储器中的数据是不能随意传送到数据总线上的。例如,若数据总线上的数据是“1”(高电平5V),存储器中的数据是“0”(低电平0V),两种数据若碰到 一起就会发生短路而损坏单片机。因此,存储器输出端口不仅能呈现“l”和“0”两种状态,还应具有第三种状态“高阻态。呈“高阻态时,输出端口相当于 断开,对数据总线不起作用,此时数据总线可被其他器件占用。当其他器件呈“高阻”态时,存储器在片选允许和输出允许的条件下,才能将自己的数据输出到数据 总线上。2、单端口和双端口的区别是什么?单端口ram是ram的读写只有一个端口,同时只能读或者只能写。双端口ram是ram读端口和写端口分开,一个端口能读,另一个端口可以同时写。3、什么情况下考虑采用双端口存储器?(1)为了使CPU不致因为等待存储器读写操作的完成而无事可做,可以采取一些加速CPU和存储器之间有效传输的特殊措施:l 采用更高速的主存储器,或加长存储器的字长;l 采用并行操作的双端口存储器;l 在CPU和主存储器之间插入一个高速缓冲存储器(Cache),以缩短读出时间;l 在每个存储器周期中存取几个字(采用交叉存储器)(2) 双端口存储器是指同一个存储器具有两组相互独立的读写控制线路,由于进行并行的独立操作,是一种高速工作的存储器。(3)l 当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一端口被选中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片选控制和输出驱动控制。l 当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为解决此问题,特设置了BUSY标志。由片上的判断逻辑决定对哪个端口优先进行读写操作,而暂时关闭另一个被延迟的端口。l 总之,当两个端口均为开放状态(BUSY为高电平)且存取地址相同时,发生读写冲突此时判断逻辑可以使地址匹配或片使能匹配下降至5ns,并决定对哪个端口进行存取4、FIFO的工作特点是什么?为什么常用于实现程序中的子程序调用、递归等?特点:FIFO存储器是系统的缓冲环节,如果没有FIFO存储器,整个系统就不可能正常工作,它主要有几方面的功能:1)对连续的数据流进行缓存,防止在进机和存储操作时丢失数据;2)数据集中起来进行进机和存储,可避免频繁的总线操作,减轻CPU的负担;3)允许系统进行DMA操作,提高数据的传输速度。这是至关重要的一点,如果不采用DMA操作,数据传输将达不到传输要求,而且大大增加CPU的负担,无法同时完成数据的存储工作。因此,选择合适的存储芯片对于提高系统性能很重要,在以往的设计中经常采用的是“乒乓型”存储方式,这种方式就是采用两片存储器, 数据首先进入其中一片,当数据满时再让数据进入第二片存储器,同时通过逻辑控制,将第一片存储器中的数据取走,以此类推,两片轮流对数据进行缓存。这种方 式有着较明显的缺点,首先是控制复杂,要有专门的逻辑来维护这种轮流机制;其次,数据流的流向要不断变化,限制了数据流的速率,还容易产生干扰。从数据传 输上说,缓存芯片容量越大,对后续时序要求就越低,可减少总线操作的频次;但从数据存储上说,就意味着需要开辟更大的内存空间来进行进行缓冲,会增加计算机的内存开销,而且容量越大,成本也越高。因此,在综合考虑系统性能和成本的基础上,选择满足系统需要的芯片即可。在FIFO存储器而不是地址总线上附加了表示内部缓冲器状态(Buffer Full,缓冲器已满;Buffer Empty,缓冲器为空)的状态引脚,连接于FIFO的双方利用该状态进行操作的控制。另外,还设计了在接通电源及复位(Reset)或由于操作中的某些异常等原因而重新初始化(无数据状态)FIFO的复位引脚,这可以说是FIFO存储器的特点。20 / 20文档可自由编辑打印Verilog代码sinwaveVmodule 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_cnt4;always (posedge CLK)beginclk_cnt=clk_cnt+1;endalways (posedge newclk)begin Q1=Q1+1;endlpm_rom0lpm_rom0_inst (.address ( Q1),.clock ( CLK ),.q ( DOUT );endmoduletest1/ synopsys translate_offtimescale 1 ps / 1 ps/ synopsys translate_onmodule test1 (address,clock,data,wren,q);input6:0 address;input clock;input15:0 data;input wren;output15:0 q;ifndef ALTERA_RESERVED_QIS/ synopsys translate_offendiftri1 clock;ifndef ALTERA_RESERVED_QIS/ synopsys translate_onendifwire 15:0 sub_wire0;wire 15:0 q = sub_wire015:0;altsyncramaltsyncram_component (.address_a (address),.clock0 (clock),.data_a (data),.wren_a (wren),.q_a (sub_wire0),.aclr0 (1b0),.aclr1 (1b0),.address_b (1b1),.addressstall_a (1b0),.addressstall_b (1b0),.byteena_a (1b1),.byteena_b (1b1),.clock1 (1b1),.clocken0 (1b1),.clocken1 (1b1),.clocken2 (1b1),.clocken3 (1b1),.data_b (1b1),.eccstatus (),.q_b (),.rden_a (1b1),.rden_b (1b1),.wren_b (1b0);defparamaltsyncram_component.clock_enable_input_a = BYPASS,altsyncram_component.clock_enable_output_a = BYPASS,altsyncram_component.intended_device_family = Cyclone IV GX,altsyncram_component.lpm_hint = ENABLE_RUNTIME_MOD=NO,altsyncram_component.lpm_type = altsyncram,altsyncram_component.numwords_a = 128,altsyncram_component.operation_mode = SINGLE_PORT,altsyncram_component.outdata_aclr_a = NONE,altsyncram_component.outdata_reg_a = CLOCK0,altsyncram_component.power_up_uninitialized = FALSE,altsyncram_component.read_during_write_mode_port_a = NEW_DATA_NO_NBE_READ,altsyncram_component.widthad_a = 7,altsyncram_component.width_a = 16,altsyncram_component.width_byteena_a = 1;endmoduletest2/ synopsys translate_offtimescale 1 ps / 1 ps/ synopsys translate_onmodule test2 (address,clock,q);input6:0 address;input clock;output15:0 q;ifndef ALTERA_RESERVED_QIS/ synopsys translate_offendiftri1 clock;ifndef ALTERA_RESERVED_QIS/ synopsys translate_onendifwire 15:0 sub_wire0;wire 15:0 q = sub_wire015:0;altsyncramaltsyncram_component (.address_a (address),.clock0 (clock),.q_a (sub_wire0),.aclr0 (1b0),.aclr1 (1b0),.address_b (1b1),.addressstall_a (1b0),.addressstall_b (1b0),.byteena_a (1b1),.byteena_b (1b1),.clock1 (1b1),.clocken0 (1b1),.clocken1 (1b1),.clocken2 (1b1),.clocken3 (1b1),.data_a (161b1),.data_b (1b1),.eccstatus (),.q_b (),.rden_a (1b1),.rden_b (1b1),.wren_a (1b0),.wren_b (1b0);defparamaltsyncram_component.address_aclr_a = NONE,altsyncram_component.clock_enable_input_a = BYPASS,altsyncram_component.clock_enable_output_a = BYPASS,altsyncram_component.init_file = vv_CPU.mif,altsyncram_component.intended_device_family = Cyclone IV GX,altsyncram_component.lpm_hint = ENABLE_RUNTIME_MOD=NO,altsyncram_component.lpm_type = altsyncram,altsyncram_component.numwords_a = 128,altsyncram_component.operation_mode = ROM,altsyncram_component.outdata_aclr_a = NONE,altsyncram_component.outdata_reg_a = CLOCK0,altsyncram_component.widthad_a = 7,altsyncram_component.width_a = 16,altsyncram_component.width_byteena_a = 1;endmoduletest3/ synopsys translate_offtimescale 1 ps / 1 ps/ synopsys translate_onmodule test3 (clock,data,rdaddress,wraddress,wren,q);input clock;input15:0 data;input6:0 rdaddress;input6:0 wraddress;input wren;output15:0 q;ifndef ALTERA_RESERVED_QIS/ synopsys translate_offendiftri1 clock;tri0 wren;ifndef ALTERA_RESERVED_QIS/ synopsys translate_onendifwire 15:0 sub_wire0;wire 15:0 q = sub_wire015:0;altsyncramaltsyncram_component (.address_a (wraddress),.clock0 (clock),.data_a (data),.wren_a (wren),.address_b (rdaddress),.q_b (sub_wire0),.aclr0 (1b0),.aclr1 (1b0),.addressstall_a (1b0),.addressstall_b (1b0),.byteena_a (1b1),.byteena_b (1b1),.clock1 (1b1),.clocken0 (1b1),.clocken1 (1b1),.clocken2 (1b1),.clocken3 (1b1),.data_b (161b1),.eccstatus (),.q_a (),.rden_a (1b1),.rden_b (1b1),.wren_b (1b0);defparamaltsyncram_component.address_aclr_b = NONE,altsyncram_component.address_reg_b = CLOCK0,altsyncram_component.clock_enable_input_a = BYPASS,altsyncram_component.clock_enable_input_b = BYPASS,altsyncram_component.clock_enable_output_b = BYPASS,altsyncram_component.intended_device_family = Cyclone IV GX,altsyncram_component.lpm_type = altsyncram,altsyncram_component.numwords_a = 128,altsyncram_component.numwords_b = 128,altsyncram_component.operation_mode = DUAL_PORT,altsyncram_component.outdata_aclr_b = NONE,altsyncram_component.outdata_reg_b = CLOCK0,altsyncram_component.power_up_uninitialized = FALSE,altsyncram_component.read_during_write_mode_mixed_ports = DONT_CARE,altsyncram_component.widthad_a = 7,altsyncram_component.widthad_b = 7,altsyncram_component.width_a = 16,altsyncram_component.width_b = 16,altsyncram_component.width_byteena_a = 1;endmoduletest4/ synopsys translate_offtimescale 1 ps / 1 ps/ synopsys translate_onmodule test4 (clock,data,rdreq,wrreq,empty,full,q,usedw);input clock;input15:0 data;input rdreq;input wrreq;output empty;output full;output15:0 q;output4:0 usedw;wire 4:0 sub_wire0;wire sub_wire1;wire sub_wire2;wire 15:0 sub_wire3;wire 4:0 usedw = sub_wire04:0;wire empty = sub_wire1;wire full = sub_wire2;wire 15:0 q = sub_wire315:0;scfifoscfifo_component (.clock (clock),.data (data),.rdreq (rdreq),.wrreq (wrreq),.usedw (sub_wire0),.empty (sub_wire1),.full (sub_wire2),.q (sub_wire3),.aclr (),.almost_empty (),.almost_full (),.sclr ();defparamscfifo_component.add_ram_output_register = OFF,scfifo_component.intended_device_family = Cyclone IV GX,scfifo_component.lpm_numwords = 32,scfifo_component.lpm_showahead = OFF,scfifo_component.lpm_type = scfifo,scfifo_component.lpm_width = 16,scfifo_component.lpm_widthu = 5,scfifo_component.overflow_checking = ON,scfifo_component.underflow_checking = ON,scfifo_component.use_eab = ON;endmodule
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!