ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο 2011-2012 Διδάσκων: Γιώργος Ζάγγουλος Βοήθημα για το Πρόγραμμα Modelsim-Altera και την χρησιμοποίηση του μέσα από το Quartus για εκτέλεση προσομοίωσης σχεδιασμών στο Quartus II 11.1 Απαραίτητες ρυθμίσεις για χρήση του Modelsim-Altera μέσα από το Quartus II 11.1 Προεργασία Εγκαταστήστε στον υπολογιστή σας τα δύο προγράμματα: Quartus II 11.1 web edition Modelsim-Altera Starter edition SP2 (10.0c) Δημιουργία Πρότζεκτ Δημιουργήστε κάποιο πρότζεκτ (όπως και με το Quartus II 8) και όταν θέλετε να χρησιμοποιήσετε τον προσομοιωτή (simulator) Modelsim-Altera, τότε ακολουθήστε τα επόμενα βήματα τα με τα οποία θα ρυθμίσετε την παράλληλη λειτουργία του προσομοιωτή μέσα από το Quartus II 11.1.
1. Από το menu του Quartus ΙΙ 11.1, επιλέξτε Assignments / Settings (εικόνα 1) Εικόνα 1: Ρυθμίσεις (1) στο Quartus για σύνδεση με το Modelsim-Altera 2. Επιλέξτε στα αριστερά EDA Tool Settings και αλλάξτε τις ρυθμίσεις όπως στην εικόνα 2 Εικόνα 2: Ρυθμίσεις (2) στο Quartus για σύνδεση με το Modelsim-Altera 2
3. Επιλέξτε στα αριστερά Simulation και αλλάξτε τις ρυθμίσεις όπως στην εικόνα 3 Εικόνα 3: Ρυθμίσεις (3) στο Quartus για σύνδεση με το Modelsim-Altera 4. Από το menu του Quartus ΙΙ 11.1, επιλέξτε Tools / Options (εικόνα 4) Εικόνα 4: Ρυθμίσεις (4) στο Quartus για σύνδεση με το Modelsim-Altera 3
5. Επιλέξτε στα αριστερά EDA Tool Options και πατήστε την επιλογή στα δεξιά του Modelsim-Altera (εικόνα 6) για να δηλώσετε το φάκελο path στον οποίο βρίσκονται τα αρχεία εκτέλεσης του προγράμματος Modelsim-Altera. Συνήθως αυτά βρίσκονται απευθείας στο σκληρό δίσκο του Η/Υ και στο path το οποίο φαίνεται στην εικόνα 6 Εικόνα 5: Ρυθμίσεις (5) για τα αρχεία εκτέλεσης του Modelsim-Altera Εικόνα 6: Δήλωση φακέλου με τα αρχεία εκτέλεσης του Modelsim-Altera Μετά από αυτές τις ρυθμίσεις, επιλέξτε compilation (όπως και στο Quartus 8). Εάν σε αυτό το στάδιο δεν εμφανιστούν κάποια λάθη στο σχεδιασμό σας, τότε το Modelsim θα εκκινήσει αυτόματα στον 4
υπολογιστή σας. Εάν δεν επιθυμείτε το αυτόματο άνοιγμα του Modelsim μετά από κάθε compilation, τότε αφαιρέστε την επιλογή Run Gate level simulation automatically after compilation (εικόνα 3). Με την εκκίνηση του Modelsim, θα εμφανιστεί στην οθόνη του υπολογιστή σας το πιο κάτω παράθυρο (εικόνα 7). Για να προχωρήσετε σε προσομοίωση, ανοίξτε την βιβλιοθήκη work, επιλέξτε τον σχεδιασμό σας με δεξί κλικ και στη συνέχεια επιλέξτε simulate. Εικόνα 7: Προσομοίωση σχεδιασμού register_file_test Με την ολοκλήρωση της προσομοίωσης, θα εμφανιστούν κάποια επιπλέον παράθυρα. Από αυτά, βρείτε το παράθυρο με όνομα Objects. Μέσα σε αυτό βρίσκονται τώρα τα σήματα εισόδου και εξόδου του σχεδιασμού σας μαζί με αρκετά εσωτερικά σήματα. Εικόνα 8: Αποτελέσματα αρχικής προσομοίωσης (δημιουργία objects) 5
Επιλέξτε και σύρετε (με drag and drop) τα σήματα εισόδου και εξόδου στο διπλανό παράθυρο κυματομορφών (wave) για απεικόνιση. Για παράδειγμα, στην άσκηση του αρχείου καταχωρητών, θα πρέπει να επιλέξετε τις 7 εισόδους και τις 2 εξόδους όπως φαίνεται στην εικόνα 9. Εικόνα 9: Εισαγωγή σημάτων εισόδου/εξόδου στην κυματομορφή Με δεξί κλικ σε κάποιο σήμα εισόδου, μπορείτε να του δώσετε κάποια τιμή. Για παράδειγμα στο ρολόι μπορείτε να δηλώσετε σήμα clock όπως αυτό φαίνεται στην εικόνα 10. Εικόνα 10: Ανάθεση clock 6
Οι ρυθμίσεις για το ρολόι μπορούν να γίνουν στο επόμενο παράθυρο που θα εμφανιστεί (εικόνα 11) Εικόνα 12: Ρυθμίσεις σήματος clock Ακολουθώντας την ίδια διαδικασία, αλλά επιλέγοντας Force (αντί του clock), μπορείτε να δώσετε συγκεκριμένη τιμή σε κάποιο σήμα (εικόνα 12). Εικόνα 12: Ανάθεση σταθεράς σε κάποιο σήμα εισόδου 7
Στο νέο παράθυρο που φαίνεται στην εικόνα 13, η είσοδος reg_write_enable παίρνει την τιμή 1 (έτσι ώστε ο καταχωρητής να μπορέσει να πάρει την νέα τιμή που θα δοθεί). Εικόνα 13: Τρόπος ανάθεσης σταθερής τιμής 1 στο reg_write_enable Με τη συμπλήρωση των δηλώσεων για κάθε σήμα εισόδου, μπορείτε να τρέξετε την προσομοίωση σας βήμα προς βήμα, επιλέγοντας κάποιο από τα πλήκτρα run στο πάνω μέρος της οθόνης (δεξιά από το χρονικό όριο της προσομοίωσης που στην περίπτωση της εικόνας 14 ισούται με 100 ps). Εικόνα 14: Αρχικά αποτελέσματα προσομοίωσης (για χρόνο 100 ps) Παρατηρώντας τα αποτελέσματα, βλέπουμε ότι το περιεχόμενο του καταχωρητή $r1 = 0000 0100 0000 0000 (όπως αναμενόταν λόγω σχεδιασμού), ενώ του καταχωρητή $r7 = 0000 0000 0000 0000. Λαμβάνοντας υπόψη ότι προσπαθήσαμε να γράψουμε την τιμή 15 (στο δεκαδικό) στον καταχωρητή $r7, τα αποτέλεσμα αυτό ίσως θεωρηθεί λανθασμένο από μερικούς. Προσοχή! Θυμηθείτε ότι για εγγραφή νέας τιμής σε κάποιο καταχωρητή απαιτείται αλλαγή στο ρολόι από 0 σε 1 (θετική ακμοπυροδότηση). Η εγγραφή της τιμής 15 στον καταχωρητή $r7 θα γίνει στη δεύτερη επιλογή του run 8
κατά την οποία εμφανίζεται η απαιτούμενη αλλαγή (από 0 σε 1) στο clock. Το αποτέλεσμα της νέας εγγραφής φαίνεται στην εικόνα 15. Εικόνα 15: Εγγραφή της τιμής 15 10 στον $r7 Τέλος, εάν επιθυμείτε οι τιμές στις εισόδους ή και στα αποτελέσματα να εμφανίζονται σε άλλο σύστημα αρίθμησης, μπορείτε να επιλέξετε ένα-ένα τα σήματα που σας ενδιαφέρουν και να αλλάξετε την επιλογή Radix. Για παράδειγμα με την αλλαγή που φαίνεται στην εικόνα 16, το σήμα write_data θα εμφανίζεται πλέον ως δεκαδικός αριθμός. Εικόνα 16: Αλλαγή του τρόπου εμφάνισης του σήματος write_data από το δυαδικό στο δεκαδικό σύστημα 9