DATA FLOW DESCRIPTION

2. Πώς Δουλεύει

Στην προηγούμενη ενότητα είδαμε ένα παράδειγμα της μεθόδου Data Flow Description και τι αυτό περιγράφει. Σε αυτήν την ενότητα θα μάθουμε πως ένας εξομοιωτής χρησιμοποιεί την περιγραφή γιά να μοντελοποιήσει την σχεδίαση.

Τα στάνταρ της VHDL δεν περιγράφει μόνο το πως οι σχεδιάσεις ορίζονται αλλά ακόμη και το πως αυτές θα έπρεπε να μεταφρασθούν (interpreted) . Αυτός είναι ο σκοπός του να έχουμε στάνταρ, έτσι ώστε όλοι να μπορούμε να συμφωνούμε στο νόημα της σχεδίασης. Είναι σημαντικό να καταλάβουμε πως ένας εξομοιωτής VHDL μεταφράζει μία σχεδίαση γιατί αυτό υπαγορεύει τι στην σωστή μετάφραση είναι σύμφωνο με τα στάνταρ. Πρέπει να σημειώσουμε ότι δεν είναι όλοι οι εξομοιωτές 100% σωστοί.

Το σχήμα το οποίο χρησιμοποιείται για να μοντελοποιήσουμε μία σχεδίαση VHDL καλείται εξομoίωση διακριτού χρόνου γεγονότος (discrete event time simulation).

Όταν η τιμή ενός σήματος αλλάζει, λέμε ότι έχει συμβεί ένα γεγονός (event) στο σήμα αυτό. Αν δεδομένα ρέουν από το σήμα Α προς το σήμα Β και έχει συμβεί ένα γεγονός στο σήμα Α (δηλαδή αλλάξει η τιμή του Α) , τότε πρέπει να καθορίσουμε την πιθανή νέα τιμή του Β. Αυτό είναι η βάση της εξομοίωσης διακριτού χρόνου γεγονότος (discrete event time simulation). Οι τιμές των σημάτων ενημερώνονται μόνο όταν κάποια συγκεκριμένα γεγονότα συμβαίνουν και τα γεγονότα συμβαίνουν σε διακριτά διαστήματα χρόνου.

Από την στιγμή όπου ένα γεγονός προκαλεί κάποιο άλλο, η εξομοίωση προχωρεί σε κύκλους. Ο εξομοιωτής διατηρεί μία λίστα με γεγονότα που χρειάζονται να προχωρήσουν. Σε κάθε κύκλο όλα τα γεγονότα προχωρούν, ενώ κάθε καινούργιο γεγονός που παράγεται, τοποθετείται σε μία ξεχωριστή λίστα όπου και προγραμματίζεται να επεξεργαστεί σε έναν επόμενο κύκλο. Κάθε αποστολή σήματος εκτιμάται μία φορά, όταν η εξομοίωση αρχίζει να ορίζει την αρχική τιμή του κάθε σήματος.

Ας εξετάσουμε τώρα πώς γίνεται η εξομοίωση χρόνου γεγονότος (event time simulation) γιά το προηγούμενο παράδειγμα ενός SR latch.

Η εσωτερική λειτουργία του latch βασικά συλλαμβάνεται με τις δύο επόμενες προτάσεις:

q<= nor nq;

nq<= nor q;

Από την στιγμή που τα δεδομένα ρέουν από το r και το nq στο q, λέμε ότι το q είναι εξαρτώμενο από το r και το nq. Γενικά έχοντας δοθεί κάποια πρόταση αποστολής σήματος, το σήμα που βρίσκεται αριστερά από τον τελεστή " <= " εξαρτάται από όλα τα σήματα που εμφανίζονται στο δεξιό τμήμα του τελεστή. Εάν κάποιο σήμα εξαρτάται από ένα 'άλλο σήμα το οποίο έχει προκληθεί από κάποιο γεγονός, τότε η έκφραση στην αποστολή σήματος ξαναεκτιμάται. Αν το αποτέλεσμα της εκτίμησης είναι διαφορετικό από την τρέχουσα τιμή του σήματος, ένα γεγονός (event) θα δρομολογηθεί (το οποίο προστίθεται στην λίστα των γεγονότων που θα επεξεργαστούν) γιά να δώσει στο σήμα την νέα του τιμή. Έτσι αν ένα γεγονός επιδράσει στο r ή στο nq , τότε ο τελεστής nor υπολογίζεται και αν το αποτέλεσμα είναι διαφορετικό από την τρέχουσα τιμή του q , ένα γεγονός θα δρομολογηθεί προκειμένου να ενημερωθεί η τιμή του q.

