Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

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

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

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

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

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

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

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

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

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

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

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

1 Περίληψη Η εργασία έγινε στα πλαίσια του μαθήματος των Ψηφιακών Ηλεκτρονικών Συστημάτων με σκοπό αρχικά την εκμάθηση της γλώσσας VHDL (Very High Spe

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

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

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

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

Κυκλωμάτων» Χειμερινό εξάμηνο

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

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

Κυκλωμάτων» Χειμερινό εξάμηνο

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

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

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

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

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

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

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL

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

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

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ

Library, package και subprograms

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

VHDL Introduction. Subtitle

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

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

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής» Μεταπτυχιακή Διατριβή

Επιβεβαίωση ορθής λειτουργίας απλών ψηφιακών κυκλωμάτων

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

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

ΑΣΚΗΣΗ 9. Tα Flip-Flop

Structural VHDL. Structural VHDL

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

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

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών

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

ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ

Εισαγωγή στη σχεδιαστική ροή της Xilinx

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

Σχεδίαση Υπολογιστικών

Σχεδίαση της Μονάδας Ελέγχου

C D C D C D C D A B

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Ψηφιακή Λογική και Σχεδίαση

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

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

Πανεπιστήμιο Πατρών. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών

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

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

Ψηφιακά Κυκλώματα (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Συστήματα VLSI. Εισαγωγή. Γιώργος Δημητρακόπουλος. Δημοκρίτειο Πανεπιστήμιο Θράκης. Άνοιξη 2014

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Η κανονική μορφή της συνάρτησης που υλοποιείται με τον προηγούμενο πίνακα αληθείας σε μορφή ελαχιστόρων είναι η Q = [A].

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης Θέμα 1ο (3 μονάδες)

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET)

Άσκηση 3 Ένα νέο είδος flip flop έχει τον ακόλουθο πίνακα αληθείας : I 1 I 0 Q (t+1) Q (t) 1 0 ~Q (t) Κατασκευάστε τον πίνακα

ΗΥ220: Εργαστήριο σχεδίασης ψηφιακών κυκλωμάτων Χριστόφορος Κάχρης

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

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

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level)

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Ακολουθιακή Λογική. Επιμέλεια Διαφανειών: Δ.

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

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

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα

Ελίνα Μακρή

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Ψηφιακά Συστήματα. 6. Σχεδίαση Συνδυαστικών Κυκλωμάτων

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Σχεδιασμός Αποκωδικοποιητή και υλοποίηση του στο Logisim και στο Quartus. Εισαγωγή στο Logisim

Κεφάλαιο 6. Σύγχρονα και ασύγχρονα ακολουθιακά κυκλώματα

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Καταχωρητές και Μετρητές 2. Επιμέλεια Διαφανειών: Δ.

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

Περιεχόμενα. Πρόλογος... XI. Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA Κεφάλαιο 2. Τεχνολογία VLSI Εισαγωγή Βασικές Αρχές...

Οδηγίες εγκατάστασης και χρήσης του Quartus

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Transcript:

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Προσομοίωση ψηφιακών συστημάτων με χρήση VHDL: Μελέτη Βασικών Συνδυαστικών και Ακολουθιακών Κυκλωμάτων Ευρείας Χρήσης Του φοιτητή: Χρήστου Σταυρόπουλου ΑΕΜ : 2290 Επιβλέπων Καθηγητής: Νικόλαος Κονοφάος Θεσσαλονίκη,Φεβρουάριος, 2017

Ευχαριστίες Καταρχήν θα ήθελα να ευχαριστήσω τον επιβλέπων καθηγητή μου Νικόλαο Κονοφάο για την βοήθεια που μου παρείχε για την ομαλή εκπόνηση της πτυχιακής καθώς και όλους τους καθηγητές μου στο τμήμα της Πληροφορικής για τα εφόδια που μου έδωσαν. Την οικογένειά και του φίλους μου που με υποστήριξαν καθ' όλη την διάρκεια της συγγραφής της πτυχιακής μου εργασίας.

Περίληψη Στόχος της πτυχιακής εργασίας είναι η μελέτη της γλώσσας προγραμματισμού VHDL και η περιγραφή και ανάπτυξη κάποιων βασικών κυκλωμάτων. Τα κυκλώματα που θα ακολουθήσουν είναι βασικά, αλλά η λειτουργεία τους παραμένει να είναι σημαντική εδώ και πολλά χρόνια στο χώρο της βιομηχανίας. Αυτά είναι η ανάπτυξη μίας συνάρτησης, ένας LED decoder, ένας μετρητής σε συνδυασμό με τη χρήση του LED decoder, ένας πλήρης αθροιστής 3-bit, ένας πολυπλέκτης 4 σε 1, ένα D Flip-Flop, μια ALU και δυο μηχανές πεπερασμένων καταστάσεων. Τα συστήματα ανάπτυξης Xilinx είναι διαθέσιμα σε διάφορες εύχρηστες μορφές, συλλογικά γνωστές ως ενσωματωμένη σειρά περιβάλλοντος λογισμικού (Integrated Software Environment - ISE). Όλα τα παραπάνω κυκλώματα υλοποιήθηκαν στο περιβάλλον ISE Design Suite 14.5 που παρέχει η εταιρία Xilinx.

Abstract This aim of this thesis is to showcase a part of the process of digital circuit design. For that to happen, the study of the programming language VHDL is imperative. Also, seven circuits are described, developed and simulated. Although, the circuits that follow are simple, their functionality remains important in the industry after many years. The circuits implemented, consist of a function, a LED decoder, a counter in conjunction with the use of the LED decoder, a 3-bit full adder, a 4 to 1 multiplexer, a D Flip-Flop and a finite state machine. The Xilinx development systems are available in several convenient forms, also known as integrated software environment series (ISE). All circuits were implemented using the ISE Design Suite 14.5 provided by Xilinx.

