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