Πρόλογος...13 I ΣΧΕ ΙΑΣΜΟΣ ΣΕ ΕΠΙΠΕ Ο ΚΥΚΛΩΜΑΤΟΣ Εισαγωγή... 19

Σχετικά έγγραφα
Κυκλωμάτων» Χειμερινό εξάμηνο

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Τύποι Δεδομένων και Τελεστές

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Γενικά χαρακτηριστικά, σύνταξη και τύποι. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 1 -

Library, package και subprograms

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Πακέτα και Συστατικά Στοιχεία (Υποκυκλώματα)

Προσοµοίωση Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL)

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Βασικές εντολές και η περιγραφή συνδυαστικών κυκλωµάτων. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 2 -

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συντρέχων Κώδικας

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 Συµπληρωµατική ΔΙΑΛΕΞΗ 14: Περιγραφή Ακολουθιακών Κυκλωµάτων στη VHDL

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers)

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

VHDL Εισαγωγικές έννοιες

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ

Σχεδίαση Ψηφιακών Συστημάτων

Εισαγωγή στη γλώσσα VHDL

ΠΑΡΑΡΤΗΜΑ Β. Verification

Ακολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches)

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Καταχωρητές και χρονισμός με ρολόι

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Προχωρημένα Θέματα Σχεδιασμού με VHDL

Structural VHDL. Structural VHDL

Εισαγωγή στη Γλώσσα VHDL

Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Δομική περιγραφή και περιγραφή Μηχανών Πεπερασμένων Καταστάσεων

Σχεδίαση Ψηφιακών Συστημάτων

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Σχεδίαση Ψηφιακών Συστημάτων

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2.

Μοντελοποίηση Επιπέδου Πύλης. (Peter Ashenden, The Students Guide to VHDL)

Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ.

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

Εισαγωγή στη VHDL Υλοποίηση στο Quartus


Πανεπιστήμιο Πατρών. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών. Εργαστήριο Σχεδίασης Ολοκληρωμένων Κυκλωμάτων


Οι Βιβλιοθήκες IEEE και παραδείγµατα functions

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Περιεχόµενα. Πρόλογος Εισαγωγή 21

Ενσωματωμένα Συστήματα

Ελίνα Μακρή

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009

(Peter Ashenden, The Students Guide to VHDL)

Introduction to IP Cores

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

inputs outputs Σχήμα 3.1: Σχηματική παράσταση της λειτουργίας του testbench

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Οντότητες και συντρέχουσες δηλώσεις

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

Σχεδίαση κυκλωμάτων με VHDL: 1o μέρος

a = 10; a = k; int a,b,c; a = b = c = 10;

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

VHDL. ΗΜΥ-210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Απλό παράδειγµα: Entity. Μοντελοποίηση. Απλό παράδειγµα:αρχιτεκτονική. Στοιχεία γλώσσας VHDL

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

Σύνθετοι τύποι και λειτουργίες. (Peter Ashenden, The Students Guide to VHDL)

Πανεπιστήµιο Θεσσαλίας

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ

Ακολουθιακά Κυκλώµατα. ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ακολουθιακά Κυκλώµατα (συν.) Ακολουθιακή Λογική: Έννοια

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016

ΛΥΣΕΙΣ 3 ης ΓΡΑΠΤΗΣ ΕΡΓΑΣΙΑΣ

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

Πράξεις με δυαδικούς αριθμούς

ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ένα συνδυαστικό κύκλωµα µπορεί να περιγραφεί από: Φεβ-05. n-είσοδοι

Καταστάσεων. Καταστάσεων

Κεφάλαιο 5 ο Προγραμματισμός Ολοκληρωμένων Κυκλωμάτων

8 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού: Μοντέλα Συνδυαστικών Κυκλωµάτων

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες

5.1 Θεωρητική εισαγωγή

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΕΦΑΡΜΟΓΕΣ ΚΑΤΑΧΩΡΗΤΩΝ ΟΛΙΣΘΗΣΗΣ

VERILOG. Γενικά περί γλώσσας

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΚΕΦΑΛΑΙΟ Συνδυαστικά Κυκλώµατα. 3.2 Σχεδιασµός Συνδυαστικής Λογικής 3.3 ιαδικασία Ανάλυσης 3.4 ιαδικασία Σχεδιασµού.

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ

Transcript:

