Diseñar una máquina de estados para detectar si la entrada fue alta exactamente 2 veces en los últimos 4 relojes

3
  

Diseñe una máquina Mealy con una entrada de un bit y una salida de un bit. los   la salida es 1 si en los últimos 4 relojes, exactamente 2 de 4 valores en la entrada   son 1. Use chanclas D y puertas discretas. Usa estado binario   tarea

Tengo un problema en el diagrama de estado de dibujo para este circuito. ¿No es demasiado complicado? Porque para cada estado, podemos tener demasiados estados diferentes basados en el anterior.

¿Puede alguien ayudarme un poco para simplificar el problema?

    
pregunta Ju Bc

3 respuestas

1

CORRECCIÓN

La máquina Mealy almacena cada estado con 3 bits almacenados secuencialmente más ENTRADA.

Por favor revise mi Máquina Moore a una Máquina Mealy usando solo 3 bits almacenados y 1 entrada de estado presente = D

( Solo para Dave tenía razón, pero todavía está tratando de hacer su algoritmo simple que tiene un esquema más complejo)

Ambos tipos pueden producir fallos de salida si la salida no se vuelve a sincronizar con un registro de retrasos de transición de 0 > 1 y 1 > 0 en diferentes entradas de compuerta.

La máquina Moore no usa la entrada actual como la mía a continuación, que se corrige fácilmente pero requiere un flip flop adicional para convertir datos aleatorios en datos sincronizados sincronizados como la entrada del estado actual, ¡así que el resultado es el mismo!

Tenga en cuenta que el FF en la salida es necesario para evitar Condiciones de Carrera o problemas técnicos de mesa.

finalizar edición

La función en un par de formas.

Modo de Dave con un registro SIPO de 3 bits, sumador de 3 bits y comparador para suma = 010 para IN = 0 y suma = 001 para IN = 1 y Out = 0 para todo lo demás.

Prefiero que el SIPO sea la memoria de secuencia

Entonces, la solución más simple para mí es deshabilitar la salida con 3 entradas NAND y 4 entradas O para el recuento de todos los 1 y todos los 0. (Editar ... maldice el corrector ortográfico automático de iPad)

Solución

  • f (D, clk) = {XNOR & O & NAND} Y todas las salidas {Qa, Qb, Qc, Qd}

    • (ignorar Q numeradas para LSB primero en simulador) La razón por la que me gusta el simulador de Falstad es que solo tomó 10 minutos usar el generador de ruido blanco incorporado (ANT.enna) y -6dB / oct para convertirlo en rosa (-3dB / oct), luego el ruido marrón se recorta con el inversor autofinanciado HPF luego elija la pequeña cuadrícula de Opciones y seleccione la SIPO y las Puertas y edite a 4 entradas.

Observelostrazadosdealcanceconflechasverdes.

  • LaprimeramuestraquelasalidadeNANDesbajacon>=41consecutivos.
  • LasegundaflechamuestralasalidadeORbajacon>=40consecutivos.
  • EstassonlasúnicasocasionesenquelasalidaXORdebeestardeshabilitada(AND)paraqueelnúmeroimparde1=1ounnúmeroparde1=0paraqueseapliqueuninversorparaqueseaXNOR.
  

Encasodequeteresultedifícilverlos1ylos0,hiceunaescaleraenRsimpleparacontarlos1,asíquevesunnivel5(nolineal)condos1esel3ernivel.  (Estoypintando,peroestofuedemasiadodivertidoparamostraralgunostrucos)

Este gating provoca fallos, por lo que la salida debe ser remuestreada por el mismo CLK y D FF.

    
respondido por el Tony EE rocketscientist
1

Comience etiquetando 16 nodos con números binarios "0000" a "1111". Luego, etiquete cada nodo con transiciones al estado que se lograría cambiando en un 0 desde la derecha y cambiando en uno desde la derecha. Marque como "aceptando" todos los estados cuyo número incluya exactamente dos "1", es decir, 0011, 0101, 1001, 0110, 1010 y 1100.

A continuación, observe que si dos estados son "aceptar" o "rechazar", las transiciones "0" de cada estado van al mismo lugar y las transiciones "1" van al mismo lugar, los dos estados ser considerado equivalente. Por ejemplo, "0111" y "1111" son estados no aceptados y ambos tienen transiciones a "1110" y "1111". Por lo tanto, pueden ser reemplazados por un solo estado. Repita este proceso hasta que no puedan fusionarse más estados y debería tener una solución de estado mínimo para su problema.

    
respondido por el supercat
1

Para refinar aún más mi comentario, debe hacer un seguimiento de si las tres entradas anteriores, más la entrada actual, contienen exactamente dos, para establecer o borrar la salida en el siguiente borde del reloj.

Dado que el orden importa, un registro de desplazamiento de 3 bits (8 estados) es la forma más fácil de recordar los últimos tres valores de entrada. Entonces el resto de la lógica funciona así:

  • Si la entrada actual es cero, establezca la salida si el registro de desplazamiento contiene exactamente dos.

  • Si la entrada actual es una, establezca la salida si el registro de desplazamiento contiene exactamente uno.

  • En todos los demás casos, borre la salida.

Si esa no es la definición de una máquina de estado de Mealy, no sé qué es. Debería ser sencillo para usted completar los detalles y completar su tarea.

Para completar (se ha aceptado una respuesta diferente), aquí está la tabla de transición completa:

Current          Next
 State   Input   State   Output
 -----   -----   -----   -----
 0 0 0     0     0 0 0     0
 0 0 0     1     0 0 1     0
 0 0 1     0     0 1 0     0
 0 0 1     1     0 1 1     1
 0 1 0     0     1 0 0     0
 0 1 0     1     1 0 1     1
 0 1 1     0     1 1 0     1
 0 1 1     1     1 1 1     0
 1 0 0     0     0 0 0     0
 1 0 0     1     0 0 1     1
 1 0 1     0     0 1 0     1
 1 0 1     1     0 1 1     0
 1 1 0     0     1 0 0     1
 1 1 0     1     1 0 1     0
 1 1 1     0     1 1 0     0
 1 1 1     1     1 1 1     0

Es sencillo convertir esto en una implementación lógica.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas