DATA FLOW DESCRIPTIONS
3. Το Μοντέλο Καθυστέρησης (The Delay Model)
Το παράδειγμα της προηγούμενης ενότητας μας δείχνει πώς γίνεται μία λειτουργική εξομοίωση (functional simulation). Καλείται λειτουργική εξομοίωση γιατί μοντελοποιεί μόνο το πώς μία σχεδίαση λειτουργεί χωρίς να λάβουμε υπόψιν χρονισμούς. Αυτό είναι σε αντίθεση με την χρονική εξομοίωση (timing simulation) η οποία μοντελοποιεί τις εσωτερικές καθυστερήσεις που υπάρχουν στα πραγματικά κυκλώματα. Αυτή η παράγραφος εξηγεί πως η VHDL μπορεί να χρησιμοποιηθεί για να μοντελοποιήσει τις χρονικές καθυστερήσεις έτσι ώστε να επιτύχουμε την χρονική εξομοίωση.
Θα εξετάσουμε δύο μοντέλα καθυστέρησης τα οποία χρησιμοποιούνται στην VHDL . Το πρώτο καλείται μοντέλο αδρανειακής καθυστέρησης (inertial delay model). Το μοντέλο αδρανειακής καθυστέρησης καθορίζεται με την προσθήκη μίας ρήτρας after (after clause) στην δήλωση ορισμού του σήματος (signal assignment statement). Για παράδειγμα υποθέτουμε ότι μία αλλαγή στην είσοδο μίας πύλης nor θα προκαλούσε μία αλλαγή στην έξοδο μετά από μία καθυστέρηση 1 ns. Για να μοντελοποιήσουμε αυτήν την καθυστέρηση στο παράδειγμα του SR latch, θα αντικαθιστούσαμε τις δύο δηλώσεις ορισμού σημάτων με τις παρακάτω δύο προτάσεις:
q <= nor nq after 1 ns ;
nq <= nor q after 1 ns ;
Ας πούμε τώρα ότι κατά την διάρκεια της εξομοίωσης το σήμα r αλλάζει και αυτό θα κάνει να αλλάξει το σήμα q και έτσι αντί να δρομολογηθεί ένα γεγονός για να επιδράσει στο q κατά την διάρκεια του επόμενου γύρου, δρομολογείται μία φόρμα 1 ns η οποία θα επιδράσει στον τρέχοντα χρόνο. Έτσι ο εξομοιωτής πρέπει να διατηρεί την τιμή του τρέχοντα χρόνου. Όταν δεν υπάρχουν άλλα γεγονότα προς επεξεργασία στον ίδιο τρέχοντα χρόνο, τότε ο χρόνος ενημερώνεται στον χρόνο του επόμενου παλαιότερου γεγονότος (next earliest event) και όλα τα γεγονότα για αυτόν τον χρόνο θα προχωρήσουν. Ένα χρονικό διάγραμμα για αυτό το τροποποιημένο SR latch, το οποίο παράγεται από ένα εξομοιωτή μπορεί να είναι :
Παρατηρούμαι ότι η αλλαγή στο q γίνεται μετά από χρόνο 1 ns από την αλλαγή στο r. Παρομοίως η αλλαγή στο nq γίνεται μετά από 1 ns από την αλλαγή στο q.
Έτσι η ρήτρα "after 1 ns" μοντελοποιεί μία εσωτερική καθυστέρηση μίας πύλης nor.
Παρόλα αυτά δεν τελειώνει εδώ η ιστορία του μοντέλου αδρανειακής καθυστέρησης. Τυπικά, όταν ένα εξάρτημα έχει κάποια εσωτερική καθυστέρηση και μία είσοδος αλλάζει για χρόνο μικρότερο αυτής της καθυστέρησης, τότε δεν θα προκληθεί καμμία αλλαγή στην έξοδο. Αυτή είναι άλλωστε και η υπόθεση για το μοντέλο αδρανειακής καθυστέρησης. Το παρακάτω χρονικό διάγραμμα θα παραγόταν χρησιμοποιώντας το μοντέλο αδρανειακής καθυστέρησης, αν ο παλμός "1" στο σήμα r είχε διάρκεια μικρότερη του 1 ns :
Η τιμή στο q δεν άλλαξε γιατί η αλλαγή στο r δεν διήρκησε αρκετά. Με άλλα λόγια η αλλαγή στο r δεν είχε αρκετή αδράνεια.
Αν και η αδρανειακή καθυστέρηση είναι επιθυμητή, μερικές φορές όλες οι αλλαγές στην είσοδο θα έπρεπε να επιδρούν στην έξοδο. Για παράδειγμα, ένας δίαυλος (bus) υφίσταται μία χρονική καθυστέρηση, αλλά δεν θα "απορροφήσει" (absorb) μικρούς παλμούς σύμφωνα με το μοντέλο αδρανειακής καθυστέρησης. Έτσι η VHDL παρέχει το μοντέλο μεταφοράς καθυστέρησης (transport delay model).
Το μοντέλο μεταφοράς καθυστέρησης απλά καθυστερεί την αλλαγή στην έξοδο κατά τον χρόνο που ορίζεται στην ρήτρα after (after clause). Μπορούμε να διαλέξουμε το μοντέλο μεταφοράς καθυστέρησης αντί του μοντέλου αδρανειακής καθυστέρησης προσθέτοντας την εντολή transport στην δήλωση αποστολής σήματος.
Το SR latch του παραδείγματος θα μπορούσε να τροποποιηθεί έτσι ώστε να χρησιμοποιήσει το transport delay model αντικαθιστώντας την δήλωση σημάτων με τις παρακάτω δύο προτάσεις:
q<= transport r nor nq after 1 ns ;
nq<= transport s nor q after 1 ns;
Αν χρησιμοποιούσαμε το μοντέλο μεταφοράς καθυστέρησης, το αποτέλεσμα της ίδιας εξομοίωσης που δείξαμε στο προηγούμενο διάγραμμα θα ήταν το παρακάτω: