¿Cómo puedo encontrar la Tabla de la verdad para Mealy State Machine?

0

Este es un seguimiento de mi pregunta anterior :

Tengo esta tarea en la universidad:

  

Usted debe diseñar un diagrama de estado de Mealy para un dispositivo de seguridad. Suponga que dos botones pulsadores, A y B, están disponibles para ingresar a la combinación. Un enclavamiento electromecánico garantiza que los botones no pueden activarse simultáneamente. La cerradura debe tener las siguientes características:

     

La combinación es A-A-B-A-B-A. Si esta secuencia se ingresa correctamente, se afirma una señal de salida que hace que el bloqueo se abra.

     

Para cualquier estado, tres pulsos B en una fila deben garantizar que el control vuelva a su estado inicial.

     

Cuando ocurre cualquier uso fuera de secuencia del botón A, se confirma una salida que suena una campana para advertir que se está manipulando el bloqueo.

     

Una vez que el bloqueo está abierto, presionar A o B hará que el bloqueo se cierre sin señalar un error. Dibuja un diagrama de estado de Mealy para esta máquina de estados finitos. Indique qué representa cada estado y qué condiciones de entrada provocan cambios de estado y salida. Es posible que no se haya especificado todo, así que anote los supuestos que haga.

Tengo que implementar esta máquina Mealy usando flip-flops D y MUX'es.

Tengo 10 estados para mi máquina:

S0 -> "Input Start" // Nothing happened
S1 -> A
S2 -> AA
S3 -> AAB
S4 -> AABA
S5 -> AABAB
S6 -> AABABA -> this means EXIT
S7 -> B
S8 -> BB
S9 -> A -> "ALARM ON"

***** Estados de la máquina

DIFERENCIA: - > Mi solicitud es si alguien me puede mostrar la forma de hacer la Tabla de verdad para esta máquina, por favor.

    
pregunta Tudorut Robert

1 respuesta

1

No voy a revisar tu máquina de estado porque es demasiado complejo para tener un propósito instructivo (y, además, ¡¡no es correcto con respecto a la pregunta que te hicieron !!), pero hará una tabla de verdad para un ejemplo relativamente rápido.

De enlace (que estoy usando como ejemplo de una máquina de estado para simplemente escribir una tabla lógica para):

Haytresestados.Esosignificaquenecesitaalmenosdosbitslógicosparaadmitirlos

StateQ1(N)Q2(N)S100S201S310

Q1yQ2sonlassalidasqueseasignanaestosestadoseneltiempoN.Tengaencuentaquepuedeacomodaruncuartoestadosincambiarelnúmerodebitsdesalida(quesería11).

Ahora,agregamoslasentradasyelestadoenelquelaentradallevaalamáquinaenelmomentoN+1.

StateQ1(N)Q2(N)InputNextStateQ1(N+1)Q2(N+1)S1000S310S1001S201S2010S100S2011S201S3100S201S3101S310

Tambiénpuedeacomodarsalidas(p.ej.,alarmas)Digamos,porejemplo,quedeseaafirmarunpoco,perosolocuandoserealizalatransicióndeS3aS2(estonoapareceenlamáquinadeestadooriginal,peroestoyagregandoestoparaserexhaustivo)

StateQ1(N)Q2(N)InputNextStateQ1(N+1)Q2(N+1)OutputS1000S3100S1001S2010S2010S1000S2011S2010S3100S2011S3101S3100

LascolumnasStateyNextStatenosonrealmentepartedelatabladeverdad,simplementelaspuseparamayorclaridad.TengaencuentatambiénquenohayunasoluciónÚNICAparaproblemascomoeste.

Tienes10estadosentucaso.Porelmomento,asumamosqueestoescorrecto.Esosignificaquenecesitaalmenos4bitspararepresentarlos,ytendríaunatablamuchomásgrande.SusAyBseasignaráncomoEntrada(0y1).Necesitarádossalidas(unaparasualarmayotraparadesbloquearlacajafuerte)

Tedioso.Ustedapuesta¡Ahoraveaello!

Siestádeteniendow/aTruthTable,habráterminadoenestepaso.SinecesitaimplementarestocomouncircuitoD-flipflop,comoensupreguntaoriginal,elsiguientepasoseríaencontrarcualquierestadoredundanteyeliminarlo.Despuésdeeso,haríaunmapadeKarnoughyreduciríalatabladeverdadaexpresioneslógicas.Despuésdeeso,implementaríasusexpresioneslógicasconlassalidasdeDflipflops(segúnlorequierasuproblema)sirviendocomoQ1yQ2.Todosestospasossonmásdeloqueestoydispuestoadarinstruccionesenestacomunidad,perolosenlacesquecolocoenlarespuestaasupreguntaoriginaldeberíanayudarlo.

TumapadeKarnoughseráinclusomástediosoquelatabladeverdad.Sinembargo,tendrásunmontónde"No importa", lo que ayudará.

Todo lo dicho, este es el camino "oficial" a estos problemas. Para los problemas simples, el proceso podría ser más fácil. Es difícil de describir cómo, pero a veces simplemente "resuelve" el problema y ve la implementación de flip-flop que necesita, y luego limpia un poco. Otras veces, crees que ves este enfoque, pruébalo y luego te das cuenta de que simplemente perdiste un montón de tiempo porque una de las transiciones de tu estado no funcionará de la manera que esperas, y que deberías haber formalizado tu enfoque.

Por último, para una implementación "real", deberías pensar en algún procedimiento de inicialización. No se garantiza que los flips-flops surjan en ningún estado en particular, y usted necesita una manera de garantizar que comience en el estado inicial.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas