FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-技术分享-正文

Xilinx FPGA 中 PLL 与 MMCM 的区别及时钟管理应用实践指南

二牛学FPGA二牛学FPGA
技术分享
6小时前
0
0
3

Quick Start(快速上手)

打开 Vivado,创建一个新工程,选择目标器件(例如 Xilinx Artix-7)。在 IP Catalog 中搜索并例化“Clocking Wizard”IP。设置输入时钟频率(例如 100 MHz),选择输出时钟数量(2 个),并分别设置频率(例如 50 MHz 和 200 MHz)。在“Output Clocks”选项卡中,为每个输出时钟选择“Use MMCM”或“Use PLL”。生成 IP,并在顶层 RTL 中例化该 IP。编写测试激励,在仿真中观察输出时钟波形:确认 50 MHz 和 200 MHz 时钟的占空比接近 50%,且无毛刺。运行综合(Synthesis),检查资源报告:确认 MMCM 或 PLL 被正确推断。运行实现(Implementation),查看时序报告:确认所有时钟域满足建立/保持时间。

前置条件与环境

项目推荐值说明 / 替代方案
器件 / 板卡Xilinx Artix-7 (XC7A35T) 或更高Kintex-7, Virtex-7, Zynq-7000
EDA 版本Vivado 2020.1 及以上ISE 14.7(仅支持 7 系列及更早器件)
仿真器Vivado Simulator (xsim) 或 ModelSimVCS, Questa
时钟 / 复位单端 100 MHz 板载时钟,异步复位(低有效)差分时钟(需 IBUFDS),同步复位亦可
接口依赖无特殊接口,仅需时钟输入若使用外部晶振,需确保时钟引脚为专用时钟输入(MRCC/SRCC)
约束文件XDC 文件:定义输入时钟周期(create_clock)

