ARTICLE DETAIL

资讯详情

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

数模电工程避坑:地回流、运放自激、CMOS悬空与亚稳态

数模电工程避坑:地回流、运放自激、CMOS悬空与亚稳态 “数模电”这三个字在学生眼里是两门课在工程师眼里是一部长篇连续剧一集一个坑。教材把运放讲得行云流水虚短虚断一句话带过把 CMOS 输入阻抗写成无穷大把导线当成零电阻的理想元件。然后你上了板子发现运放自激了、I2C 总线时好时坏、板子在实验室里跑得稳稳当当装进机箱就开始复位。这些问题的共同点是它们几乎不会出现在教材的例题里也不会出现在期末试卷上却能在实际调试中吃掉你整整一周的耐心。我把这些年自己踩过的、以及带新人时被反复问到的几个“冷门问题”整理成这一篇都是细枝末节、但真的会咬人的东西。不管你是刚学完模电数电在准备校招面试还是已经画了两三年板子这里面大概总有一两条是你之前没有认真想过的。1. “地”从来不是零电位回流路径与地弹的真实影响原理图上的 GND 是一个符号PCB 上的 GND 是一片有电阻、有电感、还会互相耦合的铜皮。很多人画板子的习惯是“信号走线认真画地随便铺”这个习惯在低频小电流场合侥幸没事一旦有开关电源、电机、继电器或者高速数字信号问题就集中爆发。1.1 电流总要回家回流路径比走线本身更关键电流从驱动器流出经过走线到达负载然后必须回到驱动器的地脚——这一步叫回流。关键结论是回流电流会自动选择阻抗最小的路径而这个路径在高频下不是“最近的直线”而是紧贴信号走线正下方的那条路径。因为信号走线与下方参考平面之间构成一个很小的回路面积回路电感最小如果地平面被一条槽割断回流只能绕远路回路面积瞬间放大几十倍随之而来的是辐射增强、串扰加剧、边沿变缓。我在一块四层板上吃过这个亏顶层走了一根 8MHz 的时钟线中间电源层被一条较宽的走线割出了一道缝结果这根时钟线成了整块板最强的辐射源附近一路 ADC 的采样值偶尔跳动。当时我的排查顺序是错的先怀疑 ADC 和基准源折腾了两天才想到用近场探头去扫发现辐射最强的位置正好是时钟线跨越地缝的那一段。所以第一件事永远是检查高速信号线有没有跨越平面的分割缝这个错误比元件选型错误常见十倍。信号线正下方必须是完整参考平面不允许跨分割换层时旁边就近放一个回流过孔给回流提供垂直通道低频大电流电机、继电器和高速小信号不要共用一段地铜皮。1.2 模拟地与数字地0 欧电阻、磁珠还是直接连这是面试里出现频率极高、实际工程里争议也极大的问题。先说一个容易被忽略的事实“模拟地”和“数字地”本质上都是同一块铜皮上的电位它们之间并不存在天然的隔离隔离是人为做出来的。常见的三种处理方式差别在于“在哪个频段隔离、隔了多少”。处理方式直流/低频高频MHz 以上适用场景直接连成一片地完全连通完全连通小型板、混合信号器件少的场合0 欧电阻单点连接基本连通几十毫欧仍有阻抗可抑制部分高频环流需要预留可切断点的调试板磁珠单点连接直流照样通过几乎不隔离低频高频呈现较高阻抗数字噪声集中在高频的场合很多人以为磁珠能“隔开数字噪声”实际上磁珠的阻抗曲线是这样的直流电阻通常只有几十毫欧几十 kHz 以下阻抗极低只有在几十 MHz 以上才明显上升。也就是说低频纹波和直流压降照样从磁珠上过去它只对高频环流有抑制作用。如果数字部分的干扰主要是开关电源的低频纹波用磁珠基本没用。0 欧电阻的价值则更多体现在“给调试留一个可以断开的点”和“强迫布局上把两块区域分开”而不是电气性能本身。我的实际做法是混合信号器件比如 ADC、DAC、MCU 内置 ADC的地脚全部接模拟地然后模拟地与数字地在靠近这颗器件的位置单点连接——注意是靠近器件不是靠近电源入口。理由是数字回流是局部的你在电源入口合并数字回流仍然要横穿整块模拟区才能回到它的源头。1.3 怎么判断地噪声真的是问题三个可复现的实测动作怀疑地噪声但没证据的时候我不再靠“换元件碰运气”而是做三个动作双通道相减法两个探头都用地线夹接到同一个参考点比如电源入口的 GND一个测信号一个测远端的地然后在示波器上做数学相减。这样可以绕开探头地线本身的共模干扰看清楚两点之间的真实地电位差。探头地线位置对照法把探头地线夹分别夹在板子上两个相距较远的 GND 点测同一个信号如果波形明显不同说明这两点之间存在可观的地电位差脉冲期间几十 mV 甚至上百 mV 很常见。临时短接法用一根粗铜线或铜箔把疑似有问题的两块地短接起来看现象是否消失。如果消失说明之前的单点连接位置不对或者阻抗太高。注意第三个动作只适合在低压小电流的调试板上做且必须在断电状态下焊接、上电前检查不要在有高压或大电流的功率板上随手飞线。2. 虚短虚断什么时候不成立运放的三个隐藏边界“虚短虚断”是模电里最有用也最容易被滥用的结论。它的成立前提其实有两个负反馈有效、输出没有饱和。这两个前提在实际电路里经常有一个不满足而失效后的表现往往非常反直觉。2.1 输出饱和与开环增益有限带来的“假虚短”先算一笔账。虚短意味着同相端和反相端电压相等严格说这是开环增益无穷大时的极限结论。实际运放的开环增益是有限的闭环误差近似为 1/(1Aβ)其中 A 是开环增益β 是反馈系数。假设某通用运放开环增益 100dB也就是 10 万倍电路是噪声增益 100 倍的同相放大那么 β≈1/100Aβ≈1000闭环增益相对误差约为 0.1%。这个量级在做直流精密测量时已经不能忽略了因为它会直接变成增益误差。更严重的是输出饱和。当输入信号大到让输出顶到电源轨附近时负反馈环路实际上断开了这时候两个输入端不再等电位差值可以大到几十毫伏。很多人在调试比较器或者带限幅的放大器时看到输入端电压差很大就怀疑自己算错了其实只是输出已经饱和。判断方法很简单先测输出电压是否贴着实测的电源轨注意不是标称电源电压要减去输出级的饱和压降或者看轨到轨器件的实际裕量如果贴着轨那么虚短已经不成立一切基于虚短的推导都要作废。2.2 容性负载与相位裕度为什么加个电容就自激运放输出的等效输出阻抗几欧到几百欧不等具体看器件和频率和负载电容构成一个极点这个极点会额外贡献相位滞后把本来就不宽裕的相位裕度吃掉于是输出开始振铃甚至自激。经验分档大致是这样的负载电容 50pF 以内绝大多数通用运放不会出问题几百 pF 到几 nF开始出现方波顶部的振铃几十 nF 以上尤其是直接驱动长电缆大概率自激。解决办法有三个层次串联隔离电阻典型 10Ω 到 100Ω放在输出和电容之间把极点往高频推、RC 补偿网络电阻串电容接地成本比隔离电阻高但副作用小、换用专门能驱动容性负载的运放。我一般先用 22Ω 到 47Ω 的隔离电阻试用 1kHz 方波看阶跃响应如果顶部有过冲和衰减振荡就加大电阻加到一个点过冲刚好消失再加 20% 留裕量。这里有个常见的误判振铃不一定是电容引起的也可能是探头和引线。所以测之前先用探头自带的校准方波确认探头补偿正常再下结论。这一点后面第 6 节会详细说。2.3 压摆率、偏置电流、失调这些参数什么时候会咬人这三个参数在教材里都有但教材很少告诉你“在什么量级下它们会变成主要矛盾”。**压摆率SR**决定了运放处理大信号的能力。全功率带宽 FPBW 的估算式是 SR/(2πVp)Vp 是输出峰值电压。以 SR 1V/µs 的运放为例输出 5V 峰峰值即 Vp 2.5V算出来 FPBW ≈ 1e6/(2π×2.5) ≈ 64kHz。也就是说这颗运放的小信号增益带宽积可能有 1MHz但你让它输出 5V 峰峰值时一过 64kHz 波形就变成三角形了。很多人只看增益带宽积选型忽略了大信号下的实际带宽这是最常见的一个选型错误。**偏置电流Ib**的影响大小取决于信号源阻抗。CMOS 输入运放的 Ib 可以低到 pA 级双极型输入运放常在 nA 到 µA 级。同样是 1MΩ 的高阻分压源配上一颗 Ib 100nA 的运放输入端光是偏置电流就能产生 100mV 的误差电压直接把电路废掉。这类高阻场合要么选 CMOS 或者斩波稳零运放要么在输入端加“平衡电阻”让两端的偏置电流产生的误差互相抵消——前提是两端的偏置电流大小相近。**失调电压Vos**决定直流精度。普通运放 Vos 在 mV 量级精密运放能到几十 µV斩波自稳零运放可以到 µV 以下代价是带宽低、有斩波纹波。选型时先算清楚允许的总误差是多少再倒推 Vos 的上限不要凭“精密运放”这个词去选。3. 上拉电阻该填多大一个大多数人都靠“抄”的参数上拉电阻是原理图上最常见的元件之一也是最容易被随手写成一个数字的元件。常见现象是别人的图上是 4.7k我抄过来别人的图上是 10k我也抄过来。抄没错但要知道抄的是什么。3.1 从总线上升时间倒推RC 到底谁是 R 谁是 CI2C 这类开漏总线上升沿完全由上拉电阻和总线电容决定下降沿由驱动器的下拉能力决定。所以上升时间 tr 的估算式是 tr 0.847 × R × C这个 0.847 来自 I2C 规范把上升时间定义在 0.3Vdd 到 0.7Vdd 之间换算成 RC 时间常数的系数就是 ln(0.7/0.3) ≈ 0.847。I2C 规范给的上升时间上限标准模式100kHz1000ns快速模式400kHz300ns。假设一条挂了三四个器件、走线又比较长的总线总电容估算 200pF标准模式R 1000ns / (0.847 × 200pF) ≈ 5.9kΩ所以 4.7k 能过快速模式R 300ns / (0.847 × 200pF) ≈ 1.77kΩ这时 4.7k 就明显不够了。实测中我见过太多“100kHz 用 4.7k 能用改成 400kHz 就开始随机出错”的案例。表面看是通信速率问题根子在上拉电阻没有跟着改。判断方法很简单把示波器打在总线的一个数据脚上触发条件设成上升沿看上升时间是多少如果接近或超过规范上限通信的容错余量就极其脆弱。3.2 灌电流与功耗下限由谁决定上拉电阻也不是越小越好。低电平期间从电源经过上拉电阻灌进驱动器的电流是 Vdd/R。3.3V 系统里 1kΩ 上拉意味着 3.3mA 的持续灌电流如果这条总线上挂了五个器件每个器件都要吸收这 3.3mA当然实际是分流但最坏情况分析要按单个器件承担全部来算很可能超过器件的 IOL 能力。同时低电平的电压 VOL 是 IOL × Rds(on)如果器件开漏管的内阻较大VOL 可能被抬到超过 VIL 门限逻辑就认不出来了。功耗方面还有一个容易忽略的场景如果开漏脚长期处于低电平比如某个使能脚常态为低上拉电阻越小静态功耗越大。14 路这样的小电阻长期灌电流对电池设备来说是白白流走的电量。所以总线型场合取 2.2k 到 4.7k非总线型长期拉低场合取 10k 到 100k是两种完全不同的取值逻辑。3.3 复位脚、使能脚、按键非总线场景的经验值这些场景没有时序规范约束取值主要看三点够不够抗干扰、够不够省电、和滤波电容配不配。我整理了一张常用的参照表场景典型取值依据MCU 复位脚10k 上拉 100nF 到地兼顾 RC 上电延时与抗干扰按键输入10k 上拉配合 0.1µF 或软件消抖阻值太大容易被环境噪声耦合出误触发开漏中断脚4.7k 到 10k通常只有一根线电容小不需要太小的阻值使能脚长期有效10k 到 100k静态电流优先I2C 快速模式2.2k 到 3.3k上升时间优先顺带一个细节上拉电阻的阻值越大节点越容易被附近的强干扰源耦合出毛刺。所以“为了省电把上拉电阻尽量加大”这条经验不能无条件套用前提是这个节点没有噪声耦合路径、或者旁边配了合适的小电容。4. CMOS 悬空输入数字电路里最像“玄学”的故障数字电路给人一种确定性的错觉1 就是 10 就是 0。悬空输入会打碎这个错觉。4.1 悬空脚为什么会自己跳来跳去CMOS 输入端的栅极是绝缘的直流输入阻抗极高输入电容通常只有几个 pF。引脚悬空后这一点电位由非常微弱的漏电流、PCB 表面的湿度、附近走线的容性耦合共同决定很容易停在高电平和低电平之间的某个中间值。这个中间值的后果不只是“状态不确定”输入级上下两个 MOS 管同时处于微导通状态产生从电源到地的贯穿电流静态功耗明显上升管子处在放大区增益很高任何一点扰动都会引起输出大幅摆动看起来像在振荡下一级的组合逻辑会因为这个随机输入而产生随机输出计数器乱跳、状态机跑飞、中断误触发都是这么来的。有一次我调试一块小控制板MCU 的功耗比估算值高了将近一倍反复看代码和时钟配置都没找到原因最后拿万用表量到一个没用的比较器输入脚悬空电压停在 1.6V 左右把它接地之后功耗立刻降下来。这类问题最恼人的地方在于它的表现完全不像“硬件故障”更像是软件跑飞或者电源设计有问题。4.2 未用门和未用引脚的正确处理处理原则其实只有一条任何输入脚都不允许悬空必须有确定的直流电平。具体做法分几种未用的输入脚直接接 VCC 或 GND。某些老规范的器件建议串一个 1k 到 10k 的电阻再接地主要是为了在内部保护二极管误动作时限制电流现代器件多数可以直接接。未用的门输入接固定电平输出悬空即可。如果这个门是开漏输出输出端要加上拉电阻或者直接接地。未用的双向口按输入处理配置成带内部上拉或下拉的输入模式不要配置成无上拉的悬空输入。未用的总线脚总线上拉到确定的高电平不要放着不管。这里有一个非常容易混淆的坑传统 TTL 器件的输入脚悬空在电气上等效于高电平因为它的输入级是发射极输入结构悬空时靠内部电流拉高。于是很多老工程师会说“悬空就是高电平不用管”。但 CMOS 器件不是这个原理悬空就是真悬空电位不定。跨工艺混用的时候这条经验必须反过来用。输入类型悬空时的电气表现是否可悬空传统 TTL等效高电平电气上可但不建议标准 CMOS电位不确定可能停在中间绝对不可带施密特输入的 CMOS电位不确定但抗干扰略好不可仍需固定电平内部带上拉的输入拉高视内部上拉阻值而定4.3 扇出、输入电流与阻值的联动扇出这个话题在教材里通常只讲直流部分DC 扇出等于驱动器的 IOH 除以每个负载的 IIH。CMOS 输入的漏电流在 nA 级算下来的直流扇出大得惊人于是很多人得出“CMOS 几乎不用考虑扇出”的结论。这个结论只在直流下成立。真正的限制在交流侧每个 CMOS 输入脚有几个 pF 的输入电容n 个负载并联就是 n 倍加上走线分布电容、过孔电容总负载电容可能到几十甚至上百 pF。驱动器要在规定的上升时间内把这几十 pF 充到门限以上输出驱动能力不够时边沿就会变缓一旦变缓超过下一级的输入转换速率要求就会出现振荡、双沿触发甚至数据错误。所以正确的说法是CMOS 的直流扇出几乎不用算但交流扇出必须算尤其在你把一根时钟线挂到十几个器件上的时候。一个实用的验证方法把这对驱动/负载中最远的一个输入脚用探头测一次上升时间和你手册上要求的最大值对比。如果余量低于 30%考虑用缓冲器分叉而不是硬撑。5. 满足建立时间和保持时间为什么还是出错时序分析是数字设计里最“显学”的部分静态时序分析工具会把每一条同步路径都算一遍。但工具能算的只有同步路径异步信号从来不在它的管辖范围内。5.1 时序满足不等于不会出错异步信号是另一套规则建立时间和保持时间描述的是“数据在时钟有效沿前后必须稳定一段时间”这个物理约束。工具通过计算最大延迟路径和最小延迟路径来保证这一点在同步电路内部成立。问题在于来自外部的信号——按键、外部芯片的输出、复位释放沿、跨时钟域的数据——跟本地时钟之间没有任何相位关系数据可以在任意时刻到达包括正好落在时钟沿的窗口里。这时候触发器的行为就进入了亚稳态。亚稳态的表现是触发器输出在门限附近停留一段不确定的时间然后才随机地倒向高或低。这段时间可能在几个皮秒内结束也可能拖到几十纳秒。后果是后级电路可能采到一个既不是高也不是低的中间电平不同分支对这个中间电平的解读还可能是相反的。5.2 两级同步器为什么是“两级”怎么估算级数标准做法是把异步信号先打两拍。第一级触发器进入亚稳态后只要它在第二个时钟沿到来之前自己恢复稳定第二级采到的就是确定值。也就是说两级同步器的本质是给亚稳态留一个时钟周期的时间去衰减。要不要第三级取决于对可靠性的要求和时钟频率。工程上有个常用的可靠性估算式描述的是平均无故障时间的量级MTBF ≈ e^(t/τ) / (T0 × f_clk × f_data)其中 t 是留给亚稳态衰减的时间通常取一个时钟周期τ 和 T0 是工艺相关的特征参数f_clk 是本地时钟频率f_data 是异步数据的翻转频率。从这个式子能看出几个重要结论时钟频率越高MTBF 指数级下降异步数据翻转越频繁MTBF 线性下降留的衰减时间越长MTBF 指数级上升这也是打第二拍、第三拍有效的根本原因。所以在高频设计里只打一拍几乎注定会出问题打两拍在多数场合够用时钟频率上百兆、数据又是连续翻转的场合打三拍是有必要的。关键是要意识到这里有一个概率问题不是一个“满足就算对”的确定性问题。5.3 实际系统里亚稳态长什么样它的表现完全不像“时序问题”而更像玄学按键偶尔失灵、偶尔连跳换个批次又好了上电复位偶尔失败反复上电几十次才出现一次跨时钟域的 FIFO 偶尔读出一个明显错误的数据但拷机几千次才复现一次多 bit 信号同时打拍时采到“半新半旧”的组合值比如一个从 3 变到 4 的计数器被采成了 7。最后一条尤其值得注意多 bit 信号跨时钟域传递不能简单地对每根线各打两拍因为每一根线的亚稳态恢复时间不同各拍之间会出现不一致的过渡态。正确做法是用格雷码每次只变一位、握手信号或者异步 FIFO保证一次只有一位在变化或者用一个明确的“准备好”信号来标记数据有效。6. 你在测电路探头也在改电路最后一个坑属于测量本身。很多人相信示波器上的波形就是电路的真实状态但探头本身是一个有输入阻抗、有输入电容、有接地电感的有源负载它会实实在在改变被测节点。6.1 1X 和 10X 的区别不止放大倍数10X 探头的输入电容通常在 10 到 15pF1X 探头常常在 50 到 100pF 甚至更高。测一个高阻节点、一个晶振脚、一个反馈分压中点时多出来的几十 pF 足以改变电路的工作点甚至让振荡器停振。我遇到过最典型的案例是一个 32.768kHz 晶振探头一碰就不起振松开就正常反复验证之后确认是探头电容把振荡回路的负载电容拉偏了。处理办法测这类节点要用高阻低容的有源探头或者串一个很大的电阻比如 1MΩ再测或者干脆测一个与振荡同源的缓冲输出脚不要直接碰振荡回路。6.2 补偿与方波顶部怎么调才是对的10X 探头尾部通常有一个可调电容用法是接示波器自带的校准方波输出调这个电容直到方波顶部完全平坦。别小看这一步欠补偿方波顶部偏圆、上升变缓你会误以为电路边沿慢过补偿方波顶部有尖峰和过冲你会误以为电路振铃严重。在没做补偿校准之前测出来的过冲数据都是不可信的这是我见过最多的“假故障”。建议每次换探头、换示波器通道第一件事都是花十秒做一次方波校准。6.3 地线夹那几厘米可能比探头本身影响更大探头地线夹的那根线电感大约每毫米 1nH10cm 就是 100nH 左右。当被测信号上升沿很快时di/dt 很大地线上感应出的电压 V L × di/dt 可能有几百 mV 甚至上伏这个电压会直接叠加到测量结果上。所以你看到的“振铃”有很大一部分可能根本不是电路的而是探头环路自己的。判断方法很简单把探头尖端和地线夹同时短接到同一个地平面上看看示波器上还有没有波形。如果有明显的高频振铃那就是测量系统的假信号。解决办法是用探头附件里的弹簧地环那种很短的接地弹簧替代鳄鱼夹把接地回路面积压到最小。这一条在大电流开关电源、功率级测量里尤其重要用鳄鱼夹测出来的波形基本没法看。我自己带过的新人里最容易忽略的是第 4 条悬空输入因为它不像“电路错误”更像“软件问题”排查方向一开始就偏了。后来我形成了一个习惯任何一块新板子第一次上电之前先拿万用表把所有未使用引脚对地量一遍确认每一个都有确定的直流电平这一步花不了五分钟能省掉后面几个晚上的调参。另外还有个小习惯值得分享调试记录里除了写“改了什么”一定要写“改之前测到的现象是什么、改之后现象怎么变的”因为很多偶发问题下一次出现可能是几个月以后那时候你只会记得结论不会记得证据。
返回列表