Verilog:错误:HDLCompiler:806 - 第117行:“else”附近的语法错误

问题描述:

我打算使用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)。 –

的问题是与

else if (hc >= (hbp+p1nbr*playerMove-playerMove*p1nbl) && hc < (hbp+playerSize+p1nbr*playerMove-playerMove*p1nbl)) 没有理由为是一个else if。相反,它应该是一个简单的if,因为如果要匹配else则没有另一个。

+0

谢谢!这正是问题所在! – PrGxw