Professional Documents
Culture Documents
DSD 07 Chapter5 PDF
DSD 07 Chapter5 PDF
(101011010111)2 = (5327)8
Αν τα bits δεν είναι πολλαπλάσιο του 3,
προσθέτουμε 0 στα αριστερά του αριθμού.
Π.χ. (10111011)2 = (010111011)2 = (273)8
Σχεδίαση Ψηφιακών Συστημάτων 7
Οκταδική και δεκαεξαδική
παράσταση (3)
• 1 δεκαεξαδικό ψηφίο 4 bits
1010111100100101
(1010111100100101)2 = (AF25)16
Αποτέλεσμα 2 bits:
(αριστερό bit) (δεξί bit)
κρατούμενο (carry) c άθροισμα (sum) s
προκύπτει για 1+1
AND XOR
Ημιαθροιστής
(half adder)
Σχεδίαση Ψηφιακών Συστημάτων 12
Πρόσθεση μη-προσημασμένων
αριθμών (πολλών bits)
Πρόσθεση κάθε ζεύγους bits, λαμβάνοντας
υπόψη σε κάθε θέση i, το κρατούμενο εισόδου
(carry-in) από την πρόσθεση στη θέση i-1
Παράδειγμα: προσθέτουμε X = (01111)2 = (15)10
και Y = (01010) 2 = (10) 10. Είναι αριθμοί των 5 bits.
ci = 0, si = xi ⊕ yi
ci = 1, si = (xi ⊕ yi)’
Διάγραμμα βαθμίδων
Αναλυτικό διάγραμμα
Σχεδίαση Ψηφιακών Συστημάτων 20
Αθροιστής διάδοσης κρατουμένου
(Ripple-carry adder)
Σύμβολο αθροιστή
αποδοτικότερη
σχεδίαση
Σχεδίαση Ψηφιακών Συστημάτων 26
Προσημασμένοι αριθμοί
• Δεκαδικό σύστημα
πρόσημο: + ή – (αριστερά του πιο σημαντικού
ψηφίου)
• Δυαδικό σύστημα
πρόσημο η τιμή του πιο σημαντικού bit:
0 θετικός, 1 αρνητικός
(Μέτρο)
• Προσημασμένος
αριθμός
(Μέτρο)
Αντίστοιχα
B = 10110100 K = 01001100
αναμενόμενα αποτελέσματα
Προσθέτουμε
το κρατούμενο
κρατούμενο +3 κρατούμενο -7
αγνοείται αγνοείται
αγνοείται αγνοείται
Αφαίρεση: εντοπισμός
μειωτέου & Παράδειγμα: -5 – 2 = -7
αριστερόστροφη κίνηση
κατά το ποσό του
αφαιρετέου Σχεδίαση Ψηφιακών Συστημάτων 48
Συμπέρασμα
Αφαίρεση: υλοποιείται ως πρόσθεση με το
συμπλήρωμα ως προς 2 του αφαιρετέου,
ανεξάρτητα από πρόσημα.
Κύκλωμα αθροιστή με
διάδοση κρατουμένου
αγνοείται
Σχεδίαση Ψηφιακών Συστημάτων 57
Υπερχείλιση
• Υπερχείλιση: c3c’4 + c’3c4 = c3⊕ c4
• Για αριθμούς μήκους n bits:
Υπερχείλιση: cn-1⊕ cn
Κρίσιμη
διαδρομή:
3 πύλες
Συνολική καθυστέρηση
αθροιστή πρόβλεψης
κρατουμένου μήκους 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 στάδια αθροιστή διάδοσης
κρατουμένου.
Μακροσυναρτήσεις (macrofunctions ή
megafunctions)
ENTITY fulladd IS
PORT ( Cin, x, y : IN STD_LOGIC ;
s, Cout : OUT STD_LOGIC ) ;
END fulladd ;
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 ;
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;
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 ;
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 ;
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 ;
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 δημιουργείται ένα κύκλωμα
αθροιστή που υλοποιεί τον τελεστή “+”
• Δεν περιλαμβάνει σήματα για κρατούμενα
εισόδου και εξόδου ή για υπερχείλιση
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 που να περιλαμβάνει κρατούμενα και
υπερχείλιση.
μερικό γινόμενο
ολίσθηση
αντίστοιχες θέσεις
8 bits
Τα λιγότερο σημαντικά
bits δεν επηρεάζονται
από τις διαδοχικές
αθροίσεις τελικό
γινόμενο
• PP1
• Όμοια το PP2
128
Δομή κυκλώματος (με αθροιστή
διάδοσης κρατουμένου)
m3 διαγώνια
2n bits
Πολλαπλασιαστέος θετικός
Σχεδίαση Ψηφιακών Συστημάτων 132
Πολλαπλασιασμός προσημασμένων
αριθμών (πολλαπλασιαστής θετικός)
2n bits
Πολλαπλασιαστέος αρνητικός
Σχεδίαση Ψηφιακών Συστημάτων 133
Πολλαπλασιασμός προσημασμένων
αριθμών
• Πολλαπλασιαστής αρνητικός αριθμός:
μετατρέπουμε και τους δύο αριθμούς
(πολλαπλασιαστή και πολλαπλασιαστέο) σε
μορφή συμπληρώματος ως προς 2
χρησιμοποιούμε κύκλωμα παρόμοιο με την
περίπτωση που ο πολλαπλασιαστής είναι
θετικός αριθμός.
END Structure ;
ENTITY comparator IS
PORT ( X, Y : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
V, N, Z : OUT STD_LOGIC ) ;
END comparator ;
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 ;
143
Παράδειγμα 5.12 (2)
Βελτίωση κρατούμενα από μία σειρά, «φυλάγονται»
και περιλαμβάνονται στην επόμενη σειρά στη σωστή
θέση bit. Οι FA προσθέτουν 3 κατάλληλα
μετατοπισμένα bits πολλαπλασιαστέου ανάλογα με τα
bits του πολλαπλασιαστή (π.χ. στη θέση bit 2, είσοδοι:
m2q0, m1q1, m0q2) χρήση πλήρους αθροιστή φύλαξης
κρατουμένου
Συγκρίνετε τη συνολική καθυστέρηση για τα δύο
κυκλώματα πολλαπλασιαστή.