我读了许多VHDL文件头:使用ieee.std_logic_arith.all和ieee.std_logic_signed.all,我看不出这有什么好处,因为后一个包(Signed)利用了前者(Arith) )自动执行。有没有澄清它们为何一起使用?
我有同样的评论。 ieee.std_logic_unsigned.all 谢谢
答案 0 :(得分:2)
首先,当您使用包时,您不会自动导入包使用的所有包,因此如果您需要两者的功能,则需要显式使用它们。
std_logic_signed
/ unsigned
重载数学和关系运算符,将std_logic_vector
分别视为有符号/无符号数。 std_logic_arith
重载相同的运算符,但仅适用于它定义的signed
和unsigned
类型。如果要使用特定的数字类型,请使用std_logic_arith
。如果您希望将所有通用std_logic_vector
视为有符号或无符号数字,请使用其中一个。
或者实际上,不要使用任何一个,而是使用标准ieee.numeric_std
,这与std_logic_arith
完成相同的事情(您需要进行类型转换,而不是直接在{{1}上运行但是,无论如何这通常都会更好。)