前言

本文节选UG472的第二章,进行整理翻译,用于介绍7系列 FPGA的时钟布线资源。

文章目录

  • 前言
  • 时钟布线资源概述
  • 时钟缓冲器选择注意事项
  • 时钟功能输入
    • 单个时钟驱动单个 CMT
    • 单个时钟驱动多个 CMT
    • 具有时钟功能的输入引脚布局规则
  • 全局时钟资源
    • Clock Tree and Nets - GCLK
    • Clock Regions
    • Global Clock Buffers
      • 全局时钟缓冲器原语
        • BUFGCTRL
        • BUFG
        • BUFGCE and BUFGCE_1
        • BUFGMUX 和 BUFGMUX_1
        • BUFGMUX_CTRL
      • 其他使用模型
        • 使用 BUFGCTRL 的异步 MUX
        • 带时钟使能的 BUFGMUX_CTRL
  • reference

时钟布线资源概述

7 系列 FPGA 具有多种时钟布线资源,可支持各种时钟方案和要求,包括高扇出、短传播延迟和极低偏移。 为了最好地利用时钟布线资源,您必须了解如何将用户时钟从 PCB 获取到 FPGA,确定哪些时钟布线资源是最佳的,然后通过使用适当的 I/O 和时钟缓冲器来访问这些时钟布线资源。

时钟缓冲器选择注意事项

7 系列 FPGA 具有丰富的时钟资源。 各种缓冲器类型、时钟输入引脚和时钟连接满足许多不同的应用要求。 选择适当的时钟资源可以提高可布线性、性能和通用 FPGA 资源利用率。 对于某些应用和设计,平面图或其他类型的手动指导也会对实施产生很大影响。
BUFGCTRL(最常用作BUFG)是最常用的时钟布线资源。 这些真正的全局时钟可以连接到设备上的每个时钟点。

然而,在某些情况下,出于性能、功能或时钟资源可用性的原因,使用备用时钟缓冲器更为有利。 BUFG 最适合在以下情况下部署:

  1. 设计或设计的一部分在设备的大范围内具有全局影响,并且功能本地化是不可能的。
  2. 跨越多个时钟区域、级联或需要连接到不在附近的CLB 的硬件功能块,例如块RAM、DSP 或集成IP。
  3. 通过切换时钟同步(无毛刺)或异步,应用程序能够从停止的时钟切换或选择具有不同频率的时钟(例如,降低功耗)。
  4. 时钟使能(CE) 功能可用于在非工作期间降低功耗。 然而,在大多数情况下,由于时序(CE 延迟)限制,不应使用 CE 功能在时钟元件处模拟真正的 CE 逻辑功能。
  5. CE 功能可用于在设备启动后同步初始化的时钟元素。

BUFRBUFIO 组合的主要目的是支持源同步接口。 当接口被放置在单个区域中时,BUFIO 为 SelectIO 的高速端提供时钟,BUFR 为提供时钟域传输功能的 FPGA 逻辑提供低速的反串行/串行端时钟。

对于需要比单个时钟区域/组中可用的更多逻辑和/或 I/O 的接口,BUFMR (BUFMRCE) 用于将时钟域传输功能扩展到时钟区域的上方和下方。

某些类型的应用需要与源同步 I/O 用例无关的分频时钟,当 MMCM/PLL 不能使用或不能用于分频功能时,可以使用 BUFR 作为简单的时钟分频器。 在这种情况下,必须特别注意时序和偏差。

水平时钟缓冲器 BUFH (BUFHCE) 是严格的区域资源,不能跨越时钟区域上方或下方。与 BUFR 不同,BUFH 不具备对时钟进行分频的能力。

  • BUFH 类似于全局时钟资源,只是在区域基础上跨越两个水平区域。
  • BUFH 能够作为MMCM/PLL 的反馈,并且可以补偿时钟插入延迟。
  • 当一个接口或逻辑云可以定位到一个时钟区域或两个水平相邻的时钟区域时,BUFH 是首选的时钟资源。
  • BUFH 还具有一个时钟使能引脚 (BUFHCE),当逻辑或接口及其相关逻辑未激活时,该引脚可用于降低动态功耗。
  • 时钟使能功能可以在时钟周期到周期的基础上提供门控时钟。
  • 与全局时钟树类似,BUFH 也可以连接到 CLB(启用/复位)中的非时钟资源,但具有更好的偏移特性。
  • BUFH 还可用于时钟区域中时钟元件的同步启动。

时钟功能输入

外部用户时钟必须通过差分时钟引脚对引入FPGA,称为时钟功能 (CC) 输入。

具有时钟功能的输入提供对内部全局和区域时钟资源的专用高速访问。

