type
status
date
slug
summary
tags
category
icon
password
2.1 逻辑代数的基本概念
2.1.1 逻辑代数的三种基本运算
2.1.1.1 逻辑代数的定义
定义:逻辑代数L是一个封闭的代数系统,它由一个逻辑变量集K、常量0和1以及“逻辑与(乘)”、 “逻辑或(加)”、“逻辑非(反)”三种基本运算所构成,记为: L={ K , + , · , - , 0 , 1 }
2.1.1.2 逻辑代数的三个基本运算
- 与运算
- 与运算的定义:某个事件受若干个条件影响,若所有的条件都齐备,该事件才能成立,这样的逻辑关系被称为逻辑乘(与)。
- 与门
- 或运算
- 或运算定义:一个事件的成立与否有许多条件,只要其中一个或几个条件成立,事件便成立,这样的逻辑关系被称逻辑加(或)
- 或门
- 非运算
- 非运算定义:一个事件的成立取决于条件的否定,即事件与事件的成立条件之间构成矛盾,这样的逻辑关系称逻辑反(非)。
- 非门
2.1.2 逻辑函数及逻辑函数间的相等
2.1.2.1 逻辑函数的定义
一个函数为逻辑函数有两个条件:
- 逻辑变量和逻辑函数的取值只有0和1
- 函数和变量之间的关系由“与、或、非”三种基本运算决定
逻辑函数的标准定义为:
设某一逻辑电路的输入为A1A2……An,输出函数为F,当A1A2……An的值确定之后,F的值就唯一的确定了,则称F为A1A2……An的逻辑函数。记为: F=f(A1A2……An)
2.1.2.2 逻辑函数的相等
- 判断逻辑函数相等的定理:设有F1=f1(A1A2……An)、F2=f2(A1A2……An)如果对应A1A2……An的任一组取值,F1和F2的值都相等,则称F1和F2相等。计为F1=F2 。
- 判断逻辑表达式相等的方法
- 列表法(真值表)
- 利用逻辑代数的公理、定理和规则证明
2.1.3 逻辑函数的表示方法
- 真值表:主要用于直观的观察变量和函数之间的关系
- 逻辑函数表达式:主要用于获得逻辑电路图
- 卡诺图:主要用于逻辑函数化简
- 时序图、时间图:主要用于工作波形图
2.2 逻辑代数的基本定理和规律
2.2.1 逻辑代数的基本定理
2.2.1.1 公理
2.2.1.2 公式
2.2.1.3 交换律
2.2.1.4 结合律
需要注意的是,与运算和货运算的优先级不同,因此这里使用结合律的时候不能在一个既有与运算又有或运算的逻辑表达式中随意使用结合律
2.2.1.5 分配率
从这个加法分配率中也能看出来与运算的优先级是比或运算高的
2.2.1.6 摩根率
同样需要注意的是,使用摩根律的时候也需要考虑与运算和或运算的优先级关系
2.2.1.7 其他常用公式
这几个公式都比较重要,在使用代数方法进行逻辑表达式化简的时候需要经常使用。
吸收率比较好理解,脑子里只需要有韦恩图就好了。
而对于消去律,可以先使用冗余律添加一项之后(以第一个公式为例,就是添加一项B),然后再使用吸收率就好了
而对于冗余律,可以将多余的项拆分之后,再使用吸收律化简即可。
2.2.2 重要规则
2.2.2.1 代入规则
任何一个含有变量A的逻辑等式,如果将所有出现A的位置都代之以同一个逻辑函数F,则等式仍然成立。
通过代入规则可以得到摩根率的一般形式
2.2.2.2 反演规则
- 求反函数的方法:使用反演规则时,应注意保持原函数式中的运算符号的优先顺序不变。另外不属于单个变量上的反号应保持不变。
需要注意的是求反和对偶的差距就是变量没有取反(求反需要将变量取反,对偶不需要将变量取反)
2.2.2.3 对偶规则
- 求对偶的方法:
再次提醒,对偶规则中不会对变量取反(同样不在单个变量上的反号不能去掉)
- 对偶规则的作用
- 若一个定理是正确的,则其对偶式也一定正确。
- 若两个逻辑式相等,则它们的对偶式也相等。
- (F’)’=F:即对对偶式再求对偶就得原函数本身
这个作用好像可以通过第二个作用推导吧
2.2.3 复合运算
这里主要是记住每种运算的国标符号
- 与非门:即两个变量先做与运算之后再进行非运算
- 或非:即两个变量先进行或运算之后再进行非运算
- 与或非:在四个变量的情况下,先两两一组做与运算,然后再对两个输出进行或运算,最后将输出取反
2.2.3.1 异或运算与同或运算
- 异或运算
这里主要是记一下异或运算的符号
异或门的国标符号:
- 同或运算
同或门的国标符号:
有一个结论比较好玩:偶数个变量的异或和同或是互反的,奇数个变量的异或和同或是相同的。 所以不要因为门电路上同或门比异或门多一个圈圈就认为同或和异或任何时候都是相反的
- 异或与同或的基本运算公式
交换律结合律和四则运算中的没有区别。唯一需要注意的是,异或运算的分配律中的“A”与后面的异或式是相与的关系。而同或运算的分配律中的“A”与后面的同或式是相或的关系
这个因果互换律之前也用的比较少,需要稍微记一下
这个常用式子感觉没什么必要背,自己写两个异或(同或)式就可以找到规律了。稍微记一下异或是检查“1”的个数,而同或是检查“0”的个数
2.2.4 正逻辑与负逻辑
2.2.4.1 正逻辑与负逻辑的概念
- 正逻辑:如果把门电路的输入、输出电压的高电平赋值为“1”,低电平赋值为“0”,这种关系称为正逻辑关系
- 负逻辑:如果把门电路的输入、输出电压的高电平赋值为“ 0”,低电平赋值为“ 1”,这种关系称为负逻辑关系
2.2.4.2 正逻辑与负逻辑的等价关系
从上面可以看出对同一电路而言,正逻辑和负逻辑所对应的功能是互为对偶的。
这里还有一个比较有意思的点,就是负逻辑在电路图上的表现形式:
就是在输入输出端打上一个半三角符号
2.3 逻辑函数表达式的形式与变换
2.3.1 逻辑函数表达式的基本形式
- 标准式的定义:n个变量组成的函数式,其中每个变量在函数式的每一项中都必须以原变量或反变量的形式出现且仅出现一次。
- 标准与或式(最小项和式):
- 标准或与式(最大项积式):
2.3.2 逻辑函数的标准形式
2.3.2.1 最小项
- 最小项的定义:如果一个具有n个变量的函数的积项包含全部n个变量,每个变量都以原变量或反变量的形式出现一次,则这个积项称为最小项。
- 最小项的编号:在最小项中,将积项中的原变量看作1,反变量看作0,然后对最小项进行编号
- 最小项的性质
- 在输入变量的任何一种取值下,必有一个最小项且仅有一个最小项的值为1
- 任意两个不相同的最小项的乘积为0
- 所有最小项的和为1
- 任一个n变量的最小项,都有n个逻辑相邻的最小项
2.3.2.2 最大项
- 最大项的定义:如果一个n个变量的函数的和项包含全部n个变量,且每个变量都以原变量或反变量的形式出现一次,则这个“和”项称为最大项
- 最大项的编号:在最大项中,将和项中的原变量看作0,反变量看作1,用Mi 的方式编号
- 最大项的性质
- 在输入变量的任何取值下,有且仅有一个最大项的值为0
- 任意两个最大项之和为“1”
- 所有最大项的积为“0”
- 相同编号的最大项与最小项互为反函数
无论是最大项还是最小项,他们的角标都是对应的二进制数,如M2和m2在使用真值表时,都是对应第三行,只不过如果第三行是0,就是M2;若第三行是1,就是m2。
通过这个规律能推出来,(这里仅仅给一个例子)如果一个三变量逻辑表达式F为M1、M4、M7的积,那么其同时能被表示为m0、m2、m3、m5、m6的和,这是能直接从真值表上观察出来的。
2.3.3 逻辑函数表达式的转换
“逻辑函数表达式的转换”,即将任意形式的表达式转换成“最小项之和”及“最大项之积”的形式
与其说是“逻辑函数表达式的转换”,不如说是逻辑函数表达式的标准化
2.3.3.1 代数转换法
- 将逻辑函数表达式转换为“最小项之和”的形式。具体步骤如下:
- 将函数式变换成一般“与或”表达式
- 反复将“1”进行拆分,将表达式中所有非最小项的“与项”扩展成最小项
也就是这个与或式中的项不全是最小项
- 将逻辑表达式转换为“最大项之和”的形式。具体步骤如下:
- 将函数表达式转换成一般“或与”式
- 反复将“0”进行拆分,将表达式中非最大项的“或项”扩展成最大项
2.4 逻辑函数的化简
2.4.1 公式法化简
- 化简的含义
- 乘积项(或和项)最少
- 每项中变量数最少
- 化简方法
- 公式法
- 卡诺图法
- 列表法
无论题目要求用什么方式化简,都用卡诺图检查一下。甚至如果公式法化简不出来的时候,也可以使用卡诺图先得到结果,然后反推回去。
2.4.1.1 与或式化简
这里主要就是用前面的公式进行化简(主要是冗余律吸收率消去律)
2.4.1.2 或与式化简
对于或与式的化简,可以直接用公理、定理进行化简,也可以先用对偶规则把F的或与式转换成F’的与或式,化简得到F’的最简与或式后,再用对偶规则把F’转换成F的最简或与式。
2.4.2 卡诺图化简法
2.4.2.1 用卡诺图表示最小项
画卡诺图最重要的就是,几何位置相邻的最小项,逻辑上也要相邻
每组需要按类格雷码(即逻辑上相邻)的顺序排列。
这里给出一个例子就能理解了:
- 画卡诺圈的注意事项:
- 一张卡诺图可以理解为一个“球体”,即相对的边也是相邻的(如最左边一列和最右边一列)
- 卡诺图的对角并不直接相邻
这里给出一个更复杂的例子——五变量卡诺图
这里相当于是把右边的图堆叠在左边的图上了,在空间中应该是一个长方体,那么卡诺圈也将升维为卡诺球
2.4.2.2 卡诺图化简法
- 卡诺图化简法基本方法:
- 将最可能多的2^n(n=0,1,2,…)个相邻的、为“1”的格圈在一起,得到一个卡诺圈
- 按(1)将卡诺图中所有的“1”格圈完
- 将所得到的乘积项相加,得到函数的最简与或式。(一个圈一个乘积项)
需要注意的是,如果圈的是“0”格,那么就需要以最大项形式进行表示,即圈“1”时“1”为原变量,“0”为反变量;圈“0”时“1”为反变量,“0”为原变量
- 卡诺图化简法注意事项:
- 任何一个“1”格(或“0”格)可以多次圈用
- 每一个卡诺圈中至少要包含一个独立(新)的“1”格,否则所得到的乘积项是多余的
- 2n个相邻的“1”格圈在一起,必须组成矩形或正方形。
- 卡诺图中的卡诺圈应尽可能的少,尽可能的大。
因此每次圈完卡诺圈的时候最好都检查一遍有没有无效的卡诺圈,如下面这个题:
卡诺圈少,那么最终与或式中的项数会更少;卡诺圈越大,那么最终与或式中某一项所包含的变量就会更少。
2.4.2.3 如何用卡诺图对逻辑函数化简
其实很简单,上面将卡诺图进行化简的时候,说要填最大项或最小项,那么实际上要么使用公式法把逻辑函数标准化,要么就使用真值表(使用真值表就跟直接填入与或项没什么区别),然后再将结果填入卡诺图。
方法有以下三种:
- 把与或式化成标准与或式填入卡诺图
- 把与或式的每一项直接填入卡诺图
上面都是在化简为与或式。同样如果题目给出的逻辑表达式或与式的话,同样也可以使用上面的方式来使用卡诺图进行化简,只需要注意化简或与式的时候是需要向卡诺图中填“0”的,并且填“0”的位置需要满足最大项的逻辑。最后进行化简的时候需要圈“0”。
当然如果对或与式化简不熟悉的话,还可以先将或与式转换为与或式,然后填“1”,剩余的部分就是“0”了(当然需要是没有“d”的情况下)。
- 利用禁止逻辑化简逻辑函数
- 即任何逻辑函数逻辑 加上不属于它的最小项后 再 乘上不属于最小项之非 ,其逻辑功能不变。
也就是先添上一项之后再去掉这一项,以保证禁止项的逻辑是正确的。因此如果要使用禁止逻辑的话,化简之后记得检查一下禁止项的结果是否正确。
(但是实际上这个禁止法好像没有什么用,不如直接画卡诺圈。因为如果使用禁止项的话还需要再使用一些公式进行化简)
当出现一个以上的禁止项之后,补充的禁止项应该使用与或非的形式(如果是最小项的话,即卡诺圈圈“1”),只有这样才能保证所有的禁止项的逻辑输不变
2.4.4 逻辑函数化简中的两个实际问题
2.4.4.1 包含无关最小项的逻辑函数的化简
- 无关项的定义
- 某些变量的取值不会出现
- 某些变量的某些取值对函数无意义
下述条件对应的最小项被称为无关项(约束项),而所有这些约束项之和称为约束条件
可以理解为真值表的输出列存在d。
如果是第一种条件,那么就是非法输入,会导致输出无定义。但是如果是第二种条件,那么就是有效输入,但是输出就是无定义
显然,对逻辑函数而言,为了保证无关项不影响输出,应该保证:约束条件=0
这里相当于是使用了“0”以表示输出无效,这个应该需要跟实际问题相关。
在实际情况下,d既可以被认为是“1”,也可以被认为是“0”
在化简包含无关最小项的逻辑函数时(使用卡诺图化简),画卡诺圈时可以按需将“d”也圈上。
需要注意的是,如果画“1”的卡诺圈将d圈上了,实际上就是相当于人为将这个未定义的值设置为“1”,而卡诺圈外的d就相当于是被人为设置为“0”了。
另外当然可以直接根据约束条件对逻辑表达式进行化简。在第四章中,编码器就是这样处理的。
2.4.4.2 多输出函数的化简
- 衡量多输出函数最简的标准
- 所有逻辑表达式中包含的不同与项总数最少
- 在满足1的前提下,各与项中所含的变量数最少
可以看出多输出函数化简的关键是充分利用各函数间可共享的部分。也就是优先需要考虑共用门电路(因为通过共用一般情况下可以减少门电路的数量,因为可能为了共用会导致需要圈更多的卡诺圈,这也会导致门电路的增加。但是第一个条件很搞的是,他并没有说得很绝对,因此可能需要考虑共用还是不共用,哪种方案最终不同的与项最少),然后再尝试简化所有门电路的输入。
第二章错题
- 作者:Noah
- 链接:https://imnoah.top/article/DigLogic/Chapter2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。