You are on page 1of 149

Σχεδίαση Ψηφιακών Συστημάτων

Παράσταση αριθμών και αριθμητικά


κυκλώματα

Σχεδίαση Ψηφιακών Συστημάτων 1


5η Ενότητα
• Παραστάσεις αριθμών στους υπολογιστές
• Κυκλώματα για αριθμητικές πράξεις
• Θέματα αποδοτικότητας σε μεγάλα
κυκλώματα
• Χρήση γλώσσας VHDL για τον καθορισμό
αριθμητικών κυκλωμάτων

Σχεδίαση Ψηφιακών Συστημάτων 2


Στόχος ενότητας
• Κατανόηση τρόπου πρόσθεσης, αφαίρεσης και
πολλαπλασιασμού με λογικά κυκλώματα.
• Πως γράφουμε πρόγραμμα σε VHDL για την
περιγραφή αριθμητικών κυκλωμάτων.

Σχεδίαση Ψηφιακών Συστημάτων 3


Παράσταση αριθμών και σύμβολα
• Παράσταση αριθμών  μεταβλητές
• 1 μεταβλητή για κάθε ψηφίο του αριθμού!
• +  πρόσθεση
• -  αφαίρεση

Σχεδίαση Ψηφιακών Συστημάτων 4


Παράσταση αριθμών με αξία θέσης
• Θετικοί ακέραιοι  μη-προσημασμένοι
(unsigned integers)
• Θετικοί και αρνητικοί  προσημασμένοι
(signed integers)
Δυαδικοί αριθμοί παριστάνονται με αριθμούς
με αξία θέσης.

Δηλ. ένας ακέραιος με τιμή:

Σχεδίαση Ψηφιακών Συστημάτων 5


Οκταδική και δεκαεξαδική
παράσταση
Παράσταση αριθμών με αξία θέσης με
οποιαδήποτε βάση. Αν η βάση είναι r, τότε ο
αριθμός
Έχει τιμή (δεκαδικό):

Αριθμοί Βάση Τιμές ψηφίων


Οκταδικοί 8 0..7
Δεκαεξαδικοί (hex) 16 0..9, Α, B, C, D, E, F

Σχεδίαση Ψηφιακών Συστημάτων 6


Οκταδική και δεκαεξαδική
παράσταση (2)
• Συντομογραφία μακροσκελών δυαδικών
αριθμών με χρήση οκταδικών ή δεκαεξαδικών.
• 1 οκταδικό ψηφίο  3 bits
101011010111 

(101011010111)2 = (5327)8
Αν τα bits δεν είναι πολλαπλάσιο του 3,
προσθέτουμε 0 στα αριστερά του αριθμού.
Π.χ. (10111011)2 = (010111011)2 = (273)8
Σχεδίαση Ψηφιακών Συστημάτων 7
Οκταδική και δεκαεξαδική
παράσταση (3)
• 1 δεκαεξαδικό ψηφίο  4 bits
1010111100100101 

(1010111100100101)2 = (AF25)16

Αν τα bits δεν είναι πολλαπλάσιο του 4,


προσθέτουμε 0 στα αριστερά του αριθμού.
Π.χ. (1101101000)2 = (001101101000)2 = (368)16
Σχεδίαση Ψηφιακών Συστημάτων 8
Οκταδική και δεκαεξαδική
παράσταση (4)
Ψηφιακά διανύσματα (bit vectors): 32 ή 64 bits
αριθμοί  δύσχρηστοι

Δεκαεξαδικοί αριθμοί των 8 ή 16 ψηφίων

Σχεδίαση Ψηφιακών Συστημάτων 9


Αριθμοί στα διάφορα συστήματα

Σχεδίαση Ψηφιακών Συστημάτων 10


Πρόσθεση μη-προσημασμένων
αριθμών (αριθμοί 1 bit)
• Πρόσθεση δύο αριθμών του 1 bit:

Αποτέλεσμα 2 bits:
(αριστερό bit) (δεξί bit)
κρατούμενο (carry) c άθροισμα (sum) s
προκύπτει για 1+1

Σχεδίαση Ψηφιακών Συστημάτων 11


Πρόσθεση μη-προσημασμένων
αριθμών (αριθμοί 1 bit - κύκλωμα)
• Πίνακας αληθείας

AND XOR

Ημιαθροιστής
(half adder)
Σχεδίαση Ψηφιακών Συστημάτων 12
Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits)
Πρόσθεση κάθε ζεύγους bits, λαμβάνοντας
υπόψη σε κάθε θέση i, το κρατούμενο εισόδου
(carry-in) από την πρόσθεση στη θέση i-1
Παράδειγμα: προσθέτουμε X = (01111)2 = (15)10
και Y = (01010) 2 = (10) 10. Είναι αριθμοί των 5 bits.

Σχεδίαση Ψηφιακών Συστημάτων 13


Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits) (2)
• Πίνακας αλήθειας;;
• Για το παράδειγμα, θα χρειάζονταν 10
μεταβλητές εισόδου, δηλαδή πίνακα αλήθειας
με 1024 γραμμές.

• Εξετάζουμε την πρόσθεση κάθε ζεύγους bits


xi + yi χωριστά

Σχεδίαση Ψηφιακών Συστημάτων 14


Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits) (3)
• Για i=0, δεν υπάρχει κρατούμενο
• Για i>0, si = xi + yi + ci και ci+1 = 1, αν
προστίθενται 2 ή 3 bits με τιμή=1

Σχεδίαση Ψηφιακών Συστημάτων 15


Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits) (4)
Πίνακες Karnaugh

Σχεδίαση Ψηφιακών Συστημάτων 16


Πύλη XOR (eXclusive OR)
• Διαθέτει μόνο 2 εισόδους
• Δημιουργεί έξοδο με τιμή 1, αν περιττός
αριθμός εισόδων της έχει τιμή 1  περιττή
συνάρτηση (odd function)
• Μία πύλη XOR δύο εισόδων, μπορεί να
χρησιμοποιεί τη μία είσοδο ως είσοδο ελέγχου
 έξοδος = η άλλη είσοδος ή το συμπλήρωμά
της

Σχεδίαση Ψηφιακών Συστημάτων 17


Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits) (5)

ci = 0, si = xi ⊕ yi

ci = 1, si = (xi ⊕ yi)’

: συμπλήρωμα της XOR ή XNOR


πράξη σύμπτωσης (coincidence operation):
παράγει 1 όταν οι τιμές εισόδου συμπίπτουν.
Σχεδίαση Ψηφιακών Συστημάτων 18
Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits) (6)
XOR

Πλήρης αθροιστής (full adder)


Σχεδίαση Ψηφιακών Συστημάτων 19
Σύνθεση Πλήρη Αθροιστή από
Ημιαθροιστές

Διάγραμμα βαθμίδων

Αναλυτικό διάγραμμα
Σχεδίαση Ψηφιακών Συστημάτων 20
Αθροιστής διάδοσης κρατουμένου
(Ripple-carry adder)

• Όπως κάνουμε την πρόσθεση χωρίς υπολογιστή:


ξεκινάμε από τα λιγότερο σημαντικά ψηφία και
κινούμαστε προς τα πιο σημαντικά.
• Ένα κύκλωμα πλήρη αθροιστή (Full Adder) για κάθε
ζεύγος ψηφίων Σχεδίαση Ψηφιακών Συστημάτων 21
Αθροιστής διάδοσης κρατουμένου –
καθυστέρηση
• Κάθε πλήρης αθροιστής εισάγει χρονική
καθυστέρηση Δt. To c1 φτάνει στη 2η βαθμίδα
σε χρόνο Δt, το c2 φτάνει στην 3η βαθμίδα σε
χρόνο 2Δt, … , το cn-1 σε χρόνο (n-1)Δt 
πλήρες άθροισμα σε nΔt.
• Αν έχω αριθμούς μήκους 32 ή 64 bits 
απαγορευτικά υψηλή καθυστέρηση!!!

