教学课件:第7章-LPM参数化宏模块应用.ppt

上传人:小飞机 文档编号:6289676 上传时间:2023-10-14 格式:PPT 页数:55 大小:656KB
返回 下载 相关 举报
教学课件:第7章-LPM参数化宏模块应用.ppt_第1页
第1页 / 共55页
教学课件:第7章-LPM参数化宏模块应用.ppt_第2页
第2页 / 共55页
教学课件:第7章-LPM参数化宏模块应用.ppt_第3页
第3页 / 共55页
教学课件:第7章-LPM参数化宏模块应用.ppt_第4页
第4页 / 共55页
教学课件:第7章-LPM参数化宏模块应用.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《教学课件:第7章-LPM参数化宏模块应用.ppt》由会员分享,可在线阅读,更多相关《教学课件:第7章-LPM参数化宏模块应用.ppt(55页珍藏版)》请在三一办公上搜索。

1、EDA技术与VHDL,第7章LPM参数化宏模块应用,KX康芯科技,7.1 宏功能模块概述,Altera提供的宏功能模块与LPM函数有:类型类型类型类型描述描述描述描述 算术组件:包括累加器、加法器、乘法器和LPM算术函数;门电路:包括多路复用器和LPM门函数。I/O组件:包括时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)、千兆位收发器块(GXB)、LVDS接收器和发送器、PLL重新配置和远程更新宏功能模块。存储器编译器:包括FIFO Partitioner、RAM和ROM宏功能模块。存储组件:包括存储器、移位寄存器宏模块和LPM存储器函数。,KX康芯科技,7.1 宏功能模块概述

2、,7.1.1 知识产权(IP)核的应用,AMPP程序,MegaCore函数,OpenCore评估功能,OpenCore Plus硬件评估功能,7.1 宏功能模块概述,7.1.2 使用MegaWizard Plug-In Manager,以下列出了MegaWizard Plug-In Manager为用户生成的每个自定义宏功能模块变量而生成的文件。.bsf:Block Editor中使用的宏功能模块的符号(元件)。.cmp:组件申明文件。.inc:宏功能模块包装文件中模块的AHDL包含文件。.tdf:要在AHDL设计中实例化的宏功能模块包装文件。.vhd:要在VHDL设计中实例化的宏功能模块包装

3、文件。.v:要在VerilogHDL设计中实例化的宏功能模块包装文件。_bb.v:VerilogHDL设计所用宏功能模块包装文件中模块的空体或black-box申明,用于在使用EDA 综合工具时指定端口方向。_inst.tdf:宏功能模块包装文件中子设计的AHDL例化示例。_inst.vhd:宏功能模块包装文件中实体的VHDL例化示例。_inst.v:宏功能模块包装文件中模块的VerilogHDL例化示例。,7.1 宏功能模块概述,7.1.3 在QuartusII中对宏功能模块进行例化,1、在VerilogHDL和VHDL中例化,2、使用端口和参数定义,3、使用端口和参数定义生成宏功能模块,计

4、数器 加法/减法器 乘法器 乘-累加器和乘-加法器 RAM 移位寄存器,7.2 LPM模块应用实例,7.2.1 电路设计原理,图7-1 正弦信号发生器结构框图,f=f0/64,7.2 LPM模块应用实例,7.2.2 定制LPM_ROM初始化数据文件,1建立.mif格式文件,【例7-1】WIDTH=8;DEPTH=64;ADDRESS_RADIX=HEX;DATA_RADIX=HEX;CONTENT BEGIN0:FF;1:FE;2:FC;3:F9;4:F5;(数据略去)3D:FC;3E:FE;3F:FF;END;,7.2 LPM模块应用实例,7.2.2 定制LPM_ROM初始化数据文件,1建立

