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

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

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

Xilinx 原语

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 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

BUFMUX是全局时钟复用器,选择两个输入时钟I0或I1中的一个作为全局时钟,其和同类原语BUFMUX1的RTL级结构如图M所示。当选择信号S为低时,选择I0;否则输出I1,其真值表如表M所示。BUFMUX原语和BUFMUX1原语的功能一样,只是选择逻辑不同,对于BUFMUX1,当选择信号S为低时,选择I1;否则输出I0。

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

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的例化代码模板如下:

// BUFR: 本地I/O时钟、逻辑缓冲器(Regional Clock Buffer)

// 适用芯片:Virtex-4/5

// Xilinx HDL库向导版本,ISE 9.1

BUFR #(

.BUFR_DIVIDE("BYPASS"),

//分频比,可选择"BYPASS", "1", "2", "3", "4", "5", "6", "7", "8"。

.SIM_DEVICE("VIRTEX4")

// 指定目标芯片, "VIRTEX4" 或者"VIRTEX5"

) BUFR_inst (

.O(O), //时钟缓存输出信号

.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的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("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("LOW"),

// DLL的频率模式,可设置为LOW、HIGH或HIGH_SER

.DUTY_CYCLE_CORRECTION("TRUE"),

// 设置是否采用双周期校正,可设为TRUE或FALSE

.FACTORY_JF(16'hf0f0),

// 16比特的JF因子参数

.PHASE_SHIFT(0),

// 固定相移的数值,可设置为-255 ~ 1023之间的任意整数

.STARTUP_WAIT("FALSE")

// 等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-36 DCM模块的RTL级结构示意图

3.4.3 配置和检测组件

配置和检测组件提供了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:位宽为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接口连接的边界扫描原语(Boundary Scan primitive for connecting internal logic to JTAG interface.)

// 适用芯片:Virtex-4/5

// Xilinx HDL库向导版本,ISE 9.1

BSCAN_VIRETX4 #(

.JTAG_CHAIN(1)

// 指定JTAG链用户指令,必须为1, 2, 3, 或4中的任何一个正整数

) BSCAN_VIRETX4_inst (

.CAPTURE(CAPTURE), // 捕获到的从TAP控制器的输出

.DRCK(DRCK), // 用户函数服务的数据寄存器输出

.RESET(RESET), // TAP控制器输出的复位信号

.SEL(SEL), // 用户激活输出

.SHIFT(SHIFT), // TAP控制器的移位输出

.TDI(TDI), // TAP控制器的TDI输出信号

.UPDATE(UPDATE), // TAP控制器的UPDATE输出信号

.TDO(TDO) // 用户函数的数据输入信号

);

// 结束BSCAN_VIRETX4:模块的例化过程

在综合结果分析时,BSCAN_VIRTEX4的RTL结构图如图3-37所示。

图3-37 BSCAN_VIRTEX4原语的RTL图

3.4.4 吉比特收发器组件

吉比特收发器组件用于调用RocketIO千兆位级收发器,支持从622 Mbps 到 6.5 Gbps 的多速率应用,符合最广泛的芯片、背板和光学器件的标准及协议,具有高级Tx/Rx 均衡技术,收发器最多可达24个,提供了完整的串行I/O 解决方案。具体包括4个组件,如表3-10所示。

表3-10 吉比特收发器组件

由于吉比特收发器操作复杂,使用原语很容易出错,不易配置,因此需要在ISE中通过结构向导完成。有关吉比特收发器的原理和使用方法,将在第11章详细介绍。

3.4.5 I/O端口组件

I/O组件提供了本地时钟缓存、标准单端I/O缓存、差分I/O信号缓存、DDR专用I/O 信号缓存、可变抽头延迟链、上拉、下拉以及单端信号和差分信号之间的相互转换,具体包括了21个原语,如表3-11所示。

表3-11 I/O端口组件

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

1. BUFIO

BUFIO是FPGA芯片内部简单的时钟输入、输出缓存器,其RTL结构如图3-38所示。BUFIO使用独立于全局时钟网络的专用时钟网络来驱动I/O列,因此非常适合用于源同步的数据采集。但要注意的是:BUFIO只能在单一的时钟区域内使用,不能跨时钟域操作。此外,BUFIO也不能用于驱动逻辑资源(CLB、块RAM等),因此其只能到达I/O列。

图3-38 BUFIO的RTL结构图

2. IBUFDS

IBUFDS原语用于将差分输入信号转化成标准单端信号,且可加入可选延迟。在IBUFDS 原语中,输入信号为I、IB,一个为主,一个为从,二者相位相反。

IBUFDS的逻辑真值表如表3-12所列,其中“-*”表示输出维持上一次的输出值,保持不变。

表3-12 IBUFDS原语的输入、输出真值表

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

// IBUFDS: 差分输入缓冲器(Differential Input Buffer)

// 适用芯片:Virtex-II/II-Pro/4, Spartan-3/3E

// Xilinx HDL库向导版本,ISE 9.1

IBUFDS #(

.DIFF_TERM("FALSE"),

// 差分终端,只有Virtex-4系列芯片才有,可设置为True/Flase

.IOSTANDARD("DEFAULT")

// 指定输入端口的电平标准,如果不确定,可设为DEFAULT

) IBUFDS_inst (

.O(O), // 时钟缓冲输出

.I(I), // 差分时钟的正端输入,需要和顶层模块的端口直接连接

.IB(IB) // 差分时钟的负端输入,需要和顶层模块的端口直接连接

);

// 结束IBUFDS模块的例化过程

在综合结果分析时,IBUFDS的RTL结构如图3-39所示。

图3-39 IBUFDS原语的RTL结构图

3. IDELAY

在Virtex-4系列芯片中,每个用户I/O管脚的输入通路都有一个IDELAY模块,可用于数据信号或时钟信号,以使二者同步,准确采集输入数据。IDELAY具有可控的64抽头延迟线,每个抽头的延迟都是经过精密校准的78ps,且与进程、电压和温度特性无关,其内部结构如图3-40所示。

图3-40 IDELAY模块的RTL级结构图

IDELAY原语的信号说明如下:

I:单比特输入信号,来自于IOB的串行输入数据;

C:单比特输入信号,时钟输入信号;

INC:单比特输入信号,用于增加或减少延迟抽头数;

CE:单比特输入信号,使能延迟抽头数增加或减少的功能;

RST:单比特输入信号,复位延迟链的延迟抽头数,如果没有编程输入,则为0;O:单比特输出信号。

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

// IDELAY: 输入延迟单元(Input Delay Element)

// 适用芯片:Virtex-II/II-Pro/4, Spartan-3/3E

// Xilinx HDL库向导版本,ISE 9.1

IDELAY #(

.IOBDELAY_TYPE("DEFAULT"),

// 输入延迟类型,可设置为"DEFAULT", "FIXED" 或者"VARIABLE"

.IOBDELAY_VALUE(0)

// 输入延迟周期数,可设置为0~63之间的任意整数

) IDELAY_inst (

.O(O), //1比特输出信号

.C(C), // 1比特时钟输入信号

.CE(CE), // 1比特时钟使能信号

.I(I), // 1比特数据输入信号

.INC(INC), // 1比特增量输入信号

.RST(RST) //1比特复位输入信号

);

