IP 核之 MMCM/PLL 实验

目录

1 MMCM/PLL IP 核简介

时钟资源简介

2 实验任务

3 硬件设计

4 程序设计 


        PLL 的英文全称是 Phase Locked Loop,即锁相环,是一种反馈控制电路PLL 对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。Xilinx 7 系列器件中的时钟资源包含了时钟管理单元 CMT,每个 CMT 由一个 MMCM 和一个 PLL 组成。对于一个简单的设计来说,FPGA 整个系统使用一个时钟或者通过编写代码的方式对时钟进行分频是可以完成的,但是对于稍微复杂一点的系统来说,系统中往往需要使用多个时钟时钟相位的偏移,且通过编写代码输出的时钟无法实现时钟的倍频,因此学习 Xilinx MMCM/PLL IP 核的使用方法是我们学习 FPGA 的一个重要内容。本章我们将通过一个简单的例程来向大家介绍一下 MMCM/PLL IP 核的使用方法。

1 MMCM/PLL IP 核简介

        锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号 控制 环路内部震荡信号的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路
        锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。
        Xilinx 7 系列器件中具有时钟管理单元 CMT 时钟资源, xc7z020 芯片内部有 4 CMT xc7z010 芯片内部有 2 CMT ,为设备提供强大的系统时钟管理以及高速 I/O 通信的能力。时钟管理单元 CMT 的总体框图如下图所示。
CMT 总体框图
        MMCM/PLL 的参考时钟输入可以是 IBUFG(CC) 具有时钟能力的 IO 输入、区域时钟 BUFR 、全局时钟 BUFG GT 收发器输出时钟、行时钟 BUFH 以及本地布线(不推荐使用本地布线来驱动时钟资源)。在最多的情况下,MMCM/PLL 的参考时钟输入都是来自 IBUFG(CC) 即具有时钟能力的 IO 输入,本实验也是如此。MMCM/PLL 的输出可以驱动全局时钟 BUFG 和行时钟BUFH 等等。BUFG 能够驱动整个器件内部的 PL 侧通用逻辑的所有时序单元的时钟端口。 BUFG/BUFH/CMT 在一个时钟区域内的连接框图如下图所示。
BUFG/BUFH/CMT 在一个时钟区域内的连接
        在本实验中,读者可以简单地理解为:外部时钟连接到具有时钟能力的输入引脚 CCIO Clock-Capable Input),进入 MMCM/PLL ,产生不同频率和不同相位的时钟信号,然后驱动全局时钟资源BUFG。但是要进行更深入的 FPGA 开发,就必须理解器件的 时钟资源 架构。有关 Xilinx 时钟资源和 CMT的更详细信息,读者后期可以花一些时间和精力去学习一下 Xilinx 官方的手册文档 “UG472 7 Series FPGAs Clocking Resources User Guide”里的介绍。

时钟资源简介

7系列FPGA高层次时钟结构视图

        UG472

        MMCM 和 PLL 的总体框图如上面两张图所示。
        其中 MMCM 的功能是 PLL 的超集,其具有比 PLL 更强大的相移功能。 MMCM 主要用于驱动器件逻辑(CLB DSP RAM 等)的时钟。 PLL 主要用于为内存接口生成所需的时钟信号,但也具有与器件逻辑的连接,因此如果需要额外的功能,它们可以用作额外的时钟资源。
        PLL 由以下几部分组成:前置分频计数器( D 计数器)、相位 - 频率检测器( PFD ,Phase-Frequency Detector)电路,电荷泵(Charge Pump)、环路滤波器(Loop Filter)、压控振荡器(VCO,Voltage Controlled Oscillator)、反馈乘法器计数器(M 计数器)和后置分频计数器(O1-O6 计数器)。
        在工作时,PFD 检测其参考频率(FREF )和反馈信号(Feedback)之间的相位差和频率差,控制电荷泵和环路滤波器将相位差转换为控制电压;VCO 根据不同的控制电压产生不同的震荡频率,从而影响 Feedback 信号的相位和频率。在 F REF Feedback 信号具有相同的相位和频率之后,就认为 PLL 处于锁相的状态。
          在反馈路径中插入 M 计数器会使 VCO 的震荡频率是 F REF 信号频率的 M 倍, F REF 信号等于输入时钟 (FIN )除以预缩放计数器( D )。参考频率用以下方程描述: F REF = F IN /D VCO 输出频率为 F VCO = FIN *M/D PLL 的输出频率为 F OUT = (FIN *M / N*O )。
        Xilinx 提供了用于实现时钟功能的 IP Clocking Wizard ,该 IP 核能够根据用户的时钟需求自动配置器件内部的 CMT 及时钟资源,以实现用户的时钟需求。在这里我们主要讲解的是如何使用该 IP 核,有关该 IP 核的更详细介绍,读者可以参阅 Xilinx 官方的手册文档 “PG065 Clocking Wizard v6.0 LogiCORE IP Product Guide”。

