(3)用初始化存储器编辑窗口编辑lpm_ROM配置文件(文件名.mif)。原理图输入完成后,打开仿真器窗口Simulator,选择Initialize菜单中的Initialize Memory 选项,并在此编辑窗口中完成ROM数据的编辑,然后按Export File键,将文件以mif后缀存盘,文件名如图2-1-1所示是rom_a.mif。
(4)编译顶层工程原理图文件(文件名.gdf)。rom_a.mif中的数据恰好是后面要用的微指令码
(5)下载SOF文件至FPGA,改变lpm_ROM的地址a[5..0],外加读脉冲,通过实验台上的数码管比较读出的数据是否与初始化数据一致。
注,验证程序文件在LPM_ROM_DEMO4目录,工程名是2lpm_rom.gdf,下载2lpm_rom.sof至实验台上的FPGA,选择实验电路模式仍为NO.0,24位数据输出由数码8至数码3显示,6位地址由键2、键1输入,键1负责低4位,时钟CLK由键8控制。发光管8至1显示输入的6位地址值。
图2-1-1 lpm_ROM的结构图
图2-1-2 lpm_ROM的配置
四.实验要求
(1)实验前认真复习LPM-ROM存储器部分的有关内容。 (2)记录实验数据,写出实验报告,给出仿真波形图。 (3)通过本实验,对FPGA中EAB构成的LPM-ROM存储器有何认识,有什么收获?
五.思考题
(1)如何在图形编辑窗口中设计LPM-ROM存储器?怎样设计地址宽度和数据线的宽度?怎样导入LPM-ROM的设计参数文件和存储LPM-ROM的设计参数文件?
(2)怎样对LPM-ROM的设计参数文件进行软件仿真测试?(3)怎样在GW48实验台上对LPM-ROM进行测试?(4)学习LPM-ROM用VHDL语言的文本设计方法(顶层文件用VHDL表达)。
(5)了解LPM-ROM存储器占用FPGA中EAB资源的情况。
2.LPM_RAM_DP双端口RAM实验
一.实验目的
1、了解FPGA中双口lpm_ram_dp的功能, 2、掌握lpm_ram_dp的参数设置和使用方法, 3、掌握lpm_ram_dp作为随机存储器RAM的工作特性和读写方法。
- - 11
二.实验原理
在FPGA中利用嵌入式阵列块EAB可以构成存储器,lpm_ram_dp的结构如图2-2-1。数据从ram_dp的左边D[7..0]输入,从右边Q[7..0]输出,R/W——为读/写控制信号端。数据的写入:当输入数据和地址准备好以后,在CLK信号上升沿到来时,数据写入存储单元。数据的读出:从A[7..0]输入存储单元地址,在CLK信号上升沿到来时,该单元数据从Q[7..0]输出。为了便于使用实验台上的键盘输入数据,在lpm_ram_dp与键盘之间加了4个计数器,按一次键计数器加1,计数值由按键上方对应的数码管显示。
R/W——读/写控制端,高电平时进行读操作,低电平时进行写操作;
CLK——读/写时钟脉冲; DATA[7..0]——RAM-dp的8位数据输入端; A[7..0]——RAM的读出和写入地址; Q[7..0]——RAM-dp的8位数据输出端。
三.实验步骤
(1)按图2-2-2输入电路图。并进行编译、引脚锁定、FPGA配置。 (2)通过键1、键2输入RAM的8位数据(选择实验电路模式1),键3、键4输入存储器的8位地址。键8控制读/写,高电平时读允许,低电平时写允许;键7(CLK0)产生读/写时钟脉冲,即生成读地址和写地址锁存脉冲。对lpm_ram_dp进行写/读操作。
(3)在simulator窗口下,用Initialize Memory生成mif初始化数据,下载后进入RAM作为初始数据。 注,验证程序文件在DEMO5_lpm_ram目录,工程名是ram_dp1.gdf,下载ram_dp1.sof至实验台上的FPGA,选择实验电路模式为NO.1,按以上方式首先进行验证实验。首先控制读出初始化数据,与载入的初始化文件ram_dp1.mif中的数据进行比较,然后控制写入一些数据,再读出比较。
四.实验要求
(1)实验前认真复习运算器和存储器部分的有关内容;(2)写出实验报告。
五.思考题与实验题
(1)如何在图形编辑窗口中设计lpm_ram_dp存储器?怎样设定地址宽度和数据线的宽度?设计一数据宽度为6,地址线宽度为7的RAM,仿真检验其功能,并在FPGA上进行硬件测试。
(2)怎样在simulator窗口下,用Initialize Memory 功能对lpm_ram_dp数据初始化,如何导入和存储lpm_ram_dp参数文件?生成一个mif文件,并导入以上的RAM中。(3)怎样对lpm_ram_dp设计参数文件进行软件仿真测试?(4)使用VHDL文件作为顶层文件,学习lpm_ram_dp的VHDL语言的文本设计方法。(5)了解lpm_ram_dp存储器占用FPGA中EAB资源的情况。
(6)lpm_ram_dp存储器在CPU中有何作用?
图2-2-1 lpm_ram_dp的结构图
图2-2-2 lpm_ram_dp实验电路图
- - 12
3. FIFO读/写实验
一.实验目的
1、掌握FPGA中先进先出存储器lpm_fifo的功能,工作特性和读写方法。 2、了解FPGA中lpm_fifo的功能,掌握lpm_fifo的参数设置和使用方法, 3、掌握lpm_fifo作为先进先出存储器FIFO的工作特性和读写方法。
二.实验原理
FIFO(First In First Out)是一种存储电路,用来存储、缓冲在两个异步时钟之间的数据传输。使用异步FIFO可以在两个不同时钟系统之间快速而方便地实时传输数据。在网络接口、图像处理、CPU设计等方面,FIFO具有广泛的应用。在FPGA中利用嵌入式阵列块EAB可以构成存储器,lpm_fifo的结构如图2-3-1所示。
图2-3-1 lpm_fifo的实验结构图
WR — 写控制端,高电平时进行写操作; RD — 读控制端,高电平时进行读操作;
CLK — 读/写时钟脉冲; CLR — FIFO中数据异步清零信号; D [7..0] — lpm_fifo的8位数据输入端; Q[7..0] — lpm_fifo的8位数据输出端; U[7..0] — 表示lpm_fifo已经使用的地址空间。
图2-3-2 lpm_fifo的仿真波形图
三.实验步骤
1.编辑输入lpm_fifo实验电路(双击原理图2-3-1的FIFO元件,可进入该元件的编辑窗)。 2.将编译通过的文件下载到GW-48CPP实验台,实验台选择工作模式NO.0;
3.通过实验台上的KEY1、KEY2输入数据,键3控制写允许WR、键4控制读允许RD、键7控制数据清0、键8输入CLK信号,首先将数据写入LPM-FIFO。
4.在RD、CLK信号作用下,读出LPM-FIFO中数据,再读出比较,并观察U[7..0]的变化。
注,验证程序文件在DEMO6_lpm_fifo目录,工程名是fifo2.gdf,下载fifo2.sof至实验台上的FPGA,选择实验电路
模式为NO.0,按以上方式首先进行验证实验。
四.实验要求
1.实验前认真复习LPM-FIFO存储器部分的有关内容。 2.完成FIFO设计和验证,给出仿真波形图,增加“空”、“未满”、“满”的标志信号,写出实验报告。
五.思考题与实验题
1.通过本实验,对FPGA中EAB构成的LPM-FIFO存储器有何认识,有什么收获? 2.如何了解lpm_fifo存储器占用FPGA中EAB资源的情况?
- - 13
3.lpm_fifo存储器在CPU设计中有何作用?当lpm_fifo“空”“未满”、“满”、时,full、empty和usedw[7..0]d的输出信号如何变化?
4.怎样通过波形仿真了解LPM-FIFO存储器的功能? 5.如何设置LPM-FIFO存储器各项参数?
4. FPGA与外部RAM接口实验
一.实验目的
1.掌握FPGA与外部RAM的硬件接口技术; 2.通过FPGA控制,向外部RAM写入数据; 3.通过FPGA控制,从外部RAM读出数据,并且用数码管显示读出的数据。
二.实验原理
用FPGA与外部RAM接口,实现对外部RAM的读写控制。FPGA需要产生地址信号和读写控制信号,并且需要采用具有双向I/O功能的电路结构,实现对SRAM 数据端口输入/输出操作。接口电路主要由可增减地址计数器LPM_COUNTER、三态总线控制器LPM_BUSTRI、读写控制电路组成。实验电路结构如图2-4-1所示,外部RAM芯片为SRAM6264,存储容量为8KB。实验台选择模式NO.4电路结构。图2-4-1中FPGA与外部RAM端口信号以及实验台的控制信号定义如下: 输入信号:
CLK — 地址计数器计数脉冲输入端。通过K8输入(按两次键产生一个脉冲)。
CLR — 地址计数器复位信号输入端。由K7控制,高电平有效(注意,键7产生单脉冲信号)。 DATA[7..0] — RAM数据输入端,通过键2/键1:K1、K2输入(输入十六进制值显示在数码管2/数码管1上)。
R/W — RAM读/写控制信号输入端。当R/W=0时,RAM输出允
许;当R/W=1时,向RAM写数据允许,由单脉冲发生键6 ,K6控制。
输出及双向信号:
A[12..0] — FPGA输出的地址信号,由计数器LPM_COUNTER产生,与RAM地址线A9~A0相连。
D[7..0] — FPGA与RAM数据口之间的双向数据总线D7~D0。
OE — RAM数据输出允许控制信号,低电平有效。 WE — RAM数据写入控制信号,低电平有效。 LED[7..0] — 实验台上数码6、数码5,显示来自RAM的输出数据。 L[7..0] — 实验台上数码8、数码7,显示FPGA输送给RAM的
地址信号的低8位。
图2-5-1 EEPROM 28C64引脚
注,验证程序文件在DEMO7_ram6264_EEPROM2864目录,工程文件是
2864-b.gdf,下载2864-b.sof至实验台上的FPGA,选择实验电路模式为NO.4,按以下方式进行验证实验。
三.实验步骤
1.在实验台目标板上EEPROM/RAM插座中接SRAM6264芯片;
2.编辑、输入FPGA与外部RAM接口电路图;
3.将编译通过的文件(或验证程序下载文件2864-b.sof)下载到GW-48CPP实验台,实验台选择工作模式NO.4,参考实验讲义; 4.数据写入SRAM 6264
(1)利用键2,键1在RAM口放置数据,如5BH(显示于数码管2/1);按动一次或多次键8,输入希望的地址值(显示于数码管8/7);
(2)按动键6,即于RAM的WE端产生一个低电平脉冲;
(3)如果操作无误,这时应该在数码管6/5上显示已被写入的数据(如5BH),因为此时RAM的OE端的电平是0,正处于读数据电平。
(4)重复(1)—(3),依次写入数据。 5.读出外部RAM6264中数据
(1)按动键7,对地址计数器LPM_counter清0;
(2)连续按动键8,递增地址值,依次顺序读出外部RAM6264中已写入的数据,与输入数据进行
- - 14
比较。
图2-4-1 FPGA与外部RAM6264/EEPROM28C64接口电路结构
四.实验报告
(1)实验前认真复习CPU与存储器接口部分的有关内容;(2)写出实验预习报告;
五.思考题
1.FPGA如何与外部存储器双向数据总线接口?FPGA采用怎样的电路结构、如何控制双向数据口的数据输入/输出?
2.若要对任意指定存储单元进行读写,图2-4-1电路应如何修改?请在实验台上验证所设计的功能。 3.通过本实验,对CPU与外部存储器接口电路设计有何认识,有什么收获?
4.在计算机外部存储器的读写时序是怎样的?怎样使FPGA满足对外部RAM的读/写时序要求?
图2-4-2 FPGA与外部16位数据,18位地址线宽SRAM接口电路结构
六.16位SRAM读写逻辑设计
如果要设计16位数据总线的CPU,又要用到大容量的RAM,就必须外接具有16位数据口的RAM。 在实验板上与FPGA相接有一片256K字节的16位RAM:IDT71V416,电路连接如图2-4-3所示,他
- - 15