verilog95标准和2001标准的比较_第1页
verilog95标准和2001标准的比较_第2页
verilog95标准和2001标准的比较_第3页
verilog95标准和2001标准的比较_第4页
verilog95标准和2001标准的比较_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.wdVerilog_1995和Verilog_2001的比拟版本记录表作者版本号日期修改内容王长友V1.00.a2021 .5.24第一次创立作为一门如今世界最流行的硬件描述语言之一,Verilog HDL拥有自己的独有的特点和优势。当然同时作为一门不断完善和开展的硬件描述语言,他同样也具有他的缺乏之处。Verilog HDL是在用途最广泛的C语言的根底上开展起来的一种硬件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorb

2、y推出它的第三个商用仿真器verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。Verilog HDL虽然得到了广泛的应用,但是然们在应用过程中也发同大多数新兴的编程语言一样,有很多的不完善、缺陷。在2001年,OVI(Open Verilog Initiative)向IEEE提交了一个改善了用户

3、觉得原始的Verilog1995标准缺陷的新的标准。这一扩展版本成为了 IEEE1364-2001标准,也就是Verilog 2001。Verilog 2001是1995的增补,现在几乎所有的工具都支持Verilog 2001。Verilog 2001也被称作Verilog 2.0。作为一个verilog的初学者,根底是最重要的。现在将我在学习中了解到的verilog的IEEE1364-95标准和最新的IEEE1364-2001标准做一个简单的比拟和分析,希望可以在加深我的学习和理解的同时可以方便大家的探讨、学习和补充。我从以几个方面来比拟verilog HDL的IEEE1364-1995标准

4、和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 reg 7:0 y;input wire 7:0 a,b;input wire en;2)、Verilog- 2001中增加了ANSI C风格的输入输出端口说明,可以用于

5、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);3)、对于含有parameter的module, 例如:Verilog -1995:Module adder(sum, co, a, b, ci); parameter MSB = 3

6、1, 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 reg co, input wire MSB:LSB a,b, input wire ci;);.2、 带有初始化的存放器类型变量声明在Verilog-1995中定义和初始化re

7、g需要两条语句,而在Verilog-2001中可以合成一条语句。实例如下:Verilog-1995:reg clock;initialclk = 0;Verilog-2001:reg clock = 0;3、 敏感表的改良1、Verilog-2001使用逗号隔开敏感信号Verilog-2001中可以用逗号来代替or隔开敏感信号or也可以Verilog-1995:always (a or b or c or d or sel)Verilog-2001:always (a, b, c, d, sel)2、Verilog-2001组合逻辑敏感信号通配符在组合逻辑设计中,需要在敏感信号列表中包含所有组

8、合逻辑输入信号,以免产生锁存器。在大型的组合逻辑中比拟容易遗忘一些敏感信号,因此在Verilog-2001中可以使用*包含所有的输入信号作为敏感信号。Verilog-1995:always (sel or a or b)if (sel)y = a;elsey = b;Verilog-2001always * /combinational logic sensitivityif (sel)y = a;elsey = b;这样做的好处是防止敏感表切合不完整导致的latch。4、 带有符号算数运算的扩展1、net型和reg型可以声明为带符号的变量,如:Reg signed 63:0 data;Wir

9、e signed 11:0address;2、函数的返回值可以是有符号的数,例如:Function signed 128:0 alu;3、literal integer number 可以定义为有符号的,如: 16hc501 /an unsigned 16-bit hex value 16shc501 /a singned 16-bit hex value4、增加了算数的左移和右移>>>,<<< 操作符“<<<和“>>>。对于符号数,执行算数移位操作时,将符号填补移出的位。例如: D=8b10100011; D>&g

10、t;3; /逻辑右移的结果为:8b00010100 D>>>3; /算数右移的结果是:8111101005、增加了系统函数$signed,$unsigned。用于在有符号和无符号数之间的转换。如:Reg 63:0 a;/unsigned data type always(a) begin result1 = a/2; / unsfned arithmetic result2 = $signed(a)/2; /signed ariithmetic end5、 可变向量域的选择<starting_bt>+:<width> part-select incre

11、ments from the staeting bit<starting_bt>-:<width> part-select increments from the staeting bitReg 63:0 vector1; /little-endianReg 0:63 ventor2; /big-endianByte = vector131-:8; /selects vector131:24Byte = vector124+:8; /selects vector131:24Byte = vector231-:8; /selects vector124:31Byte =

12、vector224+:8; /selects vector124:31其中,起始位可以是变量,但是位宽必须是整数。因此可以用变量域选择,用循环语句选取一个很长的向量所有位。for(j=0;j<=31;j=j+1) byte=data1(j*8)+:8;/用于初始化向量的一个域data1(byteNum*8)+:8=8b0;6、 多维数组的建立Verilog-1995中只允许对reg,integer和time建立一维数组,常用于RAM,ROM的建模。Verilog-2001中可以对net和variable建立多维数组。/-dimensional array of 8-bit reg var

