Simplement, quel serait le problème avec cette ligne?
zero <= "1" when alu_out = "00000000" else "0";
C'est dans un processus. zero
est std_logic
et alu_out
est std_logic_vector(7 downto 0)
. Les deux sont définis dans l'entité et l'affectation est effectuée dans l'architecture. L'erreur est:
Error (10500): VHDL syntax error at alu.vhd(27) near text "when"; expecting ";"
Réponses:
2 pour la réponse № 1Cela ressemble à l’utilisation de la révision VHDL-2002, dans laquelle le format d’affectation du signal conditionnel simultané ne peut pas être utilisé comme une instruction dans un processus.
Essayez d'activer le support de révision VHDL-2008 si l'outil le permet, sinon utilisez un if
déclaration ou écrivez votre propre fonction ternaire.
Voir aussi ceci question et réponse.
Pour Altera Quartus Prime ver. 15.1 La sélection de la version d'entrée VHDL est illustrée dans la figure ci-dessous.