1.3 时钟网络和相位锁相环
本节将介绍 Cyclone 10 GX 器件内部的时钟网络和相位锁相环(Phase-Locked Loop,PLL)。
1.3.1 时钟网络类型
Cyclone 10 GX器件内包含以下时钟网络,它们按层次化结构组织。
1.全局时钟(Global Clock,GCLK)网络
GCLK 网络用于功能块(比如,ALM、DSP、嵌入存储器和 PLL)的低偏移时钟源。Cyclone 10 GX器件中的I/O元件(I/O Element,IOE)和内部逻辑也能驱动GCLK创建内部生成的全局时钟与其他高扇出信号,如同步或异步清除和时钟使能信号。
Cyclone 10 GX器件提供GCLK可以穿越整个器件,如图1.35所示为10CX220YU484 E5G 的全局时钟网络。GCLK 涵盖器件中的每个 SCLK 主干区域,如图 1.36 所示为10CX220YU484E5G 的主干时钟网络。每个 GCLK 都可以通过符号 GCLK 网络图中指示的方向访问。
通过将时钟输入到这些专用时钟引脚中的一个或 Quartus 分配工具分配全局布线,就可以利用用于时钟信号的可用专用布线资源。
图1.35 10CX220YU484E5G的全局时钟网络
图1.36 10CX220YU484E5G的主干时钟网络
在专用集成电路(Application Specific Integrated Circuit,ASIC)设计中,设计者必须平衡分布于器件的时钟延迟。由于Intel FPGA提供了器件宽度的全局时钟布线资源和专用集成电路的输入,无须手工平衡时钟网络上的延迟。
将设计中的时钟数量限制到FPGA内可用的专用全局时钟资源范围内。时钟馈送不使用全局布线的多个位置,可能使器件会出现时钟偏移从而导致时序问题。此外,使用组合逻辑产生内部时钟也会增加时钟路径上的延迟。时钟线上的延迟可能导致时钟偏移大于两个寄存器之间的数据路径长度。如果时钟偏移大于数据延迟,则违反寄存器的时序参数(如保持时间要求),导致设计运行不正确。
FPGA 提供的低偏移全局布线资源用以分配高扇出的信号。这些资源有助于实现具有多个时钟域的大型设计。
很多大型 FPGA 器件提供专用的全局时钟网络、区域时钟网络和专用的快速区域时钟网络。这些网络被组成分层时钟结构,允许器件内存在多个低偏移和延迟的时钟。通常,有几个专用时钟引脚用于驱动全局或区域时钟网络,PLL 输出和内部时钟都可以驱动各种时钟网络。
注意,Stratix 10 器件有更新的架构。设计者可以配置该器件的时钟资源,以创建不同大小的高效率的平衡时钟树,范围为从单个时钟扇区到整个器件。默认,Quartus 软件会自动确定时钟树的大小和位置。此外,设计者可以通过时钟域分配或逻辑锁定区域来直接约束时钟树的大小和位置。
为了减少给定时钟域中的时钟偏移并确保在该时钟域中满足保持时间,将每个时钟信号分配给 FPGA 内的全局高扇出、低偏移时钟网络中的一个。Quartus 软件自动将全部布线资源分配给高扇出的控制信号、PLL 输出和馈送器件上的全局时钟引脚。为了引导软件将全局布线资源分配给一个信号,在Assignment Editor中展开Global Signal选项。
注
全局信号分配只能控制是否使用指定的专用资源来提升信号,但是不控制使用哪个资源或使用多少资源。
为了充分利用设计中的布线资源,请确保时钟信号源(输入时钟引脚或内部生成的时钟)仅用于驱动寄存器的输出端口。在 Intel 较旧的器件中,如果时钟信号送到了一个寄存器的数据端口,信号就不能使用专用布线,这将导致性能下降和时钟偏差问题。通常,允许时钟信号驱动寄存器的数据端口不被认为是同步设计,并且可能使时序收敛复杂化。
2.区域时钟(Regional Clock,RCLK)网络
RCLK网络为单个RCLK区域内的逻辑提供低时钟插入延迟和偏移。Cyclone 10 GX器件的IOE和给定区域内的内部逻辑也可以驱动RCLK,以创建内部生成的区域时钟和其他高扇出信号。
Cyclone 10 GX 器件提供 RCLK,它能穿越芯片的水平方向驱动,如图 1.37 所示为10CX220YU484E5G的区域时钟网络。RCLK覆盖器件内同一行中的所有SCLK主干区域。
图1.37 10CX220YU484E5G的区域时钟网络
3.外设时钟(Periphery Clock,PCLK)网络
外设时钟网络由小外设时钟网络(Small Periphery Clock,SPCLK)网络和大外设时钟(Large Periphery Clock,LPCLK)网络构成。
PCLK网络提供了最低的插入延迟和与RCLK网络相同的偏移。
(1)每个高速串行接口(High-Speed Serial Interface,HSSI)或I/O组有12个SPCLK。SPCLK 覆盖 HSSI 组中的一个 SCLK 主干区域,以及同一行中彼此相邻的 I/O 组中的一个SCLK主干区域,如图1.38所示为10CX220YU484E5G的小外设时钟网络。
(2)每个HSSI或I/O组有2个LPCLK。与SPCLK相比,LPCLK有更大的网络覆盖空间,如图1.39所示为10CX220YU484E5G的大外设时钟网络。LPCLK覆盖HSSI组中的一个SCLK主干区域和同一行中彼此相邻的I/O组中一个SCLK主干区域。
图1.38 10CX220YU484E5G 的小外设时钟网络
图1.39 10CX220YU484E5G 的大外设时钟网络
1.3.2 时钟资源功能
Cyclone 10 GX器件内的时钟资源如表1.16所示。
表1.16 Cyclone 10 GX器件内的时钟资源
续表
续表
图1.40 Cyclone 10 GX 器件的I/O分配界面
1.3.3 层次化时钟结构
Intel Cyclone 10 GX器件的三级时钟网络层次如图1.42所示。
图1.41 10CX220YU4845G版图中HSSI时钟引脚的布局位置(左下角)
图1.42 Cyclone 10 GX器件的三级时钟网络层次
每个 HSSI 列和 I/O 列包含时钟驱动器,如图 1.43 所示为 10CX220YU4845G 版图中HSSI列和I/O列的布局,用于将共享总线驱动到相对应的GCLK、RCLK和PCLK网络。
在每个时钟链接到时钟布线用于每个HSSI和I/O组之前,Cyclone 10 GX器件的时钟网络(GCLK、RCLK 和 PCLK)通过 SCLK 布线。SCLK 的设置是透明的。根据 GCLK、RCLK 和 PCLK 网络,Quartus 软件自动布线 SCLK。每个 SCLK 主干都具有一致的高度,与HSSI和I/O组相匹配。在器件中,SCLK主干的个数取决于HSSI和I/O组的数量。
Cyclone 10 GX器件在一个SCLK主干区域中最多提供33个SCLK网络。SCLK网络可以在每个行时钟区域中驱动6个行时钟。行时钟是器件核心功能块、PLL、I/O接口和HSSI接口的时钟源。6 个信号能布线到每个行时钟区域。驱动每个 SCLK 的多路选择器的连接模式将时钟源限制为SCLK主干区域。每个SCLK可以从GCLK、RCLK、LPCLK或SPCLK线中选择时钟资源。
图1.44给出了每个SCLK主干区域中由GCLK、RCLK、PCLK或GCLK和RCLK反馈时钟网络驱动的 SCLK。GCLK、RCLK、PCLK,以及 GCLK 和 RCLK 的反馈时钟共享相同的 SCLK 布线资源。为了确保 Quartus 成功实现适配,时钟资源总数不要超过每个SCLK主干区域的SCLK限制。
图1.43 10CX220YU4845G版图中HSSI列和I/O列的布局
图1.44 SCLK主干中的层次化时钟网络
1.3.4 时钟控制块
每个GCLK、RCLK和PCLK网络都有自己的时钟控制模块。时钟控制模块提供了下面的特性:
(1)时钟源选择(动态选择仅适用于GCLK);
(2)时钟断电(静态或动态时钟使能或禁止仅适用于GCLK和RCLK)。
用于 HSSI 列的时钟输入引脚、PLL 计数器输出和时钟控制模块输入之间的映射如表1.17所示。用于I/O列的时钟输入引脚、PLL计数器输出和时钟控制模块输入之间的映射如表1.18所示。
表1.17 用于HSSI列的时钟输入引脚、PLL计数器输出和时钟控制模块输入之间的映射
表1.18 用于I/O列的时钟输入引脚、PLL计数器输出和时钟控制模块输入之间的映射
1.GCLK控制模块
设计者可以使用内部逻辑静态或动态地为 GCLK 选择时钟源,以驱动多路复用器选择输入,如图1.45所示。
图1.45 Cyclone 10 GX器件中的GCLK控制模块
当动态选择时钟源时,可以选择 PLL 输出(如 C0 或 C1)或时钟引脚或 PLL 输出的组合。
通过使用Quartus软件中的ALTCLKCTRL IP核,为GCLK网络多路选择器设置输入时钟源和clkena信号。当使用ACTCLKCTRL IP核动态选择时钟源时,使用CLKSELECT[0..1]信号选择输入。
注
只能从相同的I/O或HSSI组中切换专用时钟的输入。
2.RCLK控制模块
设计者只能使用 Quartus 软件生成的配置文件(.sof 或.pof)中的配置位设置静态控制RCLK控制模块的时钟源选择,如图1.46所示。
图1.46 Cyclone 10 GX器件中的RCLK控制模块
通过在Quartus软件中使用ALTCLKCTRL IP核,为RCLK网络输入时钟源和clkena信号。
3.PCLK控制模块
PCLK 控制模块驱动 SPCLK 和 LPCLK 网络。驱动 HSSI PCLK,选择 HSSI 输出、FPLL输出或时钟输入引脚;驱动I/O时钟,选择DPA时钟输出、I/O PLL输出或者时钟输入引脚。在 Cyclone 10 GX 器件中,用于 HSSI 列的 PCLK 控制模块如图 1.47 所示,用于I/O列的PCLK控制模块如图1.48所示。
图1.47 用于HSSI列的PCLK控制模块
图1.48 用于I/O列的PCLK控制模块
通过在Quartus软件中使用ALTCLKCTRL IP核,为RCLK网络输入时钟源和clkena信号。
1.3.5 时钟功耗控制
通过静态和动态的方法,可以给 GCLK 和 RCLK 网络断电。当网络断电时,所有由时钟网络控制的逻辑都进入关闭状态,从而降低了器件的总功耗。通过 Quartus 软件中生成的配置文件(.sof或.pof),将没有使用的GCLK、RCLK和PCLK网络断电。
动态的时钟使能或禁止特性允许内部逻辑控制 GCLK 和 RCLK 网络的同步上电和断电。该功能独立于PLL,直接应用于时钟网络。
注
不可以动态地使能/禁止驱动 PLL 的 GCLK 或 RCLK 网络。当工作频率很高时,动态门控时钟会影响芯片性能。
如果GCLK或RCLK网络的输出驱动PLL输入,则不能使用时钟控制模块的时钟使能和禁止电路。带有时钟使能和禁止电路的clkena实现如图1.49所示。
图1.49 带有时钟使能和禁止电路的clkena实现
在时钟网络级而不是在 PLL 输出计数器级上支持 clkena 信号。这使得即使在不使用PLL时也可以关闭时钟。此外,也可以使用clkena信号来控制PLL的专用外部时钟。
一个关于时钟网络使用方法的Verilog HDL描述如代码清单1-16所示。
代码清单1-16 一个关于时钟网络使用方法的Verilog HDL描述
该设计是典型的异步时钟网络。此外,在 Quartus 的“Assignment Editor”标签页中,设置时钟clk1和clk2使用的资源,如图1.50所示。
图1.50 “Assignment Editor”标签页
对该设计适配后的网表结构如图 1.51 所示。从图中可知,输入时钟经过 IO_IBUF 后传递给 CLKCTRL,然后送给触发器的时钟输入端 CLK。clk2 使用的 CLKCTRL 块如图 1.52所示,clk1使用的CLKCTRL块如图1.53所示。
图1.51 异步时钟网络适配后的网表结构
图1.52 clk2使用的CLKCTRL块
图1.53 clk1使用的CLKCTRL块
1.3.6 相位锁相环
PLL为器件时钟管理、外部系统时钟管理和高速I/O接口提供强大的时钟管理与综合。Cyclone 10 GX器件包含两类PLL:
(1)FPLL,可用作小数PLL或整数PLL;
(2)I/O PLL,只能用作整数PLL。
FPLL位于HSSI 组中收发器块的附近。每个HSSI组包含两个FPLL。设计者在传统的整数模式或者小数模式下可以独立配置每个FPLL。在小数模式下,FPLL可以使用三阶Δ-∑调制。每个FPLL有4个C计数器输出和一个L计数器输出。
I/O PLL位于I/O组中的硬件存储器控制器和LVDS串行化器/解串行化器(SERDES)块的附近。每个I/O组包含一个I/O PLL。I/O PLL能工作在传统的整数模式。每个I/O PLL有 9 个 C 计数器输出。在一些指定的器件封装中,可以在 I/O 组中使用未在设计中绑定的I/O PLL。这些I/O PLL必须从FPGA核或者通过同一I/O列中另一个I/O PLL的专用级联连接来获取其参考时钟源。
1.PLL特性
Cyclone 10 GX器件具有最高密度的6个FPLL和6个I/O PLL。Cyclone 10 GX器件的PLL如表1.19所示。
表1.19 Cyclone 10 GX器件的PLL特性
续表
注
(1)提供的输入时钟抖动在输入抖动容限规范。
(2)最小相移由 VCO 周期除以 4(对于 FPLL)或 8(对于 I/O PLL)确定。对于度数增量,Cyclone 10 GX器件可以以至少45°(对于I/O PLL)或90°(对于FPLL)的增量移动所有输出频率。根据频率核分频因子,较小的角度增量是可能的。
2.PLL架构
FPLL经过优化,可用作收发器发送PLL和合成参考时钟频率,其架构如图1.54所示。可以按下面方式使用它:
(1)减少电路板上所需振荡器的数量;
(2)通过从单个参考时钟源合成多个时钟频率,减少FPGA中使用的时钟引脚;
(3)补偿时钟网络延迟;
(4)用于收发器的发送时钟。
I/O PLL经过优化,用于存储器接口和LVDS SERDES,其架构如图1.55所示。可以按下面方式使用它:
(1)减少电路板上所需的振荡器数量;
(2)通过从单个参考时钟源合成多个时钟频率,减少FPGA中使用的时钟引脚;
(3)简化外部存储器接口和高速LVDS接口的设计;
(4)由于I/O PLL与I/O紧密耦合,因此可以简化时序收敛;
(5)补偿时钟网络延迟;
(6)零延迟缓冲。
图1.54 Cyclone 10 GX器件内FPLL的架构
时钟反馈模式补偿时钟网络延迟,使 PLL 时钟输入上升沿与时钟输出的上升沿对齐。在设计中,选择用于时序关键时钟路径的补偿类型。
当然,并不是总是需要 PLL 补偿。除非确定需要补偿,否则应将 PLL 配置为直接(无补偿)模式。直接模式可提供最佳的 PLL 抖动性能,避免对补偿时钟资源不必要的消耗。默认,时钟反馈模式是直接补偿模式。
3.控制信号
复位信号可以用来控制PLL的工作和重同步,使用锁定信号用于观察PLL的状态。
1)复位
器件的输入引脚或者内部的逻辑能够驱动这些输入引脚。当复位信号为高电平时,复位PLL计数器、清除PLL的输出,并且将PLL设置为失锁状态。VCO返回它正常的设置。当复位信号为低时,PLL重新同步到它的输入时钟源。
每次 PLL 失锁时,都必须置位复位信号,以保证 PLL 输入和输出时钟之间正确的相位关系。通过Quartus参数编辑器,在出现失锁条件后,设置PLL自动复位。
在下面条件下,必须包含复位条件:
(1)PLL重配置或者使能切换时钟;
(2)在失锁条件后,必须保证PLL输入和输出时钟的相位关系。
注
(1)如果 FPGA 转换到用户模式时 PLL 的输入时钟没有切换或不稳定,则在输入时钟稳定且符合规范后复位PLL,即使启用了自复位功能。
(2)在重新配置PLL或者外部时钟源后PLL无法锁定到参考时钟,则在输入时钟稳定且符合规范后复位PLL,即使启用了自复位功能。
(3)对于 FPLL,当器件上电后,必须在 FPLL 上电校准过程完成后复位FPLL(pll_cal_busy信号无效)。
2)锁定
锁定检测电路为内核逻辑提供信号,该信号指示反馈时钟在相位和频率上锁定到参考时钟。
图1.55 Cyclone 10GX 器件内I/OPLL的架构
4.计算公式
在整数模式下,Cyclone 10 GX器件的PLL输出频率与其输入参考时钟源的比例因子为M/(N×C)。输入时钟除以预标定因子 N,然后乘以反馈因子 M,控制回路驱动压控振荡器(Voltage Controlled Oscillator,VCO)以匹配 fin× (M/N)。
Quartus软件会根据提供给I/O PLL IP核的输入频率、乘法和除法值,自动选择合适的比例因子。
1)预标定计数器N和乘法计数器M
每个PLL有一个预标定计数器N和一个乘法计数器M。计数器M和N不使用占空比控制,因为这些计数器的唯一目的是计算分频。
2)后标定计数器C
每个输出端口有一个唯一的后标定计数器 C。对于具有不同频率的多个后标定计数器 C输出,VCO设置为输出频率的最小公倍数,它满足频率规范。例如,如果来自一个I/O PLL所要求的输出频率为55MHz和100MHz,则Quartus软件将VCO设置为1.1GHz(VCO工作频率范围内 55MHz 和 100MHz 的最小公倍数)。然后,后标定计数器 C 缩小每个输出端口的VCO频率。
3)后标定计数器L
FPLL有一个额外的后标定计数器L。后标定计数器L使用M/(N×L)标定因子合成来自它时钟源的频率。后标定计数器 L 产生一个差分时钟对(0°和 180°)并且驱动 HSSI 时钟网络。
4)Δ-∑调制器
Δ-∑调制器(Delta-Sigma Modulator,DSM)与乘法计数器M一起使FPLL能够以分数模式操作。DSM 基于周期到周期来动态地改变乘法计数器 M 因子。不同的乘法计数器 M因子允许“平均”乘法计数器M因子为一个非整数。
5)小数模式
在小数模式中,乘法计数器 M 的值等于 M 反馈因子和小数值之和。小数值等于K/232,其中K是0~(232-1)之间的一个整数。
6)整数模式
对于运行在整数模式的FPLL,M是一个整数值并且禁用DSM。I/O PLL只能工作在整数模式。
7)相移
可编程的相移允许FPLL和I/O PLL产生带有固定相移的输出时钟。PLL的VCO频率决定了相移的精度。最小的相移增量是VCO周期的1/8(对I/O PLL)或1/4(对FPLL)。例如,如果I/O PLL的VCO频率为1000MHz,125ps的相位步进是可能的。
根据设计者在IP核内所输入用户指定的相移值,Quartus软件自动调整VCO频率。
8)占空值
可编程占空比功能允许I/O PLL以可变占空比生成时钟输出。仅有I/O PLL后标定计数器C支持该功能,FPLL不支持可编程的占空比特性,只有固定的50%占空比。
I/O PLL C 计数器的值决定了占空比的精度。精度为 50%除以后标定计数器的值。例如,如果C0 计数器是10,对于5%~90%范围内的占空比,步长为5%是可能的。如果 I/O PLL是外部反馈模式,则设置驱动fbin引脚的计数器的占空比为50%。
根据在IO PLL IP核参数编辑器中所输入要求的占空比,Quartus软件自动调整VCO频率。此外,将可编程占空比与可编程相移进行组合,可以生成精确的非重叠时钟。
5.PLL级联
Cyclone 10 GX 器件支持 PLL 到 PLL 级联。PLL 级联合成比一个 PLL 更多的时钟频率。如果在设计中级联 PLL,则源(上游)PLL 必须具有低带宽设置,而目标(下游)PLL必须具有高带宽设置。在级联时,源 PLL 的输出用作目标 PLL 的参考时钟(输入)。级联PLL 的带宽设置必须不同。如果级联 PLL 的带宽设置相同,则级联 PLL 可以放大某些频率的相位噪声。
Cyclone 10 GX器件仅支持I/O PLL到I/O PLL级联应用。在该模式下,上游I/O PLL和下游I/O PLL必须位于同一I/O 列中。
Cyclone 10 GX器件的FPLL不支持核心应用的PLL级联模式。
6.时钟切换
时钟切换特性允许PLL在两个参考输入时钟inclk0和inclk1之间进行切换。该特性用于时钟冗余或双时钟域应用,如果前一个时钟停止运行,系统将转向冗余时钟。该设计可以在时钟不再切换时自动执行时钟切换,也可以根据用户控制信号extswitch自动执行时钟切换。
Cyclone 10 GX器件的PLL支持下面的时钟切换模式,包括:
1)自动切换
时钟检测电路监视当前参考时钟。如果当前参考时钟停止切换,则参考时钟自动切换到inclk0或inclk1时钟。
2)手动时钟切换
使用 extswich 控制时钟切换信号。当 extswitch 信号脉冲保持至少 3 个时钟周期的低电平用于切换到inclk时,PLL的参考时钟从inclk0切换到inclk1,反之亦然。
3)带手动覆盖的自动切换
此模式结合了自动切换和手动时钟切换。当 extswitch 信号变低时,它会覆盖自动时钟自动切换功能。只要extswitch信号为低电平,就会阻止进一步的切换操作。
一个包含两个PLL的Verilog HDL描述如代码清单1-17所示。
代码清单1-17 一个包含两个PLL的Verilog HDL描述
思考与练习1-8:对该设计处理后,在Chip Planner中观察所使用I/O PLL和FPLL的布局。