本章节的内容主要是介绍各个部件的功能。
首先是BUFG,它能驱动所有时序资源。
但是它的输入从哪里来呢,谁负责驱动它,整个板子的外部时钟是怎么进来的呢?这个就涉及到外部时钟输入管脚。注意,不是说BUFG只能被外部输入的时钟驱动。时钟信号由专门的时钟引脚输入,引脚分为两种MRCC(Multi-region clock capable)和SRCC(Single-region clock capable),它们分布在I/O bank中,并且与特定的Clock Buffer相连接。它可以将用户时钟连接到:
- BUFG(buffer和引脚位于同一个上/下半区)
- BUFIO(位于同一个或者垂直相连的I/O bank)
- BUFR/BUFMR(位于同一个或者垂直相连的时钟域)
- CMT(位于同一个时钟域,或者垂直相连的时钟域,但是后一种情况有限制)
对于各个元器件之间的驱动关系,UG有一张表格做得非常清楚,以下是总结。
MRCC(每个bank有两对)
由外部时钟驱动
能驱动 同个时钟域和同一侧(左/右半区)的
- 四个BUFIO
- 四个BUFR
- 两个BUFMR
- 一个CMT(包括一个MMCM和PLL)
- 上下垂直相邻的CMT(使用有限的CMT Backbone资源)
能驱动 同一侧(上/下半区)的
- 16个BUFG
能驱动 水平相连的时钟域内的
- BUFH
SRCC(每个bank有两对)
由外部时钟驱动
能驱动 同个时钟域和同一侧(左/右半区)的
- 四个BUFIO
- 四个BUFR
- 一个CMT(包括一个MMCM和PLL)
- 上下垂直相邻的CMT(使用有限的CMT Backbone资源)
能驱动 同一侧(上/下半区)的
- 16个BUFG
能驱动 水平相连的时钟域内的
- BUFH
BUFIO 能被同个时钟域的MRCC,SRCC,MMCM.CLKOUT(0-3),CLKFBOUT驱动,还可以被同个时钟域和垂直相邻时钟域的BUFMR驱动。
它可以驱动同个时钟域内的 ILOGIC.clk ILOGIC.clkb OLOGIC.clk OLOGIC.clkb OLOGIC.oclk OLOGIC.clkb
BUFR能被同个时钟域的MRCC,SRCC,MMCM.CLKOUT(0-3),CLKFBOUT驱动,还可以被同个时钟域和垂直相邻时钟域的BUFMR驱动。还可以被General interconnect 驱动。
它可以驱动CMT,所有BUFG能驱动的Clocking point(同个时钟域内),当它和BUFG在同个上下半区时,也可以用来驱动BUFG(不推荐)。
BUFMR能被同个时钟域内的MRCC GT Clock输出(部分)和interconnect驱动(不推荐)
它可以驱动同个时钟域以及垂直相邻时钟域的BUFIO和BUFR。
BUFG能被同个上下半区SRCC,MRCC,CMT,GT Clock输出(部分),BUFR(不推荐),和interconnect驱动(不推荐)。以及在同个上/下半区的相邻BUFG。
它可以驱动CMT,GT Clock Output(部分),在同个上下半区的相邻BUFG,CLB控制信号,BUFH,所有时序资源和I/O。
BUFH能被同个时钟域内以及水平相连时钟域内的 SRCC,MRCC,CMT,BUFG,GT Clock输出(部分),和interconnect驱动(不推荐)。
它可以驱动CMT,GT Clock Output(部分),在同个内所有BUFG能驱动的时序资源。
CMT能被BUFG,SRCC(同一个或者相邻的时钟域),MRCC(同一个或者相邻的时钟域),GT(同个时钟域),BUFR(同个时钟域或者垂直相邻的时钟域内的BUFMR),MMCM/PLL.CLKOUT0-3
它可以驱动在同个上下半区的所有BUFG,同个时钟域内的BUFIO(MMCM),BUFR(MMCM),BUFH以及水平相邻时钟域内的(BUFH),MMCM/PLL(不相邻则会有相移)。
以下来自xilinx技术支持,作为补充:
BUFIO 和 BUFR
BUFIO 和 BUFR 缓冲器可用于不需要访问器件所有区域的区域时钟。它们通常被用作 IOSERDES 接口设置的时钟。如果您需要了解有关如何使用这两个缓冲器之一的更多详情,则可以在 7 系列 FPGA 时钟资源用户指南 (UG472) 的“区域时钟资源”部分中找到这些信息: http://china.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf
BUFMR
BUFMR 是 7 系列器件的新增缓冲器。7 系列器件中的 BUFR 和 BUFIO 只能在其自己的时钟区域中本地布线。BUFMR 必须用于布线到邻近的时钟区域。BUFMR 只能使用 MRCC(具有多区域时钟功能)引脚进行驱动。如果您需要了解有关如何使用此缓冲器的更多详情,敬请参见 7 系列 FPGA 时钟资源用户指南 (UG472) 的“多区域时钟缓冲器”部分和附录 A: http://china.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf
BUFG、 BUFGCTRL、和 BUFGMUX
BUFG/BUFGCTRL/BUFGMUX 可用于驱动全局时钟,使该时钟可以到达整个器件的逻辑。您只能通过 CCIO(具有时钟功能的 IO)引脚访问 BUFG 缓冲器。如果您需要了解有关如何使用 BUFG 缓冲器的更多详情,敬请参见 7 系列 FPGA 时钟资源用户指南 (UG472) 的“全局时钟资源”部分: http://china.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf
BUFH
水平时钟缓冲器 (BUFH) 可驱动单个区域中的水平全局时钟树干。这些缓冲器包括可用于动态打开或关闭时钟网络的时钟启用功能。这样,您就可以关闭不在使用当中的逻辑区域,以此节约功耗。如欲了解有关如何使用 BUFH 缓冲器的更多详情,敬请参见 7 系列 FPGA 时钟资源用户指南 (UG472) 的“区域时钟资源”部分: http://china.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf