首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
资源利用率报告中的LUT和LUTRAM有什么区别
2
xilinx verilog语法技巧(三)--RAM的初始化
3
为什么推荐使用XPM?
4
Block RAM的基本结构
5
为什么要用XPM_MEMORY
6
Vivado中用于时钟操作的几个Tcl命令
7
影响FPGA时序的进位链(Carry Chain), 你用对了么??
8
动态时钟相位
9
动态时钟频率
10
如何缩短Vivado运行时间
11
你的FPGA设计有这些缺陷吗
12
report_utilization远比你想象的强大
13
vivado如何快速找到schematic中的object
14
FPGA中的CLOCK REGION和SLR是什么含义
15
FPGA中的BEL, SITE, TILE是什么含义
16
如何快速查找目标cell
17
都是pin,有什么区别
18
都是net,有什么区别
19
一张图看懂cell, pin, net, port
20
如何快速找到组合逻辑生成的时钟
21
【Vivado那些事】Vivado下头文件使用注意事项
22
Pblock可以这么画
23
关于Pblock的8个必知问题
24
常用的跟Pblock相关的Tcl命令
25
【Vivado】那些事儿-汇总篇
26
【Vivado那些事】Xilinx FPGA普通IO能不能直接接入PLL作为时钟输入
27
Storage Elements
28
D触发器都有哪几种类型?对应什么样的代码?
29
Xilinx 7系列FPGA逻辑单元理解
30
Vivado下查看芯片资源
31
对RAM初始化怎么做
32
干货:Vivado 直接修改RAM初始化文件,避免重新综合、实现的方法
33
借助Elaborated Design优化RTL代码
34
一张图理解什么是好的设计层次
35
9个关于SSI芯片的必知问题
36
Vivado 2018.3 report_qor_suggestions怎么用
37
Vivado 2019.1新特性(5):更新的report_qor_suggestions
38
Xilinx的高质量时钟输出ODDR原语【随路时钟】【全局时钟网络】【ZC706输出时钟】【ZYNQ】
39
FPGA中BEL Site Tile FSR SLR分别指什么?
40
跟I/O相关的几个命令
41
Vivado Non-Project模式
42
FPGA中降低时钟skew的几种方法
43
FPGA时序优化之Reduce MUXF Mapping
44
什么是Forwarded Clock?
45
几个常见问题
46
如何让同一层次的模块在布局时更紧凑一些
47
什么情况下要用OOC综合方式
48
Vivado 2019.1新特性(2):report_ram_utilization
49
URAM和BRAM有什么区别
50
write_first/read_first/no_change什么区别
清单首页FPGA文章详情

动态时钟频率

本文基于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
代码语言:javascript
复制
https://www.xilinx.com/support/documentation/ip_documentation/clk_wiz/v6_0/pg065-clk-wiz.pdf
  1. ug472
代码语言:javascript
复制
https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf
下一篇
举报
领券