Ευρετήριο Περιεχομένων ΚΕΦΑΛΑΙΟ 1 Εισαγωγή ΚΕΦΑΛΑΙΟ 2 2.1 Γενικά χαρακτηριστικά 2.1.1 Μοντέλο συμπεριφοράς (behavioral model) 2.1.2 Μοντέλο χρονισμού (timing model) 2.1.3 Μοντέλο δομής (structural model) 2.2 Βασικά χαρακτηριστικά 2.2.1 Δήλωση οντότητας 2.2.2 Κομμάτι αρχιτεκτονικής (architecture body) 2.3 Οργάνωση της σχεδίασης 2.3.1 Πακέτα (Packages) 2.4 Τύποι δεδομένων και αντικείμενα 2.5 Περιγραφή ροής δεδομένων ΚΕΦΑΛΑΙΟ 3 3.1 Η συνάρτηση 3.2 LED Decoder 3.3 Counter σε συνδυασμό με LED decoder 3.4 Πλήρης αθροιστής 3-bit 3.5 Πολυπλέκτης 4 σε 1 3.6 D Flip-Flop 3.7 Αριθμητική και Λογική Μονάδα (ALU) 3.8 Μηχανή πεπερασμένων καταστάσεων (FSM)

ΚΕΦΑΛΑΙΟ 4 4.1 Εγκατάσταση του περιβάλλοντος (set up) 4.2 Η συνάρτηση 4.3 LED Decoder 4.4 Counter σε συνδυασμό με LED Decoder 4.5 Πλήρης αθροιστής 3-bit 4.6 Πολυπλέκτης 4.7 D-Flip Flop 4.8 ALU 4.9 FSM 4.9.1 Moore 4.9.2 Mealy ΚΕΦΑΛΑΙΟ 5 5.1 ISim 5.2 Η συνάρτηση 5.3 LED Decoder 5.4 Counter σε συνδυασμό με LED Decoder 5.5 Πλήρης αθροιστής 3-bit 5.6 Πολυπλέκτης 4 σε 1 5.7 D-Flip Flop 5.8 ALU 5.9 FSM 5.9.1 Moore 5.9.1 Mealy 5.10 Συμπεράσματα ΚΕΦΑΛΑΙΟ 6 Βιβλιογραφία

1. Εισαγωγή Τον τελευταίο αιώνα, η τεχνολογία έχει πραγματοποιήσει τρομερά άλματα προς το μέλλον. Ο νόμος του Moore δίνει με μπορεί να περιγράψει εν συντομία την εξέλιξη των τεχνολογικών επιτευγμάτων και μας προϊδεάζει για το τι μας ε- πιφυλάσσει το μέλλον. Μέλλον που προμηνύεται ελπιδοφόρο για την καλυτέρευση της ποιότητας της ζωής πάνω στον πλανήτη μας. Στην σημερινή εποχή, πάνω από τα μισά νοικοκυριά του ανεπτυγμένου κόσμου διαθέτουν ηλεκτρονικό υπολογιστή, τηλεόραση, smartphones και πληθώρα άλλων τεχνολογικών εφαρμογών που δίνουν την δυνατότητα της αύξησης του βιοτικού επιπέδου. Αν και ένα μεγάλο μέρος του κόσμου μας είναι αμέτοχο σε αυτήν την έκρηξη της τεχνολογίας, όπως οι μη αναπτυσσόμενες χώρες, η αλματώδης εξέλιξη της τεχνολογίας και η αφοσίωση μερικών ανθρώπων υπόσχεται την αλλαγή αυτής της κατάστασης. Ο τομέας της προγραμματιζόμενης λογικής δεν θα μπορούσε να μείνει πίσω σε αυτήν την άνθηση. Από τις πρώτες συσκευές προγραμματιζόμενης λογικής που συστήθηκαν την δεκαετία του 70 με περιορισμένες δυνατότητες και εφαρμογής λειτουργιών, έχουμε φτάσει στην ανάπτυξη εμπορικών συσκευών FPGAs που έχουν περισσότερες από 5 εκατομμύρια λογικές πύλες. Συσκευές που μπορούν ακόμα να φιλοξενήσουν μια μικρογραφία επεξεργαστή, όπως του MicroBlaze της Xilinx. Ο σκληρός ανταγωνισμός των εταιριών που δραστηριοποιούνται σε αυτόν τον τομέα υπόσχεται την συνεχή και αδιάλειπτη τροφοδοσία της αγοράς με νέες, καλύτερες και γρηγορότερες προγραμματιζόμενες συσκευές. Είναι εμφανές ότι οι εξελίξεις αυτές δεν θα μπορούσαν, ούτε και θα έ- πρεπε, να μείνουν μακριά από την σπουδαστική και φοιτητική κοινότητα, αν θέλουμε να εξασφαλιστεί ο επαρκής εφοδιασμός των νέων παιδιών με γνώσεις και εμπειρίες που μεταβάλλονται διαρκώς. Πάνω σε αυτό είναι βασισμένη η παρούσα διπλωματική εργασία και παρουσιάζει μέσω εργαστηριακών ασκήσεων μερικά βασικά κυκλώματα που έχουν υλοποιηθεί στη γλώσσα VHDL.

