《逻辑与计算机设计基础(原书第5版)》——2.1 二值逻辑和逻辑门

2.1 二值逻辑和逻辑门

数字电路是对二进制信息进行处理的硬件电路。硬件电路由晶体管通过复杂的连接来实现,由晶体管及其连接构成的复杂的半导体器件称为集成电路(integrated circuit)。每一种基本电路称为一种逻辑门(logic gate)。设计中为简单起见,我们把直接用晶体管来实现的电路视为逻辑门,设计者不必关心门电路的内部结构,只需要知道其外部的逻辑特性即可。每种逻辑门都执行特定的逻辑操作。一些逻辑门的输出与另外一些逻辑门的输入相连,这样就可以构成一个数字电路。
为了描述数字电路的工作特性,我们需要引入一种数学方法来描述每一个逻辑门的工作,进而可以用来分析和设计逻辑电路。这种二值逻辑系统是一种数学系统,它通常称作布尔代数(英国数学家乔治·布尔在1854年所著的书中介绍了这种逻辑的数学理论)。我们即将学习的这种布尔代数可以用来描述数字门电路的连接关系,通过使用布尔函数表达式来设计逻辑电路。我们将首先介绍二值逻辑的概念、二值逻辑与数字门电路和二值信号之间的关系,然后再给出布尔代数的性质,还包括其他一些在逻辑电路设计中有用的概念和方法。
2.1.1 二值逻辑
二值逻辑论述的是二值变量以及对这些变量所施加的数学逻辑运算,逻辑变量取两个不同的离散值。这两个值就像1.1节中所提到的那样,可以用不同的名字来命名。但为了方便,我们通常把一个变量的取值指定为1或0。在本书的第一部分,变量用大写字母来表示,例如A、B、C、X、Y和Z,以后变量可以扩展到用包含字母、数字和特殊字符的字符串来表示。与二值变量相关联的基本逻辑运算有三种,分别称为与(AND)、或(OR)和非(NOT):
1)与运算。与运算的符号可以用点表示或者什么符号也不用。例如,Z=X·Y或者Z=XY,读作“Z等于X与Y”。与运算逻辑操作的意思是:若X=1且Y=1,则Z=1,除此以外Z=0。(请记住,X、Y、Z都是二值变量,其取值仅为0或1。)
2)或运算。或运算的符号可以用加号来表示。例如,Z=X+Y,读作“Z等于X或Y”。或操作的意思是:若X=1或Y=1,或X=Y=1,则Z=1,仅当X=0且Y=0时Z=0。
3)非运算。非运算的符号可以用在变量的上面加一横来表示。例如,Z=X,读作“Z等于X非”,意思是Z等于X的取反值。换句话说,当X=1时Z=0,X=0时Z=1。非运算也可以称为取反(complement)运算,就是将1变为0或者将0变为1。
二值逻辑类似于二进制运算,与运算和或运算与乘法和加法相似,这就是与运算和或运算的符号与乘法和加法的符号一致的原因。然而,二值逻辑不应该与二进制运算相混淆,大家应该明白算术变量可以是一个包含许多数字的数,而逻辑变量只能是1或0。下面的式子是逻辑或运算的定义:
0+0=0
0+1=1
1+0=1
1+1=1
除了最后一个式子之外,其他式子都与二进制加法类似。在二值逻辑中,1+1=1(读作“1或1等于1”),但是在二进制运算中,1+1=10(读作“1+1=2”)。为了避免歧义,符号∨有时用来代替或运算中的+符号。但是,只要二进制运算和逻辑运算不混淆,都可以用+来表示各自的含义。
下面的式子是逻辑与运算的定义:
0·0=0
0·1=1
1·0=1
1·1=1
这种运算与一位二进制数乘法相同。可以用和来分别代替与运算符(·)和或运算符(+),这两个运算符在命题演算中分别表示连接和断开运算。
对于每一种二进制变量的组合,例如X和Y,都会根据逻辑运算的定义得到变量Z的值,这个定义可以在真值表中以简洁的方式列出。真值表(truth table)就是将二进制变量的组合和运算的结果通过表的形式表示出来。与门、或门和非门的真值表如表2-1所示,可以从中看到二进制变量的所有组合和所得到的结果,它们清楚地解释了三种运算的定义。

