Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Confused about declaring digital design variables?

  1. Nov 23, 2014 #1
    An example:
    A car that senses if you have your seat belt on and the door is closed

    I can declare:

    D - for door
    S - for seat belt

    D is 1 is door is open, 0 if door is closed
    S is 1 if seat belt is on, 0 if it's off

    This is all very straight forward and can be implemented with combinational logic, but I'm working on something that uses sequential logic. I'll probably use a 555 timer and a 4017

    If I have an intersection, the main street with a turn signal light and the main light and a side street that is rarely busy, it will only turn green when a car is present on that street.

    Right off the bat I know I need a variable for the sensor that detects a car that is present on the side street

    S - Sensor
    S is 1 if car is present and 0 if no car is present

    But I'm confused about how many variables I need for my street lights. I have a total of 9 LEDs: 3 reds, 3 yellows, and 3 greens. My plan is to have the reds and greens on for 20 seconds and the yellows for 4 seconds.
  2. jcsd
  3. Nov 23, 2014 #2


    User Avatar
    2017 Award

    Staff: Mentor

    Just write down the order the traffic lights are supposed to change. Then you'll see how many different states you'll need.
  4. Nov 23, 2014 #3
    I'm not referring to the states though. What I'm referring to is the initial variables
  5. Nov 23, 2014 #4
    or are the states your variables? I'm confused, please enlighten me
  6. Nov 24, 2014 #5


    User Avatar
    Gold Member

    There are many ways to skin the cat, so to speak, but basically you need to determine how many signals there are, and how many combinations you want then to exist in. Say you had 3 signals ABC, and you wanted them to sequence "off, then A, then B, then C.". You *could* build a counter that counted 0,1,2,3, and decode the counter such that A=1 B=2 and C=3. You would then say you have 2 state elements, 3 signals, and that the nextstate = state+1.

    Or, you could have 3 state elements, ABC, 1 for A, 1 for B and 1 for C . You would then say nextstate = (state ==0) ? 4 : state>>1;
    This would essentially be a shifter, and could be called a 1-hot state machine. (1 state element for each state)

    So, again, there are output signals, and there are states, and there are transitions between states.. The transformations between them is the design process.

    If you have inputs, then your state transitions also depend on the inputs. (or maybe the outputs signals might also depend directly on the inputs).

    I would recommend reading the wikipedia article on state machines.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook