2017-07-17 78 views
0
module InoutConnect(
       .X1(internal), 
       .X2(internal) 
       ); 


    parameter width = 1; 

    inout [ width - 1 : 0 ] internal; 
endmodule // InoutConnect 

在上面的代碼中使用了什麼格式, 我知道雖然實例化模塊.x1用於匹配變量名稱,但模塊定義如何。 這裏是什麼意思?這個模塊的目的是什麼?

+1

請刪除VHDL標籤 –

+0

閱讀免費手冊:IEEE標準1800年至2012年,第23條模塊和層次 – toolic

回答

0

它被稱爲explicit port declaration,這意味着外部世界就會知道其明確的名稱該端口,X1X2在你的情況下,雖然在內部相同的端口會被稱爲你的情況內部

所以,在你的榜樣,你兩個端口連接到同一個內部變量(看起來對我不好:))雖然,這是可能的用途之一,特別是如果你需要相同的輸出端口。所以

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

+0

如果我想用魔杖連接輸入信號但不INOUT,可以將其以類似的方式來完成或其他方式? – user2984602

+0

'inout'是港口的**方向**。 「wand」是具有用於乘法驅動狀態的特定分辨率算法的網絡的**類型**。所以,你不能用椅子替換蘋果。默認情況下,端口的類型是** wire **(這是另一種類型)。 – Serge

0

InoutConnect模塊用於在兩個不同的信號名稱之間創建一個別名。例如

wire [7:0] color; 
wire [7:0] colour; 
InoutConnect #7 a1(color,colour); 

現在,顏色和顏色是同一信號的兩個名稱。

SystemVerilog添加alias構造來做同樣的事情,而無需創建一個單獨的模塊。

+0

如果我想使用魔杖連接輸入信號,但不能輸入,是否可以用類似的方式或其他方式完成? – user2984602

+0

不確定你的意思。可能需要一個單獨的問題。 –