You are on page 1of 140

ARITHMETIC AND

LOGIC IN COMPUTER
SYSTEMS
Νταμπίτζιας Φώτιος
Καραλής Πασχάλης
Χατζής Νικόλαος
Credits to:
Mi Lu,
Texas A&M university

ARITHMETIC AND LOGIC IN
COMPUTER SYSTEMS
Στόχοι της διάλεξης:
● Η κατανόηση των διάφορων αριθμητικών συστημάτων που
χρησιμοποιούνται στα υπολογιστικά(και ευρύτερα στα ψηφιακά)
συστήματα.
● Η αφομοίωση των εννοιών που απασχολούν των σχεδιαστή που
υλοποιεί τις μονάδες πρόσθεσης,αφαίρεσης,πολλαπλασιασμού και
διαίρεσης (όπως η χωρική και χρονική πολυπλοκότητα).
● Η μελέτη του υλικού με το οποίο τα παραπάνω συστήματα
υλοποιούνται.
● Ο προβληματισμός πάνω στις
παραχωρήσεις(κόστους,χώρου,χρόνου κ.α) που πρέπει να κάνει ο
μηχανικός,δεδομένης της υφιστάμενης τεχνολογίας, για να
υλοποιήσει τις παραπάνω μονάδες.
● Με την ανάπτυξη της τεχνολογίας των VLSI(32nm κατά την
συγγραφή της εργασίας) πολλοί πολύπλοκοι αλγόριθμοι που μέχρι
πρόσφατα ήταν μη-υλοποιήσιμοι σε διαφορετικά αριθμητικά
συστήματα συναγωνίζονται για την μέγιστη αποτελεσματικότητα

Κεφάλαιο 1ο
Αριθμητικά συστήματα
Α)Conventional

Radic Number System του αριθμού Ν
d i ∈ {0,1.... , r −1 }
0in−1

,με το r να ονομάζεται βάση(radix) του συστήματος
Έτσι λοιπόν,ο αριθμός Ν μπορεί να εμφανιστεί ώς

Πχ

Θέματα προς συζήτηση 1) Πόσα bits χρειάζονται για να κωδικοποιηθεί ένας αριθμός λ? απάντηση: log 2 λ1 2)Πως μετατρέπουμε έναν αριθμό από και προς του conventional radix system? απάντηση: Διαιρούμε συνεχόμενα τον αριθμό μας με την βάση(r).Η μετατροπή τελειώνει όταν έχουμε κάνει την παραπάνω διαδικασία n-1 φορές .και το υπόλοιπο της ευκλείδιας διαίρεσης είναι το“δεξιότερο“ ψηφίο του αριθμού μας.

Όμως.όπως είναι φυσιολογικό.Προσημασμένοι αριθμοί Μέχρι τώρα ασχοληθήκαμε με μη-προσημασμένους αριθμούς. Αυτό γίνεται με τις παρακάτω τεχνικές: ● Πρόσημο-Τιμή ● Μειωμένο συμπλήρωμα της βάσης(diminished radix compliment) ● Συμπλήρωμα της βάσης(radix compliment) ● Προσημασμένα ψηφία ● Πόλωση ● RNS(Residue Number System) ● LNS(Logarithmic Number System) . υπάρχει η ανάγκη για αναπαράσταση ΚΑΙ προσημασμένων αριθμών.

Μέθοδος ΠρόσημοΤιμή Για να ξεχωρίσουμε τους θετικούς από τους αρνητικούς αριθμούς. που προφανώς ορίζεται ως εξής .το MSB παίρνει τιμές σύμφωνα με τον παρακάτω νόμο Πχ Απαραίτητη κρίνεται και η εισαγωγή του μέτρου του αριθμού.

συμβολίζεται ως εξής: Όπου N το σύνολο των ψηφίων του αριθμού πχ . και ορίζεται ως εξής Αλλιώς.Diminished Radix Compliment Αλλιώς ονομάζεται συμπλήρωμα του (r-1).

Radix Compliment Ονομάζεται και συμπλήρωμα του r και ορίζεται ως Εναλλακτικά θα το δούμε παρακάτω ως: πχ .

Αριθμοί των 4 Bit στα διάφορα αριθμητικά συστήματα .

Δηλαδή. για κάθε r>1 έχουμε: Σημείωση: Η επιλογή του α έγινε έτσι ώστε το σύστημα μας να είναι non-redudant(δηλαδή να μην περιέχει περιττά ψηφία).καθώς και να είναι πλήρες(κάθε αριθμός. .Signed-Digit Στο σύστημα αυτό.εντός κάποιον ορίων. είτε αρνητική τιμή. να μπορεί να απεικονιστεί). Η απόδειξη παραλείπεται.κάθε ψηφίο μπορεί να έχει είτε θετική.

Πχ Για να παραστήσουμε τον ακέραιο -3 (Χ=-3 . n=4. r=2. κ(δεκαδικά ψηφία)=0 ) στο σύστημα αυτό έχουμε τους εξής τρόπους: .Singed Digit. continued ΠΡΟΣΟΧΗ! Στο signed digit ένας αριθμός ΔΕΝ αντιστοιχείται ένα προς ένα με μια σειρά από ψηφία.

χρησιμοποιούνται οι έννοιες της mantissa(Μ)και του exponent(E) . αναπτύχθηκαν προτόκολλα που επιτρέπουν την υποδιαστολή να ολισθαίνει κατά μερικά ψηφία μέσα σε μια σειρά από ψηφία.Floating point numbers Μέχρι τώρα έχουμε περιγράψει αριθμούς (προσημασμένους ή μη. δεκαδικούς ή όχι) στους οποίους η τυχόν υποδιαστολή βρίσκονταν σε σταθερό σημείο(fixed-point). όπως είναι γνωστό.Γενικότερα. Επειδή όμως στα υπολογιστικά συστήματα η υποδιαστολή δεν “βρίσκεται“ πουθενά.αλλά η ύπαρξη της και η θέση της είναι ένα προσυμφωνημένο “μυστικό“ ανάμεσα στον προγραμματιστή και στον υπολογιστή.

Πχ Έτσι.η mantissa για ένα string από k bits μπορεί να πάρει τιμές . που με λίγα λόγια υπαγορεύει ότι το MSB(Most Significant Bit) της mantissa ΔΕΝ μπορεί να είναι 0.Normalization Για να παραστήσουμε τον ίδιο αριθμό με τα λιγότερα δυνατά ψηφία. έχει εφευρεθεί η διαδικασία της κανονικοποίησης.

