FPGA软件测试技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4.1 Xilinx公司及产品介绍

Xilinx公司成立于1984年,Xilinx首创了FPGA这一创新性的技术,并于1985年首次推出商业化产品。Xilinx产品线还包括CPLD。在某些控制应用方面,CPLD通常比FPGA速度快,但其提供的逻辑资源较少。Xilinx可编程逻辑解决方案缩短了电子设备制造商开发产品的时间,并加快了产品面市的速度,从而减小了制造商的风险。

与采用传统方法(如固定逻辑门阵列)相比,利用Xilinx可编程器件,客户可以更快地设计和验证他们的电路。而且,由于Xilinx器件是只需要进行编程的标准部件,客户不需要像采用固定逻辑芯片时那样等待样品或付出巨额成本。Xilinx产品已经被广泛应用于无线电话基站、DVD播放机等数字电路系统。传统的半导体公司只有几百个客户,而Xilinx在全世界有7500多个客户及50000多个设计开端。其客户包括Alcatel、Cisco Systems、EMC、Ericsson、Fujitsu、Hewlett-Packard、IBM等。

本小节主要介绍Xilinx公司的Virtex-6系列、Kintex-7系列、Zynq-7000系列和Versal AI Core系列FPGA。

1.Virtex-6系列FPGA

Virtex-6系列FPGA采用了第3代Xilinx ASMBL架构、40nm工艺,提供多达760000个逻辑单元,下面将详细介绍Virtex-6系列FPGA的内部模块,以便读者对Virtex-6系列FPGA的内部模块有一个较深入的认识。了解FPGA的内部结构之后,才能更有效地利用它,这可以在很大程度上提高设计人员的设计优化能力——用较少的资源,实现更多的功能,达到更高的性能,从而充分利用FPGA,节约生产成本。

1)可配置逻辑模块(CLB)

CLB是实现时序逻辑电路(简称时序电路)和组合逻辑电路(简称组合电路)的主要逻辑资源。在Virtex-6系列FPGA中,每个CLB包含两个SLICE(片),每个CLB通过交换矩阵与外部通用逻辑阵列相连。CLB中SLICE排布示意图如图1-5所示。

图1-5 CLB中SLICE排布示意图

在Virtex-6系列FPGA中,SLICE分为SLICEX、SLICEL和SLICEM 3种。SLICEX不具有存储功能,也没有进位链;SLICEL不具有存储功能,但包含进位链;SLICEM具有存储/移位寄存器功能,也包含进位链。

每个SLICE包含4个LUT和8个存储单元。这些基本单元能提供逻辑、算术和ROM功能。除这些基本功能外,还有一些SLICE具有分布式RAM和移位寄存器功能,这些SLICE又被称为SLICEM。

Virtex-6系列FPGA中CLB功能如表1-1所示。

表1-1 Virtex-6系列FPGA中CLB功能

每个SLICE包含逻辑函数发生器、存储元件、多路复用器、快速先行进位逻辑和算术逻辑等资源。

(1)逻辑函数发生器。在Virtex-6系列FPGA中,逻辑函数发生器由六输入LUT实现。每个LUT有6个独立输入(A1~A6)和两个独立输出(O5和O6),可以实现任意六输入布尔函数。同时,每个LUT在相同的输入情况下,也可以实现两个任意五输入布尔函数。LUT的延时与所实现的函数无关。LUT可以实现组合逻辑、ROM、分布式RAM、移位寄存器等功能。

(2)存储元件。在Virtex-6系列FPGA中,每个SLICE都有存储元件,可以实现存储功能,可以配置成边沿触发D触发器或电平敏感型锁存器。

(3)多路复用器。多路复用器(MUX)结构示意图如图1-6所示。在一个SLICE中,除包含LUT外,还包含3个多路复用器(F7AMUX、F7BMUX和F8MUX),用户可以将4个函数发生器组合在一起,构成七输入或八输入的函数。多路复用器F7AMUX、F7BMUX和F8MUX通常和函数发生器或片上逻辑一起实现多种多路复用器。可以实现以下几种多路复用器:①1个LUT实现4:1多路复用器;②两个LUT实现8:1多路复用器;③4个LUT实现16:1多路复用器。

(4)快速先行进位逻辑(Carry Logic)。在Virtex-6系列FPGA中,每个CLB有两条独立的进位链,用于实现快速算术加减运算,它解决了多位宽加法、乘法从最低位向最高位进位的延时问题。快速先行进位逻辑有专用的进位通路和进位多路复用器(MUXCY),可用来级联函数发生器(LUT),以实现更宽、更复杂的逻辑函数,提高CLB的处理速度。

图1-6 多路复用器(MUX)结构示意图

(5)算术逻辑。算术逻辑包括一个异或门(XOR)和一个专用与门(MULT_AND)。一个异或门可以使一个SLICE实现两位全加操作,专用与门可提高乘法器的效率。

2)时钟资源

为了更好地控制时钟,Virtex-6系列FPGA分成若干个时钟区域,最小器件有6个区域,最大器件有18个区域。每个时钟区域高40个CLB。在时钟设计中,推荐使用片上专用的时钟资源,不推荐使用本地时钟(如逻辑产生的时钟)。

Virtex-6系列FPGA的中间列包含专门配置引脚(CFG),该列的其余区域为CLB。其右边排列着一个CMT列。每个区域(40个CLB高)对应一个CMT。一个CMT包含两个混合模式时钟管理器(MMCM),还有32个垂直全局时钟树。每个时钟区域的中间方向有一个水平时钟行(HROW),包含12个水平时钟线、6个区域时钟缓冲器(BUFR)和最多12个水平时钟缓冲器(BUFH)。Virtex-6系列FPGA的片内时钟资源为片内的同步元件提供时钟。片内时钟资源有3种类型。

(1)全局时钟资源。全局时钟是一种专用互连网络,它可以降低时钟歪斜、占空比失真和功耗,提高抖动容限。Virtex-6系列FPGA的全局时钟资源设计了专用时钟缓冲与驱动结构,从而使全局时钟到达CLB、I/OB和BRAM的延时最小。

①全局时钟输入。Virtex-6系列FPGA的全局时钟输入包含专用的全局时钟输入引脚和全局时钟输入缓冲器。全局时钟输入引脚可以直接连接外部单端或差分时钟,全局时钟输入缓冲器(IBUFG)是FPGA内部与专用全局时钟输入引脚相连的首级全局缓冲器。

