逻辑函数无关项概念辨析

2022-09-05 09:12喻俊淇张华卫王全宇党建武蒋占军
电气电子教学学报 2022年4期
关键词:化简约束定义

喻俊淇 张华卫 王全宇 党建武, 蒋占军

(1. 兰州交通大学 自动化与电气工程学院, 兰州 730070)(2. 兰州交通大学 电子与信息工程学院, 兰州 730070)

“数字电子技术”课程是面向电子信息类专业学生开设的一门专业基础课,该课程逻辑函数非完全描述及非完全描述逻辑函数化简等内容涉及到无关项、约束项、任意项概念。化简具有无关项的逻辑函数时,如果能合理利用这些无关项,一般都可得到更加简单的化简结果。

当前国内国外的教材,大多没有对约束项和任意项在概念上进行区分说明,统一按照无关项进行处理[1-3];部分国内教材将无关项划分为约束项和任意项并举例进行说明[4-5],但所举例子却混淆了约束项和任意项两个概念[4];当前教材定义均从输出端进行区分,约束项和任意项的区别本质上在输入端;教学研究者对这三个概念及定义也存在着争论,发表了一些论文对其进行讨论[6-11]。

“数字电子技术”课程讲授和学习中对逻辑函数化简统一按照无关项进行处理不会有问题,但在解决具体工程应用问题时却需要严格区分无关项是约束项还是任意项,并对约束项进行相应输入限制处理,否则设计出来的电路会发生运行错误,具体参见2.2例2。因此,对约束项、任意项以及无关项概念认识上存在的疑惑,有必要追本溯源讨论厘清。

1 约束项、任意项、无关项定义

国内广泛应用的普通高校教育国家规划教材及高等学校规划教材对无关项的讲解大体分两类。

一类是不做严格区分,类似教材“在真值表内对应于变量的某些取值,函数的值可以是任意的,或者这些变量的取值根本不会出现[1],这些变量取值所对应的最小项称为无关项或任意项。”

另一类进行概念上的区分,类似教材[4]“恒等于0的最小项称为函数的约束项。在输入变量的某些取值下函数值是1还是0皆可,并不影响电路的功能,在这些变量取值下,其值等于1的那些最小项称为任意项。将约束项和任意项统称为逻辑函数式中的无关项。”或教材[5]“输入变量的取值受到限制也称受到约束,它们对应的最小项称约束项;在某些输入变量取值下函数值是1或0并不影响整个电路系统的功能,这些变量取值所对应的最小项称为任意项。约束项和任意项在逻辑函数中统称为无关项。”

不做区分、统一按照无关项概念进行处理和国外的教材一脉相承,国外仅有“don′t-care term”术语,并没有约束项(constraint term)、任意项(arbitrary term)对应术语,和约束项类似术语有forbidden combinations。文献[2-3]在讲述无关项相关内容时没有进行严格区分,并因此在实例讲解时叙述上内涵混乱[2-3]。

Wiki上“don′t-care term”术语词条[12]如下:

In digital logic, a don′t-care term (abbreviated DC, historically also known as redundancies,irrelevancies,optional entries, invalid combinations, vacuous combinations, forbidden combinations, or unused states) for a function is an input-sequence (a series of bits) for which the function output does not matter. An input that is known never to occur is a can′t-happen term.Both these types of conditions are treated the same way in logic design and may be referred to collectively as don′t-care conditions for brevity. The designer of a logic circuit to implement the function need not care about such inputs, but can choose the circuit′s output arbitrarily, usually such that the simplest circuit results (minimization)[12].

从该词条表述并结合该词条中引用的论文(详细见完整词条页面)可以得出,“don′t-care term”包含两种情况,一类是forbidden combinations,另一类是can′t-happen term;结合逻辑电路设计中的具体情况,可知前者对应约束项,后者对应任意项。两者对电路输入的要求不同,因而从概念上对其进行划分是有必要的。

教材[1]中无关项约束项和任意项的关系其实是含糊不清的,表述上将无关项等同约束项,任意项和无关项并列;教材[4]对约束项和任意项的定义内涵基本正确,但仅描述了其表象却没有涉及本质。教材[5]对约束项和任意项的定义内涵正确,阐述举例无误,但其界定是从输出端来区分而且任意项的表述仅描述了其表象。这些都是引起困惑和混淆的原因。