..x2. Κάθε αριθμός xi αναπαρίσταται με τον εξής τρόπο: x i = X mod mi πχ Για να παραστήσουμε τον αριθμό 9 στο RNS έχουμε: Και άρα η RNS αναπαράσταση είναι η (104) Καλό θα είναι τα στοιχεία του mi να μην έχουν κοινό διαιρέτη.. Όπως φαίνεται εύκολα. Έστω ένα σετ αριθμών mi=(m1.. υπάρχει tradeoff ανάμεσα στον αριθμό των mi και στο μέγεθός τους .m2.xn) με κάθε xi>1 ..Residue Number System(RNS) Έστω ακέραιος Χ=(x1.mn) που αποκαλείται ομάδα υπόλοιπων.

τότε λέμε ότι η LNS αναπαράσταση του Χ είναι η : Και προφανώς. Αν η αναπαράσταση αυτή του Χ(εφεξής Lx) είναι σε δυαδική μορφή με n bit για το ακέραιο μέρος και k bits για το δεκαδικό.παίρνουμε τον λογάριθμο του Χ με βάση το r.ο αριθμός Χ ανακτάται ως εξής: Πχ Και άρα .Logarithmic Number System(LNS) Δεδομένου ενός μη-προσημασμένου αριθμού Χ.

Κλασική περίπτωση χρήσης του LNS είναι για Hidden Markov Models(πχ αλγόριθμος viterby) .αφού οι πράξεις αυτές γίνονται με το ίδιο κύκλωμα που γίνεται η πρόσθεση. Όμως η πρόσθεση πλέον απαιτεί περισσότερους πόρους από τις κλασσικές μεθόδους.Έτσι. LNS:Απλοποιεί τρομερά τον πολλαπλασιασμό και την διαίρεση.Πλεονεκτήματα/ Μειονεκτήματα RNS: Πρακτικά το RNS μετατρέπει έναν μεγάλο ακέραιο σε ένα αριθμό από μικρότερους ακέραιους.όταν θέλουμε να κάνουμε πράξεις ανάμεσα σε 2 μεγάλους ακέραιους το RNS μας επιτρέπει να κάνουμε αντί για 1 μεγάλη πράξη πολλές παράλληλες με μικρούς αριθμούς.

Βασική μονάδα μέτρησης είναι το Δg που είναι η χρονική καθυστέρηση που έχει το σήμα μέχρι να εξέλθει από μια πύλη NAND ή NOR ➔ . Πρώτα όμως κρίνεται σκόπιμο να αναφερθούν μερικοί ορισμοί: Time complexity Δτ(πολυπλοκότητα χρόνου): Ο χρόνος διάδοσης σήματος σε ένα ψηφιακό κύκλωμα.Κυκλώματα Πρόσθεσης και αφαίρεσης Στο κεφάλαιο αυτό ασχολούμαστε με σειριακά κυκλώματα πρόσθεσης και αφαίρεσης στα διάφορα αριθμητικά συστήματα που έχουν αναφερθεί.

➔ . Βασική μονάδα μέτρησης είναι το 1 Αg που είναι ο χώρος που καταλαμβάνει μια πύλη NAND ή NOR.Ορισμοί Area complexity(χωρική πολυπλοκότητα) Ατ: Είναι ο χώρος που καταλαμβάνει ένα ψηφιακό κύκλωμα(αν σχεδιαστεί σε 1 μόνο layer).

Time and area Complexities .

Half Adder .

Full Adder .

Single bit full adder .

Single bit AOI(AndOR.invert) adder .

Ο πιο γρήγορος τρόπος για να γίνει η αφαίρεση χωρίς χρήση ειδικού hardware(πέραν αυτού που χρησιμοποιείται για πρόσθεση) είναι η πράξη A-Β να γίνει Α+(-Β) .i Οι λογικές συναρτήσεις που περιγράφουν την αφαίρεση αυτή είναι Προφανώς. ai −bi =d i με το borrow-out(το αντίστοιχο του carry) bit l .Αφαίρεση Έστω αφαίρεση .το πως γίνεται η αφαίρεση εξαρτάται από το πιο αριθμητικό σύστημα χρησιμοποιούμε.

Subtractor circuit .

Αφαίρεση σε 1scomplement Negation Circuit with enable .

Αφαίρεση σε 2s complement Για να βρούμε το συμπλήρωμα του 2 ενός αριθμού.το hardware κύκλωμα θα αποτελείται από ένα 1's complement circuit και από ένα κύκλωμα που προσθέτει μονάδα στο αποτέλεσμα.πρώτα αλλάζουμε όλα τα 0 σε 1 και όλα τα 1 σε 0 και μετά προσθέτουμε το 1. Η χρονική πολυπλοκότητα είναι Ενώ η χωρική πολυπλοκότητα . Έτσι λοιπόν.

Αφαίρεση σε 2s complement no2 Το σύστημα που περιγράφηκε στην προηγούμενη διαφάνεια είναι το εξής: .

Αφαίρεση.continued Εναλλακτική υλοποίηση .

continued Η χρονική και χωρική πολυπλοκότητα υπολογίζεται ως εξής: Από την οποία φαίνεται ότι αυτή η υλοποίηση(συμπλήρωμα του 2) είναι προτιμότερη από την προηγούμενη(συμπλήρωμα του 1). .Αφαίρεση.

Full 1bit adder/ subtractor with enable-M .

Άρα το Μ λειτουργεί ουσιαστικά ως ελεγκτής της πράξης που θα γίνει.Full 1bit adder/subtractor Όπως μπορούμε να παρατηρήσουμε. .το παραπάνω κύκλωμα εκτελεί πρόσθεση αν Μ=0 και αφαίρεση αν Μ=1.

.χωρίζουμε το πρόβλημα σε υποκατηγορίες.overflow(υπερχείληση) συμβαίνει όταν το carry του MSB ή του προηγούμενου του ψηφίου(σε περίπτωση προσημασμένου αριθμού) είναι 1.Για να μελετήσουμε μαθηματικά το σε ποιες περιπτώσεις γίνεται overflow. Για συντομία(και για πρακτικούς λόγους) μελετάμε το overflow μόνο σε 2's complement 2 προσθετέων(Α και Β) που έχουν n bits ο καθένας.Overflow Προφανώς.

Β αρνητικά Α θετικό και Β αρνητικό .Περιπτώσεις overflow ● ● ● Αν Α.Β θετικά Αν Α.

.Όπως φαίνεται στην επόμενη διαφάνεια.ειδική μέριμνα λαμβάνεται για περίπτωση overflow.Ripple Carry Adders Αυτή η κατηγορία των adders βασίζεται στην λογική ότι για να προσθέσουμε έναν αριθμό n bits το carry out του LSB συνδέεται με το carry in του επόμενου bit κοκ.

Ripple Carry schematic .

