χεδιαςμόσ και υλοποίθςθ ςυςτιματοσ ςε προγραμματιηόμενθ ψθφίδα (System-on-a-chip) µε βάςθ τον επεξεργαςτι Nios II

Σχετικά έγγραφα
Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Ω ΕΝΙΑΙΟ ΤΣΗΜΑ. ΚΕΦΑΛΑΙΟ 2: Σο Εςωτερικό του Τπολογιςτι

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 2

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

ΠΑΝΕΠΙΣΘΜΙΟ ΔΤΣΙΚΘ ΜΑΚΕΔΟΝΙΑ ΣΜΘΜΑ ΜΘΧΑΝΙΚΩΝ ΠΛΘΡΟΦΟΡΙΚΘ ΚΑΙ ΣΘΛΕΠΙΚΟΙΝΩΝΙΩΝ. Λειτουργικά υςτιματα, 4 ο Εξάμθνο Ψθφιακι χεδίαςθ ΙΙ, 4 ο Εξάμθνο

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Συςκευζσ τθλεπικοινωνιϊν και δικτφωςθσ:

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Δίκτυα Μεταγωγισ Δεδομζνων

Ειςαγωγή ςτην πληροφορική

Ηλιακι Θζρμανςθ οικίασ

ελ. 11/235, Περιεχόμενα Φακζλου "Σεχνικι Προςφορά"

Σο θλεκτρικό κφκλωμα

τατιςτικά ςτοιχεία ιςτότοπου Κ.Ε.Π.Α. Α.Ν.Ε.Μ, για τθν περίοδο 1/1/ /12/2014

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ECM PLUS TM Σφςτθμα Διαχείριςθσ Κρίςεων Σειςμϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

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

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

Εφαρμογέσ Μικροχπολογιςτών ςτισ Τηλεπικοινωνίεσ. Έλεγχοσ ςειριακήσ θφρασ του 8051 (Serial Port)

Διαχείριςη έργου. Αντώνησ Μαΰργιώτησ Msc, PhD Πληροφορικήσ

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

ΟΔΗΓΙΕ ΓΙΑ ΣΗΝ ΕΙΑΓΩΓΗ ΕΚΔΡΟΜΩΝ & ΝΕΩΝ - ΑΝΑΚΟΙΝΩΕΩΝ ΣΗΝ ΙΣΟΕΛΙΔΑ ΣΗ Δ.Δ.Ε. ΘΕΠΡΩΣΙΑ

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

RED Pro Consultants

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

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

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό. Διάλεξθ 10

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

SynaptiQ Software. Περά από τθν απλι παρακολοφκθςθ

1 0 ΕΠΑΛ ΞΑΝΘΗ ΕΙΔΙΚΟΣΗΣΑ : ΗΛΕΚΣΡΟΝΙΚΩΝ ΕΙΔΙΚΗ ΘΕΜΑΣΙΚΗ ΕΡΓΑΙΑ Β ΗΛΕΚΣΡΟΝΙΚΩΝ ΘΕΜΑ : ΚΑΣΑΚΕΤΗ ΠΟΜΠΟΤ FM

Περιφερειακό Ψθφιακό Αποκετιριο: Ανοικτά Δεδομζνα και Επιχειρθματικότθτα. Γ. Φραγκιαδάκθσ Κζντρο Επικοινωνιϊν και Δικτφων Πανεπιςτιμιο Κριτθσ

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Internet a jeho role v našem životě Το Διαδίκτυο και ο ρόλοσ του ςτθ ηωι μασ

Αποτελζςματα Ζρευνασ για τθν Απαςχολθςιμότθτα ςτθν Ελλάδα

Τμήματα Μνήμησ Υπολογιςμόσ Φυςικών διευθύνςεων. Εκπαιδεφτρια: Μαρία Πολίτθ

Οδηγίες αναβάθμισης χαρτών

ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΙΣΟΤΣΟ ΚΤΠΡΟΤ Πρόγραμμα Επιμόρυωσης Τποψηυίων Καθηγητών Σεχνολογίας. Ηλεκτρονικά ΙΙ

ΘΕΜΑ Α /25 (A1)Χαρακτηρίςτε τισ παρακάτω προτάςεισ ωσ (Σ)ωςτζσ ή (Λ)άθοσ

Electronics μαηί με τα ςυνοδευτικά καλϊδια και το αιςκθτιριο κερμοκραςίασ LM335 που περιζχονται

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων

Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών. (v )

Δίκτυα Υπολογιςτϊν 2-Rooftop Networking Project

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Πωσ δθμιουργώ φακζλουσ;

Προπτυχιακό Πρόγραμμα ςτην Πληροφορική. Οδθγόσ Σπουδϊν

Μάρκετινγκ V Κοινωνικό Μάρκετινγκ. Πόπη Σουρμαΐδου. Σεμινάριο: Αναπτφςςοντασ μια κοινωνική επιχείρηςη

SingularLogic Application. Παραμετροποίηση Galaxy Application Server

Τεχνικό Σχζδιο - CAD

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Ζρευνα ικανοποίθςθσ τουριςτϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 9 θ & 10 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Β

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

Τεχνολογία Λογιςμικού. Έκτη Διάλεξη Πολυπλοκότητα Λογιςμικού Προςεγγίςεισ Ανάλυςησ και Σχεδίαςησ

Ψθφιακά Ηλεκτρονικά. Ενότθτα 5 : Ανάλυςθ κυκλώματοσ με D και JK FLIP- FLOP Φώτιοσ Βαρτηιώτθσ

Διαδικαςία Προγράμματοσ Ωρομζτρθςθσ. (v.1.0.7)

ΘΕΡΜΟΔΤΝΑΜΙΚΗ Ι. Ενότθτα 1: Βαςικά χαρακτθριςτικά τθσ Θερμοδυναμικισ. ογομϊν Μπογοςιάν Πολυτεχνικι χολι Σμιμα Χθμικϊν Μθχανικϊν

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Ψθφιακά Ηλεκτρονικά. Ενότθτα 7 : Ελαχιςτοποίθςθ και κωδικοποίθςθ καταςτάςεων Φϊτιοσ Βαρτηιϊτθσ

Ηλεκτρονικι Υπθρεςία Ολοκλθρωμζνθσ Διαχείριςθσ Συγγραμμάτων και Λοιπϊν Βοθκθμάτων

ΑΤΣΟΜΑΣΙΜΟ ΓΡΑΦΕΙΟΤ. 2 θ Διάλεξθ Μζρθ Τπολογιςτι

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Συγγραφι επιςτθμονικισ εργαςίασ. Η κορφφωςθ τθσ προςπάκειάσ μασ

Σφςτθμα Διαχείριςθσ Αντλιοςταςίων. Διαφείπιςη ςτςσημάσων ύδπετςηρ Μονάδερ αςύπμασηρ μεσαυοπάρ ςημάσων Radio telemetry

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

ΘΕΜΑΣΑ ΕΡΓΑΙΩΝ ΓΙΑ ΣΟ ΜΑΘΗΜΑ ΠΡΟΟΜΟΙΩΗ

Ελλθνικι Δθμοκρατία Σεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Ψθφιακά Ηλεκτρονικά. Ενότθτα 9 : Διαδικαςία φνκεςθσ Φϊτιοσ Βαρτηιϊτθσ

Δίκτυα Μεταγωγήσ. Εκπαιδεφτρια :Μαρία Πολίτθ

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ

Δομζσ Δεδομζνων Πίνακεσ

Ελλθνικι Δθμοκρατία Σεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Ψθφιακά Ηλεκτρονικά. Ενότθτα 3 : τοιχεία Μνιμθσ flip-flop.

Epsilon Cloud Services

Η διανομή. Χριςτόδουλοσ Ράντθσ 1

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

Δείκτεσ απόδοςθσ υλικών

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

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

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ

Ιςτορία του Παγκόςμιου ιςτοφ

ΧΕΔΙΑΜΟ ΠΡΟΪΟΝΣΩΝ ΜΕ Η/Τ

ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΠΑΡΑΓΩΓΗ E ΕΞΑΜΗΝΟ. ΔΙΔΑΚΩΝ: ΔΡ. ΝΙΚΟΛΑΟ ΡΑΧΑΝΙΩΣΗ ΓΡΑΦΕΙΟ: 312 ΣΗΛ.:

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

Διαδικασία Δημιοσργίας Ειδικών Λογαριασμών. (v.1.0.7)

Ελλθνικι Δθμοκρατία Σεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Ψθφιακά Ηλεκτρονικά. Ενότθτα 10 : Καταχωρθτζσ Φϊτιοσ Βαρτηιϊτθσ

Ειδικά Θζματα Βάςεων Δεδομζνων

Αςφάλεια και Προςταςία Δεδομζνων

Transcript:

Σ Ε Χ Ν Ο Λ Ο Γ Ι Κ Ο Ε Κ Π Α Ι Ε Τ Σ Ι Κ Ο Ι Ρ Τ Μ Α Ε Ρ Ρ Ω Ν Χ Ο Λ Η Σ Ε Χ Ν Ο Λ Ο Γ Ι Κ Ω Ν Ε Φ Α Ρ Μ Ο Γ Ω Ν Σ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η & Ε Π Ι Κ Ο Ι Ν Ω Ν Ι Ω Ν χεδιαςμόσ και υλοποίθςθ ςυςτιματοσ ςε προγραμματιηόμενθ ψθφίδα (System-on-a-chip) µε βάςθ τον επεξεργαςτι Nios II Πτυχιακι Εργαςία του Δωρόπουλου ταφρου (1713) Επιβλζπων: Δρ. Ι.Καλόμοιροσ, Επίκουροσ Κακθγθτισ ΕΡΡΕ, ΙΟΤΝΙΟ 2013

Βεβαιϊνω ότι είμαι ςυγγραφζασ αυτισ τθσ πτυχιακισ εργαςίασ και ότι κάκε βοικεια τθν οποία είχα για τθν προετοιμαςία τθσ, είναι πλιρωσ αναγνωριςμζνθ και αναφζρεται ςτθν πτυχιακι εργαςία. Επίςθσ ζχω αναφζρει τισ όποιεσ πθγζσ από τισ οποίεσ ζκανα χριςθ δεδομζνων, ιδεϊν ι λζξεων, είτε αυτζσ αναφζρονται ακριβϊσ είτε παραφραςμζνεσ. Επίςθσ βεβαιϊνω ότι αυτι θ πτυχιακι εργαςία προετοιμάςτθκε από εμζνα προςωπικά ειδικά για τισ απαιτιςεισ του προγράμματοσ ςπουδϊν του Σμιματοσ Πλθροφορικισ & Επικοινωνιϊν του Σ.Ε.Ι. ερρϊν. 2/110

ΠΕΡΙΛΗΨΗ κοπόσ αυτισ τθσ πτυχιακισ είναι θ αποτφπωςθ διακριτϊν, εφκολα επαναλαμβανόμενων οδθγιϊν για τθν υλοποίθςθ ενςωματωμζνου ςυςτιματοσ ςε προγραμματιηόμενθ ψθφίδα με χριςθ του software επεξεργαςτι Nios II τθσ Altera, για τθν επικοινωνία αυτοφ μζςω ςειριακισ κφρασ και του προγραμματιςμοφ του. Εξερευνικθκαν οι μεκοδολογίεσ ςχεδιαςμοφ υλικοφ (Quartus II, SoPC Builder, Qsys) και λογιςμικοφ (Nios IDE, Nios II SBT for Eclipse) και το πωσ αυτζσ με μια ςυνδυαςτικι ςχεδιαςτικι προςζγγιςθ απαντοφν ςτισ ςφγχρονεσ ανάγκεσ ςχεδιαςμοφ ςυςτθμάτων. Επιτεφχκθκε θ δυνατότθτα προγραμματιςμοφ επί των περιφερειακϊν του και επικοινωνίασ αυτϊν μζςω τθσ ςειριακισ κφρασ και μιασ host εφαρμογισ ςτον υπολογιςτι (εφαρμογι που υλοποιικθκε ςε C++ με χριςθ του Qt5). Σμιματα τθσ πειραματικισ διαδικαςίασ αποτελοφν ο προγραμματιςμόσ του επεξεργαςτι Nios II, θ διαδικαςία επιλογισ περιφερειακϊν, θ ενςωμάτωςθ του ςυςτιματοσ και θ διαμόρφωςθ τθσ προγραμματιηόμενθσ ψθφίδασ απαντϊντασ ςε αρκετά ςχεδιαςτικά προβλιματα. Παρουςιάηεται ςτθ ςυνζχεια θ υλοποίθςθ εφαρμογισ ςε ανϊτερθ γλϊςςα προγραμματιςμοφ C/C++ θ οποία εκτελείται ςτον επεξεργαςτι επιτελϊντασ βαςικζσ λειτουργίεσ επί των περιφερειακϊν και αξιοποιϊντασ τθ ςειριακι επικοινωνία. Σζλοσ υλοποιικθκε Host εφαρμογι ςειριακισ επικοινωνίασ ςε C++ για τισ ανάγκεσ επικοινωνίασ με το ενςωματωμζνο ςφςτθμα. 3/110

ABSTRACT The purpose of this project was to imprint discrete, easily repeatable instructions for implementing embedded systems on a programmable chip using the Nios II software processor of Altera, as well as communicating via his serial port and create algorithms to be executed on the processor. Methodologies were explored regarding hardware design (Quartus II, SoPC Builder, Qsys) and software tools (Nios IDE, Nios II SBT for Eclipse) in order to understand how they meet the needs of modern embedded system design interdependent process. We achieved to program Nios II peripherals and communicate with them via the serial port and a host computer application (an application that was implemented in C + + using the Qt5). Parts of the experimental procedure were programming the processor Nios II, the process of selecting peripherals, system integration and configuration of the programmable chip while answering several design problems. Afterwards the implementation of applications in a higher programming language (C/C++) are introduced. These applications are executed on the processor performing basic operations on peripherals using the serial communication. Finally a host application for serial communication was implemented in C++ fulfilling the purpose of communication with the embedded system. 4/110

Πίνακασ περιεχομένων ΠΕΡΙΛΗΨΗ... 3 ABSTRACT... 4 ΕΙΑΓΩΓΗ... 9 Κεφάλαιο 1: Ενςωματωμζνα υςτιματα... 10 1.1 Ειςαγωγι ςτα Ενςωματωμζνα υςτιματα... 10 1.2 Απαιτιςεισ Ενςωματωμζνων υςτθμάτων... 12 1.3 Διαφορετικζσ προςεγγίςεισ τθσ υλοποίθςθσ Ενςωματωμζνων υςτθμάτων.. 13 1.4 Κυκλϊματα Προγραμματιηόμενθσ Λογικισ... 14 1.4.1 Πίνακεσ Πυλϊν Προγραμματιηόμενοι ςτο πεδίο (FPGA)... 15 1.5 Ενςωματωμζνα υςτιματα ςε Προγραμματιηόμενεσ Ψθφίδεσ (SoPCs)... 17 1.5.1 Οφζλθ χριςθσ SoPC... 18 1.5.2 Επεξεργαςτζσ των SoPC... 19 1.6 Περιφερειακά και Διεπαφζσ - ειριακι επικοινωνία... 24 Κεφάλαιο 2: Δομικά χαρακτθριςτικά του υπό ανάπτυξθ ςυςτιματοσ... 26 2.1 Ειςαγωγι ςτα μζρθ του ςυςτιματοσ... 26 2.2 Επεξεργαςτισ Nios II... 26 2.2.1 Ειςαγωγι ςτον Nios II... 26 2.2.2 Περιγραφι χαρακτθριςτικϊν του Nios II... 28 2.3 Η αναπτυξιακι πλακζτα DE2 τθσ Altera... 32 Κεφάλαιο 3: Μεκοδολογίεσ και Εργαλεία χεδίαςθσ SoPC τθσ Altera... 35 3.1 Ειςαγωγι ςτθ ςχεδίαςθ SoPC... 35 3.2 Εργαλεία χεδίαςθσ υλικοφ Ενςωματωμζνων υςτθμάτων... 37 3.2.1 Quartus II... 37 3.2.2 SoPC builder... 38 3.2.3 Qsys... 39 5/110

3.3 Εργαλεία ςχεδίαςθσ λογιςμικοφ Ενςωματωμζνων υςτθμάτων... 40 3.3.1 Nios II EDS... 40 3.3.2 Altera Monitor Program - Debug Client... 41 3.4 Ομαδοποιθμζνθ διαδικαςία ςχεδιαςμοφ SoPC... 41 Κεφάλαιο 4: Διαδικαςία ςχεδιαςμοφ και υλοποίθςθσ του υλικοφ του πειραματικοφ ςυςτιματοσ... 42 4.1 Περιγραφι του ςυςτιματοσ... 42 4.2 Quartus II... 43 4.3 SOPC Builder... 44 4.4 Ενςωμάτωςθ ςτο Quartus II... 51 4.5 υγγραφι top-level vhdl... 57 4.6 Προγραμματιςμόσ του FPGA... 61 Κεφάλαιο 5: Διαδικαςία ςχεδιαςμοφ και υλοποίθςθσ του λογιςμικοφ του ςυςτιματοσ... 62 5.1 Ειςαγωγι ςτθ πλατφόρμα Nios II Software Build Tools for Eclipse... 62 5.2 χεδίαςθ ςτθ πλατφόρμα Nios II Software Build Tools for Eclipse... 64 5.3 Τλοποίθςθ πειραματικισ εφαρμογισ ςειριακισ επικοινωνίασ και χριςθσ περιφερειακϊν.... 73 5.4 Qt 5 - Εφαρμογι Εξυπθρετθτι ειριακισ Επικοινωνίασ... 80 5.4.1 Παρουςίαςθ τθσ εφαρμογισ... 81 5.4.2 Παρουςίαςθ τθσ βιβλιοκικθσ για τθ ςειριακι επικοινωνία... 86 ΤΜΠΕΡΑΜΑΣΑ - ΕΠΙΛΟΓΟ... 89 ΑΝΑΦΟΡΕ... 90 ΒΙΒΛΙΟΓΡΑΦΙΑ... 92 ΠΑΡΑΡΣΗΜΑΣΑ... 93 6/110

Ευρετιριο Εικόνων Εικόνα 1 Αναπτυξιακι Πλακζτα DE2 τθσ Altera [12]... 32 Εικόνα 2 SoPC Components... 38 Εικόνα 3 τιγμιότυπο του SoPC Builder... 39 Εικόνα 4 Nios II EDS... 40 Εικόνα 5 Quartus II: Δθμιουργία Project 1/5... 43 Εικόνα 6 Quartus II: Δθμιουργία Project 3/5... 44 Εικόνα 7 SoPC Builder: Δθμιουργία του Project... 44 Εικόνα 8 SoPC Builder: Clocks του ςυςτιματοσ... 45 Εικόνα 9 SoPC Builder: On-Chip Memory... 45 Εικόνα 10 SoPC Builder: SDRAM Controller... 46 Εικόνα 11 SoPC Builder: Nios II Processor... 47 Εικόνα 12 SoPC Builder: JTAG UART... 47 Εικόνα 13 SoPC Builder: RS-232... 48 Εικόνα 14 SoPC Builder: Output... 49 Εικόνα 15 SoPC Builder: Μετονομαςία των LEDs... 49 Εικόνα 16 SoPC Builder: Seven Segment Displays... 49 Εικόνα 17 SoPC Builder: Ολοκλθρωμζνο φςτθμα... 50 Εικόνα 18 Quartus II: Δθμιουργία top-level αρχείου... 51 Εικόνα 19 Quartus II: Ενςωμάτωςθ των αρχείων που παριγαγε ο SOPC Builder... 51 Εικόνα 20 Quartus II: Import Assignments... 52 Εικόνα 21 Quartus II: TimeQuest Timing Analyzer Wizard... 53 Εικόνα 22 Quartus II: Χρονικι Ανάλυςθ... 53 Εικόνα 23 Quartus II: MegaWizard Plug-In Manager - ALTPLL... 54 Εικόνα 24 Quartus II: MegaWizard ALTPLL 3/10... 55 Εικόνα 25 Quartus II: MegaWizard ALTPLL 4/10... 55 Εικόνα 26 Quartus II: MegaWizard ALTPLL 6/10... 56 Εικόνα 27 Quartus II: MegaWizard ALTPLL 10/10... 56 Εικόνα 28 Quartus II: Programmer... 61 Εικόνα 29 Nios II SBT: Perspectives... 63 Εικόνα 30 Nios II SBT: Προςκικθ των Views ςτα Perspectives... 63 7/110

