ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Αριθμητικές Συναρτήσεις και Κυκλώματα Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρόσθεση υαδική Πρόσθεση Περίληψη Ημι-αθροιστής Πλήρης Αθροιστής Αθροιστής Ριπής Αθροιστής Πρόβλεψης Κρατουμένου εκαδική Πρόσθεση Αθροιστής BCD Άλλες Αριθμητικές Συναρτήσεις/Κυκλώματα MKM - 2 Αθροιστής 1-bit Εκτελεί πρόσθεση μεταξύ δύο bits. Τέσσερις πιθανές πράξεις: 0+0=0 0+1=1 1+0=1 1+1=10 Η υλοποίηση του κυκλώματος απαιτεί 2 εξόδους, η μία για το άθροισμα (sum) και η άλλη για το κρατούμενο (carry). Ημι-αθροιστής (Half Adder) Εκτελεί πρόσθεση μεταξύ δύο bit. Πίνακας Αληθείας Είσοδοι: : A 0, B 0 A 0 B 0 S 0 C 1 Έξοδοι: : S 0, C 1 Ο δείκτης υποδεικνύει σημαντικότητα, 0 0 0 0 0 για LSB και 1 για το επόμενο 0 1 1 0 σημαντικό bit. υαδικές Συναρτήσεις: 1 0 1 0 S 0 = A 0 B 0 +A 0 B 0 = A 0 B 0 1 1 0 1 C 1 = A 0 B 0 MKM - 3 MKM - 4 Αριθμητικές Συναρτήσεις και Κυκλώματα 1
Ημι-αθροιστής (συν.) S 0 = A 0 B 0 +A 0 B 0 = A 0 B 0 C 1 = A 0 B 0 Πρόσθεση n-bit Σχεδιάστε ένα δυαδικό αθροιστή ο οποίος προσθέτει δύο n-bit δυαδικούς αριθμούς και παράγει ένα άθροισμα (sum) με n-bit και ένα κρατούμενο εξόδου (carry out) με 1-bit. ιάγραμμα μπλοκ Λογικό ιάγραμμα Παράδειγμα: Θεωρήστε n=4 C 1 A 0 B 0 Ημιαθροιστής 1-bit A 0 B 0 S 0 C out out C 3 C 2 C 1 C 0 1 1 0 1 0 A 3 A 2 A 1 A 0 1 1 0 1 +B 3 B 2 B 1 B 0 +1 1 0 1 -------------- ---------- S 3 S 2 S 1 S 0 1 0 1 0 S 0 C 1 Αυτό απαιτεί πρόσθεση 3ων-bit! MKM - 5 MKM - 6 Πλήρης Αθροιστής 1-bit (Full Adder) Πλήρης Αθροιστής 1-bit (συν.) Συνδυαστικό κύκλωμα που διεκπεραιώνει την πρόσθεση μεταξύ 3ων bits (2 bits προσθετέων και 1bit για κρατούμενο εισόδου--carry-in) C i+1 A i B i Πλήρης Αθροιστής 1-bit S i C i Οι K-χάρτες για: C i+1 : B i C i A i 0 0 1 0 S i : A i B ic i 0 1 1 1 0 1 0 1 1 0 1 0 A i B i C i S i C i+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 MKM - 7 MKM - 8 Αριθμητικές Συναρτήσεις και Κυκλώματα 2
Πλήρης Αθροιστής 1-bit (συν.) υαδικές συναρτήσεις: C i+1 S i i+1 = A i B i + A i C i + B i C i = A i B i C i + A i B i C i + A i B i C i + A i B i C i = A i B i C i Μπορείτε να σχεδιάσετε ένα πλήρη αθροιστή άμεσα από τις πιο πάνω συναρτήσεις (απαιτούνται 3 πύλες AND και 1 πύλη OR για το C i+1, και 2 πύλες XOR για το S i ) Υπάρχει καλύτερη υλοποίηση; Πλήρης Αθροιστής με 2 Ημι-αθροιστές Ένας πλήρης αθροιστής μπορεί να υλοποιηθεί και με 2 ημι-αθροιστές και 1 πύλη OR, αφού το C i+1 μπορεί να εκφραστεί ως: C i+1 = A i B i + A i B i C i + A i B i C i = A i B i + (A i B i + A i B i )C i = A i B i + (Ai B i )C i και το S i = A i B i C i A i B i S i C i+1 MKM - 9 C i MKM - 10 Συνδυαστικοί Αθροιστές n-bit Εκτελούν παράλληλη πρόσθεση πολλαπλών-bit 1. Αθροιστής Ριπής (Ripple Carry Adder) Απλός Σχεδιασμός Χρονοβόρος. Γιατί; ; (θα δείτε σε λίγο!) 2. Αθροιστής Πρόβλεψης Κρατουμένου (Carry Lookahead Adder) Πιο πολύπλοκος σχεδιασμός Μειώνει την καθυστέρηση του κυκλώματος Αθροιστής Ριπής n-bit (n-bit ripple carry adder) Κατασκευάζεται με n πλήρες αθροιστές 1- bit, δομημένοι παράλληλα. Ο ένας πλήρης αθροιστής 1-bit διαδέχεται τον άλλο, έτσι ώστε το κρατούμενο εξόδου (carry out) από τον ένα γίνετε το κρατούμενο εισόδου (carry in) του επόμενου. MKM - 11 MKM - 12 Αριθμητικές Συναρτήσεις και Κυκλώματα 3
Παράδειγμα: Αθροιστής Ριπής 4ων-bit C 4 C3 C2 C1 C0 A3 A2 A1 A0 +B3 B2 B1 B0 -------------- S3 S2 S1 S0 Καθυστέρηση Αθροιστή Ριπής Η καθυστέρηση του κυκλώματος ενός αθροιστή ριπής καθορίζεται από την καθυστέρηση του μονοπατιού του κρατουμένου από το LSB (C 0 ) στο MSB (C n ). Θεωρήστε την καθυστέρηση σε ένα 1-bit FA να είναι. Τότε, η καθυστέρηση του αθροιστή ριπής n-bit είναι n. MKM - 13 MKM - 14 Αθροιστής Πρόβλεψης Κρατουμένου (Carry Lookahead Adder -- CLA) Εναλλακτικός σχεδιασμός για ένα συνδυαστικό αθροιστή με n-bit. Πρακτικός σχεδιασμός με μειωμένη καθυστέρηση, αλλά απαιτεί πιο πολύπλοκο σχεδιασμό. Παράγεται από ένα μετασχηματισμό του σχεδιασμού αθροιστή ριπής. A i B i Σχεδιασμός CLA Από ένα FA, διαχωρίζουμε μεταξύ της παραγωγής (generation) του κρατουμένου (όταν ένα νέο κρατούμενο παράγεται,, C out =1) και της μετάδοσης (propagation propagation) του κρατουμένου (όταν ένα υπάρχον C in μεταδίδεται στο C out ) Παραγωγή: : G i = A i B i : if 1, C i+1 =1 Μετάδοση: : P i = A i B i : εάν 1 τότε C i+1 = C i Full Adder (FA) S i Partial Full Adder (PFA) B i A i C i+1 C i S i G i P i Ci MKM - 15 MKM - 16 Αριθμητικές Συναρτήσεις και Κυκλώματα 4
Σχεδιασμός CLA (συν.) Ένα bit από λογική G/P μόνο δεν βοηθά, αλλά ιαδοχική λογική G/P μπορεί να παράγει το κρατούμενο εξόδου ενός μπλοκ Σχεδιασμός CLA (συν.) C i+1 = G i + P i C i Ο σχεδιασμός του PFA διαχωρίζει την λειτουργικότητα (και άρα την υλοποίηση) του S από αυτή του G/P MKM - 17 MKM - 18 Σχεδιασμός CLA (συν.) Μπορεί ο σχεδιασμός της προηγούμενης διαφάνειας να λύσει το πρόβλημα της μεγάλης καθυστέρησης; Όχι, το κρατούμενο εξόδου συνεχίζει την κυμάτωση! Ιδέα: χρήση δύο επιπέδων λογικής για την παραγωγή του κρατούμενου εξόδου από οποιοδήποτε μπλοκ C i βάση του κρατούμενου εισόδου C 0 και των προσθετέων bits A i and B i Μπλοκ CLA Υλοποίηση: η C 1 = G 0 +P 0 C 0 C 2 = G 1 +P 1 C 1 = G 1 +P 1 (G 0 +P 0 C 0 ) = G 1 +P 1 G 0 +P 1 P 0 C 0 C 3 = G 2 + P 2 C 2 = G 2 +P 2 G 1 +P 2 P 1 G 0 +P 2 P 1 P 0 C 0 C 4 = G 3 +P 3 G 2 +P 3 P 2 G 1 +P 3 P 2 P 1 G 0 + P 3 P 2 P 1 P 0 C 0 = G 0-3 + P 0-3 C 0 Ομάδα Παραγωγής Κρατουμένου Ομάδα Μετάδοσης Κρατουμένου MKM - 19 MKM - 20 Αριθμητικές Συναρτήσεις και Κυκλώματα 5
Λογική Παραγωγής/Μετάδοσης για 4-bit CLA Όλα 2-επιπέδων Το Cout υπολογίζεται γρήγορα MKM - 21 εκαδική Πρόσθεση Σχεδιάστε ένα κύκλωμα για την εκτέλεση δεκαδικής πρόσθεσης, αφαίρεσης, Είσοδος σε κωδικοποιημένη δεκαδική μορφή, π.χ. BCD εκαδικός Αθροιστής BCD: 8 είσοδοι (4 bits για τον κάθε δεκαδικό αριθμό) 5 έξοδοι για το δεκαδικό άθροισμα και το κρατούμενο Θυμηθείτε τον κανόνα για BCD πρόσθεση: Προσθέτουμε 0110 στο άθροισμα αν αυτό είναι μεγαλύτερο του 1001, για να διορθώσουμε την τιμή του κρατουμένου MKM - 22 Αθροιστής Binary Coded Decimal (BCD) C = K + z3.z2 + z3.z1 Προσθετέος K Προσθετέος δυαδικός αθροιστής 4-bit z3 z2 z1 z0 ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Χειμερινό Εξάμηνο 2009 C 0 Άλλες Αριθμητικές Συναρτήσεις και Κυκλώματα δυαδικός αθροιστής 4-bit S3 S2 S1 S0 Άθροισμα BCD MKM - 23 Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Αριθμητικές Συναρτήσεις και Κυκλώματα 6
Περίληψη Αφαίρεση δυαδικών Συμπλήρωμα του 2 (2 s complement) Επέκταση σε συμπλήρωμα του r Αφαίρεση με συμπλήρωμα υαδικοί Αθροιστές/ΑφαιρέτεςΑφαιρέτες Προσημασμένοι (Signed) αριθμοί Προσημασμένη Πρόσθεση/Αφαίρεση Πρόβλημα Υπερχείλισης (Overflow) υαδικοί Πολλαπλασιαστές υαδική Αφαίρεση Μη-προσημασμένοι αριθμοί (Unsigned numbers) το πρόσημο δεν αναπαρίσταται ρητά (εννοείται). εδομένων δ των δυαδικών δ αριθμών M και N, βρείτε M-N: Περίπτωση I: M N, άρα, το MSB του Borrow είναι το 0 B 0 0 0 1 1 0 M 1 1 1 1 0 30 N -1 0 0 1 1-19 Το αποτέλεσμα είναι ορθό! Dif 0 1 0 1 1 11 Περίπτωση II: N > M, άρα, το MSB του Borrow είναι το 1 B 1 1 1 0 0 0 M 1 0 0 1 1 19 N -1 1 1 1 0-30 Το αποτέλεσμα χρειάζεται Dif 1 0 1 0 1 21 διόρθωση! MKM - 25 MKM - 26 υαδική Αφαίρεση (συν.) Γενικά, εάν N > M, Dif = M-N+2 n, όπου το n = # bits. Στην περίπτωση II του προηγούμενου παραδείγματος, Dif= 19-30+2 5 = 21. Για να διορθωθεί η απόλυτη τιμή (magnitude) του Dif, που έπρεπε να ήταν N-M, υπολογίζεται το 2 n -(M- N+2 n ). Αυτό είναι γνωστό ως το συμπλήρωμα του 2 (2 s complement) του Dif. Γενική ιαδικασία Για την αφαίρεση 2 n-bit αριθμών,, M-N, στην βάση του 2: Βρείτε M-N. Εάν το MSB του Borrow είναι 0, τότε M N. Το αποτέλεσμα είναι θετικό και ορθό. Εάν το MSB του Borrow είναι 1, τότε N > M. Το αποτέλεσμα είναι αρνητικό και ο βαθμός του πρέπει να διορθωθεί με την αφαίρεση του από το 2 n (βρείτε το συμπλήρωμα του 2). MKM - 27 MKM - 28 Αριθμητικές Συναρτήσεις και Κυκλώματα 7
Ακόμη ένα παράδειγμα Αφαίρεσης M = 01100100 και N = 10010110, βρείτε M-Ν ιάγραμμα Αφαιρέτη M 0 M 1 M 2 M 3 N 0 N 1 N 2 N 3 B 1 0 0 1 1 1 1 0 0 M 0 1 1 0 0 1 0 0 100 N -1 0 0 1 0 1 1 0-150 Dif 1 1 0 0 1 1 1 0 206 B 4-bit αφαιρέτης Ενεργοποιείται όταν B=1; αλλιώς, το αποτέλεσμα από τον αφαιρέτη περνά. 2 n 1 0 0 0 0 0 0 0 0 256 Dif - 1 1 0 0 1 1 1 0-206 0 0 0 1 1 0 0 1 0 50 Επιλεκτικό Συμπλήρωμα του 2 εν είναι ο καλύτερος τρόπος υλοποίησης κυκλώματος αφαιρέτη! MKM - 29 MKM - 30 ιάγραμμα υαδικού Αθροιστή-ΑφαιρέτηΑφαιρέτη M 0 M 1 M 2 M 3 N 0 N 1 N 2 N 3 B 4-bit Αθροιστής 4-bit Αφαιρέτης (Sub/Add) Quadruple 2-to-1 MUX Αποτέλεσμα Επιλεκτικό Συμπλήρωμα του 2 Sub/Add =1 αποτέλεσμα= M-N Sub/Add =0 αποτέλεσμα =M+N Συμπληρώματα Υπάρχουν 2 τύποι συμπληρωμάτων για κάθε σύστημα βάσης-r : Συμπλήρωμα βάσης r (r s complement) πχ. συμπλήρωμα του 2 για δυαδικό και συμπλήρωμα του 10 για δεκαδικό. Μειωμένο (Diminished) Συμπλήρωμα βάσης r (r-1 s complement) πχ. το συμπλήρωμα του 1 για δυαδικό και το συμπλήρωμα του 9 για δεκαδικό. Θα εξετάσουμε μόνο συμπληρώματα του 2 και του 1 για δυαδικούς (βάση 2). Η ίδια λογική ισχύει και για άλλες βάσεις (πχ. δεκαδική). MKM - 31 MKM - 32 Αριθμητικές Συναρτήσεις και Κυκλώματα 8
Συμπλήρωμα του 2 Για ένα θετικό δυαδικό αριθμό με n ψηφία N 2, το συμπλήρωμα μ του 2, 2C( C(N 2), 2 δίνεται από: { 2C( C(N 2 ) = 2 n -N 2, εάν N 2 0 0, εάν N 2 = 0 Παράδειγμα 1: N 2 =1010 2C( C(N 2 ) = 2 4 -N 2 = 10000 2 1010 2 = 0110 2 Παράδειγμα 2: N 2 =11111 2C( C(N 2 ) = 2 5 -N 2 = 100000 2 11111 2 = 00001 2 Συμπλήρωμα του 2 (συν.) Ένας πιο εύκολος τρόπος για να υπολογίσουμε το συμπλήρωμα του 2: 1. Αφήστε τα least significant 0 και πρώτο 1 χωρίς αλλαγές 2. Αντικαταστήστε 0 με 1 και 1 με 0 στα υπόλοιπα higher significant bits. Παραδείγματα: complement χωρίς αλλαγές complement χωρίς αλλαγές N = 1010 N = 010110001000 01 10 101010001000 συμπλήρωμα του 2 συμπλήρωμα του 2 MKM - 33 MKM - 34 Συμπλήρωμα του 1 Για ένα θετικό δυαδικό αριθμό N 2 με n ψηφία, το συμπλήρωμα του 1, 1C( C(N 2 ), δίνεται από: 1C( C(N 2 ) = (2 n -1) -N 2 Παράδειγμα 1: N 2 =011 1C(N 2 ) = (2 3-1) 1)-N 2 = 111 2 011 2 = 100 2 Παράδειγμα 2: N 2 =1010 1C(N 2 ) = (2 4-1) - N 2 = 1111 2 1010 2 = 0101 2 Παρατήρηση: το συμπλήρωμα του 1 μπορεί να παραχθεί ευκολότερα βρίσκοντας το συμπλήρωμα όλων των bits του αριθμό (bit-by-bit complementation). Παρατήρηση Συγκρίνετε το συμπλήρωμα του 1 με το συμπλήρωμα του 2: 2C( C(N 2 ) = 2 n -N 2 = [(2 n -1) -N 2 ] + 1 = 1C( C(N 2 ) +1 Άρα το, συμπλήρωμα του 2 μπορεί να βρεθεί βρίσκοντας το συμπλήρωμα του 1 και προσθέτοντας 1. Παράδειγμα: N = 1001 2C(N) = 2 4 N = 10000 1001 = 0111 1C(N) = 2 4 1 - N = 1111 1001 = 0110 2C(N) = 1C(N) + 1 = 0110 + 0001 = 0111 MKM - 35 MKM - 36 Αριθμητικές Συναρτήσεις και Κυκλώματα 9
Αφαίρεση με Συμπληρώματα Για να βρούμε το M-N = M+(-N), μπορούμε να χρησιμοποιήσουμε μια συμπληρωματική μορφή για την αναπαράσταση ενός αρνητικού αριθμού - N, και να κάνουμε μια απλή πρόσθεση. Πρέπει να μπορούμε να μετατρέψουμε το αποτέλεσμα. Αφαίρεση με Συμπλήρωμα του 2 Εάν χρησιμοποιήσουμε συμπλήρωμα του 2 για την αναπαράσταση αρνητικών αριθμών: 1. R I = M + 2C(N 2 ) = M + (2 n -N) = M N + 2 n 2. Εάν υπάρχει ένα μη-μηδενικό μηδενικό carry out στην πρόσθεση, τότε M N το carry out αγνοείται και τα υπόλοιπα ψηφία είναι ίσα με R = M-N. 3. Εάν M < N, τότε υπολογίζουμε το συμπλήρωμα του 2 του R n n n I (=2 - R I = 2 - (M N + 2 ) = N M) και προσθέτουμε ένα αρνητικό πρόσημο στην αρχή του αριθμού. ηλ., το αποτέλεσμα του R είναι -2C([R I ] 2 ) = -(N-M). MKM - 37 MKM - 38 Παράδειγμα A = 1010100 (84 10 ), B = 1000011 (67 10 Βρείτε R = A-B: 2C(B) = 0111101 (61 10 ) A+2C(B) = 1010100+0111101 = 10010001 Το carry απορρίπτεται, R = 0010001 (17 10 Βρείτε R = B-A: 2C(A) = 0101100 (44 10 ) B+2C(A) = 1000011+0101100 0101100 = 01101111 R = -2C(B+2C(A)) = -0010001 (-17 10 ) (το bit του carry δεν υπολογίζεται) 10 ) 10 ) Αφαίρεση με Συμπλήρωμα του 1 Εάν χρησιμοποιήσουμε συμπλήρωμα του 1 για την αναπαράσταση αρνητικών αριθμών: 1. R I = M + 1C(N 2 ) = M + (2 n -1-N) = M N + 2 n -1 2. Εάν υπάρχει ένα μη-μηδενικό μηδενικό carry out στην πρόσθεση, τότε M N το carry out αγνοείται και προσθέτουμε 1 στα υπόλοιπα ψηφία. Το αποτέλεσμα είναι R = M-N. 3. Εάν M < N, τότε υπολογίζουμε το συμπλήρωμα μ του 1 του R I (=2 n -1 -R I = 2 n -1 - (M N + 2 n -1) = N M) και προσθέτουμε το αρνητικό πρόσημο μπροστά. ηλ., το αποτέλεσμα του R είναι -1C([R I ] 2 ) = -(N-M). MKM - 39 MKM - 40 Αριθμητικές Συναρτήσεις και Κυκλώματα 10
Παράδειγμα A = 1010100 (84 10 ), B = 1000011 (67 10 Βρείτε R = A-B: 1C(B) = 0111100 (60 10 ) A+1C(B) = 1010100+0111100 = 10010000 Το carry απορρίπτεται και προσθέτουμε 1, R = 0010000 + 1 = 0010001 (17 10 ) Βρείτε R = B-A: 1C(A) = 0101011 B+1C(A) = 1000011+0101011 = 01101110 R = -1C(B+1C(A)) = -0010001 (-17) (το bit του carry δεν υπολογίζεται) 10 ) υαδικοί Αθροιστές/ΑφαιρέτεςΑφαιρέτες Εάν εκτελέσουμε αφαίρεση χρησιμοποιώντας συμπληρώματα, εξαλείφουμε ε την πράξη της αφαίρεσης, και, επομένως, μπορούμε να χρησιμοποιήσουμε έναν αθροιστή, με κατάλληλο κύκλωμα για συμπλήρωμα. Στην ακρίβεια, μπορούμε να χρησιμοποιήσουμε έναν αθροιστή, για πρόσθεση και για αφαίρεση: Συμπλήρωμα αφαιρετέου για αφαίρεση Μη-συμπλήρωση αφαιρετέου για πρόσθεση Για να υλοποιήσουμε ένα κύκλωμα πρόσθεσης/αφαίρεσης, χρειαζόμαστε ένα αθροιστή (adder) και ένα κύκλωμα που να επιλέγει μεταξύ συμπληρώματος ή μη (selective complementer) MKM - 41 MKM - 42 υαδικοί Αθροιστές/ΑφαιρέτεςΑφαιρέτες υαδικός Αθροιστής/Αφαιρέτης Αφαιρέτης 4 ων -bit Η αφαίρεση A -B μπορεί να γίνει υπολογίζοντας το συμπλήρωμα του 2 του B και προσθέτοντας το αποτέλεσμα στον A. Το συμπλήρωμα του 2 του B υπολογίζεται με (i) την συμπλήρωση του B και (ii) προσθέτοντας 1 στο αποτέλεσμα του (i). A-B = A + 2C(B) = A + 1C(B) + 1 = A + B + 1 -- Οι πύλες XOR λειτουργούν ως προγραμματιζόμενοι αντιστροφείς MKM - 43 MKM - 44 Αριθμητικές Συναρτήσεις και Κυκλώματα 11
υαδικός Αθροιστής/Αφαιρέτης Αφαιρέτης 4 ων -bit υαδικός Αθροιστής/Αφαιρέτης Αφαιρέτης 4 ων -bit Όταν S =0, το κύκλωμα εκτελεί A + B, αφού το carry in στο LSB είναι 0 και οι έξοδοι των πυλών XOR δίνουν B 0 = Β. Β S=0 Όταν S =1, το κύκλωμα εκτελεί Α + Β + 1 = A -B, αφού το carry στο LSB είναι 1 και οι έξοδοι των πυλών XOR δίνουν B 1 = Β. Άρα,, το κύκλωμα προσθέτει στον A το συμπλήρωμα μ του 1 του B συν 1 (από το carry στο LSB). B 3 B 2 B 1 B 0 0 Όταν S=0,επιλέγει πρόσθεση MKM - 45 MKM - 46 υαδικός Αθροιστής/Αφαιρέτης Αφαιρέτης 4 ων -bit υαδικός Αθροιστής/Αφαιρέτης Αφαιρέτης 4 ων -bit S=1 Όταν C 4 = 0 και S=1, τότε A < B και πρέπει να διορθωθεί το αποτέλεσμα R 3 R 0 (διαφάνεια 38). B 3 B 2 B 1 B 0 1 Όταν S=1, επιλέγει αφαίρεση Άρα, πρέπει να υπολογιστεί το συμπλήρωμα του 2 του R 3 R 0 : Χρησιμοποιείται ένα ειδικό κύκλωμα για το συμπλήρωμα του 2 ή Χρησιμοποιείται ο αθροιστής/αφαιρέτης ξανά, με A 3 A 0 =0000, B 3 B 0 =R 3 R 0 και S=1. MKM - 47 MKM - 48 Αριθμητικές Συναρτήσεις και Κυκλώματα 12
Προσημασμένοι υαδικοί Αριθμοί (Signed Binary Numbers) Σύστημα Προσημασμένης-Απόλυτης Απόλυτης-Τιμής (Signed-Magnitude system): Οι προσημασμένοι αριθμοί αναπαριστούνται χρησιμοποιώντας το MSB του δυαδικού αριθμού για τον καθορισμό του πρόσημου του αριθμού: Εάν MSB = 0 θετικός αριθμός Εάν MSB = 1 αρνητικός αριθμός Μην το συγχύσετε με μη-προσημασμένους (unsigned) αριθμούς! Προσημασμένοι Αριθμοί: Σύστημα Signed-Magnitude (συν.) Για παράδειγμα: -10 10 10-1010 2 σε μη-προσημασμένο (το πρόσημο δεν αποτελεί μέρος της δυαδικής τιμής) 110101010 2 σε προσημασμένο με signed-magnitude (το πρόσημο αναπαρίσταται με MSB=1) Άλλο παράδειγμα: 1011 2 11 10 σε -3 10 σε σε μη-προσημασμένο σε προσημασμένο με signed-magnitude MKM - 49 MKM - 50 Προσημασμένοι Αριθμοί Σύστημα Signed-Magnitude (συν.) Για την υλοποίηση πρόσθεσης ή αφαίρεσης με signed- magnitude, χρειαζόμαστε: Να ξεχωρίσουμε το bit του πρόσημου από τα magnitude bits, Να θεωρήσουμε τα magnitude bits ως ένα μη-προσημασμένο αριθμό (η διόρθωση πρέπει να γίνεται όπου χρειάζεται). Για αποφυγή της διόρθωσης, χρησιμοποιείται το σύστημα Προσημασμένου-Συμπληρώματος (Signed Complement). MKM - 51 Προσημασμένοι Αριθμοί: Σύστημα Προσημασμένου-Συμπληρώματος (Signed-Complement) Η απόλυτη τιμή (magnitude magnitude) ενός αρνητικού αριθμού αναπαρίσταται στην συμπληρωματική του μορφή (με συμπλήρωμα του 2 ή του 1). Πχ., Χρησιμοποιούμε 8-bits για την αναπαράσταση των -9 10 και 9 10 9 : -9 10 : 10001001 2 σε signed-magnitude 111101101110110 2 σε signed-1 s complement 111101111110111 2 σε signed-2 s complement 9 10 = 000010010001001 2 σε όλα τα πιο πάνω συστήματα MKM - 52 Αριθμητικές Συναρτήσεις και Κυκλώματα 13
Πρόσθεση/Αφαίρεση με Signed-Magnitude Για την εκτέλεση πρόσθεσης ή αφαίρεσης 2 αριθμών (M και N) σε signed-magnitude, it d ακολουθούμε τους γνωστούς κανόνες αριθμητικής: Ίδιο πρόσημο: προσθέτουμε και κρατούμε το ίδιο πρόσημο. ιαφορετικά πρόσημα: Αφαιρούμε το N από το M και εάν το Borrow == 1, διορθώνουμε το αποτέλεσμα παίρνοντας το συμπλήρωμα του 2. Το πρόσημο είναι αρνητικό. Παράδειγμα: : M=00011001, 0011001, N=10100101 το N είναι αρνητικό, άρα υπολογίζουμε M-N = 0011001-0100101 = 1110100, με End-Borrow = 1. M-N < 0 και για την διόρθωση του βρίσκουμε το συμπλήρωμα του 2 του Μ-Ν = Ν =0001100 αποτέλεσμα = 10001100. MKM - 53 Πρόσθεση με Signed-2 2 s Complement Η πρόσθεση 2 προσημασμένων αριθμών, όπου οι αρνητικοί αριθμοί αναπαρίστανται σε signed-2 s signed-2s complement, παράγεται προσθέτοντας τους 2 αριθμούς (συμπεριλαμβανομένων των sing bits). Το Carry out αγνοείται. Παραδείγματα: : (Υποθέστε αναπαραστάσεις 5-bit) 01010 (+10) 01010 (+10) 10110 (-10) 10110 (-10) +00101 (+5) +11011 (-5) +00101 (+5) +11011 (-5) 01111 (+15) 00101 (+5) 11011 (-5) 10001 (-15) MKM - 54 Πρόσθεση με Signed-2 2 s Complement (συν.) Όταν διαβάζεται αριθμούς σε 2 s complement να θυμάστε ότι, όταν MSB = 1 ο αριθμός είναι αρνητικός και χρειάζεται να υπολογίσετε το 2 s complement της απόλυτης τιμής (magnitude). Παράδειγμα: Πιο είναι το δεκαδικό αντίστοιχο του 1001001 2? Είναι αρνητικός αριθμός αφού το MSB=1 Magnitude = 001001 το συμπλήρωμα του 2 του magnitude = 110111 Ο αριθμός είναι το -55 10 Αφαίρεση με Signed-2 2 s Complement Η αφαίρεση 2 προσημασμένων αριθμών, όπου οι αρνητικοί αριθμοί αναπαρίστανται σε signed-2 s complement, παράγεται προσθέτοντας το 2 s complement του αφαιρετέου με τον αφαιρέτη (συμπεριλαμβανομένων των sing bits). Το Carry out αγνοείται. Παραδείγματα: : (5-bit αναπαραστάσεις) 01010 (+10) 01010 (+10) 10110 (-10) 10110 (-10) -00101 -(+5) -11011 -(-5) -00101 -(+5) -11011 -(-5) 01010 (+10) 01010 (+10) 10110 (-10) 10110 (-10) +11011 +(-5) +00101 +(+5) +11011 +(-5) +00101 +(+5) 00101 (+5) 01111 (+15) 10001 (-15) 11011 (-5) MKM - 55 MKM - 56 Αριθμητικές Συναρτήσεις και Κυκλώματα 14
Το πρόβλημα της Υπερχείλισης Εάν η πρόσθεση 2 n-bit αριθμών δίνει έναν αριθμό με n+1 bits, τότε εμφανίζονται συνθήκες υπερχείλισης. Η εύρεση υπερχείλισης μπορεί να υλοποιηθεί είτε με υλικό (h/w) ή λογισμικό (s/w). Η εύρεση εξαρτάται από το αριθμητικό σύστημα που χρησιμοποιείται: προσημασμένο ήμη- προσημασμένο. Το πρόβλημα της Υπερχείλισης στο Μη-Προσημασμένο Σύστημα Πρόσθεση: Όταν το Carry out == 1. Αφαίρεση: εν μπορεί να γίνει ποτέ. Το Magnitude του αποτελέσματος είναι πάντα ίσο ή μικρότερο από τον πιο μεγάλο των 2 αριθμών. ΕΝ είναι πρόβλημα! MKM - 57 MKM - 58 Το πρόβλημα της Υπερχείλισης στο Σύστημα Signed-2 s complement Να θυμάστε ότι το MSB είναι το πρόσημο. Αλλά προστίθεται και το πρόσημο! Άρα, ένα carry out == 1 δεν σημαίνει πάντα υπερχείλιση! Υπερχείλιση παρατηρείται ΜΟΝΟ όταν και οι 2 αριθμοί έχουν το ίδιο πρόσημο. Αυτή η κατάσταση μπορεί να βρεθεί όταν το τελικό carry out (C n ) είναι διαφορετικό από το carry της προηγούμενης θέσης (C n-1 ). Το πρόβλημα της Υπερχείλισης στο Σύστημα Signed-2 s complement (συν.) Παράδειγμα 1: M=65 10 και N=65 10 σε ένα 8-bit σύστημα με signed-2 s complement. M = N = 01000001 2 M+N = 10000010 με C n =0. Αυτό είναι λάθος αφού δίνει αρνητικό αριθμό! Εάν το C n οριστεί ως το MSB, τότε έχουμε 010000010 2 (130 10 ) που είναι ορθό, αλλά χρειάζεται 9-bits υπερχείλιση Παράδειγμα 2: M=-65 10 και N=-65 10 σε ένα 8-bit σύστημα με signed-2 s s complement. M = N = 10111111 2 M+N = 01111110 με C n =1. Αυτό είναι πάλι λάθος αφού δίνει θετικό αριθμό! Εάν το C n οριστεί ως το MSB, τότε έχουμε 101111110 2 (-130 10 που είναι ορθό, αλλά πάλι απαιτεί 9-bits υπερχείλιση 10 ) MKM - 59 MKM - 60 Αριθμητικές Συναρτήσεις και Κυκλώματα 15
Εύρεση Υπερχείλισης στο Σύστημα Signed-2 s complement Οι καταστάσεις υπερχείλισης εντοπίζονται συγκρίνοντας τις τιμές στο carry in και carry out του sign bit (C n-1 και C n ). n-bit αθροιστής/αφαιρέτης με λογική εύρεσης υπερχείλισης V C C n+1 C n n-bit αθροιστής/ αφαιρέτης το C =1 δείχνει υπερχείλιση όταν προσθέτουμε/αφαιρ. unsigned αριθμούς. το V=1 δείχνει υπερχείλιση όταν προσθέτουμε/αφαιρ. αριθμούς σε signed-2 s complement υαδικός Πολ/στης Ο δυαδικός πολ/σμός μοιάζει με τον δεκαδικό πολ/σμό: Ο n-bit πολλαπλασιαστέος (multiplicand) πολ/ζεται με κάθε bit του m-bit πολλαπλασιαστή (multiplier), αρχίζοντας από το LSB, για την παράγωγή n μερικών γινομένων. Το κάθε διαδοχικό σύνολο των μερικών γινομένων μετατοπίζεται 1 bit προς αριστερά. Το αποτέλεσμα παράγεται με την πρόσθεση των m γραμμών των μερικών γινομένων. MKM - 61 MKM - 62 υαδικός Πολ/στης (συν.) Παράδειγμα: Πολ/στης A=A 1 A 0 και πολ/στέος B=B 1 B 0 Βρείτε το C = AxB: Κύκλωμα υαδικού Πολ/στή πολ/στης 2-bit Χ 2-bit B 1 B 0 x A 1 A 0 ----------------- A 0 B 1 A 0 B 0 + A 1 B 1 A 1 B 0 ------------------------------- C 3 C 2 C 2 C 0 Οι Half Adders είναι αρκετοί αφού δεν υπάρχει Carry-in μαζί με τις δύο εισόδους της πρόσθεσης. MKM - 63 MKM - 64 Αριθμητικές Συναρτήσεις και Κυκλώματα 16
Κύκλωμα υαδικού Πολ/στή πολ/στης 4-bit Χ 3-bit Το 4-bit x 3-bit δίνει αποτέλεσμα 7-bit MKM - 65 Αριθμητικές Συναρτήσεις και Κυκλώματα 17