Υλοποίηση αλγόριθμου ανίχνευσης ακμών σε εικόνα (Sobel)

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

Download "Υλοποίηση αλγόριθμου ανίχνευσης ακμών σε εικόνα (Sobel)"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΦΥΣΙΚΗΣ - ΡΑΔΙΟΗΛΕ- ΚΤΡΟΛΟΓΙΑΣ - ΤΟΜΕΑΣ ΣΧΕΔΙΑΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΚΥΚΛΩΜΑΤΩΝ Γέντσος Χρίστος ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Με τίτλο Υλοποίηση αλγόριθμου ανίχνευσης ακμών σε εικόνα (Sobel) Επιβλέποντες: Σπύρος Νικολαΐδης, Αναπληρωτής Καθηγητής Θεσσαλονίκη, Μάρτιος 2010

2 Περίληψη Σχεδιάσαμε ένα IP core το οποίο εφαρμόζει τον τελεστή Sobel 3x3 [1] στα στοιχεία μιας εικόνας, κάτι που αποτελεί το βασικό στάδιο ενός συστήματος ανίχνευση ακμών. Το IP core σχεδιάστηκε για χρήση με το λογισμικό EDK της Xilinx. Έτσι μπορεί να ενσωματωθεί σε ένα embedded σύστημα FPGA μέσω του γραφικού περιβάλλοντος που προσφέρει το λογισμικό αυτό. Το IP core συνδέεται σαν περιφερειακό με τον επεξεργαστή (Microblaze της Xilinx) και με τη μνήμη του συστήματος ώστε αφού πάρει την αρχική εντολή από τον επεξεργαστή λειτουργεί αυτόνομα, έχοντας το δικό του δίαυλο επικοινωνίας με τη μνήμη. Η επικοινωνία αυτή γίνεται μέσω του VFBC, το οποίο είναι ένα interface επικοινωνίας με εξωτερική μνήμη DDR εξειδικευμένο για εφαρμογές εικόνας / video. Η επεξεργασία των δεδομένων γίνεται σε ομάδες των 4 pixels των 8 bit ανά κύκλο λειτουργίας, κάνοντας χρήση των δυνατοτήτων παραλληλίας των FPGA και βελτιώνοντας το throughput. Επίσης γίνεται χρήση της γρήγορης τοπικής μνήμης του FPGA ως cache για βέλτιστη αξιοποίηση του bandwidth με τη μνήμη. Κάθε κύκλος λειτουργίας διαρκεί 2 clocks και η διαδικασία του synthesis έδειξε συχνότητες χρονισμού στα 225MHz σε FPGA της σειράς Virtex5 (LX110T), άρα οι επιδόσεις του κυμαίνονται στα 450MPixels/sec. Επίσης το σχέδιο είναι αρκετά μικρό ώστε να χωράει μέχρι και σε μεσαίο FPGA της γενιάς Spartan 3E, όπου οι επιδόσεις του κυμαίνονται στα 100MHz - 200MPixels/sec. Η σωστή λειτουργία του κυκλώματος επιβεβαιώθηκε σε αναπτυξιακό της Xilinx (VUPV5-LX110T) το οποίο χρησιμοποιεί FPGA της σειράς Virtex5. Τέλος για την επιβεβαίωση της λειτουργίας αναπτύξαμε μικρό πρόγραμμα για την επικοινωνία του PC με το αναπτυξιακό και την επισκόπηση των αποτελεσμάτων της επεξεργασίας. Η έρευνα που κατέληξε στα αποτελέσματα αυτής της εργασίας χρηματοδοτήθηκε από Εθνικούς πόρους και από το Ευρωπαϊκό Ταμείο Περιφερειακής Ανάπτυξης στο πλαίσιο του ΕΣΠΑ βάσει της Σύμβασης Συνεργατικού Έργου αριθ. ΜΙΚΡΟ2-49/Ε-ΙΙ-Γ.

3 Abstract The purpose of this thesis is to design an IP core which will apply the 3x3 Sobel operator [1] at the elements of an image. This is the key process of an edge detection system. The IP core was designed for use within the Xilinx EDK software. Thus it can be used in a FPGA embedded system via the graphic environment this software provides. The IP core is connected as a peripheral to the system main processor (Microblaze from Xilinx) and is connected to the system memory using a dedicated bus. That way the processor issues the processing command and is then free to do other processing. The communication with the memory makes use of the VFBC port, which is an interface to the DDR memory specifically designed for use in image / video processing applications. The data processing occurs in 4 pixel groups per processing cycle, taking advantage of FPGA parallelism and improving throughput. We also use the FPGA s fast local memory to cache data, thus relaxing memory bandwidth requirements. Each processing cycle lasts 2 system clocks and synthesis indicated maximum operating frequencies of 225MHz on a Virtex5 FPGA (LX110T). Our maximum processing rate is thus estimated to be 450MPixels/sec. The design is compact enough to fit in smaller devices, like the medium-range Spartan3E economical devices. On those it achieves operating frequencies of 100MHz and processing rates of 200MPixels/sec. The core s operation was verified on a Xilinx development board (XUPV5- LX110T) which utilises a Virtex5 series FPGA. Finally we developed a simple application to allow PC - board communication and verify the results of the processing.

4 Περιεχόμενα 1 Εισαγωγικά Αλγόριθμοι επεξεργασίας εικόνας και FPGA Αλγόριθμοι ανίχνευσης ακμών Το EDK της Xilinx Σχεδιασμός του hardware Θύρες επικοινωνίας Η θύρα FSB Οι θύρες VFBC Block απευθείας επεξεργασίας δεδομένων Τμήμα επεξεργασίας - πράξεων Τμήμα cache Τμήμα ελέγχου Top-level block Επικοινωνία με το FSB Ανάγνωση - εγγραφή μνήμης και επεξεργασία Software δοκιμής του αλγόριθμου Πρόγραμμα του microblaze Πρόγραμμα του PC Συμπεράσματα - πιθανές βελτιώσεις Πλεονεκτήματα της αρχιτεκτονικής μας - επιδόσεις Πιθανές βελτιώσεις Παράρτημα κώδικα 21 Αναφορές 61

5 Κατάλογος σχημάτων 1 Μέθοδοι συνέλιξης προτύπου Μια εικόνα μιας ατμομηχανής Μια εικόνα μιας ατμομηχανής μετά την εφαρμογή του τελεστή Sobel 3 4 Το γραφικό περιβάλλον περιγραφής συστήματος XPS Η παράλληλη επεξεργασία 4 pixels ελαττώνει τις αναγνώσεις από τη μνήμη Χονδρικό block διάγραμμα Λέξεις ελέγχου για μεταφορές με το VFBC Διαδικασία ανάγνωσης στο VFBC Διαδικασία εγγραφής στο VFBC Για κάθε τετράδα pixels που υπολογίζουμε χρειαζόμαστε μέχρι 3 words από την κάθε cache Μαύρα pixels για γειτονικά των ακριανών Κατάλογος Κώδικα 1 Πρόγραμμα microblaze που κάνει χρήση του περιφερειακού Πρόγραμμα python για επικοινωνία με το αναπτυξιακό FPGA Ο κώδικας επεξεργασίας ενός pixel Ο κώδικας επεξεργασίας μιας τετράδας pixels Η υλοποίηση της εξειδικευμένης cache Το τμήμα ελέγχου της επεξεργασίας Το top level block του περιφερειακού Περιγραφή των θυρών του περιφερειακού για το EDK

6 1 ΕΙΣΑΓΩΓΙΚΑ 1 1 Εισαγωγικά 1.1 Αλγόριθμοι επεξεργασίας εικόνας και FPGA Η ταχεία εξέλιξη της ψηφιακής τεχνολογίας στις εικόνες απαιτεί τη χρήση όλο και πιο περίπλοκων αλγόριθμων σε εικόνες μεγάλης ανάλυσης. Έτσι οι απαιτήσεις σε ταχύτητα ξεφεύγουν από τις δυνατότητες μιας απλής CPU. Υπάρχουν διάφορες λύσεις, η καθεμιά με τα πλεονεκτήματά και τα μειονεκτήματά της, όπως η χρήση DSP ή εξειδικευμένων κυκλωμάτων ASSP (Application Specific Standard Product). Οι πρώτοι όμως είναι ακριβοί και πάλι υστερούν απέναντι στην ταχύτητα μιας εξειδικευμένης λύσης hardware. Τα ASSP από την άλλη είναι γρήγορα αλλά είναι και αυτά ακριβά και δεν είναι καθόλου ευέλικτα, απαιτώντας επίσης μεγάλο χρόνο για ανάπτυξη. Τα τελευταία χρόνια όμως η εξέλιξη της τεχνολογίας των FPGA - στα οποία πλέον έχουν ενσωματωθεί ικανοποιητικές εσωτερικές μνήμες και hardware πολλαπλασιαστές - τα κάνει πολύ ελκυστικές λύσεις για απαιτητικές εφαρμογές επεξεργασίας εικόνας και video. Επίσης η παρουσία soft processors (επεξεργαστών που μεταφράζονται και υλοποιούνται στο υλικό του FPGA) και εργαλείων που επιτρέπουν την περιγραφή ενός ολόκληρου συστήματος (processor, memory controller, comm ports, IP cores) μέσω γραφικού περιβάλλοντος μας επιτρέπει να αναπτύξουμε γρήγορα ολόκληρα συστήματα με επεξεργαστή και εξειδικευμένα IP cores που επικοινωνούν απευθείας με τον memory controller και λοιπά περιφερειακά και εκτελούν τις απαιτητικές εργασίες χωρίς την ανάμειξη του επεξεργαστή. 1.2 Αλγόριθμοι ανίχνευσης ακμών Σε πολλές εφαρμογές χρειάζεται η επεξεργασία μιας εικόνας με σκοπό να γίνει κάποια αναγνώριση ή απαρίθμηση αντικειμένων ή κάποια μέτρηση μεγεθών. Όταν οι συνθήκες φωτισμού κατά τη λήψη της όμως δεν μπορούν να ελεγχθούν πλήρως, αυτό δυσκολεύει κατά πολύ τους αλγόριθμους επεξεργασίας. Έτσι πολλές φορές είναι πιο χρήσιμο να έχουμε την πληροφορία για τις ακμές, τα «όρια» των αντικειμένων που περιέχει η εικόνα παρά την ίδια τη τιμή της φωτεινότητάς τους. Έτσι αναπτύχθηκε μια κατηγορία αλγόριθμων επεξεργασίας εικόνας που συνήθως τροφοδοτεί τους υπόλοιπους αλγόριθμους μιας εφαρμογής, οι αλγόριθμοι ανίχνευσης ακμών. Η πλήρης διαδικασία ανίχνευσης ακμών μπορεί να χρειαστεί μέχρι τρία στάδια, ανάλογα με τις απαιτήσεις της κάθε εφαρμογής: 1. Εξομάλυνση εικόνας 2. Διαδικασία διαφόρισης

