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

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

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

Transcript

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

2

3 Πρόλογος Πρόλογος Η παρούσα ειδική ερευνητική εργασία εκπονήθηκε στα πλαίσια του Προγράμματος Μεταπτυχιακών Σπουδών Ειδίκευσης Ηλεκτρονική και Η/Υ του τμήματος Φυσικής του Πανεπιστημίου Πατρών. Σκοπός είναι η ανάπτυξη ενός ψηφιακού συστήματος, το οποίο βασίζεται στον επεξεργαστή, γενικού σκοπού, Nios II της ALTERA και ενσωματώνει έναν αριθμό περιφερειακών συσκευών και υποκυκλωμάτων για βασική επεξεργασία ήχου, καθώς και η ανάπτυξη σε γλώσσα C, της εφαρμογής που θα εκτελείται από το παραπάνω σύστημα. Ο έλεγχος του συστήματος επιτυγχάνεται ασύρματα μέσω ενός πληκτρολογίου υπερύθρων, ενώ η κατάσταση του συστήματος απεικονίζεται σε μία VGA οθόνη. Στο πρώτο κεφάλαιο γίνεται μια εισαγωγή στις βασικές έννοιες ψηφιακής ανάπτυξης συστημάτων με την SOPC λογική σχεδίασης, καθώς και μία σύντομη ανασκόπηση του συστήματος. Στο δεύτερο κεφάλαιο, αναλύεται διεξοδικά η αρχιτεκτονική του επεξεργαστή Nios II και γίνεται εκτενής αναφορά στα επιμέρους χαρακτηριστικά του. Στο τρίτο κεφάλαιο, εξετάζονται αναλυτικά τα υποκυκλώματα (cores) που χρησιμοποιήθηκαν κατά την ανάπτυξη του συστήματος, ενώ στο τέταρτο κεφάλαιο γίνεται η αναλυτική περιγραφή του, που περιλαμβάνει την περιγραφή της λειτουργίας του συστήματος, την αναφορά όλων των ρυθμίσεων που πραγματοποιήθηκαν στα επιμέρους συστήματα, την περιγραφή των εξωτερικών υποκυκλωμάτων που αναπτύχθηκαν για το συγκεκριμένο σύστημα, την περιγραφή της κύριας εφαρμογής, καθώς και μία παρουσίαση του συνολικού συστήματος. Στο τελευταίο κεφάλαιο, παρουσιάζονται τα συμπεράσματα που προέκυψαν κατά τη διαδικασία σχεδίασης, τα προβλήματα και οι δυσκολίες που συναντήθηκαν, όπως επίσης και μελλοντικές κατευθύνσεις για την περαιτέρω εξέλιξη του συστήματος. Θα ήθελα να ευχαριστήσω τον επιβλέποντα της προσπάθειας αυτής, Λέκτορα του τμήματος Φυσικής, κύριο Μπακάλη Δημήτριο, η καθοδήγηση του οποίου υπήρξε καθοριστικής σημασίας, τους καθηγητές του τομέα Ηλεκτρονικής για την στήριξή τους αλλά και τους μεταπτυχιακούς φοιτητές της ηλεκτρονικής, οι οποίοι με τις συζητήσεις μας συνέβαλαν στην διαμόρφωση του αποτελέσματος της εργασίας αυτής. Τέλος, θα ήθελα να ευχαριστήσω τους γονείς μου, για την αμέριστη συμπαράσταση και την ενθάρρυνση τους κατά τη διάρκεια των σπουδών μου. Βασσάλος Ευάγγελος Πάτρα 2008 i

4 ii

5 Η εργασία αυτή αφιερώνεται στη Βάσω, χωρίς την συμπαράσταση της οποίας τίποτα δεν θα ήταν εφικτό. iii

6 iv

7 Περιεχόμενα Πίνακας Περιεχομένων Πρόλογος... i Πίνακας Περιεχομένων... v Κεφάλαιο 1 Εισαγωγή Βασικές Έννοιες Σύντομη Ανασκόπηση Συστήματος Ο Επεξεργαστής Nios II UP IP Cores και IP Cores Τα UP IP Cores Τα IP Cores Το IR Receiver Board και το IR Πληκτρολόγιο Η Αναπτυξιακή Κάρτα DE2 της ALTERA To Περιβάλλον Aνάπτυξης Quartus και το Nios II IDE Το Quartus II της ALTERA Το NIOS II IDE της ALTERA Κεφάλαιο 2 Ο Επεξεργαστής Nios II Αρχείο καταχωρητών (register file) Καταχωρητές γενικού σκοπού Καταχωρητές ελέγχου Αριθμητική και λογική μονάδα (arithmetic logic unit) Μη Υλοποιημένες Εντολές Εντολές Κινητής Υποδιαστολής Σήματα επαναφοράς (reset signals) Ελεγκτής εξαιρέσεων και διακοπών Reset Εξαιρέσεις Break Εξαιρέσεις Ηardware Διακοπές Εξαιρέσεις Σχετικές με Εντολές Καθορισμός της Πηγής Εξαίρεσης Οργάνωση Μνήμης και Περιφερειακών Δίαυλοι Δεδομένων και Εντολών Κρυφή Μνήμη v

8 Περιεχόμενα Tightly Coupled Μνήμη Χάρτης Διευθύνσεων (Address Map) Μονάδα αποσφαλμάτωσης JTAG (JTAG debug module) Εισαγωγή στο Σετ Εντολών του Nios II I Type R Type J Type Τα OPcodes των Εντολών Κεφάλαιο 3 Τα Cores του Συστήματος Το Nios II/s Core Η Αριθμητική και Λογική Μονάδα (ALU) Πρόσβαση σε Μνήμη Απόδοση Εκτέλεσης Εντολών Διαχείριση Εξαιρέσεων Μονάδα αποσφαλμάτωσης JTAG Μη Υποστηριζόμενα Χαρακτηριστικά Τα UP IP Cores To Audio Core To Audio/Video Configuration Core To DE Boards External Interface To Character LCD Core To VGA Core To PIO Core SDRAM Controller Τα IP Cores On chip Μνήμη JTAG UART Core Timer Core Το IR Receiver Board και το IR Πληκτρολόγιο Κεφάλαιο 4 Περιγραφή Συστήματος Περιγραφή Λειτουργίας του Συστήματος Ρυθμίσεις των SOPC Υποκυκλωμάτων του Συστήματος Ρυθμίσεις του Nios II Core Ρυθμίσεις της Μνήμης του Συστήματος vi

9 Περιεχόμενα Ρυθμίσεις του Audio Core Ρυθμίσεις του Audio/Video Configuration Core Ρυθμίσεις του DE Boards External Interface Core Ρυθμίσεις του Character LCD Core Ρυθμίσεις του VGA Core Ρυθμίσεις του PIO Core Ρυθμίσεις του Timer Core Περιγραφή των Εξωτερικών Υποκυκλωμάτων του Συστήματος To Κύκλωμα Bin To Thermometer To FIR Φίλτρο Το Υλικό και το Λογισμικό του Συστήματος Σχολιασμός του Τελικού Συστήματος Κεφάλαιο 5 Συμπεράσματα Προβλήματα Προοπτικές Συμπεράσματα Σχόλια Προβλήματα Περαιτέρω Προσθήκες Βελτιώσεις Παράρτημα Α Κώδικες Παράρτημα Β Συνοπτικές Οδηγίες Χρήσης Βιβλιογραφία vii

10 Περιεχόμενα viii

11 Περιεχόμενα ν ix

12

13 Κεφάλαιο 1 Εισαγωγή Κεφάλαιο 1 Εισαγωγή Οι τρεις βασικότεροι παράγοντες που παίζουν ρόλο κατά τη διαδικασία ανάπτυξης ψηφιακών συστημάτων είναι i) η απόδοση του συστήματος, ii) ο χρόνος παραγωγής του και iii) το κόστος του. Οι παραδοσιακές μέθοδοι σχεδίασης ψηφιακών συστημάτων (ASICs και VLSI ολοκληρωμένα κυκλώματα) προσφέρουν υψηλή απόδοση, απαιτούν όμως μεγαλύτερο χρόνο παραγωγής και τα προϊόντα που παράγονται με τις μεθόδους αυτές συνήθως έχουν υψηλό κόστος κατασκευής. Επιπλέον, σε πολλές εφαρμογές διάφορα χαρακτηριστικά ή προδιαγραφές του συστήματος δύναται να τροποποιηθούν κατά τη διάρκεια του κύκλου σχεδίασης. Οι τροποποιήσεις αυτές συχνά έχουν δραματικές επιπτώσεις στο ολοκληρωμένο κύκλωμα, αλλά και στο τυπωμένο κύκλωμα (Printed Circuit Board) με τελικό αποτέλεσμα την καθυστέρηση της παραγωγής και το αυξημένο κόστος. Τα τελευταία χρόνια έχει αναπτυχθεί μία νέα τεχνολογία, η οποία επιτρέπει στους σχεδιαστές hardware να σχεδιάζουν συστήματα για system on a chip (SOC) εφαρμογές με σχετικά υψηλή απόδοση, αλλά σε πολύ λιγότερο χρόνο και με μικρότερο κόστος. Η προσέγγιση αυτή αξιοποιεί τις προγραμματιζόμενες διατάξεις (PLDs Programmable Logic Devices), όπως για παράδειγμα τα FPGAs Field Programmable Gate Arrays, που περιέχουν μνήμη και λογικά στοιχεία. Οι διατάξεις αυτές μπορούν να προγραμματιστούν και επομένως να υλοποιήσουν έναν ή παραπάνω επεξεργαστές (processor cores). Λόγω της δυνατότητας επαναπρογραμματισμού των FPGAs, η καινούρια αυτή προσέγγιση ονομάστηκε System On a Programmable Chip (SOPC). Το κύριο πλεονέκτημα της επαναπροσδιορίσιμης αρχιτεκτονικής είναι ότι προσφέρει τη δυνατότητα του επαναπρογραμματισμού για την υλοποίηση μέγάλου πλήθους συστημάτων εφαρμογών με πρακτικά μηδενικό κόστος. Τα παραπάνω συνοψίζονται στον Πίνακα 1.1 Χαρακτηριστικό SOPC ASIC Ευελιξία Hardware ο Ευελιξία Software ο Reconfigurability ο Χρόνος/Κόστος ανάπτυξης ο Κόστος Περιφερειακών Συσκ. Απόδοση * Κόστος Παραγωγής * Κατανάλωση ο Υπόμνημα : Καλό, * Μέτριο, O Κακό Πίνακας 1.1 : Σύγκριση διαφόρων τεχνολογιών σχεδιασμού Hardware 1

14 Κεφάλαιο 1 Εισαγωγή Έτσι, για εφαρμογές που απαιτούν υλοποίηση σε hardware, η βασισμένη σε FPGA SOPC προσέγγιση είναι ευκολότερη, γρηγορότερη και συχνά πιο οικονομική Βασικές Έννοιες Τα συστήματα που αναπτύσσονται με την SOPC λογική σχεδίασης περιλαμβάνουν έναν ή περισσότερους επεξεργαστές, μνήμες και συνήθως ένα μεγάλο αριθμό περιφερειακών μονάδων. Οι επεξεργαστές που χρησιμοποιούνται στα συστήματα αυτά ανήκουν στην κατηγορία των soft core επεξεργαστών (σε αντίθεση με τους επεξεργαστές που ανήκουν στην παραδοσιακή hard core κατηγορία). Ο διαχωρισμός αυτός αναφέρεται στo τρόπο υλοποίησης του επεξεργαστή και στη δυνατότητα διαμόρφωσης/ προσαρμοστικότητας του. Οι hard core επεξεργαστές, λόγω της κατασκευής τους (πυρίτιο), παρουσιάζουν ελάχιστη δυνατότητα προσαρμογής, τείνουν όμως να έχουν υψηλότερη απόδοση από τους soft core επεξεργαστές. Οι soft core επεξεργαστές, όπως ο Nios II της ALTERA και ο MicroBlaze της XILINX, υλοποιούνται αξιοποιώντας τα προγραμματιζόμενης λογικής στοιχεία του FPGA. Τα χαρακτηριστικά των επεξεργαστών αυτού του είδους μπορούν να τροποποιηθούν, επιτρέποντας στο σχεδιαστή να καθορίσει για παράδειγμα το μέγεθος της τοπικής μνήμης, την αρχιτεκτονική της αριθμητικής και λογικής μονάδας (Arithmetic Logic Unit), τον αριθμό και τον τύπο των περιφερειακών συσκευών καθώς και παραμέτρους διευθυνσιοδότησης μνήμης, και επομένως αυξάνουν την προσαρμοστικότητα του επεξεργαστή. Όπως είναι αναμενόμενο, τέτοιου είδους ευελιξία αναπόφευκτα γεννά και κάποιους περιορισμούς όπως χαμηλότερους ρυθμούς ρολογιού και υψηλότερη κατανάλωση από τους αντίστοιχους hard core επεξεργαστές. Τα εναπομείναντα λογικά στοιχεία του FPGA μπορούν να χρησιμοποιηθούν για την ανάπτυξη εξειδικευμένου hardware για συγκεκριμένες εφαρμογές. Η εταιρία η οποία παρέχει τον επεξεργαστή, παρέχει επίσης και συγκεκριμένα εργαλεία τόσο για την SOPC ανάπτυξη του συστήματος, όσο και για την ανάπτυξη των αντίστοιχων εφαρμογών. Ένα ειδικό εργαλείο χρησιμοποιείται για τη διαμόρφωση των χαρακτηριστικών του επεξεργαστή όπως το μέγεθος του αρχείου καταχωρητών (register file), το πλήθος και το είδος των μονάδων πολλαπλασιασμού και διαίρεσης, την υποστήριξη αριθμητικής κινητής υποδιαστολής, τις διακοπές (interrupts) καθώς και το I/O hardware. Το εργαλείο αυτό, παράγει ένα HDL (Hardware Description Language) μοντέλο του επεξεργαστή σε VHDL ή Verilog, το οποίο μαζί με την υπόλοιπη λογική του συστήματος, ακολουθεί μία διαδικασία 2

15 Κεφάλαιο 1 Εισαγωγή σύνθεσης και προσαρμογής (synthesis, place and route) χρησιμοποιώντας ένα ειδικό CAD (Computer Aided Design) πρόγραμμα που πραγματοποιεί τον προγραμματισμό του FPGA. Η διαδικασία αυτή φαίνεται στην εικόνα 1.1. Εικόνα 1.1 : Διάγραμμα ροής ανάπτυξης SOPC συστήματος Το πρόγραμμα της εφαρμογής (software) το οποίο θα εκτελεσθεί από τον επεξεργαστή συνήθως αναπτύσσεται σε C/C++ και μεταγλωττίζεται χρησιμοποιώντας έναν, προσαρμοσμένο στον επεξεργαστή, μεταγλωττιστή. Εφόσον το πρόγραμμα έχει παραχθεί πρέπει να φορτωθεί στη μνήμη προγράμματος του επεξεργαστή και στις μνήμες δεδομένων. Εάν το πρόγραμμα είναι μικρό, μπορεί να χωρέσει στα block μνήμης τα οποία είναι διαθέσιμα στο FPGA (on chip μνήμη). Σε αυτή την περίπτωση, το πρόγραμμα αρχικοποιείται στη μνήμη με τον hardware προγραμματισμό του FPGA. Επειδή όμως η on chip μνήμη είναι συνήθως περιορισμένη, η λύση αυτή συχνά δεν είναι εφικτή. Η συνηθέστερη επιλογή είναι η αποθήκευση του προγράμματος σε μία εξωτερική μνήμη (off chip μνήμη), η οποία μπορεί να είναι μία SRAM ή SDRAM μνήμη. 3

16 Κεφάλαιο 1 Εισαγωγή 1.2. Σύντομη Ανασκόπηση Συστήματος Το σύστημα, το οποίο αναπτύχθηκε στα πλαίσια της παρούσας εργασίας, και θα περιγραφεί αναλυτικά στη συνέχεια, δέχεται ηχητικά δεδομένα από κάποια συσκευή που είναι συνδεδεμένη στην είσοδο Line In της κάρτας DE2 της ALTERA και εκτελεί διάφορες βασικές ρουτίνες επεξεργασίας ήχου, όπως FIR filtering, echo, reverberation, volume leveling, σύμφωνα με το τι πλήκτρο έχει πατηθεί από ένα ασύρματο ΙR Keyboard απεικονίζοντας ταυτόχρονα σε μία οθόνη VGA και στα LEDs της κάρτας DE2 την κατάσταση στην οποία βρίσκεται το σύστημα και την ένταση του ήχου, αντίστοιχα. Σύμφωνα με την SOPC λογική σχεδίασης, το σύστημα βασίζεται στον soft core επεξεργαστή Nios II της ALTERA. Μέρος των περιφερειακών τα οποία προστέθηκαν στο σύστημα είναι μέρος μιας βιβλιοθήκης περιφερειακών συσκευών με όνομα UP IP Cores (University Program Intellectual Property Cores) που έχει αναπτυχθεί από την ALTERA για εκπαιδευτικούς κυρίως σκοπούς. Χρησιμοποιήθηκε επίσης και το IR Receiver Board καθώς και το IR Keyboard της εταιρίας SLS για τον ασύρματο έλεγχο της λειτουργίας του συστήματος. Η αναπτυξιακή κάρτα που χρησιμοποιήθηκε ήταν το DE2 Board της ALTERA και τα εργαλεία ανάπτυξης για το hardware μέρος είναι το Quartus v7.2sp2 και το SOPC Builder (στοιχείο του Quartus), ενώ για το software μέρος, το Nios II Integrated Development Environment Ο Επεξεργαστής Nios II O επεξεργαστής Nios II είναι ένας γενικού σκοπού, παραμετροποιήσιμος, soft core, RISC (Reduced Instruction Set Computer) επεξεργαστής. Όπως έχει ήδη αναφερθεί, ο προσδιορισμός του Nios II ως soft core σημαίνει ότι δεν είναι κατασκευασμένος σε πυρίτιο ως chip (hard core), αλλά έχει αναπτυχθεί αποκλειστικά σε HDL γλώσσα και το παραμετροποιήσιμος έγκειται στη δυνατότητα επαναπροσδιορισμού διαφόρων ρυθμίσεων του. Ο Nios II προσφέρει : Σετ εντολών, μνήμη και data path των 32 bit. 32 καταχωρητές γενικού σκοπού. 32 εξωτερικές πηγές διακοπών. Εντολές πολλαπλασιασμού και διαίρεσης 32 Χ 32, (ενός κύκλου ρολογιού), που δίνουν αποτέλεσμα των 32 bit. 4

17 Κεφάλαιο 1 Εισαγωγή Εντολές για υπολογισμό γινομένων των 64 και 128 bit. Εντολές κινητής υποδιαστολής απλής ακρίβειας. Κύκλωμα ολίσθησης δεδομένων. Πρόσβαση σε ποικιλία on chip περιφερειακών και διασυνδέσεις σε off chip μνήμες και περιφερειακά. Περιβάλλον ανάπτυξης software βασισμένο σε GNU C/C++ tool chain και Eclipse IDE Προηγμένες δυνατότητες αποσφαλμάτωσης (advanced debugging ) Ανάλυση σε πραγματικό χρόνο εντολών και δεδομένων καθώς και άλλων σημάτων με το Altera 's SignalTap II logic analyzer. Instruction set architecture (ISA) συμβατό σε όλα τα Nios II συστήματα. Απόδοση έως 250 DMIPS Ένα Nios II σύστημα είναι ισοδύναμο με ένα μικροελεγκτή που περιλαμβάνει έναν επεξεργαστή και ένα συνδυασμό από περιφερειακές συσκευές και μνήμη, σε ένα chip. Έτσι ο όρος Nios II σύστημα αναφέρεται σε έναν επεξεργαστή Nios II, σε ένα σετ από on chip περιφερειακά και on chip μνήμη, καθώς και διασύνδεση σε off chip μνήμη και περιφερειακά, όλα υλοποιημένα σε ένα FPGA της ALTERA. Όλα τα Nios II συστήματα κάνουν χρήση του ίδιου σετ εντολών και του ίδιου προγραμματιστικού μοντέλου. Ένα από τα πιο σημαντικά πλεονεκτήματα ενός συστήματος βασισμένο στον Nios II είναι το ευπροσάρμοστο σετ περιφερειακών. Λόγο της soft core φύσης του Nios II, περιφερειακές συσκευές μπορούν είτε να προστεθούν είτε να αφαιρεθούν είτα να παραμετροποιηθούν σύμφωνα με τις εκάστοτε ανάγκες των προς υλοποίηση εφαρμογών. Απόρροια αυτού του ευπροσάρμοστου σετ περιφερειακών είναι ο ευέλικτος / επαναπροσδιορίσιμος χάρτης διευθύνσεων (flexible address map). Η ALTERA παρέχει ειδικές software εκφράσεις για πρόσβαση σε μνήμες και περιφερειακά ανεξάρτητα από την διεύθυνσή που τους έχει ανατεθεί διευκολύνοντας με αυτόν τον τρόπο την ανάπτυξη του software. Υπάρχουν δύο μεγάλες κατηγορίες περιφερειακών συσκευών : Οι δεδομένες περιφερειακές συσκευές (Standard Peripherals) και οι προσαρμοζόμενες περιφερειακές συσκευές (Custom Peripherals). Standard Peripherals Η ALTERA παρέχει ένα σετ από συχνά χρησιμοποιούμενα περιφερειακά σε συστήματα μικροεπεξεργαστών, όπως χρονιστές, σειριακές διασυνδέσεις, I/O γενικού σκοπού, SDRAM ελεγκτές, καθώς και διασύνδεση με μνήμες. 5

18 Κεφάλαιο 1 Εισαγωγή Custom Peripherals Υπάρχει επίσης η δυνατότητα ανάπτυξης νέων περιφερειακών και ενσωμάτωσης τους σε ένα Nios II σύστημα. Όταν η απόδοση του συστήματος αποτελεί κρίσιμη παράμετρο, και το πρόγραμμα/εφαρμογή ξοδεύει πολλούς κύκλους ρολογιού για την εκτέλεση συγκεκριμένων κομματιών κώδικα, τότε αποτελεί πάγια τακτική να αναπτύσσονται περιφερειακά που υλοποιούν τις ίδιες λειτουργίες με αυτές του software, αλλά σε hardware. Η τεχνική αυτή προσφέρει διπλό όφελος : i) η hardware υλοποίηση είναι ταχύτερη, από πλευρά απόδοσης, από την αντίστοιχη software υλοποίηση και ii) ο επεξεργαστής είναι ελεύθερος να εκτελεί άλλες λειτουργίες παράλληλα. Όπως οι προσαρμοζόμενες περιφερειακές συσκευές, έτσι και οι προσαρμοζόμενες εντολές δίνουν την δυνατότητα βελτιστοποίησης της απόδοσης του συστήματος προσθέτοντας στον επεξεργαστή επιπλέον hardware. Η soft core αρχιτεκτονική του Nios II επιτρέπει την ενσωμάτωση πρόσθετης λογικής στην ALU. Οι προσαρμοζόμενες εντολές, όπως και οι μητρικές(native) εντολές, του Nios II δέχονται έως δύο ορίσματα από δύο διαφορετικούς καταχωρητές και αποθηκεύουν το αποτέλεσμα σε ένα τρίτο καταχωρητή. Επίσης, οι εντολές αυτές είναι συναρτήσεις γλώσσας υψηλού επιπέδου (C/C++), εξαλείφοντας έτσι την ανάγκη προγραμματισμού σε γλώσσα μηχανής (assembly language) του επεξεργαστή, που συνήθως απαιτεί περισσότερο χρόνο λόγο της αυξημένης πολυπλοκότητας της. Επειδή η υλοποίηση του επεξεργαστή γίνεται σε επεναπρογραμματιζόμενο FPGA, ο σχεδιασμός τόσο σε hardware όσο και σε software μπορεί να γίνει ταυτόχρονα, σε επαναληπτική βάση ώστε να επιτευχθεί η μέγιστη δυνατή βελτιστοποίηση του συστήματος UP IP Cores και IP Cores Το σύστημα που τελικά υλοποιήθηκε αποτελείται από έναν αριθμό περιφερειακών συσκευών, εκ των οποίων ορισμένα είναι μέρος μιας βιβλιοθήκης περιφερειακών συσκευών με όνομα UP IP Cores, ενώ κάποια άλλα παρέχονται ως μέρος του SOPC Builder. 6

19 Κεφάλαιο 1 Εισαγωγή Τα UP IP Cores Τα UP IP Cores (έκδοση 1) είναι έτοιμα προς χρήση components για τον SOPC Builder και περιλαμβάνουν σχεδόν όλες τις περιφεριακές συσκευές του DE2 Board. Τα cores που χρησιμοποιήθηκαν είναι: Audio Core for Altera DE2 Board Το Audio Core αλληλεπιδρά με τον audio codec (encoder/decoder) της πλακέτας DE2, ο οποίος είναι ο WM8731 της Wolfson Microelectronics. Η αρχικοποίηση του Audio Core επιτυγχάνεται μέσα από τον SOPC Builder (Configuration Wizard). Η ALTERA παρέχει έτοιμες C συναρτήσεις οι οποίες είναι προσβάσιμες μέσω του Hardware Abstraction Layer (HAL) και υλοποιούν βασικές λειτουργίες του Audio Core. Audio/Video Configuration Core for DE2 Boards Το Audio/Video Configuration Core αλληλεπιδρά με τον Audio Codec και τη Video είσοδο του DE2 Board καθώς και με τις 2 Video Daughter Boards: Digital Camera (TRDB_DC2) και TFTLCD Module (TRDB_LCM). Το core αυτό παρέχει έναν εύκολο τρόπο για την παραμετροποίηση / αρχικοποίηση του audio CODEC, της Video εισόδου, της DC2 camera και της TFT LCD Module. Οι αλλαγές των ρυθμίσεων του Audio/Video Configuration Core επιτυγχάνονται μέσα από τον SOPC Builder (Configuration Wizard). Η ALTERA παρέχει έτοιμες C συναρτήσεις οι οποίες είναι προσβάσιμες μέσω του Hardware Abstraction Layer (HAL) και με αυτές επιτυγχάνεται ο προγραμματισμός των ρυθμίσεων των συσκευών αυτών σε software. VGA Core for Altera DE2 Boards Το VGA Core οδηγεί τα απαιτούμενα σήματα από τον VGA ψηφιακό αναλογικό μετατροπέα (DAC) του DE2 Board ο οποίος με τη σειρά του παράγει τα κατάλληλα σήματα για απεικόνιση σε μία VGA συμβατή οθόνη. Το VGA Core υποστηρίζει και εικονοστοιχεία (pixels) και χαρακτήρες, και απλοποιεί σε μεγάλο βαθμό την επικοινωνία με τον VGA DAC, ενώ μπορεί να ενσωματωθεί εύκολα σε ένα σύστημα και να παραμετροποιηθεί μέσω του SOPC Builder. Έτοιμες C συναρτήσεις παρέχονται και για το VGA Core οι οποίες υλοποιούν τις βασικές λειτουργίες ενός VGA Controller. DE Boards External Interface for Altera DE2 Boards Το DE Board External Interface Core διευκολύνει την ανάπτυξη συστήματος στο DE2 Board, αφού παράγει τα κατάλληλα σήματα χρονισμού που είναι αναγκαία για τη λειτουργία του Audio Core, του VGA Core και του SDRAM Controller. Η παραμετροποίηση του Core γίνεται στο περιβάλλον του SOPC Builder. 7

20 Κεφάλαιο 1 Εισαγωγή Character LCD Core for Altera DE2 Board Το Character LCD Core απεικονίζει χαρακτήρες στην οθόνη υγρών κρυστάλλων (LCD) του DE2 Board. Η αρχικοποίηση του Character LCD Core επιτυγχάνεται μέσω του SOPC Builder και παρέχονται C συναρτήσεις που είναι προσβάσιμες μέσω του HAL, οι οποίες υλοποιούν τις βασικές λειτουργίες ενός LCD controller. PIO for Altera DE2 Boards Το PIO (Parallel Input/Output) Core παρέχει τη δυνατότητα μεταφοράς δεδομένων ανάμεσα στον Nios και τις I/O συσκευές (όπως LEDS, switches κτλ). Η μεταφορά αυτή πραγματοποιείται με παράλληλο τρόπο (1 32 bits). Ο αριθμός των bits καθώς και η διεύθυνση της μεταφοράς (Input, Output, Bidirectional) καθορίζονται μέσω του SOPC Builder. SDRAM Controller for Altera DE2 Boards Ο SDRAM Controller επικοινωνεί με το chip SDRAM μνήμης του DE2 Board και παρέχει την κατάλληλη διασύνδεση για τη χρήση της SDRAM μνήμης Τα IP Cores Τα IP Cores που παρέχονται από την ALTERA, εγκαθίστανται μαζί με το Quartus και μπορούν να ενσωματωθούν σε οποιοδήποτε SOPC σύστημα. Τα περισσότερα IP Cores υποστηρίζονται και από τις κατάλληλες software συναρτήσεις για πλήρη εκμετάλλευση των δυνατοτήτων τους από τον επεξεργαστή Nios II. Τα Cores που χρησιμοποιήθηκαν είναι τα εξής: On chip Memory H on chip μνήμη που μπορεί να είναι είτε RAM είτε ROM υλοποιείται στα block μνήμης του FPGA. H οn chip μνήμη, συγκρινόμενη με την off chip μνήμη, έχει πολύ μικρό χρόνο ανάγνωσης/εγγραφής. Επίσης υπάρχει η δυνατότητα αρχικοποίησης κάποιων blocks της on chip μνήμης ώστε να περιέχουν συγκεκριμένα δεδομένα κατά την εκκίνηση (boot) του FPGA. Τέλος, ο SOPC Builder αρχικοποιεί αυτόματα την on chip μνήμη και την ενσωματώνει στο σύστημα απαλείφοντας την ανάγκη χειροκίνητης διασύνδεσης της. JTAG UART Το JTAG UART (Universal Asynchronous Receiver/Transmitter) Core υλοποιεί μια μέθοδο σειριακής επικοινωνίας μεταξύ ενός PC και ενός SOPC συστήματος που 8

