Verilog HDL概述
Verilog HDL(简称Verilog)最初是GDA(Gateway Design Automation)公司在1983年开发的一种硬件描述语言(Hardware Description Language),GDA公司随后推出了相应的逻辑仿真器产品Verilog-XL。1987年,Synopsys公司发布了第一个Verilog的逻辑综合工具之后,提高了数字电路的设计效率。1989年,著名EDA公司 Cadence Design Systems并购了GDA公司,并于1990年公开发表了Verilog HDL,成立了OVI(Open Verilog Internation)组织来负责Verilog HDL的发展。在OVI组织的推动下,Verilog HDL于1995年被接受为IEEE标准,即IEEE std 1364-1995,之后在2001年和2005年分别进行了修订,通常简称为Verilog-1995、Verilog-2001和Verilog-2005。Verilog-2001是对Verilog-1995的一个重大改进版本,引入了一些新的特性;Verilog-2005只是对Verilog-2001做了一些细微修正。Verilog-2001是目前Verilog的主流版本,被大多数商业电子设计自动化软件支持,本书以Verilog-2001为主介绍。
和传统的原理图输入方式相比,硬件描述语言有以下优点:
(1)HDL比原理图更有效率,可以描述更复杂的系统。
传统的原理图设计方法,描述一个系统需要几十张至几百张图纸。但是随着设计规模日益增大,原理图描述变得过于复杂,设计和维护就变得很不方便。采用文本的输入方式,可以将精力集中到系统的功能描述,而不必顾及绘图的方法;能够以较少的时间完成更大的、更复杂的设计。
(2)HDL比原理图具有更高层次的抽象表达能力。
原理图设计是将已有的电路元件按照某种设计意图连接起来,实现一定的逻辑功能;设计者必须有一种能力,用逻辑元件的组合来实现所需要的系统行为。而硬件描述语言具有行为级的描述能力,能够以较抽象的形式描述系统;将行为描述转变为逻辑电路的工作交由综合工具完成。
(3)有利于设计的维护和重用。
代码的重用比原理图更有优势,比如硬件描述语言支持参数化设计,易于从整体上修改设计,比如修改总线宽度。文本的代码也比原理图有更好的可移植性,易于迁移到不同的设计环境。
(4)不仅可以用于逻辑设计,还可以用于系统建模和仿真。
原理图只能用于逻辑设计,而硬件描述语言不仅可以用于逻辑设计,还可以用于系统建模和仿真。在传统的硬件设计中,仿真和调试通常只能在后期进行,一旦出现问题,重新修改设计的代价很大。基于HDL的设计可以在早期就进行仿真,较早发现设计错误,大大缩短设计周期,降低设计成本。
Verilog HDL的语法非常类似于C语言,很多关键字也是相同的。这使得熟悉C语言的工程师学习Verilog变得容易。但是C语言和Verilog又有着本质的不同,C语言是程序设计语言(Programming Language),而Verilog是描述语言(Description Language)。Verilog和C语言最大的不同,就是C语言的语句最终是由某个CPU依次执行的,而Verilog语句并不是被某个CPU执行,它描述的是并行工作的硬件。要想用好Verilog,必须有数字逻辑的基础知识和硬件的思维方式。
作为一种硬件描述语言,Verilog HDL既可用于仿真建模,也可用于逻辑综合。所谓综合,就是将抽象的HDL描述依据约束条件转变成门级逻辑网络。逻辑综合通常由综合工具软件完成。Verilog能在多个层次上进行设计描述,从开关级、门级、寄存器传输级(RTL),到算法级甚至系统级,都可以胜任;但是用Verilog描述的电路模型,不一定都能够被综合,有些语句只能用于仿真,本书着重介绍可综合的Verilog描述。Verilog HDL支持多种描述风格:行为描述、结构描述、数据流描述。结构描述是通过基本元件(如与、或、非门,触发器等)和相互连接关系描述电路,本质上和画原理图相同,只是将原理图的符号和连线用语句来描述。行为描述是对设计的功能进行描述,设计者不需要考虑具体用什么逻辑电路来实现,具有一定的抽象性,比较适合RTL级和算法级的设计。数据流描述通常是指用assign赋值语句对组合逻辑电路功能的描述。在实际应用中,往往需要三种描述方式混合使用。