具有时钟功能的输入使用专用路由,并且必须用于时钟输入以保证各种时钟功能的时序。

具有本地互连的通用 I/O 不应用于时钟信号。

每个 I/O bank 位于单个时钟区域并包括 50 个 I/O 管脚。 在每个 I/O 列的每个 I/O bank 中的 50 个 I/O 管脚中,有四个具有时钟功能的输入管脚对(总共 8 个管脚)。每个具有时钟功能的输入:

  • 可以连接到 PCB 上的差分或单端时钟。
  • 可以配置为任何 I/O 标准,包括差分 I/O 标准。
  • 有一个 P 侧(主)和一个 N侧(从)。

单端时钟输入必须分配给具有时钟功能的输入引脚对的 P(主)侧。

如果单端时钟连接到差分时钟管脚对的 P 侧,则 N 侧不能用作另一个单端时钟管脚——它只能用作用户 I/O。

每个 I/O bank 中具有时钟功能的输入组织为 2 个 MRCC 和 2 个 SRCC 对。SRCC 访问单个时钟区域和全局时钟树,以及同一列中上下的其他 CMT。

SRCC 可以驱动:

  • 同一时钟区域内的区域时钟线(BUFR、BUFH、BUFIO)。
  • 同一时钟区域和相邻时钟区域中的 CMT。
  • 器件同一上/下半部分中的全局时钟线(BUFG)。

MRCC 可以访问多个时钟区域和全局时钟树。 MRCC 的功能与 SRCC 相同,并且可以额外驱动多时钟区域缓冲器 (BUFMR) 以访问多达三个时钟区域。

如果不用作时钟,具有时钟功能的输入可用作常规 I/O。 当用作常规 I/O 时,具有时钟功能的输入引脚可以配置为任何单端或差分 I/O 标准。

具有时钟功能的输入可以连接到同一时钟区域中的 CMT,并且 CMT 在上面和下面的时钟区域中有一些限制。

单个时钟驱动单个 CMT

当时钟输入驱动单个 CMT 时,具有时钟功能的输入和 CMT (MMCM/PLL) 必须位于同一时钟区域。

单个时钟驱动多个 CMT

单个时钟输入可以驱动同一列中的其他 CMT。 在这种情况下,MMCM/PLL 必须放置在与具有时钟能力的输入相同的时钟区域中。

将额外的 CMT 放置在相邻区域中更为理想,但在同一列中也可以驱动比一个 CMT 更远的 CMT。 CMT 中使用的资源必须相同,才能在没有 CLOCK_DEDICATED_ROUTE 约束的情况下自动放置此配置。 如果需要混合使用 MMCM/PLL,则应首先将它们放置在同一个 CMT 中。

如果需要从不在同一时钟区域中的具有时钟能力的输入驱动 CMT,并且在与具有时钟能力的输入相同的时钟区域中没有 MMCM/PLL,则必须设置属性 CLOCK_DEDICATED_ROUTE = BACKBONE 。在这种情况下,MMCM 或 PLL 不会正确地将输出与输入时钟对齐。

在同一列中驱动 CMT 的专用资源有限。 一些赛灵思 IP 使用这些资源,因此使它们无法用于其他设计用途,并导致设计无法布线。 如果到其他时钟区域的专用路由不可用,则将 CLOCK_DEDICATED_ROUTE 设置为 FALSE 允许使用本地互连逻辑,尽管它会导致更长的未补偿延迟。

具有时钟功能的输入引脚布局规则

在创建初始设计之前手动选择具有时钟功能的输入引脚时的两个主要考虑因素是:

  • 确保具有时钟功能的输入可以连接到所需的时钟资源。 确保连通性的放置规则如下表所示。
  • 确保所需的时钟资源可用且未被设计的其他部分使用。 确保通过具有时钟功能的输入进入的外部时钟和来自 IP 的内部生成时钟在访问内部时钟网络时不会发生冲突的最佳方法是构建包含所需时钟网络和 IP 的初始设计,并运行它通过实施工具。 这显着提高了引脚排列不需要因时钟原因而改变的检查和信心。

应遵循表中所示的布局规则,以确保具有时钟功能的输入引脚选择可以访问所需的内部时钟网络。 每个 I/O bank 位于单个时钟区域中。通过确保正确选择具有时钟功能的输入引脚布局,避免代价高昂的电路板重新设计和糟糕的时钟时序。