21 Κεφάλαιο 1 Εισαγωγή βρίσκεται στο FPGA. Το core υλοποιείται ως μία απλή register mapped διασύνδεση, έτσι τα κυρίως (master) περιφερειακά (όπως ο Nios II επεξεργαστής) επικοινωνούν με το συγκεκριμένο core διαβάζοντας ή γράφοντας σε συγκεκριμένους καταχωρητές (καταχωρητές ελέγχου και καταχωρητές δεδομένων). Timer Core To Timer Core είναι ένας εσωτερικός χρονομέτρης χρονιστής των 32 bit με χαρακτηριστικά όπως έλεγχος εκκίνησης, τερματισμού και επαναφοράς. Παρέχει δύο τρόπους απαρίθμησης: απλή αντίστροφη απαρίθμηση και συνεχής αντίστροφη απαρίθμηση που υλοποιούνται με έναν καταχωρητή περιόδου απαρίθμησης (countdown period register) και πραγματοποιεί λειτουργείες όπως δημιουργία διακοπής (interrupt) και παραγωγή παλμών, όταν η απαρίθμηση φτάσει στο μηδέν. Το Timer Core παρέχεται έτοιμο για χρήση στον SOPC Builder με δυνατότητες παραμετροποίησης. Η ALTERA δίνει C συναρτήσεις οι οποίες είναι προσβάσιμες μέσω του HAL και μέσω αυτών επιτυγχάνεται ο προγραμματισμός του core Το IR Receiver Board και το IR Πληκτρολόγιο Το IR Receiver Board της SLS έχει σχεδιαστεί ώστε να παρέχει ασύρματη επικοινωνία (υπέρυθρη ακτινοβολία Infra Red) με το DE2 Board της ALTERA, ενώ συνδέεται σε αυτό με το ALTERA Standard Santa Cruz Connector. Το board κάνει χρήση τεσσάρων αισθητήρων υπερύθρων ώστε να επικοινωνεί ασύρματα με περιφερειακά όπως πληκτρολόγιο υπερύθρων. Οι βασικές λειτουργίες που πραγματοποιεί είναι η λήψη του υπέρυθρου σήματος από τον πομπό και η αποδιαμόρφωση του, ώστε να παράγει τα επιθυμητα σήματα προς το FPGA. Η SLS παρέχει επίσης το IR Receiver Keyboard IP Core το οποίο μπορεί να ενσωματωθεί σε ένα σύστημα μέσα από το SOPC Builder. Το IR Receiver Board συνοδεύεται από ένα πληκτρολόγιο υπερύθρων. Το πληκτρολόγιο αυτό στέλνει ένα συγκεκριμένο κώδικα των 8 bit για κάθε πλήκτρο που πιέζεται προς τον δέκτη υπερύθρων, ο οποίος αποκωδικοποιείται μέσω του IR Receiver Keyboard IP Core και οδηγείται στον Nios II που εκτελεί κάποια C εφαρμογή. Το πληκτρολόγιο υπερύθρων δεν ακολουθεί το PS/2 πρωτόκολλο. 9

22 Κεφάλαιο 1 Εισαγωγή 1.6. Η Αναπτυξιακή Κάρτα DE2 της ALTERA Η αναπτυξιακή κάρτα DE2 έχει πολλά χαρακτηριστικά που επιτρέπουν στο χρήστη να σχεδιάσει ένα ευρύ φάσμα κυκλωμάτων, από απλά κυκλώματα μέχρι κυκλώματα που υλοποιούν multimedia εφαρμογές. Στην εικόνα 1.2 απεικονίζεται η βασική διάταξη της κάρτας καθώς και τα κύρια περιφερειακά της. Εικόνα 1.2 : Η αναπτυξιακή κάρτα DE2 της ALTERA Η κάρτα DE2 περιλαμβάνει : Το FPGA Cyclone ΙΙ 2C35 της Altera, το οποίο έχει i) 33,216 Λογικά Στοιχεία (Logic Elements), ii) 105 M4K RAM στοιχεία, iii) 483,840 συνολικά RAM bits, iv) 35 ενσωματωμένους πολλαπλασιαστές, v) 4 PLLs (Phase Locked Loops) και 475 ακίδες (pins) εισόδου/εξόδου. Τη συσκευή σειριακής μορφοποίησης EPCS16 της Altera. Το USB Blaster Port (on board) για προγραμματισμό της. Υποστηρίζονται JTAG και active serial (AS) τύποι προγραμματισμού. SRAM μνήμη των 512 Kbyte, οργανωμένη σε τομείς 256K x 16 bits. SDRAM μνήμη των 8 Mbyte, οργανωμένη ως 1M x 16 bits x 4 banks. Flash μνήμη (NOR) των 4 Mbyte με δίαυλο δεδομένων των 8 bit. 10

23 Κεφάλαιο 1 Εισαγωγή Υποδοχή καρτών SD, που είναι προσβάσιμη ως εξωτερική μνήμη για τον Nios II επεξεργαστή μέσω του προγράμματος οδήγησης για κάρτες SD που παρέχεται από το DE2. Τέσσερις διακόπτες πλήκτρα (push buttons) που ενεργοποιούνται από ένα κύκλωμα Schmitt σκανδαλιστή. Συνήθως βρίσκονται στην υψηλή στάθμη, ενώ παράγουν έναν χαμηλό παλμό όταν πιέζονται. Δεκαοχτώ διακόπτες δύο θέσεων (Up/Down) που χρησιμοποιούνται σαν είσοδοι. Ένας διακόπτης παράγει το λογικό 0 όταν είναι στη θέση Down και το λογικό 1 όταν είναι στη θέση Up. Δύο κρυστάλλους, ο ένας στα 50 MHz και ο άλλος στα 27 MHz όπου χρησιμοποιούνται ως ρολόγια χρονισμού. Διαθέτει επίσης και έναν SMA συνδετήρα ο οποίος μπορεί να χρησιμοποιηθεί προκειμένου να συνδεθεί μια εξωτερική πηγή ρολογιού στην πλακέτα. Έναν Audio CODEC (Wolfson WM8731) των 24 bit, με συχνότητα δειγματοληψίας από 8KHz έως και 96 KHz, με γραμμή εισόδου, γραμμή εξόδου (line in, line out) και είσοδο μικροφώνου (mic in) που ελέγχεται με πρόσβαση στους καταχωρητές του μέσω του I 2 C πρωτόκολλου επικοινωνίας. Ένα VGA video ψηφιακό αναλογικό μετατροπέα (ADV7123της Analog Devices), υψηλής ταχύτητας, 10 ψηφίων, που υποστηρίζει ανάλυση έως και pixels στα 100 ΜHz, και χρησιμοποιείται για την παραγωγή των αναλογικών σημάτων δεδομένων (κόκκινο, πράσινο και μπλε). Τα απαραίτητα σήματα χρονισμού για το VGA έρχονται απευθείας από το FPGA. Μία οθόνη LCD που μπορεί να χρησιμοποιηθεί προκειμένου να επιδείξει κείμενο στέλνοντας κατάλληλες εντολές στον LCD ελεγκτή (HD44780). Ένα Αποκωδικοποιητή TV (NTSC/PAL) με TV είσοδο (ADV7181). Πρόκειται για έναν αποκωδικοποιητή video που ανιχνεύει αυτόματα και μετατρέπει ένα αναλογικό σήμα βασικής ζώνης (NTSC, PAL και SECAM) σε 4:2:2 δεδομένα video και χρονίζεται από έναν ταλαντωτή 27 MHz. Το ολοκληρωμένο ADV7181 είναι συμβατό με ένα ευρύ φάσμα video συσκευών, όπως DVD player και άλλες. Οι καταχωρητές στον αποκωδικοποιητή TV μπορούν να προγραμματιστούν μέσω σειριακού I 2 C διαύλου, ο οποίος είναι συνδεδεμένος στο FPGA. Ένα 10/100 Ethernet ελεγκτή (DM9000A) με μια SRAM 16Kbytes, μια μονάδα για έλεγχο μέσου προσπέλασης (Medium Access Control MAC ) και έναν 10/100Μ PHY πομποδέκτη. Υποστηρίζει 100Base T και 10Base T εφαρμογές, λειτουργία αμφίδρομης 11

24 Κεφάλαιο 1 Εισαγωγή επικοινωνίας με ρυθμούς μετάδοσης 10 Mb/s και 100 Mb/s, IP/TCP/UDP δημιουργία και έλεγχο checksum και είναι πλήρως συμβατός με τις IEEE 802.3u προδιαγραφές. Ένα USB ελεγκτής κύριας / δευτερεύουσας συσκευής (Host/Slave device) με USB διασύνδεση τύπου Α και τύπου Β. Είναι πλήρως συμβατό με το Universal Serial Bus Specification Rev. 2.0, υποστηρίζει μεταφορά δεδομένων τόσο σε υψηλή όσο και σε χαμηλή ταχύτητα καθώς και προγραμματιζόμενες λειτουργίες εισόδου/εξόδου (PIO:Programmed I/O) καθώς και απευθείας προσπέλαση μνήμης (DMA). Ένα RS 232 πομποδέκτη 9 ακίδων. Διασύνδεση ποντικιού/πληκτρολογίου τύπου PS/2. Έναν kb/s Πομποδέκτη υπέρυθρων (IrDA). Δεκαοχτώ κόκκινα LEDs και εννέα πράσινα LEDs. Κάθε LED οδηγείται απευθείας από μια ακίδα του Cyclone II FPGA. Όταν η ακίδα βρίσκεται σε υψηλή λογική στάθμη το LED είναι αναμμένο, ενώ όταν βρίσκεται σε χαμηλή λογική στάθμη το LED σβήνει. Δύο κεφαλές επέκτασης (expansion headers) ογδόντα ακίδων συνολικά. Οι κεφαλές είναι σχεδιασμένες για να δέχονται IDE καλωδιοταινία 40 ακίδων. Εκτός από τα hardware χαρακτηριστικά, η κάρτα DE2 διαθέτει την απαραίτητη υποστήριξη λογισμικού για τις τυπικές διασυνδέσεις εισόδου/εξόδου καθώς και δυνατότητα ελέγχου (control panel) των διάφορων hardware μερών της. Στην εικόνα 1.3 παρατίθεται το δομικό διάγραμμα της DE2 πλακέτας. Προς μέγιστη διευκόλυνση, όλες οι συνδέσεις πραγματοποιούνται μέσω της συσκευής FPGA Cyclone II. 12

25 Κεφάλαιο 1 Εισαγωγή Εικόνα 1.3 :Το δομικό διάγραμμα της κάρτας DE2 της ALTERA 1.7. To Περιβάλλον Aνάπτυξης Quartus και το Nios II IDE Τα τελευταία χρόνια παρατηρείται αξιοσημείωτη αύξηση της πυκνότητας των FPGAs, όπως επίσης και αντίστοιχη αύξηση στην πολυπλοκότητα των συστημάτων που σχεδιάζονται. Για την υλοποίηση μιας εφαρμογής σε HDL (VHDL ή Verilog) είναι απαραίτητη η χρήση ενός προγραμματιστικού σχεδιαστικού (CAD) περιβάλλοντος με το οποίο διεκπεραιώνονται ορισμένες εργασίες, όπως η σχεδίαση του συστήματος σε κάποια μορφή (σχηματική ή περιγραφική), η εύρεση και διόρθωση σφαλμάτων, η συμβολομετάφραση (compilation) και συναρμολόγηση (assembling) του συστήματος, η εξομοίωση λειτουργίας του, ο προγραμματισμός του FPGA και άλλες Το Quartus II της ALTERA Το Quartus II της ALTERA παρέχει ένα ολοκληρωμένο, πολυμορφικό περιβάλλον σχεδίασης, το οποίο εύκολα προσαρμόζεται στις εκάστοτε σχεδιαστικές ανάγκες. Υποστηρίζει επίσης και την SOPC σχεδίαση συστημάτων και παρέχει πληροφορίες για όλα τα στάδια υλοποίησης του συστήματος. Στην εικόνα 1.4 παρουσιάζεται η ροή σχεδίασης στο Quartus II. Κάποιες βασικές προσφερόμενες λειτουργίες είναι οι εξής : 13

26 Κεφάλαιο 1 Εισαγωγή Σχεδίαση του συστήματος κυκλώματος με τη βοήθεια ενός σχεδιαστικού εργαλείου ηλεκτρονικών κυκλωμάτων (Electronic design editor), Περιγραφή του συστήματος κυκλώματος σε κάποια γλώσσα HDL (Hardware Description Language), Τοποθέτηση του ηλεκτρονικού κυκλώματος σε προκαθορισμένα από το χρήστη λογικά κελιά στο FPGA, με τη βοήθεια του floorplan editor, Εξομοίωση του κυκλώματος για την ορθή λειτουργία του με απλή σχεδίαση των κυματομορφών εισόδου/εξόδου, Χρονική ανάλυση του κυκλώματος, Παραγωγή των απαραίτητων αρχείων (.sof,.pof) για τον προγραμματισμό της συσκευής. Όπως αναφέρθηκε ήδη, το Quartus παρέχει τη δυνατότητα της SOPC σχεδίασης μέσω του SOPC Builder. Ο SOPC Builder είναι ένα εργαλείο ανάπτυξης συστημάτων, που περιλαμβάνουν επεξεργαστές, όπως ο Nios II, περιφεριακά και μνήμες, ενώ δίνει την ευκαιρία να καθοριστεί και να παραχθεί ένα ολοκληρωμένο SOPC σύστημα σε πολύ λιγότερο χρόνο από αυτόν που απαιτείται από τις παραδοσιακές μεθόδους σχεδίασης. Ο SOPC Builder αυτοματοποιεί τη διαδικασία της ενσωμάτωσης διαφόρων hardware συσκευών (components) σε ένα μεγαλύτερο σύστημα, αφού μέσω ενός GUI (Graphical User Interface) επιλέγονται τα αντίστοιχα components και παράγεται αυτόματα η λογική δομή εσωτερικής διασύνδεσης τους (system interconnect fabric), απαλείφοντας έτσι την ανάγκη συγγραφής ενός Top Level HDL αρχείου που θα ένωνε τα components μεταξύ τους. Μετά τη διαδικασία προσδιορισμού του συστήματος o SOPC Builder παράγει όλα τα απαραίτητα HDL (VHDL ή Verilog) αρχεία που περιγράφουν το σύστημα. Παρέχεται επίσης η δυνατότητα ανάπτυξης νέων components με σκοπό την ενσωμάτωσή τους σε κάποιο σύστημα. 14

27 Κεφάλαιο 1 Εισαγωγή Εικόνα 1.4 : Ροή σχεδίασης στο Quartus II Τα components του SOPC Builder χρησιμοποιούν τις Avalon δομές διασύνδεσης (Avalon interfaces) για την φυσική διασύνδεσή τους. Υπάρχουν δύο διαφορετικές Avalon δομές διασύνδεσης: Το Avalon Memory Mapped (Avalon MM) interface, το οποίο χρησιμοποιεί ένα address mapped read/write πρωτόκολλο που επιτρέπει την διασύνδεση των κυρίων (master) components σε δευτερεύοντα (slave) components ανάγνωσης/εγγραφής Το Avalon Streaming (Avalon ST) interface, το οποίο είναι ένα υψηλής ταχύτητας σύστημα διασύνδεσης, που επιτρέπει τις σημείο προς σημείο συνδέσεις μεταξύ components που στέλνουν και λαμβάνουν δεδομένα. Τα components του SOPC Builder μπορούν να χρησιμοποιούν την μία ή και της δύο Avalon δομές διασύνδεσης Το NIOS II IDE της ALTERA Το Nios II IDE (Integrated Development Environment) είναι το γραφικό περιβάλλον ανάπτυξης software για την οικογένεια των Nios ΙΙ επεξεργαστών. Το Nios II IDE διεκπεραιώνει όλες τις αναγκαίες λειτουργίες ανάπτυξης προγραμμάτων όπως συγγραφή, αποσφαλμάτωση, συμβολομετάφραση, εκτέλεση προγραμμάτων και άλλες. Δίνει επίσης τη δυνατότητα δημιουργίας τόσο απλών προγραμμάτων όσο και πολύπλοκων εφαρμογών που βασίζονται σε λειτουργικά συστήματα πραγματικού χρόνου (Real Time Operating Systems) που παρέχονται από την ALTERA ή από άλλες εταιρίες. Για την αποσφαλμάτωση 15

28 Κεφάλαιο 1 Εισαγωγή (debugging) παρέχονται βασικές αλλά και προηγμένες επιλογές ελέγχου της διαδικασίας. Μετά από την επιτυχή δημιουργία (build) της εφαρμογής, το Nios II IDE παράγει τα εκτελέσιμα αρχεία (.elf) που θα εκτελεστούν στον NIOS II. Στην εικόνα 1.5 παρουσιάζεται το ολικό (hardware/software) διάγραμμα ροής της ανάπτυξης ενός Nios II συστήματος. Εικόνα 1.5 : Διάγραμμα ροής της ανάπτυξης ενός Nios II συστήματος 16

29 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Κεφάλαιο 2 Ο Επεξεργαστής Nios II Η Nios II αρχιτεκτονική περιγράφει ουσιαστικά ένα σετ εντολών (Instruction Set Architecture ISA). Η ISA υπονοεί την ύπαρξη λειτουργικών μονάδων στις οποίες υλοποιούνται οι εντολές. Στην εικόνα 2.1 παρουσιάζεται το block διάγραμμα του core του Nios II επεξεργαστή. Εικόνα 2.1 : Το block διάγραμμα του core του Nios II Οι λειτουργικές μονάδες του Nios II, αποτελούν τη βάση του σετ εντολών του Nios II, ωστόσο αυτό δεν υποδεικνύει ότι οι μονάδες αυτές έχουν υλοποιηθεί σε hardware. Όπως αναφέρθηκε προηγουμένως, η αρχιτεκτονική του Nios II περιγράφει ένα σετ εντολών και όχι κάποια συγκεκριμένη υλοποίηση hardware. Μία λειτουργική μονάδα μπορεί είτε να υλοποιηθεί σε hardware, είτε να εξομοιωθεί σε software ή και να παραβλεφθεί εντελώς. Η υλοποίηση του Nios II πραγματοποιείται μέσω ενός συνόλου επιλογών αρχιτεκτονικής (διαφορετικά Nios II cores) που εξυπηρετούν συγκεκριμένες προδιαγραφές, όπως μικρό μέγεθος του core ή υψηλή απόδοση, κάτι το οποίο επιτρέπει στον Nios II να προσαρμόζεται 17

30 Κεφάλαιο 2 Ο Επεξεργαστής Nios II στις διαφορετικές ανάγκες διαφορετικών εφαρμογών. Οι λειτουργικές μονάδες του Nios II είναι: Αρχείο καταχωρητών (register file) Αριθμητική και λογική μονάδα (arithmetic logic unit) Δίαυλος εντολών (instruction bus) Δίαυλος δεδομένων (data bus) Ελεγκτής εξαιρέσεων (exception controller) Ελεγκτής διακοπών (interrupt controller) Κρυφές μνήμες δεδομένων και εντολών (instruction data cache memories) Διασύνδεση με λογική προσδιοριζόμενη από το χρήστη (custom instruction logic) Μονάδα αποσφαλμάτωσης JTAG (JTAG debug module) Επιπλέον στενά συνδεδεμένη με το σύστημα μνήμη για εντολές και δεδομένα (tightly coupled memory) Οι μεταβλητές υλοποίησης, σε γενικές γραμμές, ανήκουν σε μία εκ των τριών κατηγοριών: Αύξηση ή ελάττωση ενός χαρακτηριστικού (more or less of a feature) πχ, για βελτίωση της απόδοσης, το μέγεθος της κρυφής μνήμης εντολών μπορεί να αυξηθεί ή να μειωθεί. Μία κρυφή μνήμη μεγάλου μεγέθους, αυξάνει την ταχύτητα εκτέλεσης μεγάλων προγραμμάτων, ενώ μία αντίστοιχη μικρού μεγέθους διατηρεί τους πόρους της on chip μνήμης. Συμπερίληψη ή αποκλεισμός ενός χαρακτηριστικού (inclusion or exclusion of a feature) πχ, για τη μείωση του κόστους, η μονάδα αποσφαλμάτωσης JTAG μπορεί να παραλειφθεί. Η απόφαση αυτή δεν σπαταλάει on chip λογική και μνήμη, εξαλείφει όμως τη δυνατότητα χρήσης ενός software debugger για αποσφαλμάτωση εφαρμογών. Hardware υλοποίηση ή software υλοποίηση πχ, σε εφαρμογές ελέγχου όπου σπάνια το σύστημα εκτελεί πολύπλοκες αριθμητικές πράξεις, η εντολή της διαίρεσης μπορεί να επιλεγεί να εξομοιωθεί σε software. Η αφαίρεση του hardware διαίρεσης, διατηρεί μεν on chip πόρους, αυξάνει όμως τον χρόνο εκτέλεσης διαιρέσεων. 18

31 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Η ALTERA διαθέτει τρία Nios II cores: Nios II/f Το Nios II/f fast core είναι σχεδιασμένο για μέγιστη απόδοση. Ως αποτέλεσμα, το core παρουσιάζει τις περισσότερες ρυθμίσεις παραμέτρων για το σκοπό αυτό. Nios II/s Το Nios II/s standard core έχει σχεδιαστεί για μικρό μέγεθος, διατηρώντας παράλληλα την απόδοση σε ικανοποιητικά επίπεδα. Nios II/e Το Nios II/e economy core έχει σχεδιαστεί ώστε να έχει το μικρότερο δυνατό μέγεθος, με αποτέλεσμα, το core αυτό να έχει περιορισμένο σετ χαρακτηριστικών, ενώ πολλές ρυθμίσεις δεν είναι διαθέσιμες. Πρέπει να σημειωθεί ότι το core του Nios II δεν περιλαμβάνει τη λογική σύνδεσης του επεξεργαστή με τις όποιες περιφερειακές εξωτερικές συσκευές Αρχείο καταχωρητών (register file) Η Nios II αρχιτεκτονική υποστηρίζει ένα αρχείο καταχωρητών που αποτελείται από 32 γενικού σκοπού καταχωρητές των 32 bit και μέχρι 32 καταχωρητές ελέγχου των 32 bit Καταχωρητές γενικού σκοπού Οι καταχωρητές γενικού σκοπού είναι ακέραιοι καταχωρητές των 32 bit (r0 έως r31) όπως φαίνεται στον πίνακα 2.1. Καταχωρητής Όνομα Λειτουργία Καταχωρητής Όνομα Λειτουργία r0 zero 0x r16 r1 at Assembler Temporary r17 r2 Return Value r18 r3 Return Value r19 r4 Register Arguments r20 r5 Register Arguments r21 r6 Register Arguments r22 r7 Register Arguments r23 r8 Caller Saved Register r24 et Exception Temporary r9 Caller Saved Register r25 bt Breakpoint Temporary (1) 19

32 Κεφάλαιο 2 Ο Επεξεργαστής Nios II r10 r11 r12 r13 r14 r15 Caller Saved Register Caller Saved Register Caller Saved Register Caller Saved Register Caller Saved Register Caller Saved Register r26 gp Global Pointer r27 sp Stack Pointer r28 fp Frame Pointer r29 ea Exception Return Address r30 ba Breakpoint Return Address (1) r31 ra Return Address (1) Ο καταχωρητής αυτός χρησιμοποιείται αποκλειστικά από την μονάδα αποσφαλμάτωσης JTAG Πίνακας 2.1 : Οι καταχωρητές γενικού σκοπού του Nios II Ο καταχωρητής zero (r0) πάντα επιστρέφει την τιμή μηδέν ενώ η εγγραφή ενός μηδενικού σε αυτόν τον καταχωρητή δεν έχει καμία επίδραση. Ο καταχωρητής ra (r31) διατηρεί τη διεύθυνση επιστροφής μετά από κλήση κάποιας υπό ρουτίνας και είναι προσβάσιμος αποκλειστικά μέσα από call και ret εντολές Καταχωρητές ελέγχου Οι καταχωρητές ελέγχου, που παρουσιάζονται στον πίνακα 2.2, αναφέρουν την κατάσταση του επεξεργαστή και μπορούν να αλλάξουν τη συμπεριφορά του. Καταχωρητής Όνομα status Reserved PIE 1 estatus Reserved EPIE 2 bstatus Reserved EPIE 3 ipending Interrupt enable Bits 4 ienable Pending interrupt bits 5 cpuid Unique processor identifier 6 31 Reserved Reserved Πίνακας 2.2 : Οι καταχωρητές ελέγχου του Nios II Οι καταχωρητές ελέγχου προσπελαύνονται με ειδικές εντολές ανάγνωσης και εγγραφής status register Η τιμή στον καταχωρητή status ελέγχει την κατάσταση του Nios II επεξεργαστή. Όλα τα bits του καταχωρητή μηδενίζονται κατά την επανεκκίνηση του επεξεργαστή. Μερικά bits 20

33 Κεφάλαιο 2 Ο Επεξεργαστής Nios II χρησιμοποιούνται αποκλειστικά και είναι διαθέσιμα σε συγκεκριμένα χαρακτηριστικά του επεξεργαστή. Bit Περιγραφή Πρόσβαση Reset Διαθεσιμότητα PIE To PIE είναι το bit ενεργοποίησης διακοπών του επεξεργαστή. Όταν το PIE είναι στο λογικό 0, οι όποιες διακοπές αγνοούνται. Όταν το PIE είναι στο λογικό 1, οι διακοπές εξυπηρετούνται ανάλογα με την τιμή του καταχωρητή ienable Πίνακας 2.3 : O καταχωρητής status Ανάγνωση / Εγγραφή 0 Πάντα estatus register Ο καταχωρητής estatus διατηρεί ένα αντίγραφο του καταχωρητή status κατά τη διάρκεια επεξεργασίας μιας εξαίρεσης (όχι break εξαίρεσης). Ο χειριστής εξαιρέσεων (exception handler) εξετάζει τον καταχωρητή estatus για να προσδιορίσει την κατάσταση του επεξεργαστή πριν την εμφάνιση της εξαίρεσης. Όταν γίνεται η επιστροφή από μία εξαίρεση, η εντολή eret αντιγράφει το περιεχόμενο του estatus πίσω στον status καταχωρητή, επαναφέροντας έτσι την αρχική τιμή του. bstatus register Ο bstatus καταχωρητής διατηρεί ένα αντίγραφο του καταχωρητή status κατά τη διάρκεια επεξεργασίας μιας break εξαίρεσης. Όταν δημιουργείται ένα break, η τιμή του status καταχωρητή αντιγράφεται στον bstatus. Ο debugger, κάνοντας χρήση του bstatus μπορεί να επαναφέρει τον καταχωρητή status στην τιμή που είχε πριν την εμφάνιση του break. Η bret εντολή, αντιγράφει την τιμή του bstatus στον status καταχωρητή. ipending register Η τιμή στον ipending καταχωρητή υποδεικνύει τη διακοπή που εισάγεται στον επεξεργαστή. Η τιμή 1 στο bit n σημαίνει ότι η αντίστοιχη IRQn διακοπή εκκρεμεί, ενώ η εγγραφή κάποιας τιμής στον ipending δεν έχει καμιά επίδραση. ienable register Ο ienable καταχωρητής χειρίζεται τις διακοπές από εξωτερικές συσκευές. Κάθε bit του ienable καταχωρητή, αντιστοιχεί σε μία από τις εισόδους διακοπών, IRQ0 έως IRQ31. Η τιμή 1 στο bit n σημαίνει ότι η αντίστοιχη IRQn διακοπή έχει ενεργοποιηθεί, ενώ η τιμή 0 σημαίνει ότι η αντίστοιχη διακοπή έχει απενεργοποιηθεί. 21

34 Κεφάλαιο 2 Ο Επεξεργαστής Nios II cpuid register Ο cupid καταχωρητής διατηρεί μία συνεχή τιμή η οποία υποδεικνύει με μοναδικό τρόπο κάθε επεξεργαστή σε ένα σύστημα πολλών επεξεργαστών. Η τιμή του καθορίζεται κατά την παραγωγή του συστήματος ενώ η εγγραφή κάποιας τιμής στον cupid δεν έχει καμιά επίδραση Αριθμητική και λογική μονάδα (arithmetic logic unit) Η αριθμητική και λογική μονάδα (ALU) του Nios II λειτουργεί με δεδομένα αποθηκευμένα στους καταχωρητές γενικού σκοπού. Οι διεργασίες που εκτελούνται στην ALU λαμβάνουν ως ορίσματα τις τιμές ενός ή δύο καταχωρητών και αποθηκεύουν το αποτέλεσμα σε ένα τρίτο. Η ALU υποστηρίζει: i) αριθμητικές πράξεις όπως πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση προσημασμένων και μη προσημασμένων τελεστών, ii) σχεσιακές πράξεις όπως ίσο, άνισο, μεγαλύτερο ή ίσο από, μικρότερο από (==,!=, >=, <) μεταξύ προσημασμένων και μη προσημασμένων τελεστών, iii) λογικές πράξεις όπως AND, NOR, OR, XOR και iv) πράξεις ολίσθησης και περιστροφής δεδομένων από 0 έως 31 θέσεις bit ανά εντολή. Η ALU υποστηρίζει αριθμητικές ολισθήσεις προς τη δεξιά κατεύθυνση και λογικές ολισθήσεις προς τη δεξιά/ αριστερή. Για την υλοποίηση οποιασδήποτε άλλης λειτουργίας εκτελείται ένας συνδυασμός των παραπάνω βασικών διεργασιών Μη Υλοποιημένες Εντολές Μερικές υλοποιήσεις του Nios II επεξεργαστή δεν παρέχουν το απαραίτητο hardware για την εκτέλεση πράξεων πολλαπλασιασμού ή διαίρεσης. Οι εντολές mul, muli, mulxxs, mulxsu, mulxuu, div, divu δεν εμφανίζονται σε καμία υλοποίηση του Nios II core και είναι γνωστές ως μη υλοποιημένες εντολές. Όλες οι υπόλοιπες εντολές υλοποιούνται σε hardware. Ο επεξεργαστής παράγει μία εξαίρεση όταν συναντά μία μη υλοποιημένη εντολή και ο χειριστής εξαιρέσεων καλεί την κατάλληλη υπό ρουτίνα εξομοίωσης της εντολής. Συνεπώς, οι μη υλοποιημένες εντολές δεν επηρεάζουν την όποια προγραμματιστική τεχνική. Η αρχιτεκτονική του Nios II υποστηρίζει εντολές προσδιοριζόμενες από το χρήστη. Η ALU του Nios ΙΙ συνδέεται απευθείας στην αντίστοιχη λογική υλοποιώντας σε hardware λειτουργίες που χρησιμοποιούνται ακριβώς όπως οι μητρικές (native) εντολές. 22

35 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Εντολές Κινητής Υποδιαστολής Η Nios II αρχιτεκτονική υποστηρίζει επίσης εντολές κινητής υποδιαστολής (floating point) απλής ακρίβειας, όπως προσδιορίζονται στο IEEE Std Αυτές οι floating point εντολές υλοποιούνται με τη λογική των προσδιοριζόμενων από το χρήστη εντολών και παρουσιάζονται στον πίνακα 2.4. Χαρακτηριστικό Υλοποίηση Πρόσθεση Υλοποιημένη Πράξεις (1) Αφαίρεση Υλοποιημένη Πολλαπλασιασμός Υλοποιημένη Διαίρεση Προαιρετική Απλή Υλοποιημένη Ακρίβεια Διπλή Μη υλοποιημένη. Οι πράξεις διπλής ακριβείας υλοποιούνται σε software Μη έγκυρη πράξη Το αποτέλεσμα δεν είναι αριθμός (NaN) Διαίρεση με το μηδέν Το αποτέλεσμα είναι ± Καταστάσεις Υπερχείληση Το αποτέλεσμα είναι ± Εξαίρεσης Inexact Το αποτέλεσμα είναι κανονικός αριθμός Υποχείληση Το αποτέλεσμα είναι ± 0 Στρογγυλοποίηση στον Υλοποιημένη κοντινότερο Στρογγυλοποίηση προς το Μη υλοποιημένη Τύποι Στρογγυλοποίησης μηδέν Στρογγυλοποίηση προς το Μη υλοποιημένη + Στρογγυλοποίηση προς το Μη υλοποιημένη NaN Quiet Υλοποιημένη Signaling Μη υλοποιημένη Αριθμοί εκτός ορίων Οι αριθμοί κάτω του ορίου μεταχειρίζονται ως μηδέν Software Εξαιρέσεις Μη υλοποιημένες Σημαία Κατάστασης Μη υλοποιημένη (1) Το Nios II IDE υλοποιεί σε software floating point λειτουργίες (μετατροπές και συγκρίσεις), εκτός των πράξεων της πρόσθεσης, της αφαίρεσης, του πολλαπλασιασμού και της διαίρεσης. Πίνακας 2.4 : Hardware Προδιαγραφές συμβατές με το IEEE Floating Point 2.3. Σήματα επαναφοράς (reset signals) Ο Nios II επεξεργαστής υποστηρίζει δύο σήματα επαναφοράς: i) reset είναι το καθολικό σήμα hardware επαναφοράς που υποχρεώνει τον επεξεργαστή σε άμεση επανεκκίνηση και 23