Εικόνα 31 Nios II SBT: Nios II Perspective... 64 Εικόνα 32 Nios II SBT: Οδθγόσ δθμιουργίασ Project από Templates... 65 Εικόνα 33 Nios II SBT: Παράκυρο του Run Configurations / Καρτζλα Project... 67 Εικόνα 34 Nios II SBT: Παράκυρο του Run Configurations / Καρτζλα Target Connection - Μθ ορατι ςυςκευι > Refresh Connections... 68 Εικόνα 35 Nios II SBT: BSP Editor... 70 Εικόνα 36 Nios II SBT: Οριςμόσ τθσ uart ωσ ςυςκευι ειςόδου/εξόδου... 70 Εικόνα 37 Nios II SBT: BSP Editor / Καρτζλα Drivers... 71 Εικόνα 38 Ρυκμίςεισ τθσ ςειριακισ επικοινωνίασ ςτθν Host εφαρμογι Tera Term.. 72 Εικόνα 39 Προβολι μθνφματοσ από τον Nios II μζςω ςειριακισ κφρασ... 72 Εικόνα 40 Nios II SBT: C2H Compiler... 79 Εικόνα 41 τιγμιότυπο Εφαρμογισ ειριακισ επικοινωνίασ... 81 Ευρετιριο Πινάκων Πίνακασ 1 φγκριςθ υλοποιιςεων SoC [5]... 17 Πίνακασ 2 υγκριςθ του Nios II και του MicroBlaze [6]... 21 Πίνακασ 3 υγκριτικι Λίςτα Soft Επεξεργαςτϊν *7+... 22 Πίνακασ 4 φγκριςθ των πυρινων Nios II... 27 Πίνακασ 5 Καταχωρθτζσ γενικοφ ςκοποφ Nios II [11]... 30 Ευρετιριο χθμάτων χιμα 1 Αρχιτεκτονικι των CPLDs και των FPGA [3]... 14 χιμα 2 Αρχιτεκτονικι των FPGA [4]... 15 χιμα 3 Παράδειγμα υλοποίθςθσ ςυςτιματοσ με τον Nios II [10]... 28 χιμα 4 Block Διάγραμμα του αναπτυξιακοφ DE2 τθσ Altera... 33 χιμα 5 Ροι χεδιαςμοφ υςτιματοσ... 35 χιμα 6 Απλουςτευμζνθ Ροι χεδιαςμοφ SoPC... 37 χιμα 7 Ομαδοποιθμζνθ διαδικαςία ςχεδιαςμοφ SoPC [5]... 41 χιμα 8 Περιγραφι του υλικοφ του πειραματικοφ ςυςτιματοσ... 42 χιμα 9 Nios II SBT: Διάγραμμα Ροισ πειραματικισ εφαρμογισ... 74 8/110

ΕΙΑΓΩΓΗ Αυτι θ πτυχιακι εργαςία κα επιχειριςει μια πλιρθ αναςκόπθςθ των τεχνολογιϊν που επιτρζπουν τθ δθμιουργία ενςωματωμζνων ςυςτθμάτων ςε προγραμματιηόμενεσ ψθφίδεσ. Για το ςκοπό αυτό υπάρχει αρχικά μια ειςαγωγι ςτα ενςωματωμζνα ςυςτιματα κακϊσ και ανάλυςθ των απαιτιςεων αυτοφ του είδουσ των κυκλωμάτων. Θα περιγραφοφν οι διαφορετικζσ προςεγγίςεισ τθσ υλοποίθςθσ ενςωματωμζνων ςυςτθμάτων και αφοφ γίνει μια ειςαγωγι ςτα κυκλϊματα Προγραμματιηόμενθσ Λογικισ και ςτουσ πίνακεσ Πυλϊν προγραμματιηόμενοι ςτο πεδίο (FPGA) κα οδθγθκοφμε ςτον οριςμό των ενςωματωμζνων ςυςτθμάτων ςε προγραμματιηόμενεσ Ψθφίδεσ (SoPCs). Αφοφ παρουςιαςτοφν και αναλυκοφν τα οφζλθ χριςθσ τουσ ζναντι των παραδοςιακϊν ςυςτθμάτων ςτθ ςυνζχεια κα ακολουκιςει μια μικρι αναςκόπθςθ τθσ εςωτερικισ τουσ δομισ και κα παρατεκεί θ κατθγοριοποίθςθ των επεξεργαςτϊν που χρθςιμοποιοφν. Μετά το κεωρθτικό υπόβακρο κα παρουςιαςτοφν τα τμιματα τθσ προσ ανάπτυξθ εφαρμογισ τθσ πτυχιακισ εργαςίασ. υγκεκριμζνα κα αναλυκοφν τα δομικά χαρακτθριςτικά του υπό ανάπτυξθ ςυςτιματοσ δθλαδι ο software επεξεργαςτισ Nios II και το αναπτυξιακό κφκλωμα DE2. τθ ςυνζχεια αναφζρονται οι μεκοδολογίεσ και τα εργαλεία ςχεδίαςθσ SoPC ξεκινϊντασ από μια ειςαγωγι ςτθ ςχεδίαςθ SoPC και ςτα εργαλεία ςχεδίαςθσ υλικοφ ενςωματωμζνων ςυςτθμάτων και φτάνοντασ ςτα εργαλεία τθσ Altera που χρθςιμοποιικθκαν ςε επίπεδο υλικοφ (Quartus II, SoPC builder, Qsys) αλλά και ςε επίπεδο ςχεδίαςθσ λογιςμικοφ (Nios II EDS). Μετά τθ ςφνδεςθ των όςων αναφζρονται ακολουκεί θ διαδικαςία ςχεδιαςμοφ και υλοποίθςθσ του υλικοφ του πειραματικοφ ςυςτιματοσ αλλά και θ διαδικαςία ςχεδιαςμοφ και υλοποίθςθσ του λογιςμικοφ του εξειδικευμζνου ςυςτιματοσ. Αναλφονται τα βαςικά ςτάδια ςε κάκε μια από αυτζσ τισ φάςεισ ςχεδίαςθσ. Σζλοσ παρουςιάηεται μια εφαρμογι ςειριακισ επικοινωνίασ και θ ςφνδεςθ τθσ με το ολοκλθρωμζνο ςφςτθμα που δθμιουργικθκε. 9/110

Κεφάλαιο 1: Ενςωματωμένα υςτήματα 1.1 Ειςαγωγή ςτα Ενςωματωμένα υςτήματα Ο ςτόχοσ τθσ δθμιουργίασ ψθφιακϊν ςυςτθμάτων είναι θ υλοποίθςθ αποδοτικϊν κυκλωμάτων με μικρι κατανάλωςθ ενζργειασ, ελαχιςτοποιθμζνο χρόνο ςχεδίαςθσ και υψθλι απόδοςθ. Σα ενςωματωμζνα ςυςτιματα είναι υπολογιςτικά ςυςτιματα ειδικοφ ςκοποφ. Βρίςκονται ενςωματωμζνα ςε ςυςκευζσ και μποροφν να περιζχουν μζρθ υλικοφ και προγραμματιηόμενα ςτοιχεία, που ςε ςυνδυαςμό με περιφερειακά, υποςτθρίηουν κακοριςμζνεσ λειτουργίεσ. Είναι ςχεδιαςμζνα για να υλοποιοφν μεταξφ άλλων φυςικζσ διαδικαςίεσ με ιδιαίτερα χαμθλό κόςτοσ και κακοριςμζνθ ταχφτθτα επεξεργαςίασ. Ζχουν ςυνικωσ απλοφςτερθ ςχεδίαςθ ςε ςχζςθ με τα ςυςτιματα γενικοφ ςκοποφ, και αυτό τουσ επιτρζπει να ζχουν μικρότερο κόςτοσ. Παρά τθ μικρότερθ υπολογιςτικι ιςχφ και τουσ περιοριςμζνουσ πόρουσ, ςυχνά ανταποκρίνονται ςε απαιτιςεισ πραγματικοφ χρόνου και επιτελοφν τισ λειτουργίεσ τουσ διαρκϊσ, χωρίσ ςφάλματα. Η πολυπλοκότθτά τουσ αυξάνεται όταν εξυπθρετοφν ςκοποφσ εξελιγμζνων ςυςτθμάτων ι είναι μζροσ μεγάλων καταςκευϊν, ενςωματϊνοντασ πολλαπλά ψθφιακά μζρθ, αναλογικά ςτοιχεία και ενςωματωμζνο λογιςμικό. Για τισ ανάγκεσ διαςφνδεςθσ τα ενςωματωμζνα ςυςτιματα χρθςιμοποιοφν διατάξεισ ςειριακισ, παράλλθλθσ και αςφρματθσ επικοινωνίασ. Η ςειριακι επικοινωνία κυρίωσ λόγω του χαμθλοφ κόςτουσ και τθσ απλότθτασ ςχεδίαςθσ κυριαρχεί ακόμα και ςιμερα ςτο χϊρο των ενςωματωμζνων ςυςτθμάτων. Οι ειδικζσ λειτουργίεσ των ενςωματωμζνων ςυςτθμάτων υποςτθρίηονται από ςυςτιματα χρονιςμοφ, απαρικμθτζσ, LCD διαςυνδζςεισ, διεπαφζσ USB, Ethernet και πολλαπλά αναλογικά ςτοιχεία όπωσ αιςκθτιρεσ (φωτόσ, ιχου, κίνθςθσ, πίεςθσ). 10/110

Η φφςθ των ενςωματωμζνων ςυςτθμάτων επιβάλει τον διεξοδικό ζλεγχο τθσ λειτουργίασ τουσ πριν τθ παραγωγι και τθν χριςθ τουσ ςε πραγματικζσ ςυνκικεσ. ε αρκετζσ περιπτϊςεισ μετά τθν τοποκζτθςθ τουσ δεν μποροφν να είναι προςβάςιμα από άνκρωπο και άρα είναι αναγκαίο να υπάρχουν μθχανιςμοί αυτοδιόρκωςθσ. Σα ιδιαίτερα αυτά χαρακτθριςτικά τα διαφοροποιοφν από τα ςυςτιματα γενικοφ ςκοποφ. Οι εφαρμογζσ των ενςωματωμζνων ςυςτθμάτων εκτείνονται ςε βιομθχανικοφσ κλάδουσ όπωσ αυτοκινθτοβιομθχανία, αεροδιαςτθμικι, ςε μθχανολογικό, θλεκτρολογικό, τθλεπικοινωνιακό, ιατρικό εξοπλιςμό, ςε ςυςτιματα ςυλλογισ δεδομζνων, ρομποτικά ςυςτιματα, αλλά και ςε πολυμεςικζσ εφαρμογζσ, τεχνθτισ νοθμοςφνθσ και μθχανικισ όραςθσ. Θα μποροφςε να ειπωκεί πωσ ςχεδόν κάκε πτυχι του ςφγχρονου κόςμου χρθςιμοποιεί ςτθν τεχνολογικι τθσ υλοποίθςθ ενςωματωμζνα ςυςτιματα για τθν επίτευξθ εξειδικευμζνων λειτουργιϊν. Λόγω του τεράςτιου εφρουσ τθσ χριςθσ των ενςωματωμζνων ςυςτθμάτων υπάρχουν μόνο εκτιμιςεισ τθσ εξάπλωςθσ τουσ ςτθ παγκόςμια αγορά που κυμαίνονται από 60 ωσ 138δισ ευρϊ [1]. 11/110

1.2 Απαιτήςεισ Ενςωματωμένων υςτημάτων Όπωσ περιγράφθκε οι απαιτιςεισ των ενςωματωμζνων ςυςτθμάτων μποροφν να περιλαμβάνουν δυνατότθτα επεξεργαςίασ πραγματικοφ χρόνου χωρίσ ςφάλματα αλλά και εξιςορρόπθςθ μεταξφ κόςτουσ και επιδόςεων με ςτακερό παράγοντα τθ χαμθλι κατανάλωςθ και τθν υψθλι αξιοπιςτία. ε αρκετζσ εφαρμογζσ ενςωματωμζνων ςυςτθμάτων είναι απαραίτθτθ θ, ςυνικωσ χρονικά και ποςοτικά κακοριςμζνθ, αλλθλεπίδραςθ με το περιβάλλον. Οι χρονικοί περιοριςμοί δανειηόμενοι τισ απαιτιςεισ των ςυςτθμάτων πραγματικοφ χρόνου διακρίνονται ςε αυςτθροφσ και χαλαροφσ ανάλογα με τθ διατιρθςθ τθσ χρθςιμότθτασ του ςυςτιματοσ όταν δε καταφζρνει να ανταποκρικεί ςε προκεςμίεσ. Σα ςφγχρονα καταναλωτικά αγακά όπωσ κινθτά, μζςα πολυμεςικισ καταγραφισ, υπολογιςτζσ χειρόσ και πάςθσ φφςθσ ςφγχρονθσ ςυςκευισ ειδικοφ ςκοποφ, απαιτοφν μικρό μζγεκοσ με υψθλι ολοκλιρωςθ και μικρό βάροσ. Τλοποιοφνται ϊςτε να ζχουν τθ μικρότερθ δυνατι κατανάλωςθ και να αποφζρουν το μεγαλφτερο δυνατό κζρδοσ ςτον καταςκευαςτι λόγο χαμθλοφ κόςτουσ καταςκευισ. Κακϊσ ηοφμε ςε μια εποχι εκκετικισ τεχνολογικισ ανάπτυξθσ οι απαιτιςεισ τθσ αγοράσ ςυνδζονται άμεςα με τθν επιςτθμονικι ζρευνα ςτον τομζα των ενςωματωμζνων ςυςτθμάτων. υμπεραςματικά θ πολυπλοκότθτα τουσ απαιτεί τεχνικζσ, μεκοδολογίεσ και εργαλεία ςχεδιαςμοφ που αυτοματοποιοφν και διευκολφνουν διαδικαςίεσ ελζγχου και προτυποποίθςθσ. Οι οικονομικζσ και τεχνολογικζσ αυτζσ επιταγζσ οδιγθςαν ςτθ νζα εποχι ςχεδιαςμοφ ενςωματωμζνων ςυςτθμάτων που ςυνδυάηει το ςχεδιαςμό υλικοφ και λογιςμικοφ ςε πλατφόρμεσ που ενςωματϊνουν και παραλλθλοποιοφν τθ διαδικαςία υλοποίθςθσ. Η μείωςθ του κόςτουσ παραγωγισ προζρχεται από τθ δυνατότθτα επαναχρθςιμοποίθςθσ τμθμάτων κϊδικα υλικοφ και λογιςμικοφ για τθ δθμιουργία ετερογενϊν ςυςτθμάτων εκτεταμζνων λειτουργιϊν. Η εν λόγω ετερογζνεια αυξάνει τθν πολυπλοκότθτα υλοποίθςθσ και τθν ανάγκθ υιοκζτθςθσ προθγμζνων διαδικαςιϊν επαλικευςθσ και μεκοδολογιϊν ανάπτυξθσ. 12/110

1.3 Διαφορετικέσ προςεγγίςεισ τησ υλοποίηςησ Ενςωματωμένων υςτημάτων Σα ενςωματωμζνα ςυςτιματα μποροφν να υλοποιιςουν τισ λειτουργίεσ τουσ με ζνα μεγάλο εφροσ τεχνολογιϊν όπωσ μικροελεγκτζσ, μικροεπεξεργαςτζσ, ψθφιακοφσ επεξεργαςτζσ ςιματοσ, διαμορφοφμενεσ διατάξεισ και εξειδικευμζνα ASICs (Application Specific Integrated Circuit). Σο λογιςμικό που εμπεριζχεται κυμαίνεται από προγράμματα εφαρμογϊν ζωσ οδθγοφσ περιφερειακϊν και λειτουργικά ςυςτιματα (ειδικοφ ςκοποφ και ςυνικωσ πραγματικοφ χρόνου RTOS). Σα κυκλϊματα ειδικοφ ςκοποφ (ASICs) παρά τθν υψθλι απόδοςθ και τθ χαμθλι κατανάλωςθ ζχουν ιδιαίτερα υψθλό κόςτοσ. Σο κόςτοσ αυτό αφορά τόςο τθ διαδικαςία παραγωγισ αλλά και αυτι του ςχεδιαςμοφ κακϊσ τα περικϊρια για λανκαςμζνο ςχεδιαςμό είναι μθδαμινά. Εναλλακτικι λφςθ με ζμφαςθ ςτο μικρότερο κόςτοσ ανάπτυξθσ και τθν δυνατότθτα αναπροςαρμογισ ςτισ ανάγκεσ δίνουν οι προγραμματιηόμενεσ διατάξεισ. Οι απαιτιςεισ που περιγράφθκαν οδιγθςαν ςτθν υλοποίθςθ των SoC (system-on-achip) με τθ χριςθ επαναχρθςιμοποιοφμενων ςτοιχείων (IPs Intellectual Property blocks). Σα IPs είναι blocks υλικοφ των οποίων θ λειτουργία ζχει εκτενϊσ επαλθκευτεί, χρθςιμοποιοφνται ταυτόχρονα ςε πολλαπλά ςχζδια ανά τον κόςμο και καλφπτουν ανάγκεσ υλικοφ. Σα εν λόγω blocks υλικοφ περιγράφουν ςτοιχεία όπωσ διεπαφζσ διαςφνδεςθσ, μνιμεσ, επεξεργαςτζσ, ςτοιχεία δικτφωςθσ, μεταςχθματιςμοφ δεδομζνων και πλικοσ άλλων περιφερειακϊν. Η υλοποίθςθ SoC ςε προγραμματιηόμενα ςτοιχεία είναι μια βζλτιςτθ λφςθ ωσ προσ τισ οικονομικζσ, χρονικζσ και ςχεδιαςτικζσ απαιτιςεισ των εξειδικευμζνων ςυςτθμάτων. τα πλαίςια αυτισ τθσ πτυχιακισ κα μασ απαςχολιςει θ δθμιουργία ενςωματωμζνου ςυςτιματοσ με τθ διαμόρφωςθ προγραμματιηόμενθσ ψθφίδασ 13/110

ϊςτε να περιλαμβάνει των επεξεργαςτι Nios II και πλικοσ περιφερειακϊν με τθ χριςθ των IP (Intellectual Properties) πακζτων τθσ Altera. 1.4 Κυκλώματα Προγραμματιζόμενησ Λογικήσ Οι προγραμματιηόμενεσ λογικζσ διατάξεισ είναι λογικά κυκλϊματα που εμφανίςτθκαν τθ δεκαετία του εβδομιντα και ονομάηονται PLDs (Programmable Logic Devices). Με διαμόρφωςθ από τον χριςτθ τθσ εςωτερικισ διαςφνδεςθσ των πινάκων τουσ, υλοποιοφςαν ςυγκεκριμζνεσ ςυναρτιςεισ ϊςτε να εκφράηουν οποιαδιποτε ψθφιακι λειτουργία ιταν επικυμθτι [2]. Μεγαλφτερα ςυςτιματα καταςκευάηονται με τα Complex Programmable Logic Devices (CPLDs) που περιζχουν ζνα ςφνολο από PLDs διαςυνδεμζνα μεταξφ τουσ. Σα CPLDs προγραμματίηονται τόςο ςτο επίπεδου του κάκε block PLD, όςο και ςτο επίπεδο τθσ μεταξφ τουσ διαςφνδεςθσ. Μια διαφορετικι προςζγγιςθ τθσ ανάγκθσ ςχεδιαςμοφ προγραμματιηόμενων ςυςτθμάτων υλοποιοφν οι Πίνακεσ Πυλϊν Προγραμματιηόμενοι ςτο πεδίο, τα λεγόμενα FPGA (Field Programmable Gate Arrays). Η αρχιτεκτονικι τουσ [χιμα 1] διαφζρει ωσ προσ τα CPLDs κακϊσ δεν περιζχουν πίνακεσ AND,OR αλλά διαμορφοφμενα λογικά ςτοιχεία, πίνακα διαςυνδζςεων και blocks ειςόδου/εξόδου. χιμα 1 Αρχιτεκτονικι των CPLDs και των FPGA [3] 14/110

