常用模块电路的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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作为流水灯数据输入,并测试

相关文档
最新文档