跳至内容
chime-stone
首页/博客/逻辑与计算机系统设计

逻辑与计算机系统设计

合并九章数字系统笔记与复习补充,从逻辑门、编码和运算器到存储系统、指令与 CPU。

把同一课程目录中的笔记放在一起,沿着“信息如何表示—逻辑如何实现—数据如何运算和存取—CPU 如何执行指令”的路线阅读。课程中的简化模型会注明适用条件。

第1章 · 数字系统与信息

知识结构

第1章 · 数字系统与信息
├── 数字系统:处理离散量的电子系统
│   ├── 三特征:离散性、抗干扰性、可复现性
│   └── vs 模拟系统:连续 vs 离散
├── 信号类型
│   ├── 模拟信号:时间+幅值均连续
│   ├── 数字表示使用离散符号;不能据此一概断言实际电压波形的时间也离散
│   └── ADC/DAC:采样→量化→编码
│       └── 采样定理:带限与理想重建条件下 fs > 2fmax
├── 信息论基础
│   ├── 自信息量:I = −log₂P
│   ├── 信息熵:H = −Σ P·log₂P
│   └── 固定有限字母表下等概率时熵最大;编码效率还取决于具体编码方案
└── 数制回顾:r进制 = Σ aᵢ×rⁱ

一、数字 vs 模拟

维度数字系统模拟系统
信号离散(0/1)连续(电压/电流)
抗干扰强弱
精度可通过位宽扩展,但受实现成本和物理条件限制受器件限制
复制无损逐次劣化
编程天然适合困难

🔑 在正确判决逻辑电平、满足时序和噪声容限的前提下,数字表示便于复制和处理,精度可通过位宽扩展。

二、ADC/DAC

ADC 三步

采样 → 量化 → 编码

采样定理 (Nyquist-Shannon)

fs>2fmaxf_s > 2 f_{max}

CD音质:fmax≈20kHz → fs=44.1kHz

逻辑电平(典型 5 V TTL 输入阈值示例)

逻辑值电压
0 (L)0~0.8V
1 (H)2.0~5.0V
逻辑不保证区间0.8~2.0V

三、信息论基础

自信息量

I(x)=−log⁡2P(x)(bit)I(x) = -\log_2 P(x) \quad \text{(bit)}
  • P=1/2 → I=1 bit(等概率的0/1事件)
  • P→1 → I→0(确定事件无信息)

信息熵

H(X)=−∑P(xi)⋅log⁡2P(xi)H(X) = -\sum P(x_i) \cdot \log_2 P(x_i)
  • 等概率→H最大(不确定性最大)
  • 熵 = 无损压缩的理论极限
  • n位数字信号最多携带 n bit 信息

四、考点速查

考点核心
数字vs模拟离散vs连续; 抗干扰/可复制/精度可扩展
采样定理带限信号采样需满足条件,通常取 fs > 2×fmax
逻辑电平TTL: 0=00.8V, 1=25V
自信息量I=−log₂P
信息熵H=−ΣPlog₂P; 等概率最大

第2章 · 逻辑代数

知识结构

第2章 · 逻辑代数
├── 基本运算:AND(·) / OR(+) / NOT(⁻)
├── 复合门:NAND / NOR / XOR(⊕) / XNOR(⊙)
│   └── NAND和NOR是万能门
├── 布尔代数定律
│   ├── 交换/结合/分配律
│   ├── 吸收律:A+AB=A, A(A+B)=A, A+ĀB=A+B
│   ├── De Morgan:¬(A+B) = Ā·B̄, ¬(A·B) = Ā+B̄
│   └── 冗余律:AB+ĀC+BC = AB+ĀC
├── 表示方法
│   ├── SOP(与项之和;标准式是最小项之和):F = Σm(1处编号)
│   ├── POS(或项之积;标准式是最大项之积):F = ΠM(0处编号)
│   └── 真值表/表达式/卡诺图/逻辑图
├── 对偶 vs 反演
│   ├── 对偶:仅换·↔+ 和 0↔1
│   └── 反演:换·↔+、0↔1、变量取反
└── 卡诺图化简
    ├── 格雷码排列 → 物理相邻=逻辑相邻
    ├── 圈大、圈少、矩形、边界相邻
    └── 无关项×可作0或1扩大圈

一、基本逻辑门

门表达式口诀特色
ANDF=A·B有0出0
ORF=A+B有1出1
NOTF=Ā取反
NANDF=¬(A·B)全1出0万能门
NORF=¬(A+B)全0出1万能门
XORF=A⊕B=AB̄+ĀB同0异1半加器
XNORF=A⊙B=AB+ĀB̄同1异0等值比较

🔑 NAND/NOR 万能性: 只用 NAND(或只用 NOR)可实现任意逻辑函数。集成电路工艺的核心价值。

二、布尔代数核心定律

定律公式
吸收律A+AB=A; A(A+B)=A; A+ĀB=A+B
De Morgan¬(A+B) = Ā·B̄; ¬(A·B) = Ā+B̄
冗余律AB+ĀC+BC = AB+ĀC

🔑 De Morgan: 长杠变短杠,加变乘、乘变加。最常用的电路变换工具。

三、对偶 vs 反演(易混淆!)

运算符常量变量结果
对偶·↔+0↔1不变对偶式
反演·↔+0↔1取反反函数 F̄

四、SOP vs POS

SOPPOS
形式与项之和,标准式用最小项或项之积,标准式用最大项
符号F=Σm(1处编号)F=ΠM(0处编号)
选用1少时0少时

五、卡诺图化简规则

  1. 圈住所有 1(至少一次)
  2. 圈尽可能 大(2,4,8,16…方格)
  3. 圈数尽可能 少
  4. 矩形,可重复覆盖
  5. 边界相邻(上↔下、左↔右、四角)
  6. 无关项× 可自由当0或1来扩大圈

