第3章
Verilog硬件描述语言
硬件描述语言(Hardware Description Language,HDL)是一种国际上流行的描述数字电路和系统的语言,可以在EDA工具的支持下,快速实现设计者的设计意图。
常用的硬件描述语言有Verilog HDL和VHDL两种。本章介绍Verilog语言的语法和使用规则。
3.1硬件描述语言概述
Verilog HDL是由GDA(Gateway Design Automation)公司的Philip R.Moorby于1983年首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出商用仿真器VerilogXL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,Verilog HDL成为该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,成立OVI(Open Verilog International)组织,并推动Verilog HDL的发展。IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL13641995,2001年发布了Verilog HDL13642001,目前已发布Verilog HDL 2003。
VHDL是VHSIC Hardware Description Language的缩写,其中VHSIC是Very High Speed Integrated Circuit的缩写,美国国防部为解决项目的多个承包人的信息交换困难和设计维修困难的问题,提出了VHDL构想,由TI、IBM和INTERMETRICS公司完成,并于1987年作为IEEE标准,即IEEE std 10761987[LRM87],后来又进行一些修改,成为新的标准版本,即IEEE std 10761993[LRM93]。
VHDL和Verilog HDL这两种语言的主要功能差别并不大,它们的描述能力也类似,相比于Verilog HDL,只是VHDL的系统描述能力稍强,而Verilog HDL的底层描述能力则更强。
3.1.1硬件描述语言特点
硬件描述语言(HDL)有不同于其他软件语言的特点:
(1) 功能的灵活性。HDL支持设计者从开关、门级、RTL、行为级等不同抽象层次对电路进行描述,并支持不同抽象层次描述的电路组合为一个电路模型,HDL支持系统的层次化设计,支持元件库和功能模块的可重用设计。用HDL设计数字电路系统是一种贯穿于设计、仿真和综合的方法。
(2) HDL支持高层次的设计抽象,可应用于设计复杂的数字电路系统。HDL设计和传统的原理图输入方法的关系如同高级语言和汇编语言。原理图输入的可控性好、实现效率高,比较直观,但在设计大规模CPLD/FPGA时显得很烦琐,有时甚至无法理解。而设计者使用HDL进行设计,可以在非常抽象的层次上对电路进行描述,将烦琐的实现细节交由EDA工具辅助完成,实现“自顶向下”的层次化设计,缩短开发周期。
(3) HDL设计可不依赖厂商和器件,移植性好。设计者在设计时,只需在寄存器传输级(RTL级)对电路系统的功能和结构用HDL进行描述,电路系统如需实现在不同器件上,也不用重复设计,只需选择相应FPGA/CPLD芯片的综合、布局布线的库函数,由相应的设计工具对设计描述进行重新转换即可。
3.1.2层次化设计
随着现代控制、通信等电子行业的发展,数字电路复杂度也越来越高。集成电路制造业和EDA工具的快速发展,使复杂数字系统的设计实现成为可能。复杂系统的设计必然要使用层次化、结构化的设计方法,其设计思想就是“自顶向下”,即“化繁为简,逐步实现”,在数字系统的功能指标和端口基础上,将系统分解成多个子模块构成,然后对各个子模块作进一步分解,直到将模块分解到适中的实现复杂度或者可使用的EDA元件库中已有的基本元件实现为止,在设计的后期将各子模块组合起来构成一个系统。自顶向下设计示意图如图31所示。
图31自顶向下设计示意图
本章介绍Verilog语言,将按照“先框架,再细节”的模式,即先介绍Verilog HDL程序的基本结构,然后介绍常用的语法,最后进行一些数字系统设计练习。
3.2Verilog HDL程序的基本结构
Verilog语言作为一种用于设计数字系统的工具,可以完成以下功能:
(1) 描述数字系统的逻辑功能;
(2) 描述多个数字系统模块之间的连接,组合成为一个系统;
(3) 建立测试激励信号文件,在仿真环境中,对设计好的系统进行调试验证。
根据对电路描述的抽象程度不同,Verilog语言描述有四个层次的模型类型:
(1) 行为级或算法级: 这是Verilog语言支持的最高抽象级别,设计者关注算法的实现,不关心具体的硬件实现细节,几乎可以使用Verilog语言提供的所有语句;
(2) 寄存器传输级(RTL): 通过描述模块内部状态转移的情况来表征该逻辑单元的功能,设计者关注数据的处理及其如何在线网上、寄存器间的传递;
(3) 门级: 调用已设计好的逻辑门基本单元(原语),如与门、或门、异或门等,描述逻辑门之间的连接,以实现逻辑功能;
(4) 开关级: 这是Verilog语言支持的最低抽象层次,通过描述器件中的晶体管、存储节点及其互连来设计模块。
上述四个抽象级别的特性、描述方法和相关的问题在表31中给出。
表31Verilog HDL的抽象等级
模型特性描述说明
行为级
功能模型利用两类过程语句表征:
(1) initial语句: 常用于建立行为(仿真)模型,只运行一次;
(2) always: 用于行为描述和RTL级编码,可持续运行。
具体内容见3.4节不是所有的行为模型都是可综合的
例:
always (A or B or C or D or Sel)
begin
case (Sel)
2`b00: Z = A;
2`b01: Z = B;
2`b10: Z = C;
2`b11: Z = D;
default: Z = 1`bx;
endcase
end
注意case语句与ifelse if语句的区别
RTL级
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录