Autor Tema: ayuda para corregir error en vhdl  (Leído 5710 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vallekano85

  • PIC10
  • *
  • Mensajes: 3
ayuda para corregir error en vhdl
« en: 08 de Abril de 2011, 05:54:35 »
Saludos amig@s.
Estoy haciendo un multiplicador binario y (controlador + ruta de datos) y la simulacion me la hace perfectamente, lo unico que cuando en el ISE le doy para que haga la sintesis me salen 4 errores que por mucho ue le he dado vueltas no he conseguido arreglar. Lo que pretendo al final de todo es pasar este diseño a una FPGA en una placa de desarrollo y por eso necesito que me haga bien la sintesis.
Los errores que me da son los siguientes:

ERROR:HDLParsers:800 -  Line 31. Type of controla is incompatible with type of proyect.
ERROR:HDLParsers:821 -  Line 33. Wrong index type for proyect.
ERROR:HDLParsers:821 -  Line 35. Wrong index type for proyect.
ERROR:HDLParsers:800 -  Line 39. Type of controla is incompatible with type of proyect.

Si alguien me pudiera hechar una mano, para arreglar esto estaria muy agradecido  :)
Los errores los marco en rojo en el codigo.
Muchas Gracias
SALU2


**********************
* Paquete tipos de control *
**********************

PACKAGE tipos_control IS

   TYPE seniales_control IS (INI,sum_des, carga_r1, carga_r2, carga_r3, carga_rr);
   TYPE vector_seniales_control IS ARRAY ( NATURAL RANGE <>) OF seniales_control;
   TYPE bus_control IS ARRAY (seniales_control) OF BIT;

   FUNCTION PROYECT (ENT: vector_seniales_control) RETURN bus_control;
   FUNCTION PROYECT (ENT: seniales_control) RETURN bus_control;
   FUNCTION PROYECT RETURN bus_control;

END tipos_control;

PACKAGE BODY tipos_control IS

   FUNCTION PROYECT (ENT: vector_seniales_control) RETURN bus_control IS

      variable RES: bus_control:= (OTHERS=>'0');
   BEGIN

      FOR i IN ent 'RANGE LOOP
      res(ent(i)):='1';
      END LOOP;

   RETURN RES;
   END PROYECT;

   FUNCTION PROYECT (ENT: seniales_control) RETURN bus_control IS

      variable RES:bus_control:= (OTHERS => '0');
   BEGIN

      RES (ENT):= '1';

   RETURN RES;
   END PROYECT;

   FUNCTION PROYECT RETURN bus_control IS

      variable RES: bus_control := (OTHERS => '0');
   BEGIN

      RETURN RES;

   END PROYECT;
END tipos_control;



*************
* Controlador  *
*************


USE WORK.tipos_control.all;

--* Declaracion de la entidad *--

ENTITY controlador IS
   GENERIC (l:INTEGER:=4);
   PORT (reloj,reset: IN BIT; controla: OUT bus_control);
END controlador;


--* Declaracion de la arquitectura *--

ARCHITECTURE comporta OF controlador IS

   BEGIN
      PROCESS (reloj, reset)
         TYPE estados IS (inicial, carga, sum_des );
         VARIABLE estado : estados:= inicial;
         VARIABLE contador: NATURAL;

      BEGIN
         IF reset = '1' THEN controla<=proyect;
            estado:=inicial;
            contador:=l+1;
         ELSE
            IF reloj = '1' AND reloj'EVENT THEN
               IF contador > 1 THEN
                  CASE estado IS
                     WHEN inicial => controla <= proyect(ini);  --*Linea 31 *--
                     estado:=carga;
                     WHEN carga => controla <= proyect(carga_r1&carga_r2&carga_r3&ini); --*Linea 33 *--
                     estado:=sum_des;
                     WHEN sum_des => controla <= proyect(carga_r3&carga_r1&sum_des); --*Linea 35 *--
                     contador:=contador-1;
                  END CASE;
               ELSE
                  controla<= proyect(carga_rr); --*Linea 39 *--
               END IF;
            END IF;
         END IF;

      END PROCESS;

   END comporta;

Desconectado Chipcon

  • PIC12
  • **
  • Mensajes: 63
Re: ayuda para corregir error en vhdl
« Respuesta #1 en: 08 de Abril de 2011, 13:54:06 »
Hola Vallekano85 estuve echándole una ojeada a tu código y no encontré problemas de echo creo tiene que ver con el ISE
copie y lo sintetice en quartus II y no tuvo errores te muestro imagen.

Prueba con otra versión de ISE
Saludos

Desconectado vallekano85

  • PIC10
  • *
  • Mensajes: 3
Re: ayuda para corregir error en vhdl
« Respuesta #2 en: 08 de Abril de 2011, 16:33:53 »
Si que se que tiene que ser algo del compilador del ISE, porque yo lo he probado con el veribest y tambien me funciona....lo que pasa es que necesito que me lo sintetice el ISE porque tengo que programar este diseño en una FPGA (Spartan3E) y bueno a parte tengo que utilizar el ISE.
Gracias de todas formas

Desconectado vallekano85

  • PIC10
  • *
  • Mensajes: 3
Re: ayuda para corregir error en vhdl
« Respuesta #3 en: 11 de Abril de 2011, 16:45:26 »
Saludos amig@s. ya encontre la solución y la escribo aqui por si alguien tuviese en un futuro el mismo error que yo.
La cuestion esque el ISE (versiones 12.3 y 13.1 que son las que utilizado) no soportan la sobrecarga de métodos, por lo que yo llame las tres funcnes que muestro con el mismo nombre y por eso me daba error. Al final cambie de nombre las funciones (PROYECT1, PROYECT2, PROYECT3) y ya me hace la sintesis perfectamente.

GRACIAS
SALUD & SALU2