【FPGA学习笔记】VHDL语言(一)

一、简介

一个VHDL语言通常包括实体(entity),结构体(architecture),配置(configuration),包(package),库(library)。

VHDL核心代码包括两部分:
1、实体描述部分;
2、结构体描述部分
一个·设计单元必须包括实体部分和结构体部分。

LIBRARY library_name ;  --调用库
USE _library_name.package_name.ALL;--_library_name.package_name.ALL是库中的文件
ENTITY entity_name IS   --实体定义
	GENERIC --类属性定义
	(
		_parameter_name  :  string   := _default_value;
		_parameter_name  :  integer  := _default_value;
	);
	PORT --端口定义
	(
		_inpout_name,_input_name : IN STD_LOGIC;
		_input_vector_name       : IN STD_LOGIC_VECTOR(_high DOWEN TO _LOW);
	);
END entity_name;

ARCHITECTURE architecture_name OF entity_name IS --结构体定义
	SIGNAL _signal_name  :  STD_LOGIC;
	SIGNAL _signal_name  :  STD_LOGIC;
BEGIN
	--...
END architecture_name;

二、实体entity

描述一个设计单元的外部特征,简单说是描述硬件设计的外部引脚。
包括类属性语句(generic)和端口语句(port)。
1、类属性语句(GENERIC)(可选)
定义静态参数,如时间参数,总线宽度。
2、端口(PORT)

PORT(端口名 :端口模式 数据类型);

端口模式:IN
OUT
BUFFER 可以流出实体和作为内部反馈,不可作为双向端口。
INOUT 可以流入流出,可以作为内部反馈。

三、结构体architecture

结构体包括说明语句和功能描述语句
说明语句:信号,常数,数据类型,函数的定义;
功能描述:主体部分,具体描述结构体功能,位于begin,end之间。

并发处理语句包括赋值语句进程语句元件例化块语句子程序等。

四、配置configuration

可以把特定的结构体关联到一个确定的实体。比如定义了一个实体,该实体有三个结构体(a,b,c),每个结构体都有特定个功能,最后配置语句可以选择指定一个结构体(例如a)为该实体的结构体。

CONFIGURATION configuration_name OF entity_name IS --configuration_name为配置名
	FOR architecture_name --architecture_name为要配置的结构体名
	END FOR;
END configuration_name;

五、库

1、VHDL库

包括IEEE库,STD库,ASIC矢量库,WORK 库,用户自定义库。

LIBRARY library_name;--library_name为库名
USE _library_name.package_name.item_name;--library_name.package_name.item_name为包集合名(库名.包名.项目名)
2、程序包

用来存放各个设计实体都可以共享的数据类型子程序说明属性说明元件说明
程序包包括两部分,程序包首和程序包体。
程序包首:说明数据类型子程序常量原件属性属性指定
程序包体:规定实际功能。

程序包包首定义:

PACKAGE pac1 IS                            --程序包包首定义
	TYPE BYTE IS RANGE 0 TO 255;		   --定义数据类型BYTE
	SUBTYPE NIBBLE IS BYTE RANGE 0 TO 15;  --定义子类型NIBBLE 
	CONSTANT BYTE_FF:BYTE := 255;          --定义常数BYTE_FF
	SIGNAL ADDEND:NIBBLE;				   --定义信号ADDEND 
	COMPONENT BYTE_ADDER				   --定义元件BYTE_ADDER
		PORT(A,B IN BYTE);
	END COMPONENT;
	FUNCTION MY_FUNCTION (A: IN BYTE) RETURN BYTE;  --定义函数MY_FUNCTION
	END pac1;
END pac1;

程序包包体定义:

PACKAGE BODY pac1 IS
...
END pac1;
3、预定的程序包

STD_LOGIC_1164:最常用的数据包,包含一些数据类型,子类型,和函数的定义。

发布了12 篇原创文章 · 获赞 3 · 访问量 616

猜你喜欢

转载自blog.csdn.net/yang_jiangning/article/details/104982185
今日推荐