Σχεδίαση Ψηφιακών Συστημάτων 22


Παράδειγμα σχεδίασης
Πρόβλημα: κύκλωμα που να πολλαπλασιάζει
έναν αριθμό A των 8 bits με τον αριθμό 3.
Λύση: έστω A=a7a6a5a4a3a2a1a0, γινόμενο
P=p9p8p7p6p5p4p3p2p1p0 (10 bits), όπου P=3A
2 αθροιστές διάδοσης κρατουμένου για
πρόσθεση των 3 αντιγράφων του Α.
• 1ος αθροιστής (8 bits): Α + Α  8 bits
αθροίσματος, 1 bit κρατουμένου.
• 2ος αθροιστής (9 bits): 2Α + Α (η 9η είσοδος
y8 = 0)
Σχεδίαση Ψηφιακών Συστημάτων 23
Παράδειγμα σχεδίασης (2)

Σύμβολο αθροιστή

όχι πολύ αποδοτικό

Σχεδίαση Ψηφιακών Συστημάτων 24


Παράδειγμα σχεδίασης (3)
• Παρατηρούμε ότι ο 2Α μπορεί να
δημιουργηθεί μετατοπίζοντας τα bits του Α
μία θέση προς τα αριστερά, δηλ. αν
Α = a7a6a5a4a3a2a1a0  2Α = a7a6a5a4a3a2a1a00

• Μπορώ να χρησιμοποιήσω έναν αθροιστή για


το 3Α.
• Η είσοδος x0 = 0 (1ο bit από δεξιά για το 2Α)

Σχεδίαση Ψηφιακών Συστημάτων 25


Παράδειγμα σχεδίασης (4)

αποδοτικότερη
σχεδίαση
Σχεδίαση Ψηφιακών Συστημάτων 26
Προσημασμένοι αριθμοί
• Δεκαδικό σύστημα
πρόσημο: + ή – (αριστερά του πιο σημαντικού
ψηφίου)
• Δυαδικό σύστημα
πρόσημο η τιμή του πιο σημαντικού bit:
0  θετικός, 1  αρνητικός

Σχεδίαση Ψηφιακών Συστημάτων 27


Μορφές παράστασης ακεραίων
αριθμών
• Μη προσημασμένος αριθμός

(Μέτρο)

• Προσημασμένος
αριθμός
(Μέτρο)

Σχεδίαση Ψηφιακών Συστημάτων 28


Αρνητικοί αριθμοί
Τρεις τρόποι παράστασης:
• Μέθοδος προσήμου-μέτρου (sign-n-
magnitude)
• Μέθοδος συμπληρώματος ως προς 1 (1’s
complement)
• Μέθοδος συμπληρώματος ως προς 2 (2’s
complement)

Σχεδίαση Ψηφιακών Συστημάτων 29


Παράσταση προσήμου-μέτρου
• Αντίστοιχα με το δεκαδικό σύστημα, ο αριθμός
εκφράζεται με τον ίδιο τρόπο είτε θετικός είτε
αρνητικός και αλλάζει μόνο το πρόσημο (η
τιμή του πιο σημαντικού bit).
• Παράδειγμα: +5 = 0101, -5 = 1101
• Εύκολα κατανοητή από τους ανθρώπους, όχι
κατάλληλη για υπολογιστές.

Σχεδίαση Ψηφιακών Συστημάτων 30


Παράσταση συμπληρώματος ως
προς 1
Σύστημα συμπληρώματος αριθμών: αρνητικός
αριθμός  αφαίρεση θετικών αριθμών
• Ένας αρνητικός αριθμός K μήκους n bits,
προκύπτει με αφαίρεση του αντίστοιχου
θετικού αριθμού P από τον αριθμό 2n-1.
Δηλαδή: Κ = (2n-1) – P
Παράδειγμα: n=4, τότε K = (24-1) – P = (15)10 – P
= (1111)2 – P. Bit προσήμου &
-5 = 1111 – 0101 = 1010 συμπλήρωμα όλων των
-3 = 1111 – 0011 = 1100 ψηφίων του θετικού
Σχεδίαση Ψηφιακών Συστημάτων 31
Παράσταση συμπληρώματος ως
προς 2
• Ένας αρνητικός αριθμός K μήκους n bits,
προκύπτει με αφαίρεση του αντίστοιχου
θετικού αριθμού P από τον αριθμό 2n.
Δηλαδή: Κ = 2n – P
Παράδειγμα: n=4, τότε K = (24) – P = (16)10 – P =
(10000)2 – P.
-5 = 10000 – 0101 = 1011 Πράξη αφαίρεσης και
-3 = 10000 – 0011 = 1101 λήψη κρατουμένου

Σχεδίαση Ψηφιακών Συστημάτων 32


Παράσταση συμπληρώματος ως
προς 2 (συνέχεια)
Αν Κ1 = (2n-1) – P (συμπλήρωμα ως προς 1), και
Κ2 = 2n – P (συμπλήρωμα ως προς 2)

Κ2 = Κ1 + 1 (δηλ. προσθέτουμε το 1 στο


αντίστοιχο συμπλήρωμα ως προς 1)
-5 = 1111 – 0101 = 1010  1011
-3 = 1111 – 0011 = 1100  1101
συμπλήρωμα συμπλήρωμα
ως προς 1 ως προς 2
Σχεδίαση Ψηφιακών Συστημάτων 33
Κανόνας για το συμπλήρωμα ως
προς 2
Έστω προσημασμένος αριθμός:
B = bn-1bn-2bn…b1b0, τότε το συμπλήρωμά του ως
προς 2, έστω K = kn-1kn-2kn…k1k0 :
(από δεξιά προς τα αριστερά) αντιγράφουμε όλα
τα bits του B με τιμή 0 και το πρώτο bit με τιμή
1. Συνεχίζουμε με το συμπλήρωμα των
υπόλοιπων bits.

Σχεδίαση Ψηφιακών Συστημάτων 34


Κανόνας για το συμπλήρωμα ως
προς 2 (παράδειγμα)
Παράδειγμα:
B = 0110, αντιγράφουμε τα bits k0 = b0 = 0 και k1
= b1 = 1 και το συμπλήρωμα των υπολοίπων: k2 =
b’2 = 0 και k3 = b’3 = 1  K = 1010

Αντίστοιχα
B = 10110100  K = 01001100

Σχεδίαση Ψηφιακών Συστημάτων 35


Ερμηνεία προσημασμένων ακεραίων
μήκους 4 bits
b3b2b1b0 1η 2η 3η b3b2b1b0 1η 2η 3η
0111 +7 +7 +7 1000 -0 -7 -8
0110 +6 +6 +6 1001 -1 -6 -7
0101 +5 +5 +5 1010 -2 -5 -6
0100 +4 +4 +4 1011 -3 -4 -5
0011 +3 +3 +3 1100 -4 -3 -4
0010 +2 +2 +2 1101 -5 -2 -3
0001 +1 +1 +1 1110 -6 -1 -2
0000 +0 +0 +0 1111 -7 -0 -1
• 1η : μέθοδος προσήμου-μέτρου
• 2η : μέθοδος συμπληρώματος ως προς 1
• 3η : μέθοδος συμπληρώματος ως προς 2 36
Παράσταση συμπληρώματος ως
προς 2 (όρια)
Ένας αριθμός μήκους n bits της μορφής
B = bn-1bn-2…b1b0 αναπαριστά την τιμή:

μεγαλύτερος αρνητικός αριθμός: 100…00 ή -2n-1


μεγαλύτερος θετικός αριθμός: 011…11 ή 2n-1 - 1

Σχεδίαση Ψηφιακών Συστημάτων 37


