FPGA之PLL详解

这篇具有很好参考价值的文章主要介绍了FPGA之PLL详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在前面的博客里详细介绍了FIFO、RAM两个常用的IP核,而这些IP核在FPGA当中应用非常广泛,很多书籍教程、培训机构也都会蜻蜓点水提起些,但往往不作为重点,而更偏重讲解例程的具体设计。笔者编写FPGA基础知识篇的初衷就是把FPGA学习路上细枝末节、模糊不清的知识点尽力说明白、讲清楚,帮助大家快速走在提高晋级的路上。

        在这篇博客里围绕PLL IP核展开说明,之所以在这里要花费很多的笔墨去详细介绍、说明这些IP核,是因为笔者也是从一个新手一点点在工作中摸索学习提高的,最初在学校接触FPGA的时候,看过一些板子教程和付费视频,当时对这些IP核是走马观花般的学习过,但是真正走到工作岗位时,就会真实地感到这里的似懂非懂会直接影响到整个工程的代码实现,因此花费一些时间去把它们搞清楚、弄明白,前期功课做好做足,后期走向工作岗位才能事半功倍。

MMCM/PLL IP介绍

       DCM、DLL、MMCM、PLL这些名词对FPGA工程师而言真的是耳熟能详,Xilinx 7系列器件中,时钟管理器称为Clock Management,简称CMT,我们所用到DCM、MMCM、PLL也都包含在CMT中,其中豌豆开发板主控芯片XC7A35T内部有5个CMT,为设备提供强大的系统时钟管理以及高速 I/O 通信的能力,如下图1所示是Xilinx 7系列器件时钟管理单元CMT的总体框图。

FPGA之PLL详解

图1 Xilinx 7系列器件时钟管理单元CMT总体框图

       DCM通常是在FPGA早期芯片型号中使用的,典型的如Spartan3,而后期的器件不再继续延用了。在Xilinx FPGA早期芯片型号中CMT包括一个PLL和两个DCM。DCM的核心是DLL,即延迟Locked Loop,本身是一个数字模块,并且可以产生不同相位的时钟、分频、倍频、相位动态调整等,但缺点就是精度有限。

       PLL的英文全称为 Phase Locked Loop,即电子工程师经常挂在嘴边的锁相环,其本身也是一种反馈控制电路。锁相环即一种反馈控制电路,这里可能学计算机或者软件工程的同学会感到比较陌生,学自动化或者电子的同学至少应该听说过,其实说到底就是利用外部输入作为参考,再通过这个参考信号去控制其环路内部震荡信号的频率和相位。PLL可以对时钟网络进行系统级的时钟管理、偏移控制,达到时钟倍频、分频、相位偏移和可编程占空比的效果。Xilinx 7系列器件中的时钟资源包含了时钟管理单元CMT,同时每个CMT由一个MMCM和一个PLL组成,PLL产生的频率比DCM更加准确、抖动也更好,但PLL无法动态调整相位,如图2 所示是Xilinx 7系列器件PLL总体框图。

         MMCM即混合模式时钟管理器,Xilinx的ug472_7Series_Clocking官方手册给出的解释是:MMCM是一个PLL上加入DCM的一部分以进行精细的相移,如图3所示是Xilinx 7系列器件MMCM总体框图。也就是说MMCM在PLL的基础上加上了相位动态调整功能,又因为PLL是模块电路,而动态调相是数字电路,所以MMCM被称为混合模式,MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小,而在大部分的设计当中大家去使用MMCM或者PLL以产生不同相位的时钟、分频、倍频都是完全可以的。

FPGA之PLL详解

图2 Xilinx 7系列器件PLL总体框图

FPGA之PLL详解 ​​​​​​​ 

