VHDL - auth



VHDL – Περιεχόμενα

VHDL - Εισαγωγή 2

1. Μοντέλα ψηφιακών συσκευών στα οποία βασίζεται η VHDL 3

1.1 Μοντέλο συμπεριφοράς (behavioral model) 3

1.2 Μοντέλο χρονισμού (timing model) 6

1.3 Μοντέλο δομής (structural model) 7

2. Βασικά στοιχεία της VHDL 10

2.1 Δομή και συμπεριφορά 10

2.2 Δήλωση Οντότητας (Entity Declaration) 13

2.3 Κομμάτι Αρχιτεκτονικής (Architecture Body) 14

2.3.1 Δομικός τρόπος σχεδίασης (Structural Style of Modeling) 14

2.3.2 Συμπεριφoρικός τρόπος σχεδίασης (Behavioral Style of Modeling) 16

2.3.3 Σχεδίαση Διαγράμματος ροής (Dataflow Style of Modeling) 18

2.3.4 Συνδυασμός τρόπων σχεδίασης (Mixed Style of Modeling) 20

2.4 Οργάνωση της σχεδίασης (Design Organization) 21

2.4.1 Βιβλιοθήκες (Libraries) 21

2.4.2 Πακέτα (Packages) 22

2.4.3 Πρόσβαση σε βιβλιοθήκες και πακέτα 22

2.5 Τύποι δεδομένων και αντικείμενα 23

2.5.1 Ονόματα αντικειμένων δεδομένων 24

2.5.2 Χρήση αντικειμένων δεδομένων 24

2.5.2.1 Σταθερές (Constants) 24

2.5.2.2 Μεταβλητές (Variables) 24

2.5.2.3 Σήματα (Signals). 25

2.6 Πράξεις και Τελεστές 27

2.6.1 Λογικές πράξεις (Logical Operations) 27

2.6.2 Σχεσιακές πράξεις (Relational operators) 28

2.6.3 Προτεραιότητα πράξεων 28

VHDL - Εισαγωγή

Η VHDL είναι µια γλώσσα περιγραφής υλικού για την ανάπτυξη ολοκληρωμένων ψηφιακών ηλεκτρονικών κυκλωμάτων και συστηµάτων. Ως λέξη αποτελεί συντόµευση των λέξεων: VHSIC Hardware Description Language. Τα δε αρχικά VHSIC είναι µε τη σειρά τους συντόµευση για Very High-Speed Integrated Circuit (Ολοκληρωµένα Κυκλώµατα Υψηλής Ταχύτητας).

Η VHDL ως γλώσσα προγραµµατισµού µπορεί να χρησιµοποιηθεί για την περιγραφή της συµπεριφοράς, της δοµής αλλά και της εφαρµογής ψηφιακών συστηµάτων. Με βάση αυτά τα χαρακτηριστικά η VHDL χαρακτηρίζεται σαν ένα εργαλείο ECAD (Electronic Computer Aided Design).

Γενικά, σήµερα, η χρήση εργαλείων CAD έχει επεκταθεί καθώς η τεράστια ανάπτυξη της τεχνολογίας ηµιαγωγών στην κατασκευή ολοκληρωµένων κυκλωµάτων έχει µετατοπίσει το κέντρο βάρους των µηχανικών από την λεπτοµερειακή υλοποίηση κυκλωµάτων στην διαχείριση της αυξανόµενης πολυπλοκότητας. Πιο συγκεκριµένα τη σηµερινή εποχή ο µηχανικός-σχεδιαστής, περιορίζεται περισσότερο από την δυνατότητά του να αντεπεξέλθει την πολυπλοκότητα της σχεδίασης του παρά από την ικανότητα της τεχνολογίας να την υποστηρίξει. Αυτό το χάσµα έρχεται να γεφυρώσει η VHDL επιτρέποντας µια υψηλού επιπέδου περιγραφή (Abstract) της σχεδίασης και κατόπιν µε την χρήση εργαλείων σύνθεσης (Logic Synthesis Tools) την αυτόµατη αποτύπωση αυτής της σχεδίασης σε ολοκληρωµένη µορφή η οποία να είναι εντός των προδιαγραφών που θέτει ο µηχανικός.