2. Η γλώσσα VHDL 2.1 Γενικά χαρακτηριστικά Η δημιουργία της VHDL(Very High Speed Integrated Circuit) άρχισε το 1981 από το υπουργείο άμυνας των Ηνωμένων Πολιτειών και ολοκληρώθηκε το 1985. Η αποστολή ανατέθηκε σε μια ομάδα ατόμων που τότε δούλευαν για τις Intermetrics, IBM και Texas Instruments. Από τότε μέχρι σήμερα η γλώσσα έχει δεχτεί πολλές αλλαγές και αναβαθμίσεις σε διαφορετικές εκδόσεις, όπως οι VHDL 1993, 1997, 2000, 2002. Είναι μια γλώσσα περιγραφής ψηφιακού υλικού και χρησιμοποιείται στη βιομηχανία μέχρι σήμερα διεθνώς. Συγκεκριμένα, η VHDL δίνει τη δυνατότητα για σύνθεση, μοντελοποίηση και προσομοίωση ενός ψηφιακού συστήματος. Παρατηρείται ευρεία χρήση σε ASICs (application- specific integrated circuit), CPLDs (Complex Programmable Logic Devices), FPGAs (Field Programmable Gate Arrays) και πολλά άλλα. Το γενικό μοντέλο στο οποίο βασίζεται η VHDL αποτελείται από τρία ανεξάρτητα αλληλεξαρτώμενα μοντέλα : ένα μοντέλο συμπεριφοράς (behavioral model), ένα μοντέλο χρονισμού (timing model) και ένα μοντέλο δομής (structural model). 2.1.1 Μοντέλο συμπεριφοράς (behavioral model) Όλα τα μοντέλα έχουν μία δομή και μία συμπεριφορά. Στην VHDL η δομή ενσωματώνεται στην γλώσσα και ο σχεδιαστής έχει τη δυνατότητα να μπλέξει τη δομή και τη συμπεριφορά οπουδήποτε μέσα στο μοντέλο. Ένα διακριτό συστήματα είναι μία συλλογή λειτουργιών που εφαρμόζονται σε τιμές που περνάνε μέσα από το σύστημα. Στην VHDL αναφερόμαστε σε κάθε τέτοια εργασία ως διεργασία (process) και τα μονοπάτια από τα οποία οι τιμές περνάνε μέσα από το σύστημα ονομάζονται σήματα (signals). Επίσης, όλες οι διεργασίες σε ένα μοντέλο λέμε ότι εκτελούνται ταυτόχρονα. Έτσι, μπορούμε να πούμε ότι το μοντέλο της VHDL είναι μία συλλογή από ανεξάρτητα προγράμματα που τρέχουν παράλληλα. Για τον συντονισμό αυτών των διεργασιών χρειάζεται ένας μηχανισμός και αυτός ο μηχανισμός είναι το σήμα. Συγκεκριμένα, τα σήματα ορίζουν ένα μονοπάτι δεδομένων (data pathway) μεταξύ δύο διεργασιών. Αυτό το μονοπάτι δεδομένων είναι κατευθυνόμενο (directed), η μία πλευρά δημιουργεί μία τιμή και η άλλη λαμβάνει την τιμή αυτή. Γενικότερα, τα μονοπάτια δεδομένων έχουν κάποια

ειδικά χαρακτηριστικά όπως ο τύπος που συνδέεται με το μονοπάτι και ορίζει τη διακύμανση των τιμών που μπορούν να περάσουν από αυτό. Οι διεργασίες εκτελούνται μέχρι να τεθούν σε διαθεσιμότητα (suspended). Όταν μία διεργασία τεθεί σε διαθεσιμότητα μπορεί να ενεργοποιηθεί ξανά. Ένας τρόπος γι αυτήν την ενεργοποίηση είναι να ανατίθεται στην διεργασία μία μέγιστη χρονική διάρκεια για την οποία πρέπει να μείνει σε διαθεσιμότητα. Μετά το τέλος αυτής της χρονικής διάρκειας η διεργασία ενεργοποιείται. Ένας άλλος τρόπος ενεργοποίησης είναι ό- ταν κάποιες δεδομένες συνθήκες ικανοποιούνται. Έτσι ο σχεδιαστής του συστήματος μπορεί να καθορίσει την ενεργοποίηση μιας διαδικασίας όταν συμβούν αλλαγές στο σύστημα. Με άλλα λόγια μπορεί να εκφραστεί η ευαισθησία μιας διαδικασίας στην τιμή ορισμένων μονοπατιών δεδομένων. Αυτά τα μονοπάτια αποκαλούνται κανάλια ευαισθησίας (sensitivity channels). Όταν η τιμή ενός καναλιού ευαισθησίας αλλάζει τότε μία διεργασία ενεργοποιείται ξανά. Χρησιμοποιείται μία δήλωση αναμονής (wait statement) για να καθορίσει οποιεσδήποτε συνθήκες χρονικής αναμονής και κανάλια ευαισθησίας για μία διεργασία. Το διακριτό σύστημα που χρησιμοποιείται για να μοντελοποιηθεί μία ψηφιακή συσκευή περιλαμβάνεται μέσα σε μία σχεδιαστική οντότητα (design entity). Μία τέτοια οντότητα έχει δύο μέρη : μία δήλωση οντότητας και ένα σώμα αρχιτεκτονικής (architectural body) τα οποία θα δούμε αναλυτικότερα στη συνέχεια. 2.1.2 Μοντέλο χρονισμού (timing model) Επειδή η VHDL είναι παράλληλη, αλλά έχει σχεδιαστεί για να εκτελείται και σε μη-παράλληλα συστήματα, καθίσταται απαραίτητο να καθοριστεί ο χρόνος προσομοίωσης ο οποίος με τη σειρά του καθορίζει το πότε συμβαίνει κάποιο γεγονός κατά τη διάρκεια της προσομοίωσης. Αν δεν υπήρχε αυτός ο χρονικός καθορισμός ένα μοντέλο μπορεί να προσομοιώνονταν διαφορετικά σε δύο διαφορετικούς προσομοιωτές VHDL. Όταν λοιπόν μία διεργασία δημιουργεί μία τιμή σε ένα μονοπάτι δεδομένων μπορεί επίσης να προσδιορίζει ένα χρονικό διάστημα πριν να σταλεί η τιμή στο μονοπάτι αυτό. Αυτό αναφέρεται ως προγραμματισμός μιας συναλλαγής (scheduling a transaction). Είναι δυνατόν να προγραμματιστεί οποιοσδήποτε αριθμός συναλλαγών για ένα μονοπάτι δεδομένων. Η συλλογή αυτών των συναλλαγών για ένα σήμα αποκαλείται οδηγός του σήματος (driver of the signal). Ο οδηγός είναι ένα σύνολο από ζευγάρια χρόνων/τιμών το οποίο κρατά την τιμή κάθε συναλλαγής και τον χρόνο στον οποίο η συναλλαγή πρέπει να συμβεί. Η VHDL έχει ένα μοντέλο χρονισμού δύο επιπέδων. Αυτό το μοντέλο αποκαλείται κύκλος προσομοίωσης. Για παράδειγμα ένα λειτουργικό κομμάτι α- ντιδρά (reacts) όταν υπάρχει δραστηριοποίηση στις εισόδους του τότε ανταποκρίνεται (responds) μέσω των εξόδων του. Οι διεργασίες λοιπόν είναι τα λειτουργικά κομμάτια που συνδέονται με τα σήματα. Έτσι, στο πρώτο στάδιο του κύκλου προσομοίωσης οι τιμές διαδίδονται μέσω των μονοπατιών δεδομένων. Αυτό το στάδιο ολοκληρώνεται όταν όλα τα μονοπάτια δεδομένων για τα οποία έχει προγραμματιστεί να πάρουν τιμή ανανεώσουν τις τιμές τους. Κατά το δεύτερο στάδιο οι διεργασίες που λαμβάνουν τιμή στα κανάλια ευαισθησίας ενεργοποιούνται.

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

