Autor Tema: explicacion  (Leído 3486 veces)

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

Desconectado wiston

  • PIC10
  • *
  • Mensajes: 10
explicacion
« en: 06 de Septiembre de 2010, 22:20:34 »
Bueno soy nuevo con vhdl, ya estoy estudiando el lenguaje, en estos momentos me gustaria entender bien cada instruccion de este codigo, yo entiendo algunas cosas asi que si alguien me da una manita gracias

P_Control_FSM: Process (RstN, Clk)
begin
   if RstN = '0' then
      Estado <= eInit;
   elsif Clk'event and Clk='1' then
      case Estado is
         when eInit =>
   if Transmite = '1' then
     Estado <= eBitInit;
   end if;
       when eBitInit =>
     if ClkBaud = '1' then
        Estado <= eBitsDato;
     end if;
        when eBitsDato =>
     if FinDsplza8bits = '1' then
        Estado <= eBitFin;
    end if;
          when eBitFin =>
    if ClkBaud = '1' then
         Estado <= eInit;
    end if;
  end case;
end if;
end process;


Desconectado Chipcon

  • PIC12
  • **
  • Mensajes: 63
Re: explicacion
« Respuesta #1 en: 10 de Septiembre de 2010, 11:28:24 »
Que tal einston el codigo es para una maquina de estados que se ejecuta cada que tenemos un flanco de subida en reloj

muy parececido a la sentencia  SWITCH en lenguaje C, el CASE explora el valor de la señal estado, y ejecuta alguna de las instrucciones.

En el codigo que muestras la señal RstN es asincrona y se ejecuta en cualquier momento entonces la funcion es la siguiente:

Se genera un reset y la señal estado toma el valor eInit, despues en el primer flanco de subida del reloj se explora el valor de estado y se ejecuta las sentencias dentro de when eInit, este loop durara hasta que el bit Transmite sea 1 entonces a estado se asigna el valor de eBitInit y asi sucecivamente dando como resultado una maquina de estados.

Ya solamente como comentario al tratar de sintetizar este codigo te marcara error y esto se debe a que el CASE no esta bien terminado, similar al SWITCH debes tener una sentencia DEFAULT , te muestro como es toda la estructura CASE saludos cordiales.


case Estado is

       when eInit =>

       when eBitInit =>

       when eBitsdato =>
   
       when eBitfin =>

       when others => null;

end case;
     





Desconectado wiston

  • PIC10
  • *
  • Mensajes: 10
Re: explicacion
« Respuesta #2 en: 10 de Septiembre de 2010, 17:52:14 »
Muchas gracias parcero, eso es lo que necesito y gracias por lo de einston me gusta el alias.


 

anything