FPGA实战训练精粹
上QQ阅读APP看书,第一时间看更新

1.2 FPGA芯片(Xilinx)介绍

本节主要谈谈Xilinx的FPGA芯片的结构。目前,FPGA芯片仍是基于查找表技术的,但其概念和性能已经远远超出查找表技术的限制,并且整合了常用功能的硬核模块(如块RAM、时钟管理单元MMCM、DSP硬核乘加器等)。图1.3所示为Xilinx公司推出的最新系列FPGA,采用的是ASMBL(Advanced Silicon Modular Block)架构。在ASMBL架构中,每类资源以列形式存在。

图1.3 ASMBL架构

1.2.1 FPGA的基本结构

图1.4所示为Xilinx公司Spartan-2系列FPGA的内部结构图,从中可以看出FPGA芯片主要由7部分组成:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内核的底层功能单元和内嵌专用硬件模块。

图1.4 FPGA芯片的内部结构

注意

Virtex 5后续的Virtex系列、Spartan 6后续的Spartan系列均为6输入的LUT,之前的FPGA系列均为4输入的LUT。

每个模块的功能如下。

1. 可编程输入输出单元(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同于电气特性下对输入/输出信号的驱动与匹配要求,其典型结构如图1.5所示。为了便于管理和适应多种电气标准,FPGA的IOB被划分为若干个bank,每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同的bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。

FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性、调整驱动电流的大小、改变上拉电阻与下拉电阻。目前,I/O的频率越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gb/s的数据速率。

外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(hold time)的要求可以降低,通常默认为0。IO块内部结构如图1.5所示。

图1.5 IO块内部结构示意图

2. 可配置逻辑块(CLB)

CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依据器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置,以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4或2个)相同的Slice和附加逻辑构成,如图1-6所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。典型的CLB结构如图1.6所示。

图1.6 典型的CLB结构示意图

Slice是Xilinx公司定义的基本逻辑单位。基于4输入LUT的传统Slice内部结构如图1.7所示。一个Slice由两个4/6输入的查找表函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器。典型的4输入Slice结构如图1.7所示。

图1.7 典型的4输入Slice结构示意图

目前的FPGA一般都采用6输入查找表,可以实现6输入LUT或64比特移位寄存器,进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

基于6输入LUT的Slice内部结构包括4个6输入的LUT和8个寄存器,因此新一代的6输入Slice,其逻辑能力从资源上讲是“老”器件的4倍(26/24=4)。

3. 时钟管理模块

业内大多数FPGA均提供数字时钟管理(赛灵思公司的全部FPGA均具有这种特性)。赛灵思公司推出先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。PLL原理图如图1.8所示。

图1.8 PLL原理图

4. 嵌入式块RAM(BRAM)

嵌入式RAM模块概况如图1.9所示。

图1.9 内嵌的块RAM

大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述了。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM外,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。

目前,6输入LUT器件中的单片块RAM的容量为36K比特,即位宽为36比特,深度为1024个,可以根据需要改变其位宽和深度,但要满足两个原则:


·首先,修改后的容量不能大于36K比特。

·其次,位宽最大不能超过72比特。


当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两个原则的约束。

5. 丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4个不同的类别。


·第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线。

·第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线。

·第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线。

·第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。


FPGA芯片的性能差异主要就是布线资源数量的差异,高端FPGA具有最好的布线资源,能够实现更高速的设计,更容易达到时序收敛。

在实际设计中,设计者不需要直接选择布线资源,布局布线器可自动根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。

6. 底层内嵌功能单元

内嵌功能模块主要是指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元使得单片FPGA成为系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。

DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了PLL和DLL,Altera公司的芯片上集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL和DLL可以通过IP核生成的工具方便地进行管理和配置。DLL的结构如图1.10所示。

图1.10 典型的DLL模块示意图

7. 内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如,为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十吉字节每秒的收发速度。

赛灵思公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。

此外,新推出的赛灵思的FPGA系列(如Virtex-5 LXT)还内建了PCI-e和三态以太网MAC硬核(TEMAC)。与软核实现方式相比,硬核可以把功耗降低5~10倍,节约将近90%的逻辑资源。

Xilinx三态以太网MAC核是一个可参数化的核,非常适合在网络设备中使用,例如开关和路由器等。可定制的TEMAC核使系统设计者能够实现宽范围的集成式以太网设计,从低成本10/100Mbps以太网到性能更高的1GB端口。TEMAC核设计符合IEEE 802.3规范的要求,并且可以在1000Mbps、100 Mbps和10 Mbps模式下运行。另外,它还支持半双工和全双工操作。TEMAC核通过Xilinx CORE Generator工具提供,是Xilinx全套以太网解决方案的一部分。

1.2.2 软核、硬核及固核

