组合逻辑电路

官方工学老师·27 页·深入(追求细节与边界)·0 次浏览·2 天前
数字电路逻辑设计竞争冒险工程边界

组合逻辑电路

看懂组合逻辑电路的设计、分析与竞争冒险,不再只靠死记硬背

按 空格/→ 演示下一步

1 / 27 页

全部页面点击任意一页,跳回舞台从这页播放

数字电路逻辑设计竞争冒险工程边界

组合逻辑电路

看懂组合逻辑电路的设计、分析与竞争冒险,不再只靠死记硬背

1第 1 页 · 组合逻辑电路

什么是组合逻辑电路

想象一台只认'此刻'的咖啡机:你投入 5 元并按下'美式',它立刻出一杯;不会记得你十分钟前点过什么。组合逻辑电路就是这种'只活在当下'的电路。

输出仅由当前输入决定
拔电源再插回去,输出依然只看当前输入,与过去无关
不含存储元件
没有触发器、锁存器等能'记住'状态的器件
与历史输入无关
无论上一秒输入过什么,本次输出只看这一次的输入
可由真值表完整描述
穷举全部输入组合,对应输出被唯一确定
只认'此刻'的咖啡机对应 →组合逻辑电路

投币+按按钮=出咖啡,不记得你十分钟前点过什么

Y=f(X1,X2,,Xn)Y = f(X_1, X_2, \ldots, X_n)
2第 2 页 · 什么是组合逻辑电路

组合逻辑 vs 时序逻辑

它们的根本差异在'是否有记忆'——这一条决定了能解决哪类问题。

组合逻辑
  • 输出仅由当前输入的布尔函数决定
  • 无存储元件,纯门级组合即可实现
  • 无时钟概念,速度取决于最长路径延迟
  • 典型:加法器、编码器、多路选择器
时序逻辑
  • 输出由当前输入与内部状态共同决定
  • 依赖触发器或寄存器保持历史状态
  • 需要时钟同步,须满足建立保持时间
  • 典型:计数器、有限状态机、寄存器堆
无状态、纯运算的场景用组合逻辑;需要记忆或流程控制的场景必须用时序逻辑。
3第 3 页 · 组合逻辑 vs 时序逻辑

组合逻辑电路分析方法

上一页我们说组合逻辑电路只看输入就能定输出。但面对一张真实电路图——十几个门交叉相连——你从哪儿下手读出它到底实现了什么功能?

标变量,定边界
在电路图上明确标出每个输入输出变量,圈出待分析的范围
逐级写表达式
从输入端出发,每过一个门写出该节点的逻辑式,直到输出
必要时化简
用布尔代数或卡诺图把复杂表达式等价化简,便于看清功能
真值表验证
列真值表枚举全部输入组合,对照预期功能判断电路对错
翻译对应 →组合逻辑电路分析

电路图是图形语言,逻辑式是代数语言,分析就是翻译;化简相当于润色,真值表相当于校对

4第 4 页 · 组合逻辑电路分析方法

分析步骤详解

组合逻辑电路分析有四步:从电路图出发,逐步推导到功能描述。

1
写表达式
逐级写出每个门输出对应的布尔表达式,不跳步、不合并。
2
化简
用代数法或卡诺图化简,剥离冗余项,凸显核心逻辑。
3
列真值表
穷举所有输入组合,逐行算出对应的输出值。
4
功能描述
观察真值表规律,用自然语言概括电路功能。
5第 5 页 · 分析步骤详解

组合逻辑电路设计方法

上几页我们学会了「读懂」一个电路——现在反过来,给你一个需求,比如「三人表决多数通过」,怎么从零把它变成电路?这就是设计。

逻辑抽象
把实际需求翻译成输入/输出变量,并给 0、1 赋予明确的物理意义
列真值表
穷举所有输入组合,写出每种情形下期望的输出值
写式并化简
由真值表写出最小项之和的逻辑式,再用卡诺图化简
画逻辑电路
把化简后的表达式用与、或、非门实现,画出门级电路图
做饭做菜对应 →组合逻辑电路设计

需求=「想吃什么」;食材清单=真值表;精简菜谱=化简后的式子;端上桌=实际电路

F=ABC+ABC+ABC+ABCF = \overline{A}B\overline{C} + A\overline{B}C + AB\overline{C} + ABC
6第 6 页 · 组合逻辑电路设计方法

设计步骤详解

设计组合逻辑电路有标准四步,每步衔接上一步的输出。