// 结束IDELAY模块的例化过程

在综合结果分析时,IDELAY原语的RTL结构如图3-41所示。

图3-41 IDELAY原语的RTL结构图

4. OBUFDS原语

OBUFDS将标准单端信号转换成差分信号,输出端口需要直接对应到顶层模块的输出信号,和IBUFDS为一对互逆操作。OBUFDS原语的真值表如表3-13所列。

表3-13 OBUFDS原语的真值表

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

// OBUFDS: 差分输出缓冲器(Differential Output Buffer)

// 适用芯片:Virtex-II/II-Pro/4, Spartan-3/3E

// Xilinx HDL库向导版本,ISE 9.1

OBUFDS #(

.IOSTANDARD("DEFAULT")

// 指名输出端口的电平标准

) OBUFDS_inst (

.O(O), // 差分正端输出,直接连接到顶层模块端口

.OB(OB), // 差分负端输出,直接连接到顶层模块端口

.I(I) // 缓冲器输入

);

// 结束OBUFDS模块的例化过程

在综合结果分析时,OBUFDS原语的RTL结构如图3-42所示。

图3-42 OBUFDS的RTL结构图

5. IOBUF原语

IOBUF原语是单端双向缓冲器,其I/O接口必须和指定的电平标准相对应,支持LVTTL、LVCMOS15、LVCMOS18、LVCMOS25以及LVCMOS33等信号标准,同时还可通过DRIVE、FAST 以及SLOW等约束来满足的不同驱动和抖动速率的需求。默认的驱动能力为12mA,低抖动。IOBUF由IBUF和OBUFT两个基本组件构成,当I/O端口为高阻时,其输出端口O为不定态。IOBUF原语的功能也可以通过其组成组件的互联来实现。

IOBUF原语的输入输出真值表如表3-14所列。

表3-14 IOBUF原语的真值表

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

// IOBUF: 单端双向缓冲器(Single-ended Bi-directional Buffer)

// 适用芯片:所有芯片

// Xilinx HDL库向导版本,ISE 9.1

IOBUF #(

.DRIVE(12),

// 指定输出驱动的强度

.IOSTANDARD("DEFAULT"),

// 指定I/O电平的标准,不同的芯片支持的接口电平可能会有所不同

.SLEW("SLOW")

// 制定输出抖动速率

) IOBUF_inst (

.O(O), // 缓冲器的单元输出

.IO(IO), // 缓冲器的双向输出

.I(I), // 缓冲器的输人

.T(T) // 3态使能输入信号

);

// 结束IOBUF模块的例化过程

在综合结果分析时,IOBUF原语的RTL结构如图3-43所示。

图3-43 OBUFDS的RTL结构图

6. PULLDOWN和PULLUP原语

数字电路有三种状态:高电平、低电平、和高阻状态。有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使其处于稳定状态,如图3-44所示。FPGA 的I/O端口,可以通过外接电阻上下拉,也可以在芯片内部,通过配置完成上下拉。上拉电阻是用来解决总线驱动能力不足时提供电流的,而下拉电阻是用来吸收电流。通过FPGA内部配置完成上下拉,能有效节约电路板面积,是设计的首选方案。

图3-44 上、下拉电路示意图

上、下拉的原语分别为PULLUP和PULLDOWN。

1)PULLUP原语的例化代码

// PULLUP: 上拉原语(I/O Buffer Weak Pull-up)