Περιεχόµενα Πρόλογος...13 I ΣΧΕ ΙΑΣΜΟΣ ΣΕ ΕΠΙΠΕ Ο ΚΥΚΛΩΜΑΤΟΣ... 17 1 Εισαγωγή... 19 1.1 Σχετικά µε τη VHDL...19 1.2 Ροή σχεδιασµού...20 1.3 Εργαλεία EDA...21 1.4 Μεταγλώττιση από κώδικα VHDL σε κύκλωµα...22 1.5 Παραδείγµατα σχεδιασµών...25 2 οµή του κώδικα... 29 2.1 Βασικές ενότητες της VHDL...29 2.2 ηλώσεις βιβλιοθηκών...30 2.3 Ενότητα ENTITY...32 2.4 Ενότητα ARCHITECTURE...33 2.5 Εισαγωγικά παραδείγµατα...34 2.6 Προβλήµατα...40 3 Τύποι δεδοµένων... 43 3.1 Προκαθορισµένοι τύποι δεδοµένων...43 3.2 Οριζόµενοι από το χρήστη τύποι δεδοµένων...47 6.3 Υποτύποι δεδοµένων...48 3.4 Πίνακες...49 3.5 Πίνακας θυρών...53 3.6 Εγγραφές...54 3.7 Τύποι δεδοµένων SIGNED και UNSIGNED...54 3.8 Μετατροπή δεδοµένων...56 3.9 Σύνοψη...58 3.10 Πρόσθετα παραδείγµατα...58 3.11 Προβλήµατα...64

8 Περιεχόµενα 4 Τελεστές και ιδιότητες...67 4.1 Τελεστές... 67 4.2 Ιδιότητες... 71 4.3 Οριζόµενες από το χρήστη ιδιότητες... 73 4.4 Υπερφόρτωση τελεστή... 74 4.5 Εντολή GENERIC... 75 4.6 Παραδείγµατα... 76 4.7 Σύνοψη... 81 4.8 Προβλήµατα... 83 5 Συντρέχων κώδικας...85 5.1 Συντρέχων και ακολουθιακός κώδικας... 85 5.2 Χρήση τελεστών... 88 5.3 Εντολή WHEN (απλή και µε επιλογή)... 90 5.4 Εντολή GENERATE... 99 5.5 Εντολή BLOCK... 102 5.6 Προβλήµατα... 105 6 Ακολουθιακός κώδικας...113 6.1 ιεργασία... 113 6.2 Σήµατα και µεταβλητές... 116 6.3 Εντολή IF... 116 6.4 Εντολή WAIT... 121 6.5 Εντολή CASE... 123 6.6 Εντολή LOOP... 128 6.7 CASE έναντι IF... 136 6.8 CASE έναντι WHEN... 136 6.9 Κακός χρονισµός ρολογιού... 137 6.10 Χρήση ακολουθιακού κώδικα για το σχεδιασµό συνδυαστικών κυκλωµάτων... 142 6.11 Προβλήµατα... 145

Περιεχόµενα 9 7 Σήµατα και µεταβλητές... 153 7.1 CONSTANT...153 7.2 SIGNAL...154 7.3 VARIABLE...156 7.4 SIGNAL έναντι VARIABLE...158 7.5 Αριθµός καταχωρητών...165 7.6 Προβλήµατα...176 8 Μηχανές καταστάσεων... 185 8.1 Εισαγωγή...185 8.2 Στυλ σχεδιασµού #1...187 8.3 Στυλ σχεδιασµού #2 (αποθηκευµένη έξοδος)...195 8.4 Τρόπος κωδικοποίησης: από δυαδική κωδικοποίηση σε OneHot...208 8.5 Προβλήµατα...209 9 Πρόσθετοι σχεδιασµοί κυκλωµάτων... 215 9.1 Βαρελοειδής ολισθητής...216 9.2 Συγκριτές προσηµασµένων και µη προσηµασµένων αριθµών...218 9.3 Αθροιστές κυµάτωσης και πρόβλεψης κρατουµένου...221 9.4 ιαίρεση σταθερής υποδιαστολής...226 9.5 Ελεγκτής µηχανής αυτόµατου-πωλητή...231 9.6 έκτης σειριακών δεδοµένων...236 9.7 Μετατροπέας από παράλληλο σε σειριακό...239 9.8 Παιχνίδι µε µία οθόνη επτά τµηµάτων...241 9.9 Γεννήτριες σηµάτων...245 9.10 Σχεδίαση µνήµης...248 9.11 Προβλήµατα...254

10 Περιεχόµενα II ΣΧΕ ΙΑΣΜΟΣ ΣΕ ΕΠΙΠΕ Ο ΣΥΣΤΗΜΑΤΟΣ...261 10 Πακέτα και συστατικά στοιχεία...263 10.1 Εισαγωγή... 263 10.2 Πακέτο... 264 10.3 Συστατικό στοιχείo... 266 10.4 Αντιστοίχιση θυρών... 274 10.5 Γενικευµένη αντιστοίχιση... 274 10.6 Προβλήµατα... 281 11 Συναρτήσεις και διαδικασίες...283 11.1 Συναρτήσεις... 283 11.2 Θέση της συνάρτησης... 286 11.3 ιαδικασίες... 295 11.4 Θέση της διαδικασίας... 297 11.5 Συνάρτηση έναντι διαδικασίας σύνοψη... 300 11.6 ASSERT... 301 11.7 Προβλήµατα... 302 12 Πρόσθετα παραδείγµατα σε επίπεδο συστήµατος...305 12.1 Σειριακός-παράλληλος πολλαπλασιαστής... 305 12.2 Παράλληλος πολλαπλασιαστής... 310 12.3 Κυκλώµατα πολλαπλασιασµού-συσσώρευσης... 315 12.4 Ψηφιακά φίλτρα... 319 12.5 Νευρωνικά δίκτυα... 324 12.6 Προβλήµατα... 332

