1 / 16

EECS150 - Digital Design Lecture 10 - Combinational Logic Circuits Part 1

EECS150 - Digital Design Lecture 10 - Combinational Logic Circuits Part 1. Feburary 26, 2002 John Wawrzynek. Combinational Logic (CL) Defined. y i = f i (x0 , . . . . , xn-1), where x, y are {0,1}. Y is a function of only X. If we change X, Y will change immediately (well almost!).

telyn
Download Presentation

EECS150 - Digital Design Lecture 10 - Combinational Logic Circuits Part 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EECS150 - Digital DesignLecture 10 - Combinational Logic Circuits Part 1 Feburary 26, 2002 John Wawrzynek EECS150 - Lec10-cl1

  2. Combinational Logic (CL) Defined yi = fi(x0 , . . . . , xn-1), where x, y are {0,1}. Y is a function of only X. • If we change X, Y will change immediately (well almost!). • There is an implementation dependent delay from X to Y. EECS150 - Lec10-cl1

  3. Adders Full-adder cell (FA) revisited: EECS150 - Lec10-cl1

  4. Carry-ripple Adder • Each cell: ri = aiXOR biXOR cin cout = aicin + aibi + bicin = cin(ai + bi) + aibi • 4-bit adder: • What about subtraction? “Full adder cell” EECS150 - Lec10-cl1

  5. Subtractors A - B = A + (-B) How do we form -B? 1. complement B 2. add 1 EECS150 - Lec10-cl1

  6. Adders (cont.) Ripple Adder Ripple adder is inherently slow because, in general s7 must wait for c7 which must wait for c6 … Tan, Costan How do we make it faster, perhaps with more cost? EECS150 - Lec10-cl1

  7. Carry Select Adder T = Tripple_adder / 2 + TMUX COST = 1.5 * COSTripple_adder+ (n+1) * COSTMUX EECS150 - Lec10-cl1

  8. Carry Select Adder • Extending Carry-select to multiple blocks • What is the optimal # of blocks and # of bits/block? • If # blocks too large delay dominated by total mux delay • If # blocks too small delay dominated by adder delay T a sqrt(N), Cost 2*ripple + muxes EECS150 - Lec10-cl1

  9. Carry Select Adder • Ttotal = sqrt(N) TFA • assuming TFA = TMUX • For ripple adder Ttotal = N TFA • Is sqrt(N) really the optimum? • From right to left increase size of each block to better match delays • Ex: 64-bit adder, use block sizes [13 12 11 10 9 8 7] • How about recursively defined carry select? EECS150 - Lec10-cl1

  10. a b ci ci+1 s Carry Look-ahead Adders • In general, for n-bit addition best we can achieve is delay  log(n) • How do we arrange this? (think trees) • First, reformulate basic adder stage: carry “kill” ki = ai’ bi’ carry “propagate” pi = ai bi carry “generate” gi = ai bi ci+1 = gi + pici si = pi ci EECS150 - Lec10-cl1

  11. s0 = p0 c0 c1 = g0 + p0c0 s2 = p2 c2 c3 = g2 + p2c2 s0 = p1 c1 c2 = g1 + p1c1 s3 = p3 c3 c4 = g3 + p3c3 p0 p1 p3 p2 a3 a2 a0 a1 s0 s3 s2 s1 g2 g1 g0 g3 b0 b1 b2 b3 c0 c4 Carry Look-ahead Adders • Ripple adder using p and g signals: • So far, no advantage over ripple adder: T  N EECS150 - Lec10-cl1

  12. Carry Look-ahead Adders • Expand carries: c0 c1 = g0 + p0 c0 c2 = g1 + p1c1 = g1 + p1g0 + p1p0c0 c3 = g2 + p2c2 = g2 + p2g1 + p1p2g0 + p2p1p0c0 c4 = g3 + p3c3 = g3 + p3g2 + p3p2g1 + . . . . . . • Why not implement these equations directly to avoid ripple delay? • Lots of gates. Redundancies (full tree for each). • Gate with high # of inputs. • Let’s reorganize the equations. EECS150 - Lec10-cl1

  13. cin pi pi+1 pi+k gi gi+1 gi+k Carry Look-ahead Adders • “Group” propagate and generate signals: • P true if the group as a whole propagates a carry to cout • G true if the group as a whole generates a carry • Group P and G can be generated hierarchically. P = pi pi+1 … pi+k G = gi+k + pi+kgi+k-1 + … + (pi+1pi+2 … pi+k)gi cout Cout = G + PCin EECS150 - Lec10-cl1

  14. Carry Look-ahead Adders c0 9-bit Example of hierarchically generated P and G signals: a0 Pa b0 a1 a b1 a2 Ga P = PaPbPc b2 c3 = Ga + Pac0 a3 Pb b3 a4 b b4 a5 Gb b5 c6 = Gb + Pbc3 a6 G = Gc + PcGb + PbPcGa Pc b6 a7 c b7 a8 c9 = G + Pc0 Gc b8 EECS150 - Lec10-cl1

  15. c0 c4 c8 c0 8-bit Carry Look-ahead Adder with 2-input gates. p0 P8=p0p1 g0 s0 c1= g0+p0c0 G8=g1+p1g0 p1 Pc=P8P9 g1 s1 c2=G8+P8c0 Gc=G9+P9G8 c2 p1 P9=p2p3 g2 c4=Gc+Pcc0 s2 Pe=PcPd c3= g2+p2c2 G9=g3+p3g2 p3 g3 Ge=Gd+PdGc s3 c4 c8=Ge+Pec0 Pa=p4p5 p4 g4 s4 c5= g4+p4c4 Ga=g5+p5g4 p5 Pd=PaPb g5 c6=Ga+Pac4 s5 Gd=Gb+PbGa c6 Pb=p6p7 p6 g6 s6 c7= g6+p6c6 Gb=g7+p7g6 p7 g7 s7 EECS150 - Lec10-cl1

  16. Adders in FPGAs EECS150 - Lec10-cl1

More Related