36 Κεφάλαιο 2 Ο Επεξεργαστής Nios II ii) cpu_reset request αυτό είναι ένα τοπικό σήμα επαναφοράς που προκαλεί την επανεκκίνηση του επεξεργαστή χωρίς όμως να επηρεάζει τα άλλα components του Nios II συστήματος. Ο επεξεργαστής ολοκληρώνει την εκτέλεση οποιασδήποτε εντολής είναι μέσα στο pipeline και μετά εισέρχεται σε κατάσταση επαναφοράς. Η διαδικασία αυτή μπορεί να καταναλώσει αρκετούς κύκλους ρολογιού. Όταν ολοκληρωθεί η επαναφορά του επεξεργαστή τότε αυτός θέτει το σήμα cpu_resettaken για έναν κύκλο ρολογιού και έπειτα ανά περιοδικά χρονικά διατήματα, εάν το σήμα cpu_resetrequest παραμένει στο λογικό 1. Ενώ ο επεξεργαστής βρίσκεται σε κατάσταση επαναφοράς, διαβάζει περιοδικά τη διεύθυνση επαναφοράς, απορρίπτει το αποτέλεσμα της ανάγνωσης και παραμένει στην ίδια κατάσταση. Ο επεξεργαστής δεν ανταποκρίνεται στο cpu_resetrequest όταν είναι κάτω από τον έλεγχο της μονάδας αποσφαλμάτωσης JTAG, δηλαδή όταν είναι σε κατάσταση παύσης Ελεγκτής εξαιρέσεων και διακοπών Μία εξαίρεση είναι οποιαδήποτε κατάσταση ή σήμα (hardware ή software) διακόπτει την κανονική ροή εκτέλεσης του κυρίως προγράμματος εφαρμογής. Έτσι, η εξυπηρέτηση μια εξαίρεσης είναι ουσιαστικά η ανταπόκριση του επεξεργαστή στη συγκεκριμένη εξαίρεση και η επαναφορά έπειτα, στην αρχική κατάσταση εκτέλεσης προγράμματος. Ο ελεγκτής / διαχειριστής εξαιρέσεων είναι ένα ολοκληρωμένο σύστημα από software ρουτίνες οι οποίες εξυπηρετούν οποιαδήποτε εξαίρεση και δίνουν τον έλεγχο σε συγκεκριμένες ρουτίνες εξυπηρέτησης διακοπών (Interrupt Service Routines ISRs) όπου είναι αναγκαίο. Κάθε εξαίρεση σε ένα Nios II σύστημα ανήκει σε μία εκ των παρακάτω κατηγοριών: Reset Εξαιρέσεις Break Εξαιρέσεις Hardware Διακοπές (hardware interrupts) Εξαιρέσεις Σχετικές με Εντολές Η εξυπηρέτηση εξαιρέσεων στον Nios II υλοποιείται με την κλασική RISC λογική, δηλαδή όλοι οι τύποι εξαιρέσεων εξυπηρετούνται από ένα γενικό διαχειριστή εξαιρέσεων. Έτσι οι εξαιρέσεις αυτές (hardware και software) διαχειρίζονται από software κώδικα που βρίσκεται σε μία συγκεκριμένη διεύθυνση μνήμης γνωστή ως διεύθυνση εξαίρεσης (exception address). 24

37 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Reset Εξαιρέσεις Όταν δημιουργείται ένα σήμα επαναφοράς (reset) ο Nios II εκτελεί συγκεκριμένες εργασίες όπως o μηδενισμός του status καταχωρητή που σκοπό έχει την απενεργοποίηση των hardware διακοπών. Εκτός αυτού όμως, τα περιεχόμενα της cache μνήμης μετά το reset είναι σε μία απροσδιόριστη κατάσταση. Για την εξασφάλιση της συνοχής των δεδομένων στην cache μνήμη, ο διαχειριστής reset (reset handler) πρέπει να αρχικοποιήσει άμεσα την cache μνήμη μετά το reset. Η κατάσταση επαναφοράς δεν επηρεάζει τα υπόλοιπα components του συστήματος συμπεριλαμβανομένων των καταχωρητών γενικού σκοπού (εκτός των zero καταχωρητή που είναι μόνιμα μηδενισμένος), των καταχωρητών ελέγχου (εκτός του status καταχωρητή που αρχικοποιείται στο 0x00 ), μνημών δεδομένων και εντολών, περιφεριακών συσκευών και άλλων Break Εξαιρέσεις Ένα break είναι μια μεταφορά ελέγχου εκτός της κανονικής ροής εκτέλεσης του προγράμματος/εφαρμογής με σκοπό την αποσφαλμάτωση του. Το software αποσφαλμάτωσης (Nios II IDE) αποκτά τον έλεγχο του επεξεργαστή μέσω του JTAG και υλοποιεί τη διαδικασία αποσφαλμάτωσης (με breakpoints και watchpoints). Ο μηχανισμός των break εξαιρέσεων είναι ανεξάρτητος από το γενικό μηχανισμό εξυπηρέτησης εξαιρέσεων. Ο επεξεργαστής εισάγεται σε κατάσταση εξυπηρέτησης break εξαίρεσης είτε όταν εκτελεστεί η εντολή break (software break), είτε όταν η JTAG μονάδα δημιουργήσει ένα hardware break. Και στις δύο αυτές περιπτώσεις ο επεξεργαστής: i. αποθηκεύει τα περιεχόμενα του status καταχωρητή στον bstatus, ii. μηδενίζει το PIE bit από τον status καταχωρητή απενεργοποιώντας έτσι τις hardware διακοπές, iii. γράφει τη διεύθυνση της εντολής που υπάρχει μετά το break στον ba (r30) καταχωρητή και iv. μεταφέρει την εκτέλεση στο διαχειριστή break εξαιρέσεων, που είναι αποθηκευμένος στο break vector (διεύθυνση ορισμένη κατά την παραγωγή του συστήματος). Μετά την εξυπηρέτηση της break εξαίρεσης, ο διαχειριστής break εξαιρέσεων απελευθερώνει τον έλεγχο του επεξεργαστή εκτελώντας μία bret εντολή η οποία 25

38 Κεφάλαιο 2 Ο Επεξεργαστής Nios II επαναφέρει το περιεχόμενο του status καταχωρητή από τον bstatus καταχωρητή και επιστέφει την εκτέλεση του προγράμματος στη θέση μνήμης που υπάρχει στον ba (r30) καταχωρητή Ηardware Διακοπές Μία περιφερειακή συσκευή μπορεί να προκαλέσει ένα αίτημα hardware διακοπής (Interrupt Requests IRQs), θέτοντας μία από τις 32 εισόδους διακοπών (IRQ0 έως IRQ31) του Nios II. Μία hardware διακοπή συμβαίνει μόνο όταν : Το PIE bit του status καταχωρητή είναι στο λογικό 1 Έχει δημιουργηθεί η κατάλληλη αίτηση διακοπής IRQn Το αντίστοιχο n bit του inable καταχωρητή είναι και αυτό στο λογικό 1 Όταν συμβεί μια διακοπή ο επεξεργαστής εκτελεί μια σειρά εργασιών παρόμοιες με αυτές της break εξαίρεσης : i. αντιγράφει τα περιεχόμενα του status καταχωρητή στον estatus, αποθηκεύοντας την προ διακοπής κατάσταση του. ii. μηδενίζει το PIE bit από τον status καταχωρητή απενεργοποιώντας έτσι τις hardware διακοπές, iii. iv. γράφει τη διεύθυνση της εντολής που υπάρχει μετά την διακοπή στον ea (r29) καταχωρητή μεταφέρει την εκτέλεση στο διαχειριστή διακοπών, ο οποίος εξετάζει όλες τις καταχωρημένες (από τον χρήστη) IRQs σε εκκρεμότητα και βρίσκει την πρώτη ενεργοποιημένη IRQ με την υψηλότερη προτεραιότητα. Έπειτα καλεί την αντίστοιχη καταχωρημένη ρουτίνα εξυπηρέτησης διακοπής (Interrupt Service Routine ISR). Μετά την εκτέλεση της συγκεκριμένης ISR ο χειριστής εξαιρέσεων σαρώνει ξανά τις IRQs αρχίζοντας από την IRQ0. Με τον τρόπο αυτό οι διακοπές υψηλής προτεραιότητας εξυπηρετούνται πάντα πριν από τις χαμηλής προτεραιότητας διακοπές. Η εικόνα 2.2 παρουσιάζει την παραπάνω διαδικασία σε μορφή διαγράμματος ροής. 26

39 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Εικόνα 2.2 : O διαχειριστής hardware διακοπών. Η τιμή του ipending καταχωρητή υποδεικνύει ποιές αιτήσεις διακοπής εκκρεμούν. Μία αίτηση διακοπής εκκρεμεί έως ότου ο επεξεργαστής ανταποκριθεί στην αντίστοιχη περιφερειακή συσκευή. Η εικόνα 2.3 δείχνει τη σχέση μεταξύ των ipending, inable και PIE bit με τη δημιουργία μιας διακοπής. Εικόνα 2.3 : Σχέση μεταξύ των ipending, inable και PIE bit με την δημιουργία μιας διακοπής. Πρέπει να σημειωθεί ότι οι διακοπές μπορούν να επανενεργοποιηθούν εγγράφοντας το λογικό 1 στο PIE bit. Συνήθως, το ienable bit προσαρμόζεται (από τη ρουτίνα εξαίρεσης) ώστε οι IRQs ίδιας ή χαμηλότερης προτεραιότητας να απενεργοποιούνται πριν την επανενεργοποίηση των διακοπών. 27

40 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Όπως έχει υπονοηθεί, το software αλληλεπιδρά/επικοινωνεί με τις εξωτερικές περιφερειακές συσκευές μέσω των διακοπών. Όταν μία περιφερειακή συσκευή προκαλεί μία IRQ, η αντίστοιχη ISR πρέπει να εξυπηρετήσει τη διακοπή αυτή και να επαναφέρει στο τέλος τον επεξεργαστή στην κατάσταση προ διακοπής. Η HAL βιβλιοθήκη συστήματος παρέχει ένα σύνολο εντολών διασύνδεσης (Application Program Interface API) μέσω του οποίου διευκολύνεται η δημιουργία και η συντήρηση ρουτινών εξυπηρέτησης διακοπών (ISRs). To HAL API καθορίζει τις παρακάτω συναρτήσεις για τη διαχείριση hardware διακοπών: alt_irq_register() alt_irq_disable() alt_irq_enable() alt_irq_disable_all() alt_irq_enable_all() alt_irq_interruptible() alt_irq_non_interruptible() alt_irq_enabled() Πρέπει να σημειωθεί ότι το API αυτό εφαρμόζεται και σε προγράμματα που βασίζονται σε λειτουργικά προγράμματα πραγματικού χρόνου (RTOS). Η χρήση του HAL API για την υλοποίηση των ISRs έγκειται σε δύο βασικά βήματα που θα περιγραφούν παρακάτω: i) Τη συγγραφή αυτής καθαυτής της ISR που θα χειρίζεται τις διακοπές από μια συγκεκριμένη περιφερειακή συσκευή και ii) την καταχώρηση της ISR από το κυρίως πρόγραμμαεφαρμογή, καλώντας τη συνάρτηση alt_irq_register(). Η συνάρτηση αυτή ενεργοποιεί τις διακοπές καλώντας με τη σειρά της τη συνάρτηση alt_irq_disable_all(). Συγγραφή της ISR Το πρωτότυπο της ISR πρέπει έχει την εξής μορφή: void isr (void* context, alt_u32 id) ώστε να ταιριάζει με το πρωτότυπο που περιμένει η συνάρτηση alt_irq_register(). Οι ορισμοί των όρων context και id είναι πανομοιότυποι με αυτούς της συνάρτησης alt_irq_register(). Είναι αναγκαίο να τονιστεί ότι για το HAL σύστημα διαχείρισης εξαιρέσεων, η πιο σημαντική εργασία μιας ISR είναι ο καθαρισμός (clearing) της κατάστασης διακοπής του αντιστοίχου περιφερειακού. Η διαδικασία αυτή είναι συγκεκριμένη για κάθε είδους περιφερειακή συσκευή. Όταν η ISR έχει πλέον ολοκληρώσει την εξυπηρέτηση της διακοπής πρέπει να επιστρέψει στον HAL διαχειριστή εξαιρέσεων. 28

41 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Καταχώρηση της ISR Για να είναι σε θέση το software να εκτελέσει την ISR αυτή πρέπει πρώτα να έχει καταχωρηθεί καλώντας τη συνάρτηση alt_irq_register(), το πρωτότυπο της οποίας είναι : int alt_irq_register (alt_u32 id,void* context,void (*isr)(void*, alt_u32)); Οι παράμετροι του πρωτοτύπου της συνάρτησης αυτής ορίζονται ως εξής: id είναι ο αριθμός της hardware διακοπής για τη συγκεκριμένη συσκευή όπως αυτός ορίζεται στον SOPC Builder φαίνεται στο αρχείο system.h. Η προτεραιότητα των διακοπών είναι αντίστροφη των αριθμών τους, υποδηλώνοντας έτσι ότι η IRQ0 έχει την υψηλότερη προτεραιότητα ενώ η IRQ31 την χαμηλότερη. context είναι ο δείκτης που χρησιμοποιείται για να περαστεί οποιαδήποτε σχετική πληροφορία στην ISR. Η μεταβλητή context είναι αδιαφανής στο HAL. isr είναι ο δείκτης στη συνάρτηση που καλείται και αντιστοιχεί στον αριθμό id της αντίστοιχης IRQ. Τα δύο ορίσματα που εισάγονται στη συνάρτηση αυτή είναι ο δείκτης context και ο αριθμός id. Η καταχώρηση ενός μηδενικού δείκτη στην isr έχει ως αποτέλεσμα την απενεργοποίηση της διακοπής. Η HAL καταχωρεί την ISR αποθηκεύοντας το δείκτη isr της συνάρτησης, σε έναν πίνακα αναφοράς (lookup table). Η συνάρτηση alt_irq_register() επιστρέφει την τιμή μηδέν αν η διαδικασία έχει ολοκληρωθεί επιτυχώς, σε αντίθετη περίπτωση επιστρέφει ένα μη μηδενικό αριθμό. Αν η ISR καταχωρηθεί επιτυχώς η αντίστοιχη Nios II διακοπή (όπως ορίζεται από το id) ενεργοποιείται κατά την επιστροφή από την alt_irq_register(). Ενεργοποίηση και Απενεργοποίηση ISRs H HAL προσφέρει τις συναρτήσεις, alt_irq_disable(), alt_irq_enable(), alt_irq_disable_all( ), alt_irq_enable_all(), alt_irq_enabled() με τις οποίες είναι δυνατή η απενεργοποίηση των διακοπών για συγκεκριμένες περιοχές κομμάτια κώδικα και η επανενεργοποίηση τους αργότερα. Οι συναρτήσεις alt_irq_disable() και alt_irq_enable() επιτρέπουν την ενεργοποίηση και απενεργοποίηση συγκεκριμένων (μεμονωμένων) διακοπών. Η συνάρτηση alt_irq_disable_all() απενεργοποιεί όλες τις διακοπές και επιστρέφει την τιμή context, ενώ η συνάρτηση alt_irq_enable_all() ενεργοποιεί ξανά όλες τις διακοπές περνώντας την παράμετρο context. Με αυτόν τον τρόπο αυτό οι διακοπές επιστρέφουν στην αρχική τους κατάσταση, δηλαδή πριν την κλήση στην 29

42 Κεφάλαιο 2 Ο Επεξεργαστής Nios II alt_irq_disable_all(). Επίσης η alt_irq_enabled() επιστρέφει μη μηδενική τιμή αν οι διακοπές ενεργοποιηθούν επιτυχώς επιτρέποντας έτσι στο κυρίως πρόγραμμα να ελέγχει την κατάστασή τους Εξαιρέσεις Σχετικές με Εντολές Οι εξαιρέσεις σχετικές με εντολές συμβαίνουν κατά τη διάρκεια εκτέλεσης συγκεκριμένων εντολών του Nios II, ενώ οι εργασίες που εκτελούνται είναι ίδιες με αυτές των hardware διακοπών. Ο επεξεργαστής Nios II παράγει τις εξής εξαιρέσεις σχετικές με εντολές : Trap εντολή Break εντολή Μη Υλοποιημένη εντολή Trap Εντολή Όταν στο κυρίως πρόγραμμα εφαρμογή συναντάται η εντολή trap παράγεται μία software trap εξαίρεση. Ένα πρόγραμμα συναντά συνήθως μία software trap όταν ζητά εξυπηρέτηση από ένα λειτουργικό σύστημα. Ο γενικός διαχειριστής διακοπών του λειτουργικού συστήματος θα καθορίσει το λόγο του trap και θα ανταποκριθεί καταλλήλως. Break Εντολή Η εντολή break χειρίζεται όπως η break εξαίρεση που έχει ήδη αναλυθεί. Μη Υλοποιμένη Εντολή Όταν ο επεξεργαστής συναντήσει μία έγκυρη εντολή που δεν είναι υλοποιημένη σε hardware, τότε παράγεται μία εξαίρεση μη υλοποιημένης εντολής. Ο γενικός διαχειριστής διακοπών καθορίζει ποια εντολή προκάλεσε την εξαίρεση και δίνει τον έλεγχο σε μία ρουτίνα εξαίρεσης η οποία πολύ πιθανόν θα επιλέξει να εξομοιώσει την εντολή σε software Καθορισμός της Πηγής Εξαίρεσης Ο γενικός διαχειριστής διακοπών πρέπει να καθορίσει ποιο ήταν το αίτιο που προκάλεσε μία συγκεκριμένη εξαίρεση, ώστε να μπορεί να μεταφέρει τον έλεγχο στην αντίστοιχη ρουτίνα εξυπηρέτησης εξαίρεσης. Η εικόνα 2.4 παρουσιάζει την παραπάνω διαδικασία σε μορφή διαγράμματος ροής. 30

43 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Εικόνα 2.4 : Η διαδικασία καθορισμού του αίτιου της εξαίρεσης Σύμφωνα με την εικόνα 2.4, εάν το EPIE bit του estatus καταχωρητή είναι στο λογικό 1 και η τιμή του ipending καταχωρητή είναι μη μηδενική, τότε την εξαίρεση την προκάλεσε μία hardware διακοπή. Σε αντίθετη περίπτωση δημιουργήθηκε μία εξαίρεση σχετική με εντολή. Για τον διαχωρισμό μεταξύ software traps και μη υλοποιμένης εντολής πρέπει να γίνει ανάγνωση της εντολής στη θέση μνήμης ea 4. Αν η εντολή είναι η trap, τότε η εξαίρεση είναι μία software trap ενώ αν η εντολή στην θέση αυτή μπορεί να υλοποιηθεί σε software την εξαίρεση την προκάλεσε μία μη υλοποιημένη εντολή Οργάνωση Μνήμης και Περιφερειακών Η ευέλικτη φύση της μνήμης και των περιφεριακών του Nios II είναι η πιο σημαντική διαφορά μεταξύ των Nios II συστημάτων και των παραδοσιακών συστημάτων μικροεπεξεργαστών. Λόγω του ότι τα Nios II συστήματα είναι παραμετροποιήσιμα, τόσο οι μνήμες όσο και οι περιφερειακές συσκευές μπορούν να είναι διαφορετικές από σύστημα σε σύστημα ανάλογα πάντα με τις ανάγκες/προδιαγραφές της εφαρμογής. Ως αποτέλεσμα 31

44 Κεφάλαιο 2 Ο Επεξεργαστής Nios II των παραπάνω, η οργάνωση μνήμης και περιφερειακών αλλάζει επίσης από σύστημα σε σύστημα. Ο επεξεργαστής Nios II χρησιμοποιεί ένα η περισσότερα από τα παρακάτω στοιχεία για να παρέχει πρόσβαση στη μνήμη και τα περιφερειακά : Instruction master port Ένα Avalon MM master port που συνδέεται με τη μνήμη εντολών μέσω μιας εσωτερικής δομής διασύνδεσης συστήματος (system interconnect fabric). Instruction cache Μία πολύ γρήγορη, εσωτερική, κρυφή μνήμη εντολών του NiosΙI core. Data master port Ένα Avalon MM master port που συνδέεται με τη μνήμη δεδομένων και τα περιφερειακά μέσω μιας εσωτερικής δομής διασύνδεσης συστήματος. Data cache Μία πολύ γρήγορη, εσωτερική, κρυφή μνήμη δεδομένων του Nios II core. Tightly coupled instruction or data memory port Ένας δίαυλος διασύνδεσης με γρήγορη on chip μνήμη εκτός του Nios II core. Όπως έχει ήδη αναφερθεί η αρχιτεκτονική του Nios II κρύβει τις λεπτομέρειες του hardware, δίνοντας τη δυνατότητα ανάπτυξης εφαρμογών χωρίς ειδική γνώση για την hardware υλοποίηση του συστήματος. Στην εικόνα 2.5 παρουσιάζεται η οργάνωση μνήμης και περιφερειακών του Nios II. Η αρχιτεκτονική του Nios II παρέχει memory mapped I/O πρόσβαση. Και η μνήμη δεδομένων και τα περιφερειακά είναι χαρτογραφημένα στο χώρο διευθύνσεων (address space) του data master port. Πρέπει επίσης να σημειωθεί ότι η Nios II αρχιτεκτονική είναι little endian. Έτσι τα δεδομένα αποθηκεύονται στη μνήμη με τα πιο σημαντικά bytes στις υψηλότερες/μεγαλύτερες διευθύνσεις. Η αρχιτεκτονική του Nios II δεν ορίζει την ύπαρξη μνήμης και περιφερειακών. Η ποσότητα, ο τύπος και η διασύνδεση μνήμης και περιφερειακών συσκευών εξαρτώνται από το σύστημα και κατά προέκταση από την εφαρμογή προς υλοποίηση. Συνήθως τα βασιζόμενα στον Nios II συστήματα περιλαμβάνουν ένα συνδυασμό γρήγορης on chip 32

45 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Εικόνα 2.5 : Η οργάνωση μνήμης και περιφερειακών του Nios II μνήμης και πιο αργής off chip μνήμης. Κατά κανόνα τα περιφερειακά βρίσκονται μέσα στο chip (Cyclone II). Υπάρχει όμως και διασύνδεση με off chip περιφερειακά Δίαυλοι Δεδομένων και Εντολών Η αρχιτεκτονική του Nios II κατατάσσεται στην Harvard αρχιτεκτονική, υποστηρίζοντας ξεχωριστούς διαύλους για δεδομένα και εντολές. Και οι δύο δίαυλοι υλοποιούνται ως Avalon MM master ports που υπακούουν στις προδιαγραφές του Avalon MM interface. Το data master port συνδέεται στα chip μνήμης αλλά και στις περιφερειακές συσκευές, ενώ το instruction master port συνδέεται μόνο στα chip μνήμης. Instruction Master Port Ο δίαυλος εντολών του Nios II υλοποιείται ως ένα Avalon MM master port των 32 bit. Το instruction master port εκτελεί μια απλή λειτουργία: παρέχει στον επεξεργαστή εντολές προς εκτέλεση ενώ δεν εκτελεί καμία λειτουργία εγγραφής. Το instruction master port είναι ένα pipelined Avalon MM master port. Η υποστήριξη pipelined Avalon MM μεταφορών δεδομένων, ελαχιστοποιεί την καθυστέρηση της σύγχρονης μνήμης (synchronous memory), ενώ αυξάνει τη συνολική συχνότητα f MAX του συστήματος. Το instruction master port μπορεί να υλοποιήσει διαδοχικές αιτήσεις ανάγνωσης προτού επιστραφούν τα δεδομένα από προηγούμενες αιτήσεις. Ο Nios II μπορεί να προ τροφοδοτήσει (prefetch) διαδοχικές 33

46 Κεφάλαιο 2 Ο Επεξεργαστής Nios II εντολές και να εκτελέσει branch prediction ώστε να κρατήσει το pipeline εντολών όσο πιο ενεργό γίνεται. Το instruction master port αλληλεπιδρά πάντα με δεδομένα των 32 bit και βασίζεται στη λογική δυναμικής αλλαγής μεγέθους του διαύλου, που εμπεριέχεται στην εσωτερική δομή διασύνδεσης του συστήματος (system interconnect fabric). Λόγω αυτής της λογικής, κάθε ανάκληση εντολής επιστρέφει μία λέξη εντολής (full instruction word) ανεξάρτητα από το εύρος της μνήμης. Συνεπώς δεν είναι αναγκαίο, στα Nios II συστήματα, να είναι γνωστό το εύρος της μνήμης. Η Nios II αρχιτεκτονική υποστηρίζει επίσης τη χρήση on chip κρυφής μνήμης με σκοπό τη βελτίωση της απόδοσης κατά την ανάκτηση εντολών από μία πιο αργή μνήμη καθώς και tightly coupled μνήμες καθυστέρησης πρόσβαση στην on chip μνήμη. που παρέχουν χαμηλής Data Master Port Ο δίαυλος δεδομένων του Nios II υλοποιείται ως ένα Avalon MM master port των 32 bit. Το data master port εκτελεί δύο λειτουργίες: i) διαβάζει δεδομένα από μνήμες ή περιφερειακές συσκευές, όταν ο επεξεργαστής εκτελεί μία εντολή φόρτωσης (load instruction) και ii) γράφει δεδομένα σε μνήμες ή περιφερειακές συσκευές όταν ο επεξεργαστής εκτελεί μία εντολή αποθήκευσης (store instruction). Οι λειτουργίες εγγραφής και αποθήκευσης μπορούν να ολοκληρωθούν μέσα σε ένα κύκλο ρολογιού όταν το data master port είναι συνδεδεμένο με μία μνήμη μηδενικής κατάστασης αναμονής (zero waitstate memory). Κοινή Μνήμη για Εντολές και Δεδομένα Συνήθως, τα instruction master port και data master port μοιράζονται μία μνήμη η οποία περιέχει και εντολές και δεδομένα. Ενώ ο επεξεργαστής έχει ξεχωριστούς δίαυλους για εντολές και δεδομένα, το συνολικό Nios II σύστημα μπορεί να παρουσιάζει έναν μόνο κοινό δίαυλο δεδομένων / εντολών προς τα έξω. Τέλος, τα instruction master port και data master port λειτουργούν με εντελώς ανεξάρτητο τρόπο, χωρίς να αλληλεπιδρούν μεταξύ τους Κρυφή Μνήμη Η Nios II αρχιτεκτονική υποστηρίζει κρυφές μνήμες (cache memories) και για το instruction master port (instruction cache) και για το data master port (data cache). Η κρυφή μνήμη βρίσκεται μέσα στο chip ως ένα αναπόσπαστο κομμάτι του Nios II core. Οι κρυφές μνήμες 34

47 Κεφάλαιο 2 Ο Επεξεργαστής Nios II μπορούν να βελτιώσουν το μέσο χρόνο πρόσβασης μνημών σε ένα Nios II σύστημα που χρησιμοποιεί αργές off chip μνήμες όπως η SDRAM για αποθήκευση δεδομένων. Οι κρυφές μνήμες εντολών και δεδομένων είναι συνεχώς ενεργοποιημένες κατά τη διάρκεια λειτουργίας του συστήματος. Το σετ εντολών του Nios Ii παρέχει εντολές για τη διαχείριση της κρυφής μνήμης. Ρύθμιση Παραμέτρων Κρυφής Μνήμης Η ανάγκη για μνήμη υψηλής απόδοσης και κατά συνέπεια η ανάγκη για κρυφή μνήμη, εξαρτάται από την εφαρμογή. Πολλές εφαρμογές απαιτούν το μικρότερο δυνατό μέγεθος core επεξεργαστή και μπορούν να θυσιάσουν την απόδοση για το σκοπό αυτό, υπονοώντας ότι η χρήση της κρυφής μνήμης είναι προαιρετική. Το core του Nios II μπορεί να περιέχει μία, και τις δύο ή καμία από τις κρυφές μνήμες δεδομένων και εντολών. Η εισαγωγή της κρυφής μνήμης σε ένα σύστημα δεν επηρεάζει τη λειτουργικότητα των προγραμμάτων, αλλάζει όμως εντελώς την ταχύτητα με την οποία ο επεξεργαστής ανακαλεί εντολές και γράφει/διαβάζει δεδομένα. Απόδοση Κρυφής Μνήμης Η περαιτέρω βελτίωση της απόδοσης της κρυφής μνήμης συστήματος, βασίζεται στις παρακάτω προϋποθέσεις: και κατά συνέπεια του Η συνήθης μνήμη είναι εκτός chip και ο χρόνος πρόσβασης σε αυτήν είναι πολύ μεγαλύτερος από την on chip μνήμη. Ο μεγαλύτερος βρόχος εντολών (κρίσιμης σημασίας για την απόδοση του συστήματος) είναι μικρότερος από το μέγεθος της κρυφής μνήμης εντολών. Το μεγαλύτερο block δεδομένων εντολών (κρίσιμης σημασίας για την απόδοση του συστήματος) είναι μικρότερο από το μέγεθος της κρυφής μνήμης εντολών. Η αποδοτικότερη ρύθμιση της κρυφής μνήμης εξαρτάται τόσο από το σύστημα όσο και από την εφαρμογή, ωστόσο υπάρχουν καθολικές ρυθμίσεις που επηρεάζουν μεγάλες ομάδες συστημάτων/εφαρμογών. Για παράδειγμα, εάν το Nios II σύστημα περιλαμβάνει μόνο γρήγορες on chip μνήμες (χωρίς ποτέ να προσπελαύνει off chip μνήμες) μία κρυφή μνήμη δεδομένων ή εντολών πολύ πιθανόν να μην προσφέρει καμία βελτίωση στην απόδοση του συστήματος. Επίσης, εάν ο κρίσιμος βρόχος εντολών είναι 2Kbytes αλλά η κρυφή μνήμη εντολών είναι μεγέθους 1kByte, τότε η κρυφή μνήμη αυτή δεν θα επιφέρει καμία αύξηση στην ταχύτητα εκτέλεσης, ενδέχεται δε να υποβαθμίσει την ολική απόδοση του συστήματος. 35