Virtex-6系列FPGA有8个全局时钟输入。8个全局时钟输入可以连接到电路板上的8个时钟输入。全局时钟输入引脚可以不用作时钟输入引脚,而用作普通I/O。

外部单端或差分时钟通过专用全局时钟输入引脚进入FPGA,在FPGA内部,信号必须接入全局时钟输入缓冲器,否则在布局布线时会报错。可以在HDL代码中例化全局时钟输入缓冲器。

②全局时钟缓冲器(BUFG)。Virtex-6系列FPGA有32个全局时钟缓冲器,时钟信号只有经过全局时钟缓冲器之后才可以驱动全局时钟网络。一个全局时钟输入能直接从差分全局时钟引脚对的P端连接到全局时钟缓冲器的输入。每个差分全局时钟引脚对可以连接到PCB上的一个差分或单端时钟。如果使用单端时钟,则必须使用引脚对的P端,因为只有这一引脚上存在直接连接。如果单端时钟连接到差分引脚对的P端,则不能用其N端作为另一个单端时钟输入;不过,可以将其用作普通I/O。全局时钟缓冲器的输入源包括以下几种。

a.全局时钟输入。

b.内部I/O列的同一区域Clock-Capable输入。

c.时钟管理单元(CMT)。

d.其他全局时钟缓冲器的输出。

e.通用互连。

f.区域时钟缓冲器。

g.千兆收发器。

Virtex-6系列FPGA的CC输入间接通过MMCM列中的垂直时钟网络驱动BUFG。32个BUFG分成两组,每组16个,分别位于器件的顶部和底部。顶部的MMCM只能驱动顶部的16个BUFG,底部的MMCM只能驱动底部的BUFG。全局时钟缓冲器还可配置成多路复用器,可以在两个输入时钟之间切换。这两个时钟可以是同步的,也可以是异步的,多路复用器的输出是无毛刺的时钟。

③全局时钟树和时钟网络(GCLK)。Virtex-6系列FPGA中的全局时钟树和时钟网络,如果未被使用,则它就是断开的,这可以降低功耗。另外,时钟树还具有对负载/扇出的管理功能。所有全局时钟线和缓冲器都以差分形式实现,这有助于改善占空比,提高对共模噪声的抑制能力。在Virtex-6系列FPGA架构中,全局时钟线不仅可以用作时钟,还可以用作其他信号线,如扇出较大的信号。

④时钟区域。Virtex-6系列FPGA通过使用时钟区域,改善了时钟的分配性能。每个时钟区域最多可有12个全局时钟。这12个全局时钟可由32个BUFG中的任意12个驱动。时钟区域的大小固定为40个CLB高、半个晶片宽。因此,大尺寸的器件有更多的时钟区域。

(2)区域时钟资源。区域时钟网络是独立于全局时钟网络的。区域时钟与全局时钟不同,区域时钟缓冲器(BUFR)的作用区域最多为3个时钟区域,这些网络对源同步接口设计尤其有用。区域时钟资源和网络由以下通路和组件构成。

①时钟专用I/O(Clock-Capable I/O)。每个时钟区域有4个Clock-Capable I/O引脚对。每个Bank中有4个Clock-Capable I/O位置。当用作时钟输入时,Clock-Capable引脚可以驱动BUFIO和BUFR。如果用作单端时钟引脚,则如“全局时钟缓冲器(BUFG)”中所述,外部单端时钟必须接到引脚对的P端,因为只有这一引脚上存在直接连接。

②I/O时钟缓冲器(BUFIO)。BUFIO是用来驱动I/O列内的专用时钟网络,这个专用时钟网络独立于全局时钟资源,适合采集源同步数据。BUFIO只能由位于同一时钟区域的Clock-Capable I/O驱动。一个时钟区域有4个BUFIO,其中的两个可以驱动相邻区域的I/O时钟网络。BUFIO不能驱动逻辑资源(CLB、BRAM等),因为I/O时钟网络只存在于I/O列中。

③区域时钟缓冲器(BUFR)。BUFR可以驱动其所在时钟区域中的6个区域时钟网络和相邻区域中的6个时钟网络。与BUFIO不同,BUFR不仅可以驱动其所在时钟区域和相邻时钟区域中的I/O逻辑,还可以驱动CLB、BRAM等。BUFR可由CC引脚、本地时钟、GT及MMCM高性能时钟驱动。BUFR对要求跨时钟域或串并转换的源同步应用来说是理想的选择。除全局时钟树和全局时钟网络外,Virtex-6系列FPGA还包含区域时钟网络。和全局时钟树一样,这些区域时钟树也是为低歪斜抖动和低功耗操作设计的。区域时钟网络的传播仅限于一个时钟区域。一个时钟区域包含6个独立的区域时钟网络。要进入区域时钟网络,必须首先例化一个BUFR,这个BUFR最多可以驱动两个相邻时钟区域中的区域时钟。

④水平时钟缓冲器(BUFH)。BUFH驱动区域中的水平全局时钟树,每个区域有12个BUFH。每个BUFH有一个CE引脚,该引脚可控制时钟动态开关。BUFH可由以下几种资源驱动。

a.同一区域的MMCM输出。

b.BUFG输出。

c.局部互连。

d.同一区域内部列的CC引脚。

⑤高性能时钟(High Performance Clock,HPC)。Virtex-6系列FPGA中的每个I/O列包含4个HPC。这些时钟由MMCM电源驱动,不由VCCINT供电,因此这些时钟能改善JITTER和占空比。HPC结构示意图如图1-7所示。在I/O列中,HPC连接BUFIO,驱动I/O逻辑。4个HPC中的两个可以不通过多区域BUFIO直接驱动I/O Bank(上Bank和下Bank)。HPC可以不通过任何时钟缓冲器直接连接到OSERDES,提供了一个改善JITTER和占空比性能的时钟。HPC没有专用缓冲器与它相连,ISE软件能够自动检查并确定设计中I/O逻辑的连接,与此同时即确定HPC的连接。HPC能驱动同一区域中的BUFR,支持源同步接口设计。

图1-7 HPC结构示意图

(3)I/O时钟资源。第3种时钟资源是I/O时钟资源。I/O时钟的速度非常快,可用于局部化的I/O串行器/解串器电路。I/O时钟信号只驱动一个区域。这些I/O时钟网络对同步设计尤其有用。

3)混合模式时钟管理器(MMCM)

