Práctico 5 - Ejercicio 7

Práctico 5 - Ejercicio 7

de Lucia Thais De Oliveira Gude -
Número de respuestas: 5

Hola, estoy intentando pensar los estados pero no termino de convencerme de cual puede ser la disposición de estados.

Primero pense en un estado para cada opción de switch, pero no se si después voy a poder manipular los flip-flops para mantener algunas luces por dos segundos y otras por 1 segundo.

Despues pense en poner los estados: "todas prendidas", "todas apagadas", "rojo por 1 seg", "rojo por 2 seg", "azul por 1 seg", "azul por 2 seg" y "verde por 1 seg", "verde por 2 seg", pero tampoco se bien como hacer para especificar que si no hay ningun cambio en el switch y venia en, por ejemplo, rojo 2 seg, vaya a verde 2 seg y así.

Leí en otras preguntas algo de unas soluciones en donde aparecían seis estados nada más pero no pude pensar cuáles podrían ser.

En respuesta a Lucia Thais De Oliveira Gude

Re: Práctico 5 - Ejercicio 7

de Gustavo Brown -

Lucía,

  La idea de una máquina de estados es poder saber en todo momento las variables relevantes del sistema de tal manera que uno pueda irse moviendo por la máquina generando las salidas que correspondan.

Para ello tenés que determinar cuáles son las variables relevantes del problema que deben mantenerse en la máquina de estados. Por ejemplo el valor del switch en este problema no sería una variable a mantener porque en todo momento la entrada switch te indica su valor. Mantener esa información en la máquina de estados sería entonces redundante.

En este caso lo que te interesa saber y no se puede obtener "mirando" la entrada es qué luz corresponde encender cuando se deben encender las luces secuencialmente. La determinación de que se debe ir encendiendo secuencialmente las luces se puede hacer mirando la entrada switch. Luego la máquina de estados modelaría cual luz está encendida en ese momento y el siguiente estado indicaría cuál es la próxima luz que se debe encender. Por ejemplo cara el caso de la secuencia que enciende de a una luz cambiando cada 2 segundos debería poder mantener cual luz encender y si es el 1er segundo o el 2do segundo (luego del cual se pasaría al 1er segundo de la siguiente luz, y así sucesivamente).

Para modelar ese comportamiento (e incluír también los casos en que deben apagarse todas las luces o encenderlas todas) basta con una máquina de 6 estados.

Saludos,
  Gustavo

En respuesta a Gustavo Brown

Re: Práctico 5 - Ejercicio 7

de Juan Manuel Tassino Chaparro -
Hola Gustavo, no entiendo porque se necesitan 6 estados, yo pensé que con 5 estado que modelen cual está prendida en ese momento (todas, ninguna, rojo, azul y verde) se podría hacer, pero no se si es correcto poner la cantidad de segundos en la transición de un estado a otro.
Intenté hacerlo con 6 estados como sugerís, que serían los mismos de arriba y uno "igual" que hace que la luz sea igual que la anterior encendida, pero me queda una maquina de estados no determinista, porque en las transiciones uso el valor del switch para ver si tengo que hacer el movimiento cada 1s, 2s, apagar o prender las luces.
En respuesta a Juan Manuel Tassino Chaparro

Re: Práctico 5 - Ejercicio 7

de Federico Rivero -
Hola!

No es posible indicar la cantidad de segundos en una transición. Las transiciones se dan al final de cada ciclo de reloj, por lo tanto el tiempo queda especificado por el período de este reloj. En este caso, como el reloj tiene frecuencia 1HZ, las transiciones se dan cada un segundo.

La forma de mantener una luz encendida por dos segundos sería dar salida rojo durante dos ciclos seguidos, es decir, en dos transiciones seguidas.

Avisá si con esa ayudita lográs resolverlo!

Saludos,
Federico
En respuesta a Federico Rivero

Re: Práctico 5 - Ejercicio 7

de Gennaro Vincenzo Monetti Cracco -
Para 6 estados se necesitan 3 bits (que además tienen que ser con FF-JK) más 2 bits de entrada y 3 de salida. ¿No quedan como 9 mapas de Karnaugh de 5 variables?