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

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

Download "Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: Ηλεκτρονικής και υπολογιστών ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Παπαπαύλου Χρήστου του Αλέκου Αριθμός Μητρώου: 6609 Θέμα «Ανάπτυξη Εκπαιδευτικού Συστήματος (Η/W, S/W) για δικτυακές εφαρμογές, βασισμένου σε μικροελεγκτή AVR» Επιβλέπων Κουμπιάς Σταύρος Αριθμός Διπλωματικής Εργασίας: /

2 -2-

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Ανάπτυξη Εκπαιδευτικού Συστήματος (Η/W, S/W) για δικτυακές εφαρμογές, βασισμένου σε μικροελεγκτή AVR» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Παπαπαύλου Χρήστου Αριθμός Μητρώου: 6609 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../ Ο Επιβλέπων Ο Διευθυντής του Τομέα Κουμπιάς Σταύρος Χούσος Ευθύμιος -3-

4 -4-

5 Αριθμός Διπλωματικής Εργασίας: Θέμα: «Ανάπτυξη Εκπαιδευτικού Συστήματος (Η/W, S/W) για δικτυακές εφαρμογές, βασισμένου σε μικροελεγκτή AVR» Φοιτητής: Παπαπαύλου Χρήστος Επιβλέπων: Κουμπιάς Σταύρος Περίληψη Στην παρούσα διπλωματική εργασία σχεδιάστηκε και υλοποιήθηκε ένα δίκτυο πραγματικού χρόνου με σκοπό την διασύνδεση μιας ομάδας μικροελεγκτών. Bασισμένος στο δίκτυο, αναπτύχθηκε ένας δικτυακός bootloader για μικροελεγκτές AVR και σχεδιάστηκε desktop εφαρμογή για την διεπαφή του χρήστη με το δίκτυο. Απώτερος σκοπός του εγχειρήματος αυτού είναι η χρήση του συστήματος από φοιτητές στο πλαίσιο των μαθημάτων μικροϋπολογιστών και συγκεκριμένα να διευκολύνει την ανάπτυξη δικτυακών εφαρμογών με μικροελεγκτές. Abstract At this diploma thesis a real-time network protocol was designed and implemented in order to interconnect a group of microcontrollers. Based at this protocol, a network bootloader was developed for AVR microcontrollers and a desktop application for the interface of the user with the network was developed. Ultimate goal of this work is to be used from students of microcomputer courses and specifically to facilitate the development of network applications with microcontrollers. -5-

6 -6-

7 Εισαγωγή Στο φυσικό επίπεδο του δικτύου (OSI 1) γίνεται χρήση της τυπικής σειριακής θύρας UART για την φυσική διασύνδεση των κόμβων σε τοπολογία δακτυλίου. Η επιλογή αυτή έγινε γιατί οι θύρες UART είναι διαδεδομένες τόσο στους προσωπικούς υπολογιστές, όσο και στις περισσότερες οικογένειες μικροελεγκτών, γεγονός που επιτρέπει την υλοποίηση του δικτύου για όλες αυτές τις οικογένειες. Για το επίπεδο σύνδεσης δεδομένων (OSI 2) σχεδιάστηκε και υλοποιήθηκε πρωτόκολλο τύπου δακτυλίου με χρήση σκυτάλης (token ring). Στα πλαίσια της διπλωματικής το πρωτόκολλο υλοποιήθηκε για μικροελεγκτές AVR και για προσωπικό υπολογιστή. Το γεγονός ότι το πρωτόκολλο υλοποιήθηκε τόσο για μικροελεγκτές όσο και για υπολογιστή, κάνει δυνατή την διασύνδεση των δύο παραπάνω σε κοινό δίκτυο. Σε συνδυασμό με την προγραμματιστική διεπαφή (API) που παρέχεται στους χρήστες διευκολύνεται σε μεγάλο βαθμό η ανάπτυξη δικτυακών εφαρμογών μικροελεγκτών κάνοντας χρήση του υπολογιστή σαν εργαλείο προγραμματισμού, αποσφαλμάτωσης αλλά και διασύνδεσης του χρήστη με τους μικροελεγκτές. Κατά την διαδικασία ανάπτυξης μιας εφαρμογής που στηρίζεται στην επικοινωνία των κόμβων ενός δικτύου, απαιτείται ο συνεχής προγραμματισμός κάθε κόμβου. Με τις συμβατικές μεθόδους προγραμματισμού, η συσκευή προγραμματισμού πρέπει να συνδεθεί σε κάθε έναν από τους κόμβους που απαρτίζουν το δίκτυο. Ο χρόνος που απαιτείται για αυτή την διαδικασία αυξάνεται γραμμικά καθώς αυξάνεται ο αριθμός των κόμβων του δικτύου. Αυτός ο χρόνος εξαλείφεται με χρήση ενός bootloader που βασίζεται στο δίκτυο για την επικοινωνία και τον προγραμματισμό των κόμβων. Ο προγραμματισμός με τον bootloader, σε αντίθεση με τις άλλες μεθόδους, δεν απαιτεί από πλευράς συνδεσμολογίας τίποτα περισσότερο από την ίδια την υποδομή του δικτύου. Στα πλαίσια αυτής της διπλωματικής, αξιοποιήθηκε το πρωτόκολλο που υλοποιήθηκε παραπάνω, για την ανάπτυξη ενός δικτυακού bootloader για μικροελεγκτές AVR. Ο προγραμματισμός εκτελείται από εφαρμογή προσωπικού υπολογιστή που αναπτύχθηκε επίσης στα πλαίσια αυτής της διπλωματικής, με την οποία ο χρήστης μπορεί να προγραμματίσει τους μικροελεγκτές του δικτύου, αλλά και να αλληλεπιδράσει με αυτούς γενικότερα. Τέλος, κατασκευάστηκαν τρία όμοια μικροϋπολογιστικά συστήματα με μικροελεγκτή AVR σε τυπωμένο κύκλωμα (PCB), ώστε να επιδειχθούν οι δυνατότητες του δικτύου και του Bootloader στην πράξη. Στο σημείο αυτό θα ήθελα να ευχαριστήσω θερμά τον κύριο Σταύρο Κουμπιά για την εμπιστοσύνη που μου έδειξε με την ανάθεση του συγκεκριμένου θέματος καθώς και για την βοήθειά του όπου αυτή ήταν απαραίτητη. Επίσης θέλω να ευχαριστήσω τον κύριο Παναγιώτη Μητρόπουλο για την πολύτιμη βοήθεια και τις συμβουλές του. Τέλος, δεν μπορώ να παραλείψω τις θερμές ευχαριστίες στον συνάδελφο και φίλο Στέλιο Συρίγο για την καθοριστική συμβολή του στην κατασκευή των τυπωμένων κυκλωμάτων. -7-

8 -8-

9 Πίνακας Περιεχομένων Εισαγωγή Μικροελεγκτές AVR Γενικά για τους μικροελεγκτές α Διαφορές με μικροεπεξεργαστές β Είσοδος-Έξοδος (I/O) γ Μνήμη Εφαρμογές α Ενσωματωμένα συστήματα β Εφαρμογές αυτοματισμού γ Μηχανοκίνητες εφαρμογές Αρχιτεκτονική AVR α RISC β Καταχωρητές γ Σύνολο εντολών Περιφερειακά AVR α Περιφερειακά Εισόδου Εξόδου (I/O) β Ταλαντωτής Μνήμες AVR α FLASH β EEPROM γ SRAM Διευθυνσιοδότηση α Χώροι διευθύνσεων β Διευθυνσιοδότηση μνήμης δεδομένων γ Διευθυνσιοδότηση μνήμης προγράμματος Προγραμματισμός α Assemblers β C Compilers γ Fuse bits δ Αρχεία intel hex Μέθοδοι προγραμματισμού α ISP (In system programming) β HVPP (High voltage parallel) γ JTAG δ Bootloader Δίκτυο ΤΚΝ Προδιαγραφές Φυσικό επίπεδο Τοπολογία Πρωτόκολλο σύνδεσης δεδομένων α Λειτουργίες πρωτοκόλλου β Πακέτα πρωτοκόλλου γ Αλγόριθμος πρωτοκόλλου δ Σχηματική αναπαράσταση κόμβου Θεωρητική Ανάλυση Επιδόσεων α Παράμετροι

10 2.5.β Περιορισμοί Πραγματικού Χρόνου γ Tokens Per Second δ Πρόγραμμα Υπολογισμού ε Αποτελέσματα στ Καθυστέρηση Πακέτου ζ Throughput Υλοποίηση δικτύου TKN Περιβάλλον ανάπτυξης α STK β AVR Studio γ Κύκλωμα breadboard δ Καλώδιο FTDI Driver για AVR α Αρχιτεκτονική driver β Δέκτης γ Πομπός δ Προγραμματιστική διεπαφή (API) ε Χρήση βιβλιοθήκης δικτύου Driver για HY α Αρχιτεκτονική Driver β Driver Thread γ Προγραμματιστική διεπαφή (API) TKN Bootloader Περιπτώσεις προγραμματισμού α Πρόβλημα β Λύση Χρήσιμα χαρακτηριστικά AVR α Boot Section β Boot Reset γ Θέση Interrupt Vector δ Boot Lock Bits (BLB) Υλοποίηση bootloader α Διεύθυνση reset β Interrupt Vector γ Αρχιτεκτονική bootloader δ Εντολές bootloader ε Κατανομή Καταχωρητών στ Διαδικασία προγραμματισμού ζ Εκτέλεση προγράμματος χρήστη Εφαρμογή προγραμματισμού α Συμβατότητα / Απαιτήσεις β Δυνατότητες γ Λειτουργία δ Χρήση της εφαρμογής ως κονσόλα αποσφαλμάτωσης TKN PCB Στοιχεία πλακέτας α Κονέκτορες Δικτύου Κατασκευή α Σχεδίαση

11 5.2.β Εκτύπωση γ Τρύπημα / Κόλληση Δοκιμαστικά Προγράμματα ΒΙΒΛΙΟΓΡΑΦΙΑ ΠΑΡΑΡΤΗΜΑ (PCB)...69 Στο παρακάτω σχήμα φαίνεται το σχηματικό διάγραμμα της πλακέτας που σχεδιάστηκε:...69 Εδώ φαίνεται το τελικό layout της πλακέτας που χρησιμοποιήθηκε για την εκτύπωση της πλακέτας: ΠΑΡΑΡΤΗΜΑ (Κώδικας)

12 -12-

13 1. Μικροελεγκτές AVR Σε αυτή την εργασία χρησιμοποιήθηκαν μικροελεγκτές AVR της σειράς ATmega από την εταιρεία Atmel. Σε αυο το κεφάλαιο γίνεται περιγραφή των δυνατοτήτων τους, αφού γίνει μια εισαγωγή στους μικροελεγκτές γενικότερα. 1.1 Γενικά για τους μικροελεγκτές Οι μικροελεγκτές είναι μια ειδική κατηγορία μικροεπεξεργαστών. Είναι δηλαδή ολοκληρωμένα κυκλώματα με δυνατότητα εκτέλεσης στοιχειωδών αριθμητικών και λογικών πράξεων μεταξύ δυαδικών δεδομένων, καθώς και δυνατότητα πραγματοποίησης λειτουργιών εισόδου εξόδου δεδομένων. Ένας μικροεπεξεργαστής προγραμματίζεται καθορίζοντάς την ακολουθία εντολών προς εκτέλεση. Κάθε μικροεπεξεργαστής έχει περιορισμένο σετ εντολών που μπορεί να εκτελέσει σύμφωνα με την αρχιτεκτονική του. 1.1.α Διαφορές με μικροεπεξεργαστές Ένας μικροεπεξεργαστής δεν είναι σε θέση να λειτουργήσει χωρίς την ύπαρξη ορισμένων εξωτερικών κυκλωμάτων. Τα ελάχιστα περιφερειακά που χρειάζεται ένας μικροεπεξεργαστής είναι η μνήμη από την οποία θα διαβάσει το πρόγραμμα που θα εκτελέσει και ο ταλαντωτής ως η πηγή ρολογιού που είναι απαραίτητη σε κάθε σύγχρονο ακολουθιακό κύκλωμα. Όλα τα παραπάνω, ένας μικροελεγκτής τα περιλαμβάνει σε ένα ολοκληρωμένο κύκλωμα, πράγμα που τον καθιστά ικανό να λειτουργήσει πλήρως αυτόνομα έχοντας σαν επακόλουθο την μείωση του κόστους και της πολυπλοκότητας του συστήματος στο οποίο θα χρησιμοποιηθούν. 1.1.β Είσοδος-Έξοδος (I/O) Οι μικροελεγκτής ενσωματώνουν ένα πλήθος από περιφερειακά εισόδου εξόδου. Συνήθη τέτοια περιφερειακά είναι μετρητές, διεπαφές επικοινωνίας UART, I²C, USB, μετατροπείς A/D, αναλογικοί συγκριτές, γεννήτριες PWM. 1.1.γ Μνήμη Το σημαντικότερο από τα περιφερειακά που υπάρχουν ενσωματωμένα σε έναν μικροελεγκτή είναι η μνήμη. Θα βρούμε τουλάχιστον δύο είδη μνήμης, μόνιμης και προσωρινής αποθήκευσης, μη πτητική και πτητική αντίστοιχα. Εξαλείφοντας την ανάγκη εξωτερικής μνήμης, ένας μικροελεγκτής γίνεται ουσιαστικά αυτόνομος. 1.2 Εφαρμογές Οι μικροελεγκτές λόγω του χαμηλού τους κόστους και της ευελιξίας που παρέχουν βρίσκουν αναρίθμητες χρήσεις σε διάφορους κλάδους. 1.2.α Ενσωματωμένα συστήματα Πρόκειται για υπολογιστικά συστήματα που κατασκευάζονται με σκοπό να επιτελέσουν μια συγκεκριμένη εργασία, είτε στα πλαίσια ενός ευρύτερου συστήματος, είτε εντελώς αυτόνομα. Σε αντίθεση με τα υπολογιστικά συστήματα γενικού σκοπού, τα οποία κατασκευάζονται ώστε να έχουν ευελιξία και να μπορούν να εξυπηρετήσουν ένα μεγάλο -13-

14 φάσμα εφαρμογών, τα ενσωματωμένα συστήματα έχουν καθορισμένο έργο εξ αρχής και κατασκευάζονται ώστε να μπορέσουν να πραγματοποιήσουν το έργο αυτό με το ελάχιστο δυνατό κόστος. Ως παραδείγματα ενσωματωμένων συστημάτων μπορούμε να αναφέρουμε κάμερες, φορητές συσκευές αναπαραγωγής μουσικής, DVD players, εκτυπωτές και άλλα. Πολλές ηλεκτρικές - ηλεκτρονικές συσκευές της καθημερινότητας μπορούν να θεωρηθούν ενσωματωμένα συστήματα. Παραδείγματα είναι πλυντήρια, φούρνοι μικροκυμάτων κτλ. 1.2.β Εφαρμογές αυτοματισμού Πολλές εφαρμογές κάνουν χρήση περισσότερων του ενός μικροελεγκτών συνδεδεμένων μεταξύ τους σε ένα τοπικό, μικρής κλίμακας δίκτυο με σκοπό τον καλύτερο και ακριβέστερο έλεγχο ενός συστήματος. Για παράδειγμα, διάφορα προηγμένα συστήματα ρύθμισης θερμοκρασίας κτιρίων, μπορούν να επωφεληθούν από μια τέτοια διαμόρφωση ώστε να επιτύχουν πιο ακριβή έλεγχο των συνθηκών του κτιρίου με απώτερο στόχο την εξοικονόμηση ενέργειας. Ένα άλλο ενδιαφέρον πεδίο στο οποίο έχουν εξελιχτεί τα ενσωματωμένα συστήματα είναι τα ασύρματα δίκτυα αισθητήρων, τα οποία αποτελούνται από ένα πλήθος αισθητήρων διασκορπισμένων στον χώρο με στόχο την παρακολούθηση μεγεθών όπως θερμοκρασία, πίεση, υγρασία και την αποστολή των μετρήσεων σε έναν κεντρικό σταθμό όπου θα αξιοποιηθούν κατάλληλα. 1.2.γ Μηχανοκίνητες εφαρμογές Οι μικροελεγκτές και τα ενσωματωμένα συστήματα έχουν διεισδύσει σε τεράστιο βαθμό στην βιομηχανία μηχανοκίνητων, είτε πρόκειται για αυτοκίνητα, μοτοσυκλέτες είτε για αεροσκάφη υψηλής τεχνολογίας. Οι χρήσεις ενσωματωμένων συστημάτων σε ένα όχημα ξεκινούν από τα πιο βασικά στάδια σχετιζόμενα με την λειτουργία του ίδιου του κινητήρα και εκτείνονται στα συστήματα αυτοματισμού και ελέγχου του οχήματος και έως τα συστήματα ψυχαγωγίας των επιβατών. Τελικά σε ένα όχημα όλες οι περιφερειακές λειτουργίες ελέγχονται από ένα κεντρικό σύστημα το οποίο ελέγχει και επιβλέπει το όχημα ανά πάσα στιγμή σαν ένα σύνολο. Σε αυτό το σημείο θα εξετάσουμε τα χαρακτηριστικά των μικροελεγκτών AVR αρχίζοντας από την αρχιτεκτονική τους. 1.3 Αρχιτεκτονική AVR Μία από τις διακρίσεις που μπορούμε να κάνουμε για την αρχιτεκτονική ενός υπολογιστικού συστήματος είναι σε Von Neumann και σε Harvard. Η διαφοροποίηση αυτών των δύο σχετίζεται με την θέση αποθήκευσης των εντολών και των δεδόμενων του προγράμματος. Στην μεν Von Neumann αρχιτεκτονική, οι εντολές και τα δεδομένα βρίσκονται στο ίδιο σύστημα μνήμης, ενώ στην Harvard σε διαφορετικό. Στην Von Neumann αρχιτεκτονική κάθε διεύθυνση είναι δυνατόν να αναφέρεται είτε σε εντολή, είτε σε δεδομένο καθώς τα 2 τελευταία καταλαμβάνουν τον ίδιο χώρο διευθύνσεων, σε αντίθεση με την Harvard αρχιτεκτονική, οπού υπάρχουν δύο διαφορετικοί χώροι διευθύνσεων. Οι μικροελεγκτές AVR της σειράς ATMega που χρησιμοποιήθηκαν, έχουν 8bit τροποποιημένη Harvard RISC αρχιτεκτονική. Στην τροποποιημένη Harvard αρχιτεκτονική υπάρχουν πράγματι ξεχωριστοί χώροι διευθύνσεων για το πρόγραμμα και για τα δεδομένα, με μία διαφορά. Ο προγραμματιστής έχει πρόσβαση στην μνήμη του προγράμματος και μπορεί να διαβάσει ή και να γράψει σε αυτήν. Αυτό μας δίνει την δυνατότητα να αποθηκεύουμε δεδομένα μαζί με κώδικά στην μνήμη προγράμματος, καθώς και να -14-