Η γλώσσα VHDL είναι η πρότυπη βιοµηχανική γλώσσα περιγραφής ψηφιακών κυκλωµάτων. Μια πρώτη έκδοση του προτύπου αυτού έγινε γνωστή το 1987 µε το όνοµα IEEE11076, ενώ αργότερα το 1993 εµφανίστηκε µια βελτιωµένη έκδοσή της µε το όνοµα IEEE1164. Θα πρέπει να σηµειώσουµε επίσης ότι η γλώσσα αυτή έχει κληρονοµήσει πολλά στοιχεία από τη γλώσσα προγραµµατισµού ADA.

1. Μοντέλα ψηφιακών συσκευών στα οποία βασίζεται η VHDL

Η VHDL είναι μία γλώσσα περιγραφής υλικού χωρίς να κάνει υποθέσεις για την τεχνολογία ή για την μεθοδολογία που ακολουθείται κατά τον σχεδιασμό μιας ψηφιακής συσκευής. Αντί αυτού χρησιμοποιεί ένα μοντέλο περιγραφής και σχεδίασης που περιέχει τα χαρακτηριστικά συμπεριφοράς, χρονισμού και δομής των ψηφιακών συσκευών. Αυτό το μοντέλο είναι κατάλληλο για την περιγραφή όλων των συσκευών από αυτές υψηλού επιπέδου μέχρι και περιγραφές σε επίπεδο πυλών.

Το γενικό μοντέλο λοιπόν στο οποίο βασίζεται η VHDL αποτελείται από τρία ανεξάρτητα αλληλοεξαρτώμενα μοντέλα : ένα μοντέλο συμπεριφοράς (behavioral model), ένα μοντέλο χρονισμού (timing model) και ένα μοντέλο δομής (structural model). Αυτά τα τρία μοντέλα ολοκληρώνονται σε μία μόνο γλώσσα.

1.1 Μοντέλο συμπεριφοράς (behavioral model)

Η συμπεριφορά μπορεί να οριστεί ως η λειτουργική μετάφραση ενός συγκεκριμένου συστήματος. Όλα τα μοντέλα έχουν μία δομή και μία συμπεριφορά. Στην VHDL η δομή ενσωματώνεται στην γλώσσα και ο σχεδιαστής έχει τη δυνατότητα να μπλέξει τη δομή και τη συμπεριφορά οπουδήποτε μέσα στο μοντέλο.

Είσοδος Έξοδος

Διακριτό Σύστημα

Σχήμα 1 : Αναπαράσταση ενός διακριτού συστήματος

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

[pic]

Σχήμα 2 : Αναπαράσταση ενός διακριτού συστήματος P με δύο εισόδους και μία έξοδο

Σαν παράδειγμα μπορούμε να θεωρήσουμε ένα διακριτό σύστημα Ρ του οποίο η συμπεριφορά είναι η λογική συνάρτηση XOR. Το συγκεκριμένο σύστημα θα έχει δύο διακριτές τιμές εισόδου και μία διακριτή τιμή εξόδου. Τα διακριτά συστήματα μπορούν να ποικίλουν από τα πολύ απλά ως τα πολύ σύνθετα. Στην VHDL όλες οι λειτουργίες ενός διακριτού συστήματος περιγράφονται με έναν αφαιρετικό μηχανισμό. Αυτή η αφαίρεση ωστόσο δεν συνεπάγονται πολυπλοκότητα.

Όπως προαναφέρθηκε ένα διακριτό συστήματα είναι μία συλλογή λειτουργιών που εφαρμόζονται σε τιμές που περνάνε μέσα από το σύστημα. Στην VHDL αναφερόμαστε σε κάθε τέτοια εργασία ως διεργασία (process) και τα μονοπάτια από τα οποία οι τιμές περνάνε μέσα από το σύστημα ονομάζονται σήματα (signals). Στην VHDL όλες οι διεργασίες σε ένα μοντέλο λέμε ότι εκτελούνται ταυτόχρονα. Έτσι, μπορούμε να πούμε ότι το μοντέλο της VHDL είναι μία συλλογή από ανεξάρτητα προγράμματα που τρέχουν παράλληλα. Για τον συντονισμό αυτών των διεργασιών χρειάζεται ένας μηχανισμός και αυτός ο μηχανισμός είναι το σήμα. Συγκεκριμένα τα σήματα ορίζουν ένα μονοπάτι δεδομένων (data pathway) μεταξύ δύο διεργασιών. Αυτό το μονοπάτι δεδομένων είναι κατευθυνόμενο (directed), η μία πλευρά δημιουργεί μία τιμή και η άλλη λαμβάνει την τιμή αυτή. Γενικότερα, τα μονοπάτια δεδομένων έχουν κάποια ειδικά χαρακτηριστικά όπως ο τύπος που συνδέεται με το μονοπάτι και ορίζει τη διακύμανση των τιμών που μπορούν να περάσουν από αυτό. Για παράδειγμα αν ο τύπος είναι ακέραιος δεν μπορεί να περάσει τιμή πραγματικού αριθμού ή οποιαδήποτε άλλη τιμή εκτός από ακέραιος. Όλη η επικοινωνία μεταξύ των διεργασιών γίνεται μέσω αυτών των μονοπατιών.

