HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων Διδάσκων: Χ. Σωτηρίου, Βοηθός: (θα ανακοινωθεί) http://inf-server.inf.uth.gr/courses/ce430/ 1 Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 2 1
Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 3 Αθροιστής χωρίς Κρατούμενο 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 2
Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 5 Αθροιστής με Κρατούμενο 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 3
Έμμεση Υλοποίηση και Σήματα 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, co) προκύπτουν από έμμεσες εκφράσεις: G = A.B D = A.B P = A + B ή P = A (+) B Έτσι, οι εκφράσεις για co, s μετατρέπονται ως εξής: co = G + P ci και s = p (+) ci 7 Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 8 4
Σειριακό Κρατούμενο Η απλούστερη υλοποίηση ενός ν-bit αθροιστή Εν σειρά το κάθε ψηφίο ν παίρνει κρατούμενο από το (ν-1) Μειονεκτήματα Μεγάλης καθυστέρησης κρίσιμο μονοπάτι Από το co μέχρι το δεξιότερο κρατούμενο 9 Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 10 5
Πρόγνωση Κρατουμένου Ο βασικός στόχος είναι να μειωθεί η μεγάλη καθυστέρηση της αλυσίδας των κρατουμένων των ν-bit Βασική ιδέα Ακριβής πρόγνωση κρατουμένου πριν αυτό προκύψει από τις εξισώσεις Για ομάδες ν-bit (όπου συνήθως v ~ 4) Υπολογίζεται η πρόγνωση του κρατουμένου αυτή προωθείται στην επόμενη ομάδα Η καθυστέρηση της πρόγνωσης είναι σημαντικά μικρότερη από τον σειριακή προώθηση του κρατουμένου 11 Πρόγνωση Κρατουμένου - Γένεση, Προώθηση Στην πρόσθεση 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 12 6
Πρόγνωση Κρατουμένου 4-bit Αθροιστής C4 = (G3 + G2P3 + G1P2P3 + G0P1P2P3) + C0(P0P1P2P3) PG = P0P1P2P3 GG = G3 + G2P3 + G1P2P3 + G0P1P2P3 C4 = GG + C0 PG 13 Πρόγνωση Κρατουμένου 16-bit Αθροιστής Ιεραρχικά η μονάδα LCU υπολογίζει τα: PG, GG c16 14 7
Πρόγνωση Κρατουμένου 64-bit Αθροιστής Ίδια ιδέα με 2 ο επίπεδο ιεραρχίας 15 Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 16 8
Ολίσθηση και Πρόσθεση 1011001 x 1101 : 1011001 1101 x 1 : 1011001 0 : 0000000 1 : 1011001 1 : 1011001 + 10010000101 Πολλαπλασιαστέος Πολλαπλασιαστής Προσθέτουμε με τον πολλαπλασιαστή από δεξιά προς αριστερά 17 Ολίσθηση και Πρόσθεση << 1 a[ν-1:0] Παράλληλη είσοδος Σειριακή είσοδος + m[2ν-1:0] Αποτέλεσμα b[x] 18 9
Δυαδικός Πολλαπλασιαστής Εκτελεί Μη-Προσημασμένο Πολλαπλασιασμό Carry out P A 1 n n A 0 + B n 19 Δυαδικός Πολλαπλασιαστής Χρησιμοποιεί: 1 n-bit Αθροιστή 3 Καταχωρητές: P, A, B Έλεγχο αν το A 0 είναι 0/1 Αρχικοποίηση P = 0, A = πρώτος αριθμός, B = δεύτερος αριθμός Αλγόριθμος: 1. Αν το A 0 είναι 1, P = P + B (B = b n-1 b n-2 b 0 ) 2. Ολίσθηση του Ζεύγους (P, A) κατά 1 δεξιά το τελευταίο bit του A δεν χρησιμοποιείται 20 10
Παράδειγμα Πολλαπλασιασμού 21 Αλγόριθμος Πολλαπλασιασμού 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; } 22 11
Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 23 Πολλαπλασιασμός με Πίνακα (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 24 12
Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 25 Πολλαπλασιασμός Μερικών Παραγόντων 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 οι τέσσερις αυτοί συνδυασμοί μπορούν να γίνουν σε σύνολα από δυαδικά ψηφία 26 13
Πολλαπλασιαστής Δέντρου Wallace Partial Μερικά products Γινόμενα First Πρώτο stage Στάδιο 6 5 4 3 2 1 0 6 5 4 3 2 1 0 Bit position (a) (b) Second Δεύτερο stage Στάδιο Final Τελικό adderστάδιο 6 5 4 3 2 1 0 6 5 4 3 2 1 0 FA (c) HA (d) 27 Πολλαπλασιαστής Δέντρου Wallace Μερικά Γινόμενα Πρώτο Στάδιο Δεύτερο Στάδιο Τελικό Στάδιο 28 14
Πολλαπλασιασμός Μερικών Παραγόντων 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 29 Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 30 15
Πολλαπλασιασμός Υπολογισμένων Μερικών Παραγόντων Ειδική περίπτωση του πίνακα όπου η συνδυαστική λογική είναι απλή Βασική ιδέα - πολλαπλασιασμός ν-bit με 2-bit: + 11 << 1 10 Είσοδος Α (ν-bits) ν b0 01 00 Είσοδος Β (2-bits) 31 Πολλαπλασιασμός Υπολογισμένων Μερικών Παραγόντων Υλοποίηση πολλαπλασιασμού μερικών παραγόντων σε FPGA: Ποια συνάρτηση υλοποιεί το LUT 4άρων εισόδων; 32 16
Πολλαπλασιασμός Υπολογισμένων Μερικών Παραγόντων Υλοποίηση πολλαπλασιασμού μερικών παραγόντων σε FPGA: Ποια συνάρτηση υλοποιεί το LUT 4άρων εισόδων; 33 Περιεχόμενα Κυκλώματα Πρόσθεσης Half-adder Full-Adder Σειριακό Κρατούμενο Ripple Carry Πρόγνωση Κρατουμένου Carry Lookahead Κυκλώματα Πολλαπλασιασμού Ολίσθηση και Πρόσθεση Shift and Add Πολλαπλασιασμός με Πίνακα Αποτελεσμάτων Μερικών Παραγόντων Partial Products Υπολογισμένων Μερικών Παραγόντων Computed Partial Products Διαίρεση 34 17
Διαίρεση 0111000010(450) 10001 (17) 35 Διαίρεση 0111000010(450) 10001 (17) 01110 011100 10001 010110-10001 001010 010101 10001 00100 01000 11010 (26) 5-bit διαιρέτης < διαιρετέο κατεβάζουμε ψηφίο ολίσθηση-αφαίρεση, 1 στο πηλίκο κατεβάζουμε ψηφίο ολίσθηση-αφαίρεση, 1 στο πηλίκο κατεβάζουμε ψηφίο, υπόλοιπο < διαιρέτη, 0 στο πηλίκο κατεβάζουμε ψηφίο Ολίσθηση-αφαίρεση, 1 στο πηλίκο κατεβάζουμε ψηφίο, υπόλοιπο < διαιρέτη, 0 στο πηλίκο Σε κάθε βήμα κάνουμε: Σύγκριση Ολίσθηση Αφαίρεση 36 18
Αλγόριθμος Διαίρεσης 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]); } 37 Δυαδικός Διαιρέτης Πανομοιότυπη Διάταξη με τον Πολλαπλασιαστή P n + 1 A n - 0 B 38 n 19
Δυαδικός Διαιρέτης Για να Υπολογίσουμε το Α/Β Αρχικοποίηση: Αποθηκεύουμε το Α στον Καταχωρητή Α, Το Β στον Καταχωρητή Β, Μηδενίζουμε τον P Αλγόριθμος: Για n bits, n επαναλήψεις: 1. Ολισθαίνουμε το Ζεύγος (P, A) 1 bit αριστερά 2. Εκτελούμε P = P B 3. Αν το αποτέλεσμα < 0, θέτουμε A 0 σε 0, αλλιώς σε 1 4. Αν το αποτέλεσμα < 0, επαναφέρουμε την παλιά τιμή του P Eκτελώντας P = P + B 39 20