2) Α και Β αρνητικά: Προφανώς για να είναι σωστό το αποτέλεσμα.το αποτέλεσμα είναι Και άρα το end-arround carry είναι περιττό .θα πρέπει να προστεθεί 1.Ones complemet addition Για την εκτέλεση της πράξης Α+Β διακρίνουμε τις εξής περιπτώσεις: 1) Α και Β θετικά: Στην περίπτωση αυτή η πρόσθεση γίνεται με την ίδια μεθοδολογία με αυτή του συμπληρώματος του 2.Γι'αυτό υπάρχει η διάταξη end-arround carry(Cn στο προηγούμενο σχήμα) 3) Α αρνητικό και Β θετικό(|Α|>|Β|) Χωρίς την διάταξη end-arround Carry.

Για να λύσουμε το πρόβλημα αυτό.κάνουμε implement ένα end arround carry Τέλος. Β θετικό και |Α|<|Β|(χωρίς end arround carry) Το αποτέλεσμα θα είναι: Μετά από την mod 2^n (συμπλήρωμα 1) μετατροπή.Ones complemet addition 4) Α αρνητικό.το κύκλωμα θα βγάλει ως έξοδο |Β|-|Α|-1. ενώ θα έπρεπε να βγάλει |Β|-|Α|.η συνολική χρονική πολυπλοκότητα του FA 1's complement είναι .

Magnitude addition .Sign.

Magnitude addition Pre-Complement(P): Βρίσκει το συμπλήρωμα του 1 πριν την εκτέλεση της πράξης Post-Complement(Q): Βρίσκει το συμπλήρωμα του 1 μετά την εκτέλεση της πράξης .Sign.χρησιμοποιείται στην αφαίρεση αν |Β|>=|Α| Εύρεση προσήμου πράξης: Ομόσημοι → το πρόσημο των 2 τελεστών Ετερόσημοι → (|Β|>=|Α|)→ |Β|<Α|→ .

Sign.Magnitude addition .

High Speed AddersConditional Sum Addition Στην προσπάθεια μας για όσο το δυνατόν μεγαλύτερη ταχύτητα στις πράξεις. το σύμβολο γίνεται Έχουμε λοιπόν: .αναγκαζόμαστε να παραλληλοποιήσουμε τις διαδικασίες όσο περισσότερο γίνεται. Το Conditional Sum Addition είναι μια μέθοδος να προσθέτουμε δύο-δύο bits και .εφόσον δεν μπορούμε να ξέρουμε το carry bit από πριν. Αν υποθέσουμε ότι το carry in είναι 1.βγάζουμε όλους τους πιθανούς συνδιασμούς. Συμβολίζουμε με το αποτέλεσμα της πράξης ανάμεσα σε 2 bit αν υποθέσουμε ότι το carry-in είναι 0.

Conditional Sum Addition .

Circuit of Conditional Sum .

τα IC carry μπορούν να οριστούν ταυτόχρονα(παράλληλα) για κάθε bit του αποτελέσματος χωρίς να περιμένουμε να έρθει το προηγούμενο carry.Carry Completion Sensing Addition (CCSA) Η γραμική χρονική καθυστέρηση των rippley carry adders .Όπως φαίνεται παρακάτω.που οφείλεται στην καθυστέρηση της “μεταφοράς„ του carry από το LSB στο MSB(δηλαδή του χρόνου που -στην χειρότερη περίπτωση. Στα CCSA's ορίζουμε 2 ειδών carrys. .αντίθετα με τα DC τα οποία χρειάζονται γνώση του IC ή/και του DC του προηγούμενου bit.κάνει ο FA του MSB να υπολογίσει το carry-out και το σωστό αποτέλεσμα μας οδήγησε στην υλοποίηση CCSA's των οποίων η μέση τιμή του χρόνου ολοκλήρωσης μιας πράξης είναι μικρότερη. τα Independent(IC) και τα Dependent(DC).

Εκτέλεση της πράξης: Βήμα 1ο: Δημιουργούμε τα IC carry Βήμα 2ο: Δημιουργούμε τα DC carry Βήμα 3ο: Προσθέτουμε τους 2 αριθμούς μαζί με τα IC και DC carrys με mod2(δηλαδή αγνοούμε τα τυχόν carry που θα προκείψουν από την πρόσθεση των 2 αρχικών αριθμών) .CCSA addition Βλέπουμε ότι τα IC carry τα οποία δημιουργούνται παράλληλα επιταχύνουν συνήθως την πρόσθεση καθώς η μεγαλύτερη αναμονή για carry είναι ίση με την μεγαλύτερη απόσταση ανάμεσα σε ένα IC και σε ένα DC carry.

CCSA circuit .

CCSA complexities .

δημιουργήθηκε το CLA το οποίο μπορεί να δημιουργήσει παράλληλα όλα τα carrys.Blockahead adder .Carry Look-Ahead Adition(CLA) Κάνοντας ένα βήμα παραπέρα από τις παραπάνω υλοποιήσεις. Υπάρχουν διάφοροι τρόποι να γίνει αυτό. όπως το 1)Carry-Lookahead adder 2)Carry.

Ορίζουμε την συνάρτηση Carry generation ως G i= A i⋅Bi Ορίζουμε επίσης και την Carry propagation function ως P i= A i exor B i H carry generation μας δίνει ένα μέτρο της πιθανότητας εμφάνισης carry στην θέση i. ενώ η συνάρτηση carry propagation μας δίνει ένα μέτρο της πιθανότητας το carry in του bit i να μεταφερθεί ως carry in στο bit i+1.Carry lookahead adder Έστω Α και Β οι 2 προσθεταίοι των n bits.Έτσι έχουμε .

CLA To C i1 είναι πλέον ανεξάρτητο από το C i .

Carry Look-Ahead Adder schematic .

Carry-Save adders(CSA) Με την εξέλιξη της τεχνολογίας η απαίτηση για πρόσθεση όχι 2. Η λογική πίσω από αυτή την υλοποίηση είναι να μην περιμένουμε το carry-out της πρώτης πρόσθεσης να τελειώσει πριν αρχίσουμε την δεύτερη.Στο τέλος όλα τα carry προστίθενται(και άρα αν οι αριθμοί έχουν πολλά bits τότε η υλοποίηση αρχίζει και γίνεται αρκετά αργή) .αλλά η δεύτερη πρόσθεση να αρχίσει ήδη κοκ. αλλά περισσοτέρων αριθμών παράλληλα έγινε επιτακτική ανάγκη.

CSA algorithm .

CSA circuit .

CSA vs CLA .