7 1 ΕΙΣΑΓΩΓΙΚΑ 2 Σχήμα 1: Μέθοδοι συνέλιξης προτύπου 3. Εφαρμογή threshold Το κρίσιμο (και πολλές φορές το μόνο απαραίτητο) μέρος της διαδικασίας ανίχνευσης είναι η διαφόριση. Ουσιαστικά μια ακμή σε μια εικόνα είναι μια έντονη μεταβολή στην τιμή γειτονικών pixels, δηλαδή μια μεγάλη τιμή στην κλίση. Για να πάρουμε την κλίση υπάρχουν διάφορες μέθοδοι, καθεμιά από τις οποίες προσφέρεται για διάφορες εφαρμογές. Θα ασχοληθούμε με μια κατηγορία μεθόδων, αυτή της συνέλιξης προτύπου. Σε αυτές τις τεχνικές το αποτέλεσμα παίρνεται εφαρμόζοντας έναν πίνακα - πρότυπο σε κάθε pixel της εικόνας εισόδου και τη γειτονιά του. Τα στοιχεία του πίνακα (ο οποίος είναι συνήθως τετράγωνος και το μέγεθός του περιττό) πολλαπλασιάζονται με τις τιμές της γειτονιάς του pixel εισόδου και το άθροισμά τους μας δίνει ένα pixel εξόδου. Η διαδικασία φαίνεται καλύτερα στο Σχήμα 1. Ένας πολύ απλός τελεστής για να πάρουμε την κλίση μιας εικόνας είναι ο Prewitt [1]. Στη βασική του μορφή αποτελείται από 2 πίνακες 3x3, οι οποίοι μας δίνουν το ρυθμό μεταβολής της φωτεινότητας κατά μήκος του κάθε άξονα. Επίσης καθώς λαμβάνουν υπ όψιν την πληροφορία τριών γραμμών, ενσωματώνεται και μία υποτυπώδης εξομάλυνση. Παρακάτω φαίνονται οι εξισώσεις του τελεστή. M x = M = , M y = M 2 x + M 2 y, θ = arctan ( My Ένας ακόμα τελεστής είναι και ο Sobel [1, 2, 3]. ο οποίος αποτελείται και αυτός από 2 πίνακες (έναν για κάθε κατεύθυνση). Ο Sobel είναι βελτίωση του τελεστή Prewitt και είναι πολύ δημοφιλής, καθώς είναι απλός και δίνει αρκετά καλύτερα αποτελέσματα από τον Prewitt. Στην μορφή 3x3 οι εξισώσεις του είναι οι παρα- M x )

8 1 ΕΙΣΑΓΩΓΙΚΑ 3 Σχήμα 2: Μια εικόνα μιας ατμομηχανής Σχήμα 3: Μια εικόνα μιας ατμομηχανής μετά την εφαρμογή του τελεστή Sobel κάτω: G x = G = , G y = G 2 x + G 2 y G x + G y, θ = arctan ( Gy Το κύριο πλεονέκτημα του τελεστή Sobel είναι ότι έχει πολλαπλασιασμούς μόνο με το 2, οπότε η υλοποίησή του μπορεί να γίνει ταχύτατη (μόνο προσθέσεις και αφαιρέσεις). Επίσης έχει φανεί ότι η χονδροειδής προσέγγιση της τετραγωνικής ρίζας με το άθροισμα των απόλυτων τιμών δίνει πολύ καλά αποτελέσματα στην συγκεκριμένη περίπτωση [2]. Ένα παράδειγμα εφαρμογής του τελεστή Sobel φαίνεται στα Σχήματα 2 και 3. G x )

9 1 ΕΙΣΑΓΩΓΙΚΑ 4 Αυτοί οι τελεστές μπορούν να παραχθούν και σε μεγαλύτερο μέγεθος, δίνοντας καλύτερα αποτελέσματα κυρίως στην ανοσία από το θόρυβο. Οι πίνακες αυτοί όμως είναι πιο πολύπλοκοι, για παράδειγμα παρακάτω φαίνονται οι πίνακες που απαρτίζουν τον 5x5 sobel. S x = S =, S y = S 2 x + S 2 y Όταν η εικόνα είναι μεγάλη και μια ακμή μπορεί να διανύει αρκετά pixels (η απλά η εικόνα είναι θολή) οπότε και η διαφορά της τιμής γειτονικών pixels είναι μικρή, η προσέγγιση πρώτης τάξης αποτυγχάνει να ανιχνεύσει σωστά τις ακμές. Εκεί μπορούν να χρησιμοποιηθούν τεχνικές δεύτερης τάξης συνήθως (σπάνια μεγαλύτερης) όπου από την εικόνα υπολογίζονται με πίνακες οι δεύτεροι παράγωγοι της εικόνας (G xx, G yy και G xy ) και από αυτές κατόπιν υπολογίζεται η κλίση. Ανάλογα με το είδος της εφαρμογής, εφαρμόζεται πριν από τη διαφόριση στάδιο εξομάλυνσης για ελαχιστοποίηση της επίδρασης του θορύβου στο αποτέλεσμα της διαφόρισης (έντονος θόρυβος μπορεί να προκαλέσει ανίχνευση ακμών που δεν υπάρχουν). Στην ανίχνευση ακμών Canny για την εξομάλυνση χρησιμοποιείται φίλτρο Gaussian. Αυτό το βήμα γενικά είναι απαιτητικό υπολογιστικά, οπότε σε εφαρμογές με «καθαρή» εικόνα εισόδου και μεγάλες απαιτήσεις σε ταχύτητα μπορεί να αποφευχθεί. Τέλος όταν μας ενδιαφέρουν μόνο οι πολύ έντονες ακμές της εικόνας, μπορούμε να εφαρμόσουμε ένα threshold στο αποτέλεσμα της διαφόρισης, κρατώντας μόνο τις μεγάλες τιμές της κλίσης - οι οποίες αντιστοιχούν σε πιο έντονες ακμές. Επίσης μπορεί να γίνει χρήση υστέρησης στο threshold ώστε αν εντοπιστεί ένα pixel ακμής τα γειτονικά του να είναι πιο εύκολο να αναγνωριστούν ως pixels (της ίδιας) ακμής. Έτσι μπορούμε να ανιχνεύσουμε πιο αδύνατα τμήματα κάποιων ακμών. Γενικά η δυσκολία με την εφαρμογή του threshold είναι ότι δεν μπορούμε να ορίσουμε μια τιμή για ευρεία γκάμα εικόνων χωρίς να έχουμε προβλήματα (να χάνουμε ακμές ή να αναγνωρίζουμε ψευδές ακμές). Έτσι για να πάρουμε καλά αποτελέσματα απαιτείται καλή γνώση της εφαρμογής και πληθώρα δοκιμαστικών εικόνων για λεπτομερειακή ρύθμιση της τιμής του threshold.

10 1 ΕΙΣΑΓΩΓΙΚΑ 5 Σχήμα 4: Το γραφικό περιβάλλον περιγραφής συστήματος XPS 1.3 Το EDK της Xilinx Το EDK [4] της Xilinx είναι ένα περιβάλλον το οποίο επιτρέπει την ανάπτυξη ολοκληρωμένων συστημάτων που χρησιμοποιούν FPGA της Xilinx, σε επίπεδο hardware και software. Σε επίπεδο hardware ο χρήστης μπορεί να προσθέσει στο σύστημα soft processors, μνήμες επί του FPGA (BRAM), ελεγκτή μνήμης DDR / DDR2-3, διάφορα περιφερειακά επικοινωνίας (UART, USB, Ethernet κ.α.), εξειδικευμένα IP cores και διαύλους συστήματος χρησιμοποιώντας γραφικό περιβάλλον (Σχήμα 4). Έτσι οι διασυνδέσεις και οι δίαυλοι μεταξύ των περιφερειακών γίνονται πολύ γρήγορα σε αντίθεση με παραδοσιακές μεθόδους HDL ή schematic. Το EDK διαθέτει λογισμικό SDK βασισμένο στο open source πακέτο Eclipse και τον compiler gcc για την ανάπτυξη του λογισμικού του συστήματος, με έτοιμους drivers σε γλώσσα C για πολλά από τα έτοιμα περιφερειακά που διαθέτονται, καθώς και για τον έλεγχο των διαφόρων διαύλων επικοινωνίας του επεξεργαστή. Σημαντικό είναι επίσης να πούμε ότι οι διευθύνσεις των περιφερειακών στο δίαυλο του επεξεργαστή (PLB) συγχρονίζονται αυτόματα με το XPS, δηλαδή προσθέτοντας, αφαιρώντας και μεταβάλλοντας περιφερειακά στο επίπεδο hardware ρυθμίζονται αυτόματα και παράμετροι / διευθύνσεις στις οποίες θα τα προσπελάσει ο επεξεργαστής Microblaze.

11 1 ΕΙΣΑΓΩΓΙΚΑ 6 Ο στόχος μας είναι να υλοποιήσουμε ένα IP core το οποίο θα μπορεί να ενσωματωθεί σε ένα σύστημα στο περιβάλλον EDK με γραφικό τρόπο, όπως και τα έτοιμα IP cores που παρέχονται από τη Xilinx. Η χρήση του από το software θα γίνεται με μία μόνο εντολή που θα παρέχει πληροφορίες για τη διεύθυνση μνήμης, το μέγεθος της εικόνας εισόδου και τη διεύθυνση εγγραφής του αποτελέσματος της επεξεργασίας, μετά από την έκδοση της οποίας ο επεξεργαστής θα μπορεί να είναι ελεύθερος να κάνει άλλες λειτουργίες.

