SICI · 天机门 · 第二章

组合筑基

组合逻辑电路:计算的基本单元 · 炼气二层

门接起来就能算一切——这句话,延迟之魔说对了一半。

门楣刻字:「输入进、门算、输出出、不留痕」
序章

算器之胚

哪件里没有组合逻辑?

筑基试炼的门是冷的。门楣上"组合"二字由无数细如发丝的蓝光勾出,像一张还没接通的电路图。

筑基试炼门楣上组合二字由蓝光勾出如未接通电路图,手中握着温热逻辑门石子

你攥着上一章炼成的逻辑门——与、或、非,几颗温热的小石子。你觉得它们已经够了。

延迟之魔 延迟之魔

「把门接起来,就能算。加法、比较、抉择——人能算的,它们都能算。打个赌吧——你造一个 32 位的加法器,又对、又快。我替你记账,每一级延迟都记。」

反直觉下注 · 哪件里没有组合逻辑电路?

先下注,指认一件。猜错,延迟账本记一笔。👆 点击下方按钮下注

你刚点亮的每一件东西里,都藏着同一句咒语:输入进、门算、输出出、不留痕。这就是组合逻辑。它没有记忆——这是它的力量,也是它的命门。
详解 · K02-15 组合逻辑的本质

组合逻辑电路:输出仅由当前输入决定,无记忆、无反馈——同一份输入永远得到同一份输出。它与下一章的时序逻辑相对:时序电路有状态,组合电路没有。任何组合网络都可被一张真值表完全描述,而与/或/非(甚至仅 NAND 或仅 NOR)在功能上是完备的:任意真值表都能用它们搭出来。「输入进、门算、输出出、不留痕」说的就是这件事。

第一幕 · 自信

辨图台 · 从电路到真相

别猜——推。从输入走到输出

石径尽头是一面悬空的电路图,门与门之间蓝线纠缠,像一张没有标签的网。

诺依曼老祖 诺依曼老祖

「读它。别猜——推。从输入走到输出,每经过一个门,写下它做了什么。」

延迟之魔 延迟之魔

「一眼就能看出来吧?干嘛费劲。猜嘛。」

电路分析 · 探针逐门推导

先猜功能(四选一),再拖探针逐门推导,填真值表。

先下注猜测功能,推导台才解锁。
电路不会说谎,它只是等你推完。猜得到的是运气,推得出的是本事。
详解 · K02-01 分析:从电路图到功能

分析是"读电路"的正规军打法,四步:① 逐级标注中间信号 → ② 沿信号流写布尔表达式 → ③ 代数化简 → ④ 列真值表验证。本章电路推出 Y = AB + AC + BC——标准的积之和(SOP)式;对照真值表,8 行中恰好"任两输入为 1"的 4 行输出 1,功能即多数表决器。猜测只能给假设,推导才给结论。

第一幕 · 造物

铸器炉 · 从需求到电路

三盏灯,任两盏亮则报警

铸器炉的火是冷的,蓝焰静静烧着。老祖丢过一片玉简:「三盏灯,任两盏亮则报警。造出来。」

延迟之魔 延迟之魔

「化简嘛,差不多就行。多几个门又不会怎样——又不会怎样。」

电路综合 · 真值表 → 卡诺图 → 门级电路

填三人(A,B,C)投票真值表,卡诺图圈组化简,投炉铸造。

卡诺图化简

—
原始项数4
化简项数—
门数节省—
需求是问题,化简是答案的一半。多一个门,多一份延迟、多一份代价——只是你还没看见代价。
详解 · K02-02 综合:从需求到电路(附冒险伏笔)

综合是分析的逆过程:真值表 → 最小项 SOP → 卡诺图圈组化简 → 门级实现。卡诺图按格雷码排列,相邻格只差一个变量;圈住 2/4/8 个相邻的 1 即可消去变化的那个变量。三人表决的三对相邻 1 圈出 AB + AC + BC,比原始 4 最小项省一个门。注意:若化简后的圈两两不交叠,输入翻转时两条路径延迟不等,输出会出现瞬时毛刺——这叫静态冒险(K02-14),补上搭桥的冗余项即可消除,Boss 战会考。

第一幕 · 标准件

信使殿 · 编码与译码

八选一压成三根线,三根线展开八盏灯

信使殿立着两面墙。左墙八个信筒,右墙八盏灯。

诺依曼老祖 诺依曼老祖

「八个信筒只有一个会被投信,你要用三根线告诉别人是哪一个。反过来,给你三根线,你要点亮八盏灯里的一盏。」

延迟之魔 延迟之魔

「要是两个信筒同时来信呢?」

编码器 / 优先编码器 / 译码器级联

