Flip-flops, Latches and State Prof. Sirer CS 316

advertisement
Flip-flops, Latches and
State
Prof. Sirer
CS 316
Cornell University
Early Transistors
The first transistor, on a workbench at AT&T Bell
Laboratories in 1947
Logic Gates
One can buy gates
separately


ex. 74xxx series of
integrated circuits
cost ~$1 per chip,
mostly for packaging
and testing
Cumbersome, but
possible to build
devices using gates
put together manually
Integrated Circuits
Or one can manufacture a complete design
using a custom mask
An Intel Pentium has approximately 125 million
transistors
Special-Purpose Transistors
A photo-sensitive
transistor can be used
to detect the presence
of light
Photo-sensitive material
triggers the gate
Recap
We have enough tools in our arsenal to start build interesting
devices
Let’s build a Scantron device

Elections are coming up!
Background:




A vote is recorded on a piece of paper,
by punching out a whole,
there are at most 7 choices
we will not worry about “hanging chads” or “invalids”
For now, let’s just display the numerical identifier to the ballot
supervisor


we won’t do counting yet, just decoding
we can use four photo-sensitive transistors to find out which
hole is punched out
Ballot Reading
All we want to do
is go from a paper
with a hole in it to
a number the
ballot supervisor
can record
Ballots
The super-duper
316 vote decoding
machine
Demultiplexors/Encoders
a
b
1
2
o0
o1
c
3
o2
N sensors in a row
We want to distinguish
which sensor of the N
sensors has fired
Want to represent the firing
sensor number in compact
form

d
4
A 3-bit (7-to-3)
encoder
(4 inputs shown)


N might be large, I want to sell
this device to Italy
Only one wire is on at any time
Silly to route N wires
everywhere, better to encode
in log N wires
Number Representations
37
Decimal numbers are written in
base 10

Just as easily use other bases

101
100
3 x 101 + 7 x 100 = 37


Base 2 - “Binary”
Base 8 - “Octal”
Base 16 – “Hexadecimal”
Base conversion via repetitive
division


Divide by base,
write remainder,
move left with quotient
Sanity check with 37 and 10
Binary Representation
37 = 32 + 4 + 1
0100101
26 25 24 23 22 21 20
64 32 16 8 4 2 1
Hexadecimal Representation
37 decimal = (25)16
25
161
160
Convention


Base 16 is written with a leading 0x
37 = 0x25
Need extra digits!

0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F
Binary to hexadecimal is easy

Divide into groups of 4, translate
groupwise into hex digits
Encoder Truth Table
a
b
1
o0
2
o1
c
d
3
o2
4
a
b
c
d
o2
o1
o0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
1
0
0
0
1
0
0
1
1
0
0
0
1
1
0
0
o2 = abcd
A 3-bit
encoder
with 4 inputs
for simplicity
o1 = abcd + abcd
o0 = abcd + abcd
Ballot Reading
Ok, we built
first half of the
machine
Need to display
the result
Ballots
The super-duper
316 vote decoding
machine
7-Segment LED Decoder
4 inputs encoded in
binary
8 outputs, each
driving an
independent,
rectangular LED
Just a simple logic circuit
Write the truth table
Can display numbers
7-Segment LED Decoder
1
0
0
0
4 inputs encoded in
binary
8 outputs, each
driving an
independent,
rectangular LED
Can display numbers
7-Segment LED Decoder
1
0
1
0
4 inputs encoded in
binary
8 outputs, each
driving an
independent,
rectangular LED
Can display numbers
7-Segment Decoder Truth Table
i3
i2
i1
i0
o0
o1
o2
o3
o4
o5
o6
0
0
0
0
1
1
1
0
1
1
1
0
0
0
1
1
0
0
0
0
0
1
0
0
1
0
1
1
0
1
1
1
0
0
0
1
1
1
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
1
1
0
1
1
0
0
0
1
1
1
1
1
0
1
1
1
1
1
0
0
0
0
0
1
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
0
1
1
o1
o2
o0
o3
o4
o6
o5
Exercise: find the error(s) in this truth table
7-Segment Decoder Truth Table
i3
i2
i1
i0
o0
o1
o2
o3
o4
o5
o6
0
0
0
0
1
1
1
0
1
1
1
0
0
0
1
1
0
0
0
0
0
1
0
0
1
0
1
1
0
1
1
1
0
0
0
1
1
1
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
1
1
0
1
1
0
0
0
1
1
1
1
1
0
1
1
1
1
1
0
0
0
0
1
1
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
0
1
1
o1
o2
o0
o3
o4
o6
o5
Ballot Reading
Done!
Off to the patent
office!
Ballots
The super-duper
316 vote decoding
machine
Keyboard
Let’s build a keyboard