12 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 7 2 Σχεδιασμός του hardware Για την επίτευξη καλών επιδόσεων σχεδιάσαμε μια αρχιτεκτονική που κάνει χρήση του παραλληλισμού ο οποίος είναι διαθέσιμος στα FPGA και διάφορες άλλες δυνατότητες τους όπως τοπικές μνήμες Block RAM πολύ υψηλών επιδόσεων. Συγκεκριμένα οι υπολογισμοί γίνονται για 4 pixels ταυτόχρονα, αυξάνοντας το throughput και ταυτόχρονα ελαττώνοντας τις προσβάσεις στη μνήμη. Στο Σχήμα 5 φαίνεται ότι για τον υπολογισμό ενός pixel χρειάζεται να διαβάσουμε 8 γειτονικά pixels, ενώ για 4 γειτονικά pixels θα χρειαστούμε μόνο 14. Αυτό αντιστοιχεί σε πάνω από 50% μείωση στις προσβάσεις στη μνήμη, μαζί με το x4 στο throughput που παίρνουμε υπολογίζοντάς τα παράλληλα. Σχήμα 5: Η παράλληλη επεξεργασία 4 pixels ελαττώνει τις αναγνώσεις από τη μνήμη Καθώς για κάθε pixel χρειάζεται πληροφορία από τα pixels της προηγούμενης και της επόμενης γραμμής, αποφασίσαμε να χρησιμοποιήσουμε μια τεχνική caching 3 γραμμών. Έτσι κάθε στιγμή που διαβάζονται τα περιεχόμενα μιας γραμμής από την κυρίως μνήμη του συστήματος εγγράφονται σε μια γραμμή cache, ενώ παράλληλα στις 2 υπόλοιπες cache βρίσκονται αποθηκευμένα τα δεδομένα των δυο προηγούμενων γραμμών. Τέλος για την πρόσβαση στη μνήμη κάναμε χρήση μιας εξειδικευμένης θύρας του ελεγκτή μνήμης της Xilinx η οποία προσφέρεται ειδικά για εφαρμογές επεξεργασίας εικόνας και video. Η θύρα αυτή κάνει δυνατή την πολύ γρήγορη ανάγνωση και εγγραφή της μνήμης σε «ριπές» (burst read / write). Οι ριπές αυτές μπορούν να έχουν μέγεθος από μερικά pixels μέχρι και ολόκληρη την εικόνα (μέχρι 16MB) με μία μόνο εντολή προς τον ελεγκτή μνήμης. Ένα χονδρικό block διάγραμμα των στοιχείων της αρχιτεκτονικής μας φαίνεται στο Σχήμα 6. Τα χαρακτηριστικά της επικοινωνίας με τον επεξεργαστή και τη μνήμη και τις λεπτομέρειες της αρχιτεκτονικής τις παρουσιάζουμε παρακάτω.

13 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 8 Σχήμα 6: Χονδρικό block διάγραμμα 2.1 Θύρες επικοινωνίας Η θύρα FSB Οι επεξεργαστές Microblaze [5] για να επικοινωνούν με ειδικά σχεδιασμένα περιφερειακά με μεγάλη ταχύτητα διαθέτουν μέχρι 16 θύρες FSB (Fast Simplex Link). Η κάθε τέτοια θύρα είναι μονής κατεύθυνσης (ο επεξεργαστής ή το περιφερειακό είναι Master ή Slave του καναλιού και ο Master στέλνει δεδομένα) και η επικοινωνία γίνεται με μία υλοποίηση FIFO. Το FSL (όταν είναι συνδεδεμένο με τον Microblaze) έχει πλάτος λέξης 32 bit και είναι ουσιαστικά μια απευθείας σύνδεση με το pipeline του επεξεργαστή προσφέροντας γρήγορη και άμεση (low latency) επικοινωνία. Οι ιδιότητες του αυτές και το γεγονός ότι η μετάδοση των δεδομένων γίνεται μέσω FIFO (το μέγεθος μπορεί να καθοριστεί από 1word έως 8k) το καθιστούν ιδανικό για τη σύνδεση coprocessors υψηλών επιδόσεων στον επεξεργαστή Οι θύρες VFBC Ο ελεγκτής μνήμης MPMC [6] προσφέρει μέχρι 8 ports επικοινωνίας με τη μνήμη, καθεμιά από τις οποίες μπορεί να χρησιμοποιεί διαφορετικό interface και πρωτόκολλο επικοινωνίας (η ίδια τα ονομάζει PIMs - Personality Interface Modules) ανάλογα με τις ανάγκες του κάθε περιφερειακού. Ένα από αυτά τα PIMs είναι το VFBC (Video Frame Buffer Control), το οποίο είναι σχεδιασμένο για τις ανάγκες περιφερειακών επεξεργασίας εικόνας / video.

14 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 9 Σχήμα 7: Λέξεις ελέγχου για μεταφορές με το VFBC Σχήμα 8: Διαδικασία ανάγνωσης στο VFBC Η επικοινωνία με αυτό γίνεται μέσω τριών FIFO (εντολών ελέγχου, εγγραφής δεδομένων και ανάγνωσης δεδομένων) ούτως ώστε η λειτουργία του να είναι ασύγχρονη και πρακτικά να μπορεί το περιφερειακό μας να χρονιστεί σε διαφορετική συχνότητα ρολογιού από το υπόλοιπο σύστημα. Η έναρξη κάθε συνδιαλλαγής (transaction) με τη μνήμη γίνεται γράφοντας στη FIFO ελέγχου 4 words των 32 bit που καθορίζουν τις παραμέτρους της (διεύθυνση έναρξης, μήκος γραμμής, απόσταση γραμμών στη μνήμη, αριθμό γραμμών και εγγραφή / ανάγνωση). Πιο αναλυτικά οι λέξεις ελέγχου φαίνονται στο Σχήμα 7. Αν η λειτουργία είναι ανάγνωσης, μετά από κάποιους κύκλους στη FIFO ανάγνωσης εμφανίζονται δεδομένα τα οποία μπορούμε να διαβάσουμε απευθείας με ταχύτητα που εξαρτάται από την ταχύτητα της μνήμης και το μέγεθος της μνήμης FIFO. Αν η ταχύτητα ανάγνωσης μας υπερβαίνει την ταχύτητα της μνήμης η FIFO θα αδειάσει και θα πρέπει να περιμένουμε να έρθουν τα επόμενα δεδομένα για να τη γεμίσουν. Σήματα για ένα παράδειγμα ανάγνωσης φαίνονται στο Σχήμα 8. Στη λειτουργία εγγραφής αντίστοιχα μπορούμε να αρχίσουμε να γράφουμε δεδομένα στη FIFO εγγραφής. Αν η ταχύτητά μας υπερβαίνει αυτή της μνήμης η FIFO προφανώς θα γεμίσει και πρέπει να περιμένουμε να εγγραφούν τα δεδομένα που υπάρχουν μέχρι να αρχίσουμε να ξαναγράφουμε. Σήματα για ένα παράδειγμα εγγραφής φαίνονται στο Σχήμα 9.

15 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 10 Σχήμα 9: Διαδικασία εγγραφής στο VFBC 2.2 Block απευθείας επεξεργασίας δεδομένων Το core μας είναι χωρισμένο σε δυο μέρη: ένα που επικοινωνεί με τους διαύλους μνήμης και επεξεργαστή και ένα που κάνει την κυρίως επεξεργασία. Αυτό κάθε 2 κύκλους ρολογιού παίρνει μια τετράδα pixels εισόδου και αφού αρχίσει να λαμβάνει τη δεύτερη γραμμή αρχίζει να δίνει τα pixels του αποτελέσματος σε τετράδες, πάλι κάθε 2 κύκλους ρολογιού. Οι παράμετροι που χρειάζεται για τη λειτουργία του είναι το πλάτος γραμμής (μέχρι 2048 pixels) και ο αριθμός των γραμμών (επίσης μέχρι 2048 pixels). Τα κύρια κομμάτια που το απαρτίζουν είναι το επεξεργαστικό κομμάτι που παράγει 4 pixels εξόδου από 4 pixels εισόδου και τη γειτονιά τους, το κομμάτι που υλοποιεί τις cache 4 θυρών και το top-level block που συντονίζει τη διαδικασία και παράγει τα σήματα ελέγχου Τμήμα επεξεργασίας - πράξεων Στο Πλαίσιο Κώδικα 3, σελ. 21, φαίνεται το βασικό block επεξεργασίας, στο οποίο γίνονται οι υπολογισμοί για ένα pixel εξόδου. Χρησιμοποιούμε pipelining αφού το latency (4 κύκλοι) είναι αμελητέο για μια εικόνα των χιλιάδων pixels ενώ η συχνότητα λειτουργίας επωφελείται σημαντικά. Εσωτερικά χρησιμοποιούμε προσημασμένους αριθμούς 11bit ούτως ώστε να μη γίνει overflow. Η είσοδος είναι μη προσημασμένοι αριθμοί 8 bit. Έχουμε έναν πολλαπλασιασμό με το 2 οπότε χρειαζόμαστε 9 bit, και αν λάβουμε υπ όψιν τις προσθέσεις και τις αφαιρέσεις θέλουμε ένα δέκατο bit για τυχόν overflow και ένα ενδέκατο για το sign extension. Η έξοδος ωστόσο είναι 8 bit, οπότε χρειάζεται να κάνουμε truncation, στο οποίο χάνουμε 2 bit ακρίβειας. Στο Πλαίσιο Κώδικα 4, σελ. 22, φαίνεται το ολοκληρωμένο block επεξεργασίας για 4 pixels, το οποίο αποτελείται από 4 μονάδες επεξεργασίας 1 bit συνδεδεμένες