1
列真值表
按所有输入组合列输出,把'人话需求'翻译成完整表格
2
写表达式
输出为1的最小项相或,得标准与或式,供下一步化简
3
化简
用卡诺图或公式法消多余变量,直接决定门数与成本
4
画电路图
按化简式选门类型(与或门或全与非门)画出最终电路
7第 7 页 · 设计步骤详解

分析与设计流程对照

上排从电路追到功能,下排从功能推到电路;三组虚线标出两边共同的逻辑式、化简与真值表。

图解渲染中…
a2虚线对应设计侧 b3:写逻辑式a3虚线对应设计侧 b4:化简a4虚线对应设计侧 b2:列真值表
8第 8 页 · 分析与设计流程对照

编码器原理

上回我们把分析与设计流程都梳理了一遍。接下来往里填一类高频器件——编码器。它专做一件事:把『哪一个输入有效』翻译成『二进制编号』,相当于数字系统里的『点名员』。

基本功能
2^n 个输入中只有一个有效时,输出 n 位二进制编号
互斥约束
普通编码器要求同一时刻只能有一个输入有效,否则输出无意义
真值表规律
第 i 个输入有效时,输出即为 i 的二进制;电路由一排或门实现
优先编码器
允许多个输入同时有效,按预设优先级响应,典型如 74LS148
8 车道赛跑裁判对应 →8-3 线编码器

8 条赛道是 8 路输入,第 3 道犯规时裁判举 ‘011’,把‘第几道’直接编码为 3 位二进制

Y2=I4+I5+I6+I7Y1=I2+I3+I6+I7Y0=I1+I3+I5+I7Y_2 = I_4+I_5+I_6+I_7 \\ Y_1 = I_2+I_3+I_6+I_7 \\ Y_0 = I_1+I_3+I_5+I_7
9第 9 页 · 编码器原理

编码器结构与应用

8线-3线编码器框图及优先编码概念

编码器结构与应用
8线-3线编码器框图及优先编码概念
10第 10 页 · 编码器结构与应用

译码器原理

上一页讲了编码器是『多选一压缩』,这一页反过来——译码器是把压缩的二进制代码『解压』成一路具体的控制信号。

n 位二进制输入
输入是一组 n 位的二进制代码,代表要选中的编号
2ⁿ 路输出
输出有 2ⁿ 条线,对应所有可能的编号组合
唯一有效输出
任意时刻只有一路输出为有效电平,其余均为无效
一一对应映射
每组输入代码唯一激活一路输出,关系由电路结构固定
n-to-2ⁿ 结构
典型的 2-4、3-8、4-16 译码器都属于此类
酒店前台报房号对应 →译码器输入二进制代码

前台喊『203』,只有 203 房间应答;译码器收到代码,只激活对应一路

Yi=mi,例如38译码器中Y5=ABCY_i = m_i,例如 3-8 译码器中 Y_5 = \overline{A}BC
11第 11 页 · 译码器原理

译码器结构与应用

从左读:地址与三路使能进入译码核,右侧8路仅一路为有效低。

图解渲染中…
DEC译码核:3位地址→8路互斥的低有效输出G1高电平有效使能G2AG2A、G2B同为低电平有效使能OFF使能不满足时所有Yi锁为高(无效)
12第 12 页 · 译码器结构与应用

编码器与译码器对比

编码器与译码器名字只差一个字,但数据流向相反——混淆点就在'编'与'译'的方向上。

编码器
  • 功能方向:多路输入 → 少路输出(多化少)
  • 结构对应:n 个输入对应 log₂n 个输出
  • 典型器件:8 线-3 线优先编码器(如 74148)
  • 常见应用:键盘扫描、产生地址或优先级码
译码器
  • 功能方向:少路输入 → 多路输出(少化多)
  • 结构对应:n 个输入对应 2ⁿ 个输出
  • 典型器件:3 线-8 线译码器(如 74138)
  • 常见应用:存储器片选、显示驱动
编码器'多化少'做信息压缩,译码器'少化多'做指令分配——流向相反,结构互为镜像。
13第 13 页 · 编码器与译码器对比

半加器与全加器

加减乘除是 CPU 的命根子,而几乎所有运算最终都拆成加法。今天用前页的设计流程,做一位二进制加法器——它有两个经典形态:半加器和全加器。

