第7章 宏功能模块的应用.ppt_第1页
第7章 宏功能模块的应用.ppt_第2页
第7章 宏功能模块的应用.ppt_第3页
第7章 宏功能模块的应用.ppt_第4页
第7章 宏功能模块的应用.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 宏功能模块的应用,【学习目标】 通过本章学习学生应了解宏功能模块LPM的含义及应用。重点掌握利用宏功能模块设计存储器、先入先出(FIFO)双口缓冲器、乘法器、嵌入式锁相环和正弦波信号发生器的方法;了解IP核的概念以及分类和复用。,7.1 宏功能模块概述,宏功能模块LPM:是参数可设置模块库的英语缩写(Library of Parameterized Modules),这些可以以图形或硬件描述语言模块形式方便调用的宏功能块,使得基于EDA技术的电子设计的效率和可靠性有了很大的提高。,7.1 宏功能模块概述,Altera公司提供的宏功能模块与LPM函数主要有: 算术组件:包括累加器、加法器

2、、乘法器和LPM算术函数。 门电路:包括多路复用器和LPM门函数。 I/O组件:包括时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)、千兆位收发器块(GXB)、LVDS接收器和发送器、PLL重新配置和远程更新宏功能模块。 存储器编译器:包括FIFO Partitioner、RAM和ROM宏功能模块。 存储组件:包括存储器、移位寄存器宏模块和LPM存储器函数。,7.2 存储器设计,7.2.1 ROM设计 在Quartus 中能接受的初始化数据文件有两种: Memory Initialization File(mif)格式 Hexadecimal (Intel-Format)File

3、(hex)格式,7.2 存储器设计,7.2.1 ROM设计 . 建立mif格式 首先在硬盘上建立一个工作文件夹,然后建立工程文件LMP_ROM并存放在该工作文件夹中。 在Quartus主界面下单击“File”菜单选择“New”命令,并在“New”对话框中单击“Other files”页面,如图7.1所示。,7.2 存储器设计,7.2.1 ROM设计,图7. 1 选择数据文件,7.2 存储器设计,图7.2 设置数据 图7.3 数据表,7.2.1 ROM设计,7.2 存储器设计,7.2.1 ROM设计 填入数据后如图.4所示 图7. 4 填入数据,7.2 存储器设计,7.2.1 ROM设计 用鼠标

4、右键单击窗口边缘的地址栏弹出格式选择窗口,可以从中选择不同的地址格式和数据格式。表中任意数据对应的地址为左列数和顶行数之和。 例如,表中任意一个数据对应的地址为左列,顶行,则地址为+, 若用进制表示为,表示存储器地址为内的数据为。完成数据输入后,保存文件并命名名为“rom.mif”。,7.2 存储器设计,7.2.1 ROM设计 2.制定ROM模块 步骤如下: ()在uartus 主界面下单击“ools”菜单,选择“egaWizard Plug_In Mange”命令,弹出如图7.5所示对话框。,7.2 存储器设计,图7. 5 创建新的宏模块,7.2.1 ROM设计,7.2 存储器设计,图 7.

5、 6 选择ROM宏模块,7.2.1 ROM设计,Memory Compliler,7.2 存储器设计,图7. 7 设置ROM的地址线位宽和数据线位,7.2.1 ROM设计,图7. 8 寄存器、使能信号等设置,数据位宽为8,数据个数,存储器类型:AUTO,7.2 存储器设计,7.2.1 ROM设计 (3)单击“Next”按钮后,弹出如图7. 9所示。的对话框进行数据文件的指定,在“Do you want to.”一栏中选择“Yes,use this file for the memory content data”选项并单击“Browse”按钮选择待指定的文件“rom.mif”。,7.2 存储器

6、设计,图7. 9 指定数据文件并命名,7.2 存储器设计,7.2.1 ROM设计 单击“Next”按钮后弹出如图7. 10所示的对话框,从而可以看到仿真库的信息。,图7. 10 仿真库的信息,7.2 存储器设计,7.2.1 ROM设计 单击“Next”按钮后,可以看到关于此ROM的信息概要,最后单击“Finish”按钮完成ROM的创建。,图7.11,7.2 存储器设计,7.2.1 ROM设计 (4) ROM创建完成后,将生成的文件为rom.vhd(既可以用于原理图编辑也可以用于顶层文件的实例化),将ROM文件夹中的rom.vhd打开,其代码如例7.1所示。 【例7.1】ROM的VHDL源代码

7、LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY lpm; USE lpm.all; ENTITY room IS PORT( address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); inclock : IN STD_LOGIC ; outclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); END room;,7.2 存储器设计,7.2.1 ROM设计 ARCHITECTURE SYN OF room IS SIGNAL sub_wire0

8、: STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT lpm_rom GENERIC ( intended_device_family : STRING; lpm_address_control : STRING; lpm_file : STRING; lpm_outdata : STRING; lpm_type : STRING; lpm_width : NATURAL; lpm_widthad : NATURAL); -接下页,自然数类型,字符串类型,类属参数说明:静态信息的设置,与常量的区别是常数只能从设计实体的内部得到赋值 且不能再改变 而类属的值可以由

