vhdl中有+运算符以进行加法运算,那么为什么我们需要添加ieee.std_logic_unsigned,并且在此库中有+的函数,所以如果在vhdl中已经有+运算符,那么为什么要定义该函数?
+
像所有VHDL运算符一样,该运算符也具有功能标记。a+b
并"+"(a,b)
完全相同。这样做的好处是,您可以使VHDL运算符重载,以对默认情况下未为其定义的类型进行运算。只需定义一个"+"
函数,该函数接受您自己的类型my_type
和voilà的两个参数。您现在可以使用a+b
wherea
和b
type了my_type
。
该+
操作不是默认的类型定义std_ulogic_vector
或std_logic_vector
。这是事实。您可以不同意这一点,但这是VHDL标准。因此,如果要与这些类型一起使用它,则需要以一种或另一种方式定义它。
该ieee.std_logic_unsigned
包超载对他们的算术运算符。它不是标准软件包,在标准化库中没有任何关系ieee
。千万不能使用它。改用standard ieee.numeric_std
,它声明类型unsigned
并signed
在其上重载算术运算符。
请注意,如user1155120所述,VHDL 2008引入了几个新的综合程序包。其中之一是ieee.numeric_std_unsigned
,并且确实在算术运算符上重载了std_ulogic_vector
被视为无符号自然整数的类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句