这份资料整理自「一生一芯」数字逻辑电路基础(上)直播课,适合刚接触芯片设计、想搞懂处理器芯片地基的读者。全文沿「开关 → 0 和 1 → 门电路 → 组合逻辑电路」的主线展开,读完你能看懂译码器、编码器、选择器、比较器、加法器是怎么搭出来的,也能自己算出一块电路要多少晶体管。
#mermaid-svg-uGQAjwAa5u9zO2J6{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-uGQAjwAa5u9zO2J6 .error-icon{fill:#552222;}#mermaid-svg-uGQAjwAa5u9zO2J6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-uGQAjwAa5u9zO2J6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .marker.cross{stroke:#333333;}#mermaid-svg-uGQAjwAa5u9zO2J6 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-uGQAjwAa5u9zO2J6 p{margin:0;}#mermaid-svg-uGQAjwAa5u9zO2J6 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .cluster-label text{fill:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .cluster-label span{color:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .cluster-label span p{background-color:transparent;}#mermaid-svg-uGQAjwAa5u9zO2J6 .label text,#mermaid-svg-uGQAjwAa5u9zO2J6 span{fill:#333;color:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .node rect,#mermaid-svg-uGQAjwAa5u9zO2J6 .node circle,#mermaid-svg-uGQAjwAa5u9zO2J6 .node ellipse,#mermaid-svg-uGQAjwAa5u9zO2J6 .node polygon,#mermaid-svg-uGQAjwAa5u9zO2J6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .rough-node .label text,#mermaid-svg-uGQAjwAa5u9zO2J6 .node .label text,#mermaid-svg-uGQAjwAa5u9zO2J6 .image-shape .label,#mermaid-svg-uGQAjwAa5u9zO2J6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-uGQAjwAa5u9zO2J6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .rough-node .label,#mermaid-svg-uGQAjwAa5u9zO2J6 .node .label,#mermaid-svg-uGQAjwAa5u9zO2J6 .image-shape .label,#mermaid-svg-uGQAjwAa5u9zO2J6 .icon-shape .label{text-align:center;}#mermaid-svg-uGQAjwAa5u9zO2J6 .node.clickable{cursor:pointer;}#mermaid-svg-uGQAjwAa5u9zO2J6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .arrowheadPath{fill:#333333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-uGQAjwAa5u9zO2J6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-uGQAjwAa5u9zO2J6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-uGQAjwAa5u9zO2J6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-uGQAjwAa5u9zO2J6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .cluster text{fill:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 .cluster span{color:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-uGQAjwAa5u9zO2J6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-uGQAjwAa5u9zO2J6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-uGQAjwAa5u9zO2J6 .icon-shape,#mermaid-svg-uGQAjwAa5u9zO2J6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-uGQAjwAa5u9zO2J6 .icon-shape p,#mermaid-svg-uGQAjwAa5u9zO2J6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-uGQAjwAa5u9zO2J6 .icon-shape .label rect,#mermaid-svg-uGQAjwAa5u9zO2J6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-uGQAjwAa5u9zO2J6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-uGQAjwAa5u9zO2J6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-uGQAjwAa5u9zO2J6 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
数字逻辑电路基础
晶体管与CMOS
门电路
异或与设计方法
面积评估
进制转换
组合逻辑五大家族
文章目录
-
- 🧩 数字电路的主线:0 和 1 要回答三个问题
-
- 📖 是什么
- 📊 三个问题各由谁回答
- 🧩 晶体管:用开关实现 0 和 1
-
- 📖 nMOS 怎么当开关
- 📖 CMOS:把开关特性变成输出电压
- 📊 nMOS 与 pMOS 的导通条件
- 📊 CMOS 反相器的分情况讨论
- 🧩 门电路:对 0/1 做运算
-
- 📖 六种常见门
- 📊 门电路结构与功能对照
- 💻 推与非门的真值表
- 🧩 异或门与两种电路设计方法
-
- 📖 真值表推逻辑表达式:两步法
- 📊 异或的两种搭建层次
- 📊 全定制与半定制对比
- 📖 为什么现代芯片以半定制为主
- 🧩 面积评估:数晶体管也要讲原则
-
- 📖 两套 #T
- 📊 nand 为什么从 4 变 6
- 📊 两套 #T 汇总
- 📊 多输入门的增长方式
- 🧩 进位计数法与进制转换
-
- 📖 三种常见进制
- 📖 十进制转二进制:短除法
- 📖 十六进制与二进制:4 位一组
- 📊 三种进制对比
- 📊 进制转换方法
- 💻 短除法示例:46 转二进制
- 🧩 组合逻辑电路五大家族
-
- 📖 七种电路逐个看
- 📊 五大家族汇总
- 📊 加法器的三层结构
- 🧭 结语
🧩 数字电路的主线:0 和 1 要回答三个问题
先记住一句话:处理器芯片的本质就是数字电路,而数字电路只认 0 和 1。
你可以把它想成家里的电灯开关——只有「开」和「关」两种状态。处理器芯片里成千上万个这样的开关排在一起,就拼出了能算数、能存东西的芯片。
📖 是什么
信息在数字电路里要回答三个问题:表示(0 和 1 是什么含义)、处理(怎么对 0 和 1 做运算)、存储(怎么把 0 和 1 存住)。这门课就是沿着「晶体管 → CMOS → 门电路 → 组合逻辑电路」这条主线往下走,把前两个问题讲透,存储留到下一讲。
📊 三个问题各由谁回答
| 表示 | nMOS / pMOS 开关、CMOS 电路 | 晶体管与 CMOS |
| 处理 | 门电路、组合逻辑电路 | 门电路、五大家族 |
| 存储 | 时序逻辑电路 | 下一讲 |
🧩 晶体管:用开关实现 0 和 1
先记住一句话:晶体管就是一个可以用电压控制的开关,栅极电压像手,源极和漏极像开关两端。
具体器件是 MOSFET(金属-氧化物-半导体场效应晶体管),分 nMOS 和 pMOS 两种,都有栅极、源极、漏极三个极。控制栅极电压,就能控制源极和漏极是否连通——这就是「开关」的由来。
📖 nMOS 怎么当开关
给 nMOS 的栅极加上足够高的电压,绝缘层下方会聚集电子,电子多到形成沟道,源极和漏极就连通了;电压不够,沟道消失,两端断开。
pMOS 的功能正好相反,电路符号上多一个圈圈。记住一句话:nMOS 和 pMOS 是互补的一对。
📖 CMOS:把开关特性变成输出电压
CMOS = Complementary MOS = nMOS + pMOS。分析反相器就一招:分情况讨论输入点的电压。
- 输入加高电压:n 管导通、p 管截止 → 输出接到地,得到低电压
- 输入加低电压:n 管截止、p 管导通 → 输出接到电源,得到高电压
于是把高电压定义成逻辑 1(高电平)、低电压定义成逻辑 0(低电平)。0 和 1 就此诞生——它们只描述某一点电平的高低。
📊 nMOS 与 pMOS 的导通条件
| nMOS |
V G S V_{GS} VGS 较大 |
V G S V_{GS} VGS 较小 |
普通符号 |
| pMOS |
V S G V_{SG} VSG 较大 |
V S G V_{SG} VSG 较小 |
多一个圈 |
📊 CMOS 反相器的分情况讨论
| 高电平 | 导通 | 截止 | 低电平(0) |
| 低电平 | 截止 | 导通 | 高电平(1) |
🧩 门电路:对 0/1 做运算
先记住一句话:光会表示 0 和 1 不够,门电路负责用 CMOS 对 0 和 1 做各种有意义的转换。
你可以把它想成厨房里的不同工具:有的负责取反,有的负责「全都要」,有的负责「有一个就行」。每一种工具的分析思路都一样:逐个假设输入取值 → 判断每根管子导通还是截止 → 推出输出 → 画成真值表。
📖 六种常见门
- 非门(反相器):1 个 p 管 + 1 个 n 管,输入取反。
- 与非门:p 管并联、n 管串联,先与后非——任一 p 管导通输出就是 1,所有 n 管都导通输出才是 0。
- 与门:与非门后面再跟一个非门,两次取反抵消。
- 或非门:p 管串联、n 管并联,先或后非。
- 或门:或非门后面再跟一个非门。
- 传输门:一对 n 管 + p 管并联,控制信号互补——控制端为 1 时两端连通,为 0 时断开。
📊 门电路结构与功能对照
| 非门(反相器) | 1 个 p 管 + 1 个 n 管 | 取反 |
| 与非门 | p 管并联,n 管串联 | 先与后非 |
| 与门 | 与非门 + 非门 | 与运算 |
| 或非门 | p 管串联,n 管并联 | 先或后非 |
| 或门 | 或非门 + 非门 | 或运算 |
| 传输门(tg) | 一对 n 管 + p 管并联 | 控制端为 1 连通,为 0 断开 |
💻 推与非门的真值表
输入 A=0, B=0:p 管 P1、P2 至少一者导通 → Y=1
输入 A=1, B=0:n 管 N1、N2 需串联导通,缺一个 → Y=1
输入 A=0, B=1:同上 → Y=1
输入 A=1, B=1:两个 n 管都导通、两个 p 管都截止 → Y=0
🧩 异或门与两种电路设计方法
先记住一句话:异或就是「不同为 1、相同为 0」;同一个功能,可以在门电路层面搭,也可以在晶体管层面直接设计。
异或的「异」表示不同:输入不同结果为 1,相同为 0;它也叫排斥或,区别于普通的相容或。
📖 真值表推逻辑表达式:两步法
任何真值表都能用两步推出表达式:
📊 异或的两种搭建层次
| 门电路层面 | 按表达式用非门 + 与门 + 或门 | 22 | 思路直观,晶体管多 |
| 晶体管层面(全定制) | 分情况讨论管子导通 | 6 | 晶体管少,设计难 |
公式写法:
Y
=
A
⊕
B
=
(
¬
A
∧
B
)
∨
(
A
∧
¬
B
)
Y = A \\oplus B = (\\neg A \\land B) \\lor (A \\land \\neg B)
Y=A⊕B=(¬A∧B)∨(A∧¬B)
📊 全定制与半定制对比
| 做法 | 在晶体管层次直接设计电路 | 基于标准单元或门阵列(如 FPGA)搭大规模电路 |
| 优点 | 晶体管更少,面积小、频率高、功耗低 | 设计难度小 |
| 缺点 | 设计难度大、开发周期长 | 面积和性能不是最优 |
| 定位 | 只对核心模块局部使用 | 现代处理器芯片的主流方法 |
📖 为什么现代芯片以半定制为主
AMD 线程撕裂者有 400 亿个晶体管,不可能每根都手工设计。所以现代芯片以半定制为主,只在追求极致表现时,对核心模块做全定制。
🧩 面积评估:数晶体管也要讲原则
先记住一句话:面积可以用晶体管数量近似,记 #T 为一个门需要的晶体管数;但数的时候要讲原则。
📖 两套 #T
同一款门其实有两套计数:一套只数功能用了多少管子,一套考虑电气特性对等。
为什么要讲对等?CMOS 里 0 和 1 只是两种对称的状态,电气特性也应当对称:
- 输出 1 产生的电流 = 输出 0 吸收的电流,即
I
(
Y
=
1
)
=
−
I
(
Y
=
0
)
I(Y=1) = -I(Y=0)
I(Y=1)=−I(Y=0) - 输出 1 时经 p 管的电压降 = 输出 0 时经 n 管的电压降,即
V
C
C
−
V
(
Y
=
1
)
=
V
(
Y
=
0
)
−
V
G
N
D
V_{CC} – V(Y=1) = V(Y=0) – V_{GND}
VCC−V(Y=1)=V(Y=0)−VGND
三个非门串联时,A 点与 X 逻辑值相同;但如果电压降不对称,V_A 可能不满足第三个非门的栅极工作条件,Y = ~X 就不成立。满足对等设计原则后,使用者只需关心电路逻辑,不必关心电气特性。
📊 nand 为什么从 4 变 6
n 管串联导通时电流经过两个管子,p 管并联导通时每个分支只经过一个——前者电压降是后者的两倍,不满足对等。修法是把每个 n 管的电阻降为原来的一半(加大尺寸,或替换成两个最小晶体管并联)。于是 N1、N2 各算 2:1 + 1 + 2 + 2 = 6。
📊 两套 #T 汇总
| not | 2 | 2 |
| nand / nor | 4 | 6 |
| and / or | 6 | 8 |
| tg | 2 | 2 |
| xor(门级搭建) | 22 | — |
📊 多输入门的增长方式
| 门电路层面 |
8 N − 10 8N – 10 8N−10 |
8 ( N − 1 ) 8(N-1) 8(N−1) |
线性 |
| 晶体管层面 |
N ( N + 1 ) N(N+1) N(N+1) |
N ( N + 1 ) + 2 N(N+1) + 2 N(N+1)+2 |
二次 |
面积和延迟是设计取舍:门级方案面积更优但延迟更大;要优化延迟的场合反而选面积更大的晶体管级方案。看需求选,不必追求绝对最小设计。
🧩 进位计数法与进制转换
先记住一句话:物理世界不只有 0 和 1,用 0/1 表示各种信息叫编码;表示自然数时,加权求和展开式是所有进制的通用写法。
n 位 b 进制数 a(n-1)…a(0) 的真值 =
∑
i
=
0
n
−
1
a
i
⋅
b
i
\\sum_{i=0}^{n-1} a_i \\cdot b^i
∑i=0n−1ai⋅bi。其中 b 叫基,
b
i
b^i
bi 叫该位的权。
📖 三种常见进制
- 二进制:b = 2,每一位只能是 0 或 1。0b101110 的真值是 46。
- 十六进制:b = 16,每位 16 种可能,0~9 加 a~f(数值上表示 10~15)。0xbeef = 48879。
- 十进制:b = 10,就是平时用的数。
📖 十进制转二进制:短除法
原理是不断提取公因子 2:把十进制数不断除以 2,得到的余数依次对应 a(0)、a(1)……a(n-1)。46 依次除 2 的余数是 0、1、1、1、0、1,从高到低组合得 0b101110。
📖 十六进制与二进制:4 位一组
数字电路无法直接处理十六进制,但
16
=
2
4
16 = 2^4
16=24,所以 1 位十六进制对应 4 位二进制:从右到左每 4 位分一组(高位不足补 0),每组直接写出对应十六进制数字。0b1011 1110 1110 1111 → 0xbeef,比二进制串紧凑得多。
📊 三种进制对比
| 十进制 | 10 | 0–9 | 734 |
| 二进制 | 2 | 0 / 1 | 0b101110 |
| 十六进制 | 16 | 0–9、a–f | 0xbeef |
📊 进制转换方法
| 十进制 → 二进制 | 不断除 2,余数从高到低排 | 46 → 0b101110 |
| 十六进制 → 二进制 | 每 1 位拆成 4 位 | 0xbeef → 0b1011 1110 1110 1111 |
| 二进制 → 十六进制 | 每 4 位合成 1 位 | 0b1011111011101111 → 0xbeef |
💻 短除法示例:46 转二进制
46 ÷ 2 = 23 余 0
23 ÷ 2 = 11 余 1
11 ÷ 2 = 5 余 1
5 ÷ 2 = 2 余 1
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1
余数从高到低排列:101110 → 0b101110
🧩 组合逻辑电路五大家族
先记住一句话:译码器、编码器、选择器、比较器、加法器,都是前面门电路搭出来的积木,各管一件事。
📖 七种电路逐个看
- 译码器:把 k 位输入转换成最多
2
k
2^k
2k 种输出。n 选 1 译码器的 2^n 位输出中仅第 x 位为 1,也就是独热码(One-hot)。它最常用于寻址——输入地址,生成相应的有效信号,选中存储单元(地址就像表格里的行号)。 - 转码器:按指定规则把一种编码换成另一种编码,和 n 选 1 译码器不同,不限制输出里 1 的数量。典型应用是七段数码管译码器。
- 编码器:和 n 选 1 译码器功能相反,输入 2^n 位独热码、输出真值为 x 的 n 位二进制数,用来根据独热码生成地址。
- 优先编码器:支持独热码以外的输入,但只编码优先级最高的位。
- 多路选择器(mux):根据选择端 S 选其中一路数据,S=0 输出 D0、S=1 输出 D1。处理器主要处理数据,而数据的来源和处理方式很多,所以它是处理器中使用频率很高的元件。传输门版比门级版本省数倍晶体管。
- 比较器:检查两个输入的每一位是否完全一致,每对位接一个同或门(相同为 1),所有位的结果再与起来。
- 加法器:半加器 HA、全加器 FA、行波进位加法器 RCA 逐级串起来,进位像波浪一样从低位传到高位,和小学竖式计算一样。
📊 五大家族汇总
| n 选 1 译码器 | 地址 → 独热码 | 输出仅第 x 位为 1 | 2-4:36;5-32:1034;10-1024:73748 |
| 转码器 | 编码 → 编码 | 不限制 1 的数量 | 七段数码管译码器 |
| 编码器 | 独热码 → 二进制数 | 非独热码输入未定义 | 4-2:120;简化版:16 |
| 优先编码器 | 输出最高位 1 的位置 | 支持非独热码输入 | 4-2:36 |
| 多路选择器 | 按 S 选一路数据 | 传输门版更省晶体管 | 2-1:26 / 6;32 位:770 / 130 |
| 比较器 | 逐位比对是否一致 | 同或门 + 与门 | 4 位:48;32 位:440 |
| 加法器 | 二进制加法 | HA → FA → RCA | HA:14;FA:36;RCA32:1130 |
📊 加法器的三层结构
| 半加器 HA | 无进位输入 |
S = A ⊕ B S = A \\oplus B S=A⊕B, C = A ∧ B C = A \\land B C=A∧B |
14 |
| 全加器 FA | 有进位输入 Cin | 处理进位输入 | 36 |
| 行波进位加法器 RCA | 多个 FA 级联 | 进位依次向高位传递 | RCA32:1130 |
🧭 结语
这篇覆盖了数字逻辑电路基础(上)的七个知识点:数字电路的主线、晶体管与 CMOS、门电路、异或门与两种设计方法、面积评估、进制转换、组合逻辑电路五大家族。
按顺序读:先看主线建立「开关 → 0/1 → 门电路 → 组合逻辑」的整体图景,再逐节看懂晶体管怎么造出 0 和 1、门电路怎么算、异或怎么推表达式,然后用 #T 自己算面积,最后把译码器、编码器、选择器、比较器、加法器五个积木拼起来。读完你能做到两件事:看懂一块组合逻辑电路由哪些积木组成,以及自己算出它需要多少晶体管。
网硕互联帮助中心





评论前必须登录!
注册