我最近开始学习 Verilog。
我正在尝试使用 Full Adder
task
task fullAdder(input a, b, c_in, output reg sum, c_out);
reg x, y, z;
begin
halfAdder H1(x, y, a, b);
halfAdder H2(sum, z, c_in, x);
or M3(c_out, y, z);
end
endtask
task halfAdder(input a, b, output sum, c_out);
xor M1(sum, a, b);
and M2(c_out, a, b);
endtask
我不知道我的代码有什么问题,但它给出了如下错误:
Syntax error near "or".
Syntax error near "xor".
Syntax error near "and".
答案 0 :(得分:0)
您不得将实例放置在 task
内;它们应该在 module
中。此外,您应该从 reg
端口中删除 output
类型,并将内部 reg
更改为 wire
:
module fullAdder(input a, b, c_in, output sum, c_out);
wire x, y, z;
begin
halfAdder H1(x, y, a, b);
halfAdder H2(sum, z, c_in, x);
or M3(c_out, y, z);
end
endmodule
module halfAdder(input a, b, output sum, c_out);
xor M1(sum, a, b);
and M2(c_out, a, b);
endmodule
您可以在 edaplayground 上开设一个免费帐户,在那里您可以访问模拟器,这些模拟器可为您提供有关语法错误的更多具体信息。