48 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Μέθοδοι Παράκαμψης Κρυφής Μνήμης Ο Nios II παρέχει δύο μεθόδους παράκαμψης της κρυφής μνήμης : i) I/O εντολές φόρτωσης και αποθήκευσης εντολές όπως ldio και stio παρακάμπτουν την κρυφή μνήμη δεδομένων και επιβάλλουν μία Avalon MM μεταφορά δεδομένων σε/από μία συγκεκριμένη διεύθυνση μνήμης, ii) την bit 31 cache bypass μέθοδο, η οποία χρησιμοποιεί στο data master port το bit 31 της διεύθυνσης ως ετικέτα που υποδεικνύει αν ο επεξεργαστής πρέπει να μεταφέρει δεδομένα από/προς την κρυφή μνήμη, ή να την παρακάμψει. Εάν η εφαρμογή απαιτεί συνεχώς συγκεκριμένα δεδομένα ή κομμάτια κώδικα να βρίσκονται στην κρυφή μνήμη, τότε για λόγους απόδοσης είναι πιο δόκιμη η χρήση tightlycoupled μνήμης Tightly Coupled Μνήμη Η tightly coupled μνήμη παρέχει χαμηλής καθυστέρησης πρόσβαση σε μνήμες για εφαρμογές που απαιτούν υψηλή απόδοση. Συγκρινόμενη με την κρυφή μνήμη, η tightlycoupled μνήμη παρουσιάζει τα παρακάτω πλεονεκτήματα: Απόδοση εφάμιλλης της κρυφής μνήμης. Κρίσιμα δεδομένα ή κομμάτια κώδικα μπορούν να επιβεβαιωθούν ότι βρίσκονται στην tightly coupled μνήμη μέσω software. Δεν υπάρχει επιβάρυνση (σε πραγματικό χρόνο) για λειτουργίες μνήμης όπως φόρτωση, ακύρωση ή άδειασμα μνήμης. Η θύρα tightly coupled μνήμης (tightly coupled memory port) είναι ένα ξεχωριστό master port στο core του Nios II παρόμοιο με το instruction master port και το data master port. Ο Nios II μπορεί να έχει καμία, μία ή πολλαπλές tightly coupled μνήμες. Η Nios II αρχιτεκτονική υποστηρίζει tightly coupled μνήμες και για εντολές και για δεδομένα. Κάθε θύρα tightly coupled μνήμης συνδέεται απευθείας με μία μόνο μνήμη, παρέχοντας συγκεκριμένη (χαμηλή) καθυστέρηση πρόσβασης. Η μνήμη αυτή είναι έξω από το core του Nios II και συνήθως μέσα στο chip (on chip). Πρόσβαση σε Tightly Coupled Μνήμη Η tightly coupled μνήμη καταλαμβάνει συνήθεις θέσεις διευθύνσεων όπως άλλες μνήμες συνδεδεμένες στην εσωτερική δομή διασύνδεσης. Το εύρος διευθύνσεων για την tightlycoupled μνήμη (αν υπάρχει) καθορίζεται κατά την παραγωγή του συστήματος. Η software 36

49 Κεφάλαιο 2 Ο Επεξεργαστής Nios II πρόσβαση σε tightly coupled μνήμη, επιτυγχάνεται με τις συνήθεις εντολές φόρτωσης και αποθήκευσης και δε διαφέρει από την πρόσβαση σε άλλες μνήμες. Απόδοση Tightly Coupled Μνήμης Το σύστημα μπορεί να χρησιμοποιήσει μία tightly coupled μνήμη για την επίτευξη μέγιστης απόδοσης όσον αφορά την πρόσβαση σε συγκεκριμένα δεδομένα ή κομμάτια κώδικα. Για παράδειγμα, έντονες υπολογιστικά εφαρμογές όπως εφαρμογές ψηφιακής επεξεργασίας σήματος μπορούν να διαμοιράσουν τους buffers δεδομένων σε tightly coupled μνήμες, για την όσο το δυνατόν γρηγορότερη πρόσβαση στα δεδομένα αυτά Χάρτης Διευθύνσεων (Address Map) Ο χάρτης διευθύνσεων για μνήμες και περιφερειακά σε ένα Nios σύστημα, προσαρμόζεται αναλόγως και καθορίζεται κατά την παραγωγή του συστήματος. Υπάρχουν όμως τρεις διευθύνσεις οι οποίες αποτελούν μέρος του επεξεργαστή και χρήζουν ιδιαίτερης προσοχής. Αυτές είναι: i) διεύθυνση επαναφοράς (reset address) ii) διεύθυνση εξαίρεσης (exception address) και iii) διεύθυνση break χειριστή (break handler access). Ο προσαρμοζόμενος χάρτης διευθύνσεων δεν επηρεάζει την ανάπτυξη των εφαρμογών, αφού η πρόσβαση σε μνήμες και περιφερειακά επιτυγχάνεται με τη χρήση μακροεντολών (macros) και οδηγών συναρτήσεων (drivers) Μονάδα αποσφαλμάτωσης JTAG (JTAG debug module) Η Nios II αρχιτεκτονική υποστηρίζει τη μονάδα αποσφαλμάτωσης JTAG η οποία παρέχει onchip χαρακτηριστικά εξομοίωσης για τον έλεγχο του επεξεργαστή από έναν απομακρυσμένο υπολογιστή. Το Quartus II και το Nios II IDE επικοινωνούν με τη μονάδα αποσφαλμάτωσης JTAG και παρέχουν λειτουργίες όπως: Προγραμματισμός του FPGA με το αρχείο που προέκυψε από τη μεταγλώττιση του συστήματος (.sof,.pof). Προγραμματισμός του Nios II με το αρχείο που προέκυψε από τη μεταγλώττιση του προγράμματος/εφαρμογής (.elf). Έναρξη και τερματισμός εκτέλεσης προγράμματος. Εισαγωγή breakpoints και watchpoints. Ανάλυση περιεχομένων καταχωρητών και μνήμης. 37

50 Κεφάλαιο 2 Ο Επεξεργαστής Nios II Η μονάδα αποσφαλμάτωσης συνδέεται στο JTAG κύκλωμα του FPGA ενώ από την πλευρά του επεξεργαστή η μονάδα αποσφαλμάτωσης συνδέεται με εσωτερικά σήματα του core του επεξεργαστή. Όλοι οι πόροι συστήματος του επεξεργαστή είναι διαθέσιμοι και στη μονάδα αποσφαλμάτωσης. Η μονάδα αποσφαλμάτωσης αποκτά τον έλεγχο του επεξεργαστή είτε με την εισαγωγή ενός hardware break σήματος ή με την εγγραφή μίας break εντολής στη μνήμη του προγράμματος προς εκτέλεση. Και στις δύο περιπτώσεις, ο επεξεργαστής μεταφέρει τον έλεγχο σε μία ρουτίνα που βρίσκεται στη διεύθυνση "break. Η διεύθυνση αυτή καθορίζεται κατά την παραγωγή του συστήματος. Οι soft core επεξεργαστές, όπως ο Nios II, προσφέρουν επιπλέον δυνατότητες συγκρινόμενοι με τους παραδοσιακούς hard core επεξεργαστές. Για παράδειγμα, ο Nios II επεξεργαστής παρέχει τη δυνατότητα αποσφαλμάτωσης ενός συστήματος που είναι σε ανάπτυξη, χρησιμοποιώντας ένα πλήρες debug core, επιτρέποντας τη μερική ή πλήρη αφαίρεσή του στο τελικό design για τη διατήρηση πόρων του συστήματος Εισαγωγή στο Σετ Εντολών του Nios II Όλες οι εντολές που υποστηρίζει ο Nios II ανήκουν σε μία εκ των τριών κατηγοριών: I Type, R Type και J Type. Ο κάθε τύπος εντολών ακολουθεί ξεχωριστή αναπαράσταση εντολών (instruction word format) I Type Οι I Type εντολές είναι εντολές αριθμητικών και λογικών πράξεων όπως addi και andi. Το χαρακτηριστικό του I Type instruction word format, που φαίνεται στην εικόνα 2.6, είναι ότι περιέχει μία άμεση τιμή (immediate value) ενσωματωμένη στο instruction word. Οι εντολές I Type αποτελούνται από : Ένα πεδίο opcode (OP) των 6 bit. Ένα πεδίο άμεσης τιμής (IMM16) των 16 bit. 2 πεδία καταχωρητών (Α και Β) των 5 bit. Εικόνα 2.6 : Το I Type instruction word format 38

51 Κεφάλαιο 2 Ο Επεξεργαστής Nios II R Type Οι R Type εντολές είναι εντολές αριθμητικών και λογικών πράξεων όπως add και nor, πράξεων σύγκρισης όπως cmpeq και cmplt και άλλων πράξεων που απατούν ορίσματα από καταχωρητές Το χαρακτηριστικό του R Type instruction word format, που φαίνεται στην εικόνα 2.7, είναι ότι όλα τα ορίσματα και τα αποτελέσματα ορίζονται ως καταχωρητές. Οι εντολές I Type αποτελούνται από : Ένα πεδίο opcode (OP) των 6 bit. Ένα πεδίο opcode extension (OPX) των 11 bit. 3 πεδία καταχωρητών (Α, B και C) των 5 bit. Εικόνα 2.7 : Το R Type instruction word format Στις περισσότερες περιπτώσεις τα πεδία A και B ορίζουν του καταχωρητές που παρέχουν τα ορίσματα της πράξης και το πεδίο C ορίζει τον καταχωρητή αποθήκευσης του αποτελέσματος J Type Οι J Type εντολές μεταφέρουν την εκτέλεση του προγράμματος σε κάποια άλλη διεύθυνση σε διάστημα 256Mbytes. Τέτοιες εντολές είναι η call,η jmpi και άλλες. Το J Type instruction word format, που φαίνεται στην εικόνα 2.8, αποτελείται από : Ένα πεδίο opcode (OP) των 6 bit. Ένα πεδίο άμεσων δεδομένων (IMMED26) των 26 bit. Εικόνα 2.8 : Το J Type instruction word format Τα OPcodes των Εντολών Τα πεδία OP και OPX, στις Nios II εντολές, καθορίζουν το opcode τους όπως παρουσιάζονται στους πίνακες εικόνες 2.5 και

52 Κεφάλαιο 2 Ο Επεξεργαστής Nios II OP Εντολή OP Εντολή OP Εντολή OP Εντολή 0x00 call 0x10 cmplti 0x20 cmpeqi 0x30 cmpltui 0x01 jmpi 0x11 0x21 0x31 0x02 0x12 0x22 0x32 custom 0x03 ldbu 0x13 0x23 ldbuio 0x33 initd 0x04 addi 0x14 ori 0x24 muli 0x34 ohi 0x05 stb 0x15 stw 0x25 stbio 0x35 stwio 0x06 br 0x16 blt 0x26 beq 0x36 blyu 0x07 ldb 0x17 ldw 0x27 ldbio 0x37 ldwio 0x08 cmpgei 0x18 cmpnei 0x28 cmpgeui 0x38 0x09 0x19 0x29 0x39 0x0A 0x1A 0x2A 0x3A R TYPE 0x0B ldhu 0x1B flushda 0x2B ldhuio 0x3B flushd 0x0C andi 0x1C xori 0x2C andhi 0x3C xorhi 0x0D sth 0x1D 0x2D sthio 0x3D 0x0E bge 0x1E bne 0x2E bgeu 0x3E 0x0F ldh 0x1F 0x2F ldhio 0x3F Πίνακας 2.5 : Τα OP πεδία(κυρίως I Type εντολές) των εντολών του Nios II OPX Εντολή OPX Εντολή OPX Εντολή OPX Εντολή 0x00 0x10 cmplt 0x20 cmpeq 0x30 cmpltu 0x01 eret 0x11 0x21 0x31 add 0x02 roli 0x12 slli 0x22 0x32 0x03 rol 0x13 sll 0x23 0x33 0x04 flushp 0x14 0x24 divu 0x34 break 0x05 ret 0x15 0x25 div 0x35 0x06 not 0x16 or 0x26 rdctl 0x36 sync 0x07 mulxuu 0x17 mulxsu 0x27 mul 0x37 0x08 cmpge 0x18 cmpne 0x28 cmpgeu 0x38 0x09 bret 0x19 0x29 initi 0x39 sub 0x0A 0x1A srli 0x2A 0x3A srai 0x0B ror 0x1B srl 0x2B 0x3B sra 0x0C flushi 0x1C nextpc 0x2C 0x3C 0x0D jmp 0x1D callr 0x2D trap 0x3D 0x0E and 0x1E xor 0x2E wrctl 0x3E 0x0F 0x1F mulxss 0x2F 0x3F Πίνακας 2.6 : Τα OPΧ πεδία των R Type εντολών του Nios II 40

53 Κεφάλαιο 3 Τα Cores του Συστήματος Κεφάλαιο 3 Τα Cores του Συστήματος Το σύστημα αποτελείται από τον επεξεργαστή Nios II (Nios II/s core) καθώς και από έναν αριθμό περιφερειακών συσκευών, εκ των οποίων ορισμένα είναι μέρος μιας βιβλιοθήκης περιφερειακών συσκευών με όνομα UP IP Cores, ενώ κάποια άλλα παρέχονται ως μέρος του SOPC Builder Το Nios II/s Core Το Nios II/s standard core έχει σχεδιαστεί με γνώμονα το μικρό μέγεθος του core θυσιάζοντας κάποιο μέρος της απόδοσης, αφού χρησιμοποιεί περίπου 20% λιγότερη λογική συγκρινόμενο με το Nios II/f core που έχει ως αποτέλεσμα την ελάττωση της απόδοσης κατά 30%. Η σχεδίαση του συγκεκριμένου core έχει γίνει με σκοπό την επίτευξη των ακόλουθων στόχων: i) την ύπαρξη μιας ισορροπίας ανάμεσα στο μέγεθος του core και την απόδοσή του, ii) την απομάκρυνση των χαρακτηριστικών εκείνων (σε hardware) που καταναλώνουν μεγάλο αριθμό on chip πόρων εις βάρος της απόδοσης. Το συγκεκριμένο Nios II core είναι ιδανικό για εφαρμογές που δεν απαιτούν μεγάλη υπολογιστική ισχύ καθώς και για εφαρμογές που διαχειρίζονται μεγάλο πλήθος δεδομένων όπως ένα πλήρες λειτουργικό σύστημα, όπου η απόδοση δεν αποτελεί τον σημαντικότερο ρόλο. Το core αυτό: Διαθέτει κρυφή μνήμη εντολών Παρέχει πρόσβαση σε έως 2 GBytes εξωτερικής μνήμης Υποστηρίζει tightly coupled μνήμη για εντολές και δεδομένα (προαιρετικά) Χρησιμοποιεί ένα pipeline 5 σταδίων για επίτευξη μέγιστου DMIPS/MHz Παρέχει ειδικό hardware πολλαπλασιασμών, διαιρέσεων και ολισθήσεων για βελτίωση της απόδοσης αριθμητικών πράξεων Υποστηρίζει την προσθήκη εντολών προσδιοριζόμενων από το χρήστη Υποστηρίζει τη μονάδα αποσφαλμάτωσης JTAG (και προαιρετικές βελτιστοποιήσεις του όπως hardware breakpoints και άλλες) 41

54 Κεφάλαιο 3 Τα Cores του Συστήματος Η Αριθμητική και Λογική Μονάδα (ALU) Το Nios II/s core παρέχει αρκετές hardware ρυθμίσεις για την αριθμητική και λογική μονάδα οι οποίες αποσκοπούν στη βελτίωση της απόδοσης των πράξεων πολλαπλασιασμού και διαίρεσης. Για το σκοπό αυτό, υπάρχουν οι εξής επιλογές: DSP blocks οι πολλαπλασιαστές τοποθετούνται σε DSP block τα οποία είναι διαθέσιμα σε συγκεκριμένα FPGAs της ALTERA Ενσωματωμένους πολλαπλασιαστές οι πολλαπλασιαστές τοποθετούνται σε ειδικούς ενσωματωμένους πολλαπλασιαστές που είναι διαθέσιμοι σε συγκεκριμένα FPGAs της ALTERA Λογικά Στοιχεία (LEs) οι πολλαπλασιαστές τοποθετούνται σε λογικά στοιχεία None Δεν περιλαμβάνεται hardware πολλαπλασιασμού και οι πράξεις πολλαπλασιασμού εξομοιώνονται σε software Στον πίνακα 3.1 αναφέρονται οι λεπτομέρειες των hardware ρυθμίσεων πολλαπλασιασμού και διαίρεσης. Επιλογή Υλοποίησης DSP Block στις οικογένειες Startix, Startix II και Startix III Ενσωματωμένοι Πολ/στές στις οικογένειες Cyclone, Cyclone II και Cyclone III Λογικά Στοιχεία None Hardware Διαιρέτες Λεπτομέρειες Hardware H ALU ενσωματώνει 32x32 bits πολ/στές H ALU ενσωματώνει 32x16 bits πολ/στές H ALU ενσωματώνει 32x4 bits πολ/στές Εντολές πολ/σμού και διαίρεσης παράγουν μία εξαίρεση H ALU ενσωματώνει ένα multi cycle κύκλωμα διαίρεσης Κύκλοι Ρολογιού ανά Εντολή Κύκλοι Καθυστέρησης Αποτελέσματος 1 +2 Υποστηριζόμενες Εντολές mul, muli, mulxss, mulxsu, mulxuu 5 +2 mul, muli mul, muli Καμία div, divu Πίνακας 3.1 : Hardware ρυθμίσεις Πολλ/σμού και Διαίρεσης για το Nios II/s core 42

55 Κεφάλαιο 3 Τα Cores του Συστήματος Η τιμή της στήλης κύκλοι ρολογιού ανά εντολή προσδιορίζει το μέγιστο αριθμό με τον οποίο η ALU μπορεί να εκτελεί εντολές και να παράγει το κάθε αποτέλεσμα. Η τιμή της στήλης κύκλοι καθυστέρησης αποτελέσματος καθορίζει πότε το αποτέλεσμα γίνεται διαθέσιμο. Εάν δεν υπάρχουν εντολές που να βασίζονται σε προηγούμενα αποτελέσματα, η τιμή της καθυστέρησης δεν επηρεάζει την απόδοση της ALU, σε αντίθετη περίπτωση, ο επεξεργαστής εισέρχεται σε κατάσταση αναμονής για όσους κύκλους ρολογιού χρειάζεται το αποτέλεσμα προκειμένου να γίνει διαθέσιμο. Η απόδοση των πράξεων ολίσθησης βασίζεται στην επιλογή υλοποίησης των hardware πολλαπλασιαστών. Όταν υπάρχουν hardware πολλαπλασιαστές, η ALU ολοκληρώνει τις πράξεις ολίσθησης / περιστροφής (shift / rotate) σε έναν ή δύο κύκλους ρολογιού. Διαφορετικά η ALU ενσωματώνει ειδικό κύκλωμα ολισθήσεων που πραγματοποιεί ολισθήσεις / περιστροφές με ρυθμό 1 bit ανά κύκλο ρολογιού Πρόσβαση σε Μνήμη Το Nios II/s core παρέχει κρυφή μνήμη εντολών (αλλά όχι δεδομένων). Το μέγεθος αυτών των κρυφών μνημών προσδιορίζεται από το χρήστη και κυμαίνεται από 512 bytes έως 64 Kbytes. Υποστηρίζεται επίσης η μέθοδος παράκαμψης κρυφής μνήμης bit 31 bus bypass για πρόσβαση σε I/O που βρίσκονται συνδεδεμένα στο data master port. Στο συγκεκριμένο core το bit 31 έχει πάντα την τιμή μηδέν. Instruction Master Port και Data Master Port Το instruction master port είναι ένα pipelined Avalon MM master port όπως και το data master port. Το instruction master port είναι προαιρετικό και μπορεί να εξαιρεθεί εφόσον το core του επεξεργαστή περιλαμβάνει τουλάχιστον μία tightly coupled μνήμη που το αντικαθιστά. Η υποστήριξη pipelined Avalon MM μεταφορών δεδομένων, ελαχιστοποιεί την καθυστέρηση της σύγχρονης μνήμης (synchronous memory). Τα pipelined instruction master port και data master port μπορούν να εξυπηρετήσουν διαδοχικές αιτήσεις ανάγνωσης δεδομένων πριν ολοκληρωθούν οι προηγούμενες. Κρυφή Μνήμη Εντολών Η κρυφή μνήμη εντολών διαιρείται σε πεδία όπως φαίνεται στην εικόνα 3.1 έχει τα ακόλουθα χαρακτηριστικά: Direct mapped υλοποίηση 43

56 Κεφάλαιο 3 Τα Cores του Συστήματος 32 bytes (8 words) ανά γραμμή Το instruction master port διαβάζει μία γραμμή ανά κύκλο ρολογιού από την κρυφή μνήμη Εικόνα 3.1 : Τα πεδία της κρυφής μνήμης δεδομένων και εντολών Το εύρος του πεδίου tag εξαρτάται από το μέγεθος της κρυφής μνήμης καθώς και από το physical address size, ενώ το εύρος του πεδίου line εξαρτάται μόνο από το μέγεθος της κρυφής μνήμης. Το πεδίο offset είναι πάντα 3 bits. Η κρυφή μνήμη εντολών, όπως έχει αναφερθεί, είναι προαιρετική. Ωστόσο, η εξαίρεσή της από το Nios II/s core απαιτεί τη χρήση τουλάχιστον μίας tightly coupled μνήμης εντολών. Tightly Coupled Μνήμη Το Nios II/s core προσφέρει προαιρετικά τη χρήση tightly coupled μνήμης και για δεδομένα και εντολές, ενώ μπορεί να περιλαμβάνει μέχρι και τέσσερις τέτοιες μνήμες. Όταν έχει ενεργοποιηθεί η διασύνδεση με tightly coupled μνήμη, το core μπορεί να ενσωματώσει ένα επιπλέον master port διασύνδεσης μνήμης. Το core αποκωδικοποιεί τις διευθύνσεις εσωτερικά, ώστε να προσδιορίσει αν τα ζητούμενα δεδομένα (ή εντολές) υπάρχουν μέσα σε κάποια tightly coupled μνήμη. Αν η διεύθυνση των δεδομένων αυτών (ή των εντολών) υπάρχει στην tightly coupled μνήμη το core ανακαλεί τα δεδομένα (ή τις εντολές) μέσω της tightly coupled memory διασύνδεσης. Το software προσπελαύνει την tightly coupled μνήμη με της συνήθης εντολές φόρτωσης και αποθήκευσης ldw, ldwio, stw και stwio. Η πρόσβαση στην tightly coupled μνήμη παρακάμπτει την κρυφή μνήμη Απόδοση Εκτέλεσης Εντολών Το Nios II/s core παρέχει ένα Pipeline 5 σταδίων, όπως φαίνεται και στον πίνακα 3.2, για την βελτιστοποίηση του χρόνου εκτέλεσης εντολών. 44

57 Κεφάλαιο 3 Τα Cores του Συστήματος Γράμμα Σταδίου Όνομα Σταδίου F Fetch D Decode E Execute M Memory W Writeback Πίνακας 3.2 : Τα pipeline στάδια του Nios II/s core Μέχρι και μία εντολή εκτελείται ή τερματίζεται ανά κύκλο ρολογιού. Το pipeline εισέρχεται σε κατάσταση αναμονής (stalls) στις εξής περιπτώσεις : Όταν εκτελείται μια multi cycle εντολή Όταν προσπελαύνεται ένα Avalon MM master port για ανάγνωση/εγγραφή Όταν υπάρχει εξάρτηση εντολών υψηλής καθυστέρησης (multiply, shift και άλλες) από δεδομένα Αν το Μ στάδιο, και μόνο αυτό, σταματήσει τη λειτουργία του, τότε δεν εισέρχεται καμία νέα τιμή ούτε σε αυτό ούτε σε προηγούμενα στάδια ακόμα και αν το pipeline είναι άδειο. Όλες οι εντολές καταναλώνουν έναν ή περισσότερους κύκλους ρολογιού για να εκτελεστούν. Κάποιες εντολές έχουν ιδιαιτερότητες που σχετίζονται με το χρόνο εκτέλεσης τους, όπως εντολές που απαιτούν την χρήση Avalon MM μεταφορών δεδομένων. Οι εντολές αυτές πρέπει να περιμένουν μέχρι την ολοκλήρωση όλων των προηγούμενων Avalon MM μεταφορών, ώστε να εκτελεστούν. Ο πίνακας 3.3 παρουσιάζει περιληπτικά την απόδοση εκτέλεσης των εντολών του Nios II/s core. Εντολή Κύκλοι Ρολογιού Penalties Συνήθεις εντολές της ALU (add κτλ) 1 Συνδυαστικές εντολές προσδιοριζόμενες από τον χρήστη 1 Multi cycle εντολές προσδιοριζόμενες από τον χρήστη 1 Καθυστερημένο αποτέλεσμα Εντολές διακλάδωσης (correctly predicted, taken) 2 Εντολές διακλάδωσης (correctly predicted, not taken) 1 Εντολές διακλάδωσης (mis predicted) 4 Άδειασμα του pipeline trap, break, eret, bret, flushp, wrctl και μη υλοποιημένες εντολές 4 Άδειασμα του pipeline call, jmpi, jmp, ret, callr 4 45

58 Κεφάλαιο 3 Τα Cores του Συστήματος rdctl 1 load, store >1 flushi,initi 4 Καθυστερημένο αποτέλεσμα Καθυστερημένο αποτέλεσμα Πολλαπλασιασμός (1) Διαίρεση (1) Ολίσθηση/Περιστροφή (με ενσωματωμένους πολλαπλασιαστές) Ολίσθηση/Περιστροφή (με λογικά στοιχεία LEs) 4 Ολίσθηση/Περιστροφή (χωρίς ειδικό hardware) 1 32 Υπόλοιπες εντολές 1 (1) Εξαρτάται από την επιλογή του τρόπου υλοποίησης των πολ/σμών και των διαιρέσεων Πίνακας 3.3 : Απόδοση εκτέλεσης εντολών στο Nios II/s core 3 Καθυστερημένο αποτέλεσμα Καθυστερημένο αποτέλεσμα Καθυστερημένο αποτέλεσμα Καθυστερημένο αποτέλεσμα Καθυστερημένο αποτέλεσμα Καθυστερημένο αποτέλεσμα Διαχείριση Εξαιρέσεων Το Nios II/s core υποστηρίζει τους παρακάτω τύπους εξαιρέσεων όπως αυτοί έχουν ήδη αναλυθεί: Hardware διακοπές Software traps Μη υλοποιημένες εντολές Μονάδα αποσφαλμάτωσης JTAG Το Nios II/s Core υποστηρίζει τη μονάδα αποσφαλμάτωσης JTAG, ώστε να παρέχει μια JTAG διασύνδεση με το Quartus II και το Nios II IDE. Υποστηρίζει και επιπλέον προαιρετικά χαρακτηριστικά όπως ανίχνευση δεδομένων, μεταφορά τους εκτός επεξεργαστή και αποθήκευσή τους σε εξωτερικό debug probe. 46

59 Κεφάλαιο 3 Τα Cores του Συστήματος Μη Υποστηριζόμενα Χαρακτηριστικά Το Nis II/s core δεν εκτελεί εντολές με μη ορισμένο opcode. Αν ο επεξεργαστής συναντήσει μία τέτοια εντολή το αποτέλεσμα είναι αόριστο Τα UP IP Cores Τα UP IP Cores (έκδοση 1) είναι έτοιμα προς χρήση υποκυκλώματα για τον SOPC Builder και περιλαμβάνουν σχεδόν όλες τις περιφερειακές συσκευές του DE2 Board της ALTERA. Τα cores που χρησιμοποιήθηκαν είναι: Audio Core for Altera DE2 Board Audio/Video Configuration Core for DE2 Boards Character LCD Core for Altera DE2 Board DE2 Boards External Interface for Altera DE2 Boards VGA Core for Altera DE2 Boards PIO for Altera DE2 Boards SDRAM Controller for Altera DE2 Boards To Audio Core Το Audio Core αλληλεπιδρά με τον audio codec (encoder/decoder) της πλακέτας DE2, ο οποίος είναι ο WM8731 της Wolfson Microelectronics παρέχοντας διασύνδεση για είσοδο και έξοδο ήχου (audio). Η αρχικοποίηση του Audio Core επιτυγχάνεται μέσα από τον SOPC Builder (Configuration Wizard). Το core υποστηρίζει ταυτόχρονη είσοδο και έξοδο ήχου. Επίσης για την εξασφάλιση του συγχρονισμού μεταξύ του δεξιού και του αριστερού καναλιού ήχου, δεν αναπαράγεται ήχος έως ότου ληφθούν τα δεδομένα και από τα δύο κανάλια. Αν απαιτείται η αναπαραγωγή ενός μόνο καναλιού, τότε το άλλο κανάλι θα πρέπει να περιέχει μηδενικά ηχητικά δεδομένα (zeros). Στην εικόνα 3.2 παρουσιάζεται το block διάγραμμα του Audio Core. 47

60 Κεφάλαιο 3 Τα Cores του Συστήματος Εικόνα 3.2 : Το block διάγραμμα του Audio Core Το Audio Core περιλαμβάνει 4 FIFO (First In First Out) μνήμες, οι οποίες όπως φαίνεται και από το σχηματικό διάγραμμα, χρησιμεύουν στην προσωρινή αποθήκευση των ηχητικών δεδομένων των δύο καναλιών εισόδου και εξόδου. Κάθε FIFO μνήμη μπορεί να αποθηκεύσει έως 255 δεδομένα των 32 bit. Το Audio Core απαιτεί επίσης και κάποια σήματα χρονισμού που εξαρτώνται από το ρυθμό/συχνότητα δειγματοληψίας (sample rate/frequency) που έχει οριστεί. Τα σήματα αυτά τα παρέχει ένα άλλο core της ALTERA, το DE2 Board External Interface, που θα περιγραφεί στη συνέχεια. Περιλαμβάνονται επίσης ένας Serializer και ένας Deserializer που στέλνουν τα δεδομένα σειριακά από και προς τον ADC και DAC αντίστοιχα. Τέλος εμπεριέχεται και η κατάλληλη λογική σύνδεσης του core με το υπόλοιπο σύστημα μέσω του Avalon Slave Port. Οι συναρτήσεις οδηγοί του core ελέγχουν το core και επικοινωνούν μαζί του μέσω τεσσάρων καταχωρητών των 32 bit. Με την εγγραφή στους καταχωρητές αυτούς και με την ανάγνωση τους επιτυγχάνεται η λήψη ηχητικών δεδομένων από τον Αναλογικό Ψηφιακό μετατροπέα (Analog to Digital Converter ADC) και η αποστολή τους προς τον Ψηφιακό Αναλογικό μετατροπέα (Digital to Analog Converter DAC). Ο χάρτης των καταχωρητών (register map) του core φαίνεται στην εικόνα

