赞
踩
时钟功能输入(CCIO)
每个Bank内都有自己的Clock输入引脚,每个Bank有4个,可配置为单端或差分时钟;
这些引脚直接与Bank内的CMT连接,而不用作时钟输入时的时候就是一般的IO;
其中,2个IO具有多时钟域时钟功能(Muti-Region Clock Capability, MRCC),而另2个IO则只有单时钟域时钟功能(Single Region Clock Capability, SRCC)。
-----------------------------------------------------------------------------------------------------------------------------
时钟网络
7系列芯片layout
在新的7系列FPGA中,CMT列紧靠IO列排布(而6系列则是位于芯片中心),这是为了获得最短的写入延时,从而在Gigabit Transiever和高速串行通信等应用中获得最优化的IO性能。
6系列芯片layout
BUFMR是少数的专门用于跨越相邻时钟域提供时钟的buffer。
全局时钟由BUFGCTRL驱动,BUFGCTRL位于芯片的中心位置;
大多数7系列芯片都有32根垂直全局时钟线(Vertical Spine),每根都由一个BUFGCTRL驱动;
BUFGCTRL可通过原语调用,可被配置为多路时钟复用器、时钟使能器。
时钟域
每个时钟域高度为50个CLBs(不是仅含50个)或50个IOBs(含两侧?以及GT口),通过12个BUFH(Horizontal)引入12根横向全局时钟线(Horizontal Spine),通过4个BUFIO驱动IO bank时钟线,2个BUFR驱动域内时钟线,以及2个BUFMR驱动跨时钟域时钟线。
当用户在一个时钟域内实用全局时钟时,BUFH会被Vivado软件自动调用(而不需要由用户调用原语来实现)。
域内时钟线也是沿横向布置的,并由BUFR驱动。
BUFR可以作为分频器使用。
上述由BUFH驱动的12根横向全局时钟线和由BUFR驱动的4根域内时钟线都可为时钟域内的资源提供时钟。
但要注意的是,从中部的横向时钟轴向上下两侧各列CLB列引出的时钟线均只有12根。
也就是说,虽然有16根全域(注意不是全局)可用的时钟线,但是只有其中的12根(全局线或域内线)可以进入上下两侧的CLB列并为之提供时钟。
实际上,在正常设计中都不会在一个CLB列中用到12根以上的时钟线。
IO时钟网络
每个时钟域有4个IO时钟网,均由BUFIO驱动,只能驱动IO Bank上的时钟引脚,可提供最高质量的时钟,具有最小的延迟,适用于时钟源同步高速应用。但只具有低的扇出数。
7系列芯片的IO口、域内时钟网络缓冲器、IO口串行并行转换器(I/OSERDES)等资源都高度集中于IOB列内,为高速时钟源同步接口(Source-Synchronous Interface)的搭建提供了强大的保障。
最高可实现1066Gb/s的传输速度。
作为单数据率(SDR)接口时,BUFR可被配置为/N;
作为双数据率(DDR)接口时,BUFR则被配置为/(N/2)。
每个IO Bank内有两个BUFMR。
BUFMR可将其所在时钟域内由“MRCC引脚输入的时钟信号”和“CT时钟信号”发送到上下相邻的时钟域的BUFR上,从而实现类似“局部时钟域扩张”的效果,最多可实现3个IO Bank共150个IO口的时钟同步。
使用xilinx提供的原语可构建出如上图所示的,跨时钟域同步系统。
每个Bank内存在2块MMCM,每个MMCM可通过4根高性能时钟线为IOB列提供高性能时钟源。
该时钟线可直接驱动BUFIO、BUFR和OSERDES的时钟。
高性能时钟线具有最短的路径、最低的延时和抖动。
当用户为某些功能的布局设置了严格的时序约束时,Vivado软件将自动使用这些时钟线。
至此,我们可见:
> 驱动全局时钟线的BUFGCTRL和BUFH均位于芯片的中心列;
> 驱动局域时钟和IO口时钟的CCIO、BUFIO、BUFR等均位于IO列;
> MMCM和PLL则位于紧邻IO列的CMT列;
> GT时钟源位于GT列。
对于某些需要用到多个上述资源的应用,就有可能需要连接这些资源。
为此,FPGA内还在HCLK行内提供了专用的布线资源(Routing Path),专门用于在这些器件之间传导时钟信号(可由Vivado软件自动实现)。
SLR(Super Logic Region)
某些大规模的7系列芯片采用了Xilinx的堆叠硅片互联(SSI)技术制造,实现了异构3D FPGA。
SSI技术可将多个芯片整合为单个芯片,同时与多芯片方法相比,其每瓦特的晶片间带宽增加了100 倍,时延减至五分之一,而且不会占用任何高速串行或并行 I/O 资源。。
SSI利用无源(无晶体管)65nm 硅中介层上的与大节距硅通孔(TSV)技术整合在一起的业经验证的微凸块技术,在单个FPGA 器件上提供了高可靠性的互连,同时性能没有丝毫降低。
这一突破性技术为需要高逻辑密度和巨大计算性能的应用提供了更紧密的高级系统集成。
微凸块并非直接连接于封装,而是互联到无源硅中介层,进而连接到相邻的芯片。这种设置方法能够避免微凸块受到静电放电的影响,从而带来巨大优势。
通过芯片彼此相邻,并连接至球形栅格阵列,该器件避免了采用单纯的垂直硅片堆叠方法出现的热通量、信号完整性和设计工具流问题。
而此类FPGA芯片中的每一个Die就是一个“超级逻辑域块(SLR Block)”,SLR的边界位于时钟域的边界。
在这些FPGA中,垂直全局时钟线跨越了多个SLRs。
使用多个SLR来完成同步应用时,时钟延迟将会增加,Vivado软件将会考虑到这个延迟。
实际上,对于具有严格时序要求的高速应用而言,并不建议跨SLR实现;
而建议通过合理的功能模块划分和区域约束(Area Constrain),将一个功能模块限制在一个SLR(Die)内部。
BUFMR驱动的时钟线无法跨越SLR。
时钟网络小结
-----------------------------------------------------------------------------------------------------------------------------
CMT(Clock Management Title)
7系列FPGA的CMT内没有DCM,其功能被集成到了PLL;并加入了MMCM(Mixed-Mode Clock Manager)与PLL共同组成CMT。
每个芯片中含有24个CMT,用户均可通过原语“*_BASE”和“*_ADV”调用,前者提供CMT的基本端口,后者则提供所有端口。
PLL主要用于与IO相位器一起,驱动高速存储控制器;而MMCM主要用于为用户的应用模块提供时钟源。
PLL结构
PLL和MMCM共有功能
PLL和MMCM均会将其PFD(鉴频鉴相器)的频率与反馈时钟CLKFB的时钟频率锁定;而将反馈时钟CLKFB的时钟相位和输入时钟CLKIN的相位锁定。
可见PLL仅提供分辨率为1/8 VCO周期的静态相位偏置功能。这是与MMCM最大的区别。
MMCM特有功能
如上图所示,为了实现锁相,VCO(压控频振荡器)必须工作在“M/D”倍的CLKIN频率,而各个通道的输出时钟频率则为“M/(D*O)”倍的CLKIN频率。
可见,D和M决定了PLL的性能表现:
选用过高的D值,PFD的性能将变差,此时PLL的输出抖动将会增大,因此应该尽可能使用较小的D值;
同时,较小的D值也意味着VCO将工作在更高的频率,而使用户拥有更多的频率选择;
但是,过高的VCO频率也将导致更高的功耗(和发热),因此还需要选用尽可能小的M值来降低VCO的工作频率;
但是过小的M值实际上又降低了时钟反馈的采样频率,这也会降低PLL的动态性能,导致抖动增大。
通常情况下PFD和VCO的工作频率越高,PLL消除抖动的效果就越好。因此我们应该尽可能提高VCO的工作频率。
为了更合理得配置PLL或MMCM的D、M、O参数,用户可以使用Vivado软件中的Core Generator工具,并在创建CMT时关注其Jitter计算器的抖动分析结果,从而使CMT在满足应用频率需求的同时保证信号的完整性。
-----------------------------------------------------------------------------------------------------------------------------
CMT的使用【32:56】
CMT常用于驱动BUFG和BUFH,而MMCM的O0~O3输出还可以驱动所在时钟域内的BUFIO、BUFR和OSERDES的时钟。
在设计高速时钟源同步IO接口时,对时钟的同步性具有很高的要求,此类应用对时钟树延迟(Clock Insertion Delay,见后文)非常的敏感,不能使用过长的时钟线,因此最好选用以下时钟源来为此类应用的PLL/MMCM提供时钟:
> 当前时钟域内的CCIO引脚;
> 上下两侧相邻时钟域内的CCIO引脚;
> BUFG;
> BUFH;
> BUFR;
> GT时钟。
上述时钟源中,只有GT时钟线不能作为PLL/MMCM的CLKFB端口的输入。
MMCM的插补精密移相(Interpolated Fine Phase Shift, IFPS)功能
除了静态移相功能外,MMCM还提供了插补的精密移相功能,VCO的输出可以以1/56周期为单次相位增量来进行相位的动态或静态的插补变化。且移相范围为0°~ 360°。
时钟树延迟/时钟嵌套延迟(Clock Insertion Delay)【39:27】
由于时钟树上的BUF的串联,而在时钟线的末梢造成很大的时钟延迟。
在全局时钟线上尤为明显,因此,对于高速应用而言,不建议采用全局时钟线来提供时钟源。
用PLL/MMCM的外部闭环消除时钟树延迟
Vivado软件会根据用户的区域约束和时钟约束自动完成该功能的布局(通过将COMPENSATION自动设置为ZHOLD模式)。
复位后,需要给PLL/MMCM一定的时间,它们才能完成稳定的锁相。
经过PLL/MMCM消除时钟树延迟后,使用同一个时钟源的器件之间,就可以通过非常简单的通讯接口实现互联。
需要注意的是,内部PLL/MMCM仅仅消除了从器件的全局时钟引脚到该器件的任意一个IO Bank上的时钟树延迟;但是其并不能消除由器件外部的时钟线在PCB上的布线距离差异所造成的延迟(相位偏差),这个延迟只能通过更合理地设计PCB上的全局时钟线来保证。
用PLL/MMCM内部闭环消除输入时钟抖动【41:40】
用PLL/MMCM实现内部多时钟
Vivado软件会根据用户的描述,智能自动地完成很多CMT配置,以保证用户功能的实现。
用PLL/MMCM实现时钟镜像
该应用需要用户将COMPENSATION设置为EXTERNAL模式。
采用该设计可用FPGA为其他芯片提供同步时钟。
综合上述应用可见,CMT可大幅降低用户为不同逻辑芯片/电路配备不同时钟源电流的开支,非常便于实现可灵活配置的时钟系统。
时钟资源的使用
可见,Vivado软件只能推导(调用)和全局时钟线相关的BUFG原语和BUFH原语来搭建(综合)整个时钟网络;但是并不会主动推导BUFIO、BUFR、BUFMR和CMT原语来满足用户的高速应用需求。
在高速应用设计中,用户必须自己调用这些高速时钟资源(可使用Core Generator工具进行),然后软件才会将其纳入综合和自动优化配置的过程(并且会自主修复很多配置上的错误)。
-----------------------------------------------------------------------------------------------------------------------------
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。