环保局网站建设申请,顶尖设计,网站运营方案设计,wordpress文章 模板FPGA时钟系列文章总览#xff1a;FPGA原理与结构#xff08;14#xff09;——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564
一、概述 全局时钟是 FPGA 中的一种专用互连网络#xff0c;旨在将时钟信号分配到 FPGA 内各种资源的时钟输入处。这种设计… FPGA时钟系列文章总览FPGA原理与结构14——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564
一、概述 全局时钟是 FPGA 中的一种专用互连网络旨在将时钟信号分配到 FPGA 内各种资源的时钟输入处。这种设计考虑了时钟信号在整个芯片上的传播确保了低偏斜low skew、低占空比失真、低功耗以及改进的抖动容忍度。全局时钟网络还支持非常高频率的信号满足现代高性能电子系统的需求。
1.1 全局时钟网络的设计特点 低偏斜通过优化时钟信号在 FPGA 内部的传播路径全局时钟网络能够最小化时钟到达不同资源的时间差异这对于保证同步操作和提高系统性能至关重要。 低占空比失真全局时钟网络保证时钟信号的上升沿和下降沿均匀分布避免时钟信号的占空比发生变化这有助于维持稳定的时钟周期和提高电路的可靠性。 低功耗通过减少时钟网络中的电容负载和优化信号传输路径全局时钟网络设计力求降低功耗这对于发热控制和提升电池驱动设备的续航能力尤为重要。 改进的抖动容忍度全局时钟网络通过减少信号抖动提高时钟信号的稳定性从而支持高精度的时钟定时需求。 支持高频信号全局时钟网络被设计来支持非常高频率的信号满足了现代 FPGA 应用中对快速数据处理和高速通信的需求。 1.2 对全局时钟资源的理解 理解全局时钟的信号路径有助于深入认识 FPGA 中的各种全局时钟资源包括但不限于 BUFG全局时钟缓冲器、PLL相位锁定环和 MMCM混合模式时钟管理器。这些资源共同工作提供精确的时钟管理功能包括时钟生成、分频、选择和门控等。 全局时钟资源的有效利用是 FPGA 设计中的关键环节它不仅影响电路的性能和稳定性还涉及到系统的功耗和成本。因此设计师需要根据应用的具体需求仔细规划时钟网络以实现最优的性能和资源利用效率。
二、时钟树和网——GCLK 在 Xilinx 的 7 系列 FPGA 架构中时钟树的设计专注于低偏斜和低功耗运作。这种设计通过断开任何未使用的分支来进一步降低功耗确保只有需要的时钟信号路径被激活。此外时钟树还可以用于驱动逻辑资源例如重置或时钟使能信号这在需要驱动高扇出/负载网络的应用中尤其有用。 7 系列 FPGA 的一个显著特点是全局时钟线的引脚访问不限于逻辑资源的时钟引脚。全局时钟线还可以驱动可配置逻辑块CLB中的其他引脚例如控制引脚 SR和 CE时钟使能。这提供了额外的灵活性允许设计师利用高性能的全局时钟网络来实现快速信号连接和管理大负载/扇出需求。
三、时钟区域 7系列 FPGA 设备通过使用时钟区域改进了时钟分配机制。时钟区域的设计使得时钟信号的分配更为高效和灵活有助于提高整体系统的性能和稳定性。以下是7系列设备时钟分配机制的关键特点
3.1 时钟区域与全局时钟域 3.1.1 时钟区域Clock Regions 时钟区域是 FPGA 内部用于划分和管理时钟信号的物理区域。在 Xilinx 7 系列 FPGA 中一个时钟区域定义为包含一定数量的可配置逻辑块CLBs的区域通常跨越 FPGA 设备的一半宽度并向上和向下延伸多个25个 CLB 行。时钟区域的主要目的是优化和控制时钟信号在特定区域内的分配以减少时钟偏斜和延迟提高设计的稳定性和性能。 时钟区域的定义每个时钟区域可以拥有多达12个全局时钟域。这些全局时钟域能够被任意组合中的32个全局时钟缓冲器驱动这些缓冲器在单片设备或超大规模集成SLRSuper Logic Region中可用。 时钟区域的尺寸时钟区域的尺寸固定为50个CLB块高50个I/O块并跨越芯片的左侧或右侧。这种设计确保了时钟信号可以有效地覆盖特定区域同时减少信号传播的延迟和偏斜。 3.1.2 全局时钟域Global Clock Domains 全局时钟域指的是 FPGA 设计中被全局时钟信号覆盖的逻辑部分。全局时钟信号通常由全局时钟缓冲器如 BUFG分发旨在提供低偏斜、高稳定性的时钟源给 FPGA 设计中的各个模块。一个全局时钟域可以跨越多个时钟区域支持设计中不同功能模块的同步运作。
3.2 设备分割与时钟主干 时钟主干7系列设备中的时钟背骨将设备分割为左侧或右侧。重要的是这个主干并不位于芯片的中心这种设计有助于优化时钟信号在芯片上的分布和管理。 时钟区域数量通过固定时钟区域的尺寸更大的7系列设备可以拥有更多的时钟区域。7系列 FPGA 提供1到24个时钟区域不同型号的设备提供的时钟区域数量不同以满足不同规模设计的需求。 总之7系列 FPGA 设备的时钟区域机制为时钟信号的高效分配和管理提供了强大的支持这对于满足现代高性能电子系统的需求至关重要。通过充分利用这一机制设计师可以优化他们的时钟网络设计实现更高的系统性能和稳定性。
四、全局时钟缓冲器 在7系列的FPGA中有着多达32个全局时钟缓冲器BUFG。32个BUFG被划分成两组每组16个BUFG分别位于设备的顶部和底部。 设备上半部分的 CMT 只能驱动上半部的 BUFG而下半部分的 CMT 只能驱动下半部的 BUFG。同样只有同一半设备内的 BUFG 才能作为反馈信号提供给同一半设备内的 CMT。这种设计确保了时钟网络在物理布局上的优化有助于降低时钟传播延迟和偏斜。 一个CCClock-Capableinput 可以直接连接到同一半设备中上下划分的任何全局时钟缓冲器。每对差分时钟引脚都可以连接到PCB上的差分或单端时钟。Xilinx 7系列 FPGA 的CC input 通过存在于时钟主干的垂直时钟网络间接驱动全局时钟缓冲器BUFG。任何直接连接到BUFG的资源例如GTX收发器都有顶部/底部的限制。例如顶部的每个MMCM只能驱动位于设备顶部的16个BUFG。同样底部的MMCM驱动底部的16个BUFG。 在7系列设备中所有全局时钟缓冲器可以驱动所有时钟区域。然而在单个时钟区域内只能驱动12种不同的时钟也就是一个时钟区域最多包含12个全局时钟域。时钟区域包括50个CLBs是时钟树的一部分其中25行CLB在上25行CLB在下横跨设备的一半。 时钟缓冲器被设计为可以配置为同步或异步无抖动的2:1多路复用器具有两个时钟输入。存在专用路径路由资源用于BUFG级联以允许选择两个以上的时钟输入。 在 Xilinx 7 系列 FPGA 的时钟架构中BUFGCTRL 多路复用器及其所有衍生形式能够在设备上半部和下半部各自的16个时钟缓冲器组内相邻的时钟缓冲器之间进行级联有效地在上半部和下半部分别创建一个包含16个 BUFGMUXBUFGCTRL 多路复用器的环形网络。这种设计极大地增加了时钟网络的灵活性和扩展性允许设计师构建复杂的时钟选择和分配方案。 BUFGCTRL 多路复用器的级联 级联功能通过将一个 BUFGCTRL 的输出连接到另一个 BUFGCTRL 的输入可以构建一个连续的时钟路径这允许从多个时钟源中选择时钟信号同时最小化时钟传播延迟和偏斜。 环形网络在设备的上半部和下半部这些 BUFGCTRL 多路复用器可以形成两个独立的环形网络每个网络包含16个 BUFGMUX。这种环形结构提供了强大的时钟选择和分配能力同时保持了低功耗和高效率。 应用这种级联和环形网络的设计非常适合于需要动态选择不同时钟源的应用例如在不同操作模式之间切换或实现时钟门控逻辑。 五、全局时钟缓冲器原语 原语总表如下所示 在 Xilinx FPGA 设计中上面所有的时钟原语primitives都是基于 BUFGCTRL 的软件预设衍生而来。BUFGCTRL 是一个非常灵活的全局时钟缓冲器控制原语提供了广泛的功能包括时钟选择、时钟门控以及时钟分频等。通过利用这些软件预设设计师可以实现复杂的时钟管理策略优化时钟网络的性能和资源利用率。
5.1 BUFGCTRL BUFGCTRL 原语能够在两个异步时钟之间进行切换所有其他的全局时钟缓冲区原语都来自于BUFGCTRL的某些配置。 BUFGCTRL 是 Xilinx FPGA 中一个非常强大且灵活的全局时钟缓冲器控制原语它允许设计师基于多种控制信号来选择和管理时钟信号。具有四条选择线S0, S1, CE0, 和 CE1以及两条额外的控制线IGNORE0 和 IGNORE1BUFGCTRL 提供了对两个输入 I0 和 I1 高度的控制能力。
5.1.1 控制线的作用 S0 和 S1这两条线用于选择输入I0 或 I1作为 BUFGCTRL 的输出。通过不同的 S0 和 S1 组合设计师可以实现时钟输入的动态选择。 CE0 和 CE1时钟使能Clock Enable线用于控制是否使能对应的输入 I0 和 I1。当 CE 线被置为有效通常是高电平时对应的时钟输入被允许通过到输出当 CE 线为无效时对应的输入被禁用。 IGNORE0 和 IGNORE1这两条控制线提供了对 BUFGCTRL 行为的额外控制。通过设置 IGNORE 线设计师可以指示 BUFGCTRL 忽略对应的 CE 线的状态这在某些特定的时钟管理策略中非常有用。 5.2 BUFG BUFG 是 Xilinx FPGA 中的一种基本时钟缓冲器原语它具有一个时钟输入和一个时钟输出。这个原语基于 BUFGCTRL 设计但是其一些引脚被固定连接到逻辑高High或逻辑低Low简化了其使用方式使其成为实现单一时钟源分配的理想选择。通过将某些控制信号固定为高或低BUFG 能够以更简单的配置满足大多数常见的时钟缓冲需求。 5.3 BUFGCE and BUFGCE_1 BUFGCE 是一种在 Xilinx FPGA 设计中用于时钟管理的原语与 BUFG 类似但它增加了一个时钟使能CE线。这使得设计师能够根据需要动态地使能或禁用时钟信号提供了对时钟信号更精细的控制从而优化系统性能和功耗。 BUFGCE_1 是一种特殊的全局时钟缓冲器类似于 BUFGCE但其在时钟使能CE控制和时钟信号切换条件方面有所不同。这种差异主要体现在对 CE 输入信号的响应以及时钟信号的输出行为上。
5.3.1 BUFGCE
通用行为当 CE 输入为高逻辑高时BUFGCE 允许时钟信号从输入传递到输出。当 CE 输入为低逻辑低时时钟信号被阻塞不会传递到输出。输出状态在 CE 为低时即时钟信号被禁用时输出的具体状态高或低取决于时钟信号被禁用时的最后状态。
5.3.2 BUFGCE_1
特殊的切换条件BUFGCE_1 的区别在于如果 CE 输入在即将到来的下降时钟边沿之前为低则接下来的时钟脉冲不会通过时钟缓冲器输出保持高。CE 输入的变化在即将到来的时钟低脉冲期间CE 的任何电平变化都不会产生效果直到时钟信号向高跳变。这意味着即使 CE 在时钟低脉冲期间变高输出也会保持高状态直到下一个时钟高脉冲的开始。时钟禁用时的输出当时钟被禁用时输出保持高状态。然而如果在禁用时钟的过程中BUFGCE_1 会完成时钟的低脉冲确保时钟信号的完整性。
5.4 BUFGMUX and BUFGMUX_1 BUFGMUX 是 Xilinx FPGA 中的一种时钟缓冲器原语它具备两个时钟输入、一个时钟输出以及一个选择线。这种原语是基于 BUFGCTRL 设计的通过将某些引脚固定连接到逻辑高High或逻辑低Low实现了更专用的功能。BUFGMUX 允许设计师根据选择线的状态动态选择两个时钟输入中的一个来传递到输出从而为设计提供了更大的灵活性和时钟管理能力。 在 Xilinx FPGA 设计中BUFGMUX 和 BUFGMUX_1 都是用于时钟信号选择的全局时钟缓冲器原语但它们在时钟选择行为和逻辑上存在细微差异。这些差异影响了它们在特定设计场景中的应用方式。
5.4.1 BUFGMUX
基本功能BUFGMUX 允许设计师根据选择信号S的状态动态选择两个输入时钟I0 和 I1中的一个作为输出。选择逻辑通常当选择信号 S 为高逻辑高时I1 被选为输出当 S 为低逻辑低时I0 被选为输出。
5.4.2 BUFGMUX_1
特殊行为BUFGMUX_1 与 BUFGMUX 类似提供两个时钟输入和一个选择线但在具体的时钟选择和切换逻辑上可能有所不同。具体差异可能涉及到对选择信号变化的响应时间、时钟切换的同步/异步行为等方面依据不同的 FPGA 版本和设计需求可能有所调整。应用场景BUFGMUX_1 的这些特殊行为使其在需要对时钟切换时机或行为有特殊要求的应用中更为适用。 5.5 BUFGMUX_CTRL BUFGMUX_CTRL是一个更新的时钟缓冲器原语它取代了旧的BUFGMUX_VIRTEX4 原语。这表明 Xilinx 在其 FPGA 设计工具和库中进行了更新以提供更加灵活和强大的时钟管理能力。 BUFGMUX_CTRL继承了BUFGMUX的基本功能并在此基础上增加了更多控制选项使其更加符合现代 FPGA 设计的需求。 BUFGMUX_CTRL 的特性如下 两个时钟输入提供两个时钟输入端口I0 和 I1允许连接两个独立的时钟源。一个时钟输出无论选择哪个输入BUFGMUX_CTRL 都将所选的时钟信号输出到其单一的输出端口。选择线通过一个选择线S设计师可以控制是将 I0 或 I1 的时钟信号输出。这提供了动态选择时钟信号的能力适用于需要在运行时切换不同操作模式的设计。基于 BUFGCTRLBUFGMUX_CTRL 原语是基于 BUFGCTRL 实现的通过将 BUFGCTRL 的某些引脚固定连接到逻辑高High或逻辑低Low实现了时钟选择功能。