¿Cuál sería el diagrama de estado del controlador del robot?

Problema del controlador de robot

Una computadora necesita controlar un robot, donde la computadora envía los siguientes comandos:

  • hacer nada 00
  • Gire a la derecha 01
  • Gira a la izquierda 10
  • Avanzar 11

Tienes que diseñar un circuito que acepte estos comandos y envíe al robot las siguientes señales

  • hacer nada 000
  • Gire a la derecha 001 010 011
  • Gire a la izquierda 101 110 111
  • Avanzar 100 100

Entonces toman respectivamente 1,3,3 y 2 ciclos de reloj. Hasta que se complete el comando actual, no mire la siguiente entrada de la computadora.

Aporte

  • Pulso de reloj CP
  • Entrada disponible IA
  • Comando de entrada C0, C1

Producción

  • Salida disponible OA
  • Señal de salida S0...S2

ingrese la descripción de la imagen aquí¿Es correcto el diagrama de estado? ¿Cuáles serían los valores de salida? ¿O la salida no es necesaria? ¿Y qué información es útil saber de antemano para construir este proyecto?

Estos son mucho más fáciles de entender si le da nombres significativos a los estados.
Está utilizando el 000estado tanto para el comando "no hacer nada" como para el estado inactivo "no se recibió ningún comando". Necesitas separar esto en dos estados separados. Recuerde, debe incluir la IAseñal en su lista de entradas y la OAseñal en su lista de salidas.
@DaveTweed ¿Está diciendo que debería hacer la conexión del último elemento de un estado (izquierda, derecha, adelante) a "no se recibió ningún comando o estado inactivo" en lugar de 000?
@DaveTweed ¿Cómo detengo el circuito para hacer un bucle? Por ejemplo, si ingreso 01, debería ser 001 010 011 y luego regresar a 000 y debería detenerse. En cambio, sigue en bucle y en bucle hasta que cambié los valores de entrada.
@ScottSeidman ¿Cómo detengo el circuito para hacer un bucle? Por ejemplo, si ingreso 01, debería ser 001 010 011 y luego regresar a 000 y debería detenerse. En cambio, sigue en bucle y en bucle hasta que cambié los valores de entrada.
No debe salir del estado "inactivo" a menos IAque se afirme. IAsolo debe afirmarse durante un período de reloj para que se procese cada comando.

Respuestas (1)

Su diagrama de estado es correcto. La entrada disponible (IA) se utiliza para activar los comandos. La señal de salida disponible (OA) se usa para decirle al robot que tome el código que se envía. El reloj (CP) se utiliza para sincronizar los cambios de estado junto con las entradas de comando (C0, C1). Se transmite un código de señal (000,001,...) cuando se activa la señal OA. La señal OA se desactiva mientras que el CP activa el siguiente código de señal. Se repite la secuencia.

¿Cómo detengo el circuito para hacer un bucle? Por ejemplo, si ingreso 01, debería ser 001 010 011 y luego regresar a 000 y debería detenerse. En cambio, sigue en bucle y en bucle hasta que cambié los valores de entrada.
Esa es la respuesta correcta. ¡Mientras no haya nuevos comandos, debería permanecer en el estado 000! Esto se logra haciendo un bucle "sobre sí mismo", de lo contrario, no estará listo para ejecutar el siguiente comando.