动态时钟频率

时间:2022-07-25
本文章向大家介绍动态时钟频率,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

本文基于Xilinx FPGA 的clocking wizard IP进行动态调整时钟频率

clocking wizard简介

动态调整时钟频率输出,需要在 IP 界面勾选 Dynamic Reconfig选项。这时候 IP 会多出来一个 AXI-lite 的控制接口。

动态调整频率原理

首先看一下PLL、MMCM 的原理如下图。

其中主要是 M、 D、 O 三个参数影响了输出的频率,关系式如下图公式 3-2 所示。

所以综合来看,就是如何修改这三个参数,就可以达到动态调整时钟频率的目的。

调整参数 D

在手册中查找 CLKOUT0 输出参数 D 的寄存器地址为0x200,默认值为0x01010A00,其中 Bit[7:0]表示的就是参数 D 的值。所以配置 D 的值为 1 ,表示分频为 1 。

调整参数 M

在手册中查找 CLKOUT0 输出参数 M 的寄存器地址为0x200,默认值为0x01010A00,其中 Bit[15:8]表示的就是参数 M 整数部分值。所以配置 M 的值为 A ,相当于倍频 10 倍。小数部分为 Bit[25:16] 表示参数 M 的小数部分。

调整参数 O

在手册中查找 CLKOUT0 输出参数 O 的寄存器地址为0x208,默认值为0x0004000A,其中 Bit[7:0]表示的就是参数 O 整数部分值。所以配置 M 的值为 A ,相当于分频 10 倍。小数部分为 Bit[17:8] 表示参数 O 的小数部分。

相位参数

在手册中查找 CLKOUT0 相位寄存器地址为0x20C,默认值为0x00000000,表示输出相位为 0 。

占空比参数

在手册中查找 CLKOUT0 相位寄存器地址为0x210,默认值为0x0000C350,表示占空比为 50% 。

仿真实验

注:这些寄存器配置修改必须在 locked 信号拉高之后进行修改,修改完后等待 locked 重新拉高,表示修改成功。

本次实验输入时钟频率Fclk_IN = 100M ,进行修改如下

  • M = 10
  • D = 1
  • O = 11

配置寄存器如下图所示

动态调整结果可以看到输出为 11ns

参考链接

  1. pg065
https://www.xilinx.com/support/documentation/ip_documentation/clk_wiz/v6_0/pg065-clk-wiz.pdf
  1. ug472
https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf