本页目录

组合逻辑电路

什么是组合逻辑

组合逻辑 — 输出仅取决于当前输入,无记忆功能。

组合逻辑:输出只取决于当前输入 输入 组合逻辑 纯门电路 · 无反馈 输出 与时序逻辑的区别:没有时钟,没有状态保持。

常用组合电路

多路选择器 (MUX)

2选1 MUX:按选择线 S 路由 A 或 B 到输出 Y A B S 选择线 2选1 MUX Y Y = S ? B : A(S=0 选 A,S=1 选 B) — Y = Ā·S + B·S 应用:信号路由、并行→串行转换、逻辑函数实现

译码器 (Decoder)

n 位输入 → 2ⁿ 位输出 (每次仅1位为1)

  2→4 译码器:
    A1 A0 | Y0 Y1 Y2 Y3
     0  0 |  1  0  0  0
     0  1 |  0  1  0  0
     1  0 |  0  0  1  0
     1  1 |  0  0  0  1

应用: 地址译码 (片选信号)、七段数码管驱动
典型芯片: 74HC138 (3→8), 74HC154 (4→16)

编码器 (Encoder)

译码器的逆操作: 2ⁿ 位输入 → n 位输出

优先编码器: 多个输入同时有效时,输出最高优先级的编码
典型: 74HC148 (8→3 优先编码器)

加法器

半加器 (Half Adder)

半加器(HA):两位相加,输出和与进位 A B 半加器 HA S = A⊕B(和) C = A·B(进位) 无进位输入,只能做最低位加法

全加器 (Full Adder)

全加器(FA):加入进位输入 Cin,可级联 A B Cin 全加器 FA S = A⊕B⊕Cin(和) Cout=A·B+(A⊕B)·Cin Cout = A·B + (A⊕B)·Cin —— 多数为1则进位。 级联 n 个全加器 = n 位加法器。

行波进位 vs 超前进位

行波进位 (Ripple Carry):
  进位逐级传递 → 延迟大 (n×t_fa)
  简单、省面积

超前进位 (Carry Lookahead):
  并行计算所有进位 → 延迟小 (O(log n))
  复杂度高、面积大

典型: 74HC283 (4位超前进位加法器)

比较器

比较器:逐位比较,输出三种大小关系 A B 比较器 A > B A = B A < B 从高位到低位逐位比较。 典型芯片:74HC85(4位比较器)。

可编程逻辑

基本思想

不用搭门电路,用可编程器件实现任意逻辑

PAL/GAL: 与阵列可编程 + 或阵列固定
CPLD: 多块 PAL + 可编程互连
FPGA: 查找表 (LUT) + 触发器 + 可编程互连

FPGA 的 LUT

2ⁿ 输入的 LUT 可实现任意 n 输入逻辑函数

3-LUT: 8 个 SRAM 单元存真值表 + 3 级 MUX 树
→ 任意 3 输入布尔函数!

典型: 6-LUT (Xilinx), 4-LUT + 加法器 (Intel ALM)

时序问题

传播延迟 (tpd)

信号从输入到输出稳定所需的时间

多个门串联: 总延迟 = 各门延迟之和
关键路径: 延迟最长的路径 → 决定电路最高工作频率

竞争与冒险

多条路径延迟不同 → 输出可能出现 glitch

检测: 卡诺图中相邻质蕴含项之间没有覆盖
解决: 加冗余项 或 在输出用时钟同步 (寄存器打一拍)

常见应用

电路功能芯片
三态缓冲器控制总线接入74HC125/126
总线收发器双向数据传输74HC245
锁存器电平触发保持74HC373/573
移位寄存器串/并转换74HC595

关键词: 组合逻辑, MUX, 译码器, 加法器, 比较器, FPGA, LUT, glitch, 关键路径