常用模块电路的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三常用模块电路的设计
一、实验目的:
1、掌握QuartusII宏功能模块的设计方法。
2、掌握VHDL设计ROM和RAM的方法。
3、掌握三态总线的设计与使用方法。
4、掌握4×4键盘扫描模块设计方法。
5、掌握PS2接口电路设计方法。
6、了解640×480VGA显示控制电路的原理和设计方法。
二、实验的硬件要求:
1、EDA/SOPC实验箱。
2、计算机。
三、实验原理
1、QuartusII宏功能模块应用
Altera提供多种方法来获取Altera Megafunction Partners Program(AMPP™)和
MegaCore®宏功能模块,这些函数经严格的测试和优化,可以在Altera特定器件结构中发挥出最佳性能。可以使用这些知识产权的参数化模块减少设计和测试的时间。MegaCore 和AMPP宏功能模块包括应用于通信、数字信号处理(DSP)、PCI和其它总线界面,以及存储器控制器中的宏功能模块。
Altera提供的宏功能模块与LPM函数有:
①算术组件:包括累加器、加法器、乘法器和LPM算术函数;
②门电路:包括多路复用器和LPM门函数。
③I/O组件:包括时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)、千兆位
收发器块(GXB)、LVDS接收器和发送器、PLL重新配置和远程更新宏功能模块。
④存储器编译器:包括FIFO Partitioner、RAM和ROM宏功能模块。
⑤存储组件:包括存储器、移位寄存器宏模块和LPM 存储器函数。
宏功能模块应用可以通过元件库中的“Megafunctions/LPM”或“MegaWizard Plug-In Manager”进行参数化设置并使用。其操作方法请参考“QuartusII基于宏功能模块的设计”。
2、ROM和RAM存储器设计
用FPGA实现ROM和RAM存储器可以用逻辑单元,也可以用内含的EAB/ESB,一般用VHDL直接构造存储器时用的是逻辑单元,对于内含EAB/ESB的FPGA芯片,使用“MegaWizard Plug-In Manager”定制存储器,可选择使用EAB/ESB,这样可以节约大量的逻辑单元。
一般较大规模的ROM和RAM使用“MegaWizard Plug-In Manager”定制,而较小规模,且有特殊特性要求时用VHDL直接构造。
3、
四、实验内容:
1、QuartusII宏功能模块实现ROM存储器模块
①新建一个原理图文件。
②使用“MegaWizard Plug-In Manager”向导,按图3.1的步骤定制一个32×8bit的ROM 模块。
③建立内存初始化文件
QuartusII 能接受的LPM_ROM 中的初始化数据文件的格式有 2 种:Memory Initialization File (.mif)格式和Hexadecimal(Intel-Format)File(.hex)格式。内存初始化文件可以手工编写,也可以用其它软件生成。本例数据量较小,可以在QuartusII中直接file →new→……Memory File→Memory Initialization File,然后填写每个存储单元的数据(如:
0~31依次递增)即可。
图3.1使用“MegaWizard Plug-In Manager ”定制ROM
④生成图3.2所示的ROM 模块添加管脚,编译并仿真测试。
选择ROM
模块
内存初始化
文件
图3.2 测试ROM 模块
2、QuartusII 宏功能模块实现RAM 存储器模块
RAM 与ROM 定制方法相似,按图3.3定制一个 32×8bit 一端口RAM ,该RAM 读写共用一个地址总线,“wren ”为写入信号,高电平有效。除了一端口RAM ,还有二端口、三端口RAM ,也可以采用读写地址总线分开的形式。还有一种形式,读写数据采用同一条总线,应使用三态总线,且读写控制必须分开进行。
图3.3 32×8bit 一端口RAM
图3.4为仿真波形,注意观察哪些地址位写入了什么数据?
图3.4 一端口RAM 仿真波形
3、用VHDL 设计ROM 和RAM
用VHDL 可以非常灵活地设计各种特性的存储器。图3.5和图3.6分别是实现ROM 和RAM 的VHDL 代码。
图3.5 一端口ROM 存储器VHDL 代码
图3.5的ROM 存储器采用组合逻辑电路方式设计,从下面的功能仿真波形可以看到,输出“d ”与地址“adr ”同步变化。请改用时序逻辑电路方式实现,该怎么描述?输出“d ”定义存储字子类型和数组类
型用于存储数据
与地址“adr”的时序关系是怎样的?
图3.6的RAM读写数据采用一条总线“d”,“d”应使用“inout”类型端口,注意代码中是如何描述三态总线的?(要点:没有数据输出的时候(只有wr=0并且cs=1时才输出数据),“d”应设置为高阻态,即释放总线,允许总线输入数据。)
图3.6 一端口RAM存储器VHDL代码
在仿真设置时,双向端口“d”设置的值是外部电路输入值,而“d”总线最终的值显示在d[i]~result上。在数据输出的时候(wr=0并且cs=1),“d”应设置为高阻态(即外部电路应释放总线)。图3.7为一端口RAM存储器仿真波形。图中,当cs=1、wr=1时(对应地址04~11)写入数据,此时应设置“d”总线的值(如04~11依次递增),数据被写入相应地址。其余时候“d”设置为高阻(“Z”)。cs=1、wr=0时读出数据,后面一段显示读出的各个地址位的数据(未写入数据的地方保持初始化的“0”),数据输出“d”与地址“adr”是否有延时?为什么?。cs=0(片选无效),无论wr的值是什么,总线都保持高阻态“Z”。
图3.7 一端口RAM存储器仿真波形
4、用ROM作为流水灯数据输入,并测试