ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Μετρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Μετρητής Ριπής Σύγχρονος υαδικός Μετρητής Σχεδιασμός με Flip-FlopsFlops Σχεδιασμός με J-K Flip-Flops Flops Σειριακοί και Παράλληλοι Μετρητές υαδικός Μετρητής Πάνω-κάτω (Up-down) υαδικός Μετρητής με Παράλληλη Φόρτωση Μετρητής B, Μετρητές τυχαίων ακολουθιών Μετρητές σε VHL MKM - 2 Μετρητές (ounters) Ένας μετρητής είναι ένας καταχωρητής που «μετρά» μια προκαθορισμένη ακολουθία καταστάσεων, βάση της εφαρμογής παλμών του ρολογιού. Οι μετρητές κατηγοριοποιούνται σε: Μετρητές Ριπής: Το ρολόι του συστήματος ενώνεται στην είσοδο ρολογιού του LSB FF. Για τα υπόλοιπα FFs, η έξοδος ενός FF ενώνεται στην είσοδο ρολογιού του επόμενου σημαντικού FF. εν υπάρχει κοινό ρολόι. Χαμηλή κατανάλωση ισχύος. Γιατί; Σύγχρονους Μετρητές: Όλα τα FFs έχουν κοινό ρολόι Χρήση λογικής για υλοποίηση της επόμενης κατάστασης. MKM - 3 Μετρητής Ριπής (Ripple ounter) Πως δουλεύει; Στην θετική ακμή στην είσοδο του ρολογιού του Α, το Α συμπληρώνεται Η είσοδος ρολογιού για το B είναι το συμπλήρωμα της εξόδου του A Όταν το Α αλλάξει από 1 σε 0 (αρνητική ακμή), υπάρχει θετική ακμή (0 σε 1) στην είσοδο ρολογιού του Β, προκαλώντας το Β να συμπληρωθεί Προς-τα-πάνω (upward counting). Γιατί; lock Reset MKM - 4 A B R R 0 1 2 3 0 1 A B Μετρητές 1
Μετρητής Ριπής (συν.) Τα βέλη δείχνουν την σχέση αιτίας- αποτελέσματος P από την προηγούμενη διαφάνεια A Η Η αντίστοιχη B ακολουθία καταστάσεων είναι: 0 1 2 3 0 1 (B,A) = (0,0), (0,1), (1,0), (1,1), (0,0), (0,1), Κάθε επιπρόσθετο bit,,, συμπεριφέρεται έ όπως το bit B, αλλάζοντας 50% λιγότερο συχνά από το προηγούμενο bit. Για 3 bits: (,B,A) = (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1), (0,0,0), MKM - 5 Μετρητής Ριπής (συν.) lock-to-output καθυστέρηση. Πόση είναι, για n-ffs; ripple effect Τα βέλη δείχνουν την σχέση αιτίας- αποτελέσματος P από την προηγούμενη διαφάνεια A Η Η αντίστοιχη B ακολουθία καταστάσεων είναι: 0 1 2 3 0 1 (B,A) = (0,0), (0,1), (1,0), (1,1), (0,0), (0,1), Κάθε επιπρόσθετο bit,,, συμπεριφέρεται έ όπως το bit B, αλλάζοντας 50% λιγότερο συχνά από το προηγούμενο bit. Για 3 bits: (,B,A) = (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1), (0,0,0), MKM - 6 Άλλο παράδειγμα: Μετρητής Ριπής προς-τα-πάνω 4ων-bit, με JK FFs J=K=1 Q i (t+1) = Q i (t) FFs είναι αρνητικά ακμοπυροδοτούμενα Θυμηθείτε... Παράδειγμα (συν.) Λειτουργία: Το λιγότερο σημαντικό bt bit (Q 0 ) συμπληρώνεται σε κάθε αρνητική ακμή του ρολογιού του συστήματος. Κάθε φορά του το Q 0 αλλάζει από 1 σε 0, το συμπληρώνεται. Κάθε φορά του το αλλάζει από 1 σε 0, το Q 2 συμπληρώνεται. Κάθε φορά του το Q 2 αλλάζει από 1 σε 0, το συμπληρώνεται, MKM - 7 MKM - 8 Μετρητές 2
Μετρητής Ριπής προς-τα-κάτω 4ων-bit με JK-FFs Χρησιμοποιήστε ασύγχρονο Set (ή Preset) (S) για να ξεκινήσει από 1111. Εναλλακτικοί σχεδιασμοί: Αλλαγή της ακμοπυροδότησης σε θετική Ένωση της συμπληρωμένης εξόδου του κάθε FF στην είσοδο ρολογιού του επόμενου σημαντικού FF στη σειρά MKM - 9 Μετρητής Ριπής προς-τα-κάτω 4ων-bit με JK-FFs -- VHL Θετικά ακμοπυρυδοτούμενα JK FFs με ασύγχρονο reset Q(t) Q(t+1) J K 0 0 0 X 0 1 1 X 1 0 X 1 1 1 X 0 MKM - 10 Μετρητής Ριπής προς-τα-κάτω 4ων-bit με JK-FFs - VHL (συν.) Προσομοίωση MKM - 11 MKM - 12 Μετρητές 3
Σύγχρονοι υαδικοί Μετρητές Synchronous Binary ounters) Για εξουδετέρωση του προβλήματος του «ripple effect» χρησιμοποιείται κοινό ρολόι για όλα τα FFs και ένα συνδυαστικό μέρος του κυκλώματος για παραγωγή της επόμενης κατάστασης Για ένα μετρητή προς τα πάνω χρήση συνδυαστικού Incrementer lock Incrementer A3 S3 A2 S2 A1 S1 A0 S0 3 Q3 2 Q2 1 Q1 0 Q0 MKM - 13 Σύγχρονοι υαδικοί Μετρητές Serial Gating Εσωτερική λογική XOR συμπληρώνει ή κρατά το κάθε bit ανάλογα Αλυσίδα από AN συμπληρώνει ένα bit εάν όλα τα bits από το LSB μέχρι το τρέχον είναι 1 ount Enable Θέτει όλες τις εξόδους των AN σε 0 για να «κρατήσει» την παρούσα κατάσταση arry Out Κομμάτι του Incrementer Ενώνεται στο ount Enable του επόμενου μετρητή 4-bit για δημιουργία μεγαλύτερων μετρητών Incrementer ount enable EN lock (a) Logic iagram-serial Gating MKM - 14 Q 0 Q 2. arry output O Σύγχρονοι υαδικοί Μετρητές Serial Gating (συν.) Εσωτερική λογική XOR συμπληρώνει ή κρατά το κάθε bit ανάλογα Αλυσίδα από AN συμπληρώνει ένα bit εάν όλα τα bits από το LSB μέχρι το τρέχον είναι 1 ount Enable Θέτει όλες τις εξόδους των AN σε 0 για να «κρατήσει» την παρούσα κατάσταση arry Out Κομμάτι του Incrementer Ενώνεται στο ount Enable του επόμενου μετρητή 4-bit για δημιουργία μεγαλύτερων μετρητών Incrementer ount enable EN lock Q 0 (t+1)=q 0 (t) EN Q 0 (t+1)= (t) (EN Q 0 (t)) Q 2 (t+1)=q 2 (t) (EN Q 0 (t) (t)) Q 2 (t+1)= (t) (EN Q 0 (t) (t) Q 2 (t)) (a) Logic iagram-serial Gating MKM - 15. arry output O Σύγχρονοι υαδικοί Μετρητές Parallel Gating Αλυσίδα του arry ( ιαφάνειες 14-15) 15) Σειρά από πύλες AN μέσα από την οποία περνά το carry ( ripples ripples ) ίνει μεγάλες καθυστερήσεις Ονομάζεται «serial gating» Αντικατάσταση της AN αλυσίδας του carry με πύλες AN παράλληλα ===> => Μειώνει τις καθυστερήσεις μονοπατιών Ονομάζεται «parallel gating» Παρόμοιο με «carry lookahead» Το lookahead χρησιμοποιείται στα TR 4 Os και ENs για αποτροπή EN Q 0 δημιουργίας μεγάλων μονοπατιών Q σε μεγαλύτερους μετρητές 2 Πλεονέκτημα για parallel gating: O πιο γρήγορο σε κάποιες Symbol περιπτώσεις (1111 0000) MKM - 16 EN Q 0 1 Q 2 2 3 O Logic iagram-parallel Gating Μετρητές 4
Σύγχρονοι υαδικοί Μετρητές (συν.) Σχεδιασμός με J-K FFs για Up ounter 4ων-bit Η διαδικασία σχεδιασμού για ένα δυαδικό μετρητή είναι η ίδια με αυτή για ένα τυχαίο σύγχρονο ακολουθιακό κύκλωμα. Οι είσοδοι του κυκλώματος είναι το ρολόι (LK LK) και άλλα απαραίτητα σήματα ελέγχου (EN, Load, κτλ). Οι έξοδοι του κυκλώματος είναι οι έξοδοι των FF (παρούσα ύ κατάσταση). Συνήθως, οι πιο αποτελεσματικές υλοποιήσεις χρησιμοποιούν T-FFs ή JK-FFs. MKM - 17 MKM - 18 Σχεδιασμός με J-K FFs για Up ounter 4ων-bit (συν.) Σχεδιασμός με J-K FFs για Up ounter 4ων-bit (συν.) MKM - 19 MKM - 20 Μετρητές 5
Σχεδιασμός με J-K FFs για Up ounter 4ων-bit (συν.) Σχεδιασμός με J-K FFs για Up ounter 4ων-bit (συν.) 1 J K Q 0 J Q0 = 1 K Q0 = 1 Συγκρίνετε με τον μετρητή της διαφ. 14! J K J Q1 = Q 0 K Q1 = Q 0 J K Q 2 J Q2 = Q 0 K Q2 = Q 0 MKM - 21 J J Q3 = Q 0 Q 2 K Q3 = Q 0 Q 2 K LK MKM - 22 Σχεδιασμός με J-K FFs για Up ounter 4ων-bit με EN και O 1 EN = σήμα ενεργοποίησης, όταν είναι 0 ο μετρητής διατηρεί την παρούσα κατάσταση, όταν είναι 1 μετρά Σύγχρονος υαδικός Μετρητής προς-τα-πάνω 4ων-bit σε VHL O = σήμα εξόδου carry, χρησιμοποιείται για την κατασκευή μεγαλύτερων μετρητών J Q0 = 1 EN K Q0 = 1 EN J Q1 = Q 0 EN K Q1 = Q 0 EN J Q2 = Q 0 EN K Q2 = Q 0 EN J Q3 = Q 0 Q 2 EN K Q3 = Q 0 Q 2 EN 0 = Q 0 Q 2 EN MKM - 23 RESET MKM - 24 Μετρητές 6
Σύγχρονος υαδικός Μετρητής προς-τα-πάνω 4ων-bit σε VHL -- Προσομοίωση υαδικός Μετρητής Πάνω-Κάτω clock U n-bit Up-own ounter Q 0 Q n-1 U = 0: μετρά προς τα πάνω U = 1: μετρά προς τα κάτω MKM - 25 MKM - 26 υαδικός Μετρητής Πάνω-Κάτω (συν.) υαδικός Μετρητής Πάνω-Κάτω (συν.) U Q2 Q1 Q0 Q2. Q1. Q0. 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 Up-ounter U Q2 Q1 Q0 Q2. Q1. Q0. 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0 own-ounter U Q2 Q1 Q0 00 01 11 10 00 01 11 10 Συμπληρώστε τον Κ-χάρτη για Q2., Q1., και Q0., απλοποιείστε, και βρείτε το λογικό διάγραμμα με (a) -FFs και (b) T-FFs MKM - 27 MKM - 28 Μετρητές 7
υαδικός Μετρητής Παράλληλης Φόρτωσης Πρόσθεση μονοπατιού για Load δεδομένα εισόδων ount Ενεργοποιείται για Load = 1 Πρόσθεση λογικής για: Παύση μέτρησης για Load = 1 Παύση κράτησης παρούσας 1 κατάστασης για Load = 1 Ενεργοποίηση μέτρησης για Load = 0 και ount = 1 2 Ο πίνακας λειτουργίας: Load ount Λειτουργία 0 0 Κράτηση παρούσας κατ. 0 1 Μέτρηση προς τα πάνω 1 X Παράλληλη Φόρτωση 0 Q 0 2 Q 2 arry MKM -Output 29 O lock 3 Ένας δυαδικός μετρητής με παράλληλη φόρτωση μπορεί να μετατραπεί σε ένα σύγχρονο μετρητή B με μία μόνο επιπρόσθετη πύλη AN. Εξηγείστε πως λειτουργεί αυτό το κύκλωμα Μετρητής B MKM - 30 Μετρητής B (συν.) Ο μετρητής ξεκινά με έξοδο = 0000. Εάν η έξοδος της AN είναι 0, σε κάθε θετικό παλμό του ρολογιού η τιμή του μετρητή αυξάνεται κατά 1. Όταν η έξοδος γίνει 1001, Q 0 και γίνονται 1, κάνοντας την έξοδο της AN ίση με 1. Αυτή η κατάσταση ενεργοποιεί το Load, έτσι στον επόμενο παλμό μετρητής δεν μετρά, αλλά φορτώνει από τις τέσσερις εισόδους δεδομένων. Η τιμή που φορτώνεται είναι 0000. MKM - 31 Εναλλακτικός Σχεδιασμός για Μετρητή B Χρήση ακολουθιακού λογικού μοντέλου για το σχεδιασμό σύγχρονου μετρητή B με flip-flops flops Πίνακας Καταστάσεων => Συνδυασμοί εισόδων Παρούσα Κατ. Επόμενη Κατ. 1010 μέχρι 1111 Q8 Q4 Q2 Q1 Q8 Q4 Q2 Q1 0 0 0 0 0 0 0 1 είναι συνδυασμοί 0 0 0 1 0 0 1 0 αδιαφορίας (don t cares) 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 MKM - 32 Μετρητές 8
Εναλλακτικός Σχεδιασμός για Μετρητή B (συν.) Χρήση K-χαρτών για δυεπίπεδη ελαχιστοποίηση για βελτιστοποίηση των εξισώσεων της επόμενης κατάστασης: 1 = Q1 2 = Q2 Q1Q8 4 = Q4 Q1Q2 8 = Q8 (Q1Q8 + Q1Q2Q4) Το λογικό διάγραμμα μπορεί να παραχθεί από τις πιο πάνω εξισώσεις. Πρόσθεση ασύγχρονου ή σύγχρονου reset απαραίτητη Τι θα συμβεί αν για οποιοδήποτε λόγο (π.χ. διαταραχή ισχύος) το κύκλωμα πάρει κατάσταση άλλη από 0000 1001? MKM - 33 Εναλλακτικός Σχεδιασμός για Μετρητή B (συν.) Βρείτε τις τιμές των 6 επόμενων καταστάσεων για τους συνδυασμούς αδιαφορίας από τις εξισώσεις της προηγούμενης διαφάνειας Βρείτε το ολοκληρωμένο διάγραμμα καταστάσεων για να εκτιμήσετε την συμπεριφορά του κυκλώματος για τις συνθήκες αδιαφορίας Παρούσα Κατ. Επόμενη Κατ. Q8 Q4 Q2 Q1 Q8 Q4 Q2 Q1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 9 0 14 8 2 15 12 MKM - 34 7 6 11 5 13 10 1 4 3 Εναλλακτικός Σχεδιασμός για Μετρητή B (συν.) Για τον προηγούμενο σχεδιασμό, σε περίπτωση που το κύκλωμα έρθει σε μια άκυρη κατάσταση (invalid state) θα επανέρθει σε μια έγκυρη κατάσταση μέσα σε 2 περιόδους του ρολογιού (clock cycles) Είναι αυτό ικανοποιητικό; Αν όχι: Χρειάζεται κάποιο σήμα που να υποδεικνύει ότι το κύκλωμα εισήλθε σε άκυρη κατάσταση; Ποια η εξίσωση τέτοιου σήματος; Χρειάζεται τροποποίηση του κυκλώματος για να μπορεί να επιστρέψει σε έγκυρη κατάσταση μέσα σε 1 περίοδο του ρολογιού; Χρειάζεται τροποποίηση του κυκλώματος για να μπορεί να επιστρέψει σε συγκεκριμένη έγκυρη κατάσταση (όπως 0); Τυχόν ενέργειες εξαρτώνται από: την εφαρμογή που θα χρησιμοποιήσει το κύκλωμα πολιτική της ομάδας σχεδιασμού είτε το βιβλίο σας. Μετρητές Τυχαίων Aκολουθιών (Arbitrary Sequence ounter) εδομένης μιας τυχαίας ακολουθίας, σχεδιάστε ένα μετρητή που να αναπαράγει την ακολουθία. ιαδικασία: Παραγωγή πίνακα/διάγραμμα καταστάσεων βάση της δεδομένης ακολουθίας Ελαχιστοποίηση (με K-χάρτες, κτλ) Σχεδιασμός λογικού διαγράμματος Παράδειγμα: Σχεδιάστε το λογικό διάγραμμα για τον μετρητή με την εξής ακολουθία: : 0 7 6 1 0 (000 111 110 001 000). Χρησιμοποιείστε FFs. MKM - 35 MKM - 36 Μετρητές 9
Μετρώντας Modulo N Μετρητής ιαίρεσης-δια-n (Modulo n) Μετρά το υπόλοιπο της διαίρεσης δια n, όπου το n μπορεί να μην είναι δύναμη του 2 ή Μετρά τυχαία ακολουθία από n καταστάσεις, ειδικά σχεδιασμένος βάση κάθε κατάστασης Περιλαμβάνει modulo 10 που είναι ο μετρητής B MKM - 37 Μετρώντας Modulo 7: Ανιχνεύει 7 και επανέρχεται ασύγχρονα Χρήση ενός σύγχρονου δυαδικού μετρητή 4ων-bit με ασύγχρονο 3 Q3 lear για κατασκευή μετρητή 2 Q2 Modulo 7. 1 Q1 Όταν ανιχνεύεται το 7, το 0 Q0 κύκλωμα επανέρχεται στο 0 lock P (lear) ασύγχρονα. Άρα, δίνει: 0 LOA 0 1 2 3 4 5 6 LEAR 7(για πολύ λίγο) 0 1 2 3 4 5 6 7( 7(για πολύ λίγο), κτλ. Αυτό ΕΝ ΠΡΕΠΕΙ ΝΑ ΓΙΝΕΤΑΙ! Αναφέρεται ως μετρητής «αυτοκτονίας»! (το «7» «σκοτώνεται», αλλά μαζί του και η δουλειά του σχεδιαστή!) MKM - 38 Μετρώντας Modulo 7: Σύγχρονη Παράλληλη Φόρτωση 0 όταν ανιχνεύεται το 6 Χρήση ενός σύγχρονου δυαδικού μετρητή 4ων-bit με σύγχρονη 0 φόρτωση (load load) και ασύγχρονο 0 clear για κατασκευή μετρητή 0 Modulo 7. 0 Όταν ανιχνεύεται το 6, το κύκλωμα επανέρχεται στο 0 lock σύγχρονα, αφού φορτώνει το 0 από τις εισόδους. Άρα, δίνει: Reset 0 1 2 3 4 5 6 0 1 2 3 4 5 6 Για καταστάσεις μεγαλύτερες (σε δυαδική τιμή) του 0110, χρησιμοποιούνται συνθήκες αδιαφορίας, και έτσι Load = Q2 Q1 (Q0=X, Q3=X) 3 Q3 2 Q2 1 Q1 0 Q0 P LOA LEAR Άλλο παράδειγμα: Ασύγχρονη αρχικοποίηση σε 9 και Σύγχρονη Φόρτωση του 9 όταν φτάσει στο 14 Χρήση ενός σύγχρονου δυαδικού μετρητή 4ων-bit με σύγχρονη 1 3 Q3 φόρτωση (load) για κατασκευή μετρητή Modulo 6. 0 2 Q2 0 1 Q1 Το Load χρησιμοποιείται 1 0 Q0 για να θέσει την κατάσταση στο δυαδικό 9 είτε στο lock P Reset Reset είτε όταν LOA ανιχνεύεται το 14. 1 LEAR Αυτό δίνει: 9 10 11 12 13 14 9 10 11 12 13 14 9 MKM - 39 MKM - 40 Μετρητές 10