-2

この種の質問がすでに出ている場合は申し訳ありません。
私はこれについて助けを求めて数日間探していました。

パラメータ行の近くでエラーが発生しています。ERROR:HDLCompiler:806 - Syntax error near ";" と表示されます。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
4

1 に答える 1

1

State幅はStateNext2 ビットです。したがって、値 = 4 (パラメータ Z) を持つことはできません。また、各パラメータに個別の行を与えて、ビット形式で定義してみてください。

parameter W = 2'b00;
parameter X = 2'b01;
parameter Y = 2'b10;
parameter Z = 2'b11;
于 2013-04-03T05:28:23.073 に答える