Μέθοδοι παράστασης
προσημασμένων αριθμών
• Γιατί υπάρχουν 3 διαφορετικές μέθοδοι;
• Ποια μέθοδος παράστασης είναι κατάλληλη
για χρήση στις αριθμητικές πράξεις;
• Η πρόσθεση θετικών αριθμών γίνεται με τον
ίδιο τρόπο για όλες τις μεθόδους. Τι γίνεται
όταν οι προσθετέοι έχουν διαφορετικό
πρόσημο;
• Έστω αριθμοί μήκους 4 bits (1 bit πρόσημο, 3
bits μέτρο)
Σχεδίαση Ψηφιακών Συστημάτων 38
Πρόσθεση με πρόσημο-μέτρο
• Προσθετέοι με ίδιο πρόσημο  απλό,
άθροισμα των μέτρων και το πρόσημο των
προσθετέων.
• Προσθετέοι με διαφορετικό πρόσημο 
αφαίρεση του μικρότερου από τον
μεγαλύτερο. Απαιτούνται λογικά κυκλώματα
για σύγκριση και αφαίρεση.

Η μέθοδος δεν χρησιμοποιείται στους υπολογιστές


Σχεδίαση Ψηφιακών Συστημάτων 39
Πρόσθεση με συμπλήρωμα ως προς 1
Πλεονέκτημα: αρνητικός αριθμός 
συμπλήρωμα των bits του αντίστοιχου θετικού

αναμενόμενα αποτελέσματα

Σχεδίαση Ψηφιακών Συστημάτων 40


Πρόσθεση με συμπλήρωμα ως προς 1

κρατούμενο +2, όχι +3 κρατούμενο +7, όχι -7

Προσθέτουμε
το κρατούμενο

Σχεδίαση Ψηφιακών Συστημάτων 41


Πρόσθεση με συμπλήρωμα ως προς 1
Συμπέρασμα:
• Η πρόσθεση αριθμών που παριστάνονται με
συμπλήρωμα ως προς 1 δεν είναι πάντα απλή!
• Σε κάποιες περιπτώσεις, απαιτείται διόρθωση
 εξτρά πρόσθεση

Σχεδίαση Ψηφιακών Συστημάτων 42


Πρόσθεση με συμπλήρωμα ως προς 2

κρατούμενο +3 κρατούμενο -7

αγνοείται αγνοείται

Σχεδίαση Ψηφιακών Συστημάτων 43


Πρόσθεση με συμπλήρωμα ως προς 2
Συμπέρασμα:
• Η πρόσθεση αριθμών που παριστάνονται με
συμπλήρωμα ως προς 2 γίνεται πάντα σωστά.
• Αν υπάρχει κρατούμενο εξόδου στη θέση του
προσήμου  αγνοείται.
• Πρόσθεση, ανεξαρτήτως προσήμου
προσθετέων  1 κύκλωμα αθροιστή  η πιο
κατάλληλη μέθοδος παράστασης για την
πρόσθεση.
Σχεδίαση Ψηφιακών Συστημάτων 44
Αφαίρεση με συμπλήρωμα ως προς 2
Αφαίρεση: δημιουργούμε το αντίθετο του
αφαιρετέου (συμπλήρωμα ως προς 2) και το
προσθέτουμε στο μειωτέο.

Σχεδίαση Ψηφιακών Συστημάτων 45


Αφαίρεση με συμπλήρωμα ως προς 2
Παραδείγματα

αγνοείται αγνοείται

Σχεδίαση Ψηφιακών Συστημάτων 46


Γραφική ερμηνεία αριθμών 4 bits
γραμμένοι με συμπλήρωμα ως προς 2

Πρόσθεση: εντοπισμός 1ου Παράδειγμα: -5 + 2 = -3


προσθετέου &
δεξιόστροφη κίνηση κατά
το ποσό του 2ου
προσθετέου Σχεδίαση Ψηφιακών Συστημάτων 47
Γραφική ερμηνεία αριθμών με
συμπλήρωμα ως προς 2 (2)

Αφαίρεση: εντοπισμός
μειωτέου & Παράδειγμα: -5 – 2 = -7
αριστερόστροφη κίνηση
κατά το ποσό του
αφαιρετέου Σχεδίαση Ψηφιακών Συστημάτων 48
Συμπέρασμα
Αφαίρεση: υλοποιείται ως πρόσθεση με το
συμπλήρωμα ως προς 2 του αφαιρετέου,
ανεξάρτητα από πρόσημα.

Ίδιο κύκλωμα αθροιστή για


πρόσθεση και αφαίρεση!!!

Σχεδίαση Ψηφιακών Συστημάτων 49


Μονάδα πρόσθεσης – αφαίρεσης
Διαφορά πρόσθεσης-αφαίρεσης: το
συμπλήρωμα ως προς 2 ενός αριθμού (Y) στην
αφαίρεση.
Θέτουμε το κρατούμενο
Προσθέτουμε το 1
εισόδου c0 = 1
στο συμπλήρωμα
ως προς 1 του Αντιστροφή των bits
αριθμού Y του Y με πύλες NOT

Χρειαζόμαστε πιο ευέλικτη μέθοδο για να


χρησιμοποιήσουμε την κανονική τιμή του Y για την
πρόσθεση και το συμπλήρωμα για την αφαίρεση
Σχεδίαση Ψηφιακών Συστημάτων 50
Πύλη XOR (eXclusive OR)
• Μία πύλη XOR δύο εισόδων, μπορεί να
χρησιμοποιεί τη μία είσοδο ως είσοδο ελέγχου
 έξοδος = η άλλη είσοδος ή το συμπλήρωμά
της

Εφαρμογή στη σχεδίαση


αθροιστή/αφαιρέτη

Σχεδίαση Ψηφιακών Συστημάτων 51


Μονάδα πρόσθεσης – αφαίρεσης (2)
• Σήμα ελέγχου για πρόσθεση/αφαίρεση, έστω
Add/Sub.
– Add/Sub = 0  πρόσθεση
– Add/Sub = 1  αφαίρεση
• Κάθε bit του αριθμού Y συνδέεται στη μία
είσοδο μιας πύλης XOR, η άλλη είσοδος είναι
το Add/Sub σήμα ελέγχου.
– Add/Sub = 0  έξοδος πύλης XOR = Υ
– Add/Sub = 1  έξοδος πύλης XOR = συμπλήρωμα
ως προς 1 του Y
Σχεδίαση Ψηφιακών Συστημάτων 52
Μονάδα Αθροιστή/Αφαιρέτη

Κύκλωμα αθροιστή με
διάδοση κρατουμένου

Σχεδίαση Ψηφιακών Συστημάτων 53


Συμπέρασμα
• Ευέλικτο κύκλωμα
• Ελαχιστοποίηση αριθμού λογικών πυλών
• Μείωση περιπλοκότητας συνδέσεων

Σχεδίαση Ψηφιακών Συστημάτων 54


Υπερχείλιση κατά τις αριθμητικές
πράξεις
Αν χρησιμοποιούνται n bits για παράσταση
προσημασμένων αριθμών  αποτέλεσμα
πρόσθεσης/αφαίρεσης: από -2n-1 έως 2n-1 -1,
αλλιώς,
αριθμητική υπερχείλιση (arithmetic overflow)

Σχεδίαση Ψηφιακών Συστημάτων 55


Υπερχείλιση κατά τις αριθμητικές
πράξεις (παράδειγμα)
Έστω πρόσθεση των αριθμών 7 και 2 (και των
συμπληρωμάτων τους ως προς 2):
1 bit πρόσημο & 3 bits μέτρου  υπερχείλιση
αν αποτέλεσμα με μέτρο > 3bits

Σχεδίαση Ψηφιακών Συστημάτων 56


Υπερχείλιση κατά τις αριθμητικές
πράξεις (παράδειγμα) (2)

αγνοείται
Σχεδίαση Ψηφιακών Συστημάτων 57
Υπερχείλιση
• Υπερχείλιση: c3c’4 + c’3c4 = c3⊕ c4
• Για αριθμούς μήκους n bits:
Υπερχείλιση: cn-1⊕ cn

Σχεδίαση Ψηφιακών Συστημάτων 58


