Duda con la salida del circuito secuencial de las notas (reconocedor de 11011), pero con flip-flops JK

Duda con la salida del circuito secuencial de las notas (reconocedor de 11011), pero con flip-flops JK

de Pablo Martin Baez Echevarria -
Número de respuestas: 2

En las notas de circuitos secuencias se presenta como ejemplo la construcción de un circuito reconocedor de la secuencia "11011". De las dos alternativas, elegí la Alternativa 2 (es decir, la que no reconoce dos tiras "11011" consecutivas solapadas en el último 1), y al igual que en la clase 21 de OpenFING, decidí utilizar flips-flops JK. La tabla de verdad, a partir de la ecuación característica de dichos flip-flops, me quedó:


Estado Entrada Próximo estado Salida Entrada flip-flop 2 Entrada flip-flop 1 Entrada flip-flop 0
 q2q1q0 e  q2q2q1  s   J2K2 J1K1  J0K0 
000 0 000 0 0X 0X 0X
000 1 001 0 0X 0X 1X
001 0 000 0 0X 0X X1
001 1 010 0 0X 1X X1
010 0 011 0 0X X0 1X
010 1 010 0 0X X0 0X
011 0 000 0 0X X1 X1
011 1 100 0 1X X1 X1
100 0 000 0 X1 0X 0X
100 1 000 1 X1 0X 0X
101 0 XXX X XX XX XX
101 1 XXX X XX XX XX
110 0 XXX X XX XX XX
110 1 XXX X XX XX XX
111 0 XXX X XX XX XX
111  XXX  XX  XX  XX 

Después de hacer los diagramas de Karnaugh correspondientes, he llegado a que:

J2 = q1q0e,  K2 =1

J1 = q2'q0e,  K1 = q1q0

J0 = q2'q1'e + q1q0'e,  K0 = 1

s = q2e

En base a estas expresiones, he dibujado el circuito:

Circuito secuencial para reconocer 11011

Mi duda surge al probarlo en el editor de ondas con la cadena "110111111...", en el instante en que se lee el 1 en negrita:

Editor de ondas MAX+plus II

A los 35ns, hay un flanco ascendente de la entrada de reloj, el circuito está posicionado en el estado 011 (cuya semántica es "Vino 110") y la entrada es 1. En estas situación, lo esperado es que se mueva al estado 100 (cuya semántica es "Vino 1101"), y la salida sea 0. Pero la salida es 1. Creo que el problema está en que s está definido como el AND de q2 y la entrada e, ¿pero qué valor de q2? Como el nuevo valor de q2 es 1 (pues el nuevo estado es 100), parece que toma este valor en lugar del que tenía antes, y entonces el AND de s vale 1. ¿Pero cómo corregir este problema? ¿En qué me equivoqué?

Otra duda que me surge es sobre la utilidad de la señal de reset. En este caso, aunque tenga el reset en 0, el MAX+plus II arranca en el estado inicial. ¿En el archivo .scf de prueba debía haber puesto al comienzo reset en 1 y después que siempre valga 0?

Agradecería mucho si alguien me aclarara estas dudas. Gracias de antemano.

Saludos.


PD. Adjunto el .gdf por si acaso (había agregado también el .scf pero no me permitió la plataforma agregar más de un archivo adjunto).

En respuesta a Pablo Martin Baez Echevarria

Re: Duda con la salida del circuito secuencial de las notas (reconocedor de 11011), pero con flip-flops JK

de Pablo Martin Baez Echevarria -

Omití minimizaciones en las expresiones de J1, K1 y J0 (es decir, en los Karnaugh, podría haber tomado bloques más grandes). Las expresiones correctas creo que quedarían:

J2 = q1q0e,  K2 =1

J1 = q0e,  K1 = q0

J0 = q2'q1'e + q1e,  K0 = 1

s = q2e

De todas maneras, el circuito al que llego es equivalente al de mi post anterior, sólo que más simple (con menos compuertas lógicas), por lo que mi duda sigue en pie.

Lo peor de todo, es que creo que es una duda general, no de este caso en particular. Cuando seguimos la "metodología del curso", la salida es función de los q_i y de la entrada. Pero los q_i "viejos", no los "nuevos". Pero lo que "sale" de los flips-flops (cada vez que hay un flanco ascendente en la entrada de reloj) y que utilizamos para definir la salida del circuito, son los q_i "nuevos", no los "viejos". De ahí, la incongruencia. A lo mejor estoy interpretando mal la simulación... ¿Qué está mal?

Pensando en esto se me ocurrió que si lo modelara como máquina de Moore, como la salida estaría asociada al (nuevo) estado, no se presentaría este problema. Y en efecto, si sigo todos los pasos, llego a un circuito correcto.

En respuesta a Pablo Martin Baez Echevarria

Re: Duda con la salida del circuito secuencial de las notas (reconocedor de 11011), pero con flip-flops JK

de Pablo Martin Baez Echevarria -

Este mensaje es para corregir dos erratas de mis mensajes anteriores.

-En el primer post, en la tercer columna de la tabla debe decir:

" q2q1q0 " en lugar de " q2q2q1 "

-En el segundo post, debe ser:

J0 = q2'q1'e + q1e' " en lugar de " J0 = q2'q1'e + q1e " (es decir, la e que está al final, está negada).

Saludos.