哈尔滨工业大学微电子中心1电子设计自动化基础-3哈尔滨工业大学微电子中心李晓明哈尔滨工业大学微电子中心2内容Verilog结构描述模块调用与端口名对应方式分级结构(层次式结构)与分级名Verilog结构描述:门级描述基本门级元件基本门与连线延时表示连线驱动强度哈尔滨工业大学微电子中心3Verilog结构描述电路描述行为描述:侧重对模块行为功能的抽象描述结构描述:侧重对模块内部结构实现的具体描述门级描述:对由基本逻辑门(and、or…)互连而成的具有一定功能的电路模块的描述结构描述:将上述逻辑门用一个个功能模块替换,就拓展到一般意义的结构描述结构描述侧重对模块内部结构实现的具体描述哈尔滨工业大学微电子中心4半加器为例modulehalf_adder(sum,cout,a,b);outputsum,cout;inputa,b;xorU0(sum,a,b);andU1(cout,a,b);endmoudle哈尔滨工业大学微电子中心5Verilog结构描述模块调用模块调用是Verilog结构描述的基本构成方式通过调用其他模块来搭建新的模块如果当前模块不再被其他模块调用,此模块即称作顶层模块模块调用类型基本门调用module模块调用哈尔滨工业大学微电子中心6Verilog结构描述模块调用的基本形式:模块名调用名(端口名表项);调用名是唯一的模块调的端口名对应方式位置对应端口名对应:.定义时的端口名(调用时与之相连的信号名)允许出现不连接的端口哈尔滨工业大学微电子中心7Verilog结构描述模块调用(元件例化)topMUXcountermoduletop()....MUXU0()counterU1()...........endmodulemoduleMUX().........................endmodulemodulecounter()...............endmodule哈尔滨工业大学微电子中心8EX:modulecomp(out_port1,out_port2,in_port1,in_port2);outputout_port1,out_port2;inputin_port1,in_port2;……endmodule//调用方式1:位置对应moduledemo_top1;compgate1(Q,R,J,K);endmodule//调用方式2:端口名对应moduledemo_top2;compgate2(.in_port2(K),.out_port1(Q),.out_port2(R),.in_port1(J));endmodule//调用方式3:不连接端口moduledemo_top3;compgate3(Q,,J,K);endmodule哈尔滨工业大学微电子中心9Verilog结构描述如果从逻辑电路图开始给电路图每个输入输出引脚赋以端口名给电路图每条内部连线取连线名给电路图每个逻辑单元取单元名(调用名)给本电路模块取模块名用module定义相应模块名的结构描述,并将图中所有输入输出端口名列入端口名列表中,再完成对各端口输入输出类型说明依照图中连接关系,确定单元之间端口信号连接哈尔滨工业大学微电子中心10Verilog结构描述注意:对于位宽大于1位的内部连线,需补充相应连线类型说明对于Verilog内含的基本门级元件调用,可以省略调用名,仿真系统在模拟过程中会给其自动赋予“基本门名$序列号”的缺省名对于Verilog内含的基本门级元件调用,允许在调用同时给出门的延时参数和驱动强度哈尔滨工业大学微电子中心11Verilog结构描述例:全加器//行为描述vs结构描述asumbcincout(a)真值表abcinsumcout00000101001100101001FullAdder(b)门级哈尔滨工业大学微电子中心12Verilog结构描述(C)行为级当a、b或cin逻辑状态发生变化,采用如下等式得到sum及cout:sum=a⊕b⊕ccout=ab+bc+ca哈尔滨工业大学微电子中心13Verilog结构描述全加器行为描述实例:modulefadder(sum,cout,a,b,cin);//--------端口声明outputsum,cout;inputa,b,cin;//--------数据类型声明regsum,cout;//--------行为级描述always@(aorborcin)//过程语句begin//过程块sum=a^b^cin;//过程赋值语句cout=(a&b)|(b&cin)|(cin&a);endendmodule哈尔滨工业大学微电子中心14Verilog结构描述全加器结构描述实例modulefadder(sum,cout,a,b,cin);//-----------端口声明outputsum,cout;inputa,b,cin;//-----------门级互连xorU0(sum,a,b,cin);andU1(net1,a,b);andU2(net2,a,cin);andU3(net3,b,cin);orU4(cout,net1,net2,net3);endmodule哈尔滨工业大学微电子中心15Verilog结构描述分级结构(层次式结构)与分级名(HierarchicalName)顶层模块-次级模块-……不单以模块为分级依据:module、task、function、有名块,每一个都可作为分枝分级名:任何模块中的调用元件、task、function以及连线,都可依据从根出发经各个中间分枝的一条路径确定它在此设计中独有的标识名。哈尔滨工业大学微电子中心16modulebottom(in);inputin;always@(posedgein)begin:keepreghold;hold=in;endendmodulemodulemiddle(stim1,stim2);inputstim1,stim2;bottomamod(stim1),bmod(stim2);endmodulemoduletop;regstim1,stim2;middlea(stim1,stim2);initialbegin:block1#100begin:block2reghold;end#100beginstim1=0;endendendmodule哈尔滨工业大学微电子中心17本例子中完整的分级名:模块单元名:toptop.atop.a.amodtop.a.bmod有名块名:top.block1top.block1.block2top.a.amod.keeptop.a.bmod.keep信号线名:top.stim1top.stim2top.block1.block2.holdtop.a.stim1top.a.stim2top.a.amod.intop.a.amod.keep.holdtop.a.bmod.intop.a.bmod.keep.hold哈尔滨工业大学微电子中心18系统结构描述//topmodulemoduletest;//模块例化fadderU0(sum,cout,a,b,cin);fadder_stimstim1(a,b,cin);endmodule//应用激励modulefadder_stim(a,b,cin);outputa,b,cin;rega,b,cin;initialbegina=0;b=0;cin=0;#5cin=1;#5cin=0;b=1;#5cin=1;#5a=1;b=0;cin=0;#5cin=1;#5cin=0;b=1;#5cin=1;#10$finish;//结束仿真endendmodule哈尔滨工业大学微电子中心19Verilog结构描述:门级描述基本元件(BasicPrimitives):26种门级元件(gate-levelprimitives):14种开关级元件(switch-levelprimitives):12种哈尔滨工业大学微电子中心20Verilog结构描述:门级描述基本逻辑门级元件(Primitivecell)PrimitiveNameFunctionandornotbufxornandnorxnorbufif1bufif0notif1notif0LogicalANDLogicalORInverterBufferLogicalExclusiveORLogicalANDInverteredLogicalORInverteredLogicalExclusiveORInverteredConditionalbufferwithlogic1asenableinputConditionalbufferwithlogic0asenableinputConditionalinverterwithlogic1asenableinputConditionalinverterwithlogic0asenableinput哈尔滨工业大学微电子中心21Verilog结构描述:门级描述一、and、nand、or、nor、xor、nxor门名(输出,输入1,输入2,……);特点:只有一个输出二、buf、not门名(输出1,输出2,……,输入)特点:只有一个输入哈尔滨工业大学微电子中心22Verilog结构描述:门级描述三、bufif1、bufif0、notif1、notif0门名(输出,输入,使能控制端);特点:带有使能控制端-三态输出四、pullup、pulldown门名(输出);特点:只有输出端哈尔滨工业大学微电子中心23基本门元件调用的完整格式:门名(对1驱动强度,对0驱动强度)#(延迟)调用名(端口名表项);and(out,a,b);or(out,in1,in2,in3);//aprimitiveinstancewithout//instancenamebufU0(out,in);//specifytheinstancenamenotif0#5n0(out,in,enable);//specifythedelay注意端口名列表次序为先output再input。哈尔滨工业大学微电子中心24基本门元件的传播延迟表示法:1010ttinoutnot#10(out,in);哈尔滨工业大学微电子中心25Verilog结构描述:门级描述基本门与连线的延时表示门级延时:输入端发生变化到输出发生变化的门传输延时assign语句延时:左端发生变化到右端发生变化的延时连线延时:信号在连线上的传输延时延时基本表示法:#(d1,d2,d3)d1:上升延时d2:下降延时d3:关断延时-针对三态输出哈尔滨工业大学微电子中心26(上升,下降,关断)延迟表示法0,x,orZto11,x,orZto00or1toZt_riset_fallt_turnoff哈尔滨工业大学微电子中心27and#(3,2)(out,in1,in2);//基本门延时assign#(3,2)out=in1&in2;//assign赋值延时wire#(3,2)out=in1&in2;//连线定义in1in2out32ttt1注意:如果只出现一个延时值,表示统一代表所有状态转移的延时;如果出现2个值,则代表d1,d2哈尔滨工业大学微电子中心28bufif1#(3,4,7)(out,in,ctrl);in1ctrlouttttZ3437哈尔滨工业大学微电子中心29Verilog结构描述:门级描述assign连续赋值语句的完整格式:assign(对1驱动强度,对0驱动强度)#(延迟)赋值;连线类型说明的完整格式:连线类型(对1驱动强度,对0驱动强度)#(延迟)连线名表项;trireg(电荷模式说明)#(延迟)连线名表项;基本门元件调用的完整格式:门名(对1驱动强度,对0驱动强度)#(延迟)调用名(端口名表项);哈尔滨工业大学微电子中心30连线驱动强度的表示StrengthNameStrengthElementModeledDeclarationPrinted