VHDL 数组解析与包定义中的通用值

问题描述 投票:0回答:1

我将在包中定义一个数组类型,以便我可以将其用作输出值。 该数组的长度取决于通用值。

我在组件声明之前和之后的行中尝试了它。 但两个都报错了。之前是泛型类型未知,之后是输出声明的类型未知。 我如何声明这个类型?

类型是:

TYPE t_adc_data IS ARRAY((2**ir_sensor.nof_decoder_signals)-1 DOWNTO 0) OF STD_LOGIC_VECTOR(11 DOWNTO 0);
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
PACKAGE ir_sensor_pkg IS
    TYPE t_adc_data IS ARRAY((2**ir_sensor.nof_decoder_signals)-1 DOWNTO 0) OF STD_LOGIC_VECTOR(11 DOWNTO 0);
    COMPONENT ir_sensor IS
        GENERIC(
            --generell
            nof_decoder_signals     : INTEGER := 4; -- number of lines to decoder
            -- for clock
            frequency_resolution    : INTEGER := 32;
            frequency_divider       : INTEGER := 200000; -- target 500Hz by a base frequency of 100MHz
            ratio                   : INTEGER := 8000; -- target 12.5KHz(80us) by a base frequenzy of 100MHz
            adc_trigger             : INTEGER := 7990; -- just a few clocks less than ratio
            -- for adc
            sclk_frequency          : INTEGER := 8000000; -- max 20Mhz
            base_clk                : INTEGER := 33000000 
        );
        PORT (
            -- generell
            isl_clk                 : IN  STD_LOGIC;
            isl_reset               : IN  STD_LOGIC;
            oslv_decoder_lines      : OUT STD_LOGIC_VECTOR(nof_decoder_signals -1 DOWNTO 0);
            -- puls gen
            osl_puls                : OUT STD_LOGIC;
            --adc
            osl_adc_sclk            : OUT  STD_LOGIC;   -- ADC clock
            osl_adc_csn             : OUT  STD_LOGIC;   -- ADC chip select not
            isl_adc_sdata           : IN   STD_LOGIC;   -- ADC serial data
            oslav12_hex_data        : OUT t_adc_data    -- ADC results out as array of hex values
        );
    END COMPONENT ir_sensor;
    -- or here 
    -- TYPE t_adc_data IS ARRAY((2**ir_sensor.nof_decoder_signals)-1 DOWNTO 0) OF STD_LOGIC_VECTOR(11 DOWNTO 0);
END PACKAGE ir_sensor_pkg
vhdl
1个回答
0
投票

我们在这里有一个组件声明,相关的泛型只能在组件主体及其端口内观察到。您无法通过您提到的方法访问组件声明之外的组件的通用参数。

© www.soinside.com 2019 - 2024. All rights reserved.