XilinxAllProgrammableZynq-7000SoC设计指南2可编程逻辑资源内容包括可编程逻辑资源概述、可编程逻辑资源功能两个部分。在可编程逻辑资源功能部分,详细的介绍了CLB和LUT、时钟管理单元、块存储器、数字信号处理单元、输入和输出、低功耗串行收发器、PCI-E模块、XADC模块和配置等内容。3Zynq-7000系列的全可编程平台在单个器件内,集成了功能丰富的基于双核ARMCortex-A9处理器的处理器系统PS和Xiinx可编程逻辑PL。Zynq-7000EPP系列中的每个器件包含相同的PS,然而每个器件内的PL和I/O资源有所不同。两个较小EPP器件(Z-7010和Z-7020)的PL基于Artix-7FPGA逻辑。两个较大EPP器件(Z-7030和Z-7045)的PL基于Kintex-7FPGA逻辑。可编程逻辑资源4通过使用多个接口和超过3000个连接的其它信号,PS和PL可以紧密或者松散的耦合在一起。这使得设计者能高效地将PL内用户创建的硬件加速器和其它的功能进行集成。它们可以被处理器访问。它们也可以访问PS内的存储器资源。可编程逻辑资源5Zynq系统总是最先启动PS内的处理器,这样允许使用基于软件中心的方法对PL进行配置。对PL的配置作为系统启动的一部分,或者在将来的某个时间点上对其进行配置。PL可以全部地重新配置或者在使用的时候部分动态地重新配置(PartialReconfiguration,PR)。PR允许只配置PL的一部分。这使得可以选择对设计进行修改,比如:更新系数或者在必要的时候,替换算法来实现时分复用PL资源。后者类似于动态地加载和卸载软件模块。PL的配置数据称为比特流。可编程逻辑资源6PL有一个和PS分开的供电域这使能用户通过将PL断电来降低功耗。在这个模式下,PL无静态和动态功耗。这样,显著地降低了器件的功耗。当不使用这个模式时,必须重配置PL。用户需要考虑在特殊应用场合下,重新配置PL的时间,这个时间根据比特流的大小而有所不同。可编程逻辑资源7PL提供了用户可配置的丰富的结构能力。关键特性包括:可配置的逻辑块(CLB)6输入查找表。LUT内的存储器能力。寄存器和移位寄存器功能。级联的加法器。36Kb块RAM双端口。最大72位宽度。可配置为双18Kb。可编程的FIFO逻辑。内建的纠错电路。可编程逻辑资源8数字信号处理-DSP48E1Slice25×18二进制补码乘法器/加法器高分辨率(48位)信号处理器。节约功耗的25位预加法器,用于优化对称的滤波器应用。高级属性:可选的流水线、可选的ALU和用于级联的专用总线。时钟管理用于低抖动时钟分配的高速缓冲区和布线。频率合成和相位移动。低抖动时钟生成功能和抖动过滤。可编程逻辑资源9可配置的I/O高性能SelectIO技术。集成在封装内的高频去耦合电容,用于扩展的信号完整性。数控阻抗,能在三态下用于最低功耗,高速I/O操作。大范围(HR)I/O支持1.2V~3.3V。高性能(HP)I/O支持1.2V~1.8V。低功耗串行收发器高性能收发器最大能到达12.5Gb/s(GTX)。用于芯片-芯片接口的低功耗模式优化。高级的预发送、后加重,以及接收器线性CTLE,以及判决反馈均衡(DecisionFeedbackEqualization,DFE),包括用于额外余量的自适应均衡。可编程逻辑资源10XADC(模拟-数字转换器)双12比特1Msps模拟-数字转换器(ADC)。最大17个灵活和用户可配置模拟输入。片上或者外部参考选择。片上温度(±4℃最大误差)和供电(±1%最大误差)传感器。连续JTAG访问ADC测量。可编程逻辑资源11可编程逻辑资源--可编程逻辑资源功能可编程逻辑资源功能主要包括:CLB时钟管理BRAMDSPSlice输入/输出串行收发器PCI-E模块XADC配置12可编程逻辑资源--可编程逻辑资源功能CLB,Slice和LUTZynq-7000内的LUT可以配置为一个带有1个输出的6输入LUT(64位ROM)或者带有独立输出和公共地址/逻辑输入的两个5输入LUT(32位ROM)。每个LUT的输出能选择使用触发器进行寄存。一个Slice由4个这样的LUT、8个触发器、多路复用器和算术进位逻辑构成。两个Slice构成一个CLB。每个LUT的一个触发器可以选择配置为锁存器。13所有Slice中间25-50%也使用LUT作为分布式的64位RAM或者32位移位寄存器(SRL32)或者两个SRL16。现代综合工具利用了这些高性能逻辑、算术和存储器特性。Zynq-7000内的LUT可以配置为一个带有1个输出的6输入LUT(64位ROM)或者带有独立输出和公共地址/逻辑输入的两个5输入LUT(32位ROM)。每个LUT的输出能使用触发器进行寄存。一个Slice由4个这样的LUT、8个触发器、多路复用器和算术进位逻辑构成。两个Slice构成一个CLB。每个LUT的一个触发器可以选择配置为锁存器。可编程逻辑资源--可编程逻辑资源功能14混合模式时钟管理器和相位锁相环混合模式时钟管理器(Mixed-modeclockmanager,MMCM)和相位锁相环(PhaseLockLoop,PLL)共享很多特性。可编程逻辑资源功能--时钟管理它们都能作为一个频率合成器,用于宽范围的频率和输入时钟的抖动过滤器。这些元件的中心是一个压控振荡器(VoltageControlledOscillator,VCO),来自相位检测器(PFD)的电压送到VCO,根据计算,升高或者降低VCO输出频率。15MMCM有三组可编程的频率分频器:D,M和O。预分频器D(通过配置或者之后通过动态配置端口(DynamicConfigurationPort,DRP)编程),降低了输入频率。然后,将其送到传统PLL相位/频率比较器的一个输入。反馈分频器M(通过配置或者之后通过DRP编程),作为一个乘法器。这是由于在送到相位比较器的其它输入之前,将VCO的输出频率进行分频。必须合理地选择D和M的值,以确保VCO工作在它指定的频率范围内。可编程逻辑资源功能--时钟管理16VCO有8个等间距的输出相位(0º,45º,90º,135º,180º,225º,270º和315º)。每个都可以被选择驱动一个输出分频器(6个用于PLL,O0-O5;7个用于MMCM,O0-O6)。通过配置,可以对每一个进行编程实现1-128内的分频。MMCM和PLL有三个输入抖动过滤选项:低带宽模式有最好的抖动衰减。高带宽模式有最好的相位偏移。优化模式允许工具找到最好的设置。可编程逻辑资源功能--时钟管理17MMCM额外的可编程特性MMCM在反馈路径(作为乘法器)或者输出路径上有一个小数计数器。小数计数器允许非整数的1/8递增。因此,增加了合成频率的能力。根据VCO的频率,MMCM也能提供较小增量的固定相位移动或者动态相位移动。比如:在1600MHz频率下,相位移动的时序递增是11.2ps。可编程逻辑资源功能--时钟管理18时钟分配每个Zynq-7000EPP器件提供了6个不同类型的时钟线(BUFG,BUFR,BUFIO,BUFH,BUFMR和高性能时钟),用来解决不同的时钟要求。包括:高扇出、短传播延迟和极低的抖动。可编程逻辑资源功能--时钟管理19全局时钟线在Zynq-7000EPP器件中,32个全局时钟线提供了最高的扇出。它能到达每个触发器的时钟、时钟使能和置位/复位,以及数量众多的逻辑输入。在任何时钟域内,有12个全局时钟线,可以通过水平时钟缓冲区(BUFH)驱动。可以单独使能/禁止每个BUFH,这样允许关闭时钟域内的时钟。因此,为时钟域的功耗提供了更好的颗粒度控制。可编程逻辑资源功能--时钟管理20全局时钟线可以通过全局时钟缓冲区驱动,该缓冲区能执行无毛刺的时钟复用和时钟使能功能。通常由CMT驱动全局时钟,它能彻底的消除基本时钟分配延迟。可编程逻辑资源功能--时钟管理21区域时钟区域时钟能驱动它所在区域内的所有时钟。注:一个区域定义为任何一个区域,这个区域有50个I/O,以及50个CLB高及一半的器件宽度。Zynq-7000EPP器件有8~24个区域。在每个区域有4个区域时钟跟踪。每个区域时钟缓冲区可以由4个时钟功能输入引脚中的一个驱动,可选择从1-8中的任何一个整数对该时钟分频。可编程逻辑资源功能--时钟管理22I/O时钟I/O时钟特别的快,用于一些I/O逻辑和串行化器/解串行化器(SerDes)电路。Zynq-7000全可编程平台提供了来自MMCM到I/O的直接连接。这些连接主要用于低抖动,高性能的接口。可编程逻辑资源功能--时钟管理23每个Zynq-7000有60~465个双端口BRAM,每个容量为36Kb。每个BRAM有两个独立的端口。可编程逻辑资源功能--块存储器24同步操作每个存储器的读或者写访问由时钟控制。将所有的输入、数据、地址、时钟使能和写使能进行寄存。总是由时钟驱动输入地址。并且,一直保持数据,直到下一个操作。一个可选的输出数据流水线寄存器,该寄存器通过一个额外时钟周期的延迟,以允许较高速的时钟。在写操作期间,数据的输出为前面所保存的数据,或者是新写入的数据,或者保持不变。可编程逻辑资源功能--块存储器25可编程数据宽度每个端口可以配置为32K×1、16K×2、8K×4、4K×9(或者8)、2K×18(或者16)、1K×36(或者32)、或者512×72(或者64)。两个端口可以有不同的宽度,并且没有任何限制。每个BRAM能分割为两个完全独立的18KbBRAM。每个BRAM能配置成任何长宽比,范围从16K×1到512×36。前面描述的用于36Kb的BRAM的所有内容也可以应用到每个较小的18KbBRAM。可编程逻辑资源功能--块存储器26只有在简单双端口(SimpleDual-Port,SDP)模式下,数据宽度大于18比特(18KbRAM)或者36比特(36KbRAM)才能访问。在这种模式下,一个端口专门用于读操作,另一个端口用于写操作。在SDP模式下,一侧(读或者写)是可以变化的,而另一侧被固定为32/36位或者64/72位。可编程逻辑资源功能--块存储器27双端口36KbRAM的所有两侧,其宽度都是可变的。可以将两个相邻的36KbBRAM配置为一个64Kx1双端口RAM。并且,不需要任何额外的逻辑。可编程逻辑资源功能--块存储器28错误检测和纠错每个64位宽度的BRAM都能产生、保存和利用8个额外的海明码比特。并且,在读操作过程中执行单个比特为错误的纠错和两个比特位的检错(ECC)。当写到外部64-72位宽度的存储器或者从64-72位外部存储器读时,也能使用ECC逻辑。可编程逻辑资源功能--块存储器29FIFO控制器内建的FIFO控制器用于单时钟(同步)或者双时钟(异步或者多率)操作,递增内部的地址和提供4个握手信号。这些握手信号线包括:满标志、空标志、几乎满标志和几乎空标志。可以自由地编程几乎满和几乎空标志。类似于BRAM,也可以对FIFO宽度和深度编程。但是,写端口和读端口的宽度总是相同。可编程逻辑资源功能--块存储器30首字跌落(FirstWordFall-Through,FWFT)模式即第一个写入的数据出现在数据输出端(甚至在读操作前)。当读取第一个字后,这个模式和标准的模式就没有差别了。可编程逻辑资源功能--块存储器31DSP应用使用大量的二进制乘法器和累加器,可以在专用的DSP切片内最好地实现。所有Zynq-7000器件都有很多专用的、全定制的、低功耗的DSP切片,将小尺寸和高速结合在一起,同时保持了系统设计的灵活性。每个DSP切片由一个专用的25×16比特的二进制补码乘法器和一个48比特的累加器组成。它们的最高工作频率为741MHz。可以动态地旁路掉乘法器。可编程逻辑资源功能--数字信号处理DSPslice3