I can't handle this error in my Verilog code: "error: malformed statement"
I can't handle this error in my Verilog code: "error: malformed statement"
"main.v:38: 错误:语句格式错误"。 在Adder模块调用.
我想在 Verilog 中实现 ALU,但我遇到了这个错误。
即使是 Whosebug 的上一个问题也帮不了我。
module Adder(A, B, Cin, S, Cout);
input A, B, Cin;
output reg S, Cout;
always @(*)
begin
S = (A ^ B) ^ Cin;
Cout = (A & B) | (A & Cin) | (B & Cin);
end
endmodule
module ALU(op1, op2, opCode, Cin, Res, cFlag, zFlag, oFlag);
input [31 : 0] op1, op2;
input [3 : 0] opCode;
input Cin;
output [31 : 0] Res;
output cFlag, zFlag, oFlag;
integer i;
wire Cout;
always @(*) begin
if(opCode == 4'b1001) begin
for(i = 0; i < 32; i = i + 1) begin
Adder adder(op1[i], op2[i], Cin, Res[i], Cout);
case(Cout)
1'b1 : Cin = 1'b1;
1'b0 : Cin = 1'b0;
endcase
end
end
end
endmodule
不能在 always 块中实例化模块。如果您需要一个模块的多个实例,请使用带有 for 循环的生成。您可以完全不使用循环来实例化模块。我可能首先使用两个模块来执行此操作只是为了让它工作,然后进行更改以获得设计所需的数字(在本例中为 32)。
所有模块都在仿真的细化阶段静态实例化,仅一次,时间在 t=0 之前。没有动态创建模块。
您可能会发现这对这个问题和类似问题有帮助:
https://www.amiq.com/consulting/2014/10/01/what-goes-where-in-systemverilog/
always 块不是此图表上的 'container'。
"main.v:38: 错误:语句格式错误"。 在Adder模块调用.
我想在 Verilog 中实现 ALU,但我遇到了这个错误。
即使是 Whosebug 的上一个问题也帮不了我。
module Adder(A, B, Cin, S, Cout);
input A, B, Cin;
output reg S, Cout;
always @(*)
begin
S = (A ^ B) ^ Cin;
Cout = (A & B) | (A & Cin) | (B & Cin);
end
endmodule
module ALU(op1, op2, opCode, Cin, Res, cFlag, zFlag, oFlag);
input [31 : 0] op1, op2;
input [3 : 0] opCode;
input Cin;
output [31 : 0] Res;
output cFlag, zFlag, oFlag;
integer i;
wire Cout;
always @(*) begin
if(opCode == 4'b1001) begin
for(i = 0; i < 32; i = i + 1) begin
Adder adder(op1[i], op2[i], Cin, Res[i], Cout);
case(Cout)
1'b1 : Cin = 1'b1;
1'b0 : Cin = 1'b0;
endcase
end
end
end
endmodule
不能在 always 块中实例化模块。如果您需要一个模块的多个实例,请使用带有 for 循环的生成。您可以完全不使用循环来实例化模块。我可能首先使用两个模块来执行此操作只是为了让它工作,然后进行更改以获得设计所需的数字(在本例中为 32)。
所有模块都在仿真的细化阶段静态实例化,仅一次,时间在 t=0 之前。没有动态创建模块。
您可能会发现这对这个问题和类似问题有帮助:
https://www.amiq.com/consulting/2014/10/01/what-goes-where-in-systemverilog/
always 块不是此图表上的 'container'。