这次复习覆盖第 6~10 章。完成后,你应能把一项组合逻辑设计从规格一路推进到时序检查:先解释输入位模式,再写出逻辑关系,选择合适的组合模块,完成算术和状态标志设计,最后找出关键路径与毛刺风险。
建议先闭卷完成第 4 节,再查看答案。满分 100 分,建议用时 120~150 分钟。纸面设计允许使用直尺画框图,但不要照抄章节中的成图。
观察图 R2-1 时,沿箭头回答五个问题:位模式代表什么,期望功能怎样写成逻辑,逻辑怎样组成模块,模块怎样完成算术,真实输出何时才可使用。
图 R2-1 第 6~10 章从位模式、布尔关系到组合模块、算术结果和时序行为的知识链
这五步不能互相替代。位模式相同,不代表无符号值和二补码值相同;稳定逻辑正确,不代表输出在传播过程中没有毛刺;功能模块连接正确,也要等关键路径传播完成后才能使用结果。
| 章节 | 核心问题 | 你应能完成的动作 |
|---|---|---|
| 第 6 章 | 位模式代表什么? | 在二进制、十六进制、无符号数、二补码和编码之间转换 |
| 第 7 章 | 规格怎样变成更简洁的逻辑? | 写真值表或最小项,使用代数或卡诺图化简,并验证等价 |
| 第 8 章 | 应该用哪个现成模块? | 根据接口选择译码器、编码器、MUX、DEMUX 或比较器并正确连接 |
| 第 9 章 | 多位算术怎样实现? | 连接全加器,统一加减法,并区分进位、借位和有符号溢出 |
| 第 10 章 | 输出什么时候可信? | 计算到达时间,找关键路径,识别静态、动态和功能冒险 |
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\)。
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\):
SUB=0,\(A=0111\),\(B=0011\);SUB=1,\(A=0010\),\(B=0101\)。加法模式中的“借位”写作不适用;减法模式中的无符号借位按 \(B_{out}=\overline{C_4}\) 判断。
6.(8 分)解释为什么最高进位不能直接当作二补码溢出。分别用
1111+0001 和 0111+0001
说明:哪一个发生无符号进位,哪一个发生二补码溢出?
7.(10 分)某输出 \(Y\) 有两条候选路径:
分别求两条路径到达输出的最晚时刻,指出关键路径,并说明为什么“门延迟总和最大”不一定等于“输出到达最晚”。
8.(8 分)对
\[ H=AB+\overline{A}C, \]
令 \(B=C=1\) 且 \(A:1\rightarrow0\)。说明稳定输出、可能出现的冒险类型和产生原因,并写出消除该单输入静态冒险的共识项。
9.(7 分)两位控制码从 01 变为
10。列出两种可能的中间码,解释这为什么属于功能冒险问题,并给出一种从编码层面降低风险的方法。
| \(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 分:
延迟条件如下,均为本题给定的手算模型:
观察图 R2-2 时,先遮住信号名,尝试自己说明每个模块为什么存在。然后对照图中的数据方向检查你的纸面框图。
图 R2-2 逻辑通路、统一加减法通路、结果选择和状态标志组成的 4 bit ALU
0xB;1111_1011。符号扩展复制原符号位,不是在左侧补 0。
最小项为 \(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\) 被两个组重复覆盖是允许的,它使两个更大的组同时成立。
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\)。
101 的无符号编号是 5。\(EN=1\) 时仅 \(Y_5=1\),其余 \(Y_0\)~\(Y_4\)、\(Y_6\)、\(Y_7\) 均为 0。\(EN=0\) 时八个高有效输出全部为 0。
第一组执行加法:
\[ 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\),仍在表示范围内。
最高进位描述固定宽度无符号运算是否产生第 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\)。
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 才是本题的关键路径。关键路径比较的是起点到达时间与路径传播延迟之和,不能只比较门延迟总和。
\(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,能够跨接两个相邻稳定状态。
两位不是同时到达时,转换可能经过
01 → 00 → 10
或
01 → 11 → 10。
如果组合逻辑在 00 或 11
上的输出与两个端点不同,就会出现暂态。问题来自多个输入的到达次序,属于功能冒险。可使用格雷码安排相邻状态,让一次合法转换只改变
1 bit。
两条逻辑通路分别并行计算 \(A\land B\) 和 \(A\lor B\)。算术通路使用一组 4 bit 行波进位加法器,同时完成加法与减法。四组候选结果进入 4 选 1 MUX,由 \(OP\) 选择 \(Y\)。标志逻辑读取 \(C_3\)、\(C_4\) 和最终 \(Y\)。
算术模式满足 \(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 的 10 和 11 数据端,因为 \(SUB\) 已决定它执行加法还是减法。
定义算术模式指示 \(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\) 对四种操作都有效。
| \(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\)。
题目没有单独给出 \(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 把这条路径展开成时间链。
图 R2-3 从 \(B\) 或 \(OP\) 经减法预处理、行波进位、最高位和、结果 MUX 到零标志的关键路径
| 得分 | 状态 | 建议 |
|---|---|---|
| 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 章知识链 |
完成后,在 学习进度.md
记录总分、错题编号和错误原因。重做第 10
题时,应从空白纸开始重画,不要对着答案描图。
下一章进入时序逻辑。第 11 章将回答一个新问题:组合逻辑的输出只由当前输入决定,那么电路怎样记住过去?反馈与双稳态会把“当前输入映射到当前输出”的组合网络,变成能够保存一位状态的锁存器。