ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο 2005 Κεφάλαιο 5 -ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα Πανεπιστήµιο Κύπρου Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Αφαίρεση δυαδικών Περίληψη συµπλήρωµα ως προς 2 (2 s complement) ιεύρυνση σε συµπλήρωµα ως προς r Αφαίρεση µε συµπλήρωµα υαδικοί Προσθετέοι/Αφαιρετέοι Προσηµασµένοι (signed) αριθµοί Προσηµασµένη Πρόσθεση/Αφαίρεση Πρόβληµα Υπερχείλισης (overflow) υαδικοί Πολλαπλασιαστές MKM - 2 υαδική Αφαίρεση Μη-προσηµασµένοι αριθµοί: το σήµα του πλην δεν αναπαρίσταται σαφώς (explicitly). εδοµένου των δυαδικών αριθµών 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 διόρθωση! υαδική Αφαίρεση (συν.) Γενικά, εάν N > M, Dif = M-N+2 n, όπου το n = # bits. Στην περίπτωση II του προηγούµενου παραδείγµατος, Dif= 19-30+2 5 = 21. Για να διορθώσουµε τον µέτρο (magnitude) του Dif, που έπρεπε να ήταν be N-M, υπολογίστε 2 n -(M-N+2 n ). Αυτό είναι γνωστό ως το συµπλήρωµα ως προς 2 του Dif. MKM - 3 MKM - 4 Γενική ιαδικασία Για να αφαιρέσω 2 n-bit αριθµούς, M-N, στην βάση του 2: Βρέστε M-N. Εάν το MSB του Borrow είναι 0, τότε M N. Το αποτέλεσµα είναι θετικό και ορθό. Εάν το MSB του Borrow είναι 1, τότε N > M. Το αποτέλεσµα είναι αρνητικό και ο βαθµός του πρέπει να διορθωθεί µε την αφαίρεση του αριθµού από το 2 n (βρέστε το συµπλήρωµα ως προς 2). Ακόµη ένα παράδειγµα Αφαίρεσης εδοµένου M = 01100100 και N = 10010110, M-N= 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-50 Dif 1 1 0 0 1 1 1 0 206 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 MKM - 5 MKM - 6 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 1
Μπλοκ ιάγραµµα για τον αφαιρέτη Μπλοκ ιάγραµµα για υαδικό Αθροιστής-Αφαιρέτη B M 0 M 1 M 2 M 3 N 0 N 1 N 2 N 3 4-bit αφαιρέτης (επιλεκτική) µηχανή συµπληρώµατος του 2 Ενεργοποιείται όταν B=1; αλλιώς, διατήρησε το αποτέλεσµα του αφαιρέτη. εν είναι ο καλύτερος τρόπος υλοποίησης κυκλώµατος αφαιρέτη! M 0 M 1 M 2 M 3 υαδικός Αθροιστής Αφαίρεση/Πρόσθεση (Sub/Add) B Quadruple 2-to-1 MUX N 0 N 1 N 2 N 3 4-bit Αφαιρέτης (επιλεκτική) µηχανή συµπληρώµατος του 2 Αποτέλεσµα Sub/Add=1 αποτέλεσµα= M-N Sub/Add=0 αποτέλεσµα =M+N MKM - 7 MKM - 8 Συµπληρώµατα Υπάρχουν 2 τύποι συµπληρωµάτων για κάθε σύστηµα βάσης-r : Συµπλήρωµα βάσης (r s), πχ. συµπλήρωµα ως προς 2 και συµπλήρωµα ως προς 10. Μειωµένο (Diminished) Συµπλήρωµα βάσης (r-1 s), πχ. το συµπλήρωµα ως προς 1 και το συµπλήρωµα ως προς 9. Εξετάζουµε µόνο συµπληρώµατα του 2 και του 1 για την βάση του 2. Ίδια λογική ισχύει και για άλλες βάσεις (πχ. δεκαδική). Συµπλήρωµα ως προς 2 Για ένα θετικό δυαδικό αριθµό µε n ψηφία N 2, το συµπλήρωµα ως προς 2, 2C(N 2 ), δίνεται από: { 2C(N 2 ) = 2 n -N 2, εάν n > 0 0, εάν n = 0 Παράδειγµα: N 2 =1010 2C(N 2 ) = 2 4 -N 2 = 10000 2 1010 2 = 0110 2 Παράδειγµα : N 2 =11111 2C(N 2 ) = 2 5 -N 2 = 100000 2 11111 2 = 00001 2 MKM - 9 MKM - 10 Συµπλήρωµα ως προς 2 (συν.) Ένας πιο εύκολος τρόπος για να υπολογίσουµε το συµπλήρωµα του 2: 1. Αφήστε τα λιγότερο σηµαντικά (least significant) 0 και πρώτο 1 χωρίς αλλαγές 2. Αντικαταστήστε 0 µε 1 και 1 µε 0 στα υπόλοιπα περισσότερο σηµαντικά (higher significant) bits. Παραδείγµατα: complement χωρίς αλλαγές complement χωρίς αλλαγές N = 1010 N = 01011000 01 10 10101000 συµπλήρωµα ως προς 2 συµπλήρωµα ως προς 2 Συµπλήρωµα ως προς 1 Για ένα θετικό δυαδικό αριθµό n ψηφίων N 2, το συµπλήρωµα ως προς 1, 1C(N 2 ), δίνεται από: 1C(N 2 ) = (2 n -1) - N 2 Παράδειγµα: N 2 =011 1C(N 2 ) = (2 3-1)-N 2 = 111 2 011 2 = 100 2 Παράδειγµα : N 2 =1010 1C(N 2 ) = (2 4-1) - N 2 = 1111 2 1010 2 = 0101 2 Παρατήρηση: το συµπλήρωµα ως προς 1 µπορεί να παραχθεί µε το να βρούµε το συµπλήρωµα όλων των ψηφίων (bits) στον αριθµό. MKM - 11 MKM - 12 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 2
Παρατήρηση Συγκρίνετε το συµπλήρωµα ως προς 1 µε το συµπλήρωµα ως προς 2: 2 n -N= [(2 n -1) - N] + 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 Αφαίρεση µε συµπληρώµατα Για να βρούµε το M-N = M+(-N), µπορούµε να χρησιµοποιήσουµε µια συµπληρωµατική µορφή για την αναπαράσταση ενός αρνητικού αριθµού -N, και να κάνουµε µια απλή πρόσθεση. Πρέπει να µπορούµε να µετατρέψουµε το αποτέλεσµα. MKM - 13 MKM - 14 Αφαίρεση µε συµπλήρωµα ως προς 2 Εάν χρησιµοποιήσουµε συµπλήρωµα ως προς 2 για την αναπαράσταση αρνητικών αριθµών: 1. R I = M + 2C(N 2 ) = M + (2 n -N) = M N + 2 n 2. Εάν υπάρχει ένα µη-µηδενικό carry out στην πρόσθεση, M N, αγνόησε αυτό το carry και τα υπόλοιπα ψηφία είναι ίσα µε R = M-N. 3. Εάν, M < N, βρέστε το συµπλήρωµα ως προς 2 του R I (=2 n -R I = 2 n -(M N + 2 n ) = N M), και προσθέστε ένα αρνητικό πρόσηµο στην αρχή, πχ., το αποτέλεσµα του R είναι -2C([R I ] 2 ) = -(N-M). Παράδειγµα A = 1010100 (84 10 ), B = 1000011 (67 10 ) Βρέστε R = A-B: 2C(B) = 0111101 (61 10 ) A+B = 1010100+0111101 = 10010001 Απορρίπτω το carry, R = 0010001 (17 10 ) Βρέστε R = B-A: 2C(A) = 0101100 (44 10 ) B+A = 1000011+0101100 = 1101111 R = -2C(B+A) = -0010001 (-17) MKM - 15 MKM - 16 Αφαίρεση µε συµπλήρωµα ως προς 1 Εάν χρησιµοποιήσουµε συµπλήρωµα ως προς 1 για την αναπαράσταση αρνητικών αριθµών: 1. Σχηµάτισε R I = M + 1C(N 2 ) = M + (2 n -1-N) = M N + 2 n -1. 2. Εάν υπάρχει ένα µη-µηδενικό carry out στην πρόσθεση, M N, απόρριψε το και πρόσθεσε 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). Παράδειγµα A = 1010100 (84 10 ), B = 1000011 (67 10 ) Βρέστε R = A-B: 1C(B) = 0111100 (60 10 ) A+B = 1010100+0111100 = 10010000 Απορρίψτε το carry and προσθέστε 1, R = 0010000 + 1 = 0010001 (17 10 ) Βρέστε R = B-A: 1C(A) = 0101011 B+A = 1000011+0101011 = 1101110 R = -1C(B+A) = -0010001 (-17) MKM - 17 MKM - 18 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 3
υαδικοί Αθροιστές/Αφαιρέτης Εάν κάνετε αφαίρεση χρησιµοποιώντας συµπληρώµατα, εξαλείφουµε την λειτουργία της αφαίρεσης, και µπορούµε να χρησιµοποιήσουµε ένα αθροιστή µε κατάλληλα συµπληρώµατα για αφαίρεση. Μπορούµε να χρησιµοποιήσουµε προσθετέο και για πρόσθεση και για αφαίρεση: Πάρε το συµπλήρωµα του αφαιρετέου (subtrahend) για αφαίρεση Μην πάρεις το συµπλήρωµα του αφαιρετέου για πρόσθεση Για να υλοποιήσουµε ένα κύκλωµα πρόσθεσηςαφαίρεσης, χρειαζόµαστε µόνο ένα επιλεκτικό συµπληρωτή (complementer) και ένα αθροιστή. υαδικοί Αθροιστές/Αφαιρέτες (συν.) Ηαφαίρεση A-B µπορεί να γίνει παίρνοντας το συµπλήρωµα ως προς 2 του B και προσθέτοντας A. Το συµπλήρωµα ως προς 2 του B το παίρνουµε µε τo συµπλήρωση ως προς 1 του B και προσθέτοντας 1 σε αυτό. A-B = A + 2C(B) = A + 1C(B) + 1 = A + B + 1 MKM - 19 MKM - 20 4-bit υαδικός Αθροιστής/Αφαιρέτης Οι πύλες XOR ενεργούν σαν προγραµµατιζόµενοι αντιστροφείς MKM - 21 Όταν S=0, το κύκλωµα εκτελεί A + B. Το carry in είναι 0, και οι πύλες XOR περνούν το B χωρίς αλλαγές. Όταν S=1, το carry στο LSB είναι 1, και παίρνετε το συµπλήρωµα του Β (συµπλήρωµα ως προς 1) πριν την πρόσθεση; Άρα το κύκλωµα προσθέτει στο A το συµπλήρωµα ως προς 1 του B συν 1 (από το carry στο LSB). MKM - 22 S=0 S=1 B 3 B 2 B 1 B 0 B 3 B 2 B 1 B 0 0 1 Όταν S=0 διαλέγει πρόσθεση Όταν S=1 διαλέγει αφαίρεση MKM - 23 MKM - 24 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 4
Όταν C 4 = 0 και S=1 σηµαίνει ότι το A < B και πρέπει να διορθωθεί το αποτέλεσµα R 3 R 0 (διαφάνεια 15). Άρα, πρέπει να υπολογίσουµε το συµπλήρωµα ως προς 2 του R 3 R 0 : Χρησιµοποιείστε ένα ειδικό κύκλωµα για το συµπλήρωµα ως προς 2 ή Χρησιµοποιείστε τον 4-bit αθροιστή/ αφαιρέτη ξανά, µε A 3 A 0 =0000, B 3 B 0 =R 3 R 0, και S=1. Προσηµασµένοι υαδικοί Αριθµοί Σύστηµα Προσηµασµένου-µέτρου (magnitude): Οι προσηµασµένοι αριθµοί αναπαριστούνται χρησιµοποιώντας το MSB του δυαδικού αριθµού για την εύρεση του πρόσηµου του αριθµού: Εάν MSB = 0 θετικός αριθµός Εάν MSB = 1 αρνητικός αριθµός Μην το συγχύσετε µε µη- προσηµασµένους αριθµούς! MKM - 25 MKM - 26 Προσηµασµένοι υαδικοί Αριθµοί (συν.) Για παράδειγµα: -10 10-1010 2 σε µη-προσηµασµένο (- το πρόσηµο καθορίζεται σαφώς) 11010 2 σε προσηµασµένο (- το πρόσηµο καθορίζεται έµµεσα αφού MSB=1) Άλλο παράδειγµα: 1011 2 11 10 σε µη-προσηµασµένο -3 10 σε προσηµασµένο Προσηµασµένοι υαδικοί Αριθµοί (συν.) Για την υλοποίηση πρόσθεσης προσηµασµένου- µέτρου και αφαίρεση χρειαζόµαστε να ξεχωρίσουµε το ψηφίο πρόσηµου από τα ψηφία µέτρου, και να βλέπουµε τα magnitude bits σαν ένα µη-προσηµασµένο αριθµό (κάντε την διόρθωση όπου χρειάζεται). Για την αποφυγή της διόρθωσης, χρησιµοποιείται το σύστηµα προσηµασµένουσυµπληρώµατος. MKM - 27 MKM - 28 Σύστηµα Προσηµασµένου- Συµπληρώµατος Το µέτρο ενός αρνητικού αριθµού αναπαρίσταται στην συµπληρωµατική του µορφή (το συµπλήρωµα του 2 ή του 1). Πχ.: Χρησιµοποιούµε 8-bits στην αναπαράσταση -9 10 and 9 10-9 10 : 1001001 2 σε προσηµασµένο-µέτρο 11110110 2 σε προσηµασµένο συµπλήρωµα ως προς 1 11110111 2 σε προσηµασµένο συµπλήρωµα ως προς 2 9 10 = 00001001 2 σε όλα τα πιο πάνω συστήµατα Προσηµασµένη-Magnitude Πρόσθεση-Αφαίρεση Για την εκτέλεση πρόσθεσης ή αφαίρεσης 2 αριθµών M και N σε προσηµασµένο-µέτρου, ακολουθήστε τους κανόνες αριθµητικής: Ίδιο πρόσηµο: προσθέστε και κρατήστε το ίδιο πρόσηµο. ιαφορετικά πρόσηµα: Αφαιρέστε το N από το M; εάν το Borrow == 1, διορθώστε το αποτέλεσµα παίρνοντας το συµπλήρωµα του 2. Το πρόσηµο είναι αρνητικό. Παράδειγµα: M:00011001, N:10100101 το N είναι αρνητικό, άρα βρέστε M-N =0011001-0100101 =1110100, µε end borrow 1. Αυτό υπονοεί ότι το M-N είναι αρνητικός αριθµός, και για την διόρθωση του βρίσκουµε το συµπλήρωµα ως προς 2 0001100 άρα 10001100. MKM - 29 MKM - 30 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 5
Πρόσθεση Προσηµασµένου- Συµπληρώµατος Η πρόσθεση 2 προσηµασµένων αριθµών, µε αρνητικούς που αναπαριστούνται σε προσηµασµένο συµπλήρωµα ως προς 2, παράγεται προσθέτοντας τους 2 αριθµούς (συµπεριλαµβανοµένων των sing bits). Το Carry out αγνοείται. Παραδείγµατα: (Υποθέστε αναπαραστάσεις 5-ψηφίων) 01010 (+10) 01010 (+10) 10110 (-10) 10110 (-10) +00101 (+5) +11011 (-5) +00101 (+5) +11011 (-5) 01111 (+15) 00101 (+5) 11011 (-5) 10001 (-15) Πρόσθεση Προσηµασµένου- Συµπληρώµατος (συν.) Είναι διαφορετικό αυτό µε την αναπαράσταση αρνητικών αριθµών σε προσηµασµένο συµπλήρωµα του 2! Να θυµάστε ότι όταν MSB = 1 ο αριθµός είναι αρνητικός και χρειάζεται η εύρεση του συµπληρώµατος ως προς 2 του µέτρου. Παράδειγµα: Πιο είναι το δεκαδικό αντίστοιχο του 1001001 2? Είναι αρνητικός αριθµός αφού το MSB=1 Magnitude = 001001 το συµπλήρωµα του 2 του magnitude = 110111 Ο αριθµός είναι το -55 10 MKM - 31 MKM - 32 Αφαίρεση Προσηµασµένου- Συµπληρώµατος Η αφαίρεση 2 προσηµασµένων αριθµών, µε αρνητικούς στην προσηµασµένη µορφή συµπληρώµατος του 2, µπορεί να βρεθεί µε το συµπλήρωµα του 2 του αφαιρετέου (subtrahend) (µαζί µε το ψηφίο πρόσηµου) και την πρόσθεση του αφαιρέτης (minuend). Αγνοείται το 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) Το πρόβληµα της Υπερχείλισης Εάν η πρόσθεση 2 n-bit αριθµών είναι ένας αριθµός µε n+1 bits, τότε εµφανίζεται η κατάσταση υπερχείλισης. Η εύρεση υπερχείλισης µπορεί να υλοποιηθεί είτε µε υλικό(h/w) ή λογισµικό. Η εύρεση εξαρτάται από το αριθµητικό σύστηµα που χρησιµοποιείται: προσηµασµένο ή µη-προσηµασµένο. MKM - 33 MKM - 34 Το πρόβληµα της Υπερχείλισης στο Μη-Προσηµασµένο Σύστηµα Πρόσθεση: Όταν το Carry out == 1. Αφαίρεση: εν µπορεί να γίνει ποτέ. Το µέτρο του αποτελέσµατος είναι πάντα ίσο ή µικρότερο από τον πιο µεγάλο των 2 αριθµών. ΕΝ είναι πρόβληµα! Το πρόβληµα της Υπερχείλισης στο Προσηµασµένου Σύστηµα συµπληρώµατος του 2 Να θυµάστε ότι το MSB είναι το πρόσηµο. Αλλά προστίθεται και το πρόσηµο! Άρα ένα carry out == 1 δεν σηµαίνει πάντα υπερχείλιση. Υπερχείλιση παρατηρείται ΜΟΝΟ όταν και οι 2 αριθµοί έχουν το ίδιο πρόσηµο. Αυτή η κατάσταση µπορεί να βρεθεί όταν το carry out (C n ) είναι διαφορετικό από το carry της προηγούµενης θέσης (C n-1 ). MKM - 35 MKM - 36 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 6
Το πρόβληµα της Υπερχείλισης στο Προσηµασµένου Σύστηµα συµπληρώµατος του 2(συν.) Παράδειγµα 1: M=65 10 και N=65 10 σε ένα 8-bit προσηµασµένο σύστηµα συµπληρώµατος του 2. 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 προσηµασµένο σύστηµα συµπληρώµατος του 2. M = N = 10111111 2 M+N = 01111110 µε C n =1. Αυτό είναι πάλι λάθος! Βάλτε το C n σαν το MSB για να πάρετε 101111110 2 (-130 10 ) που είναι ορθό, αλλά χρειάζεται 9-bits υπερχείλιση MKM - 37 Εύρεση Υπερχείλισης στο Προσηµασµένο Σύστηµα συµπληρώµατος του 2 Οι καταστάσεις υπερχείλισης εντοπίζονται συγκρίνοντας τις τιµές στο carry έξω και µέσα του sign bit (C n και C n-1 ). n-bit αθροιστής/αφαιρέτης µε λογική εύρεσης υπερχείλισης V C C n+1 C n n-bit αθροιστής/ αφαιρέτης το C =1 δείχνει υπερχείλιση όταν προσθέτουµε/αφαιρούµε µη-προσηµασµένους αριθµούς. το V=1 δείχνει υπερχείλιση όταν προσθέτουµε/αφαιρούµε προσηµασµένους αριθµούς οι οποίοι είναι συµπλήρωµα ως προς 2 MKM - 38 υαδικός Πολ/στης Οδυαδικός πολ/σµός µοιάζει µε τηον δεκαδικό πολ/σµό: ο n-bit multiplicand πολ/ζεται µε κάθε bit του m-bit multiplier, αρχίζοντας από το LSB, για την εύρεση n µερικών γινοµένων. Κάθε διαδοχικό σύνολο των µερικών γινοµένων γίνεται µετατόπιση 1 bit από αριστερά. Το αποτέλεσµα παράγεται µε την πρόσθεση m γραµµών των µερικών γινοµένων. υαδικός Πολ/στης (συν.) Παράδειγµα: Πολ/στης A=A 1 A 0 και πολ/στέος B=B 1 B 0 Βρέστε το C = AxB: 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 MKM - 39 MKM - 40 Κύκλωµα υαδικού Πολ/στή πολ/στης 2 Χ 2 ψηφία Κύκλωµα υαδικού Πολ/στή πολ/στης 4 Χ 3 ψηφία Το 4 χ 3 ψηφία βγάζει αποτέλεσµα 7 ψηφίων Οι ηµι-αθροιστές είναι αρκετοί αφού δεν υπάρχει Carry-in Μαζί µε τις δύο εισόδους στην πρόσθεση MKM - 41 MKM - 42 Κεφάλαιο 5-ii: Αριθµητικές Συναρτήσεις και Κυκλώµατα 7