verilog 赋值问题,编译通不过

always @(state)
begin
case(state)
ABout :sw1=1'b0, sw2=1'b0,da10=2'b01, db10=2'b01;
Ain :sw1=1'b0, sw2=1'b0,da10=2'b01, db10=2'b01;
Astop :sw1=1'b1, sw2=1'b1,da10=2'b00, db10=2'b01;
Bin :sw1=1'b1, sw2=1'b1,da10=2'b01, db10=2'b01;
Bstop :sw1=1'b0, sw2=1'b0,da10=2'b01, db10=2'b00;
default:sw1=x, sw2=x,da10=xx, db10=xx;
endcase
end

语句之间要用分号,不能用逗号的。请把“逗号”改成“分号”
还有这种单纯的赋值建议使用非阻塞赋值——"<="。
望采纳~欢迎追问~追问

不对,还是编译错误。 sw2<=1'b0;da10<=2'b01; db10<=2'b01;。是不是因为位数不一样呢etcnt.v:63: Syntax in assignment statement l-value.

追答

每个状态机都加上begin 和 end,再试试看如下:
ABout : begin sw1=1'b0;sw2=1'b0,da10=2'b01;db10=2'b01;end

欢迎追问~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-11
always @(state)
begin
case(state)
ABout :begin sw1=1'b0; sw2=1'b0;da10=2'b01; db10=2'b01;end
Ain :begin sw1=1'b0;sw2=1'b0;da10=2'b01; db10=2'b01;end
Astop :begin sw1=1'b1; sw2=1'b1;da10=2'b00; db10=2'b01;end
Bin :begin sw1=1'b1; sw2=1'b1;da10=2'b01; db10=2'b01;end
Bstop :begin sw1=1'b0; sw2=1'b0;da10=2'b01; db10=2'b00;end
default:begin sw1=x; sw2=x;da10=xx; db10=xx;end
endcase
end
相似回答