FPGA 第三章:基本结构介绍
VHDL基本结构组成
库
数据的集合。内含各类包定义、实体、构造体等。
LIBRARY 库名
如:
LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
库的种类
①. IEEE库:被IEEE采用的标准化库,是VHDL设计中最重要的库;
②. STD库:所有设计单元所共享、默认的库;
③. VITAL库:提高VHDL门级时序模拟的精度;
④. WORK库:是用户的VHDL设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包;
⑤. 用户自定义库:设计者自己建立的设计单元资源库。
包
罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件描述、函数定义以及过程定义等内容。
包的使用:
USE [库名].[包名].[项目名]
如:
LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
包的设计:
包首:
PACKAGE [包名] IS
[包首说明语句]
END [包名]
包体:
PACKAGE BODY [包名] IS
[包体说明语句以及包体内]
END [包名]
实体
实体部分描述设计系统的外部接口信号(输入/输出信号)
ENTITY 实体名 IS
[GENERIC (类属参数说明);]
[PORT (端口表);]
END ENTITY 实体名;
实体之端口
PORT (端口名 :端口模式 数据类型 ;
...
)
实体之类属
generic(常数名称:数据类型:=静态设定值
...
)
类属与常数的区别:类属的值可以由设计实体外部提供,而常数只能从设计实体的内部得到赋值,且不能再改变。
但在实体内部环境中类属和常数的使用是比较一致的。
VHDL综合器仅支持数据类型为整数的类属值
结构体
描述器件的内部功能;
描述实体的内部结构和外部设计实体端口间的逻辑关系。
ARCHITECTURE 结构体名 OF 实体名 IS
[说明语句]
BEGIN
[功能描述语句]
END ARCHITECTURE 结构体名;
说明语句
是对结构体的功能描述语句中将要用到的信号$SIGNAL$、数据类型$TYPE$、常数$CONSTANT$、元件$COMPONENT$、函数$FUNCTION$和过程$PROCEDURE$等加以说明。
功能描述语句
可以含有5中不同类型的以并行方式工作的语句结构:
块语句$BLOCK$、进程语句$PROCESS$、信号赋值语句、子程序调用语句、元件例化语句。
块语句
使结构体层次鲜明,结构明确。
块标号 : BLOCK
[接口说明]
[类属说明]
BEGIN
[并行语句]
END BLOCK 块标号;
进程
进程由声明语句、顺序语句、敏感信号列表组成。
进程名称: PROCESS(敏感信号表) IS
[进程说明部分]
BEGIN
[顺序处理语句]
END PROCESS 进程名称;
进程说明部分
主要定义一些局部量,可包括数据类型、常数、变量、属性、子程序等。
进程说明中不允许定义信号和共享变量
子程序
目的是更有效地完成重复性的工作。
函数
函数首:
FUNCTION 函数名(参数表) RETURN 数据类型;
函数体:
FUNCTION 函数名(参数表) RETURN 数据类型 IS
[说明部分]
BEGIN
[顺序语句]
END FUNCTION 函数名;
过程
过程首:
PROCEDURE 过程名 (参数表)
过程体:
PROCEDURE 过程名 (参数表) IS
[说明部分]
BEGIN
[顺序语句]
END PROCEDURE 过程名;
函数与过程应用的比较
①. 函数可以有输入参数也可以没有输入参数,必须有一个返回值$return$;过程必须有参数,而且这些参数必须有数据类型(输入/输出/双向),对于输入类型默认为常量,对于输出和双向类型默认为变量,无$return$。
②. 函数调用可作为表达式的一部分,过程则直接调用。
配置
配置语句描述层与层之间的连接关系以及实体与结构之间的连接关系。
CONFIGURATION 配置名 OF 实体名 IS
[语句说明]
END 配置名;