module InoutConnect(
.X1(internal),
.X2(internal)
);
parameter width = 1;
inout [ width - 1 : 0 ] internal;
endmodule // InoutConnect
在上面的代碼中使用了什麼格式, 我知道雖然實例化模塊.x1用於匹配變量名稱,但模塊定義如何。 這裏是什麼意思?這個模塊的目的是什麼?
module InoutConnect(
.X1(internal),
.X2(internal)
);
parameter width = 1;
inout [ width - 1 : 0 ] internal;
endmodule // InoutConnect
在上面的代碼中使用了什麼格式, 我知道雖然實例化模塊.x1用於匹配變量名稱,但模塊定義如何。 這裏是什麼意思?這個模塊的目的是什麼?
它被稱爲explicit port declaration
,這意味着外部世界就會知道其明確的名稱該端口,X1和X2在你的情況下,雖然在內部相同的端口會被稱爲你的情況內部。
所以,在你的榜樣,你兩個端口連接到同一個內部變量(看起來對我不好:))雖然,這是可能的用途之一,特別是如果你需要相同的輸出端口。所以
module m(
output .arr1(array[2:0]),
output .arr2(array[7:3]),
input logic [7:0] input_array
)
logic [7:0] array;
...
always_ff @(posedge clk)
array <= input_array;
...
endmodule
,上面可以在內部使用數組作爲整體,但它會在外部世界不同的表示:另一個例子是重新映射的內部結構或陣列到多個potrts。
有關更多信息,請參閱23.2.2.2 ANSI style list of port declarations
。
如果我想用魔杖連接輸入信號但不INOUT,可以將其以類似的方式來完成或其他方式? – user2984602
'inout'是港口的**方向**。 「wand」是具有用於乘法驅動狀態的特定分辨率算法的網絡的**類型**。所以,你不能用椅子替換蘋果。默認情況下,端口的類型是** wire **(這是另一種類型)。 – Serge
InoutConnect模塊用於在兩個不同的信號名稱之間創建一個別名。例如
wire [7:0] color;
wire [7:0] colour;
InoutConnect #7 a1(color,colour);
現在,顏色和顏色是同一信號的兩個名稱。
SystemVerilog添加alias
構造來做同樣的事情,而無需創建一個單獨的模塊。
如果我想使用魔杖連接輸入信號,但不能輸入,是否可以用類似的方式或其他方式完成? – user2984602
不確定你的意思。可能需要一個單獨的問題。 –
請刪除VHDL標籤 –
閱讀免費手冊:IEEE標準1800年至2012年,第23條模塊和層次 – toolic