15 τροποποιούμε τα περιεχόμενα της μνήμης. 1.3.α RISC Μια άλλη σημαντική διάκριση που γίνεται στην αρχιτεκτονική ενός υπολογιστικού συστήματος σχετίζεται με το συνόλου εντολών. Υπάρχουν δύο κατηγορίες, η αρχιτεκτονική περιορισμένου συνόλου εντολών (RISC) η οποία ακολουθείται στην περίπτωση μας και η αρχιτεκτονική σύνθετου συνόλου εντολών (CISC). Η διαφορά βρίσκεται στη δυνατότητα των διαθέσιμων εντολών. Στην περίπτωση του σύνθετου συνόλου εντολών, το οποίο προηγείται χρονολογικά, υπάρχουν εντολές που πραγματοποιούν περισσότερες από μία στοιχειώδεις ενέργειες σε ένα βήμα, για παράδειγμα, φόρτωση από την μνήμη πρόσθεση αποθήκευση στην μνήμη. Το μοντέλο του περιορισμένου συνόλου εντολών προτείνει την κατάργηση των σύνθετων εντολών, με στόχο απλούστερες κεντρικές μονάδες επεξεργασίας, οι οποίες όμως θα εκτελούν ταχύτερα κάθε μεμονωμένη εντολή, οδηγώντας σε μικρότερους συνολικούς χρόνους εκτέλεσης. Επίσης η μικρότερη επιφάνεια πυριτίου που απαιτείται λόγω των απλούστερων λειτουργικών μονάδων, επιτρέπει την αύξηση των διαθέσιμων καταχωρητών, πράγμα που διευκολύνει τόσο τον προγραμματισμό σε γλώσσα assembly, όσο και την διαδικασία παραγωγής κώδικά από τους μεταφραστές. 1.3.β Καταχωρητές Υπάρχουν διαθέσιμοι 32 καταχωρητές γενικού σκοπού 8bit (r0-r31). Οι περισσότεροι από αυτούς μπορούν να χρησιμοποιηθούν είτε ως καταχωρητές προέλευσης είτε ως προορισμού στις εντολές του μικροελεγκτή. Οι 6 υψηλότεροι από τους 32 αυτούς καταχωρητές σχηματίζουν σε ζεύγη τους 3 16bit X, Y, Z οι οποίοι χρησιμοποιούνται για διευθυνσιοδότηση κατά την προσπέλαση είτε της μνήμης δεδομένων είτε της μνήμης προγράμματος, όπως θα δούμε σε επόμενη παράγραφο. 8bit 16bit r0 - r25 Δεν σχηματίζουν ζεύγη. r26 (XL) X r27 (XH) r28 (YL) Y r29 (YH) r30 (ZL) Z r31 (ZH) Πίνακας 1.1: Καταχωρητές 8bit AVR αρχιτεκτονικής 1.3.γ Σύνολο εντολών Οι εντολές που υπάρχουν σε αυτή την σειρά μικροελεγκτών κατηγοριοποιούνται στις παρακάτω γενικές ομάδες: -15-

16 Εντολές αριθμητικών και λογικών πράξεων Πρόσθεση, Αφαίρεση, Πολλαπλασιασμός, λογικό ΚΑΙ / Η. Εντολές διακλάδωσης Απλά άλματα, άλματα υπό συνθήκη, κλήση ρουτινών, συγκρίσεις. Εντολές μεταφοράς δεδομένων Μεταφορά μεταξύ καταχωρητών, φόρτωση από τις διάφορες μνήμες. Εντολές διαχείρισης bit Ολίσθηση, θέση bit, καθαρισμός bit, έλεγχος bit. Εντολές ελέγχου μικροελεγκτή Sleep, Reset Watchdog, nop Πίνακας 1.2: Είδη εντολών αρχιτεκτονικής AVR 8bit Υπάρχουν εντολές που δεν δέχονται όρισμα, και εντολές που δέχονται ένα ή δύο ορίσματα. Τα ορίσματα μπορεί να είναι ένας καταχωρητής, δύο καταχωρητές ή ένας καταχωρητής και μία σταθερά. Το εύρος της σταθεράς διαφέρει μεταξύ των διαφόρων εντολών. Επίσης υπάρχουν εντολές που δέχονται σαν όρισμα ένα από τα ζεύγη καταχωρητών X, Y, Z. Τα opcode των εντολών έχουν μέγεθος μίας ή δύο λέξεων, δηλαδή 16 ή 32 bit. Στις περισσότερες εντολές που δέχονται σαν όρισμα καταχωρητή, μπορεί να χρησιμοποιηθεί οποιοσδήποτε από τους 32 καταχωρητές γενικού σκοπού (r0-r31). Υπάρχουν ωστόσο ορισμένες εντολές που δέχονται μόνο τους 16 υψηλότερους καταχωρητές (r16r31) 1.4 Περιφερειακά AVR 1.4.α Περιφερειακά Εισόδου Εξόδου (I/O) Στους μικροελεγκτές αυτής της σειράς βρίσκουμε τα παρακάτω περιφερειακά εισόδου-εξόδου: Διεπαφές επικοινωνίας USB, UART, I2C, CAN, LIN Διεπαφές χρήστη LCD Segment display Μετατροπείς ADC, DAC, PWM Αισθητήρες Θερμοκρασίας Ταλαντωτές 32kHz, 128kHz, 8MHz Μετρητές 8bit, 16bit Πίνακας 1.3: Συνήθη περιφερειακά εισόδου-εξόδου στους μικροελεγκτές AVR Για την σύνδεση επιπλέον εξωτερικών περιφερειακών έχουμε στην διάθεση μας έναν αριθμό ψηφιακών εισόδων οι οποίες είναι δυνατόν να χρησιμοποιηθούν για αυτόν τον σκοπό. 1.4.β Ταλαντωτής Όλοι οι μικροελεγκτές αυτής της σειράς φέρουν ενσωματωμένο RC ταλαντωτή με δυνατότητα ακριβούς ρύθμισης της συχνότητας. Η κεντρική συχνότητας αυτού του ταλα-16-

17 ντωτή είναι 8MHz. Διαθέσιμος είναι επίσης ταλαντωτής χαμηλής συχνότητας της τάξης των khz που μπορεί να χρησιμοποιηθεί σαν ρολόι του μικροελεγκτή σε εφαρμογές χαμηλής κατανάλωσης που η ταχύτητα εκτέλεσης δεν είναι μείζονος σημασίας. Τέλος υπάρχει δυνατότητα σύνδεσης εξωτερικού κρυστάλλου μέγιστης συχνότητας 20MHz. Δεδομένου ότι οι περισσότερες εντολές εκτελούνται σε ένα κύκλο ρολογιού έχουμε μέγιστη θεωρητική απόδοση 20MIPS. 1.5 Μνήμες AVR Υπάρχουν τριών τύπων μνήμες. Η μνήμη FLASH χρησιμεύει στην αποθήκευση του προγράμματος του μικροελεγκτή καθώς και στην αποθήκευση σταθερών δεδομένων. Η μνήμη EEPROM χρησιμεύει επίσης στην αποθήκευση σταθερών δεδομένων. Η μνήμη SRAM χρησιμεύει στην προσωρινή αποθήκευση δεδομένων κατά τον χρόνο εκτέλεσης. Στον παρακάτω πίνακα φαίνονται συνοπτικά οι υπάρχουσες μνήμες και τα γενικά χαρακτηριστικά τους. Ελάχιστη χωρητικότητα Μέγιστη χωρητικότητα Μονάδα Πτητική Ανάγνωση Εγγραφή KB όχι ναι Σε ορισμένους EEPROM 0,25 4 KB όχι ναι ναι SRAM 0,25 16 KB ναι ναι ναι Τύπος FLASH Πίνακας 1.4 Μνήμες και χαρακτηριστικά τους 1.5.α FLASH Μη πτητική μνήμη μόνο ανάγνωσης. Περιέχει τις εντολές που θα εκτελέσει ο μικροελεγκτής καθώς και δεδομένα γνωστά κατά τον χρόνο συγγραφής του προγράμματος. Την μνήμη FLASH την προγραμματίζει ο χρήστης με κάποια από τις διαθέσιμες μεθόδους προγραμματισμού και τα περιεχόμενά της δεν προβλέπεται να τροποποιηθούν αν δεν επαναπρογραμματιστεί ο μικροελεγκτής. Σε ορισμένα μοντέλα AVR η μνήμη FLASH είναι εγγράψιμη από τον ίδιο τον μικροελεγκτή, γεγονός στο οποίο στηρίζεται η λειτουργία των bootloader. Κάτι τέτοιο ωστόσο, αν δεν γίνει με προσοχή, μπορεί να προκαλέσει καταστροφή του προγράμματος καθιστώντας τον μικροελεγκτή ανίκανο να εκκινήσει χωρίς επαναπρογραμματισμό, συνεπώς πρέπει να αποφεύγεται. 1.5.β EEPROM Μη πτητική μνήμη ανάγνωσης/εγγραφής την οποία μπορεί να προγραμματίσει ο χρήστης με κάποιες από τις μεθόδους προγραμματισμού. Μπορεί να χρησιμοποιηθεί για αποθήκευση σταθερών δεδομένων αν η χωρητικότητα της FLASH δεν επαρκεί, αλλά και για καταγραφή δεδομένων που γίνονται διαθέσιμα στον χρόνο εκτέλεσης. Για παράδειγμα σε μια εφαρμογή συλλογής μετρήσεων θερμοκρασίας, η EEPROM μπορεί να χρησιμοποιηθεί για την καταγραφή των δεδομένων. Η SRAM δεν θα μπορούσε να χρησιμοποιηθεί για αυτόν τον σκοπό αφού είναι πτητική μνήμη και τα περιεχόμενα της δεν είναι διαθέσιμα μετά την διακοπή της τροφοδοσίας, πράγμα που θα οδηγούσε στην απώλεια των συλλεχθέντων μετρήσεων. 1.5.γ SRAM Πτητική μνήμη ανάγνωσης/εγγραφής. Είναι η μνήμη που χρησιμοποιείται για την αποθήκευση προσωρινών δεδομένων του χρόνου εκτέλεσης. Στην μνήμη SRAM αποθηκεύ-17-

18 ονται οι μεταβλητές του προγράμματος του μικροελεγκτή. 1.6 Διευθυνσιοδότηση 1.6.α Χώροι διευθύνσεων Η μικροελεγκτές της σειράς AΤmega λόγω της Harvard αρχιτεκτονικής τους έχουν δύο χώρους διευθύνσεων, τον χώρο της μνήμης δεδομένων και τον χώρο της μνήμης προγράμματος. Η χώρος της μνήμης προγράμματος αντιστοιχεί στην μνήμη FLASH η οποία είναι προσβάσιμη ανά λέξη (2 byte). Ο χώρος διευθύνσεων δεδομένων δεν αντιπροσωπεύει μία μόνο μονάδα αποθήκευσης, αλλά, όπως φαίνεται στον παρακάτω πίνακα, στον χώρο αυτό έχουν αντιστοιχηθεί τρεις ετερογενείς μονάδες αποθήκευσης. Μονάδα αποθήκευσης Από διεύθυνση Έως διεύθυνση Καταχωρητές 0x0000 0x001F Καταχωρητές Περιφερειακών 0x0020 0x00FF SRAM 0x0100 Τέλος SRAM Πίνακας 1.5 Αντιστοίχιση διαφορετικών μονάδων αποθήκευσης στον χώρο διευθύνσεων της μνήμης δεδομένων Λόγω του ενιαίου χώρου διευθύνσεων μπορούμε να προσπελάσουμε με τις ίδιες εντολές τους καταχωρητές γενικού σκοπού, τους καταχωρητές περιφερειακών και την εσωτερική SRAM. Στην περίπτωση της SRAM ο χρόνος προσπέλασης είναι μεγαλύτερος κατά έναν κύκλο ρολογιού. 1.6.β Διευθυνσιοδότηση μνήμης δεδομένων Data direct Σε αυτό το σχήμα διευθυνσιοδότησης στο ίδιο το opcode της εντολής παρέχεται ολόκληρη η 16bit διεύθυνση που θέλουμε να προσπελάσουμε. Παράδειγμα:.dseg var:.byte 1 ;Δεσμεύω 1 byte για την μεταβλητή var.cseg LDS r16, var INC r16 STS var, r16 ;Φορτώνω τον r16 με την τιμή της μεταβλητής ;Αυξάνω κατά 1 ;Αποθηκεύω την νέα τιμή της μεταβλητής -18-

19 Σχήμα 1.1: Προσπέλαση Μνήμης SRAM me direct τρόπο Data indirect Σε αυτό το σχήμα διευθυνσιοδότησης ένας από τους X, Y, Z περιέχει την διεύθυνση που θέλουμε να προσπελάσουμε. Αυτό έχει το πλεονέκτημα ότι με αλλάγες του καταχωρητή διεύθυνσης μπορούμε να προσπελάσουμε γειτονικά δεδομένα, όπως πίνακες. Παράδειγμα:.dseg var1:.byte 1 ;Δεσμεύω 1 byte για την μεταβλητή var1.byte 15 ;Δεσμεύω 15 byte ανάμεσα στις var1, var2 var2:.byte 1 ;Δεσμεύω 1 byte για την μεταβλητή var2.cseg LDI XL, LOW(var) ;Φόρτωσε το λιγότερο σημαντικό byte της διεύθυνσης LDI XH, HIGH(var) ;Φόρτωσε το περισσότερο σημαντικό byte της διεύθυνσης LD r16, X ;Φόρτωσε στον r16, την τιμή της μεταβλητής LDI r20, 0x10 ; ADD XL, r20 ;Αύξησε την διεύθυνση κατά 16 θέσεις LD r17, X ;Φόρτωσε στον r17 την τιμή της μεταβλητής var2 Σχήμα 1.2: Προσπέλαση Μνήμης SRAM me indirect τρόπο Data indirect with displacement Όπως και στο προηγούμενο σχήμα ένας απο τους X, Y, Z περιέχει την διεύθυνσης, αλλά η τελική διεύθυνση που προσπελαύνουμε προκύπτει μετά από πρόσθεση μιας σταθεράς q στην τιμή του καταχωρήτή διεύθυνσης. Παράδειγμα: -19-

20 .dseg arr:.byte 10 ;Δεσμεύω χώρο για έναν πίνακα 10 byte.cseg LDI YL, LOW(arr) LDI YH, HIGH(arr) LDD r16, Y+2 ;Φορτώνω το λιγότερο σημαντικό byte της διεύθυνσης ;Φορτώνω το περισσότερο σημαντικό byte της διεύθυνσης ;Φόρτωσε στον r16 το τρίτο στοιχείο του πίνακα ;Ισοδύναμα σε C: r16=arr[2]; Σχήμα 1.3: Προσπέλαση Μνήμης SRAM me indirect τρόπο και displacement Data indirect with pre/post increment/decrement Με την indirect διευθυνσιοδότηση έχουμε την δυνατότητα να αυξήσουμε ή να μειώσουμε τον καταχωρητή διεύθυνσης πριν ή μετά την προσπέλαση. Αυτό είναι χρήσιμο όταν θέλουμε να προσπελάσουμε συνεχόμενα δεδομένα στην μνήμη όπως αλφαριθμητικά ή πίνακες. Παράδειγμα:.dseg arr:.byte 5 ;Δεσμεύω χώρο για έναν πίνακα 5 byte.cseg const_str:.db "12345" ;Δεσμεύω ΚΑΙ αρχικοποιώ ένα αλφαριθμητικό στην FLASH ;Φορτώνω την διεύθυνση του αλφαριθμητικού LDI ZL, LOW(str<<1) LDI ZH, HIGH(str<<1) ;Φορτώνω την διεύθυνση του πίνακα LDI YL, LOW(arr) LDI YH, HIGH(arr) LDI r17, 5 copyloop: LPM r16, Z+ ST Y+, r16 DEC r17 BRNE copyloop ;Φορτώνω το μέγεθος του αλφαριθμητικού ;Φορτώνω ένα byte απο την FLASH ;Αποθηκεύω το byte στην SRAM 1.6.γ Διευθυνσιοδότηση μνήμης προγράμματος Όπως έχουμε ήδη αναφέρει, στην μνήμη προγράμματος (FLASH) μπορούμε να αποθηκεύουμε σταθερά δεδομένα. Για να διαβάσουμε αυτά τα δεδομένα χρησιμοποιούμε σχήμα indirect διευθυνσιοδότησης με καταχωρητή διεύθυνσης τον Z. Έχουμε την δυνα-20-

