版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字集成电路设计入门-从HDL到幅员于敦山 北大微电子学系第五章第五章 Verilog的词汇商定的词汇商定(Lexical convention)了解了解Verilog中运用的词汇商定中运用的词汇商定认识言语公用标志认识言语公用标志(tokens)学习学习timescale学习内容:学习内容:术语及定义术语及定义空白符:空格、空白符:空格、tabs及换行及换行Identifier: 标志符,标志符,Verilog中对象中对象(如模块或端如模块或端口口)的名字的名字Lexical: 言语中的字或词汇,或与其相关。由其言语中的字或词汇,或与其相关。由其文法文法grammar)或语法或语法(synt
2、ax)区分。区分。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 (se
3、l_, sel); and (a1, a, sel_), (b1, b, sel); / What does this line do? or (out, a1, b1);endmodule格式自在格式自在运用空白符提高可读性及代码组运用空白符提高可读性及代码组织。织。Verilog忽略空白符除非用于忽略空白符除非用于分开其它的言语标志。分开其它的言语标志。多行注释,在多行注释,在/* */内内单行注释单行注释到行末终了到行末终了整数常量和实数常量整数常量和实数常量整数的大小可以定义也可以不定义。整数表示为:整数的大小可以定义也可以不定义。整数表示为: 其中其中 size :大小,由十进制数表
4、示的位数:大小,由十进制数表示的位数(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- ex
5、tended 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实数常量实数常量实数可用科学表示法或十进制表示实数可用科学表示法或十进制表示科学表示法表示方式:科学表示法表示方式: , 表示:表示: 尾尾数数10指数指数字符串字符串str
7、ing)字符串要在一行中用双引号括起来,也就是不能跨行。字符串要在一行中用双引号括起来,也就是不能跨行。字符串中可以运用一些字符串中可以运用一些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 = %bVerilog中,字符串大多用于显示信息的命令中。中,字符串大多用于显示信
8、息的命令中。Verilog没没有字符串数据类型有字符串数据类型字符串字符串string)本义符及格式符将在验证支持部分讨论本义符及格式符将在验证支持部分讨论 格式符格式符%h%o%d%b%c%s%v%m%thexoctdecbinACSIIstringstrengthmoduletime本义符tn”tab换行反斜杠双引号ASCII representation of above格式符%0d表示没有前导0的十进制数标识符标识符(identifiers)标识符是用户在描画时给标识符是用户在描画时给Verilog对象起的名字对象起的名字标识符必需以字母标识符必需以字母(a-z, A-Z)或或( _
9、)开头,后面可以是字母、数字、开头,后面可以是字母、数字、( $ )或或( _ )。最长可以是最长可以是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);endmoduleVerilog标
10、识符标识符标识符标识符(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运用本义符能够会产生一些问题,并且不是一切工具都支持。运用本义符能够会产生一些问题,并且不是一切工具都支持。有时用本义符完成一些转换,如产生逻辑图的有时用本义符完成一些转换,如产生逻辑图的Verilog网表。综网表。综合工具输出综合网表时也运用本义符。不建
12、议运用本义符。合工具输出综合网表时也运用本义符。不建议运用本义符。本义标识符由反斜杠“开场,空白符终了Escaped Identifiers本义标识符本义标识符( Escaped identifiers)本义标识符允许用户在标识符中运用非法字符。如: #sel busa+ index A,B top. 3inst 1 / 在层次化名字中本义符 本义标识符必需以空格终了言语公用标志言语公用标志( tokens)系统义务及函数 $符号指示这是系统义务和函数符号指示这是系统义务和函数系统函数有很多,如:系统函数有很多,如:前往当前仿真时间前往当前仿真时间$time显示显示/监视信号值监视信号值($d
13、isplay, $monitor)停顿仿真停顿仿真$stop终了仿真终了仿真$finish $monitor($time, “a = %b, b = %h, a, b); 当信号当信号a或或b的值发生变化时,系统义务的值发生变化时,系统义务$monitor显示显示当前仿真时间,信号当前仿真时间,信号a值值(二进制格式二进制格式), 信号信号b值值16进进制格式。制格式。言语公用标志言语公用标志( tokens)延时阐明延时阐明“#用于阐明过程用于阐明过程(procedural)语句和门的实例的延时,但不能用语句和门的实例的延时,但不能用于模块的实例化。于模块的实例化。module MUX2_
14、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)编译指点编译指点(Compil
15、er Directives) ( )符号阐明一个编译指点符号阐明一个编译指点 这些编译指点使仿真编译器进展一些特殊的操作这些编译指点使仿真编译器进展一些特殊的操作 编译指点不断坚持有效直到被覆盖或解除编译指点不断坚持有效直到被覆盖或解除 resetall 复位一切的编译指点为缺省值,应该在其它编复位一切的编译指点为缺省值,应该在其它编译指点之前运用译指点之前运用文本交换文本交换(substitution) - define编译指点编译指点define提供了一种简单的文本交换的功能提供了一种简单的文本交换的功能 define 在编译时在编译时交换交换。可提高描。可提高描画的可读性。画的可读性。d
16、efine 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运用运用not_delay文本交换文本交换(substitution) 解除定
17、义的宏,运用解除定义的宏,运用 undef macro_name 运用编译指点运用编译指点define,可以,可以 提高描画的可读性提高描画的可读性 定义全局设计参数,如延时和矢量的位数。这些参数定义全局设计参数,如延时和矢量的位数。这些参数可以定义在同一位置。这样,当要修正设计配置时,可以定义在同一位置。这样,当要修正设计配置时,只需求在一个地方修正。只需求在一个地方修正。 定义定义Verilog命令的简写方式命令的简写方式 define vectors_ file /usr1/chrisz/library/vectors define results_ file / usr1/chrisz
18、/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 time units are in multiples of
20、 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);endmoduleTimescale time_precision不能大于不能大于time_unit time_precision和和time_unit的表示方法:的表示方法:integer unit_string integer : 可以是可以是1, 10,
21、 100 unit_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为为100fstimescale 1ns/ 10psmodule1 (. . .);not #1.23 (. . .) / 1.23ns or 12300 STUs. . .endmoduletimescale 100ns/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海底管道保温工岗前流程考核试卷含答案
- 土石方挖掘机司机安全生产意识强化考核试卷含答案
- 化工生产现场技术员安全意识强化评优考核试卷含答案
- 船舶泥工岗前规章考核试卷含答案
- 铸造模型工岗中风险评估与管理考核试卷含答案
- 浸渍干燥工岗前教育考核试卷含答案
- 绝缘制品制造工岗位设备性能考核试卷含答案
- 船舶业务员诚信道德知识考核试卷含答案
- 企业整年活动策划方案模板(3篇)
- 住宿应急处突预案(3篇)
- 服装设计师作品组绩效衡量表
- 河南省部分高中2026-2027学年高二上学期9月联考数学试卷(含答案)
- 2025“外研社国才杯”“理解当代中国”外语能力综合能力赛项(英语组)模拟样卷
- 2026年河北高考历史真题(试卷+解析)
- 人教版2026-2027学年高中物理必修第三册第9章-13章期中测试卷(含解析)
- 2026年企业合规师初级题库及答案
- 2026年武汉市中考语文试卷(含答案)
- 司法辅助人员笔试完整题型、分值及真题答案
- 陕西科技大学教师专业技术职务评审工作实施办法(试行)
- 肿瘤患者输血支持(医学课件)
- 2026中国土地用途管制制度创新与实施效果评估报告
评论
0/150
提交评论