VHDL 赋值 when ... else 呈现语法错误
VHDL assignment when ... else renders syntax error
很简单,这条线有什么问题吗?
zero <= '1' when alu_out = "00000000" else '0';
它在一个进程中。 zero
是 std_logic
而 alu_out
是 std_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输入版本选择如下图
很简单,这条线有什么问题吗?
zero <= '1' when alu_out = "00000000" else '0';
它在一个进程中。 zero
是 std_logic
而 alu_out
是 std_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输入版本选择如下图