第12章VHDL和FPGA设计12.1概述12.2VHDL基本知识12.3上机指导12.1概述ProtelDXP提供了一个高效的硬件描述语言的设计工具,它支持两种不同方式的设计:既可以使用VHDL语言来直接编写文件,也可以通过绘制原理图直接编译成VHDL文件。用语言的方式而非图形等方式描述硬件电路,容易修改,容易保存。VHDL和Verilog都被IEEE公布为工业标准,是目前最为流行的硬件描述语言。12.2VHDL基本知识12.2.1VHDL程序基本结构12.2.2VHDL程序实体和结构体12.2.3VHDL程序包和设计库12.2.4VHDL配置指定12.2.5VHDL对象及其数据类型12.2.6VHDL表达式与运算操作符12.2.7VHDL子程序12.2.8VHDL顺序描述语句12.2.9VHDL并行描述语句12.2.10VHDL程序举例12.2.11VHDL小结12.2.1VHDL程序基本结构VHDL把一个任意复杂度的电路模块的模型视作一个单元。在VHDL中,元件由设计单元定义,设计单元由实体声明部分entity和结构体部分architecture组成。一个单元只有一个设计实体,而结构体的个数不限。实体声明部分提供该设计单元的公共信息:名称,端口信息和类属参数;而结构体则用于定义该设计单元的内部操作特性。一个设计实体和某一特定的结构体合起来共同定义一个元件模型。如图12.1所示。图12.1VHDL语言程序设计基本结构12.2.2VHDL程序实体和结构体VHDL提供层次化结构描述的手段。一个电路系统用一个实体描述,组成该电路系统的每个元件实际上也是一个一个的实体。整个电路系统可以作为更大型电路系统的一个元件。实体的描述分两部分:实体声明(entity)和结构体(architecture)。实体声明定义实体的外部接口,结构体规定该实体的内部结构或行为。12.2.3VHDL程序包和设计库在一个大的设计中,某些数据可能要在多个实体中使用,这时应当在程序包中声明。引用程序包时,在编译单元之前添加下面的语句:use库名.包名.项目名;或use库名.包名.all;前面一句表示包中的指定项目可见(即可以引用);后面一句的.all表示包中的所有项目都可见。12.2.4VHDL配置指定配置(Configuration)语句描述层与层之间的连接关系以及实体与结构体之间的连接关系。设计者可以利用这种配置语句来选择不同的构造体。在仿真某个实体时,可以利用配置来选择不同的构造体,进行性能对比实验以得到性能最佳的构造体。12.2.5VHDL对象及其数据类型VHDL有三类对象:信号、变量和常量。如表12.1所示。VHDL语言的每个对象都有一个类型,对象的类型在声明部分中确定。对象声明的一般形式是:对象类对象标识符:对象类型:=初值表达式;对象标识符由一个标识符或由逗号(,)隔开的多个标识符组成。初值也可以不指定,系统默认其初值为类型定义中的最左边的值。表12.1VHDL的三类对象12.2.6VHDL表达式与运算操作符逻辑运算符:not(非),and(与),or(或),nand(与非),nor(或非),xor(异或),xnor(异或非);算术运算符:+(正号),-(负号),abs(绝对值),+(加),-(减),*(乘),/(除),mod(取模),rem(取余),**(乘方),sll(逻辑左移),sla(算术左移),srl(逻辑右移),sra(算术右移),rol(逻辑循环左移),ror(逻辑循环右移);关系运算符:=(等于),≠(不等于),(小于),(大于),=(小于等于),=(大于等于);连接运算符:&(连接)12.2.7VHDL子程序VHDL提供两种子程序:过程和函数。过程与函数的区别在于:过程调用是一个语句,函数调用则是表达式的一部分。VHDL中子程序的定义分为两部分:声明部分与相应的子程序体。子程序体中的声明部分还可以包括另外的子程序声明和子程序体,形成子程序的嵌套。VHDL容许设计者自己定义子程序(过程和函数)。在VHDL描述的任何位置都可以对一个子程序进行重复调用。12.2.8VHDL顺序描述语句在用VHDL语言描述系统硬件行为时,按语句执行顺序对其进行分类,可以分为顺序描述语句和并行描述语句。1、顺序信号赋值语句2、变量赋值语句3、顺序控制语句4、其他顺序控制语句5、空语句null语句12.2.9VHDL并行描述语句1、进程语句2、简单并行语句3、复合并行语句4、元件例化语句12.2.10VHDL程序举例下面举一个N位加法器的VHDL程序例子,学生可结合前面所介绍的知识进行分析。在学完本节后,学生应该能够阅读分析一个简单的VHDL程序,同时应该能够根据功能要求设计编写一个简单的VHDL程序。略12.2.11VHDL小结VHDL语言主要从三方面描述一个电路系统或一个电路元件:(1)输入端口;(2)输出端口;(3)电路的行为和功能。VHDL既能描述硬件的结构,也能描述硬件的行为。行为描述的基本单元是进程语句,而结构描述的基本单元则是元件例化语句。设计者可以在任何层次上混合使用行为描述与结构描述。12.3上机指导(基于VHDL的FPGA设计)12.3.1现场可编程门阵列逻辑器件(FPGA)12.3.2怎样使VHDL程序变成实用电路12.3.3新建FPGA项目文件12.3.4新建VHDL文档12.3.5编译设计项目12.3.6原理图转换为VHDL文件12.3.7FPGA设计小结