Ο αριθμός των bits που είναι στο λογικό 1 υπολογίζεται από έναν αθροιστή στήλης(υλοποιείται συνήθως με ROM ή PLA). . με κάθε αθροιστή να αναλαμβάνει την πρόσθεση ενός bit κάθε φορά. Ένα παράδειγμα της μεθόδου αυτής φαίνεται στην παρακάτω διαφάνεια.Bit-partitioned multiple addition Στην συγκεκριμένη μέθοδο.Ύστερα. τα ψηφία προστίθενται στήλη-στήλη.οι έξοδοι προσθέτονται σειριακά(αφού βάλουμε έναν συντελεστή βαρύτητας σε κάθε στήλη και τον κάνουμε ένα left shift).

Bit partitioned addition of 2 7-digit numbers Πρόσθεση 7 αριθμών των 4 bit .

Bit partitioned Adder .

Σύγκριση απόδοσης Στην παρούσα εργασία ασχοληθήκαμε μόνο με την παρουσίαση των αλγορίθμων και την μελέτη της χρονικής και χωρικής πολυπλοκότητας. Υπάρχουν όμως και άλλα πολύ σημαντικά μεγέθη όπως η καταναλισκόμενη ισχύς. Αξίζει να σημειωθεί όμως ότι για λόγους πληρότητας της εργασίας στο πίνακα υπάρχουν και αλγόριθμοι παράλληλης άθροισης που δεν αναλύθηκαν για λόγους εξικονόμησης χώρου. .τα οποία για 64 bit αθροιστές φαίνονται στα παρακάτω σχήματα.

Σύγκριση απόδοσης

Χρήσιμα Links

LNS VHDL ALGORITHMS :
http://www.ens-lyon.fr/LIP/Arenaire/Ware/FPLibrary/
RNS VHDL ALGORITHMS:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.5398
C++ of VHDL for the transformation of parallel algorithms:
http://www.eda.org/VIUF_proc/Fall95/ANDERSON_R95B.PDF
VHDL carry look-ahead adder(και άλλα πολλά):
http://www.altera.com/support/examples/vhdl/v_cl_addr.html
Performance Analysis of fast adders using VHDL:
http://www.computer.org/portal/web/csdl/doi/10.1109/ARTCom.2009.132

VHDL codes
Στις επόμενες διαφάνειες αυτές θα προσπαθήσουμε να
δώσουμε παραδείγματα στην VHDL για τους διάφορους
τύπους αθροιστών που αναφέρθηκαν παρακάτω. Αξίζει να
σημειωθεί ότι προαπαιτούμενο για την ανάγνωση του
επόμενου κομματιού είναι μια καλή γνώση της vhdl καθώς και
η κατανόηση των εννοιών που έχουν αναπτυχθεί μέχρι τώρα.
Επίσης, όπου κρίνεται σκόπιμο θα υπάρχουν σχόλια στον
κώδικα.Τέλος οι αλγόριθμοί παρατίθενται όχι με την μορφή
που αναλύθηκαν, αλλά από τον ευκολότερο (σε μέγεθοςδυσκολία κώδικα) στον δυσκολότερο.

Carry Look-Ahead adder Στο παράδειγμα αυτό θα υλοποιηθεί σε vhdl ένας 8bit Carry look Ahead Adder.όπως έχουμε μάθει. Η υλοποίηση αυτή μπορεί να γίνει με μια λογική AND-OR 2 επιπέδων και έτσι μειώνεται αισθητά η καθηστέρηση δημιουργίας του carry. Το carry. προκύπτει παράλληλα με την βοήθεια των συναρτήσεων P και G. .

carry_generate : STD_LOGIC_VECTOR(7 DOWNTO 0). ENTITY c_l_addr IS PORT ( x_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0). carry_propagate : STD_LOGIC_VECTOR(7 DOWNTO 0). USE ieee. sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0).ALL.CLA VHDL implementation LIBRARY ieee. carry_in_internal : STD_LOGIC_VECTOR(7 DOWNTO 1). END c_l_addr. carry_out : OUT STD_LOGIC ). . carry_in : IN STD_LOGIC. ARCHITECTURE behavioral OF c_l_addr IS SIGNAL SIGNAL SIGNAL SIGNAL h_sum : STD_LOGIC_VECTOR(7 DOWNTO 0). y_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0).std_logic_1164.

END LOOP. sum(0) <= h_sum(0) XOR carry_in.CLA VHDL implementation BEGIN h_sum <= x_in XOR y_in. sum(7 DOWNTO 1) <= h_sum(7 DOWNTO 1) XOR carry_in_internal(7 DOWNTO 1).carry_in_internal) BEGIN carry_in_internal(1) <= carry_generate(0) OR (carry_propagate(0) AND carry_in). .carry_propagate. carry_generate <= x_in AND y_in. carry_propagate <= x_in OR y_in. inst: FOR i IN 1 TO 6 LOOP carry_in_internal(i+1) <= carry_generate(i) OR (carry_propagate(i) AND carry_in_internal(i)). END behavioral. PROCESS (carry_generate. END PROCESS. carry_out <= carry_generate(7) OR (carry_propagate(7) AND carry_in_internal(7)).

Τέλος. ο πλήρης αθροιστής υπάρχει στο αρχείο full_add. Στην βιβλιοθήκη της altera. να σημειώσουμε ότι η υλοποίηση δίνει προτεραιότητα στην όσο το δυνατό μικρότερη χρησιμοποίηση λογικών πόρων. και άρα είναι κάπως πιο αργή από άλλες υλοποιήσεις του Ripple Carry Adder .vhd.Ripple Carry Adder Στο συγκεκριμένο παράδειγμα θα υλοποιηθεί ένας Ripple Carry Adder με την βοήθεια της συνάρτηση του πλήρη αθροιστή. όμως κρίνεται σκόπιμο να παρουσιαστεί και εδώ.

USE WORK.ALL. LIBRARY WORK.ALL. ENTITY f_add8 IS PORT( x_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0).carry.usr_def. USE ieee.Ripple Carry Adder VHDL Example LIBRARY altera.maxplus2. y_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0).std_logic_1164. c_in : IN STD_LOGIC. sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0). USE altera. c_out : OUT STD_LOGIC). . END f_add8. LIBRARY ieee.

