F3 数字逻辑电路基础(上)
通过晶体管实现 0 和 1
金属-氧化物-半导体场效应晶体管(MOSFET)。
栅极,源极,漏极。
类比为生活中的开关:
- 栅极电压 → 手
- 源极和漏极 → 开关连接的两端
晶体管开关原理
以 nMOS 为例,根据其电气特性,nMOS 的功能如下:
- 当栅极电压与源极电压之间的差值()较大时,源极和漏极导通,相当于开关合上
- 当栅极电压与源极电压之间的差值较小时,源极和漏极截止,相当于开关断开
pMOS 的功能表现与 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:低电平。

通过晶体管搭建门电路
门电路 = 对状态进行运算。
非运算(非门,反相器)
- A=1 时,Y=0
- A=0 时,Y=1
与非运算(与非门)
- P1 和 P2 并联,其中一者导通时,Y 为
1 - N1 和 N2 串联,两者均导通时,Y 为
0
| A | B | Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |

与运算(与门)
与门 = 与非门 + 非门。
或非运算(或非门)
- P1 和 P2 串联,两者均导通时,Y 为
1 - N1 和 N2 并联,其中一者导通时,Y 为
0
| A | B | Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
或门
或门 = 或非门 + 非门。
传输门
C 和 C’ 为一对互补的控制信号:
- C 为 1 时,P 和 N 均导通,此时 A 和 B 连通
- C 为 0 时,P 和 N 均截止,此时 A 和 B 断开
三输入与非门
Y = ~(A & B & C)
晶体管数量对比:左图 10 个晶体管,右图 6 个晶体管。
异或运算(异或门,XOR)
两个输入不同时为 1,相同时为 0
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
由真值表得到逻辑表达式,相应步骤如下:
- 根据输入情况描述一个表项。对于真值表中的每个表项,考虑每个输入信号,若输入为
1,则取输入信号本身;若输入为0,则取输入信号的非。对这些信号进行与运算,即可得到该表项的描述。例如表中A = 1, B = 0的对应描述是A & ~B。- 将输出为
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 所吸收的电流一致()
- 输出 1 时电流经过 p 管所产生的电压降,应当与输出 0 时电流经过 n 管所产生的电压降一致()
门电路面积
定义一个最小晶体管模型,将其面积定义为单位 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 位输入转换成最多 种不同输出的电路。
n 选 1 译码器
将 n 位输入看成真值 x,使 位输出中仅第 x 位为 1(独热码 one-hot)。常用于寻址。
2-4 译码器:

| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 | 0 |
转码器
按照指定规则将一种编码的输入转换成另一种编码的输出。不要求输出最多只包含有 1 个 1。
常见应用:七段数码管译码器
7 段发光二极管 + 1 个小数点,将一组 4 位的输入信号解析为二进制整数,然后输出一组用于控制七段数码管亮灭情况的控制信号。
编码器
功能和 n 选 1 译码器相反,用于将独热码转换成相应的二进制数值。
- 若输入 位独热码,且第 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
| A | B | S | C(进位) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
全加器(Full Adder):输入有进位的加法器
S = A ^ B ^ Cin
Cout = (A & B) | (Cin & (A ^ B))
多位加法器
行波进位加法器(Ripple-Carry Adder,RCA):将低位 FA 的进位输出作为高位 FA 的进位输入。
交流与留言
这里使用无需登录的轻量评论系统。你可以留下问题、反馈、勘误或交流想法。