在vhdl中有+操作符到加法操作中,那么为什么我们需要添加ieee.std_logic_unsigned,而在这个库中有函数for +,那么如果我们已经在vhdl中定义了+运算符,为什么定义这个函数呢?
发布于 2016-08-21 07:30:16
+操作符和所有的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类型上的算术运算符,它被认为是无符号的自然整数。
https://stackoverflow.com/questions/39061800
复制相似问题