比较std_logic_vector中的位

时间:2013-12-18 15:34:47

标签: comparison vhdl

尝试#1

overflow_next <= (op1_shifted(word_width - 1) = op2(word_width - 1)) and (result_var(word_width - 1) /= op2(word_width - 1));

错误(10327):alu.vhd(99)的VHDL错误:无法确定运算符“”=“”的定义 - 找到0个可能的定义

错误(10327):alu.vhd(99)的VHDL错误:无法确定运算符“”/ =“”的定义 - 找到0个可能的定义

尝试#2

overflow_next <= ((op1_shifted(word_width - 1) = '0') and (op2(word_width - 1) = '0') and (result_var(word_width - 1) = '1')) or ((op1_shifted(word_width - 1) = '1') and (op2(word_width - 1) = '1') and (result_var(word_width - 1) = '0'));

错误(10327):alu.vhd(99)的VHDL错误:无法确定运算符“”=“”的定义 - 找到0个可能的定义

所有信号和变量都是std_logic_vector,而word_width是一个整数泛型。这有什么问题?我可以比较独立的std_logic信号,但不能比较std_logic_vector信号的部分信息?如果我想要做的事情是不可能的话,有没有解决办法呢?

1 个答案:

答案 0 :(得分:2)

我怀疑错误报告具有误导性,您需要正确构建条件信号赋值语句,例如:

overflow_next <= '1' when (op1_shifted(word_width - 1) = op2(word_width - 1)) and (result_var(word_width - 1) /= op2(word_width - 1)) else '0';