το ψηφιακό κύκλωμα αναφέρεται ως οντότητα (entity). Όταν όμως μία οντότητα Χ εμπεριέχεται μέσα σ μία οντότητα Υ τότε αυτή ονομάζεται στοιχείο (component). 2.2 Βασικά χαρακτηριστικά Στη συνέχεια, θα δούμε πως περιγράφουμε μία οντότητα και τα στοιχεία της. Κάθε οντότητα ή στοιχείο αποτελείται από την δήλωση της οντότητας (entity declaration) και το κομμάτι της αρχιτεκτονικής της οντότητας (architecture body). 2.2.1 Δήλωση οντότητας Η δήλωση της οντότητας (entity declaration) είναι το κομμάτι του κώδικα το οποίο δηλώνει το όνομα του συγκεκριμένου κυκλώματος και επίσης παραθέτει και μια λίστα με τις θύρες (ports) του κυκλώματος. Θύρες, θεωρούνται τα σήματα μέσω των οποίων το συγκεκριμένο entity επικοινωνεί με το εξωτερικό περιβάλλον (είσοδοι, έξοδοι, κ.ά.). Περιλαμβάνει μόνο τις διασυνδέσεις που έχει το κύκλωμα με άλλες βαθμίδες αλλά αποκρύπτει τη λειτουργία του κυκλώματος. Το αναγνωριστικό όνομα που δίνει ο σχεδιαστής στην οντότητα καθώς

και τα σήματα εισόδου και εξόδου είναι καθοριστικά για κάθε υλοποίηση τoυ κυκλώματος αυτού. 2.2.2 Κομμάτι αρχιτεκτονικής (architecture body) Οι εσωτερικές λεπτομέρειες του entity (δηλ. του κυκλώματος) δηλώνονται στον κύριο κορμό της σχεδίασης που είναι το κομμάτι της αρχιτεκτονικής. Περιλαμβάνει όλες τις λεπτομέρειες της λειτουργίας ενός κυκλώματος. Οι εντολές και οι δηλώσεις που περιλαμβάνονται στο σώμα της αρχιτεκτονικής περιγράφουν με ακρίβεια ποιες λογικές συναρτήσεις θα υλοποιεί το κύκλωμα και τι τιμές θα λαμβάνουν τα σήματα του κυκλώματος σε κάθε χρονική στιγμή. Κάθε statement στο architecture body εκτελείται παράλληλα, ε- κτός των statements που περικλείονται από process. 2.3 Οργάνωση της σχεδίασης Σχεδόν καμία σχεδίαση δεν είναι απόλυτα αυτόνομη. Πάντα θα γίνεται α- ναφορά σε κάποιο block το οποίο αναπαριστά ένα component ή έναν ορισμό. Αυτά μπορεί να είναι αποθηκευμένα στην ίδια βιβλιοθήκη με το παρόν σχέδιο ή σε κάποια ευρύτερη (global) βιβλιοθήκη. Επίσης κάθε βιβλιοθήκη χωρίζεται σε επιμέρους τμήματα, ανάλογα με τα είδη αναφορών που έχει. Στις περισσότερες περιπτώσεις, πριν το τμήμα της οντότητας θα πρέπει να δηλωθούν και κάποια πακέτα βιβλιοθηκών, που περιγράφουν τους τύπους δεδομένων ή υποκυκλώματα που χρησιμοποιεί ο σχεδιαστής. 2.3.1 Πακέτα (Packages) Ο ορισμός πακέτων χρησιμοποιείται για την αποθήκευση ενός συνόλου κοινών στοιχείων (components), διαδικασιών (procedures), συναρτήσεων (functions), types, subtypes κ.ά. τα οποία χρησιμοποιούνται από τον σχεδιαστή συχνά. Δήλωση πακέτων (package declaration) καθώς και τα πακέτα τα ίδια

(package body) είναι σχεδιαστικές μονάδες (design units), κατά συνέπεια μπορούν να κάνουν χρήση των δεδομένων άλλων πακέτων. Ένα έτοιμο, τυποποιημένο πακέτο που χρησιμοποιείται πολύ συχνά είναι το std_logic_1164 της βιβλιοθήκης ieee, το οποίο περιγράφει τον τύπο δεδομένων std_logic. 2.4 Τύποι δεδομένων και αντικείμενα Οτιδήποτε μπορεί να έχει μία τιμή (όπως ένα σήμα) είναι ένα αντικείμενο στην 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 και οι απαριθμητικοί τύποι δεδομένων Boolean, Bit, Severity_level και Character. Υπάρχουν τρεις κλάσεις αντικειμένων στην VHDL : τα σήματα (signals), οι μεταβλητές (variables) και οι σταθερές (constants). Τα σήματα και οι μεταβλητές μπορούν να αλλάξουν πολλές τιμές ενώ οι σταθερές παίρνουν τιμή μόνο μία φορά. Η διαφορά των σημάτων από τις μεταβλητές είναι ότι οι μεταβλητές παίρνουν τιμή αμέσως μόλις αυτή τους ανατίθεται ενώ τα σήματα μπορεί να πάρουν τιμή κάποια χρονική στιγμή μετά την ανάθεση. Ή γενικότερη μορφή της δήλωσης ενός αντικειμένου (object declaration) είναι η εξής: object-class identifier-list: subtype-indication signal-kind:= expression. Για παράδειγμα η δήλωση signal CLK, CLEAR : Bit := 0 ; ορίζει δύο σήματα (object-class), που έχουν ονόματα CLK και CLEAR (identifier-list), τα οποία μπορούν να πάρουν τιμές Bit (subtype-indication) και η αρχική προεπιλεγμένη τιμή τους είναι 0 (expression). Από την προηγούμενη δήλωση παρατηρούμε ότι λείπει το signal-kind το οποίο μπορεί να είναι είτε bus είτε register.

