CMOS 逻辑

大一时候写的 1310 笔记发挥了一点用处,可以参考 此处。

MOS 晶体管

硅(Silicon),IV 族,导电性差

在硅晶格中引入掺杂剂(dopants)增加导电性,称为半导体(semiconductor)

  • 砷(arsenic, As),V 族,砷原子的第五个价电子束缚弱 => n 型半导体,载流子(carrier)是带负电的自由电子
  • 硼(boron,B),III 族,空穴 => p 型半导体,载流子是带正电的空穴

二极管(diode),内部结构是 PN 结(PN junction)

  • p 型半导体侧为阳极(anode),n 型半导体侧为阴极(cathode)
  • 外电场 p -> n 为正向偏置(forward biased),n -> p 为负向偏置(reverse biased)

金属氧化物半导体(Metal-Oxide-Semiconductor, MOS)或 金属氧化物半导体场效应晶体管(MOS Field Effect Transistors, MOSFETs)

  • 栅极 Gate
  • 衬底 Substrate, Body, Bulk
  • 源极 Source,漏极 Drain,载流子通过沟道(channel)由源极流向漏极
a) nMOS 晶体管, b) pMOS 晶体管
a) nMOS 晶体管, b) pMOS 晶体管

栅极电压 VGV_G,源极电压 VSV_S,阈值电压 VTV_T

  • nMOS:栅极电压 VDDV_{DD}(逻辑 1, 或 POWER),VGS=VG−VS≥VTV_{GS}=V_G-V_S\geq V_T 时导通 ON
  • pMOS:栅极电压 VSSV_{SS}(逻辑 0, 或 GROUND),∣VGS∣=∣VG−VS∣≥VT|V_{GS}|=|V_G-V_S|\geq V_T 时导通 ON
  • overdrive 电压:Vov=VGS−VTV_{ov}=V_{GS}-V_T

通道晶体管(Pass transistors)。MOS 直接作为开关传输电压时有阈值损失:nMOS 强 0 弱 1(传输电压 Vs≤VDD−VTV_s\leq V_{DD}-V_T),pMOS 强 1 弱 0(传输电压 Vd≥VSS+VTV_d\geq V_{SS}+V_T)。

静态 CMOS 逻辑门

nMOS + pMOS = wavy CMOS(互补金氧半,Complementary MOS)。互补的晶体管放在衬底中的井中(n 衬底 p 井,反之)。

经典的静态 CMOS 逻辑门包含两个网络:

  • nMOS 下拉网络(pull-down network, PDN),连接 VSSV_{SS} 和输出,负责导通时传递强 0(下拉)
  • pMOS 上拉网络(pull-up network, PUN),连接 VDDV_{DD} 和输出,负责导通时传递强 1(上拉)
    • PUN ON,PDN OFF:上拉至 1
    • PUN OFF,PDN ON:下拉至 0
    • PUN OFF,PDN OFF:高阻(high-impedance)或浮接(floating)态,记为 Z
    • PUN ON,PDN ON:短路(crowbarred)或竞(contention)态,记为 X

反相器(Inverter),i.e.,非门(NOT Gate):单 nMOS PDN 和单 pMOS PUN 与非门(NAND Gate),kk 个串联的 nMOS PDN 和 kk 个并联的 pMOS PUN 或非门(NOR Gate),kk 个串联的 pMOS PUN 和 kk 个并联的 nMOS PDN

复合门(Compound Gate),给定表达式 YY 画出电路图(schematic)

  • 画 PDN,由于需要把表达式下拉至 0,又 nMOS 栅极输入 1 导通,把表达式 YY 取反后组装
  • 画 PUN,由于需要把表达式上拉至 1,又 pMOS 栅极输入 0 导通,把表达式中所有的变量取反后组装(或使用 conduction complements 原则,把 PDN 中串联改并联,并联改串联即可)

性质一:静态 CMOS 逻辑门是完全恢复(fully restoring)的。

完全恢复(fully restoring)

点一下睡袋(呸) 指一个逻辑级在稳态时能把输出节点强驱动(strongly driven)到接近电源轨的全摆幅电平(0 或 VDDV_{DD}),并通过带增益把可能劣化的输入电平拉回到标准逻辑电平,使电平劣化不会在级联中继续累积。静态 CMOS 逻辑中 nMOS 只负责下拉至强 0,pMOS 只负责上拉至强 1,且二者互斥,因此输出电平一定是全摆幅的。

性质二:静态 CMOS 逻辑门是反相(inverting)的。

反相(inverting)

指该逻辑级实现的布尔关系在输出端带有一个逻辑取反,即输出等于某个函数的补 y=f(x)‾y=\overline{f(x)};比如非门 y=A‾y=\overline A,与非门 y=A⋅B‾y=\overline{A\cdot B}, 或非门 y=A+B‾y=\overline{A+B}。

这也是为什么最基础的物理逻辑门是 NOT,NAND,NOR 而不是 OR,AND;这天然的由 MOS 的物理特性与 CMOS 的设计原则决定:输入为 1 会使基于 nMOS 的 PDN 导通,从而使输出为 0;反之 PUN 同理。

可以直接拼非反相的 y=f(x)y=f(x) 吗?当然可以,但需要多加一级反相器 y=f(x)‾‾y=\overline{\overline{f(x)}},这意味着更高的延迟,功耗和面积。

传输门

传输门(Transmission Gate),解决了通道晶体管阈值损失的问题。

gb 是 g 的互补信号
gb 是 g 的互补信号

需要同时提供控制输入(control input)信号 gg 与其互补信号 gbgb 的逻辑被称为双轨逻辑(double rail logic)。理解成有两个栅极就好。