Περιεχόµενα 11 Παράρτηµα Α: Προγραµµατιζόµενα λογικά στοιχεία... 337 Παράρτηµα B: Xilinx ISE + εισαγωγή στο ModelSim... 351 Παράρτηµα Γ: Altera MaxPlus II + εισαγωγή στο Advanced Synthesis Software... 363 Παράρτηµα : Εισαγωγή στο Quartus II της Altera... 381 Παράρτηµα E: εσµευµένες λέξεις της VHDL... 393 Βιβλιογραφία...395 Ευρετήριο...397

2 οµή του κώδικα Σε αυτό το κεφάλαιο περιγράφουµε τις βασικές ενότητες που αποτελούν ένα τµή- µα κώδικα VHDL: την ενότητα δήλωσης βιβλιοθηκών, την ενότητα ENTITY, και την ενότητα ARCHITECTURE. 2.1 Βασικές ενότητες της VHDL Όπως φαίνεται στην Εικόνα 2.1, ένα αυτόνοµο τµήµα κώδικα VHDL αποτελείται από τουλάχιστον τρεις βασικές ενότητες, ο οποίες είναι: Η ενότητα δήλωσης βιβλιοθηκών: Περιέχει µια λίστα µε όλες τις βιβλιοθήκες που πρόκειται να χρησιµοποιηθούν στο σχεδιασµό. Για παράδειγµα ieee, std, work, κ.λπ. Η ενότητα ENTITY: Καθορίζει τους ακροδέκτες εισόδου/εξόδου του κυκλώµατος. Η ενότητα ARCHITECTURE: Περιέχει τον κατάλληλο κώδικα VHDL, ο οποίος περιγράφει µε ποιον τρόπο πρέπει να συµπεριφέρεται (να λειτουργεί) το κύκλωµα. Äçëþóåéò âéâëéïèçêþí ENTITY Âáóéêüò êþäéêáò VHDL ARCHITECTURE Εικόνα 2.1 Βασικές ενότητες του κώδικα VHDL.

30 Κεφάλαιο 2 Η βιβλιοθήκη είναι µια συλλογή από συχνά χρησιµοποιούµενα τµήµατα κώδικα. Η τοποθέτηση τέτοιων τµηµάτων κώδικα σε µια βιβλιοθήκη επιτρέπει την επαναχρησιµοποίηση ή την κοινοχρησία τους από άλλους σχεδιασµούς. Η τυπική δοµή µιας βιβλιοθήκης φαίνεται στην Εικόνα 2.2. Ο κώδικας είναι γραµµένος συνήθως µε τη µορφή συναρτήσεων (FUNCTIONS), διαδικασιών (PROCEDURES) ή συστατικών στοιχείων (COMPONENTS), τα οποία τοποθετούνται µέσα σε πακέτα και στη συνέχεια µεταγλωττίζονται στην αντίστοιχη βιβλιοθήκη. Στο πρώτο µέρος του βιβλίου (µέχρι και το Κεφάλαιο 9) θα εξετάσουµε τις βασικές δοµικές µονάδες της VHDL (Εικόνα 2.1), ενώ οι ενότητες που σχετίζονται µε τις βιβλιοθήκες (Εικόνα 2.2) θα εξεταστούν στο δεύτερο µέρος του βιβλίου (Κεφάλαια 10-12). ÂÉÂËÉÏÈÇÊÇ ÐÁÊÅÔÏ ÓÕÍÁÑÔÇÓÅÉÓ ÄÉÁÄÉÊÁÓÉÅÓ ÓÕÓÔÁÔÉÊÁ ÓÔÏÉ ÅÉÁ ÓÔÁÈÅÑÅÓ ÔÕÐÏÉ ÄÅÄÏÌÅÍÙÍ Εικόνα 2.2 Βασικά τµήµατα µιας βιβλιοθήκης. 2.2 ηλώσεις βιβλιοθηκών Για να δηλώσουµε µια βιβλιοθήκη (LIBRARY) (µε άλλα λόγια, για να την κάνου- µε ορατή στο σχεδιασµό) απαιτούνται δύο γραµµές κώδικα, όπου η µία περιέχει το όνοµα της βιβλιοθήκης και η άλλη την πρόταση use, όπως φαίνεται στην ακόλουθη σύνταξη. LIBRARY όνοµα_βιβλιοθήκης; USE όνοµα_βιβλιοθήκης.όνοµα_πακέτου.µέρη_πακέτου;

