ΑΝΑΠΤΥΞΗ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ) ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΝΑΠΤΥΞΗ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ) ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK"

Transcript

1 ΑΝΑΠΤΥΞΗ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ) ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK ΜΕΤΑΠΤΥΧΙΑΚΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΦΥΤΤΑ ΑΓΓΕΛΙΚΗ ΠΤΥΧΙΟΥΧΟΣ ΤΜΗΜΑΤΟΣ ΦΥΣΙΚΗΣ ΠΑΝ/ΜΙΟΥ ΠΑΤΡΩΝ ΕΠΙΒΛΕΠΩΝ: ΜΠΑΚΑΛΗΣ ΔΗΜΗΤΡΙΟΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑΤΟΣ ΦΥΣΙΚΗΣ Δ.Π.Μ.Σ. «ΗΛΕΚΤΡΟΝΙΚΗ & ΕΠΕΞΕΡΓΑΣΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ» ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΑΤΡΑ, ΟΚΤΩΒΡΙΟΣ 2016

2 Πανεπιστήμιο Πατρών, Τμήμα Φυσικής [Φύττα Αγγελική] [2016] Με την επιφύλαξη παντός δικαιώματος Το σύνολο της εργασίας αποτελεί πρωτότυπο έργο, παραχθέν από την Φύττα Αγγελική, και δεν παραβιάζει δικαιώματα τρίτων καθ οιονδήποτε τρόπο. Εάν η εργασία περιέχει υλικό, το οποίο δεν έχει παραχθεί από την ίδια, αυτό είναι ευδιάκριτο και αναφέρεται ρητώς εντός του κειμένου της εργασίας ως προϊόν εργασίας τρίτου, σημειώνοντας με παρομοίως σαφή τρόπο τα στοιχεία ταυτοποίησής του, ενώ παράλληλα βεβαιώνει πως στην περίπτωση χρήσης αυτούσιων γραφικών αναπαραστάσεων, εικόνων, γραφημάτων κλπ., έχει λάβει τη χωρίς περιορισμούς άδεια του κατόχου των πνευματικών δικαιωμάτων για την συμπερίληψη και επακόλουθη δημοσίευση του υλικού αυτού. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό µη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Ερωτήματα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τους συγγραφείς. ( agg.fytta@gmail.com - bakalis@physics.upatras.gr ) 2

3 Εγκρίθηκε από την τριμελή εξεταστική επιτροπή στις 12 Οκτωβρίου 2016 πλαίσια του Δ.Π.Μ.Σ. Ηλεκτρονική και Επεξεργασία της Πληροφορίας: στα Μπακάλης Δημήτριος, Φωτόπουλος Σπυρίδων, Ψυχαλίνος Κων/νος, Επίκουρος Καθηγητής Καθηγητής Καθηγητής 3

4 4

5 ΠΡΟΛΟΓΟΣ Η παρούσα μεταπτυχιακή διπλωματική εργασία εκπονήθηκε στα πλαίσια του Διατμηματικού Προγράμματος Μεταπτυχιακών Σπουδών Ηλεκτρονική & Επεξεργασία της Πληροφορίας του τμήματος Φυσικής του Πανεπιστημίου Πατρών. Σκοπός είναι η ανάπτυξη ενός ενσωματωμένου συστήματος για την επίλυση του κύβου του Rubik, αξιοποιώντας τον επεξεργαστή γενικού σκοπού Nios II και υλοποίηση του στην αναπτυξιακή πλατφόρμα DE2 70 της Altera. Το υλικό του συστήματος αναπτύσσεται σύμφωνα με τη SOPC λογική σχεδίασης και αποτελείται από περιφερειακές συσκευές και υποκυκλώματα που αναλαμβάνουν τη διαχείριση βίντεο δεδομένων (TRDB D5M Camera). Το λογισμικό του συστήματος έχει αναπτυχθεί σε διαδικαστική γλώσσα προγραμματισμού γενικής χρήσης C. Ο έλεγχος του συστήματος επιτυγχάνεται μέσω περιφερειακών κουμπιών της πλατφόρμας, ενώ η κατάσταση του συστήματος απεικονίζεται σε μία VGA οθόνη. Στο πρώτο κεφάλαιο γίνεται μία εισαγωγή στον κύβο του Rubik και επεξηγούνται δυο βασικοί αλγόριθμοι επίλυσης του. Στο δεύτερο κεφάλαιο γίνεται αναφορά στην αρχιτεκτονική του επεξεργαστή Nios II, καθώς και τα υποσυστήματα (cores) που χρησιμοποιήθηκαν στην ανάπτυξη του συστήματος, στην SOPC σχεδίαση και στην πλατφόρμα DE2-70 της Altera. Στο τρίτο κεφάλαιο γίνεται αναφορά όλων των ρυθμίσεων που πραγματοποιήθηκαν στα προαναφερθέντα υποσυστήματα (cores). Στο τέταρτο κεφάλαιο, περιγράφεται το λογισμικό κομμάτι και ο κώδικας που αναπτύχθηκε για την ορθή λειτουργία του συστήματος. Τέλος, παρουσιάζονται τα συμπεράσματα που προέκυψαν κατά τη διαδικασία σχεδίασης, τα προβλήματα και οι δυσκολίες που προέκυψαν, όπως επίσης και μελλοντικές κατευθύνσεις για την περαιτέρω εξέλιξη του συστήματος. Φύττα Αγγελική Πάτρα,

6 6

7 INTRODUCTION This thesis is part of the requirements for the post-graduate program Electronics & Information Processing at the University of Patras. The purpose of this project is the implementation of an embedded system to solve Rubik's Cube, using the general purpose processor NIOS II. The system has been implemented on DE2-70 Altera's Development Board. The hardware has been designed using the SOPC Builder, and it consists of peripherals and other circuits which are responsible for video processing using TRDB-D5M Camera. The software of the system has been developed using the general purpose programming language C. The control of the entire system is done using I/O buttons, while its current state is displayed on a VGA monitor. The first chapter presents an introduction on Rubik's Cube and an explanation of 2 basic algorithms for its solution. The architecture of NIOS II and all components that are used for the implementation on DE2-70 Altera's Board are described at second chapter. The third chapter presents configurations of all components. At the fourth chapter the algorithm which solves the Rubik's Cube and the C code for the check of correct operation are described. Finally on the last chapter conclusions, problems and future extensions are given. Fytta Angeliki Patra,

8 8

9 ΕΥΧΑΡΙΣΤΙΕΣ Θα ήθελα να ευχαριστήσω τον επιβλέποντα της προσπάθειας αυτής, Επίκουρο καθηγητή του τμήματος Φυσικής, κύριο Μπακάλη Δημήτριο, για την ανάθεση του θέματος, για την ουσιαστική συνεργασία και την καθοδήγηση του, που υπήρξε καθοριστικής σημασίας. Τέλος, θα ήθελα να ευχαριστήσω την οικογένεια μου, για την αμέριστη συμπαράσταση κατά τη διάρκεια των σπουδών μου και τον συνάδελφο Ανδριακόπουλο Χρήστο για την ενθάρρυνση του να προσπαθώ πάντα για το καλύτερο. 9

10 10

11 ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΟΛΟΓΟΣ... 5 INTRODUCTION... 7 ΕΥΧΑΡΙΣΤΙΕΣ... 9 ΚΕΦΑΛΑΙΟ 1 - Ο ΚΥΒΟΣ ΤΟΥ RUBIK 1.1 ΕΙΣΑΓΩΓΗ ΕΠΕΞΗΓΗΣΗ ΒΑΣΙΚΩΝ ΚΙΝΗΣΕΩΝ ΒΑΣΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΕΠΙΛΥΣΗΣ Ο ΑΛΓΟΡΙΘΜΟΣ FRIDRICH ΚΕΦΑΛΑΙΟ 2 - ΕΝΑ NIOS II ΕΝΣΩΜΑΤΩΜΕΝΟ ΣΥΣΤΗΜΑ 2.1 ΔΙΑΔΙΚΑΣΙΑ ΣΧΕΔΙΑΣΗΣ SOPC Η ΑΝΑΠΤΥΞΙΑΚΗ ΚΑΡΤΑ DE2-70 ΤΗΣ ALTERA TO ΠΕΡΙΒΑΛΛΟΝ QUARTUS & ΤΟ NIOS II IDE Ο ΕΠΕΞΕΡΓΑΣΤΗΣ NIOS II ΤΗΣ ALTERA UNIVERSITY PROGRAM (UP) CORES & IP CORES Η TRDB-D5M CAMERA ΤΗΣ TERASIC ΚΕΦΑΛΑΙΟ 3 - ΑΝΑΠΤΥΞΗ ΥΛΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ 3.1 ΠΡΟΔΙΑΓΡΑΦΕΣ ΣΥΣΤΗΜΑΤΟΣ ΠΡΟΣΘΗΚΗ ΚΑΙ ΡΥΘΜΙΣΗ ΤΟΥ NIOS II ΕΠΕΞΕΡΓΑΣΤΗ ΠΡΟΣΘΗΚΗ ΚΑΙ ΡΥΘΜΙΣΗ ΤΗΣ ΜΝΗΜΗΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΡΥΘΜΙΣΗ ΤΟΥ AUDIO & VIDEO CONFIGURATION CORE ΡΥΘΜΙΣΗ ΤΟΥ CLOCK SIGNALS FOR DE-SERIES BOARD PERIPHERALS CORE ΡΥΘΜΙΣΗ ΤΟΥ VIDEO-IN DECODER CORE ΡΥΘΜΙΣΗ ΤΟΥ BAYER PATTERN RESAMPLER CORE ΡΥΘΜΙΣΕΙΣ ΤΩΝ CLIPPER & SCALER CORES ΡΥΘΜΙΣΗ ΤΟΥ PIXEL BUFFER DMA CONTROLLER CORE ΡΥΘΜΙΣΗ ΤΟΥ RGB RESAMPLER CORE ΡΥΘΜΙΣΗ ΤΟΥ VGA CONTROLLER CORE ΡΥΘΜΙΣΗ ΤΟΥ CHARACTER BUFFER CORE

12 3.13 ΡΥΘΜΙΣΗ TOY ALPHA BLENDER CORE ΡΥΘΜΙΣΗ TOY DMA CONTROLLER FOR VIDEO CORE ΡΥΘΜΙΣΗ TOY DUAL-CLOCK FIFO CORE ΡΥΘΜΙΣΗ TOY JTAG UART CORE ΡΥΘΜΙΣΗ TOY INTERVAL TIMER CORE ΡΥΘΜΙΣΗ ΤΩΝ PARALLEL I/O PERIPHERALS (PIO) CORES ΤΟ HARDWARE ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΤΟ ΤΕΛΙΚΟ ΣΧΗΜΑΤΙΚΟ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΚΕΦΑΛΑΙΟ 4 - ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ 4.1 ΠΕΡΙΓΡΑΦΗ ΛΕΙΤΟΥΡΓΙΑΣ ΣΥΣΤΗΜΑΤΟΣ ΛΗΨΗ ΚΑΙ ΠΡΟΒΟΛΗ ΦΩΤΟΓΡΑΦΙΩΝ ΑΝΑΓΝΩΡΙΣΗ ΧΡΩΜΑΤΩΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΕΠΙΛΥΣΗΣ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK ΣΤΗΝ VGA ΟΘΟΝΗ ΣΥΝΟΛΙΚΟ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΤΟΥ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΚΕΦΑΛΑΙΟ 5 - ΣΥΜΠΕΡΑΣΜΑΤΑ - ΠΡΟΒΛΗΜΑΤΑ - ΒΕΛΤΙΩΣΕΙΣ 5.1 ΣΥΜΠΕΡΑΣΜΑΤΑ ΣΧΟΛΙΑ ΠΡΟΒΛΗΜΑΤΑ ΒΕΛΤΙΩΣΕΙΣ ΒΙΒΛΙΟΓΡΑΦΙΑ INTERNET - ΑΝΑΦΟΡΕΣ ΠΑΡΑΡΤΗΜΑ Α - C CODE ΠΑΡΑΡΤΗΜΑ B - USER MANUAL

13 13

14 14

15 ΚΕΦΑΛΑΙΟ 1 Ο Ο κύβος του Rubik 1.1 ΕΙΣΑΓΩΓΗ Ο κύβος του Rubik 3x3x3, γνωστός και ως Magic cube, είναι ένα τρισδιάστατο μηχανικό πάζλ. Επινοήθηκε το 1974 από τον Ούγγρο γλύπτη και καθηγητή αρχιτεκτονικής Erno Rubik. Έως τον Ιανουάριο του 2009, 350 εκατομμύρια κύβοι είχαν πουληθεί παγκοσμίως κάνοντας τον το εμπορικότερο πάζλ παγκοσμίως, ενώ θεωρείται ευρέως το δημοφιλέστερο παιχνίδι στον κόσμο [4]. Στην Ελλάδα, κατασκευάζεται ο V-Cube, μια ελληνική πατέντα κατοχυρωμένη από τον Έλληνα Μηχανικό Παναγιώτη Βέρντη. Πρόκειται για κύβους που παρέχουν α- σφαλή και ομαλή περιστροφή. Στην αγορά ως τώρα είναι διαθέσιμοι κύβοι διαστάσεων από 2x2x2 μέχρι 8x8x8. Εικόνα 1.1 V-Cube 2x2x2 και 8x8x8 [2]. 15

16 Σε έναν κλασικό κύβο του Rubik (3x3x3) κάθε μία από τις έξι πλευρές καλύπτεται από εννιά μικρότερες επιφάνειες με έξι χρώματα (λευκό, κόκκινο, κίτρινο, πράσινο, μπλε και πορτοκαλί). Ένας μηχανισμός περιστροφής επιτρέπει σε κάθε πλευρά να περιστρέφεται ανεξάρτητα από τις άλλες, με αποτέλεσμα να συγχέονται τα χρώματα. Για να λυθεί το πάζλ, πρέπει κάθε πλευρά του κύβου να αποτελείται αποκλειστικά από επιφάνειες του ίδιου χρώματος. Ο κύβος αποτελείται από 26 κομμάτια από τα οποία τα 8 είναι γωνίες (corner pieces), τα 12 ακμές (edge pieces) και τα υπόλοιπα 6 κέντρα (center pieces). Παρατηρείται πως όταν τα κομμάτια περιστρέφονται, οι πλευρές αλλάζουν θέσεις αλλά όχι είδος, δηλαδή μία γωνία είναι πάντα γωνία. Επιπλέον τα κέντρα δεν αλλάζουν θέση μεταξύ τους και ορίζουν το χρώμα που πρέπει να έχει ολόκληρη η πλευρά. Το κόκκινο κέντρο είναι απέναντι από το πορτοκαλί, το άσπρο απέναντι από το κίτρινο και το μπλε απέναντι από το πράσινο [20]. Εικόνα 1.2 Edge piece, Corner piece, Center piece. Ο συνολικός αριθμός διαφορετικών διατάξεων των πλευρών του κύβου είναι (4,3 x ). Αυτό σημαίνει πως, αν απαιτείται ένα δευτερόλεπτο για κάθε διαφορετική διάταξη, ο χρόνος που χρειάζεται για να δει κανείς όλες τις διατάξεις είναι 1,4 τετράκις εκατομμύρια έτη. Σύμφωνα με έρευνα από το International Symposium on Symbolic and Algebraic Computation (ISSAC), ο 16

17 ελάχιστος αριθμός κινήσεων για την επίλυση του κύβου του Rubik είναι το 20. Το παγκόσμιο ρεκόρ λύσης του κύβου από άνθρωπο είναι κάτω από 6 δευτερόλεπτα, ενώ robot της Lego πρόσφατα χρειάστηκε λιγότερο από 4 δευτερόλεπτα. 1.2 ΕΠΕΞΗΓΗΣΗ ΒΑΣΙΚΩΝ ΚΙΝΗΣΕΩΝ Το πρόβλημα της επίλυσης του κύβου είναι πλήρως καθορισμένο, δομημένο και επιλύσιμο, καθώς είναι γνωστοί αρκετοί σχετικοί αλγόριθμοι. Η σχεδίαση και υλοποίηση σε μία γλώσσα προγραμματισμού ενός προγράμματος που θα λύνει τον κύβο είναι μια σχετικά εύκολη διαδικασία. Για την επίλυση είναι απαραίτητο να ακολουθήσουμε μια σαφώς καθορισμένη και πεπερασμένη σε αριθμό ακολουθία κινήσεων που θα μας οδηγήσει στο επιθυμητό αποτέλεσμα. Είναι απαραίτητο λοιπόν, να οριστούν κάποιες βασικές κινήσεις περιστροφές (βλ. Εικόνα 1.3). Η περιγραφή μιας κίνησης στον κύβο αντιπροσωπεύεται με το αρχικό γράμμα από το αγγλικό λεξιλόγιο. Οι κινήσεις γίνονται σύμφωνα με την κατεύθυνση των δεικτών του ρολογιού θεωρώντας ότι έχουμε μπροστά μας πάντα σταθερή μια πλευρά. Αν κάποια κίνηση ακολουθείται από το «i» τότε γίνεται με κατεύθυνση αντίθετη αυτής των δεικτών του ρολογιού. Εννοείται ότι οποιαδήποτε κίνηση ακολουθούμενη από την αντίστροφή της δεν επιφέρει καμία αλλαγή στον κύβο. Παρακάτω ακολουθεί μια συνοπτική εικόνα με τις 12 βασικότερες κινήσεις που επιτρέπονται. Τα γκρι χρώματα σημαίνουν αδιάφορη χρωματική πληροφορία στις αντίστοιχες πλευρές του κύβου. Κάθε κίνηση είναι το ¼ μιας πλήρης περιστροφής. 17

18 18

19 Εικόνα 1.3 Οι δώδεκα βασικότερες κινήσεις του κύβου του Rubik. Στην παρούσα εργασία χρησιμοποιήθηκαν και δυο επιμέρους κινήσεις οι οποίες αναφέρονται με τις ονομασίες Clock Wise Cube (CW) και Anti-Clock Wise Cube (AW). Στην ουσία η λειτουργία τους είναι να περιστρέψουν ολόκληρο τον κύβο σύμφωνα με την κατεύθυνση των δεικτών του ρολογιού και αντίθετης κατεύθυνσης αντίστοιχα. Είναι σημαντικό να αναφερθεί ότι ο συνδυασμός δύο ή περισσότερων βασικών κινήσεων έχουν ως αποτέλεσμα την δημιουργία μιας νέας κίνησης. Είναι μια μεθοδολογία επίλυσης, γνωστή ως finger tricks, που χρησιμοποιούν παίκτες διαγωνισμών για να λύσουν όσο το δυνατόν πιο γρήγορα τον κύβο. 1.3 ΒΑΣΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΕΠΙΛΥΣΗΣ Ο οδηγός επίλυσης του κύβου του Rubik που ακολουθεί είναι ο απλούστερος που υπάρχει. Δεν απαιτείται καμιά γνώση μιας και όλα τα βήματα για την λύση περιγράφονται αναλυτικά και συνοδεύονται από εικόνες έτσι ώστε να μπορεί να τον λύσει ο οποιοσδήποτε. Είναι σημαντικό να τοποθετείται σωστά ο κύβος στα χέρια μας. Αυτό σημαίνει ότι μπροστά πρέπει να είναι η πλευρά που λένε οι εικόνες για να έχουν αποτέλεσμα οι κινήσεις που πραγματοποιούνται. Ο βασικός αλγόριθμος επίλυσης χωρίζεται σε 6 στάδια. Το κάθε στάδιο έχει στόχο να ολοκληρώνει την επίλυση ενός συγκεκριμένου κομματιού του κύβου χωρίς να καταστρέφεται όμως το προηγούμενο που ήδη έχει υλοποιηθεί. Στάδιο Μηδέν: Σωστή τοποθέτηση του κύβου για την επίλυση του. 19

20 Σ' αυτό το στάδιο το μόνο που χρειάζεται είναι να τοποθετηθεί η άσπρη πλευρά στο κάτω μέρος του κύβου. Αυτό σημαίνει σε αντιστοιχία ότι στην πάνω πλευρά του κύβου θα βρίσκεται η κίτρινη. Το πώς θα είναι τοποθετημένες οι υπόλοιπες πλευρές είναι μια πληροφορία η οποία δεν επηρεάζει την επίλυση του κύβου. Ο αλγόριθμος ισχύει με όποιο χρώμα και αν τοποθετηθεί στην πάνω πλευρά αλλά είναι συνηθέστερο να επιλέγεται η κίτρινη. Πρώτο Στάδιο: Δημιουργία άσπρου σταυρού στην κίτρινη πλευρά. Στόχος του επιπέδου αυτού είναι η δημιουργία του άσπρου σταυρού στην κίτρινη επιφάνεια. Όπως αναφέρθηκε προηγουμένως το χρώμα κάθε πλευράς ορίζεται ανάλογα με τι χρώμα είναι το center piece της πλευράς αυτής. Το στάδιο αυτό δεν ακολουθεί κάποια συγκεκριμένη ακολουθία κινήσεων όπως τα επόμενα που θα ακολουθήσουν. Χρειάζεται πολύ εξάσκηση, επαφή με τον κύβο και μέσα από δοκιμές και λάθη το χέρι μαθαίνει και εφαρμόζει από μόνο του τις κινήσεις που απατούνται σε κάθε περίπτωση, ανάλογα με το πώς είναι μπερδεμένος ο κύβος. Εικόνα 1.4 Αποτέλεσμα μετά την δημιουργία άσπρου σταυρού στην κίτρινη πλευρά. Δεύτερο Στάδιο: Δημιουργία άσπρου σταυρού στην άσπρη πλευρά. Είναι η συνέχεια από το πρώτο στάδιο. Εφόσον έχει δημιουργηθεί ο άσπρος σταυρός στην κίτρινη πλευρά, τώρα είναι απαραίτητο να μεταφερθεί στην άσπρη πλευρά ταιριάζοντας ταυτόχρονα και σωστά τα edge pieces με τα center pieces στα οποία ανήκουν. 20

