一.概述
时钟区域的数量因设备大小而异,从最小的设备到最大的设备对应有一个到24个时钟区域(clock region)。
时钟区域包括CLB、I/O、串行收发器、DSP、BRAM、CMT。其中心有一个水平时钟行 (HROW)。每个时钟区域从 HROW 向上跨越 25 个 CLB ,向下跨越25 个 CLB,即行高50个CLB。
FPGA由竖着的clock backbone分为左右两部分,由横着的Horizontal Center分为上下两部分,每部分16个BUFG(博主所用的V7系列1140t的开发板有4个Horizontal Center,即有32*4个BUFG),详情看下一篇关于SSI技术的博客。
FPGA有三种时钟资源:全局时钟资源,局部时钟资源,I/O时钟资源。
二.时钟资源介绍
1.全局时钟资源
BUFG:全局时钟缓冲资源,它的输出时钟可以通过clock backbone(全局时钟线主干)到达任何一个时钟区域,然后通过HROW(水平时钟行)到达时钟区域的内部单元。前面提到FPGA由Horizontal Center分为上下两部分,而BUFG也是分布在Horizontal Center的上下,上面16个BUFG,下面16个BUFG,一共32个BUFG,值得一提的是每个7系列设备拥有32条全局时钟线,全局时钟进入时钟区域内部逻辑单元需要通过水平时钟线道HROW,而一个时钟区域有12个BUFH即拥有12条水平时钟线,所以一个时钟区域最多可以支持12个全局时钟线,BUFG和BUFH共享HROW中的12条水平时钟线(博主遇到一个时钟域的bufg以经用到12个了,这个时候改用BUFH也是不行的,因为BUFG和BUFH共享HROW中的12条水平时钟线)。
2.局部时钟资源和I/O时钟资源
BUFH:水平时钟缓冲资源,是矮子版的BUFG,其输出时钟通过HROW驱动水平相邻的时钟区域,一个时钟区域有12个BUFH。
BUFIO:I/O时钟缓冲资源,位于I/Obank中,可以驱动I/O时钟,一个时钟区域有4个BUFIO。
BUFR:局部时钟缓冲资源,位于I/Obank中,与BUFIO不同的是,除了驱动I/O还可以驱动逻辑资源,一个时钟区域有4个BUFR。
BUFMR:BUFMR为多区域时钟缓冲资源,除了驱动本时钟区域的时钟缓冲资源,还可以通过CMT backbone驱动上下相邻两个时钟区域的时钟缓冲资源。
BUFR和BUFIO都可以被BUFMR(多区域时钟缓冲资源) 驱动。
3.SRCC和MRCC
I/Obank中的CC管脚(SRCC和MRCC)把外部时钟连接到设备中的时钟资源上。一个时钟区域有4个CC管脚,其中包括两个SRCC以及两个MRCC。下图中可以看到,MRCC和SRCC的区别就在于是否可以驱动BUFMR,MRCC可以驱动BUFMR,BUFMR又可以驱动上下相邻bank中的BUFIO和BUFR,所以MRCC是多区域(MR)CC管脚,SRCC是单区域(SR)CC管脚,但是并不代表SRCC的时钟只可以驱动当前区域的时钟缓冲资源,从下图可以看出,SRCC也可以通过CMT backbone 去驱动上下相邻的CMT,也可以驱动水平相邻时钟区域的BUFH。
4.IBUFG,IBUFGDS,IBUFDS简介
IBUFG:输入全局时钟缓冲资源,是与时钟输入管脚连接的首级全局时钟缓冲资源,后面可以接BUFG。
IBUFGDS:是IBUFG的差分形式,当时钟信号输入是一对差分信号,就需使用IBUFGDS作为输入全局时钟缓冲。
IBUFDS:和IBUFGDS的区别在于,IBUFGDS是专门用于输入时钟信号,而IBFDS用于普通信号。
Note:
时钟区域工作方式:
(1)所有时钟区域通过clock backbone统一工作。
(2)水平相邻的时钟区域通过HROW统一工作。
(3)竖直相邻的时钟区域通过CMT backbone统一工作。