1.4.1 Πίνακεσ Πυλών Προγραμματιζόμενοι ςτο πεδίο (FPGA) H αρχιτεκτονικι των FPGA εμπεριζχει λογικά blocks, blocks ειςόδου εξόδου και κανάλια διαςφνδεςθσ. Σα λογικά blocks αποτελοφνται από Look Up Tables, ςτοιχεία μνιμθσ και ειδικά ςυςτιματα αρικμθτικισ υποςτιριξθσ *4+. Ενςωματϊνονται ςε μια κάλαςςα καναλιϊν διαςφνδεςθσ με προγραμματιηόμενουσ διακόπτεσ ϊςτε να υλοποιοφν τθν επικυμθτι λογικι *χιμα 2]. Σα FPGA ζχουν αυξθμζνεσ επιδόςεισ και μζγεκοσ αποτφπωςθσ ψθφιακισ λογικισ. Ενεργό πεδίο ζρευνασ αποτελεί θ καλφτερθ κατανάλωςθ ενζργειασ, οι μικρότερεσ χρονικζσ κακυςτεριςεισ, και το κόςτοσ. Σο υψθλά αφαιρετικό επίπεδο που επιτρζπουν τα ςφγχρονα περιβάλλοντα ςχεδίαςθσ των FPGA είναι ςθμαντικόσ παράγοντασ του γριγορου ςχεδιαςμοφ ολοκλθρωμζνων ςυςτθμάτων. Μεγάλο ερευνθτικό ενδιαφζρον παρουςιάηει και θ βελτιςτοποίθςθ του χρόνου προγραμματιςμοφ των διατάξεων ϊςτε να αντιπροςωπεφουν νζεσ λειτουργίεσ. Για το ςκοπό αυτό υπάρχουν λφςεισ που περιλαμβάνουν τθ δθμιουργία αρκρωτϊν τμθμάτων (modular design) με ςκοπό τθν επαναχρθςιμοποίθςθ τουσ και τθν αποτφπωςθ διαφορετικϊν λογικϊν επιτρζποντασ τθ δυναμικι εναλλαγι ανάμεςα ςε αυτζσ (content switching) [4]. χιμα 2 Αρχιτεκτονικι των FPGA [4] 15/110

Διαφορά των FPGA με τα CPLD είναι και ο τρόποσ προγραμματιςμοφ τουσ. τα FPGA ο προγραμματιςμόσ τουσ βαςίηεται ςε μνιμεσ SRAM και όχι ςε τθκόμενεσ ςυνδζςεισ. το παρελκόν τα FPGA είχαν μεγαλφτερεσ απαιτιςεισ ςε ενζργεια ςε ςχζςθ με τα αντίςτοιχεσ υλοποιιςεισ ςε ASICs και μικρότερεσ αποδόςεισ. Η εξζλιξθ των τεχνολογιϊν που τα ςυνοδεφει ζχει εκμθδενίςει αυτζσ τισ διαφορζσ ενϊ ζχει αναδειχκεί θ αξία του επαναπρογραμματιςμοφ και του γριγορου ςχεδιαςμοφ. Σα ςφγχρονα FPGA ενςωματϊνουν ςτισ αναπτυξιακζσ τουσ πλατφόρμεσ περιφερειακά, μνιμεσ, ενςωματωμζνουσ επεξεργαςτζσ και άλλα κυκλϊματα ειδικοφ ςκοποφ. Επιτυγχάνεται ζτςι θ αφξθςθ των δυνατοτιτων τουσ δθμιουργϊντασ υβριδικά ςυςτιματα που ςυνδυάηουν τθ χριςθ υλικοφ με επαναπρογραμματιηόμενα ςτοιχεία. Για τον προγραμματιςμό των FPGA γίνεται χριςθ των γλωςςϊν περιγραφισ υλικοφ HDL (Hardware Description Language) ι ςχθματικι περιγραφι του ςυςτιματοσ. Οι γλϊςςεσ περιγραφισ υλικοφ που χρθςιμοποιοφνται είναι θ VHDL και θ Verilog παρζχοντασ ζνα αφαιρετικό επίπεδο ςτον ςχεδιαςτι του ςυςτιματοσ Δίνουν τθ δυνατότθτα υλοποίθςθσ των ολοκλθρωμζνων κυκλωμάτων με περιγραφι τθσ επικυμθτισ λογικισ και χρονικισ ςυμπεριφοράσ και αρχιτεκτονικισ τουσ. Οι εταιρίεσ που κυριαρχοφν ςτον χϊρο των FPGA είναι θ Altera και θ Xilinx με τισ αντίςτοιχεσ οικογζνειεσ FPGA FLEX και XC. τα πλαίςια τθσ πτυχιακισ εργαςίασ κα χρθςιμοποιθκεί θ αναπτυξιακι πλακζτα DE2 τθσ οικογζνειασ Cyclone II τθσ Altera. 16/110

1.5 Ενςωματωμένα υςτήματα ςε Προγραμματιζόμενεσ Ψηφίδεσ (SoPCs) Ο ςχεδιαςμόσ των παραδοςιακϊν system-on-a-chip απαιτεί τθν υλοποίθςθ ι τθ χριςθ ολοκλθρωμζνων κυκλωμάτων ειδικοφ ςκοποφ. Αυτόσ ο τρόποσ υλοποίθςθσ ζχει μεγάλο κόςτοσ, απαγορευτικό για οικονομικά περιοριςμζνα ζργα ι είναι ανεπαρκισ, λόγω τθσ ςτατικισ του φφςθσ, για ζργα με δυναμικό εφροσ απαιτιςεων υλικοφ. Μια εναλλακτικι ςχεδίαςθ system-on-a-chip επιτρζπει τθ χριςθ FPGA που περιζχουν λογικά ςτοιχεία και μνιμθ, ςε ςυνδυαςμό με επεξεργαςτζσ λογιςμικοφ (IP) και άλλα περιφερειακά, για τθ γριγορθ και ευζλικτθ δθμιουργία ενςωματωμζνων ςυςτθμάτων που ονομάηονται SoPC (system-on-a-programmablechip). Ο παρακάτω πίνακασ [Πίνακασ 1] παρουςιάηει τθ ςφγκριςθ των SoPC, ASIC και Fixed-Processor υλοποιιςεων ωσ προσ τθν ευελιξία υλικοφ, λογιςμικοφ, δυνατότθτα επαναπρογραμματιςμοφ, κόςτοσ χρόνου ςχεδίαςθσ, κόςτοσ περιφερειακϊν, απόδοςθ, κόςτοσ παραγωγισ και κατανάλωςθσ. Πίνακασ 1 φγκριςθ υλοποιιςεων SoC [5] 17/110

Αδιαμφιςβιτθτα οι ςθμαντικότεροι παράγοντεσ ςτθ δθμιουργία υλικοφ είναι θ απόδοςθ, θ κατανάλωςθ και το κόςτοσ παραγωγισ. Λόγω τθσ εκκετικισ τεχνολογικισ εξζλιξθσ των μζςων υλοποίθςθσ SoC οι διαφορζσ τείνουν να ιςορροπθκοφν με κφρια διαφοροποίθςθ να παραμζνει θ δυνατότθτα ι μθ επαναπρογραμματιςμοφ. Κάποιεσ από τισ κατατάξεισ του παραπάνω πίνακα [Πίνακασ 1+ δεν είναι πλζον αντιπροςωπευτικζσ των ςφγχρονων ολοκλθρωμζνων που ανικουν ςε αυτζσ τισ κατθγορίεσ, επιβεβαιϊνοντασ ζτςι τθν αλματϊδθ ανάπτυξθ και ςθμαντικι ζρευνα που υφίςταται ςτον τομζα των ενςωματωμζνων ςυςτθμάτων. Σα νεότερα ASICs προςπακοφν να ενςωματϊςουν πυρινεσ FPGA ςτον ςχεδιαςμό τουσ για να υποςτθρίξουν λειτουργίεσ δυναμικοφ επαναπρογραμματιςμοφ. Αντίςτοιχα τα FPGA ζχουν κάνει αλματϊδθ πρόοδο ςτο τομζα τθσ απόδοςθσ και τθσ κατανάλωςθσ ενζργειασ. Παραςκευάηονται επίςθσ υβριδικζσ πλατφόρμεσ που ζχουν ενςωματωμζνο υλικό όπωσ μικροεπεξεργαςτζσ αλλά και προγραμματιηόμενα λογικά ςτοιχεία. 1.5.1 Οφέλη χρήςησ SoPC Σο κφριο όφελοσ τθσ χριςθσ των SoPCs είναι θ δυνατότθτα επαναπρογραμματιςμοφ του υλικοφ. Η ευζλικτθ διαδικαςία ςχεδιαςμοφ τουσ επιτρζπει τθν δυναμικι επιλογι χαρακτθριςτικϊν και τθν εφκολθ αλλαγι τουσ ςε οποιοδιποτε ςτάδιο του κφκλου ςχεδίαςθσ. Παραδείγματα τζτοιων αλλαγϊν κα μποροφςε να είναι θ χριςθ περιφερειακϊν των οποίων θ ανάγκθ εμφανίςτθκε ςε διαφορετικι χρονικι ςτιγμι από αυτι του αρχικοφ ςχεδιαςμοφ, όπωσ αλλαγζσ ςτα πρωτόκολλα επικοινωνίασ και ςτισ διεπαφζσ διαςφνδεςθσ. τα παραδοςιακά SoC τζτοιου είδουσ αλλαγζσ μπορεί να ςιμαιναν τθν εξολοκλιρου διαφοροποίθςθ του υλικοφ που ζπρεπε να χρθςιμοποιθκεί, όπωσ θ επιλογι μικροεπεξεργαςτι, με αποτζλεςμα τθν μεγάλθ κακυςτζρθςθ ςτο χρονοδιάγραμμα ςχεδιαςμοφ ι και τθν εξολοκλιρου αδυναμία υποςτιριξθσ των νζων απαιτιςεων. 18/110

Η δυνατότθτα επαναπρογραμματιςμοφ του υλικοφ προεκτείνει τον εν δυνάμει χρόνο ηωισ του ςυςτιματοσ μετά τθν παραγωγι του και επιτρζπει τθ γριγορθ διαφοροποίθςθ του για τθν κάλυψθ παραμετροποιθμζνων αναγκϊν. Ζνα μεγάλο όφελοσ των SoPC είναι θ δυνατότθτα προγραμματιςμοφ του υλικοφ ϊςτε να επιτελεί ρουτίνεσ λογιςμικοφ επαναλαμβανόμενων διεργαςιϊν. Σο τελικό ςφςτθμα επωφελείται από τθν μεγαλφτερθ απόδοςθ ταχφτθτασ τθσ υλοποίθςθσ αυτϊν των ςυναρτιςεων ςε γλϊςςα υλικοφ κακϊσ οι ςυναρτιςεισ μεταφράηονται από γλϊςςεσ προγραμματιςμοφ λογιςμικοφ (π.χ. C) ςε υποςυςτιματα υλικοφ. τθ ςυνζχεια αυτά τα υποςυςτιματα ενςωματϊνονται ςτον ςχεδιαςμό του υλικοφ και προγραμματίηεται το FPGA. Σζλοσ γίνεται χριςθ wrapper ςυναρτιςεων που χρθςιμοποιοφν των επιταχυντι υλικοφ που ζχει δθμιουργθκεί (hardware accelerator) με δυνατότθτεσ παράλλθλθσ επεξεργαςίασ αν οι εξαρτιςεισ δεδομζνων το επιτρζπουν. 1.5.2 Επεξεργαςτέσ των SoPC Σα SoPC χρθςιμοποιοφν FPGA που υποςτθρίηουν τθν φπαρξθ πυρινων επεξεργαςτϊν που χαρακτθρίηονται ωσ "soft" ι ωσ "hard" επεξεργαςτζσ και κατθγοριοποιοφνται ζτςι ωσ προσ τθ δυνατότθτα παραμετροποίθςθσ, επαναπρογραμματιςμοφ αλλά και του τρόπου υλοποίθςθσ αυτϊν. Hard πυρινεσ επεξεργαςτϊν Οι "hard" επεξεργαςτζσ είναι VLSI κυκλϊματα που ενςωματϊνονται ςτα FPGA και δεν ζχουν μεγάλεσ δυνατότθτεσ παραμετροποίθςθσ. Για τθν υλοποίθςθσ τουσ δε χρθςιμοποιοφν τα λογικά ςτοιχεία του FPGA αλλά υπάρχουν ωσ αυτόνομα κυκλϊματα που ςυνδζονται με το FPGA. Αυτι θ κατθγορία επεξεργαςτϊν μπορεί να επιτφχει μεγαλφτερεσ ταχφτθτεσ επεξεργαςίασ αλλά δεν επιτρζπει τθν παραμετροποίθςθ τουσ ϊςτε να υποςτθρίηουν ςυγκεκριμζνεσ απαιτιςεισ. τα ςφγχρονα ςυςτιματα γίνεται χριςθ των hardware επεξεργαςτϊν ςε ςυνδυαςμό με 19/110

soft επεξεργαςτζσ ςτο ίδιο FPGA ϊςτε να επιτφχουμε υβριδικά ςυςτιματα υψθλϊν προδιαγραφϊν ευελιξίασ και αποδόςεων. Soft πυρινεσ επεξεργαςτϊν Οι "soft" πυρινεσ επεξεργαςτϊν υλοποιοφνται με τθν χριςθ επαναχρθςιμοποιιςιμων υποςυςτθμάτων block υλικοφ (IP cores) που περιγράφονται ςε γλϊςςεσ περιγραφισ υλικοφ (HDL), ενςωματϊνονται ςτο ςφςτθμα και χρθςιμοποιοφν τα λογικά ςτοιχεία του FPGA. Ζχουν μικρότερεσ αποδόςεισ ςε ςχζςθ με τουσ "hard" επεξεργαςτζσ αλλά τρομερά αυξθμζνθ δυνατότθτα παραμετροποίθςθσ. Επιτρζπουν τθν ρφκμιςθ τουσ ϊςτε να βελτιςτοποιοφνται ωσ προσ τθν εξειδικευμζνθ λειτουργία που επικυμοφμε. Δίνουν δυνατότθτεσ όπωσ custom instructions με προςκικθ προςαρμοςμζνων εντολϊν ςτον επεξεργαςτι κακϊσ και τθ δυνατότθτα ςυνφπαρξθσ πολλϊν πυρινων ςτο ίδιο FPGA όςο το επιτρζπει θ κατανάλωςθ ςε λογιςτικά ςτοιχεία. ε πολλζσ περιπτϊςεισ υπάρχουν διαφορετικζσ εκδόςεισ για τον ίδιο επεξεργαςτι με διαφοροποιθμζνεσ απαιτιςεισ κατανάλωςθσ ςε λογικά ςτοιχεία και αντίςτοιχο εφροσ λειτουργιϊν. τα ςυςτιματα με πολλαπλοφσ soft επεξεργαςτζσ τα περιφερειακά προςπελάηονται από πολλαπλοφσ επεξεργαςτζσ με κόςτοσ όμωσ ςτθν απόδοςθ που αντιςτακμίηεται από τθ χριςθ των custom instructions. Οι επαναπρογραμματιηόμενοι επεξεργαςτζσ υπόκεινται ςτθν ζννοια του Virtual hardware κατά το οποίο οι εφαρμογζσ κεωροφν ότι τρζχουν ςε υλικό βελτιςτοποιθμζνο για αυτζσ. Αυτζσ οι τεχνολογίεσ ζχουν επιδείξει μεγάλθ ευελιξία και καλζσ αποδϊςεισ με ςκοπό να αντικαταςτιςουν τισ παραδοςιακζσ λφςεισ για τα πολφ απαιτθτικά προβλιματα [4]. Οι ανάγκεσ των ενςωματωμζνων ςυςτθμάτων ακολουκοφν τθν πορεία που είχε θ διάχυςθ τθσ επεξεργαςίασ των δεδομζνων ςε cloud based ςυςτιματα για εφαρμογζσ πλθροφορικισ κακϊσ, αν και ςε εμφανϊσ μικρότερθ κλίμακα, οι ανάγκεσ παραλλθλοποίθςθσ και εξατομίκευςθσ του ςυςτιματοσ επεξεργαςίασ είναι παρόμοιασ λογικισ. 20/110

Παραδείγματα "soft" επεξεργαςτϊν αποτελοφν ο Nios II τθσ Altera και ο MicroBlaze τθσ Xilinx που αποτελοφν τουσ πλζον διαδεδομζνουσ κακϊσ είναι ευζλικτοι και ζχουν ευκολότερθ διαδικαςία ενςωμάτωςθσ [Πίνακασ 2]. Πίνακασ 2 υγκριςθ του Nios II και του MicroBlaze [6] Οι επεξεργαςτζσ τθσ Xilinx ζχουν μεγαλφτερθ απιχθςθ ςτθ ςυςτιματα πολλαπλϊν επεξεργαςτϊν SoC, τα λεγόμενα Multiprocessor Systems-on-Chip (MPSoC) [7]. Σα MPSoC είναι μια νζα αναδυόμενθ τεχνολογία των soft επεξεργαςτϊν που επιτρζπει τθν τοποκζτθςθ ςτο ίδιο FPGA πολλαπλϊν επεξεργαςτϊν. Σα οφζλθ εμπερικλείουν αυτά των κλαςςικϊν SoPC αλλά προεκτείνονται και ςτο επίπεδο τθσ επεκταςιμότθτασ, κακϊσ ο μόνοσ περιοριςμόσ ςτον αρικμό των επεξεργαςτϊν είναι τα διακζςιμα λογικά ςτοιχεία τθσ προγραμματιηόμενθσ ψθφίδασ. Οι τρεισ τρόποι υλοποίθςθσ τζτοιων ςυςτθμάτων είναι με βάςθ τθ λογικι master-slave όπου ζνασ επεξεργαςτισ λειτουργεί ωσ ςυντονιςτισ, με pipelines διαδοχικισ επεξεργαςίασ και θ δθμιουργία ομογενοφσ ςυςτιματοσ δικτφου επεξεργαςτϊν ίδιασ ιεραρχίασ. Εκτόσ από τουσ επεξεργαςτζσ ιδιοκτθςίασ εταιριϊν υπάρχουν και Open Source επεξεργαςτζσ όπωσ φαίνεται ςτον παρακάτω ςυγκεντρωτικό πίνακα *Πίνακασ 3]. 21/110

Πίνακασ 3 υγκριτικι Λίςτα Soft Επεξεργαςτϊν [7] Πσρήνας Αρτιηεκηονική Bits Άδεια τρήζης Pipeline depth Cycles per instruction Area (LEs) S1 Core SPARC-v9 64 Opensource (GPL) 6 1 37000-60000 LEON3 SPARC-v8 32 LEON2 SPARC-v8 32 Opensource (GPL) Opensource (LGPL) 7 1 3500 5 1 5000 OpenRISC 1200 OpenRISC 1000 32 Opensource (LGPL) 5 1 6000 MicroBlaze MicroBlaze 32 Proprietary 3, 5 1 1324 aemb MicroBlaze 32 OpenFire MicroBlaze 32 3 1 2536 3 1 1928 Nios II/f Nios II 32 Proprietary 6 1 1800 Nios II/s Nios II 32 Proprietary 5 1 1170 Nios II/e Nios II 32 Proprietary no 6 390 LatticeMico32 LatticeMico32 32 6 1 1984 Cortex-M1 ARMv6 32 Proprietary 3 1 2600 DSPuva16 DSPuva16 16 PicoBlaze PicoBlaze 8 PacoBlaze PicoBlaze 8 Opensource (LGPL) Opensource (MIT) Opensource Opensource Proprietary, zero-cost Opensource (BSD) no 4 510 no 2 192 no 2 204 22/110

υμπεραςματικά Οι ςχεδιαςτζσ ςυςτθμάτων επιλζγουν το τρόπο υλοποίθςθσ των SoPC με βάςθ τισ απαιτιςεισ τθσ εφαρμογισ. Οι hard επεξεργαςτζσ εκτελοφν εντολζσ με υψθλό χρονιςμό και μικρότερθ κατανάλωςθ ενζργειασ όμωσ απαιτοφν μεγαλφτερο χρόνο ςχεδιαςμοφ και υψθλότερο κόςτοσ. Εμπεριζχουν ςτθ λογικι χριςθσ τουσ και τα προβλιματα από τθ μθ δυνατότθτα επαναπρογραμματιςμοφ τουσ. Αυτό κάνει ζναν "hard" πυρινα να μειονεκτεί γριγορα ζναντι ενόσ soft πυρινα που μπορεί να βελτιςτοποιείται ςυνεχϊσ χωρίσ τθν αγορά νζου υλικοφ. Οι "soft" επεξεργαςτζσ είναι αντικείμενο ζρευνασ κακϊσ ενϊ ξεκίνθςαν ωσ ουτοπικι επικυμία των ςχεδιαςτϊν υλικοφ ζχουν καταφζρει τθν τελευταία δεκαετία, κυρίωσ λόγω τθσ Altera και τθσ Xilinx, να ζχουν ολοζνα αυξανόμενθ απιχθςθ ςτθν βιομθχανικι ζρευνα αλλά και τθν αγορά. Ενϊ αρχικά φαινόταν ωσ ςυςτιματα τρομερά υψθλϊν απαιτιςεων ενζργειασ (power hungry) και χαμθλισ απόδοςθσ ζχουν μετουςιωκεί ςε δυναμικά ςυςτιματα ανάπτυξθσ εξειδικευμζνων λειτουργιϊν. Σα πλεονεκτιματα τθσ ςχεδίαςθσ ςε "soft" επεξεργαςτζσ εμπεριζχουν τθ μείωςθ του χρόνου ςχεδιαςμοφ, με γριγορθ προτυποποίθςθ και παραγωγι του προϊόντοσ, κακϊσ είναι θ δυνατι θ εκ των υςτζρων αναβάκμιςθ των δυνατοτιτων του. Είναι επίςθσ δυνατι θ απεξάρτθςθ του κϊδικα του επεξεργαςτι από το υλικό ςτο οποίο εκτελείται, προςτατεφοντασ ζτςι τθν όποια οικονομικι επζνδυςθ από τθ φκορά του χρόνου, κακϊσ ο παραγόμενοσ κϊδικασ είναι μεταφζρςιμοσ ςε άλλεσ ςυςκευζσ, αλλά και ευζλικτοσ ςε παραμετροποιιςεισ που μπορεί να χρειαςτοφν ϊςτε να καλφψουν ανάγκεσ που κα εμφανιςτοφν μελλοντικά. 23/110