点击信筒投信编码;双投触发冲突→优先编码器;译码器用使能端级联扩展。
优先编码器不是修好了冲突,是给冲突立了规矩。使能端不是开关,是模块拼接的接口。
详解 · K02-03 / K02-04 编码器与译码器

编码器把 2n 路互斥输入压成 n 位二进制码;输入不互斥时必须用优先编码器(如 74LS148),按编号优先级裁决。译码器是逆操作:n 位输入选中 2n 路输出之一,每个输出恰好对应一个最小项——因此"译码器 + 或门"也能实现任意函数。使能端是扩展接口:两片 3-8 译码器,最高位地址接一个的使能、取反后接另一个的使能,即拼成 4-16 译码器。

第一幕 · 通用

选路坊 · 一入多出

旋钮指谁,谁通过——一个 MUX 实现任意函数

选路坊中央悬着一个带旋钮的匣子,八条进线、一条出线。

诺依曼老祖 诺依曼老祖

「旋钮指谁,谁通过。」又递来一张真值表:「别转数据了——把这张表喂给它。」

MUX 数据选择 + 函数实现 + Demux 路由

拖地址旋钮选数据;喂真值表实现函数;Demux 分发路由。
你不再需要设计门了——一个选择器,喂一张表,什么函数都能算。这太方便了,方便到你忘了问:它快不快?
详解 · K02-05 / K02-06 MUX 与 Demux

多路选择器(MUX):n 位地址从 2n 路数据中选一路输出。把 n 个函数变量直接接地址端、数据端依次接真值表输出列,一块 MUX 就实现了任意 n 变量函数——这其实是香农展开定理的硬件形态;若用 n-1 个变量作地址,数据端接 0/1/剩余变量/其反,还能省一档。多路分配器(Demux)是逆操作:1 入 2n 出做数据路由,本质就是"数据端作使能"的译码器。

第一幕 · 自负之巅

半加台 · 一位之加

加法没有魔法,全是逻辑

半加台上只有两个开关:A 和 B。一盏和灯,一盏进位灯。

诺依曼老祖 诺依曼老祖

「0+0、0+1、1+0、1+1。造出来。」

延迟之魔 延迟之魔

「那再加上低位来的进位呢?」

半加器 / 全加器 / 4 级串接

拨 A/B 开关,接异或求和、与门进位;全加器加 Cin;串接 4 级看 4 位加法。
加法=异或求和+与或求进位,全加器串接即多位加法。你造出了计算的第一块砖——也亲手接上了延迟之魔的锁链:每一级进位,都要等上一级算完。
详解 · K02-07 半加器与全加器

半加器:两个输入位相加,S = A⊕B、C = A·B——没有低位进位入口,只能算"半"次。全加器补上 Cin:S = A⊕B⊕Cin,Cout = A·B + (A⊕B)·Cin("两位都为 1 必进位;一位为 1 且低位进位也进位")。两个半加器加一个或门可拼出一个全加器;n 个全加器进位首尾串接,就是 n 位行波进位加法器(RCA)。

第一幕 · 崩塌

涟漪深渊 · 进位的诅咒

你算对了。可你算晚了。

你把 32 个全加器一字排开,进位线首尾相接。你输入 111...1 + 000...1。

最低位的进位亮了。然后是下一位。再下一位。蓝光一格一格向高位爬,像一声叹息穿过 32 道门。你等了很久。最高位才亮。

延迟之魔 延迟之魔

「你算对了。可你算晚了。」

RCA 延迟追踪 · 32 位最坏情况

门延迟级数
— / 64
时钟周期 ≈ 20 级
你的加法器是对的,也是废的。真理在硅中奔跑,每跑过一道门都要交一次税——你串了 32 道,于是真理迟到了。功能正确≠时序可用。
详解 · K02-08 RCA 进位传播延迟

每级全加器的进位链是 AND-OR 两级门,n 位 RCA 最坏延迟 ≈ 2n 级——32 位即 64 级。最坏输入是让进位从 LSB 一路传播到 MSB 的组合(如 11…1 + 00…1)。这引出数字设计的铁律:功能正确 ≠ 时序收敛——时钟沿到来时输出必须已稳定(满足建立时间),否则采到的是中间态。64 级延迟对上约 20 级的时钟周期,就是"正确但迟到",而迟到等于错误。

第二幕 · 救赎→再崩塌

先行之光 · 超前进位

展开它——别等,算出来

老祖丢来两个新变量:P=A⊕B(进位传播)、G=A·B(进位生成)。

诺依曼老祖 诺依曼老祖

「C_{i+1}=G_i ∨ P_i·C_i。展开它——别等,算出来。」

延迟之魔 延迟之魔

「那 C31 呢?」

CLA 推导 · 4 位先行 → 32 位扇入爆炸

