2016-01-06 38 views
0

簡單地說,這條線會出現什麼問題?VHDL分配時...... else呈現語法錯誤

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 ";" 

回答

2

聽起來像是用VHDL-2002修訂版,其中併發條件信號分配格式不能被用作一個進程的聲明。

嘗試啓用VHDL-2008修訂支持(如果該工具允許),否則使用if語句或編寫自己的三元函數。

另請參閱此question and answer

對於Altera Quartus Prime ver。 15.1 VHDL輸入版本選擇如下圖所示。

enter image description here

+0

謝謝!我重寫了代碼,所以我可以將任務移出流程,這是有效的。使用Quartus II 13.0.1。我不知道VHDL支持哪些版本。無論如何,你的建議聽起來不錯,問題解決了,所以我會接受這個答案。 – Johan

+0

我認爲,Altera Quartus II ver。 13也有一定程度的VHDL-2008支持,所以你可以嘗試啓用它。查看如何在Quartus Prime版本中啓用它。 15.1,這與ver。的相似。 13.1。 –