🔑 卡诺图中变量既0又1→消去;全0→反变量;全1→原变量。

六、考点速查

考点核心
基本门AND/OR/NOT/NAND/NOR/XOR/XNOR真值表
NAND/NOR万能性只用一种门可实现所有逻辑
De Morgan¬(A+B)=Ā·B̄, ¬(A·B)=Ā+B̄
对偶vs反演对偶只换算符,反演还翻变量
SOP/POSΣm vs ΠM; 选1少或0少的方向
卡诺图圈大圈少矩形,边界相邻,×作1扩大圈

第3章 · 数据表示

知识结构树

第3章 · 数据表示
├── 数制与编码
│   ├── 进制转换(二/八/十/十六)
│   └── 进位计数制原理(基数×位权)
├── 常见编码方案
│   ├── 8421码 → 有权码,直观,需+6修正
│   ├── 2421码 → 权值可有歧义;选定 Aiken 码表后每个数字有确定码字,对9自补
│   └── 余3码 → 无权码,=8421+0011,对9自补
├── 可靠性编码
│   ├── 格雷码 → 相邻仅1位变,Gᵢ = Bᵢ₊₁ ⊕ Bᵢ
│   ├── 奇偶校验 → 码距=2,检奇错
│   ├── 汉明码 → 可纠1位错,校验位在2ᵏ位
│   └── CRC → 模2除法,生成多项式
└── 机器数值表示
    ├── 定点数 → 原码/反码/补码
    ├── 标志位 → OF/CF/SF/ZF
    └── 浮点数 → IEEE 754(S+E+M)

一、数制与编码

1.1 进位计数制

值=∑ai×ri \text{值} = \sum a_i \times r^i
  • r = 基数,rⁱ = 位权
  • 二进制 r=2,八进制 r=8,十进制 r=10,十六进制 r=16

1.2 进制转换速查

方向方法示例
r→10按权展开求和(1011.01)₂ = 8+2+1+0.25 = 11.25
10→r(整数)除r取余,逆序13÷2 → 1101
10→r(小数)乘r取整,顺序0.375×2 → 0.011
2↔8每3位一组(10110101)₂ → (265)₈
2↔16每4位一组(10110101)₂ → (B5)₁₆

🔑 重点: 十六进制 1 位 = 4 位二进制,1 字节 = 8 位 = 2 个十六进制位。

二、常见编码方案

2.1 三种 BCD 码对照

十进制8421码2421码余3码
0000000000011
1000100010100
2001000100101
3001100110110
4010001000111
5010110111000
6011011001001
7011111011010
8100011101011
9100111111100

2.2 核心特性对比

特性8421码2421码余3码
有权/无权有权(8,4,2,1)有权(2,4,2,1)无权
单值性✅ 唯一权值表示可有歧义,实际编码需指定码表✅ 唯一
对9自补❌✅✅
无效状态1010~11110101~101000000010, 11011111
加法修正低四位大于9或产生十进制修正所需进位时加6—有进位+0011,无进位-0011

🔑 重点:

  • 8421码的 +6 修正原理:4位二进制模16,BCD模10,差值为6
  • 2421码的对9自补:按位取反 → 9−原值
  • 余3码 = 8421码 + 0011,也对9自补

三、可靠性编码

3.1 码距

定义: 同一编码体系中任意两个合法码之间,不同位的最小个数。

码距 d检错能力纠错能力
1❌ 无法检错❌
2检 1 位错❌
3检 2 位错✅ 纠 1 位错
4检 3 位错纠 1 位 + 检 2 位

通式:检错 d−1 位,纠错 ⌊(d−1)/2⌋ 位。

3.2 格雷码(Gray Code)

核心性质: 相邻两数之间,仅 1 位不同。

二进制 → 格雷码:

Gn−1=Bn−1,Gi=Bi+1⊕Bi(0≤i≤n−2)G_{n-1}=B_{n-1},\quad G_i = B_{i+1} \oplus B_i \quad (0 \le i \le n-2)

格雷码 → 二进制:

Bn−1=Gn−1,Bi=Gi⊕Bi+1B_{n-1}=G_{n-1},\quad B_i = G_i \oplus B_{i+1}

🔑 为什么重要: 数字电路中,二进制多位同时翻转会产生竞态中间态(如 0111→1111→1000)。格雷码每次只变 1 位,减少多位同时变化带来的中间码风险,不能据此保证整个电路无冒险。

典型应用: 旋转编码器、卡诺图、异步 FIFO。

3.3 奇偶校验

奇校验偶校验
1的个数奇数偶数
校验位P = D₀⊕D₁⊕…⊕Dₙ₋₁⊕1P = D₀⊕D₁⊕…⊕Dₙ₋₁
能力检奇数位错检奇数位错
局限偶数位错漏检偶数位错漏检

💡 注意: 码距 = 2,只能检错不能纠错。但硬件开销极小(仅一个异或门链)。

3.4 汉明码(Hamming Code)

定位原理: 校验位放在 2ᵏ 位置,按位号二进制分组。接收端重新计算,错误位号 = 失败校验组号之和。

🔑 核心公式(n 位数据,k 位校验): 2ᵏ ≥ n + k + 1

3.5 CRC 校验

流程: 数据 D(k 位) → 左移 r 位 → 模2除以 G(x) → 余数 R 即为 CRC 校验码

发送:D×2r+R \text{发送:} D \times 2^r + R

接收:(D(x)xr+R(x)) mod G(x)=0未检出错误 \text{接收:} (D(x)x^r+R(x)) \bmod G(x) = 0 \quad\text{未检出错误}

🔑 模2加减法 = 异或运算(无进位/借位)。

四、机器级数值表示

4.1 三种定点数编码对比

