miércoles, 30 de mayo de 2012

Circuitos Digitales Secuenciales: Autoevaluación.


EJERCICIOS    RESUELTOS   DE LÓGICA  SECUENCIAL
Seleccione la respuesta correcta:
Para las preguntas de 1 a 5, tenga en cuenta el siguiente diagrama, correspondiente a un circuito lógico secuencial:

1.       Se puede afirmar que el circuito secuencial  es:
( A ) Un contador de anillo                                                ( B ) Un contador Johnson
( C ) Un registro de almacenamiento                                  ( D ) Un registro de desplazamiento

 Respuesta: (D)

De acuerdo a la tabla de verdad de la compuerta XNOR su salida es 1 si QC y  QD son ambas CEROS o ambas UNOS. 
En el contador Johnson se debe dar la secuencia: 0000,1000,1100, 1110, 1111,... Este estado no se da en el circuito indicado, por consiguiente sólo corresponde a un registro de desplazamiento.


2.       I.   Si la entrada RESET está en nivel bajo, las salidas de los flip-flops  se hacen todas CERO,                              al   producirse el flanco de subida del reloj.
             II.   Cada flip-flop D, se puede remplazar por un J-k,   efectuando un puente entre  J  y  K´. 
            
            ( A )  Sólo I  es verdadero                                                     ( B )  Sólo II  es verdadero      
            ( C )   I y  II   son verdaderos                                                 ( D ) Tanto I como II son falsos     
     
          Respuesta: (B)

         Si la entrada RESET está en nivel bajo, las salidas de los flip-flops se hacen todas CERO,  
         independientemente del flanco de reloj, puesto que el RESET está activando la entrada asíncrona   
        CLRN de cada flip-flop, por consiguiente la afirmación I es falsa.

         La afirmación II es verdadera. Si J =0, K=1, Q = 0;   Si J =1, K=0, Q = 1; por consiguiente un flip-
         flop J-K,  J y K´ puenteados, se comporta como un flip-flop D.


3.       Si las salidas de los flip-flops   QA, QB, QC y QD, son inicialmente  0000,y la entrada RESET está fija en nivel alto,  al llegar el primer flanco de reloj,  dichas  salidas  son:
( A )  0100                         ( B ) 1000                         ( D )  0010                            ( D ) 0001

Respuesta: (B)

La compuerta XNOR con entradas QD=0, QC=0, coloca un nivel alto a la entrada D de QA, lo cual hace que al llegar el primer flanco de reloj: QA=1, QB = 0, QC = 0, QD = 0.

    
4.       Para el segundo pulso de reloj, las salidas son:
( A )  1110                         ( B ) 1010                         ( D )  1110                            ( D ) 1100


Respuesta: (D)

Para el segundo pulso de reloj, el UNO de QA se desplaza a QB, y a QA se introduce otro UNO, luego QA = 1, QB=1, QC = 0, QD = 0.

5.       Para el tercer y cuarto pulsos la secuencia en  las salidas, en decimal,  es:
( A )  14, 7                         ( B ) 14, 12                         ( D )  7, 11                            ( D ) 13, 7

           Respuesta: (A)

          Para el tercer pulso QA = 1, QB = 1, QC =1, QD = 0. ( 14 decimal). Al ser QC=1,QD=0, la salida 
         de la compuerta XNOR  está en nivel bajo,  lo cual hace que para el cuarto pulso: QA=0,    QB =1, 
          QC= 1, QD = 1 ( 7 decimal).

Para las preguntas de 6  a 10, tenga en cuenta el siguiente diagrama de estados, correspondiente a una máquina de Moore, que dispone de una entrada  X y una salida  Z:
  6.       Para implementar el circuito lógico correspondiente se requiere un único Flip-Flop,  porque:
( A ) Solo existe una entrada                                            ( B )  Solo existe una salida
( C ) Solo hay dos estados                                                 ( D )  Ninguna de las anteriores


Respuesta: (C)

Al existir solo dos estados A y B se necesita un único flip-flop para implementar el circuito lógico, puesto que al efectuar la asignación binaria: A = 0, B = 1. 

7.       Si se implementa con un Flip-Flop D,  la ecuación de  entrada del Flip-Flop es:
( A )  Q´ X´                                                                            ( B )    Q  X´
( C )  Q  X´  +   Q´  X                                                             ( D )   Q´ X´  +   Q  X