21 Εικόνα 1.5 Αποτέλεσμα μετά την επίτευξη του δεύτερου σταδίου. Οπτική γωνία από την άσπρη πλευρά που βρίσκεται στο κάτω μέρος. Τρίτο Στάδιο: Ολοκλήρωση της άσπρης επιφάνειας. Στο προηγούμενο στάδιο τοποθετήθηκαν τα edge pieces με τέτοιο τρόπο ώστε να ταιριάζουν με τα αντίστοιχα center pieces του κύβου. Στο συγκεκριμένο στάδιο θα τοποθετηθούν με σωστό τρόπο και τα corner pieces με αποτέλεσμα να ολοκληρωθεί η άσπρη πλευρά του κύβου. Αρχικά λοιπόν είναι απαραίτητο να γίνει η αναζήτηση των corner pieces που ανήκουν στην άσπρη πλευρά, έπειτα αυτά να ταιριάξουν με τις άλλες δυο πλευρές που ανήκουν και στο τέλος να εφαρμοστεί η ακολουθία κινήσεων R, U, Ri, Ui όσες φορές χρειάζεται μέχρι το corner piece να τοποθετηθεί σωστά στην γωνία που ανήκει. Εικόνα 1.6 Αποτέλεσμα μετά την επίτευξη του τρίτου σταδίου. Οπτική γωνία από την άσπρη πλευρά που βρίσκεται στο κάτω μέρος. 21

22 Τέταρτο στάδιο: Επίλυση του μεσαίου επιπέδου. Καθώς η άσπρη πλευρά έχει ολοκληρωθεί και βρίσκεται στο κάτω μέρος του κύβου, στόχος του σταδίου αυτού είναι να τοποθετηθούν τα edge pieces του μεσαίου επιπέδου στις σωστές τους θέσεις. Τα edge pieces του μεσαίου επιπέδου ορίζονται με όλα τα χρώματα του κύβου εκτός του κίτρινου. Στο στάδιο αυτό υπάρχουν δυο περιπτώσεις στις οποίες αντιστοιχεί και διαφορετική ακολουθία κινήσεων. Εάν το edge piece για να τοποθετηθεί στην θέση του χρειάζεται να ακολουθήσει την κατεύθυνση που παρουσιάζεται στην Εικόνα 1.7 παρακάτω, τότε η ακολουθία των κινήσεων που πρέπει να ακολουθηθεί είναι U, R, Ui, Ri, Ui, Fi, U, F. Εικόνα 1.7 Δεξιόστροφη τοποθέτηση edge piece μεσαίου επιπέδου [1]. Εάν το edge piece για να τοποθετηθεί στην θέση του χρειάζεται να ακολουθήσει την κατεύθυνση που παρουσιάζεται στην Εικόνα 1.8 παρακάτω, τότε η ακολουθία των κινήσεων που πρέπει να ακολουθηθεί είναι Ui, Li, U, L, U, F, Ui, Fi. 22

23 Εικόνα 1.8 Αριστερόστροφη τοποθέτηση edge piece μεσαίου επιπέδου [1]. Επιλέγοντας μία από τις δύο περιπτώσεις κάθε φορά και εφαρμόζοντας την αντίστοιχη ακολουθία κινήσεων σε κάθε πλευρά το αποτέλεσμα του τέταρτου σταδίου παρουσιάζεται στην Εικόνα 1.9. Εικόνα 1.9 Αποτέλεσμα μετά την επίτευξη του τέταρτου σταδίου. Πέμπτο στάδιο: Επίλυση της κίτρινης πλευράς. Το στάδιο αυτό χωρίζεται σε δύο επιμέρους βασικά βήματα για ευκολότερη προσέγγιση του σταδίου. Πρώτο βήμα, είναι η δημιουργία του κίτρινου σταυρού στην κίτρινη επιφάνεια. Σε περίπτωση, που μετά την επίτευξη του προηγούμενου σταδίου έχει ήδη δημιουργηθεί ο κίτρινος σταυρός, στην κίτρινη πλευρά, τότε το βήμα αυτό παραλείπεται. Σε αντίθετη περίπτωση, υπάρχουν τρεις πιθανές μορφές 23

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

25 Εικόνα 1.11 Αποτέλεσμα μετά την επίτευξη του πρώτου βήματος του πέμπτου σταδίου. Το επόμενο βήμα, του πέμπτου σταδίου, είναι να τοποθετηθούν και τα corner pieces στην θέση τους ασχέτως σε ποια γωνία ανήκουν, με αποτέλεσμα να επιλυθεί η κίτρινη επιφάνεια. Η ακολουθία κινήσεων για την επίλυση αυτού του βήματος είναι R, U, Ri, U, R, U, U, Ri. Πρέπει να επισημανθεί ότι η ακολουθία αυτή μπορεί να γίνει από 1 έως και 3 φορές μέχρι να ολοκληρωθεί η κίτρινη πλευρά, καθώς και στο βήμα αυτό, υπάρχουν συγκεκριμένες περιπτώσεις και οδηγίες, που πρέπει να ακολουθηθούν (βλ. Πίνακα 1.1). Πίνακας 1.1 Εάν δεν υπάρχει κανένα corner piece με κίτρινο χρώμα στην επάνω πλευρά, τότε αναζητείται κίτρινο corner piece στις υπόλοιπες πλευρές και τοποθετείται στα αριστερά, όπως φαίνεται στην εικόνα δίπλα. Εάν υπάρχει ένα corner piece με κίτρινο χρώμα στην επάνω πλευρά, τότε τοποθετείται στην αριστερή και κάτω γωνία, όπως φαίνεται στην εικόνα δίπλα. 25

26 Εάν υπάρχουν δύο corner piece με κίτρινο χρώμα στην επάνω πλευρά, τότε γίνεται αναζήτηση για κίτρινο corner piece στις υπόλοιπες πλευρές και τοποθετείται στην μπροστά πλευρά, όπως φαίνεται στην εικόνα δίπλα. Η επίτευξη του πέμπτου σταδίου γίνεται με την ολοκλήρωση του δεύτερου βήματος και το αποτέλεσμα παρουσιάζεται στην Εικόνα Εικόνα 1.12 Αποτέλεσμα μετά την επίτευξη του δεύτερου βήματος του πέμπτου σταδίου. Έκτο στάδιο: Τοποθέτηση κίτρινων corner και edge pieces στις σωστές θέσεις. Το έκτο στάδιο είναι το τελευταίο του βασικού αλγόριθμου επίλυσης και το πιο σημαντικό, καθώς αν δεν ακολουθηθούν ακριβώς οι οδηγίες, χάνεται και η προηγούμενη προεργασία που είχε πραγματοποιηθεί. Το στάδιο αυτό, επίσης, έχει δύο βασικά βήματα. Το πρώτο είναι η τοποθέτηση των κίτρινων corner pieces και το δεύτερο βήμα είναι η τοποθέτηση των κίτρινων edge pieces στην σωστή θέση αντίστοιχα. Στο πρώτο βήμα του έκτου σταδίου, θα ήταν χρήσιμο να ονοματιστούν οι τέσσερις γωνίες του κύβου όπως φαίνεται στην Εικόνα

27 Εικόνα 1.13 Ονομασία των τεσσάρων corner pieces. Στην συνέχεια, κρατώντας τον κύβο σταθερό, περιστρέφουμε την πάνω πλευρά του κύβου μέχρι να ταιριάξουν τουλάχιστον δύο corner pieces με τις πλευρές που ανήκουν. Αν ταιριάξουν οι γωνίες Α και Β, ή Α και D, ή B και C, τότε αυτές πρέπει να τοποθετηθούν με περιστροφή ολόκληρου του κύβου στην πίσω πλευρά. Έπειτα εφαρμόζεται η ακολουθία κινήσεων Ri, F, Ri, B, B, R, Fi, Ri, B, B, R, R, Ui. Σε περίπτωση που ταιριάξουν και οι τέσσερις γωνίες τότε παραλείπεται το πρώτο βήμα και εξετάζεται το δεύτερο βήμα του έκτου σταδίου. Αν ταιριάξουν διαγώνια τα corner pieces, πχ. Α και D, τότε εφαρμόζεται ο αλγόριθμος μια φορά και μετά ελέγχεται ποιες γωνίες ταίριαξαν, για να τοποθετηθούν στην πίσω πλευρά και να εφαρμοστεί ξανά ο αλγόριθμος. Το αποτέλεσμα του πρώτου βήματος για το έκτο στάδιο παρουσιάζεται στην Εικόνα Εικόνα 1.14 Αποτέλεσμα μετά την επίτευξη του πρώτου βήματος του έκτου σταδίου. 27

28 Στο δεύτερο βήμα του έκτου σταδίου, όπως προαναφέρθηκε, θα γίνει η τοποθέτηση των κίτρινων edge pieces στην σωστή θέση. Όπως και στο προηγούμενος βήμα, είναι χρήσιμη η ονομασία των edge pieces. Όπως παρουσιάζεται και στην Εικόνα 1.15 έχουμε τέσσερα edge pieces με τις ονομασίες E, F, G, H. Εικόνα 1.15 Ονομασία των τεσσάρων edge pieces. Εάν υπάρχει, έστω ένα edge piece στην σωστή θέση, τότε με περιστροφή ολόκληρου του κύβου τοποθετείται στην πίσω πλευρά. Απαγορεύεται η περιστροφή της πάνω πλευράς για να τοποθετηθεί το edge piece στην πίσω πλευρά επειδή τότε θα καταστραφούν τα corner pieces που είχαν τοποθετηθεί σωστά στο προηγούμενο βήμα. Έχοντας στην πίσω πλευρά το σωστά τοποθετημένο edge piece, παρατηρείται προς ποια κατεύθυνση πρέπει να τοποθετηθούν τα υπόλοιπα. Αν η κατεύθυνση που πρέπει να ακολουθήσουν για να μπουν στην σωστή θέση είναι η δεξιόστροφη τότε εφαρμόζεται ο αλγόριθμος F, F, U, L, Ri, F, F, Li, R, U, F, F. Αν η κατεύθυνση που πρέπει να ακολουθήσουν για να μπουν στην σωστή θέση είναι η αριστερόστροφη τότε εφαρμόζεται ο αλγόριθμος F, F, Ui, L, Ri, F, F, Li, R, Ui, F, F. Στην περίπτωση την οποία, κανένα edge piece δεν είναι σωστά τοποθετημένο τότε εφαρμόζεται μια φορά ένας από τους δύο παραπάνω αλγόριθμους και έπειτα αποφασίζεται η κατεύθυνση και ο αντίστοιχος αλγόριθμος επίλυσης. Το τελικό αποτέλεσμα για το έκτο στάδιο μετά το δεύτερο βήμα παρουσιάζεται στην Εικόνα

29 Εικόνα 1.16 Αποτέλεσμα μετά την επίτευξη του δεύτερου βήματος του έκτου σταδίου. 1.4 Ο ΑΛΓΟΡΙΘΜΟΣ FRIDRICH Ο αλγόριθμος Fridrich, ο οποίος τεκμηριώθηκε και διαδόθηκε από την Jessica Fridrich το 1981 [5], είναι μια μέθοδος επίλυσης του 3x3x3 κύβου του Rubik για παίκτες διαγωνισμών ταχύτερης επίλυσης. Είναι γνωστός με το ακρωνύμιο CFOP, δηλαδή Cross, F2L, OLL, PLL, τα οποία αποτελούν τα τέσσερα στάδια επίλυσης του κύβου. Ο CFOP, λύνει έναν κύβο του Rubik στις μισές κινήσεις από τις οποίες θα τις έλυνε ο βασικός αλγόριθμος. Στην ουσία, ο αλγόριθμος αυτός συνδυάζει δύο ή περισσότερα στάδια του βασικού αλγορίθμου σε ένα. Η διαδικάσια επίλυσης είναι παρόμοια με αυτή του βασικού αλγορίθμου. Όπως γίνεται κατανοητό, είναι απαραίτητη η εξάσκηση με τον βασικό αλγόριθμο επίλυσης πριν την δοκιμή του αλγορίθμου Fridrich. Εικόνα 1.17 Τα στάδια του αλγορίθμου Fridrich [6]. 29

30 Ο αλγόριθμος Fridrich αποτελείται από 4 στάδια: Cross: Δημιουργία άσπρου σταυρού στο πρώτο επίπεδο. Το πρώτο στάδιο περιλαμβάνει την επίλυση των τεσσάρων edge pieces, κατά προτίμηση του άσπρου χρώματος με σωστή τοποθέτηση στις πλευρές που ανήκει το καθένα. Δεν υπάρχει συγκεκριμένη ακολουθία κινήσεων, όπως και στον βασικό αλγόριθμο. Παρατηρείται, ότι το στάδιο αυτό είναι συνδυασμός του πρώτου και του δεύτερου σταδίου. Στον Πίνακα 1.2 που ακολουθεί παρουσιάζονται τέσσερα από τα συχνότερα παραδείγματα μαζί με την ακολουθία που πρέπει να ακολουθηθεί για να τοποθετηθεί ένα ή περισσότερα άσπρα edge pieces ταυτόχρονα στην θέση τους. Πίνακας 1.2 [6] F, F F, R, R, D, D Ui, Ri, F, R R, F, L, B, R, D F2L: Επίλυση των δύο πρώτων επιπέδων (First 2 Layers). Στον βασικό αλγόριθμο, τα στάδια που ακολουθούσαν ήταν η επίλυση της άσπρης πλευράς τοποθετώντας στις σωστές γωνίες τα corner pieces και έπειτα ακολουθούσε η επίλυση του μεσαίου επιπέδου. Το στάδιο F2L είναι ο συνδυασμός 30

31 αυτών των σταδίου του βασικού αλγόριθμου επίλυσης. Στην ουσία, το στάδιο τοποθετεί τα corner pieces της άσπρης πλευράς και τα edge pieces του μεσαίου επιπέδου ταυτόχρονα, λύνοντας στον 3x3x3 κύβο του Rubik, τον 2x2x2 για κάθε πλευρά. Υπάρχουν 41 συνηθέστερες περιπτώσεις που λύνουν τα δύο πρώτα επίπεδα σε λιγότερες κινήσεις απ όσες κατάφερνε ο βασικός αλγόριθμος σε δύο στάδια. Παρακάτω παρουσιάζονται συνοπτικά κάποιες βασικότερες περιπτώσεις με την αντίστοιχη ακολουθία κινήσεων που θα πρέπει να εφαρμοστεί αντίστοιχα. Πίνακας 1.3 [6] R, U, Ri Fi Ui, F Ui, Fi, U, F U, R, Ui, Ri Fi, U, F, Ui, Fi, U, F R, U, Ri, Ui, R, U, Ri R, Ui, Ri, U, R, Ui, Ri Fi, Ui, F, U, Fi, Ui, F Ui, R, Ui, Ri, U, R, U, Ri U, Fi, U, F,Ui, Fi, Ui, F Ui, R, U, Ri, U, R, U, Ri U, Fi, Ui, F, Ui, Fi, Ui, F 31

32 U, U, R, U, Ri, U, R, Ui, Ri U, U, Fi, Ui, F, Ui, Fi, U, F R, Ui, Ri, U, R, U, U, Ri, U, R, Ui, Ri R, Ui, Ri, AW, U, Ri, U, U, R, U, Ri, U, U, R OLL: Προσανατολισμός του τελευταίου επιπέδου (Orientation of Last Layer). Αυτό το στάδιο αναφέρεται στον χειρισμό του ανώτερου επιπέδου, με αποτέλεσμα να ολοκληρωθεί όλη η κίτρινη πλευρά. Υπενθυμίζεται ότι, στον βασικό αλγόριθμο η επίλυση της κίτρινης επιφάνειας γινόταν στο πέμπτο στάδιο ακολουθώντας δύο βασικά βήματα. Το στάδιο αυτό παραλείπει αυτά τα βήματα και λύνει την κίτρινη πλευρά, χωρίς πριν να έχει κατασκευαστεί ο κίτρινος σταυρός. Περιλαμβάνει την εκμάθηση συνολικά 57 αλγορίθμων, κάποιοι από τους οποίους απεικονίζονται στον Πίνακα 1.4. Χρειάζεται μεγάλη προσοχή και παρατήρηση για την εύρεση των κίτρινων corner pieces που δεν έχουν ολοκληρώσει σωστά την κίτρινη πλευρά. Οι αντιπροσωπευτικές εικόνες που περιέχει ο πίνακας αυτός παρουσιάζουν σε ποια θέση είναι πιθάνον να βρίσκονται τα κίτρινα edge και corner pieces, με οπτική γωνία την πάνω πλευρά του κύβου (κίτρινη επιφάνεια). Πίνακας 1.4 [6] R, U, Ri, Ui, Ri, F, R, R, U, Ri, Ui, Fi L, Fi, Li, Ui, L, U, F, Ui, Li 32

33 Ri, F, R, Bi, Ri, Fi, R, B R, Ui, Ui, R, R, Ui, R, R, Ui, R, R, Ui, Ui, R R, U, U, Ri, Ri, F, R, Fi, Ui, Ui, Ri, F, R, Fi Ri, Ui, Ri, F, R, Fi, U, R R, U, U, R, R, Ui, R, Ui, Ri, U, U, F, R, Fi R, U, Bi, Ui, Ri, U, R, B, Ri F, R, U, Ri, Ui, Fi 33

34 PLL: Μετάθεση του τελευταίου επιπέδου (Permutation of Last Layer). Το τελικό στάδιο περιλαμβάνει την κίνηση των edge pieces του άνω επιπέδου, καθώς διατηρείται ο προσανατολισμός τους. Στο στάδιο αυτό, μετατίθενται τα κίτρινα edge και τα corner pieces ταυτόχρονα. Υπάρχουν συνολικά 21 αλγόριθμοι για αυτό το στάδιο. Διακρίνονται με ονόματα, που συνήθως βασίζονται σε τι μοιάζουν (π.χ. η F μετάθεση, η οποία μοιάζει με το αντίστοιχο αγγλικό γράμμα, κλπ). Υπενθυμίζεται ότι η ολοκλήρωση της κίτρινης πλευράς γινόταν στον έκτο στάδιο ακολουθώντας αυστηρά δύο βασικά βήματα. Παρακάτω παρουσιάζεται ένας συνοπτικός πίνακας με τις πιο συχνές μεταθέσεις του PLL σταδίου. Με κόκκινα βέλη παριστάνονται η μετάθεση των corner pieces και με τα μπλε βέλη η μετάθεση των edge pieces. Πινάκας 1.5 [29] T perm R, U, Ri, Ui, Ri, F, R, R, Ui, Ri, Ui, R, U, Ri, Fi F perm Ri, U, U, Ri, Ui, CW, Ri, Fi, R, R, Ui, Ri, U, Ri, F, R, Ui, F Z perm U, Ri, Ui, R, Ui, R, U, R, Ui, Ri, U, R, U, R, R, Ui, Ri, U Y perm F, R, Ui, Ri, Ui, R, U, Ri, Fi, R, U, Ri, Ui, Ri, F, R, Fi 34

35 R, Ui, R, U, R, U, R, Ui, Ri, Ui, R, R Ua perm L, Ui, Ui, Li, Ui, Ui, L, Fi, Li, Ui, L, U, L, F, Li, Li, U Ra perm Ri, U, U, R, U, U, Ri, F, R, U, Ri, Ui, Ri, Fi, R, R, Ui Rb perm Ο αλγόριθμος Fridrich, κατά καιρούς, εξελίσσεται και βάσει αυτού αναπτύσσονται περισσότεροι αλγόριθμοι για speedsolving, με πολύ λιγότερες κινήσεις. Πρέπει να σημειωθεί στο σημείο αυτό ότι στην παρούσα διπλωματική εργασία υλοποιήθηκε μόνο το δεύτερο στάδιο της μεθόδου Fridrich, το F2L, καθώς μόνο με την εφαρμογή αυτού επιτεύχθηκε ο στόχος της μείωσης των κινήσεων στο μισό από αυτές που ε- κτελούσε τελικώς ο βασικός αλγόριθμος. 35

36 36

37 37

38 38

