LVPP

FPGA中的全局和局部时钟资源

0
阅读(6964)

 在XilinxFPGA中,时钟网络资源分为两大类:全局时钟资源和区域时钟资源。

   全局时钟资源是一种专用互连网络,它可以降低时钟歪斜、占空比失真和功耗,提高抖动容限。Xilinx的全局时钟资源设计了专用时钟缓冲与驱动结构,从而使全局时钟到达CLBIOBBRAM的延时最小。

区域时钟资源是独立于全局时钟网络的。Xilinx的器件分成若干个时钟区域,以Virtex-6为例,Virtex-6的最小器件有6个区域,最大器件有18个区域。它与全局时钟不同,区域时钟信号X只能驱动限定的时钟区域。

Xilinx的FPGA器件是通过时钟区域来管理时钟网络的,以Virtex-6为例,时钟区域的大小固定为40个CLB 高,半个晶片宽。因此大尺寸的器件有更多的时钟区域。如下图所示,下图中的FPGA器件一共包含6个时钟区域,左侧三个右侧三个,从图可以看出每个区域高度是2*20CLBs,区域宽度是半个FPGA芯片的宽度。中间是CMT时钟管理模块。

      

每个时钟区域的中间方向有一个时钟行(HROW),以Virtex-6为例,一个时钟行,共包含12个水平时钟线,12个水平时钟线可以全部由全局时钟BUFG驱动。也可以由区域内部的时钟组件缓冲器驱动,例如BUFHBUFR。这个时候有人会问什么是BUFGBUFRBUFH

先来解释一下BUFG,这个比较简单,就是全局时钟网络时钟驱动器,如果时钟信号要走全局时钟网络,必须通过这个BUFG来驱动,BUFG可以驱动所有的CLBRAMIOBspartan6 有一共有16BUFG全局时钟线。virtex-6则一共有32BUFG全局时钟线。

  BUFH驱动区域中的水平全局时钟树,Xilinx的时钟是通过时钟树来分布的,以spartan6时钟树为例,看下图。FPGA中间竖排是CMT时钟管理模块,就是PLLDCM。全局时钟缓冲器BUFG是位于FPGA器件的中心位置,时钟的输入可以来自FPGA的上、下、左、右的bank,也可以来自PLLDCM16BUFGMUX通过驱动vertical spine并经vertical spine 往南北方向传播,vertical spine就相当于时钟树的树干 ,根据这条线路,时钟水平延伸至HCLK时钟列并经HCLK时钟列提供了访问局部逻辑原语的路径,HCLK及所谓的水平时钟线,相当于树枝;每一个HCLK列左右两边各有16个水平时钟缓冲BUFH驱动左右逻辑资源。

   BUFR我在SPARTAN6的时钟资源手册UG382里没有看到,应该是没有啊。BUFR是区域时钟缓冲器,要进入区域时钟网络,必须例化BUFR。一个BUFR最多可以驱动三个相邻的时钟区域中的区域时钟。顶部和底部区域中BUFR只能连接相邻的一个时钟区域,也就是说,顶部的BUFR连接它所在的下面一个相邻区域。底部的BUFR只能连接它所在的上边一个相邻区域。因此,底部和顶部BUFR的作用区域为两个时钟区域。如下图,下图是共有8个时钟区域的FPGA,每个时钟区域最多包含6BUFR时钟线。截止现在可以看到(紫色标注)Vertex器件的每个时钟区域,共有6BUFR12BUFHSPARTAN6每个时钟区域好像就有16BUFH。最后声明一下BUFR不仅可以驱动IO,也可以驱动CLB,RAM