2.5 Περιγραφή ροής δεδομένων Γίνεται µε χρήση των λογικών τελεστών και ενός τελεστή ανάθεσης σήματος (<=) προς σχηματισμό της λογικής έκφρασης εξόδου του κυκλώματος (µε τον ο- ρισμό ενδεχομένως κάποιων ενδιάμεσων σημάτων). Τα σήματα του τύπου STD_LOGIC_VECTOR μπορούν να χρησιμοποιηθούν σε συνδυασμό µε αριθμητικούς και συγκριτικούς τελεστές, εάν περιληφθεί στο πρόγραμμα μια από τις α- κόλουθες δηλώσεις (πριν από τη δήλωση της αρχικής οντότητας): USE ieee.std_logic_signed.all; ή USE ieee.std_logic_unsigned.all; οι οποίες τους επιτρέπουν να χρησιμοποιηθούν ως προσηµασµένοι ή µη προσηµασµένοι δυαδικοί α- ριθμοί αντίστοιχα. Με τον τρόπο αυτό περιγράφονται κυκλώματα όπως αθροιστές και συγκριτές που βρίσκονται σε υψηλότερα επίπεδα ιεραρχίας από το επίπεδο λογικής.

3. Χαρακτηριστικά των κυκλωμάτων 3.1 Η συνάρτηση Η δοσμένη συνάρτηση για επίλυση είναι η εξής: E = (A+B)(AC ) + D Παράλληλα θα πρέπει να υλοποιηθεί και μια δεύτερη συνάρτηση η τιμή της ο- ποίας θα φαίνεται στην έξοδο. Αυτή είναι η D = AB + C με πίνακα αληθείας τον παρακάτω: A B C D 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 Το κύκλωμα που θα υλοποιηθεί θα έχει εισόδους τα A, B και C. To D θα πρέπει να παίξει διπλό ρόλο στο σύστημα γιατί η τιμή του αποτελεί έξοδο, αλλά και είσοδο στο E.

3.2 LED Decoder Ο LED Decoder είναι ένας συνδυασμός από LED, ο οποίος θα πρέπει να δείχνει την τιμή του decoder κάθε στιγμή. Ο decoder δέχεται 4-bit στην είσοδο του και 7-bit στην έξοδο. Ουσιαστικά το LED θα αναπαριστά τη δεκαεξαδική τιμή των 4- bit όπως φαίνεται στον παρακάτω πίνακα: 4-bit input Hex Digit LED Display 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A A 1011 B b 1100 C c 1101 D d 1110 E E 1111 F F Η κατασκευή του LED Decoder θα ακολουθεί την παρακάτω λογική:

3.3 Counter σε συνδυασμό με LED decoder Σε αυτό το σημείο θα χρησιμοποιήσουμε το κύκλωμα που περιεγράφηκε στο σημείο 3.2. Θα γίνει η υλοποίηση ενός μετρητή, η τιμή του οποίου θα φαίνεται στην έξοδο του LED. Ο μετρητής θα αυξάνεται κατά μία μονάδα κάθε φορά και όταν φτάνει στην τιμή F θα μηδενίζει και θα ξεκινάει από την αρχή (wrap around). Κάθε μονάδα του συστήματος θα είναι αυτόνομη και θα συνδέονται μεταξύ τους μέσω μιας άλλης μονάδας υψηλότερου επιπέδου, ώστε να επιτευχθεί ιεραρχική σχεδίαση. Παρακάτω φαίνεται η λογική του κυκλώματος: 3.4 Πλήρης αθροιστής 3-bit Μια από τις πιο βασικές λειτουργίες σε μια μονάδα επεξεργασίας είναι η ά- θροιση. Ο αθροιστής στην συγκεκριμένη εργασία θα αθροίζει δύο αριθμούς 3-bit που δέχεται στην είσοδο. Στην έξοδο θα εμφανίζει το αποτέλεσμα της πράξης.η απλούστερη μορφή ενός αθροιστή είναι αυτή του 1-bit. Ακολουθεί ο πίνακας α- ληθείας του:

3.5 Πολυπλέκτης 4 σε 1 Ο πολυπλέκτης είναι ένα πολύ βασικό κύκλωμα γιατί ουσιαστικά δίνει τη δυνατότητα στον σχεδιαστή να υλοποιεί if statements. Το κύκλωμα της εργασίας θα έχει 4 εισόδους και δυο γραμμές επιλογών, οι οποίες θα καθορίζουν την έξοδο του, όλα 1-bit εύρους. Ο πίνακας αληθείας του συστήματος που θα υλοποιηθεί: S1 S0 OUT 0 0 a 0 1 b 1 0 c 1 1 d 3.6 D Flip-Flop Τα Flip-Flop αποτελούν τις δομικές μονάδες για πιο πολύπλοκα ψηφιακά κυκλώματα όπως καταχωρητές, απαριθμητές αλλά και κάποιες κατηγορίες μνήμης RAM. Το D Flip-Flop προέρχεται από ένα RS Flip-Flop στο οποίο έχουν συνδεθεί οι είσοδοι RS μέσω μίας λογικής πύλης ΝΟΤ. Η έξοδος του D Flip-Flop ακολουθεί την τιμή της εισόδου D κατά την εφαρμογή των κατάλληλων παλμών συγχρονισμού. Σε αυτή την εργασία το D Flip-Flop πυροδοτείται κατά την άνοδο του σήματος του ρολογιού. Η λειτουργία του φαίνεται στον παρακάτω πίνακα αληθείας:

