2014-01-30 37 views
3

我希望能夠指定多個通道作爲泛型,並使用它來指定包含更多參數的數組範圍。編譯時,我的Aldec編譯告訴我,'num_chan'不能被引用,直到接口列表完成。在其他泛型中使用VHDL泛型值

有沒有人知道一種方法來實現這一目標?

ENTITY deframer IS 
    generic (
     num_chan : integer      := 2;    
     ch_low : int_arr(num_chan-1 downto 0) := ( 1, 189); 
     ch_hi : int_arr(num_chan-1 downto 0) := (127, 189)); 
+2

請注意,該語言允許您在此處使用無約束數組。如果你在做綜合,你的綜合工具可能不會 - 你將不得不嘗試。 –

回答

3

在VHDL-2002(或更早),給定的通用 列表內聲明的正式一般不能用來聲明該列表中,這是 理由讓你看到錯誤其他仿製藥。

在VHDL-2008這是可能的,所以如果需要的工具支持VHDL-2008和 該功能(「在泛型列表引用泛型」),那麼你就可以表明 到VHDL-2008使用的工具。

一種VHDL-2002溶液,是使ch_lowch_hi陣列大 足以容納的num_chan任何值,然後填充未使用的帶 虛設值,例如(假設num_chan爲至多10,使用-1作爲虛擬值):

generic(
    num_chan : integer   := 2; 
    ch_low : int_arr_t(1 to 10) := ( 1, 189, others => -1); 
    ch_hi : int_arr_t(1 to 10) := (127, 189, others => -1));