+运算符和+函数有什么区别是vhdl?
What is difference between + operator and + function is vhdl?
vhdl 中有 + 运算符用于加法运算,那么为什么我们需要添加 ieee.std_logic_unsigned 并且在这个库中有 + 函数,那么如果我们已经在 vhdl 中有 + 运算符,为什么还要定义该函数?
+
运算符与所有 VHDL 运算符一样,也有一个函数符号。 a+b
和 "+"(a,b)
完全一样。这样做的好处是您可以重载 VHDL 运算符以对默认情况下未定义的类型进行运算。只需定义一个 "+"
函数,它接受两个您自己的类型 my_type
和 voilà 的参数。您现在可以使用 a+b
,其中 a
和 b
的类型为 my_type
.
默认情况下,+
运算符未在类型 std_ulogic_vector
或 std_logic_vector
上定义。这是事实。您可以不同意这一点,但这是 VHDL 标准。因此,如果您想将它与这些类型一起使用,您需要以一种或另一种方式定义它。
ieee.std_logic_unsigned
包重载了它们的算术运算符。它不是标准包,在标准化ieee
库中没有可做的事情。 不要使用它。相反,使用标准 ieee.numeric_std
,它声明类型 unsigned
和 signed
并重载它们的算术运算符。
请注意,如 user1155120 所述,VHDL 2008 引入了几个新的综合包。其中之一是 ieee.numeric_std_unsigned
,它确实重载了被视为无符号自然整数的类型 std_ulogic_vector
上的算术运算符。
vhdl 中有 + 运算符用于加法运算,那么为什么我们需要添加 ieee.std_logic_unsigned 并且在这个库中有 + 函数,那么如果我们已经在 vhdl 中有 + 运算符,为什么还要定义该函数?
+
运算符与所有 VHDL 运算符一样,也有一个函数符号。 a+b
和 "+"(a,b)
完全一样。这样做的好处是您可以重载 VHDL 运算符以对默认情况下未定义的类型进行运算。只需定义一个 "+"
函数,它接受两个您自己的类型 my_type
和 voilà 的参数。您现在可以使用 a+b
,其中 a
和 b
的类型为 my_type
.
默认情况下,+
运算符未在类型 std_ulogic_vector
或 std_logic_vector
上定义。这是事实。您可以不同意这一点,但这是 VHDL 标准。因此,如果您想将它与这些类型一起使用,您需要以一种或另一种方式定义它。
ieee.std_logic_unsigned
包重载了它们的算术运算符。它不是标准包,在标准化ieee
库中没有可做的事情。 不要使用它。相反,使用标准 ieee.numeric_std
,它声明类型 unsigned
和 signed
并重载它们的算术运算符。
请注意,如 user1155120 所述,VHDL 2008 引入了几个新的综合包。其中之一是 ieee.numeric_std_unsigned
,它确实重载了被视为无符号自然整数的类型 std_ulogic_vector
上的算术运算符。