FPGA的时钟资源

2021-09-18 15:13:18 浏览数 (1)

本文将回顾常见的 FPGA 资源,这些资源使我们能够在整个系统中有效地生成和分配时钟信号。 在许多情况下,我们需要生成新的时钟信号并在整个系统中有效地分配它们。现代 FPGA 具有专用的时钟管理模块,使我们能够执行这两项任务。 在本文中,我们将首先简要回顾有效时钟分配和新时钟生成的问题。然后,我们将看到现代 FPGA 的时钟管理模块可以轻松满足这两个设计要求。

1 高效的时钟分配

即使在小型数字设计中,时钟信号也可能分布到整个系统的数百个时钟元件。这些高扇出时钟信号负责同步系统的不同子系统或组件。这就是为什么我们需要特别注意时钟网络不同路径引入的延迟。 例如,考虑将时钟信号从节点 A 分配到节点 B 和 C,如下面的图 1 所示。在该图中,时钟信号进入FPGA,经过缓冲器(图中的三角形),然后到达节点B的寄存器。该路径具有固有延迟,在波形中用Δb表示。为了将时钟从 A 分配到 C,我们可以使用 PCB 走线而不通过 FPGA,但在图中,FPGA 中分配的时钟用于“板上的其他设备”。该路径的延迟由Δc表示。由于 Δb 和 Δc 通常不相等,因此节点 B 的寄存器和节点 C 的设备会看到略有不同的时钟;应该具有对齐边沿的相同时钟之间的这种固定时间偏移称为时钟偏差。我们可以看到,数字设计中的一个严重问题是以尽可能小的时钟偏差在系统中分配高扇出时钟信号。

2 生成新的时钟信号

FPGA 的一个理想特性可以是修改给定时钟信号以根据系统要求生成新时钟的能力。例如,假设您设计了一块带有 FPGA 的电路板。假设 50 MHz 时钟对电路板来说足够了,但在 FPGA 中,您需要 200 MHz 时钟来执行特定算法。如果您能以某种方式从板上的 50 MHz 时钟生成 200 MHz 时钟,您就可以避免在您的系统中使用两个不同的时钟源,而且您也不必在高于所需频率的情况下运行电路板。如果我们回想一些数字信号处理 (DSP) 应用程序是多速率的并且在算法的不同部分需要不同的时钟频率,我们就可以确定时钟合成的另一个应用程序。 现在,让我们看看 FPGA 的时钟相关资源,这些资源使我们能够生成新的时钟信号并将其分配到整个系统中。

3FPGA时钟管理资源

今天的 FPGA 集成了强大的时钟管理模块,以促进设计过程并降低成本。我们将这些嵌入式时钟管理模块称为 CMB。不同的供应商使用不同的术语来指代他们的 CMB。例如,Xilinx 使用时钟管理瓦片 (CMT) 或数字时钟管理器 (DCM),Intel 使用众所周知的术语锁相环 (PLL),Microsemi 使用时钟调节电路。 CMB 可以通过执行时钟倍频和分频来生成新的时钟信号。他们可能能够将可编程相移应用于生成的时钟,甚至可以调整时钟的占空比。CMB 不仅可以消除分布在 FPGA 内的时钟信号,还可以消除分布在 FPGA 外到电路板上其他设备的时钟(例如,到达图 1 中节点 C 的时钟)。 可编程相移功能的一种应用是将时钟信号与输入数据同步。当我们处理数字信号时,我们必须在数据稳定的时刻(最后一次数据转换之后和下一次转换之前)对信号进行采样。这就是为什么一些 FPGA 为生成的时钟的精细相移调整提供动态机制的原因。例如,Xilinx Virtex II Pro 的 CMB 可以应用 1/256 时钟周期的相移。如果没有这种相移能力,时钟可能不会落在数据眼图的中心。 具有占空比调整功能的 CMB 在需要占空比为 50% 的时钟信号的应用中很有帮助。示例是高速通信,例如 LVDS 和双数据速率 (DDR) 接口。如果时钟占空比不是 50%,我们可以使用 CMB 的占空比校正功能来重塑时钟信号,使其具有 50% 的占空比。 为了获得这些特性,FPGA 使用基于锁相环 (PLL) 或延迟锁定环 (DLL) 的 CMB。除了 PLL 和 DLL,还有另一组非常重要的时钟相关 FPGA 资源:用于在 FPGA 中分配时钟信号的专用缓冲器和路由。这些专用缓冲器和路由使我们能够拥有一个低偏斜的时钟网络。 在本文的其余部分,我们将首先回顾使用 PLL/DLL 实现 CMB 的基本概念。然后,我们将了解英特尔 FPGA 所采用的低偏移时钟网络。

