Flip-flops, Latches and State
Download
Report
Transcript Flip-flops, Latches and State
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