Μετρητές
description
Transcript of Μετρητές
ΗΡΥ 101
Λογική Σχεδίαση
Συμπληρωματικό Υλικό:
Μετρητές
Έκδοση 2.0
Χειμερινό Εξάμηνο 2013
Καθ. Απόστολος Δόλλας
Εργαστήριο Μικροεπεξεργαστών και Υλικού Σχολή ΗΜΜΥ
Πολυτεχνείο Κρήτης
1.0 Μετρητές
1.1 Η Βασική Έννοια του Μετρητή και Γενικά Χαρακτηριστικά Αυτού Οι μετρητές είναι ένα από τα βασικά στοιχεία της δομημένης σχεδίασης. Μπορεί να χρησιμοποιηθεί για να δώσει διαδοχικές διευθύνσεις σε μία μνήμη, για να μετρήσει συμβάντα, ή για να μετρήσει χρόνο. Από την λογική TTL της δεκαετίας 1960 μας έχουν μείνει πολλά χαρακτηριστικά των μετρητών που χρησιμοποιούνται ακόμη και τώρα, χωρίς να σημαίνει ότι όλοι οι μετρητές έχουν όλα τα χαρακτηριστικά αυτά. Τα βασικά σήματα εισόδου και εξόδου ενός μετρητή είναι ως εξής:
IN/OUT Όνομα Σήματος Λειτουργικότητα
ΙΝ CK ή CLOCK To ρολόϊ του συστήματος, με βάση το οποίο διαδέχεται η μία κατάσταση την άλλη, με ενδεχόμενη εξαίρεση ότι κατά περίσταση κάποια σήματα είναι ασύγχρονα, π.χ. κάποιοι μετρητές έχουν ασύγχρονο LD’
IN IN_n‐1 .. IN_0 (ή ΙΝ_D … ΙΝ_A)
Παράλληλες είσοδοι του μετρητή, στην γενική περίπτωση n Bits (σε λογική TTL συνήθως n=4 και συχνά οι είσοδοι ονομάζονται ΙΝ_Α...ΙΝ_D). Οι τιμές που βρίσκονται στις εισόδους θα αποτελέσουν την επόμενη κατάσταση του μετρητή εφόσον το σήμα LD’ είναι ενεργοποιημένο.
ΙΝ LD’ Σήμα παράλληλης φόρτωσης, εν γένει ενεργό στο 0. Η παράλληλη φόρτωση δεν εξαρτάται από τα κάθε φύσεως ENABLE, και μπορεί να είναι σύγχρονη, δηλαδή η κατάσταση που προκύπτει από τις εξωτερικές εισόδους να αλλάζει μετά την επόμενη ακμή του ρολογιού, ή ασύγχρονη, οπότε η κατάσταση αλλάζει αμέσως μετά την ενεργοποίηση του LD’.
IN UP/DN’ Σήμα που καθορίζει εάν ο μετρητής μετράει προς τα πάνω (U/D’ = 1) ή προς τα κάτω (U/D’ = 0).
IN ENABLE (π.χ. ENT, ENP, ENQ’)
Σήμα ενεργοποίησης μετρήματος. Ο μετρητής μπορεί να έχει ένα μόνο τέτοιο σήμα (π.χ. ENABLE, EN), ενεργό είτε στο 1 είτε στο 0 (οπότε το όνομά του έχει μπάρα ή τόνο αντιστοφής, π.χ. ENQ’). Συνήθως οι μετρητές έχουν τουλάχιστον δύο σήματα ENABLE γιατί το ένα χρησιμοποιείται για ενεργοποίηση μετρήματος της επόμενης βαθμίδας, και ένα (βραχυκυκλωμένο σε όλες τις βαθμίδες) σαν σήμα ενεργοποίησης ολόκληρου του μετρητή. Για να μετρήσει ο μετρητής πρέπει ΟΛΑ τα ENABLE να είναι ενεργοποιημένα.
OUT OUT_n‐1..OUT..0 (ή Q_D..Q_A)
Η έξοδος του μετρητή, εν γένει OUT_0 = LSB.
OUT RC (TCO) Σήμα επικείμενου «ρολαρίσματος» του μετρητή, ενεργοποιείται σαν συνδυαστική λογική όταν ο μετρητής έχει την μέγιστη τιμή (1...1), είναι ενεργοποιημένος και μετράει προς τα πάνω, ή έχει την ελάχιστη τιμή (0...0), είναι ενεργοποιημένος, και μετράει προς τα κάτω. Μπορεί να είναι ενεργό στο 1 (όπως φαίνεται δίπλα) ή και στο 0.
Πιν. 3.1 Σήματα Εισόδου/Εξόδου Μετρητών
Οι μετρητές εν γένει μπορεί να μην έχουν πολλά από τα παραπάνω σήματα. Ενδεικτικά, μπορεί να μην έχουν U/D’ γιατί μετρούν μόνο προς τα πάνω ή μόνο προς τα κάτω. Ή, μπορεί να μην έχουν παράλληλες εισόδους και LD’ (σε αυτή την περίπτωση συνήθως έχουν ένα σήμα RESET που θέτει τον μετρητή σε κάποια αρχική τιμή, ενδεικτικά 0...0). Πάντα όμως έχουν τουλάχιστον ένα ENABLE και το σήμα RC.
1.2 Σύγχρονοι και Ασύγχρονοι Μετρητές Σχεδόν στην ολότητα των σχεδιάσεών μας χρησιμοποιούμε σύγχρονους μετρητές. Υπάρχουν όμως και οι λεγόμενοι «ασύγχρονοι» μετρητές. Αυτοί δεν πρέπει να συγχέονται με την συχνά ονομαζόμενη «ασύγχρονη λογική» που η αυστηρή ορολογία είναι «λογική θεμελιώδους τρόπου σχεδίασης», ακριβώς για να αποφεύγονται τέτοιου είδους παρανοήσεις. Οι ασύγχρονοι μετρητές φιάχνονται από Flip‐ Flop όπως και οι σύγχρονοι μετρητές, αλλά με μία διαφορά: Η έξοδος ενός bit χρησιμοποιείται σαν ρολόι στην επόμενη βαθμίδα. Αυτού του είδους η συνδεσμολογία οδηγεί σε ελαφρά γρηγορότερα κυκλώματα, αλλά με το μειονέκτημα ότι οι έξοδοι δεν αλλάζουν όλες μαζί. Όταν τα Bits ενός μετρητή είναι αρκετά (π.χ. 8) αυτή η βαθμιαία αλλαγή της εξόδου είναι αρκετά εμφανής, π.χ. σε ένα παλμογράφο ή ένα λογικό αναλυτή. Ενδεικτικά, η αλλαγή της 8‐Bit τιμής ενός ασύγχρονου μετρητή από 01001111 σε 01010000 θα γίνει με ενδιάμεσα στάδια (χωρίς να έλθει νέος κύκλος ρολογιού) 01001111 ‐> 01001110 ‐> 01001100 ‐> 01001000 ‐> 01000000 ‐> 01010000.
Εικ. 3.1 Ασύγχρονος Μετρητής
1.3 Ο Ρόλος του Σήματος RC (σε άλλες σειρές TCO) Το σήμα RC είναι ιδιαίερα χρήσιμο γιατί μας επιτρέπει να χρησιμοποιήσουμε πολλούς μετρητές σε αλληλουχία (cascade). Οι δύο βασικοί τρόποι σύνδεσής του είναι στο ENABLE ενός αντίστοιχου μετρητή ώστε όταν «ρολάρει» ο μετρητής που δημιούργησε το RC να μετρήσει κατά 1, ή, πιθανόν μέσα από κάποια πύλη ΝΟΤ (αν το RC είναι ενεργό στο 1 και το LD’ είναι ενεργό στο 0) να αρχικοποιηθεί ο μετρητής σε κάποια τιμή. Ενδεικτικά, αν θέλουμε κάποιος δυαδικός μετρητής 4‐Bit να μετράει από το 9 προς τα κάτω έως το 0 και μετά να ξαναγυρίζει στο 9 (δηλαδή να μετράει BCD προς τα κάτω), μπορούμε να βάλουμε μέσα από ένα αντιστροφέα το RC στο LD’, οπότε η επόμενη κατάσταση από το 0000 θα είναι το 1001 (δεκαδικό 9) και όχι το 1111.
1.4 Πως Δημιουργούμε ένα Μετρητή; Η βασική ιδέα είναι ότι κάθε Flip Flop κρατάει την προηγούμενη τιμή του, εκτός εάν όλα τα προηγούμενα Bits είναι 1 και μετράμε προς τα πάνω, ή όλα τα προηγούμενα Bits είναι 0 και
μετράμε προς τα κάτω. Για κάτι τέτοιο είναι χρήσιμο το να χρησιμοποιήσουμε είτε T Flip Flops είτε ένα πολυπλέκτη που κατ’ ουσίαν μετατρέπει τα D Flip Flop σε Τ Flip Flop. Αυτό γίνεται με μία συνδεσμολογία που στην γενική της μορφή έχει μία είσοδο ΙΝ που περνάει στο Flip Flop όταν ενεργοποιήσουμε το ENABLE και στην περίπτωση των μετρητών το ΙΝ αντιστοιχεί στο σήμα Q’.
Flip – Flop με Εnable Το παρακάτω σχήμα δείχνει την βασική συνδεσμολογία για κάθε bit:
0
1Dn
Qn
Qn’
Clk
Qn‐1 Qn‐2..Q0
Up Counter Χωρίς Εnable
Αν θέλουμε να προσθέσουμε και κάποιο σήμα ενεργοποίησης (ENABLE) που μπορεί να είναι είτε ένα μόνο σήμα είτε περισσότερα, όλα εκ των οποίων πρέπει να είναι ενεργά (στο 1 ή στο 0 – ανάλογα με τις προδιαγραφές), τότε προκύπτει η παρακάτω συνδεσμολογία για κάθε bit:
0
1Dn
Qn
Qn’
Clk
Qn‐1 Qn‐2..Q0
EnQ’
EnP
EnT
En
Up Counter με Enable Εαν επί πλέον από τα παραπάνω θέλω να μπορώ να φορτώνω τον μετρητή σε κάποια εξωτερικά καθοριζόμενη κατάσταση, τότε χρειάζομαι μεγαλύτερο πολυπλέκτη, στα σήματα ελέγχου του οποίου περιλαμβάνεται και το LD’, όπου w είναι η εξωτερική είσοδος :
0
1 DnQn
Qn’
Clk
Qn‐1 Qn‐2..Q0
EnQ’
EnP
EnT
En
2
3W
LD’
Up Counter με Enable και Load
Τέλος, αν θέλω ένας μετρητής να μετράει και προς τα κάτω, λαμβάνω υπόψη ότι όταν μετράει προς τα κάτω ένα Flip Flop αλλάζει τιμή όταν όλα τα μικρότερης τάξης μεγέθους Flip Flop είναι όλα 0, και δημιουργώ την αντίστοιχεη συνάρτηση στον πολυπλέκτη:
0
1Dn
Qn
Qn’
Clk
Qn‐1 Qn‐2..Q0
EnQ’
EnP
EnT
En
2
3W
LD’
Qn‐1 Qn‐2..Q0
U/D
Up/Down Counter με Enable και Load Με βάση τα παραπάνω, δείχνουμε ολοκληρωμένη σχεδίαση ενός μετρητή 3 Bit:
0
1 D1Q1
Q1’
Clk
EnQ’
EnP
EnT
En
2
3W
LD’
U/D
0
1D0
Q0
Q0’
Clk
EnQ’
EnP
EnT
En
2
3W
LD’
U/D
0
1D2
Q2
Q2’
Clk
Q1 Q0
EnQ’
EnP
EnT
En
2
3W
LD’
Q1 Q0
U/D
Q0Q0
3‐bit Counter
1.5 Βασική Συνδεσμολογία Σύγχρονων Μετρητών Η βασική συνδεσμολογία μετρητών για να φιάξουμε μεγαλύτερους έγκειται στην σύνδεση του RC κάθε μονάδας σε κάποιο αντίστοιχο ENABLE της επόμενης, αλλά και την βραχυκύκλωση ανά ομάδα σημάτων για τα LD’, U/D’, και τα υπόλοιπα ENABLE ώστε ο
μεγαλύτερος μετρητής να έχει κοινό ΕΝΑΒLE, ως εξής (θεωρούμε ότι και το ENP του «κάτω» μετρητή είναι ενεργοποιημένο):
U/D LD’
RC
EnT
EnPEnQ’
U/D LD’
RC
EnT
EnQ’
Clk
U/D
En
LD’
8‐bit counter από 2 4‐bit counters
1.6 Μετρητές BCD Το μέτρημα σε ένα μετρητή BCD είναι από το 0 έως το 9 και κατόπιν δημιουργεί RC και επανέρχεται στο 0, ενώ η επόμενη τάξη μεγέθους μετράει +1. Τέτοιοι μετρητές είναι ιδιαίτερα χρήσιμοι για οθόνες, αφού αποκωδικοποιούνται απ’ ευθείας ψηφίο‐προς‐ψηφίο. Οι καταστάσεις ενός μετρητή BCD είναι:
Αν θέλουμε να φιάξουμε ένα μετρητή BCD από 4‐Bit δυαδικό μετρητή, πρέπει μετά το 9 να ξαναγυρίσουμε στο 0 και να δημιουργήσουμε σήμα RC ως εξής: (αν δεν έχω reset μπορώ να βάλω 0 στο LD)
Q3Q0 = 11 για πρώτη φορά στο 1001 (910) της οποίας η επόμενη κατάσταση είναι η 0000. Στην είσοδο έχω 0000.
1.7 Σύγχρονο/Ασύγχρονο LD Αν το σήμα φόρτωσης ενός μετρητή είναι ασύγχρονο (κάτι που δεν αλλάζει το ότι το κύκλωμα παραμένει σύγχρονο και δεν έχει σχέση με θεμελιώδη τρόπο σχεδίασης), αυτό σημαίνει ότι ενεργοποίησή του φέρνει αμέσως αλλαγή στην κατάσταση του κυκλώματος χωρίς να περιμένει αυτό να έλθει η επόμενη ακμή του ρολογιού. Αν επομένως θέλουμε να μετρήσει ένας μετρητής με LD’ (δηλ. Ενεργό στο 0) από το 0 μέχρι το 5 και συνδέσουμε ΙΝ3..ΙΝ0 = 0000 και το LD’ στην έξοδο μίας NAND με είσοδο Q2 και Q0, τότε με το που θα έρθει το 5 (δηλ. Q3..Q0 = 0101) και η και η NAND βγάλει έξοδο 0, η κατάσταση θα αλλάξει αμέσως στο 0000 και έτσι στην πράξη ο μετρητής θα μετράει από 0 έως 4. Για να μετρήσει σωστά πρέπει να βάλουμε συνθήκη LD’ το 6, δηλαδή στην NAND να συνδέσουμε τα Q2 και Q1.
1.8 Παράδειγμα Μετρητή Ας υποθέσουμε ότι θέλουμε ένα μετρητή που να μετράει όταν παίρνει ενεργό EN από 3 έως 11 (0011 έως 1011) και τον υλοποιούμε με ένα σύγχρονο μετρητή με σύγχρονο LD’. Συνδέουμε ΙΝ3..ΙΝ0 = 0011 (δηλαδή το 3), U/D’ = 1 (δηλαδή να μετράει κατά πάνω), LD’ = (Q3∙Q1∙Q0)’ (δηλαδή το LD’ γίνεται 0 όταν η έξοδος γίνεται 1011 – το Q2 δεν χρειάζεται γιατί το 1011 προηγείται του 11dd), και αν υπάρχουν αρκετά ΕΝ ενεργοποιούμε τα πάντα εκτός από ένα που είναι ενεργό στο 1 και το κάνουμε εξωτερικό ΕΝ του μετρητή. Αν τώρα θελήσουμε να έχουμε και ένα εξωτερικό RESET που όταν γίνεται 1 φέρνει στον επόμενο κύκλο τον μετρητή στην αρχική κατάσταση 3, τότε (επειδή το LD’ είναι ενεργο στο 0) περνάμε το RESET από ένα αντιστροφέα και το κάνουμε AND με την τερματική κατάσταση, ώστε είτε η έξοδος της NAND είτε το RESET’ γίνει 0 ο μετρητής να φορτώνει το 0011. Επομένως διαμορφώνουμε το LD’ ως εξής: LD’ = (Q3∙Q1∙Q0)’ ∙ RESET’ και αν θέλουμε χρησιμοποιούμε De Morgan ώστε να έχουμε LD’ = (Q3∙Q1∙Q0 + RESET)’.
ΜΕΤΡΗΤΕΣ – ΑΣΚΗΣΕΙΣ Άσκηση 1 Έχουμε ένα μετρητή 4‐bit με τα συνηθισμένα σήματα: : Clock, Up/Down’, EnT, Ld’, IN3..0 με προφανή χρήση (το σήμα EnT είναι ενεργό στο «1» και πρέπει να είναι ενεργοποιημένο για να μετρήσει ο μετρητής, αλλά δεν επηρρεάζει το Ld’). Το Ld’ είναι σύγχρονο, δηλαδή ο μετρητής θα πάρει την κατάσταση που αντιστοιχεί στα ΙΝ3..0 μετά την επόμενη ακμή του ρολογιού. Οι έξοδοι των μετρητών είναι OUT3..0, RC (ενεργό στο «1»). Χρησιμοποιώντας για κάθε υποερώτημα ένα τέτοιο μετρητή και ότι λογικές πύλες χρειάζεστε δημιουργήσετε τα παρακάτω κυκλώματα: (α) Ένα μετρητή που θα μετράει προς τα πάνω από το 0010 έως το 1010 συνεχώς, δηλαδή η ακολουθία θα επαναλαμβάνεται διαρκώς, αλλάζοντας κατάσταση κάθε φορά που θα έρχεται παλμός ρολογιού. Μην ανησυχείτε για την αρχικοποίησητου μετρητή. (β) Αλλάξετε το κύκλωμα του προβλήματος (α) προσθέτοντας ένα κύκλωμα που με ένα εξωτερικό σήμα RESET’ θα αρχικοποιεί τον μετρητή στην κατάσταση 0010. Το RESET’ μπορεί να είναι ενεργό για πολλούς κύκλους ή να έρχεται κάθε τόσο, και για όλη την διάρκειά του ο μετρητής παραμένει στο 0010, αρχίζοντας το μέτρημα μόλις το RESET’ απενεργοποιηθεί. Το RESET’ είναι σύγχρονο, δηλαδή η αλλαγή κατάστασης γίνεται στον επόμενο κύκλο από την ενεργοποίησή του. (γ) Αλλάξετε το κύκλωμα του προβλήματος (β) ώστε ο μετρητής να αρχικοποιείται μεν στο 0010 και να πετράει προς τα πάνω, αλλά όταν φτάσει στην κατάσταση 1010 να σταματάει εκεί και να μην συνεχίζει το μέτρημα, αλλά να χρειάζεται νέο RESET’ για να ξαναρχίσει. (δ) Αλλάξετε το κύκλωμα του υποερωτήμτος (α) θεωρώντας ότι το LD’ είναι ασύγχρονο (θυμίζουμε ότι ασύγχρονο LD’ ουδεμία σχέση έχει με την ασύγχρονη λογική). Σημέιωση: ΜΗΝ δείξετε τι έχει μέσα ο μετρητής, τον χρησιμοποιούμε αυτούσιο σαν δομικό στοιχείο.