2. 噪声模型:电阻、MOS管、BJT管的噪声模型建立与参数提取

噪声建模这事儿,说白了就是给电路里的“捣乱分子”画个像。你想想看,一个理想电阻只发热,但实际电阻会贡献热噪声;一个理想MOS管只放大信号,但实际MOS管会贡献闪烁噪声和沟道热噪声。搞不清楚这些噪声源长什么样,低噪声设计就是空中楼阁。

我个人习惯,拿到一个工艺的第一件事,不是跑DC仿真,而是先把无源器件和有源器件的噪声模型过一遍。为什么?因为后仿真发现噪声超标再回头改版,那代价就太大了。我在项目中遇到过好几次,明明前仿噪声指标过了,流片回来测试却差了3dB——最后查出来是电阻模型里的噪声参数没设对。

2.1 电阻的噪声模型

电阻的噪声模型是最基础的,也是最容易被忽视的。很多新手觉得电阻嘛,给个阻值就行了。其实不然。

2.1.1 热噪声模型

电阻的热噪声,也叫约翰逊噪声。它的功率谱密度是:

S_v(f) = 4kTR

其中k是玻尔兹曼常数,T是绝对温度,R是电阻值。这个公式看着简单,但有几个坑要注意。

关键点:热噪声是白噪声,频谱平坦。但实际电阻在高频会有寄生效应,导致噪声谱在高频段滚降。仿真时如果用了理想电阻模型,高频噪声会被低估。

我曾经在一个2.4GHz LNA的设计中,用了理想电阻模型做前仿,结果后仿发现NF比预期高了0.8dB。查了半天,发现是电阻的寄生电容在高频形成了低通滤波,把信号衰减了,但噪声却没同步衰减。从那以后,我所有的高频设计都用带寄生参数的电阻模型。

2.1.2 闪烁噪声模型

很多人以为只有有源器件才有闪烁噪声。其实某些薄膜电阻、多晶硅电阻也有闪烁噪声,尤其是当有直流电流流过时。

电阻的闪烁噪声模型通常用经验公式:

S_v(f) = (K_f * I^AF) / (f^EF * W * L)

参数说明:

参数 含义 典型值范围
K_f 闪烁噪声系数 10^-24 ~ 10^-28
AF 电流依赖指数 0.5 ~ 2.0
EF 频率依赖指数 0.8 ~ 1.2
W, L 电阻的几何尺寸 由工艺决定

小技巧:在Spectre中,电阻的闪烁噪声模型默认是关闭的。你需要手动在模型文件中设置flicker_noise_model = 1才能激活。很多PDK的默认设置都不开这个,不注意就会漏掉。

2.2 MOS管的噪声模型

MOS管的噪声模型比电阻复杂得多。它包含沟道热噪声、闪烁噪声,还有栅极感应噪声。我刚开始做模拟IC的时候,总觉得MOS管的噪声模型就是几个公式往里套,后来发现参数提取才是真正的技术活。

2.2.1 沟道热噪声

长沟道MOS管的沟道热噪声模型是:

S_id(f) = 4kT * γ * gm

γ是噪声系数,长沟道器件γ=2/3,短沟道器件γ会增大到1~2。为什么?因为短沟道器件有速度饱和效应和热载流子效应,沟道不再是均匀电阻。

我记得有一次做65nm工艺的LNA,用长沟道模型算出来的NF比实测低了1.2dB。后来查文献才发现,短沟道器件的γ因子需要根据偏置电压修正。我建议大家在0.18μm以下的工艺中,直接用BSIM4模型里的tnoimod参数来控制沟道热噪声模型。

2.2.2 闪烁噪声模型

MOS管的闪烁噪声,也就是1/f噪声,是低频设计的主要限制因素。它的模型是:

S_vg(f) = K_f / (W * L * Cox * f^EF)

或者用电流形式:

S_id(f) = (K_f * gm^2) / (W * L * Cox * f^EF)

注意:闪烁噪声的K_f参数在不同工艺、不同器件类型(NMOS vs PMOS)之间差异很大。PMOS的闪烁噪声通常比NMOS小1~2个数量级。如果你做的是低频低噪声设计,比如生物电信号放大器,建议优先用PMOS做输入对管。

2.2.3 栅极感应噪声

高频下,栅极的分布电阻和沟道噪声会通过栅氧电容耦合到栅极,产生栅极感应噪声。这个噪声在射频设计中不可忽略。

栅极感应噪声的功率谱密度:

S_ig(f) = 4kT * δ * (ω^2 * Cgs^2) / (5 * gm)

