子程序(subprogram)定义了某种算法或功能,用于实现数据类型或其他功能的行为。包括function和procedure.
注意:子模块subprogram中的function和procedure是顺序处理的.
1.1 Function(函数)格式:
function 函数名(参数1,参数2 …...)
[定义语句]
return 数据类型名 is [定义语句]
begin
[顺序执行语句]
return [返回变量名]
end 函数名
1.2 Function 例子
function max(a,b:bit)
return boolean is variable :flag:boolean;
begin
if (a=b)then
flag<=true;
end if
return flag;
end max
2 procedure(过程)
过程没有返回值,输入数据输出结果都通过过程端口进行。
2.1 procedure(过程)格式:
procedure 过程名(参数1,参数2 …...)is
[定义语句]
begin
[顺序执行语句]
end 过程名
注:在过程的参数中可以定义输入和输出参数,且需要使用in,out或inout指明参数的方向,多个参数之间使用逗号隔开。可以不定义参数的数据范围增加其通用性,数据类型可以为constant,variable或signal.
2.2Procedure例子
procedure max(a,b:in bit;
flag:out boolean)is
begin
if (a=b)then
flag<=true;
end if
end max;