5、.mif格式文件,【例7-2】#include#include math.hmain()int i;float s;for(i=0;i sin_rom.mif;,7.2 LPM模块应用实例,7.2.2 定制LPM_ROM初始化数据文件,2建立.hex格式文件,图7-2 将波形数据填入mif文件表中,7.2.2 定制LPM_ROM初始化数据文件,2建立.hex格式文件,图7-3 ASM格式建hex文件,7.2.2 定制LPM_ROM初始化数据文件,2建立.hex格式文件,图7-4 sdata.hex文件的放置路径,7.2 LPM模块应用实例,7.2.3 定制LPM_ROM元件,图7-5 定制新的

6、宏功能块,7.2 LPM模块应用实例,7.2.3 定制LPM_ROM元件,图7-6 LPM宏功能块设定,7.2.3 定制LPM_ROM元件,图7-7 选择data_rom模块数据线和地址线宽度,7.2 LPM模块应用实例,7.2.3 定制LPM_ROM元件,图7-8 选择地址锁存信号inclock,7.2 LPM模块应用实例,7.2.3 定制LPM_ROM元件,图7-9 调入ROM初始化数据文件并选择在系统读写功能,7.2.3 定制LPM_ROM元件,图7-10 LPM_ROM设计完成,7.2 LPM模块应用实例,【例7-3】修改后的用于例化的波形数据ROM文件:data_rom.vhdLIB

