数字电路四章节.ppt
4 组合逻辑电路,4.1组合逻辑电路的分析,4.2组合逻辑电路的设计,4.3组合逻辑电路中的竞争和冒险,4.4常用组合逻辑集成电路,4.5组合可编程电路,4.6用Verilog HDL描述组合逻辑电路,教学基本要求,1.熟练掌握组合逻辑电路的分析方法和设计方法2.掌握编码器、译码器、数据选择器、数值比较器和加法器的逻辑功能及其应用;3.学会阅读MSI器件的功能表,并能根据设计要求完成电路的正确连接。4.掌握可编程逻辑器件的表示方法,会用PLD实现组合逻辑电路,组合逻辑电路的一般框图,Li=f(A1,A2,An)(i=1,2,m),工作特征:组合逻辑电路工作特点:在任何时刻,电路的输出状态只取决于同一时刻的输入状态而与电路原来的状态无关。,序 关于组合逻辑电路,结构特征:1、输出、输入之间没有反馈延迟通路,2、不含记忆单元,二.组合逻辑电路的分析步骤:,4.1 组合逻辑电路分析,1、由逻辑图写出各输出端的逻辑表达式;,2、化简和变换逻辑表达式;,3、列出真值表;,4、根据真值表或逻辑表达式,经分析最后确定其功能。,根据已知逻辑电路,经分析确定电路的的逻辑功能。,一.组合逻辑电路分析,三、组合逻辑电路的分析举例,例1 分析如图所示逻辑电路的功能。,1.根据逻辑图写出输出函数的逻辑表达式,2.列写真值表。,3.确定逻辑功能:,解:,输入变量的取值中有奇数个1时,L为1,否则L为0,电路具有为奇校验功能。,如要实现偶校验,电路应做何改变?,例2 试分析下图所示组合逻辑电路的逻辑功能。,解:1、根据逻辑电路写出各输出端的逻辑表达式,并进行化简和变换。,X=A,2、列写真值表,X=A,真值表,这个电路逻辑功能是对输入的二进制码求反码。最高位为符号位,0表示正数,1表示负数,正数的反码与原码相同;负数的数值部分是在原码的基础上逐位求反。,3、确定电路逻辑功能,真值表,1、逻辑抽象:根据实际逻辑问题的因果关系确定输入、输出变量,并定义逻辑状态的含义;,2、根据逻辑描述列出真值表;,3、由真值表写出逻辑表达式;,5、画出逻辑图。,4、根据器件的类型,简化和变换逻辑表达式,二、组合逻辑电路的设计步骤,一、组合逻辑电路的设计:根据实际逻辑问题,求出所要求逻辑功能的最简单逻辑电路。,4.2 组合逻辑电路的设计,例1 某火车站有特快、直快和慢车三种类型的客运列车进出,试用两输入与非门和反相器设计一个指示列车等待进站的逻辑电路,3个指示灯一、二、三号分别对应特快、直快和慢车。列车的优先级别依次为特快、直快和慢车,要求当特快列车请求进站时,无论其它两种列车是否请求进站,一号灯亮。当特快没有请求,直快请求进站时,无论慢车是否请求,二号灯亮。当特快和直快均没有请求,而慢车有请求时,三号灯亮。,解:1、逻辑抽象。,输入信号:I0、I1、I2分别为特快、直快和慢车的进站请求信号且有进站请求时为1,没有请求时为0。,输出信号:L0、L1、L2分别为3个指示灯的状态,且灯亮为1,灯灭为0。,根据题意列出真值表,(2)写出各输出逻辑表达式。,L0=I0,真值表,2、根据真值表写出各输出逻辑表达式。,L0=I0,3、根据要求将上式变换为与非形式,4、根据输出逻辑表达式画出逻辑图。,例2 试设计一个码转换电路,将4位格雷码转换为自然二进制码。可以采用任何逻辑门电路来实现。,解:(1)明确逻辑功能,列出真值表。,设输入变量为G3、G2、G1、G0为格雷码,,当输入格雷码按照从0到15递增排序时,可列出逻辑电路真值表,输出变量B3、B2、B1和B0为自然二进制码。,逻辑电路真值表,(2)画出各输出函数的卡诺图,并化简和变换。,(3)根据逻辑表达式,画出逻辑图,4.3 组合逻辑电路中的竞争冒险,4.3.1 产生的竞争冒险的原因,4.3.2 消去竞争冒险的方法,4.3 组合逻辑电路中的竞争冒险,不考虑门的延时时间,考虑门的延时时间,当A=0 B=1,4.3.1 产生的竞争冒险的原因,竞争:当一个逻辑门的两个输入端的信号同时向相反方向变化,而变化的时间有差异的现象。,冒险:两个输入端的信号取值的变化方向是相反时,如门电路输出端的逻辑表达式简化成两个互补信号相乘或者相加,由竞争而可能产生输出干扰脉冲的现象。,4.3.2 消去竞争冒险的方法,1.发现并消除互补变量,B=C=0时,2.增加乘积项,避免互补项相加,,,当A=B=1时,根据逻辑表达式有,当A=B=1时,3.输出端并联电容器,如果逻辑电路在较慢速度下工作,为了消去竞争冒险,可以在输出端并联一电容器,致使输出波形上升沿和下降沿变化比较缓慢,可对于很窄的负跳变脉冲起到平波的作用。,420pF,4.4 若干典型的组合逻辑集成电路,4.4.1 编码器,4.4.2 译码器/数据分配器,4.4.3 数据选择器,4.4.4 数值比较器,4.4.5 算术运算电路,1、)编码器(Encoder)的概念与分类,编码:赋予二进制代码特定含义的过程称为编码。,如:8421BCD码中,用1000表示数字8,如:ASCII码中,用1000001表示字母A等,编码器:具有编码功能的逻辑电路。,4.4.1 编码器,4.4 若干典型的组合逻辑集成电路,能将每一个编码输入信号变换为不同的二进制的代码输出。,如8线-3线编码器:将8个输入的信号分别编成 8个3位二进制数码输出。,如BCD编码器:将10个编码输入信号分别编成10个4位码输出。,编码器的逻辑功能:,1、)编码器(Encoder)的概念与分类,编码器的分类:普通编码器和优先编码器。,普通编码器:任何时候只允许输入一个有效编码信号,否则输出就会发生混乱。,优先编码器:允许同时输入两个以上的有效编码信号。当同时输入几个有效编码信号时,优先编码器能按预先设定的优先级别,只对其中优先权最高的一个进行编码。,1、)编码器(Encoder)的概念与分类,二进制编码器的结构框图,普通二进制编码器,1、编码器的工作原理,(1)4线2线普通二进制编码器(设计),编码器的输入为高电平有效。,1、编码器的工作原理,该电路是否可以再简化?,(2.)键盘输入8421BCD码编码器(分析),代码输出,使能标志,编码输入,该编码器为输入低电平有效,2.键盘输入8421BCD码编码器功能表,当所有的输入都为1时,Y1Y0=?,Y1Y0=00,无法输出有效编码。,结论:普通编码器不能同时输入两个已上的有效编码信号,I2=I3=1,I1=I0=0时,Y1Y0=?,Y1Y0=00,3.优先编码器,优先编码器的提出:,实际应用中,经常有两个或更多输入编码信号同时有效。,必须根据轻重缓急,规定好这些外设允许操作的先后次 序,即优先级别。,识别多个编码请求信号的优先级别,并进行相应编码的逻辑部件称为优先编码器。,(2)优先编码器线(42 线优先编码器)(设计),(1)列出功能表,高,低,(2)写出逻辑表达式,(3)画出逻辑电路(略),输入编码信号高电平有效,输出为二进制代码,输入为编码信号I3 I0 输出为Y1 Y0,优先编码器CD4532的示意框图、引脚图,2 集成电路编码器,CD4532电路图,优先编码器CD4532功能表,为什么要设计GS、EO输出信号?,用二片CD4532构成16线-4线优先编码器,其逻辑图如下图所示,试分析其工作原理。,。,0,0,0 0 0 0 0,无编码输出,0,。,1,1,0 0 0 0,0,0 1 1 1,那块芯片的优先级高?,1,。,1,0,1 0 0 0,0,1 1 1 1,译码器的分类:,译码:译码是编码的逆过程,它能将二进制码翻译成代表某一特定含义的信号.(即电路的某种状态),1 译码器的概念与分类,译码器:具有译码功能的逻辑电路称为译码器。,唯一地址译码器,代码变换器,将一系列代码转换成与之一一对应的有效信号。,将一种代码转换成另一种代码。,二进制译码器 二十进制译码器显示译码器,常见的唯一地址译码器:,4.4.2 译码器/数据分配器,2线-4线译码器的逻辑电路(分析),(1.)二进制译码器,n 个输入端,使能输入端,2n个输出端,设输入端的个数为n,输出端的个数为M则有 M=2n,2、集成电路译码器,(a)74HC139集成译码器,(1.)二进制译码器,逻辑符号说明,逻辑符号框外部的符号,表示外部输入或输出信号名称,字母上面的“”号说明该输入或输出是低电平有效。符号框内部的输入、输出变量表示其内部的逻辑关系。在推导表达式的过程中,如果低有效的输入或输出变量(如)上面的“”号参与运算(如E变为E),则在画逻辑图或验证真值表时,注意将其还原为低有效符号。,(b)74HC138(74LS138)集成译码器,引脚图,逻辑图,74HC138集成译码器,逻辑图,74HC138集成译码器功能表,1、已知下图所示电路的输入信号的波形试画出译码器输出的波形。,译码器的应用,2、译码器的扩展,用74X139和74X138构成5线-32线译码器,基于这一点用该器件能够方便地实现三变量逻辑函数。,3、用译码器实现逻辑函数。,.,当E3=1,E2=E1=0时,用一片74HC138实现函数,首先将函数式变换为最小项之和的形式,在译码器的输出端加一个与非门,即可实现给定的组合逻辑函数.,数据分配器:相当于多输出的单刀多掷开关,是一种能将从数据分时送到多个不同的通道上去的逻辑电路。,数据分配器示意图,用74HC138组成数据分配器,用译码器实现数据分配器,010,CBA,74HC138译码器作为数据分配器时的功能表,集成二十进制译码器 7442,功能:将8421BCD码译成为10个状态输出。,功能表,对于BCD代码以外的伪码(10101111这6个代码)Y0 Y9 均为高电平。,(2)集成二十进制译码器7442,显示译码器,1.七段显示译码器,(1)最常用的显示器有:半导体发光二极管和液晶显示器。,常用的集成七段显示译码器,-CMOS七段显示译码器74HC4511,CMOS七段显示译码器74HC4511功能表,CMOS七段显示译码器74HC4511功能表(续),例 由74HC4511构成24小时及分钟的译码电路如图所示,试分析小时高位是否具有零熄灭功能。,4.3.3 数据选择器,1、数据选择器的定义与功能,数据选择的功能:在通道选择信号的作用下,将多个通道的数据分时传送到公共的数据通道上去的。,数据选择器:能实现数据选择功能的逻辑电路。它的作用相当于多个输入的单刀多掷开关,又称“多路开关”。,4选1数据选择器,2 位地址码输入端,使能信号输入端,低电平有效,1路数据输出端,(1)逻辑电路,数据输入端,(2)工作原理及逻辑功能,74LS151功能框图,2、集成电路数据选择器,8选1数据选择器74HC151,2、集成电路数据选择器,2个互补输出端,8 路数据输入端,1个使能输入端,3 个地址输入端,74LS151的逻辑图,3、74LS151的功能表,数据选择器组成逻辑函数产生器,控制Di,就可得到不同的逻辑函数。,5、数据选择器74LS151的应用,比较Y与L,当 D3=D5=D6=D7=1 D0=D1=D2=D4=0时,,Y=L,例1 试用8选1数据选择器74LS151产生逻辑函数,解:,利用8选1数据选择器组成函数产生器的一般步骤,a、将函数变换成最小项表达式,b、将使器件处于使能状态,c、地址信号S2、S1、S0 作为函数的输入变量,d、处理数据输入D0D7信号电平。逻辑表达式中有mi,则相应Di=1,其他的数据输入端均为0。,总结:,用两片74151组成二位八选一的数据选择器,数据选择器的扩展位的扩展,字的扩展,将两片74LS151连接成一个16选1的数据选择器,,实现并行数据到串行数据的转换,1.1位数值比较器(设计),数值比较器:对两个1位数字进行比较(A、B),以判断其大小的逻辑电路。,输入:两个一位二进制数 A、B。,输出:,4.4.4 数值比较器,1位数值比较器,2、2 位数值比较器:,输入:两个2位二进制数 A=A1 A0、B=B1 B0,能否用1位数值比较器设计两位数值比较器?,比较两个2 位二进制数的大小的电路,当高位(A1、B1)不相等时,无需比较低位(A0、B0),高位比较的结果就是两个数的比较结果。,当高位相等时,两数的比较结果由低位比较的结果决定。,用一位数值比较器设计多位数值比较器的原则,真值表,FAB=(A1B1)+(A1=B1)(A0B0),FA=B=(A1=B1)(A0=B0),FAB=(A1B1)+(A1=B1)(A0B0),FAB=(A1B1)+(A1=B1)(A0B0),FA=B=(A1=B1)(A0=B0),FAB=(A1B1)+(A1=B1)(A0B0),3 集成数值比较器,(1.)集成数值比较器74LS85的功能,74LS85的引脚图,74LS85是四位数值比较器,其工作原理和两位数值比较器相同。,74LS85的示意框图,4位数值比较器74LS85的功能表,用两片74LS85组成8位数值比较器(串联扩展方式)。,2.集成数值比较器的位数扩展,输入:A=A7 A6A5A4A3 A2A1A0 B=B7B6B5B4B3 B2B1B0,用两片74LS85组成16位数值比较器(串联扩展方式)。,采用串联扩展方式数值比较器,用74HC85组成16位数值比较器的并联扩展方式。,4.4.5 算术运算电路,在两个1位二进制数相加时,不考虑低位来的进位的相加-半加 在两个二进制数相加时,考虑低位进位的相加-全加 加法器分为半加器和全加器两种。,半加器,全加器,1、半加器和全加器,两个4 位二进制数相加:,(1)1位半加器(Half Adder),不考虑低位进位,将两个1位二进制数A、B相加的器件。,半加器的真值表,逻辑表达式,如用与非门实现最少要几个门?,C=AB,逻辑图,(2)全加器(Full Adder),全加器真值表,全加器能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号。,你能用7415174138设计全加器吗?用这两种器件组成逻辑函数产生电路,有什么不同?,于是可得全加器的逻辑表达式为,加法器的应用,全加器真值表,ABC有奇数个1时S为1;ABC有偶数个1和全为0时S为0。-用全加器组成三位二进制代码奇偶校验器,用全加器组成八位二进制代码奇偶校验器,电路应如何连接?,(1)串行进位加法器,如何用1位全加器实现两个四位二进制数相加?A3 A2 A1 A0+B3 B2 B1 B0=?,低位的进位信号送给邻近高位作为输入信号,采用串行进位加法器运算速度不高。,2、多位数加法器,定义两个中间变量Gi和Pi:,Gi=AiBi,(2)超前进位加法器,提高运算速度的基本思想:设计进位信号产生电路,在输入每位的加数和被加数时,同时获得该位全加的进位信号,而无需等待最低位的进位信号。,定义第i 位的进位信号(Ci):,Ci=GiPi Ci-1,4位全加器进位信号的产生:,C0=G0+P0 C-1,C1=G1+P1 C0C1=G1+P1 G0+P1P0 C-1,C2=G2+P2 C1 C2=G2+P2 G1+P2 P1 G0+P2 P1 P0C-1,C3=G3+P3 C2=G3+P3(G2+P2 C1)=G3+P3 G2+P3P2 C1=G3+P3 G2+P3P2(G1+P1C0)C3=G3+P3 G2+P3P2 G1+P3P2 P1(G0+P0C-1),Gi=AiBi,Ci=GiPi Ci-1,集成超前进位产生器74LS182,逻辑图,逻辑符号,超前进位集成4位加法器74LS283,74HC283逻辑框图,74HC283逻辑框图,4.超前进位加法器74LS283的应用,例1.用两片74LS283构成一个8位二进制数加法器。,在片内是超前进位,而片与片之间是串行进位。,余3码输出,1,1,0,0,例.用74283构成将8421BCD码转换为余3码的码制转换电路。,8421码,余3码,0000,0001,0010,0011,0100,0101,+0011,+0011,+0011,CO,3 减法运算,在实际应用中,通常是将减法运算变为加法运算来处理,即采用加补码的方法完成减法运算。,若n位二进制的原码为N原,则与它相对应的2 的补码为N补=2N N原补码与反码的关系式N补=N反+1,A B=A+B补2n=A+B反+12n,1)AB 0的情况。,2)AB 0的情况。,结果表明,在AB 0时,如加补进位信号为1,所得的差就是差的原码。,在AB 0时,如加补的进位信号为0,所得的差是差绝对值的补码。,A=0101,B=0001,A=0001,B=0101,1 0 1 0 0,0 1 1 0 0,输出为原码的4位减法运算逻辑图,4.5 组合可编程逻辑器件,4.5.1 PLD的结构、表示方法及分类,4.5.2 组合逻辑电路的PLD实现,4.5 组合可编程逻辑器件,可编程逻辑器件是一种可以由用户定义和设置逻辑功能的器件。该类器件具有逻辑功能实现灵活、集成度高、处理速度快和可靠性高等特点。,4.5.1 PLD的结构、表示方法及分类,与门阵列,或门阵列,乘积项,和项,PLD主体,输入电路,输入信号,互补输入,输出电路,输出函数,可由或阵列直接输出,构成组合输出;通过寄存器输出,构成时序方式输出。,1、PLD的基本结构,2.PLD的逻辑符号表示方法,(1)连接的方式,(2)基本门电路的表示方式,F1=ABC,与门,或门,A,B,C,1,L,D,F1=A+B+C+D,三态输出缓冲器,输出恒等于0的与门,输出为1的与门,输入缓冲器,(3)编程连接技术,PLD表示的与门,熔丝工艺的与门原理图,高电平,A、B、C有一个输入低电平0V,A、B、C三个都输入高电平+5V,低电平,L=ABC,A、B、C 中有一个为0,A、B、C 都为1,输出为0;,输出为1。,L=AC,L=ABC,X,X,器件的开关状态不同,电路实现逻辑函数也就不同,1 0 1,1 1 1,(4)浮栅MOS管开关,用不同的浮栅MOS管连接的PLD,编程信息的擦除方法也不同。SIMOS管连接的PLD,采用紫外光照射擦除;Flotox MOS管和快闪叠栅MOS管,采用电擦除方法。,浮栅MOS管,叠栅注入MOS(SIMOS)管,浮栅隧道氧化层MOS(Flotox MOS)管,快闪(Flash)叠栅MOS管,当浮栅上带有负电荷时,使得MOS管的开启电压变高,如果给控制栅加上VT1控制电压,MOS管仍处于截止状态。,若要擦除,可用紫外线或X射线,距管子2厘米处照射15-20分钟。,a.叠栅注入MOS(SIMOS)管,导通,截止,L=BC,1 1 1 1,浮栅延长区与漏区N+之间的交叠处有一个厚度约为80A(埃)的薄绝缘层遂道区。,当遂道区的电场强度大到一定程度,使漏区与浮栅间出现导电遂道,形成电流将浮栅电荷泄放掉。,遂道MOS管是用电擦除的,擦除速度快。,b.浮栅隧道氧化层MOS(Flotox MOS)管,结构特点:1.闪速存储器存储单元MOS管的源极N+区大于漏极N+区,而SIMOS管的源极N+区和漏极N+区是对称的;2.浮栅到P型衬底间的氧化绝缘层比SIMOS管的更薄。,c.快闪叠栅MOS管开关(Flash Memory)(自学),特点:结构简单、集成度高、编程可靠、擦除快捷。,3.PLD的分类,按集成密度划分为,2、按结构特点划分,简单PLD(PAL,GAL),复杂的可编程器件(CPLD):CPLD的代表芯片如:Altera的MAX系列,现场可编程门阵列(FPGA),PLD中的三种与、或阵列,与阵列、或阵列均可编程(PLA),与阵列固定,或阵列可编程(PROM),与阵列可编程,或阵列固定(PAL和GAL等),按PLD中的与、或阵列是否编程分,4.5.2 组合逻辑电路的 PLD 实现,例1 由PLA构成的逻辑电路如图所示,试写出该电路的逻辑表达式,并确定其逻辑功能。,写出该电路的逻辑表达式:,AnBnCn,AnBn,AnCn,BnCn,全加器,试写出该电路的逻辑表达式。,4.6 用VerilogHDL描述组合逻辑电路,4.6.1 组合逻辑电路的门级建模,4.6.2 组合逻辑电路的数据流建模,4.6.3 组合逻辑电路的行为级建模,4.6 用VerilogHDL描述组合逻辑电路,用VerilogHDL描述组合逻辑电路有三种不同抽象级别:组合逻辑电路的门级描述、组合逻辑电路的数据流描述、组合逻辑电路的行为级描述。VerilogHDL描述的电路就是该电路的VerilogHDL模型。,end,基本门级元件模型,多输入门,多输出门,三态门,4.6.1 组合逻辑电路的门级建模,门级建模:将逻辑电路图用HDL规定的文本语言表示出来。,Verilog 基本门级元件,1、多输入门,只允许有一个输出,但可以有多个输入。,and A1(out,in1,in2,in3);,X-不确定状态,Z-高阻态,2、多输出门,允许有多个输出,但只有一个输入。,not N1(out1,out2,in);,buf B1(out1,out2,in);,3、三态门,有一个输出、一个数据输入和一个输入控制。如果输入控制信号无效,则三态门的输出为高阻态z。,4、设计举例,/Gate-level description of a 2-to-4-line decoder module _2to4decoder(A1,A0,E,Y);input A,B,E;output 3:0Y;wire A1not,A0not,Enot;not n1(A1not,A1),n2(A0not,A0),n3(Enot,E);nand n4(Y0,A1not,A0not,Enot),n5(Y1,A1not,A0,Enot),n6(Y2,A1,A0not,Enot),n7(Y3,A1,A0,Enot);endmodule,试用Verilog语言的门级元件描述2线-4线译码器.,例2 用Verilog的门级元件进行描述由三态门构成的2选1数据选择器。,/Gate-level description of a 2-to-1-line multiplexer module _2to1muxtri(A,B,SEL,L);input A,B,SEL output L;tri L;bufif1(L,B,SEL);bufif0(L,A,SEL);endmodule,5、分层次的电路设计方法简介,4位全加器的层次结构框图,分层次的电路设计:在电路设计中,将两个或多个模块组合起来描述电路逻辑功能的设计方法。,设计方法:自顶向下和自底向上两种常用的设计方法,module halfadder(S,C,A,B);input A,B;output S,C;/Instantiate primitive gates xor(S,A,B);and(C,A,B);endmodule,/Gate-level hierarchical description of 4-bit adder/Description of half adder,/Description of 1-bit full addermodule fulladder(S,CO,A,B,CI);input A,B,CI;output S,CO;wire S1,D1,D2;/内部节点信号/Instantiate the halfadder halfadder HA1(S1,D1,A,B);halfadder HA2(S,D2,S1,CI);or g1(CO,D2,D1);endmodule,/Description of 4-bit full addermodule _4bit_adder(S,C3,A,B,C_1);input 3:0 A,B;input C_1;output 3:0 S;output C3;wire C0,C1,C2;/内部进位信号/Instantiate the fulladder fulladder FA0(S0,C0,A0,B0,C_1),FA1(S1,C1,A1,B1,C0),FA2(S2,C2,A2,B2,C1),FA3(S3,C3,A3,B3,C2);endmodule,4.6.2 组合逻辑电路的数据流建模,数据流建模能在较高的抽象级别描述电路的逻辑功能。通过逻辑综合软件,能够自动地将数据流描述转换成为门级电路。,Verilog HDL的运算符,位运算符与缩位运算的比较,A:4b1010、B:4b1111,,对同一个操作数的重复拼接还可以双重大括号构成的运算符例如4A=4b1111,2A,2B,C=8b11101000。,作用是将两个或多个信号的某些位拼接起来成为一个新的操作数,进行运算操作。,位拼接运算符,设A=1b1,B=2b10,C=2b00,则B,C4b1000A,B1,C03b110A,B,C,3b101=8b11000101。,一般用法:condition_expr?expr1:expr2;,条件运算符,是三目运算符,运算时根据条件表达式的值选择表达式。,首先计算第一个操作数condition_expr的值,如果结果为逻辑1,则选择第二个操作数expr1的值作为结果返回,结果为逻辑0,选择第三个操作数expr2的值作为结果返回。,2、数据流建模举例,连续赋值语句的执行过程是:只要逻辑表达式右边变量的逻辑值发生变化,则等式右边表达式的值会立即被计算出来并赋给左边的变量。,注意,在assign语句中,左边变量的数据类型必须是wire型。,数据流建模使用的基本语句是连续赋值语句assign,该语句用于对wire型变量进行赋值,它由关键词assign开始,后面跟着由操作数和运算符组成的逻辑表达式。,2选1数据选择器的连续赋值描述是:wire A,B,SEL,L;/声明4个连线型变量assign L=(A/连续赋值,/Dataflow description of a 2-to-4-line decoder,module decoder_df(A1,A0,E,Y);input A1,A0,E;output 3:0 Y;assign Y0=(A1 endmodule,/Dataflow description of 2-to-1-line multiplexermodule mux2x1_df(A,B,SEL,L);input A,B,SEL;output L;assign L=SEL?A:B;endmodule,用条件运算符描述了一个2选1的数据选择器。,在连续赋值语句中,如果SEL1,则输出LA;否则LB。,4.6.3 组合逻辑电路的行为级建模,行为级建模就是描述数字逻辑电路的功能和算法。一般使用always结构,后面跟着一系列过程赋值语句,给reg类型的变量赋值。,if(condition_expr1)true_statement1;else if(condition_expr2)true_statement2;else if(condition_expr3)true_statement3;else default_statement;,1、条件语句(if语句)条件语句就是根据判断条件是否成立,确定下一步的运算。,if(condition_expr)true_statement;,if(condition_expr)true_statement;else fale_ statement;,Verilog语言中有3种形式的if语句:,if后面的条件表达式一般为逻辑表达式或关系表达式。执行if语句时,首先计算表达式的值,若结果为0、x或z,按“假”处理;若结果为1,按“真”处理,并执行相应的语句。,是一种多分支条件选择语句,一般形式如下:case(case_expr)item_expr1:statement1;item_expr2:statement2;default:default_statement;/default语句可以省略,2、多路分支语句(case语句),/Behavioral description of 2-to-1-line multiplexermodule mux2to1_bh(A,B,SEL,L);input A,B,SEL;output L;reg L;/define register variable always(SEL or A or B)if(SEL=1)L=b;/也可以写成 if(SEL)L=B;else L=A;endmodule,例,/Behavioral description of 4-to-1-line multiplexermodule mux4to1_bh(A,SEL,E,L);input 3:0 A;input 1:0 SEL;output L;reg L;always(A or SEL or E)beginif(E=1)L=0;elsecase(SEL)2d0:L=A0;2d1:L=A1;2d2:L=A2;2d3:L=A3;endcase endendmodule,