16 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 11 Σχήμα 10: Για κάθε τετράδα pixels που υπολογίζουμε χρειαζόμαστε μέχρι 3 words από την κάθε cache παράλληλα Τμήμα cache Στο πλαίσιο κώδικα 5, σελ. 26, φαίνεται η υλοποίηση της εξειδικευμένης cache που χρησιμοποιούμε. Τα δεδομένα αποθηκεύονται σε λέξεις των 32 bit (4 pixels). Η cache αυτή πρέπει να έχει δυνατότητα σε κάθε κύκλο λειτουργίας να αποθηκεύει 4 pixels και ταυτόχρονα να διαβάζει 6, όπως φαίνεται στο Σχήμα 5. Λόγω της στοίχισης των pixels σε λέξεις των 4, αυτό θα πει ότι πρέπει να μπορούμε να διαβάσουμε μέχρι 3 λέξεις σε έναν κύκλο λειτουργίας. Αυτό φαίνεται καλύτερα στο Σχήμα 10. Τα FPGA μας παρέχουν ορισμένους τύπους μνήμης που μπορούμε να χρησιμοποιήσουμε. Ο πιο εξελιγμένος από αυτές είναι ο true dual-port BRAM. Σε μία τέτοια μνήμη μπορούμε να έχουμε προσπέλαση (ανάγνωσης ή εγγραφής) σε δυο διαφορετικές διευθύνσεις της μνήμης ταυτόχρονα, στον ίδιο κύκλο ρολογιού. Η ταυτόχρονη εγγραφή μιας λέξης και η ανάγνωση τριών με χρήση μνημών true dual-port BRAM μπορεί να γίνει με 2 τρόπους ανάλογα με τη διαθεσιμότητά τους. Ο ένας τρόπος είναι να χρησιμοποιήσουμε 3 BRAM ανά γραμμή εικόνας, οπότε σε κάθε κύκλο (ταυτόχρονα) να διαβάζουμε από διαφορετική διεύθυνση από την καθεμία και να γράφουμε τη λέξη εισόδου στην ίδια διεύθυνση και στις τρεις μνήμες (για να παραμένουν τα δεδομένα τους συγχρονισμένα). Ο άλλος τρόπος είναι να χρησιμοποιήσουμε μόνο μία BRAM ανά γραμμή, χωρίζοντας όμως τον κύκλο λειτουργίας σε δυο κύκλους ρολογιού. Στον πρώτο κύκλο θα γράφεται η λέξη εισόδου και θα διαβάζεται μια λέξη εξόδου, και στον δεύτερο κύκλο θα διαβάζονται άλλες 2 λέξεις εξόδου και θα εξάγεται το αποτέλεσμα. Εμείς αποφασίσαμε να χρησιμοποιήσουμε τον δεύτερο τρόπο. Αυτός αν και έχει θεωρητικά το μισό throughput του άλλου και είναι πιο δύσκολος στην υλοποί-

17 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 12 Σχήμα 11: Μαύρα pixels για γειτονικά των ακριανών ηση, επιτρέπει στο core να χωρέσει και σε μικρότερα και πιο οικονομικά FPGA όπως αυτά της σειράς Spartan 3E. Από την άλλη όμως και στα πιο μεγάλα FPGA που θα ταίριαζε καλύτερα ο πρώτος τρόπος (δεν θα περιοριζόμασταν από τον αριθμό διαθέσιμων BRAM) το throughput πιθανότατα θα περιοριζόταν από το bandwidth με τη μνήμη (στα 200MHz θα χρειαζόμασταν 800MB/s για ανάγνωση και άλλα 800MB/s για εγγραφή). Έτσι χάριν ευελιξίας διαλέξαμε να χρησιμοποιήσουμε αυτή τη μέθοδο Τμήμα ελέγχου Στο Πλαίσιο Κώδικα 6, σελ. 30, φαίνεται το τμήμα που ελέγχει τη διαδικασία υπολογισμού και caching και παράγει τα σήματα ελέγχου και επικοινωνίας με το υπόλοιπο. Η ροή των δεδομένων έχει ως εξής: Τα δεδομένα διαβάζονται από τη μνήμη στις 3 cache, και από τις cache πηγαίνουν στο block επεξεργασίας για να παραχθεί η έξοδος. Επίσης για τα pixels που βρίσκονται στις ακμές και τις γωνίες της εικόνας εισόδου - π.χ. για το 1ο pixel της εικόνας που δεν έχει γειτονικά pixels πάνω και αριστερά του - χρησιμοποιούμε μαύρο για τα pixels που δεν υπάρχουν (Σχήμα 11). Η διαδικασία της επεξεργασίας μπορεί να εξηγηθεί καλύτερα με την περιγραφή της για τις 4-5 πρώτες γραμμές. Οι γραμμές της εικόνας εισόδου θα συμβολιστούν με I1, I2, I3 κ.ο.κ., οι γραμμές cache με C1, C2, C3, οι γραμμές εξόδου με O1, O2, O3 και η εικονική μαύρη γραμμή (πριν την πρώτη γραμμή εισόδου) με _. Αρχικά η I1 γράφεται στην C1. Κατόπιν η I2 αρχίζει να γράφεται στην C2 και παράλληλα (ξεκινάει μετά την πρώτη εγγραφή) υπολογίζεται η O1 (με χρήση των _-C1-C2). Ύστερα η Ι3 γράφεται στην C3 και υπολογίζεται η O2 (από τις C1-C2- C3). Η Ι4 γράφεται στην C1 (τα παλιά της περιεχόμενα δεν χρειάζονται πλέον) και ταυτόχρονα υπολογίζεται η O3 (από τις C2-C3-C1). Στη συνέχεια η Ι5 γράφεται στην C2 και υπολογίζεται η Ο4 (από τις C3-C1-C2). Η διαδικασία συνεχίζεται μέχρι να φτάσουμε στην τελευταία γραμμή.

18 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE Top-level block Το top-level block του περιφερειακού αποτελείται από 2 state machines, μία για την επικοινωνία με το δίαυλο FSB και μία που είναι υπεύθυνη για την ανάγνωση και εγγραφή από τη μνήμη και την επεξεργασία. Να σημειώσουμε πως οι 2 state machines θα μπορούσαν να συγχωνευθούν εύκολα, αλλά αυτό δεν έγινε για να αφήσουμε τη δυνατότητα στο μέρος της επεξεργασίας να δουλεύει με διαφορετικό (πιο γρήγορο) χρονισμό από το υπόλοιπο σύστημα Επικοινωνία με το FSB Από τον επεξεργαστή περιμένουμε 5 παραμέτρους για τη λειτουργία του περιφερειακού. Διεύθυνση πηγαίας εικόνας Διεύθυνση αποθήκευσης αποτελέσματος Πλάτος γραμμής Αριθμός γραμμών Συνολικός αριθμός pixels Τον αριθμό pixels τον παίρνουμε από τον επεξεργαστή καθώς ένας πολλαπλασιασμός σε ολόκληρη την εικόνα δεν επηρεάζει την απόδοση, οπότε το να δεσμεύαμε hardware πολλαπλασιαστή θα ήταν ουσιαστικά σπατάλη χώρου. Αφού αναγνωστούν οι 5 αυτές τιμές από το δίαυλο, ενεργοποιούμε ένα σήμα start που ενεργοποιεί τη state machine επεξεργασίας, η οποία όταν τελειώσει στέλνει με τη σειρά της ένα σήμα finished. Μόλις το λάβουμε, δίνουμε ένα αποτέλεσμα στον επεξεργαστή και επιστρέφουμε στο idle state (κατάσταση αναμονής). Το αποτέλεσμα που στέλνουμε στον επεξεργαστή είναι δεδομένο και δεν περιέχει χρήσιμες πληροφορίες εκτός από το ότι έληξε η λειτουργία, αφού δεν ενσωματώσαμε κάποιο υλικό ελέγχου σφαλμάτων στο περιφερειακό μας Ανάγνωση - εγγραφή μνήμης και επεξεργασία Αυτό είναι το κύριο μέρος του top level module του περιφερειακού μας, καθώς εδώ γίνεται όλη η επικοινωνία με το δίαυλο VFBC της μνήμης και ο συντονισμός της επεξεργασίας. Αρχικά στέλνονται οι εντολές στα VFBC ανάγνωσης και εγγραφής. Μετά περιμένουμε να εμφανιστούν δεδομένα στη FIFO ανάγνωσης, αυτό διαρκεί μερικές δεκάδες κύκλους ρολογιού. Κατόπιν περνάμε τα δεδομένα στο block επεξεργασίας

19 2 ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ HARDWARE 14 και φροντίζουμε η ανάγνωση να γίνεται κάθε δυο κύκλους ρολογιού αφού αυτός είναι ο ρυθμός επεξεργασίας των δεδομένων. Σε κάθε ανάγνωση ελέγχουμε αν υπάρχουν αρκετά δεδομένα στη FIFO ανάγνωσης, καθώς αν διαβάζουμε πιο γρήγορα από τις δυνατότητες της μνήμης κάποια στιγμή θα αδειάσει. Αν συμβεί αυτό «παγώνουμε» το block επεξεργασίας με ένα σήμα και περιμένουμε να ξαναεμφανιστούν δεδομένα για να συνεχίσουμε (εκτός και αν δεν εμφανιστούν σε 255 κύκλους, οπότε στέλνεται κατευθείαν το σήμα finished). Επίσης σε κάθε επιτυχημένη ανάγνωση αυξάνουμε ένα μετρητή, και όταν αυτός γίνει ίσος με τον αριθμό των pixels της εικόνας δια 4 (αφού κάθε ανάγνωση αντιστοιχεί σε λέξη 4 pixels) η διαδικασία ανάγνωσης σταματάει. Εκεί περιμένουμε να πάρουμε το σήμα από το block επεξεργασίας ότι η διαδικασία τελείωσε και ότι έχει παραχθεί το τελευταίο pixel, στέλνουμε στην άλλη state machine το σήμα finished και επιστρέφουμε στην κατάσταση idle.