时钟输入 资源利用和放置规则 有效的具有时钟功能的输入引脚
整个设备的 I/O 和/或 顺序元素 **具有时钟功能的输入 > BUFG > 全局时钟树
**1. 具有时钟功能的输入必须放置在与BUFG 相同的上半部分或下半部分。
2. 每个器件的上半部分有16 个BUFG,下半部分有16 个BUFG。
3. 每个时钟区域最多可以有12 个唯一的全局时钟并使用水平时钟线。
SRCC or MRCC
使用 BUFH的单个时钟区域内的 I/O 和/或 顺序元素 **具有时钟功能的输入> BUFH > 水平时钟线
**1. 具有时钟功能的输入必须与BUFH放置在相同的时钟区域或水平相邻的时钟区域中。
2. 每个时钟区域有12 个BUFH 和12 条水平时钟线。
SRCC or MRCC
使用 CMT 的 I/O 和/或 顺序元素 整个器件:
时钟能力输入 > CMT > BUFG > 全局时钟树
在单个时钟区域或相邻时钟区域中:
时钟能力输入 > CMT > BUFR/BUFH > 区域时钟树/水平时钟线
来自时钟能力的输入布线 CMT 的输入:
1. CMT 必须放置在与具有时钟功能的输入相同的时钟区域中。
2. 当需要多个CMT 时,CMT 也可以放置在时钟区域的正上方或下方。
3. 每个时钟区域有一个 CMT。
SRCC or MRCC
使用 BUFR 的单个时钟区域中的 I/O 和/或顺序元素 具有时钟功能的输入> BUFR > 区域时钟树
1. 具有时钟功能的输入必须与BUFR、I/O 和顺序时钟元素放置在相同的时钟区域中。
2. 特定的具有时钟功能的引脚对连接到特定的BUFR 和BUFIO。因此不建议手动定位 BUFR/BUFIO。
3. 每个时钟区域有四个支持时钟的输入和四个BUFR。
SRCC or MRCC
最多三个相邻时钟区域中的 I/O 和/或 顺序元素 具有时钟功能的输入 > BUFMR > BUFR > 区域时钟树
1. BUFR 驱动的 I/O 和其他时序元素必须位于相同的时钟区域或紧邻具有时钟功能的输入上方或下方的时钟区域中。BUFMR 必须用于驱动同一时钟区域和相邻时钟区域中的 BUFR。
2. 特定的具有时钟功能的引脚对连接到特定的BUFR 和BUFIO。因此不建议手动定位 BUFR/BUFIO
3. 每个时钟区域有四个支持时钟的输入、四个BUFR 和两个BUFMR。
MRCC only
在一个时钟区域(50 个 I/O)中只有高性能 SelectIO 接口 具有时钟功能的输入> BUFIO > I/O 时钟树
1. 具有时钟功能的输入必须放置在与它将驱动的BUFIO 和I/O 触发器相同的时钟区域中。
2. 特定的具有时钟功能的引脚对连接到特定的BUFR 和BUFIO。因此不建议手动定位 BUFR/BUFIO。
3. 每个时钟区域有四个支持时钟的输入和四个BUFIO。
SRCC or MRCC
仅在最多两个相邻时钟区域中的高性能 SelectIO 接口 具有时钟功能的输入 > BUFMR >BUFIO > I/O 时钟树
1. 顺序 I/O 和 BUFIO 必须放置在与具有时钟功能的输入相同的时钟区域中,或者位于上方或下方紧邻的时钟区域中。
2. BUFMR 必须用于访问同一时钟区域和相邻时钟区域中的BUFIO 和I/O 时钟。
3. 特定的具有时钟功能的引脚对连接到特定的BUFR 和BUFIO。因此不建议手动定位 BUFR/BUFIO。
4. 每个时钟区域有四个支持时钟的输入、四个BUFIO 和两个BUFMR。
MRCC only

BUFH 和BUFG 在时钟区域内使用相同的水平时钟线资源。 每个 BUFG 或 BUFH 使用时钟区域中的 12 条水平时钟线之一。

当具有时钟功能的输入驱动同一列中其他时钟区域中的 CMT,但不在同一时钟区域中时,需要CLOCK_DEDICATED_ROUTE = BACKBONE。

当使用 BUFMR 或 CMT 将时钟驱动到相邻时钟区域时,减少的时钟资源会影响相邻时钟区域。 例如,使用 BUFMR 驱动相邻时钟区域中的 BUFR 会禁止相邻时钟区域中具有时钟能力的输入对之一驱动其自己的时钟区域中的区域时钟树。 BUFH 或 BUFG 仍可用于驱动该相邻时钟区域中的全局时钟线。

如果内存接口位于 BUFR/BUFIO 所在的同一存储区或区域中,则从 BUFMR 到该存储区或区域中的那些 BUFH/BUFIO 的连接可能会受到限制。