Οι διεργασίες εκτελούνται μέχρι να τεθούν σε διαθεσιμότητα (suspended). Όταν μία διεργασία τεθεί σε διαθεσιμότητα μπορεί να ενεργοποιηθεί ξανά. Ένας τρόπος γι’ αυτήν την ενεργοποίηση είναι να ανατίθεται στην διεργασία μία μέγιστη χρονική διάρκεια για την οποία πρέπει να μείνει σε διαθεσιμότητα. Μετά το τέλος αυτής της χρονικής διάρκειας η διεργασία ενεργοποιείται. Ένας άλλος τρόπος ενεργοποίησης είναι όταν κάποιες δεδομένες συνθήκες ικανοποιούνται. Έτσι ο σχεδιαστής του συστήματος μπορεί να καθορίσει την ενεργοποίηση μιας διαδικασίας όταν συμβούν αλλαγές στο σύστημα. Με άλλα λόγια μπορεί να εκφραστεί η ευαισθησία μιας διαδικασίας στην τιμή ορισμένων μονοπατιών δεδομένων. Αυτά τα μονοπάτια αποκαλούνται κανάλια ευαισθησίας (sensitivity channels). Όταν η τιμή ενός καναλιού ευαισθησίας αλλάζει τότε μία διεργασία επανεργοποιείται. Χρησιμοποιείται μία δήλωση αναμονής (wait statement) για να καθορίσει οποιεσδήποτε συνθήκες χρονικής αναμονής και κανάλια ευαισθησίας για μία διεργασία.

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

[pic]

Σχήμα 3 : Το διακριτό σύστημα P με τα Μονοπάτια Δεδομένων και τις Διεργασίες

Το διακριτό σύστημα που χρησιμοποιείται για να μοντελοποιηθεί μία ψηφιακή συσκευή περιλαμβάνεται μέσα σε μία σχεδιαστική οντότητα (design entity). Μία τέτοια οντότητα έχει δύο μέρη : μία δήλωση οντότητας και ένα σώμα αρχιτεκτονικής (architectural body) τα οποία θα δούμε αναλυτικότερα στη συνέχεια..

Σε πολλά συστήματα είναι δυνατόν να αποσυντεθεί η συμπεριφορά σε ένα σύνολο ενεργειών. Έτσι το διακριτό σύστημα P που είδαμε μπορεί να αναλυθεί σε ένα σύστημα Q με τρεις λειτουργίες όπως φαίνεται στο σχήμα 4

[pic]

Σχήμα 4 : Αναπαράσταση του διακριτού συστήματος Q

1.2 Μοντέλο χρονισμού (timing model)

Το μοντέλο των ψηφιακών συσκευών που χρησιμοποιείται εδώ βασίζεται στα ερεθίσματα. Όταν υπάρχει ένα ερέθισμα το μοντέλο ανταποκρίνεται και έπειτα περιμένει για περισσότερα ερεθίσματα. Τα ερεθίσματα συμβαίνουν σε συγκεκριμένες χρονικές στιγμές. Αυτός ο χρόνος αναφέρεται στον χρόνο προσομοίωσης. Επειδή η VHDL είναι παράλληλη αλλά έχει σχεδιαστεί για να εκτελείται και σε μη-παράλληλα συστήματα, καθίσταται απαραίτητο να καθοριστεί ο χρόνος προσομοίωσης ο οποίος με τη σειρά του καθορίζει το πότε συμβαίνει κάποιο γεγονός κατά τη διάρκεια της προσομοίωσης. Αν δεν υπήρχε αυτός ο χρονικός καθορισμός ένα μοντέλο μπορεί να προσομοιώνονταν διαφορετικά σε δύο διαφορετικούς προσομοιωτές VHDL.

