为什么我会语法错误?

时间:2018-08-12 14:04:53

标签: syntax verilog

我想使我的zed板上的LED从一侧闪烁到另一侧,这是我的代码:

module blinky(
    input wire clk,
    input wire reset,
    input wire direction,
    output reg [7:0] leds
    );

always @(posedge clk) begin 


                    if (reset==1) begin
                    // reset the leds to the default state
                        leds <=1;

                    end
                    else begin 
                          // move the light from right to left 
                          if (direction == 1)
                          // standard way to do a rotation in Verilog 
                              leds<= {leds[6:0],leds[7]};
                          end 

            // move the light from left to right 
            else begin 
            leds <= {leds[0],leds[6:1]};
           end
         end

    end


endmodule

我何时写此陈述:

  

否则开始               leds <= {leds [0],leds [6:1]};结束

我得到语法错误。我不明白为什么。谁能帮助我正确使用语法?我在Google上搜索后发现了几种方法,但都给了我同样的错误。

1 个答案:

答案 0 :(得分:2)

我认为您在begin之后忘记了if (direction == 1)

很难发现的原因之一是您的缩进很不稳定。


编码轮廓非常个人化。 我更喜欢begin与我的end一致,因为编辑器给 一个不错的匹配行。 我还使用3个空格作为缩进,因为使用深缩进无法追踪 一切都在哪里。但是正如我所说的,这是个人的:

enter image description here