2.1.2 逻辑门
逻辑门是一些处理一个或多个输入信号,产生一个输出信号的电子电路。数字系统中的电压或电流信号呈现为两种可识别的值。在电压型逻辑电路中,两个不重叠的电压范围分别表示逻辑1和逻辑0,图2-1已经举例对此进行了说明。在逻辑电路的输入端输入允许范围内的二进制信号,输出端就会得到相应范围内的二进制信号。两种范围之间的中间范围只有在信号由1到0或者由0到1变化时才会出现,这种变化称为过渡(transition),中间范围则称作过渡范围(transition region)。
图2-1a所示的是与门、或门和非门电路的图形符号,这些门电路都由电子线路组成,输入相应的逻辑1和逻辑0后得到的输出结果与真值表所示的结果相一致。与门和或门的两个输入信号X和Y有4种可能的组合:00、01、10和11,这些输入信号与每一种门所对应的输出信号以定时图的方式表示在时序(见图2-1b)中。定时图(timing diagram)的横轴代表时间,纵轴代表高低电平之间的变化,低电平表示逻辑0,高电平表示逻辑1。当与门的输入信号都为逻辑1时,输出信号必然为逻辑1。当或门的输入信号中任意一个为逻辑1时,输出信号为逻辑1。非门通常称为反相器(inverter),其原因可以清楚地在定时图中从其响应看出,输出信号是对输入信号X的取反。
除了功能外,每一个逻辑门还有另一个称为门延时(gate delay)的重要特性,它是输入信号变化引起输出信号相应变化所需要的时间。根据实现逻辑门所使用的技术,门延迟的长短可能与哪一个输入信号发生变化有关。例如,对于图2-1a中所示的与门,两个输入都为1,输入X变为0时的延时可能比输入Y变为0时的延时要长。同样,输出结果由0变到1时的延时比由1变到0时的延时可能要长,反之亦然。这里所举的例子都较简单,这些变化可以忽略,延时大小仅用一个tG来表示。每种门电路的延时都不一样,这与输入端的个数、制作工艺和设计方法有关。在图2-1c中,与门电路的输出结果考虑了延时tG的影响,输出波形的变化与引起它改变的输入X或Y的变化相比晚了tG单位时间。当门电路组合成逻辑电路时,每条通路从输入到输出的延时是这条通路上所有门延时的时间之和。在2.7节中,我们将通过一个更加精确的模型来继续讨论门电路的延迟问题。
与门和或门可以有两个以上的输入端,三输入的与门和六输入的或门如图2-2所示。当三输入与门的输入信号都为逻辑1时,输出为逻辑1;而当任何一个输入信号为逻辑0时,输出就为逻辑0。当六输入或门的任何一个输入信号为逻辑1时,输出为逻辑1;仅当所有的输入都为逻辑0时,输出才会为逻辑0。
自从布尔函数可以用与、或和非运算来表示,用与门、或门和非门来实现一个布尔函数就成了一种直截了当的方法。然而,我们发现,考虑具有其他逻辑运算功能的门电路有着更实际的意义。当构建其他类型的门电路时,我们需要考虑这样一些因素:例如,用电子元器件实现的可行性和经济性,单独或者与其他门结合共同实现布尔函数的能力,以及表示常用逻辑函数是否方便。这一节将介绍这样一些其他类型的门,它们将贯穿于本书的其余部分。将这些门应用到电路中的一些技术将在3.2节介绍。

图2-3给出了大多数常用逻辑门类型的图形符号和真值表。虽然图2-3中所示的逻辑门除反相器之外,每个只有两个二进制输入变量X和Y、一个二进制输出变量F,但实际上它们都可以有两个以上的输入。图中显示的各种不同形状的符号和图中没有显示的一些矩形符号,在电子电气工程师协会(IEEE)的《逻辑函数图形符号标准》(IEEE Standard 91-1984)中均有详细说明。与门、或门和非门已经进行过定义。非门电路通过对一个二进制信号进行逻辑取反来表示求补操作,这样的电路通常称为反相器(inverter),而不是非门。反相器输出端上小圆圈的正式名称为否定指示器(negation indicator),表示逻辑取反,我们平时称它为“泡泡”。
与非门表示对与运算的取反,或非门表示对或运算的取反,它们各自的名字分别是与非和或非的简称。与非门和或非门的图形符号分别由与门符号和或门符号在输出端加一个表示取反运算的泡泡组成。在当今的集成电路技术中,与非门和或非门因其形式最简单、速度最快而自然成为最基本的门类型。如果我们将反相器认为是只有一个输入端的退化的与非门和或非门,则与非门或者或非门可以单独地实现任何布尔函数。因此,逻辑电路中这两种类型的门比与门和或门使用更广泛,实际的电路也经常采用这两种类型的门来实现。

