如何推断for-generate块中的变量名?

时间:2016-09-23 05:55:56

标签: 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 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;
     .............

我的问题是,有没有更聪明的方法呢?

1 个答案:

答案 0 :(得分:2)

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

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