作者: 张大侠,文章来源: 傅里叶的猫微信公众号
我们前面的两篇文章讲了7系列的时钟结构和clock region内部具体组成,这篇文章我们来讨论下MRCC和SRCC的区别。只有7系列的FPGA中才有MRCC和SRCC的说法,到了UltraScale系列,都是叫GC。
看了上一篇文章的同学应该清楚MRCC就是Multi Region的CC,从该管脚输入的时钟可以access到不同的clock region,而SRCC就是Single Region的CC,从该管脚输入的时钟只能access当前clock region。
所以有同学就会觉得,如果想使用全局时钟,就必须将时钟接到MRCC,而不能是SRCC。但这种理解是错误的,下面我们会详细解释。
手册中对MRCC驱动多个clock region的说明如下:
MRCCs can access multiple clock regions and the global clock tree. MRCCs function the same as SRCCs and can additionally drive multi-clock region buffers (BUFMR) to access up to three clock regions
MRCC通过BUFMR来access最多三个clock region,从下面的图也可以看出,已经用红色的线将MRCC的路径都标出来,可以看到,MRCC通过了BUFMR到达了CMT Backbone(如果对CMT Backbone不理解,可以看前面两篇文章),然后就可以access其他的clock region了。
从上面这个图可以看出,MRCC可以直接驱动BUFR和BUFIO,也可以先经过BUFMR后再驱动BUFIO和BUFR。
SRCC的路径在下面的图中用红色的线标识出来,可看到,它的路径只在当前的clock region里面。
An MRCC pin pair can drive a specific BUFMR, which in turn can drive BUFIOs and BUFRs in the same and adjacent regions facilitating multi-region/bank interfaces. Similarly, a GT quad can also drive the BUFMRs
下面这个表格解释的就更加清晰了,MRCC和SRCC都是由外部的时钟驱动,而且MRCC和SRCC的区别就在于MRCC可以驱动BUFMR,SRCC不行。其他基本都一样,它们都可以驱动四个BUFIO、四个BUFR、一个CMT、上下相邻的CMT、16个BUFG和BUFH。
其中有一点很关键,就是它们都可以驱动BUFG和BUFH,这就意味着,从MRCC和SRCC进来的时钟都可以access全局时钟树,也就都可以当做全局时钟。
Clock-capable inputs are organized as 2 MRCC and 2 SRCC pairs in each I/O bank. SRCCs access a single clock region and the global clock tree, as well as other CMTs above and below in the same column. SRCCs can drive:
• Regional clocks lines (BUFR, BUFH, BUFIO) within the same clock region
• CMTs in the same clock region and adjacent clock regions.
• Global clocks lines (BUFG) in the same top/bottom half of the device.
MRCCs can access multiple clock regions and the global clock tree. MRCCs function the same as SRCCs and can additionally drive multi-clock region buffers (BUFMR) to access up to three clock regions.
所以,SRCC进来的时钟,虽然不能直接驱动其他clock region,但接到BUFG上之后,仍然可以通过BUFG来驱动其他的clock region。
最后我们多提一点,在手册中一些表达可能对于很多同学不好理解。比如上面那张表里描述的:
MRCCs that are located in the same clock region and on the same left/right side of the device drive:
字面意思很好理解,也没有什么生僻单词。同一个clock region里的MRCC可以驱动下面那些模块,那为什么又提到the same left/right side呢?如果看了第一篇文章的同学可能比较好理解,因为FPGA里面有个纵向的Clock Backbone,以这个为间隔分成了左右两部分,所有的全局时钟都在这个Clock Backbone里面。
这个表里面还提到一句:
MRCCs within the same half top/bottom drive:
• 16 BUFGs
这里为什么又要求是上下了呢?这个问题的答案还是在第一篇文章,FPGA里面有个Horizontal Center,将FPGA的BUFG分割成上下相等的两部分,上下各有16个BUFG。