传输门的输出电压来自上一级节点,而非 VDDV_{DD} 或 GND,没有驱动能力,因此是 non-restoring 的。它的理想行为近似 Vin≈VoutV_{in}\approx V_{out},为同向传输,并非反相。

三态逻辑

三态逻辑(tristate)指的是三种输出驱动状态:低电平 00, 高电平 11 与高阻态 ZZ。

三态缓冲器(tristate buffer):逻辑功能与传输门相同(真值表一致),但它的输出电压来自 VDD 与 GND,因此是 restoring 的,能够保证输出一定是三态中的其中一个。

EN/EN‾EN/\overline{EN} AA YY
0/1 0 Z
0/1 1 Z
1/0 0 0
1/0 1 1

三态反相器(tristate inverter):EN 为 0 时两个晶体管均关断,输出为 ZZ,EN 为 1 时表现与反相器一致。restoring。

三态总线(tristate bus):现已被多路复用器替代。

多路复用器

多路复用器(multiplexer, MUX)是 CMOS 存储单元(memory elements)与数据处理结构中的关键组件。它通过选择信号(select signal)S/S‾S/\overline{S} 在多个输入中选择一个作为输出。

譬如 2:1 MUX,选择信号为 0 时选择输入 D0D0,选择信号为 1 时选择输入 D1D1,逻辑函数为:

Y=S‾⋅D0+S⋅D1 Y=\overline{S}\cdot D0+S\cdot D1

2:1 MUX 的几个实现方式

  • 传输门 MUX:两个传输门连接在一起,选择信号 SS 与其互补信号 S‾\overline{S} 在任意时刻只会使其中一个传输门导通。这样组成的 MUX 是 non-restoring 的,仅需要四个晶体管。
  • 反相 2:1 MUX(Y=(S‾⋅D0+S⋅D1‾)Y=(\overline{\overline{S}\cdot D0+S\cdot D1})):复合 AOI22 电路或两个三态反相器并联。连接一个反相器负负得正成 2:1 MUX。这样组成的 MUX 是 restoring 的。
反相 2:1 MUX 的两种组成方式与记号
反相 2:1 MUX 的两种组成方式与记号

4:1 MUX:使用两个选择信号 S0S0, S1S1 从四个输入中选择一个作为输出。两层 2:1 MUX 或四个三态反相器并联。

时序逻辑

组合逻辑(combinatorial logic)的输出只取决于当前输入。时序逻辑(sequential logic)有 memory,其输出由当前输入与 memory 共同决定。时序逻辑元件接收时钟信号(clock)CLK 与输入 DD,产生输出 QQ。

D 型锁存器

锁存器(latch)直译为门闩。

(a)(b):由于反相器是 restoring 的,这里的 MUX 可以用传输门实现,节省晶体管
(a)(b):由于反相器是 restoring 的,这里的 MUX 可以用传输门实现,节省晶体管

D 型锁存器的行为 (c) (d):

  • CLK 为 1:锁存器透明(transparent),当前输入 DD 传递至输出 QQ,同时产生互补输出 Q‾\overline{Q}
  • CLK 为 0:锁存器不透明(opaque),反馈回路将当前输出 QQ 锁起来,保持当前状态

D 型锁存器也被称为电平敏感锁存器(level-sensitive latch),因为输出状态取决于 CLK 的电平高低。

D 型触发器

触发器(flip-flop)直译为翻转,跳动。

D 型触发器由一对串联的电平敏感锁存器构成,前者为主锁存器(master latch),是负电平敏感的;后者为从锁存器(slave latch),是正电平敏感的。

D 型触发器的行为 (c) (d):

  • CLK 由 0 跳变为 1:主锁存器结束对输入 DD 采样(sampling),将这一时刻的采样值传递至从锁存器的输出 QQ,刷新记忆
  • CLK 由 1 跳变为 0:主锁存器开始对输入 DD 采样,从锁存器锁住,保持先前的记忆

D 型触发器也被称为边沿触发器(edge-triggered flip-flop),因为它只在 CLK 从 0 到 1 跳变的这一「上升沿」瞬间采样输入 DD 并更新到输出 QQ;其余时间,如 CLK 稳定为 0/1 或从 1 到 0 跳变,其输出均维持不变。

时钟偏移

时钟信号到达电路各个部分所用的时间是有差异的,这被称为时钟偏移(clock skew)。

考虑两个串联的触发器 FF1 与 FF2,D1→D_1 \to FF1 →Q1→\to Q1 \to FF2 →Q2\to Q2。某时 CLK 从 0 跳变至 1,这一瞬间理想的行为是:

  • FF1 采样并存入 D1′D1'
  • FF2 采样并存入 Q1Q1

但由于时钟偏移的存在,FF2 CLK 的跳变迟于 FF1 CLK 的跳变,那么 FF2 采样的可能是已经被 FF1 更新过后的 D1′D1'。这是一种被称为保持时间违例(hold-time failure) 的竞态(race condition)现象。

解决方法:

  • 两相不重叠时钟(non-overlapping clocks):使用多个时钟相位,在触发器中,主锁存器被 ϕ2\phi_2 控制,从锁存器被 ϕ1\phi_1 控制;令 ϕ1\phi_1 与 ϕ0\phi_0 不得同时跳变,不重叠区域为至少一个时钟偏移的时间,从而阻断采样到储存的通路【见 Lec 2 p.37】只能用于规模较小的项目
  • 时钟树综合(clock tree synthesis, CTS)与静态时序分析(static timing analysis, STA)