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

简介: 本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.2节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 逻辑表达式

图2-3展示了用于实现逻辑电路的符号和逻辑门的真值表。与(AND)门、或(OR)门、与非(NAND)门、或非(NOR)门、非(NOT)门在第1章中有过讨论。异或(XOR)门、同或(XNOR)门是有两个输入的逻辑门。当两个输入相同时,异或门的输出为0,反之为1。相反,当两个输入不同时,同或门输出为0,反之为1。异或门、同或门都可以看作一位比较器。与非门、或非门是通用的逻辑门,因为它们可以用来实现任何逻辑表达式。除此之外,实现它们时需要的晶体管更少。在集成电路内部,所有的逻辑实现都是用与非门、或非门实现的。
表2-3展示了有两个变量的函数f,并定义当x = 0且y = 0或者x = 1且y = 1时,f的值为1,当x和y取其他情况下的值时,f的值为0。公式(2-1)是一种表示真值表的布尔表达式,点(“•”)表示与运算,“+”表示或运算,横线表示非运算。
image

image

image

如果取遍了一个逻辑表达式的输入值都能产生出相同的真值表,那么这个逻辑表达式就等价于其真值表。例如,公式(2-1)在表2-3的输入下产生相同的输出,如下所示:
image

公式(2-1)只包含了两个逻辑项•和x•y,它们对应使得f的值为1的输入逻辑。通常,与(AND)运算可以不用任何符号表示(没有“•”),如公式(2-2)所示。
image

2.2.1 乘积的和表达式

当一个布尔表达式的输入满足使其输出信号f = 1的条件时(例如公式(2-2)),该表达式称为乘积的和(SOP)。表达式中的每一项都用每个独立输入条件相与(乘积)的形式给出,因而构成一个乘积项。当一个或者更多的乘积项为1时,函数输出f为1;因此,
f就是乘积项的或(加法)运算的结果。在公式(2-2)中,当x和y都为0时, = 1,或者x和y都为1时,xy = 1,因此f = 1。
一个SOP表达式可以翻译成与其等价的由非门、与门和或门基本逻辑门组成的逻辑电路。与公式(2-2)相对应的电路框图由两级与-或结构组成,不包含非门,如图2-4所示。该电路由7个信号组成:输入信号x和y;输出信号f;中间信号t = ,u = ,g = 和h = xy。两个与门电路生成中间信号g和h,作为或门的输入信号用来产生最终输出f。
image

运用非门、与门和或门来实现一个逻辑表达式比用通用的与非门和或非门实现更直接。
用与非门实现SOP表达式
用与非门代替与-或电路中所有的非门、与门和或门可以生成一个只由与非门组成的等价电路。这种转换基于德摩根定律,如公式(2-3)所示。与非运算符被表示为与门连接一个非门的形式(例如),或非运算符被表示为或门连接一个非门的形式(例如):
image

定律1中的和两个表达式可以生成相同的真值表,所以说它们是等价的。同样,定律2中的和也是等价的。这些定律同样适用于若干个变量。定律1表明了一个有反相输入的或门和一个没有反相输入的与非门是逻辑等价的。定律2表明了一个有反相输入的与门和一个没有反相输入的或非门是逻辑等价的。
考虑图2-4中的与-或电路。电路可以通过以下步骤转换成只有与非门的电路:
1)将一个二输入的与非门的输入连接起来,作为与非门等价的与非门逻辑代替电路中的每一个非门,如下图所示,即。
image

2)在中间信号g和h的两端加入两个非门,如图2-5所示。这个操作并不会影响电路行为,因为两个非门不会改变原始信号的值(例如 = g)。
3)用与非门替换每一个与-非门的电路组合,如图2-6所示;一个与非门等价于一个与门后面跟着一个非门的组合。内部非门在
图2-5中用小圆圈表示。
image