在同一封装中的设备之间迁移时,将 BUFG 组织成 16 个顶部资源和 16 个底部资源的顶部/底部中心线可能相对于其他列发生了偏移。 具体来说,I/O bank 改变了顶部/底部 BUFG 的对齐方式。 这会导致访问 BUFG 的具有时钟功能的输入引脚的对齐方式不同。 下图显示了使用 XC7K325T 和 XC7K160T 器件的中心对齐示例。 在这种情况下,当从同一封装中的大型设备移动到小型设备时,中心线会更低(相对于 I/O 列),而当从小型设备移动到大型设备时,中心线会更高。 如果具有时钟功能的输入引脚被 LOCed,则设计可能无法路由。

在迁移到同一封装中的较小设备时,也可能出现这样的情况,即较大设备南侧的所有 BUFG 都已使用,并且没有更多可用的 BUFG。此外,具有多个超级逻辑区域 (SLR) 的器件在向/从同一封装中的单个 SLR 中的单片路径迁移时可能具有类似的限制。

全局时钟资源

全局时钟是一个专用的互连网络,专门设计用于到达 FPGA 中各种资源的所有时钟输入。 这些网络旨在具有低偏移和低占空比失真、低功耗和改进的抖动容限。 它们还设计用于支持非常高频的信号。

了解全局时钟的信号路径可以扩展对各种全局时钟资源的理解。 全局时钟资源和网络由以下路径和组件组成:

  • Clock Tree and Nets - GCLK
  • Clock Regions
  • Global Clock Buffers

Clock Tree and Nets - GCLK

7 系列 FPGA 时钟树专为低偏移和低功耗操作而设计。任何未使用的分支都将断开连接。 时钟树还可用于驱动逻辑资源,例如复位或时钟使能。 这主要用于高扇出/负载网络。

在 7 系列 FPGA 架构中,全局时钟线的管脚访问不限于逻辑资源时钟管脚。 全局时钟线可以驱动 CLB 中除 CLK 引脚之外的引脚(例如:控制引脚 SR 和 CE)。 需要非常快速的信号连接和大负载/扇出的应用可以从这种架构中受益。

Clock Regions

7 系列器件通过使用时钟区域改进了时钟分布。每个时钟区域最多可以有 12 个全局时钟域。这 12 个全局时钟可由单片器件或 SLR 中可用的 32 个全局时钟缓冲器的任意组合驱动。时钟区域的尺寸固定为 50 个 CLB 高(50 个 IOB)并跨越管芯的左侧或右侧。 在 7 系列设备中,时钟主干将设备分为左侧或右侧。 骨架不在模具的中心。 通过固定时钟区域的尺寸,较大的 7 系列设备可以拥有更多的时钟区域。 7 系列 FPGA 提供 1 到 24 个时钟区域。

Global Clock Buffers

7 系列器件中最多有 32 个全局时钟缓冲器。 一个 CCIO 输入可以直接连接到器件同一半的任何全局时钟缓冲器。 每个差分时钟引脚对可以连接到 PCB 上的差分时钟或单端时钟。 当用作差分时钟输入时,直接连接来自差分输入引脚对的 P 侧。 当用作单端时钟输入时,必须使用引脚对的 P 侧,因为直接连接仅存在于该引脚上。如果单端时钟连接到差分管脚对的 P 侧,则 N 侧不能用作另一个单端时钟管脚。 但是,它可以用作用户 I/O。

设备上半部的 CMT 只能驱动设备上半部的 BUFG,下半部的 CMT 只能驱动下半部的 BUFG。 类似地,只有同一半器件中的 BUFG 可以作为反馈给器件同一半器件中的 CMT。 当 CMT 列扩展到还包含一整列 GT 和 I/O 的区域时,千兆位收发器 (GT) 只能直接连接到 MMCM/PLL。Virtex-7T 和 Virtex-7XT 器件具有这些完整的列。Spartan-7、Artix-7、Kintex-7 和 Zynq-7000 设备中的 GT 和 CMT 只能使用 BUFH(首选)或 BUFG 连接。

全局时钟缓冲器允许各种时钟/信号源访问全局时钟树和网络。 全局时钟缓冲器的可能输入源包括:

  • 支持时钟的输入
  • 时钟管理块 (CMT),由混合模式时钟管理器(每个 CMT 一个 MMCM 和一个 PLL)组成,驱动器件同一半的 BUFG
  • 相邻的全局时钟缓冲器输出 (BUFG)
  • 通用互连
  • 区域时钟缓冲器 (BUFR)
  • 千兆位收发器