20 3 SOFTWARE ΔΟΚΙΜΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ 15 3 Software δοκιμής του αλγόριθμου Για την επιβεβαίωση της ορθής λειτουργίας του περιφερειακού, αναπτύξαμε μια μικρή εφαρμογή. Αυτή αποτελείται από ένα πρόγραμμα που τρέχει στον Microblaze και ένα που τρέχει σε PC. Το αναπτυξιακό επικοινωνεί με ένα PC για να λάβει μια εικόνα μέσω σειριακής θύρας (που διαβάζεται από αρχείο jpeg), την αποθηκεύει στην μνήμη DDR, χρησιμοποιεί το περιφερειακό στην εικόνα αυτή και τέλος στέλνει το αποτέλεσμα της επεξεργασίας πίσω στο PC όπου και αποθηκεύει την εικόνα του αποτελέσματος. 3.1 Πρόγραμμα του microblaze Το απλό αυτό πρόγραμμα αρχικά λαμβάνει τις παραμέτρους της εικόνας από τη σειριακή. Εδώ μπορούμε να σημειώσουμε τον εύκολο τρόπο χρήσης της σειριακής, κάνοντας χρήση των drivers που μας παρέχει το EDK για το περιφερειακό επικοινωνίας. Κατόπιν λαμβάνοντας τα pixels της εικόνας τα γράφει στη μνήμη DDR. Πάλι μπορούμε να τονίσουμε το ρόλο του EDK στην ευκολία ανάπτυξης του προγράμματος, καθώς η διεύθυνση της DDR στο χώρο διευθύνσεων του επεξεργαστή καθορίζεται στο στάδιο όπου ορίζουμε το hardware, και εδώ τη χρησιμοποιούμε απευθείας. Κατόπιν δίνουμε δίνει τις παραμέτρους της εικόνας στο περιφερειακό χρησιμοποιώντας την εντολή putfsl που γράφει στο δίαυλο FSL, και με την εντολή getfsl περιμένουμε αυτό να τελειώσει τη λειτουργία του. Τέλος το πρόγραμμα επιστρέφει μέσω της σειριακής τα pixels της εικόνας - αποτελέσματος. Ο κώδικας του προγράμματος φαίνεται στο Πλαίσιο Κώδικα 1 στη σελ. 15. Πλαίσιο Κώδικα 1: Πρόγραμμα microblaze που κάνει χρήση του περιφερειακού 1 / / Located i n : m i c r o b l a z e _ 0 / i n c l u d e / x p a r a m e t e r s. h # i n c l u d e x p a r a m e t e r s. h # i n c l u d e m b _ i n t e r f a c e. h # i n c l u d e s t d i o. h # i n c l u d e x u a r t l i t e _ l. h # i n c l u d e x u t i l. h / / ==================================================== i n t main ( void ) { 11 unsigned i n t p i x ; i n t i ;

21 3 SOFTWARE ΔΟΚΙΜΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ 16 while ( 1 ) { unsigned i n t dimx, dimy, dims ; dimx = 256* XUartLite_RecvByte ( XPAR_UARTLITE_0_BASEADDR) ; dimx += XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR) ; dimy = 256* XUartLite_RecvByte ( XPAR_UARTLITE_0_BASEADDR) ; 21 dimy += XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR) ; dims = dimx*dimy ; Xuint32 * p ; p = ( Xuint32 *)XPAR_DDR2_SDRAM_MPMC_BASEADDR; f o r ( i = 0 ; i < dims / 4 ; i ++) { p i x = XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR) ; p i x += XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR ) << 8 ; p i x += XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR ) << 1 6 ; p i x += XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR ) << 2 4 ; 31 *p = p i x ; p = p +1; } unsigned i n t s o b e l _ r e s = 0 ; p u t f s l (XPAR_DDR2_SDRAM_MPMC_BASEADDR, 0) ; p u t f s l (XPAR_DDR2_SDRAM_MPMC_BASEADDR, 0) ; p u t f s l ( dimx, 0) ; p u t f s l ( dims / 4, 0) ; p u t f s l ( dimy, 0) ; 41 g e t f s l ( s o b e l _ r e s, 0 ) ; p = ( Xuint32 *) (XPAR_DDR2_SDRAM_MPMC_BASEADDR) ; f o r ( i = 0 ; i < dims / 4 ; i ++) { p i x = *p ;

22 3 SOFTWARE ΔΟΚΙΜΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ } x i l _ p r i n t f ( %c, ( p i x&0x000000ff ) ) ; x i l _ p r i n t f ( %c, ( p i x&0x0000ff00 ) > >8) ; x i l _ p r i n t f ( %c, ( p i x&0x00ff0000 ) > >16) ; x i l _ p r i n t f ( %c, ( p i x&0xff ) > >24) ; p = p +1; } } return 0 ; 3.2 Πρόγραμμα του PC Για την επικοινωνία του PC με το αναπτυξιακό FPGA αναπτύξαμε ένα απλό πρόγραμμα σε python. Το πρόγραμμα αυτό μπορεί να εκτελεστεί χωρίς αλλαγές σε διάφορα λειτουργικά συστήματα (όπως windows, linux, macintosh, solaris κ.α.) αρκεί να υπάρχουν εγκατεστημένες η Python (>2.2) και η βιβλιοθήκη PIL (Python Imaging Library). Αρχικά το πρόγραμμα διαβάζει μια εικόνα και τα στοιχεία της από το σκληρό δίσκο (η εικόνα μπορεί να είναι πολλών συχνά χρησιμοποιούμενων τύπων που υποστηρίζονται από το PIL). Κατόπιν τη μετατρέπει σε grayscale και τη στέλνει μέσω σειριακής θύρας στο αναπτυξιακό. Στη συνέχεια περιμένει μέχρι να λάβει τον αριθμό των pixels που αντιστοιχεί στις διαστάσεις της εικόνας εισόδου και με αυτά δημιουργεί μια καινούρια εικόνα που αποθηκεύει σε άλλο αρχείο στο δίσκο. Πρέπει να τονίσουμε ότι το πρόγραμμα αυτό έγινε για να δοκιμάσουμε τη λειτουργία του περιφερειακού και ως εκ τούτου μερικές παράμετροι (όπως το όνομα των αρχείων in/out και η σειριακή θύρα) είναι ενσωματωμένοι στον κώδικα και δε δίνονται σε μενού από τον χρήστη. Ο κώδικας του προγράμματος φαίνεται στο Πλαίσιο Κώδικα 2 στη σελ. 17. Πλαίσιο Κώδικα 2: Πρόγραμμα python για επικοινωνία με το αναπτυξιακό FPGA #! / u s r / b i n / p y t h o n # * c o d i n g : u t f 8 * 4 import s e r i a l import s y s import s e l e c t import os import t t y

23 3 SOFTWARE ΔΟΚΙΜΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ 18 import t e r m i o s import s t r i n g import b i n a s c i i from PIL import Image 14 def i s D a t a ( ) : return s e l e c t. s e l e c t ( [ s y s. s t d i n ], [ ], [ ], 0) == ( [ s y s. s t d i n ], [ ], [ ] ) def main ( ) : o l d _ s e t t i n g s = t e r m i o s. t c g e t a t t r ( s y s. s t d i n ) t r y : t t y. s e t c b r e a k ( s y s. s t d i n. f i l e n o ( ) ) s e r = s e r i a l. S e r i a l ( 24 p o r t = / dev / ttyusb0, b a u d r a t e =115200, t i m e o u t =2) s e r. open ( ) s e r. isopen ( ) while 1 : o u t = i f s e r. i n W a i t i n g ( ) > 0 : 34 o u t = s e r. r e a d ( 1 ) s y s. s t d o u t. w r i t e ( o u t ) i f i s D a t a ( ) : c = s y s. s t d i n. r e a d ( 1 ) i f c == q : break i f c == s : im = Image. open ( i n p u t. j p g ) im = im. c o n v e r t ( L ) 44 i f os. p a t h. e x i s t s ( o u t p u t. bmp ) : os. remove ( o u t p u t. bmp ) s e r. w r i t e ( c h r ( im. s i z e [ 0 ] / ) ) s e r. w r i t e ( c h r ( im. s i z e [0]%256) )

24 3 SOFTWARE ΔΟΚΙΜΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ 19 s e r. w r i t e ( c h r ( im. s i z e [ 1 ] / ) ) s e r. w r i t e ( c h r ( im. s i z e [1]%256) ) s y s. s t d i n. r e a d ( 1 ) i =0 f o r p i x e l in l i s t ( im. g e t d a t a ( ) ) : s e r. w r i t e ( c h r ( p i x e l ) ) 54 i +=1 p r i n t P i x e l s s e n t t o d e v i c e outim = Image. new ( im. mode, im. s i z e ) outx = 0 outy = 0 p i x e l s r e a d = 0 while p i x e l s r e a d < im. s i z e [ 0 ] * im. s i z e [ 1 ] : while s e r. i n W a i t i n g ( ) > 0 : p i x e l = s e r. r e a d ( 1 ) outim. p u t p i x e l ( ( outx, o uty ), ord ( p i x e l ) ) 64 outx = o utx + 1 i f ( outx > im. s i z e [ 0 ] 1) : outx = 0 outy = o uty + 1 p i x e l s r e a d = p i x e l s r e a d + 1 i f p i x e l s r e a d == im. s i z e [ 0 ] * im. s i z e [ 1 ] : break outim. s ave ( o u t p u t. bmp ) f i n a l l y : 74 s e r. c l o s e ( ) t e r m i o s. t c s e t a t t r ( s y s. s t d i n, o l d _ s e t t i n g s ) t e r m i o s. TCSADRAIN, main ( )

