IP核之MMCM实验
PLL与MMCM
FPGA中,外部时钟域与主时钟域不同步将导致各种各样的复杂情况的出现,因此异步时钟域的处理往往是一个重要的问题,也有各种各样的解决办法,如特定的握手协议、异步FIFO、双时域同步器、锁相环等。锁相环(PLL,Phase-Locked Loop)是一种能够自动跟踪输入信号相频,从而实现信号同步的电路,主要由鉴相器(PD,Phase Detector)、环路滤波器(LF,Loop Filter)、压控振荡器(VCO,Voltage Controlled Oscillator)组成。模拟鉴相器是一个乘法器,能够将相位差信号转换成控制电压,环路滤波是一个低通滤波器,平滑控制电压的变化,调节VCO的响应速度和稳定性,对能否锁相起到至关重要的作用。一种常用的压控振荡器通过变容二极管实现,根据不同的电压电容容值发生变化,从而实现了不同频率信号的输出,最后锁相环电路输出信号将实现与输入信号同步。
Altera公司IP核采用了PLL,赛灵思公司则采用了混合模式时钟管理(MMCM,Mixed-Mode Clock Manager),MMCM中集成了PLL以及其他部件,实现了更高精度的时钟输出以及更大范围的频率合成与输出。
配置
下文记录了IP核MMCM的配置(参考Clocking Wizard v6.0)以及验证:通过50M输入时钟得到两个输出时钟分别为122.88M以及245.76M。
- 时钟配置选择频率合成、相位校准,平衡模式,输入频率50MHz
时钟选择页其余参数说明:
•频率合成允许输出时钟具有与活动输入时钟不同的频率。
•扩频提供调制输出时钟,从而降低电子设备产生的电磁干扰(EMI)的频谱密度。此功能仅适用于MMCM(E2/E3/E4)_ADV原语。UNISIM对该功能的模拟支持目前不可用。
•相位校准允许输出时钟相位锁定到参考,例如设备的输入时钟引脚。
•最小化功率使您能够最小化基本体所需的功率,这可能以频率、相位偏移或占空比精度为代价。
•动态相移允许您更改输出时钟上的相位关系。
•动态重新配置允许您在设备配置后更改基元的编程。选择此选项时,默认情况下会选择AXI4 Lite接口来重新配置时钟原语。
•平衡。选择Balanced会导致软件选择正确的带宽进行抖动优化
•最小化输出抖动。此功能最大限度地减少了输出时钟上的抖动,但代价是功率和可能的输出时钟相位误差。此功能不适用于最大化输入抖动滤波功能。
•最大化输入抖动滤波允许输入时钟上出现更大的输入抖动,但会对输出时钟上的抖动产生负面影响。此功能不适用于最小化输出抖动功能。
•安全时钟启动和排序可用于在输出端获得稳定有效的时钟。它还按照配置中指定的特定顺序启用时钟。
•时钟监视器可帮助您监视时钟向导的时钟输入。它最多可以监测四个时钟。您可以监视输入频率是否超出预期频率的范围。
•Auto Primitive根据您的需求实例化适当的计时原语。您不需要知道MMCM或PLL的规格来判断哪个原语适合您的需求;向导会为您执行此操作。此功能仅适用于UltraScale™和UltraScale+™设备。
- 输出时钟设置为122.88M以及245.76M,系统会自动计算最接近的时钟大小。
RTL代码编写
1 | module Clk_Generator( |
testbench验证
1 |
|
结果记录
复位信号在201ns进入高电平,在3060ns产生输出时钟信号,在3555ns有效信号输出高电平,锁相成功。
参考链接: 锁相环原理:https://blog.csdn.net/u013178472/article/details/105620578