《数字逻辑设计与计算机组成》一 2.5 逻辑化简算法

2.5 逻辑化简算法

K图化简是一种图形的方式,只能适用于很小数目的变量,例如4个变量的表达式中。当变量数大于4时,在20世纪50年代中期发明的叫作奎因-麦克拉斯基算法的数学方式更合适于表达式化简。这个算法使用比K图更少的步骤来寻找最小逻辑表达式。最小项被划分成不同的集合,每一个集合都只包含一个在二进制表达中有特殊个1的个数的最小项。考虑例2-5中的表达式f (w, x, y, z) = Σ (0, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13)。在二进制中,最小项为0000, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1010, 1100和1101。这些最小项可以分组成下列4个集合:

每一次比较一对最小项,集合1中的一个最小项与集合2中的一个最小项比较。在每一对最小项比较中,一位数字的改变意味着一个蕴含。改变位可以用一条横杠(-)表示,从而省略对应的变量。
例如,集合1中的最小项0000与集合2中的0010比较,可以生成蕴含00 - 0,变量y被省略。最小项0000可以再与最小项0100比较,生成蕴含0 - 00,变量x被省略,等等。这个过程(每一次比较一对最小项)可以用于所有最小项。集合2和集合3,集合3和集合4可以生成用于结果的一个蕴含的集合。初始集合1到集合4标记为表2-4列Ⅰ中的Ⅰ.1到Ⅰ.4。
使用集合Ⅰ.1到Ⅰ.4生成的蕴含列表标记为集合Ⅱ.1到Ⅱ.3,写在表2-4的列Ⅱ中。接下来,对于集合Ⅰ.1到Ⅰ.4中的最小项,如果在列Ⅱ的最小项可以生成一个蕴含,就用一个“x”标记;否则,就用星号(*)标记,识别出一个素蕴含(在这个例子中没有)。当列Ⅱ中的蕴含生成之后,重复之前的步骤;每一次比较一对集合Ⅱ.1和集合Ⅱ.2中的一对蕴含。在这个例子中,在每一对蕴含之间的横杠必须排列起来。
例如,集合Ⅱ.1中的蕴含00 - 0与集合Ⅱ.2中的蕴含10 - 0比较。生成的蕴含写在表中的列Ⅲ下的集合Ⅲ.1和Ⅲ.2。同样,如果列Ⅱ中的蕴含对生成的不是素蕴含,用“x”标记;否则,用星号()标记,在这个例子中没有素蕴含。这个过程在列Ⅲ中重复一次,但是这次,没有更多的步骤可以走了,因为集合Ⅲ.1和集合Ⅲ.2中的蕴含一一比较之后,不能再生成新的蕴含;这样,所有从集合Ⅲ.2和集合Ⅲ.3中产生的蕴含都标记为星号(),与其对应的逻辑项在图2-17中列出。

程序的下一步是要在素蕴含列表a到f用一个最小集合算法来选择基本蕴含。图2-17是素蕴含和它们对应最小项的组织图。如果一个素蕴含包含一个最小项,则在方格中用“x”标记。例如,有两个横杠的素蕴含0 -- 0包含了最小项0 = (0000)2,2 = (0010)2,4 = (0100)2和6 = (0110)2,这些最小项方格中在行1中标记为“x”,如表格所示。

最小集合算法也是一个迭代的过程,最开始在任意列中选择只有一个有“x”标记的素蕴含,这样可以生成一个EPI。在这个例子中,最小项3、10和13相关的列中只有一个“x”标记;这些类似的例子在表格中用粗体和下划线表示出来。
假设在表2-5中从左往右处理最小项。在迭代1中,最小项3相关的列只包含一个“x”,这样对应的素蕴含0 - 1 -可以作为一个EPI,因为其只包含最小项3。它也可以包含最小项2、3、6和7,这样相关的列和行被标记为删除(D),如表格中所示。这个过程可以有效地消掉下一个迭代中表格的规模。在迭代2中,素蕴含- 0 - 0在最小项10相关的列中只有一个“x”标记,我们选择其为下一个EPI。这样,列0、8和10,行2标记为D。最后,在迭代3中,与最小项13相关的素蕴含- 10 -,被选作为下一个EPI,这样则需要删掉表中所有的剩余列,以及EPI = - 10 -对应的行。

