需要将std_logic_Arith与std_logic_signed / unsigned一起使用

时间:2014-11-06 17:02:57

标签: vhdl

我读了许多VHDL文件头:使用ieee.std_logic_arith.all和ieee.std_logic_signed.all,我看不出这有什么好处,因为后一个包(Signed)利用了前者(Arith) )自动执行。有没有澄清它们为何一起使用?

我有同样的评论。 ieee.std_logic_unsigned.all 谢谢

1 个答案:

答案 0 :(得分:2)

首先,当您使用包时,您不会自动导入包使用的所有包,因此如果您需要两者的功能,则需要显式使用它们。

std_logic_signed / unsigned重载数学和关系运算符,将std_logic_vector分别视为有符号/无符号数。 std_logic_arith重载相同的运算符,但仅适用于它定义的signedunsigned类型。如果要使用特定的数字类型,请使用std_logic_arith。如果您希望将所有通用std_logic_vector视为有符号或无符号数字,请使用其中一个。

或者实际上,不要使用任何一个,而是使用标准ieee.numeric_std,这与std_logic_arith完成相同的事情(您需要进行类型转换,而不是直接在{{1}上运行但是,无论如何这通常都会更好。)