Όταν λοιπόν μία διεργασία δημιουργεί μία τιμή σε ένα μονοπάτι δεδομένων μπορεί επίσης να προσδιορίζει ένα χρονικό διάστημα πριν να σταλεί η τιμή στο μονοπάτι αυτό. Αυτό αναφέρεται ως προγραμματισμός μιας συναλλαγής (scheduling a transaction) Είναι δυνατόν να προγραμματιστεί οποιοσδήποτε αριθμός συναλλαγών για ένα μονοπάτι δεδομένων. Η συλλογή αυτών των συναλλαγών για ένα σήμα αποκαλείται οδηγός του σήματος (driver of the signal). Ο οδηγός είναι ένα σύνολο από ζευγάρια χρόνων/τιμών το οποίο κρατά την τιμή κάθε συναλλαγής και τον χρόνο στον οποίο η συναλλαγή πρέπει να συμβεί.

Η VHDL έχει ένα μοντέλο χρονισμού δύο επιπέδων. Αυτό το μοντέλο αποκαλείται κύκλος προσομοίωσης και ακολουθείται το γενικότερο πλαίσιο των ερεθισμάτων. Για παράδειγμα ένα λειτουργικό κομμάτι αντιδρά (reacts) όταν υπάρχει δραστηριοποίηση στις εισόδους του τότε ανταποκρίνεται (responds) μέσω των εξόδων του. Οι διεργασίες λοιπόν είναι τα λειτουργικά κομμάτια που συνδέονται με τα σήματα.

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

Στο μοντέλο χρονισμού υπάρχει πάντα μία καθυστέρηση μεταξύ της χρονικής στιγμής που μία διεργασία τοποθετεί μία τιμή σε ένα μονοπάτι δεδομένων και της χρονικής στιγμής που το μονοπάτι δεδομένων αντιδρά σε αυτήν την τιμή. Συγκεκριμένα αν δεν δοθεί καμία τιμή στη ανάθεση μιας τιμής σε ένα μονοπάτι δεδομένων τότε χρησιμοποιείται μία δέλτα καθυστέρηση (delta delay).Έτσι υπάρχει πάντα μία καθυστέρηση μεταξύ της ανάθεσης και της ανανέωσης της τιμής ενός σήματος. Αν η νέα τιμή του σήματος διαφέρει από την προηγούμενη στο μονοπάτι δεδομένων τότε λέμε ότι έχει συμβεί ένα γεγονός.

1.3 Μοντέλο δομής (structural model)

Όταν ένα μοντέλο μιας ψηφιακής συσκευής απαιτεί περισσότερες από μερικές διαδικασίες η διαχείριση της αναπαράστασης του διακριτού συστήματος γίνεται πολύ δύσκολη. Τέτοια μοντέλα συχνά αποσυντίθενται σε ενότητες που είναι λειτουργικά όμοιες. Αυτή η αποσύνθεση αποκαλείται δομή του μοντέλου.

Έτσι ένα διακριτό σύστημα μπορεί να διαιρεθεί σε υποσυστήματα. Η διασύνδεση δύο υποσυστημάτων είναι στην πραγματικότητα ένα μονοπάτι δεδομένων από το ένα στο άλλο δίνοντας τη δυνατότητα με αυτόν τον τρόπο για την επίτευξη επικοινωνίας μεταξύ τους. Αυτές οι διασυνδέσεις αποκαλούνται θύρες (ports) και έχουν κάποια ειδικά χαρακτηριστικά. Καταρχήν ο ορισμός μιας θύρας αντιπροσωπεύει τη δήλωση ενός σήματος (signal) και επομένως ενός μονοπατιού δεδομένων (data pathway). Μπορούμε να σκεφτούμε αυτά τα μονοπάτια σαν έναν σωλήνα που συνδέει δύο διεργασίες. Αυτές οι συνδεόμενες λειτουργικές μονάδες μπορούν να θεωρηθούν “μαύρα κουτιά” που έχουν εισόδους και εξόδους. Στο μοντέλο της VHDL για ένα διακριτό σύστημα καθένα από αυτά τα κουτιά μπορεί να αναπαρασταθεί από μία σχεδιαστική οντότητα της VHDL.

[pic]

Σχήμα 6 : Αποσύνθεση του διακριτού συστήματος Q σε δύο υποσυστήματα

