VHDL无法确定运算符“+”的定义

时间:2016-05-19 17:33:58

标签: vhdl

当我尝试编译我的代码时,在以下部分中出现错误:

overflow <= input_a(15) + input_b(15);

我已将input_a和input_b声明为15位向量,而我正在使用的库是:

library ieee; 
use ieee.std_logic_1164.all;

所以错误是:

Error (10327): VHDL error at alu16.vhd(45): can't determine definition of operator ""+"" -- found 0 possible definitions

提前致谢

4 个答案:

答案 0 :(得分:3)

如果input_ainput_bstd_logic_vector,则input_a(15)input_b(15)std_logic,但VHDL没有+std_logic定义的运算符,因此错误。

如果要根据两个std_logic值生成结果,则标准逻辑运算符为andorxor和{{1}可用,这就足够了。

答案 1 :(得分:1)

如果您想执行算术运算,您应该声明signed / unsigned信号,而不是bit_vector / std_logic_vector

这些最后的类型只能用于and / or之类的逻辑运算......因为编译器不知道您是希望信号是有符号还是无符号。< / p>

使用有符号/无符号类型时,您必须使用IEEE numeric_std包。

答案 2 :(得分:0)

尝试包含未签名的库...它对我有用! 我列出了图书馆,我可以做总和

use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;

答案 3 :(得分:-1)

添加: 使用ieee.std_logic_unsigned.all; 所以你可以使用操作+ - ...与std_logic