21 τότητα pre/post increment. Η προσπέλαση της FLASH φαίνεται στο προηγούμενο παράδειγμα. 1.7 Προγραμματισμός Ο προγραμματισμός ενός μικροελεγκτή AVR περιλαμβάνει δύο στάδια. Το πρώτο είναι η συγγραφή του προγράμματος που θα εκτελεί ο μικροελεγκτής και το δεύτερο η εγγραφή των μνημών FLASH και EEPROM καθώς και ο καθορισμός των τιμών των fuse bits στα οποία θα αναφερθούμε αργότερα. Η συγγραφή του προγράμματος μπορεί να γίνει είτε απευθείας στην γλώσσα μηχανής του μικροελεγκτή (AVR Assembly), είτε σε γλώσσα C με χρήση κάποιου από τους διαθέσιμους compilers. Το προϊόν αυτού του σταδίου είναι ένα αρχείο μορφής intel hex (θα ονομάζεται αρχείο.hex στην συνέχεια) που περιέχει το τελικό δυαδικό πρόγραμμα μηχανής αλλά και τα δεδομένα που το συνοδεύουν, έτοιμο να αντιγραφεί στην μνήμη FLASH του μικροελεγκτή. Στην περίπτωση που θέλουμε να χρησιμοποιήσουμε την μνήμη EEPROM για επιπλέον σταθερά δεδομένα τότε παράγουμε ένα αρχείο.hex με τα περιεχόμενα της EEPROM το οποίο πρέπει επίσης να αντιγραφεί στον μικροελεγκτή. 1.7.α Assemblers Το πρώτο πρόγραμμα που έχει στην διάθεση του ο μηχανικός ενσωματωμένων συστημάτων για να παράγει το αρχείο hex με το οποίο θα προγραμματιστούν οι μικροελεγκτές είναι ο assembler. Αυτό που αναλαμβάνει να κάνει ο assembler είναι να μετατρέψει τις μνημονικές εντολές του assembly κώδικα σε δυαδική μορφή έτοιμη να γραφεί στην μνήμη του μικροελεγκτή. Επίσης εκτελεί διάφορους ελέγχους ορθότητας στην σύνταξη των εντολών και διευκολύνει στον χειρισμό των διευθύνσεων μνήμης δίνοντάς μας την δυνατότητα να χρησιμοποιούμε συμβολικά ονόματα. 1.7.β C Compilers Για να αποφύγουμε την επίπονη διαδικασία συγγραφής κώδικα assembly, υπάρχουν διαθέσιμοι C compilers επιτρέποντας την συγγραφή κώδικα C. Έτσι μειώνεται πολύ ο χρόνος ανάπτυξης μιας εφαρμογής καθώς και η πιθανότητα λογικών σφαλμάτων. Επίσης υπάρχουν διαθέσιμες οι στάνταρ βιβλιοθήκες της γλώσσας C που λύνουν πολλά συνηθισμένα προγραμματιστικά προβλήματα. 1.7.γ Fuse bits Πρόκειται για bits υλοποιημένα στο υλικό του μικροελεγκτή και παραμετροποιούν σημαντικά χαρακτηριστικά της λειτουργίας του μικροελεγκτή, όπως η διεύθυνση εκτέλεσης μετά από reset, το επιθυμητό ρολόι του συστήματος και άλλα. Η γνώση της τιμής τους και η σωστή ρύθμιση τους είναι απαραίτητη για την προβλέψιμη λειτουργία του μικροελεγκτή. 1.7.δ Αρχεία intel hex Πρόκειται για αρχεία απλού κειμένου ASCII που σκοπό έχουν να περιγράψουν την διάταξη δυαδικών δεδομένων σε μια μνήμη. Συνεπώς περιέχουν δυαδικά δεδομένα και τις αντίστοιχες διευθύνσεις τους. Κάθε γραμμή του αρχείου αποτελεί μια εγγραφή hex και έχει την εξής καθορισμένη μορφή. 1. Κωδικός έναρξης Ένας χαρακτήρας ':' που σηματοδοτεί την αρχή μιας εγγραφής. -21-

22 2. Άθροισμα byte 3. Διεύθυνση 4. Τύπος Εγγραφής 5. Δεδομένα 6. Checksum Δύο δεκαεξαδικά ψηφία που εκφράζουν τον αριθμό των bytes του πεδίου δεδομένων. 4 δεκαεξαδικά ψηφία που που εκφράζουν την διεύθυνση αρχής των δεδομένων που περιέχονται στην εγγραφή. (big endian) 2 δεκαεξαδικά ψηφία (00-05) που δηλώνουν τον τύπο αυτής της εγγραφής. Μια ακολουθία από 2ν δεκαεξαδικά ψηφία που αντιπροσωπεύουν ν bytes δεδομένων. 2 δεκαεξαδικά ψηφία που αντιπροσωπεύουν το λιγότερο σημαντικό ψηφίο του αθροίσματος όλων των πεδίων αυτής της εγγραφής, εκτός απο το 1 και το 6, σε μορφή συμπληρώματος ως προς δύο. Χρησιμεύει για τον έλεγχο της ορθότητας της εγγραφής. Παράδειγμα: Κωδικός έναρξης Άθροισμα byte Διέυθυνση Τύπος Εγγραφής Δεδομένα Checksum : EFE09D : EB7C20001FF5F : E EDA3F01B2CAA7 : F B5E712B722B C7 1.8 Μέθοδοι προγραμματισμού Για να ολοκληρωθεί ο προγραμματισμός, πρέπει να αντιγραφούν τα δεδομένα που περιέχονται στα αρχεία.hex που παράχθηκαν στο προηγούμενο στάδιο, στην μνήμη του μικροελεγκτή. Αυτό μπορεί να επιτευχθεί με διάφορες μεθόδους. Ο πλήρης προγραμματισμός ενός AVR αποτελείται από τρεις συνιστώσες, την εγγραφή της FLASH, την εγγραφή της EEPROM και τον καθορισμό της τιμής των fuse bits. Δεν είναι όλες οι μέθοδοι ικανές για τον προγραμματισμό και των τριών συνιστωσών. Μόνο ο προγραμματισμός της FLASH είναι εφικτός με όλες τις μεθόδους. Στην συνέχεια θα εξετάσουμε τις διαθέσιμες μεθόδους και τις δυνατότητές τους. 1.8.α ISP (In system programming) Είναι η πιο διαδεδομένη μέθοδος προγραμματισμού. Βασίζεται στο πρωτόκολλο SPI για την επικοινωνία με τον μικροελεγκτή. Την επικοινωνία και συνεπώς τον προγραμματισμό αναλαμβάνει συσκευή που συνδέεται στον μικροελεγκτή και υλοποιεί το συγκεκριμένο πρωτόκολλο, ονομαζόμενη προγραμματιστής. Ο προγραμματιστής συνδέεται ταυτόχρονα με PC μέσω του οποίου ο χρήστης διεκπεραιώνει τον προγραμματισμό. Η σύνδεση του προγραμματιστή με τον μικροελεγκτή γίνεται μέσω 6 ακροδεκτών του ολοκληρωμένου και μπορεί να γίνει και με τον μικροελεγκτή κολλημένο σε τυπωμένο κύκλωμα με την προϋπόθεση να έχει προβλεφθεί χώρος για τον αντίστοιχο κονέκτορα. Με την συγκεκριμένη μέθοδο μπορεί να προγραμματιστεί πλήρως ένας AVR μικροελεγκτής. -22-

23 1.8.β HVPP (High voltage parallel) Αντίστοιχα με την παραπάνω μέθοδο, ένας προγραμματιστής συνδέεται στον AVR και αναλαμβάνει την επικοινωνία μαζί του με συγκεκριμένο πρωτόκολλο. Μπορεί να προγραμματιστεί πλήρως ένας AVR με αυτή την μέθοδο και είναι η μέθοδος στην οποία καταφεύγουμε αν για λόγους λανθασμένης ρύθμισης των fuse bits, όλες οι άλλες αποτυγχάνουν. 1.8.γ JTAG Το JTAG είναι ένα ευρέως διαδεδομένο πρότυπο που χρησιμοποιείται για debugging μικροϋπολογιστικών συστημάτων. Στους AVR μπορεί να χρησιμοποιηθεί και για προγραμματισμό. Όπως κα με τις παραπάνω μεθόδους χρειάζεται ειδική συσκευή που αναλαμβάνει την επικοινωνία. 1.8.δ Bootloader Σε αντίθεση με τις άλλες μεθόδους προγραμματισμού ο ίδιος ο μικροελεγκτής αναλαμβάνει την επικοινωνία με κάποια πηγή από την οποία θα κατεβάσει το πρόγραμμα με το οποία θα αυτό προγραμματίσει τις μνήμες του. Για να γίνει κάτι τέτοιο δυνατό πρέπει να εκτελείται στον μικροελεγκτή πρόγραμμα που υλοποιεί τα παραπάνω, δηλαδή επικοινωνία με κάποια πηγή λογισμικού και προγραμματισμό. Το μειονέκτημα που προκύπτει είναι ότι σε έναν καινούριο AVR πρέπει να καταφύγουμε σε κάποια από τις υπόλοιπες μεθόδους για να προγραμματίσουμε το πρόγραμμα του ίδιου του bootloader την πρώτη φορά πριν αυτός είναι σε θέση να χρησιμοποιηθεί. Το πλεονέκτημα είναι ότι από την στιγμή που προγραμματιστεί ο bootloader, δεν χρειαζόμαστε καμία επιπλέον συσκευή αφού μπορούμε να κάνουμε χρήση οποιουδήποτε από τα ενσωματωμένα περιφερειακά επικοινωνίας του μικροελεγκτή για κατέβασμα του προγράμματος. Δεν είναι δυνατό να γίνει χρήση bootloader σε όλους τους AVR. Αυτοί που έχουν την δυνατότητα χωρίζουν την FLASH μνήμη τους σε δύο τμήματα. Ένα τμήμα που θα φιλοξενήσει το πρόγραμμα χρήστη και ένα μικρότερο για τον bootloader. Κάθε φορά που εκκινεί ο μικροελεγκτής ελέγχει μια συνθήκη η οποία καθορίζει αν θα εκτελεστεί αυτός ή το πρόγραμμα του χρήστη. Αυτή η συνθήκη μπορεί να είναι η τιμή κάποιου διακόπτη που ο χρήστης θα πιέζει για να σηματοδοτήσει την εκκίνηση διαδικασίας προγραμματισμού ή δεν θα πιέζει ώστε να εκτελεστεί το πρόγραμμα χρήστη. -23-

24 -24-

25 2. Δίκτυο ΤΚΝ 2.1 Προδιαγραφές Στόχος μας είναι να σχεδιάσουμε ένα δίκτυο επικοινωνίας μικροεπεξεργαστών που θα μπορεί να αξιοποιηθεί από φοιτητές, στα πλαίσια των εργαστηριακών ασκήσεων του εισαγωγικού μαθήματος μικροϋπολογιστών. Η προγραμματιστική διεπαφή που θα παρέχεται στους χρήστες του δικτύου θα πρέπει να είναι εύχρηστη, ώστε ένας φοιτητής χωρίς εμπειρία στον προγραμματισμό μικροεπεξεργαστών σε συμβολική γλώσσα, να είναι σε θέση με απλό τρόπο να πετύχει την επικοινωνία μεταξύ ενός αριθμού μικροεπεξεργαστών. Απλή και χωρίς πολλά περιφερειακά και ηλεκτρονικά στοιχεία πρέπει να είναι και η ηλεκτρική σύνδεση των κόμβων, ώστε να είναι εύκολα κατανοητή από τους φοιτητές, χωρίς να προσθέτει επιπλέον πολυπλοκότητα στο υπόλοιπο κύκλωμα που χρησιμοποιείται για την διεξαγωγή των εργαστηριακών ασκήσεων. 2.2 Φυσικό επίπεδο Ο εκπαιδευτικός χαρακτήρας του δικτύου, όπως περιγράφεται παραπάνω, και η απαίτηση για απλότητα θα καθορίσουν τις προδιαγραφές που πρέπει να ακολουθηθούν κατά την σχεδίαση του δικτύου. Η αρχική απόφαση που πρέπει να πάρουμε αφορά το φυσικό επίπεδο του δικτύου, δηλαδή την φυσική σύνδεση των κόμβων για την αποστολή και λήψη μεμονομένων bit. Επιλέξαμε να υλοποιήσουμε το φυσικό επίπεδο κάνοντας χρήση της σειριακής θύρας UART. Το πλεονέκτημα αυτής της επιλογής είναι ότι οι θύρες UART είναι διαδεδομένες στον κόσμο των μικροελεγκτών και οι περισσότερες οικογένειες φέρουν ενσωματωμένο κύκλωμα σειριακής επικοινωνίας UART. Επίσης θύρα UART, βρίσκουμε στους προσωπικούς υπολογιστές, γεγονός που θα επιτρέψει την υλοποίηση του δικτύου και για αυτούς. 2.3 Τοπολογία Η απαίτηση για απλή ηλεκτρική σύνδεση έχει άμεσο αντίκτυπο στην τοπολογία του δικτύου. Η τοπολογία που επιλέξαμε είναι τοπολογία δακτυλίου. Θα εξετάσουμε τις συνήθεις τοπολογίες δικτύων, ώστε να δείξουμε τι μας οδήγησε σε αυτή την επιλογή. Τοπολογία διαύλου Η ύπαρξη ενός κεντρικού ηλεκτρικού διαύλου στον οποίο θα έπρεπε να συνδεθούν όλες οι UART θα δημιουργούσε ορισμένα προβλήματα. Σύμφωνα με το πρωτόκολλο σειριακής επικοινωνία, όταν το κανάλι μετάδοσης είναι αδρανές, πρέπει να βρίσκεται σε υψηλή στάθμη. Αυτό συνεπάγεται ότι δεν είναι δυνατόν να συνδεθούν όλοι οι transmitter απευθείας στον δίαυλο, γιατί έτσι θα είχαμε σύγκρουση των ηλεκτρικών στάθμεων των διαφορετικών κόμβων. Η σύνδεση θα ήταν δυνατή αν κάθε transmitter βρισκόταν σε κατάσταση υψηλής εμπέδησης τις χρονικές στιγμές που δεν μετέδιδε και ο δίαυλος γινόταν pull up σε υψηλό δυναμικό. Η πολυπλοκότητα που θα απαιτούσε κάτι τέτοιο δεν είναι αποδεκτή. Άλλο πρόβλημα είναι οι συγκρούσεις στην μετάδοση που θα συνέβαιναν λόγω του κοινού διαύλου. Για να διαχειριστούμε το φαινόμενο των συγκρούσεων θα έπρεπε να φροντίσουμε για τον συγχρονισμό των κόμβων. Ο συγχρονισμός αυτός θα χρειαζόταν είτε ένα sloted πρωτόκολλο και την ύπαρξη κοινού ρολογιού στο δίκτυο, είτε έναν master κόμβο που θα αναλάμβανε τον συγχρονισμό των υπολοίπων. Και στις δύο περιπτώσεις η πολυπλοκότητα δεν είναι -25-

26 αποδεκτή. Τοπολογία αστέρα Η τοπολογία αστέρα απαιτεί την ύπαρξη ενός κεντρικού ελεγκτή στον οποίο συνδέονται όλοι οι κόμβοι και αυτός αναλαμβάνει την προώθηση των πακέτων στον αποδέκτη. Η ύπαρξη ενός τέτοιου κόμβου θα προσέθετε επιπλέον κόστος και πολυπλοκότητα στο συνολικού δίκτυο. Αυτό έρχεται σε αντίθεση με τον στόχο μας να κατασκευάσουμε ένα απλό δίκτυο μικροεπεξεργαστών με ελάχιστο αριθμό εξωτερικών στοιχείων. Τοπολογία δακτυλίου Η τοπολογία που τελικά επιλέξαμε να χρησιμοποιήσουμε. Η τοπολογία δακτυλίου έχει το χαρακτηριστικό ότι κάθε κόμβος έχει ηλεκτρική σύνδεση μόνο με δύο άλλους κόμβους, καθένας εκ των οποίων συνδέεται σε διαφορετικό ακροδέκτη. Έτσι εξαλείφεται το πρόβλημα των ηλεκτρικών συγκρούσεων (ηλεκτρική στάθμη καναλιού), αλλά και των λογικών συγκρούσεων (ταυτόχρονη μετάδοση στο κανάλι). Η συνδεσμολογία που απαιτείται είναι αυτή που φαίνεται στο Σχήμα 2.1. Μικροελεγκτής 1 Rx Tx Μικροελεγκτής 2 Rx Tx Μικροελεγκτής 3 Rx Tx Σχήμα 2.1: Τοπολογία του δικτύου Κάθε κόμβος του δικτύου συνδέεται μέσω του ακροδέκτη Tx της UART που διαθέτει στον ακροδέκτη Rx της UART του επόμενου κόμβου. Με αυτόν τον τρόπο σχηματίζεται ο δακτύλιος του δικτύου. Σε ένα υπάρχων κύκλωμα, αρκεί η προσθήκη ενός αγωγού από κόμβο σε κόμβο ώστε να διασυνδεθούν όλοι στο δίκτυο και να αποκτήσουν δυνατότητα επικοινωνίας. 2.4 Πρωτόκολλο σύνδεσης δεδομένων Σε αυτό το στάδιο της σχεδίασης έχουμε δημιουργήσει τις προϋποθέσεις ώστε ένας κόμβος, να είναι σε θέση να στείλει δεδομένα στον επόμενο από αυτόν κόμβο του δακτυλίου και να λάβει από τον προηγούμενο. Στόχος μας όμως είναι να μπορεί κάθε κόμβος να επικοινωνεί με οποιονδήποτε από τους παρόντες κόμβους. Για να γίνει αυτό δυνατό, πρέπει να σχεδιάσουμε ένα πρωτόκολλο σύνδεσης δεδομένων (OSI 2). 2.4.α Λειτουργίες πρωτοκόλλου Σύμφωνα με το μοντέλο αναφοράς OSI: Κάθε επίπεδο αξιοποιεί τις λειτουργίες του κατώτερού του στη στοίβα επιπέδου, ενώ στόχος του είναι να παρέχει λειτουργικότητα στο αμέσως ανώτερο επίπεδό του. Συνεπώς το πρωτόκολλο που πρέπει να σχεδιάσουμε θα χρησιμοποιεί τις λειτουργίες αποστολής και λήψης byte της σειριακής θύρας που υλοποιεί το φυσικό επίπεδο (OSI 1) για να παρέχει συγκεκριμένη λειτουργικότητα στα επόμενα επίπεδα της στοίβας. Ένα πρωτόκολλο σύνδεσης δεδομένων πρέπει να υλοποιεί τις παρακάτω λειτουργίες: -26-

27 Απόδοση μοναδικής διεύθυνσης σε κάθε κόμβο. Λογική σύνδεση κόμβων. Ανίχνευση και διόρθωση λαθών μετάδοσης. 2.4.β Πακέτα πρωτοκόλλου Για να υλοποιηθούν οι παραπάνω λειτουργίες, πρέπει μεταξύ των κόμβων να ανταλλάσσονται εκτός από τα τα δεδομένα, και πληροφορίες ελέγχου. Για να γίνει αυτό δυνατό, πρέπει να εδραιωθεί ένας οργανωμένος τρόπος ανταλλαγής δεδομένων. Η λύση είναι όλη κίνηση στο δίκτυο να διακινείται μέσω προκαθορισμένων πακέτων. Πρόκειται για ακολουθίες byte σταθερού μήκους και προκαθορισμένης μορφής. Στο συγκεκριμένο πρωτόκολλο χρησιμοποιούμε τριών τύπων πακέτα. Ορισμένα πεδία είναι κοινά και στους τρεις τύπους πακέτων. Πέρα από τα κοινά πεδία, κάθε τύπος πακέτου έχει πεδία που εξυπηρετούν τον ρόλο που παίζει στην λειτουργία του δικτύου. Οι τρεις τύποι πακέτων φαίνονται συγκεντρωμένοι στον παρακάτω πίνακα. BYTE # Data: Header 0x00 Type 0xAA Receiver ID 0x01-0xFF Sender ID 0x01-0xFF Packet ID 0x00-0xFF CRC 16 bytes of data EOP 0xFF Ack: Header 0x00 Type 0xBB Receiver ID 0x01-0xFF Sender ID 0x01-0xFF Packet ID 0x00-0xFF EOP 0xFF Token: Header 0x00 Type 0xCC Receiver ID 0x01-0xFF Sender ID 0x01-0xFF EOP 0xFF Πίνακας 2.1: Τύποι πακέτων πρωτοκόλλου Τα περισσότερα πεδία δεν χρειάζονται επεξήγηση. Θα αναφερθούμε μόνο στο πεδίο ταυτότητας πακέτου και στον χαρακτήρα ελέγχου. Ο χαρακτήρας ελέγχου χρησιμοποιείται στην μεριά του παραλήπτη για να διαπιστωθεί εάν υπήρξε κάποιο σφάλμα στη μετάδοση. Υπολογίζεται το CRC των δεδομένων και συγκρίνεται με τον χαρακτήρα ελέγχου. Αν αυτά τα δύο δεν είναι ίσα, τότε τα δεδομένα θεωρούνται κατεστραμμένα. Η ταυτότητα πακέτου υπάρχει για να μπορεί το πακέτο ack να διευκρινίζει σε πακέτο δεδομένων αναφέρεται. 2.4.γ Αλγόριθμος πρωτοκόλλου Το πακέτο token κυκλοφορεί συνεχώς στο δίκτυο, μεταδιδόμενο από κόμβο σε κόμβο. Τα πακέτα δεδομένων και τα πακέτα ack φτάνουν στον τελικό τους προορισμό με επαναλαμβανόμενες προωθήσεις από όλους τους ενδιάμεσους κόμβους μεταξύ αποστολέα και παραλήπτη. -27-

