用八篇的篇幅,我们做出了一个器件。往硅里掺入杂质得到 P 型与 N 型,把两者贴合做成结,再在上面盖一层栅极,一路走到了能调节电流的晶体管。上一篇里还看了把它做小时会跟着来的是什么。
可是一个晶体管还什么都算不了。它只是一个能开能关的开关。本篇的问题只有一个 — 把开关接上几个,怎么就成了计算。
答案很简朴。用两个开关做出「不是」,用四个做出「不是两个都」和「两个都不是」。而只要有那个四开关的部件一种,剩下的全部逻辑都能做出来。
正文中的条件数值是为了展示计算过程的示例,并非某家公司的规格。文中引用的数值都在公开文献中核对过,出处列在文末。
首先,是把模拟器件当数字用的一个约定
前几篇里看到的晶体管是模拟器件。栅极电压升一点电流就多一点,再升就更多。中间值要多少有多少。
数字电路把那个中间丢掉。约定电压靠近电源一侧就读作 1,靠近接地一侧就读作 0,而中间那一段不用。维基百科《Inverter (logic gate)》条目写道,数字电路工作在与逻辑 0 与 1 相对应的固定电压电平上,并举 TTL 电路的 0 V 与 +5 V 为例。
维基百科《Logic gate》条目描述道,逻辑门是把二极管或晶体管当作电子开关来用而做成的。《Logic gate》条目说明,输出为高就是从正电源端子取来电流,输出为低就是把电流灌到负电源端子里去。
归纳起来是这样:器件是模拟的,但把读取方式限制在两个值上就当数字用。这个限制为什么是划算的,等到后面讲噪声时自会显露。
反相器 — 用两个开关做出的「不是」
最简单的逻辑是否定。维基百科《Inverter (logic gate)》条目把 NOT 门定义为实现逻辑否定的门,并写道它输出与输入位相反的值。真值表只有两行 — 进来 0 就出 1,进来 1 就出 0。
一边开了,另一边就关
做法有好几种。《Inverter (logic gate)》条目先介绍了给一个 NMOS 配一只电阻的方式,并点出它的弱点 — 由于在两种状态中的一种下电阻上会持续流过电流,在功耗和处理速度上都吃亏。
替代方案是 CMOS。在电阻的位置上放一个 PMOS。维基百科《CMOS》条目所描述的接法是这样的:上面放 PMOS,下面放 NMOS,把两个栅极一起接到同一个输入上。上面接电源 Vdd,下面接地 Vss,两者相会之处就是输出。
《CMOS》条目所记的动作是两行。
- 输入为低时 — NMOS 的沟道进入高阻状态,接地便与输出断开;PMOS 的沟道进入低阻状态,电源便接到输出上。输出是 1。
- 输入为高时 — 反过来。PMOS 进入高阻状态切断电源,NMOS 进入低阻状态接通接地。输出是 0。
接的是同一个输入,反应却正相反。「互补(complementary)」这个名字就是从这里来的。维基百科《Inverter (logic gate)》条目写道,这种构成由于在两种逻辑状态下总有一个晶体管是关着的,因而大幅降低了功耗。
为什么偏偏上面是 PMOS、下面是 NMOS
也许有人会问顺序能不能对调。不能。因为两个器件擅长传递的值各不相同。
维基百科《Transmission gate》条目用一句话写出了这个性质 — PMOS 传得出强的 1,却把 0 传得很差;NMOS 传得出强的 0,却把 1 传得很差。
于是布置就定下来了。送出 1 的活儿交给擅长传 1 的 PMOS,送出 0 的活儿交给擅长传 0 的 NMOS。这就是上面是 PMOS、下面是 NMOS 的缘由。两个器件互相盖住了对方的弱项。
所以它几乎不耗电
电流要从电源流到接地,路必须是通的。在 CMOS 反相器里,上下两者之中总有一个是断的,那条路并不存在。维基百科《CMOS》条目这样写道 — 由于 MOSFET 对里总有一个是关着的,这个串联组合只在导通与关断之间来回切换的那一瞬才取用有意义的功率。
《CMOS》条目描述道,静态 CMOS 门在歇着的时候消耗接近 0 的功率。NMOS 逻辑则在晶体管导通期间,从 Vdd 到 Vss 的电流通路始终存在,因而一直在耗电。
功耗花在值改变的那一瞬
那么功耗花在哪里呢。第四篇里看过的东西在这里回来了。有结的地方,不想要电容也会跟着来。
维基百科《CMOS》条目写道,CMOS 电路每次开关时都会在给各种负载电容充电的过程中消耗功率。条目补充说,其中大部分是栅极电容与布线电容,也有漏极·源极电容。在一个完整的周期里,电流从 VDD 流入负载电容把它充满;放电时则从充好的电容流向接地。
《CMOS》条目把一个周期里搬运的电荷写作 Q = CLVDD,再乘上开关频率与平均电压便得到功率。
P = 0.5 C V2 f
由于大多数门并不是每个时钟都改变值,《CMOS》条目又加上活动率 α,改写为 P = α C V2 f。
这个式子说的事很清楚。功耗与值改变的次数成正比。一动不动就几乎不耗。而且电压是以平方进来的 — 降低电源电压是减少功耗最有力的手段。
不过「几乎是 0」并不是「0」。《CMOS》条目写道,在为了速度而把阈值电压降低的现代器件中,亚阈值泄漏电流已变得不可忽视,即便是装了很多并不活跃开关的电路的设计,也会因这份泄漏而耗电。上一篇里看过的短沟道问题,在功耗这一条上又冒了出来。
传输特性曲线 — 中间越陡越好
反相器的品质用一张图来量。那是把输入电压从 0 慢慢升到电源电压,同时画出输出电压的曲线。维基百科《Inverter (logic gate)》条目把它称作电压传输曲线(VTC,voltage transfer curve),并写道从中可以得到噪声容限·增益·工作逻辑电平。
《Inverter (logic gate)》条目描述道,理想的 VTC 是翻转过来的阶跃函数,即在某一点上输出垂直落下的形状。而在实际器件中会出现平缓的过渡区间。条目还补充道 — 这段过渡区间的斜率就是品质的尺度,越陡开关就越准确。
斜率为什么就是品质
斜率一平缓,「既不是 1 也不是 0」的输入区间就变宽。落进那个区间的信号,下一级门可能往哪一边读都行。计算出错就出在这里。
把这份余地定成数值的,就是噪声容限(noise margin)。维基百科《Noise margin》条目把它定义为加在无噪声的最坏输入电平上、而仍不致让输出越出允许逻辑电平的最大噪声幅度。
基准点有四个。
- VOH — 输出为 1 时的电压。《Noise margin》条目写道,在 CMOS 反相器里这个值会等于 VDD。
- VOL — 输出为 0 时的电压。在 CMOS 里会等于接地电位。
- VIH — 定义为 VTC 的斜率变为 −1 的最高输入电压。
- VIL — 是斜率变为 −1 的最低输入电压。
容限是两次减法。
NMH = VOH − VIH 以及 NML = VIL − VOL
《Noise margin》条目写道,这两个值必须为正才能保证正常动作,若为负则动作受损甚至彻底失败。
曲线的形状与容限就在这里接上了。斜率为 −1 的那两点 VIH 与 VIL 越往中间靠拢,两次减法的结果就越大。说过渡区间陡,也就等于说噪声容限宽。
《Noise margin》条目也写出了 CMOS 的噪声容限远大于 TTL 的缘由 — 因为 VOH 的最小值更靠近电源电压,而 VOL 的最大值更靠近 0。把输出一直推到上下两端的 CMOS 结构,原样变成了容限。《CMOS》条目把高噪声抗扰度与低静态功耗列为这项技术的两大重要特性,也是同一条脉络。
前面那个「把中间丢掉」的约定,在这里显出了价值。若是模拟,噪声就原样留成误差。只用两个值,则在容限之内晃动过的信号,经过下一级门时会又被推回端值而消失。
把开关接起来的两种办法 — NAND 与 NOR
在反相器上把输入增加到两个。办法只有两种 — 接成串联,或接成并联。
串联是「两个都开才通」,并联是「只开一个也通」。这两句话原样就是逻辑与和逻辑或。CMOS 必须上下相反,所以把下面接成串联,上面自然就成了并联。
NAND — 下面接成串联
维基百科《NAND gate》条目这样描述 CMOS 实现:充当开关的是 两个 n 型晶体管,充当上拉电阻的是两个 p 型晶体管,而这对 p 型正是 n 型那一对的补。
「补」这个词把布置定了下来。下面两个 NMOS 若是串联,上面两个 PMOS 就是并联。跟着四种输入走一遍。
- A=0, B=0 — 下面的 NMOS 两个都关着,通向接地的路不存在。上面的 PMOS 两个都开着,电源便接到了输出上。输出 1。
- A=0, B=1 — 下面的 NMOS 只开了一个。因为是串联,路依然是断的。上面是并联,只开一边电源也能接到。输出 1。
- A=1, B=0 — 与上一行左右对称。输出 1。
- A=1, B=1 — 下面两个 NMOS 都开了,串联的路接通。上面的 PMOS 两个都关了。输出 0。
只有两个都是 1 时才是 0。这与维基百科《NAND gate》条目所载的 2 输入真值表一致,而《NAND gate》条目写道,这个函数在逻辑上与 NOT(A AND B) 相同。
NOR — 下面接成并联
反过来放,就成了相反的门。维基百科《NOR gate》条目描述道,在 CMOS 实现中,上拉电阻的功能由上面两个 p 型晶体管的串联连接来承担。下面则是它的补,即并联的两个 NMOS。
《NOR gate》条目把动作归纳如下 — 输入之中只要有任何一个为高,相应的 n 沟道器件就导通,把输出拉低;否则输出就被拉高。
- A=0, B=0 — 下面两个都关着,通向接地的路不存在;上面串联的两个 PMOS 都开着,电源便接到了输出。输出 1。
- A=0, B=1 — 下面是并联,只开一个也通向接地。上面是串联,只关一个就断了。输出 0。
- A=1, B=0 — 与上一行左右对称。输出 0。
- A=1, B=1 — 下面两条路全通,上面则完全断开。输出 0。
只有两个都是 0 时才是 1。《NOR gate》条目把 NOR 定义为只在两个输入都为低时才给出高输出的门。
把两张电路图并排放在一起,就是上下颠倒过来的同一张图。只不过串联与并联对调了位置。
两者取其一就够,而那一个是 NAND
用一种就全做出来
维基百科《NAND gate》条目写道,NAND 具有功能完备性。意思是无论 AND 还是 OR,还是任何别的逻辑函数,都能只用 NAND 实现,而 NOR 也有同样的性质。《NAND gate》条目补充道,整个处理器都能只用 NAND 门做出来。
《Logic gate》条目连这件事的来历也记了下来:皮尔士(Charles Sanders Peirce)在 1880~1881 年间证明了,只用 NOR 门,或者只用 NAND 门,就能再现其他所有逻辑门的功能。因此这两者被称作通用逻辑门。
实际上也有这样造出来的机器。《NOR gate》条目写道,早期的阿波罗导航计算机是用只装了两个 3 输入 NOR 门的集成电路 4,100 个做成的。去过月球的那台计算机,只用了一种门。
可是在 CMOS 里 NAND 这一边更有利
既然两者都是通用门,好像用哪个都行。可是它们还是分了。理由在第七篇里已经出现过了 — 空穴比电子慢。
维基百科《Electron mobility》条目的表格把晶体硅的迁移率记作电子 1,400、空穴 450 cm2/(V·s)。这是三倍多的差距。《Electron mobility》条目描述道,空穴迁移率总体上更低。
迁移率低意味着同样的尺寸出不了同样的电流。PMOS 要跟 NMOS 匹配就得更宽,而一宽栅极电容就变大。电容正如上一节所见,会原样变成延迟与功耗。再加上串联起来的器件还会叠加电阻。把本就慢的 PMOS 两个两个地串起来,因此是吃亏的。
维基百科《NAND gate》与《NOR gate》两个条目用同样的句子写下了这一点 — 在 CMOS 中 NAND 门比 NOR 门更高效,这是因为 n 沟道 MOSFET 的电荷迁移率比 p 沟道更快,所以 NAND 中实现的两个 p 沟道器件的并联连接比 NOR 中的串联连接更有利。因此两个条目都用同样的句子收尾:在 CMOS 电路中 NAND 比 NOR 更受青睐。
等于说,材料的一个性质一路推到了电路的选择上。空穴慢 → PMOS 得加宽 → 想避开串联的 PMOS → 在芯片里就更常看到 NAND。
小结
- 数字不是器件的性质,而是一个约定。是把模拟器件的电压只按两个值来读的决定。
- CMOS 反相器把 PMOS 与 NMOS 上下叠起来,把栅极捆在一起。文献写道,在两种逻辑状态下总有一个是关着的。上面是擅长传 1 的那一个,下面是擅长传 0 的那一个。
- 静态时没有连接电源与接地的路,所以歇着时耗的功率接近 0。功耗花在值改变时给电容充放电上,遵循 P = α C V2 f。
- 电压传输曲线陡峭的中段就是品质。斜率为 −1 的两点是 VIH·VIL,噪声容限由 NMH = VOH − VIH、NML = VIL − VOL 来确定。
- 下面接成串联就是 NAND,接成并联就是 NOR。两者都功能完备,只用一种就能造出全部逻辑。不过空穴慢、串联的 PMOS 吃亏,所以 CMOS 电路里更青睐 NAND。
系列就在这里合上。回头看去,是一条线连下来的。从「材料的电阻处在金属与绝缘体之间」这一事实出发,掺入杂质做出 P 型与 N 型,把两者贴合得到只朝一个方向流的结,看到了随之附带而来的电容,再把端子增加到三个,走到了能调节流动的晶体管。约定只按开与关两种来读它,再接上四个,逻辑就出来了。这是从一块石头走到计算的一条路。
在下一个系列《TFT 特性参数》里,我们要把衡量这个晶体管做得有多好的那些数字 — 阈值电压·迁移率·开关比·亚阈值摆幅 — 一个一个拆开来看。
参考资料
- CMOS — Wikipedia:反相器的接法与输入高低对应的沟道电阻,一对之中总有一个关着、因而只在开关那一瞬耗电的叙述,待机功率接近 0,P = 0.5 C V2 f · P = α C V2 f,亚阈值泄漏
- Inverter (logic gate) — Wikipedia:NOT 门的定义与真值表,电阻负载方式的弱点,两种逻辑状态下总有一个关着的叙述,固定的逻辑电压电平(TTL 0 V·+5 V),电压传输曲线以及过渡区间斜率是品质尺度的叙述
- Noise margin — Wikipedia:噪声容限的定义,VIH·VIL 是 VTC 斜率为 −1 之点的定义,NMH·NML 式,CMOS 中 VOH 等于 VDD·VOL 等于接地的叙述以及容限大于 TTL 的缘由
- Transmission gate — Wikipedia:PMOS 传出强的 1 与差的 0、NMOS 传出强的 0 与差的 1 的叙述
- NAND gate — Wikipedia:2 输入真值表与 NOT(A AND B) 等价,两个 n 型作开关·两个 p 型作其补的 CMOS 实现,功能完备性,NAND 比 NOR 更高效的缘由
- NOR gate — Wikipedia:2 输入定义与真值表,上面两个 p 型为串联的 CMOS 实现,只要有一个输入为高输出就被拉低的说明,阿波罗导航计算机的集成电路 4,100 个
- Logic gate — Wikipedia:把二极管·晶体管当电子开关用的叙述,高输出·低输出的含义,皮尔士在 1880~1881 年证明只用 NOR 或只用 NAND 就能再现所有门的记述
- Electron mobility — Wikipedia:晶体硅的电子迁移率 1,400 · 空穴迁移率 450 cm2/(V·s)
- ※ 上述清单中引自 Wikipedia 条目的部分,遵循 CC BY-SA 4.0 许可协议。