La declaración del problema es algo ambigua, pero dado que la tecnología sugerida es D FFs, creo que podemos suponer que estamos hablando de una máquina de estado síncrono con un reloj, y que las entradas I5 e I10 son pulsos que son 1 reloj de ancho. Se nos dice que ambas entradas no pueden estar activas al mismo tiempo.
Por lo tanto, la máquina de estado conceptual básica solo necesita realizar un seguimiento de la cantidad de dinero que hemos recibido hasta el momento, hasta que alcanza lo suficiente para pagar un café:
+----------------------------------------------+
V |
+------+ +------+ +------+ +------+ |
| idle | I5 | 5c | I5 | 10c | I5 | 15c | |
| Y=0 |----->| Y=0 |----->| Y=0 |----->| Y=1 |--+
+------+ +------+ +------+ +------+
I10| I10| ^ I10| ^ ^
+-----------------------+ +---------+ |
| |
+--------------------------+
Tenga en cuenta que dado que no estamos obligados a realizar cambios, el estado 15c realmente significa "15 o 20 centavos recibidos", cualquiera de los cuales es suficiente para dispensar un café. Pero dar cambio cuando recibimos 20 centavos solo requiere un estado más (y una salida más).
La implementación de esta máquina de estados de Moore abstracta como FFs D codificados en binario o DFF D de un solo calor se deja como un ejercicio para el lector.
EDITAR: Parece que estás haciendo un gran esfuerzo, así que aquí está el siguiente paso del análisis. No entiendo su notación para la tabla de transición de estado, por lo que la dibujaré de la forma en que me acercaría a ella, donde cada línea de esta tabla corresponde a una transición en el diagrama, con las transiciones "nulas" (ambas entradas = 0) hecho explícito.
Current Inputs Next
State I5 I10 State
------ --- --- ------
idle 0 0 idle
idle 1 0 5c
idle 0 1 10c
5c 0 0 5c
5c 1 0 10c
5c 0 1 15c
10c 0 0 10c
10c 1 0 15c
10c 0 1 15c
15c x x idle
Tenga en cuenta que todavía estoy usando nombres abstractos para los estados; Si estos se asignan a valores binarios o a la codificación de un solo uso, aún depende de usted. Una vez que elija la asignación, la lógica real requerida para producir los valores de entrada D reales para cada FF debería quedar fuera del proceso.
EDICIÓN # 2: De acuerdo, teniendo en cuenta los comentarios entre paréntesis en las Especificaciones 2 y 3, parece que necesitamos llevar un registro de los pagos en exceso y de las monedas adicionales que se están introduciendo incluso mientras se está dispensando el café. Por lo tanto, el diagrama de estado y la tabla de transición deben modificarse:
+--------------------------------------------------+
| +------------------------------+ |
+-----------|-------------|--------------------+ | |
| | +-----------|---------------+ |I5=0 | |I5=0
| | | | +----------+ | |& I10=0 | |& I10=0
V V V V V I10| |I5 | I5| |
+------+ +------+ +------+ +------+ | +------+ |
| idle | I5 | 5c | I5 | 10c | I5 | 15c |--+ I10| 20c |--+
| Y=0 |----->| Y=0 |----->| Y=0 |----->| Y=1 |<-------| Y=1 |
+------+ +------+ +------+ +------+ +------+
I10| I10| ^ I10| ^ ^
+-------------|---------+ +-----------|-------------+
+--------------------------+
Ahora, la máquina dispensará correctamente dos cafés si le pones tres monedas de 10 centavos. Y ahora no hay transiciones sin etiqueta (incondicionales).
Current Inputs Next
State I5 I10 State
------ --- --- ------
idle 0 0 idle
idle 1 0 5c
idle 0 1 10c
5c 0 0 5c
5c 1 0 10c
5c 0 1 15c
10c 0 0 10c
10c 1 0 15c
10c 0 1 20c
15c 0 0 idle
15c 1 0 5c
15c 0 1 10c
20c 0 0 5c
20c 1 0 10c
20c 0 1 15c
EDITAR FINAL (con suerte):
La salida es solo una función del estado, por lo que el cálculo de la lógica de salida usa un mapa K diferente del que se usa para calcular las transiciones. La asignación de estado para la máquina de 4 estados más simple podría tener este aspecto:
State Q1 Q0 Y
----- -- -- -
idle 0 0 0
5c 0 1 0
10c 1 0 0
15c 1 1 1
Obviamente, Y es simplemente Q0 Y Q1.