9、设计实体外部提供且可以改变。,7.2 存储器设计,7.2.1 ROM设计 PORT (outclock : IN STD_LOGIC ; -接上页 address: IN STD_LOGIC_VECTOR (5 DOWNTO 0); inclock: IN STD_LOGIC ; q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); END COMPONENT; BEGIN q ACEX1K, lpm_address_control = REGISTERED, lpm_file = room.mif, lpm_outdata = REGISTERED, -接下页,7.2

10、存储器设计,7.2.1 ROM设计 lpm_type = LPM_ROM, lpm_width = 8, lpm_widthad = 6) PORT MAP ( outclock = outclock, address = address, inclock = inclock, q = sub_wire0 ); END SYN;,7.2 存储器设计,7.2.1 ROM设计 (5) 建立一个图形输入文件,然后点击左边(symbol tool)按钮 ,如图7.12所示。,图7.12,7.2 存储器设计,7.2.1 ROM设计 打开Library栏中的Project下的ROM,生成的电路符号见图7.

11、13所示。,图7.13,7.2 存储器设计,7.2.1 ROM设计 也可以对rom.vhd文件创建图元生成电路符号。其中,clock为时钟信号输入端,address5.0为地址输入端,q7.0为数据输出端。至此,对ROM的设置已经完成。接下来,在原理图编辑器中连接成如图7. 14所示电路。,7.2 存储器设计,7.2.1 ROM设计,图7. 14 完成ROM的原理图,7.2 存储器设计,7.2.1 ROM设计 进行编译和仿真,其功能仿真结果如图7. 15所示,,图7. 15 ROM的功能仿真结果,7.2 存储器设计,7.2.2 RAM设计 RAM的创建过程与ROM基本相同,同样使用“MegaW

12、izard Plug-In Manager”工具进行定制。进入图7. 6所示的对话框后,在左侧选择“Memory Complier”项下的“RAM:1-PORT选项,器件和语言根据需要进行选择,路径为lpm_ramramvhd(文件名为ramvhd)。,7.2 存储器设计,7.2.2 RAM设计,图7.17 RAM的参数设置,7.2 存储器设计,器件选择“ACEX1K”,数据宽度选择“8”位,数据数选择64,其他均按默认处理。后面的设置与ROM类似,有所不同的是RAM不需要指定数据文件。创建完成后生成相应的ramvhd文件,创建图元后生成的电路符号如图7.18所示。,7.2.2 RAM设计,7

13、.2 存储器设计,图7.18 RAM创建图元后生成的电路符号,7.2.2 RAM设计,7.2 存储器设计,其中,data7.0为数据输入端,we为读写使能端,address5.0为地址输入端,inclock 和outclock为时钟信号,q7.0为数据输出端。加入输入端口,完成RAM的电路原理图如图7.19所示。,7.2.2 RAM设计,7.2 存储器设计,图7. 19 完成RAM的原理图,7.2.2 RAM设计,7.2 存储器设计,7.2.2 RAM编译与仿真,图7.20 RAM的功能仿真结果,7.2 存储器设计,7.2.3 FIFO设计 FIFO(First-In First-Out)是一

14、个先入先出的双口缓冲储器器,FIFO存储器可以独立进行输人输出,也可以看成是一种双端口存储器,具有两个端口,但它与双端口存储器最大的不同就是一个端口专门用于写入操作,而另一个端口专门用于读取操作。而且,因为数据是按照写入的顺序被读出的,因而没有地址引脚,这也是与双端口存储器的不同之处。,7.2 存储器设计,7.2.3 FIFO设计 FIFO的设计方法与ROM、RAM的设计方法基本相同。同样使用“MegaWizard Plug-InManager”工具进行定制。进入对话框后,在左侧栏选择“Memory Complier”项下的“FIFO“选项,器件和语言根据需要进行选择,路径取为 D:lpm_f

15、ifofifovhd(文件名为fifovhd)。,7.2 存储器设计,图7.22 FIFO的参数设置对话框,7.2.3 FIFO设计,7.2 存储器设计,7.2.3 FIFO设计 器件选择“ACEX1K”,数据宽度选择“8”位,数据数选择“64”。单击“Next”按钮还可进行其他参数设置,在如图7.23所示的对话框中可以选择其他的输入输出端口,比如清零端等。在图7.24所示的对话框中可以进行优化方式等设置,这里选择了速度优化。,7.2 存储器设计,图7.23 输入/输出端口选择对话框,7.2.3 FIFO设计,7.2 存储器设计,图7.24 优化方式等设置,7.2.3 FIFO设计,7.2 存

16、储器设计,创建完成后生成的FIFO电路符号如图7.25所示。 其中,data7.0为数据输入端, wrreq为写入数据请求信号,rdreq 为读出数据请求信号,clock为时 钟信号,q7.0为数据输出端,full 为存储器溢出指示信号,empty为 FIFO空指示信号, usedw5.0为当前已使用的地址数指示, 图7.26 FIFO原理图 完成端口连接的FIFO原理图如图7.26所示。,7.2.3 FIFO设计,7.2 存储器设计,图7.26 完成端口连接的FIFO原理图,7.2.3 FIFO设计,7.2 存储器设计,图7.27 FIFO的功能仿真结果,7.2.3 FIFO设计,7.3 乘