Ας υποθέσουμε ότι σε μία συγκεκριμένη στιγμή κατά την διάρκεια της εξομοίωσης του παραδείγματος του SR latch, οι τιμές των σημάτων είναι s=0 , r=0 , q=1 και nq=0. Ας υποθέσουμε τώρα ότι η τιμή του σήματος r αλλάζει (εξαιτίας κάποιου εξωτερικού γεγονότος της σχεδίασης) και παίρνει την τιμή 1. Από την στιγμή που το q εξαρτάται από το r, εμείς πρέπει να επανεκτιμήσουμε την έκφραση r nor nq , η οποία τώρα έχει τιμή 0. Από την στιγμή που η τιμή του q πρέπει να αλλάξει σε 0 , ένα νέο γεγονός θα δρομολογηθεί στο σήμα q . Κατά την διάρκεια του επόμενου γύρου το γεγονός που έχει δρομολογηθεί για το q επεξεργάζεται και η τιμή του q αλλάζει σε 0. Επίσης, αφού και το nq εξαρτάται από το q , πρέπει να επανεκτιμηθεί και η έκφραση s nor q. Η τιμή της έκφρασης είναι 1, έτσι ένα γεγονός δρομολογείται για να ενημερώσει την τιμή του nq. Κατά την διάρκεια του επόμενου γύρου που η τιμή της έκφρασης θα γίνει 0 , όταν θα επεξεργάζεται το γεγονός στο nq, έκφραση για την τιμή του q θα επανεκτιμηθεί γιατί αυτό εξαρτάται από την τιμή του nq. Παρόλα αυτά η τιμή της έκφρασης θα γίνει 0 και κανένα άλλο γεγονός δεν θα γίνει γιατί η τιμή του q είναι ήδη 0. Και από την στιγμή που δεν έχουν δρομολογηθεί άλλα γεγονότα τότε τίποτα δεν επιδρά εσωτερικά στο latch.

Ας υποθέσουμε τώρα ότι ένα εξωτερικό συμβάν αναγκάζει το r να πάρει πάλι την τιμή 0. Αφού το q εξαρτάται από το r , η τιμή της έκφρασης r nor nq επανεκτιμάται.

Το αποτέλεσμα αυτής της έκφρασης είναι 0 και το q είναι ήδη 0, οπότε δεν δρομολογείται κανένα συμβάν. Όπως μπορούμε να δούμε έχουμε το σωστό μοντέλο του SR latch. Όταν το σήμα r έγινε ενεργό (1) η έξοδος του latch έγινε reset και όταν το r έγινε ανενεργό (0) η έξοδος παρέμεινε αμετάβλητη.

Παρακάτω έχουμε περιληπτικά τα βήματα της εξομοίωσης (simulation rounds) που περιγράψαμε:

start : r=0 , s=0 , q=1 , nq=0

round 1 : r=1 , s=0 , q=1 , nq=0 , η τιμή 0 δρομολογείται στο q

round 2 : r=1 , s=0 , q=0 , nq=0 , η τιμή 1 δρομολογείται στο nq

round 3 : r=1 , s=0 , q=0 , nq=1 , δεν δρομολογείται κανένα νέο γεγονός

round 4 : r=0 , s=0 , q=0 , nq=1 , δεν δρομολογείται κανένα νέο γεγονός.

 

Επιστροφή στη Data Flow Description