Autor Tema: ascensor codigo erroneo  (Leído 4017 veces)

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

Desconectado victor_sumo

  • PIC10
  • *
  • Mensajes: 5
ascensor codigo erroneo
« en: 22 de Marzo de 2006, 05:37:00 »
Hola a todos
He hecho el siguiente codigo para controlar un motor de DC en VHDL y me da un error al compilar justo antes de finalizar cada if, porque puede ser, gracias

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.numeric_std.all;

entity motor is
    Port ( UP : in std_logic;
           DOWN : in std_logic;
           STOP : in std_logic;
           SAL1 : out std_logic;
           SAL0 : out std_logic);
end motor;

architecture motor_vhdl of motor is
 begin
   
   process(UP, DOWN, STOP)
   
   begin
   if (UP="1" and DOWN="0" and STOP="0")
      then SAL1<="1";
      then SAL0<="0";
   end if;

   if (UP="0" and DOWN="1" and STOP="0")
      then SAL1<="0";
      then SAL0<="1";
   end if;

   if (UP="0" and DOWN="0" and STOP="1")
      then SAL1<="1";
      then SAL0<="1";
   end if;

end process;
end motor_vhdl;

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: ascensor codigo erroneo
« Respuesta #1 en: 25 de Marzo de 2006, 12:08:00 »
Vamos a ver:

En los procesos, lo mejor es poner en la lista de sensibilidad, es decir, en los paréntesis, una señal de reloj y un reset UNICA y EXCLUSIVAMENTE. Lo digo, porque como lo tienes puesto, te va a entrar en el proceso cada vez que haya un flaco en cualquiera de las 3 señales tanto de subida como de bajada.

Lo ideal y más recomendable es esto:

Codigo:
NOMBRE_DEL_PROCESO : process(clk, rst) is
   begin
      if (rst="1") then
         reg <= 0; -- SE ponen todas las condiciones iniciales aqui
      elsif (clk"event and clk="1")   then -- Cuando haya un flanco ascendente de reloj se ejecutará lo que viene a continuación

  -- Aqui ya pones todos los if que quieras, siempre que no se solapen

      end if;
   end process NOMBRE_DEL_PROCESO;


Con esto, te evitarás muchos problemas y dolores de cabeza y harás un sistema síncrono, fiable y que se comporte como quieras.

Desconectado victor_sumo

  • PIC10
  • *
  • Mensajes: 5
RE: ascensor codigo erroneo
« Respuesta #2 en: 27 de Marzo de 2006, 14:46:00 »
antoniof , gracias por el consejo, victor