当所有与最小项有关的列都删除之后,算法结束。在这个例子中,经过三轮迭代后算法结束,并产生三个EPI,- 0 - 0、0 - 1 -和- 10 -,“迭代”部分对应的行标记为D。EPI生成了最小SOP表达式,在例2-6中,我们使用K图的方法也得到了这个表达式。
如果在最小集合算法过程中,没有发现有一列只有一个“x”标记,以下的规则可以用来选择下一个候选的素蕴含:
1)找到至少有一个“x”标记的列,然后选择其对应的素蕴含作为候选项。
2)在第1)步素蕴含列表中选择那些在剩下的最多最小项的素蕴含(不包括有D标记的列)。
3)如果在第2)步中得到多个素蕴含,选择那个包含横杠最多的素蕴含;其对应的逻辑项应该包含较少变量。
4)如果在第3)步中得到多个素蕴含,则可得到两个或以上的等价最小表达式。
除了在表2-4和表2-5中需要用最大项来替换最小项求最小POS表达式的算法过程也是相似的。
如果一个逻辑电路有多个输出,每个输出的最小表达式通常不会独立地确定。相反,此时化简的目标是选择在不同表达式之间相同的素蕴含,从而可以减少实现多个表达式电路中所需的逻辑门数目。一些逻辑门的输出信号可以被共享和连接为其他逻辑门的输入。Espresso优化软件[1]可以解决需要同时化简多个逻辑表达式的情况。逻辑设计的CAD工具通常包含这个软件和其他化简软件。
化简软件
例2-9展示了用函数f (w, x, y, z) = Σ (0, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13)最小项来进行Espresso操作的输入和输出文件。第一列中的点(•)代表一个参数。例如,“.i 4”表示输入的个数,在这个例子中为4,“.o 1”表示输出的位数,这个例子中为1。标记“.ilb w x y z”列出输入的变量,这个例子中为4个变量;“.ob f”列出输出变量,在这个例子中为1个变量;“.e”表示输入文件的结尾。符号“#”表示一行注释。在输出文件中,“.p”表示EPI的数目。
例2-9 用Espresso化简函数f (w, x, y, z) = Σ (0, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13)。
解:
a)输入文件

b)输出文件:所有注释行首先打印

输出文件列出了3个EPI:- 10 -、- 0 - 0和0 - 1 -。这3个EPI与之前手工步骤求出的相同,在表2-4和表2-5中列出。
下列的Espresso输出列出了两个输出信号f和g的EPI。“11”、“11”和“10”打印在EPI之后,这三个EPI都是属于输出信号f的,而前两个(- 10 -和-0 - 0)是共享的并属于输出变量g。

表2-6展示了表达式f (w, x, y, z) = Σ (1, 9, 14) + Σd (3, 7, 11),运用化简算法后的结果,这个表达式也在2.4.2小节中化简过。在列Ⅰ中,每一个无关项都标记为“d”。之前讨论过的化简算法也是一样的,只是在一对最小项中只能有一个无关项;两个无关项不能进行比较。例如,集合Ⅰ.2中最小项(0011)2和集合Ⅰ.3中的最小项(0111)2,两个都为无关项,不能进行比较来产生素蕴含0 - 11。
算法产生三个素蕴含(以星号为标记),每一个在一行中。表2-7是表2-6运用最小集合算法之后的素蕴含组织表。集合Ⅰ.3素蕴含(1110)2是一个EPI。在剩下的两个素蕴含- 0 - 1和- 001中都包含最小项1和9,由于- 0 - 1有比- 001更多的横杠,所以选择- 0 - 1。这些EPI也可以在例2-10中用Espresso算法实现,输入文件中的横杠(-)代表无关的候选项。

例2-10 用Espresso算法化简f (w, x, y, z) = Σ (1, 9, 14) + Σd (3, 7, 11)。
(a)输入文件

(b)输出文件

时间: 2025-01-24 10:01:06

《数字逻辑设计与计算机组成》一 2.5 逻辑化简算法的相关文章

《数字逻辑设计与计算机组成》一 导读

前 言 Digital Logic Design and Computer Organization with Computer Architecture for Security 编写本书的目的是让读者通过一本教科书全面理解数字逻辑设计和计算机组成.此外,本书还有独立的一章介绍安全的计算机体系结构. 本书涵盖数字逻辑设计的基本原理和Verilog硬件描述语言设计.各个章节分别讨论简单和复杂的组合电路和时序电路的设计方法.本书概述了电路设计的现代工具和方法,而Verilog实例仅用于展示该语言的

《数字逻辑设计与计算机组成》一2.4 逻辑化简

2.4 逻辑化简 在第1章中已经讨论过,以最少的逻辑门以及每个逻辑门以最少的输入来生成输出信号是非常重要的.最小的SOP或者POS表达式包含了最少数目的逻辑项,每一项都是由最少数目的变量组成.图2-12展示了逻辑化简的优点.在这两个例子中,规范表达式的电路实现需要更多的逻辑门,即需要更多的晶体管和电线来实现. 在图2-12中,SOP规范表达式的电路需要4个三输入的与门.3个非门和1个四输入的或门或者总共需要8个与非门实现,包括非门在内,每一个逻辑门至多有4个输入.另一方面,与其等价的最小SOP表

