分频器类型:整数分频与小数分频

分频器是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时才会考虑小数。

结构完整一览

下面这张图把整数和小数分频的核心结构放在一起对比,帮你建立整体认知。

分频器类型对比结构图 整数分频(Integer-N) VCO 输入 fVCO 计数器(C/N) 分频比 N (整数) 输出 fout = fVCO/N 小数分频(Fractional-N) VCO 输入 fVCO 多模分频器(MMD) 分频比 N 或 N+1(实时切换) ΣΔ 调制器(噪声整形) 平均输出 fout = fVCO / (N.F) 整数分频器:计数器直接分频,输出干净。小数分频器:MMD + ΣΔ,通过动态切换分频比实现小数平均,引入量化噪声。

快速决策思路:先算一下你需要的分辨率。如果 fref = 26MHz,需要1MHz步进,整数分频完全OK。如果步进只有100kHz甚至10kHz,小数分频才是出路。记住:用小数分频时,务必把ΣΔ调制器的阶数和环路带宽一起仿真,避免带内噪声失控。

嗯,以上便是整数分频和小数分频的全貌。两种方案没有的好坏,只有适不适合你的应用。我的经验是:拿出纸笔,把频率计划、噪声预算、芯片功耗都过一遍,再选不迟。