39 ΚΕΦΑΛΑΙΟ 2 Ο Ένα Nios II Ενσωματωμένο Σύστημα 2.1 ΔΙΑΔΙΚΑΣΙΑ ΣΧΕΔΙΑΣΗΣ SOPC Κατά τη διαδικασία ανάπτυξης ψηφιακών συστημάτων σημαντικό ρόλο έχει i) η απόδοση, ii) ο χρόνος σχεδίασης και iii) το κόστος του συστήματος. Οι παραδοσιακές μέθοδοι σχεδίασης ψηφιακών συστημάτων (πχ. ASICs και VLSI ολοκληρωμένα κυκλώματα) προσφέρουν υψηλή απόδοση, αλλά απαιτούν μεγαλύτερο χρόνο σχεδίασης. Η τελευταία τεχνολογία σχεδίασης υλικού συστήματων για System-On-a-Chip (SOC) εφαρμογές, με χαρακτηριστικά υψηλής απόδοσης, λιγότερου χρόνου σχεδιάσης και μικρότερου κόστους κατατασκευής, αξιοποιεί τις προγραμματιζόμενες διατάξεις όπως για παράδειγμα τα FPGAs (Field Programmable Gate Arrays). Οι διατάξεις αυτές μπορούν να προγραμματιστούν και να υλοποιήσουν έναν ή παραπάνω επεξεργαστές. Λόγω της δυνατότητας επαναπρογραμματισμού των FPGAs, η καινούρια αυτή προσέγγιση ονομάστηκε System-On-a-Programmable-Chip (SOPC). Οι πυρήνες ενός επεξεργαστή διακρίνονται σε δύο κατηγορίες, είτε σε «σκληρούς» (hard) είτε σε «μαλακούς» (soft), και ο χαρακτηρισμός αυτός αναφέρεται στην ευελιξία του πυρήνα για παραμετροποίηση. Οι σκληροί πυρήνες είναι λιγότερο διαμορφώσιμοι, αλλά έχουν υψηλότερες επιδόσεις. Οι μαλακοί πυρήνες επεξεργαστή, όπως ο NIOS II της Altera, χρησιμοποιούν ήδη υπάρχοντα στοιχεία προγραμματιζόμενης λογικής από το FPGA. Η Altera παρέχει συγκεκριμένα εργαλεία τόσο για την SOPC ανάπτυξη του συστήματος, όσο και για την ανάπτυξη των αντίστοιχων εφαρμογών. Το ειδικό αυτό εργαλείο που χρησιμοποιείται για τη διαμόρφωση των χαρακτηριστικών του επεξεργαστή δίνει την δυνατότητα στον σχεδιαστή να ρυθμίσει π.χ. το μέγεθος του αρχείου καταχωρητών, το πλήθος και το είδος των μονάδων πολλαπλασιασμού και διαίρεσης, την υποστήριξη αριθμητικής κινητής υποδιαστολής, τα interrupts καθώς και το I/O υλικό. Το εργαλείο αυτό, παράγει ένα HDL αρχείο (Hardware Description 39

40 Language) σε VHDL ή Verilog με τις προδιαγραφές του επεξεργαστή, το οποίο μαζί με την υπόλοιπη λογική του συστήματος, ακολουθούν στην σύνθεση και στην προσαρμογή τους με την χρήση ενός ειδικού CAD (Computer Aided Design) προγράμματος το οποίο προχωράει στον προγραμματισμό του FPGA. Το λογισμικό της εφαρμογής (software) το οποίο θα εκτελεσθεί από τον επεξεργαστή συνήθως αναπτύσσεται σε C ή C++ και μεταγλωττίζεται χρησιμοποιώντας έναν μεταγλωττιστή προσαρμοσμένο στον επεξεργαστή. Εφόσον το πρόγραμμα έχει παραχθεί πρέπει να φορτωθεί στη μνήμη του επεξεργαστή και στις μνήμες δεδομένων. Εάν το πρόγραμμα είναι μικρό, μπορεί να χωρέσει σε μια on-chip μνήμη η οποία είναι διαθέσιμη πάνω στο FPGA. Σε αυτή την περίπτωση, το πρόγραμμα αρχικοποιείται στη μνήμη με τον hardaware προγραμματισμό του FPGA. Επειδή όμως η on-chip μνήμη είναι συνήθως περιορισμένη, η λύση αυτή συχνά δεν είναι εφικτή. Η ασφαλέστερη επιλογή είναι η αποθήκευση του προγράμματος σε μία εξωτερική μνήμη, όπως μία SRAM ή SDRAM μνήμη. 2.2 Η ΑΝΑΠΤΥΞΙΑΚΗ ΚΑΡΤΑ DE2-70 ΤΗΣ ALTERA Η DE2-70 της Altera είναι μια αναπτυξιακή πλατφόρμα με χρήσιμα χαρακτηριστικά που επιτρέπουν στο χρήστη το σχεδιασμό διάφορων κυκλωμάτων, από απλά μέχρι κυκλώματα multimedia εφαρμογών. Η βασική διάταξη της πλατφόρμας καθώς και τα περιφερειακά στοιχεία που την περικλύουν απεικονίζονται παρακάτω στην Εικόνα

41 Εικόνα 2.1 Η αναπτυξιακή κάρτα DE2-70 της Altera [12]. Η αναπτυξιακή κάρτα DE2 70 της ALTERA περιλαμβάνει : FPGA Cyclone ΙΙ EP2C70F896C6 της Altera. Συσκευή σειριακής μορφοποίησης EPCS16 της Altera. USB blaster on board. SRAM μνήμη των 2Mbyte. 2 SDRAM μνήμες των 32Mbyte. Flash μνήμη των 8Mbyte. Υποδοχή κάρτας SD. 4 push buttons. 18 διακόπτες δύο θέσεων (up/down). 2 ρολόγια χρονισμού, το ένα στα 50 MHz και το άλλο στα MHz Audio Codec των 24 bit, με συχνότητα δειγματοληψίας από 8KHz έως και 96 KHz, με γραμμή εισόδου, γραμμή εξόδου και είσοδο μικροφώνου. VGA DAC που υποστηρίζει ανάλυση έως και 1600x1200 pixels στα 100 ΜHz. Οθόνη LCD 16x2 pixels. 2 αποκωδικοποιητές TV, συμβατοί με video συσκευές, όπως DVD player και LCD TV. 41

42 10/100 Ethernet ελεγκτή και 10/100Μ PHY πομποδέκτη. USB ελεγκτή κύριας/δευτερεύουσας συσκευής με δυο USB θύρες για διασύνδεση τύπου Α και τύπου Β. RS 232 πομποδέκτη. Διασύνδεση ποντικιού/πληκτρολογίου τύπου PS/ kb/s πομποδέκτη υπέρυθρων (IrDA). 18 κόκκινα και 9 πράσινα LEDs. 2 κεφαλές επέκτασης (expansion headers) 80 ακίδων συνολικά. Οι κεφαλές είναι σχεδιασμένες για να δέχονται IDE καλωδιοταινία 40 ακίδων. Εκτός από τα hardware χαρακτηριστικά, το DE2-70 διαθέτει την απαραίτητη υποστήριξη λογισμικού για τις τυπικές διασυνδέσεις εισόδου/εξόδου καθώς και δυνατότητα ελέγχου των διάφορων hardware μερών της. Το FPGA Cyclone ΙΙ 2C70 της Altera, έχει i) Λογικά Στοιχεία (Logic Elements), ii) 250 M4K RAM στοιχεία, iii) bits συνολικά RAM, iv) 150 ενσωματωμένους πολλαπλασιαστές, v) 4 PLLs (Phase Locked Loops), 622 pins εισόδου/εξόδου και vi) ένα πακέτο FineLine BGA 896 pins. Στην Εικόνα 2.2 παρατίθεται το δομικό διάγραμμα της DE2 70 πλατφόρμας. Όπως παρατηρείται όλες οι διασυνδέσεις πραγματοποιούνται μέσω της συσκευής FPGA Cyclone II. 42

43 Εικόνα 2.2 Block διάγραμμα του DE2-70 board [13]. 2.3 TO ΠΕΡΙΒΑΛΛΟΝ QUARTUS & ΤΟ NIOS II IDE Το Quartus II της Altera παρέχει ένα ολοκληρωμένο, πολυμορφικό περιβάλλον σχεδίασης, το οποίο εύκολα προσαρμόζεται στις εκάστοτε σχεδιαστικές ανάγκες του χρήστη. Κάποιες βασικές λειτουργίες είναι οι εξής: Σχεδίαση συστήματος με τη βοήθεια ενός σχεδιαστικού εργαλείου ηλεκτρονικών κυκλωμάτων (Electronic design editor). Περιγραφή του συστήματος σε γλώσσα HDL (Hardware Description Language). Τοποθέτηση του ψηφιακού συστήματος σε προκαθορισμένα λογικά κελιά στο FPGA από το χρήστη. Εξομοίωση του συστήματος για την ορθή λειτουργία του με την μελέτη των κυματομορφών εισόδου/εξόδου που παράγονται. Χρονική ανάλυση του συτήματος. 43

44 Παραγωγή των απαραίτητων αρχείων (.sof και.pof) για τον προγραμματισμό της συσκευής. Το Quartus παρέχει τη δυνατότητα της SOPC σχεδίασης μέσω του SOPC Builder. Ο SOPC Builder είναι ένα εργαλείο ανάπτυξης συστημάτων, που περιλαμβάνουν επεξεργαστές, όπως ο Nios II, περιφερειακά και μνήμες. Αυτοματοποιεί τη διαδικασία της ενσωμάτωσης διαφόρων components και παράγει αυτόματα μια λογική δομή εσωτερικής διασύνδεσης τους, απαλείφοντας έτσι την ανάγκη συγγραφής ενός Top-Level HDL αρχείου που θα ένωνε τα components μεταξύ τους. Μετά τη διαδικασία προσδιορισμού του συστήματος o SOPC Builder παράγει όλα τα απαραίτητα HDL (VHDL ή Verilog) αρχεία που περιγράφουν το σύστημα. Τα components του SOPC Builder χρησιμοποιούν τις Avalon δομές διασύνδεσης (Avalon interfaces) για τη φυσική διασύνδεσή τους. Υπάρχουν δύο διαφορετικές Avalon δομές διασύνδεσης: 1) Το Avalon Memory-Mapped (Avalon-MM) interface, που επιτρέπει την διασύνδεση των κυρίων (master) components με δευτερεύοντα (slave) components ανάγνωσης/εγγραφής. 2) Το Avalon Streaming (Avalon-ST) interface, που επιτρέπει τις σημείο-προς-σημείο συνδέσεις μεταξύ components που στέλνουν και λαμβάνουν δεδομένα. Το Nios II Software Build Tools for Eclipse είναι το γραφικό περιβάλλον ανάπτυξης software, για την οικογένεια των Nios ΙΙ επεξεργαστών. Το Nios II IDE (Integrated Development Environment) αναλαμβάνει την συγγραφή, αποσφαλμάτωση, συμβολομετάφραση και εκτέλεση προγραμμάτων. Δίνει επίσης τη δυνατότητα δημιουργίας τόσο απλών προγραμμάτων όσο και πολύπλοκων εφαρμογών που βασίζονται σε λειτουργικά συστήματα πραγματικού χρόνου. Για τo debugging παρέχονται βασικές αλλά και προηγμένες επιλογές ελέγχου της διαδικασίας. Μετά από την επιτυχή δημιουργία (build) της εφαρμογής, το Nios II IDE παράγει τα εκτελέσιμα αρχεία (.elf) που θα εκτελεστούν στον Nios II. 44

45 Εικόνα 2.3 Διάγραμμα ροής ανάπτυξης SOPC συστήματος 2.4 Ο ΕΠΕΞΕΡΓΑΣΤΗΣ NIOS II ΤΗΣ ALTERA O επεξεργαστής Nios II είναι ένας γενικού σκοπού, παραμετροποιήσιμος, soft-core, RISC (Reduced Instruction Set Computer) επεξεργαστής. Προσφέρει : Σύνολο εντολών, μνήμη και data path των 32-bit. 32 καταχωρητές γενικού σκοπού. 32 εξωτερικές πηγές διακοπών. Εντολές πολλαπλασιασμού και διαίρεσης 32x32. Εντολές πολλαπλασιασμού των 64 και 128-bit. Εντολές κινητής υποδιαστολής απλής ακρίβειας. Κύκλωμα ολίσθησης δεδομένων. Πρόσβαση σε on-chip περιφερειακά και διασυνδέσεις με off-chip μνήμες και περιφερειακά. Περιβάλλον ανάπτυξης software βασισμένο σε GNU C/C++ tool chain και NIOS II IDE. Προηγμένες δυνατότητες αποσφαλμάτωσης. 45

46 Ανάλυση σε πραγματικό χρόνο εντολών και δεδομένων καθώς και άλλων σημάτων με το Altera's SignalTap II logic analyzer. Instruction set architecture (ISA) συμβατό σε όλα τα Nios II συστήματα. Απόδοση έως 250 DMIPS. Ένα Nios II σύστημα είναι ισοδύναμο με ένα μικροελεγκτή που περιλαμβάνει έναν επεξεργαστή και ένα συνδυασμό από περιφερειακές συσκευές και μνήμη υλοποιημένο σε ένα FPGA της ALTERA. Όλα τα Nios II συστήματα κάνουν χρήση του ίδιου συνόλου εντολών και του ίδιου προγραμματιστικού μοντέλου. Εικόνα 2.4 Το block διάγραμμα του core του Nios II [13]. Η Altera διαθέτει 3 Nios II cores: Nios II/f: Το Nios II/f fast core είναι σχεδιασμένο για μέγιστη απόδοση, καθώς παρουσιάζει τις περισσότερες ρυθμίσεις παραμέτρων. Nios II/s: Το Nios II/s standard core έχει σχεδιαστεί για μικρό μέγεθος, διατηρώντας παράλληλα την απόδοση σε ικανοποιητικά επίπεδα. 46

47 Nios II/e: Το Nios II/e economy core έχει σχεδιαστεί ώστε να έχει το μικρότερο δυνατό μέγεθος, με αποτέλεσμα, το core αυτό να έχει περιορισμένο σύνολο χαρακτηριστικών. Σημειώνεται ότι κάποιες ρυθμίσεις δεν είναι διαθέσιμες. Στην εργασία αυτή χρησιμοποιήθηκε ο Nios II/f, λόγω της μεγάλης υπολογιστικής ισχύς, για καλύτερη απόδοση του συστήματος, αν και όπως αναφέρθηκε και προηγουμένως καταλαμβάνει περισσότερο χώρο από τον standard core. Το Nios II/f fast core διαθέτει τα εξής βασικά χαρακτηριστικά: Ξεχωριστή προαιρετική κρυφή μνήμη εντολών και δεδομένων. Προαιρετικό MMU (Memory Management Unit) για συστήματα που το απαιτούν. Προαιρετικό MPU (Memory Protection Unit) για συστήματα που απαιτούν προστασία μνήμης. Πρόσβαση σε έως 2GB εξωτερικής μνήμης όταν δεν υπάρχει MMU και 4GB όταν το MMU είναι παρόν. Tightly coupled μνήμη για εντολές και δεδομένα. Pipeline 6 σταδίων. Δυναμική πρόβλεψη σε εντολές διακλάδωσης. Επιλογές hardware για πολλαπλασιασμό, διαίρεση και ολίσθηση για βελτίωση της απόδοσης του core μέσω της βελτίωσης των αριθμητικών διαδικασιών. Υποστήριξη προσθήκης εντολών. Υποστήριξη προαιρετικέών βελτιστοποιήσεων για την μονάδα αποσφαλμάτωσης JTAG. 2.5 UNIVERSITY PROGRAM ( UP) CORES & IP CORES Για την υλοποίηση του συστήματος επίλυσης του κύβου του Rubik, χρησιμοποιήθηκε ένας αριθμός έτοιμων υποσυστημάτων (cores) που είτε είναι μέρος μιας βιβλιοθήκης με όνομα UP IP cores, είτε παρέχονται εξ αρχής ως μέρος του SOPC Builder. Τα UP IP Cores είναι έτοιμα προς χρήση components για τον SOPC Builder και περιλαμβάνουν σχεδόν όλες τις περιφερειακές συσκευές του DE2-70 Board της Altera. 47

48 Συγκεκριμένα χρησιμοποιήθηκαν: Clock Signals for DE Series Board Peripherals: Παράγει τα κατάλληλα σήματα χρονισμού για το VGA core, το Audio core και τον SDRAM controller, υποστηρίζοντας όλα τα board της σειράς DE. SDRAM Controller: Επικοινωνεί με την SDRAM μνήμη του DE2-70 board και παρέχει την κατάλληλη διασύνδεση για τη χρήση της SDRAM μνήμης. SRAM/SSRAM Controller: Δίνεται η δυνατότητα εκμετάλλευσης της SRAM μνήμης του board εγκαθιστώντας μία διεπαφή επικοινωνίας με αυτό το chip μνήμης για χρήση της μνήμης ως pixel buffer. Pixel Buffer DMA Controller: Χρησιμοποιεί διασύνδεση για να διαβάζει video frames από μία μνήμη. VGA Controller: Οδηγεί τα απαιτούμενα σήματα από τον VGA ψηφιακό αναλογικό μετατροπέα (DAC) του DE2 board, ο οποίος με τη σειρά του παράγει τα κατάλληλα σήματα για απεικόνιση σε μία VGA συμβατή οθόνη. Character Buffer: Το core αυτό μετατρέπει ASCII χαρακτήρες για γραφικές αναπαραστάσεις σε οθόνη. DMA Controller for Video: Διατίθενται δύο τρόποι λειτουργίας - «from stream to memory» και «from memory to stream». Ανάλογα με τον τρόπο λειτουργίας επιλέγεται, το core ανακτά ή αποθηκεύει καρέ βίντεο από ή προς μία εξωτερική μνήμη. Bayer Pattern Resamper: Το core αυτό μετατρέπει μία ροή βίντεο δεδομένων, κωδικοποιημένα σύμφωνα με το πρότυπο Bayer Pattern, σε δεδομένα 24-bit RGB. Dual Clock FIFO: Η λειτουργία του core αυτού είναι να καθυστερεί βίντεο δεδομένα και να βοηθάει στην ορθή μεταφορά τους μεταξύ δύο κύριων ρολογιών. RGB Resampler: Το core αυτό μετατρέπει τα δεδομένα ενός καρέ βίντεο μεταξύ οποιωνδήποτε RGB προτύπων του χρωματικού χώρου, εκτός από το πρότυπο Bayer Pattern. Alpha Blender: Σκοπός αυτού του core είναι να συνδυάζει δύο εισερχόμενες ροές βίντεο σε μία. 48

49 Audio/Video Configuration Core for DE2-70 Boards: Το core αυτό αλληλεπιδρά με τον Audio Codec και τη Video είσοδο του DE2 Board καθώς και με τις 2 Video Daughter Boards: Digital Camera (TRDB_DC2) και TFTLCD Module (TRDB_LCM). Video-in Decoder: Το core αυτό λαμβάνει βίντεο δεδομένα είτε από την ενσωματωμένη θύρα εισόδου βίντεο, και κατά συνέπεια από τον TV decoder της πλακέτας, είτε από μία από τις δύο CCD κάμερες των 1.3 ή 5.0 Mpixels. Scaler & Clipper: Διαμορφώνουν την ανάλυση των εισερχόμενων καρέ προσθέτοντας ή αφαιρώντας ολόκληρες γραμμές ή/και στήλες από pixels. Τα IP cores που παρέχονται από την ALTERA και εγκαθίστανται μαζί με το εργαλείο Quartus είναι βασικά στοιχεία κάθε SOPC συστήματος. Τα IP cores που χρησιμοποιήθηκαν στο σύστημα είναι: JTAG UART: Το JTAG UART core υλοποιεί μία μέθοδο σειριακής επικοινωνίας μεταξύ ενός υπολογιστή και ενός SOPC συστήματος. Interval Timer: Είναι ένας απαριθμητής-χρονιστής των 32 ή 64 bits. Parallel input/output (PIO): Παρέχει μία χαρτογραφημένη διασύνδεση με I/O θύρες γενικού σκοπού. Έχουν επιλεγεί για τη χρήση διακοπτών, push-buttons και LEDs. 2.6 Η TRDB-D5M CAMERA ΤΗΣ TERASIC Η κάμερα TRDB-D5M της Terasic είναι μια θυγατρική πλατφόρμα των 5.1 Mpixels, για την παραγωγή βίντεο δεδομένων σε πραγματικό χρόνο. Είναι πλήρως συμβατή με το DE2-70 board της Altera μέσω μιας εκ των δύο 40-pins κεφαλών επέκτασης, δίνοντας στο σύστημα τη δυνατότητα να λαμβάνει υψηλής ανάλυσης video δεδομένα. Τα κύρια χαρακτηριστικά της είναι: Υψηλός ρυθμός καρέ (frame rate). Υψηλή απόδοση σε συνθήκες χαμηλών επιπέδων φωτισμού. Μικρό ρεύμα διαρροής. Γενική απελευθέρωση του σήματος Reset. Λειτουργία «Bulb exposure» για ρύθμιση του χρόνου έκθεσης του αισθητήρα. Λειτουργία «Snapshot» για λήψη φωτογραφιών. 49

50 Οριζόντια και κάθετη αναστροφή εικόνων Λειτουργίες παράληψης γραμμών και στηλών για τη μείωση του μεγέθους της εικόνας, χωρίς να μειώνει το οπτικό πεδίο. Λειτουργίες «Binning» γραμμών και στηλών για τη βελτιστοποίηση της ποιότητας εικόνας κατά την αλλαγή του μεγέθους της. Απλοποιημένη σειριακή διασύνδεση 2 καλωδίων (πρωτόκολλο επικοινωνίας I2C) Προγραμματιζόμενος έλεγχος του κέρδους (gain), του ρυθμού δειγματοληψίας (frame rate) και του μεγέθους των καρέ, του χρόνου έκθεσης. Αυτόματη βαθμονόμηση (calibration). Εικόνα 2.5 Η TRDB-D5M camera [12]. Ο πίνακας των pixel της TRDB D5M κάμερας, διευθυνσιοδοτείται από 2752 στήλες και 2004 γραμμές. Η διεύθυνση «γραμμή 0 - στήλη 0» αντιπροσωπεύει την πάνω δεξιά γωνία του πίνακα. Η ενεργή περιοχή του πίνακα αποτελεί το σημείο που εξάγεται η εικόνα. Το μέγεθος της είναι 160 γραμμές λιγότερες, δηλαδή 2592 γραμμές και 60 στήλες λιγότερες, δηλαδή 1944 στήλες. Η περιοχή αυτή περικλείεται από μια οριακή περιοχή από ανενεργά pixels. 50

51 Εικόνα 2.6 Ο πίνακας των pixel της TRDB D5M camera [18]. Τα pixels εξάγονται με χρωματικό format Bayer Pattern, δηλαδή αποτελούνται από τέσσερα χρώματα: Green1, Green2, Red και Blue (G1, G2, R, B) αντιπροσωπεύοντας τρία χρωματικά φίλτρα. Τα Green1 και Green2 αντιμετωπίζονται ως δύο διαφορετικά χρώματα από την διαδρομή των δεδομένων (Datapath) και την αλυσίδα του σήματος (Signal Chain). Εικόνα 2.7 Το χρωματικό format Bayer Pattern [18]. Είναι σημαντικό ότι, η TRDB D5M κάμερα παρέχει 255 καταχωρητές. Ο χρήστης μπορεί να έχει πρόσβαση σε αλλαγές ρυθμίσεων μόνο σε 41, καθώς οι υπόλοιποι είναι κλειδωμένοι (reserved). Κάποιοι από τους πιο σημαντικούς προσβάσιμους καταχωρητές είναι o Pixel Clock Control, ο οποίος ελέγχει τον χρονισμό της κάμερας συχνότητας 96MHz, ο Read Mode 1, με την αρχικοποίηση του οποίου γίνεται η λήψη φωτογραφιών και ο Reset καταχωρητής, ο οποίος είναι αρμόδιος για την 51