图2-3 常用的逻辑门
一种可以独自实现所有布尔函数的门类型叫做通用门(universal gate),并称它们是“功能完全的”。为了说明与非门是通用门,我们只需要证明与、或和非运算都可以仅用与非门来实现即可,如图2-4所示。一个一输入的与非门的作用相当于一个反相器。事实上,一输入的与非门是一个无效的符号,应该用非门符号来替代,就像图中所示的那样。与运算要用一个与非门后面接一个非门来实现,非门将与非门的输出取反,最后得到与运算的结果。如果在与非门的每个输入端都加上非门则可以实现或运算。若应用德摩根定理,则取反操作会被取消,并产生或函数的结果,这一点将在2.2节详细讨论。

另外两种常用的门是异或门(XOR)和异或非门(XNOR),我们将在2.6节对它们进行详细介绍。图2-3中所示的异或门和或门相似,除了(值等于0)X和Y都等于1的这个组合外。异或门的图形符号和或门的符号相似,只是异或门在其输入端有额外的弧。异或用特殊的符号来表示其操作,异或非是对异或取反,用在异或门图形符号的输出端加小泡泡来表示。这些门指示它们的两个输入是否相等(XNOR)或不相等(XOR)。
2.1.3 用硬件描述语言表示逻辑门
尽管用基本逻辑门构成的原理图足以用来表示小型电路,但用它们来设计更为复杂的数字系统是不实际的。在当代计算机系统设计中,硬件描述语言已经成为一种自然的选择。因此,本书先讲解硬件描述语言。首先,我们介绍这类语言的用途。然后,简要地介绍一下VHDL和Verilog,它们是这类语言中最为流行的。这一章的末尾和第3章与第4章将详细讲解这两种语言,虽然在任何课程中我们都只希望介绍两种语言中的一种。
硬件描述语言类似于程序设计语言,但是它特别适合描述硬件的结构与行为。这种语言明显地不同于典型的程序设计语言,因为它能表示大量的并行操作,而不像大部分程序设计语言那样表示串行操作。硬件描述语言的一个明显应用是作为原理图的一种替代工具。当语言根据原理图来描述电路的实现时,这种方法称为结构描述(structural description)。在这种描述中,语言描述了组件的相互连接。这种结构描述也称为网表(netlist),可像原理图一样在逻辑模拟器中作为输入。在这种描述中,每个基本模块的模型需要事先设计好。如果使用硬件描述语言,那么这些模型也可以用硬件描述语言来编写,以便为模拟输入提供一种更为统一、便捷的表示。在本章中硬件描述语言主要用来描述结构模型。但是,正如我们在本书的后面将要看到的那样,硬件描述语言可以表示的远比低级行为多得多。在当代数字设计中,用硬件描述语言描述的高抽象层次的模型,可以自动地综合成已经优化的可行硬件。
我们从表示结构模型的特点开始,对硬件描述语言进行初步介绍。表2-2给出了Verilog为图2-3中的常用逻辑门而内建的Verilog原形。每一个原形声明包括一个关于它的输入和输出信号的列表,表中第一个信号是门的输出,剩下的信号是输入。对于非门,它只有一个输入,但对于其他门,可以有两个或多个输入。在Verilog中,门原形可以连接在一起构成逻辑电路的结构模型。VHDL没有内建逻辑门原形,但是它有逻辑运算符,可以用来对表2-3中所示的基本组合门进行模型化。Verilog也有逻辑运算符,可以用来对表2-4所示的基本组合门进行模型化。第3章和第4章将介绍一些必要的细节,以便利用这些门原形和逻辑运算符来创建可以完全模拟的模型,在这里介绍它们只是想说明硬件描述语言是逻辑电路表示的另一种方式。对于小电路,用逻辑函数、真值表或原理图描述输入/输出关系也许清晰和方便,但是对于大型的更复杂的电路,硬件描述语言通常更适合。

时间: 2024-09-08 07:23:24

