## 第二章 组合逻辑设计回顾
对组合逻辑电路的人工设计方法进行回顾,在6章会讲到如何使用现代方法实现
2.1 组合逻辑与布尔函数
组合逻辑电路的输出可以表示为瞬时输入变量
逻辑电路中的变量为二进制变量–其值为0或1,逻辑电路硬件实现可以采用正逻辑,即用高电平(如5V)表示逻辑1,用低电平(如0V)表示逻辑0;反之也可使用负逻辑
一些常见的逻辑门如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210304101728337.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjcwMTQzNw==,size_16,color_FFFFFF,t_70)
图中还有逻辑门对应的布尔方程,可用于确定在给定输入时的输出函数值
2.1.1 ASIC库单元
逻辑门实际上是晶体管电路实现,采用CMOS工艺,逻辑非门是由,p沟道和n沟道串接而成
输入为低电平时,p沟道器件导通,n沟道器件截止,,输出端电容充电至Vdd;
输入为高电平时,n沟道器件导通,p沟道截止,此时输出端电容对地放电至0。
其他逻辑门可以用上拉与下拉逻辑相同的基本原理实现
2.1.2 布尔代数
逻辑电路中积之和(SOP)和和之积(POS)两种形式的布尔代数法则
表中的变量a表示为a,则该变量的非表示为a’
有其对应的映射关系
2.1.3 狄摩根定律
该定律的作用是将 SOP与POS两者之间的关系进行相互转换
如:
在两个变量的情况下,关系式为:
2.2 布尔代数化简定理
2.3 组合逻辑的表示
组合逻辑的三种常用表示方法:
1)结构化(即门级)原理图;
2)真值表;
3)布尔方程。
2.3.1 积之和表示法
逻辑变量的乘积构成一个与项,其中的逻辑变量可以是原变量形式也可以是反变量形式。
2.3.2 和之积表示法
布尔函数也可以用和之积的形式
2.4 布尔表达式化简
积之和形式的表达式表达在硬件上就是二级 与-或形式的逻辑的实现
布尔表达式化简有四种方法:
①手工作图法,即借助卡诺图表示函数相邻性(手工法仅适用于输入变数不超过6个的函数);
②奎恩-麦克罗斯基(Quine-McCluskey)化简算法;
③布尔化简法(手工方法)巧妙的运用描述布尔变量关系的定理来寻找更简单、等价的表达式;
④将布尔化简法中所使用的定理嵌入到如Espresso-II 和 mis-II 等现代综合工具中。
2.4.1 异或表达式的化简
例2.22
可化简为:
用硬件实现时需要一对二输入异或门
2.4.2 卡诺图(积之和形式)
适用于5个或6个变量的布尔函数的图形化或形象化表达形式
一个四变量的卡诺图可以表示出16个可能的顶点
卡诺图化简逻辑函数的步骤如下:
1)确定所有的主质蕴含项,在需要时可以包括任意项;
2)利用质蕴涵项对图中剩余的1(不考虑任意项)形成覆盖
一般而言,质蕴涵项的覆盖集不是唯一的
构造最小覆盖的步骤如下:
1)选择一个没有被覆盖的最小项;
2)标记该最小项的所有逻辑相邻的1格或X格;
3)覆盖该最小项以及与其相邻的1格或X格的单个项(不一定是最小项),就是一个必需的质蕴涵项。将该项添加到主质蕴涵项的集合中。
重复步骤(1)直到选出所有的主质蕴涵项
2.4.3 卡诺图(和之积形式)
用找卡诺图中覆盖0的最小项的方法,可以得到一个布尔表达式的最简和之积表达式,然后在用狄摩根定律处理所得到的结果
2.4.4 卡诺图与任意项
任意项用于表示输入不可能出现或者输出不会发生的情况,一般原则:
当覆盖任意项会对表达式做更进一步化简时,才会用到任意项。
2.4.5 拓展的卡诺图
利用拓展的卡诺图求一个布尔函数最简表达式的过程如下:
1)找出扩展变量不为真(取值为0)时的最小覆盖;
2)对每一个扩展变量而言,分别找出将卡诺图中所有1变为x且其他所有拓展项置为0后,所得到的最小和再与该拓展变量之积。
2.5 毛刺与冒险
在输入信号未发生变化时,输出信号也会发生变化
非预期的瞬态变化称为“毛刺”
当在输入某些信号时产生毛刺现象就称为“冒险”(hazard)
同时冒险又分为1冒险和0冒险
2.5.1 静态冒险的消除(积之和形式)
电路发生1冒险的条件:
1)有一个输出保持为已确定值(例如在输入信号改变之前和之后,其值均为1)
2)在输出积之和表达式中,由信号初始值确定的乘积项与由信号的最终值确定的乘积项不相同
3)由信号的初始值和最终值确定的乘积项没有被相同的质蕴涵项所覆盖
输入信号初始值和最终值确定的输出乘积项被相同的质蕴涵项覆盖,便解决了1冒险问题
2.5.2 消除两极电路静态冒险的小结
两级电路消除静态1冒险的方法如下:
1)用质蕴涵项覆盖函数积之和形式的卡诺图中相邻单元的所有1格;
2)根据需要增加冗余质蕴涵项来完成函数的覆盖。
2.5.3 多级电路中的静态冒险
与两级电路相似,多级电路也会受到静态冒险影响,但不能将多级电路的输出写成具有两极逻辑的积之和或者和之积的表达形式。
2.5.4 消除多级电路静态冒险的小结
消除多级电路中的静态冒险步骤:
- 将多级逻辑分解为积之和形式,从而得到瞬时输出函数ftof;
- 覆盖ftof 卡诺图中每一组相邻的1格,形成无静态1冒险的函数f1;
- 对函数f1应用狄摩根定律并用布尔关系进行化简(将各个变量及其反变量作为独立变量对待);
4)覆盖任意一组相邻0格,形成积之和形式的函数f0。如果所得到的表达式不含有变量及其反变量的与项,则该表达式将不存在静态1冒险和静态0冒险。
2.5.5 动态冒险
原本期望输出在达到预期值之前发生一次变化,实际上,输出却在达到预期值之前发生两次或多次变化
消除动态冒险的方法:
1)将多级电路变换成两级形式;
2)检查并消除所有的静态冒险。
2.6 逻辑设计模块
组合逻辑电路可以构成各种各样的电路功能和结构
2.6.1 与非-或非结构
利用狄摩根定律,将积之和表达式描述电路变换仅由NAND门组成电路非步骤如下:
1)用NAND门代替原与-或结构中的AND门;
2)在OR门的输入端设置取反符号:
3)在OR门的输入端需要匹配取反符号的位置插入与非门;
4)用NAND门代替在输入端带有取反符号的NOR门。
和之积形式的电路也可以通过几个步骤变换为仅由NOR门组成的等价电路的处理过程:
1)用NOR门代替OR门;
2)在AND门的输入端设置取反符号;
3)在AND门输入端需要匹配取反符号的位置插入非门;
4)在NOR门替代在输入端带有取反符号的NAND门。
2.6.2 多路复用器
multiplexer电路常用于控制数据通过计算机和其他数字系统的功能单元
多路复用器可以用于实现组合逻辑,可以将布尔函数的赋值给多路复用器的输入端,并用选择线进行译码
2.6.3 多路解复用器
2.6.4 编码器
减少系统中数据通道数目的作用
2.6.5 优先编码器
允许多个输入位同时为真,并利用优先权规则形成一个输出位组合,客户机-服务器系统中优先编码器会在多个请求服务的客户机中识别出优先权最高的客户机
2.6.6 编码器
在计算机指令中提取操作码,行列地址译码器有所不同
2.6.7 优先译码器
优先译码器可以用于多个输入码字可能存在竞争的应用场合
速度有些小慢!加油!克服拖延