3.7 Αριθμητική και Λογική Μονάδα (ALU) Η αριθμητική και λογική μονάδα (arithmetic and logical unit (ALU)) είναι ένα βασικό και αναπόσπαστο κομμάτι στο σχεδιασμό hardware. Συγκεκριμένα, αποτελεί μέρος της κεντρικής μονάδας επεξεργασίας. Οι περισσότερες από τις πράξεις ενός επεξεργαστή εκτελούνται από μία ή περισσότερες ALU. Η υλοποίηση που ακολουθεί είναι απλή και εστιάζει στις βασικές λειτουργίες της ALU. Εκτελεί α- ριθμητικές και λογικές πράξεις ανάμεσα σε δύο τελεστέους όπως περιγράφεται στο σχήμα παρακάτω:

3.8 Μηχανή πεπερασμένων καταστάσεων (FSM) Mια μηχανή πεπερασμένων καταστάσεων, είναι ένα μαθηματικό μοντέλο για υ- πολογισμούς. Είναι μια αφηρημένη μηχανή που μπορεί να είναι σε μόνο μια από έναν πεπερασμένο αριθμό καταστάσεων σε κάθε δεδομένη στιγμή. Ένα FSM μπορεί να μεταβεί από τη μία κατάσταση στην άλλη ανάλογα με την είσοδο του συστήματος. Ένα FSM ορίζεται από το σύνολο των καταστάσεων του, την αρχική του κατάσταση, καθώς και τις συνθήκες με τις οποίες πραγματοποιείται κάθε μετάβαση. Στην εργασία αυτή θα υλοποιηθούν μια μηχανή Moore και μια μηχανή Mealy. Χαρακτηριστικό μιας μηχανής Moore είναι το γεγονός ότι κάθε μετάβαση γίνεται με κριτήριο την κατάσταση στην οποία βρίσκεται κάθε στιγμή η μηχανή και η έξοδος του συστήματος εξαρτάται από την τρέχουσα κατάσταση. Το παρακάτω διάγραμμα καταστάσεων εξηγεί συνοπτικά τη συμπεριφορά του συστήματος που υλοποιήθηκε: Σε αντίθεση με την μηχανή Moore, στη μηχανή Mealy η έξοδος του συστήματος εξαρτάται από την τρέχουσα κατάσταση αλλά και την είσοδο του συστήματος. Το παρακάτω διάγραμμα καταστάσεων εξηγεί συνοπτικά τη συμπεριφορά του συστήματος που υλοποιήθηκε:

4. Ανάπτυξη των κυκλωμάτων 4.1 Εγκατάσταση του περιβάλλοντος (set up) Ανοίγοντας το περιβάλλον του Xilinx, καλωσορίζει και προτρέπει με ένα παράθυρο τον χρήστη για την επόμενη του κίνηση. Επιλέγοντας New Project ο χρήστης ακολουθεί μια σειρά απλών βημάτων για την δημιουργία του νέου project.

Στο επόμενο βήμα φαίνονται οι ρυθμίσεις που χρησιμοποιήθηκαν σε αυτή την εργασία. Παρέμειναν οι ίδιες σε κάθε υλοποίηση που θα ακολουθήσει και έχουν ως εξής:

Mε δεξί κλικ πάνω στο project και την επιλογή New Source εκτελείται η δημιουργία του αρχείου κώδικα και των test bench. Για τον κώδικα με την επιλογή VHDL Module:

Για τα test bench με την επιλογή VHDL Test Bench: Μετά από αυτή τη σειρά βημάτων ο χρήστης είναι σε θέση να συντάξει τον κώδικα προς υλοποίηση και προσομοίωση. Για τα Testbench χρησιμοποιήθηκε και τροποποιήθηκε το πρότυπο που δημιουργείται από το περιβάλλον. Στις επόμενες παραγράφους θα ακολουθήσει ο κώδικας που υλοποιεί την περιγραφή των κυκλωμάτων στο κεφάλαιο 3.

4.2 Η συνάρτηση Ο κώδικας: Είσοδοι του κυκλώματος αποτελούν τα A, B, C. Το D δηλώνεται ως inout διότι η τιμή του προκύπτει από τις τιμές των τριών εισόδων και χρησιμοποιείται σαν είσοδος για το Ε που αποτελεί και έξοδο του κυκλώματος.

Το testbench:

Σκοπός είναι να δοκιμαστούν όλες οι πιθανές τιμές που συνθέτουν ένα πίνακα αληθείας.

Το schematic: RTL view:

4.3 LED Decoder Ο κώδικας: Η είσοδος του συστήματος είναι το διάνυσμα bcd τεσσάρων θέσεων. Ο κώδικας μεταφράζει την τιμή του σε τέτοια ώστε να ανάψουν τα αντίστοιχα μέρη του LED. Η έξοδος φαίνεται στο διάνυσμα segment7 7 θέσεων.

Το testbench:

Σκοπός είναι να ελεγχθεί η έξοδος για κάθε πιθανή είσοδο.

RTL view:

4.4 Counter σε συνδυασμό με LED Decoder Η υλοποίηση του counter: Όταν το reset έχει τιμή 1 τότε βρίσκεται εκτός λειτουργίας. Σε κάθε άλλη περίπτωση μετράει συνεχώς από το 0 μέχρι το F που είναι και το ζητούμενο. Κάθε φορά που η έξοδος πάρει την μέγιστη τιμή τότε ο μετρητής επαναφέρεται στην αρχική του κατάσταση. Η έξοδος Q είναι και η είσοδος στον LED Decoder που α- κολουθεί.

Η υλοποίηση του LED Decoder: Εδώ ο LED Decoder ακολουθεί την ίδια λογική με αυτή στην προηγούμενη παράγραφο 4.3. Αυτό που προστέθηκε είναι το ρολόι του συστήματος ώστε να επιτευχθεί συγχρονισμός.

Η υλοποίηση του συστήματος (Top Level): Επειδή η σχεδίαση είναι ιεραρχική, σε αυτό το κομμάτι ενώνονται οι δύο προηγούμενες υλοποιήσεις για τη σύσταση του συνολικού κυκλώματος. Αυτές δηλώνονται σαν components και με τη βοήθεια του signal counter_out περνάει η τιμή του μετρητή στον αποκωδικοποιητή. Η έξοδος του συστήματος φαίνεται στο Q.

Το Testbench:

