在旧的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;
.............
我的问题是,有没有更聪明的方法呢?
答案 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,
...