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 Smile
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;