4基于 DLL 的时钟校正

图 2 显示了用于补偿时钟分配延迟的 DLL 的基本框图。

在这个图中,CLKIN 是我们打算通过“时钟分配网络”分配的输入时钟。顾名思义,“可变延迟线”模块为 CLKIN 引入了一个可调延迟并产生 CLKOUT。延迟量由“控制”逻辑决定。“控制”块监控其输入并改变延迟,以便 CLKIN 和 CLKFB 两个输入的上升沿对齐。通过这种方式,电路补偿了时钟分配网络中的延迟,理论上我们可以消除时钟分配的偏差。

请注意,“可变延迟线”不能对 CLKIN 应用负延迟来补偿“时钟分配网络”的固有延迟。那么,图2的框图如何消除时钟偏差呢?关键在于时钟信号 CLKIN 是周期性的。为了阐明这一点,让我们考虑图 1 的时钟偏移示例。从 A 到 B 的路径具有 Δb 延迟,因此,我们需要将 -Δb 延迟(即负延迟)应用于节点 A 的时钟然后通过延迟 Δb 的路径分发它。我们如何规避造成负延迟的问题?请记住,时钟信号是一个周期性波形。假设周期为 T 。我们知道一个周期为 T 的周期函数 f(t) 满足 f(t)=f(t T) 应用负延迟 -Δb,我们有 f(t−Δb)=f(t T−Δb) 因此,我们可以应用 T-Δb 的正延迟,而不是应用负延迟 -Δb。如下图 3 所示;请注意,图 3 说明了 DLL 应用于原始时钟信号的延迟,而图 1 显示了由从 A 到 B 以及从 A 到 C 的路径引起的延迟。

5基于 PLL 的时钟去偏斜

我们可以使用 PLL 来有效消除时钟分配网络的延迟,而不是使用 DLL。如图 4 所示。

在这种情况下,使用“电压控制振荡器”代替“可变延迟线”。反馈回路调整振荡器的频率,使两个时钟信号 CLKIN 和 CLKFB 具有对齐的边沿。 我们可以很容易地稳定一个 DLL 的反馈回路;然而,对于 PLL,情况并非如此,因为时钟分配网络将在 PLL 的反馈环路内。这就是为什么基于 DLL 的结构更容易适用于时钟校正应用程序的原因。另一方面,在合成新的时钟信号时,PLL 更加灵活。 根据我们的讨论,我们可以使用 FPGA 的 CLB 来消除图 1 的时钟分布偏移,如下面图 5 的简化框图所示。请注意,CMB 不仅可以对分布在 FPGA 内的时钟信号进行去偏斜,还可以对进入板上其他设备的时钟进行去偏斜。

我们看到 CMB 可用于合成新的时钟信号。现在,让我们看看另一组与时钟相关的 FPGA 资源:可用于在 FPGA 中分配时钟信号的专用缓冲器和路由。

6与时钟相关的缓冲器和路由

这些资源负责分配具有低偏斜的高扇出时钟信号。浏览这些缓冲区和路由的细节可能会让人不知所措,但我们将简要回顾一些重要的概念。为了以相等的传播延迟将时钟信号分配到芯片的所有部分,我们可以使用一种称为 H 树的特殊路由形式。您可以在图 6 中看到一个示例。

您可以轻松验证从 CLK-in 到每个矩形(代表时钟元素)是否有类似的路径。因此,理论上,所有时钟元件将看到相同的时钟信号。图 7 显示了一些英特尔 FPGA 用于分配全局时钟信号 (GCLK) 的 H 树。

GCLK 在整个器件中驱动,用作功能块的低偏移时钟源,例如自适应逻辑模块 (ALM)、数字信号处理 (DSP) 子电路、嵌入式存储器和 PLL。 除了 GCLK,英特尔 FPGA 中还有区域时钟 (RCLK) 网络。如图 8 所示,这些 RCLK 仅被驱动到芯片的一个象限中。

Intel 设备还具有分布在芯片较小区域内的外围时钟 (PCLK) 网络。下面的图 9 显示了一个示例。

现在,覆盖所有这些网络,我们得到如图 10 所示的网络。

如图 8 和 9 所示,FPGA 具有仅分布在芯片的一个区域中的专用时钟路由。这些被称为时钟区域。请注意,不同的设备具有不同的时钟区域。还要注意,我们需要一些缓冲器来沿我们上面讨论的专用路径有效地分配时钟信号。您可以在器件数据表中找到详细信息,但图 11 显示了一个示例。该图显示了 Xilinx 7 系列 FPGA 的一个时钟区域。BUFG、BUFH、BUFR是三个时钟相关的缓冲器,如图所示。

0 人点赞