Κόστος – Επιδόσεις
• Ανώτερες επιδόσεις ενός συστήματος 
μεγαλύτερο κόστος
• Μικρή αύξηση κόστους  σημαντική
βελτίωση των επιδόσεων
• Μέτρο αξίας συστήματος: τιμή/επιδόσεις
• Πρόσθεση/αφαίρεση αριθμών  θεμελιώδεις
πράξεις που εκτελούνται συχνά  ταχύτητα
εκτέλεσης  ισχυρό αντίκτυπο στις επιδόσεις
ενός υπολογιστή
Σχεδίαση Ψηφιακών Συστημάτων 59
Ταχύτητα αθροιστή/αφαιρέτη

Μεγαλύτερη καθυστέρηση: X, Y «εμφανίζονται»


στις εισόδους της μονάδας ως τη στιγμή που έχω
όλα τα bits του s και το τελικό κρατούμενο c.
Σχεδίαση Ψηφιακών Συστημάτων 60
Αθροιστής διάδοσης κρατουμένου
μήκους n bits

Σχεδίαση Ψηφιακών Συστημάτων 61


Ταχύτητα αθροιστή/αφαιρέτη (2)
• Καθυστέρηση κυκλώματος αθροιστή μήκους n-bits:
nΔt. (Δt=καθυστέρηση 2 πυλών)  2n καθυστέρηση
πύλης
• Καθυστέρηση στις πύλες XOR: 2n+1 καθυστέρηση
πύλης
• Αν n μεγάλο (π.χ. 32 ή 64 bits)  εξαιρετικά φτωχή
επίδοση
• Η ταχύτητα ενός κυκλώματος περιορίζεται από τη
μεγαλύτερη καθυστέρηση κατά μήκος των
διαδρομών του κυκλώματος  καθυστέρηση
κρίσιμης διαδρομής (critical path delay)

Σχεδίαση Ψηφιακών Συστημάτων 62


Ταχύτητα αθροιστή
Ταχύτερα κυκλώματα  υψηλότερες επιδόσεις

• Καλύτερη (πιο σύγχρονη) τεχνολογία


• Αλλαγή δομής λειτουργικών μονάδων

Σχεδίαση Ψηφιακών Συστημάτων 63


Πρόβλεψη κρατουμένου
• Διάδοση κρατουμένου σε αθροιστή 
καθυστέρηση
• Αν μπορώ να προσδιορίσω (σε μικρό χρονικό
διάστημα) την τιμή κρατουμένου
προηγούμενου σταδίου, μήπως βελτιωθεί η
επίδοση;

Σχεδίαση Ψηφιακών Συστημάτων 64


Πρόβλεψη κρατουμένου (2)
Υπολογισμός κρατουμένου που
προκύπτει στο στάδιο i:
ci+1 = xiyi + xici + yici
ci+1 = xiyi + (xi + yi )ci
ci+1 = gi + pi ci
gi = 1, όταν xi = yi = 1  το στάδιο i δημιουργεί
κρατούμενο (g: συνάρτηση δημιουργίας ή generate
function)
pi = 1, όταν xi = 1 ή/και yi = 1  το στάδιο i δημιουργεί
κρατούμενο εξόδου αν ci = 1, άρα το κρατούμενο
εισόδου διαδίδεται στο επόμενο στάδιο (p:
συνάρτηση διάδοσης ή propagate function) 65
Πρόβλεψη κρατουμένου (3)
Η έκφραση συμπεριλαμβάνοντας το στάδιο i-1:
ci+1 = gi + pi (gi-1 + pi-1 ci-1) = gi + pi gi-1 + pi pi-1 ci-1
και τελικά…
ci+1 = gi + pi gi-1 + pi pi-1 gi-2 + … +pi pi-1…p2p1g0 + pi
pi-1…p1p0c0

Ένα κύκλωμα AND-OR δύο επιπέδων  το


κρατούμενο ci+1 υπολογίζεται πολύ γρήγορα.
Αθροιστής πρόβλεψης κρατουμένου
(carry-lookahead adder)
Σχεδίαση Ψηφιακών Συστημάτων 66
Αθροιστής διάδοσης κρατουμένου με πρόβλεψη
βάση της ci+1 = xiyi + (xi + yi)ci (στάδια 0, 1)

Σχεδίαση Ψηφιακών Συστημάτων 67


Αθροιστής διάδοσης κρατουμένου με
πρόβλεψη βάση της ci+1 = xiyi + (xi + yi)ci

Κύκλωμα πλήρη Μία πύλη OR αντί για AND


αθροιστή (έκφρασης για το ci+1) 68
Αθροιστής διάδοσης κρατουμένου με
πρόβλεψη βάση της ci+1 = xiyi + (xi + yi)ci (2)
Χαμηλή
ταχύτητα:
κρίσιμη
διαδρομή
(από
εισόδους x0,
y0 στην
έξοδο c2)
είναι 5
πύλες

Σχεδίαση Ψηφιακών Συστημάτων 69


Αθροιστής διάδοσης κρατουμένου με
πρόβλεψη βάση της ci+1 = xiyi + (xi + yi)ci (3)
• Υπόλοιπα στάδια έχουν την ίδια διαδρομή με
στάδιο 1  συνολική καθυστέρηση κρίσιμης
διαδρομής: 2n+1 καθυστέρηση πύλης

Αθροιστής πρόβλεψης κρατουμένου


(carry-lookahead adder) βάση της:
ci+1 = gi + pi gi-1 + pi pi-1 gi-2 + … +pi pi-1…p2p1g0 +
pi pi-1…p1p0c0
Σχεδίαση Ψηφιακών Συστημάτων 70
Αθροιστής πρόβλεψης κρατουμένου

Κρίσιμη
διαδρομή:
3 πύλες

Σχεδίαση Ψηφιακών Συστημάτων 71


Αθροιστής πρόβλεψης κρατουμένου
(n στάδια)
Το c2 παράγεται με
καθυστέρηση 3
πυλών (όση και το
c1)  για n bits, το
cn πάλι παράγεται
με καθυστέρηση 3
πυλών.

Σχεδίαση Ψηφιακών Συστημάτων 72


Αθροιστής πρόβλεψης κρατουμένου
Συνολική καθυστέρηση αθροιστή πρόβλεψης
κρατουμένου μήκους n bits:
Καθυστέρηση 4 πυλών: τιμές όλων των σημάτων
gi και pi με καθυστέρηση 1 πύλης + 1
καθυστέρηση πύλης (λόγω XOR) για όλα τα bits
του αθροίσματος
Κλειδί της υψηλής επίδοσης: γρήγορος
υπολογισμός κρατούμενου!

Σχεδίαση Ψηφιακών Συστημάτων 73


Αθροιστής πρόβλεψης κρατουμένου

Συνολική καθυστέρηση
αθροιστή πρόβλεψης
κρατουμένου μήκους n bits:
Καθυστέρηση 4 πυλών: τιμές
όλων των σημάτων gi και pi
με καθυστέρηση 1 πύλης + 1
καθυστέρηση πύλης (λόγω
XOR) για όλα τα bits του
αθροίσματος

74
Αθροιστής πρόβλεψης κρατούμενου
Ιεραρχική προσέγγιση
• Πολυπλοκότητα αυξάνει δραματικά με το n 
Ιεραρχική προσέγγιση: αν n=32 bits χωρίζουμε
αθροιστή σε 4 βαθμίδες άθροισης των 8 bits:
– Βαθμίδα 0: 0..7 bits  αθροιστής πρόβλεψης
κρατουμένου (κρατούμενο: c8)
– Βαθμίδα 1: 8..15 bits αθροιστής πρόβλεψης
κρατουμένου (κρατούμενο: c16)
– Βαθμίδα 2: 16..23 bits  αθροιστής πρόβλεψης
κρατουμένου (κρατούμενο: c24)
– Βαθμίδα 3: 24..32 bits  αθροιστής πρόβλεψης
κρατουμένου (κρατούμενο: c32)
75
Αθροιστής πρόβλεψης κρατουμένου με διάδοση
κρατουμένου ανάμεσα στις βαθμίδες
• Συνδέω τις 4 βαθμίδες (αθροιστές πρόβλεψης
κρατούμενου) ως 4 στάδια αθροιστή διάδοσης
κρατουμένου.