imi(0)).sum(0).y_in(0).sum(7). BEGIN c0 : full_add PORT MAP (x_in(0). END struct. c7 : full_add PORT MAP (x_in(7).Ripple Carry Adder VHDL Example ARCHITECTURE struct OF f_add8 IS SIGNAL im : STD_LOGIC_VECTOR(6 DOWNTO 0). c01 : carry PORT MAP (im(0).imi(i)). SIGNAL imi : STD_LOGIC_VECTOR(6 DOWNTO 0).c_out). imi(i-1). imi(6). .y_in(7).im(0)).c_in.y_in(i). c11to16: carry PORT MAP (im(i). END GENERATE. c : FOR i IN 1 TO 6 GENERATE c1to6: full_add PORT MAP (x_in(i).im(i)).sum(i).

c_out : OUT STD_LOGIC). USE ieee. END behv.std_logic_1164.Full Adder VHDL Στον ripple carry adder έγινε η χρήση του πλήρη αθροιστή(full adder) του οποίου ο κώδικας στην VHDL είναι: LIBRARY ieee. END full_add. c_in : IN STD_LOGIC. . ENTITY full_add IS PORT( a : IN STD_LOGIC. sum : OUT STD_LOGIC. ARCHITECTURE behv OF full_add IS BEGIN sum <= a XOR b XOR c_in.ALL. c_out <= (a AND b) OR (c_in AND (a OR b)). b : IN STD_LOGIC.

όλα τα bits του 1ο βήματος ομαδοποιούνται ανά 2.η πράξη θα γίνει σε 4 βήματα. Βήμα 1ο:Όλα τα conditional sums και τα carries του i-ζεύγους από bits δημιουργούνται. Βήμα 2ο: Τα bits του βήματος αυτού(level 2 bits) καθορίζονται από το 1ο βήμα.Σύμφωνα με την θεωρία που αναπτύχθηκε παραπάνω.Conditional Sum Adder VHDL code Στο επόμενο παράδειγμα θα υλοποιηθεί adder 2 αριθμών των 16 bits με την μέθοδο του Conditional Sum addition. Το λιγότερο σημαντικό carry χρησιμοποιείται για να επιλέξει ποιο άθροισμα και πιο carry της επόμενης θέσης θα μεταφερθεί στο 2ο βήμα . Αρχικά.

τα carrys και τα αθροίσματα του 3ου επιπέδου καθορίζονται από τις εξόδους του 2ου επιπέδου. Βήμα 4ο: Ομοίως με τα βήματα 2.3. Ο κώδικας για την παραπάνω(16bit) υλοποίηση δίνεται στις επόμενες διαφάνειες.Conditional Sum Adder VHDL code Βήμα 3ο: Ομοίως. Έτσι λοιπόν με μια τελευταία πρόσθεση έχουμε το επιθυμητό αποτέλεσμα. .

use IEEE. use IEEE. signal s11: std_logic_vector(15 downto 0) := "0000000000000000". .ALL. signal c40: std_logic_vector(15 downto 0) := "0000000000000000". cout: out std_logic). signal s20: std_logic_vector(15 downto 0) := "0000000000000000". signal c41: std_logic_vector(15 downto 0) := "0000000000000000". signal s41: std_logic_vector(15 downto 0) := "0000000000000000". use IEEE. signal s40: std_logic_vector(15 downto 0) := "0000000000000000".STD_LOGIC_UNSIGNED. b: in std_logic_vector(15 downto 0). signal c30: std_logic_vector(15 downto 0) := "0000000000000000". signal s21: std_logic_vector(15 downto 0) := "0000000000000000". signal s31: std_logic_vector(15 downto 0) := "0000000000000000". signal G: std_logic := '0'. signal s30: std_logic_vector(15 downto 0) := "0000000000000000". signal c11: std_logic_vector(15 downto 0) := "0000000000000000". end Adder_CS_16bit. cin: in std_logic.STD_LOGIC_ARITH.ALL. signal P: std_logic := '0'. entity Adder_CS_16bit is port (a. signal c31: std_logic_vector(15 downto 0) := "0000000000000000". signal c21: std_logic_vector(15 downto 0) := "0000000000000000".ALL.Conditional Sum Adder VHDL code library IEEE. signal c10: std_logic_vector(15 downto 0) := "0000000000000000". architecture behavioral of Adder_CS_16bit is signal s10: std_logic_vector(15 downto 0) := "0000000000000000". signal c20: std_logic_vector(15 downto 0) := "0000000000000000".STD_LOGIC_1164. sum: out std_logic_vector(15 downto 0).

end process. c10(i) <= a(i) and b(i). end process.Κατασκευή βασικού κελιού που κάνει την πρόσθεση. cin) begin s10(0) <= P xor cin.Conditional Sum Adder VHDL code begin -. end loop. P. c11(i) <= a(i) or b(i). G <= a(0) and b(0). G. c10(0) <= G or (P and cin). b) begin P <= a(0) xor b(0). process (s10) begin s11 <= not s10.βήμα 1ο process (a. b. for i in 1 to a'length . process (a.1 loop s10(i) <= a(i) xor b(i). end process. .

1 loop if (i mod 2 = 0) then s20(i) <= s10(i). end if. elsif c10(0) = '0' then s20(1) <= s10(1). c11) begin s20(0) <= s10(0).Conditional Sum Adder VHDL code --Βήμα 2ο process (s10. c20(1) <= c10(1). . s11. c20(i+1) <= c11(i+1). c20(1) <= c11(1). c20(i+1) <= c10(i+1). if c10(0) = '1' then s20(1) <= s11(1). elsif c10(i) = '0' then s20(i+1) <= s10(i+1). c10. end if. for i in 2 to a'length . s21(i) <= s11(i). if c10(i) = '1' then s20(i+1) <= s11(i+1).

end loop. c21) begin s30(1 downto 0) <= s20(1 downto 0). c21(i+1) <= c11(i+1). end if.Βήμα 3ο process (s20. s21. c30(3) <= c20(3). elsif c20(1) = '0' then s30(3 downto 2) <= s20(3 downto 2). . elsif c11(i) = '1' then s21(i+1) <= s11(i+1). c20. end if. c30(3) <= c21(3). end if. end process.Conditional Sum Adder VHDL code if c11(i) = '0' then s21(i+1) <= s10(i+1). if c20(1) = '1' then s30(3 downto 2) <= s21(3 downto 2). -. c21(i+1) <= c10(i+1).

end if. . end process. elsif c20(i) = '0' then s30(i+2 downto i+1) <= s20(i+2 downto i+1). end if. c31(i+2) <= c20(i+2). if c21(i) = '0' then s31(i+2 downto i+1) <= s20(i+2 downto i+1). s31(i downto i-1) <= s21(i downto i-1). end if. end loop. elsif c21(i) = '1' then s31(i+2 downto i+1) <= s21(i+2 downto i+1).1 loop if (i mod 4 = 1) then s30(i downto i-1) <= s20(i downto i-1). c31(i+2) <= c21(i+2). c30(i+2) <= c21(i+2). if c20(i) = '1' then s30(i+2 downto i+1) <= s21(i+2 downto i+1).Conditional Sum Adder VHDL code for i in 4 to a'length . c30(i+2) <= c20(i+2).

c40(7) <= c30(7). s31. c40(7) <= c31(7).level . -.Βήμα 4ο process (s30. end if. c40(7) <= c31(7). c31) begin s40(3 downto 0) <= s30(3 downto 0). elsif c30(3) = '0' then s40(7 downto 4) <= s30(7 downto 4). if c30(3) = '1' then s40(7 downto 4) <= s31(7 downto 4). c31) begin s40(3 downto 0) <= s30(3 downto 0). if c30(3) = '1' then s40(7 downto 4) <= s31(7 downto 4). end if. c40(7) <= c30(7). c30. elsif c30(3) = '0' then s40(7 downto 4) <= s30(7 downto 4).Conditional Sum Adder VHDL code -.4 process (s30. s31. c30. .

end if. end if. . end loop.Conditional Sum Adder VHDL code c40(i+4) <= c30(i+4). c41(i+4) <= c31(i+4). end if. elsif c31(i) = '1' then s41(i+4 downto i+1) <= s31(i+4 downto i+1). c41(i+4) <= c30(i+4). if c31(i) = '0' then s41(i+4 downto i+1) <= s30(i+4 downto i+1). end process.

βήμα 5ο process (s40. s41. c40. if c40(7) = '1' then sum(15 downto 8) <= s41(15 downto 8). .Conditional Sum Adder VHDL code -. cout <= c40(15). cout <= c41(15). c41) begin sum(7 downto 0) <= s40(7 downto 0). elsif c40(7) = '0' then sum(15 downto 8) <= s40(15 downto 8). end if. end process. end behavioral.

Sequential Multiplication Στο κεφάλαιο αυτό θα ασχοληθούμε με τις τεχνικές του διαδοχικού πολλαπλασιασμού παρουσιάζοντας τεχνικές τόσο υλοποίησης όσο και επιτάχυνσης της εν λόγω διαδικασίας. Οι αλγόριθμοι που θα συζητηθούν παρακάτω βασίζονται στην προσέγγιση add-shift. Πρώτα όμως θα αναφέρουμε μερικούς συμβολισμούς που θα χρησιμοποιηθούν στο παρόν κεφαλαίο: .

το αποτέλεσμα P θα έχει 2(n-1)+1=2n-1 bits συμπεριλαμβανομένου και του bit προσήμου. . Για να έχουμε μια ομοιόμορφη απεικόνιση. είτε το αντίγραφο του bit προσήμου ανάλογα με τον αν η απεικόνιση του αριθμού είναι προσημασμένου μέτρου ή συμπληρώματος με βάση το ένα ή το δύο.Signed & Unsigned Multiplication Έστω A και B δύο μη προσημασμένοι n-bit αριθμοί. Στην περίπτωση που οι Α και Β είναι προσημασμένοι. Ο πολλαπλασιασμός P=A x B θα έχει σαν αποτέλεσμα έναν αριθμό P 2n-bit. προστίθεται στο αποτέλεσμα ένα εικονικό(dummy) bit μεταξύ του bit προσήμου και του most significant bit οπότε και προκύπτει ένας αριθμός 2n –bits. Το εικονικό bit μπορεί να είναι είτε 0.

Pencil-And-Paper Multiplication ‹----------Partial Product Κάθε Partial Product μπορεί να δημιουργηθεί με πύλες AND και στο τέλος το αποτέλεσμα θα προκύψει με την πρόσθεση τους. .

Add-And-Shift
Approach
Αντί να δημιουργούμε κάθε partial product χωριστά και ύστερα να τα
προσθέτουμε όλα μαζί στο τέλος, προσθέτουμε κάθε partial product
κατευθείαν στο τελικό ποσό αμέσως μετά τη δημιουργία του.
Εφόσον κάθε bit που εξετάζεται είναι υψηλότερο κατά μία θέση bit σε
σχέση με το προηγούμενο, κάθε partial product που προστίθεται θα πρέπει
να είναι κατά μία θέση bit αριστερά σε σχέση με το προηγούμενο.
O χρόνος καθυστέρησης μιας μονάδας indirect multiplication είναι:

Add-And-Shift
Approach (cont.)

Register Occupation

Hardware for Sequential Multiplication

Indirect Multiplication
Schemes
1. Unsigned Number Multiplication
2. Sign-Magnitude Number Multiplication
3. One’s Complement Number Multiplication
4. Two’s Complement Number Multiplication

Ένας κύκλος C0 για την εγκατάσταση των δεδομένων στους καταχωρητές και C1.. ....Unsigned Number Multiplication H διαδικασία ολοκληρώνεται σε n+1 κύκλους(n ο αριθμός bit του κάθε αριθμού).Cn κύκλοι για την εκτέλεση των πράξεων.

Το πρόσημο του αποτελέσματος υπολογίζεται στο τέλος από την πράξη A s Δ Bs .Sign-Magnitude Number Multiplication H διαδικασία ολοκληρώνεται σε n κύκλους. Στον κύκλο C0 μαζί με την εγκατάσταση των δεδομένων στους καταχωρητές τα bit προσήμου των Α και Β φορτώνονται στα FF As και Bs αντίστοιχα ενώ το MSB των καταχωρητών AX και MR τοποθετούνται στο μηδέν.

Από τον κύκλο C2 μέχρι και τον Cn πραγματοποιείται η loop του πολλαπλασιασμού Τέλος στον κύκλο Cn+1 το αποτέλεσμα ξαναμετατρέπεται στην μορφή συμπληρώματος του ένα. Στον κύκλο C0 φορτώνονται τα δεδομένα στους καταχωρητές ενώ στον κύκλο C1 οι αρνητικοί αριθμοί μετατρέπονται στη μορφή προσημασμένου μέτρου. .One’s Complement Number Multiplication H διαδικασία ολοκληρώνεται σε n+2 κύκλους.

Two’s Complement Number Multiplication H διαδικασία ολοκληρώνεται σε n+4 κύκλους. Από τον κύκλο C3 μέχρι και τον Cn+1 πραγματοποιείται η loop του πολλαπλασιασμού Τέλος στους κύκλους Cn+2 και Cn+3 πραγματοποιείται η αντίστροφη διαδικασία ώστε το αποτέλεσμα να επιστρέψει στην μορφή . Στον κύκλο C0 φορτώνονται τα δεδομένα στους καταχωρητές. στον κύκλο C1 οι αρνητικοί αριθμοί μετατρέπονται σε συμπληρώματα του ένα ενώ στον κύκλο C2 μετατρέπονται στη μορφή προσημασμένου μέτρου.

Robertson’s Signed Number Multiplication Οι διαδικασίες pre και post complemement που παρουσιάστηκαν προηγουμένως. Για το λόγο αυτό θα αναπτύξουμε παρακάτω δυο περιπτώσεις του πολλαπλασιασμού Robertson για προσημασμένους αριθμούς. παρόλη την λογική τους ορθότητα είναι ιδιαίτερα χρονοβόρες. .

Negative Multiplicand Times Positive Multiplier .

Negative Multiplicand Times Negative Multiplier .

Canonical Multiplier Recoding . Overlapped Multiple Bit Scanning 3. Non-Overlapped Multiple Bit Scanning 2. Booth’s Algorithm 4.Recoding Technique 1.

Non-Overlapped Multiple Bit Scanning Single Bit Scanning Multiple Bit Scanning .

¨Ένα τέτοιο long string από 1 μπορεί να επανακωδικοποιηθεί τοποθετώντας στο begging of string το στο end of 1 string το 1 και γεμίζοντας όλα τα ενδιάμεσα με 0 .Overlapped Multiple Bit Scanning String Property of a conventional radix Η διαδοχική ακολουθία από 1 σε μια δυαδική απεικόνιση ονομάζεται “string of 1s” Υποθέτουμε ότι ξεκινάμε το μέτρημα από τα δεξιά οπότε το τέρμα δεξί 1 καλείται “beginning of string” Για το τέρμα αριστερό 1 ένα 0 αριστερά του ορίζει το τέλος του string.

Recoding Triplets . μπορούμε να αντικαταστήσουμε τις συνεχόμενες προσθέσεις του πολλαπλασιαστέου με μία μόνο αφαίρεση στην αρχή του string και μια πρόσθεση στο τέλος του.) Με αυτόν τον τρόπο. όταν ελέγχονται τα στοιχεία του πολλαπλασιαστή κατά τη διάρκεια του πολλαπλασιασμού.Overlapped Multiple Bit Scanning (cont.

Non-Overlapped Vs. Κάθε τριπλέτα μπορεί να ελεχγθεί ταυτόχρονα παρουσιάζοντας έτσι το μοντέλο του παράλληλου ελέγχου που θα δούμε παρακάτω. Overlapped Multiple Bit Scanning To εικονικό 0 τοποθετήθηκε στο στα δεξιά του LSB του string ούτως ώστε αν το LSB είναι 1 να αναγνωριστούν οι περιπτώσεις “beginning of string” ή “isolated 1” O έλεγχος μπορεί να γίνει από δεξιά προς τα αριστερά και αντίστροφα. Two-Bit Scan vs. Overlapped Three-Bit Scan .

Booth’s Algorithm Με βάση το string property που αναφέρθηκε προηγουμένως. O έλεγχος μπορεί να πραγματοποιηθεί είτε από δεξιά προς τα αριστερά. είτε από τα αριστερά προς τα δεξιά είτε παράλληλα έχοντας πάντα το ίδιο αποτέλεσμα. τοποθετούμε ένα dummy 0 δεξιά από το LSB του string. . μπορούμε να επανακωδικοποιήσουμε τον πολλαπλασιαστή B σε D. βρίσκοντας για 2 bit του B ένα bit του D όπως παρακάτω: με Επειδή όπως αναφέραμε η αρχή του string of 1s αναγνωρίζεται από ένα 0 στα δεξιά.

. παρακάμπτοντας έτσι τις διαδικασίες pre και post-complement.Booth’s Algorithm (cont.) Υποθέτοντας ότι: και ο αλγόριθμος του Booth περιγράφεται ως εξής: Όπως γίνεται κατανοητό ο συγκεκριμένος αλγόριθμος μπορεί να πολλαπλασιάσει δύο αριθμός συμπληρώματος του 2 χωρίς να τον ενδιαφέρουν τα πρόσημά τους.

Booth’s Algorithm (example) Radix-4 Booth’s Algorithm Example .

Ένα canonical SD διάνυσμα είναι ένα minimal SD διάνυσμα D=dn-1…d1d0 που περιέχει μη γειτονικά μη-μηδενικά ψηφία δλδ di x di-1=0 για 1≤ i ≤ n-1.Canonical Multiplier Recoding Η συγκεκριμένη τεχνική χρησιμοποιεί την απεικόνιση signed-digit (SD).. Ένας αριθμός στην canonical μορφή του έχει (n+1)/2 μη μηδενικά bit. Ένα minimal SD διάνυσμα είναι αυτό που περιέχει τον ελάχιστο αριθμό μημηδενικών ψηφίων. (n+1)-bit number to (n+1)-bit canonical SD number algorithm . Από εδώ και πέρα θα υποθέτουμε ότι το διάνυσμα D=dndn-1…d1d0 θα έχει n+1 bits και dn ≡ 0.

Canonical Multiplier Recoding (example) Scan Pattern .

Canonical Multiplier Recoding (example) Multiples Selection .

Canonical Multiplier Recoding (example) Adding the Bit-Pairs Parallelly Scanned with a CSA Tree .

χρησιμοποιείται μια συστοιχία πολλαπλασιαστών όπου πολλαπλά επίπεδα υλικού αντικαθιστούν τα κυκλώματα του ενός επιπέδου. Κάθε πρόσθεση υλοποιείται από διαφορετικά επίπεδα υλικού και κάθε ολίσθηση από την κατάλληλη καλωδίωση μεταξύ των επιπέδων. .Parallel Multiplication Στον παράλληλο πολλαπλασιασμό. Οι διαδικασίες πολλαπλασιασμού επικαλύπτονται δηλαδή ο δεύτερος πολλαπλασιασμός ξεκινάει πριν ολοκληρωθεί ο πρώτος.

Wallace Trees Στην πολλαπλασιαστική διαδικασία η πρόσθεση των μερικών γινομένων είναι η πιο χρονοβόρα δραστηριότητα. Ένα Wallace tree είναι ένας slice-bit αθροιστής ο οποίος προσθέτει όλα τα bit που βρίσκονται στη ίδια bit position. Χρειαζόμαστε ένα υλικό το οποίο να χειρίζεται αυτές τις διαδοχικές προσθέσεις. .

Wallace Trees (cont.)

Unsigned Array
Multiplier
Έστω
και
Έχουμε:

και

μη προσημασμένοι ακέραιοι
το γινόμενο τους.

Unsigned Array
Multiplier (cont.)
summands

-------------->
---------------------->
------------------------------>
-------------------------------------->
----------------------------------------------->

5 – 5 Multiplication Example

Partial Products

}