δ是栅极噪声系数,长沟道器件δ=4/3。这个噪声和频率的平方成正比,所以在GHz频段会变得非常显著。

我在设计一个5GHz的VCO时,就吃过栅极感应噪声的亏。当时只考虑了沟道热噪声和闪烁噪声,结果相位噪声仿真始终比实测低3dB。后来在模型里加入了栅极感应噪声,仿真才和测试对得上。

2.3 BJT管的噪声模型

BJT管的噪声模型相对成熟,但参数提取的细节很多。BJT的主要噪声源包括:基极电阻热噪声、散粒噪声、闪烁噪声。

2.3.1 基极电阻热噪声

基极电阻rbb'是BJT的一个寄生参数,它产生的热噪声为:

S_vb(f) = 4kTrbb'

这个噪声在BJT的输入回路中串联,会直接放大到输出端。我建议大家在设计低噪声BJT放大器时,优先选择rbb'小的器件。通常,多指条结构的BJT比单指条的rbb'小很多。

2.3.2 散粒噪声

散粒噪声是BJT的主要噪声源,来源于载流子穿越PN结的随机性。它包括基极散粒噪声和集电极散粒噪声:

S_ib(f) = 2qIB
S_ic(f) = 2qIC

其中q是电子电荷,IB是基极电流,IC是集电极电流。散粒噪声是白噪声,频谱平坦。

重要结论:BJT的噪声系数在某个偏置电流下存在最小值。这个最优偏置电流可以通过噪声模型推导出来。我一般会在仿真中扫描IC,找到NF最小的偏置点,然后在这个点附近做设计。

2.3.3 闪烁噪声

BJT的闪烁噪声主要来自基极电流的波动,模型为:

S_ib(f) = (K_f * IB^AF) / f^EF

BJT的闪烁噪声转折频率通常在1kHz~100kHz之间,比MOS管低很多。所以BJT在低频低噪声应用中仍然有优势。

2.4 噪声参数提取方法

模型建好了,参数怎么提?我分享几个实战中常用的方法。

2.4.1 从PDK模型文件中提取

最直接的方法是从PDK的模型文件中读取噪声参数。以BSIM4模型为例,噪声相关的参数包括:

// 沟道热噪声参数
tnoimod = 1      // 0: 长沟道模型, 1: 短沟道模型
tnoia   = 1.5    // 噪声系数修正参数
tnoib   = 3.5    // 噪声系数修正参数

// 闪烁噪声参数
fnoimod = 1      // 0: 关闭闪烁噪声, 1: 开启闪烁噪声
noia    = 1e-20  // 闪烁噪声系数K_f
noib    = 5e-5   // 闪烁噪声指数AF
noic    = 0.8    // 闪烁噪声频率指数EF

实战经验:PDK给的参数不一定准确。我习惯先跑一个简单的噪声仿真,和测试数据对比。如果偏差超过10%,就需要自己提取参数。提取方法是用不同偏置、不同尺寸的器件做噪声测试,然后用最小二乘法拟合模型参数。

2.4.2 通过仿真提取

如果你没有测试数据,也可以通过仿真来验证噪声参数。步骤是:

  1. 搭建一个简单的共源放大器或共射放大器
  2. 设置好偏置点
  3. 运行noise仿真,得到输入参考噪声谱
  4. 对比理论计算值和仿真值
  5. 如果偏差大,检查模型参数设置

我曾经用这个方法发现一个0.18μm PDK的闪烁噪声参数设错了。那个PDK的NMOS闪烁噪声K_f设成了1e-24,但实际测试值是5e-24。如果不修正,低频噪声仿真会偏小7dB。

2.5 本章知识体系

下面这张图总结了本章的噪声模型体系,方便大家对照学习:

噪声模型知识体系 噪声模型 电阻噪声模型 MOS管噪声模型 BJT管噪声模型 热噪声 闪烁噪声 沟道热噪声 闪烁噪声 栅极感应噪声 基极电阻热噪声 散粒噪声 闪烁噪声 噪声参数提取方法 从PDK模型文件提取 通过仿真验证 通过测试数据拟合 核心:模型准确 → 参数正确 → 仿真可信 → 流片成功

嗯,这张图把本章的知识结构串起来了。从上到下,先分清楚三类器件的噪声模型,再掌握参数提取的方法。你可以在学习每个小节时,对照这张图看看自己处在哪个位置。

最后提醒一句:噪声模型再漂亮,如果参数提取不准,仿真结果就是废纸。我见过太多人花大量时间优化电路,结果发现是模型参数设错了。所以,拿到一个新工艺,先花半天时间把噪声模型和参数验证一遍,这比什么都重要。