1、 本章介绍VHDL基本结构和语法规则一个相对完整的VHDL设计由四部分组成:库LIBRARY、程序包PACKAGE:实体ENTITY:结构体ARCHITECTURE:配置CONFIGURATION:库LIBRARY、程序包PACKAGE:库用于存储预先完成的程序包和数据集合体;程序包用于声明在设计中将要用到的公用的常数、数据类型、元件及子程序等。实体ENTITY:定义设计的输入输出端口。结构体ARCHITECTURE:定义实体的实现,即电路的具体描述。可有多个结构体,但只有一个起作用。配置CONFIGURATION:为实体选定某个特定的结构体。VHDL设计的:库、程序包:实体:结构体:配置:*
2、以上四个部分不是每个VHDL程序必须的,但每个VHDL程序至少含有1个实体和1个结构体。必须*1个实体可有多个结构体,通过配置选择1个结构体对实体起作用,其他结构体不起作用。可有多个选择1个结构体*当只有1个结构体时不要配置。其功能见图。功能描述:当S=0时A送Y,S=1时B送Y。ABSYMUX21A图5-1 例5-1功能示意图其对应的VHDL描述为:ENTITYENTITY mux21a ISIS PORT PORT (a,b :ININ BITBIT;s :ININ BITBIT;y :OUTOUT BITBIT););ENDEND mux21a;ARCHITECTUREARCHITECT
3、URE one OFOF mux21a ISIS BEGINBEGIN y=a WHEN s=0 ELSE b;END one;-给出实体名mux21a和管脚定义 ABSYMUX21A图5-2 例5-1实体定义-结构体,描述电路器件的内部逻辑功能或电路结构&000图5-3 例5-1综合后的门电路ABSY 表示为可选项;-开始的语句为注释,不参与编译和综合;黑体单词为保留字。语法约定定义本设计的输入输出端口/信号。ENTITY 实体名 IS注:END中带ENTITY、ARCHITECTURE为IEEESTDl076_1993版的语法要求,不带为IEEESTD1076 1987的语法要求。END
4、ENTITY 实体名;PORT -端口定义GENERIC(常数名:数据类型:设定值););(););端口1:端口模式 端口类型;端口n:端口模式 端口类型-最后一个无分号ENTITY 实体名 IS -此处无分号END ENTITY 实体名;1)格式:2)端口模式图5-4 端口模式示意图INOUTBUFFERINOUT端口名:端口模式 端口类型;IN:输入信号:信号进入实体(不能给信号赋值)OUT:输出信号:信号离开实体(不能读入/反馈输出端口的数据)INOUT:双向信号,信号既可以离开实体,也可以进入实体BUFFER:缓冲信号:信号输出到实体外部,但也可在内部反馈。BUFFER是INOUT的子
5、集,但不是由外部驱动,常用于计数器VHDL作为一种强类型语言,任何一种数据对象(信号、变量、常数)必须严格限定其类型和取值范围,相同类型才能相互传递。这对于大规模电路描述的排错是十分有益的。常用的有:整数型integer、布尔型BOOLEAN、位数据类型BIT、标准逻辑位数据类型std_logic、std_logic_vector等。用程序描述实体的功能。1、一个实体可以有多个结构体,每个结构体代表该实体的不同实现方案。2、结构体可采用行为描述、结构描述或数据流描述,是VHDL最主要的部分。3、格式:ARCHITECTURE 结构体名 OF 实体名 IS 说明语句BEGIN 功能描述END 结
6、构体名;ARCHITECTURE 结构体名 OF 实体名 IS 说明语句BEGIN 功能描述END 结构体名;说明语句:声明将用到的信号、数据类型、常数、元件、子程序。功能描述:块语句:进程语句:信号赋值子程序/过程/函数调用 元件例化:由并行语句组成 由顺序语句组成 元件调用 l顺序语句:与计算机程序类似,与指令的先后顺序有关。l并行语句:执行顺序与语句排列的先后顺序无关,是硬件描述语言与一般软件程序最大的区别所在,所有并行语句在结构体中的执行是同时执行的,即它的执行顺序与语句书写的顺序无关。这种并行性是硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。
7、1、信号赋值语句/传输语句 格式:信号=表达式;注意:为“=”不是等号“=”.在VHDL仿真中赋值操作y=a并非立即发生的,而是要经历一个模拟器的最小分辨时间后,才将a的值赋予y。在此不妨将看成是实际电路存在的固有延时量。VHDL要求赋值符“=”两边的信号的数据类型必须一致。格式:位信号=表达式注意:非“=”。常用的关系操作符(Relational Operator):“=”等于“/=”不等于“”小于“”大于“=”大于或等于任何数据类型排序操作符枚举数据类型整数数据类型由枚举型或整数型数据类型元素构成的一维数组排序判断规则:1)不同长度的数组也可进行排序6)就综合而言,=、/=在实现硬件结构时
8、,比排序操作符构成的电路芯片资源利用率要高。2)整数值:从正无限到负无限,3)枚举型:排序方式与它们的定义方式一致,如:10;TRUEFALSE;ab(若a=1,b=0)。4)两个数组的排序从左至右逐一对元素进行比较来决定的。在比较过程中,若发现有一对元素不等,便确定了这对数组的排序情况,该位为大即为大数。例位矢“1011”101011”,“1”“011。5)改进:对以上判断错误可用STD_LOGIC_ARITH的UNSIGNED解决,如:UNSIGN “l”UNSIGNED “011”,结果将判为TRUE。格式1:信号=值1 WHEN 条件1 ELSE 值2;条件满足信号=值1信号=值2YN
9、当满足条件1,信号=值1,否则信号=值2。格式2:信号=值1 WHEN 条件1 ELSE 值2 WHEN 条件2 ELSE 值n-1 WHEN 条件n-1 ELSE 值n;条件1?信号=值1Y条件2?信号=值2Y条件n-1?信号=值n-1Y.NNN信号=值n 在执行条件信号语句时,每一条件按书写先后关系逐项测定,一旦发现赋值条件=true值赋给变量。如果几个条件同时满足,执行先碰到的那个。实体略 ARCHITECTURE archmux OF mux4 ISBEGIN ya0 WHEN s=“00”ELSE a1 WHEN s=“01”ELSE a2 WHEN s=“10”ELSE a3;END archmux;图5-5 例5-4功能a0a1a2a3sy