Error 10500 VHDL para puerta deteccion de metales

crispy

New member
Resulta que estoy programando en VHDL una puerta de deteccion de metales de un banco. Y he coseguido eliminar todos los errores y latches del mismo excepto uno. Ya estoy desesperada y no se por donde puedo seguir. Me podriais ayudar???

El error es el siguiente:
Error (10500): VHDL syntax error at ahora.vhd(32) near text ";";  expecting "begin", or a declaration statement

que se encuentra en la linea 32, que es la siguiente:
      process (actual, presencia, metal, duracion, abrir, carga_apertura, carga_cierre);

Y el programa es:
library ieee;
use ieee.std_logic_1164.all;
entity puerta is
      port(clk, reset: in std_logic;
            presencia, metal, abrir: in std_logic;
            duracion:  in std_logic_vector(15 downto 0);
            carga_apertura, carga_cierre: in std_logic;
            entrada, salida, led: out std_logic);
end puerta;

architecture uno of puerta is
      type estado is(abriendo, cerrando, abierto, cerrado, metal_ON);
      signal actual, siguiente: estado;
      signal cerrar: std_logic;

begin

      process(clk,reset)
      begin
     
            if reset= '1' then
                    actual <= abierto;
            elsif clk'event and clk = '1' then
                    actual <= siguiente;
            end if;
      end process;
     
      process (actual, presencia, metal, duracion, abrir, carga_apertura, carga_cierre);
      begin

            siguiente <= actual;
            case actual is
            when abierto =>
                  led<= '0';
                  if presencia = '1' then
                        siguiente <= cerrando;
                  else
                        siguiente <= abierto;
                  end if;

            when cerrando =>
                  entrada <= '0';
                  carga_cierre <= '1';
                  if duracion = "0110000110101000" then  --cargo 5 segundos
                                                                                         
                                if metal = '1' then
                                        siguiente <= metal_ON;
                                else
                                        siguiente <= abriendo;
                                end if;
                  else
                    siguiente <= cerrando;
                  end if;

            when metal_ON =>
                  led <= '1';
                  if duracion = "0010011100010000" then  --cargo 2 segundos
                      if abrir = '1' then
                            led <='0';
                            carga_apertura <= '1';
                            if duracion ="0011101010011000" then --cargo 3 segundos
                                      siguiente <= abriendo;
                            else
                                siguiente <= metal_ON;
                            end if;
                      else
                            entrada <= '1';
                            carga_apertura <= '1';
                            if duracion ="0011101010011000" then  --cargo 3 segundos
                                siguiente <= abierto;
                            end if;
                      end if;
                  else
                      siguiente <= metal_ON;
                  end if;
               
            when abriendo =>
                  led <= '0';
                  salida <= '1';
                  carga_apertura <= '1';
                  if duracion ="0011101010011000" then
                 
                              if presencia = '1' then
                                      siguiente <= abriendo;
                              else
                                      siguiente <= cerrado;
                              end if;
                  else
                    siguiente <= abriendo;
                  end if;
                 
              when cerrado =>
                  salida <= '0';
                  carga_cierre <= '1';
                  if duracion = "0110000110101000" then
                          entrada <= '1';
                          carga_apertura <= '1';
                          if duracion ="0011101010011000" then
                                        led <= '0';
                          end if;
                  else
                      siguiente <= cerrado;
                  end if;

              end case;
        end process;
end uno;


Muchas gracias a todos!!!
 
Ya he encontrado el error, es tan sencillo como quitar el ; de detras del parentesis del process...
como no me habre dado cuenta antes??

Gracias de todas formas por leerme.
 
Alguien sabe que significa este error?? como se solventa??

Error (10482): VHDL error at definitivo.vhd(83): object "std_logic" is used but not declared
 

Welcome to EDABoard.com

Sponsor

Back
Top