
1. 无源电路噪声的本质先搞清楚噪声从哪里来做模拟电路或者射频电路设计的人几乎每天都要跟噪声打交道。很多人一开始有个误区觉得“无源器件嘛就是电阻电容电感又不放大信号哪来的噪声”但实际上恰恰是这些看似“安静”的元件构成了绝大多数系统噪声底限的物理来源。你可以在有源器件上做各种噪声优化把运放换成超低噪声的、把LDO换成高性能的但只要前端挂了一个不合适的无源网络性能天花板立刻就被钉死了。我最早意识到这个问题是在做一个高精度信号采集链路的时候。前端是一个简单的RC抗混叠滤波器后面接ADC驱动运放。仿真的时候运放选的是顶配型号数据手册上电压噪声密度低得感人结果整个链路实测噪声性能却远达不到预期。排查了半天最后发现瓶颈根本不在运放而是RC滤波器的电阻贡献了绝大部分噪声。从那以后我对无源电路的噪声就格外上心今天就系统地把这块内容捋一遍。1.1 电阻热噪声——无源噪声的绝对主角电阻的热噪声也叫约翰逊噪声或奈奎斯特噪声是无源电路里最核心、最不可避免的噪声来源。它的物理本质是导体内部载流子的随机热运动。只要温度高于绝对零度载流子就在不停地做无规则运动这种运动会在电阻两端产生一个随机的电压波动。这个电压的功率谱密度是平坦的也就是说在各个频率上贡献的噪声功率基本一样所以它属于白噪声的范畴。工程上最常用的表达是Vn² 4kTRB其中k是玻尔兹曼常数1.38×10⁻²³ J/KT是绝对温度单位KR是电阻阻值单位ΩB是考察的带宽单位Hz。注意这里Vn是噪声电压的有效值不是峰峰值。如果要用电流源模型来表示则对应的噪声电流为In² 4kTB / R这两个模型是等价的一个用戴维南等效一个用诺顿等效。具体用哪个看后面的电路拓扑——串联在信号通路里的电阻通常用电压噪声模型比较直观并联在节点上的电阻比如偏置电阻、反馈电阻用电流噪声模型算起来更方便。举一个实际的数大家感受一下量级。室温下取T 300K一个10kΩ的电阻在1MHz带宽内的热噪声电压为Vn sqrt(4 × 1.38×10⁻²³ × 300 × 10×10³ × 1×10⁶) ≈ 12.87μV也就是说一个10kΩ电阻在1MHz带宽内自身就在产生将近13μV的有效值噪声。这个数放到16位ADC的道里如果满量程是5V那么1个LSB大约76μV这个电阻的噪声就已经吃掉了不少动态裕量。要是换成1MΩ的电阻同带宽下噪声就变成了约128.7μV直接超过1个LSB。这就是为什么高精度电路里高阻值电阻必须慎用的根本原因。工程上还有一个很有用的经验常数在290K17℃下1kΩ电阻在1Hz带宽内的热噪声电压密度约为4nV/√Hz。你可以用这个数作为心理标尺快速估算——10kΩ就是约12.6nV/√Hz100kΩ就是约40nV/√Hz。算得多了几乎不用掏计算器就能判断某个电阻在这个位置是不是噪声瓶颈。1.2 电容和电感储能器件真的“无噪声”吗很多人问电容和电感有没有热噪声理想电容和理想电感是不产生噪声的因为它们本身没有耗散机制只有储能功能。但现实世界里没有理想的电容电感——它们内部都存在损耗而这些损耗对应的等效电阻就会产生热噪声。电容的损耗通常用等效串联电阻ESR和介质损耗因子tan δ来描述。高频场景下介质损耗往往比ESR更值得关注。一个陶瓷电容在特定频率下的等效损耗电阻会贡献和同阻值电阻一样的热噪声。对于电感来说主要看绕组电阻DCR和磁芯损耗对应的等效并联电阻。比如说一个用于电源滤波的功率电感DCR可能有几十毫欧到几百毫欧这个阻值虽然看着不大但在大电流回路里产生的噪声电流同样不可忽视。这里有个特别容易踩的坑在设计高阶无源滤波器的时候如果你用理想模型做仿真看到的是完美的频率响应和极低的噪声——但一旦换成实际器件模型滤波器在阻带的噪声底反而会抬高。原因很简单就是实际电容电感的寄生电阻贡献了额外的热噪声。所以仿真的时候从一开始就用带上寄生参数的非理想模型不要到最后才痛苦地发现“仿真过了实测挂了”。1.3 无源电路中的其他噪声来源除了热噪声无源电路里还可能出现其他类型的噪声尽管在多数情况下占比不大但特定场景下必须考虑。第一类是闪烁噪声也就是1/f噪声。碳膜电阻、合成电阻的1/f噪声比较明显金属膜电阻和金属箔电阻就好很多。在高精度低频电路里如果你选择了质量差的电阻型号低频段会看到噪声密度明显上翘这就是1/f噪声在作祟。处理方式很简单低频精密电路优先选金属膜或金属箔电阻避免使用碳质电阻。第二类是散粒噪声。严格来说散粒噪声主要出现在有势垒的器件中比如PN结。无源电路中出现散粒噪声的典型场景是ESD保护二极管在微导通状态下的漏电或者某些工艺中电阻本身包含的寄生结。虽然量级通常不大但在pA级的微电流放大电路中这点噪声可能成为瓶颈。第三类是外部耦合噪声。这不是器件自身产生的而是通过寄生电容、寄生电感从外部环境耦合进来的干扰。虽然严格说不属于“无源电路噪声”的定义范畴但在实际工程中外部干扰往往比器件自身的热噪声大得多。比如开关电源的开关频率谐波通过地弹耦合进敏感节点或者是数字信号通过衬底串扰进模拟前端。2. 带限白噪声工程中真正遇到的噪声形态理论上的白噪声在从直流到无穷大的整个频率范围内功率谱密度是常数这意味着它的总功率是无穷大的——这显然在物理上不可能存在。实际电路中的噪声要么被系统本身的带宽限制要么被测量设备的带宽限制。所以工程上谈论噪声几乎总是带限的。理解带限白噪声是连接理论计算与仿真测试之间的关键一环。2.1 白噪声、带限白噪声与噪声功率谱密度先明确几个概念。功率谱密度PSD描述的是噪声功率在频率轴上的分布。对于白噪声PSD是一个常数比如电阻热噪声的电压PSD就是4kTR单位是V²/Hz。如果把这个密度对频率积分就得到了该带宽内的噪声功率。对电压噪声密度单位nV/√Hz来说对它取平方后再对频率积分再开方就得到特定带宽内的噪声电压有效值。带限白噪声就是在有限带宽内PSD为常数、带宽之外近似为零的噪声。在Cadence仿真中你设置noise分析的起止频率本质上就是把仿真范围的噪声当作带限白噪声来考察。但要注意的是仿真范围的选择会直接影响积分结果——带宽设得窄积分噪声就小带宽设得宽积分噪声就大。这个道理很朴素但在实际中经常被忽略。我见过不少刚接触仿真的工程师拿到一个noise仿真结果看到输出噪声积分值是20μV就开始纠结“这个值对不对”。实际上不交代带宽的噪声积分值是没有意义的。正确做法是先明确系统的工作带宽再按照这个带宽去设置仿真范围或对结果做积分。2.2 等效噪声带宽的计算与工程意义等效噪声带宽ENBW是一个非常有用的概念。它把任意形状的实际噪声传输特性等效为一个理想矩形滤波器的带宽使得通过这个矩形滤波器的白噪声功率与实际滤波器输出端的白噪声功率相等。对于一阶RC低通滤波器来说它的3dB带宽是f₋₃dB 1/(2πRC)而等效噪声带宽则是ENBW (π/2) × f₋₃dB ≈ 1.57 × f₋₃dB为什么会有1.57这个系数因为一阶RC的幅频响应不是矩形的它在3dB带宽之外还有相当一部分能量。把矩形等效带宽算出来就比3dB带宽多出57%。这个1.57倍的系数在手工估算时非常有用——如果你知道一个系统的-3dB带宽它的等效噪声带宽简单乘上1.57就得到一阶近似。对于高阶滤波器等效噪声带宽和3dB带宽的比值会逐渐趋于1。比如二阶Butterworth的ENBW约为1.11倍f₋₃dB三阶约为1.05倍四阶及以上基本可以按1.03倍左右来估算。如果滤波器是Bessel类型的ENBW会稍微大一些因为它的幅频响应滚降更缓慢。做噪声估算的时候先用ENBW代替3dB带宽来计算可以让结果更贴近实测值。还有一类系统特别值得注意采样系统。对采样系统来说噪声带宽并不取决于信号带宽而是取决于抗混叠滤波器的带宽以及采样过程的等效噪声折叠效应。采样过程会把高于奈奎斯特频率的噪声折叠回基带这相当于某种意义上的“噪声混叠”。所以采样前端即使信号带宽只有几kHz如果抗混叠滤波器带宽很宽实际折合到基带的噪声可能远大于你按信号带宽的估算。这也是为什么ADC前端必须仔细设计抗混叠滤波器的原因之一它不只是为了防止信号混叠同时也决定了折叠噪声的量级。2.3 电阻热噪声的数值估算实例用一个完整的例子把上面的公式串起来。假设我们要设计一个光电二极管的前置放大器光电二极管的寄生电容是50pF我们决定用10MΩ的跨阻电阻这时候需要在反馈电阻两端并联一个电容来做相位补偿。先估算反馈电阻的热噪声。10MΩ的电阻在室温下的电压噪声密度为sqrt(4kTR) sqrt(4 × 1.38×10⁻²³ × 300 × 10⁷) ≈ 12.9μV/√Hz等等这个数是不是看着太大了注意单位这是每根号赫兹的密度要乘以带宽的平方根才是有效值。假设我们设计的信号带宽是10kHz那么Vn 12.9μV/√Hz × sqrt(10×10³) ≈ 1.29mV这个数放到光电检测链路里如果光电二极管输出电流是1nA跨阻增益10MΩ对应输出电压10mV那么信噪比大约只有10mV/1.29mV ≈ 7.8倍也就是约17.8dB——这显然是不行的。问题出在哪儿出在我们选了一个10MΩ的高阻值电阻它的热噪声天然就大。那怎么改善呢一个办法是缩小电阻带宽——如果信号本身只有1kHz带宽把补偿电容加大让频带收窄到1kHz噪声就变成约0.41mV。另一个办法是改用T型网络等效高阻用低阻值电阻实现同样的跨阻增益但要注意T型网络自身的噪声贡献并非所有情况下都划算。这就是为什么很多精密跨阻放大器的设计本质上都是在增益、带宽、噪声三者之间做平衡而前端的无源元件噪声往往是第一个要评估的约束条件。这里还有一个著名的极限值得记住RC低通滤波器输出端的热噪声总功率等于kT/C与电阻阻值无关。因为R增大时热噪声密度增大但带宽同步收窄两者在数学上恰好抵消。这意味着用一个RC低通做抗混叠滤波时你不可能通过单纯加大电阻来降低输出噪声——输出噪声只由C决定。C越大kT/C越小噪声越低。所以低噪声设计里想要压低RC滤波器的噪声核心思路是加大电容而不是调整电阻。3. Cadence仿真无源电路噪声从设置到结果分析这个部分应该是很多人最关心的。Cadence的Spectre仿真器提供了非常完整的noise分析功能但如果理解不到位跑出来的结果容易产生误导。我在实际项目中积累了一些经验逐步拆解一下。3.1 仿真前的准备模型、温度与电路设置动手跑noise仿真之前先确认三件事器件模型、仿真温度和电路工作点。器件模型这一步经常有人忽略。Cadence的analogLib库里有理想的电阻、电容、电感模型这些模型默认是不带热噪声的——至少在大多数PDK的analogLib定义里理想电阻是否产生热噪声取决于模型定义。如果你用analogLib的理想电阻做noise仿真得到的结果极有可能是0噪声这会让你误以为电路“安静得像深夜”。所以做噪声仿真时尽量用PDK提供的真实器件模型这些模型包含了热噪声参数。实在要用理想模型得先检查模型文件里的噪声参数定义确认是否包含了热噪声。仿真温度也很关键。热噪声和绝对温度成正比这在公式里体现得很清楚。Cadence默认仿真温度一般是27℃300K但很多实际产品或测试环境不是这个温度。如果你要评估电路在高温下的噪声表现记得把温度参数设为目标工作温度否则高温场景下热噪声被低估低温场景被高估。对于一个带宽1MHz、10kΩ电阻来说从27℃升到85℃358K噪声电压大约增加9%这个偏差在要求严格的指标面前不是小数目。电路工作点也不能忽略。虽然无源器件的热噪声跟工作点关系不大但电路整体的噪声分布受到工作点的影响——比如有源器件的增益变了输入等效噪声会随之变化。所以跑noise之前先跑一遍DC工作点确认PSS/DC状态正常再进入noise分析。3.2 Noise仿真参数设置详解在Cadence ADE L环境中选择Analyses → Noise进入噪声分析设置界面。关键的参数有这几个Analysis Type选“noise”而不是“pnoise”。前者适用于小信号线性时不变系统后者用于周期性稳态下的噪声分析比如混频器、开关电容电路。Start/Stop Frequency仿真计算的频率范围。这里建议设置的频率范围不要低于实际关心频段的十分之一也不要高于有源器件增益开始滚降的频段太多。频率范围直接决定了积分噪声结果所以要根据系统指标来定。Sweep Type and Points通常选“logarithmic”然后设定每十倍频程采样点数。默认是10或20如果你的电路有尖锐的谐振峰建议增加到50以上否则频率响应细节可能被漏掉噪声积分也会不准确。Noise Reference Source这是最容易出问题的参数。Spectre会要求你指定一个输入参考源通常在“Output”旁边会有参考点的设置。对输入等效噪声的计算来说这个参考源的选择决定了输入参考噪声的定义位置。如果选错了参考源输入参考噪声的计算结果就是错的。Output Noise需要指定输出节点正端和负端以及参考地。Spectre会给出该节点的总输出噪声PSD以及各个器件对该节点噪声的贡献列表。有一个细节值得提出来Spectre的noise分析默认只计算热噪声、散粒噪声和闪烁噪声具体取决于器件模型的定义。有些PDK的电阻模型默认不开启闪烁噪声需要手动在模型参数中打开。如果你的设计工作频段较低比如1kHz以下建议确认一下电阻模型的flicker noise参数是否已经使能不然低频段的噪声会被显著低估。3.3 跑通一次完整的Noise仿真一个RC低通的实例用一个再简单不过的电路演示完整流程信号源内阻50Ω通过一个10kΩ电阻和一个1nF电容构成一阶低通输出接在电容两端。我们要仿真这个无源网络的输出噪声功率谱密度并计算1kHz以内的积分噪声。第一步搭建原理图。用PDK的电阻模型和电容模型设置R10kΩ、C1nF。信号源用DC电压源AC幅度设为1V。这里需要特别强调noise分析的输出噪声与输入信号幅度无关但输入参考噪声会参考到输入源所以给信号源设置一个AC幅度是好的习惯。第二步设置noise分析。Start Frequency设为1HzStop Frequency设为10MHzSweep Type选logarithmicPoints per Decade设为50。Noise Reference Source选输入信号源。Output选电容正端参考节点选地。第三步运行仿真。跑完后打开Direct Plot → Main Form选择Noise然后就可以绘制输出噪声PSD曲线。你会看到典型的低通形状低频段PSD平坦大约为4kTR ≈ 1.66×10⁻¹⁶ V²/Hz转成电压噪声密度就是sqrt(1.66×10⁻¹⁶) ≈ 12.9nV/√Hz。这个值和你手算的完全一致。第四步用Calculator计算积分噪声。在Calculator中用integ函数对输出噪声PSD积分频率范围1Hz到1kHz。手算一下10kΩ电阻在1kHz带宽内的噪声电压约为12.9nV/√Hz × sqrt(1000) ≈ 408nV但由于RC滤波器的3dB带宽是1/(2π×10k×1n) ≈ 15.9kHz远大于1kHz所以在1kHz以内噪声几乎是平坦的积分值接近408nV。仿真结果应该和这个数量级吻合偏差在百分之几以内是正常的。如果你把积分上限设置为100kHz就要考虑滤波器带宽的影响了。RC低通在3dB点之后噪声PSD以20dB/dec的斜率下降总的积分噪声可以用kT/C来估算kT/C 1.38×10⁻²³ × 300 / 1×10⁻⁹ ≈ 4.14×10⁻¹² V²开方后约2.03μV。这个值与电阻阻值无关只由电容决定。这就是前面提到的kT/C极限的仿真验证。3.4 结果解读输出噪声、输入参考噪声与噪声贡献列表跑完noise仿真后Spectre会输出一组结果其中最重要的三样东西是输出噪声PSD曲线、输入参考噪声PSD曲线以及每个器件对总噪声的贡献占比。输出噪声是直接看电路输出节点上的噪声功率谱密度它反映的是这个电路在输出端到底“脏”到什么程度。输入参考噪声则是把输出噪声除以系统增益折算到输入端的等效噪声。对于无源衰减网络输入参考噪声通常会大于输出噪声对于有源放大链路输入参考噪声往往被用来比较不同放大器方案的本底噪声水平。这里有一个值得说的细节在查看Spectre的noise summary时会看到“Device Noise Contribution”列表里面会按贡献大小排列每个器件。这个列表非常有用可以快速定位最需要优化的器件。但要注意各个器件的噪声贡献是功率相加的也就是说总输出噪声是各器件噪声贡献的功率和再开方不是直接电压相加。如果两个电阻的贡献分别是10nV/√Hz和10nV/√Hz总噪声是sqrt(100100) ≈ 14.1nV/√Hz不是20nV/√Hz。这个道理很简单但现场汇报的时候真的见过有人把功率相加搞成电压相加结果多算了40%。还有一个高频陷阱noise仿真里选Reference Source的位置不同输入参考噪声也不同但输出噪声不变。比如一个两级放大器中间插了一个无源衰减网络输入参考噪声会有多种定义方式取决于你参考到第一级输入端还是衰减器之前。这会导致不同人看同一个电路得到不同的“输入噪声”——不是仿真错了而是参考点的定义不同。所以做设计评审的时候一定要明确输入参考噪声是对哪个节点说的。4. 无源电路噪声优化与工程实战经验这一部分把积累的经验教训集中梳理一下每一条几乎都是从项目里踩坑踩出来的。4.1 阻抗、带宽与噪声的性能权衡无源电路噪声优化的核心矛盾本质上就是阻抗、带宽和噪声三者之间的平衡。阻抗越高热噪声越大。带宽越宽积分噪声越大。但阻抗又往往决定了功耗、面积和信号摆幅带宽又受限于信号速率。所以不存在“把所有噪声都消除”的方案只存在“在满足信号完整性的前提下把噪声压到可接受范围”的方案。一个很典型的场景是在ADC前端设计抗混叠滤波器时工程师习惯用较大的RC时间常数来限制带宽但电阻值选大了之后噪声也随之增大。有没有两全的办法有的。比如用LC滤波器替代RC滤波器因为理想电感不产生热噪声实际电感只有DCR产生的噪声LC滤波器可以在不引入大量热噪声的前提下实现窄带滤波。不过LC滤波器也有面积和成本的问题以及可能的谐振峰。另一个思路是用有源滤波比如运放构成的Sallen-Key来替代无源RC滤波用有源器件的增益来降低对无源电阻阻值的依赖但这又引入了有源器件的噪声。总之每一次架构选择都在做权衡关键是搞清楚当前设计的主要瓶颈是什么。4.2 几种典型无源网络的噪声行为第一类是RC网络。输出噪声由kT/C决定与R无关。想要降低噪声加大C是最直接的手段。但加大C会降低滤波器带宽如果带宽要求很宽这个方法就行不通。另一个可行方向是降低电路的工作温度低温下kT/C变小这就是为什么很多高灵敏度的物理实验系统要放在极低温环境中。第二类是分压器和衰减器。一个纯电阻分压器的输出噪声可以用两个并联电阻的热噪声之和来计算。有趣的是当分压比确定时存在一个最优的电阻值组合使输出噪声最小。这一点容易被忽视很多人在设计衰减器的时候随意选阻值结果噪声表现远非最优。对衰减器的噪声系数来说无源衰减器在匹配条件下的噪声系数等于其衰减量dB值。也就是说一个6dB的衰减器它的噪声系数就是6dB。这个规律对所有无源无损匹配网络都成立做射频链路预算时可以直接用。第三类是谐振网络。LC谐振回路在谐振点附近呈现出极高的阻抗因此该频段内等效噪声也很大。这在设计射频接收前端时经常遇到如果不做阻尼处理谐振回路的噪声峰可能抬高链路的整体噪声底。但阻尼电阻又会引入额外的热噪声——这是一对天然矛盾。实际设计中需要通过仿真在噪声和选择性之间找到平衡点。第四类是开关电容网络。这类网络在离散时间域工作其噪声行为十分特殊。开关导通电阻在采样瞬间产生热噪声并被采样电容“冻结”形成所谓的kT/C采样噪声。这正是开关电容滤波器和流水线ADC中一个根本性的噪声限制。在Cadence中用pnoise来分析这类电路的噪声比用普通noise分析更准确。4.3 Cadence仿真中的常见问题与排查把我在使用Cadence仿真无源电路噪声时遇到过的经典问题整理一个速查表现象可能原因排查方向输出噪声仿真结果为0用了ideal模型且未开启噪声参数换成PDK模型检查模型noise参数积分噪声明显小于手算积分带宽范围设置过窄确认Stop Frequency覆盖全部相关带宽积分噪声明显大于手算仿真带宽包含器件增益频带外的噪声检查高频段是否有谐振峰确认仿真范围合理输入参考噪声异常大Reference Source选错节点将参考源指向真正的信号输入节点低频段噪声PSD上翘不明显器件模型的flicker noise未使能检查器件模型参数开启1/f噪声噪声贡献总和与总噪声对不上误将电压噪声线性相加用功率平方相加再开方温度变化后噪声不变仿真温度未设置或模型忽略温度依赖检查仿真温度和模型热噪声温度系数还有一个常见问题noise仿真的点数不足导致积分结果不稳定。如果你的积分结果在调整每十倍频程点数后仍然变化明显说明频率采样太稀疏或者电路在特定频段有尖锐的峰。这种情况建议增加Points per Decade到100或者改用线性扫频精细扫描关键频段。4.4 个人实操心得与避坑清单最后分享几条压箱底的经验。第一做任何noise仿真之前先用笔算一遍预期量级。比如一个RC低通输出噪声量级就是sqrt(kT/C)一秒钟就能估算出来。如果仿真结果和手算差了一个数量级别急着怀疑仿真器先检查自己的电路或者模型设置。大多数情况下手算和仿真的偏差来自于设置错误而不是理论错误。仿真器是非常精密的工具但它的结果可信度取决于你用它的方式。第二关于“要不要把noise仿真和transient仿真结合起来看”的问题。noise仿真给出的是统计意义上的功率谱密度和积分值它不包含时域波形信息。如果你关心的是噪声对信噪比时序上的影响或者想看到采样点上噪声的具体分布用PSSpnoise甚至transient noise仿真会更直观。Cadence的transient noise分析可以生成时域噪声波形但仿真时间会显著增加。实际项目中我的习惯是先跑noise分析快速收敛指标再针对关键链路跑transient noise做最终确认。第三无源器件供应商提供的等效噪声模型往往过于理想。实测中电阻的电压噪声系数电流噪声指数在某些工艺下可能高得离谱尤其是厚膜电阻。所以做量产设计时阻值选择要留出至少20%的噪声裕量。可靠性设计和噪声设计永远是两回事。第四关于仿真温度设置的细节如果你设计的系统会在宽温度范围内工作务必跑一组高温和低温的noise对比仿真。高温下热噪声增大但某些有源器件的噪声可能降低最优工作点可能偏移。只在单一温度点做设计评审很容易在环境温度波动时出现指标超差。我个人的体会是无源电路的噪声分析最考验工程基本功。它不涉及复杂的反馈理论也没有玄妙的有源器件模型就是几个公式反复用——4kTRB、kT/C、ENBW加上对仿真工具的理解。但恰恰是这些最基本的工具构成了高性能电路设计的地基。你把这块地基夯得越实后面做低噪声放大器、精密数据采集、射频前端的时候就越少被莫名其妙的噪声问题折磨。