0

我在执行逻辑操作时遇到问题unsigned

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;    
with sel select
s_1<=a+b when "000",
a+((not b)+1) when "001",
s_2 when "010",
s_3 when "011",
s_4 when "100",
(others=>'0') when others;

这里有一个错误:

前缀运算符“not”没有可行的条目

s_1,a,b,s_2,s_3,s_4都是类型unsigned(31 downto 0)

我找到了一个转换std_logic_vector为无符号的代码,以启用逻辑操作,std_logic_vector如果它不能在无符号上完成,但是这个代码使用numeric_std.all的时候我认为它与无符号的数据类型发生冲突std_logic_arith并使无符号的数据类型未知。

现在我不知道如何对 unsigned 执行逻辑操作,也不知道如何转换std_logic_vectorunsigned. 有人能帮我吗?

4

2 回答 2

1

您正在使用一个非标准库,use ieee.std_logic_arith.all; 它显然没有实现“非”运算符。

use ieee.numeric_std.all; 取而代之应该可以解决问题。

于 2013-02-03T21:48:19.070 回答
0

一个可怕的解决方法是xor b使用所有向量的向量......

于 2013-02-05T14:31:54.103 回答