Σχεδίαση Ψηφιακών Συστημάτων 76


Ιεραρχικός αθροιστής πρόβλεψης
κρατουμένου
• Δεύτερο επίπεδο αθροιστή πρόβλεψης
κρατουμένου για ταχύτερη κίνηση του
κρατουμένου από τη μία βαθμίδα στην άλλη.
• Κάθε βαθμίδα παράγει σήματα g και p που την
αφορούν συνολικά, έστω Gj και Pj για βαθμίδα
j  είσοδοι σε αθροιστή πρόβλεψης
κρατουμένου 2ου επιπέδου

Σχεδίαση Ψηφιακών Συστημάτων 77


Ιεραρχικός αθροιστής πρόβλεψης
κρατουμένου (2)

Σχεδίαση Ψηφιακών Συστημάτων 78


Ιεραρχικός αθροιστής πρόβλεψης
κρατουμένου (3)
• Σήματα δημιουργίας και διάδοσης βαθμίδας 0:

Αν οι 8 συναρτήσεις διάδοσης είναι 1


 διαδίδεται το c0 σε όλη τη βαθμίδα
Άλλες περιπτώσεις που
παράγεται κρατούμενο εξόδου

Σχεδίαση Ψηφιακών Συστημάτων 79


Ιεραρχικός αθροιστής πρόβλεψης
κρατουμένου (4)
• Αντίστοιχα για τις υπόλοιπες βαθμίδες:

• Συνολική καθυστέρηση  8 καθυστερήσεις πυλών:


– Gj και Pj  3 καθυστερήσεις πυλών
– Παραγωγή των c8, c16 και c24  2 καθυστερήσεις
πυλών
– Δημιουργία εσωτερικών κρατουμένων στις βαθμίδες
1, 2 και 3  2 καθυστερήσεις πυλών
– Παραγωγή κάθε bit αθροίσματος (XOR)  1
καθυστέρηση πύλης 80
Σύγκριση με Αθροιστή διάδοσης
κρατουμένου
• Αθροιστής διάδοσης κρατουμένου
– Χρονική καθυστέρηση: 2n+1, για αριθμούς των 32
bits  65 καθυστερήσεις πυλών
• Ιεραρχικός Αθροιστής πρόβλεψης
κρατουμένου
– Χρονική καθυστέρηση: 8 καθυστερήσεις πυλών

• Εξαιρετικά βελτιωμένη επίδοση


• Μεγαλύτερη πολυπλοκότητα
Σχεδίαση Ψηφιακών Συστημάτων 81
Πρακτικά θέματα υλοποίησης (1)
• Πύλες με οποιονδήποτε αριθμό εισόδων;; 
υπάρχει περιορισμός στην ικανότητα fan-in
των πυλών σε μικρό αριθμό εισόδων. Έστω
μέγιστο fan-in των πυλών: 4.

Σχεδίαση Ψηφιακών Συστημάτων 82


Πρακτικά θέματα υλοποίησης (2)
• Αδύνατο να υλοποιηθεί με 1 κύκλωμα AND-OR 2
επιπέδων.
• c8: AND με 9 εισόδους, OR με 9 εισόδους.

• 11 πύλες AND + 3 πύλες OR

Σχεδίαση Ψηφιακών Συστημάτων 83


Πρακτικά θέματα υλοποίησης (3)
• Καθυστέρηση: 5 καθυστερήσεις πυλών (αντί για 3 αν
δεν υπήρχε ο fan-in περιορισμός)
– Δημιουργία gj και pj  1 καθυστέρηση πύλης
– Δημιουργία όρων αθροισμάτων  2 καθυστερήσεις
πυλών
– Δημιουργία όρου γινομένου  1 καθυστέρηση
πύλης
– Τελική λογική πρόσθεση όρων  1 καθυστέρηση
πύλης
Συσκευές με χαμηλό fan-in  ειδικά κυκλώματα για
ταχείς αθροιστές  γεννήτριες πρόβλεψης
κρατουμένου (carry lookaheads generators) 84
Αθροιστής πρόβλεψης κρατουμένου
(με XOR3 πύλες)
Δεν υπάρχει πύλη
XOR 3-εισόδων

Σχεδίαση Ψηφιακών Συστημάτων 85


Αθροιστής πρόβλεψης κρατουμένου
(εναλλακτική σχεδίαση)

Σχεδίαση Ψηφιακών Συστημάτων 86


ΣΧΕΔΊΑΣΗ ΑΡΙΘΜΗΤΙΚΏΝ
ΚΥΚΛΩΜΆΤΩΝ ΜΕ ΠΡΌΓΡΑΜΜΑ
CAD
Σχεδίαση Ψηφιακών Συστημάτων 87
Σχεδίαση αριθμητικών κυκλωμάτων
με Σχηματικά Διαγράμματα
• Αθροιστής n-bits
– διάγραμμα ενός πλήρους αθροιστή
– διάγραμμα ενός αθροιστή διάδοσης κρατουμένου
μήκους n-bits  αποτελείται από n μονάδες
πλήρων αθροιστών

Σχεδίαση Ψηφιακών Συστημάτων 88


Αθροιστής/αφαιρέτης των n-bits

• Αν n μεγάλος αριθμός  δύσχρηστη και πολύπλοκη


προσέγγιση, ειδικά με πρόβλεψη κρατουμένου 
χρήση έτοιμων υποκυκλωμάτων
Σχεδίαση Ψηφιακών Συστημάτων 89
Εργαλεία σχηματικών διαγραμμάτων
(schematic capture tools)
• Βιβλιοθήκες γραφικών συμβόλων  λογικές
πύλες
• Βιβλιοθήκες ευρέως χρησιμοποιούμενων
κυκλωμάτων, όπως αθροιστές  κύκλωμα για
χρήση σε μεγαλύτερο κύκλωμα

Μακροσυναρτήσεις (macrofunctions ή
megafunctions)

Σχεδίαση Ψηφιακών Συστημάτων 90


Quartus megafunctions library

Σχεδίαση Ψηφιακών Συστημάτων 91


Μακροσυναρτήσεις
• Εξαρτώνται από την τεχνολογία υλοποίησης:
technology dependent macrofunction,
σχεδιάζεται για συγκεκριμένο είδος
ολοκληρωμένου κυκλώματος.
• Ανεξάρτητα από την τεχνολογία υλοποίησης:
technology independent macrofunction,
μπορεί να υλοποιηθεί σε οποιοδήποτε είδος
ολοκληρωμένου κυκλώματος.
– Βιβλιοθήκη παραμετροποιήσιμων στοιχείων
(Library of Parameterized Modules, LPM)
Σχεδίαση Ψηφιακών Συστημάτων 92
Αθροιστής n bits LPM_ADD_SUB

Σχεδίαση Ψηφιακών Συστημάτων 93


MegaWizard Plug-in Manager
myLPM_add_sub

Σχεδίαση Ψηφιακών Συστημάτων 94


MegaWizard Plug-in Manager
myLPM_add_sub (2)

Σχεδίαση Ψηφιακών Συστημάτων 95


Σχεδίαση Ψηφιακών Συστημάτων 96
Σχεδίαση Ψηφιακών Συστημάτων 97
Σχεδίαση Ψηφιακών Συστημάτων 98
Σχεδίαση Ψηφιακών Συστημάτων 99
Σχεδίαση Ψηφιακών Συστημάτων 100
MegaWizard Plug-in Manager
myLPM_add_sub (8)

Σχεδίαση Ψηφιακών Συστημάτων 101


MegaWizard Plug-in Manager
myLPM_add_sub (9)

