资源描述
Slide Title foo,Body Text,Second Level,Third Level,Fourth Level,Fifth Level,第,7,章,Verilog,设计的层次与风格,主要,内容,结构(,Structural),描述,行为(,Behavioural,),描述,数据流(,Data Flow),描述,基本组合电路设计,基本时序电路设计,7.1,Verilog,设计的层次,结构(,Structural,),描述,行为(,Behavioural,),描述,数据流(,Data Flow,),描述,在,Verilog,程序中可通过如下方式描述电路的结构,调用,Verilog,内置门元件(门级结构描述),调用开关级元件(晶体管级结构描述),用户自定义元件,UDP,(也在门级),7.2,结构,(,Structural,),描述,Verilog,的,内置门元件,门元件的调用,调用门元件的格式为:,门元件名字,(,),其中普通门的端口列表按下面的顺序列出:,(输出,输入,1,,输入,2,,输入,3,);,比如:,and a1(out,in1,in2,in3);/,三输入与门,对于三态门,则按如下顺序列出输入输出端口:,(输出,输入,使能控制端);,比如:,bufif1 mytri1(out,in,enable);/,高电平使能的三态门,门级结构描述的,2,选,1,MUX,module MUX1(out,a,b,sel,);,output out;,input a,b,sel,;,not (,sel,_,sel,);,and(a1,a,sel,_),(a2,b,sel,);,or (out,a1,a2);,endmodule,7.3,行为描述,就是对设计实体的数学模型的描述,其抽象程度远高于结构描述方式。行为描述类似于高级编程语言,当描述一个设计实体的行为时,无需知道具体电路的结构,只需要描述清楚输入与输出信号的行为,而不需要花费更多的精力关注设计功能的门级实现。,行为描述的2,选,1,MUX,module mux2(out,a,b,sel,);,output out;,input a,b,sel,;,reg,out;,always(a or b or,sel,),begin,if(sel,)out=b;,else out=a;,end,endmodule,7.4,数据流描述,数据流描述方式主要使用持续赋值语句,多用于描述组合逻辑电路,其格式为:,assign,LHS_net,=,RHS_expression,;,右边表达式中的操作数无论何时发生变化,都会引起表达式值的重新计算,并将重新计算后的值赋予左边表达式的,net,型变量。,数据流描述的2选1,MUX,module MUX3(out,a,b,sel,);,output out;,input a,b,sel,;,assign out=,sel,?b:a;,endmodule,7.5,不同描述风格的设计,对设计者而言,采用的描述级别越高,设计越容易;对综合器而言,行为级的描述为综合器的优化提供了更大的空间,较之门级结构描述更能发挥综合器的性能,所以在电路设计中,除非一些关键路径的设计采用门级结构描述外,一般更多地采用行为建模方式。,结构描述的一位全加器,module full_add1(a,b,cin,sum,cout,);,input a,b,cin,;,output sum,cout,;,wire s1,m1,m2,m3;,and (m1,a,b),(m2,b,cin,),(m3,a,cin,);,xor,(s1,a,b),(sum,s1,cin,);,or (,cout,m1,m2,m3);,endmodule,数据流描述的1位全加器,module full_add2(a,b,cin,sum,cout,);,input a,b,cin,;,output sum,cout,;,assign sum=a b,cin,;,assign,cout,=(a&b)|(b&,cin,)|(,cin,endmodule,行为描述的1位全加器,module full_add4(a,b,cin,sum,cout);,input,a,b,cin,;output,sum,cout,;,reg,sum,cout,m1,m2,m3;,always(a or b or,cin,),begin,m1=,a&b,;m2=,b&cin,;m3=,a&cin,;,sum=(,ab)cin,;,cout,=(m1|m2)|m3;,end,endmodule,4,位加法器,4-,bit adder,include full_add1.v,module add4_1(sum,cout,a,b,cin,);,output 3:0 sum;,output,cout,;,input 3:0 a,b;input,cin,;,full_add1 f0(a0,b0,cin,sum0,cin1);,full_add1 f1(a1,b1,cin1,sum1,cin2);,full_add1 f2(a2,b2,cin2,sum2,cin3);,full_add1 f3(a3,b3,cin3,sum3,cout,);,endmodule,结构描述的4位级连全加器,module add4_2(cout,sum,a,b,cin);,output3:0 sum;,output,cout,;,input3:0,a,b,;,input,cin,;,assign ,cout,sum,=,a+b+cin,;,endmodule,数据流描述的4位加法器,行为描述的4位加法器,module add4_3(cout,sum,a,b,cin);,output3:0 sum;,output,cout,;,input3:0,a,b,;,input,cin,;,reg3:0 sum;,reg,cout,;,always (a or b or,cin,),begin,cout,sum,=,a+b+cin,;,end,endmodule,7,.6 基本组合电路设计,门级结构描述,module gate1(F,A,B,C,D);,input A,B,C,D;,output F;,nand(F1,A,B);/,调用门元件,and(F2,B,C,D);,or(F,F1,F2);,endmodule,数据流描述,module gate2(F,A,B,C,D);,input A,B,C,D;,output F;,assign F=(A/assign,持续赋值,endmodule,行为描述,module gate3(F,A,B,C,D);,input A,B,C,D;,output F;,reg,F;,always(A or B or C or D),/,过程赋值,begin,F=(A,end,endmodule,基本组合电路设计,用,bufif1,关键字描述的三态门,module tri_1(in,en,out);,input in,en;,output out;,tri out;,bufif1 b1(out,in,en);,endmodule,基本组合电路设计,3-,to-8 decoder,module decoder_38(out,in);,output7:0 out;,input2:0 in;reg7:0 out;,always(in),begin,case(in,),3d0:out=8b11111110;,3d1:out=8b11111101;,3d2:out=8b11111011;,3d3:out=8b11110111;,3d4:out=8b11101111;,3d5:out=8b11011111;,3d6:out=8b10111111;,3d7:out=8b01111111;,endcase,end,endmodule,基本组合电路设计,奇偶校验位产生器,Module,parity(even_bit,odd_bit,input_bus,);,output,even_bit,odd_bit,;,input7:0,input_bus,;,assign,odd_bit,=,input_bus,;/,产生奇校验位,assign,even_bit,=odd_bit;/,产生偶校验位,endmodule,基本组合电路设计,用,if-else,语句描述的,4,选,1,MUX,module mux4_1(out,in0,in1,in2,in3,sel);,output out;,input in0,in1,in2,in3;,input1:0,sel,;,reg,out;,always(in0 or in1 or in2 or in3 or,sel,),begin,if(sel,=2b00)out=in0;,else,if(sel,=2b01)out=in1;,else,if(sel,=2b10)out=in2;,else out=in3;,end,endmodule,7,.7,基本时序电路设计,D-FF designs,(,基本,D,触发器,),module DFF(Q,D,CLK);,output Q;,input D,CLK;,reg,Q;,always(,posedge,CLK),begin,Q=D;,end,endmodule,基本时序电路设计,带异步清,0,、异步置,1,的,D,触发器,module DFF1(q,qn,d,clk,set,reset);,input,d,clk,set,reset,;,output,q,qn;reg,q,qn,;,always(,posedge,clk,or,negedge,set or,negedge,reset),begin,if(!reset)begin,q=0;,qn,=1;/,异步清,0,,低电平有效,end,else if(!set)begin,q=1;,qn,=0;/,异步置,1,,低电平有效,end,else begin q=,d;qn,=d;end,end,endmodule,基本时序电路设计,带同步清,0,、同步置,1,的,D,触发器,module DFF2(q,qn,d,clk,set,reset);,input d,clk,set,reset;,output q,qn,;,reg,q,qn,;,always(,posedge,clk,),begin,if(reset),begin q=0;qn=1;end/,同步清,0,,高电平有效,else if(set),begin q=1;qn=0;end/,同步置,1,,高电平有效,else begin q=d;,qn,=d;end,end,endmodule,基本时序电路设计,8,位数据锁存器,module latch_8(qout,data,clk);,output7:0,qout,;,input7:0 data;input,clk,;,reg7:0,qout,;,always(,clk,or data),begin,if(clk,),qout,=data;,end,endmodule,基本时序电路设计,8,位数据寄存器,module reg8(out_data,in_data,clk,clr);,output7:0 out_data;,input7:0 in_data;,input,clk,clr,;reg7:0 out_data;,always(,posedge,clk,or,posedge,clr,),begin,if(clr,)out_data=0;,else out_data=in_data;,end,endmodule,基本时序电路设计,可变模加法,/,减法计数器,module,updown_count(d,clk,clear,load,up_down,qd,);,input7:0 d;input,clk,clear,load,up_down,;,output7:0,qd,;reg7:0,cnt,;,assign,qd,=,cnt,;,always (,posedge,clk,),begin,if(!clear),cnt,=8h00;/,同步清0,低电平有效,else if(load),cnt,=d;/,同步预置,else if(up_down),cnt,=cnt+1;/,加法计数,else,cnt,=cnt-1;/,减法计数,end,endmodule,习 题,7-1,Verilog,语言支持哪几种描述方式,各有什么特点?,7-2,分别用结构描述和行为描述方式设计一个基本的,D,触发器,并进行综合。,7-3,分别用结构描述和行为描述方式设计一个,JK,触发器,并进行综合。,7-4,试编写同步模,5,计数器程序,有进位输出和异步复位端。,7-5,编写,4,位串,/,并转换程序。,7-6,编写,4,位并,/,串转换程序。,7-7,编写,4,位除法电路程序。,
展开阅读全文