25 4 ΣΥΜΠΕΡΑΣΜΑΤΑ - ΠΙΘΑΝΕΣ ΒΕΛΤΙΩΣΕΙΣ 20 4 Συμπεράσματα - πιθανές βελτιώσεις 4.1 Πλεονεκτήματα της αρχιτεκτονικής μας - επιδόσεις Μπορούμε να συγκρίνουμε τις επιδόσεις του περιφερειακού μας με τις επιδόσεις που θα είχε ο microblaze αν εφάρμοζε απευθείας τον τελεστή sobel σε μία εικόνα. Ο επεξεργαστής για να τις πράξεις που απαιτεί ο υπολογισμός ενός pixel εξόδου θα έκανε περίπου 15 κύκλους. Για να διαβάσει τα pixels εισόδου θα έκανε 6 η 12 κύκλους (αν τα διαβάσει σαν λέξη 32 bit και ανάλογα με τη στοίχιση) και για να τα γράψει άλλους 2, άρα χονδρικά θα έκανε κάπου 26 κύκλους ανά pixel. Αυτό έχοντας υποθέσει ότι μια τυχαία πρόσβαση στη μνήμη DDR χρειάζεται δυο κύκλους ρολογιού ενώ στην πραγματικότητα είναι πολύ πιο αργή. Το περιφερειακό μας ολοκληρώνει τη διαδικασία για 4 pixels σε 2 κύκλους, άρα είναι περίπου 50 φορές γρηγορότερο (στην πραγματικότητα ο microblaze μόνος του είναι ακόμα πιο αργός λόγω της πρόσβασης στη μνήμη). Σε ένα Spartan3E XCS500E (το οποίο θεωρείται μικρό και οικονομικό FPGA) το περιφερειακό καταλαμβάνει το 25% του χώρου της συσκευής και μπορεί να δουλέψει σε συχνότητες έως 100MHz, δίνοντάς μας ένα ρυθμό επεξεργασίας στα 200MPixels/sec. Σε ένα μεγαλύτερο FPGA (Virtex5 LX110T) καταλαμβάνει μόλις 2% του διαθέσιμου χώρου και οι συχνότητα λειτουργίας φτάνει τα 225MHz, με ρυθμό επεξεργασίας στα 450MPixels/sec. 4.2 Πιθανές βελτιώσεις Η κύρια βελτίωση που μπορούμε να κάνουμε είναι να βελτιώσουμε την αξιοπιστία της επικοινωνίας με τη μνήμη και να στέλνουμε σήμα σφάλματος στον επεξεργαστή αν υπάρξει τελικά πρόβλημα στην εγγραφή ή στην ανάγνωση. Πρόβλημα μπορεί να προκύψει όταν π.χ. τη μνήμη χρησιμοποιούν έντονα και άλλα περιφερειακά ή ο επεξεργαστής και τους έχει δοθεί μεγαλύτερη προτεραιότητα, θα υπάρχει μεγάλη καθυστέρηση στην μεταφορά των δεδομένων (η FIFO ανάγνωσης θα παραμένει άδεια για μεγάλα διαστήματα και ανάλογα η FIFO εγγραφής θα μένει γεμάτη). Σε αυτή την περίπτωση μπορούμε να επιστρέψουμε ένα σήμα προειδοποίησης στον επεξεργαστή εν μέσω επεξεργασίας ώστε να ρυθμίσει τις ενέργειές του ή των άλλων περιφερειακών, ή και σήμα λάθους διακόπτοντας εντελώς την επεξεργασία για να τελειώσουν οι άλλες τυχόν απαιτητικές διεργασίες. Επίσης για εξαιρετικά απαιτητικές εφαρμογές θα μπορούσαμε να αυξήσουμε το δίαυλο με τη μνήμη στα 64 bit και να επεξεργαζόμαστε 8 pixels ταυτόχρονα. Για να έχουμε όφελος από αυτό όμως χρειάζεται να έχουμε εξαιρετικά γρήγορο interface με τη μνήμη καθώς το throughput θα ήταν σχεδόν διπλάσιο και θα περιοριζόμασταν από το bandwidth.

26 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 21 5 Παράρτημα κώδικα Πλαίσιο Κώδικα 3: Ο κώδικας επεξεργασίας ενός pixel l i b r a r y IEEE ; 2 use IEEE. STD_LOGIC_1164.ALL; use IEEE. STD_LOGIC_ARITH.ALL; u s e IEEE. STD_LOGIC_UNSIGNED. ALL; e n t i t y s o b e l _ 1 p i s Port ( pix11 : in STD_LOGIC_VECTOR (7 downto 0) ; pix12 : in STD_LOGIC_VECTOR (7 downto 0) ; pix13 : in STD_LOGIC_VECTOR (7 downto 0) ; pix21 : in STD_LOGIC_VECTOR (7 downto 0) ; pix23 : in STD_LOGIC_VECTOR (7 downto 0) ; 12 pix31 : in STD_LOGIC_VECTOR (7 downto 0) ; pix32 : in STD_LOGIC_VECTOR (7 downto 0) ; pix33 : in STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 2 : out STD_LOGIC_VECTOR (7 downto 0) ; r s t : in s t d _ l o g i c ; s t a l l : in s t d _ l o g i c ; c l k : in STD_LOGIC ) ; end s o b e l _ 1 p ; a r c h i t e c t u r e B e h a v i o r a l of s o b e l _ 1 p i s 22 s i g n a l outxabs, o u t y a b s : s i g n e d (10 downto 0) ; s i g n a l outxs, o u t y s : s i g n e d (10 downto 0) ; s i g n a l outxsp, o u t y s p : s i g n e d (10 downto 0) ; s i g n a l outxsn, o u t y s n : s i g n e d (10 downto 0) ; begin p r o c e s s ( clk, r s t ) v a r i a b l e p i x o u t _ t : s t d _ l o g i c _ v e c t o r (10 downto 0) ; begin i f ( r s t = 1 ) then 32 o u t x s p <= ( o t h e r s => 0 ) ; o u t x s n <= ( o t h e r s => 0 ) ; o u t y s p <= ( o t h e r s => 0 ) ; o u t y s n <= ( o t h e r s => 0 ) ;

27 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 22 o u t x s <= ( o t h e r s => 0 ) ; o u t y s <= ( o t h e r s => 0 ) ; outxabs <= ( o t h e r s => 0 ) ; outyabs <= ( o t h e r s => 0 ) ; p i x o u t 2 2 <= ( o t h e r s => 0 ) ; 42 e l s i f ( r i s i n g _ e d g e ( c l k ) ) then i f ( s t a l l = 0 ) then o u t x s p <= s i g n e d ( 000 & pix11 ) + s i g n e d ( 00 & pix21 & 0 ) + s i g n e d ( 000 & pix31 ) ; o u t x s n <= s i g n e d ( 000 & pix13 ) + s i g n e d ( 00 & pix23 & 0 ) + s i g n e d ( 000 & pix33 ) ; o u t y s p <= s i g n e d ( 000 & pix11 ) + s i g n e d ( 00 & pix12 & 0 ) + s i g n e d ( 000 & pix13 ) ; o u t y s n <= s i g n e d ( 000 & pix31 ) + s i g n e d ( 00 & pix32 & 0 ) + s i g n e d ( 000 & pix33 ) ; o u t x s <= o u t x s p o u t x s n ; o u t y s <= o u t y s p o u t y s n ; 52 o u t x a b s <= abs ( o u t x s ) ; o u t y a b s <= abs ( o u t y s ) ; p i x o u t _ t := s t d _ l o g i c _ v e c t o r ( o u t x a b s ) + s t d _ l o g i c _ v e c t o r ( o u t y a b s ) ; i f ( p i x o u t _ t ( 1 0 ) = 0 ) then p i x o u t 2 2 <= p i x o u t _ t (9 downto 2) ; p i x o u t 2 2 <= ( o t h e r s => 1 ) ; 62 end p r o c e s s ; end B e h a v i o r a l ; Πλαίσιο Κώδικα 4: Ο κώδικας επεξεργασίας μιας τετράδας pixels l i b r a r y IEEE ; use IEEE. STD_LOGIC_1164.ALL;

28 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 23 use IEEE. STD_LOGIC_ARITH.ALL; 4 u s e IEEE. STD_LOGIC_UNSIGNED. ALL; e n t i t y s o b e l _ 4 p i s Port ( pix11 : in STD_LOGIC_VECTOR (7 downto 0) ; pix12 : in STD_LOGIC_VECTOR (7 downto 0) ; pix13 : in STD_LOGIC_VECTOR (7 downto 0) ; pix14 : in STD_LOGIC_VECTOR (7 downto 0) ; pix15 : in STD_LOGIC_VECTOR (7 downto 0) ; pix16 : in STD_LOGIC_VECTOR (7 downto 0) ; pix21 : in STD_LOGIC_VECTOR (7 downto 0) ; 14 pix22 : in STD_LOGIC_VECTOR (7 downto 0) ; pix23 : in STD_LOGIC_VECTOR (7 downto 0) ; pix24 : in STD_LOGIC_VECTOR (7 downto 0) ; pix25 : in STD_LOGIC_VECTOR (7 downto 0) ; pix26 : in STD_LOGIC_VECTOR (7 downto 0) ; pix31 : in STD_LOGIC_VECTOR (7 downto 0) ; pix32 : in STD_LOGIC_VECTOR (7 downto 0) ; pix33 : in STD_LOGIC_VECTOR (7 downto 0) ; pix34 : in STD_LOGIC_VECTOR (7 downto 0) ; pix35 : in STD_LOGIC_VECTOR (7 downto 0) ; 24 pix36 : in STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 2 : out STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 3 : out STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 4 : out STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 5 : out STD_LOGIC_VECTOR (7 downto 0) ; r s t : in s t d _ l o g i c ; s t a l l : in s t d _ l o g i c ; c l k : in STD_LOGIC ) ; end s o b e l _ 4 p ; 34 a r c h i t e c t u r e B e h a v i o r a l of s o b e l _ 4 p i s component s o b e l _ 1 p i s Port ( pix11 : in STD_LOGIC_VECTOR (7 downto 0) ; pix12 : in STD_LOGIC_VECTOR (7 downto 0) ;

29 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 24 pix13 : in STD_LOGIC_VECTOR (7 downto 0) ; pix21 : in STD_LOGIC_VECTOR (7 downto 0) ; pix23 : in STD_LOGIC_VECTOR (7 downto 0) ; pix31 : in STD_LOGIC_VECTOR (7 downto 0) ; pix32 : in STD_LOGIC_VECTOR (7 downto 0) ; 44 pix33 : in STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 2 : out STD_LOGIC_VECTOR (7 downto 0) ; r s t : in s t d _ l o g i c ; s t a l l : in s t d _ l o g i c ; c l k : in STD_LOGIC ) ; end component ; begin s o b e l 2 2 : s o b e l _ 1 p 54 port map( pix11 => pix11, pix12 => pix12, pix13 => pix13, pix21 => pix21, pix23 => pix23, pix31 => pix31, pix32 => pix32, pix33 => pix33, p i x o u t 2 2 => pixout22, 64 s t a l l => s t a l l, c l k => clk, r s t => r s t ) ; s o b e l 2 3 : s o b e l _ 1 p port map( pix11 => pix12, pix12 => pix13, pix13 => pix14, 74 pix21 => pix22, pix23 => pix24, pix31 => pix32, pix32 => pix33,

30 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 25 pix33 => pix34, p i x o u t 2 2 => pixout23, s t a l l => s t a l l, c l k => clk, r s t => r s t ) ; 84 s o b e l 2 4 : s o b e l _ 1 p port map( pix11 => pix13, pix12 => pix14, pix13 => pix15, pix21 => pix23, pix23 => pix25, pix31 => pix33, pix32 => pix34, 94 pix33 => pix35, p i x o u t 2 2 => pixout24, s t a l l => s t a l l, c l k => clk, r s t => r s t ) ; s o b e l 2 5 : s o b e l _ 1 p port map( pix11 => pix14, 104 pix12 => pix15, pix13 => pix16, pix21 => pix24, pix23 => pix26, pix31 => pix34, pix32 => pix35, pix33 => pix36, p i x o u t 2 2 => pixout25, s t a l l => s t a l l, c l k => clk, 114 r s t => r s t ) ; end B e h a v i o r a l ;

