나는 20 시간 단위의 지연이있는 녹색, 노란색, 빨간색 신호등 FSM 코드를 작성하려고합니다. 그것은 녹색 - 노랑 - 빨강 - 노랑 - 녹색에서갑니다. 이것은 내 코드이며 지연에 '반복'을 사용하는 동안 오류가 발생합니다.Verilog 컴파일러 오류 : 근처 ";": 구문 오류, 예기치 않은 ';'
오류 :
Error: C:/Users/Desktop/Design/tlights.v(33): near ";": syntax error, unexpected ';'
Error: C:/Users/Desktop/Design/tlights.v(37): near ";": syntax error, unexpected ';'
Error: C:/Users/Desktop/Design/tlights.v(44): near ";": syntax error, unexpected ';'
`define delay 20;
module tlights(clk, rst, y);
input clk, rst;
output [1:0]y;
reg [1:0]y;
reg [1:0] cs,ns;
integer p;
parameter red = 2'd2;
parameter orange = 2'd1;
parameter green = 2'd0;
parameter s0 = 2'd0;
parameter s1 = 2'd1;
parameter s2 = 2'd2;
[email protected](posedge clk or negedge rst)
begin
if(!rst)
begin
cs<=s0;
end
else
cs<=ns;
end
[email protected](cs)
begin
case(cs)
s0: begin
repeat (`delay) @(posedge clk); // <-- Error here
ns=s1;
end
s1: begin
repeat (`delay) @(posedge clk); // <-- Error here
if (p==0)
ns =s2;
else
ns=s0;
end
s2: begin
repeat (`delay) @(posedge clk); // <-- Error here
ns<=s1;
end
default: ns<=s0;
endcase
end
[email protected] (cs)
begin
case(cs)
s0:begin
y<=2'b00;
p<=0;
end
s1:y<=2'b01;
s2:begin
y<=2'b10;
p<=1;
end
endcase
end
endmodule
가까운 투표 수를 검토하는 사람들에게. 버그는 "간단한 인쇄"이며, 정의에 따라 본질적으로 디버깅하기가 어렵습니다. 컴파일러는 매크로가 사용되는 라인의 오류만을 명시하고 매크로 자체의 오류에 대해서는 적중을 거의주지 않습니다. 중복 된 질문이없는 한이 질문을 열어 두는 것이 좋습니다. – Greg