Respuesta: (D)

Hay que tener en cuenta que D(Q) = Q, y que si Q = 1, Z=1.

Tabla de excitación con flip-flop D:
   Q   X   Q   Z   D(Q)
    0   0    1    0      1

    0   1    0    0      0
    1   0    0    1      0
    1   1    1    1      1        

De la tabla de excitación se deduce que por mintérminos:  D(Q) = Q´X´ +  Q X 

8.       Si se implementa con un Flip-Flop T, la ecuación de entrada del Flip-Flop  es:
( A )   X                                                                                 ( B )   X´
( C )  Q´  X                          ´                                                  ( D )   Q  X´


Respuesta: (B)



Tabla de excitación con flip-flop T:
   Q   X     Z   T(Q)
    0   0    1    0      1

    0   1    0    0      0
    1   0    0    1      1
    1   1    1    1      0

T(Q) =   Q' X'  + Q X' = X' ( Q' + Q ) = X' 


9.       La salida Z en la máquina de Moore es:
          I.   Independiente del tipo de Flip.Flop que se utilice.
              II.   Independiente  de la entrada  X.
            
            ( A )  Sólo I  es verdadero                                                     ( B )  Sólo II  es verdadero     
            ( C )  I y II  son verdaderos                                                    ( D ) Tanto I como II son falsos
           
            Respuesta: (C)
           
            Tal  como se aprecia en las tablas de excitación, la salida Z en la máquina de Moore no depende del  
            tipo de flip-flop utilizado ni de la entrada Z. Simplemente, en nuestro ejemplo, está asociada a los 
            dos  estados.( Z = 0, para el estado A, y, Z =1, para el estado B). 

10.   La salida Z  es:
( A )  Q´                                                                                  ( B )   Q
( C )  Q  X                          ´                                                    ( D )   Ninguna de las anteriores
        Respuesta: (B)
           
            Z = 1, cuando Q = 1 (Estado B), luego Z = Q.

2.Se requiere diseñar e implementar el circuito lógico correspondiente a una máquina de estado algorítmica  ASM,  que utilizando un contador 74191, y  obedeciendo un pulso de START,  inicie un conteo descendente desde el  QUINCE  hasta el  CERO, permaneciendo así hasta un nuevo pulso para repetir la operación.
      Elaborar:
      ( A ) Diagrama ASM
      ( B ) Procesador de Datos utilizando el contador 74191.
      ( C ) Unidad  de Control utilizando un multiplexor  de 2 entradas/1 salida, Un flip-
              flop D   e   inversores.

   El contador 74191 trabaja de acuerdo a la siguiente tabla de operación:
    LDN               GN             DNUP             
Operación  del   Contador
         0                  X                 X                     
Carga en paralelo
         1                  0                  0                    
Cuenta  ascendente
         1                  0                  1                   
Cuenta descendente
         1                  1                  X                    
Inhabilitación
                                            
          SOLUCIÓN:  

      ( A ) Diagrama de estados:
 D: Detector , para averiguar si el contador llegó a 1 ( Un pulso antes de terminar su conteo y llegar a Cero)

( B ) Procesador de datos:
 ( C ) Unidad de control:
Cuando START = 0,    Q = 0,  T0 = 1 , T1 = 0  ( Inicio de Máquina )
Cuando START = 1,   al producirse el flanco de subida de reloj, Q = 1, T0 = 0, T1 = 1; Dicho estado permanece, mientras D = 0; Cuando  D = 1, en el flanco de subida de reloj, Q=0, y se regresa a T0 = 1, T1 = 0.     

domingo, 27 de mayo de 2012

Diseño de contador de 2 dígitos ascendente-descendente por ASM

EJERCICIO: Diseñar como ASM un contador de dos dígitos, que por medio de un pulsador al recibir una señal de inicio START, cuente ascendentemente desde el 0 hasta el 99, y luego lo haga descendentemente, y al llegar al 0 se bloquee, hasta tanto, no se accione nuevamente el pulsador para reanudar su operación.

SOLUCIÖN:

Diagrama ASM:
Para el diseño,veamos inicialmente el diagrama de estados de la  UNIDAD DE CONTROL la cual se puede elaborar en una Gal22V10 en ispLEVER por ABEL como una máquina de Moore:
El circuito lógico queda así:




lunes, 21 de mayo de 2012

Máquina de Estado Algorítmica ASM

Se recomienda inicialmente consultar: http://es.wikipedia.org/wiki/M%C3%A1quina_de_estados_algor%C3%ADtmica

Un algoritmo es una secuencia de pasos bien definida que produce una secuencia deseada de acciones en respuesta a una secuencia dada de entradas.

Un diagrama ASM (Algorithmic State Machine) es una herramienta conveniente para expresar los algoritmos que serán realizados por circuitos lógicos secuenciales.

Se emplean tres elementos para construir diagramas ASM:

  * Caja de estado: RECTÁNGULO: Representa un estado del circuito y equivale a un nodo del diagrama de estados. En la caja se etiqueta el nombre del estado.

  * Caja de decisión: ROMBO: Representa una decisión de transición de estado con base en una prueba de una entrada del circuito. Una caja de decisión tiene un único punto de entrada y dos puntos de salida.

  * Caja de salida condicional: OVALADA: Por lo general se ubican en la ruta entre una caja de decisión y una caja de estado. Tiene una única entrada y un punto de salida.

En las Máquinas de Estado Algorítmicas existen dos grandes bloques: La UNIDAD DE CONTROL y la UNIDAD DE PROCESO, conocida también como el PROCESADOR DE DATOS.
EJERCICIO: Se requiere implementar una máquina ASM que realice lo siguiente:

  1. Al activar un PULSADOR se dá una señal de START (Inicio) que hace que un contador 74190 cuente ascendentemente desde el 0 hasta el 9, cada segundo.Antes de dar el START el contador estaba bloqueado en 0.
  2. Cuando el contador llega al 9, automáticamente sigue contando luego descendentemente, hasta llegar nuevamente al 0.
  3. El conteo ascendente y descendente lo tiene que hacer 5 veces, cuenta que realiza un segundo contador 74190.
  4. Al final de los 5 ciclos, ambos contadores 74190, se bloquean en 0, hasta tanto no se de un nuevo pulso de START para repetir la operación.
  5. Mientras están los contadores bloqueados se enciende un LED AMARILLO:
  6. Al estar el primer 74190 en conteo ASCENDENTE enciende un LED VERDE.
  7. Al estar el primer 74190 en conteo DESCENDENTE enciende un LED ROJ0.
SOLUCIÖN:
En el procesador de datos disponemos de 2 contadores 74190 y 3 flip-flops J-K así:
  •  C1 (74190): cuenta ascendente y descendente (0...9,  9...0)
  •  C2 (74190): cuenta los ciclos (0...5)
  • F1: Enciende o apaga el LED AMARILLO
  • F2: Enciende o apaga el LED VERDE
  • F3: Enciende o apaga el LED ROJO
La Unidad de control va a disponer de MULTIPLEXOR , Flip-Flops D y DECODIFICADOR.

Paso 1:  DIAGRAMA ASM.
Para analizar el diagrama lo hacemos por bloques  ASM.  El bloque ASM se inicia con una casilla de estados. Nuestro diagrama está constituido por 3 bloques ASM debido a sus 3 casillas de estado S0,S1,S2.

  • BLOQUE S0: La máquina ASM inicia con el flip-flop F1 en nivel alto, para que el Led Amarillo esté encendido, los contadores deben estar reseteados. Esta situación se mantiene si no se acciona el pulsador de arranque (START). Al oprimir el pulsador se coloca F1 en 0 para apagar el Led amarillo y se fija el Flip-flop F2 en alto para encender el led Verde.
  • BLOQUE S1: Un periodo de reloj después de haber accionado el pulsador se incrementa el contador C1. Mientras no llegue al 8, estando el detector D1 en 0, sigue incrementando cada vez que llegue el flanco de subida del reloj. Al llegar al 8, D1 = 1, incrementa por última vez, llegando al 9, y simultáneamente F2 =0, F3 =1, apagándose el Led Verde y encendiéndose el led Rojo.
  • BLOQUE S2:Un periodo de reloj después de haber llegado C1 al 9, decrementa pasando al 8, y lo sigue haciendo mientras D2 =0, al no detectarse que el contador C1 ha llegado al 1. Cuando D1 = 1, es porque el contador ha llegado al 1, y en esta ocasión en el siguiente pulso de reloj, la casilla de estados S2 le ordena a C1 que vuelva a decrementar, pasando a 0, y simultáneamente, debido a que la casilla condicional que lo ordena está en el mismo bloque ASM, los flip-flops F2 y F3 se colocan en 1 y 0 respectivamente, con lo cual se enciende el led Verde nuevamente y se apaga el Led rojo, indicando que se terminó el conteo descendente y vuelve C1 a contar ascendentemente.Cuando C1 ha terminado de contar en forma descendente, se incrementa el contador C2, el cual lleva la cuenta del número de ciclos.Mientras el detector D3 = 0, C1 sigue incrementando de 0 a 9, y decrementando enseguida de 9 a 0. Cuando D3 = 1, ello quiere decir que si C2=5, ya se han realizado los 5 ciclos, F3=0, se apaga el led Rojo, y al volver al bloque S0, se enciende el Led amarillo, quedando los 2 contadores reseteados, esperando que se dé un nuevo pulso de START para repetir la operación.

Paso 2: Tomamos la UNIDAD DE CONTROL como una caja negra, cuyas entradas las dan las casillas de decisión y las salidas las casillas de estados, e implementamos el PROCESADOR DE DATOS compuesto por los 2 contadores 74190 y los 3 flip-flops J-K. Primero implementamos los contadores y luego los flip-flops:
CONTADOR C1: 
  • La unidad de control inicia con S0=1, S1=0,S2=0, indicando que la máquina ASM está ubicada en el bloque S0. Como S0 = 1, el inversor coloca la entrada LOAD del 74190 en nivel bajo, y como las entradas D,C,B,A están todas a tierra, C1 se coloca en 0, tal como lo exige la primera casilla de estados S0 (C1<--0). Así permanece mientras la señal de START sea Cero. 
  • Al accionar el pulsador del  START la unidad de control pasa a S0=0,S1=1,S2=0, pues se va al bloque S1. Al llegar la máquina ASM al bloque S1, como la entrada DOWNUP =0, porque está conectada a la salida S2 de la unidad de control, como la entrada Enable G del contador está a tierra, y LOAD = 1 (S0 invertida), entonces se dan las condiciones para que C1 incremente mientras esté en el bloque S1.
  • Al llegar al Bloque S2 (S0=0, S1=0, S2=1), lo cual hace que LOAD =1, G=0, DOWNUP=1, y por consiguiente en este bloque C1 tiene que contar en forma descendente.
CONTADOR C2: 
  • En el bloque S0 debe estar reseteado (C2<--0), lo cual lo hace el inversor que maneja la entrada de carga del 74190.
  • En el bloque S1, C2 debe estar bloqueado en 0. Para ello enviamos el 1 de S1 a través de una compuerta OR a la entrada G de enable del contador.
  • En el bloque S2, C2 está bloqueado mientras que el detector D2 =0, por esta razón, al invertir D2 y enviarla al enable G de C2 a través de la otra entrada de la compuerta OR inhibimos el conteo. Estando en el estado S2 (S2=1), y D2=1, la compuerta NAND al tener dos niveles altos en sus entradas, coloca un 0 en su salida, y como la NAND va a la entrada DOWNUP, DOWNUP=0, G=0, LOAD=1, y C2 incrementa sólamente cuando se presenten estas condiciones.  Al terminar su conteo, y volver al bloque S0 (C2<--0), y cambia el 5 por el 0.
DETECTORES:

La unidad de control avanza de bloque en bloque de acuerdo a sus entradas START, y los detectores D1,D2,D3.

  • D1: Como D1 está ubicado en el bloque S1 donde C1 incrementa desde 0, cuando C1 llega al 8=(1000)2, QD=1, por consiguiente la salida QD de C1 es igual a D1.
                                  QD QC QB QA
                                   0     0    0     0
                                   0     0    0     1
                                   0     0    1     0
                                   0     0    1     1
                                   0     1    0     0 
                                   0     1    0     1
                                   0     1    1     0
                                   0     1    1     1
                                  1     0    0     0

  • D2: Como es el detector en el bloque S2 donde C1 decrementa debe analizarse el conteo descendente:
                                  QD   QC   QB   QA
                                   1       0       0       1
                                   1       0       0       0  
                                   0       1       1       1
                                   0       1       1       0
                                   0       1       0       1
                                   0       1       0       0
                                   0       0       1       1
                                   0       0       1       0
                                   0       0       0       1  
     
La compuerta NOR con las 3 entradas QD,QC,QB produce salida en nivel alto al detectar el 1 decimal en conteo descendente.

  • D3: la detección de cuando C2 ha llegado al 5 al contar ascendentemente se hace a través de una compuerta AND de entradas QC y QA.
                                QD  QC   QB   QA

                                  0     0       0       0  
                                  0     0       0       1
                                  0     0       1       0
                                  0     0       1       1
                                  0     1       0       0
                                  0     1       0       1    

Pasamos ahora a mirar como implementamos los 3 flip-flops que manejan los Leds, para lo cual tomamos nuevamente la UNIDAD de CONTROL como una caja negra y 3 flip-flops J-K de salidas F1,F2 y F3:
FLIP-FLOP F1 (Led amarillo): De acuerdo al diagrama ASM, F1<--1, cuando está en la casilla de estado S0, y se coloca en 0 en el mismo bloque cuando START = 1. Por consiguiente si la entrada J = S0, y la entrada K está a una compuerta AND con S2 y START como entradas, ello hace que F1 sea 1 al iniciarse la máquina y se apague el led amarillo cuando K=1, estando J = 1, por la conmutación del flip-flop.

FLIP-FLOP F2 (Led verde): Hay 2 posibilidades para que el led verde se encienda (F2<--1), o sea para que J(F2) = 1 1, cuando S0=1, Start =1,  o, cuando S2=1,D3=0, por ello J(F2)= S0.S + S2.D3'.  Como el led verde se apaga (f2<--0) solo cuando S1=1,D1=1, entonces K(F2) = S1 D1.

FLIP-FLOP F3 (Led rojo): J(F3)= S1 D1 (El led rojo enciende cuando se apaga el verde). El led rojo se aapaga en dos ocasiones, luego:. K(F3) = S2 D3 + S2 D3'.

Paso 3: DISEÑO DE LA UNIDAD DE CONTROL.
Se ván a utilizar 2 Multiplexores de 4 entradas/1 salida, 2 flip-flops D y un decodificador de 2 entradas/3 salidas. 
Observe en el esquemático las siguientes consideraciones:
  • La entrada INH del multiplexor es un Enable, que debe estar a tierra para que el multiplexor quede habilitada.
  • Las entradas de selección S1 y S0  de los multiplexores son las salidas Q1 y Q0 de los flip-flops D.
  • El decodificador de 2 entradas/3 salidas fue implementado en discreto con compuertas AND e Inversores; las entradas del decodificador son las salidas de los Flip-Flops D y las salidas del decodificador son las salidas de la unidad de control.
  • Las entradas de los multiplexores responden a una lógica de acuerdo al diagrama ASM en sus casillas de decisión donde están presentes las entradas de la unidad de control: el pulso de Start y los detectores D1,D2,D3.
  • La entrada de datos D3 de los multiplexores no es requerida,por consiguiente no se utiliza.
Veamos en detalle como se conectan las entradas de la Unidad de Control a las entradas de los Multiplexores, para lo cual es indispensable que el lector tenga a la mano el Diagrama ASM de la máquina:
  • Por Reset-Power-On los flip-flops inician reseteados, de tal manera que Q1=0,Q0=0. Esto hace que S1=S0=0,  y en cada multiplexor la entrada de datos D0 se conecte a la salida del mismo.Como la entrada D0 de MUX1 está a tierra, y la del MUX2 está a la entrada S(Start), entonces si S=0, en el siguiente flanco de reloj, las entradas de los flip-flops van a ser 00, y los flip-flops dejen pasar estos datos, de tal manera que en la salida del decodificador vá a estar S0=1, S0=0,S2=0. Si S=1, el estado siguiente de los flip-flops será 01, y el decodificador tendrá: S0=0,S1=1,S2=0, indicativo que la máquina avanzó del bloque S0 al S1, tal como lo exige el diagrama ASM.
  • Al estar la máquina en el bloque S1,  Q1=0,Q0=1, lo cual hace que los multiplexores conecten sus entradas de datos D1 a sus salidas.La entrada D1 de MUX1  va al detector D1, y la de MUX2 va a D1´ .  Esto hace que si el detector D1 = 0, Q1 y Q0 siguen en 01, pero si el detector D1=1, Q1Q0 cambian a 10, y el docodificador saca a su salida S0=0, S1=0, S2=1, indicando que ha habido transición del bloque S1 a S2.
  • Al llegar Q1=1, Q0 = 0, (Bloque S2), el diagrama ASM nos indica lo siguiente:
  1. Si  D2 = 0, el estado siguiente de los flip-flops es Q1=1,Q0=0 (Permanece en el bloque S2)
  2. Si D2 =1, D3 = 0,  el estado siguiente de los flip-flops es Q1=0,Q0=1 (Cambia al bloque S1)
  3. Si D2 =1, D3 = 1,  el estado siguiente de los flip-flops es Q1=0,Q0=0 (Cambia al bloque S0)
Si la anterior información  la organizamos en una tabla nos queda así:
                       ESTADO SIGUIENTE         CONDICIÓN DE 
                                   Q1  Q0                    LOS DETECTORES        
                                     0    0                              D2  D3
                                     0    1                              D2  D3'
                                     1    0                              D2' 

Inspeccionando la tabla deducimos que la entrada de datos D2 de MUX1, asociada a Q1,  debe estar conectada al detector D2  con un inversor:  D2´

Así mismo la entrada de datos D0 de MUX2, que es la que está asociada con Q0, debe ser D2.D3´.

SIMULACIÖN DE LA UNIDAD DE CONTROL EN ALTERA:

UNIDAD DE CONTROL EN ispLEVER CON ABEL (Máquina de Moore)

Tenemos que elaborar el diagrama de estados de la UNIDAD de CONTROL:
El programa en ABEL es el siguiente:

Al efectuar su simulación en ispLEVER se comprueba su correcto funcionamiento:
EJERCICIO: Simular en Altera el correcto funcionamiento de la Máquina ASM descrita en el presente documento.

















       















Máquina de Moore: Contador Anillo-Johnson

Se denomina código Johnson (Johnson-Mobius) al código binario continuo y cíclico (al igual que el código Gray) cuya capacidad de codificación viene dada por 2n, siendo n el número de bits. Para codificar los dígitos decimales se necesitarán por lo tanto 5 bits:
Código Johnson
Equivalencia decimalCódigo Johnson

0

00000

1

00001

2

00011

3

00111

4

01111

5

11111

6

11110

7

11100

8

11000

9

10000

La secuencia es sencilla,consiste en desplazar todos los bits uno a la izquierda y en el bit menos significativo se coloca el complementario del que estaba mas a la izquierda.
Dada la simplicidad del diseño de contadores que lleven el cómputo en este código, se utiliza en el control de sistemas digitales sencillos de alta velocidad.
Proporciona una mayor protección contra errores aunque es menos eficiente en memoria que el código binario decimal.
EJERCICIO: En ispLEVER programar en ABEL-HDL una máquina de Moore que disponga de una entrada AJ de tal manera que si AJ = 0 se active un contador de ANILLO, y si AJ = 1 se active un contador JOHNSON. Cinco Leds, cátodo común, deben visualizar el conteo.Al iniciar el contador tanto como ANILLO como modo JOHNSON debe sonar el BUZZER, así mismo si se cambia la entrada AJ debe sonar el BUZZER durante el primer periodo de reloj, indicando que se cambió el contador de una a otra forma, ya sea de ANILLO a JOHNSON o de JOHNSON a ANILLO. Implementar el circuito en GAL22V10.
SOLUCIÖN:
1) DIAGRAMA DE ESTADOS:
2) PROGRAMA EN ABEL CON ispLEVER:
3) SIMULACIÓN en ispLEVER:
LABORATORIO FINAL:
 IMPLEMENTAR CON UNA GAL22V10 UNA MÁQUINA DE MOORE CON 9 LEDS Y UN BUZZER.
  1. Con la entrada AJ = 0 los LEDS deben encenderse en una secuencia en código JOHNSON. 
  2. Con la entrada AJ = 1 los LEDS deben encenderse en una secuencia en contador de ANILLO.
  3. El buzzer debe activarse al inicio tanto del contador JOHNSON como de ANILLO, por consiguiente debe sonar al cambiar el contador de una a otra forma.














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