// 适用芯片:所有芯片

// Xilinx HDL库向导版本,ISE 9.1

PULLUP PULLUP_inst (

.O(O),

//上拉输出,需要直接连接到设计的顶层模块端口上);

// 结束PULLUP模块的例化过程

2)PULLDOWN原语的例化代码

// PULLDOWN:下拉原语(I/O Buffer Weak Pull-down)

// 适用芯片:所有芯片

// Xilinx HDL库向导版本,ISE 9.1

PULLDOWN PULLDOWN_inst (

.O(O),

// 下拉输出,需要直接连接到设计的顶层模块端口上

);

// 结束PULLDOWN模块的例化过程

3.4.6 处理器组件

处理器组件主要包括高速以太网MAC控制器和PowerPC硬核,如表3-15所示。

表3-15处理器组件列表

处理器组件是Xilinx的嵌入式解决方案,涉及软、硬件调试以及系统设计,将在第8章详细介绍。

xilinx FPGA SelectIO模块资料

5.1.6 SelectIO模块 Virtex-6每个I/O片(I/O Tile)包含两个IOB、两个ILOGIC、两个OLOGIC 和两个IODELAY,如图5-24 所示。 图5-24 I/O 片结构图 本小节就以下几个方面介绍Virtex-6 的SelectIO 资源。 (1) SelectIO 的电气特性。 (2) SelectIO 的逻辑资源——ILOGIC 资源和OLOGIC 资源。 (3) SelectIO 的高级逻辑资源——ISERDES 资源、OSERDES 资源和Bitslip。 一、SelectIO IO 的电气特性 所有的Virtex-6 FPGA 有高性能的可配置SelectIO 驱动器与接收器,支持非常广泛的接口标准。强大的功能SelectIO 包括输出强度和斜率的可编程控制以及使用数控阻抗(DCI)的片上终端。

IOB 包含输入、输出和三态SelectIO 驱动器。支持单端I/O 标准(LVCMOS、 HSTL、SSTL)和差分I/O 标准(LVDS、HT、LVPECL、BLVDS、差分HSTL 和SSTL)。 注意:差分输入和VREF 相关输入由VCCAUX 供电。 IOB、引脚及内部逻辑的连接如图5-25 所示。 图5-25 IOB、引脚及内部逻辑连接图 IOB 直接连接ILOGIC/OLOGIC 对,该逻辑对包含输入和输出逻辑资源,可实现数据和三态控制。ILOGIC和OLOGIC可分别配置为ISERDES和OSERDES。Xilinx软件库提供了大量与I/O相关的原语,在例化这些原语时,可以指定I/O 标准。与单端I/O相关的原语包括IBUF(输入缓冲器)、IBUFG(时钟输入缓冲器)、OBUF(输出缓冲器)、OBUFT(三态输出缓冲器)和IOBUF(输入/输出缓冲器)。与差分I/O相关的原语包括IBUFDS(输入缓冲器)、IBUFGDS (时钟输入缓冲器)、OBUFDS(输出缓冲器)、OBUFTDS(三态输出缓冲器)、IOBUFDS(输入/输出缓冲器)、IBUFDS_DIFF_OUT(输入缓冲器)和IOBUFDS_DIFF_OUT(输入/输出缓冲器)。 二、SelectIO的逻辑资源 SelectIO的逻辑资源主要是指ILOGIC和OLOGIC资源,它们完成了FPGA引脚到内部逻辑的连接功能,包括组合输入/输出、三态输出控制、寄存器输入/输出、寄存器三态输出控制、DDR输入/输出、DDR输出三态控制、IODELAYE1高分辨率可调整延迟单元及其控制模块。 下面简要介绍ILOGIC和OLOGIC功能。

Xilinx-XADC的使用中文介绍doc资料

Zynq器件XADC的使用(原创) 1.前言 赛灵思的7系列FPGA和Zynq器件创造性地在片上集成了模数转换器和相关的片上传感器(内置温度传感器和功耗传感器),这是相比赛灵思前一代产品来新增加的特性,可在系统设计中免去外置的ADC器件,有力地提高了系统的集成度。本文就这一新模块的使用进行简单介绍,希望对大家有所帮助,当然如有不当之处还请高手指正,以免误导大家,欢迎大家补充。 2.XADC模块介绍 2.1 XADC模块概述 Zynq器件XADC模块包括2个12比特1 MIPS的模数转换器和相关的片上传感器,模数转换器能为系统应用提供通用目的的高精度的模拟接口,下图是XADC模块的框图: XADC模块支持不同的操作模式,如外步触发同步采样模式;可接受不同类型的模拟输入信号,如单端或差分信号;最多能接受17路外部的模拟输入信号。XADC模块也包括一定数量的片上传感器用来测量片上的供电电压和芯片温度,这些测量转换数据存储在一个叫状态寄存器(status registers)的专用寄存器内,可由FPGA内部叫动态配置端口(Dynamic

Reconfiguration Port (DRP))的16位的同步读写端口访问。ADC转换数据也可以由JTAG TAP访问,这种情况下并不需要去直接例化XADC模块,因为这是一个已经存在于FPGA JTAG结构的专用接口,此时因为没有在设计中直接例化XADC模块,XADC模块就工作在一种预先定义好的模式叫缺省模式,缺省模式下XADC模块专用于监视芯片上的供电电压和芯片温度。XADC模块的操作模式是由用户通过DRP或JTAG接口写控制寄存器来选择的,控制寄存器的初始值有可能在设计中例化XADC模块时的块属性(block attributes)指定。 2.2 XADC模块管脚需求 所有的XADC模块专用管脚都位于bank0, 所以都加有_0的后缀。下图表示了XADC的基本输入输出需求: 这有两种推荐配置:图中左边XADC由Vccaux(1.8V)供电,并且用一个外部的1.25V参考源。用外部参考源在精度和热飘移方面可以获得更好的性能,一个磁珠用隔离模拟地和数字地,这可避免较常用的模拟和数字电路共地而把噪声带入模拟电路的缺点;图中右边XADC是用片内的参考源,这时VREFP脚必须按图中所示连接到地。

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

