VHDL无符号向量与整数比较

时间:2014-04-23 19:42:10

标签: compare vhdl unsigned

在vhdl中,假设我有一个无符号向量定义如下:

signal s_col_rd_check : unsigned(7 downto 0);

现在,我是否使用以下库,

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

或以下

use ieee.numeric_std.all;

我可以使用无符号向量和整数值进行比较,如下所示吗?

some_assignment <= '1' when (s_col_rd_check < 190) else '0';

其中190只是一个整数。 如果我使用其中一个库,上述比较是否相同?

谢谢, - 鲁迪

1 个答案:

答案 0 :(得分:8)

ieee.std_logic_arithieee.std_logic_unsigned是Synopsys专有软件包,定义为IEEE VHDL标准的一部分。因此,这些软件包使用ieee库名称会产生误导,因为它们定义为IEEE标准的一部分。

快速Google search for "std_logic_arith.vhd"产生了至少三个不同版本的软件包,因此您的问题的答案可能取决于您使用的专有软件包的版本...这是一个强烈的指示,使用这些如果您希望在不同工具中具有明确定义且相同的设计行为,则专有包不是正确的方法。

因此,可靠的方法是仅使用ieee.numeric_std,它是IEEE VHDL标准的一部分,因此具有明确定义的行为。

使用use ieee.numeric_std.all;,您可以在以下位置进行比较:

some_assignment <= '1' when (s_col_rd_check < 190) else '0';

因为ieee.numeric_std定义了函数:

function "<" (L: UNSIGNED; R: NATURAL) return BOOLEAN;
相关问题