1.6 Περιφερειακά και Διεπαφέσ - ειριακή επικοινωνία Σα SoC ενςωματϊνουν μικροελεγκτζσ, μικροεπεξεργαςτζσ, μνιμεσ τφπου ROM, RAM και flash, πθγζσ χρονιςμοφ, χρονιςτζσ, διεπαφζσ επικοινωνίασ όπωσ USB, ETHERNET, UART, αναλογικά ςτοιχεία και ςυςτιματα τροφοδοςίασ. τα πλαίςια τθσ πτυχιακισ κα χρθςιμοποιθκεί θ ςειριακι επικοινωνία με ςκοπό τθ μετάδοςθ δεδομζνων μεταξφ του ςυςτιματοσ και του εξυπθρετθτι (Host) υπολογιςτι. ειριακι επικοινωνία Η ειριακι επικοινωνία επιτρζπει τθ μετάδοςθ δεδομζνων με τθν διαδοχικι αποςτολι bits. Χαρακτθρίηεται από ςχετικά μικρζσ ταχφτθτεσ επικοινωνίασ επιτρζποντασ όμωσ τθν εφκολθ και απλουςτευμζνθ διαςφνδεςθ ανομοιογενϊν ςυςκευϊν με μία γραμμι δεδομζνων ακόμα και ςε μεγάλεσ αποςτάςεισ. Για τθ ςωςτι διεκπεραίωςθ τθσ ςειριακισ επικοινωνίασ είναι απαραίτθτο να γίνουν ρυκμίςεισ και ςτα δφο άκρα αυτισ. υγκεκριμζνα κάποιεσ βαςικζσ ρυκμίςεισ είναι τα Bit Rate, Baud Rate, Parity και Stop Bits. Σο Baud Rate αφορά τθ ταχφτθτα μετάδοςθσ και ςυγκεκριμζνα τον αρικμό των μεταφορϊν bits ανά δευτερόλεπτο. Μεγάλα baud rate μειϊνουν τθν δυνατι απόςταςθ μεταξφ των ςυςκευϊν. Σα Data Bits είναι ο αρικμόσ των bits που μεταφζρονται ςε κάκε μετάδοςθ. υνικωσ για τθ μεταφορά χαρακτιρων επιλζγεται θ χριςθ 8 Data Bits ϊςτε να μπορεί να αναπαραςτακεί ο εκτεταμζνοσ πίνακασ ASCII. Σα Stop Bits ςθματοδοτοφν τθ λιξθ τθσ επικοινωνίασ για ζνα πακζτο. Επιπρόςκετα βοθκοφν ςτο ςυγχρονιςμό τθσ επικοινωνίασ των δφο ςυςκευϊν δίνοντασ ςε αυτζσ ζνα μικρό παράκυρο λάκουσ ςτο χρονιςμό τουσ. Όςο περιςςότερα bits χρθςιμοποιοφνται ωσ Stop Bits τόςο μεγαλφτερο είναι αυτό το περικϊριο μειϊνοντασ όμωσ το ρυκμό επικοινωνίασ. 24/110

To Parity Bit είναι μια απλι μορφι διαδικαςίασ εφρεςθσ λάκουσ ςτθ μετάδοςθ. Για παράδειγμα κατά τθ ηυγι/μονι ιςοτιμία το Parity bit παίρνει τιμι ϊςτε να είναι το ςφνολο τον άςςων τθσ μετάδοςθσ ηυγόσ ι μονόσ αρικμόσ αντίςτοιχα. Σο πιο κακιερωμζνο πρότυπο ςειριακισ επικοινωνίασ είναι το RS-232 και είναι αυτό ςφμφωνα με το όποιο είναι καταςκευαςμζνεσ οι ςειριακζσ κφρεσ που βριςκόταν ςτουσ περιςςότερουσ θλεκτρονικοφσ υπολογιςτζσ. Αυτόσ είναι ο και λόγοσ που ςχεδόν ταυτίηεται με τθν ζννοια τθσ ςειριακισ επικοινωνίασ. ιμερα για τθν υλοποίθςθ ςειριακισ επικοινωνίασ ςε υπολογιςτζσ χωρίσ ςειριακι κφρα γίνεται χριςθ των USB - to - Serial Adapters που δθμιουργοφν εικονικζσ ςειριακζσ κφρεσ. Η διαςφνδεςθ για τθν RS232 επικοινωνία πραγματοποιείται ςυνικωσ με ςυνδζςμουσ DΒ-9 (9 ακροδεκτϊν) που εξυπθρετοφν τισ ανάγκεσ μεταφοράσ δεδομζνων, τθ γείωςθ και τθ δυνατότθτα χειραψίασ. Σο κφκλωμα που υλοποιεί τθ μετάδοςθ ονομάηεται UART (Universal Asynchronous receiver/transmitter) και μεταφράηει τα δεδομζνα από παράλλθλθ ςε ςειριακι μορφι. Ο κορμόσ ενόσ κυκλϊματοσ UART είναι ο καταχωρθτισ ολίςκθςθσ που χρθςιμοποιείται για τθ μετατροπι αυτι. 25/110

Κεφάλαιο 2: Δομικά χαρακτηριςτικά του υπό ανάπτυξη ςυςτήματοσ 2.1 Ειςαγωγή ςτα μέρη του ςυςτήματοσ τα πλαίςια τθσ πτυχιακισ εργαςίασ κα αναπτυχκεί ζνα ςφςτθμα ςε προγραμματιηόμενθ ψθφίδα με βάςθ τον επεξεργαςτι Nios II. Σο αναπτυξιακό κφκλωμα, του οποίου ο προγραμματιςμόσ, κα επιτρζψει αυτι τθν υλοποίθςθ είναι το DE2 τθσ Altera. τα επόμενα υποκεφάλαια κα γίνει μία παρουςίαςθ του βαςικοφ κορμοφ του ςυςτιματοσ, δθλαδι του επεξεργαςτι Nios II αλλά και μια αναφορά ςτθν αναπτυξιακι πλακζτα. 2.2 Επεξεργαςτήσ Nios II 2.2.1 Ειςαγωγή ςτον Nios II O Nios II είναι ζνασ "soft" πυρινασ επεξεργαςτι αρχιτεκτονικισ Harvard RISC (Reduced Instruction Set Computer) των 32bit, ιδιοκτθςία τθσ εταιρίασ Altera και προορίηεται για χριςθ ςτα FPGA που αυτι παράγει και αναπτφςςει. Κακϊσ είναι αρχιτεκτονικισ Harvard ο χϊροσ διευκφνςεων του προγράμματοσ είναι ανεξάρτθτοσ από εκείνο των δεδομζνων. Επιτρζπει τθ διαμόρφωςθ του και τθν εξαγωγι ι ειςαγωγι χαρακτθριςτικϊν ϊςτε να επιτφχουμε τθ δυνατι ςχζςθ απόδοςθσ και κόςτουσ. Είναι ίςωσ ο πιο διαδεδομζνοσ software επεξεργαςτισ κακϊσ ςφμφωνα με ςτοιχεία από τθν Altera αρικμείται ςε 20.000 διατάξεισ και χρθςιμοποιείται από τουσ είκοςι μεγαλφτερουσ OEMs (Original Equipment Manufacturers) παγκοςμίωσ [9]. Η αρχιτεκτονικι του δομείται ωσ εξισ: 32 bit Αρχιτεκτονικι ςετ εντολϊν 32 bit διάδρομοσ δεδομζνων και μνιμθσ 32 καταχωρθτζσ γενικοφ ςκοποφ Κοινι διεπαφι για ζωσ 256 custom instructions 26/110

Εντολζσ πολλαπλαςιαςμοφ και διαίρεςθσ Ο Nios II μπορεί να χρθςιμοποιθκεί ςε τρεισ διαφορετικζσ εκδόςεισ ανάλογα με το εφροσ των δυνατοτιτων που κζλουμε να υποςτθρίηει και τθν κατανάλωςθ ςε λογικά ςτοιχεία όπωσ φαίνεται και ςτον παρακάτω πίνακα [Πίνακασ 4]. Nios II/f (fast) Είναι βελτιςτοποιθμζνοσ με ςκοπό τθν απόδοςθ και περιλαμβάνει ξεχωριςτζσ μνιμεσ προςωρινισ αποκικευςθσ εντολϊν και δεδομζνων, MMU (Memory Management Unit) και MPU (Memory Protection Unit). Nios II/s (standard) Αποτελεί τθ μεςαία λφςθ του επεξεργαςτι με προςωρινι μνιμθ αποκικευςθσ εντολϊν αλλά όχι δεδομζνων και δε περιλαμβάνει MMU και MPU. Nios II/e (economy) Αποτελεί τθν πιο απλουςτευμζνθ ζκδοςθ του Nios II κακϊσ δεν περιζχει κάποιο από τα παραπάνω χαρακτθριςτικά κάτι που του επιτρζπει να χρθςιμοποιεί το μικρότερο αρικμό λογικϊν ςτοιχείων. Γενικά ο /f πυρινασ είναι βελτιςτοποιθμζνοσ για αποδϊςεισ ενϊ ο /e είναι παραμετροποιθμζνοσ ϊςτε να ζχει το μικρότερο δυνατό μζγεκοσ πυρινα, κατά πολφ μικρότερο από τουσ άλλουσ Nios II αλλά και από τον MicroBlaze τθσ Xilinx κακιςτϊντασ τον ιδανικό για εφαρμογζσ μικρο-ελεγκτϊν. Πίνακασ 4 φγκριςθ των πυρινων Nios II Nios II Cores Features Economy Standard Fast Area (LEs) <700 <1400 <1800 Performance 1x 4.7x 7.5x Instruction Cache No Yes Yes Data Cache No No Optional Multiply Software 3-cycle 1-cycle 27/110

χιμα 3 Παράδειγμα υλοποίθςθσ ςυςτιματοσ με τον Nios II [10] το παραπάνω ςχιμα *χιμα 3+ παρουςιάηεται μια ολοκλθρωμζνθ υλοποίθςθ ενόσ ςυςτιματοσ με τον επεξεργαςτι Nios II και πλικοσ περιφερειακϊν. υγκεκριμζνα εμπεριζχεται ςτο ςχεδιαςμό ζνασ ελεγκτισ μνιμθσ SDRAM, On-Chip ROM μνιμθ, χρονιςτζσ, κφκλωμα UART, οδθγοί για τον ζλεγχο LCD οκόνθσ και άλλων διεπαφϊν διαςφνδεςθσ και περιφερειακϊν. Σθ μεταξφ τουσ διαςφνδεςθ αναλαμβάνει το ςφςτθμα διαςφνδεςθσ ενϊ οι επιμζρουσ οδθγοί επιτρζπουν τθ ςφνδεςθ με τα εξωτερικά περιφερειακά όπωσ Buttons κλπ. 2.2.2 Περιγραφή χαρακτηριςτικών του Nios II Περιφερειακά Οι περιφερειακζσ ςυςκευζσ ςυνδζονται ςτουσ Nios II πυρινεσ μζςω του Avalon switch fabric που είναι ζνα ςφνολο από ςθμείο ςε ςθμείο, master to slave ςυνδζςεισ. Ζνασ master μπορεί να ςυνδεκεί ςε πολλαπλοφσ slaves και ζνα slave μπορεί να ςυνδεκεί ςε πολλαπλοφσ master. Αν ζνα slave είναι ςυνδεδεμζνο ςε 28/110

πολλοφσ masters τότε παράγεται από τουσ SOPC builders ζνασ προγραμματιςμόσ επιλογισ, που ςυνικωσ χρθςιμοποιεί round robin αλγόρικμουσ επιλογισ του master και επιδζχεται τον οριςμό προτεραιοτιτων. Σα περιςςότερα από αυτά τα περιφερειακά παρζχονται από τθν Altera ωσ IPs που μποροφν να προςτεκοφν ςτο ςφςτθμα. Σα IP (Intellectual Properties) είναι κϊδικασ ςε γλϊςςα περιγραφισ υλικοφ HDL που περιγράφει τθ λειτουργία τουσ και τουσ επιτρζπει να ενςωματϊνονται δυναμικά κατά τον ςχεδιαςμό των SoPCs. Πζρα από τα IPs τθσ Altera δίνεται θ δυνατότθτα ςτο χριςτθ να ενςωματϊςει κάποιο δικό του περιφερειακό ι να χρθςιμοποιιςει IPs τρίτων που εκτελοφν ςυγκεκριμζνεσ λειτουργίεσ. Η υλοποίθςθ custom περιφερειακϊν ζχει μεγάλο ενδιαφζρον κακϊσ επιτρζπει τθν μεταφορά ςυναρτιςεων, που επαναλαμβάνονται, μεταφράηοντασ τθν ίδια λειτουργία ςε υλικό, αυξάνοντασ ζτςι τθ ςυνολικι απόδοςθ του ςυςτιματοσ. Η αφξθςθ τθσ απόδοςθσ προζρχεται τόςο από το γεγονόσ πωσ θ υλοποίθςθ ςε υλικό είναι εν γζνει γρθγορότερθ από τθν αντίςτοιχθ ςε λογιςμικό αλλά και ταυτόχρονα απελευκερϊνεται ο επεξεργαςτισ ϊςτε να εκτελζςει άλλεσ διεργαςίεσ παράλλθλα με αυτι που διεκπεραιϊνεται ςτο περιφερειακό. Custom Instructions Πζρα από τθν δθμιουργία Custom περιφερειακϊν δίνεται και θ δυνατότθτα δθμιουργίασ custom εντολϊν. Η υλοποίθςθ κρίςιμων για το ςφςτθμα λειτουργιϊν με custom instructions μπορεί να αυξιςει δραματικά τθν απόδοςθ. Η εξειδικευμζνθ λογικι που επικυμοφμε ενςωματϊνεται ςτθν αρικμθτικι και λογικι μονάδα του Nios II (ALU). Όπωσ και με τισ κανονικζσ εντολζσ του Nios II μποροφν να πάρουν τιμζσ από δφο καταχωρθτζσ και να γράψουν το πικανό αποτζλεςμα ςε κάποιο καταχωρθτι. Παρζχεται ςτουσ ςχεδιαςτζσ ζνα υψθλό επίπεδο προςπζλαςθσ των εντολϊν χρθςιμοποιϊντασ μακροεντολζσ ςε Assembly ι ςυναρτιςεισ ςε C. Δομι καταχωρθτϊν Ο Nios II περιζχει 32 καταχωρθτζσ γενικοφ ςκοποφ και 32 καταχωρθτζσ ελζγχου. Κάποιοι από τουσ καταχωρθτζσ γενικοφ ςκοποφ χρθςιμοποιοφνται για 29/110

ςυγκεκριμζνεσ λειτουργίεσ όπωσ τθν εκςφαλμάτωςθ, τον ζλεγχο του stack ι τθν αποκικευςθ τθσ τιμι επιςτροφισ μετά τθν κλιςθ υπορουτίνασ όπωσ περιγράφονται ςτον παρακάτω πίνακα [Πίνακασ 5]. Πίνακασ 5 Καταχωρθτζσ γενικοφ ςκοποφ Nios II [11] Οι καταχωρθτζσ ελζγχου χρθςιμοποιοφνται για ςκοποφσ ελζγχου και ο χειριςμόσ τουσ γίνεται με ειδικζσ εντολζσ που εκτελοφνται ςε ςυγκεκριμζνο τρόπο λειτουργίασ του επεξεργαςτι (supervisor mode). Προςπζλαςθ Μνιμθσ και περιφερειακϊν Ο Nios II επιτρζπει τθν προςπζλαςθ περιφερειακϊν και μνθμϊν. Για τισ ανάγκεσ ςε μνιμθ ςτουσ fast και standard Cores του Nios II εμπεριζχεται μνιμθ προςωρινισ αποκικευςθσ (cache memory). Η προςπζλαςθ τθσ μνιμθσ μπορεί να γίνει μζςω του Avalon network. Για τθν On-chip μνιμθ, αυτι δθλαδι που χρθςιμοποιεί πόρουσ των λογικϊν ςτοιχείων του FPGA για τθ δθμιουργία τθσ, μπορεί να χρθςιμοποιθκεί το Avalon Interface ι με απευκείασ διαςφνδεςθ του επεξεργαςτι. Για τθσ μνιμεσ που δεν είναι πάνω ςτο FPGA όπωσ SRAM, SDRAM και FLASH θ προςπζλαςθ τουσ πραγματοποιείται με τθ χριςθ των αντίςτοιχων διεπαφϊν και ελεγκτϊν. Οι 30/110

λειτουργίεσ επί των μνθμϊν (Load - store instructions) πραγματοποιοφνται με τθ προςπζλαςθ των χαρτογραφθμζνων διευκφνςεων μνιμθσ. Για τθ διευκυνςιοδότθςθ ο Nios II χρθςιμοποιεί διευκφνςεισ των 32 bits. Οι εντολζσ μποροφν να εγγράψουν ι να διαβάςουν 32,16 ι 8 bits δεδομζνων. Εντολζσ Assembly του Nios II Οι τρεισ βαςικζσ κατθγορίεσ εντολϊν του Nios II είναι οι I-Type, R-Type και J-Type εντολζσ. Οι I-Type εντολζσ είναι εντολζσ αρικμθτικϊν και λογικϊν πράξεων που περιζχουν μια άμεςθ τιμι ςτο Instruction word τουσ. Οι R-Type χαρακτθρίηονται από τθ χριςθ καταχωρθτϊν τόςο για τθν είςοδο όςο και τθν ζξοδο των αποτελεςμάτων τουσ. Οι J-Type εντολζσ είναι υπεφκυνεσ για τθν αλλαγι τθσ ροισ του προγράμματοσ. Σο OP Code πεδίο όλων των εντολϊν κακορίηει τθν προσ εκτζλεςθ εντολι και μπορεί να προεκτακεί με τθ χριςθ του OPX πεδίου. Σο ςετ εντολϊν του Nios II περιλαμβάνει εντολζσ φόρτωςθσ, αποκικευςθσ και μεταφοράσ για τισ ανάγκεσ μεταφοράσ δεδομζνων των μνθμϊν και των καταχωρθτϊν. Περιζχει επίςθσ αρικμθτικζσ και λογικζσ εντολζσ που δζχονται ωσ ορίςματα τιμζσ ι καταχωρθτζσ και επιτελοφν αρικμθτικζσ και λογικζσ πράξεισ. Για τισ ανάγκεσ ςυγκρίςεων υπάρχουν εντολζσ ςφγκριςθσ. Επιπρόςκετα υποςτθρίηονται όλεσ οι κλαςςικζσ λειτουργίεσ επί των δεδομζνων, όπωσ εντολζσ ολίςκθςθσ, περιςτροφισ, εφρεςθσ υπερχείλιςθσ και κρατουμζνου, ενϊ υπάρχουν και εντολζσ για τθν αλλαγι τθσ ροισ του προγράμματοσ μζςω του αποτελζςματοσ ςυγκρίςεων και οριςμοφ κζςεωσ μεταπιδθςθσ. Σζλοσ με τισ εντολζσ υπορουτινϊν υποςτθρίηεται θ μετάβαςθ και επιςτροφι από τθν εκτζλεςθ αυτϊν. 31/110