28 Δέκτης Ο παραλήπτης λαμβάνει συνεχώς bytes απο την σειριακή θύρα. Όταν αναγνωρίσει την έναρξη ενός πακέτου κάνει τις εξής ενέργειες: Εξακριβώνει τον τύπο του πακέτου. Εξακριβώνει το μέγεθος του πακέτου. Λαμβάνει το υπόλοιπο του πακέτου. Κατά την ολοκλήρωση της λήψης ενός ολοκληρωμένου πακέτου εκτελεί συγκεκριμένες ενέργειες σύμφωνα με τον τύπο του πακέτου ελήφθη. Πακέτο token: Ειδοποιεί τον transmitter ότι ελήφθη token. Πακέτο ack: Αν το συγκεκριμένο πακέτο ack προορίζεται για άλλον παραλήπτη, το προωθεί, αλλιώς ειδοποιεί τον transmitter για την λήψη ack. Πακέτο δεδομένων: Αν το συγκεκριμένο πακέτο δεδομένων προορίζεται για άλλον παραλήπτη, το προωθεί αλλιώς: Ελέγχει την ορθότητα του πακέτου σύμφωνα με το CRC byte και τον επιλεγμένο αλγόριθμο υπολογισμού CRC. Αν έχει μεταδοθεί σωστά, το τοποθετεί στην πρώτη διαθέσιμη θέση της ουράς μετάδοσης και στέλνει στον αποστολέα ένα πακέτο ack. Αν η ουρά είναι γεμάτη το πακέτο αγνοείται και δίνεται κατάλληλο μήνυμα στα ανώτερα επίπεδα (πχ στο επίπεδο εφαρμογής Αν δεν έχει μεταδοθεί σωστά, το πακέτο αγνοείται και δεν στέλνεται καμία απόκριση στον αποστολέα. Πομπός Όταν ο δέκτης παραλάβει το token, τότε ειδοποιεί τον πομπό. Αυτός με την σειρά του κάνει τα εξής: Αν η ουρά μετάδοσης είναι άδεια μεταδίδει το token στον επόμενο. Αν η ούρα περιέχει τουλάχιστον ένα πακέτο τότε ο πομπός εκτελεί την παρακάτω διαδικασία. Στέλνει το πρώτο πακέτο δεδομένων της ουράς μετάδοσης. Αφού μεταδώσει το πακέτο δεδομένων, περιμένει για ένα μέγιστο χρονικό διάστημα time-out την λήψη πακέτου θετικής αναγνώρισης από τον παραλήπτη. Αν λάβει πακέτο θετικής αναγνώρισης πριν εκπνεύσει ο time-out χρόνος, το πακέτο αποσύρεται από την κορυφή της ουράς μετάδοσης και όλα τα υπόλοιπα πακέτα που πιθανώς υπάρχουν στην ουρά μεταφέρονται μια θέση πιο κάτω. Αν δεν υπάρξει θετική αναγνώριση, το πακέτο δεν αποσύρεται από την ουρά. Στην επόμενη λήψη του token θα γίνει και πάλι προσπάθεια να αποσταλεί το ίδιο πακέτο. Ανεξάρτητα από την επιτυχία της αποστολής του πακέτου δεδομένων, σε αυτό το σημείο το token μεταδίδεται στον επόμενο κόμβο. -28-

29 2.4.δ Σχηματική αναπαράσταση κόμβου Στο Σχήμα 2.3 απεικονίζεται σχηματικά ο κόμβος του δικτύου. Διακρίνονται τα τρία επίπεδα της στοίβας OSI, καθώς και οι τρόποι που αυτά αλληλεπιδρούν μεταξύ τους. Οι λειτουργίες του πρωτοκόλλου ξεκινάνε πάντα από τον δέκτη. Ο δέκτης λαμβάνει συνεχώς δεδομένα με την μορφή σειράς από byte από την σειριακή θύρα. Αυτή η λειτουργία φαίνεται στο Σχήμα 2.2 οπού απεικονίζεται ο δέκτης ενός κόμβου του δικτύου σαν μηχανή πεπερασμένων καταστάσεων:! 0x00 IDLE! (0x00 0xAA 0xBB 0xCC) 0x00 0xAA 0x00 Header byte 0 DATA byte Type=DATA byte 1 Receiver byte 2 0xBB Sender byte 3 Packet ID byte 4 EOP byte 22 CRC byte 5 Type = ACK byte 1 EOP byte 6 0xCC Type=TOKEN byte 1 EOP byte 4 Σχήμα 2.2: Ο δέκτης σαν μηχανή καταστάσεων Όταν ανιχνευτεί ένα ολόκληρο πακέτο, πυροδοτείται κάποια διαδικασία ανάλογα με τον τύπο του πακέτου, όπως περιγράφεται πιο πάνω στην παράγραφο για τον δέκτη. Το τέλος ενός πακέτου σηματοδοτείται από ένα byte 0xFF (EOP). Το επίπεδο σύνδεσης δεδομένων, το οποίο υλοποιήσαμε, αποτελείται από δύο ουρές δεδομένων και δύο buffer, για τον δέκτη και τον αποστολέα αντίστοιχα. Η ουρά λήψης γεμίζει από το φυσικό επίπεδο από τα ληφθέντα δεδομένα και καταναλώνεται από το επίπεδο εφαρμογής, ενώ η ουρά αποστολής γεμίζει από το επίπεδο εφαρμογής και καταναλώνεται στο φυσικό επίπεδο. Η αναγκαιότητα των ουρών έγκειται στην αδυναμία σύμπτωσης των ρυθμών κατανάλωσης και παραγωγής. Στην περίπτωση των εξερχόμενων πακέτων, χωρίς την ύπαρξη ουρών, αν η εφαρμογή δημιουργήσει σε ένα χρονικό διάστημα περισσότερα πακέτα από όσα μπορούν να αποσταλούν στο δίκτυο, αυτό θα έχει σαν αποτέλεσμα την αναμονή της εφαρμογής για την αποστολή όλων των πακέτων. Με την χρήση της ουράς μετάδοσης, λύνεται αυτό το πρόβλημα, αφού τα πακέτα προς αποστολή αποθηκεύονται στην προσωρινά στην ουρά και αποστέλλονται στον κατάλληλο χρόνο χωρίς η εφαρμογή να χρειάζεται να περιμένει. Στην περίπτωση των εισερχόμενων πακέτων, με την χρήση ουρών, αποφεύγουμε την περίπτωση που η εφαρμογή δεν προλαβαίνει να επεξεργαστεί ένα πακέτο πριν την λήψη του επόμενου, γεγονός που θα οδηγούσε στην απώλεια δεδομένων. Συνοψίζοντας μπορούμε να πούμε ότι οι ουρές υπάρχουν για να απορροφούν αιχμές -29-

30 στην παραγωγή δεδομένων, που δεν μπορούν να εξυπηρετηθούν εξαιτίας περιορισμών τόσο στην ταχύτητα του δικτύου για τα εξερχόμενα πακέτα, όσο και στην υπολογιστική ισχύ του κόμβου στην περίπτωση των εισερχόμενων πακέτων. Physical Layer serial byte transmit serial byte receive Data Link Layer RX_BUFFER byte 0-5 POINTER_OUT TX_BUFFER byte incoming_packet_data byte 22 byte 0-5 byte outgoing_packet_data NOT FOR ME Send RX_BUFFER ACK received Transmission OK DATA received Send ACK TOKEN received Send data + token byte 22 RX_QUEUE TX_QUEUE data address data address incoming_packet_data address outgoing_packet_data address incoming_packet_data address outgoing_packet_data address incoming_packet_data address outgoing_packet_data address POINTER_OUT POINTER_IN POINTER_IN Application Layer Receive packet Send packet Σχήμα 2.3: Σχηματική αναπαράσταση κόμβου -30-

31 2.5 Θεωρητική Ανάλυση Επιδόσεων Γνωρίζοντας την ταχύτητα της σειριακής θύρας και τον αλγόριθμο του πρωτοκόλλου μπορούμε να κάνουμε θεωρητική μελέτη των αναμενόμενων επιδόσεων του δικτύου σε διαφορετικές συνθήκες φορτίου. Τα μεγέθη που θέλουμε να υπολογίσουμε είναι η μέγιστη καθυστέρηση πακέτου και το throughput. 2.5.α Παράμετροι Τα μεγέθη αυτά δεν είναι σταθερά, αλλά εξαρτώνται από ορισμένες παραμέτρους. Καταρχάς από τις συνθήκες φορτίου, δηλαδή από το ποσό της πληροφορίας που επιθυμούν να στείλουν οι κόμβοι σε μια δεδομένη χρονική περίοδο. Όταν για παράδειγμα ένας κόμβος βρίσκεται εν μέσω αποστολής ενός μεγάλου αρχείου, τότε η καθυστέρηση για τους άλλους κόμβους αυξάνει. Το πλήθος των κόμβων που υπάρχουν στο δίκτυο είναι μια ακόμη παράμετρος που πρέπει να εξεταστεί και η οποία παίζει σημαντικό ρόλο, λόγω του ότι κάθε πακέτο ταξιδεύει μέσω των άλλων κόμβων. Ακόμα και για να στείλει ένας κόμβος στον αμέσως επόμενο κόμβο του δακτυλίου ένα πακέτο δεδομένων, το πακέτο αναγνώρισης (ACK) θα πρέπει να περάσει από όλους τους υπόλοιπους κόμβους εφόσον τα δεδομένα κινούνται κατά την μία κατεύθυνση. 2.5.β Περιορισμοί Πραγματικού Χρόνου Για να μπορεί να θεωρηθεί ένα δικτυακό πρωτόκολλο πραγματικού χρόνου, πρέπει να ικανοποιεί τον περιορισμό πραγματικού χρόνου. Αυτό σημαίνει ότι ο χρόνος από την στιγμή που θα τοποθετηθεί ένα πακέτο στην ουρά αποστολής ενός κόμβου, μέχρι να φτάσει στον προορισμό του, πρέπει να είναι φραγμένος σε κάθε περίπτωση. Αυτός ο περιορισμός ικανοποιείται στην περίπτωση μας. Λόγω του σχεδιασμού του πρωτοκόλλου, είναι εγγυημένο ότι δεν υπάρχουν συγκρούσεις στο κανάλι επικοινωνίας αφού η χρήση του καναλιού επιτρέπεται μόνο με κατοχή του πακέτου token το οποίο είναι μοναδικό σε όλο το δίκτυο και δίνει στον κόμβο-κάτοχο την αποκλειστική δυνατότητα να χρησιμοποιήσει το κανάλι για όσο το έχει στην κατοχή του. Επιπλέον χάρη στην συνδεσμολογία δεν υπάρχει κάποιος ηλεκτρικός διάδρομος στον οποίο να συνδέονται πάνω από δύο κόμβοι Κάθε σύνδεση είναι ένας με έναν (Tx-->Rx). Έτσι υπάρχει μεγάλη ασφάλεια και αξιοπιστία στην μετάδοση των δεδομένων. Επίσης, λόγω του ότι σε κάθε απόκτηση του token κάθε κόμβος επιτρέπεται από το πρωτόκολλο να στείλει μόνο ένα πακέτο δεδομένων, εξασφαλίζεται ότι ακόμα και σε συνθήκες μέγιστου φόρτου κάθε κόμβος θα έχει πάντα στην διάθεση του ένα κλάσμα του συνολικού χρόνου για αποστολή και δεν μπορεί κάποιος να μονοπωλήσει το κανάλι. Οι συνθήκες μέγιστου φόρτου είναι και αυτές που θα καθορίσουν το άνω φράγμα στην καθυστέρηση πακέτου. Μέγιστος φόρτος σημαίνει ότι κάθε κόμβος έχει δεδομένα προς αποστολή κάθε φορά που παραλαμβάνει το token και δικαιούται να στείλει. Αυτό είναι και το χειρότερο σενάριο όσον αφορά το throughput. Σε κάθε περίπτωση εφόσον μπορούμε να καθορίσουμε άνω φράγμα για την καθυστέρηση, το δίκτυο μπορεί να χαρακτηριστεί ως δίκτυο πραγματικού χρόνου. 2.5.γ Tokens Per Second Το μέγεθος που υπολογίσαμε και από το οποίο θα εξάγουμε το throughput είναι ο αριθμός των token που περνάνε από ένα κόμβο ανά δευτερόλεπτο (Tokens Per Second-31-

32 TPS). Το μέγεθος αυτό υπολογίστηκε για τις εξής διαφορετικές συνθήκες: 1) Για πλήρη αδράνεια 2) για την περίπτωση πού ένας κόμβος στέλνει συνέχεια δεδομένα με τον μέγιστο ρυθμό (Full Load) και 3) για την περίπτωση που όλοι οι κόμβοι εκτός από έναν στέλνουν συνεχώς δεδομένα σε αυτόν που δεν στέλνει. Τα παραπάνω υπολογίστηκαν για τέσσερα διαφορετικά baud rate της σειριακής θύρας. 2.5.δ Πρόγραμμα Υπολογισμού Για τον υπολογισμό γράφτηκε ένα απλό πρόγραμμα python. Αρχικά θέτουμε τα μεγέθη σε byte των τριών ειδών πακέτων που υπάρχουν στο πρωτόκολλο. #!/usr/bin/env python # -*- coding: utf-8 -*# # Speed-Baud.py # # Calculate the expected speed of the network measured # in tokens per second (tps) for different values of: # baud rate, nodes present, and situations BAUD = [9600, token_size = ack_size = data_size = , 57600, ] Αρχικά, για την κατάσταση που το δίκτυο βρίσκεται σε αδράνεια θέλουμε να βρούμε τον αριθμό των token που κυκλοφορούν ανά δευτερόλεπτο. Στην περίπτωση αυτή το μόνο πακέτο που αποστέλλεται είναι το token. Κάθε κόμβος την στιγμή που το λαμβάνει το στέλνει απευθείας. Για κάθε byte το πρωτόκολλο σειριακής επικοινωνίας στο οποίο στηριζόμαστε στο φυσικό επίπεδο. Στέλνει 10 bits (8bit πληροφορίας + start bit + stop bit). Διαιρώντας με το baud rate, βρίσκουμε τα tokens per second. def speedidle(): print "n", for baud in BAUD: print baud, print for n in range(2, 10): print n, for baud in BAUD: bytecount = n*token_size bitcount = 10*byteCount tps = baud / bitcount print tps, print return 0 Για την περίπτωση 1) που ένας κόμβος στέλνει συνεχώς θα πρέπει να μεταφερθούν τα απαραίτητα tokens το πακέτο δεδομένων, καθώς και το ack. Στο σενάριο αυτό παίζει ρόλο η απόσταση των 2 κόμβων (του αποστολέα και του παραλήπτη). Όσο πιο κοντά βρίσκονται αυτοί οι δύο τόσο πιο γρήγορα γίνεται η αποστολή διότι χρειάζονται λιγότερες αναμεταδόσεις. Συνεπώς για να φανεί αυτή η διαφορά, υπολογίστηκε το TPS για την περίπτωση που κάποιος κόμβος στέλνει στον αμέσως επόμενο, στον μεθεπόμενο και στον κόμβο που βρίσκεται τρεις θέσεις μακρυά. def speedfullsingle(): for i in range(1, 4): print "i =", i -32-

33 print "n", for baud in BAUD: print baud, print for n in range(2, 10): print n, for baud in BAUD: bytecount = (data_size*i) + (ack_size*(n-i+1)) + (token_size*n) bitcount = 10*byteCount tps = baud / bitcount if tps>0: print tps, else: print 0, print print return 0 Τέλος για την περίπτωση 3) υπολογισμοί έγιναν μόνο για baud=57600 και το πρόγραμμα είναι το εξής: def speedfull(): print "n", BAUD = [57600] for baud in BAUD: print baud, print for n in range(2, 10): print n, for baud in BAUD: bytecount = n*token_size + sum(range(n)) * (data_size+ack_size) bitcount = 10*byteCount tps = baud / bitcount print tps, print return 0-33-

34 2.5.ε Αποτελέσματα TPS Για συνθήκες αδράνειας: n Πίνακας 2.2: TPS - Συνθήκες αδράνειας TKN Speed Idle tps nodes present Σχήμα 2.4: Tokens Per Second σε κατάσταση μηδενικού φόρτου για διφορετικά baud rate και πλήθος κόμβων στο δίκτυο -34-

35 TPS Όταν ένας στέλνει συνέχεια στον επόμενό του: n Πίνακας 2.3: TPS - Ένας κόμβος στέλνει στον κόμβο απόστασης 1 TKN Speed Full load single # tps nodes present Σχήμα 2.5: Tokens Per Second όταν ένας κόμβος στέλνει συνεχώς δεδομένα στον κόμβο που βρίσκεται δίπλα του -35-

36 TPS Όταν ένας κόμβος στέλνει συνέχεια στον κόμβο απόστασης 3 θέσεων n Πίνακας 2.4: TPS - Ένας κόμβος στέλνει στον κόμβο απόστασης 2 tps TKN Speed Full load Single # Nodes present Σχήμα 2.6: Tokens Per Second όταν ένας κόμβος στέλνει συνεχώς δεδομένα στον κόμβο που βρίσκεται σε απόσταση 2-36-

