4 votos

La simple máquina de estado con entradas de enclavamiento me confunde

Esta es una pregunta para la escuela, no espero que alguien me de la respuesta completa, sólo necesito que alguien me señale la dirección correcta ya que estoy confundido y mi tutor está de vacaciones.

Esta es la pregunta:

En este experimento se derivará un controlador para una simple máquina. La máquina es muy simple; es una máquina expendedora que sólo puede aceptar monedas de 1 libra. Puede dispensar dos artículos diferentes, uno cuesta 67 peniques y el otro 52 peniques. Tiene tres salidas; una para monedas de 10 peniques, otra para monedas de 5 peniques y otra para monedas de 1 penique. Su máquina debe dar cambio en el número mínimo de monedas dependiendo del artículo seleccionado. Las salidas son cada una una señal única, de manera que si por ejemplo se necesitaran tres monedas de 10 peniques en el cambio, la señal debe ser pulsada tres veces.

El problema que tengo es que siempre que he hecho una máquina estatal siempre ha dependido de las entradas. Así que, por ejemplo, si fuéramos a hacer una máquina expendedora, un artículo podría costar 50 peniques. Así que hago que todos mis estados salgan de lo que un usuario está poniendo en la máquina, cuando entre un 10p entonces iré al estado "10p" etc.

Este ejemplo parece tener sólo 2 entradas (1 para cada artículo que ambos aceptan moneda de 1 libra) y luego una vez que la moneda de 1 libra se pone en la máquina sólo hace su cosa sin depender de la entrada de nuevo. Esto me confunde seriamente.

No importa la salida el pulso para cada salida de moneda. Estoy seriamente confundido.

4voto

Louise Puntos 16

Este problema tiene dos caras: la algorítmica y la ingeniería.

Algorítmico:

¿Cómo se determina la cantidad de cada tipo de monedas a devolver como cambio, de manera que se minimice la cantidad total de monedas?

En este caso, hay un algoritmo muy simple: empieza devolviendo las monedas de mayor valor. Una vez que la cantidad restante de cambio se encuentra por debajo del valor de las monedas de mayor valor, comienza a devolver la segunda más alta. Mantén este proceso hasta que hayas devuelto toda la cantidad de cambio requerida.

Ingeniería:

En el caso más general de una máquina expendedora, se implementaría en HW el algoritmo anterior. Sin embargo, debido a las simplificaciones proporcionadas en la descripción del problema puedes hacer lo siguiente:

  • Calcule usted mismo el cambio requerido para cada artículo
  • Implementar una máquina de estado simple que devuelva la cantidad de monedas que acabas de calcular en base al tipo de artículo comprado.

La entrada en su máquina de estado será el tipo de artículo.

Habrá tres salidas: una para cada tipo de moneda que pueda devolver para el cambio.

El propósito de la máquina de estado es afirmar las salidas un número predefinido de veces basado en la entrada.

No es necesario que se bloquee la entrada - una vez que se ha obtenido la entrada, la máquina de estados pasará a uno de los dos estados correspondientes a cada tipo de artículo. A partir de ahora, ya no necesitas la señal de entrada.

Una posible aplicación:

Esta implementación es una de las posibles implementaciones, pero no la única.

Sólo tienes tres tipos de monedas que puedes usar para el cambio. La cantidad de cada tipo de moneda que necesitas devolver al comprador está determinada por el tipo de producto que compró.

Podrías usar tres contadores diferentes (uno para cada tipo de monedas). Una vez que recibes la información del comprador, cargas la cantidad inicial de monedas en cada contador. Aunque no todos los contadores están a cero, en cada ciclo de reloj afirmas la salida correspondiente al de los contadores que no están a cero y reduces la cuenta de este contador en particular en 1.

No es el mejor enfoque en términos de recuento de puertas, pero funcionará.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X