一位加法的功能
两个 1 位二进制数相加,4 种输入,输出 0、1、2、3 共 4 种结果
半加器 HA
只加 A 和 B,不接进位;S=A⊕B, C=A·B
全加器 FA
加 A、B 与低位进位 Cin;S=A⊕B⊕Cin, Cout=AB+ACin+BCin
FA=2HA+OR
全加器可用两个半加器 + 一个或门实现,是组合逻辑复用设计的范例
N 位加法器
N 个全加器级联即得;最低位 Cin 接地为 0,最高位 Cout 为溢出位
竖式逐位相加对应 →半加器 / 全加器

半加器像只算两数;全加器还要把上一位送来的进位一起加上

SHA=AB, CHA=ABSFA=ABCin, Cout=AB+ACin+BCinS_{HA}=A\oplus B,\ C_{HA}=A\cdot B \\ S_{FA}=A\oplus B\oplus C_{in},\ C_{out}=AB+AC_{in}+BC_{in}
14第 14 页 · 半加器与全加器

全加器内部结构

全加器由两个半加器和一个或门级联而成,顺着箭头追踪每一比特信号的旅程。

图解渲染中…
b1半加器1:S1=A⊕B,C1=A·Bb2半加器2:Sum=S1⊕Cin,C2=S1·Cinb3或门合并两路进位:C1 与 C2 互斥,或门足够d2Cout = AB + (A⊕B)Cin,即三变量多数函数
15第 15 页 · 全加器内部结构

串行加法器与超前进位加法器

上一页看清了一个全加器怎么算一位和。但 CPU 要做 64 位加法时,把 64 个全加器串起来就行了吗?两位工程师给出了截然不同的答案。

串行加法器
N 个全加器级联,进位逐位传递;电路最简,延迟正比于位数 N
超前进位加法器
用 G、P 信号并行算出所有进位,延迟降到常数或 O(log N)
生成 G 与传播 P
G=A·B 表示本位必生进位;P=A⊕B 表示有进位来必传过去
速度与复杂度权衡
位数越多 CLA 优势越大;工程上需分层做组内 CLA + 组间 CLA
多人排队传水桶对应 →串行 vs 超前进位

串行要等上游传完才动;CLA 提前算好水流路径,所有人同时开始

C1=G1+P1G0+P1P0C1C_1 = G_1 + P_1 G_0 + P_1 P_0 C_{-1}
16第 16 页 · 串行加法器与超前进位加法器

数据选择器原理

加法器已经能算得很快了,但真实芯片里常有几路数据同时涌入——比如内存、外设、总线都要送进 CPU。这就需要一个「调度员」在它们之间只挑一路放行,这就是数据选择器(MUX)。

多选一功能
从 2^n 路输入数据中选出 1 路送到唯一输出端
n 条选择线
n 位地址码决定选哪一路;n 与输入路数成 2 的幂次关系
输出形式多样
常同时给出原码 Y 与反码 Y';部分型号带三态输出便于挂总线
使能端级联
低电平有效的使能端 EN 可关闭整片,多片 MUX 借此拼成更大选择器
电视遥控器选频道对应 →数据选择器

很多频道=2^n 路输入;遥控器按键=n 位选择码;屏幕只显示一个台=单路输出

Y=i=02n1Dimi(Sn1,,S0)Y = \sum_{i=0}^{2^n-1} D_i \cdot m_i(S_{n-1},\dots,S_0)
17第 17 页 · 数据选择器原理

4选1数据选择器

看数据如何被选通:选择端译码→输入端匹配→使能端门控→输出汇总

图解渲染中…
SEL把两位选择码翻译成4条单选通道的开关ENGate使能=1时放行;使能=0时输出恒为0OR只有被选通的那一路有数据,其余为0Y最终输出 = EN · 选中的那个 Di
18第 18 页 · 4选1数据选择器

加法器与数据选择器对比

加法器管"算什么",数据选择器管"选哪条"——名字里都带"器",但干的活截然不同。

加法器
  • 功能定位:对输入位执行算术运算,输出和与进位
  • 输入输出:两个n位加数 → n位和 + 1位进位
  • 控制信号:无,结果由输入位直接算出
  • 典型应用:ALU运算单元、地址偏移、累加计数
数据选择器
  • 功能定位:从多路数据中选一路输出
  • 输入输出:2^n路输入 → 1路输出(n为选择端位数)
  • 控制信号:选择端S决定哪一路被选中
  • 典型应用:寄存器组选择、总线切换、数据分时复用
需要"算结果"选加法器,需要"选通路"选数据选择器;功能互补,常在同一ALU芯片里协同出现。
19第 19 页 · 加法器与数据选择器对比

为什么用中规模器件

