¿Cómo terminaría este mini proyecto (emitiendo 1 cada vez que se lee 101)?

0
  

Diseñe una máquina de estados finitos Moore que detecte 1 0 1 en forma consecutiva   Los dígitos en el flujo de entrada de 0 y 1 recibieron cada ciclo de reloj.

     

El circuito debe generar un 1 cuando detecta 1 0 1 como consecutivo   dígitos Implementar el FSM usando una combinación de secuencial y   Lógica combinatoria. Dibuje la tabla de verdad para entradas, salidas y   estados Dibuja el mapa K para todo. Indica cuantos flip-flops   vas a usar Dibuja el circuito final con los flip-flops.

Example:
INPUT:  0 1 0 1 0 1 1 0 1 0 0...
OUTPUT: 0 0 0 1 0 1 0 0 1 0 0...

Este es mi trabajo hasta ahora, describiendo la máquina de estado:

S_i   inp  S_{i+1}
000 -> 0 -> 000
000 -> 1 -> 001
001 -> 0 -> 010
001 -> 1 -> 001
010 -> 0 -> 000
010 -> 1 -> 101
101 -> 0 -> 010
101 -> 1 -> 001

Como solo hay 4 estados involucrados ("000", "001", "010" y "101"), los represento con los bits A y B:

     A | B
    -------
s_0  0 | 0    to represent state "000"
s_1  0 | 1    to represent state "001"
s_2  1 | 0    to represent state "010"
s_3  1 | 1    to represent state "101"

Combiné esto con la tabla anterior para representar los estados iniciales I_A, I_B, con alguna nueva entrada X, y luego los estados de destino D_A y D_B:

I_A  I_B | X | D_A  D_B
________________________
 0    0  | 0 |  0    0
 0    0  | 1 |  0    1
 0    1  | 0 |  1    0
 0    1  | 1 |  0    1
 1    0  | 0 |  0    0
 1    0  | 1 |  1    1
 1    1  | 0 |  1    0
 1    1  | 1 |  0    1

Escribí los mapas K para (I_A, I_B) vs. X para la salida D_A, así como (I_A, I_B) vs. X para la salida D_B, y obtuve esta simplificación:

D_A = ¬X * I_B  +  X * I_A * ¬I_B
D_B = X

Estoy razonablemente seguro de que todo está bien hasta ahora.

Sin embargo, no tengo claro a dónde ir desde aquí. Realmente no entiendo cómo modelar esto como un circuito real usando flip-flops. No sé cómo hacer una transición de los estados iniciales de A y B a sus estados finales correspondientes. No sé cómo se supone que debo emitir un 1 en caso de que termine en el estado "101" s_3.

D_A = ¬X * I_B  +  X * I_A * ¬I_B
D_B = X

Realmente no sé si esto es correcto, pero así es como intenté modelar el circuito:

I_B ------o-------------------------o
          |                         |
          |                         v
          |                         AND----->OR--------> D_A
          |                         ^        ^
          o---NOT---->A             |        |
                      N---->AND-----|--------o
I_A ----------------->D      ^      |
                             |      |
X --------o---NOT-------------------o
          |                  |
          |                  |                 
          o------------------o-------------------------> D_B

¿A dónde voy desde aquí?

    
pregunta user525966

2 respuestas

4

Confesión

No estoy entrenado en el aula en Mealy y Moore. Solo "leo el libro" y, antes de esa lectura, solo tenía mucha y mucha práctica básica de hacer que las cosas funcionen usando máquinas de estado (obviamente finito) sin molestarme en asignar nombres a lo que hice. Acabo de conocer algunas herramientas de pensamiento, eso es todo, que funcionó bien.

El circuito de Tony, por lo que yo entiendo, es un Mealy FSM, no Moore. Excepto que él "registró" la salida, que creo que le permite ajustarse a la definición de la máquina de Moore. Explicaré por qué pienso esto, usando las definiciones que encuentro en la web y su esquema para resaltar el punto. Pero tenga en cuenta que puedo estar equivocado en mis interpretaciones y estoy muy abierto a que me encarguen de lo que sigue.

Diagrama de estado

Ignoré completamente tu escritura sobre tu enfoque. Es mucho más fácil para mí usar herramientas que conozco y entiendo bien. Aquí está el resultado de mi primer paso para pensar en lo que escribiste, centrándome solo en el comentario sobre "101."

Eletiquetadodelosestadosmuestralosdosbitsanteriores.Eletiquetadoesbitmásrecientealaderechaybitanterioralaizquierda.

Estediagramaincluyealgunosestadosquenoincluyó,mostrandolatransicióninicialde"no se ven los bits vistos" a "un bit visto" y luego a "al menos dos bits vistos". Probablemente quiera ignorar los estados iniciales que conducen a los cuatro estados internos que se muestran arriba. Lo cual está bien. Solo quería señalar cómo "pienso" acerca de estas preguntas cuando las enfrento por primera vez.

Aquí, puede ver los cuatro estados a los que llegó pero desde un enfoque ligeramente diferente. Simplemente estoy rastreando los dos bits anteriores como un par y luego muestro el bit entrante como una transición entre estados.

Finalmente, he incluido una estrella roja para indicar la importante transición donde se reconoce "101". (El par de estado anterior debe ser "10" y debe seguirse observando un "1" como la transición.)

Aquí hay una versión destilada:

Loqueprobablementeseamásparecidoaloquequiereslograr.

Parejadeestado

ElpardeFFtipoDrequeridoparalosbitsmásrecienteseinmediatamenteanterioressemuestraeneldiagramasuperior.EldiagramainferiormuestraelresultadocompletoqueTonyseñaló.

simular este circuito : esquema creado usando CircuitLab

Tenga en cuenta que este esquema requiere tanto la información del estado actual (los dos FF que se muestran en el diagrama superior) como la entrada actual (que se muestra en el diagrama inferior como un cable que viene de DATA a una de las entradas de la puerta AND de 3 entradas. Es solo cuando el estado actual y también la entrada cumplen con algunos criterios, cuando se enclava el estado de salida correcto. Normalmente, creo que esto hace que el resultado califique como una máquina de Mealy, no como una máquina de Moore. Pero el hecho de que esta sea una "máquina de Mealy registrada" es lo que la convierte en una máquina de Moore válida.

Podrías hacer esto más directamente como una máquina de Moore, supongo. Pero creo que esto califica.

    
respondido por el jonk
1

simular este circuito : esquema creado usando CircuitLab

Esta secuencia de Moore solo necesita 2 estados previos de 01 para Reg 12 con el Reg1 invertido para crear 11 y combinado con la entrada presente = 1 en el 3in Y para crear el D = 1 que está sincronizado con el siguiente estado que es la secuencia de 101.

    
respondido por el Tony EE rocketscientist