οµή του κώδικα 31 Στους σχεδιασµούς µας απαιτούνται συνήθως τουλάχιστον τρία πακέτα, από τρεις διαφορετικές βιβλιοθήκες: ieee.std_logic_1164 (από τη βιβλιοθήκη ieee) standard (από τη βιβλιοθήκη std), και work (από τη βιβλιοθήκη work) Οι δηλώσεις τους είναι οι ακόλουθες: LIBRARY ieee; -- Το ερωτηµατικό (;) υποδηλώνει USE ieee.std_logic_1164.all; -- το τέλος της εντολής ή LIBRARY std; USE std.standard.all; -- της δήλωσης, ενώ οι δύο συνεχόµενες -- παύλες (--) υποδηλώνουν σχόλιο. LIBRARY work; USE work.all; Οι βιβλιοθήκες std και work που είδαµε παραπάνω είναι πάντα εξ ορισµού ορατές, εποµένως δεν είναι απαραίτητο να τις δηλώνουµε. Μόνο η βιβλιοθήκη ieee πρέπει να δηλώνεται ρητά. Όµως αυτή η ενέργεια είναι απαραίτητη µόνο όταν χρησιµοποιούµε στο σχεδιασµό τον τύπο δεδοµένων STD_LOGIC (ή STD_ULOGIC) (θα εξετάσουµε λεπτοµερώς τους τύπους δεδοµένων στο επόµενο κεφάλαιο). Ο σκοπός των τριών πακέτων/βιβλιοθηκών που αναφέραµε παραπάνω είναι ο ακόλουθος: το πακέτο std_logic_1164 της βιβλιοθήκης ieee καθορίζει ένα πολυεπίπεδο λογικό σύστηµα, η std είναι µια βιβλιοθήκη πόρων (τύποι δεδοµένων, είσοδος/έξοδος κειµένου, κ.λπ.) για το σχεδιαστικό περιβάλλον της VHDL, ενώ η βιβλιοθήκη work είναι το σηµείο όπου αποθηκεύεται ο σχεδιασµός µας (το αρχείο.vhd µαζί µε όλα τα αρχεία που δηµιουργούνται από το µεταγλωττιστή, τον προσοµοιωτή κ.λπ.). Στην πραγµατικότητα η βιβλιοθήκη ieee περιέχει αρκετά πακέτα, συµπεριλαµβανοµένων των παρακάτω: std_logic_1164: Καθορίζει τα πολυεπίπεδα (πολλαπλών τιµών) λογικά συστή- µατα STD_LOGIC (8 επίπεδα) και STD_ULOGIC (9 επίπεδα). std_logic_arith: Καθορίζει τους τύπους δεδοµένων SIGNED και UNSIGNED και τις σχετιζόµενες αριθµητικές και λογικές πράξεις. Περιέχει επίσης αρκετές συναρτήσεις µετατροπής δεδοµένων, οι οποίες επιτρέπουν τη µετατροπή από τον έναν τύπο δεδοµένων σε άλλον: conv_integer(p), conv_unsigned(p, b), conv_signed(p, b), conv_std_logic_vector(p, b).

32 Κεφάλαιο 2 std_logic_signed: Περιέχει συναρτήσεις που επιτρέπουν την εκτέλεση πράξεων µε δεδοµένα τύπου STD_LOGIC_VECTOR σαν να ήταν τα δεδοµένα τύπου SIGNED. std_logic_unsigned: Περιέχει συναρτήσεις που επιτρέπουν την εκτέλεση πράξεων µε δεδοµένα τύπου STD_LOGIC_VECTOR σαν να ήταν τα δεδοµένα τύπου UNSIGNED. Στο Κεφάλαιο 3 θα περιγράψουµε και θα χρησιµοποιήσουµε εκτενέστερα όλες αυτές τις βιβλιοθήκες. 2.3 Ενότητα ENTITY Η ενότητα ENTITY (οντότητα) είναι µια λίστα µε τις προδιαγραφές όλων των α- κροδεκτών (θυρών, PORTS) εισόδου και εξόδου του κυκλώµατος. Η σύνταξη της φαίνεται παρακάτω. ENTITY όνοµα_οντότητας IS PORT ( Όνοµα_θύρας: κατάσταση_σήµατος τύπος_σήµατος; Όνοµα_θύρας: κατάσταση_σήµατος τύπος_σήµατος;...); END όνοµα_οντότητας; Η κατάσταση (mode) ενός σήµατος µπορεί να είναι IN (είσοδος), OUT (έξοδος), INOUT (είσοδος-έξοδος), ή BUFFER (προσωρινή αποθήκευση). Όπως φαίνεται στην Εικόνα 2.3, οι καταστάσεις IN και OUT αντιστοιχούν στην πραγµατικότητα σε ακροδέκτες µονής κατεύθυνσης, ενώ η κατάσταση INOUT αντιστοιχεί σε ακροδέκτες διπλής κατεύθυνσης. Από την άλλη πλευρά, η κατάσταση BUFFER χρησιµοποιείται όταν το σήµα εξόδου πρέπει να χρησιµοποιηθεί (να διαβαστεί) εσωτερικά. OUT IN Êýêëùìá INOUT BUFFER Εικόνα 2.3 Καταστάσεις σηµάτων.

