Εθνικό Μετσόβιο Πολυτεχνείο Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Επικοινωνιών, Ηλεκτρονικής και Συστημάτων Πληροφορικής Εισαγωγή στην Σχεδίαση Συστημάτων VLSI Σχεδίαση σε επίπεδο RTL βασισμένη στα διαγράμματα ASMD (Έκδοση 2013) Η. Κουκούτσης
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.
Στο μάθημα αυτό χρησιμοποιείται εκτενώς ύλη και σχήματα από τα βιβλία: [1]: Σχεδίαση Ολοκληρωμένων Συστημάτων CMOS VLSI, Τέταρτη έκδοση, Neil Weste, David Harris, Εκδ. Παπασωτηρίου [2]: Ψηφιακή Σχεδίαση, Τέταρτη έκδοση, M. Morris Mano, Michal Ciletti, Εκδ. Παπασωτηρίου Επίσης, χρησιμοποιούνται (μεταφρασμένα ή ως έχουν) μέρη των διαφανειών για διδάσκοντες των N. Weste και D. Harris, οι οποίες συνοδεύουν το βιβλίο [1] στην αγγλική μορφή του στην σχετική ιστοσελίδα της Pearson Education Inc. Ειδικά σε σχέση με την ύλη της παρούσας σειράς διαφανειών, ακολουθείται σε ένα βαθμό ο τρόπος παρουσίασης της σχετικής ύλης του κεφαλαίου 8 του βιβλίου [2]. Στο τελευταίο αυτό κεφάλαιο παρουσιάζεται και η δυνατή χρήση της Verilog για την περιγραφή των διαγραμμάτων ASMD και την υλοποίηση των σχετικών κυκλωμάτων. Συνιστάται στους φοιτητές να χρησιμοποιήσουν το βιβλίο [2] μαζί με τις παρούσες διαφάνειες για τη μελέτη του θέματος της σχεδίασης πολύπλοκων ακολουθιακών κυκλωμάτων με την μέθοδο των διαγραμμάτων ASMD.
Αρχιτεκτονική Ελεγκτή (Control Unit) Μονάδας Επεξεργασίας Δεδομένων (Datapath Unit) Συνήθως, τα βασικά στοιχεία της αρχιτεκτονικής (καταχωρητές γενικών και ειδικών τύπων, μετρητές, άλλα στοιχεία επεξεργασίας δεδομένων) τοποθετούνται στην Μονάδα Επεξεργασίας Δεδομένων. Η Μονάδα Ελέγχου (ή Ελεγκτής) καθοδηγεί την ακολουθία των πράξεων των καταχωρητών (κυρίως αυτών, αλλ όχι μόνον). Και οι δύο μονάδες (units) κατασκευάζονται έτσι, ώστε να υλοποιούν ένα κυκλωματικό αλγόριθμο που λύνει το πρόβλημα που μας ενδιαφέρει.
Στοιχεία διαγράμματος ASM Για την πλήρη περιγραφή των στοιχείων ενός διαγράμματος ASM, παραδείγματα των οποίων ακολουθούν, ανατρέξτε στο κεφάλαιο 8 του βιβλίου [2]. Κουτί κατάστασης Κουτί απόφασης Κουτί εντολής υπό συνθήκη
Από το κεφάλαιο 8 του βιβλίου [2]. Παράδειγμα τμήματος διαγράμματος ASM
Δύο διαφορετικά στυλ γραφής διαγράμματος ASM Από το κεφάλαιο 8 του βιβλίου [2].
Διατύπωση ενός ρεαλιστικού προβλήματος Υποθέστε ότι θέλουμε να κατασκευάσουμε ένα συνολικό σύστημα ελέγχου ενός ταινιομεταφορέα, ο οποίος μεταφέρει κιβώτια ποικίλων μεγεθών από έναν χώρο αποθήκευσης σε ένα φορτηγό, σύμφωνα με τις ακολουθούσες απαιτήσεις. Υποθέστε, επίσης, ότι ο ταινιομεταφορέας έχει ήδη ηλεκτρονική συσκευή με φωτοδίοδο (led) και φωτοτρανζίστορ (phototransistor), κατασκευασμένη έτσι, ώστε η σχετική δέσμη να διακόπτεται όταν οποιοδήποτε κιβώτιο περνάει από ένα συγκεκριμένο σημείο του ταινιομεταφορέα. Στην περίπτωση διακοπής της δέσμης, το σχετικό κύκλωμα δίνει ένα ψηφιακό (λογικό) σήμα Beam = 0, αλλοιώς δίνει Beam = 1. 1. Τα κιβώτια πρέπει να τοποθετούνται στον ταινιομεταφορέα από το προσωπικό του χώρου αποθήκευσης διαδοχικά (ποτέ περισσότερα από ένα τη φορά), αλλά όχι απαραίτητα σε χρόνους προσδιορισμένους ακριβώς. 2. Ο χειριστής πρέπει να καθορίζει τον μέγιστο αριθμό κιβωτίων μέσω μιας συσκευής εισόδου, η έξοδος της οποίας δίνει έναν δυαδικό αριθμό των n-bits, τον Max_Cntr. 3. Το ακολουθιακό σύστημα το οποίο ελέγχει τον ταινιομεταφορέα, πρέπει να ξεκινάει από μια αρχική κατάσταση S_Idle, στην οποία πρέπει να παραμένει όσο δεν πατιέται ένας διακόπτης έναρξης Start. (Συνεχίζεται στην επόμενη διαφάνεια)
Διατύπωση ενός ρεαλιστικού προβλήματος (συνέχεια) 4. Όταν πατιέται ο διακόπτης Start (για οσοδήποτε χρονικό διάστημα), ο ελεγκτής του ταινιομεταφορέα πρέπει να δίνει εντολή να ξεκινάει το μοτέρ του ταινιομεταφορέα και να περιμένει την ανίχνευση του πρώτου κιβωτίου. 5. Όταν μεταφερθούν τόσα κιβώτια, όσα δείχνει ο αριθμός Max_Cntr, το σύστημα πρέπει να σταματάει το μοτέρ του ταινιομεταφορέα, να ανάβει μία ένδειξη «Χώρος πλήρης» και να μεταβαίνει στην αρχική κατάσταση. Για όσο χρόνο βρίσκεται σε αυτή την κατάσταση πλέον, η ένδειξη «Χώρος πλήρης» πρέπει να παραμένει αναμμένη. Από την κατάσταση δε αυτή, πρέπει να φεύγει με νέα πίεση του διακόπτη Start. 6. Όταν πατιέται ο διακόπτης Start πρέπει επίσης να σβήνει η ένδειξη «Χώρος πλήρης» (και το σύστημα να περιμένει την ανίχνευση του πρώτου νέου κιβωτίου). 7. Το σύστημα πρέπει ακόμη να έχει έναν διακόπτη Reset, η πίεση του οποίου πρέπει να σταματάει το μοτέρ του ταινιομεταφορέα, να στέλνει το σύστημα στην αρχική κατάσταση S_Idle και να σβήνει την ένδειξη «Χώρος πλήρης».
Μια πιθανή αρχιτεκτονική Κατ αρχήν, προσδιορίζουμε τα βασικά στοιχεία της αρχιτεκτονικής: Καταχωρητές, άλλα στοιχεία επεξεργασίας δεδομένων (πχ. συγκριτή μεγέθους), καθώς και τις εισόδους και εξόδους του συνολικού συστήματος. Η επικοινωνία των δύο μονάδων (ελεγκτή και επεξεργαστή δεδομένων) δεν είναι ακόμη σαφής.
Περιγραφή λειτουργίας με το διάγραμμα ASM: Πρώτο στάδιο Αρχίζουμε να σχεδιάζουμε το διάγραμμα ASM: Ζωγραφίζουμε το κουτί της αρχικής κατάστασης S-Idle, καθώς και τις σχετικές μεταβάσεις και πράξεις καταχωρητών υπό συνθήκες. Από την κατάσταση S0 (ή S_Idle) έχουμε τις εξής μεταβάσεις σε επόμενες καταστάσεις: 1. Εάν Reset=1, επόμενη κατάσταση είναι η ίδια η S0. Το σήμα εισόδου Reset, επειδή ελέγχεται πρώτο στο διάγραμμα, έχει προτεραιότητα έναντι των άλλων σημάτων και προκαλεί επιστροφή στην S0, σύμφωνα με τις προδιαγραφές. 2. Εάν Reset=0 και Start=0, επόμενη κατάσταση είναι πάλι η S0. Το σύστημα αδρανεί (επιστρέφει στην S0), όσο το Start=0. 3. Εάν Reset=0 και Start=1, το σύστημα εκκινεί και μεταβαίνει στην επόμενη κατάσταση S1 (ή Wait_Beam_Intrpt), για να περιμένει διακοπή της δέσμης του φωτοκυττάρου. Οι πράξεις καταχωρητών που έχουν σχέση με την κατάσταση S0 είναι οι εξής: 1. Μηδενισμός του μετρητή (Cntr) άνευ όρων στην κατάσταση S0: Cntr <= 0. 2. Εάν Reset=0 και Start=0, μηδενίζεται ο καταχωρητή ς 1-bit Full που ελέγχει το άναμμα της επιγραφής Χώρος Πλήρης (δηλαδή σβήνει η ένδειξη, Full <= 0). Μηδενίζεται επίσης ο καταχωρητής 1-bit Belt που ελέγχει την κίνηση της ταινίας (δηλαδή σταματάει η ταινία, Belt <= 0). 3. Εάν Reset=0 και Start=1, μηδενίζεται πάλι ο καταχωρητή ς Full (δηλαδή σβήνει η ένδειξη, Full <= 0), αλλά τίθεται ο καταχωρητής Belt (ξεκινάει η ταινία, Belt <= 1).
Περιγραφή λειτουργίας με το διάγραμμα ASM: Δεύτερο στάδιο Στο ήδη υπάρχον τμήμα του διαγράμματος ASM (το οποίο απεικονίζεται με μπλε χρώμα) προσθέτουμε το κουτί μιας νέας κατάστασης S1 ή Wait_Beam_Intrpt, στην οποία το κύκλωμα περιμένει διακοπή της δέσμης του φωτοτρανζίστορ, δηλαδή την έλευση νέου κιβωτίου. Οι σχετικές μεταβάσεις και πράξεις καταχωρητών είναι οι εξής: 1. Εάν Reset=1, επόμενη κατάσταση θα είναι η S0 και θα μηδενιστούν οι Full και Belt: Full <= 0, Belt <= 0. 2. Εάν Reset=0 και Beam=1, επόμενη κατάσταση θα είναι η ίδια η S1 (δεν έχουμε διακοπή της δέσμης), ενώ δεν θα γίνει καμία πράξη καταχωρητών. 3. Εάν Reset=0 και Beam=0, επόμενη κατάσταση θα είναι η S2 (ή Beam_Intrptd, αφού το Beam μας δείχνει ότι διεκόπη η δέσμη του φωτοτρανζίστορ από νέο κιβώτιο), επομένως θα αυξηθεί και το περιεχόμενο του μετρητή: Cntr <= Cntr + 1.
Περιγραφή λειτουργίας με το διάγραμμα ASM: Τρίτο (τελικό) στάδιο Και πάλι, στο ήδη υπάρχον τμήμα του διαγράμματος ASM (το οποίο απεικονίζεται με μπλε χρώμα) προσθέτουμε το κουτί μιας νέας κατάστασης Beam_Intrptd, στην οποία το κύκλωμα περιμένει την αποκατάσταση της συνέχειας της δέσμης του φωτοκυττάρου, δηλαδή το τέλος του περάσματος του κιβωτίου μπροστά από το φωτοκύτταρο. Οι σχετικές μεταβάσεις και πράξεις καταχωρητών είναι οι εξής: 1. Εάν Reset=1, επόμενη κατάσταση θα είναι η S0 και θα μηδενιστούν οι Full και Belt: Full <= 0, Belt <= 0. 2. Εάν Reset=0 και Beam=1, επόμενη κατάσταση θα είναι η ίδια η S2 (δεν έχουμε ακόμη αποκατάσταση της συνέχειας της δέσμης), ενώ δεν θα γίνει καμία πράξη καταχωρητών. 3. Εάν Reset=0 και Beam=0 (τέλος κιβωτίου και αποκατάσταση της συνέχειας της δέσμης) και η συνθήκη Cntr=Cntr_Max έχει τιμή false (0) (δεν έχουμε φτάσει στον μέγιστο επιτρεπόμενο αριθμό κιβωτίων), επόμενη κατάσταση θα είναι S1 (πάμε στην κατάσταση αναμονής νέου κιβωτίου), ενώ δεν θα γίνει καμία πράξη καταχωρητών. 4. Εάν Reset=0 και Beam=0 (τέλος κιβωτίου και αποκατάσταση της συνέχειας της δέσμης) και η συνθήκη Cntr=Cntr_Max έχει τιμή true (1) (φθάσαμε στον μέγιστο επιτρεπόμενο αριθμό κιβωτίων), επόμενη κατάσταση θα είναι η S0 (πάμε στην αρχική κατάσταση), θα τεθεί ο Full (ανάβει η ένδειξη Χώρος Πλήρης ) και θα μηδενιστεί ο Belt (σταματάει η ταινία): Full <= 1, Belt <= 0.
Το πλήρες διάγραμμα ASM Στο διπλανό σχήμα φαίνεται το συνολικό, κατ αρχήν σχεδιασθέν διάγραμμα ASM. Τα βασικά στοιχεία της αρχιτεκτονικής του επεξεργαστή έχουν κατ αρχήν περιγραφεί σε προηγούμενη διαφάνεια: Μπορούμε να χρησιμοποιήσουμε οποιονδήποτε μετρητή θέλουμε, με δυνατότητα μηδενισμού, κατά προτίμηση ασύγχρονού. Ακόμη, μπορούμε να χρησιμοποιήσουμε οποιονδήποτε συγκριτή των n bits. Όμως, στην ανάπτυξη του διαγράμματος ASM κάναμε εμμέσως, επί πλέον, την υπόθεση ότι οι καταχωρητές του 1 bit τίθενται με μια εντολή, μηδενίζονται με μια άλλη, ενώ ανάμεσα σε δύο διαδοχικές εντολές διατηρούν αναλλοίωτο το περιεχόμενό τους. Ένα στοιχείο που λειτουργεί με τον τρόπο αυτό είναι το φλιπ-φλοπ JK, το οποίο τίθεται με J=1 (ενώ το Κ παραμένει στο 0) και μηδενίζεται με Κ=1 (ενώ το J παραμένει στο 0) στον επόμενο ενεργό παλμό του ρολογιού. Ένα ρολόι σχετικά γρήγορο για τα ανθρώπινα δεδομένα, πχ. >200Hz, είναι υπεραρκετό για την ορθή λειτουργία του κυκλώματος που θα ελέγχεται από το διάγραμμα αυτό.
Ένα άλλο στυλ γραφής του διαγράμματος ASM: Με χρήση εντολών προς τον επεξεργαστή δεδομένων Απλά αντικαθιστούμε τις πράξεις καταχωρητών με εντολές προς τον επεξεργαστή δεδομένων, που προξενούν τις πράξεις αυτές. Πχ., ή εντολή Reset_Cntr προκαλεί μηδενισμό του μετρητή. Η τοποθέτηση της εντολής αυτής σε ένα κουτί κατάστασης ή εντολής υπό συνθήκη, ισοδυναμεί με την λογική ανάθεση Reset_Cntr =1. Είναι σημαντικό να χρησιμοποιούμε ονόματα εντολών, τα οποία μας δίνουν αμέσως να καταλάβουμε τις αντίστοιχες πράξεις καταχωρητών. Πχ. Incr_Cntr για την εντολή αύξησης του περιεχομένου του μετρητή κατά 1 (από το Increment Counter), ή Stop_Belt (προφανές). Η μορφή αυτή του διαγράμματος περιγράφει πλήρως τον ελεγκτή, όπως θα δούμε στα επόμενα.
Πλήρως προσδιορισμένο διάγραμμα ASMD: Εντολές του ελεγκτή προς τον επεξεργαστή δεδομένων και αντίστοιχες πράξεις καταχωρητών Το διάγραμμα αυτό περιγράφει τόσο τον ελεγκτή (controller), όπως είπαμε και προηγουμένως, όσο και τον επεξεργαστή δεδομένων (datapath), δεδομένου ότι περιγράφει πλήρως τις πράξεις των καταχωρητών και των υπόλοιπων στοιχείων του επεξεργαστή. Αξίζει να τονισθεί, στο σημείο αυτό, ότι η περιγραφή του κυκλώματος με την χρήση του διαγράμματος ASMD, είναι περιγραφή της συμπεριφοράς (λειτουργίας) του κυκλώματος και όχι δομική περιγραφή.
Προσδιορισμός Επικοινωνίας Ελεγκτή Επεξεργαστή Δεδομένων Ο πλήρης προσδιορισμός της επικοινωνίας της μονάδας ελέγχου (ή ελεγκτή, controller) και της μονάδας επεξεργασίας δεδομένων (ή επεξεργαστή δεδομένων, datapath) είναι πολύ εύκολος, από τη στιγμή που έχουμε ολοκληρώσει το διάγραμμα ASM. Έτσι (ανατρέξτε στη βασική αρχιτεκτονική και το διάγραμμα ASMD): Οι εξωτερικές είσοδοι και έξοδοι του συστήματος είναι προφανείς από τις προδιαγραφές. Στην περίπτωσή μας, εξωτερικές είσοδοι είναι τα Reset, Start, Beam και τα bits του μέγιστου επιτρεπτού αριθμού αντικειμένων (που δίνονται στο σύστημά μας από διακόπτες). Έξοδοι του συνολικού συστήματος είναι μια γραμμή του 1 bit που ελέγχει αν η ένδειξη Χώρος Πλήρης θα ανάψει ή όχι και άλλη μια γραμμή του 1 bit που ελέγχει την κίνηση του ταινιομεταφορέα (αυτά μόνον ζητούνται από τις προδιαγραφές). Όποιες εντολές είναι σε κουτιά καταστάσεων ή σε κουτιά εντολών υπό συνθήκη, είναι έξοδοι του ελεγκτή και είσοδοι του επεξεργαστή δεδομένων. Στην περίπτωσή μας, οι εντολές αυτές είναι οι τα σήματα Incr_Cntr, Clr_Cntr, Set_Full, Reset_Full, Start_Belt και Stop_Belt. Όποια σήματα είναι σε κουτιά αποφάσεων και δεν είναι εξωτερικές είσοδοι του συστήματος, είναι σήματα κατάστασης που παράγονται στον επεξεργαστή δεδομένων, δηλαδή (εσωτερικές του συστήματος) έξοδοι του επεξεργαστή δεδομένων και (εσωτερικές του συστήματος) είσοδοι του ελεγκτή. Τα σήματα αυτά πληροφορούν τον ελεγκτή για την κατάσταση του επεξεργαστή δεδομένων. Στην περίπτωσή μας, έχουμε ένα μόνον τέτοιο σήμα, με το σύνθετο όνομα (Cntr=?Cntr_Max), το οποίο πληροφορεί τον ελεγκτή ότι ο μετρητής κιβωτίων έφθασε στη μέγιστη επιτρεπόμενη τιμή του. Μπορούμε, πλέον, να προσδιορίσουμε περαιτέρω την εσωτερική αρχιτεκτονική του συστήματός μας, όπως φαίνεται στην επόμενη διαφάνεια.
Περαιτέρω προσδιορισμός του συστήματος Με το σύμβολο (Cntr =? Cntr_Max) συμβολίζουμε το αποτέλεσμα της σχετικής σύγκρισης: True (1) ή False (0)
Κωδικοποίηση: S0 (ή S_Idle): 00 S1 (ή Wait_Beam_Intrpt): 01 S2 (ή Beam_Intrptd): 10 Μετά την κωδικοποίηση, το προκύπτον διάγραμμα ASM περιέχει όλη την πληροφορία που χρειάζεται για να σχεδιαστεί η Μονάδα Ελέγχου (ή Ελεγκτής) ως ένα απλό ακολουθιακό σύστημα, όπου το διάγραμμα ASM αντικαθιστά το διάγραμμα καταστάσεων ή FSM: Κάθε βέλος του διαγράμματος προσδιορίζει μια μετάβαση σε άλλη κατάσταση και επομένως προσδιορίζει μια γραμμή του πίνακα καταστάσεων. Τα κουτιά αποφάσεων που κάθε βέλος διασχίζει προσδιορίζουν τις τιμές εισόδων του Ελεγκτή που προκαλούν τη συγκεκριμένη μετάβαση. Στα κουτιά καταστάσεων βρίσκονται οι έξοδοι τύπου Mealy του Ελεγκτή που παίρνουν τιμή 1 στις συγκεκριμένες καταστάσεις. Στα κουτιά εντολών υπό συνθήκη βρίσκονται οι έξοδοι τύπου Moore του Ελεγκτή που παίρνουν τιμή 1 στις συγκεκριμένες καταστάσεις και υπό τις αντίστοιχες συνθήκες. Οπότε συνθέτουμε τον πίνακα της επόμενης διαφάνειας.
Υλοποίηση ελεγκτή: Πίνακας καταστάσεων για την σχεδίαση του ελεγκτή Ο πίνακας καταστάσεων του Ελεγκτή κατασκευάζεται με βάση τις αρχές που περιγράφηκαν στη προηγούμενη διαφάνεια (υποθέτουμε ότι χρησιμοποιούμε δύο D φλιπ-φλοπς, τα D1 και D2). ΠΙΝΑΚΑΣ ΚΑΤΑΣΤΑΣΕΩΝ (ή ΜΕΤΑΒΑΣΕΩΝ) ΕΛΕΓΚΤΗ Παρούσα Κατάσταση Είσοδοι Επόμενη Κατάσταση Έξοδοι Symbol Name D1 D2 Reset Start Beam (Cntr=?Cntr_Max) Symbol Name D D1 D D2 Incr_Cntr Reset_Cntr Set_Full Clr_Full Start_Belt Stop_Belt S0 S_Idle 0 0 1 X X X S0 S_Idle 0 0 0 1 0 1 0 1 S0 S_Idle 0 0 0 0 X X S0 S_Idle 0 0 0 1 0 0 0 0 S0 S_Idle 0 0 0 1 X X S1 Wait_Beam_Intrpt 0 1 0 1 0 1 1 0 S1 Wait_Beam_Intrpt 0 1 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S1 Wait_Beam_Intrpt 0 1 0 X 1 X S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S1 Wait_Beam_Intrpt 0 1 0 X 0 X S2 Beam_Intrptd 1 0 1 0 0 0 0 0 S2 Beam_Intrptd 1 0 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S2 Beam_Intrptd 1 0 0 X 0 X S2 Beam_Intrptd 1 0 0 0 0 0 0 0 s2 Beam_Intrptd 1 0 0 X 1 0 S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S2 Beam_Intrptd 1 0 0 X 1 1 S0 S_Idle 0 0 0 0 1 0 0 1 Προφανώς: Κάθε γραμμή του πίνακα καταστάσεων προκύπτει από ένα βέλος του διαγράμματος ASM. Η μορφή του πίνακα είναι συμπυκνωμένη. Πχ., η πρώτη γραμμή αντιστοιχεί σε 8 κανονικές γραμμές, επειδή υπάρχουν 3 X στο δεξιό μέρος του σύνθετου πίνακα αληθείας (αδιάφορες είσοδοι, 8=2 3 ). Στον συγκεκριμένο πίνακα έχουν παραληφθεί οι γραμμές που αφορούν την αχρησιμοποίητη κατάσταση 11. Αν το σύστημα βρεθεί στην κατάσταση 11 λόγω προβλήματος, πρέπει να γίνει ειδικός χειρισμός που παραλείπεται εδώ για λόγους απλότητας.
Υλοποίηση ελεγκτή: Πίνακας καταστάσεων για την σχεδίαση του ελεγκτή (2) ΠΙΝΑΚΑΣ ΚΑΤΑΣΤΑΣΕΩΝ (ή ΜΕΤΑΒΑΣΕΩΝ) ΕΛΕΓΚΤΗ Παρούσα Κατάσταση Είσοδοι Επόμενη Κατάσταση Έξοδοι Symbol Name D1 D2 Reset Start Beam (Cntr=?Cntr_Max) Symbol Name D D1 D D2 Incr_Cntr Reset_Cntr Set_Full Clr_Full Start_Belt Stop_Belt S0 S_Idle 0 0 1 X X X S0 S_Idle 0 0 0 1 0 1 0 1 S0 S_Idle 0 0 0 0 X X S0 S_Idle 0 0 0 1 0 0 0 0 S0 S_Idle 0 0 0 1 X X S1 Wait_Beam_Intrpt 0 1 0 1 0 1 1 0 S1 Wait_Beam_Intrpt 0 1 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S1 Wait_Beam_Intrpt 0 1 0 X 1 X S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S1 Wait_Beam_Intrpt 0 1 0 X 0 X S2 Beam_Intrptd 1 0 1 0 0 0 0 0 S2 Beam_Intrptd 1 0 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S2 Beam_Intrptd 1 0 0 X 0 X S2 Beam_Intrptd 1 0 0 0 0 0 0 0 s2 Beam_Intrptd 1 0 0 X 1 0 S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S2 Beam_Intrptd 1 0 0 X 1 1 S0 S_Idle 0 0 0 0 1 0 0 1 Ας δούμε, ως παράδειγμα, πως προκύπτουν οι γραμμές με α.α. 0 (η πρώτη) και 5 (η έκτη) του πίνακα καταστάσεων του Ελεγκτή. Κάθε μια από τις γραμμές αυτές αντιστοιχεί σε ένα βέλος του διαγράμματος. Η πρώτη γραμμή αντιστοιχεί στο βέλος του διαγράμματος που φαίνεται (μερικά) στο σχήμα: Η γραμμή αυτή σημαίνει τα εξής: Όταν βρισκόμαστε στην παρούσα κατάσταση S0 ή S_Idle, που αντιστοιχεί στον κώδικα 00 (για τα D1,D2), [στη συνέχεια της γραμμής παραθέτουμε τις τιμές των εισόδων που προκαλούν τη μετάβαση που δείχνει το βέλος] εάν το Reset είναι 1, ανεξαρτήτως της τιμής του Start (δηλαδή Start X),του Beam (X επίσης) και του (Cntr=?Cntr_Max) (X επίσης), μεταβαίνουμε στην επόμενη κατάσταση S0 ή S_Idle [που βάζουμε στην επόμενη σύνθετη στήλη Επόμενη Κατάσταση ], η οποία αντιστοιχεί στον κώδικα 00 και από τις εξόδους παίρνουν την τιμή 1 [στη παρούσα κατάσταση] οι εξής: Clr_Full, Stop_Belt [που είναι σε κουτί υπό συνθήκη] και Reset_Cnrt [που εκδίδεται άνευ όρων στην κατάσταση S0], ενώ οι υπόλοιπες (Incr_Cntr, Set_Full και Start_Belt) παραμένουν στο 0.
Υλοποίηση ελεγκτή: Πίνακας καταστάσεων για την σχεδίαση του ελεγκτή (3) ΠΙΝΑΚΑΣ ΚΑΤΑΣΤΑΣΕΩΝ (ή ΜΕΤΑΒΑΣΕΩΝ) ΕΛΕΓΚΤΗ Παρούσα Κατάσταση Είσοδοι Επόμενη Κατάσταση Έξοδοι Symbol Name D1 D2 Reset Start Beam (Cntr=?Cntr_Max) Symbol Name D D1 D D2 Incr_Cntr Reset_Cntr Set_Full Clr_Full Start_Belt Stop_Belt S0 S_Idle 0 0 1 X X X S0 S_Idle 0 0 0 1 0 1 0 1 S0 S_Idle 0 0 0 0 X X S0 S_Idle 0 0 0 1 0 0 0 0 S0 S_Idle 0 0 0 1 X X S1 Wait_Beam_Intrpt 0 1 0 1 0 1 1 0 S1 Wait_Beam_Intrpt 0 1 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S1 Wait_Beam_Intrpt 0 1 0 X 1 X S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S1 Wait_Beam_Intrpt 0 1 0 X 0 X S2 Beam_Intrptd 1 0 1 0 0 0 0 0 S2 Beam_Intrptd 1 0 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S2 Beam_Intrptd 1 0 0 X 0 X S2 Beam_Intrptd 1 0 0 0 0 0 0 0 s2 Beam_Intrptd 1 0 0 X 1 0 S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S2 Beam_Intrptd 1 0 0 X 1 1 S0 S_Idle 0 0 0 0 1 0 0 1 Η έκτη γραμμή αντιστοιχεί στο βέλος του διαγράμματος που φαίνεται (μερικά) στο διπλανό σχήμα: Η γραμμή αυτή σημαίνει τα εξής: Όταν βρισκόμαστε στην παρούσα κατάσταση S1 ή Wait_Beam_Intrpt, που αντιστοιχεί στον κώδικα 01 (για τα D1,D2), [στη συνέχεια της γραμμής παραθέτουμε τις τιμές των εισόδων που προκαλούν τη μετάβαση που δείχνει το βέλος] εάν το Reset είναι 0, ανεξαρτήτως της τιμής του Start (δηλαδή Start X),εάν επίσης το Beam είναι 0, ανεξαρτήτως της τιμής του (Cntr=?Cntr_Max) (X επίσης), μεταβαίνουμε στην επόμενη κατάσταση S2 ή Beam_Intrptd [που βάζουμε στην επόμενη σύνθετη στήλη Επόμενη Κατάσταση ], η οποία αντιστοιχεί στον κώδικα 10 και από τις εξόδους παίρνει την τιμή 1 [στη παρούσα κατάσταση] μόνον η Incr_Cntr [που είναι σε κουτί υπό συνθήκη, ενώ οι υπόλοιπες (Reset_Cnrt, Set_Full, Clr_Full, Start_Belt και Stop_Belt ) παραμένουν στο 0.
Υλοποίηση ελεγκτή: Προσδιορισμός των εισόδων φλιπ-φλοπς και των εξόδων του Ελεγκτή Για τον προσδιορισμό των εισόδων των φλιπ-φλοπ και των εξόδων του Ελεγκτή, μπορούμε να χρησιμοποιήσουμε οποιονδήποτε συστηματικό τρόπο γνωρίζουμε ή ένα αυτόματο πρόγραμμα σύνθεσης και απλοποίησης. Ένας ιδιαίτερα απλός τρόπος είναι ο εξής: Για κάθε σήμα προς υλοποίηση (πχ. για το D D1 ), αθροίζουμε τις συνθήκες του πρώτου μέρους του πίνακα αληθείας που προκαλούν 1 στο δεύτερο μέρος του μέρους του πίνακα αληθείας. Έτσι, πχ., η στήλη του D D1 έχει 1 στις στήλες 5 και 7 (εάν θεωρήσουμε την πρώτη στήλη ως στήλη 0), οπότε προκύπτει D D1 = S1 Reset Beam + S2 Reset Beam = ( S1 + S2 ) Reset Beam = = ( D1 D2 + D1 D2 ) Reset Beam (Εξίσωση Α) Υπενθυμίζουμε το σκεπτικό πίσω από τον κανόνα αυτόν στην επόμενη διαφάνεια. Μπορούμε να θεωρήσουμε τα σύμβολα S0, S1, S2 ως σήματα και να υποθέσουμε πάντα ότι κάθε ένα από τα σήματα γίνεται 1, όταν και μόνον όταν το σύστημα είναι στην αντίστοιχη κατάσταση, π.χ. S1=1, όταν και μόνον όταν το σύστημα είναι στην κατάσταση S1.
Υλοποίηση ελεγκτή: Προσδιορισμός των εισόδων φλιπ-φλοπς και των εξόδων του Ελεγκτή (2) Επαναλαμβάνουμε τον κανόνα: Για κάθε σήμα προς υλοποίηση (πχ. για το D D1 ), αθροίζουμε τις συνθήκες του πρώτου μέρους του πίνακα αληθείας που προκαλούν 1 στο δεύτερο μέρος του μέρους του πίνακα αληθείας. Ο κανόνας αυτός για το D D1 δίνει: D D1 = S1 Reset Beam + S2 Reset Beam = ( S1 + S2 ) Reset Beam = = ( D1 D2 + D1 D2 ) Reset Beam Ας υπενθυμίζουμε το σκεπτικό πίσω από τον κανόνα αυτόν: ΠΙΝΑΚΑΣ ΚΑΤΑΣΤΑΣΕΩΝ (ή ΜΕΤΑΒΑΣΕΩΝ) ΕΛΕΓΚΤΗ (Εξίσωση Α) Παρούσα Κατάσταση Είσοδοι Επόμενη Κατάσταση Έξοδοι Symbol Name D1 D2 Reset Start Beam (Cntr=?Cntr_Max) Symbol Name D D1 D D2 Incr_Cntr Reset_Cntr Set_Full Clr_Full Start_Belt Stop_Belt S0 S_Idle 0 0 1 X X X S0 S_Idle 0 0 0 1 0 1 0 1 S0 S_Idle 0 0 0 0 X X S0 S_Idle 0 0 0 1 0 0 0 0 S0 S_Idle 0 0 0 1 X X S1 Wait_Beam_Intrpt 0 1 0 1 0 1 1 0 S1 Wait_Beam_Intrpt 0 1 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S1 Wait_Beam_Intrpt 0 1 0 X 1 X S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S1 Wait_Beam_Intrpt 0 1 0 X 0 X S2 Beam_Intrptd 1 0 1 0 0 0 0 0 S2 Beam_Intrptd 1 0 1 X X X S0 S_Idle 0 0 0 0 0 1 0 1 S2 Beam_Intrptd 1 0 0 X 0 X S2 Beam_Intrptd 1 0 0 0 0 0 0 0 s2 Beam_Intrptd 1 0 0 X 1 0 S1 Wait_Beam_Intrpt 0 1 0 0 0 0 0 0 S2 Beam_Intrptd 1 0 0 X 1 1 S0 S_Idle 0 0 0 0 1 0 0 1 Για ευκολία, ας ονομάσουμε την συνθήκη (Cntr = Cntr_Max) απλά ως Max. Το πρώτο 1 προκύπτει από την έκτη γραμμή, όταν S1=1, Reset=0, (Start=X, αδιάφορο,) και Beam=0 (και Max=Χ, αδιάφορο). Το δεύτερο και τελευταίο 1 προκύπτει από την 8 γραμμή, όταν S2=1, Reset=0, (Start=X, αδιάφορο,) και Beam=0 (και Max=Χ, αδιάφορο). Δηλαδή, προκύπτει 1, όταν [S1=1, Reset=0, (Start=X, αδιάφορο,) και Beam=0 (και Max=Χ, αδιάφορο)] ή [S2=1, Reset=0, (Start=X, αδιάφορο,) και Beam=0 (και Max=Χ, αδιάφορο)]. Δηλαδή όταν S1 Reset Beam =1 ή όταν S2 Reset Beam = 1, επομένως όταν S1 Reset Beam + S2 Reset Beam = 1. Από την συνθήκη αυτή προκύπτει η Εξίσωση Α. Από την κωδικοποίηση δε προκύπτει ότι S1 = D1 D2 και S2 = D1 D2.
Υλοποίηση ελεγκτή: Προσδιορισμός των εισόδων φλιπ-φλοπς και των εξόδων του Ελεγκτή (3) Εφαρμόζουμε τον προαναφερθέντα κανόνα για την D D2 και για όλες τις εξόδους του Ελεγκτή, οπότε προκύπτει ακόμη: D D2 = D1 D2 Reset Start + D1 D2 Reset Beam Max = = D1 Reset ( D2 Start + D2 Beam Max ) Incr_Cntr = D1 D2 Reset Beam Reset_Cntr = D1 D2 Set_Full = D1 D2 Reset Beam Max Clr_Full = D1 D2 Reset + D1 D2 Reset Start + D1 D2 Reset + D1 D2 Reset = = (D1 D2 + D1 D2 + D1 D2 ) Reset + D1 D2 Reset Start Start_Belt = D1 D2 Reset Start Stop_Belt = D1 D2 Reset + D1 D2 Reset + D1 D2 Reset + D1 D2 Reset Beam Max = = (D1 D2 + D1 D2 + D1 D2 ) Reset + D1 D2 Reset Beam Max
Υλοποίηση ελεγκτή: Προσδιορισμός των εισόδων φλιπ-φλοπ και των εξόδων του Ελεγκτή (4) Από τις προηγούμενες εξισώσεις Boole, οι ακόλουθες: D D1 = ( D1 D2 + D1 D2 ) Reset Beam D D2 = D1 Reset ( D2 Start + D2 Beam Max ) προσδιορίζουν τις εισόδους των D φλιπ-φλοπς του ελεγκτή (D1 και D2). Οι υπόλοιπες εξισώσεις προσδιορίζουν τις εξόδους του Ελεγκτή: Incr_Cntr = D1 D2 Reset Beam Reset_Cntr = D1 D2 Set_Full = D1 D2 Reset Beam Max Clr_Full = (D1 D2 + D1 D2 + D1 D2 ) Reset + D1 D2 Reset Start Start_Belt = D1 D2 Reset Start Stop_Belt = (D1 D2 + D1 D2 + D1 D2 ) Reset + D1 D2 Reset Beam Max Ο ελεγκτής, πλέον (κατά τα γνωστά), είναι πλήρως προσδιορισμένος και μπορεί να υλοποιηθεί με οποιονδήποτε από τους γνωστούς τρόπους. Εάν βασικό κριτήριό μας είναι η εξοικονόμηση χώρου στο πυρίτιο, ένας αποτελεσματικός τρόπος είναι η σχεδίαση βελτιστοποιημένων πυλών με την μέθοδο μονοπατιών Euler. Τόσο οι είσοδοι των φλιπ-φλοπς, όσο και οι είσοδοι του επεξεργαστή δεδομένων, επειδή έχουν παραχθεί ως έξοδοι του ακολουθιακού κυκλώματος που είναι ο ελεγκτής, είναι σήματα στάθμης (και όχι μέτωπα παλμών). Η πιθανή αυτή δυασκολία αίρεται εύκολα, όπως θα δούμε στα επόμενα.
Υλοποίηση Μονάδας Επεξεργασίας Δεδομένων και Συνολικού Κυκλώματος Η Μονάδα επεξεργασίας Δεδομένων υλοποιείται πολύ εύκολα (η σχετική ύλη της Λογικής Σχεδίασης Ψηφιακών Συστημάτων θεωρείται γνωστή, προφανώς). Χρησιμοποιούμε: Έναν κατάλληλο μετρητή των n-bits με ασύγχρονο μηδενισμό, έναν συγκριτή μεγέθους των n-bits και Δύο JK flip-flop, ως καταχωρητές του 1 bit, με δυνατότητα Set και Reset (ή Clear). Οι διασυνδέσεις των στοιχείων αυτών, καθώς και συνδέσεις των στοιχείων αυτών με τον Ελεγκτή και τα εξωτερικά στοιχεία, είναι ήδη προσδιορισμένες στη διαφάνεια με τίτλο Περαιτέρω Προσδιορισμός του Συστήματος.
Η έννοια του Μπλοκ Κατάστασης Στο διπλανό σχήμα φαίνεται το αναπτυχθέν διάγραμμα ASMD. Έχει χρησιμοποιηθεί κόκκινο χρώμα για το κουτί της κατάστασης S0 και όλα τα κουτιά αποφάσεων και τα κουτιά εντολών υπό συνθήκη, τα οποία είναι τοποθετημένα σε βέλη που ξεκινάνε από την S0. Το κόκκινο τμήμα ονομάζεται block της κατάστασης S0. Είναι ιδιαίτερα σημαντικό να γίνει αντιληπτό ότι, όταν το σύστημα είναι σε μία κατάσταση, όλες οι σύγχρονες πράξεις καταχωρητών του μπλοκ της κατάστασης αυτής εκτελούνται στον αμέσως επόμενο παλμό του ρολογιού (σε σχέση με την παρούσα κατάσταση), ταυτόχρονα με την μετάβαση στην επόμενη κατάσταση, όποια κα αν είναι η τελευταία. Πχ., εάν είμαστε στην S0 και το Reset βρεθεί να έχει την τιμή 1 στο επόμενο ενεργό μέτωπο του ρολογιού, θα γίνουν ταυτόχρονα οι εξής πράξεις καταχωρητών: Cntr <= 0, Full <= 0, Belt <= 0, D1 <= 0, D2 <= 0, Δηλαδή θα μηδενιστούν οι Cntr, Full και Belt, και θα γίνει μετάβαση στην επόμενη κατάσταση (που τυχαίνει να είναι ξανά η 00, δηλαδή η S0), ταυτόχρονα. Η χρονική σύμπτωση αυτή δεν μας ενοχλεί συνήθως, εκτός από ειδικές περιπτώσεις. Παράδειγμα τέτοιας περίπτωσης θα δώσουμε στα επόμενα.
Η έννοια του Μπλοκ Κατάστασης (2) Στο διπλανό σχήμα έχει χρησιμοποιηθεί κόκκινο χρώμα για το κουτί της κατάστασης S1 και όλα τα κουτιά αποφάσεων και τα κουτιά εντολών υπό συνθήκη, τα οποία είναι τοποθετημένα σε βέλη που ξεκινάνε από την S1. Το κόκκινο τμήμα είναι το block της κατάστασης S1. Πάλι, όλες οι σύγχρονες πράξεις καταχωρητών του μπλοκ της κατάστασης αυτής εκτελούνται στον αμέσως επόμενο παλμό του ρολογιού (σε σχέση με την παρούσα κατάσταση), ταυτόχρονα με την μετάβαση στην επόμενη κατάσταση, όποια κα αν είναι η τελευταία. Έτσι, εάν το σύστημα είναι στην S1 και στο επόμενο ενεργό μέτωπο του ρολογιού βρεθεί Reset=0 και Beam=0, θα γίνουν ταυτόχρονα οι εξής πράξεις καταχωρητών: Cntr <= Cntr + 1, D1 <= 1, D2 <= 0, Δηλαδή θα αυξηθεί μετρητής Cntr και θα γίνει μετάβαση στην επόμενη κατάσταση, την 10, δηλαδή την S2, ταυτόχρονα.
Η έννοια του Μπλοκ Κατάστασης (3) Και στο διπλανό σχήμα έχει χρησιμοποιηθεί κόκκινο χρώμα για το κουτί της κατάστασης S3 και όλα τα κουτιά αποφάσεων και τα κουτιά εντολών υπό συνθήκη, τα οποία είναι τοποθετημένα σε βέλη που ξεκινάνε από την S3. Το κόκκινο τμήμα είναι το block της κατάστασης S3. Και πάλι, ισχύουν τα ίδια για τις σύγχρονες πράξεις καταχωρητών. Έτσι, πχ., εάν το σύστημα είναι στην S2 και στο επόμενο ενεργό μέτωπο του ρολογιού βρεθεί Reset=0, Beam=1 και (Cntr=?Max_Cntr)= 1, θα γίνουν ταυτόχρονα οι εξής πράξεις καταχωρητών: Full <= 1, Belt <= 0, D1 <= 0, D2 <= 0, Δηλαδή θα τεθεί ο Full, θα μηδενιστεί ο Belt και θα γίνει μετάβαση στην επόμενη κατάσταση, την 00, δηλαδή την S0, ταυτόχρονα.
Έλεγχος τιμών καταχωρητών Η ταυτόχρονη εκτέλεση των σύγχρονων πράξεων καταχωρητών σε ένα μπλοκ κατάστασης, μπορεί να δημιουργήσει πρόβλημα σε περίπτωση που θέλουμε να ελέγξουμε την τιμή κάποιων από αυτούς τους καταχωρητές. Έτσι, στην κατάσταση S1 του αναπτυχθέντος διαγράμματος, εάν Reset=0 και Beam=0, δίδεται εντολή σύγχρονης με το ρολόι αύξησης της τιμής του μετρητή: Cntr<=Cntr+1. Εάν βάλουμε το κουτί ελέγχου για την συνθήκη (Cntr=?Max_Cntr)=1 στο μπλοκ της κατάστασης S1, αμέσως μετά από την υπό συνθήκη αύξηση του μετρητή, μπορεί να παρουσιαστεί η εξής περίπτωση: Να δοθεί μεν εντολή να αυξηθεί ο μετρητής, αλλά επειδή η αύξηση αυτή θα καθυστερήσει μέχρι τον επόμενο παλμό του ρολογιού, ο έλεγχος της συνθήκης (Cntr=?Max_Cntr)=1 να γίνει πριν από την αύξηση του μετρητή, οπότε, φυσικά θα ληφθεί λανθασμένη απόφαση στο κουτί απόφασης. Επομένως, το περιεχόμενο των καταχωρητών, οι οποίοι μεταβάλλονται σύγχρονα με το ρολόι, πρέπει να ελέγχεται τουλάχιστον μία κατάσταση μετά από την κατάσταση, στην οποία οι καταχωρητές μεταβάλλονται (δηλαδή να παρεμβάλλεται τουλάχιστον ένας παλμός του ρολογιού ανάμεσα στη μεταβολή και τον έλεγχο), αλλοιώς θα έχουμε λανθασμένη λήψη απόφασης. Στην περίπτωση του διπλανού διαγράμματος, η μεταβολή του Cntr γίνεται στην κατάσταση S1, ενώ ο έλεγχος της τιμής του στην κατάσταση S2, άρα δεν θα παρουσιαστεί πρόβλημα. Εν γένει, πρέπει να δίνεται προσοχή στον χρονισμό εκτέλεσης όλων των πράξεων, ώστε να μην προκαλείται εσφαλμένη λειτουργία (διαφορετική από αυτήν που ο σχεδιαστής επιθυμεί).
Μορφή και Δράση των Εντολών προς τον Επεξεργαστή Δεδομένων Έχουμε ήδη ορίσει τα σήματα S0, S1 και S2 (τα οποία, αν θέλουμε, μπορούμε να χρησιμοποιήσουμε ή να μη χρησιμοποιήσουμε). Κάθε ένα από τα σήματα αυτά γίνεται 1, όταν και μόνον όταν το σύστημα είναι στην αντίστοιχη κατάσταση. Τα σήματα αυτά λέγονται και σήματα κατάστασης του συστήματος. Η κωδικοποίηση που χρησιμοποιήσαμε μας δίνει ότι S0 = D1 D2 = m 0 (D1, D2) (ο ελαχιστόρος 0 των D1, D2), S1 = D1 D2 = m 1 (D1, D2) (ο ελαχιστόρος 1 των D1, D2) και S2 = D1 D2 = m 2 (D1, D2) (ο ελαχιστόρος 2 των D1, D2). Επομένως, οι μεταβλητές κατάστασης είναι, στην ουσία, ελαχιστόροι του συνόλου των φλιπ-φλοπς κατάστασης του συστήματος (με την διάταξη που έχουμε ορίσει για τα φλιπ-φλοπς αυτά και χρησιμοποιούμε στον πίνακα κατάστασης, στη συγκεκριμένη περίπτωση [D1, D2]). Αν υλοποιήσουμε τα σήματα αυτά με τις κατάλληλες πύλες, οι λογικές γραμμές που προκύπτουν ονομάζονται γραμμές κατάστασης του συστήματος και έχουν τις ιδιότητες των εξόδων του αποκωδικοποιητή: Ανά πάσα στιγμή, οπωσδήποτε μία, αλλά μόνον μία από τις γραμμές αυτές είναι ενεργή (στο 1 ή H, για θετική λογική αντιστοίχηση ), ενώ οι άλλες είναι ανενεργές (στο 0 ή L). Εξ άλλου, οι σχέσεις για τα S0, S1 και S2 ορίζουν τις τρείς από τις τέσσερις εξόδους ενός αποκωδικοποιητή 2-σε-4.
Μορφή και Δράση των Εντολών προς τον Επεξεργαστή Δεδομένων (2) Οι γραμμές κατάστασης είναι πολύ χρήσιμες για να καταλάβει κανείς τη μορφή και τη δράση των εντολών του Ελεγκτή προς τον Επεξεργαστή Δεομένων. Εκ του τρόπου σχεδίασης και υλοποίησης των εντολών συμπεραίνουμε τα εξής: Κάθε εντολή έχει, οπωσδήποτε, ακριβώς ένα σήμα κατάστασης σε κάθε όρο γινομένου της (ή την αποκωδικοποιημένη του μορφή ως γινόμενο τονισμένων ή όχι τιμών φλιπ-φλοπς), δεδομένου ότι ο κάθε όρος γινομένου εκδίδεται στη συγκεκριμένη κατάσταση που παρουσιάζεται σε μια σύνθετη γραμμή του πίνακα αληθείας ως Παρούσα Κατάσταση. Επειδή οι μεταβλητές κατάστασης είναι ελαχιστόροι του συνόλου των φλιπ-φλοπς, ακόμη και αν υπάρχουν περισσότερα σήματα κατάστασης στη εξίσωση της εντολής, δεν συναληθεύουν: Ένας μόνο σε κάθε κατάσταση είναι διάφορος του μηδενός. Επομένως, σε κάθε κατάσταση του συστήματος, η κάθε εντολή εκφυλίζεται σε ένα γινόμενο της μορφής: Εντολή = S i (Γινόμενο τιμών των σημάτων εισόδων του συστήματος ή/και σημάτων κατάστασης του Επεξεργαστή δεδομένων, και στις δύο περιπτώσεις στην κατάσταση S i ) (Σχέση Β) όπου S i είναι η εκάστοτε παρούσα κατάσταση. Η διάρκεια παραμονής του συστήματος σε μια κατάσταση είναι μια περίοδος του ρολογιού μόνον, αλλά επειδή το σύστημα μπορεί να μεταβεί στην ίδια κατάσταση, μπορεί να παραμείνει ουσιαστικά σε κάθε κατάσταση για έναν ή παραπάνω από έναν παλμούς του ρολογιού.
Μορφή και Δράση των Εντολών προς τον Επεξεργαστή Δεδομένων (3) Η μορφή επομένως μιας εντολής μπορεί να είναι το πολύ μια ακολουθία των σχηματισμών που φαίνονται στο σχήμα, με μόνο μια (δηλαδή σταθερή) τιμή στο παράθυρο παρατήρησης της κατάστασης. Εξήγηση της μιας τιμής καθ όλη τη διάρκεια (του παραθύρου παρατήρησης) της κατάστασης (αναφερθείτε στις διαφάνειες θεμάτων χρονισμού φλιπ-φλοπς): 1. Έχουμε από την αρχή του μαθήματος υποθέσει ότι συγχρονίζουμε τις εισόδους του συστήματός μας με το ρολόι, αν δεν είναι ήδη συγχρονισμένες, αλλοιώς οι μεθοδολογίες σχεδίασης ακολουθιακών συστημάτων είναι δυνατόν να αποτύχουν. 2. Τα σήματα κατάστασης που παράγονται στον Επεξεργαστή δεδομένων με τη συμμετοχή εξόδων καταχωρητών που λειτουργούν με το κοινό ρολόι, είναι ήδη συγχρονισμένα με το ρολόι αυτό, καθώς ακολουθούν τους κανόνες που θέσαμε στις διαφάνειες θεμάτων χρονισμού φλιπ-φλοπς. Επομένως κανένα από τα σήματα που είναι στην παρένθεση της σχέσης Β δεν αλλάζει στο παράθυρο παρατήρησης της κατάστασης, άρα στη σχέση Β η Εντολή έχει μία μόνον, σταθερή τιμή στο παράθυρο παρατήρησης της κατάστασης. Στο διπλανό σχήμα φαίνονται πιθανές μορφές μιας εντολής του Ελεγκτή. Στην περίπτωση του παραδείγματος αυτού, το ρολόι δεν είναι τετραγωνικό [αλλά έχει duty cycle (= χρόνος στο 1 / περίοδο) 25%] και οι καταχωρητές είναι αρνητικά ακμοπυροδότητοι (στο θέμα αυτό οποιεσδήποτε επιλογές δεν προκαλούν προβλήματα χρονισμού είναι επιτρεπτές). Στο σχήμα αυτό, επίσης, έχουν παραληφθεί για λόγους απλότητας οι χρόνοι ανόδου και καθόδου των κυματομορφών και έχει υποτεθεί ότι το παράθυρο παρατήρησης καλύπτει όλη την περίοδο του ρολογιού, κάτι που δεν συμβαίνει σε υψηλές ταχύτητες ρολογιών (ανατρέξτε στις διαφάνειες για τα θέματα χρονισμού των ακολουθιακών συστημάτων)
Μορφή και Δράση των Εντολών προς τον Επεξεργαστή Δεδομένων (4) Ας δούμε ξανά τη γενική μορφή μιας εντολής: Η εντολή αυτή έχει τα εξής χρησιμοποιήσιμα στοιχεία: 1. Ένα θετικό μέτωπο παλμού, το Α. 2. Μια στάθμη σήματος 1 ή Η ικανοποιητικής διάρκειας, την Β. 3. Και ένα αρνητικό μέτωπο παλμού, το Β. Ο σχεδιαστής μπορεί να χρησιμοποιήσει οποιοδήποτε από τα στοιχεία αυτά για να επηρεάσει κατάλληλα τους καταχωρητές και τα υπόλοιπα στοιχεία του Επεξεργαστή Δεδομένων και να υλοποιήσει τις απαιτούμενες πράξεις. Ιδιαίτερη προσοχή πρέπει να δοθεί στα πιθανά προκύπτοντα θέματα χρονισμού. Η προβλέψιμη όμως μορφή των εντολών διευκολύνει τον ορθό σχεδιασμό του συστήματος. Ελαφρά δυσκολότερη είναι η περίπτωση των ασύγχρονων μηδενισμών ή θέσεων καταχωρητών του Επεξεργαστή Δεδομένων, αλλά, συνήθως, μια ορθή μελέτη του χρονισμού των σχετικών σημάτων επιτρέπει σωστή σχεδίαση. Στην περίπτωση της σχεδίασής μας, ο ασύγχρονος μηδενισμός του Cntr δεν προξενεί προβλήματα.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.