在其他泛型中使用VHDL泛型值

在其他泛型中使用VHDL泛型值,vhdl,Vhdl,我希望能够将多个通道指定为通用通道,并使用它来指定包含更多参数的数组的范围。编译时,我的Aldec编译告诉我,在接口列表完成之前,无法引用“num_chan” 有人知道实现这一目标的方法吗 ENTITY deframer IS generic ( num_chan : integer := 2; ch_low : int_arr(num_chan-1 downto 0) := ( 1, 189

我希望能够将多个通道指定为通用通道,并使用它来指定包含更多参数的数组的范围。编译时,我的Aldec编译告诉我,在接口列表完成之前,无法引用“num_chan”

有人知道实现这一目标的方法吗

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));
在VHDL-2002(及更早版本)中,在给定泛型中声明的形式泛型 列表不能用于声明该列表中的其他泛型,这是 您看到的错误原因

在VHDL-2008中这是可能的,因此如果所需的工具支持VHDL-2008和 该功能(“在泛型列表中引用泛型”),然后您可以指示 到使用VHDL-2008的工具

VHDL-2002的一个解决方案是使
Chu低
Chu高
阵列变大 足够容纳任何值的
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));