7 系列 FPGA 的时钟输入可以通过时钟主干列中的垂直时钟网络间接驱动全局时钟缓冲器。 32 个 BUFG 在设备的顶部和底部分为两组,每组 16 个 BUFG。 任何直接连接到 BUFG 的资源(例如,GTX 收发器)都有顶部/底部限制。 例如,顶部的每个 MMCM 只能驱动位于设备顶部的 16 个 BUFG。 同样,底部的 MMCM 驱动底部的 16 个 BUFG。

所有全局时钟缓冲器都可以驱动 7 系列器件中的所有时钟区域。 但是,在一个时钟区域中只能驱动 12 个不同的时钟。 时钟区域(50 个 CLB)是时钟树的一个分支,由 25 个 CLB 行向上和 25 个 CLB 行向下组成。 时钟区域跨越设备的一半。

时钟缓冲器设计为配置为具有两个时钟输入的同步或异步无毛刺的 2:1 多路复用器。 BUFG 级联有一个专用路径(路由资源),以允许两个以上的时钟输入选择。 7 系列 FPGA 控制引脚提供广泛的功能和强大的输入切换。

在 7 系列 FPGA 时钟架构中,BUFGCTRL 多路复用器和所有衍生器件可以级联到器件上半部和下半部的 16 组内的相邻时钟缓冲器,从而在上半部有效地创建一个由 16 个 BUFGMUX(BUFGCTRL 多路复用器)组成的环下半部分的另一个 16 环。 下图显示了级联 BUFG 的简化图。

以下详细介绍了 7 系列 FPGA 时钟缓冲器的各种配置、原语和使用模型。

全局时钟缓冲器原语

下表中的原语是全局时钟缓冲器的不同配置。

Primitive Input Output Control
BUFGCTRL I0, I1 O CE0, CE1, IGNORE0, IGNORE1, S0, S1
BUFG I O
BUFGCE I O CE
BUFGCE_1 I O CE
BUFGMUX I0, I1 O S
BUFGMUX_1 I0, I1 O S
BUFGMUX_CTRL I0, I1 O S

BUFGCTRL

如下图所示的 BUFGCTRL 原语可以在两个异步时钟之间切换。 所有其他全局时钟缓冲器原语都源自 BUFGCTRL 的某些配置。
BUFGCTRL 有四个选择线,S0、S1、CE0 和 CE1。 它还有两条额外的控制线 IGNORE0 和 IGNORE1。 这六条控制线用于控制输入 I0 和 I1。

BUFGCTRL 设计用于在两个时钟输入之间切换而不会出现毛刺。 当当前选择的时钟在 S0 和 S1 改变后从高电平跳变到低电平时,输出保持为低电平,直到另一个(待选择的)时钟从高电平跳变低。 然后新时钟开始驱动输出。

BUFGCTRL 的默认配置是下降沿敏感并在输入切换之前保持在低电平。BUFGCTRL 也可以是上升沿敏感的,并在输入切换之前通过使用 INIT_OUT 属性保持在高电平。

在某些应用中,前面描述的条件是不可取的。 置位 IGNORE 引脚将绕过 BUFGCTRL 检测在两个时钟输入之间切换的条件。 换句话说,置位 IGNORE 会导致 MUX 在选择引脚改变的瞬间切换输入。 IGNORE0 使输出在选择引脚改变时立即从 I0 输入切换,而 IGNORE1 使输出在选择引脚改变时立即从 I1 输入切换。

选择输入时钟需要将“选择”引脚对(S0 和 CE0,或 S1 和 CE1)置为高电平。 如果 S 或 CE 未置为高电平,则不会选择所需的输入。
在正常操作中,S 和 CE 对(所有四个选择线)预计不会同时置为高电平。 通常,“选择”引脚对中只有一个引脚用作选择线,而另一个引脚连接为高电平。 真值表如下表所示。

CE0 S0 CE1 S1 O
1 1 0 X I0
1 1 X 0 I0
0 X 1 1 I1
X 0 1 1 I1
1 1 1 1 Old Input,旧输入是指达到此状态之前的有效输入时钟。

对于所有其他状态,输出变为 INIT_OUT 的值并且不切换。尽管 S 和 CE 都用于选择所需的输出,但建议仅使用 S 进行无毛刺切换。 这是因为当使用 CE 切换时钟时,时钟选择的变化可能比使用 S 时更快。CE 引脚的建立/保持时间违规会导致时钟输出出现毛刺。 另一方面,使用 S 引脚允许您在两个时钟输入之间切换,而无需考虑建立/保持时间。 因此,使用 S 切换时钟不会导致毛刺。CE 引脚旨在允许与以前的 Virtex 架构向后兼容。

时序模型

