Estoy comprobando lo que puedo y no puedo hacer al agregar y concatenar en VHDL.
aunque puedo combinar dos vectores concatenándolos, sigo recibiendo errores si uso el agregado.
Vi una respuesta aquí muestra que es posible.
¿Puede alguien explicar por qué están cometiendo errores, o tal vez sea el lenguaje el que no lo permite?
Agradezco cualquier sugerencia.
aquí está mi código. Marqué las líneas correctas e incorrectas. Uso ModelSim. Comento / descomprimo al verificar para evitar múltiples controladores.
architecture RTL of example_array is
--signal Z_BUS : std_logic_vector(7 downto 0);
--signal R_BUS : std_logic_vector(3 downto 0);
--signal A_BIT, B_BIT, C_BIT, D_BIT : std_logic;
signal T_BUS : std_logic_vector(7 downto 0);
signal Y_BUS : std_logic_vector(7 downto 0);
signal U_BUS : std_logic_vector(3 downto 0);
signal P_BUS : std_logic_vector(3 downto 0);
signal E_BIT, F_BIT, G_BIT, H_BIT : std_logic;
BEGIN
Z_BUS <= A_BIT & R_BUS & B_BIT & C_BIT & D_BIT; -- correct
--Z_BUS <= W_BUS & R_BUS; -- correct
P_BUS <= (E_BIT, F_BIT, G_BIT, H_BIT); -- correct
U_BUS <= (E_BIT, F_BIT, G_BIT, H_BIT); -- correct
(E_BIT, F_BIT, G_BIT, H_BIT) <= std_logic_vector'("1011"); -- correct
(E_BIT, F_BIT, G_BIT, H_BIT) <= P_BUS(3 downto 0); -- correct
(E_BIT, F_BIT, G_BIT, H_BIT) <= P_BUS; -- correct
Y_BUS <= (2 => '1', 3 => F_BIT, 1 downto 0 => '0', others => '0'); -- correct
--T_BUS(7 downto 0) <= (U_BUS(3 downto 0), P_BUS(3 downto 0)); -- WRONG!!
--T_BUS <= (U_BUS, P_BUS); -- WRONG!!
--(U_BUS(3 downto 0), P_BUS(3 downto 0)) <= T_BUS(7 downto 0); -- WRONG!!
END architecture RTL;