2015-05-09 64 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"