2016-03-31 71 views
1

我正在寫一個IP核,並取決於用戶選擇哪個通用參數並非所有OUT/IN端口都是需要的。是否有可選的端口?我知道類似的東西應該是可能的,因爲當我使用Xilinx IP-Cores時,根據參數不是所有的PORT都包含在內。VHDL中的可選端口?

+0

你是什麼意思_不是所有的港口都包括_?他們是否被VHDL生成器工具忽略了? –

+0

我再次看過它,它似乎沒有包含在由IP-Core的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