61 Κεφάλαιο 3 Τα Cores του Συστήματος (1) Δεσμευμένα. Οι τιμές ανάγνωσης τους είναι αόριστες (2) Μόνο ανάγνωση και εγγραφή εξερχόμενων ηχητικών δεδομένων Εικόνα 3.3 : Ο χάρτης καταχωρητών του Audio Core Ο καταχωρητής control (καταχωρητής ελέγχου) είναι αυτός που ουσιαστικά ελέγχει την όλη λειτουργία του core. Ο πίνακας 3.4 περιγράφει τον ρόλο των επιμέρους bit του καταχωρητή ελέγχου. Αριθμός Bit Όνομα Bit Ανάγνωση / Εγγραφή Περιγραφή 0 RE A/E Το bit αυτό ενεργοποιεί τις διακοπές ανάγνωσης (read interrupts). Αν το RE έχει την τιμή 1 και οι δύο FIFO μνήμες ανάγνωσης (left read FIFO, right read FIFO) περιέχουν δεδομένα, τότε το Audio Core παράγει μία αίτηση διακοπής (IRQ). Το bit αυτό ενεργοποιεί τις διακοπές εγγραφής (write 1 WE A/E interrupts). Αν το WE έχει την τιμή 1 και οι δύο FIFO μνήμες εγγραφής (left write FIFO, right write FIFO) περιέχουν δεδομένα, τότε το Audio Core παράγει μία αίτηση διακοπής (IRQ). 2 CR A/E Το bit αυτό όταν πάρει την τιμή 1, καθαρίζει (γράφοντας μηδενικά) τις δύο FIFO μνήμες ανάγνωσης και παραμένει στην τιμή αυτή έως ότου τεθεί στο 0. 3 CW A/E Το bit αυτό όταν πάρει την τιμή 1, καθαρίζει (γράφοντας μηδενικά) τις δύο FIFO μνήμες εγγραφής και παραμένει στην τιμή αυτή έως ότου τεθεί στο 0. 8 RI A Υποδεικνύει ότι εκκρεμεί μία διακοπή ανάγνωσης. 9 WI A Υποδεικνύει ότι εκκρεμεί μία διακοπή εγγραφής. Πίνακας 3.4 : Περιγραφή των bits του καταχωρητή ελέγχου Ο καταχωρητής fifospace διαχειρίζεται τις FIFO μνήμες ανάγνωσης και εγγραφής. Ειδικότερα, τα πεδία WSLC (b 31 b 24 ) υποδεικνύουν των αριθμό των εξερχόμενων δεδομένων που είναι διαθέσιμα στις δύο FIFO μνήμες εγγραφής (left write FIFO, right write FIFO). 49

62 Κεφάλαιο 3 Τα Cores του Συστήματος Αντίστοιχα, τα πεδία WSRC (b 23 b 16 ) υποδεικνύουν των αριθμό των εξερχόμενων δεδομένων που είναι διαθέσιμα στις δύο FIFO μνήμες ανάγνωσης (left read FIFO, right read FIFO). Ο καταχωρητής leftdata είναι καταχωρητής ανάγνωσης/εγγραφής ηχητικών δεδομένων εισόδου/εξόδου του αριστερού καναλιού. Ομοίως, ο καταχωρητής rightdata είναι καταχωρητής ανάγνωσης / εγγραφής ηχητικών δεδομένων εισόδου/εξόδου του δεξιού καναλιού. Το Audio Core, όπως έχει αναφερθεί, μπορεί να παράγει διακοπές (interrupts) εφόσον έχει ενεργοποιηθεί η δυνατότητα αυτή. Αναλυτικότερα, προκαλεί μία διακοπή ανάγνωσης όταν η FIFO μνήμη ανάγνωσης είναι γεμάτη κατά 75% ή περισσότερο και μία διακοπή εγγραφής όταν η FIFO μνήμη εγγραφής είναι γεμάτη κατά 25% ή λιγότερο. Η ALTERA παρέχει έτοιμες C συναρτήσεις οι οποίες είναι προσβάσιμες μέσω του Hardware Abstraction Layer (HAL) και υλοποιούν βασικές λειτουργίες του Audio Core. Για τη σωστή λειτουργία των παρεχόμενων συναρτήσεων θα πρέπει στο κυρίως πρόγραμμα/εφαρμογή να συμπεριληφθεί το αρχείο altera_up_avalon_audio.h. Οι συναρτήσεις αυτές είναι οι εξής : alt_up_audio_open_dev Η συνάρτηση αυτή ενεργοποιεί το Audio Core alt_up_audio_enable_read_interrupt Η συνάρτηση αυτή ενεργοποιεί τις διακοπές ανάγνωσης του Audio Core alt_up_audio_disable_read_interrupt Η συνάρτηση αυτή απενεργοποιεί τις διακοπές ανάγνωσης του Audio Core alt_up_audio_reset_audio_core Μηδενίζει τα δεδομένα των FIFO μνημών εισόδου/εξόδου και για τα δύο κανάλια alt_up_audio_read_fifo Η συνάρτηση αυτή διαβάζει τα περιεχόμενα των δύο FIFO μνημών εισόδου. alt_up_audio_write_fifo Η συνάρτηση αυτή γράφει τα κατάλληλα δεδομένα στις δύο FIFO μνήμες εξόδου To Audio/Video Configuration Core Το Audio/Video Configuration Core αλληλεπιδρά με τον Audio Codec και τη Video είσοδο του DE2 Board καθώς και με τις 2 Video Daughter Boards: Digital Camera (TRDB_DC2) και TFTLCD Module (TRDB_LCM) και παρέχει έναν εύκολο τρόπο για την παραμετροποίηση / αρχικοποίηση των παραπάνω στοιχείων. 50

63 Κεφάλαιο 3 Τα Cores του Συστήματος Το core αυτό περιέχει τέσσερις καταχωρητές των 32 bit, στους οποίους αποθηκεύονται οι ρυθμίσεις των συσκευών και ένα serializer που στέλνει τις ρυθμίσεις αυτές μέσω του πρωτοκόλλου επικοινωνίας I 2 C και διαύλων τριών καλωδίων στα audio και video περιφερειακά. Ο χάρτης των καταχωρητών (register map) του core φαίνεται στην εικόνα 3.4 (1) Δεσμευμένα. Οι τιμές ανάγνωσης τους είναι αόριστες Εικόνα 3.4 : Ο χάρτης καταχωρητών του Audio/Video Configuration Core Ο καταχωρητής control (καταχωρητής ελέγχου) είναι αυτός που ελέγχει τη λειτουργία του core. Ο πίνακας 3.5 περιγράφει το ρόλο των επιμέρους bit του καταχωρητή ελέγχου. Αριθμός Bit Όνομα Bit Ανάγνωση / Εγγραφή Περιγραφή 0 R Ε Εκτελεί επαναφορά (reset) του core και το επαναρχικοποιεί αν έχει επιλεγεί η ρύθμιση auto initialize. Η audio και video συσκευή του DE2 επαναφέρονται επίσης, όταν τεθεί στο λογικό 1. 1 P Ε Στέλνει ένα bit τερματισμού στον αντίστοιχο δίαυλο. 2 S Ε Στέλνει ένα bit εκκίνησης και την διεύθυνση της συσκευής στον αντίστοιχο δίαυλο. 3 RW Ε Χρησιμοποιείται για να υποδείξει αν τα εισερχόμενα δεδομένα είναι για ανάγνωση ή εγγραφή Πίνακας 3.5 : Περιγραφή των bits του καταχωρητή ελέγχου Ο καταχωρητής status (καταχωρητής κατάστασης) είναι αυτός που ελέγχει την κατάσταση αποστολής των ρυθμίσεων. Ο πίνακας 3.6 περιγράφει το ρόλο των επιμέρους bit του καταχωρητή κατάστασης. Αριθμός Bit Όνομα Bit Ανάγνωση / Εγγραφή Περιγραφή 0 ACK Α/Ε Acknowledge Η τιμή 1 υποδηλώνει ότι συνέβη κάποιο σφάλμα κατά την μεταφορά των δεδομένων. 51

64 Κεφάλαιο 3 Τα Cores του Συστήματος 1 TD Α Transferring Data Υποδηλώνει ότι τα bits εκκίνησης και τερματισμού, διεύθυνση ή δεδομένα συνεχίζουν να αποστέλλονται. 2 AI Α Auto Initialize Υποδηλώνει ότι η συσκευή βρίσκεται σε κατάσταση αρχικοποίησης. AIE RW Α/Ε Auto Initialize Error Υποδηλώνει ότι συνέβη κάποιο σφάλμα κατά τη διαδικασία αρχικοποίησης της συσκευής. Πίνακας 3.6 : Περιγραφή των bits του καταχωρητή κατάστασης Ο καταχωρητής address (καταχωρητής διευθύνσεων) χρησιμοποιείται για την αποστολή της διεύθυνσης του καταχωρητή ελέγχου της συσκευής προς αρχικοποίηση/παραμετροποίηση. Για τον audio codec του DE2, ο καταχωρητής αυτός περιλαμβάνει επτά bit για την διεύθυνση και εννέα bit για τα δεδομένα. Επειδή όμως κάθε φορά αποστέλλονται οκτώ bits (ένα byte), το ένατο bit δεδομένων ενώνεται μαζί με τα επτά bit της διεύθυνσης σχηματίζοντας έτσι δύο πακέτα των 8 bit. Έτσι, τα επτά bit ολισθαίνουν κατά μία θέση αριστερά και το ένατο bit δεδομένων τοποθετείται στη θέση 0 του καταχωρητή δεδομένων, όπως φαίνεται στην εικόνα 3.5 Εικόνα 3.5 : Περιγραφή των bits του καταχωρητή διεύθυνσης Ο καταχωρητής data (καταχωρητής δεδομένων) χρησιμοποιείται για την αποστολή των δεδομένων από και προς τον καταχωρητή ελέγχου της συσκευής προς αρχικοποίηση/παραμετροποίηση. Ο audio codec του DE2 λαμβάνει μόνο δεδομένα, οπότε δεν πρέπει να γίνεται ανάγνωση του καταχωρητή αυτού. Οι αλλαγές των ρυθμίσεων του Audio/Video Configuration Core επιτυγχάνονται μέσα από τον SOPC Builder (Configuration Wizard). Το core προσφέρει πληθώρα ρυθμίσεων όπως: Γενικές Ρυθμίσεις Use Altera s UP IP Audio Controller Επιλογή ώστε ο audio codec να συνεργαστεί με το UP IP Audio Core Power Down Audio Chip Απενεργοποιεί εντελώς τον audio codec. 52

65 Κεφάλαιο 3 Τα Cores του Συστήματος Volume Control Επιλογή έντασης του ήχου για τα κανάλια (left, right) εισόδου και εξόδου με ανεξάρτητο τρόπο. Επιλογή της πηγής ήχου Line In to ADC Επιλέγει το Line In ως είσοδο προς τον ADC. Mic In to ADC Επιλέγει το Mic In ως είσοδο προς τον ADC. Mute Mic Θέτει την ένταση του μικροφώνου στο μηδέν. Mic Boost Enable Προσθέτει επιπλέον ενίσχυση στο σήμα του μικροφώνου. Επιλογή της εξόδου ήχου DAC Output Επιτρέπει στα δεδομένα του DAC να περάσουν στην έξοδο. Line In Bypass Στέλνει το σήμα από την είσοδο Line In κατευθείαν στην έξοδο παρακάμπτοντας τον ADC και τον DAC. Mic Bypass Στέλνει το σήμα από την είσοδο Mic In κατευθείαν στην έξοδο παρακάμπτοντας τον ADC και τον DAC. Mic Attenuation Ορίζει την εξασθένηση του σήματος του μικροφώνου σε db Επιλογές ψηφιακού ελέγχου High Pass Filter Προσθέτει ένα υψιπερατό φίλτρο στην είσοδο, απαλείφοντας τη συνεχή συνιστώσα (DC offset) του σήματος εισόδου. Store DC Offset Αποθηκεύει τη συνεχή συνιστώσα του σήματος εισόδου. De emphasis Control Επιτρέπει την απενεργοποίηση της λειτουργίας deemphasis ή την ενεργοποίησή της, ορίζοντας μία συχνότητα αποκοπής. Soft Mute μειώνει τις συνιστώσες υψηλών συχνοτήτων στην έξοδο Επιλογές μορφής του ηχητικού σήματος Data Format επιτρέπει την επιλογή της μορφής των δεδομένων (DSP Mode, I2S Format, Left Justified ή Right Justified). Αν έχει επιλεγεί η χρήση του UP IP Audio Core τότε η επιλογή Left Justified επιλέγεται αυτόματα. Bit Length Επιτρέπει την επιλογή του αριθμού των bits για κάθε κανάλι. Επιτρεπτές τιμές είναι αυτές των 16,20 και 24 bit για όλες τις μορφές δεδομένων, ενώ η τιμή των 32 bit είναι διαθέσιμη μόνο για τις I2S και Left Justified μορφές δεδομένων. Και ο ADC και ο DAC δουλεύουν με δεδομένα των 24 bit. Έτσι αν επιλεγεί διαφορετική ρύθμιση εφαρμόζονται τεχνικές zero padding ή stripping των LSBits. 53

66 Κεφάλαιο 3 Τα Cores του Συστήματος Επιλογές Δειγματοληψίας Ο audio codec μπορεί να δειγματοληπτεί είτε σε USB Mode είτε σε Normal Mode. Σε USB Mode η συχνότητα του ρολογιού που συγχρονίζει τον Audio codec παραμένει σταθερή και ίση με 12 MHz, ενώ σε Normal Mode η συχνότητα ρολογιού μπορεί να διαφέρει. Επίσης, σε κάθε mode μπορεί να οριστεί ο ρυθμός δειγματοληψίας (sample rate, Base Over Sampling Rate). Στον πίνακα 3.7 παρουσιάζονται οι διαθέσιμες επιλογές όσον αφορά το ρυθμό/συχνότητα δειγματοληψίας σε Normal Mode. Η ALTERA παρέχει έτοιμες C συναρτήσεις οι οποίες είναι προσβάσιμες μέσω του Hardware Abstraction Layer (HAL) και με αυτές επιτυγχάνεται ο προγραμματισμός των ρυθμίσεων των συσκευών αυτών σε software. Για τη σωστή λειτουργία των παρεχόμενων συναρτήσεων θα πρέπει στο κυρίως πρόγραμμα/εφαρμογή να συμπεριληφθεί το αρχείο altera_up_avalon_audio_video_config.h. Οι συναρτήσεις αυτές είναι οι εξής : alt_up_av_config_open_dev Η συνάρτηση αυτή ενεργοποιεί το Audio/Video Configuration Core alt_up_audio_av_config_send_audio_cfg Η συνάρτηση αυτή στέλνει τις αντίστοιχες ρυθμίσεις στον καταχωρητή ελέγχου του audio codec του DE2 alt_up_audio_av_config_send_video_cfg Η συνάρτηση αυτή στέλνει τις αντίστοιχες ρυθμίσεις στον καταχωρητή ελέγχου του video controller του DE2 alt_up_audio_av_config_lcm_cfg Η συνάρτηση αυτή στέλνει τις αντίστοιχες ρυθμίσεις στον καταχωρητή ελέγχου του TFTLCD Module (TRDB_LCM) alt_up_audio_av_config_dc2_cfg Η συνάρτηση αυτή στέλνει τις αντίστοιχες ρυθμίσεις στον καταχωρητή ελέγχου της Video Daughter Boards Digital Camera (TRDB_DC2). 54

67 Κεφάλαιο 3 Τα Cores του Συστήματος Πίνακας 3.7 : Πίνακας αναφοράς ρυθμών δειγματοληψίας σε Normal Mode To DE Boards External Interface Το DE2 Board External Interface Core παράγει τα κατάλληλα σήματα χρονισμού που είναι αναγκαία για τη λειτουργία του Audio Core, του VGA Core και του SDRAM Controller. Αναλυτικότερα, για τη λειτουργία του Audio Core, το DE Board External Interface Core παράγει ένα σήμα ρολογιού με όνομα AUD_XCK. Η συχνότητα του σήματος αυτού μπορεί να πάρει διάφορες τιμές (πέντε στο σύνολο) ανάλογα με τις ρυθμίσεις που έχουν γίνει για το ρυθμό δειγματοληψίας του audio codec.το σήμα αυτό συνδέεται στον αντίστοιχο ακροδέκτη (pin) του Cyclone II. Το VGA Core, που θα περιγραφεί στην συνέχεια, απαιτεί την ύπαρξη ενός ρολογιού συχνότητας 25MHz με όνομα VGA_CLK, το οποίο θα συνδεθεί στον VGA DAC. Επιπλέον χρειάζεται και ένα ρολόι συχνότητας 50MHz για τα Avalon slave ports, το οποίο όμως παρέχεται από το ρολόι του συστήματος. Το σήμα VGA_CLK συνδέεται στον αντίστοιχο ακροδέκτη (pin) του Cyclone II. 55

68 Κεφάλαιο 3 Τα Cores του Συστήματος Το Board External Interface Core παράγει επίσης και ένα σήμα με όνομα DRAM_CLK με 3ns phase shift από το ρολόι του συστήματος (συχνότητας 50MHz) για να εξασφαλιστεί ο σωστός χρονισμός του SDRAM chip του DE2.Το σήμα αυτό συνδέεται στον αντίστοιχο ακροδέκτη (pin) του Cyclone II. Το συγκεκριμένο core έχει ένα καταχωρητή ελέγχου (ανάγνωσης μόνο) που φαίνεται στην εικόνα 3.6 και περιγράφεται στον πίνακα 3.8. (1) Δεσμευμένα. Οι τιμές ανάγνωσης τους είναι αόριστες (2) Έχει την τιμή 0, αν το αντίστοιχο clockδεν έχει ενεργοποιηθεί Εικόνα 3.6 : Ο χάρτης καταχωρητή του DE Boards External Interface Core Αριθμός Bit Όνομα Bit Ανάγνωση / Εγγραφή Περιγραφή 0 VCL Α VGA Clock Lock Παίρνει την τιμή 1 όταν το VGA clock έχει σταθεροποιηθεί 1 SCL Α SDRAM Clock Lock Παίρνει την τιμή 1 όταν το SDRAM clock έχει σταθεροποιηθεί 2 ACL Α Audio Clock Lock Παίρνει την τιμή 1 όταν το Audio clock έχει σταθεροποιηθεί Πίνακας 3.8 : Περιγραφή των bits του καταχωρητή ελέγχου Η παραμετροποίηση του Core γίνεται στο περιβάλλον του SOPC Builder και προσφέρονται οι εξής επιλογές: Development and Education Board Επιλογή της αναπτυξιακής κάρτας (DE2, DE1) Required Clocks Επιλογή των υποκυκλωμάτων (Audio, VGA, SDRAM) που υπάρχουν στο σύστημα και απαιτούν τα αντίστοιχα σήματα ρολογιού που περιγράφθηκαν. Audio Clock Settings Επιλογή της συχνότητας του ρολογιού του audio codec To Character LCD Core Το Character LCD Core, το σχηματικό διάγραμμα του οποίου φαίνεται στην εικόνα 3.7, απεικονίζει χαρακτήρες στην οθόνη υγρών κρυστάλλων (LCD) του DE2 Board σύμφωνα με 56

69 Κεφάλαιο 3 Τα Cores του Συστήματος την Character Generation ROM Pattern που παρουσιάζεται στην εικόνα 3.8. Η LCD οθόνη του DE2 Board υποστηρίζει 16 x 2 χαρακτήρες (16 χαρακτήρες ανά γραμμή με δύο γραμμές μέγιστο). Το Character LCD Core αρχικοποιεί τον LCD controller κατά το reset του συστήματος και επικοινωνεί με αυτό αμέσως μετά. Παρέχει επίσης μία memory mapped διασύνδεση ώστε ο χρήστης να το ελέγχει και να εμφανίζει χαρακτήρες στην LCD οθόνη γράφοντας σε συγκεκριμένες θέσεις μνήμης. Το συγκεκριμένο core απαιτεί ένα ρολόι συχνότητας 50MHz που παρέχεται από το DE2 board. Εικόνα 3.7 : Ο χάρτης καταχωρητή του Character LCD Core O LCD controller ελέγχει τη λειτουργία της LCD οθόνης και επικοινωνεί μαζί της, με του καταχωρητές που φαίνονται στον πίνακα 3.9. Offset in Bytes Register Name Read/Write instruction R/W Reserved Λέξη ελέγχου που μπορεί να κάνει εκκαθάριση της LCD οθόνης και να ορίσει την θέση του χαρακτήρα Τα δεδομένα στον καταχωρητή αυτό 4 data R/W Reserved λειτουργούν ως δείκτης στην LCD Character Generation ROM Πίνακας 3.9 : Ο χάρτης καταχωρητή του Character LCD Core Η αρχικοποίηση του Character LCD Core επιτυγχάνεται μέσω του SOPC Builder. Το core προσφέρει μία μόνο ρύθμιση: 57

70 Κεφάλαιο 3 Τα Cores του Συστήματος Display Cursor Επιλογή τρόπου εμφάνισης του δρομέα της LCD οθόνης. Υποστηρίζονται διάφοροι τρόποι όπως : Normal, Blinking, Both (Normal & Blinking) καθώς και No Cursor. Εικόνα 3.8 : Η Character Generation ROM Pattern Από την Altera παρέχονται οι απαραίτητες C συναρτήσεις που είναι προσβάσιμες μέσω του HAL, οι οποίες υλοποιούν τις βασικές λειτουργίες ενός LCD controller. Για τη σωστή 58

71 Κεφάλαιο 3 Τα Cores του Συστήματος λειτουργία των συναρτήσεων αυτών, θα πρέπει στο κυρίως πρόγραμμα/εφαρμογή να συμπεριληφθεί το αρχείο altera_up_avalon_character_lcd.h. Οι συναρτήσεις αυτές είναι οι εξής : alt_up_character_lcd_open_dev Η συνάρτηση αυτή ενεργοποιεί το Character LCD Core. alt_up_character_lcd_init Αρχικοποιεί το Character LCD Core καθαρίζοντας την LCD οθόνη από χαρακτήρες. alt_up_character_lcd_write_fd alt_up_character_lcd_set_cursor_pos Θέτει την θέση του δρομέα alt_up_character_lcd_shift_cursor Μεταφέρει την θέση του δρομέα προς τα δεξιά ή προς τα αριστερά κατά ένα αριθμό θέσεων. alt_up_character_lcd_write Εμφανίζει ένα συγκεκριμένο χαρακτήρα στην LCD οθόνη στο σημείο όπου δείχνει ο δρομέας. alt_up_character_lcd_earse_pos Διαγράφει τον χαρακτήρα σε μία συγκεκριμένη θέση. alt_up_character_lcd_shift_display Μεταφέρει όλο το κείμενο που εμφανίζεται στην οθόνη προς τα δεξιά ή προς τα αριστερά κατά ένα αριθμό θέσεων To VGA Core Το VGA Core παράγει τα σήματα που απαιτούνται για απεικόνιση σε VGA οθόνη συμπεριλαμβανομένων των οριζόντιων και κάθετων σημάτων χρονισμού. Για την παραγωγή των σημάτων αυτών απαιτείται ένα ρολόι συχνότητας 25 MHz, το οποίο αναφέρεται ως εσωτερικό ρολόι VGA και παρέχεται από το DE Boards External Interface Core. Τα slave ports του VGA Core, που θα αναλυθούν στη συνέχεια, λειτουργούν σε συχνότητα 50 MHz. Το VGA Core παράγει μία ανάλυση οθόνης 640x480 εικονοστοιχείων (pixels) με ρυθμό ανανέωσης 60 πλαισίων ανά δευτερόλεπτο (60 frames per second). Υποστηρίζονται επίσης μικρότερες αναλύσεις για την επίτευξη των οποίων το VGA Core 59

72 Κεφάλαιο 3 Τα Cores του Συστήματος αντιγράφει την πληροφορία των pixels στα γειτονικά ανάλογα με την επιθυμητή ανάλυση. Στην εικόνα 3.9 παρουσιάζεται το σχηματικό διάγραμμα του VGA Core. Εκτός από την εμφάνιση pixel στην οθόνη (pixel mode), υποστηρίζεται επιπλέον η εμφάνιση χαρακτήρων (character mode) καθώς και μία μίξη των δύο (character overlay mode) στην οποία οι χαρακτήρες σχηματίζονται πάνω από τα pixel της εικόνας. Εικόνα 3.9 : Tο σχηματικό διάγραμμα του VGA Core Τα pixel mode και character mode έχουν τα δικά τους Avalon slave interfaces, Avalon_pixel_slave και Avalon_character_slave. Αυτά, παρουσιάζονται ως συνεχόμενα διαστήματα μνήμης τόσο μεγάλα όσο χρειάζεται για την αποθήκευση των απαραίτητων δεδομένων. Δηλαδή, συμπεριφέρονται ως απλές διασυνδέσεις μνήμης (memory interfaces), εκτός της περίπτωσης όπου η λειτουργία back buffering, που θα παρουσιαστεί στη συνέχεια, είναι ενεργοποιημένη. Δεν υπάρχουν memory map mapped καταχωρητές ελέγχου σε κανένα από τα Avalon interfaces. Pixel Mode Το VGA Core χρησιμοποιεί το SRAM chip του DE2 board ως pixel buffer. Το mode αυτό είναι κατάλληλο για εμφάνιση μίας εικόνας στη VGA οθόνη. Επίσης μπορεί να οριστεί το χρώμα κάθε pixel σύμφωνα με το RGB (Red Green Blue) μοντέλο χρωμάτων, ακολουθώντας τις εξής ρυθμίσεις: 16 bit color mode σύμφωνα με το οποίο το κόκκινο και μπλε χρώμα απεικονίζονται με πέντε bits ενώ το πράσινο με έξι, όπως φαίνεται στην εικόνα

73 Κεφάλαιο 3 Τα Cores του Συστήματος Εικόνα 3.10 : Το pixel data format για 16 bit color mode 8 bit color mode σύμφωνα με το οποίο τα pixels εμφανίζονται σε αποχρώσεις του γκρι καταλαμβάνοντας 8 bits,όπως φαίνεται στην εικόνα 3.11 Εικόνα 3.11 : Το pixel data format για 8 bit color mode Όπως έχει αναφερθεί, το VGA Core υποστηρίζει ανάλυση 640x480= pixels. Ωστόσο λόγω περιορισμού μεγέθους του pixel buffer, μία χαμηλότερη ανάλυση ίσως είναι αναγκαία. Για την υποστήριξη χαμηλότερων αναλύσεων, το VGA Core χρησιμοποιεί τα mega pixels όπου κάθε mega pixel είναι μία ομάδα από pixels που έχουν το ίδιο χρώμα, ελαττώνοντας έτσι την ανάλυση. Οι ακόλουθες αναλύσεις είναι διαθέσιμες: 640x480 κάθε mega pixel είναι ένα απλό pixel 320x240 κάθε mega pixel είναι μία ομάδα pixels 2x2 160x120 κάθε mega pixel είναι μία ομάδα pixels 4x4 80x60 κάθε mega pixel είναι μία ομάδα pixels 8x8 40x30 κάθε mega pixel είναι μία ομάδα pixels 16x16 Το back buffering είναι μία τεχνική που χρησιμοποιεί δύο image buffers, όπου ο ένας από τους δύο είναι κάθε φορά ενεργός και εμφανίζεται στη VGA οθόνη, ενώ στον άλλο μη ορατό buffer σχηματίζεται κάποια εικόνα. Όταν η εικόνα αυτή ολοκληρωθεί, ο ρόλος των δύο buffers εναλλάσσεται. Το bit b 31 των δεδομένων χρησιμοποιείται για την αλλαγή του image buffer μέσω ειδικής C συνάρτησης. Επίσης πρέπει να σημειωθεί ότι η αλλαγή του back buffer καταναλώνει κάποιο χρόνο λόγω του γεγονότος ότι το VGA Core πρέπει να περιμένει να ολοκληρωθεί η προς απεικόνιση εικόνα, διαδικασία που μπορεί να πάρει έως και το 1/60 του δευτερολέπτου. Αν το LSB (least significant bit) της θέσης μνήμης του Avalon pixel slave έχει την τιμή 1 τότε οι image buffers βρίσκονται στη διαδικασία εναλλαγής και δεν μπορούν να διαβαστούν ή να εγγραφούν νέες τιμές των pixels. Character Mode Όταν το VGA Core λειτουργεί σε character mode, η μονάδα απεικόνισης είναι ένας χαρακτήρας. Μία συσκευή στέλνει ASCII χαρακτήρες στο Avalon interface 61

74 Κεφάλαιο 3 Τα Cores του Συστήματος avalon_char_slave του VGA Core το οποίο χειρίζεται τη μετατροπή των χαρακτήρων σε pixels. Κατά την αρχικοποίηση του συστήματος, το VGA Core θέτει όλους τους χαρακτήρες στο χαρακτήρα space ώστε να μην εμφανίζεται κανένας. Αυτή η λειτουργία εκκαθάρισης της οθόνης μπορεί να καταναλώσει έως και 5000 κύκλους ρολογιού για να ολοκληρωθεί, διαδικασία που δεν αναμένεται να δημιουργήσει προβλήματα. Μετά την αρχικοποίηση, παρέχεται δυνατότητα εκκαθάρισης της οθόνης με την εγγραφή ενός 1 στην υψηλότερη θέση μνήμης του avalon_char_slave. Κατά τη διαδικασία αυτή, κανένα δεδομένο δεν μπορεί να γραφτεί ή να διαβαστεί. Το χρώμα κάθε χαρακτήρα μπορεί επίσης να οριστεί χρησιμοποιώντας το RGB μοντέλο χρωμάτων ακολουθώντας τις εξής ρυθμίσεις: 1 bit color mode σύμφωνα με την οποία χαρακτήρες εμφανίζονται με λευκό χρώμα, όπως φαίνεται στην εικόνα 3.12 Εικόνα 3.12 : Το character data format για 1 bit color mode (οι παρακάτω επιλογές δεν υποστηρίζονται στην έκδοση 1) 4 bit color mode 8 bit color mode 9 bit color mode Η ανάλυση των χαρακτήρων ορίζεται από τον αριθμό των χαρακτήρων (του ίδιου μεγέθους) ανά γραμμή και τον αριθμό των γραμμών ανά οθόνη. Τα εξής μεγέθη υποστηρίζονται: 8x8 κάθε χαρακτήρας καταλαμβάνει μια ομάδα pixel 8x8. Συνεπώς, μπορούν να εμφανιστούν 80 χαρακτήρες ανά γραμμή και 60 γραμμές ανά οθόνη. 16x16 κάθε χαρακτήρας καταλαμβάνει μια ομάδα pixel 16x16. Συνεπώς, μπορούν να εμφανιστούν 40 χαρακτήρες ανά γραμμή και 30 γραμμές ανά οθόνη. Character Overlay Mode Στη λειτουργία αυτή, παρέχεται η δυνατότητα εμφάνισης και χαρακτήρων και pixels με τους χαρακτήρες να εμφανίζονται πάνω από τα pixels. 62

75 Κεφάλαιο 3 Τα Cores του Συστήματος Οι συντεταγμένες αποθηκεύονται στις θέσεις μνήμης του διαθέσιμου χώρου του VGA Core. Όλα τα δεδομένα που διαχειρίζεται το VGA Core είναι δεδομένα των 32 bit. Ο υποστηριζόμενος τρόπος διευθυνσιοδότησης ονομάζεται X Y mode, σύμφωνα με τον οποίο η διεύθυνση των δεδομένων περιέχει τις x, y συντεταγμένες όπως φαίνεται στην εικόνα Εικόνα 3.13 : Το Χ Υ Σύστημα συντεταγμένων Η μορφή της διεύθυνσης (address format) φαίνεται στην εικόνα 3.14 όπου οι τιμές των m και n σχετίζονται με την ανάλυση του VGA Core σύμφωνα με τους τύπους: m=ceil(log 2 X) και n=ceil(log 2 Y), όπου τα X, Y είναι οι συντεταγμένες των X,Y διευθύνσεων αντίστοιχα. Εικόνα 3.14 : Το Χ Υ address format Για παράδειγμα, για την ανάλυση 80x60 ισχύει: m=ceil(log 2 80)=7 και n=ceil(log 2 60)=6. Έτσι, για αυτή την ανάλυση το address format παρουσιάζεται στην εικόνα Εικόνα 3.15 : Το Χ Υ address format για ανάλυση χαρακτήρων 80x60 Στον πίνακα 3.10 παρουσιάζεται η σύνθεση συχνά χρησιμοποιούμενων χρωμάτων. Οι RGB τιμές κυμαίνονται από 0 έως 255. Οποιοσδήποτε συνδυασμός τους παράγει και το αντίστοιχο χρώμα. 63

