基于 UltraScale 架构的 FPGA 提供了不同类型的 I/O 组,这些类型包括高性能(High Performance,HP)、高密度(High-Density,HD)和宽范围(High Range,HR)。其中:
(1)HP I/O组旨在满足高达1.8V电压的高速存储器和其他芯片间接口的性能要求;
(2)HR I/O组旨在支持电压3.3V的更宽范围的I/O标准;
(3)HD I/O组旨在支持低速接口。
Kintex UltraScale和Virtex UltraScale系列FPGA提供了具有相应逻辑资源的HP I/O组和HR I/O组。
(1)SelectIO 接口资源描述了输出驱动器和输入接收器的电气行为,并给出了这些器件中可用的多个标准接口的详细实例。
(2)SelectIO接口资源描述了这些器件中可用的I/O逻辑资源。
(3)本节中对移动工业处理器接口(Mobile Industry Processor Inferface,MIPI)D-PHY或HD I/O的任何引用都不适用于这些器件。
从表1.1~表1.5可知,UltraScale+架构的FPGA包含HP、HD和HR I/O组的不同组合,并非所有FPGA都支持所有类型的组。Kintex UltraScale+和Virtex UltraScale+系列FPGA具有HP I/O组,具有增强的MIPI D-PHY能力和相应的逻辑资源。此外,它们还具有相应逻辑资源的HD I/O。
(1)SelectIO 接口资源描述了输出驱动器和输入接收器的电气行为,并给出了这些器件中HP I/O可用的多个标准接口的详细实例。
(2)SelectIO接口逻辑资源描述了这些器件HP I/O中可用的I/O逻辑资源。
(3)HD I/O资源描述了Kintex UltraScale+FPGA和一些Virtex UltraScale+FPGA中提供的I/O的电气与逻辑功能。
(4)本节对HR I/O的引用不适用于该架构的FPGA。
在HR和HP I/O组中所支持的特性如表1.18所示。
表1.18 在HR和HP I/O组中所支持的特性
续表
注: (1)尽管通常认为LVDS是2.5V I/O标准,但是HR I/O组和HP I/O组均支持它。
(2)只有在HR I/O组中支持LVDS预加重。
所有 UltraScale 器件都具有可配置的 SelectIO 接口驱动器和接收器,支持多个标准接口。强大的功能集包括可编程控制输出强度和转换速率、使用 DCI 的片上终端以及内部生成参考电压(INTERNAL_VREF)的能力。
注: HR I/O组没有DCI。因此,本节中对任何DCI的引用都不适用于HR I/O组。
除了一些例外,每个I/O组包含52个SelectIO引脚,其中48个引脚可以配置为单端或差分I/O标准,其他4个引脚(包括多用途的VRP引脚)只能配置为单端模式。每个SelectIO资源都包含输入、输出和三态驱动器。
SelectIO引脚可以配置为各种I/O标准,包括单端和差分。
(1)单端I/O标准有LVCMOS、LVTTL、HSTL、SSTL、HSUL和POD。
(2)差分 I/O 标准有 LVDS、Mini_LVDS、RSDS、PPDS、BLVDS、TMDS、SLVS、LVPECL、SUB_LVDS以及差分HSTL、POD、HSUL和SSTL。
当不用作 VRP 引脚时,每个组中的多用途 VRP 引脚只能与单端 I/O 标准一起使用。图1.68给出了单端(仅)HP I/O块(IOB)及其与内部逻辑和器件焊盘的连接。图1.69给出了标准HP I/O块的内部结构,图1.70给出了单端(仅)HR I/O块的内部结构,图1.71给出了标准HR I/O块的内部结构。图1.72给出了一个组中单端I/O块的相对位置。
图1.68 单端(仅)HP I/O块(IOB)及其与内部逻辑和器件焊盘的连接
当没有配置时,I/O驱动器为三态且I/O接收器为弱上拉。
图1.69 标准HP I/O块的内部结构
图1.70 单端(仅)HR I/O块的内部结构
图1.71 标准HR I/O块的内部结构
图1.72 一个组中单端I/O块的相对位置
每个 I/O 块(I/O Block,IOB)都有到位切片元件的直接连接,该元件包含用于串行化、解串行化、信号延迟、时钟、数据和三态控制以及为 IOB 寄存的输入和输出资源。位切片元件可以在元件模式下单独用作 IDELAY、ODELAY、ISERDES、OSERDES 以及输入和输出寄存器。它们也可以在较低粒度级别上用作 BITSLICE_RX (输入)、BITSLICE_TX (输出)和BITSLICE_RX_TX(双向)元件,其中所有位切片功能被分组在单个接口中,如图1.73所示。
图1.73 BITSLICE、IOB、BITSLICE_RX_TX之间的相对位置
大多数I/O组由52个IOB组成,尽管HR I/O最小组由26个IOB组成。组的个数取决于FPGA器件的大小和封装引脚。
1)V CCO
V CCO 电源是I/O电路的主要电源。在Xilinx的《UltraScale Architecture SelectIO Resources User Guide》(UG571)中给出了每个支持的I/O标准的V CCO 和V REF 要求中的V CCO (V)列中提供了每个支持的输入/输出标准的 V CCO 要求,并说明了输入和输出以及可选的内部差分端接电路的V CCO 要求。
在一个给定HP I/O组中的所有V CCO 引脚必须连接到PCB上相同的外部电压源。因此,给定I/O组内的所有I/O必须共享相同的V CCO 电平。V CCO 电压必须符合分配给I/O组的I/O标准要求。
注: V CCO 电压不正确可能导致功能损失或损坏器件。
2)V REF
具有差分输入缓冲区的单端I/O标准需要输入参考电压(V REF )。当I/O组中需要V REF 时,FPGA 开发人员可以使用专用的 V REF 引脚作为 V REF 电源输入(外部)或内部生成的 V REF 【INTERNAL_VREF或V REF 扫描(仅限HP I/O组)】。通过使用INTERNAL_VREF约束,使能内部生成的参考电压。只输出IOB时,不需要V REF 或INTERNAL_VREF,因为只有IOB的接收部分利用输入参考电压。
注: 在输入I/O 标准中具有输入参考电压要求并使用内部生成的V REF (INTERNAL_VREF 或V REF 扫描)组中,使用500Ω或1kΩ的电阻将专用的V REF 引脚连接到GND。
在 I/O 标准中没有带输入参考电压要求的组中,将专用的 VREF 引脚连接到 GND(使用500Ω或1kΩ的电阻),或使其浮动。在HP I/O组中,提供了内部V REF 扫描,以考虑工艺变化和系统注意事项。
3)V CCAUX
全局辅助(VCCAUX)供电轨主要为器件内部各个块的互联逻辑提供电源。在 I/O 组中,V CCAUX 用于为某些 I/O 标准的输入缓冲区电路供电。其中,包括 1.8V 或以下一些单端 I/O 标准,以及一些2.5V标准(仅限HR I/O组)。此外,V CCAUX 供电轨为用于大多数差分和V REF I/O标准的差分输入缓冲区电路提供电源。
4)V CCAUX_IO
辅助I/O(VCCAUX_IO)电压供电轨为I/O电路提供电源。V CCAUX_IO 只能由1.8V供电。
5)V CCINT_IO
这是I/O组内的内部供电,连接到V CCINT 电压供电轨。
UltraScale 器件在 I/O 组 0(I/O bank 0)中提供了包含配置功能的引脚。在 I/O 组 65 中(多功能配置)也用I/O引脚,称为多功能或多用途引脚,可用于配置,并在配置完成后转换为可编程的I/O引脚。此外,在具有SLR的FPGA的配置期间,I/O bank 60和I/O bank 70中的引脚具有与多功能引脚类似的限制。对这些组的限制是必须的,即使它们不是配置组。
在配置期间,除了用于配置的组(I/O bank 0和I/O bank 65),以及用于多个SLR的器件中的I/O bank 60和I/O bank 70,I/O驱动器在所有的组中都是三态的。在配置期间(直到应用程序设置接管为止),所有HP I/O组都使用默认的IOSTANDARD=LVCMOS18、SLEW=FAST和DRIVE=12mA 设置。HR I/O 组中的相应设置为 IOSTANDARD=LVCMOS25、SLEW=FAST 和DRIVE=12Ma。配置后,未配置的I/O具有三态驱动器、焊盘被弱下拉。
在I/O bank 65(所有器件)和I/O bank 70(仅具有多个SLR的器件)是HR I/O组,并配置有 1.8V 的 V CCO 的器件中,如果输入连接到“0”或浮空,并且配置电压为 2.5V,则在配置期间,输入具有“0”~“1”~“0”到互联逻辑的跳变。
具有多个 SLR 的 UltraScale(不是 UltraScale+)FPGA 可以在配置序列期间(在上电和INIT_B配置信号有效之间),在从SLR中的I/O上临时使用弱上拉。在某些板中,这可能会导致从SLR中的I/O出现不期望的“0”~“1”~“0”跳变。建议在配置过程中对“0”~“1”~“0”跳变敏感的SLR中的任何I/O引脚连接到主SLR的I/O引脚,或包含对该引脚的1kΩ或更强的外部下拉。
随着器件面积的增加和系统时钟速度的提高,PCB 设计和制造变得更加困难。随着边沿速率越来越快,保持信号完整性成为一个关键问题。PCB 的走线必须正确地端接,以避免反射和振铃。
为了端接走线,传统上添加电阻以使输出和/或输入匹配接收器或驱动器的阻抗,以及布线的阻抗。然而,由于FPGA的I/O增加,在FPGA引脚附近添加电阻会增加PCB的面积和元件的数量,在某些情况下在物理上也是不可能的。为了解决这些问题并实现更好的信号完整性,Xilinx开发了数字阻抗(Digital Controlled Impedance,DCI)技术。
根据 I/O 标准,DCI 可以控制驱动器的输出阻抗,也可以在接收器处添加并联端接,目的是精确匹配传输线的特性阻抗。DCI主动调整I/O内部的这些阻抗,以校准到VRP引脚上的精密参考电阻。这用于补偿温度和电压波动的变化。许多设计要求使用多个 DCI 参考 VRP 引脚。在这些情况下,每个VRP引脚都需要一个唯一的参考电阻。
注: 对于所有DCI I/O标准,外部参考电阻(R VRP )应该是240Ω。
对于具有受控并行端接的I/O标准,DCI为接收器提供并行端接。这消除了对PCB上电阻端接的要求,减少了PCB的布线困难和元件数量,并通过消除桩线反射提高了信号完整性。当端接电阻位于传输线太远的位置时,就会发生桩线反射。对于 DCI,端接电阻尽可能地靠近输出驱动器或输入缓冲器,从而消除这种反射。端接电阻的准确值由受控并联端接的 ODT 属性确定。准确的驱动器端接值由受控阻抗驱动器的 OUTPUT_IMPEDANCE 属性确定。DCI 仅在HP I/O组中可用,DCI在HR I/O组中不可用。
Vivado Design Suite库包含大量的原语列表,它们支持在I/O原语中可用的许多I/O标准。这些通用原语都可以支持大多数可用的单端I/O标准。
(1)IBUF:输入缓冲区。
(2)IBUF_ANALOG:特定于系统监控器输入的输入缓冲区。Vivado Design Suite 工具使用IBUF_ANALOG将模拟信号布线到SYSMONE4原语。它不是一个物理缓冲区,纯粹是一个软件结构,应该将其看作一个物理传递。
(3)IBUF_IBUFDISABLE:带缓冲区禁止控制的输入缓冲区。
(4)IBUF_INTERMDISABLE:带有缓冲区禁止控制和晶圆上输入端接禁止控制的输入缓冲区(仅HR I/O组)。
(5)IBUFE3:带偏移校准和 V REF 调谐的输入缓冲区,以及带有缓冲区禁止控制(仅 HP I/O组)。
(6)IOBUF:双向缓冲区。
(7)OBUF:输出缓冲区。
(8)OBUFT:三态输出缓冲区。
(9)IOBUF_DCIEN:双向缓冲区,带输入缓冲区禁止和晶圆上输入端接禁止控制(仅 HP I/O组)。
(10)IOBUF_INTERMDISABLE:双向缓冲区,带输入缓冲区禁止和晶圆上输入端接禁止控制(仅HR I/O组)。
(11)IOBUFE3:带偏移校准和 V REF 调谐的双向缓冲区,以及带有缓冲区禁止和晶圆上输入端接使能控制(仅HP I/O组)。
下面的通用原语支持大多数可用的差分I/O标准。
(1)IBUFDS:差分输入缓冲区。
(2)IBUFDS_DIFF_OUT:带有互补输出的差分输入缓冲区。
(3)IBUFDS_DIFF_OUT_IBUFDISABLE:带有互补输出和缓冲区禁止的差分输入缓冲区。
(4)IBUFDS_DIFF_OUT_INTERMDISABLE:带有互补输出、输入缓冲区禁止和晶圆上输入端接禁止控制的差分输入缓冲区(仅HR I/O组)
(5)IBUFDS_IBUFDISABLE:带有缓冲区禁止控制的差分输入缓冲区。
(6)IBUFDS_INTERMDISABLE:带有输入缓冲区禁止和晶圆上输入端接禁止控制的差分输入缓冲区(仅HR I/O组)。
(7)IBUFDSE3:带偏移校准,以及缓冲区禁止控制的差分输入缓冲区(仅HP I/O组)。
(8) IBUFDS_DPHY:用于 MIPI D-PHY 的差分输入缓冲区。仅由 UltraScale+架构的Virtex、Kintex和Zynq系列FPGA/SoC中的HP I/O组支持。
(9)IOBUFDS:差分双向缓冲区。
(10)IOBUFDS_DCIEN:带有晶圆上输入端接禁止控制和输入缓冲区禁止的差分双向缓冲区(仅HP I/O组)。
(11)IOBUFDS_DIFF_OUT:带有来自输入缓冲区的互补输出的差分双向缓冲区。
(12)IOBUFDS_DIFF_OUT_DCIEN:带有来自输入缓冲区的互补输出,以及带有晶圆上输入端接禁止控制和输入缓冲区禁止控制的差分双向缓冲区(仅HP I/O组)。
(13)IOBUFDS_INTERMDISABLE:带有片上输入端接禁止控制和输入缓冲区禁止的双差分双向缓冲区(仅HR I/O组)。
(14)IOBUFDSE3:带有偏置校准和输入缓冲区禁止与晶圆上输入端接使能控制的差分双向缓冲区(仅HP I/O组)。
(15)OBUFDS:差分输出缓冲区。
(16)OBUFTDS:差分三态输出缓冲区。
(17)OBUFDS_DPHY:用于 MIPI D-PHY 的差分输出缓冲区。只在 UltraScale+架构的Virtex、Kintex和Zynq系列FPGA/SoC中的HP I/O组支持。
(18)HPIO_VREF:V REF 扫描功能(仅HP I/O组)。
注: SelectIO接口原语的VHDL和Verilog HDL例化模板以及属性/参数设置,详见Xilinx官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
每个 I/O 组包含 52 个引脚,这些引脚适用于该组单端标准的输入、输出或双向操作。I/O组可以是 HR I/O 或 HP I/O 组。这些引脚中最多可以将 48 个引脚配置为 24 个差分信号引脚对,其信号标准适用于 HR I/O 或 HP I/O 组。与每个单端引脚关联的逻辑称为位切片(Bit Slice)。在本节中,差分引脚对被称为_P引脚的主位切片和_N引脚的从位切片。
每个组的概述如图 1.74 所示。输入/输出控制块位切片可使用前几代 Xilinx 器件中的元件原语进行编程,或者在要求最大性能时,使用本原PHY原语配置。
图1.74 每个组的概述
本原原语(Native Primitive)是基本的结构,用于创建元件原语(Component Primitive)。元件原语使用原语的特定设置来提供与以前 FPGA 系列相同的功能。使用本原原语,FPGA 开发人员可以构建高速运行的元件接口,这些接口比使用元件原语要复杂得多。
注: 本原模式设计有额外限制。High Speed SelectIO Wizard(HSSIO-Wiz)自动设置所有必须的设置,并检查设计规则以确保设计正常。Xilinx建议在本源模式中使用HSSIO-Wiz。
两个可用的PLL与同一I/O组中的位切片相关联。每个PLL都有一个专用的高速时钟连接到位切片的控制器,还有两个额外的输出,可用于放置在 I/O 组覆盖的时钟区域中的逻辑的应用时钟。MMCM可用作I/O组中位切片和放置在I/O组覆盖的时钟区域中的逻辑的控制器的时钟源,但是MMCM也可用作整个FPGA中I/O组和逻辑的时钟源。
注: 对于需要高性能和低抖动的应用,请使用放置在 I/O 组后面时钟区域中的 PLL。MMCM可用于需要在多个I/O组和时钟区域中时钟要求较慢的应用。
如果时钟输入不是用于需要设计的接口的I/O组的一部分,则需要使用下面的约束:
该约束使得Vivado工具给出警告信息,而不会提示出现错误。
注: 在本原模式下,PLL 高速时钟输出通用专用的布线(无时钟缓冲区)连接到BITSLICE_CONTROL.PLL_CLK 输入。因此,始终将 PLL 放置在连接接口 I/O 组的时钟区域中。在使用XDC约束的时候,输入时钟缓冲区可以放置在不同的I/O组中。
当 MMCM 用于本原或元件模式接口时钟时,必须使用时钟缓冲区。尽管最好的解决方案是将MMCM放置在所构建I/O接口的附近;但MMCM可以放置在与所使用的I/O组相邻的时钟区域不同的时钟区域中。I/O接口的时钟由时钟缓冲区和时钟布线分配。
每个组细分为 4 个字节组,每个组包含 13 个 I/O 引脚,如图 1.75 所示。从图中可知,每个字节组被进一步细分为两个半字节组。三态控制位切片块和上半字节与下半字节控制块仅在使用本原模式时相关。除 RXTX_BITSLICE_12(上半字节中的 BITSLICE_6)仅用于单端信号外,其他所有位切片都可用于单端或差分信号。任何与位切片一起使用的单端时钟都应该使用半字节的 RXTX_BITSLICE_0,并且任何差分时钟都应该使用半字节的 RXTX_BITSLICE_0(P侧)和RXTX_BITSLICE_1(N侧)。
两个中心字节组(1 和 2)中的每一个包含四字节时钟(Quad Byte Clock,QBC)和全局时钟(Global Clock,GC)引脚或引脚对。QBC 引脚可以用作它们所放置的半字节或字节组的捕获时钟输入,但它们也可以通过专用时钟脊向 I/O 组中的所有其他版字节和字节组传递捕获时钟。GC 引脚可以是驱动 MMCM 和/或 PLL 原语的时钟输入。其中一些时钟使能(Clock Capable,CC)输入具有双重功能。较高的和较低的字节组,每一个都包含专用的字节时钟(Dedicated Byte Clock,DBC)引脚(引脚对),它可以用作左字节组内的时钟,这些字节组不具有将捕获时钟驱动到I/O组中其他字节组或驱动I/O组中MMCM或PLL的能力。
对于高半字节和低半字节,额外一些限制可能应用于RXTX_BITSLICE_0。
当使用 RX_BITSLICE 或 RXTX_BITSLICE 时,字节间时钟可能会影响 RXTX_BITSLICE_0的可用性。
(1)如果使用字节间时钟(QBC)从一个字节(源)中的半字节到另一个字节中的半字节(目的),目的字节中的该半字节必须始终包括RXTX_BITSLICE_0且它的DATA_TYPE设置为DATA。
(2)对于接收串行模式应用,每个半字节必须包括 RXTX_BITSLICE_0 且它的 DATA_TYPE设置为SERIAL。
IDELAY/ODELAY和RX_BITSLICE/TX_BITSLICE/RXTX_BITSLICE支持TIME模式,通过连续调整对准提供更精确的延迟。当TIME模式用于IDELAY/ODELAY和本源原语时,在初始的校准过程中使用 RXTX_BITSLICE_0。在 IDELAY/ODELAY 的情况下,当 RDY (IDELAYCTRL)为高电平时,该初始校准过程完成。在以下情况下,连接到 RXTX_BITSLICE_0的元件逻辑在初始校准期间不能使用:
图1.75 字节组概述
(1)TIME模式下的IDELAY/ODELAY;
(2)TIME模式下的RX_BITSLICE/TX_BITSLICE/RXTX_BITSLICE。
Vivado将发出错误消息以指示在BISC 操作期间与半字节内的RXTX_BITSLICE_0相关联的输入布线和逻辑将不可用。如果这些限制不影响设计,则可以使用下面约束禁止DRC:
set_property UNAVAILABLE_DURING_CALIBRATION TRUE [get_ports<name>]
由于RXTX_BITSLICE_0用于TIME模式的校准,所以在IDELAY/ODELAY处于TIME模式且校准完成之前,半字节内的所有其他位切片将不可用。
每个UltraScale+架构FPGA的I/O组、字节和半字节具有相同的设置。
思考与练习1-20: 用Vivado 2023.1打开前面任意一个工程,在Device视图中查看HP I/O组资源的排列方式,并画图进行说明。
图1.75中的RXTX_BITSLICE是基本的本原原语,可以用作接收器、发送器或双向电路,该原语是生成RX_BITSLICE和TX_BITSLICE的基础。
RXTX_BITSLICE 包含一个输入和输出路径。输出和输出路径中包括可以通过BITSLICE_CONTROL 连续校正 VT 变化的输入和输出延迟、输出路径上 4:1 或 8:1 的串行化逻辑以及输入路径上的1:4或1:8的解串行化逻辑。输入路径还包括浅FIFO,以允许将接收到的数据连接到通用互联逻辑的另一个时钟域。RXTX_BITSLICE 的内部结,如图 1.76所示。
图1.76 RXTX_BITSLICE的内部结构
(1)输入和输出延迟各有 512 个抽头(一个抽头的延迟在 UltraScale+器件数据表中提供为T ODELAY_RESOLUTION )。可以通过寄存器接口单元(Register Interface Unit,RIU)从 BITSLICE_CONTROL 控制延迟元素,或者直接使用 RXTX_BITSLICE (CLK、CE、INC、LOAD、CNTVALUEIN[8:0]、CNTVALUEOU[8:0]、RST_DLY 和 EN_VTC)上的延迟控制信号直接从互联逻辑控制延迟元素。延迟线可用于两种不同的模式,包括时间(TIME)和计数(COUNT)。在时间模式下,初始延迟(delay_VALUE)以 ps 为单位定义;在计数模式下,初始延迟提供为抽头的个数。当使用时间模式时,内建的自校准(Built-In Self-Calibration,BISC)控制器校准并保持延迟线。
(2)延迟线级联。该功能在 RX_BITSLICE 中可用,在 RXTX_BITSLICE 中不可用。该功能允许TX_BITSLICE中未使用的输出延迟线级联到RX_BITSLICE中的输入延迟线。结果是将数据传递到 RX_BITSLICE 解串行器寄存器的双倍长度的延迟线。单个延迟线是 512 个抽头。级联输入和输出延迟线使可用延迟的长度加倍。
(3)三态控制。RXTX_BITSLICE 发送器一侧,以及由此产生的 TX_BITSLICE 提供了两种在一个 IOB 中三态输出缓冲区的可能性。三态可以被看作每通道块三态和串行流三态中基于半字节的每位三态。每个 RXTX_BITSLICE 和每个 TX_BITSLICE 有一个 T 输入。输入时FPGA逻辑中生成的三态信号到IOB中输出缓冲区的T输入的逻辑作何。这称为块三态,因为输出缓冲区的串行输出在一定的位周期中是三态的。当串行流中的一个或多个指定位必须出现三态串行输出时,必须使用 BITSLICE_CONTROL.TBYTE_IN[3:0]输入与 TX_BITSICE_TRI 的组合。TX_BITSLICE_TRI 的输出通过 TX_BITSLICE 被布线到输出缓冲区的三态输入。TX_BITSLICE_TRI 的输出是一个串行流,它可以连接到半字节中的所有 TX_BITSLICE,并以这种方式连接到所有三态输出缓冲器输入。在BITSLICE_CONTROL的TBYTE_IN输入处写入的四个位确定串行流中的三态出现。
(4)FIFO。每个 RXTX_BITSLICE 的接收器和 RX_BITSLICE 有 8 个深度的浅 FIFO。使用 FIFO 中的位切片生成时钟(FIFO_WR_CLK)中的 FIFO_WR_CLK 域来写入解串行化的 4位或8位数据。FIFO在FIFO_WR_CLK的上升沿写入4位或8位解串行数据。可以在解释来自 FPGA 逻辑侧的一些 FIFO 状态信号后读取 FIFO。通过这种方式,FIFO 执行时钟域跨越元件的角色。
RXTX_BITSLICE本原原语符号如图1.77所示。图中,黑色字表示输入,灰色字表示输出。
注: 原语RXTX_BITSLICE、RX_BITSLICE和TX_BITSLICE的VHDL与Verilog HDL例化模板,详见Xilinx官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
1)IDDRE1
UltraScale+架构FPGA在位切片中有专用的寄存器实现输入DDR寄存器。该功能通过例化IDDRE1 原语实现,如图 1.78 所示。IDDRE1 原语支持以下操作模式,包括 OPPOSITE_EDGE、SAME_EDGE和SAME_EDGE_PIPELINED。该原语的端口含义如表1.19所示。
图1.77 RXTX_BITSLICE本原原语符号
图1.78 IDDRE1原语符号
表1.19 IDDRE1原语的端口含义
注: (1)原语 IDDRE1 的 VHDL 和 Verilog HDL 例化模板,详见 Xilinx 官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
(2)设计中使用的IDDRE1原语由Vivado设计工具转换并实现为ISERDESE3原语。
2)ODDRE1
UltraScale+架构 FPGA 的位切片中有寄存器用于实现输出 DDR 寄存器。通过例化ODDRE1原语访问该功能,如图1.79所示。使用ODDRE1时,DDR多路复用是自动的。无须手动控制多路复用器选择,该控制由时钟生成。ODDRE1 原语仅支持 SAME_EDGE 操作模式。该原语的端口含义如表1.20所示。
图1.79 ODDRE1原语符号
表1.20 ODDRE1原语的端口含义
注: (1)原语 ODDRE1 的 VHDL 和 Verilog HDL 例化模板,详见 Xilinx 官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
(2)设计中使用的ODDRE1原语由Vivado设计工具转换并实现为OSERDESE3原语。
3)ISERDESE3
该原语是一个具有特定时钟和逻辑功能的串行-并行转换器,旨在改善高速源同步应用的实现。该原语避免了在FPGA逻辑中设计解串器时遇到额外的时序复杂性,如图1.80所示。该原语的端口含义如表1.21所示。
图1.80 ISERDESE3原语符号
表1.21 ISERDESE3原语的端口含义
续表
注: 原语ISERDESE3的VHDL和Verilog HDL例化模板,详见Xilinx官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
4)OSERDESE3
UltraScale+架构 FPGA 中,该元件是一个 4/8 位并行-串行转换器,具有特定的时钟功能,有助于实现源同步和其他应用。如果需要其他串并转换因子,使用ODDRE1原语或在内部逻辑中实现,如图1.81所示。该原语的端口含义如表1.22所示。
图1.81 OSERDESE3原语符号
表1.22 OSERDESE3原语的端口含义
注: 原语 OSERDESE3 的 VHDL 和 Verilog HDL 例化模板,详见 Xilinx 官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
5)IDELAYE3
除时钟外的任何输入信号都可以使用该原语延迟,然后直接转发到 FPGA 的逻辑,或使用输入/输出互联(Input and Output Interconnect,IOI)内的 SDR 时钟或 DDR 时钟在简单触发器、IDDR 或 ISERDESE3 中寄存,如图 1.82 所示。时钟不应该使用该元件延迟,因为该元件不能直接布线到全局时钟缓冲区。当必须延迟时钟时,使用MMCM或PLL生成时钟,并使用精细相移功能延迟时钟。该原语的端口含义如表1.23所示。
图1.82 IDELAYE3原语符号
表1.23 IDELAYE3原语的端口含义
注: 原语IDELAYE3的VHDL和Verilog HDL例化模板,详见Xilinx官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
6)ODELAYE3
任何输出信号都可以使用该原语来延迟,该原语直接从 FPGA 逻辑转发,或使用 SDR 或DDR 时钟寄存在简单触发器或 OSERDES 中,该原语符号如图 1.83 所示。该原语的端口含义如表1.24所示。
图1.83 ODELAYE3原语符号
表1.24 ODELAYE3原语的端口含义
注: 原语ODELAYE3的VHDL和Verilog HDL例化模板,详见Xilinx官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
7)IDELAYCTRL
如果例化了 IDELAY3/ODELAY3 原语,则必须例化 IDELAYCTRL 模块,除非DELAY_FORMAT 设置为 COUNT 或在本原模式设计中设计为混合元件和本原模式。每个半字节(一个组中8个)有一个IDELAYCTRL模块。IDELAYCTRL模块将其区域中以TIME模式配置的各个延迟线连续校准为其编程值,以减少工艺、电压和温度(Process、Voltage and Temperature,PVT)变化的影响。IDELAYCTRL 模块使用系统提供的REFCLK 校准 IDELAY3 (和 ODELAY3)。该 REFCLK 的频率值应用于具有属性(REFCLK_FREQUENCY)的各个IDELAYE3(ODELAYE3)原语。因此,半字节中的每个延迟元素都需要将该属性设置为相同的值,该原语符号如图1.84所示。该原语的端口含义如表1.25所示。
图1.84 IDELAYCTRL原语符号
表1.25 IDELAYCTRL原语的端口含义
注: 原语 IDELAYCTRL 的 VHDL 和 Verilog HDL 例化模板,详见 Xilinx 官方文档《UltraScale Architecture Library Guide》(UG974)中第四章设计元素(Design Elements)一章。
高密度(HD)I/O 组是 SelectIO 资源,旨在支持电压范围从 1.2V 到 3.3V 的各种 I/O 标准。HD I/O 针对高达 250Mb/s 的数据速率运行的单端、电压参考和伪差分 I/O 标准进行了优化。对真差分输入(带外部端接)的有限支持也可用于支持 LVDS 和 LVPECL 时钟输入。HD I/O 也包含接口逻辑,包括寄存器和静态延迟线,也支持异步、系统同步和基于时钟的源同步接口。HD I/O组中所支持的功能如表1.26所示。
表1.26 HD I/O组中所支持的功能
每个HD I/O组包含24个I/O引脚。当定义为单端标准时,HD I/O引脚支持输入、输出和双向操作模式。成对的 I/O 引脚可用于支持差分标准功能。对于像 DIFF_SSTL15 这样的伪差分标准,可以提供输入、输出和双向支持。真正的差分标准,如 LVDS_25,只能用作输入缓冲器。
HD I/O引脚包含使能各种I/O接口的I/O接口逻辑块(IOI),如图1.85所示。
IOI由专用于每个引脚的OLOGIC和ILOGIC块组成。支持的接口包括:
(1)异步(或组合)输入和输出接口。
(2)在IOI和/或互联逻辑中的带有单数据率(Single Data Rate,SDR)寄存器的系统同步接口。支持包含以下的触发器原语。
图1.85 HD I/O接口逻辑块
① FDCE:带有时钟使能和异步清除的触发器。
② FDPE:带有时钟使能和异步置位的触发器;
③ FDRE:带有时钟使能和同步复位的触发器;
④ FDSE:带有时钟使能和同步置位的触发器。
(3)在IOI和/或互联逻辑中的带有双数据率(Dual Data Rate,DDR)寄存器的系统同步接口。支持的原语包括IDDRE1和ODDRE1。
ILOGIC 块在输入端支持可选的静态无补偿零保持(ZHOLD)延迟线,以补偿时钟插入延迟。当时钟路径直接来源于 BUFG/BUFGCE 时,ZHOLD 功能被优化以补偿时钟插入延迟,BUFG/BUFGCE源自同一组或相邻的组。除非时钟源是MMCM/PLL,或者除非在XDC中设置了IOBDELAY属性,否则默认情况使能ZHOLD。
UltraScale/UltraScale+FPGA在ILOGIC块中有专用的寄存器用于实现DDR寄存器。通过例化 IDDRE1 原语来使用该功能。UltraScale/UltraScale+FPGA 在 OLOGIC 块中有寄存器用于实现数据和三态控制的输出DDR寄存器。当在HD I/O中同时使用数据和三态路径时,需要同时使用/不使用输出 DDR 寄存器的数据和三态控制。例如,FPGA 开发人员不能做这样的一个设计,即在数据路径上使用输出DDR寄存器,而在三态控制路径上没有输出DDR寄存器。在例化ODDRE1原语时,可以访问该功能。使用ODDRE1时,DDR多路复用是自动的,无需手动控制,该控制由时钟生成。