下图中的时序图说明了使用 BUFGCTRL 原语的各种时钟切换条件。 使用速度规范最好找到确切的时序。

  • 在时间事件 1 之前,输出 O 使用输入 I0。
  • 在时间 TBCCCK_CE,在时间事件 1 的上升沿之前,CE0 和 S0 都被置为低电平。 大约在同一时间,CE1 和 S1 都被断言为高电平。
  • 在时间事件 3 之后的时间 TBCCKO_O,输出 O 使用输入 I1。 这发生在 I0 的高到低转换(事件 2)之后,然后是 I1 的高到低的转换。
  • 在时间事件4,IGNORE1 被断言。
  • 在时间事件5,CE0 和S0 被置为高电平,而CE1 和S1 被置低为低电平。
  • 在时间事件6的 T BCCKO_O之后,输出 O 已从 I1 切换到 I0,而不需要 I1 的高到低转换。

BUFGCTRL 的其他功能包括:

  • I0 和I1 输入的预选是在配置之后但在设备操作之前进行的。
  • 配置后的初始输出可以选择为高或低。
  • 仅使用 CE0 和 CE1 选择时钟(S0 和 S1 连接为高电平)可以更改时钟选择,而无需等待先前选择的时钟从高电平转换为低电平。

BUFGCTRL Attributes

Attribute Name Description Possible Values
INIT_OUT 配置后将 BUFGCTRL 输出初始化为指定值。 设置上升沿或下降沿行为。 更改时钟选择时设置输出电平。 0 (default), 1
PRESELECT_I0 如果为 TRUE,BUFGCTRL 输出将在配置后使用 I0 输入 FALSE (default), TRUE
PRESELECT_I1 如果为 TRUE,BUFGCTRL 输出将在配置后使用 I1 输入 FALSE (default), TRUE

两个 PRESELECT 属性不能同时为 TRUE。

BUFG

BUFG 是一个时钟缓冲器,具有一个时钟输入和一个时钟输出。 该原语基于 BUFGCTRL,其中一些引脚连接到逻辑高电平或低电平。 下图说明了 BUFG 和 BUFGCTRL 的关系。 LOC 约束可用于手动放置 BUFG 位置。

输出与输入之间的延时,如下图中的时序图所示。

BUFGCE and BUFGCE_1

与 BUFG 不同,BUFGCE 是一个时钟缓冲器,具有一个时钟输入、一个时钟输出和一个时钟使能线。 该原语基于 BUFGCTRL,其中一些引脚连接到逻辑高电平或低电平。 下图说明了 BUFGCE 和 BUFGCTRL 的关系。 LOC 约束可用于手动放置 BUFGCE 和 BUFGCE_1 位置。

BUFGCE 的切换条件与 BUFGCTRL 类似。 如果 CE 输入在输入时钟上升沿之前为低电平,则后续时钟脉冲不会通过时钟缓冲器,并且输出保持低电平。 在输入时钟高脉冲期间 CE 的任何电平变化在时钟转换为低电平之前都没有影响。 当时钟被禁用时,输出保持低电平。 但是,当时钟被禁用时,它会完成时钟高脉冲。

由于时钟使能线使用 BUFGCTRL 的 CE 引脚,因此选择信号必须满足建立时间要求。 违反此设置时间可能会导致故障。 下图显示了 BUFGCE 的时序图。

BUFGCE_1 与 BUFGCE 类似,只是其切换条件不同。 如果 CE 输入在输入下降时钟沿之前为低电平,则后续时钟脉冲不会通过时钟缓冲器,并且输出保持高电平。 在输入时钟低脉冲期间 CE 的任何电平变化都不会产生影响,直到时钟转换为高电平。 当时钟被禁用时,输出保持高电平。 但是,当时钟被禁用时,它会完成时钟低电平脉冲。

下图说明了 BUFGCE_1 的时序图。

BUFGMUX 和 BUFGMUX_1

BUFGMUX 是一个时钟缓冲器,具有两个时钟输入、一个时钟输出和一条选择线。 该原语基于 BUFGCTRL,其中一些引脚连接到逻辑高电平或低电平。
下图说明了 BUFGMUX 和 BUFGCTRL 的关系。 LOC 约束可用于手动放置 BUFGMUX 和 BUFGCTRL 位置。

由于 BUFGMUX 使用 CE 管脚作为选择管脚,因此在使用选择时,必须满足建立时间要求。 违反此设置时间可能会导致故障。

