Xinlinx原语的用法Word文件下载.docx
- 文档编号:22094564
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:469.10KB
Xinlinx原语的用法Word文件下载.docx
《Xinlinx原语的用法Word文件下载.docx》由会员分享,可在线阅读,更多相关《Xinlinx原语的用法Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
//
input[17:
0]A,B;
input[47:
0]C,PCIN;
input[1:
0]CARRYINSEL;
input[6:
0]OPMODE;
inputBCIN,CARRYIN,CEA,CEB,CEC,CECARRYIN,CECINSUB,CECTRL,CEM,
CEP,CLK,RSTA,RSTB,RSTC,RSTCARRYIN,RSTM,RSTP,SUBTRACT;
//对DSP48原语的功能进行配置。
DSP48#(
.AREG
(1),//NumberofpipelineregistersontheAinput,0,1or2
.BREG
(1),//NumberofpipelineregistersontheBinput,0,1or2
.B_INPUT("
DIRECT"
),
//BinputDIRECTfromfabricorCASCADEfromanotherDSP48
.CARRYINREG
(1),
//NumberofpipelineregistersfortheCARRYINinput,0or1
.CARRYINSELREG
(1),
//NumberofpipelineregistersfortheCARRYINSEL,0or1
.CREG
(1),//NumberofpipelineregistersontheCinput,0or1
.LEGACY_MODE("
MULT18X18S"
//Backwardcompatibility,NONE,MULT18X18orMULT18X18S
.MREG
(1),//Numberofmultiplierpipelineregisters,0or1
.OPMODEREG
(1),//NumberofpipelineregsitersonOPMODEinput,0or1
.PREG
(1),//NumberofpipelineregistersonthePoutput,0or1
.SUBTRACTREG
(1)
//NumberofpipelineregistersontheSUBTRACTinput,0or1
)fpga_v4_dsp48(
.BCOUT(BCOUT),//18-bitBcascadeoutput
.P(P),//48-bitproductoutput
.PCOUT(PCOUT),//48-bitcascadeoutput
.A(A),//18-bitAdatainput
.B(B),//18-bitBdatainput
.BCIN(BCIN),//18-bitBcascadeinput
.C(C),//48-bitcascadeinput
.CARRYIN(CARRYIN),//Carryinputsignal
.CARRYINSEL(CARRYINSEL),//2-bitcarryinputselect
.CEA(CEA),//Adataclockenableinput
.CEB(CEB),//Bdataclockenableinput
.CEC(CEC),//Cdataclockenableinput
.CECARRYIN(CECARRYIN),//CARRYINclockenableinput
.CECINSUB(CECINSUB),//CINSUBclockenableinput
.CECTRL(CECTRL),//ClockEnableinputforCTRLregsiters
.CEM(CEM),//ClockEnableinputformultiplierregsiters
.CEP(CEP),//ClockEnableinputforPregsiters
.CLK(CLK),//Clockinput
.OPMODE(OPMODE),//7-bitoperationmodeinput
.PCIN(PCIN),//48-bitPCINinput
.RSTA(RSTA),//ResetinputforApipelineregisters
.RSTB(RSTB),//ResetinputforBpipelineregisters
.RSTC(RSTC),//ResetinputforCpipelineregisters
.RSTCARRYIN(RSTCARRYIN),//ResetinputforCARRYINregisters
.RSTCTRL(RSTCTRL),//ResetinputforCTRLregisters
.RSTM(RSTM),//Resetinputformultiplierregisters
.RSTP(RSTP),//ResetinputforPpipelineregisters
.SUBTRACT(SUBTRACT)//SUBTRACTinput
);
endmodule
3.4.2时钟组件
时钟组件包括各种全局时钟缓冲器、全局时钟复用器、普通I/O本地的时钟缓冲器以及高级数字时钟管理模块,如表3-7所示。
表3-7时钟组件的清单
下面对几个常用时钟组件进行简单介绍,其余组件的使用方法是类似的。
1.BUFG
BUFG是具有高扇出的全局时钟缓冲器,一般由综合器自动推断并使用,其和同类原语的RTL结构如图3-28所示。
全局时钟是具有高扇出驱动能力的缓冲器,可以将信号连到时钟抖动可以忽略不计的全局时钟网络,BUFG组件还可应用于典型的高扇出信号和网络,如复位信号和时钟使能信号。
如果要对全局时钟实现PLL或DCM等时钟管理,则需要手动例化该缓冲器。
其例化的代码模板如下所示:
//BUFG:
全局时钟缓存(GlobalClockBuffer),只能以内部信号驱动
//XilinxHDL库向导版本,ISE9.1
BUFGBUFG_inst(
.O(O),//时钟缓存输出信号
.I(I)///时钟缓存输入信号
//结束BUFG_ins模块的例化过程
在综合结果分析中,其和同类原语的RTL结构如图3-32所示。
图3-32全局时钟原语的RTL级结构示意图
2.BUFMUX
BUFMUX是全局时钟复用器,选择两个输入时钟I0或I1中的一个作为全局时钟,其和同类原语BUFMUX1的RTL级结构如图M所示。
当选择信号S为低时,选择I0;
否则输出I1,其真值表如表M所示。
BUFMUX原语和BUFMUX1原语的功能一样,只是选择逻辑不同,对于BUFMUX1,当选择信号S为低时,选择I1;
否则输出I0。
BUFMUX原语的例化代码模板如下所示:
//BUFGMUX:
全局时钟的2到1复用器(GlobalClockBuffer2-to-1MUX)
//适用芯片:
Virtex-II/II-Pro/4/5,Spartan-3/3E/3A
BUFGMUXBUFGMUX_inst(
.O(O),//时钟复用器的输出信号
.I0(I0),//0时钟输入信号
.I1(I1),//1时钟输入信号
.S(S)//时钟选择信号
//结束BUFGMUX_inst模块的例化过程
需要注意的是:
该原语只用用全局时钟处理,不能作为接口使用。
在综合结果分析时,它和同类原语BUFMUX1的RTL级结构如图3-33所示。
图3-33全局时钟复用器的RTL级结构示意图
3.BUFIO
BUFIO是本地I/O时钟缓冲器,其RTL结构如图M所示,只有一个输入与输出,非常简单。
BUFIO使用独立于全局时钟网络的专用时钟网络来驱动纵向I/O管脚,所以非常适合同步数据采集。
BUFIO要求时钟和相应的I/O必须在同一时钟区域,而不同时钟网络的驱动需要BUFR原语来实现。
需要注意的是,由于BUFIO引出的时钟只到达了I/O列,所以不能来驱动逻辑资源,如CLB和块RAM。
BUFIO的例化代码模板如下:
//BUFIO:
本地I/O时钟缓冲器(LocalClockBuffer)
Virtex-4/5
BUFIOBUFIO_inst(
.O(O),//本地I/O时钟缓冲器的输出信号
.I(I)//本地I/O时钟缓冲器的输入信号
//结束BUFIO模块的例化过程
在综合结果分析时,其RTL级结构如图3-34所示。
图3-34本地I/O时钟缓冲器的RTL级结构示意图
4.BUFR
BUFR是本地I/O时钟、逻辑缓冲器,其RTL结构如图M所示。
BUFR和BUFIO都是将驱动时钟引入某一时钟区域的专用时钟网络,而独立于全局时钟网络;
不同的是,BUFR不仅可以跨越不同的时钟区域(最多3个),还能够驱动I/O逻辑以及自身或邻近时钟区域的逻辑资源。
BUFIO的输出和本地内部互联都能驱动BUFR组件。
此外,BUFR能完成输入时钟1~8的整数分频。
因此,BUFR是同步设计中实现跨时钟域以及串并转换的最佳方式。
//BUFR:
本地I/O时钟、逻辑缓冲器(RegionalClockBuffer)
BUFR#(
.BUFR_DIVIDE("
BYPASS"
//分频比,可选择"
"
1"
2"
3"
4"
5"
6"
7"
8"
。
.SIM_DEVICE("
VIRTEX4"
)
//指定目标芯片,"
或者"
VIRTEX5"
)BUFR_inst(
.CE(CE),//时钟使能信号,输入信号
.CLR(CLR),//时钟缓存清空信号
.I(I)//时钟缓存输入信号
//结束BUFR模块的例化过程
BUFIO和BUFR只能在Virtex-4系列以及更高系列芯片中使用。
在综合结果分析时,其RTL结构如图3-35所示。
图3-35本地I/O时钟、逻辑缓冲器的RTL级结构示意图
5.DCM_BASE
DCM_BASE是基本数字时钟管理模块的缩写,是相位和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理。
如果需要频率和相位动态重配置,则可以选用DCM_ADV原语;
如果需要相位动态偏移,可使用DCM_PS原语。
DCM系列原语的RTL结构如图3-8所示。
模块接口信号的说明如表3-8所列。
DCM_BASE组件可以通过Xilinx的IPWizard向导产生,也可以直接通过下面的例化代码直接使用。
其Verilog的例化代码模板为:
//DCM_BASE:
基本数字时钟管理电路(BaseDigitalClockManagerCircuit)
DCM_BASE#(
.CLKDV_DIVIDE(2.0),
//CLKDV分频比可以设置为:
1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
//7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0or16.0
.CLKFX_DIVIDE
(1),//Canbeanyintegerfrom1to32
//CLKFX信号的分频比,可为1到32之间的任意整数
.CLKFX_MULTIPLY(4),
//CLKFX信号的倍频比,可为2到32之间的任意整数
.CLKIN_DIVIDE_BY_2("
FALSE"
//输入信号2分频的使能信号,可设置为TRUE/FALSE
.CLKIN_PERIOD(10.0),
//指定输入时钟的周期,单位为ns,数值范围为1.25~1000.00。
.CLKOUT_PHASE_SHIFT("
NONE"
//指定移相模式,可设置为NONE或FIXED
.CLK_FEEDBACK("
1X"
//指定反馈时钟的频率,可设置为NONE、1X或2X。
相应的频率关系都是针对CLK0而言的。
.DCM_PERFORMANCE_MODE("
MAX_SPEED"
//DCM模块性能模式,可设置为MAX_SPEED或MAX_RANGE
.DESKEW_ADJUST("
SYSTEM_SYNCHRONOUS"
//抖动调整,可设置为源同步、系统同步或0~15之间的任意整数
.DFS_FREQUENCY_MODE("
LOW"
//数字频率合成模式,可设置为LOW或HIGH两种频率模式
.DLL_FREQUENCY_MODE("
//DLL的频率模式,可设置为LOW、HIGH或HIGH_SER
.DUTY_CYCLE_CORRECTION("
TRUE"
//设置是否采用双周期校正,可设为TRUE或FALSE
.FACTORY_JF(16'
hf0f0),
//16比特的JF因子参数
.PHASE_SHIFT(0),
//固定相移的数值,可设置为-255~1023之间的任意整数
.STARTUP_WAIT("
//等DCM锁相后再延迟配置DONE管脚,可设置为TRUE/FALSE
)DCM_BASE_inst(
.CLK0(CLK0),//0度移相的DCM时钟输出
.CLK180(CLK180),//180度移相的DCM时钟输出
.CLK270(CLK270),//270度移相的DCM时钟输出
.CLK2X(CLK2X),//DCM模块的2倍频输出
.CLK2X180(CLK2X180),//经过180度相移的DCM模块2倍频输出
.CLK90(CLK90),//90度移相的DCM时钟输出
.CLKDV(CLKDV),//DCM模块的分频输出,分频比为CLKDV_DIVIDE
.CLKFX(CLKFX),//DCM合成时钟输出,分频比为(M/D)
.CLKFX180(CLKFX180),//180度移相的DCM合成时钟输出
.LOCKED(LOCKED),//DCM锁相状态输出信号
.CLKFB(CLKFB),//DCM模块的反馈时钟信号
.CLKIN(CLKIN),//DCM模块的时钟输入信号
.RST(RST)//DCM模块的异步复位信号
//结束DCM_BASE模块的例化过程
在综合结果分析时,DCM系列原语的RTL结构如图3-36所示。
图3-36DCM模块的RTL级结构示意图
3.4.3配置和检测组件
配置和检测组件提供了FPGA内部逻辑和JTAG扫描电路之间的数据交换以及控制功能,只要由6个原语组成,如表3-9所示。
表3-9配置和检测原语列表
下面对BSCAN_VIRTEX4组件进行简单介绍,其余组件的使用方法是类似的。
1.BSCAN_VIRTEX4
当JTAGUSER1/2/3/4指令被加载后,BSCAN_VIRTEX4允许设计人员来检测TCK、TMS以及TDI等专用JTAG管脚的数据,并且可以将用户数据写入到TDO管脚上,这样可以在PC上通过JTAG链读取芯片内部的用户数据。
BSCAN_VIRTEX4的管脚信号说明如下:
CAPTURE:
位宽为1的输出信号,用于指示是否加载了用户指令,当JTAG接口处于CAPTURE-DR状态时,输出为高。
DRCK:
位宽为1的输出信号,用于监测JTAG电路的TCK信号。
当JTAG链路处于用户指令模式或者JTAG接口为SHIFT-DR状态时,才有信号输出。
RESET:
位宽为1的输出信号,在加载用户指令时有效。
当JTAG接口控制器处于TEST-LOGIC-RESET状态时置高。
SEL:
位宽为1的输出信号,高有效。
用于指示USER1数据是否加载到JTAG指令寄存器中。
在UPDATE-IR状态时有效,直到加载新的指令之前,一直保持有效电平。
SHIFT:
位宽为1的输出信号,加载用户指令时有效。
当JTAG接口控制器处于SHIFT-DR状态时置高。
TDI:
位宽为1的输出信号,用于检测JTAG链的TDI信号。
UPDATE:
位宽为1的输出信号,加载USER1指令和USER2指令时有效。
当JTAG接口控制器处于UPDATE-DR状态时置高。
TDO:
位宽为1的输入信号,可以将外部JTAG链的TDO信号直接连到该管脚上。
在Virtex-4芯片中,有4个BSCAN_VIRTEX4硬件原语可用。
因此,其属性JTAG_CHAIN的有效值为1~4,默认值为1。
BSCAN_VIRTEX4原语的例化代码模板如下所示:
//
BSCAN_VIRETX4:
完成内部逻辑和JTAG接口连接的边界扫描原语(BoundaryScanprimitiveforcon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Xinlinx 用法