2 的补码 std_logic_vector 到无符号数

2's complement std_logic_vector to unsigned number

我有一个 4 位 std_logic_vector,其值以 2 的补码表示。我想提取它的无符号值

signal FOURbits_2scomplement : std_logic_vector(3 downto 0);

signal THREEbits_number : unsigned(2 downto 0);

THREEbits_number <= what_to_do(FOURbits_2scomplement); -- here !

我们如何将 2 的补码中 encoded/represent 的给定 4 位转换为 3 位二进制编码的二进制值?

我被宽度卡住了...

我建议您使用 numeric_std-package。它带有 signedunsigned 类型。您现在可以将 std_logic_vector 转换为其中一种类型(我仍然不知道您要做什么,但这个解释对您来说应该足够了),然后比较该值是更大还是更小比 2.

要了解我刚刚写的内容,请查看 this site 上的 table。

如果我理解错了,你想将数字从 2 的补码转换为二进制,请参阅 this question 的已接受答案。简而言之,就是取反,加1,去掉符号位。