文章目录
- 前言
- 1. 时钟分频的基本概念
- (1) 什么是时钟分频?
- (2) 为什么需要时钟分频?
- 降低功耗
- 匹配外设需求
- 时序约束
- 多时钟域设计
- 2. 时钟分频的实现方式
- (1) 硬件分频(计数器分频)
- 偶数分频(50%占空比)
- 实现方法
- 波形示例
- 奇数分频(非50%占空比)
- 实现方法
- 波形示例
- (2) 锁相环(PLL)分频
- 优点
- FPGA 示例(Xilinx PLL)
- (3) 软件分频(微控制器)
- 3. 时钟分频的关键问题
- (1) 时钟抖动(Jitter)
- 解决方案
- (2) 时钟偏移(Skew)
- 解决方案
- (3) 跨时钟域(CDC, Clock Domain Crossing)
- 解决方案
- 4. 典型应用场景
- 5. 总结
- 实现方式
- 硬件分频
- PLL分频
- 软件分频
- 关键问题
前言
本文简单介绍了一下时钟分频。时钟分频(Clock Division)是数字电路设计中常见的技术,用于将高频时钟信号转换为较低频率的时钟信号,以满足不同模块的时序需求。它在处理器、FPGA、SoC(片上系统)和嵌入式系统中广泛应用。
1. 时钟分频的基本概念
(1) 什么是时钟分频?
时钟分频是指通过硬件或软件方式降低输入时钟频率,生成一个频率较低的时钟信号。
例如,将 100MHz 的时钟分频为 **50MHz(2分频)**或 25MHz(4分频)。
(2) 为什么需要时钟分频?
降低功耗
降低功耗:高频时钟会增加动态功耗,分频可减少功耗。
匹配外设需求
匹配外设需求:某些外设(如UART、I2C)需要较低时钟频率。
时序约束
时序约束:某些逻辑电路无法在过高频率下稳定工作。
多时钟域设计
多时钟域设计:不同模块可能需要不同时钟频率。
2. 时钟分频的实现方式
(1) 硬件分频(计数器分频)
最常见的方式是使用计数器(Counter),通过计数输入时钟的边沿来生成分频时钟。
偶数分频(50%占空比)
适用于 2、4、6、8… 分频。
实现方法
计数器在上升沿计数,达到 𝑁/2时翻转输出时钟。
Verilog 示例(2分频):
reg clk_div;
always @(posedge clk) beginclk_div <= ~clk_div; // 每个上升沿翻转,实现2分频
end
波形示例
clk: |‾||‾||‾||‾||‾|
clk_div:|¯¯¯||¯¯¯|_|¯¯¯
奇数分频(非50%占空比)
适用于 3、5、7… 分频。
实现方法
使用两个计数器(上升沿和下降沿触发),组合生成分频时钟。
Verilog 示例(3分频):
reg [1:0] cnt;
reg clk_div;
always @(posedge clk) beginif (cnt == 2) begincnt <= 0;clk_div <= ~clk_div;end else begincnt <= cnt + 1;end
end
波形示例
clk: |‾||‾||‾||‾||‾||‾|_
clk_div:_|¯¯¯¯¯||¯¯¯¯¯|
(2) 锁相环(PLL)分频
PLL(Phase-Locked Loop) 可以生成精确的分频/倍频时钟。
优点
- 可编程分频系数(如1.5、2.5等非整数分频)。
- 低抖动(jitter),适合高速应用。
FPGA 示例(Xilinx PLL)
// 在FPGA中通常通过IP核配置
clk_wiz_0 pll_inst (.clk_in1(clk_100MHz),.clk_out1(clk_50MHz), // 2分频.clk_out2(clk_25MHz) // 4分频
);
(3) 软件分频(微控制器)
在MCU(如STM32)中,可通过定时器(Timer)实现分频:
// STM32 HAL 库示例:定时器2分频
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 1; // 输入时钟 / (1+1) = 2分频
htim2.Init.Period = 1000; // 自动重装载值
HAL_TIM_Base_Init(&htim2);
3. 时钟分频的关键问题
(1) 时钟抖动(Jitter)
硬件分频可能引入抖动,PLL 分频更稳定。
解决方案
解决方案:使用低抖动时钟源或PLL。
(2) 时钟偏移(Skew)
分频后的时钟可能因路径延迟不同步。
解决方案
解决方案:使用全局时钟缓冲器(BUFG)。
(3) 跨时钟域(CDC, Clock Domain Crossing)
分频后可能涉及不同时钟域的数据传输,导致亚稳态。
解决方案
解决方案:
使用 双触发器同步(2-FF Synchronizer)。
使用 异步 FIFO 处理高速数据。
4. 典型应用场景
应用 分频方式 说明
CPU核心时钟 PLL分频 动态调整主频(如1GHz→500MHz)
UART通信 计数器分频 生成波特率时钟(如115200Hz)
PWM信号生成 定时器分频 调节占空比和频率
低功耗模式 降频分频 **降低时钟频率以省电
5. 总结
时钟分频 是数字系统设计中的关键技术,用于生成不同频率的时钟信号。
实现方式
硬件分频
硬件分频(计数器):简单,适用于整数分频。
PLL分频
PLL分频:精确,支持非整数分频。
软件分频
软件分频(MCU):灵活,适用于可编程系统。
关键问题
关键问题:抖动、偏移、跨时钟域同步需特别注意。
掌握时钟分频技术,可以优化系统性能、降低功耗,并提高设计的灵活性。