7、RARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all;-使用宏功能库中的所有元件ENTITY data_rom ISPORT(address:IN STD_LOGIC_VECTOR(5 DOWNTO 0);inclock:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END data_rom;ARCHITECTURE SYN OF data_rom ISSIGNAL sub_wire0:STD_LOGIC_VE

8、CTOR(7 DOWNTO 0);COMPONENT altsyncram-例化altsyncram元件,调用了LPM模块altsyncramGENERIC(-参数传递语句intended_device_family:STRING;-类属参量数据类型定义width_a:NATURAL;widthad_a:NATURAL;numwords_a:NATURAL;operation_mode:STRING;outdata_reg_a:STRING;address_aclr_a:STRING;outdata_aclr_a:STRING;width_byteena_a:NATURAL;init_file

9、:STRING;lpm_hint:STRING;lpm_type:STRING);PORT(clock0:IN STD_LOGIC;-altsyncram元件接口声明address_a:IN STD_LOGIC_VECTOR(5 DOWNTO 0);q_a:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;,KX康芯科技,接下页,【例7-3】BEGINq Cyclone,-参数传递映射width_a=8,-数据线宽度8widthad_a=6,-地址线宽度6numwords_a=64,-数据数量64operation_mode=ROM,-LPM模式RO

10、Moutdata_reg_a=UNREGISTERED,-输出无锁存address_aclr_a=NONE,-无异步地址清0outdata_aclr_a=NONE,-无输出锁存异步清0width_byteena_a=1,-byteena_a输入口宽度1init_file=./dataHEX/SDATA.hex,-ROM初始化数据文件,此处已修改过lpm_hint=ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=NONE,lpm_type=altsyncram)-LPM类型PORT MAP(clock0=inclock,address_a=address,q_a=sub

11、_wire0);END SYN;,KX康芯科技,7.2.4 完成顶层设计,【例7-4】正弦信号发生器顶层设计LIBRARY IEEE;-正弦信号发生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SINGT IS PORT(CLK:IN STD_LOGIC;-信号源时钟 DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-8位波形数据输出END;ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom-调用波形数据存储器LPM_ROM文件

12、:data_rom.vhd声明 PORT(address:IN STD_LOGIC_VECTOR(5 DOWNTO 0);-6位地址信号 inclock:IN STD_LOGIC;-地址锁存时钟 q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;SIGNAL Q1:STD_LOGIC_VECTOR(5 DOWNTO 0);-设定内部节点作为地址计数器 BEGINPROCESS(CLK)-LPM_ROM地址发生器进程 BEGINIF CLKEVENT AND CLK=1 THEN Q1Q1,q=DOUT,inclock=CLK);-例化END;,7

13、.2 LPM模块应用实例,7.2.4 完成顶层设计,7.2 LPM模块应用实例,图7-11 仿真波形输出,图7-12 嵌入式逻辑分析仪获得的波形,7.3 在系统存储器数据读写编辑器应用,图7-13 In-System Memory Content Editor编辑窗,7.3 在系统存储器数据读写编辑器应用,图7-14 与实验系统上的FPGA通信正常情况下的编辑窗界面,7.3 在系统存储器数据读写编辑器应用,图7-15 从FPGA中的ROM读取波形数据,7.3 在系统存储器数据读写编辑器应用,图7-16下载编辑数据后的SignalTapII采样波形,图7-16 编辑波形数据,7.4 编辑Sign

14、alTapII的触发信号,图7-17 选择高级触发条件,7.4 编辑SignalTapII的触发信号,图7-18 进入“触发条件函数编辑”窗口,7.4 编辑SignalTapII的触发信号,图7-19 编辑触发函数,7.5.1 RAM定制,7.5 其它存储器模块的定制与应用,图7-20 编辑定制RAM,7.5.1 RAM定制,7.5 其它存储器模块的定制与应用,图7-21 LPM_RAM的仿真波形,7.5.2 FIFO定制,7.5 其它存储器模块的定制与应用,图7-22 FIFO编辑窗,7.5.2 FIFO定制,7.5 其它存储器模块的定制与应用,图7-23 FIFO的仿真波形,7.5.3 基

15、于LPM_ROM的4位乘法器设计,7.5 其它存储器模块的定制与应用,【例7-5】WIDTH=8;DEPTH=256;ADDRESS_RADIX=HEX;DATA_RADIX=HEX;CONTENT BEGIN 00:00;01:00;02:00;03:00;04:00;05:00;06:00;07:00;08:00;09:00;10:00;11:01;12:02;13:03;14:04;15:05;16:06;17:07;18:08;19:09;20:00;21:02;22:04;23:06;24:08;25:10;26:12;27:14;28:16;29:18;30:00;31:03;32

16、:06;33:09;34:12;35:15;36:18;37:21;38:24;39:27;40:00;41:04;42:08;43:12;44:16;45:20;46:24;47:28;48:32;49:36;50:00;51:05;52:10;53:15;54:20;55:25;56:30;57:35;58:40;59:45;60:00;61:06;62:12;63:18;64:24;65:30;66:36;67:42;68:48;69:54;70:00;71:07;72:14;73:21;74:28;75:35;76:42;77:49;78:56;79:63;80:00;81:08;82

17、:16;83:24;84:32;85:40;86:48;87:56;88:64;89:72;90:00;91:09;92:18;93:27;94:36;95:45;96:54;97:63;98:72;99:81;END;,(1)用VHDL设计16位加法器。,7.6流水线乘法累加器的混合输入设计,【例7-6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER16B IS PORT(CIN:IN STD_LOGIC;A,B:IN STD_LOGIC_VECTOR(15 DOWNT

18、O 0);S:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);COUT:OUT STD_LOGIC);END ADDER16B;ARCHITECTURE behav OF ADDER16B IS SIGNAL SINT:STD_LOGIC_VECTOR(16 DOWNTO 0);SIGNAL AA,BB:STD_LOGIC_VECTOR(16 DOWNTO 0);BEGINAA=0,(2)顶层原理图文件设计。,7.6流水线乘法累加器的混合输入设计,图7-24 在原理图编辑窗加入LPM元件,(2)顶层原理图文件设计。,7.6流水线乘法累加器的混合输入设计,图7-25 编辑LP

19、M乘法器,(2)顶层原理图文件设计。,7.6流水线乘法累加器的混合输入设计,图7-26 加入所有相关元件,(2)顶层原理图文件设计。,7.6流水线乘法累加器的混合输入设计,图7-27 乘法累加器电路,(3)仿真。,7.6流水线乘法累加器的混合输入设计,图7-28 muladd工程仿真波形,7.7.1 建立嵌入式锁相环元件,7.7 LPM嵌入式锁相环调用,图7-29 选择参考时钟为16MHz,7.7.1 建立嵌入式锁相环元件,7.7 LPM嵌入式锁相环调用,图7-30 选择控制信号,7.7.1 建立嵌入式锁相环元件,7.7 LPM嵌入式锁相环调用,图7-31 选择c0的片内时钟倍频为2,7.7.

20、2 测试锁相环,7.7 LPM嵌入式锁相环调用,图7-32 PLL元件的仿真波形,习 题,7-1.如果不使用MegaWizard Plug-In Manager工具,如何在自己的设计中调用LPM模块?以计数器lpm_counter为例,写出调用该模块的程序,其中参数自定。7-2.LPM_ROM、LPM_RAM、LPM_FIFO等模块与FPGA中嵌入的EAB,ESB,M4K有怎样的联系关系?7-3.参考QuartusII的Help(Contents),详细说明LPM元件altcam、altsyncram、lpm_fifo、lpm_shiftreg的使用方法,以及其中各参量的含义和设置方法。7-4

21、.如果要设计一8051单片机,如何为它配置含有汇编程序代码的ROM(文件)?7-5.将例7-4的顶层程序和例7-3的ROM程序合并成为一个程序,要求用例化语句直接调用LPM模块altsyncram。编译验证,使之功能与原设计相同。,实 验 与 设 计,7-1.正弦信号发生器设计(1)实验目的:进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。(2)实验原理:参考本章相关内容。(3)实验内容1:根据例7-4,在Quartus II上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测,包括SignalTap II测试、F

22、PGA中ROM的在系统数据读写测试和利用示波器测试。最后完成EPCSx配置器件的编程。,实 验 与 设 计,7-1.正弦信号发生器设计(4)实验内容2:修改例7-3的数据ROM文件,设其数据线宽度为8,地址线宽度也为8,初始化数据文件使用MIF格式,用C程序产生正弦信号数据,最后完成以上相同的实验。(5)实验内容4:设计一任意波形信号发生器,可以使用LPM双口RAM担任波形数据存储器,利用单片机产生所需要的波形数据,然后输向FPGA中的RAM(可以利用GW48系统上与FPGA接口的单片机完成此实验,D/A可利用系统上配置的0832或5651高速器件)。(6)实验报告:根据以上的实验内容写出实验

23、报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。,实 验 与 设 计,7-2.8位16进制频率计设计(1)实验目的:设计8位16进制频率计,学习较复杂的数字系统设计方法。(2)实验原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。测频控制信号可以由一个独立的发生器来产生,即图7-34中的FTCTRL。根据测频原理,测频控制时序可以如图7-33所示。设计要求是:FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中

24、的32位二进制计数器COUNTER32B(图7-34)的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。,实 验 与 设 计,7-2.8位16进制频率计设计(3)实验内容1:分别仿真测试模块例7-7、例7-8和例7-9,再结合例7-10完成

25、频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。建议选实验电路模式5;8个数码管以16进制形式显示测频输出;待测频率输入FIN由clock0输入,频率可选4Hz、256HZ、3Hz.50MHz等;1HZ测频控制信号CLK1HZ可由clock2输入(用跳线选1Hz)。注意,这时8个数码管的测频显示值是16进制的。(4)实验内容2:参考例3-22,将频率计改为8位10进制频率计,注意此设计电路的计数器必须是8个4位的10进制计数器,而不是1个。此外注意在测频速度上给予优化。(5)实验内容3:用LPM模块取代例7-8和例7-9,再完成同样的设计任务。(6)实验内容4:用嵌入式锁相环PLL的

26、LPM模块对实验系统的50MHz或20MHz时钟源分频率,PLL的输出信号作为频率计的待测信号。注意PLL的输入时钟必须是器件的专用时钟输入脚CLKpin16。(7)实验报告:给出频率计设计的完整实验报告。,【例7-7】LIBRARY IEEE;-测频控制电路USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL IS PORT(CLKK:IN STD_LOGIC;-1Hz CNT_EN:OUT STD_LOGIC;-计数器时钟使能 RST_CNT:OUT STD_LOGIC;-计数器清零 Load:O

27、UT STD_LOGIC);-输出锁存信号 END FTCTRL;ARCHITECTURE behav OF FTCTRL IS SIGNAL Div2CLK:STD_LOGIC;BEGIN PROCESS(CLKK)BEGIN IF CLKKEVENT AND CLKK=1 THEN-1Hz时钟2分频 Div2CLK=NOT Div2CLK;END IF;END PROCESS;PROCESS(CLKK,Div2CLK)BEGIN IF CLKK=0 AND Div2CLK=0 THEN RST_CNT=1;-产生计数器清零信号 ELSE RST_CNT=0;END IF;END PROCE

28、SS;Load=NOT Div2CLK;CNT_EN=Div2CLK;END behav;,KX康芯科技,【例7-8】LIBRARY IEEE;-32位锁存器USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LK:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END REG32B;ARCHITECTURE behav OF REG32B ISBEGIN PROCESS(LK,DIN)BEGIN IF LKEVENT

29、 AND LK=1 THEN DOUT=DIN;END IF;END PROCESS;END behav;,实 验 与 设 计,【例7-9】LIBRARY IEEE;-32位计数器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER32B IS PORT(FIN:IN STD_LOGIC;-时钟信号 CLR:IN STD_LOGIC;-清零信号 ENABL:IN STD_LOGIC;-计数使能信号 DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);-计数结果 END CO

30、UNTER32B;ARCHITECTURE behav OF COUNTER32B IS SIGNAL CQI:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN PROCESS(FIN,CLR,ENABL)BEGIN IF CLR=1 THEN CQI 0);-清零 ELSIF FINEVENT AND FIN=1 THEN IF ENABL=1 THEN CQI=CQI+1;END IF;END IF;END PROCESS;DOUT=CQI;END behav;,KX康芯科技,【例7-10】LIBRARY IEEE;-频率计顶层文件LIBRARY IEEE;USE I

