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