除丰富的时钟网络外,Xilinx还提供了强大的时钟管理功能,提供更多、更灵活的时钟。Xilinx在时钟管理上不断改进,从Virtex-4系列FPGA中的纯数字管理单元DCM,发展到Virtex-5系列FPGA中的CMT(包含PLL),再到Virtex-6系列FPGA中的基于PLL的新型混合模式时钟管理器(Mixed-Mode Clock Manager,MMCM),实现了最小的抖动和抖动滤波,为高性能的FPGA设计提供更高性能的时钟管理功能。

Virtex-6系列FPGA中的CMT包含两个MMCM,处于同一个CMT中的两个MMCM之间有专门布线资源。每个时钟片里的MMCM可以独立使用,也可以将MMCM之间的专门布线资源释放出来供其他设计单元使用。

Virtex-6系列FPGA中MMCM的连接关系及输入源的框图如图1-8所示。同前一代Virtex-5系列FPGA中的PLL相比,Virtex-6系列FPGA扩充了时钟输入,允许多个时钟源作为MMCM的输入参考时钟。

图1-8 Virtex-6系列FPGA中MMCM的连接关系及输入源的框图

Virtex-6系列FPGA最多有9个CMT片,输入多路复用器从IBUFG、BUFG、BUFR、GTX(仅CLKIN)或通用布线(不推荐)中选择参考时钟和反馈时钟。

Virtex-6系列FPGA中PLL的每个时钟输入有一个可编程计数器D。鉴频鉴相器(PFD)比较输入(参考)时钟和反馈时钟的相位和频率。仅考虑上升沿即可,因为只要保持最小High/Low脉冲,则占空比无关紧要。PFD用来生成与两个时钟之间的相位和频率差成比例的信号。此信号驱动电荷泵(CP)和环路滤波器(LF),以便为VCO生成参考电压。PFD为电荷泵和环路滤波器生成一个上升或下降信号,以确定VCO是应该在较高频率工作还是应该在较低频率工作。当VCO工作频率过高时,PFD触发一个下降信号,致使控制电压下降,从而降低VCO的工作频率;当VCO工作频率过低时,PFD触发一个上升信号,致使控制电压上升,从而提高VCO的工作频率。VCO产生8个输出相位和1个可变相位的精细相位输出。每个输出相位都可选作输出计数器的参考时钟。可以根据给定的客户设计对每个计数器独立编程。另外,还提供了一个专用计数器M。此计数器控制PLL的反馈时钟,以实现大范围频率合成。除整数分频输出计数器外,Virtex-6系列FPGA通过组合O0/O5和/或M/O6寄存器,可以实现小数计数器。使用小数模式时,O5和O6输出不可用。

Virtex-6系列FPGA中的MMCM提供了广泛而强大的时钟管理功能,分别介绍如下。

(1)时钟去歪斜。在许多情况下,设计人员在其I/O时序预算中不希望在时钟网络上有延迟,这时可以使用MMCM来补偿时钟网络的延迟。一个与参考时钟CLKIN的频率相匹配的时钟输出(通常是CLKFBOUT)连接到BUFG,并且反馈到MMCM的CLKFBIN反馈引脚。其余输出仍可通过分频产生更多输出频率。在这种情况下,所有输出时钟对于输入参考时钟都具有固定的相位关系。

(2)基于整数分频器的数字频率合成。MMCM还可以用作独立频率合成器。在这种应用中,PLL不能用于时钟网络去歪斜,而是用于生成输出时钟频率。在这种模式下,PLL反馈通路为Internal模式,这样所有布线保留为局部布线,使抖动最小。

(3)基于小数分频器的数字频率合成。Virtex-6系列FPGA在CLKOUT0输出和/或M反馈路径上支持非整数分频。如果CLKOUT0计数器用于小数模式,那么CLKOUT5计数器的输出不可用。类似地,在M反馈计数器使用时,CLKOUT6计数器的输出也不可用。小数分频的精度是1/8度或0.125度。在小数分频的情况下,占空比和相移不可编程。

(4)抖动滤波器。MMCM可以减小参考时钟上固有的抖动。作为抖动滤波器,MMCM通常被看作一个缓冲器,在输出上重新生成输入频率(例如,fIN=100MHz,fOUT=100MHz)。一般来说,通过使用MMCM的BANDWIDTH属性,并且将其设置为Low,可以实现较强的抖动过滤。但将BANDWIDTH设置为Low会导致MMCM的静态偏差增大。

(5)相移。在许多情况下,各时钟之间需要有相移。MMCM可以通过多个选项实现相移。最好通过软件工具选择合适的相移模式。

①静态相移模式。VCO能够以45°的间隔提供8个移相时钟,静态相移模式是通过选择这8个VCO输出相移中的一个实现的。因此,以时间为单位的相移分辨率定义为:。因为VCO具有明确的工作范围,所以可以把相移分辨率的范围界定为从。VCO的频率越高,相移分辨率就越高。各输出计数器可分别编程,允许每个计数器在VCO输出频率的基础上具有不同的相移。

②IPFS模式。Virtex-6系列FPGA还提供一种IPFS模式相移,支持固定或动态模式。在该模式下,相移实现线性移位特性,和CLKOUT_DIVIDE值无关,只取决于VCO频率。MMCM以fvco/56为步长进行相位调节。相移值可在配置过程中固定,也可动态改变。CLKOUT计数器可分别设置成静态相移模式或IPFS模式,固定相移模式下,动态相移接口不能被使用。

③动态相移接口。Virtex-6系列FPGA可以由PSEN、PSINCDEC、PSCLK和PSDONE控制动态相移。MMCM锁住后,CLKOUT_PHASE属性决定初始相位,通常情况下,可以不设置初始相移。MMCM根据PSEN、PSINCDEC、PSCLK和PSDONE信号的动作,改变输出相移。步长为VCO时钟周期的1/56。

4)BRAM(Block RAM)

Virtex-6系列FPGA内嵌BRAM,大大拓展了FPGA的应用范围,提高了其应用的灵活性。BRAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)及FIFO等常用存储结构。Virtex-6系列FPGA中的BRAM是双端口RAM,每个BRAM可存储36Kbit的数据,支持写和读同步操作,两个端口对称且完全独立,共享存储的数据,可以改变每个端口的位宽和深度。每个36Kbit的BRAM可配置成64Kbit×1(和相邻36Kbit的BRAM级联)、32Kbit×1、16Kbit×2、8Kbit×4、4Kbit×9、2Kbit×18、1Kbit×36或512bit×72的简单双端口RAM;每个18Kbit的BRAM也可配置成16Kbit×1、8Kbit×2、4Kbit×4、2Kbit×9、1Kbit×18或512bit×36的简单双端口RAM。存储器内容可在配置比特流时设置。BRAM在写操作过程中,它的输出数据可以编程设置,或者保持输出数据不变,或者反映正在写入的新数据,或者反映正在被覆盖的旧数据。

