
如果你调过功放或者运放的输出级一定见过这个画面输入一个干干净净的正弦波输出波形却在过零那一下突然“迟钝”像是被什么东西绊了一脚形成一道肉眼可见的台阶。我最早做音频功放时为这道台阶折腾了整整一周——换管子、调工作点、加负反馈最后才意识到问题出在互补输出级的静态偏置上。这个现象就是交越失真Crossover Distortion是乙类互补推挽输出级的经典难题。这篇文章我会从交越失真的产生机理讲起对比乙类和甲乙类输出级的设计差异然后用LTspice把两种方案从头到尾搭一遍通过瞬态波形和FFT的THD数值让你亲眼看到偏置电路起的作用。无论你是做音频放大、设计运放内部输出级还是单纯想把模拟电路基础打牢这套思路都适用。LTspice免费、上手快用来做这类仿真最合适不过我自己几乎所有输出级验证都在它上面完成。1. 交越失真的成因与表现输出波形上那道“坎”1.1 互补输出级的基本结构互补输出级也叫推挽输出级核心是两个互补晶体管一只NPN管负责“推”正半周导通一只PNP管负责“挽”负半周导通两只管的发射极连在一起作为输出端集电极分别接正负电源。这样接的好处很明显——静态时几乎没有电流效率高信号来了两个管子轮流工作各自只处理半个周期。我用一个生活化的类比两个人划船一个人负责往前划一个人负责往后划。配合得好船走得很平稳配合不好每次换手的时候船就顿一下。互补输出级的两个管子就是这两个划船的人交越失真就是“换手”那一下出现的顿挫感。为了让正负半周信号无缝衔接两个管子必须“接力”得非常平滑。但实际的硅晶体管有一个导通阈值大约0.5V到0.7V信号在过零附近时两个管子都处于接近截止的状态输出就出现了断档。这个断档就是交越失真的直接来源。1.2 乙类输出级的“静默区”是怎样产生的乙类Class B输出级是指静态时两个管子都处于截止状态基极之间没有偏置电位差VBE为0。理想情况下这确实能省电但真实晶体管不是理想开关它有一个导通门槛。输入一个正弦波正半周时电压要超过大概0.6VNPN管才会真正导通发射极才有电流输出负半周同理要低于-0.6VPNP管才开始工作。于是信号在±0.6V之间这段范围内两个管子都不干活输出电压几乎为零。表现在波形上就是过零附近出现一段平坦的“死区”或者台阶。这段死区有多严重我用LTspice实测过输入一个幅度1V、频率1kHz的正弦波乙类输出级的输出波形在过零附近直接凹进去一块输出了个“缺心”的正弦幅度也被压到0.35V左右。换句话说输入信号里有超过一半的时间花在了“等管子导通”上这显然不是我们想要的高保真输出。1.3 为什么耳朵对交越失真特别敏感从频谱上看交越失真产生的主要是奇次谐波尤其是三次、五次、七次这样高阶谐波。这些谐波能量集中在过零点附近表现为波形上很窄的“毛刺”或“台阶”尽管用THD数值来看可能只有百分之几听感上却非常明显。我用一个日常体验来解释你把一段舒缓的音乐音量调低如果放大器存在交越失真人声和乐器会变得干涩、发硬低频尤其松散像是蒙了一层沙子。因为交越失真让音乐信号中的微小细节丢失了而这些细节恰恰是人耳判断声音“真实感”的关键。所以交越失真不能光看THD百分数它对听感的影响远大于同样数值的其他类型失真。这也是为什么Hi-Fi功放、运放输出级几乎清一色采用甲乙类偏置目的就是消除过零处的非线性。2. 设计思路如何把乙类升级到甲乙类2.1 二极管偏置最直接的解决方案与它的限制解决交越失真的基本思路很简单在静态时让两个管子都微微导通给它们一个“初始电流”这样输入信号一过零两个管子不会完全截止而是平滑地交接。这种工作状态就是甲乙类Class AB。最简单的实现方式是在两个基极之间串联两个二极管。二极管正向压降约0.6V到0.7V两个串联就是1.2V到1.4V恰好把NPN管基极电位抬到正、PNP管基极电位拉到负让两个管子静态时都处于微导通状态。二极管偏置为什么能同时兼顾交流信号传递因为二极管的动态电阻很小对交流信号来说几乎是短路的所以输入信号可以同时驱动上下两个基极而在直流上它又提供了一个稳定的电位差让两个管子都有合适的静态工作点。但二极管偏置有个明显的限制二极管压降是离散的一个PN结0.7V两个就是1.4V你不能精细地调整。而输出管的静态电流对偏置电压极其敏感偏置电压每增加约60mV静态电流可能翻十倍。也就是说你用固定二极管得到的偏置电压可能正好合适也可能偏大导致静态电流过大发热或者偏小导致失真没有完全消除。2.2 VBE倍增器可调偏置的进阶方案二极管偏置不够精细那就需要一种可调节的偏置电路。VBE倍增器也叫VBE multiplier、二极管堆叠的替代方案就是干这个的用一个小功率三极管加两个电阻夹在两个输出管基极之间通过电阻分压产生一个可调电压。VBE倍增器的工作原理并不复杂小功率三极管Q3的C-E两端接在上下两个基极节点之间R1接在C和B之间R2接在B和E之间。Q3的VBE约为0.6V流过R2的电流使B极到E极电压稳定在0.6V而C-E总电压等于VBE乘上(1R1/R2)。通过调节R1和R2的比例就能连续调整偏置电压。为什么要用三极管而不用电位器直接调因为VBE倍增器还有一个关键优势——温度补偿。把Q3贴在输出功率管上当管子温度升高时Q3的VBE会下降偏置电压跟着下降自动抑制输出管静态电流上升。这个负反馈机制能防止热失控是大功率输出级的标配方案。现代集成功放内部基本都是这个结构。2.3 静态电流该设多大静态电流是甲乙类输出级设计的核心参数它直接决定失真和功耗的平衡。我用LTspice做了参数扫描后发现THD随静态电流增大先快速下降然后趋缓存在一个明显的“拐点”。在拐点之前静态电流稍微增加一点失真改善非常明显过了拐点再增加改善就有限了反而白白增加功耗。我的经验值小信号输出级比如运放内部输出级、耳机放大器静态电流取1mA到5mA就够功率输出级驱动音箱一般取10mA到30mA起步具体看功率管和散热条件。设置偏置时要记住一个原则偏置电压宁可从小的开始慢慢往上加也不要一次性拉满否则静态电流可能瞬间冲到几百毫安管子发热严重甚至烧毁。静态电流也不是越大越好。甲类工作状态虽然失真最低但效率只有20%到30%大部分能量变成热量散掉了。甲乙类就是在效率和失真之间取一个合理的平衡点——让输出管在过零处保持导通又不至于整个周期都大电流工作。3. LTspice实操从搭电路到量化失真3.1 在LTspice中搭出推挽输出级打开LTspice新建一张原理图。我用的元件如下Q12N3904NPN小信号管Q22N3906PNP小信号管D1、D21N4148开关二极管R3、R410kΩ基极偏置电阻R_in10kΩ输入电阻R_L1kΩ负载电阻VCC12VVEE-12V输入信号SINE(0 1 1k)幅度1V、频率1kHz电路连接方式Q1集电极接12VQ2集电极接-12V两管发射极相连作为输出节点OUTOUT接1kΩ负载到地。甲乙类方案中D1阳极接Q1基极D1阴极接中间节点MD2阳极接MD2阴极接Q2基极。输入信号通过R_in接到M。R3从12V到Q1基极R4从Q2基极到-12V给二极管链提供直流偏置电流。对照用的乙类方案更简单Q1、Q2基极直接短接为一个节点BR3、R4从±12V分压让B点静态为0V输入信号通过R_in接入B点。其他部分完全一样。放完元件后添加SPICE仿真指令.tran 0 12m 1m 0.2u .four 1k 20 v(out)第一条指令是瞬态仿真总时长12ms从1ms开始保存数据最大步长0.2µs。最后这个最大步长很关键交越失真发生在过零瞬间窗口很窄步长太粗会漏掉细节。按1kHz正弦算一个周期1ms0.2µs步长等效每个周期5000个采样点足够看清过零处的波形了。3.2 用瞬态波形让交越失真“现形”运行仿真后点击OUT节点LTspice会显示输出波形。再添加一条输入波形V(in)两条一起看。放大时间轴到过零区域乙类方案的输出波形会呈现明显的平顶台阶像是正弦波被切了一刀。更直观的做法是在波形窗口里添加一条误差波形V(out)-V(in)。输出级本质是射极跟随器理想情况下输出完全跟随输入误差应为零。实际运行时你会看到在过零附近出现一个很窄的尖峰或台阶——这就是交越失真在误差域里的“原形”。这个误差尖峰比单纯看输出波形要醒目得多。为了观察偏置对失真的影响可以在LTspice里用.step语句扫描R3和R4的阻值.step param R 2k 20k 2k原理图中把R3、R4的阻值设成{R}运行后就能看到一组曲线偏置电流从小到大输出波形从明显台阶逐渐变成光滑正弦。这个渐变过程非常有助于理解偏置电压的临界作用。3.3 用FFT量化THD波形看起来光滑了还不够得用数据说话。我在原理图里加了.four指令仿真结束后按CtrlL打开SPICE Error Log里面会列出1kHz基波和各次谐波的幅度以及总谐波失真THD。我实测的一组数据是这样的方案THD1kHz主要谐波乙类无偏置约6.8%3、5、7次奇次谐波明显甲乙类二极管偏置约0.35%3次谐波明显减弱甲乙类减小R3/R4增大偏置电流约0.12%谐波进一步压制乙类的奇次谐波特别突出这是交越失真的典型频谱特征。加上二极管偏置后THD直接降了一个数量级以上这说明了偏置电路对消除过零非线性的决定性作用。也可以直接在波形窗口做FFT选中V(out)波形菜单View→FFTLTspice会显示频谱。不需要纠结点数设置默认8192点对1kHz信号来说已经足够。如果发现FFT结果底部噪声平台太高检查一下瞬态仿真的最大步长是否足够小。4. 常见问题与排查技巧实录4.1 偏置调不上去波形依旧有明显台阶这是新手最容易遇到的问题。加了二极管偏置但输出波形还是有一道坎。八成是偏置电压不够管子静态时没有真正导通。我遇到过两种典型情况一是二极管电流太小。R3、R4如果选得太大比如100kΩ流过二极管的电流只有零点几毫安二极管的压降会明显低于0.7V两个串联可能只有1.0V出头不足以让输出管充分微导通。解决办法是把R3、R4降到3.3kΩ到4.7kΩ让二极管有1mA以上的工作电流压降才能稳定在正常的0.6V到0.7V。二是二极管选型问题。1N4148的压降比较低两个串联约1.2V对某些功率管来说偏置不足。可以换成两个红色LED正向压降约1.8V到2.0V或者用VBE倍增器精确调节。LED的压降对温度不那么敏感做固定偏置也有一定优势。4.2 静态电流过大管子发热严重偏置过头了。正如前面说的输出管静态电流对偏置电压呈指数关系偏置电压稍微高一点静态电流可能从几毫安飙到几百毫安。如果你用手摸到功率管发烫在LTspice里查看静态工作点.op指令多半会发现静态电流异常大。解决思路是先降温再调偏置把R3、R4加大降低二极管链电流让偏置电压降下来如果有VBE倍增器直接微调分压电阻比。温度补偿很重要实际电路里小功率三极管或二极管最好贴在功率管上让它感知温度、自动调节偏置防止热失控。仿真阶段看不到热效应所以设计时要留足裕量大功率输出级务必加发射极电阻0.1Ω到0.5Ω做均流和限流保护。4.3 LTspice新手高频问题速查结合我平时被问得最多的问题整理一个速查表问题原因与处理保存文件时多出好几个文件.asc是原理图.raw是仿真波形数据.log是运行日志.net是网表.plt是绘图配置。这些文件都是LTspice自动生成的备份时只需保留.asc和用到的模型文件仿真提示unknown schematic syntax一般是SPICE指令或元件值写错了检查有没有多余空格、单位是否规范用k不用K实际LTspice大小写都认但别写中文标点怎么导入uA741这类第三方模型先把模型文件比如UA741.LIB放到原理图目录用.include指令加载再把运放符号的Value改成对应名称运行时会自动调用变压器怎么建模放两个电感如L11m、L21m再用耦合系数指令K1 L1 L2 1或0.99把它们耦合起来仿真启动瞬间出现超大电流电容初始充电或电感初始储能的冲击电流属于正常现象可以在.tran指令里设置UIC忽略初始条件或者加一个很小的启动电阻快捷键F2放元件、F3画导线、F4放网络标签、G接地、R旋转、S添加SPICE指令这几个日常最常用最后再说一个小经验LTspice的.raw文件如果和.asc不在同一个目录仿真完关闭窗口后重新打开波形可能会丢。所以建议每个项目单独建一个文件夹原理图、模型文件、仿真输出都放一起既好管理又不容易出奇怪问题。我在实际项目中积累的体会是调互补输出级关键不是盲目堆静态电流而是让偏置电压恰好跨过管子的导通阈值在过零处形成平滑的交接。二极管偏置适合快速验证批量产品和功率较大的场合还是建议用VBE倍增器并做好温度补偿。仿真终究不能替代打板和实测但用LTspice先把这个“换手”的机理吃透上板后就能少走很多弯路。你也可以打开LTspice搭一版试试十分钟就能看到这道“坎”是怎么消失的。