BEHAVIORAL DESCRIPTIONS
2. Χρησιμοποιώντας Μεταβλητές
Υπάρχουν δύο κύρια είδη αντικειμένων για κρατήσουμε δεδομένα (data). Το πρώτο είδος, το οποίο χρησιμοποιείται περισσότερο στην structural και στην data flow descriptions, είναι το σήμα (signal). Το δεύτερο, το οποίο μπορεί να χρησιμοποιηθεί μόνο σε διαδικασίες καλείται μεταβλητή (variable). Μία μεταβλητή συμπεριφέρεται όπως θα περιμέναμε σε μία γλώσσα προγραμματισμού, και έχει συμπεριφορά αρκετά διαφορετική από αυτή ενός σήματος.
Αν και οι μεταβλητές αντιπροσωπεύουν data όπως και το σήμα, δεν έχουν ή δεν προκαλούν γεγονότα (events) και τροποποιούνται διαφορετικά. Οι μεταβλητές τροποποιούνται με τον ορισμό μεταβλητής (variable assignment).
Για παράδειγμα το
a:=b;
στέλνει την τιμή του b στο a. Η τιμή απλά αντιγράφεται στο a αμέσως. Έτσι αφού οι μεταβλητές μπορούν να χρησιμοποιηθούν μόνο σε διαδικασίες και η δήλωση ορισμού (assignment statement) μπορεί να εμφανιστεί μόνο σε κάποια διαδικασία. Ο ορισμός (assignment) εκτελείται όταν εκτελείται η διαδικασία.
Το επόμενο παράδειγμα μας δείχνει πως μία μεταβλητή χρησιμοποιείται σε μία διαδικασία.
count : process (x)
variable cnt : integer := -1 ;
begin
cnt :=cnt+1 ;
end process ;
Η δήλωση των μεταβλητών (variable declaration) γίνεται πριν από την λέξη κλειδί begin στην δήλωση διαδικασίας (process statement) όπως φαίνεται και στο παράδειγμα. Η δήλωση μεταβλητής (variable declaration) είναι ίδια με την δήλωση σήματος (signal declaration) εκτός του ότι χρησιμοποιείται η λέξη κλειδί variable αντί της signal. Η δήλωση περιλαμβάνει και ένα προαιρετικό τμήμα, το οποίο καθορίζει την αρχική τιμή της μεταβλητής όταν αρχίσει η εξομοίωση. Το τμήμα αρχικοποίησης περιλαμβάνεται προσθέτοντας το σύμβολο " := " και μία σταθερή έκφραση μετά το μέρος του τύπου της δήλωσης. Αυτό το τμήμα αρχικοποίησης μπορεί να συμπεριλαμβάνεται και στις δηλώσεις σημάτων (signal declarations). Η μεταβλητή cnt έχει δηλωθεί ότι είναι ακέραιου (integer) τύπου. Ο τύπος integer αναπαριστά θετικές και αρνητικές ακέραιες τιμές.
Η διαδικασία του παραδείγματος περιέχει μία δήλωση (statement), την δήλωση αποστολής (assignment statement). Αυτή η assignment υπολογίζει την τιμή της cnt αυξάνοντάς την κατά 1 και αμέσως αποθηκεύει την νέα τιμή στην μεταβλητή cnt. Έτσι η τιμή της cnt θα αυξάνεται κατά ένα κάθε φορά που θα εκτελείται αυτή η διαδικασία. Πρέπει να θυμόμαστε ότι η διαδικασία εκτελείται μία φορά στην αρχή της εξομοίωσης και μετά εκτελείται κάθε φορά που συμβαίνει κάποιο γεγονός σε οποιοδήποτε από τα σήματα της λίστας ευαισθησίας. Έτσι η τιμή της cnt αρχικοποιείται με -1 και η διαδικασία εκτελείται μία φορά πριν την έναρξη της εξομοίωσης, οπότε όταν αρχίσει η εξομοίωση η τιμή της cnt θα είναι 0. Από την στιγμή που ξεκινάει η εξομοίωση, η cnt θα αυξάνεται κατά 1 κάθε φορά που το σήμα x θα αλλάζει, αφού το x βρίσκεται στην λίστα ευαισθησίας . Αν το x είναι σήμα τύπου bit, τότε αυτή η διαδικασία θα μετρά τον αριθμό των υψώσεων και πτώσεων που συμβαίνουν στο σήμα x.