我将在包中定义一个数组类型,以便我可以将其用作输出值。 该数组的长度取决于通用值。
我在组件声明之前和之后的行中尝试了它。 但两个都报错了。之前是泛型类型未知,之后是输出声明的类型未知。 我如何声明这个类型?
类型是:
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
我们在这里有一个组件声明,相关的泛型只能在组件主体及其端口内观察到。您无法通过您提到的方法访问组件声明之外的组件的通用参数。