52 επαναφορά της κάμερας. Φυσικά, η επαναφορά της TRDB_D5M μπορεί να γίνει και με έναν δεύτερο τρόπο μέσω του pin RESETn. Στο hard reset, το pin RESETn μπορεί να μεταβεί οποιαδήποτε στιγμή σε κατάσταση low, επαναφέροντας όλους τους καταχωρητές στις αρχικές ρυθμίσεις (defaults). Εάν το pin επανέλθει στη κατάσταση high, το chip συνεχίζει σε κανονική λειτουργία. 52

53 ΚΕΦΑΛΑΙΟ 3 Ο Ανάπτυξη Υλικού Συστήματος 3.1 ΠΡΟΔΙΑΓΡΑΦΕΣ ΣΥΣΤΗΜΑΤΟΣ Η υλοποίηση ενός ενσωματωμένου συστήματος Nios II, στο DE2-70 board της Altera, συνδυάζει την ανάπτυξη κατάλληλου υλικού (hardware) και λογισμικού (software). Στο παρόν κεφάλαιο θα γίνει ο προσδιορισμός των προδιαγραφών του συστήματος αυτού, με τη βοήθεια της λογικής σχεδίασης SOPC. Το σύστημα που αναπτύχθηκε περιλαμβάνει τρία βασικά στάδια: τη λήψη και την προβολή φωτογραφιών για κάθε μία από τις έξι πλευρές ενός συγκεκριμένου κύβου του Rubik, την real-time αναγνώριση χρωμάτων από κάθε φωτογραφία που λήφθηκε σε κάθε πλευρά για τον κύβο αυτόν και τέλος την παρουσίαση της επίλυσής του σε μια οθόνη VGA ανάλυσης 640x480 pixels. Η ανάπτυξη του συστήματος βασίζεται στη χρήση του soft-core επεξεργαστή Nios II και εκμεταλλεύεται ένα πλήθος περιφερειακών που βρίσκονται ενσωματωμένα στο DE2-70. Η real-time αναγνώριση των χρωμάτων και η επίλυση του κύβου γίνεται σε software επίπεδο, το οποίο θα εξεταστεί στο επόμενο κεφάλαιο. Αντίθετα, η λήψη και η προβολή των φωτογραφιών επιτυγχάνεται μέσω του hardware, με τη σύνδεση της TRDB-D5M κάμερας με το κυρίως σύστημα. Η χρήση του κατάλληλου core για την συνδεσμολογία αυτή αναλαμβάνει την αυτόματη αρχικοποίηση των καταχωρητών της κάμερας. Έτσι, εξασφαλίζεται η σωστή ρύθμιση των παραμέτρων που προσφέρει η κάμερα και τα καρέ φτάνουν στην οθόνη. Όπως παρουσιάζεται στο διάγραμμα ροής στην Εικόνα 3.1, ο CMOS αισθητήρας της κάμερας, στέλνει τα δεδομένα απευθείας στον Video-In Decoder. Τα δεδομένα αποκωδικοποιούνται και μετατρέπονται από τον Bayer Pattern Resampler σε 24-bit RGB μορφή. Σημειώνεται ότι, η ανάλυση της φωτογραφίας πέφτει στα 1296x972 pixels, λόγω της διαφορετικής δόμησης των δύο χρωματικών προτύπων. Ο Clipper αφαιρεί 53

54 ολόκληρες γραμμές και στήλες, ενώ ο Scaler υποδειγματοληπτεί τα δεδομένα. Στην ουσία, τα δύο αυτά cores αναλαμβάνουν να μειώσουν τον όγκο δεδομένων. Τα δεδομένα θα καταλήξουν στον Pixel Buffer μέσω του DMA Controller. Εικόνα 3.1 Το διάγραμμα ροής για την λήψη φωτογραφιών. Για την προβολή αντίστοιχα, όλα τα cores που συντελούν στη μεταφορά των δεδομένων από τον Pixel Buffer στην VGA οθόνη, ξεκινούν με τον Pixel Buffer DMA Controller, ο οποίος αντλεί τα βίντεο δεδομένα και τα στέλνει για διαμόρφωση στον RGB Resampler σε 30-bit RGB Format. Η χρήση του Character Buffer για την εμφάνιση χαρακτήρων στην οθόνη καθιστά απαραίτητη την χρήση του Alpha Blender, ο οποίος παίρνει τα βίντεο δεδομένα από τον RGB Resampler και τα δεδομένα χαρακτήρων του Character Buffer, και αναλαμβάνει να τα συνδυάσει σε μία μόνο ροή. Η ροή αυτή καταλήγει σε έναν Dual-Clock FIFO Buffer, η έξοδος του οποίου είναι συγχρονισμένη με τον VGA Controller για την απεικόνιση των δεδομένων στην οθόνη του συστήματος. Παρακάτω στην Εικόνα 3.2 παρουσιάζεται το διάγραμμα ροής για την προβολή φωτογραφιών. Το συγκεκριμένο κομμάτι του συστήματος, λαμβάνει μία συνεχόμενη ροή βίντεο δεδομένων που οδηγείται στην οθόνη. Για να επιτευχθεί όμως αυτό, χρειάζονται οι κατάλληλες ρυθμίσεις μέσω του SOPC Builder. 54

55 Εικόνα 3.2 Το διάγραμμα ροής για την προβολή φωτογραφιών. 3.2 ΠΡΟΣΘΗΚΗ ΚΑΙ ΡΥΘΜΙΣΗ ΤΟΥ NIOS II ΕΠΕΞΕΡΓΑΣΤΗ Δεδομένου ότι χρησιμοποιούμε το DE2-70 board, το πρώτο στοιχείο που θα πρέπει να προστεθεί στο σύστημα είναι ο επεξεργαστής Nios II. Όπως είχε αναφερθεί και σε προηγούμενο κεφάλαιο, επιλέγεται ο Nios II/f (fast Nios II). Στο block εικόνων με τίτλο Εικόνα 3.3, παρουσιάζεται το core Nios II Processor που επιλέχθηκε και δίνεται αρκετή προσοχή στα πεδία του πολλαπλασιασμού, όπου χρησιμοποιούνται τα embedded multipliers blocks, καθώς και στους Reset Vector και Exception Vector, οι οποίοι τοποθετούνται στην SDRAM μνήμη του συστήματος. Οι υπόλοιπες ρυθμίσεις που απεικονίζονται είναι οι default του core του επεξεργαστή όπως δίνονται από την Altera. 55

56 56

57 57

58 Εικόνα 3.3 Ρυθμίσεις του Nios II/f core. 3.3 ΠΡΟΣΘΗΚΗ ΚΑΙ ΡΥΘΜΙΣΗ ΤΗΣ ΜΝΗΜΗΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Το σύστημα που υλοποιήθηκε περιλαμβάνει δύο core που αφορούν τις μνήμες. Η κύρια μνήμη του συστήματος είναι η SDRAM και η SRAM που παίζει τον ρόλο του Pixel Buffer. Η κύρια μνήμη του συστήματος επιλέγεται η ενσωματωμένη SDRAM του DE2-70 board. Χρησιμοποιείται για την αποθήκευση και την εκτέλεση της εφαρμογής. Το core SDRAM Controller ρυθμίζει την χωρητικότητα της, στο μέγιστο δυνατό, δηλαδή 64 Mbytes (βλ. Εικόνα 3.4). Οι ρυθμίσεις του χρονισμού της παραμένουν στις default που παρέχει η Altera. Πρέπει να σημειωθεί ότι, η συγκεκριμένη SDRAM χρησιμοποιεί αρνητική ακμή ρολογιού σε αντίθεση με τον επεξεργαστή Nios II. Επομένως, για τη σωστή λειτουργία της, προκειμένου να αποτελέσει μέρος του συστήματός μας, χρειάζεται ένα σήμα ρολογιού μετατοπισμένο στη φάση κατά 180 ο. Η χρήση ενός άλλου 58

59 component από τα UP IP cores της Altera, το οποίο να αναφερθεί παρακάτω, συντελεί στην σωστή ένταξη της μνήμης στο σύστημα. Εικόνα 3.4 Ρυθμίσεις της SDRAM μνήμης. Στο σύστημα χρησιμοποιείται μια επιπλέον μνήμη. Η SRAM είναι κομβικής σημασίας για το συνολικό σύστημα καθώς υλοποιεί τον Pixel Buffer. Για τη διαμόρφωση του core επιλέγεται η αναπτυξιακή πλατφόρμα, στην οποία θα υλοποιείται το σύστημα (DE2-70), ενώ για τη λειτουργία της ως Pixel Buffer θα πρέπει να επιλεχθεί η παράμετρος «Use as a pixel buffer for Video out». 59

60 Εικόνα 3.5 Ρυθμίσεις της SRAM μνήμης. 3.4 ΡΥΘΜΙΣΗ ΤΟΥ AUDIO & VIDEO CONFIGURATION CORE Επιπλέον προσθήκη περιφερειακού υποκυκλώματος, όπως αναφέρθηκε στην αρχή του κεφαλαίου, είναι η κάμερα TRDB-D5M. Για την ενσωμάτωση, λοιπόν, της κάμερας στο σύστημά, επιλέγεται το core Audio and Video Configuration και στο πεδίο «Audio/Video Device» επιλέγεται η «5 Megapixel Camera (TRDB_D5M)». Ακόμη, η αυτόματη αρχικοποίηση της επιτυγχάνεται επιλέγοντας το «Auto Initialize Device(s)». Με την συγκεκριμένη ρύθμιση, μετά την εκκίνηση του συστήματος, το core θα στείλει στους καταχωρητές τις απαραίτητες ρυθμίσεις για τη σωστή λειτουργία της κάμερας. Πρέπει να σημειωθεί ότι, χρησιμοποιήθηκε ένα συγκεκριμένο PIO, το οποίο θα λειτουργεί ως σήμα enable για τη λειτουργία της κάμερας. Η χρήση του ήταν απαραίτητη, καθώς σε συνδυασμό με μια πύλη AND παράγεται ο ζητούμενος παλμός για την ενεργοποίηση και απενεργοποίηση της κάμερας. Το PIO επιλέχθηκε να είναι εύρους 1 bit, ενώ η κατεύθυνσή του ορίζεται ως έξοδος («Output»). 60

61 Παρακάτω στην Εικόνα 3.6, παρουσιάζονται οι ρυθμίσεις τόσο του core για το Configuration της κάμερας όσο και του PIO. Εικόνα 3.6 Ρυθμίσεις του Audio & Video Configuration για την κάμερα και του PIO για την λειτουργία της κάμερας. 3.5 ΡΥΘΜΙΣΗ ΤΟΥ CLOCK SIGNALS FOR DE-SERIES BOARD PERIPHERALS CORE Το σύστημα που υλοποιείται απαιτεί επιπλέον σήματα χρονισμού για την SDRAM μνήμη, αλλά και για τις περιφερειακές συσκευές, όπως δηλαδή την οθόνη και την κάμερα του συστήματος. 61

62 Κατά την παραμετροποίηση του core επιλέγεται το μοντέλο DE2-70 και ενεργοποιούνται οι ρυθμίσεις για την SDRAM και τις βίντεο συσκευές που χρησιμοποιούνται. Εικόνα 3.7 Ρυθμίσεις του Clock Signals for DE Series Board Peripherals core. 3.6 ΡΥΘΜΙΣΗ ΤΟΥ VIDEO-IN DECODER CORE Τα βίντεο δεδομένα που συλλέγονται από την κάμερα, μεταφέρονται απευθείας στον αποκωδικοποιητή, ο οποίος αναλαμβάνει τη σωστή αποκωδικοποίησή τους. Στην επιλογή του core για την είσοδο βίντεο δεδομένων, επιλέγεται η «5MP daughter-card (THBD_D5M)». Στο παράθυρο με τις πληροφορίες, παρατηρείται η ανάλυση και το χρωματικό format με το οποίο στέλνει τα δεδομένα η κάμερα στο σύστημα. 62

63 Εικόνα 3.8 Ρυθμίσεις του Video-In Decoder core. 3.7 ΡΥΘΜΙΣΗ ΤΟΥ BAYER PATTERN RESAMPLER CORE Το επόμενο core που προστέθηκε στο σύστημα ήταν το Bayer Pattern Resampler το οποίο χρειάζεται για την διαμόρφωση των βίντεο δεδομένων που εισάγει η κάμερα στο σύστημα. Για τον λόγο αυτό στο πεδίο «Video Source» επιλέγεται η παράμετρος «5MP Daughter-card (THBD_D5M)». Εικόνα 3.9 Ρυθμίσεις του Bayer Pattern Resampler core. 63

64 3.8 ΡΥΘΜΙΣΕΙΣ ΤΩΝ CLIPPER & SCALER CORES Στο σύστημα χρησιμοποιήθηκαν δυο cores για την κατάλληλη μετατροπή της εισερχόμενης ροής των βίντεο δεδομένων. Το πρώτο core είναι ο Clipper, ο οποίος ρυθμίζεται ώστε να δέχεται βίντεο δεδομένα διαστάσεων 1296x972 pixels με 24-bit RGB χρωματικό format. Πιο συγκεκριμένα, η λειτουργία του είναι να διαμορφώνει τις διαστάσεις των εισερχόμενων δεδομένων από την κάμερα αφαιρώντας 16 στήλες και 12 γραμμές από pixels. Το αποτέλεσμα είναι, τα εξερχόμενα καρέ να έχουν ανάλυση 1280x960 pixels. Μια παρόμοια διεργασία κάνει και το core του Scaler. Στο παρόν σύστημα, ρυθμίζεται ώστε να μειώσει την ανάλυση των εξερχόμενων καρέ στο 1/16 των εισερχόμενων. Για το λόγο αυτό, ο παράγοντας μεγέθυνσης, τόσο του πλάτους στο Width Scaling Factor, όσο και του ύψους Height Scaling Factor, επιλέχθηκαν να είναι 0,25. Εικόνα 3.10 Ρυθμίσεις των Clipper και Scaler cores. 64

65 3.9 ΡΥΘΜΙΣΗ ΤΟΥ PIXEL BUFFER DMA CONTROLLER CORE Προκειμένου να ανακτηθούν τα βίντεο δεδομένα, από τον Pixel Buffer (SRAM), χρησιμοποιείται το core Pixel Buffer DMA Controller, το οποίο θα πρέπει να αναζητά για νέα δεδομένα στην SRAM. Για το λόγο αυτό, o DMA Controller θα πρέπει να λειτουργεί σε «Consecutive» λειτουργία, και οι επιλογές «Default Buffer Start Address» και «Default Back Buffer Start Address» λαμβάνουν την διεύθυνση που έχει ο Pixel Buffer στην μνήμη. Τέλος, στις επιλογές που καθορίζουν το Frame Resolution ορίζονται οι τιμές 640 και 480 που αντιστοιχούν στο πλάτος και το ύψος της εικόνας και στην επιλογή του Color Space επιλέγεται ο 24 bit RGB. Εικόνα 3.11 Ρυθμίσεις του Pixel Buffer DMA Controller core. 65

66 3.10 ΡΥΘΜΙΣΗ ΤΟΥ RGB RESAMPLER CORE Το RGB Resampler Core ρυθμίζεται επιλέγοντας «24-bit RGB» στο πεδίο «Incoming Format» και «30-bit RGB» στο πεδίο «Outgoing Frame». Η μορφοποίηση, τόσο των εισερχόμενων όσο και των εξερχόμενων καρέ, φαίνεται και πάλι στη γραμμή πληροφοριών. Εικόνα 3.12 Ρυθμίσεις του RGB Resampler core ΡΥΘΜΙΣΗ ΤΟΥ VGA CONTROLLER CORE Ένα ακόμα core του συστήματος είναι το VGA Controller. Όπως και σε προηγούμενα core του συστήματος, έτσι και σε αυτό πρέπει να ορισθεί η αναπτυξιακή πλατφόρμα στο πεδίο DE-Series Board και τέλος τι είδους συσκευή Video-out έχει το σύστημα. Στο παρόν σύστημα επιλέχθηκε μια VGA οθόνη, και οι πληροφορίες που δίνονται στο τέλος του core είναι η ανάλυση και το χρωματικό format με τα οποία θα παρουσιάζονται τα δεδομένα στην οθόνη. 66

67 Εικόνα 3.12 Ρυθμίσεις του VGA Controller core ΡΥΘΜΙΣΗ ΤΟΥ CHARACTER BUFFER CORE Προφανώς το σύστημα που υλοποιείται έχει τη δυνατότητα εμφάνισης μηνυμάτων. Οι χαρακτήρες που αναπαράγει ο Character Buffer θα πρέπει να είναι συμβατοί με την οθόνη που χρησιμοποιείται. Επομένως στο πεδίο «Video Out Device» επιλέγεται «On-board VGA DAC» και για την κοινή χρήση του με τον Pixel Buffer, ενεργοποιείται η επιλογή «Enable Transparency». Το core του Character Buffer είναι σχεδιασμένο να μπορεί να στείλει κωδικούς χαρακτήρες ASCII στο core του VGA Controller. Υποστηρίζει μία επιλογή χρώματος (λευκό) με ένα διαφανές φόντο. Στην παρούσα εργασία ήταν απαραίτητη η εμφάνιση μηνυμάτων στα Ελληνικά, για τον λόγο αυτόν τροποποιήθηκε το αρχείο αρχικοποίησης της μνήμης των ASCΙΙ χαρακτήρων (altera_up_video_char_mode_rom_128.mif) το οποίο παράγεται μετά την σύνθεση της SOPC σχεδιάσης και βρίσκεται στον φάκελο που θα δημιουργηθεί με όνομα synthesis submodules. Στην ουσία έγινε μια επεξεργασία των ήδη υπάρχοντων 67

68 χαρακτήρων έτσι ώστε να προσαρμοστούν στα γράμματα της Ελληνικής αλφαβήτου. Για παράδειγμα, ο ASCII χαρακτήρας F μετατράπησε σε Φ ως εξής: % Character # 70 or 0x46 % 4480 : ; 4488 : ; 4496 : ; 4504 : ; 4512 : ; 4520 : ; 4528 : ; 4536 : ; % Character # 70 or 0x46 % 4480 : ; 4488 : ; 4496 : ; 4504 : ; 4512 : ; 4520 : ; 4528 : ; 4536 : ; Εικόνα 3.13 Ρυθμίσεις του Character Buffer core. 68

69 3.13 ΡΥΘΜΙΣΗ TOY ALPHA BLENDER CORE Το Alpha Blender core επιλέγεται να λειτουργεί σε «Simple» λειτουργία, όπως φαίνεται και στην παρακάτω εικόνα. Όπως έχει αναφερθεί και στην πρώτη παράγραφο του κεφαλαίου, η χρήση του είναι να συνδυάζει δυο ροές δεδομένων σε μία. Εικόνα 3.14 Ρυθμίσεις του Alpha Blender core ΡΥΘΜΙΣΗ TOY DMA CONTROLLER FOR VIDEO CORE Για τη μεταφορά των δεδομένων στον Pixel Buffer, ο DMA Controller θα πρέπει να λειτουργεί σε λειτουργία «From Stream To Memory». O τρόπος διευθυνσιοδότησης επιλέγεται να είναι «Consecutive» και στο πεδίο «Default Buffer Starting Address» και «Default Back Buffer Start Address» συμπληρώνεται η διεύθυνση μνήμης του Pixel Buffer (SRAM/SSRAM Controller). Πρέπει να επισημανθεί, ότι έχει οριστεί η διεύθυνση που αντιστοιχεί στο δεύτερο μισό της μνήμης SRAM, δηλαδή 0x Αυτό επιλέχθηκε για την ταυτόχρονη ροή δεδομένων στην κάμερα αλλά και ο σχεδιασμός οποιονδήποτε γραφικών στην οθόνη. Η κάμερα γράφει αρχικά στον Back Buffer και έπειτα, με κατάλληλες συναρτήσεις αντιγραφής από τον Back Buffer στον Current Buffer στο software κομμάτι, μπορεί να μεταφερθεί στην VGA οθόνη η λήψη φωτογραφιών. Υπενθυμίζεται, ότι το πρώτο μισό της 69

70 μνήμης SRAM αντιστοιχεί στον Pixel Buffer DMA Controller της οθόνης (0x ). Εικόνα 3.15 Ρυθμίσεις του DMA Controller core ΡΥΘΜΙΣΗ TOY DUAL-CLOCK FIFO CORE Η παραμετροποίηση του Dual - Clock FIFO core, αφορά τη μορφοποίηση των βίντεο δεδομένων που καλείται να διαχειριστεί το σύστημα. Στο παράθυρο παραμετροποίησης επιλέγεται 10 στο «Color Bits» και 3 «Color Planes», δηλαδή το χρωματικό format που εξάγεται μετά το core του RGB Resampler. 70

71 Εικόνα 3.16 Ρυθμίσεις του Dual Clock FIFO core ΡΥΘΜΙΣΗ TOY JTAG UART CORE Στο σύστημα, προστέθηκε το JTAG UART core, το οποίο είναι απαραίτητο καθώς, το περιβάλλον λογισμικού που διαθέτει η Altera για τον προγραμματισμό του επεξεργαστή, Nios II IDE, χρησιμοποιεί το εν λόγω περιφερειακό για την επικοινωνία με τον Nios II. Επίσης, το JTAG UART χρησιμοποιείται και ως κανάλι σειριακής επικοινωνίας μεταξύ του PC και του Debugging υποσυστήματος του Nios II. το JTAG core χρησιμοποιεί δύο FIFO Buffers (εγγραφής και ανάγνωσης). Και οι δύο έχουν εύρος 64 bytes και «IRQ threshold» 8. 71