唯一一个没有转换成与非门的是有反相输入的或门。根据德摩根定律1:,这样的逻辑门是和与非门等价的。
4)用与非门代替有反相输入的或门的电路框图如图2-7所示。
图2-7中由与非门组成的电路结构等价于图2-4中的与-或电路结构。另外,下列布尔代数运算得出了一个只有与非运算的SOP表达式:
image

2.2.2 和的乘积表达式

当一个布尔表达式定义了输出信号f的输入条件使得f = 0时,我们称其为和的乘积(POS)。上节中讨论了一个SOP的定义为输出信号的输入条件使得f = 1。POS表达式中的每一项都用每个独立输入条件相或(加法)的形式给出,使得f为0,这样就构成了一个和项;当一个和项为0时,信号f的值为0,这样f就是它所有和项的与(乘积)结果。同一个输出的SOP和POS表达式是等价的,它们有相同的真值表。我们只需要用一种表达式(SOP
或者POS)来描述输出信号即可。然而,SOP表达式比POS表达式更容易从直观上理解。
1.?SOP与POS
下列规则展示了输出f的SOP表达式和POS表达式之间的关系:
规则1:f的POS表达式= 的SOP表达式的补集。
规则2:f的SOP表达式= 的POS表达式的补集。
运用规则1,函数f的POS表达式可由的SOP表达式的补集得到。在真值表中,当f为0时,为1,当f为1时,为0。由于的SOP表达式定义了在输入条件下为1,所以的SOP表达式的补集就是一个定义当输入条件下f为0的POS表达式,如下表所示:
image

这样,可推得:
image

由德摩根定律2,即,得:
image

由德摩根定律1,即,对于每一个逻辑项,得:
image

或者写为:
image

等式中的两个逻辑项和都为和(即OR)项,这两个和项通过与运算组成了一个POS表达式。规则2可用于从的POS表达式推出f的SOP表达式。
另外,f的POS表达式可以由对偶原理得出的SOP表达式:
对偶原理——表达式的对偶表达式为,即与和或运算符号互换,与运算都换成或运算,或运算都换成与运算,但是无论是对偶形式还是非对偶形式,变量名是不变的。
通常,一个布尔代数规则的对偶形式也是合法的布尔代数规则,例如x (y + z) = xy + xz的对偶形式x + yz = (x + y)(x + z)也是合法的布尔代数规则。如果布尔代数规则里含有1或者0,在求其对偶的布尔代数规则时,需将0换成1或者1换成0,例如x + 0 = x就转换成x•1 = x。
通过真值表获得POS表达式的一个简单的方法是首先获得的对偶表达式,然后将其对偶表达式每个变量取反就可获得POS表达式。
?例2-2? 已知的SOP表达式,求g的POS表达式。
image

通过函数的SOP表达式求出f的POS表达式的两种方法可以总结如下:
方法Ⅰ:使用恒等式,然后利用德摩根定律求出。
方法Ⅱ:找出的SOP表示式的对偶形式,然后对每一个变量取反。
图2-8展示了公式(2-4)POS表达式的或-与电路图。和与-或电路图类似,或-与电路图是两级电路且不包括中间的非门。两个并联或门的中间输出将作为与门的输入信号进而产生f的值。
image

2.用或非门实现POS表达式
用或非门替换或与电路中的非门、或门和与门可以产生一个等价的只有或非门的电路。这是基于德摩根第二定律得出的结论。考虑图2-8中的或-与电路。该电路可以通过以下步骤设计成只有或非门的电路:
1)将一个二输入的或非门的输入连接起来,作为与非门等价的或非门逻辑代替电路中的每一个非门,如下图所示,即。
image

2)在中间信号m和n的两端加入两个非门,如图2-9所示。这个操作并不会影响电路行为,因为两个非门不会改变原始信号的值(例如)。
3)用或非门替换每一个或非门的电路组合,如图2-10所示。一个或非门等价于一个或门后面跟着一个非门的组合。

image

