如何摆脱 Verilog 中“或”附近的语法错误

时间:2021-04-12 08:30:21

标签: syntax-error task verilog

我最近开始学习 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".

1 个答案:

答案 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 上开设一个免费帐户,在那里您可以访问模拟器,这些模拟器可为您提供有关语法错误的更多具体信息。

相关问题