Σχεδίαση Ψηφιακών Συστημάτων 102


MegaWizard Plug-in Manager
myLPM_add_sub (10)
• Αθροιστής/αφαιρέτης των 16 bits (ανάλογα με
την τιμή του σήματος add_sub)
• Προσημασμένοι αριθμοί
• Κρατούμενο εισόδου (cin)
• Κρατούμενο εξόδου (cout)
• Υπερχείλιση (overflow)

Σχεδίαση Ψηφιακών Συστημάτων 103


MegaWizard Plug-in Manager
myLPM_add_sub (11)
• dataa[15..0], datab[15..0]: αριθμοί μήκους 16
bits, κάθε bit dataa[0], dataa[1], …
• result[15..0]: αποτέλεσμα-άθροισμα

Σχεδίαση Ψηφιακών Συστημάτων 104


Σχεδίαση αριθμητικών κυκλωμάτων
με τη γλώσσα VHDL
• Αθροιστής διάδοσης κρατούμενου n-bits
1. οντότητα για ένα πλήρη αθροιστή
2. οντότητα υψηλότερου επιπέδου η οποία
χρησιμοποιεί n (έστω 4) οντότητες πλήρους
αθροιστή

Σχεδίαση Ψηφιακών Συστημάτων 105


1. Κώδικας για οντότητα πλήρους
αθροιστή
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY fulladd IS
PORT ( Cin, x, y : IN STD_LOGIC ;
s, Cout : OUT STD_LOGIC ) ;
END fulladd ;

ARCHITECTURE LogicFunc OF fulladd IS


BEGIN
s <= x XOR y XOR Cin ;
Cout <= (x AND y) OR (Cin AND x) OR (Cin AND y) ;
END LogicFunc ;
Σχεδίαση Ψηφιακών Συστημάτων 106
2. Κώδικας για οντότητα αθροιστή
διάδοσης κρατουμένου (4 bits)
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY adder4 IS
PORT ( Cin : IN STD_LOGIC ;
x3, x2, x1, x0 : IN STD_LOGIC ;
y3, y2, y1, y0 : IN STD_LOGIC ;
s3, s2, s1, s0 : OUT STD_LOGIC ;
Cout : OUT STD_LOGIC ) ;
END adder4 ;

Σχεδίαση Ψηφιακών Συστημάτων 107


2. Κώδικας για οντότητα αθροιστή
διάδοσης κρατουμένου (συνέχεια)
ARCHITECTURE Structure OF adder4 IS
SIGNAL c1, c2, c3 : STD_LOGIC ;
COMPONENT fulladd
PORT ( Cin, x, y : IN STD_LOGIC ;
s, Cout : OUT STD_LOGIC ) ;
END COMPONENT ;
BEGIN
stage0: fulladd PORT MAP ( Cin, x0, y0, s0, c1 ) ;
stage1: fulladd PORT MAP ( c1, x1, y1, s1, c2 ) ;
stage2: fulladd PORT MAP ( c2, x2, y2, s2, c3 ) ;
stage3: fulladd PORT MAP (
Cin => c3, Cout => Cout, x => x3, y => y3, s => s3 ) ;
END Structure ;
Σχεδίαση Ψηφιακών Συστημάτων 108
2. Κώδικας για οντότητα αθροιστή
διάδοσης κρατουμένου (συνέχεια)
SIGNAL c1, c2, c3 : STD_LOGIC;
Τα τρία κρατούμενα που προκύπτουν από τα τρία
στάδια
COMPONENT fulladd
Επιτρέπει η οντότητα fulladd να δηλωθεί ως component
(υποκύκλωμα) στην αρχιτεκτονική αυτής της οντότητας
stage0: fulladd PORT MAP ( Cin, x0, y0, s0, c1 );
Εντολή στιγμιότυπου (instantiation statements) του
component. Συνδέεται το κάθε σήμα εισόδου-εξόδου με
την αντίστοιχη θύρα (σχέση θέσεως).
stage3: fulladd PORT MAP (Cin => c3, Cout => Cout, x =>
x3, y => y3, s => s3 ); (=> σχέση ονομάτων)
Σχεδίαση Ψηφιακών Συστημάτων 109
Εναλλακτική προσέγγιση
• Δήλωση του component σε πακέτο (packet) της
γλώσσας VHDL  χωριστό VHDL αρχείο ή μαζί με τη
δήλωση της οντότητας fulladd
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

PACKAGE fulladd_package IS
COMPONENT fulladd
PORT ( Cin, x, y : IN STD_LOGIC ;
s, Cout : OUT STD_LOGIC ) ;
END COMPONENT ;
END fulladd_package ;
110
Εναλλακτική προσέγγιση (2)
• Compilation  πακέτο fulladd_package, θα
αποθηκευτεί στον φάκελο του project.
• Μπορεί να χρησιμοποιηθεί με τις εντολές:
LIBRARY work;
USE work.fulladd_package.all;

Κατάλογος εργασίας όπου αποθηκεύονται όλα τα


προγράμματα VHDL για το συγκεκριμένο project.

111
Εναλλακτική προσέγγιση (3)
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE work.fulladd_package.all ;

ENTITY adder4 IS
PORT ( Cin : IN STD_LOGIC ;
x3, x2, x1, x0 : IN STD_LOGIC ;
y3, y2, y1, y0 : IN STD_LOGIC ;
s3, s2, s1, s0 : OUT STD_LOGIC ;
Cout : OUT STD_LOGIC ) ;
END adder4 ;

Σχεδίαση Ψηφιακών Συστημάτων 112


2. Κώδικας για οντότητα αθροιστή
διάδοσης κρατουμένου (συνέχεια)
ARCHITECTURE Structure OF adder4 IS
SIGNAL c1, c2, c3 : STD_LOGIC ;

BEGIN
stage0: fulladd PORT MAP ( Cin, x0, y0, s0, c1 ) ;
stage1: fulladd PORT MAP ( c1, x1, y1, s1, c2 ) ;
stage2: fulladd PORT MAP ( c2, x2, y2, s2, c3 ) ;
stage3: fulladd PORT MAP (
Cin => c3, Cout => Cout, x => x3, y => y3, s => s3 ) ;
END Structure ;

Σχεδίαση Ψηφιακών Συστημάτων 113


Παράσταση αριθμών στη VHDL
• Αριθμός  αντικείμενο τύπου σήματος
πολλών bits (signal)
• SIGNAL C: STD_LOGIC_VECTOR(1 TO 3);
Σήμα 3 bits: C ή C(1), C(2), C(3)
1 το πιο σημαντικό,
C <= “100”  C(1)=1, 3 το λιγότερο
C(2)=0, C(3)=0 σημαντικό bit
• SIGNAL X: STD_LOGIC_VECTOR(3 DOWNTO 0);
X <= “1100”  X(3)=1, X(2)=1
X(3) το πιο σημαντικό,
X(1)=0, X(0)=0 X(0) το λιγότερο
Σχεδίαση Ψηφιακών Συστημάτων
σημαντικό bit 114
Αθροιστής 4 bits με σήματα πολλών
bits
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE work.fulladd_package.all ;

ENTITY adder4 IS
PORT ( Cin : IN STD_LOGIC;
X, Y : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
Cout : OUT STD_LOGIC );
END adder4 ;

Σχεδίαση Ψηφιακών Συστημάτων 115


Αθροιστής 4 bits με σήματα πολλών
bits
ARCHITECTURE Structure OF adder4 IS
SIGNAL C : STD_LOGIC_VECTOR(1 TO 3) ;
BEGIN
stage0: fulladd PORT MAP ( Cin, X(0), Y(0), S(0), C(1) ) ;
stage1: fulladd PORT MAP ( C(1), X(1), Y(1), S(1), C(2) ) ;
stage2: fulladd PORT MAP ( C(2), X(2), Y(2), S(2), C(3) ) ;
stage3: fulladd PORT MAP ( C(3), X(3), Y(3), S(3), Cout ) ;
END Structure ;

