2 的补充 std_logic_vector 到无符号数

问题描述

我有一个 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 的补码中编码/表示的给定 4 位转换为 3 位二进制编码的二进制值?

我被宽度卡住了...

解决方法

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

要了解我刚刚写的内容,请查看 this site 中的表格。

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