版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章第二章EDA技术的基础知识技术的基础知识2.1 EDA技术及其发展技术及其发展2.2 Multisim 10应用基础应用基础 2.3 硬件描述语言硬件描述语言VHDL基础基础 2.4 Quartus9.0应用基础应用基础 一、本章内容一、本章内容 1. 了解了解EDA技术的发展过程。技术的发展过程。 2. 掌握掌握Multisim 10应用的基础知识。应用的基础知识。 3. 掌握掌握VHDL语言的基础知识。语言的基础知识。 4. 掌握掌握Quartus9.0的基本使用方法。的基本使用方法。二、本章教学目的与要求二、本章教学目的与要求 三、本章知识结构三、本章知识结构2.1 EDA技术及其
2、发展技术及其发展 EDA是电子设计自动化(是电子设计自动化(Electronic Design Automation)的缩写,是从计算)的缩写,是从计算机辅助设计(机辅助设计(CAD)、计算机辅助制造)、计算机辅助制造(CAM)、计算机辅助测试()、计算机辅助测试(CAT)和计)和计算机辅助工程(算机辅助工程(CAE)的概念发展而来的。)的概念发展而来的。EDA技术就是以计算机为工具,融合了应技术就是以计算机为工具,融合了应用电子技术、计算机技术、信息处理及智用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品设计能化技术的最新成果,进行电子产品设计的软件工具。的软件工具。ED
3、A技术的发展技术的发展 EDA技术的发展历程同大规模集成电路设技术的发展历程同大规模集成电路设计、计算机技术、可编程逻辑器件、电子计、计算机技术、可编程逻辑器件、电子设计技术及工艺的发展是同步的。就过去设计技术及工艺的发展是同步的。就过去近几十年电子技术的发展历程,近几十年电子技术的发展历程,EDA技术技术的发展大致分为的发展大致分为3个阶段。个阶段。 20世纪世纪70年代到年代到80年代初为年代初为CAD阶段。阶段。在在这一时期,集成电路制作已广泛采用这一时期,集成电路制作已广泛采用MOC工艺,可编程逻辑技术和可编程逻辑器件工艺,可编程逻辑技术和可编程逻辑器件已经问世,计算机作为一种运算工具
4、已在已经问世,计算机作为一种运算工具已在科研领域应用,科研领域应用,CAD的概念初步形成。利的概念初步形成。利用用CAD软件,设计人员开始利用计算机代软件,设计人员开始利用计算机代替手工劳动,进行逻辑仿真、集成电路版替手工劳动,进行逻辑仿真、集成电路版图编辑、印制电路板布局布线等方面的工图编辑、印制电路板布局布线等方面的工作,提高了电子系统设计的效率和可靠性。作,提高了电子系统设计的效率和可靠性。但由于计算机的运行速度、存储容量、图但由于计算机的运行速度、存储容量、图形处理能力等方面的限制,形处理能力等方面的限制,CAD没有形成没有形成系统,仅是一些孤立的软件程序。系统,仅是一些孤立的软件程序
5、。 20世纪世纪80年代中后期为年代中后期为CAE阶段。阶段。在这一在这一时期,集成电路设计进入时期,集成电路设计进入CMOS时代,复时代,复杂的可编程逻辑器件已经被应用于商业领杂的可编程逻辑器件已经被应用于商业领域,相应的辅助设计软件业投入使用。域,相应的辅助设计软件业投入使用。CAD软件主要用来实现电子电路仿真、集软件主要用来实现电子电路仿真、集成电路版图编辑、印制电路板布局布线、成电路版图编辑、印制电路板布局布线、设计文档制作等各设计阶段的自动化设计。设计文档制作等各设计阶段的自动化设计。 20世纪世纪90年代后是设计自动化阶段。年代后是设计自动化阶段。随着硬随着硬件描述语言的标准化得到
6、进一步的确定,计件描述语言的标准化得到进一步的确定,计算机辅助工程、辅助分析、辅助设计在电子算机辅助工程、辅助分析、辅助设计在电子技术领域得到了更加广泛的应用,与此同时技术领域得到了更加广泛的应用,与此同时电子系统向着多功能、高速度、智能化方向电子系统向着多功能、高速度、智能化方向发展,极大地推动了发展,极大地推动了EDA计数的应用和发展。计数的应用和发展。在这一时期,在这一时期,EDA系统真正具有了自动化设系统真正具有了自动化设计能力,计能力,EDA技术被推向成熟和实用。技术被推向成熟和实用。 EDA技术在进入技术在进入21世纪以后,得到了更大的发展,世纪以后,得到了更大的发展,开始步入一个
7、新的时期,主要表现在:开始步入一个新的时期,主要表现在: 电子技术各个领域全方位进入电子技术各个领域全方位进入EDA领域;电子技领域;电子技术领域各学科的界限更加模糊、更加相互包容和术领域各学科的界限更加模糊、更加相互包容和渗透;渗透; IP(Intellectual Property,知识产权)核在电子,知识产权)核在电子行业的产业领域、技术领域和设计应用领域得到行业的产业领域、技术领域和设计应用领域得到广泛应用;广泛应用; 在仿真和设计两方面支持标准硬件描述语言的在仿真和设计两方面支持标准硬件描述语言的EDA工具不断推出;系统级、行为验证级硬件描工具不断推出;系统级、行为验证级硬件描述语言
8、的出现,使得复杂电子系统的设计和验证述语言的出现,使得复杂电子系统的设计和验证趋于简单;趋于简单; 嵌入式微处理器软核的出现,更大规模的嵌入式微处理器软核的出现,更大规模的FPGA /CPLD器件不断推出,使得单片电子系统器件不断推出,使得单片电子系统(System on a Chip,SoC)进入大规模应用阶段。)进入大规模应用阶段。EDA工具工具 EDA软件工具层出不穷,目前进入我国并软件工具层出不穷,目前进入我国并具有广泛影响的具有广泛影响的EDA软件有软件有Multisim(原(原EWB的最新版本)、的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、M
9、entor、Graphics、Synopsys、Quartus、Cadence等等。等等。 2.2 Multisim 10应用基础应用基础2.2.1 Multisim 10概述概述 Multisim是在是在EWB(Electronics Workbench,电,电子设计工作平台)的基础上发展而来的,是一款子设计工作平台)的基础上发展而来的,是一款专门用于电子线路仿真与设计的专门用于电子线路仿真与设计的EDA工具软件。工具软件。Multisim 10是美国国家仪器有限公司(是美国国家仪器有限公司(NI)于)于2007年推出的版本,包含在年推出的版本,包含在NI电子学教育平台电子学教育平台(Ele
10、ctronics Education Platform)软件中。)软件中。Multisim 10是一个完整的集成化设计环境,它将是一个完整的集成化设计环境,它将计算机仿真和虚拟仪器技术完美地结合在一起,计算机仿真和虚拟仪器技术完美地结合在一起,为电子线路的仿真和设计提供了良好的环境。为电子线路的仿真和设计提供了良好的环境。Multisim 10特点特点 Multisim 10具有直观的图形界面。具有直观的图形界面。 Multisim 10具有丰富的元器件库。具有丰富的元器件库。 Multisim 10具有完全交互式的仿真能力。具有完全交互式的仿真能力。 Multisim 10具有丰富的虚拟仪器
11、。具有丰富的虚拟仪器。 Multisim 10具有强大的分析功能。具有强大的分析功能。 Multisim 10具有良好的信息转换功能。具有良好的信息转换功能。 Multisim 10还可以用于工控梯形图仿真和基于还可以用于工控梯形图仿真和基于MultiMCU的单片机仿真。的单片机仿真。 2.2.2 Multisim 10操作与使用操作与使用 1. 工作界面工作界面2. 菜单命令菜单命令 Multisim 10的菜单栏位于工作界面的上方,的菜单栏位于工作界面的上方,包括包括File、Edit、View、Place、MCU、Simulate、Transfer、Tools、Reports、Optio
12、ns、Window和和Help共共12个主菜单,个主菜单,每个主菜单都有一个下拉菜单。每个主菜单都有一个下拉菜单。File 菜单菜单Edit 菜单菜单View菜单菜单Place菜单菜单 Simulate菜单菜单Tools菜单菜单3. 常用工具栏常用工具栏(1)Standard工具栏工具栏 Standard【标准】工具栏主要有新建、打开、【标准】工具栏主要有新建、打开、保存、打印、预览、复制、粘贴、剪切、前进、保存、打印、预览、复制、粘贴、剪切、前进、后退等功能。后退等功能。(2)Components工具栏工具栏 Components【元器件】工具栏实际上是设计者【元器件】工具栏实际上是设计者在
13、电路仿真中可以使用的所有元器件符号库,它在电路仿真中可以使用的所有元器件符号库,它和和Multisim 10的元器件模型库相对应,共有的元器件模型库相对应,共有18个个分类库,每个分类库中存放着同一类型的元器件。分类库,每个分类库中存放着同一类型的元器件。 (3)Virtual工具栏工具栏4. 创建电路窗口创建电路窗口 运行运行Multisim 10软件,系统会自动打开一个空白软件,系统会自动打开一个空白的电路窗口,电路窗口是用户放置元器件,设计的电路窗口,电路窗口是用户放置元器件,设计电路的工作区域。电路的工作区域。Multisim 10允许用户创建符合允许用户创建符合自己要求的电路窗口,包
14、括界面大小、工具栏、自己要求的电路窗口,包括界面大小、工具栏、电路颜色、缩放倍数、系统符号等。电路颜色、缩放倍数、系统符号等。 在菜单栏执行在菜单栏执行Options|Global Preferences菜单菜单命令后,系统弹出命令后,系统弹出Preferences对话框,对话框中对话框,对话框中有有Paths、Save、Parts和和General 4个命令选项卡,个命令选项卡,单击单击Parts命令选项卡,出现元器件参数选择对话命令选项卡,出现元器件参数选择对话框,在该对话框中可以设置元器件的放置模式和框,在该对话框中可以设置元器件的放置模式和元器件符号标准。元器件符号标准。 元器件参数选
15、择对话框元器件参数选择对话框 Sheet Properties对话框对话框 在菜单栏执行在菜单栏执行Options|Sheet Properties菜单命令后,菜单命令后,系统弹出系统弹出Sheet Properties对话框,对话框中有对话框,对话框中有Circuit、Workspace、wiring、Font、PCB和和Visibility 6个命令个命令选项卡。通过执行不同命令选项卡中的命令,可以选项卡。通过执行不同命令选项卡中的命令,可以对电路图的显示方式、图幅形式、连接线、字体等对电路图的显示方式、图幅形式、连接线、字体等进行设置。进行设置。5. 基本操作基本操作(1)元器件的选取和
16、放置 执行菜单命令Place|Component,或单击元器件图标工具栏中元器件图标按钮,弹出Select a Component【元器件选择】对话框。(2)元器件的移动、复制(3)连线(4)添加连接结点(5)旋转或翻转元器件(6)替换已放置的元器件(7)修改元器件属性参数(8)修改连线轨迹2.2.3 Multisim 10常用仪器介绍常用仪器介绍 Multisim 10提供了许多种虚拟仪器,利用虚拟仪器提供了许多种虚拟仪器,利用虚拟仪器不仅可以对仿真电路进行电路参数测试,还可以对不仅可以对仿真电路进行电路参数测试,还可以对测试的数据进行分析、保存等。测试的数据进行分析、保存等。 执行菜单命令
17、执行菜单命令View|Toolbars|Instruments, 可以打开可以打开Instruments工具栏。工具栏。 1. 万用表万用表 万用表具有自动量程转换功能,主要用于测量万用表具有自动量程转换功能,主要用于测量直流或交流电路中两点间的电压、电路、电阻、直流或交流电路中两点间的电压、电路、电阻、和分贝。万用表的测量精度可以根据需要,通和分贝。万用表的测量精度可以根据需要,通过修改内部电阻来调整。万用表的连接符号和过修改内部电阻来调整。万用表的连接符号和仪器面板如图所示。仪器面板如图所示。 测量电流时,将万用表连接符号串联到待测支路中去,并在仪器面板上选择A按钮,就可以测量电路中某一支
18、路的电流。如果需要测量多个支路的电流,则可以在每个需要测量电流的支路里串联万用表,然后进行仿真,即可得到要测量的电流值。当万用表作为电流表使用时,它的内阻是很低的,如需改变电流表的内阻,可以在参数设置对话框中修改。 测量电压时,将万用表连接符号并联到待测支路中去,并在仪器面板上选择V按钮,就可以测量电路中某一支路的电压。 测量电阻时,将万用表连接符号并联到待测支路的两端,并在仪器面板上选择按钮,就可以测量电路中某一支路的电阻。测量电阻时,待测支路中不能包括电源,并且待测支路不能与其它支路并联。 测量分贝时,将万用表连接符号并联到待测支路的两端,并在仪器面板上选择dB按钮,就可以测量电路中两点之
19、间的电压增益或者损耗。2. 函数发生器函数发生器 函数发生器是产生正弦波、三角波和方波的信号函数发生器是产生正弦波、三角波和方波的信号源。函数发生器能够提供标准的模拟信号,而且源。函数发生器能够提供标准的模拟信号,而且可以很方便的更改波形、频率、幅度值、占空比可以很方便的更改波形、频率、幅度值、占空比和偏置电压。函数发生器的连接符号和仪器面板和偏置电压。函数发生器的连接符号和仪器面板如图所示。如图所示。3. 双踪示波器双踪示波器 双踪示波器可以观察一路或者两路信号随时间变双踪示波器可以观察一路或者两路信号随时间变化的波形,可以根据周期信号的波形测量其幅值化的波形,可以根据周期信号的波形测量其幅
20、值和频率。双踪示波器的连接符号和仪器面板如图和频率。双踪示波器的连接符号和仪器面板如图所示。所示。 4. 字信号发生器字信号发生器 字信号发生器广泛应用于数字电路的仿真中,它字信号发生器广泛应用于数字电路的仿真中,它是一个可以编程的通用数字激励源,可以将数字是一个可以编程的通用数字激励源,可以将数字字符或二进制数字信号输入到数字电路中去。字字符或二进制数字信号输入到数字电路中去。字信号发生器的连接符号和仪器面板如图所示。信号发生器的连接符号和仪器面板如图所示。5. 逻辑分析仪逻辑分析仪 逻辑分析仪广泛应用于数字电路仿真测试中,逻辑分析仪广泛应用于数字电路仿真测试中,Multisim 10中的逻
21、辑分析仪能够同时显示中的逻辑分析仪能够同时显示16路逻路逻辑通道信号,它能快速地获取每个通道的逻辑状态,辑通道信号,它能快速地获取每个通道的逻辑状态,具有优越的实时分析功能。逻辑分析仪的连接符号具有优越的实时分析功能。逻辑分析仪的连接符号和仪器面板如图所示。和仪器面板如图所示。6. 逻辑转换仪逻辑转换仪 逻辑转换仪主要用于逻辑函数不同表示形式之间逻辑转换仪主要用于逻辑函数不同表示形式之间的转换,它能将逻辑电路图转换为相应的真值表的转换,它能将逻辑电路图转换为相应的真值表或逻辑表达式,也可以将真值表或逻辑表达式转或逻辑表达式,也可以将真值表或逻辑表达式转换为逻辑电路图。逻辑转换仪的连接符号和仪器
22、换为逻辑电路图。逻辑转换仪的连接符号和仪器面板如图所示。面板如图所示。2.3 硬件描述语言硬件描述语言VHDL基础基础 硬件描述语言(硬件描述语言(HDL)是一种能够描述硬件电路)是一种能够描述硬件电路的功能、信号连接关系及时序关系的语言,也是的功能、信号连接关系及时序关系的语言,也是一种用形式化的方法来描述数字电路和设计数字一种用形式化的方法来描述数字电路和设计数字系统的语言,是数字系统设计者和系统的语言,是数字系统设计者和EDA工具之间工具之间的一种工作界面。数字系统设计者可以利用硬件的一种工作界面。数字系统设计者可以利用硬件描述语言来描述自己的设计思想,并借助于描述语言来描述自己的设计思
23、想,并借助于EDA工具进行仿真、综合,最后用工具进行仿真、综合,最后用FPGA或或ASIC来实来实现数字系统的功能。目前用于逻辑功能描述的现数字系统的功能。目前用于逻辑功能描述的HDL有很多种,常见的有有很多种,常见的有VHDL、Verilog HDL和和ABEL HDL等。等。 VHDL的英文全写是为的英文全写是为VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,意思是超高速集成电路硬件描述语言,意思是超高速集成电路硬件描述语言,它是由美国国防部于它是由美国国防部于1983年发起创建的,并在年发起创建
24、的,并在1987年底,被年底,被IEEE和美国国防部确认为标准硬件和美国国防部确认为标准硬件描述语言。描述语言。VHDL主要应用在基于主要应用在基于FPGA/CPLD/EPLD的数字系统设计中,主要用的数字系统设计中,主要用于描述数字系统的结构、行为、功能和接口。除于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,了含有许多具有硬件特征的语句外,VHDL的语的语言形式、描述风格、句法与一般计算机高级语言言形式、描述风格、句法与一般计算机高级语言十分类似。十分类似。2.3.1 VHDL程序的基本结构程序的基本结构 VHDL的程序结构特点是将一项工程设计,或称的程序结构特点
25、是将一项工程设计,或称为设计实体(可以是一个元件,一个电路模块或为设计实体(可以是一个元件,一个电路模块或一个系统)分成外部和内部两部分。外部为设计一个系统)分成外部和内部两部分。外部为设计实体的端口,是可视部分,内部为设计实体的功实体的端口,是可视部分,内部为设计实体的功能和算法实现部分,是不可视部分。在对一个设能和算法实现部分,是不可视部分。在对一个设计实体定义了外部端口,并完成其内部开发后,计实体定义了外部端口,并完成其内部开发后,其它的设计就可以直接调用这个实体。其它的设计就可以直接调用这个实体。 对于一个相对完整的对于一个相对完整的VHDL程序来说,其基本结程序来说,其基本结构一般由
26、库(构一般由库(library)、程序包()、程序包(package)、实)、实体(体(entity)、结构体()、结构体(architecture)和配置)和配置(configuration)5个部分构成。个部分构成。 在VHDL程序中定义A、B分别为加数和被加数的输入信号,S为和输出信号,CO为进位输出信号,并将该设计实体取名为halfadder。半加器的具体程序如下: Library IEEE; -库声明 Use IEEE.std_logic_1164.all; -程序包说明 entity halfadder is -实体描述开始port( A,B : in STD_LOGIC; S,C
27、O: out STD_LOGIC ); end halfadder; architecture behav of halfadder is -结构体描述开始 signal incode:STD_LOGIC_VECTOR(1 DOWNTO 0); begin incode S=0;CO S=1;CO S=1;CO S=0;COS=0;CO=0; end case; end Process; end behav; -结构体描述结束1. 库和程序包库和程序包 VHDL的库是一种用来存放预先编译好的程序包的库是一种用来存放预先编译好的程序包和数据集合的仓库。在利用和数据集合的仓库。在利用VHDL进行设
28、计时,进行设计时,为了提高设计效率以及使设计遵循某些统一的语为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,将一些有用的信息汇集在一言标准或数据格式,将一些有用的信息汇集在一个或几个库中以供调用个或几个库中以供调用。这些信息可以是预先定这些信息可以是预先定义好的数据类型、子程序等设计单元的集合体义好的数据类型、子程序等设计单元的集合体(程程序包序包),或预先设计好的各种设计实体,或预先设计好的各种设计实体(元件库程元件库程序包序包)。如果在。如果在VHDL设计中用到某一程序包,就设计中用到某一程序包,就必须在该项设计中预先打开这个程序包,使此设必须在该项设计中预先打开这个程序包,使
29、此设计能随时使用这一程序包中的内容。计能随时使用这一程序包中的内容。 VHDL程序设计中常用的库有程序设计中常用的库有IEEE库、库、STD库和库和WORK库。库。 程序包程序包预定义内容预定义内容std_logic_1164定义了定义了std_logic、std_logic_vector等数等数据类型据类型std_logic_arith定义了有符号和无符号类型及基于这些定义了有符号和无符号类型及基于这些类型的算术运算和转换函数类型的算术运算和转换函数std_logic_signed定义了基于定义了基于std_logic和和std_logic_vector的有符号数算术运算的有符号数算术运算s
30、td_logic_unsigned 定义了基于定义了基于std_logic和和std_logic_vector的无符号数算术运算的无符号数算术运算IEEE库中的程序包库中的程序包 在在VHDL语言中,库的说明语句总是放在实体单语言中,库的说明语句总是放在实体单元的前面,用关键字元的前面,用关键字Library指明所使用的库名,指明所使用的库名,用用Use语句指明库中的程序包。语句指明库中的程序包。VHDL要求每一个要求每一个设计实体都必须有自己完整的库的说明语句和设计实体都必须有自己完整的库的说明语句和Use语句。库和程序包的说明形式如下:语句。库和程序包的说明形式如下: Library 库名
31、;库名; Use 库名库名.程序包名程序包名.all; 例如,在半加器的设计中引用的库和程序包有如例如,在半加器的设计中引用的库和程序包有如下声明:下声明: Library IEEE; -打开打开IEEE库库 Use IEEE.std_logic_1164.all; -打开打开IEEE库中库中std_logic_1164程序包的所有内容程序包的所有内容2. 实体实体 实体是实体是VHDL程序设计中最基本的模块程序设计中最基本的模块,它的功,它的功能是描述设计实体的输入输出接口信号或引脚。能是描述设计实体的输入输出接口信号或引脚。实体是设计实体的表层设计单元,是对设计实体实体是设计实体的表层设计
32、单元,是对设计实体的外观描述,是设计实体的的外观描述,是设计实体的可见部分可见部分。实体不涉。实体不涉及设计实体内部的任何信息,因此两个相同的实及设计实体内部的任何信息,因此两个相同的实体并不代表它们实现的相同的逻辑功能。体并不代表它们实现的相同的逻辑功能。ENTITY 实体名实体名 IS GENERIC (参数名:数据类型;参数名:数据类型; 参数名:数据类型参数名:数据类型); PORT (端口名:端口模式端口名:端口模式 数据类型;数据类型; 端口名:端口模式端口名:端口模式 数据类型数据类型);END 实体名;实体名; 类属说明语句(类属说明语句(GENERIC语句)语句)是一种常数参
33、数的端口界面,经常是一种常数参数的端口界面,经常放在实体或块结构体头部进行说明放在实体或块结构体头部进行说明,它提供了设计实体与外部环境通,它提供了设计实体与外部环境通信的一种静态信息通道。信的一种静态信息通道。设计者可设计者可以从外面通过类属参量的重新设定以从外面通过类属参量的重新设定,容易地改变一个设计实体或一个,容易地改变一个设计实体或一个元件的内部电路结构和规模。元件的内部电路结构和规模。 端口说明语句(端口说明语句(PORT语句)语句)是对一个设计实体界面的说明是对一个设计实体界面的说明,是对设计实体与外部电路接,是对设计实体与外部电路接口的描述,类似于实际器件的口的描述,类似于实际
34、器件的外部管脚,为设计实体与外部外部管脚,为设计实体与外部电路提供动态通信通道,包括电路提供动态通信通道,包括对每一接口的名称、输入输出对每一接口的名称、输入输出模式和数据类型进行定义。模式和数据类型进行定义。 端口模式是定义端端口模式是定义端口信号的流向,口信号的流向,VHDL提供了提供了IN、OUT、INOUT和和BUFFER 4种端口种端口模式。模式。 数据类型定义端口信号的数数据类型定义端口信号的数据类型,常用的数据类型有据类型,常用的数据类型有INTEGER、STD_LOGIC、BOOLEAN、STD_LOGIC_VECTOR、BIT等。等。3. 结构体 结构体是实体的具体实现,必须
35、放在实体说明的结构体是实体的具体实现,必须放在实体说明的后面,主要后面,主要描述设计实体的内部结构以及实体端描述设计实体的内部结构以及实体端口间的逻辑关系口间的逻辑关系。结构体的组成部分包括对数据。结构体的组成部分包括对数据类型、常数、信号、子程序、元件等元素的说明类型、常数、信号、子程序、元件等元素的说明部分和描述实体逻辑行为的、以各种不同描述风部分和描述实体逻辑行为的、以各种不同描述风格表达的功能描述语句。格表达的功能描述语句。 一个实体可以有多个结构体,每个结构体对应一一个实体可以有多个结构体,每个结构体对应一个不同的结构和实现方案,但结构体不能重名,个不同的结构和实现方案,但结构体不能
36、重名,而且在仿真和综合时,必须采用配置语句指定用而且在仿真和综合时,必须采用配置语句指定用于仿真和综合的结构体。于仿真和综合的结构体。结构体的语句格式如下:结构体的语句格式如下:ARCHITECTURE 结构结构体名体名 OF 实体名实体名 IS 说明语句说明语句BEGIN功能描述语句功能描述语句END 结构体名;结构体名; 结构体中的说明语句结构体中的说明语句是对结构体功能描述是对结构体功能描述语句中将要用到的信语句中将要用到的信号、常数、数据类型号、常数、数据类型、元件、函数和过程、元件、函数和过程等进行说明。等进行说明。结构体结构体中的说明语句不是必中的说明语句不是必需的,有时可以省略需
37、的,有时可以省略。结构体中的功能描述语句结构体中的功能描述语句具体描述了结构体的行为具体描述了结构体的行为及其连接关系,它可以含及其连接关系,它可以含有有5种不同类型的并行语句种不同类型的并行语句结构,分别为块语句、进结构,分别为块语句、进程语句、信号赋值语句、程语句、信号赋值语句、子程序调用语句和元件例子程序调用语句和元件例化语句。化语句。 4. 配置配置 配置可以把特定的结构体指定给一个确定的实体。配置可以把特定的结构体指定给一个确定的实体。通常,在大而复杂的通常,在大而复杂的VHDL工程设计中,配置语工程设计中,配置语句可以为实体指定或配置一个结构体,例如利用句可以为实体指定或配置一个结
38、构体,例如利用配置使仿真器为同一实体配置不同的结构体,以配置使仿真器为同一实体配置不同的结构体,以比较不同结构体的仿真差别,或者为例化的各元比较不同结构体的仿真差别,或者为例化的各元件实体配置指定的结构体,从而形成一个所希望件实体配置指定的结构体,从而形成一个所希望的例化元件层次构成的设计实体。配置语句还可的例化元件层次构成的设计实体。配置语句还可以用于对元件的端口连接进行重新安排等。以用于对元件的端口连接进行重新安排等。配置的语句格式如下:配置的语句格式如下:CONFIGURATION 配置名配置名 OF 实体名实体名 IS 配置语句配置语句END 配置名;配置名; 配置主要为顶层设计实体指
39、定结配置主要为顶层设计实体指定结构体,或为参与例化的元件实体指构体,或为参与例化的元件实体指定所希望的结构体,以层次方式来定所希望的结构体,以层次方式来对元件例化作结构配置。对元件例化作结构配置。 配置分为配置分为4种类型,分别为种类型,分别为默认配置、元件配置、块默认配置、元件配置、块配置和结构配置。配置和结构配置。2.3.2 VHDL的数据对象和数据类型的数据对象和数据类型1. 标识符标识符 标识符用来定义常数、变量、信号、端口等的标识符用来定义常数、变量、信号、端口等的名字。在名字。在VHDL编程过程中,书写标识符必须编程过程中,书写标识符必须符合符合VHDL语言的有关语法规范。习惯上将
40、语言的有关语法规范。习惯上将1987版的标识符称为短标识符,将版的标识符称为短标识符,将1993版的标版的标识符称为扩展标识符。识符称为扩展标识符。 短标识符由英文小写字母(短标识符由英文小写字母(az)、英文大写字)、英文大写字母(母(AZ)、数字()、数字(09)以及下划线()以及下划线(_)组)组成成 。 短标识符书写时必须遵循以下规则:短标识符书写时必须遵循以下规则: 必须以英文字母开头。必须以英文字母开头。 下划线前后必须是字母或数字。下划线前后必须是字母或数字。 最后一个字符不能是下划线。最后一个字符不能是下划线。 英文字母不区分大小写。英文字母不区分大小写。 标识符不能与标识符不
41、能与VHDL中的保留字(关键中的保留字(关键字)相同。字)相同。 扩展标识符的书写规则如下:扩展标识符的书写规则如下: 扩展标识符以反斜杠来分割,如扩展标识符以反斜杠来分割,如mux4in1。 允许包含图形符号和空格,如允许包含图形符号和空格,如#mux&4 in 1。 两个反斜杠之间可以使用数字开头,如两个反斜杠之间可以使用数字开头,如 2mux4in1。 英文字母区分大小写。英文字母区分大小写。 反斜杠之间的标识符可以是反斜杠之间的标识符可以是VHDL中的保留字。中的保留字。 允许多个下划线相连,如允许多个下划线相连,如2_mux_4in1。 扩展标识符和短标识符不同。扩展标识符和
42、短标识符不同。 若扩展标识符中含有一个反斜杠,则用两个反若扩展标识符中含有一个反斜杠,则用两个反斜杠来代替。斜杠来代替。2. 数据对象数据对象 VHDL的数据对象类似于一个容器,它接受不同的数据对象类似于一个容器,它接受不同数据类型的赋值。在数据类型的赋值。在VHDL中,数据对象共包括中,数据对象共包括4种,分别为种,分别为常量常量、变量变量、文件文件和和信号信号。 常量相当于数字电路中的恒定电平,如常量相当于数字电路中的恒定电平,如GND或或VCC接口,代表数字电路中的电源和地线等。接口,代表数字电路中的电源和地线等。 信号相当于物理设计中的某一条硬件连线。信号相当于物理设计中的某一条硬件连
43、线。 变量代表暂存某些值的载体。变量代表暂存某些值的载体。 文件是传输大量数据的客体。文件是传输大量数据的客体。(1)常量)常量 常量的定义和设置主要是为了使设计实体中的常常量的定义和设置主要是为了使设计实体中的常数更容易阅读和修改。在程序中,常量必须在使数更容易阅读和修改。在程序中,常量必须在使用之前进行数据类型的定义和赋值,是一个恒定用之前进行数据类型的定义和赋值,是一个恒定不变的值,在程序中不能改变,具有全局意义。不变的值,在程序中不能改变,具有全局意义。 常量的定义形式如下:常量的定义形式如下: CONSTANT 常量名:数据类型常量名:数据类型:=表达式;表达式; 例如:例如: CO
44、NSTANT MAX:INTEGER:=100; CONSTANT Vcc:REAL:=5.0; CONSTANT dely:TIME:=10ns;(2)变量)变量 在在VHDL语法规则中,变量是一个局部量,只能语法规则中,变量是一个局部量,只能在进程语句、函数语句和过程语句中使用。变量在进程语句、函数语句和过程语句中使用。变量的赋值是一种理想化的数据传输,是立即发生,的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为,其主要作用是在进程中不存在任何延时的行为,其主要作用是在进程中作为临时性的数据存储单元。作为临时性的数据存储单元。 变量声明的语句格式如下:变量声明的语句格式如下:
45、 VARIABLE 变量名:数据类型变量名:数据类型:=初始值初始值; VARIABLE A:INTEGER; VARIABLE B:INTEGER:=10;注意:变量的声明在进程或子程序的内部进行。变量的声明在进程或子程序的内部进行。 变量数值的改变是通过赋值语句进行的,变量数值的改变是通过赋值语句进行的,变量赋值的语句格式为:变量赋值的语句格式为: 目标变量名目标变量名:=表达式;表达式; 例如:例如: A:=100; A:=B+C;(3)信号)信号 在在VHDL中,信号是描述硬件系统的基本数据对中,信号是描述硬件系统的基本数据对象,是电子电路内部连接线的抽象。信号是一种象,是电子电路内部
46、连接线的抽象。信号是一种全局变量,主要用于设计实体中并行语句模块间全局变量,主要用于设计实体中并行语句模块间的信息交流通道。信号作为一种数值容器,不但的信息交流通道。信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值,这一属性可以容纳当前值,也可以保持历史值,这一属性与触发器的记忆功能有很好的对应关系。与触发器的记忆功能有很好的对应关系。 信号通常在结构体、程序包和实体中说明,其声信号通常在结构体、程序包和实体中说明,其声明语句格式为:明语句格式为: SIGNAL 信号名:数据类型信号名:数据类型:=初始值初始值; SIGNAL count: STD_LOGIC _VECTOR(7 D
47、OWNTO 0); SIGNAL A,B: INTEGER; SIGNAL C: STD_LOGIC:=0; 当信号定义了数据类型和表达方式后,就可以对当信号定义了数据类型和表达方式后,就可以对信号进行赋值。信号赋值的语句格式为:信号进行赋值。信号赋值的语句格式为: 目标信号名目标信号名=表达式表达式 AFTER 时间量时间量; 例如:例如: SIGNAL t1,t2: STD_LOGIC; t1=t2 AFTER 10 ns ; 信号的初始赋值语句用信号的初始赋值语句用“:=”,这种赋值方式是没,这种赋值方式是没有延迟时间的。信号的赋值语句用有延迟时间的。信号的赋值语句用“=”,表示,表示允
48、许信号传递时存在延迟时间允许信号传递时存在延迟时间。 (4)文件)文件 文件是用来传输大量数据的数据对象。在系统仿文件是用来传输大量数据的数据对象。在系统仿真测试时,输入激励数据和仿真结果输出常通过真测试时,输入激励数据和仿真结果输出常通过文件实现。对文件进行说明的语句格式为文件实现。对文件进行说明的语句格式为; FILE 文件变量:文件变量:TEXT IS 方向方向“文件名文件名”; 其中其中FILE是文件对象声明关键字,文件变量是是文件对象声明关键字,文件变量是文件对象标识符,方向指明是读(文件对象标识符,方向指明是读(IN)文件还是)文件还是写(写(OUT)文件,文件名所指的文件必须是)
49、文件,文件名所指的文件必须是ASC码的文件。当从文件中读入数据时,文件码的文件。当从文件中读入数据时,文件的扩展名为的扩展名为in;当向文件中读出数据时,文件的;当向文件中读出数据时,文件的扩展名为扩展名为out。3. 数据类型数据类型在在VHDL中,常量、变量、信号等都要指定数据等中,常量、变量、信号等都要指定数据等类型,具有相同数据类型的量才能够相互传递和类型,具有相同数据类型的量才能够相互传递和作用。不同类型之间的数据不能相互传递,而且,作用。不同类型之间的数据不能相互传递,而且,即使数据类型相同,如果位数不同,也不能相互即使数据类型相同,如果位数不同,也不能相互传递。传递。 VHDL中
50、的数据类型可以分为标量型、复合型、存中的数据类型可以分为标量型、复合型、存取型和文件型。这些数据类型又可以分为预定义取型和文件型。这些数据类型又可以分为预定义数据类型和用户自定义数据类型两个类别。数据类型和用户自定义数据类型两个类别。预定义数据类型是最常用的、最基本的数据类型,预定义数据类型是最常用的、最基本的数据类型,这些数据类型都已在标准程序包这些数据类型都已在标准程序包STANDARD和和STD_LOGIC_1164及其它的标准程序包中作了定及其它的标准程序包中作了定义,可在设计中随时调用。义,可在设计中随时调用。 (1)预定义数据类型)预定义数据类型 VHDL的预定义数据类型共有的预定
51、义数据类型共有10种,都是在种,都是在VHDL标准程序包标准程序包STANDARD中定义的,已自动包含在中定义的,已自动包含在VHDL的原文件中,在实际使用时不需要通过的原文件中,在实际使用时不需要通过USE语句显式调用。语句显式调用。 布尔(布尔(BOOLEAN)类型。)类型。 位(位(BIT)类型。)类型。 位矢量(位矢量(BIT_VECTOR)类型。)类型。 SIGNAL A: BIT _VECTOR(7 DOWNTO 0); 字符(字符(CHARACTER)类型。)类型。1、a、$ 字数串(字数串(STRING)类型。)类型。 B10101表示一个表示一个5位二进制数,位二进制数,O2
52、57表示表示3位八进制数,位八进制数,XA2C7表示表示4位十六进制数。位十六进制数。 整数(整数(INTEGER)类型。)类型。 实数(实数(REAL)类型。)类型。 时间(时间(TIME)类型。)类型。 错误等级(错误等级(SEVERITY_LEVEL)。)。 文件(文件(FILE)类型。)类型。 (2)IEEE预定义数据类型标准逻辑位与矢量预定义数据类型标准逻辑位与矢量 在在IEEE库的程序包库的程序包STD_LOGIC_1164中,定义了两中,定义了两个非常重要的数据类型,即标准逻辑位个非常重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量和标准逻辑矢量STD_LOGIC_V
53、ECTOR。 标准逻辑位(标准逻辑位(STD_LOGIC)类型。标准逻辑位数)类型。标准逻辑位数据是对标准位数据类型的扩展,共定义了据是对标准位数据类型的扩展,共定义了9种取值,种取值,分别为分别为0(强(强0)、)、1(强(强1)、)、Z(高阻态)、(高阻态)、X(强(强未知的)、未知的)、W(弱未知的)、(弱未知的)、L(弱(弱0)、)、H(弱(弱1)、)、U(未初始化)和(未初始化)和_(忽略忽略)。在。在VHDL综合器中,综合器中,STD_LOGIC型数据能够在数字器件中实现的只有型数据能够在数字器件中实现的只有0、1、Z和和X 4种。种。 标准逻辑矢量(标准逻辑矢量(STD_LOGI
54、C_VECTOR)类型)类型。标准逻辑矢量类型是一个标准逻辑位数据类型数。标准逻辑矢量类型是一个标准逻辑位数据类型数据元素的数组,使用时必须定义数组的长度和方向据元素的数组,使用时必须定义数组的长度和方向。(3)用户自定义数据类型)用户自定义数据类型 VHDL允许用户自定义新的数据类型,用户自定允许用户自定义新的数据类型,用户自定义数据是用类型定义语句义数据是用类型定义语句TYPE和子类型定义语和子类型定义语句句SUBTYPE实现的。实现的。 枚举(枚举(ENUMERATION)类型。)类型。枚举类型定枚举类型定义的语句格式为:义的语句格式为: TYPE 枚举类型名枚举类型名 IS(元素,元素
55、,(元素,元素,元素);元素); 例如:例如: TYPE week IS(mon,tue,wed,thu,fri, sat,sun);); TYPE color IS(green,yellow,red,blue, orange);); 整数类型整数类型 用户所定义的整数类型,实际上是整数类型的一个用户所定义的整数类型,实际上是整数类型的一个子类,由于子类,由于VHDL综合器无法综合未限定范围的整综合器无法综合未限定范围的整数类型的信号或变量,所以一定要用数类型的信号或变量,所以一定要用RANGE来为整来为整数限定范围。整数类型定义的语句格式为数限定范围。整数类型定义的语句格式为:TYPE 整数
56、类型名整数类型名 IS INTEGER RANGE 约束范围;约束范围;例如:例如: TYPE digit IS INTEGER RANGE 0 TO 9; TYPE date1 IS REAL RANGE 1.0E2 TO 1.0E4; 数组(数组(ARRY)类型)类型 数组类型定义的语句格式为:数组类型定义的语句格式为:TYPE 数组类型名数组类型名 IS ARRAY(范围)(范围)OF 类型名称;类型名称;例如:例如:TYPE reg0 IS ARRAY (0 TO 7)OF BIT; 记录类型。记录类型。 记录类型是将不同类型的数据和数据名组织在一起构记录类型是将不同类型的数据和数据名
57、组织在一起构成的新的复合数据类型。成的新的复合数据类型。TYPE 记录类型名记录类型名 IS RECORD 元素名:数据类型名;元素名:数据类型名; 元素名:数据类型名;元素名:数据类型名; END RECORD;2.3.3 VHDL的操作符的操作符 操作符是指将操作符是指将VHDL中最基本元素连接起来中最基本元素连接起来的一种操作符号。的一种操作符号。VHDL语言预定义的操语言预定义的操作符主要有逻辑运算操作符、关系运算操作符主要有逻辑运算操作符、关系运算操作符、算术运算操作符和并置运算操作符,作符、算术运算操作符和并置运算操作符,可以分别进行逻辑运算、关系运算、算术可以分别进行逻辑运算、关
58、系运算、算术运算和并置运算。运算和并置运算。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.4 VHDL的基本语句的基本语句 VHDL基本描述语句可以分为基本描述语句可以分为顺序语句顺序语句和和并并行语句行语句两大
59、类。两大类。1. 顺序语句顺序语句(1)赋值语句)赋值语句 信号赋值语句的符号为信号赋值语句的符号为 顺序语句;顺序语句; WHEN 选择值选择值2 = 顺序语句;顺序语句; WHEN 选择值选择值n = 顺序语句;顺序语句;WHEN OTHERS = 顺序语句;顺序语句;END CASE;(4)LOOP语句语句 LOOP语句包含的一组顺序语句可以被循环执行,语句包含的一组顺序语句可以被循环执行,其执行的次数可由设定的循环次数决定,循环方其执行的次数可由设定的循环次数决定,循环方式由式由NEXT和和EXIT语句控制。语句控制。LOOP语句有语句有3种表种表现形式。现形式。(5)NEXT语句和语
60、句和EXIT语句语句 NEXT语句和语句和EXIT语句是语句是LOOP语句的内部循环语句的内部循环控制语句。当控制语句。当LOOP内的顺序语句执行到内的顺序语句执行到NEXT语句时,立即无条件终止当前循环,跳向语句时,立即无条件终止当前循环,跳向LOOP语句的起始点,开始下一个循环;当语句的起始点,开始下一个循环;当LOOP内的内的顺序语句执行到顺序语句执行到EXIT语句时,跳向语句时,跳向LOOP语句的语句的终点。终点。 LOOP的第的第1种形式为:种形式为:标号:标号: LOOP 顺序语句;顺序语句;END LOOP LOOP标号标号; LOOP的第的第2种形式为:种形式为:标号:标号: FOR 循环变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年防火卷帘门技术服务与维护合同
- 四年级体育之旅回顾
- 双十一家居营销攻略
- 2024年知识产权产学研多方合作协议范本版B版
- 劳动力量成就未来
- 媒体变革与转型
- 外卖代运营合同(2篇)
- 大学生就业服务平台就业协议书范本(2篇)
- 2024无锡市房产买卖交易合同范本3篇
- 2024水电暖改造与清包施工合同2篇
- 向女朋友认错保证书范文
- 五分数加法和减法(课件)-数学五年级下册
- 2024午托承包合同-校园内学生午休服务协议3篇
- 2025年医院支部工作总结及工作计划范文
- 茶歇合同范例
- DB37T 3329-2018 建筑陶瓷制品制造行业企业安全生产风险分级管控体系实施指南
- 2024年四川省绵阳市中考语文试卷(附真题答案)
- 小红书种草营销师(初级)认证考试真题试题库(含答案)
- 中学学校装修改造工程施工组织设计方案
- 幼儿园反恐防暴技能培训内容
- 食品企业质检员聘用合同
评论
0/150
提交评论