Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/04/2011, 02:07
vallekano_85
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Xilinx ISE. Error en codigo VHDL

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;