72 Εικόνα 3.17 Ρυθμίσεις του JTAG UART core ΡΥΘΜΙΣΗ TOY INTERVAL TIMER CORE Οι περισσότεροι επεξεργαστές απαιτούν τουλάχιστον την χρήση ενός Interval Timer στο συνολικό σύστημα. Ο Timer χρησιμοποιείται στο να καθυστέρει τον επεξεργαστή, να συντονίζει τις διάφορες μεταφορές και να παράγει τις κατάλληλες διακοπές. Το Interval Timer core ρυθμίστηκε για να παράγεται μία διακοπή κάθε 1ms και υλοποιείται με όλες τις προεπιλογές («Full-Featured») και μετρητή των 32 bits. 72

73 Εικόνα 3.18 Ρυθμίσεις του Interval Timer core ΡΥΘΜΙΣΗ ΤΩΝ PARALLEL I/O PERIPHERALS (PIO) CORES Οι περισσότεροι επεξεργαστές παρέχουν συγκεκριμένα pins που αφορούν τα γενικής χρήσης I/Os (General Porpuse I/Os ή GPIO). Τα εν λόγω pins μπορούν να αντιστοιχηθούν κατευθείαν σε Pushbuttons, σε Switches και σε LEDs. Στο σύστημα που υλοποιήθηκε χρησιμοποιούνται και οι τρεις μορφές και ρυθμίζονται όπως δείχνει παρακάτω η Εικόνα

74 Εικόνα 3.19 Ρυθμίσεις των PIOs cores ΤΟ HARDWARE ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Με την προσθήκη και τη ρύθμιση των απαραίτητων περιφερειακών, ολοκληρώθηκε το SOPC σύστημα, όπως παρουσιάζεται στην Εικόνα Σημειώνεται ότι το ρολόι του συστήματος, sys_clk, έχει συχνότητα 50 MHz ενώ το vga_clk αντιστοιχεί σε 25 MHz. Και τα δύο σήματα ρολογιού παρέχονται από το core του Clock Signals for DE- Series Board Peripherals. Εικόνα 3.20 Τα Clock Settings του συστήματος. 74

75 Εικόνα 3.21 Το SOPC σύστημα με τις διασυνδέσεις. Τέλος, για την πρόσβαση στα περιφερειακά, ο Nios II χρησιμοποιεί ένα χαρτογραφημένο I/O σύστημα. Σε κάθε υποκύκλωμα που χρησιμοποιήθηκε, ανατίθεται μια μοναδική διεύθυνση μνήμης, με αποτέλεσμα οι καταχωρητές κάθε περιφερειακού, να προσπελαύνονται από τον επεξεργαστή με ανάγνωση ή εγγραφή. Όπως παρουσιάζεται στην Εικόνα 3.22, στην στήλη cpu.data_master, είναι η αρχική και τελική διεύθυνση μνήμης των περιφερειακών συσκευών. Πιο 75

76 συγκεκριμένα, ο χάρτης διευθύνσεων παρουσιάζεται ολοκληρωμένος στην Εικόνα Εικόνα 3.22 Ο χάρτης διευθύνσεων (Address Map) του SOPC συστήματος ΤΟ ΤΕΛΙΚΟ ΣΧΗΜΑΤΙΚΟ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Το τελικό σύστημα που αναπτύχθηκε παρουσιάζεται στην εικόνα Το Block Design File (.bdf), που προσφέρει το Quartus II, είναι μια διαγραμματική αναπαράσταση όλων των περιφερειακών με τις κατάλληλες διασυνδέσεις με την αναπτυξιακή πλατφόρμα που χρησιμοποιείται στο παρόν σύστημα. Αξιοσημείωτα σημεία του block είναι στην κορυφή του συστήματος, όπου διακρίνονται το ρολόι εισόδου clk_50 και το σήμα επαναφοράς reset_n του συστήματος. Αντίστοιχα, δεξιά διακρίνονται τα σήματα επαναφοράς της κάμερας, της οθόνης καθώς και των μνημών που επιλέχθηκαν στο σύστημα, SDRAM και SRAM. Ακόμη, αξίζει να σημειωθεί η χρήση της πύλης AND, όπως αναφέρθηκε η χρήση σε προηγούμενη παράγραφο, που βρίσκεται αριστερά του block. Η πύλη αυτή, που χρησιμοποιήθηκε ως λύση για τη διαχείριση της κάμερας, παίρνει ως είσοδο το ρολόι PIXCLK της TRDB-D5M και την έξοδο του TRDB_D5M_en PIO. Το λογικό AND του παλμού αυτού με το TRDB_D5M_en PIO μπορεί να χρησιμοποιηθεί ως «διακόπτης λειτουργίας» της κάμερας. Έτσι, όταν η έξοδος του PIO είναι 1, η έξοδος της πύλης AND διαμορφώνεται από τον παλμό PIXCLK. Αντίθετα, εάν η έξοδος του PIO γίνει 0, τότε ο παλμός παραμένει σταθερά σε κατάσταση low και η 76

77 κάμερα παύει να λειτουργεί. Στην Εικόνα 3.23 παρουσιάζεται το τελικό σχηματικό του συστήματος που υλοποιήθηκε. Λόγω έλλειψης χώρου, είναι αδύνατο να διακριθούν οι διασυνδέσεις με τa pins από την αναπτυξιακή πλατφόρμα. Για τον λόγο αυτό επισυνάπτεται παρακάτω ένας λεπτομερής πίνακας με το pin assignment που ορίστηκε στο σύστημα που υλοποιήθηκε. Πίνακας 3.1 Rubik s Cube Solver Pin Assignment for DE2-70 Altera s Board DE_CLOCK PIN_AD15 DE_RESET PIN_AE27 D5M_RESETn PIN_L29 FRAME_VALID LINE_VALID PIN_P25 PIN_P28 PIXEL_CLK PIN_AH14 CCD_DATA[11] CCD_DATA[10] CCD_DATA[9] CCD_DATA[8] CCD_DATA[7] CCD_DATA[6] CCD_DATA[5] CCD_DATA[4] CCD_DATA[3] CCD_DATA[2] CCD_DATA[1] CCD_DATA[0] DRAM1_CLK DRAM0_CLK XCLKIN D5M_STROBE VGA_CLK D5M_SCLK D5M_SDAT VGA_BLANK VGA_HS VGA_VS VGA_SYNC VGA_B[9] VGA_B[8] PIN_G27 PIN_G28 PIN_H27 PIN_L24 PIN_H28 PIN_L25 PIN_K27 PIN_L28 PIN_K28 PIN_L27 PIN_K29 PIN_M25 PIN_G5 PIN_AD6 PIN_AF27 PIN_P26 PIN_D24 PIN_M29 PIN_P27 PIN_C15 PIN_J19 PIN_H19 PIN_B15 PIN_D19 PIN_C19 77

78 78 VGA_B[7] VGA_B[6] VGA_B[5] VGA_B[4] VGA_B[3] VGA_B[2] VGA_B[1] VGA_B[0] PIN_A19 PIN_B19 PIN_B18 PIN_C18 PIN_B17 PIN_A17 PIN_C16 PIN_B16 VGA_G[9] VGA_G[8] VGA_G[7] VGA_G[6] VGA_G[5] VGA_G[4] VGA_G[3] VGA_G[2] VGA_G[1] VGA_G[0] PIN_A14 PIN_B14 PIN_B13 PIN_C13 PIN_A12 PIN_B12 PIN_C12 PIN_A11 PIN_B11 PIN_A10 VGA_R[9] VGA_R[8] VGA_R[7] VGA_R[6] VGA_R[5] VGA_R[4] VGA_R[3] VGA_R[2] VGA_R[1] VGA_R[0] PIN_G20 PIN_E20 PIN_F20 PIN_H20 PIN_G21 PIN_H21 PIN_D22 PIN_E22 PIN_E23 PIN_D23 SRAM_ADSC_N PIN_AG17 SRAM_ADSP_N PIN_AC18 SRAM_ADV_N PIN_AD16 SRAM_BE_N[0] SRAM_BE_N[1] SRAM_BE_N[2] SRAM_BE_N[3] PIN_AC21 PIN_AC20 PIN_AD20 PIN_AH20 SRAM_ADDR[0] SRAM_ADDR[1] SRAM_ADDR[2] SRAM_ADDR[3] SRAM_ADDR[4] SRAM_ADDR[5] SRAM_ADDR[6] SRAM_ADDR[7] SRAM_ADDR[8] SRAM_ADDR[9] SRAM_ADDR[10] PIN_AG8 PIN_AF8 PIN_AH7 PIN_AG7 PIN_AG6 PIN_AG5 PIN_AE12 PIN_AG12 PIN_AD13 PIN_AE13 PIN_AF14

79 79 SRAM_ADDR[11] SRAM_ADDR[12] SRAM_ADDR[13] SRAM_ADDR[14] SRAM_ADDR[15] SRAM_ADDR[16] SRAM_ADDR[17] SRAM_ADDR[18] PIN_AG14 PIN_AE15 PIN_AF15 PIN_AC16 PIN_AF20 PIN_AG20 PIN_AE11 PIN_AF11 SRAM_CE1_N PIN_AH19 SRAM_CE2 PIN_AG19 SRAM_CE3_N PIN_AD22 SRAM_CLK PIN_AD7 SRAM_DPA[0] SRAM_DPA[1] SRAM_DPA[2] SRAM_DPA[3] PIN_AK9 PIN_AJ23 PIN_AK20 PIN_AJ9 SRAM_DQ[0] SRAM_DQ[1] SRAM_DQ[2] SRAM_DQ[3] SRAM_DQ[4] SRAM_DQ[5] SRAM_DQ[6] SRAM_DQ[7] SRAM_DQ[8] SRAM_DQ[9] SRAM_DQ[10] SRAM_DQ[11] SRAM_DQ[12] SRAM_DQ[13] SRAM_DQ[14] SRAM_DQ[15] SRAM_DQ[16] SRAM_DQ[17] SRAM_DQ[18] SRAM_DQ[19] SRAM_DQ[20] SRAM_DQ[21] SRAM_DQ[22] SRAM_DQ[23] SRAM_DQ[24] SRAM_DQ[25] SRAM_DQ[26] SRAM_DQ[27] SRAM_DQ[28] SRAM_DQ[29] PIN_AH10 PIN_AJ10 PIN_AK10 PIN_AJ11 PIN_AK11 PIN_AH12 PIN_AJ12 PIN_AH16 PIN_AK17 PIN_AJ17 PIN_AH17 PIN_AJ18 PIN_AH18 PIN_AK19 PIN_AJ19 PIN_AK23 PIN_AJ20 PIN_AK21 PIN_AJ21 PIN_AK22 PIN_AJ22 PIN_AH15 PIN_AJ15 PIN_AJ16 PIN_AK14 PIN_AJ14 PIN_AJ13 PIN_AH13 PIN_AK12 PIN_AK7

80 80 SRAM_DQ[30] SRAM_DQ[31] PIN_AJ8 PIN_AK8 SRAM_WE_N PIN_AF18 SRAM_GW_N PIN_AG18 SRAM_OE_N PIN_AD18 DRAM0_BA[0] DRAM0_BA[1] PIN_AA9 PIN_AA10 DRAM_DQM[0] DRAM_DQM[1] DRAM_DQM[2] DRAM_DQM[3] PIN_V9 PIN_AB6 PIN_M10 PIN_U8 DRAM1_BA[0] DRAM1_BA[1] PIN_T7 PIN_T8 DRAM0_CLK DRAM1_CLK PIN_AD6 PIN_G5 DRAM1_CAS_N DRAM1_CKE DRAM1_CS_N DRAM1_RAS_N DRAM1_WE_N PIN_N8 PIN_L10 PIN_P9 PIN_N9 PIN_M9 DRAM0_CAS_N DRAM0_CKE DRAM0_CS_N DRAM0_RAS_N DRAM0_WE_N PIN_W10 PIN_AA8 PIN_Y10 PIN_Y9 PIN_W9 DRAM1_ADDR[0] DRAM1_ADDR[1] DRAM1_ADDR[2] DRAM1_ADDR[3] DRAM1_ADDR[4] DRAM1_ADDR[5] DRAM1_ADDR[6] DRAM1_ADDR[7] DRAM1_ADDR[8] DRAM1_ADDR[9] DRAM1_ADDR[10] DRAM1_ADDR[11] DRAM1_ADDR[12] PIN_T5 PIN_T6 PIN_U4 PIN_U6 PIN_U7 PIN_V7 PIN_V8 PIN_W4 PIN_W7 PIN_W8 PIN_T4 PIN_Y4 PIN_Y7 DRAM0_ADDR[0] DRAM0_ADDR[1] DRAM0_ADDR[2] DRAM0_ADDR[3] DRAM0_ADDR[4] DRAM0_ADDR[5] DRAM0_ADDR[6] DRAM0_ADDR[7] PIN_AA4 PIN_AA5 PIN_AA6 PIN_AB5 PIN_AB7 PIN_AC4 PIN_AC5 PIN_AC6

81 81 DRAM0_ADDR[8] DRAM0_ADDR[9] DRAM0_ADDR[10] DRAM0_ADDR[11] DRAM0_ADDR[12] PIN_AD4 PIN_AC7 PIN_Y8 PIN_AE4 PIN_AF4 DRAM0_BA[0] DRAM0_BA[1] PIN_AA9 PIN_AA10 DRAM_DQM[0] DRAM_DQM[1] DRAM_DQM[2] DRAM_DQM[3] PIN_V9 PIN_AB6 PIN_M10 PIN_U8 DRAM1_BA[0] DRAM1_BA[1] PIN_T7 PIN_T8 DRAM_DQ[0] DRAM_DQ[1] DRAM_DQ[2] DRAM_DQ[3] DRAM_DQ[4] DRAM_DQ[5] DRAM_DQ[6] DRAM_DQ[7] DRAM_DQ[8] DRAM_DQ[9] DRAM_DQ[10] DRAM_DQ[11] DRAM_DQ[12] DRAM_DQ[13] DRAM_DQ[14] DRAM_DQ[15] DRAM_DQ[16] DRAM_DQ[17] DRAM_DQ[18] DRAM_DQ[19] DRAM_DQ[20] DRAM_DQ[21] DRAM_DQ[22] DRAM_DQ[23] DRAM_DQ[24] DRAM_DQ[25] DRAM_DQ[26] DRAM_DQ[27] DRAM_DQ[28] DRAM_DQ[29] DRAM_DQ[30] DRAM_DQ[31] PIN_AC1 PIN_AC2 PIN_AC3 PIN_AD1 PIN_AD2 PIN_AD3 PIN_AE1 PIN_AE2 PIN_AE3 PIN_AF1 PIN_AF2 PIN_AF3 PIN_AG2 PIN_AG3 PIN_AH1 PIN_AH2 PIN_U1 PIN_U2 PIN_U3 PIN_V2 PIN_V3 PIN_W1 PIN_W2 PIN_W3 PIN_Y1 PIN_Y2 PIN_Y3 PIN_AA1 PIN_AA2 PIN_AA3 PIN_AB1 PIN_AB2

82 82 Εικόνα 3.23 Το τελικό σχηματικό του συστήματος (α ).

83 Εικόνα 3.23 Το τελικό σχηματικό του συστήματος (β ). 83

84 Η εφαρμογή που αναπτύχθηκε καθορίζει πλήρως τις λειτουργίες και τη συμπεριφορά του συστήματος. Ο επεξεργαστής Nios II εκτελεί την εφαρμογή, σύμφωνα με την οποία το σύστημα αντιδρά, αναλόγως σε ποια κατάσταση βρίσκεται. Για το σύστημα αυτό, παρουσιάζεται παρακάτω στην Εικόνα 3.24 το συνολικό block διάγραμμα ροής. Εικόνα 3.24 Το block διάγραμμα ροής του τελικού συστήματος. 84

85 85

86 86

87 ΚΕΦΑΛΑΙΟ 4 Ο Ανάπτυξη Λογισμικού Συστήματος 4.1 ΠΕΡΙΓΡΑΦΗ ΛΕΙΤΟΥΡΓΙΑΣ ΣΥΣΤΗΜΑΤΟΣ Το υλικό του συστήματος που περιγράφτηκε στο προηγούμενο κεφάλαιο, αποτελεί τη βάση της υλοποίησης του ψηφιακού συστήματος. Ωστόσο, από μόνο του δεν προσφέρει καμία ευελιξία και καμία επιπλέον λειτουργία. Στο κεφάλαιο αυτό θα αναλυθεί το λογισμικό κομμάτι (software) του συστήματος που υλοποιήθηκε, το οποίο σε συνδυασμό με το υλικό (hardware), είναι υπεύθυνο για την πλήρη και ορθή λειτουργία του συστήματος. Τα τρία βασικά στάδια που αναπτυχθήκαν αφορούν τη λήψη και την προβολή φωτογραφιών για κάθε μία από τις έξι πλευρές ενός συγκεκριμένου κύβου του Rubik, την real-time αναγνώριση χρωμάτων από κάθε φωτογραφία που λήφθηκε σε κάθε πλευρά για τον κύβο αυτόν και τέλος την παρουσίαση της επίλυσής του σε μια οθόνη VGA ανάλυσης 640x480 pixels. Η λογική που ακολουθήθηκε στην παρούσα εργασία, ήταν η ανάπτυξη ενός ενσωματωμένου συστήματος το οποίο να είναι απλό στην χρήση του και όσο το δυνατόν πιο αυτοματοποιημένο. Η επίλυση ενός κύβου του Rubik είναι δύσκολη έως και ακατόρθωτη αν δεν υπάρχει η κατάλληλη γνώση. Σκοπός της εργασίας αυτής, είναι η δημιουργία ενός ψηφιακού συστήματος, το οποίο να λαμβάνει με τη σειρά φωτογραφίες από όλες τις πλευρές ενός δοθέντος μπερδεμένου κύβου, έπειτα να γίνεται η αναγνώριση των χρωμάτων σε κάθε επιφάνεια του, να ελέγχεται εάν ο κύβος που σαρώθηκε είναι σωστός, δηλαδή αν υπακούει στις προδιαγραφές που αναφέρθηκαν στο πρώτο κεφάλαιο και στο τέλος να γίνεται η επίλυση του καθοδηγώντας τον χρήστη σε κάθε στάδιο επίλυσης. Με αυτόν τον τρόπο, ένας οποιοσδήποτε μπερδεμένος κύβος του Rubik, θα μπορεί να λυθεί από όλους, γνώστες και μη γνώστες επί του θέματος. Στη συνέχεια του κεφαλαίου θα αναπτυχθεί ξεχωριστά κάθε στάδιο του συστήματος και θα γίνει περιγραφή των βασικότερων σημείων στο πρόγραμμα που 87

88 αναπτύχθηκε. Προτείνεται μαζί με την ανάλυση που θα ακολουθήσει για κάθε στάδιο, ο αναγνώστης να ανατρέχει στο Παράρτημα Α, όπου βρίσκεται ο συνολικός κώδικας του συστήματος, για την καλύτερη κατανόηση του. Η έκδοση λογισμικού που εγκατασταθήκε για την παρούσα εργασία είναι η Quartus 11.0 sp1, μαζί με την οποία εγκαταστάθηκε ταυτόχρονα και το αντίστοιχο αναπτυξιακό περιβάλλον NIOS II Software Build Tools for Eclipse, η οποία διατίθεται στην επίσημη ιστοσελίδα της Altera. 4.2 ΛΗΨΗ ΚΑΙ ΠΡΟΒΟΛΗ ΦΩΤΟΓΡΑΦΙΩΝ Η λήψη και η προβολή των φωτογραφιών από κάθε πλευρά του κύβου, αποτελεί το πρώτο στάδιο του συστήματος. Όπως, ήδη έχει αναφερθεί γίνεται χρήση της θυγατρικής κάμερας TRDB-D5M της Terasic. Με την προϋπόθεση ότι έχουν γίνει οι απαραίτητες ρυθμίσεις από το «Audio & Video Configuration» core στον SOPC Builder, και το σωστό pin assignment στο περιβάλλον του Quartus II, οι αρχικοποιήσεις των καταχωρητών της κάμερας έχουν ολοκληρωθεί. Η λειτουργία της όμως βασίζεται στην σωστή εγγραφή του PIO, που χρησιμοποιήθηκε για την ενεργοποίηση της. Το εν λόγω PIO δίνει τον κατάλληλο παλμό χρονισμού στην κάμερα μέσω μιας πύλης AND. Η Altera προσφέρει συνάρτηση εγγραφής για το PIO αυτό, δίνοντας στο χρήστη την ελευθερία χρήσης της κάμερας όποτε το επιθυμεί αυτός. Πιο συγκεκριμένα, η συνάρτηση που χρησιμοποιείται είναι η IOWR_ALTERA_AVALON_PIO_DATA(), η οποία δέχεται ως ορίσματα τη διεύθυνση του PIO στο συνολικό σύστημα και τη λογική τιμή που χρειάζεται για να λειτουργήσει η κάμερα. Η διεύθυνση του PIO στο σύστημα βρίσκεται στο header file που παράγεται μετά την ολοκλήρωση της SOPC σχεδίασης με όνομα system.h. Για παράδειγμα, στην παρούσα εργασία η διεύθυνση αυτή ορίζεται ως PIO_MODE_BASE. Εάν επιθυμείται η κάμερα να λειτουργήσει με συνεχή καταγραφή βίντεο δεδομένων, τότε η τιμή που πρέπει να τεθεί στην παραπάνω συνάρτηση είναι η λογική τιμή 1, ενώ για λήψη φωτογραφίας πρέπει να τεθεί η λογική τιμή 0. Παρακάτω παρουσιάζεται η χρήση της συνάρτησης σε ένα συγκεκριμένο σημείο, μέσα στο λογισμικό του συστήματος: 88

