Μετρητές

9
ΗΡΥ 101 Λογική Σχεδίαση Συμπληρωματικό Υλικό: Μετρητές Έκδοση 2.0 Χειμερινό Εξάμηνο 2013 Καθ. Απόστολος Δόλλας Εργαστήριο Μικροεπεξεργαστών και Υλικού Σχολή ΗΜΜΥ Πολυτεχνείο Κρήτης

description

σημειώσεις

Transcript of Μετρητές

Page 1: Μετρητές

 

ΗΡΥ 101 

Λογική Σχεδίαση 

 

 

 

Συμπληρωματικό Υλικό: 

Μετρητές 

 

Έκδοση 2.0 

Χειμερινό Εξάμηνο 2013  

Καθ. Απόστολος Δόλλας 

  

Εργαστήριο Μικροεπεξεργαστών και Υλικού  Σχολή  ΗΜΜΥ 

Πολυτεχνείο Κρήτης  

 

Page 2: Μετρητές

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 Σήματα Εισόδου/Εξόδου Μετρητών 

 

Page 3: Μετρητές

Οι  μετρητές  εν  γένει  μπορεί  να μην  έχουν πολλά από  τα παραπάνω σήματα.  Ενδεικτικά, μπορεί  να  μην  έχουν 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 και 

Page 4: Μετρητές

μετράμε προς  τα κάτω.  Για  κάτι  τέτοιο είναι  χρήσιμο  το  να  χρησιμοποιήσουμε είτε 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:  

Page 5: Μετρητές

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, και δημιουργώ την αντίστοιχεη συνάρτηση στον πολυπλέκτη:  

Page 6: Μετρητές

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  ώστε  ο 

Page 7: Μετρητές

μεγαλύτερος μετρητής να έχει κοινό ΕΝΑΒ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) 

Page 8: Μετρητές

 

  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)’. 

Page 9: Μετρητές

ΜΕΤΡΗΤΕΣ – ΑΣΚΗΣΕΙΣ  Άσκηση 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’ ουδεμία σχέση έχει με την ασύγχρονη λογική).   Σημέιωση: ΜΗΝ δείξετε τι έχει μέσα ο μετρητής, τον χρησιμοποιούμε αυτούσιο σαν δομικό στοιχείο.