教材[4]“恒等于0的最小项称为函数的约束项”,这是表象(果),其本质(因)是因为约束项“对应的输入值受限制不允许出现,故其对应的最小项等于0”;另外,输入值在违反约束时约束项并不一定等于0,所以不应表述为“恒等于0”。

教材[4]任意项定义和教材[5]任意项定义等价于如下命题逻辑表达:若P是合式公式且为非永真可满足公式,A1,A2,…,An是出现在P中的所有命题变元,假设给A1,A2,…,An以a1,a2,…,an真值指派时不影响P的真假,则变元取值a1,a2,…,an时对应最小项m即为任意项。

分析可知,A1,A2,…,An变元取值a1,a2,…,an的情况完备划分如下:

(1)a1,a2,…,an客观会出现但为保证命题正确不允许出现;

(2)a1,a2,…,an客观会出现且允许出现;

(3)a1,a2,…,an客观不会出现。

在情况(2)下,若变元取值a1,a2,…,an时对应最小项m=0或m=1皆有可能,则(P V m)=0或(P V m)=1皆有可能,而对于任意项m存在P<=>P V m,即输入会影响P的真值;也就是说情况(2)时a1,a2,…,an对应最小项不可能是任意项。而情况(1) 时a1,a2,…,an对应最小项是约束项,所以任意项只可能是情况(3)时a1,a2,…,an对应的最小项,因其对应的输入值客观上不会输入,所以逻辑函数值取0取1皆可,这是任意项“无关”的本质。而情况(2)时a1,a2,…,an对应最小项是P的确定描述项。

论文[9]清晰地说明了无关项中“无关”的物理含义,但对任意项的理解与教材[4]存在同样问题,其中“任意项的数值则是由输入变量的取值决定的,可能等于1,也可能等于0。这里‘任意’的含义只是指在任意项的取值等于1时,函数的输出值是任意的,而不表示任意项本身的取值可以随便取为1或者0”这样的表述存在问题,特别是后一句前后矛盾。由标准与或式和最小项性质可知,在输入变量取值给定的情况下,函数的输出值等于输入变量取值对应的最小项;输入变量取值给定时,如果最小项取值等于1,函数输出值不可能是任意的,只能等于1;反过来,输入变量取值给定时如果函数输出值是任意的,只能说明该输入值对应的最小项取值是任意的。

论文[10]对约束项和任意项能帮助函数化简的原理进行了正确阐述,但该论文将无关项等同于任意项,且没有说明任意项的本质。

论文[11]试图对任意项定义本质进行论证,即证明教材[4]任意项定义后文给出的任意项定义等价。其论点正确,即“任意项对应的输入值客观上不会出现”,但其没有进行逻辑上的证明,且其论文中排除第一种理解的论据不对,具体辨析详见2.3例3。

据上分析,可以分别给出如下文字定义。

约束项:实现某些逻辑功能时,因为具体问题限制,不允许输入变量的某些取值组合出现,则这些输入取值组合对应的最小项称为约束项;

任意项:实现某些逻辑功能时,输入变量的某些取值组合客观上不会出现,则这些输入取值组合对应的最小项称为任意项;

无关项:实现某些逻辑功能时,输入变量的某些取值组合不会影响逻辑功能(即不会改变逻辑函数输出),即组合电路的输出与这些输入取值组合“无关”,这些输入取值组合也称为don′t-care conditions,则这些输入取值组合对应的最小项称为无关项;无关项概念内涵是约束项和任意项的并集。

2 案例说明

为了更好地辨析约束项、任意项和无关项,下面举例进行说明。

2.1 例1

图1中水箱由大、小两台水泵ML和MS供水。水箱中设置了A、B、C三个水位检测元件,水位低于检测元件时输出低电平,水位高于检测元件时输出高电平。现以ML和MS分别表示大小两个水泵的启动控制信号,取值1时表示启动水泵工作,取值0时表示停止水泵工作。试设计大小两个水泵的控制逻辑电路。(来源于教材[4])

图1

分析:

