quartusii基于宏功能模块的设计
- 格式:pdf
- 大小:3.37 MB
- 文档页数:27
实验3 宏功能模块的应用实验目的:熟悉Quartus Ⅱ的宏功能模块的应用。
实验工具:Quartus Ⅱ8.0 实验步骤: 工程设计步骤:实验内容:一、采用Quartus II 软件的宏功能模块lpm_counter 设计一个模为60的加法计数器,进行编译和仿真,查看仿真结果。
(1)原理图设计:如图3-1-1图3-1-1 模60加法计数器(2)综合模60加法计数器:如图 3-1-2图 3-1-2 模60加法计数器综合报告流动状态 软件版本 修复名称 顶层文件 器件系列所有逻辑资源所有寄存器 所有引脚 所有虚拟引脚 所有存储器 器件型号时间模型(3)功能仿真模60加法计数器功能仿真波形图:如图3-1-3图 3-1-3 模60加法计数器功能仿真结论:图3-3宏功能模块中从上到下有以下几个引脚:异步清零端,时钟使能端,时钟,同步置数端使能端,计数使能端,计数方向,置数输入端,输出端,进位输出端。
每个端口功能如图3-3解释,每个端口都实现了理论中的功能,所以功能仿真成功。
(4)时序仿真模60加法计数器时序仿真波形图:如图3-1-4图 3-1-4模60加法计数器时序仿真结论:图3-4中时序仿真的引脚与图3-3相同,每个引脚实现的功能与图3-3相一致。
所不同的是在时序仿真中输出出现了微小的延时,并且输出之间出现了许多细小的毛刺,在进位输出端也出现了一个明显的毛刺。
不过整体仿真的结果是正确的。
最大工作频率:310.37MHz 如图 3-1-5图 3-1-5 最大工作频率延时情况:注:tsu(建立时间),th(保持时间),tco(时钟至输出延时),tpd(引脚至引脚延时)tpd(引脚至引脚延时)tsu(建立时间)tco(时钟至输出延时)th(保持时间)二、先利用LPM_ROM设计8位×8位乘法器,进行编译和仿真,查看仿真结果。
(1)原理图设计:1、用MATLAB产生一个8_8_mult_rom.mif文件。
QUARTUSⅡ10.0使用入门1.建立工程运行QuatrusII软件(以下简称Q2),建立工程,File->New Project Wizad如下图点击New Project Wizard 后弹出指定工程名的对话框,在Diectory, Name, Top-Level Entity中如下图填写:按Next按钮,出现添加工程文件的对话框:在这里我们先不用管它,直接按Next进行下一步,选择FPGA器件的型号:栏选上“Show Advanced Devices”以显示所有的器件型号。
点击Next出现对话框:这里是选择其它EDA工具的对话框,我们用Q2的集成环境进行开发,因此这里不作任何改动。
按Next进入工程的信息总概对话框:按Finish按钮即建立一个空项目。
2.建立顶层图执行File->New,弹出新建文件对话框:选择“Block Diagram Schematic File”按OK即建立一个空的顶层图,缺省名为“Block1.bdf”,我们把它另存为(File->Save as),接受默认的文件名,并将“Add file to current project”选项选上,以使该文件添加到工程中去。
如图所示:3.添加逻辑元件(Symbol)双击顶层图图纸的空白处,弹出添加元件的对话筐:在Libraries里寻找所需要的逻辑元件,如果知道逻辑元件的名称的话,也可以直接在Name一栏敲入名字,右边的预览图即可显示元件的外观,按OK后鼠标旁边即拖着一个元件符号,在图纸上点击左键,元件即安放在图纸上。
在图纸上分别添加非门(not)、输入(input)、输出(output)三个symbol,如图所示:连线,将鼠标移到symbol连线端口的那里,鼠标变成图示模样:,按下左键拖动鼠标到另一个symbol的连线端。
本例中,这三个symbol的连线如下图所示:分别双击input和output symbol的名字“pin_name”、“pin_name1”,将它们的名字改为Key1,LED1:4.分配管脚为芯片分配管脚可以用QuartusII软件里的“Assignments->Pins”菜单,也可以用tcl脚本文件。
第4章基于宏功能模块的设计u 乘法器模块u 计数器模块u 锁相环模块u 存储器模块u其他模块内容第4章基于宏功能模块的设计4.1乘法器模块Megafunction库是Altera提供的参数化模块库。
从功能上看,可以把Megafunction库中的元器件分为:u算术运算模块(arithmetic)u逻辑门模块(gates)u储存模块(storage)u IO模块(I/O)算数运算模块库参数化乘法器lpm_mult宏功能模块的基本参数表lpm_mult(1)调用lpm_mult(2)lpm_mult参数设置输入输出位宽设置乘法器类型设置(3)编译仿真8位有符号乘法器电路功能仿真波形4.3 计数器模块计数器输出端口宽度和计数方向设置计数器模和控制端口设置更多控制端口设置模24方向可控计数器电路lpm_counter 计数器功能仿真波形4.5锁相环模块参数化锁相环宏模块altpll以输入时钟信号作为参考信号实现锁相,从而输出若干个同步倍频或者分频的片内时钟信号。
与直接来自片外的时钟相比,片内时钟可以减少时钟延迟,减小片外干扰,还可改善时钟的建立时间和保持时间,是系统稳定工作的保证。
不同系列的芯片对锁相环的支持程度不同,但是基本的参数设置大致相同,下面便举例说明altpll的应用。
(1)输入altpll宏功能模块选择芯片和设置参考时钟锁相环控制信号设置输入时钟设置(2)编译和仿真锁相环电路功能仿真波形4.6存储器模块ROM(Read Only Memory,只读存储器)是存储器的一种,利用FPGA可以实现ROM的功能,但其不是真正意义上的ROM,因为FPGA器件在掉电后,其内部的所有信息都会丢失,再次工作时需要重新配置。
Quartus II提供的参数化ROM是lpm_rom,下面用一个乘法器的例子来说明它的使用方法,这个例子使用lpm_rom构成一个4位×4位的无符号数乘法器,利用查表方法完成乘法功能。
Quartus II开发软件中的宏模块--存储器宏模块Quartus II开发软件中的宏模块--存储器宏模块RAM宏模块宏模块名称功能描述csdpram 参数化循环共享双端口RAMlpm_ram_dp 参数化双端口RAMlpm_ram_dq 参数化RAM,输入/输出端分离lpm_ram_io 参数化RAM,输入/输出端公用一个端口FIFO宏模块宏模块名称功能描述csfifo 参数化循环共享FIFOdcfifo 参数化双时钟FIFOscfifo 参数化单时钟FIFOlpm_fifo 参数化单时钟FIFOlpm_fifo_dc 参数化双时钟FIFOROM的设计lpm_romQuartus II开发软件中的宏模块--时序电路宏模块Quartus II开发软件中的宏模块--时序电路宏模块触发器宏模块名称功能描述lpm_ff 参数化D或T触发器lpm_dff 参数化D触发器和移位寄存器lpm_tff 参数化T触发器enadff 带使能端的D触发器expdff 用扩展电路实现的D触发器7470 带预置和清零端的与门JK触发器7471 带预置端的JK触发器7472 带预置和清零端的与门JK触发器7473 带清零端的双JK触发器7474 带异步预置和异步清零端的双D触发器7476 带异步预置和异步清零端的双JK触发器7478 带异步预置、公共清零和公共时钟端的双JK触发器74107 带清零端的双JK触发器74109 带预置和清零端的双JK触发器74112 带预置和清零端的双JK时钟下降沿触发器74113 带预置端的双JK时钟下降沿触发器74114 带异步预置、公共清零和公共时钟端的双JK时钟下降沿触发器74171 带清零端的4D触发器74172 带三态输出的多端口寄存器74174 带公共清零端的16进制D触发器74174b 带公共清零端的16进制D触发器74175 带公共时钟和清零端的4D触发器74273 带异步清零端的8进制触发器74273b 带异步清零端的8进制触发器74276 带公共预置和清零端的4JK触发器寄存器74374 带三态输出和输出使能端的8进制D触发器74374b 带三态输出和输出使能端的8进制D触发器74376 带公共时钟和公共清零端4JK触发器74377 带使能端的8进制D触发器74377b 带使能端的8进制D触发器74378 带使能端的16进制D触发器74379 带使能端的4D触发器74396 8进制存储寄存器74548 带三态输出的8位两级流水线寄存器74670 带三态输出的4位寄存器74821 带三态输出的10位总线接口触发器74821b 带三态输出的10位D触发器74822 带三态反相输出的10位总线接口触发器74822b 带三态反相输出的10位D触发器74823 带三态输出的9位总线接口触发器74823b 带三态输出的9位D触发器74824 带三态反相输出的9位总线接口触发器74824b 带三态反相输出的9位D触发器74825 带三态反相输出的8位总线接口触发器74825b 带三态输出的8进制D触发器74826 带三态反相输出的9位总线接口触发器74826b 带三态反相输出的8进制D触发器锁存器宏模块名称功能描述lpm_latch 参数化锁存器explatch 用扩展电路实现的锁存器Inpltch 用扩展电路实现的输入锁存器nandltch 用扩展电路实现的SR(非)与非门锁存器norltch 用扩展电路实现的SR或非门锁存器7475 4位双稳态锁存器7477 4位双稳态锁存器74116 带清零端的双4位锁存器74259 带清零端、可设定地址的锁存器74279 4路SR(非)锁存器74373 带三态输出的8进制透明D锁存器74373b 带三态输出的8进制透明D锁存器74549 8位二级流水线锁存器74604 带三态输出的8进制2输入多路锁存器74841 带三态输出的10位总线接口D锁存器74841b 带三态输出的10位总线接口D锁存器74842 带三态输出的10位总线接口D锁存器74842b 带三态输出的10位总线接口D反相锁存器74843 带三态输出的9位总线接口D锁存器74844 带三态输出的9位总线接口D反相锁存器74845 带三态输出的8位总线接口D锁存器74846 带三态输出的8位总线接口D反相锁存器74990 8位透明读回锁存器计数器宏模块名称功能描述lpm_conter 参数化计数器(仅限FLEX系列器件)gray4 格雷码计数器unicnt 通用4位加/减计数器,可异步设置、读取、清零和级联的左/右移位寄存器16cudslr 16位2进制加/减计数器,带异步设置的左/右移位寄存器16cudsrb 16位2进制加/减计数器,带异步清零和设置的左/右移位寄存器4count 4位2进制加/减计数器,同步/异步读取,异步清零8count 8位2进制加/减计数器,同步/异步读取,异步清零7468 双10进制计数器7469 双12进制计数器7490 10/2进制计数器7492 12进制计数器7493 4位2进制计数器74143 4位计数/锁存器,带7位输出驱动器74160 4位10进制计数器,同步读取,异步清零74161 4位2进制加法计数器,同步读取,异步清零74162 4位2进制加法计数器,同步读取,同步清零74163 4位2进制加法计数器,同步读取,同步清零74168 同步4位10进制加/减计数器74169 同步4位2进制加/减计数器74176 可预置10进制计数器74177 可预置2进制计数器74190 4位10进制加/减计数器,异步读取74191 4位2进制加/减计数器,异步读取74192 4位10进制加/减计数器,异步清零74193 4位2进制加/减计数器,异步清零74196 可预置10进制计数器74197 可预置2进制计数器74290 10进制计数器74292 可编程分频器/数字定时器74293 2进制计数器74294 可编程分频器/数字定时器74390 双10进制计数器74393 双4位加法计数器,异步清零74490 双4位10进制计数器74568 10进制加/减计数器,同步读取,同步和异步清零74569 2进制加/减计数器,同步读取,同步和异步清零74590 8位2进制计数器,带三态输出寄存器74592 8位2进制计数器,带输入寄存器74668 同步10进制加/减计数器74669 同步4位2进制加/减计数器74690 同步10进制计数器,带输出寄存器,多重三态输出,异步清零74691 同步2进制计数器,带输出寄存器,多重三态输出,异步清零74693 同步2进制计数器,带输出寄存器,多重三态输出,同步清零74696 同步10进制加/减计数器,带输出寄存器,多重三态输出,异步清零74697 同步2进制加/减计数器,带输出寄存器,多重三态输出,异步清零74698 同步10进制加/减计数器,带输出寄存器,多重三态输出,同步清零74699 同步2进制加/减计数器,带输出寄存器,多重三态输出,同步清零分频器宏模块名称功能描述Freqdiv 2,4,8,16分频器7456 双时钟5,10分频器7457 双时钟5,6,10分频器多路复用器宏模块名称功能描述lpm_mux 参数化多路复用器2lmux 2线-1线多路复用器16lmux 16线-1线多路复用器2X8mux 8位总线的2线-1线多路复用器8lmux 8线-1线多路复用器74151 8线-1线多路复用器74151b 8线-1线多路复用器74153 双4线-1线多路复用器74157 四2线-1线多路复用器74158 带反相输出的四2线-1线多路复用器74251 带三态输出的8线-1线数据选择器74253 带三态输出的双4线-1线数据选择器74257 带三态输出的四2线-1线多路复用器74258 带三态反相输出的四2线-1线多路复用器74298 带存储功能的四2输入多路复用器74352 带反相输出的双4线-1线数据选择器/多路复用器74353 带三态反相输出的双4线-1线数据选择器/多路复用器74354 带三态输出的8线-1线数据选择器/多路复用器74356 带三态输出的8线-1线数据选择器/多路复用器74398 带存储功能的四2输入多路复用器74399 带存储功能的四2输入多路复用器移位寄存器宏模块名称功能描述lpm_clshift 参数化组合逻辑移位器lpm_shiftreg 参数化移位寄存器barrelst 8位桶形移位器barrlstb 8位桶形移位器7491 串入串出移位寄存器7494 带异步预置和异步清零端的4位移位寄存器7495 4位并行移位寄存器7496 5位移位寄存器7499 带JK串入串出端的4位移位寄存器74164 串入并出移位寄存器74164b 串入并出移位寄存器74165 并行读入8位移位寄存器74165b 并行读入8位移位寄存器74166 带时钟禁止端的8位移位寄存器74178 4位移位寄存器74179 带清零端的4位移位寄存器74194 带并行读入端的4位双向移位寄存器74195 4位并行移位寄存器74198 8位双向移位寄存器74199 8位双向移位寄存器74295 带三态输出端的4位左右移位寄存器74299 8位通用移位/存储寄存器74350 带三态输出端的4位移位寄存器74395 带三态输出端的4位可级联移位寄存器74589 带输入锁存和三态输出端的8位移位寄存器74594 带输入锁存的8位移位寄存器74595 带输入锁存和三态输出端的8位移位寄存器74597 带输入寄存器的8位移位寄存器74671 带强制清零和三态输出端的4位通用移位寄存器/锁存器Quartus II开发软件中的宏模块--运算电路宏模块Quartus II开发软件中的宏模块--运算电路宏模块加法器和减法器宏模块名称功能描述lpm_add_sub 参数化加法器/减法器8fadd 8位全加器8faddb 8位全加器7480 门控全加器7482 2位2进制全加器7483 带快速进位的4位2进制全加器74183 双进位存储全加器74283 带快速进位的4位全加器74385 带清零端的4位加法器/减法器乘法器宏模块名称功能描述lpm_mult 参数化乘法器mult2 2位带符号数乘法器mult24 2X4位并行2进制乘法器mult4 4位并行2进制乘法器mult4b 4位并行2进制乘法器tmult4 4X4位并行2进制乘法器7497 同步6位速率乘法器74261 2位并行2进制乘法器74284 4X4位并行2进制乘法器(输出结果的最高4位)74285 4X4位并行2进制乘法器(输出结果的最低4位)除法器divide和lpm_divide绝对值运算lpm_abs数值比较器宏模块名称功能描述lpm_compare 参数化比较器8mcomp 8位数值比较器8mcompb 8位数值比较器7485 4位数值比较器74518 8位恒等比较器74518b 8位恒等比较器74684 8位数值/恒等比较器74686 8位数值/恒等比较器74688 8位恒等比较器编码器模块名称功能描述74147 10线-3线BCD编码器74148 8线-3线8进制编码器74384 带三态输出的8线-3线优先权编码器译码器宏模块名称功能描述lpm_decode 参数化译码器16dmux 4位2进制-16线译码器16ndmux 4位2进制-16线译码器7442 1线-10线BCD-10进制译码器7443 余3码-10进制译码器7444 余3格雷码-10进制译码器7445 BCD码-10进制译码器7446 BCD码-7段译码器7447 BCD码-7段译码器7448 BCD码-7段译码器7449 BCD码-7段译码器74137 带地址锁存的3线-8线译码器74138 3线-8线译码器74139 双2线-4线译码器74145 BCD码-10进制译码器74154 4线-16线译码器74155 双2线-4线译码器/多路输出选择器74156 双2线-4线译码器/多路输出选择器74246 BCD码-7段译码器74247 BCD码-7段译码器74248 BCD码-7段译码器74445 BCD码-10进制译码器奇偶校验器宏模块名称功能描述74180 9位奇偶产生器/校验器74180b 9位奇偶产生器/校验器74280 9位奇偶产生器/校验器74280b 9位奇偶产生器/校验器。
第4章基于宏功能模块的设计
u 乘法器模块u 计数器模块
u 锁相环模块
u 存储器模块
u
其他模块内容第4章
基于宏功能模块的设计
4.1乘法器模块
Megafunction库是Altera提供的参数化模块库。
从功能上看,可以把Megafunction库中的元器件分为:
u算术运算模块(arithmetic)
u逻辑门模块(gates)
u储存模块(storage)
u IO模块(I/O)
算数运算模块库
参数化乘法器lpm_mult
宏功能模块的基本参数表
lpm_mult
(1)调用lpm_mult
(2)lpm_mult参数设置
输入输出位宽设置乘法器类型设置
(3)编译仿真
8位有符号乘法器电路
功能仿真波形
4.3 计数器模块
计数器输出端口宽度和计数方向设置
计数器模和控制端口设置
更多控制端口设置
模24
方向可控计数器电路
lpm_counter 计数器功能仿真波形
参数化锁相环宏模块altpll 以输入时钟信号作为参考信号实现锁相,从而输出若干个同步倍频或者分频的片内时钟信号。
与直接来自片外的时钟相比,片内时钟可以减少时钟延迟,减小片外干扰,还可改善时钟的建立时间和保持时间,是系统稳定工作的保证。
不同系列的芯片对锁相环的支持程度不同,但是基本的参数设置大致相同,下面便举例说明altpll 的应用。
4.5 锁相环模块
(1)输入altpll宏功能模块
选择芯片和设置参考时钟
锁相环控制信号设置
输入时钟设置
(2)编译和仿真
锁相环电路
功能仿真波形
ROM (Read Only Memory ,只读存储器)是存储器的一种,利用FPGA 可以实现ROM 的功能,但其不是真正意义上的ROM ,因为FPGA 器件在掉电后,其内部的所有信息都会丢失,再次工作时需要重新配置。
Quartus II 提供的参数化ROM 是lpm_rom ,下面用一个乘法器的例子来说明它的使用方法,这个例子使用lpm_rom 构成一个4位×4位的无符号数乘法器,利用查表方法完成乘法功能。
4.6 存储器模块
数据线、地址线宽度设置
控制端口设置
添加.mif文件
如下图所示就是基于ROM实现的4位×4位的无符号数乘法器电路图,其参数设置为:
LPM_WIDTH=8
LPM_WIDTHAD=8
LPM_FILE=mult_rom.mif
仿真结果
4.7其他模块
Maxplus2库主要由74系列数字集成电路组成,包括时序电路宏模块和运算电路宏模块两大类,其中时序电路宏模块包括触发器、锁存器、计数器、分频器、多路复用器和移位寄存器,运算电路宏模块包括逻辑预算模块、加法器、减法器、乘法器、绝对值运算器、数值比较器、编译码器和奇偶校验器。
对于这些小规模的集成电路,在数字电路课程中有详细的介绍。
他们的调入方法和Megafunction库中的宏模块是一样的,只是端口和参数无法设置。
计数器74161设计举例
模10计数器
仿真结果
模10计数器仿真波形
4.1 采用Quartus II 软件的宏功能模块lpm_counter 设计一个模为60的加法计数器,进行编译和仿真,查看仿真结果。
4.2 采用Quartus II 软件的宏功能模块lpm_rom ,用查表的方式设计一个实现两个8位无符号数加法的电路,并进行编译和仿真。
4.3 先利用LPM_ROM 设计4位×4位和8位×8位乘法器各一个,然后用Verilog 语言分别设计4位×4位和8位×8位乘法器,比较两类乘法器的运行速度和资源耗用情况。
4.4 用数字锁相环实现分频,假定输入时钟频率为10MHz ,想要得到6MHz 的时钟信号,试用altpll 宏功能模块实现该电路。
习题。