第4节Xilinx公司原语的使用方法1 Xilinx 原语 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; //

使用Xilinx CORE Generator

使用Xilinx CORE Generator心得 初步使用Xilinx CORE Generator: 参考书籍:《Xilinx ISE 5.x 使用详解》EDA先锋工作室 P63-P72:IP核生成工具——CORE Generator 1. 对于如何在工程中加入IP核,是很简单的,我在未看书之前,就可根据提示挑选适当的核,对核进行参数设置,将核加入工程。 2. 接下来是如何使用,在这里,由于我主要使用VHDL语言,仿真工具用ModelSim6.0,综合工具主要使用Synplify7.7,我就只说在这样的环境下如何对该IP核进行元件例化,进行项目配置,并进行仿真与综合。 2.1 元件例化 可使用ISE的Laguage Template,也就是Xilinx 6.2 ISE中工具栏右上角的小灯泡,在COREGEN目录下,你会发现,你所用到的IP核的例化语句已经出现在模板里,拷过去就可以直接用了(当然你可能也要视情况进行必要的改动)。 3. 仿真 这里,最主要的问题是库,由于使用了IP核,所以要把XilinxCroeLib加入ModelSim库中。我的经验是:先在当前工程的目录下创建一个xilinxcorelib库,然后把该库文件剪切到modelsim根目录下,最后在modelsim下,选中该库,点击右键选择Edit,将路径高到modelsim下。然后将xilinx\vhdl\src\xilinxcorelib编译到该库中。此时要注意,由于库文件的关联性,第一次不可能全部编译通过,连续三次后,大多数核就在库中,只有少数几个不能通过编译。 4. 综合 由于综合过程中,提示如下(下面是我在comp.arch.fpga上所发的问题): In my project,there's a xilinx IP core. I want to use the synplify7.7 to synthesize it, but there's a warning when synthesize . The warning is : @W: CD280 :"G:\project\itu656_dec\itu656_Decoder.vhd":29:10:29:19|Unbound component counter_11 mapped to black box @W: CD280 :"G:\project\itu656_dec\itu656_Decoder.vhd":37:10:37:18|Unbound component counter_4 mapped to black box my project nane is itu656_dec : a decoder for itu 656 video The following code has been used in my project: component counter_11 port ( Q: OUT std_logic_VECTOR(10 downto 0); CLK: IN std_logic; CE: IN std_logic; ACLR: IN std_logic); end component; component counter_4

Xilinx原语的使用方法1

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,

Xilinx FPGA DCI的应用

Xilinx系列FPGA的DCI技术 1、DCI技术概述 随着FPGA芯片越大而且系统时钟越高,PCB板设计以及结构设计变得越难,随着速率的提高,板间的信号完整性变的非常关键,PCB板上若有关键信号,那么需要进行阻抗匹配,从而避免信号的反射和震荡。Xilinx公司提供DCI (Digitally Controlled Impedance)可以在芯片内部进行阻抗匹配,匹配电阻更加接进芯片,可以减少元器件,节省PDB板面积,并且也更方便走线。 传统的阻抗匹配是在PCB板上端接一个电阻。理想情况下,源端输出阻抗认为是很小的,而接受端的输入阻抗认为是很大,在实际电路中都可以不去考虑,只考虑PCB上的走线,从接收端看过去PCB特征阻抗应该等于源端接电阻,这样电流从源端流向接收端才不会导致反射。 2、阻抗匹配原理 阻抗匹配是指负载阻抗与激励源内部阻抗互相适配,得到最大功率输出的一种工作状态。对于不同特性的电路,匹配条件是不一样的。在纯电阻电路中,当负载电阻等于激励源内阻时,则输出功率为最大,这种工作状态称为匹配,否则称为失配。当激励源内阻抗和负载阻抗含有电抗成份时,为使负载得到最大功率,负载阻抗与内阻必须满足共扼关系,即电阻成份相等,电抗成份只数值相等而符号相反。这种匹配条件称为共扼匹配。 在高速的设计中,阻抗的匹配与否关系到信号的质量优劣。阻抗匹配的技术可以说是丰富多样,但是在具体的系统中怎样才能比较合理的应用,需要衡量多个方面的因素。例如我们在系统中设计中,很多采用的都是源段的串连匹配。对于什么情况下需要匹配,采用什么方式的匹配,为什么采用这种方式。例如:差分的匹配多数采用并联终端匹配;时钟采用串联源端匹配。

Xilinx ISE 使用入门手册