89 IOWR_ALTERA_AVALON_PIO_DATA(PIO_MODE_BASE, 0x01); //video MODE usleep( ); IOWR_ALTERA_AVALON_PIO_DATA(PIO_MODE_BASE, 0x00); //photo MODE Παρατηρείται ότι αρχικά γίνεται ενεργοποίηση της κάμερας για να δεχθεί νέα βίντεο δεδομένα, και μετά από ένα δευτερόλεπτο απενεργοποιείται έτσι ώστε να γίνει η καταγραφή της σκηνής που λήφθηκε. Το σύστημα που υλοποιήθηκε, δίνει τις κατάλληλες οδηγίες χρήσης στο χρήστη. Η λήψη μιας φωτογραφίας γίνεται πιέζοντας το KEY0 στο DE2-70 board. Σε περίπτωση που ο χρήστης θεωρεί ότι η φωτογραφία που πάρθηκε δεν είναι η κατάλληλη για να συνεχίσει στην αναγνώριση των χρωμάτων, τότε δίνεται η δυνατότητα καταγραφής μιας άλλης φωτογραφίας με το KEY1, όσες φορές το επιθυμεί αυτός. Προφανώς έχουν γίνει η κατάλληλη ρύθμιση και το σωστό pin assignment και στα δύο pushbuttons που χρησιμοποιούνται. Η ανάγνωση της τιμής που παίρνουν κάθε φορά τα push-buttons, έτσι ώστε να ακολουθήσει και η ενέργεια που έχει οριστεί για το καθένα γίνεται με τη χρήση συνάρτησης IORD() που παρέχει η Altera. Παρακάτω παρατίθεται παράδειγμα πως γίνεται η ανάγνωση της τιμής που παίρνει το KEY0: key0 = IORD(KEY_BASE, 0) & 0x1; Ορίσματα της συγκεκριμένης συνάρτησης είναι η διεύθυνση του PIO που χρησιμοποιείται για τα push-buttons. Ο έλεγχος της τιμής που παίρνει ένα συγκεκριμένο push-button από το DE2-70 board γίνεται με την λογική πράξη AND μεταξύ αυτού που διαβάζεται από τη συνάρτηση και το λογικό 1. Αυτό αντιστοιχεί στο KEY0. Αντιστοίχως, για το KEY1 η χρήση της συνάρτησης αυτής γίνεται με λογική πράξη AND μεταξύ της διεύθυνσης του ίδιου PIO και του λογικού 2 : key1 = IORD(KEY_BASE, 0) & 0x2; Η καταγραφή των βίντεο δεδομένων από την κάμερα γίνεται στον back buffer της SRAM που λειτουργεί ως pixel buffer. Η προβολή τους στην οθόνη του συστήματος γίνεται με την αντιγραφή των δεδομένων που έχουν αποθηκευτεί από τον back buffer, με μικρότερο scaling στον current buffer της οθόνης VGA. Αυτό επιλέχθηκε για την ταυτόχρονη χρήση του pixel buffer για το σχεδιασμό των γραφικών αλλά και 89

90 την παρουσίαση της φωτογραφίας που λαμβάνεται κάθε φορά στην οθόνη του συστήματος. Η αντιγραφή των δεδομένων γίνεται ως εξής: for (j=0; j<160; j++) { for (k=0; k<120; k++) { color_cube=iord_32direct(base, 4*(k*2*320+j*2)); alt_up_pixel_buffer_dma_draw(pixel_b,color_cube,460+j,340+k); } } Αρχικά γίνεται η ανάγνωση των δεδομένων που έχουν αποθηκευτεί στο back buffer με τη συνάρτηση που παρέχει η Altera, IORD_32DIRECT(), η οποία παίρνει ως ορίσματα τη διεύθυνση του back buffer και τις συντεταγμένες όπου έχουν αποθηκευτεί τα pixel των φωτογραφιών που λαμβάνονται κάθε φορά. Έπειτα, γίνεται η μεταφορά τους στον current buffer της οθόνης VGA μέσω μια άλλης συνάρτησης που διαθέτει η Altera, alt_up_pixel_buffer_dma_draw(), η οποία παίρνει ως ορίσματα τον pixel buffer της οθόνης, την χρωματική τιμή που είχε αποθηκεύσει ο back buffer και τις συντεταγμένες που επιθυμούνται για να προβληθεί η φωτογραφία στην οθόνη. 4.3 ΑΝΑΓΝΩΡΙΣΗ ΧΡΩΜΑΤΩΝ Καθώς έχει γίνει η λήψη της επιθυμητής φωτογραφίας σε μια από τις πλευρές του κύβου, ακολουθεί η αναγνώριση των χρωμάτων που έχει η πλευρά αυτή και η αποθήκευσή τους σε έναν πίνακα, ο οποίος θα αποτελέσει την αρχική κατάσταση του κύβου. Η αναγνώριση των χρωμάτων είναι το δεύτερο στάδιο του συστήματος και γίνεται ξεχωριστά για κάθε πλευρά του κύβου. Όταν ολοκληρωθεί η λήψη της φωτογραφίας και η αναγνώριση των χρωμάτων, τότε συνεχίζεται στην επόμενη πλευρά η ίδια διαδικασία, μέχρι να ολοκληρωθεί η καταγραφή των χρωμάτων και στις έξι πλευρές του κύβου. Τα γραφικά που χρησιμοποιήθηκαν στο σημείο αυτό είναι η δημιουργία ενός ανοιχτού κύβου, δηλαδή σε σχήμα σταυρού, όπου θα μεταφέρονται τα χρώματα που αναγνωρίζονται σε κάθε πλευρά και όταν γεμίσουν 90

91 όλες οι επιφάνειες του «σταυρού κύβου» τότε θα γίνει και ό έλεγχος της ορθότητας του κύβου που δόθηκε για να προχωρήσει στην επίλυση του. Η αναγνώριση των χρωμάτων από κάθε επιφάνεια του κύβου υλοποιήθηκε με τρεις διαφορετικές μεθόδους. Αυτό συνέβη επειδή η κάμερα παρουσιάζει ιδιαίτερη ευαισθησία στον φωτισμό, οπότε σε κάθε μέθοδο που υλοποιήθηκε εξεταζόταν και η επιτυχία της αναγνώρισης των χρωμάτων. Η πλήρης επιτυχία αναγνώρισης χρώματος δεν ήταν πάντα εφικτή, για τον λόγο αυτό προστέθηκε στο σύστημα μια επιλογή διόρθωσης από τον χρήστη. Σε αυτή την διορθωτική επιλογή συμβάλλουν δυο ακόμα περιφερειακά PIOs, η ανάγνωση των οποίων γίνεται με παρόμοιο τρόπο όπως των προηγουμένων που αναφέρθηκαν στην παράγραφο 4.2. Το ένα από τα δύο είναι υπεύθυνο να καθοδηγείται από το χρήστη στη θέση του «σταυρού κύβου» όπου έχει γίνει η λάθος αναγνώριση χρώματος και το άλλο δίνει τη δυνατότητα διόρθωσης επιλέγοντας το σωστό χρώμα. Η πρώτη μέθοδος που υλοποιήθηκε ακολουθεί την εξής διαδικασία: 1. Αρχικά λαμβάνονται μετρήσεις των RGB τιμών για κάθε ένα από τα έξι χρώματα που διαθέτει ο κύβος του Rubik. Είναι λογικό η κάμερα να μην δίνει πάντα τις ίδιες RGB τιμές για ένα συγκεκριμένο χρώμα, καθώς είναι πολύ επιρρεπής στην φωτεινότητα που έχει εκείνη την στιγμή ο χώρος. Το συγκεκριμένο βήμα γίνεται για την αποθήκευση έξι κατωφλίων για κάθε χρώμα. 2. Μετά τη λήψη και επιλογή της επιθυμητής φωτογραφίας γίνεται ανάγνωση των RGB τιμών των κεντρικών pixels που αντιστοιχούν στα εννιά κυβάκια κάθε πλευράς. 3. Ακολουθεί σύγκριση των τιμών που αναγνώστηκαν με τα κατώφλια που έχουν τεθεί για κάθε χρώμα. 4. Τελικά, η επιλογή χρώματος γίνεται μέσω της τετραγωνικής απόστασης μεταξύ του κατωφλίου και της RGB τιμής που αναγνώστηκε για κάθε κυβάκι. Η κατοχύρωση ενός χρώματος σε ένα κυβάκι θα γίνεται με την εύρεση την μικρότερης τιμής που έχει κάποια από τις τετραγωνικές αποστάσεις που υπολογίστηκαν. 91

92 Η μέθοδος αυτή ήταν η πρώτη που χρησιμοποιήθηκε και έγινε άμεσα αντιληπτό ότι τα αποτελέσματά της δεν ήταν ικανοποιητικά. Σε κάθε πλευρά του κύβου υπήρχε σφάλμα αναγνώρισης στα τέσσερα από τα εννέα κυβάκια της κάθε πλευράς. Η δεύτερη μέθοδος που δοκιμάστηκε βασίστηκε στην πρώτη μέθοδο με την εξής διαφοροποίηση: η ανάγνωση των RGB τιμών να μην γίνεται για ένα μόνο pixel αλλά για μια ομάδα pixels για κάθε κυβάκι στην πλευρά του κύβου που έχει σαρωθεί από την κάμερα την συγκεκριμένη στιγμή. Έπειτα να υπολογίζεται η μέση RGB τιμή από αυτή την ομάδα pixels και σύμφωνα με αυτή και τα κατώφλια που ήδη υπήρχαν να γίνεται η σύγκριση και η επιλογή των χρωμάτων. Προφανώς η παραλλαγή αυτή της πρώτης μεθόδου είχε πολύ καλύτερα αποτελέσματα. Το σφάλμα αναγνώρισης μειώθηκε στο ένα κυβάκι από τα 9 της κάθε πλευράς. Η ευαισθησία της κάμερας στον φωτισμό του χώρου παρέμεινε ένα μειονέκτημα και στη δεύτερη μέθοδο. Και στις δύο μεθόδους υπήρχαν σε συγκεκριμένα χρώματα συνεχής λάθος αναγνώριση. Η σύγχυση χρωμάτων γινόταν συχνά μεταξύ κόκκινου και πορτοκαλί, όπως επίσης άσπρου και κίτρινου ανάλογα πόσο σκοτεινός ήταν ο χώρος. Για το λόγο αυτό χρειάστηκε μια ακόμη μεθόδος η οποία ήταν κι αυτή που υιοθετήθηκε τελικά στο σύστημα. Εφόσον με τις RGB τιμές δεν μπόρεσε να υπάρξει μια ικανοποιητική αναγνώριση, η επόμενη μέθοδος υλοποιήθηκε σε έναν διαφορετικό χρωματικό χώρο, τον HSI (Hue Saturation Intensity). Ο χρωματικός χώρος HSI αντιστοιχίζει κάθε χρώμα σε ποσότητες απόχρωσης (Hue), κορεσμού (Saturation) και έντασης (Intensity). Όπως παρουσιάζεται και στην Εικόνα 4.1, αυτός ο χρωματικός χώρος είναι τριγωνικός με διαφορετικά ύψη ανάλογα την ένταση του χρώματος. Οι κορυφές του τριγώνου είναι τα τρία βασικά χρώματα, κόκκινο, πράσινο και μπλε. Ο χώρος αυτός βασίζεται στον κανόνα ότι δύο χρώματα ίδιας απόχρωσης αλλά διαφορετικής φωτεινότητας (π.χ. σκούρο πράσινο και ανοιχτό πράσινο) έχουν σχετικά την ίδια κατανομή μήκους κύματος. Επομένως, η φασματική κατανομή και ο κορεσμός ενός χρώματος δεν αλλάζουν αν δοθούν σε διαφορετικές τιμές φωτεινότητας. Σημειώνεται ότι η αλλαγή του χρωματικού χώρου από RGB σε HSI δεν θα επιφέρει καμία αλλαγή στην αναγνώριση αν η αλλαγή της φωτεινότητας προκαλεί αλλαγές χρώματος ακόμα και στο ανθρώπινο μάτι. 92

93 Εικόνα 4.1 Ο τριγωνικός χρωματικός χώρος HIS [30]. Η μετατροπή των RGB τιμών σε HSI γίνεται εύκολα από τρεις μαθηματικούς τύπους. Η κάθε παράμετρος του HSI υπολογίζεται ξεχωριστά από τους παρακάτω μαθηματικούς τύπους: (1) Υπολογισμός απόχρωσης: (2) Υπολογισμός κορεσμού: (3) Υπολογισμός έντασης: Όπου R, G, B, είναι τιμές του κόκκινου, του πράσινου και του μπλε αντίστοιχα για ένα συγκεκριμένο pixel που μετρήθηκε. Παρακάτω στην Εικόνα 4.2, παρουσιάζονται οι τιμές απόχρωσης, κορεσμού και έντασης που μπορούν να πάρουν κάποια συγκεκριμένα χρώματα. 93

94 Εικόνα 4.2 Οι τιμές απόχρωσης, κορεσμού και έντασης που μπορούν να πάρουν κάποια συγκεκριμένα χρώματα [30]. Παρατηρείται ότι για την σωστή εκτίμηση χρώματος αρκεί ο υπολογισμός της συνιστώσας της απόχρωσης (H), καθώς εκεί έχουμε την μεγαλύτερη διακύμανση τιμών η οποία θα επιτρέψει στην καλύτερη σύγκριση. Η διαδικασία που ακολουθήθηκε για την αναγνώριση χρωμάτων με μετατροπή στον HSI χρωματικό χώρο είναι η εξής: 1. Ανάγνωση των RGB τιμών των κεντρικών pixels που αντιστοιχούν στα εννιά κυβάκια κάθε πλευράς από τη φωτογραφία που πάρθηκε. 2. Υπολογισμός της απόχρωσης H, σύμφωνα με την εξίσωση που δόθηκε παραπάνω. 94

95 3. Αρχικοποιήσεις κατωφλίων για την τιμή της απόχρωσης και στα έξι χρώματα του κύβου. 4. Υπολογισμός της απόλυτης τιμής της διαφοράς μεταξύ των κατωφλίων και των τιμών της απόχρωσης που υπολογίστηκαν βάσει του RGB pixel που μετρήθηκε. 5. Εκτίμηση χρώματος βάσει της μικρότερης διαφοράς που υπολογίστηκε. Η μέθοδος αυτή επέφερε καλύτερα αποτελέσματα από τις δύο προηγούμενες. Το σφάλμα αναγνώρισης μειώθηκε κι άλλο, στα 3 από τα 54 συνολικά κυβάκια που διαθέτει ολόκληρος ο κύβος. Οι συναρτήσεις που υλοποιήθηκαν στο πρόγραμμα για να εκτελούν την παραπάνω διαδικασία είναι οι ColorEstimation() και est() οι οποίες καλούνται μέσα στην συνάρτηση Camera() (βλ. Παράρτημα Α). Η πρώτη είναι υπεύθυνη για την εκτίμηση χρώματος, η δεύτερη για τον υπολογισμό της συνιστώσας της απόχρωσης H και η τρίτη συνάρτηση περιέχει ότι είναι απαραίτητο κατά την λειτουργία της κάμερας (γραφικά, λειτουργία PIOs, αναγνώριση χρώματος και διόρθωση αυτών σε περίπτωση λανθασμένης εκτίμησης). Η χρήση της κάμερας σταματάει με την ολοκλήρωση της σωστής αναγνώρισης χρωμάτων και στις έξι πλευρές του κύβου. Έπειτα το λογισμικό προχωράει στον έλεγχο του κύβου που δόθηκε από το χρήστη. Εάν ο κύβος είναι σωστός, δηλαδή αποτελέιται από 9 κύβακια κάθε χρώματος και 26 κομμάτια συγκεκριμένων ιδιοτήτων (όπως αναλύθηκε στο πρώτο κεφάλαιο), προχωράει στην επίλυση του. Στην αντίθετη περίπτωση, η εφαρμογή πληροφορεί τον χρήστη ότι ο κύβος που δόθηκε δεν είναι σωστός και ότι πρέπει να ξεκινήσει το βήμα αυτό πάλι από την αρχή. 4.4 ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK Το τελευταίο στάδιο του ψηφιακού συστήματος αποτελεί το κυριότερο κομμάτι της παρούσας εργασίας και είναι η επίλυση ενός δοθέντος κύβου του Rubik, ο οποίος σαρώθηκε από την κάμερα και στον οποίο έγινε η αναγνώριση χρωμάτων. Το software κομμάτι της επίλυσης του κύβου αναπτύχθηκε αρχικά σε γλώσσα προγραμματισμού C++ στο ολοκληρωμένο περιβάλλον ανάπτυξης Visual Studio της Microsoft, όπου έγινε και το απαραίτητο debugging. Έπειτα για τη φόρτωση του 95

96 στο ενσωματωμένο σύστημα, χρειάστηκε μια μικρή παραμετροποίηση σε C γλώσσα προγραμματισμού. Η λογική που ακολουθήθηκε για την υλοποίηση του συγκεκριμένου λογισμικού ήταν η αντιμετώπιση του κύβου του Rubik ως έναν πίνακα 60 θέσεων, όπου οι θέσεις από το 1 έως και το 9, από το 11 έως και το 19, από το 21 έως και το 29, κ.ο.κ. να αποτελούν κάθε μια από τις έξι πλευρές του κύβου και να περιέχουν τη χρωματική πληροφορία (WHITE, YELLOW, RED, ORANGE, BLUE, GREEN) που έχει κάθε κυβάκι. Οι θέσεις του πίνακα 0, 10, 20, κ.ο.κ. δεν θα περιέχουν καμία πληροφορία (NOCOLOR). Στην Εικόνα 4.3 παρουσιάζεται η ομαδοποίηση των θέσεων του πίνακα όπως αυτές αντιστοιχούν σε κάθε πλευρά ενός κύβου του Rubik. Οι θέσεις από το 1 έως και το 9 θα αντιπροσωπεύουν την πάνω πλευρά, οι θέσεις από το 11 έως και το 19 θα αντιπροσωπεύουν την πίσω, οι θέσεις από το 21 έως και το 29 θα αντιπροσωπεύουν την αριστερή, οι θέσεις από το 31 έως και το 39 θα αντιπροσωπεύουν την μπροστά, οι θέσεις από το 41 έως και το 49 θα αντιπροσωπεύουν την δεξιά και οι θέσεις από το 51 έως και το 59 θα αντιπροσωπεύουν την κάτω πλευρά. Εικόνα 4.3 Ένας ανοιχτός κύβος σε μορφή σταυρού και η αντιστοιχία του με τις θέσεις του πίνακα. 96

97 Με αυτήν την ομαδοποίηση των θέσεων του πίνακα είναι εύκολο να μεταφραστούν σε κώδικα οι βασικές κινήσεις που επιτρέπονται όπως αυτές αναφέρθηκαν στο πρώτο κεφάλαιο. Η κάθε κίνηση αποτελεί μια ξεχωριστή συνάρτηση στο λογισμικό. Ο τρόπος με τον οποίο περιγράφεται γίνεται με αλλαγή της χρωματικής πληροφορίας από μια θέση του πίνακα σε μια άλλη ανάλογα με το ποια κίνηση πραγματοποιείται. Πιο συγκεκριμένα, θα αναλυθεί η κίνηση Right. Η κίνηση Right (R) είναι η περιστροφή της δεξιάς πλευράς του κύβου του Rubik σύμφωνα με την κατεύθυνση των δεικτών του ρολογιού. Με ταυτόχρονη παρατήρηση της Εικόνας 4.3 γίνεται αντιληπτό πως αν η δεξιά πλευρά περιστραφεί κατά το ¼ μιας πλήρης περιστροφής, με κατεύθυνση ίδια με αυτή των δεικτών του ρολογιού, τότε η χρωματική πληροφορία των θέσεων του πίνακα 3, 6 και 9 θα μεταφερθεί στις θέσεις 13, 16, 19 αντίστοιχα. Η χρωματική πληροφορία των θέσεων του πίνακα 13, 16 και 19 θα μεταφερθεί στις θέσεις 57, 54, 51 αντίστοιχα. Η χρωματική πληροφορία των θέσεων του πίνακα 57, 54 και 51 θα μεταφερθεί στις θέσεις 33, 36, 39 αντίστοιχα. Και τέλος η χρωματική πληροφορία των θέσεων του πίνακα 33, 36 και 39 θα μεταφερθεί στις θέσεις 3, 6, 9 αντίστοιχα (βλ. Εικόνα 4.4). Εικόνα 4.4 Η Right κίνηση και πως αυτή αντιστοιχεί στις μετατοπίσεις των χρωματικών πληροφοριών στις θέσεις του πίνακα. 97

98 Η συνάρτηση που υλοποιήθηκε στο λογισμικό του συστήματος για την περιγραφή των παραπάνω ονομάζεται RightMovement() και επισυνάπτεται παρακάτω: void RightMovement() // R { int x=cube[13]; int y=cube[16]; int z=cube[19]; cube[13]=cube[3]; cube[16]=cube[6]; cube[19]=cube[9]; cube[3]=cube[33]; cube[6]=cube[36]; cube[9]=cube[39]; cube[33]=cube[57]; cube[36]=cube[54]; cube[39]=cube[51]; cube[51]=z; cube[54]=y; cube[57]=x; int b1=cube[41]; int b2=cube[42]; int b3=cube[43]; int b4=cube[44]; int b6=cube[46]; int b7=cube[47]; int b8=cube[48]; int b9=cube[49]; cube[43]=b1; cube[46]=b2; cube[49]=b3; cube[48]=b6; cube[47]=b9; cube[44]=b8; cube[41]=b7; cube[42]=b4; } Με τον ίδιο τρόπο περιγράφονται όλες οι βασικές κινήσεις που χρειάζονται για την επίλυση του κύβου του Rubik και οι οποίες θα συντελέσουν στην επίλυσή του. Μετά από την ολοκλήρωση κάθε κίνησης στον κώδικα, έχει τεθεί να γίνεται και ο κατάλληλος έλεγχος του κύβου. Αυτό γίνεται με τη δημιουργία συνάρτησης η οποία καταμετρά το πλήθος των χρωμάτων που υπάρχουν συνολικά στον κύβο. Εάν το πλήθος ενός συγκεκριμένου χρώματος δεν είναι 9, όσα δηλαδή πρέπει να είναι τα κυβάκια για κάθε χρώμα, τότε εύκολα μπορεί να γίνει αντιληπτό μετά από ποια κίνηση έχει γίνει η λάθος μεταφορά της χρωματικής πληροφορίας. Η συνάρτηση αυτή ονομάζεται IsCubeValid() και παρουσιάζεται παρακάτω: bool IsCubeValid() { int NumberOfWHITE=0; int NumberOfYELLOW=0; int NumberOfRED=0; int NumberOfORANGE=0; 98

