问题描述
我有一个 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 包。它带有 signed
和 unsigned
类型。您现在可以将 std_logic_vector
强制转换为这些类型之一(我仍然不确切知道您要做什么,但这个解释对您来说应该足够了)然后比较值是更大还是更小比 2.
要了解我刚刚写的内容,请查看 this site 中的表格。
如果我猜错了,并且您想将数字从 2 的补码转换为二进制,请参阅已接受的 this question 答案。简而言之,就是取反,加1,剪掉符号位。