Ο σκοπός αυτού του testbench είναι να δούμε τη συνολική συμπεριφορά του συστήματος αλλά και τον counter να μηδενίζει και να επανέρχεται στην αρχική του κατάσταση (wrap around). RTL view: Οι εικόνες κανονικά θα έπρεπε να βρίσκονται η μια δίπλα στην άλλη με την σειρά που εμφανίζονται.

4.5 Πλήρης αθροιστής 3-bit Ο κώδικας: Σε αυτό τον αθροιστή οι είσοδοι είναι δύο 3-bit διανύσματα, τα a και b. Με τη χρήση του σήματος temp, που είναι διάνυσμα 4 bit, εκτελείται η πράξη της πρόσθεσης. Από αυτό μεταφέρεται η τιμή για το κρατούμενο και το αποτέλεσμα της πρόσθεσης στα carry και sum αντίστοιχα.

Το Testbench: Με τη χρήση του loop τρέχουμε το σύστημα με όλες τις δυνατές τιμές των εισόδων του.

RTL view:

4.6 Πολυπλέκτης Ο κώδικας: Οι είσοδοι του συστήματος φαίνονται στα a, b, c, d. Τον ρόλο του επιλογέα έχουν τα σήματα s0 και s1. Αντίστοιχα με την τιμή τους η έξοδος output θα παίρνει διαφορετική τιμή.

Το Testbench:

Σκοπός είναι να ελεγχθούν οι τιμές στην έξοδο σε αντιστοιχία με τις τιμές του ε- πιλογέα. RTL view:

4.7 D-Flip Flop Ο κώδικας: Το κύκλωμα είναι ασύγχρονο. Η έξοδος του φαίνεται στο σήμα Q.

Το Testbench:

Σκοπός είναι να παρατηρηθεί η συμπεριφορά του συστήματος για τις διαφορετικές τιμές του ρολογιού και του reset. RTL view:

4.8 ALU Ο κώδικας: Είσοδοι του συστήματος είναι τα διανύσματα Α και Β τεσσάρων θέσεων. Αναλόγως την τιμή του code εκτελείται και η αντίστοιχη πράξη.

Το Testbench:

Σκοπός είναι να ελεγχθούν όλες οι τιμές των εισόδων σε αντιστοιχία με τις διαφορετικές τιμές του επιλογέα code. RTL view:

4.9 FSM 4.9.1 Moore Ο κώδικας:

Είναι αναγκαίο να οριστούν η παρούσα και η επόμενη κατάσταση(pres_state, next_state), όπως επίσης και οι τιμές των καταστάσεων (statea, stateb). Η είσοδος d λειτουργεί σαν επιλογέας και καθορίζει κάθε φορά την επόμενη κατάσταση. Η έξοδος του συστήματος x παίρνει τιμή με βάση την παρούσα κατάσταση. Το δεύτερο process βοηθά την ομαλή λειτουργία του συστήματος και θέτοντας παράλληλα ένα default state. Το Testbench:

Σκοπός είναι να ελεγχθούν όλες οι καταστάσεις με όλες τις διαφορετικές συνθήκες. RTL view:

4.9.2 Mealy Ο κώδικας:

Σε αντιστοιχία με το προηγούμενο κύκλωμα και πάλι ορίζονται οι παρούσα και επόμενη κατάσταση (pres_state, next_state) και οι τιμές τους (s0, s1, s2, s3). Αν και το κύκλωμα είναι πιο σύνθετο, ακολουθεί παρόμοια λογική. Η διαφορά σε

αυτή την υλοποιήση είναι ότι η είσοδος (input) καθορίζει την επόμενη κατάσταση του συστήματος, αλλά και την έξοδο του (output) Το Testbench:

Σκοπός είναι να ελεγχθούν όλες οι καταστάσεις με όλες τις διαφορετικές συνθήκες. RTL view:

5. ΠΡΟΣΟΜΟΙΩΣΕΙΣ ΚΑΙ ΑΠΟΤΕΛΕ- ΣΜΑΤΑ 5.1 ISim Όλες οι προσομοιώσεις έγιναν με τη χρήση του ISim, το οποίο έρχεται μαζί με το λογισμικό του Xilinx. Συγκεκριμένα το Isim δίνει τη δυνατότητα για system-level testing και πραγματοποιεί προσομοιώσεις που παρατηρούν και ελέγχουν τις ε- ξόδους του υπό δοκιμή συστήματος. Οι προσομοιώσεις αφορούν logical και behavioral verification καθώς και Post-place & route simulation, στοχευμένο για να ελέγξει τη συμπεριφορά μετά την τοποθέτηση της μονάδας σε ένα FPGA. Όταν συγγραφεί το Testbench ο χρήστης μπορεί να συνεχίσει με την προσομοίωση. Στο αριστερό μέρος του περιβάλλοντος όπου φαίνονται οι διάφορες λεπτομέρειες του αρχείου, επιλέγουμε το simulation tab. Στη συνέχεια, Simulate Behavioral Model και Rerun All.

5.2 Η συνάρτηση Η έξοδος d ανταποκρίνεται στον πίνακα αληθείας (3.1). Αντίστοιχα και η έξοδος e παίρνει τιμή 1 μόνο όταν b=c= 1 που είναι και το ζητούμενο. 5.3 LED Decoder Η προσομοίωση δείχνει ότι στην τιμή της εξόδου βλέπουμε την αντίστοιχη τιμή ώστε τα s0 ως s6 να ανάβουν με βάση τον πίνακα στο 3.2.

5.4 Counter σε συνδυασμό με LED Decoder

Για reset= 1 περιμένουμε το σύστημα να βρίσκεται στη αρχική του θέση. Στα πρώτα 100 ns το σύστημα βρίσκεται σε αδράνεια. Στα επόμενα 100 λειτουργεί κανονικά. Στα επόμενα 50 ns με reset= 1 είναι και πάλι σε αδράνεια. Στα 250 ns θέτουμε reset= 0 και το κύκλωμα βρίσκεται ξανά σε λειτουργία. Επίσης, παρατηρείται και το wrap-around. Η λειτουργία του εξελίσσεται ομαλά και οι τιμές στην έξοδο ικανοποιούν την προσδοκώμενη ένδειξη του LED.