99 int NumberOfBLUE=0; int NumberOfGREEN=0; int NumberOfNOCOLOR=0; int i; for (i=0; i<60; i++) switch (cube[i]) { case 0: NumberOfWHITE++; break; case 1: NumberOfYELLOW++; break; case 2: NumberOfRED++; break; case 3: NumberOfORANGE++; break; case 4: NumberOfBLUE++; break; case 5: NumberOfGREEN++; break; case 6: NumberOfNOCOLOR++; break; default: printf("error: Something went wrong \n"); exit(-1); } if (NumberOfWHITE!=9 NumberOfRED!=9 NumberOfYELLOW!=9 NumberOfORANGE!=9 NumberOfGREEN!=9 NumberOfBLUE!=9 NumberOfNOCOLOR!=6) return false; else return true; } Έχοντας καθοριστεί οι κινήσεις και η συνάρτηση ελέγχου του κύβου, το επόμενο που χρειάστηκε να μεταφραστεί σε C++ είναι ο αλγόριθμος επίλυσης του κύβου του Rubik. Όπως ήδη έχει αναφερθεί στο πρώτο κεφάλαιο, μελετήθηκαν δύο αλγόριθμοι επίλυσης. Αρχικά, υλοποιήθηκε ο βασικός αλγόριθμος, η περιγραφή του οποίου σε κώδικα έγινε στάδιο στάδιο ακολουθώντας τη σειρά με την οποία παρουσιάστηκε στην παράγραφο 1.3. Κάθε στάδιο της επίλυσης είναι μια ξεχωριστή συνάρτηση μέσα στο λογισμικό που αναπτύχθηκε. Η λογική των συναρτήσεων αυτών βασίζεται στον έλεγχο όλων των 99

100 πιθανών περιπτώσεων που μπορεί να λάβει ο κύβος του Rubik και με ποια ακολουθία κινήσεων αυτές θα μπορούν να αντιμετωπιστούν. Το πρώτο στάδιο της επίλυσης που έχει περιγραφεί στο πρώτο κεφάλαιο αποτελεί το μόνο στάδιο στο οποίο δεν δίνονται σαφείς οδηγίες για να επιτευχθεί, καθώς η αρχική κατάσταση του κύβου του Rubik μπορεί να είναι οποιαδήποτε. Η συνάρτηση που αναπτύχθηκε για αυτό το στάδιο στην ουσία αποτελείται από έναν look-up table (πίνακα αναζήτησης), οποίος θα περιέχει όλες τις πιθανές περιπτώσεις. Υπενθυμίζεται ότι το πρώτο στάδιο είναι η δημιουργία του άσπρου σταυρού στην κίτρινη πλευρά του κύβου. Οπότε η συνάρτηση που αναπτύχθηκε για το πρώτο στάδιο στην ουσία ελέγχει σε ποια θέση βρίσκονται τα άσπρα edge pieces. Ανάλογα την θέση τους θα εκτελείται έπειτα μια ακολουθία κινήσεων, έτσι ώστε να τοποθετηθούν στις θέσεις 2, 4, 6 και 8 του πίνακα που αντιπροσωπεύει τον κύβο του Rubik. Το στάδιο θα ολοκληρωθεί όταν τα άσπρα edge pieces θα έχουν μπει στις ζητούμενες θέσεις και μόνο τότε. Αν το στάδιο αυτό αποτύχει στην ολοκλήρωση του, τότε προφανώς δεν θα ακολουθήσει στην εκτέλεση κανενός από τα επόμενα στάδια επίλυσης. Για την καλύτερη κατανόηση της λειτουργίας της συνάρτησης που σχεδιάστηκε για το πρώτο στάδιο της επίλυσης του κύβου του Rubik, προτείνεται ο αναγνώστης να ανατρέξει στο Παράρτημα Α και να αναζητήσει την συνάρτηση StageOne(). Οι συναρτήσεις κάθε σταδίου δομήθηκαν με τη βοήθεια μιας δομής επανάληψης while η οποία θα τερματίζει μόνο όταν η συνθήκη που θα έχει τεθεί θα πάρει την λογική τιμή ΨΕΥΔΗΣ. Όσο θα ισχύει η συνθήκη, η συνάρτηση θα ελέγχει με την βοήθεια της δομής επιλογής if και θα εκτελεί όλες τις ενέργειες που θα έχουν οριστεί σε κάθε περίπτωση που θα αναγνωρίζεται. Με παρόμοιο τρόπο έχουν αναπτυχθεί σε κώδικα όλα τα στάδια επίλυσης του κύβου του Rubik. Σημειώνεται ότι η σειρά που πρέπει να καλούνται οι συναρτήσεις των σταδίων επίλυσης πρέπει να υπακούουν στην σειρά με την οποία αναλύθηκαν στην παράγραφο 1.3 όπου περιγράφθηκε ο βασικός αλγόριθμος. Με την ολοκλήρωση του λογισμικού της επίλυσης του κύβου του Rubik, ακολούθησε το βήμα της αποσφαλμάτωσης του κώδικα για την εξέταση πιθανής περίπτωσης η οποία δεν καλύφθηκε από τις συναρτήσεις που υλοποιήθηκαν για κάθε στάδιο. Αυτό επιτεύχθηκε με τη δημιουργία μιας συνάρτησης η οποία παράγει 100