31 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 26 Πλαίσιο Κώδικα 5: Η υλοποίηση της εξειδικευμένης cache l i b r a r y IEEE ; 2 use IEEE. STD_LOGIC_1164.ALL; use IEEE. STD_LOGIC_ARITH.ALL; u s e IEEE. STD_LOGIC_UNSIGNED. ALL; e n t i t y linemem i s Port ( c l k : in STD_LOGIC ; r s t : in STD_LOGIC ; linew : s t d _ l o g i c _ v e c t o r (10 downto 0) ; w r i t e _ a d d r : in STD_LOGIC_VECTOR (8 downto 0) ; d a t a _ i n : in STD_LOGIC_VECTOR (31 downto 0) ; 12 en : in s t d _ l o g i c ; we : i n STD_LOGIC ; s t a l l : in s t d _ l o g i c ; r e a d _ a d d r : in STD_LOGIC_VECTOR (8 downto 0) ; d a t a _ o u t : out STD_LOGIC_VECTOR (47 downto 0) ; v a l i d _ o u t p u t : out s t d _ l o g i c ; o u t _ a d d r : out s t d _ l o g i c _ v e c t o r (8 downto 0) ) ; end linemem ; a r c h i t e c t u r e B e h a v i o r a l of linemem i s 22 component bram i s port ( c l k a : IN s t d _ l o g i c ; d i n a : IN std_logic_vector (31 downto 0) ; a d d r a : IN std_logic_vector (8 downto 0) ; wea : IN std_logic_vector (0 downto 0) ; d o u t a : OUT std_logic_vector (31 downto 0) ; c l k b : IN s t d _ l o g i c ; dinb : IN std_logic_vector (31 downto 0) ; 32 addrb : IN std_logic_vector (8 downto 0) ; web : IN std_logic_vector (0 downto 0) ; doutb : OUT std_logic_vector (31 downto 0) ) ; end component ; s i g n a l mem_we : s t d _ l o g i c ;

32 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ s i g n a l s i g _ o u t _ a, s i g _ o u t _ b, d a t a _ a : s t d _ l o g i c _ v e c t o r (31 downto 0) ; s i g n a l s i g _ a d d r _ a, s i g _ a d d r _ b : s t d _ l o g i c _ v e c t o r (8 downto 0) ; s i g n a l s t a t e : s t d _ l o g i c ; s i g n a l t e m p _ r e s : s t d _ l o g i c _ v e c t o r (31 downto 0) ; s i g n a l p r e v _ r e a d _ a d d r, r e a d _ a d d r _ t : s t d _ l o g i c _ v e c t o r (8 downto 0) ; s i g n a l r e a d _ a d d r _ i, p r e v _ r e a d _ a d d r _ i : s t d _ l o g i c _ v e c t o r (8 downto 0) ; s i g n a l temp1, temp2, temp3 : s t d _ l o g i c _ v e c t o r (8 downto 0) ; s i g n a l linewd4m1 : s t d _ l o g i c _ v e c t o r (8 downto 0) ; begin linewd4m1 <= linew (10 downto 2) 1 ; 52 mem: bram port map ( c l k a => clk, d i n a => data_a, a d d r a => s i g _ a d d r _ a, wea ( 0 ) => mem_we, d o u t a => s i g _ o u t _ a, c l k b => clk, dinb => ( o t h e r s => 0 ), 62 addrb => s i g _ a d d r _ b, web ( 0 ) => 0, doutb => s i g _ o u t _ b ) ; p r o c e s s ( clk, r s t ) begin i f ( r s t = 1 ) then s t a t e <= 0 ; d a t a _ o u t <= ( o t h e r s => 0 ) ; 72 d a t a _ a <= ( o t h e r s => 0 ) ;

33 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 28 mem_we <= 0 ; s i g _ a d d r _ a <= ( o t h e r s => 0 ) ; s i g _ a d d r _ b <= ( o t h e r s => 0 ) ; r e a d _ a d d r _ t <= ( o t h e r s => 0 ) ; p r e v _ r e a d _ a d d r <= ( o t h e r s => 0 ) ; t e m p _ r e s <= ( o t h e r s => 0 ) ; r e a d _ a d d r _ i <= ( o t h e r s => 0 ) ; p r e v _ r e a d _ a d d r _ i <= ( o t h e r s => 0 ) ; o u t _ a d d r <= ( o t h e r s => 0 ) ; 82 v a l i d _ o u t p u t <= 0 ; temp1 <= ( o t h e r s => 0 ) ; temp2 <= ( o t h e r s => 0 ) ; temp3 <= ( o t h e r s => 0 ) ; i f ( r i s i n g _ e d g e ( c l k ) ) then i f ( s t a l l = 0 ) then i f ( en = 0 ) then s t a t e <= 0 ; 92 mem_we <= 0 ; v a l i d _ o u t p u t <= 0 ; d a t a _ o u t <= ( o t h e r s => 0 ) ; i f s t a t e = 0 then i f ( we = 1 ) then s i g _ a d d r _ a <= w r i t e _ a d d r ; d a t a _ a <= d a t a _ i n ; mem_we <= 1 ; 102 s i g _ a d d r _ a <= ( o t h e r s => 0 ) ; d a t a _ a <= ( o t h e r s => 0 ) ; mem_we <= 0 ; s i g _ a d d r _ b <= r e a d _ a d d r ; t e m p _ r e s <= s i g _ o u t _ b ; r e a d _ a d d r _ i <= r e a d _ a d d r ; p r e v _ r e a d _ a d d r _ i <= p r e v _ r e a d _ a d d r ; r e a d _ a d d r _ t <= r e a d _ a d d r ; v a l i d _ o u t p u t <= 0 ; 112 temp1 <= r e a d _ a d d r ;

34 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 29 temp3 <= temp2 ; s t a t e <= 1 ; mem_we <= 0 ; i f ( r e a d _ a d d r _ i = ) then s i g _ a d d r _ a <= ( o t h e r s => 0 ) ; s i g _ a d d r _ b <= r e a d _ a d d r + 1 ; e l s i f ( r e a d _ a d d r _ i =linewd4m1 ) then s i g _ a d d r _ a <= r e a d _ a d d r 1 ; 122 s i g _ a d d r _ b <= ( o t h e r s => 0 ) ; s i g _ a d d r _ a <= r e a d _ a d d r 1 ; s i g _ a d d r _ b <= r e a d _ a d d r + 1 ; d a t a _ o u t (39 downto 8) <= t e m p _ r e s ; temp2 <= temp1 ; o u t _ a d d r <= temp3 ; v a l i d _ o u t p u t <= 1 ; i f ( p r e v _ r e a d _ a d d r _ i = ) then 132 d a t a _ o u t (47 downto 40) <= ; d a t a _ o u t (7 downto 0) <= s i g _ o u t _ b (31 downto 24) ; e l s i f ( p r e v _ r e a d _ a d d r _ i =linewd4m1 ) then d a t a _ o u t (47 downto 40) <= s i g _ o u t _ a (7 downto 0) ; d a t a _ o u t (7 downto 0) <= ; d a t a _ o u t (47 downto 40) <= s i g _ o u t _ a (7 downto 0) ; d a t a _ o u t (7 downto 0) <= s i g _ o u t _ b (31 downto 24) ; p r e v _ r e a d _ a d d r <= r e a d _ a d d r _ t ; 142 s t a t e <= 0 ;