2.3 Η αναπτυξιακή πλακέτα DE2 τησ Altera Εικόνα 1 Αναπτυξιακι Πλακζτα DE2 τθσ Altera [12] Για τθ δθμιουργία του ςυςτιματοσ ζγινε θ χριςθ τθσ αναπτυξιακισ πλακζτασ DE2 που παράγεται από τθν εταιρία Altera. Η παραπάνω εικόνα *Εικόνα 1+ είναι ζνα οπτικό ςτιγμιότυπο τθσ πλακζτασ και ονομάηει τα επιμζρουσ υποςυςτιματα και περιφερειακά τθσ. Η εν λόγω πλατφόρμα παρουςιάηει εκπαιδευτικό ενδιαφζρον κακϊσ περιλαμβάνει πλθκϊρα περιφερειακϊν αλλά και αυξθμζνεσ δυνατότθτεσ που επιτρζπουν τθσ δθμιουργία αρκετά πολφπλοκων εφαρμογϊν εμπορικισ εμβζλειασ. Η καρδιά του ςυςτιματοσ είναι το Cyclone II FPGA chip που διαςυνδζεται με όλα τα ςθμαντικά επιμζρουσ υποςυςτιματα επιτρζποντασ ςτο χριςτθ τθν παραμετροποίθςθ των επιμζρουσ διαςυνδζςεων [13]. Για τθ διαςφνδεςθ και χριςθ του αναπτυξιακοφ είναι απαραίτθτθ θ εγκατάςταςθ ςτον υπολογιςτι των USB-Blaster drivers μζςω τθσ υποςτιριξθσ τθσ οικογζνειασ Cyclone II κατά τθν εγκατάςταςθ του Quartus II, του προγράμματοσ ςχεδιαςμοφ ςυςτθμάτων που παρζχει θ Altera. 32/110

χιμα 4 Block Διάγραμμα του αναπτυξιακοφ DE2 τθσ Altera Όπωσ παρουςιάηεται και ςτο παραπάνω block διάγραμμα [χιμα 4+ θ αναπτυξιακι πλατφόρμα DE2 εμπεριζχει: Σο FPGA Cyclone II 2C35 τθσ Altera με 33.216 λογικά ςτοιχεία, 105 M4K RAM blocks, 483,840 ςυνολικά RAM bits, 35 ενςωματωμζνουσ πολλαπλαςιαςτζσ, 4 PLLs και ακίδεσ (pins) ειςόδου/εξόδου. Εμπεριζχει κυκλϊματα για τθν υλοποίθςθ του προγραμματιςμοφ μζςω ςειριακισ μορφοποίθςθσ EPCS16 τθσ Altera και του USB Blaster για το προγραμματιςμό τθσ. Παρζχεται μνιμθ SRAM των 512 Kbyte, οργανωμζνθ ωσ 256K x 16 bits, SDRAM μνιμθ των 8 Mbyte, οργανωμζνθ ωσ 1M x 16 bits x 4 banks και Flash μνιμθ των 4 Mbyte με 8bit δίαυλο δεδομζνων. Παράλλθλα ζχει υποδοχι για κάρτεσ SD. Όλεσ οι μνιμεσ είναι διακζςιμεσ από τον Nios II με χριςθ των αντίςτοιχων περιφερειακϊν για τον ζλεγχο τουσ. 33/110

Παρζχονται επίςθσ τζςςερα push button και βρίςκονται ςε υψθλι ςτάκμθ. Όταν πιζηονται παράγουν ζναν active - low παλμό. Τπάρχουν δεκαοχτϊ switch διακόπτεσ που παράγουν το λογικό 0 όταν είναι ςτθ κζςθ down και το λογικό 1 όταν είναι ςτθ κζςθ up, ενϊ για ανάγκεσ εξόδου υπάρχουν δεκαοκτϊ κόκκινα και εννζα πράςινα LEDs. Για τισ ανάγκεσ χρονιςμοφ υπάρχουν δφο κρφςταλλοι, 50 MHz και 27 MHz αντίςτοιχα. Διατίκεται επίςθσ θ δυνατότθτα ςφνδεςθσ εξωτερικισ πθγισ χρονιςμοφ μζςω SMA. Για τισ ανάγκεσ ιχου υπάρχει ζνασ Audio CODEC (Wolfson WM8731) των 24 bit, γραμμι ειςόδου, εξόδου και μικροφϊνου. Η ςυχνότθτα δειγματολθψίασ μπορεί να κυμανκεί από τα 8KHz ζωσ τα 96KHz. Ενςωματωμζνοσ βρίςκεται και ζνασ VGA μετατροπζασ (ADV7123) υψθλισ ταχφτθτασ που υποςτθρίηει αναλφςεισ ζωσ και 1600 1200 με 100Hz ρυκμό ανανζωςθσ. Ζναν 10/100 Ethernet ελεγκτι που υποςτθρίηει λειτουργία αμφίδρομθσ επικοινωνίασ με ρυκμοφσ μετάδοςθσ 10 Mb/s και 100 Mb/s. Εμπεριζχεται αποκωδικοποιθτισ NTSC/PAL που χρονίηεται από ρολόι των 27MHz. Μία οκόνθ LCD για τθ προβολι κειμζνου. Ζνασ Host/Slave ελεγκτισ USB ςυμβατόσ με το Universal Serial Bus Specification Rev. 2.0 που μπορεί να λειτουργιςει ωσ USB Host και ωσ ςυςκευι. Σζλοσ υπάρχουν ςειριακζσ κφρεσ RS 232 και διαςφνδεςθσ ποντικιοφ και πλθκτρολογίου PS/2, πομποδζκτθσ υπζρυκρων (IrDA) και κεφαλζσ επζκταςθσ. 34/110

Κεφάλαιο 3: Μεθοδολογίεσ και Εργαλεία χεδίαςησ SoPC τησ Altera 3.1 Ειςαγωγή ςτη ςχεδίαςη SoPC το κεφάλαιο αυτό κα γίνει μια ειςαγωγι ςτισ τυπικζσ μεκοδολογίεσ ςχεδιαςμοφ FPGA και πωσ αυτζσ πραγματοποιοφνται μζςα από τα εργαλεία τθσ Altera. Η μεκοδολογία που παρουςιάηεται παρακάτω αναφζρεται ςτθ γενικότερθ διαμόρφωςθ των FPGA και των CPLD και οπτικοποιείται ςτο διπλανό ςχιμα [χιμα 5]. Αρχικά με βάςθ τισ προδιαγραφζσ ςχεδιαςμοφ, δθμιουργείται μια αναπαράςταςθ του ςυςτιματοσ. Αυτό επιτυγχάνεται με τθ βοικεια ςχθματικισ αναπαράςταςθσ, κϊδικα ςε HDL ι με τθ βοικεια εργαλείων ςχεδιαςμοφ ςυςτθμάτων όπωσ είναι το Qsys και ο SOPC Builder. Ανεξάρτθτα από τον τρόπο παραγωγισ, το αποτζλεςμα είναι θ περιγραφι τθσ ςυμπεριφοράσ, τθσ λογικισ και αρχιτεκτονικισ του κυκλϊματοσ. τθ ςυνζχεια γίνεται θ λειτουργικι προςομοίωςθ που ελζγχει τισ λειτουργίεσ του ςυςτιματοσ χωρίσ όμωσ να λαμβάνει υπόψθ τισ χρονικζσ παραμζτρουσ κακϊσ ςε αυτι τθ φάςθ του ςχεδιαςμοφ δεν υπάρχει γνϊςθ για τουσ χρονιςμοφσ τθσ ςυγκεκριμζνθσ ςυςκευισ. κοπόσ τθσ είναι να επιβεβαιϊςει το λογικό μοντζλο που περιγράφθκε και τθ ςωςτι ροι των δεδομζνων. Σο ςφςτθμα πρζπει να περάςει από το ςτάδιο τθσ ςφνκεςθσ (Synthesis) όπου γίνεται θ μετάφραςθ του χιμα 5 Ροι χεδιαςμοφ υςτιματοσ 35/110

ςχεδίου και θ αρχικοποίθςθ του ςε λογικά ςτοιχεία με βάςθ τθ ςυγκεκριμζνθ ςυςκευι. Η διαδικαςία τθσ ςφνκεςθσ περιλαμβάνει και τθ βελτιςτοποίθςθ του ςχεδίου με βάςθ τουσ περιοριςμοφσ απόδοςθσ, μεγζκουσ και χρονιςμοφ. Σα αποτελζςματα τθσ ςφνκεςθσ αποκθκεφονται και θ διαδικαςία προχωράει ςτο επόμενο ςτάδιο τθσ φυςικισ δρομολόγθςθσ (Fitting) κατά τθν οποία γίνεται θ αντιςτοίχθςθ των ςυντεκειμζνων λογικϊν ςτοιχείων με πραγματικοφσ προοριςμοφσ τθσ ςυςκευισ. Δθμιουργεί διαςυνδζςεισ και δρομολογιςεισ που ενϊνουν τθ ςυντεκειμζνθ λογικι λαμβάνοντασ υπόψθ τουσ περιοριςμοφσ χϊρου, χρόνου, απόδοςθσ και κατανάλωςθσ. Σο αποτζλεςμα αυτισ τθσ διαδικαςίασ τροφοδοτεί το επόμενο ςτάδιο αυτό τθσ χρονικισ ανάλυςθσ. Η χρονικι ανάλυςθ επιβεβαιϊνει πωσ θ διαδικαςία του fitting ζχει πετφχει τουσ περιοριςμοφσ χρόνου και απόδοςθσ. Μετά τθ χρονικι ανάλυςθ υπάρχει ζνα προαιρετικό ςτάδιο τθσ που ελζγχει για το αν το ςχζδιο κα λειτουργεί ςωςτά ςτθ ςυςκευι που κα τοποκετθκεί με βάςθ τουσ περιοριςμοφσ που ζχουν τεκεί. Θεωρθτικά θ λειτουργικι προςομοίωςθ και θ χρονικι ανάλυςθ ςυνικωσ αρκοφν για τθν εξαγωγι του ςυμπεραςμάτων αυτϊν. Σζλοσ παράγονται τα αρχεία προγραμματιςμοφ των FPGA με τα οποία, κάνοντασ χριςθ των εργαλείων προγραμματιςμοφ, ρυκμίηεται και μεταφζρεται ςτθ ςυςκευι το ςχζδιο που ζχει δθμιουργθκεί ϊςτε αυτι να διαμορφωκεί κατάλλθλα. Οι παραπάνω απαιτιςεισ και φάςεισ ςχεδιαςμοφ καλφπτονται από τθ χριςθ οργανωμζνων και ολοκλθρωμζνων ςυςτθμάτων λογιςμικοφ όπωσ είναι οι πλατφόρμεσ ςχεδίαςθσ τθσ Altera, το Quartus II και το Xilinx Platform Studio τθσ Xilinx. Η ροι ςχεδιαςμοφ SοPC περιλαμβάνει τθν δθμιουργία του ςχεδίου ςτο Quartus II με τθ βοικεια οδθγϊν επιλογισ υλικοφ (SOPC Builder, Qsys), τον προγραμματιςμό των διατάξεων και ςτθ ςυνζχεια τθν ανάπτυξθ λογιςμικοφ ςε εργαλεία όπωσ το Nios II IDE που επιτρζπουν τθ παραγωγι κϊδικα C/C++ που κα εκτελείται ςτο παραγόμενο ςφςτθμα. 36/110

3.2 Εργαλεία χεδίαςησ υλικού Ενςωματωμένων υςτημάτων 3.2.1 Quartus II Η πλατφόρμα ςχεδίαςθσ Quartus II παρζχει τθν εξολοκλιρου δυνατότθτα του ευζλικτου ςχεδιαςμοφ, δθμιουργίασ, επιβεβαίωςθσ και προγραμματιςμοφ του ψθφιακοφ ςυςτιματοσ. Επιτρζπει τθ δθμιουργία των Project που είναι ομαδοποιθμζνα ςφνολα όλων των ςχετικϊν αρχείων και βιβλιοκθκϊν που απαιτοφνται για ζνα ςφςτθμα. Η λογικι ςχεδίαςθσ απαιτεί τθν φπαρξθ ενόσ top-level αρχείου που εξυπθρετεί τισ ανάγκεσ διαςφνδεςθσ των επιμζρουσ οντοτιτων και τθν αρχικοποίθςθ των αντίςτοιχων ςτιγμιότυπων αυτϊν. Επιπρόςκετα ο ςχεδιαςμόσ πρζπει να αφορά ςυγκεκριμζνθ ςυςκευι που όμωσ, όπωσ και το ανϊτατο ιεραρχικά αρχείο που αναφζρκθκε, μπορεί να αλλάξει και μετά τθ δθμιουργία του Project. Οι ρυκμίςεισ του κάκε Project αποκθκεφονται ςτα QSF αρχεία ενϊ ςτο φάκελο db αποκθκεφονται πλθροφορίεσ που δθμιουργοφνται κατά τθ διαδικαςία του Compilation. Μια απλουςτευμζνθ αναπαράςταςθ τθσ διαδικαςίασ ςχεδιαςμοφ περιγράφεται ςτο παρακάτω ςχιμα *χιμα 6]. χιμα 6 Απλουςτευμζνθ Ροι χεδιαςμοφ SoPC 37/110

3.2.2 SoPC builder Η καρδιά τθσ ολικισ ροι ςχεδιαςμοφ των ενςωματωμζνων ςυςτθμάτων ςε προγραμματιηόμενεσ διατάξεισ είναι θ δθμιουργία του ςυςτιματοσ με τθ βοικεια των οδθγϊν επιλογισ υποςυςτθμάτων υλικοφ. Μζςω τθσ αφαιρετικισ προςζγγιςθσ ςχεδιαςμοφ επιτυγχάνεται θ γριγορθ ανάπτυξθ πολφπλοκων ςυςτθμάτων με τθν χριςθ των IP που είναι διακζςιμα. Ο SoPC Builder αποτελεί ζνα τζτοιο εργαλείο για τθ γριγορθ δθμιουργία και ζλεγχο ενςωματωμζνων ςυςτθμάτων. Αυτό επιτυγχάνεται με τθ χριςθ διαφόρων block υλικοφ, μειϊνοντασ δραματικά τον χρόνο ςχεδίαςθσ. Είναι ζνα υπο-λογιςμικό του Quartus II που αυτοματοποιεί τθ διαδικαςία δθμιουργίασ και διαςφνδεςθσ υποςυςτθμάτων μζςα από τθ χριςθ βιβλιοκθκϊν ςε ζνα εφχρθςτο γραφικό περιβάλλον. Παράγεται λοιπόν ςε μικρό χρόνο ζνα ολοκλθρωμζνο SοPC ςφςτθμα που μπορεί να περιλαμβάνει περιφερειακά, μνιμεσ, ελεγκτζσ, κανάλια επικοινωνίασ, Ι/Ο γενικοφ ςκοποφ και επεξεργαςτζσ που επιλζγονται προσ ειςαγωγι από το περιβάλλον του [Εικόνα 2]. Παρά τθν εκτεταμζνθ χριςθ του SOPC Builder για δθμιουργία SοPC που περιλαμβάνουν τον επεξεργαςτι Nios II, το πρόγραμμα αυτό λειτουργεί γενικότερα ωσ ςχεδιαςτισ ςυςτθμάτων που μπορεί να περιλαμβάνουν άλλουσ ι και κανζναν επεξεργαςτι. Λειτουργεί ςε αφαιρετικό, για τον τελικό χριςτθ, επίπεδο καλφπτοντασ τθν ανάγκθ ςυγγραφισ και διαςφνδεςθσ των υποςυςτθμάτων και παράγοντασ αρχεία περιγραφισ υλικοφ ςτθ γλϊςςα που επικυμοφμε (Verilog - VHDL). Εικόνα 2 SoPC Components 38/110

Σα δομικά ςτοιχεία του SOPC Builder είναι τα Modules. Χρθςιμοποιοφν τισ διεπαφζσ Avalon για τθ φυςικι τουσ διαςφνδεςθ υλοποιϊντασ τθ λογικι που ζχουμε ορίςει. Κατά τθ διαδικαςία ςχεδίαςθσ δθμιουργοφμε ςτιγμιότυπα των υποςυςτθμάτων αυτϊν που τα παραμετροποιοφμε κατά τισ ανάγκεσ μασ. Πζρα από τα εγκατεςτθμζνα components υπάρχουν και διάφορα άλλα πακζτα όπωσ αυτά του εκπαιδευτικοφ πακζτου τθσ Altera "University Program" αλλά και IPs τρίτων. Παρζχεται τζλοσ θ δυνατότθτα ςυγγραφισ των δικϊν μασ component ϊςτε να ενςωματϊνουν τθ λογικι, τθ λειτουργία και τισ διαςυνδζςεισ που κζλουμε. Σο παρακάτω είναι ζνα ςτιγμιότυπο ενόσ ςχεδιαςμζνου ςυςτιματοσ ςτον SoPC Builder που περιζχει τον επεξεργαςτι Nios II, onchip μνιμθ, Jtag UART, leds, διακόπτεσ και ςειριακι κφρα *Εικόνα 3]. το ολοκλθρωμζνο ςφςτθμα γίνεται θ απόδοςθ διευκφνςεων μνιμθσ κακϊσ και οι απαραίτθτεσ ςυνδζςεισ για τθν υποςτιριξθ των απαραίτθτων διακοπϊν. Εικόνα 3 τιγμιότυπο του SoPC Builder 3.2.3 Qsys Σο Qsys είναι ζνα αναςχεδιαςμζνο εργαλείο που ςτθν ουςία παρζχει τισ ίδιεσ δυνατότθτεσ με τον SOPC Builder. Όπωσ αναφζρουν οι ςχεδιαςτζσ του *14] διαφζρει, λόγω του αρκρωτοφ και ευζλικτου αλγορικμικοφ ςχεδιαςμοφ του, ςε ςχζςθ με το παλαιότερο, γραμμζνο ςε Perl, SOPC Builder. Αναφζρουν επίςθσ πωσ τα παραγόμενα ςχζδια είναι ταχφτερα αν και λίγο μεγαλφτερα ςε μζγεκοσ. Σο ςίγουρο 39/110

είναι πωσ το ςχεδίαςαν με τζτοιο τρόπο, ϊςτε να παρζχουν τθ μεγαλφτερθ δυνατι ευελιξία ςτον χριςτθ με χαρακτθριςτικό παράδειγμα τθ δυνατότθτα χριςθσ ενόσ ιδθ ςχεδιαςμζνου ςυςτιματοσ μζςα ςε ζνα άλλο, κάτι που δε γινόταν ςτον SOPC builder. Παρά τισ διαφορζσ τουσ όμωσ διατθροφν το ίδιο ςφνολο βαςικϊν λειτουργιϊν. 3.3 Εργαλεία ςχεδίαςησ λογιςμικού Ενςωματωμένων υςτημάτων 3.3.1 Nios II EDS Εικόνα 4 Nios II EDS Μετά τθ διαμόρφωςθ του ςυςτιματοσ με βάςθ το ςφςτθμα που είχε ςχεδιαςτεί από το Quartus II, για να προγραμματιςτεί ο επεξεργαςτισ Nios II είναι απαραίτθτθ θ ανάπτυξθ κϊδικα ςτο Nios II EDS (Embedded Design Suite) [Εικόνα 4+ ςε C\C++ που κα εκτελεςτεί από τον επεξεργαςτι. Για το ςκοπό αυτό μπορεί να χρθςιμοποιθκεί το παλαιότερο Nios II IDE που όμωσ κεωρείται πλζον legacy λογιςμικό ι τα Nios ΙΙ System Build Tools που χρθςιμοποιοφν τθν πλατφόρμα Eclipse. Μασ παρζχεται λοιπόν ζνα περιβάλλον ανάπτυξθσ λογιςμικοφ με όλεσ τισ απαραίτθτεσ λειτουργικότθτεσ, ϊςτε να βελτιςτοποιεί τθ διαδικαςία ςυγγραφισ κϊδικα και να διευκολφνει τθν εκςφαλμάτωςθ. Μετά τθ ςυγγραφι και τθν εκςφαλμάτωςθ του κϊδικα γίνεται παραγωγι του εκτελζςιμου το οποίο αφοφ μεταφορτωκεί ςτον Nios II αρχίηει τθν εκτζλεςι του. 40/110

3.3.2 Altera Monitor Program - Debug Client Σο Altera Monitor Program και το Altera Debug Client αποτελοφν μικρζσ εφαρμογζσ κυρίωσ εκπαιδευτικισ φφςεωσ που επιτρζπουν τθν επικοινωνία με ζνα ςφςτθμα ςτο οποίο λειτουργεί επεξεργαςτισ Nios II και τθν εκτζλεςθ ςε αυτό κϊδικα ςε Assembly και C. Προχποκζτει τθν ςφνδεςθ ενόσ Host υπολογιςτι με τον Nios II και παρζχει τθ δυνατότθτα τθσ μεταφόρτωςθσ προγραμμάτων ςε αυτόν. τθ ςυνζχεια δίνεται θ δυνατότθτα για τθν παρακολοφκθςθ του περιεχομζνου των καταχωρθτϊν και τθσ μνιμθσ, τθν ειςαγωγι ςθμείων ελζγχου και δυνατότθτα Ι/Ο διαδικαςιϊν με χριςθ του JTAG UART υποςυςτιματοσ. 3.4 Ομαδοποιημένη διαδικαςία ςχεδιαςμού SoPC Η ροι ςχεδίαςθσ των SoPC αποτελείται από τθ κλαςςικι διαδικαςία ςχεδίαςθσ των FPGA-CPLD διατάξεων με τθ προςκικθ εργαλείων διαμόρφωςθσ του επεξεργαςτι και τθσ μεταγενζςτερθσ ςχεδίαςθσ λογιςμικοφ για αυτόν. Σο παρακάτω ςχιμα περιγράφει με λεπτομζρειεσ αυτι τθ διαδικαςία *χιμα 7]. χιμα 7 Ομαδοποιθμζνθ διαδικαςία ςχεδιαςμοφ SoPC [5] 41/110