Lots of mechanical switches
Need to convert to a
compact form (binary)
We’ll use a special
mechanical switch that,
when pressed, connects
two wires simultaneously
Keyboard
+
When a key is
pressed, a 7-bit
key identifier is
computed
4-bit
encoder
(16 to 4)
not all 16 wires are shown
3-bit
encoder
(4 to 3)
Stateful Components
Everything we did until now is combinatorial
logic



Output is computed when inputs are present
The system has no internal state
Nothing computed in the present can depend on
what happened in the past!
Need a way to record data
Need a way to build stateful circuits
Need a state-holding device
Bistable Devices
A
B
A Simple Device
In stable state, A = B
0
A
1
1
B
A
How do we change the state?
0
B
SR Latch
Q
R
S
Q
S
R
Q
Q
0
0
Q
Q
0
1
0
1
1
0
1
0
1
1
?
?
Set-Reset (S-R) Latch
Q: Stored value and its
complement
S=1 and R=1 ?
D Latch
Q
R
D
S
Q
Data Latch


Easier to use than an SR latch
No possibility of entering an undefined state
When D changes, Q changes
 … immediately
Need to control when the output changes
Clocks
Clocks help with modifying the contents of state-holding elements
A free running signal

Generated by an oscillating crystal
Clock signal has a fixed cycle time (aka cycle period)
Clock frequency = 1/cycle time
rising
edge
falling
edge
1
0
clock
period
clock
high
clock
low
Edge-triggering
Can design circuits to change on the rising or falling
edge
Trigger on rising edge = positive edge-triggered
Trigger on falling edge = negative edge-triggered
Inputs must be stable just before the triggering edge
input
clock
First Attempt
D
How does the
output behave?
S Q
R Q
clk
D
Q
clk
Q
D
Q
Q
First Attempt
D
clk
clk
D
Q
S Q
R Q
How does the
output behave?
First Attempt
D
How does the output
behave?
S Q
Changes in D that
occur when the clock
is low are deferred
until clock high
R Q
clk
D
Q
clk
Q
D
Q
Q
Changes when clock
is high are registered
immediately
Master-Slave Flip-Flop
D
Q
D
Q
X
Q
clk
D
X
Q
Q
Outputs change
only on falling
edges
Data is
captured on
rising edges
1 cycle delay

but works out
perfectly – data
for the next
stage is ready 1
cycle ahead of
time
Keyboard
+
When a key is
pressed, a 7-bit
key identifier is
computed
Let’s store this
keycode

4-bit
encoder
(16 to 4)
not all 16 wires are shown
3-bit
encoder
(4 to 3)
The computer
may not be
ready to read it
right away
Registers
D0
D1
D2
DQ
DQ
DQ
DQ
DQ
DQ
A register is simply a
set of master-slave
flip-flops in parallel
with a shared clock
4
D3
clk
DQ
DQ
4-bit
reg
4
Keyboard with Last Key Display
+
4-bit
reg
4-bit
encoder
(16 to 4)
not all 16 wires are shown
3-bit
encoder
(4 to 3)
4-bit
reg
7
seg
deco
7
seg
deco
Summary
We can now build interesting devices with
sensors

Using combinatorial logic
We can also store data values

In state-holding elements

Coupled with clocks
Download