
做电源和EMC调试这些年差模和共模是我天天挂在嘴边的问题。以前在实验室里用频谱仪配合人工电源网络测噪声区分到底是差模超标还是共模超标费时费力后来我开始把LTspice作为前期仿真工具发现用AC扫描指令分析电路的差模和共模响应是效率最高、也最直观的手段之一。它不用搭复杂的测试台只要把源和负载设置对一条扫频曲线就能把差模增益、共模增益、CMRR、滤波特性全部看明白。这篇内容我会把自己平时用LTspice做差模和共模分析的思路、指令写法、电路搭建方式和踩过的坑完整梳理一遍适合刚开始接触LTspice的硬件工程师也适合正在做电源滤波选型、差分放大电路设计的同学参考。1. AC扫描与差模/共模先把要分析的对象搞清楚1.1 AC扫描到底在扫什么LTspice里的AC分析也就是AC扫描本质上是在电路直流工作点已经稳定的前提下做一次小信号线性化分析。它把电路里的二极管、MOS管、运放等非线性器件在工作点附近近似成线性模型然后在用户指定的频率范围内注入一个幅值为单位1的交流小信号逐点计算电路的复频域响应。输出结果是每个频率点上的增益和相位所以画出来就是波特图。有人习惯用瞬态仿真加FFT去看频响但AC扫描在这个场景下明显更顺手。瞬态分析需要给一个足够长的激励信号还要等电路进入稳态仿真时间经常被拉得很长而AC扫描是在频域里直接计算速度非常快尤其是扫几十万个点时也只相当于瞬态仿真的零头。更重要的是AC分析天然支持复数运算相位信息是直接给出的不需要额外做FFT处理。AC扫描指令的基本格式是类似.ac dec 100 10 100MEG这样一行SPICE指令。参数含义分别是扫描方式、每个频程的点数、起始频率、终止频率。扫描方式有dec十倍频程、oct八倍频程和lin线性扫描日常分析滤波器、放大器、电感阻抗特性我用得最多的是dec因为宽频段下能兼顾低频细节和高频分辨率。提示AC扫描只关心小信号响应如果你要分析的是开关电源的大信号稳定性、过载保护、饱和特性这类问题AC扫描帮不上忙还是得回到瞬态仿真。1.2 差模和共模是怎么定义的在双线传输系统里任意两根线对地或者说对参考平面的电压可以用差模和共模两部分的线性组合来表示。假设两根线上的电压分别是 V1 和 V2定义如下差模电压 Vd V1 - V2代表两根线之间的有效信号或噪声共模电压 Vc (V1 V2) / 2代表两根线相对参考地同步变化的成分。反过来V1 Vc Vd/2V2 Vc - Vd/2。这个拆分的意义不只在数学上。工程上差模噪声和共模噪声的成因、传播路径、抑制手段完全不同。差模噪声通常来自功率开关管的高速电流变化di/dt环路频率范围集中在中低频段共模噪声则大多来自高dv/dt节点对地寄生电容的充放电路径是通过地环路回流高频成分更突出。这也是为什么常见的EMI滤波器中差模电感、差模电容和共模电感、共模电容的选型逻辑完全不同。差模路径要处理的是串联在两根线之间的干扰共模路径要处理的是两根线对地之间的干扰。你用万用表只能测到两根线的绝对电压想判断噪声性质用AC扫描分别建模是更清晰的做法。1.3 为什么要用AC扫描分析差模和共模理论上手算差分放大器的差模增益、共模增益和CMRR并不难但那是在理想电阻、理想运放的前提下。实际工程里电阻有误差、运放有有限的共模抑制特性、PCB走线会引入不对称的寄生参数这时候手算就非常痛苦而且算完你也不知道结果到底对不对。LTspice的AC扫描正好可以处理这类问题。你可以精确地设置每个电阻的阻值误差给两个输入端分别设置不同相位的AC小信号源一次扫描就把差模增益和共模增益曲线同时画出来。比如我在做差分放大器电桥前端电路时会直接列出所有电阻的±1%误差组合用AC扫描快速扫一遍看共模增益在最坏情况下的变化范围这样的结论比纸上算更可信。对于共模电感的分析AC扫描更是绕不开。共模电感本身就是一个耦合电感对你要验证它对差模信号几乎无阻碍、对共模信号呈现高阻抗这个核心特性最直观的方法就是分别给差模和共模激励做AC扫描看电感两端的阻抗曲线。2. 用LTspice搭差模/共模测试电路的核心思路2.1 AC源设置一个电路同时注入差模和共模LTspice里放置电压源的方法是按快捷键R放电阻C放电容L放电感G放置地线V放置电压源。电源放置后不能直接用因为默认情况下虽然DC值有但AC小信号幅度是0必须单独设置。鼠标右键点击电压源符号在属性窗口里找到AC Amplitude项填入1或者0.5AC Phase项根据需要填0或180。这里有一个很关键的点差模和共模激励是靠相位来区分的不是靠“放置两个不同的块”来区分的。如果你要在同一个电路里同时看差模响应和共模响应只需要放置两个电压源分别设置为差模激励V1的AC幅度填 1、相位填 0V2的AC幅度填 1、相位填 180也就是 V2 -V1共模激励V1的AC幅度填 1、相位填 0V2的AC幅度填 1、相位填 0也就是 V2 V1。不过这样会有一个问题两种激励同时挂在电路上仿真结果就是两者的叠加并不能直接分开看。要分开看有两条路。第一条路是分两次仿真。第一次把所有AC源的相位设置成差模方式跑完记录差模增益第二次改成共模方式再跑一次记录共模增益。简单粗暴但效率低。第二条路是在线性电路里直接做表达式分解。因为LTspice里AC分析是线性分析任何节点的电压都可以表示成各个独立源单独激励的叠加。你可以在原理图上同时放四个源分别对应差模正端、差模负端、共模正端、共模负端然后在波形查看器里用表达式计算输出对应哪个输入的响应。这个方法更进阶我一般在搭建完整系统模型时会用到。实操心得新手阶段建议优先用“分两次仿真”的思路先把差模、共模的概念和波形结果对上号再考虑用表达式一次性提取能少走很多弯路。2.2 用耦合电感搭建共模扼流圈模型共模电感在LTspice里不是简单放一个电感就行的它是一个耦合电感对。正确做法是放置两个独立电感L1、L2然后用耦合系数K语句把它们关联起来。放置L1和L2之后在原理图上输入SPICE指令K1 L1 L2 0.99这行指令的意思是L1和L2之间的耦合系数是0.99。数值越接近1表示两个绕组耦合越紧密漏感越小。实际共模电感厂商给的规格里通常不会直接给K值但会根据差模电感漏感和共模电感的测量值反推。比如共模电感量是10mH差模电感是0.2mH那么K≈0.99基本就是很理想的耦合了。这里要提醒的是同名端方向。共模电感两个绕组在一颗磁芯上是同向绕制的或者绕向虽然相反但通过引脚连接实现同向磁通。在LTspice里电感符号两端默认没有明显的相位点标识所以搭建电路时一定要想清楚两个电感的电流方向和磁通是叠加还是抵消。如果不确定检查仿真结果时看到共模阻抗异常小、差模阻抗异常大那就是同名端接反了。2.3 为什么共模电感能让50Hz交流电通过这个问题被问过无数次。共模电感对市电里的50Hz差模电流几乎没有阻碍作用原因可以从磁通叠加的角度解释。当电流从引脚1流入L1再从L2的对应引脚流出差模方向流过两个绕组的电流大小相等、方向相反在磁芯里产生的磁通也是相反方向互相抵消。磁芯没有被激励电感表现为很小的漏感阻抗所以50Hz的工频电流可以顺利通过。当共模电流流经两个绕组时电流方向在两端都是同一方向比如都从同名端流入磁通同向叠加磁芯被强烈激励等效电感变得很大对高频共模噪声呈现很大的阻抗从而起到抑制共模噪声的作用。在AC扫描中你只要分别设置差模和共模激励就能很直观地看到同一个共模电感在两种激励下的阻抗差异。这也是我推荐用AC扫描理解共模电感工作原理的原因——纸上得来终觉浅。3. AC扫描指令实战从.sp指令到看懂CMRR曲线3.1 指令写法和参数选择在LTspice中要运行AC扫描最简单的方式是点击菜单栏的Simulate-Edit Simulation Cmd在弹出的窗口中选择AC Analysis然后在右侧填入参数。也可以在原理图上直接输入SPICE指令效果完全一样。一个典型的AC扫描指令是.ac dec 100 10 100MEG各参数含义如下表参数含义推荐设置dec扫描方式为十倍频程常用oct扫描方式为八倍频程窄带关注效率lin线性扫描窄频段精细分析100每个十倍频程的点数100左右起步10起始频率根据应用调整100MEG终止频率覆盖目标频段即可起始和终止频率的选择要根据你要分析的信号性质来决定。分析电源EMI滤波器我一般从100Hz扫到30MHz因为传导发射测试区间就落在150kHz到30MHz多扫一点能看出滤波器在更低频的表现。分析差分放大电路则从10Hz扫到10MHz就够了大部分运放的增益带宽积在这个范围内都能体现出来。点数的选择上100个点是比较保守的起步值如果曲线有锯齿或细节不够再增加到200或500。AC仿真很快不用担心点数太多导致仿真时间爆炸。3.2 运行仿真并读取差模/共模曲线运行完AC仿真之后点击电路中的输出节点LTspice会直接画出该节点电压相对于地的幅频曲线。注意此时画出的还是“某个节点对地电压”不是我们真正关心的“差模增益”或“共模增益”。只有通过表达式自定义输入才能把真正的差模/共模传递函数提取出来。假设输入差模电压定义为V(id) V(inp) - V(inn)输入共模电压定义为V(ic) (V(inp) V(inn)) / 2。在波形查看器里可以用菜单Plot Settings-Add Trace或者直接在查看器中输入表达式来绘制V(out) / (V(inp) - V(inn))这个表达式代表的就是输出对差模输入的增益。同理V(out) / ((V(inp) V(inn)) / 2)代表输出对共模输入的增益。如果你的AC源设置的是差模直接激励V(inp) 0.5,V(inn) -0.5那么V(inp) - V(inn)就是1输出曲线直接就是差模增益曲线不需要额外做分母计算。注意LTspice里默认纵轴单位是dB时显示的是20 * log10(|H|)这就是电压增益的分贝值。如果切换到线性坐标能看到真实的幅值比但工程上习惯用dB因为可以在同一张图里同时容纳从0.001倍到1000倍的动态范围。3.3 CMRR曲线怎么看共模抑制比CMRR的定义是差模增益与共模增益的比值。用dB表示时计算可以简化为CMRR(dB) 差模增益(dB) - 共模增益(dB)因此你可以在LTspice中直接添加如下表达式来画CMRR20 * log10(mag(V(out) / (V(inp) - V(inn)))) - 20 * log10(mag(V(out) / ((V(inp) V(inn)) / 2)))如果嫌表达式太长更直观的做法是分别添加差模增益曲线和共模增益曲线然后在波形查看器里用鼠标选中两个曲线再使用Plot菜单里的差值功能或者直接用光标读出两个曲线在某个频率点上的dB值相减。我习惯用表达式方式因为以后改参数重新仿真时CMRR曲线会自动更新不需要重新去光标逐点读数。观察CMRR曲线时有几个经验可以分享。第一低频段CMRR通常比较高随着频率上升会下降这是因为共模增益在高频段往往受到寄生电容或其他非理想因素影响而增大。第二如果CMRR曲线出现突然的谐振峰通常意味着电路中存在寄生谐振回路比如输入端的杂散电容和电阻构成了一个零点。第三仿真中如果看到CMRR大得不合理比如几百dB先别高兴检查一下是不是理想模型带来的数值噪声而不是真正的性能优势。4. 三个案例差模/共模分析的实际应用4.1 案例一共模电感的差模/共模阻抗特性验证共模电感的基本特性我搭一个简单的两端口测试电路信号源经过一个串联电阻接到共模电感的一对绕组输出端接负载电阻。设置差分激励时两个输入端的AC源相位差180度设置共模激励时两个AC源同相然后分别跑AC扫描。以L1L210mH、K0.99为例差模等效电感约等于 2 × L × (1 - K) 0.2mH在100kHz时的差模阻抗只有约125Ω共模等效电感约等于 2 × L × (1 K) 39.8mH在100kHz时共模阻抗高达约25kΩ。两者差了200倍这个差距在AC曲线上会表现为两条阻抗曲线明显分离。这里可以进一步用.step指令观察耦合系数K变化对漏感的影响.step param K 0.9 0.99 0.03配合.ac dec 100 10 10MEG一起仿真就能看到K越小差模阻抗越大共模阻抗越小。这个操作在挑选共模电感时非常实用你可以直接从曲线上确定漏感差模电感是否满足设计指标不必全靠厂商手册。4.2 案例二差分放大器的CMRR仿真差分放大器是模拟前端最常见的电路之一。以一个标准的四电阻差分放大器为例同相输入端通过R1接到运放同相端反相输入端通过R2接到运放反相端反馈电阻R3从输出端接到反相端R4从参考地接到同相端。理想情况下差模增益是R3/R2共模增益为0前提是R1/R4与R2/R3的比值严格相等。实际电阻肯定有误差所以在LTspice里我会刻意给其中一只电阻设成偏离标称值比如R4本来应该是10kΩ我设成10.1kΩ然后跑AC扫描差模激励和共模激励。结果通常是差模增益几乎不变但共模增益从理想状态下的极小值变成了一个随频率变化的可见曲线CMRR也因此被拉低。通过这个仿真你能直观感受到一个结论差分放大器的CMRR更多是受电阻匹配精度限制而不是运放本身的CMRR限制。比如你用CMRR为120dB的运放搭差分放大器如果四周电阻误差是±1%最终的电路CMRR可能只有60dB左右运放的高性能被外围电阻完全拖累了。AC扫描在这里的最大价值就是快速给出“最坏情况”的CMRR曲线方便你决定是否需要选用更高精度的电阻网络。4.3 案例三EMI滤波器中的共模电感选型验证在电源输入端共模电感和Y电容一起构成共模滤波器。设计时关心的核心参数是插入损耗——滤波器在某个频率下对噪声的衰减能力。LTspice中模拟插入损耗的标准做法是信号源经过50Ω源电阻接滤波器输入端滤波器输出端接50Ω负载然后测量负载上的电压。针对共模噪声两个输入端L和N相对地的干扰是同方向的所以测试时需要用一个同相AC源同时驱动L和N两个端口。针对差模噪声则需要一个L与N反相的AC源。两种激励条件下各跑一次AC扫描输出端负载上的电压幅度就分别代表了滤波器对共模噪声和差模噪声的抑制作用。我在实际选型时会把厂商提供的共模电感SPICE模型或者等效RLC模型代入这个测试电路快速看谐振点位置。如果谐振点正好落在开关电源的开关频率附近滤波效果反而会变差需要调整电感或电容的取值来搬移谐振点。这种问题如果不做AC扫描单靠经验和测量排查周期会很长。5. 调试经验常见错误、坑与排查方法5.1 波形不对先检查这几个地方AC扫描经常出现“跑了仿真却看不到曲线”或者“曲线和预期完全不符”的情况。根据我自己的经验90%以上出在以下几个地方。常见现象可能原因解决方法仿真结束但没有任何波形电压源没设置AC Amplitude右键电源在属性里填AC幅度比如1差模曲线和共模曲线几乎一样两个AC源的相位没设置对差模必须相位差180度共模必须同相位共模电感在共模激励下阻抗很小两个电感同名端方向反了交换其中一个电感两端接线或把K值设为负值输出波形出现很多毛刺扫描点数太少增加dec的点数比如从100改为300运放电路CMRR异常巨大使用了理想运放且无外围误差给电阻加入误差或者换成实际芯片模型检查这些项的时候建议养成一个好习惯先在原理图上显示节点电压或给输入源标上明确的网络名再用表达式引用而不是用V(out)这类没有上下文的默认节点名。这样可以避免因为节点选错导致曲线张冠李戴。5.2 LTspice导入第三方模型的那点事LTspice自带的理想器件库用起来很方便但实际工程中经常想用具体厂商的芯片比如TI的运放、ADI的基准源。很多人会问LTspice能不能直接用TI的芯片。答案是可以的但要做一点转换。大多数厂商提供的是PSpice模型文件后缀通常是.lib或.cir内部用.SUBCKT定义了子电路的网表和参数。LTspice对SPICE语法兼容性很高多数PSpice模型可以直接用。做法很简单把模型文件下载到本地放在库目录下在原理图中用SPICE指令引入.include TL072.lib然后在原理图中放置一个通用五引脚运放符号右键打开属性把Value改成模型子电路名字自动生成的符号即可。更省事的方法是把模型文件直接用鼠标拖进LTspice原理图窗口LTspice会自动弹出窗口询问是否创建一个对应的原理图符号选“是”之后你就能像使用普通元件一样使用TI芯片。需要留个心眼有些厂商会对模型做加密处理文件里是一串不可读的二进制或者乱码这种模型LTspice通常不认只能换同类芯片或者从芯片厂商官网找开放模型。还有的模型虽然能导入但收敛性不好仿真时报“Time step too small”或“Singular matrix”错误。遇到这种情况可以尝试在.tran或.ac指令中提高精度或者给模型外接一个理想电阻到地改善节点矩阵条件。5.3 读AC曲线的几条经验AC扫描出的曲线读起来有门槛特别是对刚接触频域分析的工程师。我有几条自己的读图经验第一先看增益平坦区的值判断基本增益是否正确。比如差分放大器的理想增益是20dB如果低频段差模增益曲线在20dB附近说明电路基本搭对了第二再看-3dB转折频率也就是增益比平坦区下降3dB的频率点。这个点是带宽的标志与理论计算值对照偏差太大就检查R、C是否算错第三找谐振峰。LC滤波器、共模电感与Y电容组成的回路会在某个频率产生谐振曲线会出现尖峰。谐振峰不是越大越好它意味着在这个频点周围噪声不但不被衰减反而被放大第四观察高频段的滚降斜率。一阶低通是每十倍频程20dB衰减二阶是40dB如果滚降斜率异常通常是有额外极点或零点存在。看多了曲线之后你会形成一种直觉一个电路大概是什么样的频响扫出来一瞄就能判断合不合理。这种直觉对我排查硬件问题帮助很大。6. 用.step批量扫描K值和电阻误差差模和共模分析里还有一个小技巧特别好用用.step指令做参数扫描配合AC扫描可以一次性看到多个参数的影响。比如我分析共模电感时会这样做.step param K 0.90 0.99 0.03 .ac dec 100 10 10MEG然后定义两个独立的测试网络一个用差模激励一个用共模激励。运行完后LTspice会生成一组曲线每条曲线对应一个K值你能很直观地看出漏感变化如何影响差模阻抗。再比如分析差分放大器CMRR时可以通过.step同时扫描多个电阻误差组合.step param rerr 1 5 2然后在电阻属性里把R4写成10k*rerr这样的表达式这样扫一遍就能得到不同电阻误差下的CMRR曲线族。这个方法比手动一个个改电阻再重跑仿真高效得多也更容易形成图表结论贴在仿真报告里。提示使用.step时如果曲线数量过多波形查看器会显得很乱。建议按需限制步数一般最多扫5到6组参数就够了或者用不同的颜色区分方便直接截图使用。7. 写在最后的一点经验LTspice的AC扫描看着简单真正用好还是要靠多练。我现在拿到一个新电路习惯先确认它的工作点再做AC扫描看频响然后根据频响判断是否存在谐振风险最后再回到瞬态仿真验证大信号行为。这套流程下来很多问题在画板之前就暴露了。对于差模和共模分析而言最大的收获不是算出某个数值而是建立了对电路频率行为的直觉——什么结构让差模增益更大什么寄生让共模抑制变差这些东西靠仿真曲线比靠计算器直观得多。如果你也正在做电源滤波、运放前端或者EMC整改相关的工作强烈建议花半天时间把LTspice这套AC扫描流程走一遍值回票价。