(i==1)?

ΛΟΓΙΚH ΣΧΕΔΙΑΣH ΙΙ
Καλώς ήλθατε
Τα τυπικά (1/2)
• Ωρολόγιο Πρόγραμμα
 (2 ώρες παραδόσεις – 1 ώρα φροντιστήριο) x 13
 Πέμπτη 16:00 –19:00, ΒΑ
 Στην αρχή μόνο παραδόσεις
• Τελική εξέταση :
 Γραπτώς, με ανοικτές σημειώσεις
 Θα περιλαμβάνει Verilog για ακολουθιακά κυκλώματα
• Προαιρετικές ασκήσεις :
 Σε ομάδες των 3 ατόμων
 Ανακοινώνονται ανά 3 εβδομάδες και υποβάλλονται ηλεκτρονικά
έως την επόμενη
Τα τυπικά (2/2)
• Ιστοσελίδα του μαθήματος :
http://pc-vlsi18.ceid.upatras.gr/logic_design_ii.html
(Διαφάνειες, εκφωνήσεις, θέματα)
• Ερωτήσεις – Απορίες :
• Ε-mail :
[email protected]
[email protected]
• Ωρες γραφείου : κάθε πρωί 08.30 – 12.30
Bιβλιογραφία & Υλη
• M. Morris Mano, Digital Design, 5th edition !!!
Εξεταζόμενη ύλη : κεφάλαια 1-8 (όχι ΑSM), 9 (αν παραδοθεί)
• J. F. Wakerly, Digital Design : Principles and Practices, 3rd
edition
Όλο το βιβλίο πλην του κεφαλαίου 3, ABEL & VHDL
• Recommended :
J. F. Wakerly, Digital Design : Principles and Practices, 4th edition
Λογική Σχεδίαση Ι με μια ματιά
Συνδυαστικά κυκλώματα =>
Συνδυαστικά στοιχεία =>
Λογικές πράξεις πάνω σε δυαδικές μεταβλητές =>
Δίτιμη άλγεβρα Βοοle.
ΛΣ ΙΙ : Γιατί ???
ΑΞΙΩΜΑΤΑ :
• Όσο πιο "έξυπνη" είναι μια συσκευή => ↑ κόστος => ↑ κέρδος
• Κάθε "έξυπνη" συσκευή έχει ένα ή πολλά "πολύπλοκα" κυκλώματα
⇒ Υπάρχει ολοένα & μεγαλύτερη ζήτηση σχεδιαστών "πολύπλοκων"
κυκλωμάτων με ολοένα και μεγαλύτερους μισθούς
Πόσους απέλυσε η Xilinx μετά το κραχ των χρηματιστηρίων το
1999 ? Πόσους η Microsoft ?
Πόσος ο μέσος μισθός του C programmer ? Πόσος του test
engineer ?
=> Είναι καλό να μάθετε να σχεδιάζετε αυτά τα "πολύπλοκα"
κυκλώματα.
Nαι, αλλά στο ΛΣ Ι έμαθα να σχεδιάζω …
– ΜΑΘΑΤΕ ΜΟΝΟ ΤΗ ΘΕΩΡΙΑ ΓΙΑ ΝΑ ΣΧΕΔΙΑΖΕΤΕ ΜΙΚΡΑ
ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ
– ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ :
• Κανένα χρήσιμο κύκλωμα σήμερα δεν είναι μόνο
συνδυαστικό (ακολουθεί παράδειγμα)
• Τα σημερινά κυκλώματα για να προσδώσουν "εξυπνάδα" στο
τελικό προϊόν είναι εξαιρετικά πολύπλοκα
• Ευτυχώς που χρειάζονται πιο "έξυπνους" σχεδιαστές και πιο
"έξυπνους" τρόπους σχεδιασμού.
   Ίσως γι' αυτό και είναι το μόνο κομμάτι της