唯一没有转变为或非门是有反相输入的与门(用内部非门标记)。根据德摩根第二定律可知这样的表示等同于一个或非门。
image

4)用或非门代替有反相输入的与门的电路框图,如图2-11所示。
image

以下的布尔代数可以表达成只用或非运算的POS表达式:
      image

逻辑项和代表或非项,通过或非运算生成f。概括地说,一个函数的SOP和POS表达式是等价的,且两者都可以生成相同的真值表。所以,SOP表达式用于与非门电路,POS表达式用于或非门电路。

相关文章
|
小程序 数据可视化 机器人
分享72个商务商城PHP源码,总有一款适合你
分享72个商务商城PHP源码,总有一款适合你
1461 3
|
机器学习/深度学习 算法 数据挖掘
Python 图像处理实用指南:6~10
Python 图像处理实用指南:6~10
711 0
|
12月前
|
存储 前端开发 关系型数据库
鸿蒙开发:实现键值数据库存储
对于数据量比较的小的,我们直接选择轻量级的用户首选项方式即可,而对于数据量比较大的情况下,直接可以使用数据库,而对于相对来说,比较大的数据,我们就可以使用键值型数据库方式
327 2
|
4月前
|
JSON 监控 API
抖音视频详情API秘籍!轻松获取视频详情数据
抖音视频详情API是抖音开放平台的核心接口,通过视频ID可获取包括标题、播放量、点赞数、评论等50多个字段,适用于内容分析、竞品监控和广告评估等场景。接口支持HTTP GET请求,返回JSON格式数据,便于解析处理。文中还提供了使用Python调用该接口的示例代码,包含请求发送、认证、响应处理等功能,帮助开发者快速获取视频数据。
|
JavaScript 容器
Vue3折叠面板(Collapse)
该组件提供了一个高度可定制的折叠面板,支持多种属性设置,包括折叠面板数据、激活状态、禁用选项、边框风格、复制功能等,并可通过插槽进行进一步自定义。其丰富的样式控制选项使得面板能够适应各种场景需求。在线预览展示了不同配置下的效果。组件基于 Vue 3 开发,利用 `requestAnimationFrame` 模拟实现动画效果,并集成了按钮等其他自定义组件。
683 1
Vue3折叠面板(Collapse)
|
存储 缓存
02 ROS创建工作空间和功能包
如何在ROS中创建工作空间和功能包,包括初始化工作空间、编译、设置环境变量以及使用`catkin_create_pkg`创建新功能包的步骤。
667 1
|
资源调度 JavaScript 前端开发
|
机器学习/深度学习 算法 搜索推荐
通过元学习优化增益模型的性能:基础到高级应用总结
在当今数据驱动的决策过程中,因果推断和增益模型扮演了至关重要的角色。因果推断帮助我们理解不同变量间的因果关系,而增益模型则专注于评估干预措施对个体的影响,从而优化策略和行动。然而,要提高这些模型的精确度和适应性,引入元学习器成为了一个创新的解决方案。元学习器通过将估计任务分解并应用不同的机器学习技术,能够有效增强模型的表现。接下来,我们将详细探讨如何利用元学习优化增益模型的性能,特别是通过S-Learner、T-Learner和X-Learner这几种估计器。
371 1
|
JavaScript
Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查
这篇文章介绍了在项目中安装和配置Nuxt UI以及TypeScript的步骤。作者在前言中提到考虑了AntDesignVue和Element-Plus,但最终选择了NuxtUI,因为它更适合年轻化的项目,并且与Nuxt兼容。安装Nuxt UI需要执行一系列命令,同时会自动安装一些相关模块。然后,可以在Nuxt应用中使用Nuxt UI的所有组件和可组合函数。此外,还介绍了如何添加图标库和配置TypeScript。
565 0
Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查
|
Ubuntu Windows
ubuntu与windows实现复制粘贴
ubuntu与windows实现复制粘贴
552 0