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