Chap 3 数字逻辑
约 1682 个字 7 张图片 预计阅读时间 6 分钟
1 MOS 晶体管
全称是 ”金属氧化物半导体“ Metal-Oxide Semiconductor
-
我们认为 MOS 管由三部分构成:
Gate 栅极 Drain 漏极 Source 源级 基极 集电极 发射极 -
MOS 管分为 n-MOS 管(高压导通) & p-MOS管(低压导通)两种:
同时包含两种晶体管的电路称为 CMOS( Complementary Metal-Oxide Semiconductor)电路
-
此处仅考虑晶体管的两种状态:导通 & 开路
我这么大一个 “放大” 跑哪儿去了!
2 逻辑门
基本逻辑门图例:
2.1 非门 NOT
2.2 或非门 NOR
- 全 0 出 1,有 1 出 0
- 两个 NPN 串联接电源,两个 PNP 并联接地
2.3 或门 OR
- 或非门取反
2.4 与非门 NAND
- 全 1 出 0,有 0 出 1
- 两个 NPN 并联接电源,两个 PNP 串联接地
2.5 与门 AND
- 与非门取反
2.6 摩根定律 De Morgan's Law
为啥不直接 NPN 接电源 + PNP 接地?
- 在示例中,我们用 PNP 接电源 & NPN 接地,最后取反(这似乎增加了非门的开销)
- 但由于晶体管的电学特性,反过来接会使输出 != 0,因此不能偷工减料。
3 组合逻辑
下列逻辑电路均 无法存储信息
3.1 译码器 Decoder
-
只有一个输出端口为 1,其余均为 0
每个端口仅在 1 种输入模式下输出 1
-
对于 k 个输入,有 2k 种可能的输入模式(input pattern),对应 2k 个输出端口
-
主要用于解释一个二进制数,比如指令中的操作码(opcode)
3.2 多路复用器 MUX
- 从多个输入中选择一路进行输出,通常由 2k 条输入 + k 个选择信号 + 1 个输出组成
-
由选择信号 S 决定具体选择哪一个输入:
每一路都是个或门,该路上的选择信号全 1 时,该路输入 == 最终输出
3.3 全加器 Full Adder
- 用于计算两个二进制串
A[], B[]
逐位相加的结果 - 计算由低位至高位进行,除最低位外,每一位:
- 有三个输入:
A[i], B[i]
以及低位产生的进位carry[i-1]
- 有两个输出:
- 本位产生的进位:
carry[i]
,存在大于等于两个 1 输入时出 1 - 本位最后的结果:
s[i]
,奇数个 1 出 1,偶数个出 0
- 本位产生的进位:
- 有三个输入:
3.4 可编程逻辑阵列 PLA
全称为 Programmable Logic Array,也叫 “可构建模块” Building Block
对于 识别 X*输入,并产生 Y*输出 的 逻辑函数:
- 需要 2x 个 AND(搭配
[0, X]
个 NOT)识别00...0 ~ 11...1
的所有可能输入 - 需要 Y 个 OR 实现所有可能的输出
- 通过将对应 AND 的输出作为 OR 的输入,我们可以实现 任意逻辑函数
3.5 逻辑完备性 Logical Completeness
我们已经证明了仅用 AND,OR,NOT 构成的 PLA 可以实现任意逻辑函数,这表明 [AND, OR, NOT]
这一集合是 “逻辑完备的”:
即,通过对不同数量的 AND,OR,NOT 进行组合,就可以实现 任何真值表
4 存储单元
下列逻辑电路 可以存储信息
4.1 R-S 锁存器 R-S Latch
就是 “保持器” 捏,可以存储 1 bit 信息
A | B | 状态 | a | b |
---|---|---|---|---|
1 | 1 | 保持 | 维持前态 | 维持前态 |
1 | 0 | clear | 0 | 1 |
0 | 1 | clear | 1 | 0 |
0 | 0 | 错误 | 不确定 | 不确定 |
4.2 门锁 D 锁存器
由 R-S 锁存器 + 两个 NOR 组成,支持用输入 WE 控制 锁存器状态:
WE = Write Enable “可写”
- WE = 0,则 S == R = 1,锁存器为 保持态
- WE = 1,则 S = not(R) = not(D),输出与 D 相同
4.3 寄存器 Register
-
寄存器由多个 bit 组合而成,大小为
[1, n] bit
-
由于具备存储功能,寄存器实际由 n 个门锁锁存器构成,当 WE = 1 时允许修改
-
字段(field): 我们将长 n 的寄存器记为
A[n-1 : 0]
,并使用A[m : n]
截取的部分称为 “字段”(闭区间)
5 内存
-
拥有 16 MB 内存的机器 = 16M 个 address + 每个地址存储 1B 信息
-
22 * 3 内存 = 4 个地址 + 每个地址存 3 bit
-
需要 4 * output 的译码器(拥有 4 根 “字线” word line)
-
每根字线包含 1 个字(即 3 bit)
-
对于每种输入
-
读:WE = 0,从对应的字线中取出该位置锁存器存储的一个字(3 bit)
-
写:WE = 1,修改对应字线锁存器中保存的数据
-
-
5.1 寻址空间 Address Space
- 内存中可独立识别的位置总数:16MB 内存 = 有 16M 个内存位置
- 对于用 n bit 表示的地址,一般有 2n 个独立地址
5.2 寻址能力
-
每个位置中存储信息的 bit 数目:16 MB 内存 = 每个位置存 1 B = 8 bit 信息
-
大多数内存都是 “字节寻址” Byte-Addressable
这实际是个历史遗留问题:输入输出会转成 ASCII(8 bit),恰好占一个独立位置比较方便读写
用于科学计算的机器可能采用 64 bit 寻址 -> 因为一个浮点数占 64 bit
6 时序逻辑电路 Sequential Logic Circuit
-
电路输出既与当前输入有关,又与历史输入(当前保存的状态)有关
-
由 组合逻辑电路 + 存储单元(仅记录 上一个状态)构成
-
主要用于实现有限状态机
-
区分 “时序” 与 “组合”
-
时序:依次输入 2 -> 1 -> 3 方可通过
-
组合:以任意顺序输入
{1, 2, 3}
均可通过
-
6.1 有限状态机 FSM
6.2 时钟信号
- 一个高低电平周期性交换的方波
- 时钟周期 clock cycle = 变换周期
- 有限状态机的状态转移发生在每个时钟周期的 起始位置(每隔 T 检查一遍输入)
6.3 主从锁存器 Master-Slave Flip-Flop
在当前时钟周期内:
- 存储器输出是组合逻辑电路的一个输入(有两个输入)
- 组合逻辑电路的输出是存储器的输入(只有一个输入)
-
如果使用 D锁存器,则本周期输出将 立即 覆盖存储器。
-
为使本周期输出在 下一周期开始时 覆盖存储器,此处使用 ”主从锁存器“ 实现 存储器功能:
其实就是串了两个 D 锁存器 A + B,WE 由时钟信号控制
- 前半个周期
- WEA = 0, A 保持上一周期输入
- WEB = 1,B 输出来自 A 的输入(保持上一周期)
- 后半个周期
- WEA = 1,A 接受组合逻辑电路输入(储存本周期状态)
- WEB = 0,B 保持前半周期的输出(保持上一周期)
- 前半个周期
死去的 NPN 和 PNP 三极管突然开始攻击我