Unsigned Array Multiplier (cont.)  H τελευταία σειρά των FA μπορεί να αντικατασταθεί από έναν Carry Lookahead Adder ενός επιπέδου ώστε ο χρόνος καθυστέρησης να είναι ανάλογος του μεγέθους του πολλαπλασιαστέου. .  Η αποδοτικότητα μπορεί να βελτιωθεί προσθέτοντας latch registers ανάμεσα στις σειρές των FA. Έτσι η πρόσθεση του μερικού γινομένου ενός προηγούμενου πολλαπλασιασμού επικαλύπτεται από την πρόσθεση του επόμενου.

Two’s Complement Array Multiplier Ισχύει ότι: Προκύπτει ότι για να βρούμε τον αντίθετο ενός αριθμού μπορούμε να αλλάξουμε το αi με 1-αi και το 0 με το 1 και αντίστροφα. .

.Two’s Complement Array Multiplier (cont.) Με το κατάλληλο συνδυασμό διαφόρων τύπων αθροιστών μπορούμε να κατασκευάσουμε συστοιχίες που υλοποιούν απευθείας πολλαπλασιασμούς συμπληρώματος.

. δύο αριθμοί το γινόμενό Σύμφωνα με το προηγούμενο κεφάλαιο έχουμε: κα Οπότε : ι .Baugh-Wooley Two’s Complement Multiplier Έστω και συμπληρώματος του δύο και τους.

) O τρίτος και ο τέταρτος όρος της προηγούμενης έκφρασης ήταν αρνητικός.Baugh-Wooley Two’s Complement Multiplier(cont. Αποδεικνύεται ότι: ΔBW=[2(m+n) + 1]Δg .

Baugh-Wooley Two’s Complement Multiplier(example) .

.Modular Structure Είναι συστοιχίες πολλαπλασιαστών που εκτελούν γρήγορους πολλαπλασιασμούς μεταξύ μικρού ή μεσαίου μήκους όρων.

Modular Structure(example) .

Baugh-Wooley Two’s Complement Multiplier(cont.) .

.Additive Multiply Modules Τα AMM μπορούν να δεχθούν “έξτρα” προσθετέους και τους προσθέτουν στο γινόμενο του πολλαπλασιαστέου και του πολλαπλασιαστή εισόδου.

Additive Multiply Modules(example) .

Additive Multiply Modules(example) .

Sequential Division .

n-1. πραγματοποιούνται με μια αναδρομική διαδικασία που παρουσιάζεται στην εξίσωση: Όπου. •j=0.η βάση αρίθμησης .το μερικό υπόλοιπο στην j-η επανάληψη R(0) .o διαιρέτης •r . ο διαιρετέος R(n) .το πηλίκο •D . το τελικό υπόλοιπο •q ..Substract –And-Shift Approach Στους ψηφιακούς υπολογιστές οι περισσότερες διαδικασίες διαίρεσης.... o δείκτης αναδρομής •R(j) .1.

Pencil-And-Paper Division Pencil-And-Paper Division Example .

και Q=q0.q1q2..r1r2. D≠0 και είναι θετικοί Υπερχείλιση πηλίκου έχουμε όταν R(0)≥D . R(0)=r0.d1d2.Long Division Form O διαιρετέος R(0) και ο διαιρέτης D είναι σε κλασματική μορφή δλδ..q(n) R(0)<D ... D=d0......

Restoring Division Ισχύει ότι: 0≤R(0)<D Κάθε φορά το D αφαιρείται από το μερικό υπόλοιπο μέχρις ότου η διαφορά γίνει αρνητική. Tο D προστίθεται στην αρνητική διαφορά (restoring) To πηλίκο προκύπτει από τον αριθμό τον αφαιρέσεων:q(j+1)=(number of subtractions -1). .

είναι q(j+1)=0. είναι q(j+1)=1.Binary Restoring Division Αν το πρόσημο του R(j+1) είναι θετικό. . Αν το πρόσημο του R(j+1) είναι θετικό.

Binary Restoring Division Hardware .

Binary Non-Restoring Division Βελτιωμένη μέθοδος χωρίς την “πρόσθεση αποκατάστασης”(restoring addition). H πράξη που πραγματοποιείται μπορεί να είναι είτε πρόσθεση είτε αφαίρεση ανάλογα με πρόσημο του μερικού υπολοίπου δλδ: Παρομοίως το πηλίκο προκύπτει: Όταν 2R(j)=0 η διαδικασία τερματίζεται. Ισχύει: με D>0. .

2.q1q2.….4D < 4R(j) < 4D .qn π.1.χ Για r=4 το πεδίο τιμών του qj+1 είναι {-3... – D < Rj < D Q=. όπου r η βάση.(r-1)} .High-Radix NonRestoring Division To πεδίο τιμών του πηλίκου είναι: {-(r-1).3} .-1.….-1.-2.1.

..… με χρησιμοποιούμε τον διπλανό αλγόριθμο.q’1q’2. ..) Στην περίπτωση που θέλουμε να μετατρέψουμε ένα προσημασμένο αριθμό r βάσης στην αντίστοιχη μορφή συμπληρώματος του r . Q=q 0.High – Radix Non -Restoring Division (cont.

0. Robertson & Tocher------>SRT  και qj+1 є {-1. 1}   (D και R κανονικοποιημένες). .SRT Division Sweeney.

SRT Division (cont.) Αν χρησιμοποιήσουμε μόνο το και τότε έχουμε: .

2. Δημιουργείται ένα ψηφίο του πηλίκου που αντιστοιχεί στο επιλεγμένο κλάσμα. Επιλέγεται το κατάλληλο κλάσμα ώστε η μέγιστη απόλυτη τιμή του μειωθεί κατά 1/r. To μερικό υπόλοιπο R(j) ολισθαίνει στα αριστερά κατά μία θέση.Robertson’s HighRadix Division 1.   με με . 3.

Robertson Diagrams .

. Πολλαπλασιάζονται με την ίδια ακολουθία παραγόντων σύγκλισης ενώ η τιμή του κλάσματος παραμένει σταθερή. Χρησιμοποιείται το ίδιο υλικό που υλοποιεί και τους πολλαπλασιασμούς. Ο διαιρέτης και ο διαιρετέος χρησιμοποιούνται σαν αριθμητής και παρονομαστής κλάσματος.Convergence Division To πηλίκο προκύπτει από επαναληπτικούς πολλαπλασιασμούς και όχι από ολισθήσεις και αφαιρέσεις. Όταν ο παρονομαστής φτάσει στο 1 ο αριθμητής γίνεται το επιθυμητό πηλίκο.

Convergence Division Methodologies Για ικανοποιητικά μεγάλα m: Υποθέτουμε ότι οι N και D είναι θετικά κανονικοποιημένα κλάσματα οπότε: .

Convergence Division Methodologies (cont.) Ο γενικός κανόνας επιλογής των πολλαπλασιαστών Ri είναι : Οι παράγοντες Ri υπολογίζονται από τη σχέση Ri = 2 – Di-1 .

The end! Ευχαριστούμε για την προσοχή και την ανάγνωση της παρουσίασης! .