上页下页返回数字电子技术基础2硬件描述语言VHDL基础2.1概述2.2VHDL的主要构件2.3数据类型和运算2.4行为和结构描述上页下页返回数字电子技术基础2.1概述1.组合电路传统的设计方法:逻辑命题→列真值表→化简逻辑函数→画逻辑电路图。2.传统的设计方法缺点(对于复杂数字系统的设计):a.很繁琐;b.不便于互相交流;c.难以了解设计的正确性;上页下页返回数字电子技术基础3.硬件描述语言HDL(HardwareDescriptionLanguage)a.便于利用计算机进行数字系统辅助设计。b.便于交流和存档。HDL是描述电子系统硬件行为、结构和数据的语言,是一种描述复杂数字电路的工具,是设计者与电子设计自动化(EDA)软件之间的界面。HDL的特点:c.不同的HDL有很大的差异,便于交流和推广。上页下页返回数字电子技术基础VHDL是一种标准化的硬件描述语言,它支持系统级、寄存器级和门级三个不同层次的设计。在数字系统从顶到底(Top–to-Down)设计的全过程中,都可利用这同一种硬件描述语言进行设计、模拟和存档。4.VHDL(VHSICHardwareDescriptionLanguage)VHSIC——VeryHighSpeedIntegratedCircuit自从IEEE1987年和1993年公布了VHDL的标准版本之后,各EDA公司纷纷加入这一标准化的行列。上页下页返回数字电子技术基础VHDL的优点:a.覆盖面广,描述能力强,是一个多层次的硬件描述语言;b.可读性好;c.生命期长,其硬件描述与工艺技术无关;d.支持大规模设计的分解和已有设计再利用;e.已成为IEEE承认的一个工业标准,成为一种通用的硬件描述语言。上页下页返回数字电子技术基础2.2VHDL的主要构件2.2.1实体实体VHDL设计电路的最基本部分,它描述一个设计单元的外部接口以及连接信号的类型和方向。当一个实体经过编译并被放入库中之后,它就成为其他设计可以采用的一种元件。上页下页返回数字电子技术基础1.实体的一般格式:ENTITY实体名IS[PORT(端口表);]实体说明部分;实体语句部分;]END[ENTITY]实体名;[BIGIN上页下页返回数字电子技术基础2.举例或门的实体ENTITYorgateISPORT(a,b:INBIT;z:OUTBIT);ENDorgate;注:a.ENTITY,IS,PORT,IN,OUT,END为关键字。b.VHDL本身不区分大小写。上页下页返回数字电子技术基础实体(entity)名称端口信息端口模式:信号取值类型:输入、输出、双向、缓冲…位、整数、实数、记录、数组…3.实体的格式上页下页返回数字电子技术基础2.2.2结构体电路描述部分称之为结构体(ARCHITECTURE),它用于描述设计单元内部的行为、元件及连接关系。1.结构体的一般格式ARCHITECTURE结构体名OF实体名IS[定义语句];(内部信号,常数,数据类型,函数定义等)BEGIN[并行处理语句];[进程语句];END结构体名;上页下页返回数字电子技术基础architecturebehaveoforgateisbeginor_func:process(a,b)beginif(a=‘1’orb=‘1’)thenz=‘1’;elsez=‘0’;endif;endprocessor_func;endbehave;2.举例或门的结构体上页下页返回数字电子技术基础3.VHDL主要采取的描述方式a.行为描述:描述该设计单元的功能。主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送。b.结构描述:描述该设计单元的硬件结构,即该电路是如何构成的。主要使用配置指定语句及元件例化语句描述元件的类型及互连关系。包含一个实体和一个或一个以上结构体的VHDL程序就是一段完整的VHDL程序。上页下页返回数字电子技术基础2.2.3程序包程序包(PACKAGE)是一种使包体中的元件、子程序、公用数据类型和说明等对其它设计单元可调用的设计单元。程序包包括程序包说明和程序包体。PACKAGE程序包名IS[说明部分]END程序包名1.程序包说明的一般形式上页下页返回数字电子技术基础PACKAGEBODY程序包名IS[说明部分]END程序包名2.包体的一般形式3.程序包的调用包体中的子程序体和基本说明不能被其它VHDL单元使用,程序包中的说明是公共的,是可调用的。如果一个程序包中所定义的内容可以被调用,应在VHDL单元前加上use语句。上页下页返回数字电子技术基础例如,调用程序包ieee.std_logic_1164.all中的内容。libraryieee;useieee.std_logic_1164.all;2.2.4库库(LIBRARY)是用来存放可编译的设计单元的地方,可以放置若干个程序包。VHDL语言库分为设计库和资源库。上页下页返回数字电子技术基础设计库对当前项目是可见、默认的,无需用LIBRARY语句声明。设计库包括WORK和STD库。WORK库相当于一个临时仓库,用于保存当前项目中设计成功、正在验证、未仿真的中间器件。一个项目对应一个WORK库。资源库是把常用的工具、元件和模块等设计资源集中打包,它存放常规元件和标准模块,供其它项目引用。上页下页返回数字电子技术基础2.3数据类型和运算1.VHDL硬件描述语言中的三类对象:信号、变量和常量。VHDL是一种非常严格的数据类型化语言,规定每个信号、常量、变量或表达式都要有确定的数据类型。2.数据类型数据类型大体分为标量型和复合型。上页下页返回数字电子技术基础2.3.1标量数据类型1.标量数据类型包括:字符、位、布尔量、实数、整数、物理单位和枚举等。2.标量数据类型说明的一般形式type类型名is类型定义a.一个字符放入单引号中就定义了一个字符:‘x’,字符可以是az中任一个字符、09中的数字和特殊字符等等。b.数字系统中的信号经常用位来表示,表示的方法是用‘0’或‘1’来表示一个位的两个可能值。上页下页返回数字电子技术基础c.一个布尔文字用来表示真(True)或者假(False)。d.枚举类型枚举类型定义在形式上是括号括起来的枚举文字表。枚举文字既可以是标识符,也可以是字符文字。TYPEmy_stateIS(reset,rw_cycle,int_cycle);……signalstate:my_state;……state=reset;OKstate=“00”;ERR[例1]上页下页返回数字电子技术基础它指定了一个范围限制、一个基本单位、零个或多个次级单位,每个次级单位都是基本单位的整数倍。e.物理类型[例2]typeResistanceisrange1toE9;unitsohm;——基本单位kohm=1000ohm;——次级单位,基本单位的整数倍endunits;上页下页返回数字电子技术基础2.3.2复合数据类型分类记录:异构复合类型,记录的元素可以是不同的类型。数组:同构复合类型,数组的各个元素具有同一类型。typeInstructionisrecordOpcode_field:Opcode;Operand_1:address;Operand_2:address;endrecord;[例3]上页下页返回数字电子技术基础2.3.3IEEE标准数据类型“std_logic”和std_logic_vector”“STD_LOGIC”和“STD_LOGIC_VECTOR”是IEEE标准化数据类型,使用它们以前必须写出库IEEE和程序包集合std_logic说明语句libraryIEEE和useieee.std_logic_1164.all,否则,编译时就会出错。上页下页返回数字电子技术基础2.3.4运算及运算符逻辑代数中的各种逻辑运算如与、或、非等在VHDL中都有专门的运算符号,如and、or、nand、nor、xor和not等。逻辑运算所涉及的对象必须事先定义为bit、bit_vector或boolean等数据类型,运算符not的优先级别最高。上页下页返回数字电子技术基础libraryieee;useieee.std_logic_1164.aLL;entitymulsisport(a,b,c:inbit;z:outbit);endmuls;architectureexofmulsisbeginz=aandnot(borc);endex;[例4]运算符优先级的举例上页下页返回数字电子技术基础2.4行为和结构描述进程就是VHDL中最主要的并发语句,是联系顺序层和并发层的一种纽带。并发层使VHDL可以在同一模拟时间运行许多不同的进程。VHDL定义的数字系统的行为:顺序(Sequential)层和并发(Concurrent)层。顺序层就是在每一个进程中用顺序语句规定它没一步的行为;并发层就是定义这些进程互相的关系,特别是它们之间的信息传递问题。上页下页返回数字电子技术基础2.4.1进程进程(process):行为描述构造体中的一部分,它用时序语句描述了硬件的行为。[进程名]process[敏感信号表]变量说明语句;begin顺序说明语句;endprocess[进程名];进程句法的一般形式:上页下页返回数字电子技术基础2.4.2并发行为用硬件描述语言VHDL所设计的电子系统实际工作时是并行操作,所以系统中的元件在模拟时间上应该同时运行。并发语句就是用来表示这种并发行为的。VHDL语言中电路描述部分(architecture)中的语句都是并行的,在字面上的顺序并不代表它们的执行顺序。2.4.3VHDL的行为描述行为描述是一种抽象的描述,它不具体对应电路的实现,是用算法来对单元的功能进行描述。上页下页返回数字电子技术基础[例1]加法器的行为描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;entityadderisport(op1,op2:inunsigned(7downto0);result:outINTEGER);endadder;architecturemaxpldofadderisbeginresult=conv_integer(op1+op2);endmaxpld;上页下页返回数字电子技术基础2.4.4VHDL的结构描述要描述一个设计单元的硬件结构,就是要描述它由那些元件组成,以及它们之间的连接关系。结构描述比行为描述更为具体化,它的基本单元是“调用元件语句”,这些元件通常是放在库里的已编译好的低层设计单元,在进行顶层设计时调用。上页下页返回数字电子技术基础entitycompareisport(a,b:inbit;c:outbit);endcompare;architecturestructofcompareissignali:bit;componentxr2port(x,y:inBit;z:outBit);endcomponent;componentinvport(x:inBit;z:outBit);endcomponent;BeginU0:xr2portmap(a,b,i);U1:invportmap(i,c);endstruct;[例2]比较器的结构描述上页下页返回数字电子技术基础对应的结构框图xabyzzxciU0xr2U1inv硬件的基本结构是元件、端口和信号。