TODOPIC
Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: vallekano85 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;
-
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
-
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
-
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