ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AD633模拟乘法器实战:运放做不了的乘法、除法与开方电路实测

AD633模拟乘法器实战:运放做不了的乘法、除法与开方电路实测 搞了快十年模拟电路运放的加减法我闭着眼都能搭——反相放大器、同相放大器、差分放大器、加法器几乎是条件反射。可真有一天客户要求在模拟信号链里做“实时乘除”我翻了一圈运放规格书结论却是单靠运放根本没法把两路电压信号直接乘起来。被逼无奈之下我翻出抽屉里的AD633模拟乘法器照着经典思路把乘法、除法、开方电路全部搭了一遍实测波形出来那一刻真想拍桌子这些“运放做不了的活”居然能这么简单又稳定。这篇文章就是我完整的实测记录从乘法到除法再到开方每级都带着示波器波形和调试参数给手头正在做模拟信号处理的工程师以及想进阶的电子爱好者做个参考。1. 运放的“天花板”在哪里AD633凭什么补位1.1 运放天生擅长线性运算但乘法不是它的主场运放的本质是一个高增益差分放大器通过负反馈让两个输入端保持“虚短”然后对输入信号做线性叠加。它擅长加减、比例、积分、微分本质上是线性运算电路。两路信号相乘是非线性运算线性电路的输出形式始终是 Vout a×V1 b×V2无论怎么组合都不可能变出 kV1×V2。有人会想到对数法把两个信号取对数相加再取反对数还原数学上完全成立工程上却非常折磨人。对数放大器和反对数放大器都对温度极其敏感需要额外的热敏电阻补偿网络频率响应通常只有几十kHz而且调平衡电位器的时候手都不能抖。早期我用两只三极管搭过一版温漂大得离谱仪器开机二十分钟输出就开始飘最后整个方案被我扔进了垃圾桶。当然某些精密仪表里确实有人用对数方案但那是极端追求宽动态范围的场景日常做模拟计算实在没必要这么折腾。1.2 AD633的核心竞争力四象限、内部齐整、自带输出运放AD633是一款非常经典的四象限模拟乘法器输出电压传输函数写成W (X1 - X2) × (Y1 - Y2) / 10V Z这里的 10V 是内部生成的归一化电压。理解这个比例因子是后面所有电路推导的地基假设两个差分输入都是10V那么乘积项就是 10×10/10 10V加在Z端的话最多能到11V左右。1V×1V输出0.1V2V×3V输出0.6V标定非常直观。内部结构上AD633采用的是Gilbert乘法单元。Gilbert单元利用差分对管跨导随工作电流变化的非线性把两个电压信号先转成电流在电流域完成相乘再经负载电阻和内置运放转换回电压。这种结构的工程价值在于它天然支持正负输入四象限运算还能通过内部对称设计把温度漂移做得相对可控这就不是普通三极管对数电路能比的。更省心的是AD633芯片内部已经集成了一颗输出缓冲运放你不需要再外接一级缓冲直接带示波器探头或者后级电路都比较轻松。1.3 什么场景真正需要模拟乘法器听到“模拟乘法器”这个名字可能有人会觉得是教科书里的老古董。但它的应用场景其实很硬核锁定放大器里的鉴相、功率测量里的电压×电流、自动增益控制AGC里的误差检测、峰值功率监测、模拟RMS测量、压控滤波器里的频率调谐这些都需要在连续时间域里做实时乘法。数字方案固然便宜精确但有采样延迟、有量化噪声在模拟控制环路里往往不够爽快。ADC采样MCU算乘法再输出给DAC整套流程的相位滞后在某些反馈系统里是致命的。AD633这种模拟器件做的是“零延迟”计算信号进去计算结果立刻出来这正是它到今天依然没被淘汰的原因。2. 动手前先吃透AD633的引脚、传输函数和供电细节2.1 引脚速览别把X和Y搞反AD633最常见的封装是8脚DIP或者SOIC-8引脚排列如下1脚 Y12脚 Y23脚 X24脚 VS-5脚 VS6脚 W7脚 Z8脚 X1X1和X2是一对差分输入Y1和Y2是另一对差分输入。实际使用时如果只是单端输入可以把X2、Y2直接接地。W是输出端。Z是一个非常实用的输入输出W与Z之间在内部是直接相加的关系所以可以用它给乘法结果叠加一个直流偏置或者另一路信号。初次上电前最好先用万用表确认电源引脚没有接反AD633的供电电压范围是±5V到±18V。我习惯用±12V理由是输入信号范围卡在±10V以内时输出级还有足够裕量功耗也低。如果你用±15V输入满量程可以更大但要更加注意功耗和输出级发热。2.2 传输函数里的10V是整个电路设计的锚点启动任何一个AD633电路之前建议先把传输函数写在纸上。它的意思是假设 X X1-X2Y Y1-Y2那么乘法器核心输出是 X×Y/10VZ输入上的电压原封不动加到输出端。这意味着信号幅度设计必须提前规划。输入范围超过±11V就可能进入内核饱和区。我实测过把X1接到13V直流这时输出已经完全偏离“输入乘以固定的比例系数”这条规律波形顶部出现明显的削顶和畸变。所以一般设计原则是两个输入信号的幅度尽量控制在±10V以内甚至在除法、开方这类高增益反馈电路里输入幅度还要进一步压缩防止中间节点饱和。2.3 供电退耦和参考地处理模拟乘法器最怕电源不干净。每个电源引脚对地都要加一个0.1µF陶瓷电容放置位置尽量贴近引脚另外在电源入口并联10µF电解电容。面包板上搭电路时我习惯在芯片正下方用飞线连一个“地岛”把信号地、电源地、以及所有电阻的下端汇聚到一起避免地环路串扰。没有处理好地线之前我曾在100mV输出上看到过大约2mV的50Hz工频纹波重新整理地线后纹波直接消失。如果手头有仿真工具比如circuitjs或者Multisim提前把电路仿真一遍也有帮助。但注意仿真软件里运放的开环增益通常默认极大而真实运放有频率特性AD633的模型也不一定包含所有非线性细节。仿真可以帮你验证直流工作点真正决定电路稳不稳的相位裕度还是得靠实体测试。3. 乘法电路实测直流标定与交流二倍频波形3.1 基本接线先跑一个最简单的乘法器最简单的乘法电路只需要几个连接X2接地、Y2接地、Z接地X1接VXY1接VYW就是输出。我用面包板搭这个电路大概花了不到十分钟。电源先上±12V确认芯片表面温度正常再用两个直流稳压源分别给X1和Y1供电。这里有个容易被忽略的细节直流稳压源直接接到芯片输入端时最好在表笔与芯片之间串一个1kΩ小电阻避免上电瞬间稳压源的浪涌直接冲击AD633的输入级。特别是某些老式线性稳压源上电瞬间会冲出很高的尖峰容易搞坏芯片。3.2 直流标定数据四象限乘法精度实测我用了四个直流输入组合逐一记录输出数据如下表VX (V)VY (V)理论输出 (V)实测输出 (V)误差2.0003.0000.6000.5980.33%-2.0003.000-0.600-0.5960.67%5.0005.0002.5002.4820.72%-5.000-5.0002.5002.4890.44%10.0002.0002.0001.9850.75%-8.0004.000-3.200-3.1860.44%可以看出在±10V范围内AD633不做任何外部校准的精度大概在1%左右。这个数字对纯模拟计算电路来说已经相当不错。如果你要求更高可以用精密电位器在Z端加一个小补偿电压或者在输出端接一级低失调运放做电平搬移通常能把误差压到0.5%以内。3.3 交流乘法秒变倍频器和调幅器把直流源换成信号发生器X1输入100kHz、1Vpp正弦波Y1输入同频、相位差0°的正弦波输出波形是什么按照公式W (1×sin(ωt))² / 10 (1 - cos(2ωt)) / 20理论输出是一个0.05V直流偏置加0.05Vpp的倒置二倍频余弦波。示波器上可以看到频率正好是200kHz但幅度只有50mV上下需要把示波器垂直档位调到20mV/div才能看清。这说明直接用1Vpp小信号乘法输出会被10V归一化系数“压”得很低。如果想看更明显的倍频效果把输入加大到5Vpp输出的二倍频分量就变成约1.25Vpp非常清晰。但注意输入信号太大会让波形靠近电源轨可能出现削顶所以5Vpp是我在±12V供电下的经验上限。接着我把Y1改成相位滞后90°的正弦波此时W (1×sin(ωt)) × (1×sin(ωt-90°)) / 10 0.05×sin(2ωt-90°)输出变成没有直流偏置的二倍频正弦波。这个现象非常直观地说明乘法器可以用作同步鉴相器还能用来做倍频。调幅实验我做了两组。载波用10kHz、1Vpp正弦波接入X1调制信号用100Hz、1Vpp正弦波叠加上1V直流偏置接入Y1输出就是标准的AM波形包络是100Hz载波细节是10kHz示波器上能清楚看到调制深度的变化。这套电路以后做同步解调、锁相环里的乘法鉴相都能直接拿来用。3.4 Z端的乘加一体用法Z端输入在内部直接与乘法结果相加所以你可以用它把一个小信号直接加到乘积结果上。比如做功率测量时需要给电压电流乘积结果叠加一个固定偏置让输出满足后级ADC的输入范围从Z端进偏置比在输出端再加一级加法器省事得多。Z端的输入阻抗比较低驱动它需要低阻抗源或者运放缓冲别直接用一个高阻电位器分压就怼进去那样偏置会随负载变化。4. 除法电路实测运放做反馈的经典结构4.1 为什么除法要借助运放反馈环AD633内部只能做乘法不会除。要让两个信号相除思路是反其道而行之把乘法器嵌进运放的负反馈回路里让运放不停调整输出直到乘法器的输出与输入信号满足平衡条件。这时运放输出端的电压在数值上就等于“除法结果”。电路结构是这样输入信号V1通过一个10kΩ电阻接到运放反相输入端同相端接地。运放输出Vout_amp接到乘法器X1Y1接另外一个输入信号V2X2和Y2接地Z接地。乘法器的输出W Vout_amp × V2 / 10V再通过另一个10kΩ电阻反馈到运放反相端。由于运放反相端是虚地电流关系可以写出来V1 / 10kΩ W / 10kΩ 0也就是 W -V1。把W代入乘法器传输函数得到Vout_amp × V2 / 10V -V1 Vout_amp -10V × V1 / V2这个结果非常干净。输出等于两个输入相除再乘上10V的系数。注意V2作为分母必须保证极性恒定也就是说V2只能是正电压或者只能是负电压不能跨越零点。跨越零点时反馈极性会翻转环路会瞬间从负反馈变成正反馈输出直接飞掉。4.2 元件选型与环路稳定性设计运放的选择上不需要太高带宽反而要偏重精密低噪声。我用过NE5532也用过OP07最终固定在OP07上。原因是除法电路对运放的输入失调电压和输入偏置电流比较敏感失调电压会在输出端产生直流偏置误差。OP07这类精密运放的失调电压只有几十微伏比NE5532好很多。运放的增益带宽积GBW不需要太高AD633的小信号带宽也就1MHz左右运放带宽太高反而更容易把环路噪声拾进来。两个反馈电阻我选了精度1%的10kΩ金属膜电阻。电阻不匹配会导致固定的比例误差比如两个电阻一个9.9kΩ另一个10.1kΩ除法输出的增益误差就会偏离理想值2%。如果你想让整个电路更精确可以选0.1%精度的电阻成本贵一点但在模拟除法里非常值得。实际调试时我在运放的反相输入到输出之间并联了一只22pF电容用来抑制高频自激。刚开始不加这个电容V2调到较小值时输出端出现了大约1.2MHz的高频振荡叠加在有用信号上非常恶心。这是因为运放、AD633、反馈网络组成的三级环路高频相移累计起来形成了正反馈。并联22pF电容后振荡立刻消失输出变得干净。4.3 实测波形和动态响应除法电路的直流测试我做了这样一组V1固定为1.0V直流V2分别取1V、2V、3V、5V理论输出分别为-10V、-5V、-3.33V、-2V。实测输出依次是-9.92V、-4.96V、-3.29V、-1.97V误差分别在0.8%、0.8%、1.2%、1.5%。V2越小误差越大因为此时环路增益更高V2的微小误差会被放大。动态测试更有意思把V1换成100Hz、1Vpp正弦波V2固定为2V直流。理论上输出 -5 × V1也就是一个反相放大5倍的正弦波。示波器上看到的波形非常标准幅度5Vpp相位反向180°基本看不出失真。这个测试验证了除法电路在动态输入下依然能正常工作。还有一个极端测试把V2降到0.5V理论上输出变成 -20 × V1增益极高。这时候输入波形上如果有一点点噪声输出端就会看到巨大的噪声毛刺。这是除法的物理本质决定的分母越小噪声增益越大。实际设计时必须给V2设置一个最低值限制尤其是数字化控制V2的场合不要让它无限逼近0V。5. 开方电路实测二极管的位置决定成败5.1 从乘方到开方反馈位置上多绕一步开方是乘方的逆运算所以AD633这次的作用不是做乘积而是做“平方”。把运放输出同时接到乘法器X1和Y1乘法器输出反馈到运放反相输入端。乘法器的输出此时是W Vout_amp² / 10V运放反相端同样满足电流平衡如果输入电阻和反馈电阻相等可以得到Vout_amp² / 10V -Vin为了让等式右侧为正Vin必须为负。输出取哪个方向再由二极管决定。公式整理后Vout_amp -sqrt(10V × |Vin|)如果输入是0到-4V的电压输出就是0到-6.32V输入是-1V时输出约-3.16V。开方关系在这里体现得很明显输入增大一倍输出只增大到原来的约1.414倍。5.2 为什么必须在运放输出和乘法器之间串二极管开方电路最容易被忽视的就是二极管。我一开始图省事直接把运放输出连到乘法器X1和Y1结果踩了大坑输入正电压时运放输出瞬间冲向电源轨整个环路锁死只能断电复位。原因是乘法器平方输出永远是正的当输入为正电压时电流平衡方程要求乘法器输出为负这就产生矛盾。环路为了“寻找”一个不存在的平衡点会把运放输出推到饱和变成正反馈锁定状态。解决方法是在运放输出与乘法器输入之间串一只1N4148二极管。二极管的方向这样接只有运放输出为负电压时电流才能通过二极管到达乘法器输出为正电压时二极管截止。这一下解决两个问题其一输出极性被强制为负根号的正负歧义消失其二输入极性非法时环路无法建立正反馈输出被钳在0V附近不会锁死。一只五毛钱的二极管就是这块电路能不能稳定工作的关键。这也是为什么我坚持把这个细节单独拿出来讲。5.3 实测波形三角波被“开方”成什么样我用信号发生器输出0到-4V、频率50Hz的慢三角波作为输入。理论上输出波形应该是0到-6.32V之间的“开方曲线”。示波器上看到的是一条向上凸的曲线在输入接近0V的区间输出斜率最大变化非常陡输入越负输出曲线越平缓。这正是开方运算的典型特征。换成0到-5V的负正弦半波频率100Hz输出波形明显被“压缩”正弦波的顶部被压得更平底部过零区域变得更尖。输出峰值实测约-7.05V与理论值-sqrt(50)≈-7.07V几乎一致说明整个开方链路的比例关系完全正确。我还做了非法输入测试把正负对称的正弦波直接接到开方电路输入由于二极管保护电路没有锁死。正半周时输出被钳在接近0V负半周时输出正常做开方运算。这个特性在波形整形、模拟音频压缩器里非常实用。6. 实测中踩过的坑波形畸变、自激和精度问题6.1 输入过载导致的内核饱和第一次做乘法实验时我直接用信号发生器的最大输出档位信号峰值大概11V结果示波器上看到的输出波形顶部有个奇怪的平台。排查了半天才发现是AD633输入级进入饱和区了。任何乘法器都有输入范围限制AD633在±12V供电下输入即便接近±11V输出也会偏离理想传输函数。解决办法是把输入幅度限制在±10V以内同时在测试时用示波器光标测量实际输入信号峰值不能只信信号发生器的屏幕读数。很多信号发生器在高频段实际输出幅度会衰减如果较不准乘法电路标定就会出错。6.2 反馈环路自激的识别与补偿除法、开方电路本质上都是闭环系统最容易出现的就是自激振荡。自激的特征很好认在输出波形上叠加了一个几百kHz到几MHz的高频正弦有时候你会听到示波器喇叭发出微弱的高频嘶嘶声。自激通常在小分母、高增益状态下出现因为环路增益越高相位裕度越差。处理方法是逐步在运放反馈电阻两端并联小电容从4.7pF开始尝试不够再加到22pF、47pF。我最终确定22pF原因是4.7pF时振荡还在47pF又让100kHz信号的边沿明显变缓22pF在稳定性和带宽之间最平衡。注意补偿电容要直接跨接在运放反相输入与输出两端并且尽量缩短引线别在面包板上拉一大截飞线那样寄生电感反而会引入新问题。6.3 精度问题的定位思路模拟乘法器链路的整体精度受好几个因素共同影响输入失调、电源电压波动、电阻匹配、AD633芯片自身的增益误差。实测时想把精度稳定在0.5%以下我只做一件事先把所有电阻换成0.1%的精密电阻然后在Z端加一个可调偏置把零点校准掉。对于除法电路如果分母V2有5%误差输出就会有5%误差很多时候不是芯片精度不够而是你给它的分母信号没测准。如果你真的是做仪表类产品要求0.1%精度甚至更高我建议还是老老实实上ADC加数字计算。AD633这类模拟器件的长处是连续时间、低延迟、结构简洁而不是和24位ADC拼精度。6.4 面包板到PCB的注意事项实验阶段在面包板上搭电路没问题但别指望面包板的寄生电容能撑起完整性能。AD633在1MHz附近本身增益就开始滚降面包板乱飞的走线还会让串扰更严重。正式做板子时X1、X2、Y1、Y2这几根敏感输入线要短而直不要和输出端W平行走线太长。电源引脚附近的退耦电容一定要放在同一面靠近引脚放置并且用单独的过孔回到地平面。如果做除法或者开方电路运放和AD633之间尽量靠近反馈回路面积越小越好。我见过朋友画的板子长度不到5厘米的反馈线因为绕了一大圈结果高频自激怎么都压不掉最后重新布线才解决。最后再分享一点个人体会。ADI这颗AD633看起来确实是“老芯片”了但它在连续时间模拟信号处理上的地位很难被数字方案完全替代。乘法、除法、开方这些运放本身做不到的数学运算用一个AD633加一个普通运放就能完成而且电路结构清晰、行为可预测。如果你正在做AGC、功率检测、锁相环、模拟压扩或者老式模拟计算机风格的项目完全可以参照我这篇实测记录从乘法开始一路搭过去。手头没有AD633用AD835、MC1496这类芯片也能替代但它们的归一化电压、带宽和引脚定义各不相同换芯片后务必重新做直流标定再上交流信号验证。
返回列表