35 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 30 end p r o c e s s ; end B e h a v i o r a l ; Πλαίσιο Κώδικα 6: Το τμήμα ελέγχου της επεξεργασίας l i b r a r y IEEE ; use IEEE. STD_LOGIC_1164.ALL; use IEEE. STD_LOGIC_ARITH.ALL; u s e IEEE. STD_LOGIC_UNSIGNED. ALL; e n t i t y s o b e l _ i m a g e i s Port ( c l k : in STD_LOGIC ; 8 r s t : in STD_LOGIC ; en : i n STD_LOGIC ; l i n e s : in s t d _ l o g i c _ v e c t o r (10 downto 0) ; linew : in s t d _ l o g i c _ v e c t o r (10 downto 0) ; d a t a _ i n : in STD_LOGIC_VECTOR (31 downto 0) ; d a t a _ o u t : out STD_LOGIC_VECTOR (31 downto 0) ; l a s t p i x : out s t d _ l o g i c ; d a t a _ v a l i d : out STD_LOGIC ) ; end s o b e l _ i m a g e ; 18 a r c h i t e c t u r e B e h a v i o r a l of s o b e l _ i m a g e i s component s o b e l _ 4 p i s Port ( pix11 : in STD_LOGIC_VECTOR (7 downto 0) ; pix12 : in STD_LOGIC_VECTOR (7 downto 0) ; pix13 : in STD_LOGIC_VECTOR (7 downto 0) ; pix14 : in STD_LOGIC_VECTOR (7 downto 0) ; pix15 : in STD_LOGIC_VECTOR (7 downto 0) ; pix16 : in STD_LOGIC_VECTOR (7 downto 0) ; 28 pix21 : in STD_LOGIC_VECTOR (7 downto 0) ; pix22 : in STD_LOGIC_VECTOR (7 downto 0) ; pix23 : in STD_LOGIC_VECTOR (7 downto 0) ; pix24 : in STD_LOGIC_VECTOR (7 downto 0) ; pix25 : in STD_LOGIC_VECTOR (7 downto 0) ;

36 5 ΠΑΡΑΡΤΗΜΑ ΚΩΔΙΚΑ 31 pix26 : in STD_LOGIC_VECTOR (7 downto 0) ; pix31 : in STD_LOGIC_VECTOR (7 downto 0) ; pix32 : in STD_LOGIC_VECTOR (7 downto 0) ; pix33 : in STD_LOGIC_VECTOR (7 downto 0) ; pix34 : in STD_LOGIC_VECTOR (7 downto 0) ; 38 pix35 : in STD_LOGIC_VECTOR (7 downto 0) ; pix36 : in STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 2 : out STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 3 : out STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 4 : out STD_LOGIC_VECTOR (7 downto 0) ; p i x o u t 2 5 : out STD_LOGIC_VECTOR (7 downto 0) ; r s t : in s t d _ l o g i c ; s t a l l : in s t d _ l o g i c ; c l k : in STD_LOGIC ) ; end component ; 48 component linemem i s Port ( c l k : in STD_LOGIC ; r s t : in STD_LOGIC ; linew : in s t d _ l o g i c _ v e c t o r (10 downto 0) ; w r i t e _ a d d r : in STD_LOGIC_VECTOR (8 downto 0) ; d a t a _ i n : in STD_LOGIC_VECTOR (31 downto 0) ; en : in s t d _ l o g i c ; we : i n STD_LOGIC ; s t a l l : in s t d _ l o g i c ; r e a d _ a d d r : in STD_LOGIC_VECTOR (8 downto 0) ; 58 d a t a _ o u t : out STD_LOGIC_VECTOR (47 downto 0) ; v a l i d _ o u t p u t : out s t d _ l o g i c ; o u t _ a d d r : out s t d _ l o g i c _ v e c t o r (8 downto 0) ) ; end component ; C o n n e c t i n g s i g n a l s

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

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

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

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

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

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

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

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

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή 8.1 Τακτική σάρωση (Polling) Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου.

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

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

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

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

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

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

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διασυνδετικοί Δίαυλοι. Τι διασυνδέει ένας δίαυλος; Μεταφορά δεδομένων. Διασύνδεση Εισόδου-Εξόδου. Μ.Στεφανιδάκης

Διασυνδετικοί Δίαυλοι. Τι διασυνδέει ένας δίαυλος; Μεταφορά δεδομένων. Διασύνδεση Εισόδου-Εξόδου. Μ.Στεφανιδάκης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2014-15 Διασύνδεση Εισόδου-Εξόδου (συσκευές και ) http://www.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Διασυνδετικοί : Αναλαμβάνουν την

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

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

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

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

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

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 9 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

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

Σύστημα διασύνδεσης και. διαδικασία εισόδου-εξόδου

Σύστημα διασύνδεσης και. διαδικασία εισόδου-εξόδου ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 6 Σύστημα διασύνδεσης και διαδικασία εισόδου-εξόδου Τι είναι αρτηρία (Bus) ; Ένα σύνολο γραμμών διασύνδεσης Πρωτόκολλο (protocol) Περιγραφή Πρωτοκόλλου χρονικό διάγραμμα

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

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

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

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

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός

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

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

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

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

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

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

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

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

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1 ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Καταχωρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Καταχωρητές Παράλληλης Φόρτωσης Καταχωρητές

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

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

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

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

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

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

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

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

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

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

Διασύνδεση Εισόδου-Εξόδου

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

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

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

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

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

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

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

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

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

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

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

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers) ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers) ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy) Περίληψη q Καταχωρητές Παράλληλης

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

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

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

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

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

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

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

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

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

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

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

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

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

Αρχιτεκτονική Μνήμης

Αρχιτεκτονική Μνήμης ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Αρχιτεκτονική Μνήμης Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter

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

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

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

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

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

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

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

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

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

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

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

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

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 3: Είσοδος - Έξοδος Τα περισσότερα συστήματα

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

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

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

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

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

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

Με τον όρο μνήμη αναφερόμαστε στα μέσα που χρησιμοποιούνται για την αποθήκευση προγραμμάτων και δεδομένων σε έναν υπολογιστή ή άλλη ψηφιακή

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

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

Το υλικό του υπολογιστή

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

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

Λογικά σύμβολα των 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

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Η επεξεργασία των δεδομένων ακολουθεί μια στερεότυπη διαδρομή: τα δεδομένα εισάγονται στο υπολογιστικό σύστημα, υφίστανται μια ορισμένη επεξεργασία και

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

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

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

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

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

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

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

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

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

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

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

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

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

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ Κεφάλαιο 1: Υλικό Υπολογιστών (Hardware) 1.1: Το υπολογιστικό σύστημα ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1. Τι αντιλαμβάνεστε με τον όρο υλικό (hardware); [σελ. 8] Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε

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

Τεχνολογίες Κύριας Μνήμης

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

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

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

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

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

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

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

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

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Άριστος Πασιάς 1 ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Η ΔΟΜΗ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Άριστος Πασιάς Σεπτέμβριος 2017 2 Στόχοι: Στο τέλος αυτού του μαθήματος ο μαθητή πρέπει: Να μπορεί να αναφέρει τα κύρια χαρακτηριστικά

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

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

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

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

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

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

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

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

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

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

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

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

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

Παραλληλισμός σε επίπεδο εντολών

Παραλληλισμός σε επίπεδο εντολών Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Παραλληλισμός σε επίπεδο εντολών (Pipelining και άλλες τεχνικές αύξησης απόδοσης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης

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

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Τεχνολογία Πολυμέσων Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

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

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) SMPcache Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) 1. Βασικές ρυθμίσεις του συστήματος: δημιουργία μια δικής μας σύνθεσης συστήματος. Το SMPcache είναι ένα εργαλείο με το οποίο μπορούμε

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

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Έστω ότι θέλετε να συνδέσετε 20 υπολογιστές με συνδέσεις από σημείο σε σημείο (point-to-point), ώστε να είναι δυνατή η επικοινωνία όλων

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

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

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

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

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

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

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

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

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

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

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα 1.7 - Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Πρωτόκολλο είναι ένα σύνολο κανόνων που πρέπει να ακολουθήσουν όλοι οι σταθμοί εργασίας σε ένα δίκτυο ώστε να μπορούν

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται

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

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Μemory) ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

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

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ Απαντήσεις στις ερωτήσεις του βιβλίου ΚΕΦΑΛΑΙΟ 3 1. 2. Από ποια στοιχεία αποτελείται το κεντρικό μέρος ενός υπολογιστή και ποια η λειτουργία καθενός; Κεντρική Μονάδα επεξεργασίας

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

Pipelining και Παράλληλη Επεξεργασία

Pipelining και Παράλληλη Επεξεργασία Pipelining και Παράλληλη Επεξεργασία Εισαγωγή Σωλήνωση - Pipelining Βασισμένη στην ιδέα σωλήνα που στέλνει νερό χωρίς να περιμένει το νερό που μπαίνει σε ένα σωλήνα να τελειώσει water pipe Μπορεί να οδηγήσει

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

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

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι Εισαγωγή στη VHDL Εισαγωγή Very High Speed Integrated Circuits Hardware Description Language ιαφορές από γλώσσες προγραμματισμού: παράλληλη εκτέλεση εντολών προσδιορισμός

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 2 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Υπολογιστής Συνοπτικό λεξικό Οξφόρδης -> «ηλεκτρονική υπολογιστική μηχανή»

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

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4 Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφάλαιο 7.4 Ε/Ε Οδηγούμενη από Διακοπές Το πρόβλημα με την προγραμματιζόμενη Ε/Ε είναι ότι ο επεξεργαστής πρέπει να περιμένει ώστε η μονάδα Ε/Ε που τον ενδιαφέρει

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

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης Αναστάσιος Α. Νάνος ananos@cslab.ntua.gr Επιβλέπων: Νεκτάριος

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

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

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

Πανεπιστήµιο Θεσσαλίας Πανεπιστήµιο Θεσσαλίας Τµήµα Πληροφορικής Ενότητα 8η: Συσκευές Ε/Ε - Αρτηρίες Άσκηση 1: Υπολογίστε το µέσο χρόνο ανάγνωσης ενός τµήµατος των 512 bytes σε µια µονάδα σκληρού δίσκου µε ταχύτητα περιστροφής

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

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

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

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

Chapter 4 ( ή 1 στο βιβλίο σας)

Chapter 4 ( ή 1 στο βιβλίο σας) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 4 ( ή 1 στο βιβλίο σας) Αξιολόγηση και κατανόηση της απόδοσης Δέκατη (10 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από

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

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Page 1 Χρήστης Εφαρμογή Λειτουργικό Σύστημα Υλικό Γνωστά Λειτουργικά

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1 ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1 Σε αυτή την εργαστηριακή άσκηση θα σχεδιάσετε ένα σύστημα που θα υλοποιεί έναν ενιαίο ασύγχρονο πομποδέκτη UART (Universal Asynchronous Receiver Transmitter). Το UART θα υλοποιηθεί

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

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

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

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

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

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

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

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

[ΚΑΤΑΓΡΑΦΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΛΙΚΟΥ ΚΑΙ ΔΙΑΥΛΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ] 2017 ΙΕΚ Τεχνικός Η/Υ ΠΕΤΡΟΠΟΥΛΟΣ ΠΑΝΑΓΙΩΤΗΣ [ΚΑΤΑΓΡΑΦΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΛΙΚΟΥ ΚΑΙ ΔΙΑΥΛΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ] Sockets Intel & AMD RAM - IDE & SATA - SSD Sockets Intel & AMD Sockets Socket 478/Socket N Έτος κυκλοφοριας

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

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

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης.

Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης. Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης. 1. SMART BOARD SERIAL NUMBER: Ο σειριακός αριθμός του Διαδραστικού πίνακα βρίσκεται στην δεξιά πλαϊνή μεριά

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL Διδάσκoντες: Δρ. Γιώργος Ζάγγουλοςκαι Δρ. Παναγιώτα Δημοσθένους Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 4 : Κρυφή Μνήμη Καρβούνης Ευάγγελος Δευτέρα, 30/11/2015 Χαρακτηριστικά Θέση Χωρητικότητα Μονάδα Μεταφοράς

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

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

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

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