οµή του κώδικα 33 Ο τύπος ενός σήµατος µπορεί να είναι BIT, STD_LOGIC, INTEGER, κ.λ.π. Οι τύποι δεδοµένων θα εξεταστούν λεπτοµερώς στο Κεφάλαιο 3. Τέλος, το όνοµα της οντότητας µπορεί να είναι ένα οποιοδήποτε όνοµα εκτός από τις δεσµευµένες λέξεις της VHDL (οι δεσµευµένες λέξεις της VHDL αναφέρονται στο Παράρτηµα Ε). Παράδειγµα: Ας εξετάσουµε την πύλη NAND της Εικόνας 2.4. Η ενότητα ENTITY µπορεί να προσδιοριστεί µε τον ακόλουθο τρόπο: a b x Εικόνα 2.4 Λογική πύλη NAND. ENTITY nand_gate IS PORT (a, b : IN BIT; x : OUT BIT); END nand_gate; Το νόηµα της παραπάνω ενότητας ENTITY είναι το ακόλουθο: το κύκλωµα έ- χει τρεις ακροδέκτες εισόδου/εξόδου που είναι οι δύο είσοδοι (a και b, κατάσταση ΙΝ) και η έξοδος (x, κατάσταση OUT). Και τα τρία σήµατα είναι τύπου BIT. Το όνοµα που επιλέχθηκε για την οντότητα είναι το nand_gate. 2.4 Ενότητα ARCHITECTURE Η ενότητα ARCHITECTURE (αρχιτεκτονική) περιέχει την περιγραφή του τρόπου µε τον οποίο πρέπει να συµπεριφέρεται (να λειτουργεί) το κύκλωµα. Η σύνταξή της είναι η ακόλουθη: ARCHITECTURE όνοµα_αρχιτεκτονικής OF όνοµα_οντότητας IS [δηλώσεις] BEGIN (κώδικας) END όνοµα_αρχιτεκτονικής;

34 Κεφάλαιο 2 Όπως δείχνεται παραπάνω, η ενότητα ARCHITECTURE αποτελείται από δύο µέρη: το (προαιρετικό) δηλωτικό µέρος, όπου δηλώνονται (µεταξύ άλλων) τα εσωτερικά σήµατα και οι σταθερές, και το τµήµα του κώδικα (από τη λέξη BEGIN και κάτω). Όπως και στην περίπτωση της ενότητας ΕΝΤΙΤΥ, το όνοµα της ενότητας ARCHITECTURE µπορεί να είναι οτιδήποτε (εκτός από τις δεσµευµένες λέξεις της VHDL), και µπορεί ακόµα και να είναι ίδιο µε το όνοµα της ενότητας ΕΝΤΙΤΥ. Παράδειγµα: Ας εξετάσουµε ξανά την πύλη NAND της Εικόνας 2.4. Η ενότητα ARCHITECTURE µπορεί να καθοριστεί µε τον ακόλουθο τρόπο: ARCHITECTURE myarch OF nand_gate IS BEGIN x <= a NAND b; END myarch; Το νόηµα της παραπάνω ενότητας ARCHITECTURE είναι το ακόλουθο: το κύκλωµα πρέπει να εκτελεί την πράξη NAND µεταξύ των δύο σηµάτων εισόδου (a, b) και να αναθέτει ("<=") το αποτέλεσµα στον ακροδέκτη εξόδου (x). Το όνοµα που επιλέχθηκε για την αρχιτεκτονική αυτή είναι το myarch. Σε αυτό το παράδειγ- µα δεν υπάρχει δηλωτικό µέρος και ο κώδικας περιέχει µόνο µια απλή ανάθεση τι- µής. 2.5 Εισαγωγικά παραδείγµατα Σε αυτή την ενότητα θα παρουσιάσουµε δυο αρχικά παραδείγµατα κώδικα VHDL. Παρότι δεν έχουµε ακόµα µελετήσει τις δοµές που εµφανίζονται σε αυτά τα παραδείγµατα, θα µας βοηθήσουν να διευκρινίσουµε κάποιες βασικές αρχές σχετικά µε τη συνολική δοµή του κώδικα. Κάθε παράδειγµα συνοδεύεται από επεξηγηµατικά σχόλια και αποτελέσµατα προσοµοίωσης. Παράδειγµα 2.1: DFF µε ασύγχρονη επανεκκίνηση Στην Εικόνα 2.5 παρουσιάζεται το διάγραµµα ενός φλιπ-φλοπ D (DFF) µε ασύγχρονη είσοδο επαναφοράς (rst) το οποίο ενεργοποιείται στην ανερχόµενη ακµή του σήµατος ρολογιού (clk). Όταν rst = '1' η έξοδος πρέπει να παίρνει την τιµή '0', ανεξάρτητα από την τιµή του σήµατος clk. ιαφορετικά η είσοδος αντιγράφεται στην έξοδο (δηλαδή, q <= d) τη χρονική στιγµή όπου το clk αλλάζει από '0' σε '1' (δηλαδή, όταν προκύπτει ένα συµβάν ανερχόµενης τιµής στο σήµα clk). Υπάρχουν διάφοροι τρόποι υλοποίησης του κυκλώµατος DFF της Εικόνας 2.5, και ένας από αυτούς είναι η λύση που παρουσιάζεται στη συνέχεια. Ένα πράγµα όµως που πρέπει να θυµόµαστε είναι ότι το πρόγραµµα VHDL είναι από τη φύση

