数字电子技术课件第二章EDA技术的基础知识_第1页
数字电子技术课件第二章EDA技术的基础知识_第2页
数字电子技术课件第二章EDA技术的基础知识_第3页
数字电子技术课件第二章EDA技术的基础知识_第4页
数字电子技术课件第二章EDA技术的基础知识_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章EDA技术的基础知识2.1EDA技术及其发展2.2Multisim10应用基础

2.3硬件描述语言VHDL基础

2.4QuartusⅡ9.0应用基础

一、本章内容

1.了解EDA技术的发展过程。

2.掌握Multisim10应用的基础知识。

3.掌握VHDL语言的基础知识。

4.掌握QuartusⅡ9.0的基本使用方法。二、本章教学目的与要求

三、本章知识结构2.1EDA技术及其发展

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,是从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品设计的软件工具。EDA技术的发展

EDA技术的发展历程同大规模集成电路设计、计算机技术、可编程逻辑器件、电子设计技术及工艺的发展是同步的。就过去近几十年电子技术的发展历程,EDA技术的发展大致分为3个阶段。

20世纪70年代到80年代初为CAD阶段。在这一时期,集成电路制作已广泛采用MOC工艺,可编程逻辑技术和可编程逻辑器件已经问世,计算机作为一种运算工具已在科研领域应用,CAD的概念初步形成。利用CAD软件,设计人员开始利用计算机代替手工劳动,进行逻辑仿真、集成电路版图编辑、印制电路板布局布线等方面的工作,提高了电子系统设计的效率和可靠性。但由于计算机的运行速度、存储容量、图形处理能力等方面的限制,CAD没有形成系统,仅是一些孤立的软件程序。

20世纪80年代中后期为CAE阶段。在这一时期,集成电路设计进入CMOS时代,复杂的可编程逻辑器件已经被应用于商业领域,相应的辅助设计软件业投入使用。CAD软件主要用来实现电子电路仿真、集成电路版图编辑、印制电路板布局布线、设计文档制作等各设计阶段的自动化设计。

20世纪90年代后是设计自动化阶段。随着硬件描述语言的标准化得到进一步的确定,计算机辅助工程、辅助分析、辅助设计在电子技术领域得到了更加广泛的应用,与此同时电子系统向着多功能、高速度、智能化方向发展,极大地推动了EDA计数的应用和发展。在这一时期,EDA系统真正具有了自动化设计能力,EDA技术被推向成熟和实用。

EDA技术在进入21世纪以后,得到了更大的发展,开始步入一个新的时期,主要表现在:电子技术各个领域全方位进入EDA领域;电子技术领域各学科的界限更加模糊、更加相互包容和渗透;

IP(IntellectualProperty,知识产权)核在电子行业的产业领域、技术领域和设计应用领域得到广泛应用;在仿真和设计两方面支持标准硬件描述语言的EDA工具不断推出;系统级、行为验证级硬件描述语言的出现,使得复杂电子系统的设计和验证趋于简单;嵌入式微处理器软核的出现,更大规模的FPGA/CPLD器件不断推出,使得单片电子系统(SystemonaChip,SoC)进入大规模应用阶段。EDA工具