Κεφάλαιο 4: Διαδικαςία ςχεδιαςμού και υλοποίηςησ του υλικού του πειραματικού ςυςτήματοσ 4.1 Περιγραφή του ςυςτήματοσ το κεφάλαιο αυτό κα παρουςιαςτεί αναλυτικά θ μεκοδολογία ςχεδιαςμοφ του υλικοφ του ςυςτιματοσ τθσ πτυχιακισ. Σο κφριο μζροσ τθσ εργαςίασ αφορά τθ ςχεδίαςθ ενόσ ολοκλθρωμζνου ςυςτιματοσ ςε προγραμματιηόμενο κφκλωμα (SOPC) και τα βιματα που ακολουκικθκαν για τθν ενςωμάτωςθ του επεξεργαςτι Nios II. Θα αναλυκοφν οι μεκοδολογίεσ ςχεδιαςμοφ του ςυςτιματοσ, με τα εργαλεία που μασ παρζχει θ Altera για αυτό τον ςκοπό. Σο παλαιότερο εργαλείο είναι ο SOPC Builder ενϊ το νεότερο εργαλείο ςχεδιαςμοφ είναι το Qsys. Σο ςφςτθμα που κα αναπτυχκεί περιγράφεται από το παρακάτω ςχιμα *χιμα 8]. Περιζχει τον επεξεργαςτι Nios II, ςειριακι κφρα RS-232, JTAG UART, on-chip μνιμθ, ελεγκτι μνιμθσ SDRAM και διαςυνδζςεισ με περιφερειακά ειςόδου/εξόδου. χιμα 8 Περιγραφι του υλικοφ του πειραματικοφ ςυςτιματοσ 42/110

4.2 Quartus II Αρχικά για τθν αναγνϊριςθ τθσ αναπτυξιακισ πλακζτασ από τον υπολογιςτι κα πρζπει να γίνει εγκατάςταςθ τθσ ςουίτασ Quartus II και των USB-Blaster drivers. Η διαδικαςία ξεκινάει με τθ δθμιουργία ενόσ project από τον οδθγό δθμιουργίασ project του Quartus II (New Project Wizard) ορίηοντασ τον φάκελο που κα εργαςτοφμε κακϊσ και το όνομα του Project όπωσ ςτθν παρακάτω εικόνα [Εικόνα 5]. Εικόνα 5 Quartus II: Δθμιουργία Project 1/5 τθ ςυνζχεια ορίηουμε τθν οικογζνεια FPGA και ςυγκεκριμζνα το μοντζλο που διακζτουμε [Εικόνα 6]. τα πλαίςια αυτισ τθσ πτυχιακισ είναι το DE2 EP2C35F672C6 τθσ οικογζνειασ Cyclone II τθσ Altera. 43/110

Εικόνα 6 Quartus II: Δθμιουργία Project 3/5 τα υπόλοιπα βιματα αφινουμε τισ προεπιλεγμζνεσ τιμζσ και τελικά δθμιουργοφμε το Project. 4.3 SOPC Builder Για το ςχεδιαςμό του SOPC κα χρθςιμοποιιςουμε τον SOPC Builder τθσ Altera. Αφοφ εκκινιςουμε το υπο - πρόγραμμα από το μενοφ Tools -> SOPC Builder δίνουμε ζνα όνομα για το ςφςτθμα μασ και επιλζγουμε τθ γλϊςςα περιγραφισ υλικοφ (HDL) που επικυμοφμε να είναι θ VHDL [Εικόνα 7]. φμφωνα με τθ λογικι και τισ λειτουργίεσ που κζλουμε να υλοποιεί το ςφςτθμα μασ, κα επιλζξουμε και κα παραμετροποιιςουμε τα components που χρειαηόμαςτε. τα πλαίςια τθσ εργαςίασ κα δθμιουργιςουμε ζνα ςφςτθμα που κα περιζχει τον Εικόνα 7 SoPC Builder: Δθμιουργία του Project 44/110

επεξεργαςτι Nios II, τθν JTAG Uart, UART (RS232 Serial Port), on-chip memory, SDRAM controller, περιφερειακά ειςόδου εξόδου κακϊσ και clocks απαραίτθτα για το χρονιςμό του ςυςτιματοσ. Παρατθροφμε πωσ ο builder ζχει προςκζςει ζνα clock των 50MHz που εξυπθρετεί τισ ανάγκεσ ςχεδιαςμοφ του ςυςτιματοσ μασ [Εικόνα 8]. Εικόνα 8 SoPC Builder: Clocks του ςυςτιματοσ τθ ςυνζχεια κα προςκζςουμε όλα τα components που περιγράψαμε. Αρχικά κα ειςάγουμε ζνα instance τθσ on-chip memory (Memories and Memory Controllers -> On-Chip -> On-Chip Memory RAM or ROM). Για αποφυγι χριςθσ πολλϊν λογικϊν ςτοιχείων του FPGA και με τθ λογικι ότι κα προςκζςουμε SDRAM αφινουμε τα υπόλοιπα πεδία ςτισ προεπιλεγμζνεσ τουσ τιμζσ και ορίηουμε μόνο το μζγεκοσ τθσ μνιμθσ ςτα 8Kbytes όπωσ φαίνεται ςτθ παρακάτω εικόνα *Εικόνα 9]. Εικόνα 9 SoPC Builder: On-Chip Memory τθ ςυνζχεια κα προςκζςουμε τον SDRAM Controller (Memories and Memory Controllers -> External Memory Interfaces -> SDRAM Interfaces -> SDRAM Controller). το πεδίο Presets επιλζγουμε το Custom, ενϊ επιλζγουμε ωσ Data 45/110

Widths των bits το 16 με αποτζλεςμα να μπορεί ο controller να ελζγξει το chip 8MBytes SDRAM μνιμθσ που περιζχεται ςτο αναπτυξιακό μασ [Εικόνα 10]. Εικόνα 10 SoPC Builder: SDRAM Controller Σο κφριο τμιμα του ςυςτιματοσ είναι ο επεξεργαςτισ Nios II και αφοφ τον ειςάγουμε (Processors -> Nios II Processor) τον παραμετροποιοφμε για χριςθ ςτο ςφςτθμα. Διαλζγουμε τθν ζκδοςθ /e και ορίηουμε τθν μνιμθ sdram για διανφςματα Reset και exception όπωσ φαίνεται ςτθν παρακάτω εικόνα *Εικόνα 11]. Η ζκδοςθ economy είναι θ μόνθ που δίνεται προσ χριςθ χωρίσ χρονικοφσ περιοριςμοφ με τθν δωρεάν ζκδοςθ του επεξεργαςτι. Δεν περιζχει cache μνιμεσ δεδομζνων ι εντολϊν και ζχει χαμθλότερθ απόδοςθ ςε ςχζςθ με τισ άλλεσ εκδόςεισ. Αφινοντασ τισ άλλεσ τιμζσ ωσ ζχουν τον ειςάγουμε (Finish) ςτο ςφςτθμα. 46/110

Εικόνα 11 SoPC Builder: Nios II Processor Για τθν επικοινωνία του επεξεργαςτι με τον host υπολογιςτι JTAG_UART κφρα (Interface Protocols -> Serial -> JTAG UART) [Εικόνα 12]. ειςάγουμε μια Εικόνα 12 SoPC Builder: JTAG UART Για τισ ανάγκεσ εξωτερικισ επικοινωνίασ ειςάγουμε επίςθσ μία RS-232 κφρα όπου ορίηουμε το Baud rate ςτα 57600 [Εικόνα 13]. 47/110

Εικόνα 13 SoPC Builder: RS-232 τθ ςυνζχεια κα ειςάγουμε περιφερειακά ειςόδου εξόδου για τον ζλεγχο των διακοπτϊν και των Leds. Δθμιουργοφμε κφρεσ εξόδου (Peripherals -> Microcontroller Peripherals -> PIO (Parallel I/O) [Εικόνα 14] και τισ μετονομάηουμε ςε Leds [Εικόνα 15]. Ακολουκϊντασ τθν ίδια διαδικαςία δθμιουργοφμε κφρεσ ειςόδου (Direction -> Input) και τισ μετονομάηουμε ςε switches. Για τον ζλεγχο των Seven Segment Displays κα κάνουμε χριςθ του component Parallel Port από το πακζτο Altera University Program. (University Program -> Generic I/O -> Parallel Port). τθ ςυνζχεια πρζπει να επιλεχκεί από τα Presets ωσ ςυςκευι ειςόδου / εξόδου τα Seven Segment Display και να επιλεγοφν τα digits 3 to 0. τθν ςυνζχεια κα ακολουκθκεί θ ίδια διαδικαςία για τθν ειςαγωγι των digits 4 to 7 [Εικόνα 16]. 48/110

Εικόνα 14 SoPC Builder: Output Εικόνα 15 SoPC Builder: Μετονομαςία των LEDs Εικόνα 16 SoPC Builder: Seven Segment Displays 49/110

Ζχοντασ ολοκλθρϊςει το ςχεδιαςμό κα πρζπει να ορίςουμε τισ διευκφνςεισ των υποςυςτθμάτων με αυτόματο ι μθ τρόπο. Ο SOPC παρζχει τθ δυνατότθτα του να τισ ορίςει αυτόματα (System -> Assign Base Addresses) εξαφανίηοντασ τυχόν errors ι warnings που υπιρχαν. Λόγω του ότι το ςφςτθμα δε κα περιζχει περιςςότερα του ενόσ από τα εν λόγω υποςυςτιματα μετονομάςτθκαν αφαιρϊντασ το "_0" από το όνομα τουσ και ζτςι ζχουμε το ολοκλθρωμζνο ςφςτθμα όπωσ παρουςιάηεται ςτθν παρακάτω εικόνα [Εικόνα 17]. Εικόνα 17 SoPC Builder: Ολοκλθρωμζνο φςτθμα Σο τελευταίο βιμα είναι να πατιςουμε ςτο Generate ϊςτε ο SOPC Builder να δθμιουργιςει όλα τα απαραίτθτα αρχεία. Σο top level HDL αρχείο κακϊσ και vhd αρχεία για τα υποςυςτιματα, sdc αρχείο με πλθροφορίεσ για το χρονιςμό και block symbol files. Αφοφ ολοκλθρωκεί με επιτυχία θ διαδικαςία μποροφμε να προχωριςουμε ςτθν ενςωμάτωςθ του ςχεδίου ςτο Quartus II. 50/110

4.4 Ενςωμάτωςη ςτο Quartus II Για τθν ενςωμάτωςθ του παραγμζνου ςχεδίου από τον SOPC Builder ι το Qsys μπορεί να χρθςιμοποιθκεί VHDL, Verilog ι ςχθματικι απεικόνιςθ. τα πλαίςια τθσ πτυχιακισ κα γίνει με χριςθ VHDL. Δθμιουργοφμε το top-level VHDL αρχείο που κα ορίηει και κα ενεργοποιεί τα υπόλοιπα components. Πρζπει να ζχει το ίδιο όνομα με αυτό του Project και άρα ςτθν περίπτωςθ μασ nios_system.vhd [Εικόνα 18]. Εικόνα 18 Quartus II: Δθμιουργία top-level αρχείου το αρχείο αυτό μπορεί να αποτυπωκεί οποιαδιποτε λογικι είναι απαραίτθτθ και να γίνει θ κλιςθ πολλαπλϊν components. Για να χρθςιμοποιιςουμε το ςφςτθμα που ςχεδιάςαμε κα κάνουμε import ςτο Project τα αρχεία που δθμιοφργθςε ο Builder [Εικόνα 19]. Εικόνα 19 Quartus II: Ενςωμάτωςθ των αρχείων που παριγαγε ο SOPC Builder 51/110

Αντιςτοίχιςθ ακροδεκτϊν Εικόνα 20 Quartus II: Import Assignments Αρχικά κα πρζπει να ορίςουμε ςε ποιουσ πραγματικοφσ ακροδζκτεσ αντιςτοιχοφν τα ςιματα που κα χρθςιμοποιιςουμε. Για εκπαιδευτικοφσ ςκοποφσ θ Altera περιλαμβάνει ζνα csv (comma separated values) αρχείο για τθν γριγορθ αντιςτοίχιςθ των ακροδεκτϊν. Από το μενοφ Assignments -> Import Assignments επιλζγουμε το αρχείο DE2_pin_assignements.csv [Εικόνα 20]. ε περίπτωςθ που κάνουμε χριςθ του Quartus II 12.1 θ παραπάνω λειτουργία δε κα ολοκλθρωκεί λόγο προβλιματοσ του προγράμματοσ που λφνεται με τθν εγκατάςταςθ του Service Pack 1 για τθν εν λόγω ζκδοςθ. Χρονιςμόσ Για το χρονιςμό του ςυςτιματοσ πρζπει να δθμιουργιςουμε ζνα sdc αρχείο μζςω του TimeQuest Timing Analyzer Wizard που περιγράφει τουσ χρονικοφσ περιοριςμοφσ του ςυςτιματοσ. Πατϊντασ Next ςτθν πρϊτθ εικόνα φτάνουμε ςτο βιμα που φαίνεται ςτο παρακάτω ςτιγμιότυπο [Εικόνα 21]. Εδϊ πρζπει να ορίςουμε τθ περίοδο που κα ζχει το clock μασ (20ns = 50MHz) κακϊσ και ποιο κα είναι το input pin. Σο αποτζλεςμα αυτοφ του οδθγοφ είναι θ δθμιουργία ενόσ sdc αρχείου που περιζχει τθν εντολι create_clock -name "CLOCK_50" -period 20.000ns [get_ports {CLOCK_50}] 52/110

Εικόνα 21 Quartus II: TimeQuest Timing Analyzer Wizard και δθμιουργεί το clock που χρειάηεται το ςφςτθμα. Μποροφμε να παρατθριςουμε ςτθν Timing ανάλυςθ του ςυςτιματοσ [Εικόνα 22] ότι ζχουν δθμιουργθκεί τζςςερα clocks. Εικόνα 22 Quartus II: Χρονικι Ανάλυςθ Σο πρϊτο παράγεται αυτόματα από το Quartus για τθν επικοινωνία με τθν JTAG UART, το δεφτερο είναι το ρολόι του ςυςτιματοσ που ορίςαμε ενϊ τα άλλα δφο 53/110

δθμιουργοφνται από το PLL κφκλωμα που είναι απαραίτθτο για το ςωςτό χρονιςμό τθσ SDRAM και κα αναλυκεί ςτθ ςυνζχεια. Χρονιςμόσ τθσ SDRAM - PLL Για τθ ςωςτι λειτουργία τθσ SDRAM ςτο FPGA που χρθςιμοποιοφμε είναι απαραίτθτθ θ δθμιουργία ενόσ PLL (Phased-Locked Loop) αρχείου. Ο λόγοσ είναι ότι εξαιτίασ των φυςικϊν χαρακτθριςτικϊν του DE2 πρζπει το ρολόι τθσ SDRAM να οδθγεί το ρολόι του ςυςτιματοσ κατά 3 nanoseconds. Για να δθμιουργιςουμε αυτό το κφκλωμα κα πρζπει να γίνει χριςθ μίασ Megafunction του Quartus II, τθσ ALTPLL, μζςω του Quartus II MegaWizard Plug-In Manager. Από το μενοφ Tools -> MegaWizard Plug-In Manager ξεκινάμε τον οδθγό. το πρϊτο βιμα επιλζγουμε το Create a new custom megafunction varation ενϊ ςτθ ςυνζχεια διαλζγουμε από τα εγκατεςτθμζνα Plug-Ins τθσ κατθγορίασ I/O το ALTPLL και δίνουμε όνομα ςτο αρχείο sdram_pll.vhd [Εικόνα 23]. το επόμενο βιμα ορίηουμε πωσ το ρολόι μασ είναι τθσ τάξθσ των 50MHz και βεβαιωνόμαςτε πωσ θ οικογζνεια FPGA που είναι επιλεγμζνθ είναι θ Cyclone II [Εικόνα 24]. Εικόνα 23 Quartus II: MegaWizard Plug-In Manager - ALTPLL 54/110

Εικόνα 24 Quartus II: MegaWizard ALTPLL 3/10 το επόμενο βιμα από - επιλζγουμε τα checkboxes γιατί τα υπόλοιπα ςιματα δε χρειάηονται [Εικόνα 25]. Εικόνα 25 Quartus II: MegaWizard ALTPLL 4/10 55/110

το επόμενο βιμα απλά πατάμε Next ϊςπου να φτάςουμε ςτθν παρακάτω εικόνα και να ορίςουμε το ρολόι c0 να ζχει phase shift τθσ τάξθσ των -3 ns [Εικόνα 26]. Εικόνα 26 Quartus II: MegaWizard ALTPLL 6/10 ενϊ για τα υπόλοιπα απλά ορίηουμε τθ ςυχνότθτα (50MHz) ςτθν οποία κζλουμε να λειτουργοφν. Σζλοσ διαλζγουμε τα αρχεία που κζλουμε να εξάγουμε και πατάμε ςτο Finish [Εικόνα 27]. Εικόνα 27 Quartus II: MegaWizard ALTPLL 10/10 Με αυτό τον τρόπο ζχουμε δθμιουργιςει ζνα component sdram_pll που κα το κάνουμε instantiate από το top-level VHDL μασ. 56/110

4.5 υγγραφή top-level vhdl Ζχοντασ δθμιουργιςει τα απαραίτθτα components τόςο με τον SOPC builder όςο και με τον MegaFunction Wizard ιρκε θ ϊρα του ςχεδιαςμοφ του ανϊτερου επιπζδου του ςυςτιματοσ. το top-level nios_system.vhd αρχείο αρχικά ορίηουμε τθν top-level οντότθτα nios_system. ENTITY nios_system IS PORT ( SW : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLOCK_50 : IN STD_LOGIC; LEDG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); UART_RXD : IN STD_LOGIC; UART_TXD : OUT STD_LOGIC; DRAM_DQ : inout std_logic_vector (15 downto 0); DRAM_ADDR : out std_logic_vector (11 downto 0); DRAM_BA_1 : buffer std_logic; DRAM_BA_0 : buffer std_logic; DRAM_CAS_N : out std_logic; DRAM_RAS_N : out std_logic; DRAM_CLK : out std_logic; DRAM_CKE : out std_logic; DRAM_CS_N : out std_logic; DRAM_WE_N : out std_logic; DRAM_UDQM : buffer std_logic; DRAM_LDQM : buffer std_logic ); END nios_system; Χρθςιμοποιϊντασ τθν ονοματολογία του csv αρχείου για τα PIN Assignments ορίηουμε τθν οντότθτα nios_system. Με τθ βοικεια τθσ διλωςθσ PORT γίνονται οι δθλϊςεισ των ςθμάτων διαςφνδεςθσ. Σο CLOCK_50 αντιςτοιχεί ςτο ρολόι των 50MHz του αναπτυξιακοφ μασ, το SW ςτουσ διακόπτεσ, το LEDG ςτα πράςινα leds, ενϊ τα DRAM_* pins αναφζρονται ςτα ςιματα που χρειάηεται θ SDRAM για τθ λειτουργία τθσ. 57/110

τθ ςυνζχεια ορίηουμε τθν αρχιτεκτονικι του ςυςτιματοσ. Ακολουκεί θ διλωςθ των δομικϊν ςτοιχείων nios_sopc και sdram_pll ενϊ γίνεται και θ ενεργοποίθςθ των αντίςτοιχων ςτιγμιότυπων. COMPONENT nios_sopc port ( -- global signals: signal clk_0 : IN STD_LOGIC; signal reset_n : IN STD_LOGIC; -- the_leds signal out_port_from_the_leds : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); -- the_switches signal in_port_to_the_switches : IN STD_LOGIC_VECTOR (7 DOWNTO 0); -- the_uart signal rxd_to_the_uart : IN STD_LOGIC; signal txd_from_the_uart : OUT STD_LOGIC; -- sdram signal zs_addr_from_the_sdram : OUT STD_LOGIC_VECTOR (11 DOWNTO 0); signal zs_ba_from_the_sdram : BUFFER STD_LOGIC_VECTOR (1 DOWNTO 0); signal zs_cas_n_from_the_sdram : OUT STD_LOGIC; signal zs_cke_from_the_sdram : OUT STD_LOGIC; signal zs_cs_n_from_the_sdram : OUT STD_LOGIC; signal zs_dq_to_and_from_the_sdram : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0); signal zs_dqm_from_the_sdram : BUFFER STD_LOGIC_VECTOR (1 DOWNTO 0); signal zs_ras_n_from_the_sdram : OUT STD_LOGIC; signal zs_we_n_from_the_sdram : OUT STD_LOGIC ); END COMPONENT; 58/110

