关键词不能为空

当前您在: 主页 > 英语 >

第4节 Xilinx公司原语的使用方法1

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-02 21:25
tags:

-

2021年3月2日发(作者:长大以后)



4




Xilinx


公司原语的使用方法


1



Xilinx


原语




3.4 Xilinx


公司原语的使用方法



原 语,


其英文名字为


Primitive




Xilinx


针对其器件特征开发 的一系列常用模块的名字,


用户可以将其看成


Xilinx


公司为用户提供的库函数,类似于


C++


中 的


“cout”


等关键字,


是芯片中的 基本元件,


代表


FPGA


中实际拥有的 硬件逻辑单元,



LUT


< p>
D


触发器,


RAM


等,相 当于软件中的机器语言。在实现过程中的翻译步骤时,要将所有的设计单元都


转译为目标 器件中的基本元件,否则就是不可实现的。原语在设计中可以直接例化使


用,是最直接的 代码输入方式,其和


HDL


语言的关系,类似于汇编语言和


C


语言的关


系。





Xilinx

公司提供的原语,涵盖了


FPGA


开发的常用领域,但只有 相应配置的硬件才能执


行相应的原语,并不是所有的原语都可以在任何一款芯片上运行。 在


Verilog


中使用原


语非常简单 ,将其作为模块名直接例化即可。本节以


Virtex-4


平台 介绍各类原语,因


为该系列的原语类型是最全面的。其它系列芯片原语的使用方法是类似 的。





X ilinx


公司的原语按照功能分为


10


类,包括:


计算组件、


I/O


端口组 件、寄存器和锁存


器、


时钟组件、


处理 器组件、


移位寄存器、


配置和检测组件、


RAM/ROM


组件、


Slice/CLB

< br>组件以及


G


比特收发器组件。下面分别对其进行详细介绍 。





3.4.1


计算组件





计算组件值得就是


DSP48


核,也有人将其称为硬件乘法器,功能描述如表

3-6


所示。





3-6


计算组件清单




DSP48


其结构为一个


18*18


比特的有符号乘法器,


且在后面还级联了一个带有可配置


流水线的


3


输入加法器





DSP48

< br>核由一个


18


比特的乘法后面级联一个

< br>48


比特的加法器,乘法器和加法器的应


用位宽分别可以 在


18



48


比特内任意调整。其在乘加模块中有广泛应用,特别是各类


滤波器系统中,不仅可以提高 系统稳定性,还能够节省逻辑资源且工作在高速模式下。


其在


V erilog


中的例化模版为:





module fpga_v4_dsp48(




BCOUT, P, PCOUT, A, B, BCIN, C, CARRYIN,CARRYINSEL, CEA, CEB,




CEC, CECARRYIN, CECINSUB, CECTRL, CEM, CEP, CLK, OPMODE,




PCIN, RSTA, RSTB, RSTC, RSTCARRYIN, RSTM, RSTP, SUBTRACT);


output [17:0]BCOUT;




output [47:0] P, PCOUT; //




input [17:0] A, B; //




input [47:0] C, PCIN;




input [1:0] CARRYINSEL;




input [6:0] OPMODE;




input BCIN, CARRYIN,CEA,CEB, CEC,CECARRYIN,CECINSUB,CECTRL,CEM,




CEP,CLK, RSTA, RSTB,RSTC,RSTCARRYIN,RSTM,RSTP,SUBTRACT;





//



DSP48


原语的功 能进行配置。





DSP48 #(



.AREG(1), // Number of pipeline registers on the A input, 0, 1 or 2



.BREG(1), // Number of pipeline registers on the B input, 0, 1 or 2


