第3章1 VHDL语言基本结构和语言要素.ppt
《第3章1 VHDL语言基本结构和语言要素.ppt》由会员分享,可在线阅读,更多相关《第3章1 VHDL语言基本结构和语言要素.ppt(130页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第三章第三章 硬件描述语言(硬件描述语言(VHDLVHDL)第一部分第一部分 基本结构和语言要素基本结构和语言要素1 掌握掌握VHDL程序设计约定程序设计约定 掌握掌握VHDL程序基本结构程序基本结构 库、程序包、实库、程序包、实 体和结构体体和结构体 掌握掌握VHDL语言要素文字规则、数据对象、语言要素文字规则、数据对象、数据类型和操作符数据类型和操作符 本章教学目的与要求本章教学目的与要求2VHDL程序基本结构程序基本结构 VHDL语言要素语言要素 本章教学重点本章教学重点 本章教学难点本章教学难点VHDL程序基本结构程序基本结构 VHDL语言要素数据对象和数据类型语言要素数据对象和数据
2、类型3 本章教学方法本章教学方法 本章学时本章学时4学时学时 本本章章采采用用讲讲授授为为主主,自自学学为为辅辅的的教教学学方方法法。对对重重点点内内容容,课课堂堂上上要要讲讲解解透透彻彻,课课下下布布置置一一定定的的作作业业,使使学学生生加加深深对对内内 容容的的理理解解并并牢牢固固掌掌握握;对对难难点点内内容容,通通过过举举例例加加以以分分析析,深深入入浅浅出出,举举一一反反三三,理理论论联联系系实实际际,使学生能学会学懂,为以后进一步学习打下基础。使学生能学会学懂,为以后进一步学习打下基础。4 VHDL:VHSIC(Very High Speed Integrated Circuit)H
3、ardware Description Language3.1 3.1 概述概述一、什么是一、什么是VHDLVHDL?5 80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。1987年由 IEEE 协会批准为 IEEE 工业标准,称为 IEEE1076-1987。各EDA公司相继推出支持VHDL的设计环境。1993年被更新为 93 标准,即IEEE1076-1993。进一步提高抽象描述层次,扩展系统描述能力。二、二、VHDLVHDL的历史的历史6 1、VHDL打破软、硬件的界限 传统的数字系统设计分为:硬件设计(硬件设计人员)软件设计(软件设计人员)VHDL是电子系统设计者和
4、 EDA工具之间的界面。三、三、VHDLVHDL的作用的作用 EDA工具及 HDL的流行,使电子系统向集 成化、大规模和高速度等方向发展。美国硅谷约有80%的 ASIC和 FPGA/CPLD 已采用 HDL进行设计。72、VHDL与C、C+的比较:C、C+代替汇编等语言 VHDL 代替原理图、逻辑状态图等3、VHDL与电原理图描述的比较:VHDL具有较强的抽象描述能力,可进行系统 行为级别的描述。描述简洁,效率高。VHDL描述与实现工艺无关。电原理图描述需给出完整、具体的电路结构 图,不能进行抽象描述。描述繁杂,效率低。电原理图描述与实现工艺有关。8 1、VHDL具有强大的语言结构,系统硬件描
5、述能 力强、设计效率高;具有较高的抽象描述能力。如:一个可置数的16位计数器的电原理图:四、四、VHDLVHDL语言特点语言特点9用VHDL描述的可置数16位计数器:10 2、VHDL语言可读性强,易于修改和发现错误。3、VHDL具有丰富的仿真语句和库函数,可对 VHDL源代码进行早期功能仿真,有利于大 系统的设计与验证。4、VHDL设计与硬件电路关系不大。5、VHDL设计不依赖于器件,与工艺无关。6、移植性好。7、VHDL体系符合TOP-DOWN和CE(并行工程)设计 思想。8、VHDL设计效率高,产品上市时间快,成本低。9、易于ASIC实现。11五、五、VHDLVHDL与其它硬件描述语言的
6、比较与其它硬件描述语言的比较VHDL:具有较强的系统级抽象描述能力,适合行为级和 RTL级的描述。设计者可不必了解电路细节,所作工作较少,效率高。但对综合器的要求高,不易控制底层电路的生成。IEEE标准,支持广泛。行为级RTL级门电路级RTL:Register Translate Level12Verilog HDL:系统级抽象描述能力比VHDL稍差;门级开关电路描述方面比 VHDL 强。适合 RTL级和门电路级的描述。设计者需要了解电路细节,所作工作较多。IEEE标准,支持广泛。ABEL、PALASM、AHDL(Altera HDL):系统级抽象描述能力差,一般作门级 电路描述。要求设计者对
7、电路细节有详细的了解。对综合器的性能要求低,易于控制电路资源。支持少。13 VHDL主要用于描述数字系统的结构、行 为、功能和接口。VHDL将一个设计(元件、电路、系统)分为:外部(可视部分、端口)内部(不可视部分、内部功能、算法)六、六、VHDLVHDL设计简述设计简述14外部与内部:器件或子系统 ARCHITECTURE Process ProcessENTITYSequentialProcessCombinational Processportsportscomponentportsports152选1选择器的VHDL描述:16 一般,VHDL语言对字母大小写不敏感;例外、“”所括的字符
8、、字符串;每条VHDL语句由一个分号(;)结束;VHDL语言对空格不敏感,增加可读性;在“-”之后的是VHDL的注释语句,不参加编译和综合;命名不能用保留关键字构成;用户所定义的变量名和实体名必须以字母为开头;在MAXPLUS中,存盘文件名必须与设计的实体名相同;为了便于程序的阅读与调试,书写程序时,使用层次缩进格式,同一层次的对齐,低层次的,较高层次的缩进两个字符。VHDLVHDL语言的一些语言的一些相关约定相关约定:17基本结构包括基本结构包括:实体(Entity)结构体(Architecture)配置(Configuration)库(Library)、程序包(Package)3.2 VH
9、DL3.2 VHDL程序基本结构程序基本结构18 库、程序包 实体(Entity)结构体 (Architecture)进程 或其它并行结构 配置(Configuration)19一、实体(说明)一、实体(说明)实体(说明):定义系统的输入输出端口 语法:ENTITY IS Generic Declarations Port DeclarationsEND;(1076-1987 version)END ENTITY ;(1076-1993 version)201 1、类属说明、类属说明 类属说明:确定实体或组件中定义的局部常数。模 块化设计时多用于不同层次模块之间信息的 传递。可从外部改变内部电
10、路结构和规模。类属说明必须放在端口说明之前。Generic(常数名称:类型:=缺省值 常数名称:类型:=缺省值 );21类属常用于定义:实体端口的大小、设计实体的物理特性、总线宽度、元件例化的数量等。例:entity mck is generic(width:integer:=16);port(add_bus:out std_logic_vector (width-1 downto 0);22例:2输入与门的实体描述 entity and2 is generic(risewidth:time:=1 ns;fallwidth:time:=1 ns);port(a1:in std_logic;a0
11、:in std_logic;z0:out std_loigc);end entity and2;注:数据类型 time 用于仿真模块的设计。综合器仅支持数据类型为整数的类属值。23其中,端口模式:in:输入型,此端口为只读型。out:输出型,只能在实体内部对其赋值。inout:输入输出型,既可读也可赋值。buffer:缓冲型,与 out 相似,但可读。Port(端口名称,端口名称:端口模式 数据类型;端口名称,端口名称:端口模式 数据类型 );2 2、端口声明、端口声明端口声明:确定输入、输出端口的数目和类型。24out 和 buffer 的区别:25 指端口上流动的数据的表达格式。为预先定义
12、好的数据类型。如:bit、bit_vector、integer、std_logic、std_logic_vector 等。例:entity nand2 is entity m81 is port(port(a,b:in bit;a:in bit_vector(7 downto 0);z:out bit sel:in bit_vector(2 downto 0););b:out bit);end entity nand2;end entity m81;3 3、数据类型:、数据类型:26作用:定义系统(或模块)的行为、元件及内部 的连接关系,即描述其逻辑功能。两个组成部分:对数据类型、常数、信号、
13、子程序、元件等 元素的说明部分。以各种不同的描述风格描述的系统的逻辑功 能实现的部分。常用的描述风格有:行为描 述、数据流描述、结构化描述。二、结构体二、结构体27结构体结构体说明结构体功能描述 常数说明 数据类型说明 信号说明 例化元件说明 子程序说明 块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句 28实体与结构体的关系:设计实体结构体1结构体2结构体3结构体n。一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。29注:同一实体的结构体不能同名。定义语句中的 常数、信号不能与实体中的端口同名。architecture 结构体名称 of 实体名称 is
14、说明语句内部信号、常数、数据类型、子程序(函数、过程)、元件等的说明;begin 并行处理(功能描述)语句;end architecture 结构体名称;结构体的语法:30例:结构体中错误的信号声明31例:一个完整描述(3 bit 计数器)323bit计数器的等效描述(out与buffer的区别):33 与Out 端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,
15、由该信号完成回读功能。注:注:outout与与bufferbuffer的区别总结的区别总结:34 双向端口Inout是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个简单程序进行阐述,部分程序如下:control,in1为in,x为out,q为inout模式。process(control,q,in1)begin if(control=0)then x=q;else q=in1;x=“ZZZZZZZZ”;end if;end process;process(control,q,in1)begin if(control=0)then x=q;q=“ZZZZZZZZ”;else q
16、=in1;x=“ZZZZZZZZ”;end if;end process;关于双向端口关于双向端口INOUTINOUT的的使用使用总结总结:35三、配置三、配置设计实体结构体1结构体2结构体3结构体n。一个设计实体的多种实现方式配置:从某个实体的多种结构体描述方式中选择 特定的一个。36configuration 配置名 of 实体名 is for 选配结构体名 end for;end 配置名;简单配置的语法:37 library ieee;use ieee.std_logic_1164.all;entity nand is port(a:in std_logic;b:in std_logic
17、;c:out std_logic);end entity nand;architecture art1 of nand is begin c=not(a and b);end architecture art1;例:一个与非门不同实现方式的配置如下:38architecture art2 of nand is begin c=1 when(a=0)and(b=0)else 1 when(a=0)and(b=1)else 1 when(a=1)and(b=0)else 0 when(a=1)and(b=1)else 0;end architecture art2;39configuration
18、first of nand is for art1;end for;end first;configuration second of nand is for art2 end for;end second;40例:一个对计数器实现多种形式的配置如下:4142程序包:程序包:已定义的常数、数据类型、元件调用说明、子程序的一个集合。目的:方便公共信息、资源的访问和共享。库:库:多个程序包构成库。四、四、程序包、库程序包、库43程序包说明的内容:常量说明;VHDL数据类型说明;元件说明;子程序说明;程序包的结构包括:程序包说明(包首)程序包主体(包体)44包声明项可由以下语句组成:use 语句(用
19、来包括其它程序包);类型说明;子类型说明;常量说明;信号说明;子程序说明;元件说明。package 程序包名 is 包说明项 end 程序包名;1 1、程序包说明(包首)、程序包说明(包首)语法:45例:程序包说明46包体说明项可含:use 语句;子程序说明;子程序主体;类型说明;子类型说明;常量说明。package body 程序包名 is 包体说明项 end 程序包名;2 2、程序包包体、程序包包体程序包的内容:子程序的实现算法。包体语法:47程序包首与程序包体的关系:程序包体并非必须,只有在程序包中要说明子程序时,程序包体才是必须的。程序包首可以独立定义和使用。如下:48package
20、seven is subtype segments is bit_vector(0 to 6);type bcd is range 0 to 9;end seven;library work;use work.seven.all;entity decoder is port(input:in bcd;drive:out segments);end decoder;architecture art of decoder isbegin49 with input select drive=B“1111110”when 0,B“0110000”when 1,B“1101101”when 2,B“11
21、11001”when 3,B“0110011”when 4,B“1011011”when 5,B“1011111”when 6,B“1110000”when 7,B“1111111”when 8,B“1111011”when 9,B“0000000”when others;end architecture art;abcdefg503 3、库的种类、库的种类 VHDL库可分为 5种:1 1)IEEE IEEE 库库 定义了四个常用的程序包:std_logic_1164 std_logic_1164(std_logic types&related functions)std_logic_arit
22、hstd_logic_arith (arithmetic functions)std_logic_signed std_logic_signed(signed arithmetic functions)std_logic_unsigned std_logic_unsigned(unsigned arithmetic functions)51 Type STD_LOGIC:9 logic value system(U,X,0,1,Z,W,L,H,-)W,L,H”weak values(Not supported by Synthesis)X-(not x)used for unknown Z-(
23、not z)used for tri-state -Dont Care 52 2 2)STD STD 库(默认库)库(默认库)库中程序包为:standard,定义最基本的数据类型:Bit,bit_vector,Boolean,Integer,Real,and Time 注:Type Bit 2 logic value system(0,1)3 3)面向面向ASICASIC的库的库 4 4)WORKWORK库(默认库)库(默认库)5 5)用户定义库)用户定义库534 4、库及程序包的使用、库及程序包的使用 库及程序包的说明总是放在实体单元前面,默认库及程序包可不作说明。用关健字library 说
24、明要使用的库,用关健字 use 说明要使用的库中的程序包。库及程序包的作用范围:仅限于所说明的设计实体。每一个设计实体都必须有自已完整的库及程序包说明语句。54 库、程序包 实体(Entity)结构体 (Architecture)进程 或其它并行结构 配置(Configuration)55库的使用语法:程序包的使用有两种常用格式:例:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.conv_integer;library 库名;use 库名程序包名项目名 use 库名程序包名All;562 选 1 选择器
25、:572选1的另一种描述58VHDLVHDL程序设计举例程序设计举例(1 1 位全加器的设计位全加器的设计)1设计思路设计思路 全加器可以由两个1位的半加器构成,而1位半加器可以由如图所示的门电路构成。592.VHDL2.VHDL源程序源程序1)或门的逻辑描述-IEEE库的使用说明 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-实体OR2的说明 ENTITY OR2 IS PORT(A,B:IN STD_LOGIC;C:OUT STD_LOGIC);END ENTITY OR2;-实体OR2的结构体ART1的说明 ARCHITECTURE ART1 OF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章1 VHDL语言基本结构和语言要素 VHDL 语言 基本 结构 要素
限制150内