根据是否具有记忆功能,可以将数字逻辑电路分为组合逻辑电路和时序逻辑电路。
组合逻辑电路不具有记忆功能,任意时刻输出仅取决于此时的输入,与电路状态无关。
其电路结构可以抽象为
给定一个组合逻辑电路的电路图,分析其功能的过程称为组合逻辑电路的分析。一般的步骤为
逻辑电路如图,分析其功能
A | B | C | L |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
由真值表可以看出,输入变量的取值中有奇数个 1 时, L 为 1 ,否则 L 为 0 ,电路具有为奇校验功能
给定需要实现的逻辑功能,画出对应的组合逻辑电路的过程称为组合逻辑电路的设计。
用与非门设计三变量多数表决器,其中 A 具有否决权
三个输入变量,分别为 A,B,C
一个输出变量 L,用于表示表决结果
记 0 为反对,1 为赞成
根据多数表决器的逻辑含义,真值表可以表示为
A | B | C | L |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
A\BC | 00 | 01 | 11 | 10 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 1 |
画出两个圈,得到逻辑关系为
要求使用与非门,因此用与非式来表示
逻辑电路的与门,一般是由与非门和非门组成,因此与非门比与门的延迟小,成本低。在设计电路时,尽量使用与非门替代与门
需考虑共享相同乘积项,以减少逻辑门数目
由于接口电路带负载能力有限,有时会对逻辑门输入端数量有要求。
如:限定逻辑门的扇入数为 3 实现
提取公因子为
电路图可以优化为
实际电路中,信号经过任何逻辑门都需要一定时间。不同路径上的逻辑门数量一般都不同,如果时序控制不妥,会导致错误输出,此现象叫电路的竞争冒险
例如逻辑电路
若使
但实际上,若前级电路时延有差异,使得
当逻辑门的两个输入端的信号,理论上同时向相反方向变化, 而实际变化的时间却存在差异,导致产生错误脉冲的现象称为「竞争」
源自同一个信号的互反变量,引起逻辑门输入端两个信号取值变化方向相反,导致由于竞争而产生错误脉冲的现象称为「冒险」
由以上定义可知,冒险是竞争的上级概念。
若出现
发现
因此 A 会产生竞争与冒险的错误 0
再分析
故
判断以下逻辑电路是否存在竞争与冒险
画出
存在两个圈相切,相切在
若A在卡诺图中存在某两个卡诺圈相切,则用一个多余的卡诺圈将相切处相邻最小项圈起来,多余的卡诺圈对应与项就是要加入的冗余项。
例如对于
画出卡诺图,找出相切卡诺圈
若逻辑电路在较慢速度下工作,为了消去竞争冒险,可在输出端并联一电容器,使输出波形上升沿和下降沿变化较缓,对很窄的负跳变脉冲起平波作用
常用组合逻辑电路被制成了中规模集成电路(MSI),广泛用于数字系统的设计中
赋予二进制代码特定含义的过程称为编码。具有编码功能的逻辑电路称为编码器。编码器的逻辑功能就是将每一个需要编码的输入信号转变为不同的二进制的代码输出。
例如二进制编码器,有
以 4-2 线普通二进制编码器设计为例,有
则其真值表可以表示为
1 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 | 0 |
则输出函数表达式可以表示为
根据输出函数画出逻辑电路
当输入端多个信号同时有效时,会产生输出混乱
8-3 优先二进制编码器,输入高电平有效
十六个引脚,八个信号输入端
思路:一片 CD4532 处理高八位,另外一片处理低八位
若高位片工作,则最高输出为为 1,剩下三位用高位片输出;若高位片不工作,最高输出为 0,剩下三位用低位片输出。
由此可以得到
将二进制码翻译成代表某一特定含义的信号的过程称为「译码」,具有译码功能的逻辑电路称为译码器
例如二进制译码器,有
常见的译码器有:二进制译码器、BCD 译码器和显示译码器。
以 2-4 线二进制译码器设计为例,有
则其真值表可以表示为
0 | 0 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 0 |
则输出函数表达式可以表示为
根据输出函数画出逻辑电路
2-4 线二进制译码器,两个输入端,四个输出端,一个低电平有效输入使能端
3-8线二进制译码器,三个输入端,八个输出端,三个使能端
其逻辑符号为
其引脚图为
可以用两片 3-8 译码器扩展为 4-16 译码器
74138 的输出
例如要实现函数
因此只需要在四个输出端
能将从数据分时送到多个不同的通道上去的逻辑电路称为「数据分配器」,相当于多输出的单刀多掷开关。输入一串通道选择信号,就可以将数据送到对应编码的通道。
数据分配器可用唯一地址译码器实现,将输入信号从
BCD 译码器,能将 8421 BCD 码译成 10 个状态,输出端低电平有效
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
BCD 码之外的 6 个伪码(1010
用发光二极管可以构成显示数字的阵列,常见的 LED 显示器为七段,每一段对应一个发光二极管,用字母 ABCDEFG 来表示
显示器可以分为共阳极和共阴极两种
为了使 LED 显示不同数字,就要为 LED 提供段码(或称字型码),如对于共阴极 LED 显示器,当引脚为高电平时,LED 发光
74HC74511 是一种 CMOS 七段显示译码器,其功能表可以表示为
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
实际上,显示译码器与显示器之间通常使用阻值为
若使用数据分配器,则可以利用人的视觉暂留时间,使多个显示器轮流显示,在人眼看来,所有显示器均显示稳定数字
在
能实现数据选择功能的逻辑电路叫做「数据选择器」(Multiplexer),简称 MUX
最基本的数据选择器就是 2 选 1 数据选择器,由 2 位数据输入端,1 位数据输出端和 1 位选控输入端组成
由 3 个 2 选 1 数据选择器构成 4 选 1 数据选择器,由 4 位数据输入端,1 位数据输出端和 2 位选控输入端
得到逻辑表达式
数据选择器同样可以用来表达逻辑函数,比如说表示
具有
若
若
将数据选择器的每个输入端接在预先写入的数据表上,此时构成了「显示查找表」(Look-up table),简称 LUT。 LUT 的实质是存储器加选择器,可以以真值表的形式实现逻辑函数
在查找表中存放对应的存储单元,即可实现逻辑函数的功能,实现方法就是利用数据选择器表达函数。
74HC151 是一种 8 选 1 集成电路数据选择器,符号为
使能有效后输出表达式为
多根线上的多位数据称为「并行数据」,一根线上分时表示的多位数据称为「串行数据」,控制
对两个数字进行比较,以判断其大小的逻辑电路叫做「数值比较器」。
对于一位数值比较器,有两个输入端,三个输出端,分别为
真值表可以表示为
0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 1 |
输出表达式为
用一位数值比较器设计多位数值比较器的原则,若高位
1 | 0 | 0 | ||
0 | 1 | 0 | ||
1 | 0 | 0 | ||
0 | 1 | 0 | ||
0 | 0 | 1 |
其逻辑表达式为
因此可以用一位数值比较器和必要的逻辑门构成两位数值比较器
加法器分为半加器和全加器两种。在两个 1 位二进制数相加时,不考虑低位来的进位的加法器叫做「半加器」,而考虑低位进位的加法器叫做「全加器」,其逻辑符号为
根据半加器的功能描述,可以列出真值表
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
得到逻辑表达式
因此电路如图
全加器需要多一个输入端考虑低位进位,因此其真值表为
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
从真值表得到逻辑表达式并进行化简
因此全加器的内部结构为
也可以由两个半加器构成全加器电路
注意到,对于全加器的
将多个 1 位全加器串行,可以实现多位二进制数的串行进位加法器
串行进位加法器电路简单,但前级产生进位后,后级加法才有效,位数越多,速度越慢
对于进位电路,定义第
定义两个中间变量
每次运算得到
则原来串行进位的进位过程可以表示为
可以发现,随着倍数增加,延迟越来越大。为了改进这个问题,我们希望在输入每位的加数和被加数时,同时获得该位全加的进位信号,而无需等待低位的进位
根据上面分析进位过程的递推式,以三位进位信号为例
对于任意一级进位信号,只需要最多三级延迟
综上,超前进位加法器以增加硬件成本为代价,获得极高的计算速度
对于四位无符号数减法运算,以原码形式输出结果,减法运算可以表示为
分析两种不同情况
设
无符号数减法的最高进位之反表示借位,借位可用于差的符号位扩展,
设
借位为 1 ,即差为负数,因此需对值位求补,得到原码形式的值位,即
组合逻辑电路的行为级描述一般使用
if (condition_expr1) true_statement1;
else if (condition_expr2) true_statement2;
else if (condition_expr3) true_statement3;
...
else default_statement;
for (initial_assignment; condition; step_assignment)
statement;
case (case_expr)
item_expr1: statement1;
item_expr2: statement2;
...
default: default_statement;
endcase