第三部分 数字逻辑
一、组合逻辑电路
1.1. 概述
(1)数字电路分为组合逻辑电路和时序逻辑电路。
组合逻辑电路是一种无记忆电路, 将逻辑门以一定方式组合在一起, 输出仅由当时输入决定。
(2)设计方法:
① 先列真值表
② 列出表达式, 并化简
③ 画出逻辑电路图
1.2 运算单元电路
(1)加法运算电路
① 半加器: 不考虑来自低位的进位
进位 $C_{0}=A\cdot B$
和 $S_{0}=\overline{A}B+A\overline{B}=A\oplus B$ (异或)
② 全加器:
输入: $A、B、低位进位\ C_{i}$
$S_{o}=A\oplus B\oplus C_{i}$
$C_{0}=AB+C_{i}(A\oplus B)$
(2)多位加法器, 串行进位, 进位串行传递, 延时较长
并行进位: 同时产生进位, 加法延时缩短, 实现相对复杂
串行进位是每次运算算出 $C$, 并行则是公式推导出每个表达式, 直接先算 $C$ 较为复杂
(3)溢出: 运算结果超出表现范围。
同符号两数相加, 若符号位相反, 则溢出。
异符号两数相减, 若符号位与减数相同, 则溢出。
判断: 采用双符号位, 00 为正, 11 为负, 若有 01 (正溢) 或者 10 (负溢) 则溢出。
(4)阵列乘法器: 用若干全加器, 完全由硬件直接计算乘法结果
对于 $n$ 位的阵列乘法, 需全加器 $n(n-1)$ 个
最长路径 $2(n-1)$ 个全加器延时
(5)数值比较器: 对两个二进制数进行比较, 得出大于, 小于和等于,
$F_{A>B}=A\overline{B}\cong A\overline{AB}$
$F_{A<B}=\overline{A}B=B\overline{AB}$
1 位比较器, 后面式子是为了简化。
$F_{A=B}^{\cdot}=AB+\overline{A}\overline{B}=\overline{A\overline{AB}+B\overline{AB}}$
4 位比较器 7485 芯片 从高位开始比较, 并有级联输入端, 可用于扩展更多位比较器
(6)运算单元电路 ALU
支持与、或等逻辑运算, 与加法、减法等算数运算。
ALU 抽象表示
$\begin{array}{rll} \text{操作数} & \to & \text{ALU操作选择} \\ & & \text{标志位} \end{array}$
标志位: $S$ (SIN, 有符号数), $Z$ (Zero), $C$ (无符号数)
$CF$: 进位标志、 $OF$: 溢出标志
溢出 $OF=c_{in}[N-1] \text{ XOR } c_{out}[N-1]$ (输入与输出符号位不一样)
进位/错位 $CF=1$ 有两种情况:
- 做减法时, 最高位向上借
- 做加法时, 最高位向上进
$CF$ 用于无符号数, $OF$ 用于有符号数。
$CF=C_{out}\oplus C_{in}$ (最高位 $C_{out}$, 最低位 $C_{in}$)
操作控制端 $ALU_{op}$, 决定处理功能, 位数 $k$ 决定于操作数量 $2^k$
1.3 编码器/译码器
(1)编码: 对一系列不同的事物用一组二值 (0 或 1) 代码表示。
编码器: 实现编码功能的数字电路。
输入: $n$ 个输入信号
输出: 一组二值代码 ($m$ 位)
$n\le2^{m}$
(2)常见编码器
① 普通编码器, $2^{n}$ 线-$n$ 线编码器
用几位二进制代码对 $2^{n}$ 个信号进行编码的电路, 只允许其中一个输入信号有效 (低电平 0 或高电平 1), 意思是 $2^{n}$ 个输入里只能有 1 个 0 或者 1 个 1, 其余为无效输入。
eg. 8 线-3 线编码器
$A=Y_{1}+Y_{3}+Y_{5}+Y_{7}$, $B=Y_{2}+Y_{3}+Y_{6}+Y_{7}$
$C=Y_{4}+Y_{5}+Y_{6}+Y_{7}$
② 8421 BCD 编码器
输入: $Y_{0}, Y_{1}, \ldots, Y_{9}$, 分别代表 0 $\sim$ 9
输出: 4 位编码, 例如 $DCBA=1001$, 代表 9。
(3)优先编码器: 允许两个以上输入信号同时有效
对所有输入信号优先级排序, 只对优先级最高的输入信号, 优先级低的不响应。(实际还只处理 1 个信号)
(4)译码器: 编码反操作, 把二进制代码译为高低电平信号输出。
常见: 变量译码器 (二进制)、码制变换译码器、显示译码器
① 二进制译码器 ($n$ 线-$2^{n}$ 线译码器)
任何时刻最多 1 个输出有效。 “最小项译码器”:
高电平输出有效时, 每个输出是对应的输入变量最小项;
低电平输出有效时, 每个输出是对应输入变量最小项的反。
eg. 3 线-8 线译码器 (74138) $S_{0}S_{1}S_{2}$ 为使能输入, 100 才正常译码。
② 码制变换译码器: BCD 译码器 (4 线-10 线译码器)
完全译码 BCD: 输入 $1010 \sim 1111$ 时, 输出 $Y_{0}-Y_{9}$ 均为 1
不完全译码 BCD: 输入 $1010 \sim 1111$ 时, $Y_{0}-Y_{9}$ 为任意值
eg. BCD 译码器 (74XX42): 低电平有效, 完全译码
表达式推导, 最大项推导法
③ 显示译码器: 用于驱动数码显示屏, 将二进制代码所表示的东西显示出来。
共阴极 LED: 高电平输出有效
共阳极 LED: 低电平输出有效
1.4 多路选择器
(1)它是从一组输入数据中选出其中一个作为数据输出的电路,简写为 MUX。
在选择控制信号作用下,能从多路平行输入数据中任选一路作为输出。
(2)eg. 8 选 1 多路选择器 (74151);有两个功能:
① 8 选 1 多路选择器: $D_{7} \sim D_{0}$ 为数据输入端,$A_{2}A_{1}A_{0}$ 为选择控制端。
(每位数乘上选择控制端的输入)
② 多功能运算电路: $D_{7} \sim D_{0}$ 为控制输入端 (与上面相反)。
通过 $D_{7} \sim D_{0}$ 取不同的值,从输入变量 $A_{2}$、$A_{1}$、$A_{0}$ 的各个最小项中选取某几个最小项的或输出。
3 个变量 $\to 2^{3}$ 个最小项 $\to$ 最多有 $2^{8}$ 种功能 $\leftarrow 2^{8}$ 种输入。
1.5 竞争与冒险
(1)
- 竞争: 某个输入变量通过两条或两条以上途径传到输出端,每条路径延迟时间不同,到达时间有先后。
- 冒险: 门电路由于输入端的竞争导致输出端产生不正常的尖峰干扰脉冲信号。
(2)如何判断?
① 代数法: 若某个变量 (eg. A) 同时以原变量和反变量存在,逻辑函数在特定情况 (设定好其他变量),可化为
$F=A+\overline{A}$ (产生 1 冒险) / $F=A\cdot \overline{A}$ (产生 0 冒险)。
② 卡诺图法: 逻辑函数卡诺图中,函数每个与项对应卡诺图的一个卡诺圈。若两个卡诺圈相切,相切处存在冒险。
(3)消除:
- 修改逻辑设计,消除互补变量 / 增加冗余项。
eg. $L=(A+B)(\overline{A}+C) = A\overline{A}+AC+\overline{A}B+BC = AC+\overline{A}B+BC$
eg. $L=AC+\overline{A}B$ - 引入采样脉冲。
- 输出端并联电容。