扇入—
RCA 32位
64 级
CLA 4位
4 级
CLA 32位
—
你杀死了涟漪,养出了巨门。延迟没有消失,它只是换了身衣服——从"排队"变成了"门太胖"。物理定律不收账,它只换科目。
详解 · K02-09 / K02-10 超前进位与快速加法器

定义进位生成 G = A·B 与进位传播 P = A⊕B,则 C(i+1) = G(i) + P(i)·C(i)。把递归式完全展开,每一位进位都只依赖原始输入——4 位 CLA 全部进位并行算出,仅约 4 级延迟。代价:C(n) 的最长乘积项含 n+1 个因子,扇入随位数线性膨胀,32 位单级 CLA 在物理上不可行。工程解法是分层折中(K02-10):块式 CLA(4 位一块、两级先行)、进位选择(两种 Cin 各算一份再选)、并行前缀加法器(Kogge-Stone 等,log₂n 级)。

第二幕 · 重整

比较之衡 · 三态之门

比大小也有延迟链;总线要排队说话

比较之衡上摆着两个 8 位数。老祖:「谁大?」你从最高位比起——高位定了就不必看低位。蓝光一路短路下去,很快。

延迟之魔 延迟之魔

「比 8 位是快。比 32 位呢?还是得一级级下去吧。」

诺依曼老祖 诺依曼老祖

「这条线,八个人都要说话。同时说,会烧。怎么办?」

比较器级联 + 三态门总线驱动

从 MSB 起比,高位决出即短路低位;多器件共用总线需三态门分时。
只要信号要走链,延迟就在。你治好了加法器的链,比较器还有链。也许该换一种活法:别想着消灭延迟,想着怎么和它共处。
详解 · K02-11 / K02-12 数字比较器与三态缓冲器

多位比较器从 MSB 起逐位比较:高位相等则把"待定"传给低位,第一个不等位即定胜负——级联比较器靠 A>B / A=B / A<B 三根级联信号串接扩展。三态缓冲器的输出有 0、1、Z(高阻)三态:未使能时与总线断开。多器件共享总线时,任意时刻只允许一个器件使能,否则两器件输出相反电平形成总线竞争——大电流直通,轻则数据错乱,重则烧毁。总线仲裁的本质就是"分时说话"。

ALU 操作台 · 把零件装进盒子(K02-13)

拨 A、B 的位(点击翻转),选操作码——所有功能单元同时算,操作码 MUX 只选一路输出。这就是 74181 的活法。

A = 5
B = 3
结果
Cout=0Z=0Y = 5
终幕 · 对决

延迟之魔 · 排除法收网

三问拦路,延迟账本待清

ALU 刚一接通,灯全灭了。进位之链从盒子里挣脱,凝成一条横贯屏幕的赤色巨蛇——延迟之魔的真身。

延迟之魔 延迟之魔

「我是延迟之魔。我不住在"慢"里——慢救不了我。我住在你"以为逻辑对就万事大吉"的地方。三问。答错一题,链就长一节。」

诺依曼老祖 诺依曼老祖

「你的刻痕,够用了。」

渊账累计 0 笔 · 三问全对后清零

尾声

模块之门 · 组合筑基

炼气二层 · 组合筑基 · 圆满

魔散尽时,你脚下的电路图亮成一张完整的网。那 32 位 ALU 不再是一堆门——它缩成一个方块:两根输入、一根操作码、一根输出,旁边标着一个数:t_pd。

诺依曼老祖 诺依曼老祖

「你入门了。不是因为你算对了——算对的会忘。是因为你量过了每一级延迟,然后学会了把它们打包成一个带参数的盒子。但——你的 ALU 算完就忘。它记得上一秒算过什么吗?」

知识图谱点亮 · 十五碎片排认知链

点击下方碎片,按因果顺序点亮认知链。

排错处会闪烁红光,提示该知识点依赖的前置知识。
输入进·门算·输出出
门生模块,模块生算器,算器生系统。每一层都不必知道下一层怎么造的——它只信那个 t_pd。这就是抽象。
详解 · K02-13 / K02-15 ALU 与模块化设计

ALU(算术逻辑单元)的结构:加法器、逻辑单元、移位器等所有功能单元并行计算,再用操作码驱动的 MUX 选出一路输出——经典 74181 用 4 位操作码提供 32 种算术/逻辑运算,并输出 Zero、Carry、Overflow 等标志位(标志位是下一章条件跳转的粮食)。模块化的契约只有两条:接口 + t_pd。上层模块不关心下层内部怎么造,只信它承诺的延迟参数——正是这层抽象,让百万门级的设计成为可能。

ch03 时序逻辑电路:记忆的诞生 🔒(点亮全部图谱后开启)
交互实验

2:1 多路选择器

拖动选择 S 与两路输入 A/B,观察多路选择器输出随选择切换。