由于不可能出现水位高于C点而低于B和A点,也不可能出现水位高于B点而低于A点的情况。所以,在正常工作情况下,ABC客观上根本不可能取值001、010、011、101,所以这4项输入值组合对应的最小项应为任意项。

正常工作情况下,任意项对应输入值不会出现。非正常情况下呢?例如水位检测元件故障,输出了010,是否意味着任意项概念错误?并非如此!非正常情况下是可靠性范畴需要解决的问题,例如对水位检测元件进行冗余设计或故障-安全设计。

2.2 例2

以逻辑变量A、B、C分别表示一台电动机的正转、反转和停止命令,A=1表示正转,B=1表示反转,C=1表示停止,写出表示电动机正转、反转和停止工作状态的逻辑函数。(来源于教材[4])

分析:

正常下达电机命令时,不可能同时下发正转、反转、停止1个以上的有效命令,所以ABC的有效取值只可能是000(什么命令都不发,维持当前状态直到自动停止)、001、010、100(立即停止)中的某一种,而不能是011、101、110、111中的任何一种。因此ABC命令是一组具有约束的变量,其受到约束的输入值对应的最小项应为约束项。利用约束项化简得到的电路设计如果输入值违反该约束则可能会导致电路失效,此例中如果ABC输入011、101、110、111则电机不能正常工作。教材[4]讲解此例时在电路输入端增加互斥限制电路,确保ABC取值不会违反约束,但不应因此而认为ABC取值011、101、110、111对应的最小项是任意项。换句话说,为了保障电路运行可靠性,对包含约束项的逻辑电路可以在输入端增加限制电路确保输入不会违反约束,但不能因此认为约束项就转变为了任意项,否则约束项和任意项之间便没有明确的界限;另外从定义上分析,ABC互斥限制电路将ABC输入值011、101、110、111导向安全侧,其输入值客观上存在,只是人为地添加了限制,这符合约束项的定义。

2.3 例3

设计一个真值表如下图的二进制七段字形译码器。

分析:

上述观点以此例来证明教材[4]任意项定义包含了两种情况:一是某些输入值会出现但不影响逻辑函数输出,即不影响逻辑函数功能;二是输入值根本不会出现。并认为该例证明了第一种情况存在,其实不然。

表1 七段显示译码器真值表

首先,已经论证输入值不影响逻辑功能的情况,除约束项以外,只能是根本不会出现的输入值,即教材[4]任意项定义内涵实际上只有一种。故教材[4]“因为约束项的取值等于1的输入变量取值是不允许出现的,所以约束项的值始终为0。而任意项则不同,在函数的运行过程中,有可能出现使任意项取值为1的输入变量取值”是错误的表述,原因在于认为任意项定义包含前述的第一种情况。

2.4 例4

按照图2真值表设计逻辑电路,该电路实现BCD码加1。

图2

例1例2因本身与应用场景高度贴合,逻辑问题边界清晰故能直接判断无关项类别。此例没有具体应用场景,设计时可将输入组合1010~1111对应最小项视为无关项,对O8、O4、O2、O1进行化简。在电路具体应用时,视I8、I4、I2、I1输入的具体情况对具体问题的影响来进行处理,如果无关项对应输入组合客观上可能输入但在该具体应用中不允许输入则应视其为约束项防范违反约束,如果客观上不会输入则可视为任意项。

数字电路教学时所涉及逻辑电路缺乏具体应用场景、逻辑问题边界不明确,这是国外教材对无关项不进行严格区分,统一按照无关项进行处理的原因。间接地,导致学生在具体应用时对无关项的理解产生困惑。

3 结语

针对国内外教材在无关项概念上不一致引起的问题,对逻辑函数非完全描述时的无关项、约束项和任意项概念进行辨析,给出直观定义并进行了论证。然后结合具体实例,对无关项、约束项、任意项定义及理解上容易出现的错误进行了分析,具备一定的教学和应用指导意义。

猜你喜欢
化简约束定义
以爱之名,定义成长
严昊:不定义终点 一直在路上
定义“风格”
组合数算式的常见化简求值策略
马和骑师
一类特殊二次根式的化简
适当放手能让孩子更好地自我约束
CAE软件操作小百科(11)
教你正确用(十七)