← 返回课程首页

阶段复习二 组合逻辑与 4 bit ALU

1. 复习目标

这次复习覆盖第 6~10 章。完成后,你应能把一项组合逻辑设计从规格一路推进到时序检查:先解释输入位模式,再写出逻辑关系,选择合适的组合模块,完成算术和状态标志设计,最后找出关键路径与毛刺风险。

建议先闭卷完成第 4 节,再查看答案。满分 100 分,建议用时 120~150 分钟。纸面设计允许使用直尺画框图,但不要照抄章节中的成图。

2. 第 6~10 章知识链

观察图 R2-1 时,沿箭头回答五个问题:位模式代表什么,期望功能怎样写成逻辑,逻辑怎样组成模块,模块怎样完成算术,真实输出何时才可使用。

第6至10章组合逻辑知识链

图 R2-1 第 6~10 章从位模式、布尔关系到组合模块、算术结果和时序行为的知识链

这五步不能互相替代。位模式相同,不代表无符号值和二补码值相同;稳定逻辑正确,不代表输出在传播过程中没有毛刺;功能模块连接正确,也要等关键路径传播完成后才能使用结果。

3. 五章核心检查表

章节 核心问题 你应能完成的动作
第 6 章 位模式代表什么? 在二进制、十六进制、无符号数、二补码和编码之间转换
第 7 章 规格怎样变成更简洁的逻辑? 写真值表或最小项,使用代数或卡诺图化简,并验证等价
第 8 章 应该用哪个现成模块? 根据接口选择译码器、编码器、MUX、DEMUX 或比较器并正确连接
第 9 章 多位算术怎样实现? 连接全加器,统一加减法,并区分进位、借位和有符号溢出
第 10 章 输出什么时候可信? 计算到达时间,找关键路径,识别静态、动态和功能冒险

4. 综合测验(100 分)

A. 位模式、逻辑关系与化简(20 分)

1.(6 分)对 4 bit 位模式 1011 完成以下解释:

2.(7 分)三变量函数采用变量顺序 \(A,B,C\)

\[ F(A,B,C)=\Sigma m(1,2,3,5,7). \]

画卡诺图并化简,写出一个最简 SOP 表达式。说明每个乘积项覆盖哪些最小项。

3.(7 分)只使用一个 2 选 1 MUX 和必要的基础逻辑,实现第 2 题的函数。令选择信号 \(S=A\),分别求数据输入 \(D_0\)\(D_1\)

B. 组合模块与二进制算术(25 分)

4.(5 分)一个高有效使能、高有效输出的 3 线—8 线译码器,输入为 101,使能 \(EN=1\)。写出 \(Y_0\)\(Y_7\)。若 \(EN=0\),输出应怎样变化?

5.(12 分)一个 4 bit 统一加减法器使用