《数字逻辑设计与计算机组成》一 第1章 1.1 简介

第1章 Digital Logic Design and Computer Organization with Computer Architecture for Security 导 论 1.1 简介 计算机.iPad.手机等设备已经引起了一场改变我们生活方方面面的数字革命.所有的数据形式,从数字和文本到音频.图像和视频,都能被表示为由一系列0和1组成的序列.数字系统已经改变了我们的沟通.工作.娱乐乃至购物的方式,并被大量应用于我们所见和所用的一事一物之上.它们也存在于汽车.杂货店结账设备.电

《数字逻辑设计与计算机组成》一 1.2 逻辑设计

1.2 逻辑设计 数字电路即逻辑电路,可以实现一个或多个布尔表达式,而每个布尔表达式均定义了一个或多个输入与单一输出之间的逻辑关系.输入和输出都由布尔变量命名,称为信号,每个信号的值或者为真(T)或者为假(F).公式(1-2)定义了有a.b.c三个输入信号和一个输出信号f的逻辑电路布尔(逻辑)表达式.图1-3a显示了该电路的方框图. 表达式中的AND.OR和NOT为布尔逻辑运算符.晶体管构成的逻辑门用于实现每一种布尔运算符.现代集成电路使用数百万个逻辑门实现处理器这类复杂的逻辑电路.当两个输入都

《数字逻辑设计与计算机组成》一2.9 实现

2.9 实现 现代数字电路设计师依靠CAD工具来将设计模型翻译成实现数据.数字设计CAD工具将数字电路的描述综合(翻译)成优化过和对技术依赖的门级描述,称为网表.特定用途的集成芯片(ASIC)和FPGA都是非定制IC技术的例子.处理器芯片是典型的定制IC技术的例子.电路可以用框图表示,也可以用HDL语言描述,或者同时使用这两种方法描述.然而,现代CAD工具需要将电路描述成HDL语言. 2.9.1 可编程逻辑器件 可编程逻辑器件(PLD)是预制的,即不包含任何制造缺陷的封闭现成设备.它们可以被编程

《数字逻辑设计与计算机组成》一 1.3 计算机组成

1.3 计算机组成 逻辑设计要解决的是关于电路描述.综合.最小化和仿真的相关问题,而计算机组成则研究电路部件及其物理关系,这些部件构成处理核心(CPU).处理器.存储器.I/O设备控制器和接口,这些模块相互连接就构成计算机.例如,图1-1中的寄存器文件.加法器.乘法器和选择器组成一个数据通路.控制单元和数据通路(通过一系列控制信号)组合成所需的运算单元,可以产生两数之和或其乘积.两个内部组织不相同的CPU可以执行同一指令系统的指令.例 如,32位Intel和AMD处理器可以执行同一指令系统的指令

《数字逻辑设计与计算机组成》一 第3章 3.1 简介

第3章 Digital Logic Design and Computer Organization with Computer Architecture for Security组合电路:大型设计 3.1 简介 在前一章中介绍的设计技术只适用于很少输入数目的组合电路.有很多输入的组合电路必须以不同的方式设计.例如,考虑有n = 32个输入的组合电路.其真值表可能会有超过40亿行--对于第2章介绍的设计电路方法来说,这个数目特别巨大.再有,大型电路肯定会遇到设计扇入和扇出的需求.这就要求一种自顶

《数字逻辑设计与计算机组成》一3.6 算术逻辑单元

3.6 算术逻辑单元 ALU包含在所有的处理器中,且不仅可以进行整数运算,还可以进行位逻辑函数运算,例如按位与.按位或.ALU可以用在整数运算和逻辑指令的执行中.?例3-7? 设计一个n位.包含7种函数的ALU,使其可以完成加法.减法.增一.减一和按位与.按位或和按位非运算.3位函数码F = f2?f1?f0用于选择ALU操作,如表3-4所示.在运行算术操作(F = 0.1.2或3)时,ALU也可以输出溢出信号ovf.F = 7不用于这个设计中,当选择操作时,ALU可以运行一个未知操作.稍后将讨

《数字逻辑设计与计算机组成》一2.3 规范表达式

2.3 规范表达式 当一个逻辑表达式中每一个逻辑项都包含了所有的输入变量或者其反相,那么这个表达式就称为规范表达式(简称范式).例如,二变量函数是一个SOP范式.两个乘积项中都包含变量x和y或者它们的反相形式.同理,二变量函数是一个POS范式.非规范表达式中可以包含一个或者多个不包含所有变量的逻辑项.例如,三变量SOP表达式 就不是一个范式,因为逻辑x项少了z和,逻辑项z少了y和.一个给定的非规范SOP表达式或者非规范POS表达式可以是或者不是极小的:然而,它可以先转换成等价的范式,然后用以下的