2015-05-09 87 views
0

我们一直在我们的VHDL代码中有一个非常奇怪的,但简单的时声明错误,现在我们已经尝试了所有我们能想到的,但程序仍然抱怨语法错误(接近第一个“when”)。VHDL奇怪的当语句错误(语法)

ALUsource <= '0'; 
      with FuncCode select 
        ALUcontrol <= "10" when "0x20", 
            "10" when "0x22", 
            "00" when "0x24", 
            "01" when "0x25", 
            "11" when "0x2A", 
            "00" when others; 

      with FuncCode select 
        SubFlag <=  '1' when "0x22", 
            '0' when others; 

      with FuncCode select 
        W_ena <=  '1' when "0x20", 
            '1' when "0x22", 
            '1' when "0x24", 
            '1' when "0x25", 
            '1' when "0x2A", 
            '0' when others; 


    when OPcode /= "000000" 
      with OPcode select 
        ALUcontrol <= "10" when "0x08", 
            "11" when "0x0A", 
            "00" when others; 
+0

你确定错误是在第一个“什么时候”,而不是在第十五?没有错误信息,也没有行号,除了你可以做的所有人都是...猜。 –

+0

哪个语句带'when'?没有人能够至少看到声明('FuncCode','OpCode','ALUcontrol','SubFlag'和'W_ena')来评估这些选定的信号分配。向我们显示实际和完整的错误消息。语法错误有时可能需要查看整个设计单元。这不是[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – user1155120

回答

0

正如先前的评论说,这个例子是不完整的,因此很难判断错误所在,但我采取了猜测和建议编写

when OPcode /= "000000" =>

,而不是

when OPcode /= "000000"