图3 Xilinx 7系列器件MMCM总体框图

        对于一个普通的设计来说,FPGA整个系统都使用统一的一个时钟或者可以通过简单编写代码的方式对时钟进行分频,典型的可以对输入50Mhz时钟进行手工计数,从而分频得到更低的时钟频率如12.5Mhz,但是对于有些功能复杂的FPGA系统来说,系统中有时候就会需要使用多个时钟甚至一些特殊设计中会用到时钟相位的偏移,而且仅通过编写代码输出的时钟只能去实现时钟的分频却无法实现时钟的倍频,所以学习MMCM/PLL IP核的将对我们以后的实际工作会有很大帮助。

     如图4在Vivado环境下我们先去打开MMCM/PLL IP核,如下图11-5所示是Clock Wizard下的配置,Clocking Features和Jitter Optimization选项框的各个选项,请查阅pg065-clk-wiz官方手册,每一项都有对应的具体英文解释,笔者不想在这里赘述,因为并不是重点,大家默认勾选Frequency Synthesis、Phase Alignment和Balanced选项即可。

FPGA之PLL详解

图4 在Vivado环境下打开MMCM/PLL IP核

      在Vivado环境下,在使用Clock Wizard配置MMCM/PLL IP核时,如图5所示,我们可以选择使用MMCM或PLL,大家可以打开Vivado操作一下,可以看到它们的区别也仅是图中红圈的部分,感兴趣的同学可以看一看pg065-clk-wiz官方手册,毕竟关于很多底层资源的细节和配置,官方手册永远是最好的答案!

FPGA之PLL详解 ​​​​​

图5 在Vivado环境下使用Clock Wizard配置MMCM/PLL IP核

MMCM/PLL IP练习

        我们做一个简单的仿真测试,来搞清楚MMCM/PLL IP核的具体功能,大家在以后的工作中如果需要使用到一个陌生的IP核,就请多阅读官方IP核的说明手册,再结合手册编写对应的Testbench,代入Modelsim仿真观察波形,便可以很快搞清楚IP核的使用细节。如图6、 7所示是在Vivado环境下配置MMCM/PLL IP核的Clocking Options和Output Clocks界面,这里在Clocking Options界面下,我们把clk_in1输入频率配置成开发板的晶振默认频率50Mhz,同时选择默认的MMCM,在Output Clocks界面下,我们勾选前5个时钟,并把Output Freq(MHz)分别配置成200、100、100、50、25,并把第3个100MHz的时钟相移Phase(degrees) 配置成180。

       如图8在Vivado环境下MMCM/PLL IP核的clk_wiz_0信号例化参考代码,大家可以把它直接粘贴过来,如图9所示,这里直接把IP核的相关信号例化到pll_test的测试文件下即可,然后给出50Mhz的输入时钟和reset信号作为激励,接着再把Testbench代入Modelsim下,即可观察到如图10所示的MMCM/PLL IP核的仿真结果,大家可以清晰地看到仿真结果是符合我们的预期的,当然有些FPGA工程师这里也习惯性把MMCM/PLL IP核输出的locked信号作为其他模块的rst_n信号。

FPGA之PLL详解 ​​​​​​图6 在Vivado环境下配置MMCM/PLL IP核的Clocking Options界面

FPGA之PLL详解 ​​​图7 在Vivado环境下配置MMCM/PLL IP核的Output Clocks界面

FPGA之PLL详解 ​​​​​图8 在Vivado环境下MMCM/PLL IP核的clk_wiz_0信号例化参考代码

FPGA之PLL详解 ​​图9 MMCM/PLL IP核的输入信号激励设计

FPGA之PLL详解 ​​​​图10 MMCM/PLL IP核的仿真结果文章来源地址https://www.toymoban.com/news/detail-481535.html

