哪里需要input/output?

Where are input/output needed?

我在一个较早的考试示例中看到了这段代码:

module cnt512 (
input clk, R, E, output reg [8:0] q
);

这是一个有效的语法吗?我知道这些是有效的:

module cnt512 (clk, R, E, q);
input clk;
input R;
input E;
output reg [8:0] q;
module cnt512 (
    input clk,
    input R,
    input E,
    output reg [8:0] q
);

但我在任何地方都看不到更短的变体。自从我在大学考试中看到,我想他们不会犯这样的错误。

我假设你忘记了前两个分号,但除此之外它是合法的。大多数人会将不同的端口方向放在不同的行上,如下所示,但这只是为了便于阅读。如果你想减少 space.

,你可以把它全部放在一行上
module cnt512 (
  input clk, R, E,
  output reg [8:0] q
);

前一个端口的端口方向和数据类型如果未定义,则沿用到下一个端口。

参考IEEE Std 1800-2012 § 23.2.2 Port declarations for full explanation. Specific example in § 23.2.2.2 ANSI style list of port declarations. IEEE1800是SystemVerilog,Verilog的后继者。除非您回到 Verilog 1995,否则端口声明是相同的。