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

上传人:人*** 文档编号:578887641 上传时间:2024-08-25 格式:PPT 页数:22 大小:108.52KB
返回 下载 相关 举报
北大数字集成电路课件5verilog的符号标识_第1页
第1页 / 共22页
北大数字集成电路课件5verilog的符号标识_第2页
第2页 / 共22页
北大数字集成电路课件5verilog的符号标识_第3页
第3页 / 共22页
北大数字集成电路课件5verilog的符号标识_第4页
第4页 / 共22页
北大数字集成电路课件5verilog的符号标识_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《北大数字集成电路课件5verilog的符号标识》由会员分享,可在线阅读,更多相关《北大数字集成电路课件5verilog的符号标识(22页珍藏版)》请在金锄头文库上搜索。

1、数字集成电路设计入门-从HDL到版图于敦山 北大微电子学系第五章第五章 Verilog的词汇约定的词汇约定(Lexical convention)1.理解理解Verilog中使用的词汇约定中使用的词汇约定2.认识语言专用标记认识语言专用标记(tokens)3.学习学习timescale学习内容:学习内容:术语及定义术语及定义1.空白符:空格、空白符:空格、tabs及换行及换行2.Identifier: 标志符,标志符,Verilog中对象中对象(如模块或端如模块或端口口)的名字的名字3.Lexical: 语言中的字或词汇,或与其相关。由其语言中的字或词汇,或与其相关。由其文法(文法(gramm

2、ar)或语法或语法(syntax)区分。区分。4.LSB:最低有效位最低有效位(Lease significant bit)5.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” whe

3、n sel = 1.*/ not (sel_, sel); and (a1, a, sel_), (b1, b, sel); / What does this line do? or (out, a1, b1);endmodule格式自由格式自由使用空白符提高可读性及代码组使用空白符提高可读性及代码组织。织。Verilog忽略空白符除非用于忽略空白符除非用于分开其它的语言标记。分开其它的语言标记。多行注释,在多行注释,在/* */内内单行注释单行注释到行末结束到行末结束整数常量和实数常量整数常量和实数常量整数的大小可以定义也可以不定义。整数表示为:整数的大小可以定义也可以不定义。整数表示为:

4、其中其中 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 hexa

5、decimal (zero- extended to 32 bits)8b1100_ 0001 8-bit binary64hff01 64-bit hexadecimal (zero- extended to 64 bits)9O17 9-bit octal32bz01x Z-extended to 32 bits3b1010_ 1101 3-bit number, truncated to 3b1016.3 decimal notation32e- 4 scientific notation for 0.00324.1E3 scientific notation for 4100整数常量和

6、实数常量整数常量和实数常量整数的大小可以定义也可以不定义。整数表示为:整数的大小可以定义也可以不定义。整数表示为:数字中(数字中(_)忽略,便于查看)忽略,便于查看没有定义大小没有定义大小(size)整数缺省为整数缺省为32位位缺省数基为十进制缺省数基为十进制数基数基(base)和数字和数字(16进制进制)中的字母无大小写之分中的字母无大小写之分当数值当数值value大于指定的大小时,截去高位。如大于指定的大小时,截去高位。如 2b1101表示表示的是的是2b01实数常量实数常量实数可用科学表示法或十进制表示实数可用科学表示法或十进制表示科学表示法表示方式:科学表示法表示方式: , 表示:表示

7、: 尾数尾数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中

8、,字符串大多用于显示信息的命令中。中,字符串大多用于显示信息的命令中。Verilog没有没有字符串数据类型字符串数据类型字符串(字符串(string)转义符及格式符将在验证支持部分讨论转义符及格式符将在验证支持部分讨论 格式符格式符%h%o%d%b%c%s%v%m%thexoctdecbinACSIIstringstrengthmoduletime转义符tn”tab换行反斜杠双引号ASCII representation of above格式符%0d表示没有前导0的十进制数标识符标识符(identifiers)标识符是用户在描述时给标识符是用户在描述时给Verilog对象起的名字对象起的名字标

9、识符必须以字母标识符必须以字母(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

10、(out, a1, b1);endmoduleVerilog标识符标识符标识符标识符(identifiers)有效标识符举例:有效标识符举例: shift_reg_a busa_index _bus3无效标识符举例:无效标识符举例: 34net / 开头不是字母或开头不是字母或“_” a*b_net / 包含了非字母或数字,包含了非字母或数字, “$” “_” n238 /包含了非字母或数字,包含了非字母或数字, “$” “_”Verilog区分大小写,所有区分大小写,所有Verilog关键词使用小写字母。关键词使用小写字母。转义标识符转义标识符( Escaped identifiers)可以

11、包含任何可打印字符可以包含任何可打印字符反斜杠及空白符不是标识符的一部分反斜杠及空白符不是标识符的一部分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使用转义符可能会产生一些问题,并且不是所有工具都支持。有使用转义符可能会产生一些问题,并且不是所有工具都支持。有时用转义符完成一些转换,如产生逻辑图的时用转义符完成一些转换,如产生逻辑

12、图的Verilog网表。综合网表。综合工具输出综合网表时也使用转义符。工具输出综合网表时也使用转义符。不建议使用转义符。不建议使用转义符。转义标识符由反斜杠“”开始,空白符结束Escaped Identifiers转义标识符转义标识符( Escaped identifiers)转义标识符允许用户在标识符中使用非法字符。如: #sel busa+ index A,B top. 3inst .net1 / 在层次化名字中转义符 转义标识符必须以空格结束语言专用标记语言专用标记( tokens)系统任务及函数 $符号指示这是系统任务和函数符号指示这是系统任务和函数系统函数有很多,如:系统函数有很多,

13、如:返回当前仿真时间返回当前仿真时间$time显示显示/监视信号值监视信号值($display, $monitor)停止仿真停止仿真$stop结束仿真结束仿真$finish $monitor($time, “a = %b, b = %h”, a, b); 当信号当信号a或或b的值发生变化时,系统任务的值发生变化时,系统任务$monitor显示当前仿真时显示当前仿真时间,信号间,信号a值值(二进制格式二进制格式), 信号信号b值(值(16进制格式)。进制格式)。语言专用标记语言专用标记( tokens)延时说明延时说明“#”用于说明过程用于说明过程(procedural)语句和门的实例的延时,但

14、不能语句和门的实例的延时,但不能用于模块的实例化。用于模块的实例化。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),对象内

15、在延对象内在延时时(intra-object delay)编译指导编译指导(Compiler Directives)( )符号说明一个编译指导符号说明一个编译指导这些编译指导使仿真编译器进行一些特殊的操作这些编译指导使仿真编译器进行一些特殊的操作编译指导一直保持有效直到被覆盖或解除编译指导一直保持有效直到被覆盖或解除resetall 复位所有的编译指导为缺省值,应该在其它编复位所有的编译指导为缺省值,应该在其它编译指导之前使用译指导之前使用文本替换文本替换(substitution) - define编译指导编译指导define提供了一种简单的文本替换的功能提供了一种简单的文本替换的功能 de

16、fine 在编译时在编译时替换替换。可提高描述的可读性。可提高描述的可读性。define not_delay #1define and_delay #2define or_delay #1module 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

17、使用使用not_delay文本替换文本替换(substitution)解除定义的宏,使用解除定义的宏,使用 undef macro_name使用编译指导使用编译指导define,可以可以提高描述的可读性提高描述的可读性定义全局设计参数,如延时和矢量的位数。这些参数可以定定义全局设计参数,如延时和矢量的位数。这些参数可以定义在同一位置。这样,当要修改设计配置时,只需要在一个义在同一位置。这样,当要修改设计配置时,只需要在一个地方修改。地方修改。定义定义Verilog命令的简写形式命令的简写形式 define vectors_ file /usr1/chrisz/library/vectors d

18、efine results_ file / usr1/chrisz/library/results可以将可以将define放在一个文件中,与其它文件一起编译。放在一个文件中,与其它文件一起编译。文本包含文本包含(inclusion) - include编译指导编译指导include在当前内容中插入一个文件在当前内容中插入一个文件 格式:格式: include “”如如include global.vinclude parts/count. vinclude ././library/mux. v”include可用于:可用于:include保存在文件中的全局的或经常用到的一些定义,如文本宏保存在

19、文件中的全局的或经常用到的一些定义,如文本宏在模块内部在模块内部include一些任务(一些任务(tasks),提高代码的可维护性。提高代码的可维护性。可以是相对路径或绝对路径Timescaletimescale 说明时间单位及精度说明时间单位及精度格式:格式:timescale / 如:如:timescale 1 ns / 100 ps time_unit: 延时或时间的测量单位延时或时间的测量单位time_precision: 延时值超出精度要先舍入后使用延时值超出精度要先舍入后使用timescale必须在模块之前出现必须在模块之前出现timescale 1 ns / 10 ps/ All

20、 time units are in multiples of 1 nanosecondmodule 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);endmoduleTimescaletime_precision不能大于不能大于time_unittime_precision和和time_unit的表示方法:的表示方法:integer unit_

21、stringinteger : 可以是可以是1, 10, 100unit_string: 可以是可以是s(second), ms(millisecond), us(microsecond), ns(nanosecond), ps(picosecond), fs(femtosecond)以上以上integer和和unit_string可任意组合可任意组合precision的时间单位应尽量与设计的实际精度相同。的时间单位应尽量与设计的实际精度相同。precision是仿真器的仿真时间步。是仿真器的仿真时间步。若若time_unit与与precision_unit差别很大将严重影响仿真速度。差别很大

22、将严重影响仿真速度。如说明一个如说明一个timescale 1s / 1ps,则仿真器在则仿真器在1秒内要扫描其事秒内要扫描其事件序列件序列1012次;而次;而timescale 1s/1ms则只需扫描则只需扫描103次。次。如果没有如果没有timescale说明将使用缺省值,一般是说明将使用缺省值,一般是ns。Timescale所有所有timescale中的最小值决定仿真时的最小时间单位。中的最小值决定仿真时的最小时间单位。这是因为仿真器必须对整个设计进行精确仿真这是因为仿真器必须对整个设计进行精确仿真 在下面的例子中,仿真时间单位(在下面的例子中,仿真时间单位(STU)为为100fstim

23、escale 1ns/ 10psmodule1 (. . .);not #1.23 (. . .) / 1.23ns or 12300 STUs. . .endmoduletimescale 100ns/ 1nsmodule2 (. . .);not #1.23 (. . .) / 123ns or 1230000 STUs. . .endmoduletimescale 1ps/ 100fsmodule3 (. . .);not #1.23 (. . .) / 1.23ps or 12 STUs (rounded off). . .endmodule复习复习1.Verilog中的空白符总是忽略

24、的吗?中的空白符总是忽略的吗?2.在源代码中插入注释有哪两种方法?在源代码中插入注释有哪两种方法?3.整数常数的尺寸如何指定?缺省的尺寸及数基是多少?整数常数的尺寸如何指定?缺省的尺寸及数基是多少?4.设置的编译指导如何解除?设置的编译指导如何解除?5.编译指导影响全局吗?编译指导影响全局吗?6.在仿真时为什么要用接近实际的最大在仿真时为什么要用接近实际的最大timescale精度?精度?1.是的。空白符用于隔开标识符及关键词,多余的忽略是的。空白符用于隔开标识符及关键词,多余的忽略2./用于单行注释,用于单行注释,/* */用于多行注释用于多行注释3.整数常量的尺寸由整数常量的尺寸由10进制数表示的位数确定。缺省为进制数表示的位数确定。缺省为32位,缺位,缺省的数基为十进制。省的数基为十进制。4.使用使用resetall解除解除5.编译指导是全局的。编译时遇到编译指导后开始有效,直至复编译指导是全局的。编译时遇到编译指导后开始有效,直至复位或被覆盖,可能影响多个文件。位或被覆盖,可能影响多个文件。6.使用尽可能大的精度。精度越小,仿真时间步越小,仿真时间使用尽可能大的精度。精度越小,仿真时间步越小,仿真时间越长。使用适当的精度,既达到必要的精度,又不会仿真太慢。越长。使用适当的精度,既达到必要的精度,又不会仿真太慢。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号