硬件描述语言(HDL)是一种用于描述数字电路结构和行为的建模语言。另外,HDL允许通过仿真测试设计的电路。硬件描述语言以文本格式表示时序行为和电路结构。此外,根据硬件模块的需求,HDL的语法和语义还包括表示时序和并发的符号。
硬件描述语言中一个很好的例子是VHDL,它是VHSIC Hardware Description Language(VHSIC 硬件描述语言)的缩写。VHSIC表示超高速集成电路,是20世纪80年代初美国的一个政府项目。后来, VHDL 语言成为IEEE (Instituteof Electrical and Electronic Engineers) 标准,而且现在已经有好几种适用于基于VHDL语言设计的仿真工具和综合(例如,生成硬件)工具。其他硬件描述语言还有SystemC, Handel-C,Verilog以及System Verilog。
在VHDL中,数字电路的设计可以用两个抽象层次来描述, 即结构或行为。寄存器传输级别(RTL)的描述被广泛用于数字系统的开发。VHDL 并不等同于软件编程语言, 合成工具也不等同于编译器工具, 因为它们不会从 VHDL 描述中生成可执行代码。此外, 这些描述可用于生成硬件, 例如, 用于配置 FPGA 的文件。VHDL描述可以进行仿真,即在仿真器中运行。测试过程可以通过测试台(testbenches,在这里会生成激励来仿真VHDL描述)来执行。测试台将外部激励定义为测试案例作为电路输入。测试台可以用VHDL或其他语言(例如 C,C++,以及SystemC)来编写。
VHDL模型包含实体和结构两个主要部分。如图2.1所示,VHDL描述的实体部分只有电路里面要用到的输入输出引脚(接口),没有任何关于电路内部逻辑(电路操作)的信息。在结构部分,如图2.2所示,是电路的操作描述。图2.3示是半加器电路的完整VHDL描述。需要注意的是,在本例中,已经使用了std_logic类型,因此它的库必须被包含
在描述中。因此,VHDL描述通常包含以下部分:
库定义---包含所需的库和包,例如IEEE 包(如图2.3的第1--2行);
实体---定义数字电路(信号)的引脚,即实现的逻辑与外部硬件的接口(如图2.3的第4--11行);
结构---定义数字电路的功能,使用到实体部分定义的输入输出引脚(如图2.3第13--17行)。因此,对于同一个功能,实体可能有不同的实现方法(结构)。
无