第2章
Zynq平台介绍
2.1 7系列FPGA简介
在7系列芯片以前,Xilinx的两个重要产品分别是面向高性能应用场景下的VirtexTM系列和面向低成本低功耗应用场景下的SpartanTM系列。不过这两个系列之间,无论是从芯片内部的布局布线、时钟管理单元,还是内部的BRAM等硬件模块上都有着显著的不同。开发人员在不同平台间切换时,因为硬件模块的定义都不同,往往需要做一定的代码修改,从而减慢了项目开发的速度。因此在最新的7系列芯片中,Xilinx采用了统一的架构,FPGA内硬件例化模块都采用统一的定义,帮助用户快速完成设计的迁移。7系列FPGA采用了最新的28nm工艺,其应用范围更是涵盖了所有的系统要求,从低功耗、小型化、成本敏感、大批量应用到超高连接带宽、逻辑能力和高性能应用需要的信号处理能力。Xilinx 7系列FPGA包括:
·ArtixTM-7系列:为最低的成本和功耗做优化,为大批量应用的小型化封装设计。
·KintexTM-7系列:为最大的性价比做了优化,和前一代相比,具有两倍的性能。
·VirtexTM-7系列:为最高的系统性能做了优化,通过硅片堆叠技术(SSI)提供高性能高容量的芯片。
从以上的系列分布,可以看出两个显著的变化。其一,低成本低功耗的产品名为Artix而不是原来的Spartan;其二,在原来高性能和低成本中间的产品线中,增加了实现最大性价比的Kintex产品线,以往使用Virtex系列的产品,都可以尝试先在Kintex器件上做实验。同时因为芯片内部硬件架构相同,因此三个产品线的读音也都类似。
7系列FPGA有以下主要的特征:
·基于6输入查找表(LUT)技术的先进的高性能FPGA逻辑,并且可配置为分布式存储器。
·带有内建FIFO的36Kb双端口BRAM,可作为片内数据缓存。
·支持速度高达1866Mb/s的DDR3接口的高性能SelectIOTM技术。
·内建多个吉比特(Gb)收发器的高速串行连接器,速度从600Mb/s到最高28.05Gb/s,提供低功耗模式,优化了芯片到芯片的接口。
·用户可配置的模拟接口(XADC)包括两个12位1MSPS的ADC和片上温度、电压传感器。
·DPS Slice包括25×18的乘法器、48位累加器和预加法器,可用于高性能滤波,其中包括优化的对称滤波。
·强大的时钟管理模块CMT,连接相位锁相环PLL和混合模式时钟管理器MMCM,用于高精度和低抖动的应用。
·集成了用于x8Gen3端点和根端口设计的PCIe硬核。
·丰富的可配置选项,包括支持商用存储器,带有HMAC/SHA-256授权的256位AES加密和内建的SEU检测和纠错单元。
·高性能低功耗的28nm工艺。HKMG、HPL处理,1.0V核心电压处理技术和0.9V核心电压选项用于更低的功耗。
7系列FPGA和本书主要介绍的Zynq AP SoC平台具有千丝万缕的联系。Zynq内部的FPGA部分就是基于7系列的FPGA。两个面向低端应用的Zynq芯片Z-7010和Z-7020使用Artix-7,两个面向高端应用的Zynq芯片Z-7030和Z-7045使用Kintex-7。本书并不详细介绍7系列FPGA内部的结构,如果对FPGA结构、资源和设计方法感兴趣的读者请到Xilinx官网参考官方的文档,或者阅读其他关于FPGA内部组织结构的书籍。下面我们会简单介绍FPGA的组成单元和内部的资源,主要包括CLB、Slices、LUTs、BRAM、DSP Slices、PCIe接口、XADC。7系列FPGA参数如表2-1所示。
表2-1 7系列FPGA参数
表2-1比较清楚地列出了7系列FPGA的资源,下面我们简单介绍7系列的关键技术。
1.硅片堆叠技术
设计出高容量的FPGA是有很多挑战的,Xilinx的解决方案是使用SSI技术。硅片堆叠(SSI)技术允许使用多个超级逻辑区域(SLR)组成被动式内插层(Passive Interposer Layer),使用经过行业领导者验证的制造和装配技术,在单FPGA上集成多达10000个SLR连接,提供具有低延迟和低功耗的超高带宽。
2.逻辑资源
7系列FPGA的LUT(Look Up Table,查找表)可以被配置为一个6输入1输出的LUT,或者两个5输入具有相同地址或逻辑输入的独立输出的LUT。每一个LUT的输出可以选择性的在FF(Flip-Flop)寄存。4个这样的LUT和与之相关的8个FF再加上一些多路选择器和算术进位逻辑组成了Slice,两个Slice组成了CLB(Configurable Logic Block)。25%~50%的Slice可以用LUT作为分布式64位RAM或者32位移位寄存器。CLB的一些关键特性如下:
·真正6输入LUT。
·LUT具有存储功能。
·寄存器和移位寄存器功能。
·详细的CLB配置情况,可参考UG474“7Series FPGAs Configurable Logic Block User Guide”。
3.时钟管理
7系列FPGA拥有多达24个时钟管理通道(CMT),每个CMT都由一个混合模式时钟管理器(MMCM)和一个锁相环(PLL)组成。7系列FPGA提供六种不同类型的时钟线(BUFG、BUFR、BUFIO、BUFH、BUFMR和高性能时钟)来解决不同的需求,包括:高扇出、短传输延迟和低抖动。这一部分是FPGA的关键部分,可参考UG472“7Series FPGAs Clocking Resources User Guide”了解详情。
4.块存储器
大多数的FPGA都具有内嵌的块存储器(BRAM),这加强了FPGA的灵活性。BRAM可用于片内数据缓冲、FIFO缓冲等。7系列的FPGA提供了30~1880个双端口BRAM,每一个存储36Kb数据。每个BRAM都有两个只共享数据的独立端口。BRAM的特性有:
·双端口36KbBRAM,最大位宽是72位。
·可编程的FIFO逻辑。
·内建可选的纠错电路。
5.DSP Slice
7系列的FPGA集成了专用的、充分定制的、低功耗DSP Slice。其增强的功能主要包括:
·25×18的补码乘法器/累加器,高分辨率48位的信号处理器。
·用于对称滤波器应用的低功耗预加法器。
·一些高级特性:可选的流水线、可选ALU和用于级联的专用总线。
6.输入输出块
7系列的FPGA的输入输出使用不同的封装,满足物理和逻辑级别上不同的要求。物理级上,输入输出块(I/O)支持一个范围的驱动电压和驱动强度,以及接收功能接口的不同I/O标准。7系列的FPGA有两种类型的I/O,高性能HP I/O和高范围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)线速率,是业内第一个实现400G数据吞吐的单芯片。
·芯片到芯片接口的低功耗模式。
·高级预发送、后加重、接收器线性(CTLE)和判决反馈均衡(DFE),包括用于额外余量的自适应均衡。
8.集成PCIe模块
7系列的FPGA集成的PCIe模块包括如下重要的特性:
·兼容PCIe 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,它结合了7系列FPGA的可编程能力,满足板级数据采集和监控的需求。这种独特的组合被称为敏捷的混合信号的模拟和可编程逻辑。欲了解更多信息,请访问网址http://www.xilinx.com/ams。XADC模块的主要特性包括:
·双12位1MSPS模拟到数字转换(ADC)。
·高达17个灵活的用户可配置逻辑输入。
·可选片内或者片外参考电压。
·片内温度(最大误差±4℃)和电压(最大误差±1%)传感器。
2.2 Zynq-7000AP SoC体系简介
当前嵌入式设计发展迅猛,有很多需求无法被现有的产品满足。现有的产品包括单个处理器、单个ASIC、ASSP或者单纯的FPGA方案,甚至这些方案的组合也无法满足。根据市场调查显示,全新的嵌入式应用(比如汽车驾驶员辅助系统、智能视频监视、先进的工业控制、遥测与制导、企业级的工作站、广播级的摄像机、多功能打印机、航空航天电子等)设计到2014年预计市场总价值将达到127亿美元。
深入了解下一代嵌入式处理器,你会发现提高性能、减少成本、降低功耗、缩小外形、增加灵活性是其主要需求。现有方案的局限性也是相当明显的,例如现有的微处理器缺乏足够的信号处理能力,需要多芯片方案来搭建下一代的处理器系统。多芯片方案成本较高、功耗大,占用更多的空间,不利于缩小外形,同时,如果采用现有的ASIC或ASSP方案,更新换代的速度或者说差异化的能力都会受限,不能够适应快速变化的需求,也很难提供差异化的竞争优势,这些局限性使我们看到下一代处理器需要解决和应对的问题。在市场需求的推动下,为了满足下一代应用处理需要,Xilinx定义了Zynq-7000系列产品,首先推出了四款,分别是7010、7020、7030和7045,都是高性能和低功耗的处理器平台,是灵活和可扩展的解决方案。
下面我们一起来初步了解Zynq AP SoC平台的ARM+FPGA体系结构。如图2-1所示,左上角的方块下就是ARM部分,在Zynq AP SoC平台里我们称其为Processing System,简称PS。外面包着它的那一块,就是FPGA部分,我们称其为Programmable Logic,简称PL。FPGA部分就是2.1节介绍的7系列FPGA,内部的资源和结构和7系列FPGA一样。
图2-1 Zynq AP SoC架构图
Zynq-7000系列的亮点在于它包含了完整的ARM处理子系统,每一个Zynq-7000系列的处理器都包含了双核的CortexTM-A9处理器,整个处理器的搭建都以处理器为中心,而且处理器子系统中集成了内存控制器和大量的外设,使CortexTM-A9的核在Zynq-7000中完全独立于可编程逻辑单元,也就是说,如果暂时没有用到FPGA的部分,ARM处理器的子系统也是可以独立工作的,这与以前的FPGA处理器有本质区别,它是以处理器为中心的。另外在可编程逻辑部分紧密地与ARM的处理单元相结合。FPGA的部分用于扩展子系统,有丰富的扩展能力,有超过3000个内部互联,连接资源非常丰富,可提供100Gb/s以上的内部带宽。此外在I/O接口方面,FPGA的优点是I/O可以充分自定义,并在FPGA部分集成高速串行口(Multi Gigabit Transceiver)。同时在FPGA内也与7系列FPGA一样,继承了模数转换器(XADC)。
通过以上简介,读者可对Zynq-7000器件的硬件配置及架构有一个基本的认识,细心的读者可能就开始琢磨第1章中两个案例是如何在这个芯片平台上实现的,利用了哪些硬件资源。不用着急,后续章节将为大家陆续展开。