verilog编程出现错误 Error (10170): Verilog HDL syntax error at SHUDIAN.v(17) near text "="

module fsm (clk,reset,in,out);
input clk,reset,in;
output out;
reg current_state,next_state;
reg q;

always @(posedge clk)
begin
if(!reset) current_state=s0;
else current_state=next_state;
end
always @(current_state or in or q)
begin
case(current_state)
s0:
out=0;
q=0;
if(in)
begin
next_state=s0;
end
else
begin
next_state=s1;
end
s1:
out=0;
if(q>9999)
begin
next_state=s2;
end
else
begin
q=q+1;
end
s2:
out=0;
q=0;
if(in)
begin
next_state=s0;
end
else
begin
next_state=s3;
end
s3:
out=1;
q=0;
if(!in)
begin
next_state=s3;
end
else
begin
next_state=s4;
end
s4:
out=1;
if(q>9999)
begin
next_state=s5;
end
else
begin
q=q+1;
end
s5:
q=0;
if(in)
begin
next_state=s0;
end
else
begin
next_state=s3;
end
endcase
end
endmodule

Error (10170): Verilog HDL syntax error at SHUDIAN.v(17) near text "="

Error (10170): Verilog HDL syntax error at SHUDIAN.v(28) near text "if"; expecting "endcase", or an identifier ("if" is a reserved keyword ), or a number, or a system task, or "(", or "{", or unary operator

错误还是挺多的吧,最大的问题应该是状态机,形式是对的但是没有理解所以"="和"<="用错了,一开始的状态机初始化输出沿触发,是要用"<="的,状态机case里面都是点评触发,所以用"=",用错了很容易仿真和调试中都出现毛刺。
第二,每一个case下面要用begin end,
第三,寄存器型最好初始化,养成习惯吧。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-02
根据它提示的找找错误,1应该是17行附近有verilog hdl不支持的符号,比如分号等可能不是英文输入法下,仔细检查一下;2明显的错误是你没有加endcase。别的你自己看看
相似回答