原码反码补码
正数符号0+绝对值同原码同原码
负数符号1+绝对值绝对值按位取反反码+1
零的个数2个(±0)2个(0000/1111)1个(仅0000)
8位范围-127~+127-127~+127-128~+127
符号位参与运算❌需循环进位✅
加减法统一❌❌✅

🔑 补码的实用优势: 零唯一、符号参与运算、加法减法同一电路 → 常见通用计算机的有符号整数表示采用补码;这里讨论固定字长整数。

4.2 补码核心公式

[X]补={X0≤X<2n−12n+X−2n−1≤X<0(mod2n) [X]_{\text{补}} = \begin{cases} X & 0 \leq X < 2^{n-1} \\ 2^n+X & -2^{n-1} \leq X < 0 \end{cases} \pmod{2^n}

快速求补: 从右向左找第一个1,该位不变,左方全取反。

4.3 四个标志位

标志含义判断
SF符号标志= 结果最高位
ZF零标志结果 = 0?
OF有符号溢出Cₙ⊕Cₙ₋₁ 或 正+正=负 / 负+负=正
CF无符号进位/借位超出 0~2ⁿ-1

4.4 OF 溢出检测三种方法

  1. 符号位法: OF=XnYnSn‾+Xn‾Yn‾SnOF = X_n Y_n \overline{S_n} + \overline{X_n} \overline{Y_n} S_n
  2. 进位位法: OF=Cn⊕Cn−1OF = C_n \oplus C_{n-1}
  3. 双符号位法: OF=f1⊕f2OF = f_1 \oplus f_2

💡 注意: OF 看有符号,CF 看无符号,各自独立!

五、IEEE 754 浮点数

5.1 单精度(32位)结构

┌────┬──────────┬─────────────────────────┐
│ S  │   E(8)   │       M(23)             │
│1位 │ 偏移127  │    隐含1.xxxx            │
└────┴──────────┴─────────────────────────┘
值=(−1)S×(1.M)×2E−127\text{值} = (-1)^S \times (1.M) \times 2^{E-127}

5.2 特殊值编码

EM含义
全0全0±0
全0非0非规格化数(隐含位=0,值=0.M×2⁻¹²⁶)
1~254任意规格化数(隐含位=1)
全1全0±∞
全1非0NaN(非数值)

5.3 计算流程

例:-6.625 → IEEE 754

  1. S = 1(负)
  2. 6.625 = 110.101₂
  3. 规格化:1.10101 × 2²
  4. E = 2 + 127 = 129 = 10000001₂
  5. M = 1010100…0(隐含1不存)
  6. 结果:1 10000001 10101000000000000000000

🔑 隐含位设计精妙之处: 规格化后整数部分恒为1 → 不存储 → 白白多1位精度。

💡 浮点精度陷阱: 0.1+0.2≠0.3,需要精确十进制语义时应选用适当的数值表示,大数吃小数(1e20+1-1e20=0)。

六、考点速查表

考点核心
进制转换整数除r取余逆序,小数乘r取整顺序,二↔十六分组
BCD编码8421有权+6修正,2421自补,余3=8421+3自补
格雷码Gₙ₋₁=Bₙ₋₁,Gᵢ=Bᵢ₊₁⊕Bᵢ,相邻仅1位变
码距检d-1位错,纠⌊(d-1)/2⌋位错
补码负数取反+1,范围-2ⁿ⁻¹~2ⁿ⁻¹-1,零唯一
溢出OF正+正=负,负+负=正,Cₙ⊕Cₙ₋₁,双符号位异或
IEEE 754S+E+M,偏移127/1023,隐含1,阶全0非规格,阶全1特值
CRC模2除法,余数为校验码,生成多项式决定检错能力
  • BCD三兄弟:八四二一有权直观,二四二一自补不单,余三无权加三也补
  • 溢出:正正得负溢,负负得正溢,正负永不溢
  • 补码:正照抄,负取反加一
  • 浮点:一符二阶三尾,隐含不存白赚精度

第4章 · 组合逻辑电路设计

知识结构树

第4章 · 组合逻辑电路设计
├── 概述:输出仅取决于当前输入(无记忆)
├── 分析方法:逐级推导→表达式→真值表→功能
├── 设计方法
│   ├── 真值表 → 表达式 → 卡诺图化简 → 电路图
│   ├── 最小项(mᵢ)与最大项(Mᵢ)
│   ├── 卡诺图(≤6变量,格雷码排列,圈1/圈0)
│   └── 无关项(Don't Care)利用
├── MSI组合器件
│   ├── 译码器(n→2ⁿ): 74LS138, 实现任意函数
│   ├── 编码器(2ⁿ→n): 74LS148优先编码器
│   ├── MUX(2ⁿ选1): 香农展开,LUT原理
│   ├── DEMUX(1→2ⁿ)
│   ├── 加法器:半加/全加/RCA/CLA
│   └── 比较器:74LS85
└── 竞争与冒险
    ├── 静态/动态冒险
    ├── 卡诺图检测(相切)
    └── 消除(冗余项/选通/滤波)

一、组合逻辑基本概念

1.1 定义

组合逻辑电路: 任意时刻输出仅取决于该时刻输入,与电路过去状态无关。无反馈、无存储。

组合逻辑时序逻辑(第6章)
输出= f(当前输入)= f(当前输入, 当前状态)
记忆❌✅(触发器)
反馈❌✅

1.2 分析步骤

① 逐级写出每个门输出的逻辑表达式
② 化简得到最简表达式
③ 列出所有输入组合的真值表
④ 从真值表归纳逻辑功能

二、逻辑函数的表示方法

2.1 四种等价表示

方法用途
真值表最直观,设计起点
逻辑表达式代数化简与推导
卡诺图图形化简(≤6变量)
逻辑图最终电路实现

2.2 最小项与最大项

  • 最小项 mᵢ: n 变量的与项,每个变量恰好出现一次(原或反)。函数 = Σm(函数值为1的编号)
  • 最大项 Mᵢ: n 变量的或项。Mᵢ = m̄ᵢ。函数 = ΠM(函数值为0的编号)

🔑 关键: 标准 SOP 可写为 Σm,标准 POS 可写为 ΠM;一般 SOP/POS 不要求每项包含所有变量。可分别考察圈 1 或圈 0 的化简结果,再比较实现成本。

2.3 卡诺图化简规则

  1. 圈住所有 1(至少被圈一次)
  2. 圈尽可能 大(2,4,8,16…个方格)
  3. 圈数尽可能 少
  4. 圈必须是 矩形,可重复覆盖
  5. 注意 边界相邻(最左↔最右、最上↔最下)
  6. 无关项 × 可视为 1 来扩大圈(非必须覆盖)

2.4 蕴含项层次

概念定义
蕴含项能使函数为1的与项
质蕴含项(PI)不能再扩大的圈
必要质蕴含项(EPI)包含独有1的圈(必选)

💡 最简 SOP = 所有 EPI + 最少量的其他 PI

三、常用 MSI 组合器件

3.1 译码器 (Decoder, n→2ⁿ)

  • 74LS138 (3-8译码器):3位输入 → 8路低有效输出
  • 对低有效 74LS138,启用时各输出对应最小项的反相;正逻辑译码器的相应高有效输出才直接对应最小项

🔑 通用函数实现: n-2ⁿ 译码器 + 一个多输入门 = 任意 n 变量组合逻辑函数。

3.2 编码器 (Encoder, 2ⁿ→n)

  • 普通编码器: 至多一个输入有效
  • 优先编码器 (74LS148): 多个输入有效→输出优先级最高的编号

3.3 多路选择器 (MUX, 2ⁿ选1)

  • 2ⁿ路数据 + n 位选择线 → 1 路输出
  • 香农展开: F = x̄F(0) + xF(1),可递归应用
  • LUT 原理: 任意 n 变量函数可用 2ⁿ⁻¹选1 MUX 实现:n−1 个变量接选择端,数据端按剩余变量接 0、1、该变量或其反相

3.4 加法器

类型输入S(和)C(进位)
半加器 HAA, BA⊕BAB
全加器 FAA, B, CᵢₙA⊕B⊕CᵢₙAB + (A⊕B)Cᵢₙ
行波进位 (RCA)

n 个 FA 级联,进位逐位传递。延迟 = O(n),面积小。

超前进位 (CLA)

并行计算进位,延迟 = O(log n)。

Gi=AiBi,Pi=Ai⊕BiG_i = A_i B_i,\quad P_i = A_i \oplus B_i

Ci+1=Gi+PiCiC_{i+1} = G_i + P_i C_i

展开:

  • C₁ = G₀ + P₀C₀
  • C₂ = G₁ + P₁G₀ + P₁P₀C₀
  • C₃ = G₂ + P₂G₁ + P₂P₁G₀ + P₂P₁P₀C₀
  • C₄ = G₃ + P₃G₂ + P₃P₂G₁ + P₃P₂P₁G₀ + P₃P₂P₁P₀C₀
加减法统一

🔑 B ⊕ Add/Sub + Add/Sub 作为 C₀:

  • Add/Sub=0:A + B
  • Add/Sub=1:A + B̄ + 1 = A − B

3.5 比较器 (74LS85)

从最高位开始逐位比较,高位不等直接出结果。

四、竞争与冒险

4.1 概念

概念含义
竞争 (Race)信号到达时间有先后
静态冒险输出本应不变,却出现尖峰脉冲
动态冒险输出本应变一次,却变多次

4.2 检测与消除

  • 卡诺图检测: 两个相邻 1 圈"相切"(无公共 PI 覆盖)→ 有静态-1 冒险
  • 消除方法:
    1. 添加冗余桥接圈(最常用)
    2. 选通法(同步系统等稳定后采样)
    3. 输出端并联电容(低速电路)

💡 同步系统中,满足建立/保持时间且毛刺不影响时钟、异步控制等敏感路径时,可在稳定后的时钟沿采样;异步电路中毛刺是致命的。

五、考点速查表

考点核心
组合逻辑分析逐级表达式→真值表→功能描述
卡诺图化简圈大矩相邻,边界也相邻,无关项可任意取
译码器n-2ⁿ + 门 = 任意函数(需区分输出有效电平)
MUX香农展开,n变量→2ⁿ⁻¹选1 MUX(LUT原理)
全加器S=A⊕B⊕Cᵢₙ, Cₒᵤₜ=AB+(A⊕B)Cᵢₙ
CLAG=A·B, P=A⊕B, Cₙₑₓₜ=G+P·C
加减法统一B⊕控制 + 控制作C₀
竞争冒险卡诺图相切=冒险,加冗余圈消除
  • 分析四步走,设计五步走
  • 半加异或与,全加三异或三与或
  • RCA 串糖葫芦慢,CLA 并排算得快
  • 卡诺圈不相切不出险,冗余桥接毛刺消

第5章 · 运算方法与运算器

知识结构树

第5章 · 运算方法与运算器
├── 补码加减法
│   ├── [X+Y]补 = [X]补 + [Y]补
│   ├── [X−Y]补 = [X]补 + [−Y]补
│   └── 异或门控制:M=0→加, M=1→减
├── 溢出检测
│   ├── 符号位法:OF = XₙYₙS̄ₙ + X̄ₙȲₙSₙ
│   ├── 进位位法:OF = Cₙ ⊕ Cₙ₋₁
│   └── 双符号位法:OF = f₁ ⊕ f₂
├── 浮点加减法
│   └── 对阶→尾数±→规格化→舍入→判溢
├── 乘法
│   ├── 原码一位乘:累加右移 n 次
│   └── Booth算法:00/11右移, 01+X, 10−X
└── 除法
    ├── 恢复余数法:不够减则恢复
    └── 不恢复余数法(加减交替)

一、补码加减法

1.1 核心公式

[X+Y]补=[X]补+[Y]补(mod2n)[X+Y]_{\text{补}} = [X]_{\text{补}} + [Y]_{\text{补}} \pmod{2^n}[X−Y]补=[X]补+[−Y]补[X-Y]_{\text{补}} = [X]_{\text{补}} + [-Y]_{\text{补}}

其中 [−Y]补[-Y]_{\text{补}} = [Y]补[Y]_{\text{补}} 连同符号位取反,末位+1。

1.2 加减法统一电路

  • B 经过 n 个异或门,控制信号 M:
    • M=0 → B⊕0 = B → A+BA + B
    • M=1 → B⊕1 = B̄ → A+B‾+1=A−BA + \overline{B} + 1 = A - B
  • M 同时作为加法器最低位进位 C₀

🔑 为什么用异或门: 能自由控制加法与减法。异或门 = 可控反相器。

二、溢出检测三种方法

方法公式说明
符号位法OF=XnYnSn‾+Xn‾Yn‾SnOF = X_n Y_n \overline{S_n} + \overline{X_n} \overline{Y_n} S_n同号相加异号出→溢出
进位位法OF=Cn⊕Cn−1OF = C_n \oplus C_{n-1}最佳电路实现
双符号位法OF=f1⊕f2OF = f_1 \oplus f_2变形补码,f₁为真符号

🔑 口诀: 正正得负溢,负负得正溢,正负永不溢。

三、浮点加减法

3.1 五步流程

① 对阶 → ② 尾数加减 → ③ 规格化 → ④ 舍入 → ⑤ 判溢出

3.2 关键规则

步骤规则
对阶小阶向大阶看齐,阶小尾右移阶+1(可能丢精度)
规格化尾数溢出→右规(阶+1);尾数首位0→左规(阶-1)
舍入0舍1入 / 恒置1 / 就近舍入;舍入→可能再次溢出→需再右规

3.3 IEEE 754 单精度表示回顾

值=(−1)S×(1.M)×2E−127\text{值} = (-1)^S \times (1.M) \times 2^{E-127}

💡 大阶向小阶看齐不可行: 大阶尾数左移会丢失高位,产生巨大误差。

四、乘法

4.1 原码一位乘法

  • 符号:两数符号异或
  • 数值:n 次"判末位→加被乘数(或0)→右移"
  • 需要 n 次加法 + n 次移位

4.2 Booth 算法(补码一位乘)

不需要转换补码→原码,直接对补码操作。

Yᵢ Yᵢ₋₁操作
00右移1位
01+[X]补,右移1位
10+[−X]补,右移1位
11右移1位
  • 附加位 Y₋₁ = 0(虚设在乘数右边)
  • 部分积算术右移(高位补符号位)
  • 常见实现用扩展位处理符号与中间部分积;两个 n 位数的完整乘积通常需 2n 位表示

🔑 核心洞察: 按表中相邻位模式决定加减,再执行算术右移;一串 1 的边界含义需与扫描方向一致。

4.3 两位 Booth

一次处理 2 位,每次考察 3 位 (Yᵢ₊₁YᵢYᵢ₋₁),操作:+0, ±X, ±2X。

五、除法

5.1 恢复余数法

  • 余数 − 除数 → ≥0 商1保留,<0 商0恢复(+除数回去)
  • 缺点:恢复步骤浪费

5.2 不恢复余数法(加减交替法)

上一步结果操作
余数 ≥ 0(商1)余数左移1位 → 减除数
余数 < 0(商0)余数左移1位 → 加除数

🔑 口诀: 够减商1接着减,不够商0接着加。最后若余数<0需恢复。

六、考点速查

考点核心
补码加减[X+Y]补=[X]补+[Y]补, 减法=加[-Y]补
OF检测正正负/负负正;Cₙ⊕Cₙ₋₁;f₁⊕f₂
浮点加减对阶(小→大)→尾数±→规格化→舍入→判溢
Booth附加位=0; 00/11移位; 01+X; 10−X; 算术右移
原码乘法符号异或, 累加右移 n 次
加减交替除法够减商1→减; 不够商0→加; 末余负则恢复
  • 溢出:正正负负才溢出,正负相加永安全
  • 浮点:对阶小向大,尾加小心溢,规格左或右,舍入再右规
  • Booth:末位虚设零,两位一组判;零一开始加,一零结束减
  • 除法:够减商一接着减,不够商零换成加

第6章 · 同步时序逻辑电路

知识结构树

第6章 · 同步时序逻辑电路
├── 概述:输出=f(输入,状态),有时钟,有反馈
├── 触发器
│   ├── RS:S置1 R置0,SR=1禁止
│   ├── D:Qⁿ⁺¹=D(最简单,寄存器首选)
│   ├── JK:Qⁿ⁺¹=JQ̄ⁿ+K̄Qⁿ(最全,有翻转)
│   └── T:Qⁿ⁺¹=T⊕Qⁿ(专用于计数)
├── Mealy vs Moore
│   ├── Mealy:Z=f(X,Q),弧线标X/Z
│   └── Moore:Z=f(Q),圈内标输出
├── 分析:激励→次态→输出→转移表→状态图
├── 设计:状态图→化简→编码→方程→逻辑图
├── 寄存器:D触发器阵列,74LS194
└── 计数器:同步/异步,模2ⁿ/任意模N

一、触发器对比

RSDJKT
特征方程Qⁿ⁺¹=S+R̄Q (SR≠1)Qⁿ⁺¹=DQⁿ⁺¹=JQ̄ⁿ+K̄QⁿQⁿ⁺¹=T⊕Qⁿ
输入端S, RDJ, KT
特色有禁止态最简单翻转功能专为翻转
用途基础教学寄存器计数器分频器

🔑 特征方程是核心: 激励方程 + 特征方程 → 次态方程 → 状态转移。

触发方式

方式特点
电平触发(Latch)透明——有效电平期间输出跟随输入
边沿触发(Flip-Flop)在有效时钟沿采样,仍须满足建立/保持时间等时序要求

二、触发器转换

方向电路
D→TD = T⊕Q
D→JKD = JQ̄ + K̄Q
JK→DJ=D, K=D̄
JK→TJ=T, K=T

三、Mealy vs Moore

MealyMoore
输出Z = f(X, Q)Z = f(Q)
毛刺可能有(随输入异步变)输出只依赖状态;组合译码在状态位转换时仍可能产生毛刺
状态数更少可能更多
标注弧线:X/Z状态圈内

四、分析五步法

① 写激励方程(每个触发器的输入信号表达式)
② 代入特征方程 → 次态方程
③ 写输出方程(Mealy/Moore)
④ 列状态转移表(遍历现态+输入)
⑤ 画状态图 → 描述功能

五、设计五步法

① 画状态图(从功能需求出发)
② 状态化简(合并等价状态)
③ 状态分配(编码:二进制/格雷/独热)
④ 卡诺图求激励方程和输出方程
⑤ 画逻辑图

编码方案对比

方案触发器数组合逻辑适用
二进制⌈log₂n⌉可能复杂ASIC
独热码n极简FPGA

六、寄存器与计数器

74LS194 移位寄存器模式

S₁S₀模式
00保持
01右移
10左移
11并行加载

同步二进制加法计数器激励

T0=1,T1=Q0,T2=Q1Q0,Ti=∏j=0i−1QjT_0 = 1,\quad T_1 = Q_0,\quad T_2 = Q_1Q_0,\quad T_i = \prod_{j=0}^{i-1} Q_j

🔑 任意模 N 计数器:反馈清零法(计到 N 清零)或反馈置数法。

七、考点速查

考点核心
D触发器Qⁿ⁺¹=D,寄存器基础
JK触发器Qⁿ⁺¹=JQ̄+K̄Q,翻转功能
T触发器Qⁿ⁺¹=T⊕Q,计数器基础
特征方程用法激励代入特征→次态
Mealy/Moore输出依赖/不依赖输入
同步计数器激励Tᵢ=ΠQ<ᵢ(低位全1才翻)
时序分析五步法,重点是次态→转移表
  • 触发器:RS有禁止,D放数据,JK会翻转,T专计数
  • Mealy vs Moore:Mealy看收入(输入),Moore看居住(状态)
  • 计数器激励:低位全满高位翻

第7章 · 存储系统

知识结构树

第7章 · 存储系统
├── 概述:容量=字×位,存取时间,存储周期,带宽
├── 半导体存储器
│   ├── RAM (易失)
│   │   ├── SRAM: 6管触发器,快贵,Cache
│   │   └── DRAM: 1T1C电容,慢密需刷新,主存
│   └── ROM (非易失)
│       ├── Mask ROM / PROM / EPROM / EEPROM / Flash
│       └── 也可用于实现组合逻辑函数(查找表)
├── 存储器扩展
│   ├── 位扩展:并联(地址+控制共用,数据分开)
│   ├── 字扩展:译码器产生片选信号
│   └── 字位同时扩展
├── CPU连接:地址/数据/控制三总线
└── 存储层次结构
    ├── 寄存器 → Cache(SRAM) → 主存(DRAM) → 外存
    ├── 局部性原理(时间/空间)
    └── Cache:映射方式、写策略、替换算法

一、SRAM vs DRAM

SRAMDRAM
存储单元6管触发器1T+1C 电容
速度通常用于较低延迟访问,具体取决于器件通常容量较大,延迟取决于器件与系统
集成度低高
刷新❌需要刷新,周期随器件和温度条件而定
成本贵便宜
用途Cache主存
地址输入一次性分时复用 (RAS̄/CAS̄)

🔑 DRAM 分时复用: 先送行地址(RAS̄),选中整行到感应放大器;再送列地址(CAS̄),选中具体位。行列矩阵排列,节省引脚。

DRAM 刷新方式

方式特点
集中刷新有"死区"
分散刷新存取周期翻倍
异步刷新折中,最常用

二、ROM 类型

类型写入可重复
Mask ROM出厂掩膜❌
PROM用户一次烧录❌
EPROM紫外线擦除+电写入✅
EEPROM电擦除(逐字节)可重复擦写,寿命依器件而异
Flash电擦除(按块)+ 电写入可重复擦写,寿命依器件而异

🔑 ROM = 查找表(输入地址→输出数据),可实现任意组合逻辑函数。

三、存储器扩展

位扩展(增加数据宽度)

多片并联:地址线+控制线共用,数据线各管几位。

1K×4 × 2片 → 1K×8

字扩展(增加地址空间)

高位地址→译码器→片选信号(CS̄),低位地址所有芯片共用。

1K×8 × 4片→译码器(高2位地址A₁₀A₁₁)→ 4个CS̄ → 4K×8

片选信号三种方法

方法特点
线选法简单,地址不连续,有重叠
全译码法地址连续无重叠,最常用
部分译码法折中,有少量重叠

四、存储层次结构

寄存器 (~1ns, ~KB)
  ↓
Cache/SRAM (~几ns, ~MB)
  ↓
主存/DRAM (~几十ns, ~GB)
  ↓
外存/SSD (~μs~ms, ~TB)

局部性原理

类型含义利用方式
时间局部性刚访问的可能再次访问留在Cache
空间局部性相邻地址可能被访问整块取到Cache

平均访问时间

Tavg=Thit+(1−h)⋅Tmiss_penaltyT_{avg} = T_{hit} + (1-h) \cdot T_{miss\_penalty}

五、Cache

映射方式

方式规则特点
全相联任意块→任意位置命中率高,电路复杂
直接映射块号→固定位置电路简单,冲突多
组相联组内全相联最常用折中

写策略

策略写Cache写主存特点
写直达✅✅ 同时写一致性好,写入慢
写回✅ (设Dirty)通常在脏行被逐出或显式刷新等时机写回写入快,一致性复杂

六、考点速查

考点核心
SRAM vs DRAM触发器vs电容,Cache vs 主存
DRAM刷新集中/分散/异步;破坏性读出
存储器扩展位扩并联,字扩译码片选
片选生成线选/全译码/部分译码
存储层次局部性原理;平均访问时间
Cache映射全相联/直接/组相联;Tag比较
Cache写策略写直达/写回;Dirty bit

平均访问时间的约定

上式采用先查 Cache、未命中后再访问下一级的串行模型。T_hit 是查找时间,T_miss_penalty 是未命中额外增加的时间;若把未命中总耗时定义为 T_miss,也可写成 h·T_hit + (1−h)·T_miss,不能混用参数含义。

第8章 · 指令系统

知识结构

第8章 · 指令系统
├── 指令 = 操作码(OP) + 地址码(A)
├── 指令格式:三/二/一/零地址
├── 扩展操作码:定长指令,操作码可变
├── 寻址方式(9种)
│   ├── 立即寻址:操作数在指令中
│   ├── 直接寻址:EA = A
│   ├── 间接寻址:EA = (A)
│   ├── 寄存器寻址:操作数在寄存器
│   ├── 寄存器间接:EA = (R)
│   ├── 变址寻址:EA = A + (IX) → 数组
│   ├── 基址寻址:EA = (BR) + A → 重定位
│   ├── 相对寻址:EA = (PC) + A → 跳转
│   └── 堆栈寻址:隐含SP
├── 指令类型:数据传送/算术逻辑/程序控制/IO
└── CISC vs RISC

一、指令格式

类型示例特点
三地址ADD R1,R2,R3指令长,RISC常用
二地址ADD R1,R2结果覆盖一操作数
一地址ADD X依赖累加器AC
零地址ADD依赖堆栈

扩展操作码

定长指令中,操作码可变长→操作数少的指令拥有更长操作码,可编码更多种类。

二、寻址方式(核心!)

方式有效地址 EA用途
立即数据在指令中常量
直接EA = A全局变量
间接EA = (A)指针
寄存器寄存器最快
寄存器间接EA = (R)指针遍历
变址EA = A + (IX)数组
基址EA = (BR) + A程序重定位
相对EA = (PC) + A条件跳转
堆栈SP管理函数调用

🔑 变址 vs 基址(常考区别!):

  • 变址:A=基准(不变,如数组首地址),IX=偏移(变,如下标)
  • 基址:BR=基准(变,如程序加载位置),A=偏移(不变)
  • 数学公式相同(EA=A+R),但用法不同

三、指令类型

类型指令
数据传送MOV, LOAD, STORE, PUSH, POP
算术ADD, SUB, MUL, DIV, CMP
逻辑AND, OR, NOT, XOR, SHL, SHR
程序控制JMP, JZ, CALL, RET
IOIN, OUT

条件转移 = 标志位 + 跳转

指令条件
JZZF=1
JNZZF=0
JCCF=1
JOOF=1
JSSF=1

四、CISC vs RISC

CISCRISC
指令数多少
长度常见可变长经典设计常见固定基础长度,也可能有压缩或其他长度扩展
寻址多种少
访存ALU可访问内存仅LOAD/STORE
执行可混合硬布线与微码常见硬布线,具体依实现
流水难易
代表x86ARM, MIPS, RISC-V

五、考点速查

考点核心
指令格式OP+地址码, 三/二/一/零地址, 扩展操作码
寻址方式9种, 重点变址/基址/相对
变址vs基址公式同EA=A+R, 但A和R的角色互换
条件转移标志位→PC修改, 实现控制流
CISC v RISC变vs定, LOAD/STORE, 流水线

这些表是教学模型

CISC/RISC 是指令集设计取向,不是所有现代处理器实现的严格二分。例如 RISC-V 可通过压缩扩展同时使用较短和基础长度指令。寻址表达式和 PC 的推进单位也必须按具体 ISA 解释。

第9章 · 中央处理器(CPU)

知识结构树

第9章 · 中央处理器
├── CPU = 数据通路 + 控制器
│   ├── 数据通路:ALU、寄存器堆、PC、IR、MUX、总线
│   └── 控制器:硬布线(快/不灵活) vs 微程序(灵活/慢)
├── 核心寄存器:PC, IR, MAR, MDR, AC/ACC, SP
├── 指令周期
│   ├── 取指(Fetch):MAR←PC→MDR→IR→PC 按指令长度推进→译码
│   ├── 译码(Decode):解析操作码,产生控制信号
│   ├── 执行(Execute):ALU运算/访存/跳转
│   └── 写回(Write Back):结果→寄存器/存储器
├── 实现方式
│   ├── 单周期:1指令=1长周期(慢,简单)
│   ├── 多周期:1指令=多短周期(快,部件复用)
│   └── 流水线:多条指令并行执行(最快)
└── 流水线
    ├── 五级:IF→ID→EX→MEM→WB
    ├── 结构冒险 → 分离I-Cache/D-Cache
    ├── 数据冒险 → 转发(Forwarding,最优)
    └── 控制冒险 → 分支预测

一、CPU 基本组成

组件作用
数据通路数据流动的"高速公路":ALU+寄存器堆+PC+MUX
控制器“交通指挥”:译码指令→产生控制信号

核心寄存器

寄存器功能
PC存放下条指令地址
IR存放当前指令
MAR存放存储器地址
MDR存放存储器数据
AC存放ALU结果
SP栈顶指针

🔑 PC 驱动一切: PC自增→取下条指令,跳转指令改PC→改变执行流。冯·诺依曼"存储程序"的核心。

二、指令周期

取指阶段(所有指令通用)

① MAR ← PC
② MDR ← M[MAR]
③ IR ← MDR
④ PC ← PC + 当前指令长度(按地址单位计)
⑤ 控制器译码

不同指令的执行阶段

指令执行操作
ADD R1,R2R1 ← R1+R2
LOAD R1,[addr]MAR←addr, R1←M[MAR]
STORE R1,[addr]MAR←addr, M[MAR]←R1
JMP addrPC ← addr
JZ addrZF=1→PC←addr

三、实现方式演进

单周期 vs 多周期 vs 流水线

以下以经典单发射教学模型作比较;流水线提高吞吐率,不保证单条指令延迟更低。

单周期多周期流水线
时钟周期= 最慢指令= 最慢步骤= 最慢步骤
CPI1(教学模型)随指令和步骤数变化理想单发射稳态约为1
并行度无无多条指令同时执行
复杂度简单中等复杂(需处理冒险)

理想流水线加速比

加速比≈流水线级数\text{加速比} \approx \text{流水线级数}

5级流水线 → 理想加速 5 倍。

实际中因冒险等因素,加速比会打折扣。

四、硬布线 vs 微程序控制器

硬布线微程序
实现组合逻辑ROM存微程序
速度快慢
灵活性差好
适用RISCCISC

五、流水线冒险(核心!)

五级流水线

IF → ID → EX → MEM → WB

级间插入流水线寄存器(IF/ID, ID/EX, EX/MEM, MEM/WB)。

三种冒险

冒险原因解决方案
结构硬件争用分离I-Cache/D-Cache
数据指令间数据依赖转发、停顿或调度,视依赖类型而定
控制分支不确定分支预测;准确率随程序与实现变化

数据冒险示例

ADD R1, R2, R3   → R1 在WB才写回
SUB R4, R1, R5   → ID阶段需要R1→读到旧值!

转发(Forwarding): ALU结果在EX阶段就产生了 → 不等写回,直接从EX/MEM寄存器"偷"给下条指令的ALU输入端 在此相邻 ALU 依赖示例及相应转发路径下,可避免额外停顿;并非所有依赖都能零停顿。

控制冒险的解决

方法原理
气泡等到分支结果出来(损失周期)
静态预测总是猜不跳;或向后跳(循环)
动态预测硬件记录历史→基于模式预测
延迟分支分支后1条总是执行(编译器填有用指令)

六、考点速查

考点核心
CPU组成数据通路(ALU+寄存器+PC)+控制器(控制信号)
指令周期取指(五步)→译码→执行→写回
单/多/流水周期=最慢指令/最慢步骤/最慢步骤;并行度递增
硬vs微组合逻辑快vs ROM灵活;RISC vs CISC
五级流水IF→ID→EX→MEM→WB;流水线寄存器
数据冒险转发可减少部分冒险,load-use 等情形仍可能需要停顿
控制冒险分支预测;效果随程序与实现变化
  • CPU两件套:通路是高速路,控制是交通警
  • 周期四步走:取指译码执行写
  • 流水五级:IF-ID-EX-MEM-WB
  • 冒险三兄弟:结构分Cache,数据靠转发,控制靠预测

补充:复习记录中的推导与易错点

逻辑恒等式

交换律、结合律和分配律允许等价地改写逻辑表达式。两个常用分配关系是

A(B+C)=AB+AC,A+BC=(A+B)(A+C).A(B+C)=AB+AC,\qquad A+BC=(A+B)(A+C).

补充几个复习时容易混淆的式子:

A+A‾B=A+B,A(A‾+B)=AB.A+\overline AB=A+B,\qquad A(\overline A+B)=AB.AB+A‾C+BC=AB+A‾C.AB+\overline AC+BC=AB+\overline AC.

上述最后一式的对偶是

(A+B)(A‾+C)(B+C)=(A+B)(A‾+C).(A+B)(\overline A+C)(B+C)=(A+B)(\overline A+C).

不能随意只把某一个变量取反:对偶规则作用于运算和常量,反演还需对应处理变量与括号范围。

利用异或反推格雷码

由 Gi=Bi+1⊕BiG_i=B_{i+1}\oplus B_i,对两边再异或 Bi+1B_{i+1},利用 x⊕x=0x\oplus x=0 得

Bi=Gi⊕Bi+1.B_i=G_i\oplus B_{i+1}.

因此解码应从最高位开始递推;不能把所有位同时只与原二进制的未知位计算。

CRC 与汉明码条件不能混用

CRC 的冗余位数由所用生成多项式的次数决定,具体检测能力还依赖多项式和帧长。2r≥k+r+12^r\ge k+r+1 是为 k 个数据位构造单比特纠错汉明码时常见的校验位计数条件,不是任意 CRC 选多项式的通用规则。

CRC 接收端余数为零,只表示没有检出该多项式可检测范围内的错误,不能保证绝对无错。普通汉明码的单错定位也需要相应错误模型;增加总奇偶校验可构造 SECDED 方案。

从稳态函数到实际电路

组合电路的函数描述针对稳定输入下的稳态输出。不同路径的传播时延可能带来毛刺,不能仅因为输入最终不变就认为中间过程也不变。分析静态冒险时,要结合具体两级实现、输入变化假设以及是否有公共蕴含项覆盖相邻项,不能只检查变量是否同时以原反形式出现。

参考与整理范围

本文合并数字系统与逻辑设计的九章文字笔记,并将后续复习记录中不重复的推导和易错点补入。PDF 课件截页、题目截图、重复编码表与未完成段落没有作为独立附件上传。

© 2026 chime-stone
探索这个博客
本文目录