Xilinx ISE使用入门手册1 发布日期:2009-3-613:06:10文章来源:搜电浏览次数:2940 1、ISE的安装 现以ISE5.2i为例介绍Xilinx ISE Series的安装过程。 1)系统配置要求 ISE5.2i推荐的系统配置与设计时选用的芯片有关。因为在综合与实现过程中运算量非常大,所以对系统配置要求很高。为了提高综合、仿真、实现过程的速度,对于计算机的CPU的主频、主板和硬盘的工作速度,尤其是内存大小配置都有非常高的要求。在ISE5.2i 支持的所有Xilinx的FPGA/CPLD中,要求最低的Spartan II和XC9500/XL/XV等系列需要的内存和虚拟内存推荐值均达到128MB,而对于Virtex-II XC2V8000来说,需要的内存和虚拟内存推荐值均高达3GB。 2)ISE5.2i的安装 以中文版Windows XP操作系统为例加以说明。 (1)启动Windows XP,插入ISE5.2i安装光盘,自动或选择执行Install.exe,安装界面如图4.25所示。 图4.25ISE5.2i安装界面

(2)单击此时安装界面上的操作选择“下一步”直到出现图示对话框,输入有效的Registration ID。之后单击“下一步”选择安装路径;再之后点击“下一步”,会弹出图4.26的对话框,可以选择器件模型。 图4.26器件模型选择对话框 (3)点击“下一步”,如图4.27所示,可以选择器件种类。

图4.27器件种类选择对话框 通过以上步骤后,可根据具体情况来选择,继续“下一步”即可完成安装。 安装完成后,环境变量应作如下描述: 若操作系统是Windows NT/2000/XP,选择开始->控制面板->系统->选项->系统->高级->环境变量,在环境变量中加入: 变量名:Xilinx 变量值:C:Xilinx(即安装路径) 具体设置如图4.28所示。

Xilinx FPGA全局时钟资源的使用方法

目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA 中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的Virtex II器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等,如图1所示。 1. IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和SSTL等多种格式的IO标准。 2. IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。 3. BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。 4. BUFGCE是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。 5. BUFGMUX是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。

xilinx 新手快速入门的好资料

⊙当前位置:搜电>> 资料>> Xilinx ISE 使用入门手册1 Xilinx ISE 使用入门手册1 发布日期:2009-3-6 13:06:10文章来源:搜电浏览次数:10677 1、ISE的安装 现以ISE 5.2i为例介绍Xilinx ISE Series的安装过程。 1)系统配置要求 ISE 5.2i推荐的系统配置与设计时选用的芯片有关。因为在综合与实现过程中运算量非常大,所以对系统配置要求很高。为了提高综合、仿真、实现过程的速度,对于计算机的CPU的主频、主板和硬盘的工作速度,尤其是内存大小配置都有非常高的要求。在ISE 5.2i支持的所有Xilinx的FPGA/CPLD中,要求最低的Spartan II和XC9500/XL/XV等系列需要的内存和虚拟内存推荐值均达到128MB,而对于Virtex-II XC2V8000来说,需要的内存和虚拟内存推荐值均高达3GB。 2)ISE 5.2i的安装 以中文版Windows XP操作系统为例加以说明。 (1)启动Windows XP,插入ISE5.2i安装光盘,自动或选择执行Install.exe,安装界面如图4.25所示。 图4.25 ISE5.2i安装界面 (2)单击此时安装界面上的操作选择“下一步”直到出现图示对话框,输入有效的Registration ID。之后单击“下一步”选择安装路径;再之后点击“下一步”,会弹出图4.26的对话框,可以选择器件模型。

图4.26 器件模型选择对话框 (3)点击“下一步”,如图4.27所示,可以选择器件种类。

图4.27 器件种类选择对话框 通过以上步骤后,可根据具体情况来选择,继续“下一步”即可完成安装。 安装完成后,环境变量应作如下描述: 若操作系统是Windows NT/2000/XP,选择开始->控制面板->系统->选项->系统->高级->环境变量,在环境变量中加入: 变量名:Xilinx 变量值:C:Xilinx(即安装路径) 具体设置如图4.28所示。

深入Xilinx Clocking Wizard 3.6(ISE) 4.2(Vivado)

SECTION I——综述 IP Facts Introduction Xilinx的Clocking Wizard Core(ISE v3.6,或VIVADO v4.2)可以更让用户根据自己的时钟需求更轻松地生成HDL源码封装。这个Clocking Wizard引导用户设置适当的时钟原语,并且允许用户覆盖其中的参数。除了提供目标时钟电路的HDL封装之外,Clocking Wizard会同时产生一个时序参数报告,这个报告由Xilinx的时序工具针对该电路分析得到。 Features ●每个时钟网络最多两个输入时钟、七个输出时钟 ●根据选定的器件自动选择正确的时钟原语 ●根据用户选定的时钟feature自动配置时钟原语 ●根据输入和输出频率的需求,自动计算VCO(压控振荡器)频率喝倍频、分频数值 ●自动执行所有的配置以符合相移、占空比需求 ●支持MMCME2的扩频时钟,允许用户选择有效的调制频率、模式和输入、输出时钟●可选的时钟信号缓冲器 ●时钟原语和任何计算属性可覆写 ●时钟电路的时序可预估,功耗可预估 ●生成一个可综合的时钟网络设计和一个仿真测试脚本 ●原语对应的窗口可供选择

