本文基于Xilinx FPGA 的clocking wizard IP进行动态调整时钟频率
动态调整时钟频率输出,需要在 IP 界面勾选 Dynamic Reconfig
选项。这时候 IP 会多出来一个 AXI-lite 的控制接口。
首先看一下PLL、MMCM 的原理如下图。
其中主要是 M、 D、 O 三个参数影响了输出的频率,关系式如下图公式 3-2 所示。
所以综合来看,就是如何修改这三个参数,就可以达到动态调整时钟频率的目的。
在手册中查找 CLKOUT0 输出参数 D 的寄存器地址为0x200
,默认值为0x01010A00
,其中 Bit[7:0]表示的就是参数 D 的值。所以配置 D 的值为 1 ,表示分频为 1 。
在手册中查找 CLKOUT0 输出参数 M 的寄存器地址为0x200
,默认值为0x01010A00
,其中 Bit[15:8]表示的就是参数 M 整数部分值。所以配置 M 的值为 A ,相当于倍频 10 倍。小数部分为 Bit[25:16] 表示参数 M 的小数部分。
在手册中查找 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 ,进行修改如下
配置寄存器如下图所示
动态调整结果可以看到输出为 11ns
https://www.xilinx.com/support/documentation/ip_documentation/clk_wiz/v6_0/pg065-clk-wiz.pdf
https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf