0 verilog
我正在尝试编译以下代码,但每当我这样做时,我都会收到错误:
'10170 FSM.v(9) 文本“case”附近的 Verilog HDL 语法错误;期待一个操作数'
'10170 FSM.v(9) 文本“)”附近的 Verilog HDL 语法错误;预期“<=”或“=”
'10170 FSM.v(11) 文本“4”附近的 Verilog HDL 语法错误;期待“结束”
module FSM (in0, in1, in2, in3, S, out0, out1, out2, out3);
input in0, in1, in2, in3, S;
output out0, out1, out2, out3;
reg out0, out1, out2, out3;
always @(in0 or in1 or in2 or in3 or S)
begin
if(S == 0) begin
{
case({in3, in2, in1, in0})
4'b0000: {out3, out2, out1, out0} = 4'b0000; //0->0
4'b0001: {out3, out2, out1, out0} = 4'b0011; //1->3
4'b0010: {out3, out2, out1, out0} = 4'b0110; //2->6
4'b0011: {out3, out2, out1, out0} = 4'b1001; //3->9
4'b0100: {out3, out2, out1, out0} = 4'b0010; //4->2
4'b0101: {out3, out2, out1, out0} = 4'b0101; //5->5
4'b0110: {out3, out2, out1, out0} = 4'b1000; //6->8
4'b0111: {out3, out2, out1, out0} = 4'b0001; //7->1
4'b1000: {out3, out2, out1, out0} = 4'b0100; //8->4
4'b1001: {out3, out2, out1, out0} = 4'b0111; //9->7
endcase
}
end
else begin
{
case({in3, in2, in1, in0})
4'b0000: {out3, out2, out1, out0} = 4'b0111; //0->7
4'b0001: {out3, out2, out1, out0} = 4'b1000; //1->8
4'b0010: {out3, out2, out1, out0} = 4'b1001; //2->9
4'b0011: {out3, out2, out1, out0} = 4'b0000; //3->0
4'b0100: {out3, out2, out1, out0} = 4'b0001; //4->1
4'b0101: {out3, out2, out1, out0} = 4'b0010; //5->2
4'b0110: {out3, out2, out1, out0} = 4'b0011; //6->3
4'b0111: {out3, out2, out1, out0} = 4'b0100; //7->4
4'b1000: {out3, out2, out1, out0} = 4'b0101; //8->5
4'b1001: {out3, out2, out1, out0} = 4'b0110; //9->6
endcase
}
end
end
endmodule
Run Code Online (Sandbox Code Playgroud)
对于语句中找到的每一行代码,都会重复最后一个错误case。如果有人知道我出了什么问题以及如何解决这个问题,我将不胜感激。
删除条件后的大括号( {..}) if。Verilog 不是需要大括号的 C,在 Verilog 中,我们用于begin..end多行程序语句。
另外,建议使用always @(*)(或在 SystemVerilog 中)进行自动灵敏度,而不是手动灵敏度。always_combalways @(in0 or in1 or in2 or in3 or S)
您可能必须了解详细的 Verilog 语法。有关某些信息,请参阅Begin..end链接和始终敏感度问题。Verilog请参阅IEEE 1364-2001 ,SystemVerilog 请参阅IEEE 1800-2012。
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |