错误(10170):TrafficLight.v(59)文本附近的Verilog HDL语法错误;“endcase”;;期待;完";
我是veriloghdl的新手,我在veriloghdl中遇到了这个错误错误(10170):TrafficLight.v(59)文本附近的Verilog HDL语法错误;“endcase”;;期待;完";,verilog,Verilog,我是veriloghdl的新手,我在veriloghdl中遇到了这个错误 Error (10170): Verilog HDL syntax error at TrafficLight.v(59) near text "endcase"; expecting "end" 谁能告诉我怎么了 我的代码是 module TrafficLight(t, state, next_state, clk, out); input t, clk; output out; localparam s0=3'b
Error (10170): Verilog HDL syntax error at TrafficLight.v(59) near text "endcase"; expecting "end"
谁能告诉我怎么了
我的代码是
module TrafficLight(t, state, next_state, clk, out);
input t, clk;
output out;
localparam s0=3'b000, s1=3'b001, s2=3'b010, s3=3'b011, s4=3'b100, s5=3'b101;
reg[2:0] state, next_state, tt;
always@(posedge clk)
begin
case(state)
3'b000:
if(tt < 5)
next_state = s0;
else
begin
next_state = s1;
assign out [5:0] = 6'b100001;
end
3'b001:
if(tt < 1)
next_state = s1;
else
begin
next_state = s2;
assign out [5:0] = 6'b010001;
end
3'b010:
if(tt < 1)
next_state = s2;
else
begin
next_state = s3;
assign out [5:0] = 6'b001001;
end
3'b011:
if(tt < 5)
next_state = s3;
else
begin
next_state = s4;
assign out [5:0] = 6'b001100;
end
3'b100:
if(tt < 1)
next_state = s4;
else
begin
next_state = s5;
assign out [5:0] = 6'b001010;
end
3'b101:
if(tt < 1)
next_state = s0;
else
begin
next_state = s5;
assign out [5:0] = 6'b001001;
end
endcase
always@(posedge clk);
begin
state = next_state;
tt = tt - 1;
end
endmodule
模块交通灯(t、状态、下一状态、clk、out);
输入t,时钟;
输出;
局部参数s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101;
reg[2:0]状态,下一个_状态,tt;
始终@(posedge clk)
开始
案件(州)
3'b000:
如果(tt<5)
下一个_状态=s0;
其他的
开始
下一个_状态=s1;
分配出[5:0]=6'b100001;
结束
3'b001:
if(tt<1)
下一个_状态=s1;
其他的
开始
下一个_状态=s2;
分配出[5:0]=6'b010001;
结束
3'b010:
if(tt<1)
下一个_状态=s2;
其他的
开始
下一个状态=s3;
分配出[5:0]=6'b001001;
结束
3'b011:
如果(tt<5)
下一个状态=s3;
其他的
开始
下一个_状态=s4;
分配出[5:0]=6'b001100;
结束
3'b100:
if(tt<1)
下一个_状态=s4;
其他的
开始
下一状态=s5;
分配出[5:0]=6'b001010;
结束
3'b101:
if(tt<1)
下一个_状态=s0;
其他的
开始
下一状态=s5;
分配出[5:0]=6'b001001;
结束
尾声
始终@(posedge clk);
开始
状态=下一个状态;
tt=tt-1;
结束
端模
我认为错误发生在endcase和endmodule行上。我想我必须用一些东西来结束它们。您的代码中有几个错误- 你错过了“结束”语句后的“结束”。在case语句之前,begin块需要end 您在always块声明中添加了“;”
always@(posedge clk);
begin
state = next_state;
tt = tt - 1;
end
在always块中不需要“;”
module TrafficLight(t, state, next_state, clk, out);
input t, clk;
output out;
localparam s0=3'b000, s1=3'b001, s2=3'b010, s3=3'b011, s4=3'b100, s5=3'b101;
reg[2:0] state, next_state, tt;
在上面的代码片段中,我看到您添加了“state”和“next_state”作为模块的端口,但没有为它们指定任何方向。将其作为端口删除,或将其作为“输入”或“输出”
在输出reg时,还需要删除“assign”语句。因为它位于程序块内,所以这里不需要“赋值”
你可以找到你的代码的所有更新,但是你的第一个
开始
缺少一个结束
。在我应用了这些修复错误(10170):TrafficLight.v(62)的Verilog HDL语法错误,靠近文本“always”;期待一个描述我尝试了你所有的建议,我仍然有这个错误。这个答案将修复编译错误,但仍然存在运行时问题。同步逻辑应该分配非阻塞(Yes Greg)。我只打算解决编译错误。感谢您指出这一点。显然,解决运行时错误还需要一些更新。