Generics 如何在for generate块中推断变量名?

Generics 如何在for generate块中推断变量名?,generics,for-loop,vhdl,Generics,For Loop,Vhdl,在旧的VHDL设计中,组件具有通用端口: component adc_model is generic( RADC_TYPE : adc_type ); port( clk : std_logic; .... 之前做这件事的人已经命名了几十个常数: constant CH0_RADC_TYPE : adc_type := I2C_ADC; constant CH1_RADC_TYPE : adc_type := deltasigma_ADC; constant

在旧的VHDL设计中,组件具有通用端口:

component adc_model is
generic(   RADC_TYPE : adc_type );
port( clk : std_logic;
....
之前做这件事的人已经命名了几十个常数:

constant CH0_RADC_TYPE   : adc_type     :=  I2C_ADC;
constant CH1_RADC_TYPE   : adc_type     :=  deltasigma_ADC;
constant CH2_RADC_TYPE   : adc_type     :=  SPI_ADC;
......
这样他就可以引用组件的多个单元

但现在我想通过使用for generate语句来实现这一点:

for i in 0 to 7 generate
    begin
    i_adc_model: adc_model
    generic map(
    RADC_TYPE => CHX_RADC_TYPE(i),
....
现在我要做的是:

CHX_RADC_TYPE(00) <= CH0_RADC_TYPE;
CHX_RADC_TYPE(01) <= CH1_RADC_TYPE;
CHX_RADC_TYPE(02) <= CH2_RADC_TYPE;
     .............

CHX_RADC_TYPE(00)由于通用端口的值是一个常量,因此在声明常量时,为CHX_RADC_TYPE的不同元素分配值(假设数组类型为
adc_TYPE_数组
),如:

constant CHX_RADC_TYPE : adc_type_array := (0 => CH0_RADC_TYPE,
                                            1 => CH1_RADC_TYPE,
                                            2 => CH2_RADC_TYPE,
                                            ...

(或用于指定数组常量CHX_RADC_类型元素值的聚合表达式可以提供以前分配给CH0_RADC_类型、CH1_RADC_类型、CH2_RADC_类型……的值,直接折叠间接级别)。非变量-常量。泛型子句声明接口常量、接口类型、接口子程序声明或接口包声明(泛型接口列表的元素)。参见IEEE标准1076-2008 6.5.2接口对象声明第1段“泛型”、6.5.3接口类型声明第1段、6.5.4接口子程序声明第1段和6.5.5接口包声明第1段。这些描述了BNF中没有的语义限制。旧的VHDL泛型只能是接口常数(如IEEE Std 1076-1993 4.3.2接口声明第1段)。