Flip-flops, Latches and State Prof. Sirer COMP 303 Koç 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 Background: A vote is recorded on a piece of paper, by punching out a hole, 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 COMP303 vote decoding machine
Demultiplexors/Encoders 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 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 a b o0o0 1 c d o1o1 A 3-bit (7-to-3) encoder (4 inputs shown) o2o2
Number Representations Decimal numbers are written in base 10 3 x x 10 0 = 37 Can just as easily use other bases 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
Binary Representation =
Hexadecimal Representation 37 decimal = (25) 16 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 c d o1o1 A 3-bit encoder with 4 inputs for simplicity abcdo2o1o o0o0 o1o1 o2o2 o2 = abcd 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 COMP303 vote decoding machine
7-Segment LED Decoder 4 inputs encoded in binary 8 outputs, each driving an independent, rectangular LED Can display numbers Just a simple logic circuit Write the truth table
7-Segment LED Decoder 4 inputs encoded in binary 8 outputs, each driving an independent, rectangular LED Can display numbers
7-Segment LED Decoder 4 inputs encoded in binary 8 outputs, each driving an independent, rectangular LED Can display numbers
7-Segment Decoder Truth Table i3i3 i2i2 i1i1 i0i0 o0o0 o1o1 o2o2 o3o3 o4o4 o5o5 o6o o0o0 o1o1 o2o2 o3o3 o4o4 o5o5 o6o6 Exercise: find the error(s) in this truth table
7-Segment Decoder Truth Table i3i3 i2i2 i1i1 i0i0 o0o0 o1o1 o2o2 o3o3 o4o4 o5o5 o6o o0o0 o1o1 o2o2 o3o3 o4o4 o5o5 o6o6
Ballot Reading Done! Off to the patent office! Ballots The super-duper COMP303 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 + 3-bit encoder (4 to 3) 4-bit encoder (16 to 4) not all 16 wires are shown
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 In stable state, A = B How do we change the state? A B A B 1 A B A Simple Device
SR Latch Set-Reset (S-R) Latch Q: Stored value and its complement S=1 and R=1 ? S R Q Q SRQQ 00QQ ??
D Latch 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 S R Q Q D
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 clock period clock high clock low 1 0 falling edge rising edge
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 How does the output behave? S R D clk D Q Q Q Q DQ Q
First Attempt How does the output behave? S R D clk Q Q D Q
First Attempt How does the output behave? Changes in D that occur when the clock is low are deferred until clock high Changes when clock is high are registered immediately S R D clk D Q Q Q Q DQ Q
Master-Slave Flip-Flop Outputs change only on falling edges Data is captured on rising edges 1/2 cycle delay but works out perfectly – data for the next stage is ready 1/2 cycle ahead of time DQ Q DQ Q clk D X Q X
Keyboard When a key is pressed, a 7-bit key identifier is computed Let’s store this keycode The computer may not be ready to read it right away + 3-bit encoder (4 to 3) 4-bit encoder (16 to 4) not all 16 wires are shown
Registers A register is simply a set of master-slave flip-flops in parallel with a shared clock DQDQ DQDQ DQDQ DQDQ clk D0 D3 D1 D bit reg
One-Shot A simple device that, when triggered, produces a pulse of the specified width in one shot X ms out in out X ms
Keyboard with Last Key Display + 3-bit encoder (4 to 3) 4-bit encoder (16 to 4) not all 16 wires are shown 4-bit reg 7 seg deco 7 seg deco 4-bit reg one-shot 1ms
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