到了这里,关于FPGA之PLL详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA】Vivado软件 PLL IP核使用教程

            PLL (Phase Locked Loop),锁相环,是一种反馈控制电路。其功能主要是时钟倍频、分频、相位偏移和可编程占空比。 1、新建pll_test工程,点击Project Manager界面下的IP Catalog。  2、再在IP Catalog界面里搜索框搜索Clocking,找到下面的Clocking Wizard,双击打开配置界面。 3、进入配

    2024年02月06日
    浏览(54)
  • vivado中的FPGA时钟管理单元PLL学习记录

    FPGA中时钟管理模块(CMT)包括PLL和MMCM,用于将时钟倍频(比如输入时钟25M,我们要产生50M时钟)、分频(在不影响系统功能的前提下,较低的工作时钟,能够降低系统功耗)、改变相位偏移或占空比等。 当需要上板时,由于板上晶振时钟固定,所以其他频率的时钟产生就要用到

    2024年01月16日
    浏览(38)
  • 从底层结构开始学习FPGA(15)----MMCM与PLL

            《从底层结构开始学习FPGA》目录与传送门         锁相环 (phase-locked loop,PLL),是一种控制反馈电路。PLL对时钟网络进行系统级别的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。MMCM是混合模式时钟管理器,相当于能够进行精准

    2024年02月06日
    浏览(36)
  • FPGA_学习_10_IP核_PLL

    片上资源的使用,或者说IP核的使用,是FPGA编程要学习的分量很重的一部分内容。 其中最常见的就要属PLL了,时钟是一切程序的基础。 PLL的时钟倍频功能是用户自己手撕代码无法实现的,但使用PLL IP核,几步简单的图像界面的操作就能个实现。本文的内容就是配置一个PLL

    2024年02月13日
    浏览(30)
  • (一)FPGA IP核使用教程——以PLL实验为例

    此篇为专栏 《FPGA学习笔记》 的第一篇,记录我的学习FPGA的一些开发过程和心得感悟,刚接触FPGA的朋友们可以先去此专栏置顶 《FPGA零基础入门学习路线》来做最基础的扫盲。 本篇内容基于笔者实际开发过程和正点原子资料撰写,将会详细讲解此FPGA实验的全流程, 诚挚 地

    2024年02月03日
    浏览(28)
  • FPGA代码实现分频和pll分频后的时钟的使用

    1、代码实现的分频时钟 假如 clk_out 输出信号是我们想要的分频后的信号,然后很多人会直接把这个信号当作新的低频时钟来使用,并实现了自己想要的功能。虽然最终实现的功能是成功的,但往往忽略了一些隐患的存在,这种做法所衍生的潜在问题在低速系统中不易察觉,

    2024年02月05日
    浏览(30)
  • PLL基础知识介绍

    锁相环(PLL, Phase-Locked Loop)包括 三个关键器件: 鉴相器(PD, phase detector)、环路滤波器(loop filter)和压控振荡器(voltage-controlled oscillator)。鉴相器把周期性输入信号的相位与压控振荡器信号的相位进行比较;PD的输出信号是这两个输入信号之间的相位误差的度量。之后该误

    2023年04月19日
    浏览(31)
  • 从底层结构开始学习FPGA(16)----PLL/MMCM IP的定制与测试

    目录 系列目录与传送门 1、PLL IP的定制 ①、第一页 ②、第二页  ③、第三页

    2024年02月02日
    浏览(50)
  • 博客摘录「 Redis( 缓存篇 ==> 超详细的缓存介绍与数据一致性解决方案 &; 代码实现」

    Redis 旁路缓存 由于高并发原因,先更新数据库和先更新缓存策略都会因为延迟时间而导致数据不一致问题。 两种策略 先删除缓存,再更新数据库; 先更新数据库,再删除缓存。 因为缓存的写入通常要远远快于数据库的写入 ,所以先更新数据库再删缓存,删完缓存,下次访

    2024年02月15日
    浏览(30)
  • FPGA固核、硬核与软核的详细介绍以及之间的区别和联系

    注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料 ,将在公众号 CTO Plus 发布,请关注公众号: CTO Plus FPGA固核、硬核与软核的详细介绍以及之间的区别和联系 FPGA(Field-Programmablex0aGate Array)是一种可编程逻辑器件,可以通过编程实现 https://m

    2024年02月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包