COMPONENT sdram_pll port ( signal inclk0 : IN STD_LOGIC; signal c0 : OUT STD_LOGIC; signal c1 : OUT STD_LOGIC ); end COMPONENT; Ο παρακάτω κϊδικασ εξυπθρετεί δφο ςκοποφσ signal system_clock : STD_LOGIC; signal BA : STD_LOGIC_VECTOR(1 DOWNTO 0); signal DQM : STD_LOGIC_VECTOR(1 DOWNTO 0); Ο SOPC builder για τισ Bank Addresses δθμιουργεί δυο διανφςματα των δφο bits ba_from_the_sdram, zs_dqm_from_the_sdram όμωσ ςτα Pin Assignments είναι οριςμζνα ςαν δφο διαφορετικά ςιματα για το κακζνα. Δθμιουργιςαμε λοιπόν τα DQM και ΒΑ ςτα οποία δίνονται οι τιμζσ από τα τζςςερα ςιματα και ςτθ ςυνζχεια τροφοδοτοφνται ωσ δφο διανφςματα ςτον nios_sopc component. DRAM_BA_1 <= BA(1); DRAM_BA_0 <= BA(0); DRAM_UDQM <= DQM(1); DRAM_LDQM <= DQM(0); zs_ba_from_the_sdram => BA zs_dqm_from_the_sdram => DQM To system_clock είναι το βαςικό ρολόι του ςυςτιματοσ. Σο pll Που φτιάξαμε κατά τθ διάρκεια ενεργοποίθςθσ του ςτιγμιότυποφ του δζχεται ωσ είςοδο το ρολόι του ςυςτιματοσ και παράγει το ζνα ρολόι με τθν αρνθτικι μετατόπιςθ των 3ns που οδθγεί τθν SDRAM αλλά και το system_clock που οδθγεί το υπόλοιπο ςφςτθμα. 59/110

neg_3ns : sdram_pll port map ( inclk0 c0 c1 ); => CLOCK_50, => DRAM_CLK, => system_clock Σζλοσ ςυμπεριλαμβάνεται και θ ενεργοποίθςθ του nios_sopc. nios_sopc_inst : nios_sopc port map( out_port_from_the_leds => LEDG, clk_0 => system_clock, in_port_to_the_switches => SW, reset_n => '1', rxd_to_the_uart => UART_RXD, txd_from_the_uart => UART_TXD, zs_addr_from_the_sdram zs_ba_from_the_sdram zs_cas_n_from_the_sdram zs_cke_from_the_sdram zs_cs_n_from_the_sdram zs_dq_to_and_from_the_sdram zs_dqm_from_the_sdram zs_ras_n_from_the_sdram zs_we_n_from_the_sdram ); => DRAM_ADDR, => BA, => DRAM_CAS_N, => DRAM_CKE, => DRAM_CS_N, => DRAM_DQ, => DQM, => DRAM_RAS_N, => DRAM_WE_N Σροφοδοτείται το ςτιγμιότυπο με τα αντίςτοιχα ςιματα. το reset δίνεται θ μονάδα κακϊσ είναι active_low. 60/110

4.6 Προγραμματιςμόσ του FPGA Ζχοντασ ολοκλθρϊςει τθν ενςωμάτωςθ του Nios II και τθσ υπόλοιπθσ απαραίτθτθσ λογικισ προχωράμε ςτο Compilation του Project (Processing -> Start Compilation). Αφοφ ολοκλθρωκεί με επιτυχία γίνεται ο προγραμματιςμόσ (Tools -> Programmer) τθσ αναπτυξιακισ πλακζτασ επιλζγοντασ το sof αρχείο που ζχει παραχκεί. Εικόνα 28 Quartus II: Programmer Γίνεται επιλογι του αρχείου sof και επιλζγεται το Program/Configure. Αφοφ αναγνωριςτεί το FPGA, μζςω του Auto Detect, πατϊντασ ςτο Start ξεκινάει θ διαδικαςία και πλζον είμαςτε ζτοιμοι για το ανϊτερο ςτάδιο προγραμματιςμοφ του επεξεργαςτι [Εικόνα 28]. 61/110

Κεφάλαιο 5: Διαδικαςία ςχεδιαςμού και υλοποίηςησ του λογιςμικού του ςυςτήματοσ 5.1 Ειςαγωγή ςτη πλατφόρμα Nios II Software Build Tools for Eclipse Για τον προγραμματιςμό του Nios II με ςχεδιαςμό εφαρμογισ ςε C/C++ θ Altera προτείνει το Nios II Software Build Tools που βαςίηεται ςτθν πλατφόρμα Eclipse ενϊ το παλαιότερο Nios II IDE αποτελεί legacy εργαλείο. Η πλατφόρμα Nios II SBT υποςτθρίηει τθ δθμιουργία εφαρμογϊν για όλα τα ςυςτιματα με ενςωματωμζνουσ επεξεργαςτζσ Nios II και εξυπθρετεί όλεσ τισ ανάγκεσ προγραμματιςμοφ όπωσ τθ δθμιουργία, τθν εκτζλεςθ τθν εκςφαλμάτωςθ και τθν ανάλυςθ (profiling) των προγραμμάτων. Η ζκδοςθ που χρθςιμοποιικθκε για τθν υλοποίθςθσ αυτισ τθσ εφαρμογισ είναι θ Nios II Software Build Tools for Eclipse (SBT4E) Version: 12.1 Μεκοδολογία ςχεδίαςθσ Αρχικά ορίηουμε το workbench που κα εργαςτοφμε και που κα περιζχει πλθροφορίεσ για τα Projects μασ. Σο περιβάλλον τθσ εφαρμογισ επιτρζπει τθν τροποποίθςθ του, ϊςτε να καλφπτει τισ δικζσ μασ ανάγκεσ. Παρζχει πολλαπλά Perspectives τα οποία εμπεριζχουν Views. Ωσ perspective νοείται ζνα ςφνολο από εργαλεία που παρζχει το περιβάλλον, τα οποία προβάλλονται μζςα από τα αντίςτοιχα τουσ views, και επιτρζπει τθν εκτζλεςθ ςυγκεκριμζνου υποςυνόλου λειτουργιϊν. Σα Perspectives που παρζχονται είναι μεταξφ άλλων αυτά τθσ C/C++, εκςφαλμάτωςθσ, Nios II, GIT αποκετθρίου και άλλα που φαίνονται ςτθν παρακάτω εικόνα [Εικόνα 29]. 62/110

Εικόνα 29 Nios II SBT: Perspectives τα πλαίςια τθσ πτυχιακισ ζγινε χριςθ των Perspective άμεςα ςχετιηόμενα με τον Nios II. ε κάκε perspective μποροφν να προςτεκοφν Views ϊςτε να υποςτθρίηονται οι επικυμθτζσ δυνατότθτεσ [Εικόνα 30]. Εικόνα 30 Nios II SBT: Προςκικθ των Views ςτα Perspectives Παρακάτω αποτυπϊνεται ζνα ςτιγμιότυπο του IDE ςε Nios II Perspective και με ενεργοποιθμζνα τα Views του Project Explorer, τθσ Αναηιτθςθσ, των Problems, Tasks, Console, Properties και Nios II Console [Εικόνα 31]. 63/110

Εικόνα 31 Nios II SBT: Nios II Perspective Για τθ δθμιουργία εφαρμογισ για ςφςτθμα με ενςωματωμζνο επεξεργαςτι Nios II είναι απαραίτθτο να είναι ενεργοποιθμζνο το Nios II Perspective. 5.2 χεδίαςη ςτη πλατφόρμα Nios II Software Build Tools for Eclipse Βαςικόσ κορμόσ τθσ εφαρμογισ είναι θ δθμιουργία του Application Project και του BSP (Board Support Package). Σο Application Project περιζχει το Business Logic τθσ εφαρμογισ ενϊ το BSP είναι το ενδιάμεςο επίπεδο που επιτρζπει τθν επικοινωνία με το hardware. Σο BSP ςυγκεκριμζνα ζχει τθ λογικι τθσ βιβλιοκικθσ που παρζχει πρόςβαςθ ςτα επιμζρουσ τμιματα και περιφερειακά του ςυςτιματοσ. Είναι φυςικά δυνατό να προςκζςουμε και δικζσ μασ βιβλιοκικεσ. Από το Menu File -> Nios II Application and BSP from Template ξεκινάει ο οδθγόσ δθμιουργίασ των αντίςτοιχων Project [Εικόνα 32]. 64/110

Πρϊτο βιμα είναι θ επιλογι του SOPC αρχείου που δθμιουργικθκε ςτο προθγοφμενο μζροσ. Αφοφ επιλεχκεί αναγνωρίηεται και προβάλλεται ςτο πεδίο CPU name το όνομα που ζχουμε δϊςει ςτον επεξεργαςτι Nios II. τθ ςυνζχεια πρζπει να δοκεί ζνα όνομα για το Project και ζνασ φάκελοσ για να αποκθκευτεί. Εικόνα 32 Nios II SBT: Οδθγόσ δθμιουργίασ Project από Templates Για τισ ανάγκεσ τθσ εφαρμογισ κα χρθςιμοποιθκεί το template "Hello World" που παρζχει απλά τθ βάςθ για τθ δθμιουργία τθσ δικιάσ μασ εφαρμογισ και παρουςιάηει τθ ςωςτι δομι. 65/110

τθν επόμενθ ςελίδα του οδθγοφ δε χρειάηεται να γίνει κάποια αλλαγι κακϊσ απλά ηθτείται όνομα και τοποκεςία του BSP Project. Πατϊντασ ςτο Finish θ πλατφόρμα αντιγράφει τα απαραίτθτα αρχεία ςτουσ φακζλουσ των Project και δθμιουργεί τα makefiles. υγκεκριμζνα τα makefiles είναι αρχεία που περιγράφουν τθ διαδικαςία του "χτιςίματοσ" (build) τθσ εφαρμογισ και του BSP αντίςτοιχα. Σζλοσ εκτελεί τθν εντολι make clean που κακαρίηει τυχόν dependencies και ετοιμάηει το Project για τθ διαδικαςία του χτιςίματοσ ( Build). Για να χτίςουμε το Project αρκεί να πάμε ςτο μενοφ Project -> Build Project και αν όλα ζχουν γίνει ςωςτά κα λάβουμε ςτθν κονςόλα μινυμα πωσ ζχει ολοκλθρωκεί το Build. Σα ποιο ςθμαντικά αρχεία που παράγονται από τθ διαδικαςία του Build είναι το *.elf αρχείο και το system.h. Σο elf αρχείο (Executable Linkable Format) είναι ςτθν ουςία θ ζξοδοσ του compiled κϊδικα που κα εκτελεςτεί αφοφ περαςτεί ςτο FPGA και εμπεριζχεται ςτο Application Project. Σο δεφτερο ςθμαντικό αρχείο είναι το system.h που είναι ζνασ header file περιγραφισ του ςυςτιματοσ. Εμπεριζχεται ςτο BSP Project και περιζχει το χάρτθ μνιμθσ όλων των υποςυςτθμάτων, το BASE Address αυτϊν κακϊσ και τα ςυμβολικά τουσ ονόματα που μποροφν να χρθςιμοποιθκοφν αργότερα ςτθν εφαρμογι. Σο επόμενο βιμα είναι να τρζξουμε το πρόγραμμα μασ ςτον Nios II που ζχουμε δθμιουργιςει ςτο FPGA. Αυτό προχποκζτει φυςικά πωσ ζχει χρθςιμοποιθκεί ο Quartus II Programmer για τθ διαμόρφωςθ του FPGA με τθ βοικεια του sof αρχείου που είχε παραχκεί από το Quartus II [Εικόνα 28]. Αφοφ το FPGA είναι προγραμματιςμζνο με βάςθ το sof που είχε δθμιουργθκεί μποροφμε να εκτελζςουμε τθν εφαρμογι ωσ Nios II Hardware. υγκεκριμζνα δεξί click ςτο όνομα του Project και Run As -> Nios II Hardware. Η διαδικαςία αυτι περιλαμβάνει τθ δθμιουργία ενόσ Configuration για το Nios II Hardware που κα επιτρζψει τθν επικοινωνία με τθ ςυςκευι, build του Project αν χρειάηεται και τζλοσ 66/110

το download του εκτελζςιμου (elf αρχείου) ςτον Nios II με ςκοπό τθν εκτζλεςθ αυτοφ. Για το ςκοπό αυτό πρζπει να παραμετροποιιςουμε κατάλλθλα το ςτιγμιότυπο του Configuration που ζχουμε δθμιουργιςει. υγκεκριμζνα ςτθ καρτζλα Project μποροφμε να επιλζξουμε τον επεξεργαςτι που κα τρζξει θ εφαρμογι (ςτθ δικιά μασ περίπτωςθ είναι ζνασ), ποια ςυςκευι κα χρθςιμοποιθκεί για είςοδο - ζξοδο (τθν οποία κα αλλάξουμε αργότερα με ςκοπό τθ προβολι ενόσ άλλου τμιματοσ τθσ πλατφόρμασ) κακϊσ και πιο προχωρθμζνεσ επιλογζσ για τθ χριςθ Profiling δυνατοτιτων. τα πλαίςια αυτισ τθσ εφαρμογισ δε χρειάηεται να γίνει κάποια αλλαγι ςτισ ρυκμίςεισ αυτζσ [Εικόνα 33]. Εικόνα 33 Nios II SBT: Παράκυρο του Run Configurations / Καρτζλα Project 67/110

Η επόμενθ καρτζλα Target Connection είναι απαραίτθτο να ρυκμιςτεί ςωςτά ϊςτε να επιτφχουμε τθ ςωςτι διαςφνδεςθ του Host μθχανιματοσ με το FPGA. Εικόνα 34 Nios II SBT: Παράκυρο του Run Configurations / Καρτζλα Target Connection - Μθ ορατι ςυςκευι > Refresh Connections ε περίπτωςθ που δεν είναι ορατι θ ςυςκευι μασ, αρκεί να γίνει click ςτο Refresh Connections [Εικόνα 34]. τθ παραπάνω εικόνα υπάρχει μια επιςκόπθςθ του τρόπου διαςφνδεςθσ, τθσ ςυςκευισ αλλά και τθσ αρχιτεκτονικισ του ςυςτιματοσ. Δεν απαιτείται κάποια αλλαγι ςτισ υπόλοιπεσ καρτζλεσ παρά μόνο διαδοχικά click ςτο Apply και ςτο Run. Αν όλα ζχουν προχωριςει χωρίσ πρόβλθμα κα πρζπει ςτο View: Nios II Console view να ζχει εμφανιςτεί το μινυμα Hello from Nios II!. Σο μινυμα αυτό προβλικθκε ςτθν κονςόλα γιατί θ ςυςκευι που ζχουμε ορίςει ωσ standard input - output είναι θ JTAG UART. υγκεκριμζνα ωσ τϊρα ζχουμε ορίςει τθν JTAG UART ωσ stdin, stdout και stderr ςυςκευι επικοινωνίασ. 68/110

O κϊδικασ που είχε δθμιουργιςει το template για μασ, υπάρχει ςτο αρχείο hello_world.c. #include <stdio.h> int main() { printf("hello from Nios II!\n"); } return 0; το πλαίςιο τθσ πτυχιακισ αυτισ ηθτικθκε θ ςειριακι επικοινωνία με τον Nios II. Για το ςκοπό αυτό ενςωματϊκθκε, όπωσ περιγράφτθκε ςτο προθγοφμενο τμιμα, ςτο ςφςτθμα μασ το component UART RS-232 Serial Port. Για να επιτρζψουμε ςτθν εφαρμογι να χρθςιμοποιιςει τθ ςειριακι κφρα ερευνικθκαν δφο μζκοδοι. Ο ζνασ τρόποσ περιζχει τον οριςμό τθσ ςειριακισ κφρασ που ενςωματϊκθκε ςτο ςφςτθμα ωσ standard input - output τθσ εφαρμογισ. Ο δεφτεροσ περιγράφει τθ δυνατότθτα του να ανοίξουμε προγραμματιςτικά μια δίοδο επικοινωνίασ. Οι δφο αυτοί τρόποι κα χρθςιμοποιθκοφν ςυμπλθρωματικά κατά τθ ςυγγραφι τθσ εφαρμογισ. Για τον οριςμό των standard input/output και άλλων ρυκμίςεων του ςχεδίου είναι απαραίτθτθ θ χριςθ του BSP Editor. BSP Editor Ζνα ςθμαντικό εργαλείο του Nios II SBT (Software Build Tools) είναι ο BSP Editor. Με τθ βοικεια του BSP Editor μποροφμε να ζχουμε μια επιςκόπθςθ του ςυςτιματοσ μασ, αλλά και να προβοφμε ςε αλλαγζσ αυτοφ. τθν παρακάτω εικόνα παρουςιάηεται το ςτιγμιότυπο του BSP Editor για το ςφςτθμα που ζχει περιγραφτεί ζωσ τϊρα *Εικόνα 35]. 69/110

Εικόνα 35 Nios II SBT: BSP Editor τθν αρχικι ςελίδα μασ δίνονται βαςικζσ άλλα και προχωρθμζνεσ επιλογζσ για το ςφςτθμα. Περιζχονται switches όπωσ το enable_reduced_device_drivers που επιτρζπει τθν ελαχιςτοποίθςθ του κϊδικα που χρειάηεται για επικοινωνία με τισ ςυςκευζσ του ςυςτιματοσ. Εικόνα 36 Nios II SBT: Οριςμόσ τθσ uart ωσ ςυςκευι ειςόδου/εξόδου Μια ςθμαντικι ρφκμιςθ που πραγματοποιείται εδϊ είναι θ αλλαγι των stdin, stdout και stderr ςυςκευϊν. Κακϊσ ο ςκοπόσ τθσ πτυχιακισ είναι θ ςειριακι επικοινωνία με τον Nios II επιλζγεται θ UART ωσ standard ςυςκευι ειςόδου / εξόδου και ζτςι μασ παρζχεται τρομερι ευκολία επικοινωνίασ [Εικόνα 36]. Ζνα 70/110

παράδειγμα είναι μια ότι μια απλι printf μετά από αυτι τθν αλλαγι κα αποςτζλλεται πλζον ςτθ ςειριακι κφρα. τθ καρτζλα Software Packages μποροφμε να ενεργοποιιςουμε επιπλζον software components αν χρειάηεται ενϊ ςτθ καρτζλα Drivers υπάρχει μια λίςτα από Drivers που χρθςιμοποιοφνται για τθν επικοινωνία με τα υποςυςτιματα τθσ εφαρμογισ όπωσ αυτά περιγράφονται ςτο αρχείο system.h [Εικόνα 37]. Εικόνα 37 Nios II SBT: BSP Editor / Καρτζλα Drivers τθ καρτζλα Linker script γίνεται το mapping των περιοχϊν του κϊδικα με τισ φυςικζσ - πραγματικζσ μνιμεσ (physical memories) του ςυςτιματοσ. Μποροφμε επίςθσ να δοφμε τθν περιοχι διευκφνςεων που καταλαμβάνουν κακϊσ και το μζγεκοσ τουσ. τθν τελευταία καρτζλα προβάλλονται τα αρχεία που κα δθμιουργθκοφν / αντιγραφοφν κατά τθ δθμιουργία του BSP. Ζχοντασ ουςιαςτικά αλλάξει μόνο τα stdin, stdout, stderr devices κάνουμε Generate του BSP. Αποκθκεφονται οι αλλαγζσ μασ ςτο BSP project ενϊ αφοφ παραχκοφν τα αντίςτοιχα αρχεία πρζπει να γίνει ξανά Build του BSP και του Application Project. Αν δοκιμάςουμε να τρζξουμε εκ νζου τθν εφαρμογι (Run as Nios II Hardware) κα παρατθριςουμε ότι δεν υπάρχει κάποια ζξοδοσ ςτθν κονςόλα του Nios II. Ο λόγοσ είναι ότι πλζον ζχουμε κατευκφνει τθν ζξοδο του Nios II ςτθν ςειριακι κφρα του υπολογιςτι μασ. Για να επικοινωνιςουμε με τον Nios II είναι απαραίτθτθ θ χριςθ μιασ host εφαρμογισ. ε αυτό το βιμα τθσ πτυχιακισ κα χρθςιμοποιθκεί ζνα πρόγραμμα που ζχει αυτζσ τισ δυνατότθτεσ ενϊ αργότερα κα υλοποιθκεί host εφαρμογι ςε C++. Με τθ βοικεια τθσ εφαρμογισ Tera Term πραγματοποιοφμε 71/110