《逻辑与计算机设计基础(原书第5版)》——2.1 二值逻辑和逻辑门的相关文章

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

《机器学习与R语言(原书第2版)》一 第2章 数据的管理和理解

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.1节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 第2章 数据的管理和理解 任何机器学习项目初期的核心部分都是与管理和理解所收集的数据有关的.尽管你可能发现这些工作不像建立和部署模型那样令人有成就感(建立和部署模型阶段就开始看到了劳动的成果),但是忽视这些重要的准备工作是不明智的.任何学习算法的好坏取决于输入数据的好坏.

《机器学习与R语言(原书第2版)》一1.3 机器如何学习

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第1章,第1.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 1.3 机器如何学习 机器学习的一个正式定义是由计算机科学家Tom M. Mitchell提出的:如果机器能够获取经验并且能利用它们,在以后的类似经验中能够提高它的表现,这就称为机器学习.尽管这个定义是直观的,但是它完全忽略了经验如何转换成未来行动的过程,当然学习总是说起

《面向对象的思考过程(原书第4版)》一2.3 尽可能提供最小化的用户接口

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第2章,第2.3节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 2.3 尽可能提供最小化的用户接口 当设计类时,通用规则是尽量不要让用户知道类内部的工作原理.为了达到这点,请遵守以下简单的规则:只提供给用户绝对需要的东西.实际上,这意味着类的接口要尽可能少.当你开始设计一个类时,先从最小化的接口开始.类的设计是迭代式的,所以随后即使你发现

ROS机器人程序设计(原书第2版).

机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique Fernández) 路易斯·桑切斯·克雷斯波(Luis Sánchez Crespo) 阿尼尔·马哈塔尼(Anil Mahtani) 亚伦·马丁内斯(Aaron Martinez) 著 刘锦涛 张瑞雷 等译 图书在版编目(CIP)数据 ROS机器人程序设计(原书第2版) / (西)恩里克·费尔南

《JavaScript和jQuery实战手册(原书第3版)》---第1章 编写第一个JavaScript程序 1.1 编程简介

本节书摘来自华章出版社<JavaScript和jQuery实战手册(原书第3版)>一书中的第1章,第1.1节,作者David Sawyer McFarland,姚待艳 李占宣 译,更多章节内容可以访问"华章计算机"公众号查看. 第1章 编写第一个JavaScript程序 HTML自身并没有太多智能:它不能做数学运算,不能判断某人是否正确填写了一个表单,而且不能根据Web访问者的交互来做出判断.基本上,HTML让人们阅读文本.观看图片或视频,并且单击链接转向拥有更多文本.图片

《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 2.3 探索和理解数据 在收集数据并把它们载入R数据结构以后,机器学习的下一个步骤是仔细检查数据.在这个步骤中,你将开始探索数据的特征和案例,并且找到数据的独特之处.你对数据的理解越深刻,你将会更好地让机器学习模型匹配你的学习问题. 理解数据探索的最好方法就是通过例子.在

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.7 创建透明材质

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.7节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.7 创建透明材质 到现在为止,我们见到的着色器都有一个共同点-都用在实心材质上.如果你想提升游戏视觉效果,某些时候透明材质是个不错的选择,比如火焰效果或者窗户玻璃等.透明材质的制作相对复杂一点.在渲染实心物体之前,Uni

《用户至上:用户研究方法与实践(原书第2版)》一1.1 什么是用户体验

本节书摘来自华章出版社<用户至上:用户研究方法与实践(原书第2版)>一书中的第1章,第1.1节,作者 Understanding Your Users: A Practical Guide to User Research Methods, Second Edition凯茜·巴克斯特(Kathy Baxter)[美]凯瑟琳·卡里奇(Catherine Courage) 凯莉·凯恩(Kelly Caine)更多章节内容可以访问"华章计算机"公众号查看. 第1章 用户体验入门

《机器学习与R语言(原书第2版)》一1.6 总结

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第1章,第1.6节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 1.6 总结 机器学习起源于统计学.数据库科学和计算机科学的交叉.它是一个强大的工具,能够在大量的数据中找到可行动的洞察.然而,人们仍需持谨慎的态度,避免现实生活中机器学习的普遍滥用. 从概念上讲,机器学习涉及把数据抽象为结构化表示,并把这个结构化表示进行一般化从而推广到