76 Κεφάλαιο 3 Τα Cores του Συστήματος Όνομα Χρώματος R G B Χρώμα Red Green Blue Yellow Cyan Magenta Πίνακας 3.10 : Ο RGB χάρτης χρωμάτων Το VGA Core μπορεί να ενσωματωθεί εύκολα σε ένα σύστημα και να παραμετροποιηθεί μέσω του SOPC Builder όπου παρέχονται οι ακόλουθες ρυθμίσεις: Επιλογή τρόπου λειτουργίας (mode tab) Pixel Mode ενεργοποιεί τον τρόπο λειτουργίας pixel mode. Επίσης, ρυθμίζει την ανάλυση και το χρώμα των pixels του VGA Core καθώς και τη λειτουργία του back buffering. Character Mode ενεργοποιεί τον τρόπο λειτουργίας character mode. Ρυθμίζει επίσης το μέγεθος και το χρώμα των χαρακτήρων του VGA Core. Character Overlay Mode ενεργοποιεί τον τρόπο λειτουργίας character overlay mode. Έτοιμες C συναρτήσεις παρέχονται και για το VGA Core οι οποίες υλοποιούν τις βασικές λειτουργίες ενός VGA Controller. Για τη σωστή λειτουργία των συναρτήσεων αυτών, θα πρέπει στο κυρίως πρόγραμμα/εφαρμογή να συμπεριληφθεί το αρχείο altera_up_avalon_vga.h. Επίσης, όταν έχει επιλεχθεί ο τρόπος λειτουργίας Character Overlay Mode, πρέπει να ορισθεί ένα σύμβολο με όνομα OVERLAY_MODE και να προστεθεί στα flags του compiler. Οι συναρτήσεις αυτές είναι οι εξής : alt_up_vga_open_dev Η συνάρτηση αυτή ενεργοποιεί το VGA Core. alt_up_vga_draw_pixel Η συνάρτηση αυτή εμφανίζει ένα pixel σε συγκεκριμένες συντεταγμένες (x,y) πάνω στη VGA οθόνη. alt_up_vga_draw_pixel_with_back_buffer Η συνάρτηση αυτή εμφανίζει ένα pixel σε συγκεκριμένες συντεταγμένες (x,y) πάνω στη VGA οθόνη με εναλλαγή του back buffer. 64

77 Κεφάλαιο 3 Τα Cores του Συστήματος alt_up_vga_draw_char_1b Η συνάρτηση αυτή εμφανίζει ένα χαρακτήρα σε συγκεκριμένες συντεταγμένες (x,y) πάνω στη VGA οθόνη με λευκό χρώμα To PIO Core Το PIO (Parallel Input/Output) Core παρέχει τη δυνατότητα μεταφοράς δεδομένων ανάμεσα στον Nios II και τις I/O συσκευές (όπως LEDS, switches κτλ). Η μεταφορά αυτή πραγματοποιείται με παράλληλο τρόπο (1 32 bits). Το συγκεκριμένο core περιέχει τέσσερις καταχωρητές, όπως φαίνεται στον πίνακα 3.11, που είναι προσβάσιμοι ως θέσεις μνήμης. Offset in Bytes Register Name Read/Write Bits (n 1) 0 0 data Input R Δεδομένα που υπάρχουν στα PIOs. Output W Δεδομένα που πρέπει να εγγραφούν στα PIOs. Ανεξάρτητος έλεγχος διεύθυνσης για κάθε IO port. Η τιμή 4 direction R/W 0 θέτει τη διεύθυνση ως είσοδο, ενώ η τιμή 1 ως έξοδο. 8 interruptmask R/W Ενεργοποίηση/απενεργοποίηση IRQ για κάθε είσοδο. Η τιμή 1 ενεργοποιεί τις διακοπές για την αντίστοιχη είσοδο. 12 edgecapture R/W Edge detection για κάθε είσοδο. Πίνακας 3.11 : Ο χάρτης καταχωρητή του PIO Core Ο data καταχωρητής (καταχωρητής δεδομένων) αποθηκεύει τα δεδομένα (n bits) που μεταφέρονται μεταξύ των PIOs και του Nios II. Μπορεί να υλοποιηθεί ως καταχωρητής εισόδου, εξόδου ή εισόδου εξόδου (bidirectional). Ο address καταχωρητής (καταχωρητής διεύθυνσης) ορίζει τη διεύθυνση των δεδομένων για κάθε ένα από τα n bit δεδομένα. Η τιμή 0 θέτει την διεύθυνση ως είσοδο, ενώ η τιμή 1 ως έξοδο. Ο interruptmask καταχωρητής χρησιμοποιείται για την ενεργοποίηση των διακοπών των PIOs. Ο edgecapture καταχωρητής υποδεικνύει αλλαγή της λογικής τιμής των σημάτων συνδεδεμένα στα PIOs. 65

78 Κεφάλαιο 3 Τα Cores του Συστήματος Ο αριθμός n των bits καθώς και η διεύθυνση της μεταφοράς (Input, Output, Bidirectional) καθορίζονται μέσω του SOPC Builder SDRAM Controller Ο SDRAM Controller επικοινωνεί με το SDRAM chip του DE2 Board και παρέχει την κατάλληλη διασύνδεση για τη χρήση του SDRAM chip. Αναλυτικότερα, ο SDRAM controller παρέχει μία byte addressable διασύνδεση προς το SDRAM chip του DE2 Board. Με αυτόν τον τρόπο μία master συσκευή (όπως ο επεξεργαστής Nios II), μπορεί να διαβάσει ή/και να γράψει διαδεδομένα στον SDRAM controller. O SDRAM controller χρειάζεται περίπου 100μs για να εκκινήσει μετά το άνοιγμα του DE2 board πριν να μπορεί να είναι προσβάσιμος. Θα υπάρχει επίσης κάποια καθυστέρηση στην ανάγνωση/εγγραφή δεδομένων λόγω του χρόνου ανανέωσης της SDRAM μνήμης. Το απαραίτητο ρολόι για το core αυτό παρέχεται, όπως έχει ήδη αναφερθεί, από το DE Boards External Interface Core. O συγκεκριμένος controller μπορεί να ενσωματωθεί σε οποιοδήποτε σύστημα μέσα από τον SOPC Builder χωρίς την ανάγκη αρχικοποίησης / παραμετροποίησης Τα IP Cores Τα IP Cores που παρέχονται από την ALTERA, εγκαθίστανται μαζί με το Quartus και μπορούν να ενσωματωθούν σε οποιοδήποτε SOPC σύστημα. Τα περισσότερα IP Cores υποστηρίζονται και από τις κατάλληλες software συναρτήσεις για πλήρη εκμετάλλευση των δυνατοτήτων τους από τον επεξεργαστή Nios II. Τα cores που χρησιμοποιήθηκαν είναι τα εξής: On chip Memory JTAG UART Timer Core On chip Μνήμη Τα FPGAs της ALTERA ενσωματώνουν block μνήμης (on chip memory blocks) τα οποία μπορούν να διαμορφωθούν είτε ως RAM μνήμη είτε ως ROM μνήμη στα SOPC συστήματα. Η on chip μνήμη παρουσιάζει τα ακόλουθα πλεονεκτήματα: 66

79 Κεφάλαιο 3 Τα Cores του Συστήματος Γρήγορος χρόνος πρόσβασης συγκρινόμενη με off chip μνήμη. Ο SOPC builder αρχικοποιεί αυτόματα την on chip μνήμη μέσα στο σύστημα εξαλείφοντας την ανάγκη για χειροκίνητες συνδέσεις Συγκεκριμένα block μνήμης μπορούν να έχουν αρχικοποιημένα δεδομένα κατά την ενεργοποίηση του FPGA (power up)(boot code). Ένα μειονέκτημα της on chip μνήμης είναι ότι το μέγεθός της δεν μπορεί να ξεπερνάει το 1 MByte στα μεγαλύτερα FPGAs. Η παραμετροποίηση της on chip μνήμης επιτυγχάνεται μέσω του περιβάλλοντος του SOPC builder (configuration wizard). Οι διαθέσιμες ρυθμίσεις είναι οι εξής: Memory Type (τύπος μνήμης), Size (μέγεθος) και Read Latency (καθυστέρηση ανάγνωσης). Memory Type Η ρύθμιση αυτή ορίζει την εσωτερική δομή της on chip μνήμης. RAM (writable) δημιουργία μνήμης ανάγνωσης εγγραφής ROM (read only) δημιουργία μνήμης μόνο ανάγνωσης Dual port access δημιουργία μνήμης με δύο slave ports επιτρέποντας σε δύο master ports να έχουν ταυτόχρονη πρόσβαση στη μνήμη Block type επιλογή από το Quartus συγκεκριμένου τύπου block μνήμης, κατά τη διαδικασία του fitting Auto το Quartus επιλέγει την καταλληλότερη υλοποίηση της on chip μνήμης M512 το Quartus επιλέγει να χρησιμοποιήσει τα M512 block μνήμης M4K το Quartus επιλέγει να χρησιμοποιήσει τα M4K block μνήμης M RAM το Quartus επιλέγει να χρησιμοποιήσει τα M RAM block μνήμης Size Η ρύθμιση αυτή ορίζει το μέγεθος και το εύρος της on chip μνήμης. Data width προσδιορισμός του εύρους της μνήμης (8, 16,32,64,128,256,512 ή 1024 bits) Total memory size προσδιορισμός του μεγέθους της on chip μνήμης Read Latency Τα στοιχεία της on chip μνήμης χρησιμοποιούν σύγχρονα, pipelined Avalon MM slave ports. Το pipeline βελτιώνει την f MAX προσθέτει όμως επιπλέον κύκλους καθυστέρησης κατά τη διαδικασία ανάγνωσης της μνήμης. Η επιλογή Read Latency 67

80 Κεφάλαιο 3 Τα Cores του Συστήματος επιτρέπει τον προσδιορισμό των κύκλων καθυστέρησης που απαιτούνται για την ανάγνωση των δεδομένων της μνήμης (η επιλογή Dual port access επιτρέπει τον ορισμό διαφορετικών κύκλων καθυστέρησης για κάθε slave port) JTAG UART Core Το JTAG UART (Universal Asynchronous Receiver/Transmitter) Core υλοποιεί μια μέθοδο σειριακής επικοινωνίας μεταξύ ενός PC και ενός SOPC συστήματος που βρίσκεται στο FPGA. Το JTAG core μία απλή register mapped διασύνδεση, έτσι τα κυρίως περιφεριακά (όπως ο Nios II επεξεργαστής) επικοινωνούν με το συγκεκριμένο core διαβάζοντας ή γράφοντας σε συγκεκριμένους καταχωρητές (καταχωρητές ελέγχου και καταχωρητές δεδομένων). Στην εικόνα 3.16 παρουσιάζεται το σχηματικό διάγραμμα του JTAG UART Core. Εικόνα 3.16 : Το σχηματικό διάγραμμα του JTAG UART Core Το JTAG UART Core παρέχει ένα Avalon slave interface προς το JTAG κύκλωμα του FPGA της Altera. Η ορατή στο χρήστη διασύνδεση με το JTAG UART Core αποτελείται από δύο καταχωρητές των 32 bit, δεδομένων και ελέγχου (data και control register) οι οποίοι είναι προσβάσιμοι μέσω του Avalon slave port. Μία Avalon master συσκευή όπως ο επεξεργαστής Nios II, προσπελαύνει τους καταχωρητές για τον έλεγχο του core και για τη μεταφορά δεδομένων μέσω της JTAG σύνδεσης. Το JTAG UART Core παρέχει δύο FIFOs διπλής κατεύθυνσης (bidirectional) για τη βελτίωση της ταχύτητας της JTAG σύνδεσης. Το 68

81 Κεφάλαιο 3 Τα Cores του Συστήματος μέγεθος των FIFOs αυτών είναι παραμετροποιήσιμο ώστε να προσαρμόζεται στην εκάστοτε on chip μνήμη του συστήματος. Παρέχεται επίσης η δυνατότητα υλοποίησης των FIFOs είτε με blocks μνήμης είτε με καταχωρητές. Τα FPGAs της ALTERA περιέχουν ενσωματωμένο JTAG κύκλωμα ελέγχου. Στην εικόνα 3.17 παρουσιάζεται ένα παράδειγμα σύνδεσης ενός υπολογιστή με ένα SOPC σύστημα που ενσωματώνει το JTAG UART Core. Εικόνα 3.17 : Παράδειγμα συστήματος που χρησιμοποιεί το JTAG UART Core Timer Core To Timer core είναι ένας εσωτερικός χρονομέτρης χρονιστής των 32 bit ή 64 bit με χαρακτηριστικά όπως έλεγχος εκκίνησης, τερματισμού και επαναφοράς. Παρέχει δύο τρόπους απαρίθμησης: απλή αντίστροφη απαρίθμηση και συνεχή αντίστροφη απαρίθμηση που υλοποιούνται με ένα καταχωρητή περιόδου απαρίθμησης (count down period register) και πραγματοποιεί λειτουργείες όπως δημιουργία διακοπής (interrupt) και παραγωγή παλμών, όταν η απαρίθμηση φτάσει στο μηδέν. Στην εικόνα 3.18 παρουσιάζεται το σχηματικό διάγραμμα του Timer Core. 69

82 Κεφάλαιο 3 Τα Cores του Συστήματος Εικόνα 3.18 : Το σχηματικό διάγραμμα του Timer Core Όλοι οι καταχωρητές είναι εύρους 16 bit καθιστώντας τον Timer συμβατό με επεξεργαστές των 16 bit, 32 bit (2 timers των 16 bit) και 64 bit (4 timers των 16 bit). Μερικοί καταχωρητές υπάρχουν μόνο εάν απαιτείται από το hardware. Για παράδειγμα, αν ο timer έχει ρυθμιστεί να δουλεύει με συγκεκριμένη περίοδο που δεν αλλάζει (fixed) τότε οι καταχωρητές περιόδου (periodl, periodh) δεν υπάρχουν. Η κύρια λειτουργία του timer έχει ως εξής: Μία Avalon MM master περιφερειακή συσκευή όπως ο επεξεργαστής Nios II γράφει δεδομένα στον καταχωρητή ελέγχου (control register) του Timer Core ώστε να αρχίσει ή να σταματήσει τον timer, να ενεργοποιήσει ή να απενεργοποιήσει τις IRQ ή να καθορίσει τη μέθοδο της αντίστροφης μέτρησης (count down once ή continuous count down). Ο επεξεργαστής διαβάζει τον καταχωρητή κατάστασης (status register) για την παρούσα κατάσταση του timer. Ο επεξεργαστής μπορεί να καθορίσει την περίοδο του timer με την εγγραφή της κατάλληλης τιμής στους καταχωρητές περιόδου periodl και periodh. Ένας εσωτερικός μετρητής μετράει αντίστροφα προς το μηδέν και όποτε φτάσει στο μηδέν επαναφορτώνεται άμεσα από τους καταχωρητές περιόδου και αν έχουν ενεργοποιηθεί οι διακοπές, μία IRQ παράγεται, η προαιρετική επιλογή watchdog εκτελεί reset στο σύστημα. Ο επεξεργαστής μπορεί να διαβάσει την τιμή του counter γράφοντας αρχικά σε έναν από τους snapl ή snaph καταχωρητές για να ζητήσει ένα στιγμιότυπο του μετρητή και έπειτα διαβάζει τη ζητούμενη τιμή από τους snapl και snaph καταχωρητές. 70

83 Κεφάλαιο 3 Τα Cores του Συστήματος Ο Timer Core υλοποιεί μία απλή Avalon_MM slave διασύνδεση για να παρέχει πρόσβαση στο αρχείο καταχωρητών. Το Avalon_MM slave port χρησιμοποιεί το σήμα resetrequest για την υλοποίηση της συμπεριφοράς του timer ως watchdog. Το σήμα αυτό είναι ένα σήμα επαναφοράς το οποίο οδηγεί την είσοδο reset όλων των Avalon_MM περιφερειακών του συστήματος στον SOPC builder. Το Timer core παρέχεται έτοιμο για χρήση στον SOPC Builder με δυνατότητες παραμετροποίησης. Το συγκεκριμένο core προσφέρει τις παρακάτω ρυθμίσεις οι οποίες επηρεάζουν τη δομή του. Simple periodic interrupt η ρύθμιση αυτή είναι χρήσιμη για συστήματα όπου απαιτείται μία περιοδική γεννήτρια διακοπών. Η περίοδος είναι σταθερή και ο timer δεν μπορεί να σταματήσει αλλά τα IRQ μπορούν να απενεργοποιηθούν. Full featured η ρύθμιση αυτή είναι χρήσιμη για συστήματα που απαιτούν έναν timer με μεταβλητή περίοδο, ο οποίος μπορεί να αρχίσει τη μέτρηση ή να τη σταματήσει, υπό τον έλεγχο του επεξεργαστή. Watchdog η ρύθμιση αυτή είναι χρήσιμη για συστήματα τα οποία απαιτούν ένα μετρητή watchdog για την επαναφορά του συστήματος σε περίπτωση που το σύστημα σταματήσει να ανταποκρίνεται. Στην εικόνα 3.19 παρουσιάζεται το αρχείο καταχωρητών του Timer Core (32 bit). Εικόνα 3.19 : Το αρχείο καταχωρητών του Timer Core Ο καταχωρητής ελέγχου (control register) έχει τέσσερα bits η λειτουργία των οποίων παρουσιάζεται στον πίνακα

84 Κεφάλαιο 3 Τα Cores του Συστήματος Αριθμός Bit Όνομα Bit Ανάγνωση / Εγγραφή/ Εκκαθάριση Περιγραφή 0 ΙΤΟ Α/Ε Αν το ITO bit έχει πάρει την τιμή 1, το timer core παράγει μία IRQ όταν το TO bit του status καταχωρητή έχει την τιμή 1. Αντίθετα το core δεν παράγει κάποια IRQ. 1 CONT Α To CONT (continuous) bit καθορίζει την συμπεριφορά του εσωτερικού μετρητή όταν αυτός φτάσει στο μηδέν. Αν έχει την τιμή 1, ο μετρητής απαριθμεί συνεχώς έως ότου τερματιστεί από το STOP bit. Αν έχει την τιμή 0, ο μετρητής σταματάει όταν φτάσει στο μηδέν και επαναφορτώνεται με την τιμή που είναι αποθηκευμένη στους periodl and periodh καταχωρητές, ανεξάρτητα από την τιμή του CONT bit. 2 START E Για την εκκίνηση του απαριθμητή (αντίστροφη μέτρηση) αρκεί να γραφτεί η τιμή 1 στο START bit. Αν ο μετρητής έχει σταματήσει την απαρίθμηση τότε αν γραφτεί η τιμή 1 στο START bit ο μετρητής ξαναρχίζει από τον αριθμό που είχε σταματήσει. 3 STOP E Για τον τερματισμό του απαριθμητή αρκεί να γραφτεί η τιμή 1 στο STOP bit που σταματάει τη διαδικασία απαρίθμησης. Αν ο μετρητής έχει σταματήσει την απαρίθμηση τότε αν γραφτεί η τιμή 1 στο STOP bit δεν επηρεάζεται η λειτουργία του. Πίνακας 3.12 : Περιγραφή των bits του καταχωρητή ελέγχου Ο καταχωρητής κατάστασης (status register) έχει δύο bits η λειτουργία των οποίων παρουσιάζεται στον πίνακα Αριθμός Bit Όνομα Bit Ανάγνωση / Εγγραφή/ Εκκ. Περιγραφή 0 ΤΟ Α/ΕΚ Το TO (timeout) bit τίθεται στην τιμή 1 όταν ο μετρητής φτάσει στο μηδέν. Και μένει στην τιμή αυτή έως ότου εκκαθαριστεί από κάποια master περιφερειακή συσκευή. 1 RUN Ε To RUN bit διαβάζει την τιμή 1 όσο ο εσωτερικός μετρητής απαριθμεί. Σε αντίθετη περίπτωση διαβάζει την τιμή 0. Πίνακας 3.13 : Περιγραφή των bits του καταχωρητή κατάστασης 72

85 Κεφάλαιο 3 Τα Cores του Συστήματος Οι καταχωρητές περιόδου (periodl και periodh) αποθηκεύουν την τιμή της περιόδου (time out period). Στον periodl αποθηκεύονται τα λιγότερο σημαντικά 16 bits, ενώ στον periodh τα περισσότερο σημαντικά 16 bits. Ο εσωτερικός μετρητής του core φορτώνεται με την τιμή που έχει αποθηκευθεί σε αυτούς τους καταχωρητές είτε όταν εκτελεστεί μία λειτουργία εγγραφής στους καταχωρητές αυτούς ή όταν ο εσωτερικός μετρητής φτάσει στο μηδέν. Οι καταχωρητές στιγμιότυπου (snapl και snaph) παρέχουν ένα στιγμιότυπο της κατάστασης του εσωτερικού μετρητή σε κάποια master περιφερειακή συσκευή, όταν αυτή εκτελέσει μία λειτουργία εγγραφής στους καταχωρητές αυτούς (στον snapl αποθηκεύονται τα λιγότερο σημαντικά 16 bits, ενώ στον snaph τα περισσότερο σημαντικά 16 bits). Τότε, η τιμή του μετρητή αντιγράφεται στους snap_n καταχωρητές. Το στιγμιότυπο λαμβάνεται είτε λειτουργεί ο μετρητής είτε όχι, και δεν αλλάζει την εσωτερική λειτουργία του καταχωρητή. Το Timer Core παράγει μία IRQ κάθε φορά που ο εσωτερικός μετρητής πάρει την τιμή μηδέν και η τιμή του ITO bit του καταχωρητή ελέγχου είναι 1. Η απενεργοποίηση των IRQs γίνεται με έναν από τους ακόλουθους δύο τρόπους: i) εκκαθάριση του TO bit του καταχωρητή κατάστασης ή ii) απενεργοποίηση των διακοπών με εκκαθάριση του ITO bit του καταχωρητή ελέγχου. Η ALTERA δίνει C συναρτήσεις οδηγούς που είναι προσβάσιμες μέσω του HAL με τους οποίους επιτυγχάνεται η πρόσβαση στους καταχωρητές του core και ο προγραμματισμός του. Η ALTERA παρέχει οδηγούς και για τα δύο μοντέλα του HAL timer: system clock timer και timestamp timer. System Clock Driver Όταν ο timer έχει ρυθμιστεί ως system clock, τότε λειτουργεί συνεχώς σε περιοδική βάση, χρησιμοποιώντας την τιμή της περιόδου που έχει οριστεί από τον SOPC Builder. Ο οδηγός είναι καθοδηγούμενος από διακοπές (driven by interrupts) έτσι θα πρέπει τα σήματα διακοπών του να είναι συνδεδεμένα στο κατάλληλο hardware του συστήματος. Το HAL παρέχει υλοποιήσεις συνήθων UNIX συναρτήσεων όπως gettimeofday(), settimeofday()και άλλες. Τimestamp Driver Το Timer Core μπορεί να ρυθμιστεί στη λειτουργία timestamp κατά την οποία μπορεί να εκτελεί μετρήσεις υψηλής ακρίβειας για παράδειγμα να μετρήσει το χρόνο εκτέλεσης μιας 73

86 Κεφάλαιο 3 Τα Cores του Συστήματος εντολής. Θα πρέπει βέβαια το core να μην έχει ρυθμιστεί ως system clock. Σε αυτή την περίπτωση το HAL παρέχει τις εξής συναρτήσεις: alt_timestamp_start(), alt_timestamp() Το IR Receiver Board και το IR Πληκτρολόγιο Το IR Receiver Board της SLS έχει σχεδιαστεί ώστε να παρέχει ασύρματη επικοινωνία (υπέρυθρη ακτινοβολία Infra Red) με το DE2 Board της ALTERA, ενώ συνδέεται σε αυτό με το ALTERA Standard Santa Cruz Connector. Το board κάνει χρήση τεσσάρων αισθητήρων υπερύθρων ώστε να επικοινωνεί με περιφερειακά όπως πληκτρολόγιο υπερύθρων. Οι βασικές λειτουργίες που πραγματοποιεί είναι η λήψη του υπέρυθρου σήματος από τον πομπό και η αποδιαμόρφωση του, ώστε ένα παράγει τα επιθυμητά σήματα προς το FPGA. Το board, που φαίνεται στην εικόνα 3.20, αποτελείται από τέσσερις αισθητήρες υπερύθρων (IR1, IR2, IR3, IR4), τέσσερα DIP switches (SW1), δύο seven segment displays (DISP1, DISP2), ένα LED (D1) και τα Santa Cruz Connectors (JP1, JP2, JP3), όπως παρουσιάζεται στο σχηματικό διάγραμμα της εικόνας Η SLS παρέχει το IR Receiver Keyboard IP Core το οποίο μπορεί να ενσωματωθεί σε ένα σύστημα μέσα από το SOPC Builder. Εικόνα 3.20 : Το IR Receiver Board 74

87 Κεφάλαιο 3 Τα Cores του Συστήματος Εικόνα 3.21 : Το σχηματικό διάγραμμα του IR Receiver Board Οι IR αισθητήρες του board (TSOP1738 IR sensors) λαμβάνουν τα σήματα υπερύθρων που έχουν εκπεμφθεί (η κατευθυντικότητα του κάθε αισθητήρα είναι 90 μοίρες) και είναι συντονισμένοι σε συχνότητα αποδιαμόρφωσης ίση με 38 KHz. Τα σήματα αυτά αποδιαμορφώνονται και αποστέλλονται κατευθείαν στο IR Receiver IP Core. Το board περιλαμβάνει δύο seven segment displays που χρησιμοποιούνται για την απεικόνιση δεδομένων. Επιπροσθέτως, το board ενσωματώνει και ένα LED η χρήση του οποίου προσδιορίζεται από το χρήστη και συνήθως εξυπηρετεί την επίβλεψη της εξόδου των αισθητήρων. Περιλαμβάνονται επίσης, τέσσερα DIP switches που μπορούν να υλοποιήσουν τυχόν επιθυμητή εξωτερική είσοδο. Η αναπτυξιακή κάρτα DE2 της ALTERA παρέχει δύο ακροδέκτες επέκτασης (expansion headers) των 40 pin έκαστος με σκοπό την αύξηση των δυνατοτήτων διασύνδεσης της με διάφορες περιφερειακές συσκευές. Ωστόσο, το IR Receiver Board συνδέεται με κάποιον άλλο ακροδέκτη επέκτασης της ALTERA, γνωστό ως Santa Cruz expansion header, που αποτελείται από τρεις ξεχωριστούς ακροδέκτες ( pin). Προκειμένου να γίνει η 75

88 Κεφάλαιο 3 Τα Cores του Συστήματος διασύνδεση μεταξύ του IR Receiver Board και της DE2 κάρτας, χρησιμοποιείται ένας μετατροπέας που ονομάζεται E Gasket που παρουσιάζεται στην εικόνα Εικόνα 3.22 : Ο μετατροπέας E Gasket Το E Gasket περιλαμβάνει τα παρακάτω, όπως φαίνεται στο σχηματικό διάγραμμα της εικόνας 3.23: Santa Cruz Headers (M):J3, J4, J5 DE2 Headers (F): J7, J8 GPIO Headers: J17, J18 76 Εικόνα 3.23 : Το σχηματικό διάγραμμα του μετατροπέα E Gasket

89 Κεφάλαιο 3 Τα Cores του Συστήματος Το IR Receiver Board συνοδεύεται από ένα πληκτρολόγιο υπερύθρων που φαίνεται στην εικόνα Το πληκτρολόγιο αυτό στέλνει ένα συγκεκριμένο κώδικα των 8 bit για κάθε πλήκτρο που πιέζεται προς τον δέκτη υπερύθρων, ο οποίος αποκωδικοποιείται μέσω του IR Receiver Keyboard IP Core και στέλνεται στον Nios II που εκτελεί κάποια C εφαρμογή. Πρέπει να σημειωθεί ότι το πληκτρολόγιο υπερύθρων δεν ακολουθεί το PS/2 πρωτόκολλο. Εικόνα 3.24 : Το πληκτρολόγιο υπερύθρων Το συγκεκριμένο πληκτρολόγιο υπερύθρων περιλαμβάνει και ένα joystick το οποίο μπορεί να κινείται σε οποιαδήποτε διεύθυνση. Στην περίπτωση που το joystick κινηθεί προς κάποια διεύθυνση, το πληκτρολόγιο στέλνει έναν κώδικα των 40 bit προς τους αισθητήρες του IR Receiver Board. Ο κώδικας αυτός αποκωδικοποιείται από το IR Receiver IP Core και παράγονται κώδικες για την X και Y διεύθυνση. Η εικόνα 3.25 απεικονίζει το πρόσημο των X και Y διευθύνσεων. Εικόνα 3.25 : Το πρόσημο των Χ και Υ διευθύνσεων 77

90 Κεφάλαιο 3 Τα Cores του Συστήματος 78

91 Κεφάλαιο 4 Παρουσίαση Συστήματος Κεφάλαιο 4 Περιγραφή Συστήματος Σκοπός του συστήματος που αναπτύχθηκε είναι να εκμεταλλευτεί τα περιφερειακά που είναι διαθέσιμα στην αναπτυξιακής κάρτας DE2, ενώ ταυτόχρονα να κάνει χρήση του επεξεργαστή Nios II Περιγραφή Λειτουργίας του Συστήματος Το σύστημα που αναπτύχθηκε χρησιμοποιεί τον Audio CODEC του DE2 ώστε να δέχεται ηχητικά δεδομένα από κάποια συσκευή που είναι συνδεδεμένη στην είσοδο Line In της κάρτας DE2 και εκτελεί διάφορες βασικές ρουτίνες επεξεργασίας ήχου, όπως FIR Filtering, Echo, Reverberation, Volume Leveling, σύμφωνα με το τι πλήκτρο έχει πατηθεί από το ΙR Keyboard, ενώ ταυτόχρονα οδηγεί μία οθόνη VGA η οποία δείχνει την παρούσα κατάσταση του συστήματος (play mode, echo mode, reverb mode), την ώρα και κάποιο κείμενο. Τα LEDs της κάρτας DE2 απεικονίζουν την ένταση του ήχου οποιασδήποτε κατάστασης μέσω ενός εξωτερικού κυκλώματος (bin to thermometer), τα switches χρησιμοποιούνται για την αρχικοποίηση της ώρας ενώ το SW0 εκτελεί επανεκκίνηση (reset) του συστήματος. Επίσης, γίνεται χρήση της LCD οθόνης του DE2 στην οποία εμφανίζεται κάποιο κείμενο που υποδεικνύει την έναρξη εκτέλεσης του προγράμματος. Το πρόγραμμα αποθηκεύεται και εκτελείται από την SDRAM μνήμη. Πρέπει να τονιστεί ότι παρέχεται η δυνατότητα αυξομείωσης της έντασης του ήχου σε οποιαδήποτε κατάσταση και αν βρίσκεται το σύστημα. Η αλλαγή της έντασης του ήχου απεικονίζεται και γραφικά στη VGA οθόνη, υπό μορφή μπαρών. Όταν το σύστημα εισέρχεται σε κάποια κατάσταση, οι μπάρες δεν είναι εμφανείς παρά μόνο εάν πιεστούν από το πληκτρολόγιο τα πλήκτρα και (up & down arrows). Οι καταστάσεις του συστήματος είναι οι εξής: PLAY Mode (πλήκτρο p ) Το σύστημα εισέρχεται σε κατάσταση αναπαραγωγής ήχου. Επομένως, τα ηχητικά δεδομένα που εισέρχονται στο DE2 εξέρχονται από αυτό χωρίς καμία επεξεργασία. Στην VGA οθόνη εμφανίζεται το κείμενο Entering Play Mode σε μπλε φόντο. 79

