Vhdl 错误:信号参数要求函数调用时使用信号表达式

Vhdl 错误:信号参数要求函数调用时使用信号表达式,vhdl,ghdl,Vhdl,Ghdl,简短问题: 我写了一个函数,它以一个信号整数作为参数。当我在进程中调用my_函数(INTEGER_signal-5)时,编译器抛出错误signal参数requires signal expression。 有人能给我解释一下什么是信号表达式,以及我如何正确调用这个函数吗 提前谢谢 通常,对于要改为使用常量类参数的函数 信号类参数要求您将它们连接到信号-即:无表达式。当您使用信号参数(例如“事件”)时,只需要函数内部的信号。对于一个过程,当您期望对象更新时,您还需要一个信号,例如当对象在wait语

简短问题:

我写了一个函数,它以一个信号整数作为参数。当我在进程中调用
my_函数(INTEGER_signal-5)
时,编译器抛出错误
signal参数requires signal expression
。 有人能给我解释一下什么是信号表达式,以及我如何正确调用这个函数吗


提前谢谢

通常,对于要改为使用常量类参数的函数

信号类参数要求您将它们连接到信号-即:无表达式。当您使用信号参数(例如“事件”)时,只需要函数内部的信号。对于一个过程,当您期望对象更新时,您还需要一个信号,例如当对象在wait语句中使用或在wait语句之后读取时(并且您期望一个可能更新的值)

使用常量类参数,可以将它们与该类型的任何值连接。该值可以来自表达式或文字值(X“4A”)。信号名或变量名是表达式的简单形式

常量类也恰好是未指定参数类的输入的默认值。在下面的代码中,参数A和B都是常量类参数

function fred (
   constant A : integer ; 
            B : integer
) return integer is 
 ...
end function fred ;

    

通常,对于要改为使用常量类参数的函数

信号类参数要求您将它们连接到信号-即:无表达式。当您使用信号参数(例如“事件”)时,只需要函数内部的信号。对于一个过程,当您期望对象更新时,您还需要一个信号,例如当对象在wait语句中使用或在wait语句之后读取时(并且您期望一个可能更新的值)

使用常量类参数,可以将它们与该类型的任何值连接。该值可以来自表达式或文字值(X“4A”)。信号名或变量名是表达式的简单形式

常量类也恰好是未指定参数类的输入的默认值。在下面的代码中,参数A和B都是常量类参数

function fred (
   constant A : integer ; 
            B : integer
) return integer is 
 ...
end function fred ;

    

非常感谢你。这对我有帮助!非常感谢你。这对我有帮助!当供应商不使用标准中的语言时,它没有帮助。IEEE标准1076-2008 4.2.2.1正式参数列表“在子程序调用中,实际指示符(见6.5.7.1)与类信号的形式参数相关联的名称应为表示信号的名称。与类变量形式相关联的实际指示符应为表示变量的名称。与类常量形式相关联的实际指示符应为表达式。“名称可为表达式中的主级(可独立,9.1),但是参数列表中的实际值不能是表达式。形式参数(在函数声明中)的默认类是常量。使用信号参数的唯一优点是可以访问信号的预定义属性(这需要一个作为信号指示符的前缀,因此有限制)。当供应商不使用标准中的语言时,这没有帮助。IEEE标准1076-2008 4.2.2.1正式参数列表“在子程序调用中,实际指示符(见6.5.7.1)与类信号的形式参数相关联的名称应为表示信号的名称。与类变量形式相关联的实际指示符应为表示变量的名称。与类常量形式相关联的实际指示符应为表达式。“名称可为表达式中的主级(可独立,9.1),但是参数列表中的实际值不能是表达式。形式参数(在函数声明中)的默认类是常量。使用信号参数的唯一优点是可以访问信号的预定义属性(这需要一个作为信号指示符的前缀,因此受到限制)。