IP(Intelligent Property)核是具有知识产权核的集成电路芯核的总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。

从IP核的提供方式上,通常将其分为软核、固核和硬核3类。从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用性最高。

1. 软核

软核在EDA设计领域指的是综合之前的寄存器传输级(RTL)模型;具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP核应用最广泛的形式。

2. 硬核

硬核在EDA设计领域指经过验证的设计版图;在FPGA设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其进行修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP硬核不许修改的特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。

目前,所有的Xilinx FPGA内部都集成了CDM(时钟管理单元)、DSP单元及BRAM等硬核资源,高端芯片中还包括SERDES、PCI-e、DDR3控制器、ARM/Power PC以及XADC等硬核资源。

3. 固核

固核在EDA设计领域指的是带有平面规划信息的网表;具体在FPGA设计中可以看作带有布局规划的软核,通常以RTL代码和对应具体工艺网表的混合形式提供。将RTL描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。目前,固核也是IP核的主流形式之一。

1.2.3 7系列FPGA简介

在7系列芯片以前,Xilinx的两个重要产品分别是面向高性能应用场景下的Virtex系列和面向低成本低功耗应用场景下的Spartan系列,不过这两个系列从芯片内部的布局布线、时钟管理单元到内部的BRAM等硬件模块都有显著的不同。开发人员在不同平台间切换时,因为硬件模块的定义不同,往往需要做一定的代码修改,从而减慢了项目开发的速度。因此,在最新的7系列芯片中,Xilinx采用了统一的架构,FPGA内硬件例化模块都采用统一的定义,以帮助用户快速完成设计的迁移。

7系列FPGA采用了最新的28nm工艺,应用范围更是涵盖了所有的系统要求,从低功耗、小型化、成本敏感、大批量应用到超高连接带宽、逻辑能力强和高性能,各种应用需要的信号处理能力它都具备。Xilinx 7系列FPGA包括以下几种。


·Artix-7系列:为最低的成本和功耗做了优化,为大批量应用的小型化封装设计。

·Kintex-7系列:为最大的性价比做了优化,和前一代相比,提高一倍的性能。

·Virtex-7系列:为最高的系统性能做了优化,通过硅片堆叠技术(SSI)提供高性能、高容量的芯片。


根据以上的系列分布,可以看到两个显著的变化:

其一,低成本、低功耗的产品名为Artix,而不是原来的Spartan。

其二,在原来高性能和低成本中间的产品线中增加了实现最大性价比的Kintex产品线,以往使用Virtex系列的产品都可以尝试先在Kintex器件上做实验。同时,因为芯片内部硬件架构相同,所以三个产品线的读音也都类似。

7系列FPGA有以下几个主要的特征:


·基于6输入查找表(LUT)技术的先进的高性能FPGA逻辑,并且可配置为分布式存储器。

·带有内建FIFO的36Kb双端口BRAM,可作为片内数据缓存。

·支持速度高达1866Mb/s的DDR3接口的高性能Select IOTM技术。

·内建多个吉比特(Gb)收发器的高速串行连接器,速度从600Mb/s到最高28.05Gb/s,提供低功耗模式,优化了芯片到芯片的接口。

·用户可配置的模拟接口(XADC)包括两个12位1MSPS的ADC和片上温度、电压传感器。

·DPS Slice包括25×18的乘法器、48位累加器和预加法器,可用于高性能滤波,其中包括优化的对称滤波。

·强大的时钟管理模块CMT,连接相位锁相环PLL和混合模式时钟管理器MMCM,可用于高精度和低抖动的应用。

·集成了用于x8 Gen3端点和根端口设计的PCI-e硬核。

·丰富的可配置选项,包括支持商用存储器,带有HMAC/SHA-256授权的256位AES加密及内建的SEU检测和纠错单元。

·高性能低功耗的28nm工艺。HKMG、HPL处理,1.0V核心电压处理技术和0.9V核心电压选项用于更低的功耗应用。


7系列FPGA和Zynq AP SoC平台具有千丝万缕的联系。Zynq内部的FPGA部分就是基于7系列FPGA的。两个面向低端应用的Zynq芯片Zynq-7010和Zynq-7020使用Artix-7,两个面向高端应用的Zynq芯片Zynq-7030和Zynq-7045使用Kintex-7。

说明

本书并不详细介绍7系列FPGA内部的结构,如果读者对FPGA的结构、资源和设计方法感兴趣,请到Xilinx官网参考官方的文档,或者阅读其他关于FPGA内部组织结构的图书。

下面我们会简单介绍FPGA的组成单元和内部的资源,主要包括CLB、Slices、LUTs、BRAM、DSP Slices、PCI-e接口、XADC。(先列一张资源清单,让大家有了解一下。)7系列FPGA资源如图1.11所示。

图1.11 7系列FPGA资源

