BEHAVIORAL DESCRIPTIONS
5. Έξοδος Προγράμματος (Program Output)
Στις περισσότερες γλώσσες προγραμματισμού υπάρχει ένας μηχανισμός για την εκτύπωση κειμένου στην οθόνη και για την λήψη δεδομένων εισόδου από τον χρήστη μέσω του πληκτρολογίου. Ακόμη και έτσι ο εξομοιωτής σας θα σας αφήσει να εμφανίσετε τις τιμές των σημάτων και των μεταβλητών στην σχεδίασή σας, καλό είναι επίσης να έχουμε την δυνατότητα να παίρνουμε στην έξοδο κάποιες συγκεκριμένες πληροφορίες κατά την διάρκεια της εξομοίωσης. Η VHDL δεν το παρέχει αυτό σαν ένα χαρακτηριστικό της γλώσσας, αλλά μάλλον σαν μία στάνταρ βιβλιοθήκη που έρχεται μαζί με κάθε VHDL language system. Στην VHDL ο κοινός κώδικας μπορεί να τοποθετηθεί σε ένα ξεχωριστό αρχείο και να χρησιμοποιηθεί σε πολλές σχεδιάσεις. Αυτός ο κοινός κώδικας καλείται βιβλιοθήκη (library). Για να κάνουμε χρήση της βιβλιοθήκης που μας παρέχει δυνατότητες εισόδου και εξόδου πρέπει να προσθέσουμε την δήλωση
use textio.all ;
αμέσως πριν από κάθε architecture που χρησιμοποιεί είσοδο και έξοδο. Το όνομα της βιβλιοθήκης είναι textio και αυτή η δήλωση μας δείχνει ότι τα πάντα από την βιβλιοθήκη textio.
Αφού το κάνουμε αυτό μπορούμε να χρησιμοποιήσουμε τα χαρακτηριστικά που αναφέραμε πιο πάνω.
Το κείμενο είναι είσοδος ή έξοδος χρησιμοποιώντας την textio μέσω μίας μεταβλητής τύπου line. Από την που μεταβλητές χρησιμοποιούνται για την textio, είσοδος και έξοδος γίνεται σε διαδικασίες. Η διαδικασία για την έξοδο πληροφοριών είναι να τοποθετήσουμε πρώτα αυτές σε μία φόρμα κειμένου (text form) μέσα σε μία μεταβλητή τύπου line και μετά να απαιτήσουμε να γίνει έξοδος η γραμμή. Αυτό φαίνεται στο παρακάτω παράδειγμα:
use textio.all ;
architecture behavior of check is
begin
process (x)
variable s : line ;
variable cnt : integer := 0 ;
begin
if (x=’1’ and x’last_value=’0’) then
cnt := cnt + 1 ;
if (cnt > max_count) then
write (s, “Counter overflow – “) ;
write (s,cnt) ;
writeline (output,s) ;
end if ;
end if ;
end process ;
end behavior ;
Η λειτουργία (function) write χρησιμοποιείται για να επισυνάψει πληροφορίες κειμένου στο τέλος μιας μεταβλητής line η οποία είναι άδεια όταν ο εξομοιωτής αρχικοποιείται. Η function παίρνει δύο ορίσματα (arguments). Το πρώτο είναι το όνομα της line και το δεύτερο έιναι οι πληροφορίες που θα επισυναπτούν. Στο παράδειγμα, το s τοποθετείται στο “Counter overflow – “ και τότε η τρέχουσα τιμή της cnt μετατρέπεται σε κείμενο και προστίθεται στο τέλος αυτού. Η function writeline εμφανίζει στο μόνιτορ την τρέχουσα τιμή μιας γραμμής (line) και αδειάζει την γραμμή (line) για επαναχρησιμοποίηση. Το πρώτο όρισμα (argument) της writeline απλώς δείχνει ότι το κείμενο πρέπει να βγει στην οθόνη. Αν η max_count ήταν μία σταθερά ίση με 15 και περισσότεροι από 15 παλμοί γίνουν στο σήμα x, τότε το μήνυμα
Counter overflow – 16
θα τυπωθεί στην οθόνη.
Η δήλωση write μπορεί να χρησιμοποιηθεί και για την επισύναψη τιμών μεταβλητών, σταθερών και σημάτων τύπου bit, bit_vector, time, integer και real.