37 TPS Όταν ένας κόμβος στέλνει συνέχεια στον κόμβο απόστασης 3 θέσεων: n Πίνακας 2.5: TPS - Ένας κόμβος στέλνει στον κόμβο απόστασης 3 TKN Speed Full load Single # tps nodes present Σχήμα 2.7: Tokens Per Second όταν ένας κόμβος στέλνει συνεχώς δεδομένα στον κόμβο που βρίσκεται σε απόσταση 3-37-

38 TPS Όταν στέλνουν όλοι οι κόμβοι σε έναν: n Πίνακας 2.6: TPS - Όλοι οι κόμβοι στέλνουν συνέχεια σε έναν που δεν στέλνει. TKN Speed Full load tps nodes present Σχήμα 2.8: Tokens Per Second όταν όλοι οι κόμβοι στέλνουν συνεχώς σε έναν. -38-

39 2.5.στ Καθυστέρηση Πακέτου Από το μέγεθος Tokens Per Second που υπολογίστηκε θα εξαχθεί η καθυστέρηση πακέτου για τις διάφορες συνθήκες. Από την χειρότερη περίπτωση, που είναι η περίπτωση 3) δηλαδή όταν όλοι οι κόμβοι έχουν πάντα δεδομένα προς αποστολή θα υπολογιστεί και το φράγμα της καθυστέρησης. Στην καθυστέρηση συμβάλει αρνητικά το μέγεθος των ουρών μετάδοσης. Όπως όμως εξηγήσαμε είναι απαραίτητες ώστε να μην μπλοκάρει η εκτέλεση του κυρίως προγράμματος από το δίκτυο που είναι σαφώς αργότερο του μικροελεγκτή. Για δεδομένο tps, ένα πακέτο από την στιγμή που θα τοποθετηθεί στην ουρά μετάδοσης και υποθέτοντας στην χειρότερη περίπτωση ότι τοποθετείται στην τελευταία θέση, χρειάζεται latency = (tps-1 x queue_size) χρόνο για να είμαστε σίγουροι ότι μεταδόθηκε επιτυχώς. Στον παρακάτω πίνακα απεικονίζονται οι μέγιστες καθυστερήσεις πακέτων για τις παραπάνω συνθήκες. IDLE Συνθήκες Baud: N:4 Ένας κόμβος στέλνει συνέχεια στον Όλοι στέλνουν συκόμβο απόσταστης: νέχεια σε έναν ms 94.1 ms ms ms ms Πίνακας 2.7: Μέγιστη καθυστέρηση πακέτου σε διάφορες συνθήκες (ms) Η καθυστέρηση δείχνεται μόνο για baud=57600 και 4 κόμβους παρόντες στο δίκτυο, την διάταξη που χρησιμοποιήθηκε και στις πειραματικές μετρήσεις του φυσικού δικτύου ώστε να γίνει άμεση σύγκριση στο κατά πόσο συμφωνεί η θεωρία με τις πραγματικές μετρήσεις. 2.5.ζ Throughput Για τον υπολογισμό του Throughput ενός κόμβου, δηλαδή τον όγκο δεδομένων που επιτυγχάνει να μεταδόσει επιτυχώς ανα δευτερόλεπτο αρκεί ο πολλαπλασιασμός του tps με το μέγεθος του πακέτου δεδομένων. Αυτό συμβαίνει διότι σε κάθε απόκτηση του token έχουμε δικαίωμα να στείλουμε ένα πακέτο δεδομένων. Ένας κόμβος στέλνει συνέχεια στον κόμβο απόσταστης: Συνθήκες Baud: N:4 Όλοι στέλνουν συνέχεια σε έναν kbps kbps 8.5 kbps kbps Πίνακας 2.8: Throughput δικτύου για διάφορες συνθήκες (kilobits/sec) -39-

40 -40-

41 3. Υλοποίηση δικτύου TKN Στο προηγούμενο κεφάλαιο αναλύθηκε η σχεδίαση του πρωτοκόλλου σύνδεσης δεδομένων TKN. Στην σχεδίαση δεν λήφθηκε υπόψιν καμία λεπτομέρεια για συγκεκριμένη αρχιτεκτονική. Το γεγονός αυτό επιτρέπει στο πρωτόκολλο να μπορεί να υλοποιηθεί σε πληθώρα αρχιτεκτονικών και οικογένειες συσκευών. Στα πλαίσια αυτής της εργασίας υλοποιήθηκε το πρωτόκολλο, δηλαδή γράφτηκε driver για μικροελεγκτές AVR 8bit και για PC. Σε αυτό το κεφάλαιο θα αναλυθεί η σχεδίαση και η υλοποίηση των δύο driver. 3.1 Περιβάλλον ανάπτυξης Για την ανάπτυξη του λογισμικού για AVR χρησιμοποιήθηκε το AVR Studio και το αναπτυξιακό κιτ STK 600. Ο κώδικας γράφτηκε σε assembly χρησιμοποιώντας το AVR Studio. Στα πρώτα στάδια της ανάπτυξης, για να μπορεί να δοκιμαστεί το δίκτυο, η UART του μικροελεγκτή συνδέθηκε με την σειριακή θύρα ενός προσωπικού υπολογιστή, στον οποίο γινόταν, παράλληλα, επίσης η υλοποίηση του πρωτοκόλλου. Ο λόγος που έγινε αυτό, είναι ότι στον υπολογιστή μπορούμε πιο εύκολα να εντοπίσουμε τα διάφορα σφάλματα, λόγω της ύπαρξης οθόνης και δυνατοτήτων αποσφαλμάτωσης, λειτουργίες που στερείται ένας μικροελεγκτής. Όταν η υλοποίηση του πρωτοκόλλου ήταν σε ικανοποιητικό επίπεδο, κατασκευάστηκε κύκλωμα με δύο ίδιους μικροελεγκτές συνδεδεμένους σε ένα δίκτυο μαζί με το PC. Έτσι είχαμε ένα δίκτυο με τρεις κόμβους. Οι μικροελεγκτές προγραμματίζονταν με την μέθοδο ISP μέσω καλωδίου που συνδεόταν στην έξοδο ISP του STK α STK 600 Πρόκειται για ένα αναπτυξιακό κιτ της εταιρείας Atmel που είναι συμβατό με μια μεγάλη γκάμα μικροελεγκτών της εταιρείας. Παρέχει μια πληθώρα λειτουργιών με στόχο την επιτάχυνση και την διευκόλυνση της ανάπτυξης εφαρμογών σε μικροελεγκτές. Παρατίθενται οι δυνατότητες του STK 600: Συμβατό με το AVR Studio. Συμβατό με πολλούς μικροελεγκτές. Σύνδεση USB, Τροφοδοτείται από USB ή από τροφοδοτικό 10-15V DC. Δυνατότητα ρύθμισης του επιπέδου τάσης της προγραμματιζόμενης συσκευής στο εύρος 0-5.5V. Ακροδέκτες (headers) εύκολης σύνδεσης με τα PORT των μικροελεγκτών. Ακροδέκτης σύνδεσης RS232. Επιπλέον ακροδέκτες σύνδεσης. 2Mbit Dataflash για μόνιμη αποθήκευση. 2 έξοδοι DC τάσεων αναφοράς. Ρυθμιζόμενος ταλαντωτής. Προγραμματισμός μέσω ISP, PDS, JTAG, awire, 8 διακόπτες, 8 LED.. Εικόνα 3.1: Αναπτυξιακό κιτ STK

42 3.1.β AVR Studio Αναπτυξιακό περιβάλλον της εταιρείας Atmel που περιλαμβάνει επεξεργαστή κειμένου, συμβολομεταφραστή (assembler), μεταφραστή C (compiler) και έχει ενσωματωμένη υποστήριξη για τις συνήθεις μεθόδους προγραμματισμού όπως ISP. 3.1.γ Κύκλωμα breadboard Για την ανάπτυξη του driver του δικτύου ήταν απαραίτητο ο προγραμματισμός να γίνει πάνω σε πραγματικό δίκτυο. Στα πολύ αρχικά στάδια της ανάπτυξης των βασικών λειτουργιών παραλαβής / αποστολής, το δίκτυο αποτελείτο από ένα κόμβο AVR και το PC.Η ανάπτυξη του driver γινόταν ταυτόχρονα και στα δύο. O AVR βρισκόταν στην ενσωματωμένη βάση του STK-600 και επικοινωνούσε με το PC μέσω του κονέκτορα DB9 του STK-600. Ωστόσο, αυτή η συνδεσμολογία δεν αναπαριστούσε ρεαλιστικές συνθήκες, συνεπώς έπρεπε να συνδεθούν περισσότεροι μικροελεγκτές στο δίκτυο. Για να γίνει αυτό δημιουργήθηκε το κύκλωμα του δικτύου σε breadboard, αρχικά με δύο κόμβους και στην συνέχεια με τρεις. Πάντα στο δίκτυο βρισκόταν παρών και το PC. Η σύνδεση είναι τέτοια που να υλοποιεί τον δακτύλιο του δικτύου όπως περιγράφηκε στην παράγραφο Τοπολογία. Πλέον όμως υπήρχε το πρόβλημα του προγραμματισμού των μικροελεγκτών. Η λύση ήρθε απο το STK-600 το οποίο δίνει πρόσβαση στα σήματα της μονάδας SPI προγραμματισμού, τα οποία με κατάλληλο καλώδιο οδηγήθηκαν στην breadboard. Φυσικά κάθε μικροελεγκτής έπρεπε να προγραμματίζεται ξεχωριστά. Εικόνα 3.2: Κύκλωμα 2 κόμβων AVR σε breadboard Εικόνα 3.3: Κύκλωμα 3 κόμβων AVR σε breadboard Εικόνα 3.4: Έξοδος SPI Programming του STK δ Καλώδιο FTDI Στην breadboard δεν υπήρχε προφανώς κονέκτορας DB-9. Για να γίνει η σύνδεση του -42-

43 δικυου των μικροελεγκτών με το PC αυτή την φορά χρησιμοποιήθηκε το καλώδιοusbto-serial της εταιρείας FTDI. Το καλώδιο συνδέεται στον υπολογιστή μέσω της θύρας USB και με τον κατάλληλο driver φαίνεται σαν σειριακή θύρα (εικονική σειριακή θύρα). Στην άλλη μεριά του καλωδίου βρίσκουμε 6 ακροδέκτες σε κονέκτορα κατάλληλο για σύνδεση σε breadboard ή σε PCB μέσω 6 pin header. Στο παρακάτω σχήμα φαίνονται τα σήματα που βγάζει το καλώδιο. Εικόνα 3.5: Καλώδιο usb to serial FTDI Εικόνα 3.6: Αντιστοιχίες Ακροδεκτών Καλωδίου FTDI Ένα σημαντικό χαρακτηριστικό της συγκεκριμένης επιλογής είναι ότι μπορούμε να αντλήσουμε ισχύ για να τροφοδοτήσουμε τους μικροελεγκτές του κυκλώματος από την θύρα USB του υπολογιστή μέσω του ακροδέκτη USB. Ωστόστο το manual του καλωδίου αναφέρει ότι το μέγιστο ρεύμα που παρέχεται από τον ακροδέκτη Vcc δεν πρέπει να υπερβαίνει τα 75mΑ. Αυτό το ρεύμα αρκεί για την λειτουργία του δικτύου αλλά δεν είναι αρκετό για να τροφοδοτήσει τα περιφερειακά των μικροελεγκτών σε περίπτωση που θελήσουμε να συνδέσουμε στοιχεία όπως LED, κινητήρες κτλ. 3.2 Driver για AVR Ο μικροελεγκτής που χρησιμοποιήθηκε για την ανάπτυξη του προγράμματος είναι της σειράς ATmega και συγκεκριμένα ο ATmega644PA. Ωστόσο η υλοποίηση είναι συμβατή με οποιονδήποτε 8bit μικροελεγκτή AVR διαθέτει τουλάχιστον μία θύρα UART με υποστήριξη interrupts στην λήψη και αποστολή ενός byte και φυσικά διαθέτει αρκετή μνήμη FLASH για να χωρέσει το πρόγραμμα και SRAM για τα δεδομένα του χρόνου εκτέλεσης όπως πχ. οι ουρές μετάδοσης. Στον παρακάτω πίνακα φαίνονται οι απαιτήσεις μνήμης της υλοποίησης: FLASH: 1600 bytes SRAM: 318 bytes Πίνακας 3.1: Απαιτήσεις μνήμης υλοποίησης πρωτοκόλλου για AVR 3.2.α Αρχιτεκτονική driver Σκοπός είναι να γραφτεί μια βιβλιοθήκη που να υλοποιεί το πρωτόκολλο με τέτοιο τρόπο ώστε να μπορεί κάποιος να την συμπεριλάβει σε ένα πρόγραμμα, δίνοντάς του -43-

44 δυνατότητές επικοινωνίας χωρίς να επηρεάζει τα υπόλοιπα τμήματα του προγράμματος. Για τον λόγο αυτό η υλοποίηση πρέπει να είναι interrupt driven. Αυτό σημαίνει ότι όλη η επεξεργασία εκτελείται ασύγχρονα μέσα σε ρουτίνες εξυπηρέτησης διακοπών. Συγκεκριμένα χρησιμοποιούνται οι εξής διακοπές: URXC0_ISR (USART0 Rx Complete) Η διακοπή που σηματοδοτεί την λήψη ενός byte στην σειριακή θύρα. Εδώ εκτελείται το τμήμα του δέκτη του κόμβου. US0TKN_TX_ISR (USART0 Data Register Empty) Η διακοπή που σηματοδοτεί την δυνατότητα αποστολής ενός byte στην σειριακή θύρα είτε επειδή, μόλις απεστάλη το προηγούμενο byte είτε γιατί μόλις ενεργοποιήθηκε ο transmitter της UART και ο TX_REGISTER είναι άδειος. Εδώ εκτελείται το τμήμα του αποστολέα του κόμβου. Το πρόγραμμα χωρίζεται σε τρία λογικά τμήματα. Το τμήμα του δέκτη, το τμήμα του πομπού και το τμήμα που αναλαμβάνει την προγραμματιστική διεπαφή με τον χρήστη της βιβλιοθήκης. 3.2.β Δέκτης Ο δέκτης είναι υπεύθυνος για τις εξής λειτουργίες: Αναγνώριση αρχής, τέλους πακέτου. Αναγνώριση τύπου πακέτου. Λήψη πακέτου. Προώθηση ξένων πακέτων. Αποθήκευση εισερχόμενων πακέτων δεδομένων στην ουρά λήψης. Ειδοποίηση πομπού για λήψη token, ack. Ο δέκτης εκτελείται ασύγχρονα κάθε φορά που υπάρχει διαθέσιμο εισερχόμενο byte. Εφόσον ο δέκτης εκτελείται ασύγχρονα και τερματίζει μετά από κάθε byte, πρέπει να αποθηκεύει την κατάσταση του, ώστε μεταξύ των διάφορων κλήσεων να ξέρει ακριβώς σε ποιο byte του πακέτου βρίσκεται, τον τύπο του πακέτου το οποίο λαμβάνει και άλλες απαραίτητες πληροφορίες. Για τον σκοπό αυτό δεσμεύονται ορισμένοι καταχωρητές του μικροελεγκτή:.def.def.def.def.def TKN_RX_QUEUE_INDEX_IN TKN_RX_QUEUE_INDEX_OUT TKN_RX_PENDING TKN_RX_BYTE TKN_RX_STATUS = = = = = r7 r8 r9 r10 r11 Επεξήγηση: TKN_RX_QUEUE_INDEX_IN: Δείκτης εισόδου κυκλικού buffer ουράς λήψης. Δείχνει την πρώτη ελεύθερη θέση της ουράς. TKN_RX_QUEUE_INDEX_OUT: Δείκτες εξόδου κυκλικού buffer ουράς λήψης. Δείχνει το πιο παλιό δεδομένο που έχει ληφθεί. TKN_RX_PENDING: Αριθμός πακέτων που βρίσκονται αυτή την στιγμή στην ουρά. -44-

45 TKN_RX_BYTE: Αύξων αριθμός byte του πακέτου το οποίο λαμβάνεται αυτή την στιγμή. TKN_RX_STATUS: Κατάσταση δέκτη. Επεξηγείται παρακάτω. Ο Πίνακας 3.2 παρακάτω απεικονίζει την σημασία κάθε bit του byte κατάστασης δέκτη. Τα bit S1:S0 δείχνουν σε ποια κατάσταση βρίσκεται ο δέκτης κάθε δεδομένη χρονική στιγμή. TKN_RX_STATUS S7 S6 S5 S4 S3 S S1 S0 RX_MODE Πίνακας 3.2: Byte κατάστασης δέκτη RX_MODE S1 S0 idle 0 0 data 0 1 ack 1 0 token 1 1 Πίνακας 3.3: Επεξήγηση bit RX_MODE 3.2.γ Πομπός Ο πομπός είναι υπεύθυνος για την αποστολή των πακέτων. Όπως και ο δέκτης εκτελείται ασύγχρονα, έτσι στηρίζεται στην αποθήκευση της κατάστασης του σε καταχωρητές. Οι εξής καταχωρητές δεσμεύονται για τον πομπό:.def.def.def.def.def.def TKN_TX_QUEUE_INDEX_IN TKN_TX_QUEUE_INDEX_OUT TKN_TX_PENDING TKN_TX_BYTE TKN_TX_STATUS TKN_TX_PACKET_ID = = = = = = r1 r2 r3 r4 r5 r6 Επεξήγηση: TKN_TX_QUEUE_INDEX_IN Δείκτης εισόδου κυκλικου buffer ουράς μετάδοσης. Δείχνει την πρώτη ελεύθερη θέση της ουράς. TKN_TX_QUEUE_INDEX_OUT Δείκτης εξόδου κυκλικου buffer ουράς μετάδοσης. Δείχνει το πιο παλιό πακέτο της ουρας, δηλαδή αυτό που θα μεταδοθεί στην πρώτη ευκαρία. TKN_TX_PENDING Αριθμός πακέτων που εκρεμμεί η μετάδοσή τους. TKN_TX_BYTE Αύξων αριθμός byte του πακέτου το οποίο μεταδίδεται αυτή την στιγμή. TKN_TX_STATUS Κατάσταση δέκτη. Επεξηγείται παρακάτω. TKN_TX_PACKET_ID Αύξων αριθμός εξερχόμενου πακέτου δεδομένων, Αυξάνεται μετά απο κάθε επιτυχή μετάδοση. -45-

