2015-12-20 101 views
1

我看到這個代碼在一個較舊的考試例如:哪裏需要輸入/輸出?

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 
); 

但我不能在任何地方看到,較短的變體。由於我在大學考試中看到它,我不認爲他們犯了這樣的錯誤。

回答

1

我假設你忘記了前兩個分號,但否則它是合法的。大多數人會在不同的線路上放置不同的端口方向,如下圖所示,但這只是爲了便於閱讀。如果你想減少空間,你可以把它放在一條線上。

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

如果未定義,上一個端口的端口方向和數據類型會轉移到下一個端口。

參考IEEE Std 1800-2012 § 23.2.2 港口聲明充分說明。 §的具體示例23.2.2.2 ANSI樣式的端口聲明列表。 Verilog的後繼者SystemVerilog是IEEE1800。除非您回到Verilog 1995,否則端口聲明是相同的。