Máquina de estados de una máquina de café [cerrada]

-3

Nopuedoresolveresteejercicio.Realmentenecesitoayuda.

  

Diseñeunamáquinaexpendedoradecaféconlassiguientesespecificaciones:

    
  1. Cadacafécuesta15c.Laúnicasalidadelamáquinadeestado,Y,cambiade'0'a'1'cuandoyasehaingresado15comás.
  2.   
  3. Aceptamonedasde5co10c(centavos)ynodacambio(esdecir,seaceptanyseprocesancorrectamente2monedasde10c).Porlotanto,lamáquinadeestadotienedosentradas,I5yI10.
  4.   
  5. Despuésde"entregar" un café, la máquina de estado se reinicia (la transición dependerá de si se está introduciendo o no una nueva moneda).
  6.   
  7. Dos o más monedas no se aceptan simultáneamente (la máquina solo tiene una ranura).
  8.   

A. Dibuje el diagrama y la tabla de transición de estado de la máquina.

     

B. Realice la máquina de estados con flip-flops D, utilizando la técnica estándar en la codificación de estados (es decir, los estados se codifican directamente a binarios y se asocian con las salidas de flip flops). Dibuja el circuito lógico.

     

C. Realice la máquina de estados con flip flops D, utilizando la técnica 1-hot en la codificación de estados. Dibuja el circuito lógico.

    
pregunta Carmen González

1 respuesta

2

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.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas