domingo, 20 de mayo de 2012

Máquina de Moore

Una Máquina de Moore es un circuito secuencial sincrónico donde las salidas están determinadas por el estado actual únicamente (y no depende directamente de la entrada). El diagrama de estados para una máquina de Moore incluye una señal de salida para cada estado a diferencia de la máquina de Mealy donde la salida está asociada a la entrada y no al estado.


La máquina se llama así en honor a Edward Forrest Moore, matemático estaunidense, pionero en Inteligencia artificial, y en Máquinas de Estado finitos (Finite State Machines), y  cuya biografía puede consultarse en http://es.wikipedia.org/wiki/Edward_F._Moore   Moore tuvo en mente crear "Plantas Vivas Artificiales", diseño que no funcionó en su aplicación.

Los estados se determinan a traves de Flip-flops cuyas entradas de reloj están puenteadas para responder a un   clock global. 

EJERCICIO 1:  Diseñar en discreto una máquina de Moore que detecte la secuencia 110 en una entrada serial X colocando su salida Z en alto.Compilar y simular en ALTERA.
SOLUCIÓN:

1.1  DIAGRAMA DE ESTADOS:
Con el ánimo de que el lector comprenda el diagrama de estados se describe paso a paso:
  • Como la Clave Serial es 110  al partir del estado inicial S0  con  X = 0 permanece en ese estado con Z = 0.Con X = 1 se identifica el primer bit correctamente y al llegar el flanco de subida del reloj se avanza al estado S1 en donde la salida asociada a ese estado es Z = 0. 

  • Estando en el estado S1 con X = 0  se regresa al estado inicial S0, pero si X = 1, la máquina de Moore detecta que el segundo bit ha sido correcto, llegando al estado S2 con Z =0 como salida asociada.

  • Al estar en el estado S2 si X = 1, se mantiene en ese estado con Z =0, para que no se pierdan los 2 bits correctos 11.  Puede estarse en ese estado cuantas veces se quiera, y sólo valen los dos últimos 1s, de tal manera que si la máquina ha llegado al estado S2 es porque ya lleva 2 bits correctos, y si luego X = 0 se detecta la clave serial y en el siguiente flanco de reloj se avanza al estado S3 cuya salida asociada es Z=1, indicando que se ha detectado la secuencia 110.

  • Luego a partir de S3 si X = 0, se envía al estado inicial, pero si X = 1 se retorna al estado S1 para que la máquina identifique ese 1 como el primer bit correcto en la secuencia, y se pueda al pasar a S2 con otro 1 en X,  y a S3 con X =0, detectándose nuevamente la clave.
1.2 TABLA DE ESTADOS
  Estado Presente   Salida asociada al estado presente   Entrada     Estado Siguiente  
      Q1  Q0                            Z                                         X              Q1  Q0
       0     0                              0                                          0                0     0
       0     0                              0                                          1                0     1   
       0     1                              0                                          0                0     0
       0     1                              0                                          1                1     0
       1     0                              0                                          0                1     1                                
       1     0                              0                                          1                1     0  
       1     1                              1                                          0                0     0
       1     1                              1                                          1                0     1

Escogemos el flip-flop T  y elaboramos Tabla de Excitación, para de ella obtener las ecuaciones Booleanas que nos permiten implementar el circuito lógico.

1.3 TABLA DE EXCITACIÖN

Estado Presente   Salida asociada al estado presente   Entrada     Estado Siguiente  Entradas de Flip-Flops
      Q1  Q0                            Z                                         X              Q1  Q0            T(Q1)   T(Q0)
       0     0                              0                                          0                0     0                 0           0
       0     0                              0                                          1                0     1                 0           1 
       0     1                              0                                          0                0     0                 0           1  
       0     1                              0                                          1                1     0                 1           1 
       1     0                              0                                          0                1     1                 0           1                 
       1     0                              0                                          1                1     0                 0           0
       1     1                              1                                          0                0     0                 1           1
       1     1                              1                                          1                0     1                 1           0

1.4 ECUACIONES DE FLIP-FLOPS

Por Mapas de Karnaugh encontramos las ecuaciones para saber la lógica de entrada de cada flip-flop T:
La ecuación para Q0 se puede escribir como T(Q0)= (Q1 xor X) + Q0 X'

1.5 ECUACIÓN DE SALIDA:
Como en la Máquina de Moore la salida es independiente de la entrada, y está asociada al estado presente, para encontrar su ecuación no es necesario elaborar mapas de Karnaugh, sino que se obtiene por simple inspección de la tabla de estados.Para nuestro caso, como se dá Z = 1 para Q1 Q0 en el estado S3=[1,1] se encuentra que Z = Q1 Q0

1.6 CIRCUITO LÓGICO:
A partir de las ecuaciones obtenidas elaboramos en el Editor Esquemático de Altera el circuito de la Máquina de Moore:

1.7  Compilando  el circuito en ALTERA y luego al simular se encuentra las siguientes formas de onda:


EJERCICIO 2:  En ispLEVER, mediante programación en ABEL-HDL repetir el Ejercicio anterior.

SOLUCIÓN:

2.1  PROGRAMA:


2.2 SIMULACIÓN