2017-04-23 139 views
0

我打算使用fpga板通過vga在屏幕上顯示圖形對象。在下面的代碼中,「標誌」只有1位。我想要達到的是當「旗幟」是1時,我使某個區域變成一種顏色;當「標誌」爲0時,它顯示另一種顏色。 Verilog ISE一直告訴我在下面的代碼中的「else」語句附近有一個錯誤(中間的「else」)。任何人都可以告訴我爲什麼?Verilog:錯誤:HDLCompiler:806 - 第117行:「else」附近的語法錯誤

 if (vc >= (groundTop) && vc < (groundBottom)) 
      begin 
       red = 3'b111; 
       green = 3'b111; 
       blue = 2'b11; 
      end 
     // player level 
     else if (vc >= (groundTop-playerSize) && vc < groundTop) 
      begin 

       if (flag==1) 
        begin 
         if (hc >= (hbp+p1nbr*playerMove-playerMove*p1nbl) && hc < (hbp+playerSize+p1nbr*playerMove-playerMove*p1nbl)) 
          begin 
           red = 0; 
           green = 0; 
           blue = 0; 
          end 
         else 
          begin 
           red = 3'b000; 
           green = 3'b111; 
           blue = 2'b11; 
          end 
        end 

       else 
        begin 
         else if (hc >= (hbp+p1nbr*playerMove-playerMove*p1nbl) && hc < (hbp+playerSize+p1nbr*playerMove-playerMove*p1nbl)) 
          begin 
           red = 3'b111; 
           green = 3'b111; 
           blue = 2'b00; 
          end 
         else 
          begin 
           red = 3'b000; 
           green = 3'b111; 
           blue = 2'b11; 
          end 
        end 
      end 
     //sky 
     else 
      begin 
       red = 3'b000; 
       green = 3'b111; 
       blue = 2'b11; 
      end 

以下是錯誤的樣子。

ERROR:HDLCompiler:806 - "U:/public/work/ECEG_240/NERP_demo/vga640x480.v" Line 117: Syntax error near "else". 
ERROR:ProjectMgmt - 1 error(s) found while parsing design hierarchy. 
+0

歡迎來到Stack Overflow。哪個'else'導致錯誤?有很多(甚至「中間」)。請發佈[MCVE](https://stackoverflow.com/help/mcve)。 –

回答

0

的問題是與

else if (hc >= (hbp+p1nbr*playerMove-playerMove*p1nbl) && hc < (hbp+playerSize+p1nbr*playerMove-playerMove*p1nbl)) 沒有理由爲是一個else if。相反,它應該是一個簡單的if,因爲如果要匹配else則沒有另一個。

+0

謝謝!這正是問題所在! – PrGxw