xilinx原语的使用方法

更新时间:2023-06-10 01:23:16 阅读: 评论:0

Xilinx原语的使用方法1
3.4 Xilinx公司原语的使用方法
原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的库函数,类似于C++中的“cout”等关键字,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM等,相当于软件中的机器语言。在实现过程中的翻译步骤时,要将所有的设计单元都转译为目标器件中的基本元件,否则就是不可实现的。原语在设计中可以直接例化使用,是最直接的代码输入方式,其和HDL语言的关系,类似于汇编语言和C语言的关系。
英语手抄报内容大全
Xilinx公司提供的原语,涵盖了FPGA开发的常用领域,但只有相应配置的硬件才能执行相应的原语,并不是所有的原语都可以在任何一款芯片上运行。在Verilog中使用原语非常简单,将其作为模块名直接例化即可。本节以Virtex-4平台介绍各类原语,因为该系列的原语类型是最全面的。其它系列芯片原语的使用方法是类似的。
Xilinx公司的原语按照功能分为10类,包括:计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM 组件、Slice/CLB组件以及G比特收发器组件。下面分别对其进行详细介绍。
3.4.1 计算组件
计算组件指的就是DSP48核,也有人将其称为硬件乘法器,功能描述如表3-6所示。
安全生产目标责任书表3-6 计算组件清单
恐惧近义词
DSP48 其结构为一个18*18比特的有符号乘法器,且在后面还级联了一个带有可配置流水线的3输入加法器
DSP48核由一个18比特的乘法后面级联一个48比特的加法器,乘法器和加法器的应用位宽分别可以在18、48比特内任意调整。其在乘加模块中有广泛应用,特别是各类滤波器系统中,不仅可以提高系统稳定性,还能够节省逻辑资源且工作在高速模式下。其在Verilog中的例化模版为:
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("DIRECT"),
// 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("MULT18X18S"),
// 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 lect
.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), // Ret input for A pipeline registers
.RSTB(RSTB), // Ret input for B pipeline registers
.RSTC(RSTC), // Ret input for C pipeline registers
.RSTCARRYIN(RSTCARRYIN), // Ret input for CARRYIN registers
.RSTCTRL(RSTCTRL), // Ret input for CTRL registers
.RSTM(RSTM), // Ret input for multiplier registers
.RSTP(RSTP), // Ret 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
BUFMUX是全局时钟复用器,选择两个输入时钟I0或I1中的一个作为全局时钟,其和同类原语BUFMUX1的RTL级结构如图M所示。当选择信号S 为低时,选择I0;否则输出I1,其真值表如表M所
示。BUFMUX原语和BUFMUX1原语的功能一样,只是选择逻辑不同,对于BUFMUX1,当选择信号S为低时,选择I1;否则输出I0。
BUFMUX原语的例化代码模板如下所示:
// 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是本地I/O时钟缓冲器,其RTL结构如图M所示,只有一个输入与输出,非常简单。BUFIO使用独立于全局时钟网络的专用时钟网络来驱动纵向I/O管脚,所以非常适合同步数据采集。BUFIO要求时
钟和相应的I/O 必须在同一时钟区域,而不同时钟网络的驱动需要BUFR原语来实现。需要注意的是,由于BUFIO引出的时钟只到达了I/O列,所以不能来驱动逻辑资源,如CLB和块RAM。
BUFIO的例化代码模板如下:
// BUFIO: 本地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所示。
图3-34 本地I/O时钟缓冲器的RTL级结构示意图
4. BUFR
BUFR是本地I/O时钟、逻辑缓冲器,其RTL结构如图M所示。BUFR和BUFIO都是将驱动时钟引入某一时钟区域的专用时钟网络,而独立于全局时钟网络;不同的是,BUFR不仅可以跨越不同的时钟区域(最多3个),还能够驱动I/O逻辑以及自身或邻近时钟区域的逻辑资源。BUFIO的输出和本地内部互联都能驱动BUFR组件。此外,BUFR能完成输入时钟1~8的整数分频。因此,BUFR是同步设计中实现跨时钟域以及串并转换的最佳方式。
BUFIO的例化代码模板如下:

本文发布于:2023-06-10 01:23:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1031466.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时钟   原语   全局   组件   信号   缓冲器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图