在之前的文章中,我们介绍了FPGA的时钟结构
FPGA原理与结构——时钟资源https://blog.csdn.net/apple_53311083/article/details/132307564?spm=1001.2014.3001.5502 在本文中我们将学习xilinx系列的FPGA所提供的时钟IP核,来帮助我们进一步理解时钟的原理,从而快速实现我们的设计需求。
我们本次讨论的对象是Xilinx的 Clocking Wizard v6.0 IP核 。时钟向导(Clocking Wizard)帮助我们实现自己需要的输出时钟频率,相位和占空比,它是通过一个混合模式的时钟管理器(MMCM)(E2/E3/E4)或锁相环路(PLL)(E2/E3/E4)原语来实现的。它还有助于验证仿真中输出产生的时钟频率,提供了一个可在硬件上进行测试的可合成的实例设计。它还支持扩频特性,这有助于减少电磁干扰。图2-1显示了时钟向导的方框图:
(1)最大频率:不同的器件之间有所不同,具体的请查阅手册
(2)功率:最小化功率特性最小化原件所需的功率,但可能会牺牲频率、相位偏移或占空比精度。
(3)输出:可以最多提供7个不同的时钟输出。
时钟向导会生成源代码HDL,以实现时钟网络。生成的时钟网络通常包括一个时钟原语(MMCM(E2/E3)_ADV或PLL(E2/E3)_ADV)和一些附加电路,其中通常包括缓冲器和时钟引脚。网络分为分段,如图3-12所示。下面的部分将描述这些部分的详细信息。
在简单介绍了时钟这个IP核后,我们开始今天的重点,在之前的内容中,我们一直提到时钟IP核是通过例化MMCM和PLL这两个原语来实现的,这究竟是什么,其工作原理是怎么样的,接下来我们来一探究竟。
在之前的文章中,我们有介绍过7系列的FPGA中,每个时钟区域对应一个CMT(clock management tile),CMT由一个MMCM(mixed-mode clock manager)和一个PLL(phase-locked loop)组成。
PLL的英文全称为Phase-Locked Loop,即锁相环,是一种控制反馈电路。PLL对时钟网络进行系统级别的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。
MMCM是混合模式时钟管理器,相当于能够进行精准相移的PLL。(PLL为模拟电路,动态调相位数字电路)。7系列fpga中的PLL是MMCM功能的一个子集,它基于MMCM,而不一定基于以前的PLL设计。
总结:MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小。
MMCM/PLL的参考时钟输入可以是IBUFG(CC)即具有时钟能力的IO输入、区域时钟BUFR、全局时钟BUFG、GT收发器输出时钟、行时钟BUFH以及本地布线(不推荐使用本地布线来驱动时钟资源)。绝大多数情况下,MMCM/PLL的参考时钟输入为IBUFG(CC)即具有时钟输入能力的IO输入。
所以我们进行一个简单的总结,在FPGA中,PLL和MMCM是时钟管理单元CMT的组成部分,其主要功能可以概括到以下三点:(1)作为一个频率范围很广的频率合成器;(2)可作为外部或内部时钟的抖动滤波器;(3)去时钟倾斜
输入多路复用器从IBUFG、BUFG、BUFR、BUFH、GTs(仅限CLKIN)或互连(不推荐)中选择参考和反馈时钟。每个时钟输入都有一个可编程的计数器分频器(D)每个时钟输入都有一个可编程的计数器分频器(D)。
下面给出了MMCM和PLL的具体结构分析:
本节中的示例显示了MMCM,但是,它们同样可以应用于PLL。使用MMCM和/或PLL有几种设计方法。ISE或Vivado设计工具中的时钟向导可以帮助生成各种MMCM和PLL参数。此外,MMCM还可以手动实例化为一个组件。MMCM也可以与IP核合并。IP核将包含和管理MMCM。
MMCM的主要用途之一是对时钟网络的去歪斜。一个CLKOUT用来驱动逻辑资源,而另一个反馈时钟用来精确控制输入和输出时钟之间的相位关系,右边的波形图展示了输入和输出需要相位对齐时的情况(图中的输入2和输出5是对齐的)。反馈计数器用于控制输入时钟和输出时钟之间的精确相位关系(例如:90°的相移)。下图中的配置是最灵活的,但它需要两个全局时钟网络(BUFG)。
我们也可以通过BUFH来实现,原理是相同的
当MMCM被用作频率合成和抖动过滤,并且对输出和输入的相位没有要求时,可以用内部信号作为反馈信号。此时MMCM的性能会更好,因为反馈时钟没有经过其他电源供电的元件,因此,也就没有其他电源的噪声。但是从CLKIN和BUFG的噪声还是照常。
MMCM也能被用来生成一个无延迟的buffer clcok, 如下图。无延迟的buffer可以把一个时钟信号扇出给多个目的地,并且信号之间的偏斜很小。它们之间有一个低偏斜的应用程序。此配置如图3-14所示。在这里,反馈信号驱动出芯片和板跟踪反馈被设计为将跟踪与外部组件相匹配。在这种配置中,假设时钟边缘在FPGA的输入和外部组件的输入处对齐。CLKIN和CLKFBIN的输入时钟缓冲区必须在同一bank中。
在本文中我们对于xilinx系列的FPGA所提供的时钟IP核:Clocking Wizard v6.0 IP核进行了简单的介绍,然后对于FPGA中时钟的CMT结构进行了解读,介绍了MMCM和PLL的作用与区别,最后介绍了一些MMCM和PLL的使用示例。理解IP核的原理可以帮助我们更好地使用IP核,在接下来的文章中,我们也将介绍这个IP核的具体使用方式。