(1)双端口RAM。全双口36Kbit的BRAM有36Kbit的存储空间和两个独立的访问口:A口和B口。类似地,每个18Kbit的BRAM有18Kbit的存储空间和两个全独立的访问口:A口和B口。结构是全对称的,数据可以写入其中的一个口或两个口,也可以从一个口或两个口读出。写操作是同步的,每个口有自己单独的地址、数据输入、数据输出、时钟、时钟允许和写允许信号。读操作也是同步的,并需要一个时钟边沿。

需要注意的是,当两个端口同时对同一个地址进行操作时,由于双端口RAM内部没有专门的监控逻辑,因此需要用户自己控制两个时钟,以避免冲突。两个端口同时对同一个地址的写操作虽然不会损坏该物理空间,但可能导致数据错误。

(2)FIFO。Virtex-6系列FPGA的BRAM中的专用逻辑让用户能够轻松地实现同步或异步FIFO,这样就不必为计数器、比较器或状态标记的生成使用其他CLB逻辑。在Virtex-6系列FPGA中,FIFO可配置成18Kbit和36Kbit的存储空间。对于18Kbit的FIFO,支持4Kbit×4、2Kbit×9、1Kbit×18和512bit×36;对于36Kbit的FIFO,支持8Kbit×4、4Kbit×9、2Kbit×18、1Kbit×36和512bit×72。

(3)ECC(纠错码)内置纠错。当使用Virtex-6系列FPGA中的RAMB36E1(SPP模式)或36Kbit的FIFO(FIFO36E1)时,可以使能其中的ECC纠错功能。ECC占用72位宽,其中64位数据,8位汉明码,它可以产生汉明位并纠正输出的数据错误,但不会纠正存储器内容。另外,它还可以输出错误位置的地址。在写操作过程中,生成8个保护位(ECCPARITY),与64位数据一起存到存储器中。ECCPARITY位在每次读操作过程中用来纠正任意单位元错误或检测(但不纠正)任意双位元错误。在读操作过程中,72位数据从存储器读出并馈入ECC解码器。ECC解码器生成两个输出状态(SBITERR和DBITERR),用来指示3种可能的读操作结果:无错误、已纠正单位元错误、检测到双位元错误。在标准ECC模式下,读操作不纠正存储器阵列中的错误,仅将已经纠正的数据送到DO。为了改善fMAX,可以将由DO_REG属性控制的可选寄存器用于数据输出(DO)、SBITERR和DBITERR。

Virtex-6系列FPGA中的ECC还增加了一个新的功能:能回读当前数据输出对应的存储地址,支持修复错位的数据位或将该地址设置成无效。

5)DSP模块

为了适应越来越复杂的DSP运算,Virtex-6系列FPGA内嵌了功能更强大的DSP48E1,并且DSP48E1兼容Virtex-5系列FPGA中的DSP48E,而且在以下两个方面有所增强。

(1)带D寄存器的25位预加器,增强A通道的能力。

(2)在切换乘法(A*B)和加法(A:B)操作时,INMODE控制支持平衡流水线。

DSP48E1内部结构示意图如图1-9所示。由图1-9可以看出,算术部分包含1个预加器、1个二进制补码乘法器、3个48位的多路复用器,跟随1个48位符号可扩展的加法器/减法器/累加器或二输入逻辑单元。如果使用了二输入逻辑单元,则此乘法器不能再被使用。

图1-9 DSP48E1内部结构示意图

DSP48E1的数据和控制输入连接到算术和逻辑部分。A和B输入通道上有两级流水线寄存器,D和AD(AD为预加器内的中间寄存器)输入通道上有一级流水线寄存器,其他数据和控制输入通道上也有一级流水线寄存器。最高操作频率可达600MHz。

大部分情况下,加法/减法/逻辑单元的输出是其输入的函数,输入由MUX、进位选择逻辑和乘法器阵列驱动。对应公式为

Adder/Sub输出=Z±(X+Y+CIN)或Z(X+Y+CIN)

6)SelectIO模块

Virtex-6系列FPGA中的每个I/O片(I/O Tile)包含两个I/OB、两个ILOGIC、两个OLOGIC和两个IODELAY。

(1)I/OB。I/OB包含输入、输出和三态SelectIO驱动器,支持单端I/O标准(LVCMOS、HSTL、SSTL)和差分I/O标准(LVDS、HT、LVPECL、BLVDS、差分HSTL和SSTL)。I/OB、引脚及内部逻辑的连接图如图1-10所示。

图1-10 I/OB、引脚及内部逻辑的连接图

I/OB直接连接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(互补输出的差分输入/输出缓冲器)。

(2)ILOGIC。ILOGIC的内部逻辑如图1-11所示,可以实现的操作包括异步/组合逻辑、DDR模式(OPPOSITE_EDGE模式、SAME_EDGE模式或SAME_EDGE_PIPELINED模式)、电平敏感型锁存器和边沿触发D触发器。

图1-11 ILOGIC的内部逻辑

①异步/组合逻辑。异步/组合逻辑用来创建输入驱动器与FPGA内部资源之间的直接连接。当输入数据与FPGA内部逻辑之间存在直接(非寄存)连接时,或者当“将I/O寄存器/锁存器合并到I/OB中”的设置为OFF时,此通路被自动使用。

②输入DDR(IDDR)。Virtex-6系列FPGA的ILOGIC中有专用寄存器来实现输入双倍数据速率(IDDR)。可以通过例化IDDR来使用此功能。IDDR只有一个时钟输入,下降沿数据由输入时钟的反相版本(在ILOGIC内完成反相)进行时钟控制。所有输入I/OB的时钟均为完全多路复用,即ILOGIC或OLOGIC模块之间不共用时钟。IDDR支持3种操作模式:OPPOSITE_EDGE模式(如图1-12所示)、SAME_EDGE模式和SAME_EDGE_PIPELINED模式。

SAME_EDGE模式和SAME_EDGE_PIPELINED模式与Virtex-5系列FPGA一样。这些模式允许设计人员在ILOGIC模块内部将下降沿数据转移到上升沿时钟域,以节省CLB和时钟资源并提高性能。这些模式是用DDR_CLKJEDGE属性实现的。

图1-12 使用OPPOSITE EDGE模式时IDDR的时序图

