世界是连续的
想想你最后听到的那个声音。鼓膜上的空气压强并不是从一个固定值跳到另一个固定值——它是平滑地、滑过中间的*每一个*取值。声音、光、温度、打到你手机上的无线电波:它们全都是连续的。没有最小的台阶,也没有一张允许取值的清单。任意两个读数之间,总还有另一个读数,那之中又还有一个,永无止境。
数字设计活在相反的世界里。一个数字信号只允许取两个值——一个靠近电源轨的电压(叫它 1)或者靠近地的电压(叫它 0)——而且它*被期望*在两者之间干脆利落地跳变。这份干净是一份礼物:它让你可以把数十亿个门堆叠起来,而完全不必担心一丁点电压噪声会把一个比特翻掉。模拟放弃了这份礼物。模拟信号本身就是那个平滑的、处于中间状态的东西,而它能取的每一个值都有意义。
为什么我们仍然离不开模拟
既然数字这么干净,为什么不把整颗芯片都做成数字的?因为世界不答应。麦克风、相机像素、温度传感器、天线——这些东西*一开始*都是一个连续的物理量。总得有个东西去接住这个平滑的信号,把它放大、把它清理干净,再以比特能用的形式交给数字核心。那个东西就是模拟,而且绕不开它:每个信号穿过芯片这趟旅程的第一毫米和最后一毫米都是模拟的,因为那正是芯片与现实相遇的地方。
模拟还干着一些数字根本干不了的活。它产生数字部分连运转都离不开的稳定基准电压和干净时钟。它管理电源——把电池那不断下垂的电压变成逻辑所要求的稳如磐石的供电。而每当一个微弱信号必须先被从噪声里哄抬出来、别人才读得到的时候,那就是一个放大器——op-amp及其亲戚——在干模拟的活。
一种不同的思维方式
从数字一路走来,最难调整的是心态。在数字里你问的是*这是 1 还是 0?*——一个有标准答案的是非题。在模拟里,问题从来不会收得那么干净利落:增益*有多大*、*离*噪声底*有多近*、*离*起振*有多远*、芯片热起来时这东西*漂移了多少*。每一个答案都是一根滑动标尺上的某个数,而几乎每一个数都是在跟另一个数做权衡。
在这种思维里最重要的那一个数,是跨导(写作 gm):一个晶体管的输入电压有多强地操控它的输出电流。它是增益的原材料。但你从来不会白白得到 gm——你得用偏置电流去买它,而更多的偏置电流要花掉功耗和芯片面积。这个套路在模拟里处处重演:增益与带宽相权衡,速度与功耗相权衡,低噪声则同时跟这两者相权衡。你做的从来不是在*解*一个问题,而更像是在*平衡*一个问题。
gm = 2*Id / Vov ; transconductance of a MOSFET in saturation
; Id = bias (drain) current
; Vov = overdrive voltage = Vgs - Vth
; intuition: want more gm? spend more bias current Id.为什么模拟拒绝被抽象
数字设计能成立,靠的是一个美丽的谎言:一个门是一个完美的、瞬时的、不怕噪声的「1 或 0」器件。这个谎言撑得足够好,好到你可以忘掉底下的物理,只管去拼装逻辑。模拟没法撒这个谎。这里没有干净的 0/1 可以躲在后面,于是物理永远不会被抽象掉——它永远有一票。
尤其有三个物理事实拒绝被忽略。噪声:电子随热而抖动,于是每一根线都带着一阵微弱、无法消除的嘶嘶声;你能用的最小信号是由这个底噪决定的,而不是由你的聪明决定的。温度:一个晶体管的行为会随着芯片冷热而变化,于是一个在室温下完美的电路,到了 85 度可能就垮了。失配:两个被画成一模一样的晶体管,从来都不会真的一模一样——制造时原子落下的位置略有不同——而模拟电路常常恰恰依赖于两个器件*真正*相等。数字设计师基本上可以把这三样都无视掉。模拟设计师则每一天都在围绕着它们做设计。
混合信号的边界
一颗现代芯片并不是纯粹的这一种或那一种——它是混合信号的,一圈模拟的边缘包裹着一个数字核心,两者之间有一条清晰的边界。朝一个方向跨过这条边界,是模数转换器(ADC)的活:它盯着一个平滑、连续的电压,产出一串数字。朝另一个方向跨回来,则是数模转换器(DAC),它把数字重新变回一个平滑的电压。
这种穿越从来不是免费的。要把一个连续信号变成数字,你必须干两件粗暴的事:把时间剁成一个个离散的瞬间(采样),再把每次测量四舍五入到一组有限的电平之一(量化)。这种四舍五入会扔掉一点点信号——它引入了一种属于它自己的噪声——而这份损失给质量定下了一个硬天花板。标准的量尺是信噪比(SNR):真实信号站得比噪声底高出多少。
SNR = 6.02*N + 1.76 ; ideal SNR in dB of an N-bit converter ; each extra bit of resolution buys ~6 dB more SNR ; 8-bit -> ~50 dB ; 16-bit -> ~98 dB
模拟在芯片上待在哪里
一旦你认得了模拟的样子,你几乎能在任何一颗芯片上把它指认出来。它聚集在少数几个一眼可辨的地方,永远都在芯片触碰某种物理事物的那条边缘上——电源、时间、天线、传感器,或者数字核心本身。
- 传感器前端:那些低噪声放大器,把来自麦克风、相机像素或生物信号的——一个微小而脆弱的电压——干净地抬升到能被测量的高度。
- SerDes 与 PHY:那些高速 I/O,把比特沿着一根线缆或背板驱动出去,再在远端把它们恢复出来;在那里,数吉赫兹的边沿尽管承载着数字数据,本质上却是纯模拟的。
- 时钟(PLL):那些锁相环,把一个慢而干净的基准倍频成数字核心运行所依靠的那个又快又精准的时钟——一个监管着自身定时的反馈环路。
- 电源管理:那些稳压器和基准,把带噪声、不断下垂的电池电压变成每一个模块都依赖的稳定供电,也包括位于其核心的那个温度稳定的基准。
- 数据转换器:那些恰好坐落在混合信号边界上的 ADC 和 DAC,在连续世界与比特之间往返穿梭着信号。
这一切,都是用你早已认识的那些朴素零件搭起来的——MOSFET,以CMOS方式连起来,外加电阻和电容。改变的是你*怎么去想*它们:不是把它们当成在 1 和 0 之间猛地跳变的开关,而是当成一个个连续的、被轻柔操控的电流阀门。本主线接下来的内容,会一级一级地教你这种思维方式,就从所有魔法里最简单的那个开始——让单单一个晶体管去放大。