13、ibales/(allowed n verilog-1995 and verilog-2001)Reg 7:0 array1 0:255;Wire 7:0 out1 = array1address;/3-dimensional array of 8-bit wire nets/(new for verilog-2001)Wire 7:0 array2 0:255 0:255 0:15;Wire 7:0 out2 =array2addr1addr2addr3;7、 多维数组的赋值Verilog-1995不允许直接访问矩阵的某一位或者某几位,必须将整个矩阵字复制到另一个暂存变量中,从暂存中访问。V

14、erilog-2001 可以直接访问矩阵的某一维或者某一位如:Verilog-1995:Reg 31:0 ram 0:255;Reg 7:0 high_btye;Reg 31:0 temp; temp =ram5; high_btye = temp 31:24;verilog-2001 reg 31:0 ram 0:255; reg 7:0 high_btye; high_btye =ram531:24;/select the high_order byte of one word in a 2-dimensional array of 32-bit reg variablesReg 31:0

15、 array20:2550:15;Wire 7:0 out = array2100731:24;8、 乘方运算符增加乘方运算power operate,运算符是“*,如果其中有一个操作数是real类型的,返回值讲师real类型的。两个操作数都是integer类型的,返回值才是integer类型的。9、 自动可重入任务和自动递归函数1、可重入任务 任务本质上是静态的,同时并发的多个任务共享存储区。当某个任务在多个模块中被调用,那么这些任务对同一块存储空间进展操作,结果可能是错误的。Verilog-2001增加了关键之automatic,内存空间是动态分配的,是任务变为可重入的。2、递归函数:例如

16、:Function automatic 63:0 factorial;Input 31:0 n;If(n=1)factorial =1;else factoral = n*factorial(n-1); endfunction10、 自动宽位扩展Verilog-1995中对不指定位数的位宽超过32位的总线赋高阻是:只对低32位赋值为高阻,高位将为0。Verilog-2001将高阻或者不定态赋值给未指定位宽的信号时,可以自动扩展到整个位宽范围。11、 常数函数Verilog语法规定必须使用数值或者常数表达式来定义向量的位宽和阵列的规模。如:parameter width = 8;Wire wid

17、th-1:0 data ;Verilog-1995中要求上述表达式必须为算数操作。Verilog-2001中可以使用函数,成为常数函数,它的数值在编译或者详细描述中被确定。如:Parameter ram_size =1024;Input clogb(ram_size)-1:0 address_bus;.Function integer clogb;Input31:0 depth;BeginFor(clogb=0;depth>0;clogb=clogb+1)Depth =depth>>1;Endendfunction12、 增加了文件输入输出操作Verilog-1995中在文件

18、的输入、输出操作方面功能非常有限,文件操作疆场借助于verilog PLI接口编程语言,通常与c语言的文件输入、输出库的访问来处理。并且规定同时翻开的I/O文件不能超过31个。Verilog-2001增加了新的系统任务和函数,并且规定同时翻开的文件数目为230个。13、 显示参数重载Verilog-1995中参数的重载有两种方法:一种是defparam语句显式重新定义。第二种是在模块实体调用时使用#符号隐式的重新定义参数。Verilog-2001中增加了一种新的方法,成为显式重载。14、 Generate语句Verilog-2001新增了语句“generate,通过generate循环,可以产

19、生一个对象比方一个元件或者一个模块等的多个例化,为可变尺度的设计提供了方便。Generate语句一般在循环和条件语句中使用。Verilog-2001增加了四个关键字generate、endgenerate、genvar和localparam,其中个genvar是一个新的数据类型,用在generate循环中的标尺变量必须定义为genvar类型数据。15、 Redister变成了variable由于自1998年的verilog一来,regiser一直用来描述一种变量的类型,常常让人误以为register和硬件的存放器一致,在verilog-2001参考手册中将register变成了variable

20、。16、 对条件编译的改良Verilog-1995中支持ifdef、else、endif、undef进展条件编译,verilog-2001中增加了ifndef和elseif17、 文件和行编译显示Verilog需要不断的跟踪元代码的行号和文件名,可编程语言接口PLI可以取得并利用行号和源文件的信息,以标记运行是错误的。但是如果verilog代码经过其他工具的处理,源代码的行号和文件名可能丧失。故在verilog-2001中增加了line,用来标定元代码的行号和文件名。 18、 属性随着仿真器之外的工具把verilog作为设计输入,这些工具需要verilog语言能够参加指定工具有关的信息和命令。Verilog么有定义标准的属性,属性名和数值由工具厂商或者其他标准来定义。目前尚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论