从本篇文章开始,我们来介绍下Xilinx FPGA的时钟结构、资源、用法,首先从7系列的FPGA开始,因为7系列的FPGA结构跟前面的有很大不同,而且前面那些FPGA用的也越来越少了。
首先来看7系列FPGA的时钟结构图:
- Clock Region:时钟区域,下图中有6个时钟区域,用不同的颜色加以区分出来
- Clock Backbone:从名字也能看出来,这个一个纵向贯穿整个FPGA的时钟资源,把FPGA的clock region分成了两个部分,所有的全局时钟时钟都要从这经过。可以看到BUFG都在Clock Backbone上。Clocking Center就是Backbone中间的分割线。
- Horizontal Center:水平分割线,将FPGA的BUFG分割成上下相等的两部分,像下图中,上下各有16个BUFG。需要注意的是,BUFG不属于任何的clock region,并且BUFG可以到底FPGA的任一个时钟角落。
- HROW:Horizontal Clock Row, 将每一个clock region分成上下两部分,全局时钟进入每个clock region时,需要要经过HROW,有点类似于Clock Backbone在FPGA中的作用。
- CMT Backbone:Clock Backbone是整个FPGA的Backbone,是很珍贵的资源,而如果是上下相邻的clock region,可以通过CMT Backbone互连。
- CMT Column:每个Cloumn包含一个MMCM和一个PLL。
- GT Column:高速收发器的column。
image-20220405205905347
有同学可能有疑惑,为什么要分clock region,用一个clock region不是更简单么?
下面用我师兄的回复:为了适用更多的时钟,加入没有clock region,那就全部是global clock,如果有16个时钟网络,那最多就支持16个时钟。而分成了clock region后,如果该区域的时钟资源恰好可以布局到对应的region,则只使用该region的时钟网络资源。
也就是说,如果有16个时钟网络资源,那么极限情况下,两个region就可以使用32个时钟。