Tengo UN multiplexor n-to-1 y estoy tratando de asignar sus n puertos de entrada desde otro componente que tiene n puertos de salida. ¿Cómo puedo hacer esto?
A continuación se muestra mi código y los errores. He omitido el otro componente para evitar confusiones.
Errores:
- Identificador desconocido "i".
- Los "mux_in" formales asociados individualmente deben identificarse con un nombre estático localmente.
- Real (nombre indexado) para "mux_in" formal no es un nombre de señal estática.
Código:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
package data_array is
CONSTANT Block_Size : integer := 64;
CONSTANT Entry_length : integer := 32;
type signal_array is array(Block_Size downto 0) of std_logic_vector (Entry_length-1 downto 0);
end package data_array;
library ieee;
use ieee.std_logic_1164.all;
library work;
USE work.data_array.all; --including the package
entity A is
generic (
Block_Size : integer := 64;
Entry_length : integer := 32
);
port(
sel: in integer;
new_entry: in std_logic_vector(Entry_length-1 downto 0);
clk: in std_logic;
reset: in std_logic;
done: out std_logic; --indicates completion of shifting
last_entry: out std_logic_vector(Entry_length-1 downto 0)
);
end A;
architecture Synchronous of A is
Component Multiplexer
generic (
Block_Size : integer := 64;
Entry_length : integer := 32
);
port(
sel: in integer;
mux_in: in signal_array;
Mux_out: out std_logic_vector(Entry_length-1 downto 0)
);
end component;
--Intermediate signals
signal interconnect : signal_array;
signal temp_entry : std_logic_vector(Entry_length-1 downto 0);
begin
temp_entry <= new_entry;
--Instantiating the mux
mux: Multiplexer
generic map(
Block_Size => Block_Size,
Entry_length => Entry_length
)
port map(
sel => sel,
mux_in(i) => interconnect(i),
Mux_out => temp_entry
);
end Synchronous;