Υπάρχουν πολλοί τρόποι με τους οποίους το μοντέλο δομής αλληλεπιδρά με το μοντέλο συμπεριφοράς. Πρώτα απ’ όλα είναι δυνατόν να παρεμβάλλεται μία συνάρτηση μετατροπής τύπου στο μονοπάτι δεδομένων. Αυτό είναι πού σημαντικό για την περίπτωση που δύο διεργασίες πρέπει να επικοινωνήσουν αλλά τα διακριτά συστήματα στα οποία ανήκουν δεν έχουν τα ίδια χαρακτηριστικά. Μπορούμε να σκεφτούμε το παράδειγμα όπου έχουμε από την μία πλευρά ακέραιους και από την άλλη πραγματικούς αριθμούς.

Ένας άλλος σημαντικός τρόπος με τον οποίο η δομή και η συμπεριφορά αλληλεπιδρούν είναι με την ανάλυση των αναλυμένων σημάτων (resolved signals). Αν περισσότεροι από ένας οδηγοί έχουν οριστεί για ένα σήμα (δηλαδή αν περισσότερες από μία διεργασίες θέτουν τιμή στο σήμα) τότε το σήμα είναι ένα αναλυμένο σήμα (resolved signal). Ο σχεδιαστής πρέπει να αναθέσει μία συνάρτηση με αυτό το σήμα έτσι ώστε να λαμβάνονται οι διαφορετικές τιμές και να παράγεται στο τέλος μία μοναδική τιμή. Σε μερικές περιπτώσεις μπορούμε να αποσυνδέσουμε (disconnect) τον οδηγό ενός αναλυτικού σήματος, δηλαδή να. κλείσει (turn off) τον οδηγό. Όταν ο οδηγός κλείσει, δεν περνάει στην αναλυτική συνάρτηση και επομένως δεν παίρνει μέρος στον καθορισμό της τελικής τιμής. Υπάρχουν δύο τύποι αναλυτικών σημάτων : οι καταχωρητές (registers) και οι δίαυλοι (busses). Ένα σήμα καταχωρητή (register signal) δεν αναλύεται αν όλοι οι οδηγοί του κλείσουν, ενώ ένα σήμα διαύλου αναλύεται όταν όλοι οι οδηγοί του είναι κλειστοί. Αυτό σημαίνει ότι η αναλυτική συνάρτηση για ένα σήμα διαύλου πρέπει να διαχειρίζεται την ανάλυση μιας άδειας λίστας τιμών.

[pic]

Σχήμα 7 : Ανάλυση Σημάτων σε μία Δομημένη Ιεραρχία

Όταν μία θύρα αναλύεται τότε η αναλυτική τιμή καθορίζεται πριν περάσει έξω από το υποσύστημα που περιέχει την θύρα. Τα αναλυτικά σήματα έχουν πολύ σημαντικές επιδράσεις για τις θύρες σε ένα μοντέλο. Γιατί αν η τιμή αναλυθεί καθώς περάσει από μία σειρά θυρών, τότε η τελική τιμή θα είναι αυτή που θα καθοριστεί από την πρώτη θύρα.

Γενικότερα το ψηφιακό κύκλωμα που περιγράφει η VHDL μπορεί να είναι από μία απλή λογική πύλη έως ένα ολοκληρωμένο ψηφιακό σύστημα. Στην VHDL το ψηφιακό κύκλωμα αναφέρεται ως οντότητα (entity). Όταν όμως μία οντότητα Χ εμπεριέχεται μέσα σ’ μία οντότητα Υ τότε αυτή ονομάζεται στοιχείο (component).

[pic]

Σχήμα 8 : Παράδειγμα δομής στην VHDL με τις οντότητες και τα στοιχεία

Το παραπάνω σχήμα θα το χρησιμοποιήσουμε ως σημείο αναφοράς για την ανάλυση των βασικών στοιχείων της VHDL. Στην επόμενη ενότητα θα δούμε πως περιγράφουμε μία οντότητα και τα στοιχεία της. Παρατηρούμε στο σχήμα κάτι επίσης πολύ σημαντικό για την συνέχεια, ότι κάθε οντότητα ή στοιχείο αποτελείται από την δήλωση της οντότητας (entity declaration) και το κομμάτι της αρχιτεκτονικής της οντότητας (architecture body).

2. Βασικά στοιχεία της VHDL

Σε αυτήν την ενότητα θα δούμε τα βασικά στοιχεία της VHDL

2.1 Δομή και συμπεριφορά

