前言
本文节选UG472的第一章,进行整理翻译,主要用于介绍7系列的FPGA的时钟架构以及与前几代的FPGA的区别,并总结了时钟连接的相关使用方法。
时钟架构概述
7 系列 FPGA 时钟资源通过专用的全局和区域 I/O 和时钟资源管理复杂和简单的时钟要求。 时钟管理块 (CMT) 提供时钟频率合成、去偏斜和抖动过滤功能。在设计时钟功能时,不建议使用非时钟资源,例如本地布线。
- 全局时钟树允许跨器件同步元件的时钟。
- I/O 和区域时钟树允许对多达三个垂直相邻的时钟区域进行计时。
- CMT,每个都包含一个混合模式时钟管理器 (MMCM) 和一个锁相环 (PLL),位于 I/O 列旁边的 CMT 列中。
每个 7 系列器件都被划分了时钟区域。
- 时钟区域的数量随设备大小而变化,从最小设备中的一个时钟区域到最大设备中的 24 个时钟区域。
- 一个时钟区域包括跨越 50 个 CLB 和一个 I/O bank (50 I/O) 的区域中的所有同步元素(例如:CLB、I/O、串行收发器、DSP、块 RAM、CMT),水平 时钟行 (HROW) 在其中心。
- 每个时钟区域从HROW 向上跨越25 个CLB,向下跨越25 个CLB,并水平跨越器件的每一侧。
时钟布线资源概述
每个 I/O bank 都包含具有时钟功能的输入管脚,用于将用户时钟引入 7 系列 FPGA 时钟布线资源。 与专用时钟缓冲器相结合,具有时钟功能的输入将用户时钟带到:
- 器件同一上/下半部分中的全局时钟线。
- 同一 I/O bank 和垂直相邻 I/O bank 内的 I/O 时钟线
- 同一时钟区域和垂直相邻时钟区域内的区域时钟线。
- 同一时钟区域内的 CMT,并且有限制地垂直相邻时钟区域。
每个 7 系列单片芯片都有 32 条全局时钟线,可以为整个器件中的所有时序资源提供时钟和控制信号。 全局时钟缓冲器(BUFGCTRL,简化为 BUFG)驱动全局时钟线,并且必须用于访问全局时钟线。 使用时钟区域中的 12 条水平时钟线,每个时钟区域最多可以支持 12 条这些全局时钟线。
全局时钟缓冲器:
- 可用作时钟使能电路,以启用或禁用跨越多个时钟区域的时钟 。
- 可用作无毛刺多路复用器以:
- 在两个时钟源之间进行选择。
- 从故障时钟源切换。
- 通常由 CMT 驱动以:
- 消除时钟分配延迟。
- 调整相对于另一个时钟的时钟延迟。
水平时钟缓冲器 (BUFH/BUFHCE) 允许通过水平时钟行访问单个时钟区域中的全局时钟线。 它还可以用作时钟使能电路 (BUFHCE),以独立启用或禁用跨越单个时钟区域的时钟。使用每个时钟区域中的 12 条水平时钟线,每个时钟区域最多可支持 12 个时钟。
每个 7 系列 FPGA 都有区域和 I/O 时钟树,可以为一个时钟区域中的所有顺序资源提供时钟。 每个器件还具有多时钟区域缓冲器 (BUFMR),允许区域和 I/O 时钟跨越多达三个垂直相邻的时钟区域。
- I/O 时钟缓冲器 (BUFIO) 驱动 I/O 时钟树,提供对同一 I/O bank 中所有顺序 I/O 资源的时钟访问。
- 区域时钟缓冲器 (BUFR) 驱动区域时钟树,该树驱动同一时钟区域中的所有时钟目标,并可通过编程对输入时钟速率进行分频。
- 结合 IOB 中的可编程串行器/解串器,BUFIO 和 BUFR 时钟缓冲器允许源同步系统跨时钟域而无需使用额外的逻辑资源。
- 与相关的BUFR 或BUFIO 一起使用时,可以使用多时钟区域缓冲器(BUFMR) 驱动相邻时钟区域和I/O bank 中的区域和I/O 时钟树。
- 一个时钟区域或I/O bank 中最多可支持四个唯一I/O 时钟和四个唯一区域时钟。
高性能时钟路由以极低抖动、最小占空比失真的直接路径将 CMT 的某些输出连接到 I/O。
CMT 概述
每个 7 系列 FPGA 最多有 24 个 CMT,每个 CMT 由一个 MMCM 和一个 PLL 组成。 MMCM 和 PLL 用作各种频率的频率合成器,用作外部或内部时钟的抖动滤波器,以及去偏斜时钟。 该锁相环包含MMCM 功能的子集。 7 系列 FPGA 时钟输入连接允许多种资源为 MMCM 和 PLL 提供参考时钟。
7 系列 FPGA MMCM 在任一方向具有无限精细相移能力,可用于动态相移模式。 MMCM 在反馈路径或一个输出路径中也有一个小数计数器,从而实现频率合成能力的进一步粒度。
IP 时钟向导可用于帮助利用 MMCM 和 PLL 在 7 系列 FPGA 设计中创建时钟网络。 GUI界面用于采集时钟网络参数。 时钟向导选择适当的 CMT 资源并优化配置 CMT 资源和相关的时钟路由资源。
时钟缓冲器、管理和路由
下图提供了 7 系列 FPGA 时钟架构的可视化和分层解释。下图是 7 系列 FPGA 时钟架构的高层次的结构视图。 垂直时钟中心线(时钟主干)将器件分为相邻的左右区域,而水平中心线将器件分为顶部和底部。
时钟主干中的资源被镜像到水平相邻区域的两侧,从而将某些时钟资源延伸到水平相邻区域中。 顶部和底部划分将两组全局时钟缓冲器 (BUFG) 分开,并对它们的连接方式施加了一些限制。 但是,BUFG 不属于时钟区域,可以到达设备上的任何时钟点。 所有水平时钟资源都包含在时钟区域水平时钟行 (HROW) 的中心,而垂直的非区域时钟资源包含在时钟主干或 CMT 主干中。
一个时钟区域始终包含每列 50 个 CLB、每列 10 个 36K 块 RAM(除非五个 36K 块被用于 PCI Express 的集成块代替)、每列 20 个 DSP 片和 12 个 BUFH。 如果适用,一个时钟区域包含一个 CMT (PLL/MMCM)、一组 50 个 I/O、一个由四个串行收发器组成的 GT quad,以及块 RAM 列中用于 PCIe的半列。
时钟区域的基本视图
下图是时钟区域的基本视图。
全局时钟缓冲器可以通过 HROW 驱动到每个区域, 水平时钟缓冲器 (BUFH) 通过 HROW 驱动到该区域中的每个时钟点。 BUFG 和 BUFH 共享 HROW 中的布线轨迹。 I/O 缓冲器 (BUFIO) 和区域时钟缓冲器 (BUFR) 位于 I/O bank 内。 BUFIO 仅驱动 I/O 时钟资源,而 BUFR 驱动 I/O 资源和逻辑资源。 BUFMR 支持 BUFIO 和 BUFR 的多区域链接。 具有时钟功能的输入将外部时钟连接到设备上的时钟资源。 某些资源可以通过 CMT 主干连接到上方和下方的区域。
单个时钟域的详细视图
下图显示了器件右侧边缘单个时钟区域中时钟的更详细视图。
全局 BUFG 和区域 BUFH/CMT/CC 引脚连接
下图显示了全局 BUFG 和区域 BUFH/CMT/CC 引脚连接以及区域中可用资源数量的详细信息。
四个具有时钟功能的输入管脚中的任何一个都可以驱动 CMT 和 BUFH 中的 PLL/MMCM。 BUFG 显示为存在于该区域中,但可以物理上位于时钟主干中的其他位置。 BUFG 和 BUFH 共享 HROW 中的 12 个路由轨道,可以驱动该区域的所有时钟点。 BUFG 也可以驱动 BUFH。 这允许在其他全局时钟分布上实现单独的时钟使能 (CE)。
GT quad 有 10 个专用轨道来驱动时钟主干中的 CMT 和时钟缓冲器。 位于 I/O bank 中的 BUFR 有四个轨道驱动逻辑、CMT 和 BUFG 中的时钟点。 CMT 可以在有限的情况下使用 CMT 主干驱动相邻区域中的其他 CMT。 同样,具有时钟功能的引脚可以在相同的限制下驱动相邻区域的 CMT。 具有时钟功能的引脚可以驱动器件同一顶部/底部的任何位置的 BUFG。 CMT 主干中有四个轨道来支持垂直区域之间的连接。
来自一个区域的时钟源可以驱动其自身区域以及水平相邻区域中的时钟缓冲器资源。 CMT、具有时钟功能的引脚和串行收发器可以通过 BUFH 将时钟驱动到水平相邻区域,并且还可以连接到设备同一顶部/底部的 BUFG。
逻辑互连驱动 BUFG 和 BUFH 的 CE 引脚。 逻辑互连也可以将时钟驱动到相同的缓冲区中,但必须小心,因为时序是不可预测的。
BUFR/BUFMR/BUFIO 时钟区域
下图显示了 I/O 时钟资源的BUFR/BUFMR/BUFIO 时钟区域详细信息。
每个 I/O bank 包含四个 BUFIO 和四个 BUFR。 这些时钟缓冲器中的每一个都可以由具有时钟功能的特定输入时钟引脚对驱动,也可以由 MMCM 的特定输出时钟直接驱动。 两个具有时钟功能的输入引脚对,称为 MRCC,支持多区域时钟方案。 一个 MRCC 引脚对可以驱动特定的 BUFMR,而 BUFMR 又可以驱动相同和相邻区域中的 BUFIO 和 BUFR,从而促进多区域/存储体接口。 同样,GT quad 也可以驱动 BUFMR。
MMCM< 3:0 > 输出具有通往 BUFR 和 BUFIO 的专用高性能差分路径。 此功能也称为高性能时钟 (HPC)。