我读了许多VHDL文件头文件:使用ieee.std_logic_arith.all和ieee.std_logic_signed.all,我看不到任何好处,因为后者包(签名)使在实施中自动使用前者(Arith)。任何澄清为什么他们一起使用?需要使用std_logic_Arith和std_logic_signed/unsigned
我有同样的评论重新。 ieee.std_logic_unsigned.all 谢谢
我读了许多VHDL文件头文件:使用ieee.std_logic_arith.all和ieee.std_logic_signed.all,我看不到任何好处,因为后者包(签名)使在实施中自动使用前者(Arith)。任何澄清为什么他们一起使用?需要使用std_logic_Arith和std_logic_signed/unsigned
我有同样的评论重新。 ieee.std_logic_unsigned.all 谢谢
首先,当你使用一个包,你不会自动导入所有的包使用的包,所以你需要,如果你想两者的功能明确同时使用。
std_logic_signed
/unsigned
重载数学和关系运算符分别将std_logic_vector
作为有符号/无符号数处理。 std_logic_arith
重载相同的操作员,但仅限于它定义的signed
和unsigned
类型。如果您要使用特定的数字类型,请使用std_logic_arith
。如果您想将所有通用std_logic_vector
s视为有符号或无符号数字,则使用其他符号。
或实际,不要既可以使用,并且使用标准ieee.numeric_std
代替,这将完成同样的事情std_logic_arith
(你将需要强制转换,而不是在std_logic_vector
直接操作,但这一般是越多越好反正)。
谢谢你的回答。你说过:如果你想使用特定的数字类型,你可以使用std_logic_arith;你能举个例子,其他数字类型在std_logic_arith中定义,而不是有符号和无符号数据类型 – user2005893 2014-11-07 00:27:39
我不是故意暗示还有其他类型。我将显式数字类型与函数重载区分开来,将泛型'std_logic_vector'隐式地视为数值类型。 – fru1tbat 2014-11-07 00:58:17
除了@ fru1tbat的建议,您还可以使用'ieee.numeric_std_ [un] signed'在VHDL-2008中获得与非标准'std_logic_ [un] signed'相同的行为。 – 2014-11-06 22:46:34