VHDL 赋值 when ... else 呈现语法错误

VHDL assignment when ... else renders syntax error

很简单,这条线有什么问题吗?

zero <= '1' when alu_out = "00000000" else '0';

它在一个进程中。 zerostd_logicalu_outstd_logic_vector(7 downto 0)。两者都在实体中定义,并在体系结构中进行分配。错误是:

Error (10500): VHDL syntax error at alu.vhd(27) near text "when";  expecting ";"

听起来像是在使用 VHDL-2002 修订版,其中并发条件信号分配格式不能用作进程中的语句。

如果工具允许,请尝试启用 VHDL-2008 修订版支持,否则请使用 if 语句或编写您自己的三元函数。

另请参阅此 question and answer

对于 Altera Quartus Prime 版本。 15.1 VHDL输入版本选择如下图