《verilog95标准和2001标准地比较.doc》由会员分享,可在线阅读,更多相关《verilog95标准和2001标准地比较.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Verilog_1995 和和 Verilog_2001 的比较的比较版本记录表作者版本号日期修改内容王长友V1.00.a2015.5.24第一次创建作为一门如今世界最流行的硬件描述语言之一,Verilog HDL 拥有自己的独 有的特点和优势。当然同时作为一门不断完善和发展的硬件描述语言,他同样 也具有他的不足之处。Verilog HDL 是在用途最广泛的 C 语言的基础上发展起来的一种硬件描述语 言,它是由 GDA(Gateway Design Automation)公司的 PhilMoorby 在 1983 年末首 创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟 与
2、时序分析工具。1985 年 Moorby 推出它的第三个商用仿真器 verilog-XL,获得了 巨大的成功,从而使得 Verilog HDL 迅速得到推广应用。1989 年 CADENCE 公司 收购了 GDA 公司,使得 VerilogHDL 成为了该公司的独家专利。1990 年 CADENCE 公司公开发表了 Verilog HDL,并成立 LVI 组织以促进 Verilog HDL 成为 IEEE 标准,即 IEEE Standard 1364-1995。Verilog HDL 虽然得到了广泛的应用,但是然们在应用过程中也发同大多数 新兴的编程语言一样,有很多的不完善、缺陷。在 200
3、1 年,OVI(Open Verilog Initiative)向 IEEE 提交了一个改善了用户觉得原始的 Verilog1995 标准缺陷的新 的标准。这一扩展版本成为了 IEEE1364-2001 标准,也就是 Verilog 2001。Verilog 2001 是 1995 的增补,现在几乎所有的工具都支持 Verilog 2001。Verilog 2001 也被称作 Verilog 2.0。作为一个 verilog 的初学者,基础是最重要的。现在将我在学习中了解到的 verilog 的 IEEE1364-95 标准和最新的 IEEE1364-2001 标准做一个简单的比较和分 析,希
4、望可以在加深我的学习和理解的同时可以方便大家的探讨、学习和补充。我从以几个方面来比较 verilog HDL 的 IEEE1364-1995 标准和 IEEE1364-2001 的变化:1、模块声明的扩展模块声明的扩展1) 、Verilog- 2001 允许将端口声明和数据类型声明放在同一条语句中,例如:Verilog -1995:Module mux8(y,a,b,en);output 7:0 y;input 7:0a,b;input en;reg 7:0 y;wire 7:0 a,b; wire en; Verilog-2001:Module mux8(y,a,b,en); output
5、reg 7:0 y; input wire 7:0 a,b; input wire en; 2)、Verilog- 2001 中增加了 ANSI C 风格的输入输出端口说明,可以用于 module、task 和 function。例如:Verilog -1995:Module mux8(y,a,b,en);output 7:0 y;input 7:0a,b;input en;reg 7:0 y;wire 7:0 a,b; wire en; Verilog-2001:Module mux8( output reg 7:0 y; input wire 7:0 a,b; input wire en)
6、; 3)、对于含有 parameter 的 module, 例如:Verilog -1995:Module adder(sum, co, a, b, ci);parameter MSB = 31,LSB = 0;output MSB:LSB sum;output co;input MSB:LSB a,b;input ci;reg MSB:LSB sum;reg co;wire MSB:LSB a,b;wire ci;.Verilog-2001:Module adder#(parameter MSB = 31,LSB = 0)( output reg MSB: LSB sum,output re
7、g co,input wire MSB: LSB a,b,input wire ci; ); . 2、带有初始化的寄存器类型变量声明带有初始化的寄存器类型变量声明在 Verilog-1995 中定义和初始化 reg 需要两条语句,而在 Verilog-2001 中可 以合成一条语句。实例如下:Verilog-1995:reg clock; initial clk = 0; Verilog-2001: reg clock = 0; 3、敏感表的改进敏感表的改进1) 、Verilog-2001 使用逗号隔开敏感信号Verilog-2001 中可以用逗号来代替 or 隔开敏感信号(or 也可以)Ve
8、rilog-1995: always (a or b or c or d or sel) Verilog-2001: always (a, b, c, d, sel)2) 、Verilog-2001 组合逻辑敏感信号通配符在组合逻辑设计中,需要在敏感信号列表中包含所有组合逻辑输入信号, 以免产生锁存器。在大型的组合逻辑中比较容易遗忘一些敏感信号,因此在 Verilog-2001 中可以使用*包含所有的输入信号作为敏感信号。Verilog-1995:always (sel or a or b) if (sel) y = a; else y = b;Verilog-2001 always * /c
9、ombinational logic sensitivity if (sel)y = a; else y = b;这样做的好处是避免敏感表切合不完整导致的 latch。4、带有符号算数运算的扩展带有符号算数运算的扩展1) 、net 型和 reg 型可以声明为带符号的变量,如:Reg signed 63:0 data;Wire signed 11:0address;2) 、函数的返回值可以是有符号的数,例如:Function signed 128:0 alu;3) 、literal integer number 可以定义为有符号的,如:16hc501 /an unsigned 16-bit he
10、x value16shc501 /a singned 16-bit hex value4) 、增加了算数的左移和右移(,” 。对于符号数,执行算数移位操作时,将符号 填补移出的位。例如:D=8b10100011;D3; /逻辑右移的结果为:8b00010100D3; /算数右移的结果是:8111101005) 、增加了系统函数$signed,$unsigned。用于在有符号和无符号数之间的 转换。如:Reg 63:0 a;/unsigned data typealways(a)beginresult1 = a/2; / unsfned arithmeticresult2 = $signed(a
11、)/2; /signed ariithmeticend 5、可变向量域的选择可变向量域的选择 +: part-select increments from the staeting bit -: part-select increments from the staeting bit Reg 63:0 vector1; /little-endian Reg 0:63 ventor2; /big-endianByte = vector131-:8; /selects vector131:24 Byte = vector124+:8; /selects vector131:24 Byte = ve
12、ctor231-:8; /selects vector124:31 Byte = vector224+:8; /selects vector124:31其中,起始位可以是变量,但是位宽必须是整数。因此可以用变量域选择, 用循环语句选取一个很长的向量所有位。for(j=0;j0;clogb=clogb+1)Depth =depth1;End endfunction 12、增加了文件输入输出操作增加了文件输入输出操作Verilog-1995 中在文件的输入、输出操作方面功能非常有限,文件操作疆场 借助于 verilog PLI(接口编程语言) ,通常与 c 语言的文件输入、输出库的访问 来处理。并
13、且规定同时打开的 I/O 文件不能超过 31 个。Verilog-2001 增加了新的系统任务和函数,并且规定同时打开的文件数目为 230个。13、显示参数重载显示参数重载Verilog-1995 中参数的重载有两种方法:一种是 defparam 语句显式重新定 义。第二种是在模块实体调用时使用#符号隐式的重新定义参数。Verilog-2001 中增加了一种新的方法,成为显式重载。14、Generate 语句语句Verilog-2001 新增了语句“generate” ,通过 generate 循环,可以产生一个 对象(比如一个元件或者一个模块等)的多个例化,为可变尺度的设计提供了 方便。Ge
14、nerate 语句一般在循环和条件语句中使用。Verilog-2001 增加了四个关键 字 generate、endgenerate、genvar 和 localparam,其中个 genvar 是一个新的数 据类型,用在 generate 循环中的标尺变量必须定义为 genvar 类型数据。15、Redister 变成了变成了 variable由于自 1998 年的 verilog 一来,regiser 一直用来描述一种变量的类型,常 常让人误以为 register 和硬件的寄存器一致,在 verilog-2001 参考手册中将 register 变成了 variable。16、对条件编译的
15、改进对条件编译的改进Verilog-1995 中支持ifdef、 else、 endif、 undef 进行条件编译,verilog-2001 中 增加了ifndef 和elseif17、文件和行编译显示文件和行编译显示Verilog 需要不断的跟踪元代码的行号和文件名,可编程语言接口(PLI)可 以取得并利用行号和源文件的信息,以标记运行是错误的。但是如果 verilog 代 码经过其他工具的处理,源代码的行号和文件名可能丢失。故在 verilog-2001 中增加了line,用来标定元代码的行号和文件名。 18、属性属性随着仿真器之外的工具把 verilog 作为设计输入,这些工具需要 v
16、erilog 语言 能够加入指定工具有关的信息和命令。Verilog 么有定义标准的属性,属性名和数值由工具厂商或者其他标准来定 义。目前尚未指定的标准。19、系统任务和系统函数的扩展系统任务和系统函数的扩展Verilog-2001 增加了 17 个文件输入、输出任务: $fgetc、$ungetc、$fflush、$ferror、$fgets、$rewind、$swrite、$swrited、$swrit eh、$sformat、$sdf_annotate、$fscanf、$sscanf、$fread、$fttell、$fseek.增加了两个转换函数:$signed 和$unsingned。
17、增加了命令行输入任务:$test$plusargs 和$value$plusargs20、VCD 文件的扩展文件的扩展VCD 文件用于存储选定的变量数值变化的信息,信息的记录由 VCD 系统任 务来完成。在 verilog-1995 标准中只有一种类型的 VCD 文件,即四状态类型, 这种类型的 VCD 文件只记录变量在 0、1、x 和 z 状态之间的变化,而且不记录 信号强度信息。而在 verilog-2001 标准中增加了一种扩展类型的 VCD 文件,能 够记录变量在状态之间的转换,同时记录信号的强度。扩展名 VCD 系统任务 $dumpports、$dumpportsoff、$dumpportson、$dumpportsall、$dumpportslimit 、$dumpportsfulsh、$vcdclose。21、其他其他除上面讲的内容外,Verilog-2001 还增加了其他一些有用特性如增加了 verilog 的设计内容的配置功能、增强的 SDF(Standard Delay File)支持、PLI 增 强改进等,感兴趣的读者可以 Verilog-2001 的标准文献。