目标与验收标准

  • 功能点:成功生成两个不同频率的时钟(50 MHz 和 200 MHz),且相位可调(如 0° 或 90°)。
  • 性能指标:输出时钟抖动(Jitter)在数据手册范围内(典型值 < 1% UI)。
  • 验收检查清单

    实施步骤

    步骤 1:创建 Vivado 工程并例化 Clocking Wizard IP

    在 Vivado 中新建工程,选择目标器件(如 Artix-7 XC7A35T)。打开 IP Catalog,搜索“Clocking Wizard”并双击例化。在配置界面中,设置输入时钟频率为 100 MHz,输出时钟数量为 2 个。分别设置输出时钟频率为 50 MHz 和 200 MHz。在“Output Clocks”选项卡中,为每个输出时钟选择“Use MMCM”或“Use PLL”。点击“Generate”生成 IP。

    步骤 2:在顶层 RTL 中例化 IP

    将生成的 IP 例化到顶层模块中。连接输入时钟(clk_in)、复位(reset)和 locked 信号。输出时钟(clk_out1 和 clk_out2)连接到后续逻辑。确保复位信号在输入时钟稳定后释放(可通过 locked 信号控制复位释放逻辑)。

    步骤 3:编写测试激励并仿真

    编写 testbench,提供 100 MHz 输入时钟,并施加复位。等待 locked 信号变高后,测量输出时钟频率和占空比。确认 50 MHz 和 200 MHz 时钟的占空比接近 50%,且无毛刺。仿真通过后,进行下一步。

    步骤 4:综合与实现

    运行综合,检查资源报告:确认 MMCM 或 PLL 被正确推断,并记录使用的资源数量。运行实现,查看时序报告:确认所有时钟域满足建立/保持时间。若有时序违规,调整约束或时钟配置。

    验证结果

    仿真波形显示:locked 信号在约 1 μs 后变高,clk_out1(50 MHz)周期为 20 ns,占空比 50%;clk_out2(200 MHz)周期为 5 ns,占空比 50%。无毛刺或异常跳变。综合报告显示使用了 1 个 MMCM(或 PLL),无其他时钟资源。时序报告显示所有路径建立/保持时间裕量 > 0,满足设计要求。

    排障指南

    • 问题:locked 信号始终为低
      原因:输入时钟不稳定或频率超出范围;复位未释放。解决:检查输入时钟质量,确保复位信号在时钟稳定后释放。
    • 问题:输出时钟频率不准确
      原因:分频/倍频系数设置错误。解决:重新计算系数,确保满足整数比。
    • 问题:仿真中时钟有毛刺
      原因:仿真精度不足或激励问题。解决:设置仿真精度为 1 ps,并检查时钟连接。
    • 问题:时序违规
      原因:时钟约束不足或路径过长。解决:在 XDC 中正确约束输入时钟,并优化逻辑。

    扩展:PLL 与 MMCM 的差异与选型建议

    核心差异

    • MMCM(Mixed-Mode Clock Manager)相比 PLL 增加了相位插值(Phase Interpolator)和动态相位调整(Dynamic Phase Shift)功能,支持更精细的相位控制(步进约 1/56 个 VCO 周期)。
    • PLL(Phase-Locked Loop)结构更简单,资源占用更少,适用于基本频率合成和相位锁定。
    • 抖动性能:MMCM 通常具有更低的输出抖动,但功耗略高。
    • 可用性:在 7 系列及更早器件中,MMCM 数量有限(通常 1-2 个),PLL 数量较多(4-6 个)。

    选型建议

    • 若仅需基本频率合成(无相位调整需求),优先使用 PLL 以节省资源。
    • 若需动态相位调整、低抖动或精细相位控制,使用 MMCM。
    • 在高速接口(如 DDR、SerDes)中,建议使用 MMCM 以获得更好的时钟质量。

    参考

    • Xilinx UG472: Clocking Wizard v6.0 LogiCORE IP Product Guide
    • Xilinx UG953: Vivado Design Suite 7 Series FPGA and Zynq-7000 SoC Libraries Guide
    • Xilinx DS181: Artix-7 FPGAs Data Sheet: DC and AC Switching Characteristics

    附录:常见 XDC 约束示例

    以下为输入时钟约束示例:

    create_clock -period 10.000 -name clk_in [get_ports clk_in]

    若需约束输出时钟,可在综合后使用 report_clocks 命令查看自动生成的时钟名称,并添加相应约束。

    标签:
    本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
    如需转载,请注明出处:https://z.shaonianxue.cn/36887.html
    二牛学FPGA

    二牛学FPGA

    初级工程师
    这家伙真懒,几个字都不愿写!
    56617.34W3.93W3.67W
    分享:
    成电国芯FPGA赛事课即将上线
    FPGA中PLL与MMCM的区别及时钟管理应用实践指南
    FPGA中PLL与MMCM的区别及时钟管理应用实践指南上一篇
    2026年FPGA工程师薪资涨幅城市排名:设计与验证指南下一篇
    2026年FPGA工程师薪资涨幅城市排名:设计与验证指南
    相关文章
    总数:606
    2026年AI芯片设计趋势:FPGA如何作为验证加速平台

    2026年AI芯片设计趋势:FPGA如何作为验证加速平台

    QuickStart步骤1:安装EDA工具下载并安装Vivado2…
    技术分享
    18小时前
    0
    0
    6
    0
    Verilog实现CRC校验算法:从原理到RTL代码

    Verilog实现CRC校验算法:从原理到RTL代码

    QuickStart步骤一:在Vivado/VivadoQuartu…
    技术分享
    6小时前
    0
    0
    2
    0
    2026年AI芯片人才缺口分析:FPGA验证工程师需求激增与岗位实践指南

    2026年AI芯片人才缺口分析:FPGA验证工程师需求激增与岗位实践指南

    QuickStart:快速了解FPGA验证工程师岗位本指南面向AI芯片…
    技术分享
    18小时前
    0
    0
    4
    0
    评论表单游客 您好,欢迎参与讨论。
    加载中…
    评论列表
    总数:0
    FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
    没有相关内容