vivado中的FPGA时钟管理单元PLL学习记录

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

CMT简介

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

其中具体的一些时钟域,BUFG等时钟资源介绍,以及FPGA中的PLL和MMCM介绍可参考时钟IP核(MMCM PLL)、RAM 和 FIFO 实验-哔哩哔哩(待学)

这里只介绍PLL锁相环。

一、PLL IP的使用

1、ip调用

如果只是调用ip的话,知道怎样使用即可
vivado中的调用及上板测试可以参考:
FPGA实战(五)时钟IP核(MMCM PLL)

基本就是调用ip,然后设置一个输入时钟一个输出时钟;注意其中有一个locked信号,当locked信号拉高的时候代表锁相环输出信号已经稳定
locked信号常被用于复位信号

2、生成的频率限制

另外,时钟管理IP核并不能产生任意频率的时钟信号。 产生的时钟信号与输入之间仅能是M/N的关系,其中M、N必须是整数(在原理部分会介绍)。

二、PLL实现原理

PLL组成:
vivado pll,fpga开发,学习,单片机

锁相环是一种以消除频率误差为目的的反馈控制电路。原理是利用相位误差消除频率误差,所以当电路平衡时,会有剩余相位误差,但频率误差为0
具体推导:
vivado pll,fpga开发,学习,单片机
也可以参考一文弄懂锁相环(PLL)的工作原理及应用
终止最终达到的效果就是输入输出有相位差(VCO需要一定的电压驱动它到正确的频率,所以一定有相差)但是频率相等,就如下图所示。
vivado pll,fpga开发,学习,单片机

那对于分频是怎样实现的呢?
如下图,插入分频模块即可,这样就可以实现输出/输出=N/M, N M为整数。
vivado pll,fpga开发,学习,单片机
图片来自锁相环的工作原理

三、使用过程中的问题

我只使用锁相环对板子就行了简单的分频,基于PYNQ-Z2板子,从125M到50M,写了一个灯亮灭的程序,等locked信号稳定后才计数。
程序如下:

module led(
(* MARK_DEBUG="true" *)input sys_clk,
input clk_restn,
output reg[3:0] led
    );
    reg[31:0] timer_cnt;
    (* MARK_DEBUG="true" *)wire clk;
    (* MARK_DEBUG="true" *)wire locked_out;
  /*  
    initial begin
       led<=0;
       timer_cnt<=0;
    end
    */
   clk_wiz_0 clk_wiz
   (
    // Clock out ports
    .clk_out1(clk),     // output clk_out1
    // Status and control signals
    .reset(clk_restn), // input resetn
   // Clock in ports
    .clk_in1(sys_clk),      // input clk_in1
    .locked(locked_out));       // output locked

      always@(posedge clk) begin
        if((locked_out==1) && (timer_cnt>=32'd49999999))begin
        //if(timer_cnt>=32'd4999)begin
            led<=~led;
            timer_cnt<=0;
        end
        else if(locked_out==1)begin
            led<=led;
            timer_cnt<=timer_cnt+1;
        end
        else begin
            led<=led;
            timer_cnt<=0;
        end
    end
endmodule

我设置的是1s亮1s灭,但是实际上板出现的问题是1s亮2s灭或者2s灭1s亮,肉眼可见的有问题。
上板抓信号发现locked信号拉高之后还会拉低,不是一直拉高,这就导致拉低时计数清零,拉高又重新计数,时长就变长了。
最后发现问题是板子有问题,换了板子就正确了。应该是原来板子晶振有问题,会周期性不稳定,导致PLL的locked信号周期性拉低拉高。

程序注意事项

上述程序也有一些问题,这里记录一下:
1、initial块不要写在要综合的代码中,因为它不可综合,用复位来设置初值
2、clk是分频出来的,最好后面模块也给复位,不然如果PLL出错后面clk控制的就都没办法控制了
3、locked_out==1这样写是没问题的,如果板子时钟没问题就是拉高之后不会拉低了。也确实要等始终稳定locked_out=1再进行操作。文章来源地址https://www.toymoban.com/news/detail-794226.html

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

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

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

相关文章

  • 【FPGA异步时钟域约束方法】——Vivado时钟组约束

    【FPGA异步时钟域约束方法】——Vivado时钟组约束 在 FPGA 设计过程中,由于存在多时钟域的情况,需要采取一定的策略来处理时序约束问题。其中,异步时钟域是一种常见的设计需求,为了保证设计时序的正确性和稳定性,我们需要使用 Vivado 提供的时钟组约束方法来对异步时

    2024年02月04日
    浏览(50)
  • FPGA 学习笔记:Vivado 工程管理技巧

    当前使用 Xilinx 的 FPGA,所以需要熟悉 Xilinx FPGA 的 开发利器 Vivado 的工程管理方法 这里初步列举一些实际 Xilinx FPGA 开发基于 Vivado 的项目使用到的工程的管理技巧 做过嵌入式软件或者其他软件开发的工程技术人员,都会想到使用代码管理工具,如 SVN 、Git 等对代码进行管理

    2024年02月09日
    浏览(38)
  • 基于FPGA的数字时钟(使用vivado)

    使用两个四位数码管,可以实现时钟分钟秒钟显示,高两位设置不显示。 换了一个新开发板,nexys4ddr,资料不多,最多使用的就是一本英文Reference Manual。 其实是老师觉得我计数器还差点,得再练练。 Digilent NEXYS4DDR Vivado2018.3 60进制秒钟计数然后进1分钟 60进制分钟计数然后进

    2024年02月03日
    浏览(43)
  • FPGA时钟资源与设计方法——Xilinx(Vivado)

    1.时钟资源包括:时钟布线、时钟缓冲器(BUFGBUFRBUFIO)、时钟管理器(MMCM/PLL)。 2.时钟类型有三种:全局时钟,可以驱动整个内核上的同步逻辑;局部时钟,可以驱动特定和相邻区域的逻辑;IO时钟,可以驱动某个IO的特定逻辑。 3.混合模式时钟管理器(MMCM)和数字时钟管理

    2024年02月22日
    浏览(56)
  • FPGA学习:PLL的使用与仿真

    PLL(phase-locked loop),即锁相环。是FPGA中的重要资源。由于一个复杂的FPGA系统往往需要多个不同频率,相位的时钟信号。所以,一个FPGA芯片中PLL的数量是衡量FPGA芯片能力的重要指标。FPGA的设计中,时钟系统的FPGA高速设计机器重要,一个低抖动,低延迟的系统时钟会增加FPGA设计

    2023年04月17日
    浏览(39)
  • FPGA学习笔记(三):PLL 锁相环

    在 FPGA 芯片内部集成了 PLL(phase-locked loop,锁相环) ,可以倍频分频,产生其它时钟类型。PLL 是 FPGA 中的重要资源,因为一个复杂的 FPGA 系统需要不同频率、相位的时钟信号,一个 FPGA 芯片中 PLL 的数量是衡量 FPGA 芯片能力的重要指标。 Ultrascale+ 系列的 FPGA 使用了专用的全局

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

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

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

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

    2024年02月06日
    浏览(50)
  • Xilinx 7系列FPGA全局时钟缓冲器基本单元

    Global Clock Buffer Primitives(全局时钟缓冲器基本单元)在FPGA(现场可编程门阵列)和其他数字系统中扮演着至关重要的角色。这些基本单元被设计用于处理、分配和增强时钟信号,以确保系统中的各个组件都能以精确和同步的方式工作。 表2-2中的基本单元代表了全局时钟缓冲

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

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

    2024年02月02日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包