收藏 分销(赏)

北大数字集成电路课件--5-verilog的符号标识.ppt

上传人:丰**** 文档编号:10289521 上传时间:2025-05-16 格式:PPT 页数:22 大小:108.52KB
下载 相关 举报
北大数字集成电路课件--5-verilog的符号标识.ppt_第1页
第1页 / 共22页
北大数字集成电路课件--5-verilog的符号标识.ppt_第2页
第2页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数字集成电路设计入门,-,从,HDL,到版图,于敦山,北大微电子学系,第五章,Verilog,的词汇约定,(Lexical convention),理解,Verilog,中使用的词汇约定,认识语言专用标记,(tokens),学习,timescale,学习内容:,术语及定义,空白符:空格、,tabs,及换行,Identifier:,标志符,,Verilog,中对象,(,如模块或端口,),的名字,Lexical:,语言中的字或词汇,或与其相关。由其文法(,grammar),或语法,(syntax),区分。,LSB,:,最低有效位,(Lease significant bit),MSB,:,最高有效位,(Most significant bit),空白符和注释,module MUX2_1(out,a,b,sel,);,/Port declarations,output out;,input,sel,/control input,b,/*data inputs*/a;,/*,The,netlist,logic selects input”a”when,sel,=0 and it selects”b”when,sel,=1.,*/,not(,sel,_,sel,);,and(a1,a,sel,_),(b1,b,sel,);/What does this line do?,or(out,a1,b1);,endmodule,格式自由,使用空白符提高可读性及代码组织。,Verilog,忽略空白符除非用于分开其它的语言标记。,多行注释,在,/*/,内,单行注释,到行末结束,整数常量和实数常量,整数的大小可以定义也可以不定义。整数表示为:,其中,size,:,大小,由十进制数表示的位数,(bit),表示。缺省为,32,位,base,:,数基,可为,2(b),、,8(o),、,10(d),、,16(h),进制。缺省为,10,进制,value,:,是所选数基内任意有效数字,包括,X,、,Z,。,实数常量可以用十进制或科学表示法表示。,Verilog,中,常量,(literals),可是整数也可以是实数,12,unsized,decimal(zero-extended to 32 bits),H83a,unsized,hexadecimal(zero-extended to 32 bits),8b1100_ 0001,8-bit binary,64hff01,64-bit hexadecimal(zero-extended to 64 bits),9O17,9-bit octal,32bz01x,Z-extended to 32 bits,3b1010_ 1101,3-bit number,truncated to 3b101,6.3,decimal notation,32e-4,scientific notation for 0.0032,4.1E3,scientific notation for 4100,整数常量和实数常量,整数的大小可以定义也可以不定义。整数表示为:,数字中(,_,)忽略,便于查看,没有定义大小,(size),整数缺省为,32,位,缺省数基为十进制,数基,(base),和数字,(16,进制,),中的字母无大小写之分,当数值,value,大于指定的大小时,截去高位。如,2b1101,表示的是,2b01,实数常量,实数可用科学表示法或十进制表示,科学表示法表示方式:,,表示:尾数,10,指数,字符串(,string),字符串要在一行中用双引号括起来,也就是不能跨行。,字符串中可以使用一些,C,语言转义,(escape),符,如,t n,可以使用一些,C,语言格式符,(,如,%b),在仿真时产生格式化输出:,”,This is a normal string”,”This string has a t tab and ends with a new linen”,”This string formats a value:,val,=%b”,Verilog,中,字符串大多用于显示信息的命令中。,Verilog,没有字符串数据类型,字符串(,string),转义符及格式符将在验证支持部分讨论,格式符,%h,%o,%d,%b,%c,%s,%v,%m,%t,hex,oct,dec,bin,ACSII,string,strength,module,time,转义符,t,n,”,tab,换行,反斜杠,双引号,ASCII representation of above,格式符,%0d,表示没有前导,0,的十进制数,标识符,(identifiers),标识符是用户在描述时给,Verilog,对象起的名字,标识符必须以字母,(a-z,A-Z),或,(_),开头,后面可以是字母、数字、,($),或,(_),。,最长可以是,1023,个字符,标识符区分大小写,,sel,和,SEL,是不同的标识符,模块、端口和实例的名字都是标识符,module,MUX2_1,(out,a,b,sel,);,output,out,;,input,a,b,sel,;,not,not1,(,sel,_,sel,);,and,and1,(a1,a,sel,_);,and,and2,(b1,b,sel,);,or,or1,(out,a1,b1);,endmodule,Verilog,标识符,标识符,(identifiers),有效标识符举例:,shift_reg_a,busa_index,_bus3,无效标识符举例:,34net /,开头不是字母或“,_”,a*b_net /,包含了非字母或数字,“,$”“_”,n238 /,包含了非字母或数字,“,$”“_”,Verilog,区分大小写,所有,Verilog,关键词使用小写字母。,转义标识符,(Escaped identifiers),可以包含任何可打印字符,反斜杠及空白符不是标识符的一部分,module 2:1MUX(out,a,b,sel,);,output out;,input a,b,sel,;,not not1(sel,sel,);,and and1(a1,a,sel,);,and and2(b1,b,sel,);,or or1(out,a1,b1);,endmodule,使用转义符可能会产生一些问题,并且不是所有工具都支持。有时用转义符完成一些转换,如产生逻辑图的,Verilog,网表。综合工具输出综合网表时也使用转义符。,不建议使用转义符。,转义标识符由反斜杠“,”,开始,空白符结束,Escaped Identifiers,转义标识符,(Escaped identifiers),转义标识符允许用户在标识符中使用非法字符。如:,#,sel,busa,+index,A,B,1 /,在层次化名字中转义符,转义标识符必须以空格结束,语言专用标记,(tokens),系统任务及函数,$,$,符号指示这是系统任务和函数,系统函数有很多,如:,返回当前仿真时间,$time,显示,/,监视信号值,($display,$monitor),停止仿真,$stop,结束仿真,$finish,$monitor($time,“a=%b,b=%h”,a,b);,当信号,a,或,b,的值发生变化时,系统任务,$monitor,显示当前仿真时间,信号,a,值,(,二进制格式,),信号,b,值(,16,进制格式)。,语言专用标记,(tokens),延时说明,“,#”,用于说明过程,(procedural),语句和门的实例的延时,但不能用于模块的实例化。,module MUX2_ 1(out,a,b,sel,);,output out;,input a,b,sel,;,not#1 not1(,sel,_,sel,);,and#2 and1(a1,a,sel,_);,and#2 and2(b1,b,sel,);,or#1 or1(out,a1,b1);,endmodule,门延时有很多类名字:门延时,(gate delay),,,传输延时,(propagation delay),,,固有延时,(intrinsic delay),,,对象内在延时,(intra-object delay),编译指导,(Compiler Directives),(,),符号说明一个编译指导,这些编译指导使仿真编译器进行一些特殊的操作,编译指导一直保持有效直到被覆盖或解除,resetall,复位所有的编译指导为缺省值,应该在其它编译指导之前使用,文本替换,(substitution)-define,编译指导,define,提供了一种简单的文本替换的功能,define ,在编译时,替换,。,可提高描述的可读性。,define,not_delay,#1,define and_delay#2,define or_delay#1,module MUX2_1(out,a,b,sel,);,output out;,input a,b,sel,;,not,not_delay,not1(,sel,_,sel,);,and and_delay and1(a1,a,sel,_);,and and_delay and2(b1,b,sel,);,or or_delay or1(out,a1,b1);,endmodule,定义,not_delay,使用,not_delay,文本替换,(substitution),解除定义的宏,使用,undef,macro_name,使用编译指导,define,,,可以,提高描述的可读性,定义全局设计参数,如延时和矢量的位数。这些参数可以定义在同一位置。这样,当要修改设计配置时,只需要在一个地方修改。,定义,Verilog,命令的简写形式,define vectors_ file/usr1/chrisz/library/vectors,define results_ file/usr1/chrisz/library/results,可以将,define,放在一个文件中,与其它文件一起编译。,文本包含,(inclusion)-include,编译指导,include,在当前内容中插入一个文件,格式:,include“”,如,include global.v,include parts/count.v,include ././library/,mux,.v”,include,可用于:,include,保存在文件中的全局的或经常用到的一些定义,如文本宏,在模块内部,include,一些任务(,tasks),,,提高代码的可维护性。,可以是相对路径或绝对路径,Timescale,timescale,说明时间单位及精度,格式:,timescale /,如:,timescale 1 ns/100,ps,time_unit:,延时或时间的测量单位,time_precision:,延时值超出精度要先舍入后使用,timescale,必须在模块之前出现,timescale 1 ns/10,ps,/All time units are in multiples of 1 nanosecond,module MUX2_1(out,a,b,sel,);,output out;,input a,b,sel,;,not#1 not1(,sel,_,sel,);,and#2 and1(a1,a,sel,_);,and#2 and2(b1,b,sel,);,or#1 or1(out,a1,b1);,endmodule,Timescale,time_precision,不能大于,time_unit,t,ime_precision,和,time_unit,的表示方法:,integer unit_string,integer:,可以是,1,,,10,,,100,unit_string:,可以是,s(second),ms(millisecond),us(microsecond),ns(nanosecond),ps(picosecond,),fs(femtosecond,),以上,integer,和,unit_string,可任意组合,precision,的时间单位应尽量与设计的实际精度相同。,precision,是仿真器的仿真时间步。,若,time_unit,与,precision_unit,差别很大将严重影响仿真速度。,如说明一个,timescale 1s/1ps,,,则仿真器在,1,秒内要扫描其事件序列,10,12,次;而,timescale 1s/1ms,则只需扫描,10,3,次。,如果没有,timescale,说明将使用缺省值,一般是,ns,。,Timescale,所有,timescale,中的最小值决定仿真时的最小时间单位。,这是因为仿真器必须对整个设计进行精确仿真,在下面的例子中,仿真时间单位(,STU,),为,100fs,timescale 1ns/10ps,module1(.);,not#1.23(.)/1.23ns or 12300,STUs,.,endmodule,timescale 100ns/1ns,module2(.);,not#1.23(.)/123ns or 1230000,STUs,.,endmodule,timescale 1ps/100fs,module3(.);,not#1.23(.)/1.23ps or 12,STUs,(rounded off),.,endmodule,复习,Verilog,中的空白符总是忽略的吗?,在源代码中插入注释有哪两种方法?,整数常数的尺寸如何指定?缺省的尺寸及数基是多少?,设置的编译指导如何解除?,编译指导影响全局吗?,在仿真时为什么要用接近实际的最大,timescale,精度?,是的。空白符用于隔开标识符及关键词,多余的忽略,/,用于单行注释,,/*/,用于多行注释,整数常量的尺寸由,10,进制数表示的位数确定。缺省为,32,位,缺省的数基为十进制。,使用,resetall,解除,编译指导是全局的。编译时遇到编译指导后开始有效,直至复位或被覆盖,可能影响多个文件。,使用尽可能大的精度。精度越小,仿真时间步越小,仿真时间越长。使用适当的精度,既达到必要的精度,又不会仿真太慢。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服