2014-01-30 40 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));