46 Ο Πίνακας 3.4 παρακάτω απεικονίζει την σημασία κάθε bit του byte κατάστασης πομπού. Τα bit S1:S0 δείχνουν σε ποια κατάσταση βρίσκεται ο πομπός κάθε δεδομένη χρονική στιγμή. TKN_TX_STATUS S7 S6 S5 S4 S3 S2 Token owner TX Active Waiting for ACK TX Forward - - S1 S0 TX_MODE Πίνακας 3.4: Byte κατάστασης πομπού TX_MODE S1 S0 idle 0 0 data 0 1 ack 1 0 token 1 1 Πίνακας 3.5: Επεξήγηση bit TX_MODE 3.2.δ Προγραμματιστική διεπαφή (API) Το τμήμα της προγραμματιστικής διεπαφής παρέχει τις ρουτίνες που δίνουν στον χρήστη της βιβλιοθήκης πρόσβαση στο δίκτυο. Υπάρχουν 2 ρουτίνες. Μία για λήψη πακέτου και μία αποστολή, η TKN_popPacket και η TKN_pushPacket αντίστοιχα. TKN_popPacket: Ελέγχει εάν υπάρχει τουλάχιστον ένα πακέτο στην ουρά λήψης. Αν υπάρχει, ατιγράφει τα δεδομένα του στην θέση SRAM που υποδεικνύει ο καταχωρητής Y και στον καταχωρητή temp0 τοποθετεί την διεύθυνση αποστολέα. Αν δεν υπάρχει κανένα πακέτο στην ουρά, επιστρέφει 0x0 στον καταχωρητή temp0. TKN_pushPacket Ελέγχει αν υπάρχει κενή θέση στην ουρά μετάδοσης. Αν υπάρχει, αντιγράφει στην πρώτη κενή θέση το πακέτο που υποδεικνύεται απο τον καταχωρητή Y και στην ουρά διευθύνσεων τοποθετεί στην αντίστοιχη θέση την διεύθυνση που βρίσκεται στον καταχωρητή temp0 τον οποίο και μηδενίζει. Αν δεν υπάρχει κενή θέση στην ουρά, ο temp0 μένει ως έχει και η ρουτίνα απλά επιστρέφει. 3.2.ε Χρήση βιβλιοθήκης δικτύου Παρακάτω περιγράφεται ο τρόπος με τον οποίο μπορεί να χρησιμοποιηθεί η βιβλιοθήκη που αναπτύχθηκε, σε μια εφαρμογή για μικροελεγκτές AVR. Για να επιτευχθεί επικοινωνία μέσω του δικτύου από ένα πρόγραμμα assembly, χρειάζεται να γίνουν τα εξής βήματα: 1. Include των αρχείων που υλοποιούν την βιβλιοθήκη TKN..include "TKN.asm" -46-

47 .include "Usart.asm" 2. Καθορισμός των διευθύνσεων εξυπηρέτησης των διακοπών που χρησιμοποιεί το δίκτυο οι ρουτίνες εξυπηρέτησης υλοποιούνται στον κώδικα της βιβλιοθήκης..org URXC0addr ; USART0, Rx Complete jmp URXC0_ISR ; USART0, Rx Complete.org UDRE0addr ; USART0 Data register Empty jmp US0TKN_TX_ISR ; USART0 Data register Empty 3. Κλήση της ρουτίνας αρχικοποίησης TKN_init call TKN_init 4. Ενεργοποίηση των διακοπών. Sei Σε αυτό το σημείο το δίκτυο έχει ενεργοποιηθεί και ξεκινήσει την λειτουργία του. Για να λάβουμε δεδομένα από το δίκτυο χρησιμοποιούμε την ρουτίνα TKN_popPacket η οποία ελέγχει αν υπάρχει διαθέσιμο πακέτο δεδομένων στην ουρά λήψης και αν ναι το επιστρέφει. Για να στείλουμε δεδομένα, χρησιμοποιούμε την ρουτίνα TKN_pushPacket η οποία αντιγράφει ένα πακέτο δεδομένων στην ουρά μετάδοσης οπού τελικά αυτό αποστέλλεται στον προορισμό του. Για να χρησιμοποιηθεί το δίκτυο σε πρόγραμμα που γράφεται σε C αντί για assembly, με χρήση του avr-gcc για compiler μπορεί να χρησιμοποιηθούν οι παρακάτω wrapper συναρτήσεις. /* TKN Functions */ #define TKN_RESET_ADDR #define TKN_RETURN_ADDR #define TKN_POP_ADDR #define TKN_PUSH_ADDR 0x7000 0x7398 0x7098 0x7062 Συνάρτηση αποστολής ενός πακέτου δεδομένων: char TKN_Send(char *buf, char dest_id) { asm ("push r16"); asm ("push r17"); asm ("push r18"); asm ("push r28"); asm ("push r29"); asm ("mov r28, r24"); asm ("mov r29, r25"); asm ("mov r16, r22"); ((void(*)()) TKN_PUSH_ADDR)(); asm ("mov r24, r16"); } asm asm asm asm asm ("pop ("pop ("pop ("pop ("pop r29"); r28"); r18"); r17"); r16"); Συνάρτηση λήψης ενός πακέτου δεδομένων: char TKN_Receive(char *buf) { asm ("push r16"); -47-

48 asm asm asm asm ("push ("push ("push ("push r17"); r18"); r28"); r29"); asm ("mov r28, r24"); asm ("mov r29, r25"); ((void(*)()) TKN_POP_ADDR)(); asm ("mov r24, r16"); } asm asm asm asm asm ("pop ("pop ("pop ("pop ("pop r29"); r28"); r18"); r17"); r16"); Σημείωση: Ανάλογα την έκδοση του avr-gcc που χρησιμοποιείται και τον τρόπο που χρησιμοποιεί τους καταχωρητές για το πέρασμα παραμέτρων ενδεχομένως να χρειάζονται τροποποίησεις στις παραπάνω συναρτήσεις. 3.3 Driver για HY Το πρωτόκολλο TKN υλοποιήθηκε όπως ήδη έχουμε αναφέρει και για προσωπικό υπολογιστή. Η υλοποίηση είναι multi-platform και έχει δοκιμαστεί σε λειτουργικό σύστημα Windows (XP / 7 / 8) και σε linux (Ubuntu / Debian). Ο προγραμματισμός έγινε σε γλώσσα C. 3.3.α Αρχιτεκτονική Driver O driver του δικτύου έχει υλοποιηθεί σε ένα C module. Πρόκειται για ένα user-space module το οποίο δεν μπορεί να εκτελεστεί αυτόνομα, αλλά πρέπει να συμπεριληφθεί σε ένα άλλο πρόγραμμα στο οποίο προσθέτει την δυνατότητα επικοινωνίας με τους κόμβους του δικτύου. Επειδή το δίκτυο είναι τύπου token ring κάθε πακέτο για να φτάσει στον τελικό προορισμό του θα χρειαστεί να περάσει από ενδιάμεσους κόμβους, έτσι κάθε κόμβος λειτουργεί σαν αναμεταδότης πακέτων για τους υπόλοιπους. Αυτό σημαίνει ότι ακόμα και όταν δεν χρησιμοποιεί το δίκτυο για να αποστείλει ή να λάβει δεδομένα κάθε κόμβος πρέπει να παραμένει ενεργός ώστε να εκτελεί το έργο της αναμετάδοσης. Βέβαια, ακόμα και όταν η κίνηση είναι μηδενική και κανένας κόμβος δεν αποστέλλει δεδομένα, το πακέτο token δεν σταματάει να κυκλοφορεί στο δίκτυο. Για τους λόγους αυτούς ο driver εκτελείται συνεχώς και ανεξάρτητα από το υπόλοιπο πρόγραμμα, σε ξεχωριστό thread αφιερωμένο σε αυτόν. 3.3.β Driver Thread Παρακάτω φαίνεται το τμήμα κώδικα που βρίσκεται στον κεντρικό βρόχο του thread του driver:... while (TKN_Running) { TKN_PassToken(); if (TKN_Receive() == TKN_TYPE_TOKEN){ TKN_TokenCount++; if (!TKN_Queue_IsEmpty(&TX_QUEUE) ) { -48-

49 rid = TKN_Queue_Pop(&TX_QUEUE, &data); TKN_SendDataPacket ( &data, rid); } } }... Οι συναρτήσεις TKN_PassToken, TKN_Receive, TKN_SendDataPacket είναι χαμηλού επιπέδου συναρτήσεις που χρησιμοποιούνται αποκλειστικά απο τον driver και όχι από τον χρήστη και κάθε μία υλοποιεί ένα τμήμα του πρωτοκόλλου TKN. TKN_PassToken Στέλνει ένα πακέτο token στον επόμενο κόμβο. Αμέσως μετά από την αποστολή του token καλείται η TKN_Receive. TKN_Receive Υλοποιεί το μεγαλύτερο μέρος του πρωτοκόλλου του δικτύου. Λαμβάνει μεμονωμένα bytes από την σειριακή θύρα, επιβάλει την τήρηση του αλγορίθμου του δικτύου, συνθέτει τα πακέτα στην μνήμη, αναλαμβάνει τις αναμεταδόσεις πακέτων που προορίζονται για άλλους κόμβους καθώς και την αποστολή του πακέτου ack. Όταν λάβει πακέτο που προορίζεται για τον κόμβο της, το αποθηκεύει στην πρώτη ελεύθερη θέση της ουράς λήψης. Όλα τα παραπάνω συμβαίνουν μέσα σε ένα βρόχο ο όποιος σπάει είτε όταν ληφθεί πακέτο token είτε εάν εκπνεύσουν κάποιες διαδικασίες timeout στην λήψη bytes από την σειριακή θύρα είτε εάν ξεπεραστούν ορισμένα όρια ανοχής σε σφάλματα. ΤΚΝ_SendDataPacket Σε αυτό το σημείο έχουμε λάβει το token και έχουμε δικαίωμα να στείλουμε ένα πακέτο δεδομένων. Αυτό κάνει αυτή η συνάρτηση. Εάν η TKN_Receive επιστρέψει λόγω timeout και όχι επειδή έλαβε το πακέτο token, τότε ο driver παίρνει την πρωτοβουλία και δημιουργεί / εισάγει στο δίκτυο νέο token υποθέτοντας ότι λόγω σφάλματος χάθηκε το προηγούμενο. 3.3.γ Προγραμματιστική διεπαφή (API) Όπως αναφέραμε, ο driver τρέχει σε δικό του thread. Για να γίνει δυνατή η επικοινωνία με το υπόλοιπο πρόγραμμα παρέχονται οι εξής 2 συναρτήσεις. int TKN_PushData (TKN_Data * cpbuf, BYTE recipientid); int TKN_PopData (TKN_Data *); Η πρώτη αναλαμβάνει να τοποθετήσει στην ουρά αποστολής ένα πακέτο δεδομένων ενώ η δεύτερη ελέγχει την ουρά λήψης για εισερχόμενα πακέτα. Εάν η ουρά αποστολής είναι γεμάτη τότε η TKN_PushData επιστρέφει -1 και ενημερώνει ότι το πακέτο δεν τοποθετήθηκε στην ουρά, αλλιώς επιστρέφει 0, και τοποθετεί το πακέτο στην πρώτη ελεύθερη θέση της ουράς ώστε να αποσταλεί στην πρώτη διαθέσιμη ευκαιρία, δηλαδή όταν ληφθεί το token και έχουν σταλεί όλα τα πακέτα υψηλότερων θέσεων στην ουρά. Η TKN_PopData επιστρέφει -1 αν δεν υπάρχει κανένα πακέτο στην ουρά λήψης ενώ αν υπάρχει, επιστρέφει την διεύθυνση του αποστολέα και αντιγράφει το πακέτο σε τοπικό buffer. -49-

50 -50-

51 4. TKN Bootloader Στα πλαίσια αυτής της διπλωματικής αναπτύχθηκε ένας δικτυακός bootloader για 8bit AVR μικροελεγκτές. Ο ορισμός του bootloader δίνεται στο κεφάλαιο Bootloader. Ο bootloader χαρακτηρίζεται δικτυακός, γιατί η επικοινωνία του με τους μικροελεγκτές βασίζεται στο δίκτυο που αναπτύχθηκε στο πρώτο στάδιο της εργασίας αυτής. Παρακάτω θα εξετάσουμε τα χαρακτηριστικά που διαφοροποιούν τον προγραμματισμό με τον bootloader, σε σχέση με τις άλλες μεθόδους προγραμματισμού καθώς και τα πλεονεκτήματα που αυτός προσφέρει συγκριτικά με αυτές. 4.1 Περιπτώσεις προγραμματισμού Η/Υ Συσκευή προγραμματισμού Target MCU Σχήμα 4.1: Τυπική Διάταξη Προγραμματισμού Μικροελεγκτή Ο προγραμματισμός ενός μικροελεγκτή με τον συμβατικό τρόπο πραγματοποιείται με μία από τις μεθόδους προγραμματισμού που εξετάσαμε στο κεφάλαιο Μέθοδοι προγραμματισμού. Κάθε μέθοδος προγραμματισμού έχει μια συμβατή συσκευή προγραμματισμού, που συνδέεται με έναν ηλεκτρονικό υπολογιστή από τον οποίο κατεβάζει το πρόγραμμα που πρέπει να γραφτεί στον μικροελεγκτή. Η διεπαφή σύνδεσης της συσκευής προγραμματισμού με τον Η/Υ μπορεί να είναι οποιαδήποτε διαθέσιμη διεπαφή επικοινωνίας, όπως USB, σειριακή θήρα, παράλληλη θύρα κ.α. Στον Η/Υ που θα χρησιμοποιηθεί για τον προγραμματισμό πρέπει να εκτελεσθεί κατάλληλη εφαρμογή που παρέχεται από τον κατασκευαστή της συσκευής προγραμματισμού, η οποία χρησιμοποιείται από εμάς για την πραγματοποίηση του προγραμματισμού. Η πιο απλή περίπτωση ανάπτυξης λογισμικού για μικροελεγκτές, περιλαμβάνει έναν μόνο μικροελεγκτή, ο οποίος προγραμματίζεται όπως περιγράφεται στην προηγούμενη παράγραφο. Σε αυτήν την απλή περίπτωση ο bootloader που σχεδιάσαμε λειτουργεί όπως οι υπόλοιπες μέθοδοι και δεν παρέχει κάποια επιπλέον δυνατότητα που θα διευκόλυνε το έργο του προγραμματισμού και θα επιτάχυνε την διαδικασία ανάπτυξης μιας εφαρμογής. 4.1.α Πρόβλημα Τα πράγματα είναι διαφορετικά στην περίπτωση που η εφαρμογή μας περιέχει περισσότερους από έναν μικροελεγκτές και συνεπώς απαιτείται ο προγραμματισμός όλων, ή μέρους αυτών σε κάθε βήμα της σχεδίασης του λογισμικού της εφαρμογής. Το σενάριο αυτό δεν είναι καθόλου σπάνιο. Η συνήθης χρήση ενός μικροελεγκτή είναι το να αποτελεί μέρος ενός ευρύτερου συστήματος, να εκτελεί μια συγκεκριμένη εργασία και να ενημερώνει έναν κεντρικό ελεγκτή για τα αποτελέσματα της εργασίας αυτής. Η εργασία μπορεί να είναι για παράδειγμα η συλλογή μετρήσεων, ή η ενεργοποίηση ενός ρελέ. Σε -51-

52 κάθε περίπτωση, σπάνια συναντάμε έναν μικροελεγκτή να δουλεύει αυτόνομα σε ένα σύστημα. Στο παραπάνω σενάριο οι συμβατικές μέθοδοι προγραμματισμού αντιμετωπίζουν το εξής πρόβλημα. Όπως ήδη αναφέραμε, κάθε μέθοδος στηρίζεται στην αντίστοιχη διεπαφή για την επικοινωνία με τον μικροελεγκτή. Έτσι, είμαστε υποχρεωμένοι να συνδέουμε την συσκευή προγραμματισμού σε κάθε μικροελεγκτή ξεχωριστά και να εκτελούμε ολόκληρη την διαδικασία τόσες φορές, όσο το πλήθος των μικροελεγκτών που συμμετέχουν στην εφαρμογή μας. Όσο το πλήθος αυτό αυξάνεται, η διαδικασία αυτή, γίνεται χρονοβόρα και δυσχεραίνει σε μεγάλο βαθμό το έργο μας. Αυτό θα μπορούσε να λυθεί με την χρήση πολλών συσκευών προγραμματισμού, αλλά κάτι τέτοιο συνεπάγεται στο υψηλό κόστος απόκτησης των τελευταίων αφού συνήθως δεν πρόκειται για συσκευές χαμηλού κόστους. 4.1.β Λύση Ο δικτυακός bootloader, όπως αναφέραμε στηρίζεται στην υπάρχουσα υποδομή του δικτύου για την επικοινωνία. Έτσι μας απαλλάσσει από την ανάγκη σύνδεσης οποιουδήποτε εξωτερικού κυκλώματος προγραμματισμού. Αυτό σημαίνει ότι μπορούμε να προγραμματίσουμε ανά πάσα στιγμή οποιονδήποτε από τους παρόντες μικροελεγκτές της εφαρμογής μας χωρίς να χρειάζεται να κάνουμε καμία τροποποίηση στην συνδεσμολογία. Αυτό φαίνεται στο παρακάτω σχήμα. TKN Boot TKN Boot TKN Boot TKN Boot TKN Boot (client) (server) (server) (server) (server) TKN TKN TKN TKN TKN UART UART UART UART UART Σχήμα 4.2: Αρχιτεκτονική bootloader -52-