5.5 Πλήρης αθροιστής 3-bit Το testbench για τον αθροιστή περνάει το σύστημα από κάθε δυνατή τιμή. Τα α- ποτελέσματα είναι ενδεικτικά για τις πρώτες δύο επαναλήψεις του i. Αυτό σημαίνει ότι στην πρώτη επανάληψη το διάνυσμα a = 000 και όλα τα υπόλοιπα σήματα μεταβάλλονται. Παρατηρώντας την τιμή του sum για κάθε 10 ns τα α- ποτελέσματα ικανοποιούν και επαληθεύουν τη λειτουργία του αθροιστή. Στην επόμενη επανάληψη όπου a = 001 παρατηρείται το ίδιο. Γενικότερα, η υλοποίηση του συστήματος είναι ορθή.

5.6 Πολυπλέκτης 4 σε 1 Τα πρώτα 40 ns αρκούν για να δει κανείς τη ορθή λειτουργία του πολυπλέκτη. Από 0 μέχρι 10 ns ο επιλογέας έχει τιμή 00. Αντίστοιχα από 10 μέχρι 20 ns 10, από 20 μέχρι 30 ns 01 και από 30 μέχρι 40 ns 11. Για κάθε χρονική στιγμή φαίνεται η σωστή τιμή στην έξοδο του συστήματος. 5.7 D-Flip Flop

Το q παίρνει την τιμή του d μόνο όταν reset = 0 και clk = 1. Αυτό αρκεί για να επαληθεύσει την ορθή λειτουργία του κυκλώματος. 5.8 ALU Το testbench για το συγκεκριμένο κύκλωμα ελέγχει κάθε πιθανή τιμή των σημάτων και αποδείχθηκε μακροσκελές. Τα συγκεκριμένα αποτελέσματα της προσομοίωσης αφορούν τα πρώτα 900 ns που φαίνονται στις εικόνες. Παρ όλα αυτά, παρατηρείται ότι οι πράξεις και το αποτέλεσμα τους φαίνονται στην έξοδο q. Επίσης αποδεικνύεται και η σωστή λειτουργία του επιλογέα code.

5.9 FSM 5.9.1 Moore Στα πρώτα 500 ns η τιμή του a = 1 και b = 0. Στα επόμενα 500 ns συμβαίνει το αντίστροφο. Κάθε 200 ns αλλάζει η τιμή του reset, ενώ η τιμή του d κάθε 50 ns. Στην έξοδο, η τιμή του x ακολουθεί πάντα τις τιμές του a και b, πάντα σε αναλογία με την παρούσα κατάσταση. Αυτό εξασφαλίζει την ορθή λειτουργία του FSM.

5.9.1 Mealy Στην τελευταία προσομοίωση η τιμή του input αλλάζει κάθε 20 ns. Οι τιμή του reset αλλάζει στα 40 και στα 500 ns. Παρατηρώντας την τιμή του output μπορεί κανείς να δει ότι όταν το reset = 0 ανταποκρίνεται στα ζητούμενα της μηχανής πεπερασμένων καταστάσεων. Η τιμή αυτή καθορίζεται πάντα από το input.

5.10 Συμπεράσματα Τα κυκλώματα που υλοποιήθηκαν σε αυτή την εργασία αποτελούν τον κορμό της σχεδίασης ψηφιακών κυκλωμάτων για όποιον αρχάριο θέλει να ασχοληθεί με αυτό. Η εργασία μπορεί να αποτελέσει σημείο αναφοράς για κάποιον που θέλει να μάθει να γράφει κώδικα σε VHDL. Συγκεκριμένα, οι υλοποιήσεις ασχολούνται με την λειτουργία απλών, αλλά πολύ σημαντικών κυκλωμάτων που υποστηρίζουν αυτή τη διαδικασία. Τα κυκλώματα που υλοποιήθηκαν είναι μία συνάρτηση, ένας LED decoder, ένας μετρητής σε συνδυασμό με τη χρήση του LED decoder, ένας πλήρης αθροιστής 3-bit, ένας πολυπλέκτης 4 σε 1, ένα D Flip-Flop, μια ALU και δυο μηχανές πεπερασμένων καταστάσεων (Moore και Mealy). Όλα τα προγράμματα που γράφτηκαν προσομοιώνουν τη λειτουργία του αντίστοιχου πίνακα αληθείας. Επίσης, η λειτουργία των κυκλωμάτων ελέγχθηκε με τη συγγραφή των testbench και την χρήση του ISim για την προσομοίωση τους. Τα testbench τρέχουν τα κυκλώματα σε nanosecond, επειδή προορίζονται για εκπαιδευτικούς σκοπούς. Σε πραγματικές καταστάσεις ίσως αυτοί οι χρόνοι να διαφέρουν, αλλά ελέγχοντας και κατ επέκταση γνωρίζοντας την ορθή λειτουργία των συστημάτων είναι αντιληπτό το γεγονός ότι η χρήση τους είναι εφικτή και για άλλους σκοπούς. Για παράδειγμα, μια μηχανή πεπερασμένων καταστάσεων μπορεί να χρησιμοποιηθεί για ένα μηχάνημα εκτύπωσης εισιτηρίων μέχρι και σε ένα media streaming σύστημα. Τα δύο αυτά συστήματα, ενώ αφορούν διαφορετικές υλοποιήσεις στην βάση τους ακολουθούν τις ίδιες αρχές. Το ίδιο ισχύει και για τα υπόλοιπα κυκλώματα. Συνολικά η εργασία αυτή εστίασε στην μελέτη συνδυαστικών και ακολουθιακών κυκλωμάτων.

6. ΒΙΒΛΙΟΓΡΑΦΙΑ 1. Peter J. Ashenden The VHDL Cookbook 2. M. Morris Mano 1992, Ψηφιακή Σχεδίαση Δεύτερη Έκδοση 3. Karen Parnell & Nick Mehta 2002, Programmable Logic Design Quick Start Hand Book 4. Peter J. Ashenden The Designer s Guide to VHDL 5. Stefan Sjoholm, Lennart Lindh VHDL fordesigners