Δύο από τις πιο βασικές ερωτήσεις που μπορούμε να κάνουμε κατά τη σχεδίαση μιας συσκευής είναι το πώς συμπεριφέρεται και από τι αποτελείται. Αυτά είναι τα δύο ερωτήματα που καθορίζουν τις βασικές συνιστώσες της περιγραφής μιας ψηφιακής ηλεκτρονικής συσκευής που είναι η συμπεριφορά (behavior) και η δομή (structure).

Τα βασικά στοιχεία της συμπεριφοράς είναι ο μετασχηματισμός των δεδομένων (data transformation) και ο χρονισμός (timing). Τα βασικά στοιχεία της δομής είναι το συστατικό (component), η θύρα (port) και το σήμα (signal).

Στην VHDL κάθε συστατικό της ψηφιακής συσκευής αντιπροσωπεύεται με μία σχεδιαστική οντότητα (design entity). Αυτή αποτελείται από τον ορισμό (δήλωση) της οντότητας (entity declaration) και το κομμάτι της αρχιτεκτονικής (architectural body). Για παράδειγμα αν βλέπαμε την περίπτωση ενός half-adder με δύο εισόδους και δύο εξόδους θα είχαμε την παρακάτω δήλωση της οντότητας :

-- The entity declararion

entity Half_adder is

port (

X : in Bit ;

Y : in Bit ;

Sum : out Bit ;

Carry : out Bit) ;

end Half_adder;

Αντίστοιχα το κομμάτι της αρχιτεκτονικής θα είναι :

-- The architecture body

architecture Behavioral_description of Half_adder is

begin

process

Sum B,

Sum => Temp_Sum, Carry => Temp_carry_1) ;

U1: Half_adder

port map (

X => Temp_sum, Y => Carry_in,

Sum => AB, Carry => Temp_carry_2) ;

U2: Or_gate

port map (

In1 => Temp_carry_1, In2 => Temp_carry_2,

Out1 => Carry_out) ;

end Structure ;

[pic]

Σχήμα 11 : Full_adder – Architecture Body

2.2 Δήλωση Οντότητας (Entity Declaration)

Θα αναλύσουμε λίγο περισσότερο την δήλωση της οντότητας με ένα ακόμα παράδειγμα. Η δήλωση της οντότητας (entity declaration) είναι το κομμάτι του κώδικα το οποίο δηλώνει το όνομα του συγκεκριμένου κυκλώματος και επίσης παραθέτει και μια λίστα με τις θύρες (ports) του κυκλώματος. Θυμίζουμε ότι με τον όρο θύρες, εννοούμε τα σήματα μέσω των οποίων το συγκεκριμένο entity επικοινωνεί με το εξωτερικό περιβάλλον (είσοδοι, έξοδοι, κ.ά.)

Η δήλωση για το σχήμα της επόμενης σελίδας γίνεται ως εξής :

entity DECODER2x4 is

Port (A, B, ENABLE: in bit; Z: out BIT_VECTOR(0 to 3));

end DECODER2x4;

[pic]

Σχήμα 12 : Κύκλωμα 2 σε 4 decoder

To παραπάνω entity έχει τρία ports εισόδου (Α, Β, ENABLE) και τέσσερα ports εξόδου (Z(0), Z(l), Z(2), Z(3)). To port Ζ είναι τύπου bit_vector, δηλαδή ένας μονοδιάστατος πίνακας από bits (bus) του οποίου το μέγεθος δηλώνεται από τον χρήστη. Στην προκειμένη περίπτωση το μέγεθος του είναι 4 (0 to 3) ή αλλιώς (3 downto 0). Με αυτό το παράδειγμα θα δουλέψουμε και στην επόμενη ενότητα.

2.3 Κομμάτι Αρχιτεκτονικής (Architecture Body)

Από το παραπάνω παράδειγμα είναι φανερό ότι το κομμάτι entity declaration δεν αναφέρει τίποτα για το εσωτερικό του entity. Απλά δηλώνει το όνομα αλλά και τα interface ports. Οι εσωτερικές λεπτομέρειες του entity (δηλ. του κυκλώματος) δηλώνονται στον κύριο κορμό της σχεδίασης που είναι το κομμάτι της αρχιτεκτονικής (architecture body) με έναν από τους κάτωθι τρόπους σχεδίασης:

• Ως ένας συνδυασμός αλληλοσυνδεόμενων στοιχείων (components). Structural Style of Modeling (Δομικός τρόπος σχεδίασης).

