1、单击此处编辑母版标题样式,abcd,单击此处编辑母版文本样式,abvd,第二级,第三级,第四级,第五级,*,4.6,用,VerilogHDL,描述组合逻辑电路,4.6.1,组合逻辑电路的门级建模,4.6.2,组合逻辑电路的数据流建模,4.6.3,组合逻辑电路的行为级建模,4.6,用,VerilogHDL,描述组合逻辑电路,用,VerilogHDL,描述组合逻辑电路有三种不同抽象级别:组合逻辑电路的门级描述、组合逻辑电路的数据流描述、组合逻辑电路的行为级描述。,VerilogHDL,描述的电路就是该电路的,VerilogHDL,模型。,行为描述方式:,一般使用下述语句描述,可以对组合、时序逻辑电
2、路建模。,1,),initial,语句,2,),always,语句,数据流描述方式:,一般使用,assign,语句描述,主要用于对组合逻辑电路建模。,门级描述:,一般使用,Primitive,(,内部元件)、自定义的下层模块对电路描述。主要用于层次化设计中。,end,基本门级元件模型,元件符号,功能说明,元件符号,功能说明,and,多输入端的与门,nand,多输入端的与非门,or,多输入端的或门,nor,多输入端的或非门,xor,多输入端的异或门,xnor,多输入端的异或非门,buf,多输出端的缓冲器,not,多输出端的反相器,bufif1,控制信号高电平有效的三态缓冲器,notif1,控制信
3、号高电平有效的,三态反相器,bufif0,控制信号低电平有效的三态缓冲器,notif0,控制信号低电平有效的,三态反相器,多输入门,多输出门,三态门,4.6.1,组合逻辑电路的门级建模,门级建模,:,将逻辑电路图用,HDL,规定的文本语言表示出来。,Verilog,基本门级元件,and n-input AND gate,nand,n-input NAND gate,or n-input OR gate,nor n-input NOR gate,xor,n-input exclusive,OR gate,xnor,n-input exclusive,NOR gate,buf,n-output b
4、uffer,not n-output inverter,bufif0 tri-state buffer;,Io enable,bufif1 tri-state buffer;,hi enable,notif0 tri-state inverter;,Io enable,notif1 tri-state inverter;,hi enable,1,、多输入门,只允许有一个输出,但可以有多个输入。,and A1,(,out,,,in1,,,in2,,,in3,);,输,入,2,x,x,x,1,z,x,x,x,1,x,x,x,0,1,1,1,1,1,1,0,z,x,1,0,输入,1,nand,nan
5、d,真值表,X-,不确定状态,Z-,高阻态,and,真值表,x,0,z,x,0,x,x,1,0,1,0,0,0,0,0,z,X,1,0,输入,1,and,输,入,2,x,x,x,x,x,调用名,X,X,1,X,Z,X,X,1,X,X,1,1,1,1,1,X,X,1,0,0,Z,X,1,0,输入,1,or,输,入,2,or,真值表,输,入,2,X,X,X,X,Z,X,X,X,X,X,X,X,0,1,1,X,X,1,0,0,Z,X,1,0,输入,1,xor,xor,真值表,2,、多输出门,允许有多个输出,但只有一个输入。,not N1,(,out1,,,out2,,,,,in,);,x,x,1,0
6、z,x,1,0,输 入,buf,输 出,buf,真值表,输 出,x,x,0,1,z,x,1,0,输 入,not,not,真值表,buf,B1,(,out1,,,out2,,,,,in,);,out1,in,out2,outN,out1,in,out2,outN,bufif1,真值表,x,x,x,z,z,x,x,x,z,x,1/z,1/z,1,z,1,0/z,0/z,0,z,0,z,x,1,0,控制输入,bufif1,数,据,输,入,x,x,x,z,z,x,x,x,z,x,0/z,0/z,0,z,1,1/z,1/z,1,0,z,z,x,1,0,控制输入,notif1,数,据,输,入,notif
7、1,真值表,3,、三态门,有一个输出、一个数据输入和一个输入控制。,如果输入控制信号无效,则三态门的输出为高阻态,z,。,4,、设计举例,/Gate-level description of a 2-to-4-line decoder,module _2to4decoder(A,1,A,0,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
8、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,
9、分层次的电路设计方法简介,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,/Descri
10、ption of 1-bit full adder,module,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,D1,S1,D2,/Description of 4-bit full adder,module _4bit_adder(S,C3,A,B,C_1);,input 3:0
11、 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,的运算符,类型,符号,功能说明,类型,符号
12、功能说明,算术运算符,(双目运算符),+,-,*,/,%,二进制加,二进制减,二进制乘,二进制除,求模,关系运算符,(双目运算符),=,右移,左移,位运算符与缩位运算的比较,A,:,4b1010,、,B,:,4b1111,,,AB=,1010,AB=,0101,A|B=,1111,A&B=,1010,A=0101,B=0000,位运算,A=1,B=1,A=0,B=0,|A=1,|B=0,&A=1,&B=1,&A=1&0&1&0=0,缩位运算,对同一个操作数的重复拼接还可以双重大括号构成的运算符,例如,4A=4b1111,,,2A,2B,C=8b11101000,。,作用是将两个或多个信号的某
13、些位拼接起来成为一个新的操作数,进行运算操作。,位拼接运算符,设,A=1b1,,,B=2b10,,,C=2b00,则,B,C,4b1000,A,B1,C0,3b110,A,B,C,3b101=8b11000101,。,一般用法:,condition_expr?expr1:expr2;,条件运算符,是三目运算符,运算时根据条件表达式的值选择表达式。,首先计算第一个操作数,condition_expr,的值,如果结果为逻辑,1,,,则选择第二个操作数,expr1,的值作为结果返回,结果为逻辑,0,,,选择第三个操作数,expr2,的值作为结果返回。,2,、数据流建模举例,连续赋值语句的执行过程是:
14、只要逻辑表达式右边变量的逻辑值发生变化,则等式右边表达式的值会立即被计算出来并赋给左边的变量。,注意,在,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,dec
15、oder_df,(A1,A0,E,Y);,input A1,A0,E;,output 3:0 Y;,assign Y0=(A1,assign Y1=(A1,assign Y2=(A1,assign Y3=(A1,endmodule,/Dataflow description of 2-to-1-line multiplexer,module mux2x1_df(A,B,SEL,L);,input A,B,SEL;,output L;,assign L=SEL?A:B;,endmodule,用条件运算符描述了一个,2,选,1,的数据选择器。,在连续赋值语句中,如果,SEL,1,,则输出,L,A,
16、否则,L,B,。,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
17、),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:,defa
18、ult_statement,;/default,语句可以省略,2,、多路分支语句(,case,语句),/Behavioral description of 2-to-1-line multiplexer,module 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 multiplexer,module mux4to1_bh(A,SEL,E,L);,input 3:0 A;,input 1:0 SEL;,output L;,reg,L;,always(A or SEL or E),begin,if(E=1)L=0;,else,case(SEL),2d0:L=A0;,2d1:L=A1;,2d2:L=A2;,2d3:L=A3;,endcase,end,endmodule,






