Verilog的帮助。根据ISE的简单语法错误。将FSM编程到basys板

时间:2013-04-03 01:52:23

标签: verilog xilinx fsm

很抱歉,如果此类问题已经出现。
我一直在寻找几天的帮助。

我在参数行附近收到错误。 ERROR说:HDLCompiler:806 - “;”附近的语法错误。 case(State)附近的另一个错误“(”。附近的语法错误。但我觉得它的语法不是错误。

`timescale 1ns / 1ps

module movSeven(Clk, Rst, A, an0, an1, an2, an3 );

input A;

output reg  an0, an1, an2, an3;

input Clk, Rst;

parameter W = 1, X = 2, Y = 3, Z = 4 ;

reg [1:0] State, StateNext;

always @(State, A) begin

    case(State) 
      W:begin
        an0 <= 0;
        if (A == 0)
          StateNext <= W;
        else
          StateNext <= X;
        end

     X:begin
      an1 <= 0;
      if (A == 0)
        StateNext <= X;
      else
        StateNext <= Y;
      end

    Y:begin 
      an2 <= 0;
      if (A == 0)
        StateNext <= Y;
      else
        StateNext <= X;
    end

     Z:begin
      an3 <= 0;
      if (A == 0)
        StateNext <= Z;
      else
        StateNext <= W;
    end
endcase
end

always @(posedge Clk)
begin 
    if (Rst == 1)
      State <= X;
    else
      State <= StateNext;   
    end
endmodule

1 个答案:

答案 0 :(得分:1)

StateStateNext是2位宽。所以他们不能有一个值= 4(参数Z) 另外,尝试为每个参数提供单独的行,并以位格式定义它们。

parameter W = 2'b00;
parameter X = 2'b01;
parameter Y = 2'b10;
parameter Z = 2'b11;