ςφνδεςθ με τθ ςειριακι κφρα του υπολογιςτι. τθν πραγματικότθτα είναι μια virtual ςειριακι κφρα κακϊσ δθμιουργείται από τον USB to Serial Adaptor που με τθ χριςθ μιασ USB κφρα του υπολογιςτι και ενόσ ςειριακοφ καλωδίου μασ επιτρζπει τθ ςφνδεςθ με τον Nios II. Για τθ ςωςτι υλοποίθςθ τθσ επικοινωνίασ πρζπει να γίνουν οι απαραίτθτεσ ρυκμίςεισ όπωσ το Baud Rate που είχαμε κακορίςει κατά τθν δθμιουργία του component UART RS232 Serial Port και τθσ ενςωμάτωςθσ αυτοφ ςτο ςφςτθμα μασ [Εικόνα 38]. Εικόνα 38 Ρυκμίςεισ τθσ ςειριακισ επικοινωνίασ ςτθν Host εφαρμογι Tera Term Αφοφ παραμετροποιθκεί θ ςφνδεςθ, κάνοντασ reset τον Nios II (πατϊντασ ςτο Push Button που είχε οριςτεί για reset) λαμβάνουμε ςτθν οκόνθ, μζςω τθσ ςειριακισ κφρασ, το μινυμα τθσ printf [Εικόνα 39]. Εικόνα 39 Προβολι μθνφματοσ από τον Nios II μζςω ςειριακισ κφρασ 72/110

5.3 Τλοποίηςη πειραματικήσ εφαρμογήσ ςειριακήσ επικοινωνίασ και χρήςησ περιφερειακών. 5.3.1 Nios II SBT for Eclipse Η δοκιμαςτικι αυτι εφαρμογι παρζχει ςτο χριςτθ ζνα μενοφ επιλογϊν και με βάςθ τθν είςοδο που λαμβάνει από τθν ςειριακι κφρα εκτελεί το αντίςτοιχο τμιμα κϊδικα. Σα επιμζρουσ τμιματα κϊδικα εκτελοφν ςφνολα εντολϊν που ςχετίηονται με τα περιφερειακά του ςυςτιματοσ όπωσ οι διακόπτεσ, τα LEDs και τα Seven Segment Displays με ςκοπό τθ μεταξφ τουσ αλλθλεπίδραςθ αλλά και τθν επίτευξθ διαδραςτικότθτασ με τθ βοικεια τθσ ςειριακισ κφρασ. υγκεκριμζνα οι τρεισ υπο - εφαρμογζσ πραγματοποιοφν ζνα μοτίβο ςτα πράςινα LEDs με βάςθ παραμετροποιιςιμθ κακυςτζρθςθ, υπολογιςμοφσ με βάςθ τθν είςοδο που λαμβάνουν από τθν ςειριακι κφρα και τζλοσ αποτφπωςθ χαρακτιρων ςτα 7Segment Displays ακολουκϊντασ ζνα μοτίβο κίνθςθσ με δυνατότθτα ελζγχου τθσ ταχφτθτασ αυτοφ. Η λογικι τθσ εφαρμογισ αποτυπϊνεται ςτο παρακάτω διάγραμμα ροισ ενϊ αργότερα αναλφονται κάποια ςθμαντικά τμιματα του κϊδικα [χιμα 9]. 73/110

χιμα 9 Nios II SBT: Διάγραμμα Ροισ πειραματικισ εφαρμογισ Αρχικά γίνεται ο κακοριςμόσ των μεταβλθτϊν κάνοντασ χριςθ του HAL Layer που παρζχει το BSP Project. υγκεκριμζνα ενςωματϊνεται το αρχείο system.h ϊςτε να μποροφν να χρθςιμοποιθκοφν, οι καταςκευαςμζνεσ από το BSP μεταβλθτζσ, που περιγράφουν του ςφςτθμα μασ. το system.h ζχει παραχκεί κϊδικασ που περιγράφει όλα τα υποςυςτιματα του Nios II όπωσ αυτά ςχθματίηονται από το sopc info αρχείο που είχαμε δθλϊςει. Οι μεταβλθτζσ που περιγράφουν το κάκε 74/110

υποςφςτθμα περιζχουν πλθροφορίεσ όπωσ τθ κζςθ μνιμθσ του υποςυςτιματοσ, το όνομα και άλλα ςτοιχεία που μπορεί να χρειαςτοφν από το επίπεδο του λογιςμικοφ. Ο κακοριςμόσ των μεταβλθτϊν γίνεται με δθμιουργία volatile pointers που δείχνουν ςτο BASE address (διεφκυνςθ μνιμθσ) του αντίςτοιχου υποςυςτιματοσ. Ο τφποσ volatile δθλϊνει ςτον compiler πωσ θ τιμι ςτθν οποία δείχνει ο pointer είναι δυνατό να αλλάξει ανά πάςα ςτιγμι από κάποια εξωτερικι ενζργεια εκτόσ προγράμματοσ. Αυτό είναι απαραίτθτο κακϊσ για παράδειγμα οι τιμζσ των διακοπτϊν αλλάηουν ξεκάκαρα από ανκρϊπινθ παρζμβαςθ. volatile int * RED_LED_ptr = (int *) RED_LEDS_BASE; volatile int * GREEN_LEDS_BASE_ptr = (int *) GREEN_LEDS_BASE; volatile int * SW_switch_ptr = (int *) SWITCHES_BASE; volatile int * HEX3_HEX0_ptr = (int *) HEX3_HEX0_BASE; volatile int * HEX7_HEX4_ptr = (int *) HEX7_HEX4_BASE; volatile int * PUSHBUTTONS_ptr = (int *) PUSHBUTTONS_BASE; Οι παραπάνω δείκτεσ χρθςιμοποιοφνται κατά τθν εκτζλεςθ του προγράμματοσ και τθν υλοποίθςθ του business logic τθσ εφαρμογισ. ε πολλά ςθμεία τθσ εφαρμογισ χρθςιμοποιείται θ ςυνάρτθςθ delaycalculator που δεχόμενθ τθν τιμι του περιεχομζνου του δείκτθ των διακοπτϊν παράγει ανάλογθ κακυςτζρθςθ απαραίτθτθ για τισ εναλλαγζσ ςτα οπτικά μοτίβα και τθν παρατιρθςθ αυτϊν από το ανκρϊπινο μάτι. Η ςειριακι επικοινωνία υλοποιείται με τθ χριςθ απλϊν εντολϊν τφπου printf κακϊσ ζχουμε επιλζξει πωσ θ ζξοδοσ του ςυςτιματοσ (stdout) κα είναι θ ςειριακι κφρα. Για εκπαιδευτικοφσ λόγουσ όμωσ ενςωματϊνεται ςτθν εφαρμογι και θ διαδικαςία χριςθσ τθσ ςειριακισ κφρασ αυτόνομα. υγκεκριμζνα ςτο επόμενο τμιμα τθσ εφαρμογισ γίνεται άνοιγμα τθσ ςειριακισ επικοινωνίασ για εγγραφι και ανάγνωςθ. Για να πραγματοποιθκεί αυτό αρκεί να προςπελαςτεί το υποςφςτθμα τθσ UART ωσ αρχείο για εγγραφι και ανάγνωςθ. 75/110

fp = fopen(uart_name, "r+"); if (fp) { Με αυτό το τρόπο μποροφμε να χρθςιμοποιοφμε εντολζσ τφπου getc για επικοινωνία με τθ ςειριακι κφρα. τθ ςυνζχεια γίνεται αναμονι για παραλαβι χαρακτιρα που κα κακορίςει ποιο υποςφςτθμα κα εκτελεςτεί. Μοτίβο ςτα LEDs Με τθν παραλαβι του "1" εκτελείται ζνα πρόγραμμα που δθμιουργεί μοτίβο ςτα πράςινα LEDS και επαναλαμβάνεται με ςυχνότθτα που ορίηεται από τον αρικμό των Switches που είναι τοποκετθμζνοι ςτο ON. Η επανάλθψθ αυτι διακόπτεται μόνο εάν ο χριςτθσ τοποκετιςει τουσ διακόπτεσ ςτο OFF. υγκεκριμζνα αρχικά αποτυπϊνεται θ τιμι των ανοικτϊν διακοπτϊν ςτα κόκκινα LEDs με ςκοπό τθν οπτικι αναπαράςταςθ αυτϊν. Εγγράφεται ςτθ τιμι του περιεχόμενου του δείκτθ των κόκκινων LEDs θ αντίςτοιχθ τιμι περιεχομζνου των διακοπτϊν. SW = *(SW_switch_ptr); *(RED_LED_ptr) = SW; delaycalculator(sw); τθ ςυνζχεια εκτελείται μια εςωτερικι επανάλθψθ ϊςτε να ανάψουν διαδοχικά τα 8 πράςινα LEDs με κακυςτζρθςθ των εςωτερικϊν μεταβάςεων ανάλογθ των ανοικτϊν διακοπτϊν. Για εκπαιδευτικοφσ λόγουσ θ εγγραφι τθσ εκάςτοτε τιμισ ςτα πράςινα LEDs γίνεται με τθ χριςθ τθσ IOWR_ALTERA_AVALON_PIO_DATA(GREEN_LEDS_BASE, sum); 76/110

μιασ ςυνάρτθςθσ τθσ Altera που ανικει ςε ζνα ςφνολο βοθκθτικϊν ςυναρτιςεων και πραγματοποιεί IOWR δθλαδι εγγραφι δεδομζνων ςε κάποια κφρα. Παίρνει ωσ όριςμα το BASE address του περιφερειακοφ και τθν τιμι εγγραφισ ςε αυτό (εδϊ το sum ορίηει το ποια πράςινα LEDs κα είναι ανοικτά ακολουκϊντασ το μοτίβο). Η ςυγκεκριμζνθ εντολι είναι ιςοδφναμθ με τθν *(GREEN_LED_ptr) = sum; που λειτουργεί με τον τρόπο που ζχει περιγραφεί. Σζλοσ αν κατά τθ διάρκεια των επαναλιψεων το πρόγραμμα ανιχνεφςει πωσ ζχουν κλείςει οι διακόπτεσ οδθγείται ςε ζξοδο από τον βρόγχο και κατευκφνεται ςτον προθγοφμενο βρόγχο επιλογισ χαρακτιρα. Επεξεργαςία δεδομζνων που λαμβάνονται από τθ ςειριακι κφρα Με τθν παραλαβι του χαρακτιρα "2" εκτελείται ζνα υπο-πρόγραμμα που προςομοιϊνει τθ χριςθ του Nios II ωσ υλικό που επεξεργάηεται δεδομζνα. Η υλοποίθςθ είναι απλι κακϊσ δζχεται από τθν ςειριακι κφρα τον αρικμό ςτον οποίο κα ικελε να υψϊςει το δφο και του επιςτρζφεται το αποτζλεςμα. Σο ενδιαφζρον είναι θ δθμιουργία custom hardware που να εκτελεί κάποια διεργαςία που ζχει περιγραφεί ωσ ςυνάρτθςθ ςε C. C2H Compiler Σο Nios 2 IDE υποςτθρίηει τον C2H Compiler ο οποίοσ δεν ζχει ακόμα μεταφερκεί ςτο Nios II SBT για τον Eclipse. υγκεκριμζνα ο C2Η υλοποιεί τθν μεταφορά ςυναρτιςεων που ζχουν γραφτεί ςε C και τθ μετάφραςθ αυτϊν ςε block υλικοφ. 77/110

Οι βελτιϊςεισ ςτο επίπεδο τθσ ταχφτθτασ εκτζλεςθσ είναι τρομερά υψθλζσ ςε περιπτϊςεισ που οι αλλθλεξαρτιςεισ των δεδομζνων επιτρζπουν ςτον C2H να υλοποιεί παράλλθλα διεργαςίεσ. Σο ςυχνότερο εμπόδιο ςτθν μεγιςτοποίθςθ του χρόνου εκτζλεςθσ των διεργαςιϊν είναι θ ταχφτθτα ανάγνωςθσ τθσ μνιμθσ. Αυτόσ είναι και ο λόγοσ που ο C2H Compiler απαιτεί βελτιςτοποιιςεισ ςτο επίπεδο τθσ χριςθσ τθσ μνιμθσ. Μια αλλαγι που επιφζρει δραματικι βελτίωςθ είναι θ μεταφορά των δεδομζνων από τθν αργι SDRAM ςτθν low-latency on-chip ram. Αν για παράδειγμα ζνα τμιμα τθσ εφαρμογισ επιβάλει τθν ανάγνωςθ πολλϊν δεδομζνων από τθν SDRAM κα μποροφςε να χρθςιμοποιθκεί θ ONCHIP μνιμθ ωσ ενδιάμεςοσ Buffer ανάμεςα ςτθν διεργαςία που επιτελεί ο hardware accelerator και τθσ τελικισ αποκικευςθσ των δεδομζνων ςτθν SDRAM. Ο τφποσ ςυναρτιςεων που μποροφν να επωφελθκοφν περιςςότερο από τθ μετατροπι τουσ ςε hardware με τον C2H Compiler είναι αυτζσ που επιτελοφν επαναλαμβανόμενεσ διεργαςίεσ ςε μεγάλα κομμάτια δεδομζνων. Σζτοιεσ είναι θ κρυπτογράφθςθ / αποκρυπτογράφθςθ ι το φιλτράριςμα δεδομζνων. Αντικζτωσ διεργαςίεσ που ζχουν πολλζσ εξαρτιςεισ δεδομζνων με αποτζλεςμα να απαιτείται ςειριακι εκτζλεςθ λειτουργιϊν ίςωσ τυγχάνουν καλφτερθσ βελτιςτοποίθςθσ αν εκτελεςτοφν κανονικά ςτον επεξεργαςτι. Από το περιβάλλον του Nios II IDE υπάρχει θ δυνατότθτα κάνοντασ δεξί click ςε κάποια ςυνάρτθςθ θ επιλογι "Accelerate with Nios II C2H Compiler". Τλοποιείται ζτςι θ εφκολθ δθμιουργία αντίςτοιχων hardware blocks βελτιϊνοντασ τθν ταχφτθτα εκτζλεςθσ των λειτουργιϊν τθσ ςυγκεκριμζνθσ ςυνάρτθςθσ αλλά και τθσ κατανάλωςθσ ενζργειασ ενςωματϊνοντασ ςτο προγραμματιηόμενο ςφςτθμα τθν υλοποίθςθ, από επίπεδο λογιςμικοφ ςε επίπεδο υλικοφ. Επαναδθμιουργεί αυτόματα με τθ χριςθ του SOPC Builder και του Quartus II νζο sof αρχείο που περιζχει τθν υλοποίθςθ. υγκεκριμζνα ο C2H αναλφει των κϊδικα, δθμιουργεί βελτιςτοποιιςεισ μελετϊντασ τισ εξαρτιςεισ μεταξφ των δεδομζνων τθσ εφαρμογισ, επιτελεί χρονοπρογραμματιςμό των διεργαςιϊν και τζλοσ παράγει ζναν C wrapper που 78/110

ενςωματϊνει και αποκρφπτει τθν πολυπλοκότθτα τθσ διαςφνδεςθσ του Nios II με τον hardware accelerator. τθ ςυνζχεια από το περιβάλλον του IDE απλά επιλζγεται από τον C2H compiler θ χριςθ του hardware για τθν υλοποίθςθ τθσ ςυνάρτθςθσ [Εικόνα 40]. Εικόνα 40 Nios II SBT: C2H Compiler υγκεντρωτικά ο C2H Compiler μετατρζπει μια ςυνάρτθςθ ςε C ςε block υλικοφ που τθν ενςωματϊνει ωσ component ςτον SOPC Builder και μασ επιτρζπει να τθν διαχειριςτοφμε από το Nios II IDE. Μοτίβο ςτα 7Segment Displays Η υπορουτίνα του προγράμματοσ επιςτρζφει ςτο αρχικό menu επιλογϊν όταν ανιχνεφςει πωσ οι διακόπτεσ είναι κλειςτοί. Με τθ παραλαβι του χαρακτιρα "3" γίνεται εκκίνθςθ ενόσ υποπρογράμματοσ που προβάλει ςτα 7Segment Displays το μινυμα "tei Ser" και το μετακινεί υλοποιϊντασ ολίςκθςθ του μοτίβου. Η ταχφτθτα τθσ ολίςκθςθσ ρυκμίηεται από τουσ διακόπτεσ ςτζλνοντασ τουσ ωσ όριςμα ςτθν ςυνάρτθςθ κακυςτζρθςθσ. Για το μοτίβο ολίςκθςθσ γίνεται αποτφπωςθ του αρχικοφ μθνφματοσ ςτα HEX Displays και ςτθ ςυνζχεια υλοποιείται μία επανάλθψθ που μετατοπίηει τον αρικμό (και άρα το μινυμα) με ενδιάμεςθ παραμετροποιιςιμθ κακυςτζρθςθ. 79/110

SW = *(SW_switch_ptr); *(RED_LED_ptr) = SW; delaycalculator(sw); tei = tei << 8; ser = ser << 8; *(HEX7_HEX4_ptr) = tei; *(HEX3_HEX0_ptr) = ser; Αν το πρόγραμμα ανιχνεφςει το κλείςιμο τον διακοπτϊν, επιςτρζφει τον χριςτθ ςτο αρχικό μενοφ. 5.4 Qt 5 - Εφαρμογή Εξυπηρετητή ειριακήσ Επικοινωνίασ Για τθν υλοποίθςθ host εφαρμογισ και τθν επίτευξθ τθσ ςειριακι επικοινωνία με τον Nios II χρθςιμοποιικθκε ο Qt Creator 5 και υλοποιικθκε ςυγγραφι τθσ εφαρμογισ ςε C++. Για τθ πραγματοποίθςθ τθσ ςειριακισ επικοινωνίασ χρθςιμοποιικθκε θ βιβλιοκικθ qextserialport [16] που υπόκειται ςe MIT License. Με τθ βοικεια τθσ βιβλιοκικθσ και του Qt 5 θ παροφςα εφαρμογι είναι crossplatform και άρα μπορεί να εκτελεςτεί ςε Windows, Linux, FreeBsd και Max OS X. Ειςαγωγι ςτο περιβάλλον Qt. To Qt 5 [17+ είναι ζνα περιβάλλον ανάπτυξθσ εφαρμογϊν που παράγει κϊδικα εκτελζςιμο ςε διαφορετικά λειτουργικά ςυςτιματα (cross - platform framework) Χρθςιμοποιείται εκτενϊσ για τθ δθμιουργία εφαρμογϊν, με γραφικό περιβάλλον ι μθ, χρθςιμοποιϊντασ μια εμπλουτιςμζνθ μορφι τθσ γλϊςςα προγραμματιςμοφ C++. Οι βαςικζσ ςυνιςτϊςεσ του Qt είναι θ φπαρξθ πολλϊν κλάςεων για τθν εφκολθ δθμιουργία γραφικοφ περιβάλλοντοσ, ςφνδεςθσ με βάςεισ δεδομζνων και θ κάλυψθ άλλων βαςικϊν αναγκϊν προγραμματιςμοφ. Σο Qt περιλαμβάνει τον Qt Creator ζνα περιβάλλον που ενςωματϊνει τθ δυνατότθτα του γραφιςτικοφ ςχεδιαςμοφ αλλά και προγραμματιςμοφ εφαρμογϊν. 80/110

5.4.1 Παρουςίαςη τησ εφαρμογήσ Η εφαρμογι υλοποιικθκε με χριςθ τθσ βιβλιοκικθσ qextserialport, παραδειγμάτων που εςωκλείονταν, του γραφικοφ ςχεδιαςμοφ του QT και τθσ event driver ςχεδίαςθσ. Ενςωματϊκθκε θ λειτουργικότθτα που παρζχει θ βιβλιοκικθ ςε ζνα γραφικό περιβάλλον που επιτρζπει τθν αποςτολι και λιψθ δεδομζνων από τθ ςειριακι κφρα με δυνατότθτα ρφκμιςθσ των ιδιοτιτων τθσ ςφνδεςθσ. Ακολουκεί ζνα ςτιγμιότυπο τθσ εφαρμογισ που αναπτφχκθκε *Εικόνα 41]. Εικόνα 41 τιγμιότυπο Εφαρμογισ ειριακισ επικοινωνίασ 81/110