(3)OLOGIC。OLOGIC由两个主要模块组成,分别是组合输出通路和三态控制通路。这两个模块具有共同的时钟(CLK),但具有不同的使能信号OCE和TCE。

组合输出通路和三态控制通路可独立配置为边沿触发D触发器、电平敏感型锁存器、异步/组合逻辑或DDR模式。

①组合输出通路和三态控制通路。组合输出通路和三态控制通路用来实现从FPGA内部逻辑到输出驱动器或输出驱动器控制端的直接连接。当FPGA内部逻辑与输出数据或三态控制之间存在直接(非寄存)连接时,或者当“将I/O寄存器/锁存器合并到I/OB中”的设置为OFF时,此通路被使用。

②输出DDR(ODDR)。Virtex-6系列FPGA的OLOGIC中具有专用寄存器,用来实现DDR功能。要使用此功能,只需要例化ODDR。ODDR只有一个时钟输入,下降沿数据由输入时钟的反相时钟控制。ODDR支持两种操作模式:OPPOSITE_EDGE模式和SAME_EDGE模式。SAME_EDGE模式允许在ODDR时钟的上升沿将两个数据送至ODDR,以节省CLB和时钟资源并提高性能。OPPOSITE_EDGE模式使用时钟的两个沿以两倍吞吐量从FPGA内部采集数据,两个输出都送至I/OB的数据输入或三态控制输入。图1-13所示为使用OPPPOSITE_EDGE模式时ODDR的时序图。图1-14所示为使用SAME_EDGE模式时ODDR的时序图。

图1-13 使用OPPPOSITE EDGE模式时ODDR的时序图

图1-14 使用SAME EDGE模式时ODDR的时序图

ODDR可以将时钟的一个副本传送到输出。将ODDR原语的D1固定为High,D2固定为Low,时钟与数据ODDR的时钟一样。这个方案可以确保输出数据与输出时钟延时的一致性。

(4)IODELAY。每个I/OB包含一个可编程绝对延迟单元,称为IODELAY。IODELAY可以连接到ILOGIC/ISERDES或OLOGIC/OSERDES模块,也可同时连接到这两个模块。

IODELAY是具有32个Tap的环绕延迟单元,具有标定的Tap分辨率。IODELAY可用于组合输入通路、寄存输入通路、组合输出通路或寄存输出通路,还可以在内部资源中直接使用。IODELAY允许各输入信号有独立的延迟。延迟单元可以被校验到一个绝对延迟固定值(TIDELAYRESOLUTION),这个值不随工艺、电压和温度的变化而改变。

IODELAY有4种操作模式,分别是零保持时间延迟模式(IDELAY_TYPE=DEFAULT)、固定延迟模式(IDELAY_TYPE=FIXED)、可变延迟模式(IDELAY_TYPE=VARIABLE)和可装载的可变延迟模式(IDELAY_TYPE=VAR_LOADABLE)。零保持时间延迟模式允许向后兼容,以使用Virtex-5系列FPGA中零保持时间延迟功能的设计。在这种模式下使用时,不需要例化IDELAYCTRL的原语。在固定延迟模式下,延迟量由属性IDELAY_VALUE确定的Tap数决定,此值配置后不可更改。此模式必须例化IDELAYCTRL的原语。在可变延迟模式下,配置后通过控制信号CE和INC来改变延迟量。此模式必须例化IDELAYCTRL的原语。在可装载的可变延迟模式下,IDELAY TAP可以通过FPGA逻辑相连的5位CNTVALUEIN<4:0>装载。当配置为此模式时,也必须例化IDELAYCTRL的原语。当IDELAYE1或ISERDES的原语中的IODELAY_TYPE属性设置为FIXED、VARIABLE或VAR_LOADABLE时,都必须例化IDELAYCTRL。IDELAYCTRL模块连续校验IODELAYE的延迟环节,以减小工艺、电压和温度的影响。

7)GTX模块

Virtex-6系列FPGA支持多种高速串行接口,其中高速串行模块GTX收发器可以实现150Mbps~6.5Gbps的线速率。GTX收发器是芯片与芯片之间、板与板之间进行串行通信的首选解决方案。GTX收发器具有以下特性。

(1)灵活的SERDES支持多速率应用。

(2)功能强大的发射预加重和接收均衡功能具有最佳的信号完整性。

(3)集成式“变速箱”可以实现灵活编码:64B/66B、64B/67B。

(4)高度灵活的时钟控制,接收与发送独立。

(5)可以与片上PCI Express和三态以太网MAC模块连接。

(6)相比于以前的产品,收发器功耗降低了25%,在6.5Gbps下,功率小于150mW(典型值)。

(7)符合常用标准,如10/40/100Gbps以太网、PCI Express、OC-48、XAUI、SRIO和HD-SDI。

Virtex-6系列FPGA包含12~36个GTX收发器模块。GTX收发器包含物理编码子层(Physical Coding Sublayer,PCS)和物理媒介适配层(Physical Media Attachment,PMA)。PMA包含串行器/解串器(SERDES)、TX和RX输入/输出缓冲、时钟产生器和时钟恢复电路。PCS包含8B/10B编码器/解码器、弹性缓冲器。

发送的并行数据经过8B/10B编码后,写入发送端FIFO,然后转换成串行差分数据发送出去。接收端接收到的串行差分信号首先经过接收端缓冲,然后经过串并转换器转换成并行数据,再经过8B/10B解码,写入弹性缓冲,最后并行输出。

PCS具有8B/10B编码器/解码器。MGT可以工作在32位或40位操作模式,可以在配置或运行过程中更改PMA速率和PCS协议,可以根据时钟来配置内部数据宽度和外部数据宽度。

PMA提供与外部媒体的模拟接口,包括20倍时钟倍频器、发送端时钟产生器、发送缓冲器、串行器、接收端时钟恢复电路、接收缓冲器、解串器、可变速率的全双工收发器、可编程的5级差分输出幅度(摆率)控制和可编程的4级输出预加重模块等。

Virtex-6 HXT FPGA中的GTH模块比GTX模块有更高的线速率,用它可以实现最高性能的高速串行收发器。GTH模块具有以下特性。

(1)灵活的SERDES支持多速率应用。

(2)实现40Gbps和100Gbps协议等接口。

(3)功能强大的发射预加重和接收均衡器。

(4)集成式“变速箱”可以实现灵活编码:8B/10B、64B/66B。

(5)低功耗:在10.312 5Gbps下,功率小于220mW(典型值)。

