HY220 Εργαςτήριο Ψηφιακών Κυκλωμάτων Διδάςκων: Χ. Σωτηρίου, Βοηθοί: Ε. Κουναλάκησ, Π. Ματτθαιάκησ http://www.csd.uoc.gr/~hy220 1 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 2 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 1
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 3 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Αθροιςτήσ χωρίσ Κρατούμενο Half Adder a b co s 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 s = a b + ab = a (+) b co = ab 4 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 2
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 5 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Αθροιςτήσ με Κρατούμενο Full Adder a b ci co s 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 s = a b ci + a bci + ab ci + abci = ci (a b + ab) + ci (a b + ab ) = ci (a (+) b) + ci (a (+) b) = a (+) b (+) c co = a bci + ab ci + abci + abci = ab (ci + ci ) + ci (a b + ab ) = ab + ci(a (+) b) 6 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 3
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 7 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Σειριακό Κρατούμενο Η απλοφςτερθ υλοποίθςθ ενόσ ν-bit ακροιςτι Εν ςειρά το κάκε ψθφίο ν παίρνει κρατοφμενο από το (ν-1) Μειονεκτιματα Μεγάλθσ κακυςτζρθςθσ κρίςιμο μονοπάτι Από το co μζχρι το δεξιότερο κρατοφμενο 8 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 4
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 9 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Πρόγνωςη Κρατουμένου Ο βαςικόσ ςτόχοσ είναι να μειωκεί θ μεγάλθ κακυςτζρθςθ τθσ αλυςίδασ των κρατουμζνων των ν-bit Βαςικι ιδζα Ακριβισ πρόγνωςθ κρατουμζνου πριν αυτό προκφψει από τισ εξιςϊςεισ Για ομάδεσ ν-bit (όπου ςυνικωσ v ~ 4) Υπολογίηεται θ πρόγνωςθ του κρατουμζνου αυτι προωκείται ςτθν επόμενθ ομάδα Η κακυςτζρθςθ τθσ πρόγνωςθσ είναι ςθμαντικά μικρότερθ από τον ςειριακι προϊκθςθ του κρατουμζνου 10 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 5
Πρόγνωςη Κρατουμένου - Γένεςη, Προώθηςη Στθν πρόςκεςθ A + Β παράγεται κρατοφμενο μόνο όταν ΑΒ: G = AB Ζνα κρατοφμενο προάγεται ςτο επόμενο ψθφίο όταν: P = A + B Το κρατοφμενο μπορεί να εκφραςτεί ωσ: co = G + P ci Για ν=4-bits: c1 = G0 + P0 c0 c2 = G1 + P1 c1 = G1 + P1(G0 + P0 c0) = G1 + G0P1 + c0p0p1 c3 = G2 + G1P2 + G0P1P2 + C0P0P1P2 C4 = G3 + G2P3 + G1P2P3 + C0P0P1P2P3 11 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Πρόγνωςη Κρατουμένου 4-bit Αθροιςτήσ C4 = (G3 + G2P3 + G1P2P3 + G0P1P2P3) + C0(P0P1P2P3) PG = P0P1P2P3 GG = G3 + G2P3 + G1P2P3 + G0P1P2P3 C4 = GG + C0 PG 12 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 6
Πρόγνωςη Κρατουμένου 16-bit Αθροιςτήσ Ιεραρχικά θ μονάδα LCU υπολογίηει τα: PG, GG c16 13 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Πρόγνωςη Κρατουμένου 64-bit Αθροιςτήσ Ίδια ιδζα με 2 ο επίπεδο ιεραρχίασ 14 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 7
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 15 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Ολίςθηςη και Πρόςθεςη 1011001 x 1101 : 1011001 1101 x 1 : 1011001 0 : 0000000 1 : 1011001 1 : 1011001 + 10010000101 Πολλαπλασιαστέος Πολλαπλασιαστής Προςκζτουμε με τον πολλαπλαςιαςτι από δεξιά προσ αριςτερά 16 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 8
Ολίςθηςη και Πρόςθεςη << 1 a[ν-1:0] Παράλληλη είςοδοσ Σειριακή είςοδοσ + m[2ν-1:0] Αποτζλεςμα b[x] 17 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Αλγόριθμοσ Πολλαπλαςιαςμού MULTIPLY(x, y, m) // Είςοδοι - x : πολλαπλαςιαςτζοσ, y : πολλαπλαςιαςτισ, Ζξοδοσ m : γινόμενο { n = LENGTH(y); m = 0; t = x; // ολιςκθτισ // for i in 1 to n // για κάκε ψθφίο του y // { if (y[i] == 1) m = m + t; // πρόςκεςθ μερικοφ παράγοντα // t = t << 1; // ολίςκθςθ 1 ψθφίο δεξιά για κάκε ψθφίο του y // } return r; } 18 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 9
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 19 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Πολλαπλαςιαςμόσ με Πίνακα (LUT) Γριγορθ μνιμθ για λίγα ψθφία Χρθςιμοποιείται για FPGAs Μικρι κακυςτζρθςθ Εκκετικό μζγεκοσ 3x3 LUT 000 001 010 011 100 101 110 111 000 000000 000000 000000 000000 000000 000000 000000 000000 001 000000 000001 000010 000011 000100 000101 000110 000111 010 000000 000010 000100 000110 001000 001010 001100 001110 011 000000 000011 000110 001001 001100 001111 010010 010101 100 000000 000100 001000 001100 010000 010100 011000 011100 101 000000 000101 001010 001111 010100 011001 011110 100011 110 000000 000110 001100 010010 011000 011110 100100 101010 111 000000 000111 001110 010101 011100 100011 101010 110001 20 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 10
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 21 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Πολλαπλαςιαςμόσ Μερικών Παραγόντων 67 x 54 1 ο με 1 ο 2 ο με 1 ο 1 ο με 2 ο 2 ο με 2 ο 67 X 54 28 240 350 3000 + 3618 67 X 54 28 240 350 3000 + 3618 67 X 54 28 240 350 3000 + 3618 67 X 54 28 240 350 3000 + 3618 οι τζςςερισ αυτοί ςυνδυαςμοί μποροφν να γίνουν ςε ςφνολα από δυαδικά ψηφία 22 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 11
Πολλαπλαςιαςμόσ Μερικών Παραγόντων 6-bit πολλαπλαςιαςτισ από 3-bit Πίνακεσ a[2:0] b[2:0] 3x3 LUT 6 + 9 + m[11:0] 12 a[2:0] b[5:3] 3x3 LUT 6 9 << 3 a[5:3] b[2:0] 3x3 LUT 6 + 9 << 3 9 a[5:3] b[5:3] 3x3 LUT 6 9 << 3 23 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 24 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 12
Πολλαπλαςιαςμόσ Υπολογιςμένων Μερικών Παραγόντων Ειδικι περίπτωςθ του πίνακα όπου θ ςυνδυαςτικι λογικι είναι απλι Βαςικι ιδζα - πολλαπλαςιαςμόσ ν-bit με 2-bit: << 1 + 11 10 Είσοδος Α (ν-bits) ν b0 01 00 Είσοδος Β (2-bits) 25 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Πολλαπλαςιαςμόσ Υπολογιςμένων Μερικών Παραγόντων Υλοποίθςθ πολλαπλαςιαςμοφ μερικϊν παραγόντων ςε FPGA: Ποια ςυνάρτθςθ υλοποιεί το LUT 4άρων ειςόδων; 26 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 13
Κυκλϊματα Πρόςκεςθσ Half-adder Full-Adder Σειριακό Κρατοφμενο Ripple Carry Πρόγνωςθ Κρατουμζνου Carry Lookahead Κυκλϊματα Πολλαπλαςιαςμοφ Ολίςκθςθ και Πρόςκεςθ Shift and Add Πολλαπλαςιαςμόσ με Πίνακα Αποτελεςμάτων Μερικϊν Παραγόντων Partial Υπολογιςμζνων Μερικϊν Παραγόντων Computed Partial Διαίρεςθ 27 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Διαίρεςη 0111000010(450) 10001 (17) 28 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 14
Διαίρεςη 0111000010(450) 10001 (17) 01110 011100 10001 010110-10001 001010 010101 10001 00100 01000 11010 (26) 5-bit διαιρζτθσ < διαιρετζο κατεβάηουμε ψθφίο ολίςκθςθ-αφαίρεςθ, 1 ςτο πθλίκο κατεβάηουμε ψθφίο ολίςκθςθ-αφαίρεςθ, 1 ςτο πθλίκο κατεβάηουμε ψθφίο, υπόλοιπο < διαιρζτθ, 0 ςτο πθλίκο κατεβάηουμε ψθφίο Ολίςκθςθ-αφαίρεςθ, 1 ςτο πθλίκο κατεβάηουμε ψθφίο, υπόλοιπο < διαιρζτθ, 0 ςτο πθλίκο Σε κάκε βιμα κάνουμε: Σφγκριςη Ολίςθηςη Αφαίρεςη 29 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα Αλγόριθμοσ Διαίρεςησ LONG_DIVISION(D, d, q, r) // Είςοδοι - D : Διαιρετζοσ, d : διαιρζτθσ, Ζξοδοι q : πθλίκο, r : υπόλοιπο { n = MSB(D); m = (n LENGTH(d)); x = 0; Dt = D; do { while (Dt[n:m] < d) // υπόλοιπο < διαιρζτθ // q[x++] = 0; m = m 1; // 0 ςτο πθλίκο, κατεβάηουμε ψθφίο // q[x++] = 1; // 1 ςτο πθλίκο // r[n-m:0] = Dt[n:m] d; // νζο υπόλοιπο // m = m 1; // κατεβάηουμε ψθφίο // Dt[n:0] = {r, D[m-1:0]};// ςυνζνωςθ υπολοίπου με διαιρετζο // } while (r > d); return (q[0:x], r[n-m:0]); } 30 ΗΥ220 - Διάλεξθ 7θ - Αρικμθτικά Κυκλϊματα 15