2013-04-03 3 views
-2

이 질문 유형이 이미 유감스럽게 생각한다면 죄송합니다.
나는 이것에 대한 도움을 지금 며칠 동안 찾고있었습니다.Verilog 도움. ISE에 따른 간단한 구문 오류. FSM을 베이시스 보드에 프로그래밍하는 중

매개 변수 라인 근처에서 오류가 발생했습니다. 오류 : HDLCompiler : 806 - 구문 오류가 ";"근처에 있습니다. 및 사례 근처 다른 오류 근처 (주) 구문 오류가 "(".하지만 난 구문과의없는 오류를 느끼고있다.

`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 
+0

오류 무엇입니까? – Tim

+0

'항상 @ (posedge의 Clk 또는 posedge RST)'당신은 – Pulimon

+0

요구하지 않았다 질문. – toolic

답변

1

StateStateNext을하는 2 비트 폭. 그들은 값을 가질 수 없습니다 그래서 = 4 (매개 변수 Z) 는 또한 각 매개 변수에 대한 개별 라인을 제공 시도하고 비트 형식으로 정의합니다.

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

좋은 조언을하지만, 이것은 원래 오류의 근원이라고 생각하지 않습니다. Verilog는 조용히 4를 2'b00로 변환하고 에. –

+0

필자는 쉼표로 구분 된 매개 변수가 합법적이라고 확신합니다 (69 페이지 참조 : http://www.fpga.com.cn/hdl/training/verilog%20reference%20guide.pdf). – Tim