92 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.1α : PLAY MODE Εικόνα 4.1β : PLAY MODE 80

93 Κεφάλαιο 4 Παρουσίαση Συστήματος ECHO Mode (πλήκτρο e ) Το σύστημα εκτελεί τη ρουτίνα που υλοποιεί το ηχητικό εφέ της ηχούς (echo). Το εφέ αυτό ανήκει στην ευρύτερη ομάδα των FIR Comp Filters σύμφωνα με τα οποία: Το σήμα εισόδου καθυστερείται κατά ένα δεδομένο χρόνο τ. Το καθυστερημένο αυτό σήμα (επεξεργασμένο) πολλαπλασιάζεται με μία σταθερά g και προστίθεται στο αρχικό σήμα. Η εξίσωση διαφορών των φίλτρων αυτών είναι: y(n) = x(n) + g x(n M), όπου M=τ/f s Η συνάρτηση μεταφοράς είναι: Hz () = 1+ g z M Τα παραπάνω συνοψίζονται στην εικόνα 4.2 : Εικόνα 4.2 : Το σχηματικό διάγραμμα ενός FIR COMP Filter Η υλοποίηση του συγκεκριμένου εφέ επιτυγχάνεται πιο εύκολα με τη χρήση ενός κυκλικού buffer (circular buffer) το μέγεθος του οποίου καθορίζει το χρόνο καθυστέρησης εμφάνισης του σήματος εισόδου, στην έξοδο. Πιο συγκεκριμένα, στο σύστημα που υλοποιήθηκε το μέγεθος του buffer έχει οριστεί να είναι 4000, έτσι με ρυθμό δειγματοληψίας 8000 δειγμάτων/δευτερόλεπτο είναι φανερό ότι δημιουργείται echo μισού δευτερολέπτου. Στον κυκλικό buffer, τα δεδομένα τοποθετούνται σε διαδοχικές θέσεις μνήμης και όταν γεμίσει ο buffer, τα νέα δεδομένα αρχίζουν να αντικαθιστούν τα παλιά που είναι αποθηκευμένα στις αρχικές θέσεις μνήμης. Για το σκοπό αυτό, χρησιμοποιούνται δύο δείκτες (με modulo λογική), ο ένας εκ των οποίων δείχνει τη διεύθυνση στη οποία θα εγγραφούν τα νέα δεδομένα και ο άλλος δείχνει τη διεύθυνση από την οποία θα εξαχθούν τα καθυστερημένα δεδομένα. Η λογική του κυκλικού buffer παρουσιάζεται στην εικόνα 4.3. Εξαιτίας της χρήσης του κυκλικού buffer, η συνάρτηση ανάγνωσης της FIFO μνήμης του Audio Core, alt_up_audio_read_fifo, που παρέχεται από την ALTERA, έπρεπε να 81

94 Κεφάλαιο 4 Παρουσίαση Συστήματος τροποποιηθεί. Έτσι, δημιουργήθηκε η καινούργια συνάρτηση ανάγνωσης, alt_up_audio_read_fifo_cir_buf, η οποία εκμεταλλεύεται τον κυκλικό buffer (με modulo λογική). Στην VGA οθόνη εμφανίζεται το κείμενο Entering ECHO Mode σε κόκκινο φόντο. Εικόνα 4.3 : Η χρήση του κυκλικού buffer για την υλοποίηση του εφέ echo 82 Εικόνα 4.4 : ECHO MODE

95 Κεφάλαιο 4 Παρουσίαση Συστήματος REVERBARATION Mode (πλήκτρο r ) Το σύστημα εκτελεί τη ρουτίνα που υλοποιεί το ηχητικό εφέ γνωστό ως reverberation. Το εφέ αυτό ανήκει στην ευρύτερη ομάδα των IIR Comp Filters σύμφωνα με τα οποία: Το σήμα εξόδου καθυστερείται κατά ένα δεδομένο χρόνο τ και ανατροφοδοτείται πίσω στην είσοδο πολλαπλασιασμένο με μία σταθερά g < 1. Σε ορισμένες περιπτώσεις το σήμα εισόδου πολλαπλασιάζεται με μία σταθερά c ώστε να εξισορροπηθεί η υψηλή ενίσχυση του φίλτρου, και να αποφθεχθεί η αστάθεια που χαρακτηρίζει τα IIR φίλτρα. Για μία είσοδο x(n) παράγεται μία ατέρμονη σειρά εξόδων y(n). Η εξίσωση διαφορών των φίλτρων αυτών είναι: y(n)= c x(n) + g y(n M), όπου M=τ/f s Η συνάρτηση μεταφοράς είναι: = c Hz () 1 g z M Τα παραπάνω συνοψίζονται στην εικόνα 4.5 Εικόνα 4.5: Το σχηματικό διάγραμμα ενός IIR COMP Filter Και σε αυτήν την περίπτωση, η υλοποίηση του συγκεκριμένου εφέ επιτυγχάνεται πιο εύκολα με τη χρήση ενός κυκλικού buffer (circular buffer) το μέγεθος του οποίου (size=4000) καθορίζει το χρόνο καθυστέρησης ανατροφοδότησης του σήματος εξόδου. Εξαιτίας της χρήσης του κυκλικού buffer, η συνάρτηση εγγραφής της FIFO μνήμης του Audio Core, alt_up_audio_write_fifo, που παρέχεται από την ALTERA, έπρεπε να τροποποιηθεί ώστε να εκμεταλλευτούν τα πλεονεκτήματα της χρήσης του κυκλικού buffer. Έτσι, δημιουργήθηκε η συνάρτηση εγγραφής, alt_up_audio_write_fifo_cir_buf. Στην VGA οθόνη εμφανίζεται το κείμενο Entering REVERB Mode σε μωβ φόντο. 83