对于不同的工具,Clocking Wizard所支持的器件版本可以通过这个core的release notes 来查询,文档名XPT也可以在ISE中添加IP CORE时查询Supported Families… Overview Clocking Wizard可以提供一个经验证的时钟网络,用户对Xilinx时钟原语的了解可以帮助用户做出权衡设计的决定。

Feature Summary ●Frequency synthesis 频率综合——允许输出不同于输入时钟频率的时钟 ●Spread spectrum 扩展频谱——扩频功能使经过调制的输出时钟减少EMI频谱能量密度,这个功能仅适用于原语MMCME2_ADV,当前版本不支持软件UNISIM对于此功能的仿真 ●Phase alignment 相位对齐——这个功能允许输出时钟和参考时钟的相位锁定,锁定的是相对相位差,例如一个器件的输入时钟 ●Minimize power 功耗优化——对于可能的频率、相位或占空比的精度功耗,这项功能能给与优化 ●Dynamic phase shift 动态相移——这项功能允许用户选择输出时钟的相位关系 ●Balanced 性能平衡——选择性能平衡会让软件选择合适的带宽来进行抖动优化 ●Minimize output jitter ●Maximize input jitter filtering 上述两项功能用于输入输出时钟抖动的过滤 ●Fast simulation 快速仿真——提高仿真运行速度

XilinxXADC的使用中文介绍.docx

Zynq 器件 XADC的使用 ( 原创 ) 1.前言 赛灵思的7 系列 FPGA和 Zynq 器件创造性地在片上集成了模数转换器和相关的片上传感器(内置温度传感器和功 耗传感器),这是相比赛灵思前一代产品来新增加的特性,可在系统设计中免去外置的ADC器件,有力地提高了系统 的集成度。本文就这一新模块的使用进行简单介绍,希望对大家有所帮助,当然如有不当之处还请高手指正,以免误 导大家,欢迎大家补充。 2. XADC模块介绍 2.1 XADC 模块概述 Zynq 器件 XADC模块包括2 个 12 比特 1 MIPS的模数转换器和相关的片上传感器,模数转换器能为系统应用提供通用目 的的高精度的模拟接口,下图是XADC模块的框图: XADC模块支持不同的操作模式,如外步触发同步采样模式;可接受不同类型的模拟输入信号,如单端或差分信号;最多能接受 17 路外部的模拟输入信号。 XADC模块也包括一定数量的片上传感器用来测量片上的供电电压和芯片温度,

这些测量转换数据存储在一个叫状态寄存器(status registers)的专用寄存器内,可由FPGA内部叫动态配置端口(Dynamic Reconfiguration Port (DRP))的16 位的同步读写端口访问。ADC转换数据也可以由JTAG TAP访问,这种情况 下 并不需要去直接例化 XADC模块,因为这是一个已经存在于 FPGAJTAG结构的专用接口,此时因为没有在设计中直接例化XADC模块, XADC模块就工作在一种预先定义好的模式叫缺省模式,缺省模式下 XADC模块专用于监视芯片上的供电电压和芯片温度。 XADC模块的操作模式是由用户通过 DRP或 JTAG接口写控制寄存器来选择的,控制寄存器的初始值有可能在设计中例化 XADC模块时的块属性( block attributes )指定。 2.2 XADC 模块管脚需求 所有的 XADC模块专用管脚都位于bank0,所以都加有_0的后缀。下图表示了XADC的基本输入输出需求: 这有两种推荐配置:图中左边 XADC由 Vccaux(1.8V) 供电,并且用一个外部的 1.25V 参考源。用外部参考源在精度和热飘移方面可以获得更好的性能,一个磁珠用隔离模拟地和数字地,这可避免较常用的模拟和数字电路共地而把噪 声带入模拟电路的缺点;图中右边XADC是用片内的参考源,这时VREFP脚必须按图中所示连接到地。

Xilinx ISE 使用入门手册

Xilinx ISE 使用入门手册 发布日期:2009-3-6 13:06:10文章来源:搜电浏览次数:6414 1、ISE的安装 现以ISE 5.2i为例介绍Xilinx ISE Series的安装过程。 1)系统配置要求 ISE 5.2i推荐的系统配置与设计时选用的芯片有关。因为在综合与实现过程中运算量非常大,所以对系统配置要求很高。为了提高综合、仿真、实现过程的速度,对于计算机的CPU的主频、主板和硬盘的工作速度,尤其是内存大小配置都有非常高的要求。在ISE 5.2i支持的所有Xilinx的FPGA/CPLD中,要求最低的Spartan II和XC9500/XL/XV 等系列需要的内存和虚拟内存推荐值均达到128MB,而对于Virtex-II XC2V8000来说,需要的内存和虚拟内存推荐值均高达3GB。 2)ISE 5.2i的安装 以中文版Windows XP操作系统为例加以说明。 (1)启动Windows XP,插入ISE5.2i安装光盘,自动或选择执行Install.exe,安装界面如图4.25所示。 图4.25 ISE5.2i安装界面 (2)单击此时安装界面上的操作选择“下一步”直到出现图示对话框,输入有效的Registration ID。之后单击“下一步”

选择安装路径;再之后点击“下一步”,会弹出图4.26的对话框,可以选择器件模型。 图4.26 器件模型选择对话框 (3)点击“下一步”,如图4.27所示,可以选择器件种类。