101 τυχαία μπερδεμένους κύβους του Rubik. Το λογισμικό της επίλυσης έπειτα από επιτυχές debugging επίλυσε όλους τους πιθανούς κύβους που δημιουργούσε η συνάρτηση αυτή. Παρακάτω παρουσιάζεται η συνάρτηση η οποία είναι υπεύθυνη για τη διαδικασία που περιγράφθηκε: void CreateARandomRubikCube() { int i; // create a solved cube for (i=1; i<10; i++) { cube[i]=yellow; cube[10+i]=orange; cube[20+i]=blue; cube[30+i]=red; cube[40+i]=green; cube[50+i]=white; } cube[0]=cube[10]=cube[20]=cube[30]=cube[40]=cube[50]=nocolor; } // shuffle the cube for (i=0; i<100; i++) { switch( rand()%15 ) { case 0: RightMovement(); break; case 1: RightInverseMovement(); break; case 2: LeftMovement(); break; case 3: LeftInverseMovement(); break; case 4: UpMovement(); break; case 5: UpInverseMovement(); break; case 6: UpDownCube(); break; case 7: DownMovement(); break; case 8: DownInverseMovement(); break; case 9: FrontMovement(); break; case 10: FrontInverseMovement(); break; case 11: BackMovement(); break; case 12: BackInverseMovement(); break; case 13: ClockWiseCubeMovement(); break; case 14: AntiClockWiseCubeMovement(); break; default: break; } } Με την ολοκλήρωση του σταδίου αποσφαλμάτωσης ήταν απαραίτητο να μελετηθεί το πλήθος των κινήσεων που επιβάλλονται από το λογισμικό που αναπτύχτηκε για την επίλυση του κύβου του Rubik. Παρατηρήθηκε ότι η επίλυση ολοκληρωνόταν μετά από την εκτέλεση κινήσεων. Τα στάδια τα οποία καταλάμβαναν το μεγαλύτερο πλήθος κινήσεων ήταν το τρίτο και το τέταρτο, δηλαδή η ολοκλήρωση της άσπρης πλευράς και του μεσαίου επιπέδου αντίστοιχα. 101

102 Τα αποτελέσματα δεν ήταν ικανοποιητικά γι αυτό αναζητήθηκε η υλοποίηση εναλλακτικού αλγορίθμου επίλυσης του κύβου με πολύ λιγότερες κινήσεις. Σκοπός ήταν να μειωθούν οι κινήσεις τουλάχιστον στο μισό από αυτές που είχαν καταγραφεί με τον βασικό αλγόριθμο. Αυτό θα μπορούσε να γίνει με δύο τρόπους. Ο πρώτος τρόπος θα αφορούσε την ανάπτυξη ενός νέου λογισμικού επίλυσης του κύβου του Rubik βασισμένου εξ ολοκλήρου σε κάποια άλλη μέθοδο η οποία προσφέρει την ευελιξία λιγότερων κινήσεων. Ο άλλος τρόπος, ο οποίος και υλοποιήθηκε εν τέλει, ήταν να αλλάξουν μεμονωμένα τα στάδια τα οποία καταλαμβάνουν το μεγαλύτερο πλήθος κινήσεων. Με αυτή την προϋπόθεση, ο αλγόριθμος ο οποίος ακολουθεί την ίδια σταδιακή επίλυση με τον βασικό αλγόριθμο ήταν της Fridrich, ο οποίος αναλύθηκε στην παράγραφο 1.4. Το τρίτο και τέταρτο στάδιο του βασικού αλγορίθμου αντιστοιχεί στο δεύτερο στάδιο του αλγορίθμου της Fridrich, το F2L. Όπως ήδη έχει αναφερθεί, η ολοκλήρωση της άσπρης πλευράς και του μεσαίου επιπέδου γίνονται ταυτόχρονα με αποτέλεσμα την ολοκλήρωσή τους σε πολύ λιγότερες κινήσεις από αυτές του βασικού αλγορίθμου. Για το συγκεκριμένο λογισμικό χρειάστηκαν να μεταφραστούν σε γλώσσα προγραμματισμού C++ και οι 51 πιθανές περιπτώσεις που ελέγχει το στάδιο F2L. Προτείνεται στο σημείο αυτό, ο αναγνώστης να ανατρέξει στον κώδικα που επισυνάπτεται στο Παράρτημα Α. Στην πορεία της αποσφαλμάτωσης, διαπιστώθηκε ότι απουσίαζαν κι άλλες πιθανές περιπτώσεις που μπορεί να λάβει ο κύβος του Rubik στο στάδιο αυτό. Για τον λόγο αυτό αποφασίστηκε να γίνει συνδυασμός του σταδίου F2L με τα προηγούμενα στάδια 3 και 4 του βασικού αλγορίθμου. Με αυτόν τον τρόπο, στην περίπτωση που βρεθεί η κατάσταση του κύβου στο σημείο αυτό της επίλυσης, να μην αντιπροσωπεύεται με κάποια από τις 51 τότε να επιλέγεται να ακολουθηθεί η διαδικασία που είχε οριστεί από τα στάδια 3 και 4 όπως αυτά είχαν αναπτυχθεί αρχικά στο λογισμικό. Μετά από το απαραίτητο debugging και την αναμενόμενη καταμέτρηση κινήσεων παρατηρήθηκε πως το πλήθος των κινήσεων μειώθηκαν στο μισό. Η επίλυση του κύβου του Rubik ολοκληρωνόταν σε 100 με 150 κινήσεις. Το μέγιστο πλήθος κινήσεων υπήρχε μόνο στις περιπτώσεις που ο κύβος του Rubik χρησιμοποιούσε κομμάτι του βασικού αλγορίθμου για την επίλυση της άσπρης πλευράς και του μεσαίου επιπέδου. 102

103 Παρακάτω ακολουθεί ένας συνοπτικός πίνακας με όλες τις συναρτήσεις που υλοποιήθηκαν για το λογισμικό της επίλυσης του κύβου: ΣΥΝΑΡΤΗΣΕΙΣ ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK CreateARandomRubikCube() IsCubeSolved() IsCubeValid() CheckCube() RightInverseMovement() RightMovement() LeftInverseMovement() LeftMovement() UpInverseMovement() UpMovement() BackInverseMovement() BackMovement() DownInverseMovement() DownMovement() FrontInverseMovement() FrontMovement() AntiClockWiseCubeMovement() Παραγωγή τυχαίων μπερδεμένων κύβων. Έλεγχος αν ο κύβος είναι λυμένος. Έλεγχος αν ο κύβος είναι σωστός. Έλεγχος αν το αποτέλεσμα της παραπάνω συνάρτησης είναι ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ. Δεξιά περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. Δεξιά περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Αριστερή περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. Αριστερή περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Πάνω περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. Πάνω περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Πίσω περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. Πίσω περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Κάτω περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. Κάτω περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Μπροστά περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. Μπροστά περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Πλήρης περιστροφή αντίθετα της κατεύθυνσης των δεικτών του ρολογιού. 103

104 ClockWiseCubeMovement() UpDownCube() UpDownifNeeded() RotateCubeifNeeded() WhiteEdgePieces() StageOne() StageTwo() StageThree() MiddleLayer() MiddleLayer_Right() MiddleLayer_Left() StageFive_A() YellowCrossStates() StageFive_B() StageSix_A() StageSix_B() Πλήρης περιστροφή σύμφωνα της κατεύθυνσης των δεικτών του ρολογιού. Αναποδογύρισμα του κύβου. Ελέγχει αν χρειάζεται αναποδογύρισμα ο κύβος. Περιστροφή κύβου καλώντας εάν χρειάζεται. Εύρεση των άσπρων edge pieces. Επίλυση του πρώτου σταδίου. Επίλυση του δεύτερου σταδίου. Επίλυση του F2L σταδίου. Επίλυση του μεσαίου επιπέδου. Ακολουθία για δεξιά περιστροφή για την επίλυση του μεσαίου επιπέδου. Ακολουθία για αριστερή περιστροφή για την επίλυση του μεσαίου επιπέδου. Επίλυση του πέμπτου σταδίου βήμα πρώτο. Ακολουθία κινήσεων για την δημιουργία του κίτρινου σταυρού στην κίτρινη επιφάνεια. Επίλυση του πέμπτου σταδίου βήμα πρώτο. Επίλυση του έκτου σταδίου βήμα πρώτο. Επίλυση του έκτου σταδίου βήμα πρώτο. 4.5 ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΕΠΙΛΥΣΗΣ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK ΣΤΗΝ VGA ΟΘΟΝΗ Το ψηφιακό σύστημα που αναπτύχθηκε περιλαμβάνει και την παρουσίαση της επίλυσης του κύβου του Rubik σε μια οθόνη VGA ανάλυσης 640x480 pixels. Για την παρουσίαση αυτή χρησιμοποιήθηκαν συναρτήσεις που παρέχει η Altera για την αξιοποίηση του pixel buffer της οθόνης. Όπως παρουσιάζεται και στην Εικόνα 4.5 τα 104

105 γραφικά που σχεδιάστηκαν αφορούσαν τη δημιουργία ενός τρισδιάστατου κύβου του Rubik με προβολή των τριών βασικών πλευρών που χρειάζεται ο χρήστης να παρακολουθεί συνεχώς αλλά και των υπόλοιπων τριών πλευρών σαν προεκτάσεις της πίσω, της αριστερής και της κάτω πλευράς του κύβου για να μην χάνεται καμία πληροφορία που θα μπορούσε να βοηθήσει το χρήστη. Εικόνα 4.5 H παρουσίαση της επίλυσης του κύβου του Rubik. Για το σχεδιασμό των γραφικών του τρισδιάστατου κύβου χρησιμοποιήθηκαν δύο συναρτήσεις της Altera. Η πρώτη είναι η alt_up_pixel_buffer_dma_draw_line(), η οποία σχεδιάζει διαγώνιες γραμμές και βοήθησε στο σχεδιασμό των πλευρών που φαίνονται με οπτική γωνία βάθος στην οθόνη. Τα ορίσματα που πρέπει να τεθούν στην συγκεκριμένη συνάρτηση είναι το όνομα του pixel buffer της οθόνης, οι συντεταγμένες που επιθυμείται να σχεδιαστεί η γραμμή, το χρώμα που πρέπει να οριστεί και η επιλογή αν θα σχεδιαστεί αρχικά στον back buffer ή στον current buffer του pixel buffer της οθόνης. Η δεύτερη συνάρτηση που χρησιμοποιήθηκε είναι η alt_up_pixel_buffer_dma_draw_box(), η οποία σχεδιάζει στον pixel buffer 105

106 περιοχές στο σχήμα τετραγώνου ή ορθογωνίου με αμιγές γέμισμα στο εσωτερικό του. Ομοίως με την προηγούμενη συνάρτηση τα ορίσματα που πρέπει να τεθούν είναι το όνομα του pixel buffer της οθόνης, οι συντεταγμένες που επιθυμείται να σχεδιαστεί το σχήμα, το χρώμα που πρέπει να οριστεί και η επιλογή αν θα σχεδιαστεί αρχικά στον back buffer ή στον current buffer του pixel buffer της οθόνης. Στην οθόνη επίλυσης του κύβου του Rubik, παρουσιάζονται τα απαραίτητα μηνύματα καθοδήγησης του χρήστη για την επίλυση. Τα μήνυματα αυτά έγιναν με χρήση των συναρτήσεων της Altera alt_up_char_buffer_string() η οποία εμφανίζει μια σειρά χαρακτήρων. Τα ορίσματα που πρέπει να τεθούν είναι το όνομα του character buffer, το μήνυμα που επιθυμείται να εμφανιστεί και οι συντεταγμενες της οθόνης όπου θα εμφανιστεί το μήνυμα. Υπάρχει η σχετική πληροφορία σε ποιο στάδιο ευρίσκεται την παρούσα στιγμή, ποια κίνηση θα εκτελέσει, το πλήθος των κινήσεων που έχει εκτελέσει μέχρι στιγμής, οι συνολικές κινήσεις για την ολοκλήρωση της επίλυσης καθώς και μια μπάρα ολοκλήρωσης για να επιδεικνύει στον χρήστη το ποσοστό επίτευξης των σταδίων μετά την εκτέλεση κάθε κίνησης. Το συνολικό σύστημα παρέχει δυνατότητες καθοδήγησης του χρήστη κίνηση κίνηση και αυτόματης επίλυσης του κύβου του Rubik. 106

107 4.6 ΣΥΝΟΛΙΚΟ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΤΟΥ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ 107

108 Στην Εικόνα 4.6 παρουσιάζεται το Flow Summary, δηλαδή μια σύνοψη πληροφοριών του ψηφιακού συστήματος μετά από το επιτυχή compilation από το Quartus II. Παρατηρείται ότι το ψηφιακό σύστημα καταλαμβάνει το 9% του συνολικού αριθμού των λογικών στοιχείων και επίσης χρησιμοποιεί 220 από τους 622 ακροδέκτες (pins) του Cyclone II, δηλαδή το 35%. Επιπλέον, από τα bits της μνήμης χρησιμοποιείται το 14% καθώς και 4 από τους 300 ενσωματωμένους πολλαπλασιαστές του Cyclone II. Τέλος, το ψηφιακό σύστημα αξιοποιεί ένα από τα τέσσερα διαθέσιμα PLLs. Εικόνα 4.6 Το Flow Summary του συστήματος. 108

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

Πτυχιακή Εργασία Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2. ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Πτυχιακή Εργασία Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές

Διαβάστε περισσότερα

Μαθαίνοντας το hardware του αναπτυξιακού

Μαθαίνοντας το hardware του αναπτυξιακού 1. ΑΣΚΗΣΗ 1 Μαθαίνοντας το hardware του αναπτυξιακού Προϋποθέσεις Το εργαστήριο αυτό προϋποθέτει το διάβασμα και χρήση των εξής: Αρχείο mcbstr9.chm HTML, που δίδεται με τα υπόλοιπα αρχεία του εργαστηρίου.

Διαβάστε περισσότερα

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

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία. Φοιτητής: ΤΣΟΥΛΑΣ ΧΡΗΣΤΟΣ

Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία. Φοιτητής: ΤΣΟΥΛΑΣ ΧΡΗΣΤΟΣ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία Φοιτητής:

Διαβάστε περισσότερα

Μάθημα 4.2 Η μητρική πλακέτα

Μάθημα 4.2 Η μητρική πλακέτα Μάθημα 4.2 Η μητρική πλακέτα - Εισαγωγή - Οι βάσεις του επεξεργαστή και της μνήμης - Οι υποδοχές της μητρικής πλακέτας - Άλλα μέρη της μητρική πλακέτας - Τυποποιήσεις στην κατασκευή μητρικών πλακετών Όταν

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016 2017 Χ. Βέργος Καθηγητής ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Σκοπός της φετινής εργασίας εξαμήνου είναι η σχεδίαση ενός Συστήματος Απεικόνισης Χαρακτήρων

Διαβάστε περισσότερα

ΥΛΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΨΗΦΙΑΚΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ ΣΕ FPGA ΜΕ ΧΡΗΣΗ ΤΟΥ DE2-70: Σχεδίαση ενός Photo Frame

ΥΛΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΨΗΦΙΑΚΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ ΣΕ FPGA ΜΕ ΧΡΗΣΗ ΤΟΥ DE2-70: Σχεδίαση ενός Photo Frame Μεταπτυχιακή Διπλωματική Εργασία ΥΛΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΨΗΦΙΑΚΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ ΣΕ FPGA ΜΕ ΧΡΗΣΗ ΤΟΥ DE2-70: Σχεδίαση ενός Photo Frame ΠΥΡΓΑΣ ΛΑΜΠΡΟΣ Α.Μ:433 Επιβλέπων: Ευάγγελος Ζυγούρης Αναπλ. Καθηγητής

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Μαθηµα 2 ηµήτρης Λιούπης 1 Intel SA-1110 µc StrongARM core. System-on-Chip. Εξέλιξη των SA-110 και SA-1100. 2 ARM cores ARM: IP (intellectual

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Χ. Βέργος Καθηγητής

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Χ. Βέργος Καθηγητής ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013 2014 Χ. Βέργος Καθηγητής ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Σκοπός της φετινής εργασίας εξαμήνου είναι η σχεδίαση ενός Συστήματος Απεικόνισης Χαρακτήρων

Διαβάστε περισσότερα

Ειδική Ερευνητική Εργασία

Ειδική Ερευνητική Εργασία Ειδική Ερευνητική Εργασία Σχεδίαση Ψηφιακού Συστήματος για Επεξεργασία Ήχου με Χρήση του Επεξεργαστή Nios II και Υλοποίηση του στο DE2 Board της ALTERA Βασσάλος Ευάγγελος Α.Μ. 290 Επιβλέπων : Δ. Μπακάλης

Διαβάστε περισσότερα

Λογικά σύμβολα των CPU, RAM, ROM και I/O module

Λογικά σύμβολα των CPU, RAM, ROM και I/O module Μικροϋπολογιστές Λογικά σύμβολα των CPU, RAM, ROM και I/O module Data CPU Data Data Address RAM Control Address Control External Data Data Address Control I/O module External Data External Control ROM

Διαβάστε περισσότερα

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

Κυκλωμάτων» Χειμερινό εξάμηνο «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Εισαγωγή στα Συστήματα Ολοκληρωμένων Κυκλωμάτων Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής http://diceslab.cied.teiwest.gr E-mail: pkitsos@teimes.gr

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

Διαβάστε περισσότερα

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

Διαβάστε περισσότερα

Βασικές Έννοιες της Πληροφορικής

Βασικές Έννοιες της Πληροφορικής Βασικές Έννοιες της Πληροφορικής Ηλεκτρονικός Υπολογιστής Αυτόματη ηλεκτρονική μηχανή που δέχεται, φυλάσσει, επαναφέρει, επεξεργάζεται και παρουσιάζει πληροφορίες σύμφωνα με προκαθορισμένες εντολές. Δεδομένα

Διαβάστε περισσότερα

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

Διαβάστε περισσότερα

ΡΟΜΠΟΤΙΚΗ ΟΡΑΣΗ. Όταν ένα ρομπότ κινείται σε άγνωστο χώρο ή σε χώρο που μπορεί να αλλάξει η διάταξή του τότε εμφανίζεται η ανάγκη της όρασης μηχανής.

ΡΟΜΠΟΤΙΚΗ ΟΡΑΣΗ. Όταν ένα ρομπότ κινείται σε άγνωστο χώρο ή σε χώρο που μπορεί να αλλάξει η διάταξή του τότε εμφανίζεται η ανάγκη της όρασης μηχανής. ΡΟΜΠΟΤΙΚΗ ΟΡΑΣΗ Όταν ένα ρομπότ κινείται σε άγνωστο χώρο ή σε χώρο που μπορεί να αλλάξει η διάταξή του τότε εμφανίζεται η ανάγκη της όρασης μηχανής. Αισθητήρες που χρησιμοποιούνται για να αντιλαμβάνεται

Διαβάστε περισσότερα

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

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ ΕΘΝΙΚΟΝ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟΝ ΠΑΝΕΠΙΣΤΗΜΙΟΝ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΥΛΙΚΟ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΠΣ Πληροφορικής και Τηλεπικοινωνιών, E Εξάμηνο

Διαβάστε περισσότερα

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

Διαβάστε περισσότερα

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Πλατφόρμες ενσωματωμένων συστημάτων Διδάσκων: Παναγιώτης Καρκαζής Περίγραμμα - Δίαυλοι επικοινωνίας - Μνήμες -Συσκευές Ι/Ο Timers Counters keyboards Leds 7 segment display

Διαβάστε περισσότερα

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές Εισαγωγή στο Arduino Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών Τι είναι Μικροελεγκτής; Ηλεκτρονική συσκευή που διαχειρίζεται ηλεκτρονικά

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

Διαβάστε περισσότερα

Κεφάλαιο 4. Διδακτικοί Στόχοι. Για την αναγκαιότητα, τον τρόπο συνεργασίας, τις δυνατότητες και τον τρόπο εγκατάστασης των περιφερειακών συσκευών.

Κεφάλαιο 4. Διδακτικοί Στόχοι. Για την αναγκαιότητα, τον τρόπο συνεργασίας, τις δυνατότητες και τον τρόπο εγκατάστασης των περιφερειακών συσκευών. Κεφάλαιο 4 Ένα υπολογιστικό σύστημα εκτός από την ΚΜΕ και την κύρια μνήμη που χρησιμοποιούνται για την επεξεργασία και προσωρινή αποθήκευση δεδομένων βασίζεται στις περιφερειακές συσκευές για την επικοινωνία

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 Τεχνολογία Ι Θεωρητικής Κατεύθυνσης Τεχνικών Σχολών Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

WDT και Power Up timer

WDT και Power Up timer Ο ΜΙΚΡΟΕΛΕΓΚΤΗΣ PIC O μικροελεγκτής PIC κατασκευάζεται από την εταιρεία Microchip. Περιλαμβάνει τις τρεις βασικές κατηγορίες ως προς το εύρος του δίαυλου δεδομένων (Data Bus): 8 bit (σειρές PIC10, PIC12,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής) ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α Γενικού Λυκείου (Μάθημα Επιλογής) Σύγχρονα Υπολογιστικά Συστήματα τους υπερυπολογιστές (supercomputers) που χρησιμοποιούν ερευνητικά εργαστήρια τα μεγάλα συστήματα (mainframes)

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

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

Συστήματα VLSI. Εισαγωγή. Γιώργος Δημητρακόπουλος. Δημοκρίτειο Πανεπιστήμιο Θράκης. Άνοιξη 2014 Συστήματα VLSI Εισαγωγή Γιώργος Δημητρακόπουλος Δημοκρίτειο Πανεπιστήμιο Θράκης Άνοιξη 2014 Συστήματα VLSI 1 Τα ολοκληρωμένα κυκλώματα από «μέσα» Συστήματα VLSI 2 Τα εργαλεία της σχεδίασης Algorithms-Applications

Διαβάστε περισσότερα

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΡΟΜΠΟΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΜΠΑΝΤΗΣ ΑΝΤΩΝΙΟΣ 533 ΤΣΙΚΤΣΙΡΗΣ ΔΗΜΗΤΡΙΟΣ 551 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΡΟΜΠΟΤ LEGO NXT Το ρομπότ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Χειµερινό Εξάµηνο

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Χειµερινό Εξάµηνο ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Χειµερινό Εξάµηνο 2006-2007 Εκφώνηση Εργαστηρίου Στο εργαστήριο του µαθήµατος σας ζητείται να σχεδιάσετε, να υλοποιήσετε και να επαληθεύσετε

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α' ΛΥΚΕΙΟΥ ΕΝΟΤΗΤΑ 1η ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ 1. Τι ονομάζουμε υλικό και τι λογισμικό ενός υπολογιστικού συστήματος; 2. Τι είναι α) η μητρική πλακέτα ( motherboard), β) η κεντρική μονάδα

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

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

ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Τα τμήματα ενός ηλεκτρονικού υπολογιστή είναι: 1. Επεξεργαστής 2. Μνήμη RAM και ROM 3. Κάρτα γραφικών 4. Μητρική Πλακέτα 5. Σκληρός Δίσκος 6. DVD / Blue Ray 7. Τροφοδοτικό

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης. Χαρακτηριστικά προϊόντος. Φόρτιση: Οδηγίες Λειτουργίας. Εναλλαγή λειτουργιών. Κουμπιά Λειτουργιών

Εγχειρίδιο Χρήσης. Χαρακτηριστικά προϊόντος. Φόρτιση: Οδηγίες Λειτουργίας. Εναλλαγή λειτουργιών. Κουμπιά Λειτουργιών Εγχειρίδιο Χρήσης Χαρακτηριστικά προϊόντος Με / Χωρίς έξοδο βίντεο HDMI 2,4 ίντσες LTPS TFT LCD οθόνη 4 μέρη του κυρίως φακού. Το εύρος εστίασης είναι 12 εκ. εώς άπειρο Φακοί HD ευρείας γωνίας 4x ψηφιακό

Διαβάστε περισσότερα

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα1 Υλικό Λογισμικό και Εφαρμογές Κεφ1: Υλικό Υπολογιστών - Hardware Τι ονομάζουμε υλικό υπολογιστών; Με τον όρο υλικό (hardware) αναφερόμαστε σε οτιδήποτε έχει μια φυσική-υλική υπόσταση σε ένα υπολογιστικό

Διαβάστε περισσότερα

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

Περιεχόμενα. Πρόλογος... XI. Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA Κεφάλαιο 2. Τεχνολογία VLSI Εισαγωγή Βασικές Αρχές... Περιεχόμενα Πρόλογος... XI Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA... 1 1.1 Εισαγωγή... 1 1.2 Βασικές Αρχές... 1 1.2.1 Boolean Άλγεβρα... 1 1.2.2 Σχηματικά και Λογικά Σύμβολα... 6 1.3 Ψηφιακή Σχεδίαση

Διαβάστε περισσότερα

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος Κλήμης Νταλιάνης Λέκτορας Π.Δ.407/80 Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Αρχιτεκτονική

Διαβάστε περισσότερα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

Διαβάστε περισσότερα

ΗΥ220: Εργαστήριο ψηφιακών κυκλωμάτων

ΗΥ220: Εργαστήριο ψηφιακών κυκλωμάτων Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ220: Εργαστήριο ψηφιακών κυκλωμάτων Γιώργος Δημητρακόπουλος Ελεγκτής VGA οθόνης και αντιμετώπιση μεγαλύτερων κυκλωμάτων Συνεχίζοντας από την 3 η άσκηση,

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΑΠΑΝΤΗΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα : Μικροϋπολογιστές Τεχνολογία Τ.Σ. Ι, Θεωρητικής κατεύθυνσης Ημερομηνία

Διαβάστε περισσότερα

Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική

Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική Κύρια μέρη υπολογιστή Υπάρχουν διάφορα είδη υπολογιστών προσωπικοί (επιτραπέζιοι, φορητοί,...), ενσωματωμένοι, εξυπηρετητές (servers)

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (IΙI)

Οργάνωση Υπολογιστών (IΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή 1.5.1 Ανάλυση των μερών ενός υπολογιστή Μονάδα συστήματος Είναι το κουτί του υπολογιστή το οποίο φαίνεται αρκετά συμπαγές, αλλά στην πραγματικότητα αποτελείται

Διαβάστε περισσότερα

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη Σημειώσεις : Χρήστος Μουρατίδης Κάντε κλικ για έναρξη Γενική εικόνα Στο σχήμα βλέπουμε μία γενική εικόνα του εσωτερικού της Κεντρική Μονάδας του υπολογιστή: Τροφοδοτικό Είναι μία ηλεκτρική μικροσυσκευή,

Διαβάστε περισσότερα

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

Κεφάλαιο 7 ο. Γ. Τσιατούχας. VLSI Technology and Computer Architecture Lab. Ακολουθιακή Λογική 2

Κεφάλαιο 7 ο. Γ. Τσιατούχας. VLSI Technology and Computer Architecture Lab. Ακολουθιακή Λογική 2 ΚΥΚΛΩΜΑΤΑ VLSI Ακολουθιακή Λογική Κεφάλαιο 7 ο Γ. Τσιατούχας ΚΥΚΛΩΜΑΤΑ VLSI Διάρθρωση 1. Δισταθή κυκλώματα Μεταστάθεια 2. Μανδαλωτές 3. Flip Flops Flops 4. Δομές διοχέτευσης 5. Διανομή ρολογιού 6. Συγχρονισμός

Διαβάστε περισσότερα

Εφαρμογές Ψηφιακών Ηλεκτρονικών

Εφαρμογές Ψηφιακών Ηλεκτρονικών ΑΣΚΗΣΗ 1 Εφαρμογές Ψηφιακών Ηλεκτρονικών Εργαστήριο Ηλεκτρονικής Τηλεπικοινωνιών και Εφαρμογών, Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Βασίλης Χριστοφιλάκης 1 ΑΣΚΗΣΗ 1: ΕΙΣΑΓΩΓΗ ΣΤ Η ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ ΜΕΣΩ

Διαβάστε περισσότερα

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους.

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. *Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε ονομάζονται συνολικά υλικό (hardware). * * υπερυπολογιστές

Διαβάστε περισσότερα

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο 2017 2018 Εργαστήριο 1 (2 εβδοµάδες) Εβδοµάδα 6/11 έως 10/11 (αναλόγως το εργαστηριακό τµήµα που

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο AEN ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΠΛΟΙΑΡΧΩΝ Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο ΘΕΩΡΙΑ 3 η Διάλεξη ΧΑΣΑΝΗΣ ΒΑΣΙΛΕΙΟΣ ΥΠΟΛΟΓΙΣΤΙΚΟ ΣΥΣΤΗΜΑ Υπολογιστικό σύστημα: Ένα δυναμικό σύστημα που: Χρησιμοποιείται για επίλυση προβλημάτων

Διαβάστε περισσότερα

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Embedded processor Nios II σε FPGA της Altera ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Embedded processor Nios II σε FPGA της Altera ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Embedded processor Nios II σε FPGA της Altera ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Εισηγητής: Μπούζας Αθανάσιος Επιβλέπων: Κολιοπάνος Χρήστος ΠΕΡΙΕΧΟΜΕΝΑ 1. ΕΙΣΑΓΩΓΗ 1.1 ΣΤΟΧΟΣ ΠΤΥΧΙΑΚΗΣ

Διαβάστε περισσότερα

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

ΑΝΑLOG TO DIGITAL CONVERTER (ADC) ΑΝΑLOG TO DIGITAL CONVERTER (ADC) O ADC αναλαμβάνει να μετατρέψει αναλογικές τάσεις σε ψηφιακές ώστε να είναι διαθέσιμες εσωτερικά στο μικροελεγκτή για επεξεργασία. Η αναλογική τάση που θέλουμε να ψηφιοποιηθεί

Διαβάστε περισσότερα

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

Οδηγίες εγκατάστασης και χρήσης του Quartus Εγκατάσταση του Quartus Οδηγίες εγκατάστασης και χρήσης του Quartus Δημήτρης Μαγγίρας, Γιώργος Δημητρακόπουλος 1. Κατεβάζουμε την έκδοση 13.0SP1 από εδώ ακολουθώντας τις οδηγίες που φαίνονται στην εικόνα.

Διαβάστε περισσότερα

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

Ενσωµατωµένα Συστήµατα Ενσωµατωµένα Συστήµατα για εφαρµογές πραγµατικού χρόνου Μικροελεγκτής Arduino Ιωάννης Καλόµοιρος Αναπληρωτής Καθηγητής Τµήµα Μηχανικών Πληροφορικής Μάθηµα 7ο Τι είναι το Arduino... Ένα open-hardware σύστηµα

Διαβάστε περισσότερα

WIRELESS SENSOR NETWORKS (WSN)

WIRELESS SENSOR NETWORKS (WSN) WIRELESS SENSOR NETWORKS (WSN) Δρ. Ιωάννης Παναγόπουλος Εργαστήριο Υπολογιστικών Συστημάτων Καθ. Γεώργιος Παπακωνσταντίνου Αθήνα 2008 ΕΙΣΑΓΩΓΗ ΣΤΑ WSN Σε συγκεκριμένες εφαρμογές, επιθυμείται η μέτρηση

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) Συσκευές αποθήκευσης Ένας υπολογιστής προκειµένου να αποθηκεύσει δεδοµένα χρησιµοποιεί δύο τρόπους αποθήκευσης: Την Κύρια Μνήµη Τις συσκευές µόνιµης αποθήκευσης (δευτερεύουσα

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

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

Διαβάστε περισσότερα

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

Διαβάστε περισσότερα

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

Εφαρμογές μικροελεγκτών

Εφαρμογές μικροελεγκτών Μικροελεγκτές Έναν ορισμό που θα μπορούσαμε να δώσουμε για τους μικροελεγκτές είναι ο εξής: Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2018-2019 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα ολοκληρωμένα κυκλώματα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ ΕΙΣΑΓΩΓΗ Θέµατα ❸Συστήµατα Η/Υ (αναφορά) ❸Γλώσσα υπολογιστών ❸Γλώσσες προγραµµατισµού (low-high level) ❸Low level VS high level programming ❸Βασικά µέρη Η/Υ ❸Μικροϋπολογιστές (µc µp) ❸Αρχιτεκτονική µικροελεγκτών

Διαβάστε περισσότερα

TEI Ιονίων Νήσων Τμήμα Τεχνολογίας Τροφίμων Πληροφορική Σημειώσεις Τεύχος 2. Μάκης Σταματελάτος

TEI Ιονίων Νήσων Τμήμα Τεχνολογίας Τροφίμων Πληροφορική Σημειώσεις Τεύχος 2. Μάκης Σταματελάτος TEI Ιονίων Νήσων Τμήμα Τεχνολογίας Τροφίμων Πληροφορική Σημειώσεις Τεύχος 2 Μάκης Σταματελάτος makiss@teiion.gr Περιεχόμενα Τα Κύρια Μέρη του Η/Υ (συνέχεια) Αναπαράσταση της πληροφορίας στον Η/Υ Δυαδικό

Διαβάστε περισσότερα

Οδηγίες Χρήσης Ασύρματης Φορητής WiFi Κάμερας

Οδηγίες Χρήσης Ασύρματης Φορητής WiFi Κάμερας Οδηγίες Χρήσης Ασύρματης Φορητής WiFi Κάμερας Κομβίο Επαναφοράς RESET Θύρα κάρτας SD Πίσω κάλυμμα Διακόπτης λειτουργίας Θυρα Φόρτισης Οπή Βάσης στήριξης Ένδειξη λειτουργίας Μικρόφωνο Αισθητήρας στάθμης

Διαβάστε περισσότερα

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο 2017 2018 Εργαστήριο 2 (2 εβδοµάδες) Εβδοµάδα 27/11 έως 01/12 (αναλόγως το εργαστηριακό τµήµα που

Διαβάστε περισσότερα

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου 1. Τι ονομάζουμε κόμβο και τι σύνδεσμο σε μια μη γραμμικά διαρθρωμένη ύλη; Με την έννοια σύνδεσμος (link) σε μια μη γραμμικά διαρθρωμένη

Διαβάστε περισσότερα

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 4 η :

Διαβάστε περισσότερα

Α.Τ.Ε.Ι. Ηρακλείου Ψηφιακή Επεξεργασία Εικόνας ιδάσκων: Βασίλειος Γαργανουράκης. Ανθρώπινη Όραση - Χρωµατικά Μοντέλα

Α.Τ.Ε.Ι. Ηρακλείου Ψηφιακή Επεξεργασία Εικόνας ιδάσκων: Βασίλειος Γαργανουράκης. Ανθρώπινη Όραση - Χρωµατικά Μοντέλα Ανθρώπινη Όραση - Χρωµατικά Μοντέλα 1 Τι απαιτείται για την όραση Φωτισµός: κάποια πηγή φωτός Αντικείµενα: που θα ανακλούν (ή διαθλούν) το φως Μάτι: σύλληψη του φωτός σαν εικόνα Τρόποι µετάδοσης φωτός

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2017-2018 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Γιώργος Καλοκαιρινός & Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου ΚΕΦΑΛΑΙΟ 1 Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου Υπολογιστικά συστήματα σχεδιάστηκαν για να καλύψουν συγκεκριμένες ανάγκες σε συγκεκριμένη χρονική στιγμή και βοηθούν στη συνολική πρόοδο της τεχνολογίας Φουκαράκη

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

Σχεδιαστικά Προγράμματα Επίπλου

Σχεδιαστικά Προγράμματα Επίπλου Σχεδιαστικά Προγράμματα Επίπλου Καθηγήτρια ΦΕΡΦΥΡΗ ΣΩΤΗΡΙΑ Τμήμα ΣΧΕΔΙΑΣΜΟΥ & ΤΕΧΝΟΛΟΓΙΑΣ ΞΥΛΟΥ - ΕΠΙΠΛΟΥ Σχεδιαστικά Προγράμματα Επίπλου Η σχεδίαση με τον παραδοσιακό τρόπο απαιτεί αυξημένο χρόνο, ενώ

Διαβάστε περισσότερα

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

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ 1.1 ΕΙΣΑΓΩΓΙΚΗ ΑΝΑΦΟΡΑ ΣΤΑ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 1 1.1.1 Σήματα ψηφιακών συστημάτων 1 1.1.2 Παράλληλη και σειριακή μεταφορά πληροφορίας 2 1.1.3 Λογική τριών

Διαβάστε περισσότερα

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΗΜΙΑΓΩΓΙΚΩΝ ΜΝΗΜΩΝ. ΒΑΣΙΚΗ ΛΕΙΤΟΥΡΓΙΑ RAM CMOS. ΤΥΠΟΙ ΚΥΤΤΑΡΩΝ ΑΡΧΕΣ

Διαβάστε περισσότερα

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

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ 1.1 ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΝΑΛΟΓΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ 1 1.1.1 Αναλογικά σήματα 1 1.1.2 Οι αντιστάσεις 3 1.1.3 Οι πυκνωτές 7 1.1.4 Τα πηνία 11 1.1.5 Οι δίοδοι 13 1.1.6

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 Μάθημα : Μικροϋπολογιστές Τεχνολογία Τ.Σ. Ι, Θεωρητικής κατεύθυνσης Ημερομηνία

Διαβάστε περισσότερα

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa.

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa. Πληροφορική 1 Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa.gr/~organosi/ 2 Η δομή του μαθήματος Εισαγωγή στην

Διαβάστε περισσότερα

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

ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ Τ.Ε.Ι. ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ ΟΝΟΜΑΤΑ ΦΟΙΤΗΤΩΝ: ΒΟΥΡΔΕΡΗΣ ΑΝΤΩΝΙΟΣ Α.Μ: 30086 ΙΩΑΝΝΟΥ ΙΩΑΝΝΗΣ Α.Μ: 33359 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΝΙΚΟΛΑΟΥ ΓΡΗΓΟΡΗΣ Ιστορική

Διαβάστε περισσότερα