sábado, 9 de julio de 2011

Detector de secuencias

Detecter de secuencias que busca la secuencia 1101y al encontrarla activa la salida Z



library  ieee ;
use  ieee.std_logic_1164.all ;
entity  det_sec is
port ( CLK, RESET, x  :  in std_logic ;
          z : out std_logic );
end  det_sec ;
architecture  detector_1 of  det_sec  is             
type tipo_estado  is  ( A, B, C, D ) ;                
signal estado, siguiente_estado : tipo_estado ;
begin
process ( CLK, RESET )
 begin
    if ( RESET = '1' ) then
          estado <= A ;
    elsif ( CLK'event  and  CLK = '1' ) then
           estado <= siguiente_estado ;
     end if;
  end process ;
 
  process ( x, estado )
     begin
         case  estado  is
             when A =>
                  if  x = '1'  then
                       siguiente_estado <= B ;
                   else
                       siguiente_estado <= A ;
                  end if ;
              when B =>
                  if x = '1' then
                        siguiente_estado <= C ;
                  else
                        siguiente_estado <= A ;
                  end if ;
              when C =>
                   if x = '1' then
                        siguiente_estado <= C ;
                    else
                         siguiente_estado <= D ;
                   end if;
              when D =>
                    if  x = '1' then
                         siguiente_estado <= B  ;
                    else
                          siguiente_estado <= A ;
                    end if ;
          end case ;
  end process ;
  process ( x, estado )
    begin
        case  estado  is
            when  A =>
                z <= '0' ;
            when B =>
                z <= '0' ;
            when C =>
                z <= '0' ;
            when D =>
                if x = '1' then
                    z <= '1' ;
                else
                    z <= '0' ;
                end if ;
            end case ;
   
  end process ;
end detector_1 ;

No hay comentarios:

Publicar un comentario