1.ROM定制与读出实验一、实验目的1、掌握FPGA中ROM的设置,作为只读存储器ROM的工作特性和配置方法。2、用文本编辑器编辑mif文件配置ROM,学习将程序代码以mif格式文件加载于ROM中;3、在初始化存储器编辑窗口编辑mif文件配置ROM;4、验证FPGA中ROM的功能。二、实验要求1.实验前认真复习ROM存储器部分的有关内容。2.记录实验数据,写出实验报告,给出仿真波形图。3.通过本实验,对FPGA中EAB构成的ROM存储器有何认识,有什么收获?三、实验原理ALTERA的FPGA中有许多可调用的模块库,可构成如rom、ram、fifo等存储器结构。CPU中的重要部件,如RAM、ROM可直接调用他们构成,因此在FPGA中利用嵌入式阵列块EAB可以构成各种结构的存储器,ROM是其中的一种。ROM有5组信号:地址信号address[]、数据信号q[]、时钟信号inclock、outclock、允许信号memenable,其参数都是可以设定的。由于ROM是只读存储器,所以它的数据口是单向的输出端口,ROM中的数据是在对FPGA现场配置时,通过配置文件一起写入存储单元的。图2-1-1中的ROM有3组信号:inclk——输入时钟脉冲;instruction[31..0]——lpm_ROM的32位数据输出端;a[4..0]——lpm_ROM的5位读出地址。实验中主要应掌握以下三方面的内容:(1)ROM的参数设置;(2)ROM中数据的写入,即FILE初始化文件的编写;(3)ROM的实际应用,在GW48_CP+实验台上的调试方法。四、实验内容1.新建工程。工程名是scinstmem.qpf。2.用初始化存储器编辑窗口编辑ROM配置文件(文件名.mif)。这里预先给出后面将要用到的指令存储器初始化文件:scinstmem.mif。scinstmem.mif中的数据是机器指令代码(图2-1-3)。3.模块设计。用图形编辑,使用工具MegaWizardPlug-InManager,定制指令存储器rom宏功能块。设置地址总线宽度address[]和数据总线宽度q[],分别为5位和32位,并添加输入输出引脚,如图2-1-1设置和连接。在设置rom数据参数选择项file的对应窗口中(图2-1-2),用键盘输入ROM配置文件的路径(scinstmem.mif),然后设置在系统ROM/RAM读写允许,以便能对FPGA中的ROM在系统读写。4.全程编译。5.画波形文件并进行功能仿真。6.引脚锁定。7.全程编译。8.编程下载。下载SOF文件至FPGA,改变ROM的地址a[4..0],外加读脉冲,通过实验台上的数码管比较读出的数据是否与初始化数据(scinstmem.mif中的数据)一致。9.在系统读写。打开QuartusII的在系统存储模块读写工具In-systemMomery_ContentEditor,了解FPGA中ROM中的数据,并对其进行在系统写操作图2-1-1:图2-1-2:图2-1-3:图2-1-4:五、实验环境与设备QuartusII软件,实验箱六、实验代码设计(含符号说明)无代码仿真波形:七、实验检验与测试下载SOF文件至FPGA,改变ROM的地址a[4..0],外加读脉冲,通过实验台上的数码管比较读出的数据是否与初始化数据(scinstmem.mif中的数据)一致。打开QuartuII的在系统存储模块读写工具In-systemMomery_ContentEditor,修改原先的数据,在实验箱比较读出的数据与修改的数据是否一致。八、测试数据在实验台上观察数码管上的数据是否与设定的一致九、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等)1.实验中若出现文件下载失败,可检查USB接口是否接好,然后重启实验箱。2.在画电路图时,注意粗细线的区别。2.RAM读写实验一、实验目的1、了解FPGA中RAM模块ram的功能2、掌握ram的参数设置和使用方法3、掌握ram作为随机存储器RAM的工作特性和读写方法。二、实验要求1.实验前认真复习运算器和存储器部分的有关内容;2.记录实验数据,写出实验报告,给出仿真波形图。3.通过本实验,对FPGA中EAB构成的LPM-ROM存储器有何认识,有什么收获?三、实验原理在FPGA中利用嵌入式阵列块EAB可以构成存储器,ram的结构如图2-2-1。从Datain[7..0]输入的低8位数据由Ext8to32.v进行零扩展为32位输入数据后,送入ram的左边data[31..0]输入,从右边dataout[31..0]输出,we——为读/写控制信号端。数据的写入:当输入数据和地址准备好以后,clk是地址锁存时钟,当信号上升沿到来时,地址被锁存,数据写入存储单元。数据的读出:从addr[4..0]输入存储单元地址,在inclk信号上升沿到来时,该单元数据从dataout[31..0]输出。we——读/写控制端,低电平时进行读操作,高电平时进行写操作;inclk——读/写时钟脉冲;datain[7..0]——低8位数据输入端;data[31..0]——RAM的32位数据输入端;addr[4..0]——RAM的读出和写入地址;dataout[31..0]——RAM的32位数据输出端。四、实验内容1.RAM定制与ROM基本相同,实验步骤也类似。按图2-2-1输入电路图,同样使用工具MegaWizardPlug-InManager。设置地址总线宽度address[]和数据总线宽度q[],分别为5位和32位,并进行编译、仿真、引脚锁定、FPGA配置。2.注意,RAM也能加入初始化文件scdatamem.mif(数据存储器的初始化文件),注意此文件加入的路径表达和文件表达(图2-2-2):scdatamem.mif,(后缀mif要小写);同时择在系统读写RAM功能,RAM的ID名取为:ram2。3.通过键1、键2输入RAM的低8位数据(选择实验电路模式1),键3、键4输入存储器的5位地址。键8控制读/写允许,低电平时读允许,高电平时写允许;键7(CLK0)产生读/写时钟脉冲,即生成写地址锁存脉冲,对ram进行写/读操作。图2-2-1:五、实验环境与设备QuartusII软件,实验箱六、实验代码设计(含符号说明)ext8to32.vmoduleext8to32(a,s);input[7:0]a;output[31:0]s;assigns={4{a}};endmodule仿真波形:七、实验检验与测试通过键1、键2输入RAM的低8位数据(选择实验电路模式1),键3、键4输入存储器的5位地址。键8控制读/写允许,低电平时读允许,高电平时写允许;键7(CLK0)产生读/写时钟脉冲,即生成写地址锁存脉冲,对ram进行写/读操作。八、测试数据在实验箱上进行读写操作九、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等)1.如果发现电路图编译不能通过,首先检查电路元件是否有错误;如果无误,则检查器件名是否与项目名冲突。2.下载文件在实验箱上操作时,注意电路模式的选定,默认为0,需选择电路模式1。