图1.11比较清楚地列出了7系列FPGA的资源,下面我们简单介绍7系列的关键技术。

(1)硅片堆叠(SSI)技术

要设计出高容量的FPGA,是有很多挑战的,Xilinx的解决方案是使用SSI技术。SSI技术允许使用多个超级逻辑区域(SLR)组成被动式内插层(Passive Interposer Layer),使用经过行业领导者验证的制造和装配技术。在单FPGA上集成了多达10000个SLR连接,提供具有低延迟和低功耗的超高带宽。

(2)逻辑资源(CLB、Slice和LUT)

7系列FPGA的LUT可以被配置为一个6输入1输出的LUT,或者两个5输入具有相同地址或逻辑输入的独立输出的LUT。每一个LUT的输出可以有选择性地在FF(Flip-Flop)寄存。4个这样的LUT和与之相关的8个FF再加上一些多路选择器和算术进位逻辑组成了Slice,两个Slice组成了CLB。25%~50%的Slice可以用LUT作为分布式64位RAM或者32位移位寄存器。CLB的一些关键特性如下:


·真正6输入LUT。

·LUT具有存储功能。

·具有寄存器和移位寄存器功能。

说明

详细的CLB配置情况可从官网上下载UG474“7 Series FPGAs Configurable Logic Block User Guide”,以供参考。

(3)时钟管理

7系列FPGA拥有多达24个时钟管理通道(CMT),每个CMT都由一个混合模式时钟管理器(MMCM)和一个锁相环(PLL)组成。7系列FPGA提供6种不同类型的时钟线(BUFG、BUFR、BUFIO、BUFH、BUFMR和高性能时钟)来解决不同的需求,包括高扇出、短传输延迟和低抖动等需求。这一部分是FPGA的关键部分,可参考官方的UG472“7 Series FPGAs Clocking Resources User Guide”了解详情。

(4)BRAM(块存储器)

大多数的FPGA都具有内嵌的BRAM,这加强了FPGA的灵活性。BRAM可用于片内数据缓冲、FIFO缓冲等。7系列的FPGA提供了30~1880个双端口BRAM,每一个存储36Kb的数据。每个BRAM都有两个只共享数据的独立端口。BRAM的特性包括:


·双端口36Kb的BRAM,最大位宽是72位。

·可编程的FIFO逻辑。

·内建可选的纠错电路。


(5)DSP Slice

7系列的FPGA集成了专用的、充分定制的、低功耗的DSP Slice。其增强的功能主要包括:


·25×18的补码乘法器/累加器,高分辨率为48位的信号处理器。

·用于对称滤波器应用的低功耗预加法器。

·一些高级特性(可选的流水线、可选的ALU和用于级联的专用总线)。


(6)输入/输出(I/O)块

7系列的FPGA的I/O块使用不同的封装,满足物理和逻辑级别上不同的要求。物理级上,I/O块支持一个范围内的驱动电压和驱动强度,以及接收功能接口的不同I/O标准。7系列的FPGA有高性能HP和高范围HR两种类型I/O。逻辑级上,所有的I/O都能被配置为组合或者寄存方式,都支持DDR模式。

(7)低功耗吉比特收发器

7系列的FGPA提供的吉比特收发器具有以下特征:


·提供高达6.6Gb/s(GTP)、12.5Gb/s(GTX)、13.1Gb/s(GTH)或28.05Gb/s(GTZ)线速率,是业内第一个实现400Gb/s数据吞吐的单芯片。

·支持芯片到芯片接口的低功耗模式。

·支持高级预发送、后加重、接收器线性(CTLE)和判决反馈均衡(DFE),包括用于额外余量的自适应均衡。


(8)集成PCI-e模块

7系列的FPGA集成的PCI-e模块包括如下重要的特性:


·兼容PCI-e 2.1或3.0基本规范,提供端点和根端口的能力。

·根据芯片类别,支持Gen1(2.5Gb/s)、Gen2(5Gb/s)和Gen3(8Gb/s)。

·支持高级配置选项、高级错误报告(AER)(包括端到端的(ECRC)高级错误报告)和ECRC特性。

·具有多重功能和单个启动I/O虚拟化(SR-IOV)支持。


(9)XADC模块

全部的Xilinx 7系列FGPA都集成了新的灵活模拟接口XADC。XADC结合了7系列FPGA的可编程能力,满足板级数据采集和监控的需求。这种独特的组合被称为敏捷的混合信号的模拟和可编程逻辑。欲了解更多信息,可访问http://www.xilinx.com/ams。XADC模块的主要特性包括:


·双12位1MSPS模拟到数字转换(ADC)。

·高达17个灵活的用户可配置逻辑输入。

·可选片内或者片外参考电压。

·片内温度(最大误差±4℃)和电压(最大误差±1%)传感器。