οµή του κώδικα 35 του συντρέχον (σε αντίθεση µε τα συµβατικά προγράµµατα, που είναι ακολουθιακά), εποµένως για να υλοποιήσουµε οποιοδήποτε χρονισµένο κύκλωµα (για παράδειγµα, ένα κύκλωµα φλιπ-φλοπ) θα πρέπει να "αναγκάσουµε" τη VHDL να γίνει ακολουθιακή. Αυτό µπορεί να πραγµατοποιηθεί µε τη χρήση µιας διεργασίας (PROCESS), όπως φαίνεται παρακάτω. d clk rst DFF q Εικόνα 2.5 DFF µε ασύγχρονη επαναφορά. 1 --------------------------------------- 2 LIBRARY ieee; 3 USE ieee.std_logic_1164.all; 4 --------------------------------------- 5 ENTITY dff IS 6 PORT ( d, clk, rst: IN STD_LOGIC; 7 q: OUT STD_LOGIC); 8 END dff; 9 --------------------------------------- 10 ARCHITECTURE behavior OF dff IS 11 BEGIN 12 PROCESS (rst, clk) 13 BEGIN 14 IF (rst='1') THEN 15 q <= '0'; 16 ELSIF (clk'event AND clk='1') THEN 17 q <= d; 18 END IF; 19 END PROCESS; 20 END behavior; 21 --------------------------------------- Σχόλια: Γραµµές 2-3: ήλωση βιβλιοθήκης (όνοµα της βιβλιοθήκης και πρόταση use για τη βιβλιοθήκη). Θυµηθείτε ότι οι άλλες δύο απαραίτητες βιβλιοθήκες (std και work) είναι εξ ορισµού ορατές.

36 Κεφάλαιο 2 Γραµµές 5-8: Ενότητα ENTITY dff. Γραµµές 10-20: Ενότητα ARCHITECTURE behavior. Γραµµή 6: Θύρες εισόδου (η κατάσταση µιας εισόδου µπορεί να είναι µόνο ΙΝ). Σε αυτό το παράδειγµα όλα τα σήµατα εισόδου είναι τύπου STD_LOGIC. Γραµµή 7: Θύρα εξόδου (η κατάσταση µιας εξόδου µπορεί να είναι OUT, INOUT, ή BUFFER). Εδώ η έξοδος είναι επίσης τύπου STD_LOGIC. Γραµµές 11-19: Κώδικας της ενότητας ARCHITECTURE (από τη λέξη BEGIN και κάτω). Γραµµές 12-19: Μια διεργασία (PROCESS). Εντός της διεργασίας ο κώδικας ε- κτελείται ακολουθιακά. Γραµµή 12: Η διεργασία εκτελείται κάθε φορά που αλλάζει τιµή κάποιο από τα σήµατα που έχουν δηλωθεί στη λίστα ευαισθησίας της. Σε αυτό το παράδειγµα η διεργασία εκτελείται κάθε φορά που αλλάζει η τιµή στο σήµα rst ή στο σήµα clk. Γραµµές 14-15: Κάθε φορά που το σήµα rst γίνεται ίσο µε '1' η έξοδος τίθεται στην τιµή '0' ανεξάρτητα από το σήµα ρολογιού clk (ασύγχρονη επαναφορά). Γραµµές 16-17: Εάν το rst δεν είναι ενεργό και το clk έχει αλλάξει κατάσταση (δηλαδή, έχει προκύψει ένα συµβάν στο clk) και επιπλέον αυτό το συµβάν (EVENT) αντιστοιχεί στην ανερχόµενη ακµή (clk = '1'), τότε το σήµα εισόδου (d) αποθηκεύεται στο φλιπ-φλοπ (q <= d). Γραµµές 15-17: Ο τελεστής "<=" χρησιµοποιείται για την ανάθεση µιας τιµής σε ένα αντικείµενο τύπου SIGNAL. Αντίθετα, για ένα αντικείµενο τύπου VARIABLE θα χρησιµοποιούσαµε τον τελεστή ":=". Εξ ορισµού όλες οι θύρες σε µια οντότητα είναι τύπου SIGNAL. Γραµµές 1, 4, 9, και 21: Σχόλια (θυµηθείτε ότι το σύµβολο " " δηλώνει σχόλιο). Τις χρησιµοποιήσαµε µόνο για να οργανώσουµε καλύτερα τον κώδικα. Σηµείωση: Η VHDL δεν κάνει διάκριση µεταξύ κεφαλαίων και πεζών γραµµάτων. Αποτελέσµατα προσοµοίωσης: Η Εικόνα 2.6 παρουσιάζει τα αποτελέσµατα της προσοµοίωσης για το Παράδειγµα 2.1. Τα γραφήµατα µπορούν να ερµηνευτούν πολύ εύκολα. Η πρώτη στήλη δείχνει τα ονόµατα των σηµάτων, όπως έχουν οριστεί στην ενότητα ENTITY. είχνει επίσης και την κατάσταση (την κατεύθυνση) των σηµάτων. Προσέξτε ότι τα βέλη που σχετίζονται µε τα σήµατα rst, d, και clk έχουν κατεύθυνση προς το εσωτερικό και περιέχουν το γράµµα I (Input, δηλαδή είσοδος), ενώ το βέλος του σήµατος q έχει κατεύθυνση προς τα έξω και περιέχει το γράµµα O (Output, δηλαδή έξοδος). Η δεύτερη στήλη δείχνει την τιµή του κάθε σήµατος τη χρονική στιγµή που καθορίζεται από τη θέση όπου βρίσκεται ο κατακόρυφος δροµέας. Στην τρέχουσα κατάσταση ο δροµέας βρίσκεται στη χρονική στιγµή 0 ns, όπου τα σήµατα έχουν αντί-

οµή του κώδικα 37 στοιχα τις τιµές 1, 0, 0, και 0. Σε αυτό το παράδειγµα οι τιµές των σηµάτων είναι µόνο '0' ή '1', αλλά όταν χρησιµοποιούνται διανύσµατα οι τιµές µπορεί να απεικονίζονται σε δυαδική, δεκαδική, ή δεκαεξαδική αναπαράσταση. Η τρίτη στήλη δείχνει τα αποτελέσµατα της προσοµοίωσης. Οι τιµές των σηµάτων εισόδου (rst, d, και clk) µπορούν να επιλεγούν ελεύθερα και ο προσοµοιωτής θα καθορίσει την α- ντίστοιχη έξοδο (q). Συγκρίνοντας τα αποτελέσµατα της Εικόνας 2.6 µε αυτά που αναµέναµε για το κύκλωµα που παρουσιάστηκε προηγουµένως παρατηρούµε ότι το κύκλωµα δουλεύει σωστά. Όπως αναφέραµε προηγουµένως, έχουµε συνθέσει τους σχεδιασµούς που παρουσιάζονται σε αυτό το βιβλίο για συσκευές CPLD/FPGA (Παράρτηµα Α) της Altera ή της Xilinx. Τα εργαλεία που χρησιµοποιήθηκαν ήταν είτε το ISE σε συνδυασµό µε το ModelSim (για τσιπ Xilinx Παράρτηµα Β), είτε το MaxPlus II σε συνδυασµό µε το Advanced Synthesis Software (για CPLD Altera Παράρτηµα Γ), ή το Quartus II (επίσης για συσκευές Altera Παράρτηµα ). Χρησιµοποιήθηκε επίσης περιστασιακά το Leonardo Spectrum (από τη Mentor Graphics). Εικόνα 2.6 Αποτελέσµατα προσοµοίωσης για το Παράδειγµα 2.1. Παράδειγµα 2.2: DFF και πύλη NAND Το κύκλωµα της Εικόνας 2.4 ήταν καθαρά συνδυαστικό, ενώ αυτό της Εικόνας 2.5 ήταν καθαρά ακολουθιακό. Το κύκλωµα της Εικόνας 2.7 είναι µια µίξη των δύο παραπάνω (χωρίς σήµα επαναφοράς). Στη λύση που ακολουθεί έχουµε επίτηδες εισαγάγει ένα µη απαραίτητο σήµα (το temp), απλώς και µόνο για να δείξουµε µε ποιον τρόπο δηλώνεται ένα σήµα. Στην Εικόνα 2.8 παρουσιάζονται τα αποτελέσµατα προσοµοίωσης για το κύκλωµα που προέκυψε από τη σύνθεση του αντίστοιχου κώδικα.

38 Κεφάλαιο 2 a b clk DFF q Εικόνα 2.7 DFF και πύλη NAND. 1 --------------------------------------- 2 ENTITY example IS 3 PORT ( a, b, clk: IN BIT; 4 q: OUT BIT); 5 END example; 6 --------------------------------------- 7 ARCHITECTURE example OF example IS 8 SIGNAL temp : BIT; 9 BEGIN 10 temp <= a NAND b; 11 PROCESS (clk) 12 BEGIN 13 IF (clk'event AND clk='1') THEN q<=temp; 14 END IF; 15 END PROCESS; 16 END example; 17 --------------------------------------- Σχόλια: Οι δηλώσεις βιβλιοθηκών δεν είναι απαραίτητες σε αυτή την περίπτωση, επειδή τα δεδοµένα είναι τύπου BIT ο οποίος καθορίζεται στη βιβλιοθήκη std (θυµηθείτε ότι οι βιβλιοθήκες std και work είναι εξ ορισµού ορατές). Γραµµές 2-5: Ενότητα ΕΝΤΙΤΥ example. Γραµµές 7-16: Ενότητα ARCHITECTURE example. Γραµµή 3: Θύρες εισόδου (όλες τύπου ΒΙΤ). Γραµµή 4: Θύρα εξόδου (επίσης τύπου ΒΙΤ).

οµή του κώδικα 39 Γραµµή 8: ηλωτικό µέρος της αρχιτεκτονικής (προαιρετικό). Εδώ δηλώθηκε το σήµα temp, τύπου ΒΙΤ. Προσέξτε ότι δεν υπάρχει δήλωση κατάστασης (η κατάσταση χρησιµοποιείται µόνο στις οντότητες). Γραµµές 9-15: Κώδικας της ενότητας ARCHITECTURE (από τη λέξη BEGIN και κάτω). Γραµµές 11-15: Μια διεργασία (ακολουθιακές εντολές οι οποίες εκτελούνται κάθε φορά που το σήµα clk αλλάζει κατάσταση). Γραµµές 10 και 11-15: Μολονότι στο εσωτερικό µιας διεργασίας η εκτέλεση του κώδικα είναι ακολουθιακή, η διεργασία ως σύνολο εκτελείται ταυτόχρονα µε τις υπόλοιπες (εξωτερικές) εντολές. Εποµένως η γραµµή 10 εκτελείται ταυτόχρονα µε το τµήµα κώδικα που αντιστοιχεί στις γραµµές 11-15. Γραµµή 10: Λογική πράξη NAND. Το αποτέλεσµα ανατίθεται στο σήµα temp. Γραµµές 13-14: Εντολή IF. Στην ανερχόµενη ακµή του clk η τιµή του temp ανατίθεται στο q. Γραµµές 10-13: Ο τελεστής "<=" χρησιµοποιείται για την ανάθεση τιµής σε ένα αντικείµενο τύπου SIGNAL. Αντίθετα, θα έπρεπε να χρησιµοποιήσουµε τον τελεστή ":=" για ένα αντικείµενο τύπου VARIABLE. Γραµµές 8, 10: Μπορούν να παραλειφθούν αν γράψουµε "q <= a NAND b" στη γραµµή 13. Γραµµές 1, 6, και 17 : Σχόλια. Χρησιµοποιήθηκαν για την καλύτερη οργάνωση του κώδικα. Εικόνα 2.8 Αποτελέσµατα προσοµοίωσης για το Παράδειγµα 2.2.

40 Κεφάλαιο 2 2.6 Προβλήµατα Πρόβληµα 2.1: Πολυπλέκτης Στην Εικόνα Π.2.1 φαίνεται το διάγραµµα ανωτάτου επίπεδου ενός πολυπλέκτη. Σύµφωνα µε τον πίνακα αληθείας, η έξοδος θα πρέπει να είναι ίση µε µία από τις εισόδους αν sel = "01" (c = a) ή sel = "10" (c = b), ενώ θα πρέπει να έχει τιµή '0' ή Z (κατάσταση υψηλής εµπέδησης) αν sel = "00" ή sel = "11". α) Συµπληρώστε τον παρακάτω κώδικα VHDL. β) Γράψτε τα σχετικά σχόλια αναφορικά µε τη λύση σας (όπως στα Παραδείγµατα 2.1 και 2.2). γ) Μεταγλωττίστε και προσοµοιώστε τη λύση σας και ελέγξτε αν λειτουργεί µε τον αναµενόµενο τρόπο. Σηµείωση: Η παρακάτω λύση χρησιµοποιεί µια εντολή IF επειδή αποτελεί την πιο διαισθητικά εύλογη προσέγγιση. Όπως όµως θα δούµε αργότερα, ο πολυπλέκτης µπορεί επίσης να υλοποιηθεί µε εντολές όπως η WHEN ή η CASE. a (7:0) b (7:0) MUX sel (1:0) c (7:0) sel 00 01 10 11 c 0 a b Z Εικόνα Π.2.1 1 --------------------------------------- 2 LIBRARY ieee; 3 USE ; 4 --------------------------------------- 5 ENTITY mux IS 6 PORT (, : STD_LOGIC_VECTOR (7 DOWNTO 0); 7 sel : IN ; 8 : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));

