¿Por qué Xilinx ISE no puede acceder a mi paquete personalizado?

4

Estoy intentando crear un tipo de datos personalizado que estoy creando en un paquete usando Xilinx ISE 14.5. Estoy intentando crear un DEMUX genérico para cambiar entre buses, aquí está el código del DEMUX genérico:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.CustomDataTypes.all;

entity GenericDEMUX is
     -- Ancho del bus de cada salida y número de salidas
     generic( busWidth              : integer := 4;
                 channelsNumber     : integer := 4
     );

    Port (  Output  : out  Matrix(channelsNumber-1 downto 0, busWidth-1 downto 0);
                Control : in     integer range 0 to channelsNumber-1
     );
end GenericDEMUX;

architecture Behavioral of GenericDEMUX is

begin


end Behavioral;

Así que creé un paquete para contener el tipo de datos Matrix :

CustomDataTypes.vhd:

package CustomDataTypes is
    type Matrix is array (natural range<>) of STD_LOGIC_VECTOR (natural range<>);

end CustomDataTypes;

Cuando hago Check Syntax en el DEMUX genérico me sale este error:

  

ERROR: HDLParsers: 164 - "// vboxsrv / datos / Datos / Micro   UTN / FPGA / MaquinaEstados / CustomDataTypes.vhd "Línea 14. error de análisis,   NOTCONSTRAINT inesperado

     

ERROR: HDLParsers: 3009 -   "// vboxsrv / datos / Datos / Micro   UTN / FPGA / MaquinaEstados / CustomDataTypes.vhd "Línea 35. Paquete   CustomDataTypes no existe.

No sé lo que significa parse error, unexpected NOTCONSTRAINT pero creo que podría estar relacionado con Package CustomDataTypes does not exist . Aquí hay una captura de pantalla de cómo se ve mi pestaña de Bibliotecas, como puedes ver CustomDataTypes.vhd está ahí:

Sinembargo,noloveoenlapestañadediseño:

Intenté agregarlo pero dice que ya existe.

    
pregunta Andres

1 respuesta

1

Lamentablemente, no fue hasta VHDL-2008 que se permitían matrices sin restricciones de elementos sin restricciones.

En otras palabras, para pre VHDL-2008:

type Matrix is array (natural range<>) of std_logic_vector(natural range<>);

Tendría que convertirse en algo así como:

type Matrix_n_by_8 is array (natural range<>) of std_logic_vector(7 downto 0);

O usa matrices 2d:

type Matrix is array(natural range<>, natural range<>) of std_logic; 
    
respondido por el apalopohapa

Lea otras preguntas en las etiquetas