- 深入理解FPGA电子系统设计:基于Quartus Prime与VHDL的Altera FPGA设计
- 李莉
- 551字
- 2025-02-26 22:36:54
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语句使包对设计成为可见、可使用的,那么就不需要再在结构体的说明部分对过程或函数进行说明,而可以直接使用过程调用语句或函数调用语句进行调用即可。