1
\$\begingroup\$

Robot Controller Problem

A computer needs to control a robot, where the computer sends the following commands:

  • Do nothing 00
  • Turn right 01
  • Turn left 10
  • Move forward 11

You have to design a circuit that accepts these commands and sends the robot the following signals

  • Do nothing 000
  • Turn right 001 010 011
  • Turn left 101 110 111
  • Move forward 100 100

So they respectively take 1,3,3 and 2 clock cycles. Until the current command is completed, don’t take a look at the next input from the computer.

Input

  • Clock Pulse CP
  • Input Available IA
  • Input Command C0, C1

Output

  • Output Available OA
  • Output Signal S0...S2

enter image description here Is the state Diagram correct. What would be output values? Or Output is not needed? And What Information is helpful to know in advance for building this project?

\$\endgroup\$
  • 1
    \$\begingroup\$ These are much easier to understand if you give meaningful names to the states. \$\endgroup\$ – Scott Seidman Nov 28 '16 at 13:15
  • 2
    \$\begingroup\$ You're using the 000 state for both the "do nothing" command and for the "no command received" idle state. You need to separate this into two separate states. Remember, you need to include the IA signal in your list of inputs, and the OA signal in your list of outputs. \$\endgroup\$ – Dave Tweed Nov 28 '16 at 13:26
  • \$\begingroup\$ @DaveTweed Are you saying that I should make connection of last element of a state(left,right,forward) to "no command received or idle state" instead of 000. \$\endgroup\$ – soldierInShadow Nov 28 '16 at 15:40
  • \$\begingroup\$ @DaveTweed How do I stop circuit for looping? For Example If I input 01 it should goes 001 010 011 then back at 000 and should stop. Instead it keeps looping and looping until I changed Input values. \$\endgroup\$ – soldierInShadow Dec 6 '16 at 15:17
  • \$\begingroup\$ @ScottSeidman How do I stop circuit for looping? For Example If I input 01 it should goes 001 010 011 then back at 000 and should stop. Instead it keeps looping and looping until I changed Input values. \$\endgroup\$ – soldierInShadow Dec 6 '16 at 15:17
1
\$\begingroup\$

Your state diagram is correct. The input available (IA) is used to gate the commands. The output available (OA) signal is used to tell the robot to grab the code being sent. The clock (CP) is used to synchronize the state changes in conjunction with the command inputs (C0,C1). A signal code (000,001,...)is transmitted when the OA signal is activated. The OA signal is deactivated while the CP activates the next signal code. Sequence repeats.

\$\endgroup\$
  • \$\begingroup\$ How do I stop circuit for looping? For Example If I input 01 it should goes 001 010 011 then back at 000 and should stop. Instead it keeps looping and looping until I changed Input values. \$\endgroup\$ – soldierInShadow Dec 6 '16 at 15:16
  • \$\begingroup\$ That is the correct response. As long as there are no new commands, it should stay at state 000! This is achieved by looping "on itself," otherwise it will not be ready to execute the next command. \$\endgroup\$ – Guill Apr 15 '17 at 4:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.