31、EEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST IS PORT(CLK1HZ:IN STD_LOGIC;FSIN:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END FREQTEST;ARCHITECTURE struc OF FREQTEST ISCOMPONENT FTCTRL PORT(CLKK:IN STD_LOGIC;-1Hz CNT_EN:OUT STD_LOGIC;-计数器时钟使能 RST_CNT:OUT STD_LOGIC;-计数器清零 Load:OUT STD_LOGIC);-输出锁存信

32、号 END COMPONENT;COMPONENT COUNTER32B PORT(FIN:IN STD_LOGIC;-时钟信号 CLR:IN STD_LOGIC;-清零信号 ENABL:IN STD_LOGIC;-计数使能信号 DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);-计数结果END COMPONENT;COMPONENT REG32B,接下页,KX康芯科技,PORT(LK:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);EN

33、D COMPONENT;SIGNAL TSTEN1:STD_LOGIC;SIGNAL CLR_CNT1:STD_LOGIC;SIGNAL Load1:STD_LOGIC;SIGNAL DTO1:STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN U1:FTCTRL PORT MAP(CLKK=CLK1HZ,CNT_EN=TSTEN1,RST_CNT=CLR_CNT1,Load=Load1);U2:REG32B PORT MAP(LK=Load1,DIN=DTO1,DOUT=DOUT);U3:COUNTER32B PORT MAP(FIN=FSIN,CLR=CLR_CNT1,ENABL=TSTEN1,DOUT=DTO1);END struc;,KX康芯科技,实 验 与 设 计,图7-33 频率计测频控制器FTCTRL测控时序图,实 验 与 设 计,图7-34 频率计电路框图,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号