Combinational Logic Chapter 4 4.1 Introduction Logic circuits for digital systems may be combinational or sequential. A combinational circuit consists of logic gates whose outputs at any time are determined from only the present combination of inputs. Digital Circuits 2 4.2 Combinational Circuits Logic circuits for digital system Sequential circuits contain memory elements the outputs are a function of the current inputs and the state of the memory elements the outputs also depend on past inputs Digital Circuits 3 A combinational circuits n 2 possible combinations of input values n input variables Combinational Logic Circuit m output variables Specific functions Adders, subtractors, comparators, decoders, encoders, and multiplexers MSI circuits or standard cells Digital Circuits 4 4-3 Analysis Procedure A combinational circuit make sure that it is combinational not sequential No feedback path derive its Boolean functions (truth table) design verification a verbal explanation of its function Digital Circuits 5 A straight-forward procedure F2 = AB+AC+BC T1 = A+B+C T2 = ABC T3 = F2'T1 F1 = T3+T2 Digital Circuits 6 F1 = T3+T2 = F2'T1+ABC = (AB+AC+BC)'(A+B+C)+ABC = (A'+B')(A'+C')(B'+C')(A+B+C)+ABC = (A'+B'C')(AB'+AC'+BC'+B'C)+ABC = A'BC'+A'B'C+AB'C'+ABC A full-adder F1: the sum F2: the carry Digital Circuits 7 The truth table Digital Circuits 8 4-4 Design Procedure The design procedure of combinational circuits State the problem (system spec.) determine the inputs and outputs the input and output variables are assigned symbols derive the truth table derive the simplified Boolean functions draw the logic diagram and verify the correctness Digital Circuits 9 Functional description Boolean function HDL (Hardware description language) Verilog HDL VHDL Schematic entry Logic minimization number of gates number of inputs to a gate propagation delay number of interconnection limitations of the driving capabilities Digital Circuits 10 Code conversion example BCD to excess-3 code The truth table Digital Circuits 11 The maps Digital Circuits 12 The simplified functions z = D' y = CD +C'D' x = B'C + B'D+BC'D' w = A+BC+BD Another implementation z = D' y = CD +C'D' = CD + (C+D)' x = B'C + B'D+BC'D‘ = B'(C+D) +B(C+D)' w = A+BC+BD Digital Circuits 13 The logic diagram Digital Circuits 14 4-5 Binary Adder-Subtractor Half adder 0 + 0 = 0 ; 0 + 1 = 1 ; 1 + 0 = 1 ; 1 + 1 = 10 two input variables: x, y two output variables: C (carry), S (sum) truth table Digital Circuits 15 S = x'y+xy' C = xy the flexibility for implementation S=xy S = (x+y)(x'+y') S' = xy+x'y' S = (C+x'y')' C = xy = (x'+y')' Digital Circuits 16 Digital Circuits 17 Full-Adder The arithmetic sum of three input bits three input bits x, y: two significant bits z: the carry bit from the previous lower significant bit Two output bits: C, S Digital Circuits 18 Digital Circuits 19 S = x'y'z+x'yz'+ xy'z'+xyz C = xy + xz + yz S = z (xy) = z'(xy'+x'y)+z(xy'+x'y)' = z'xy'+z'x'y+z((x'+y)(x+y')) = xy'z'+x'yz'+xyz+x'y'z C = z(xy'+x'y)+xy = xy'z+x'yz+ xy Digital Circuits 20 Binary adder Digital Circuits 21 Carry propagation when the correct outputs are available the critical path counts (the worst case) (A1,B1,C1) > C2 > C3 > C4 > (C5,S4) > 8 gate levels Digital Circuits 22 Reduce the carry propagation delay employ faster gates look-ahead carry (more complex mechanism, yet faster) carry propagate: Pi = AiBi carry generate: Gi = AiBi sum: Si = PiCi carry: Ci+1 = Gi+PiCi C1 = G0+P0C0 C2 = G1+P1C1 = G1+P1(G0+P0C0) = G1+P1G0+P1P0C0 C3 = G2+P2C2 = G2+P2G1+P2P1G0+ P2P1P0C0 Digital Circuits 23 Logic diagram Digital Circuits 24 4-bit carry-look ahead adder propagation delay Digital Circuits 25 Binary subtractor A-B = A+(2’s complement of B) 4-bit Adder-subtractor M=0, A+B; M=1, A+B’+1 Digital Circuits 26 Overflow The storage is limited Add two positive numbers and obtain a negative number Add two negative numbers and obtain a positive number V = 0, no overflow; V = 1, overflow Example: Digital Circuits 27 4-6 Decimal Adder Add two BCD's 9 inputs: two BCD's and one carry-in 5 outputs: one BCD and one carry-out Design approaches A truth table with 2^9 entries use binary full Adders the sum <= 9 + 9 + 1 = 19 binary to BCD Digital Circuits 28 BCD Adder: The truth table Digital Circuits 29 Modifications are needed if the sum > 9 C=1 K=1 Z8Z4 = 1 Z8Z2 = 1 modification: (10)d or +6 C = K +Z8Z4 + Z8Z2 Digital Circuits 30 Block diagram Digital Circuits 31 Binary Multiplier Partial products – AND operations Fig. 4.15 Two-bit by two-bit binary multiplier. Digital Circuits 32 4-bit by 3-bit binary multiplier Fig. 4.16 Four-bit by three-bit binary multiplier. Digital Circuits 33 4-8 Magnitude Comparator The comparison of two numbers outputs: A>B, A=B, A<B Design Approaches the truth table 2n 2 entries - too cumbersome for large n use inherent regularity of the problem reduce design efforts reduce human errors Digital Circuits 34 Algorithm -> logic A = A3A2A1A0 ; B = B3B2B1B0 A=B if A3=B3, A2=B2, A1=B1and A1=B1 equality: xi= AiBi+Ai'Bi' (A=B) = x3x2x1x0 (A>B) = A3B3'+x3A2B2'+x3x2A1B1'+x3x2x1 A0B0' (A>B) = A3'B3+x3A2'B2+x3x2A1'B1+x3x2x1 A0'B0 Implementation xi = (AiBi'+Ai'Bi)' Digital Circuits 35 Fig. 4.17 Four-bit magnitude comparator. Digital Circuits 36 4-9 Decoder A n-to-m decoder n a binary code of n bits = 2 distinct information n n input variables; up to 2 output lines only one output can be active (high) at any time Digital Circuits 37 An implementation Fig. 4.18 Three-to-eight-line decoder. Digital Circuits 38 Combinational logic implementation each output = a minterm use a decoder and an external OR gate to implement any Boolean function of n input variables Digital Circuits 39 Demultiplexers a decoder with an enable input receive information on a single line and transmits n it on one of 2 possible output lines Fig. 4.19 Two-to-four-line decoder with enable input Digital Circuits 40 Decoder/demultiplexers 第三版內容,參考用! Digital Circuits 41 Expansion two 3-to-8 decoder: a 4-to-16 deocder Fig. 4.20 4 16 decoder constructed with two 3 8 decoders a 5-to-32 decoder? Digital Circuits 42 Combination Logic Implementation each output = a minterm use a decoder and an external OR gate to implement any Boolean function of n input variables A full-adder S(x,y,x)=S(1,2,4,7) C(x,y,z)= S(3,5,6,7) Fig. 4.21 Implementation of a full adder with a decoder Digital Circuits 43 two possible approaches using decoder OR(minterms of F): k inputs NOR(minterms of F'): 2 k inputs n In general, it is not a practical implementation Digital Circuits 44 4-10 Encoders The inverse function of a decoder z D1 D3 D5 D7 y D2 D3 D6 D7 x D4 D5 D6 D7 The encoder can be implemented with three OR gates. Digital Circuits 45 An implementation limitations illegal input: e.g. D3=D6=1 the output = 111 (¹3 and ¹6) 第三版內容,參考用! Digital Circuits 46 Priority Encoder resolve the ambiguity of illegal inputs only one of the input is encoded D3 has the highest priority D0 has the lowest priority X: don't-care conditions V: valid output indicator Digital Circuits 47 ■ The maps for simplifying outputs x and y Fig. 4.22 Maps for a priority encoder Digital Circuits 48 ■ Implementation of priority Fig. 4.23 Four-input priority encoder x D2 D3 y D3 D1D2 V D0 D1 D2 D3 Digital Circuits 49 4-11 Multiplexers select binary information from one of many input lines and direct it to a single output line n 2 input lines, n selection lines and one output line e.g.: 2-to-1-line multiplexer Fig. 4.24 Two-to-one-line multiplexer Digital Circuits 50 4-to-1-line multiplexer Fig. 4.25 Four-to-one-line multiplexer Digital Circuits 51 Note n n-to- 2 decoder n add the 2 input lines to each AND gate OR(all AND gates) an enable input (an option) Digital Circuits 52 Fig. 4.26 Quadruple two-to-one-line multiplexer Digital Circuits 53 Boolean function implementation MUX: a decoder + an OR gate n 2 -to-1 MUX can implement any Boolean function of n input variable a better solution: implement any Boolean function of n+1 input variable n of these variables: the selection lines the remaining variable: the inputs Digital Circuits 54 an example: F(A,B,C) = S(1,2,6,7) Fig. 4.27 Implementing a Boolean function with a multiplexer Digital Circuits 55 Procedure: assign an ordering sequence of the input variable the rightmost variable (D) will be used for the input lines assign the remaining n-1 variables to the selection lines w.r.t. their corresponding sequence construct the truth table consider a pair of consecutive minterms starting from m0 determine the input lines Digital Circuits 56 Example: F(A, B, C, D) = S(1, 3, 4, 11, 12, 13, 14, 15) Fig. 4.28 Implementing a four-input function with a multiplexer Digital Circuits 57 Three-state gates A multiplexer can be constructed with three-state gates Output state: 0, 1, and high-impedance (open ckts) Fig. 4.29 Graphic symbol for a three-state buffer Digital Circuits 58 Example: Four-to-one-line multiplexer Fig. 4.30 Multiplexer with three-state gates Digital Circuits 59 4-12 HDL Models of Combinational Circuits ▓ Modeling Styles: Digital Circuits 60 Gate-level Modeling ▓ The four-valued logic truth tables for the and, or, xor, and not primitives Digital Circuits 61 Gate-level Modeling Example: output [0: 3] D; wire [7: 0] SUM; 1. The first statement declares an output vector D with four bits, 0 through 3. 2. The second declares a wire vector SUM with eight bits numbered 7 through 0. Digital Circuits 62 HDL Example 4-1 ■ Two-to-one-line decoder Digital Circuits 63 HDL Example 4-2 ■ Four-bit adder: bottom-up hierarchical description Digital Circuits 64 HDL Example 4-2 (continued) Digital Circuits 65 Three-State Gates ■ Statement: gate name (output, input, control); Fig. 4.31 Three-state gates Digital Circuits 66 Three-State Gates ■ Examples of gate instantiation Digital Circuits 67 Fig. 4.32 Two-to-one-line multiplexer with three-state buffers Digital Circuits 68 Dataflow Modeling ■ Verilog HDL operators Example: assign Y = (A & S) | (B & ~S) Digital Circuits 69 HDL Example 4.3 Dataflow description of a 2-to-4-line decoder Digital Circuits 70 HDL Example 4-4 Dataflow description of 4-bit adder Digital Circuits 71 HDL Example 4-5 Dataflow description of 4-bit magnitude comparator Digital Circuits 72 HDL Example 4-6 Dataflow description of a 2-to-1-line multiplexer Conditional operator (?:) Condition ? True-expression : false-expression Example: continuous assignment assign OUT = select ? A : B Digital Circuits 73 Behavioral Modeling if statement: if (select) OUT = A; HDL Example 4-7 Behavioral description of a 2-to-1-line multiplexer Digital Circuits 74 HDL Example 4-8 Behavioral description of a 4-to-1-line multiplexer Digital Circuits 75 Writing a Simple Test Bench initial block Three-bit truth table Digital Circuits 76 Writing a Simple Test Bench Interaction between stimulus and design modules Digital Circuits 77 Writing a Simple Test Bench Stimulus module System tasks for display Digital Circuits 78 Syntax for $dispaly, $write, and $monitor: Example: Example: Digital Circuits 79 HDL Example 4-9 Stimulus module Digital Circuits 80 HDL Example 4-9 (Continued) Digital Circuits 81 HDL Example 4-10 Gate-level description of a full adder Digital Circuits 82 HDL Example 4-10 (Continued) Digital Circuits 83