前面做加法器时,若把每个与、或、非门都单独接线,功能虽能实现,芯片数量和排线却会迅速膨胀。更常见的做法,是用现成的中规模集成器件(MSI)完成一整类逻辑。

功能封装
MSI把一组门电路封装成可复用的标准功能块。
少做门级展开
设计者只需确定功能、位宽和连接,不必重复搭建内部门网络。
成本整体下降
芯片、连线、焊点、面积、装配和调试成本通常一起减少。
仍需核对边界
位宽、延迟、扇出、负载和未用输入仍要按器件手册检查。
用标准积木搭桥对应 →用MSI实现组合逻辑

基本门像散装零件,MSI像已拼好的桥段;少接很多线,还便于复用和替换。

20第 20 页 · 为什么用中规模器件

用数据选择器实现逻辑函数

用数据选择器实现逻辑函数,五步把真值表翻译成电路连线。

1
选MUX规模
n个变量选2^(n-1)选1的MUX,留一个变量给数据端
2
变量分工
选n-1个变量接选择端S,剩下的1个留给数据端
3
按选择端展开
把F按选择端变量的每种组合拆成若干段
4
求数据端取值
每段里剩余变量在0和1时F的值,就是对应的Di
5
连线并验证
把Di、S端、使能端接好,代入全部组合检验
21第 21 页 · 用数据选择器实现逻辑函数

设计实例:3变量函数

python

Python 代码:把 F=Σm(1,3,4,6) 拆成 D0~D3 四个关于 C 的表达式,并验证 MUX 与原函数全 8 输入一致。

代码高亮加载中…

L2 定义原函数;L13 固定 AB 对 C 取两值即 Di;L14 把 4 种 (d0,d1) 归为 0/1/C/C';L22 回灌 MUX 扫 8 输入验证一致。

22第 22 页 · 设计实例:3变量函数

用译码器实现逻辑函数

将函数接或门,利用最小项展开

用译码器实现逻辑函数
将函数接或门,利用最小项展开
23第 23 页 · 用译码器实现逻辑函数

设计实例:译码器方案

python

用 Python 真值表验证 3-8 译码器 + 一只或门即可实现 Σm(1,3,4,6)

代码高亮加载中…

译码器输出天然覆盖全部 8 个最小项;任一函数只需把对应 mi 接或门。L14 一行即把 Σm 表达式落地,L20 遍历全部输入确认两种实现等价。

24第 24 页 · 设计实例:译码器方案

两种实现方案对比

MUX法和译码器法都能实现组合逻辑函数,但原理不同、适用场景不同。选错方案可能浪费器件、增加复杂度。

数据选择器法
  • 原理:地址选通,从数据端选一路输出
  • 适用:变量数=地址端数+1 的函数
  • 优点:单片即可,无需外接门
  • 局限:变量多时需多片级联
译码器法
  • 原理:每根输出线对应一个最小项
  • 适用:变量数=地址端数的任意函数
  • 优点:多输出函数可并行实现
  • 局限:需外接与非门组合最小项
单输出、变量少选MUX,集成度最高;多输出或变量多选译码器,通用性强。多路输出是译码器的杀手锏。
25第 25 页 · 两种实现方案对比

组合逻辑电路知识图谱

  • 分析与设计互为逆过程
  • 编码与译码结构对称、方向相反
  • 中规模器件是函数的通用积木
  • 速度与面积的取舍贯穿每个设计
延伸主题:时序逻辑电路竞争冒险现象FPGA与可编程逻辑
26第 26 页 · 组合逻辑电路知识图谱

课后思考

先合上课本独立想三分钟,再翻看参考答案对思路。

1为什么组合逻辑电路中不允许出现反馈回路或记忆元件?去掉这条限制会怎样?

参考答案回忆组合逻辑 vs 时序逻辑的核心区别——输出只取决于当前输入。引入反馈或记忆,输出就开始依赖历史,电路就跨入了时序逻辑的领地。

2用数据选择器和用译码器都能实现同一逻辑函数,实际选型时你会从哪些维度权衡?

参考答案思考芯片引脚利用率、扇出、扩展性、与其它电路共享使能等。4选1只需选通端变量,译码器则需把所有变量接入地址端,并配合门电路组合。

3如果把一个异或门的输出经过一根延迟线再接回自己的输入端,这还算组合逻辑吗?为什么?

参考答案不算。输出经延迟回灌到输入,意味着输出取决于「过去的自己」,引入了时间维度的依赖,违反「输出仅由当前输入决定」的核心定义。这正是时序逻辑的入口。

27第 27 页 · 课后思考
组合逻辑电路 · 知识图解