2016-03-31 12 views
1

私はIPコアを書いていますが、ユーザーが選択する汎用パラメータに応じて、すべてのOUT/INポートが必要であるとは限りません。オプションのポートを持つことは可能ですか?私はXilinx IPコアを使用する場合、すべてのPORTが含まれているわけではないため、同様のことが可能であることを知っています。オプションのVHDLのPORT?

+0

すべてのポートが含まれているとはどういう意味ですか?それらはVHDLジェネレータツールによって放棄されていますか? –

+0

私はもう一度調べてみましたが、IPコアのVivadoラッパーによって自動的に生成されたPORTには含まれていませんが、ラッパーのコンポーネント宣言には含まれているようです。 IPコアで同じことが起こるのであれば私は不思議です。 – refDL

答えて

4

ポートはオプションではありませんが、ポートの使用方法はデザイナーの場合と同じです。

マッピングされていない(使用されている)入力ポートは、エンティティ内にデフォルト値を持つ必要があり、出力ポートはマップされないままにすることができます。

エンティティは、例えばように宣言された場合:

entity mdl_sub is 
    generic(
    A_C_USE : boolean := FALSE; 
    B_D_USE : boolean := FALSE); 
    port(
    clk_i : in std_logic; 
    rst_i : in std_logic; 
    a_i : in std_logic := 'X'; 
    b_i : in std_logic := 'X'; 
    c_o : out std_logic; 
    d_o : out std_logic); 
end entity; 

そしてモジュールは、ポートの使用は、構成に基づいて異なることができる以下のような異なる構成で使用することができる。

-- Using port a_i and c_o 
mdl_sub_0 : entity work.mdl_sub 
    generic map(
    A_C_USE => TRUE) 
    port map(
    clk_i => clk_i, 
    rst_i => rst_i, 
    a_i => m0_a_i, 
    c_o => m0_c_o); 

-- Using port b_i and d_o 
mdl_sub_1 : entity work.mdl_sub 
    generic map(
    B_D_USE => TRUE) 
    port map(
    clk_i => clk_i, 
    rst_i => rst_i, 
    b_i => m1_b_i, 
    d_o => m1_d_o); 

すべての信号とポートはstd_logicです。

+1

それはGENERATEステートメントに似た素晴らしい解決策です。うまくいけば、Vivadoはポートが使用されていないという警告で私に迷惑をかけません – refDL

+1

....それは:( – Paebbels