Πτυχιακή Εργασία. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL



Σχετικά έγγραφα
Ενότητα 2. Γενικά Οργάνωση Ελέγχου (ΙΙ) Φύλλα Εργασίας Εκθέσεις Ελέγχων

62 η ΣΥΝΟΔΟΣ ΠΡΥΤΑΝΕΩΝ & ΠΡΟΕΔΡΩΝ Δ.Ε. ΤΩΝ ΕΛΛΗΝΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΩΝ

Αξιολόγηση του εκπαιδευτικού έργου

ΤΜΗΜΑ ΣΥΝΤΗΡΗΣΗΣ ΗΜΟΤΙΚΩΝ αριθ. Πρωτ. Προκ: & ΣΧΟΛΙΚΩΝ ΚΤΙΡΙΩΝ Κ.Α για το 2015

15PROC

ΣΧΕΔΙΟ. ΝΟΜΟΣ. Δηµόσιες υπεραστικές οδικές µεταφορές επιβατών. Κεφ. Α - ΓΕΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ. Άρθρο 1 Σκοπός πεδίο εφαρµογής

ΚΕΦΑΛΑΙΟ 7 ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΠΡΟΤΑΣΕΙΣ

ΤΙΤΛΟΣ I ΕΥΡΩΠΑΪΚΑ ΣΧΟΛΕΙΑ

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

ΕΘΝΙΚΗ ΣΧΟΛΗ ΗΜΟΣΙΑΣ ΙΟΙΚΗΣΗΣ ΜΑΘΗΜΑ: ΟΡΓΑΝΩΣΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΚΡΑΤΟΥΣ (ΣΥΝΤΑΓΜΑΤΙΚΟ ΙΚΑΙΟ)

ΕΛΤΡΑΚ Α.Ε. ΕΝ ΙΑΜΕΣΕΣ ΟΙΚΟΝΟΜΙΚΕΣ ΚΑΤΑΣΤΑΣΕΙΣ ΓΙΑ ΤΟ ΕΝΝΕΑΜΗΝΟ ΤΟΥ 2005 ΣΥΜΦΩΝΑ ΜΕ ΤΑ ΙΕΘΝΗ ΠΡΟΤΥΠΑ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΗΣ ΠΛΗΡΟΦΟΡΗΣΗΣ ( ΠΧΠ)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΟΡΓΑΝΙΣΜΩΝ» Θ.Ε. ΔΕΟ 10 Βασικές Αρχές Δικαίου και Διοίκησης

ΣΧΕ ΙΑΣΜΟΣ ΖΩΝΩΝ ΧΡΗΣΕΩΝ ΓΗΣ ΣΕ ΠΕΡΙΟΧΕΣ Γ.Π.Σ.

Η ΕΠΑΓΓΕΛΜΑΤΙΚΗ & ΕΠΙΧΕΙΡΗΜΑΤΙΚΗ ΔΡΑΣΤΗΡΙΟΠΟΙΗΣΗ ΤΩΝ ΕΛΛΗΝΩΝ ΤΗΣ ΔΙΑΣΠΟΡΑΣ ΜΕΤΑ ΤΟΝ Β ΠΑΓΚΟΣΜΙΟ ΠΟΛΕΜΟ ΚΑΙ Η ΕΠΙΔΡΑΣΗ ΤΗΣ ΣΤΟ ΕΘΝΙΚΟ ΚΕΝΤΡΟ

Ο ΠΡΟΕΔΡΟΣ ΤΗΣ ΒΟΥΛΗΣ ΤΩΝ ΕΛΛΗΝΩΝ. Άρθρο πρώτο.

ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΙΑ ΙΚΤΥΟ. ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΝΟΜΟΣ ΗΜΑΘΙΑΣ ΗΜΟΣ ΑΛΕΞΑΝ ΡΕΙΑΣ Αλεξάνδρεια, Αριθµ. Πρωτ.: 4699

Έχοντας υπόψη: τη συνθήκη για την ίδρυση της Ευρωπαϊκής Κοινότητας, και ιδίως το άρθρο 175 παράγραφος 1, την πρόταση της Επιτροπής ( 1 ),

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΒΙΟΛΟΓΙΑ ΓΕΝΙΚΗΣ ΠΑΙ ΕΙΑΣ 2010 ΕΚΦΩΝΗΣΕΙΣ

ΙΝΤΕΑΛ ΣΥΣΤΗΜΑΤΑ ΤΡΑΠΕΖΙΚΩΝ-ΕΜΠΟΡΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Α.Ε.Β.Ε.

ΕΝΔΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΝΕΟΕΛΛΗΝΙΚΗΣ ΓΛΩΣΣΑΣ A1. Ο συγγραφέας ορίζει το φαινόμενο του ανθρωπισμού στη σύγχρονη εποχή. Αρχικά προσδιορίζει την

ΑΠΟΣΠΑΣΜΑ. Από το υπ' αριθµ. 30/ Πρακτικό της Οικονοµικής Επιτροπής Ιονίων Νήσων

Σέρρες Αριθ. Πρωτ.: 1387

I.Επί της Αρχής του σχεδίου Νόµου: ΙΙ. Επί των άρθρων του σχεδίου Νόµου: ΕΙΣΗΓΗΤΙΚΗ ΕΚΘΕΣΗ

ΚΟΙΝΟΠΟΙΗΣΗ : Ως συν/νος πίνακας ΘΕΜΑ : «Καταβολή Δωροσήμου Χριστουγέννων 2015 σε εργατοτεχνίτες οικοδόμους»

ΙΑΚΗΡΥΞΗ. Αριθµός-Α/Α Συστήµατος : 13142

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΙΚΟ ΣΗΜΕΙΩΜΑ 13 Α' ΜΕΡΟΣ ΑΠΟ ΤΟΝ ΠΟΛΕΜΟ ΤΟΥ 1897 ΣΤΟ ΓΟΥΔΙ

ΕΠΙΤΡΟΠΗ ΕΘΝΙΚΗΣ ΑΜΥΝΑΣ ΚΑΙ ΕΞΩΤΕΡΙΚΩΝ ΥΠΟΘΕΣΕΩΝ ΝΟΜΟΣΧΕ ΙΟ. «Στρατολογία των Ελλήνων» Άρθρο 1 Υπόχρεοι σε στράτευση

ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΙΑ ΙΚΤΥΟ ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΝΟΜΟΣ ATTIKHΣ Αχαρνές, 15/10/2015 Φ.Π.Α. 23%: 9.337,54 Ι Α Κ Η Ρ Υ Ξ Η

ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΝΟΜΟΣ ΘΕΣΣΑΛΟΝΙΚΗΣ Ο ΗΜΑΡΧΟΣ ΘΕΣΣΑΛΟΝΙΚΗΣ /ΝΣΗ ΟΙΚΟΝΟΜΙΚΗΣ & ΤΑΜΕΙΑΚΗΣ ΙΑΧΕΙΡΙΣΗΣ ΤΜΗΜΑ ΠΡΟΚΗΡΥΞΕΩΝ & ΗΜΟΠΡΑΣΙΩΝ

A1. Να γράψετε στο τετράδιό σας την περίληψη του κειμένου που σας δόθηκε ( λέξεις). Μονάδες 25

Πολιτική Πρόταση για μια Προοδευτική Διέξοδο Από την Κρίση

: Aύξηση φόρου εισοδήµατος, και µείωση µισθών

Η Αγορά Ηλεκτρικής Ενέργειας στην Κύπρο έχει οργανωθεί σε τομείς που υπόκεινται στις ακόλουθες ρυθμίσεις:

ΑΝΑΚΟΙΝΩΣΗ υπ' αριθµ. ΣΟΧ 1/2015 για τη σύναψη ΣΥΜΒΑΣΗΣ ΕΡΓΑΣΙΑΣ ΟΡΙΣΜΕΝΟΥ ΧΡΟΝΟΥ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

Η ΜΠΑΡΤΣΑ ΓΙΟΡΤΑΖΕΙ ΤΗΝ ΑΝΟΔΟ ΚΑΙ ΠΑΕΙ ΔΥΝΑΤΑ ΓΙΑ ΝΤΑ ΣΙΛΒΑ

ΜΕΛΕΤΗ. ΠΡΟΜΗΘΕΙΑΣ ΥΠΟΧΛΩΡΙΩΔΟΥΣ ΝΑΤΡΙΟΥ ΕΤΟΥΣ ΠΡΟΫΠΟΛΟΓΙΣΜΟΥ: ,00 πλέον του αναλογούντος Φ.Π.Α.

ΚΑΤΑΣΤΑΤΙΚΟ ΚΕΝΤΡΟΥ ΝΕΟΤΗΤΑΣ. ΙΔΡΥΣΗ Ιδρύεται Κέντρο Νεότητας µε την επωνυµία «Κέντρο Νεότητας... µε έδρα...

ΣΧΕΔΙΟ ΝΟΜΟΥ ΕΝΙΣΧΥΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΤΗΣ ΚΙΝΗΜΑΤΟΓΡΑΦΙΚΗΣ ΤΕΧΝΗΣ ΚΑΙ ΑΛΛΕΣ ΔΙΑΤΑΞΕΙΣ. Γενικές Αρχές και Ορισμοί. Άρθρο 1 Γενικές αρχές

ΥΠΟΔΕΙΓΜΑ ΣΥΜΠΛΗΡΩΣΗΣ

Δράση 1.2. Υλοτομία και προσδιορισμός ποσοτήτων υπολειμμάτων.

ΕΚΘΕΣΗ ΓΙΑ ΤΗΝ ΠΑΡΑΝΟΜΗ ΙΑΚΙΝΗΣΗ ΑΝΘΡΩΠΩΝ

Τ.Ε.Ι. ΛΑΜΙΑΣ ΚΑΝΟΝΙΣΜΟΣ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ Ο ΗΓΟΣ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΤΑ ΕΠΙΠΕΔΑ ΟΡΓΑΝΩΣΗΣ ΤΩΝ ΠΟΛΥΚΥΤΤΑΡΩΝ ΟΡΓΑΝΣΙΜΩΝ ΟΙ ΖΩΙΚΟΙ ΙΣΤΟΙ 2 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ

ΙΕΘΝΗΣ ΣΥΜΒΑΣΗ ΕΡΓΑΣΙΑΣ 183 «για την αναθεώρηση της (αναθεωρηµένης) σύµβασης για την προστασία της µητρότητας,»

Α Π Ο Σ Π Α Σ Μ Α Από το Πρακτικό της 03ης Τακτικής Συνεδρίασης του ηµοτικού Συµβουλίου Σκοπέλου

ΑΡΧΙΤΕΚΤΟΝΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΚΑΤΑΣΚΕΥΩΝ. ΥΠΟΧΡΕΩΤΙΚΟ ΜΑΘΗΜΑ: Διδακτικές ώρες 8 ΘΕΩΡΙΑΣ - ΘΕΜΑΤΟΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΣΥΝΘΕΣΗΣ - ΕΙΔΙΚΗ ΚΤΙΡΙΟΛΟΓΙΑ ΙΙ

«Πολιτιστικές διαδροµές στα µεταλλευτικά τοπία της Kύθνου»

Άνθρωπος και οικοσυστήµατα

( ) Τοµέας Εϖιµόρφωσης & Κατάρτισης

ΥΠ.Ε.Π.Θ. / ΠΑΙ ΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ «ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ»

Π Ρ Ο Κ Η Ρ Υ Ξ Η ΓΙΑ ΤΗΝ ΠΡΟΣΛΗΨΗ ΔΙΔΑΚΤΙΚΟΥ ΠΡΟΣΩΠΙΚΟΥ ΜΕ ΩΡΙΑΙΑ ΑΠΟΖΗΜΙΩΣΗ. 2. Προσόντα Υποψηφίων - Θέσεις προς Κάλυψη

Ο ΗΓΟΣ ΜΑΘΗΜΑΤΩΝ ΑΚΑ ΗΜΑΪΚΟΥ ΕΤΟΥΣ

Οι Αγώνες θα διεξαχθούν τόσο στο Σύγχρονο Θέατρο όσο και στο Αρχαίο

ΠΕΡΙΕΧΟΜΕΝΑ 1. ΤΟ ΔΙΑΘΕΜΑΤΙΚΟ ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΩΝ ΣΠΟΥΔΩΝ ΓΙΑ ΜΑΘΗΤΕΣ ΜΕ ΕΙΔΙΚΕΣ ΕΚΠΑΙΔΕΥΤΙΚΕΣ ΑΝΑΓΚΕΣ

Ο ΠΡΟΕ ΡΟΣ ΤΗΣ ΕΛΛΗΝΙΚΗΣ ΗΜΟΚΡΑΤΙΑΣ Εκδίδοµε τον ακόλουθο νόµο που ψήφισε η Βουλή:

ΤΙΜΟΛΟΓΙΟ ΜΕΛΕΤΗΣ Τιµαριθµική 2012Γ

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

Έργο «Προµήθεια οργάνων. παιδικών χαρών».

ΟΡΓΑΝΙΣΜΟΣ ΕΛΛΗΝΙΚΩΝ. Αθήνα, 28/11/01 Αριθ. Πρωτ. : ΑΣΦΑΛΙΣΕΩΝ

ΣΥΜΒΑΣΗ ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΙΑ ΙΚΤΥΟ. Βαθµός Προτεραιότητας: «Κοινός» Χρόνος διατήρησης του εγγράφου: «ιηνεκές» Αχαρνές, 10/07


Α Π Ο Σ Π Α Σ Μ Α από το πρακτικό της υπ αριθ. 22ης/2015 Συνεδρίασης της Επιτροπής Ποιότητας Ζωής

ΠΡΑΚΤΙΚΑ ΣΥΝΕΔΡΙΑΣΗΣ ΔΙΟΙΚΗΤΙΚΟΥ ΣΥΜΒΟΥΛΙΟΥ. υπ αριθμόν 2

ΑΣΦΑΛΙΣΗ ΣΚΑΦΩΝ ΑΝΑΨΥΧΗΣ ΣΤΑΤΙΣΤΙΚΑ ΣΤΟΙΧΕΙΑ ΕΤΟΥΣ

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

ΠΡΟΪΟΝΤΩΝ» Ποσοστό στη.. του Μέτρου. Ποσό (σε ΕΥΡΩ)

Δ Ι Α Κ Η Ρ Υ Ξ Η ΑΡΙΘΜ. 10/2015 ΠΡΟΧΕΙΡΟΥ ΜΕΙΟΔΟΤΙΚΟΥ ΔΙΑΓΩΝΙΣΜΟΥ

ΣΥΝΕΝΤΕΥΞΗ ΤΥΠΟΥ. Η ολοκληρωμένη προσέγγιση θα εφαρμοστεί με τα παρακάτω Εργαλεία

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

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

ΤΟ ΣΥΝΤΑΓΜΑ ΤΟΥ Εξώφυλλο του Συντάγµατος του 1844 (Βιβλιοθήκη Βουλής των

ΠΑΝΕΠΙΣΤΗΜΙΟ FREDERICK

ΕΞ.ΕΠΕΙΓΟΝ -FAX. Αθήνα, 15 Οκτωβρίου 2014

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

ΠΡΟΣ: ΚΟΙΝ: ΘΕΜΑ: Ενηµερωτικό σηµείωµα για το πρόβληµα της παράνοµης υλοτοµίας και ειδικά αυτό της καυσοξύλευσης

Κωδ : Οι κωδικοί αυτοί συμπληρώνονται από την φορολογική διοίκηση. Κωδ. 003: Γράψτε τη Δ.Ο.Υ. της έδρας ή του κεντρικού της επιχείρησής σας.

ΕΝΩΠΙΟΝ ΠΑΝΤΟΣ ΑΡΜΟΔΙΟΥ ΔΙΚΑΣΤΗΡΙΟΥ Η ΑΡΧΗΣ ΕΞΩΔΙΚΗ ΔΙΑΜΑΡΤΥΡΙΑ - ΠΡΟΣΚΛΗΣΗ

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

ΔΙΑΚΗΡΥΞΗ ΥΠ' ΑΡΙΘ. 49/2012

ΤΕΥΧΟΣ ΠΡΟΚΗΡΥΞΗΣ αριθμ /605/ ΔΗΜΟΣΙΟΥ ΑΝΟΙΚΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΓΙΑ ΤΗΝ ΑΝΑΚΗΡΥΞΗ ΑΝΑΔΟΧΟΥ ΓΙΑ ΤΗΝ ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΕΡΓΟΥ

Ο Δ Η Γ Ο Σ Π Ρ Α Κ Τ Ι Κ Η Σ Α Σ Κ Η Σ Η Σ

ΜΑΘΗΜΑΤΙΚΑ ΣΤ ΔΗΜΟΤΙΚΟΥ ΑΣΚΗΣΕΙΣ ΓΝΩΣΕΩΝ ΔΕΞΙΟΤΗΤΩΝ. λίτρα νερό. Πόσο νερό χρειάζεται ακόμα για να γεμίσει το δοχείο;

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

ΣΧΕΔΙΟ ΠΡΟΤΑΣΕΩΝ ΣΥΛΛΟΓΟΥ ΓΟΝΕΩΝ & ΚΗΔΕΜΟΝΩΝ ΕΠΙ ΤΟΥ ΠΡΟΣΧΕΔΙΟΥ ΤΟΥ ΕΣΩΤΕΡΙΚΟΥ ΚΑΝΟΝΙΣΜΟΥ ΛΕΙΤΟΥΡΓΙΑΣ ΤΟΥ 1 ου ΓΥΜΝΑΣΙΟΥ ΜΑΡΚΟΠΟΥΛΟΥ ΣΗΜΕΙΩΣΗ

ΔΙΚΗΓΟΡΙΚΟΣ ΣΥΛΛΟΓΟΣ ΠΡΑΚΤΙΚΟΣ ΟΔΗΓΟΣ. προς χρήση των Δικαστικών Αντιπροσώπων των Βουλευτικών Εκλογών της 17 ης ΙΟΥΝΙΟΥ 2012

ΘΕΜΑ: «Παραθεριστικοί Οικοδοµικοί Συνεταιρισµοί. Μελέτη Περίπτωσης του «Βραχόκηπου» ήµου Γουβών Ηρακλείου Κρήτης»

ΕΛΛΗΝΙΚΕΣ ΑΛΥΚΕΣ Α.Ε.

Του Σταύρου Ν. PhD Ψυχολόγου Αθλητικού Ψυχολόγου

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ. ΚΟΙΝΩΦΕΛΗΣ ΕΠΙΧΕΙΡΗΣΗ ΔΗΜΟΥ ΘΕΣΣΑΛΟΝΙΚΗΣ Κ.Ε.ΔΗ.Θ. Μ.ΚΑΛΛΑΣ 23, Τ.Κ ΤΗΛ FAX E mail : mail@deekme.

Ι Σ Ο Κ Ρ Α Τ Η Σ ΤΡΑΠΕΖΑ ΝΟΜΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Δ.Σ.Α.


Ε.Ε. Π α ρ.ι(i), Α ρ.3646, 25/10/2002. ΤΗΣ ΕΠΙΣΗΜΗΣ ΕΦΗΜΕΡΙΔΑΣ ΤΗΣ ΔΗΜΟΚΡΑΤΙΑΣ Αρ της 25ης ΟΚΤΩΒΡΙΟΥ 2002

Άνω Άκρο (ΙΙ) Ι. Γενικά

ΘΕΜΑ : «Ετήσιο ελτίο εδοµένων Μονάδων Υδατοκαλλιεργειών και Λιµνοθαλασσών»

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

ΜΕΤΟΧΙΚΟ ΤΑΜΕΙΟ ΠΟΛΙΤΙΚΩΝ ΥΠΑΛΛΗΛΩΝ ΔΙΑΚΗΡΥΞΗ

& ../../ , :.. : FAX :... & :...

Νεοελληνική Γλώσσα. B Δημοτικού. Τίτλος: «Εκφράζω τα συναισθήματά μου»

Transcript:

ΤΕΙ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΉΣ Πτυχιακή Εργασία Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL Αναστασόπουλος Νεκτάριος Δαρλαγιάννη Ιφιγένεια Πετρίδη Ειρήνη Εισηγητής: κ. Δ. Πογαρίδης Καβάλα 2007

Πτυχιακή Εργασία Σχεδίαση Ψηφιακών Συστημάτων Με τη Γλώσσα VHDL Αναστασόπουλος Νεκτάριος Δαρλαγιάννη Ιφιγένεια Πετρίδη Ειρήνη Καβάλα 2007 Εισηγητής: κ. Δ. Πογαρίδης

Την Προσπάθεια Αυτή Την Αφιερώνουμε Στους Γονείς μας που με κόπο και υπομονή μας σπουδάζουν. Ευχαριστούμε, Τον κ. Δ.Πογαρίδη που μας εμπιστεύτηκε και μας ανέθεσε την παρούσα Πτυχιακή Εργασία.

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Περιεχόμενα ΚΕΦΑΛΑΙΟ Ι... 6 Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ VHDL... 6 1.1 Ορισμός Της Γλώσσας VHDL... 7 1.2 Πλεονεκτήματα Της VHDL Στη Σχεδίαση Κυκλωμάτων... 7 1.3 ιαφορές VHDL Με C/C++... 8 1.4 Μοντελοποίηση Συστημάτων... 8 1.5 Τέσσερις Περιοχές & Επίπεδα Μοντελοποίησης... 9 1.5.1) Περιοχή & Επίπεδο Μοντελοποίησης... 9 1.5.2) Περιοχή & Επίπεδο Μοντελοποίησης... 9 1.5.3) Περιοχή & Επίπεδο Μοντελοποίησης... 10 1.5.4) Περιοχή & Επίπεδο Μοντελοποίησης... 10 1.6 Μοντέλα Ψηφιακών Συσκευών Στα Οποία Βασίζεται η VHDL... 11 Α) Μοντέλο συμπεριφοράς (behavioral model)... 11 Β) Μοντέλο χρονισμού (timing model)... 14 Γ)Μοντέλο δομής (structural model)... 14 1.7 Οργάνωση της σχεδίασης (Design Organization)... 19 1.8 Τύποι δεδομένων και αντικείμενα... 21 Α) Ονόματα αντικειμένων δεδομένων... 22 Β) Χρήση αντικειμένων δεδομένων... 22 α) Σταθερές (Constants)... 22 β) Μεταβλητές (Variables)... 22 γ) Σήματα (Signals).... 23 1.9 Βασικά χαρακτηριστικά της γλώσσας VHDL... 25 1.9.1) Συνδυαστική Λογική Σχεδίαση (Combinational Logic Design)... 25 1.9.2) Λογικές πράξεις (Logical operators)... 26 1.9.3) Σχεσιακές πράξεις (Relational operators).... 27 1.9.4) Πολυπλέκτης 4 - σε - 1 (Multiplexer 4 - to - 1).... 27 1.9.5) Ακολουθιακή Λογική Σχεδίαση (Sequential Logic Design).... 27 1.9.6) Προτερήματα του δομημένου τρόπου σχεδίασης.... 28 1.9.7) Καταχωρητής Ολίσθησης 4ψηφίων (4- bit Shift Register).... 29 1.10 Μοντέλα Ελέγχου-Επαλήθευσης... 29 1.11 Διαδικασία Εξομοίωσης Σχεδιασμού... 29 1.11.1) Εκτέλεση εξομοίωσης... 30 1.11.2) Αλγόριθμος Εξομοίωσης Ι... 30 ΚΕΦΑΛΑΙΟ ΙΙ... 31 ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Maxplus + II... 32 2.1 Σχεδίαση Ψηφιακών Συστημάτων (ALTERA)... 32 2.1.1) Συνοπτικό εγχειρίδιο χρήσης για το λογισμικό MAX+plusII... 32 2.1.2) Δημιουργία έργου (Project)... 33 2.1.3) Μεταγλωττιστής (Compiler)... 35 2.1.4) Επεξεργαστής κυματομορφών (Waveform Editor)... 39 2.1.5) Εκτέλεση προσομοίωσης (Simulation)... 44 2.1.6) Επιλογή προγραμματιζόμενης λογικής συσκευής Altera για υλοποίηση.... 46 2.1.7) Επιλογή ακίδων στην προγραμματιζόμενη λογική συσκευή Altera.... 49 2.1.8) Μεταγλώττιση Σχεδίου... 54 2.1.9) Φόρτωση και Έλεγχος... 55 2.2 Εφαρμογές... 58 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 2

Πτυχιακή Εργασία 2.3 Εισαγωγή σχεδίου με σχηματικό διάγραμμα (Graphic Editor)... 59 2.3.1) Εισαγωγή λογικών συμβόλων... 59 ΚΕΦΑΛΑΙΟ ΙΙΙ... 61 ΕΦΑΡΜΟΓΕΣ ΣΧΕΔΙΑΣΗΣ... 61 Εφαρμογή 1: Κύκλωμα Ελέγχου Σημάτων Αυτοκινήτου... 62 Διαδικασία Σχεδίασης:... 62 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 72 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 72 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 74 Σχολιασμός Κώδικα... 77 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 77 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 80 Εφαρμογή 2: Κύκλωμα Ελέγχου Φωτεινών Σηματοδοτών... 82 1 η Περίπτωση: Κύκλωμα Φωτεινών Σηματοδοτών Σε μια Διασταύρωση... 82 Κατά Τη Διάρκεια Της Ημέρας.... 82 Διαδικασία Σχεδίασης:... 82 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 88 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 89 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 90 Σχολιασμός Κώδικα... 93 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 93 2 η Περίπτωση: Κύκλωμα Ρύθμισης Φωτεινών Σηματοδοτών Σε Μια... 97 Διασταύρωση Κατά Τη Διάρκεια Της Νύχτας.... 97 Διαδικασία Σχεδίασης:... 97 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 103 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 103 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 105 Σχολιασμός Κώδικα... 107 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 107 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 109 3 η Περίπτωση: Κύκλωμα Ρύθμισης Φωτεινών Σηματοδοτών Σε Μια... 110 Διασταύρωση Κατά Τη Διάρκεια Της Ημέρας Αλλά Και Της... 110 Νύχτας.... 110 Διαδικασία Σχεδίασης:... 110 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 120 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 120 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 122 3 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας --Διαφοροποίηση.... 125 Σχολιασμός Κώδικα... 135 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 135 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 138 3 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας --Διαφοροποίηση.... 140 Εφαρμογή 3: Κύκλωμα Αυτόματου Πωλητή Αναψυκτικού... 143 1 η Περίπτωση: 20λεπτα 10λεπτά 1 ποτό.... 143 Διαδικασία Σχεδίασης:... 143 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 151 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 151 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 153 Σχολιασμός Κώδικα... 155 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 155 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 3

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 157 2 η Περίπτωση: 50λεπτα 20 λεπτά 10λεπτά 1 ποτό.... 159 Διαδικασία Σχεδίασης:... 159 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 170 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 170 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 173 Σχολιασμός Κώδικα... 176 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 176 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 178 3 η Περίπτωση: 50λεπτα 20 λεπτά 10λεπτά 1 ποτό Ρέστα.... 179 Διαδικασία Σχεδίασης:... 179 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 195 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 195 Σχολιασμός Κώδικα... 199 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 199 4 η Περίπτωση: 50λεπτα 20 λεπτά 10λεπτά 1 ποτό Ρέστα.... 201 Διαδικασία Σχεδίασης:... 201 Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL:... 206 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 206 Σχολιασμός Κώδικα... 213 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 213 ΠΑΡΑΡΤΗΜΑ Ι... 215 Η ΚΑΡΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΑΙ ΕΛΕΓΧΟΥ ΕΦΑΡΜΟΓΩΝ... 215 Π1. 1 Περιγραφή της Κάρτας... 216 Π1.2 Περιγραφή Κάρτας Προγραμματισμού και Εφαρμογών... 217 Π1. 3 Περιγραφή του Προγραμματιστή... 218 Π1.4 Πίνακες Κατανομής Ακίδων... 218 Π1.4.1 Κόκκινα, Κίτρινα και Πράσινα LEDs... 218 Π1.4.2 Ενδείκτης Επτά-τμημάτων με Κοινή Κάθοδο... 219 Ενδείκτης 7 τμημάτων... 219 Π1.4.3 Βομβητής... 219 Π1.4.4 LED σε Διάταξη Ζαριού... 220 Π1.4.5 LCD Οθόνη... 221 Π1.4.6 Κύκλωμα ρολογιού... 221 Π1.4.7 LED σε Μορφή Μήτρας 8x8... 222 Π1.4.8 Μικροελεγκτής 8051... 224 Π1.4.9 Διακόπτες Δεδομένων... 225 Π1.4.10 Διακόπτες Παλμών... 226 Π1.4.11 Πληκτρολόγιο... 227 Π1. 4.12 Μετατροπείς A/D και D/A... 227 ΠΑΡΑΡΤΗΜΑ ΙΙ... 228 ΚΩΔΙΚΕΣ... 229 Σχολιασμός για τους κώδικες των εφαρμογών... 229 Κώδικες... 231 Κώδικας clkgen1... 231 Κώδικας scounter10_up... 232 Κύκλωματα Ελέγχου Σημάτων Ενός Αυτοκινήτου... 233 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 233 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 235 Εφαρμογή 2: Κύκλωμα Ελέγχου Φωτεινών Σηματοδοτών... 238 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 4

Πτυχιακή Εργασία 1 η Περίπτωση: Κύκλωμα Φωτεινών Σηματοδοτών Σε μια Διασταύρωση... 238 Κατά Τη Διάρκεια Της Ημέρας.... 238 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 238 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 240 2 η Περίπτωση: Κύκλωμα Ρύθμισης Φωτεινών Σηματοδοτών Σε Μια... 242 Διασταύρωση Κατά Τη Διάρκεια Της Νύχτας.... 242 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 242 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 244 3 η Περίπτωση: Κύκλωμα Ρύθμισης Φωτεινών Σηματοδοτών Σε Μια... 246 Διασταύρωση Κατά Τη Διάρκεια Της Ημέρας Αλλά Και Της... 246 Νύχτας.... 246 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 246 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 248 3 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας --Διαφοροποίηση.... 250 Κύκλωματα Ενός Αυτόματου Πωλήτη Αναψυκτικού... 259 1 η Περίπτωση: 20λεπτα 10λεπτά 1 ποτό.... 259 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 259 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 261 2 η Περίπτωση: 50λεπτα 20λεπτά 10λεπτά 1 ποτό.... 263 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις.... 263 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 266 3 η Περίπτωση: 50λεπτα 20λεπτά 10λεπτά 1 ποτό Ρέστα.... 270 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 270 4 η Περίπτωση: 50λεπτα 20λεπτά 10λεπτά 2 ποτό Ρέστα.... 274 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας.... 274 Βιβλιογραφία... 280 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 5

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής ΚΕΦΑΛΑΙΟ Ι Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ VHDL Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 6

Πτυχιακή Εργασία 1.1 Ορισμός Της Γλώσσας VHDL Η VHDL είναι μια γλώσσα περιγραφής υλικού για την ανάπτυξη ολοκληρωμένων ψηφιακών ηλεκτρονικών κυκλωμάτων και συστημάτων. Το ακρωνύμιο της VHDL, που αποτελεί συντόμευση των λέξεων: VHSIC Hardware Description Language. Τα αρχικά VHSIC είναι µε τη σειρά τους μια συντόμευση Very High-Speed Integrated Circuit (Ολοκληρωμένα Κυκλώματα Υψηλής Ταχύτητας). Η VHDL, ως γλώσσα προγραμματισμού χρησιμοποιείται για την περιγραφή κυκλωμάτων ή υλικού (HDL). Μπορεί να χρησιμοποιηθεί, και, για την περιγραφή κυκλωμάτων ως προς την δομή (structure), τη ροή δεδομένων (dataflow) ή την συμπεριφορά (behavior). Παρέχει δυνατότητα περιγραφής της χρονικής συμπεριφοράς ή χρονισμού (timing) των κυκλωμάτων για εκτέλεση προσομοίωσης. Σε συνδυασμό με έναν μεταφραστή (compiler) χρησιμοποιείται για σύνθεση κυκλωμάτων σε ολοκληρωμένα ειδικής σχεδίασης (custom design) ή υλοποίηση σε κάποια διάταξη προγραμματιζόμενης λογικής (PLD ή FPGA), καθώς και από εργαλεία προσομοίωσης λειτουργίας. Με βάση αυτά τα χαρακτηριστικά η VHDL χαρακτηρίζεται σαν ένα εργαλείο ECAD (Electronic Computer Aided Design). Γενικά, σήμερα, η χρήση εργαλείων CAD έχει επεκταθεί καθώς η τεράστια ανάπτυξη της τεχνολογίας ημιαγωγών στην κατασκευή ολοκληρωμένων κυκλωμάτων έχει μετατοπίσει το κέντρο βάρους των μηχανικών από την λεπτομερειακή υλοποίηση κυκλωμάτων στην διαχείριση της αυξανομένης πολυπλοκότητας. Πιο συγκεκριμένα τη σημερινή εποχή, ο μηχανικός-σχεδιαστής περιορίζεται περισσότερο από την δυνατότητά του να ανταπεξέλθει στην πολυπλοκότητα της σχεδίασης του παρά από την ικανότητα της τεχνολογίας να την υποστηρίξει. Αυτό το χάσμα έρχεται να γεφυρώσει η VHDL επιτρέποντας μια υψηλού επιπέδου περιγραφή (Abstract) της σχεδίασης και κατόπιν µε την χρήση εργαλείων σύνθεσης (Logic Synthesis Tools) την αυτόματη αποτύπωση αυτής της σχεδίασης σε ολοκληρωμένη μορφή, η οποία είναι εντός των προδιαγραφών που θέτει ο μηχανικός. 1.2 Πλεονεκτήματα Της VHDL Στη Σχεδίαση Κυκλωμάτων Η γλώσσα VHDL αποτελεί μια πρότυπη βιομηχανική γλώσσα περιγραφής ψηφιακών κυκλωμάτων. Μια πρώτη έκδοση του προτύπου αυτού έγινε γνωστή το 1987 µε το όνομα IEEE11076, ενώ αργότερα το 1993 εμφανίστηκε μια βελτιωμένη έκδοσή της µε το όνομα IEEE1164. Και ως εκ τούτου είναι ανεξάρτητη του εργαλείου σχεδίασης CAD και του κατασκευαστή ή του τρόπου υλοποίησης του κυκλώματος (παρέχει δηλαδή φορητότητα και συμβατότητα σχεδίασης). Η χρήση προγράμματος (κώδικα) αντί σχηματικών είναι αποτελεσματικότερη για τη σχεδίαση μεγάλων και πολύπλοκων κυκλωμάτων, τόσο λόγω ταχύτερης σύλληψης (capture) όσο και ευκολότερης διαχείρισης και τροποποίησης της σχεδίασης. Περιλαμβάνει ακόμα, την δυνατότητα επαναχρησιμοποίησης σχεδιάσεων και πρόσβαση σε έτοιμες βιβλιοθήκες. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 7

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Όλα τα γνωστά πλεονεκτήματα των υψηλού επιπέδου γλωσσών προγραμματισμού: Δόμηση Παραμετροποίηση Βρόχοι επανάληψης Εντολές συνθήκης Ιεράρχηση (με τον ορισμό υποενοτήτων) 1.3 ιαφορές VHDL Με C/C++ Η VHDL είναι όπως αναφέραμε μια γλώσσα περιγραφής υλικού (HDL). Σε σχέση µε γνωστές υψηλού επιπέδου γλώσσες προγραµµατισµού ( C/C++) υπάρχουν μερικές βασικές διαφορές : Στη VHDL δεν υπάρχει κάποια συγκεκριμένη ροή προγράμματος όπως στην C. Κάθε έκφραση στην VHDL εκτελείται παράλληλα έκτος αν δηλωθεί το αντίθετο. Βέβαια, υπάρχουν constructs στην VHDL για κατ εξαίρεση σειριακή ροή αλλά και αυτό από µόνο του δηλώνει ότι η VHDL είναι μια παράλληλη γλώσσα, ότι δηλαδή αυτό γίνεται κατ εξαίρεση. Η VHDL επιτρέπει την χρήση χρονικών καθυστερήσεων. Μπορούμε δηλαδή να πούμε ότι μια δήλωση εκτελείται μετά την πάροδο ενός χρονικού ορίου. Ναι µεν σε μερικές γλώσσες υποστηρίζεται η χρήση χρονικών καθυστερήσεων αλλά αυτό γίνεται µέσω διαφόρων πρόσθετων βιβλιοθηκών και δεν αποτελούν αναπόσπαστο κομμάτι της γλώσσας. Θα πρέπει να σημειώσουμε, επίσης, ότι η γλώσσα αυτή έχει κληρονομήσει πολλά στοιχεία από τη γλώσσα προγραμματισμού ADA. Τα σύγχρονα ψηφιακά συστήματα είναι αρκετά περίπλοκα. Απαιτείται αντιμετώπιση της πολυπλοκότητας για σχεδίαση με σιγουριά τήρησης των προδιαγραφών. Ένας τρόπος είναι ο συστηματικός σχεδιασμός: χρήση ιεραρχικής δομής (από αφηρημένα μοντέλα σε στοιχεία βιβλιοθήκης). Κάθε υποσύστημα μπορεί να αντιμετωπιστεί ως ανεξάρτητη αφηρημένη οντότητα (χωρίς λεπτομέρειες υλοποίησης). Μοντέλο: Τρόπος αναπαράστασης πληροφοριών και επίπεδο αφαίρεσης. 1.4 Μοντελοποίηση Συστημάτων Η VHDL χρησιμοποιείται για την ανάπτυξη μοντέλων ενός συστήματος. Ανάγκες χρήσης μοντέλων: καταγραφή προδιαγραφών τεκμηρίωση επαλήθευση με τη χρήση προσομοίωσης τυπική επαλήθευση (formal verification) σύνθεση Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 8

Πτυχιακή Εργασία Στόχος: αξιόπιστη διαδικασία σχεδίασης, με ταυτόχρονη ελαχιστοποίηση του κόστους και του απαιτούμενου χρόνου. αποφυγή σχεδιαστικών λαθών 1.5 Τέσσερις Περιοχές & Επίπεδα Μοντελοποίησης 1.5.1) Περιοχή & Επίπεδο Μοντελοποίησης 1.5.2) Περιοχή & Επίπεδο Μοντελοποίησης Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 9

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 1.5.3) Περιοχή & Επίπεδο Μοντελοποίησης 1.5.4) Περιοχή & Επίπεδο Μοντελοποίησης Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 10

Πτυχιακή Εργασία 1.6 Μοντέλα Ψηφιακών Συσκευών Στα Οποία Βασίζεται η VHDL Η VHDL είναι μία γλώσσα περιγραφής υλικού χωρίς να κάνει υποθέσεις για την τεχνολογία ή για την μεθοδολογία που ακολουθείται κατά τον σχεδιασμό μιας ψηφιακής συσκευής. Αντί αυτού χρησιμοποιεί ένα μοντέλο περιγραφής και σχεδίασης που περιέχει τα χαρακτηριστικά συμπεριφοράς, χρονισμού και δομής των ψηφιακών συσκευών. Αυτό το μοντέλο είναι κατάλληλο για την περιγραφή όλων των συσκευών από αυτές υψηλού επιπέδου μέχρι και περιγραφές σε επίπεδο πυλών. Το γενικό μοντέλο λοιπόν στο οποίο βασίζεται η VHDL αποτελείται από τρία ανεξάρτητα αλληλοεξαρτώμενα μοντέλα, τα οποία αναφέρθηκαν και παραπάνω: ένα μοντέλο συμπεριφοράς (behavioral model), ένα μοντέλο χρονισμού (timing model) και ένα μοντέλο δομής (structural model). Αυτά τα τρία μοντέλα ολοκληρώνονται σε μία μόνο γλώσσα. Α) Μοντέλο συμπεριφοράς (behavioral model) Η συμπεριφορά μπορεί να οριστεί ως η λειτουργική μετάφραση ενός συγκεκριμένου συστήματος. Όλα τα μοντέλα έχουν μία δομή και μία συμπεριφορά. Στην VHDL η δομή ενσωματώνεται στην γλώσσα και ο σχεδιαστής έχει τη δυνατότητα να μπλέξει τη δομή και τη συμπεριφορά οπουδήποτε μέσα στο μοντέλο. Είσοδος Διακριτό Σύστημα Έξοδος Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 11

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Σχήμα 1.1 : Αναπαράσταση ενός διακριτού συστήματος Μία ψηφιακή συσκευή είναι ένα διακριτό σύστημα, δηλαδή ένα σύστημα που μετασχηματίζει είσοδο διακριτών τιμών σε έξοδο διακριτών τιμών. Αυτό το επιτυγχάνει εκτελώντας έναν αριθμό εργασιών μετασχηματισμών στις τιμές εισόδου. Τα αποτελέσματα αυτών των εργασιών περνάνε σε άλλες εργασίες και τελικά στις τιμές εξόδου. Σχήμα 1.2 : Αναπαράσταση ενός διακριτού συστήματος P με δύο εισόδους και μία έξοδο Σαν παράδειγμα μπορούμε να θεωρήσουμε ένα διακριτό σύστημα Ρ, του οποίου η συμπεριφορά είναι η λογική συνάρτηση XOR. Το συγκεκριμένο σύστημα θα έχει δύο διακριτές τιμές εισόδου και μία διακριτή τιμή εξόδου. Τα διακριτά συστήματα μπορούν να ποικίλουν από τα πολύ απλά ως τα πολύ σύνθετα. Στην VHDL όλες οι λειτουργίες ενός διακριτού συστήματος περιγράφονται με έναν αφαιρετικό μηχανισμό. Αυτή η αφαίρεση ωστόσο δεν συνεπάγονται πολυπλοκότητα. Όπως προαναφέρθηκε ένα διακριτό συστήματα είναι μία συλλογή λειτουργιών που εφαρμόζονται σε τιμές που περνάνε μέσα από το σύστημα. Στην VHDL αναφερόμαστε σε κάθε τέτοια εργασία ως διεργασία (process) και τα μονοπάτια από τα οποία οι τιμές περνάνε μέσα από το σύστημα ονομάζονται σήματα (signals). Στην VHDL όλες οι διεργασίες σε ένα μοντέλο λέμε ότι εκτελούνται ταυτόχρονα. Έτσι, μπορούμε να πούμε ότι το μοντέλο της VHDL είναι μία συλλογή από ανεξάρτητα προγράμματα που τρέχουν παράλληλα. Για τον συντονισμό αυτών των διεργασιών χρειάζεται ένας μηχανισμός και αυτός ο μηχανισμός είναι το σήμα. Συγκεκριμένα τα σήματα ορίζουν ένα μονοπάτι δεδομένων (data pathway) μεταξύ δύο διεργασιών. Αυτό το μονοπάτι δεδομένων είναι κατευθυνόμενο (directed), η μία πλευρά δημιουργεί μία τιμή και η άλλη λαμβάνει την τιμή αυτή. Γενικότερα, τα μονοπάτια δεδομένων έχουν κάποια ειδικά χαρακτηριστικά, όπως ο τύπος που συνδέεται με το μονοπάτι και ορίζει τη διακύμανση των τιμών που μπορούν να περάσουν από αυτό. Για παράδειγμα αν ο τύπος είναι ακέραιος δεν μπορεί να περάσει τιμή πραγματικού αριθμού ή οποιαδήποτε άλλη τιμή εκτός από ακέραιο αριθμό. Όλη η επικοινωνία μεταξύ των διεργασιών γίνεται μέσω αυτών των μονοπατιών. Οι διεργασίες εκτελούνται μέχρι να τεθούν σε διαθεσιμότητα (suspended). Όταν μία διεργασία τεθεί σε διαθεσιμότητα μπορεί να ενεργοποιηθεί ξανά. Ένας τρόπος γι αυτήν την ενεργοποίηση είναι να ανατίθεται στην διεργασία μία μέγιστη χρονική διάρκεια για την οποία πρέπει να μείνει σε διαθεσιμότητα. Μετά το τέλος αυτής της χρονικής διάρκειας η διεργασία ενεργοποιείται. Ένας άλλος τρόπος ενεργοποίησης είναι όταν κάποιες δεδομένες συνθήκες ικανοποιούνται. Έτσι ο σχεδιαστής του συστήματος μπορεί να καθορίσει την ενεργοποίηση μιας διαδικασίας όταν συμβούν αλλαγές στο σύστημα. Με άλλα λόγια μπορεί να εκφραστεί η ευαισθησία μιας διαδικασίας στην τιμή ορισμένων μονοπατιών δεδομένων. Αυτά τα μονοπάτια αποκαλούνται κανάλια ευαισθησίας (sensitivity channels). Όταν η τιμή ενός καναλιού Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 12

Πτυχιακή Εργασία ευαισθησίας αλλάζει τότε μία διεργασία επανεργοποιείται. Χρησιμοποιείται μία δήλωση αναμονής (wait statement) για να καθορίσει οποιεσδήποτε συνθήκες χρονικής αναμονής και κανάλια ευαισθησίας για μία διεργασία. Σαν παράδειγμα μπορούμε να σκεφτούμε το σύστημα που αναφέρθηκε παραπάνω με την λογική συνάρτηση ΧΟR, όπου οι είσοδοι είναι κανάλια ευαισθησίας και πρέπει να υπάρχουν και οι δύο τιμές για να ενεργοποιηθεί η διεργασία του συστήματος και να παραχθεί η τιμή εξόδου. Σχήμα 1.3 : Το διακριτό σύστημα P με τα μονοπάτια δεδομένων και τις διεργασίες Το διακριτό σύστημα που χρησιμοποιείται για να μοντελοποιηθεί μία ψηφιακή συσκευή περιλαμβάνεται μέσα σε μία σχεδιαστική οντότητα (design entity). Μία τέτοια οντότητα έχει δύο μέρη : μία δήλωση οντότητας και ένα σώμα αρχιτεκτονικής (architectural body). Σε πολλά συστήματα είναι δυνατόν να αποσυντεθεί η συμπεριφορά σε ένα σύνολο ενεργειών. Έτσι το διακριτό σύστημα P που είδαμε μπορεί να αναλυθεί σε ένα σύστημα Q με τρεις λειτουργίες όπως φαίνεται στο Σχήμα. 1.4. Σχήμα 1.4 : Αναπαράσταση του διακριτού συστήματος Q Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 13

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Β) Μοντέλο χρονισμού (timing model) Το μοντέλο των ψηφιακών συσκευών που χρησιμοποιείται εδώ βασίζεται στα ερεθίσματα. Όταν υπάρχει ένα ερέθισμα το μοντέλο ανταποκρίνεται και έπειτα περιμένει για περισσότερα ερεθίσματα. Τα ερεθίσματα συμβαίνουν σε συγκεκριμένες χρονικές στιγμές. Αυτός ο χρόνος αναφέρεται στον χρόνο προσομοίωσης. Επειδή η VHDL είναι παράλληλη αλλά έχει σχεδιαστεί για να εκτελείται και σε μη-παράλληλα συστήματα, καθίσταται απαραίτητο να καθοριστεί ο χρόνος προσομοίωσης, ο οποίος με τη σειρά του καθορίζει το πότε συμβαίνει κάποιο γεγονός κατά τη διάρκεια της προσομοίωσης. Αν δεν υπήρχε αυτός ο χρονικός καθορισμός ένα μοντέλο μπορεί να προσομοιώνονταν διαφορετικά σε δύο διαφορετικούς προσομοιωτές VHDL. Όταν λοιπόν μία διεργασία δημιουργεί μία τιμή σε ένα μονοπάτι δεδομένων μπορεί επίσης να προσδιορίζει ένα χρονικό διάστημα πριν να σταλεί η τιμή στο μονοπάτι αυτό. Αυτό αναφέρεται ως προγραμματισμός μιας συναλλαγής (scheduling a transaction). Είναι δυνατόν να προγραμματιστεί οποιοσδήποτε αριθμός συναλλαγών για ένα μονοπάτι δεδομένων. Η συλλογή αυτών των συναλλαγών για ένα σήμα αποκαλείται οδηγός του σήματος (driver of the signal). Ο οδηγός είναι ένα σύνολο από ζευγάρια χρόνων/τιμών, το οποίο κρατά την τιμή κάθε συναλλαγής και τον χρόνο στον οποίο η συναλλαγή πρέπει να συμβεί. Η VHDL έχει ένα μοντέλο χρονισμού δύο επιπέδων. Αυτό το μοντέλο αποκαλείται κύκλος προσομοίωσης και ακολουθείται το γενικότερο πλαίσιο των ερεθισμάτων. Για παράδειγμα, ένα λειτουργικό κομμάτι αντιδρά (reacts) όταν υπάρχει δραστηριοποίηση στις εισόδους του, τότε ανταποκρίνεται (responds) μέσω των εξόδων του. Οι διεργασίες λοιπόν είναι τα λειτουργικά κομμάτια που συνδέονται με τα σήματα. Έτσι, στο πρώτο στάδιο του κύκλου προσομοίωσης οι τιμές διαδίδονται μέσω των μονοπατιών δεδομένων. Αυτό το στάδιο ολοκληρώνεται όταν όλα τα μονοπάτια δεδομένων για τα οποία έχει προγραμματιστεί να πάρουν τιμή και να ανανεώσουν τις τιμές τους. Κατά το δεύτερο στάδιο οι διεργασίες που λαμβάνουν τιμή στα κανάλια ευαισθησίας ενεργοποιούνται. Αυτό το στάδιο ολοκληρώνεται όταν όλες οι διεργασίες ανασταλούν, οπότε το ρολόι προσομοίωσης τίθεται στον επόμενο χρόνο προσομοίωσης. Στο μοντέλο χρονισμού υπάρχει πάντα μία καθυστέρηση μεταξύ της χρονικής στιγμής που μία διεργασία τοποθετεί μία τιμή σε ένα μονοπάτι δεδομένων και της χρονικής στιγμής που το μονοπάτι δεδομένων αντιδρά σε αυτήν την τιμή. Συγκεκριμένα αν δεν δοθεί καμία τιμή στη ανάθεση μιας τιμής σε ένα μονοπάτι δεδομένων τότε χρησιμοποιείται μία δέλτα καθυστέρηση (delta delay).έτσι υπάρχει πάντα μία καθυστέρηση μεταξύ της ανάθεσης και της ανανέωσης της τιμής ενός σήματος. Αν η νέα τιμή του σήματος διαφέρει από την προηγούμενη στο μονοπάτι δεδομένων τότε λέμε ότι έχει συμβεί ένα γεγονός. Γ)Μοντέλο δομής (structural model) Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 14

Πτυχιακή Εργασία Όταν ένα μοντέλο μιας ψηφιακής συσκευής απαιτεί περισσότερες από μερικές διαδικασίες η διαχείριση της αναπαράστασης του διακριτού συστήματος γίνεται πολύ δύσκολη. Τέτοια μοντέλα συχνά αποσυντίθενται σε ενότητες που είναι λειτουργικά όμοιες. Αυτή η αποσύνθεση αποκαλείται δομή του μοντέλου. Έτσι ένα διακριτό σύστημα μπορεί να διαιρεθεί σε υποσυστήματα. Η διασύνδεση δύο υποσυστημάτων είναι στην πραγματικότητα ένα μονοπάτι δεδομένων από το ένα στο άλλο δίνοντας τη δυνατότητα με αυτόν τον τρόπο για την επίτευξη επικοινωνίας μεταξύ τους. Αυτές οι διασυνδέσεις αποκαλούνται θύρες (ports) και έχουν κάποια ειδικά χαρακτηριστικά. Καταρχήν ο ορισμός μιας θύρας αντιπροσωπεύει τη δήλωση ενός σήματος (signal) και επομένως ενός μονοπατιού δεδομένων (data pathway). Μπορούμε να σκεφτούμε αυτά τα μονοπάτια σαν έναν σωλήνα που συνδέει δύο διεργασίες. Αυτές οι συνδεόμενες λειτουργικές μονάδες μπορούν να θεωρηθούν μαύρα κουτιά που έχουν εισόδους και εξόδους. Στο μοντέλο της VHDL για ένα διακριτό σύστημα καθένα από αυτά τα κουτιά μπορεί να αναπαρασταθεί από μία σχεδιαστική οντότητα της VHDL. Σχήμα 1.6 : Αποσύνθεση του διακριτού συστήματος Q σε δύο υποσυστήματα Υπάρχουν πολλοί τρόποι με τους οποίους το μοντέλο δομής αλληλεπιδρά με το μοντέλο συμπεριφοράς. Πρώτα απ όλα είναι δυνατόν να παρεμβάλλεται μία συνάρτηση μετατροπής τύπου στο μονοπάτι δεδομένων. Αυτό είναι πολύ σημαντικό για την περίπτωση που δύο διεργασίες πρέπει να επικοινωνήσουν αλλά τα διακριτά συστήματα στα οποία ανήκουν δεν έχουν τα ίδια χαρακτηριστικά. Μπορούμε να σκεφτούμε το παράδειγμα όπου έχουμε από την μία πλευρά ακέραιους και από την άλλη πραγματικούς αριθμούς. Ένας άλλος σημαντικός τρόπος με τον οποίο η δομή και η συμπεριφορά αλληλεπιδρούν είναι με την ανάλυση των αναλυμένων σημάτων (resolved signals). Αν περισσότεροι από ένας οδηγοί έχουν οριστεί για ένα σήμα (δηλαδή αν περισσότερες από μία διεργασίες θέτουν τιμή στο σήμα), τότε το σήμα είναι ένα αναλυμένο σήμα (resolved signal). Ο σχεδιαστής πρέπει να αναθέσει μία συνάρτηση με αυτό το σήμα έτσι ώστε να λαμβάνονται οι διαφορετικές τιμές και να παράγεται στο τέλος μία μοναδική τιμή. Σε μερικές περιπτώσεις μπορούμε να αποσυνδέσουμε (disconnect) τον οδηγό ενός αναλυτικού σήματος, δηλαδή να κλείσει (turn off) τον οδηγό. Όταν ο οδηγός κλείσει, δεν περνάει στην αναλυτική συνάρτηση και επομένως δεν παίρνει μέρος στον καθορισμό της τελικής τιμής. Υπάρχουν δύο τύποι αναλυτικών σημάτων : οι καταχωρητές (registers) και οι δίαυλοι (busses). Ένα σήμα καταχωρητή (register signal) δεν αναλύεται αν όλοι οι οδηγοί του κλείσουν, ενώ ένα σήμα διαύλου αναλύεται όταν όλοι οι οδηγοί του είναι κλειστοί. Αυτό σημαίνει ότι η αναλυτική συνάρτηση για ένα σήμα διαύλου πρέπει να διαχειρίζεται την ανάλυση μιας άδειας λίστας τιμών. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 15

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Σχήμα 1.7 : Ανάλυση Σημάτων σε μία Δομημένη Ιεραρχία Όταν μία θύρα αναλύεται τότε η αναλυτική τιμή καθορίζεται πριν περάσει έξω από το υποσύστημα που περιέχει την θύρα. Τα αναλυτικά σήματα έχουν πολύ σημαντικές επιδράσεις για τις θύρες σε ένα μοντέλο. Αν η τιμή αναλυθεί καθώς περάσει από μία σειρά θυρών, τότε η τελική τιμή θα είναι αυτή που θα καθοριστεί από την πρώτη θύρα. Γενικότερα το ψηφιακό κύκλωμα που περιγράφει η VHDL μπορεί να είναι από μία απλή λογική πύλη έως ένα ολοκληρωμένο ψηφιακό σύστημα. Στην VHDL το ψηφιακό κύκλωμα αναφέρεται ως οντότητα (entity). Όταν όμως μία οντότητα Χ εμπεριέχεται μέσα σε μία οντότητα Υ τότε αυτή ονομάζεται στοιχείο (component). Σχήμα 1.8 : Παράδειγμα δομής στην VHDL με τις οντότητες και τα στοιχεία Το παραπάνω σχήμα θα το χρησιμοποιήσουμε ως σημείο αναφοράς για την ανάλυση των βασικών στοιχείων της VHDL. Από το σχήμα διαπιστώνουμε κάτι πολύ σημαντικό, ότι κάθε οντότητα ή στοιχείο αποτελείται από την δήλωση της οντότητας (entity declaration) και το κομμάτι της αρχιτεκτονικής της οντότητας Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 16

Πτυχιακή Εργασία (architecture body).για την περιγραφή ενός entity, η VHDL προσφέρει πέντε διαφορετικά constructs τα οποία και ονομάζονται μονάδες σχεδίασης (design units): Entity declaration Architecture body Configuration declaration Packages Διακύρηξη Οντοτήτων (Entity Declaration) Είναι το κοµµάτι του κώδικα το οποίο δηλώνει το όνομα του συγκεκριμένου κυκλώματος και επίσης παραθέτει και μια λίστα µε τα Ports του κυκλώματος. Με τον όρο ports, εννοούμε τα σήματα µέσω των οποίων η συγκεκριμένη οντότητα (entity) επικοινωνεί µε το εξωτερικό περιβάλλον (είσοδοι, έξοδοι, κ.ά.). Σώμα Αρχιτεκτονικής (Architecture Body) Το κομμάτι entity declaration δεν αναφέρει τίποτα για το εσωτερικό του entity. Απλά δηλώνει το όνομα αλλά και τα interface ports. Οι εσωτερικές λεπτομέρειες του entity (δηλ. του κυκλώματος) δηλώνονται στον κύριο κορμό της σχεδίασης που είναι το Architecture body µε έναν από τους κάτωθι τρόπους σχεδίασης: 1. Ως ένας συνδυασμός αλληλοσυνδεόμενων στοιχείων (components). Structural Style of Modeling (Δομημένος τρόπος σχεδίασης). 2. Ως ένας συνδυασμός «σειριακών» δηλώσεων και αναθέσεων. Behavioral Style of Modeling (Σχεδίαση Τρόπου Συμπεριφοράς). 3. Ως ένας συνδυασμός «παράλληλων» δηλώσεων και αναθέσεων. Dataflow Style of Modeling (Σχεδίαση Διαγράμματος ροής). 4. Ως ένας συνδυασμός των παραπάνω. 1. Δομημένος τρόπος σχεδίασης (Structural Style of Modeling). Ο δομημένος τρόπος σχεδίασης περιγράφει το κύκλωμα κυρίως µε βάση τα στοιχεία (components) που το απαρτίζουν. Αυτά μπορεί να είναι στοιχεία από διάφορες βιβλιοθήκες ή και από τον ίδιο το χρήστη από µία άλλη σχεδίασή του. Το αν ο σχεδιαστής θα χρησιμοποιήσει στοιχεία από «έτοιμες» βιβλιοθήκες ή θα προτιμήσει δικής του κατασκευής στοιχεία (generic/user-defined components) είναι ένα σημαντικό θέμα, το οποίο επιλύεται µε βάση την εμπειρία του αλλά και µε βάση τις απαιτήσεις της σχεδίασής του. Το Architecture body, στο δομημένο τρόπο σχεδίασης, ορίζει ποια components εμπεριέχονται στη συγκεκριμένη σχεδίαση καθώς και το πώς ενώνονται μεταξύ τους. Τα κύρια στοιχεία της VHDL που χρησιμοποιούνται σε αυτό τον τρόπο σχεδίασης είναι : Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 17

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Component declaration and instantiation ( ήλωση στοιχείων). Port mapping and signal interface lists (Αναφορά στον τρόπο σύνδεσης του κάθε στοιχείου της σχεδίασης µε τα υπόλοιπα. Δηλαδή η έξοδος του στοιχείου σε ποια είσοδο άλλου στοιχείου πηγαίνει και µε τη χρήση ποιου σήµατος). Libraries and packages (Βιβλιοθήκες και πακέτα). Signals (Για διασυνδέσεις). Τα ορισµένα στοιχεία κατόπιν «αποτυπώνονται» στο κομμάτι των δηλώσεων (instantiated). Η αποτύπωση (instantiation) γενικά είναι μια παράλληλη δήλωση. Γι αυτό το λόγο δεν παίζει ρόλο η σειρά των δηλώσεων. Ο δομημένος τρόπος σχεδίασης γενικά δείχνει απλά το πώς συνδέονται τα διάφορα στοιχεία μεταξύ τους. Τα στοιχεία µε αυτόν τον τρόπο σχεδίασης αποτελούν «µαύρα κουτιά», δηλαδή δεν γίνεται καμία αναφορά για τη συμπεριφορά ή τη λειτουργία τους. Γι αυτό το λόγο αλλά και για άλλους, ο δομημένος τρόπος σχεδίασης χρησιμοποιείται συχνά στο υψηλότερο επίπεδο σχεδίασης έτσι ώστε να γίνεται ένας διαυγής καθορισμός των επιμέρους στοιχείων της τελικής σχεδίασης αλλά και για να έχει η σχεδίαση μια καθαρά ιεραρχική δομή. 2. Συµπεριφοριστικός τρόπος σχεδίασης (Behavioral Style of Modeling ). Ο τρόπος σχεδίασης με βάση την συμπεριφορά εμπεριέχει «παράλληλες» δηλώσεις µε κομμάτια σειριακών δηλώσεων οι οποίες περιγράφουν τις εξόδους του κυκλώματος σε συγκεκριμένες χρονικές στιγμές και µε συγκεκριμένες εισόδους. Από όλους τους τρόπους σχεδίασης µόνο ο συµπεριφοριστικός τρόπος χρησιμοποιεί άμεσα τις έννοιες του χρόνου και του ελέγχου. Αυτός ο τρόπος γενικά, περιγράφει τις λειτουργίες του κυκλώματος σε αλγοριθμικό επίπεδο. Τα κύρια στοιχεία της VHDL που χρησιμοποιούνται σε αυτό τον τρόπο σχεδίασης είναι : Process statements and sensitivity list. Sequential statements (σειριακές δηλώσεις). Variables (μεταβλητές). Ο συµπεριφοριστικός τρόπος σχεδίασης περιγράφει τη συμπεριφορά ενός entity µε ένα αριθμό δηλώσεων, οι οποίες εκτελούνται σειριακά, δηλαδή σύμφωνα µε τη σειρά που αυτές έχουν. Οι δηλώσεις αυτές βρίσκονται μέσα σε ένα process (διαδικασία) δεν αναφέρονται στη δομή του κυκλώματος entity αλλά µόνο στη λειτουργικότητά του. Από την άλλη, ένα process εξωτερικά είναι μια παράλληλη δήλωση και εκτελείται παράλληλα (δηλαδή άσχετα µε τη θέση του σε σχέση µε άλλες παράλληλες δηλώσεις ή άλλα process). Όπως και στο δομημένο τρόπο σχεδίασης, ένα process έχει και αυτό ένα κομμάτι ορισμών (declarative part) και ένα κομμάτι δηλώσεων (statement part). Οι δηλώσεις που υπάρχουν στο statement part εκτελούνται σειριακά. Τέλος αξίζει να αναφερθεί ότι ο συµπεριφοριστικός τρόπος σχεδίασης μπορεί να περιγράψει και συνδυαστικά αλλά και ακολουθιακά κυκλώματα. Άρα είναι ιδανικό εργαλείο για την υλοποίηση µηχανών πεπερασµένων καταστάσεων (FSMs). 3. Σχεδίαση Διαγράμματος Ροής (Dataflow Style of Modeling). Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 18

Πτυχιακή Εργασία Με τη χρήση σχεδίασης διαγράμματος ροής για την υλοποίηση ενός κυκλώματος, περιγράφουμε απλά τη «ροή» των δεδομένων μεταξύ στοιχείων συνδυαστικής λογικής, όπως απλές λογικές πύλες, αθροιστές, αποκωδικοποιητές. Με άλλα λόγια περιγράφεται το RTL (Register-Transfer-Level) του κυκλώματος. Τα κύρια στοιχεία της VHDL που χρησιμοποιούνται σε αυτό τον τρόπο σχεδίασης είναι : Operators (πράξεις : λογικές, σχεσιακές, αριθμητικές). Παράλληλες δηλώσεις. Με αυτόν τον τρόπο σχεδίασης η δομή του κυκλώματος δεν ορίζεται άμεσα, δηλαδή µε την «φανερή» χρήση στοιχείων (components), όπως µε την structural δομή, αλλά έμμεσα. Συνοψίζοντας για την σχεδίαση dataflow, µπορούµε να πούµε ότι αυτή δεν είναι ιδανική για την περιγραφή ακολουθιακών κυκλωμάτων (δηλαδή κυκλωμάτων που έχουν clock). Αντίθετα όπως υποδηλώνει και το όνομα του, αυτός ο τρόπος σχεδίασης είναι κατάλληλος για περιγραφή κυκλωμάτων που υπάρχει «ροή δεδομένων», όπως ALUs. 4. Συνδυασµός των παραπάνω (Mixed Style of Modeling). Είναι δυνατό µία σχεδίαση να περιέχει και τους τρεις προαναφερθέντες τρόπους σχεδίασης. Δηλαδή να γίνεται χρήση components (Structural Modeling), παράλληλες δηλώσεις (Dataflow Modeling) καθώς και processes (Behavioral Modeling). Το πιο συνηθισμένο όμως είναι να συνυπάρχει ο dataflow τρόπος σχεδίασης µε έναν από τους άλλους δύο. 1.7 Οργάνωση της σχεδίασης (Design Organization) Βιβλιοθήκες (Libraries) Σχεδόν καμία σχεδίαση που κάνουμε δεν είναι απόλυτα αυτόνομη. Πάντα θα γίνεται αναφορά σε κάποιο block, το οποίο αναπαριστά ένα component ή έναν ορισμό. Αυτά μπορεί να είναι αποθηκευμένα στην ίδια βιβλιοθήκη µε το παρόν σχέδιο ή σε κάποια ευρύτερη (global) βιβλιοθήκη. Επίσης κάθε βιβλιοθήκη χωρίζεται σε επιμέρους τμήματα, ανάλογα µε τα είδη αναφορών που έχει. Η δομή μίας βιβλιοθήκης φαίνεται στο παρακάτω σχήμα: Dessign File Design Unit Compilation Library Unit Primary Unit Design Unit Library Unit Secondary +ext.library Unit refs Design Unit Library Unit +ext.library Primary Unit refs Compilation Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 19

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Design Unit Design Unit Primary Unit Design Unit Design Unit Secondary Unit Σχήμα 1.9: Δομή Βιβλιοθήκης Ένα design file περιέχει τον VHDL κώδικα ενός στοιχείου (element) του σχεδίου. Πολλά design files μπορεί να χρησιμοποιηθούν για την εφαρμογή πολλών elements του ίδιου σχεδίου. Κάθε τέτοιο αρχείο μπορεί και να περιέχει κομμάτι(α) της δομής ενός στοιχείου κυκλώματος. Αυτά τα κομμάτια (units) χωρίζονται σε: Πρωτεύοντα (primary units). Περιέχουν τον ορισμό ενός entity ή ένα πακέτο (package). Δευτερεύοντα (secondary units). Περιέχουν τον ορισμό ενός architecture body ή ένα πακέτο (package). Τα primary units πρέπει να «περάσουν» τον μεταγλωτισμό (compilation) και να αποθηκευτούν σε μια βιβλιοθήκη πριν ακολουθήσουν τα δευτερεύοντα με τα οποία συνδέονται. Το σύνολο αυτών των μονάδων απαρτίζουν τα library units. Πακέτα (Packages). Ο ορισμός πακέτων χρησιμοποιείται για την αποθήκευση ενός συνόλου κοινών στοιχείων (components), διαδικασιών (procedures), συναρτήσεων (functions), τύπων (types), υποκατηγοριών (subtypes), τα οποία χρησιμοποιούνται συχνά από τον σχεδιαστή. Δήλωση πακέτων (package declaration) καθώς και τα πακέτα τα ίδια (package body) είναι σχεδιαστικές μονάδες(design units), κατά συνέπεια μπορούν να κάνουν χρήση των δεδομένων άλλων πακέτων. Ένα παράδειγμα πακέτου που μπορεί να έχουν πρόσβαση όλοι οι χρήστες είναι το STANDARD. Αυτό δεν μπορεί να τροποποιηθεί από τον χρήστη και μαζί με το πακέτο TEXTIO, βρίσκονται μέσα στη βιβλιοθήκη STD. Η ειδική χρησιμότητα των πακέτων δεν φαίνεται εκ πρώτης όψεως. Όμως αξίζει να αναφερθεί ότι μερικά εξειδικευμένα πακέτα που προσφέρουν οι εταιρίες κατασκευής ASICs (Application Specific ICs) και FPGAs (Field Programmable Gate Arrays), μπορούν να βοηθήσουν τον σχεδιαστή να υλοποιήσει ένα σύστημα βασισμένος σε μια συγκεκριμένη τεχνολογία. Πρόσβαση σε βιβλιοθήκες και πακέτα Πρώτα απ' όλα να σημειωθεί ότι υπάρχουν μονάδες σχεδίου (design units) μέσα σε βιβλιοθήκες που είναι ορατά σε κάθε σχεδίαση. Αυτά βρίσκονται στο STANDARD πακέτο στην STD βιβλιοθήκη καθώς και σε όλα τα πακέτα της WORK βιβλιοθήκης. Άμα τυχόν αυτά δεν ήταν ορατά στον χρήστη τότε κάθε σχεδίαση του έπρεπε να προαναφέρει τις ακόλουθες δηλώσεις: Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 20

Πτυχιακή Εργασία library STD, WORK; use STD.STANDARD.all - δήλωση βιβλιοθηκών - δήλωση όλων των στοιχείων ενός πακέτου Η πρώτη δήλωση ονομάζεται library clause και κάθε βιβλιοθήκη μπορεί να γίνει ορατή στη σχεδίαση του χρήστη με αυτόν τον τρόπο. Αντίστοιχα η δεύτερη δήλωση ονομάζεται use clause και καλεί συγκεκριμένα πακέτα ή στοιχεία πακέτων από μία βιβλιοθήκη. Όμως, αν ο χρήστης θέλει να έχει πρόσβαση σε ένα αντικείμενο από ένα πακέτο, δεν είναι αναγκαίο να «φορτώσει» όλο το πακέτο αλλά μόνο το επίμαχο αντικείμενο. Ας υποθέσουμε ότι το αντικείμενο είναι μία συνάρτηση (procedure) ή ένα στοιχείο (component) με το όνομα DECODE και βρίσκεται στο πακέτο MY_PROCS μέσα στη βιβλιοθήκη MY_LIB. Τότε η πρόσβαση γίνεται ως εξής: MY_LIB.MY_PROCS.DECODE; 1.8 Τύποι δεδομένων και αντικείμενα Οτιδήποτε μπορεί να έχει μία τιμή (όπως ένα σήμα) είναι ένα αντικείμενο στην VHDL. Κάθε αντικείμενο έχει έναν τύπο, ο οποίος δηλώνει τις τιμές που μπορεί να πάρει το αντικείμενο. Ο τύπος κάθε αντικειμένου μπορεί να καθοριστεί στατικά (statically) και δεν μπορεί να αλλάξει κατά την διάρκεια της εκτέλεσης του μοντέλου. Οι τρεις πιο βασικοί τύποι δεδομένων στην VHDL είναι οι ακέραιοι (integer types), η κινητής υποδιαστολής (floating point types) και οι απαριθμητικές τιμές (enumeration types). Οι τύποι ακεραίων και κινητής υποδιαστολής είναι γνωστοί και από τις άλλες γλώσσες προγραμματισμού. Σημειώνεται εδώ ότι στην VHDL μπορεί να περιοριστεί το εύρος τιμών με την δήλωση range. Έτσι ένας περιορισμός του τύπου type Byte is range 128 to 127; στην VHDL περιορίζει το εύρος τιμών στο πεδίο από 128 ως και 127. Όσο για τους απαριθμητικούς τύπους δεδομένων μπορούν να είναι είτε αναγνωριστικά (identifiers) είτε απλοί χαρακτήρες (character literals). Για τα αναγνωριστικά αναφέραμε παραπάνω τα χαρακτηριστικά που έχουν ενώ για τους απλούς χαρακτήρες πρέπει να πούμε ότι είναι μεμονωμένοι ASCII χαρακτήρες σε μονά εισαγωγικά ( a, A,, %, 6 κ.τ.λ) και ότι είναι διακρίνων κεφαλαία και μικρά (case-sensitive) οπότε το a είναι διαφορετικό από το A. Η VHDL έχει επίσης έναν μικρό αριθμό από προκαθορισμένους τύπους δεδομένων (predefined types), όπως για παράδειγμα ο ακέραιος τύπος Integer, ο τύπος κινητής υποδιαστολής Readl και οι απαριθμητικοί τύποι δεδομένων Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 21

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Boolean, Bit, Severity_level και Character. Για παράδειγμα ο ορισμός του Bit είναι : type Bit is ( 0, 1 ) Υπάρχουν τρεις κλάσεις αντικειμένων στην VHDL : τα σήματα (signals), οι μεταβλητές (variables) και οι σταθερές (constants). Τα σήματα και οι μεταβλητές μπορούν να αλλάξουν πολλές τιμές ενώ οι σταθερές παίρνουν τιμή μόνο μία φορά. Η διαφορά των σημάτων από τις μεταβλητές είναι ότι οι μεταβλητές παίρνουν τιμή αμέσως μόλις αυτή τους ανατίθεται ενώ τα σήματα μπορεί να πάρουν τιμή κάποια χρονική στιγμή μετά την ανάθεση. Ή γενικότερη μορφή της δήλωσης ενός αντικειμένου (object declaration) είναι η εξής : object-class identifier-list : subtype-indication signal-kind := expression Για παράδειγμα η δήλωση signal CLK, CLEAR : Bit := 0 ; ορίζει δύο σήματα (objectclass), που έχουν ονόματα CLK και CLEAR (identifier-list), τα οποία μπορούν να πάρουν τιμές Bit (subtype-indication) και η αρχική προεπιλεγμένη τιμή τους είναι 0 (expression). Από την προηγούμενη δήλωση παρατηρούμε ότι λείπει το signal-kind το οποίο μπορεί να είναι είτε bus είτε register. Α) Ονόματα αντικειμένων δεδομένων Είναι ευνόητο ότι για να χρησιμοποιήσουμε ένα αντικείμενο δεδομένων θα πρέπει να το ορίσουμε σε ένα πρόγραμμα με κάποιο όνομα. Όπως αναφέρθηκε και προηγουμένως, ως όνομα δεν μπορούμε να χρησιμοποιήσουμε κάποια από τις λέξεις - κλειδιά της VHDL. Αντιθέτως ένα όνομα θα πρέπει να ξεκινά από κάποιο γράμμα, δεν είναι δυνατό να τελειώνει με το χαρακτήρα "_" και δεν είναι δυνατό να έχει δύο διαδοχικούς χαρακτήρες " ". Επιπλέον είναι ενδιαφέρον το γεγονός ότι η VHDL δεν κάνει διάκριση ανάμεσα στα κεφαλαία και τα πεζά γράμματα. Β) Χρήση αντικειμένων δεδομένων α) Σταθερές (Constants) Μια σταθερά αντιστοιχεί μια τιμή σε ένα σύμβολο ενός δοσμένου τύπου δεδομένων. Μια σταθερά προφανώς δεν μπορεί να αλλάξει τιμή κατά την διάρκεια του τρεξίματος ενός προγράμματος. Η δήλωση σταθερών στη VHDL γίνεται ως εξής: Constant symbol: type: = value;. Παραδείγματα: Constant Vcc: signal: = T; -- logic 1 constant Constant zero4: bit_vector (0 to 3): = ( 0, 0, 0, 0 ); β) Μεταβλητές (Variables) Μια μεταβλητή δηλώνεται και χρησιμοποιείται μέσα σε ένα βρόχο, συνάρτηση, διαδικασία. Η τιμή μιας μεταβλητής αναπροσαρμόζεται με βάση την ανάθεση που δέχεται από την εκτέλεση μιας σειράς εντολών. Η δήλωση μεταβλητών στη VHDL είναι: Variable symbol: type [: = initial_value];. Παράδειγμα: Process Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 22

Πτυχιακή Εργασία Variable count: integer: = 0; Variable rega: bit_vector (7 downto 0); Begin Count: = 7; -- assign values to variables Rega: =x"01"; End; γ) Σήματα (Signals). Ένα σήμα είναι ένα αντικείμενο, το οποίο διαθέτει ένα ιστορικό τιμών (ανάλογα με τις διάφορες στιγμές κατά τις οποίες η τιμή του σήματος αλλάζει). Η δήλωση σημάτων είναι η εξής: Signal sig_name: data_type [: =initial_value];. Ακολούθως παρουσιάζουμε και περιγράφουμε τους εννέα ακόλουθους τύπους σήματος: 1) BIT, 2) BIT_VECTOR, 3) STD_LOGIC, 4) STD_LOGIC_VECTOR, 5) SIGNED, 6)UNSIGNED, 7)INTEGER, 8)ENUMERATION και 9)BOOLEAN. Ένα αντικείμενο τύπου BIT μπορεί να έχει την τιμή 0 ή 1, ενώ ένα αντικείμενο τύπου BIT_VECTOR είναι στην ουσία ένας πίνακας δυαδικών ψηφίων 0 και 1. Παραδείγματα: Signal clock: bit; Signal GND: bit: = 0 ; Signal databus: bit_vector (15 downto 0); Signal addrbus: bit_vector (0 to 31); Η χρήση του downto σε ένα πίνακα υποδηλώνει ότι το πιο σημαντικό bit ορίζεται με τη βοήθεια του υψηλότερου δείκτη και το λιγότερο σημαντικό bit ορίζεται με τη βοήθεια του χαμηλότερου δείκτη. Η χρήση του to σε ένα πίνακα υποδηλώνει ότι το πιο σημαντικό bit ορίζεται με τη βοήθεια του χαμηλότερου δείκτη και το λιγότερο σημαντικό bit ορίζεται με τη βοήθεια του υψηλότερου δείκτη. Παράδειγμα: (i) Signal databus: bit_vector (4 downto 1); (ii) Signal databus: bit_vector (1 to 4); Ένα αντικείμενο τύπου STD_LOGIC μπορεί να έχει την τιμή 0, 1, Ζ, -, L, Η, U, Χ και W. Είναι πλέον γνωστό το τι αντιπροσωπεύουν οι τιμές 0 και 1. Οι υπόλοιπες τιμές έχουν τις ακόλουθες έννοιες: Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 23

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Ζ: κατάσταση υψηλής σύνθετης αντίστασης - : αδιάφορη λογική κατάσταση L: αδιάφορη λογική κατάσταση Η: ασθενής τιμή 1 U: μη-μηδενισμένη τιμή Χ: άγνωστη τιμή W: άγνωστη ασθενής τιμή Ένα αντικείμενο τύπου STD_LOGIC_VECTOR είναι στην ουσία ένας πίνακας αντικειμένων τύπου STD_LOGIC. Παραδείγματα: Signal x: STD_LOGIC; Signal y: STD_LOGIC_VECTOR (15 downto 0); Signal s: STD_LOGIC_VECTOR (0 to 31); Η χρήση των εν λόγω τύπων αντικειμένων επιβάλλει την εισαγωγή στην αρχή ενός προγράμματος των εντολών: LIBRARY ieee; USE ieee.std_logic_1164.all; Ένα αντικείμενο τύπου STD_LOGIC_VECTOR καθορίζεται ως SIGNED όταν έχουμε να χειριστούμε προσημασμένους αριθμούς ενώ ένα αντικείμενο τύπου STD_LOGIC_VECTOR καθορίζεται ως UNSIGNED, όταν έχουμε να χειριστούμε μη - προσημασμένους αριθμούς. Η χρήση των παραπάνω τύπων (SIGNED & UNSIGNED) επιβάλλει την εισαγωγή στην αρχή ενός προγράμματος του πακέτου std_logic_signed όταν αναφερόμαστε σε προσημασμένους αριθμούς και το πακέτο std_logic_unsigned όταν αναφερόμαστε σε μη-προσημασμένους αριθμούς. Παραδείγματα: Signal y: SIGNED STD_LOGIC_VECTOR (15 downto 0); Signal s: UNSIGNED STD_LOGIC_VECTOR (0 to 31); Ένα σήμα τύπου INTEGER αντιπροσωπεύει ένα δυαδικό αριθμό, έχει μήκος 32 bits έχοντας εύρος τιμών από - (2 31-1) εώς (2 31-1). Το εύρος μπορεί να καθοριστεί από τον σχεδιαστή - μηχανικό με τη χρήση της λέξης κλειδί RANGE. Παράδειγμα: Signal y: INTEGER RANGE - 32768 TO 32767 Ένα σήμα τύπου ENUMERATION είναι ένα σήμα για το οποίο οι δυνατές τιμές που μπορεί να πάρει καθορίζονται από τον χρήστη. Τα εν λόγω σήματα χρησιμοποιούνται κυρίως σε μηχανές πεπερασμένων καταστάσεων (finite state machines). Η γενική μορφή χρήσης ενός τέτοιου τύπου είναι: ΤΥΡΕ όνομα_τύπου_enumeration IS (name_a, name_b...);. Παράδειγμα: Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 24

Πτυχιακή Εργασία TYPE State_type IS (statea, stateb, statec); Signal y: State_type; Έτσι έχουμε ένα σήμα y του οποίου οι δυνατές τιμές είναι οι statea, stateb και statec. Ένα σήμα τύπου BOOLEAN είναι ένα σήμα το οποίο μπορεί να έχει την τιμή TRUE (ισοδύναμη με την τιμή 1) και την τιμή FALSE (ισοδύναμη με την τιμή 0). Παράδειγμα: Signal y: BOOLEAN; 1.9 Βασικά χαρακτηριστικά της γλώσσας VHDL Η ανάλυση των βασικών χαρακτηριστικών της γλώσσας VHDL θα προκύψει μέσα από τον διαχωρισμό των λογικών ψηφιακών κυκλωμάτων σε δύο κύριες κατηγορίες. Στα συνδυαστικά λογικά κυκλώματα και στα ακολουθιακά λογικά κυκλώματα. Θα ακολουθήσουν και διάφορα παραδείγματα, ενδεικτικά για κάθε κατηγορία, τα οποία θα βοηθήσουν στην καλύτερη κατανόηση της VHDL ως γλώσσας προγραμματισμού. 1.9.1) Συνδυαστική Λογική Σχεδίαση (Combinational Logic Design) Τα κυκλώματα συνδυαστικής λογικής, αποτελούνται από απλές λογικές πύλες και οι έξοδοι αυτών των κυκλωμάτων εξαρτώνται πάντα από τις εισόδους τους με σχέσεις που καθορίζονται επακριβώς από κάποιες συναρτήσεις Boole. Ο τρόπος σχεδίασης κυκλωμάτων όπως πολυπλέκτες 2ψηφίων και 16x16 πολλαπλασιαστές θα καθορίζεται με βάση διάφορους παράγοντες. Αυτοί είναι: Η πολυπλοκότητα της σχεδίασης. Παράγοντες όπως το μέγεθος και ο αριθμός των λογικών πυλών του κυκλώματος μπορεί να αναγκάσουν τον σχεδιαστή να υιοθετήσει ένα συγκεκριμένο τρόπο σχεδίασης (Structural, Behavioral, Dataflow). Η ευελιξία της σχεδίασης. Αν το κύκλωμα μπορεί να περιγραφεί αλγοριθμικά ή με χρήση συναρτήσεων Boole, τότε το architecture body μπορεί να περιέχει περισσότερους από έναν τρόπο σχεδίασης. Η τεχνολογία σχεδίασης. Αν η σχεδίαση προορίζεται να υλοποιηθεί πάνω σε ένα, συγκεκριμένης τεχνολογίας, υλικό, τότε ο χρήστης θα πρέπει να κάνει χρήση προκατασκευασμένων στοιχείων (components) από βιβλιοθήκες. Τα χαρακτηριστικά του κυκλώματος. Αν το κύκλωμα πρέπει να απαρτίζεται από συγκεκριμένα στοιχεία, τότε είναι απαραίτητο ο σχεδιαστής να καταλήξει σε ένα δομημένο (structural) τρόπο σχεδίασης για την υλοποίησή του. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 25

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Παρ όλο που είναι σημαντικό να λαμβάνουμε υπ όψιν όλους τους παραπάνω παράγοντες, πρέπει να σημειωθεί ότι τα συνδυαστικά κυκλώματα υλοποιούνται κατά κύριο λόγο με τον Dataflow τρόπο σχεδίασης. Σε επόμενο στάδιο, αυτά τα κυκλώματα ενώνονται μεταξύ τους, σε υψηλότερο επίπεδο, δομικά. 1.9.2) Λογικές πράξεις (Logical operators) Η VHDL υποστηρίζει λογικές πράξεις για τους βασικούς της τύπους. BIT, BOOLEAN αλλά και για τους μονοδιάστατους πίνακές της BIT_VECTOR. Τα αποτελέσματα των λογικών αυτών πράξεων είναι του ιδίου τύπου και μεγέθους με τους τελεστέους. Πράξεις μεταξύ τύπων διαφορετικού μεγέθους απαγορεύονται. Πίνακας 1.1 Λογικές πράξεις στη VHDL Operator Function Not Αντιστροφή And Και Nand Όχι και Or Ή Nor Ούτε Xor Αποκλειστικό Ή Xnor Αποκλειστικό Ούτε Η πράξη not έχει την μεγαλύτερη προτεραιότητα ενώ όλες οι άλλες λογικές πράξεις, έχουν την ίδια προτεραιότητα. Γι αυτό το λόγο όταν σε μία δήλωση υπάρχουν πολλές λογικές πράξεις, είναι καλό να χρησιμοποιούμε παρενθέσεις για να δηλώνουμε την προτεραιότητα της κάθε μίας. Η πράξη not, όμως δεν χρειάζεται παρένθεση. Ας δούμε μερικά παραδείγματα πράξεων με τελεστέους BIT ή BOOLEAN: C<= A nand B; C<= A and not B; D<= (A nand B) xor C; D<= A and B and C; D<= A and B and C; D<= A nand B nand C; D<= A and B or C; --Νόμιμη πράξη, δεν χρειάζεται παρένθεση. --Νόμιμη, το not B έχει την υψηλότερη προτεραιότητα. --Νόμιμη πράξη, με παρένθεση. --Νόμιμη, όχι παρένθεση διότι είναι ιδίου τύπου. --Νόμιμη, όχι παρένθεση διότι είναι ιδίου (non inverting) τύπου. --Παράνομη, διότι ιδίου (inverting) τύπου θέλει παρένθεση. --Παράνομη, διότι (mixed) τύπου θέλει παρένθεση. Όσον αφορά τώρα πράξεις μεταξύ τελεστέων ιδίου ή διαφορετικού μεγέθους: signal W,X : BIT_VECTOR(3 downto 0); signal Y : BIT; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 26

Πτυχιακή Εργασία signal Z : BIT_VECTOR(4 downto 0). W <= X or Y ; -- Παράνομη πράξη διότι το X έχει μέγεθος πίνακα 4 ενώ το Y έχει μέγεθος 1 (BIT). Z <= W and X; -- Παράνομη πράξη όχι λόγω μεγέθους τελεστέων αλλά μεγέθους αποτελέσματος (W,X =4 & Z=5 bits). Z(3)<=Y xor W(1); -- Νόμιμη, διότι όλοι οι τελεστέοι αλλά και το αποτέλεσμα, είναι μεγέθους bit. 1.9.3) Σχεσιακές πράξεις (Relational operators). Οι σχεσιακές πράξεις ελέγχουν για ισότητα, ανισότητα και γενικά κάνουν συγκρίσεις μεταξύ τελεστέων. Όλες οι σχεσιακές πράξεις έχουν την ίδια προτεραιότητα και μεγαλύτερη από τις λογικές πράξεις. Το δε αποτέλεσμα είναι πάντα τύπου Boolean (True/False). Για παράδειγμα: A<= B>C; -- Το Α είναι True όταν το Β είναι μεγαλύτερο του C. F <= D=E nand (B=C); -- Το F είναι False αν το D = Ε και το Β = C. Πίνακας 1.2 Σχεσιακές πράξεις στην VHDL. Operator Function = Ισότητα /= Ανισότητα < Μικρότερο από <= Μικρότερο ή ίσο από > Μεγαλύτερο από >= Μεγαλύτερο ή ίσο από 1.9.4) Πολυπλέκτης 4 - σε - 1 (Multiplexer 4 - to - 1). Με το παράδειγμα του πολυπλέκτη 4 σε 1 θα παρουσιαστούν τα βασικότερα στοιχεία (constructs) της VHDL που χρησιμοποιούνται στη σχεδίαση κυκλωμάτων συνδυαστικής λογικής. Ο 4 σε 1 πολυπλέκτης θα σχεδιαστεί και με τους τρεις τρόπους αρχιτεκτονικής σχεδίασης (behavioral, structural, dataflow), αποδεικνύοντας την ευελιξία της γλώσσας. Τα παρακάτω βασικά σημεία της VHDL θα γίνουν ορατά με αυτό το παράδειγμα: Ονόματα και identifiers Παράλληλες δηλώσεις (Concurrent statements) Υπο όρους αναθέσεις σημάτων (Conditional signal assignments) Επιλεγμένες αναθέσεις σημάτων (Selected signal assignments) Δηλώσεις στοιχείων (Component instantiations) Σειριακές δηλώσεις (Sequential statements) Case If 1.9.5) Ακολουθιακή Λογική Σχεδίαση (Sequential Logic Design). Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 27

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Είναι γνωστό ότι στα ακολουθιακά κυκλώματα, η έξοδος δεν εξαρτάται μόνο από την παρούσα κατάσταση των εισόδων αλλά και από την προηγούμενη κατάσταση της εξόδου. Άρα τα ακολουθιακά κυκλώματα χαρακτηρίζονται από την χρονική τους εξάρτηση. Κάθε κύκλωμα με ρολόι (clock) είναι ακολουθιακό. Στην VHDL μπορούμε να περιγράψουμε σύγχρονα και ασύγχρονα ακολουθιακά κυκλώματα αλλά όχι με όλους τους τρόπους σχεδίασης. Ο dataflow τρόπος σχεδίασης περιγράφει, όπως έχουμε αναφέρει, την ροή δεδομένων σε συνεχή χρόνο και άρα δεν μπορεί να περιγράψει κυκλώματα εξαρτώμενα από τον χρόνο (ακολουθιακά). Ο δομημένος (structural) τρόπος σχεδίασης μπορεί να χρησιμοποιηθεί σε ακολουθιακά κυκλώματα, αλλά τα στοιχεία (components) που θα καλέσει πρέπει να προέρχονται από «έτοιμες» βιβλιοθήκες. Αυτό οφείλεται στο ότι οι κύριες μονάδες-στοιχεία των ακολουθιακών κυκλωμάτων τα flip flops και τα latches είναι δύσκολο να κατασκευαστούν δομικά, κατά συνέπεια ο σχεδιαστής θα τα πάρει από διάφορες βιβλιοθήκες (ή θα τα κατασκευάσει σε behavioral). Συνεπώς με τον δομημένο τρόπο σχεδίασης ακολουθιακών κυκλωμάτων περιορίζεται η ευελιξία της υλοποίησης. Αντίθετα με τον συμπεριφοριστικό (behavioral) τρόπο σχεδίασης είναι δυνατή η χρήση ειδικών constructs που έχει η VHDL. Αυτές οι ειδικές δηλώσεις τις VHDL έχουν και το τίμημά τους. Αν δεν γίνει απόλυτη περιγραφή (με αυτά τα constructs) των σημάτων του κυκλώματος, ο μεταγλωτιστής (compiler-synthesizer) θα υλοποιήσει μεν το κύκλωμα αλλά όπως αυτός νομίζει καλύτερα, περιορίζοντας πάλι τις δυνατότητες του σχεδιαστή. 1.9.6) Προτερήματα του δομημένου τρόπου σχεδίασης. Με τη χρήση του δομημένου τρόπου σχεδίασης, ο χρήστης επιλέγει τα στοιχεία που αυτός νομίζει ότι ανταποκρίνονται καλύτερα στη σχεδίασή του με τα ακόλουθα προτερήματα: Οι λειτουργίες των στοιχείων που θα χρησιμοποιηθούν και κυρίως των αποθηκευτικών στοιχείων είναι γνωστά στον χρήστη και δεν αφήνονται στην «διακριτική ευχέρεια» του synthesizer. Είναι γνωστός επίσης ο αριθμός των αποθηκευτικών στοιχείων που θα χρησιμοποιηθούν, ενώ με τον behavioral τρόπο σχεδίασης ο synthesizer είναι αυτός που τον καθορίζει. Τέλος ο χρήστης μπορεί από την αρχή να επιλέξει το «τεχνολογικό» πλαίσιο μέσα στο οποίο θα σχεδιάσει το κύκλωμά του. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 28

Πτυχιακή Εργασία 1.9.7) Καταχωρητής Ολίσθησης 4ψηφίων (4- bit Shift Register). Ο καταχωρητής ολίσθησης είναι ένα παράδειγμα ακολουθιακού κυκλώματος με τον οποίο θα παρουσιάστούν τα βασικά στοιχεία (constructs) της VHDL πάνω στην υλοποίηση ακολουθιακών κυκλωμάτων. Τα θέματα που θα παρουσιαστούν: Ονόματα πινάκων Πράξεις πινάκων Παράλληλες δηλώσεις Process For Generate Σειριακές δηλώσεις If Wait 1.10 Μοντέλα Ελέγχου-Επαλήθευσης Έλεγχος μιας σχεδίασης γίνεται με μεθόδους προσομοίωσης Απαιτείται ο σχεδιασμός καθώς και μία μέθοδος τροφοδότησης ακολουθιών τιμών στις εισόδους του σχεδιασμού. Η καταγραφή των σημάτων εξόδων καθώς και η σύγκρισή τους με αναμενόμενες τιμές δίνει το αποτέλεσμα του ελέγχου. 1.11 Διαδικασία Εξομοίωσης Σχεδιασμού Βασικός λόγος δημιουργίας ενός μοντέλου σχεδιασμού είναι η εξομοίωση. Στάδια Εξομοίωσης Ανάλυση: Έλεγχος Συντακτικός - Εννοιολογικός Εκτέλεση: εξομοίωση του σχεδιασμού στον χρόνο Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 29

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Επεξεργασία (Elaboration): μετασχηματισμός σε μη ιεραρχικό σχεδιασμό (διασύνδεση primitives και processes) 1.11.1) Εκτέλεση εξομοίωσης Εκτέλεση των διαδικασιών Προσομοίωση διακριτών γεγονότων (events) ο χρόνος εξελίσσεται με διακριτά βήματα (χρονικούς κύκλους) όταν η τιμή ενός σήματος αλλάζει τότε έχουμε την εμφάνιση ενός γεγονότος. Μια διαδικασία είναι ευαίσθητη σε γεγονότα των σημάτων εισόδου όπως αυτά προσδιορίζονται από τις καταχωρήσεις wait σε αυτά τα γεγονότα η διαδικασία επανακαλείται και προσδιορίζει νέες μελλοντικές τιμές για τα σήματα εξόδου. 1.11.2) Αλγόριθμος Εξομοίωσης Ι Φάση Αρχικοποίησης σε κάθε σήμα δίδεται η αρχική του τιμή το χρονόμετρο της προσομοίωσης τίθεται στην τιμή 0 για κάθε διαδικασία ενεργοποίηση εκτέλεση μέχρι να προκύψει καταχώρηση wait οπότε και η διαδικασία οδηγείται σε αναμονή (αναστολή εκτέλεσης) η εκτέλεση συνήθως περιλαμβάνει τη μελλοντική καταχώρηση τιμών σε σήματα (δηλ. προγραμματίζει για κάποιες μελλοντικές στιγμές την ύπαρξη κάποιων δραστηριοτήτων) Κύκλος προσομοίωσης εξέλιξη του χρόνου προσομοίωσης στον επόμενο χρονικό κύκλο όπου υπάρχει κάποια δραστηριότητα Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 30

Πτυχιακή Εργασία στον τρέχοντα χρονικό κύκλο ενημέρωση των τιμών των σημάτων ύπαρξη γεγονότος αν η νέα τιμή διαφέρει από την παλιά Για κάθε διαδικασία ευαίσθητη σε οποιοδήποτε γεγονός (ή της οποίας ο χρόνος αναμονής έχει λήξει) επανάκληση εκτέλεση μέχρι να προκύψει wait και εν συνεχεία αναμονή. Η προσομοίωση τελειώνει όταν δεν υπάρχουν άλλες προγραμματισμένες δραστηριότητες ΚΕΦΑΛΑΙΟ ΙΙ Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 31

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Maxplus + II 2.1 Σχεδίαση Ψηφιακών Συστημάτων (ALTERA) 2.1.1) Συνοπτικό εγχειρίδιο χρήσης για το λογισμικό MAX+plusII Το λογισμικό ΜΑΧ+plusII της εταιρίας ALTERA αφορά τη σχεδίαση CAD για τα προϊόντα της, τα οποία είναι chip για χρήση ψηφιακού VLSI με δυνατότητες OTP (One Time Programmable), FLASH ή και power up download μέσω σειριακών EEPROM. Οι δυνατότητες του προγράμματος είναι πολλαπλές και αφορούν τη σχεδίαση ψηφιακών κυκλωμάτων όσο και την εξομοίωσή τους. Η σχεδίαση ψηφιακών κυκλωμάτων γίνεται με τρεις τρόπους: 1. Με την εισαγωγή σχηματικού (κυκλωματικού) διαγράμματος. 2. Με τη χρήση των γλωσσών AHDL, VHDL. 3. Με τη χρήση ενός πίνακα αλήθειας (ή διαγραμμάτων χρονισμού). Εδώ θα αναφερθούμε κυρίως στο δεύτερο τρόπο. Στην συνέχεια θα αναφερθούμε στον προσομοιωτή (simulator) λειτουργίας του chip και τέλος θα δοθεί Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 32

Πτυχιακή Εργασία ο τρόπος επιλογής του chip καθώς και του pin out. 2.1.2) Δημιουργία έργου (Project) Η δημιουργία έργου (Project) είναι απαραίτητη από το λογισμικό για να μπορεί κάθε φορά να κρατά όλες τις πληροφορίες του έργου σε ένα φάκελο του συστήματος αρχείων. Έτσι ορίζουμε σαν έργο παραδείγματος χάριν το όνομά μας και οι πληροφορίες του έργου αποθηκεύονται στον υποφάκελο max2work\car\το όνομά μας. Η εφαρμογή που θα επεξεργαστούμε είναι η εξομοίωση των φλας ενός αυτοκινήτου. Η θέση και το όνομα του φακέλου είναι στην επιλογή του σπουδαστή. Οι σειρά των εντολών είναι File Project Name. Εναλλακτικά μπορούμε εφόσον έχουμε εισάγει κάποιον κώδικα με κάποιο από τους παραπάνω τρόπους και το έχουμε αποθηκεύσει σε κάποιο φάκελο, τότε με τις εντολές File Project Set Project to current file μπορούμε να δώσουμε αυτόματα σαν όνομα στο Project, το όνομα του αρχείου μας. Εικόνα 2.1: Ονομασία έργου. Εικόνα 2.2: Επιλογή τοποθεσίας αποθήκευσης του έργου. Μόλις ονομαστεί το νέο έργο πρέπει να δημιουργηθεί ένα νέο αρχείο επεξεργασίας κειμένου. Ένας τρόπος για να γίνει αυτό είναι να επιλέγει File New. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 33

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εικόνα 2.3: Δημιουργία νέου έργου. Μετά επιλέγουμε αν θέλουμε να δημιουργήσουμε Graphic Editor File ή Sympol Editor File ή Text Editor File ή Waveform Editor File. Επιλέγουμε Text Editor File. Εικόνα 2.4: Επιλογή του είδους αρχείου (Text Editor file). Το αποτέλεσμα θα είναι να εμφανιστεί στην οθόνη ο επεξεργαστής κειμένου. Όπου σε αυτόν πληκτρολογούμε τον κώδικά μας. Στην συνέχεια επιλέγουμε File Project Set Project to current file. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 34

Πτυχιακή Εργασία Εικόνα 2.5: Καθορισμός του έργου που θα επεξεργαστεί. Το αποθηκεύουμε με κατάληξη car.vhd. Το όνομα του νέου αρχείου θα πρέπει υποχρεωτικά να είναι ίδιο με το όνομα του έργου. Εικόνα 2.6: Αποθήκευση του κώδικα. 2.1.3) Μεταγλωττιστής (Compiler) Η διαδικασία μεταγλώττισης, προσομοίωσης και υλοποίησης της σχεδίασης είναι ίδια ανεξάρτητα από τον τρόπο εισαγωγής της σχεδίασης. Πριν γίνει Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 35

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής προσομοίωση της σχεδίασης, προκειμένου να ελεγχθεί αν αυτό λειτουργεί σύμφωνα με τις προδιαγραφές, είναι απαραίτητο να γίνει μεταγλώττιση. File Project Save & Check. Εικόνα 2.7:Αποθήκευση και έλεγχος του κώδικα. Πατάμε Ok. Εικόνα 2.8: Εμφάνιση των λαθών του ελέγχου. File Project Save & Compile. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 36

Πτυχιακή Εργασία Εικόνα 2.9: Αποθήκευση και μεταγλώττιση του κώδικα. Πατάμε Ok. Εικόνα 2.10: Εμφάνιση λαθών κατά την μεταγλώττιση. Σκοπός του μεταφραστή (compiler) είναι η δημιουργία μίας λογικής έκφρασης για κάθε λογική συνάρτηση του κυκλώματος από τα εργαλεία αρχικής σύνθεσης (ini- Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 37

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής tial synthesis tools). Τα εργαλεία σύνθεσης ελέγχονται από τον compiler και είναι τα ακόλουθα : 1. Compiler Netlist Extractor (Εξαγωγέας των στοιχείων κυκλώματος του μεταφραστή). 2. Database Builder (Κατασκευή βάσης δεδομένων για την εύκολη προσπέλαση των εργαλείων). 3. Functional SNF Extractor (Δημιουργία αρχείου για την χρήση του κυκλώματος προσομοίωσης simulator netlist file, SNF) 4. Logic Synthesizer (Χρησιμοποιεί τη βάση δεδομένων που έχει δημιουργηθεί από τον Database builder για να υπολογίσει τις εξισώσεις Boolean για κάθε είσοδο σε ένα αρχικό τύπο και ελαχιστοποιεί την λογική σύμφωνα με τις προδιαγραφές μας). 5. Fitter (Χρησιμοποιεί τη βάση δεδομένων και ταιριάζει τις λογικές απαιτήσεις σε λογική του project με τις δυνατότητες ενός ή περισσοτέρων chip. Αντιστοιχεί κάθε λογική συνάρτηση στο καλύτερο για την περίπτωση logic cell και επιλέγει τα κατάλληλα μονοπάτια ενδοδιασύνδεσης καθώς και την αντιστοιχία των pin). 6. Assembler (Η μονάδα εκείνη του compiler που δημιουργεί τα κατάλληλα αρχεία για των προγραμματισμό των chip). Η μετάφραση ξεκινά και ανάλογα με το μέγεθος του project και την επεξεργαστική μας ισχύ ποικίλει ο χρόνος ολοκλήρωσης. Όταν ολοκληρωθεί η διαδικασία πρέπει να εμφανιστεί ένα παράθυρο που να δείχνει μηδέν errors και warnings. Διαφορετικά ενεργοποιείται το παράθυρο του Επεξεργαστή μηνυμάτων (Message Processor) το οποίο μας δίνει αναλυτικά τις αιτίες που οφείλεται το κάθε μήνυμα. Για την λειτουργική επαναμεταγλώττιση επιλέγεται Processing Functional SNF Extractor. Το παράθυρο μεταγλώττισης θα αλλάξει και θα περιέχει μόνο τις τρεις βαθμίδες που απαιτούνται σε αυτό το σημείο. Εικόνα 2.11: Ένδειξη της λειτουργικής επαναμεταγλώττισης. Πατάμε Start. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 38

Πτυχιακή Εργασία Εικόνα 2.12: Εμφάνιση των λαθών της λειτουργικής επαναμεταγλώττισης. 2.1.4) Επεξεργαστής κυματομορφών (Waveform Editor) Το παράθυρο του επεξεργαστή κυματομορφών ενεργοποιείται με File New. Επιλέγουμε το Waveform Editor. Τα αρχεία του είναι της μορφής *.scf και για την αποθήκευση η ανάκτηση του αρχείου ισχύουν όσα έχουμε αναφέρει για τους άλλους επεξεργαστές. Είναι απαραίτητο να σώσουμε το αρχείο με την κατάληξη*.scf διαφορετικά δεν θα μπορέσουμε να εκτελέσουμε προσομοίωση διότι ο προσομοιωτής δεν θα γνωρίζει από πού να πάρει εισόδους (input vectors). Τα αρχεία του έχουν σαν σκοπό την αποθήκευση κυματομορφών που πρόκειται να χρησιμοποιηθούν για την εκτέλεση προσομοίωσης. Επιλέγουμε Node Enter Nodes from SNF και ανοίγει ένα παράθυρο που στη συνέχεια με την επιλογή List εμφανίζονται τα ονόματα των κόμβων του τρέχοντος έργου στο ορθογώνιο του παραθύρου που φέρει το όνομα Available Nodes & Groups. Επιλέγουμε με το ποντίκι τον κάθε κόμβο που θα χρησιμοποιήσουμε στη εξομοίωση και στη συνέχεια τον μεταφέρουμε στο ορθογώνιο πεδίο Selected Nodes & Groups πατώντας => κάθε φορά. Τέλος πατώντας Οk επιστρέφουμε στον επεξεργαστή κυματομορφών. Εναλλακτικά μπορούμε με ανοιγμένο το παράθυρο του επεξεργαστή κυματομορφών να κάνουμε διπλό κλικ στο αριστερό σημείο του παραθύρου στο πλαίσιο κάτω από το Name τότε ανοίγει το ίδιο παράθυρο (Edit Node) με την προηγούμενη μέθοδο. Πρέπει να σημειώσουμε ότι σε κάθε περίπτωση για να έχουμε ενεργοποιημένη την επιλογή List πρέπει να έχουμε εκτελέσει compilation πρώτα έτσι ώστε να έχουν δημιουργηθεί τα κατάλληλα αρχεία. Για την επιλογή του συνολικού χρόνου προσομοίωσης επιλέγουμε File End Time και στο ορθογώνιο Time γράφουμε την επιθυμητή τιμή. Σαν επόμενο βήμα είναι να εισάγουμε στον επεξεργαστή κυματομορφών (Waveform Editor) τις διάφορες τιμές Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 39

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής (καταστάσεις) που θα παίρνουν οι είσοδοι στο κύκλωμα που έχουμε σχεδιάσει έτσι ώστε μετά την εκτέλεση της λειτουργίας compilation να πάρουμε τις αντίστοιχες εξόδους. Αυτό γίνεται με επιλογή (κλικ) του ποντικιού πάνω στον επιθυμητό κόμβο και στη συνέχεια επιλογή της κατάστασης (1,0, ρολόι) με τη βοήθεια των εικονιδίων που βρίσκονται στην αριστερή πλευρά του παραθύρου. Στο τέλος Εικόνα 2.13: Δημιουργία νέου επεξεργαστή κυματομορφών. Εικόνα 2.14: Επιλογή του είδους αρχείου (Waveform Editor file). Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 40

Πτυχιακή Εργασία Εικόνα 2.15: Αποθήκευση του αρχείου επεξεργαστή κυματομορφών. Εικόνα 2.16: Επιλογή για την εισαγωγή των εισόδων και εξόδων του κυκλώματος. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 41

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εικόνα 2.17: Παράθυρο επιλογής των εισόδων και εξόδων. Εικόνα 2.18: Εμφάνιση του παραθύρου για την εισαγωγή των εισόδων και των εξόδων. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 42

Πτυχιακή Εργασία Ακολουθεί η προσαρμογή των επιλογών οθόνης του επεξεργαστή κυματομορφών, όπως μέγεθος πλέγματος. Κατά την δημιουργία διαγραμμάτων των κυματομορφών είναι χρήσιμο να ενεργοποιηθεί, αν δεν είναι ήδη ενεργοποιημένος ο ενδείκτης πλέγματος (Grid Size). Το μέγεθος του πλέγματος μπορεί επίσης να προσαρμοστεί. Επιλέγεται Options Grid Size. Εισάγεται το μέγεθος πλέγματος, για παράδειγμα 7.5 ns και επιλέγεται Ok. Εικόνα 2.19: Επιλογή του δείκτη πλέγματος από το μενού επιλογών. Εικόνα 2.20: Εισαγωγή του μεγέθους του δείκτη πλέγματος. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 43

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εικόνα 2.21: Καθορισμός των παλμών για τις εισόδους. 2.1.5) Εκτέλεση προσομοίωσης (Simulation) Για να ενεργοποιήσουμε τη προσομοίωση επιλέγουμε File Project Save & Simulate ή εναλλακτικά μπορούμε να επιλέξουμε το αντίστοιχο εικονίδιο των εφαρμογών. Στην συνέχεια κάνουμε κλικ στο Start και η εξομοίωση ξεκινά. Εάν έχουμε η όχι errors και warnings θα μας πληροφορήσει ο message processor. Στην περίπτωση που όλα είναι κανονικά (Οk) τότε εκτελούμε διπλό κλικ στο Open SCF και ο επεξεργαστής κυματομορφών (Waveform Editor) ανοίγει εμφανίζοντας κυματομορφές στις εξόδους σύμφωνα με τα αποτελέσματα της προσομοίωσης (Simulation). Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 44

Πτυχιακή Εργασία Εικόνα 2.22: Αποθήκευση και προσομοίωση του επεξεργαστή κυματομορφών. Εικόνα 2.23: Εμφάνιση λαθών κατά την προσομοίωση. Εικόνα 2.24: Εμφάνιση αποτελεσμάτων της προσομοίωσης. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 45

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 2.1.6) Επιλογή προγραμματιζόμενης λογικής συσκευής Altera για υλοποίηση. Προτού ο χρήστης συνεχίσει με την αντιστοίχηση ακίδων δια μέσου του επεξεργαστή κατόψεων, είναι καλό να γίνει μεταγλώττιση του κώδικα χωρίς να επιλεγεί καμία συσκευή ή να γίνει οποιαδήποτε κατανομή των φυσικών πόρων της συσκευής. Ανοίγεται ο μεταγλωττιστής και γίνεται έλεγχος ότι το παράθυρό του παρουσιάζει έξι πλήρη στάδια μεταγλώττισης. Εάν το παράθυρο του μεταγλωττιστή παρουσιάζει ακόμα μόνο τρία στάδια μεταγλώττισης, όπως χρησιμοποιήθηκαν όταν μεταγλωττίστηκε ο κώδικας πριν την λειτουργική του προσομοίωση, επιλέγεται Processing Functional SNF Extractor για να απενεργοποιηθεί αυτή την φορά. Εικόνα 2.25: Απενεργοποίηση της λειτουργικής επαναμεταγλώττιση (Functional SNF Extractor). Αφού εμφανιστούν τα έξι στάδια μεταγλώττισης πατάμε Start για να αρχίσει η μεταγλώττιση. Εικόνα 2.26: Εμφάνιση του παραθύρου επαναμεταγλώττιση. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 46

Πτυχιακή Εργασία Εικόνα 2.27: Εμφάνιση αποτελεσμάτων της μεταγώττισης. Το επόμενο βήμα είναι να κάνουμε επιλογή κάποιας οικογένειας της προγραμματιζόμενης συσκευής Altera chip FLEX10K, όπου μπορεί να γίνει με δύο τρόπους. Ο πρώτος είναι να αφήσουμε την επιλογή στην εφαρμογή του fitter (AUTO), ενώ ο δεύτερος να προσδιορίσουμε ένα συγκεκριμένο chip, για παράδειγμα FLEX EPF10K10TC144-3 και στην συνέχεια να αφήσουμε τον fitter να προσπαθήσει να υλοποιήσει τις λογικές συναρτήσεις για το συγκεκριμένο chip με βάση τις δυνατότητές του. Στην περίπτωση που η υλοποίηση «χωράει» στο συγκεκριμένο chip που έχει επιλεγεί τότε ο επεξεργαστής μηνυμάτων θα δώσει 0 errors και 0 warnings, διαφορετικά η υλοποίηση θα αποτύχει και ο σχεδιαστής θα πρέπει να επιλέξει ένα άλλο, «μεγαλύτερο» chip για υλοποίηση. Και για τις δύο περιπτώσεις επιλέγουμε Assign Device. Στην επιλογή device family: διαλέγουμε την οικογένεια που θέλουμε να χρησιμοποιήσουμε, στην προκειμένη περίπτωση FLEX10K. Ενώ στην επιλογή Devices: εάν επιλέξουμε AUTO τότε η επιλογή του chip γίνεται με βάση την οικογένεια που έχουμε ήδη επιλέξει και με τις απολύτως απαιτούμενες δυνατότητες για την σωστή υλοποίηση της συνάρτησης επομένως και το ελάχιστο κόστος chip. Διαφορετικά κάνουμε κλικ στο συγκεκριμένο chip που μας ενδιαφέρει (EPF10K10TC144-3). Μετά φυσικά εκτελούμε compilation (και για τις δύο περιπτώσεις) έτσι ώστε να παραχθούν τα αρχεία για την υλοποίηση. Εικόνα 2.28: Επιλογή για την εισαγωγή της συσκευής από το μενού επιλογών. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 47

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εικόνα 2.29: Επιλογή της οικογένειας της προγραμματιζόμενης λογικής συσκευής Altera που θα χρησιμοποιηθεί. Μετά την επιλογή της συσκευής πατάμε Ok. Εικόνα 2.30: Επιλογή της συσκευής. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 48

Πτυχιακή Εργασία 2.1.7) Επιλογή ακίδων στην προγραμματιζόμενη λογική συσκευή Altera. Μπορούμε να επιλέξουμε τον αριθμό των ακίδων (pin) για κάποιο κόμβο της σχεδίασης μας (πχ κάποιες είσοδοι, έξοδοι, ρολόγια κτλ) με δύο τρόπους. Ο πρώτος είναι με την επιλογή Assign Pin/Location/Chip. Εικόνα 2.31: Επιλογή για την εισαγωγή των ακίδων από το μενού επιλογών. Στο παραπάνω παράθυρο επιλέγουμε το όνομα του κόμβου (Node Name) είτε γράφοντας απευθείας στο αντίστοιχο πεδίο, είτε πατώντας πρώτα Search, μετά List και επιλέγοντας από την ήδη υπάρχουσα λίστα πατάμε Ok. Στην συνέχεια από τις επιλογές chip resource διαλέγουμε το Pin όπου και επιλέγουμε τον αριθμό του ακροδέκτη που θέλουμε να συνδεθεί με τον αντίστοιχο κόμβο και πατάμε Add (εμφανίζεται στο Existing/pin/Location/Assignments:). Εκτελείται η ίδια διαδικασία για όλες τις μεταβλητές που έχουμε. Η επιλογή Anywhere on this chip δεν πρέπει να είναι ενεργή. Ακολουθείται ένα παράδειγμα της παραπάνω διαδικασίας με την μεταβλητή clock (CLK). Εικόνα 2.32: Απεικόνιση του τρόπου επιλογής ακίδας μιας εισόδου. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 49

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Το pin που επιλέγεται για την συσκευή αυτή είναι πάντα το 55. Εικόνα 2.33: Εμφάνιση του παραθύρου μετά την επιλογή της ακίδας. Μετά φυσικά εκτελούμε compilation έτσι ώστε να παραχθούν τα αρχεία για την υλοποίηση. Ο δεύτερος τρόπος είναι με την εμφάνιση της κάτοψης του chip (Floorplan Editor). Ο επεξεργαστής κατόψεων (Floorplan Editor) είναι το εργαλείο με το οποίο γίνεται η επιλογή των προγραμματιζόμενων συσκευών και η αντιστοίχηση των εισόδων και εξόδων στις φυσικές ακίδες της συσκευής. Η εμφάνιση της κάτοψης μπορεί να γίνει επιλέγοντας Max+plusII Floorplan Editor. Εδώ με το μενού Layout μπορούμε, είτε να εμφανίσουμε τις μακροκυψέλες (επιλέγοντας Layout LAB View), είτε να εμφανίσουμε την εικόνα των ακροδεκτών της συσκευασίας του ολοκληρωμένου κυκλώματος (επιλέγοντας Layout Device View). Σημειώνουμε ότι ο επεξεργαστής κατόψεων δεν παίζει κανένα δυναμικό ρόλο στη σχεδίαση. Ο σκοπός είναι να πληροφορήσει το σχεδιαστή μόνο. Εικόνα 2.34: Επιλογή του Floorpan Editor από το μενού επιλγών. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 50

Πτυχιακή Εργασία Εικόνα 2.35: Απεικόνιση του επεξεργαστή κατόψεων. Αν και η εικόνα στον επεξεργαστή κατόψεων εμφανίζεται αρχικά αρκετά περίπλοκη, στην πραγματικότητα παρουσιάζει ένα χάρτη των φυσικών πόρων της συσκευής. Από το παραπάνω σχήμα μπορεί να φανεί ότι μόνο ένα μικρό ποσοστό των πόρων της συσκευής έχει χρησιμοποιηθεί από το κύκλωμα. Ο χρήστης ενδιαφέρεται περισσότερο για την αντιστοίχηση των ακίδων, που φαίνονται ως μικρά τετράγωνα κατά μήκος, οριζόντια και κάθετα, των πλευρών του χάρτη της συσκευής. Για να παρθεί μια σαφέστερη εικόνα χωρίς τις επιπρόσθετες περιπλοκές της εσωτερικής δομής της συσκευής, επιλέγεται Layout Device View. Εικόνα 2.36: Τρόπος επιλογής της απεικόνισης του επεξεργαστή κατόψεων. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 51

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Η προκύπτουσα οθόνη φαίνεται στο παρακάτω σχήμα. Αυτό που φαίνεται τώρα είναι μια μορφή παράστασης της συσκευής γύρω από την οποία φαίνονται όπως έχουν στην πραγματικότητα τοποθετηθεί οι είσοδοι και οι έξοδοι της σχεδίασης. Για να φανεί η εικόνα με το σύνολο των ακίδων της συσκευής, χρησιμοποιούνται οι κυλιόμενες μπάρες. Το "zoom in" και το "zoom out" μπορούν επίσης να χρησιμοποιηθούν στη τακτοποίηση της οθόνης στο παράθυρο. Παρατηρείται ότι οι ακίδες χρώματος λευκού δεν είναι ορισμένες και εκείνες χρώματος μαύρου εκτελούν τις ειδικές λειτουργίες και δεν μπορούν να οριστούν. Οι χρωματιστές ακίδες είναι εκείνες που χρησιμοποιούνται από το κύκλωμα. Εικόνα 2.37: Διαφορετική απεικόνιση του επεξεργαστή κατόψεων για ευκολότερη χρήση επιλογής των ακίδων. Κατά τη μεταγλώττιση του σχεδίου, στο MAX+PLUS ΙΙ έχουν αντιστοιχηθεί αυτόματα οι ακίδες της συσκευής στις εισόδους και εξόδους του κυκλώματος. Όμως, η προγραμματιζόμενη συσκευή EPF10K10TC144-3, που χρησιμοποιείται στην εκπαιδευτική συσκευή, έχει τις ακίδες της συνδεδεμένες μόνιμα σε μια σειρά διαφορετικών κυκλωμάτων εισόδου και εξόδου, προκειμένου να γίνει ο έλεγχος καλής λειτουργίας των υπό σχεδίαση κυκλωμάτων, τις οποίες το MAX+PLUS ΙΙ φυσικά δεν μπορεί να γνωρίζει. Είναι, επομένως, απαραίτητο να γίνει ορθή αντιστοίχηση, με το χέρι, των εισόδων και εξόδων του κυκλώματος στις ακίδες της συσκευής. Ο πίνακας δίνει την πρέπουσα αντιστοίχηση ακίδων για αυτό το παράδειγμα. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 52

Πτυχιακή Εργασία Πίνακας 2.1: Ανάθεση ακίδων για τον κώδικα "car" Τύπος κόμβου Κόμβος Αριθμός ακίδας Συσκευή Είσοδοι CLK 55 OSC CLR 49 Διακόπτες Πίεσης X1 47 Διακόπτες Πίεσης X2 48 Διακόπτες Πίεσης Έξοδοι L1 7 Κόκκινο Ζάρι L2 8 Κόκκινο Ζάρι L3 9 Κόκκινο Ζάρι R3 14 Πράσινο Ζάρι R2 17 Πράσινο Ζάρι R1 18 Πράσινο Ζάρι LED_COM 142 LED_COM Για να αντιστοιχηθούν με το χέρι οι ακίδες στις εισόδους και εξόδους του κυκλώματος σύμφωνα με το πίνακα, επιλέγεται αρχικά Layout Current Assignments Floorplan. Εικόνα 2.38: Εμφάνιση του τρόπου επιλογής των ακίδων με το χέρι. Παρατηρείται ότι οι ακίδες στο "device view" πλέον δεν ορίζονται και ότι οι είσοδοι και οι έξοδοι του κυκλώματος παρατίθενται στα κουτιά χαρακτηρισμένες ως "Unassigned Nodes & Pins" Για να αντιστοιχηθεί μια είσοδος ή μια έξοδος σε μία ακίδα, επιλέγεται το σύμβολο κόμβων στα αριστερά του ονόματος της ακίδας μέσα στους μη ορισμένους κόμβους και στα κουτιά ακίδων, σύρεται αυτό στην επιθυμητή ακίδα και απελευθερώνεται τελικά το κουμπί του ποντικιού. Αυτή η διαδικασία εμφανίζεται στην παρακάτω εικόνα, όπου η έξοδος "L1" αντιστοιχείται στην ακίδα 7. Με τον ίδιο τρόπο αντιστοιχούνται οι υπόλοιπες έξοδοι. Στη συνέχεια, αντιστοιχείται το "LED_COM" στην ακίδα 142. Τέλος, γίνεται επανατοποθέτηση του σχεδιαγράμματος συσκευών για να φανεί η κατώτατη άκρη, εάν είναι απαραίτητο, Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 53

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής και αντιστοιχείται η είσοδος "CLK" στην ακίδα 55, η είσοδος "CLR" στην ακίδα 49, η είσοδος Χ1 στην 47 και τέλος η Χ2 στην 48. Εικόνα 2.39: Απεικόνιση των ακίδων στον επεξεργαστή κυματομορφών. Τώρα που έχουν αντιστοιχηθεί οι είσοδοι και οι έξοδοι του κυκλώματος στις πρέπουσες φυσικές ακίδες της συσκευής EPF10K10TC144-3, μπορεί να πραγματοποιηθεί μια τελική επαναμεταγλώττιση πριν από τη φόρτωση του κυκλώματος στη συσκευή. Οι επιλογές των ακίδων (pin) φαίνονται αναλυτικά στο Παράρτημα ΙΙ. 2.1.8) Μεταγλώττιση Σχεδίου Στο σημείο αυτό είναι απαραίτητο να γίνει ολική επαναμεταγλώττιση του κυκλώματος για να ληφθεί υπόψη η νέα αντιστοίχηση ακίδων. Ανοίγεται το παράθυρο του μεταγλωττιστή και εξασφαλίζεται ότι παρουσιάζονται και τα έξι στάδια. Επιλέγεται Processing Total Recompile, και στη συνέχεια Start για την τελική μεταγλώττιση του κυκλώματος. Εικόνα 2.40: Επιλογή της ολικής επαναμεταγλώττισης από το μενού επιλογών. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 54

Πτυχιακή Εργασία 2.1.9) Φόρτωση και Έλεγχος Τώρα μπορεί να φορτωθεί το κύκλωμα στη συσκευή EPF10K10TC144-3. Πρέπει να εξασφαλιστεί ότι η εκπαιδευτική συσκευή συνδέεται με τη παράλληλη πόρτα του υπολογιστή και την τροφοδοσία και ότι είναι ανοιχτή. Επιλέγοντας MAX+PLUS ΙΙ Programmer, ανοίγει το παράθυρο προγραμματιστή. Ο προγραμματιστής θα χρησιμοποιηθεί για να φορτώσει το κύκλωμα στη συσκευή EPF10K10TC144-3 υπό μορφή δυαδικού αρχείου με το όνομα "a SRAM Object File" (SOF). Σημειώνεται ότι το όνομα αρχείων είναι "car.sof" σύμφωνα με το όνομα της εφαρμογής και ότι η συσκευή είναι η EPF10K10TC144-3. Επιλέγουμε το FLEX Multi Device FLEX Chain Setup Εικόνα 2.41: Επιλογη του Multi - Device FLEX Chain Setup από το μενού επιλογών. Στο παράθυρο που θα ανοίξει, διαλέγουμε το αρχείο με τη κατάληξη *.sof και πατάμε Add και μετά Ok. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 55

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εικόνα 2.42: Επιλογή του αρχείου που χρησιμοποιείται, *.sof. Στη συνέχεια επιλέγουμε JTAG Multi- Device JTAG Chain Setup Εικόνα 2.43: Επιλογη του Multi - Device JTAG Chain Setup από το μενού επιλογών. Στο παράθυρο που θα ανοίξει πατάμε την επιλογή Select Programming File και στη συνέχεια διαλέγουμε το αρχείο με τη κατάληξη *.sof και πατάμε Ok. Εικόνα 2.44: Επιλογή του αρχείου που χρησιμοποιείται, *.sof. Τέλος πατάμε Add και μετά Ok. Στη περίπτωση που υπάρχει κάποιο άλλο αρχείο φορτωμένο από προηγούμενη εργασία, το επιλέγουμε, πατάμε Delete και συνεχίζουμε με τα παραπάνω βήματα. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 56

Πτυχιακή Εργασία Εικόνα 2.45: Εμφάνιση της διαδικασίας επιλογής του αρχείου. Για να αρχίσει η φόρτωση του αρχείου διαμόρφωσης, επιλέγεται Configure. Τα LED I/O που περιβάλλουν τη κάρτα ολοκληρωμένων θα ανάψουν για λίγο κατά τον προγραμματισμό της συσκευής. Όταν όμως ολοκληρωθεί ο προγραμματισμός τα περισσότερα θα σβήσουν. Εικόνα 2.46: Επιλογή του configure για τη φόρτωση του προγράμματος στην προγραμματιζόμενη λογική συσκευή της Altera. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 57

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Για να γίνει ο έλεγχος καλής λειτουργίας του κώδικα, πατάμε τον διακόπτη SW1 και παρατηρείται ότι ανάβουν τα LED L1 έως L3 σταδιακά. Το ίδιο συμβαίνει και όταν πατηθεί ο διακόπτης SW2, αλλά ανάβουν τα LED R3 έως R1 σταδιακά. Και τέλος όταν πατηθούν ταυτόχρονα και οι δυο διακόπτες SW1 και SW2 θα ενεργοποιούνται όλα τα LED ταυτόχρονα, όπου θα αναβοσβήνουν. Επομένως διαπιστώνουμε ότι ο κώδικάς μας λειτουργεί σωστά. 2.2 Εφαρμογές Όλες οι διαδικασίες που προαναφέρθηκαν μπορούν να υλοποιηθούν και από το Μενού Επιλογών Max + plusii 1. Hierarchy Display (Ενδείκτης ιεραρχίας Δομή του Project top down design). 2. Graphic Editor (Εισαγωγή Γραφικής παράστασης κυκλωματικού διαγράμματος). 3. Symbol Editor (Επεξεργαστής συμβόλων). 4. Text Editor (Επεξεργαστής κειμένου για γλώσσα VHDL κτλ). 5. Waveform Editor (Επεξεργαστής κυματομορφών για εισαγωγή στοιχείων κυματομορφών στον εξομοιωτή). 6. Floorplan Editor (Επεξεργαστής κατόψεων εμφάνιση των χρησιμοποιούμενων ή όχι, logic array blocks, LAB που αντιστοιχούν στο chip). 7. Compiler (Μεταγλωττιστής). 8. Simulator (Προσομοιωτής λειτουργίας έξοδος κυματομορφών 9. Timing Analyzer (Αναλυτής χρονισμού Πίνακας καθυστερήσεων). 10. Programmer (Προγραμματιστής download στο chip). 11. Message processor (Επεξεργαστής μηνυμάτων πχ. από compiler κτλ). Εικόνα 2.47: Εμφάνιση του μενού επιλογών του MAX+plus II. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 58

Πτυχιακή Εργασία 2.3 Εισαγωγή σχεδίου με σχηματικό διάγραμμα (Graphic Editor) Στο παράθυρο διαχείρισης επιλέγουμε MAX+plusII Graphic Editor. Στη συνέχεια ανοίγει το παράθυρο της εφαρμογής το οποίο πρέπει να πάρει κάποιο όνομα με κατάληξη *.gdf. Για το λόγο αυτό επιλέγουμε File Save As και το όνομα του φακέλου που επιλέξαμε για το Project που έχει ήδη επιλεγεί. Ο επεξεργαστής γραφικών παραστάσεων θα δημιουργήσει ένα ξεχωριστό αρχείο για το σχηματικό διάγραμμα και θα το αποθηκεύσει στο φάκελο του έργου σε μορφή *.gdf (graphic design file). Στο ορθογώνιο που επιγράφεται File Name γράφουμε το όνομα του αρχείου που πρέπει όμως να είναι ίδιο με το όνομα του έργου. Στην περίπτωση που κλείσουμε όλη την εφαρμογή και την ενεργοποιήσουμε πάλι, το όνομα του τελευταίου project δεν ανοίγει αυτόματα και τον αντίστοιχο τύπο αρχείου (ανοίγει το τελευταίο project). Για το λόγο αυτό επιλέγουμε File open και τον τύπο του αρχείου που υπάρχει στην επιλογή bullet ανάλογα με το τύπο του επεξεργαστή (πχ. gdf, sym, scf, txt κτλ). Η παραπάνω λογική ισχύει για την ενεργοποίηση κάθε επεξεργαστή και για αυτό δεν θα αναφερθεί ξανά στο κείμενο. 2.3.1) Εισαγωγή λογικών συμβόλων Ο επεξεργαστής γραφικών μπορεί να περιέχει αρκετές βιβλιοθήκες, οι οποίες περιέχουν στοιχεία κυκλωμάτων που μπορούν να εισαχθούν στο σχηματικό μας διάγραμμα. Οι βασικότερες είναι οι ακόλουθες : 1. Prim (primitives): Περιέχει, βασικές πύλες (διαφόρων εισόδων), διάφορα στοιχεία που αφορούν Vcc ή gnd, εισόδους και εξόδους δεδομένων και ρολογιών για τη γραφική απεικόνιση στον εξομοιωτή και διάφορα άλλα. 2. mf (mega functions): Περιέχει ένα μεγάλο αριθμό λογικών ολοκληρωμένων LSI που βρίσκουμε στο εμπόριο (πχ 7400, 74139 κτλ) 3.mega_lpm: Αναφέρεται σε πιο απαιτητικούς χρήστες και περιέχει στοιχεία συγκεκριμένων κατηγοριών (πχ μετρητές, μνήμες, fifo κτλ), των οποίων όμως τα χαρακτηριστικά (δυνατότητες πχ όπως μήκος μετρητή, modulo set, reset κτλ) ελέγχονται μέσα από ειδικό παράθυρο που ανοίγει στο χρήστη αυτόματα η εφαρμογή (με διπλό κλικ του ποντικιού πάνω στο αντικείμενο). 4. edif: Ανάλογη με τη βιβλιοθήκη mf. Για την προσπέλαση σε κάθε μία από τις βιβλιοθήκες με σκοπό την εισαγωγή κάποιου συμβόλου (υλικού) αρκεί ένα διπλό κλικ στο ποντίκι στον κενό χώρο στο παράθυρο του επεξεργαστή γραφικών ή εναλλακτικά εφόσον έχουμε επιλέξει τη θέση του συμβόλου πάνω στην επιφάνεια εργασίας με δεξί κλικ επιλέγουμε Enter symbol. Το ορθογώνιο παράθυρο που εμφανίζεται περιέχει τις symbol libraries. Επιλέγοντας την αντίστοιχη βιβλιοθήκη εμφανίζεται αυτόματα ένα κατάλογος από τα σύμβολα που την αποτελούν. Εάν για παράδειγμα, θέλουμε μία πύλη OR 2εισόδων, τότε επιλέγουμε prim και στη συνέχεια or2 και τέλος ΟΚ. Στην συνέχεια για την τοποθέτηση συμβόλων εισόδου - εξόδου, τα οποία είναι απαραίτητα για τη λειτουργία του εξομοιωτή αλλά και είναι τα φυσικά σημεία σύνδεσης του chip με το περιβάλλον (pins), επιλέγουμε τη βιβλιοθήκη prim και input ή output αντίστοιχα. Επόμενο στάδιο είναι να δώσουμε ονόματα στα σύμβολα εισόδου εξόδου. Αυτό γίνεται με την τοποθέτηση του ποντικιού στη θέση PIN_NAME και διπλό κλικ. Στη συνέχεια γράφουμε το όνομα που επιθυμούμε. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 59

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Τελευταίο στάδιο είναι η σύνδεση των κόμβων με καλώδια. Αυτό γίνεται πολύ απλά, για παράδειγμα όταν πρόκειται για τη σύνδεση δύο συμβόλων τοποθετούμε το βέλος του ποντικιού στο επιθυμητό άκρο του ενός συμβόλου, πατάμε το αριστερό πλήκτρο του ποντικιού και κρατώντας το πατημένο το μεταφέρουμε μέχρι το επιθυμητό άκρο του δεύτερου συμβόλου όπου και το αφήνουμε. Τα δύο σύμβολα έχουν ενωθεί ηλεκτρικά μεταξύ τους. Στη συνέχεια και εφόσον δεν έχουμε αφήσει κανένα σημείο συμβόλου ασύνδετο μπορούμε να προχωρήσουμε στο μεταφραστή (compiler). Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 60

Πτυχιακή Εργασία ΚΕΦΑΛΑΙΟ ΙΙΙ ΕΦΑΡΜΟΓΕΣ ΣΧΕΔΙΑΣΗΣ Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 61

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εφαρμογή 1: Κύκλωμα Ελέγχου Σημάτων Αυτοκινήτου Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ενεργοποιεί τους λαμπτήρες των φλας ενός αυτοκινήτου. Θα υπάρχουν αντίστοιχα τρεις διαφορετικοί λαμπτήρες για δεξιά και τρεις για αριστερά, οι οποίοι θα ανάβουν σταδιακά ο ένας μετά τον άλλον για κάθε πλευρά όταν πατηθεί ο αντίστοιχος διακόπτης (αριστερά - δεξιά). Επίσης θα αναβοσβήνουν όλα μαζί όταν θα πατηθούν ταυτόχρονα και οι δύο διακόπτες για την ένδειξη alarm. Διαδικασία Σχεδίασης: Από την εκφώνηση συμπεραίνεται ότι θα έχουμε έξι λαμπτήρες συνολικά για την υλοποίηση της άσκησης. Θα υπάρχουν τρεις από την αριστερή και τρεις από την δεξιά πλευρά, όπως απεικονίζεται παρακάτω (Σχήμα 3.1.1). L1 L2 L3 R3 R2 R1 Σχήμα 3.1.1: Απεικόνιση των φαναριών του αυτοκινήτου. Για την κατανόηση του συστήματος πρέπει να καθορίσουμε τις εισόδους. Οι διακόπτες που θα έχουμε είναι οι Χ 1 και Χ 2 με τους οποίους θα τεθούν σε λειτουργία τα φλας του αυτοκινήτου. Στη συνέχεια αναλύουμε τις περιπτώσεις των δύο διακοπτών: Όταν οι διακόπτες Χ 1 και Χ 2 έχουν ταυτόχρονα την τιμή 0 (Χ 1 Χ 2 =00) τότε οι λαμπτήρες θα είναι σβηστοί, θα είναι δηλαδή στην κατάσταση IDLE. Όταν η Χ 1 πάρει την τιμή 1 (Χ 1 Χ 2 =10) τότε θα ενεργοποιηθούν οι λαμπτήρες στην δεξιά πλευρά (R1, R2, R3), οι οποίοι θα ανάβουν σταδιακά ο ένας μετά τον άλλον. Θα ανάψει δηλαδή πρώτα ο R1, μετά ο R2 και μετά ο R3. Όταν η Χ 2 πάρει την τιμή 1 (Χ 1 Χ 2 =01) τότε θα ενεργοποιηθούν οι λαμπτήρες στην αριστερή πλευρά (L1, L2, L3), οι οποίοι θα ανάβουν σταδιακά ο ένας μετά τον άλλον. Θα ανάψει δηλαδή πρώτα ο L1 μετά ο L2 και μετά ο L3. Όταν οι διακόπτες Χ 1 και Χ 2 έχουν ταυτόχρονα την τιμή 1 (Χ 1 Χ 2 =11) τότε οι λαμπτήρες θα αναβοσβήνουν όλοι μαζί, θα είναι δηλαδή στην κατάσταση LR3. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 62

Πτυχιακή Εργασία Αναλυτική εξήγηση όλων των λαμπτήρων: Για την ενεργοποίηση του R1 οι έξοδοι θα είναι 0 0 0 0 0 1. L1 L2 L3 R3 R2 R1 Για την ενεργοποίηση του R2 οι έξοδοι θα είναι 0 0 0 0 1 1. L1 L2 L3 R3 R2 R1 Για την ενεργοποίηση του R3 οι έξοδοι θα είναι 0 0 0 1 1 1. L1 L2 L3 R3 R2 R1 Για την ενεργοποίηση του L1 οι έξοδοι θα είναι 1 0 0 0 0 0. L1 L2 L3 R3 R2 R1 Για την ενεργοποίηση του L2 οι έξοδοι θα είναι 1 1 0 0 0 0. L1 L2 L3 R3 R2 R1 Για την ενεργοποίηση του L3 οι έξοδοι θα είναι 1 1 1 0 0 0. L1 L2 L3 R3 R2 R1 Για την ενεργοποίηση του LR3 οι έξοδοι θα είναι 1 1 1 1 1 1, δηλαδή είναι στην κατάσταση alarm όπου οι λαμπτήρες αναβοσβήνουν. Θα πηγαίνει δηλαδή στην κατάσταση LR3 και μετά στην κατάσταση IDLE. L1 L2 L3 R3 R2 R1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 63

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής L1 L2 L3 R3 R2 R1 Στο σημείο αυτό ακολουθεί το διάγραμμα καταστάσεων (Σχήμα. 3.1.2), το οποίο αναπαριστά όλες τις πιθανές περιπτώσεις που μπορεί να δημιουργηθούν με βάση αυτών που προαναφέρθηκαν. Το διάγραμμα καταστάσεων μπορεί να χρησιμοποιηθεί για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος. Επίσης, χρησιμοποιείται για να παραστήσει τη συνολική λειτουργία του κυκλώματος. 01 L 2 01 11 10 00 L 3 L 1 10 01 00 00 11 IDLE 10 00 01 11 10 01 00 11 LR 3 10 00 01 11 01 10 00 11 11 R 3 R 1 01 00 11 10 R 2 10 Σχήμα 3.1.2 Διάγραμμα καταστάσεων Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 64

Πτυχιακή Εργασία Από το παραπάνω διάγραμμα καταστάσεων μπορεί να συνταχθεί ο πίνακας καταστάσεων 3.1.1 του συστήματος. Ο πίνακας καταστάσεων εκτός του ότι χρησιμοποιείται για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος, χρησιμοποιείται κυρίως για την σχεδίαση του κυκλώματος. Ο τρόπος με τον οποίο μπορεί να παρασταθεί ένα ακολουθιακό κύκλωμα είναι το μοντέλο moore. Στη περίπτωση αυτή οι γραμμές του πίνακα καταστάσεων αντιστοιχούν στις παρούσες καταστάσεις ενώ οι στήλες στους συνδυασμούς των εισόδων. Οι καταχωρήσεις που θα υπάρχουν στον πίνακα είναι οι επόμενες καταστάσεις που σχετίζονται με το συνδυασμό των εισόδων και των παρουσών καταστάσεων. Τέλος υπάρχει μια στήλη που δείχνει τη κατάσταση των εξόδων για τη κάθε γραμμή παρούσας κατάστασης. Παρούσα Κατάσταση Πίνακας 3.1.1 Πίνακας καταστάσεων (Μοντέλο moore) Είσοδοι X 1 X 2 Έξοδοι QC QB QA X1X2 = 00 X1X2= 01 X1X2= 10 X1X2= 11 Z6 Z5 Z4 Z3 Z2 Z1 IDLE IDLE L1 R1 LR3 0 0 0 0 0 0 L1 IDLE L2 IDLE LR3 1 0 0 0 0 0 L2 IDLE L3 IDLE LR3 1 1 0 0 0 0 L3 IDLE IDLE IDLE IDLE 1 1 1 0 0 0 R1 IDLE IDLE R2 LR3 0 0 0 0 0 1 R2 IDLE IDLE R3 LR3 0 0 0 0 1 1 R3 IDLE IDLE IDLE IDLE 0 0 0 1 1 1 LR3 IDLE IDLE IDLE IDLE 1 1 1 1 1 1 Για να παρασταθούν οι καταστάσεις IDLE, L1, L2, L3, R1, R2, R3 και LR3 απαιτούνται τρεις μεταβλητές κατάστασης Q C Q B Q A. Άρα, απαιτούνται και τρία flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D2, D1, και D0. Ο τρόπος που εκχωρούνται οι δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους. Στη συνέχεια θα δείξουμε πως θα εκχωρήσουμε τις μεταβλητές Q C Q B Q A στις καταστάσεις IDLE, L1, L2, L3, R1, R2, R3 και LR3 : IDLE: Q C 0 L1: Q C 0 L2: Q C 0 L3: Q C 0 Q B 0 Q B 0 Q B 1 Q B 1 Q A 0 Q A 1 Q A 0 Q A 1 LR3: Q C 1 R1: Q C 1 R2: Q C 1 R3: Q C 1 Q B 1 Q B 0 Q B 0 Q B 1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 65

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Q A 1 Q A 0 Q A 1 Q A 0 Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές κατάστασης Q C Q B Q A, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.1.2: Πίνακας 3.1.2 Πίνακας Μεταβάσεων του αναγνωριστή Παρούσα Κατάσταση Είσοδοι X 1 X 2 Έξοδοι QC QB QA X1X2 = 00 X1X2= 01 X1X2= 10 X1X2= 11 Z6 Z5 Z4 Z3 Z2 Z1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 Ο παραπάνω πίνακας μπορεί να πάρει την μορφή του πίνακα Μεταβάσεων 3.1.3: Πίνακας Μεταβάσεων 3.1.3 Πρωτεύουσες Παρούσα Επόμενη Είσοδοι Κατάσταση Κατασταση Πρωτεύουσα Έξοδος X1 X2 Q C Q B Q A + Q C + Q B + Q A Z6 Z5 Z4 Z3 Z2 Z1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 66

Πτυχιακή Εργασία 1 1 1 1 1 0 0 0 1 1 1 1 1 1 Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip - flop για κάθε συνδυασμό παρούσας κατάστασης εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip flop. Οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip flop, όπως απεικονίζονται στον πίνακα διεγέρσεων 3.1.4: Πίνακας Διεγέρσεων 3.1.4 Πρωτεύουσες Παρούσα Επόμενη Δευτερεύουσα Είσοδοι Κατάσταση Κατασταση Έξοδος Πρωτεύουσα Έξοδος X1 X2 Q C Q B Q A + Q C + Q B + Q A D C D B D A Z6 Z5 Z4 Z3 Z2 Z1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 67

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Χρησιμοποιώντας τους πίνακες Karnaugh εξάγονται οι ελάχιστες συναρτήσεις που απαιτούνται για τη δημιουργία ενός ακολουθιακού κυκλώματος. X 1 X 2 Q B Q Q C =0 00 A 00 01 11 10 0 0 0 0 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 0 0 0 0 01 0 0 0 0 01 0 0 0 0 11 1 1 0 1 11 1 1 0 0 10 1 0 0 0 10 1 1 0 0 D C = Q C Q B X 1 X 2 + Q C Q A X 1 X 2 + Q C Q B Q A X 1 +Q C Q B X 1 X 1 X 2 Q B Q Q C =0 00 A 00 01 11 10 0 0 0 0 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 0 0 0 0 01 0 1 0 1 01 0 0 0 0 11 1 1 0 1 11 1 1 0 0 10 0 0 0 0 10 0 1 0 0 D B = Q C Q B Q A X 2 + Q C Q B X 1 X 2 + Q C Q B Q A X 2 + Q C Q B X 1 X 2 + Q C Q B Q A X 1 Q B Q A Q C =0 X 1 X 2 00 01 11 10 00 0 0 0 0 Q B Q A Q C =1 X 1 X 2 00 01 11 10 00 0 0 0 0 01 1 0 0 1 01 0 0 0 0 11 1 1 0 1 11 1 1 0 0 10 0 0 0 0 10 1 0 0 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 68

Πτυχιακή Εργασία D A = Q C Q B Q A X 2 + Q C Q B Q A X 2 + Q C Q B X 1 X 2 + Q C Q B X 1 X 2 + Q C Q B Q A X 1 X 1 X 2 Q B Q Q C =0 00 A 00 01 11 10 0 1 1 1 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 0 0 1 0 01 0 1 1 1 01 0 0 1 0 11 0 1 1 1 11 0 0 1 0 10 0 1 1 1 10 0 0 1 0 Z 6 = Q C Q A + Q C Q B + Q C Q B Q A X 1 X 2 Q B Q Q C =0 00 A 00 01 11 10 0 0 1 1 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 0 0 1 0 01 0 0 1 1 01 0 0 1 0 11 0 0 1 1 11 0 0 1 0 10 0 0 1 1 10 0 0 1 0 Z 5 = Q C Q B + Q C Q B Q A X 1 X 2 Q B Q Q C =0 00 A 00 01 11 10 0 0 1 0 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 0 0 1 0 01 0 0 1 0 01 0 0 1 0 11 0 0 1 0 11 0 0 1 0 10 0 0 1 0 10 0 0 1 0 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 69

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Z 4 = Q C Q B Q A + Q C Q B Q A Q B Q A Q C =0 X 1 X 2 00 01 11 10 00 0 0 0 0 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 0 0 1 1 01 0 0 0 0 01 0 0 1 1 11 0 0 0 0 11 0 0 1 1 10 0 0 0 0 10 0 0 1 1 Z 3 = Q C Q B Q B Q A Q C =0 X 1 X 2 00 01 11 10 00 0 0 0 0 Q B Q A Q C =1 X 1 X 2 00 01 11 10 00 0 1 1 1 01 0 0 0 0 01 0 1 1 1 11 0 0 0 0 11 0 1 1 1 10 0 0 0 0 10 0 1 1 1 Z 2 = Q C Q B + Q C Q A X 1 X 2 Q B Q Q C =0 00 A 00 01 11 10 0 0 0 0 X 1 X 2 00 Q B Q Q C =1 A 00 01 11 10 1 1 1 1 01 0 0 0 0 01 1 1 1 1 11 0 0 0 0 11 1 1 1 1 10 0 0 0 0 10 1 1 1 1 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 70

Πτυχιακή Εργασία Z 1 = Q C Από τις ελάχιστες συναρτήσεις των πρωτευουσών και δευτερευουσών εισόδων που προκύπτουν από τους πίνακες Karnaugh που έχουν υλοποιηθεί σχεδιάζεται το παρακάτω ακολουθιακό κύκλωμα (Σχήμα 3.1.3). Σχήμα 3.1.3: Ακολουθιακό Κύκλωμα Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 71

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Η άσκηση θα υλοποιηθεί με δύο τρόπους. Ο πρώτος τρόπος υλοποιείται με τη βοήθεια των ελάχιστων συναρτήσεων που έχουν εξαχθεί από τους πίνακες Karnaugh, που δημιουργήθηκαν παραπάνω. Ενώ ο δεύτερος τρόπος υλοποιείται με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY car2 IS PORT (CLK, RIGHT, LEFT, CLRN :IN STD_LOGIC; L1, L2, L3, R3, R2, R1 :OUT STD_LOGIC); END car2; ARCHITECTURE circuit OF car2 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; DA<=(NOT QC AND NOT QB AND NOT QA AND LEFT) OR (NOT QC AND QB AND NOT QA AND LEFT) OR (NOT QC AND NOT QB AND RIGHT AND LEFT) OR (QC AND NOT QB AND RIGHT AND LEFT) OR (QC AND NOT QB AND NOT QA AND RIGHT); DB<=(NOT QC AND NOT QB AND QA AND LEFT) OR (NOT QC AND NOT QB AND RIGHT AND LEFT) OR (NOT QC AND QB AND NOT QA AND LEFT) OR (QC AND NOT QB AND RIGHT AND LEFT) OR (QC AND NOT QB AND QA AND RIGHT); DC<=(NOT QC AND NOT QB AND RIGHT AND LEFT) OR (NOT QC AND NOT QA AND RIGHT AND Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 72

Πτυχιακή Εργασία LEFT) OR (NOT QC AND NOT QB AND NOT QA AND RIGHT) OR (QC AND NOT QB AND RIGHT); FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); L1<=(NOT QC AND QA) OR (NOT QC AND QB) OR (QC AND QB AND QA); L2<=(NOT QC AND QB) OR (QC AND QB AND QA); L3<=(NOT QC AND QB AND QA) OR (QC AND QB AND QA); R3<=(QC AND QB); R2<=(QC AND QB) OR (QC AND QA); R1<=QC; END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.1.4 Σχήμα 3.1.4: Αποτέλεσμα προσομοίωσης Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 73

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY car IS PORT (CLK, RIGHT, LEFT, CLR :IN STD_LOGIC; Z :OUT STD_LOGIC_VECTOR (6 DOWNTO 1)); END car; ARCHITECTURE circuit OF car IS TYPE STATE_TYPE IS (IDLE, L1, L2, L3, R1, R2, R3,LR3); SIGNAL NEXTSTATE :STATE_TYPE; BEGIN PROCESS (CLR, CLK) BEGIN IF CLR='0' THEN NEXTSTATE<=IDLE; ELSIF (CLK='1' AND CLK'EVENT) THEN CASE NEXTSTATE IS WHEN IDLE=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=L1; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=R1; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=LR3; ELSE NEXTSTATE<=IDLE; WHEN L1=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=L2; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=LR3; ELSE NEXTSTATE<=IDLE; WHEN L2=> IF (RIGHT ='0') AND (LEFT ='1') Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 74

Πτυχιακή Εργασία THEN NEXTSTATE<=L3; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=LR3; ELSE NEXTSTATE<=IDLE; WHEN L3=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSE NEXTSTATE<=IDLE; WHEN R1=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=R2; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=LR3; ELSE NEXTSTATE<=IDLE; WHEN R2=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=R3; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=LR3; ELSE NEXTSTATE<=IDLE; WHEN R3=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSE NEXTSTATE<=IDLE; WHEN LR3=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 75

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής END CASE; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=IDLE; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=IDLE; ELSE NEXTSTATE<=IDLE; CASE NEXTSTATE IS WHEN IDLE => Z<="000000"; WHEN L1 => Z<="100000"; WHEN L2 => Z<="110000"; WHEN L3 => Z<="111000"; WHEN R1 => Z<="000001"; WHEN R2 => Z<="000011"; WHEN R3 => Z<="000111"; WHEN LR3 => Z<="111111"; END CASE; END PROCESS; END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.1.5 Σχήμα 3.1.5: Αποτέλεσμα προσομοίωσης Η προσομοίωση που δημιουργήθηκε από το Waveform Editor του MAX+PLUS II είναι ένας τρόπος για να παρουσιαστούν όλες οι περιπτώσεις που παίρνουν οι είσοδοι (LEFT RIGHT). Ακόμα αποτελεί έναν τρόπο για να διαπιστώσουμε εάν ο κώδικας που έχει υλοποιηθεί, θα δώσει τις σωστές αλλά και τις Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 76

Πτυχιακή Εργασία αντίστοιχες τιμές στα LED σύμφωνα με τις απαιτήσεις και τις προδιαγραφές του συστήματος. Ακολουθεί η απεικόνιση του Edit Sympol (Σχήμα 3.1.6). Είναι ένας τρόπος αναπαράστασης της λειτουργικής σχεδίασης των εισόδων και εξόδων, όπως φαίνεται παρακάτω: Σχήμα 3.1.6: Απεικόνιση της λειτουργικής σχεδίασης. Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. Μια βιβλιοθήκη (library) VHDL αποτελεί το χώρο, όπου ο μεταγλωττιστής (compiler) της VHDL αποθηκεύει πληροφορίες για μια σχεδίαση ενός project, συμπεριλαμβάνοντας και ενδιάμεσα αρχεία που χρησιμοποιούνται κατά την ανάλυση, προσομοίωση και σύνθεση του κυκλώματος. Για την τρέχουσα σχεδίαση σε VHDL ο compiler δημιουργεί αυτόματα και χρησιμοποιεί στη συνέχεια τη βιβλιοθήκη που ονομάζεται work. Η βιβλιοθήκη work (συνήθως είναι ένας υποκατάλογος στο κατάλογο του project) δεν περιλαμβάνει όλες τις πληροφορίες που είναι απαραίτητες για ένα συγκεκριμένο έργο (project). Όταν η γλώσσα VHDL έγινε βιομηχανικό πρότυπο της IEEE 1164 Standard, δημιουργήθηκαν παράλληλα και κάποιες άλλες μορφές σήματος. Όταν πρόκειται να χρησιμοποιηθούν αυτές οι μορφές σήματος, θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. Επιπλέον οι γραμμές αυτές χρησιμοποιούνται για να επιτρέψουν τη χρήση μορφής σήματος STANDARD LOG- IC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Οι επόμενες δύο γραμμές χρησιμοποιούνται για να επιτρέψουν την πρόσβαση στις βιβλιοθήκες της ALTERA, που εμπεριέχουν τη βιβλιοθήκη των μακροσυναρτήσεων (macrofunctions) στη διεύθυνση c:\maxplus2\max2lib\mf. Μια μακροσυνάρτηση είναι ένα πρόγραμμα σε γλώσσα VHDL που μιμείται τη λειτουργία ενός κλασικού ολοκληρωμένου κυκλώματος τεχνολογίας TTL, μεσαίας βαθμίδας ολοκλήρωσης με όλες τις εισόδους και εξόδους του. Η χρήση αυτών των μακροσυναρτήσεων γίνεται είτε επιλέγοντας το σύμβολό της από τη λίστα της βιβλιοθήκης, όταν η εισαγωγή προγράμματος γίνεται διαμέσου σχηματικού διαγράμματος, είτε επιλέγοντας την αντίστοιχη συνιστώσα (COMPONENT) ως α_(κωδικός συνιστώσας), όταν η εισαγωγή γίνεται δια μέσου κώδικα VHDL. Τα Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 77

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής σήματα εισόδου-εξόδου της συνιστώσας παίρνονται επιλέγοντας «Help», «Old-Style Macrofunctions» και τη συνιστώσα που πρόκειται να εισαχθεί στο πρόγραμμα. LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; Το ENTITY ορίζεται ως το όνομα της αυτοτελούς μονάδος καθώς και οι είσοδοι και έξοδοι της (με τη δεσμευμένη λέξη port). Τα CLK, RIGHT, LEFT, CLRN αποτελούν τα σήματα εισόδου, ενώ τα L1, L2, L3, R3, R2, R1 αποτελούν τα σήματα εξόδου. Η κατεύθυνση τους προσδιορίζεται με τη χρήση των λεκτικών IN και OUT. Με τη μορφή σήματος STD_LOGIC μπορούν να οριστούν σήματα και άλλων επιπλέον λογικών καταστάσεων όπως, για παράδειγμα, υψηλής σύνθετης αντίστασης (High Z) Z, αδιάφορης κατάστασης -, και άλλων λιγότερο συνήθων μορφών. ENTITY car2 IS PORT (CLK, RIGHT, LEFT, CLRN :IN STD_LOGIC; L1, L2, L3, R3, R2, R1 :OUT STD_LOGIC); END car2; Με τη δήλωση ARCHITECTURE ορίζεται η εσωτερική δομή της μονάδας. Τα σήματα (εισόδου - εξόδου) πηγάζουν από τη δήλωση ENTITY που έχει προηγηθεί. Η ARCHITECTURE μπορεί να περιλαμβάνει, επίσης, τα σήματα και τις δηλώσεις που είναι τοπικά (local) κατ αναλογία με τις γνωστές γλώσσες υψηλού επιπέδου. Η λέξη κλειδί SIGNAL δηλώνει δεδομένα σημάτων που κινούνται στα καλώδια του κυκλώματος. Οι δηλώσεις σημάτων μπορούν να γίνουν είτε μέσα στη δήλωση οντότητας, είτε στην περιοχή δηλώσεων της αρχιτεκτονικής, είτε στο τμήμα δηλώσεων ενός πακέτου. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση τα ονόματα των σημάτων που δηλώνονται είναι CLR, CK, DA, DB, DC, QA, QB, QC, HIGH. ARCHITECTURE circuit OF car2 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; Στην συνέχεια ξεκινάει η υλοποίηση του κυρίως προγράμματος και γίνεται αρχικοποίηση των σημάτων HIGH, CK, CLR με τον τελεστή ανάθεσης σήματος (<=). BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; Γίνεται υλοποίηση των εισόδων των Flip Flop DA, DB, DC μέσω των εξισώσεων που προέκυψαν από τους πίνακες Karnaugh. DA<=(NOT QC AND NOT QB AND NOT QA AND LEFT) Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 78

Πτυχιακή Εργασία OR (NOT QC AND QB AND NOT QA AND LEFT) OR (NOT QC AND NOT QB AND RIGHT AND LEFT) OR (QC AND NOT QB AND RIGHT AND LEFT) OR (QC AND NOT QB AND NOT QA AND RIGHT); DB<=(NOT QC AND NOT QB AND QA AND LEFT) OR (NOT QC AND NOT QB AND RIGHT AND LEFT) OR (NOT QC AND QB AND NOT QA AND LEFT) OR (QC AND NOT QB AND RIGHT AND LEFT) OR (QC AND NOT QB AND QA AND RIGHT); DC<=(NOT QC AND NOT QB AND RIGHT AND LEFT) OR (NOT QC AND NOT QA AND RIGHT AND LEFT) OR (NOT QC AND NOT QB AND NOT QA AND RIGHT) OR (QC AND NOT QB AND RIGHT); Η σύνδεση του στιγμιότυπου με τα υπόλοιπα κυκλώματα γίνεται με τη χρήση της λέξης κλειδί PORT MAP ακολουθούμενης από μια λίστα που δείχνει τα σήματα που συνδέονται στις γραμμές (ακίδες) της συνιστώσας. Οι συνδέσεις των σημάτων του υπό σχεδίαση κυκλώματος στις γραμμές (ακίδες) της συνιστώσας μπορούν να γίνουν με δύο τρόπους: είτε μέσω συσχέτισης θέσης (Positional Association), είτε μέσω συσχέτισης ονόματος (Name Association). Όταν τα σήματα αναφέρονται με την ίδια σειρά που αναφέρονται και οι ακίδες της συνιστώσας τότε γίνεται λόγος για συσχέτιση θέσης. Όταν τα σήματα δεν αναφέρονται με την ίδια σειρά, που αναφέρονται και οι ακίδες της συνιστώσας και η αντιστοίχηση γίνεται σήμα προς ακίδα με το όνομά τους (ακίδα συνιστώσας=>σήμα κυκλώματος), τότε γίνεται λόγος για συσχέτιση ονόματος. Αυτή η μορφή προγραμματισμού κατά την οποία χρησιμοποιούνται υποκυκλώματα, που διασυνδέονται μεταξύ τους προκειμένου να δημιουργηθεί ένα νέο κύκλωμα, ονομάζεται δομημένο ύφος προγραμματισμού (structural style of programming). FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Με βάση πάλι τις εξισώσεις από τους πίνακες Karnaugh υλοποιούνται οι έξοδοι του συστήματος και έχουμε και το τέλος του προγράμματος. L1<=(NOT QC AND QA) OR (NOT QC AND QB) Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 79

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής OR (QC AND QB AND QA); L2<=(NOT QC AND QB) OR (QC AND QB AND QA); L3<=(NOT QC AND QB AND QA) OR (QC AND QB AND QA); R3<=(QC AND QB); R2<=(QC AND QB) OR (QC AND QA); R1<=QC; END circuit; 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Όταν πρόκειται να χρησιμοποιηθούν η μορφή σήματος STANDARD LOGIC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της AL- TERA, θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Τα CLK, RIGHT, LEFT, CLR αποτελούν τα σήματα εισόδου, ενώ το Ζ αποτελεί ένα σήμα εξόδου. Το σήμα εξόδου δηλώνεται με την μορφή STD_LOGIC_VECTOR (6 DOWNTO 1),που αποτελεί μια σειρά έξι μεμονωμένων δυαδικών ψηφίων, καθένα από τα οποία αποτελεί ένα ανεξάρτητο σήμα, με το ψηφίο d 6 ως περισσότερο σημαντικό ψηφίο και το ψηφίο d 1 ως λιγότερο σημαντικό ψηφίο. Η σειρά αυτή δεν αποτελεί δυαδικό αριθμό οκτώ ψηφίων. Αναφέρεται σε μεμονωμένα ψηφία, όπως για παράδειγμα, τα ψηφία μιας πόρτας εισόδου ή εξόδου. Κάθε επιμέρους ψηφίο μπορεί να οριστεί ως [ονομασία σήματος(αριθμός ψηφίου)]. ENTITY car IS PORT (CLK, RIGHT, LEFT, CLR :IN STD_LOGIC; Z :OUT STD_LOGIC_VECTOR (6 DOWNTO 1)); END car; Η εσωτερική δομή της μονάδας γίνεται με τη δήλωση ARCHITECTURE. Η λέξη κλειδί TYPE ακολουθούμενη από το αντικείμενο δεδομένων STATE_TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα. Αυτή η μορφή δήλωσης σήματος ονομάζεται απαριθημένοςτύπος (enumerated type) και επιτρέπει στον χρήστη να αποφασίσει για όλες τις δυνατές τιμές που μπορούν να πάρουν τα δεδομένα. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση από την επόμενη κατάσταση NEXTSTATE και παίρνει τις τιμές που έχουν δηλωθεί στο STATE_TYPE. ARCHITECTURE circuit OF car IS TYPE STATE_TYPE IS (IDLE, L1, L2, L3, R1, R2, R3,LR3); SIGNAL NEXTSTATE :STATE_TYPE; Οι μοναδικές ακολουθιακές (sequential) εντολές που εκτελούνται σειριακά από το μεταφραστή είναι αυτές που βρίσκονται φωλιασμένες μέσα σε μια εντολή τύπου PROCESS, η οποία όμως με τη σειρά της αποτελεί μια σύγχρονη εντολή Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 80

Πτυχιακή Εργασία καθώς το τελικό της αποτέλεσμα εκτελείται παράλληλα με τις άλλες σύγχρονες εντολές από το μεταφραστή. Επίσης, η χρήση της λέξης PROCESS έγινε για να επιτρέψει την χρήση των εντολών IF και ELSE, προκειμένου να δημιουργηθεί η προτεραιότητα με την οποία επηρεάζουν την λειτουργία του κυκλώματος οι είσοδοί του. BEGIN PROCESS (CLR, CLK) BEGIN IF CLR='0' THEN NEXTSTATE<=IDLE; ELSIF (CLK='1' AND CLK'EVENT) THEN Ακολουθεί ο τρόπος που γίνεται η προτεραιότητα των εισόδων. Για να επιτευχθεί η προτεραιότητα χρησιμοποιείται η δήλωση αφιέρωσης σήματος υπό συνθήκη δια μέσου των εντολών WHEN και ELSE. Αν η συνθήκη μετά την εντολή WHEN δεν είναι αληθινή, η εντολή ELSE παραπέμπει στην επόμενη πρόταση κ.ο.κ. μέχρι που να βρεθεί αληθινή συνθήκη. Η ακολουθιακή μορφή που έχει η διαδικασία δήλωσης αφιέρωσης σήματος υπό συνθήκη επιτρέπει με βάση την σειρά αναγραφής και άρα εκτέλεσης των δηλώσεων. Η διαδικασία είναι ίδια για όλες τις υπορουτίνες, που ακολουθούνται για τον έλεγχο των εισόδων (RIGHT και LEFT) που βρίσκονται μέσα στην CASE. CASE NEXTSTATE IS WHEN IDLE=> IF (RIGHT ='0') AND (LEFT ='1') THEN NEXTSTATE<=L1; ELSIF (RIGHT ='1') AND (LEFT ='0') THEN NEXTSTATE<=R1; ELSIF (RIGHT ='1') AND (LEFT ='1') THEN NEXTSTATE<=LR3; ELSE NEXTSTATE<=IDLE; END CASE; Ακολουθείται η διαδικασία ελέγχου των εξόδων με βάση τον πίνακα αληθείας. Και τέλος, κλείνει πρώτα η διαδικασία PROCESS και μετά όλο το πρόγραμμα. CASE NEXTSTATE IS WHEN IDLE => Z<="000000"; WHEN L1 => Z<="100000"; WHEN L2 => Z<="110000"; WHEN L3 => Z<="111000"; WHEN R1 => Z<="000001"; WHEN R2 => Z<="000011"; WHEN R3 => Z<="000111"; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 81

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής WHEN END CASE; END PROCESS; END circuit; LR3 => Z<="111111"; Εφαρμογή 2: Κύκλωμα Ελέγχου Φωτεινών Σηματοδοτών 1 η Περίπτωση: Κύκλωμα Φωτεινών Σηματοδοτών Σε μια Διασταύρωση Κατά Τη Διάρκεια Της Ημέρας. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ελέγχει τους φωτεινούς σηματοδότες κυκλοφορίας σε μια διασταύρωση κατά την διάρκεια της ημέρας. Η κυκλοφορία της διασταύρωσης θα ελέγχεται από έναν τροχονόμο, ο οποίος θα έχει μια συσκευή, όπου θα πατάει ένα διακόπτη ώθησης (push button) που θα απενεργοποιεί τα φανάρια. Τα φανάρια θα ανάβουν σταθερά πορτοκαλί. Όταν δεν υπάρχει ο τροχονόμος τότε οι σηματοδότες θα λειτουργούν κανονικά ανά ένα παλμό. Αυτό σημαίνει ότι, όταν τα αυτοκίνητα θα κινούνται στο δρόμο ΑΔ (Ανατολή Δύση), οι αντίστοιχοι σηματοδότες θα είναι πράσινοι και οι σηματοδότες του δρόμου ΒΝ (Βοράς Νότος) κόκκινοι και το αντίστροφο. Όταν είναι να γίνει η εναλλαγή από πράσινο σε κόκκινο τότε θα περνάει από την κατάσταση του πορτοκαλί. Διαδικασία Σχεδίασης: Από την εκφώνηση συμπεραίνεται ότι θα έχουμε τρεις φωτεινούς σηματοδότες συνολικά για την υλοποίηση της άσκησης, οι οποίοι θα αντιστοιχούν στην κόκκινη, πορτοκαλί και πράσινη ένδειξη των φαναριών. Ο τρόπος που απεικονίζεται είναι ο παρακάτω (Σχήμα 3.2.1.1). Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 82

Πτυχιακή Εργασία Βορράς Ανατολή Tree Δύση Νότος Σχήμα 3.2.1.1: Απεικόνιση της διασταύρωσης κατά τη διάρκεια της ημέρας. Για την κατανόηση του συστήματος πρέπει να καθορίσουμε τις εισόδους. Στην προκειμένη περίπτωση έχουμε μόνο τον διακόπτη του τροχονόμου και τον παλμό που παίρνει από το clock. Η είσοδος που θα έχουμε είναι η Χ, όπου όταν είναι σε κατάσταση 0, τότε οι σηματοδότες θα λειτουργούν κανονικά. Όταν, όμως, είναι σε κατάσταση 1 σημαίνει ότι ο τροχονόμος έχει πατήσει τον διακόπτη από την συσκευή, με αποτέλεσμα οι σηματοδότες να ανάβουν σταθερά πορτοκαλί. Στο σημείο αυτό ακολουθεί το διάγραμμα καταστάσεων (Σχήμα 3.2.1.2), το οποίο αναπαριστά όλες τις πιθανές περιπτώσεις που μπορεί να δημιουργηθούν με βάση των παραπάνω. Το διάγραμμα καταστάσεων μπορεί να χρησιμοποιηθεί για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος. Επίσης, χρησιμοποιείται για να παραστήσει τη συνολική λειτουργία του κυκλώματος. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 83

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής X=0 K 0 K 1 X=1 X=0 X=1 X=0 K 4 X=0 X=1 X=1 X=1 K 3 X=0 K 2 Σχήμα 3.2.1.2: Διάγραμμα καταστάσεων. Από το παραπάνω διάγραμμα καταστάσεων μπορεί να συνταχθεί ο πίνακας καταστάσεων 3.2.1.1 του συστήματος. Ο πίνακας καταστάσεων εκτός του ότι χρησιμοποιείται για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος, χρησιμοποιείται κυρίως για την σχεδίαση του κυκλώματος. Ο τρόπος με τον οποίο μπορεί να παρασταθεί ένα ακολουθιακό κύκλωμα είναι το μοντέλο moore. Στη περίπτωση αυτή οι γραμμές του πίνακα καταστάσεων αντιστοιχούν στις παρούσες καταστάσεις ενώ οι στήλες στους συνδυασμούς των εισόδων. Οι καταχωρήσεις που θα υπάρχουν στον πίνακα είναι οι επόμενες καταστάσεις που σχετίζονται με το συνδυασμό των εισόδων και των παρουσών καταστάσεων. Τέλος υπάρχει μια στήλη που δείχνει τη κατάσταση της εξόδου για τη κάθε γραμμή παρούσας κατάστασης. Πίνακας 3.2.1.1 Πίνακας καταστάσεων (Μοντέλο moore) Παρούσα Κατάσταση Είσοδος X Έξοδοι QA QB QC X = 0 X= 1 Z1 Z2 Z3 K 0 K 1 K 4 1 0 1 K 1 K 2 K 4 0 1 1 K 2 K 3 K 4 1 0 1 K 3 K 0 K 4 0 1 1 K 4 K 0 K 4 1 1 0 X X X X X X X X X X X X X X X X X X X X X X X X Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 84

Πτυχιακή Εργασία X X X X X X X X X X X X Για να παρασταθούν οι καταστάσεις K 0, K 1, K 2, K 3, και K 4 απαιτούνται τρεις μεταβλητές κατάστασης Q A Q B Q C. Άρα, απαιτούνται και τρία flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D A, D B, και D C. Ο τρόπος που εκχωρούνται οι δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους. Στη συνέχεια θα δείξουμε πως απεικονίζονται οι έξοδοι του συστήματος στις καταστάσεις K 0, K 1, K 2, K 3, και K 4 των αντίστοιχων δρόμων της διασταύρωσης: K 0 : Ζ1 1 - NSGreen K 1 : Ζ1 0 - NSGreen K 2 : Ζ1 1 - EWGreen Ζ2 0 - NSYellow Ζ2 1 - NSYellow Ζ2 0 - EWYellow Ζ3 1 - EWRed Ζ3 1 - EWRed Ζ3 1 - NSRed K 3 : Ζ1 0 - EWGreen Ζ2 1 EWYellow Ζ3 1 - NSRed K 4 : Ζ1 1 - NSYellow Ζ2 1 - EWYellow Ζ3 0 -.EWGreen Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές κατάστασης Q A Q B Q C, ο πίνακας καταστάσεων του συστήματος μετατρέπεται, όπως φαίνεται στον πίνακα 3.2.1.2: Πίνακας 3.2.1.2 Πίνακας Μεταβάσεων του αναγνωριστή Παρούσα Κατάσταση Είσοδος X Έξοδοι QA QB QC X = 0 X= 1 Z1 Z2 Z3 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 X X X X X X X X X 1 1 0 X X X X X X X X X 1 1 1 X X X X X X X X X Ο παραπάνω πίνακας μπορεί να πάρει την μορφή του πίνακα Μεταβάσεων 3.2.1.3: Πίνακας Μεταβάσεων 3.2.1.3 Πρωτεύουσα Παρούσα Επόμενη Πρωτεύουσα Δεκαδικός Είσοδος Κατάσταση Κατασταση Έξοδος + + + X Q A Q B Q C Q A Q B Q C Z 1 Z 2 Z3 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 2 0 0 1 0 0 1 1 1 0 1 3 0 0 1 1 0 0 0 0 1 1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 85

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 4 0 1 0 0 0 0 0 1 1 0 5 0 1 0 1 Χ Χ Χ Χ Χ Χ 6 0 1 1 0 Χ Χ Χ Χ Χ Χ 7 0 1 1 1 Χ Χ Χ Χ Χ Χ 8 1 0 0 0 1 0 0 1 0 1 9 1 0 0 1 1 0 0 0 1 1 10 1 0 1 0 1 0 0 1 0 1 11 1 0 1 1 1 0 0 0 1 1 12 1 1 0 0 1 0 0 1 1 0 13 1 1 0 1 Χ Χ Χ Χ Χ Χ 14 1 1 1 0 Χ Χ Χ Χ Χ Χ 15 1 1 1 1 Χ Χ Χ Χ Χ Χ Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip - flop για κάθε συνδυασμό παρούσας κατάστασης εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip flop. Οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip flop, όπως απεικονίζονται στον πίνακα διεγέρσεων 3.2.1.4: Πίνακας Διεγέρσεων 3.2.1.4 Πρωτεύουσες Παρούσα Επόμενη Δευτερεύουσα Πρωτεύουσα Δεκαδικός Είσοδοι Κατάσταση Κατασταση Έξοδος Έξοδος + + + X Q A Q B Q C Q A Q B Q C D A D B D C Z 1 Z 2 Z 3 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 2 0 0 1 0 0 1 1 0 1 1 1 0 1 3 0 0 1 1 0 0 0 0 0 0 0 1 1 4 0 1 0 0 0 0 0 0 0 0 1 1 0 5 0 1 0 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ 6 0 1 1 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ 7 0 1 1 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ 8 1 0 0 0 1 0 0 1 0 0 1 0 1 9 1 0 0 1 1 0 0 1 0 0 0 1 1 10 1 0 1 0 1 0 0 1 0 0 1 0 1 11 1 0 1 1 1 0 0 1 0 0 0 1 1 12 1 1 0 0 1 0 0 1 0 0 1 1 0 13 1 1 0 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ 14 1 1 1 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ 15 1 1 1 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Για τη δημιουργία του ακολουθιακού κυκλώματος του συστήματος που επιθυμούμε να υλοποιήσουμε απαιτείται η εύρεση των ελάχιστων συναρτήσεων των πρωτευουσών και δευτερευουσών εξόδων. Αυτό επιτυγχάνεται με τους χάρτες Karnaugh. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 86

Πτυχιακή Εργασία XQ A Q B Q C 00 01 11 10 XQ A Q B Q C 00 01 11 10 00 0 0 1 1 00 0 0 0 0 01 0 X X 1 01 1 X X 0 11 0 X X 1 11 0 X X 0 10 0 X X 1 10 1 X X 0 D A = X D B = X Q B Q C + X Q B Q C = X (Q B + Q C ) XQ A00 XQ A Q B Q C 01 11 10 Q B Q 00 01 11 10 00 1 0 0 0 C 00 1 1 1 1 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 0 X X 0 10 1 X X 0 10 1 X X 1 D C = X Q A Q C Z 1 = Q C XQ A Q B Q C 00 01 11 10 XQ A Q B Q C 00 01 11 10 00 0 1 1 0 00 1 0 0 1 01 1 X X 1 01 1 X X 1 11 1 X X 1 11 1 X X 1 10 0 X X 0 10 1 X X 1 Z 2 = Q A + Q C Z 3 = Q A Παρακάτω απεικονίζεται το ακολουθιακό κύκλωμα που προκύπτει από τις ελάχιστες συναρτήσεις που έχουν διεξαχθεί από τους πίνακες Karnaugh (Σχήμα 3.2.1.3). Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 87

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Σχήμα 3.2.1.3: Ακολουθιακό Κύκλωμα. Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 88

Πτυχιακή Εργασία Η άσκηση θα υλοποιηθεί με δύο τρόπους. Ο πρώτος τρόπος υλοποιείται με τη βοήθεια των ελάχιστων συναρτήσεων που έχουν εξαχθεί από τους πίνακες Karnaugh, που δημιουργήθηκαν παραπάνω. Ενώ ο δεύτερος τρόπος υλοποιείται με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY daylights1 IS PORT (CLK, TROXONOMOS, CLRN :IN STD_LOGIC; Z1, Z2, Z3 :OUT STD_LOGIC); END daylights1; ARCHITECTURE circuit OF daylights1 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; DA<= TROXONOMOS; DB<=(NOT TROXONOMOS AND NOT QB AND QC) OR (NOT TROXONOMOS AND QB AND NOT QC); DC<=(NOT TROXONOMOS AND NOT QA AND NOT QC); FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Z1<= Z2<= Z3<= (NOT QC); (QA OR QC); (NOT QA); Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 89

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.2.1.4. Σχήμα 3.2.1.4: Αποτελέσματα προσομοίωσης. Στη συνέχεια έχουμε την απεικόνιση του Edit Sympol (Σχήμα 3.2.1.5). Είναι ένας τρόπος αναπαράστασης της λειτουργικής σχεδίασης των εισόδων και εξόδων, όπως φαίνεται παρακάτω: Σχήμα 3.2.1.5: Απεικόνιση λειτουργικής σχεδίασης. 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 90

Πτυχιακή Εργασία LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY daylights IS PORT (CLK, RESET, TROXONOMOS : IN STD_LOGIC; Z : OUT STD_LOGIC_VECTOR(3 DOWNTO 1)); END ENTITY daylights; ARCHITECTURE circuit OF daylights IS TYPE STATE_TYPE IS (K0, K1, K2, K3, K4); SIGNAL NEXTSTATE : STATE_TYPE; BEGIN SEQ:PROCESS (CLK, RESET) IS BEGIN IF (RESET = '0') THEN NEXTSTATE <= K0; ELSIF(CLK='1' AND CLK 'EVENT) THEN CASE NEXTSTATE IS WHEN K0 => IF TROXONOMOS ='0' THEN NEXTSTATE<=K1; ELSE NEXTSTATE<=K4; WHEN K1 => IF TROXONOMOS ='0' THEN NEXTSTATE<=K2; ELSE NEXTSTATE<=K4; WHEN K2 => IF TROXONOMOS ='0' THEN NEXTSTATE<=K3; ELSE NEXTSTATE<=K4; WHEN K3 => IF TROXONOMOS ='0' THEN NEXTSTATE<=K0; ELSE NEXTSTATE<=K4; WHEN K4 => IF TROXONOMOS ='0' Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 91

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής END CASE; THEN NEXTSTATE<=K0; ELSE NEXTSTATE<=K4; CASE NEXTSTATE IS WHEN K0 =>Z<="101"; WHEN K1 =>Z<="011"; WHEN K2 =>Z<="101"; WHEN K3 =>Z<="011"; WHEN K4 =>Z<="110"; END CASE; END PROCESS; END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.2.1.6 Σχήμα 3.2.1.6: Αποτελέσματα προσομοίωσης. Η προσομοίωση που δημιουργήθηκε από το Waveform Editor του MAXPLUS II είναι ένας τρόπος για να παρουσιαστούν όλες οι περιπτώσεις που παίρνουν οι είσοδοι (LEFT RIGHT). Ακόμα αποτελεί έναν τρόπο για να διαπιστώσουμε εάν ο κώδικας που έχει υλοποιηθεί, θα δώσει τις σωστές αλλά και τις αντίστοιχες τιμές στα LED σύμφωνα με τις απαιτήσεις και τις προδιαγραφές του συστήματος. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 92

Πτυχιακή Εργασία Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. Όταν η γλώσσα VHDL έγινε βιομηχανικό πρότυπο της IEEE 1164 Standard, δημιουργήθηκαν παράλληλα και κάποιες άλλες μορφές σήματος, οι οποίες όταν πρόκειται να χρησιμοποιηθούν θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. Εισάγονται επίσης για να επιτρέψουν τη χρήση μορφής σήματος STANDARD LOGIC. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Όταν επιθυμείται η χρήση των μακροσυναρτήσεων στο πρόγραμμα, τότε θα πρέπει να εισάγονται οι παρακάτω δύο γραμμές. Έτσι επιτρέπεται η πρόσβασή στις βιβλιοθήκες της ALTERA, που εμπεριέχουν τη βιβλιοθήκη των μακροσυναρτήσεων (macrofunctions) στη διεύθυνση c:\maxplus2\max2lib\mf. Μια μακροσυνάρτηση είναι ένα πρόγραμμα σε γλώσσα VHDL που μιμείται τη λειτουργία ενός κλασικού ολοκληρωμένου κυκλώματος τεχνολογίας TTL, μεσαίας βαθμίδας ολοκλήρωσης με όλες τις εισόδους και εξόδους του. LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; Το ENTITY ορίζεται ως το όνομα της αυτοτελούς μονάδος καθώς και οι είσοδοι και έξοδοι της, με τη δεσμευμένη λέξη PORT. Τα CLK, TROXONOMOS, CLRN αποτελούν τα σήματα εισόδου, ενώ τα Z1, Z2, Z3 αποτελούν τα σήματα εξόδου. Η κατεύθυνσή τους προσδιορίζεται με τη χρήση των λ εξεων IN και OUT. Με τη μορφή σήματος STD_LOGIC μπορούν να οριστούν σήματα και άλλων επιπλέον λογικών καταστάσεων. ENTITY daylights1 IS PORT (CLK, TROXONOMOS, CLRN :IN STD_LOGIC; Z1, Z2, Z3 :OUT STD_LOGIC); END daylights1; Με τη δήλωση ARCHITECTURE ορίζεται η εσωτερική δομή της μονάδας. Η λέξη κλειδί SIGNAL δηλώνει δεδομένα σημάτων που κινούνται στα καλώδια του κυκλώματος. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση τα ονόματα των σημάτων που δηλώνονται είναι CK, DA, DB, DC, QA, QB, QC, HIGH. Στην συνέχεια ξεκινάει η υλοποίηση του κυρίως προγράμματος, μετά γίνεται η αρχικοποίηση των σημάτων HIGH και CK με τον τελεστή ανάθεσης σήματος (<=). Επίσης, γίνεται υλοποίηση των εισόδων των Flip Flop DA, DB, DC μέσω των εξισώσεων που προέκυψαν από τους πίνακες Karnaugh. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 93

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής ARCHITECTURE circuit OF daylights1 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; DA<= TROXONOMOS; DB<=(NOT TROXONOMOS AND NOT QB AND QC) OR (NOT TROXONOMOS AND QB AND NOT QC); DC<=(NOT TROXONOMOS AND NOT QA AND NOT QC); Για να συνδέσουμε το στιγμιότυπο με τα υπόλοιπα κυκλώματα χρησιμοποιούμε τη λέξη κλειδί PORT MAP. Υποδεικνύει, δηλαδή, ποια σήματα θα συνδεθούν στις εισόδους και τις εξόδους ενός D Flip-Flop. Από τις εξισώσεις που έχουν υλοποιηθεί βάση των πινάκων Karnaugh προκύπτει ο παρακάτω τρόπος προγραμματισμού για τις εξόδους. FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Z1<=(NOT QC); Z2<=(QA OR QC); Z3<=(NOT QA); END circuit; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 94

Πτυχιακή Εργασία 2 ος τρόπος: Υλοποίηση με τους πίνακες αληθείας. Όταν πρόκειται να χρησιμοποιηθεί η μορφή σήματος STANDARD LOGIC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA, θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Τα CLK, RESET, TROXONOMOS αποτελούν τα σήματα εισόδου, ενώ το Ζ αποτελεί ένα σήμα εξόδου. Το σήμα εξόδου δηλώνεται με την μορφή STD_LOGIC_VECTOR (3 DOWNTO 1), που αποτελεί μια σειρά τεσσάρων μεμονωμένων δυαδικών ψηφίων, καθένα από τα οποία αποτελεί ένα ανεξάρτητο σήμα, με το ψηφίο d 3 ως περισσότερο σημαντικό ψηφίο και το ψηφίο d 1 ως λιγότερο σημαντικό ψηφίο. ENTITY daylights IS PORT (CLK, RESET, TROXONOMOS : IN STD_LOGIC; Z : OUT STD_LOGIC_VECTOR(3 DOWNTO 1)); END ENTITY daylights; Με τη δήλωση ARCHITECTURE γίνεται η εσωτερική δομή της μονάδας. Η λέξη κλειδί TYPE ακολουθούμενη από το αντικείμενο δεδομένων STATE_TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα. Αυτή η μορφή δήλωσης σήματος δίνει τη δυνατότητα στον χρήστη να πάρει την απόφαση για το ποιες θα είναι όλες οι δυνατές τιμές για τα δεδομένα και ονομάζεται enumerated τύπος. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση από την επόμενη κατάσταση NEXTSTATE και παίρνει τις τιμές που έχουν δηλωθεί στο STATE_TYPE. ARCHITECTURE circuit OF daylights IS TYPE STATE_TYPE IS (K0, K1, K2, K3, K4); SIGNAL NEXTSTATE : STATE_TYPE; Μέσα σε μια εντολή PROCESS βρίσκονται φωλιασμένες μοναδικές ακολουθιακές (sequential) εντολές που εκτελούνται σειριακά από το μεταφραστή. Η εντολή αυτή αποτελεί μια σύγχρονη εντολή καθώς το τελικό της αποτέλεσμα εκτελείται παράλληλα με τις άλλες σύγχρονες εντολές από το μεταφραστή. Επίσης, η χρήση της λέξης PROCESS έγινε για να επιτρέψει την χρήση των εντολών IF και ELSE, προκειμένου να δημιουργηθεί η προτεραιότητα με την οποία επηρεάζουν την λειτουργία του κυκλώματος οι είσοδοί του. BEGIN SEQ:PROCESS (CLK, RESET) IS BEGIN IF (RESET = '0') THEN Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 95

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής NEXTSTATE <= K0; ELSIF(CLK='1' AND CLK 'EVENT) THEN Ακολουθεί ο τρόπος που γίνεται η προτεραιότητα των εισόδων. Για να επιτευχθεί η προτεραιότητα χρησιμοποιείται η δήλωση αφιέρωσης σήματος υπό συνθήκη δια μέσου των εντολών WHEN και ELSE. Αν η συνθήκη μετά την εντολή WHEN δεν είναι αληθινή, η εντολή ELSE παραπέμπει στην επόμενη πρόταση κ.ο.κ. μέχρι που να βρεθεί αληθινή συνθήκη. Η ακολουθιακή μορφή που έχει η διαδικασία δήλωσης αφιέρωσης σήματος υπό συνθήκη επιτρέπει με βάση την σειρά αναγραφής και άρα εκτέλεσης των δηλώσεων. Η διαδικασία είναι ίδια για όλες τις υπορουτίνες, που ακολουθούνται για τον έλεγχο των εισόδων (RIGHT και LEFT) που βρίσκονται μέσα στην CASE. Παρακάτω παρουσιάζεται μόνο η κατάσταση K0 καθώς ακολουθείται η ίδια διαδικασία και για τις υπόλοιπες. WHEN K0 => IF TROXONOMOS ='0' THEN NEXTSTATE<=K1; ELSE NEXTSTATE<=K4; END CASE; Ακολουθείται η διαδικασία ελέγχου των εξόδων με βάση τον πίνακα αληθείας. Και τέλος, κλείνει πρώτα η διαδικασία PROCESS και μετά όλο το πρόγραμμα. CASE NEXTSTATE IS WHEN K0 =>Z<="101"; WHEN K1 =>Z<="011"; WHEN K2 =>Z<="101"; WHEN K3 =>Z<="011"; WHEN K4 =>Z<="110"; END CASE; END PROCESS; END circuit; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 96

Πτυχιακή Εργασία 2 η Περίπτωση: Κύκλωμα Ρύθμισης Φωτεινών Σηματοδοτών Σε Μια Διασταύρωση Κατά Τη Διάρκεια Της Νύχτας. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ελέγχει τους φωτεινούς σηματοδότες κυκλοφορίας σε μια διασταύρωση κατά τη διάρκεια της νύχτας. Η κυκλοφορία της διασταύρωσης θα ελέγχεται από έναν αισθητήρα, που θα βρίσκεται σε κάποια απόσταση από τα φανάρια. Μόλις πατηθεί από ένα αυτοκίνητο τότε αυτόματα το φανάρι θα πάρει την αμέσως επόμενη κατάσταση. Όταν δεν πατηθεί ο αισθητήρας τότε οι σηματοδότες θα λειτουργούν κανονικά ανά ένα παλμό. Αυτό σημαίνει ότι, προσπαθούμε να έχουμε οποιαδήποτε στιγμή αυτοκίνητο στον δρόμο. Διαδικασία Σχεδίασης: Από την εκφώνηση συμπεραίνεται ότι θα έχουμε τρεις φωτεινούς σηματοδότες συνολικά για την υλοποίηση της άσκησης, οι οποίοι θα αντιστοιχούν στην κόκκινη, πορτοκαλί και πράσινη ένδειξη των φαναριών αλλά και έναν αισθητήρα που θα υπάρχει καθοδόν των δρόμων. Ο τρόπος που απεικονίζεται είναι ο παρακάτω (Σχήμα 3.2.2.1). Βορράς Αισθητήρας Ανατολή Tree Δύση Νότος Σχήμα 3.2.2.1: Απεικόνιση διασταύρωσης κατά τη διάρκεια της νύχτας. Για την κατανόηση του συστήματος πρέπει να καθορίσουμε τις εισόδους. Στην προκειμένη περίπτωση έχουμε μόνο τον αισθητήρα και τον παλμό που παίρνει από το clock. Η είσοδος που θα έχουμε είναι η Χ, όπου όταν είναι σε κατάσταση 0 τότε οι σηματοδότες θα λειτουργούν κανονικά. Όταν, όμως, είναι σε κατάσταση 1 σημαίνει ότι ο αισθητήρας ΒΝ έχει πατηθεί με αποτέλεσμα οι σηματοδότες να πάνε αυτόματα στην επόμενη κατάσταση. Παραδείγματος χάριν αν στον δρόμο ΑΔ (Ανατολή Δύση) ο φωτεινός σηματοδότης είναι κόκκινος και πατηθεί ο αισθητήρας Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 97

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής τότε ο φωτεινός σηματοδότης θα αλλάξει και θα γίνει πράσινος. Ενώ στον δρόμο ΒΝ (Βορράς Νότος) θα είναι πράσινο και μετά θα αλλάξει και θα πάει στην πορτοκαλί ένδειξη. Στο σημείο αυτό ακολουθεί το διάγραμμα καταστάσεων (Σχήμα. 3.2.2.2), το οποίο αναπαριστά όλες τις πιθανές περιπτώσεις που μπορεί να δημιουργηθούν με βάση των παραπάνω. Το διάγραμμα καταστάσεων μπορεί να χρησιμοποιηθεί για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος. Επίσης, χρησιμοποιείται για να παραστήσει τη συνολική λειτουργία του κυκλώματος. X=0 ή 1 K 0 K 1 X=0 ή 1 X=0 ή 1 K 3 K 2 X=0 ή 1 Σχήμα 3.2.2.2: Διάγραμμα καταστάσεων. Από το παραπάνω διάγραμμα καταστάσεων μπορεί να συνταχθεί ο πίνακας καταστάσεων 3.2.2.1 του συστήματος. Ο πίνακας καταστάσεων χρησιμοποιείται για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος, αλλά επίσης χρησιμοποιείται κυρίως για την σχεδίαση του κυκλώματος. Ο τρόπος με τον οποίο μπορεί να παρασταθεί ένα ακολουθιακό κύκλωμα είναι το μοντέλο moore. Στη περίπτωση αυτή οι γραμμές του πίνακα καταστάσεων αντιστοιχούν στις παρούσες καταστάσεις ενώ οι στήλες στους συνδυασμούς των εισόδων. Οι καταχωρήσεις που θα υπάρχουν στον πίνακα είναι οι επόμενες καταστάσεις που σχετίζονται με το συνδυασμό των εισόδων και των παρουσών καταστάσεων. Τέλος υπάρχει μια στήλη που δείχνει τη κατάσταση της εξόδου για τη κάθε γραμμή παρούσας κατάστασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 98

Πτυχιακή Εργασία Πίνακας 3.2.2.1 Πίνακας καταστάσεων (Μοντέλο moore) Παρούσα Κατάσταση Είσοδος X Έξοδοι QA QB QC X = 0 X= 1 Z1 Z2 Z3 K 0 K 1 K 4 1 0 1 K 1 K 2 K 4 0 1 1 K 2 K 3 K 4 1 0 1 K 3 K 0 K 4 1 1 0 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Για να παρασταθούν οι καταστάσεις K 0, K 1, K 2, και K 3 απαιτούνται τρεις μεταβλητές κατάστασης Q A Q B Q C. Άρα, απαιτούνται και τρία flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D A, D B, και D C. Ο τρόπος που εκχωρούνται οι δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους. Στη συνέχεια θα δείξουμε πως απεικονίζονται οι έξοδοι του συστήματος στις καταστάσεις K 0, K 1, K 2 και K 3 των αντίστοιχων δρόμων της διασταύρωσης: K 0 : Ζ1 1 - NSGreen K 1 : Ζ1 0 - NSGreen K 2 : Ζ1 1 - EWGreen Ζ2 0 - NSYellow Ζ2 1 - NSYellow Ζ2 0 - EWYellow Ζ3 1 - EWRed Ζ3 1 - EWRed Ζ3 1 - NSRed K 3 : Ζ1 1 - NSRed Ζ2 1 - EWYellow Ζ3 0 - EWGreen Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές κατάστασης Q A Q B Q C, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.2.2.2: Πίνακας 3.2.2.2 Πίνακας Μεταβάσεων του αναγνωριστή Παρούσα Κατάσταση Είσοδος X Έξοδοι QA QB QC X = 0 X= 1 Z1 Z2 Z3 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 X X X X X X X X X 1 0 1 X X X X X X X X X 1 1 0 X X X X X X X X X 1 1 1 X X X X X X X X X Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 99

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Ο παραπάνω πίνακας μπορεί να πάρει την μορφή του πίνακα Μεταβάσεων 3.2.2.3: Πίνακας Μεταβάσεων 3.2.2.3 Πρωτεύουσα Παρούσα Επόμενη Πρωτεύουσα Δεκαδικός Είσοδος Κατάσταση Κατασταση Έξοδος + + + X Q A Q B Q C Q A Q B Q C Z 1 Z 2 Z3 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 2 0 0 1 0 0 1 1 1 0 1 3 0 0 1 1 0 0 0 1 1 0 4 0 1 0 0 Χ Χ Χ X X X 5 0 1 0 1 Χ Χ Χ X X X 6 0 1 1 0 Χ Χ Χ X X X 7 0 1 1 1 Χ Χ Χ X X X 8 1 0 0 0 0 0 1 1 0 1 9 1 0 0 1 0 1 0 0 1 1 10 1 0 1 0 0 1 1 1 0 1 11 1 0 1 1 0 0 0 1 1 0 12 1 1 0 0 Χ Χ Χ X X X 13 1 1 0 1 Χ Χ Χ X X X 14 1 1 1 0 Χ Χ Χ X X X 15 1 1 1 1 Χ Χ Χ X X X Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip - flop για κάθε συνδυασμό παρούσας κατάστασης εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip flop. Οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip flop, όπως απεικονίζονται στον πίνακα διεγέρσεων 3.2.2.4 Πίνακας Διεγέρσεων 3.2.2.4 Πρωτεύουσες Παρούσα Επόμενη Δευτερεύουσα Πρωτεύουσα Δεκαδικός Είσοδοι Κατάσταση Κατασταση Έξοδος Έξοδος + + + X Q A Q B Q C Q A Q B Q C D A D B D C Z 1 Z 2 Z 3 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 2 0 0 1 0 0 1 1 0 1 1 1 0 1 3 0 0 1 1 0 0 0 0 0 0 1 1 0 4 0 1 0 0 Χ Χ Χ Χ Χ Χ X X X 5 0 1 0 1 Χ Χ Χ Χ Χ Χ X X X 6 0 1 1 0 Χ Χ Χ Χ Χ Χ X X X 7 0 1 1 1 Χ Χ Χ Χ Χ Χ X X X 8 1 0 0 0 0 0 1 0 0 1 1 0 1 9 1 0 0 1 0 1 0 0 1 0 0 1 1 10 1 0 1 0 0 1 1 0 1 1 1 0 1 11 1 0 1 1 0 0 0 0 0 0 1 1 0 12 1 1 0 0 Χ Χ Χ Χ Χ Χ X X X 13 1 1 0 1 Χ Χ Χ Χ Χ Χ X X X 14 1 1 1 0 Χ Χ Χ Χ Χ Χ X X X 15 1 1 1 1 Χ Χ Χ Χ Χ Χ X X X Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 100

Πτυχιακή Εργασία Για τη δημιουργία του ακολουθιακού κυκλώματος του συστήματος που επιθυμούμε να υλοποιήσουμε απαιτείται η εύρεση των ελάχιστων συναρτήσεων των πρωτευουσών και δευτερευουσών εξόδων. Αυτό επιτυγχάνεται με τους χάρτες Karnaugh. XQ A Q B Q C 00 01 11 10 XQ A Q B Q C 00 01 11 10 00 0 X X 0 00 0 X X 0 01 0 X X 0 01 1 X X 1 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 1 X X 1 D A = Q A D B = Q B Q C + Q B Q C = (Q B + Q C ) XQ A00 XQ A Q B Q C 01 11 10 Q B Q 00 01 11 10 00 1 X X 1 C 00 1 X X 1 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 1 X X 1 10 1 X X 1 10 1 X X 1 D C = Q C Z 1 = Q B + Q C XQ A Q B Q C 00 01 11 10 XQ A Q B Q C 00 01 11 10 00 0 X X 0 00 1 X X 1 01 1 X X 1 01 1 X X 1 11 1 X X 1 11 0 X X 0 10 0 X X 0 10 1 X X 1 Z 2 = Q C Z 3 = Q B + Q C Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 101

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Παρακάτω απεικονίζεται το ακολουθιακό κύκλωμα που προκύπτει από τις ελάχιστες συναρτήσεις που διεξαχθήκαν από τους πίνακες Karnaugh (Σχήμα. 3.2.2.3). Σχήμα 3.2.2.3: Ακολουθιακό Κύκλωμα. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 102

Πτυχιακή Εργασία Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Η άσκηση θα υλοποιηθεί με δύο τρόπους. Ο πρώτος τρόπος υλοποιείται με τη βοήθεια των ελάχιστων συναρτήσεων που έχουν εξαχθεί από τους πίνακες Karnaugh, που δημιουργήθηκαν παραπάνω. Ενώ ο δεύτερος τρόπος υλοποιείται με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY nightlights1 IS PORT (CLK, AIS8HTHRAS, CLRN :IN STD_LOGIC; Z1, Z2, Z3 :OUT STD_LOGIC); END nightlights1; ARCHITECTURE circuit OF nightlights1 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; DA<=QA; DB<=(QB XOR QC); DC<=NOT QC; FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Z1<=(QB OR NOT QC); Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 103

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Z2<=(QC); Z3<=(NOT QB OR NOT QC); END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο Σχήμα 3.2.2.4 Σχήμα 3.2.2.4: Αποτελέσματα προσομοίωσης. Ακολουθεί και η απεικόνιση του Edit Sympol (Σχήμα 3.2.2.5), που αποτελεί ένα τρόπο αναπαράστασης της λειτουργικής σχεδίασης των εισόδων και εξόδων, όπως φαίνεται παρακάτω: Σχήμα 3.2.2.5: Απεικόνιση λειτουργικής σχεδίασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 104

Πτυχιακή Εργασία 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY nightlights IS PORT (CLK, RESET, AIS8HTHRAS : IN STD_LOGIC; Z : OUT STD_LOGIC_VECTOR(3 DOWNTO 1)); END ENTITY nightlights; ARCHITECTURE circuit OF nightlights IS TYPE STATE_TYPE IS (K0, K1, K2, K3); SIGNAL NEXTSTATE : STATE_TYPE; BEGIN PROCESS (CLK, RESET) IS BEGIN IF (RESET = '0') THEN NEXTSTATE <= K0; ELSIF(CLK='1' AND CLK 'EVENT) THEN CASE NEXTSTATE IS WHEN K0 => IF X='0' THEN NEXTSTATE<=K1 ; ELSE NEXTSTATE<=K1; WHEN K1 => IF X='0' THEN NEXTSTATE<=K2 ; ELSE NEXTSTATE<=K2; WHEN K2 => IF X='0' THEN NEXTSTATE<=K3 ; ELSE NEXTSTATE<=K3; WHEN K3 => IF X='0' THEN NEXTSTATE<=K0 ; ELSE NEXTSTATE<=K0; END CASE; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 105

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής CASE NEXTSTATE IS WHEN K0 =>Z<="101"; WHEN K1 =>Z<="011"; WHEN K2 =>Z<="101"; WHEN K3 =>Z<="011"; END CASE; END PROCESS; END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο Σχήμα 3.2.2.6 Σχήμα 3.2.2.6: Αποτελέσματα προσομοίωσης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 106

Πτυχιακή Εργασία Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. Όπως έχει αναφερθεί, η γλώσσα VHDL έγινε βιομηχανικό πρότυπο της IEEE 1164 Standard. Για το λόγο αυτό όταν πρόκειται να χρησιμοποιηθεί η μορφή σήματος STANDARD LOGIC όπως επίσης και οι βιβλιοθήκες της ALTERA που εμπεριέχουν τη βιβλιοθήκη των μακροσυναρτήσεων θα πρέπει να εισάγονται στην αρχή του προγράμματος οι επόμενες τέσσερις γραμμές. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; Το ENTITY ορίζεται ως το όνομα της αυτοτελούς μονάδος καθώς και οι είσοδοι και έξοδοι της, με τη δεσμευμένη λέξη PORT. Με τα λεκτικά IN και OUT προσδιορίζεται η κατεύθυνσή των σημάτων εισόδου, CLK, AIS8HTHRAS, CLRN και εξόδου, Z1, Z2, Z3. ENTITY nightlights1 IS PORT (CLK, AIS8HTHRAS, CLRN :IN STD_LOGIC; Z1, Z2, Z3 :OUT STD_LOGIC); END nightlights1; Για να οριστεί η εσωτερική δομή της μονάδας χρησιμοποιούμε την εντολή ARCHITECTURE ενώ για να δείξουμε δεδομένα σημάτων που κινούνται στα καλώδια του κυκλώματος, τη λέξη κλειδί SIGNAL. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος, που στη περίπτωσή μας είναι τα CK, DA, DB, DC, QA, QB, QC, HIGH. Στην συνέχεια ξεκινάει η υλοποίηση του κυρίως προγράμματος, μετά γίνεται η αρχικοποίηση των σημάτων HIGH και CK με τον τελεστή ανάθεσης σήματος (<=). Επίσης, γίνεται υλοποίηση των εισόδων των Flip Flop DA, DB, DC μέσω των εξισώσεων που προέκυψαν από τους πίνακες Karnaugh. ARCHITECTURE circuit OF nightlights1 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; DA<=QA; DB<=(QB XOR QC); DC<=NOT QC; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 107

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στη συνέχεια πραγματοποιείται η σύνδεση του στιγμιότυπου με τα υπόλοιπα κυκλώματα χρησιμοποιώντας τη λέξη κλειδί PORT MAP. Υποδεικνύει, δηλαδή, ποια σήματα θα συνδεθούν στις εισόδους και τις εξόδους ενός D Flip-Flop. Από τις εξισώσεις που έχουν υλοποιηθεί βάση των πινάκων Karnaugh προκύπτει ο παρακάτω τρόπος προγραμματισμού για τις εξόδους. FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Z1<=(QB OR NOT QC); Z2<=(QC); Z3<=(NOT QB OR NOT QC); Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 108

Πτυχιακή Εργασία 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Η ARCHITECTURE αποτελεί την εσωτερική δομή της μονάδας. Το STATE_TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα. Στην προκειμένη περίπτωση έχουμε τις καταστάσεις K0, K1, K2, K3. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Ακολουθούν οι ακολουθιακές εντολές που είναι φωλιασμένες στην λέξη κλειδί PRO- CESS. Και τέλος η διαδικασία προτεραιότητας των εισόδων δια μέσου των εντολών WHEN και ELSE. Ενδεικτικά παρακάτω παρουσιάζεται η κατάσταση K0. ARCHITECTURE circuit OF nightlights IS TYPE STATE_TYPE IS (K0, K1, K2, K3); SIGNAL NEXTSTATE : STATE_TYPE; BEGIN PROCESS (CLK, RESET) IS BEGIN IF (RESET = '0') THEN NEXTSTATE <= K0; ELSIF(CLK='1' AND CLK 'EVENT) THEN CASE NEXTSTATE IS WHEN K0 => IF X='0' THEN NEXTSTATE<=K1 ; ELSE NEXTSTATE<=K1; END CASE; Ακολουθείται η διαδικασία ελέγχου των εξόδων με βάση τον πίνακα αληθείας. Και τέλος, κλείνει πρώτα η διαδικασία PROCESS και μετά όλο το πρόγραμμα. CASE NEXTSTATE IS WHEN K0 =>Z<="101"; WHEN K1 =>Z<="011"; WHEN K2 =>Z<="101"; WHEN K3 =>Z<="011"; END CASE; END PROCESS; END circuit; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 109

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 3 η Περίπτωση: Κύκλωμα Ρύθμισης Φωτεινών Σηματοδοτών Σε Μια Διασταύρωση Κατά Τη Διάρκεια Της Ημέρας Αλλά Και Της Νύχτας. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ελέγχει τους φωτεινούς σηματοδότες κυκλοφορίας σε μια διασταύρωση όλο το εικοσιτετράωρο. Την μέρα η κυκλοφορία της διασταύρωσης θα ελέγχεται από έναν τροχονόμο, ο οποίος θα έχει μια συσκευή, όπου θα πατάει ένα διακόπτη ώθησης (push button) που θα απενεργοποιεί τα φανάρια. Τότε τα φανάρια θα ανάβουν σταθερά πορτοκαλί. Όταν δεν υπάρχει ο τροχονόμος τότε οι σηματοδότες θα λειτουργούν κανονικά ανά ένα παλμό. Αυτό σημαίνει ότι, όταν τα αυτοκίνητα θα κινούνται στο δρόμο ΑΔ (Ανατολή Δύση), οι αντίστοιχοι σηματοδότες θα είναι πράσινοι και οι σηματοδότες του δρόμου ΒΝ (Βοράς Νότος) κόκκινοι και το αντίστροφο. Όταν είναι να γίνει η εναλλαγή από πράσινο σε κόκκινο τότε θα περνάει από την κατάσταση του πορτοκαλί. Κατά τη διάρκεια της νύχτας τα φανάρια θα λειτουργούν όπως και την μέρα, όταν δεν υπάρχει τροχονόμος. Η διαφορά θα είναι ότι πριν τους σηματοδότες θα υπάρχει στο δρόμο ένας αισθητήρας, πού μόλις περάσει ένα αμάξι θα ενεργοποιηθεί. Οι σηματοδότες θα πάρουν αμέσως την επόμενη κατάσταση. Για παράδειγμα, αν στον δρόμο αυτόν ο σηματοδότης είναι πράσινος και πατηθεί ο διακόπτης, θα ανάψει πορτοκαλί και στη συνέχεια κόκκινο. Ακόμα, η διάρκεια που θα κρατάει το πορτοκαλί θα είναι δύο δευτερόλεπτα, ενώ η διάρκεια που θα κρατάει η κόκκινη και πράσινη ένδειξη θα είναι έξι δευτερόλεπτα. Διαδικασία Σχεδίασης: Από την εκφώνηση συμπεραίνεται ότι θα έχουμε τρεις φωτεινούς σηματοδότες συνολικά για κάθε δρόμο της διασταύρωσης, οι οποίοι θα αντιστοιχούν στην κόκκινη, πορτοκαλί και πράσινη ένδειξη των φαναριών. Ο τρόπος που απεικονίζεται είναι ο παρακάτω (Σχήμα 3.2.3.1). Βορράς Ανατολή Αισθητήρας Αισθητήρας Δύση Νότος Σχήμα 3.2.3.1: Απεικόνιση των σηματοδοτών μιας διασταύρωσης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 110

Πτυχιακή Εργασία Για την κατανόηση του συστήματος πρέπει να καθορίσουμε τις εισόδους. Έχουμε δύο διακόπτες X και X1. Με τον X καθορίζουμε αν τα φανάρια θα λειτουργούν την μέρα ή την νύχτα. Δηλαδή αν X=0, τότε τα φανάρια θα λειτουργούν κατά τη διάρκεια της μέρας, ενώ αν X=1, τότε θα λειτουργούν κατά τη διάρκεια της νύχτας. Ο διακόπτης X1 καθορίζει αντίστοιχα τον τροχονόμο την ημέρα και τον αισθητήρα την νύχτα. Κατά τη διάρκεια της μέρας (X=0), αν ο τροχονόμος έχει πατήσει τον διακόπτη από την συσκευή (X1=1) τότε οι σηματοδότες θα ανάβουν σταθερά πορτοκαλί. Ενώ κατά τη διάρκεια της νύχτας (X=1), αν ένα αμάξι ενεργοποιήσει τον αισθητήρα οι σηματοδότες θα αλλάξουν κατάσταση και θα πάνε στην επόμενη. Στο σημείο αυτό ακολουθεί το διάγραμμα καταστάσεων (Σχήμα 3.2.3.2), το οποίο αναπαριστά όλες τις πιθανές περιπτώσεις που μπορεί να δημιουργηθούν με βάση των παραπάνω. Το διάγραμμα καταστάσεων μπορεί να χρησιμοποιηθεί για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος. X=00,10,11 K 0 K 1 X=01 X=00 X=01 X=00,10,11 K 4 X=00,10,11 X=01 X=01 X=01 K 3 X=00,10,11 K 2 Σχήμα 3.2.3.2: Διάγραμμα καταστάσεων. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 111

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Από το παραπάνω διάγραμμα καταστάσεων μπορεί να συνταχθεί ο πίνακας καταστάσεων 3.2.3.1 του συστήματος. Ο πίνακας καταστάσεων εκτός του ότι χρησιμοποιείται για να ορίσει τη λειτουργία ενός ακολουθιακού κυκλώματος, χρησιμοποιείται κυρίως για την σχεδίαση του κυκλώματος. Ο τρόπος με τον οποίο μπορεί να παρασταθεί ένα ακολουθιακό κύκλωμα είναι το μοντέλο moore. Στη περίπτωση αυτή οι γραμμές του πίνακα καταστάσεων αντιστοιχούν στις παρούσες καταστάσεις ενώ οι στήλες στους συνδυασμούς των εισόδων. Οι καταχωρήσεις που θα υπάρχουν στον πίνακα είναι οι επόμενες καταστάσεις που σχετίζονται με το συνδυασμό των εισόδων και των παρουσών καταστάσεων. Τέλος υπάρχει μια στήλη που δείχνει τη κατάσταση της εξόδου για τη κάθε γραμμή παρούσας κατάστασης. Πίνακας 3.2.3.1 Πίνακας καταστάσεων (Μοντέλο moore) Παρ.Κατ. Είσοδος X Έξοδοι X Q A Q B Q 1 X 2 X 1 X 2 X 1 X 2 X 1 X 2 C 00 01 10 11 Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 7 Z 8 Z 9 Z 10 Z 11 Z 12 K 0 K 1 K 4 K 1 K 1 1 0 0 1 0 0 0 0 1 0 0 1 K 1 K 2 K 4 K 2 K 2 1 0 0 1 0 0 0 1 0 0 1 0 K 2 K 3 K 4 K 3 K 3 0 0 1 0 0 1 1 0 0 1 0 0 K 3 K 0 K 4 K 0 K 0 0 1 0 0 1 0 1 0 0 1 0 0 K 4 K 0 K 4 K 0 K 0 0 1 0 0 1 0 0 1 0 0 1 0 XXX XXX XXX XXX XXX Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ XXX XXX XXX XXX XXX Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ XXX XXX XXX XXX XXX Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Για να παρασταθούν οι καταστάσεις K 0, K 1, K 2, K 3, και K 4 απαιτούνται κανονικά τέσσερις μεταβλητές Q A Q B Q C Q D και τέσσερα flip flop ώστε να υλοποιηθούν οι δώδεκα έξοδοι που αντιστοιχούν σε τρια LED (κόκκινο, πορτοκαλί και πράσινο) για τον κάθε ορίζοντα. Οι σηματοδότες του Βορρά θα ενεργοποιούνται με τον ίδιο τρόπο με του Νότου. Το ίδιο συμβαίνει και για την Ανατολή και Δύση. Γι αυτό, δε χρειάζεται να πάρουμε τέταρτο flip flop, καθώς θα παίρνουμε τις ίδιες εισόδους για δύο εξόδους (π.χ. Z 1 και Z 4 ). Άρα, απαιτούνται τρία flip flop και τρεις μεταβλητές Q A Q B Q C. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, οπότε τα D A, D B, και D C. Ο τρόπος που εκχωρούνται οι δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους. Στη συνέχεια θα δείξουμε πως θα εκχωρήσουμε τις μεταβλητές Q A Q B Q C στις καταστάσεις K 0, K 1, K 2, K 3, και K 4 : K 0 : Q A 0 K 1 : Q A 0 K 2 : Q A 0 K 3 : Q A 0 K 4 : Q A 1 Q B 0 Q B 0 Q B 1 Q B 1 Q B 0 Q C 0 Q C 1 Q C 0 Q C 1 Q C 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 112

Πτυχιακή Εργασία Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές κατάστασης Q A Q B Q C, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.2.3.2: Πίνακας 3.2.3.2 Πίνακας Μεταβάσεων του αναγνωριστή Παρ.Κατ. Είσοδος X Έξοδοι X Q A Q B Q 1 X 2 X 1 X 2 X 1 X 2 X 1 X 2 C 00 01 10 11 Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 7 Z 8 Z 9 Z 10 Z 11 Z 12 000 001 100 001 001 1 0 0 1 0 0 0 0 1 0 0 1 001 010 100 010 010 1 0 0 1 0 0 0 1 0 0 1 0 010 011 100 011 011 0 0 1 0 0 1 1 0 0 1 0 0 011 000 100 000 000 0 1 0 0 1 0 1 0 0 1 0 0 100 000 100 000 000 0 1 0 0 1 0 0 1 0 0 1 0 XXX XXX XXX XXX XXX Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ XXX XXX XXX XXX XXX Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ XXX XXX XXX XXX XXX Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Ο παραπάνω πίνακας μπορεί να πάρει την μορφή του πίνακα Μεταβάσεων 3.2.3.3: Πίνακας Μεταβάσεων 3.2.3.3 Πρωτ. Δεκ. Παρ. Κατ. Επόμενη Κατ. Πρωτεύουσα Έξοδος Είσ. + + + X 1 X 2 Q A Q B Q C Q A Q B Q C Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 7 Z 8 Z 9 Z 10 Z 11 Z 12 0 00 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 00 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 2 00 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 3 00 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 4 00 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 5 00 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 6 00 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 7 00 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 8 01 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 9 01 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 10 01 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 11 01 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 12 01 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 13 01 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 14 01 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 15 01 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 16 10 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 17 10 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 18 10 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 19 10 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 20 10 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 21 10 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 22 10 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 23 10 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 24 11 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 25 11 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 26 11 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 27 11 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 28 11 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 29 11 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 30 11 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 31 11 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 113

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip - flop για κάθε συνδυασμό παρούσας κατάστασης εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip flop. Οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip flop, όπως απεικονίζονται στον πίνακα διεγέρσεων 3.2.3.4: Δε κ Πρωτ Είσ. Παρ. Κατ. X 1X 2 Q A Q B Q C Q A + Επόμενη Κατ. Q B + Q C + Πίνακας Διεγέρσεων 3.2.3.4 Δευτερεύουσ ες Έξοδοι Πρωτεύουσες Έξοδοι D A D B D C Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 7 Z 8 Z 9 Z 10 Z 11 Z 12 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 2 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 3 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 4 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 5 0 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 6 0 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 7 0 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 8 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 9 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 10 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 11 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 12 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 13 0 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 14 0 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 15 0 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 16 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 17 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 18 1 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 19 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 20 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 21 1 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 22 1 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 23 1 0 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 24 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 25 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 26 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 27 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 28 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 29 1 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 30 1 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ 31 1 1 Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Χ Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 114

Πτυχιακή Εργασία Για τη δημιουργία του ακολουθιακού κυκλώματος του συστήματος που επιθυμούμε να υλοποιήσουμε απαιτείται η εύρεση των ελάχιστων συναρτήσεων των πρωτευουσών και δευτερευουσών εξόδων. Αυτό επιτυγχάνεται με τους χάρτες Karnaugh. X 1 = 0 X 1 = 1 X 2 Q A X 2 Q A Q B Q C 00 01 11 10 Q B Q C 00 01 11 10 00 0 0 1 1 00 0 0 0 0 01 0 X X 1 01 0 X X 0 11 0 X X 1 11 0 X X 0 10 0 X X 1 10 0 X X 0 D A = X 1 X 2 X X 2 Q 1 =0 X A00 X 2 Q 1 =1 A Q B Q C 01 11 10 Q B Q 00 01 11 10 00 0 0 0 0 C 00 0 0 0 0 01 1 X X 0 01 1 X X 1 11 0 X X 0 11 0 X X 0 10 1 X X 0 10 1 X X 1 D B = X 1 X 2 Q B Q C + X 1 X 2 Q B Q C + X 1 Q B Q C + X 1 Q B Q C = X 1 X 2 ( Q B Q C + Q B Q C ) + X 1 ( Q B Q C + Q B Q C ) = X 1 X 2 (Q B + Q C ) + X 1 (Q B + Q C ) X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 1 0 0 0 00 1 0 0 1 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 0 X X 0 10 1 X X 0 10 1 X X 1 D C = X 1 X 2 Q A Q C + X 1 Q A Q C Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 115

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 1 0 0 1 00 1 0 0 1 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 0 X X 0 Z 1 = X 1 Q A Q B Q C + X 1 Q A Q B Q C = Q A Q B Q C ( X 1 + X 1 ) = Q A Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 1 1 0 00 0 1 1 0 01 1 X X 1 01 1 X X 1 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 0 X X 0 Z 2 = X 1 Q A + X 1 Q B Q C + X 1 Q A + X 1 Q B Q C = Q A ( X 1 +X 1 ) + Q B Q C ( X 1 + X 1 ) = Q A + Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 0 0 0 00 0 0 0 0 01 0 X X 0 01 0 X X 0 11 1 X X 1 11 1 X X 1 10 1 X X 1 10 1 X X 1 Z 3 = X 1 Q B + X 1 Q B = QB ( X 1 + X 1 ) = Q B Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 116

Πτυχιακή Εργασία X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 1 0 0 1 00 1 0 0 1 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 0 X X 0 Z 4 = X 1 Q A Q B Q C + X 1 Q A Q B Q C = Q A Q B Q C ( X 1 + X 1 ) = Q A Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 1 1 0 00 0 1 1 0 01 1 X X 1 01 1 X X 1 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 0 X X 0 Z 5 = X 1 Q A + X 1 Q B Q C + X 1 Q A + X 1 Q B Q C = Q A ( X 1 +X 1 ) + Q B Q C ( X 1 + X 1 ) = Q A + Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 0 0 0 00 0 0 0 0 01 0 X X 0 01 0 X X 0 11 1 X X 1 11 1 X X 1 10 1 X X 1 10 1 X X 1 Z 6 = X 1 Q B + X 1 Q B = QB ( X 1 + X 1 ) = Q B Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 117

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 0 0 0 00 0 0 0 0 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 0 X X 0 10 1 X X 1 10 1 X X 1 Z 7 = X 1 Q B Q C + X 1 Q B Q C = Q B Q C ( X 1 + X 1 ) = Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 1 1 0 00 0 1 1 0 01 0 X X 0 01 0 X X 0 11 1 X X 1 11 1 X X 1 10 0 X X 0 10 0 X X 0 Z 8 = X 1 Q A + X 1 Q B Q C + X 1 Q A + X 1 Q B Q C = Q A ( X 1 + X 1 ) + Q B Q C ( X 1 + X 1 ) = Q A + Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 1 0 0 1 00 1 0 0 1 01 1 X X 1 01 1 X X 1 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 0 X X 0 Z 9 = X 1 Q A Q B + X 1 Q A Q B = Q A Q B ( X 1 + X 1 ) = Q A Q B Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 118

Πτυχιακή Εργασία X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 0 0 0 00 0 0 0 0 01 0 X X 0 01 0 X X 0 11 0 X X 0 11 0 X X 0 10 1 X X 1 10 1 X X 1 Z 10 = X 1 Q B Q C + X 1 Q B Q C = Q B Q C ( X 1 + X 1 ) = Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 0 1 1 0 00 0 1 1 0 01 0 X X 0 01 0 X X 0 11 1 X X 1 11 1 X X 1 10 0 X X 0 10 0 X X 0 Z 11 = X 1 Q A + X 1 Q B Q C + X 1 Q A + X 1 Q B Q C = Q A ( X 1 + X 1 ) + Q B Q C ( X 1 + X 1 ) = Q A + Q B Q C X X 2 Q 1 = 0 X 1 = 1 A X 2 Q A00 Q B Q C 00 01 11 10 Q B Q C 01 11 10 00 1 0 0 1 00 1 0 0 1 01 1 X X 1 01 1 X X 1 11 0 X X 0 11 0 X X 0 10 0 X X 0 10 0 X X 0 Z 12 = X 1 Q A Q B + X 1 Q A Q B = Q A Q B ( X 1 + X 1 ) = Q A Q B Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 119

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Η άσκηση θα υλοποιηθεί με τρεις τρόπους. Ο πρώτος τρόπος υλοποιείται με τη βοήθεια των ελάχιστων συναρτήσεων που έχουν εξαχθεί από τους πίνακες Karnaugh, που δημιουργήθηκαν παραπάνω. Ενώ οι άλλοι δύο τρόποι υλοποιείται με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY daynightlights1 IS PORT (CLK, X, X1, CLRN :IN STD_LOGIC; Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, Z9, Z10, Z11, Z12 :OUT STD_LOGIC); END daynightlights1; ARCHITECTURE circuit OF daynightlights1 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; DA<=(NOT X AND X1); DB<=(NOT X AND NOT X1 AND NOT QB AND QC) OR (NOT X AND NOT X1 AND QB AND NOT QC) OR (X AND NOT QB AND QC) OR (X AND QB AND NOT QC); DC<=(NOT X AND NOT X1 AND NOT QA AND NOT QC) OR (X AND NOT QA AND NOT QC); FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 120

Πτυχιακή Εργασία FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Z1<= (NOT QA AND NOT QB AND NOT QC) ; Z2<= (QA OR (NOT QB AND QC)); Z3<= (QB); Z4<= (NOT QA AND NOT QB AND NOT QC) ; Z5<= (QA OR (NOT QB AND QC)); Z6<= (QB); Z7<= (QB AND NOT QC); Z8<= (QA OR (QB AND QC)); Z9<= (NOT QA AND NOT QB); Z10<= (QB AND NOT QC); Z11<= (QA OR (QB AND QC)); Z12<= (NOT QA AND NOT QB); END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.2.3.3. Σχήμα 3.2.3.3: Αποτελέσματα προσομοίωσης. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 121

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY daynightlights IS PORT (CLK, RESET, X, X1 : IN STD_LOGIC; Z : OUT STD_LOGIC_VECTOR(12 DOWNTO 1); END ENTITY daynightlights; ARCHITECTURE circuit OF daynightlights IS TYPE STATE_TYPE IS (K0, K1, K2, K3, K4); SIGNAL NEXTSTATE : STATE_TYPE; BEGIN PROCESS (CLK,RESET) IS BEGIN IF (RESET = '0') THEN NEXTSTATE<= K0; ELSIF(CLK='1' AND CLK 'EVENT)THEN CASE NEXTSTATE IS WHEN K0 => IF (X='0') AND (X1='0') THEN NEXTSTATE<= K1 ; ELSIF (X='0') AND (X1='1') THEN NEXTSTATE<=K4 ; ELSIF (X='1') AND (X1='0') THEN NEXTSTATE<=K1 ; ELSIF (X='1') AND (X1='1') THEN NEXTSTATE<=K1 ; WHEN K1 => IF (X='0') AND (X1='0') THEN NEXTSTATE<=K2; ELSIF (X='0') AND (X1='1') THEN NEXTSTATE<=K4; ELSIF (X='1') AND (X1='0') THEN NEXTSTATE<=K2; ELSIF (X='1') AND (X1='1') THEN NEXTSTATE<=K2; WHEN K2 => IF (X='0') AND (X1='0') THEN NEXTSTATE<=K3; ELSIF (X='0') AND (X1='1') Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 122

Πτυχιακή Εργασία THEN NEXTSTATE<=K4; ELSIF (X='1') AND (X1='0') THEN NEXTSTATE<=K3; ELSIF (X='1') AND (X1='1') THEN NEXTSTATE<=K3; WHEN K3 => IF (X='0') AND (X1='0') THEN NEXTSTATE<=K0; ELSIF (X='0') AND (X1='1') THEN NEXTSTATE<=K4; ELSIF (X='1') AND (X1='0') THEN NEXTSTATE<=K0; ELSIF (X='1') AND (X1='1') THEN NEXTSTATE<=K0; WHEN K4 => IF (X='0') AND (X1='0') THEN NEXTSTATE<=K0; ELSIF (X='0') AND (X1='1') THEN NEXTSTATE<=K4; ELSIF (X='1') AND (X1='0') THEN NEXTSTATE<=K0; ELSIF (X='1') AND (X1='1') THEN NEXTSTATE<=K0; END CASE; CASE NEXTSTATE IS WHEN K0 =>Z<="100100001001"; WHEN K1 =>Z<="100100010010"; WHEN K2 =>Z<="001001100100"; WHEN K3 =>Z<="010010100100"; WHEN K4 =>Z<="010010010010"; END CASE; END PROCESS; END circuit; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 123

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.2.3.4. Σχήμα 3.2.3.4: Αποτελέσματα προσομοίωσης. Η προσομοίωση που δημιουργήθηκε από το Waveform Editor του MAXPLUS II είναι ένας τρόπος για να παρουσιαστούν όλες οι περιπτώσεις που παίρνουν οι είσοδοι (Χ Χ1). Ακόμα αποτελεί έναν τρόπο για να διαπιστώσουμε εάν ο κώδικας που έχει υλοποιηθεί, θα δώσει τις σωστές αλλά και τις αντίστοιχες τιμές στα LED σύμφωνα με τις απαιτήσεις και τις προδιαγραφές του συστήματος. Στη συνέχεια έχουμε την απεικόνιση του Edit Sympol (Σχήμα 3.2.3.5). Είναι ένας τρόπος αναπαράστασης της λειτουργικής σχεδίασης των εισόδων και εξόδων, όπως φαίνεται παρακάτω: Σχήμα 3.2.3.5: Απεικόνιση λειτουργικής σχεδίασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 124

Πτυχιακή Εργασία 3 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας --Διαφοροποίηση. Ο τρόπος προγραμματισμού που ακολουθεί είναι μια διαφοροποίηση του προηγούμενου κώδικα των φωτεινών σηματοδοτών κατά τη διάρκεια της μέρας και της νύχτας. Χρησιμοποιείται για να μπορέσουμε να πάρουμε τους παλμούς για το κόκκινο πράσινο και πορτοκαλί. Δηλαδή, το κόκκινο και το πράσινο να διαρκούν το ίδιο (δηλ. να έχουν τον ίδιο παλμό), αλλά και τα δύο (κόκκινο πράσινο) να έχουν μεγαλύτερη διάρκεια (παλμό) από το πορτοκαλί. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY daynightlights2 IS PORT (CLK, RESET, X, X1 : IN STD_LOGIC; NGREEN, NRED, NYELLOW, SGREEN, SYELLOW, SRED, EGREEN, EYELLOW, ERED, WGREEN, WYELLOW, WRED : OUT STD_LOGIC); END ENTITY daynightlights2; ARCHITECTURE behavioral OF daynightlights2 IS TYPE STATE_TYPE IS (K0, K1, K2, K3, K4); SIGNAL NEXTSTATE : STATE_TYPE; SIGNAL COUNT : INTEGER RANGE 0 TO 10; BEGIN PROCESS (CLK,RESET) IS BEGIN IF (RESET = '0') THEN NEXTSTATE<= K0; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; COUNT<=0; ELSIF(CLK='1' AND CLK 'EVENT)THEN Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 125

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής CASE NEXTSTATE IS WHEN K0 => IF (X='0') AND (X1='0') THEN IF(COUNT=5) THEN COUNT<=0; NEXTSTATE<= K1 ; ELSE COUNT<=COUNT+1; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; ELSIF (X='0') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K4 ; ELSIF (X='1') AND (X1='0') THEN IF(COUNT=5) THEN COUNT<=0; NEXTSTATE<= K1 ; ELSE COUNT<=COUNT+1; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 126

Πτυχιακή Εργασία EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; ELSIF (X='1') AND (X1='1') THEN NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; COUNT<=0; NEXTSTATE<=K1; WHEN K1 => IF (X='0') AND (X1='0') THEN IF(COUNT=1) THEN COUNT<=0; NEXTSTATE<= K2 ; ELSE COUNT<=COUNT+1; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; ELSIF (X='0') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 127

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K4 ; ELSIF (X='1') AND (X1='0') THEN IF(COUNT=1) THEN COUNT<=0; NEXTSTATE<= K2 ; ELSE COUNT<=COUNT+1; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; ELSIF (X='1') AND (X1='1') THEN NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K2 ; WHEN K2 => IF (X='0') AND (X1='0') THEN IF(COUNT=5) THEN COUNT<=0; NEXTSTATE<= K3 ; ELSE COUNT<=COUNT+1; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 128

Πτυχιακή Εργασία NRED<='0'; NYELLOW<='0'; NGREEN<='1'; SRED<='0'; SYELLOW<='0'; SGREEN<='1'; ERED<='1'; EYELLOW<='0'; EGREEN<='0'; WRED<='1'; WYELLOW<='0'; WGREEN<='0'; ELSIF (X='0') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K4 ; ELSIF (X='1') AND (X1='0')THEN IF(COUNT=5) THEN COUNT<=0; NEXTSTATE<= K3 ; ELSE COUNT<=COUNT+1; NRED<='0'; NYELLOW<='0'; NGREEN<='1'; SRED<='0'; SYELLOW<='0'; SGREEN<='1'; ERED<='1'; EYELLOW<='0'; EGREEN<='0'; WRED<='1'; WYELLOW<='0'; WGREEN<='0'; ELSIF (X='1') AND (X1='1') THEN NRED<='0'; NYELLOW<='0'; NGREEN<='1'; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 129

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής SRED<='0'; SYELLOW<='0'; SGREEN<='1'; ERED<='1'; EYELLOW<='0'; EGREEN<='0'; WRED<='1'; WYELLOW<='0'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K3; WHEN K3 => IF (X='0') AND (X1='0') THEN IF(COUNT=1) THEN COUNT<=0; NEXTSTATE<= K0 ; ELSE COUNT<=COUNT+1; NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='1'; EYELLOW<='0'; EGREEN<='0'; WRED<='1'; WYELLOW<='0'; WGREEN<='0'; ELSIF (X='0') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K4 ; ELSIF (X='1') AND (X1='0') THEN IF(COUNT=1) THEN Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 130

Πτυχιακή Εργασία COUNT<=0; NEXTSTATE<= K0 ; ELSE COUNT<=COUNT+1; NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='1'; EYELLOW<='0'; EGREEN<='0'; WRED<='1'; WYELLOW<='0'; WGREEN<='0'; ELSIF (X='1') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='1'; EYELLOW<='0'; EGREEN<='0'; WRED<='1'; WYELLOW<='0'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K0; WHEN K4 => IF (X='0') AND (X1='0') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<=K0; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 131

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής END CASE; END PROCESS; END behavioral; ELSIF (X='0') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<=K4; ELSIF (X='1') AND (X1='0') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<=K0; ELSIF (X='1') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<=K0; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 132

Πτυχιακή Εργασία Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνονται παρακάτω (Σχήμα 3.2.3.6 και Σχήμα 3.2.3.7.). Κάνουμε την προσομοίωση για την μέρα Για Χ=0 Σχήμα 3.2.3.6: Αποτελέσματα προσομοίωσης. Για Χ=1 Σχήμα 3.2.3.7: Αποτελέσματα προσομοίωσης. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 133

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στην προσομοίωση που απεικονίστηκε παραπάνω διαπιστώνουμε ότι στο Σχήμα 3.2.3.6 φαίνεται η λειτουργία των φαναριών κατά την διάρκεια της ημέρας. Βλέπουμε δηλαδή ότι τα φανάρια λειτουργούν κανονικά ενώ όταν το Χ1 (τροχονόμος) πάρει την τιμή 1, τότε όλα τα φανάρια γίνονται πορτοκαλί. Στο Σχήμα 3.2.3.7 φαίνεται η λειτουργία των φαναριών κατά την διάρκεια της νύχτας. Βλέπουμε δηλαδή ότι τα φανάρια λειτουργούν κανονικά ενώ όταν το Χ1 (αισθητήρας) πάρει την τιμή 1, τότε πηγαίνει στην επόμενη κατάσταση. Ακολουθεί η απεικόνιση του Edit Sympol (Σχήμα 3.2.3.8). Αποτελεί έναν τρόπο αναπαράστασης της λειτουργικής σχεδίασης των εισόδων και εξόδων, όπως απεικονίζεται παρακάτω: Σχήμα 3.2.3.8: Απεικόνιση της λειτουργικής σχεδίασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 134

Πτυχιακή Εργασία Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. Για τη σχεδίαση και αποθήκευση, μέσω του μεταγλωττιστή (compiler), ενός project χρησιμοποιείται η βιβλιοθήκη (library). Μια βιβλιοθήκη work, δημιουργείται αυτόματα από τον compiler αλλά δεν περιλαμβάνει όλες τις πληροφορίες που είναι απαραίτητες για ένα συγκεκριμένο project. Η γλώσσα VHDL μετατράπηκε σε βιομηχανικό πρότυπο της IEEE 1164 Standard. Έτσι δημιουργήθηκαν παράλληλα και κάποιες άλλες μορφές σήματος, που όταν πρόκειται να χρησιμοποιηθούν θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. Επιπλέον οι γραμμές αυτές χρησιμοποιούνται για να επιτρέψουν τη χρήση μορφής σήματος STANDARD LOG- IC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Όταν χρησιμοποιούμε μακροσυναρτήσεις πρέπει πάντα να προσθέτονται στο πρόγραμμα οι επόμενες δύο γραμμές, ώστε να έχουμε πρόσβαση στις βιβλιοθήκες της ALTERA, που εμπεριέχουν τη βιβλιοθήκη των μακροσυναρτήσεων (macrofunctions) στη διεύθυνση c:\maxplus2\max2lib\mf. Μια μακροσυνάρτηση είναι ένα πρόγραμμα σε γλώσσα VHDL που μιμείται τη λειτουργία ενός κλασικού ολοκληρωμένου κυκλώματος τεχνολογίας TTL, μεσαίας βαθμίδας ολοκλήρωσης με όλες τις εισόδους και εξόδους του. Η χρήση αυτών των μακροσυναρτήσεων γίνεται είτε επιλέγοντας το σύμβολό της από τη λίστα της βιβλιοθήκης, όταν η εισαγωγή προγράμματος γίνεται διαμέσου σχηματικού διαγράμματος, είτε επιλέγοντας την αντίστοιχη συνιστώσα (COMPONENT) ως α_(κωδικός συνιστώσας), όταν η εισαγωγή γίνεται δια μέσου κώδικα VHDL. Τα σήματα εισόδου-εξόδου της συνιστώσας παίρνονται επιλέγοντας «Help», «Old-Style Macrofunctions» και τη συνιστώσα που πρόκειται να εισαχθεί στο πρόγραμμα. LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; Το ENTITY ορίζεται ως το όνομα της αυτοτελούς μονάδος καθώς και οι είσοδοι και έξοδοι της (Με τη δεσμευμένη λέξη port). Τα CLK, Χ, Χ1, CLRN αποτελούν τα σήματα εισόδου, ενώ τα Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, Z9, Z10, Z11, Z12 αποτελούν τα σήματα εξόδου. Με τα λεκτικά IN και OUT προσδιορίζουμε την κατεύθυνσή τους. Με τη μορφή σήματος STD_LOGIC μπορούν να οριστούν σήματα και άλλων επιπλέον λογικών καταστάσεων όπως, για παράδειγμα, υψηλής σύνθετης αντίστασης (High Z) Z, αδιάφορης κατάστασης -, και άλλων λιγότερο συνήθων μορφών. ENTITY daynightlights1 IS PORT (CLK, X, X1, CLRN :IN STD_LOGIC; Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, Z9, Z10, Z11, Z12 :OUT STD_LOGIC); END daynightlights1; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 135

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Για να οριστεί η εσωτερική δομή της μονάδας χρησιμοποιούμε την δήλωση ARCHITECTURE. Τα σήματα (εισόδου - εξόδου) πηγάζουν από τη δήλωση EN- TITY που έχει προηγηθεί. Η ARCHITECTURE μπορεί να περιλαμβάνει, επίσης, τα σήματα και τις δηλώσεις που είναι τοπικά (local). Η λέξη κλειδί SIGNAL δηλώνει δεδομένα σημάτων που κινούνται στα καλώδια του κυκλώματος. Οι δηλώσεις σημάτων μπορούν να γίνουν είτε μέσα στη δήλωση οντότητας, είτε στην περιοχή δηλώσεων της αρχιτεκτονικής, είτε στο τμήμα δηλώσεων ενός πακέτου. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση τα ονόματα των σημάτων που δηλώνονται είναι CLR, CK, DA, DB, DC, QA, QB, QC, HIGH. ARCHITECTURE circuit OF daynightlights1 IS SIGNAL CLR, CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; Στην συνέχεια ξεκινάει η υλοποίηση του κυρίως προγράμματος και γίνεται αρχικοποίηση των σημάτων HIGH, CK, CLR με τον τελεστή ανάθεσης σήματος (<=). BEGIN HIGH<='1'; CK<=CLK; CLR<=CLRN; Οι εξισώσεις που προέκυψαν από τους πίνακες Karnaugh υλοποιούν παρακάτω τις εισόδους των Flip Flop DA, DB, DC. DA<=(NOT X AND X1); DB<=(NOT X AND NOT X1 AND NOT QB AND QC) OR (NOT X AND NOT X1 AND QB AND NOT QC) OR (X AND NOT QB AND QC) OR (X AND QB AND NOT QC); DC<=(NOT X AND NOT X1 AND NOT QA AND NOT QC) OR (X AND NOT QA AND NOT QC); Με λέξη κλειδί PORT MAP, η οποία ακολουθείται από μια λίστα που δείχνει τα σήματα που συνδέονται στις γραμμές της συνιστώσας, γίνεται η σύνδεση του στιγμιότυπου με τα υπόλοιπα κυκλώματα Όταν τα σήματα αναφέρονται με την ίδια σειρά που αναφέρονται και οι ακίδες της συνιστώσας, τότε γίνεται λόγος για συσχέτιση θέσης. Όταν τα σήματα δεν αναφέρονται με την ίδια σειρά, που αναφέρονται και οι ακίδες της συνιστώσας και η αντιστοίχηση γίνεται σήμα προς ακίδα με το όνομά τους (ακίδα συνιστώσας=>σήμα κυκλώματος), τότε γίνεται λόγος για συσχέτιση ονόματος. Αυτή η μορφή προγραμματισμού κατά την οποία χρησιμοποιούνται υποκυκλώματα, που διασυνδέονται μεταξύ τους προκειμένου να δημιουργηθεί ένα νέο κύκλωμα, ονομάζεται δομημένο ύφος προγραμματισμού (structural style of programming). Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 136

Πτυχιακή Εργασία FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH,Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Με βάση πάλι τις εξισώσεις από τους πίνακες Karnaugh υλοποιούνται οι έξοδοι του συστήματος και έχουμε και το τέλος του προγράμματος. Z1<= (NOT QA AND NOT QB AND NOT QC) ; Z2<= (QA OR (NOT QB AND QC)); Z3<= (QB); Z4<= (NOT QA AND NOT QB AND NOT QC) ; Z5<= (QA OR (NOT QB AND QC)); Z6<= (QB); Z7<= (QB AND NOT QC); Z8<= (QA OR (QB AND QC)); Z9<= (NOT QA AND NOT QB); Z10<= (QB AND NOT QC); Z11<= (QA OR (QB AND QC)); Z12<= (NOT QA AND NOT QB); END circuit; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 137

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Όταν πρόκειται να χρησιμοποιηθεί η μορφή σήματος STANDARD LOGIC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA, θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Τα CLK, RESET, Χ, Χ1 αποτελούν τα σήματα εισόδου, ενώ το Ζ αποτελεί ένα σήμα εξόδου. Το σήμα εξόδου δηλώνεται με την μορφή STD_LOGIC_VECTOR (12 DOWNTO 1),που αποτελεί μια σειρά δώδεκα μεμονωμένων δυαδικών ψηφίων, καθένα από τα οποία αποτελεί ένα ανεξάρτητο σήμα, με το ψηφίο d 12 ως περισσότερο σημαντικό ψηφίο και το ψηφίο d 1 ως λιγότερο σημαντικό ψηφίο. Η σειρά αυτή δεν αποτελεί δυαδικό αριθμό οκτώ ψηφίων. Κάθε επιμέρους ψηφίο μπορεί να οριστεί ως [ονομασία σήματος(αριθμός ψηφίου)]. ENTITY daynightlights IS PORT (CLK, RESET, X, X1 : IN STD_LOGIC; Z : OUT STD_LOGIC_VECTOR(12 DOWNTO 1); END ENTITY daynightlights; Η εσωτερική δομή της μονάδας γίνεται με τη δήλωση ARCHITECTURE. Η λέξη κλειδί TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα και ακολουθείται από το αντικείμενο δεδομένων STATE_TYPE. Αυτή η μορφή δήλωσης σήματος ονομάζεται enumerated τύπος και επιτρέπει στον χρήστη να αποφασίσει για όλες τις δυνατές τιμές που μπορούν να πάρουν τα δεδομένα. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση από την επόμενη κατάσταση NEXTSTATE και παίρνει τις τιμές που έχουν δηλωθεί στο STATE_TYPE (K0, K1, K2, K3, K4). ARCHITECTURE circuit OF daynightlights IS TYPE STATE_TYPE IS (K0, K1, K2, K3, K4); SIGNAL NEXTSTATE : STATE_TYPE; Η εντολή τύπου PROCESS, αποτελεί μια σύγχρονη εντολή. Οι μοναδικές ακολουθιακές (sequential) εντολές που εκτελούνται σειριακά από το μεταφραστή είναι αυτές που βρίσκονται φωλιασμένες μέσα σε μια εντολή.το τελικό της αποτέλεσμα εκτελείται παράλληλα με τις άλλες σύγχρονες εντολές από το μεταφραστή. Επίσης, η χρήση της λέξης PROCESS έγινε για να επιτρέψει την χρήση των εντολών IF και ELSE, προκειμένου να δημιουργηθεί η προτεραιότητα με την οποία επηρεάζουν την λειτουργία του κυκλώματος οι είσοδοί του. BEGIN PROCESS (CLK,RESET) IS BEGIN Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 138

Πτυχιακή Εργασία IF (RESET = '0') THEN NEXTSTATE<= K0; ELSIF(CLK='1' AND CLK 'EVENT)THEN Ακολουθεί ο τρόπος που γίνεται η προτεραιότητα των εισόδων. Για να επιτευχθεί η προτεραιότητα χρησιμοποιείται η δήλωση αφιέρωσης σήματος υπό συνθήκη δια μέσου των εντολών WHEN και ELSE. Αν η συνθήκη μετά την εντολή WHEN δεν είναι αληθινή, η εντολή ELSE παραπέμπει στην επόμενη πρόταση κ.ο.κ. μέχρι που να βρεθεί αληθινή συνθήκη. Η ακολουθιακή μορφή που έχει η διαδικασία δήλωσης αφιέρωσης σήματος υπό συνθήκη επιτρέπει με βάση την σειρά αναγραφής και άρα εκτέλεσης των δηλώσεων. Η διαδικασία είναι ίδια για όλες τις υπορουτίνες, που ακολουθούνται για τον έλεγχο των εισόδων (Χ και Χ1) που βρίσκονται μέσα στην CASE. Παρακάτω θα παρουσιαστεί μόνο η διαδικασία της κατάστασης K0. CASE NEXTSTATE IS WHEN K0 => IF (X ='0') AND (X1 ='0') THEN NEXTSTATE<= K1 ; ELSIF (X ='0') AND (X1 ='1') THEN NEXTSTATE<=K4 ; ELSIF (X ='1') AND (X1 ='0') THEN NEXTSTATE<=K1 ; ELSIF (X ='1') AND (X1 ='1') THEN NEXTSTATE<=K1 ; END CASE; Με βάση τον πίνακα αληθείας συντάσσεται η διαδικασία ελέγχου των εξόδων. Και τέλος, κλείνει πρώτα η διαδικασία PROCESS και μετά όλο το πρόγραμμα. CASE NEXTSTATE IS WHEN K0 =>Z<="100100001001"; WHEN K1 =>Z<="100100010010"; WHEN K2 =>Z<="001001100100"; WHEN K3 =>Z<="010010100100"; WHEN K4 =>Z<="010010010010"; END CASE; END PROCESS; END circuit; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 139

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 3 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας --Διαφοροποίηση. Εκτός από τις βιβλιοθήκες που χρησιμοποιούμε παραπάνω και έχουν σχολιαστεί χρησιμοποιούμε και άλλες δύο. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Οι γραμμές που θα ακολουθήσουν αποτελούν δύο βιβλιοθήκες από τις οποίες η πρώτη αναφέρεται στις λογικές αριθμητικές πράξεις, που υπάρχουν στο πρόγραμμα. Ενώ η δεύτερη χρησιμοποιείται ώστε να μπορέσει να γίνει η χρήση το λέκτικό INTEGER, που αποτελεί τον τρόπο για να δηλωθεί ο μετρητής COUNT ως ακέραιος αριθμός. USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; Τα CLK, RESET, X, X1 αποτελούν σήματα εισόδου, ενώ τα NGREEN, NRED, NYELLOW, SGREEN, SYELLOW, SRED, EGREEN, EYELLOW, ERED, WGREEN, WYELLOW, WRED αποτελούν σήματα εξόδου. ENTITY daynightlights2 IS PORT (CLK, RESET, X, X1 : IN STD_LOGIC; NGREEN, NRED, NYELLOW, SGREEN, SYELLOW, SRED, EGREEN, EYELLOW, ERED, WGREEN, WYELLOW, WRED : OUT STD_LOGIC); END ENTITY daynightlights2; Η δήλωση ARCHITECTURE χρησιμοποιείται για να οριστεί η εσωτερική δομή της μονάδας. Τα σήματα (εισόδου - εξόδου) πηγάζουν από τη δήλωση ENTITY που έχει προηγηθεί. Οι δηλώσεις σημάτων μπορούν να γίνουν είτε μέσα στη δήλωση οντότητας, είτε στην περιοχή δηλώσεων της αρχιτεκτονικής, είτε στο τμήμα δηλώσεων ενός πακέτου. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Η λέξη κλειδί TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα και ακολουθείται από το αντικείμενο δεδομένων STATE_TYPE. Στην προκειμένη περίπτωση από την επόμενη κατάσταση NEXTSTATE και παίρνει τις τιμές που έχουν δηλωθεί στο STATE_TYPE. Επίσης, δηλώνουμε ένα σήμα COUNT, όπου αποτελεί ένα μετρητή που θα μετράει από το 0 μέχρι το 10, ανάλογα με το πόσο θέλουμε να μετρήσουμε. ARCHITECTURE behavioral OF daynightlights2 IS TYPE STATE_TYPE IS (K0, K1, K2, K3, K4); SIGNAL NEXTSTATE : STATE_TYPE; SIGNAL COUNT : INTEGER RANGE 0 TO 10; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 140

Πτυχιακή Εργασία Η εντολή τύπου PROCESS, αποτελεί μια σύγχρονη εντολή Οι μοναδικές ακολουθιακές (sequential) εντολές που εκτελούνται σειριακά από το μεταφραστή είναι αυτές που βρίσκονται φωλιασμένες μέσα σε μια εντολή. Το τελικό της αποτέλεσμα εκτελείται παράλληλα με τις άλλες σύγχρονες εντολές από το μεταφραστή. Επίσης, η χρήση της λέξης PROCESS έγινε για να επιτρέψει την χρήση των εντολών IF και ELSE, προκειμένου να δημιουργηθεί η προτεραιότητα με την οποία επηρεάζουν την λειτουργία του κυκλώματος οι είσοδοί του. BEGIN PROCESS (CLK,RESET) IS BEGIN IF (RESET = '0') THEN NEXTSTATE<= K0; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; COUNT<=0; ELSIF(CLK='1' AND CLK 'EVENT)THEN Ακολουθούν οι περιπτώσεις STATE_TYPE K0, K1,K2, K3, K4. Θα επεξηγηθεί μόνο η περίπτωση Κ0, όλες οι άλλες περιπτώσεις θα είναι ίδιες, το μόνο που θα αλλάζει θα είναι οι έξοδοι. Στην αρχή γίνεται ο έλεγχος του Χ, δηλαδή αν είναι μέρα ή νύχτα και μετά ο έλεγχος Χ1, δηλαδή αν θα πατήσει ο τροχονόμος το διακόπτη ή θα πατηθεί ο αισθητήρας. Στην συνέχεια γίνεται έλεγχος αν ο μετρητής είναι 5, αν είναι θα πηγαίνει στην επόμενη κατάσταση αλλιώς θα αυξάνεται ο μετρητής κατά 1 και θα παίρνει τις αντίστοιχες καταστάσεις. Γενικά, γίνεται έλεγχος όλων των πιθανών καταστάσεων των δύο διακοπτών Όταν τελείωνει ο έλεγχος τότε παίρνει τις αντίστοιχες εξόδους. CASE NEXTSTATE IS WHEN K0 => IF (X='0') AND (X1='0') THEN IF(COUNT=5) THEN COUNT<=0; NEXTSTATE<= K1 ; ELSE COUNT<=COUNT+1; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 141

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; ELSIF (X='0') AND (X1='1') THEN NRED<='0'; NYELLOW<='1'; NGREEN<='0'; SRED<='0'; SYELLOW<='1'; SGREEN<='0'; ERED<='0'; EYELLOW<='1'; EGREEN<='0'; WRED<='0'; WYELLOW<='1'; WGREEN<='0'; COUNT<=0; NEXTSTATE<= K4 ; ELSIF (X='1') AND (X1='0') THEN IF(COUNT=5) THEN COUNT<=0; NEXTSTATE<= K1 ; ELSE COUNT<=COUNT+1; NRED<='1'; NYELLOW<='0'; NGREEN<='0'; SRED<='1'; SYELLOW<='0'; SGREEN<='0'; ERED<='0'; EYELLOW<='0'; EGREEN<='1'; WRED<='0'; WYELLOW<='0'; WGREEN<='1'; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 142

Πτυχιακή Εργασία Εφαρμογή 3: Κύκλωμα Αυτόματου Πωλητή Αναψυκτικού 1 η Περίπτωση: 20λεπτα 10λεπτά 1 ποτό. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ενεργοποιεί έναν αυτόματο πωλητή αναψυκτικού (vending machine). Το κάθε αναψυκτικό κοστίζει 40λεπτά. Οι είσοδοι του συστήματος είναι κέρματα των 20 και 10λεπτών, που θα εισάγονται με αντίστοιχους συνδυασμούς για την ενεργοποίηση του μηχανήματος και την εξαγωγή του αναψυκτικού. Κατά τη λειτουργία του μηχανήματος ενεργοποιούνται τέσσερις έξοδοι Z 0 (ready), Z 1 (dispense), Z 2 (ret), Z 3 (coin). Οι έξοδοι θα παίρνουν κατάσταση 1 στις εξής περιπτώσεις: Η Z 0 όταν είναι έτοιμο το μηχάνημα για την εισαγωγή των κερμάτων. Η Z 1 όταν έχουν τοποθετηθεί σωστά τα κέρματα στο μηχάνημα (να είναι δηλαδή συνολικά 40λεπτά) και θα γίνει η εξαγωγή του αναψυκτικού. Η Z 2 όταν θα γίνει λάθος εισαγωγή (να ξεπερνάνε τα 40λεπτά), τότε θα επιστρέφει όλα τα κέρματα. Η Z 3 όταν θα περιμένει να εισαχθεί κι άλλο κέρμα για τη συνέχιση της λειτουργίας του μηχανήματος. Διαδικασία Σχεδίασης: Στο Σχήμα 3.3.1.1, που θα ακολουθήσει παρουσιάζεται μια εικονική παρουσίαση των εισόδων και των εξόδων του αυτόματου πωλητή αναψυκτικού που προκύπτουν από τις προδιαγραφές και τις απαιτήσεις του συστήματος, για να γίνει κατανοητή η λειτουργία του μηχανήματος. Ζ 3 Είσοδος Χρημάτων X1-20λεπτά X 2-10λεπτά Ζ 0 Ζ 2 Έτοιμο Για Την Είσοδο Χρημάτων Επιστροφή Χρημάτων Ζ 1 Έξοδος Ποτού Σχήμα. 3.3.1.1: Εικονική παρουσίαση. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 143

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Με βάση το παραπάνω σχέδιο για τις εισόδους και τις εξόδους του συστήματος δημιουργείται το διάγραμμα καταστάσεων, όπως παρουσιάζεται στο Σχήμα 3.3.1.2 και φαίνονται όλες οι πιθανές καταστάσεις που μπορούν να υπάρξουν. 00 00 A 00 B I 01 10 10 01 10 00 01 01 C D F 00 10 00 Σχήμα 3.3.1.2: Διάγραμμα καταστάσεων. Για διευκόλυνση στη σύνταξη των πινάκων της άσκησης θα αντικαταστήσουμε τις ονομασίες των εξόδων με μεταβλητές. Επομένως θα έχουμε: Z 0 = Ready Z 1 = Dispense Z 2 = Ret Z 3 = Coin Με βάση το διάγραμμα και λαμβάνοντας υπόψη τα Z 0, Z 1, Z 2, Z 3 συντάσσεται ο πίνακας καταστάσεων 3.3.1.1(μοντέλου moore): Πίνακας 3.3.1.1 Πίνακας καταστάσεων (Μοντέλο moore) Παρούσα Κατάσταση Είσοδος Έξοδοι Q X 1 X 2 = 00 X 1 X 2 = 01 X 1 X 2 = 10 X 1 X 2 = 11 Z 0 Z 1 Z 2 Z 3 A A C D X X X 1 0 0 0 B A X X X X X X X X X 0 1 0 0 C C D F X X X 0 0 0 1 D D F B X X X 0 0 0 1 F F B I X X X 0 0 0 1 I A X X X X X X X X X 0 0 1 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 144

Πτυχιακή Εργασία Για να παρασταθούν οι καταστάσεις A, B, C, D, F, I απαιτούνται τρεις μεταβλητές Q A Q B Q C. Άρα, απαιτούνται και τρία flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D Α, D Β, και D C. Ο τρόπος με τον οποίο εκχωρούνται δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους του κυκλώματος. Στη συνέχεια θα δείξουμε πως θα εκχωρήσουμε τις μεταβλητές Q A Q B Q C στις καταστάσεις A, B, C, D, F, I : A: Q A 0 B: Q A 0 C: Q A 0 D: Q A 0 Q B 0 Q B 0 Q B 1 Q B 1 Q C 0 Q C 1 Q C 0 Q C 1 F: Q A 1 I: Q A 1 Q B 0 Q B 0 Q C 0 Q C 1 Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές Q A Q B Q C, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.3.1.2: Πίνακας 3.3.1.2 Πίνακας Μεταβάσεων του αναγνωριστή Παρούσα Κατάσταση Είσοδοι X 1 X 2 Έξοδοι Q A Q B Q C X 1 X 2 = 00 X 1 X 2 = 01 X 1 X 2 = 10 X 1 X 2 = 11 Z 0 Z 1 Z 2 Z 3 0 0 0 0 0 0 0 1 0 0 1 1 X X X 1 0 0 0 0 0 1 0 0 0 X X X X X X X X X 0 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 X X X 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 X X X 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 X X X 0 0 0 1 1 0 1 0 0 0 X X X X X X X X X 0 0 1 0 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 145

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Ο παραπάνω πίνακας καταστάσεων μπορεί να πάρει τη μορφή του πίνακα μεταβάσεων 3.3.1.3: Πίνακας 3.3.1.3 Πίνακας μεταβάσεων Παρούσα κατάσταση Πρωτεύουσα είσοδος Επόμενη κατάσταση Πρωτεύουσες έξοδοι Q A Q B Q C X 1 X 2 Q + A Q + + B Q C Z 0 Z 1 Z 2 Z 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 X X X 0 0 X X X X X X X X X X 0 0 X X X X X X X 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 X X X 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 X X X 0 0 1 0 X X X 0 1 X X X X X X X X X X 0 1 X X X X X X X 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 X X X 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 X X X 0 0 1 0 X X X 1 0 X X X X X X X X X X 1 0 X X X X X X X 0 0 0 1 1 X X X 1 0 0 0 0 0 1 1 1 X X X 0 1 0 0 0 1 0 1 1 X X X 0 0 0 1 0 1 1 1 1 X X X 0 0 0 1 1 0 0 1 1 X X X 0 0 0 1 1 0 1 1 1 X X X 0 0 1 0 X X X 1 1 X X X X X X X X X X 1 1 X X X X X X X Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 146

Πτυχιακή Εργασία Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip-flop για κάθε συνδυασμό παρούσας κατάστασης-εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip-flop. Έτσι οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip-flop, όπως φαίνονται στον πίνακα διεγέρσεων 3.3.1.4: Πίνακας 3.3.1.4 Πίνακας διεγέρσεων Παρούσα κατάσταση Πρωτεύουσα είσοδος Επόμενη κατάσταση Δευτερεύουσες έξοδοι Πρωτεύουσες έξοδοι Q A Q B Q C X 1 X 2 Q + A Q + + B Q C D A D B D C Z 0 Z 1 Z 2 Z 3 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 X X X 0 0 X X X X X X X X X X X X X 0 0 X X X X X X X X X X 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 X X X X X X 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 X X X X X X 0 0 1 0 X X X 0 1 X X X X X X X X X X X X X 0 1 X X X X X X X X X X 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 X X X X X X 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 1 0 X X X X X X 0 0 1 0 X X X 1 0 X X X X X X X X X X X X X 1 0 X X X X X X X X X X 0 0 0 1 1 X X X X X X 1 0 0 0 0 0 1 1 1 X X X X X X 0 1 0 0 0 1 0 1 1 X X X X X X 0 0 0 1 0 1 1 1 1 X X X X X X 0 0 0 1 1 0 0 1 1 X X X X X X 0 0 0 1 1 0 1 1 1 X X X X X X 0 0 1 0 X X X 1 1 X X X X X X X X X X X X X 1 1 X X X X X X X X X X Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 147

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στο επόμενο βήμα σχεδιάζονται οι πίνακες Karnaugh για τις πρωτεύουσες και δευτερεύουσες εξόδους, οι οποίοι συμπληρώνονται με βάση τον πίνακα διεγέρσεων 3.3.1.4. και παίρνονται οι ελάχιστες συναρτήσεις. Q A =0 Q A =1 Q B Q C Q B Q C X 1 X 2 00 01 11 10 X 1 X 2 00 01 11 10 00 0 0 0 0 00 1 0 X X 01 0 X 1 0 01 0 X X X 11 X X X X 11 X X X X 10 0 X 0 1 10 1 X X X D A = Q A Q C X 2 + Q A Q B Q C X 1 + Q A Q C X 2 Q A =0 Q B Q C X 1 X 2 00 01 11 10 Q A =1 Q B Q C X 1 X 2 00 01 11 10 00 0 0 1 1 00 0 0 X X 01 1 X 0 1 01 0 X X X 11 X X X X 11 X X X X 10 1 X 0 0 10 0 X X X D B = Q A Q B X 1 X 2 + Q A Q C X 2 + Q A Q B X 1 Q A =0 Q A =1 Q B Q C Q B Q C X 1 X 2 00 01 11 10 X 1 X 2 00 01 11 10 00 0 0 1 0 00 0 0 X X 01 0 X 0 1 01 1 X X X 11 X X X X 11 X X X X 10 1 X 1 0 10 1 X X X D C = Q A Q B Q C X 2 + Q A Q B X 1 + Q A Q B Q C X 2 + Q A X 2 + Q A X 1 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 148

Πτυχιακή Εργασία Q A =0 Q A =1 Q B Q C Q B Q C X 1 X 2 00 01 11 10 X 1 X 2 00 01 11 10 00 1 0 0 0 00 0 0 X X 01 1 0 0 0 01 0 0 X X 11 1 0 0 0 11 0 0 X X 10 1 0 0 0 10 0 0 X X Z 0 = Q A Q B Q C Q A =0 Q A =1 Q B Q C Q B Q C X 1 X 2 00 01 11 10 X 1 X 2 00 01 11 10 00 0 1 0 0 00 0 0 X X 01 0 1 0 0 01 0 0 X X 11 0 1 0 0 11 0 0 X X 10 0 1 0 0 10 0 0 X X Z 1 = Q A Q C Q B Q A =0 Q A =1 Q B Q C Q B Q C X 1 X 2 00 01 11 10 X 1 X 2 00 01 11 10 00 0 0 0 0 00 0 1 X X 01 0 0 0 0 01 0 1 X X 11 0 0 0 0 11 0 1 X X 10 0 0 0 0 10 0 1 X X Z 2 = Q A Q C Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 149

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Q A =0 Q A =1 Q B Q C Q B Q C X 1 X 2 00 01 11 10 X 1 X 2 00 01 11 10 00 0 0 1 1 00 1 0 X X 01 0 0 1 1 01 1 0 X X 11 0 0 1 1 11 1 0 X X 10 0 0 1 1 10 1 0 X X Z 3 = Q A Q C Q B + Q A Από τις ελάχιστες συναρτήσεις απεικονίζεται το παρακάτω ακολουθιακό κύκλωμα (Σχήμα 3.3.1.3.). Σχήμα 3.3.1.3: Ακολουθιακό κύκλωμα. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 150

Πτυχιακή Εργασία Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Η άσκηση θα υλοποιηθεί με δύο τρόπους. Ο πρώτος τρόπος υλοποιείται με τη βοήθεια των ελάχιστων συναρτήσεων που έχουν εξαχθεί από τους πίνακες Karnaugh, που δημιουργήθηκαν παραπάνω. Ενώ ο δεύτερος τρόπος υλοποιείται με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY vending20101 IS PORT (CLK, TWENTY, TEN, CLR COIN, RET, DESPENSE, READY END vending20101; :IN STD_LOGIC; :OUT STD_LOGIC); ARCHITECTURE circuit OF vending20101 IS SIGNAL CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; DA<=(NOT QA AND QC AND TEN) OR (NOT QA AND QB AND NOT QC AND TWENTY) OR (QA AND NOT QC AND NOT TEN); DB<=(NOT QA AND QB AND NOT TWENTY AND NOT TEN) OR (NOT QA AND NOT QC AND TEN) OR (NOT QA AND NOT QB AND TWENTY); DC<=(NOT QA AND QB AND QC AND NOT TEN) OR (NOT QA AND NOT QB AND TWENTY) OR (NOT QA AND QB AND NOT QC AND TEN) OR (QA AND TEN) OR (QA AND TWENTY); FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 151

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); READY<= DESPENSE<= RET<= COIN<= (NOT QA AND NOT QB AND NOT QC); (NOT QA AND NOT QB AND QC); (QA AND QC); (NOT QA AND QB) OR (QA AND NOT QC); END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.3.1.4. Σχήμα 3.3.1.4: Αποτελέσματα προσομοίωσης. Η προσομοίωση που δημιουργήθηκε από το Waveform Editor του MAXPLUS II είναι ένας τρόπος για να παρουσιαστούν μερικές εισαγωγές κερμάτων στον αυτόματο πωλητή αναψυκτικού. Ακόμα αποτελεί έναν τρόπο για να διαπιστώσουμε εάν ο κώδικας που έχει υλοποιηθεί, θα δώσει τις σωστές αλλά και τις αντίστοιχες τιμές σύμφωνα με τις απαιτήσεις και τις προδιαγραφές του συστήματος. Εκτός από την εικονική παρουσίαση που απεικονίστηκε παραπάνω (Σχήμα. 3.3.1.1.) έχουμε και την απεικόνιση του Edit Sympol (Σχήμα.3.3.1.5). Είναι ένας τρόπος αναπαράστασης της λειτουργικής σχεδίασης των εισόδων και εξόδων, όπως φαίνεται παρακάτω: Σχήμα.3.3.1.5: Απεικόνιση λειτουργικής σχεδίασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 152

Πτυχιακή Εργασία 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY vending20101 IS PORT (CLOCK, RESET, TWENTY, TEN :IN STD_LOGIC; READY, DISPENSE, RET, COIN :OUT STD_LOGIC); END ENTITY vending20101; ARCHITECTURE asm OF vending20101 IS TYPE STATE_TYPE IS (A, B, C, D, F, I); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; BEGIN SEQ: PROCESS (CLOCK, RESET) IS BEGIN IF (RESET = '1') THEN PRESENT_STATE <= A; ELSIF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <= NEXT_STATE; END PROCESS SEQ; COM: PROCESS (TWENTY, TEN, PRESENT_STATE) IS BEGIN READY <= '0'; DISPENSE <= '0'; RET <= '0'; COIN <= '0'; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (TWENTY = '1') THEN NEXT_STATE <= D; ELSIF (TEN = '1') THEN NEXT_STATE <= C; ELSE NEXT_STATE <= A; WHEN B => DISPENSE <= '1'; NEXT_STATE <= A; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 153

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής WHEN C => COIN <= '1'; IF (TWENTY = '1') THEN NEXT_STATE <= F; ELSIF (TEN = '1') THEN NEXT_STATE <= D; ELSE NEXT_STATE <= C; WHEN D => COIN <= '1'; IF (TWENTY = '1') THEN NEXT_STATE <= B; ELSIF (TEN = '1') THEN NEXT_STATE <= F; ELSE NEXT_STATE <= D; WHEN F => COIN <= '1'; IF (TWENTY = '1') THEN NEXT_STATE <= I; ELSIF (TEN = '1') THEN NEXT_STATE <= B; ELSE NEXT_STATE <= F; WHEN I => RET <= '1'; NEXT_STATE <= A; END CASE; END PROCESS COM; END ARCHITECTURE asm; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο Σχήμα.3.3.1.6. Σχήμα.3.3.1.6: Αποτελέσματα προσομοίωσης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 154

Πτυχιακή Εργασία Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. Όπως αναφέρθηκε και σε προηγούμενη ενότητα, η γλώσσα VHDL έγινε βιομηχανικό πρότυπο της IEEE 1164 Standard, με αποτέλεσμα να δημιουργηθούν παράλληλα και κάποιες άλλες μορφές σήματος. Μια από τις μορφές σήματος είναι STANDARD LOGIC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA. Όταν πρόκειται να χρησιμοποιηθεί αυτή η μορφή σήματος, θα πρέπει πάντα να εισάγονται στην αρχή του προγράμματος οι επόμενες δύο γραμμές. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Οι δύο γραμμές που θα ακολουθήσουν πρόκειται να χρησιμοποιηθούν για να επιτρέψουν την πρόσβασή στις βιβλιοθήκες της ALTERA, που εμπεριέχουν τη βιβλιοθήκη των μακροσυναρτήσεων (macrofunctions). LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; Το ENTITY ορίζεται ως το όνομα της αυτοτελούς μονάδος καθώς και οι είσοδοι και έξοδοι της, με τη δεσμευμένη λέξη PORT. Τα CLK, TWENTY, TEN, CLR αποτελούν τα σήματα εισόδου, ενώ τα COIN, RET, DESPENSE, READY αποτελούν τα σήματα εξόδου. Η κατεύθυνσή τους προσδιορίζεται με τη χρήση των λεκτικών IN και OUT. Με τη μορφή σήματος STD_LOGIC μπορούν να οριστούν σήματα και άλλων επιπλέον λογικών καταστάσεων. ENTITY vending20101 IS PORT (CLK, TWENTY, TEN, CLR COIN, RET, DESPENSE, READY END vending20101; :IN STD_LOGIC; :OUT STD_LOGIC); Με τη δήλωση ARCHITECTURE ορίζεται η εσωτερική δομή της μονάδας. Τα σήματα (εισόδου - εξόδου) πηγάζουν από τη δήλωση ENTITY που έχει προηγηθεί. Ακόμα, η ARCHITECTURE μπορεί να περιλαμβάνει, τα σήματα και τις δηλώσεις που είναι τοπικά κατ αναλογία με τις γνωστές γλώσσες υψηλού επιπέδου. Η λέξη κλειδί SIGNAL δηλώνει δεδομένα σημάτων που κινούνται στα καλώδια του κυκλώματος. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση τα ονόματα των σημάτων που δηλώνονται είναι CK, DA, DB, DC, QA, QB, QC, HIGH. ARCHITECTURE circuit OF vending20101 IS SIGNAL CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 155

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στην συνέχεια ξεκινάει η υλοποίηση του κυρίως προγράμματος, γίνεται αρχικοποίηση των σημάτων HIGH και CK με τον τελεστή ανάθεσης σήματος (<=). Επίσης, γίνεται υλοποίηση των εισόδων των Flip Flop DA, DB, DC μέσω των εξισώσεων που προέκυψαν από τους πίνακες Karnaugh. BEGIN HIGH<='1'; CK<=CLK; DA<=(NOT QA AND QC AND TEN) OR (NOT QA AND QB AND NOT QC AND TWENTY) OR (QA AND NOT QC AND NOT TEN); DB<=(NOT QA AND QB AND NOT TWENTY AND NOT TEN) OR (NOT QA AND NOT QC AND TEN) OR (NOT QA AND NOT QB AND TWENTY); DC<=(NOT QA AND QB AND QC AND NOT TEN) OR (NOT QA AND NOT QB AND TWENTY) OR (NOT QA AND QB AND NOT QC AND TEN) OR (QA AND TEN) OR (QA AND TWENTY); Η σύνδεση του στιγμιότυπου με τα υπόλοιπα κυκλώματα γίνεται με τη χρήση της λέξης κλειδί PORT MAP ακολουθούμενης από μια λίστα που δείχνει τα σήματα που συνδέονται στις γραμμές (ακίδες) της συνιστώσας. Υποδεικνύει, δηλαδή, ποια σήματα θα αντιστοιχηθούν στις εισόδους και τις εξόδους ενός D Flip-Flop. FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); Από τις εξισώσεις που έχουν υλοποιηθεί βάση των πινάκων Karnaugh προκύπτει ο παρακάτω τρόπος προγραμματισμού για τις εξόδους. READY<= DESPENSE<= RET<= COIN<= (NOT QA AND NOT QB AND NOT QC); (NOT QA AND NOT QB AND QC); (QA AND QC); (NOT QA AND QB) OR (QA AND NOT QC); END circuit; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 156

Πτυχιακή Εργασία 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Όταν πρόκειται να χρησιμοποιηθεί η μορφή σήματος STANDARD LOGIC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA, θα πρέπει να εισάγονται στην αρχή του προγράμματος οι δύο γραμμές που ακολουθούν: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Τα CLOCK, RESET, TWENTY, TEN αποτελούν τα σήματα εισόδου, που το διαπιστώνουμε από το :IN STD_LOGIC;. Ενώ το READY, DISPENSE, RET, COIN αποτελούν τα σήματα εξόδου, αφού αναφέρονται με :OUT STD_LOGIC;. ENTITY vending20101 IS PORT (CLOCK, RESET, TWENTY, TEN :IN STD_LOGIC; READY, DISPENSE, RET, COIN :OUT STD_LOGIC); END ENTITY vending20101; Η ARCHITECTURE αποτελεί την εσωτερική δομή της μονάδας. Ενώ η λέξη κλειδί TYPE, που ακολουθείται από το αντικείμενο δεδομένων STATE_TYPE. Το STATE_TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα. Στην προκειμένη περίπτωση έχουμε τις καταστάσεις A, B, C, D, F, I. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. ARCHITECTURE asm OF vending20101 IS TYPE STATE_TYPE IS (A, B, C, D, F, I); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; Μέσα στην εντολή PROCESS βρίσκονται φωλιασμένες ακολουθιακές εντολές, οι οποίες εκτελούνται σειριακά από το μεταφραστή. Η εντολή αυτή αποτελεί μια σύγχρονη εντολή καθώς το τελικό της αποτέλεσμα εκτελείται παράλληλα με τις άλλες σύγχρονες εντολές από το μεταφραστή. Ακόμα, η λέξη PROCESS χρησιμοποιείται για να επιτρέψει την χρήση των εντολών IF και ELSE, με αποτέλεσμα οι είσοδοι να επηρεάζουν την προτεραιότητα για τη λειτουργία του κυκλώματος. BEGIN SEQ: PROCESS (CLOCK, RESET) IS BEGIN IF (RESET = '1') THEN PRESENT_STATE <= A; ELSIF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <= NEXT_STATE; END PROCESS SEQ; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 157

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Ακολουθεί η αρχικοποίηση των εξόδων αλλά και ο τρόπος που γίνεται η προτεραιότητα των εισόδων. Για να επιτευχθεί η προτεραιότητα χρησιμοποιείται η δήλωση αφιέρωσης σήματος υπό συνθήκη δια μέσου των εντολών WHEN και ELSE. Αν η συνθήκη μετά την εντολή WHEN δεν είναι αληθινή, η εντολή ELSE παραπέμπει στην επόμενη πρόταση κ.ο.κ. μέχρι που να βρεθεί αληθινή συνθήκη. Στην προκειμένη περίπτωση αναφέρεται μόνο για την κατάσταση A, η ίδια διαδικασία ακολουθείται και για τις υπόλοιπές καταστάσεις. Και τέλος, κλείνουν όλες οι διαδικασίες. COM: PROCESS (TWENTY, TEN, PRESENT_STATE) IS BEGIN READY <= '0'; DISPENSE <= '0'; RET <= '0'; COIN <= '0'; END CASE; END PROCESS COM; END ARCHITECTURE asm; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (TWENTY = '1') THEN NEXT_STATE <= D; ELSIF (TEN = '1') THEN NEXT_STATE <= C; ELSE NEXT_STATE <= A; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 158

Πτυχιακή Εργασία 2 η Περίπτωση: 50λεπτα 20 λεπτά 10λεπτά 1 ποτό. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ενεργοποιεί έναν αυτόματο πωλητή αναψυκτικού (vending machine). Το κάθε αναψυκτικό κοστίζει 50λεπτά. Οι είσοδοι του συστήματος είναι κέρματα των 50, 20 και 10λεπτών, που θα εισάγονται με αντίστοιχους συνδυασμούς για την ενεργοποίηση του μηχανήματος και την εξαγωγή του αναψυκτικού. Κατά τη λειτουργία του μηχανήματος ενεργοποιούνται τεσσάρων έξοδοι Z 0 (ready), Z 1 (dispense), Z 2 (ret), Z 3 (coin). Διαδικασία Σχεδίασης: Στην εφαρμογή αυτή έχουμε μια προέκταση της προηγούμενης. Στη παρούσα άσκηση έχουμε έναν αυτόματο πωλητή αναψυκτικών, που το ποτό κοστίζει 50 λεπτά. Γι αυτό ο χρήστης έχει τη δυνατότητα να επιλέξει μεταξύ των 50, 20 και 10 λεπτών, όπου είναι οι είσοδοι του συστήματος. Στο Σχήμα 3.3.2.1 που θα ακολουθήσει παρουσιάζεται μια εικονική παρουσίαση των εισόδων και των εξόδων του αυτόματου πωλητή αναψυκτικού που προκύπτουν από τις προδιαγραφές και τις απαιτήσεις του συστήματος. Ζ 3 Είσοδος Χρημάτων X1- X50λεπτά 2-20λεπτά X 3-10λεπτά Ζ 0 Ζ 2 Έτοιμο Για Την Είσοδο Χρημάτων Επιστροφή Χρημάτων Ζ 1 Έξοδος Ποτού Σχήμα. 3.3.2.1: Εικονική παρουσίαση. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 159

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Με βάση το παραπάνω σχέδιο για τις εισόδους και τις εξόδους του συστήματος δημιουργείται το διάγραμμα καταστάσεων, όπως παρουσιάζεται στο σχήμα 3.3.2.2 και φαίνονται όλες οι πιθανές καταστάσεις που μπορούν να υπάρξουν. 000 A 000 G 000 010 100 000 B 010 C 000 001 001 001 010 001 100 001 F 000 100,010 E 100 D 000 010 100 Σχήμα. 3.3.2.2: Διάγραμμα καταστάσεων. Για διευκόλυνση στη σύνταξη των πινάκων της άσκησης θα αντικαταστήσουμε τις ονομασίες των εξόδων με μεταβλητές. Επομένως θα έχουμε: Z 0 = Ready Z 1 = Dispense Z 2 = Ret Z 3 = Coin Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 160

Πτυχιακή Εργασία Με βάση το διάγραμμα και λαμβάνοντας υπόψη τα Z 0, Z 1, Z 2, Z 3 συντάσσεται ο πίνακας καταστάσεων 3.3.2.1(μοντέλου moore): Πίνακας 3.3.2.1 Πίνακας καταστάσεων (μοντέλου moore) Παρούσα Κατάσταση Είσοδοι X 1 X 2 X 3 Έξοδοι X Q A Q B Q 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 C 000 001 010 011 100 101 110 111 Z 0 Z 1 Z 2 Z 3 A A D C XXX B XXX XXX XXX 1 0 0 0 B A XXX XXX XXX XXX XXX XXX XXX 0 1 0 0 C C G F XXX E XXX XXX XXX 0 0 0 1 D D C G XXX E XXX XXX XXX 0 0 0 1 E A XXX XXX XXX XXX XXX XXX XXX 0 0 1 0 F F B E XXX E XXX XXX XXX 0 0 0 1 G G F B XXX E XXX XXX XXX 0 0 0 1 H XXX XXX XXX XXX XXX XXX XXX XXX X X X X Για να παρασταθούν οι καταστάσεις A, B, C, D, E, F, G, H απαιτούνται τρεις μεταβλητές Q A Q B Q C. Άρα, απαιτούνται και τρία flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D2, D1, και D0. Ο τρόπος με τον οποίο εκχωρούνται δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους του κυκλώματος. Στη συνέχεια θα δείξουμε πως θα εκχωρήσουμε τις μεταβλητές Q A Q B Q C στις καταστάσεις A, B, C, D, E, F, G, H: A: Q A 0 B: Q A 0 C: Q A 0 D: Q A 0 Q B 0 Q B 0 Q B 1 Q B 1 Q C 0 Q C 1 Q C 0 Q C 1 E: Q A 1 F: Q A 1 G: Q A 1 H: Q A 1 Q B 0 Q B 0 Q B 1 Q B 1 Q C 0 Q C 1 Q C 0 Q C 1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 161

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές Q A Q B Q C, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.3.2.2: Πίνακας 3.3.2.2 Πίνακας καταστάσεων Παρούσα Κατάσταση Είσοδοι X 1 X 2 X 3 Έξοδοι X Q A Q B Q 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 X 1 X 2 X 3 C 000 001 010 011 100 101 110 111 Z 0 Z 1 Z 2 Z 3 0 0 0 0 0 0 0 1 1 0 1 0 XXX 0 0 1 XXX XXX XXX 1 0 0 0 0 0 1 0 0 0 XXX XXX XXX XXX XXX XXX XXX 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 XXX 1 0 0 XXX XXX XXX 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 XXX 1 0 0 XXX XXX XXX 0 0 0 1 1 0 0 0 0 0 XXX XXX XXX XXX XXX XXX XXX 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 XXX 1 0 0 XXX XXX XXX 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 XXX 1 0 0 XXX XXX XXX 0 0 0 1 1 1 1 XXX XXX XXX XXX XXX XXX XXX XXX X X X X Ο παραπάνω πίνακας καταστάσεων μπορεί να πάρει τη μορφή του πίνακα μεταβάσεων 3.3.2.3: Πίνακας 3.3.2.3 Πίνακας μεταβάσεων Δεκ. Πρωτεύουσα Παρούσα Επόμενη Πρωτεύουσες Είσοδος Κατάσταση Κατάσταση Έξοδοι X 1 X 2 X 3 Q A Q B Q C Q + Α Q + + Β Q C Z 0 Z 1 Z 2 3 Z 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 1 0 0 0 0 1 3 0 0 0 0 1 1 0 1 1 0 0 0 1 4 0 0 0 1 0 0 0 0 0 0 0 1 0 5 0 0 0 1 0 1 1 0 1 0 0 0 1 6 0 0 0 1 1 0 1 1 0 0 0 0 1 7 0 0 0 1 1 1 XXX X X X X 8 0 0 1 0 0 0 0 1 1 1 0 0 0 9 0 0 1 0 0 1 XXX 0 1 0 0 10 0 0 1 0 1 0 1 1 0 0 0 0 1 11 0 0 1 0 1 1 0 1 0 0 0 0 1 12 0 0 1 1 0 0 XXX 0 0 1 0 13 0 0 1 1 0 1 0 0 1 0 0 0 1 14 0 0 1 1 1 0 1 0 1 0 0 0 1 15 0 0 1 1 1 1 XXX X X X X 16 0 1 0 0 0 0 0 1 0 1 0 0 0 17 0 1 0 0 0 1 XXX 0 1 0 0 18 0 1 0 0 1 0 1 0 1 0 0 0 1 19 0 1 0 0 1 1 1 1 0 0 0 0 1 20 0 1 0 1 0 0 XXX 0 0 1 0 21 0 1 0 1 0 1 1 0 0 0 0 0 1 22 0 1 0 1 1 0 0 0 1 0 0 0 1 23 0 1 0 1 1 1 XXX X X X X 24 0 1 1 0 0 0 XXX 1 0 0 0 25 0 1 1 0 0 1 XXX 0 1 0 0 26 0 1 1 0 1 0 XXX 0 0 0 1 27 0 1 1 0 1 1 XXX 0 0 0 1 28 0 1 1 1 0 0 XXX 0 0 1 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 162

Πτυχιακή Εργασία 29 0 1 1 1 0 1 XXX 0 0 0 1 30 0 1 1 1 1 0 XXX 0 0 0 1 31 0 1 1 1 1 1 XXX X X X X 32 1 0 0 0 0 0 0 0 1 1 0 0 0 33 1 0 0 0 0 1 XXX 0 1 0 0 34 1 0 0 0 1 0 1 0 0 0 0 0 1 35 1 0 0 0 1 1 1 0 0 0 0 0 1 36 1 0 0 1 0 0 XXX 0 0 1 0 37 1 0 0 1 0 1 1 0 0 0 0 0 1 38 1 0 0 1 1 0 1 0 0 0 0 0 1 39 1 0 0 1 1 1 XXX X X X X 40 1 0 1 0 0 0 XXX 1 0 0 0 41 1 0 1 0 0 1 XXX 0 1 0 0 42 1 0 1 0 1 0 XXX 0 0 0 1 43 1 0 1 0 1 1 XXX 0 0 0 1 44 1 0 1 1 0 0 XXX 0 0 1 0 45 1 0 1 1 0 1 XXX 0 0 0 1 46 1 0 1 1 1 0 XXX 0 0 0 1 47 1 0 1 1 1 1 XXX X X X X 48 1 1 0 0 0 0 XXX 1 0 0 0 49 1 1 0 0 0 1 XXX 0 1 0 0 50 1 1 0 0 1 0 XXX 0 0 0 1 51 1 1 0 0 1 1 XXX 0 0 0 1 52 1 1 0 1 0 0 XXX 0 0 1 0 53 1 1 0 1 0 1 XXX 0 0 0 1 54 1 1 0 1 1 0 XXX 0 0 0 1 55 1 1 0 1 1 1 XXX X X X X 56 1 1 1 0 0 0 XXX 1 0 0 0 57 1 1 1 0 0 1 XXX 0 1 0 0 58 1 1 1 0 1 0 XXX 0 0 0 1 59 1 1 1 0 1 1 XXX 0 0 0 1 60 1 1 1 1 0 0 XXX 0 0 1 0 61 1 1 1 1 0 1 XXX 0 0 0 1 62 1 1 1 1 1 0 XXX 0 0 0 1 63 1 1 1 1 1 1 XXX X X X X Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 163

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip-flop για κάθε συνδυασμό παρούσας κατάστασης-εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip-flop. Έτσι οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip-flop, όπως φαίνονται στον πίνακα διεγέρσεων 3.3.2.4: Πίνακας 3.3.2.4 Πίνακας διεγέρσεων Δεκ. Πρωτεύουσα Παρούσα Επόμενη Δευτερεύουσες Πρωτεύουσες Είσοδος Κατάσταση Κατάσταση Είσοδοι Έξοδοι X 1 X 2 X 3 Q A Q B Q C Q + Α Q + + Β Q C D Α D B D C Z 0 Z 1 Z 2 3 Z 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 3 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 1 4 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 5 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 6 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 1 7 0 0 0 1 1 1 X X X X X X X X X X 8 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 9 0 0 1 0 0 1 X X X X X X 0 1 0 0 10 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 11 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 12 0 0 1 1 0 0 X X X X X X 0 0 1 0 13 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 14 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 15 0 0 1 1 1 1 X X X X X X X X X X 16 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 17 0 1 0 0 0 1 X X X X X X 0 1 0 0 18 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 19 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 20 0 1 0 1 0 0 X X X X X X 0 0 1 0 21 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 22 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 23 0 1 0 1 1 1 X X X X X X X X X X 24 0 1 1 0 0 0 X X X X X X 1 0 0 0 25 0 1 1 0 0 1 X X X X X X 0 1 0 0 26 0 1 1 0 1 0 X X X X X X 0 0 0 1 27 0 1 1 0 1 1 X X X X X X 0 0 0 1 28 0 1 1 1 0 0 X X X X X X 0 0 1 0 29 0 1 1 1 0 1 X X X X X X 0 0 0 1 30 0 1 1 1 1 0 X X X X X X 0 0 0 1 31 0 1 1 1 1 1 X X X X X X X X X X 32 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 33 1 0 0 0 0 1 X X X X X X 0 1 0 0 34 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 35 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 36 1 0 0 1 0 0 X X X X X X 0 0 1 0 37 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 38 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 39 1 0 0 1 1 1 X X X X X X X X X X 40 1 0 1 0 0 0 X X X X X X 1 0 0 0 41 1 0 1 0 0 1 X X X X X X 0 1 0 0 42 1 0 1 0 1 0 X X X X X X 0 0 0 1 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 164

Πτυχιακή Εργασία 43 1 0 1 0 1 1 X X X X X X 0 0 0 1 44 1 0 1 1 0 0 X X X X X X 0 0 1 0 45 1 0 1 1 0 1 X X X X X X 0 0 0 1 46 1 0 1 1 1 0 X X X X X X 0 0 0 1 47 1 0 1 1 1 1 X X X X X X X X X X 48 1 1 0 0 0 0 X X X X X X 1 0 0 0 49 1 1 0 0 0 1 X X X X X X 0 1 0 0 50 1 1 0 0 1 0 X X X X X X 0 0 0 1 51 1 1 0 0 1 1 X X X X X X 0 0 0 1 52 1 1 0 1 0 0 X X X X X X 0 0 1 0 53 1 1 0 1 0 1 X X X X X X 0 0 0 1 54 1 1 0 1 1 0 X X X X X X 0 0 0 1 55 1 1 0 1 1 1 X X X X X X X X X X 56 1 1 1 0 0 0 X X X X X X 1 0 0 0 57 1 1 1 0 0 1 X X X X X X 0 1 0 0 58 1 1 1 0 1 0 X X X X X X 0 0 0 1 59 1 1 1 0 1 1 X X X X X X 0 0 0 1 60 1 1 1 1 0 0 X X X X X X 0 0 1 0 61 1 1 1 1 0 1 X X X X X X 0 0 0 1 62 1 1 1 1 1 0 X X X X X X 0 0 0 1 63 1 1 1 1 1 1 X X X X X X X X X X Στο επόμενο βήμα σχεδιάζονται οι πίνακες Karnaugh για τις πρωτεύουσες και δευτερεύουσες εξόδους, οι οποίοι συμπληρώνονται με βάση τον πίνακα διεγέρσεων 3.3.2.4. και παίρνονται οι ελάχιστες συναρτήσεις. X 3 Q A X 1 =0 Q B Q C 00 01 11 10 00 0 0 X 0 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 00 0 X X X X 2 =0 01 0 1 0 X 01 X 1 X X 11 0 X X 0 11 1 X X X 10 0 1 1 1 10 1 1 X X X 3 Q A Q B Q C 00 01 11 10 00 0 X X X X 3 Q A Q B Q C 00 01 11 10 00 X X X X X 2 =1 01 X 1 X X 01 X X X X 11 1 X X X 11 X X X X 10 1 0 X X 10 X X X X D A = X 1 X 2 X 3 Q A Q C + X 1 X 2 Q A Q B + X 1 X 2 X 3 Q B Q C + X 1 X 2 Q C + X 1 X 2 Q A Q B +X 1 X 2 Q C + X 1 X 2 Q B Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 165

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής X 3 Q A X 1 =0 Q B Q C 00 01 11 10 00 0 0 X 1 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 00 0 X X X X 2 =0 01 0 0 0 X 01 X 0 X X 11 1 X X 1 11 0 X X X 10 1 1 0 1 10 0 0 X X X 3 Q A Q B Q C 00 01 11 10 00 1 X X X X 3 Q A Q B Q C 00 01 11 10 00 X X X X X 2 =1 01 X 0 X X 01 X X X X 11 1 X X X 11 X X X X 10 0 0 X X 10 X X X X D B = X 1 X 2 X 3 Q A + X 1 X 2 X 3 Q B + X 1 X 2 Q B Q C + X 1 X 2 Q B Q C X 3 Q A X 1 =0 Q B Q C 00 01 11 10 00 0 0 X 1 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 00 1 X X X X 2 =0 01 0 1 1 X 01 X 0 X X 11 1 X X 0 11 0 X X X 10 0 0 1 0 10 0 0 X X X 3 Q A Q B Q C 00 01 11 10 00 0 X X X X 3 Q A Q B Q C 00 01 11 10 00 X X X X X 2 =1 01 X 0 X X 01 X X X X 11 0 X X X 11 X X X X 10 1 1 X X 10 X X X X D C = X 1 X 2 X 3 Q B + X 1 X 2 Q A Q C + X 1 X 2 X 3 Q A + X 1 X 2 X 3 Q B Q C +X 1 X 2 Q B Q C + X 1 X 2 Q B Q C Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 166

Πτυχιακή Εργασία X 3 Q A X 1 =0 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 Q B Q C 00 01 11 10 00 1 0 0 1 00 1 0 0 1 X 2 =0 01 0 0 0 0 01 0 0 0 0 11 0 X X 0 11 0 X X 0 10 0 0 0 0 10 0 0 0 0 X 3 Q A Q B Q C 00 01 11 10 00 1 0 0 1 X 3 Q A Q B Q C 00 01 11 10 00 1 0 0 1 X 2 =1 01 0 0 0 0 01 0 0 0 0 11 0 X X X 11 0 X X 0 10 0 0 0 0 10 0 0 0 0 Z 0 = X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C X 3 Q A X 1 =0 Q B Q C 00 01 11 10 00 0 0 0 0 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 00 0 0 0 0 X 2 =0 01 1 0 0 1 01 1 0 0 1 11 0 X X 0 11 0 X X 0 10 0 0 0 0 10 0 0 0 0 X 3 Q A Q B Q C 00 01 11 10 00 0 0 0 0 X 3 Q A Q B Q C 00 01 11 10 00 0 0 0 0 X 2 =1 01 1 0 0 1 01 1 0 0 1 11 0 X X 0 11 0 X X 0 10 0 0 0 0 10 0 0 0 0 Z 1 = X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 167

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής X 3 Q A X 1 =0 Q B Q C 00 01 11 10 00 0 1 1 0 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 00 0 1 1 0 X 2 =0 01 0 0 0 0 01 0 0 0 0 11 0 X X 0 11 0 X X 0 10 0 0 0 0 10 0 0 0 0 X 3 Q A Q B Q C 00 01 11 10 00 0 1 1 0 X 3 Q A Q B Q C 00 01 11 10 00 0 1 1 0 X 2 =1 01 0 0 0 0 01 0 0 0 0 11 0 X X 0 11 0 X X 0 10 0 0 0 0 10 0 0 0 0 Z 2 = X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C + X 1 X 2 Q A Q B Q C X 3 Q A X 1 =0 Q B Q C 00 01 11 10 00 0 0 0 0 X 3 Q A X 1 =1 Q B Q C 00 01 11 10 00 0 0 0 0 X 2 =0 01 0 1 1 0 01 0 1 1 0 11 1 X X 1 11 1 X X 1 10 1 1 1 1 10 1 1 1 1 X 3 Q A Q B Q C 00 01 11 10 00 0 0 0 0 X 3 Q A Q B Q C 00 01 11 10 00 0 0 0 0 X 2 =1 01 0 1 1 0 01 0 1 1 0 11 1 X X 1 11 1 X X 1 10 1 1 1 1 10 1 1 1 1 Z 3 = X 1 X 2 Q A Q C + X 1 X 2 Q B + X 1 X 2 Q A Q C + X 1 X 2 Q B + X 1 X 2 Q A Q C + X 1 X 2 Q B + X 1 X 2 Q A Q C + X 1 X 2 Q B Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 168

Πτυχιακή Εργασία Από τις ελάχιστες συναρτήσεις απεικονίζεται το παρακάτω ακολουθιακό κύκλωμα (Σχήμα 3.3.2.3.). Σχήμα 3.3.2.3: Ακολουθιακό κύκλωμα. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 169

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Η άσκηση θα υλοποιηθεί με δύο τρόπους. Ένας τρόπος είναι με τη βοήθεια των ελάχιστων συναρτήσεων που έχουν εξαχθεί από τους πίνακες Karnaugh που υλοποιήθηκαν παραπάνω. Ενώ ο άλλος τρόπος πραγματοποιείται με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY vending5020101 IS PORT (CLK, FIFTY, TWENTY, TEN, CLR :IN STD_LOGIC; COIN, RET, DISPENSE, READY :OUT STD_LOGIC); END vending5020101; ARCHITECTURE circuit OF vending5020101 IS SIGNAL CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN HIGH<='1'; CK<=CLK; DA<=(NOT FIFTY AND NOT TWENTY AND NOT TEN AND QA AND QC) OR (NOT FIFTY AND NOT TWENTY AND QA AND QB) OR (NOT FIFTY AND NOT TWENTY AND TEN AND QB AND NOT QC) OR (NOT FIFTY AND TWENTY AND QC) OR (NOT FIFTY AND TWENTY AND NOT QA AND QB) OR (FIFTY AND NOT TWENTY AND QC) OR (FIFTY AND NOT TWENTY AND QB); DB<=(NOT FIFTY AND NOT TWENTY AND TEN AND NOT QA) OR (NOT FIFTY AND NOT TWENTY AND NOT TEN AND QB) OR (NOT FIFTY AND TWENTY AND NOT QB AND NOT QC) OR (NOT FIFTY AND TWENTY AND QB AND QC); Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 170

Πτυχιακή Εργασία DC<=(NOT FIFTY AND NOT TWENTY AND TEN AND NOT QB) OR (NOT FIFTY AND NOT TWENTY AND QA AND QC) OR (NOT FIFTY AND NOT TWENTY AND TEN AND QA) OR (NOT FIFTY AND NOT TWENTY AND NOT TEN AND QB AND QC) OR (NOT FIFTY AND TWENTY AND QB AND NOT QC) OR (FIFTY AND NOT TWENTY AND NOT QB AND NOT QC); FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); READY <= (NOT FIFTY AND NOT TWENTY AND NOT QA AND NOT QB AND NOT QC) OR (NOT FIFTY AND TWENTY AND NOT QA AND NOT QB AND NOT QC) OR (FIFTY AND NOT TWENTY AND NOT QA AND NOT QB AND NOT QC) OR (FIFTY AND TWENTY AND NOT QA AND NOT QB AND NOT QC); DISPENSE<=(NOT FIFTY AND NOT TWENTY AND NOT QA AND NOT QB AND QC) OR (NOT FIFTY AND TWENTY AND NOT QA AND NOT QB AND QC) OR (FIFTY AND NOT TWENTY AND NOT QA AND NOT QB AND QC) OR (FIFTY AND TWENTY AND NOT QA AND NOT QB AND QC); RET<= (NOT FIFTY AND NOT TWENTY AND QA AND NOT QB AND NOT QC) OR (NOT FIFTY AND TWENTY AND QA AND NOT QB AND NOT QC) OR (FIFTY AND NOT TWENTY AND QA AND NOT QB AND NOT QC) OR (FIFTY AND TWENTY AND QA AND NOT QB Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 171

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής AND NOT QC); COIN<= (NOT FIFTY AND NOT TWENTY AND QA AND QC) OR (NOT FIFTY AND NOT TWENTY AND QB) OR (NOT FIFTY AND TWENTY AND QA AND QC) OR (NOT FIFTY AND TWENTY AND QB) OR (FIFTY AND NOT TWENTY AND QA AND QC) OR (FIFTY AND NOT TWENTY AND QB) OR (FIFTY AND TWENTY AND QA AND QC) OR (FIFTY AND TWENTY AND QB); END circuit; Το αποτέλεσμα της προσομοίωσης του παραπάνω προγράμματος φαίνεται στο σχήμα 3.3.2.4. Σχήμα 3.3.2.4: Αποτελέσματα προσομοίωσης. Η προσομοίωση που δημιουργήθηκε από το Waveform Editor του MAXPLUS II είναι ένας τρόπος για να παρουσιαστούν μερικές εισαγωγές κερμάτων στον αυτόματο πωλητή αναψυκτικού. Ακολουθούν κάποιες περιπτώσεις που έχουν απεικονιστεί παραπάνω. Αυτές οι περιπτώσεις είναι με τη σειρά: 50 λεπτά 20 λεπτά - 20 λεπτά - 10 λεπτά 10 λεπτά - 10 λεπτά - 10 λεπτά - 10 λεπτά - 10 λεπτά 10 λεπτά - 10 λεπτά - 10 λεπτά 20 λεπτά 20 λεπτά - 50 λεπτά Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 172

Πτυχιακή Εργασία 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY vending5020101if IS PORT (CLOCK, RESET, FIFTY, TWENTY, TEN : IN STD_LOGIC; READY, DISPENSE, RET, COIN : OUT STD_LOGIC); END ENTITY vending5020101if; ARCHITECTURE asm OF vending5020101if IS TYPE STATE_TYPE IS (A, B, C, D, E, F, G); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; BEGIN SEQ: PROCESS (CLOCK, RESET) IS BEGIN IF (RESET = '1') THEN PRESENT_STATE <= A; ELSIF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <= NEXT_STATE; END PROCESS SEQ; COM: PROCESS (FIFTY, TWENTY, TEN, PRESENT_STATE) IS BEGIN READY <= '0'; DISPENSE <= '0'; RET <= '0'; COIN <= '0'; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (FIFTY = '1') THEN NEXT_STATE <= B; ELSIF (TWENTY = '1') THEN NEXT_STATE <= C; ELSIF (TEN = '1') THEN NEXT_STATE <= D; ELSE NEXT_STATE <= A; WHEN B => Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 173

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής DISPENSE <= '1'; NEXT_STATE <= A; WHEN C => COIN <= '1'; IF (FIFTY = '1') THEN NEXT_STATE <= E; ELSIF (TWENTY = '1') THEN NEXT_STATE <= F; ELSIF (TEN = '1') THEN NEXT_STATE <= G; ELSE NEXT_STATE <= C; WHEN D => COIN <= '1'; IF (FIFTY = '1') THEN NEXT_STATE <= E; ELSIF (TWENTY = '1') THEN NEXT_STATE <= G; ELSIF (TEN = '1') THEN NEXT_STATE <= C; ELSE NEXT_STATE <= D; WHEN E => RET <= '1'; NEXT_STATE <= A; WHEN F => COIN <= '1'; IF (FIFTY = '1') THEN NEXT_STATE <= E; ELSIF (TWENTY = '1') THEN NEXT_STATE <= E; ELSIF (TEN = '1') THEN NEXT_STATE <= B; ELSE NEXT_STATE <= F; WHEN G => COIN <= '1'; IF (FIFTY = '1') THEN NEXT_STATE <= E; ELSIF (TWENTY = '1') THEN NEXT_STATE <= B; ELSIF (TEN = '1') THEN NEXT_STATE <= F; ELSE NEXT_STATE <= G; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 174

Πτυχιακή Εργασία END CASE; END PROCESS COM; END ARCHITECTURE asm; Το αποτέλεσμα προσομοίωσης του κώδικα φαίνεται στο Σχήμα.3.3.2.5. Στη προσομοίωση παρουσιάζονται όλες οι περιπτώσεις που μπορούν να εκτελεστούν. Εδώ όμως θα δείξουμε ενδεικτικά μερικές από αυτές. Σχήμα.3.3.2.5: Αποτελέσματα προσομοίωσης. Οι περιπτώσεις που δείχνουμε παραπάνω είναι με τη σειρά: 50 λεπτά 20 λεπτά - 20 λεπτά - 10 λεπτά 10 λεπτά - 10 λεπτά - 10 λεπτά - 10 λεπτά - 10 λεπτά 10 λεπτά - 10 λεπτά - 10 λεπτά 20 λεπτά 20 λεπτά - 50 λεπτά Εκτός από την εικονική παρουσίαση που έχει απεικονιστεί παραπάνω (Σχήμα. 3.3.2.1.) έχουμε και την απεικόνιση του Edit Sympol (Σχήμα.3.3.2.6). Είναι ένας τρόπος που μπορεί να αναπαραστήσει τη λειτουργική σχεδίαση των εισόδων και εξόδων, που προέκυψαν από τις προδιαγραφές όπως φαίνεται παρακάτω: Σχήμα.3.3.2.6: Απεικόνιση λειτουργικής σχεδίασης. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 175

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τις εξισώσεις. Όπως αναφέρθηκε και σε προηγούμενη ενότητα, η γλώσσα VHDL έγινε βιομηχανικό πρότυπο της IEEE 1164 Standard. Όταν πρόκειται να χρησιμοποιηθεί η μορφή σήματος STANDARD LOGIC καθώς και οι βιβλιοθήκες της ALTERA που εμπεριέχουν τη βιβλιοθήκη των μακροσυναρτήσεων θα πρέπει να εισάγονται στην αρχή του προγράμματος οι επόμενες τέσσερις γραμμές. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; Το ENTITY ορίζεται ως το όνομα της αυτοτελούς μονάδος καθώς και οι είσοδοι και έξοδοι της, με τη δεσμευμένη λέξη PORT. Τα CLK, FIFTY, TWENTY, TEN, CLR αποτελούν τα σήματα εισόδου, ενώ τα COIN, RET, DISPENSE, READY αποτελούν τα σήματα εξόδου. Η κατεύθυνσή τους προσδιορίζεται με τη χρήση των λεκτικών IN και OUT. Με τη μορφή σήματος STD_LOGIC μπορούν να οριστούν σήματα και άλλων επιπλέον λογικών καταστάσεων ENTITY vending5020101 IS PORT (CLK, FIFTY, TWENTY, TEN, CLR :IN STD_LOGIC; COIN, RET, DISPENSE, READY :OUT STD_LOGIC); END vending5020101; Με τη δήλωση ARCHITECTURE ορίζεται η εσωτερική δομή της μονάδας. Η λέξη κλειδί SIGNAL δηλώνει δεδομένα σημάτων που κινούνται στα καλώδια του κυκλώματος. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Στην προκειμένη περίπτωση τα ονόματα των σημάτων που δηλώνονται είναι CK, DA, DB, DC, QA, QB, QC, HIGH. Στην συνέχεια ξεκινάει η υλοποίηση του κυρίως προγράμματος, μετά γίνεται η αρχικοποίηση των σημάτων HIGH και CK με τον τελεστή ανάθεσης σήματος (<=). Επίσης, γίνεται υλοποίηση των εισόδων των Flip Flop DA, DB, DC μέσω των εξισώσεων που προέκυψαν από τους πίνακες Karnaugh. Στην προκειμένη περίπτωση επεξηγείται το DA Flip Flop. ARCHITECTURE circuit OF vending5020101 IS SIGNAL CK, DA, DB, DC, QA, QB, QC, HIGH :STD_LOGIC; BEGIN Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 176

Πτυχιακή Εργασία HIGH<='1'; CK<=CLK; DA<=(NOT FIFTY AND NOT TWENTY AND NOT TEN AND QA AND QC) OR (NOT FIFTY AND NOT TWENTY AND QA AND QB) OR (NOT FIFTY AND NOT TWENTY AND TEN AND QB AND NOT QC) OR (NOT FIFTY AND TWENTY AND QC) OR (NOT FIFTY AND TWENTY AND NOT QA AND QB) OR (FIFTY AND NOT TWENTY AND QC) OR (FIFTY AND NOT TWENTY AND QB); Η λέξη κλειδί PORT MAP χρησιμοποιείται για τη σύνδεση του στιγμιότυπου με τα υπόλοιπα κυκλώματα. Υποδεικνύει, δηλαδή, ποια σήματα θα συνδεθούν στις εισόδους και τις εξόδους ενός D Flip-Flop. Από τις εξισώσεις που έχουν υλοποιηθεί βάση των πινάκων Karnaugh προκύπτει ο παρακάτω τρόπος προγραμματισμού για τις εξόδους. Ενδεικτικά επεξηγείται η έξοδος READY. FFC:DFF PORT MAP (D=>DC, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QC); FFB:DFF PORT MAP (D=>DB, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QB); FFA:DFF PORT MAP (D=>DA, CLK=>CK, CLRN=>CLR, PRN=>HIGH, Q=>QA); READY <= (NOT FIFTY AND NOT TWENTY AND NOT QA AND NOT QB AND NOT QC) OR (NOT FIFTY AND TWENTY AND NOT QA AND NOT QB AND NOT QC) OR (FIFTY AND NOT TWENTY AND NOT QA AND NOT QB AND NOT QC) OR (FIFTY AND TWENTY AND NOT QA AND NOT QB AND NOT QC); Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 177

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 2 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Η ARCHITECTURE αποτελεί την εσωτερική δομή της μονάδας. Ενώ η λέξη κλειδί TYPE, που ακολουθείται από το αντικείμενο δεδομένων STATE_TYPE. Το STATE_TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα. Στην προκειμένη περίπτωση έχουμε τις καταστάσεις A, B, C, D, E, F, G. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Ακολουθούν οι ακολουθιακές εντολές που είναι φωλιασμένες στην λέξη κλειδί PROCESS. Και τέλος η διαδικασία προτεραιότητας των εισόδων. ARCHITECTURE asm OF vending5020101if IS TYPE STATE_TYPE IS (A, B, C, D, E, F, G); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; BEGIN SEQ: PROCESS (CLOCK, RESET) IS BEGIN IF (RESET = '1') THEN PRESENT_STATE <= A; ELSIF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <= NEXT_STATE; END PROCESS SEQ; COM: PROCESS (FIFTY, TWENTY, TEN, PRESENT_STATE) IS BEGIN READY <= '0'; DISPENSE <= '0'; RET <= '0'; COIN <= '0'; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (FIFTY = '1') THEN NEXT_STATE <= B; ELSIF (TWENTY = '1') THEN NEXT_STATE <= C; ELSIF (TEN = '1') THEN NEXT_STATE <= D; ELSE NEXT_STATE <= A; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 178

Πτυχιακή Εργασία 3 η Περίπτωση: 50λεπτα 20 λεπτά 10λεπτά 1 ποτό Ρέστα. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ενεργοποιεί έναν αυτόματο πωλητή αναψυκτικού (vending machine). Το κάθε αναψυκτικό κοστίζει 70λεπτά. Οι είσοδοι του συστήματος είναι κέρματα των 50, 20 και 10λεπτών, που θα εισάγονται με αντίστοιχους συνδυασμούς για την ενεργοποίηση του μηχανήματος και την εξαγωγή του αναψυκτικού. Επίσης, υπάρχει και μια είσοδος, η reset, η οποία όταν πατηθεί θα επιστρέφει όλα τα χρήματα που έχουν εισαχθεί στο μηχάνημα. Κατά τη λειτουργία του μηχανήματος ενεργοποιούνται έξι έξοδοι Z 1 (ready), Z 2 (coin), Z 3 (dispense), Z 4 (return), Z 5 (Return20), Z 6 (Return10). Διαδικασία Σχεδίασης: Στη παρούσα άσκηση έχουμε έναν αυτόματο πωλητή αναψυκτικών που το ποτό κοστίζει 70 λεπτά. Ο χρήστης έχει τη δυνατότητα να ρίξει στο μηχάνημα τριών ειδών κέρματα, 50, 20 και 10 λεπτά. Αν εισαχθούν ακριβώς τα χρήματα, τότε γίνεται η εξαγωγή του ποτού. Αν, για οποιονδήποτε λόγο, εισαχθούν με συνδυασμό που θα ξεπερνούν τα 70 λεπτά, επιστρέφονται τα ρέστα που πρέπει κάθε φορά. Αν για παράδειγμα βάλουμε 50 και 50 λεπτά, θα δοθούν ρέστα 30 λεπτά( 20-10 λεπτά). Επίσης υπάρχει η δυνατότητα, με την επιλογή Reset, να επιστραφούν όλα τα χρήματα που εισάγει ο χρήστης. Αν ο χρήστης αλλάξει γνώμη και δεν θέλει να πάρει τελικά ποτό, πατώντας το Reset διακόπτεται η διαδικασία σε όποιο στάδιο και αν βρίσκεται εκείνη την στιγμή. Στην συνέχεια επιστρέφει στην αρχική κατάσταση (Ready) κάνοντας εξαγωγή όλων των κερμάτων. Στο Σχήμα 3.3.3.1 που θα ακολουθήσει παρουσιάζεται ένα διάγραμμα βαθμίδας των εισόδων και των εξόδων του αυτόματου πωλητή αναψυκτικού, που προκύπτουν από τις προδιαγραφές και τις απαιτήσεις του συστήματος. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 179

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Είσοδος Χρημάτων Res et X 1-50λεπτά X 2-20λεπτά X 3-10λεπτά X 4 Ζ 2 Ζ 1 Ζ 5 Ζ 6 Ζ 4 Ζ 3 Έτοιμο Για Την Είσοδο Χρημάτων Ρέστα 20 λεπτών Ρέστα 10 λεπτών Επιστροφή Χρημάτων Έξοδος Ποτού Σχήμα 3.3.3.1: Διάγραμμα βαθμίδας. Με βάση το παραπάνω διάγραμμα για τις εισόδους και τις εξόδους του συστήματος δημιουργείται ένα άλλο διάγραμμα, το διάγραμμα καταστάσεων, όπως παρουσιάζεται στο σχήμα 3.3.3.2. Παρουσιάζονται όλες οι πιθανές καταστάσεις που μπορούν να υπάρξουν. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 180

Πτυχιακή Εργασία 0001 0000 0000,0001 0000 A 0000 0001 0000 L B H 0001 0010 0100 E 1000 C 1000 0100 1000 0010 0001 0001 0100 D 0000 0010 0010 0000 0001 0010 0100 0010 0100 F 0100 0000 0010 K G 1000 0000 0000 1000 0000 0000 1000 1000 0100 I J Σχήμα.3.3.3.2: Διάγραμμα καταστάσεων. Για διευκόλυνση στη σύνταξη των πινάκων της άσκησης θα αντικαταστήσουμε τις ονομασίες των εξόδων με μεταβλητές. Επομένως θα έχουμε: Z 1 = Ready Z 2 = Coin Z 3 = Dispense Z 4 = Ret Z 5 = Return20 Z 6 = Return10 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 181

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Με βάση το διάγραμμα και λαμβάνοντας υπόψη τα Z 1, Z 2, Z 3, Z 4, Z 5, Z 6 συντάσσεται ο πίνακας καταστάσεων 3.3.3.1 (μοντέλου moore). Πίνακας 3.3.3.1 Πίνακας καταστάσεων(μοντέλο moore) Παρ. Κατ. Είσοδος X 1, X 2, X 3, X 4 Έξοδοι Q 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 A A A D XXXX C XXXX XXXX XXXX B XXXX XXXX XXXX XXXX XXXX XXXX XXXX 1 0 0 0 0 0 B B H K XXXX E XXXX XXXX XXXX L XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 C C H G XXXX F XXXX XXXX XXXX E XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 D D H C XXXX G XXXX XXXX XXXX K XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 E A XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 0 0 F F H B XXXX K XXXX XXXX XXXX I XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 G G H F XXXX B XXXX XXXX XXXX J XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 H A XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 0 1 0 0 I A XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 1 0 J A XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 0 1 K K H E XXXX J XXXX XXXX XXXX I XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 L A XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 1 1 M XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X N XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X O XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X P XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 182

Πτυχιακή Εργασία Για να παρασταθούν οι καταστάσεις A, B, C, D, E, F, G, H, I, J, K, L απαιτούνται τέσσερις μεταβλητές Q A Q B Q C Q D Άρα, απαιτούνται και τέσσερα flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D A, D B, D C και D D. Ο τρόπος με τον οποίο εκχωρούνται δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους του κυκλώματος. Στη συνέχεια θα δείξουμε πως θα εκχωρήσουμε τις μεταβλητές Q A Q B Q C., Q D στις καταστάσεις A, B, C, D, E, F, G, H, I, J, K, L: A: Q A 0 B: Q A 0 C: Q A 0 D: Q A 0 E: Q A 0 Q B 0 Q B 0 Q B 0 Q B 0 Q B 1 Q C 0 Q C 0 Q C 1 Q C 1 Q C 0 Q D 0 Q D 1 Q D 0 Q D 1 Q D 0 F: Q A 0 G: Q A 0 H: Q A 0 I: Q A 1 J: Q A 1 Q B 1 Q B 1 Q B 1 Q B 0 Q B 0 Q C 0 Q C 1 Q C 1 Q C 0 Q C 0 Q D 1 Q D 0 Q D 1 Q D 0 Q D 1 K: Q A 1 L: Q A 1 Q B 0 Q B 0 Q C 1 Q C 1 Q D 0 Q D 1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 183

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές Q A Q B Q C Q D, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.3.3.2: Πίνακας 3.3.3.2 Πίνακας καταστάσεων Παρ. Είσοδος X Κατ. 1, X 2, X 3, X 4 Έξοδοι Q 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 0000 0000 0000 0011 XXXX 0010 XXXX XXXX XXXX 0001 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 1 0 0 0 0 0 0001 0001 0111 1010 XXXX 0100 XXXX XXXX XXXX 1011 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 0010 0010 0111 0110 XXXX 0101 XXXX XXXX XXXX 0100 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 0011 0011 0111 0010 XXXX 0110 XXXX XXXX XXXX 1010 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 0100 0000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 0 0 0101 0101 0111 0001 XXXX 1010 XXXX XXXX XXXX 1000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 0110 0110 0111 0101 XXXX 0001 XXXX XXXX XXXX 1001 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 0111 0000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 0 1 0 0 1000 0000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 1 0 1001 0000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 0 1 1010 1010 0111 0100 XXXX 1001 XXXX XXXX XXXX 1000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 1 0 0 0 0 1011 0000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0 0 1 0 1 1 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX X X X X X X Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 184

Πτυχιακή Εργασία Ο παραπάνω πίνακας καταστάσεων μπορεί να πάρει τη μορφή του πίνακα μεταβάσεων 3.3.3.3: Πίνακας 3.3.3.3 Πίνακας μεταβάσεων Δεκ. Πρωτεύουσα Παρούσα Επόμενη Πρωτεύουσες είσοδος κατάσταση κατάσταση έξοδοι X 1 X 2 X 3 X 4 Q A Q B Q C Q D Q + A Q + B Q + + C Q D Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 3 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 4 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 5 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 6 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 7 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 8 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 9 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 10 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 11 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 12 0 0 0 0 X X X X X X X X X X X X X X 13 0 0 0 0 X X X X X X X X X X X X X X 14 0 0 0 0 X X X X X X X X X X X X X X 15 0 0 0 0 X X X X X X X X X X X X X X 16 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 17 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 18 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 19 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 20 0 0 0 1 0 1 0 0 X X X X 0 0 1 0 0 0 21 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 22 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 0 0 0 23 0 0 0 1 0 1 1 1 X X X X 0 0 0 1 0 0 24 0 0 0 1 1 0 0 0 X X X X 0 0 1 0 1 0 25 0 0 0 1 1 0 0 1 X X X X 0 0 1 0 0 1 26 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 0 0 0 27 0 0 0 1 1 0 1 1 X X X X 0 0 1 0 1 1 28 0 0 0 1 X X X X X X X X X X X X X X 29 0 0 0 1 X X X X X X X X X X X X X X 30 0 0 0 1 X X X X X X X X X X X X X X 31 0 0 0 1 X X X X X X X X X X X X X X 32 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 33 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 34 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 35 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 36 0 0 1 0 0 1 0 0 X X X X 0 0 1 0 0 0 37 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 38 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 39 0 0 1 0 0 1 1 1 X X X X 0 0 0 1 0 0 40 0 0 1 0 1 0 0 0 X X X X 0 0 1 0 1 0 41 0 0 1 0 1 0 0 1 X X X X 0 0 1 0 0 1 42 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 43 0 0 1 0 1 0 1 1 X X X X 0 0 1 0 1 1 44 0 0 1 0 X X X X X X X X X X X X X X 45 0 0 1 0 X X X X X X X X X X X X X X 46 0 0 1 0 X X X X X X X X X X X X X X 47 0 0 1 0 X X X X X X X X X X X X X X Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 185

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 48 0 0 1 1 0 0 0 0 X X X X 1 0 0 0 0 0 49 0 0 1 1 0 0 0 1 X X X X 0 1 0 0 0 0 50 0 0 1 1 0 0 1 0 X X X X 0 1 0 0 0 0 51 0 0 1 1 0 0 1 1 X X X X 0 1 0 0 0 0 52 0 0 1 1 0 1 0 0 X X X X 0 0 1 0 0 0 53 0 0 1 1 0 1 0 1 X X X X 0 1 0 0 0 0 54 0 0 1 1 0 1 1 0 X X X X 0 1 0 0 0 0 55 0 0 1 1 0 1 1 1 X X X X 0 0 0 1 0 0 56 0 0 1 1 1 0 0 0 X X X X 0 0 1 0 1 0 57 0 0 1 1 1 0 0 1 X X X X 0 0 1 0 0 1 58 0 0 1 1 1 0 1 0 X X X X 0 1 0 0 0 0 59 0 0 1 1 1 0 1 1 X X X X 0 0 1 0 1 1 60 0 0 1 1 X X X X X X X X X X X X X X 61 0 0 1 1 X X X X X X X X X X X X X X 62 0 0 1 1 X X X X X X X X X X X X X X 63 0 0 1 1 X X X X X X X X X X X X X X 64 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 65 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 66 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 67 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 68 0 1 0 0 0 1 0 0 X X X X 0 0 1 0 0 0 69 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 70 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 71 0 1 0 0 0 1 1 1 X X X X 0 0 0 1 0 0 72 0 1 0 0 1 0 0 0 X X X X 0 0 1 0 1 0 73 0 1 0 0 1 0 0 1 X X X X 0 0 1 0 0 1 74 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 75 0 1 0 0 1 0 1 1 X X X X 0 0 1 0 1 1 76 0 1 0 0 X X X X X X X X X X X X X X 77 0 1 0 0 X X X X X X X X X X X X X X 78 0 1 0 0 X X X X X X X X X X X X X X 79 0 1 0 0 X X X X X X X X X X X X X X 80 0 1 0 1 0 0 0 0 X X X X 1 0 0 0 0 0 81 0 1 0 1 0 0 0 1 X X X X 0 1 0 0 0 0 82 0 1 0 1 0 0 1 0 X X X X 0 1 0 0 0 0 83 0 1 0 1 0 0 1 1 X X X X 0 1 0 0 0 0 84 0 1 0 1 0 1 0 0 X X X X 0 0 1 0 0 0 85 0 1 0 1 0 1 0 1 X X X X 0 1 0 0 0 0 86 0 1 0 1 0 1 1 0 X X X X 0 1 0 0 0 0 87 0 1 0 1 0 1 1 1 X X X X 0 0 0 1 0 0 88 0 1 0 1 1 0 0 0 X X X X 0 0 1 0 1 0 89 0 1 0 1 1 0 0 1 X X X X 0 0 1 0 0 1 90 0 1 0 1 1 0 1 0 X X X X 0 1 0 0 0 0 91 0 1 0 1 1 0 1 1 X X X X 0 0 1 0 1 1 92 0 1 0 1 X X X X X X X X X X X X X X 93 0 1 0 1 X X X X X X X X X X X X X X 94 0 1 0 1 X X X X X X X X X X X X X X 95 0 1 0 1 X X X X X X X X X X X X X X 96 0 1 1 0 0 0 0 0 X X X X 1 0 0 0 0 0 97 0 1 1 0 0 0 0 1 X X X X 0 1 0 0 0 0 98 0 1 1 0 0 0 1 0 X X X X 0 1 0 0 0 0 99 0 1 1 0 0 0 1 1 X X X X 0 1 0 0 0 0 100 0 1 1 0 0 1 0 0 X X X X 0 0 1 0 0 0 101 0 1 1 0 0 1 0 1 X X X X 0 1 0 0 0 0 102 0 1 1 0 0 1 1 0 X X X X 0 1 0 0 0 0 103 0 1 1 0 0 1 1 1 X X X X 0 0 0 1 0 0 104 0 1 1 0 1 0 0 0 X X X X 0 0 1 0 1 0 105 0 1 1 0 1 0 0 1 X X X X 0 0 1 0 0 1 106 0 1 1 0 1 0 1 0 X X X X 0 1 0 0 0 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 186

Πτυχιακή Εργασία 107 0 1 1 0 1 0 1 1 X X X X 0 0 1 0 1 1 108 0 1 1 0 X X X X X X X X X X X X X X 109 0 1 1 0 X X X X X X X X X X X X X X 110 0 1 1 0 X X X X X X X X X X X X X X 111 0 1 1 0 X X X X X X X X X X X X X X 112 0 1 1 1 0 0 0 0 X X X X 1 0 0 0 0 0 113 0 1 1 1 0 0 0 1 X X X X 0 1 0 0 0 0 114 0 1 1 1 0 0 1 0 X X X X 0 1 0 0 0 0 115 0 1 1 1 0 0 1 1 X X X X 0 1 0 0 0 0 116 0 1 1 1 0 1 0 0 X X X X 0 0 1 0 0 0 117 0 1 1 1 0 1 0 1 X X X X 0 1 0 0 0 0 118 0 1 1 1 0 1 1 0 X X X X 0 1 0 0 0 0 119 0 1 1 1 0 1 1 1 X X X X 0 0 0 1 0 0 120 0 1 1 1 1 0 0 0 X X X X 0 0 1 0 1 0 121 0 1 1 1 1 0 0 1 X X X X 0 0 1 0 0 1 122 0 1 1 1 1 0 1 0 X X X X 0 1 0 0 0 0 123 0 1 1 1 1 0 1 1 X X X X 0 0 1 0 1 1 124 0 1 1 1 X X X X X X X X X X X X X X 125 0 1 1 1 X X X X X X X X X X X X X X 126 0 1 1 1 X X X X X X X X X X X X X X 127 0 1 1 1 X X X X X X X X X X X X X X 128 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 129 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 130 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 131 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 132 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 133 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 134 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 135 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 136 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 137 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 138 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 139 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 140 1 0 0 0 X X X X X X X X X X X X X X 141 1 0 0 0 X X X X X X X X X X X X X X 142 1 0 0 0 X X X X X X X X X X X X X X 143 1 0 0 0 X X X X X X X X X X X X X X 144 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 145 1 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 146 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 147 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 148 1 0 0 1 0 1 0 0 X X X X 0 0 1 0 0 0 149 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 150 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 151 1 0 0 1 0 1 1 1 X X X X 0 0 0 1 0 0 152 1 0 0 1 1 0 0 0 X X X X 0 0 1 0 1 0 153 1 0 0 1 1 0 0 1 X X X X 0 0 1 0 0 1 154 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 155 1 0 0 1 1 0 1 1 X X X X 0 0 1 0 1 1 156 1 0 0 1 X X X X X X X X X X X X X X 157 1 0 0 1 X X X X X X X X X X X X X X 158 1 0 0 1 X X X X X X X X X X X X X X 159 1 0 0 1 X X X X X X X X X X X X X X 160 1 0 1 0 0 0 0 0 X X X X 1 0 0 0 0 0 161 1 0 1 0 0 0 0 1 X X X X 0 1 0 0 0 0 162 1 0 1 0 0 0 1 0 X X X X 0 1 0 0 0 0 163 1 0 1 0 0 0 1 1 X X X X 0 1 0 0 0 0 164 1 0 1 0 0 1 0 0 X X X X 0 0 1 0 0 0 165 1 0 1 0 0 1 0 1 X X X X 0 1 0 0 0 0 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 187

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 166 1 0 1 0 0 1 1 0 X X X X 0 1 0 0 0 0 167 1 0 1 0 0 1 1 1 X X X X 0 0 0 1 0 0 168 1 0 1 0 1 0 0 0 X X X X 0 0 1 0 1 0 169 1 0 1 0 1 0 0 1 X X X X 0 0 1 0 0 1 170 1 0 1 0 1 0 1 0 X X X X 0 1 0 0 0 0 171 1 0 1 0 1 0 1 1 X X X X 0 0 1 0 1 1 172 1 0 1 0 X X X X X X X X X X X X X X 173 1 0 1 0 X X X X X X X X X X X X X X 174 1 0 1 0 X X X X X X X X X X X X X X 175 1 0 1 0 X X X X X X X X X X X X X X 176 1 0 1 1 0 0 0 0 X X X X 1 0 0 0 0 0 177 1 0 1 1 0 0 0 1 X X X X 0 1 0 0 0 0 178 1 0 1 1 0 0 1 0 X X X X 0 1 0 0 0 0 179 1 0 1 1 0 0 1 1 X X X X 0 1 0 0 0 0 180 1 0 1 1 0 1 0 0 X X X X 0 0 1 0 0 0 181 1 0 1 1 0 1 0 1 X X X X 0 1 0 0 0 0 182 1 0 1 1 0 1 1 0 X X X X 0 1 0 0 0 0 183 1 0 1 1 0 1 1 1 X X X X 0 0 0 1 0 0 184 1 0 1 1 1 0 0 0 X X X X 0 0 1 0 1 0 185 1 0 1 1 1 0 0 1 X X X X 0 0 1 0 0 1 186 1 0 1 1 1 0 1 0 X X X X 0 1 0 0 0 0 187 1 0 1 1 1 0 1 1 X X X X 0 0 1 0 1 1 188 1 0 1 1 X X X X X X X X X X X X X X 189 1 0 1 1 X X X X X X X X X X X X X X 190 1 0 1 1 X X X X X X X X X X X X X X 191 1 0 1 1 X X X X X X X X X X X X X X 192 1 1 0 0 0 0 0 0 X X X X 1 0 0 0 0 0 193 1 1 0 0 0 0 0 1 X X X X 0 1 0 0 0 0 194 1 1 0 0 0 0 1 0 X X X X 0 1 0 0 0 0 195 1 1 0 0 0 0 1 1 X X X X 0 1 0 0 0 0 196 1 1 0 0 0 1 0 0 X X X X 0 0 1 0 0 0 197 1 1 0 0 0 1 0 1 X X X X 0 1 0 0 0 0 198 1 1 0 0 0 1 1 0 X X X X 0 1 0 0 0 0 199 1 1 0 0 0 1 1 1 X X X X 0 0 0 1 0 0 200 1 1 0 0 1 0 0 0 X X X X 0 0 1 0 1 0 201 1 1 0 0 1 0 0 1 X X X X 0 0 1 0 0 1 202 1 1 0 0 1 0 1 0 X X X X 0 1 0 0 0 0 203 1 1 0 0 1 0 1 1 X X X X 0 0 1 0 1 1 204 1 1 0 0 X X X X X X X X X X X X X X 205 1 1 0 0 X X X X X X X X X X X X X X 206 1 1 0 0 X X X X X X X X X X X X X X 207 1 1 0 0 X X X X X X X X X X X X X X 208 1 1 0 1 0 0 0 0 X X X X 1 0 0 0 0 0 209 1 1 0 1 0 0 0 1 X X X X 0 1 0 0 0 0 210 1 1 0 1 0 0 1 0 X X X X 0 1 0 0 0 0 211 1 1 0 1 0 0 1 1 X X X X 0 1 0 0 0 0 212 1 1 0 1 0 1 0 0 X X X X 0 0 1 0 0 0 213 1 1 0 1 0 1 0 1 X X X X 0 1 0 0 0 0 214 1 1 0 1 0 1 1 0 X X X X 0 1 0 0 0 0 215 1 1 0 1 0 1 1 1 X X X X 0 0 0 1 0 0 216 1 1 0 1 1 0 0 0 X X X X 0 0 1 0 1 0 217 1 1 0 1 1 0 0 1 X X X X 0 0 1 0 0 1 218 1 1 0 1 1 0 1 0 X X X X 0 1 0 0 0 0 219 1 1 0 1 1 0 1 1 X X X X 0 0 1 0 1 1 220 1 1 0 1 X X X X X X X X X X X X X X 221 1 1 0 1 X X X X X X X X X X X X X X 222 1 1 0 1 X X X X X X X X X X X X X X 223 1 1 0 1 X X X X X X X X X X X X X X 224 1 1 1 0 0 0 0 0 X X X X 1 0 0 0 0 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 188

Πτυχιακή Εργασία 225 1 1 1 0 0 0 0 1 X X X X 0 1 0 0 0 0 226 1 1 1 0 0 0 1 0 X X X X 0 1 0 0 0 0 227 1 1 1 0 0 0 1 1 X X X X 0 1 0 0 0 0 228 1 1 1 0 0 1 0 0 X X X X 0 0 1 0 0 0 229 1 1 1 0 0 1 0 1 X X X X 0 1 0 0 0 0 230 1 1 1 0 0 1 1 0 X X X X 0 1 0 0 0 0 231 1 1 1 0 0 1 1 1 X X X X 0 0 0 1 0 0 232 1 1 1 0 1 0 0 0 X X X X 0 0 1 0 1 0 233 1 1 1 0 1 0 0 1 X X X X 0 0 1 0 0 1 234 1 1 1 0 1 0 1 0 X X X X 0 1 0 0 0 0 235 1 1 1 0 1 0 1 1 X X X X 0 0 1 0 1 1 236 1 1 1 0 X X X X X X X X X X X X X X 237 1 1 1 0 X X X X X X X X X X X X X X 238 1 1 1 0 X X X X X X X X X X X X X X 239 1 1 1 0 X X X X X X X X X X X X X X 240 1 1 1 1 0 0 0 0 X X X X 1 0 0 0 0 0 241 1 1 1 1 0 0 0 1 X X X X 0 1 0 0 0 0 242 1 1 1 1 0 0 1 0 X X X X 0 1 0 0 0 0 243 1 1 1 1 0 0 1 1 X X X X 0 1 0 0 0 0 244 1 1 1 1 0 1 0 0 X X X X 0 0 1 0 0 0 245 1 1 1 1 0 1 0 1 X X X X 0 1 0 0 0 0 246 1 1 1 1 0 1 1 0 X X X X 0 1 0 0 0 0 247 1 1 1 1 0 1 1 1 X X X X 0 0 0 1 0 0 248 1 1 1 1 1 0 0 0 X X X X 0 0 1 0 1 0 249 1 1 1 1 1 0 0 1 X X X X 0 0 1 0 0 1 250 1 1 1 1 1 0 1 0 X X X X 0 1 0 0 0 0 251 1 1 1 1 1 0 1 1 X X X X 0 0 1 0 1 1 252 1 1 1 1 X X X X X X X X X X X X X X 253 1 1 1 1 X X X X X X X X X X X X X X 254 1 1 1 1 X X X X X X X X X X X X X X 255 1 1 1 1 X X X X X X X X X X X X X X Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 189

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Στον πίνακα μεταβάσεων βλέπουμε τις επόμενες καταστάσεις των D flip-flop για κάθε συνδυασμό παρούσας κατάστασης-εισόδου. Η τιμή της εισόδου διέγερσης είναι ίδια με την τιμή της επόμενης κατάστασης ενός D flip-flop. Έτσι οι τιμές στον πίνακα μεταβάσεων δίνουν τις απαιτούμενες διεγέρσεις των D flip-flop, όπως φαίνονται στον πίνακα διεγέρσεων 3.3.3.4: Πίνακας 3.3.3.4 Πίνακας διεγέρσεων Δεκ. Πρωτεύουσα Παρούσα Επόμενη Δευτερεύουσες Πρωτεύουσες είσοδος κατάσταση κατάσταση έξοδοι έξοδοι X 1 X 2 X 3 X 4 Q A Q B Q C Q D Q + A Q + B Q + + C Q D D A D B D C D D Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 3 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 4 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 5 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 6 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 7 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 8 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 9 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 10 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 11 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 12 0 0 0 0 X X X X X X X X X X X X X X X X X X 13 0 0 0 0 X X X X X X X X X X X X X X X X X X 14 0 0 0 0 X X X X X X X X X X X X X X X X X X 15 0 0 0 0 X X X X X X X X X X X X X X X X X X 16 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 17 0 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 18 0 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 19 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 20 0 0 0 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 21 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 22 0 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 23 0 0 0 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 24 0 0 0 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 25 0 0 0 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 26 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 27 0 0 0 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 28 0 0 0 1 X X X X X X X X X X X X X X X X X X 29 0 0 0 1 X X X X X X X X X X X X X X X X X X 30 0 0 0 1 X X X X X X X X X X X X X X X X X X 31 0 0 0 1 X X X X X X X X X X X X X X X X X X 32 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 33 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 34 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 35 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 36 0 0 1 0 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 37 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 38 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 39 0 0 1 0 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 40 0 0 1 0 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 41 0 0 1 0 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 42 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 43 0 0 1 0 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 44 0 0 1 0 X X X X X X X X X X X X X X X X X X Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 190

Πτυχιακή Εργασία 45 0 0 1 0 X X X X X X X X X X X X X X X X X X 46 0 0 1 0 X X X X X X X X X X X X X X X X X X 47 0 0 1 0 X X X X X X X X X X X X X X X X X X 48 0 0 1 1 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 49 0 0 1 1 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 50 0 0 1 1 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 51 0 0 1 1 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 52 0 0 1 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 53 0 0 1 1 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 54 0 0 1 1 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 55 0 0 1 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 56 0 0 1 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 57 0 0 1 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 58 0 0 1 1 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 59 0 0 1 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 60 0 0 1 1 X X X X X X X X X X X X X X X X X X 61 0 0 1 1 X X X X X X X X X X X X X X X X X X 62 0 0 1 1 X X X X X X X X X X X X X X X X X X 63 0 0 1 1 X X X X X X X X X X X X X X X X X X 64 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 65 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 66 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 67 0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 68 0 1 0 0 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 69 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 70 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 71 0 1 0 0 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 72 0 1 0 0 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 73 0 1 0 0 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 74 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 75 0 1 0 0 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 76 0 1 0 0 X X X X X X X X X X X X X X X X X X 77 0 1 0 0 X X X X X X X X X X X X X X X X X X 78 0 1 0 0 X X X X X X X X X X X X X X X X X X 79 0 1 0 0 X X X X X X X X X X X X X X X X X X 80 0 1 0 1 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 81 0 1 0 1 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 82 0 1 0 1 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 83 0 1 0 1 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 84 0 1 0 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 85 0 1 0 1 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 86 0 1 0 1 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 87 0 1 0 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 88 0 1 0 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 89 0 1 0 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 90 0 1 0 1 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 91 0 1 0 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 92 0 1 0 1 X X X X X X X X X X X X X X X X X X 93 0 1 0 1 X X X X X X X X X X X X X X X X X X 94 0 1 0 1 X X X X X X X X X X X X X X X X X X 95 0 1 0 1 X X X X X X X X X X X X X X X X X X 96 0 1 1 0 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 97 0 1 1 0 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 98 0 1 1 0 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 99 0 1 1 0 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 100 0 1 1 0 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 101 0 1 1 0 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 102 0 1 1 0 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 103 0 1 1 0 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 191

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 104 0 1 1 0 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 105 0 1 1 0 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 106 0 1 1 0 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 107 0 1 1 0 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 108 0 1 1 0 X X X X X X X X X X X X X X X X X X 109 0 1 1 0 X X X X X X X X X X X X X X X X X X 110 0 1 1 0 X X X X X X X X X X X X X X X X X X 111 0 1 1 0 X X X X X X X X X X X X X X X X X X 112 0 1 1 1 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 113 0 1 1 1 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 114 0 1 1 1 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 115 0 1 1 1 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 116 0 1 1 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 117 0 1 1 1 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 118 0 1 1 1 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 119 0 1 1 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 120 0 1 1 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 121 0 1 1 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 122 0 1 1 1 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 123 0 1 1 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 124 0 1 1 1 X X X X X X X X X X X X X X X X X X 125 0 1 1 1 X X X X X X X X X X X X X X X X X X 126 0 1 1 1 X X X X X X X X X X X X X X X X X X 127 0 1 1 1 X X X X X X X X X X X X X X X X X X 128 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 129 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 130 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 131 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 132 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 133 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 134 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 135 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 136 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 137 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 138 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 139 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 140 1 0 0 0 X X X X X X X X X X X X X X X X X X 141 1 0 0 0 X X X X X X X X X X X X X X X X X X 142 1 0 0 0 X X X X X X X X X X X X X X X X X X 143 1 0 0 0 X X X X X X X X X X X X X X X X X X 144 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 145 1 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 146 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 147 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 148 1 0 0 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 149 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 150 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 151 1 0 0 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 152 1 0 0 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 153 1 0 0 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 154 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 155 1 0 0 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 156 1 0 0 1 X X X X X X X X X X X X X X X X X X 157 1 0 0 1 X X X X X X X X X X X X X X X X X X 158 1 0 0 1 X X X X X X X X X X X X X X X X X X 159 1 0 0 1 X X X X X X X X X X X X X X X X X X 160 1 0 1 0 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 161 1 0 1 0 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 162 1 0 1 0 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 192

Πτυχιακή Εργασία 163 1 0 1 0 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 164 1 0 1 0 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 165 1 0 1 0 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 166 1 0 1 0 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 167 1 0 1 0 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 168 1 0 1 0 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 169 1 0 1 0 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 170 1 0 1 0 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 171 1 0 1 0 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 172 1 0 1 0 X X X X X X X X X X X X X X X X X X 173 1 0 1 0 X X X X X X X X X X X X X X X X X X 174 1 0 1 0 X X X X X X X X X X X X X X X X X X 175 1 0 1 0 X X X X X X X X X X X X X X X X X X 176 1 0 1 1 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 177 1 0 1 1 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 178 1 0 1 1 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 179 1 0 1 1 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 180 1 0 1 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 181 1 0 1 1 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 182 1 0 1 1 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 183 1 0 1 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 184 1 0 1 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 185 1 0 1 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 186 1 0 1 1 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 187 1 0 1 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 188 1 0 1 1 X X X X X X X X X X X X X X X X X X 189 1 0 1 1 X X X X X X X X X X X X X X X X X X 190 1 0 1 1 X X X X X X X X X X X X X X X X X X 191 1 0 1 1 X X X X X X X X X X X X X X X X X X 192 1 1 0 0 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 193 1 1 0 0 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 194 1 1 0 0 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 195 1 1 0 0 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 196 1 1 0 0 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 197 1 1 0 0 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 198 1 1 0 0 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 199 1 1 0 0 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 200 1 1 0 0 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 201 1 1 0 0 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 202 1 1 0 0 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 203 1 1 0 0 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 204 1 1 0 0 X X X X X X X X X X X X X X X X X X 205 1 1 0 0 X X X X X X X X X X X X X X X X X X 206 1 1 0 0 X X X X X X X X X X X X X X X X X X 207 1 1 0 0 X X X X X X X X X X X X X X X X X X 208 1 1 0 1 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 209 1 1 0 1 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 210 1 1 0 1 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 211 1 1 0 1 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 212 1 1 0 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 213 1 1 0 1 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 214 1 1 0 1 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 215 1 1 0 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 216 1 1 0 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 217 1 1 0 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 218 1 1 0 1 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 219 1 1 0 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 220 1 1 0 1 X X X X X X X X X X X X X X X X X X 221 1 1 0 1 X X X X X X X X X X X X X X X X X X Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 193

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής 222 1 1 0 1 X X X X X X X X X X X X X X X X X X 223 1 1 0 1 X X X X X X X X X X X X X X X X X X 224 1 1 1 0 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 225 1 1 1 0 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 226 1 1 1 0 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 227 1 1 1 0 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 228 1 1 1 0 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 229 1 1 1 0 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 230 1 1 1 0 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 231 1 1 1 0 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 232 1 1 1 0 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 233 1 1 1 0 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 234 1 1 1 0 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 235 1 1 1 0 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 236 1 1 1 0 X X X X X X X X X X X X X X X X X X 237 1 1 1 0 X X X X X X X X X X X X X X X X X X 238 1 1 1 0 X X X X X X X X X X X X X X X X X X 239 1 1 1 0 X X X X X X X X X X X X X X X X X X 240 1 1 1 1 0 0 0 0 X X X X X X X X 1 0 0 0 0 0 241 1 1 1 1 0 0 0 1 X X X X X X X X 0 1 0 0 0 0 242 1 1 1 1 0 0 1 0 X X X X X X X X 0 1 0 0 0 0 243 1 1 1 1 0 0 1 1 X X X X X X X X 0 1 0 0 0 0 244 1 1 1 1 0 1 0 0 X X X X X X X X 0 0 1 0 0 0 245 1 1 1 1 0 1 0 1 X X X X X X X X 0 1 0 0 0 0 246 1 1 1 1 0 1 1 0 X X X X X X X X 0 1 0 0 0 0 247 1 1 1 1 0 1 1 1 X X X X X X X X 0 0 0 1 0 0 248 1 1 1 1 1 0 0 0 X X X X X X X X 0 0 1 0 1 0 249 1 1 1 1 1 0 0 1 X X X X X X X X 0 0 1 0 0 1 250 1 1 1 1 1 0 1 0 X X X X X X X X 0 1 0 0 0 0 251 1 1 1 1 1 0 1 1 X X X X X X X X 0 0 1 0 1 1 252 1 1 1 1 X X X X X X X X X X X X X X X X X X 253 1 1 1 1 X X X X X X X X X X X X X X X X X X 254 1 1 1 1 X X X X X X X X X X X X X X X X X X 255 1 1 1 1 X X X X X X X X X X X X X X X X X X Στο επόμενο βήμα σχεδιάζονται οι πίνακες Karnaugh για τις πρωτεύουσες και δευτερεύουσες εξόδους, οι οποίοι συμπληρώνονται με βάση τον πίνακα διεγέρσεων 3.3.3.4. και παίρνονται οι ελάχιστες συναρτήσεις. Στην περίπτωσή μας όμως επειδή οι πρωτεύουσες είσοδοι και οι παρούσες καταστάσεις είναι οχτώ συνολικά, απαιτούνται δεκαέξι πίνακες Karnaugh για κάθε πρωτεύουσα είσοδο και δευτερεύουσα έξοδο. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 194

Πτυχιακή Εργασία Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Η εφαρμογή μας θα υλοποιηθεί με έναν τρόπο δια μέσου κώδικα VHDL. Ο τρόπος που θα προγραμματιστεί η εφαρμογή είναι με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY vending5020101r IS PORT (CLOCK, RESET, FIFTY, TWENTY, TEN:IN STD_LOGIC; READY,DISPENSE,RET,COIN,REST20,REST10 :OUT STD_LOGIC); END ENTITY vending5020101r; ARCHITECTURE ASM OF vending5020101r IS TYPE STATE_TYPE IS(A,B, C, D, E, F, G, H, I, J, K, L); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; BEGIN SEQ: PROCESS (CLOCK) IS BEGIN IF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <=NEXT_STATE ; END PROCESS SEQ; COM: PROCESS(RESET,FIFTY,TWENTY,TEN,PRESENT_STATE)IS BEGIN READY <= '0'; DISPENSE <= '0'; RET <= '0'; COIN <= '0'; REST20 <= '0'; REST10 <= '0'; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= B; ELSIF (TWENTY = '1') THEN NEXT_STATE <= C; ELSIF (TEN = '1') THEN NEXT_STATE <= D; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 195

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής ELSIF (RESET = '0') THEN NEXT_STATE <= A; ELSE NEXT_STATE <= A; WHEN B => COIN <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= L; ELSIF (TWENTY = '1') THEN NEXT_STATE <= E; ELSIF (TEN = '1') THEN NEXT_STATE <= K; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= B; WHEN C => COIN <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= E; ELSIF (TWENTY = '1') THEN NEXT_STATE <= F; ELSIF (TEN = '1') THEN NEXT_STATE <= G; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= C; WHEN D => COIN <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= K; ELSIF (TWENTY = '1') THEN NEXT_STATE <= G; ELSIF (TEN = '1') THEN NEXT_STATE <= C; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= D; WHEN E => DISPENSE <= '1'; NEXT_STATE <= A; WHEN F => COIN <= '1'; IF (FIFTY = '0') Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 196

Πτυχιακή Εργασία THEN NEXT_STATE <= I; ELSIF (TWENTY = '1') THEN NEXT_STATE <= K; ELSIF (TEN = '1') THEN NEXT_STATE <= B; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= F; WHEN G => COIN <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= J; ELSIF (TWENTY = '1') THEN NEXT_STATE <= B; ELSIF (TEN = '1') THEN NEXT_STATE <= F; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= G; WHEN H => RET <= '1'; NEXT_STATE <= A; WHEN I => DISPENSE <= '1'; REST20 <='1'; NEXT_STATE <= A; WHEN J => DISPENSE <= '1'; REST10 <='1'; NEXT_STATE <= A; WHEN K => COIN <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= I; ELSIF (TWENTY = '1') THEN NEXT_STATE <= J; ELSIF (TEN = '1') THEN NEXT_STATE <= E; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= K; WHEN L => DISPENSE <= '1'; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 197

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής REST20 <= '1'; REST10 <='1'; NEXT_STATE <= A; END CASE; END PROCESS COM; END ARCHITECTURE ASM; Το αποτέλεσμα προσομοίωσης του κώδικα φαίνεται στο Σχήμα.3.3.3.3 Η προσομοίωση που δημιουργήθηκε από το Waveform Editor του MAXPLUS II είναι ένας τρόπος για να παρουσιαστούν κάποιες καταστάσεις για την εισαγωγή κερμάτων στον αυτόματο πωλητή αναψυκτικού. Εδώ, όμως, θα δείξουμε ενδεικτικά μερικές από αυτές. Σχήμα.3.3.3.3: Αποτελέσματα προσομοίωσης. Οι περιπτώσεις που δείχνουμε παραπάνω είναι με τη σειρά: 50 λεπτά - 20 λεπτά 50 λεπτά - 10 λεπτά - 10 λεπτά 20 λεπτά - 20 λεπτά - 20 λεπτά - 10 λεπτά 50 λεπτά - 50 λεπτά 20 λεπτά - 20 λεπτά - 20 λεπτά - 20 λεπτά 20 λεπτά - 20 λεπτά - 50 λεπτά Reset = 1 Εκτός από το διάγραμμα βαθμίδας που έχει απεικονιστεί στο Σχήμα.3.3.3.1 έχουμε και την απεικόνιση του Edit Sympol (Σχήμα.3.3.3.4), το οποίο αποτελεί τρόπο που αναπαριστά τη λειτουργική σχεδίαση των εισόδων και εξόδων. Σχήμα.3.3.3.4: Απεικόνιση λειτουργικής σχεδίασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 198

Πτυχιακή Εργασία Σχολιασμός Κώδικα 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. Όπως έχει επεξηγηθεί και σε προηγούμενες εφαρμογές οι δύο πρώτες γραμμές πρέπει να γράφονται γιατί χρησιμοποιείται μια μορφή σήματος STANDARD LOGIC, που είναι συμβατή με τις υπόλοιπες λειτουργίες των βιβλιοθηκών της ALTERA. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Με τη δεσμευμένη λέξη PORT δηλώνονται οι είσοδοι και οι έξοδοι του κυκλώματος, όπου η λέξη PORT ακολουθείται από το ENTITY. Τα σήματα εισόδου είναι CLOCK, RESET, FIFTY, TWENTY, TEN, ενώ τα σήματα εξόδου είναι READY, DISPENSE, RET, COIN, REST20, REST10. ENTITY vending5020101r IS PORT (CLOCK, RESET, FIFTY, TWENTY, TEN:IN STD_LOGIC; READY,DISPENSE,RET,COIN,REST20,REST10 :OUT STD_LOGIC); END ENTITY vending5020101r; Με τη δήλωση ARCHITECTURE ορίζεται η εσωτερική δομή της μονάδας.η λέξη κλειδί TYPE, ακολουθείται από το αντικείμενο δεδομένων STATE_TYPE. Το STATE_TYPE χρησιμοποιείται για να δηλώσει ονόματα καταστάσεων στα ακολουθιακά κυκλώματα. Στην προκειμένη περίπτωση έχουμε τις καταστάσεις A, B, C, D, E, F, G, H, I, J, K, L. Η SIGNAL ακολουθείται πάντα από το όνομα και τον τύπο του σήματος. Επιπλέον, η εντολή PROCESS περιλαμβάνει φωλιασμένες ακολουθιακές εντολές, οι οποίες εκτελούνται σειριακά από το μεταφραστή. Η λέξη PROCESS χρησιμοποιείται για να επιτρέψει την χρήση των εντολών IF και ELSE. Ακολουθεί η αρχικοποίηση των εξόδων αλλά και ο τρόπος που γίνεται η προτεραιότητα των εισόδων με την χρήση των εντολών WHEN και ELSE. Ενδεικτικά επεξηγείται μόνο η κατάσταση Α του STATE_TYPE. ARCHITECTURE ASM OF vending5020101r IS TYPE STATE_TYPE IS(A,B, C, D, E, F, G, H, I, J, K, L); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; BEGIN SEQ: PROCESS (CLOCK) IS BEGIN IF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <=NEXT_STATE ; END PROCESS SEQ; Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 199

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής COM: PROCESS(RESET,FIFTY,TWENTY,TEN,PRESENT_STATE)IS BEGIN READY <= '0'; DISPENSE <= '0'; RET <= '0'; COIN <= '0'; REST20 <= '0'; REST10 <= '0'; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (FIFTY = '0') THEN NEXT_STATE <= B; ELSIF (TWENTY = '1') THEN NEXT_STATE <= C; ELSIF (TEN = '1') THEN NEXT_STATE <= D; ELSIF (RESET = '0') THEN NEXT_STATE <= A; ELSE NEXT_STATE <= A; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 200

Πτυχιακή Εργασία 4 η Περίπτωση: 50λεπτα 20 λεπτά 10λεπτά 1 ποτό Ρέστα. Να σχεδιαστεί ένα ψηφιακό σύστημα ελέγχου, που θα ενεργοποιεί έναν αυτόματο πωλητή αναψυκτικού (vending machine). Το μηχάνημα θα εξάγει δύο είδη ποτών που το καθένα κοστίζει 70λεπτά. Οι είσοδοι του συστήματος είναι κέρματα των 50, 20 και 10λεπτών, που θα εισάγονται με αντίστοιχους συνδυασμούς για την ενεργοποίηση του μηχανήματος και την εξαγωγή του αναψυκτικού. Επίσης, υπάρχει η είσοδος reset, η οποία όταν πατηθεί θα επιστρέφει όλα τα χρήματα που έχουν εισαχθεί στο μηχάνημα. Και τέλος υπάρχει ένας διακόπτης, ο οποίος χρησιμοποιείται για την επιλογή του ποτού. Κατά τη λειτουργία του μηχανήματος ενεργοποιούνται εφτά έξοδοι Z 1 (ready), Z 2 (coin), Z 3 (dispensea), Z 4 (dispenseb), Z 5 (return), Z 6 (Resta20), Z 7 (Resta10). Διαδικασία Σχεδίασης: Στη παρούσα άσκηση έχουμε έναν αυτόματο πωλητή αναψυκτικών που διαθέτει 2 είδη ποτών. Το κάθε ποτό κοστίζει 70 λεπτά. Ο χρήστης κι εδώ έχει τη δυνατότητα να ρίξει στο μηχάνημα τριών ειδών κέρματα, 50, 20 και 10 λεπτά. Πριν εισαχθούν τα κέρματα, πατώντας έναν διακόπτη γίνεται η επιλογή του είδους ποτού που επιθυμεί ο χρήστης. Αν δοθούν ακριβώς τα χρήματα, τότε γίνεται η εξαγωγή του αντίστοιχου ποτού. Αν, για οποιονδήποτε λόγο, μπουν με συνδυασμό που θα ξεπερνούν τα 70 λεπτά, επιστρέφονται τα ρέστα που πρέπει κάθε φορά. Στην περίπτωση που θα βάλουμε δύο κέρματα των 50 λεπτών, θα πρέπει να δοθούν ρέστα 30 λεπτά( 20-10 λεπτά). Τέλος υπάρχει η δυνατότητα, με την επιλογή Reset, να επιστραφούν όλα τα χρήματα που εισάγει ο χρήστης και να μην συνεχιστεί καμία διαδικασία. Αυτό μπορεί να συμβεί στην περίπτωση που αλλάξει γνώμη και δεν θέλει να πάρει τελικά κανένα ποτό ή αν θέλει να αλλάξει το είδος ποτού. Στο Σχήμα 3.3.4.1 που θα ακολουθήσει παρουσιάζεται ένα διάγραμμα βαθμίδας των εισόδων και των εξόδων του αυτόματου πωλητή αναψυκτικού, που προκύπτουν από τις προδιαγραφές και τις απαιτήσεις του συστήματος. Είσοδος Χρημάτων Reset X 4 X 1-50λεπτά X 2-20λεπτά X 3-10λεπτά Ζ 2 Ζ 1 Ζ 7 Ζ 6 Ζ 5 Έτοιμο Για Την Είσοδο Χρημάτων Ρέστα 10 λεπτών Ρέστα 20 λεπτών Επιστροφή Χρημάτων Επιλογή Ποτού X 5 Ζ 3 Ζ 4 Έξοδος Ποτού A Έξοδος Ποτού B Σχήμα 3.3.4.1: Διάγραμμα βαθμίδας. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 201

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Με βάση το παραπάνω σχέδιο για τις εισόδους και τις εξόδους του συστήματος δημιουργείται το διάγραμμα καταστάσεων, όπως παρουσιάζεται στο Σχήμα 3.3.4.2 και φαίνονται όλες οι πιθανές καταστάσεις που μπορούν να υπάρξουν. 00001 00000, 00001, 00010 00010,00 011 00001 00000,00 001 00011 00001 P 00000 A 10000,10 001 I 01000,01 001 L 10000 H 00010,00 01000,01 00010,00 011 001 011 D 00000,00 001 00100,00 101 00100,00 101 00000 00010,00 011 00000 01000 10000 E C 00000,00 001 01000,01 001 00100, 00101 F 00010,00 011 00100, 00101 00010,00 011 00100, 00101 00100 J K G 10000,10 001 00000 10001 00000, B 00100, 00001 10001 00101 00000,00 01000 10000 001 10000 01001 01000,01 001 00101 01000, 00000, 01001 00001 10001 10001 01001 00000,00 001 10000 10001 00001 M N O Σχήμα 3.3.4.2: Διάγραμμα καταστάσεων. Για διευκόλυνση στη σύνταξη των πινάκων της άσκησης θα αντικαταστήσουμε τις ονομασίες των εξόδων με μεταβλητές. Επομένως θα έχουμε: Z 1 = Ready Z 2 = Coin Z 3 = Dispense Α Z 4 = Dispense Β Z 5 = Return Z 6 = Resta20 Z 7 = Resta10 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 202

Πτυχιακή Εργασία Με βάση το διάγραμμα και λαμβάνοντας υπόψη τα Z 1, Z 2, Z 3, Z 4, Z 5, Z 6, Z 7 συντάσσεται ο πίνακας καταστάσεων 3.3.4.1(μοντέλου moore): Πίνακας 3.3.4.1 Πίνακας καταστάσεων(μοντέλο moore) Παρ. Κατ. Είσοδος X 1, X 2, X 3, X 4,X 5 Έξοδοι Q 00000 10000 01000 00100 00010 00001 10001 01001 00101 00011 Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 7 A A B C D A A B C D H 1 0 0 0 0 0 0 B B L E K H B P M K H 0 1 0 0 0 0 0 C C E F G H C M F G H 0 1 0 0 0 0 0 D D K G C H D K G C H 0 1 0 0 0 0 0 E A XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 0 0 F F I K B H F N K B H 0 1 0 0 0 0 0 G G J B F H G O B F H 0 1 0 0 0 0 0 H A XXXXX XXXXX XXXXX XXXXX A XXXXX XXXXX XXXXX XXXXX 0 0 0 0 1 0 0 I A XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 1 0 J A XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 0 1 K K I J E H K N O M H 0 1 0 0 0 0 0 L A XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 1 1 M XXXXX XXXXX XXXXX XXXXX XXXXX A XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 0 0 N XXXXX XXXXX XXXXX XXXXX XXXXX A XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 1 0 O XXXXX XXXXX XXXXX XXXXX XXXXX A XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 0 1 P XXXXX XXXXX XXXXX XXXXX XXXXX A XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 1 1 Για τις εισόδους X 1, X 2, X 3, X 4,X 5 υπάρχουν κι άλλοι συνδυασμοί καταστάσεων οι οποίοι αντιστοιχούν στις παρούσες καταστάσεις Q. Οι συνδυασμοί αυτοί, όμως, είναι αδιάφοροι όροι κι έτσι δεν αναγράφονται στον πίνακα. Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 203

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Για να παρασταθούν οι καταστάσεις A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P απαιτούνται τέσσερις μεταβλητές Q A Q B Q C Q D Άρα, απαιτούνται και τέσσερα flip - flop. Στη συγκεκριμένη περίπτωση χρησιμοποιούμε D flip - flop, τα D A, D B, D C και D D. Ο τρόπος με τον οποίο εκχωρούνται δυαδικοί συνδυασμοί στις καταστάσεις ενός κυκλώματος, επηρεάζει την πολυπλοκότητα του συνδυαστικού μέρους του κυκλώματος. Στη συνέχεια θα δείξουμε πως θα εκχωρήσουμε τις μεταβλητές Q A Q B Q C.Q D στις καταστάσεις A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P: A: Q A 0 B: Q A 0 C: Q A 0 D: Q A 0 E: Q A 0 Q B 0 Q B 0 Q B 0 Q B 0 Q B 1 Q C 0 Q C 0 Q C 1 Q C 1 Q C 0 Q D 0 Q D 1 Q D 0 Q D 1 Q D 0 F: Q A 0 G: Q A 0 H: Q A 0 I: Q A 1 J: Q A 1 Q B 1 Q B 1 Q B 1 Q B 0 Q B 0 Q C 0 Q C 1 Q C 1 Q C 0 Q C 0 Q D 1 Q D 0 Q D 1 Q D 0 Q D 1 K: Q A 1 L: Q A 1 M: Q A 1 N: Q A 1 O: Q A 1 Q B 0 Q B 0 Q B 1 Q B 1 Q B 1 Q C 1 Q C 1 Q C 0 Q C 0 Q C 1 Q D 0 Q D 1 Q D 0 Q D 1 Q D 0 P: Q A 1 Q B 1 Q C 1 Q D 1 Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 204

Πτυχιακή Εργασία Σύμφωνα με τις παραπάνω εκχωρήσεις στις μεταβλητές Q A Q B Q C Q D, ο πίνακας καταστάσεων του συστήματος μετατρέπεται όπως φαίνεται στον πίνακα 3.3.4.2: Πίνακας 3.3.4.2 Πίνακας καταστάσεων Παρ. Κατ. Είσοδος X 1, X 2, X 3, X 4,X 5 Έξοδοι Q A Q B Q C Q D 00000 10000 01000 00100 00010 00001 10001 01001 00101 00011 Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 7 0000 0000 0001 0010 0011 0000 0000 0001 0010 0011 0111 1 0 0 0 0 0 0 0001 0001 1011 0100 1010 0111 0001 1111 1100 1010 0111 0 1 0 0 0 0 0 0010 0010 0100 0101 0110 0111 0010 1100 0101 0110 0111 0 1 0 0 0 0 0 0011 0011 1010 0110 0010 0111 0011 1010 0110 0010 0111 0 1 0 0 0 0 0 0100 0000 XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 0 0 0101 0101 1000 1010 0001 0111 0101 1101 1010 0001 0111 0 1 0 0 0 0 0 0110 0110 1001 0001 0101 0111 0110 1110 0001 0101 0111 0 1 0 0 0 0 0 0111 0000 XXXXX XXXXX XXXXX XXXXX 0000 XXXXX XXXXX XXXXX XXXXX 0 0 0 0 1 0 0 1000 0000 XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 1 0 1001 0000 XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 0 1 1010 1010 1000 1001 0100 0111 1010 1101 1110 1100 0111 0 1 0 0 0 0 0 1011 0000 XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX 0 0 1 0 0 1 1 1100 XXXXX XXXXX XXXXX XXXXX XXXXX 0000 XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 0 0 1101 XXXXX XXXXX XXXXX XXXXX XXXXX 0000 XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 1 0 1110 XXXXX XXXXX XXXXX XXXXX XXXXX 0000 XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 0 1 1111 XXXXX XXXXX XXXXX XXXXX XXXXX 0000 XXXXX XXXXX XXXXX XXXXX 0 0 0 1 0 1 1 Σχεδίαση Εφαρμογών Ψηφιακών Συστημάτων Με Τη Γλώσσα VHDL 205

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Εισαγωγή σχεδίασης δια μέσου κώδικα VHDL: Ο τρόπος που θα υλοποιηθεί η εφαρμογή είναι δια μέσου κώδικα VHDLκαι θα προγραμματιστεί με την βοήθεια των πινάκων αληθείας. 1 ος Τρόπος: Υλοποίηση με τους πίνακες αληθείας. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY vending5020102r IS PORT(CLOCK, RESET, FIFTY, TWENTY, TEN, CAN :IN STD_LOGIC; READY,DISPENSEA,DISPENSEB,RET,COIN,REST20,REST10 :OUT STD_LOGIC); END ENTITY vending5020102r; ARCHITECTURE asm OF vending5020102r IS TYPE STATE_TYPE IS (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P); SIGNAL PRESENT_STATE, NEXT_STATE : STATE_TYPE; BEGIN SEQ: PROCESS (CLOCK) IS BEGIN IF (RISING_EDGE(CLOCK)) THEN PRESENT_STATE <=NEXT_STATE ; END PROCESS SEQ; COM:PROCESS(RESET,FIFTY,TWENTY,TEN,CAN,PRESENT_STATE)IS BEGIN READY <= '0'; DISPENSEA <= '0'; DISPENSEB <= '0'; RET <= '0'; COIN <= '0'; REST20 <= '0'; REST10 <= '0'; CASE PRESENT_STATE IS WHEN A => READY <= '1'; IF (CAN= '0' OR CAN ='1')THEN IF (FIFTY = '1') Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 206

Πτυχιακή Εργασία THEN NEXT_STATE <= B; ELSIF (TWENTY = '1') THEN NEXT_STATE <= C; ELSIF (TEN = '1') THEN NEXT_STATE <= D; ELSIF (RESET = '0') THEN NEXT_STATE <= A; ELSE NEXT_STATE <= A; WHEN B => COIN <= '1'; IF (CAN= '0') THEN IF (FIFTY = '1') THEN NEXT_STATE <= L; ELSIF (TWENTY = '1') THEN NEXT_STATE <= E; ELSIF (TEN = '1') THEN NEXT_STATE <= K; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= B; ELSE IF (FIFTY = '1') THEN NEXT_STATE <= P; ELSIF (TWENTY = '1') THEN NEXT_STATE <= M; ELSIF (TEN = '1') THEN NEXT_STATE <= K; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= B; WHEN C => COIN <= '1'; IF (CAN= '0') THEN IF (FIFTY = '1') THEN NEXT_STATE <= E; ELSIF (TWENTY = '1') THEN NEXT_STATE <= F; ELSIF (TEN = '1') THEN NEXT_STATE <= G; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= C; ELSE Σχεδίαση Ψηφιακών Συστημάτων Με Γλώσσα VHDL 207

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής IF (FIFTY = '1') THEN NEXT_STATE <= M; ELSIF (TWENTY = '1') THEN NEXT_STATE <= F; ELSIF (TEN = '1') THEN NEXT_STATE <= G; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= C; WHEN D => COIN <= '1'; IF (CAN= '0') THEN IF (FIFTY = '1') THEN NEXT_STATE <= K; ELSIF (TWENTY = '1') THEN NEXT_STATE <= G; ELSIF (TEN = '1') THEN NEXT_STATE <= C; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= D; ELSE IF (FIFTY = '1') THEN NEXT_STATE <= K; ELSIF (TWENTY = '1') THEN NEXT_STATE <= G; ELSIF (TEN = '1') THEN NEXT_STATE <= C; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= D; WHEN E => DISPENSEA <= '1'; NEXT_STATE <= A; WHEN F => COIN <= '1'; IF (CAN= '0') THEN IF (FIFTY = '1') THEN NEXT_STATE <= I; ELSIF (TWENTY = '1') THEN NEXT_STATE <= K; ELSIF (TEN = '1') Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 208

Πτυχιακή Εργασία THEN NEXT_STATE <= B; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= F; ELSE IF (FIFTY = '1') THEN NEXT_STATE <= N; ELSIF (TWENTY = '1') THEN NEXT_STATE <= K; ELSIF (TEN = '1') THEN NEXT_STATE <= B; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= F; WHEN G => COIN <= '1'; IF (CAN= '0') THEN IF (FIFTY = '1') THEN NEXT_STATE <= J; ELSIF (TWENTY = '1') THEN NEXT_STATE <= B; ELSIF (TEN = '1') THEN NEXT_STATE <= F; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= G; ELSE IF (FIFTY = '1') THEN NEXT_STATE <= O; ELSIF (TWENTY = '1') THEN NEXT_STATE <= B; ELSIF (TEN = '1') THEN NEXT_STATE <= F; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= G; WHEN H => RET <= '1'; NEXT_STATE <= A; WHEN I => DISPENSEA <= '1'; Σχεδίαση Ψηφιακών Συστημάτων Με Γλώσσα VHDL 209

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής REST20 <='1'; NEXT_STATE <= A; WHEN J => DISPENSEA <= '1'; REST10 <='1'; NEXT_STATE <= A; WHEN K => COIN <= '1'; IF (CAN= '0') THEN IF (FIFTY = '1') THEN NEXT_STATE <= I; ELSIF (TWENTY = '1') THEN NEXT_STATE <= J; ELSIF (TEN = '1') THEN NEXT_STATE <= E; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= K; ELSE IF (FIFTY = '1') THEN NEXT_STATE <= N; ELSIF (TWENTY = '1') THEN NEXT_STATE <= O; ELSIF (TEN = '1') THEN NEXT_STATE <= F; ELSIF (RESET = '0') THEN NEXT_STATE <= H; ELSE NEXT_STATE <= K; WHEN L => DISPENSEA <= '1'; REST20 <= '1'; REST10 <='1'; NEXT_STATE <= A; WHEN M => DISPENSEB <= '1'; NEXT_STATE <= A; WHEN N => DISPENSEB <= '1'; REST20 <='1'; NEXT_STATE <= A; Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 210

Πτυχιακή Εργασία END CASE; END PROCESS COM; END ARCHITECTURE asm; WHEN O => DISPENSEB <= '1'; REST10 <='1'; NEXT_STATE <= A; WHEN P => DISPENSEB <= '1'; REST20 <= '1'; REST10 <='1'; NEXT_STATE <= A; Το αποτέλεσμα προσομοίωσης του κώδικα φαίνεται παρακάτω. Εδώ θα παρουσιάσουμε δύο διαφορετικά Waveform Editor. Το πρώτο παρουσιάζει τη διαδικασία που γίνεται όταν έχουμε επιλέξει το πρώτο ποτό (CAN = 0, Σχήμα. 3.3.4.3), ενώ το δεύτερο όταν επιλέγουμε το δεύτερο ποτό (CAN =1, Σχήμα. 3.3.4.4). Στη προσομοίωση παρουσιάζονται όλες οι περιπτώσεις που μπορούν να εκτελεστούν. Εδώ όμως θα δείξουμε ενδεικτικά μερικές από αυτές. CAN =0 Σχήμα 3.3.4.3: Αποτελέσματα προσομοίωσης. Οι περιπτώσεις που απεικονίζονται παραπάνω είναι με τη σειρά: 50 λεπτά - 20 λεπτά 50 λεπτά - 10 λεπτά - 10 λεπτά 20 λεπτά - 20 λεπτά - 20 λεπτά - 10 λεπτά 50 λεπτά - 50 λεπτά 20 λεπτά - 20 λεπτά - 20 λεπτά - 20 λεπτά 20 λεπτά - 20 λεπτά - 50 λεπτά Reset = 1 CAN = 0 Σχεδίαση Ψηφιακών Συστημάτων Με Γλώσσα VHDL 211

Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής CAN = 1 Σχήμα 3.3.4.4: Αποτελέσματα προσομοίωσης. Οι περιπτώσεις που δείχνουμε παραπάνω είναι με τη σειρά: 50 λεπτά - 20 λεπτά 50 λεπτά - 10 λεπτά - 10 λεπτά 20 λεπτά - 20 λεπτά - 20 λεπτά - 10 λεπτά 50 λεπτά - 50 λεπτά 20 λεπτά - 20 λεπτά - 20 λεπτά - 20 λεπτά 20 λεπτά - 20 λεπτά - 50 λεπτά Reset = 1 CAN = 1 Εκτός από το διάγραμμα βαθμίδας που έχει απεικονιστεί στο Σχήμα 3.3.4.1. έχουμε και την απεικόνιση του Edit Sympol (Σχήμα 3.3.4.5), το οποίο αποτελεί τρόπο που αναπαριστά τη λειτουργική σχεδίαση των εισόδων και εξόδων. Σχήμα 3.3.4.5: Απεικόνιση λειτουργικής σχεδίασης. Αναστασόπουλος Νεκτάριος - Δαρλαγιάννη Ιφιγένεια - Πετρίδη Ειρήνη 212