在其他泛型中使用VHDL泛型值
我希望能够将多个通道指定为通用通道,并使用它来指定包含更多参数的数组的范围。编译时,我的Aldec编译告诉我,在接口列表完成之前,无法引用“num_chan” 有人知道实现这一目标的方法吗在其他泛型中使用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
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));