EDA软件工具层出不穷,目前进入我国并具有广泛影响的EDA软件有Multisim(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、Quartus、Cadence等等。2.2Multisim10应用基础2.2.1Multisim10概述

Multisim是在EWB(ElectronicsWorkbench,电子设计工作平台)的基础上发展而来的,是一款专门用于电子线路仿真与设计的EDA工具软件。Multisim10是美国国家仪器有限公司(NI)于2007年推出的版本,包含在NI电子学教育平台(ElectronicsEducationPlatform)软件中。Multisim10是一个完整的集成化设计环境,它将计算机仿真和虚拟仪器技术完美地结合在一起,为电子线路的仿真和设计提供了良好的环境。Multisim10特点Multisim10具有直观的图形界面。Multisim10具有丰富的元器件库。Multisim10具有完全交互式的仿真能力。Multisim10具有丰富的虚拟仪器。Multisim10具有强大的分析功能。Multisim10具有良好的信息转换功能。Multisim10还可以用于工控梯形图仿真和基于MultiMCU的单片机仿真。

2.2.2Multisim10操作与使用

1.工作界面2.菜单命令

Multisim10的菜单栏位于工作界面的上方,包括File、Edit、View、Place、MCU、Simulate、Transfer、Tools、Reports、Options、Window和Help共12个主菜单,每个主菜单都有一个下拉菜单。File菜单Edit菜单View菜单Place菜单

Simulate菜单Tools菜单3.常用工具栏(1)Standard工具栏

Standard【标准】工具栏主要有新建、打开、保存、打印、预览、复制、粘贴、剪切、前进、后退等功能。(2)Components工具栏

Components【元器件】工具栏实际上是设计者在电路仿真中可以使用的所有元器件符号库,它和Multisim10的元器件模型库相对应,共有18个分类库,每个分类库中存放着同一类型的元器件。

(3)Virtual工具栏4.创建电路窗口

运行Multisim10软件,系统会自动打开一个空白的电路窗口,电路窗口是用户放置元器件,设计电路的工作区域。Multisim10允许用户创建符合自己要求的电路窗口,包括界面大小、工具栏、电路颜色、缩放倍数、系统符号等。

在菜单栏执行Options|GlobalPreferences…菜单命令后,系统弹出Preferences对话框,对话框中有Paths、Save、Parts和General4个命令选项卡,单击Parts命令选项卡,出现元器件参数选择对话框,在该对话框中可以设置元器件的放置模式和元器件符号标准。

元器件参数选择对话框

SheetProperties对话框

在菜单栏执行Options|SheetProperties…菜单命令后,系统弹出SheetProperties对话框,对话框中有Circuit、Workspace、wiring、Font、PCB和Visibility6个命令选项卡。通过执行不同命令选项卡中的命令,可以对电路图的显示方式、图幅形式、连接线、字体等进行设置。5.基本操作(1)元器件的选取和放置

执行菜单命令Place|Component…,或单击元器件图标工具栏中元器件图标按钮,弹出SelectaComponent【元器件选择】对话框。(2)元器件的移动、复制(3)连线(4)添加连接结点(5)旋转或翻转元器件(6)替换已放置的元器件(7)修改元器件属性参数(8)修改连线轨迹2.2.3Multisim10常用仪器介绍

Multisim10提供了许多种虚拟仪器,利用虚拟仪器不仅可以对仿真电路进行电路参数测试,还可以对测试的数据进行分析、保存等。执行菜单命令View|Toolbars|Instruments,可以打开Instruments工具栏。

万用表

万用表具有自动量程转换功能,主要用于测量直流或交流电路中两点间的电压、电路、电阻、和分贝。万用表的测量精度可以根据需要,通过修改内部电阻来调整。万用表的连接符号和仪器面板如图所示。测量电流时,将万用表连接符号串联到待测支路中去,并在仪器面板上选择A按钮,就可以测量电路中某一支路的电流。如果需要测量多个支路的电流,则可以在每个需要测量电流的支路里串联万用表,然后进行仿真,即可得到要测量的电流值。当万用表作为电流表使用时,它的内阻是很低的,如需改变电流表的内阻,可以在参数设置对话框中修改。测量电压时,将万用表连接符号并联到待测支路中去,并在仪器面板上选择V按钮,就可以测量电路中某一支路的电压。测量电阻时,将万用表连接符号并联到待测支路的两端,并在仪器面板上选择Ω按钮,就可以测量电路中某一支路的电阻。测量电阻时,待测支路中不能包括电源,并且待测支路不能与其它支路并联。测量分贝时,将万用表连接符号并联到待测支路的两端,并在仪器面板上选择dB按钮,就可以测量电路中两点之间的电压增益或者损耗。2.函数发生器函数发生器是产生正弦波、三角波和方波的信号源。函数发生器能够提供标准的模拟信号,而且可以很方便的更改波形、频率、幅度值、占空比和偏置电压。函数发生器的连接符号和仪器面板如图所示。3.双踪示波器

双踪示波器可以观察一路或者两路信号随时间变化的波形,可以根据周期信号的波形测量其幅值和频率。双踪示波器的连接符号和仪器面板如图所示。

4.字信号发生器

字信号发生器广泛应用于数字电路的仿真中,它是一个可以编程的通用数字激励源,可以将数字字符或二进制数字信号输入到数字电路中去。字信号发生器的连接符号和仪器面板如图所示。5.逻辑分析仪

逻辑分析仪广泛应用于数字电路仿真测试中,Multisim10中的逻辑分析仪能够同时显示16路逻辑通道信号,它能快速地获取每个通道的逻辑状态,具有优越的实时分析功能。逻辑分析仪的连接符号和仪器面板如图所示。6.逻辑转换仪

逻辑转换仪主要用于逻辑函数不同表示形式之间的转换,它能将逻辑电路图转换为相应的真值表或逻辑表达式,也可以将真值表或逻辑表达式转换为逻辑电路图。逻辑转换仪的连接符号和仪器面板如图所示。2.3硬件描述语言VHDL基础

硬件描述语言(HDL)是一种能够描述硬件电路的功能、信号连接关系及时序关系的语言,也是一种用形式化的方法来描述数字电路和设计数字系统的语言,是数字系统设计者和EDA工具之间的一种工作界面。数字系统设计者可以利用硬件描述语言来描述自己的设计思想,并借助于EDA工具进行仿真、综合,最后用FPGA或ASIC来实现数字系统的功能。目前用于逻辑功能描述的HDL有很多种,常见的有VHDL、VerilogHDL和ABELHDL等。

VHDL的英文全写是为VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,意思是超高速集成电路硬件描述语言,它是由美国国防部于1983年发起创建的,并在1987年底,被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要应用在基于FPGA/CPLD/EPLD的数字系统设计中,主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格、句法与一般计算机高级语言十分类似。2.3.1VHDL程序的基本结构

VHDL的程序结构特点是将一项工程设计,或称为设计实体(可以是一个元件,一个电路模块或一个系统)分成外部和内部两部分。外部为设计实体的端口,是可视部分,内部为设计实体的功能和算法实现部分,是不可视部分。在对一个设计实体定义了外部端口,并完成其内部开发后,其它的设计就可以直接调用这个实体。

对于一个相对完整的VHDL程序来说,其基本结构一般由库(library)、程序包(package)、实体(entity)、结构体(architecture)和配置(configuration)5个部分构成。

在VHDL程序中定义A、B分别为加数和被加数的输入信号,S为和输出信号,CO为进位输出信号,并将该设计实体取名为halfadder。半加器的具体程序如下:

LibraryIEEE;--库声明UseIEEE.std_logic_1164.all;--程序包说明entityhalfadderis--实体描述开始

port ( A,B:inSTD_LOGIC; S,CO:outSTD_LOGIC );endhalfadder;architecturebehavofhalfadderis--结构体描述开始signalincode:STD_LOGIC_VECTOR(1DOWNTO0);begin

incode<=A&B;Process(incode)begincaseincodeiswhen"00"=>S<='0';CO<='0';when"01"=>S<='1';CO<='0';when"10"=>S<='1';CO<='0';when"11"=>S<='0';CO<='1';whenothers=>S<='0';CO<='0';endcase;endProcess;endbehav;--结构体描述结束1.库和程序包

VHDL的库是一种用来存放预先编译好的程序包和数据集合的仓库。在利用VHDL进行设计时,为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,将一些有用的信息汇集在一个或几个库中以供调用。这些信息可以是预先定义好的数据类型、子程序等设计单元的集合体(程序包),或预先设计好的各种设计实体(元件库程序包)。如果在VHDL设计中用到某一程序包,就必须在该项设计中预先打开这个程序包,使此设计能随时使用这一程序包中的内容。

VHDL程序设计中常用的库有IEEE库、STD库和WORK库。

程序包预定义内容std_logic_1164定义了std_logic、std_logic_vector等数据类型std_logic_arith定义了有符号和无符号类型及基于这些类型的算术运算和转换函数std_logic_signed定义了基于std_logic和std_logic_vector的有符号数算术运算std_logic_unsigned定义了基于std_logic和std_logic_vector的无符号数算术运算IEEE库中的程序包

在VHDL语言中,库的说明语句总是放在实体单元的前面,用关键字Library指明所使用的库名,用Use语句指明库中的程序包。VHDL要求每一个设计实体都必须有自己完整的库的说明语句和Use语句。库和程序包的说明形式如下:Library库名;Use库名.程序包名.all;例如,在半加器的设计中引用的库和程序包有如下声明:LibraryIEEE;--打开IEEE库UseIEEE.std_logic_1164.all;--打开IEEE库中std_logic_1164程序包的所有内容2.实体

实体是VHDL程序设计中最基本的模块,它的功能是描述设计实体的输入输出接口信号或引脚。实体是设计实体的表层设计单元,是对设计实体的外观描述,是设计实体的可见部分。实体不涉及设计实体内部的任何信息,因此两个相同的实体并不代表它们实现的相同的逻辑功能。ENTITY实体名IS[GENERIC(参数名:数据类型;……参数名:数据类型);][PORT(端口名:端口模式数据类型;……端口名:端口模式数据类型);]END实体名;类属说明语句(GENERIC语句)是一种常数参数的端口界面,经常放在实体或块结构体头部进行说明,它提供了设计实体与外部环境通信的一种静态信息通道。设计者可以从外面通过类属参量的重新设定,容易地改变一个设计实体或一个元件的内部电路结构和规模。

端口说明语句(PORT语句)是对一个设计实体界面的说明,是对设计实体与外部电路接口的描述,类似于实际器件的外部管脚,为设计实体与外部电路提供动态通信通道,包括对每一接口的名称、输入输出模式和数据类型进行定义。

端口模式是定义端口信号的流向,VHDL提供了IN、OUT、INOUT和BUFFER4种端口模式。

数据类型定义端口信号的数据类型,常用的数据类型有INTEGER、STD_LOGIC、BOOLEAN、STD_LOGIC_VECTOR、BIT等。3.结构体

结构体是实体的具体实现,必须放在实体说明的后面,主要描述设计实体的内部结构以及实体端口间的逻辑关系。结构体的组成部分包括对数据类型、常数、信号、子程序、元件等元素的说明部分和描述实体逻辑行为的、以各种不同描述风格表达的功能描述语句。一个实体可以有多个结构体,每个结构体对应一个不同的结构和实现方案,但结构体不能重名,而且在仿真和综合时,必须采用配置语句指定用于仿真和综合的结构体。结构体的语句格式如下:ARCHITECTURE结构体名OF实体名IS[说明语句]BEGIN[功能描述语句]END结构体名;

结构体中的说明语句是对结构体功能描述语句中将要用到的信号、常数、数据类型、元件、函数和过程等进行说明。结构体中的说明语句不是必需的,有时可以省略。结构体中的功能描述语句具体描述了结构体的行为及其连接关系,它可以含有5种不同类型的并行语句结构,分别为块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。

4.配置

配置可以把特定的结构体指定给一个确定的实体。通常,在大而复杂的VHDL工程设计中,配置语句可以为实体指定或配置一个结构体,例如利用配置使仿真器为同一实体配置不同的结构体,以比较不同结构体的仿真差别,或者为例化的各元件实体配置指定的结构体,从而形成一个所希望的例化元件层次构成的设计实体。配置语句还可以用于对元件的端口连接进行重新安排等。配置的语句格式如下:CONFIGURATION配置名OF实体名IS配置语句END配置名;

配置主要为顶层设计实体指定结构体,或为参与例化的元件实体指定所希望的结构体,以层次方式来对元件例化作结构配置。

配置分为4种类型,分别为默认配置、元件配置、块配置和结构配置。2.3.2VHDL的数据对象和数据类型1.标识符

标识符用来定义常数、变量、信号、端口等的名字。在VHDL编程过程中,书写标识符必须符合VHDL语言的有关语法规范。习惯上将1987版的标识符称为短标识符,将1993版的标识符称为扩展标识符。

短标识符由英文小写字母(a~z)、英文大写字母(A~Z)、数字(0~9)以及下划线(_)组成。

短标识符书写时必须遵循以下规则:

①必须以英文字母开头。②下划线前后必须是字母或数字。③最后一个字符不能是下划线。④英文字母不区分大小写。⑤标识符不能与VHDL中的保留字(关键字)相同。

扩展标识符的书写规则如下:

①扩展标识符以反斜杠来分割,如\mux4in1\。②允许包含图形符号和空格,如\#mux&4in1\。③两个反斜杠之间可以使用数字开头,如

\2mux4in1\。④英文字母区分大小写。⑤反斜杠之间的标识符可以是VHDL中的保留字。⑥允许多个下划线相连,如\2_mux_4in1\。⑦扩展标识符和短标识符不同。⑧若扩展标识符中含有一个反斜杠,则用两个反斜杠来代替。2.数据对象

VHDL的数据对象类似于一个容器,它接受不同数据类型的赋值。在VHDL中,数据对象共包括4种,分别为常量、变量、文件和信号。

常量相当于数字电路中的恒定电平,如GND或VCC接口,代表数字电路中的电源和地线等。信号相当于物理设计中的某一条硬件连线。变量代表暂存某些值的载体。文件是传输大量数据的客体。(1)常量

常量的定义和设置主要是为了使设计实体中的常数更容易阅读和修改。在程序中,常量必须在使用之前进行数据类型的定义和赋值,是一个恒定不变的值,在程序中不能改变,具有全局意义。

常量的定义形式如下:

CONSTANT常量名:数据类型:=表达式;例如:CONSTANTMAX:INTEGER:=100;CONSTANTVcc:REAL:=5.0;CONSTANTdely:TIME:=10ns;(2)变量

在VHDL语法规则中,变量是一个局部量,只能在进程语句、函数语句和过程语句中使用。变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为,其主要作用是在进程中作为临时性的数据存储单元。变量声明的语句格式如下:VARIABLE变量名:数据类型[:=初始值];VARIABLEA:INTEGER;VARIABLEB:INTEGER:=10;注意:变量的声明在进程或子程序的内部进行。

变量数值的改变是通过赋值语句进行的,变量赋值的语句格式为:目标变量名:=表达式;例如:A:=100;A:=B+C;(3)信号在VHDL中,信号是描述硬件系统的基本数据对象,是电子电路内部连接线的抽象。信号是一种全局变量,主要用于设计实体中并行语句模块间的信息交流通道。信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值,这一属性与触发器的记忆功能有很好的对应关系。信号通常在结构体、程序包和实体中说明,其声明语句格式为:SIGNAL信号名:数据类型[:=初始值];SIGNALcount:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALA,B:INTEGER;SIGNALC:STD_LOGIC:=0;当信号定义了数据类型和表达方式后,就可以对信号进行赋值。信号赋值的语句格式为:目标信号名<=表达式[AFTER时间量];例如:SIGNALt1,t2:STD_LOGIC;t1<=t2AFTER10ns;信号的初始赋值语句用“:=”,这种赋值方式是没有延迟时间的。信号的赋值语句用“<=”,表示允许信号传递时存在延迟时间。

(4)文件文件是用来传输大量数据的数据对象。在系统仿真测试时,输入激励数据和仿真结果输出常通过文件实现。对文件进行说明的语句格式为;FILE文件变量:TEXTIS方向“文件名”;

其中FILE是文件对象声明关键字,文件变量是文件对象标识符,方向指明是读(IN)文件还是写(OUT)文件,文件名所指的文件必须是ASCⅡ码的文件。当从文件中读入数据时,文件的扩展名为in;当向文件中读出数据时,文件的扩展名为out。3.数据类型在VHDL中,常量、变量、信号等都要指定数据等类型,具有相同数据类型的量才能够相互传递和作用。不同类型之间的数据不能相互传递,而且,即使数据类型相同,如果位数不同,也不能相互传递。

VHDL中的数据类型可以分为标量型、复合型、存取型和文件型。这些数据类型又可以分为预定义数据类型和用户自定义数据类型两个类别。预定义数据类型是最常用的、最基本的数据类型,这些数据类型都已在标准程序包STANDARD和STD_LOGIC_1164及其它的标准程序包中作了定义,可在设计中随时调用。

(1)预定义数据类型

VHDL的预定义数据类型共有10种,都是在VHDL标准程序包STANDARD中定义的,已自动包含在VHDL的原文件中,在实际使用时不需要通过USE语句显式调用。①布尔(BOOLEAN)类型。②位(BIT)类型。③位矢量(BIT_VECTOR)类型。

SIGNALA:BIT_VECTOR(7DOWNTO0);

④字符(CHARACTER)类型。'1'、'a'、'$'

⑤字数串(STRING)类型。

B"10101"表示一个5位二进制数,O"257"表示3位八进制数,X"A2C7"表示4位十六进制数。

⑥整数(INTEGER)类型。⑦实数(REAL)类型。⑧时间(TIME)类型。⑨错误等级(SEVERITY_LEVEL)。⑩文件(FILE)类型。

(2)IEEE预定义数据类型标准逻辑位与矢量

在IEEE库的程序包STD_LOGIC_1164中,定义了两个非常重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR。

①标准逻辑位(STD_LOGIC)类型。标准逻辑位数据是对标准位数据类型的扩展,共定义了9种取值,分别为0(强0)、1(强1)、Z(高阻态)、X(强未知的)、W(弱未知的)、L(弱0)、H(弱1)、U(未初始化)和_(忽略)。在VHDL综合器中,STD_LOGIC型数据能够在数字器件中实现的只有0、1、Z和X4种。②标准逻辑矢量(STD_LOGIC_VECTOR)类型。标准逻辑矢量类型是一个标准逻辑位数据类型数据元素的数组,使用时必须定义数组的长度和方向。(3)用户自定义数据类型

VHDL允许用户自定义新的数据类型,用户自定义数据是用类型定义语句TYPE和子类型定义语句SUBTYPE实现的。

①枚举(ENUMERATION)类型。枚举类型定义的语句格式为:

TYPE枚举类型名IS(元素,元素,…元素);例如:

TYPEweekIS(mon,tue,wed,thu,fri,

sat,sun);

TYPEcolorIS(green,yellow,red,blue,

orange);②整数类型用户所定义的整数类型,实际上是整数类型的一个子类,由于VHDL综合器无法综合未限定范围的整数类型的信号或变量,所以一定要用RANGE来为整数限定范围。整数类型定义的语句格式为:TYPE整数类型名ISINTEGERRANGE约束范围;例如:

TYPEdigitISINTEGERRANGE0TO9;

TYPEdate1ISREALRANGE1.0E2TO1.0E4;③数组(ARRY)类型

数组类型定义的语句格式为:TYPE数组类型名ISARRAY(范围)OF类型名称;例如:TYPEreg0ISARRAY(0TO7)OFBIT;④记录类型。

记录类型是将不同类型的数据和数据名组织在一起构成的新的复合数据类型。TYPE记录类型名ISRECORD

元素名:数据类型名;元素名:数据类型名;

……ENDRECORD;2.3.3VHDL的操作符

操作符是指将VHDL中最基本元素连接起来的一种操作符号。VHDL语言预定义的操作符主要有逻辑运算操作符、关系运算操作符、算术运算操作符和并置运算操作符,可以分别进行逻辑运算、关系运算、算术运算和并置运算。1.逻辑运算操作符

NOT、AND、NAND、OR、NOR、XOR、XNOR共7种。2.关系运算操作符

=、/=、<、>、<=、>=共6种。3.算术运算操作符

+(正)、-(负)、+(加)、-(减)、*、/、MOD、REM、**、ABS、SLL、SRL、SLA、SRA、ROL、ROR

共16种。4.并置运算操作符

&

2.3.4VHDL的基本语句

VHDL基本描述语句可以分为顺序语句和并行语句两大类。1.顺序语句(1)赋值语句信号赋值语句的符号为<=,变量赋值语句的符号为:=。

(2)IF语句

IF语句有3种形式,分别为单选择控制、2选1控制和多选控制。单选择控制IF语句的语句格式为:IF条件THEN

顺序处理语句;ENDIF;2选1控制IF语句的语句格式为:IF条件THEN

顺序处理语句;ELSE

顺序处理语句;ENDIF;多选控制IF语句的语句格式为:IF条件1THEN

顺序语句1;ELSIF条件2THEN

顺序语句2;……ELSIF条件n-1THEN

顺序语句n-1;ELSE

条件nTHEN

顺序语句n;ENDIF;(3)CASE语句

CASE语句是一种分支控制语句,它可以根据满足的条件,从多项顺序语句中选择一项进行输出,其语句格式为:CASE表达式ISWHEN选择值1=>顺序语句;

WHEN选择值2=>顺序语句;

……WHEN选择值n=>顺序语句;WHENOTHERS=>顺序语句;ENDCASE;(4)LOOP语句

LOOP语句包含的一组顺序语句可以被循环执行,其执行的次数可由设定的循环次数决定,循环方式由NEXT和EXIT语句控制。LOOP语句有3种表现形式。(5)NEXT语句和EXIT语句

NEXT语句和EXIT语句是LOOP语句的内部循环控制语句。当LOOP内的顺序语句执行到NEXT语句时,立即无条件终止当前循环,跳向LOOP语句的起始点,开始下一个循环;当LOOP内的顺序语句执行到EXIT语句时,跳向LOOP语句的终点。

LOOP的第1种形式为:[标号:]LOOP

顺序语句;ENDLOOP[LOOP标号];

LOOP的第2种形式为:[标号:]FOR循环变量IN循环次数范围LOOP

顺序语句;ENDLOOP[LOOP标号];LOOP的第3种形式为:[标号:]WHILE循环控制条件LOOP

顺序语句;ENDLOOP[LOOP标号];NEXT/EXIT;NEXT/EXITLOOP标号;NEXT/EXITLOOP标号WHEN条件表达式;(6)NULL语句

NULL语句是个空操作语句,不执行任何操作,它的唯一功能就是使逻辑运行进入下一步语句执行。NULL语句常用于CASE语句中,为满足所有可能的条件,利用NULL来表示所有不用条件下的操作行为。2.并行语句

并行语句是硬件描述语言所特有的,并行语句有多种语句格式,各种并行语句在结构体中的执行是同步进行的,或者说是并行进行的,其执行顺序与书写顺序无关。在执行中,并行语句之间可以有信息来往,也可以是相互独立、异步运行的。并行语句的内部语句的运行可以是并行执行方式,也可以是顺序执行方式。(1)进程语句进程语句是最具有VHDL语言特色的语句,是描述硬件电路系统并发行为的最基本的语句之一。进程语句是一个复合语句,由一段程序构成,各个进程是并行执行的,进程内部的所有语句是顺序执行的。进程之间通过信号进行通信,使系统的各个模块联系起来。进程语句的语句格式为:[标号:]PROCESS[(敏感信号表)][IS][说明语句;]BEGIN

顺序语句;ENDPROCESS[标号];当用进程描述组合逻辑电路时,所有的输入信号都应该是敏感信号;当用进程描述时序逻辑电路时,并不是所有的输入信号都是敏感信号。(2)块语句块语句是一种将结构体中的并行描述语句进行组合的方法,它的主要目的是改善并行语句及其结构的可读性,或是利用BLOCK的保护表达式关闭某些信号。块语句的语句格式如下:块标号:BLOCK[(块保护表达式)]接口说明;类属说明;BEGIN并行语句;ENDBLOCK[块标号];(3)并行信号赋值语句

当信号赋值语句在进程内部使用时,是以顺序语句的形式出现的;当信号赋值语句在结构体中的进程外部使用时,是以并行语句的形式出现的。所以,信号赋值语句和其它并行语句一样,在结构体内的执行是同时发生的,而且赋值目标都是信号。

基本信号赋值语句的语句格式为:赋值目标<=表达式;条件信号赋值语句的语句格式为:赋值目标<=表达式1WHEN赋值条件1ELSE表达式2WHEN赋值条件2ELSE……表达式n;选择信号赋值语句的语句格式为:WITH选择表达式SELECT赋值目标<=表达式1WHEN选择值1,表达式2WHEN选择值2,……表达式nWHEN选择值n;(4)元件例化语句元件例化语句是将预先设计好的设计实体定义为一个元器件,然后引用特定的语句将此元器件与当前设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。元器件例化语句由元器件说明和元器件例化两部分组成。元器件说明是指对所调用的较低层次的设计实体的名称、类属参数、端口类型和数据类型的说明,其语句格式为:COMPONENT元器件名[IS][GENERIC(类属说明);][PORT(端口说明);]ENDCOMPONENT;例如:COMPONENTDVFPORT(clk:INSTD_LOGIC;

d:INSTD_LOGIC_VECTOR(15DOWNTO0);

fout:OUTSTD_LOGIC);ENDCOMPONENT;元器件例化是将低层次元器件调用到当前层次设计实体内部的过程,包括类属参数传递和元器件端口映射两个过程,其语句格式为:例化名:元器件名[GENERICMAP(类属名称=>表达式{,类属名称=>表达式})]PORTMAP([端口名称=>]表达式{,[端口名称=>]表达式});U1:DVFPORTMAP(clk=>clk0,d=>ffin,fout=>clkk);(5)并行过程调用语句

过程调用语句在进程内部执行时,它是一种顺序语句,在结构体中的进程之外出现时,它作为并行语句的形式出现。作为并行过程调用语句,在结构体中它们是并行执行的,其执行顺序与书写顺序无关。并行过程调用语句的语句格式为:

过程名[([参数名=>]表达式{,[参数名=>]表达式})];(6)生成语句

生成语句是一种可以建立重复结构或者在多个模块的表示形式之间进行选择的语句,它可以简化多个具有相同设计结构的逻辑描述,具有一种复制作用。

FOR-GENERATE结构生成语句的语句格式为:

标号:FOR循环变量IN范围GENERATE

并行语句;

ENDGENERATE标号;

IF-GENERATE结构生成语句的语句格式为:

标号:IF条件表达式GENERATE

并行语句;

ENDGENERATE标号;2.4QuartusⅡ9.0应用基础2.4.1QuartusⅡ9.0概述

QuartusⅡ是Altera公司的综合性FPGA/CPLD开发软件,是Altera公司的FPGA/CPLD集成开发软件MAX+PLUSⅡ的更新换代产品。QuartusⅡ支持原理图输入、VHDL输入、VerilogHDL输入、AHDL(AlteraHardwareDescriptionLanguage)输入等多种设计输入形式,内部嵌有综合器和仿真器,也可以利用第三方的综合工具和仿真工具,可以完成设计输入、HDL综合、布线布局、仿真、下载及硬件测试等完整的FPGA/CPLD设计流程。

QuartusⅡ包含模块化的编译器,包含的功能模块有分析/综合(Analysis&Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助(DesignAssistant)、EDA网表文件生成器(EDANetlistWriter)和编译数据库接口(ComplierDatabaseInterface)等,可以通过选择StartComplication来运行所有的编译模块,也可以通过选择Start单独运行各个模块。QuartusⅡ的设计流程图

2.4.2QuartusⅡ9.0的用户界面2.4.3QuartusⅡ9.0的工程设计1.创建工程文件(1)指定工程文件名称在QuartusⅡ9.0用户界面中,执行菜单命令File|NewProjectWizard…,系统弹出新建工程对话框。需要注意的是顶层实体名称必须与设计的工程名称一致,并且实体名不能为中文,也不能使用VHDL的关键字或与QuartusⅡ9.0设计库中模块名称相同。(2)添加设计文件和库(3)选择目标器件(4)EDA工具设置(5)工程结束添加设计文件或库对话框

目标器件选择对话框

第三方EDA工具选择对话框

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论