VHDL程序设计教程.doc





《VHDL程序设计教程.doc》由会员分享,可在线阅读,更多相关《VHDL程序设计教程.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、19第1章 VHDL语言基础第1章 VHDL语言基础1.1 概 述硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述、结构描述、数据流描述的语言。目前,利用硬件描述语言可以进行数字电子系统的设计。随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来。有些HDL成为IEEE标准,但大部分是企业标准。VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司。可谓百家争鸣,百花齐放。这些不同的语言传播到国内,同样也引起了不同的影响。在
2、我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言。这两种语言已成为IEEE标准语言。电子设计自动化(electronic design automation,EDA)技术的理论基础、设计工具、设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA则是这些硬件配置文件的载体。当这些FPGA器件加载、配置上不同的文件时,这个器件便具有了相应的功能。在这一系列的设计、综合、仿真、验证、配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中。以HDL语言表达设计意
3、图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟。在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力。HDL语言的语法语义学研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真、验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件。软件、硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐。毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力。本书从应用的角度向国内广大读者介绍VHDL编程技术,让大家掌握HDL编程,了解
4、FPGA结构,学会使用EDA工具,为集成电路前端设计打下基础。1.1.1 硬件描述语言的诞生VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。HDL发展的技术源头是:在HDL形成发展之前,已有了许多程序设计语言,如汇编、C、Pascal、Fortran、Prolog等。这些语言运行在不同硬件平台和不同的操作环境中,它们适合于描述过程和算法,不适合作硬件描述。CAD的出现,使人们可以利用计算机进行建筑、服装等行业的辅助设计,电子辅助设计也同步发展起来。在从CAD工
5、具到EDA工具的进化过程中,电子设计工具的人机界面能力越来越高。在利用EDA工具进行电子设计时,逻辑图、分立电子原件作为整个越来越复杂的电子系统的设计已不适应。任何一种EDA工具,都需要一种硬件描述语言来作为EDA工具的工作语言。这些众多的EDA工具软件开发者,各自推出了自己的HDL语言。HDL发展的社会根源是:美国国防部电子系统项目有众多的承包公司,由于各公司技术路线不一致,许多产品不兼容,他们使用各自的设计语言,使得甲公司的设计不能被乙公司重复利用,造成了信息交换困难和维护困难。美国政府为了降低开发费用,避免重复设计,国防部为他们的超高速集成电路提供了一种硬件描述语言,以期望VHDL功能强
6、大、严格、可读性好。政府要求各公司的合同都用它来描述,以避免产生歧义。由政府牵头,VHDL工作小组于1981年6月成立,提出了一个满足电子设计各种要求的能够作为工业标准的HDL。1983年第3季度,由IBM公司、TI公司、Intermetrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,并宣布实施,即IEEE STD 10761987LRM87。1993年VHDL重新修订,形成了新的标准,即IEEE STD 10761993LRM93。从此以后,美国国防部实施新的技术标
7、准,要求电子系统开发商的合同文件一律采用VHDL文档。即第一个官方VHDL标准得到推广、实施和普及。1.1.2 HDL语言的种类HDL语言在国外有上百种。高等学校、科研单位、EDA公司都有自己的HDL语言。现选择较有影响的作简要介绍。Candence公司是一家著名的EDA公司,财力雄厚。该公司的Verilog HDL于1983年由Gate Way Design Automatic公司的Phil Moorby首创。他在19841985年间成功设计了Verilog-XL仿真器,于1986年提出了快速门级仿真的XL算法,使Verilog HDL语言变得更加丰富和完善,从而受到了EDA工具设计公司的青
8、睐。1989年Candence公司购买了GDA公司,Verilog HDL语言从此变为Candence公司的“私有财产”,成为Candence公司的EDA设计环境上的硬件描述语言。经过Candence公司的努力,Verilog HDL于1995年成为IEEE标准,也是民间公司第一个硬件描述语言标准,即Verilog HDL 13641995。由于Verilog HDL语言从C语言发展来,所以有C语言基础的设计人员能够较快入门。ALTERA公司是一家半导体器件公司,其CPLD器件在世界市场上占主导地位。这家公司不仅是硬件生产厂商,也是EDA工具开发商,它的EDA工具MAX+plus II、Qua
9、rtus由于人机界面友好、易于使用、性能优良,而受到FPGA、CPLD器件设计人员的欢迎。运行在MAX+plus II环境下的VHDL语言具有C语言设计风格,好学好用,因此被众多用户使用。HDL语言来自不同地方,由不同语言演变而来,为了各平台之间相互转换,又推出了EDIF(Electronic Design Interchange Format)。它不是一种语言,而是用于不同数据格式的EDA工具之间的交换设计数据。1.1.3 VHDL语言上机操作条件VHDL语言描述能力强,覆盖面广,抽象能力强,所以用VHDL语言作为硬件模型建模很合适。设计者的原始描述是非常简练的硬件描述,经过EDA工具综合处
10、理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错机会。VHDL语言可读性好。VHDL既能被人容易读懂,又能被计算机识别,作为技术人员编写的源文件,它既是计算机程序、技术文档和技术人员硬件信息交流的文件,又是签约双方的合同文件。VHDL语言中的设计实体(design entity)、程序包(package)、设计库(library),为设计人员重复利用他人的设计提供了技术手段。重复利用他人的IP模块和软核(soft core)是VHDL的特色,许多设计不必个个都从头再来,而是只要在更高层次上把IP模块
11、利用起来,就能达到事半功倍的效果。VHDL语言可以在多种EDA工具设计环境中运行。硬件平台是工作站或高档微机。高档微机的配置应该具有:高分彩显 17英寸以上,分辨率1024768或更高硬盘 20GB以上内存 512MB以上CPU Intel兼容CPU光驱 8倍速以上操作系统 Windows XX开发工具MAX+plus II 或 Quartus IICandence、Menter、ALTERA等公司的EDA工具均支持VHDL语言环境。关于VHDL语言的上机实验,在第7章中将作详细介绍。1.2 VHDL程序的实体 VHDL程序包含实体(entity)、结构体(architecture)、配置(c
12、onfiguration)、包集合(package)、库(library)5个部分。 简单的实体是由实体和结构体两部分组成的。实体用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或者系统组织结构形式。设计实体是VHDL程序的基本单元,是电子系统的抽象。简单的实体可以是一个与门电路(AND Gate),复杂的实体可以是一个微处理器或一个数字电子系统。实体由实体说明和结构体说明两部分组成。例1-1是计数器程序结构模板。由这个抽象的程序可以归纳出VHDL程序的基本结构。【例1-1】 计数器程序结构模板 LIBRARY IEEE; USE ieee.std_logic_1164
13、.all; ENTITY entity_name IS PORT ( SIGNAL _data_input_name : IN INTEGER RANGE 0 TO _count_value;SIGNAL_clk_input_name: IN STD_LOGIC;实体SIGNAL_clm_input_name: IN STD_LOGIC;端口说明 SIGNAL_ena_input_name: IN STD_LOGIC; SIGNAL_ld_input_name : IN STD_LOGIC;SIGNAL_count_output_name : OUT INTEGER RANGE 0 TO _
14、Count_value; )END entity_name; ARCHITECTURE counter OF _entity_name IS SIGNAL_count_signal_name: INTEGER RANGE 0 TO _count_value; BEGIN PROCESS (_clk_input_name,_clrn_input_name)-敏感变量表 BEGIN IF _clrn_input_name = 0 THEN _count_signal_name = 0; ELSIF (_clk_input_nameEVENT AND _clk_input_name = 1)THEN
15、 IF _ld_input_name = 1 THEN结构体 _count_signal_name = _data_input_name;进程 ELSE IF _ena_input_name = 1 THEN _count_signal_name = _count_signal_name + 1; ELSE _count_signal_name = _count_signal_name; END IF; END IF; END IF; END PROCESS; _count_output_name = _count_signal_name; END counter;由例1-1可以看出,VHDL
16、程序由两部分组成:第1部分为实体说明,第2部分为结构体。VHDL程序结构更抽象、更基本、更简练的表示如图1.1所示。设计实体用关键字ENTITY来标识,结构体由ARCHITECTURE来标识。系统设计中的实体提供该设计系统的公共信息,结构体定义了各个模块内的操作特性。一个设计实体必须包含一个结构体或含有多个结构体。一个电子系统的设计模型如图1.2所示。 图1.1 VHDL程序基础 图1.2 VHDL程序设计系统模型1.2.1 实体的组成 实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。根据IEEE标准,实体组织的一般格式为:ENTITY 实体名 IS GENERIC(类型表);
17、-可选项 PORT(端口表); -必需项 实体说明部分; -可选项 BEGIN 实体语句部分;END ENTITY 实体名;根据上述实体说明的一般书写格式,编写一个VHDL程序设计的实体说明,如例1-2所示。【例1-2】 add8实体说明部分 LIBRARYieee;USEieee.std_logic_1164.all;ENTITY add8ISPORT( b: instd_logic_vector(7 downto0); a: in std_logic_vector(7 downto0); Ci: in std_logic;Sum: out std_logic_vector(7 downto
18、0);Co: out std_logic;)END add8;由实体说明部分画出add8实体的外部接口图,如图1.3所示。实体说明以“ENTITY 实体名IS”开始,以“END 实体名”结束。大写字母或黑体字都是VHDL关键字。EDA工具对VHDL语言的大小写字母不加区分。实体说明主要描述一些参数的类型。参数的类型说明必须放在端口说明之前,这是VHDL标准所规定的。图1.3 实体add8/8位加法器外部接口在层次化系统设计中,实体说明是整个系统的输入/输出(I/O)。在一个器件级的设计中,实体说明是一个芯片的输入/输出(I/O)。实体说明在VHDL程序设计中描述一个元件或一个模块与设计系统的其
19、余部分(其余元件、模块)之间的连接关系,可以看作一个电路图的符号。因为在一张电路图中,某个元件在图中与其他元件的连接关系是明显直观的,如图1.3所示。1.2.2 类型说明(可选)类型说明是实体说明中的可选项,放在端口说明之前,其一般书写格式为:GENERICCONSTANT名字表:IN子类型标识:静态表达式,举例:GENERIC(m:TIME:3ns)这个参数说明是指在VHDL程序中,构造体内的参数m的值为3ns。类型说明和端口说明是实体说明的组成部分,用于说明设计实体和外部通信的通道。利用外部通信通道,参数的类型说明为设计实体提供信息。参数的类型用来规定端口的大小、I/O引脚的指派、实体中子
20、元件的数目和实体的定时特性等信息。1.2.3 端口说明端口说明是对设计实体与外部接口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路图符号的一个引脚。实体说明中的每一个I/O信号被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以当作变量用在逻辑表达式中。定义实体的一组端口称作端口说明(port declaration)。端口说明的组织结构必须有一个名称、一个通信模式和一个数据类型。端口说明的一般格式为:Port(端口名,端口名: 模式 数据类型名 端口名,端口名: 模式 数据类型名);1端口名端口名是赋于每个外部引脚的名称,名称的含义要明确,如D开头的端口名表示数据,
21、A开头的端口名表示地址等。端口名通常用几个英文字母或一个英文字母加数字表示。下面是合法的端口名:CLK,RESET,A0,D32模式模式用来说明数据、信号通过该端口的传输方向。端口模式有in、out、buffer、inout。(1)输入(in)输入仅允许数据流入端口。输入信号的驱动源由外部向该设计实体内进行。输入模式主要用于时钟输入、控制输入(如Load、Reset、Enable、CLK)和单向的数据输入,如地址信号(address)。不用的输入一般接地,以免浮动引入干扰噪声。(2)输出(out)输出仅允许数据流从实体内部输出。端口的驱动源是由被设计的实体内部进行的。输出模式不能用于被设计实体
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 程序设计 教程

限制150内