96 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.6 : REVERBERATION MODE EQ Mode (πλήκτρο q ) Στην κατάσταση αυτή τα ηχητικά δεδομένα φιλτράρονται από ένα εξωτερικό hardware FIR φίλτρο. H σχέση μεταξύ ενός ψηφιακού σήματος εισόδου x(n) και του ψηφιακού σήματος εξόδου y(n) έχει την μορφή: N 1 ( ) = ( ) y n bx n i i= 0 όπου b είναι οι συντελεστές του ψηφιακού φίλτρου και N ο αριθμός τους. Οι συντελεστές αυτοί παρέχουν τα χαρακτηριστικά του φίλτρου μέσα από το οποίο περνάει η ακολουθία i i xn ( ) έτσι ώστε να προκύψει η επιθυμητή έξοδος yn. ( ) Εξ ορισμού, η έξοδος yn ( ) ενός FIR φίλτρου είναι συνάρτηση μόνο των παρόντων και προηγούμενων δειγμάτων εισόδου. Από τον μετασχηματισμό z προκύπτει η συνάρτηση μεταφοράς που παίρνει την μορφή: όπου hi) ( ( ) ( ) Y z H( z) = = bz = h() i z X z N 1 N 1 i i i= 0 i= 0 είναι η κρουστική απόκριση του FIR φίλτρου, η οποία αποτελείται ουσιαστικά i 84

97 Κεφάλαιο 4 Παρουσίαση Συστήματος από τους συντελεστές bi (). Για τον καθορισμό της απόκρισης συχνότητας η μεταβλητή z υπολογίζεται στον μοναδιαίο κύκλο σαν : z = e j2π f, όπου f η κανονικοποιημένη συχνότητα δηλαδή η πραγματική συχνότητα διαιρεμένη με την συχνότητα δειγματοληψίας. Έτσι η απόκριση συχνότητας ενός FIR φίλτρου έχει ως εξής : N 1 π ( ) () H e = h i e j2 f j2π fi i= 0 Τα FIR φίλτρα είναι ψηφιακά φίλτρα πεπερασμένης κρουστικής απόκρισης (Finite Impulse Response). Δηλαδή η απόκριση του συστήματος με την εφαρμογή της κρουστικής συνάρτησης δ(n) θα είναι ένας πεπερασμένος αριθμός σημείων. Αν δούμε την περιγραφή ενός τέτοιου συστήματος σαν εξίσωση διαφορών τότε η σχέση θα είναι µη επαναληπτική. Ή απλούστερα είναι µία σχέση όπου η έξοδος y(n) εκφράζεται σαν ένα άθροισμα (µε σχετικά βάρη) των σημείων εισόδου x(n). Σχηματικά ένα FIR φίλτρο παρουσιάζεται στην εικόνα 4.7 Ο Nios II στέλνει τα ηχητικά δεδομένα στο FIR φίλτρο που υλοποιείται εξωτερικά του συστήματος. Το φίλτρο που χρησιμοποιείται στο σύστημα είναι ένα βαθυπερατό φίλτρο, ενώ ο τύπος, οι ρυθμίσεις και οι συντελεστές του μπορούν να μεταβληθούν για τις εκάστοτε ανάγκες του συστήματος. Μετά την επεξεργασία φιλτράρισμα, το φίλτρο στέλνει τα δεδομένα πίσω στο σύστημα από όπου ο Nios τα διαβάζει και τα αναπαράγει. Στην VGA οθόνη εμφανίζεται το κείμενο Entering EQ Mode σε σκούρο πράσινο φόντο. Εικόνα 4.7 : Το σχηματικό διάγραμμα ενός FIR φίλτρου 85

98 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.8 : EQ MODE NIOSFILTER Mode (πλήκτρο n ) Στην κατάσταση αυτή το σύστημα υλοποιεί την όλη διαδικασία του FIR φιλτραρίσματος μέσα από το C πρόγραμμα εφαρμογή που εκτελείται. Έτσι, ο Nios II επιβαρύνεται με ένα μεγάλο αριθμό επιπλέον πολλαπλασιασμών και προσθέσεων κάτι που καθιστά την έννοια της εκτέλεσης του προγράμματος σε πραγματικό χρόνο σχεδόν απαγορευτική. Επομένως στην κατάσταση αυτή εκτελείται η συνάρτηση filterloop, η οποία αναλαμβάνει να φιλτράρει τα ηχητικά δεδομένα και να τα αποθηκεύσει σε ένα προσωρινό πίνακα ώστε να αναπαραχθούν στη συνέχεια από τον Nios II. Στην VGA οθόνη εμφανίζεται το κείμενο Entering EQNIOS Mode σε ανοικτό πράσινο φόντο. Η υλοποίηση ενός FIR φίλτρου μπορεί να επιτευχθεί με διάφορες δομές μεθόδους. Η πιο διαδεδομένη δομή είναι η ευθεία υλοποίηση (tapped delay line ή transversal). Η εξίσωση της συνέλιξης είναι αυτή με την οποία προγραμματίζεται και υλοποιείται ένα τέτοιο φίλτρο. 86

99 Κεφάλαιο 4 Παρουσίαση Συστήματος i Συντελεστές Δείγματα 0 h(0) x(n) 1 h(1) x(n 1) 2 h(2) x(n 2) N 1 h(n 1) x(n (N 1)) Πίνακας 4.1 : Οργάνωση μνήμης για τους συντελεστές και τα δείγματα. Οι συντελεστές της κρουστικής απόκρισης διευθετούνται από έναν buffer (πίνακα) έτσι ώστε ο πρώτος συντελεστής h(0), να αποτελεί την χαμηλότερη διεύθυνση μνήμης και ο τελευταίος συντελεστής h(n 1), την υψηλότερη διεύθυνση μνήμης. Τα καθυστερημένα δείγματα οργανώνονται στη μνήμη, έτσι ώστε το νεότερο δείγμα x(n), να είναι στο ξεκίνημα των δειγμάτων του buffer, ενώ το παλαιότερο δείγμα, x(n (N 1)), να είναι στο τέλος του buffer.οι συντελεστές και τα δείγματα μπορούν να διευθετηθούν στην μνήμη όπως φαίνεται στον πίνακα 1. Αρχικά όλα τα δείγματα ορίζονται μηδέν. Χρόνος n. Το νεότερο δείγμα, x(n), την στιγμή n προκύπτει από έναν ADC και αποθηκεύεται στην αρχή του buffer. Η έξοδος του φίλτρου την χρονική στιγμή n υπολογίζεται από την εξίσωση της συνέλιξης ή διαφορετικά: ( ) = ( 0) ( ) + ( 1) ( 1) + + ( 2) ( ( 2) ) + ( 1) ( ( 1 ) y n h x n h x n h N x n N h N x n N ) Τα καθυστερημένα δείγματα ενημερώνονται, έτσι ώστε το x(n k)=x(n+1 k) για να μπορεί να χρησιμοποιηθεί στον υπολογισμό του y(n+1), της εξόδου την επόμενη χρονική στιγμή ή αλλιώς στην επόμενη περίοδο T s. Όλα τα δείγματα ενημερώνονται εκτός από το νεότερο δείγμα. Για παράδειγμα, x(n 1)=x(n), και x(n (Ν 1))=x(n (Ν 2)). Αυτή η προοδευτική ενημέρωση έχει ως αποτέλεσμα την μετακίνηση των δεδομένων (κάτω) στην μνήμη. Χρόνος n+1. Σε χρόνο n+1, ένα νέο δείγμα προκύπτει ως είσοδος x(n+1) και αποθηκεύεται στην κορυφή του buffer, όπως φαίνεται στον πίνακα 4.χχ. Η έξοδος y(n+1),μπορεί τώρα να υπολογιστεί ως: ( ) ( ) ( ( ) yn ( + 1) = h( 0) xn ( + 1) + h( 1) xn ( ) + + hn ( 2) xn ( N 3) + hn 1 xn N 2) Τα δείγματα τότε ενημερώνονται για την επόμενη μονάδα του χρόνου. 87

100 Κεφάλαιο 4 Παρουσίαση Συστήματος Συντελεστές Δείγματα Time n Time n+1 Time n+2 h(0) x(n) x(n+1) x(n+2) h(1) x(n 1) x(n) x(n+1) h(2) x(n 2) x(n 1) x(n) h(n 3) x(n (N 3)) x(n (N 4)) x(n (N 5)) h(n 2) x(n (N 2)) x(n (N 3)) x(n (N 4)) h(n 1) x(n (N 1)) x(n (N 2)) x(n (N 3)) Πίνακας 4.2 : Οργάνωση μνήμης ώστε να επεξηγηθεί η ενημέρωση των δειγμάτων. Χρόνος n+2. Σε χρόνο n+2,ένα νέο δείγμα εισόδου x(n+2), προκύπτει. Η έξοδος γίνεται: ( ) ( + 2) = ( 0) ( + 2) + ( 1) ( + 1) + + ( 1) ( 3) yn h xn h xn hn xn N Αυτή η διαδικασία συνεχίζεται για να υπολογιστεί η έξοδος του φίλτρου και να ενημερωθούν τα καθυστερημένα δείγματα σε κάθε μονάδα χρόνου (περίοδος δειγματοληψίας). 88

101 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.9 : EQNIOS MODE MUTE Mode (πλήκτρο m ) Η κύρια λειτουργία του συστήματος, όπως ήδη αναφέρθηκε, είναι η αναπαραγωγή ηχητικών επεξεργασμένων ή μη δεδομένων. Άρα είναι απαραίτητη και η ύπαρξη μίας κατάστασης στην οποία το σύστημα δεν θα παίζει καθόλου ήχο, δηλαδή τα ηχητικά δεδομένα θα μηδενίζονται. Αυτή η κατάσταση αναφέρεται ως MUTE Mode και στην VGA οθόνη εμφανίζεται το κείμενο Entering MUTE Mode σε μαύρο φόντο με την ένδειξη σίγασης ήχου. Εικόνα 4.10 : MUTE MODE 4.2. Ρυθμίσεις των SOPC Υποκυκλωμάτων του Συστήματος Τα SOPC υποκυκλώματα πρέπει να ρυθμιστούν κατάλληλα ώστε να επιτευχθεί η επιθυμητή λειτουργία του συστήματος. Οι ρυθμίσεις αυτές παρουσιάζονται στις επόμενες παραγράφους. 89

102 Κεφάλαιο 4 Παρουσίαση Συστήματος Ρυθμίσεις του Nios II Core Το Core του Nios II (cpu_0) που χρησιμοποιήθηκε, όπως αναλύθηκε και στο κεφάλαιο 2 είναι το Nios II/s (standard). Για τους πολλαπλασιασμούς χρησιμοποιούνται τα embedded multipliers blocks, ενώ ο reset vector και ο exception vector τοποθετούνται στην on chip μνήμη του συστήματος. Επιπλέον, το μέγεθος της κρυφής μνήμης εντολών (Instruction Cache) επιλέγεται να είναι 4 Kbytes, ενώ το μέγεθος της κρυφής μνήμης δεδομένων (Data Cache) είναι προκαθορισμένο και ίσο με 2 Kbytes. Στις ρυθμίσεις για την μονάδα αποσφαλμάτωσης JTAG επιλέγεται το επίπεδο αποσφαλμάτωσης 1, ενώ δεν χρησιμοποιούνται/ορίζονται πρόσθετες εντολές στο πεδίο Custom Instructions. Οι παραπάνω ρυθμίσεις παρουσιάζονται στην εικόνα Εικόνα 4.11 : Ρυθμίσεις του Nios II/s Core

103 Κεφάλαιο 4 Παρουσίαση Συστήματος Ρυθμίσεις της Μνήμης του Συστήματος Η μνήμη του συστήματος αποτελείται ουσιαστικά από δύο μέρη. Την on chip μνήμη (onchip_memory_0) και την SDRAM (sdram) μνήμη. On Chip Μνήμη Ο τύπος της on chip μνήμης επιλέγεται να είναι μνήμη RAM και να υλοποιηθεί με τα M4K memory blocks. Το μέγεθος της είναι bytes ενώ το εύρος της είναι 32 bit. Τα παραπάνω απεικονίζονται στην εικόνα Εικόνα 4.12 : Ρυθμίσεις της on chip μνήμης SDRAM Μνήμη Το μέγεθος της μνήμη SDRAM, που χρησιμοποιείται και για την εκτέλεση της εφαρμογής, επιλέγεται να είναι το μέγιστο δυνατό, δηλαδή 8 MByte. Οι υπόλοιπες ρυθμίσεις φαίνονται στην εικόνα

104 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.13 : Ρυθμίσεις της SDRAM μνήμης Ρυθμίσεις του Audio Core Οι ρυθμίσεις για το Audio Core (audio_0) είναι τρεις, αφού οι επιμέρους λεπτομέρειες της λειτουργίας του καθορίζονται από το Audio/Video Configuration Core. Έτσι, ο CODEC επιλέγεται να λειτουργεί ως είσοδος έξοδος ηχητικών δεδομένων και το εύρος των δεδομένων αυτών να είναι 32 bit. Εικόνα 4.14 : Ρυθμίσεις του Audio Core 92

105 Κεφάλαιο 4 Παρουσίαση Συστήματος Ρυθμίσεις του Audio/Video Configuration Core To Audio/Video Configuration Core (audio_and_video_config_0) είναι αυτό που ρυθμίζει την όλη λειτουργία του Audio CODEC. Οι ρυθμίσεις, όπως έχουν αναλυθεί στην παράγραφο 3.2.2, παρουσιάζονται στις παρακάτω εικόνες. Το core επιλέγεται να χρησιμοποιεί το UP IP Audio Core. Ρυθμίζεται η ένταση του αριστερού και του δεξιού καναλιού στην είσοδο και στην έξοδο, ενώ επιλέγεται επίσης η είσοδος Line In να οδηγείται στον ADC και ο DAC στην έξοδο του CODEC. Εικόνα 4.15α : Ρυθμίσεις του Audio/Video Configuration Core Εικόνα 4.15β : Ρυθμίσεις του Audio Core 93

106 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.15γ : Ρυθμίσεις του Audio Core Εικόνα 4.15δ : Ρυθμίσεις του Audio Core 94

107 Κεφάλαιο 4 Παρουσίαση Συστήματος Στο πεδίο Sampling, για την ρύθμιση Normal Mode, το Base Over Sampling Rate έχει επιλεγεί 250fs/256fs με Sample Rate 3 (SR3 = 0, SR2 = 0, SR1= 1, SR0 = 1), που αντιστοιχεί σύμφωνα με τον πίνακα 3.7 σε ρυθμό δειγματοληψίας ίσο με 8000 δείγματα ανά δευτερόλεπτο για τον ADC και τον DAC και σε συχνότητα ρολογιού ίση με MHz Ρυθμίσεις του DE Boards External Interface Core Το DE2 Boards External Interface Core (DE_board_0) παράγει τα κατάλληλα σήματα χρονισμού που είναι αναγκαία για τη λειτουργία του Audio CODEC, του VGA DAC και του SDRAM Controller. Στο συγκεκριμένο Nios II σύστημα είναι αναγκαίο το core αυτό να παράγει και τα τρία σήματα ρολογιού, αφού χρησιμοποιούνται και Audio CODEC, και ο VGA DAC και ο SDRAM Controller της DE2 κάρτας. Επιπλέον, σύμφωνα με τα παραπάνω, η συχνότητα για το ρολόι που χρονίζει συντονίζει τον Audio CODEC επιλέγεται να είναι ίση με MHz. Εικόνα 4.16 : Ρυθμίσεις του DE2 Boards External Interface Core Ρυθμίσεις του Character LCD Core Η μόνη διαθέσιμη ρύθμιση για το Character LCD Core (character_lcd_0) αφορά τον τρόπο εμφάνισης του δρομέα στην LCD οθόνη και έχει επιλεγεί η ρύθμιση Both (normal & blinking). 95

108 Κεφάλαιο 4 Παρουσίαση Συστήματος Ρυθμίσεις του VGA Core Το VGA Core (vga_0) παρέχει κάποιες επιλογές παραμετροποίησης όπως φαίνονται στην εικόνα Εδώ έχει επιλεγεί ως Display Mode η ρύθμιση Character Overlay Mode, μιας και ο Nios II απεικονίζει στην VGA οθόνη και pixels αλλά και χαρακτήρες. Έτσι οι ρυθμίσεις για το Pixel Mode περιλαμβάνουν τον τύπο απεικόνισης χρώματος των pixels (16 bits RGB), την επιλογή της ανάλυσης (320 x 240), και την ενεργοποίηση της λειτουργίας του Back Buffer, όπως αυτή αναλύθηκε στην παράγραφο Οι ρυθμίσεις για το Character Mode περιλαμβάνουν τον τύπο απεικόνισης χρώματος των χαρακτήρων (1 bit μονόχρωμοι) καθώς και την επιλογή του μεγέθους τους (16x16 που αντιστοιχεί σε 30 γραμμές με 40 χαρακτήρες ανά γραμμή). Εικόνα 4.17 : Ρυθμίσεις του VGA Core 96

109 Κεφάλαιο 4 Παρουσίαση Συστήματος Ρυθμίσεις του PIO Core To PIO Core μπορεί να χρησιμοποιηθεί για οποιαδήποτε παράλληλη μεταφορά δεδομένων από την κάρτα DE2 προς τον Nios II και αντίστροφα. Επομένως το συγκεκριμένο core μπορεί κάθε φορά να εξυπηρετεί διαφορετικό σκοπό, υλοποιώντας περιφερειακές συσκευές που χρησιμοποιούνται εντελώς διαφορετικά από το σύστημα, αλλά πάντα για παράλληλη μεταφορά δεδομένων. Το core αυτό ουσιαστικά καταλαμβάνει κάποιες θέσεις μνήμης, όπως έχει αναφερθεί στην παράγραφο 3.2.6, στις οποίες αποθηκεύονται τα δεδομένα προς μεταφορά τα οποία είναι διαθέσιμα στον Nios II με κατάλληλες εντολές εγγραφής και ανάγνωσης. Έτσι, για τις ανάγκες του συστήματος, το core αυτό έχει χρησιμοποιηθεί στον SOPC Builder τόσο για την απεικόνιση της έντασης του ήχου στα πράσινα και κόκκινα LEDs του DE2, όσο και για την ανάγνωση της ώρας μέσω των τιμών των switches του DE2. Επιπλέον, για λόγους που θα εξηγηθούν στην παράγραφο όπου αναφέρεται η λειτουργία του FIR Filter, το PIO Core χρησιμοποιήθηκε για τον έλεγχο του FIR φίλτρου και τη μεταφορά δεδομένων από το φίλτρο προς τον Nios II και αντίστροφα. Το PIO Core για τα κόκκινα LEDs (LEDS) έχει ρυθμιστεί ως κανάλι εξόδου. Αυτό σημαίνει ότι τα ηχητικά δεδομένα του αριστερού καναλιού γράφονται από τον Nios II στο PIO Core, οδηγούνται στο κύκλωμα bin to thermometer, η λειτουργία του οποίου θα αναλυθεί στην παράγραφο 4.2.1, και μέσω αυτού απεικονίζονται στα κόκκινα LEDs της κάρτας DE2. Τα δεδομένα αυτά είναι ένας μέσος όρος των ηχητικών δειγμάτων του αριστερού καναλιού ολισθημένος κατά τόσες θέσεις ώστε να προκύπτει μία τιμή των 3 bit που οδηγείται με την σειρά της στο κύκλωμα bin to thermometer. Αντιστοίχως χρησιμοποιείται και το PIO Core για τα πράσινα LEDs (LEDS_GREEN) που απεικονίζουν τα δεδομένα του δεξιού καναλιού του audio CODEC. Επίσης, το PIO Core χρησιμοποιείται και για τον έλεγχο του FIR από τον Nios II. Το σύστημα ενσωματώνει το core ως pio_sink_control και pio_fir_control. To pio_sink_control έχει ρυθμιστεί ως κανάλι εξόδου των 4 bit, ενώ το pio_fir_control έχει ρυθμιστεί ως κανάλι εισόδου των 4 bit. Τέλος το PIO Core χρησιμοποιείται τόσο για την μεταφορά των ηχητικών δεδομένων προς επεξεργασία (των 32 bit) από τον Nios ΙΙ στο FIR φίλτρο (pio_sink_data), όσο και για την μεταφορά των επεξεργασμένων δεδομένων από το FIR φίλτρο στον Nios II για αναπαραγωγή (pio_fir_data). 97

110 Κεφάλαιο 4 Παρουσίαση Συστήματος Ρυθμίσεις του Timer Core Το Timer Core χρησιμοποιείται για την παραγωγή των απαραίτητων διακοπών. Το Nios II σύστημα ενσωματώνει δύο τέτοια cores. Το πρώτο είναι το timer, το οποίο έχει ρυθμιστεί ως full featured, και χρησιμοποιείται από το σύστημα για να παράγεται μία διακοπή κάθε 1ms ώστε να αναγνωρίζεται το όποιο πλήκτρο πιέζεται στο πληκτρολόγιο υπερύθρων, και να εκτελείται η αντίστοιχη ρουτίνα εξυπηρέτησης της διακοπής. Το δεύτερο είναι το timer_time, το οποίο είναι ρυθμισμένο ως simple periodic interrupt με σκοπό να παράγει μία διακοπή κάθε 1s ώστε να υλοποιείται η ανανέωση της ώρας Περιγραφή των Εξωτερικών Υποκυκλωμάτων του Συστήματος Ο επεξεργαστής Nios II είναι ένας επεξεργαστής γενικού σκοπού και όχι κάποιος εξειδικευμένος επεξεργαστής (π.χ. DSP ). Επομένως, για τη διατήρηση της έννοιας της εκτέλεσης σε πραγματικό χρόνο του προγράμματος εφαρμογής, κρίθηκε αναγκαία η χρήση εξωτερικών υποκυκλωμάτων (εκτός SOPC συστήματος) ώστε να αποφευχθεί η επιβάρυνση του Nios II με χρονοβόρες αριθμητικές πράξεις, ειδικότερα κατά το FIR φιλτράρισμα. Έτσι, τα δύο υποκυκλώματα που χρησιμοποιήθηκαν και θα αναλυθούν στη συνέχεια είναι τα: Bin To Thermometer και FIR φίλτρο To Κύκλωμα Bin To Thermometer Το κύκλωμα Bin To Thermometer είναι ένας απλός αποκωδικοποιητής (συνδυαστικό κύκλωμα) που δέχεται ως είσοδο μία τιμή των 3 bit και παράγει μία έξοδο των 7 bit σύμφωνα με τον παρακάτω πίνακα αλήθειας. Η έξοδος αυτή χρησιμοποιείται για την απεικόνιση των σταθμών του ήχου στα LEDs της κάρτας DE2. Λόγω του γεγονότος ότι ο ήχος που επεξεργάζεται ο Nios II είναι στερεοφωνικός χρησιμοποιούνται δύο κυκλώματα Bin To Thermometer, ένα για κάθε κανάλι, όπως θα φανεί και στην παρουσίαση του συστήματος της παραγράφου

111 Κεφάλαιο 4 Παρουσίαση Συστήματος Binary Code Thermometer Code B2 B1 B0 D6 D5 D4 D3 D2 D1 D Πίνακας 4.3: Πίνακας αλήθειας του κυκλώματος Bin To Thermometer To FIR Φίλτρο Όπως έχει ήδη αναφερθεί, η χρήση του εξωτερικού FIR φίλτρου κρίνεται αναγκαία ώστε το σύστημα να τρέχει σε πραγματικό χρόνο. Για το σκοπό αυτό, χρησιμοποιήθηκε ο FIR Compiler της ALTERA, ο οποίος υλοποιεί ένα FIR φίλτρο (MegaCore Function). Το φίλτρο που υλοποιήθηκε για το συγκεκριμένο Nios II σύστημα, είναι ένα βαθυπερατό φίλτρο με συχνότητα δειγματοληψίας 8 KHz και συχνότητα αποκοπής 1 KHz. Το βαθυπερατό φίλτρο, ορίζεται εκτός από τη συχνότητα αποκοπής του και από τους συντελεστές του. Ο FIR Compiler παρέχει τη δυνατότητα παραγωγής των συντελεστών αυτών. Οι ρυθμίσεις για τους συντελεστές, όπως το πλήθος τους και ο τύπος παραθύρου του FIR φίλτρου, παρουσιάζονται στην εικόνα Συγκεντρωτικά, οι ρυθμίσεις έχουν ως εξής: Floating Coefficient Set Filter Type: Low Pass Coefficients: 60 Cutoff Freq.1: 1000 Window Type: Rectangular Sample Rate:

112 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.18: Βασικές ρυθμίσεις του FIR φίλτρου Οι ρυθμίσεις του FIR φίλτρου παρουσιάζονται στην εικόνα 4.19, όπου φαίνεται και η απόκριση συχνότητας του φίλτρου. Αναλυτικότερα, ο αριθμός των καναλιών εισόδου τίθεται στο 1, τα δεδομένα στην είσοδο του FIR φίλτρου ορίζονται να είναι προσημασμένα Signed Binary με εύρος 32 bit. Το εύρος των δεδομένων στην έξοδο του FIR φίλτρου, εάν χρησιμοποιηθεί η επιλογή Full Resolution, τίθεται αυτόματα από τον FIR Compiler στα 45 bit. Επειδή όμως το Nios II σύστημα δουλεύει με δεδομένα των 32 bit επιλέγεται η ρύθμιση Custom Resolution σύμφωνα με την οποία από τα 45 bits χρησιμοποιούνται τα 32. Τα τρία περισσότερο σημαντικά ψηφία (Most Significant Bits MSB) επιλέγονται να κορεστούν (Saturate), ενώ τα δέκα λιγότερο σημαντικά ψηφία (Least Significant Bits LSB) επιλέγονται να αποκοπούν (Truncate). Στη ρύθμιση Saturate εάν η φιλτραρισμένη έξοδος είναι μεγαλύτερη από τη μέγιστη θετική ή τη μέγιστη αρνητική τιμή η οποία μπορεί να αναπαρασταθεί, τότε η έξοδος τίθεται ίση με τη μέγιστη αυτή τιμή, ενώ στη ρύθμιση Truncate το φίλτρο απορρίπτει τα συγκεκριμένα bits. Στην επιλογή Coefficients Scaling επιλέγεται η ρύθμιση Auto σύμφωνα με την οποία παρέχεται το μέγιστο SNR, ενώ η ρύθμιση Coefficients Width Bit τίθεται στον αριθμό 10 όπως υπολογίζεται από τον FIR Compiler. 100

113 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.19: Βασικές ρυθμίσεις του FIR φίλτρου Η ρύθμιση Device Family τίθεται στην επιλογή Cyclone II και επιλέγεται η δομή υλοποίησης του FIR φίλτρου: Distributed Arithmetic: Fully Parallel Filter. Η δομή αυτή αν και καταλαμβάνει τη μεγαλύτερη επιφάνεια, παράγει ένα πολύ γρήγορο φίλτρο αφού υπολογίζει την έξοδο του φίλτρου σε έναν απλό κύκλο ρολογιού. Το σχηματικό διάγραμμα της δομής αυτής παρουσιάζεται στην εικόνα Στο πεδίο Pipeline Level επιλέγεται η ρύθμιση 1 όπου υλοποιείται ένα μόνο επίπεδο Pipeline. Στο πεδίο Data Storage επιλέγεται η ρύθμιση Logic Cells, κατά την οποία η αποθήκευση των δεδομένων πραγματοποιείται στα λογικά κελιά του FPGA. Στο πεδίο Coefficients Storage επιλέγεται η ρύθμιση Logic Cells, κατά την οποία η αποθήκευση των συντελεστών πραγματοποιείται στα λογικά κελιά του FPGA. 101

114 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.20: Σχηματικό διάγραμμα παράλληλης δομής υλοποίησης ενός FIR φίλτρου Στην εικόνα 4.21 παρουσιάζεται και η απόκριση χρόνου του φίλτρου και οι τιμές των συντελεστών. Εικόνα 4.21: Κάποιοι από τους συντελεστές του φίλτρου Το υποκύκλωμα του FIR φίλτρου φαίνεται στην εικόνα 4.22 όπως αυτό παράχθηκε από τον FIR Compiler. Τα σήματα εισόδου του είναι τα ακόλουθα: 102

115 Κεφάλαιο 4 Παρουσίαση Συστήματος clk το σήμα αυτό είναι το σήμα ρολογιού που συγχρονίζει όλους τους εσωτερικούς καταχωρητές του FIR φίλτρου. reset_n το σήμα αυτό επαναφέρει το κύκλωμα ελέγχου του FIR φίλτρου κατά τη θετική ακμή του clk και πρέπει να διαρκεί πάνω από ένα κύκλο ρολογιού. ast_sink_valid το σήμα αυτό τίθεται στο λογικό 1 όταν τα δεδομένα εισόδου είναι έγκυρα. Εάν το σήμα αυτό δεν έχει την τιμή 1 το φίλτρο σταματάει την επεξεργασία του εάν απαιτούνται νέα δεδομένα και δεν έχουν μείνει δεδομένα στην Avalon ST input FIFO. ast_sink_data το σήμα αυτό αναπαριστά τα δεδομένα εισόδου. ast_source_ready τίθεται στο λογικό 1 όταν ο Nios II είναι έτοιμος να λάβει δεδομένα. ast_sink_error το σήμα αυτό υποδεικνύει κάποιο σφάλμα κατά τη μεταφορά δεδομένων από τη μεριά του επεξεργαστή. Όταν έχει την τιμή 00 δεν υπάρχει σφάλμα. Τα σήματα εξόδου του είναι τα ακόλουθα: ast_sink_ready το σήμα αυτό τίθεται στο λογικό 1 από το FIR φίλτρο, όταν είναι έτοιμο να λάβει δεδομένα στον τρέχων κύκλο ρολογιού. ast_source_valid το σήμα αυτό τίθεται στο λογικό 1 από το FIR φίλτρο, όταν υπάρχουν έγκυρα δεδομένα στην έξοδό του. ast_source_data το σήμα αυτό αναπαριστά τα δεδομένα εξόδου του φίλτρου, το εύρος των οποίων καθορίζεται από τις ρυθμίσεις του FIR Compiler. ast_source_error το σήμα αυτό υποδεικνύει κάποιο σφάλμα κατά τη μεταφορά δεδομένων από τη μεριά του φίλτρου. Όταν έχει την τιμή 00 δεν υπάρχει σφάλμα. FIR_STR clk reset_n ast_sink_data[31..0] ast_sink_v alid ast_source_ready ast_sink_error[1..0] ast_source_data[31..0] ast_sink_ready ast_source_v alid ast_source_error[1..0] inst4 Εικόνα 4.22: Το υποκύκλωμα του FIR φίλτρου 103

116 Κεφάλαιο 4 Παρουσίαση Συστήματος Όπως έχει ήδη αναφερθεί σε προηγούμενες παραγράφους, ο Nios II ελέγχει τις μεταφορές δεδομένων από και προς το FIR φίλτρο μέσω συγκεκριμένων PIO Cores και μέσω των σημάτων ast_sink_valid (για αποστολή δεδομένων στο FIR) και ast_source_ready (για λήψη δεδομένων από το FIR). Η διαδικασία αυτή έχει ως εξής: i. Θα πρέπει να γράφεται ένα δεδομένο στο ast_sink_data και στη συνέχεια να δημιουργείται το σήμα ast_sink_valid που να έχει διάρκεια ενός κύκλου ρολογιού έτσι ώστε να διαβάζεται το αντίστοιχο δεδομένο από το FIR. Εάν το σήμα αυτό έχει την τιμή 1 για περισσότερους από έναν κύκλους ρολογιού, τότε θα εγγραφούν τα ίδια δεδομένα πολλές φορές και το FIR δε θα δίνει τα σωστά αποτελέσματα. ii. Κάθε φορά που το FIR φίλτρο πρέπει να διαβάσει ένα δεδομένο δημιουργείται ένας παλμός διάρκειας ενός κύκλου ρολογιού στο σήμα ast_source_ready. Για το σκοπό αυτό, πρέπει ανάμεσα στις εξόδους των PIO Cores για τα σήματα ast_sink_valid και ast_source_ready και στις αντίστοιχες εισόδους του FIR να προστεθεί ένα κύκλωμα (one_pulse). Σύμφωνα με το κύκλωμα αυτό, όταν εγγράφεται η τιμή 1 από το πρόγραμμα (π.χ. στο σήμα ast_sink_valid), το σήμα αυτό θα μπορεί να παραμένει για περισσότερους από έναν κύκλους ρολογιού στην τιμή 1, αλλά στο FIR θα καταλήγει μόνο ένας παλμός Το Υλικό και το Λογισμικό του Συστήματος Το SOPC σύστημα καθώς και το τελικό Nios II σύστημα, συμπεριλαμβανομένου των εξωτερικών υποκυκλωμάτων, παρουσιάζονται στις εικόνες 4.23 και Πιο συγκεκριμένα, στην εικόνα 4.23 παρουσιάζονται τα υποκυκλώματα που χρησιμοποιήθηκαν για το SOPC σύστημα καθώς και οι μεταξύ τους διασυνδέσεις. Επιπλέον, φαίνεται και η προτεραιότητα των πηγών διακοπών (IRQs), η οποία καθορίζεται αυτόματα από τον SOPC Builder. Επίσης, αυτόματα καθορίζεται και το εύρος της μνήμης (αρχική και τελική διεύθυνση) που καταλαμβάνουν τα επιμέρους υποκυκλώματα στον χάρτη διευθύνσεων του συστήματος. Τέλος, το σήμα clk (50MHz) είναι το σήμα ρολογιού του συστήματος, ενώ το σήμα clk_1 (27MHz) είναι το σήμα ρολογιού που απαιτεί ο δέκτης υπερύθρων για τη σωστή λειτουργία του. Kαι τα δύο αυτά σήματα ρολογιού παρέχονται από την κάρτα DE2 της ALTERA. 104

117 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.23: Το SOPC σύστημα Το τελικό Nios II σύστημα παρουσιάζεται στην εικόνα Αναλυτικότερα, το σύμβολο με όνομα nios είναι το κύκλωμα που παράγεται από τον SOPC Builder και εμπεριέχει όλα τα υποκυκλώματα που έχουν προστεθεί σε αυτό. Έτσι στην αριστερή πλευρά του είναι τα σήματα εισόδου, που συνδέονται στους αντίστοιχους ακροδέκτες εισόδου του Cyclone II, ενώ στην δεξιά πλευρά, είναι τα σήματα εξόδου, που συνδέονται στους αντίστοιχους ακροδέκτες εξόδου του Cyclone II. Ως είσοδοι ορίζονται τα δύο σήματα ρολογιού, το σήμα επαναφοράς του συστήματος, το σήμα από τον αναλογικο ψηφιακό μετατροπέα του CODEC, το σήμα από τους τέσσερις αισθητήρες υπερύθρων, τα κατάλληλα σήματα για τον έλεγχο του FIR φίλτρου και τα δεδομένα που προέρχονται από αυτό (επεξεργασμένα φιλτραρισμένα δεδομένα) καθώς και το σήμα (17 bit) από τα switches της κάρτας DE2. Τα σήματα εξόδου προέρχονται από τα UP IP Cores (Audio Core, VGA Core, LCD Core, PIO Cores και άλλα). Κάποια σήματα από αυτά όμως δεν οδηγούνται κατευθείαν σε ακροδέκτες του Cyclone II, αλλά λειτουργούν ως είσοδοι σε άλλα υποκυκλώματα. Έτσι, τα σήματα από τα PIOs: LEDS και LEDS_GREEN, οδηγούνται στα υποκυκλώματα bin2therm_dec και οι έξοδοι αυτών συνδέονται στους κατάλληλους ακροδέκτες του FPGA (ακροδέκτες των κόκκινων και πράσινων LEDs της DE2 κάρτας). Ομοίως, τα σήματα των PIOs: 105

118 Κεφάλαιο 4 Παρουσίαση Συστήματος pio_sink_control και pio_sink_data, οδηγούνται στα υποκυκλώματα onepulse και από εκεί στο FIR φίλτρο ως σήματα ελέγχου και δεδομένων προς επεξεργασία αντίστοιχα. Τα σήματα που παράγονται από το FIR φίλτρο επανατροφοδοτούνται στην είσοδο του συστήματος, όπως ήδη αναφέρθηκε. Στην εικόνα 4.25 απεικονίζεται το διάγραμμα ροής της κύριας εφαρμογής που εκτελεί ο Nios II (ο κώδικας της οποίας παρουσιάζεται αναλυτικά στο Παράρτημα Α), σύμφωνα με το οποίο, μετά από την δήλωση και αρχικοποίηση των μεταβλητών και των συναρτήσεων ακολουθούν οι αρχικοποιήσεις των cores του συστήματος, η εμφάνιση κειμένου στην LCD οθόνη, η αρχικοποίηση της ώρας και η καταχώρηση των IRQs. Έπειτα, το σύστημα εισέρχεται σε PLAY MODE, που είναι και η προκαθορισμένη κατάσταση του συστήματος. Όταν πιεστεί κάποιο πλήκτρο από το IR πληκτρολόγιο, εκτελείται η IR_ISR. Σύμφωνα με αυτή τη ρουτίνα εξυπηρέτησης διακοπής, το διάγραμμα ροής της οποίας παρουσιάζεται στην εικόνα 4.26, ανάλογα με το ποιο πλήκτρο πιέζεται εκτελούνται και συγκεκριμένες εργασίες, όπως αλλαγή του χρώματος και του κειμένου της αντίστοιχης κατάστασης στην VGA οθόνη και μετάβαση στην εκάστοτε κατάσταση. Στη συνέχεια, ο Nios επιστρέφει στην εκτέλεση της κύριας εφαρμογής εκτελώντας τις εργασίες που ανήκουν στην κατάσταση που έχει επιλεγεί. Κάποιες από τις εργασίες αυτές, όπως φαίνεται και στην εικόνα 4.25, είναι κοινές, όπως η λήψη των ηχητικών δεδομένων από τον CODEC, η ρύθμιση της έντασης του ήχου, η αποστολή των δεδομένων προς αναπαραγωγή στον CODEC και η απεικόνιση ένδειξης έντασης του ήχου στα LEDs. Η μόνη διαφοροποίηση έγκειται στις εργασίες που εκτελούνται για την υλοποίηση των όποιων ηχητικών εφέ. Αν δεν πιεστεί κάποιο πλήκτρο τότε συνεχίζεται η εκτέλεση των εργασιών τις παρούσας κατάστασης. 106

119 Κεφάλαιο 4 Παρουσίαση Συστήματος nios PIN_D13 PIN_N2 PIN_N25 CLOCK_27 CLOCK_50 SW[0] INPUT VCC INPUT VCC INPUT VCC clk_1 clk reset_n bin2therm_dec input[2..0] output[6..0] AUD_XCK_from_the_DE_board_0 OUTPUT AUD_XCK DRAM_CLK_from_the_DE_board_0 OUTPUT DRAM_CLK PIN_A5 VGA_CLK_from_the_DE_board_0 OUTPUT VGA_CLK PIN_A A7 inst2 PIN_B5 AUD_ADCDAT INPUT VCC AUD_ADCDAT_to_the_audio_0 out_port_from_the_leds[2..0] out_port_from_the_leds_green[2..0] AUD_ADCLRCK_to_and_from_the_audio_0 AUD_BCLK_to_and_from_the_audio_0 AUD_DACDAT_f rom_the_audio_0 AUD_DACLRCK_to_and_from_the_audio_0 BIDIR VCC BIDIR VCC OUTPUT BIDIR VCC AUD_ADCLRCK AUD_BCLK AUD_DACDAT AUD_DACLRCK PIN_B8 PIN_C5 PIN_B4 PIN_A4 PIN_C6 bin2therm_dec input[2..0] output[6..0] OUTPUT OUTPUT LEDR[17..11] LEDG[6..0] PIN_A C14 PIN_A D15 PIN_A E15 E22 PIN_A F13 F22 PIN_A PIN_W19 E13 PIN_A PIN_V E12 18 PIN_A PIN_U18 D12 PIN_U17 PIN_A A20 I2C_SCLK_from_the_audio_and_video_config_0 OUTPUT I2C_SCLK ir_sensor[0] AND4 I2C_SDAT_to_and_from_the_audio_and_video_config_0 BIDIR VCC I2C_SDAT PIN_A6 PIN_B6 inst1 ir_sensor[3..0] PIN_T19 PIN_U21 PIN_V25 PIN_R19 INPUT VCC ir_sensor[1] ir_sensor[2] ir_sensor[3] inst3 pio_f ir_control[3..0] pio_f ir_data[31..0] AvE_ir_sensor_to_the_irkbr in_port_to_the_pio_fir_control[3..0] in_port_to_the_pio_fir_data[31..0] LCD_BLON_from_the_character_lcd_0 LCD_DATA_to_and_from_the_character_lcd_0[7..0] LCD_EN_from_the_character_lcd_0 LCD_ON_from_the_character_lcd_0 LCD_RS_from_the_character_lcd_0 LCD_RW_from_the_character_lcd_0 OUTPUT BIDIR VCC OUTPUT OUTPUT OUTPUT OUTPUT LCD_BLON LCD_DATA[7..0] LCD_EN LCD_ON LCD_RS LCD_RW PIN_K2 PIN_J1 PIN_K3 PIN_J2 PIN_H1 PIN_L4 PIN_H2 PIN_K1 PIN_J4 PIN_K4 PIN_J3 PIN_H4 PIN_H3 pio_sink_control[0] CLOCK_50 onepulse input clock output_single_pulse FIR_STR out_port_from_the_pio_sink_control[3..0] out_port_from_the_pio_sink_data[31..0] pio_sink_control[3..0] inst5 CLOCK_50 SW[0] clk reset_n ast_sink_data[31..0] ast_sink_v alid ast_source_data[31..0] ast_sink_ready ast_source_v alid ast_source_error[1..0] pio_f ir_data[31..0] pio_f ir_control[0] pio_f ir_control[1] pio_f ir_control[3..2] SW[17..1] PIN_N26 PIN_P25 PIN_A E14 PIN_A F14 PIN_A D13 PIN_A C13 PIN_C13 PIN_B13 PIN_A 13 PIN_N1 PIN_P1 PIN_P2 PIN_T7 PIN_U3 PIN_U4 PIN_V 1 PIN_V 2 INPUT VCC in_port_to_the_sw _time[16..0] inst zs_addr_from_the_sdram[11..0] zs_ba_from_the_sdram[1..0] zs_cas_n_from_the_sdram zs_cke_from_the_sdram zs_cs_n_from_the_sdram zs_dq_to_and_from_the_sdram[15..0] zs_dqm_from_the_sdram[1..0] zs_ras_n_from_the_sdram zs_w e_n_from_the_sdram SRAM_ADDR_from_the_vga_0[17..0] SRAM_CE_N_from_the_vga_0 SRAM_DQ_to_and_from_the_vga_0[15..0] SRAM_LB_N_from_the_vga_0 SRAM_OE_N_from_the_vga_0 SRAM_UB_N_from_the_vga_0 SRAM_WE_N_from_the_vga_0 VGA_BLANK_from_the_vga_0 VGA_B_from_the_vga_0[9..0] VGA_G_from_the_vga_0[9..0] VGA_HS_from_the_vga_0 VGA_R_from_the_vga_0[9..0] VGA_SYNC_from_the_vga_0 VGA_VS_from_the_vga_0 OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT BIDIR VCC OUTPUT OUTPUT OUTPUT DRAM_ADDR[11..0] onepulse DRAM_BA[1..0] PIN_T6 pio_sink_control[1] input DRAM_CAS_N PIN_V PIN_A 4E2 CLOCK_50 DRAM_CKE PIN_V clock PIN_A 3B3 E3 DRAM_CS_N PIN_W2 PIN_A A6 PIN_W1 DRAM_DQ[15..0] PIN_A C3 inst6 PIN_U6 DRAM_DQM[1..0] PIN_U7 PIN_V 6 DRAM_RAS_N PIN_U5 PIN_A A2 D2 DRAM_WE_N PIN_W4 PIN_A PIN_Y A1 B4 5 PIN_W3 PIN_Y 3 PIN_A D3 PIN_Y 14 PIN_V PIN_R85 PIN_T8 OUTPUT PIN_V 7 SRAM_ADDR[17..0] OUTPUTPIN_W6 SRAM_CE_N PIN_A F4 BIDIR PIN_A B2 SRAM_DQ[15..0] PIN_AC11 C5 VCC OUTPUT PIN_A B1 SRAM_LB_N PIN_A PIN_A D8 C6 OUTPUT PIN_A SRAM_OE_N A4 PIN_A D4 PIN_AE9 E6 PIN_A A3 PIN_A D5 OUTPUT SRAM_UB_N PIN_A PIN_A D10 F6 PIN_A C2 PIN_A E5 OUTPUT SRAM_WE_N PIN_A A9 PIN_A C1 PIN_AF9 PIN_A PIN_A A10F5 OUTPUT PIN_A VGA_BLANK A5 PIN_AE10 PIN_A PIN_A B10D6 OUTPUT VGA_B[9..0] PIN_D6 PIN_A PIN_A A11D7 OUTPUT VGA_G[9..0] PIN_J13 PIN_Y PIN_V OUTPUT VGA_HS PIN_J14 PIN_B9 PIN_A PIN_V E7 9 OUTPUT VGA_R[9..0] PIN_F12 PIN_A PIN_A PIN_A F7 C7 PIN_A7 9 PIN_W8 OUTPUT VGA_SYNC PIN_G12 PIN_C10 PIN_C8 PIN_A E8 PIN_J10 PIN_W10 OUTPUT VGA_VS PIN_D10 PIN_F10 PIN_A F8 PIN_B7 PIN_J11 PIN_B10 PIN_W11 PIN_Y 10 PIN_G10 PIN_C11 PIN_A PIN_W12 PIN_A PIN_D8 B8 PIN_D9 10 PIN_B11 PIN_G11 PIN_A PIN_A C9 C8 PIN_C9 PIN_C12 PIN_D11 PIN_A PIN_A C10 E4 PIN_A 8 PIN_B12 PIN_E12 PIN_H11 PIN_D12 PIN_H12 PIN_F11 PIN_E10 output_single_pulse pio_sink_control[3..2] ast_source_ready ast_sink_error[1..0] inst4 Εικόνα 4.24: Το τελικό Nios II σύστημα 107

120 Κεφάλαιο 4 Παρουσίαση Συστήματος Ακολουθεί το διάγραμμα ροής/καταστάσεων της εφαρμογής που εκτελεί ο Nios II. Εικόνα 4.25: Το διάγραμμα ροής/καταστάσεων της εφαρμογής 108

121 Κεφάλαιο 4 Παρουσίαση Συστήματος CLK_TIME_ISR Κάθε Ένα Δευτερόλεπτο Αυξάνεται η Ώρα Μέσα στα Επιτρεπτά Όρια Εικόνα 4.26: Το διάγραμμα ροής/καταστάσεων της IR_ISR και της CLK_TIME_ISR 109

122 Κεφάλαιο 4 Παρουσίαση Συστήματος 4.5. Σχολιασμός του Τελικού Συστήματος Στην εικόνα 4.27 παρουσιάζεται μία σύνοψη (flow summary) πληροφοριών που αφορούν το σύστημα, όπως αυτή παράχθηκε μετά την επιτυχή δημιουργία του από το Quartus. Σε αυτήν παρατηρείται ότι το σύστημα καταλαμβάνει το 44% του συνολικού αριθμού των λογικών στοιχείων που περιλαμβάνονται στο Cyclone II FPGA (χωρίς το FIR φίλτρο, το σύστημα καταλάμβανε μόλις το 14%). Επίσης, χρησιμοποιούνται 175 από τους 475 ακροδέκτες του Cyclone II, αριθμός που αντιστοιχεί σε ποσοστό 37%. Επιπλέον, χρησιμοποιείται το 73% των bits μνήμης του Cyclone II, καθώς και 4 από τους 70 ενσωματωμένους πολλαπλασιαστές του (ποσοστό 6%). Τέλος, το σύστημα κάνει χρήση του ενός εκ των τεσσάρων διαθέσιμων PLLs. 110 Εικόνα 4.27: Το Flow Summary του συστήματος

123 Κεφάλαιο 4 Παρουσίαση Συστήματος Κατά το σχεδιασμό του FIR φίλτρου παρατηρήθηκε ότι ο αριθμός των συντελεστών του αλλά και τα επίπεδα pipeline δεν μπορούσαν να υπερβαίνουν κάποια όρια γιατί δημιουργούνταν πρόβλημα στο master clock (CLOCK_50) του συστήματος. Ποιο συγκεκριμένα, δεν ικανοποιούνταν το όριο των 50 MHz με αποτέλεσμα το σύστημα να παρουσιάζει απρόσμενη συμπεριφορά.στην εικόνα 4.28 φαίνονται συχνότητες των δύο σημάτων ρολογιού του συστήματος. Η θεωρητική τιμή του σήματος CLOCK_50 είναι τουλάχιστον 50 MHz, και τελικά η πραγματική τιμή αυτού ορίστηκε στα MHz ενώ το σήμα CLOCK_27 ορίστηκε στα MHz. Το μέγεθος της on chip μνήμης του συστήματος (23 KBytes) δεν είναι αρκετά μεγάλο ώστε να μπορεί να εκτελείται η κύρια εφαρμογή (155 Kbytes code + initialized data) μέσα από αυτήν, οπότε έπρεπε να χρησιμοποιηθεί κάποια άλλη μνήμη για τον σκοπό αυτό. Η ιδανικότερη διαθέσιμη μνήμη (στην DE2 κάρτα) μετά την on chip μνήμη είναι η SRAM (512 KBytes). Η μνήμη αυτή όμως χρησιμοποιείται ήδη από το VGA Core ως pixel buffer εξαναγκάζοντας ουσιαστικά τη χρήση της SDRAM μνήμης της DE2 κάρτας, η οποία δεν είναι τόσο γρήγορη όσο η SRAM, αφού απαιτεί μεγαλύτερους χρόνους ανάγνωσης εγγραφής αλλά και επιπλέον χρόνο για ανανέωση (refresh) των δεδομένων της. Έτσι, μετά τη δημιουργία της κύριας εφαρμογής, το Nios II IDE παρουσιάζει το μέγεθος της εφαρμογής, που στην συγκεκριμένη περίπτωση είναι 155 Kbytes, και την υπόλοιπη διαθέσιμη μνήμη, που είναι 8036 Kbytes, αφού η εφαρμογή εκτελείται από την SDRAM μεγέθους 8 MBytes (8192 KBytes), όπως φαίνεται και στην εικόνα Εικόνα 4.28: Το Flow Summary του συστήματος 111

124 Κεφάλαιο 4 Παρουσίαση Συστήματος Εικόνα 4.29: Λεπτομέρειες μεταγλώττισης της κύριας εφαρμογής 112

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Μονάδες Μνήμης και Διατάξεις Προγραμματιζόμενης Λογικής

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Μονάδες Μνήμης και Διατάξεις Προγραμματιζόμενης Λογικής Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Μονάδες Μνήμης και Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Μονάδες Μνήμης - Προγραμματιζόμενη Λογική Μια μονάδα μνήμης είναι ένα

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

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

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

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

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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

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

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects) ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ Τίτλος Μαθήματος Μικροελεγκτές και Ενσωματωμένα συστήματα Ανάπτυξη και Εφαρμογές Κωδικός Μαθήματος Μ2 Θεωρία / Εργαστήριο Θεωρία + Εργαστήριο Πιστωτικές μονάδες 4 Ώρες Διδασκαλίας 2Θ+1Ε

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

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 - Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Διάλεξη 4 Περίληψη Συναρτήσεις Χρονόμετρο Χρήση Διακοπτών Coprocessor Διαχείριση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΟΙΚΟΝOΜΟΥ ΧΑΡΗΣ (6424) ΦΩΚΟΣ ΝΙΚΟΛΑΟΣ(6592) ΚΑΜΒΥΣΗΣ ΝΙΚΟΛΑΟΣ(7178) 2013-2014 ΠΕΡΙΕΧΟΜΕΝΑ Σκοπός της εργασίας Ανάλυση Arduino Uno Δημιουργία πληροφορίας Αποστολή και

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5. Διδάσκων: Δρ. Γιώργος Ζάγγουλος ΗΜΥ 213 Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5 Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Κλήση Συνάρτησης και επιστροφή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

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

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

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

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

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

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

Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs)

Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs) Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs) Οι προγραμματιζόμενες λογικές διατάξεις (PLDs Programmable Logic Devices) είναι ψηφιακά ολοκληρωμένα κυκλώματα (ICs) που

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών 1 Οργάνωση υπολογιστών ΚΜΕ Κύρια Μνήμη Υποσύστημα εισόδου/εξόδου 2 Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) R1 R2 ΑΛΜ

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

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

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

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

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

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

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

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

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

Τροφοδοσία : 3,3V, 5V Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με

Τροφοδοσία : 3,3V, 5V Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με ΠΙΝΑΚΙΔΑ ΤΕΡΜΑΤΙΣΜΩΝ ΕΒ002 Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με βίδες. ΠΙΝΑΚΙΔΑ ΑΙΣΘΗΤΗΡΩΝ ΕΒ003 Αυτή η πινακίδα E-block

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

5 η Θεµατική Ενότητα : Μνήµη & Προγραµµατιζόµενη Λογική. Επιµέλεια διαφανειών: Χρ. Καβουσιανός

5 η Θεµατική Ενότητα : Μνήµη & Προγραµµατιζόµενη Λογική. Επιµέλεια διαφανειών: Χρ. Καβουσιανός 5 η Θεµατική Ενότητα : Μνήµη & Προγραµµατιζόµενη Λογική Επιµέλεια διαφανειών: Χρ. Καβουσιανός Μνήµη Η µνήµη καταλαµβάνει το µεγαλύτερο µέρος ενός υπολογιστικού συστήµατος Δύο τύποι: ROM - RAM RΟΜs CPU

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

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

Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

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

WDT και Power Up timer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Στην 4 η εργαστηριακή άσκηση θα ασχοληθούμε με την ιεραρχική σχεδίαση. Συγκεκριμένα θα μάθουμε να σχεδιάζουμε απλές οντότητες τις οποίες

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ Οι λογικές πράξεις που υποστηρίζει η Assembly του 8088 είναι : Πράξη AND Πράξη OR Πράξη NOT Πράξη XOR Με τις λογικές πράξεις μπορούμε

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

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

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

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

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

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

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

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

Ψηφιακή Επεξεργασία Σήματος ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ψηφιακή Επεξεργασία Σήματος Ενότητα Β: Περιγραφή και Τεχνικά Χαρακτηριστικά του επεξεργαστή (DSP) TMS320C5505 Όνομα Καθηγητή:

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

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

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

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

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

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ) ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK ΑΝΑΠΤΥΞΗ ΨΗΦΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ) ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΤΟΥ ΚΥΒΟΥ ΤΟΥ RUBIK ΜΕΤΑΠΤΥΧΙΑΚΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΦΥΤΤΑ ΑΓΓΕΛΙΚΗ ΠΤΥΧΙΟΥΧΟΣ ΤΜΗΜΑΤΟΣ ΦΥΣΙΚΗΣ ΠΑΝ/ΜΙΟΥ ΠΑΤΡΩΝ ΕΠΙΒΛΕΠΩΝ: ΜΠΑΚΑΛΗΣ

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

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

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

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

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

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

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

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

Ψηφιακή Λογική Σχεδίαση Ψηφιακή Λογική Σχεδίαση Επιμέλεια: Γεώργιος Θεοδωρίδης, Επίκουρος Καθηγητής Ανδρέας Εμερετλής, Υποψήφιος Διδάκτορας Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Σημείωμα Αδειοδότησης Το παρόν

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;

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

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

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

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Interrupts - Διακοπές Είναι ένας τρόπος για να διακοπεί η ροή ενός προγράμματος έτσι ώστε να εξυπηρετηθεί ένα έκτακτο γενογός

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

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

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

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

Περιεχόμενα. Πρόλογος... 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 Ψηφιακή Σχεδίαση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης Το εσωτερικό ενός PC 1 Το κουτί του PC (περίβλημα) περιέχει όλα τα βασικά μέρη του συστήματος Δύο κατηγορίες κουτιών: Desktop και Tower Mini tower Midi tower Full tower Κεντρική μονάδα Ο τύπος του κουτιού

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 11 ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 11 1. ΑΣΚΗΣΗ 1... 13 Προϋποθέσεις... 13 Εισαγωγή... 13 1.1 Το Υλικό του Αναπτυξιακού (Hardware)... 14 1.1.1 Διαβάζοντας το σχηματικό... 16 1.1.2 STR912FAW44XB... 16 1.1.3 Χάρτης

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

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

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

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

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

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

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

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

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