硬件描述语言与FPGA设计技术第6章-宏功能模块与IP应用课件.ppt
-
资源ID:73605780
资源大小:1.82MB
全文页数:66页
- 资源格式: PPT
下载积分:12金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
硬件描述语言与FPGA设计技术第6章-宏功能模块与IP应用课件.ppt
第第6章章 宏功能模块与宏功能模块与IP应用应用LPM是Library of Parameterized Modules(参数可设置模块库)的缩写,Altera提供的可参数化宏功能模块和LPM函数均基于Altera器件的结构做了优化设计。在许多实际情况中,必须利用宏功能模块才可以使用一些Altera特定器件的硬件功能。例如各类片上存储器、DSP模块、LVDS驱动器、嵌入式PLL以及SERDES和DDIO 电路模块等。这些可以以图形或硬件描述语言模块形式方便调用的宏功能块,使得基于EDA技术的电子设计的效率和可靠性有了很大的提高。6.1 LPM存储器设计存储器设计接下页6.1.1 ROM模块设计模块设计1建立初始化数据文件建立初始化数据文件 初始化数据文件即写入初始化数据文件即写入ROM中的波形数据文件。中的波形数据文件。QuartusII能接受能接受的的LPM_ROM模块中的初始化数据文件的格式有两种:模块中的初始化数据文件的格式有两种:nMemory Initialization File(.mif)格式)格式nHexadecimal(Intel-Format)File(.hex)格式。)格式。实际应用中只要使用其中一种格式的文件即可。实际应用中只要使用其中一种格式的文件即可。(1)建立.mif格式文件 Quartus II mif文件编辑器 2.LPM_ROM设计nLPM_ROM设计首先利用 MegaWizard Plug-In Manager定制正弦信号数据ROM宏功能块,并将以上的波形数据加载于此ROM中。设计步骤如下:(1)打开MegaWizard Plug-In Manager初始对话框。(3)选择指定路径上的文件sin2.mif。n在图 6-8 的“Do you want to.”栏选择“Yes,use this the memory content data”项,并按Browse钮,选择指定路径上的文件sin2.mif。设计完成的LPM_ROM模块 RAM模块的仿真波形 n定制完成后,直接测试可进行以下操作n退出定制界面,file-new,调入定制的文本文件(VHDL)-save as(这样可方便生成工程)-产生工程,以下过程与新建project相同 FIFO模块的仿真波形 6.2 DSP模块构建乘法器模块构建乘法器乘法器仿真波形 6.3 正弦信号发生器设计正弦信号发生器设计作为LPM_ROM的应用实例,利用前面设计完成的LPM_ROM构成一个正弦信号发生器。正弦信号发生器的结构由四个部分组成:n(1)计数器或地址发生器(这里选择7位)。n(2)正弦信号数据ROM(7位地址线,8位数据线),含有128个8位数据(一个正弦周期)。n(3)电路顶层设计模块。n(4)8位D/A(硬件系统中可用DAC0832模数转换器件)。正弦信号发生器顶层模块 电路模块仿真波形 6.3.2使用嵌入式逻辑分析仪测使用嵌入式逻辑分析仪测试数据波形试数据波形n用嵌入式逻辑分析仪SignalTap II对FPGA内部信号进行分析测试。这里SignalTap II的参数设置为:采样深度是4K;采用时钟是信号源的时钟 CLK;触发信号是计数时钟使能信号CLK_EN,触发模式是E=1上升沿触发采样。SignalTap II测试正弦信号发生器波形 6.4在系统存储器数据读写编辑在系统存储器数据读写编辑器应用器应用n利用Quartus II的在系统(In-System)读写编辑器,对于CycloneII/III等系列的FPGA,只要对使用的LPM_ROM或LPM_RAM模块适当设置,就能直接通过JTAG口读取或改写 FPGA内处于工作状态的存储器中的数据,读取过程不影响FPGA的正常工作。6.4.2读取读取ROM中的波形数据中的波形数据 从FPGA中ROM读取的波形数据 6.4.3 ROM写入数据写入数据ROM数据修改后SignalTap II的釆样波形 6.5 IP核核NCO数控振荡器设计数控振荡器设计n基于Quartus II和DSP Builder的MegaCore有多种,如FIR数字滤波器、FFT离散 信号快速傅里叶变换器、NCO数控振荡器(可作为实现DSP、数字调制解调器、FSK 的重要部件),PCI总线核、CSC色彩格式变换器核(用于电视与VGA色彩编码方式相 互变换)、Viterbi译码器(最大相似译码器,用于对卷积码的解码)IP核等。n下面以数控振荡器NCO(Numerically Controlled Oscillators)核的设置使用为例,介绍利用Quartus II使用IP核的方法。IP核NCO选择界面 IP核NCO选择界面 NCO参数设置窗 NCO Implementation参数设置窗 6.5.4生成仿真文件生成仿真文件6.5.5加入加入IP授权文件授权文件n加入NCO授权文件和Quartus II授权文件。这里设授权文件位置路径:C:altera90license.DAT。有了授权文件,在Option对话框的Licensed AMPP/MegaCore functions 栏中可以看到FIR、PCI、NCO等IP的授权码,这样就可以编译出能够写Flash的SOF文件。也可以先转变为间接配置编程文件写入EPCS Flash。6.5.6编译与功能检测编译与功能检测 NCO32模块的测试电路 嵌入式逻辑分析仪测试波形 6.6 LPM嵌入式锁相环设计嵌入式锁相环设计 nAltera 的FPGA器件CycloneII/III/IV及StraixII/III/IV等系列中含有高性能的嵌入式模拟锁相环,其性能远优于普通数字锁相环。这些锁相环PLL可以与一输入的时钟信号同步,并以其作为参考信号实现锁相,从而输出一至多个同步倍频或分频的片内时钟,以供逻辑系统应用。与直接来自外部的时钟相比,这种片内时钟可以减少时钟延时和时钟变形,减少片外干扰;还可以改善时钟的建立时间和保持时间,是系统稳定工作的保证。6.6.1建立嵌入式锁相环元件建立嵌入式锁相环元件设置锁相环输入参考时钟inclk0为20MHz选择控制信号 选择输出频率c0为0.00258MHz 嵌入式锁相环时钟正弦信号发生器电路 6.6.2锁相环仿真测试和硬件特锁相环仿真测试和硬件特性性 锁相环仿真波形 部分Cyclone系列FPGA的下限至上限的频率范围:nCyclone系列FPGA的PLL:20MHz至270MHz;nCycloneII系列FPGA的PLL:10MHz至400MHz;nCycloneIII系列FPGA的PLL:2KHz至1300MHz;nCycloneIV系列FPGA的PLL:2KHz至1000MHz。其中从CycloneIII系列FPGA起,嵌入式PLL的输出频域大幅度扩展,为高质量的数字系统设计提供了很好的支持。6.7 8051单片机单片机IP软核应用软核应用n已经广为熟悉的89C51或与其兼容的单片机基本配置有ROM和RAM。在FPGA中,调用8051软核并接上ROM和RAM后就成为一个完整的51单片机,本节以此为例介绍8051软核在FPGA中的设计与使用方法。基本8051CPU核应用电路 LPM_RAM参数设置 LPM_ROM设置 单片机双向端口电路 设置FPGA的总线口输出为上拉 LPM_ROM初始化文件路径 6.8 LPM模块的文本调用模块的文本调用 n参数设置好的LPM宏功能模块可以在图形方式中调用,也可以采用文本方式调用,这就是宏功能模块进行例化。6.8.1在在Quartus II中对宏功中对宏功能模块进行例化能模块进行例化n对宏功能模块例化的途径有多种,如可以在Block Editor中直接例化;在HDL代码中例化(通过端口和参数定义例化,或使用MegaWizard Plug-In Manager对宏功能模块进 行参数化并建立包装文件),也可以通过界面,在Quartus II中对Altera宏功能模块和LPM 函数进行例化。6.8.2 LPM模块的模块的VHDL文本文本方式调用方式调用n可以使用MegaWizard Plug-In Manager建立宏功能模块或自定义宏功能模块变量。再利用MegaWizard Plug-In Manager建立包含宏功能模块实例的VerilogHDL或VHDL 包装文件,然后,可以在设计中使用此文件。对于VHDL宏功能模块,MegaWizard Plug-In anager还建立组件申明文件。n可以提供使用端口和参数定义,采用或调用任何其他模块或组件相类似方法调用函数,直接在VerilogHDL或 VHDL设计中对宏功能模块进行例化。在VHDL中,还需要使用组件申明。在VHDL 中例化方法如下:1.打开LPM模块文本并测试n定制好LPM模块后应将其设置成工程进行仿真测试,以确保其功能的可靠,并熟悉该元件的时序情况。对于LPM_ROM应当通过仿真了解数据文件是否己被加载进去。n【例6-2】正弦波形数据ROM文件nLIBRARY ieee;nUSE ieee.std_logic_1164.all;nLIBRARY altera_mf;nUSE altera_mf.altera_mf_components.all;-使用宏功能库中的所有元件nENTITY sin2_rom ISnPORT(address :IN STD_LOGIC_VECTOR(5 DOWNTO 0);n inclock :IN STD_LOGIC;nq :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);nEND sin2_rom;nARCHITECTURE SYN OF sin2_rom ISnSIGNAL sub_wire0:STD_LOGIC_VECTOR(7 DOWNTO 0);nCOMPONENT altsyncram -例化altsyncram元件,调用了LPM模块altsyncram nGENERIC(-参数传递语句nintended_device_family:STRING;-类属参量数据类型定义 nwidth_a:NATURAL;n widthad_a:NATURAL;nnumwords_a:NATURAL;n operation_mode:STRING;noutdata_reg_a:STRING;n address_aclr_a:STRING;noutdata_aclr_a:STRING;n width_byteena_a:NATURAL;ninit_file:STRING;n lpm_hint:STRING;nlpm_type:STRING);nPORT(clock0:IN STD_LOGIC;-altsyncram元件接口声明 naddress_a:IN STD_LOGIC_VECTOR(5 DOWNTO 0);n q_a:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);nEND COMPONENT;nBEGINnq Cyclone,-参数传递映射 nwidth_a=8,-数据线宽度8nwidthad_a=6,-地址线宽度6nnumwords_a=64,-数据数量64noperation_mode=ROM,-LPM模式ROMnoutdata_reg_a=UNREGISTERED,-输出无锁存naddress_aclr_a=NONE,-无异步地址清0noutdata_aclr_a=NONE,-无输出锁存异步清0nwidth_byteena_a=1,-byteena_a输入口宽度1ninit_file=./wave_edit/SIN2.mif,-ROM初始化数据文件nlpm_hint=ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=NONE,nlpm_type=altsyncram)-LPM类型nPORT MAP(clock0=inclock,address_a=address,q_a=sub_wire0);nEND SYN;2.编写VHDL顶层设计文件并仿真nLIBRARY IEEE;-正弦信号发生器源文件nUSE IEEE.STD_LOGIC_1164.ALL;nUSE IEEE.STD_LOGIC_UNSIGNED.ALL;nENTITY SIN_LPM_ROM ISn PORT(CLK :IN STD_LOGIC;-信号源时钟n DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-8位波形数据输出nEND;nARCHITECTURE BHV OF SIN_LPM_ROM ISnCOMPONENT sin2_rom -调用波形数据存储器LPM_ROM文件:data_rom.vhd声明n PORT(address:IN STD_LOGIC_VECTOR(6 DOWNTO 0);-7位地址信号n inclock:IN STD_LOGIC;-地址锁存时钟n q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);nEND COMPONENT;n SIGNAL Q1:STD_LOGIC_VECTOR(6 DOWNTO 0);-设定内部节点作为地址计数器n BEGINnPROCESS(CLK)-LPM_ROM地址发生器进程n BEGINnIF CLKEVENT AND CLK=1 THEN Q1Q1,q=DOUT,inclock=CLK);-例化nEND;正弦波数据仿真结果