配色: 字号:
VHDL宏功能模块应用
2020-04-13 | 阅:  转:  |  分享 
  
EDA技术实用教程第7章宏功能模块应用第7章宏功能模块应用7.1计数器LPM模块调用★7.2利用属性控制乘法器的构建★7.3L
PM随机存储器的设置和调用7.4LPM_ROM的定制和使用示例7.5在系统存储器数据读写编辑器应用7.6LPM嵌入式锁相环调用7.
7In-systemSourcesandProbesEditor使用方法7.8NCO核数控振荡器使用方法7.9FIR核使用
方法7.10DDS实现原理与应用7.0宏功能模块概述宏功能模块LPM:是参数可设置模块库的英语缩写(LibraryofP
arameterizedModules),这些可以以图形或硬件描述语言模块形式方便调用的宏功能块,使得基于EDA技术的电子设计的
效率和可靠性有了很大的提高。设计者可以根据实际电路的设计需要,选择LPM库中的适当模块,并为其设定适当的参数,就能满足自己设计需要
,从而在自己的项目中十分方便地调用优秀的电子工程师人员的硬件设计成果。算术组件I/O组件存储组件门电路累加器、加法器、乘
法器和LPM算术函数时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)、千兆位收发器块(GXB)、LVDS接收器和发
送器、PLL重新配置和远程更新宏功能模块多路复用器和LPM门函数存储器、移位寄存器宏模块和LPM存储器函数存储器编译器FI
FOPartitioner、RAM和ROM宏功能模块7.0宏功能模块概述Altera公司提供的宏功能模块与LPM函数主要有
:7.0宏功能模块概述使用MegaWizardPlug-InManager<输出文件>.bsf:BlockEd
itor中使用的宏功能模块的符号(元件)。?<输出文件>.cmp:组件申明文件。?<输出文件>.inc:宏功能模块包装
文件中模块的AHDL包含文件。?<输出文件>.tdf:要在AHDL设计中实例化的宏功能模块包装文件。?<输出文件>.vh
d:要在VHDL设计中实例化的宏功能模块包装文件。?<输出文件>.v:要在VerilogHDL设计中实例化的宏功能模块
包装文件。?<输出文件>_bb.v:VerilogHDL设计所用宏功能模块包装文件中模块的空体或black-box申明,用于
在使用EDA综合工具时指定端口方向。?<输出文件>_inst.tdf:宏功能模块包装文件中子设计的AHDL例化示例。?<
输出文件>_inst.vhd:宏功能模块包装文件中实体的VHDL例化示例。?<输出文件>_inst.v:宏功能模块包装文
件中模块的VerilogHDL例化示例。7.0宏功能模块概述在QuartusII中对宏功能模块进行例化1、在Verilog
HDL和VHDL中例化2、使用端口和参数定义3、使用端口和参数定义生成宏功能模块计数器
乘-累加器和乘-加法器加法/减法器RAM乘法器移位寄存器7.0宏功能模块概述采用LPM设计方法,
可以带来四点好处:1.设计文件具备独立于实现工艺的可移植性。2.保证最佳的实现效率。3.保证设计工具之间的互操作性。
4.可以完成几乎所有设计需要的逻辑描述。7.1计数器LPM模块调用利用LPM模块设计一个60进制计数器7.1计数器LP
M模块调用60进制计数器仿真结果7.2利用属性控制乘法器的构建例7-37.2利用属性控制乘法器的构建例7-3仿真结果7.2
利用属性控制乘法器的构建IEEE两个标准库STD和IEEE中的程序包库名程序包名定义的内容STDSTANDARDTEX
TIO定义VHDL的数据类型,如BIT,BIT_VECTOR等TEXT读写控制数据类型和子程序等IEEESTD_LOGI
C_1164定义STD_LOG,STD_LOGIC_VECTOR等STD_LOGIC_ARITH定义有符号与无符号数据类型,
基于这些数据类型的算术运算符,如“+”,“-”,“?”,“/”SHL,SHR等STD_LOGIC_SIGNED定义基于
STD_LOGIC与STD_LOGIC_VECTOR数据类型上的有符号的算术运算STD_LOGIC_UNSIGNED 定义基于
STD_LOGIC与STD_LOGIC_VECTOR类型上的无符号的算术运算7.3LPM随机存储器的设置和调用7.3LPM随
机存储器的设置和调用7.4LPM_ROM的定制和使用示例简易正弦信号发生器设计f=f0/64图7-24正弦信号发生器结
构框图7.4LPM_ROM的定制和使用示例定制初始化数据文件【例7-1】WIDTH=8;DEPTH=64;ADDRE
SS_RADIX=HEX;DATA_RADIX=HEX;CONTENTBEGIN0:FF;1
:FE;2:FC;3:F9;4:
F5;…(数据略去)3D:FC;3E:FE;3F
:FF;END;1.建立.mif格式文件7.2宏模块应用实例7.2.2定制初始化数据文件1.建立.
mif格式文件【例7-2】#include#include"math.h"main(){inti;flo
ats;for(i=0;i<1024;i++){s=sin(atan(1)8i/1024);printf("%d
:%d;\n",i,(int)((s+1)1023/2));}}7.4LPM_ROM的定制和使用示例2.建立.hex格式文
件图7-2将波形数据填入mif文件表中2.建立.hex格式文件图7-3ASM格式建hex文件KX康芯科技7.4LP
M_ROM的定制和使用示例2.建立.hex格式文件图7-4sdata.hex文件的放置路径7.4LPM_ROM的定制和使用
示例定制LPM_ROM元件图7-5定制新的宏功能块7.2宏模块应用实例7.2.2定制初始化数据文件7.2.3
定制LPM_ROM元件图7-6LPM宏功能块设定7.2.2定制初始化数据文件7.2.3定制LPM_ROM元件图7
-7选择data_rom模块数据线和地址线宽度7.4LPM_ROM的定制和使用示例图7-8选择地址锁存信号inclock
7.4LPM_ROM的定制和使用示例图7-9调入ROM初始化数据文件并选择在系统读写功能7.4LPM_ROM的定制和使用示
例图7-10LPM_ROM设计完成【例7-3】LIBRARYieee;USEieee.std_logic_1164.all
;LIBRARYaltera_mf;USEaltera_mf.altera_mf_components.all;--使用
宏功能库中的所有元件ENTITYdata_romIS PORT(address:INSTD_LOGIC_VECTO
R(5DOWNTO0);inclock:INSTD_LOGIC; q :OUTSTD_LOGIC_V
ECTOR(7DOWNTO0));ENDdata_rom;ARCHITECTURESYNOFdata_romIS
SIGNALsub_wire0 :STD_LOGIC_VECTOR(7DOWNTO0); COMPONENTalts
yncram--例化altsyncram元件,调用了LPM模块altsyncram GENERIC(
--参数传递语句 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 :STRING;lpm_hint :STRING; lp
m_type :STRING ); PORT( clock0 :INSTD_LOGIC;--altsyn
cram元件接口声明 address_a :INSTD_LOGIC_VECTOR(5DOWNTO0);q_a :OU
TSTD_LOGIC_VECTOR(7DOWNTO0)); ENDCOMPONENT;BEGIN q<=sub_wi
re0(7DOWNTO0); altsyncram_component:altsyncram GENERICMAP(
intended_device_family=>"Cyclone",--参数传递映射 width_a=>8,
--数据线宽度8 widthad_a=>6,--地址线宽
度6 numwords_a=>64,--数据数量64 operation_mode=>"
ROM",--LPM模式ROM outdata_reg_a=>"UNREGISTERED",--输出无
锁存 address_aclr_a=>"NONE",--无异步地址清0 outdata_aclr_a=>
"NONE",--无输出锁存异步清0 width_byteena_a=>1,--byte
ena_a输入口宽度1 init_file=>“./dataHEX/SDATA.hex”,--ROM初始化数据文件,此处已
修改过接上页 lpm_hint=>"ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=NONE",
lpm_type=>"altsyncram")--LPM类型 PORTMAP(clock0
=>inclock,address_a=>address,q_a=>sub_wire0);ENDSYN;完成顶层
设计【例7-4】正弦信号发生器顶层设计LIBRARYIEEE;--正弦信号发生器源文件USEIEEE.STD_LOGI
C_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSINGTISPORT(
CLK:INSTD_LOGIC;--信号源时钟DOUT:OUTSTD_LOG
IC_VECTOR(7DOWNTO0));--8位波形数据输出END;ARCHITECTUREDACCOFSINGT
ISCOMPONENTdata_rom--调用波形数据存储器LPM_ROM文件:data_rom.vhd声明PORT
(address:INSTD_LOGIC_VECTOR(5DOWNTO0);--6位地址信号inclock:IN
STD_LOGIC;--地址锁存时钟q:OUTSTD_LOGIC_VECTOR(7DOWNTO0) );END
COMPONENT;SIGNALQ1:STD_LOGIC_VECTOR(5DOWNTO0);--设定内部节点作为地
址计数器BEGINPROCESS(CLK)--LPM_ROM地址发生器进程
BEGINIFCLK''EVENTANDCLK=''1''THENQ1<=Q1+1;--Q1作为地址发生器计数器END
IF;ENDPROCESS;u1:data_romPORTMAP(address=>Q1,q=>DOUT,inc
lock=>CLK);--例化END;7.4LPM_ROM的定制和使用示例图7-26仿真波形输出7.4LPM_ROM的定制
和使用示例图7-28嵌入式逻辑分析仪获得的波形7.5在系统存储器数据读写编辑器应用图7-13In-SystemMem
oryContentEditor编辑窗7.5在系统存储器数据读写编辑器应用图7-14与实验系统上的FPGA通信正常情
况下的编辑窗界面7.5在系统存储器数据读写编辑器应用图7-15从FPGA中的ROM读取波形数据7.5在系统存储器数
据读写编辑器应用图7-16编辑波形数据7.5在系统存储器数据读写编辑器应用图7-16下载编辑数据后的SignalTap?
II采样波形7.6LPM嵌入式锁相环调用7.6.1建立嵌入式锁相环元件图7-32选择参考时钟为20MHz7.6
LPM嵌入式锁相环调用7.6.1建立嵌入式锁相环元件图7-33选择控制信号7.6LPM嵌入式锁相环调用7.6.1
建立嵌入式锁相环元件图7-34选择e0的输出频率为200MHz7.6LPM嵌入式锁相环调用7.6.2测试锁相环
图7-35PLL元件的仿真波形7.6.2测试锁相环单频率输出的应用PLL的示例:…;ENTITYDDS_VHDLIS
PORT(CLKK:INSTD_LOGIC;--此时钟进入锁相环FWORD:INSTD_LOG
IC_VECTOR(7DOWNTO0);…;ARCHITECTUREoneOFDDS_VHDLISCOMPONENT
PLLU--调入PLL声明PORT( inclk0:INSTD_LOG
IC:=''0'';c0:OUTSTD_LOGIC );ENDCOMPONENT;COMPONENTREG32B
…;BEGIN…;u6:SIN_ROMPORTMAP(address=>D32B(31DOWNTO22),q
=>POUT,inclock=>CLK);u7:PLLUPORTMAP(inclk0=>CLKK,c0=>CLK);--例化END;7.11其它存储器模块的定制与应用7.11.1RAM定制图7-20编辑定制RAM7.11其它存储器模块的定制与应用7.11.1RAM定制图7-21LPM_RAM的仿真波形7.11其它存储器模块的定制与应用7.11.2FIFO定制图7-22FIFO编辑窗7.11其它存储器模块的定制与应用7.11.2FIFO定制图7-23FIFO的仿真波形7.98051单片机IP核应用图7-49基本8051CPU核应用电路示例7.98051单片机IP核应用图7-50单片机I/O口设置成双向口的电路7.98051单片机IP核应用图7-51设置FPGA的总线口输出为上拉7.98051单片机IP核应用图7-52LPM_ROM初始化文件路径图7-53TEST1.asm汇编程序
献花(0)
+1
(本文系大音善士首藏)