IF A 1 and B 0: Car Sensors
IF A 1 and B 0: Car Sensors
IF A=1
AND B=0
A
B
Car
Sensors
A
B
Car
Sensors
Always
A
B
Car
Sensors
Always
IF A=0
B
Car
Sensors
AND B=1
Otherwise
Always
Always
IF A=0
B
Car
Sensors
AND B=1
Otherwise
Always
Always
IF A=0
B
Car
Sensors
Note:
Clock beats
every 4 sec.
So Light is
Yellow for
4 sec.
AND B=1
Otherwise
Always
Always
IF A=0
B
Car
Sensors
Note:
Clock beats
every 4 sec.
So Light is
Yellow for
4 sec.
AND B=1
Otherwise
Answer:
Just number them (using binary numbers).
We have 4 states.
Call them 00, 01, 10, 11.
We (human designers) will keep track of
what these names mean.
Light A
AND B=0
Always
Always
IF A=0
AND B=1
Light B
Otherwise
Light A
00
IF A=1
AND B=0
Always
Always
11
01
IF A=0
AND B=1
Light B
10
Otherwise
D1 D2 Light A Red
Light B Red
Light A
00
IF A=1
AND B=0
Always
Always
11
01
IF A=0
AND B=1
Light B
10
Otherwise
D1 D2 Light A Red
Light B Red
0 1
Light A
00
IF A=1
AND B=0
Always
Always
11
01
IF A=0
AND B=1
Light B
10
Otherwise
D1 D2 Light A Red
Light B Red
0 1
* *
Light A
00
IF A=1
AND B=0
Always
Always
11
01
IF A=0
AND B=1
Light B
10
Otherwise
D1 D2 Light A Red
Light B Red
0 1
* *
0 1
Light A
00
IF A=1
AND B=0
Always
Always
11
01
IF A=0
AND B=1
Light B
10
Otherwise
D1 D2 Light A Red
Light B Red
0 1
* *
0 1
* *
0 0
Light A
00
IF A=1
AND B=0
Always
Always
11
01
IF A=0
AND B=1
Light B
10
Otherwise
D1 D2 Light A Red
Light B Red
0 1
* *
0 1
* *
0 0
0 0
0 0
Input: Sensor A
Input: Sensor B
D1
Current State
D2
Write
Sensor A
Sensor B
2-bit
Memory
Register
M1
M2
Write
Sensor A
Sensor B
2-bit
Memory
Register
Logic
For
Next
State
&
Output
Next
State
6 Outputs:
for each
Light
Write
Sensor A
Sensor B
2-bit
Memory
Register
Logic
For
Next
State
&
Output
6 Outputs:
for each
Light
Clock
Sensor A
Sensor B
2-bit
Memory
Register
Logic
For
Next
State
&
Output
6 Outputs:
for each
Light
Current State
Clock
Inputs
Memory
Register
Logic
For
Next
State
&
Output
Outputs
State Machines
in Real Life
Elevator control systems
Car control systems
VCRs
Alarm Clocks
Personal Computers
Just about everything!
Light A
AND B=0
Always
Always
Always
Always
IF A=0
AND B=1
Light B
Otherwise
Main State
Machine
Outputs
Timer
State
Machine
Computers!
Review
In designing state machines, we used:
Binary Representation (to represent states)
Memory (to store the current state)
Logic Circuits & Universal Method
(to determine the next state)
In this way, we learned how to build
special-purpose digital systems
(e.g. traffic lights)
Programming
Using software to control hardware
We dont differentiate
History of Programmable
Machines
First programmable
system was the early
printing process developed
in China circa 800 C.E.
History (cont.)
Gutenbergs Printing Press
(circa 1450)
Main Contribution:
History (cont.)
Huygens Pendulum
Clock
(circa 1650)
Main Contribution:
Timing, clock ticks
increase accuracy
History (cont.)
Musical Machines:
Barrel Organs (1500!)
Music boxes (between)
Player Pianos (c. 1700)
Main Contributions:
Drive cylinder or disk with
pins (bits!!) which play
notes at the right time
Change disk -> change song!!
History (cont.)
Jacquards Loom
(circa 1810)
Punched Cards
stored program
for weaving patterns.
History (cont.)
Hardware -- general-purpose
mechanical mathematical
system
Could be programmed
Instructions could be
Executed repeatedly, or in
different order.
Memory
Weve seen that memory can be used to build
State Machines.
In modern computers, memory is also used
in a different way:
Big arrays of Memory called
RAM : Random Access Memory
And
The data the instructions manipulate
are all stored in the same RAM.
This was one of the revolutionary features of
the modern computer, totally unlike Punch-Card
computers proposed in the past.
D
M
Write
RAM (cont.)
Group 8 of them together.
D
8 bits (b)
is called a
byte (B).
Most RAM
is arranged
in bytes.
W
D
W
D
W
D
W
D
W
D
W
D
W
D
W
RAM (cont.)
A byte of memory (a.k.a. an 8-bit register)
8 bits input
Write
8 bits Output
8 bits
(1 byte)
of Memory
RAM (cont.)
We want a HUGE number of such 1 byte
memory cells.
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
RAM (cont.)
We want a HUGE number of such 1 byte
memory cells.
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
1B
RAM (cont.)
Solution: Assign each byte an address.
We can number all the bytes in binary.
Each bytes assigned number is called
the bytes address in memory.
Then, we can ask the RAM:
What is byte number 011010101010?
Or tell the RAM:
Write 01101100 into memory at address
011010101010
RAM (cont.)
Address
Data input
Write
20
bytes of
RAM
(1 Mega-byte)
Data Output
RAM (cont.)
20 bits of
address
Address
Data input
Write
20
bytes of
RAM
(1 Mega-byte)
Data Output
RAM (cont.)
20 bits of
address
Address
Data input
Write
20
bytes of
RAM
(1 Mega-byte)
8 bits (1 byte)
of data
Data Output