分频器类型:整数分频与小数分频
分频器是PLL里最基础,也最容易出坑的模块。你想想看,VCO出来的高频信号,必须经过分频才能和参考频率比较相位。分频比怎么选?整数还是小数?这里头门道不少。
我这些年调过的PLL,十有八九都用整数分频,简单、干净。但遇到频率步进要求很细的场景,整数分频就力不从心了——这时候小数分频上场。下面我把两种类型的原理、结构、优缺点拆开讲。
整数分频(Integer-N Divider)
整数分频,说白了就是计数器。VCO输出N个周期,分频器输出一个周期。分频比N是整数,比如2、4、8、16。实现方式有两种:异步计数器和同步计数器。
关键指标:整数分频输出频率 = fVCO / N,N ≥ 2。
异步分频器
把多个D触发器级联,前一级输出做后一级时钟。优点在于功耗低、结构简单,适合高速场景。缺点嘛,每级触发器都有延迟,多个级联后相位噪声会累积。我记得有一回在28nm项目里,用了4级异步分频,结果VCO的相位噪声被分频器生生抬高了3dB。后来换了同步结构才压下去。
同步分频器
所有触发器共用VCO时钟,输出在同一个时钟沿跳变。输出抖动小,相位噪声干净。但功耗大,而且频率上限受触发器速度限制。我习惯在关键路径上先用异步预分频降低频率,后面再用同步计数器,这样性能和功耗能平衡。
// Verilog示例:整数分频器(同步,分频比N=5)
module integer_divider #(parameter N = 5) (
input clk,
input rst_n,
output reg out
);
reg [2:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt <= 0;
out <= 0;
end else begin
if (cnt == N-1) begin
cnt <= 0;
out <= ~out;
end else begin
cnt <= cnt + 1;
end
end
end
endmodule
我的经验:整数分频的复位信号一定要处理好。我曾经遇到一个bug,异步复位释放时刚好在时钟上升沿,导致计数器状态错乱,分频比跳变。后来强制加两级同步器,再也不敢偷懒。
小数分频(Fractional-N Divider)
为什么要小数分频?很简单:你想要的输出频率和参考频率之间,分频比不是整数。比如参考26MHz,要输出2400.01MHz,分频比92.308…。整数分频只能做到92或93,频率误差巨大。小数分频通过动态切换分频比,让平均分频比等于目标小数。
结构上,小数分频器=多模分频器(Multi-Modulus Divider)+ ΣΔ调制器(Sigma-Delta Modulator)。多模分频器能按控制字在几个连续整数分频比之间切换(比如N、N+1、N+2)。ΣΔ调制器根据小数部分动态决定当前周期用哪个分频比。
注意陷阱:小数分频会产生量化噪声,ΣΔ调制器会把这些噪声推到高频,环路滤波器再滤掉。但若环路带宽和调制器阶数匹配不好,噪声会折回带内,导致相位噪声恶化。我见过一个团队不管三七二十一直接上三阶ΣΔ,结果带内噪声比整数模式还差。
工作原理
假设目标分频比N.F = 100.3。3/10的时间里用101,7/10的时间里用100,平均就是100.3。ΣΔ调制器负责把0.3这个分数用高频1位码流表示,每次输出0或1,决定分频比是100还是101。码流的频谱由ΣΔ的噪声整形决定。
// 伪代码:多模分频器控制
fraction = 0.3;
for each reference cycle:
if (fraction > 0.5):
divider = N+1; // 101
fraction = fraction - 0.5;
else:
divider = N; // 100
fraction = fraction + 0.5;
// 实际使用ΣΔ调制器,避免极限环
整数 vs 小数:如何选择
直接上对比表,一目了然。
| 对比项 | 整数分频 | 小数分频 |
|---|---|---|
| 分频比范围 | 整数,通常2~128+ | 任意有理数(受限于调制器精度) |
| 频率分辨率 | 受限于参考频率(Δf = fref) | 极细,可低于1Hz(取决于小数位数) |
| 相位噪声 | 干净,无量化噪声 | 有ΣΔ量化噪声,需合理设计环路 |
| 设计复杂度 | 低,计数器即可 | 高,需ΣΔ调制器、多模分频器 |
| 功耗 | 相对低 | 稍高(多模分频器+数字逻辑) |
| 典型应用 | 整数倍参考时钟、低抖动PLL | 分数倍频率合成、窄步进无线通信 |
我的建议:能上整数就别碰小数,除非频率分辨率逼着你。有些工程师一上来就上小数分频,以为很高级,结果被噪声、杂散搞得焦头烂额。我自己的准则——要求RMS抖动小于0.5ps且频率步进大于1MHz时,坚决用整数。只有步进小于100kHz时才会考虑小数。
结构完整一览
下面这张图把整数和小数分频的核心结构放在一起对比,帮你建立整体认知。
快速决策思路:先算一下你需要的分辨率。如果 fref = 26MHz,需要1MHz步进,整数分频完全OK。如果步进只有100kHz甚至10kHz,小数分频才是出路。记住:用小数分频时,务必把ΣΔ调制器的阶数和环路带宽一起仿真,避免带内噪声失控。
嗯,以上便是整数分频和小数分频的全貌。两种方案没有的好坏,只有适不适合你的应用。我的经验是:拿出纸笔,把频率计划、噪声预算、芯片功耗都过一遍,再选不迟。