VHDL与数字电路设计课件-第一章VHDL程序的基本结构.ppt
北京工业大学实验学院;北京工业大学实验学院;1、根本结构;LIBRARYIEEE; --USE定义区
USEIEEE.std_logic_1164.ALL;
USEIEEE.std_logic_arith.ALL;
USEIEEE.std_logic_unsigned.ALL;
;描述输入/输出端口
描述电路的行为和功能;;并非所有VHDL程序都具备上述的语法结构。理论上,只有ENTITY和ARCHITECTURE是程序必备的;而在实际应用中,常常需要在定义ENTITY之前调用库和库中的程序包〔只是“调用〞,不是“编写〞〕。以下图所示的VHDL程序结构是实际应用中最根本、最常见的程序结构。;--eqcomp4isafourbitequalitycomparator
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
ENTITYeqcomp4IS
PORT(a,b:INstd_logic_vector(3DOWNTO0);
equal:OUTstd_logic);
ENDeqcomp4;
ARCHITECTUREdataflowOFeqcomp4IS
BEGIN
equal=‘1’WHENa=bELSE‘0’;
ENDdataflow;;2、库和程序包;VHDL语言的库分为两类:
设计库:包括std和work库,设计库对当前工程是可见默认的,无需用LIBRARY和USE语句声明。
资源库:包括IEEE库等,设计库是常规元件和标准模块存放的库,使用哪个资源库需要预先声明。
VHDL标准中提供了一些预定义的标准程序包,常用的有:
Standard〔std库〕
Textio〔std库〕
Std_logic_1164〔IEEE库〕
…;由于VHDL已是IEEE规定的标准,所以只要是CPLD、FPGA等器件公司,他们都会提供标准的IEEE资源库,而且由于这里面包含许许多多的定义和参数,初学者一时之间也不容易全部了解,所以可以全部写上以减轻负担,如下所示:
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
USEIEEE.std_logic_arith.ALL;
USEIEEE.std_logic_unsigned.ALL;
;作用:
ENTITY〔实体〕用于定义电路的外观,即I/O端口和数量。
定义格式:
ENTITY实体名IS
[类属参数说明];
端口说明;
[实体说明局部];
END[ENTITY]实体名;;放在端口说明之前,用来为设计实体和其外部环境通信的静态信息提供通道,可以用来定义端口宽度、实体中元件的数目以及器件延迟时间等参数。
可以使VHDL更加具有通用性。在开始设计VHDL语言程序时,难免会有一些参数的值不能确定〔或待定〕,可以应用GENERIC语句编制通用程序,仿真时只要将待定参数初始化即可。
定义格式:
GENERIC(参数名称:数据类型[:=静态表达式];…);
例: GENERIC(delay_time:time:=5ns);;端口说明是对设计实体与外部接口的描述,端口对应于电路图上的一个引脚,一个端口就是一个数据对象。端口说明局部用于为设计实体和其外部环境通信的动态信息提供通道。
定义格式:
PORT(端口名称:端口模式数据类型[:=表达式];…);
例: PORT(a: IN bit;
b: IN bit;
c: OUT bit);
;端口说明必须包括端口名称、端口模式和数据类型的描述。端口名称就是指定端口的标识符;端口模式用来说明数据、信号通过该端口时的流动方向,即数据传输方向;数据类型用来说明通过信号端口的数据或者信号的数据类型。
端口模式:
;IN〔输入〕模式:
OUT〔输出〕模式:
INOUT〔双向〕模式:
BUFFER〔缓冲〕模式:
BUFFER模式和INOUT模式的区别就在于INOUT模式不能用于实体内部的反响。
LINKAGE〔链接〕模式:;北京工业大学实验学院;实体说明局部应放在端口说明的下面,由实体声明语句和实体语句两局部构成。
实体声明语句的功能是用来定义设计实体接口中的一些公共信息,如数据类型的定义。
实体语句是每一个设计实体接口的公共局部。实体语句只能由以下并行语句组成:并行断言语句、并行过程调用语句和被动进程语句。这些实体语句局部必须是被动语句,即在语句中不含有赋值语句。;ENTITYramIS
GENERIC(dela