53 4.2 Χρήσιμα χαρακτηριστικά AVR Για να γίνει δυνατή η υλοποίηση του bootloader αξιοποιήθηκαν ορισμένες ιδιότητες που παρέχουν οι μικροελεγκτές AVR, ειδικά για να διευκολύνουν την δημιουργία bootloader. 4.2.α Boot Section Κάποιοι μικροελεγκτές AVR δεσμεύουν ένα τμήμα της μνήμης προγράμματος (FLASH memory) για να φιλοξενήσει τον bootloader. Το τμήμα αυτό της μνήμης έχει ορισμένες ιδιότητες και χαρακτηριστικά που το διαφοροποιούν από την υπόλοιπη μνήμη καθιστώντας το κατάλληλο να φιλοξενήσει έναν bootloader. 4.2.β Boot Reset Όπως είδαμε στο κεφάλαιο Fuse bits υπάρχουν κάποια hardware bits στους μικροελεγκτές AVR παραμετροποιούν κρίσιμα χαρακτηριστικά της λειτουργίας του μικροελεγκτή. Ένα από αυτά είναι το BOOT_RST. Το συγκεκριμένο fuse bit καθορίζει το αν ο μικροελεγκτής θα εκτελεί την πρώτη εντολή από την αρχή της FLASH (διεύθυνση 0x0000) όταν εκκινεί ή από την αρχή του τμήματος boot section που περιγράφεται παραπάνω. Στην περίπτωση που επιλέξουμε εκτέλεση από το boot section στην εκκίνηση, ο bootloader αποκτά τον έλεγχο του μικροελεγκτή και είναι σε θέση στην συνέχεια μετά από κατάλληλες εντολές να εκτελέσει το πρόγραμμα εφαρμογής που συνήθως βρίσκεται στην αρχή της FLASH. 4.2.γ Θέση Interrupt Vector Εκ κατασκευής οι μικροελεγκτές AVR, όταν συμβαίνει μια διακοπή, που έχει ενεργοποιηθεί, μεταφέρουν την εκτέλεση του προγράμματος σε ένα προκαθορισμένο σημείο της μνήμης ανάλογα με την συγκεκριμένη διακοπή. Η περιοχή της μνήμης που είναι δεσμευμένη για την εξυπηρέτηση των διακοπών ονομάζεται διάνυσμα διακοπών και από προεπιλογή βρίσκεται στην αρχή της μνήμης προγράμματος (FLASH). Ωστόσο, το διάνυσμα διακοπών είναι δυνατόν να μετακινηθεί στο τμήμα boot section. Κάτι τέτοιο είναι ιδιαίτερα χρήσιμο για να γίνει δυνατή η interrupt driven σχεδίαση του bootloader χωρίς οι διακοπές να βρίσκονται στην προεπιλεγμένη θέση οπού έχει πρόσβαση ο χρήστης και συνεπώς θα υπήρχε ο κίνδυνος καταστροφής του διανύσματος διακοπών. 4.2.δ Boot Lock Bits (BLB) Για να προστατευτεί ο κώδικας του bootloader υπάρχουν τα boot lock bits τα οποία είναι παρόμοια με τα fuse bits και με κατάλληλη ρύθμιση της τιμής τους, εισάγουν περιορισμούς σχετικά με το ποιος κώδικας επιτρέπεται να εκτελεί την εντολή εγγραφής στην FLASH (SPM). Μπορεί δηλαδή να απαγορευτεί σε κώδικα που βρίσκεται στο τμήμα μνήμης χρήστη να εκτελεί την SPM, ενώ να επιτραπεί σε κώδικα που βρίσκεται στο τμήμα boot section. 4.3 Υλοποίηση bootloader 4.3.α Διεύθυνση reset Όπως εξηγήθηκε στην προηγούμενη παράγραφο και φαίνεται στο παρακάτω σχήμα, η -53-

54 μνήμη των μικροελεγκτών AVR είναι χωρισμένη σε δύο τμήματα. Το πρώτο τμήμα που ξεκινά στην διεύθυνση 0x0000 είναι το τμήμα προγράμματος εφαρμογής ενώ το δεύτερο είναι το τμήμα boot το οποίο καταλαμβάνει ένα μέρος στο τέλος της FLASH. Όταν δοθεί στον μικροελεγκτή τροφοδοσία ή όταν συμβεί reset είτε με τον ακροδέκτη RESET, είτε προγραμματιστικά ο μικροελεγκτής ξεκινάει την εκτέλεση από συγκεκριμένη, προκαθορισμένη θέση. Η θέση αυτή είναι είτε η πρώτη θέση της μνήμης εφαρμογής (0x0000) είτε η πρώτη θέση του τμήματος boot. Σχήμα 4.3: Διαχωρισμός Μνήμης Flash Για να μπορέσει να χρησιμοποιηθεί ο bootloader η διεύθυνση εκκίνησης πρέπει να οριστεί στο τμήμα boot πού φιλοξενεί τον bootloader. Αυτό ρυθμίζεται από το αντίστοιχο fuse bit του μικροελεγκτή. Έτσι, όταν εκκινεί ο μικροελεγκτής θα εκτελεί απευθείας τον bootloader. Αφού το πρόγραμμα εφαρμογής δεν είναι αυτό που εκτελείται κατά το reset, προκύπτει η ανάγκη να μπορούμε να μεταβούμε σε αυτό με κάποιον άλλο τρόπο. Υπάρχουν αρκετές λύσεις σε αυτό το πρόβλημα. Μία λύση είναι ο bootloader κατά την αρχικοποίηση του, να ελέγχει την τιμή ενός ακροδέκτη εισόδου και βάσει της τιμής του να αποφασίζει αν θα συνεχίσει την εκτέλεση ή αν θα μεταβεί στην πρόγραμμα εφαρμογής. Η λύση που χρησιμοποιήθηκε στην δική μας περίπτωση είναι να εκτελείται πάντα ο bootloader κατά την εκκίνηση, και ο χρήστης να έχει την δυνατότητα να μεταβεί στην εφαρμογή δίνοντας κάποια εντολή στον bootloader ο οποίος θα αναλαμβάνει να μεταφέρει τον έλεγχο στο πρόγραμμα εφαρμογής. Αυτό βέβαια έχει το μειονέκτημα, ότι δεν είναι δυνατόν να εκτελεστεί το πρόγραμμα εφαρμογής χωρίς την ύπαρξη ενός PC προγραμματισμού. Ωστόσο, για τον εκπαιδευτικό σκοπό της εργασίας αυτής, κάτι τέτοιο δεν αποτελεί πρόβλημα. 4.3.β Interrupt Vector Στο κεφάλαιο Υλοποίηση δικτύου TKN είδαμε ότι η υλοποίηση του δικτύου βασίζεται σε διακοπές. Άρα για να είναι σε θέση ο bootloader να χρησιμοποιήσει την βιβλιοθήκη που υλοποιεί το δίκτυο, πρέπει να έχει πρόσβαση στις απαραίτητες διακοπές. Σε αντιστοιχία με το reset, οι διακοπές έχουν προκαθορισμένες θέσεις στις οποίες οδηγείται -54-

55 αυτόματα ο έλεγχος του προγράμματος όταν συμβεί διακοπή. Αυτές οι θέσεις, από προεπιλογή βρίσκονται στην αρχή της μνήμης FLASH, αμέσως μετά το reset. Η περιοχή μνήμης που είναι δεσμευμένη για την εξυπηρέτηση των διακοπών, ονομάζεται διάνυσμα διακοπών (interrupt vector). Το διάνυσμα διακοπών είναι δυνατό να μετακινηθεί από την προεπιλεγμένη θέση του (αρχή της FLASH), στο τμήμα boot. Αν δεν είχαμε αυτή την δυνατότητα, ο bootloader δεν θα ήταν ασφαλής από τυχόν σφάλματα που ενδέχεται να προκαλέσει το πρόγραμμα εφαρμογής και αυτό θα είχε άμεση συνέπεια στην συνολική αξιοπιστία και χρησιμότητά του. Παράλληλα, είναι επιθυμηο το πρόγραμμα χρήστη να έχει πρόσβαση στα interrupts που δεν χρησιμοποιούνται απο τον bootloader. Για τον λόγο αυτό όλα τα interrupts προοθούνται με εντολές jump στις διευθύνσεις που αρχικά βρίσκονταν, αυτές που ξεκινούν δηλαδή από την αρχή της RAM. 4.3.γ Αρχιτεκτονική bootloader Όπως φαίνεται στο Σχήμα 4.2 η αρχιτεκτονική που έχει ακολουθηθεί στην σχεδίαση είναι server-client. Διακρίνουμε δύο μέρη στην συνολική διαδικασία προγραμματισμού, τον μικροελεγκτή που αποτελεί τον στόχο προς προγραμματισμό και την εφαρμογή προγραμματισμού που τρέχει σε PC και είναι υπεύθυνη να στείλει στον μικροελεγκτή το πρόγραμμα. Για να ξεκινήσει η διαδικασία προγραμματισμού, προϋπόθεση είναι να βρίσκονται και τα δύο μέρη συνδεδεμένα στο δίκτυο και στον μικροελεγκτή να εκτελείται το πρόγραμμα του bootloader. Όταν το πρόγραμμα του bootloader εκτελείται στον μικροελεγκτή, αυτός ακούει συνεχώς το δίκτυο και περιμένει να λάβει εντολές. Αυτός είναι ο λόγος που η αρχιτεκτονική χαρακτηρίζεται server-client. Σε αυτό το σημείο η εφαρμογή που τρέχει στο PC μπορεί να στείλει στον μικροελεγκτή κάποια από τις συμβατές εντολές. 4.3.δ Εντολές bootloader Οι εντολές του bootloader είναι απλές συμβολοσειρές ASCII με μέγεθος που δεν ξεπερνά το μέγιστο μέγεθος πακέτου του δικτύου. Παρακάτω φαίνονται οι υπάρχουσες εντολές: Εντολή Λειτουργία V: Αποστολή μέσω του δικτύου της έκδοσης του bootloader που εκτελείται. Πρόκειται για μια ASCII συμβολοσειρά που χωράει σε ένα πακέτο του δικτύου. S: Αποστολή των τριών byte υπογραφής του μικροελεγκτή. Η υπογραφή διαφέρουν σε κάθε μοντέλο AVR. πχ 0x1E0x960x0A (12 bytes) B: Εκκίνηση διαδικασίας προγραμματισμού της μνήμης εφαρμογής. R: Εκτέλεση προγράμματος εφαρμογής. Εκτελεί μια κλήση υπορουτίνας (εντολή call) στην διεύθυνση 0x0000. Πίνακας 4.1: Eντολές bootlader Στο μέλλον μπορούν να προστεθούν επιπλέον εντολές που θα δίνουν πρόσθετες δυνατότητες στον bootloader. 4.3.ε Κατανομή Καταχωρητών Στο σχήμα φαίνεται ο τρόπος με τον οποίο έχουν χρησιμοποιηθεί οι καταχωρητές στα πλαίσια του bootloader. Μερικοί καταχωρητές έχουν δεσμευθεί από τον driver του δικτύου για ταχύτερη εξυπηρέτηση των interrupts και γι'αυτόν τον λόγο δεν πρέπει να πειραχτούν από τον χρήστη σε καμία περίπτωση, γιατί μπορεί ανά πάσα στιγμή να συμ-55-

56 βεί κάποιο interrupt και να χάσουν την τιμή τους. Όλοι οι υπόλοιποι καταχωρητές σώζονται στην RAM στο τέλος κάθε εξυπηρέτησης διακοπής και αντίστοιχα ανακτώνται από αυτή στην αρχή της εξυπηρέτησης. Με πράσινο φαίνονται οι καταχωρητές που μπορεί να χρησιμοποιήσει ελεύθερα το πρόγραμμα χρήστη ενώ με κόκκινο αυτοί που δεν πρέπει να πειραχτούν. TKN r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 TKN_Boot USER TKN variables (They are all stored/restored in RAM) itemp0 itemp0 itemp0 rsreg temp0 temp1 temp2 pagecount wordcount var0 var1 var2 var3 var4 X Y Z Σχήμα 4.4: Κατανομή Καταχωρητών 4.3.στ Διαδικασία προγραμματισμού Η μνήμη FLASH των μικροελεγκτών AVR είναι χωρισμένη σε σελίδες που το μέγεθός τους εξαρτάται από το μοντέλο του μικροελεγκτή. Όταν ο bootloader λάβει την εντολή προγραμματισμού (B:) μπαίνει σε ένα βρόχο λήψης δεδομένων από το δίκτυο. Σε αυτόν τον βρόχο ο μικροελεγκτής περιμένει να λάβει ακριβώς μία σελίδα μνήμης. Τυπικά μεγέθη της σελίδας μνήμης είναι 128 ή 256 bytes. Όταν ληφθεί μία ολοκληρωμένη σελίδα, ο μικροελεγκτής αναλαμβάνει να την γράψει στην μνήμη FLASH. Όταν ολοκληρωθεί η εγγραφή, αποστέλλεται στην εφαρμογή προγραμματισμού μια συμβολοσειρά που σηματοδοτεί ότι ο μικροελεγκτής είναι και πάλι -56-

57 σε θέση να λάβει εντολές. Στην περίπτωση που το πρόγραμμα που θέλουμε να γράψουμε στην μνήμη καταλαμβάνει περισσότερες από μία σελίδες, επαναλαμβάνουμε την παραπάνω διαδικασία όσες φορές χρειάζεται. Η τελευταία σελίδα κάθε προγράμματος είναι πολύ πιθανό, να μην είναι ολοκληρωμένη. Στην περίπτωση αυτή, πρέπει η εφαρμογή προγραμματισμού να φροντίσει να γεμίσει τον χώρο που περισσεύουν μέχρι το τέλος της σελίδας, αφού ο μικροελεγκτής περιμένει να λάβει ολοκληρωμένες σελίδες. Αυτό το κενό συνήθως γεμίζεται με το byte 0xFF. 4.3.ζ Εκτέλεση προγράμματος χρήστη Στον Πίνακας 4.1 υπάρχει η εντολή R:. Η λειτουργία αυτής της εντολής είναι να μεταφέρει την εκτέλεση στο πρόγραμμα εφαρμογής. Αυτό το πετυχαίνει κάνοντας μια κλήση στην διεύθυνση 0x0000. Αν το πρόγραμμα εφαρμογής τερματίσει κανονικά με μια εντολή επιστροφής από υπορουτίνα (εντολή ret) και με την προϋπόθεση ότι δεν άλλαξε τον stack pointer (καταχωρητές SPH:SPL), τότε θα συνεχιστεί η εκτέλεση του bootloader, στέλνοντας ένα ενημερωτικό μήνυμα στην εφαρμογή προγραμματισμού. 4.4 Εφαρμογή προγραμματισμού Όπως είδαμε στις προηγούμενες παραγράφους, η διαδικασία προγραμματισμού εκκινείται από μια εφαρμογή που παίζει τον ρόλο πελάτη (client) και είναι υπεύθυνη να στείλει στον μικροελεγκτή τις κατάλληλες εντολές που θα πυροδοτήσουν τον προγραμματισμό, καθώς και να στείλει το αρχείο hexμε το πρόγραμμα.. Στα πλαίσια της διπλωματικής υλοποιήθηκε μια τέτοια εφαρμογή. 4.4.α Συμβατότητα / Απαιτήσεις Η ανάπτυξη της εφαρμογής προγραμματισμού έγινε σε γλώσσα C++ κάνοντας χρήση του περιβάλλοντος Qt. Η επικοινωνία με τους μικροελεγκτές βασίστηκε στο δίκτυο TKN και στην υλοποίηση για PC που έχει γίνει στο πρώτο στάδιο της διπλωματικής. Η υλοποίηση του δικτύου είχε γίνει σε C και ήταν εύκολο να συνδεθεί με την εφαρμογή που γράφτηκε σε C++. Η εφαρμογή είναι συμβατή με λειτουργικά συστήματα Windows, Linux και απαιτεί την ύπαρξη σειριακής θύρας για την σύνδεση με το δίκτυο των μικροελεγκτών. -57-

58 4.4.β Δυνατότητες Όπως αναφέρθηκε, για κάθε κόμβο που εντοπίζεται στο δίκτυο, παρουσιάζεται ένα παράθυρο το οποίο δίνει στον χρήστη ορισμένες δυνατότητες επικοινωνίας και διεπαφής με τους κόμβους. Οι δυνατότητες για κάθε κόμβο ξεχωριστά είναι οι εξής: Προγραμματισμός μνήμης χρήστη με αρχείο hex. Εκκίνηση της εφαρμογής χρήστη. Αποστολή αυθαίρετου πακέτου δεδομένων στον κόμβο. Ο χρήστης μπορεί να στείλει ένα κείμενο σε μορφή ascii, ίσο με το μέγεθος του πακέτου του δικτύου. Εάν το κείμενο αναπαριστά αριθμητική τιμή, σε δεκάδικο ή δεκαεξαδικό σύστημα, τότε μετατρέπεται αυτόματα σε binary μορφή (little endiann) και αποστέλλεται έτσι. Καταγραφή όλων των εισερχόμενων δεδομένων που προέρχονται από τον συγκεκριμένο κόμβο. (Δυνατότητα απενεργοποίησης) Απεικόνιση της αναλογικής τιμής από τον A/D μετατροπέα που μπορεί να στείλει ο κόμβος σε αναλογικό γραφικό όργανο. Αποστολή byte με αριθμητική τιμή ελεγχόμενη από γραφική κυλιόμενη μπάρα. 4.4.γ Λειτουργία Η εφαρμογή εντοπίζει τις διαθέσιμες σειριακές θύρες στο μηχάνημα που τρέχει και δίνει στον χρήστη την δυνατότητα να συνδεθεί σε δίκτυο TKN που βρίσκεται σε κάποια από αυτές. Όταν ο χρήστης επιλέξει την έναρξη σύνδεσης, η εφαρμογή κάνει απόπειρα έναρξης δικτύου TKN. Εάν η επιλεγμένη θύρα είναι όντως συνδεδεμένη με ένα σύνολο κόμβων που λειτουργούν και έχουν εγκατεστημένο τον driver του δικτύου, τότε η εφαρ-58-

59 μογή θα ανιχνεύσει αυτόματα τους παρόντες μικροελεγκτές-κόμβους και για κάθε έναν ξεχωριστά θα παρουσιάσει ένα παράθυρο με επιλογές καθώς και ένα τερματικό στο οποίο καταγράφονται όλα τα δεδομένα που ο συγκεκριμένος μικροελεγκτής αποστέλλει. 4.4.δ Χρήση της εφαρμογής ως κονσόλα αποσφαλμάτωσης Στην παράγραφο Interrupt Vector αναφέραμε ότι το διάνυσμα διακοπών μεταφέρεται στο τμήμα boot του μικροελεγκτή. Το γεγονός αυτό έχει ένα επιπλέον πλεονέκτημα. Δίνει στο δίκτυο την ικανότητα να εκτελείται στο παρασκήνιο ακόμα και όταν ο χρήστης μεταβεί μέσω του bootloader στο πρόγραμμα εφαρμογής με τον τρόπο που εξηγήσαμε στην παράγραφο Εκτέλεση προγράμματος χρήστη. Συνεπώς, το πρόγραμμα εφαρμογής μπορεί να χρησιμοποιήσει το δίκτυο χωρίς να κάνει καμία αρχικοποίηση και χωρίς να συμπεριλάβει καν την βιβλιοθήκη του δικτύου στην σχεδίαση του. Το μόνο που χρειάζεται είναι η γνώση των διευθύνσεων των ρουτινών αποστολής και λήψης πακέτων και η κλήση τους από το πρόγραμμα εφαρμογής. Τα παραπάνω, σε συνδυασμό με την κονσόλα καταγραφής δεδομένων που παρέχει η εφαρμογή προγραμματισμού, δίνουν στον χρήστη ένα σημαντικό βοήθημα στην διαδικασία προγραμματισμού του μικροελεγκτή που είναι από την φύση της πολύ πιο δύσκολη συγκρινόμενη με τον προγραμματισμό destop λόγω της μη ύπαρξης οθόνης και πληκτρολογίου ώστε ο χρήστης να πάρει output και να δώσει input αντίστοιχα στο πρόγραμμα που εκτελείται. Και αυτό ακριβώς το πρόγραμμα λύνει η εφαρμογή αυτή. -59-

