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

简介: 本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第2章,第2.1节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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所示,可以从中看到二进制变量的所有组合和所得到的结果,它们清楚地解释了三种运算的定义。
image

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节介绍。

image

image

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

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

另外两种常用的门是异或门(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章将介绍一些必要的细节,以便利用这些门原形和逻辑运算符来创建可以完全模拟的模型,在这里介绍它们只是想说明硬件描述语言是逻辑电路表示的另一种方式。对于小电路,用逻辑函数、真值表或原理图描述输入/输出关系也许清晰和方便,但是对于大型的更复杂的电路,硬件描述语言通常更适合。
image

image

相关文章
|
20天前
|
SQL 数据可视化 算法
掌握计算机逻辑:离散数学中的逻辑和布尔代数
掌握计算机逻辑:离散数学中的逻辑和布尔代数
|
内存技术
基础逻辑门
Verilog HDL 设计语言支持3种设计风格: 门级,数据流级和行为级。 门级和数据流级设计风格通常用于设计组合逻辑电路,而行为级设计风格既可以用于设计组合逻辑电路又可以设计时序逻辑电路。本次实验通过使用Vivado 2015.1软件工具,以Basys3和Nexys4 DDR开发板为目标板,设计简单的组合逻辑电路来展示3种设计风格的用法。请参考Vivado手册了解如何使用Vivado工具创建工程并验证数字电路。
136 0
逻辑门电路
随着新技术的发展,集成数字电路类型层出不穷,大量使用大规模功能模块已成为现实。数字电路在众多领域已取代模拟电路,可以肯定,这一趋势将会继续发展下去。 一、逻辑门电路是什么? 逻辑门电路可以分为基本逻辑门和复合逻辑门。具体如何,让我们接下来去了解什么是基本逻辑门,什么是复合逻辑门?
185 0
逻辑门电路
《逻辑与计算机设计基础(原书第5版)》——2.7 门的传播延迟
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第2章,第2.7节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3521 1
|
异构计算
《逻辑与计算机设计基础(原书第5版)》——导读
本书的目的是为广大读者提供学习逻辑设计、数字系统设计和计算机设计的基础知识。本书第5版突出了课程内容方面的最新发展。从1997年的第1版开始,作者就不断对其进行修改,提供一种独一无二的将逻辑设计与计算机设计原理结合在一起的方法,并特别强调硬件。
2680 0
《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.4节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1388 0
《逻辑与计算机设计基础(原书第5版)》——第3章 3.0组合逻辑电路的设计
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.0节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1316 0
《逻辑与计算机设计基础(原书第5版)》——第2章 2.0组合逻辑电路
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第2章,第2.0节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1234 0
《数字逻辑设计与计算机组成》一2.4 逻辑化简
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.4节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1623 0
|
缓存
《数字逻辑设计与计算机组成》一2.7 其他逻辑门
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.7节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1296 0