\[ B_i'=B_i\oplus SUB,\qquad C_0=SUB. \]

分别计算下列两组输入的 4 bit 结果、最高进位 \(C_4\)、无符号借位、二补码溢出 \(V\) 和零标志 \(Z\)

  1. SUB=0\(A=0111\)\(B=0011\)
  2. SUB=1\(A=0010\)\(B=0101\)

加法模式中的“借位”写作不适用;减法模式中的无符号借位按 \(B_{out}=\overline{C_4}\) 判断。

6.(8 分)解释为什么最高进位不能直接当作二补码溢出。分别用 1111+00010111+0001 说明:哪一个发生无符号进位,哪一个发生二补码溢出?

C. 路径延迟与冒险(25 分)

7.(10 分)某输出 \(Y\) 有两条候选路径:

分别求两条路径到达输出的最晚时刻,指出关键路径,并说明为什么“门延迟总和最大”不一定等于“输出到达最晚”。

8.(8 分)对

\[ H=AB+\overline{A}C, \]

\(B=C=1\)\(A:1\rightarrow0\)。说明稳定输出、可能出现的冒险类型和产生原因,并写出消除该单输入静态冒险的共识项。

9.(7 分)两位控制码从 01 变为 10。列出两种可能的中间码,解释这为什么属于功能冒险问题,并给出一种从编码层面降低风险的方法。

D. 4 bit ALU 纸面设计(30 分)

  1. 设计一个 4 bit 组合 ALU。输入为 \(A[3:0]\)\(B[3:0]\) 和操作码 \(OP[1:0]\);输出为 \(Y[3:0]\)、模式相关标志 \(CB\)、二补码溢出 \(V\) 和零标志 \(Z\)。功能定义如下。
\(OP\) 功能 \(Y\) \(CB\) 的含义
00 按位 AND \(A\land B\) 固定为 0
01 按位 OR \(A\lor B\) 固定为 0
10 4 bit 加法 \(A+B\) 最高进位 \(C_4\)
11 4 bit 减法 \(A-B\) 无符号借位 \(\overline{C_4}\)

对全部模式,\(Z=1\) 表示 \(Y=0000\)。只在加减法模式检查 \(V\),逻辑模式令 \(V=0\)

完成以下任务,每项 6 分:

  1. 画出模块框图,至少包含按位 AND、按位 OR、统一加减法器、结果 MUX 和标志逻辑;
  2. 写出算术通路的 \(SUB\)\(B_i'\)\(C_0\) 以及结果选择关系;
  3. 写出 \(CB\)\(V\)\(Z\) 的逻辑定义,并说明各标志在哪些模式有效;
  4. 用三组测试向量检查设计:一次逻辑运算、一次有符号加法溢出、一次无符号减法借位;
  5. 根据下面的简化延迟条件计算各主要输出的最晚稳定时刻,并找出整个 ALU 的关键路径。

延迟条件如下,均为本题给定的手算模型:

观察图 R2-2 时,先遮住信号名,尝试自己说明每个模块为什么存在。然后对照图中的数据方向检查你的纸面框图。

4 bit ALU纸面设计结构

图 R2-2 逻辑通路、统一加减法通路、结果选择和状态标志组成的 4 bit ALU

展开查看答案与评分点

5. 综合测验答案

题 1

符号扩展复制原符号位,不是在左侧补 0。

题 2

最小项为 \(m_1=001\)\(m_2=010\)\(m_3=011\)\(m_5=101\)\(m_7=111\)。其中 \(m_1,m_3,m_5,m_7\) 组成一个四格组,对应 \(C\)\(m_2,m_3\) 组成一个两格组,对应 \(\overline{A}B\)。因此

\[ F=C+\overline{A}B. \]

\(m_3\) 被两个组重复覆盖是允许的,它使两个更大的组同时成立。

题 3

2 选 1 MUX 满足

\[ F=\overline{A}D_0+AD_1. \]

分别代入 \(A=0\)\(A=1\)

\[ D_0=F|_{A=0}=B+C, \]

\[ D_1=F|_{A=1}=C. \]

所以将 \(A\) 接选择端,\(B+C\)\(D_0\)\(C\)\(D_1\)

题 4

101 的无符号编号是 5。\(EN=1\) 时仅 \(Y_5=1\),其余 \(Y_0\)\(Y_4\)\(Y_6\)\(Y_7\) 均为 0。\(EN=0\) 时八个高有效输出全部为 0。

题 5

第一组执行加法:

\[ 0111+0011=1010. \]

结果 \(Y=1010\)\(C_4=0\),借位不适用,\(V=1\)\(Z=0\)。两个正数相加得到符号位为 1 的结果,说明真实结果 \(+10\) 超出 4 bit 二补码的 \(-8\)\(+7\) 范围。

第二组执行减法:

\[ 0010-0101=0010+1010+1=1101. \]

结果 \(Y=1101\)\(C_4=0\),因此 \(B_{out}=1\)\(V=0\)\(Z=0\)。按无符号解释,2 小于 5,需要借位;按二补码解释,结果为 \(-3\),仍在表示范围内。

题 6

最高进位描述固定宽度无符号运算是否产生第 5 位;二补码溢出描述真实有符号结果是否超出当前范围。两者判断对象不同。

\[ 1111+0001=1\_0000. \]

按无符号数解释为 \(15+1=16\),因此 \(C_4=1\);低 4 bit 为 0000。按二补码解释为 \(-1+1=0\),所以 \(V=0\)

\[ 0111+0001=1000. \]

这里 \(C_4=0\),没有无符号进位;按二补码解释为 \(+7+1\),真实结果 \(+8\) 超出范围,因此 \(V=1\)

题 7

P1 的门延迟总和为

\[ 25+35+20=80\ \text{ps}, \]

输出最晚到达时刻为

\[ 40+80=120\ \text{ps}. \]

P2 的门延迟总和为

\[ 30+50+20=100\ \text{ps}, \]

输出最晚到达时刻为

\[ 10+100=110\ \text{ps}. \]

因此 P1 才是本题的关键路径。关键路径比较的是起点到达时间与路径传播延迟之和,不能只比较门延迟总和。

题 8

\(B=C=1\)

\[ H=A+\overline{A}=1. \]

\(A\) 从 1 变 0 前由 \(AB\) 托住输出,变化后由 \(\overline{A}C\) 托住输出。若直接路径上的 \(AB\) 先下降,反相路径上的 \(\overline{A}C\) 后上升,OR 门输入会短暂同时为 0,产生静态 1 冒险。加入共识项 \(BC\)

\[ H_{safe}=AB+\overline{A}C+BC. \]

在这次转换中 \(BC\) 始终为 1,能够跨接两个相邻稳定状态。

题 9

两位不是同时到达时,转换可能经过

01 → 00 → 10

01 → 11 → 10。

如果组合逻辑在 0011 上的输出与两个端点不同,就会出现暂态。问题来自多个输入的到达次序,属于功能冒险。可使用格雷码安排相邻状态,让一次合法转换只改变 1 bit。

题 10

1. 模块结构

两条逻辑通路分别并行计算 \(A\land B\)\(A\lor B\)。算术通路使用一组 4 bit 行波进位加法器,同时完成加法与减法。四组候选结果进入 4 选 1 MUX,由 \(OP\) 选择 \(Y\)。标志逻辑读取 \(C_3\)\(C_4\) 和最终 \(Y\)

2. 算术控制与结果选择

算术模式满足 \(OP_1=1\),减法控制为

\[ SUB=OP_1OP_0. \]

于是 10\(SUB=0\)11\(SUB=1\)。每一位采用

\[ B_i'=B_i\oplus SUB,\qquad C_0=SUB. \]

结果选择可写成

\[ Y=MUX_4(OP,\ A\land B,\ A\lor B,\ S_{add},\ S_{sub}). \]

实际电路可以让同一个算术结果 \(S\) 同时接到 MUX 的 1011 数据端,因为 \(SUB\) 已决定它执行加法还是减法。

3. 标志逻辑

定义算术模式指示 \(ARITH=OP_1\)。则

\[ CB= \begin{cases} 0, & OP=00\text{ 或 }01,\\ C_4, & OP=10,\\ \overline{C_4}, & OP=11, \end{cases} \]

\[ V=ARITH\cdot(C_3\oplus C_4), \]

\[ Z=\overline{Y_3+Y_2+Y_1+Y_0}. \]

\(CB\) 只在算术模式表达进位或借位;\(V\) 只在二补码加减法中有效;\(Z\) 对四种操作都有效。

4. 三组测试向量

\(OP\) \(A\) \(B\) 预期 \(Y\) \(CB\) \(V\) \(Z\) 检查目标
00 1100 1010 1000 0 0 0 按位 AND 与逻辑模式标志
10 0111 0001 1000 0 1 0 正数加法溢出
11 0010 0101 1101 1 0 0 无符号减法借位

还应增加一组零结果,例如 OP=01\(A=B=0000\),检查 \(Z=1\)

5. 最坏到达时间

题目没有单独给出 \(SUB\) 生成逻辑的延迟,因此按本题模型把 \(SUB\) 视为随 \(OP\) 在 10 ps 可用。\(B'\) 最晚到达时间为

\[ t_{B'}=\max(20,10)+20=40\ \text{ps}. \]

逻辑结果经过基础门和结果 MUX:

\[ t_{Y,logic}=20+25+30=75\ \text{ps}. \]

最高进位之前的算术输入最晚在 40 ps 到达,因此

\[ t_{C_4}=40+4\times45=220\ \text{ps}. \]

最高位和需要先传播到 \(C_3\)

\[ t_{S_3}=40+3\times45+35=210\ \text{ps}. \]

再经过结果 MUX:

\[ t_{Y,arith}=210+30=240\ \text{ps}. \]

\(CB\) 最坏经过 \(C_4\) 和模式选择逻辑:

\[ t_{CB}=220+20=240\ \text{ps}. \]

\(V\) 的具体门延迟未单独给出,本题只比较已指定路径,不用虚构数值。零标志建立在最终 \(Y\) 上:

\[ t_Z=240+45=285\ \text{ps}. \]

因此已给定延迟条件下,算术结果到零检测树的路径最长,整个 ALU 最晚在 285 ps 保证 \(Z\) 稳定。图 R2-3 把这条路径展开成时间链。

4 bit ALU关键路径时间链

图 R2-3 从 \(B\)\(OP\) 经减法预处理、行波进位、最高位和、结果 MUX 到零标志的关键路径

6. 评分与薄弱点诊断

得分 状态 建议
85~100 可以进入时序逻辑 记录错题后开始第 11 章
70~84 组合逻辑基础可用 按错题回看对应章节,再独立重画 ALU
50~69 跨章连接仍有断点 先补位模式与加减法,再完成模块和时序分析
0~49 组合逻辑主线尚未稳定 从第 6 章重新推进,每章只在能独立做题后继续
错题 主要薄弱点 回看内容
1 位权、无符号数、二补码、符号扩展 第 6 章
2、3 最小项、卡诺图、MUX 实现函数 第 7、8 章
4 译码器接口、使能和独热输出 第 8 章
5、6 统一加减法、进位、借位和溢出 第 9 章
7 输入到达时间、路径延迟和关键路径 第 10 章
8、9 静态冒险、功能冒险和编码约束 第 10 章,并复习第 6、7 章
10.1~10.3 模块复用、接口和标志定义 第 8、9 章
10.4~10.5 测试向量与跨模块时序分析 第 6~10 章知识链

7. ALU 设计自查清单

8. 学习记录与下一章衔接

完成后,在 学习进度.md 记录总分、错题编号和错误原因。重做第 10 题时,应从空白纸开始重画,不要对着答案描图。

下一章进入时序逻辑。第 11 章将回答一个新问题:组合逻辑的输出只由当前输入决定,那么电路怎样记住过去?反馈与双稳态会把“当前输入映射到当前输出”的组合网络,变成能够保存一位状态的锁存器。