如何摆脱 Verilog 中 "or" 附近的语法错误

How to get rid of Syntax error near "or" in Verilog

我最近开始学习 Verilog。
我正在尝试使用 task

构建 Full Adder
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".

您不得将实例放在 task 内;他们应该在 module 中。此外,您应该从 output 端口中删除 reg 类型,并将内部 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 上开设一个免费帐户,在那里您可以访问模拟器,它会为您提供有关语法错误的更多具体信息。