2016-09-23 3 views
2

В старой конструкции 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 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

Не переменная - константа , Обобщенное предложение объявляет константу интерфейса, тип интерфейса, объявление подпрограммы интерфейса или объявление пакета интерфейса (элементы общего списка интерфейсов). См. IEEE Std 1076-2008 6.5.2 Объявления объектов интерфейса para 1 «generics», 6.5.3. Объявление типа интерфейса, параграф 1, 6.5.4. Объявление подпрограмм интерфейса, параграф 1 и 6.5.5. Декларации пакета интерфейса, параграф 1. Они описывают семантические ограничения, а не найденных в BNF. Старые генераторы VHDL будут только интерфейсом (например, IEEE Std 1076-1993 4.3.2. Декларации интерфейса, параграф 1). – user1155120

ответ

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, 
              ... 
+1

(Или суммарное выражение, используемое для указания значений элементов константы массива CHX_RADC_TYPE, может предоставлять значения, ранее назначенные каждому из CH0_RADC_TYPE, CH1_RADC_TYPE, CH2_RADC_TYPE, ... напрямую, сворачивая уровень косвенности). – user1155120

Смежные вопросы