(6)符合常用标准,如10/40/100Gbps以太网、PCI Express、OC-48、XAUI、SRIO和HD-SDI。

8)以太网(Ethernet)MAC模块

Virtex-6系列FPGA内嵌以太网媒体访问控制器(MAC)模块,不需要消耗可编程逻辑资源即可提供无缝的芯片到芯片连接。以太网MAC模块支持10/100/1000Mbps数据速率,兼容UNH验证标准并具有互操作能力,设计符合IEEE 802.3规范的要求,可以单独运行在1000Mbps、100Mbps和10Mbps模式,或者配置成三态模式。以太网MAC模块支持IEEE标准的MII、GMII和RGMII协议,减小外部物理层接口的总线宽度。图1-15所示为以太网MAC模块结构示意图。

图1-15 以太网MAC模块结构示意图

主机可以通过通用主机总线或设备控制寄存器(DCR)总线与以太网MAC模块互连。物理层接口能配置成MII、GMII、RGMII、SGMII或100BASE-X,但是根据所选择的物理层接口配置,只有一套TX和RX接口被激活。

EMAC有一个可选的管理数据输入/输出(MDIO)接口,可以访问外部物理层的管理寄存器和EMAC内部的物理层接口管理寄存器(仅在100BASE-X或SGMII模式配置下有效)。

EMAC输出统计向量包含以太网MAC模块的发送和接收数据通路上的帧统计信息。复用统计向量以减少与外界连接时所需要的引脚数。在FPGA中实现统计IP(Statistics IP)核以累计以太网MAC模块的发送和接收数据通路上的统计信息。EMAC接口路径上有个接收地址滤波器,它控制接收或拒绝输入帧。

发送统计向量TX_STATISTICS_VECTOR包含发送帧的统计信息,由32位向量和内部信号组成。接收统计向量RX_STATISTICS_VECTOR包含接收帧的统计信息,由28位向量和内部信号组成。Xilinx CORE Generator软件免费提供一个外部统计模块,该统计模块对以太网MAC模块的发送和接收数据通路上的所有统计信息进行累计。设计中可以调用以太网MAC模块的原语或使用CoreGen工具配置EMAC参数来使用以太网MAC模块。

9)PCIE模块

PCI Express 2.0(PCIe 2.0)标准对满足高性能、低功耗应用的需求非常关键,特别是在电信、服务器、高端视频市场。针对越来越多的PCIe应用,Virtex-6系列FPGA内嵌了第2代PCIE模块,该集成的第2代PCIE模块兼容PCI Express 2.0标准,已经通过了1~8通道配置的PCI-SIG PCI Express 2.0版本兼容性与互操作性测试。

Virtex-6系列FPGA中的PCIE模块实现了事务处理层、数据链路层和物理层功能,能够以最低的FPGA逻辑利用率提供完整的PCIe端点和根端口功能。Virtex-6系列FPGA中集成的PCIE模块结构示意图如图1-16所示。

图1-16 Virtex-6系列FPGA中集成的PCIE模块结构示意图

2.Kintex-7系列FPGA

Kintex-7系列FPGA是在通用28nm架构基础上构建的三大产品系列之一,可提供高密度逻辑、高性能收发器、存储器、DSP及灵活的混合信号处理功能。

Xilinx的“基础目标设计平台”为设计人员提供了一套完整解决方案,其中包括芯片、软件、IP核和参考设计。作为支持即插即用型FPGA设计的互连策略的一部分,AMBA4、AXI4规范的实施进一步提高了IP核重用效率、移植性和可预测性。

1)可配置逻辑模块(CLB)

CLB由LUT、MUX、CARRY(进位器)、FF(触发器)组成。

2)时钟资源

Kintex-7系列FPGA的时钟资源通过专用的全局时钟和区域I/O时钟资源管理满足复杂和简单的时钟要求。CMT提供时钟频率合成、减小偏移和抖动过滤等功能。非时钟资源,如本地布线,不推荐用于时钟功能。

全局时钟树允许同步模块时钟跨越整片FPGA。区域I/O时钟树最多允许为3个垂直相邻的时钟区域提供时钟。每个CMT包含一个MMCM和一个PLL,位于I/O列旁边的CMT列中。

Kintex-7系列FPGA被划分为时钟区域。时钟区域的数量随器件大小而变化,从最小器件的1个时钟区域到最大器件的24个时钟区域。时钟区域包括50个CLB和一个I/O Bank(50个I/O)区域中的所有同步模块(如CLB、I/O、串行收发器、DSP模块、BRAM、CMT),其中心有一个水平时钟行(HROW)。每个时钟区域从HROW向上和向下跨越25个CLB,并水平跨越器件的每一侧。

Kintex-7系列FPGA最多有24个CMT。MMCM和PLL用作频率合成器,用于非常大的频率范围,用作外部或内部时钟的抖动滤波器及小偏移时钟。

PLL包含MMCM功能的一个子集。Kintex-7系列FPGA的时钟输入连接允许多个资源向MMCM和PLL提供参考时钟。Kintex-7系列FPGA中的MMCM具有任意方向的无限精细相移能力,可用于动态相移模式。MMCM在反馈路径或一个输出路径上也有一个小数计数器,使得频率合成能力能够进一步细化。

3)BRAM

嵌入式BRAM可被配置为单/双端口RAM、伪双端口RAM、ROM、FIFO等。FPGA内嵌RAM在FPGA项目开发中起着相当关键的作用,其中FIFO、shift-RAM,ROM等数据缓冲区均可用RAM设计,它可以与FPGA内部的SRAM联合使用。

4)DSP模块

FPGA对于DSP应用是有效的,因为它们可以实现自定义完全并行算法。DSP应用程序使用许多二进制文件在专用DSP片中最好实现的乘法器和累加器。所有Kintex-7系列FPGA有很多专用的、全定制的、低功耗的DSP片,结合起来具有很高的小尺寸速度,同时保持系统设计的灵活性。DSP片提高了DSP以外的许多应用的速度和效率,如宽动态总线移位器、存储器地址产生器、宽总线多路复用器和内存映射I/O寄存器。

Kintex-7系列FPGA内嵌DSP模块的亮点功能如下。

(1)25位×18位二进制补码乘法器:动态旁路。

(2)48位累加器:可以用作同步上/下计数器。

(3)节电前置加法器:优化对称滤波器应用,降低DSP片要求。

(4)单指令多数据(SIMD)运算单元:双24位或4个12位加法/减法/逻辑操作。

