VHDL无符号向量与整数比较

Rud*_*y01 4 unsigned compare vhdl

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

signal s_col_rd_check : unsigned(7 downto 0);
Run Code Online (Sandbox Code Playgroud)

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

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
Run Code Online (Sandbox Code Playgroud)

或者以下

use ieee.numeric_std.all;
Run Code Online (Sandbox Code Playgroud)

我可以使用我的无符号向量和整数值之间的比较,如下所示?

some_assignment <= '1' when (s_col_rd_check < 190) else '0';
Run Code Online (Sandbox Code Playgroud)

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

谢谢, - 鲁迪

Mor*_*mer 8

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

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

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

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

some_assignment <= '1' when (s_col_rd_check < 190) else '0';
Run Code Online (Sandbox Code Playgroud)

ieee.numeric_std定义功能:

function "<" (L: UNSIGNED; R: NATURAL) return BOOLEAN;
Run Code Online (Sandbox Code Playgroud)