图4.27 器件种类选择对话框 通过以上步骤后,可根据具体情况来选择,继续“下一步”即可完成安装。 安装完成后,环境变量应作如下描述: 若操作系统是Windows NT/2000/XP,选择开始->控制面板->系统->选项->系统->高级->环境变量,在环境变量中加入: 变量名:Xilinx 变量值:C:Xilinx(即安装路径) 具体设置如图4.28所示。

Xilinx-XADC的使用中文介绍

1.前言 赛灵思的7系列FPGA 和Zynq 器件创造性地在片上集成了模数转换器和相关的片上传感器(内置温度传感器和功 耗传感器),这是相比赛灵思前一代产品来新增加的特性,可在系统设计中免去外置的 ADC 器件,有力地提高了系统 的集成度。本文就这一新模块的使用进行简单介绍,希望对大家有所帮助,当然如有不当之处还请高手指正,以免误 导大家,欢迎大家补充。 2. XADC 模块介绍 2.1 XADC 模块概述 Zynq 器件XADC 模块包括2个12比特1 MIPS 的模数转换器和相关的片上传感器, 模数转换器能为系统应用提供通用目 的 的高精度的模拟接口,下图是 XADC 模块的框图: Temperature Supply VQCINT Sensor Sensors VCJC ^X a VcCBRAM XADC Block Diagram XADC 模块支持不同的操作模式, 如外步触发同步采样模式; 可接受不同类型的模拟输入信号, 如单端或差分信号; 最多能接受17路外部的模拟输入信号。 XADC 模块也包括一定数量的片上传感器用来测量片上的供电电压和芯片温度, 这些测量转换数据存储在一个叫状态寄存器( status registers )的专用寄存器内,可由 FPGA 内部叫动态配置端口 (Dynamic Reconfiguration Port (DRP))的16位的同步读写端口访问。 ADC 转换数据也可以由 JTAGTAP 访问,这种情况下 VREP_O VREFNJ) 7 ? E on-cri|)R&f 125V I VP 0 □—— mj) O —— VAUXP 0J O —— VAUXfJ q o -------------- r VAUXPE121O — VAUXN[t2P — VAUXP[13Jo —— VAUXN[13lO -------- VAUXP[UJo —— VAUXN[14lO -------- VAUXP|15iO -------- VAUXN[15JO^— Control P 却grs 怕临 &4 X Wbiis ReaaWnle —* —? Status fl egtsters O X 16 bits Bea 寸 Only 1 1 DBP 1 https://www.360docs.net/doc/1d1626953.html, Mux zJ M L W 12-K 1 MSPS ADC A V CCPWT ^7 VOCPMJ 巴 1 MSPS ADCB JTAC FPGA Inlwoonn^t

(Xilinx)FPGA中LVDS差分高速传输的实现

(Xilinx)FPGA中LVDS差分高速传输的实现 低压差分传送技术是基于低压差分信号(Low Volt-agc Differential signalin g)的传送技术,从一个电路板系统内的高速信号传送到不同电路系统之间的快速数据传送都可以应用低压差分传送技术来实现,其应用正变得越来越重要。低压差分信号相对于单端的传送具有较高的噪声抑制功能,其较低的电压摆幅允许差分对线具有较高的数据传输速率,消耗较小的功率以及产生更低的电磁辐射。 LVDS:Low Voltage Differential Signaling,低电压差分信号。 LVDS传输支持速率一般在155Mbps(大约为77MHZ)以上。 LVDS是一种低摆幅的差分信号技术,它使得信号能在差分PCB线对或平衡电缆上以几百Mbps的速率传输,其低压幅和低电流驱动输出实现了低噪声和低功耗。 差分信号抗噪特性 从差分信号传输线路上可以看出,若是理想状况,线路没有干扰时, 在发送侧,可以形象理解为: IN= IN+ —IN- 在接收侧,可以理解为: IN+ —IN- =OUT 所以: OUT = IN 在实际线路传输中,线路存在干扰,并且同时出现在差分线对上, 在发送侧,仍然是: IN = IN+ —IN- 线路传输干扰同时存在于差分对上,假设干扰为q,则接收则: (IN+ + q) —(IN- + q) = IN+ —IN- = OUT 所以: OUT = IN 噪声被抑止掉。上述可以形象理解差分方式抑止噪声的能力。 From: 美国国家半导体的《LVDS用户手册》P9

FPGA中的差分管脚 为了适用于高速通讯的场合,现在的FPGA都提供了数目众多的LVDS接口。如Spartan-3E系列FPGA提供了下列差分标准: ? LVDS ? Bus LVDS ? mini-LVDS ? RSDS ? Differential HSTL (1.8V, Types I and III) ? Differential SSTL (2.5V and 1.8V, Type I) ? 2.5V LVPECL inputs 所拥有的差分I/O管脚数目如下 From:Spartan-3E FPGA Family:Complete Data Sheet p5 I/O管脚的命名方式: From:Spartan-3E FPGA Family:Complete Data Sheet p164

FPGA全局时钟资源相关原语及其使用(BUFG)

FPGA全局时钟资源相关原语及其使用 FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的Virtex II器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。 与全局时钟资源相关的原语 包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM 等。 1. IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX 和SSTL等多种格式的IO标准。 2. IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL 和ULVDS等多种格式的IO标准。

3. BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。 4. BUFGCE是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。 5. BUFGMUX是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。 6. BUFGP相当于IBUFG加上BUFG。 7. BUFGDLL是全局缓冲延迟锁相环,相当于BUFG与DLL的结合。BUFGDLL在早期设计中经常使用,用以完成全局时钟的同步和驱动等功能。随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM所取代。 8. DCM即数字时钟管理单元,主要完成时钟的同步、移相、分频、倍频和去抖动等。DCM 与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。 全局时钟资源的使用方法(五种)

Xilinx原语ODDR概述和使用

Xilinx原语ODDR概述和使用 ODDR is Xilinx HDL Language Template。 ODDR:Output Double Data Rate(DDR)。 在介绍ODDR之前,我们先简单了解一下OLOGIC。 OLOGIC块在FPGA内的位置紧挨着IOB,其作用是FPGA通过IOB发送数据到器件外部的专用同步块。OLOGIC 资源的类型有OLOGIC2(位于HP I/O banks)和OLOGIC3(位于HR I/O banks)。 OLOGIC2和OLOGIC3不属于原语,正因为这样,所以它们不能被直接例化。它包含在布局布线后用户可例化的一些元素,例如一个输出触发器(OFD–output flip-flop)或者一个ODDR(output DDR element)。 OLOGIC主要由两个block组成,一个用于配置输出路径。另外一个用于配置三态控制路径。这两个block具有共同的时钟,但是具有不同的使能信号OCE和TCE。两者具有由SRV AL属性精致的异步和同步set和reset(S/R信号)。 输出路径和三态控制路径可以以下列模式之一独立配置: 1.边沿触发的D触发器 2.DDR模式(ASAME_EDGE 或OPPOSITE_EDGE) 3.电平敏感锁存器 4.异步电路/组合逻辑 OLOGIC block中的各种逻辑资源如下: Output DDR概述(ODDR) 7系列器件在OLOGIC中有专用寄存器来实现输出DDR寄存器。这个功能在例化ODDR 时可见。在使用OLOGIC时,DDR的复用是自动的,不需要手动控制多路复用。这个控制是从时钟产生的。 ODDR原语是由一个时钟输入,下降沿数据由输入时钟的本地反转来计时。反馈到I/O块

BUFG和IBUFG的使用

BUFG,IBUFG的使用 目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。FPGA 全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的Virtex II器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。 与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等,如图1所示。 1. IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX 和SSTL等多种格式的IO标准。 G 单 2. IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。 3. BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。 4. BUFGCE是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。 5. BUFGMUX是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。 6. BUFGP相当于IBUG加上BUFG。 7. BUFGDLL是全局缓冲延迟锁相环,相当于BUFG与DLL的结合。BUFGDLL在早期设计中经常使用,用以完成全局时钟的同步和驱动等功能。随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM所取代。 8. DCM即数字时钟管理单元,主要完成时钟的同步、移相、分频、倍频和去抖动等。DCM 与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。 全局时钟资源的使用方法全局时钟资源的使用方法(五种) 1:IBUFG + BUFG的使用方法:

FPGA的LVDS介绍和xilinx原语的使用方法中文说明

FPGA的LVDS介绍和xilinx原语的使用方法中文说明低压差分传送技术是基于低压差分信号(Low Volt-agc Differential signalin g)的传送技术,从一个电路板系统内的高速信号传送到不同电路系统之间的快速数据传送都可以应用低压差分传送技术来实现,其应用正变得越来越重要。低压差分信号相对于单端的传送具有较高的噪声抑制功能,其较低的电压摆幅允许差分对线具有较高的数据传输速率,消耗较小的功率以及产生更低的电磁辐射。 LVDS:Low Voltage Differential Signaling,低电压差分信号。 LVDS传输支持速率一般在155Mbps(大约为77MHZ)以上。 LVDS是一种低摆幅的差分信号技术,它使得信号能在差分PCB线对或平衡电缆上以几百Mbps的速率传输,其低压幅和低电流驱动输出实现了低噪声和低功耗。 差分信号抗噪特性 从差分信号传输线路上可以看出,若是理想状况,线路没有干扰时, 在发送侧,可以形象理解为: IN= IN+ —IN- 在接收侧,可以理解为: IN+ —IN- =OUT 所以: OUT = IN 在实际线路传输中,线路存在干扰,并且同时出现在差分线对上, 在发送侧,仍然是: IN = IN+ —IN- 线路传输干扰同时存在于差分对上,假设干扰为q,则接收则: (IN+ + q) —(IN- + q) = IN+ —IN- = OUT 所以: OUT = IN 噪声被抑止掉。上述可以形象理解差分方式抑止噪声的能力。 From: 美国国家半导体的《LVDS用户手册》P9

FPGA中的差分管脚 为了适用于高速通讯的场合,现在的FPGA都提供了数目众多的LVDS接口。如Spartan-3E系列FPGA提供了下列差分标准: ? LVDS ? Bus LVDS ? mini-LVDS ? RSDS ? Differential HSTL (1.8V, Types I and III) ? Differential SSTL (2.5V and 1.8V, Type I) ? 2.5V LVPECL inputs 所拥有的差分I/O管脚数目如下 From:Spartan-3E FPGA Family:Complete Data Sheet p5 I/O管脚的命名方式: From:Spartan-3E FPGA Family:Complete Data Sheet p164

相关文档
最新文档