deng@广州 2023.3.16
前言
在我们的一个应用中,采用ADC采集数据,ADC的采样时钟信号由FPGA提供。由于场景需求,需要动态调整输出时钟的相位,因此,本文主要讲述了如何使用MMCM进行动态调整输出时钟相位。
概述
MMCM的使用方法,最好先看一下文档:ug472_7Series_Clocking.pdf
在里边有讲到如何使用mmcm进行动态相位调整。
本文主要是简要的讲述如何进行IP设置,仿真验证需要注意什么事项。
IP说明
IP的配置说明
|
|
其他的设置就是正常的设置MMCM。
IP接口信号说明
|
Psclk:相位调整的时钟;
Psen:相位调节的使能信号;
Psincdec:相位调整的方向,输出时钟的相位正向移动或者反向移动;
Psdone:相位调整的结束标志;
注意:
psen信号,我看其他的人做仿真例子的时候,psen信号都是若干个psclk周期,但是,我在仿真的时候,如果psen是多个时钟周期的话,会有仿真报警;因此,我在实际的应用中,都是每次拉高一个周期的psen;
psdone信号,基本是固定psen启动后的12个周期;
相位移动计算
|
在应用中,如何计算拉高多少次psen呢?
首先,需要了解,没拉高一次psen信号,相位移动VCO周期的56分之一,那么,我们可以根据我们的输出时钟信号进行计算。
比如,我的输出时钟是80MHz,如果将输出时钟从0度变成180度,那么需要计算如下:
|
仿真结果
在仿真中,用一个输出时钟与输入时钟的与门来反应时钟移相是否成功(只能用来协助仿真),不可用来综合应用; 当他们的相位刚好差180度的时候,这个与门输出是空的;刚好336次相位移动后,时钟输出相位移动180度; |
|
|
|
总结与感想
仿真注意事项文章来源:https://www.toymoban.com/news/detail-645645.html
仿真的时候,需要注意仿真库与IP生成的版本是否对应,我一开始使用2019.2的版本生成的IP,但是,使用的是2017.4的库文件,psdone信号一直没有拉高。后来,我直接用vivado进行仿真,是可以正确拉高的。我查看xsim下面的编译文件后,猛然发现可能是库文件问题;文章来源地址https://www.toymoban.com/news/detail-645645.html
到了这里,关于基于xilinx-MMCM输出时钟相位调整的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!