逻辑代数与硬件描述语言基础.ppt
2.逻辑代数与硬件描述语言基础,2.1 逻辑代数 2.2 逻辑函数的卡诺图化简法 2.3 硬件描述语言Verilog HDL基础,教学基本要求,1、熟悉逻辑代数常用基本定律、恒等式和规则。,3、熟悉硬件描述语言Verilog HDL,2、掌握逻辑代数的变换和卡诺图化简法;,逻辑代数的基本定律和恒等式,2.1 逻辑代数,逻辑函数的变换及代数化简法,逻辑代数的基本规则,2.1 逻辑代数,逻辑代数是1854年问世的,早年用于开关和继电器网络的分析、化简;随着半导体器件制造工艺的发展,各种具有良好开关性能的微电子器件不断涌现,因而逻辑代数已成为分析和设计现代数字逻辑电路不可缺少的数学工具。逻辑代数有一系列的定律、定理和规则,用它们对数学表达式进行处理,可以完成对逻辑电路的化简、变化、分析和设计。,1、基本公式,基本定律,结合律,交换律,分配律,反演律摩根定律,0-1律,互补律,重叠律,还原律,逻辑代数的基本定律和恒等式,2、常用公式,逻辑代数的基本定律和恒等式,吸收律,常用恒等式,3、基本公式的证明,列出等式、右边的函数值的真值表,(真值表证明法),逻辑代数的基本定律和恒等式,2.1.2 逻辑代数的基本规则,1、代入规则,规则:在任何一个含有变量A的逻辑等式中,若以一函数式取代该等式中所有A的位置,该等式仍然成立。,例如:在B(AC)BABC中,将所有出现A的地方都用函数 EF 代替,则等式仍成立,即得:,扩展:摩根定理对任意多个变量都成立。,若取LCD代替等式中的A,得:,例如:二变量表示的摩根定理,四变量,2.反演规则:,在一个逻辑式L中,若将其中所有的“+”变成“”,“”变成“+”,“0”变成“1”,“1”变成“0”,原变量变成反变量,反变量变成原变量,所得函数式即为原函数式的反逻辑式,记作:。,在使用反演规则时需注意遵守以下两个原则:“先括号、然后乘、最后加”的运算优先次序;不属于单个变化量上的非号应保留不变。,2.1.2 逻辑代数的基本规则,例:试求 的非函数。,【解】按照反演定理,得:,0-1律,例:试求 的非函数。,【解】按照反演定理,得:,不属于单个变化量上的非号应保留不变,2.1.2 逻辑代数的基本规则,例:逻辑函数 的对偶式为,3.对偶规则:,当某个逻辑恒等式成立时,则该恒等式两侧的对偶式也相等。这就是对偶规则。利用对偶规则,可从已知公式中得到更多的运算公式,例如,吸收律,对偶式:在一个逻辑式L中,若将其中所有的“+”变成“”,“”变成“+”,“0”变成“1”,“1”变成“0”,所得函数式即为原函数式的对偶式,记作:L。,例:,逻辑函数的代数法化简,由逻辑状态表直接写出的逻辑式及由此画出的逻辑图,一般比较复杂;若经过简化,则可使用较少的逻辑门实现同样的逻辑功能,从而可节省器件,降低成本,提高电路工作的可靠性。利用逻辑代数变换,可用不同的门电路实现相同的逻辑功能。,“或-与”表达式,“与非-与非”表达式,“与-或-非”表达式,“或非或非”表达式,“与-或”表达式,逻辑函数的代数法化简,1、逻辑函数的最简与-或表达式,在若干个逻辑关系相同的与-或表达式中,将其中包含的与项数最少,且每个与项中变量数最少的表达式称为最简与-或表达式。,2、逻辑函数的化简方法,化简的主要方法:公式法(代数法)图解法(卡诺图法),代数化简法:运用逻辑代数的基本定律和恒等式进行化简的方法。,逻辑函数的代数法化简,逻辑函数的代数法化简,化简,(1)并项法,逻辑函数的代数法化简,(2)吸收法,A+AB=A(1+B)=AB,利用A+AB=A消去多余的项AB。,吸收,化简,【解】,吸收,吸收,化简,逻辑函数的代数法化简,(2)吸收法,A+AB=A(1+B)=AB,利用A+AB=A消去多余的项AB。,吸收,逻辑函数的代数法化简,化简,吸收,吸收,吸收,吸收,(2)吸收法,逻辑函数的代数法化简,(3)消去法(消元法),化简,吸收,吸收,逻辑函数的代数法化简,(3)消去法(消元法),化简,吸收,吸收,(4)消项法,化简,吸收,吸收,吸收,逻辑函数的代数法化简,逻辑函数的代数法化简,(5)配项法,化简,逻辑函数的代数法化简,化简,(5)配项法,逻辑函数的代数法化简,(5)配项法,化简,逻辑函数的代数法化简,(5)配项法,化简,例2.1.7 化简,解:,例2.1.8 已知逻辑函数表达式为,,要求:(1)最简的与-或逻辑函数表达式,并画出相应的逻辑图;(2)仅用与非门画出最简表达式的逻辑图。解:,解:,3、逻辑函数的最简与或表达式,(1)与或表达式,定义:逻辑变量之间用与运算连接起来(与项),而项与项之间用或运算连接起来的逻辑函数表达式,称为与或表达式。,例:,(2)最简与或表达式,定义:在若干个逻辑关系相同的与或表达式中,将其中包含的与项数最少,且每个与项中变量数最少的表达式称为最简与或表达式。,特点:表达式中的乘积项最少;乘积项中含的变量最少。,3、逻辑函数的最简与或表达式,(3)各种与或表达式可以互相转换,例:,与或表达式,与非与非表达式,或与表达式,或非或非表达式,与或非表达式,3、逻辑函数的最简与或表达式,【解】,(3)各种与或表达式可以互相转换,3、逻辑函数的最简与或表达式,(3)各种与或表达式可以互相转换,结论:逻辑函数化简就是消去与或表达式中多余的乘积项和每个乘积项中多余的变量,以得到逻辑函数的最简与或表达式。,基本变换过程如下:,与或式,两次求反,脱内部长非号,与非式,或与式,两次求反,脱内部长非号,或非式,脱短非号,与或非式,3、逻辑函数的最简与或表达式,例:已知逻辑函数表达式为,要求:(1)最简的与或逻辑函数表达式,并画出相应的逻辑图;(2)仅用与非门画出最简表达式的逻辑图。,【解】,最简的与或逻辑函数表达式,3、逻辑函数的最简与或表达式,【解】,最简的与或逻辑函数表达式,与非与非表达式,A,B,用到与门、或门和非门三种类型的门,A,B,只用到与非门一种类型的门,3、逻辑函数的最简与或表达式,用“与非”门构成基本门电路,(1)应用“与非”门构成“与”门电路,由逻辑代数运算法则:,为什么不用一个单一的非门电路?,思考?,为什么此两输入端要连接在一起?,(1)如果悬空,虽为高电平,但容易受外来电磁波等干扰。,(2)如果接地,则始终为低电平,则会控制输入端。,解决办法:(1)可以接电源,使其为高平;(2)并联使用。,为了使器件的类型最少。,存在的问题:,3、逻辑函数的最简与或表达式,用“与非”门构成基本门电路,(2)应用“与非”门构成“或”门电路,(1)应用“与非”门构成“与”门电路,由逻辑代数运算法则:,由逻辑代数运算法则:,(3)应用“与非”门构成“非”门电路,(4)用“与非”门构成“或非”门,由逻辑代数运算法则:,用“与非”门构成基本门电路,3、逻辑函数的最简与或表达式,吸收,例 用逻辑代数的基本公式和常用公式将下列逻辑函数化为最简与或式。,【解】,典型例题分析,【解】,吸收,【解】,吸收,吸收,例 用逻辑代数的基本公式和常用公式将下列逻辑函数化为最简与或式。,典型例题分析,【解】,例 用逻辑代数的基本公式和常用公式将下列逻辑函数化为最简与或式。,典型例题分析,【解】,吸收,吸收,例 用真值表证明下列等式:,典型例题分析,【分析】分别画出左式与右式的真值表,再比较。,【证】(1)当A,B,C取值在000111变化时,左式和右式的逻辑值如表1,可知左式右式。,表1,例 用真值表证明下列等式:,典型例题分析,【分析】分别画出左式与右式的真值表,再比较。,【证】(2)当A,B,C取值在000111变化时,左式和右式的逻辑值如表2,可知左式右式。,表2,作业,2.1.4(5)(10)2.1.5(2)2.1.7(3),2.2 逻辑函数的卡诺图化简法,2.2.2 逻辑函数的最小项表达式,2.2.1 最小项的定义及性质,2.2.4 用卡诺图化简逻辑函数,2.2.3 用卡诺图表示逻辑函数,1.逻辑代数与普通代数的公式易混淆,化简过程要求对所有公式熟练掌握;2.代数法化简无一套完善的方法可循,它依赖于人的经验和灵活性;3.用这种化简方法技巧强,较难掌握。特别是对代数化简后得到的逻辑表达式是否是最简式判断有一定困难。卡诺图法可以比较简便地得到最简的逻辑表达式。,代数法化简在使用中遇到的困难:,n个变量X1,X2,Xn的最小项是n个因子的乘积,每个变量都以它的原变量或非变量的形式在乘积项中出现,且仅出现一次。一般n个变量的最小项应有2n个。,1.最小项的意义,2.2.1 最小项的定义及其性质,三个变量的所有最小项的真值表,2、最小项的性质,(1)对应任意一组输入变量取值,有且只有一个最小项值为1;(2)任意两个最小项之积为0;(3)全体最小项之和为1;(4)具有逻辑相邻性的两个最小项相加,可合并为一项,并消去一个不同因子。,三变量最小项真值表,3、最小项的编号,最小项通常用mi表示,下标i即最小项编号,用十进制数表示。将最小项中的原变量用1表示,非(反)变量用0表示。,逻辑函数的最小项表达式,为“与或”逻辑表达式;在“与或”式中的每个乘积项都是最小项。,=m7m6m3m5,逻辑函数的最小项表达式:,例2 将,化成最小项表达式,a.去掉非号,b.去括号,2.2.3 用卡诺图表示逻辑函数,1、卡诺图的引出,卡诺图:将n变量的全部最小项都用小方块表示,并使具有逻辑相邻的最小项在几何位置上也相邻地排列起来,这样,所得到的图形叫n变量的卡诺图。,逻辑相邻的最小项:如果两个最小项只有一个变量互为反变量,那么,就称这两个最小项在逻辑上相邻。,三变量,二变量,0,1,3,2,4,5,7,6,12,13,15,14,8,9,11,10,四变量,2、卡诺图的特点:各小方格对应于各变量不同的组合,而且上下左右在几何上相邻的方格内只有一个因子有差别,这个重要特点成为卡诺图化简逻辑函数的主要依据。,2.2.3 用卡诺图表示逻辑函数,3.已知逻辑函数画卡诺图,当逻辑函数为最小项表达式时,在卡诺图中找出和表达式中最小项对应的小方格填上1,其余的小方格填上0(有时也可用空格表示),就可以得到相应的卡诺图。任何逻辑函数都等于其卡诺图中为1的方格所对应的最小项之和。,(1)根据状态表画出卡诺图,如:,将输出变量为“1”的填入对应的小方格,为“0”的可不填。,1,1,1,1,(2)根据逻辑式画出卡诺图,如:,1,1,1,1,将逻辑式中的最小项分别用“1”填入对应的小方格。没有出现的最小项,可不填。,如:,注意:如果逻辑式不是由最小项构成,一般应先化为最小项,然后再填写。,1,1,1,1,(2)根据逻辑式画出卡诺图,例2 画出下式的卡诺图,2.填写卡诺图,2.2.4 用卡诺图化简逻辑函数,1、化简的依据,2、化简的步骤,用卡诺图化简逻辑函数的步骤如下:,(4)将所有包围圈对应的乘积项相加。,(1)将逻辑函数写成最小项表达式,(2)按最小项表达式填卡诺图,凡式中包含了的最小项,其对应方格填1,其余方格填0。,(3)合并最小项,即将相邻的1方格圈成一组(包围圈),每一组含2n个方格,对应每个包围圈写成一个新的乘积项。本书中包围圈用虚线框表示。,画包围圈时应遵循的原则:,(1)卡诺图化简圈“1”的原则:,每次所圈最小项(卡诺图中的1)个数尽量多,但所圈1的的个数应为 2i 个;,(1)卡诺图化简圈“1”的原则:,每次所圈最小项(卡诺图中的1)个数尽量多,但所圈1的的个数应为 2i 个;,每个圈至少包括一个没有被圈过的1;,所有1至少被圈过一次。,(1)卡诺图化简圈“1”的原则:,在所圈的最小项中,变量取值全是0的,在表达式中以反变量的形式出现;变量取值全是1的,在表达式中以原变量的形式出现;变量取值既有0也有1的,在表达式中不出现。,所圈的2i个相邻的最小项,可以消去i个变量取值既有0也有1的变量。,例:化简下列逻辑函数。,(1)L=A,B,C(1,2,5,7),(2)合并最小项规则,(2)合并最小项规则,例:化简下列逻辑函数。,解:,(a)将取值为“1”的相邻小方格圈成圈,,(b)所圈取值为“1”的相邻小方格的个数应为2n,(n=0,1,2),(3)步骤:卡诺图合并最小项写出最简“与或”逻辑式,解:,三个圈最小项分别为:,合并最小项,写出简化逻辑式,卡诺图化简法:保留一个圈内最小项的相同变量,而消去相反变量。,(3)步骤:卡诺图合并最小项写出最简“与或”逻辑式,解:,写出简化逻辑式,多余,例.应用卡诺图化简逻辑函数,(1),(2),(3)步骤:卡诺图合并最小项写出最简“与或”逻辑式,解:,写出简化逻辑式,1,例.应用卡诺图化简逻辑函数,1,(3)步骤:卡诺图合并最小项写出最简“与或”逻辑式,例:用卡诺图法化简下列逻辑函数,(2)画包围圈合并最小项,得最简与-或表达式,解:(1)由L 画出卡诺图,(0,2,5,7,8,10,13,15),例:用卡诺图化简,圈0,圈1,含无关项的逻辑函数及其化简,1、什么叫无关项:,在真值表内对应于变量的某些取值下,函数的值可以是任意的,或者这些变量的取值根本不会出现,这些变量取值所对应的最小项称为无关项或任意项。,在含有无关项逻辑函数的卡诺图化简中,它的值可以取0或取1,具体取什么值,可以根据使函数尽量得到简化而定。,例:要求设计一个逻辑电路,能够判断一位十进制数是奇数还是偶数,当十进制数为奇数时,电路输出为1,当十进制数为偶数时,电路输出为0。,解:(1)列出真值表,(2)画出卡诺图,(3)卡诺图化简,Verilog语言的基本语法规则 变量的数据类型 Verilog程序的基本结构 2.3.4 逻辑功能的仿真与测试,2.3 硬件描述语言Verilog HDL基础,硬件描述语言HDL(Hardware Description Languag)类似于高级程序设计语言.它是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,复杂数字逻辑系统所的逻辑功能。HDL是高层次自动化设计的起点和基础.,2.3 硬件描述语言Verilog HDL基础,计算机对HDL的处理:,逻辑综合 是指从HDL描述的数字逻辑电路模型中导出电路基本元件列表以及元件之间的连接关系(常称为门级网表)的过程。类似对高级程序语言设计进行编译产生目标代码的过程.产生门级元件及其连接关系的数据库,根据这个数据库可以制作出集成电路或印刷电路板PCB。,逻辑仿真 是指用计算机仿真软件对数字逻辑电路的结构和行为进行预测.仿真器对HDL描述进行解释,以文本形式或时序波形图形式给出电路的输出。在仿真期间如发现设计中存在错误,就再要对HDL描述进行及时的修改。,2.3.1 Verilog语言的基本语法规则,为对数字电路进行描述(常称为建模),Verilog语言规定了一套完整的语法结构。,1间隔符:Verilog 的间隔符主要起分隔文本的作用,可以使文本错落有致,便于阅读与修改。间隔符包括空格符(b)、TAB 键(t)、换行符(n)及换页符。,2注释符:注释只是为了改善程序的可读性,在编译时不起作用。多行注释符(用于写多行注释):/*-*/;单行注释符:以/开始到行尾结束为注释文字。,为了表示数字逻辑电路的逻辑状态,Verilog语言规定了4种基本的逻辑值。,标识符:给对象(如模块名、电路的输入与输出端口、变量等)取名所用的字符串。以英文字母或下划线开始如,clk、counter8、_net、bus_A。关键词:是Verilog语言本身规定的特殊字符串,用来定义语言的结构。例如,module、endmodule、input、output、wire、reg、and等都是关键词。关键词都是小写,关键词不能作为标识符使用。,4逻辑值集合,3标识符和关键词,5常量及其表示,实数型常量,Verilog允许用参数定义语句定义一个标识符来代表一个常量,称为符号常量。定义的格式为:parameter 参数名1常量表达式1,参数名2常量表达式2,;如 parameter BIT=1,BYTE=8,PI=3.14;,常量,整数型,例如:3b101、5o37、8he3,8b1001_0011,2.3.2 变量的数据类型,1线网类型:是指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接.,例:wire L;/将上述电路的输出信号L声明为网络型变量 wire 7:0 data bus;/声明一个8-bit宽的网络型总线变量,寄存器型变量对应的是具有状态保持作用的电等路元件,如触发器寄存器。寄存器型变量只能在initial或always内部被赋值。,2、寄存器型,4种寄存器类型的变量,例:reg clock;/定义一个1位寄存器变量 reg 3:0 counter;/定义一个4位寄存器变量,2、每个模块先要进行端口的定义,并说明输入(input)和输出(output),然后对模块功能进行描述。,2.3.3 Verilog程序的基本结构,Verilog使用大约100个预定义的关键词定义该语言的结构,1、VerilogHDL程序由模块构成。每个模块的内容都是嵌在关键词module和endmodule两个语句之间。每个模块实现特定的功能。,3、除了endmodule语句外,每个语句后必须有分号。,4、可以用/*-*/和/.对VerilogHDL程序的任何部分做注释。,模块定义的一般语法结构如下:,模块名,数据类型说明,例 用结构描述方式建立门电路Verloger模型,/Gate-level description of simple circuitmodule mux2to1(a,b,sel,out);input a,b,sel;/定义输入信号 output out;/定义输出信号 wire selnot,a1,b1;/定义内部节点信号数据类型/下面对电路的逻辑功能进行描述not U1(selnot,sel);and U2(a1,a,selnot);and U3(b1,b,sel);or U4(out,a1,b1);endmodule,2.3.4 逻辑功能的仿真与测试,逻辑电路的设计块完成后,就要测试这个设计块描述的逻辑功能是否正确。为此必须在输入端口加入测试信号,而从其输出端口检测其结果是否正确,这一过程常称为搭建测试平台。根据仿真软件的不同,搭建测试平台的方法也不同。,图2.3.3 例的仿真输出波形,