一、xilinx 7系列中时钟架构
二、一个MMCM的布局示例
xilinx 7系列中时钟架构
在xilinx 7系列FPGA中,使用专门的全局时钟、全局I/O、区域时钟和区域I/O的资源。CMT来实现时钟频率的合成、去抖动等功能。每个CMT都包含一个时钟管理器(MMCM)和一个锁相环(PLL),它们位于I/O列旁边的CMT列中。
从下面图中中可以看出来,一个CMT包括一个MMCM和一个PLL,其位置与上述的时钟架构保持一致。
一个时钟区域,包括跨越上下50个CLB和一个I/O Bank的所有同步元素(例如:CLB、I/O、串行收发器、DSP、RAM、CMT),在其中心有一个水平时钟行(HROW)。每个时钟区域,从HROW开始向上跨越25个CLB和向下跨越25个CLB,并水平地横跨设备的每一侧。 以下是一个时钟区域的案例,从图中可以看出这个时钟区域X1Y1内的所有元素,包括CLB,IO接口,DSP资源,RAM,CMT等。此处选用的是zynq7020,故串行收发器不存在。有兴趣的可以找一找其他器件,进行比对学习,有助于底层理解。
7系列FPGA时钟输入,通过垂直时钟网络驱动全局时钟缓冲区。这32个缓冲区在设备的顶部和底部被分成两组16个缓冲区。任何直接连接到bufg的资源都有一个顶部/底部的限制。顶部的每个MMCM只能驱动位于设备顶部的16个缓冲区。底部的mmcm驱动底部的16个bufg。
一个MMCM的布局示例
此处提供了一个MMCM的布局示例,从输入的MRCC端口,到输出的两路时钟,使用了哪些时钟原语以及布局位置。下面是使用的所有的时钟原语。
MMCM允许输入的时钟源包括: IBUFG——时钟能力的输入缓冲区,MMCM将补偿该路径的延迟。IBUFG表示在同一区域内的一个能够支持时钟的时钟大头针。 BUFGCTRL或BUFG -内部全局时钟缓冲区,MMCM将不会补偿该路径的延迟。 IBUF——常规输入缓冲区,不建议使用,因为输入缓冲区可以使用常规路由。IBUF时钟输入必须在路由到MMCM/PLL之前路由到BUFG。MMCM/PLL并不补偿此路径的延迟。 BUFR——区域时钟输入缓冲区,MMCM/PLL将不会补偿该路径的延迟。 GT——千兆位收发器可以直接连接到MMCM。 下面的IP界面中可以选择适配,不同配置使用不同的时钟原语。选择哪种配置取决于资源,甚至有些硬件把IO放置在普通管脚上,需要xdc约束进行强行布线。如果单端时钟一旦放到全局时钟的N端,那就完蛋了,只能飞线。
IBUF原语
MMCM2_ADV原语
BUFG原语