深入理解FPGA电子系统设计:基于Quartus Prime与VHDL的Altera FPGA设计
上QQ阅读APP看书,第一时间看更新

2.5 子程序及子程序调用语句

VHDL中的子程序包括过程(procedure)和函数(function)两类,子程序调用即调用过程或函数,并将结果赋值给信号。过程调用相当于描述语句,没有返回值,可以包含任意的in、out或inout类型参数,参数数据类型一般可用signal、variable或constant;而函数调用相当于表达式,包含多个输入参数,但只会有一个返回值,而且输入参数类型不能是variable,多使用constant。子程序调用语句都属于顺序语句的范畴,需要注意的是它们都不能使用wait语句和元件例化语句。下面分别对它们做介绍。

1. 过程(procedure)

过程用过程语句定义,其格式如下:

过程的参数可以是输入in、输出out或双向inout属性,返回值可以有多个,其返回值在声明语句中说明。

【例2.8】返回两数中的较小数值的过程描述。

2. 过程调用

过程调用语句的格式如下:

     过程名 (信号列表)

例如对于上述获取最小值的过程min的调用如下:

3. 函数(function)

函数的格式说明如下:

函数的所有参数都是in属性,返回值只有一个,在声明语句之外说明。

例如:返回两数中的较小数值的函数描述。

4. 函数调用

函数调用语句的格式如下:

     函数名 (信号列表)

例如对于上述获取最小值的函数min的调用如下:

注意如果将过程或函数集合到包(package)再利用use语句使包对设计成为可见可使用的那么就不需要再在结构体的说明部分对过程或函数进行说明而可以直接使用过程调用语句或函数调用语句进行调用即可