.B_INPUT(




// B input DIRECT from fabric or CASCADE from another DSP48



.CARRYINREG(1),


// Number of pipeline registers for the CARRYIN input, 0 or 1


.CARRYINSELREG(1),




// Number of pipeline registers for the CARRYINSEL, 0 or 1




.CREG(1), // Number of pipeline registers on the C input, 0 or 1


.LEGACY_MODE(




// Backward compatibility, NONE, MULT18X18 or MULT18X18S



.MREG(1), // Number of multiplier pipeline registers, 0 or 1



.OPMODEREG(1), // Number of pipeline regsiters on OPMODE input, 0


or 1



.PREG(1), // Number of pipeline registers on the P output, 0 or 1



.SUBTRACTREG(1)


// Number of pipeline registers on the SUBTRACT input, 0 or 1




) fpga_v4_dsp48 (


.BCOUT(BCOUT), // 18-bit B cascade output


.P(P), // 48-bit product output




.PCOUT(PCOUT), // 48-bit cascade output



.A(A), // 18-bit A data input


.B(B), // 18-bit B data input


.BCIN(BCIN), // 18-bit B cascade input



.C(C), // 48-bit cascade input



.CARRYIN(CARRYIN), // Carry input signal



.CARRYINSEL(CARRYINSEL), // 2-bit carry input select


.CEA(CEA), // A data clock enable input



.CEB(CEB), // B data clock enable input



.CEC(CEC), // C data clock enable input


.CECARRYIN(CECARRYIN), // CARRYIN clock enable input



.CECINSUB(CECINSUB), // CINSUB clock enable input


.CECTRL(CECTRL), // Clock Enable input for CTRL regsiters



.CEM(CEM), // Clock Enable input for multiplier regsiters



.CEP(CEP), // Clock Enable input for P regsiters



.CLK(CLK), // Clock input


.OPMODE(OPMODE), // 7-bit operation mode input


.PCIN(PCIN), // 48-bit PCIN input



.RSTA(RSTA), // Reset input for A pipeline registers



.RSTB(RSTB), // Reset input for B pipeline registers



.RSTC(RSTC), // Reset input for C pipeline registers



.RSTCARRYIN(RSTCARRYIN), // Reset input for CARRYIN registers


.RSTCTRL(RSTCTRL), // Reset input for CTRL registers


.RSTM(RSTM), // Reset input for multiplier registers



.RSTP(RSTP), // Reset input for P pipeline registers


.SUBTRACT(SUBTRACT) // SUBTRACT input


);




endmodule




3.4.2


时钟组件





时钟组件包括各种全局时钟缓冲器、全局时钟复用器、普通


I/ O


本地的时钟缓冲器以


及高级数字时钟管理模块,如表


3-7


所示。





3-7


时钟组件的清单






下面对几个常用时钟组件进行简单 介绍,其余组件的使用方法是类似的。





1



BUFG




BUFG


是具有高扇出的全局时钟缓冲器,


一般由综合器自动推断并使用,


其和同类原语



RTL


结构如图


3-28


所示。


全局时钟是具有高扇出驱动 能力的缓冲器,


可以将信号连


到时钟抖动可以忽略不计的全局时 钟网络,


BUFG


组件还可应用于典型的高扇出信号和


网络,如复位信号和时钟使能信号。如果要对全局时钟实现


PLL



DCM


等时钟管理,


则需要手动例化该缓冲器。其例化的代码模板如下所示:





// BUFG:


全局时钟缓存(


Global Clock Buffer


),只能以内部信号驱动




// Xilinx HDL


库向导版本,


ISE 9.1



BUFG BUFG_inst (



.O(O), //


时钟缓存输出信号




.I(I) // /


时钟缓存输入信号




);



//


结束


BUFG_ins


模块的例化过程





在综合结果分析中,其和同类 原语的


RTL


结构如图


3-32


所示。





3-32


全局时钟原语的


RTL


级结构示意图




2. BUFMUX



< p>
BUFMUX


是全局时钟复用器,


选择两个输入时 钟


I0



I1


中的一个作为全局时钟,


其和


同类原语


BUFMUX1



RTL


级结构如图< /p>


M


所示。当选择信号


S

< br>为低时,选择


I0


;否则


输出< /p>


I1


,其真值表如表


M

< br>所示。


BUFMUX


原语和


BU FMUX1


原语的功能一样,只是选


择逻辑不同,对于


BUFMUX1


,当选择信号


S


为低时,选择


I1


;否则输出


I0






BUFMUX


原语的例化代码模板如下所示:

< br>




BUFMUX

< p>
原语的例化代码模板如下所示:




// BUFGMUX:


全局时钟的


2



1


复用器(


Global Clock Buffer 2-to-1 MUX





//


适用芯片:


Virtex- II/II-Pro/4/5, Spartan-3/3E/3A



// Xilinx HDL


库向导版本,


ISE 9.1



BUFGMUX BUFGMUX_inst (



.O(O), //


时钟复用器的输出信号




.I0(I0), // 0


时钟输入信号




.I1(I1), //1


时钟输入信号




.S(S) //


时钟选择信号




);



//


结束


BUFGMUX_inst


模块的例化过程





需要注意的是:该原语只用用全局时钟处理,不能作为接口使 用。在综合结果分析时,


它和同类原语


BUFMUX1



RTL


级结构如图


3 -33


所示。







3-33


全局时钟复用器的


RTL


级结构示意图




3. BUFIO




BUFIO


是本地

< br>I/O


时钟缓冲器,其


RTL


结 构如图M所示,只有一个输入与输出,非常


简单。


BUFIO< /p>


使用独立于全局时钟网络的专用时钟网络来驱动纵向


I/O


管脚,所以非


常适合同步数据采集。


BUFI O


要求时钟和相应的


I/O


必须在同一 时钟区域,而不同时


钟网络的驱动需要


BUFR


原语来实现。需要注意的是,由于


BUFIO


引出的时 钟只到达



I/O


列,所以不能来驱动 逻辑资源,如


CLB


和块


RAM






BUFIO


的例化代码模板如下:





// BUFIO:

< p>
本地


I/O


时钟缓冲器(



Local Clock Buffer





//


适用芯片:


Virtex-4/5



// Xilinx HDL


库向导版本,


ISE 9.1



BUFIO BUFIO_inst (



.O(O), //


本地


I/O


时钟缓冲器的输出信号




.I(I) //


本地


I/O


时钟缓冲器的输入信号




);



//


结束


BUFIO


模块的例化过程




在综合结果分析时,其


RTL


级结构如图


3-34


所示。

< br>




3-34


本地


I/O


时钟缓冲器的


R TL


级结构示意图




4. BUFR




BUFR


是本地


I/O


时钟、


逻辑缓冲器,



RTL


结构如图M所示。


BUFR



BUFIO


都是将


驱动时钟引入某一时钟区域的专用时钟网络,


而独立于全局时钟网络;


不同的是,


B UFR


不仅可以跨越不同的时钟区域(最多


3

< br>个),还能够驱动


I/O


逻辑以及自身或邻近时


钟区域的逻辑资源。


BUFIO


的输出和本地内 部互联都能驱动


BUFR


组件。此外,


BUFR


能完成输入时钟


1



8


的整数分频。因此,


BUFR


是同步设计中实现跨时钟域以及串并


转换的最佳方式。





BUFIO


的例化代码模板如下:





// BUFR:


本地


I/O


时钟、逻辑缓冲器(

Regional Clock Buffer





//


适用芯片:


Virtex-4/5



// Xilinx HDL


库向导版本,


ISE 9.1




BUFR #(



.BUFR_DIVIDE(



//


分频比,可选择







.SIM_DEVICE(



//


指定目标芯片


,


或者





) BUFR_inst (



.O(O), //


时钟缓存输出信号




.CE(CE), //


时钟使能信号,输入信号




.CLR(CLR), //


时钟缓存清空信号




.I(I) //


时钟缓存输入信号




);



//


结束


BUFR

< br>模块的例化过程





需要注意的是:


BUFIO


< br>BUFR


只能在


Virtex-4


系列以及更高系列芯片中使用。在综


合结果分析时,其


RTL


结构如图


3-35


所示。







3-35


本地

I/O


时钟、逻辑缓冲器的


RTL


级结构示意图




5. DCM_BASE




DCM_BA SE


是基本数字时钟管理模块的缩写,


是相位和频率可配置的数 字锁相环电路,


常用于


FPGA


系统中 复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用


DCM_ADV


原语;


如果需要相位动态偏移,


可使用


DCM_PS


原语。


DCM

系列原语的


RTL


结构如图


3-8


所示。



模块接口信号的说明如表


3-8


所列。




DCM_BASE


组件可以通过


Xil inx



IP Wizard


向导产生 ,


也可以直接通过下面的例化代


码直接使用。其


Verilog


的例化代码模板为:





// DCM_BASE:


基本数字时钟管理电路(


Base Digital Clock Manager Circuit





//


适用芯片:


Virtex-4/5



// Xilinx HDL


库向导版本,


ISE 9.1



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.0 or 16.0



.CLKFX_DIVIDE(1), // Can be any integer from 1 to 32



// CLKFX


信号的分频比,可为


1



32


之间的任意整数




.CLKFX_MULTIPLY(4),



// CLKFX


信号的倍频比,可 为


2



32


之 间的任意整数




.CLKIN_DIVIDE_BY_2(



//


输入信号


2

分频的使能信号,可设置为


TRUE/FALSE



.CLKIN_PERIOD(10.0),



//


指定输入时钟的周期,单位为


n s


,数值范围为


1.25~1000.00




.CLKOUT_PHASE_SHIFT(



//


指定移相模式,可设置为


NON E



FIXED



.CLK_FEEDBACK(



//


指定反馈时钟的频率,可设置为


NONE



1X



2X


。相应的频率关系都是针对


CLK0


而言的。




.DCM_PERFORMANCE_MODE(



// DCM


模块性能模式,可设置为



MAX_SPEED




MAX_RANGE



.DESKEW_ADJUST(



//


抖动调整,可设置为源同步、系统同步或


0~15


之间的任意整数




.DFS_FREQUENCY_MODE(



//


数字频率合成模式,可设置为


L OW



HIGH


两种频率模式




.DLL_FREQUENCY_MODE(



// DLL


的频率模式,可设置为


L OW



HIGH


HIGH_SER



.DUTY_CYCLE_CORRECTION(



//


设置是否采用双周期校正,可设为


TRUE



FALSE



.FACTORY_JF(16'hf0f0),



// 16


比特的


JF


因子参数




.PHASE_SHIFT(0),



//


固定相移的数值,可设置为



-255 ~ 1023


之间的任意整数




.STARTUP_WAIT(



//



DCM


锁相后再延迟配置

< p>
DONE


管脚,可设置为


TRUE/FALSE



) DCM_BASE_inst (



.CLK0(CLK0), // 0


度移相的


DCM


时钟输出




.CLK180(CLK180), // 180


度移相的


DCM


时钟输出




.CLK270(CLK270), // 270


度移相的


DCM


时钟输出

< br>



.CLK2X(CLK2X), // DCM


模块的


2


倍频输出




.CLK2X180(CLK2X180), //


经过


180


度相移的


DCM


模块


2


倍频输出




.CLK90(CLK90), // 90


度移相的


DCM


时钟输出

< br>



.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-36 DCM


模块的

< p>
RTL


级结构示意图




3.4.3


配置和检测组件





配置和检测组件提供了

< p>
FPGA


内部逻辑和


JTAG

扫描电路之间的数据交换以及控制功


能,只要由


6


个原语组成,如表


3-9


所示。




3-9


配置和检测原语列表





下面对


BSCAN_VIRTEX4


组件进行简单介绍,其余组件的使用方法是类似的。





1



BSCAN_VIRTEX4





JTAG USER1/2/3/4


指令被加载后,


BSCAN_VIRTEX4


允许设计人员来检 测


TCK



TMS

以及


TDI


等专用


JTAG


管脚的数据,并且可以将用户数据写入到


TDO


管脚上,这样可


以在


PC


上通过


JTAG


链读取芯片内部的用户数据。





BSCAN_VIRTEX4


的管脚信号说明如下:





CAPTURE


:位宽为

< p>
1


的输出信号,用于指示是否加载了用户指令,当


JTAG


接口处于

-


-


-


-


-


-


-


-



本文更新与2021-03-02 21:25,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/693313.html

第4节 Xilinx公司原语的使用方法1的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文