Σχεδίαση Ψηφιακών Συστημάτων 116


Εντολές αριθμητικής αντιστοίχισης
Έστω: SIGNAL X, Y, S: STD_LOGIC_VECTOR(15 DOWNTO 0);
SW <= X + Y;  αθροιστής 16 bits

LIBRARY ieee ;
USE ieee.std_logic_1164.all ; σήματα τύπου STD_LOGIC
USE ieee.std_logic_signed.all ; ως αριθμοί και με
αριθμητικούς συντελεστές
ENTITY adder16 IS
PORT ( X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ;
END adder16 ;
Σχεδίαση Ψηφιακών Συστημάτων 117
Εντολές αριθμητικής αντιστοίχισης
(2)
ARCHITECTURE Behavior OF adder16 IS
BEGIN
S <= X + Y ;
END Behavior ;
• Compilation  δημιουργείται ένα κύκλωμα
αθροιστή που υλοποιεί τον τελεστή “+”
• Δεν περιλαμβάνει σήματα για κρατούμενα
εισόδου και εξόδου ή για υπερχείλιση

Σχεδίαση Ψηφιακών Συστημάτων 118


Αθροιστής 16 bits με σήματα
κρατουμένων και υπερχείλισης
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_signed.all ; -- επιτρέπει χρήση σημάτων
τύπου STD_LOGIC_VECTOR με αριθμητικούς τελεστές

ENTITY adder16 IS
PORT ( Cin : IN STD_LOGIC ;
X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;
S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;
Cout, Overflow : OUT STD_LOGIC ) ;
END adder16 ;
Σχεδίαση Ψηφιακών Συστημάτων 119
Αθροιστής 16 bits με σήματα
κρατουμένων και υπερχείλισης (2)
ARCHITECTURE Behavior OF adder16 IS
SIGNAL Sum : STD_LOGIC_VECTOR(16 DOWNTO 0) ;
BEGIN
Sum <= ('0' & X) + ('0' & Y) + Cin ;
S <= Sum(15 DOWNTO 0) ;
Cout <= Sum(16) ;
Overflow <= Sum(16) XOR X(15) XOR Y(15) XOR Sum(15) ;
END Behavior ;
'0' & X: τελεστής προσθήκης (concatenation),
προστίθεται το 0 στο σήμα Χ
Overflow= cn-1 XOR cn
Σχεδίαση Ψηφιακών Συστημάτων 120
Τύπος INTEGER
SIGNAL X: INTEGER RANGE -32768 TO 32767
• Εύρος τιμών, όχι αριθμός bits
• Δύσκολα μπορεί να υλοποιηθεί πρόγραμμα σε
VHDL που να περιλαμβάνει κρατούμενα και
υπερχείλιση.

Σχεδίαση Ψηφιακών Συστημάτων 121


Αθροιστής 16 bits με σήματα τύπου
INTEGER (κώδικας)
ENTITY adder16 IS
PORT (X, Y : IN INTEGER RANGE -32768 TO 32767 ;
S : OUT INTEGER RANGE -32768 TO 32767 ) ;
END adder16 ;

ARCHITECTURE Behavior OF adder16 IS


BEGIN
S <= X + Y ;
END Behavior ;

Σχεδίαση Ψηφιακών Συστημάτων 122


Πολλαπλασιασμός
• Πολλαπλασιασμός δυαδικού αριθμού με το 2:
ολίσθηση των bits του αριθμού προς τα αριστερά μία
θέση & 0 στη θέση του λιγότερου σημαντικού ψηφίου.
B = bn-1bn-2…b1b0  2B = bn-1bn-2…b1b00
Παράδειγμα: B = 0110110  2B = 01101100
• Πολλαπλασιασμός δυαδικού αριθμού με το 2k:
ολίσθηση των bits του αριθμού προς τα αριστερά k
θέσεις & 0 στη θέση του λιγότερου σημαντικού
ψηφίου.
B = bn-1bn-2…b1b0  22B = bn-1bn-2…b1b000
Παράδειγμα: B = 0110110  2B = 011011000
Μη-προσημασμένους και προσημασμένους αριθμούς123
Διαίρεση
• Αν δυαδικός αριθμός ολισθήσει προς τα δεξιά κατά k
θέσεις  Διαίρεση με το 2k
• Τα bits που ολισθαίνουν προς τα δεξιά, χάνονται.
• Μη-προσημασμένοι αριθμοί: προστίθενται k ψηφία 0
από αριστερά. B = bn-1bn-2…b1b0  B/2 = 0bn-1bn-2…b1
Παράδειγμα: B = 0110110 (54)10  B/2 = 0011011 (27)10
• Προσημασμένοι αριθμοί: πρέπει να διατηρηθεί το
πρόσημο, προστίθενται k ψηφία της τιμής του
προσήμου από αριστερά. B = bn-1bn-2…b1b0 
B/2 = bn-1bn-1 bn-2…b1
Παράδειγμα: B = 101000 (-24)10  B/2 = 110100 (-12) 10,
Β/4 = 111010 (-6) 10 124
Πολλαπλασιασμός αριθμών 4 bits
(μη προσημασμένων)
4 bits

μερικό γινόμενο

ολίσθηση
αντίστοιχες θέσεις
8 bits

Όπως γίνεται ο πολλαπλασιασμός «με το χέρι»

Σχεδίαση Ψηφιακών Συστημάτων 125


Κύκλωμα πολλαπλασιαστή αριθμών
4 bits (μη προσημασμένων)
• Πολλαπλασιαστέος: M=m3m2m1m0
• Πολλαπλασιαστής: Q=q3q2q1q0
• Γινόμενο: P=p7p6p5p4p3p2p1p0
Ακολουθιακή προσέγγιση: αργό κύκλωμα
• Αθροιστής 8 bits για υπολογισμό μερικών γινομένων
• Αν q0=1  προστίθεται ο M στο μερικό γινόμενο.
• Αν q0=0  το μερικό γινόμενο παραμένει ως έχει.
• Αν q1=1  προστίθεται ο 2M στο μερικό γινόμενο.
• Αν q2=1  προστίθεται ο 4M στο μερικό γινόμενο.
• Αν q3=1  προστίθεται ο 8M στο μερικό γινόμενο.
126
Πολλαπλασιαστής σειράς μη-
προσημασμένων αριθμών
Πολλοί αθροιστές: 1
αθροιστής 4 bits για
κάθε μερικό γινόμενο

Τα λιγότερο σημαντικά
bits δεν επηρεάζονται
από τις διαδοχικές
αθροίσεις  τελικό
γινόμενο

Σχεδίαση Ψηφιακών Συστημάτων 127


Κύκλωμα ταχέος πολλαπλασιαστή
(μη προσημασμένων)
• Πολλαπλασιαστέος: M = m3m2m1m0
• Πολλαπλασιαστής: Q = q3q2q1q0
• Μερικό γινόμενο 0: PP0 = pp03pp02pp01pp00 =
m3q0 m2q0 m1q0 m0q0

• PP1

• Όμοια το PP2
128
Δομή κυκλώματος (με αθροιστή
διάδοσης κρατουμένου)
m3 διαγώνια

Σχεδίαση Ψηφιακών Συστημάτων 129


Δομή κυκλώματος (συνέχεια)

Βαθμίδα 1ης σειράς Βαθμίδα 2ης ή 3ης σειράς


FA: Αθροιστής διάδοσης κρατουμένου 130
Πολλαπλασιασμός προσημασμένων
αριθμών
• Πολλαπλασιαστής θετικός αριθμός: κύκλωμα
παρόμοιο με μη-προσημασμένους,
ανεξάρτητα από το (θετικό ή αρνητικό)
πρόσημο του πολλαπλασιαστέου.
• Γίνεται προέκταση προσήμου προς τα
αριστερά (0 για τον θετικό, 1 για τον αρνητικό)

Σχεδίαση Ψηφιακών Συστημάτων 131


Πολλαπλασιασμός προσημασμένων
αριθμών (πολλαπλασιαστής θετικός)

2n bits
Πολλαπλασιαστέος θετικός
Σχεδίαση Ψηφιακών Συστημάτων 132
Πολλαπλασιασμός προσημασμένων
αριθμών (πολλαπλασιαστής θετικός)

2n bits
Πολλαπλασιαστέος αρνητικός
Σχεδίαση Ψηφιακών Συστημάτων 133
Πολλαπλασιασμός προσημασμένων
αριθμών
• Πολλαπλασιαστής αρνητικός αριθμός:
μετατρέπουμε και τους δύο αριθμούς
(πολλαπλασιαστή και πολλαπλασιαστέο) σε
μορφή συμπληρώματος ως προς 2 
χρησιμοποιούμε κύκλωμα παρόμοιο με την
περίπτωση που ο πολλαπλασιαστής είναι
θετικός αριθμός.

Σχεδίαση Ψηφιακών Συστημάτων 134


ΠΑΡΑΔΕΙΓΜΑΤΑ ΣΥΝΟΨΗΣ
ΕΝΟΤΗΤΑΣ

Σχεδίαση Ψηφιακών Συστημάτων 135


Παράδειγμα 5.7
Πρόβλημα: Να μετατρέψετε τον δεκαδικό
αριθμό 14959 σε δεκαεξαδικό αριθμό.
Λύση: δεκαδικός  δεκαεξαδικός: με διαδοχικές
διαιρέσεις με το 16, σε κάθε βήμα το υπόλοιπο
είναι ένα 16αδικό ψηφίο.

Σχεδίαση Ψηφιακών Συστημάτων 136


Παράδειγμα 5.11
Πρόβλημα: Να γράψετε ένα πρόγραμμα σε γλώσσα VHDL
για σύγκριση 2 αριθμών με χρήση κυκλώματος αφαιρέτη
(X-Y):

Z=1: αποτέλεσμα σύγκρισης =0,


αλλιώς Ζ=0
Ν=1: αποτέλεσμα σύγκρισης <0,
αλλιώς Ν=0
V=1: αριθμητική υπερχείλιση.
137
Παράδειγμα 5.11:
Λύση 1 – Structural προσέγγιση
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE work.fulladd_package.all ;
ENTITY comparator IS
PORT ( X, Y : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
V, N, Z : OUT STD_LOGIC ) ;
END comparator ;

ARCHITECTURE Structure OF comparator IS


SIGNAL S : STD_LOGIC_VECTOR(3 DOWNTO 0) ;
SIGNAL C : STD_LOGIC_VECTOR(1 TO 4) ;

Σχεδίαση Ψηφιακών Συστημάτων 138


Παράδειγμα 5.11:
Λύση 1 – Structural προσέγγιση (2)
BEGIN --architecture 1 για συμπλήρωμα
ως προς 2
stage0: fulladd PORT MAP ( '1', X(0), NOT Y(0), S(0), C(1) ) ;
stage1: fulladd PORT MAP ( C(1), X(1), NOT Y(1), S(1), C(2) ) ;
stage2: fulladd PORT MAP ( C(2), X(2), NOT Y(2), S(2), C(3) ) ;
stage3: fulladd PORT MAP ( C(3), X(3), NOT Y(3), S(3), C(4) ) ;
V <= C(4) XOR C(3) ;
N <= S(3) ;
Z <= '1' WHEN S(3 DOWNTO 0) = "0000" ELSE '0';

END Structure ;

Σχεδίαση Ψηφιακών Συστημάτων 139


Παράδειγμα 5.11:
Λύση 1 – Structural προσέγγιση (3)
• Δομική (structural) προσέγγιση
– Δυσκολίες όταν έχω μεγάλα κυκλώματα (π.χ.
σύγκριση αριθμών μήκους 32 bits)

• Συμπεριφορική (behavioral) προσέγγιση


Σημείωση: κατευθείαν αφαίρεση του Y (πύλη
ΝΟΤ για κάθε bit) από τον X  δεν βρίσκω το
συμπλήρωμα του Y.
Το σήμα V (υπερχείλιση) με βάση τα bits του S.
Σχεδίαση Ψηφιακών Συστημάτων 140
Παράδειγμα 5.11:
Λύση 2 – Behavioral προσέγγιση
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_signed.all ;

ENTITY comparator IS
PORT ( X, Y : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
V, N, Z : OUT STD_LOGIC ) ;
END comparator ;

Σχεδίαση Ψηφιακών Συστημάτων 141


Παράδειγμα 5.11:
Λύση 2 – Behavioral προσέγγιση (2)
ARCHITECTURE Behavior OF comparator IS
SIGNAL S : STD_LOGIC_VECTOR(4 DOWNTO 0) ;

BEGIN
S <= ('0' & X) - Y ;
V <= S(4) XOR X(3) XOR Y(3) XOR S(3) ;
N <= S(3) ;
Z <= '1' WHEN S(3 DOWNTO 0) = 0 ELSE '0';
END Behavior ;

Σχεδίαση Ψηφιακών Συστημάτων 142


Παράδειγμα 5.12
Πρόβλημα: κύκλωμα πολλαπλασιαστή μήκους 4 bits,
κάθε σειρά αποτελείται από 4 βαθμίδες FA σε διάταξη
διάδοσης κρατουμένου  καθυστέρηση από τη διάδοση
σημαντική.

143
Παράδειγμα 5.12 (2)
Βελτίωση  κρατούμενα από μία σειρά, «φυλάγονται»
και περιλαμβάνονται στην επόμενη σειρά στη σωστή
θέση bit. Οι FA προσθέτουν 3 κατάλληλα
μετατοπισμένα bits πολλαπλασιαστέου ανάλογα με τα
bits του πολλαπλασιαστή (π.χ. στη θέση bit 2, είσοδοι:
m2q0, m1q1, m0q2)  χρήση πλήρους αθροιστή φύλαξης
κρατουμένου
Συγκρίνετε τη συνολική καθυστέρηση για τα δύο
κυκλώματα πολλαπλασιαστή.

Σχεδίαση Ψηφιακών Συστημάτων 144


Παράδειγμα 5.12 (3)
Πολλαπλασιαστής με Πλήρεις Αθροιστές
φύλαξης κρατουμένου (carry-save)

Σχεδίαση Ψηφιακών Συστημάτων 145


Παράδειγμα 5.12 – Απάντηση
Πολλαπλασιαστής με FA: κρίσιμη διαδρομή

Σχεδίαση Ψηφιακών Συστημάτων 146


Παράδειγμα 5.12 – Απάντηση (2)
Πολλαπλασιαστής με FA φύλαξης κρατουμένου:
κρίσιμη διαδρομή

Σχεδίαση Ψηφιακών Συστημάτων 147


Παράδειγμα 5.12 – Απάντηση (3)
• Καθυστέρηση κρίσιμης διαδρομής:
– Πολλαπλασιαστής με FA: καθυστέρηση πύλης AND
+ 8 καθυστερήσεις βαθμίδας πλήρους αθροιστή
(καθυστέρηση 2 πυλών)
– Πολλαπλασιαστής με FA φύλαξης κρατουμένου:
καθυστέρηση πύλης AND + 6 καθυστερήσεις
βαθμίδας πλήρους αθροιστή

Σχεδίαση Ψηφιακών Συστημάτων 148


Σύνοψη ύλης
5η Ενότητα: Σχεδίαση Ψηφιακών Συστημάτων με
τη γλώσσα VHDL των S. Brown και Z. Vranesic,
κεφάλαιο 5ο ολόκληρο, εκτός από τις ενότητες:
• 5.3.4 (Συστήματα συμπληρώματος βάσης)
• 5.7 (Άλλοι τρόποι παράστασης αριθμών)
• 5.8 (Κώδικας χαρακτήρων ASCII)

Σχεδίαση Ψηφιακών Συστημάτων 149

You might also like