VHDL开发精解与实例剖析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 ⅤHDL语言简介

1.3.1 VHDL语言概述

VHDL(VHSIC hardware description language,超高速集成电路硬件描述语言),VHSIC即very high speed integrated circuit的缩写。VHDL由美国国防部(DOD)制定,1987年被采纳为IEEE 1076标准,1993年被更新为IEEE 1164标准。VHDL是第一个被IEEE标准化的硬件描述语言。

美国国防部在20世纪70年代末和80年代初提出了VHSIC计划,其目标是为下一代集成电路的生产实现阶段性的工艺极限,以及为完成10万门级以上的设计,建立一种新的描述方法。1981年,美国国防部提出了VHDL语言。1986年,IEEE致力于VHDL的标准化工作,为此成立了VHDL标准化小组,经过多次的修改和扩充,直到1987年12月VHDL才被纳为IEEE 1076标准。1988年,Milstd 454规定,所有为美国国防部设计的ASIC产品必须采用VHDL描述。1993年,IEEE 1076标准被修订,更新为IEEE 1164标准。1996年,IEEE 1076.3成为VHDL综合标准。

VHDL主要用在两个领域,即可编程逻辑器件(CPLD/FPGA)和专用集成电路(ASIC)。一个写好的VHDL程序可以下载到可编程逻辑器件中实现电路功能,也可以提交到工厂用于ASIC芯片的流片。目前,许多复杂的商业芯片,如微控制器,就是通过这种方式设计的。

应当注意,起初VHDL只是作为系统规范的一个标准,而不是为硬件设计而制定的。VHDL同时支持电路综合与电路仿真功能。所有的VHDL语句都可仿真,但有些VHDL语句不可综合,可综合的VHDL语句只是所有VHDL语句的一个小集合。作为VHDL的初学者,我们一般更关心可综合的VHDL语句,并采用可编程逻辑器件来验证和实现自己的设计。因此,本书侧重于讲解面向综合的VHDL语言以及基于CPLD/FPGA的VHDL程序设计流程。当然,面向仿真的VHDL语句在系统验证上有重要应用,因此第9章将详细讲解面向仿真的VHDL语句,并在第11章详细介绍基于EDA软件系统的仿真验证方法。

1.3.2 使用VHDL的优势

VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句,VHDL在语言形式以及描述风格和句法上,都与一般的计算机高级语言类似。VHDL程序结构的特点是,将一项工程设计或设计实体分为外部(即端口,可视部分)和内部(不可视部分)两部分。在对一个实体定义了外部接口后,一旦其内部开发完成,其他设计实体就可以直接调用这个实体。

使用VHDL语言进行硬件电路设计具有以下优势:

1)具有更强的行为描述能力

VHDL具有强大的行为描述能力,从而决定了它能成为系统级设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体器件内部结构,从逻辑行为上描述和设计大规模系统的重要保证。

2)支持层次化和模块化设计

层次化和模块化是利用EDA工具进行电路和系统设计区别于传统设计方法的重要方面。层次化和模块化设计方法简化了系统设计,优化了系统结构,提高了系统可靠性。VHDL语言将设计的电路看做一个实体(即模块),支持模块内部功能的描述和模块间连接关系的描述,为层次化和模块化设计提供了充分的语法支持。

3)可仿真与可综合

VHDL用于描述硬件行为,但并非所有VHDL描述语句都能被翻译成硬件电路与之对应,并在逻辑器件上实现。仿真是指根据代码模拟硬件的行为,综合是指将代码转化成可物理实现的电路结构。所有的VHDL语句都能用于仿真,但有一部分VHDL语句不能进行综合。VHDL强大的仿真建模功能使设计者能在系统设计的各个阶段十分方便地对数字系统进行仿真验证。

4)设计自动化

对于用VHDL完成的一个确定的设计,可以利用EDA工具进行综合和优化,并自动地把VHDL描述语句转化为门级电路结构。这种自动化设计方式极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。

5)系统设计与硬件结构无关

VHDL对设计的描述具有相对独立性,在设计的最初阶段,设计者可以不懂硬件的结构,也不必了解最终设计实现的物理器件是什么,而进行独立的设计。到了综合阶段,设计和硬件结构就有了密切关系,选择相应器件的工作可由计算机自动进行。

6)具有很强的移植能力

VHDL是一种标准化的硬件描述语言,描述的设计通用性好,因此同一个设计描述可以被支持IEEE标准的不同工具所支持,使设计具有很强的移植能力。

1.3.3 VHDL语言程序开发流程

VHDL程序按照设计目的可以被划分为面向仿真和面向综合两类,同时,可综合的VHDL程序能够应用在可编程逻辑器件和ASIC两个领域。本书所关注的是使用VHDL语句进行可综合的程序设计,并在CPLD或FPGA上实现设计的模式。使用VHDL进行CPLD或FPGA设计的流程如图1-2所示。

图1-2 VHDL程序设计流程

图1-2所示的所有设计步骤都可以通过EDA软件来完成,包括VHDL代码输入、代码综合和实现、器件配置以及各阶段的仿真验证。各步骤说明如下:

(1)编写VHDL程序。在EDA软件的输入工具中,按照VHDL语法规则输入设计代码。

(2)代码综合。综合的第一步是编译,编译器将设计者用RTL级描述的VHDL程序翻译成门级网表。综合的第二步是优化,即在门级网表的基础上根据速度或面积的需求对网表进行优化,这些都是由EDA软件自动完成的。

(3)在综合前或综合后利用软件来仿真验证,便于及早发现错误并加以修正。

(4)布局布线工具利用综合步骤产生的门级网表生成CPLD或FPGA的配置文件。

(5)将配置文件下载到CPLD或FPGA中,验证和实现设计。

本书后续章节将更加详细地介绍上述各步骤,并详细介绍相关EDA软件的使用。这里,读者只要对VHDL程序的开发流程有个总体印象即可。

1.3.4 给初学者的建议

初学者学习VHDL语言应注意以下几点:

1)注意VHDL编程与高级语言编程的差别

高级语言编程基于计算机的CPU,最后被编译为CPU能识别的指令,其特点是完全地顺序执行。而VHDL语言用于描述硬件,必须深刻体会其“并发执行”的特性以及其他硬件相关特性。

2)注意VHDL语言的可综合与可仿真特性

可综合VHDL只是VHDL语言体系的一个子集,初学者一般是以设计可综合的VHDL程序为目的,必须注意VHDL的可综合与可仿真特性。不要在可综合程序中出现只能用于仿真的VHDL语句或数据类型。

3)注意基本模块的VHDL设计方法

基本模块的VHDL描述中包含了基本的VHDL设计思想,而且基本模块也是组成复杂数字系统的基础,对基本模块的VHDL设计多加练习实践能快速提升初学者的VHDL程序设计水平。

4)语法学习“贵精不贵多,靠练不靠背”

“30%的VHDL语句能完成90%的电路设计”。因此,初学者学习VHDL不可贪多,应该把精力放在常用的语句上。对于VHDL语法不可死记硬背,而应该加强编程实践,在实践中理解和掌握语法。不妨大体了解一下VHDL都有哪些语句,在实际编程中常用哪些语句,可以现查现用,多用几次后自然可以记住这些语句。