尝试#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信号的部分信息?如果我想要做的事情是不可能的话,有没有解决办法呢?
答案 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';