60 -60-

61 5. TKN PCB Αφού ολοκληρώθηκε η υλοποίηση του τμήματος του συστήματος του σχετικού με το δίκτυο και αναπτύχθηκε το απαραίτητο λογισμικό, ήρθε η ώρα να επιδειχθούν οι δυνατότητες του δικτύου και του Bootloader σε πραγματικό περιβάλλον ενσωματωμένου συστήματος. Για τον σκοπό αυτό προχωρήσαμε στην κατασκευή τριών ενδεικτικών μικροϋπολογιστικών συστημάτων βασισμένων στον μικροελεγκτή AVR ATmega644PA πάνω σε τυπωμένο κύκλωμα (PCB). Κάθε πλακέτα αναπαριστά έναν κόμβο από ένα δίκτυο διασυνδεδεμένων μικροελεγκτών. Η σχεδίαση της πλακέτας έγινε με χρήση του προγράμματος KiCad. Εικόνα 5.1: 3D Απεικόνιση PCB (Πριν την κατασκευή) Εικόνα 5.2: PCB Μετά την κατασκευή 5.1 Στοιχεία πλακέτας Στην πλακέτα επελέγησαν να τοποθετηθούν στοιχεία απαραίτητα για την διεξαγωγή εργαστηριακών ασκήσεων καθώς και στοιχεία που διευκολύνουν την ανάπτυξη προγραμμάτων. Φυσικά, τοποθετήθηκαν ακροδέκτες για την διασύνδεση των κόμβων σύμφωνα με την απαιτούμενη συνδεσμολογία του δικτύου TKN. Τα στοιχεία που βρίσκουμε στην πλακέτα είναι τα εξής: 1 trimmer 10KΩ. 1 Πιεστικός Διακόπτης (push button) για reset. 1 Πιεστικός Διακόπτης (push button) γενικού σκοπού. 8 λυχνίες LED (με τις απαραίτητες αντιστάσεις περιορισμού ρεύματος.) 1 DIP Switch 4 θέσεων. Κονέκτορας που δίνει πρόσβαση στο PORT C. Κονέκτορας που δίνει πρόσβαση στο PORT D. Κονέκτορας σύνδεσης στο δίκτυο με τον προηγούμενο κόμβο. Κονέκτορας σύνδεσης στο δίκτυο με τον επόμενο κόμβο. 5.1.α Κονέκτορες Δικτύου Όπως έχει αναλυθεί στα προηγούμενα κεφάλαια, το δίκτυο χρησιμοποιεί τοπολογία δακτυλίου. Οι κόμβοι δηλαδή συνδέονται διαδοχικά, κάθε ένας με τον επόμενό του, μέχρι -61-

62 ο πομπός του τελευταίου να συνδεθεί στον δέκτη του πρώτου και κατά αυτόν τον τρόπο να κλείσει ο δακτύλιος. Έτσι κατά την σχεδίαση των πλακετών, και συγκεκριμένα στο στάδιο της επιλογής των σημάτων που θα συνδεθούν σε κάθε ακροδέκτη του κονέκτορα, έπρεπε να δοθεί προσοχή στο να ικανοποιείται ο περιορισμός του σχηματισμού δακτυλίου. Προκειμένου να αποφευχθεί ο γεωμετρικός περιορισμός του να σχηματίσουμε έναν αληθινό δακτύλιο με τους κόμβους, ώστε να συνδεθεί ο πρώτος με τον τελευταίο, έπρεπε να βρεθεί ένας τρόπος να έχουμε επιστροφή του σήματος Tx του τελευταίου στον πρώτο. Επίσης πρέπει να ληφθεί υπόψιν ο κόμβος-υπολογιστής, που επικοινωνεί μέσω του καλωδίου FTDI έτσι ώστε ο κονέκτορας που θα σχεδιαστεί να είναι συμβατός με το βύσμα του καλωδίου. Στην πραγματικότητα, η διάταξη των ακροδεκτών του καλωδίου είναι αυτή που θα καθορίσει την σχεδίαση του κονέκτορα. Στο Σχήμα 2.8 απεικονίζονται οι δύο κονέκτορες που έχει κάθε πλακέτα για την σύνδεση της στο δίκτυο. Ο αριστερός κονέκτορας χρησιμοποιείται για την σύνδεση με τον προηγούμενο κόμβο ενώ ο δεξιός για την σύνδεση με τον επόμενο. Ο τελευταίος κόμβος δεν έχει επόμενο, έτσι βραχυκυκλώνεται μέσω ενός jumper ο ακροδέκτης Tx (πομπός σειριακής θύρας) με τον ακροδέκτη επιστροφής. Κατά αυτόν τον τρόπο το σήμα Tx του τελευταίου κόμβου περνώντας από όλους τους προηγούμενους θα φτάσει στον πρώτο. Η διάταξη των ακροδεκτών είναι τέτοια που ο ακροδέκτης στον οποίο καταλήγει το σήμα επιστροφής είναι το Rx (δέκτης) του καλωδίου FTDI. Στην περίπτωση που δεν υπάρχει υπολογιστής στο δίκτυο τότε πρέπει με ένα jumper να βραχυκυκλωθεί ο ακροδέκτης επιστροφής του πρώτου κόμβου με τον ακροδέκτη Rx ώστε να λαμβάνει το σήμα από τον πο μπό του τελευταίου κόμβου. -62-

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

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

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

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

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

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

WIRELESS SENSOR NETWORKS (WSN)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής Κεφάλαιο 4 ο Ο Προσωπικός Υπολογιστής Μάθημα 4.3 Ο Επεξεργαστής - Εισαγωγή - Συχνότητα λειτουργίας - Εύρος διαδρόμου δεδομένων - Εύρος διαδρόμου διευθύνσεων - Εύρος καταχωρητών Όταν ολοκληρώσεις το μάθημα

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

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

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

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

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. 5.1 Γενικά Τα πρώτα δίκτυα χαρακτηρίζονταν από την «κλειστή» αρχιτεκτονική τους με την έννοια ότι αυτή ήταν γνωστή μόνο στην εταιρία που την είχε σχεδιάσει. Με τον

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εφαρμογές Σειριακής Επικοινωνίας

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

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

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

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

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

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

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

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

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

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοινωνία. Σειριακή Επικοινωνία USB Σύνδεση / Πρωτόκολλο Σκοπός Εντολή επιλογής (if) Εντολή Επανάληψης (while) Πίνακες 1 Μέρος Α : Σκοπός

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ Σκοπός της άσκησης Οι φοιτητές θα εξοικειωθούν με την πλακέτα του μικροελεγκτή και θα αναγνωρίσουν τα βασικά της στοιχεία. Επίσης θα εξοικειωθούν

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

Σειριακό Τερματικό Serial Terminal (Dumb Terminal)

Σειριακό Τερματικό Serial Terminal (Dumb Terminal) Σειριακό Τερματικό Serial Terminal (Dumb Terminal) Ένα σειριακό τερματικό είναι ο απλούστερος τρόπος για να συνδέσουμε πολλαπλές μονάδες εξόδου (οθόνες) και εισόδου (πληκτρολόγια) σε ένα μηχάνημα UNIX

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

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

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

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

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

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

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

- Δομή πλαισίου Ethernet - Πλαίσια Ethernet μεγάλου μεγέθους (Jumbo frames)

- Δομή πλαισίου Ethernet - Πλαίσια Ethernet μεγάλου μεγέθους (Jumbo frames) 2.4.2 Διευθύνσεις Ελέγχου πρόσβασης στο Μέσο (MAC) - Δομή πλαισίου Ethernet - Πλαίσια Ethernet μεγάλου μεγέθους (Jumbo frames) 1 / 37 Φυσική διεύθυνση Κάθε κόμβος σε ένα δίκτυο Ethernet έχει μια φυσική

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

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

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

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

WDT και Power Up timer

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

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

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

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

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

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

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

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019 Γ ΕΠΑΛ 14 / 04 / 2019 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΘΕΜΑ 1 ο 1. Να γράψετε στο τετράδιό σας το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι λανθασμένη.

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

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 3/02/2019 ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ ΘΕΜΑ 1 ο 1. Να γράψετε στο τετράδιό σας το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ 1 ΕΙΣΑΓΩΓΗ Ο πραγματικός κόσμος είναι ένας αναλογικός κόσμος. Όλα τα μεγέθη παίρνουν τιμές με άπειρη ακρίβεια. Π.χ. το ηλεκτρικό σήμα τάσης όπου κάθε

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

Μέθοδοι Ελέγχου Σφαλμάτων

Μέθοδοι Ελέγχου Σφαλμάτων Μέθοδοι Ελέγχου Σφαλμάτων Έλεγχος Ισοτιμίας (Parity Check) Άθροισμα Ελέγχου (Checksum) Έλεγχος κυκλικού πλεονασμού (CRC- Cyclic Redundancy Check) Μερικά μπορεί να μεταφερθούν λάθος, πχ λόγω θορύβου Θα

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ Δρ. Γκόγκος Χρήστος Εκτέλεση προγραμμάτων Πρόγραμμα: Ένα σύνολο από εντολές.

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

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 1 / 38 Παράδειγμα Έστω ότι θέλουμε να αποστείλουμε ένα μήνυμα μέσω ηλεκτρονικού ταχυδρομείου. Αρχικά η εφαρμογή χρησιμοποιώντας τα πρωτόκολλα του επιπέδου εφαρμογής

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

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

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f.

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f. 6. Καταχωρητές Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f. Καταχωρητής 4 ψηφίων Καταχωρητής με παράλληλη φόρτωση Η εισαγωγή

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

CTMU. => C = 50pF 10pF = 40 pf. C stray. d (C V ) I= I = C V. C= I t. Ι = dq dt

CTMU. => C = 50pF 10pF = 40 pf. C stray. d (C V ) I= I = C V. C= I t. Ι = dq dt CTMU Με τη μονάδα CTMU (Charge Time Measurement Unit) μπορούμε να μετρήσουμε απόλυτη χωρητικότητα, σχετική μεταβολή χωρητικότητας καθώς επίσης και χρονικό διάστημα ανάμεσα σε δύο παλμούς. Βασίζεται στην

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

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI Ε.Μ.Π. - ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ VLSI

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

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 2: Στοιχεία Μετάδοσης Κώδικες 2 Κώδικες Κωδικοποίηση Δεδομένων: Όπως έχει ήδη αναφερθεί, προκειμένου τα δεδομένα να γίνουν κατανοητά από ένα ηλεκτρονικό

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

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

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΘΕΜΑ : ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΔΙΑΡΚΕΙΑ:? περίοδος Οι μικροελεγκτές είναι υπολογιστές χωρίς περιφερειακά, σε ολοκληρωμένα κυκλώματα. Μπορούν να συνδυάσουν αρκετές από τις βασικές λειτουργίες άλλων ειδικών

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

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

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

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 1: Εισαγωγή στα ενσωματωμένα συστήματα (embedded systems) Εργαστήριο Αυτομάτου Ελέγχου Ενσωματωμένα συστήματα (Embedded Systems) Ενσωματωμένα συστήματα (Embedded

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ: Κυκλικός Έλεγχος Πλεονασμού CRC codes Cyclic Redundancy Check codes Ο μηχανισμός ανίχνευσης σφαλμάτων στις επικοινωνίες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 8. Αριθμητική Λογική μονάδα Κεφάλαιο 8 Αριθμητική Λογική μονάδα 8.1 Εισαγωγή Στη μηχανική υπολογιστών η αριθμητική/λογική μονάδα (ALU) είναι ένα ψηφιακό κύκλωμα το οποίο εκτελεί αριθμητικούς και λογικούς υπολογισμούς. Η ALU είναι

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

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης Κεφάλαιο 7 1. Σε τι διαφέρει ο Η/Υ από τις υπόλοιπες ηλεκτρικές και ηλεκτρονικές συσκευές; Που οφείλεται η δυνατότητά του να κάνει τόσο διαφορετικές

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

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

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

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

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

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

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

Ψηφιακές Επικοινωνίες

Ψηφιακές Επικοινωνίες Τεχνική Εκπαίδευση Ψηφιακές Επικοινωνίες Παναγιώτης Γεώργιζας BEng Cybernetics with Automotive Electronics MSc Embedded Systems Engineering Θέματα που θα αναλυθούν Στόχοι του σεμιναρίου Λίγη Θεωρία για

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

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

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

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ι Γ. Τσιατούχας 2 ο Κεφάλαιο ιάρθρωση 1. Οργάνωση της 2. εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο

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

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

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

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

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

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Τι είναι επικοινωνία; Είναι η διαδικασία αποστολής πληροφοριών από ένα πομπό σε κάποιο δέκτη. Η Τηλεπικοινωνία είναι η επικοινωνία από απόσταση (τηλε-).

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

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

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

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

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Μ.Στεφανιδάκης Κατανεμημένα συστήματα ελέγχου Α Β διασυνδετικό δίκτυο Γ Δ Ε π.χ. οι επιμέρους

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

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1 I. Παράδειγμα 1: Απόδοση TCP με παράθυρο αποστολέα = 1 a. Ο μηχανισμός όπως έχει περιγραφεί ως τώρα στέλνει μόνο ένα πακέτο και σταματάει να μεταδίδει έως ότου πάρει το ack του πακέτου αυτού (λειτουργία

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

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26 Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.: 43 Άσκηση 3 Μια αξιόπιστη multicast υπηρεσία επιτρέπει σε έναν

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

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

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

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

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

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

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

Κεφάλαιο 2.4: Εργασία με εικονίδια

Κεφάλαιο 2.4: Εργασία με εικονίδια Κεφάλαιο 2.4: Εργασία με εικονίδια 2.4.1 Συχνότερα εμφανιζόμενα εικονίδια των Windows Τα πιο συνηθισμένα εικονίδια, που μπορεί να συναντήσουμε, είναι: Εικονίδια συστήματος: Τα Windows εμφανίζουν τα στοιχεία

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

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

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

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

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2011-20112 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη 15 Δεκεμβρίου 2011 Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις 1. Θεωρήσετε

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

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

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

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

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

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

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ Τετάρτη 5-12/11/2014 ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ ΕΚΠΑΙΔΕΥΤΗΣ: ΤΡΟΧΙΔΗΣ ΠΑΝΑΓΙΩΤΗΣ 1. Παράσταση και οργάνωση δεδομένων

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

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

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

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

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

ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ Άσκηση 1 Ένας επεξεργαστής (ΚΜΕ) υποστηρίζει 371 εντολές. Πόσα bit θα πρέπει να είναι ο καταχωρητής εντολής (ελάχιστη τιμή); (α) 4 bit (β) 16 bit (γ) 1 bit (δ)

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

Διασύνδεση τοπικών δικτύων

Διασύνδεση τοπικών δικτύων Κεφάλαιο 10 Διασύνδεση τοπικών δικτύων ------------------------- Μάθημα 10.1 : Αρχές διασύνδεσης τοπικών δικτύων Μάθημα 10.2 : Επιλογή τοπικού δικτύου και μέσου μετάδοσης Μάθημα 10.3 : Επιλογή τοπικού

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

Επαναληπτικές Ασκήσεις Μαθήματος

Επαναληπτικές Ασκήσεις Μαθήματος Επαναληπτικές Ασκήσεις Μαθήματος Ερώτηση: EAM1. Ποιο από τα παρακάτω χαρακτηριστικά δεν αποτελεί κριτήριο κατηγοριοποίησης δικτύων. Κλίμακα Τεχνολογία μετάδοσης Πλήθος τερματικών εντός του δικτύου Ερώτηση:

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

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε. Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε. 5.1 Το ρολόι Κάθε μία από αυτές τις λειτουργίες της Κ.Μ.Ε. διαρκεί ένα μικρό χρονικό διάστημα. Για το συγχρονισμό των λειτουργιών αυτών, είναι απαραίτητο κάποιο ρολόι.

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

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή Κεφάλαιο 3 Το υλικό του υπολογιστή Εισαγωγή Τµήµατα του Η/Υ καιοργάνωση Μονάδα Κεντρικής Μνήµης Κεντρική Μονάδα Επεξεργασίας (CPU) Μονάδα Εισόδου Εξόδου ίαυλοι Επικοινωνίας Εναλλακτικές αρχιτεκτονικές

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

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

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

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών...11. Κεφάλαιο 2 Αξιοπιστία...25. Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης...

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών...11. Κεφάλαιο 2 Αξιοπιστία...25. Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης... Περιεχόμενα Εισαγωγή...7 Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών...11 Κεφάλαιο 2 Αξιοπιστία...25 Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης...65 Κεφάλαιο 4 Μεταγωγή Δεδομένων και Δρομολόγηση...

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ATMEL AVR8 ΠΟΡΛΙΔΑΣ ΔΗΜΗΤΡΙΟΣ ATMEL AVR Atmega16 Χαρακτηριστικά Μικροελεγκτής 8-bit υψηλής απόδοσης και χαμηλής κατανάλωσης Προοδευμένη αρχιτεκτονική RISC (Reduced instruction

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

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

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

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

ΘΕΜΑ : ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ DIGITAL ELECTRONICS

ΘΕΜΑ : ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ DIGITAL ELECTRONICS ΘΕΜΑ : ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ DIGITAL ELECTRONICS ΔΙΑΡΚΕΙΑ: 1 περιόδους 16/11/2011 10:31 (31) καθ. Τεχνολογίας ΚΑΤΗΓΟΡΙΕΣ ΜΕΓΕΘΩΝ ΑΝΑΛΟΓΙΚΟ (ANALOGUE) ΨΗΦΙΑΚΟ (DIGITAL) 16/11/2011 10:38 (38) ΕΙΣΑΓΩΓΗ ΣΤΑ

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κ. Δεμέστιχας Εργαστήριο Πληροφορικής Γεωπονικό Πανεπιστήμιο Αθηνών Επικοινωνία μέσω e-mail: cdemest@aua.gr, cdemest@cn.ntua.gr 1 2. ΑΡΙΘΜΗΤΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΜΕΡΟΣ Α 2 Τεχνολογία

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