οµή του κώδικα 41 9 END ; 10 --------------------------------------- 11 ARCHITECTURE example OF IS 12 BEGIN 13 PROCESS (a, b, ) 14 BEGIN 15 IF (sel = "00") THEN 16 c <= "00000000"; 17 ELSIF ( ) THEN 18 c <= a; 19 (sel = "10") THEN 20 c <= ; 21 ELSE 22 c <= (OTHERS => ' '); 23 END ; 24 END ; 25 END ; 26 --------------------------------------- Πρόβληµα 2.2: Λογικές πύλες α) Γράψτε κώδικα VHDL για το κύκλωµα της Εικόνας Π.2.2. Παρατηρήστε ότι αυτό είναι ένα πλήρως συνδυαστικό κύκλωµα, οπότε δεν είναι απαραίτητη η χρήση διεργασίας. Γράψτε µια παράσταση για το σήµα d χρησιµοποιώντας µόνο λογικούς τελεστές (AND, OR, NAND, NOT, κ.ο.κ.). β) Συνθέστε και προσοµοιώστε το κύκλωµα σας. Αφού επιβεβαιώσετε ότι λειτουργεί σωστά, ανοίξτε το αρχείο αναφοράς (report file) και ελέγξτε την πραγµατική παράσταση που υλοποίησε ο µεταγλωττιστής. Συγκρίνετέ τη µε τη δική σας παράσταση. a d b c Εικόνα Π.2.2