BUFGMUX 的开关条件与 BUFGCTRL 上的 CE 引脚相同。下图说明了 BUFGMUX 的时序图。

  • 当前时钟为 I0。
  • S 被激活为高电平。
  • 如果 I0 当前为高电平,多路复用器等待 I0 将低电平置低。
  • 一旦 I0 为低,多路复用器输出保持低,直到 I1转换为高到低。
  • 当 I1 从高电平变为低电平时,输出切换到I1。
  • 如果满足建立/保持时间,则输出上不会出现毛刺或短脉冲。

BUFGMUX_1 对上升沿敏感并在输入切换之前保持在高电平。 下图显示了 BUFGMUX_1 的时序图。 LOC 约束可用于手动放置 BUFGMUX 和 BUFGMUX_1 位置。

  • 当前时钟为 I0。
  • S 被激活为高电平。
  • 如果I0 当前为低电平,多路复用器等待I0 被置为高电平。
  • 一旦I0 为高电平,多路复用器输出保持高电平,直到I1 由低电平变为高电平。
  • 当I1 从低电平变为高电平时,输出切换到I1。
  • 如果满足建立/保持时间,则输出上不会出现毛刺或短脉冲。
Attribute Name Description Possible Values
CLK_SEL_TYPE 指定同步或异步时钟切换。 SYNC (default), ASYNC

BUFGMUX_CTRL

BUFGMUX_CTRL 替换了 BUFGMUX_VIRTEX4 传统原语。BUFGMUX_CTRL 是具有两个时钟输入、一个时钟输出和一条选择线的时钟缓冲器。 该原语基于 BUFGCTRL,其中一些引脚连接到逻辑高电平或低电平。 下图说明了 BUFGMUX_CTRL 和 BUFGCTRL 的关系。

BUFGMUX_CTRL 使用 S 引脚作为选择引脚。 S 可以随时切换而不会造成故障。 S 上的建立/保持时间用于确定输出是否会在切换到新时钟之前通过先前选择的时钟的额外脉冲。 如果 S 发生如下图所示的变化,在建立时间 TBCCCK_S 之前和 I0 从高电平转换到低电平之前,则输出不会传递额外的 I0 脉冲。 如果 S 在 S 的保持时间之后发生变化,则输出将传递一个额外的脉冲。 如果 S 违反建立/保持要求,输出可能会通过额外的脉冲,但不会出现毛刺。 无论如何,输出将在较慢时钟的三个时钟周期内更改为新时钟。S0 和 S1 的建立/保持要求与时钟下降沿有关,而不是 CE0 和 CE1 的上升沿。

BUFGMUX_CTRL 的切换条件与 BUFGCTRL 的 S 引脚相同。下图显示了 BUFGMUX_CTRL 的时序图。

BUFGMUX_CTRL 原语的其他功能包括:

  • 配置后预选 I0 和 I1 输入。
  • 初始输出可在配置后选择为高或低。

其他使用模型

使用 BUFGCTRL 的异步 MUX

在某些情况下,应用程序需要在时钟输入之间立即切换或绕过 BUFGCTRL 的边沿灵敏度。 例如,当时钟输入之一不再切换时。 如果发生这种情况,时钟输出将不具有正确的切换条件,因为 BUFGCTRL 从未检测到时钟沿。 本案例使用异步 MUX。 下图显示了带有 BUFGCTRL 设计示例的异步 MUX。

下图显示了异步 MUX 时序图。

  • 当前时钟来自 I0。
  • S 被激活为高电平。
  • 时钟输出立即切换到I1。
  • 当忽略信号置为高电平时,毛刺保护被禁用。

带时钟使能的 BUFGMUX_CTRL

带时钟使能的 BUFGMUX_CTRL BUFGCTRL 配置允许您在输入时钟输入之间进行选择。 如果需要,可以使用时钟使能来禁用输出。 下图显示了 BUFGCTRL 使用设计示例。

下图显示了时序图。

  • 在时间事件 1,输出 O 使用输入 I0。
  • 在时间事件2 之前,S 被断言为高电平。
  • 在时间事件 2 之后的时间 TBCCKO_O,输出 O 使用输入 I1。 这发生在 I0 的高到低转换以及 I1 的高到低转换完成之后。
  • 在时间事件 3 之前的时间 TBCCCK_CE,CE 被断言为低电平。 为避免任何输出时钟毛刺,时钟输出切换为低电平并保持在低电平,直到完成 I1 的高到低转换。

reference

  1. UG472

