版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
张俊涛陕西科技大学电子信息与人工智能学院《数字电子技术基础》教学课件第4章组合逻辑电路CombinationalLogicCircuits
4.2组合电路的分析与设计
4.3常用组合逻辑器件编码器,译码器,数据选择器本章内容加法器,数值比较器,奇偶校验器4.4组合电路中的竞争-冒险本章小结,习题4.1组合逻辑电路概述
4.6*
常用组合逻辑器件的描述4.5*
模块功能的描述方法
4.7
设计实践4.1组合逻辑电路概述◆数字电路的分类组合逻辑电路时序逻辑电路定义输出只是输入的函数输出是输入和状态的函数数学描述电路特点无存储电路,无反馈,无记忆性存储电路,有记忆性简单复杂分析与设计方法器件种类62地位基础核心◆组合电路的一般模型输入输出向量表示形式最简单的组合逻辑电路4.2
组合电路的分析与设计方法◆思考:谁是因,谁是果?
约定:(1)用A、B、C分别表示三个开关,用Y表示灯,则Y=F(A,B,C);
(2)用A,B,C=0表示开关断开,A,B,C=1表示开关闭合;用Y=1表示灯亮,Y=0表示灯不亮;(3)并设ABC=000时,Y=0.【例4-1】设计用三个开关控制一个灯的逻辑电路,要求改变任何一个开关的状态都能控制灯由亮变灭或者由灭变亮。1.组合逻辑电路的设计方法所谓组合逻辑电路设计,就是对于给定的实际问题,设计出能够实现功能要求的组合逻辑电路。(1)ABC=000,Y=0推理:ABC=100,010,001时,Y=1;(2)ABC=100,Y=1ABC=110,101时,Y=0;(3)ABC=010,Y=1ABC=011时,Y=0;(4)ABC=011,Y=0ABC=111,Y=1.ABCY00000011010101101001101011001111真值表Y=A'B'C+A'BC'+AB'C'+ABC从另一个角度进行化简:=A⊕B⊕CY=A'B'C+A'BC'+AB'C'+ABC=(A'B'C+AB'C')+(A'BC'+ABC)=B'(A'C+AC')+B(A'C'+AC)=B'(A⊕C)+B(A⊙C)逻辑图4-1.设计用四个开关控制一个灯的逻辑电路,写出逻辑函数表达式,并画出逻辑图。4-2.设计用五个开关控制一个灯的逻辑电路,写出逻辑函数表达式,并画出逻辑图。4-3.总结开关控制灯问题的设计规律,并说明这类电路能够应用在什么地方??思考与练习对比:【例4-2】有一水箱由大小两台水泵ML和MS供水,如图4-6所示。水箱中设置了3个水位检测元件C、B、A。水面低于检测元件时,检测元件给出高水平;水面高于检测元件时,检测元件给出低电平。现要求当水位超过C点时水泵停止工作,水位低于C点而高于B点时小水泵单独工作,水位低于B点而高于A时大水泵单独工作,水位低于A点时大、小水泵同时工作。设计一个水泵控制电路,能够按上述要求工作,要求电路尽量简单。◆思考:谁是因,谁是果?
用MS=1表示小泵工作,MS=0表示小水泵停止。卡诺图化简:真值表约定:用ML=1表示大水泵工作,ML=0表示大水泵停止;总结:组合逻辑电路的设计过程一般按以下步骤进行:(1)逻辑抽象
(2)选定器件的类型,写出逻辑函数表达式
设计图:
组合电路设计问题一般是由文字描述的逻辑关系问题。分析其因果关系,从中确定输入(因)和输出(果),并且定义每个输入变量/输出取值的具体含义,然后写出能够表示其逻辑功能的真值表。
组合电路既可以应用门电路设计,也可以基于本章后讲到的译码器或者数据选择器设计,还可以基于只读存储器(ROM)设计。
基于ROM设计,确定ROM的容量,然后用编程器将真值表写入ROM中。组合电路设计流程
应用门电路设计,则需要对逻辑函数进行化简,并根据具体实现器件的类型将逻辑函数变换为相应的形式,然后画出逻辑图。
基于译码器或数据选择器设计,则需要对逻辑函数式进行变换,确定逻辑函数与译码器或数据选择器输入/输出之间的关系,然后画出电路图。(3)根据化简或变换后的函数式,画出相应的逻辑图/电路图根据函数式画出相应的逻辑图,可以附加必要的门电路。(3)写出电路的真值表,然后根据真值表推理电路的逻辑功能。【例4-3】分析图4-9所示电路的逻辑功能,指出该电路的用途。2.组合逻辑电路的分析方法所谓组合电路分析,就是对于给定的组合逻辑电路,确定电路的逻辑功能。一般来说,组合逻辑电路分析过程按以下步骤进行:(1)对给定逻辑图,从输入级逐级向后推,写出逻辑函数表达式;(2)进行变换和化简,使逻辑表达式简单明了;DCBAY2Y1Y00000001000100100100010011001010000101010010110010011101010000101001010101001010111001100100110110011101001111100因此,推断该电路具有根据输出状态判断输入数大小范围的功能。从真值表可以看出:当DCBA的取值在0~5之间时Y0=1;取值在6~10之间时Y1=1;取值在11~15之间时Y2=1。(2)偶校验码产生器
(2)需要从整体的角度考查电路的逻辑功能,不能只见树木,不见森林。ABCY00000011010101101001101011001111
需要注意的是:(1)对于同一个逻辑电路,不同的人可能会有不同的认识,从而抽象出的不同逻辑功能!对于同一真值表:(1)三个开关控制一个灯4.3
常用组合逻辑器件
掌握了组合逻辑电路的分析与设计方法后,下面以设计的思路讲述常用的组合逻辑器件-编码器、译码器、数据选择器、加法器、数据比较器和奇偶校验器的设计原理、功能与应用。
1.编码器(Encoder)◆什么是编码器?
用数码表示不同的事物或者状态,称为编码。相应地,能够实现编码功能的电路称为编码器。键盘码断码通码
◆二进制编码器
◆
编码器的设计2n线~n线编码器【例4-4】假设有个小医院共有8间病房,房间编号分别为0~7。在每个病房都安装有一个呼叫按键,分别用I0~I7表示。当病房的病人需要服务时,按下按键发出请求。相应地,在护士值班室里对应有3个指示灯,分别用Y2Y1Y0表示。当7号病房的病人按下按键时Y2Y1Y0=111(指示灯全亮),提醒护士到七号病房服务;当六号病房的病人按下按键时Y2Y1Y0=110,提醒护士到六号病房服务;...;依次类推。设计能够实现该功能的组合逻辑电路。所以是8线-3线编码器的设计问题。分析:Y2Y1Y0=111Y2Y1Y0=110。。。
设计过程:约定:
任何时刻不会有两个或两个以上病房的病人同时按按键。28=2569(即:输入变量是相互排斥的!)真值表表示“7号病房的病人将按键按下”这一事件表示“6号病房的病人将按键按下”这一事件I0~I7=0~07Y2Y1Y0=?I0~I7Y2Y1Y0第二章作业题:
2.16若一组变量中不可能有两个或两个以上同时为1,则称这组变量相互排斥。在变量A、B、C、D、E相互排斥的情况下,证明逻辑式AB'C'D'E'=A、A'BC'D'E'=B、A'B'CD'E'=C、A'B'C'DE'=D和A'B'C'D'E=E成立。同理可证:A'BC'D'E'=B、A'B'CD'E'=C、A'B'C'DE'=D和A'B'C'D'E=E成立。证明:(1)当A=0时,AB'C'D'E'=0=A;(2)当A=1时,由相互排斥可知B=C=D=E=0,因此AB'C'D'E'=1=A。因此,AB'C'D'E'=A成立。应用习题结论普通编码器设计图思考:如果不满足约定条件时,会出现什么问题???当3号病房和4号病房的病人同时按按键时,I3=1,I4=1Y2Y1Y0=111
所谓优先编码,就是预先给不同的输入规定不同的优先级,当多个输入信号同时有效时,只对当时优先级最高的输入信号进行编码。普通编码器存在问题,需要进行改进!优先编码器真值表引入优先编码的概念。设7号病房的病人优先级最高,6号病房的病人优先级次之,。。。0号病房的病人优先级最低。
优先编码器不但解决了输入信号之间竞争的问题,又能作为普通编码器使用,所以实际编码器均设计为优先编码器。(设计图略)8线-3线优先编码器74HC148低电平有效!反码输出(2)在器件正常工作的情况下,74HC148功能表从功能表可以看出:(1)控制信号S'=1时74HC148不工作,输出全部被封锁为高电平。而YEX'=0时表示“有编码信号输入”。在S'=0时74HC148处于工作状态。YS'=0时表示编码器“无编码信号输入”,编码器的应用按键编码电路4-4.8线-3线优先编码器74HC148能否作为4线-2线编码器用?能否作为2线-1线编码器用?如果可以,说明具体的用法。?思考与练习10-4线优先编码器
◆什么是译码器?
2.译码器(Decoder)
◆译码器的分类
◆译码器的命名方法编码器译码器将高/低电平信号转换为编码。
将编码重新还原为高/低电平信号。功能与编码器相反!二进制译码器显示译码器n线-2n译码器2-4线译码器3-8线译码器4-16线译码器74HC148/147
设输入的三位二进制代码分别用A2A1A0表示,输出的高、低电平信号分别用Y0~Y7表示。
(1)二进制译码器设计◆译码器的设计
设计3线-8线译码器3线-8线译码器真值表按上述逻辑函数用8个与门和3个反相器设计出3线-8译码器(设计图略)。3线-8线译码器74HC138输出低电平有效74HC138功能表4-5.3线-8线译码器74HC138能否作为2线-4线译码器用?能否作为1线-2线译码器用?如果可以,说明具体的用法。?思考与练习S=S1S2S3【例4-5】用两片74HC138扩展为4线-16线译码器。
3线-8线译码器输入用A2A1A0,输出用Y0'~Y7‘表示。
如何接?分解!分析:4线-16线译码器用于将4位二进制码翻译成16个高低电平信号。设4位二进制码用D3D2D1D0表示,16个高低电平信号用Z0'~Z15‘表示。
当D3=0时让第一片译码器工作,D3=1时让第二片译码器工作,工作译码器的具体输出再由低三位D2D1D0确定,这样组合起来可实现对四位二进制数进行译码。扩展方法:
用4位二进制码的最高位D3控制译码器的S1、S2'或S3',并将低3位二进制码D2D1D0分别接到每一片译码器的A2A1A0上。4-6.如果需要5线-32线译码器,能否用4片74HC138扩展?画出设计图。4-7.如果需要5线-32线译码器,能否用5片74HC138扩展?画出设计图。4-8.比较上述两种扩展方案,你认为哪种方案更为合理?试说明理由。?思考与练习0xxx1xxx◆译码器的三大功能(1)译码(2)作为数据分配器(Demultiplexer)
数据分配(反相输出)
数据分配(同相输出)x0x1x2????????1001DDD0010111111011(3)实现组合逻辑函数为什么译码器能够实现组合逻辑函数?3线-8线译码器输出端包含3变量逻辑函数的全部最小项!74HC138正常工作时(S1=1,S2'=0,S3'=0)【例4-6】利用3线-8线译码器74HC138设计例2的水泵控制电路。变换!显示译码器说明:特殊的译码器!作用:用于驱动数码管/LCD(2)显示译码器共阳数码管共阴数码管低电平驱动高电平驱动液晶显示原理LCD驱动电路原理分析原理分析:驱动电路:BCD显示译码器设计BCD显示译码器真值表BCD七段锁存/译码/驱动器CD4511B显示译码器应用电路(1)数码管驱动电路(2)字符液晶驱动电路◆数据选择器的设计
3.数据选择器(Multiplexer)◆什么是数据选择器?◆
数据选择器的命名方式数据选择器数据分配器2n选一数据选择器
2选一设计
4选一设计
8选一设计(1)2选一数据选择器的设计用卡诺图化简得Y=A0’*D0+A0*D1
设:两路数据分别为D0,D1;
1位地址码为A0;输出为Y。则:Y=F(A0,D0,D1)A0
D0
D1Y000000100101011110001011110011112选一数据选择器真值表(2)4选一数据选择器的设计设:4路数据分别为D0,D1,D2,D3;
2位地址码为A1,A0;输出为Y。则:Y=F(D0,D1,D2,D3,A1,A0)思考:
26=64,如何写出4选一数据选择器的真值表???怎么化简???A1
A0Y00D001D110D211D3Y=D0(A1'A0')+D1(A1'A0)+D2(A1A0')+D3(A1A0)所以,4选一数据选择器的函数式可以表示为4选一数据选择器简化的真值表D0(A1'A0')D1(A1'A0)D2(A1A0')D3(A1A0)2选一数据选择器简化的真值表8选一数据选择器简化的真值表?思考与练习:写出16选一的逻辑函数表达式。两种方法比较:A0
D0
D1Y000000100101011110001011110011112选一数据选择器真值表(3)8选一数据选择器的设计A2
A1
A0Y000D0001D1010D2011D3100D4101D5110D6111D7Y=D0(A2'A1'A0')+D1(A2'A1'A0)+D2(A2'A1A0')+D3(A2'A1A0)++D4(A2A1'A0')+D5(A2A1'A0)+D6(A2A1A0')+D7(A2A1A0)Y=A0’*D0+A0*D1双4选一数据选择器74HC153功能表8选一数据选择器74HC151
互补输出【例4-8】将双4选一数据选择器74HC153扩展为8选一数据选择器。8选一:3位地址码A2A1A04选一:2位地址码A1A0因此,需要将8选一数据选择器的3位地址A2A1A0拆分成A2+A1A0用最高位A2控制哪个4选一工作,然后再根据A1A0进行进一步选择。
用A2控制S1'和S2':
A2=0时使S1'=0,控制第一个4选一工作,再根据A1A0进一步选择从Y1输出;
A2=1时使S2'=0,控制第二个4选一工作,再根据A1A0进一步选择从Y2输出。分析:扩展方法:由于第一个4选一工作时数据从Y1输出,第二个4选一工作时数据从Y2输出,所以还需要用或门将两个4选一的输出相加使8选一数据选择器的输出Y=Y1+Y2。4-9.能否用两片74HC151扩展出16选一的数据选择器?画出设计图。4-10.能否用两片74HC153扩展出16选一的数据选择器?画出设计图。?思考与练习0xx1xx用数据选择器实现逻辑函数数据选择器为什么能够实现逻辑函数?【例4-8】用8选一数据选择器实现三人表决电路。◆用数据选择器实现逻辑函数Y=D0(A2'A1'A0')+D1(A2'A1'A0)+D2(A2'A1A0')+D3(A2'A1A0)+D4(A2A1'A0')+D5(A2A1'A0)+D6(A2A1A0')+D7(A2A1A0)Y=D0m0+D1m1+D2m2+D3m3+D4m4+D5m5+D6m6+D7m7
设计过程:三人表决电路的最小项表达式为Y=A'BC+AB'C+ABC'+ABC=m3+m5+m6+m7因此,8选一数据选择器能够实现三变量逻辑函数。
与8选一数据选择器的标准形式进行对比,可得:
D3=D5=D6=D7=1,而D0=D1=D2=D4=0。【例4-9】用双4选一数据选择器74HC153实现例2的水泵控制电路。◆
三变量逻辑函数还可以用4选一数据选择器实现分析:4选一数据选择器的标准函数式Y=D0(A1'A0')+D1(A1'A0)+D2(A1A0')+D3(A1A0)=D0m0+D1m1+D2m2+D3m3将三变量逻辑函数式与4选一数据选择器的标准函数式进行对比可知,实现时应将三变量逻辑函数中的两个变量看作地址,另一个变量看作数据。设计过程:
将函数式中B、A看作地址,分别对应于4选一数据选择器的A1和A0,C看作数据,整理得水泵控制电路的逻辑函数表达式为用74HC153实现时,与4选一函数表达式Y=
D0m0+D1m1+D2m2+D3m3进行对比,得总结:从应用的角度讲,用2n选一数据选择器可以实现n+1变量及以下的逻辑函数,即4选一数据选择器可以实现3变量及以下的逻辑函数,8选一的数据选择器可以实现4变量及以下的逻辑函数。4-10.用8选一数据选择器实现三个开关控制一个灯的逻辑电路,画出设计图。4-11.用4选一数据选择器实现三个开关控制一个灯的逻辑电路,画出设计图。?思考与练习Q1:一个译码器能够实现几个逻辑函数?
Q2:一个数据选择器能够实现几个逻辑函数?
ANS:n个!ANS:1个!vs
用译码器实现逻辑函数vs用数据选择器实现逻辑函数74HC13874HC151/1534.加法器(Adder)◆
加法器的分类
◆什么是加法器?(1)半加器的设计
定义:两个一位二进制数A和B相加时,不考虑来自低位的进位信号,这种加法器称为半加器(HalfAdder)。1位:半加/全加ABSCO0000011010101101二进制加法器
设其加法和用S(Sum的首字母)表示,向高位产生的进位信号用CO(CarryOutput)表示。半加器真值表半加器图形符号1位
多位(2)全加器的设计
定义:两个一位二进制数A和B相加时,如果考虑来自更位的进位信号CI(CarryInput),即实现A、B和CI三个一位数相加,则这种加法器称为全加器(FullAdder)。ABCISCO0000000110010100110110010101011100111111全加器图形符号全加器真值表双全加器74LS183(3)多位加法器的设计串行进位(ripplecarry)全加器特点:进位信号是从低位向高位逐级传递的。改进思路:预先将每级加法所需要的进位信号计算出来,然后各级可以同时进行相加。分析:
串行进位加法器的优点和缺点example:设计4位全加器超前进位:carrylook-ahead分析:超前进位的优点和缺点4位超前进位加法器74LS283为了便于功能扩展,74HC283还提供了进位输入端CI,用于连接来自更低位的进位信号。{CO,S3S2S1S0}=A3A2A1A0+B3B2B1B0+CI【例4-10】将两片74HC283扩展成8位加法器。设A、B为两个8位二进制数,从高位到低位分别用A7~A0和B7~B0表示。
实现8位加法时需要将两个八位二进制数A和B拆分成高4位(A7~A4和B7~B4)和低4位(A3~A0和B3~B0)。用一片74HC283实现低4位相加,另一片实现高4位相加。?思考与练习
4-13.如果需要12位加法器,能否用3片74HC283扩展?画出设计图。4-14.如果需要16位加法器,能否用4片74HC283扩展?画出设计图。4-15.4位加法器能否作为3位加法器用?与输入的3位二进制数如何连接?共有多少种接法?◆用加法器实现代码转换【例4-12】用74HC283将8421码转换成余3码。分析:8421码和余3码之间的关系为
余3码=8421码+0011【例4-12】用74HC283将余3码转换成8421码。分析:余3码和8421码之间的关系为
8421码=余3码-0011利用补码,在忽略进位的情况下,减3和加上3的补码等效,即
8421码=余3码+1101?思考与练习4-16.能否用一片74HC283实现4位二进制数加/减运算?在M=0时实现加法,M=1时实现减法。画出设计图。4-17*已知X是3位二进制数,能否用一片74LS283实现Y=3X+1?◆什么是数值比较器?5.数值比较器(Comparator)◆一位数值比较器的设计数值比较器用于比较数值的大小。两个数A和B进行比较时,设A、B是两个一位二进制数,并将其比较结果分别用Y(A>B)、Y(A=B)和Y(A<B)表示。ABY(A>B)Y(A=B)Y(A<B)00010010011010011010一位数值比较器真值表结果有3种可能性:A>B、A<B或者A=B。◆多位数值比较器的设计
设A、B是两个4位二进制数,从高位到低位分别用A3A2A1A0和B3B2B1B0表示,则A>B共有以下四种情况:因此,Y(A>B)的逻辑函数表达式为(4)A3=B3,A2=B2,A1=B1,A0>B0时(1)A3>B3时(2)A3=B3,A2>B2时(3)A3=B3,A2=B2,A1>B1时
只有当A3=B3、A2=B2、A1=B1并且A0=B0时,A和B才相等,所以Y(A=B)的函数表达式为按照上述逻辑函数表达式即可设计出基本的四位数据比较器。
同理,A<B共有以下四种情况:所以,Y(A<B)的逻辑函数表达式为
(1)A3<B3时(2)A3=B3,A2<B2时(3)A3=B3,A2=B2,A1<B1时(4)A3=B3,A2=B2,A1=B1,A0<B0时
4位数值比较器74HC85来自低位的比较结果,高电平有效!
(1)A3>B3时(2)A3=B3,A2>B2时(3)A3=B3,A2>B2,A1>B1时(4)A3=B3,A2=B2,A1=B1,A0>B0时
因此,Y(A>B)的逻辑函数表达式为
如果考虑到来自低位的比较结果时,两个4位二进制数A和B的(A>B)比较结果共有五种情况:
(5)A3=B3,A2=B2,A1=B1,A0=B0,I(A>B)时A=A3A2A1A0B=B3B2B1B0
只有当A3=B3、A2=B2、A1=B1、A0=B0并且I(A=B)=1时,A和B才相等,所以Y(A=B)的函数表达式为74HC85按照上述逻辑函数表达式设计的。
同理,Y(A<B)的逻辑函数表达式为【例4-13】用两片74HC85扩展出一个8位数值比较器。设C、D为8位二进制数,其中C=C7C6C5C4C3C2C1C0,D=D7D6D5D4D3D2D1D0?思考与练习4-17.如果需要12位数值比较器,能否用三片74HC85实现?画出设计图。4-18.12位数值比较器能否作为10位数值比较器用?如果可以,说明其具体用法。4-19.异或门和同或门是否能够实现数据比较?试分析说明。奇偶校验器YODD=(Dn-1⊕Dn-2⊕...⊕D1⊕D0)'
YEVEN=Dn-1⊕Dn-2⊕...⊕D1⊕D06.奇偶校验器(ParityChecker)[背景]在数字通信中,信息在传输过程中由于干扰和噪声的影响可能会发生错误。为了检测传输是否有错误,就需要对接收到的信息进行校检。
n位数据(+1位校验码)检查接收到的n+1位数据奇偶性是否相同将n+1位数中1的个数配成奇数:奇校验将n+1位数中1的个数配成偶数:偶校验一般地,n位奇/偶校验器的逻辑函数表达式分别为ABCY0
0
000
0
110
1
010
1
101
0
011
0
101
1
001
1
113位偶校验器真值表◆发送端◆接收端Y=A⊕B⊕C奇偶校验发生/校验器
74LS2809位输入数据中1的个数输出偶校验码奇校验码0,2,4,6,8011,3,5,7,91074LS280功能表
奇偶校验方法不仅能够应用在数字通信中进行误码检测,还应用于计算机系统中用于对存储数据进行校验。74LS280满足单字节检测要求!
◆偶校检数字通信系统发送端:产生偶校验码接收端:进行偶校验检测4.4
组合电路中的竞争-冒险1.问题产生的背景当组合电路的输入信号发生变化(ex:AB=01→10)的瞬间,电路的实际输出是否与真值表描述的输出一样?
在分析和设计组合逻辑电路时,通常用真值表描述电路的逻辑功能。但是,真值表只是反映了组合电路稳态时输出与输入的关系。定义2:由于竞争有可能在电路的输出端产生不符合逻辑关系的尖峰脉冲(glith)的现象称为竞争-冒险(race-hazard)。稳态
定义1:把门电路的两个输入信号同时向相反的方向进行跳变这种现象称为竞争(race)。Y=0Y=1(1)A的跳变超前于B时...(2)A的跳变滞后于B时...产生了上跳尖峰脉冲!2.与门电路这种预期输出为低电平时却产生了上跳尖峰脉冲的现象称为0型冒险。当AB=01→10时3.或门电路(1)A的跳变超前于B时...(2)A的跳变滞后于B时...这种预期输出为高电平时却产生了下跳尖峰脉冲的现象称为1型冒险。产生了下跳尖峰脉冲!当AB=01→10时tpdtpd4.进一步扩展讨论ex:对于2-4线译码器5.竞争-冒险现象的检查方法
如果在函数表达式同时存在A和A',那么称A为具有竞争能力的变量。对于具有竞争能力的变量,如果将其余变量任意取值时,如果函数表达式能够转化成Y=A'A(与逻辑)或者Y=A'+A(或逻辑)两者形式之一的,则说明变量A不但具有竞争能力,而且存在竞争-冒险。单变量的竞争-冒险现象比较容易检查。Y1=AB+A'CY1=A+A'取B、C同时为1Y2=AB+A'C+BCY2=1取B、C同时为1
上述方法只能检查单变量的竞争-冒险现象。对于复杂的数字系统,门电路往往是在两个或两个以上的输入信号之间发生竞争,这时就很难从函数表达式或卡诺图发现所有的竞争-冒险了。
在现代数字系统设计中,广泛应用计算机仿真的方法来排查电路的竞争-冒险现象。用计算机程序产生所有可能的输入信号的取值组合,运行仿真软件,分析电路的输出以排查所有潜在的竞争-冒险。6.竞争-冒险现象的消除方法(1)修改逻辑设计Y=AB+A'CY=AB+A'C+BC冗余项(2)引入选通脉冲(3)接入滤波电容?思考与练习4-20.异或门和同或门是否存在竞争-冒险现象?试分析说明。4-21.组合电路产生竞争-冒险现象的本质原因是什么?结合2线-4线译码器进行分析说明。4.5*
模块功能的描述方法
逻辑功能描述是Verilog模块的核心。1.结构描述
复杂的数字系统通常采用自顶向下(top-down)的设计方法。首先定义系统顶层模块的功能,然后将顶层模块分解为许多功能模块,再把每个功能模块分解为下一层次的子模块,如图所示,直到可以用基元或者用户设计好的功能模块实现为止。
结构描述(structuralcoding)是将模块中的基元与基元、基元与模块,或者模块与模块之间的连接关系以文本的形式表达。例化是结构描述的基本方法。被例化的模块习惯上称为子模块。
子模块例化的语法格式为:
子模块名例化模块名(端口关联列表);其中,例化模块件名可以省略。端口关联列表用于说明子模块的端口与例化模块端口之间的连接关系,有“名称关联方式”和“位置关联方式”两种方式。
名称关联(by-name)方式直接指出子模块的端口与实例模块端口之间的对应关系,与模块端口排列顺序无关。应用的语法格式为:
.子模块端口1(例化模块端口名),…,.子模块端口n(例化模块端口名);
位置关联(in-order)方式不需要列出子模块的端口名,只需要把例化模块的端口名按子模块定义时的端口顺序书写就能映射连接到子模块的相应端口。应用的语法格式为:
(例化模块端口1,例化模块端口2,……,例化模块端口n);modulehalf_adder(A,B,S,CO);
inputA,B;
outputwireS,CO;xor(S,A,B);//位置关联and(CO,A,B);//位置关联endmodule
根据半加器的逻辑图,可以应用Verilog中的基元描述半加器。
全加器可以由两个半加器和一个或门实现,因此应用Verilog基元和调用上例中设计的半加器进行结构化描述。moduleFull_Adder(A,B,CI,S,CO);
inputA,B,CI;
outputwireS,CO;
wirenet1,net2,net3;
half_adderU1(A,B,net1,net2);
half_adderU2(net1,CI,S,net3);
orU3(CO,net2,net3);endmodulemodulehalf_adder(A,B,S,CO);
inputA,B;
outputwireS,CO;xor(S,A,B);//位置关联and(CO,A,B);//位置关联endmodule2数据流描述
数据流描述(dataflowcoding)采用连续赋值语句assign,基于函数表达式描述线网的逻辑功能,用于描述组合逻辑电路。数据流描述的语法格式为:
assign[延迟量]线网名=函数表达式;
连续赋值的含义是赋值过程是连续的,即当赋值表达式中任意一个信号发生变化时,表达式的值立即被计算,经过“#延迟量”定义的延迟时间后直接将结果赋给左边线网。延迟量定义了右侧表达式的值发生变化时到赋给左边信号之间的延迟时间,用于仿真,缺省时默认值为0。
基于2选一数据选择器的逻辑函数表达式y=A’·D0+A·D1,应用assign语句进行描述。
modulemux2to1(D0,D1,A,y);
inputD0,D1,A;
outputwirey;
assigny=!A&&D0||A&&D1;endmodulemoduleFull_Adder(A,B,CI,SUM,CO);
inputA,B,CI;
outputwireS,CO;
assignSUM=A^B^CI;
assignCO=A&B|(A|B)&CI;endmodulemoduleAdder_4bits(A,B,CI,S,CO);input[3:0]A,B;inputCI;outputwire[3:0]S;outputwireCO;assign{CO,S}=A+B+CI;endmodule4位加法器的数据流描述。根据全加器的逻辑函数表达式,应用assign语句进行描述。{CO,S3S2S1S0}=A3A2A1A0+B3B2B1B0+CI3行为描述
行为描述(behavioralcoding)是以过程语句为单位,过程语句内部用高级语言语句描述模块的行为特性,不考虑电路的具体实现方法。
always@(事件列表)
begin[:块名]变量说明;[延迟量1]语句1;……[延迟量n]语句n;
end其中,关键词begin和end用于将两条或两条以上的语句组合在一起,形成一个语句块。事件列描述触发always语句执行的条件,分为电平敏感事件和边沿触发事件两大类。
always语句是最具有特色的过程语句,其特点是反复执行。应用的语法格式为:
电平敏感事件是指当事件列表中的线网/变量的电平发生变化时启动执行语句块,应用的语法格式为:
@(电平敏感量1or…or电平敏感量n)语句块;
例如:always@(aorborc)begin
……end表示只要a、b、c任意一个发生变化时,begin……end中的语句就会被执行。在Verilog-2001标准中,敏感事件列表中的关键词or可以用“,”代替,即使用“@(a,b,c)”描述和使用“@(aorborc)”描述等效。3.1行为描述中的高级程序语句
VerilogHDL过程语言中的高级程序语句用于控制代码的流向,分为条件语句、分支语句和循环语句三种类型。(1)条件语句
条件语句根据条件表达式是否为真确定是否执行相应的语句块,有简单条件语句、分支条件语句和多重条件语句三种应用形式。
简单条件语句应用的语法格式为:
if(条件表达式)语句块;表示条件表达式为真时执行语句块。由于没有定义条件表达式为假时执行的操作,默认电路保持,因此简单条件语句用于描述时序逻辑电路。
分支条件语句应用的语法格式为:
if(条件表达式)语句块1;
else语句块2;表示如果条件表达式为真时执行语句块1,否则执行语句块2。例如,2选一数据选择器也可采用分支条件语句进行描述:always@(A0,D0,D1)
beginif(
!A0
)Y=D0;elseY=D1;
end多重条件语句应用的语法格式为:
if(条件表达式1)语句块1;
elseif(条件表达式2)语句块2;
……
elseif(条件表达式n)语句块n;
else语句块n+1;
对于多重条件语句,如果条件表达式1为真则执行语句块1,否则依次判断条件表达式2至条件表达式n,若为真则执行相应的语句块。当所有的条件均不满足时,才执行语句块n+1。由于多重条件语句对条件表达式的判断有先后顺序,隐含有优先级的关系,因此可用于描述优先编码器.moduleprior_encoder
(I3,I2,I1,I0,y);
inputI3,I2,I1,I0;
outputreg[1:0]y;
always@(I3,I2,I1,I0)beginif(
I3
)
y=2'b11;elseif
(
I2
)
y=2'b10;elseif(
I1
)
y=2'b01;else
y=2'b00;
end
endmodule
case(分支表达式)
列出值1:语句块1;列出值2:语句块2;……列出值n:语句块n;
[default:语句块n+1;]//“[]”表示可选项endcase注意:case语句与C语言中的switch语句不同!对于case语句,当表达式的值与某个列出值匹配时执行相应的语句块后退出,而switch语句需要加break才能退出。
case语句用于多路选择,应用的语法格式为:
对于case语句,当分支表达式的值与某个列出值匹配时则执行相应的语句块。若分支表达式的值与所有列出值都不匹配时,才执行default后面的语句块n+1。(2)分支语句用case语句描述2线-4线译码器用case语句描述4选一数据选择器
除了case语句外,分支语句还有casez和casex两种应用形式。
在case语句中,表达式和列出值中的x和z是作为字符值进行比较的。也就是说,x只与x(或X)匹配相等,z只与z(或Z)匹配相等。
casez语句用来处理不考虑z的比较过程,出现在表达式和列出值中的z被认为是无关位,与任意取值都匹配相等。
casex语句用来处理不考虑x和z的比较过程,出现在表达式和列出值中的x和z都被认为是无关位,与任意取值都匹配相等。在VerilogHDL中,通常用问号“?”来代替字符x和z,表示无关位。(3)循环语句循环语句的作用与C语言相同。VerilogHDL支持4类循环语句:for、while、repeat和forever,其中for语句为常用的循环语句的,可综合为硬件电路。for语句应用的语法格式为:for(循环初值表达式1;循环控制条件表达式2;增量表达式3)语句块;4.6*
常用组合器件的描述用分支语句描述74HC148moduleHC148(s_n,i_n,y_n,ys_n,yex_n);inputs_n;input[7:0]i_n;outputreg[2:0]y_n;outputwireys_n;outputwireyex_n;//编码标志逻辑assignys_n=s_n?1'b1:(&i_n?1'b0:1'b1);assignyex_n=s_n?1'b1:(&i_n?1'b1:1'b0);//编码过程,应用casex语句描述always@(s_n,i_n)if(!s_n)casex(i_n)8'b0???????:y_n=3'b000;8'b10??????:y_n=3'b001;8'b110?????:y_n=3'b010;8'b1110????:y_n=3'b011;8'b11110???:y_n=3'b100;8'b111110??:y_n=3'b101;8'b1111110?:y_n=3'b110;8'b11111110:y_n=3'b111;8'b11111111:y_n=3'b111;default:y_n=3'b111;endcaseelsey_n=3'b111;endmodule用分支语句描述74HC138
moduleHC138(s1,s2_n,s3_n,bin_code,y_n);inputs1,s2_n,s3_n;input[2:0]bin_code;outputreg[7:0]y_n;//内部线网定义wireen;//内部线网逻辑assignen=s1&&!s2_n&&!s3_n;//译码过程,应用case语句描述always@(en,bin_code)if(en)case(bin_code)3'b000:y_n=8'b11111110;3'b001:y_n=8'b11111101;3'b010:y_n=8'b11111011;3'b011:y_n=8'b11110111;3'b100:y_n=8'b11101111;3'b101:y_n=8'b11011111;3'b110:y_n=8'b10111111;3'b111:y_n=8'b01111111;default:y_n=8'b11111111;endcaseelsey_n=8'b11111111;endmodule
moduleCD4511(le,bi_n,lt_n,bcd,seg7);inputle,bi_n,lt_n;input[3:0]bcd;outputreg[6:0]seg7;//译码过程,非阻塞赋值always@(le,bi_n,lt_n,bcd)if(!lt_n)//灯测试信号有效时seg7<=7'h7f;//seg7:gfedcbaelseif(!bi_n)//灭灯输入有效时seg7<=7'h00;elseif(!le)//锁存信号无效时case(bcd)//seg7:gfedcba4'b0000:seg7<=7'h3f;//显示04'b0001:seg7<=7'h06;//显示14'b0010:seg7<=7'h5b;//显示24'b0011:seg7<=7'h4f;//显示34'b0100:seg7<=7'h66;//显示4
4'b0101:seg7<=7'h6d;//显示54'b0110:seg7<=7'h7c;//显示64'b0111:seg7<=7'h07;//显示74'b1000:seg7<=7'h7f;//显示84'b1001:seg7<=7'b67;//显示9default:seg7<=7'h00;//不显示endcaseendmodulemoduleHC151(s_n,d,addr,y,w_n);inputs_n;input[7:0]d;input[2:0]addr;outputregy;outputwirew_n;//互补输出逻辑assignw_n=~y;//数据选择过程always@(s_n,d,addr)if(!s_n)case(addr)3'b000:y=d[0];3'b001:y=d[1];3'b010:y=d[2];3'b011:y=d[3];3'b100:y=d[4];
3'b101:y=d[5];3'b110:y=d[6];3'b111:y=d[7];default:y=d[0];endcaseelse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏教版高中英语必修第三册第6单元语法练习题及答案
- 2026年安全生产标准化评审员考试安全生产标准化基础知识习题及答案
- 北师大版初中英语第7章综合测试卷及答案
- 人教版五年级上册语文《期中》测试卷()
- 2026年高级会计资格证考试审计实务模拟试卷及答案
- 部编版小学五年级道德与法治下册第7单元同步练习题及答案
- 陕西省高中物理选修模块光学单元测试卷及答案
- 2026年人教版小学英语六年级下册第10单元阅读理解专项训练习题及答案
- 江苏省苏教版八年级物理下册原子物理电磁学专项测试卷及答案
- 2026年进口精致香辣小食
- 2026年度中国广电山东网络有限公司市县公司招聘(232个岗位)笔试历年备考题库附带答案详解
- PGT术前遗传咨询
- 写字楼垃圾处置方案
- 硅锰合金冶炼基础知识
- 智力残疾评定课件
- 2026年龙江银行招聘笔试题库附答案
- 国网电力安全工作规程(配电部分)13-17章
- 2025年荆州市文旅集团公开招聘10名工作人员笔试备考试题附答案
- 中小学测验试卷命制规范标准
- 吊篮安拆安全培训课件
- 叙永县乡镇污水处理厂(第一批)建设项目环评报告
评论
0/150
提交评论