2 实验任务

        本节实验任务是使用 Zynq 开发板输出 4 个不同时钟频率或相位的时钟,并在 Vivado 中进行仿真以验证结果,最后生成比特流文件并将下载到开发板上,使用示波器来测量时钟的频率。

3 硬件设计

扩展口原理图
IP 核之 PLL 实验管脚分配
对应的 XDC 约束语句如下所示:
set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN U20 IOSTANDARD LVCMOS33} [get_ports clk_100m]
set_property -dict {PACKAGE_PIN T20 IOSTANDARD LVCMOS33} [get_ports clk_100m_180deg]
set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports clk_50m]
set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports clk_25m]

4 程序设计 

我们首先创建一个空的工程,工程名为“ ip_clk_wiz ”。接下来添加 PLL IP 核。在 Vivado 软件的左侧 “Flow Navigator ”栏中单击“ IP Catalog ”,“ IP Catalog ”按钮以及单击后弹出的“ IP Catalog ”窗口如下图所示。
“IP Catalog”按钮
“IP Catalog”窗口​​​​​​
        打开“IP Catalog” 窗口后,在搜索栏中输入 “clock” 关键字,可以看到 Vivado 已经自动查找出了与关键字匹配的 IP 核名称,如下图所示。
搜索栏中输入关键字
        双击“FPGA Features and Design ”→“ Clocking ”下的“ Clocking Wizard ”,弹出 “Customize IP”窗口。

        最上面的“Component Name”一栏设置该 IP 元件的名称,这里保持默认即可。

        Port Renaming”选项卡主要是对一些控制信号的重命名。

         最后的“ Summary ”选项卡是对前面所有配置的一个总结,在这里我们直接点击“ OK ”按钮即可。
        接着就弹出了“Genarate Output Products ”窗口,我们直接点击“ Generate ”即可。
        之后我们就可以在“Design Run ”窗口的“ Out-of-Context Module Runs ”一栏中出现了该 IP 核对应的 run“ clk_wiz_0_synth_1 ”,其综合过程独立于顶层设计的综合。
         开始编写代码:
        首先打开 IP 核的例化模板,在 “Source ”窗口中的“ IP Sources ”选项卡中,依次用鼠标单击展开“ IP -“clk_wiz_0”- Instantitation Template”,我们可以看到“ clk_wiz.veo ”文件,它是由 IP 核自动生成的只读的 verilog 例化模板文件,双击就可以打开它,在例化时钟 IP 核模块的时钟,可以直接从这里拷贝。
        接下来创建一个 verilog 源文件,代码如下:(太简单了,就不浪费时间粘了)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Vivado中,MMCM(Mixed-Mode Clock Manager)和PLL(Phase-Locked Loop)是用来生成、分频和调整时钟信号的重要IP核。MMCMPLL的超集,具有比PLL更强大的相移功能,主要用于驱动器件逻辑的时钟。而PLL主要用于为内存接口生成所需的时钟信号,但也可以用作额外的时钟资源,与器件逻辑连接。 在Vivado中,使用Clocking Wizard IP核来配置MMCMPLL的参数。在"MMCM Setting"选项卡中,Vivado会根据用户输入的时钟需求自动配置参数,并进行最优化的配置。在绝大多数情况下,这些参数都不需要用户进行更改,因此建议保持默认设置。因此,根据具体的应用需求,可以选择使用MMCMPLL来生成和管理时钟信号。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vivado18.3-IP核-MMCM/PLL 学习笔记](https://blog.csdn.net/weixin_42151221/article/details/103351855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [时钟IP配置中PLLMMCM的区别](https://blog.csdn.net/qq_40528849/article/details/120819873)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不做拖延王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值