zoukankan      html  css  js  c++  java
  • 赛灵思S6器件族__PLL重配置一官方工程应用--S6

    在第一篇文章中,我简单介绍了一下PLL的相关的基础知识,在这篇文章中,我们主要介绍怎么修改官方的verilog程序,然后应用到我们的工程中去。

    1. 参考文件主要有以下几个:

    pll_drp.v 主要是PLL_DRP这个模块怎么使用,里面主要包含了一个rom和一个状态机,还有一些参数的计算,引用的是pll_drp_func.h这个文件中的函数,计算好之后,然后初始化到rom中,readme是一些更新信息,也可以打开看看,

    top文件是一些模块的例化,以及输出时钟的原语,最后的top_tb.v文件就是我们的测试文件了。拿到这份功成后,我们先仿真看一下吧。

    2.笔者应用的是ise + modelsim仿真的,在笔者仿真时发现一个错误,就是在pll_drp.v文件中,需要把

    这两个信号定义道RESTART之后,要不然不能仿真的。然后我把仿真文件的最后一句注释了,这样就可以一直有信号了://$stop ......

    接着,启动仿真吧:

    这里由几个控制信号需要说明:在系统刚上电时,SRDY会输出一个clk的高电平,之后才可以进行重新配置PLL的操作,配的过程就是使能STTEP信号,并不在STEEP信号有效的情况下判断STATE的值是1还是0,选择重配的状态时S1还是S2,之后等待SRDY再次有效之后就说明PLL已经配置ok了,这里用户可以自己在加自己的状态,比如S3。。。,但是需要例化rom,而且STAE信号要改成2bit来区分是哪个状态,也就是照猫画虎。

    接下来放大看一下,第一部分(和系统时钟一模一样):

    第二部分(加载第一组参数S1):

     

    6路时钟都倍频了一倍,且相位都有变化,好激动啊,由官方参考的代码心里安心多了。。。。QAQ

    详细分析一下:

    从图中可以看到0.625的45°相移,可以看到周期是3.125+0.625+1.25 ns = 5ns,占空比是50%,和我们的计算参数是一致的。至此,我们已经了解了PLL重配置的基本概念和简单的修改方法了,参数的计算公式如上所示,值得注意的是反馈的参数取值范围是1-64,分频的参数取值范围是1-128,千万不能超过这个范围,否则可能会出错,公式在下面。。。

    第三部分(加载第二组参数S2):

     

    相位和占空比也发生了变化。。。。

    3.那么我们如何修改才能应用到我们的工程中去呢。

     打开top文件,可以看到如下所示的例化参数:

    这些参数该怎么设置是什么意思呢?如下:

    计算参数说明:

    输出频率         :(反馈系数 / 设置输出的系数)* 输入时钟 (注:假设输入分频为1)

    输出相移         :数值 / 1000

    输出占空比  :数值 / 100_000

    举例:

    如上图设置的:8 / 4 * 100Mhz = 200Mhz, 对应的时钟周期是5ns。

    45000 / 1000 = 45度。

    45°* 5ns/360° =  0.625ns

    50000 / 100_000 = 0.5 占空比

     看到这里相信聪敏的你已经知道怎么玩这份工程了,只要修改这里的参数就可以了。

    5.总结:

    本文主要阐述了官方工程如何修改,比较浅易懂的介绍了PLL的重配置,就是利用ROM来配置PLL,用户可以修改官方的例化的参数,也可以自己再添加相应的n组参数去初始化rom,但是状态机哪里也需要修改呢,状态机的转移图在上一篇文章中已经分析过了,这里我贴一下需要修改状态机的位置,打开pll_drp.v,如图:

    这里会判断SADDR的值,然后选择开始配置rom的地址,可自行添加修改,本文可能还有一些没有说到的地方,大家自己动手试试吧,欢迎和我讨论,,转贴请注明出处,谢谢,下一节我们谈论一下如何更灵活的动态配置PLL,需要工程文件请向博主索要。

                                                                          ---------cofin_add 

  • 相关阅读:
    C语言实现二叉堆BuildHeap操作
    Java大浮点数
    线索二叉树
    二叉树的层次遍历
    CS231n Lecture3-Loss Functions and Optimization学习笔记
    Python函数式编程(高阶函数、map/reduce、filter、sorted、匿名函数、返回函数)-3
    CS231n Lecture2-Image Classification学习笔记
    Python高级特性(生成器、迭代器、列表生成式)-2
    Python函数(定义、参数、递归)-1
    Numpy中的广播(Broadcast)讲解简单易懂,困扰已久,终于想通了
  • 原文地址:https://www.cnblogs.com/cofin/p/6825543.html
Copyright © 2011-2022 走看看