F3 数字逻辑电路基础(上)

通过晶体管实现 0 和 1

金属-氧化物-半导体场效应晶体管(MOSFET)。

栅极,源极,漏极。

类比为生活中的开关:

  • 栅极电压 → 手
  • 源极和漏极 → 开关连接的两端

晶体管开关原理

以 nMOS 为例,根据其电气特性,nMOS 的功能如下:

  • 当栅极电压与源极电压之间的差值(VGVSV_G - V_S)较大时,源极和漏极导通,相当于开关合上
  • 当栅极电压与源极电压之间的差值较小时,源极和漏极截止,相当于开关断开

pMOS 的功能表现与 nMOS 类似,VSVGV_S - V_G 较大时导通,较小时截止。

nMOS 开关原理

CMOS(Complementary MOS)

nMOS + pMOS,用 MOS 管的开关特性实现 0 和 1:

  • 在 A 点加高电压时,下方的 n 管(nMOS)导通,上方的 p 管(pMOS)截止,相当于 Y 点与地相连,Y 点电压低
  • 在 A 点加低电压时,下方的 n 管(nMOS)截止,上方的 p 管(pMOS)导通,相当于 Y 点与电源相连,Y 点电压高

逻辑 1:高电平;逻辑 0:低电平。

CMOS 反相器

通过晶体管搭建门电路

门电路 = 对状态进行运算。

非运算(非门,反相器)

  • A=1 时,Y=0
  • A=0 时,Y=1

与非运算(与非门)

  • P1 和 P2 并联,其中一者导通时,Y 为 1
  • N1 和 N2 串联,两者均导通时,Y 为 0
ABY
001
011
101
110

与非门

与运算(与门)

与门 = 与非门 + 非门。

或非运算(或非门)

  • P1 和 P2 串联,两者均导通时,Y 为 1
  • N1 和 N2 并联,其中一者导通时,Y 为 0
ABY
001
010
100
110

或门

或门 = 或非门 + 非门。

传输门

C 和 C’ 为一对互补的控制信号:

  • C 为 1 时,P 和 N 均导通,此时 A 和 B 连通
  • C 为 0 时,P 和 N 均截止,此时 A 和 B 断开

三输入与非门

Y = ~(A & B & C)

晶体管数量对比:左图 10 个晶体管,右图 6 个晶体管。

异或运算(异或门,XOR)

两个输入不同时为 1,相同时为 0

ABY
000
011
101
110

由真值表得到逻辑表达式,相应步骤如下:

  1. 根据输入情况描述一个表项。对于真值表中的每个表项,考虑每个输入信号,若输入为 1,则取输入信号本身;若输入为 0,则取输入信号的非。对这些信号进行与运算,即可得到该表项的描述。例如表中 A = 1, B = 0 的对应描述是 A & ~B
  2. 将输出为 1 的表项的对应描述组合成最终的逻辑表达式。例如在异或运算的真值表中,输出为 1 的情况有两种,分别是 A = 1, B = 0(对应 A & ~B)和 A = 0, B = 1(对应 ~A & B)。将这两种描述进行或运算,得到异或运算的逻辑表达式 Y = A ^ B = (A & ~B) | (~A & B)

同或运算(同或门)

输入相同为 1,输入不同为 0。

逻辑表达式:Y = (~A & ~B) | (A & B)

门电路的面积

CMOS 电路的对等设计原则

0 和 1 的电气特性应当一致,这样使用者只需关心电路逻辑:

  • 输出 0 所产生的电流,应当与输出 1 所吸收的电流一致(IY=1=IY=0I_{Y=1} = -I_{Y=0}
  • 输出 1 时电流经过 p 管所产生的电压降,应当与输出 0 时电流经过 n 管所产生的电压降一致(VCCVY=1=VY=0VGNDV_{CC} - V_{Y=1} = V_{Y=0} - V_{GND}

门电路面积

定义一个最小晶体管模型,将其面积定义为单位 1。此处认为 p 型晶体管和 n 型晶体管面积相同。

定义 #T(X) 为门电路 X 中包含的等效最小晶体管的数量

非门的拓扑结构对称,所以 #T(not) = 2

与非门拓扑结构不对称,电压降不满足对等设计原则。因此调整 n 管,使得电阻为原来的一半:#T(nand) = 6

#T(nand) = 1 + 1 + 2 + 2 = 6
#T(and) = 8,  #T(nor) = 6,  #T(or) = 8,  #T(tg) = 2
// tg 为 transmission gate

三输入与非门:#T(nand) = #T(and) + #T(nand) = 14

对于多输入的门电路:

  • 用晶体管来搭建,面积和输入数量呈二次关系
  • 用二输入门电路来搭建,面积和输入数量呈线性关系

进位计数法

二进制计数法

十六进制计数法

通过门电路搭建基本组合逻辑电路

译码器

一种将 k 位输入转换成最多 2k2^k 种不同输出的电路。

n 选 1 译码器

将 n 位输入看成真值 x,使 2n2^n 位输出中仅第 x 位为 1(独热码 one-hot)。常用于寻址。

2-4 译码器:

2-4译码器

A1A_1A0A_0Y3Y_3Y2Y_2Y1Y_1Y0Y_0
000001
010010
100100
111000

转码器

按照指定规则将一种编码的输入转换成另一种编码的输出。不要求输出最多只包含有 1 个 1

常见应用:七段数码管译码器

7 段发光二极管 + 1 个小数点,将一组 4 位的输入信号解析为二进制整数,然后输出一组用于控制七段数码管亮灭情况的控制信号。

编码器

功能和 n 选 1 译码器相反,用于将独热码转换成相应的二进制数值。

  • 若输入 2n2^n 位独热码,且第 x 位为 1,则输出 n 位真值 x 的二进制数
  • 若输出不为独热码,则输出 undefined
  • 用途:根据独热码生成地址;找出独热码中 1 的位置

优先编码器(priority encoder)

支持独热码以外的输入,但只编码优先级最高的位:

  • 若输入不为 0,则输出最高位 1 的位置
  • 若输入为 0,则输出为 undefined

多路选择器

根据选择端选择一路输入,将来对数据来源和处理结果进行选择。

核心逻辑:与门是”守门员”,利用 $A \cdot 0 = 0$(强制清零)和 $A \cdot 1 = A$(原样通过)控制信号是否放行。1-2 译码器保证互斥,或门将两路信号安全合并。

多路选择器

用传输门实现多路选择器

比较器

检查两个输入的每一位是否完全一致。

加法器

1 位加法器

半加法器(Half Adder):输入无进位的加法器

S = A ^ B
C = A & B
ABSC(进位)
0000
0110
1010
1101

全加器(Full Adder):输入有进位的加法器

S = A ^ B ^ Cin
Cout = (A & B) | (Cin & (A ^ B))

多位加法器

行波进位加法器(Ripple-Carry Adder,RCA):将低位 FA 的进位输出作为高位 FA 的进位输入。

交流与留言

这里使用无需登录的轻量评论系统。你可以留下问题、反馈、勘误或交流想法。