基于xilinx-MMCM输出时钟相位调整的实现

deng@广州 2023.3.16

前言

在我们的一个应用中,采用ADC采集数据,ADC的采样时钟信号由FPGA提供。由于场景需求,需要动态调整输出时钟的相位,因此,本文主要讲述了如何使用MMCM进行动态调整输出时钟相位。

  1. 概述

MMCM的使用方法,最好先看一下文档:ug472_7Series_Clocking.pdf

在里边有讲到如何使用mmcm进行动态相位调整。

本文主要是简要的讲述如何进行IP设置,仿真验证需要注意什么事项。

  1. IP说明

  1. IP的配置说明

其他的设置就是正常的设置MMCM。

  1. IP接口信号说明

Psclk:相位调整的时钟;

Psen:相位调节的使能信号;

Psincdec:相位调整的方向,输出时钟的相位正向移动或者反向移动;

Psdone:相位调整的结束标志;

注意:

  1. psen信号,我看其他的人做仿真例子的时候,psen信号都是若干个psclk周期,但是,我在仿真的时候,如果psen是多个时钟周期的话,会有仿真报警;因此,我在实际的应用中,都是每次拉高一个周期的psen;

  1. psdone信号,基本是固定psen启动后的12个周期;

  1. 相位移动计算

在应用中,如何计算拉高多少次psen呢?

首先,需要了解,没拉高一次psen信号,相位移动VCO周期的56分之一,那么,我们可以根据我们的输出时钟信号进行计算。

比如,我的输出时钟是80MHz,如果将输出时钟从0度变成180度,那么需要计算如下:

  1. 仿真结果

在仿真中,用一个输出时钟与输入时钟的与门来反应时钟移相是否成功(只能用来协助仿真),不可用来综合应用;

当他们的相位刚好差180度的时候,这个与门输出是空的;刚好336次相位移动后,时钟输出相位移动180度;

  1. 总结与感想

  1. 仿真注意事项

仿真的时候,需要注意仿真库与IP生成的版本是否对应,我一开始使用2019.2的版本生成的IP,但是,使用的是2017.4的库文件,psdone信号一直没有拉高。后来,我直接用vivado进行仿真,是可以正确拉高的。我查看xsim下面的编译文件后,猛然发现可能是库文件问题;

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值