(5)可选的逻辑单元:可以生成两个操作数的10个不同逻辑函数中的任意一个。

(6)样式检测器:收敛或对称四舍五入;96位宽逻辑函数,与逻辑单元一起使用。

(7)高级功能:可选的流水线操作与总线进行级联。

Kintex-7系列FPGA内嵌DSP48E1内部结构示意图如图1-17所示。预加器(加法器)实现A(最大位宽是30位)与D(最大位宽是25位)的相加,预加后输出的结果最大位宽为25位。该预加器不用的时候可以旁路掉。25位×18位乘法器的两个乘数分别为B(最大位宽是18位)及A与D相加后结果的低25位,输出的结果为48位(高5位是符号扩展位,低43位是数据位)。该乘法器不用的时候可以旁路掉。加法/减法/逻辑运算器能够实现加/减法、累加/减或逻辑运算(与、或、非),输出的结果最大位宽为48位数据位+4位进位。样式检测器主要实现带掩模的数据比较、上下溢出检测、计到一定数对结果进行重置功能。数据选择器的两个数据输入端分别为C和P(最大位宽是48位),因此DSP48E1是做普通加法还是做累加就取决于数据选择器。

图1-17 Kintex-7系列FPGA内嵌DSP48E1内部结构示意图

使用DSP48E1做加/减法如图1-18所示。当将ALUMODE[1:0]设置为2'b00时,Y设为0时就可以做加法A+B。当将ALUMODE[1:0]设置为2'b01时,Y设为1时就可以做减法A-B。此时CIN可以单独拿出来使用,不必强制设为0/1(当然也可以用CIN来代替Y)。

此外,DSP48E1除能做1个48位与48位加法/减法/逻辑操作(ONE48)外,还能被用来做两个24位与24位加法/减法/逻辑操作(TWO24)、4个12位与12位加法/减法/逻辑操作(FOUR12,如图1-19所示)。这些加法的结果都是带进位的,对应的进位关系如图1-19所示。

图1-18 使用DSP48E1做加/减法

图1-19 使用DSP48E1实现4个加法/减法/逻辑操作

DSP48E1的PATTERN DETECT结构也很重要,如图1-20所示。它的输入主要为PATTERN、MASK、DATA(经常用的PATTERN和MASK已经在图1-20中用粗线框给圈起来了)。DATA为进行DSP48E1运算后未打拍的结果。使用PATTERN DETECT的时候输出要打一拍,这样PATTERNDETECT和PATTERNBDETECT的结果才能和输出P对得上。

图1-20 DSP48E1的PATTERN DETECT结构

PATTERN是用来匹配的样式。当DATA与PATTERN相同时,PATTERNDETECT为1,否则为0。当DATA与PATTERN的反码相同时,PATTERNBDETECT为1,否则为0。PATTERN可以由DSP48E1的C打拍后作为输入,也可以选择“参数PATTERN”作为输入(这里的“参数PATTERN”为PATTERN的其中一个可选输入,注意区分两者关系)。

MASK是掩模,是上下溢出检测最为关键的参数。它对应DATA的每一位。MASK[0]→DATA[0],…,MASK[47]→DATA[47]。当将MASK的某一位设为1时,它将忽略PATTERN对应位的结果,再将DATA和PATTERN进行比较。MASK可以由DSP48E1的C打拍后作为输入,也可以选择“参数MASK”作为输入(这里的“参数MASK”为MASK的其中一个可选输入,注意区分两者关系)。

PATTERNBDETECTPAST和PATTERNDETECTPAST分别为PATTERNBDETECT和PATTERNDETECT打一拍的输出结果。

为什么说MASK是上下溢出检测最为关键的参数呢?详见DSP48E1的PATTERN DETECT上下溢出检测的逻辑结构,如图1-21所示,很显然Overflow是用来检测PATTERNDETECT的下降沿的,Underflow是用来检测PATTERNBDETECT的下降沿的。

图1-21 DSP48E1的PATTERN DETECT上下溢出检测的逻辑结构

当MASK={44'b0,4'b1111}时,当DATA>5'b01111(15)时就会上溢出,当DATA<5'b10000(-16)就会下溢出。

Overflow的实质就是检测DATA的高44位(符号扩展位)是不是为全0,当DATA为15+1=16(5'b10000)时,高44位不为全0,上溢出。

Underflow的实质就是检测DATA的高44位(符号扩展位)是不是为全1(因为PATTERNBDETECT检测的是反码,所以检测的是1),当DATA为-16-1=-17(6'b101111)时,高44位不为全1,下溢出。

5)GTX模块

GTX模块是FPGA内嵌的高速收发器。GTX模块主要由PMA和PCS两个子层组成。其中,PMA包含高速串并转换(PISO)、预/后加重、接收均衡、时钟产生器及时钟恢复等电路;PCS包含8B/10B编/解码、缓冲区、通道绑定和时钟修正等电路。

6)PCIE模块

FPGA内嵌PCIE模块由PCIe数据链路层及物理层组成,物理层又可分为逻辑物理子层和电气物理子层。PCI Express(PCIe)是一种通用的串行互连总线标准,可以用于通信、数据中心、嵌入式、测试与测量、军事和桌面应用程序,还可以作为外围设备互连、片对片接口和桥接等许多协议标准。Kintex-7系列FPGA中集成的PCIE模块结构示意图如图1-22所示。

Xilinx提供了高性能和低功耗集成模块PCIE嵌入在Xilinx公司的所有可编程器件中,无须支付额外费用。

图1-22 Kintex-7系列FPGA中集成的PCIE模块结构示意图

3.Zynq-7000系列FPGA

Zynq-7000系列FPGA与传统的FPGA比较,Zynq-7000系列FPGA的最大特点是将处理系统(Processing System,PS)和可编程逻辑(Programmable Logic,PL)分离开来,固化了处理系统的存在,实现了真正意义上的SoC(System on Chip)。而传统的FPGA仅含有可编程逻辑,如Xilinx公司的Virtex-6系列FPGA和Virtex-7系列FPGA,详见前文。

Zynq-7000系列FPGA是全可编程片上系统,采用28nm制造工艺,主要包含PS和PL两个部分。PS以两个Cortex-A9的ARM核为核心,还包括片上存储器、片外存储器接口(DDR)和一系列的外设接口。Zynq-7000系列FPGA将ARM CPU和外设集成在一片芯片内,使得Zynq-7000系列FPGA皆具处理器和FPGA双重特性,特别适用于软硬件协同设计。PS和PL之间有多个接口。AXI接口具体包括:

