做全差分运放的人,大概率都遇到过这种诡异现象:原理图检查了三遍,偏置也没毛病,跑一个简单的 transient,两路输出 Voutp 和 Voutn 的差分波形漂亮得很,但它们的直流电平像商量好了一样慢慢往上爬,最后直接怼到电源轨。我第一次碰到这事是在一个 SAR ADC 前端设计里,第一版原理图把两级全差分运放搭好,偷懒没加共模反馈,结果就是上面这个画面。后来才彻底明白,全差分运放的差分环路再结实,输出共模也是一个无人看管的自由变量。今天这篇就好好聊一聊全差分运放 + 开关电容共模反馈(SC-CMFB),为什么非加不可、它怎么工作、设计时参数怎么定、仿真怎么验、版图怎么画,以及最容易被忽略的坑都在哪里。想把手里的全差分运放从“能跑”做到“能用”,这篇应该能帮到你。
1. 从一次“忘加共模反馈”的事故说起:全差分的共模失控
1.1 事故回放:仿真里爬升到电源轨的 Voutp/Voutn
那是一个两级全差分结构,第一级折叠共源共栅,第二级 Class AB,电源电压 1.8V,输入共模和参考电压都设在 0.9V。刚开始做直流仿真一切正常,增益、摆幅、功耗都在预期之内。等跑电路正常工作的 transient 时,问题就来了:输入给了一个 1MHz 差分正弦,输出端 Voutp 和 Voutn 的差分信号一开始确实是对称的,但两个节点的直流电平并不是稳稳停在 0.9V,而是在几百纳秒内同时朝着电源轨方向漂移。差分输出幅度看起来还在增大,实际已经出现削顶了。
当时还以为是某个偏置电路没启动,反复抓电路里的内部节点电压,最后把 Voutp 和 Voutn 单独拉出来看,发现这两个节点的平均值一直在变,而差分环路并没有任何机制去纠正这个平均值。说白了,全差分运放的差分环路把“Voutp - Voutn”控制得很好,但“(Voutp + Voutn)/ 2”这一项完全是开环的,它就像一根没有对准零线的天平横梁,差分环路管的是两边差值,没人管两边的绝对位置。
1.2 共模失控的物理根源:悬空的输出直流电位
很多人会有疑问:理想情况下差分对不是天然抑制共模吗?共模电压变化会被差动结构抵消掉,怎么还会漂移?理论上全差分结构确实对共模扰动有抑制作用,但抑制共模干扰和稳定输出共模是完全两回事。抑制共模是指在输入端出现的共模扰动不会传到输出差分信号里去,可输出端的直流电位本身靠什么锚定呢?没有任何元器件给它一个明确的对地参考。
实际电路里造成共模漂移的来源非常多:差分输入对管阈值电压失配,有源负载对称性不足,输出节点的寄生电容不相等,尾电流源的沟道长度调制效应随输出共模电压变化导致尾电流波动。任何一个不平衡的共模电流在输出节点上累积,都会让输出直流电平整体移动。单端运放不存在这个问题,是因为负反馈会强制输出直流跟随输入参考。而全差分运放的差分负反馈只约束两个输出之间的差值,对它们共同漂移完全不敏感,于是输出共模就变成了一个悬空的自由度。
可以这样理解:全差分运放的输出端像一艘没有自动舵的船,差分环路管的是船舵方向,但船整体的航向(共模电平)需要另一个人来纠偏。没有这个人,船就会越偏越远,直到撞上电源轨或地轨。
1.3 共模反馈的本质:并联在差分环路上的第二个负反馈
要让输出共模稳定下来,必须在电路里再加一套环路,专门做一件事:检测输出共模电压,和参考电压比较,生成一个控制信号,调节共模电流,把输出共模拉回到参考值。这个环路就是共模反馈(CMFB)环路。它不是用来处理差分信号的,而是主差分环路之外并联的第二个负反馈。
共模反馈环路的带宽其实不需要做多高,因为差分信号的建立还是要靠主环,但它的直流增益要足够,不然输出共模误差压不下来。从结构上看,共模环路和差分环路共用同一套放大器件,只是检测量和控制量不同。它可能通过调节尾电流源电流、调节有源负载偏置,或者改变输出级电流分配来稳定共模。做全差分运放的时候,只要输出是浮动的、没有经过共模负反馈钳制的,这个环路就省不掉,差分管子摆得再漂亮都没用。
2. 开关电容共模反馈的工作原理:电容如何感知共模误差
2.1 连续时间方案对比:为什么 SC 方案没有静态功耗也不吃摆幅
共模反馈的实现方式不只是开关电容这一种。最常见的对比方案是:用两个大电阻把 Voutp 和 Voutn 分压出共模点,再通过一个连续时间误差放大器把这个共模点与参考电压比较,输出控制电压。这个方法简单直观,但问题也很明显:检测电阻直接并联在输出端,会降低主放大器的输出阻抗,进而吃掉一部分电压增益;误差放大器本身还要消耗静态功耗和额外的电压裕度。在高增益、大摆幅的电路里,这两个代价都不小。
还有一种方案是用长尾管做共模检测,直接在输出级串联一对交叉耦合的管子来感应共模电流。这种结构带宽很高,适合连续时间应用,但它对共模输入范围很敏感,而且在小电源电压下很难把工作点设置妥当。
SC-CMFB 的优势在于它用开关和电容代替了电阻分压和连续时间放大器。电容在采样相不消耗静态电流,也不降低输出节点阻抗;它只在开关切换的瞬间从输出端抽取一点电荷,采样结束后和输出节点之间是断开的。这对高摆幅、低功耗的电路非常友好,而且电容本身的匹配精度比电阻做分压要高得多。缺点是它是离散时间系统,会带来采样保持纹波,并且比较相期间输出共模只能靠电容保持,所以它最适合用在本身就有时钟的开关电容电路里,比如开关电容放大器、流水线 ADC 的残差放大器、SAR ADC 前端等。
2.2 四电容结构的工作过程与电荷传递
SC-CMFB 的结构有不少变体,但最基础、最常用的是四电容结构:两个采样电容 CS1、CS2,两个保持/复位电容 CH1、CH2,加上一组工作在两相非交叠时钟下的开关。我以最常见的接法来说明它的工作过程,实际项目中可以根据主运放结构做细微调整。
采样相 φ1 时,CS1 一端接 Voutp,另一端接共模参考电压 Vcm_ref;CS2 一端接 Voutn,另一端也接 Vcm_ref。同时,Vcmfb 节点通过一个复位开关接到预置电压 Vinit,保持电容 CH 跨接在 Vcmfb 与 Vcm_ref(或地)之间,把 Vcmfb 预充电到接近正常工作点的位置。换句话说,φ1 的任务是把输出共模信息以电荷的形式存储在 CS1、CS2 上,并且让 Vcmfb 复位到一个确定值。
比较相 φ2 时,原本接 Vcm_ref 的那两个电容端点连在一起,接到 Vcmfb 节点;CS1、CS2 的另一端仍然分别接 Voutp、Voutn。从外面看,这两个采样电容变成串联连接,中间节点是 Vcmfb。由于电容串联中点电压天然和两端电压的平均值成正比,差模分量会在中点相互抵消,中点电压携带的正是输出共模与参考之间的误差信息。这个误差通过电荷守恒作用,把 Vcmfb 从预置电压拉到一个新值,Vcmfb 再去控制主运放的共模调整管,从而形成负反馈。
稳态时每个时钟周期都会有微小电荷在采样电容和保持电容之间交换,Vcmfb 最终停在某个平均值上,输出共模被收敛到 Vcm_ref 附近。整个环路没有静态电流流过检测路径,功耗主要是开关驱动的动态功耗,代价则是 Vcmfb 在每个周期末尾会有一点点纹波。
2.3 一个具体的定量估算:纹波多大、反馈多强
为了对这个结构有更直观的认识,可以做一个简化估算。假设 CS1 = CS2 = 0.5pF,保持电容 CH = 2pF,输出共模电压偏离参考值 ΔVout_cm = 50mV。根据电荷守恒,Vcmfb 节点上产生的修正量大约是:
Vcmfb 修正量 ≈ (CS / CH) × ΔVout_cm = (0.5 / 2) × 50mV = 12.5mV
也就是说,共模误差被电容比例衰减后再送到控制管栅极。这个衰减不是坏事,它防止输出共模出现大的瞬态过冲;但代价是共模环路的检测灵敏度只有 0.25。最终环路的直流增益要靠控制管的跨导和主运放共模通路的增益来补。如果发现输出共模的直流误差偏大,很多时候不是主环的问题,而是这个检测比例或控制管跨导不够。
Vcmfb 的纹波也可以用类似思路估算。每次采样相到比较相的切换,CS 上的电荷变化量乘上开关切换的周期性,会在 Vcmfb 上产生一个三角波或尖刺形态的纹波,幅度大致在几十毫伏量级。如果纹波太大,主要影响是输出共模带上了额外的周期性扰动,在开关电容系统的保持相里可能被当作误差采样进去。通常我会看 Vcmfb 的纹波是否小于 30~50mV,如果超过这个范围,优先增大 CH,而不是盲目减小开关尺寸。
3. 从指标到尺寸:SC-CMFB 的实际设计流程
3.1 先定控制节点:调尾电流还是调有源负载
SC-CMFB 产生的 Vcmfb 最终要接到主运放某一个共模控制管上。选哪个节点,直接决定了整个共模环路的极性和增益,也影响输出摆幅和噪声。最常见的两种选择:
第一种是控制输入差分对的尾电流源。当输入对是 NMOS 管时,尾电流源通常也是 NMOS,Vcmfb 直接接尾电流管栅极。输出共模升高时,Vcmfb 需要朝某个方向变化,改变尾电流,进而改变输出支路电流分配,把输出共模拉回来。这个方式简单,控制效率高,但对尾电流管的工作区有一定要求,Vcmfb 波动不能把管子推到线性区。
第二种是控制输出级的有源负载偏置。比如在折叠共源共栅结构里,可以用 Vcmfb 调节 PMOS 负载管的栅极偏置,改变输出节点的共模电流平衡。这种方式适合那些尾电流源本身已经由外部偏置固定、不方便再做动态调节的结构。
选择控制节点时要先做一轮极性判断。我自己常用的做法是:在第一版原理图里先把 Vcmfb 节点用理想电压源强制驱动,手动扫描 Vcmfb 从低到高,看输出共模电压往哪个方向走。这样就能明确知道“输出共模升高”对应“Vcmfb 应该变大还是变小”,然后再去检查 SC-CMFB 比较相里 Vcmfb 的变化方向是否匹配。如果两者方向相反,环路接上后就是正反馈,仿真会直接出现等幅振荡。
3.2 电容值、开关尺寸与时钟频率的约束关系
SC-CMFB 的电容取值没有唯一标准,但有几个硬约束要满足。采样电容 CS 不能太小,太小会让开关电荷注入和时钟馈通的影响变得相对明显,而且电容匹配精度也下降;但 CS 也不能太大,因为它直接挂在主运放输出端,每次采样都会抽取电荷,相当于一个动态负载,会加重主放大器的建立负担。工程上我常用的范围是 0.2pF 到 1pF,具体看主运放的输出负载电容多大,一般不超过输出总负载电容的 1/5 到 1/10。
保持电容 CH 的作用是让 Vcmfb 在比较相期间保持稳定。CH 越大,Vcmfb 纹波越小,共模控制管的工作点越稳定;但 CH 太大会让复位相的时间常数变长,Vcmfb 来不及回到预置电压,反而影响下一个周期的采样。我一般取 CH = (3~5) × CS。在 0.18μm 工艺、时钟 100MHz 的例子里,CS 取 0.5pF,CH 取 2pF,工作起来比较舒服。
开关尺寸的选取要考虑导通电阻和电荷注入的矛盾。采样相时间内,RON 和 CS 构成的时间常数必须足够小,通常要求 τ = RON × CS < Tphase / 10,最好在 1/20 以下。假设时钟 100MHz,采样相 5ns,CS = 0.5pF,那 RON 要小于 1kΩ,用最小沟长、宽长比十几微米/0.18微米的 NMOS 配合 CMOS 传输门,可以做到几百欧姆。开关也不能只追求导通电阻低,因为开关尺寸越大,关断时注入到采样电容上的沟道电荷也越多,会在 Vcmfb 上造成固定偏移。这里的核心准则是在满足建立时间的前提下,开关尽量小。
3.3 非交叠时钟与采样时刻的安排
SC-CMFB 对时钟质量的要求比很多人想象的高。φ1 和 φ2 之间必须有明确的非交叠时间,否则在开关切换时采样电容两端会同时存在两条电荷泄放路径,Vcmfb 的工作点会被破坏,甚至造成电荷共享错误。标准做法是加一个非交叠时钟生成电路,死区时间取 2~3 个最小反相器延迟即可,不要为了省事直接把两个反相时钟接到 SC-CMFB 上。
更关键的是采样时刻的安排。SC-CMFB 的采样相应该选在主放大器输出信号已经基本稳定之后,而不是在输出信号剧烈变化的时候。因为采样电容直接挂在输出端,如果输出还在快速建立、摆幅很大,采样电容抽取的电荷会随信号幅度变化,导致 Vcmfb 混入信号相关的分量,最后表现为输出共模上叠加了差分信号的失真成分。我在开关电容放大器里习惯把 CMFB 的采样相放在主放大器复位的那个相位,把比较相放在主放大器高增益建立的相位。这样主放大器在建立阶段输出共模是被死死钳住的,建立结束后的残余共模误差最小。
4. 仿真验证:怎么确认共模环路真的稳
4.1 共模阶跃响应:最直观的稳定性观察
SC-CMFB 是周期时变系统,严格来说不能直接用普通的 AC 仿真去验证稳定性。很多工程师习惯看差分环路的相位裕度,却忽略共模环路,结果流片回来才发现输出共模在某些条件下振荡。我最初级也这么干过,被坑过一次之后就长记性了:共模环路必须单独做瞬态验证。
最直观的方法是做共模阶跃响应。给 Vcm_ref 一个阶跃,比如从 0.9V 跳到 0.95V,保持一段时间后再跳回 0.9V,同时观察输出共模电压的响应。如果输出共模能在一个到几个时钟周期内跟随并收敛到新参考值,并且没有持续振铃,说明共模环路基本稳定。如果看到等幅振荡,先别急着调电容,去查极性,大概率是 Vcmfb 接反了。如果收敛很慢且直流误差很大,检查 CS/CH 的检测灵敏度和控制管跨导。
另一个有效手段是在输出端并联一个理想脉冲电流源,模拟共模扰动。因为 Vcm_ref 阶跃改变的是参考值,而电流源扰动改变的是输出节点电荷,两者结合可以更全面反映共模环路的动态响应。
4.2 STB/PSS 分析与开关周期系统的小信号方法
如果工具链支持 PSS(周期稳态)和 PSTB(周期 STB),强烈建议用它们专门分析共模环路的稳定性。做法是在 Vcmfb 到共模控制管栅极之间插入一个交流小信号探针,用 PSS 求周期工作点,再用 PSTB 扫描共模环路的开环增益和相位裕度。这样可以直接得到相位裕度数值,不用靠 transient 波形猜。
如果项目流程不允许跑 PSS,也有一个工程化的近似办法:把开关电容等效为离散时间电阻,等效电阻约等于 1/(fclk × CS),再配合 CH 和共模控制管的 gm 建立一个小信号平均模型,用普通 STB 仿真看趋势。这个平均模型在高频处不精确,因为开关混叠效应没有建模,但它能帮你快速判断共模环路有没有明显的增益不足或相位问题。
我在实际项目中通常会先用 transient 阶跃响应观察整体行为,再用 PSS/PSTB 出相位裕度数据,两条路径互相印证。只有 transient 没有相位裕度数据,评审时很难说服别人;只有 PSS 没有瞬态行为,又容易漏掉大信号下 Vcmfb 被拉到非线性区的问题。
4.3 一组值得记录的检查项与调试对策
仿真阶段我会固定检查几个指标,整理成一张表,方便每次新项目直接套用:
| 检查项 | 常见现象 | 优先对策 |
|---|---|---|
| 输出共模直流误差 | 比 Vcm_ref 偏离几十 mV 以上 | 增大 CS/CH 比例或控制管 gm |
| Vcmfb 纹波 | 超过 50mV | 增大 CH,减小开关尺寸 |
| 共模建立时间 | 多个周期不收敛 | 检查 CS 是否过大、开关 RON 是否过大 |
| 比较相输出共模漂移 | 高频分量叠加 | 检查复位预置电压,必要时加辅助连续时间共模 |
| 正反馈振荡 | Vcmfb 呈现等幅振荡 | 立即检查极性方向 |
这些检查项里,极性错误是最高频的翻车点。设计完第一版后,先别着急优化性能,先把极性确认清楚,再谈精度和速度。
5. 实战中的坑:SC-CMFB 最容易翻车的几个细节
5.1 复位相预置电压与建立死区
很多初版 SC-CMFB 电路里,Vcmfb 在复位相被开关直接拉到地或电源,理由是反正复位嘛,拉到哪都一样。但实际不是这样。如果 Vcmfb 正常工作在 0.7V,复位相却拉到 0V,那每次从采样相切到比较相时,Vcmfb 都要从 0V 爬回 0.7V。这个爬升过程里,共模控制管可能处于截止或弱导通状态,输出共模在这段时间里几乎没有人管,漂移的电荷就会在输出节点上积累。
我习惯把复位预置电压设在这条支路正常工作点附近。一种简单做法是用一个由理想电流源和二极管连接的管子产生 Vinit,让复位相时 Vcmfb 就被预置到接近稳态值的电平。这样采样相结束后,比较相只需要做微小的电荷修正,不需要从零开始建立,Vcmfb 的毛刺明显减小。
5.2 电荷注入和时钟馈通造成的共模偏移
开关从导通到关断的瞬间,沟道里存留的电荷会向源漏两端分配,这叫作电荷注入。同时,时钟跳变沿会通过 MOSFET 的栅源、栅漏交叠电容耦合到采样电容和 Vcmfb 节点,这叫作时钟馈通。两者叠加在 Vcmfb 上的效果是:每个开关周期开始时会有一个固定方向的电压阶跃,最终表现为输出共模的直流偏移。
减小电荷注入的方法有几种:在采样开关旁边加 dummy 管,尺寸取主开关的一半,让沟道电荷对消;或者用互补 NMOS/PMOS 传输门,让两种载流子的注入方向相反;或者增加保持电容 CH,让注入电荷引起的电压变化变小。时钟馈通则主要靠版图解决,尽量缩短时钟线与 Vcmfb 节点的耦合长度,在关键节点周围加屏蔽线。
这里要提一个容易忽略的问题:Vcmfb 节点上不要挂任何不必要的探针电容或测试 buffer。仿真环境里加一个 50fF 的探针,看起来没什么,但它会改变 Vcmfb 节点的等效电容比,进而改变纹波和环路相位裕度。我吃过这个亏,清掉探针电容之后,输出共模纹波从十几 mV 降到不到 3mV。
5.3 采样电容对主放大器输出节点的动态负载效应
CS 直接挂在输出节点上,开关切换时它抽取的电荷和当前输出电平成比例。这意味着输出摆幅越大,采样电容造成的动态负载非线性越明显,主放大器的建立精度会受影响。这个问题在信号频率较高、CS 取到 1pF 以上时尤其明显。
处理思路有三个方向。第一是减小 CS,但前提是共模环路的检测灵敏度仍然够用。第二是把采样时刻放在输出建立已经完成的相位末端,避免在输出变化斜率最大的时候抽取电荷。第三是在主放大器输出级和采样电容之间接受一点寄生电阻和电容,把采样瞬间的电流冲击平滑掉,但注意不能影响输出建立精度。我在流水线残差放大器里常把 SC-CMFB 的采样电容取在主运放输出负载电容的 1/10 以下,以这台 SAR ADC 前端的经验来看,0.3~0.5pF 是比较舒服的范围。
5.4 纯 SC 方案与混合连续时间 CMFB 的取舍
SC-CMFB 不是万能的。它的比较相期间,Vcmfb 依靠保持电容维持,但保持电容会缓慢漏电,而且主运放输出节点的漏电流也不会完全消失。所以在比较相时间内输出共模实际上是在开环漂移的,漂移量取决于漏电大小和时间长短。对于开关电容系统来说,这个漂移可以接受,因为随后采样相会把共模重新修正回来;但如果是连续时间应用,输出共模就会产生周期性纹波。
高端流水线 ADC 里常见做法是 SC-CMFB 加一个低功耗连续时间辅助共模环路。SC-CMFB 负责主要的共模校正和直流精度,辅助环路带宽很低、电流很小,只负责把比较相期间的共模漂移拉住。两种方案配合,既保留了 SC 方案不吃摆幅的优点,又消除了离散时间系统的保持纹波。如果功耗预算宽松,这是一个很值得考虑的组合。
三种 CMFB 方案的直接对比,我整理成下面这张表:
| 方案 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| 电阻分压 + 连续时间放大器 | 实现简单、连续稳定 | 电阻负载降低增益、静态功耗高 | 低频低摆幅电路 |
| 长尾管共模检测 | 带宽高、结构紧凑 | 共模输入范围紧张、功耗大 | 连续时间高速电路 |
| SC-CMFB | 无静态功耗、不吃摆幅 | 离散时间纹波、对时钟敏感 | 开关电容放大器、ADC |
| SC + 连续时间辅助混合 | 精度高、纹波小 | 面积和功耗略增 | 高性能流水线 ADC |
6. 版图布局与在开关电容放大器中的典型配合
6.1 电容匹配、开关对称与走线隔离
版图阶段要做的事情不复杂,但漏掉任何一个细节都可能让前仿结果作废。采样电容 CS 和保持电容 CH 必须使用同一种电容类型,MIM 或 MOM,不能混用,并且要采用共质心布局,减小工艺梯度带来的失配。开关管的摆放也要尽量对称,因为不对称的源漏寄生电容会让电荷注入在 Voutp 和 Voutn 两条采样路径上产生不同影响,最终转化为输出共模的偏移。
Vcmfb 节点是所有模拟信号里最容易受干扰的一个,因为它本身是高阻节点,又直接连着共模控制管栅极。走线要短,远离数字时钟线;如果必须在时钟线附近穿,给时钟线两边加地线屏蔽。Vcmfb 节点上布线的寄生电容会和 CH 并联,改变电荷分享比例,所以布线寄生电容要控制在 CH 的百分之几以内,否则仿真里算好的纹波和环路增益会全部偏差。
6.2 与开关电容主路的相位配合经验
这篇文章开头我提到,SC-CMFB 最适合用在开关电容放大器这类自带时钟的系统里。这里有一个特别重要的配合经验:CMFB 的采样相和比较相,必须和主放大器的主开关相位配合好。如果主放大器在放大相建立精确输出,而 CMFB 偏偏在放大相里做采样复位,那么整个放大相期间输出共模都没有环路限制,会漂移到一个不确定的电平;等主放大器已经建立完毕,CMFB 才开始校正,已经晚了。
我曾在某款 SAR ADC 前端遇到过 SFDR 莫名掉了十几 dB 的情况,排查了很久,最后发现就是 SC-CMFB 的时钟相位接反了。把 CMFB 的采样相挪到主放大器复位相,比较相挪到主放大器放大相,问题直接消失。原因是输出建立阶段,输出共模被环路主动钳在参考值,动态负载的影响也被显著削弱。这个配合关系,在做开关电容放大器相关设计时一定要记牢。
最后分享一个调试习惯:SC-CMFB 调好后,用 Monte Carlo 跑一轮失配仿真,重点看输出共模直流误差的分布。单点仿真好调,但失配分布才是决定量产良率的关键。电容失配和开关电荷注入失配叠加,会让输出共模出现几十毫伏的偏移,如果你的后级电路对共模电平有严格要求,提前在这个阶段做修正比流片后在测试板上补偿要省事得多。