17、法器设计,乘法器的创建过程与ROM、RAM等的创建过程类似,均使用“MegaWizard Plug-In Manager”工具进行定制。进入图7.29所示的对话框后,在左侧栏选择“Arithmetic”项下的“LPM_MULT”选项,器件和语言根据需要进行选择,路径取为D:.lpm_multmultvhd(文件名为multvhd)。,7.3 乘法器设计,图7.29 选择乘法器宏模块,7.3 乘法器设计,单击“Next”按钮后,弹出参数设置对话框,设置乘数和被乘数的位宽等选项,这里设为默认值,即乘数和被乘数的位宽均为“8”位。单击“Next”按钮进行其他参数设置,在对话框下选择由时钟控制。,7.

18、3 乘法器设计,图7.30 乘法器的参数设置,7.3 乘法器设计,图7.31 选择时钟控制,7.3 乘法器设计,创建完成后生成的电路符号如图7.32所示。其中,clock为时钟控制信号,dataa7.0为被乘数,datab7.0为乘数,result15.0为相乘后的结果。加入电路端口,完成原理图设计,如图7.33所示。,图7.32 乘法器 的电路符号,7.3 乘法器设计,图7.33 完成端口连接的乘法器原理图,7.3 乘法器设计,仿真结果,图 7.34 乘法器的功能仿真结果,7.4 锁相环设计,Quartus II中的锁相环宏模块也称为嵌入式锁相环,在Cyclone和stratix等系列的FP

19、GA中含有嵌入式锁相环。要对这种嵌入式锁相环进行调用,同样要使用“MegaWizard Plug-In Manager”工具定制。进入图7.36所示的对话框后,在左侧栏选择“I/O”项下的“ALTPLL”选项,器件选择Cyclone系列,路径可取为D:lmp_pllPll.vhd(文件名为Pll.vhd)。,7.4 锁相环设计,图7.36 选择锁相环模块,ALTPLL,7.4 锁相环设计,单击“Next”按钮后弹出参数设置对话框,进行器件、参考时钟频率 inclk0和工作模式的设置,这里器件选为“Cyclone”,参考时钟频率选为“100MHz“,工作模式选为“In Normal Mode”。

20、,7.4 锁相环设计,图7.37 锁相环的参数设置,7.4 锁相环设计,然后单击“Next”按钮,在此对话框中进行锁相环控制信号的选择,如使能控制pllena、异步复位areset等。单击“Next”按钮进行其他参数设置,其中在对话框中进行输出时钟信号的设置,首先选中“Use this clock”选项,表示选择了该输出时钟c0,然后在“Clock multipication”的设置栏中输入倍频因子,这里输入为1,时钟相移和占空比不变,保持默认数据。,7.4 锁相环设计,图7.38锁相环c0的参数,7.4 锁相环设计,在此后弹出的对话框中分别选用输出时钟端“c1”和“c2”,并将c1的分频因子

21、设为5,占空比设为60。将c2的倍频设为2将占空比设为70。,7.4 锁相环设计,图7.39锁相环c1的参数,7.4 锁相环设计,图7.40锁相环c2的参数,7.4 锁相环设计,创建完成后生成的电路符号如图7.41所示。其中,inclk0为参考时钟,areset为复位信号,pllena为锁相环片选信号,c0、c1、c2为输出的时钟端口,locked是相位锁定输出。完成锁相环的顶层原理图,如图7.42所示。 图7.41 锁相环的电路符号,7.4 锁相环设计,图7.42 完成端口连接的锁相环原理图,7.4 锁相环设计,图7.43 琐相环的时序仿真结果,7.5 正弦波信号发生器,1设计要求 设计一个

22、正弦波信号发生器,采用ROM宏功能模块进行一个周期的数据存储,并通过地址发生器产生正弦波信号。 2设计原理 采用6位二进制计数器作为地址发生 器;正弦波信号的数据ROM采用6位地址线和8位数据线;通过原理图编辑完成顶层设计;输出的数据通过8位DA转换成模拟信号。系统框图如7.44所示。,7.5 正弦波信号发生器,图7.44 正弦波信号发生器的系统框图,7.5 正弦波信号发生器,3.设计方法 采用混合编辑法,电路如图7.45所示。其中,counter模块为地址发生器,由VHDL程序实现,其输出端连接到ROM的地址端上。 图7.45 正弦波信号发生器电路图,7.5 正弦波信号发生器,【例7.2】c

23、ounter地址发生器的VHDL源代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port(clk:in std_logic; q:out std_logic_vector(5 downto 0); end; architecture str of counter is signal qa:std_logic_vector(5 downto 0); begin process(clk) begin if clkevent and clk=1 then qa=qa+1; -接右,-接左 end if; en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论