• Ως ένας συνδυασμός “παράλληλων” δηλώσεων και αναθέσεων. Dataflow Style of Modeling (Σχεδίαση Διαγράμματος ροής).

• Ως ένας συνδυασμός “σειριακών” δηλώσεων και αναθέσεων. Behavioral Style of Modeling (Συμπεριφερικός τρόπος σχεδίασης).

• Ως ένας συνδυασμός των παραπάνω.

2.3.1 Δομικός τρόπος σχεδίασης (Structural Style of Modeling)

Ο δομικός τρόπος σχεδίασης περιγράφει το κύκλωμα κυρίως με βάση το στοιχεία (components) που το απαρτίζουν. Αυτά μπορεί να είναι στοιχεία από διάφορες βιβλιοθήκες ή και από τον ίδιο το χρήστη από μία άλλη σχεδίαση του. Το αν ο σχεδιαστής θα χρησιμοποιήσει στοιχεία από “έτοιμες” βιβλιοθήκες ή θα προτιμήσει δικής του κατασκευής στοιχεία (generic/user-defined components) είναι ένα σημαντικό θέμα το οποίο επιλύεται με βάση την εμπειρία του αλλά και με βάση τις απαιτήσεις της σχεδίασης του. To Architecture body, στο δομικό τρόπο σχεδίασης, ορίζει ποια components εμπεριέχονται στη συγκεκριμένη σχεδίαση καθώς και το πώς ενώνονται μεταξύ τους. Τα κύρια στοιχεία της VHDL που χρησιμοποιούνται σε αυτό τον τρόπο σχεδίασης είναι:

• Component declaration and instantiation (Δήλωση στοιχείων)

• Port mapping and signal interface lists (Αναφορά στον τρόπο σύνδεσης του κάθε στοιχείου της σχεδίασης με τα υπόλοιπα. Δηλαδή η έξοδος του στοιχείου σε ποια είσοδο άλλου στοιχείου πηγαίνει και με τη χρήση ποιου σήματος)

• Libraries and packages (βιβλιοθήκες και πακέτα)

• Signals (for interconnections)

Λεπτομερής ανάλυση των όσων προαναφέρονται θα ακολουθήσει αργότερα. Με βάση το παράδειγμα του 2-σε-4 decoder ας δούμε μία εφαρμογή του architecture body (structural) του entity DECODER2x4.

architecture DEC_STRUCT of DECODER2x4 is

component INV

port(PIN: in BIT; POUT: out BIT);

end component;

component NAND3

port(DO, Dl, D2: in BIT; DZ: out BIT);

end component;

signal ABAR,BBAR: BIT;

begin

V0: INV port map (A, ABAR);

V1: INV port map (A, BΒAR);

N0: NAND3 port map (ENABLE, ABAR, BΒAR, Z(0));

Nl: NAND3 port map (ABAR, B, ENABLE, Z(l));

N2: NAND3 port map (A, BΒAR, ENABLE, Z(2));

N3: NAND3 port map (A, B, ENABLE, Z(3));

end DEC_STRUCT;

Σε αυτό το παράδειγμα το όνομα του architecture body είναι DEC_STRUCT. To entity DECODER2x4 ορίζει τις εισόδους και τις εξόδους γι' αυτό το architecture body. To architecture body χωρίζεται σε δύο μέρη: το κομμάτι των ορισμών (declarative part) πριν τη λέξη-κλειδί begin και το κομμάτι των δηλώσεων (statement part) μετά τη λέξη-κλειδί begin. Στο κομμάτι των ορισμών υπάρχει ο ορισμός δύο στοιχείων (components), της πύλης not (INV) και της πύλης nand 3-εισόδων (NAND3). Αυτοί οι ορισμοί δείχνουν ουσιαστικά τις εισόδους και τις εξόδους κάθε στοιχείου. Τα στοιχεία αυτά μπορεί να είναι στοιχεία βιβλιοθηκών ή στοιχεία δημιουργημένα από τον σχεδιαστή. Επίσης στο κομμάτι των ορισμών υπάρχει και ο ορισμός δύο σημάτων (signals) του ABAR και του BBAR. Αυτά τα δύο σήματα είναι κατ' ουσία δύο σύρματα τα οποία χρησιμοποιούνται για την ένωση των στοιχείων για τη δημιουργία του 2-σε-4 decoder. Η εμβέλεια αυτών των σημάτων βρίσκεται μόνο μέσα στο architecture body και κατά συνέπεια δεν είναι ορατά έξω απ' αυτό. Σε αντίθεση με τα ports του entity τα οποία είναι ορατά σε όλα τα μέρη του κώδικα.

