Agregado de 2 vectores en VHDL

2

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;
    
pregunta Codelearner777

1 respuesta

3

Use la biblioteca VHDL-2008 en ModelSim y su error se resolverá. Los paquetes VHDL-93/2002 no admiten la agregación de vectores como la forma en que lo has expresado.

    
respondido por el MITU RAJ

Lea otras preguntas en las etiquetas