(1)两个32位的AXI主接口、两个32位的AXI从接口。

(2)专用于PL访问DDR控制器的32/64位的AXI从接口。

(3)1个64位的访问CPU存储器的AXI从接口。

其他类型的接口及信号具体包括:

(1)DMA通道信号。

(2)PS的中断输入信号。

(3)事件信号、触发信号。

(4)EMIO.

(5)PS提供给PL的时钟信号及复位信号。

(6)XADC接口、JTAG接口等。

Zynq-7000系列FPGA内部结构示意图如图1-23所示。PS包含Application Processor Unit(APU,应用处理器单元)、Memory Interfaces(存储器接口)、I/O Peripherals(IOP,输入/输出外设)、Central Interconnect(中央互连)四大块,具体如下所述。

注:

Application Processor Unit:应用处理器单元

I/O Peripherals(IOP):输入/输出外设

USB:通用串行总线

SD SDIO:SD卡安全数字输入/输出

CAN:控制器局域网

SPI:串行外设接口

Engine:引擎

Memory Interfaces:存储器接口

Central Interconnect:中央互连

GigE:千兆以太网

UART:通用异步收发器

I2C:集成电路总线

Components:部件

Controller:控制器

图1-23 Zynq-7000系列FPGA内部结构示意图

(1)APU包括:

①单/两个ARM Cortex-A9 CPU。

②SWDT(System Watch Dog Timer,系统看门狗定时器)。

③TTC(Triple Timer/Counter,3重定时器/计数器)。

④System-Level Control Regs(系统级控制寄存器)。

⑤DMA 8 Channel(Direct Memory Access 8 Channel,八通道直接存储器访问)。

⑥GIC(General Interrupt Controller,一般中断控制器)。

⑦Snoop Controller(窥探控制)、AWDT(ARM Watch Dog Timer,ARM看门狗定时器)、Timer(定时器)。

⑧512KB L2 Cache&Controller(512KB 2级缓存与控制器)。

⑨OCM Interconnect(On-Chip Memory Interconnect,片上存储器互连)。

(2)Memory Interfaces(存储器接口)在图1-23中可看到有两处:左侧下部与右侧中部。左侧下部列出3种接口,这3种都是接FLASH等非易失性存储器的。

①SRAM/NOR:SRAM接口。

②ONFI 1.0 NAND:开放式与非型FLASH接口。

③Q-SPI CTRL:4路串行外设控制接口。

右侧中部列出接易失性存储器的DDR接口,支持DDR2/3、DDR3L、LPDDR2。

(3)I/O Peripherals(IOP,输入/输出外设)位于图1-23中左侧,从上到下分别是:

①2路USB(通用串行总线)。

②2路GigE(Gigabit Ethernet,千兆以太网)。

③2路SD SDIO(SD Secure Digital Input/Output,SD卡安全数字输入/输出)。

④1路GPIO(General Purpose Input/Output,通用输入/输出)。

⑤2路UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)。

⑥2路CAN(Controller Area Network,控制器局域网)。

⑦2路I2C(Inter-Integrated Circuit Bus,集成电路总线)。

⑧2路SPI(Serial Peripheral Interface,串行外设接口)。

(4)Central Interconnect(中央互连)将应用处理器单元、存储器接口、输入/输出外设等连起来。

4.Versal AI Core系列FPGA

Versal AI Core系列FPGA利用AI引擎提供突破性的AI推断加速,其计算性能比当前服务器级CPU高100倍以上。此系列FPGA可用于云端动态工作负载及超高带宽网络,同时还可提供高级安全和保密功能。AI科学家、数据科学家和软硬件开发者均可凭借高计算密度的优势,加速提升各种应用的性能。

Versal AI Core系列FPGA采用基于Versal ACAP(自适应计算加速平台)的技术方案。Versal ACAP布局图如图1-24所示。

图1-24 Versal ACAP布局图

1)AI引擎

鉴于AI引擎所具备的高级信号处理计算能力,它十分适合用于高度优化的无线应用,如射频、5G回程和其他高性能DSP应用。AI引擎是超长指令字处理器阵列,具有高度优化的单指令多数据(SIMD)矢量单元,专用于各种计算密集型应用,尤其是DSP、5G无线应用和人工智能技术等。

2)可编程逻辑(PL)

PL包括CLB、内部存储器及DSP引擎。每个CLB包含64个触发器和32个LUT。半数CLB LUT可以配置为1个64位RAM和1个32位移位寄存器(SRL32),或者配置为两个16位移位寄存器(SRL16)。Versal AI Core系列FPGA中还包括许多低功耗DSP引擎,具有高速且尺寸小的特点,同时还保留了系统设计灵活性。

3)片上网络(NoC)

NoC属于高速通信子系统,可在PL、PS和其他集成块中的IP核端点之间传输数据,以提供统一的裸片内部连接。NoC主接口和从接口可配置为AXI3、AXI4或AXI4-Stream。NoC将这些AXI接口转换成128位宽的NoC数据包协议,分别通过HNoC和VNoC在器件上进行横向和纵向数据移动。

4)XPIO

Versal AI Core系列FPGA中的XPIO(X-Parallel Input and Output,X并行输入/输出单元)是位于器件底部和/或顶部的外设,这与先前器件中的I/O列式布局不同。XPIO所提供的XPHY逻辑与UltraScale器件原生模式类似。XPHY逻辑可将经过校准的延迟与串行逻辑和解串逻辑封装在一起,以提供6个单端I/O端口(称为半字节)。每个XPIO Bank含9个XPHY逻辑站点(Site),支持多达54个单端I/O端口。

5)存储器控制器

存储器控制器适用于包括通用CPU及其他传统的FPGA应用在内的各种应用,如视频或网络缓存等。该控制器的运行时钟频率为DRAM时钟频率的一半,支持DDR4、LPDDR4和LPDDR4X标准,最高可达4266Mbps。该控制器可配置为单一DDR存储器接口,数据宽度为16位、32位和64位,启用纠错码(ECC)后另加8个校验位。

6)GT

GT(Gigabyte Transceiver,高速收发器或吉比特收发器)为高速接口提供了多种协议,如以太网和Aurora IP核。Versal AI Core系列FPGA采用XPIPE机制,以在PCIE模块与GT之间建立高速连接。XPIPE和GT在基于PL的IP核与基于PS的IP核(如CPM、以太网、用于调试的Aurora链路等)之间共享。对于Versal AI Core系列FPGA,GT组件粒度从公共/通道更新为四通道。