FPGA - 7系列 FPGA内部结构之Clocking -02- 时钟布线资源相关推荐

  1. FPGA - 7系列 FPGA内部结构之Clocking -03- 时钟管理模块(CMT)

    前言 本文节选UG472的第三章,进行整理翻译,用于介绍7系列 FPGA的时钟管理模块的内部结构以及相关用法.本文介绍的CMT在FPGA开发设计中是比较重要的一个内容,因此文章篇幅也相对较长. 文章目 ...

  2. FPGA - 7系列 FPGA内部结构之CLB -01- CLB资源概述

    前言 本文节选UG474进行整理翻译,用于对CLB进行简单介绍,同时简单介绍了下针对逻辑资源设计的推荐流程. CLB简介 7 系列可配置逻辑块 (CLB) 提供先进的高性能 FPGA 逻辑: 真6 输 ...

  3. FPGA - 7系列 FPGA内部结构之Memory Resources -03- 内置纠错功能

    内置纠错概述 使用 72 位宽 RAM 中的额外 8 位,简单双端口模式下的 RAMB36E1 可配置为具有内置汉明码纠错功能的单个 512 x 64 RAM. 该操作是透明的. 在每次写操作期间会生 ...

  4. MIPI摄像头工程=7系列FPGA + OV5640(MIPI) + 15 分钟 + VITIS

    项目使用东西 硬件 Spartan-7 SP701 FPGA 7系列FPGA+电阻网络实现的MIPI接口 OV5640 MIPI接口 软件 AMD Vivado 2020 版本以上 AMD Vitis ...

  5. Virtex-6系列FPGA的CLB

    Virtex-6系列FPGA Virtex-6是Xilinx 在2009年2月推出的新一代旗舰产品,采用了第三代Xilinx ASMBL架构.40nm 工艺,提供多达760000 个逻辑单元,为业界成 ...

  6. Xilinx FPGA资源解析与使用系列——Transceiver(一)参考时钟解析

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(一)参考时钟解析 前言 IP核的部分设置 Quad 的定义是什么? ...

  7. Xilinx-7系列FPGA架构—— CLB

    xilinx7系列FPGA主要包括:Spartan®-7/Artix®-7/Kintex®-7/Virtex®-7.其性能/密度/价格也随着系列的不同而提升.其中以Virtex-7有着极高的系统性能和 ...

  8. 6,xilinx 7系列FPGA理论篇——时钟操作法则

    上一篇咱们介绍了7系列FPGA的时钟区域的内部结构,本篇咱们接着介绍如何实际操作时钟.不说其它的,直接先上两张图,大家如果能看懂这两张图,那么就不用浪费时间往下看了..... 1,MRCC:被外部差分 ...

  9. FPGA-Xilinx 7系列FPGA DDR3硬件设计规则

    Xilinx 7系列FPGA DDR3硬件设计规则 引言:本文我们介绍Xilinx 7系列FPGA DDR3硬件设计规则及约束,包括Bank选择.管脚位置约束.管脚分配.端接.I/O标准和走线长度. ...

最新文章

  1. RabbitMQ 3.6 安装
  2. 声明和定义结构体需要注意的问题
  3. vscode配置live-server转发代理
  4. python排序算法实现_排序算法整理(Python实现)
  5. QWidget中的ChildAt()函数使用试验
  6. 驱动精灵安装的流氓软件如何卸载、及删除驱动精灵
  7. pscc2021绿色免安装完整版
  8. SpringBoot 整合 Elasticsearch 实现海量级数据搜索
  9. IDEA——问题汇总
  10. android模拟power键,android 发送模拟按键
  11. 瑞格科技IPO被终止:曾拟募资5.6亿 江振翔三兄弟为实控人
  12. 使用SqlConnection.connectionString连接数据库
  13. c语言非布拉数前20个,C语言数据类型转换
  14. Matlab gui大地坐标系-地心地固坐标系-站心坐标系坐标变换
  15. “双指针”法解决链表问题
  16. git与Coding仓库代码创建
  17. 聚人才创未来 | 拓保软件荣获“2020年度最具发展潜力雇主”
  18. 挑战杯课外学术科技作品竞赛如何冲入国赛
  19. 软件工程师必知之事 —— 如何定义自己的职业路线?
  20. IOT超低功耗设计应用笔记

热门文章

  1. SonarWiz7 读取侧扫声呐数据
  2. 2022年Vue最常见的面试题以及填空题(面试必问)
  3. 天空卫士杨明非:数据驱动安全,技术智慧赋能
  4. 网络下载器 EagleGet v2.0.4.60 Full 绿色便携版
  5. 浅析决策树的生长和剪枝
  6. Lamdba 和 Stream
  7. 如何用分区助手来进行分区U盘或外接硬盘【教你两步搞定】
  8. 推荐几种简洁美观的博客背景效果
  9. 迅雷 会员 VIP6 不定期更新
  10. [RK3288][Android6.0] WiFi之wpa_supplicant扫描过程