1.5.2 Verilog HDL的特点
Verilog HDL是在1983年由GDA(GateWay Design Automation)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司(Cadence Design System)的第一个合伙人。在1984至1985年,Phil Moorby设计出了第一个关于Verilog-XL的仿真器;1986年,他对Verilog HDL的发展又做出了另一个巨大贡献—提出了用于快速门级仿真的XL算法。
随着Verilog-XL算法的成功,Verilog HDL得到了迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL成为Cadence公司的产品。1990年,Cadence公司决定公开Verilog HDL,于是成立了OVI(Open Verilog International)组织来负责Verilog HDL的发展。基于Verilog HDL的优越性,IEEE于1995年制定了关于Verilog HDL的IEEE标准,即Verilog HDL 1364—1995。随后Verilog HDL不断完善和发展,并先后制定了IEEE 1364—2001、IEEE 1364—2005两个标准。
Verilog HDL是一种用于数字逻辑电路设计的语言,采用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。Verilog HDL既是一种行为描述语言,也是一种结构描述语言。这也就是说,既可以用电路的功能来进行描述,也可以用元器件及其连接来建立电路的Verilog HDL模型。Verilog HDL模型可以是实际电路的不同级别的抽象,这些抽象的级别和它们对应的模型类型共有以下几种。
• 系统级(System):用高级语言结构实现设计模块的外部性能的模型。
• 算法级(Algorithm):用高级语言结构实现设计算法的模型。
• RTL级(Register Transfer Level):描述数据在寄存器之间传输,以及如何处理这些数据的模型。
• 门级(Switch-Level):描述器件中三极管和存储节点,以及它们之间连接的模型。
一个复杂电路系统的完整Verilog HDL模型是由若干Verilog HDL模块构成的,每一个模块又可以由若干子模块构成。有些模块需要综合成具体电路,而有些模块只是与用户设计的模块交互的电路或激励信号源。利用Verilog HDL可以构造清晰的模块间层次结构,从而描述复杂的大型设计,并对设计的逻辑进行严格的验证。
作为一种结构化和过程性的语言,Verilog HDL的语法结构非常适合算法级和RTL级的模型设计,具有以下功能。
• 可描述顺序执行或并行执行的程序结构;
• 可通过延迟表达式或事件表达式来明确地控制过程的启动时间;
• 可通过命名的事件来触发其他过程里的激活行为或停止行为;
• 可提供条件、if-else、case、循环程序结构;
• 可提供带参数且非零延续时间的任务(Task)程序结构;
• 可提供定义新的操作符的函数结构(Function);
• 可提供用于建立表达式的算术运算符、逻辑运算符、位运算符。
作为一种结构化的语言,Verilog HDL也非常适合于门级和开关级的模型设计,具有以下功能。
• 可提供完整的一套组合型原语(Primitive);
• 可提供双向通路和电阻器件的原语;
• 可建立MOS器件的电荷分享和电荷衰减动态模型。
Verilog HDL的构造性语句可以精确地建立信号的模型,这是因为在Verilog HDL中可通过延迟和输出强度的原语建立精确程度很高的信号模型。信号值有不同的强度,可以通过设计宽范围的模糊值来降低不确定条件的影响。
作为一种高级的硬件描述编程语言,Verilog HDL有着类似C语言的风格,其中许多语句和C语言中的对应语句十分相似。如果读者有一定的C语言编程基础,那么学习Verilog HDL并不困难,只要理解Verilog HDL的某些语句并加强练习就能很好地掌握该语言,进而设计复杂的数字逻辑电路。