《电子设计自动化基础.ppt》由会员分享,可在线阅读,更多相关《电子设计自动化基础.ppt(36页珍藏版)》请在三一办公上搜索。
1、哈尔滨工业大学微电子中心,1,电子设计自动化基础3,哈尔滨工业大学微电子中心李晓明,哈尔滨工业大学微电子中心,2,内容,Verilog结构描述模块调用与端口名对应方式分级结构(层次式结构)与分级名Verilog结构描述:门级描述基本门级元件基本门与连线延时表示连线驱动强度,哈尔滨工业大学微电子中心,3,Verilog结构描述,电路描述行为描述:侧重对模块行为功能的抽象描述结构描述:侧重对模块内部结构实现的具体描述门级描述:对由基本逻辑门(and、or)互连而成的具有一定功能的电路模块的描述结构描述:将上述逻辑门用一个个功能模块替换,就拓展到一般意义的结构描述结构描述侧重对模块内部结构实现的具体
2、描述,哈尔滨工业大学微电子中心,4,半加器为例,module half_adder(sum,cout,a,b);output sum,cout;input a,b;xor U0(sum,a,b);and U1(cout,a,b);endmoudle,哈尔滨工业大学微电子中心,5,Verilog结构描述,模块调用模块调用是Verilog结构描述的基本构成方式通过调用其他模块来搭建新的模块如果当前模块不再被其他模块调用,此模块即称作顶层模块模块调用类型基本门调用module模块调用,哈尔滨工业大学微电子中心,6,Verilog结构描述,模块调用的基本形式:模块名 调用名(端口名表项);调用名是唯一
3、的模块调的端口名对应方式位置对应端口名对应:.定义时的端口名(调用时与之相连的信号名)允许出现不连接的端口,哈尔滨工业大学微电子中心,7,Verilog结构描述,模块调用(元件例化),哈尔滨工业大学微电子中心,8,EX:module comp(out_port1,out_port2,in_port1,in_port2);output out_port1,out_port2;input in_port1,in_port2;endmodule/调用方式1:位置对应 module demo_top1;comp gate1(Q,R,J,K);endmodule/调用方式2:端口名对应 module d
4、emo_top2;comp gate2(.in_port2(K),.out_port1(Q),.out_port2(R),.in_port1(J);endmodule,/调用方式3:不连接端口 module demo_top3;comp gate3(Q,J,K);endmodule,哈尔滨工业大学微电子中心,9,Verilog结构描述,如果从逻辑电路图开始给电路图每个输入输出引脚赋以端口名给电路图每条内部连线取连线名给电路图每个逻辑单元取单元名(调用名)给本电路模块取模块名用module定义相应模块名的结构描述,并将图中所有输入输出端口名列入端口名列表中,再完成对各端口输入输出类型说明依照图中
5、连接关系,确定单元之间端口信号连接,哈尔滨工业大学微电子中心,10,Verilog结构描述,注意:对于位宽大于1位的内部连线,需补充相应连线类型说明对于Verilog内含的基本门级元件调用,可以省略调用名,仿真系统在模拟过程中会给其自动赋予“基本门名$序列号”的缺省名对于Verilog内含的基本门级元件调用,允许在调用同时给出门的延时参数和驱动强度,哈尔滨工业大学微电子中心,11,Verilog结构描述,例:全加器/行为描述vs 结构描述,(b)门级,哈尔滨工业大学微电子中心,12,Verilog结构描述,(C)行为级当a、b或cin逻辑状态发生变化,采用如下等式得到sum及cout:sum=
6、abccout=ab+bc+ca,哈尔滨工业大学微电子中心,13,Verilog结构描述,全加器行为描述实例:module fadder(sum,cout,a,b,cin);/-端口声明 output sum,cout;input a,b,cin;/-数据类型声明 reg sum,cout;/-行为级描述 always(a or b or cin)/过程语句 begin/过程块 sum=abcin;/过程赋值语句 cout=(a&b)|(b&cin)|(cin&a);endendmodule,哈尔滨工业大学微电子中心,14,Verilog结构描述,全加器结构描述实例module fadder(
7、sum,cout,a,b,cin);/-端口声明 output sum,cout;input a,b,cin;/-门级互连 xor U0(sum,a,b,cin);and U1(net1,a,b);and U2(net2,a,cin);and U3(net3,b,cin);or U4(cout,net1,net2,net3);endmodule,哈尔滨工业大学微电子中心,15,Verilog结构描述,分级结构(层次式结构)与分级名(Hierarchical Name)顶层模块次级模块不单以模块为分级依据:module、task、function、有名块,每一个都可作为分枝分级名:任何模块中的调
8、用元件、task、function以及连线,都可依据从根出发经各个中间分枝的一条路径确定它在此设计中独有的标识名。,哈尔滨工业大学微电子中心,16,module bottom(in);input in;always(posedge in)begin:keep reg hold;hold=in;end endmodule module middle(stim1,stim2);input stim1,stim2;bottom amod(stim1),bmod(stim2);endmodule module top;reg stim1,stim2;middle a(stim1,stim2);,ini
9、tial begin:block1#100 begin:block2 reg hold;end#100 begin stim1=0;end end endmodule,哈尔滨工业大学微电子中心,17,本例子中完整的分级名:模块单元名:top top.a 有名块名:top.block1 top.block1.block2 信号线名:,哈尔滨工业大学微电子中心,18,系统结构描述/top module module test;/模块例化fadder U0(sum,cout,a,b,cin);fadder_stim stim1(a,b,cin);endmodule,/应用激励module fadde
10、r_stim(a,b,cin);output a,b,cin;reg a,b,cin;initial begina=0;b=0;cin=0;#5 cin=1;#5 cin=0;b=1;#5 cin=1;#5 a=1;b=0;cin=0;#5 cin=1;#5 cin=0;b=1;#5 cin=1;#10$finish;/结束仿真endendmodule,哈尔滨工业大学微电子中心,19,Verilog结构描述:门级描述,基本元件(Basic Primitives):26种门级元件(gate-level primitives):14种开关级元件(switch-level primitives):1
11、2种,哈尔滨工业大学微电子中心,20,Verilog结构描述:门级描述,基本逻辑门级元件(Primitive cell),哈尔滨工业大学微电子中心,21,Verilog结构描述:门级描述,一、and、nand、or、nor、xor、nxor门名(输出,输入1,输入2,);特点:只有一个输出二、buf、not门名(输出1,输出2,输入)特点:只有一个输入,哈尔滨工业大学微电子中心,22,Verilog结构描述:门级描述,三、bufif1、bufif0、notif1、notif0门名(输出,输入,使能控制端);特点:带有使能控制端三态输出四、pullup、pulldown门名(输出);特点:只有输
12、出端,哈尔滨工业大学微电子中心,23,基本门元件调用的完整格式:门名(对1驱动强度,对0驱动强度)(延迟)调用名(端口名表项);,and(out,a,b);,or(out,in1,in2,in3);/a primitive instance without/instance namebuf U0(out,in);/specify the instance namenotif0#5 n0(out,in,enable);/specify the delay注意端口名列表次序为先 output 再 input。,哈尔滨工业大学微电子中心,24,基本门元件的传播延迟表示法:,哈尔滨工业大学微电子中心,
13、25,Verilog结构描述:门级描述,基本门与连线的延时表示门级延时:输入端发生变化到输出发生变化的门传输延时assign语句延时:左端发生变化到右端发生变化的延时连线延时:信号在连线上的传输延时延时基本表示法:#(d1,d2,d3)d1:上升延时d2:下降延时d3:关断延时针对三态输出,哈尔滨工业大学微电子中心,26,(上升,下降,关断)延迟表示法,0,x,or Z to 1,1,x,or Z to 0,0 or 1 to Z,t_rise,t_fall,t_turnoff,哈尔滨工业大学微电子中心,27,and#(3,2)(out,in1,in2);/基本门延时assign#(3,2)o
14、ut=in1/连线定义,in1,in2,out,3,2,t,t,t,1,注意:如果只出现一个延时值,表示统一代表所有状态转移的延时;如果出现2个值,则代表d1,d2,哈尔滨工业大学微电子中心,28,bufif1#(3,4,7)(out,in,ctrl);,in,1,ctrl,out,t,t,t,Z,3,4,3,7,哈尔滨工业大学微电子中心,29,Verilog结构描述:门级描述,assign连续赋值语句的完整格式:assign(对1驱动强度,对0驱动强度)(延迟)赋值;连线类型说明的完整格式:连线类型(对1驱动强度,对0驱动强度)(延迟)连线名表项;trireg(电荷模式说明)(延迟)连线名表
15、项;基本门元件调用的完整格式:门名(对1驱动强度,对0驱动强度)(延迟)调用名(端口名表项);,哈尔滨工业大学微电子中心,30,哈尔滨工业大学微电子中心,31,当两个驱动强度不同的连线相连时,会以强度等级较高的 连线输出为结果,例如:,当没有使用强度时,Verilog的缺省值是Strong Drive,即(strong0,strong1),哈尔滨工业大学微电子中心,32,Verilog系统函数,为了方便对仿真过程的控制与仿真结果的分析,Verilog提供了系统函数,统一以“$”开头输出控制:$display,$write,$monitor模拟时标:$time,$realtime进程控制:$fi
16、nish,$stop文件读写:$readmem其它:$random,哈尔滨工业大学微电子中心,33,Verilog系统函数,$display与$write$write和$display列出所指定信号的值,它们的功能都相同,唯一不同点在$display输出结束后会自动换行,而$write不会换行。EX:$write(%b t%h t%d t%on,a,b,c,d);$display(%b t%h t%d t%o,a,b,c,d);,哈尔滨工业大学微电子中心,34,输出格式说明符以及转义字符,哈尔滨工业大学微电子中心,35,Verilog系统函数,$monitor:输出变量的任何变化,都会输出一次
17、结果;而$write和$display每调用一次执行一次EX:module monitor_test;reg in;wire out;not#1 U0(out,in);initial$monitor($time,out=%b in=%b,out,in);initial begin in=0;#10 in=1;#10 in=0;endendmodule,哈尔滨工业大学微电子中心,36,Verilog系统函数,$finish与$stop$finish终止仿真器的运行$stop暂停模拟程序的执行,不退出仿真进程$readmem:把文件内容读入指定存储器 readmemb(“文件名”,存储器名,起始地址,结束地址);readmemh(“文件名”,存储器名,起始地址,结束地址);Ex:reg 7:0 mem1:256;initial$readmemh(”mem.data”,mem);initial$readmemb(”mem.data”,mem,16);initial$readmemh(”mem.data”,mem,128,156);,