您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 第1章 VHDL语言基础
第1章VHDL语言基础1.1VHDL程序基本结构1.2VHDL程序的实体1.3VHDL程序的结构体一、VHDL程序设计约定语句结构描述中方括号“[]”内的内容为可选内容。对于VHDL的编译器和综合器来说,程序文字的大小写是不加区分的。程序中的注释使用双横线“--”。源程序命名与实体同名(MAX+plusⅡ要求)。1.1VHDL程序基本结构二、VHDL程序设计引例(74LS00的设计)①该芯片符合什么规范,是谁生产的,是否大家认可。②该芯片有多少管脚,每个管脚是输入还是输出,每个管脚对输入/输出有什么要求。③该芯片各管脚之间的关系,以及能完成什么逻辑功能。在使用一个芯片时,至少需要了解三个方面的信息:相应地,使用VHDL设计一个硬件电路时,也至少需要描述三个方面的信息:①规范范围,亦即此设计符合某个设计规范,能得到大家的认可,这就是库、程序包使用说明。②硬件电路与外界的接口信号,这就是设计实体的说明。③硬件电路其内部各组成部分的逻辑关系以及整个系统的逻辑功能,这就是该设计实体对应的结构体说明。1.设计思路74LS00芯片由四个2输入与非门组成。因此设计时可先设计一个2输入与非门(图a所示),再由四个2输入与非门构成一个整体—MY74LS00(图b所示)。ABYYABNAND2(a)YABNAND2A1B1U1Y1YABNAND2A2B2U2Y2YABNAND2A3B3U3Y3YABNAND2A4B4U4Y4MY74LS00A1B1A2B2A3B3A4B4Y1Y2Y3Y4(b)MY74LS00的设计过程示意图①2输入与非门NAND2的逻辑描述--IEEE库及其中程序包的使用说明LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--实体NAND2的说明ENTITYNAND2ISPORT(A,B:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDENTITYNAND2;--实体NAND2的结构体ART1的说明ARCHITECTUREART1OFNAND2ISBEGINY=ANANDB;ENDARCHITECTUREART1;2.VHDL源程序说明:实体NAND2定义了2输入与非门NAND2的引脚信号A、B(输入)和Y(输出),其结构体ART1描述了输入与输出信号间的逻辑关系(A、B与非后传给Y)。②MY74LS00的逻辑描述--IEEE库及其中程序包的使用说明LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--实体MY74LS00的说明ENTITYMY74LS00ISPORT(A1,B1,A2,B2,A3,B3,A4,B4:INSTD_LOGIC;Y1,Y2,Y3,Y4:OUTSTD_LOGIC);ENDENTITYMY74LS00;说明:根据图b右侧的MY74LS00原理图,实体MY74LS00定义了引脚的端口信号属性和数据类型。--实体MY74LS00的结构体ART2的说明ARCHITECTUREART2OFMY74LS00IS--元件调用声明COMPONENTNAND2ISPORT(A,B:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENTNAND2;--元件连接说明BEGINU1:NAND2PORTMAP(A=A1,B=B1,Y=Y1);U2:NAND2PORTMAP(A=A2,B=B2,Y=Y2);U3:NAND2PORTMAP(A3,B3,Y3);U4:NAND2PORTMAP(A4,B4,Y4);ENDARCHITECTUREART2;说明:结构体ART2描述的是实体MY74LS00由四个2输入与非门构成的。其中COMPONENT→ENDCOMPONENT语句结构对所要调用的NAND2元件作了声明。整个设计包括两个实体(NAND2和MY74LS00),其中MY74LS00为顶层实体。三、VHDL程序的基本结构库、程序包使用说明结构体(ARCHITECTURE)实体(ENTITY)PORT端口说明结构体说明GENERIC类属说明体实计设结构体功能描述VHDL程序设计基本结构一个相对完整的VHDL程序(或称为设计实体)具有比较固定的结构,即至少应包括三个基本组成部分:①库、程序包使用说明。②实体说明。③实体对应的结构体说明。1.2VHDL程序的实体实体是一个表层设计单元,其功能是对设计实体与外部电路进行接口描述。它规定了设计单元的输入/输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。一、实体的组成ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]实体说明部分;[BEGIN实体语句部分;]END[ENTITY][实体名];二、类属说明类属(GENERIC)参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分。类属说明的一般书写格式如下:GENERIC([常数名:数据类型[:=设定值]{;常数名:数据类型[:=设定值]});【例1:】ENTITYMCKISGENERIC(WIDTH:INTEGER:=16);PORT(ADD_BUS:OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0));...注:此处,GENERIC语句对实体MCK作为地址总线的端口ADD_BUS的数据类型和宽度作了定义,即定义ADD_BUS为一个16位的位矢量。【例2:】2输入与门的实体描述。ENTITYAND2ISGENERIC(RISEW:TIME:=1ns;FALLW:TIME:=1ns);PORT(A1:INSTD_LOGIC;A0:INSTD_LOGIC;Z0:OUTSTD_LOGIC);ENDENTITYAND2;三、端口说明由PORT引导的端口说明语句是对于一个设计实体界面的说明。实体端口说明的一般书写格式如下:PORT(端口名:端口模式数据类型;{端口名:端口模式数据类型});1.端口名端口名是赋予每个外部引脚的名字,由设计者命名。名字的含义要与惯例接轨,如D开头的端口名表示数据,A开头的端口名表示地址等。端口名通常用几个英文字母或一个英文字母加数字表示。下面是合法的端口名:CLK,RESET,A0,D3。2.模式用来说明数据、信号通过该端口的方向。IEEE1076标准包中定义了四种常用的端口模式,其功能及符号如下:端口模式端口模式说明(以设计实体为主体)IN输入,只读模式,将变量或信号信息通过该端口读入OUT输出,单向赋值模式,将信号通过该端口输出BUFFER具有读功能的输出模式,可读或写,只能有一个驱动源INOUT双向,可以通过该端口读入或写出信息INOUTBUFFERINOUT在实际的数字集成电路中,IN相当于只可输入的引脚,OUT相当于只可输出的引脚,BUFFER相当于带输出缓冲器并可以回读的引脚,而INOUT相当于双向引脚。由INOUT端口符号可见,此模式的端口是普通输出端口(OUT)加入三态输出缓冲器和输入缓冲器构成的。3.数据类型IEEE1706标准规定的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-vector)和整数型(Integer)等。在实用中,端口描述中的数据类型主要有两类:位(BIT)和位矢量(BIT_VECTOR)。若端口定义为BIT,则其信号值是一个1位的二进制数,取值只能是0或1;若端口定义为BIT_VECTOR,则其信号值是一组二进制数。四、实体说明部分含有实体说明部分的组织应放在端口说明下边,说明部分定义的项目是实体接口中的公共信息。ENTITYramISPORT(addr:INbit_Vector(15DOWNTO0);Data:OUTbit_Vector(31DOWNTO0);Sel:INbit);TYPEinstructionISARRAY(1TO5)OFNatural;TYPEprogramISARRAY(NaturalRANGE)OFinstruction;USEWork.timing_pkg;PROCEDUREinitialization(SIGNALcontent:bit_vector(31DOWNTO0))ISBEGINCONTENT=(OTHERS='1')AFTERsome_delay;ENDPROCEDUREinitialization;ENDram;【例1:】含实体说明部分的实体1.3VHDL程序的结构体①对数据类型、常数、信号、子程序和元件等元素的说明部分。②描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句。结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系。一般地,一个完整的结构体由两个基本层次组成:进程语句块语句体结构明说体构结述能描功体构结元件例化语句子程序调用语句信号赋值语句常数说明数据类型说明信号说明例化元件说明子程序说明结构体内部构造的描述层次和描述内容一般可以用下图说明。每个实体可以有多个结构体,每个结构体对应着实体不同结构和算法实现方案,其间的各个结构体的地位是同等的,它们完整地实现了实体的行为,但同一结构体不能为不同的实体所拥有。结构体不能单独存在,必须有界面说明,即实体。对于具有多个结构体的实体,必须用CONFIGURATION(配置)语句指明用于综合的结构体和用于仿真的结构体,即在综合后的可映射于硬件电路的设计实体中,一个实体只对应一个结构体。在电路中,如果实体代表一个器件符号,则结构体描述了这个符号的内部行为。当把这个符号例化成一个实际的器件安装到电路上时,则需用配置语句为这个例化的器件指定一个结构体(即指定一种实现方案),或由编译器自动选一个结构体。1.结构体的一般语句格式ARCHITECTURE结构体名OF实体名IS[说明语句;]BEGIN[功能描述语句;]END[ARCHITECTURE][结构体名];2.结构体说明语句结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。3.功能描述语句结构功能描述语句结构可以含有五种不同类型的、以并行方式工作的语句结构,而在每一语句结构的内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句。各语句结构的基本组成和功能分别是:①块语句是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个模块。②进程语句定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。③信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。④子程序调用语句用于调用一个已设计好的子程序。⑤元件例化语句对其他的设计实体作元件调用说明,并将此元件的端口与其他的元件、信号或高层次实体的界面端口进行连接。
本文标题:第1章 VHDL语言基础
链接地址:https://www.777doc.com/doc-3842445 .html