Τα ορισμένα στοιχεία κατόπιν “αποτυπώνονται” στο κομμάτι των δηλώσεων (instantiated). Οι ταυτότητες (labels) αυτών των αποτυπώσεων στην συγκεκριμένη περίπτωση είναι οι V0, V1, N0, Ν1, Ν2, Ν3. Η ταυτότητα V0 (μιας πύλης NOT) αν κοιτάξει κανείς τον κώδικα, δείχνει ότι δέχεται, το συγκεκριμένο στοιχείο, ως είσοδο μια είσοδο της σχεδίασης (την Α) και έχει ως έξοδο το σήμα ABAR. Ένα σύρμα δηλαδή που αργότερα πηγαίνει ως είσοδο σε δύο πύλες NAND3 και ειδικότερα στα στοιχεία Ν2 και Ν3. Το ίδιο συμβαίνει και με τα υπόλοιπα στοιχεία. Η αποτύπωση (instantiation) γενικά είναι μια παράλληλη δήλωση. Γι' αυτό το λόγο δεν παίζει ρόλο η σειρά των δηλώσεων. Ο δομικός τρόπος σχεδίασης γενικά δείχνει απλά το πώς συνδέονται το διάφορα στοιχεία μεταξύ τους. Τα στοιχεία με αυτόν τον τρόπο σχεδίασης αποτελούν “μαύρα κουτιά”, δηλ. δεν γίνεται καμία αναφορά για τη συμπεριφορά ή τη λειτουργία τους. Γι' αυτό το λόγο αλλά και για άλλους, ο δομικός τρόπος σχεδίασης χρησιμοποιείται συχνά στο υψηλότερο επίπεδο σχεδίασης έτσι ώστε να γίνεται ένας διαυγής καθορισμός των επιμέρους στοιχείων της τελικής σχεδίασης αλλά και για να έχει η σχεδίαση μια καθαρά ιεραρχική δομή.

2.3.2 Συμπεριφoρικός τρόπος σχεδίασης (Behavioral Style of Modeling)

Ο συμπεριφoρικός τρόπος σχεδίασης (behavioral style of modeling) εμπεριέχει “παράλληλες” δηλώσεις με κομμάτια σειριακών δηλώσεων οι οποίες περιγράφουν τις εξόδους του κυκλώματος σε συγκεκριμένες χρονικές στιγμές και με συγκεκριμένες εισόδους. Από όλους τους τρόπους σχεδίασης μόνο ο συμπεριφερικός τρόπος χρησιμοποιεί άμεσα τις έννοιες του χρόνου και του ελέγχου. Αυτός ο τρόπος γενικά, περιγράφει τις λειτουργίες του κυκλώματος σε αλγοριθμικό επίπεδο. Τα κύρια στοιχεία της VHDL που χρησιμοποιούνται σε αυτό τον τρόπο σχεδίασης είναι:

• Process statements and sensitivity list

• Sequential statements (σειριακές δηλώσεις)

• Variables (μεταβλητές)

Επανερχόμενοι στο θέμα των δηλώσεων, ο συμπεριφερικός τρόπος σχεδίασης περιγράφει τη συμπεριφορά ενός entity με ένα αριθμό δηλώσεων οι οποίες εκτελούνται σειριακά, δηλ. σύμφωνα με τη σειρά που αυτές έχουν. Αυτό το σετ δηλώσεων οι οποίες βρίσκονται μέσα σε ένα process (διαδικασία) δεν αναφέρονται στη δομή του κυκλώματος-entity αλλά μόνο στη λειτουργικότητα του. Από την άλλη, ένα process εξωτερικά είναι μια παράλληλη δήλωση και εκτελείται παράλληλα (δηλ. άσχετα με τη θέση του σε σχέση με άλλες παράλληλες δηλώσεις ή άλλα process). Με βάση το παράδειγμα του 2-σε-4 decoder ας δούμε μία εφαρμογή του architecture body (behavioral) του entity DECODER2x4.

architecture DEC_SEQUENTIAL of DECODER2x4 is begin

process (A, B, ENABLE)

variable ABAR, BΒAR: BIT;

begin

ABAR:= not A; - statement 1

BBAR:= not Β; - statement 2

if ENABLE = “1” then - statement 3

Z(3) ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download