ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Κεφάλαιο 7 i: Καταχωρητές Περίληψη Καταχωρητές Παράλληλης Φόρτωσης Καταχωρητές Ολίσθησης Σειριακή Φόρτωση Σειριακή Ολίσθηση Καταχωρητές Ολίσθησης Παράλληλης Φόρτωσης Καταχωρητές Ολίσθησης ιπλής Κατεύθυνσης Αναπαράσταση Καταχωρητή Ολίσθησης σε VHDL Πανεπιστήµιο Κύπρου Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών MKM - 2 Καταχωρητές και Μετρητές (Registers and ounters) Ένας n-bit καταχωρητής είναι ένα σύνολο από n flip-flops, ικανό να αποθηκεύσει n bits δυαδικής πληροφορίας. Με επιπρόσθετες συνδυαστικές πύλες, ο καταχωρητής µπορεί να εκτελέσει λειτουργίες επεξεργασίας δεδοµένων (data-processing). Ένας µετρητής είναι ένας καταχωρητής που έχει µια προκαθορισµένη σειρά καταστάσεων, βάση της εφαρµογής παλµών του ρολογιού. MKM - 3 Παράδειγµα: Καταχωρητής 2-bit 1. Πόσες καταστάσεις υπάρχουν; 2. Πόσοι συνδυασµοί εισόδων; Συνδυασµοί εξόδων; 3. Ποια είναι η συνάρτηση εξόδου; 4. Ποια είναι η συνάρτηση της επόµενης κατάστασης; 5. Είναι Moore ή Mealy; Ποιες είναι οι τιµές για το 1 και 2, για ένα καραχωρητή n-bit; Παρούσα Κατ. A1 A0 A0 D Επόµενη Κατ. A1(t+1) A0(t+1) Για In1 In0 = 00 01 10 11 Έξοδος (=A1 A0) Y1 Y0 0 0 00 01 10 11 0 0 0 1 00 01 10 11 0 1 1 0 00 01 10 11 1 0 1 1 00 01 10 11 1 1 MKM - 4 In1 In0 D A1 Y1 Y0 Καταχωρητής 4-bit Ηκοινή είσοδος lock πυροδοτεί όλα τα flip-flops στην θετική ακµή κάθε παλµού, και η διαθέσιµη πληροφορία στις 4 D εισόδους µεταφέρεται στον καταχωρητή. MKM - 5 Μνήµη Καταχωρητών Προσδοκίες: Ένας καταχωρητής πρέπει να µπορεί να αποθηκεύει πληροφορίες για πολλαπλές χρονικές περιόδους Η αποθήκευση ή φόρτωση πληροφοριών πρέπει να ελέγχεται από κάποιο σήµα Πραγµατικότητα: Ένας καταχωτητής D flip-flop register φορτώνει πληροφορίες σε κάθε χρονική περίοδο του ρολογιού (clock cycle) Πραγµατοποίηση Προσδοκιών: Χρήση σήµατος για µπλοκάρισµα του καταχωρητή από το ρολόι, ή Χρήση σήµατος για έλεγχο ανάδρασης (feedback control) από την έξοδο του καταχωρητή πίσω στις εισόδους του, ή Χρήση άλλων SR ή JK flip-flops τα οποία κρατούν την παρούσα κατάσταση τους για είσοδο (0,0) Load είναι συχνή ονοµασία για το σήµα που ελέγχει την αποθήκευση και φόρτωση καταχωρητών Load = 1: Φορτώνει τις τιµές των εισόδων Load = 0: Αποθηκεύει τις τιµές του καταχωρητή MKM - 6 Κεφάλαιο 7-i: Καταχωρητές 1
Καταχωρητής 4-bit (συν.) = Load + lock Τα FFs είναι ευαίσθητα σε αλλαγές µόνο όταν Load=1 lock-gating, όχι καλή λύση! MKM - 7 Καταχωρητές µε lock Gating Το σήµα Load χρησιµοποιείται για ενεργοποίηση του σήµατος του ρολογιού όταν είναι 1, και απενεργοποιεί το ρολόι όταν είναι 0. Παράδειγµα προβλήµατος: Για Flip-flops θετικής ακµοπυροδότησης ή αρνητικού-επιπέδου πυροδότησης: lock Load Gated lock στο FF Πιο είναι το πρόβληµα; Απόκλιση του gated clock απότοπραγµατικό ρολόι λόγο της καθυστέρησης από τις επιπρόσθετες πύλες (clock skew) MKM - 8 Καταχωρητές Παράλληλης Φόρτωσης, µε έλεγχο ανάδρασης (ontrolled Feedback) Πιο αξιόπιστος σχεδιασµός: Το ρολόι δουλεύει ασταµάτητα (στα FFs), και Επιλεκτική χρήση του Load για αλλαγή των περιεχοµένων του καταχωρητή. Παράδειγµα: καταχωρητής 2-bit: Για Load = 0, κράτηση παρούσας κατάστασης Load Για Load = 1, D1 φόρτωση τιµών εισόδου, βάση του ρολογιού Πιο σύνθετος σχεδιασµός από clock gating, αλλά ελεύθερος από D0 προβλήµατα χρονισµού lock 2-to-1 Multiplexers MKM - 9 D D A1 A0 Y1 Y0 Καταχωρητής Παράλληλης Φόρτωσης 4-bit MKM - 10 Καταχωρητές Ολίσθησης (Shift Registers) Οι καταχωρητές ολίσθησης µεταφέρουν πληροφορίες «πλάγια» µέσα στον καταχωρητή, προς τη περισσότερο σηµαντική (MSB) ή λιγότερο σηµαντική (LSB) θέση Στην πιο απλή περίπτωση, ο καταχωρητής ολίσθησης είναι απλά ένα σύνολο από D flip-flops ενωµένα σε µια γραµµή, ως ακολούθως: In A B Out D D D D Είσοδος δεδοµένων, In, ονοµάζεται σειριακή είσοδος ή είσοδος δεξιάς ολίσθησης Έξοδος δεδοµένων, Out, συχνά ονοµάζεται σειριακή έξοδος Το διάνυσµα (A, B,, Out) ονοµάζεται η παράλληλη έξοδος MKM - 11 Καταχωρητές Ολίσθησης (συν.) Ησυµπεριφορά του σειριακού καταχωρητή ολίσθησης δίνεται στον πίνακα απέναντι T0 είναι η κατάσταση ακριβώς πριν την εµφάνιση του 1ου παλµού του ρολογιού T1 έρχεται µετά τον πρώτο παλµό, και πριν το δεύτερο Αρχικές άγνωστες καταστάσεις δηλώνονται µε? Συµπληρώστε τις 3 τελευταίες γραµµές του πίνακα In lock A B Out D D D D In A B Out T0 0???? T1 1 0??? T2 1 1 0?? T3 0 1 1 0? T4 1 T5 1 T6 1 MKM - 12 Κεφάλαιο 7-i: Καταχωρητές 2
Σειριακή Μεταφορά εδοµένων Σειριακή µεταφορά δεδοµένων από ένα καταχωρητή A σε ένα καταχωρητή B. Απαιτείται µία περίοδος ρολογιού για κάθε bit. Σειριακή πρόσθεση µε χρήση καταχωρητή ολίσθησης Οι δύο δυαδικοί προσθετέοι αποθηκεύονται σειριακά στους δύο καταχωρητές. Πόσος χρόνος χρειάζεται για να φορτωθούν οι αριθµοί; Τα bits προσθέτονται ανά ζεύγος κάθε χρονική στιγµή, µέσω ενός πλήρη αθροιστή (full-adder circuit). Πόσος χρόνος χρειάζεται για την πρόσθεση; Το carry out του πλήρη αθροιστή µεταφέρεται σε ένα D flip-flop, του οποίου η έξοδος χρησιµοποιείται ως το carry in για το επόµενο ζεύγος των bits. Το sum bit στην έξοδο S του πλήρη αθροιστή µεταφέρεται στο καταχωρητή A. MKM - 13 MKM - 14 Σειριακή πρόσθεση µε χρήση καταχωρητή ολίσθησης Πόσος χρόνος χρειάζεται για ολόκληρη τη διαδικασία; Σχεδιάστε το διάγραµµα, σε επίπεδο καταχωρητών (ή RTL-level = Register- Transfer Level) Σειριακή ή Παράλληλη Πρόσθεση; Ο παράλληλος αθροιστής είναι ένα συνδυαστικό κύκλωµα, ενώ ο σειριακός ένα ακολουθιακό. Ο παράλληλος αθροιστής αποτελείται από n πλήρες 1-bit αθροιστές για προσθετέους των n- bit, ενώ ο σειριακός απαιτεί µόνο 1 πλήρη 1-bit αθροιστή. Το σειριακό κύκλωµα παίρνει n περιόδους του ρολογιού για να ολοκληρώσει, ενώ το παράλληλο 1. Συνοπτικά, ο παράλληλος αθροιστής είναι n φορές µεγαλύτερος του σειριακού σε χώρο, αλλά είναι και n φορές πιο γρήγορος. MKM - 15 MKM - 16 Καταχωρητής Ολίσθησης Παράλληλης Φόρτωσης Προσθέτοντας ένα MUX µεταξύ κάθε «στάδιο» του καταχωρητή ολίσθησης, δεδοµένα µπορούν να αποθηκεύονται ή φορτώνονται µε αξιόπιστο τρόπο. IN SHIFT Παράδειγµα Καταχωρητή Ολίσθησης Παράλλήλης Φόρτωσης 2-bit SHIFT=0, τα A και B αντικαθιστούνται µε ταδεδοµένα στις γραµµές D A και D B (παράλληλη φόρτωση), αλλιώς τα δεδοµένα ολισθαίνουν προς τα δεξιά στην κάθε περίοδο ρολογιού και φορτώνεται 1-bit (σειριακή φόρτωση). Προσθέτοντας και άλλα bits, κατασκευάζουµε καταχωρητή ολίσθησης παράλληλης φόρτωσης n-bit. MKM - 17 D A D A D B B D Καταχωρητής Ολίσθησης Παράλληλης Φόρτωσης Παράδειγµα Καταχωρητή Ολίσθησης Προσθέτοντας ένα MUX Παράλλήλης Φόρτωσης 2-bit µεταξύ κάθε «στάδιο» D A D B του καταχωρητή SHIFT=0 A B ολίσθησης, δεδοµένα IN D D µπορούν να αποθηκεύονται ή φορτώνονται µε SHIFT αξιόπιστο τρόπο. SHIFT=0, τα A και B αντικαθιστούνται µε ταδεδοµένα στις γραµµές D A και D B (παράλληλη φόρτωση), αλλιώς τα δεδοµένα ολισθαίνουν προς τα δεξιά στην κάθε περίοδο ρολογιού και φορτώνεται 1-bit (σειριακή φόρτωση). Προσθέτοντας και άλλα bits, κατασκευάζουµε καταχωρητή ολίσθησης παράλληλης φόρτωσης n-bit. MKM - 18 Κεφάλαιο 7-i: Καταχωρητές 3
Καταχωρητής Ολίσθησης Παράλληλης Φόρτωσης Παράδειγµα Καταχωρητή Ολίσθησης Προσθέτοντας ένα MUX Παράλλήλης Φόρτωσης 2-bit µεταξύ κάθε «στάδιο» D A D B του καταχωρητή SHIFT=1 A B ολίσθησης, δεδοµένα IN D D µπορούν να αποθηκεύονται ή φορτώνονται µε SHIFT αξιόπιστο τρόπο. SHIFT=0, τα A και B αντικαθιστούνται µε ταδεδοµένα στις γραµµές D A και D B (παράλληλη φόρτωση), αλλιώς τα δεδοµένα ολισθαίνουν προς τα δεξιά στην κάθε περίοδο ρολογιού και φορτώνεται 1-bit (σειριακή φόρτωση). Προσθέτοντας και άλλα bits, κατασκευάζουµε καταχωρητή ολίσθησης παράλληλης φόρτωσης n-bit. MKM - 19 Φόρτωσης Άλλος σχεδιασµός MKM - 20 Φόρτωσης Άλλος σχεδιασµός SHIFT = 1 Φόρτωσης Άλλος σχεδιασµός SHIFT = 0 LOAD = 1 MKM - 21 MKM - 22 Φόρτωσης Άλλος σχεδιασµός SHIFT = 0 LOAD = 0 Φόρτωσης Άλλος σχεδιασµός (συν.) Μπορούµε να προσθέσουµε την λειτουργία hold για αποθήκευση/κράτηση της παρούσας πληροφορίας. Shift 0 0 1 Load 0 1 X Λειτουργία Κράτηση παρούσας κατάστασης: 0 0, 1 1, 2 2, Παράλληλη φόρτωση: D0 0, D1 1, D2 2, Ολίσθηση: Serial Input 0 1 2 MKM - 23 MKM - 24 Κεφάλαιο 7-i: Καταχωρητές 4
Καταχωρητής Ολίσθησης µε Επιπρόσθετες Λειτουργίες Προσθέτοντας ένα MUX 4-εισόδων µπροστά από το κάθε D flip-flop σε ένα καταχωρητή ολίσθησης, µπορούµε να υλοποιήσουµε ένα κύκλωµα µε λειτουργίες: ολίσθηση δεξιά, ολίσθηση αριστερά, παράλληλη φόρτωση, κράτηση παρούσας κατάστασης. Καταχωρητές ολίσθησης µπορούν επίσης να σχεδιαστούν για ολίσθηση περισσοτέρων του ενός bit ολίσθηση k (<n) bits Παράδειγµα: Καταχωρητής Ολίσθησης ιπλής Κατεύθυνσης (Bidirectional) S 1 S 0 00 01 10 11 Λειτουργία Κράτηση παρούσας κατάστασης Ολίσθηση προς τα κάτω Ολίσθηση προς τα πάνω Παράλληλη φόρτωση MKM - 25 MKM - 26 S 0 S 1 = 00 MKM - 27 MKM - 28 S 0 S 1 = 01 S 0 S 1 = 10 MKM - 29 MKM - 30 Κεφάλαιο 7-i: Καταχωρητές 5
S 0 S 1 = 11 Καταχωρητής Ολίσθησης σε VHDL -- Καταχωρητής αριστερής ολίσθησης 4-bit µε ασύγχρονο Reset library ieee; use ieee.std_logic_1164.all; entity srg_4_r is port(lk, RESET, SI : in std_logic; : out std_logic_vector(3 downto 0); SO : out std_logic); end srg_4_r; MKM - 31 MKM - 32 Καταχωρητής Ολίσθησης σε VHDL architecture behavioral of srg_4_r is signal shift : std_logic_vector(3 downto 0); begin process (RESET, LK) begin if (RESET = '1') then shift <= "0000"; elsif (LK'event and (LK = '1')) then shift <= shift(2 downto 0) & SI; end if; end process; 3 2 1 0 <= shift; A B D SO <= shift(3); end behavioral; B D SI 3 2 1 0 MKM - 33 Κεφάλαιο 7-i: Καταχωρητές 6