在VHDL中无法对无符号执行逻辑运算?

时间:2013-02-03 19:15:37

标签: vhdl modelsim

我在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 unknown。

现在我不知道如何对无符号执行逻辑运算,我不知道如何将std_logic_vector转换为unsigned。有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您使用的是非标准库use ieee.std_logic_arith.all;,它显然没有实现“not”运算符。

use ieee.numeric_std.all;取代它可以解决问题。

答案 1 :(得分:0)

一个可怕的workround将是xor b带有所有的向量...

相关问题