επιστήμης μας χωρίς εξωτερικό ανταγωνισμό   
Μη συνδυαστικό κύκλωμα ? Που χρειάζεται ?
Στα συνδυαστικά κυκλώματα οι έξοδοι σε κάθε χρονική στιγμή
εξαρτώνται αποκλειστικά και μόνο από τις εισόδους οι οποίες
εφαρμόζονται την συγκεκριμένη εκείνη στιγμή. Δεν εξαρτώνται ούτε από
την σειρά με την οποία αυτές οι είσοδοι εφαρμόσθηκαν, ούτε από την
κατάσταση του κυκλώματος πριν αυτές εφαρμοσθούν.
ΠΡΟΒΛΗΜΑ: Να σχεδιασθεί ψηφιακό σύστημα το οποίο να επιτρέπει την
εκκίνηση της μηχανής του αυτοκινήτου μόνον εφόσον ο οδηγός καθίσει
και δέσει την ζώνη ασφαλείας του καθίσματός του.
ΛΥΣΗ ΑΔΑΟΥΣ ΣΧΕΔΙΑΣΤΗ : Μια πύλη ΑΝD από ένα sensor στη ζώνη και
έναν στο κάθισμα του αυτοκινήτου
ΥΛΗ ΛΣ ΙΙ
– Στοιχεία μνήμης / Ακολουθιακά κυκλώματα
• Latches
• Flip-flops
– FSMs σε υλικό
– Verilog για ακολουθιακά κυκλώματα
– Συνήθη ακολουθιακά κυκλώματα : καταχωρητές, ολισθητές,
μετρητές
– Μνήμες και προγραμματιζόμενα ολοκληρωμένα
– Τεχνολογίες ψηφιακών ολοκληρωμένων κυκλωμάτων
– Ασύγχρονα ακολουθιακά κυκλώματα
ΜΕΡΟΣ Ι
ΑΚΟΛΟΥΘΙΑΚΑ ΣΤΟΙΧΕΙΑ
Συνδυαστικά vs Ακολουθιακά
– Συνδυαστικά : οι έξοδοι εξαρτώνται σε κάθε χρονική στιγμή αποκλειστικά και
μόνο από τις εισόδους που εφαρμόζονται. Δεν εξαρτώνται ούτε από τη σειρά
εφαρμογής, ούτε από τη κατάσταση του κυκλώματος πριν εφαρμοστούν.
– Ακολουθιακά : οι έξοδοι κάθε χρονική στιγμή εξαρτώνται όχι μόνο από τις τιμές
των εισόδων εκείνη τη στιγμή αλλά και από τις τιμές των εισόδων όλες τις
προηγούμενες χρονικές στιγμές. Οι τελευταίες έχουν επιβάλλει μια κατάσταση
στο κύκλωμα.
– Η κατάσταση αποθηκεύεται σε στοιχεία με ικανότητα μνήμης. Τα στοιχεία αυτά
ονομάζονται ακολουθιακά στοιχεία. Ένα κύκλωμα που περιέχει ακολουθιακά
στοιχεία είναι ένα ακολουθιακό κύκλωμα.
– Υπάρχουν 2 μεγάλες κατηγορίες ακολουθιακών κυκλωμάτων : σύγχρονα και
ασύγχρονα κυκλώματα. Στα σύγχρονα οι αλλαγές της κατάστασης γίνονται σε
διακριτές στιγμές χρόνου.
Σύγχρονα vs Ασύγχρονα
Σύγχρονα
Ασύγχρονα
• Οι τιμές σε συγκεκριμένες
(διακριτές) τιμές χρόνου το
περιγράφουν πλήρως
• Συγχρονισμός επιτυγχάνεται
μέσω
ενός
σήματος
χρονισμού, γνωστό ως ρολόι
που έχει μια περιοδική
παλμοσειρά.
• Δε παρουσιάζουν αστάθεια.
• Οι τιμές εξαρτώνται από τη
σειρά εναλλαγής των σημάτων
εισόδου. Νέα τιμή μπορεί να
προκύψει ανά πάσα χρονική
στιγμή.
• Ένα συνδυαστικό κύκλωμα με
ανατροφοδότηση (feedback)
είναι
ένα
ασύγχρονο
ακολουθιακό κύκλωμα.
• Αστάθεια.
Θα μελετήσουμε αρχικά τα σύγχρονα κυκλώματα, μιας
και τα ασύγχρονα τείνουν να εξαλειφθούν εντελώς από
εμπορικούς σχεδιασμούς.
Γενικό μοντέλο ενός πλήρους κυκλώματος
Είσοδοι
Συνδυαστικά
Κυκλώματα
Εξοδοι
Στοιχεία Μνήμης
(Ακολουθιακά)
Ακολουθιακά στοιχεία / στοιχεία μνήμης - γενικά
– Εστω το σήμα χρονισμού :
– Υπάρχουν δύο (2) κατηγορίες :
• Αυτά που είναι ενεργά βάσει μιας στάθμης δυναμικού :
• Το στοιχείο αυτό μπορεί να αλλάζει κατάσταση διαρκώς όσο το σήμα
χρονισμού βρίσκεται στην ενεργή στάθμη.
• Τα στοιχεία αυτής της κατηγορίας ονομάζονται μανταλωτές (latches)
Ακολουθιακά στοιχεία / στοιχεία μνήμης – γενικά - 2
• Αυτά που είναι ενεργά μόνο κατά την μία ακμή αλλαγής δυναμικού
Θετική
ακμοπυροδότηση
Αρνητική
ακμοπυροδότηση
• Τα στοιχεία αυτής της κατηγορίας ονομάζονται flip-flops
Το πρώτο κύκλωμα με μνήμη !
Vcc
s
Y
Q
Gnd
0
1
0
0
1
Gnd
Vcc
1
0
1
Gnd
0
– Το κύκλωμά μας απέκτησε μνήμη !
– "Θυμάται" ότι κάποτε η είσοδος πήγε στο 1.
– Το κύκλωμα δεν επανέρχεται !!!
S-R latch χωρίς χρονισμό
s
s
Q'
Q
r
R
Q
Q'
S
– Eστω ότι κάποια χρονική
στιγμή έχουμε κατορθώσει
να θέσουμε Q=a και Q'=~a.
– Το κύκλωμα θα θυμάται αυτή
τη κατάσταση επ’ άπειρον αν
S=R=0.
S-R latch χωρίς χρονισμό -2
R
Q
Q'
S
R=0
R=0
S=1
– Oρίζουμε τις καταστάσεις Q=1 και
Q'=0 (κατάσταση θέσης) και Q=0
και Q'=1 (κατάσταση μηδενισμού)
ως τις δύο χρήσιμες καταστάσεις του
κυκλώματός μας.
Q=1
Q=1
Q'=0
Q'=0
S=0
– Mε S=1 και R=0 θέτουμε το στοιχείο. Επαναφορά σε S=R=0
διατηρεί τη κατάσταση θέσης !
S-R latch χωρίς χρονισμό -3
R=0
R=1
S=0
Q=0
Q=0
Q'=1
Q'=1
S=0
– Mε S=0 και R=1 καθαρίζουμε (μηδενίζουμε / επαναφέρουμε) το
latch. Επαναφορά σε S=R=0 διατηρεί τη κατάσταση καθαρισμού !
– Άρα έχουμε καταφέρει να φτιάξουμε ένα στοιχείο που μπορεί
να αποθηκεύει (θυμάται) δύο διαφορετικές καταστάσεις =>
ένα βασικό στοιχείο δυαδικής μνήμης.
S-R latch χωρίς χρονισμό -4
R=0
R=1
S=1
Q=0
Q=X
Q'=0
Q'=X
S=0
– Mε S=1 και R=1, παίρνουμε Q=Q'=0. Λόγω της μη
συμπληρωματικότητας των εξόδων αυτή η κατάσταση είναι
"περίεργη".
– Επιστρoφή στο S=R=0 θα οδηγήσει το κύκλωμά μας σε μία από
τις χρήσιμες καταστάσεις !!!
– Σε ποια από τις δύο εξαρτάται από τη χρονική σειρά
απενεργοποίησης των S, R.
– Η παράληλη ενεργοποίηση των S, R, πρέπει να αποφεύγεται.
S-R latch χωρίς χρονισμό με πύλες ΝΑΝD
~R
Q'
Q
H αρχή λειτουργίας είναι
ακριβώς αντίστοιχη με
αυτή του S-R latch που
φτιάχνεται με πύλες NOR.
~S
– Το κύκλωμα θυμάται τη προηγούμενη κατάστασή του όταν
~S=~R=1.
– Θέση με ~S=0 και ~R=1. Καθαρισμός με ~S=1 και ~R=0.
– H είσοδος ~S=~R=0 πρέπει να αποφεύγεται.
Πρέπει να θυμάστε (1)
R
S
~S
~R
Q
Q'
Q
Q'
S
R Q
Q’
0
0
Q
Q’
ηρεμία (μνήμη)
0
1
0
1
Reset (Q=0)
1
0
1
0
Set (Q=1)
1
1
0
0
απροσδιοριστία
~S ~R Q
Q’
0
0
1
1
απροσδιοριστία
0
1
1
0
Set (Q=1)
1
0
0
1
Reset (Q=0)
1
1
Q
Q’
ηρεμία (μνήμη)
S-R latch με είσοδο επίτρεψης
S
~S
Q
C
(clk)
C
S
R
Q (next state)
0
X
X
Q (t-1)
1
0
0
Q (t-1)
1
0
1
0 (μηδενισμός)
1
1
0
1 (θέση)
1
1
1
Απροσδιοριστία
Q'
R
~R
Δύο επιπλέον NAND και την είσοδο ελέγχου C.
Η είσοδος ελέγχου καθορίζει πότε οι τιμές των S και R θα
περάσουν στο χωρίς χρονισμό latch
D latch : το πρώτο μας ακολουθιακό στοιχείο
C
D
Q (next state)
0
X
Q (t-1)
1
0
0 (μηδενισμός)
1
1
1 (θέση)
D
Q
C
(clk)
Q'
Εξαλείφουμε τη κατάσταση απροσδιοριστίας με το να
μην επιτρέπουμε S, R να πάρουν ταυτόχρονα τη τιμή 1.
Μπορούμε εναλλακτικά να πούμε ότι η τιμή στην είσοδο
D, δειγματοληπτείται διαρκώς όσο το C είναι στο 1.
D latch -2
– Πολλές φορές το D latch αναφέρεται και ως διαφανές
(transparent).
– Nα θυμάστε : To D latch αντιγράφει την είσοδο στην έξοδό του
όταν το C είναι σε κατάσταση επίτρεψης ΔΙΑΡΚΩΣ
Μεταστάθεια : το πρόβλημα
0->1
1
0
1->0
Q
Q
0->1
0
1
1
Q'
1
Q'
1->0
Πρόβλημα : αυτή η μετάβαση καθυστερεί
περισσότερο από τις άλλες
1
0
Q
Κατάσταση
απροσδιοριστίας !!!
1
0
1
Q'
Μεταστάθεια : η λύση
– Απαιτείται συγχρονισμός στις αλλαγές των γραμμών D και C.
– Oρίζουμε δύο χρονικά διαστήματα που θα πρέπει να τηρούνται
ευλαβικά από κάθε σχεδιαστή ώστε να μην εμφανιστεί ποτέ το
πρόβλημα της μεταστάθειας.
– Setup time (χρονικό διάστημα προετοιμασίας). Χρόνος που το D
πρέπει να έχει σταθερή τιμή πρίν την αλλαγή του C στην
κατάσταση επίτρεψης.
– Hold time (χρονικό διάστημα αποκατάστασης). Χρόνος που το D
πρέπει να διατηρήσει την ίδια τιμή μετά την αλλαγή του C στην
κατάσταση επίτρεψης.
Flip-flops
– Aντίθετα με τα latches που ενεργοποιούνται με τη στάθμη
δυναμικού της εισόδου επίτρεψης (level-triggered) τα flip-flops
είναι ακμοπυροδότητα (edge triggered) !
– Δειγματοληπτούν την είσοδό τους δηλαδή σε κάποια από τις δύο
ακμές του ρολογιού.
– Αν χρησιμοποιούν τη θετική ακμή, ονομάζονται θετικής
πυροδότησης
– Αν χρησιμοποιούν την αρνητική ακμή ονομάζονται αρνητικής
ακμοπυροδότησης.
Latches vs Flip-flops
Q latch
Q flip-flop
D
clk
Γιατί χρειάζονται τα flip-flops ?
Είσοδοι
Συνδυαστικά
Κυκλώματα
Εξοδοι
Στοιχεία Μνήμης
(Ακολουθιακά)
O χρονισμός αυτού του μονοπατιού θα ήταν
προβληματικός χωρίς flip-flops
– ΣΥΜΠΕΡΑΣΜΑ : η έξοδος ενός latch δε θα πρέπει ποτέ
αυτούσια ή μέσω ενός συνδυαστικού κυκλώματος να συνδέεται
σαν είσοδος στο ίδιο ή άλλα latches που έχουν το ίδιο ρολόι.
Πως φτιάχνεται ένα θετικά ακμοπυροδότητο D flip-flop ?
D
Δύο D latches
(master and slave)
Q
C
D
Q
C
Q'
Q'
D
D
Q
D
Q
C
Q'
C
Q'
MASTER
CLK
SLAVE
Mε συμπληρωματικά
ρολόγια
Λειτουργία ενός D flip-flop
D
D
Q
D
Q
C
Q'
C
Q'
MASTER
CLK
SLAVE
– CLK = LOW => Master
ενεργό, Slave ανενεργό. Η
είσοδος αντιγράφεται στην
έξοδο του Master. Η έξοδος
του Slave διατηρεί τη
προηγούμενη κατάσταση
– CLK = ΗIGH => Master ανενεργό και συνεπώς διατηρεί τη
προηγούμενη κατάσταση. Το Slave ενεργό και αντιγράφει την
έξοδο του Μaster στην έξοδο του κυκλώματος.
– Αφού η έξοδος του Master δεν αλλάζει όσο το ρολόι είναι στο
1, και η έξοδος του Slave δεν αλλάζει όσο το ρολόι είναι στο 0
ότι δειγματοληπτήθηκε στην ανοδική ακμή του CLK θα είναι η
έξοδος του κυκλώματος μέχρι την επόμενη ανοδική ακμή.
Πίνακας αληθείας και παράδειγμα λειτουργίας
D
D
Q
C
Q'
MASTER
CLK
QM
D
Q
C
Q'
SLAVE
D
CLK
Q
Q'
0
↑
0
1
1
↑
1
0
X
0
Q(t-1)
Q'(t-1)
X
1
Q(t-1)
Q'(t-1)
Συμβολισμοί και χρόνοι ενδιαφέροντος
Θετικά
ακμοπυροδοτούμενο
D flip-flop
D
Q
CLK Q'
Αρνητικά
ακμοπυροδοτούμενο
D flip-flop
D
Q
CLK Q'
Αρνητικά ακμοπυροδότητο D flip-flop
D
D
Q
C
Q'
MASTER
QM
D
Q
C
Q'
SLAVE
CLK
D
CLK
Q
Q'
0
↓
0
1
1
↓
1
0
X
0
Q(t-1)
Q'(t-1)
X
1
Q(t-1)
Q'(t-1)
Πιο οικονομική υλοποίηση ενός D-FF
6 πύλες έναντι 8
της προηγούμενης
περίπτωσης
– 2 μανταλωτές εξαρτώνται από τις τιμές των CLK και D, ενώ το
τελευταίο παράγει τις εξόδους.
– Όταν CLK = 0, S = R = 1 και η έξοδος παραμένει στη
προηγούμενη τιμή της.
Πιο οικονομική υλοποίηση ενός D-FF - 2
0
1
1
0
011
1
100
1
11
01
1
Πιο οικονομική υλοποίηση ενός D-FF - 2
10
100
10
1
1
1
01
01
1
0
11
1
1
01
1
0
Αμεσες είσοδοι σε ένα FF
• Μερικές φορές θέλουμε να θέσουμε ή να καθαρίσουμε ένα FF
χωρίς να χρειάζεται να οδηγήσουμε τόσο την είσοδο D όσο και την
είσοδο CLK
• Το πλέον προφανές παράδειγμα είναι η αρχικοποίηση των
ακολουθιακών στοιχείων του κυκλώματός μας σε κάποια αρχική
κατάσταση.
• Αυτό επιτυγχάνεται με τη προσθήκη άμεσων εισόδων :
– Άμεση είσοδος θέσης (Preset / Direct Set). H ενεργοποίησή της
οδηγεί το Q στο 1 (Q' στο 0).
– Άμεση είσοδος μηδενισμού / καθαρισμού (Reset / Clear). Η
ενεργοποίησή της οδηγεί το Q στο 0 (Q' στο 1).
• Οι άμεσες είσοδοι μπορούν να δρουν
– Ασύγχρονα
– Σύγχρονα
1η περίπτωση : Ασύγχρονες άμεσες είσοδοι
• Ονομάζονται ασύγχρονες, γιατί η ενεργοποίησή τους έχει άμεσο
αποτέλεσμα στην έξοδο του FF, ανεξάρτητο δηλαδή από το
χρονισμό του.
D-FF με ασύγχρονο Reset (αρνητικής λογικής)
• Όταν Reset = 0, Q'=1. Eπίσης S=1 και συνεπώς Q=0.
• Όταν Reset = 1, το κύκλωμα είναι ισοδύναμο με το θετικά
ακμοπυροδότητο D FF που εξετάσαμε προηγούμενα.
D-FF με ασύγχρονο Clear και Preset αρνητικής λογικής
• Όταν ~Clear=0 και
~Preset=1 => ~Q=1,
S=1και συνεπώς Q=0.
• Όταν ~Preset=0 και
~Clear=1, => Q=1, R=1
και συνεπώς και ~Q=0.
• Όταν ~Clear = ~Preset =0, τότε Q=~Q=1. Aσταθής κατάσταση.
• Όταν ~Clear = ~Preset =1, τότε αναγόμαστε στο προηγούμενο
κύκλωμα του θετικά ακμοπυροδότητου D FF.
D-FF με ασύγχρονο Reset και Preset
SN 74 (ALS) 74
Dual Positive Edge D
Flip – Flops with
Asynchronous Preset
and Clear
2η περίπτωση : Σύγχρονες άμεσες είσοδοι
• Ονομάζονται σύγχρονες, γιατί ανεξάρτητα του πότε γίνει
ενεργοποίησή τους, η επίδρασή τους στην έξοδο του FF, γίνεται
με το επόμενο σήμα χρονισμού. Σε θετικά ακμοπυροδότητο FF
αυτό σημαίνει με την επόμενη ανερχόμενη ακμή του ρολογιού.
D Flip Flop με σύγχρονο Reset ή σύγχρονο Preset
Προκύπτουν από το βασικό κύκλωμα ενός D Flip Flop με
έλεγχο της D εισόδου του.
Αρνητικής λογικής
σήμα καθαρισμού
~Clear
Θετικής λογικής
σήμα θέσης
Preset
D
Και τα δύο μαζί με
προτεραιότητα στο
~Clear
D
Preset
D
~Clear
Πρέπει να θυμάστε (2)
D
SET
CLR
Q
Q
D
SET
CLR
Q
Q
Aλλα είδη flip - flop
• Το D flip flop είναι το πιο οικονομικό από άποψης απαιτούμενων
πυλών.
• Ωστόσο δεν είναι το μόνο που μπορούμε να φτιάξουμε. Τα πιο
διαδεδομένα άλλα είδη flip flop είναι :
– Το Μaster / Slave S-R Flip – Flop
– To Master / Slave J-K Flip – Flop
– To ακμοπυροδότητο J-K Flip – Flop
– To T Flip – Flop
– To Scan Flip – Flop
• Σε καθένα από αυτά, μπορούμε να προσθέτουμε άμεσες εισόδους
είτε σύγχρονες είτε ασύγχρονες.
• Η συλλογή όλων αυτών των ακολουθιακών στοιχείων αποτελεί
μια βιβλιοθήκη στοιχείων με την οποία φτιάχνουμε τα
ακολουθιακά κυκλώματά μας.
Μaster / Slave S-R Flip Flop
C
S
R
Q (next state)
0
1
1
X
0
0
X
0
1
Q (t-1)
Q (t-1)
0 (μηδενισμός)
1
1
1
1
0
1
1 (θέση)
Απροσδιοριστία
• Oπως φτιάξαμε ένα Master / Slave D FF με τη χρήση δύο D
latches, μπορούμε με τη χρήση δύο S-R latches με είσοδο
επίτρεψης να φτιάξουμε ένα Master / Slave S-R FF.
Μaster / Slave S-R Flip Flop - 2
S
S
C
R
R
Q
Q
S
C
R
Q
Q
Q
Q'
C
• Oταν το ρολόι είναι στο 1, το Slave δεν αλλάζει κατάσταση.
• Όταν το ρολόι μεταβαίνει στο 0 αλλάζει η έξοδος του Slave αλλά το
Master είναι ανενεργό και συνεπώς δίνει συνεχώς την ίδια είσοδο στο
Slave.
• Αρα αλλαγή της εξόδου μόνο στην ↓ του C.
C
S
R
Q (next state)
0
1
1
X
0
0
X
0
1
Q (t-1)
Q (t-1)
0 (μηδενισμός)
1
1
1
1
0
1
1 (θέση)
Απροσδιοριστία
Μaster / Slave J-K Flip Flop
• Προτάθηκε για να λύσει το πρόβλημα της απροσδιοριστίας.
• Φτιάχνεται κι αυτό με 2 S-R latches με είσοδο επίτρεψης και επιπλέον
λογική που αποτρέπει την είσοδο S=R=1 στο Μaster latch.
J
K
S
C
R
Q
Q
S
C
R
Q
Q
Q
Q'
C
• Όταν η J πάρει τη τιμή 1, η S γίνεται 1, μόνο αν το Q' είναι 1, δηλαδή
αν το Q είναι 0 !
• Όταν η Κ πάρει τη τιμή 1, η R γίνεται 1, μόνο αν το Q είναι 1, δηλαδή
αν το Q' είναι 0 !
Μaster / Slave J-K Flip Flop - 2
S
C
R
J
K
Q
Q
S
C
R
Q
1
1
Q
0
1
0
1
1
C
Q
S
C
R
Q
Q
S
C
R
Q
1
Q
0
S
C
R
Q
0
Q
1
C
C
1
S
C
R
S
C
R
Q
Q
S
C
R
Q
1
1
Q
0
1
0
1
Q
C
• Η εφαρμογή της εισόδου J = K = 1 είχε ως αποτέλεσμα την
αντιστροφή της προηγούμενης κατάστασης.
• Ακριβώς το ίδιο θα συνέβαινε αν η αρχική μας κατάσταση ήταν η
Q=0 και ~Q=1.
Μaster / Slave J-K Flip Flop – 3
C
J
K
Q (next state)
0
1
1
X
0
0
X
0
1
Q (t-1)
Q (t-1)
0 (μηδενισμός)
1
1
1
1
0
1
1 (θέση)
~Q(t-1)
Ακμοπυροδοτούμενο J-K Flip Flop
• Φτιάχνεται από το ακμοπυροδοτούμενο D FF με επιπλέον λογική
J
K
C
D
CLK
Q
Q
Q
~Q
Ακμοπυροδοτούμενο J-K Flip Flop - 2
SN 74 (ALS) 109
Dual Positive Edge J-~K Flip – Flops
with Asynchronous Preset and Clear
T(oggle) Flip Flop
– Στη πιο βασική του εκδοχή τo Τ FF αλλάζει κατάσταση σε κάθε
πυροδότηση
D
SET
Q
CLK
CLK
CLR
Q
– ΠΑΡΑΤΗΡΗΣΗ : Η έξοδος ενός Τ FF έχει τη μισή συχνότητα της
εισόδου του !!!
– Ένα Τ FF κατασκευάζεται από ένα D ή ένα J-K FF.
D
SET
Q
1
J
SET
Q
CLK
CLK
CLR
Q
K
CLR
Q
T(oggle) Flip Flop με είσοδο επίτρεψης
– Στις πιο πολλές εφαρμογές δε χρειαζόμαστε εναλλαγή σε κάθε
πυροδότηση => μια είσοδος επίτρεψης (enable – στο εξής Τ) είναι
ωφέλιμη.
T
D
SET
Q
T
CLK
CLK
CLR
Q
– Ένα Τ FF κατασκευάζεται και πάλι είτε από ένα D ή ένα J-K FF.
T
EN
D
CLK
T
CLK Q
Q
EN
T
J
CLK
T
CLK
K
Q
~Q
Scan Flip Flop (σάρωσης)
– Στα σημερινά ολοκληρωμένα κυκλώματα υπάρχουν χιλιάδες
έως εκατοντάδες χιλιάδες FF.
– Όταν θέλουμε να δοκιμάσουμε αν ένα τέτοιο κύκλωμα
δουλεύει σωστά θα πρέπει να μπορούμε να βάζουμε τα FFς
του σε συγκεκριμένες καταστάσεις αλλά και να διαβάζουμε τις
εξόδους τους.
– Αυτό δε μπορεί να γίνει (ή είναι εξαιρετικά χρονοβόρο)
χρησιμοποιώντας τις εισόδους / εξόδους λειτουργίας του FF.
– Σκοπός του scan FF είναι να παρέχει εναλλακτική είσοδο /
έξοδο δεδομένων που τη χρησιμοποιούμε κατά τη διάρκεια
των δοκιμών μόνο.
Scan D FF
D
TE
TI
CLK
D
Q
CLK Q
– Ισοδύναμο με ένα DFF και ένα πολυπλέκτη στην είσοδο με σήμα
επιλογής το ~ΤΕ (Τest Enable).
– Για κανονική λειτουργία ΤΕ = 0 και παίρνουμε ένα D FF.
– Όταν ΤΕ = 1, η είσοδος D, οδηγείται από το ΤΙ (Test Input).
– Oι επιπλέον είσοδοι χρησιμοποιούνται για τη σύνδεση όλων των
FF του κυκλώματος σε μια αλυσίδα σάρωσης (scan chain).
Scan Chain
D
TE
D
TI
CLK
TI
D
TE
TI
CLK
Q
Q
Q
TI
CLK
Q
TI
Q
CLK
CLK Q
D
TE
D
TE
Q
D
TE
Q
TI
CLK
Q
D
TE
Q
Q
TI
Q
TO
CLK
CLK
TE
– Oλες οι είσοδοι ΤΕ συνδέονται μαζί.
– Η έξοδος κάθε FF συνδέεται και στην είσοδο ΤΙ του επόμενου
– Όταν ΤΕ = 1, μπαίνουμε σε κατάσταση δοκιμής, όπου η επιθυμητή
τιμή των στοιχείων εισάγεται σειριακά. Κατόπιν με ΤΕ=0
γυρίζουμε στην κανονική λειτουργία. Τέλος με ΤΕ=1 και πάλι και
παλμούς ρολογιού από την έξοδο ΤΟ διαβάζουμε τη νέα
κατάσταση των στοιχείων.
Πρέπει να θυμάστε (3)
–
–
–
–
–
–
Level vs edge triggered στοιχεία.
Αμεσες είσοδοι για Reset και Preset.
Πρέπει να τηρούνται χρόνοι Setup και Hold.
To D FF είναι το πιο οικονομικό και γι’ αυτό χρησιμοποιείται κατά κόρο.
Αλλα χρησιμοποιούμενα FFs είναι τα J-K και Τ.
Για εύκολη δοκιμή των κυκλωμάτων μας καλό είναι τα FFs να είναι Scan.
D
Q(t)
0
0
1
1
T
Q(t)
0
Q(t-1)
1
~Q(t-1)
J
K
Q(t)
S R
Q(t)
0
0
Q(t-1)
0
0
Q(t-1)
0
1
0
0
1
0
1
0
1
1
0
1
1
1
~Q(t-1)
1
1
?
Πίνακες Διέγερσης
•
Μπορεί να θεωρηθεί ως ο συμπληρωματικός του χαρακτηριστικού πίνακα
λειτουργίας ενός flip flop.
•
O χαρακτηριστικός πίνακας μας δείχνει για κάθε πιθανή τρέχουσα κατάσταση και
τιμή εισόδου την επόμενη κατάσταση του flip flop.
•
O πίνακας διέγερσης, μας δίνει τις απαιτούμενες τιμές εισόδου του flip flop ώστε
να μεταβούμε από μια τρέχουσα κατάσταση, σε μια επιθυμητή επόμενη
κατάσταση.
Μηχανές πεπερασμένων καταστάσεων
– ∃ πολλών ειδών. Εμάς μας ενδιαφέρουν όσες περιέχουν στοιχεία
μνήμης που αλλάζουν όλα μαζί με το ίδιο σήμα χρονισμού.
– Η μηχανή αλλάζει κατάσταση με την ενεργοποίηση του
ρολογιού.
– Γενική δομή μιας μηχανής πεπερασμένων καταστάσεων (κατά
Mealy) :
Είσοδοι
Μνήμη
Κατάστασης
Λογική
επόμενης
κατάστασης
F
Τρέχουσα
(ακολουθιακά Κατάσταση Λογική
κυκλώματα)
εξόδου
G
Ρολόι
Σήμα
ρολογιού
Εξοδοι
Μηχανές πεπερασμένων καταστάσεων-2
Είσοδοι
Μνήμη
Κατάστασης
Λογική
επόμενης
κατάστασης
F
Τρέχουσα
(ακολουθιακά Κατάσταση Λογική
εξόδου
κυκλώματα)
G
Εξοδοι
Ρολόι
Σήμα
ρολογιού
– Aν οι καταστάσεις που μπορεί να βρεθεί η μηχανή μου είναι κ,
τότε στη μνήμη κατάστασης έχω λ ακολουθιακά στοιχεία έτσι
ώστε 2λ ≥ κ
– Η επόμενη κατάσταση παράγεται από τη λογική επόμενης
κατάστασης F και είναι συνάρτηση εισόδων και τρέχουσας.
– Η λογική εξόδου G καθορίζει την έξοδο σα συνάρτηση εισόδων
και τρέχουσας κατάστασης.
– F και G είναι συνδυαστικά και μόνο λογικά κυκλώματα.
Επόμενη κατάσταση = F (τρέχουσα κατάσταση, είσοδος)
Εξοδος = G (τρέχουσα κατάσταση, είσοδος)
Mealy vs Moore machines
Είσοδοι
Μνήμη
Κατάστασης
Λογική
επόμενης
κατάστασης
F
Τρέχουσα
(ακολουθιακά Κατάσταση Λογική
εξόδου
κυκλώματα)
G
Εξοδοι
Ρολόι
Σήμα
ρολογιού
– Mealy :
Εξοδος = G (τρέχουσα κατάσταση, είσοδος)
– Moore :
Εξοδος = G (τρέχουσα κατάσταση)
– Στη πράξη όλες οι μηχανές είναι ένα μίγμα αυτών των δύο
θεωρήσεων.
– Στα πολύ υψηλής ταχύτητας κυκλώματα απαιτούμε έξοδο σταθερή
για μια πλήρη περίοδο ρολογιού. Εκεί προτιμάμε Moore με
μηδενική λογική G.
Eναλλακτική πρόταση : διοχέτευση
Είσοδοι
Μνήμη
Κατάστασης
Λογική
επόμενης
κατάστασης
F
Τρέχουσα
(ακολουθιακά Κατάσταση Λογική
κυκλώματα)
εξόδου
G
Ρολόι
Μνήμη
Διοχέτευσης
Εξοδοι
Ρολόι
Σήμα
ρολογιού
Οι έξοδοι κατά τη διάρκεια μιας περιόδου ρολογιού εξαρτώνται από
τη κατάσταση και τις εισόδους κατά τη διάρκεια της
προηγούμενης περιόδου ρολογιού.
Διαγράμματα μετάβασης καταστάσεων
(State Transition Diagrams – STDs)
Παράδειγμα STD για το πρόβλημα
αναγνώρισης του string 1011
Mealy
Moore
Ασκηση 1
–
Δώστε το κατά Moore STD μιας μηχανής
πεπερασμένων καταστάσεων, η οποία να
υποδεικνύει τo ψηφίο άρτιας ισοτιμίας της
σειριακής εισόδου της.
Ασκηση 2
–
Αναπτύξτε το κατά Mealy STD μιας μηχανής
πεπερασμένων καταστάσεων με μια είσοδο Χ και
μια έξοδο Υ η οποία λειτουργεί ως εξής :
όταν η είσοδος Χ πάει στο 1, η έξοδος Υ γίνεται 1
για 2 ωρολογιακούς κύκλους και μετά
επανέρχεται στο 0 ακόμη κι αν η είσοδος Χ
παραμένει στο 1.
Ασκηση 3
–
Δώστε STDs κατά Moore για μια μηχανή η οποία
θα αναγνωρίζει στη σειριακή είσοδό της το
pattern 010 μόνο και μόνο αν δεν έχει ποτέ
εμφανιστεί προηγούμενα το pattern 100.
Θεωρείστε ότι επικαλυπτόμενες εμφανίσεις
αναγνωρίζονται 2 φορές.
Ασκηση 4
Πρόβλημα : Σχεδιάστε ένα STD κατά Mealy με 2
εισόδους Α, Β και 1 έξοδο Z. H Z παίρνει την
τιμή 1 :
• Αν στην είσοδο Α έχουμε την ίδια τιμή σε δύο
διαδοχικούς κύκλους ή
• Οσο στην είσοδο Β έχουμε 1 αφότου ήταν
αληθής η πρώτη συνθήκη
– Σε κάθε άλλη περίπτωση η έξοδος είναι 0.
–
Mealy
00/0
0X/1
Α0
ΟΚ00
0X/1
11/1
ΟΚΑ1
/0
0X
11/1
/1
0X
/0
00
1X/1
ΟΚ11
1X/1
10/0
Α1
/0
/0
10
1X
01/1
0X/0
/1
1X
1X/0
ΑΡΧΗ
01/1
ΟΚΑ0
Xαρακτηρισμός ενός STD
Πίνακας Μετάβασης Καταστάσεων/ Εξόδου
(State Transition Table – STT)
Τι θα προσπαθήσουμε
– Εξετάζουμε μια συγκεκριμένη κατηγορία δομών : αυτή των
μηχανών πεπερασμένων καταστάσεων.
– Σε κάθε μηχανή μπορούμε να αντιστοιχήσουμε ένα STD και ένα
STT.
– Θα δείξουμε ότι :
• Δοθέντος ενός ακολουθιακού κυκλώματος μπορούμε εύκολα
να πάρουμε ένα STT γι’ αυτό.
• Δοθέντος ενός STT μπορούμε να πάρουμε ένα ακολουθιακό
κύκλωμα που να τον υλοποιεί
– Αρα υπάρχει αντιστοιχία μεταξύ μηχανών πεπερασμένων
καταστάσεων και ακολουθιακών κυκλωμάτων.
– Προσοχή : η αντιστοιχία δεν είναι 1-1, ούτε επί.
– Θα περιγράψουμε τυπικούς τρόπους περιγραφής ακολουθιακών
κυκλωμάτων και μηχανών πεπερασμένων καταστάσεων σε
Verilog.
Ανάλυση Ακολουθιακών
Κυκλωμάτων
Μεθοδολογία
Βήμα Α1: Γράφουμε τις λογικές συναρτήσεις των εισόδων των
FFs.
(ισοδύναμα : προσδιορίζουμε τις συναρτήσεις
επόμενης κατάστασης & εξόδου F, G)
Βήμα Α2: Καταστρώνουμε τον πίνακα καταστάσεων.
Βήμα Α3: Σχεδιάζουμε το διάγραμμα καταστάσεων.
Χαρακτηριστικοί πίνακες (πίνακες λειτουργίας) FF
D Q(t)
0
0
1
1
D
SET
CLR
J
K
Q(t)
0
0
Q(t-1)
0
1
0
1
0
1
1
1
~Q(t-1)
J
K
Q
Q
SET
CLR
Q
Q
T
Q(t)
0
Q(t-1)
1
~Q(t-1)
S
R
Q(t)
0
0
Q(t-1)
0
1
0
1
0
1
1
1
?
DT
SET
CLR
S
R
SET
CLR
Q
Q
Q
Q
ΑΝΑΛΥΣΗ ΣΥΓΧΡΟΝΩΝ ΑΚΟΛΟΥΘΙΑΚΩΝ
ΚΥΚΛΩΜΑΤΩΝ
Σύγχρονα ακολουθιακά κυκλώματα χωρίς εξωτερικές
εισόδους και εξόδους
Παράδειγμα 1
Q
J
CLK
CLK
CLK
Vcc
Q'
K
Q
J
Vcc
Q'
K
(α )
Q0
J0
CLK
FF1
FF0
Vcc
K0
Q1
J1
Q'0
Vcc
(β)
K1
Q'1
Βήμα Α1: Γράφουμε τις λογικές συναρτήσεις των εισόδων των FFs.
J0 = Q΄1
Κ0 = 1
J1 = Q0
Κ1 = 1
Βήμα Α2: Καταστρώνουμε τον πίνακα καταστάσεων
ΠΑΡΟΥΣΑ
ΚΑΤΑΣΤΑΣΗ
Ε ΙΣ Ο Δ Ο Ι
ΕΠΟΜΕΝΗ
ΚΑΤΑΣΤΑΣΗ
Q1 Q0
J1 K1 J0 K0
Q1 Q0
0
0
1
1
0
1
0
1
Κ α τ α γ ρ ά φ ο ντ α ι Ο Λ Ο Ι ο ι
δ υ να τ ο ί σ υ νδ υ α σ μ ο ί
( δ υ να τ έ ς
κ α τα στά σεις)
0
1
0
1
1
1
1
1
1
1
0
0
1
1
1
1
Προκ ύπτουν α πό τ ι ς
συναρτήσεις εισόδου και τις
τιμές της πα ρούσα ς
κατάστασης
0
1
0
0
1
0
0
0
Προκ ύπτουν α πό τ ι ς
τιμές των εισόδων J, K και τις
τιμές της πα ρούσα ς
κ α τά στα σης Q κ α θενός FF
Βήμα Α3: Σχεδιάζουμε το διάγραμμα καταστάσεων
00
11
01
10
Παρατηρήσεις
• Oι ωρολογιακοί παλμοί δεν δείχνονται στον πίνακα και στο διάγραμμα
καταστάσεων. Εννοείται ότι από την παρούσα κατάσταση
μεταβαίνουμε στην επόμενη κατάσταση με την έλευση της ενεργού
ακμής πυροδότησης του CLK.
• Για την κατάστρωση του πίνακα βασιζόμαστε εκτός από την παρούσα
κατάσταση και τις τιμές των εισόδων, και στον πίνακα λειτουργίας
του FF. Με άλλα λόγια, οι πίνακες λειτουργίας των FFs είναι
απαραίτητοι για την ανάλυση ενός ακολουθιακού κυκλώματος.
Παράδειγμα 2
Βήμα Α1: Γράφουμε τις λογικές συναρτήσεις των εισόδων των FFs.
J0 = K0 = (Q1Q2)΄
J1 = Q0
K1 = Q0 + Q1Q2
J2 = Q0Q1
K2 = Q0Q1 + Q2Q1 = (Q0 + Q2)Q1
Βήμα Α2: Καταστρώνουμε τον πίνακα καταστάσεων
Π. Κ.
ΕΙΣΟΔΟΙ
Q2 Q1 Q0
0
0
0
0
0
1
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
1
0
1
E. Κ.
J2 K2 J1 K1 J0 K0
00
00
11
00
00
11
11
00
11
11
11
11
00
00
00
11
11
11
01
11
01
11
00
00
Q2 Q 1 Q0
0 0 1
0 1 0
0 1 1
1
1
1
0
0
0
0
1
0
0
Βήμα Α3: Σχεδιάζουμε το διάγραμμα καταστάσεων
111
000
110
001
101
010
011
100
mod-7
0
1
0
0
1
Σύγχρονα ακολουθιακά κυκλώματα με
εξωτερικές εισόδους
Παράδειγμα 3
Vcc
X
CLK
J1
Q1
CLK
K1
J0
Q0
CLK
Q'1
K0
Q'0
Βήμα Α1: Γράφουμε τις λογικές συναρτήσεις των εισόδων των FFs.
J1 = K1 = XQ0
J0 = K0 = 1
Βήμα Α2: Καταστρώνουμε τον πίνακα καταστάσεων
ΕΙΣΟΔΟΣ
&
ΠΑΡΟΥΣΑ ΚΑΤΑΣΤΑΣΗ
Χ
Q1 Q0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
ΕΠΟΜΕΝΗ
ΚΑΤΑΣΤΑΣΗ
ΕΙΣΟΔΟΙ
J 1K 1 J 0 K 0
0
1
0
1
0
1
0
1
1 1
1 1
0
1
0
0
1
0
1
1
1
1
1
1
1
1
0
1
0
0
1
0
1
1
1
1
1
1
1
1
Βήμα Α3: Σχεδιάζουμε το διάγραμμα καταστάσεων
0
00
0
1
1
01
11
1
1
0
10
0
Q1
Q0
1
0
0
1
0
1
1
0
1
0
1
0
1
0
1
0
Σύγχρονα ακολουθιακά κυκλώματα με
εξωτερικές εισόδους και εξόδους
Παράδειγμα 4
T1
CLK
Q1
CLK
T0
Q0
CLK
Q'1
Q'0
Y
X
Βήμα Α1: Γράφουμε τις λογικές συναρτήσεις των εισόδων των FFs.
T1 = Q΄0
Y = X ⊕ Q1 ⊕Q0
Τ0 = ΧQ1
Βήμα Α2: Καταστρώνουμε τον πίνακα καταστάσεων
ΕΙ Σ Ο Δ Ο Σ
&
ΠΑ Ρ ΟΥΣΑ Κ Α ΤΑ ΣΤΑ ΣΗ
Χ
0
0
0
0
1
1
1
1
Q1 Q0
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
ΕΠΟΜΕΝΗ
Κ Α ΤΑ ΣΤΑ ΣΗ
ΕΙ Σ Ο Δ Ο Ι
ΕΞΟΔΟΣ
T1 T0
Υ
Q1 Q0
1
0
1
0
1
0
1
0
0
1
1
0
1
0
0
1
1
0
0
1
1
0
0
1
1
1
0
0
0
0
1
1
1
0
0
1
0
1
1
0
0/0
0/0
Βήμα Α3: Σχεδιάζουμε το διάγραμμα καταστάσεων
(Μηχανή Mealy)
00
11
0/1
0/1
1/1
1/1
01
10
1/0
1/0
Παράδειγμα 5
D2
CLK
Q2
CLK
Q'2
D1
Q1
Y
CLK
Q'1
D0
Q0
CLK
Q'0
Βήμα Α1: Γράφουμε τις λογικές συναρτήσεις των εισόδων των FFs.
D0 = Q2 ΄
D1 = Q0
D2 = Q0 Q1 Q2΄
Υ = Q0 Q1 Q2΄
Βήμα Α2: Καταστρώνουμε τον πίνακα καταστάσεων
ΕΠΟΜΕΝΗ
Κ Α ΤΑ ΣΤΑ ΣΗ
ΠΑ Ρ ΟΥΣΑ Κ Α ΤΑ ΣΤΑ ΣΗ
ΕΙ Σ Ο Δ Ο Ι
ΕΞΟΔΟΣ
Q2 Q1 Q0
D2 D1 D0
Υ
Q2 Q1 Q0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
Βήμα Α3: Σχεδιάζουμε το διάγραμμα καταστάσεων (Μηχανή Moore)
101
0
000
001
010
0
0
0
100
011
111
0
1
0
CLK
Y
Άσκηση 1η: Να αναλυθούν τα κυκλώματα


Άσκηση 2η: Να αναλυθούν τα κυκλώματα



Άσκηση 3η: Να αναλυθεί το κύκλωμα

Επιπλέον παραδείγματα
VCC
5V
FF0
FF1
~1PR
1Q
1J
1J
1Q
1CLK
1CLK
1K
~1PR
1K
~1Q
~1Q
~1CLR
~1CLR
VCC
5V
VCC
5V
1ο βήμα...συναρτήσεις
FF0
FF1
~1PR
1J
1J
1Q
1Q
1CLK
1CLK
1K
~1PR
1K
~1Q
~1Q
~1CLR
~1CLR
VCC
5V
J0=Q1+Q0
J1=(Q0Q1)’
K0= Q0Q1
K1= Q0Q1
VCC
5V
FF0
FF1
~1PR
1Q
1J
1Q
1J
1CLK
1CLK
1K
~1PR
1K
~1Q
~1Q
1ο βήμα...συναρτήσεις
J0=Q1+Q0
K0= Q0Q1
J1=(Q0Q1)’ K1= Q0Q1
~1CLR
~1CLR
2ο βήμα...πίνακας μεταβάσεων
VCC
5V
ΠΡΟΗΓ.
ΕΙΣΟΔΟΙ
ΕΠΟΜ.
Q1 Q0 J1 K1 J0 K0 Q1 Q0
0
0
1
0
0
0
1
0
0
1
1
0
1
0
1
1
1
0
1
0
1
0
1
1
1
1
0
1
1
1
0
0
VCC
5V
FF0
1ο βήμα...συναρτήσεις
FF1
~1PR
1J
1Q
1Q
1CLK
1CLK
1K
J0=Q1+Q0
J1=(Q0Q1)’
~1PR
1J
1K
~1Q
K0= Q0Q1
K1= Q0Q1
~1Q
~1CLR
~1CLR
2ο βήμα...πίνακας μεταβάσεων
VCC
5V
ΠΡΟΗΓ.
Q1 Q0
3ο βήμα...διάγραμμα μεταβάσεων
00
11
01
10
ΕΙΣΟΔΟΙ
J1
K1
J0
ΕΠΟΜ.
K0 Q1
Q0
0
0
1
0
0
0
1
0
0
1
1
0
1
0
1
1
1
0
1
0
1
0
1
1
1
1
0
1
1
1
0
0
Ανάλυση με επιπλέον εξωτερική είσοδο
5V
~1PR
~1PR
1CLK
1CLK
Y
1K
1Q
1J
1Q
1J
1K
~1Q
~1Q
~1CLR
~1CLR
5V
5V
FF1
FF0
~1PR
~1PR
1CLK
1CLK
Y
1K
1Q
1J
1Q
1J
1K
~1Q
~1Q
~1CLR
~1CLR
5V
1ο βήμα...συναρτήσεις
J1=Q1’+Q0 K1= Y
J0=Q1
K0= Q1
5V
FF1
FF0
~1PR
~1PR
1CLK
1CLK
1K
1Q
1J
1Q
1J
Y
1ο βήμα...συναρτήσεις
J1=Q1’+Q0 K1= Y
J0=Q1
K0= Q1
1K
~1Q
~1Q
~1CLR
~1CLR
2ο βήμα...πίνακας μεταβάσεων
ΠΡΟΗΓ.
5V
Y
ΕΙΣΟΔΟΙ
ΕΠΟΜ.
Q1 Q0 J1 K1 J0 K0 Q1 Q0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
1
1
0
0
5V
FF1
FF0
~1PR
~1PR
1CLK
1CLK
1K
1Q
1J
1Q
1J
Y
1ο βήμα...συναρτήσεις
J1=Q1’+Q0 K1= Y
J0=Q1
K0= Q1
1K
~1Q
~1Q
~1CLR
~1CLR
2ο βήμα...πίνακας μεταβάσεων
ΠΡΟΗΓ.
5V
Y
3ο βήμα...διάγραμμα μεταβάσεων
00
0
0
01
0
11
10
0
ΕΙΣΟΔΟΙ
ΕΠΟΜ.
Q1 Q0 J1 K1 J0 K0 Q1 Q0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
1
1
0
0
5V
FF1
FF0
~1PR
~1PR
1CLK
1CLK
1K
1Q
1J
1Q
1J
Y
1ο βήμα...συναρτήσεις
J1=Q1’+Q0 K1= Y
J0=Q1
K0= Q1
1K
~1Q
~1Q
~1CLR
~1CLR
2ο βήμα...πίνακας μεταβάσεων
ΠΡΟΗΓ.
5V
Y
3ο βήμα...διάγραμμα μεταβάσεων
00
0, 1
0, 1
01
1
1
0
11
10
0
ΕΙΣΟΔΟΙ
ΕΠΟΜ.
Q1 Q0 J1 K1 J0 K0 Q1 Q0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
1
1
0
0
5V
FF1
FF0
~1PR
~1PR
1CLK
1CLK
1K
1Q
1J
1Q
1J
Y
1ο βήμα...συναρτήσεις
J1=Q1’+Q0 K1= Y
J0=Q1
K0= Q1
1K
~1Q
~1Q
~1CLR
~1CLR
2ο βήμα...πίνακας μεταβάσεων
ΠΡΟΗΓ.
5V
Y
3ο βήμα...διάγραμμα μεταβάσεων
00
X
X
01
1
1
0
11
10
0
Y=0, 10 →11 →10, 00 →10, 01 →11
Y=1, 00 →10 →01→11 →00
ΕΙΣΟΔΟΙ
ΕΠΟΜ.
Q1 Q0 J1 K1 J0 K0 Q1 Q0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
1
1
0
0
Σχεδίαση ενός ακολουθιακού κυκλώματος που
υλοποιεί μια μηχανή πεπερασμένων καταστάσεων
Μεθοδολογία 9 βημάτων, σχεδόν ανάστροφη της διαδικασίας ανάλυσης
1.
Το πιο σημαντικό βήμα. Ο σχεδιαστής κάνει τη μετάφραση μιας λεκτικής περιγραφής σε
μια τυποποιημένη περιγραφή, STD / STT. Μνημονικά ονόματα για τις καταστάσεις.
2.
(Προαιρετικά ?) Ελαχιστοποίηση του αριθμού καταστάσεων. (Εκτελείται σχεδόν πάντα με
υπολογιστές).
3.
Επιλογή μεταβλητών καταστάσεων και αντιστοίχηση καταστάσεων και τιμών μεταβλητών
( Tο βήμα που ξεχωρίζει τους έμπειρους από τους άπειρους σχεδιαστές).
Τα βήματα 4 έως και 9 σήμερα αποτελούν αυτοματοποιημένες διαδικασίες. Στο μάθημα θα τις
κάνουμε αναλυτικά απλά και μόνο για να δείτε ότι είναι τόσο τυπικές που μπορείτε και εσείς να τις
αυτοματοποιήσετε !!!
4.
Αντικατάσταση στον STT. Δημιουργείται ένας πίνακας μετάβασης / εξόδου για κάθε
τρέχουσα τιμή κατάστασης και εισόδου.
5.
Επιλογή τύπου latches και flip – flop.
6.
Πίνακες διέγερσης
7.
Εξισώσεις διέγερσης και εξόδου
8.
Απλοποίηση λογικών συναρτήσεων
9.
Δημιουργία λογικού κυκλώματος
Βήμα 1 : STT / STD
H διαδικασία αυτή μοιάζει αρκετά με τη συγγραφή
προγράμματος
•
–
–
–
–
–
–
–
–
Εχεις μια πρώτη ιδέα των εισόδων / εξόδων που απαιτούνται αλλά γνωρίζεις
ελάχιστα για το πως θα πετύχεις τις εξόδους με βάση τις εισόδους.
Μπορεί να σκαρφιστείς διάφορους τρόπους να λύσεις το πρόβλημα. Διαλέγεις
με βάση τη κοινή λογική ή εντελώς τυχαία.
Μπορεί να υπάρξουν ειδικές περιπτώσεις που δε φαίνονται με τη πρώτη
ανάγνωση της αρχικής περιγραφής.
Στο μυαλό σου θα πρέπει να έχεις όλες τις εναλλακτικές
Δεν υπάρχει αλγόριθμος για τη διαδικασία που ακολουθείς. Αρα δεν
υπάρχουν εγγυήσεις ότι θα το ολοκληρώσεις. Αλλά πρέπει να το κάνεις !
Το STT / STD που σχεδιάζεις θα κάνει όσα εσύ προέβλεψες και σχεδίασες.
Ούτε λιγότερα, ούτε περισσότερα
Τίποτα δε λειτουργεί με τη πρώτη φορά. Debug και επανασχεδίαση !!!
Δε χρειάζεται να αγχώνεστε ! Σίγουρα έχετε γράψει προγράμματα που
δούλεψαν, οπότε σίγουρα θα σχεδιάσετε και σωστά STT/STD.
Το παλιό καλό μας πρόβλημα :
–
–
–
Σχεδιάστε ένα σύγχρονο ακολουθιακό κύκλωμα με 2 εισόδους Α, Β και 1
έξοδο Z, η οποία παίρνει την τιμή 1 αν :
• Η Α είχε την ίδια τιμή σε κάθε έναν από τους δύο προηγούμενους
παλμούς ρολογιού ή
• Η Β είναι στο 1 από την τελευταία φορά που ήταν αληθής η πρώτη
συνθήκη
00/0
Ξέραμε ελάχιστα από STD
design κι όμως τα καταφέραμε !
0X/1
ΟΚ
11/1
Η πρώτη λύση που δώσαμε
/1
X
ΟΚ
0
Α0
μέσω ενός STD για ένα Mealy
/0
0X
FSM που λύνει το πρόβλημα.
Ερωτήματα :
ΑΡΧΗ
• Είναι το πιο απλό STD ?
1X
/0
• Mealy ή Moore, πότε και
Α1
1X/1
ΟΚ
γιατί ?
01/
Α1
00
11/1
/1
ΟΚΑ0
0X
1
10
11
1X/1
10/0
/0
00
01/1
/0
/1
0X/0
1X
1X/0
–
00
0X
ΟΚ00
Z=1
0X
Α0
Z=0
11
ΟΚΑ1
Z=1
0X
10
0X
0X
00
1X
ΟΚ11
Z=1
1X
01
01
Α1
Z=0
11
1X
1X
1X
START
Z=0
Είναι το πιο απλό STD ?
ΟΚΑ0
Z=1
10
Σημασία
Αρχική
Κατάσταση
Eίχα 0 στο Α
Είχα 1 στο Α
Είχα 00 στο Α
Είχα 11 στο Α
ΟΚ, μετά Α=0
ΟΚ, μετά Α=1
Τρέχουσα κατάσταση
S(t)
ΙΝΙΤ
A0
A1
ΟΚ00
ΟΚ11
ΟΚΑ0
ΟΚΑ1
00
A0
Είσοδοι (ΑΒ)
11
01
A0
A1
10
Z
A1
0
A1
A1
OK00 OK00
A0
A0
OK11 OK11
Α1
ΟΚ00 ΟΚ00 ΟΚΑ1
Α0 ΟΚΑ0 ΟΚ11 ΟΚ11
Α1
ΟΚ00 ΟΚ00 ΟΚΑ1
Α0 ΟΚΑ0 ΟΚ11 ΟΚ11
Επόμενη κατάσταση S(t+1)
0
0
1
1
1
1
Βήμα 2 : Ελαχιστοποίηση Καταστάσεων
•
•
•
•
Aν για το ίδιο κύκλωμα μπορεί να υπάρξουν STD / STT πίνακες με διαφορετικό αριθμό
καταστάσεων, αναζητούμε μια τυπική διαδικασία που θα μας πάει από ένα πίνακα σε έναν
άλλο, με μικρότερο αριθμό καταστάσεων.
Σήμερα η διαδικασία αυτή γίνεται αυτόματα και δεν χρειάζεται να εμπλακεί ο σχεδιαστής.
Την εξετάζουμε για μαθησιακούς καθαρά λόγους.
Η διαδικασία στηρίζεται στην ανίχνευση "ισοδύναμων" καταστάσεων.
Δύο καταστάσεις είναι ισοδύναμες όταν :
–
Παράγουν τις ίδιες εξόδους για όλες τους συνδυασμούς εισόδων και
–
Για κάθε συνδυασμό εισόδων οδηγούν είτε στην ίδια επόμενη κατάσταση είτε σε
ισοδύναμες καταστάσεις.
Σημασία
Αρχική
Κατάσταση
Eίχα 0 στο Α
Είχα 1 στο Α
Είχα 00 στο Α
Είχα 11 στο Α
ΟΚ, μετά Α=0
ΟΚ, μετά Α=1
Τρέχουσα κατάσταση
S(t)
ΙΝΙΤ
A0
A1
ΟΚ00
ΟΚ11
ΟΚΑ0
ΟΚΑ1
00
A0
Είσοδοι (ΑΒ)
01
11
A0
A1
10
Z
A1
0
OK00 OK00
A1
A1
A0
A0
OK11 OK11
ΟΚ00 ΟΚ00 ΟΚΑ1
Α1
Α0
ΟΚΑ0 ΟΚ11 ΟΚ11
ΟΚ00 ΟΚ00 ΟΚΑ1
Α1
Α0
ΟΚΑ0 ΟΚ11 ΟΚ11
Επόμενη κατάσταση S(t+1)
0
0
1
1
1
1
Ενας απλοποιημένος STT για το παράδειγμά μας
Σημασία
Αρχική
Κατάσταση
Eίχα 0 στο Α
Είχα 1 στο Α
Είχα 00 στο Α
Είχα 11 στο Α
ΟΚ, μετά Α=0
ΟΚ, μετά Α=1
•
Τρέχουσα κατάσταση
S(t)
ΙΝΙΤ
A0
A1
ΟΚ00
ΟΚ11
ΟΚΑ0
ΟΚΑ1
00
A0
Είσοδοι (ΑΒ)
01
11
A0
A1
10
Z
A1
0
OK00 OK00
A1
A1
A0
A0
OK11 OK11
ΟΚ00 ΟΚ00 ΟΚΑ1
Α1
Α0
ΟΚΑ0 ΟΚ11 ΟΚ11
ΟΚ00 ΟΚ00 ΟΚΑ1
Α1
Α0
ΟΚΑ0 ΟΚ11 ΟΚ11
Επόμενη κατάσταση S(t+1)
0
0
1
1
1
1
O πίνακας αυτός είναι "ελάχιστος", έχει δηλαδή τον μικρότερο δυνατό αριθμό
καταστάσεων. Υπάρχουν και άλλοι πίνακες για το ίδιο πρόβλημα με μεγαλύτερο αριθμό
καταστάσεων.
Είσοδοι (ΑΒ)
Z
Σημασία
Τρέχουσα κατάσταση S(t) 00
01
11
10
Αρχική Κατάσταση
ΙΝΙΤ
A0
A0
A1
A1
0
Eίχα 0 στο Α
A0
OK0 OK0
A1
A1
0
Είχα 1 στο Α
A1
A0
A0
OK1 OK1
0
Δύο ίδια, τελευταία
ΟΚ0
ΟΚ0 ΟΚ0 ΟΚ1
Α1
1
Α=0
Δύο ίδια, τελευταία
ΟΚ1
Α0
ΟΚ0 ΟΚ1 ΟΚ1
1
Α=1
Επόμενη κατάσταση S(t+1)
Ελαχιστοποίηση Καταστάσεων - Παράδειγμα 2
Ελαχιστοποίηση Καταστάσεων - Real world !
•
Η μείωση των εσωτερικών καταστάσεων μπορεί να οδηγήσει σε μείωση του
αριθμού των flip flops.
•
Μείωση ωστόσο του αριθμού των εσωτερικών καταστάσεων δεν οδηγεί
πάντα σε μείωση του αριθμού των flip flops. Για παράδειγμα μείωση από
12 σε 9 καταστάσεις, δεν οδηγεί σε αντίστοιχη μείωση των 4 (κατ’
ελάχιστο) flip flops που απαιτούνται και στις δύο περιπτώσεις.
•
Στη δεύτερη περίπτωση όμως αυξάνουν οι αχρησιμοποίητες καταστάσεις.
Όπως θα δούμε αυτές ισοδυναμούν με αδιάφορους όρους που μπορεί να
οδηγήσουν σε μείωση της συνδυαστικής λογικής.
•
Ωστόσο υπάρχουν περιπτώσεις που η αύξηση του αριθμού των
καταστάσεων μπορεί να απλοποιήσει τη σχεδίαση !!!
•
Αρα και μια αυτοματοποιημένη διαδικασία ελαχιστοποίησης δε βοηθά
πάντοτε !!!
•
Σημαντικότερες μειώσεις μπορεί να επιτευχθούν με το επόμενο βήμα, αυτό
της αντιστοίχισης καταστάσεων.
Βήμα 3 : Αντιστοίχιση Καταστάσεων
•
Δυαδικές μεταβλητές κατάστασης = log2 (αριθμός καταστάσεων)
•
Αντιστοίχιση καταστάσεων => σε κάθε κατάσταση αναθέτουμε συγκεκριμένο
συνδυασμό τιμών των δυαδικών μεταβλητών
•
Στο παράδειγμά μας υπάρχουν 5 καταστάσεις, άρα θα χρειαστούμε τουλάχιστον 3
flip flops (δυαδικές μεταβλητές κατάστασης).
•
Τα 3 flip flops μας δίνουν 8 καταστάσεις.
•
Αρα θα υπάρχουν 8 – 5 = 3 αχρησιμοποίητες καταστάσεις
•
Υπάρχουν [8! /(5! 3!)] x 5! = 6720 δυνατές συναρτήσεις αντιστοίχισης !!!
•
Κάθε μία πιθανά οδηγεί σε διαφορετικό κύκλωμα !!!
S(t)
ΙΝΙΤ
A0
A1
ΟΚ0
ΟΚ1
00
A0
OK0
A0
ΟΚ0
Α0
01
A0
OK0
A0
ΟΚ0
ΟΚ0
11
A1
A1
OK1
ΟΚ1
ΟΚ1
10
A1
A1
OK1
Α1
ΟΚ1
Z
0
0
0
1
1
Πιθανές Αντιστοιχίσεις
•
Ο πιο απλός τρόπος είναι να χρησιμοποιήσουμε στην αντιστοίχιση τις πρώτες 5
δυαδικές αναπαραστάσεις των δυαδικών μας μεταβλητών
•
ΙΝΙΤ -> 000, Α0->001, Α1->010, ΟΚ0->011, ΟΚ1->100
•
Ο απλούστερος τρόπος δεν εγγυάται τις απλούστερες εξισώσεις διέγερσης, εξόδου
και συνεπώς και το απλούστερο κύκλωμα.
•
Η επιλογή της αντιστοίχισης έχει μεγάλο αντίκτυπο στο τελικό κύκλωμα και
αλληλεπιδρά με άλλους παράγοντες, όπως το τι flip flop θα χρησιμοποιηθούν, τι
λογικές συναρτήσεις θα χρησιμοποιήσουμε (SOP, POS…)
Ψάχνοντας τη καλύτερη αντιστοίχιση
•
Πως βρίσκουμε τη καλύτερη αντιστοίχιση ?
•
Δοκίμασε όλες !!! Πρακτικά αδύνατο !!!
•
Εμπειρία
•
Απλοί κανόνες :
•
Για την αρχική κατάσταση διάλεξε την 000…0 ή την 111…1
•
Ελαχιστοποίησε τον αριθμό των στοιχείων που αλλάζουν
•
Μεγιστοποίησε τον αριθμό των στοιχείων που δεν αλλάζουν σε μια ομάδα
καταστάσεων.
•
Εκμεταλλεύσου τυχόν συμμετρίες. Αν δύο καταστάσεις ή δύο ομάδες
καταστάσεων σημαίνουν περίπου το ίδιο πράγμα και έχεις αναθέσει τιμές για
τη μία ανάθεσε αντίστοιχες τιμές για την άλλη (π.χ. άλλαξε μόνο ένα bit).
•
Εκμεταλλεύσου τις αχρησιμοποίητες καταστάσεις.
•
Χώρισε τα δ.ψ. των καταστάσεων σε ομάδες με κάποια σημασία σε σχέση με
τις εισόδους ή τις εξόδους
•
Μήπως η χρήση περισσότερων μεταβλητών οδηγεί σε απλούστευση ?
Οι υπόλοιπες πιο έξυπνες (?) αντιστοιχίσεις
•
•
•
Αναλυμένη
•
To πρώτο δ.ψ. μου καθορίζει την ΙΝΙΤ.
•
Τα υπόλοιπα έτυχε να φαίνονται σα δυαδική μέτρηση. Το Q3 δείχνει τη
προηγούμενη τιμή του Α ! Το Q2 δείχνει πότε η έξοδος πάει στο 1 !
Οne-hot assignment
•
1 δυαδικό ψηφίο ανά κατάσταση,
•
Μόνο ένα flip flop ανά κάθε χρονική στιγμή στο 1.
•
Απλές συναρτήσεις διέγερσης και συνδυαστικές εξισώσεις
Almost One-Hot Assignment
•
No-hot συνδυασμός για την αρχική κατάσταση.
Αχρησιμοποίητες Καταστάσεις
•
Τι κάνουμε τις αχρησιμοποίητες καταστάσεις ?
•
Δύο λογικές προσεγγίσεις, ανάλογα με τις απαιτήσεις της εφαρμογής
•
Προσέγγιση 1 : Ελάχιστος κίνδυνος
•
•
Η μηχανή καταστάσεων λόγω κακής σχεδίασης, απρόσμενης εισόδου ή
αστοχίας του υλικού, μπορεί να μπει σε κάποια αχρησιμοποίητη κατάσταση
•
Ολες οι αχρησιμοποίητες καταστάσεις θα πρέπει να οδηγούν σε κάποια
"χρησιμοποιούμενη" κατάσταση.
Προσέγγιση 2 : Ελάχιστο κόστος
•
Η μηχανή δε θα μπεί ποτέ σε "παράνομη" κατάσταση
•
Στους πίνακες μετάβασης και διέγερσης μπορούν να χρησιμοποιηθούν ως
αδιάφοροι όροι
•
Απλοποίηση της λογικής διέγερσης
•
Περίεργη έως καταστροφική συμπεριφορά αν τελικά στη πράξη το κύκλωμά
μας μπει σε κάποια αχρησιμοποίητη κατάσταση.
Πίνακες Διέγερσης
•
Μπορεί να θεωρηθεί ως ο συμπληρωματικός του χαρακτηριστικού πίνακα
λειτουργίας ενός flip flop.
•
O χαρακτηριστικός πίνακας μας δείχνει για κάθε πιθανή τρέχουσα κατάσταση και
τιμή εισόδου την επόμενη κατάσταση του flip flop.
•
O πίνακας διέγερσης, μας δίνει τις απαιτούμενες τιμές εισόδου του flip flop ώστε
να μεταβούμε από μια τρέχουσα κατάσταση, σε μια επιθυμητή επόμενη
κατάσταση.
Βήματα 4 - 9 : η χαμαλοδουλειά
Στο πρόβλημά μας χρησιμοποιούμε τον ελαχιστοποιημένο πίνακας καταστάσεων :
S(t)
ΙΝΙΤ
A0
A1
ΟΚ0
ΟΚ1
00
A0
OK0
A0
ΟΚ0
Α0
01
A0
OK0
A0
ΟΚ0
ΟΚ0
11
A1
A1
OK1
ΟΚ1
ΟΚ1
10
A1
A1
OK1
Α1
ΟΚ1
Z
0
0
0
1
1
και τη αναλυμένη αντιστοίχιση του πίνακα. Μας προκύπτει ο πίνακας
επιθυμητών μεταβάσεων :
Από πίνακα μετάβασης σε πίνακα διέγερσης
•
•
Είσοδοι (ΑΒ)
Z
10
11
01
Q1(t) Q2(t) Q3(t) 00
100 100 101 101 0
000
110 110 101 101 0
100
100 100 111 111 0
101
110 110 111 101 1
110
100 110 111 111 1
111
Q1(t+1) Q2(t+1) Q3(t+1)
Χρησιμοποιώντας το πίνακα διέγερσης του επιθυμητού flip flop παίρνουμε το
πίνακα διέγερσης και εξόδου
Είσοδοι (ΑΒ)
Q1(t) Q2(t) Q3(t) 00
01
11
10
Z
000
100 100 101 101 0
100
110 110 101 101 0
101
100 100 111 111 0
110
110 110 111 101 1
111
100 110 111 111 1
D1(t+1) D2(t+1) D3(t+1)
O πίνακας διέγερσης είναι πανομοιότυπος με το πίνακα μετάβασης όταν
χρησιμοποιούμε DFF !, λόγω της χαρακτηριστική εξίσωσης του DFF Q(t+1) =
D(t+1)
Για υλοποίηση με JK FF
Είσοδοι ΑΒ
Q1(t) Q2(t) Q3(t)
00
01
11
10
000
1X, 0X, 0X 1X, 0X, 0X 1X, 0X, 1X 1X, 0X, 1X
100
X0, 1X, 0X X0, 1X, 0X X0, 0X, 1X X0, 0X, 1X
101
X0, 0X, X1 X0, 0X, X1 X0, 1X, X0 X0, 1X, X0
110
X0, X0, 0X X0, X0, 0X X0, X0, 1X X0, X1, 1X
111
X0, X1, X1 X0, X0, X1 X0, X0, X0 X0, X0, X0
J1(t+1)K1(t+1), J2(t+1)K2(t+1), J3(t+1)K3(t+1)
Z
0
0
0
1
1
Bήμα 8. Απλοποίηση των συναρτήσεων επόμενης εισόδου.
•
Είσοδοι (ΑΒ)
Q1(t) Q2(t) Q3(t) 00
01
11
10
Z
000
100 100 101 101 0
100
110 110 101 101 0
101
100 100 111 111 0
110
110 110 111 101 1
111
100 110 111 111 1
D1(t+1) D2(t+1) D3(t+1)
Ο παραπάνω πίνακας διέγερσης - εξόδου μου καθορίζει τις λογικές
ΣΥΝΔΥΑΣΤΙΚΕΣ συναρτήσεις D1(t+1) D2(t+1) D3(t+1) των 5 δυαδικών
μεταβλητών (Q1(t), Q2(t), Q3(t), A, B) και τη συνάρτηση Ζ των 3 δυαδικών
μεταβλητών (Q1(t), Q2(t), Q3(t)). Θυμηθείτε Moore vs Mealy !!!
•
Θα φτιάξουμε για κάθε μία από αυτές τον αντίστοιχο χάρτη Karnaugh για να τις
απλοποιήσουμε
•
Προσοχή : Ο πίνακας διέγερσης δεν είναι ένας πλήρης πίνακας αληθείας. Δεν
υπάρχει όλη η πληροφορία για τις αχρησιμοποίητες καταστάσεις 001, 010 και 011.
•
Επιλογή λοιπόν στρατηγικής : Ελάχιστου κινδύνου / ελάχιστου κόστους
•
Ας επιλέξουμε αυτή του ελάχιστου κινδύνου (επόμενη κατάσταση 000) και
συνεπώς ας καταλήξουμε στα
Ελάχιστος κίνδυνος :
Πίνακες αληθείας των συνδυαστικών συναρτήσεων
Q1(t) Q2(t) Q3(t) 00
000
1
001
0
011
0
010
0
110
1
111
1
101
1
100
1
Q1(t) Q2(t) Q3(t) 00
000
0
001
0
011
0
010
0
110
0
111
0
101
0
100
0
01 11
1
1
0
0
0
0
0
0
1
1
1
1
1
1
1
1
D1(t+1)
01 11
0
1
0
0
0
0
0
0
0
1
0
1
0
1
0
1
D3(t+1)
10
1
0
0
0
1
1
1
1
10
1
0
0
0
1
1
1
1
Q1(t) Q2(t) Q3(t) 00
000
0
001
0
011
0
010
0
110
1
111
0
101
0
100
1
01 11
0
0
0
0
0
0
0
0
1
1
1
1
0
1
1
0
D2(t+1)
Q1(t) Q2(t) Q3(t)
000
001
011
010
110
111
101
100
Z
0
0
0
0
1
1
0
0
10
0
0
0
0
0
1
1
0
9.Απλοποίηση των συνδυαστικών συναρτήσεων & υλοποίηση
•
D1(t+1) = ~Q2(t) & ~Q3(t) | Q1(t)
•
D2(t+1) = Q1(t) & ( (Q3(t) ~^ A) |
(Q2(t) & B))
•
D3(t+1) = A & (Q1(t) | (~Q2(t) &
~Q3(t))
•
Z= Q1(t) & Q2(t)
D
Q
Q1
CLK
CLR
Q
Z
B
Q
D
Q2
A
CLK
CLR
D
Q
Q
CLK
CLR
~Reset
Clk
Q
Q3
Ελάχιστο κόστος:
Πίνακες αληθείας των συνδυαστικών συναρτήσεων
Q1(t) Q2(t) Q3(t) 00
1
000
X
001
X
011
X
010
1
110
1
111
1
101
1
100
01 11
1
1
X X
X X
X X
1
1
1
1
1
1
1
1
D1(t+1)
10
1
X
X
X
1
1
1
1
Q1(t) Q2(t) Q3(t) 00
000
0
001
X
011
X
010
X
110
0
111
0
101
0
100
0
01 11
0
1
X X
X X
X X
0
1
0
1
0
1
0
1
D3(t+1)
10
1
X
X
X
1
1
1
1
Q1(t) Q2(t) Q3(t) 00
0
000
001
X
X
011
X
010
1
110
0
111
101
0
1
100
01 11
0
0
X X
X X
X X
1
1
1
1
0
1
1
0
D2(t+1)
Q1(t) Q2(t) Q3(t)
000
001
011
010
110
111
101
100
Z
0
X
X
X
1
1
0
0
10
0
X
X
X
0
1
1
0
Απλοποίηση των συνδυαστικών συναρτήσεων & υλοποίηση
•
D1(t+1) = 1
•
D2(t+1) = Q1(t) & ~Q3(t) & ~Α |
Q3(t) & Α | Q2(t) & Β
•
D3(t+1) = Α
•
Z= Q2(t)
Σύνοψη και real world
•
Ξεκινώντας από μία λεκτική περιγραφή φτιάχνουμε ένα STD / STT,
προσπαθούμε να μειώσουμε τις καταστάσεις με την ελπίδα να μειώσουμε τα
flip flops που απαιτούνται ή να δημιουργηθούν περισσότερες αχρησιμοποίητες
καταστάσεις. Αναθέτουμε κωδικοποιήσεις στις ελαχιστοποιημένες
καταστάσεις (τυχαία ή με κανόνες ή με την εμπειρία μας). Αντικαθιστούμε τις
κωδικοποιήσεις στον STT και παίρνουμε το πίνακα μεταβάσεων. Με τη
βοήθεια του πίνακα διέγερσης κάθε flip flop παίρνουμε το πίνακα διέγερσης και
εξόδου του στοχευόμενου κυκλώματος. Η απλοποίηση των συναρτήσεων μπορεί
να γίνει με στρατηγική ελάχιστου κινδύνου ή ελάχιστου κόστους. Υλοποιούμε τις
απλοποιημένες συναρτήσεις και παίρνουμε το κύκλωμα που υλοποιεί τη μηχανή
του STD / STT.
•
Για υλοποιήσεις σε προγραμματιζόμενα ολοκληρωμένα προηγούμενης γενιάς, τα
βήματα που χρειάζεται να κάνει ο σχεδιαστής είναι τα σημειούμενα με πράσινο.
•
Όπως θα δούμε παρακάτω, χρησιμοποιώντας τελευταίας γενιάς εργαλεία και
περιγραφές σε γλώσσα περιγραφής υλικού, ο ρόλος του σχεδιαστή μπορεί να
περιοριστεί στα όσα σημειώνονται με πορτοκαλί.
•
H αυτοματοποίηση όσων αναφέρονται με πορτοκαλί αποτελούν αντικείμενο
συνεχιζόμενης έρευνας στον τομέα του high level synthesis.
Παράδειγμα 1. Σχεδίαση με δεδομένο STD
•
Σχεδιάστε μια μηχανή που υλοποιεί το ακόλουθο STD
•
Oπως προκύπτει από το STD υπάρχουν 4 (μη ελαχιστοποιήσιμες) καταστάσεις,
άρα 2 FFs, έστω Α και Β. Κατασκευάζω τον STT.
Παράδειγμα 2-2.
•
Κατασκευάζουμε τον πίνακα διέγερσης του κυκλώματος στοχεύοντας υλοποίηση
με JK FFs και συνεπώς λαμβάνοντας υπ’ όψιν μας και το πίνακα διέγερσης ενός JK
FF.
Παράδειγμα 2-3.
•
To στοχευόμενο συνεπώς σύστημα θα έχει τη μορφή :
•
Απομένει να απλοποιήσουμε τις συναρτήσεις για τα JA, KA, JB και ΚΒ
Παράδειγμα 2-4.
•
Η υλοποίηση αυτών των συναρτήσεων μας δίνει το παρακάτω κύκλωμα :
000
001
111
010
110
011
101
100
ΠΡΟΗΓ.
000
001
111
010
110
011
101
100
ΕΠΟΜ.
ΕΙΣΟΔΟΙ
Q2
Q1
Q0
Q2
Q1 Q0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
0
1
1
1
0
0
1
0
0
1
0
1
1
0
1
0
0
0
1
1
0
0
0
0
1
1
1
0
0
0
J2
K2
J1
K1
J0
K0
ΠΡΟΗΓ.
000
001
111
010
110
011
101
100
ΕΠΟΜ.
Q2
Q1
Q0
Q2
0
0
0
0
0
0
0
1
0
0
1
0
0
1
1
ΕΙΣΟΔΟΙ
Q1 Q0
J2
K2
J1
K1
J0
K0
1
0
X
0
X
1
X
1
0
0
X
1
X
X
1
0
1
1
0
X
X
0
1
X
1
1
0
0
1
X
X
1
X
1
0
0
1
0
1
X
0
0
X
1
X
1
0
1
0
0
0
X
1
0
X
X
1
1
1
0
0
0
0
X
1
X
1
0
X
1
1
1
0
0
0
X
1
X
1
X
1
ΠΡΟΗΓ.
000
001
111
010
110
011
101
Q1Q0
Q2
J2
00 01
0 0 0
1 X X
Q1Q0
100
Q1Q0
11 10
1 0
X
Q2
X
K1
Q2
00 01 11 10
0 X X 1 0
1 X X 1 1
Q2
Q1
Q0
Q2
0
0
0
0
0
0
0
1
0
0
1
0
0
1
1
ΕΙΣΟΔΟΙ
J2
K2
J1
K1
J0
K0
1
0
X
0
X
1
X
1
0
0
X
1
X
X
1
0
1
1
0
X
X
0
1
X
1
1
0
0
1
X
X
1
X
1
0
0
1
0
1
X
0
0
X
1
X
1
0
1
0
0
0
X
1
0
X
X
1
1
1
0
0
0
0
X
1
X
1
0
X
1
1
1
0
0
0
X
1
X
1
X
1
00 01
0 X X
1 0 1
00 01
0 1 X
1 1 X
11 10
X X
1
1
J0
11 10
X 1
X
Q1 Q0
Q1Q0
K2
Q1Q0
Q2
ΕΠΟΜ.
0
Q2
00 01
0 0 1
1 0 0
J1
11 10
X X
X
X
ΠΡΟΗΓ.
000
001
111
010
110
011
101
Q1Q0
Q2
J2
00 01
0 0 0
1 X X
Q1Q0
100
Q1Q0
11 10
1 0
X
Q2
X
K1
Q2
00 01 11 10
0 X X 1 0
1 X X 1 1
Q2
Q1
Q0
Q2
0
0
0
0
0
0
0
1
0
0
1
0
0
1
1
ΕΙΣΟΔΟΙ
J2
K2
J1
K1
J0
K0
1
0
X
0
X
1
X
1
0
0
X
1
X
X
1
0
1
1
0
X
X
0
1
X
1
1
0
0
1
X
X
1
X
1
0
0
1
0
1
X
0
0
X
1
X
1
0
1
0
0
0
X
1
0
X
X
1
1
1
0
0
0
0
X
1
X
1
0
X
1
1
1
0
0
0
X
1
X
1
X
1
00 01
0 X X
1 0 1
00 01
0 1 X
1 1 X
11 10
X X
1
Q1 Q0
Q1Q0
K2
Q1Q0
Q2
ΕΠΟΜ.
1
Q2
J1
00 01
0 0 1
1 0 0
11 10
X X
X
X
J2=Q1Q0
K2=Q0+Q1
11 10
X 1
J1=Q2’Q0
K1=Q2+Q0
X
J0=Q2’+Q1’
=(Q2Q1)’
K0=1
J0
0
5V
FF2
FF1
~1PR
~1PR
~1PR
1J
J2
1Q
Q2
1Q
Q1
1J
J1
Q2’
1K
K1
~1Q
~1Q
Q1’
1Q
Q0
1K
K0
~1Q
Q0’
~1CLR
~1CLR
~1CLR
1J
J0
1CLK
1CLK
1CLK
1K
K2
FF0
5V
J2=Q1Q0
K2=Q0+Q1
J1=Q2’Q0
K1=Q2+Q0
J0=Q2’+Q1’
=(Q2Q1)’
K0=1
Παράδειγμα 3. Σχεδίαση με RS FF και δεδομένο STT
•
Δεδομένου ενός STT και με δεδομένες τις κωδικοποιήσεις καταστάσεων, το μόνο που
χρειάζεται να κάνουμε είναι να λάβουμε υπ’ όψιν μας το πίνακα διέγερσης του RS FF
•
Προσοχή ότι στον STT υπάρχουν επιπλέον αχρησιμοποίητες καταστάσεις
Παράδειγμα 3 - 2
•
Ακολουθεί η απλοποίηση συναρτήσεων. Ο μεγάλος αριθμός αδιάφορων όρων διευκολύνει
αρκετά την εκτενή απλοποίηση.
Παράδειγμα 3 - 3
•
Και φυσικά η υλοποίηση του κυκλώματος :
Παράδειγμα 4 : Πιο δύσκολη η λεκτική περιγραφή !!!
•
Σχεδιάστε ένα σύγχρονο ακολουθιακό κύκλωμα με δύο εισόδους Χ και Y και μία έξοδο Ζ. Η
έξοδος θα πρέπει να είναι στο 1 αν ο αριθμός των 1 στις Χ και Υ από την αρχή του χρόνου
είναι πολλαπλάσιο του 4. Σε κάθε άλλη περίπτωση η έξοδος είναι 0.
•
Κωδικοποίηση κατά Gray !
Παράδειγμα 4 -2
•
Απλοποίηση με χάρτες Karnaugh
Παράδειγμα 5 : String Recognizer !!!
•
Σχεδιάστε ένα σύγχρονο ακολουθιακό κύκλωμα που ανιχνεύει μια ακολουθία από τρία ή
περισσότερα 1 στη σειριακή είσοδό του.
Παράδειγμα 5 -2
•
Υλοποίηση :
ΜΕΡΟΣ ΙII
ΕΦΑΡΜΟΓΕΣ ΤΩΝ
ΑΚΟΛΟΥΘΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ –
ΑΚΟΛΟΥΘΙΑΚΑ MSI
Κλυδωνισμός διακοπτών (switch bouncing)
• Πολύ συνηθισμένη εφαρμογή των απλών δισταθών κυκλωμάτων και των latches
• Aς υποθέσουμε το ακόλουθο σχηματικό για ένα μονοπολικό διακόπτη μιας επαφής
• Η pull-up αντίσταση έχει σημαντικά μεγάλη τιμή.
• Όταν ο διακόπτης δεν είναι πατημένος η γραμμή SW_L βρίσκεται σε ψηλό
δυναμικό και η έξοδος στο 0
• Όταν πατηθεί ο διακόπτης η SW_L αποφορτίζεται μέσω του μονοπατιού χαμηλής
αντίστασης.
• Πρόβλημα : Όταν πατηθεί ο διακόπτης δε μένει σταθερά σε αυτή τη θέση αλλά
αναπηδά (κλυδωνίζεται) μέχρι να σταθεροποιηθεί τελικά.
Κλυδωνισμός διακοπτών (switch bouncing) - 2
• Για κάθε πάτημα του διακόπτη
υπάρχουν αρκετές μεταβάσεις
• Η περίοδος του κλυδωνισμού
είναι 10 – 20 ms.
• O κλυδωνισμός μπορεί να
είναι ανεπιθύμητος (π.χ.
ψηφιακά χρονόμετρα).
• Αρα απαιτείται κάποιο
κύκλωμα για τον
αποκλυδωνισμό
• Το κύκλωμα αυτό πρέπει να
θυμάται ότι ο διακόπτης
έκλεισε έστω και στιγμιαία.
• Συνεπώς ψάχνουμε ένα
ακολουθιακό κύκλωμα.
Αποκλυδωνισμός διακοπτών (debouncing)
• Oταν ο διακόπτης είναι στο 1
έχουμε την κάτω έξοδο στο 1
και 0 στο OUT.
• Γύρισμα του διακόπτη στο 2
θα δώσει 0 στην είσοδο της
πάνω ΝΑΝD με αποτέλεσμα η
έξοδος να πάει στο 1 και η
εφαρμογή δύο 1 στην κάτω
NAND να "κλειδώσει" αυτή τη
κατάσταση στο μανδαλωτή.
• Η έξοδος ΟUT θα πάει στο 1
ανεξάρτητα από τις
αναπηδήσεις του διακόπτη στη
θέση 2.
• Η έξοδος μπορεί να γίνει πάλι
0 μόνο αν ο διακόπτης
επιστρέψει στο 1.
Καταχωρητές
• Καταχωρητής είναι κάθε συλλογή δύο ή περισσοτέρων D στοιχείων με κοινό σήμα
ρολογιού.
• Χρησιμοποιούνται κατά κόρο στα σημερινά ψηφιακά συστήματα για την
αποθήκευση συλλογών δυαδικών ψηφίων που συνδέονται μεταξύ τους, όπως για
παράδειγμα ενός byte δεδομένων.
• Ενας καταχωρητής n-δυαδικών ψηφίων έχει n DFFs.
• Πέρα από τη καταχώρηση των ψηφίων στα FFs, ένας καταχωρητής μπορεί να
περιλαμβάνει έναν αριθμό από συνδυαστικές πύλες που υλοποιούν κάποια
επεξεργασία των δεδομένων.
Παραδείγματα ολοκληρωμένων καταχωρητών
• Το 74175 είναι ένας καταχωρητής 4 δυαδικών
ψηφίων.
• Υπάρχει μια κοινή είσοδος ρολογιού και μια
κοινή είσοδος ασύγχρονου καθαρισμού.
• Το κύκλωμα παρέχει για κάθε flip flop τόσο το
Q όσο και το ~Q.
• To 74174 είναι ένας εντελώς αντίστοιχης δομής
καταχωρητής 6 δυαδικών ψηφίων στον οποίο
όμως δε παρέχονται τα ~Qs.
Καταχωρητές με επίτρεψη εξόδου
• Ο καταχωρητής ενεργοποιείται με την
ανοδική ακμή του ρολογιού.
• Όταν η κοινή γραμμή ΟΕ_L είναι στο λογικό
1 τότε όλοι οι buffers τριών καταστάσεων
οδηγούνται στην κατάσταση υψηλής
εμπέδησης.
Κι άλλα ολοκληρωμένα κυκλώματα
• 74373 : Αντίστοιχο του 74374 μόνο που αντί για D FF το ολοκληρωμένο διαθέτει 8
D latches
• Oι έξοδοί του ακολουθούν τις αντίστοιχες εισόδους καθ’ όλη τη διάρκεια που το C
είναι ενεργό.
• 74273 : Αντίστοιχο του 74175, δηλαδή διαθέτει ασύγχρονη είσοδο καθαρισμού,
αλλά όχι είσοδο τριών καταστάσεων της εξόδου. Επιπλέον, είναι καταχωρητής των
8 δυαδικών ψηφίων.
Κι άλλο ένα !
• 74377 : Διαθέτει είσοδο ελέγχου της φόρτωσης.
• Όταν ΕΝ_L είναι στο 1, τότε στην είσοδο D κάθε flip flop περνάει η προηγούμενη
έξοδός του. Συνεπώς απαγορεύουμε στον καταχωρητή να αλλάξει κατάσταση.
• Αντίθετα όταν ΕΝ_L είναι στο 0, η φόρτωση γίνεται κανονικά από τις γραμμές
δεδομένων με κάθε ανοδική ακμή το ρολογιού.
Προβλήματα ρολογιού : πρώτες σκέψεις
Καταχωρητές ολίσθησης (shift registers)
• Στη περίπτωση σειριακής εξόδου, το δεδομένο εισόδου εμφανίζεται στη σειριακή
έξοδο ν παλμούς ρολογιού αργότερα.
• Στην περίπτωση της παράλληλης εξόδου, μπορούμε να μιλάμε για ένα κύκλωμα που
πραγματοποιεί serial 2 parallel conversion.
Parallel 2 serial shift register
• Μπορούμε να μιλάμε για ένα κύκλωμα που πραγματοποιεί parallel 2 serial
conversion.
• Mπορούμε να προσθέσουμε και παράλληλη έξοδο, οπότε προκύπτει ένα κύκλωμα
ικανό να καλύψει όλες τις εφαρμογές των καταχωρητών ολίσθησης.
ΜSI Shift Registers
74194 : Καταχωρητής ολίσθησης γενικού σκοπού
74299 : Καταχωρητής ολίσθησης γενικού σκοπού 8 δυαδικών ψηφίων
Σειριακή μετάδοση
Σειριακή πρόσθεση (Θεός φυλάξει)
Μετρητές
• Υπάρχουν δύο βασικά είδη μετρητών :
οι σύγχρονοι και οι ριπής (κυμάτωσης).
• Στους σύγχρονους όλα τα FFs
οδηγούνται από το ίδιο σήμα χρονισμού.
• Στους ριπής αντίθετα η αλλαγή στην
έξοδο ενός FF προκαλεί την αλλαγή του
επόμενου που με τη σειρά του προκαλεί
αλλαγή στο μεθεπόμενο κ.ο.κ.
Μετρητές Κυμάτωσης : η βασική ιδέα
• Πρόβλημα οι ενδιάμεσες τιμές μέχρι την
αποκατάσταση της τελικής.
Μετρητές Κυμάτωσης για ΒCD
Διαδοχική Σύνδεση Μετρητών
Μειονεκτήματα Μετρητών Ριπής
Σύγχρονοι Μετρητές : Βασικές αρχές
• Η πολικότητα της ακμής διέγερσης (θετική ή αρνητική ακμοπυροδότηση) σε αυτή
τη περίπτωση δε παίζει ιδιαίτερο ρόλο. Στους μετρητές ριπής όμως καθορίζει τη
φορά της μέτρησης !!!
• Εκτός από είσοδο επίτρεψης, μπορεί να έχουμε δυνατότητες για παράλληλη
φόρτωση ή / και μέτρηση προς τα πάνω ή προς τα κάτω.
Μέτρηση προς τα πάνω ή προς τα κάτω
Παράλληλη φόρτωση
Παράλληλη φόρτωση - 2
Ο τετράμπιτος μετρητής μπορεί να χρησιμοποιηθεί ως βάση για τη δημιουργία
οποιουδήποτε μετρητή. Για παράδειγμα, ο μετρητής των 8 bits προκύπτει αν
συνδέσουμε το κρατούμενο εξόδου του μετρητή χαμηλότερης σημαντικότητας
στην είσοδο μέτρησης του μετρητή υψηλότερης σημαντικότητας.
1
4 bits
4 bits
...
4 bits
Δημιουργία μετρητών modulo – m από σύγχρονους δυαδικούς μετρητές
Παράδειγμα : Σύγχρονος ΒCD counter
Counters που υπερπηδάνε καταστάσεις
Counters που υπερπηδάνε καταστάσεις - 2
• Στη περίπτωση αυτή ήμασταν τυχεροί μιας και
ο σχεδιασμός μας είναι αυτοδιορθούμενος.
• Αλλιώς θα πρέπει να εφαρμόσουμε στρατηγική
ελάχιστου κινδύνου κατά την απλοποίηση των
συναρτήσεων.
Μετρητές Δακτυλίου
Μετρητές Δακτυλίου - 2
Μετρητές Johnson
διπλασιάζεται
• Για την αποκωδικοποίηση
χρειάζονται μόνο πύλες 2
εισόδων!
• Μειονέκτημα: Αν μπει σε κάποια
από τις αχρησιμοποίητες
καταστάσεις δεν μπορεί να βγει.
• Μπορεί ωστόσο να τροποποιηθεί
το κύκλωμα εύκολα ώστε να
πάρουμε ένα αυτοδιορθούμενο.
ΜSI Μετρητές : 74163
ΜSI Μετρητές : 74163 -2
ΜSI Μετρητές : 74163 –3 – Διαδοχική σύνδεση
ΜSI Μετρητές : Αλλοι μετρητές
• 74163 : ο πιο δημοφιλής 4-bit μετρητής αλλά και πλήρως σύγχρονος
• 74161 : Ακριβώς ίδιος με τον 74163, ίδια διάταξη ακροδεκτών αλλά η γραμμή
καθαρισμού είναι ασύγχρονη
• 74160 και 74162 : Δεκαδικοί μετρητές. Η ακολουθία στην έξοδό τους δηλαδή
περνάει από τις καταστάσεις 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, …
• Προσέξτε ότι τα πλέον σημαντικά bits αυτών των μετρητών παρότι έχουν
συχνότητες ίσες με το 1/5 και το 1/10 της αρχικής, δεν έχουν 50 – 50 κύκλο. Με άλλα
λόγια οι έξοδοι αυτοί δε βρίσκονται το μισό του χρόνου τους στο 1 και το άλλο μισό
στο 0
• Το πιο σημαντικό bit βρίσκεται μόλις 2/10 στο 1 και 8/10 στο 0, ενώ το αμέσως
λιγότερης σημαντικότητας δυαδικό ψηφίο μόλις 4/10 στο 1 και 6/10 στο 0.
• Το πρόβλημα μπορεί να λυθεί φτιάχνοντας μετρητές με ακολουθία 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 3, 4, … (excess-3 BCD counters) από 74163 ολοκληρωμένα.
• 74169 : Ιδιος με τον 163, αλλά up/down !
Προβλήματα Ρολογιού : Μια πιο προσεκτική ματιά
• Ιδεατά κάθε flip flop θα πρέπει την ακμή ενεργοποίησης την ίδια στιγμή.
• Αλλιώς :
• Η διαφορά στους χρόνους άφιξης του ρολογιού σε διαφορετικές διατάξεις
ονομάζεται απόκλιση ρολογιού (clock skew).
• Στο παραπάνω παράδειγμα η αλλαγή της Q1 φτάνει πιο γρήγορα στο 2ο flip flop
από την αντίστοιχη ακμή.
• Αρα το Q2 μπαίνει σε μια λανθασμένη κατάσταση αφού δειγματοληπτείται όχι η
τρέχουσα, αλλά η επόμενη κατάσταση του Q1.
• tff(min) + tcomb(min) > thold + tskew
Οδήγηση ρολογιού
• Σε ένα μεγάλο σύστημα ένα μόνο σήμα ρολογιού μπορεί να μην έχει την
απαραίτητη οδηγητική ικανότητα.
• Χρειάζεται συνεπώς να δημιουργήσουμε πολλά αντίγραφά του.
• Ο πρώτος τρόπος είναι απαράδεκτος μιας και εισάγει απόκλιση ρολογιού όση και η
καθυστέρηση του buffer.
• Στη δεύτερη περίπτωση πρέπει όλες οι πύλες που χρησιμοποιούμε να ανήκουν στο
ίδιο ολοκληρωμένο κύκλωμα ώστε να έχουν όλοι παρόμοια χαρακτηριστικά
καθυστέρησης και να λειτουργούν σε ίδια τάση και θερμοκρασία.
• Αυτό δε σημαίνει ότι έτσι λύσαμε το πρόβλημα, αφού μπορεί ένα από τα 3
παράγωγα σήματα να έχει σημαντικά μεγαλύτερο φορτίο οδήγησης από ότι τα
άλλα δύο.
Δρομολόγηση ρολογιού
ΜΕΡΟΣ ΙV
VERILOG ΓΙΑ ΑΚΟΛΟΥΘΙΑΚΑ
ΚΥΚΛΩΜΑΤΑ
Όσα μάθαμε στο 1ο εξάμηνο…
– Ισχύουν στο ακέραιο και για τα ακολουθιακά κυκλώματα.
– Θα μπορούσαμε για παράδειγμα να περιγράψουμε το D latch :
D
Q
C
(clk)
Q'
module Dlatch (D, C, Q, nQ);
input D, C;
output Q, nQ;
not i0 (nD, D);
nand i1 (T, C, D);
nand i2 (nT, C, nD);
nand i3 (Q, nQ, T);
nand i4 (nQ, Q, nT);
endmodule
Όσα μάθαμε στο 1ο εξάμηνο…
– Kαι χρησιμοποιώντας το να φτιάξουμε D FF :
D
D
Q
D
Q
C
Q'
C
Q'
MASTER
CLK
module Dlatch (D, C, Q, nQ);
input D, C;
output Q, nQ;
not i0 (nD, D);
nand i1 (T, C, D);
nand i2 (nT, C, nD);
nand i3 (Q, nQ, T);
nand i4 (nQ, Q, nT);
endmodule
SLAVE
module FF_D (D, CLK, q, nq);
input D, CLK;
output q, nq;
Dlatch i0 (D, ~CLK, Masterq, );
Dlatch i1 (Masterq, CLK, q, nq);
endmodule
Όσα μάθαμε στο 1ο εξάμηνο…
– Kαι χρησιμοποιώντας το να φτιάξουμε ακολουθιακά κυκλώματα :
module Dlatch (D, clk, Q, nQ);
…
endmodule
module SAK (A, B, CLK, Y);
input A, B, CLK;
output Y;
module FF_D (D, CLK, q, nq);
…
endmodule
FF_D ff1 ( B,
CLK, Q1, );
FF_D ff0 ( (Q1|B) & A, CLK, Q0, );
assign Y = Q1 ~^ Q0;
endmodule
Όμως…
– Η Verilog δε δημιουργήθηκε για structural περιγραφές, γιατί αυτές:
• Είναι χρονοβόρες
• Εξομοιώνονται πολύ πιο αργά.
– Στα συνδυαστικά κυκλώματα είδαμε behavioral περιγραφές που :
• Είναι σαφώς πιο μικρές σε κώδικα
• Εξομοιώνονται πολύ πιο γρήγορα.
• Η ίδια περιγραφή οδηγεί σε διαφορετικά τελικά κυκλώματα ανάλογα με τις
απαιτήσεις μας.
– Υπάρχουν behavioral περιγραφές για ακολουθιακά στοιχεία και κυκλώματα ?
– Ναι (  ) και θα τις διερευνήσουμε αμέσως μετά.
– To πιο σημαντικό τους πλεονέκτημα όμως δε το έχουμε καν φανταστεί ακόμη.
– Η περιγραφή βάσει της συμπεριφοράς μας επιτρέπει να σταματάμε την
ανάπτυξη κώδικα ακόμα και στο επίπεδο του FSM !
– Χρειαζόμαστε ωστόσο λίγη θεωρία πίσω από τη φιλοσοφία μιας HDL για να τα
κατανοήσουμε όλα αυτά.
Λίστα ευαισθησίας εντολής
– Aς θεωρήσουμε την εντολή
assign S = A^B^C;
– Πότε εκτελείται αυτή η εντολή ?
– Θυμηθείτε ότι δεν υπάρχει ακολουθιακή σειρά εκτέλεσης των
εντολών.
– Το πάντοτε δεν είναι επίσης σωστή απάντηση, γιατί αν τα πάντα
εκτελούνταν πάντοτε δε θα μπορούσαμε να φτιάξουμε ένα
πρόγραμμα εξομοίωσης.
– Η εντολή εκτελείται μόνο όταν αλλάζουν τιμή οι μεταβλητές που
βρίσκονται στο δεξί μέρος της ανάθεσης.
– Συνεπώς η εντολή είναι ευαίσθητη στις αλλαγές αυτών των
σημάτων ή αλλιώς τα σήματα αυτά είναι η λίστα ευαισθησίας της
εντολής.
Λίστα ευαισθησίας ομάδων εντολών
– Μπορεί μια ομάδα εντολών να έχει λίστα ευαισθησίας ?
– Αφού όλη η ομάδα εντολών ενεργοποιείται ταυτόχρονα πως
καθορίζεται η σειρά εκτέλεσης κατά την ενεργοποίηση αυτών των
εντολών ?
– H σειρά εκτέλεσης εντός μιας ομάδας εντολών με κοινή λίστα
ευαισθησίας γίνεται σύμφωνα με το παράλληλο ή το ακολουθιακό
μοντέλο !
– Ο προγραμματιστής - σχεδιαστής επιλέγει μεταξύ blocking και
non-blocking τρόπου
• = blocking (assignment). Ακολουθιακό μοντέλο. H εκτέλεση των επόμενων
εντολών μπλοκάρεται μέχρι την εκτέλεση αυτού του assignment !
• <= non-blocking (assignment). Παράλληλο μοντέλο. H εκτέλεση των
επόμενων εντολών γίνεται παράλληλα με τη τρέχουσα !
Always block / statement
module and2behav (A, B, out);
input A, B;
output out ;
reg out ; // Αγνοήστε το προς το παρόν
Λίστα ευαισθησίας
always @ (A or B)
begin // Ομάδα εντολών με λίστα ευαισθησίας Α, Β
out = A and B;
end
endmodule
Always block / statement
module muxbeh2 (A, B, select, out);
input A, B, select;
output out ;
Λίστα ευαισθησίας
reg out ; // Αγνοήστε το προς το παρόν
always @ (A or B or select)
// Ομάδα εντολών με λίστα ευαισθησίας Α, Β, select
if (select) out = A;
Βlocking assignments
else out = B;
endmodule
Blocking vs non-blocking !!!
always @ (b)
begin
a = #2 b;
c = #2 b;
end
endmodule
always @ (b)
begin
a <= #2 b;
c <= #2 b;
end
endmodule
Αlways statements - 2
– Kάθε μεταβλητή αριστερά των assignments πρέπει να δηλωθεί σα
reg ακόμα κι όταν στη πραγματικότητα έχει άλλο τύπο.
– Όταν περιγράφουμε συνδυαστικά κυκλώματα θα πρέπει να
καλύπτουμε όλες τις περιπτώσεις στις if-then-else δομές μας.
– Εναλλακτικά θα πρέπει να υπάρχει ένα τελικό else χωρίς συνθήκη.
– Θυμηθείτε :
• Εντός ενός always statement η υπονοούμενη εκτέλεση είναι
ακολουθιακή / παράλληλη.
• Όλα τα always statements όμως, εκτελούνται παράλληλα.
– Μια μεταβλητή μπορεί να υπάρχει στο αριστερό μέρος αναθέσεων
μόνο σε ένα always block !!!
– Καλύτερα να μη χρησιμοποιείτε always statements όταν θέλετε να
περιγράψετε συνδυαστική λογική.
Περιγραφή βάσει της συμπεριφοράς
• Initial statement
• Always statement
initial
begin
clock =1’b0;
repeat (30)
#10 clock = ~clock;
end
initial
begin
clock =1’b0;
#300 $finish();
end
always
#10 clock = ~clock;
Λίστα ευαισθησίας ενός always statement
always
always @ (
or
or
always @ posedge
)
or negedge
)
Εντολές ανάθεσης εντός του always / initial statement
assign
=
Περιγραφές για latches και flip flops
module latch (din, clock, q, qb);
input din, clock;
output q, qb;
reg q, qb;
always @(clock or din)
if (clock)
begin
q <= din;
qb <= ~din;
end
endmodule
module dff (din, clock, q, clear);
input din, clock, clear ;
output q;
reg q;
always @(posedge clock)
if (~clear) q<=1’b0; else q <= din;
endmodule
module dff (din, clock, q);
input din, clock;
output q;
reg q;
always @(posedge clock)
q <= din;
endmodule
module dff (din, clock, q, clear);
input din, clock, clear ;
output q;
reg q;
always @(posedge clock or negedge clear)
if (~clear) q<=1’b0; else q <= din;
endmodule
Περιγραφές για τα υπόλοιπα flip flops
module TFF (Q,T,CLK,RST);
module dff (din, clock, q, clear);
input din, clock, clear ;
output q;
reg q;
always @(posedge clock)
if (~clear) q<=1’b0; else q <= din;
endmodule
output Q;
input T,CLK,RST;
wire DT;
assign DT = Q ^ T ;
dff TF1 (DT,CLK,Q,RST);
endmodule
module JKFF (Q,J,K,CLK,RST);
output Q;
input J,K,CLK,RST;
wire JK;
assign JK = (J & ~Q) | (~K & Q);
dff JK1 (JK,CLK,Q,RST);
endmodule
Περιγραφές για τα υπόλοιπα flip flops
module JK_FF (J,K,CLK,Q,Qnot);
output Q,Qnot;
input J,K,CLK;
reg Q;
assign Qnot = ~ Q ;
always @ (posedge CLK)
case ({J,K})
2'b00: Q = Q;
2'b01: Q = 1'b0;
2'b10: Q = 1'b1;
2'b11: Q = ~ Q;
endcase
endmodule
Περιγραφή μιας FSM με HDL
κ
δύο μεταβλητές τύπου reg
η κάθε μία τουλάχιστον log2k 
3 (2)
• Eνα που περιγράφει την ακολουθιακή λογική του κυκλώματός μας
• Ένα που περιγράφει τη συνδυαστική λογική του κυκλώματός μας
• (Μόνο στις μηχανές Μealy) Ένα που βάσει της τρέχουσας κατάστασης και των
εισόδων καθορίζει τη τιμή των εξόδων
Παράδειγμα 1
always @ (Prstate or x)
case (Prstate)
S0: if (x) Nxtstate = S1;
S1: if (x) Nxtstate = S3; else Nxtstate = S0;
S2: if (~x)Nxtstate = S0;
S3: if (x) Nxtstate = S2; else Nxtstate = S0;
endcase
module Mealy_mdl (x,y,CLK,RST);
input x,CLK,RST;
output y;
always @ (Prstate or x)
case (Prstate)
S0: y = 0;
reg y;
S1: if (x) y = 1'b0; else y = 1'b1;
reg [1:0] Prstate, Nxtstate;
parameter S0 = 2'b00, S1 = 2'b01,
S2 = 2'b10, S3 = 2'b11;
always @ (posedge CLK or negedge RST)
S2: if (x) y = 1'b0; else y = 1'b1;
S3: if (x) y = 1'b0; else y = 1'b1;
endcase
endmodule
if (~RST) Prstate = S0; else Prstate = Nxtstate;
Παράδειγμα 2 – Αχρησιμοποίητες Καταστάσεις
0/000
1/100
A
1/100
B
1/101
C
0/010
1/110
D
0/000
1/110
E
F
module fsm (i, clock, reset, out);
input i, clock, reset;
output [2:0] out;
reg [2:0] out;
reg [2:0] cstate, nstate;
0/010
0/000
always @ (i or cstate)
case (cstate)
A : begin
nstate = (i ==0) ? A : B;
out = (i==0)? 3'h0 : 3'h4;
end
B : begin
nstate = (i ==0) ? A : C;
out = (i==0)? 3'h0 : 3'h4;
end
...
parameter [2:0] A=0, B=1, C=2,
D=3, E=4, F=5;
?/101
F : begin
nstate = D; out = 3'h5;
end
default : begin
nstate = A; out = 3'hX;
end
endcase
always @(posedge clock or negedge reset)
if (~reset) cstate <= A;
else cstate <= nstate;
endmodule
Παράδειγμα 3 – Μηχανή Μοοre
module Moore_mdl (x,AB,CLK,RST);
input x,CLK,RST;
output [1:0] AB;
reg [1:0] state;
parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;
always @ (posedge CLK or negedge RST)
if (~RST) state = S0; else
case (state)
S0: if (~x) state = S1;
S1: if (x) state = S2; else state = S3;
S2: if (~x) state = S3;
S3: if (~x) state = S0;
endcase
assign AB = state;
endmodule
Verilog και καταχωρητές ολίσθησης
module
input
input
input
input
output
reg
always @ (posedge
if
else
case ({
})
endcase
endmodule
//Select inputs
//Serial inputs
//Clock and Clear
//Parallel input
//Register output
or negedge
)
//No change
//Shift right
//Shift left
//Parallel load input
Verilog και σύγχρονοι μετρητές
module
input
input
//Data input
output
//Output carry
output
//Data output
reg
assign
&
&
always @ (posedge
or negedge
)
if
else if
else if
else A = A
// no change, default condition
endmodule
Misconceptions : FSM is the best solution always :(
Mealy
module str1011recognition2
(i, recognised, clk, reset);
input i, clk, reset;
output recognised;
reg recognised;
reg [1:0] cstate;
reg [1:0] nstate;
parameter [1:0] S0=0, S1=1, S2=2, S3=3;
always @(i or cstate)
case (cstate)
S0 : begin
nstate = (i==0)? S0 : S1;
recognised = 0;
end
S1 : begin
nstate = (i==1)? S1 : S2;
recognised = 0;
end
S2 : begin
nstate = (i==0)? S0 : S3;
recognised = 0;
end
S3 : begin
nstate = (i==1)? S1 : S2;
recognised = (i==1)? 1 : 0;
end
endcase
always @(posedge clk or posedge reset)
if (reset) cstate <= S0;
else cstate <= nstate;
endmodule
Any other ideas ?
What about serial to parallel and a simple comparator ?
module str1011recognition1 (i, recognised, clk, reset);
input i, clk, reset;
output recognised;
reg [3:0] cons4inputs;
always @(posedge clk or posedge reset)
if (reset) cons4inputs <= 4'h0;
else cons4inputs[3:0] <= {cons4inputs[2:0], i};
assign recognised = (cons4inputs==4'b1011) ? 1'b1 : 1'b0;
endmodule
Μέγιστη συχνότητα λειτουργίας ακολουθιακού κυκλώματος
• Υποθέσεις
FF1
FF2
clk
• Χειρότερη καθυστέρηση = Aθροισμα των
– Propagation FF1
– Xειρότερο μονοπάτι του συνδυαστικού κυκλώματος
– Setup time FF2
• Συχνότητα λειτουργίας = 1 / Χειρότερη καθυστέρηση
Comparisons !!!
1. FSM requires 2 FF. Serial to parallel requires 4.
2. The control logic in FSM is more complex than the nonexisting one in S2P.
3. Frequency in FSM determined by
max { RE CLK -> Q + Control + setup, RE CLK -> Q + logic
for combinational outputs}.
Usually the first is the dominant factor.
4. Frequency in S2P : RE CLK -> Q + 4-input AND
No more guesses !!! Synthesized both in .5 micron :
FSM : 38 equivalent gates,
S2P : 45 equivalent gates,
640.1 MHz
970.6 MHz
ΜΕΡΟΣ V
ΗΜΙΑΓΩΓΙΚΕΣ ΜΝΗΜΕΣ & Η ΧΡΗΣΗ
ΤΟΥΣ ΩΣ ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΗ
ΛΟΓΙΚΗ
Διατάξεις Μνήμης
•
•
•
•
•
•
•
•
•
Ένα flip flop ή ένα latch μας προσφέρουν την ικανότητα αποθήκευσης ενός δυαδικού ψηφίου
Στη πράξη χρειαζόμαστε να αποθηκεύουμε πολύ μεγαλύτερες ποσότητες πληροφορίας
Οι διατάξεις που χρησιμοποιούμε ονομάζονται διατάξεις μνήμης
Πριν την επεξεργασία κάποιας πληροφορίας αυτή ανακαλείται από τις διατάξεις μνήμης και
αποθηκεύεται σε κάποιους τοπικούς καταχωρητές.
Τα αποτελέσματα της επεξεργασίας μεταφέρονται και πάλι στη μνήμη.
Οι διατάξεις μνήμης που επιτρέπουν τη προσπέλαση οποιασδήποτε πληροφορίας εντός
του ίδιου χρόνου t, ονομάζονται διατάξεις τυχαίας προσπέλασης. Σειριακής προσπέλασης
αντίθετα είναι εκείνες οι διατάξεις στις οποίες ο χρόνος προσπέλασης της πληροφορίας
εξαρτάται από το ποια πληροφορία προσπελάστηκε προηγούμενα.
Βασικές λειτουργίες σε μια μνήμη : εγγραφή (ανανέωση της αποθηκευμένης πληροφορίας)
και ανάγνωση
ROM : διάταξη μνήμης τυχαίας προσπέλασης φτιαγμένη με ημιαγωγικά στοιχεία που
επιτρέπει μόνο ανάγνωση.
RAM : διάταξη μνήμης τυχαίας προσπέλασης φτιαγμένη με ημιαγωγικά στοιχεία που
επιτρέπει ανάγνωση και εγγραφή.
Διατάξεις ROM
• H ROM είναι ένα προγραμματιζόμενο ολοκληρωμένο.
• Ο προγραμματισμός μπορεί να γίνει :
– Μόνο μια φορά :
• Στο εργοστάσιο (PROM)
• Aπό το χρήστη (FPROM)
– Περισσότερες φορές με σβήσιμο των ήδη υπαρχόντων δεδομένων,
με διάφορους τρόπους :
• Με ακτινοβολία (ΕPROM)
• Mε ηλεκτρικές διατάξεις (ΕΕPROM – E2PROM)
– Tμηματικά
• Flash
• Paged flash
Βασικές δομές ROM
•
•
•
Συνδυαστικό κύκλωμα ν εισόδων και β εξόδων
Είσοδοι = Διευθύνσεις. Εξοδοι = δεδομένα.
Η μνήμη ROM "αποθηκεύει" τον πίνακα αληθείας
οποιασδήποτε συνάρτησης με εισόδους ≤ είσοδοι της
ROM και εξόδους ≤ έξοδοι της ROM.
•
Ο διπλανός πίνακας αληθείας μπορεί να
αποθηκευτεί σε μια ROM (8x4)
Η ROM τελικά είναι μνήμη ή συνδυαστικό
κύκλωμα ?
Η ROM είναι nonvolatile !
•
•
Υλοποίηση συναρτήσεων με μνήμη
• f1(x1, x2, x3, ..., xm), f2(x1, x2, x3, ..., xm), …, fn(x1, x2, x3, ..., xm)
• Η υπόθεση ότι κάθε συνάρτηση είναι των ίδιων μεταβλητών είναι
απόλυτα λογική καθώς οποιαδήποτε λιγότερων μπορεί να μετατραπεί σε
συνάρτηση m μεταβλητών, όπου οι επιπλέον είναι αδιάφοροι.
• f(a,b,c) = ab + c
• f΄(a,b,c,d) = (ab+c)1 = (ab+c) (d + !d) = abd + cd + ab!d + c!d
fn(0, 0, ...,0), fn-1(0, 0, ...,0), ..., f1(0, 0, ...,0)
fn(0, 0, ...,1), fn-1(0, 0, ...,1), ..., f1(0, 0, ...,1)
Address Bus
...
xm, xm-1, ...,x1
fn(1, 1, ...,0), fn-1(1, 1, ...,0), ..., f1(1, 1, ...,0)
fn(1, 1, ...,1), fn-1(1, 1, ...,1), ..., f1(1, 1, ...,1)
Data Bus
fn(xm, xm-1, ...,x1), fn-1(xm, xm-1, ...,x1), ..., f1(xm, xm-1, ...,x1)
Παράδειγμα υλοποίησης συναρτήσεων με μνήμη
•
•
•
•
•
a
0
0
0
0
1
1
1
1
f1(a) = a, f2(b, c) = bc, f3(a, b) = a + b
Aριθμός μεταβλητών m = 3
f'1(a, b, c) = abc + ab!c + a!bc + a!b!c,
f'2(a, b, c) = abc + !abc
f'3(a, b, c) = abc + ab!c + a!bc + a!b!c + !abc + !ab!c
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
f΄1
0
0
0
0
1
1
1
1
f΄2
0
0
0
1
0
0
0
1
f΄3
0
0
1
1
1
1
1
1
f1(0, 0, 0), f2(0, 0, 0), f3(0, 0, 0) = 000
f1(0, 0, 1), f2(0, 0, 1), f3(0, 0, 1) = 000
f1(0, 1, 0), f2(0, 1, 0), f3(0, 1, 0) = 001
f1(0, 1, 1), f2(0, 1, 1), f3(0, 1, 1) = 011
a,b,c
Address Bus
f1(1, 0, 0), f2(1, 0, 0), f3(1, 0, 0) = 101
f1(1, 0, 1), f2(1, 0, 1), f3(1, 0, 1) = 101
f1(1, 1, 0), f2(1, 1, 0), f3(1, 1, 0) = 101
f1(1, 1, 1), f2(1, 1, 1), f3(1, 1, 1) = 111
Data Bus
f1(a, b, c), f2(a, b, c), f3(a, b, c)
Oι δύο υλοποιήσεις ενός συνδυαστικού κυκλώματος
•
•
•
•
Οι δύο υλοποιήσεις είναι ισοδύναμες μόνο από λογικής πλευράς.
Από χρονικής πλευράς η ROM είναι αφενώς πιο αργή, αφετέρου παρέχει τον ίδιο χρόνο
απόκρισης ανεξάρτητα των εισόδων POL, I1 και Ι0.
Για κύκλωμα 4 μεταβλητών χρειαζόμαστε ROM 16 x Y. Για ένα 20 μεταβλητών 1Μ x Y !!!
Υλοποίηση με ROM συμφέρει :
– Για μικρά κυκλώματα λίγων εισόδων
– Για να κρύψουμε τη πραγματική υλοποίηση.
Πολλαπλασιασμός με ROM !
•
•
•
•
•
Για τον πολλαπλασιασμό 2 αριθμών των 4 δ.ψ. θα μπορούσα να χρησιμοποιήσω μια ROM
256x8.
Η διεύθυνση σχηματίζεται από τη συνένωση του πολλαπλασιαστή και του
πολλαπλασιαστέου.
Το αποτέλεσμα των 8 δ.ψ. είναι η έξοδος δεδομένων της ROM.
Στη θέση {Υ, Χ} στη ROM θα πρέπει να έχουμε αποθηκευμένη τη τιμή Y x X.
O προγραμματισμός γίνεται με ειδική συσκευή στην οποία δίνουμε τα δεδομένα με τη μορφή
πίνακα
Εσωτερικά σε μια ROM
Δισδιάστατη αποκωδικοποίηση : 128x1
Πιθανή διάταξη μιας 32K x 8
MOS ROM
Γενική αρχιτεκτονική και κρίσιμοι χρόνοι μιας ROM
LSI EPROMs
Φτιάχνοντας μεγαλύτερες ROMs από μικρότερες
Έχετε
διαθέσιμα ολοκληρωμένα κυκλώματα (ΟΚ)
αποκωδικοποιητών με είσοδο επίτρεψης, πολυπλεκτών
και μνήμης ROM των 2Kbit. Κάθε ΟΚ μνήμης έχει
οργάνωση των 1024 θέσεων, με δύο δυαδικά ψηφία ανά
θέση. Δώστε λογικά διαγράμματα δύο τουλάχιστον
διαφορετικών αρχιτεκτονικών που θα σχεδιάζατε για να
υλοποιήσετε μια μνήμη ROM 16Κ θέσεων με 1 δυαδικό
ψηφίο ανά θέση.
OK7
OK6
OK5
OK4
OK3
OK2
OK1
OK0
Διεύθυνση[9:0]
Διεύθυνση[13:0]
CS
Πολυπλέκτης 16 -> 1
Δεδομένο
54
32
CS
Δεδομένο[1:0]
76
CS
Δεδομένο[1:0]
98
CS
Δεδομένο[1:0]
Δεδομένο[1:0]
11 10
CS
Δεδομένο[1:0]
Διεύθυνση[13:10]
13 12
CS
Δεδομένο[1:0]
15 14
CS
Δεδομένο[1:0]
Δεδομένο[1:0]
Σήμα Επιλογής
CS
10
OK0
0
CS
CS
OK1
OK2
2
OK3
CS
3
Δεδομένο[1:0]
OK4
4
CS
CS
OK5
5
CS
OK6
CS
6
OK7
CS
7
Σήμα Επίτρεψης
Διεύθυνση[10:1]
Σήμα Επιλογής
Διεύθυνση[0]
Διεύθυνση[13:11]
Aποκωδικοποιητής 3 -> 8
Διεύθυνση[13:0]
CS
Πολυπλέκτης 2 -> 1
1
CS
Δεδομένο
Διατάξεις RAM
• Oι διατάξεις αυτές επιτρέπουν τόσο την ανάγνωση όσο και την εγγραφή
(αποθήκευση) δεδομένων
• Στις στατικές RAM (SRAM) η αποθηκευμένη πληροφορία παραμένει εκεί όσο
τροφοδοτείται με ρεύμα το ολοκληρωμένο κύκλωμα εκτός κι αν ξαναγίνει εγγραφή
της συγκεκριμένης θέσης πληροφορίας.
• Στις δυναμικές RAM (DRAM) τα δεδομένα που είναι αποθηκευμένα σε κάθε θέση
πρέπει να ανανεώνονται περιοδικά. Η ανανέωση έγκειται στην ανάγνωση και την εκ
νέου εγγραφή των δεδομένων στην ίδια θέση.
• Κάθε ολοκληρωμένο RAM έχει εισόδους
διευθύνσεων και ελέγχου και εξόδους δεδομένων.
Επιπλέον των ROM υπάρχουν και οι είσοδοι των
προς αποθήκευση δεδομένων.
• Στις εισόδους ελέγχου έχει προστεθεί η ~WE. Όταν
είναι ενεργή έχουμε προσπέλαση εγγραφής. Σε κάθε
άλλη περίπτωση έχουμε προσπέλαση ανάγνωσης.
Λειτουργίες και δομή κυψελίδας μιας RAM
•
Aνάγνωση :
1.
2.
3.
4.
•
Ενεργοποίηση ~CS, ενεργοποίηση ~ΟΕ
Απενεργοποίηση ~WE
Τοποθέτηση διεύθυνσης
Διάβασμα των δεδομένων από τις γραμμές DOUT.
Eγγραφή :
1.
2.
Τοποθέτηση διεύθυνσης στις γραμμές διεύθυνσης και δεδομένων στις γραμμές DIN
Eνεργοποίηση ~CS και ~WE.
Η λειτουργική συμπεριφορά μιας κυψελίδας SRAM μπορεί να αποδοθεί με το ακόλουθο
κύκλωμα
Δομή μιας SRAM 8x4
Xρονισμοί μιας SRAM
LSI SRAM
DRAM - Γενικά
•
•
•
Eγγραφή
1.
Ενεργοποίηση της word line
2.
1 / 0 στη bit line.
Aνάγνωση :
1. Προφόρτιση της bit line μεταξύ 0 και 1.
2. Ενεργοποίηση της word line
3. Ανάλογα με τη τάση στα άκρα του
πυκνωτή παρατηρείται ένα θετικό ή
αρνητικό voltage swing
4. To swing ανιχνεύεται από έναν ενισχυτή
To τρανζίστορ έχει αντίσταση και συνεπώς η αποφόρτιση του πυκνωτή διαρκεί
κάποια mils. Σε αυτό το διάστημα χρειάζεται η ανανέωση της πληροφορίας του.
DRAM – Δομή
Μια 64Κx1 μνήμη φτιάχνεται συνήθως με ένα πίνακα 256x256 κυψελίδων
Για την εξοικονόμηση ακροδεκτών υπάρχει χρονική πολυπλεξία διευθύνσεων πάνω
στις 8 εισόδους A0-A7. Tα 16 bit διεύθυνσης εφαρμόζονται σε δύο οκτάδες, ανάλογα
με τη τιμή των σημάτων RAS_L και CAS_L
DRAM – Χρονισμός
Refresh
Aνάγνωση
Εγγραφή
Μνήμη
Μέγεθος (bytes)
ROM1
4K
ROM2
4K
RAM1
2K
RAM2
2K
RAM3
4K
RAM4
8K
Χρησιμοποιώντας όλα τα ΟΚ που αναφέρονται στον πίνακα και επιπλέον κυκλώματα, να
σχεδιάσετε αρχιτεκτονική συστήματος μνήμης έτσι ώστε να καλυφθούν όλες οι διευθύνσεις
μνήμης από την αρχική (0000Η) έως εκείνη που ορίζεται από τη χωρητικότητα των ΟΚ που
διαθέτετε. Τα ΟΚ να τοποθετηθούν στο πεδίο διευθύνσεων με τη σειρά που εμφανίζονται στον
πίνακα. Δηλαδή, στο πρώτο πεδίο διευθύνσεων που ξεκινά από τη διεύθυνση 000016 να
τοποθετηθεί η ROM1, στο αμέσως επόμενο η ROM2, κ.ο.κ.
Συγκεκριμένα:
Α. Δώστε πίνακα με τις διευθύνσεις μνήμης που καταλαμβάνονται από κάθε ΟΚ.
Β. Δώστε πίνακα με τις τιμές των ψηφίων που χρησιμοποιούνται για τη δημιουργία των
σημάτων επιλογής των ΟΚ.
Γ. Σχεδιάστε την αρχιτεκτονική του συστήματος μνήμης.
Μνήμες στη Verilog
module memory (Enable,ReadWrite,Address,DataIn,DataOut);
input Enable,ReadWrite;
input [3:0] DataIn;
input [5:0] Address;
output [3:0] DataOut;
reg [3:0] DataOut;
reg [3:0] Mem [0:63];
//64 x 4 memory
always @ (Enable or ReadWrite)
if (Enable)
if (ReadWrite) DataOut = Mem[Address];
//Read
else Mem[Address] = DataIn;
//Write
else DataOut = 4'bz;
endmodule
//High impedance state
ΜΕΡΟΣ VI
ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΑ ΟΛΟΚΛΗΡΩΜΕΝΑ
(Programmable Logic Devices – PLDs)
PLDs = Programmable Logic Devices
Πρώτα PCBs περιείχαν SSI + διάκριτα
Μεγαλύτερη πολυπλοκότητα => περισσότερα layers => > κόστος
Μεγαλύτερη πολυπλοκότητα => μεγαλύτερο εμβαδό πλακέτας => μη ικανοποίηση standards
Aντιγραφή = piece of cake !
Aξιοπιστία => κοντά στο 0.
Ανάγκη για ολοκληρωμένα που θα αντικαθιστούσαν ομάδες από SSI και θα παρείχαν κάποιο
είδος προστασίας από αντιγραφή => welcome PLDs
Σήμερα υπάρχουν εκατομμύρια διαφορετικά PLDs και πάμπολλες φιλοσοφίες σχεδιασμού
τους.
Τα πάντα ξεκίνησαν και (με μια μικρή διακοπή) συνεχίζονται βάσει της ίδιας πάντα ιδέας, την
"ΥΛΟΠΟΙΗΣΗ ΣΥΝΔΥΑΣΤΙΚΩΝ ΚΥΚΛΩΜΑΤΩΝ ΜΕ ΜΝΗΜΗ".
Πήραμε ήδη μια πρώτη γεύση, με την υλοποίηση συνδυαστικών κυκλωμάτων με EPROM
Mειονεκτήματα
• H απαιτούμενη μνήμη μεγαλώνει εκθετικά με τον αριθμό των
μεταβλητών.
• Αντίστοιχα μεγαλώνει και ο χρόνος απόκρισης.
• Υποστηρίζονται μόνο συνδυαστικά κυκλώματα. (Γιατί άραγε ? Τα
ακολουθιακά στοιχεία είναι στοιχεία μνήμης !).
• Προγραμματισμός μόνο 1 φορά στο εργοστάσιο στη περίπτωση των
ROM. Αυτό αφενώς καθιστά αλλαγές πολύ δαπανηρές, αφετέρου ο
χρόνος κατασκευής είναι εξαιρετικά μεγάλος.
Μήπως φταίει η φιλοσοφία μας ?
•
H απαιτούμενη μνήμη μεγαλώνει εκθετικά με τον αριθμό των μεταβλητών.
• Στις (ΕΕP) ROMs αποθηκεύω το πίνακα αληθείας, εκθετικό σε σχέση με τα inputs.
Υπάρχει καλύτερη λύση ?
• Νέα σκέψη => Αφού κάθε συνάρτηση μπορεί να εκφραστεί μοναδικά σα SOP =>
– Φτιάξε PLDs που να παρέχουν πολλά (ίσως και όλα) από τα πιθανά Products
(ελαχιστόροι).
– Φτιάξε PLDs που να παρέχουν πολλούς (ίσως και όλους) τους πιθανούς συνδυασμούς σε
αθροίσματα (Sums) των Products
– Δώσε την ευκαιρία στον σχεδιαστή να χρησιμοποιεί όσους από τους πόρους του
διαθέτεις μέσω του καψίματος (προγραμματισμού) ασφαλειών.
• Πόσα products θα χρειαστώ ? Αν όλα καταλήγω πάλι στο εκθετικό !
– Μελέτες έδειξαν ότι σπάνια χρειαζόμαστε όλους τους ελαχιστόρους !
– Ναι αλλά πως επιλέγω πόσους θα υλοποιήσω (το ποιους δεν έχει σημασία αφού μπορώ
να το λύσω με αντιμετάθεση των μεταβλητών) ?
– Απάντηση : Βάλε όσους σου επιτρέπει η τεχνολογία και δώσε στο χρήστη τη δυνατότητα
να χρησιμοποιεί όσους πραγματικά χρειάζεται.
– Πάλι πρόβλημα : Διαφορετικές εκφράσεις των ίδιων συναρτήσεων μπορεί να απαιτούν
διαφορετικό αριθμό ελαχιστόρων. Πως ο χρήστης θα βρει τη καταλληλότερη ?
– Ωρα να αναλάβουν και οι κατασκευαστές την ευθύνη τους !
Προγραμματιζόμενοι Λογικοί Πίνακες (PLAs)
PLAs - Δομή
PLAs - Προγραμματισμός
Προγραμματιζόμενη Λογική Πίνακα (PΑLs)
•
Αντίστοιχα μεγαλώνει και ο χρόνος
απόκρισης. Πρόβλημα ο αριθμός των
fuses.
PΑLs vs PLAs
Διατάξεις γενικής λογικής πίνακα (Gate Array Logic – GAL)
x x' y y' z z' A A'
1
A
2
3
x
4
B
5
6
y
7
C
8
9
z
10
D
11
12
x x' y y' z z' A A'
Registered PALs
•
Υποστηρίζονται
μόνο
συνδυαστικά κυκλώματα. (Γιατί
άραγε ? Τα ακολουθιακά στοιχεία
είναι στοιχεία μνήμης !).
Registered - Unregistered PALs
Commonly Used PALs
Ακολουθιακές GALs
Macrocell
H ευελιξία των macrocells
VLSI era problems 
Κεντροποιημένη αρχιτεκτονική :
Complex Programmable Logic Devices (CPLDs)
Aποκεντροποιημένη αρχιτεκτονική :
Field Programmable Gate Arrays (FPGAs)
Υποσχεδιασμοί των FPGAs : Complex Logic Block (CLB)
Υποσχεδιασμοί των FPGAs : I/O Block
Υποσχεδιασμοί των FPGAs : Programmable Interconnect
Register Transfer Level
Tι περιγράφουμε στην RTL
Σύνθεση Λογικού Κυκλώματος
•
Η σύγχρονη ροή ενός σχεδιασμού