Ανάπτυξη ενςωματωμένου ςυςτήματοσ για χαρακτηριςμό τηλεπικοινωνιακών διατάξεων

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

Download "Ανάπτυξη ενςωματωμένου ςυςτήματοσ για χαρακτηριςμό τηλεπικοινωνιακών διατάξεων"

Transcript

1 2011 Ανάπτυξη ενςωματωμένου ςυςτήματοσ για χαρακτηριςμό τηλεπικοινωνιακών διατάξεων Σακελλαρίου Παναγιώτης Μεταπτυχιακή Διπλωματική Εργαςία Πανεπιςτήμιο Πατρών Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιςτών & Πληροφορικήσ Μεταπτυχιακό Δίπλωμα Ειδίκευςησ Ολοκληρωμζνα Συςτήματα Υλικοφ & Λογιςμικοφ 1/3/2011

2 ii

3 Ανάπτυξθ ενςωματωμζνου ςυςτιματοσ για χαρακτθριςμό τθλεπικοινωνιακϊν διατάξεων Σακελλαρίου Ραναγιϊτθσ Μεταπτυχιακι Διπλωματικι Εργαςία Επιβλζπων Καθηγητήσ : Ραλιουράσ Βαςίλθσ Μζλη Εξεταςτικήσ Επιτροπήσ: Κουφοπαφλου Οδυςςζασ Γκοφτθσ Κωνςταντίνοσ Ράτρα, Μάρτιοσ 2011 iii

4 iv

5 Ευχαριςτίεσ Για τθν εκπόνθςθ τθσ παροφςασ διπλωματικισ εργαςίασ κα ικελα να ευχαριςτιςω κερμά τον επιβλζποντα κακθγθτι μου κ. Βαςίλθ Ραλιουρά, για τθν πολφτιμθ βοικειά του και τθ ςυνεχι υποςτιριξι του που μου παρείχε. Θα ικελα, επίςθσ, να ευχαριςτιςω τουσ διδακτορικοφσ του εργαςτθρίου VLSI του τμιματοσ Ηλεκτρολόγων Μθχανικϊν & Τεχνολογίασ Υπολογιςτϊν Γ.Τςατςαράγκο, Α.Mahdi και Ν.Κάνιςτρα για τθν άριςτθ ςυνεργαςία τουσ και για τθν πολφτιμθ βοικειά τουσ. Τζλοσ, κα ικελα να ευχαριςτιςω τον κ. Ο.Κουφοπαφλου και τον κ. Κ.Γκοφτθ για τθν ςυμμετοχι τουσ ςτθν τριμελι επιτροπι. v

6 vi

7 Περιεχόμενα Ρερίλθψθ... xv 1 Ειςαγωγι Ανάλυςθ τίτλου FPGA Ιςτορικά Σφγχρονεσ τάςεισ Εφαρμογζσ Ειςαγωγι ςτα ενςωματωμζνα ςυςτιματα Ροικιλομορφία ενςωματωμζνων ςυςτθμάτων Ιςτορικι αναδρομι Χαρακτθριςτικά Αρχιτεκτονικζσ λογιςμικοφ ενςωματωμζνων ςυςτθμάτων Hard Core PowerPC Ιςτορικά PowerPC Χαρακτθριςτικά PowerPC Οργάνωςθ του PowerPC Soft Core MicroBlaze Χαρακτθριςτικά MicroBlaze Οργάνωςθ του MicroBlaze Οργάνωςθ διπλωματικισ Ρεριλθπτικι ςυνειςφορά Ανάλυςθ ςυςτιματοσ Ρεριβάλλον εργαςίασ Ειςαγωγι Xilinx ISE Project Navigator Διάγραμμα ροισ ςχεδίαςθσ Δυνατότθτεσ προγραμμάτων ςφνκεςθσ Embedded Development Kit (EDK) Ειςαγωγι Δίαυλοι επικοινωνίασ Εργαλεία αρχιτεκτονικισ vii

8 2.3.4 Επιςκόπθςθ Διαδικαςία ςχεδιαςμοφ Επιςκόπθςθ του EDK EDK εργαλεία και εφαρμογζσ Xilinx Platform Studio (XPS) The Base System Builder Wizard The Create and Import Peripheral Wizard Platform Generator (Platgen) Debug Configuration Wizard Software Development Kit Library Generator (Libgen) GNU Compiler Tools Επιπλζον δυνατότθτεσ Εφαρμογι: Χαρακτθριςμόσ τθλεπικοινωνιακϊν διατάξεων ChipScope και υπάρχουςεσ λφςεισ Ενςωματωμζνα ςυςτιματα Βαςικά ςτοιχεία και λειτουργίεσ Βαςικά ςτοιχεία ενόσ αναπτυξιακοφ ςυςτιματοσ Virtex 4 ML402 Evaluation Platform Spartan 3E Starter kit Virtex-5 ML507 Evaluation Platform Δίαυλοι επικοινωνίασ (Buses) Local Memory Bus DDR2 Ελεγκτισ μνιμθσ για τον PowerPC Fast Simplex Link (FSL) Processor Local Bus v Μονάδεσ μνθμϊν BRAM DDR SRAM DDR2 SDRAM Multi-Port Memory Controller (MPMC) SRAM FLASH Multi-Channel External Memory Controller EEPROM CompactFlash viii

9 3.4 On-board περιφερειακά General Purpose Input / Output (GPIO) UART Lite Ethernet Lite Media Access Controller Interrupt Controller IP Cores Αρχιτεκτονικι ενςωματωμζνου ςυςτιματοσ Ρροδιαγραφζσ ςυςτιματοσ και ςτόχοι Τρόποσ χαρακτθριςμοφ τθλεπικοινωνιακοφ ςυςτιματοσ Linear Feedback Shift Register Αρχιτεκτονικι ςυςτιματοσ Custom IP Core Τρόποσ ειςαγωγισ Ειςαγωγι διακοπϊν ςυςτιματοσ Software Registers Επίπεδα αρχιτεκτονικισ υποςυςτιματοσ Ανάπτυξθ λογιςμικοφ και οδθγοί (Drivers) Αρχιτεκτονικι λογιςμικοφ ςυςτιματοσ Εικονικι διευκυνςιοδότθςθ Οδθγοί (Drivers) Διερεφνθςθ και αξιολόγθςθ λφςεων Επικοινωνία μζςω ςειριακισ κφρασ Τρόποσ αποκικευςθσ Διάγραμμα ροισ δεδομζνων Ρροτεινόμενθ υλοποίθςθ CompactFlash ωσ αποκθκευτικό μζςο Τρόποσ αποκικευςθσ δεδομζνων Διάγραμμα ροισ δεδομζνων Ρροτεινόμενθ υλοποίθςθ Χριςθ RAM ωσ κφριο αποκθκευτικό μζςο Τρόποσ αποκικευςθσ δεδομζνων Διάγραμμα ροισ δεδομζνων Ρροτεινόμενθ υλοποίθςθ Μετριςεισ Κριτιρια και επιλογζσ ix

10 6 Υλοποίθςθ αρχιτεκτονικισ Αρχιτεκτονικι ςυνεργαςίασ Custom IP Core με επεξεργαςτι DDR και MFS Ethernet και πρωτόκολλα δικτφου IP/TCP Επίπεδα OSI Στοίβεσ πρωτοκόλλων Υλοποίθςθ Ρρωτοκόλλων HTTP Σφςτθμα βαςιςμζνο ςε διακοπζσ (interrupts) Web Server Λίςτα αρχείων και φόρμα ειςαγωγισ παραμζτρων Βελτιςτοποιιςεισ Τρόποσ λειτουργίασ, αποτελζςματα και μελλοντικζσ επεκτάςεισ Τρόποσ λειτουργίασ οι δομισ ςυναρτιςεων Μζτρθςθ απόδοςθσ Αποτελζςματα ςφνκεςθσ Αξιοπιςτία ςυςτιματοσ Συμπεράςματα Μελλοντικζσ επεκτάςεισ Βιβλιογραφία x

11 Κατάλογος σχημάτων Εικόνα 1.1 Block Diagram του PowerPC Εικόνα 1.2 Embedded Processor Block in Virtex-5 FPGAs Εικόνα 1.3 MicroBlaze Core Block Diagram Εικόνα 2.1 Design Flow Diagram Εικόνα 2.2 Basic Embedded Design Process Flow Εικόνα 2.3 Embedded Development Kit (EDK) Tools Architecture Εικόνα 2.5 ChipScope System Block Diagram Εικόνα 3.1 ML402 Evaluation Platform Block Diagram Εικόνα 3.2 Xilinx Virtex 4 ML Εικόνα 3.3 Xilinx Spartan3E Starter Kit Εικόνα 3.4 Virtex-5 ML507 Evaluation Platform Block Diagram Εικόνα 3.5 Xilinx Virtex-5 ML507 Evaluation Platform Εικόνα 3.6 MicroBlaze Processor System Using Two LMB Modules Εικόνα 3.7 PPC440 MCI and PPC440MC DDR2 Memory Controller Block Diagram Εικόνα 3.8 Fast Simplex Link (FSL) Bus Block Diagram Εικόνα 3.9 PLB Interconnect Diagram Εικόνα 3.10 PLB Block Diagram Εικόνα 3.11 PLB Master Interface Εικόνα 3.12 PLB Slave interface Εικόνα 3.13 BRAM Block implementation Example with 4 RAM16 primitives Εικόνα 3.14 Spartan3E 512 Mbits DDR SDRAM Εικόνα 3.15 MPMC MicroBlaze use case Εικόνα 3.16 MPMC Soft Memory Controller Architecture Block Diagram Εικόνα 3.17 DDR2 Memory Connections Εικόνα 3.18 MCH EMC Top level block diagram Εικόνα 3.19 IIC Top Level Block Diagram Εικόνα 3.20 System ACE Interface Controller Block Diagram Εικόνα 3.21 GPIO Block Diagram Εικόνα 3.22 UART Lite Block Diagram Εικόνα 3.23 Ethernet Lite Block Diagram Εικόνα 3.24 Interrupt Controller Block Diagram Εικόνα 3.25 IP Core Example Εικόνα 3.26 Create and Import Peripheral Wizard Εικόνα 4.1 Ρρότυπθ τθλεπικοινωνιακι διάταξθ Εικόνα 4.2 Μορφι LFSR Εικόνα 4.3 Μοντζλο ςυςτιματοσ Εικόνα 4.4 Διάγραμμα καταςτάςεων Εικόνα 4.5 Overall System Block Diagram Εικόνα 4.6 Clock Generator Wizard Εικόνα 4.7 Create Peripheral Wizard xi

12 Εικόνα 4.8 Peripheral Wizard Interrupt Service Εικόνα 4.9 Interrupt Connection Dialog Εικόνα 4.10 User Software Resister Εικόνα 4.11 Τρόποσ ςφνδεςθσ custom περιφερειακοφ Εικόνα 4.12 Simple Control loop Εικόνα 4.13 Virtual Address Generator Εικόνα 4.14 Board Support Package Εικόνα 4.15 GPIO API Software Drivers Εικόνα 4.16 MFS library example Εικόνα 4.17 "xparameters.h" Εικόνα 5.1 Αρχιτεκτονικι ςειριακισ ςφνδεςθσ Εικόνα 5.2 Διάγραμμα ροισ δεδομζνων ςειριακισ επικοινωνίασ Εικόνα 5.3 Ρροτεινόμενθ υλοποίθςθ Εικόνα 5.4 Αρχιτεκτονικι CompactFlash ωσ μζςο αποκικευςθσ δεδομζνων Εικόνα 5.5 Διάγραμμα ροισ δεδομζνων CompactFlash Εικόνα 5.6 Ρροτεινόμενθ υλοποίθςθ Εικόνα 5.7 Αρχιτεκτονικι DDR ωσ αποκθκευτικό μζςο Εικόνα 5.8 Διάγραμμα ροισ δεδομζνων Εικόνα 5.9 Ρροτεινόμενθ υλοποίθςθ Εικόνα 5.10 Διάγραμμα επιδόςεων προτεινόμενων υλοποιιςεων Εικόνα 5.11 Διάγραμμα ςυγκρίςεωσ προτεινόμενων λφςεων Εικόνα 6.1 Δομι υπάρχον ςυςτιματοσ Εικόνα 6.2 Αρχιτεκτονικι υποςυςτιματοσ Εικόνα 6.3 Διάγραμμα ροισ καταςτάςεων Εικόνα 6.4 Board Support Package - MFS Εικόνα 6.5 XMD console Εικόνα 6.6 δομι μνιμθσ με ςφςτθμα MFS αρχείων Εικόνα 6.7 Ρρωτόκολλα επιπζδων OSI Εικόνα 6.8 Data structure Εικόνα 6.9 HTTP Client Request Εικόνα 6.10 HTTP Server response Εικόνα 6.11 Interrupt Based Process Εικόνα 6.12 Interrupt Based Time Scheduling Εικόνα 6.13 Δομι αρχείων Web Server Εικόνα 6.14 Δομι αιτθμάτων web server Εικόνα 6.15 Ρεριβάλλον web server Εικόνα 6.16 Φόρμα ειςαγωγισ παραμζτρων Εικόνα 6.17 Interface λίςτασ αρχείων Εικόνα 7.1 Τρόποσ λειτουργίασ Εικόνα 7.2 Διαδικαςία αρχικοποίθςθσ Εικόνα 7.3 Διάγραμμα εξυπθρζτθςθσ Custom IP interrupt Εικόνα 7.4 Διάγραμμα Web Server Εικόνα 7.5 Διάγραμμα Web Server Εικόνα 7.6 Διάγραμμά Web Server Εικόνα 7.7 Κατανομι Flip-Flops xii

13 Εικόνα 7.8 Κατανομι LUTs Εικόνα 7.9 Κατανομι LUTs Εικόνα 7.10 Κατανομι BRAMs Κατάλογος Πινάκων Ρίνακασ 2.1 EDK Tools and Utilities Ρίνακασ 5.1 Κφκλοι ρολογιοφ προτεινόμενων υλοποιιςεων Ρίνακασ 5.2 Σφγκριςθ προτεινόμενων προςεγγίςεων Ρίνακασ 6.1 Επίπεδα OSI Ρίνακασ 7.1Συνολικά αποτελζςματα ςφνκεςθσ Ρίνακασ 7.2 Κατανομι Flip-Flops Ρίνακασ 7.3 Κατανομι BRAMs xiii

14 xiv

15 Περύληψη Στθν παροφςα διπλωματικι αναπτφςςεται ζνα ενςωματωμζνο ςφςτθμα αποτελοφμενο από υλικό και λογιςμικό, για τον χαρακτθριςμό τθλεπικοινωνιακϊν διατάξεων. Ειδικότερα μελετάται ο ζλεγχοσ εξειδικευμζνθσ ενςωματωμζνθσ τθλεπικοινωνιακισ διάταξθσ, θ αυτοματοποίθςθ τθσ ςυλλογισ δεδομζνων ενδιαφζροντοσ κατά τθ λειτουργία τθσ τθλεπικοινωνιακισ διάταξθσ, κακϊσ και ο τρόποσ επικοινωνίασ με το χριςτθ αναπτυξιακϊν ςυςτθμάτων που βαςίηονται ςε FPGA και χρθςιμοποιοφνται για τθν καταςκευι προτφπων τθλεπικοινωνιακϊν διατάξεων. Συγκεκριμζνα μελετϊνται διαφορετικζσ τεχνικζσ ειςαγωγισ και εξαγωγισ δεδομζνων από τα FPGAs και αποκικευςισ τουσ ςε ςφςτθμα host. O τρόποσ ειςαγωγισ δεδομζνων και παραμζτρων ςτα υπάρχοντα ςυςτιματα παρουςιάηει ςυγκεκριμζνουσ περιοριςμοφσ. Εδϊ μελετάται ο τρόποσ που μποροφν τα δεδομζνα και παράμετροι να ειςάγονται δυναμικά μζςω ενόσ φιλικοφ προσ τον χριςτθ περιβάλλοντοσ. Επίςθσ μελετάται ο τρόποσ αυτόματθσ ςυλλογισ όγκου δεδομζνων ενδιαφζροντοσ και εξαγωγισ δεδομζνων με αςφαλι και αυτοματοποιθμζνο τρόπο. Για να επιτευχκεί αυτό αναπτφςςεται ζνα ενςωματωμζνο ςφςτθμα που θ διεπαφι χριςτθ γίνεται μζςω web server. Η ανάπτυξθ περιλαμβάνει τθ χριςθ ενςωματωμζνου επεξεργαςτι διακζςιμου ωσ IP block ςε FPGA, τθ δόμθςθ ενόσ ςυςτιματοσ βαςιςμζνου ςε κανάλια επικοινωνίασ με χριςθ εικονικισ διευκυνςιοδότθςθσ, κακϊσ και τον ζλεγχο και ςφνδεςθ τθσ μονάδασ προτυποποίθςθσ τθλεπικοινωνιακϊν διατάξεων με το κανάλι επικοινωνίασ του επεξεργαςτι. Το ςφςτθμα που προκφπτει είναι ζνα ενςωματωμζνο ςφςτθμα ςτο οποίο το λειτουργικό ςφςτθμα βαςίηεται ςε διακοπζσ ενϊ θ διεπαφι χριςτθ γίνεται με τθν ανάπτυξθ ενςωματωμζνου web server. Με αυτόν τον τρόπο παρζχεται ζνα διαδραςτικό περιβάλλον που είναι ευρζωσ διαδεδομζνο και με το οποίο ο χριςτθσ μπορεί να ζχει άμεςθ επαφι με το hardware, ενϊ ταυτόχρονα αυτοματοποιεί τθ διαδικαςία εξαγωγισ δεδομζνων προςφζροντασ αξιοπιςτία και υψθλζσ ταχφτθτεσ. xv

16 xvi

17 1 Ειςαγωγό 1.1 Ανϊλυςη τύτλου Στθν παροφςα διπλωματικι αναλφεται ο τρόποσ διαςφνδεςθσ FPGA με host ςυςτιματα. Αποδεικνφεται ότι για να μπορζςει κάτι τζτοιο να λειτουργιςει αποδοτικά πρζπει να γίνει μια υβριδικι προςζγγιςθ από τθν άποψθ ότι πρζπει να αναπτυχκεί και hardware και software. Ππωσ αποδεικνφεται από τισ ςυγκρίςεισ που ζγιναν ςτθν παροφςα διπλωματικι, για επικοινωνία του FPGA με τον χριςτθ, το δίκτυο αποτελεί το καλφτερο μζςο. Για να φτάςουμε όμωσ εκεί ζγινε ζρευνα όλων των επιλογϊν που υπάρχουν κακϊσ και επιλογι με βάςθ κατάλλθλα κριτιρια. Μζςω αυτισ τθσ διπλωματικισ γίνεται διερεφνθςθ και αξιολόγθςθ των διακζςιμων επιλογϊν που υπάρχουν με ςτόχο τθ βζλτιςτθ επιλογι. Το τελικό αποτζλεςμα είναι ζνα πλιρεσ ςφςτθμα ςε chip (system on chip) και πιο ςυγκεκριμζνα ςε FPGA. Το ςφςτθμα αυτό είναι αυτόνομο και τρζχει ανεξάρτθτα από τθν παρουςία υπολογιςτι. Το περιβάλλον που κα προςφζρει κα είναι φιλικό ωσ προσ τον χριςτθ και δεν κα απαιτεί εξειδικευμζνεσ γνϊςεισ για τον χειριςμό του. Η αυτοματοποίθςθ μίασ τζτοιασ διάταξθσ είναι το επιδιωκόμενο αυτισ τθσ διπλωματικισ, κακϊσ αυτοματοποιείται θ διαδικαςία ςυλλογισ κρίςιμων δεδομζνων/αποτελεςμάτων. Επίςθσ θ διαδικαςία ειςαγωγισ παραμζτρων ςτο ςφςτθμα γίνεται με απλό ωσ προσ τον χριςτθ τρόπο, ενϊ ταυτόχρονα δεν απαιτείται θ φυςικι παρουςία του ςτον χϊρο που βρίςκεται το αναπτυξιακό board. Η επζκταςθ ενόσ τζτοιου ςυςτιματοσ είναι δυνατι και αναγκαία. Κάτι τζτοιο κρίνεται αναγκαίο λόγω του γεγονότοσ ότι θ προτυποποίθςθ ςυςτθμάτων επικοινωνίασ πρζπει να είναι ζνα δυναμικό ςφςτθμα ςτο οποίο δίνεται θ δυνατότθτα να ειςάγονται νζεσ λειτουργίεσ και να υποςτθρίηονται διαφορετικοί τρόποι επικοινωνίασ. Η πρϊτθ επιλογι που καλοφμαςτε να πάρουμε είναι ςε τι κα δουλζψουμε και ποια είναι τα εργαλεία ςχεδίαςθσ. Επιλζγουμε να δουλζψουμε με FPGA τθσ Xilinx και να χρθςιμοποιοφμε τα αντίςτοιχα εργαλεία ςχεδίαςθσ. Τα FPGA ςτα οποία γίνεται θ ανάλυςθ τθσ παροφςασ διπλωματικισ είναι το ML402 Virtex 4, Spartan 3e και ML507 Virtex 5. Η επιλογι αυτι ζγινε μα βάςθ το γεγονόσ ότι θ Xilinx είναι πρωτοπόροσ ςε FPGA κακϊσ και τα προγράμματα ςχεδίαςθσ που προςφζρει καλφπτουν τισ ανάγκεσ τθσ διπλωματικισ. Με τθ χριςθ αυτϊν των αναπτυξιακϊν boards καλφπτουμε μια μεγάλθ γκάμα των διακζςιμων αναπτυξιακϊν ςυςτθμάτων κακϊσ δεν αλλάηει κάτι κεμελιϊδθσ ςε άλλεσ οικογζνειεσ FPGA. Επίςθσ θ τεκμθρίωςθ (documentation) που προςφζρει θ Xilinx είναι πολφ καλι και πολλζσ από τισ επιλογζσ που ζγιναν βαςίηονται ςε αυτά. Οι μικροεπεξεργαςτζσ που χρθςιμοποιιςαμε είναι τθσ Xilinx. Χρθςιμοποιιςαμε τα ςυγκεκριμζνα boards λόγω των δυνατοτιτων που ζχει το κακζνα και των διαςυνδζςεων που προςφζρουν. Το Spartan είναι 1

18 το πιο μικρό από τα τρία και χρθςιμοποιικθκε κυρίωσ για να βελτιςτοποιιςουμε το λογιςμικό που αναπτφξαμε. Επίςθσ ο κϊδικασ που γράψαμε είναι ανεξάρτθτοσ τθσ πλατφόρμασ μικροεπεξεργαςτι και μπορεί να εκτελεςτεί τόςο ςε Microblaze όςο και ςε PowerPC γεγονόσ που κάνει τθν παροφςα προτεινόμενθ ακόμα πιο ευζλικτι και επεκτάςιμθ ςε μελλοντικζσ αναπτφξεισ. Συγκρίςεισ με άλλεσ υλοποιιςεισ γίνονται αλλά γίνονται κατά τθ διαδικαςία ανάπτυξθσ. Αυτό οφείλεται ςτο γεγονόσ ότι αποτελεί μία πρακτικι υλοποίθςθ και ready-to-use εφαρμογι. Επομζνωσ δεν μπορεί να γίνει μια ςφγκριςθ για όλθ τθν ανάπτυξθ που ζγινε αφοφ αυτι ακολουκεί τα κριτιρια τθσ ςυγκεκριμζνθσ ανάγκθσ που προςπακεί να καλφψει. Κατά τθ διαδικαςία τθσ ανάπτυξθσ, ζγιναν ςυγκρίςεισ και των διαφορετικι προςεγγίςεων που μπορεί να υπάρξουν και με βάςθ πειραματικά αποτελζςματα επιλζγεται θ καλφτερθ. Με αυτόν τον τρόπο ακολουκείται το μοντζλο τθσ εςωτερικισ-εξωτερικισ ςφγκριςθσ/ζρευνασ. Η εξωτερικι ζρευνα περιλαμβάνει τθν αναηιτθςθ και ςφγκριςθ των προςεγγίςεων που υπάρχουν ςε ςυγκεκριμζνα κζματα και αναπτφχκθκαν από άλλεσ ομάδεσ ερευνθτϊν, ενϊ θ εςωτερικι ζρευνα περιλαμβάνει τθν ανάπτυξθ διαφορετικϊν προςεγγίςεων ςυγκεκριμζνων κεμάτων με ςκοπό τθν εξαγωγι πειραματικϊν αποτελεςμάτων και ςφγκριςι τουσ. Με αυτόν τον τρόπο αναπτφςςεται ζνα ςφςτθμα που ακολουκεί τθν αιχμι τθσ τεχνολογίασ και ταυτόχρονα οι επιλογζσ που ζγιναν είναι εμπεριςτατωμζνεσ. Ρροςεγγίςεισ που ζχουν παρόμοιο αντικείμενο με τθν παροφςα διπλωματικι είναι τα [43] [44] [45] [46] [47] [48] [49] [50]. 1.2 FPGA Το FPGA (field programmable gate array) είναι ζνα ολοκλθρωμζνο κφκλωμα ςχεδιαςμζνο να είναι αναπρογραμματιηόμενο από το χριςτθ μετά το ςτάδιο καταςκευισ του. Οι προδιαγραφζσ ενόσ τζτοιου ςυςτιματοσ κακορίηονται χρθςιμοποιϊντασ HDL ( hardware description language ) που είναι παρόμοια με αυτι των ASIC (application specific integrated circuit). Τα FPGA μποροφν να χρθςιμοποιθκοφν για να υλοποιιςουν μια λογικι ςυνάρτθςθ που μπορεί να υλοποιιςει και ζνα ASIC. Η ικανότθτα να μποροφν να ανανεϊνουν τθ λειτουργία που υλοποιοφν και θ μερικι ανανζωςθ ςε ςυνδυαςμό με το χαμθλό κόςτοσ ςε ςχζςθ με τα ASIC προςφζρουν πλεονεκτιματα ςε αρκετζσ εφαρμογζσ. Το κόςτοσ βζβαια των ASIC ανά μονάδα παραγωγισ είναι πολφ χαμθλότερο ςε ςφγκριςθ με αυτό των FPGA. Τα τελευταία όμωσ μποροφν να παραχκοφν ςε μικρζσ ποςότθτεσ ςε ςχζςθ με τα ASIC. Τα FPGAs περιζχουν ςτοιχεία προγραμματιηόμενθσ λογικισ που ονομάηονται μπλοκ λογικισ (logic blocks), κακϊσ και ιεράρχθςθ αναδιαρκρϊςιμων διαςυνδζςεων που επιτρζπουν το μπλοκ να είναι ςυνδεδεμζνα, όπωσ είναι και ζνα one-chip breadboard. Τα λογικά μπλοκ μποροφν να ρυκμιςτοφν ϊςτε να εκτελοφν πολφπλοκεσ ςυνδυαςτικζσ λειτουργίεσ, ι απλϊσ απλζσ λογικζσ πφλεσ, όπωσ AND και XOR. Στα περιςςότερα FPGAs, τα μπλοκ λογικισ περιλαμβάνουν και ςτοιχεία μνιμθσ, που μπορεί να είναι απλά flip-flops ι περιςςότερα πεδία μνιμθσ. Επιπρόςκετα των λογικϊν ςυναρτιςεων, μερικά FPGAs ζχουν και αναλογικζσ δυνατότθτεσ [42]. 2

19 1.2.1 Ιςτορικϊ Η ιδζα των FPGAs βαςίςτθκε ςτισ PROM (programmable read only memory) και ςτα PLDs (programmable logic devices). Η Xilinx εφεφρε τθν πρϊτθ εμπορικά βιϊςιμθ πλατφόρμα FPGA το 1985, το XC2064. Το XC2064 είχε προγραμματιηόμενεσ πφλεσ και προγραμματιηόμενεσ διαςυνδζςεισ μεταξφ των πυλϊν, θ αρχι μια καινοφργιασ τεχνολογίασ και αγοράσ. Το XC2064 είχε 64 CLBs (configurable logic blocks) με δφο τριϊν ειςόδων LUTs (lookup tables). Από το 1985 ωσ τα μζςα τθσ δεκαετίασ του 1990 θ Xilinx αναπτυςςόταν χωρίσ ανταγωνιςτζσ. Το 1993 θ Actel κατείχε το 13% τθσ αγοράσ. Η δεκαετία του 1990 ιταν ζνα διάςτθμα ραγδαίασ ανάπτυξθσ για FPGAs, τόςο ςτθν πολυπλοκότθτα όςο και τον όγκο τθσ παραγωγισ. Στισ αρχζσ τθσ δεκαετίασ του 1990, τα FPGAs χρθςιμοποιοφνται κυρίωσ ςτισ τθλεπικοινωνίεσ και τθ δικτφωςθ. Μζχρι το τζλοσ τθσ δεκαετίασ, τα FPGAs βρικαν το δρόμο τουσ ςε καταναλωτζσ, τθν αυτοκινθτοβιομθχανία και βιομθχανικζσ εφαρμογζσ. Τα FPGAs απζκτθςαν μεγάλθ φιμθ το 1997, όταν ο Adrian Thompson, ζνασ ερευνθτισ που εργάηεται ςτο Ρανεπιςτιμιο του Sussex, ςυγχϊνευςε αλγόρικμο γενετικισ τεχνολογίασ και FPGAs για να δθμιουργιςετε μια ςυςκευι αναγνϊριςθσ ιχου. Ο αλγόρικμοσ Thomson διαμόρφωςε μια ςειρά από 10 x 10 κελιά ςε ζνα FPGA chip τθσ Xilinx ικανό να κάνει διακρίςεισ ανάμεςα ςε δφο τόνουσ, χρθςιμοποιϊντασ τισ δυνατότθτεσ του αναλογικοφ από το ψθφιακό τςιπ. Η εφαρμογι των γενετικϊν αλγορίκμων για τθ διαμόρφωςθ των ςυςκευϊν όπωσ FPGA είναι πλζον γνωςτι ωσ υλικό Evolvable [42] ύγχρονεσ τϊςεισ Μια ςφγχρονθ τάςθ είναι να πάει τθν coarse-gained αρχιτεκτονικι ζνα βιμα πιο πζρα με το ςυνδυαςμό των λογικϊν blocks με τισ διαςυνδζςεισ των ςυμβατικϊν FPGAs, με τουσ ενςωματωμζνουσ μικροεπεξεργαςτζσ (embedded) και τα ςχετικά περιφερειακά με ςκοπό να ςχθματίςουν ζνα ολόκλθρο system on a programmable chip. Τθ δουλεία αυτι αντανακλά θ αρχιτεκτονικι των Ron Perlof και Hana Potash του Burroughs Advanced Systems Group που ςυνδυάηει επαναπρογραμματιηόμενθ CPU αρχιτεκτονικι ςε ζνα μοναδικό chip, το SB24. Η δουλειά αυτι υλοποιικθκε το Ραραδείγματα τζτοιασ υβριδικισ αρχιτεκτονικισ είναι οι πλατφόρμεσ Virtex II Pro και Virtex 4 που περιλαμβάνουν ζνα ι περιςςότερα PowerPC ενςωματωμζνα με τθ λογικι των FPGAs. Μια εναλλακτικι προςζγγιςθ είναι αντί να χρθςιμοποιοφμε hard-macro επεξεργαςτζσ, να κάνουμε χριςθ soft processors πυρινων που μποροφν να υλοποιθκοφν εντόσ τθσ λογικισ FPGA. Ρολλά ςφγχρονα FPGAs ζχουν τθν ικανότθτα να επαναπρογραμματίηονται κατά τθ λειτουργία και αυτό οδθγεί ςτθν ιδζα του reconfigurable computing ι των επαναπρογραμματιηόμενων ςυςτθμάτων, οι CPUs να μποροφν να επαναπρογραμματίηονται για να ταιριάηουν ςτθ διεργαςία που ζχουν να εκτελζςουν. 3

20 Ιςτορικά τα FPGAs είναι πιο αργά, λιγότερα αποδοτικά ςε κζματα ενζργειασ και γενικά πετυχαίνουν χαμθλότερθ λειτουργικότθτα ςε ςφγκριςθ με τα ASICs. Μια ζρευνα ζδειξε ότι ζνα ςχζδιο που υλοποιείται ςε FPGAs απαιτεί κατά μζςο όρο 18 φορζσ περιςςότερο χϊρο, χρειάηεται 7 φορζσ τθ δυναμικι ενζργεια, και είναι 3 φορζσ πιο αργό ςε ςχζςθ με το αντίςτοιχο ASIC. Στα προτεριματα περιλαμβάνεται θ ικανότθτα να μποροφν να επαναπρογραμματιςτοφν ςτο πεδίο τθσ εφαρμογισ για να διορκϊςουν ςφάλματα, και μποροφν να ελαχιςτοποιιςουν τον time to market και να μειϊςουν το non-recurring engineering κόςτοσ (το αρχικό κόςτοσ για ζρευνα, ανάπτυξθ και επιβεβαίωςθ ενόσ καινοφριου προϊόντοσ). Μπορεί να ακολουκθκεί και μια μζςθ διαδρομι όπου θ ανάπτυξθ του hardware γίνεται ςε FPGAs αλλά θ παραγωγι των τελικϊν προϊόντων γίνεται με τζτοιο τρόπο που να μθν μποροφν να επαναπρογραμματιςτοφν αφότου ζχουν παραδοκεί. Η Xilinx ιςχυρίηεται ότι πολλζσ αγορζσ και τεχνολογικζσ δυνάμεισ αλλάηουν το παράδειγμα τον ASIC/FPGA: - Το κόςτοσ των ολοκλθρωμζνων κυκλωμάτων αυξάνεται ραγδαία. - Η πολυπλοκότθτα των ASIC επζκτεινε τον χρόνο ανάπτυξθσ. - Στο τμιμα ερευνϊν και ανάπτυξθσ οι πόροι και ο αρικμόσ των εργαηομζνων μειϊνεται. - Η απϊλεια λόγο του αργοφ χρόνου προσ τθν αγορά αυξάνεται. - Οικονομικοί περιοριςμοί ςε μια φτωχι οικονομία οδθγοφν ςε low-cost τεχνολογίεσ. Αυτζσ οι τάςεισ κάνουν τα FPGAs καλφτερα ςε ςχζςθ με τα ASICs για ζνα μεγάλο αρικμό εφαρμογϊν [42] Εφαρμογϋσ Οι εφαρμογζσ των FPGAs περιλαμβάνουν ψθφιακι επεξεργαςία ςιματοσ, software-defined radio, ςυςτιματα αεροδιαςτθμικισ και άμυνασ, ASIC προτυποποίθςθ, ιατρικι απεικόνιςθ, μθχανικι όραςθ, αναγνϊριςθ φωνισ, κρυπτογραφία, βιοπλθροφορικι, προςομοίωςθ υλικοφ, ραδιοαςτρονομία, ανίχνευςθ μετάλλων και μια αυξανόμενθ ςειρά άλλων τομζων. Τα FPGAs αρχικά ξεκίνθςαν ωσ ανταγωνιςτζσ των CPLDs και ανταγωνίηονταν ςτο ίδιο πεδίο εφαρμογϊν. Πςο το μζγεκοσ, οι δυνατότθτεσ και θ ταχφτθτα αυξάνονταν, άρχιςαν να καταλαμβάνουν όλο και περιςςότερεσ λειτουργίεσ ςε ςθμείο τζτοιο που κάποια πλζον πωλοφνται ωσ ολόκλθρα ςυςτιματα ςε ζνα chip (System-on-chip). Ριο ςυγκεκριμζνα με τθν είςοδο των αποκλειςτικϊν μονάδων πολλαπλαςιαςμοφ ςτθ FPGA αρχιτεκτονικι ςτα τζλθ τθσ δεκαετίασ του 90, εφαρμογζσ που παραδοςιακά χρθςιμοποιοφςαν αποκλειςτικά DSP, ξεκίνθςαν να ςυνεργάηονται με τα FPGAs. Τα FPGAs πιο ςυγκεκριμζνα βρίςκουν εφαρμογι ςε κάκε πεδίο ι αλγόρικμο που μπορεί να χρθςιμοποιιςει μαηικό παραλλθλιςμό ςτθν αρχιτεκτονικι του. Ζνα τζτοιο πεδίο είναι και θ αποκρυπτογράφθςθ αλγορίκμων και πιο ςυγκεκριμζνα ςτισ μεκόδουσ brute-force επίκεςθσ ςτθ κρυπτογραφία. Τα FPGAs χρθςιμοποιοφνται αυξανόμενα ςτισ ςυμβατικζσ υψθλισ 4

21 απόδοςθσ εφαρμογζσ όπου οι υπολογιςτικοί πυρινεσ όπωσ FFT ι ςυνζλιξθ υλοποιοφνται από FPGA αντί από μικροεπεξεργαςτζσ. Ο ζμφυτοσ παραλλθλιςμόσ των λογικϊν πόρων ςε ζνα FPGA επιτρζπει ζνα ςεβαςτό ςυνδυαςτικό throughput ακόμα και με ρολόι λίγων MHz. Η ευελιξία των FPGA επιτρζπει ακόμα μεγαλφτερεσ επιδόςεισ ανταλλάςοντασ ακρίβεια και εφροσ αρικμϊν για ζνα αυξθμζνο αρικμό παράλλθλων αρικμθτικϊν μονάδων. Η υιοκζτθςθ των FPGAs από υψθλισ απόδοςθσ υπολογιςμοφσ είναι προσ το παρϊν περιοριςμζνθ χάριν τθσ πολυπλοκότθτασ των ςχεδίων των FPGAs ςε ςχζςθ με το ςυμβατικό software [42]. 1.3 Ειςαγωγό ςτα ενςωματωμϋνα ςυςτόματα Ζνα ενςωματωμζνο ςφςτθμα (embedded system) είναι ζνα υπολογιςτικό ςφςτθμα ςχεδιαςμζνο να εκτελεί μία ι περιοριςμζνο αρικμό ςυγκεκριμζνων λειτουργιϊν, ςυχνά με real-time περιοριςμοφσ. Είναι ενςωματωμζνο ωσ ζνα μζροσ από μία ολοκλθρωμζνθ ςυςκευι που ςυχνά περιλαμβάνει και μθχανικά μζρθ. Σε αντίκεςθ, ζνασ υπολογιςτισ γενικοφ ςκοποφ, όπωσ είναι ζνασ προςωπικόσ υπολογιςτισ, είναι ςχεδιαςμζνοσ για να είναι ευζλικτοσ και να ικανοποιεί ζνα μεγάλοσ εφροσ από τισ ανάγκεσ του τελικοφ χριςτθ. Τα ενςωματωμζνα ςυςτιματα ελζγχουν ζνα μεγάλο μζροσ των ςυςκευϊν ςιμερα. Τα ενςωματωμζνα ςυςτιματα ελζγχονται από ζναν ι περιςςότερουσ επεξεργαςτικοφσ πυρινεσ που τυπικά είναι μικροεπεξεργαςτζσ ι DSP (digital signal processors). Το χαρακτθριςτικό όμωσ τζτοιων ςυςτθμάτων είναι ότι είναι αφιερωμζνα να χειρίηονται μια ςυγκεκριμζνθ λειτουργία που μπορεί να απαιτεί ζνα ιςχυρό επεξεργαςτι. Για παράδειγμα ζνα ςφςτθμα ελζγχου τθσ εναζριασ κυκλοφορίασ μπορεί χριςιμα να χαρακτθριςτεί ωσ ζνα ενςωματωμζνο ςφςτθμα ακόμα κι αν περιλαμβάνει mainframe υπολογιςτζσ. Από τθ ςτιγμι που ζνα ενςωματωμζνο ςφςτθμα είναι αφιερωμζνο ςε μια ςυγκεκριμζνθ εφαρμογι, οι μθχανικοί ςχεδιαςμοφ μποροφν να το βελτιςτοποιιςουν για να μειϊςουν το μζγεκοσ και το κόςτοσ του προϊόντοσ και να αυξιςουν τθν αξιοπιςτία και τθν απόδοςθ. Τα ενςωματωμζνα ςυςτιματα ζχουν ζνα μεγάλο εφροσ εφαρμογϊν, από φορθτζσ ςυςκευζσ όπωσ ψθφιακά ρολόγια και mp3 players, μζχρι μεγάλα ςυςτιματα όπωσ φανάρια κυκλοφορίασ, ελζγχουσ ςυςτθμάτων εργοςταςίων, ι ακόμα και ςυςτιματα ελζγχου πυρθνικϊν αντιδραςτιρων. Η πολυπλοκότθτα διαφζρει από χαμθλι με ςφςτθμα ενόσ μικροεπεξεργαςτι μζχρι και ςυςτιματα με πολλά ςτοιχεία, περιφερειακά και δίκτυο. Γενικά το ενςωματωμζνο ςφςτθμα δεν είναι ζνασ καλά οριςμζνοσ όροσ, τα περιςςότερα ςυςτιματα ζχουν ςυςτιματα επεκταςιμότθτασ και ικανότθτασ προγραμματιςμοφ. Για παράδειγμα, οι φορθτζσ ςυςκευζσ μοιράηονται κάποια ςτοιχεία με τα ενςωματωμζνα ςυςτιματα όπωσ το λειτουργικό ςφςτθμα και μικροεπεξεργαςτζσ που τουσ δίνουν τθν επεξεργαςτικι ιςχφ, αλλά επιτρζπουν διαφορετικζσ εφαρμογζσ να φορτϊνονται και περιφερειακά να ςυνδζονται. Επιπλζον ςυςτιματα που δεν υποςτθρίηουν προγραμματιςμό ωσ κφριο χαρακτθριςτικό, πρζπει να υποςτθρίηουν επεκτάςεισ λογιςμικοφ. Ωσ ςυνζχεια από γενικοφ ςκοποφ ςε ενςωματωμζνα, ςυςτιματα μεγάλων εφαρμογϊν, κα ζχουν 5

22 υπομονάδεσ ςε περιςςότερα ςθμεία ακόμα και αν το ςφςτθμα ωσ ςφνολο είναι ςχεδιαςμζνο να εκτελεί μία ι περιςςότερεσ λειτουργίεσ, ζτςι κα καλείται και αυτό ενςωματωμζνο [42] Ποικιλομορφύα ενςωματωμϋνων ςυςτημϊτων Τα ενςωματωμζνα ςυςτιματα καλφπτουν όλεσ τισ πτυχζσ τθσ ςφγχρονθσ ηωισ και υπάρχουν πολλά παραδείγματα τθσ χρθςιμότθτάσ τουσ. Τθλεπικοινωνιακά ςυςτιματα χρθςιμοποιοφν πλθκϊρα ενςωματωμζνων ςυςτθμάτων. Από τθλεφωνικοφσ διακόπτεσ ςε ζνα δίκτυο μζχρι κινθτά τθλζφωνα ςτον τελικό χριςτθ. Υπολογιςτζσ δικτφου χρθςιμοποιοφν εξειδικευμζνα routers και network bridges για να δρομολογιςουν δεδομζνα. Οι θλεκτρονικζσ ςυςκευζσ περιλαμβάνουν PDAs, mp3 players, κινθτά τθλζφωνα, κονςόλεσ παιχνιδιϊν, ψθφιακζσ κάμερεσ, DVD players, GPS δζκτεσ και εκτυπωτζσ. Ρολλζσ οικιακζσ ςυςκευζσ όπωσ μικροκυμάτων, πλυντιρια ροφχων και πιάτων περιλαμβάνουν ενςωματωμζνα ςυςτιματα για να προςφζρουν ευελιξία και χαρακτθριςτικά. Τα εξελιγμζνα ςυςτιματα ελζγχου εςωτερικοφ χϊρου και τα ςυςτιματα αυτοματοποίθςθσ ζξυπνων ςπιτιϊν περιλαμβάνουν πλθκϊρα ενςωματωμζνων ςυςτθμάτων. Τα ςυςτιματα μεταφοράσ, από τισ αερομεταφορζσ μζχρι τα αυτόματα αυτοκίνθτα χρθςιμοποιοφν όλο και περιςςότερο ενςωματωμζνα ςυςτιματα. Τα νζα αεροπλάνα περιλαμβάνουν προθγμζνα ςυςτιματα όπωσ ςυςτιματα αδρανειακισ κακοδιγθςθσ και GPS που ζχουν επίςθσ ςθμαντικζσ απαιτιςεισ αςφάλειασ. Διάφοροι θλεκτροκινθτιρεσ όπωσ brushless DC motors, induction motors και DC motors χρθςιμοποιοφν θλεκτρικοφσ ελεγκτζσ. Αυτοκίνθτα και θλεκτρικά αυτοκίνθτα, χρθςιμοποιοφν όλο και περιςςότερο ενςωματωμζνα ςυςτιματα για να μεγιςτοποιιςουν τθν αποτελεςματικότθτα και να ελαχιςτοποιιςουν τθν εκπομπι ρφπων. Άλλα ςυςτιματα αςφαλείασ αυτοκινιτων που περιλαμβάνει το ABS, ESP, ASR και αυτόματθ τετρακίνθςθ. Ιατρικόσ εξοπλιςμόσ ςυνεχϊσ εξελίςςεται με περιςςότερα ενςωματωμζνα ςυςτιματα για ηωτικισ ςθμαςίασ ενδείξεισ θλεκτρονικά ςτθκοςκόπια πολλαπλαςιαςμοφ ιχου, και διάφορεσ ιατρικισ απεικόνιςθσ (PET, SPECT, CT, MRI). Τα ενςωματωμζνα ςυςτιματα είναι ειδικά ςχεδιαςμζνα για χριςθ ςε μετακινιςεισ, ςυςτιματα πυραςφάλειασ, αςφάλειασ, ιατρικζσ εφαρμογζσ κακϊσ αυτά τα ςυςτιματα μποροφν να απομονωκοφν από τθν πειρατεία και να είναι πιο αξιόπιςτα. Για ςυςτιματα πυραςφάλειασ, μποροφν να ςχεδιαςτοφν για να ζχουν μεγαλφτερθ ικανότθτα να χειριςτοφν υψθλότερεσ κερμοκραςίεσ και να εξακολουκοφν να λειτουργοφν. Σε ςχζςθ με τθν αςφάλεια, τα ενςωματωμζνα ςυςτιματα μποροφν να είναι αυτοςυντθροφμενα και να είναι ςε κζςθ να αντιμετωπίςουν τθν πτϊςθ τάςθσ και τθν αποκοπι επικοινωνιϊν. [42] 6

23 1.3.2 Ιςτορικό αναδρομό Το πρϊτο ςφγχρονο και αναγνωρίςιμο ενςωματωμζνο ςφςτθμα ιταν το Apollo Guidance Computer, που αναπτφχκθκε από τον Charles Stark Draper ςε εργαςτιριο του Massachusetts Institute of Technology (MIT). Κάκε πτιςθ ςτο φεγγάρι χρθςιμοποιοφςε δφο από αυτά, ςτο ςφςτθμα αδρανειακισ κακοδιγθςθσ. Στθν ζναρξθ του διαςτθμικοφ προγράμματοσ Apollo το ςυγκεκριμζνο υπολογιςτικό ςφςτθμα κεωρικθκε ωσ το πιο ριψοκίνδυνο μζροσ του προγράμματοσ. Η χριςθ των νζων, ακόμα, ολοκλθρωμζνων κυκλωμάτων, προκειμζνου να μειωκοφν το μζγεκοσ και το βάροσ, κακιςτοφςαν το ρίςκο μεγαλφτερο. Το πρϊτο ενςωματωμζνο ςφςτθμα μαηικισ παραγωγισ, ιταν ο υπολογιςτισ κατεφκυνςθσ για τον πφραυλο Minuteman το Το ςφςτθμα ονομαηόταν Autonetics D-17 και χρθςιμοποιοφςε διακριτι λογικι τρανηίςτορ και ζναν ςκλθρό δίςκο ςαν κφρια μνιμθ. Πταν το 1966 ξεκίνθςε θ παραγωγι του Minuteman II, το D-17 αντικαταςτάκθκε από ζνα νζο υπολογιςτικό ςφςτθμα, του οποίου ιταν ο κφριοσ χριςτθσ. Δίχωσ αυτό το πρόγραμμα ίςωσ τα ολοκλθρωμζνα κυκλϊματα να μθν είχαν φτάςει ςε τόςο προςιτζσ τιμζσ. Το ςθμαντικότερο ςχεδιαςτικό χαρακτθριςτικό του υπολογιςτι του Minuteman ιταν ότι ο αλγόρικμοσ κακοδιγθςισ του άλλαηε κατά τθν εκτζλεςθ του προγράμματοσ, προκειμζνου ο πφραυλοσ να ζχει μεγαλφτερθ ακρίβεια, ενϊ μποροφςε και να δοκιμάςει τον πφραυλο γλιτϊνοντασ ζτςι τισ επιπλζον ςυνδζςεισ. Από αυτζσ τισ πρϊτεσ εφαρμογζσ ςτθ δεκαετία του 1960, οι τιμζσ ζχουν πζςει και ζχει υπάρξει μία ραγδαία αφξθςθ ςε επεξεργαςτικι ιςχφ και λειτουργικότθτα. Ο πρϊτοσ μικροεπεξεργαςτισ, για παράδειγμα, ο Intel 4004, είχε ςχεδιαςτεί για αρικμομθχανζσ και άλλα μικρά ςυςτιματα, αλλά απαιτοφςε πολφ εξωτερικι μνιμθ και τςιπ υποςτιριξθσ. Το 1978, το National Engineering Manufacturers Association κυκλοφόρθςε ζνα "πρότυπο" για τουσ προγραμματιηόμενουσ μικροελεγκτζσ [42] Χαρακτηριςτικϊ Τα ενςωματωμζνα ςυςτιματα ζχουν ςχεδιαςτεί για να κάνουν ςυγκεκριμζνθ εργαςία, ςε αντίκεςθ με τουσ γενικοφ ςκοποφ υπολογιςτζσ που προορίηονται για πολλαπλζσ εφαρμογζσ. Μερικά διακζτουν επίςθσ περιοριςμοφσ ςε πραγματικό χρόνο που πρζπει να πλθροφνται, για λόγουσ όπωσ θ αςφάλεια και χρθςτικότθτα, άλλα μπορεί να ζχουν χαμθλζσ ι μθ υπαρκτζσ απαιτιςεισ επιδόςεων, επιτρζποντασ ςτο υλικό του ςυςτιματοσ να απλουςτευκεί, ϊςτε να μειωκεί το κόςτοσ. Τα ενςωματωμζνα ςυςτιματα δεν είναι πάντα αυτόνομεσ ςυςκευζσ. Ρολλά ενςωματωμζνα ςυςτιματα αποτελοφνται από μικρά υπολογιςτικά κομμάτια, ςτο εςωτερικό μια μεγαλφτερθσ ςυςκευισ που εξυπθρετεί ζνα πιο γενικό ςκοπό. Για παράδειγμα, θ Gibson Robot Guitar διακζτει ζνα ενςωματωμζνο ςφςτθμα για τθ ρφκμιςθ των χορδϊν, αλλά ο 7

24 γενικόσ ςτόχοσ τθσ Robot Guitar είναι, φυςικά, να παίηει μουςικι. Ομοίωσ, ζνα ενςωματωμζνο ςφςτθμα ςε ζνα αυτοκίνθτο προςφζρει ειδικι λειτουργία ωσ υποςφςτθμα του ίδιου του αυτοκινιτου. Ρρόγραμμα γραμμζνα για ενςωματωμζνα ςυςτιματα αναφζρονται ωσ firmware, και είναι αποκθκευμζνα ςε ROM ι Flash μνιμθ. Τρζχουν με περιοριςμζνουσ πόρουσ υλικό όπωσ λίγθ μνιμθ, μικρό ι μθ εφιςτάμενο πλθκτρολόγιο, μικρι ι μθ υπαρκτι οκόνθ Περιβάλλον χρήςτη Τα ενςωματωμζνα ςυςτιματα κυμαίνονται από κακόλου περιβάλλον χριςτθ, αφιερωμζνα για μία μόνο λειτουργία, ςε ςφνκετα με γραφικό περιβάλλον χριςτθ που μοιάηουν με τα ςφγχρονα λειτουργικά ςυςτιματα ενόσ υπολογιςτι. Απλά ενςωματωμζνα ςυςτιματα χρθςιμοποιοφν κουμπιά, LEDs και LCD οκόνεσ γραφικϊν ι χαρακτιρων με απλό ςφςτθμα μενοφ. Ριο εξελιγμζνεσ ςυςκευζσ χρθςιμοποιοφν οκόνθ γραφικϊν με δυνατότθτα αφισ ι κουμπιά ςτθν άκρθ τθσ οκόνθσ, που παρζχουν ευελιξία και ταυτόχρονα ελαχιςτοποιοφν τον χϊρο, αφοφ ο λόγοσ φπαρξθσ των κουμπιϊν μπορείσ να αντικαταςτακεί από οκόνεσ και θ επιλογι να γίνεται μζςα από αυτζσ. Τα Handheld ςυςτιματα ςυχνά ζχουν μία οκόνθ με ζνα joystick button για επιλογι ςτοιχείου. Μερικά ςυςτιματα παρζχουν διεπαφι χριςτθ από απόςταςθ με τθ βοικεια μιασ ςειριακισ κφρασ (RS-232, USB, κτλ) ι κφρασ δικτφου (Ethernet). Ραρά τθν πικανι αναγκαιότθτα για λογιςμικό πελάτθ ι/και χριςθ καλωδίων ειδικοφ ςκοποφ, θ προςζγγιςθ αυτι δίνει ςυνικωσ πολλά πλεονεκτιματα: επεκτείνει τισ δυνατότθτεσ του ενςωματωμζνου ςυςτιματοσ, αποφεφγει το κόςτοσ τθσ οκόνθσ, απλοποιεί το BSP (board support package), δίνει τθ δυνατότθτα να φτιάξουμε μία πλοφςια διεπαφι χριςτθ ςτον υπολογιςτι. Ζνα καλό παράδειγμα είναι ο ςυνδυαςμόσ ενόσ ενςωματωμζνου web server που λειτουργεί ςε μία ςυςκευι (όπωσ μια φωτογραφικι μθχανι IP ι δρομολογθτζσ δικτφου). Το user interface εμφανίηεται ςε ζνα πρόγραμμα περιιγθςθσ ςε ζναν υπολογιςτι ςυνδεδεμζνο με τθ ςυςκευι, επομζνωσ δεν χρειάηεται κατά παραγγελία λογιςμικό να εγκαταςτακεί [42] Επεξεργαςτέσ ενςωματωμένων ςυςτημάτων Αρχικά οι ενςωματωμζνοι επεξεργαςτζσ μποροφν να χωριςτοφν ςε δφο κατθγορίεσ: ςτουσ ςυνικεισ μικροεπεξεργαςτζσ (μp) και ςτουσ μικροελεγκτζσ, που μποροφν να ζχουν πολλά περιφερειακά ςτο chip, μειϊνοντασ το κόςτοσ και το μζγεκοσ. Σε αντίκεςθ με τουσ προςωπικοφσ υπολογιςτζσ και τουσ servers, ζνασ αρκετά μεγάλοσ αρικμόσ βαςικϊν CPU αρχιτεκτονικϊν χρθςιμοποιοφνται, Von Neumann όπωσ και πολλϊν βακμϊν Harvard αρχιτεκτονικζσ, RISC (Reduced instruction set computing) κακϊσ και non-risc και VLIW αρχιτεκτονικζσ. Τα μικθ λζξεων ποικίλουν από 4 bits μζχρι 64 bit ι ακόμα και περιςςότερα 8

25 (κυρίωσ ςε DSP) αν και τα πιο χαρακτθριςτικά είναι τα 8 και 16 bit. Οι περιςςότερεσ αρχιτεκτονικζσ παράγονται ςε ζνα μεγάλο αρικμό διαφορετικϊν παραλλαγϊν και ςχθμάτων, πολλά από τα οποία καταςκευάηονται επίςθσ από διάφορεσ εταιρείεσ. Ο πιο ευρζωσ χρθςιμοποιοφμενοσ επεξεργαςτισ για ενςωματωμζνα ςυςτιματα είναι ο ARM (κατζχει περίπου το 90% ςτα 32 bit ενςωματωμζνα ςυςτιματα) [42] Αξιοπιςτία Στα εργαλεία ανάπτυξθσ ενςωματωμζνων ςυςτθμάτων περιλαμβάνονται compilers, assemblers και debuggers. Τα ενςωματωμζνα ςυςτιματα ςυχνά βρίςκονται ςε μθχανζσ που αναμζνεται να λειτουργοφν ςυνεχϊσ για χρόνια, χωρίσ λάκθ, και ςε οριςμζνεσ περιπτϊςεισ να κάνουν ανάκτθςθ από μόνεσ τουσ αν ςυμβεί κάποιο ςφάλμα. Συνεπϊσ, το λογιςμικό ςυνικωσ αναπτφςςεται και εξετάηεται με μεγαλφτερθ προςοχι από ότι ςτουσ προςωπικοφσ υπολογιςτζσ και αποφεφγονται μθχανικά κινοφμενα μζρθ όπωσ ςκλθροί δίςκοι. Επίςθσ αποφεφγονται μζρθ που ενδζχεται να φκαροφν με τθν πάροδο του χρόνου όπωσ διακόπτεσ. Ειδικά κζματα αξιοπιςτίασ μπορεί να περιλαμβάνουν: 1. Το ςφςτθμα δεν μπορεί να κλείςει με αςφάλεια για επιςκευι ι είναι πολφ απρόςιτο για να γίνει επιςκευι. Ραραδείγματα τζτοιων ςυςτθμάτων είναι ςυςτιματα που προορίηονται για διαςτθμικζσ εφαρμογζσ, υποκαλάςςια καλϊδια, φάροι πλοιγθςθσ, ςυςτιματα γεϊτρθςθσ, και ςυςτιματα αυτοκινιτων. 2. Το ςφςτθμα πρζπει να διατθρεί τισ λειτουργίεσ του για λόγουσ αςφαλείασ. Χαλαρά μοντζλα είναι λιγότερο ανεκτά. Συχνά αντίγραφα αςφαλείασ επιλζγονται από τον χειριςτι. Ραραδείγματα τζτοιων ςυςτθμάτων είναι τα ςυςτιματα πλοιγθςθσ αεροςκαφϊν, ςυςτιματα ελζγχου αντιδραςτιρων, κρίςιμα για τθν αςφάλεια ςυςτιματα ελζγχου χθμικϊν εργοςταςίων, ςιματα τρζνων, κινθτιρεσ ςε μονοκινθτιριο αεροςκάφοσ. 3. Το ςφςτθμα κα ςε ςθμαντικζσ οικονομικζσ απϊλειεσ ςτθν περίπτωςθ που κλείςει. Τθλεφωνικοί διακόπτεσ, ζλεγχοι εργοςταςίου, γζφυρεσ και ςυςτιματα ανελκυςτιρων, μεταφορά κεφαλαίου και ςυςτιματα αγορϊν, ςυςτιματα αυτόματων πωλθτϊν. Μια ποικιλία από τεχνικζσ χρθςιμοποιοφνται, μερικζσ φορζσ ςε ςυνδυαςμό, για να ανακάμψει από τα λάκθ και τα ςφάλματα λογιςμικοφ όπωσ διαρροζσ μνιμθσ, αλλά και μαλακά ςφάλματα ςτο υλικό: Watchdog timers, που επαναφζρουν το ςφςτθμα εκτόσ κι αν το λογιςμικό ειδοποιιςει τον watchdog. Υποςυςτιματα με περιττό χϊρο που μποροφν να μεταφερκοφν. Λογιςμικό χαλαροφ μοντζλου (limp models) που παρζχουν μερικι λειτουργία. Σχεδιάηοντασ με Trusted Computing Base (TCB) αρχιτεκτονικζσ, εξαςφαλίηεται ζνα πολφ αςφαλζσ και αξιόπιςτο περιβάλλον ςυςτιματοσ. 9

26 Μια Embedded Hypervisor είναι ςε κζςθ να παρζχει αςφαλι ενκυλάκωςθ για κάκε ςτοιχείο του υποςυςτιματοσ, ζτςι ϊςτε ζνα διακυβεφων υποςφςτθμα να μθν μπορεί να παρζμβει ςε άλλα υποςυςτιματα, ι ςε λογιςμικό προνομιακοφ επιπζδου του ςυςτιματοσ. Αυτι θ ενκυλάκωςθ κρατά τα ςφάλματα από τθ μετάδοςι από το ζνα υποςφςτθμα ςτο άλλο, βελτιϊνοντασ ζτςι τθν αξιοπιςτία. Αυτό μπορεί επίςθσ να επιτρζψει ζνα υποςφςτθμα να κλείςει αυτόματα και να ξαναρχίςει ςε λειτουργία ανίχνευςθσ ςφαλμάτων. Immunity Aware Programming που είναι ζνα ςφνολο προγραμματιςτικϊν τεχνικϊν [42] Αρχιτεκτονικϋσ λογιςμικού ενςωματωμϋνων ςυςτημϊτων Υπάρχουν αρκετοί τφποι αρχιτεκτονικϊν λογιςμικοφ που χρθςιμοποιοφνται ευρζωσ: Simple control loop Σε αυτό το ςχεδιαςμό, το software απλά ζχει ζνα βρόχο (loop). Ο βρόχοσ καλεί υπορουτίνεσ κάκε μία από τισ οποίεσ χειρίηεται ζνα μζροσ του υλικοφ ι του λογιςμικοφ. Interrupt controlled system Κάποια ενςωματωμζνα ςυςτιματα ελζγχονται περιοδικά από κάποια διακοπι (interrupt). Αυτό ςθμαίνει ότι θ διεργαςίεσ ενεργοποιοφνται από διαφορετικά ιδθ γεγονότων. Μια διακοπι μπορεί να προκλθκεί για παράδειγμα από ζναν timer ςε προεπιλεγμζνθ ςυχνότθτα ι όταν ο ελεγκτισ ςειριακι κφρασ λάβει ζνα δεδομζνο. Αυτοφ του είδουσ τα ςυςτιματα χρθςιμοποιοφνται όταν οι event handlers είναι απλοί και ςφντομοι. Συνικωσ τζτοιου είδουσ ςυςτιματα τρζχουν μια απλι διεργαςία ςε ζνα main loop, αλλά αυτι θ διεργαςία δεν είναι ευαίςκθτθ ςε μθ αναμενόμενεσ κακυςτεριςεισ. Μερικζσ φορζσ ο interrupt handler προςκζτει μακρφτερεσ ςτο χρόνο διεργαςίεσ ςε μία ςτοίβα δομϊν. Αργότερα, όταν ολοκλθρωκεί θ εξυπθρζτθςθ, αυτζσ οι διεργαςίεσ τρζχουν από το κυρίωσ loop. Αυτι θ μζκοδοσ φζρνει τζτοιου είδουσ ςυςτιματα ποιο κοντά ςε πφρινεσ multitasking, με διακεκριμζνεσ διεργαςίεσ. Cooperative multitasking Ζνα non-preemptive multitasking ςφςτθμα είναι παρόμοιο με ζνα απλό ελεγχόμενο loop ςχεδιαςμό (scheme), με τθν προχπόκεςθ ότι το loop είναι κρυμμζνο ςτο API. Ο προγραμματιςτισ κακορίηει τθν ακολουκία των διεργαςιϊν και κάκε διεργαςία καταλαμβάνει το περιβάλλον μζςα ςτο οποίο κα τρζχει. Πταν θ διεργαςία είναι ςε κατάςταςθ idle, καλεί τθν idle ρουτίνα, ςυνικωσ καλοφνται οι pause, wait, yield, nop, κτλ. 10

27 Τα πλεονεκτιματα και μειονεκτιματα είναι παρόμοια με αυτά του ελεγχόμενου βρόχου, εκτόσ από τθν ευκολία να ειςάγουμε νζο λογιςμικό, γράφοντασ πολφ απλά μια νζα διεργαςία, ι προςκζτοντάσ το ςτθν queue-interpreter Preemptive multitasking or multi-threading Σε αυτά τα ςυςτιματα, ζνα χαμθλοφ επιπζδου κομμάτι κϊδικα εναλλάςςει διεργαςίεσ ι νιματα (threads), βαςιςμζνο ςτον timer (ςυνδεδεμζνα με ζνα interrupt). Αυτό είναι το επίπεδο ςτο οποίο το ςφςτθμα κεωρείται ότι ζχει πυρινα λειτουργικοφ ςυςτιματοσ. Ανάλογα με το πόςο λειτουργικότθτα απαιτείται, ειςάγει περιςςότερθ ι λιγότερθ πολυπλοκότθτα ςτον χειριςμό πολλϊν διεργαςιϊν, κάνοντάσ να φαίνονται ότι τρζχουν παράλλθλα. Ππωσ κάκε κϊδικασ μπορεί να είναι επιβλαβζσ για τα δεδομζνα μιασ άλλθσ διεργαςίασ (εκτόσ από μεγαλφτερα ςυςτιματα που χρθςιμοποιοφν μονάδα διαχείριςθσ μνιμθσ), τα προγράμματα κα πρζπει να ςχεδιάηονται προςεκτικά και να ελζγχονται, και ο ζλεγχοσ ςε κοινά δεδομζνα να ελζγχεται από κάποια μεκοδολογία ςυγχρονιςμοφ. Τζτοιεσ μζκοδοι είναι message queues (ουρζσ μθνυμάτων), semaphores ι ο ςυγχρονιςμόσ χωρίσ αποκλειςμό (non-blocking synchronization). Λόγω τθσ πολυπλοκότθτασ, είναι ςφνθκεσ οι εταιρίεσ να χρθςιμοποιοφν ζνα realtime operating system (RTOS) (λειτουργικό ςφςτθμα πραγματικοφ χρόνου), επιτρζποντασ με αυτό τον τρόπο ςτουσ προγραμματιςτζσ εφαρμογϊν να επικεντρϊνονται ςτισ λειτουργίεσ τθσ ςυςκευισ και όχι ςτισ υπθρεςίεσ του λειτουργικοφ ςυςτιματοσ, τουλάχιςτον για μεγάλα ςυςτιματα. Τα μικρά ςυςτιματα ςυχνά δεν μποροφν να αντζξουν το overhead που ςχετίηεται με ζνα γενικοφ ςκοποφ πραγματικοφ χρόνου ςφςτθμα, λόγω των περιοριςμϊν που ςχετίηονται με τθ μνιμθ, τθν απόδοςθ και/ι το χρόνο ηωισ μπαταρίασ. Η επιλογι τθσ αναγκαιότθτασ ενόσ RTOS πρζπει να γίνει πριν αρχίςει ο ςχεδιαςμόσ του ςυςτιματοσ. Αυτό ςυνεπάγεται τθν επιλογι από τουσ ςχεδιαςτζσ του ενςωματωμζνου λειτουργικοφ ςυςτιματοσ για τισ ςυςκευζσ τουσ να βαςίηονται ςτισ τωρινζσ απαιτιςεισ κι ζτςι περιορίηει τισ μελλοντικζσ επιλογζσ ςε μεγάλο βακμό. Ο περιοριςμόσ μελλοντικϊν επιλογϊν γίνεται όλο και μεγαλφτερο κζμα κακϊσ ο χρόνοσ ηωισ του προϊόντοσ περιορίηεται. Επιπρόςκετα, το επίπεδο πολυπλοκότθτασ αυξάνεται κακϊσ απαιτείται από τισ ςυςκευζσ να χειρίηονται πολλζσ μεταβλθτζσ όπωσ ςειριακζσ κφρεσ, USB, TCP/IP, Bluetooth, Wireless LAN, ραδιοδίκτυα ηεφξθσ, πολλαπλά κανάλια, δεδομζνα και φωνι, εξελιγμζνα γραφικά, πολλαπλζσ καταςτάςεισ, πολλαπλά νιματα, πολυάρικμεσ καταςτάςεισ wait κλπ. Αυτζσ οι τάςεισ οδθγοφν ςτθν υιοκζτθςθ του embedded middleware εκτόσ από το λειτουργικό ςφςτθμα πραγματικοφ χρόνου. Microkernels και exokernels Ο microkernel είναι ζνα λογικό βιμα προσ τα πάνω από τα RTOS. Ο τυπικόσ τρόποσ είναι ο πυρινασ του λειτουργικοφ ςυςτιματοσ να καταλαμβάνει μνιμθ και αλλάηει τον επεξεργαςτι ςε διαφορετικό νιμα για εκτζλεςθ. Σχεδόν όλεσ οι λειτουργίεσ περιλαμβανομζνου και ςυςτθμάτων αρχείων και διεπαφϊν δικτφου υλοποιοφνται ςε διεργαςίεσ user mode. 11

28 Γενικά οι microkernels επιτυγχάνουν όταν το switching και οι επαφζσ μεταξφ των διεργαςιϊν είναι γριγορεσ και αποτυγχάνουν όταν είναι αργζσ. Οι exokernels επικοινωνοφν αποτελεςματικά από τισ κλιςεισ των κανονικϊν υπορουτίνων. Το υλικό και όλο το λογιςμικό είναι διακζςιμο και επεκτάςιμο από τουσ προγραμματιςτζσ εφαρμογϊν. Monolithic kernels Σε αυτι τθν περίπτωςθ υιοκετείται ζνασ ςχετικά μεγάλοσ πυρινασ με εξελιγμζνεσ ικανότθτεσ για να ταιριάηει ςτο περιβάλλον ενόσ ενςωματωμζνου. Αυτό δίνει ςτουσ προγραμματιςτζσ ζνα περιβάλλον παρόμοιο με το λειτουργικό των υπολογιςτϊν όπωσ Linux ι Microsoft Windows, και ζτςι είναι πολφ παραγωγικό για ανάπτυξθ. Από τα αρνθτικά είναι το γεγονόσ ότι απαιτεί ςθμαντικά περιςςότερο υλικό, είναι πιο ακριβό, και λόγο τθσ πολυπλοκότθτασ μπορεί να είναι λιγότερο προβλζψιμο και αξιόπιςτο. Κοινά παραδείγματα τζτοιον ςυςτθμάτων είναι τα embedded Linux και τα Windows CE. Υπάρχουν όμωσ αρκετοί λόγοι για να υιοκετιςει κανείσ μία τζτοια προςζγγιςθ όπωσ είναι δθμόςια διάκεςθ ςε drivers, web servers κτλ. Exotic Custom operating system Υπάρχουν τζλοσ ςυςτιματα τα οποία απαιτοφν αςφάλεια, αξιοπιςτία και αποτελεςματικι ςυμπεριφορά. Σε αυτι τθν περίπτωςθ, ζνασ οργανιςμόσ ςχεδιάηει το ςφςτθμα να ταιριάηει ςτισ απαιτιςεισ. Εκτόσ από τον πυρινα του λειτουργικοφ ςυςτιματοσ, πολλά ενςωματωμζνα ςυςτιματα ζχουν επιπρόςκετα υψθλότερου επιπζδου κομμάτια λογιςμικοφ. Αυτά τα κομμάτια περιζχουν ςτοίβεσ πρωτοκόλλων όπωσ CAN, TCP/IP, FTP, HTTP και HTTPS και περιλαμβάνουν και δυνατότθτεσ αποκικευςθσ δεδομζνων όπωσ FAT και διαχείριςθ flash μνιμθσ. Αν τα ενςωματωμζνα ςφςτθμα ζχουν δυνατότθτεσ για ιχο και εικόνα, τότε κα πρζπει να ζχουν και τουσ αντίςτοιχουσ drivers και κϊδικεσ ςτο ςφςτθμα. Στθν περίπτωςθ που ζχουμε monolithic kernel, περιλαμβάνονται αρκετά από τα επίπεδα λογιςμικοφ. Στθν κατθγορία των RTOS, θ διακεςιμότθτα επιπρόςκετου κϊδικα εξαρτάται από τθν εμπορικι προςφορά τθσ εταιρίασ [42]. 1.4 Hard Core PowerPC Ππωσ αναφζραμε, υπάρχουν διάφορεσ επιλογζσ όςο αφορά τον επεξεργαςτι που κα χρθςιμοποιιςουμε. Μποροφμε να διαλζξουμε καταρχιν τθν αρχιτεκτονικι ςτθν οποία κα δουλζψουμε όπωσ VLIW ι RISC. Στθ ςυνζχεια μποροφμε να διαλζξουμε ποια ςυγκεκριμζνθ CPU κα χρθςιμοποιιςουμε, αν κα είναι hard core ι soft core. Το εφροσ των bit, το μζγεκοσ τθσ cache είναι κάποιεσ από τισ επιλογζσ που ζχουμε. Οι hard core CPUs είναι επεξεργαςτζσ που βρίςκονται ιδθ ςτο FPGA και δεν μποροφμε να τουσ αλλάξουμε, αλλά μόνο να 12

29 αλλάξουμε κάποιεσ παραμζτρουσ. Οι soft cores CPUs από τθν άλλθ είναι επεξεργαςτζσ οι οποίου είναι υλοποιθμζνθ ςε VHDL και κατεβαίνουν μαηί με τον κϊδικά μασ. Το PowerPC είναι ςυντομογραφία για το Performance Optimization With Enhanced RISC Performance Computing, πολλζσ φορζσ γράφεται και ωσ PPC, και βαςίηεται ςτθν RISC αρχιτεκτονικι. Δθμιουργικθκε από τθ ςυμμαχία Apple IBM Motorola γνωςτι ωσ AIM το Αρχικά προοριηόταν για προςωπικοφσ υπολογιςτζσ, αλλά ζγινε πολφ δθμοφιλισ για ενςωματωμζνα ςυςτιματα και υψθλισ απόδοςθσ επεξεργαςτζσ. Χρθςιμοποιοφταν ςτα Macintosh τθσ Apple από το 1994 μζχρι το 2006 και ςε κονςόλεσ βιντεοπαιχνιδιϊν [42] Ιςτορικϊ Η ιςτορία του PPC ξεκινάει από τον πρωτότυπο 801 chip τθσ IBM που βαςίςτθκε ςτθν ιδζα του John Cocke RISC ςτα τζλθ του 70. Ρυρινεσ βαςιςμζνα ςτον 801 χρθςιμοποιοφνταν από ζνα αρικμό ενςωματωμζνων προϊόντων τθσ ΙΒΜ, μζχρι που προζκυψε ο 16-register ROMP. Οι επιδϊςεισ όμωσ δεν ιταν καλζσ και θ IBM ξεκίνθςε το American Project για να φτιάξει το πιο γριγορο επεξεργαςτι τθσ αγοράσ. Το αποτζλεςμα ιταν θ αρχιτεκτονικι POWER, που ειςιχκθκε με τον RISC System/6000 ςτισ αρχζσ του 90. Ο αρχικόσ POWER επεξεργαςτισ, μια από τισ πρϊτεσ superscalar (παραλλθλοποίθςθ ςε επίπεδο εντολϊν) RISC υλοποιιςεισ, ιταν υψθλισ απόδοςθσ, multi-chip υλοποίθςθ. Η IBM ςφντομα κατάλαβε ότι ο κόςμοσ χρειαηόταν ζνα single-chip επεξεργαςτι για να διευρφνει τον RS/6000 από lower-end ςε high end μθχανζσ. Τότε ιταν που θ IBM προςζγγιςε τθν Apple και αυτι με τθ ςειρά τθσ τθν Motorola και ζκανα τθ ςυμμαχία AIM (Apple, IBM, Motorola). Το 1991 ο PowerPC ιταν ζνα από τα μεγαλφτερα προβλιματα των τριϊν εταιριϊν. Από τθν άλλθ πλευρά ιταν θ αναπτυςςόμενθ Microsoft και τα Windows ςτουσ προςωπικοφσ υπολογιςτζσ και θ Intel ςτουσ επεξεργαςτζσ. Εκείνθ τθν περίοδο, θ πλειοψθφία τθσ βιομθχανίασ των προςωπικϊν υπολογιςτϊν ιταν βαςιςμζνα ςτον Intel και τα οποία είχα CISC (complex instruction set computer) αρχιτεκτονικι, και ςτθν ανάπτυξθ του Pentium ςτα ςχζδια. Το PowerPC ιταν ζνα από τισ αρκετζσ ενϊςεισ που είχαν γίνει για να ανακόψουν τθ ςυνεχιηόμενθ επζκταςθ τθσ Microsoft-Intel ςτουσ προςωπικοφσ υπολογιςτζσ. Και θ Motorola και θ Apple είχε τουσ δικοφσ τισ επεξεργαςτζσ παράλλθλα με τθν ανάπτυξθ του PowerPC, τθν οικογζνεια θ οποία δεν τα πιγαινε και τόςο καλά ςτθν αγορά. Η Motorola με τθν οικογζνεια τα πιγαινε ςχετικά καλά. Από τθν άλλθ θ ανάπτυξθ του ιταν φτωχι λόγω του γεγονότοσ τθσ ζλλειψθσ πόρων. Αν ο καινοφργιοσ PPC ιταν ςυμβατόσ με το δίαυλο επικοινωνίασ του 88000, κα επζτρεπε και ςτθν Apple και ςτθν Motorola να ζχουν ζτοιμεσ τισ ςυςκευζσ τουσ ςτθν αγορά πολφ πιο γριγορα αφοφ δεν κα χρειαηόταν να ξαναςχεδιάςουν τισ πλακζτεσ. Το αποτζλεςμα αυτοφ ιταν μια πλθκϊρα απαιτιςεων από τον PowerPC. Τελικά ο PPC όταν βγικε ςτθν αγορά αντιμετωπίςτθκε με 13

30 ενκουςιαςμό. Τόςο θ Apple όςο και θ IBM και θ Motorola ζβγαηαν πλατφόρμεσ βαςιςμζνεσ ςε αυτό. Στα μιςά τθσ δεκαετίασ του 90 ο PPC μποροφςε να ςυναγωνιςτεί του ταχφτερουσ επεξεργαςτζσ τθσ οικογζνειασ x86 τθσ Intel. Η ανάγκθ όμωσ για νζεσ αρχιτεκτονικζσ και θ ζλλειψθ εφαρμογϊν οδιγθςαν ςτθν παραγκϊνιςθ του chip, με εξαίρεςθ τθν Apple ςτα Macintosh. Ραράλλθλα τόςο θ IBM όςο και θ Motorola δθμιουργοφςαν θ κάκε μία τισ δικζσ τισ εκδόςεισ του PowerPC. Η ςειρά 4xx αναπτφχκθκε εντόσ τθσ IBM. Ρρόκειται για ενςωματωμζνο επεξεργαςτι. Ο ενςωματωμζνοσ αυτόσ επεξεργαςτισ ζφερε ζςοδα ςτθν IBM τθσ τάξθσ των 100 εκατ. δολ. και προςζλκυςε εκατοντάδεσ πελάτεσ. Το 2004 θ IBM επζκτεινε τθν αγορά ενςωματωμζνων επεξεργαςτϊν πουλϊντασ τθ γραμμι των PowerPC ςτθν Applied Micro Circuits Corporation (AMCC) για 227 εκατ. δολάρια και εςτίαςε τθ ςχεδίαςθ των PowerPC ςτισ κονςόλεσ παιχνιδιϊν όπωσ Nintendo, GameCube, Wii, Play station3 και XBOX 360. Η IBM ςυνεχίηει ακόμα και ςτισ μζρεσ μασ (2010) να αναπτφςςει τον PowerPC για ASIC προςεγγίςεισ και όχι μόνο. Ρολλζσ high volume εφαρμογζσ φιλοξενοφν τον πυρινα του. Μζχρι και τον Ιοφλιο του 2010 θ αρχιτεκτονικι POWER είναι ακόμα πολφ ηωντανι και προςφζρεται για μεγάλεσ επιχειριςεισ και ςυνεχίηει να εξελίςςεται [42] PowerPC 400 Η οικογζνεια PowerPC 400 είναι μια ςειρά από 32-bit ενςωματωμζνουσ επεξεργαςτζσ που χρθςιμοποιοφν τθν Power αρχιτεκτονικι. Οι cores είναι ςχεδιαςμζνοι για να χωράνε μζςα ςε ςυγκεκριμζνου ςκοποφ εφαρμογζσ όπωσ system-on-chip, microcontrollers, ςυςκευζσ δικτφου, ASIC(application specific integrated circuits), FPGAs, set-top boxes (media centers), ςυςκευζσ αποκικευςθσ, και υπζρ-υπολογιςτζσ. Σε αυτι τθν οικογζνεια ανικουν τα μοντζλα PPC401, PPC401, PPC405, PPC440, PPC470. Ο PowerPC 440 δθμιουργικθκε το Ο PPC440 ιταν ο πρϊτοσ από πυρινασ από τθν IBM που περιείχε τθν προζκταςθ Book E ςτισ προδιαγραφζσ του. Ρεριζχει επίςθσ το δίαυλο επικοινωνίασ CoreConnect ωσ διεπαφι μεταξφ των διάφορων τμθμάτων εντόσ των ςυςκευϊν System-on-Chip. Είναι ζνασ πυρινασ υψθλισ απόδοςθσ με ξεχωριςτό 32 kb για εντολζσ και δεδομζνα L1 cache. Ζχει 7 ςτάδια pipeline, υποςτθρίηοντασ ταχφτθτεσ ωσ 800 MHz και L2 cache μζχρι 256 kb. Ο πυρινασ δεν ζχει floating point unit (FPU) αλλά ζχει ζνα τεςςάρων καταςτάςεων FPU που μπορεί να ςυμπεριλιφκθ χρθςιμοποιϊντασ το APU (Auxiliary Processing Unit) interface. Ο 440 είναι ςφμφωνα με το πρότυπο Power ISA v Η Xilinx χρθςιμοποιεί ζνα ι δφο τζτοιουσ πυρινεσ ςτθ ςειρά Virtex 5 FXT. Ο PowerPC βρίςκεται κυρίωσ ςτουσ controllers των αυτοκινιτων. Σχεδόν τα μιςά από τα αυτοκίνθτα παγκοςμίωσ, ζχουν τουλάχιςτον ζναν PowerPC [42]. 14

31 1.4.3 Χαρακτηριςτικϊ PowerPC 440 Ο ενςωματωμζνοσ επεξεργαςτισ PPC440 περιλαμβάνει dual-issue, superscalar, pipelined processing unit, μαηί με άλλα λειτουργικά ςτοιχεία απαραίτθτα για τθν υλοποίθςθ ενόσ ζνα ενςωματωμζνοσ system-on-chip. Αυτά τα λειτουργικά ςτοιχεία περιλαμβάνουν διαχείριςθ μνιμθσ, ελεγκτζσ λανκάνουςασ μνιμθσ, timers, μονάδεσ για τον εντοπιςμό ςφαλμάτων. Επιπροςκζτωσ ζχει τρία ξεχωριςτά 128 bit PLB (processor local busses), προςφζρει ζνα interface για custom coprocessors και λειτουργία floating point, επιπλζον διακζτει 32 KB instruction και 32 KB data cache- [51]. Οι λειτουργίεσ που ζχει είναι: Υψθλι απόδοςθ, dual-issue, superscalar 32-bit RISC CPU o Superscalar υλοποίθςθ του full 32-bit Book E: Enhanced PowerPC Architecture o Επτά ςταδίων, μικροαρχιτεκτονικι υψθλοφ pipeline o Διπλό instruction fetch, decode, and out-of-order issue o Εκτόσ ςειράσ dispatch, execution, and completion o High-accuracy dynamic branch prediction using a Branch History Table (BHT) o Μειωμζνο branch latency χρθςιμοποιϊντασ Branch Target Address Cache (BTAC) o Τρία ανεξάρτθτα ςτάδια pipelines Combined complex integer, system, and branch pipeline Simple integer pipeline Load/store pipeline o Ρολλαπλαςιαςμό ςε ζνα κφκλο ρολογιοφ o Ενόσ ρολογιοφ multiply-accumulate (DSP instruction set extensions) o 9-κυρϊν (6-read, 3-write) 32 x 32-bit General Purpose Register (GPR) file o Υποςτιριξθ υλικοφ για όλεσ τισ CPU misaligned προςβάςεισ o Ρλιρθ υποςτιριξθ για big-endian και little-endian byte διάταξθ o Χαρακτθριςτικά διαχείριςθσ ενζργειασ Ρρωτοβάκμιεσ κρυφζσ μνιμεσ o 32 KB instruction cache o 32 KB data cache o Ρρόςβαςθ μονοφ κφκλου ρολογιοφ o 32-byte (οχτϊ λζξεων) μικοσ λζξεων o 64-way associativity o Write-back and write-through λειτουργίεσ o Ζλεγχοσ για το αν τα δεδομζνα αποκικευςθσ διατίκενται ι αν απαιτείται write-through ςε cache miss o Εκτεταμζνεσ load/store ουρζσ και πολλαπλζσ γραμμζσ fill/flush buffers o Non-blocking μζχρι και τζςςερα outstanding load misses o Υποςτιριξθ Cache line locking o Οι κρυφζσ μνιμεσ μποροφν να διαμοιραςτοφν για να προςφζρουν ξεχωριςτζσ περιοχζσ για transient instructions and data 15

32 o o High associativity permits efficient allocation of cache memory Critical word first data access and forwarding Cache tags and data are parity-protected against soft errors Μονάδα διαχείριςθσ μνιμεσ (Memory Management Unit) (MMU) o Ξεχωριςτό instruction and data shadow TLBs o 64-entry, fully associative unified TLB array o Μεταβλθτό μζγεκοσ ςελίδασ (1 KB MB), simultaneously resident in TLB o Η MMU υποςτθρίηει 4-bit εκτεταμζνα bits διεφκυνςθσ (μποροφν να μορφοποιθκοφν ςε 36-bit πραγματικι διεφκυνςθ) o Ευζλικτοσ TLB διαχειριςτισ με αναηιτθςθ page table λογιςμικοφ o Storage attribute controls for write-through, caching inhibited, guarded, and byte order (endianness) o Τζςςερα user-definable storage attribute controls (for controlling CodePack code compression and transient data, for example) o TLB tags and data are parity-protected against soft errors Debug ικανότθτεσ o Ραρατεταμζνεσ hardware debug ικανότθτεσ ςε ςυνεργαςία με το IEEE JTAG κφρα Ρολλαπλά instruction and data address breakpoints (including range) Σφγκριςθ τιμϊν δεδομζνων Single-step, branch, trap, and other debug events o Non-invasive, real-time software trace interface Timer ικανότθτεσ o 64-bit time base o Decrementer with auto-reload capability o Fixed Interval Timer (FIT) o Watchdog timer with critical interrupt and/or auto-reset Ρολλαπλζσ διεπαφζσ ενςωματωμζνου επεξεργαςτι που ζχουν προςδιοριςτεί από τθν IBM CoreConnect on-chip system αρχιτεκτονικι o PLB διεπαφι Τρεισ ανεξάρτθτεσ 128-bit διεπαφζσ (εςωτερικζσ ςε μπλοκ ενςωματωμζνου επεξεργαςτι ςτο Virtex-5 FPGAs) για instruction reads, data reads, and data writes Ρολλαπλζσ CPU:PLB αναλογίεσ ςυχνότθτασ υποςτθρίηονται o Auxiliary Processor Unit (APU) κφρα Functional extensions provided to the processor pipelines, including GPR file operations 128-bit load/store interface (direct access between the APU and the primary data cache) Η διεπαφι μπορεί να υποςτθρίξει APU execution για όλεσ τισ PowerPC floating-point instructions Attachment capability for DSP coprocessing such as accumulators and SIMD computation Enables customer-specific instruction enhancements 16

33 o Device Control Register (DCR) interface for independent access to on-chip control registers Avoids contention for high-bandwidth PLB system bus o Clock and power management interface o JTAG debug interface [51] Οργϊνωςη του PowerPC 440 Η οργάνωςθ του PPC440 παρουςιάηεται ςτο παρακάτω ςχιμα [51] Εικόνα 1.1 Block Diagram του PowerPC 440 Στο επόμενο ςχιμα παρουςιάηεται το block διάγραμμά του κακϊσ και των ςτοιχείων του [51]. 17

34 Εικόνα 1.2 Embedded Processor Block in Virtex-5 FPGAs 1.5 Soft Core MicroBlaze Ζνασ Soft Core είναι ζνασ μικροεπεξεργαςτισ που μπορεί να υλοποιθκεί πλιρωσ χρθςιμοποιϊντασ λογικι ςφνκεςθ. Μπορεί να υλοποιθκοφν ςε διάφορεσ ςυςκευζσ θμιαγωγϊν όπωσ ASIC, FPGA, CPLD. Ο MicroBlaze είναι ζνασ soft πυρινασ τθσ που ςχεδιάςτθκε για τα FPGAs τθσ Xilinx από τθν ίδια τθ Xilinx. Ωσ soft core επεξεργαςτισ υλοποιείται ολοκλθρωτικά ςτθ μνιμθ γενικοφ ςκοποφ και ςτο λογικό κομμάτι του FPGA. Πςο αφορά τθν αρχιτεκτονικι του instruction-set, ο MicroBlaze είναι παρόμοιοσ με τθν αρχιτεκτονικι DLX RISC που περιγράφεται ςτο βιβλίο αρχιτεκτονικισ υπολογιςτϊν των Patterson και Hennessy. Με ελάχιςτεσ εξαιρζςεισ, ο MicroBlaze μπορεί να παίρνει καινοφργια εντολι ςε κάκε κφκλο και να διατθρεί το single-cycle throughput ςτισ περιςςότερεσ των περιπτϊςεων. Ο MicroBlaze ζχει ζνα ευπροςάρμοςτο ςφςτθμα διαςυνδζςεων για να υποςτθρίηει ζνα εφροσ ενςωματωμζνων εφαρμογϊν. Το πρωταρχικό I/O bus του MicroBlaze είναι το CoreConnect PLB bus, το οποίο είναι ζνα παραδοςιακό ςφςτθμα με διευκυνςιοδοτοφμενο κανάλι επικοινωνίασ με master/slave ικανότθτεσ. Η πλειοψθφία των vendor-supplied και thirty-party IP αλλθλεπιδροφν με το PLB απευκείασ (ι μζςω μια γζφυρασ PLB to OPB bus). Για πρόςβαςθ ςτθ μνιμθ ο MicroBlaze χρθςιμοποιεί ζνα αποκλειςτικό κανάλι, το LMB bus 18

35 (local memory bus), το οποίο περιορίηει το φορτίο από τα άλλα κανάλια. Συνεπεξεργαςτζσ user-define, υποςτθρίηονται μζςω ενόσ μια αποκλειςτικισ ςφνδεςθσ FIFO-style που καλείται FSL (fast simplex link). Οι ςυνεπεξεργαςτζσ μποροφν να επιταχφνουν υπολογιςτικά εντατικοφσ αλγόρικμουσ με τθν ανάλθψθ μζρουσ του φορτίου ι ακόμα και του ςυνολικοφ φορτίου μζςω μονάδων user-designed. Ρολλζσ πτυχζσ του MicroBlaze μποροφν να ρυκμιςτοφν από το χριςτθ. Αυτζσ είναι το μζγεκοσ τθσ cache, τα ςτάδια pipeline, ενςωματωμζνα περιφερειακά, θ μονάδα διαχείριςθσ μνιμθσ, τθ διεπαφι του διαφλου επικοινωνίασ κ.α. Η ζκδοςθ βελτιςτοποιθμζνθ για επιφάνεια του MicroBlaze, θ οποία χρθςιμοποιεί 3 ςτάδια pipeline, κυςιάηει τθ ςυχνότθτα λειτουργίασ για να μειϊςει τθν επιφάνεια. Η ζκδοςθ βελτιςτοποιθμζνθ για επιδόςεισ, επεκτείνει το pipeline ςε 5 ςτάδια, επιτρζποντασ ζτςι ταχφτθτεσ τθσ τάξεωσ των 210 MHz (ςτθν οικογζνεια Virtex-5). Επιπροςκζτωσ, instructions του επεξεργαςτι που χρθςιμοποιοφνται ςπάνια και ςτοιχίηουν ςε υλικό, μποροφν επιλεκτικά να προςτεκοφν / αφαιρεκοφν (για παράδειγμα πολλαπλαςιαςμόσ, διαίρεςθ, και πράξεισ floating-point αρικμϊν). Αυτι θ παραμετροποίθςθ επιτρζπει ςτο ςχεδιαςτι να κάνει κατάλλθλα tradeoffs ςτο ςχεδιαςμό για να φιλοξενεί τθσ προδιαγραφζσ του υλικοφ και τισ απαιτιςεισ του λογιςμικοφ. Με τθ μονάδα διαχείριςθσ μνιμθσ, ο MicroBlaze είναι ικανόσ να φιλοξενεί λειτουργικά ςυςτιματα που απαιτοφν από το υλικό ςελιδοποίθςθ και επίπεδα προςταςίασ όπωσ Linux kernels. Αλλιϊσ είναι περιοριςμζνο ςε λειτουργικά ςυςτιματα με απλοποιθμζνα επίπεδα προςταςίασ και εικονικι μνιμθ όπωσ το FreeRTOS ι εκδόςεισ Linux που δεν υποςτθρίηουν MMU. Το ςυνολικό throughput του Microblaze είναι ςθμαντικά χαμθλότερο ςε ςχζςθ με τθσ hard core προςεγγίςεισ όπωσ ο PowerPC ςτο Virtex Χαρακτηριςτικϊ MicroBlaze Ο MicroBlaze είναι υψθλά παραμετροποιιςιμοσ, επιτρζποντασ να επιλζγουμε τα ακριβι χαρακτθριςτικά που απαιτοφνται από το κάκε ςχζδιο [23]. Τα ςτάνταρ χαρακτθριςτικά είναι: Τριάντα δφο 32-bit γενικοφ ςκοποφ registers 32-bit instruction word με τρία operands και δφο addressing mode 32-bit address bus Single issue pipeline Ρροςκζτωσ αυτϊν των τυπικϊν χαρακτθριςτικϊν, ο MicroBlaze είναι παραμετροποιιςιμοσ, επιτρζποντασ να κζτουν ςε λειτουργία επιπρόςκετα χαρακτθριςτικά. Λόγο του γεγονότοσ ότι είναι soft core, δεν υπάρχουν μοντζλα (πχ 440) αλλά εκδόςεισ του μικροεπεξεργαςτι. Ραλιζσ εκδόςεισ υποςτθρίηουν ζνα υποςφνολο των πρόςκετων δυνατοτιτων. Μόνο θ τελευταία ζκδοςθ του Microblaze (v7.30) υποςτθρίηει όλεσ τισ επιλογζσ. Αυτι είναι και θ ζκδοςθ που χρθςιμοποιοφμε ςτθν παροφςα διπλωματικι, ςτθν 19

36 ζκδοςθ 12.2 τθσ πλατφόρμασ προγραμμάτων τθσ Xilinx, ενϊ τϊρα ζχει βγει θ ζκδοςθ 8 του MicroBlaze (Δεκζμβριοσ 2010). Η Xilinx προτείνει όλα τα καινοφργια ςχζδια να χρθςιμοποιοφν τθν τελευταία ζκδοςθ του MicroBlaze. Ασ δοφμε ςτθ ςυνζχεια τισ επιλογζσ ςε πρόςκετεσ δυνατότθτεσ που ζχουμε: Χαρακτθριςτικά MicroBlaze v7.30: Processor pipeline depth 3/5 On-chip Peripheral Bus (OPB) data side interface no On-chip Peripheral Bus (OPB) instruction side interface no Local Memory Bus (LMB) data side interface Local Memory Bus (LMB) instruction side interface Hardware barrel shifter Hardware divider Hardware debug logic Fast Simplex Link (FSL) interfaces 0-15 Machine status set and clear instructions Instruction cache over IOPB interface no Data cache over DOPB interface Instruction cache over Cache Link (IXCL) interface Data cache over Cache Link (DXCL) interface 4 or 8-word cache line Hardware exception support Pattern compare instructions Floating point unit (FPU) Disable hardware multiplier1 Hardware debug readable ESR and EAR Processor Version Register (PVR) Area or speed optimized Hardware multiplier 64-bit result LUT cache memory Processor Local Bus (PLB) data side interface Processor Local Bus (PLB) instruction side interface Floating point conversion and square root instructions Memory Management Unit (MMU) Extended Fast Simplex Link (FSL) instructions Use Xilinx Cache Link for All I-Cache Memory Accesses Use Xilinx Cache Link for All D-Cache Memory Accesses Use Write-back Caching Policy for D-Cache Cache Link (DXCL) protocol for D-Cache Cache Link (IXCL) protocol for I-Cache Branch Target Cache (BTC) Streams for I-Cache 20

37 Victim handling for I-Cache Victim handling for D-Cache Οργϊνωςη του MicroBlaze Ο MicroBlaze είναι ζνα soft μικροεπεξεργαςτισ βαςιςμζνοσ ςτθν RISC αρχιτεκτονικι, βελτιςτοποιθμζνοσ για υλοποίθςθ ςε FPGAs τθσ Xilinx. Στο ςχιμα που ακολουκεί παρουςιάηεται το λειτουργικό block διάγραμμα του MicroBlaze: Εικόνα 1.3 MicroBlaze Core Block Diagram 1.6 Οργϊνωςη διπλωματικόσ Στθν παροφςα διπλωματικι γίνεται ανάπτυξθ ενςωματωμζνου ςυςτιματοσ για χαρακτθριςμό τθλεπικοινωνιακϊν διατάξεων. Ειδικότερα μελετάται ο ζλεγχοσ εξειδικευμζνθσ ενςωματωμζνθσ τθλεπικοινωνιακισ διάταξθσ, θ αυτοματοποίθςθ τθσ ςυλλογισ δεδομζνων ενδιαφζροντοσ κατά τθ λειτουργία τθσ τθλεπικοινωνιακισ διάταξθσ, κακϊσ και ο τρόποσ επικοινωνίασ με το χριςτθ αναπτυξιακϊν ςυςτθμάτων που βαςίηονται ςε FPGA και χρθςιμοποιοφνται για τθν καταςκευι προτφπων τθλεπικοινωνιακϊν διατάξεων. Συγκεκριμζνα μελετϊνται διαφορετικζσ τεχνικζσ ειςαγωγισ και εξαγωγισ δεδομζνων από τα FPGAs και αποκικευςισ τουσ ςε ςφςτθμα host. Η παροφςα διπλωματικι οργανϊνεται με τζτοιο τρόπο που να μθν υπάρχουν λογικά κενά κατά τθν ανάγνωςθ και να γίνεται μια προοδευτικι εξζλιξθ. 21

38 Στο πρϊτο κεφάλαιο γίνεται αρχικά θ ανάλυςθ του τίτλου και του περιεχομζνου τθσ διπλωματικισ. Στθ ςυνζχεια αναφζρονται τα FPGAs κακϊσ και οι εφαρμογζσ που αυτά ζχουν. Ακολοφκωσ, αναφζρονται οι ζννοιεσ των ενςωματωμζνων ςυςτθμάτων, τα χαρακτθριςτικά τουσ και οι αρχιτεκτονικζσ λογιςμικοφ. Ζπειτα γίνεται αναφορά ςτουσ επεξεργαςτζσ hard και soft και ςτα χαρακτθριςτικά που ζχουν. Στο δεφτερο κεφάλαιο αναλφεται το ςφςτθμα και το περιβάλλον εργαςίασ. Αναφζρονται τα προγράμματα με τα οποία γίνεται θ ανάπτυξθ του υλικοφ ωσ αυτόνομθ μονάδα αλλά και των ενςωματωμζνων ςυςτθμάτων. Η γνωριμία με τα προγράμματα και τισ δυνατότθτεσ που ζχουν κρίνεται απαραίτθτθ γιατί ςε μεγάλο βακμό κακορίηουν τθ ςυνολικι ςχεδίαςθ και τισ προοπτικζσ που υπάρχουν. Στθ ςυνζχεια γίνεται μια ςφντομθ περιγραφι του υπάρχον ςυςτιματοσ (υποςυςτιματοσ). Στθ τελευταία ενότθτα γίνεται αναφορά ςτισ υπάρχουςεσ λφςεισ που προτείνονται ωσ μζςο επικοινωνία και ςτα μειονεκτιματα που αυτζσ ζχουν. Ζτςι αναφζρονται οι ανάγκεσ που οδιγθςαν ςτθν ανάπτυξθ τθσ παροφςασ διπλωματικισ. Στο τρίτο κεφάλαιο παρουςιάηονται τα ενςωματωμζνα ςυςτιματα κακϊσ και τα βαςικά ςτοιχεία και οι λειτουργίεσ ενόσ αναπτυξιακοφ board. Αρχικά παρουςιάηονται τα αναπτυξιακά boards και οι δυνατότθτεσ που ζχουν ωσ προσ τθν ανάπτυξθ υλικοφ. Στθ ςυνζχεια παρουςιάηονται τα κανάλια επικοινωνίασ των ενςωματωμζνων ςυςτθμάτων που μποροφν να αναπτυχκοφν ςτα FPGAs τθσ Xilinx. Ζπειτα παρουςιάηονται οι μονάδεσ μνθμϊν που υπάρχουν κακϊσ και ο τρόποσ επικοινωνίασ με τον ενςωματωμζνο επεξεργαςτι. Στθν τελευταία ενότθτα αναφζρονται τα βαςικά περιφερειακά που υπάρχουν ςε ζνα αναπτυξιακό board. Στο τζταρτο κεφάλαιο αρχικά παρουςιάηονται οι προδιαγραφζσ ςυςτιματοσ, οι ςτόχοι και ο τρόποσ μοντελοποίθςθσ του τθλεπικοινωνιακοφ ςυςτιματοσ. Στθ ςυνζχεια παρουςιάηεται θ βαςικι αρχιτεκτονικι κακϊσ και ο τρόποσ ειςαγωγισ του υλικοφ χριςτθ ωσ Custom IP Core. Στθν τελευταία ενότθτα γίνεται αναφορά ςτθν ανάπτυξθ λογιςμικοφ, ςτον τρόπο με τον οποίο γίνεται θ εικονικι διευκυνςιοδότθςθ κακϊσ και ςτθ διαδικαςία χρθςιμοποίθςθ και ανάπτυξθσ οδθγϊν (drivers) υλικοφ. Στο πζμπτο κεφάλαιο γίνεται διερεφνθςθ και αξιολόγθςθ λφςεων. Με βάςθ όςα παρουςιάςτθκαν μζχρι ςτιγμισ, προτείνονται οι τρόποι υλοποίθςθσ και αξιολογοφνται. Αυτό το κεφάλαιο αποτελεί μζροσ τθσ εςωτερικισ διερεφνθςθσ που ζγινε. Αρχικά παρουςιάηεται ο ςειριακόσ τρόποσ επικοινωνίασ. Στθ ςυνζχεια παρουςιάηεται θ CompactFlash ωσ το κφριο αποκθκευτικό μζςο. Ακολοφκωσ, παρουςιάηεται θ μνιμθ DDR2 ωσ το κφριο αποκθκευτικό μζςο. Στθν τελευταία ενότθτα γίνονται οι ςυγκρίςεισ με βάςθ πειραματικζσ μετριςεισ και αξιολογοφνται οι προςεγγίςεισ. Στο ζκτο κεφάλαιο παρουςιάηεται ο τρόποσ υλοποίθςθσ τθσ αρχιτεκτονικισ που επιλζχκθκε. Αρχικά αναφζρεται ο τρόποσ ςυνεργαςίασ του custom IP core με τον επεξεργαςτι. Στθ ςυνζχεια γίνεται αναφορά ςτθν DDR2 και ςτο εικονικό ςφςτθμα αρχείων. Στθ ςυνζχεια παρουςιάηεται το Ethernet και τα πρωτόκολλα δικτφου. Ακολουκεί θ διαδικαςία ανάπτυξθσ ςυςτθμάτων βαςιςμζνα ςε διακοπζσ (interrupts). Στθ ςυνζχεια αναλφεται ο web server και μζςα από αυτό παρουςιάηεται θ διεπαφι χριςτθ. Στθ ςυνζχεια 22

39 γίνεται αναφορά ςτθ φόρμα ειςαγωγισ παραμζτρων και ςτον τρόπο δθμιουργίασ τθσ λίςτασ αρχείων. Στθν τελευταία ενότθτα αναφζρονται βελτιςτοποιιςεισ που ζγιναν. Στο ζβδομο κεφάλαιο παρουςιάηεται ο τρόποσ λειτουργίασ τα αποτελζςματα και οι μελλοντικζσ προεκτάςεισ. Αρχικά παρουςιάηεται ο τρόποσ λειτουργίασ. Στθ ςυνζχεια αναλφεται το διάγραμμα ροισ των ςυναρτιςεων. Ακολουκοφν οι τρόποι μζτρθςθσ τθσ απόδοςθσ και τα αποτελζςματα. Στθ ςυνζχεια παρουςιάηεται ο τρόποσ μζτρθςθσ τθσ αξιοπιςτίασ ςυςτιματοσ και ακολουκοφν τα ςυμπεράςματα. Στθν τελευταία ενότθτα παρουςιάηονται κάποιεσ από τισ μελλοντικζσ επεκτάςεισ. 1.7 Περιληπτικό ςυνειςφορϊ Αυτι θ διπλωματικι αποτελείται από πολλά διαφορετικά πεδία εφαρμογϊν. Το κάκε ζνα από αυτά μποροφν να αναπτυχκοφν και να αποτελοφν μια αυτόνομθ εργαςία. Σε αυτι τθν ενότθτα παρακζτονται τα διάφορα πεδία τα οποία ςυνειςζφεραν ςτθν παροφςα διπλωματικι. Αρχικι γνωριμία και εξοικείωςθ με τθν πλατφόρμα προγραμμάτων Ζρευνα για υπάρχουςεσ λφςεισ, προςεγγίςεισ και προτάςεισ Διερεφνθςθ αναπτυξιακϊν boards Ανάλυςθ περιφερειακϊν Ανάλυςθ καναλιϊν επικοινωνίασ Διερεφνθςθ μνθμϊν αναπτυξιακϊν boards Αρχιτεκτονικι υπολογιςτικϊν ςυςτθμάτων Αρχιτεκτονικι επεξεργαςτϊν Ανάπτυξθ ςτοιχειωδϊν προγραμμάτων για εξοικείωςθ Διερεφνθςθ εξελιγμζνων δυνατοτιτων των προγραμμάτων ανάπτυξθσ Σειριακι επικοινωνία Εικονικό ςφςτθμα αρχείων Επικοινωνία ενςωματωμζνου επεξεργαςτι με CompactFlash Διερεφνθςθ μεκόδων επικοινωνίασ με περιφερειακά, LEDs, switches, button Ανάλυςθ βαςικϊν βιβλιοκθκϊν και τρόποσ επικοινωνίασ ςυναρτιςεων Σφνδεςθ περιφερειακοφ με interrupt controller Σφνδεςθ και ζλεγχοσ interrupt controller μζςω του ενςωματωμζνου επεξεργαςτι Συγγραφι κϊδικα με τζτοιο τρόπο που να ανταποκρίνεται και να είναι δυνατι θ παραγωγι του ELF αρχείου ανεξάρτθτα από τθν επεξεργαςτικι μονάδα θ οποία διατίκεται Σφνδεςθ πολλϊν περιφερειακϊν ςτον interrupt controller και εξυπθρζτθςθ με βάςθ προτεραιότθτεσ Μεκοδολογία ειςαγωγισ υλικοφ ωσ περιφερειακό Διερεφνθςθ και αξιολόγθςθ διαφορετικϊν μεκόδων ειςαγωγισ υλικοφ Ανάλυςθ υπάρχον ςυςτιματοσ 23

40 Ανάπτυξθ μοντζλου υπάρχοντοσ ςυςτιματοσ Σφνδεςθ μικροεπεξεργαςτι με PHY ελεγκτι δικτφου Ανάλυςθ και αξιολόγθςθ πρωτοκόλλων επιπζδων OSI Επιλογι κατάλλθλων πρωτοκόλλων ςτοίβασ δικτφου Μεκοδολογία χριςθσ lwip Ανάπτυξθ echo server Ανάπτυξθ echo client Ανάπτυξθ TCP over IP Ανάλυςθ και ανάπτυξθ HTTP πρωτοκόλλου Ανάπτυξθ ςυςτιματοσ αρχείων ιςτοςελίδασ Ανάπτυξθ ελζγχου JavaScript ιςτοςελίδων Μεκοδολογία επικοινωνίασ Ανάπτυξθ λίςτασ αρχείων με διπλά δυναμικό τρόπο Μεκοδολογία μζτρθςθσ επίδοςθσ ςυςτιματοσ Μεκοδολογία μζτρθςθσ χρόνου εξυπθρζτθςθσ διεργαςιϊν-profiling Ανάπτυξθ πειραματικισ διάταξθσ για επιβεβαίωςθ αξιοπιςτίασ Αξιολόγθςθ χριςθσ μνιμθσ Μεκοδολογία Βελτιςτοποίθςθσ κϊδικα 24

41 2 Ανϊλυςη ςυςτόματοσ Περιβϊλλον εργαςύασ 2.1 Ειςαγωγό Στο προθγοφμενο κεφάλαιο κάναμε μια ειςαγωγι ςτα ενςωματωμζνα ςυςτιματα, ςτα FPGA και παρουςιάςαμε επιγραμματικά τα χαρακτθριςτικά των βαςικϊν επεξεργαςτικϊν μονάδων ενόσ ενςωματωμζνου ςυςτιματοσ. Στο κεφάλαιο αυτό παρουςιάηεται ο τρόποσ με τον οποίο ςυνκζτονται τα ςθμερινά ςυςτιματα. Στθ ςυνζχεια προχωράμε ζνα βιμα πιο πζρα και παρουςιάηεται το περιβάλλον ςτο οποίο μπορεί κάποιοσ να υλοποιιςει ζνα ολόκλθρο ενςωματωμζνο ςφςτθμα και το περιβάλλον ςτο οποίο μπορεί να αναπτφξει τισ εφαρμογζσ του. Στθ ςυνζχεια παρουςιάηεται το ςφςτθμα πάνω ςτο οποίο βαςίςτθκε θ ςχεδίαςθ. Στθν τελευταία ενότθτα παρουςιάηεται ο τρόποσ με τον οποίο γίνεται εξαγωγι των δεδομζνων από ζνα ςφςτθμα ςτισ θμζρεσ μασ, και τα προβλιματα που καλοφμαςτε να αντιμετωπίςουμε. Τα ςυςτιματα και οι πλατφόρμεσ εργαλείων ςχεδιαςμοφ ςτα οποία βαςίηεται θ διπλωματικι είναι οι τελευταίεσ εκδόςεισ (Δεκζμβριοσ 2010) και ζγινε ιδιαίτερθ προςπάκεια να είναι όςο το δυνατόν πιο επίκαιρθ και βαςιςμζνθ ςτισ τελευταίεσ εξελίξεισ τθσ τεχνολογίασ. Η αρχικι ζκδοςθ ςτθν οποία ζγινε μια πρϊτθ γνωριμία με τα προγράμματα είναι θ 11.5 (Μάιοσ 2010) πλατφόρμα τθσ Xilinx. Στθ ςυνζχεια περάςαμε ςτθ 12.1 (Σεπτζμβριοσ 2010) και μετά ςτθν τελικι ζκδοςθ τθν οποίο χρθςιμοποιιςαμε και θ οποία παρουςιάηεται εδϊ, τθ 12.2 (Οκτϊβριοσ 2010). Η τελευταία ζκδοςθ θ οποία υπάρχει είναι θ 12.3 και πρόςφατα θ 12.4 (Δεκζμβριοσ 2010). Ζγιναν κάποιεσ δοκιμζσ και ςε αυτζσ τισ εκδόςεισ αλλά δεν κρίκθκε αναγκαίο να μεταβιβάςουμε όλεσ τισ εργαςίεσ. 2.2 Xilinx ISE Project Navigator Αρχικά γίνεται μια ειςαγωγι ςτον τρόπο με τον οποίο ςτινεται ζνα stand alone ςφςτθμα, το οποίο δεν περιζχει λογιςμικό παρά μόνο υλικό. Το ανϊτερο κομμάτι υλικοφ εδϊ δεν μπορεί να είναι πολλά ανεξάρτθτα κομμάτια αλλά μόνο ζνα. Υπάρχει δθλαδι ζνα top entity κάτω από το οποίο υπάρχουν τα υπόλοιπα και το οποίο κακορίηει τον τρόπο με τον οποίο ςυνδζονται όλα μεταξφ του κακϊσ και τισ κφριεσ ειςόδουσ/εξόδουσ που ζχει το υλικό. Πλα τα κομμάτια του υλικοφ με βάςθ αυτι τθ διαδικαςία, είναι προκακοριςμζνα και οι ςυνδζςεισ μεταξφ τουσ είναι ςτάνταρ. Το τελικό προϊόν που προκφπτει από αυτι τθ διαδικαςία είναι ζνα κομμάτι υλικοφ το οποίο μπορεί να επιτελεί ςυγκεκριμζνο ςκοπό και δεν μπορεί να αλλάξει μετά το place and route. Υπάρχει ζνα ι περιςςότερα ρολόγια ςτο ςφςτθμα τα οποία κακορίηουν και τθ ςυχνότθτα λειτουργίασ του. 25

42 Το Xilinx ISE είναι ζνα εργαλείο το οποίο αναπτφχκθκε από τθ Xilinx για ςφνκεςθ και ανάλυςθ των ςχεδίων HDL (hardware description language), το οποίο επιτρζπει ςτουσ ςχεδιαςτζσ να ςυνκζςουν τα ςχζδιά τουσ, να κάνουν χρονικι ανάλυςθ, να εξετάςουν το διάγραμμα RTL (register transfer level), να κάνουν εξομοίωςθ για διαφορετικζσ μεταβλθτζσ και τζλοσ να προγραμματίηει τθ ςυςκευι FPGA μζςω του programmer [42] Διϊγραμμα ροόσ ςχεδύαςησ Το διάγραμμα ροισ ςχεδιαςμοφ ακολουκεί [52] Εικόνα 2.1 Design Flow Diagram 26

43 Ασ δοφμε τα βαςικά βιματα τθσ διαδικαςίασ ςφνκεςθσ κϊδικα. Αρχικά ειςάγουμε το design ςτο εργαλείο ςχεδιαςμοφ. Στισ περιςςότερεσ των περιπτϊςεων το εργαλείο ςχεδιαςμοφ είναι ςε κζςει να αναγνωρίςει ποίο είναι το ςτοιχείο με τθν υψθλότερθ ιεραρχία. Αν υπάρχουν πολλά top entities ςτο υψθλότερο επίπεδο τότε αναγκαςτικά επιλζγουμε ζνα. Αν κάποια από το τοπ entity component δεν κάνουν χριςθ κάπου component τότε αυτό αγνοείται και δεν ςυμμετζχει ςτθν τελικι ςχεδίαςθ. Στθ ςυνζχεια γίνεται λογικι εξομοίωςθ του ςχεδίου μασ. Σε αυτό το βιμα ελζγχουμε αν το κυκλωματικό μασ κάνει όντωσ αυτό που ζχουμε ορίςει ςε επίπεδο λειτουργίασ. Και εδϊ, ζχουν αναπτυχκεί διάφορεσ μζκοδοι ςχετικά με τον ζλεγχο ορκισ λειτουργίασ και ςτατιςτικζσ μελζτεσ ςχετικά με το πόςεσ εξομοιϊςεισ είναι αρκετζσ για να επιβεβαιϊςει κανείσ τθν ορκι λειτουργία. Υπάρχουν και διάφορα μοντζλα ςφαλμάτων (πχ stack-at) που μειϊνουν αρκετά το πεδίο τιμϊν για να επιβεβαιϊςει κανείσ τθ fault-free λειτουργία τόςο ςε επίπεδο testing όςο και verification κατά τθν διάρκεια λειτουργίασ.. Στο επόμενο βιμα κζτουμε περιοριςμοφσ ςτο κυκλωματικό μασ. Αυτοί οι περιοριςμοί μπορεί να είναι περιοριςμοί χρονιςμοφ. Θζτουμε δθλαδι ζνα ςτόχο ςτο κφκλωμα όςο αφορά ςτθ ςυχνότθτα ρολογιοφ και το πρόγραμμα βελτιςτοποίθςθσ προςπακεί να πετφχει αυτόν το ςτόχο. Σε αυτό το βιμα κζτουμε και τισ ειςόδουσ εξόδουσ του κυκλϊματοσ και άλλουσ περιοριςμοφσ που αφοροφν ςτουσ κανόνεσ βελτιςτοποίθςθσ και όχι μόνο. Στο επόμενο βιμα πραγματοποιείται θ διαδικαςία ςφνκεςθσ και βελτιςτοποίθςθσ του design. Στθ ςυνζχεια ακολουκεί θ διαδικαςία εκτίμθςθσ του μεγζκουσ και τθσ απόδοςθσ του ςχεδίου. Αν από τθν εκτίμθςθ δεν προκφψουν τα αποτελζςματα που αναμζνονται, τότε επιςτρζφουμε και ακολουκοφμε τθ διαδικαςία από τθν αρχι αφοφ πρϊτα ζχουν γίνει οι βελτιςτοποιιςεισ που απαιτοφνται. Στθ ςυνζχεια γίνεται το place and route. Σε αυτό το βιμα γίνεται ανάκεςθ των πόρων ςτο υλικό και το ςχζδιο μασ παίρνει τθ μορφι για να κατζβει όντωσ ςε υλικό. Σε αυτό το βιμα παίρνουμε δεδομζνα που αφοροφν τον χρονικι εξομοίωςθ και τθ ςτατικι ανάλυςθ χρόνου. Τα αποτελζςματα από αυτό το βιμα είναι όςο πιο κοντά ςτθν πραγματικότθτα. Σε περίπτωςθ που δεν ζχουμε τα αναμενόμενα, επαναλαμβάνουμε. Στο επόμενο βιμα παράγεται το αρχείο bitstream. Είναι ζνα αρχείο μορφισ bit. Ανεξαρτιτωσ από το μζγεκοσ του ςχεδίου, το αρχείο bit ζχει ςυγκεκριμζνο μζγεκοσ. Είναι ανάλογο των χαρακτθριςτικϊν του FPGA ςτο οποίο δουλεφουμε. Το αρχείο αυτό περιζχει μθδενικά και άςςουσ και ουςιαςτικά λζει ποιεσ ςυνδζςεισ μεταξφ των slices να υλοποιιςει. Με αυτόν τον τρόπο υλοποιεί τθ λογικι που κζλουμε να υλοποιιςει το hardware. Συμφϊνα με τθ Xilinx δεν υπάρχουν μζςα ςτο FPGA όλεσ οι δυνατζσ ςυνδζςεισ, αλλά μόνο αυτζσ που πιςτεφεται ότι επαρκοφν για να αξιοποιιςουν όλουσ τουσ πόρουσ του FPGA. Αυτό βγικε φςτερα από ςτατιςτικι και πικανοτικι ζρευνα. Η επιλογι κεωρείται αναγκαςτικι και εφλογθ αν ςκεφτεί κανείσ ότι όλεσ οι πικανζσ ςυνδζςεισ είναι ανάλογο του παραγοντικοφ του αρικμοφ των slices που ζχει το FPGA ςτθν περίπτωςθ μία ειςόδου εξόδου, κάτι που είναι κατά πολφ απλοποιθμζνο από τθν πραγματικότθτα. Στο επόμενο βιμα, κατεβάηουμε το αρχείο ςτο FPGA με ςκοπό να γίνει debugging ςτο ίδιο το FPGA. Σε αυτό το βιμα παίρνουμε πραγματικά αποτελζςματα από το ίδιο το FPGA ςε 27

44 πραγματικζσ ςυνκικεσ λειτουργίασ και μποροφμε να ποφμε με ςιγουριά αν δουλεφει τελικά ι όχι. Το πωσ εξάγουμε τα δεδομζνα αναλφεται ςε πιο κάτω ενότθτα. Στο τελικό βιμα τθσ ανάπτυξθσ μποροφμε να επιλζξουμε τον τρόπο με τον οποίο το bit αρχείο φορτϊνεται ςτο FPGA. Μποροφμε να επιλζξουμε να το κατεβάηουμε εμείσ κάκε φορά από τον υπολογιςτι. Επιπλζον, ζχουμε τθ δυνατότθτα να το γράψουμε ςε μία CompactFlash και να φορτϊνεται από εκεί αυτόματα ςε κάκε startup τθσ ςυςκευισ. Μασ δίνεται επίςθσ θ δυνατότθτα να το αποκθκεφςουμε ςτθν PROM και να διαβάηεται από εκεί [52] Δυνατότητεσ προγραμμϊτων ςύνθεςησ Αρχικόσ ςτόχοσ τζτοιων εργαλείων ιταν να μεταφράηουν τθν HDL γλϊςςα ςε φυςικζσ ςυνδζςεισ εντόσ του ολοκλθρωμζνου. Κάτι τζτοιο μπορεί να φαίνεται μια τετριμμζνθ διαδικαςία, απαιτεί όμωσ μεγάλθ υπολογιςτικι ιςχφ και πολλοφσ αλγορίκμουσ βελτιςτοποίθςθσ. Η VHDL μπορεί να γράφεται με τρόπο τζτοιο ϊςτε να περιγράφει επαρκϊσ τισ ςυνδζςεισ που πρζπει να γίνουν (structural). Μπορεί όμωσ να γραφτεί και με τζτοιο τρόπο που να δθλϊνει τον τρόπο με τον οποίο λειτουργεί ζνα κομμάτι υλικοφ και να αφινει τθν επιλογι του τρόπου υλοποίθςθσ ςτο πρόγραμμα (behavioral). Μια πολφ ςθμαντικι λειτουργία που καλοφνται να επιτελζςουν αυτά τα προγράμματα είναι ο τρόποσ και το μζροσ ςτο οποίο κα τοποκετθκοφν τα ςτοιχεία. Ρολλοί είναι οι παράγοντεσ που επθρεάηουν μια τζτοια απόφαςθ. Ρρϊτα απ όλα το fan-out του ρολογιοφ ι των ρολογιϊν πρζπει να είναι ςε κζςθ να τροφοδοτεί όλα τα ςτοιχεία και να φτάνει ςχετικά ταυτόχρονα ςε όλα. Επίςθσ θ ακμι να ζχει τθν επικυμθτι μορφι ςε όλο το χϊρο του κυκλϊματοσ. Η κατανάλωςθ ενζργειασ κα πρζπει να είναι όςο το δυνατό ομοιόμορφθ και να μθν υπάρχουν hot spots. Κάτι τζτοιο κα οδθγοφςε πρϊτα απ όλα ςτθ μθ ορκι λειτουργία κάποιων κομματιϊν υλικοφ και μπορεί να προκαλοφςε και μόνιμεσ ηθμιζσ ςτο ολοκλθρωμζνο. Το ολοκλθρωμζνο που φτιάχνουμε, υπάρχει για να εκτελεί μία ι περιςςότερεσ λειτουργίεσ. Η ταχφτθτα ι άλλοι παράγοντεσ όπωσ θ κατανάλωςθ ι το throughput ζχουν ιδιαίτερθ ςθμαςία. Θζλουμε ο χρόνοσ που καταναλϊνεται από το κφκλωμα να είναι όςο το δυνατό για υπολογιςμό πράξεων και όχι για δρομολόγθςθ δεδομζνων. Αν τα διάφορα ςτοιχεία του κυκλϊματοσ ιταν μακριά το ζνα από το άλλο κα καταναλϊνονταν πολφτιμοσ χρόνοσ για μεταφορά και όχι για υπολογιςμό δεδομζνων. Από τθν άλλθ ζνα κφκλωμα με όλα τα ςτοιχεία πολφ κοντά μεταξφ τουσ κα οδθγοφςε ςε hot spots. Επίςθσ τα καλϊδια που είναι διακζςιμα για να υλοποιοφν τισ διαςυνδζςεισ ςτθν περίπτωςθ ενόσ πυκνοφ κυκλϊματοσ μπορεί να μθν φτάνουν για να γίνουν οι απαραίτθτεσ ςυνδζςεισ. Το πρόγραμμα επιπροςκζτωσ πρζπει να είναι ςε κζςθ να κάνει χρονικι, χωρικι, ενεργειακι ανάλυςθ και ενδεχομζνωσ και άλλου είδουσ αναλφςεισ κατά τθ διάρκεια που γίνεται θ ςφνκεςθ. Ρρζπει να είναι ςε κζςθ να εντοπίηει το κρίςιμο μονοπάτι ι τα κρίςιμα μονοπάτια 28

45 και να κάνει μια εκτίμθςθ ςε ςχζςθ με τθ μζγιςτθ ςυχνότθτα λειτουργίασ που να είναι όςο το δυνατό πιο κοντά ςτθν πραγματικι ςυχνότθτα καλισ λειτουργίασ. Επιπλζον, καλείται να πάρει αποφάςεισ ςχετικά με τθ βελτιςτοποίθςθ τθσ διαδικαςίασ ςφνκεςθσ. Ρρζπει να μπορεί να παράγει ζνα κφκλωμα με βάςθ τισ προδιαγραφζσ που του ζχουμε δϊςει. Αν κζλουμε μζγιςτθ ταχφτθτα κα απλϊςει το κφκλωμα για να είναι όςο το δυνατό πιο αραιό και να μποροφν να επικοινωνοφν τα διάφορα ςτοιχεία με γριγορο τρόπο. Στθν περίπτωςθ που κζλουμε ελάχιςτθ επιφάνεια, γίνεται προςπάκεια να μειϊςει τον αρικμό των χρθςιμοποιοφμενων ςτοιχείων όςο το δυνατόν περιςςότερο. Ρρζπει να αναγνωρίηει τα κομμάτια που επιτελοφν τθν ίδια λειτουργία, και ςτθν περίπτωςθ που αυτά δεν χρθςιμοποιοφνται ταυτόχρονα να απομακρφνεται το ζνα για να κερδίηουμε επιφάνεια. Ζχουν αναπτυχκεί διάφορεσ μεκοδολογίεσ για κάκε είδουσ βελτιςτοποιιςεισ που μποροφν να γίνουν. Αυτοί βζβαια οι αλγόρικμοι ανικουν ςτθν εκάςτοτε εταιρία που εξειδικεφεται ςε εργαλεία ςφνκεςθσ. Τα τελευταία χρόνια υπάρχει μια τάςθ να γίνεται όςο το δυνατόν επαναχρθςιμοποίθςθ κομματιϊν hardware. Αυτό το hardware μπορεί να είναι είτε ελεφκερο και να μπορεί ο κακζνασ να το χρθςιμοποιεί είτε να είναι κάτω από άδειεσ και να χρειάηεται ειδικι άδεια αγοράσ και χριςθσ του. Επίςθσ οι ανάγκεσ τθσ τεχνολογίασ και των εφαρμογϊν οδθγοφν τα FPGA, να ζχουν κάποια κομμάτια ζτοιμα και προεγκατεςτθμζνα εντόσ του chip. Η αρχικι ιδζα ιταν να υπάρχει λογικι θ οποία να μπορεί να αλλάηει τον τρόπο διαςφνδεςθσ και να υπάρχει και μνιμθ θ οποία να μπορεί να διαβάηει κάποιοσ. Ρλζον όμωσ ςτα FPGA ςυναντάμε ζτοιμα κάποια κομμάτια τα οποία είναι βελτιςτοποιθμζνα. Ζχουμε για παράδειγμα πολλζσ μονάδεσ DSP48. Ζχουμε πολλϊν ειδϊν μνιμεσ. Ζχουμε κυκλϊματα αναλογικά. Πλα αυτά μποροφμε και πρζπει να τα χρθςιμοποιοφμε ανάλογα με τισ ανάγκεσ τθσ εφαρμογισ. Υπάρχουν μζςα ςτα εργαλεία ςχεδιαςμοφ ζτοιμα templates που μποροφμε να βροφμε και να δοφμε ποια κομμάτια υπάρχουν και πωσ αυτά μποροφν να αξιοποιθκοφν. Κάτι τζτοιο οδθγεί ςτθ ραγδαία ανάπτυξθ τθσ τεχνολογίασ και ςτθ μείωςθ του χρόνου που απαιτεί ζνα προϊόν να βγει ςτθν αγορά. Επίςθσ μαηί με αυτό αλλάηει και το επίπεδο. Ραλιά είχαμε λυχνίεσ που λειτουργοφςαν ωσ τρανηίςτορ. Μετά περάςαμε ςτθν εποχι που μποροφςε κάποιοσ να πάρει τα τρανηίςτορ και να κάνει πφλεσ. Ζπειτα οι πφλεσ ιταν ζτοιμεσ και μποροφςε κάποιοσ να φτιάξει ςφνκετε λογικζσ ςυναρτιςεισ. Κάποιεσ από αυτζσ τυποποιικθκαν και πλζον υπάρχουν και δίνονται ζτοιμεσ για χριςθ. Οδθγοφμε δθλαδι ςε ζνα ανϊτερο επίπεδο ολοκλιρωςθσ. Το μζλλον κα είναι να υπάρχουν ζτοιμα ςυςτιματα και να μποροφμε απλά να ςυνδζουμε λειτουργιζσ που αυτά επιτελοφν. Αυτό ακριβϊσ γίνεται και με τα ενςωματωμζνα. Υπάρχουν ζτοιμα υποςυςτιματα τα οποία διατίκενται ωσ black boxes δθλαδι δθλϊνεται θ διεπαφι τουσ και θ λειτουργία του, όχι όμωσ και οι λεπτομζρειεσ τθσ υλοποίθςισ τουσ. Ρολλά τζτοια ςυςτιματα όμωσ είναι δφςκολο να ςυνεργάηονται μεταξφ τουσ. Χρειάηεται ζνασ κεντρικόσ ςυντονιςτισ που να είναι ςε ανϊτερο επίπεδο ιεραρχίασ και να μπορεί να ελζγχει αλλά και να αλλάηει τον τρόπο με τον οποίο αυτά δουλεφουν. Αυτό τον ρόλο παίηει θ κεντρικι μονάδα επεξεργαςίασ που υπάρχει μζςα ςε ζνα ενςωματωμζνο ςφςτθμα [42] [52] [53]. 29

46 2.3 Embedded Development Kit (EDK) Ειςαγωγό Το EDK είναι μια μεγάλθ ςουίτα εφαρμογϊν τθσ Xilinx. Εδϊ μπορεί κάποιοσ να φτιάξει ζνα ολοκλθρωμζνο ενςωματωμζνο ςφςτθμα τόςο από τθν πλευρά του hardware όςο και από τθν πλευρά του λογιςμικοφ. Αυτι θ ςουίτα εφαρμογϊν περιλαμβάνει πολλά από τα εργαλεία και τουσ αλγορίκμουσ που αναλφκθκαν παραπάνω. Αυτό οφείλεται ςτο γεγονόσ ότι για να κάνει τθ ςφνκεςθ του hardware χρθςιμοποιεί τθν ίδια διαδικαςία με πάνω. Οι δυνατότθτεσ όμωσ και οι επιλογζσ είναι περιςςότερεσ και περιςςότερεσ ςτοχευόμενεσ ςτθ ςχεδίαςθ ενςωματωμζνων ςυςτθμάτων. Ουςιαςτικά όλα τα παραπάνω είναι απαραίτθτα και χρθςιμοποιοφνται αλλά αποτελοφν ζνα μόνο μζροσ των ενςωματωμζνων ςυςτθμάτων. Οι ςφγχρονεσ τάςεισ είναι τζτοιεσ που κάνουν το υλικό από μόνο του ςτισ περιςςότερεσ περιπτϊςεισ μθ λειτουργικό. Ασ φανταςτοφμε ζνα κινθτό για παράδειγμα χωρίσ τθ δυνατότθτα να εγκαταςτιςει κάποιοσ εφαρμογζσ και χωρίσ τθ δυνατότθτα να γίνεται firmware update. Η τεχνολογία κα ιταν πολφ αναλϊςιμθ και ο χρόνοσ ηωισ του κα ιταν τόςο μικρόσ που ςε καμία περίπτωςθ δεν κα δικαιολογοφςε τθν αξία τθσ ςυςκευισ. Επίςθσ ζνα μικρό bug ςε κάποιο κφκλωμα λειτουργίασ του κα κατζςτρεφε όλθ τθν παρτίδα ςυςκευϊν και κα ζπλθττε ίςωσ ανεπανόρκωτα το όνομα τθσ εταιρίασ. Επίςθσ θ τεχνολογία των επεξεργαςτϊν προχωράει με πολφ γοργά βιματα. Εφαρμογζσ που μποροφςαν να τρζχουν μόνο ςε υλικό, ζχει πλζον καταςτεί δυνατό να τρζχουν ςε επεξεργαςτζσ. Επίςθσ λόγο τθσ εξζλιξθσ τθσ τεχνολογίασ ζχουν δθμιουργθκεί επεξεργαςτζσ με εξελιγμζνεσ ικανότθτεσ όςο αφορά ςτθ φορθτότθτα και ςτθν κατανάλωςθ ενζργειασ. Υπάρχουν προτάςεισ που καταναλϊνουν ελάχιςτθ ενζργεια ςε κατάςταςθ stand-by και ελάχιςτθ ςε κανονικι λειτουργία. Μποροφν επίςθσ να ελζγχουν και να ρυκμίηουν τθν ενζργεια που καταναλϊνεται από τα περιφερειακά του και από τθν ίδια τον ίδιο τον κεντρικό επεξεργαςτι ακόμα. Με πολλά μικρά και κατά κάποιο τρόπο αυτόνομα υποςυςτιματα, φτιάχνουμε ζνα ςφςτθμα. Με πολλά τζτοια ςυςτιματα μποροφμε να φτιάξουμε ζνα αυτόνομο ολοκλθρωμζνο που είτε κα δουλεφει μόνο είτε κα παρζχει μια υπθρεςία ςε ζνα μεγαλφτερο ςφςτθμα. Καταλαβαίνουμε λοιπόν ότι ο ζλεγχοσ ςε ζνα ολοκλθρωμζνο και ο ςυντονιςμόσ μεταξφ των αυτόνομων μονάδων δεν είναι εφκολθ υπόκεςθ. Ρολλζσ φορζσ επίςθσ το ολοκλθρωμζνο πρζπει να είναι ςε κζςθ να εκτελεί πολλζσ παρόμοιεσ ι και όχι διεργαςίεσ. Ζνασ τρόποσ να ενωκοφν όλα τα υποςυςτιματα μεταξφ τουσ κα ιταν να φτιάχνουμε ζνα μεγάλο FSM που κα ςυγχρόνιηε και κα ζλεγχε όλα τα υποςυςτιματα. Αυτό όμωσ κα απαιτοφςε πολφ προςπάκεια και θ επαλικευςθ ορκισ λειτουργίασ δεν κα ιταν κακόλου εφκολθ υπόκεςθ. Επίςθσ ο χρόνοσ για να βγει ςτθν αγορά κα αυξανόταν τόςο που κα καταντοφςε το προϊόν άχρθςτο. Αυτά οδθγοφν ςτθ χριςθ μιασ κεντρικισ μονάδασ επεξεργαςίασ, για το ςυντονιςμό και τον ζλεγχο των διάφορων υπομονάδων. Αυτζσ οι υπομονάδεσ μπορεί να είναι ςε ξεχωριςτά 30

47 ολοκλθρωμζνα ι και ςτο ίδιο. Στθ δεφτερθ περίπτωςθ μιλάμε για system-on-chip. Οι υπομονάδεσ ςε ζνα ςφςτθμα όμωσ είναι αρκετζσ και πολλζσ φορζσ ζχουν διαφορετικζσ ανάγκεσ και προτεραιότθτεσ όςο αφορά τθν ταχφτθτα και τον χρόνο που απαιτοφν από τθν κεντρικι μονάδα επεξεργαςίασ. Για παράδειγμα, μια μονάδα που ελζγχει τθν οκόνθ ςε ζνα κομπιουτεράκι δεν απαιτεί οφτε πολλά δεδομζνα οφτε μεγάλθ ταχφτθτα. Η μονάδα όμωσ που κάνει πολλαπλαςιαςμό μεταξφ πινάκων όμωσ απαιτεί μεγάλο όγκο δεδομζνων και γριγορθ μεταφορά. Ρολλζσ φορζσ μάλιςτα, ςτθν περίπτωςθ που δεν υπάρχει τοπικι μνιμθ και εξελιγμζνθ διαχείριςι τθσ, θ ταχφτθτα υπολογιςμοφ εξαρτάται από τθν ταχφτθτα που κάνουν τα δεδομζνα για να μεταφερκοφν. Επιπλζον, ο κεντρικόσ επεξεργαςτισ δεν γίνεται να ζχει αμζτρθτα pins πάνω ςτα οποία κα ςυνδζουμε όλεσ τισ υπομονάδεσ. Οι δφο παραπάνω περιοριςμοί οδθγοφν ςε ζνα μοντζλο με το οποίο μποροφμε να ςτιςουμε το ςφςτθμα μασ [6] [7] [8] Δύαυλοι επικοινωνύασ Στα ενςωματωμζνα ςυςτιματα υπάρχουν διαφόρων ειδϊν δίαυλοι επικοινωνίασ. Υπάρχουν κανάλια επικοινωνίασ ςτα οποία θ επικοινωνία με τον επεξεργαςτι είναι πολφ γριγορθ. Ραράδειγμα αυτϊν ςτα FPGA είναι το FLB (fast local bus). Σε αυτά ςυνδζονται ςυνικωσ ςυνεπεξεργαςτζσ που βοθκοφν τθν εκτζλεςθ διεργαςιϊν ι ακόμα και αναλαμβάνουν τθν εξολοκλιρου εκτζλεςι τουσ. Το μοντζλο αυτό ςτθρίηεται ςτουσ υπολογιςτζσ γενικοφ ςκοποφ. Στθν αρχι είχαμε το κανάλι PCI για τισ κάρτεσ γραφικϊν. Μετά εξελίχτθκαν ςε AGP. Στθν πορεία όμωσ οφτε αυτό ιταν αρκετό και μεταβικαμε ςτο PCI express. Τϊρα πλζον προχωράμε ζνα βιμα πιο πζρα και ενςωματϊνονται πλζον ςτο ίδιο chip με τον επεξεργαςτι. Αυτό παρουςιάηεται με τουσ επεξεργαςτζσ τθσ INTEL ςειρά i3, i5 και i7. Τα ενςωματωμζνα ζχουν αναπτυχκεί αρκετά πλζον που να μποροφν να υποςτθρίηουν γραφικά και ζνα γραφικό διαδραςτικό περιβάλλον. Τθ δουλειά των γραφικϊν ανελάμβανε να τθν εκτελζςει θ κεντρικι μονάδα επεξεργαςίασ ίςοσ με τθ βοικεια κάποιον άλλον υπομονάδων. Αυτό πλζον δεν είναι αρκετό και προχωράμε ζνα βιμα πιο πζρα και πλζον ζχουν ιδθ εμφανιςτεί τα ενςωματωμζνα με ςυνεπεξεργαςτι γραφικϊν 2D ακόμα και 3D. Και όλα αυτά μιλϊντασ για ςυςκευζσ που ο βαςικόσ ςκοπόσ τουσ δεν είναι τα γραφικά όπωσ πχ οι κονςόλεσ παιχνιδιϊν. Στθν περίπτωςθ αυτϊν ζχουμε ζνα αντίκετο παράδειγμα. Γίνεται ειςαγωγι ενόσ πιο γενικοφ ςκοποφ επεξεργαςτι για να μπορεί να εκτελεί και άλλεσ λειτουργίεσ και να δίνει νζεσ δυνατότθτεσ όπωσ είναι θ είςοδόσ του ςτο internet. Εκτόσ από τα γριγορα κανάλια επικοινωνίασ υπάρχουν και τα πιο γενικοφ ςκοποφ. Ραράδειγμα τζτοιου που χρθςιμοποιείται ςχεδόν αποκλειςτικά ςτα FPGA είναι το PLB (processor local bus). Ράνω ςε αυτό μπαίνουν ςχεδόν όλα τα περιφερειακά του επεξεργαςτι. Με τθ λζξθ περιφερειακά δεν εννοοφμε ο, τι βρίςκεται ζξω από το FPGA αλλά και αυτά που βρίςκονται μζςα. Ακόμα και τα δικά μασ custom IP είναι και αυτά περιφερειακά για τον επεξεργαςτι. Ράνω ςε αυτό το κανάλι μπαίνουν ςειριακζσ κφρεσ, PS2, USB, LCD οκόνεσ, Buttons, switches, LEDs και άλλα. 31

48 Υπάρχουν και τα πιο αργά κανάλια επικοινωνίασ όπωσ είναι το CAN bus. Αυτό ςυναντιζται ευρφτατα ςτθν αυτοκινθτοβιομθχανία και όχι μόνο. Σε αυτό το κανάλι πχ μποροφν και μπαίνουν κάποιοι από τουσ εγκεφάλουσ του αυτοκινιτου και κάποια άλλα περιφερειακά όπωσ τα θλεκτρικά παράκυρα, το ραδιόφωνο και άλλα. Επίςθσ οι ςφγχρονοι ςυναγερμοί ενϊνονται απευκείασ πάνω ςε αυτό το κανάλι επιτρζποντασ με αυτόν τον τρόπο τον χειριςμό και λειτουργία άλλων περιφερειακϊν όπωσ είναι το κλείςιμο των παρακφρων. Τα κανάλια επικοινωνίασ, αςχζτωσ από το επίπεδο τθσ ταχφτθτασ ζχουν κάποια πλεονεκτιματα και κάποια μειονεκτιματα. Στα μειονεκτιματα είναι ςίγουρα θ μείωςθ του αποτελεςματικοφ throughput λόγω των μθνυμάτων ελζγχου, ςτθν περίπτωςθ που γίνονται μζςω του ίδιου φυςικοφ μζςου. Στθν περίπτωςθ που αυτά γίνονται μζςω άλλου φυςικοφ μζςου τότε ςτα αρνθτικά ςυγκαταλζγεται θ φπαρξθ αυτϊν. Από τθν άλλθ όμωσ τα κανάλια επικοινωνίασ ζχουν πολλά προτεριματα. Μπορείσ να βάλεισ αν όχι απεριόριςτα, ζναν μεγάλο αρικμό από περιφερειακά. Υπάρχει ζνασ κεντρικόσ ςυντονιςτισ για το κανάλι που πολλζσ φορζσ ελαφρφνει το φόρτο εργαςίασ τθσ CPU. Χαρακτθριςτικό παράδειγμα ο DMA controller που πάνω ςτο κανάλι μπορεί να αναλάβει τθ μεταφορά δεδομζνων από το ζνα περιφερειακό ςτον άλλο χωρίσ τθ ςυνεχι παρουςία του επεξεργαςτι. Ο επεξεργαςτισ κζτει τον DMA controller και κατά τθ διάρκεια τθσ μεταφοράσ μπορεί να εκτελεί δικζσ του εςωτερικζσ διεργαςίεσ. Με τα κανάλια επικοινωνίασ τυποποιείται κατά κάποιο τρόπο θ διεπαφι περιφερειακϊν. Αυτό είναι ζνα μεγάλο πλεονζκτθμα ςτα ςυςτιματα. Δεν χρειάηεται κάποιοσ να ξζρει οφτε πϊσ δουλεφει εςωτερικά οφτε πϊσ κα το ςυνδζςει, παρά μόνο πωσ κα το χρθςιμοποιιςει. Δίνεται θ δυνατότθτα το ςφςτθμα να είναι εφκολα επεκτάςιμο και να μπορεί κάποιοσ να αλλάηει ζνα μόνο μζροσ του ςυςτιματοσ. Επίςθσ δίνεται θ δυνατότθτα, ςτθν περίπτωςθ που κάποιο εξάρτθμα είναι χαλαςμζνο να αλλάηει μόνο αυτό και να μπαίνει ςτθν ίδια υποδοχι. Τζλοσ δίνεται θ δυνατότθτα να γίνεται μερικι αναβάκμιςθ του hardware. Τα κανάλια επικοινωνίασ διευκολφνουν πάρα πολφ και τθ ςυνολικι διαδικαςία τθσ CPU. Δίνεται θ δυνατότθτα τθσ εικονικισ διευκυνςιοδότθςθσ μζςω τθσ οποίασ ο επεξεργαςτισ μπορεί να επικοινωνεί απευκείασ με ζνα περιφερειακό. Υπάρχουν κάπου αποκθκευμζνεσ οι διευκφνςεισ και ο τρόποσ με τον οποίο μπορεί θ CPU να επικοινωνιςει. Αυτό ουςιαςτικά υλοποιείται από τουσ drivers του ςυςτιματοσ, δίνοντασ ζνα φιλικό περιβάλλον με οποίο μπορεί ο χριςτθσ να επικοινωνιςει με το υλικό, το API (application programming interface). Δίνοντασ τθ διεφκυνςθ ςτο κανάλι, ο ελεγκτισ ςυνικωσ δεςμεφει το φυςικό μζςο για απευκείασ επικοινωνία τθσ μονάδασ επεξεργαςίασ με το περιφερειακό. Στα προςόντα των καναλιϊν επεξεργαςίασ ςυγκαταλζγονται και τα πρωτόκολλα επικοινωνίασ. Το κανάλι είναι το φυςικό μζςο, θ τοπολογία του και ο κεντρικόσ ελεγκτισ του. Το πρωτόκολλο επικοινωνίασ είναι αυτό που κακορίηει τον τρόπο με τον οποίο γίνεται θ επικοινωνία και τον τρόπο με τον οποίο δουλεφει ο ελεγκτισ. Μποροφμε για παράδειγμα να ορίηουμε προτεραιότθτεσ εξυπθρζτθςθσ, τθν ικανότθτα ι μθ να μπορεί να διακοπεί μια ςφνδεςθ, τον χρόνο που μπορεί να είναι μια ςφνδεςθ ανοιχτι. Η ανάλυςθ όλων των δυνατϊν πρωτοκόλλων είναι πράγμα αδφνατο αφοφ ςυνεχϊσ αλλάηουν, νζα δθμιουργοφνται, άλλα παφουν να χρθςιμοποιοφνται και καινοφργιεσ εκδόςεισ των ιδθ υπαρχόντων βγαίνουν. 32

49 Με τθν φπαρξθ των καναλιϊν μπορεί να γίνει μία ιεράρχθςθ του όλου ςχεδίου. Τζλοσ, υπάρχουν γζφυρεσ που μποροφν να κάνουν τθ ςφνδεςθ μεταξφ διαφορετικϊν καναλιϊν. Οι αρχζσ ςτισ οποίεσ βαςίηονται τα κανάλια είναι ίδιεσ με τισ αρχζσ των δικτυακϊν ςυςτθμάτων. Κάποιεσ ζννοιεσ που ιταν αρχικά για τα δίκτυα χρθςιμοποιοφνται και εδϊ πλζον. Για παράδειγμα το routing, θ ζννοια του starvation ςε κανάλια υψθλοφ φόρτου. Σε κανάλια που υπάρχει ικανότθτα άμεςθσ ςφνδεςθσ περιφερειακϊν ειςάγονται οι ζννοιεσ του head of line blocking. Από ςτατιςτικι ανάλυςθ μπορεί κάποιοσ να ακολουκιςει κάποιεσ ίδιεσ αρχζσ. Κακϊσ προχωράει θ τεχνολογία και θ ικανότθτα ολοκλιρωςθσ μεγαλϊνει και ςε ζνα chip μποροφν να χωρζςουν όλο και περιςςότερεσ μονάδεσ. Ζχει πλζον αρχίςει να γίνεται ειςαγωγι των εννοιϊν δικτφου μζςα ςε chip (network-on-chip (NOC)). Να είναι δθλαδι τα διάφορα υποςυςτιματα μζςα ςτο chip και να επικοινωνοφν μεταξφ τουσ μζςω δικτφου. Οι γνϊςεισ που υπάρχουν ςτα ιδθ υπάρχοντα δίκτυα κα φανοφν πολφ χριςιμεσ ςε αυτι τθν περίπτωςθ. Τα κανάλια επικοινωνίασ αποτελοφν ζνα πολφ ςθμαντικό κομμάτι όλων των υπολογιςτικϊν ςυςτθμάτων. Η ςωςτι λειτουργία και λειτουργικότθτά τουσ κακορίηει το τελικό προϊόν. Για παράδειγμα αν υπάρχουν δφο ςυςτιματα τα οποία είναι πολφ γριγορα αλλά θ επικοινωνία τουσ είναι αργι τότε είναι ςίγουρο ότι το ςυνολικό αποτζλεςμα κα είναι αργό. Χαρακτθριςτικό παράδειγμα είναι ςτα ςυςτιματα που γίνεται παραλλθλοποίθςθ αλλά οι ςυνδζςεισ μεταξφ αυτϊν μζνουν ίδιεσ. Σε αυτι τθν περίπτωςθ το μζςο ςφνδεςθσ δεν μπορεί να ακολουκιςει τουσ γριγορουσ ρυκμοφσ μετάδοςθσ δεδομζνων [22] [24] [25] [33] [55] Εργαλεύα αρχιτεκτονικόσ Στα παραπάνω ζγινε ουςιαςτικά μια παρουςίαςθ κάποιων από τουσ λόγουσ τθσ μετάβαςθσ από τα ολοκλθρωμζνα ςτα ενςωματωμζνα ςυςτιματα. Εδϊ κα γίνει μια παρουςίαςθ τθσ οικογζνειασ EDK κακϊσ και τθσ ροισ τθσ διαδικαςίασ που ακολουκείται για να αναπτυχκεί ζνα ενςωματωμζνο ςφςτθμα. Το EDK προςφζρει ζνα ολοκλθρωμζνο ςετ εργαλείων ςχεδίαςθσ με μια ευρεία επιλογι ςε standard περιφερειακά που απαιτοφνται για τθν ανάπτυξθ ενςωματωμζνων ςυςτθμάτων με επεξεργαςτι βαςιςμζνα ςτο MicroBlaze και ςτον PowerPC. Μπορεί να μθν ζχει πολλζσ επιλογζσ όςο αφορά τουσ επεξεργαςτζσ, θ όλθ φιλοςοφία όμωσ είναι ίδια ςε ότι αφορά τθν ανάπτυξθ των ενςωματωμζνων ςυςτθμάτων. Το EDK είναι ζνα μζροσ του ISE (Integrated Software Environment) Design Suite Embedded and System Edition. Το ISE είναι προϊόν ανάπτυξθσ ςυςτθμάτων τθσ Xilinx που απαιτείται για τθν υλοποίθςθ ςχεδίων ςτισ προγραμματιηόμενεσ ςυςκευζσ τθσ Xilinx. Το EDK περιλαμβάνει: Το Xilinx Platform Studio (XPS) που είναι μια ςουίτα εργαλείων με τθν οποία μπορεί κάποιοσ να αναπτφξει το δικό του υλικό ενςωματωμζνου επεξεργαςτι. 33

50 Το Software Development Kit (SDK) που είναι βαςιςμζνο ςτο Eclipse που είναι ζνα πλαίςιο ανοιχτοφ κϊδικα, το οποίο μπορεί κάποιοσ να το χρθςιμοποιιςει για τθν ανάπτυξθ των εφαρμογϊν λογιςμικοφ για τα ενςωματωμζνα ςυςτθμάτα. Το SDK είναι επίςθσ διακζςιμο και ωσ standalone πρόγραμμα. Embedded processing Intellectual Property (IP) core που περιλαμβάνει επεξεργαςτζσ και περιφερειακά διακζςιμα για να χρθςιμοποιθκοφν ωσ υποςυςτιματα. Ενϊ το EDK περιβάλλον υποςτθρίηει τθ δθμιουργία και τθν υλοποίθςθ ςχεδίων, θ προτεινόμενθ ροι είναι αρχικά μζςα από το ISE Project navigator ( αυτό που παρουςιάςαμε πιο πάνω), και μετά να προςκζςει ζναν ενςωματωμζνο επεξεργαςτι ςτο ISE project. Το EDK εξαρτάται από τα ISE component για να ξεκινιςει τθ ςφνκεςθ των ςχεδίων των μικροεπεξεργαςτϊν, για να κάνει τθ χαρτογράφθςθ του ςχεδίου ςτο FPGA και να παράγει και να κατεβάςει το bitstream[6] [7]. 34

51 2.3.4 Επιςκόπηςη Διαδικαςύα ςχεδιαςμού Το διάγραμμα ροισ των ενςωματωμζνων ςυςτθμάτων παρουςιάηεται ςτθ ςυνζχεια. Εικόνα 2.2 Basic Embedded Design Process Flow Βλζπουμε ότι με το XPS μποροφμε να φτιάξουμε ζνα μζροσ ι και το ςφνολο του Hardware. Στθ ςυνζχεια και με βάςθ αυτό περνάμε ςτο SDK με το οποίο αναπτφςςουμε το λογιςμικό μασ ι τισ εφαρμογζσ μασ. Ασ δοφμε τα βαςικά χαρακτθριςτικά [6] [7] Hardware Development Η τεχνολογία Xilinx FPGA μασ επιτρζπει να παραμετροποιοφμε τθ λογικι του υλικοφ ςτο υποςφςτθμα επεξεργαςτι. Τζτοιου είδουσ παραμετροποίθςθ δεν είναι εφικτι χρθςιμοποιϊντασ off-the-shelf επεξεργαςτζσ ι controller chips. Ο όροσ Hardware platform περιγράφει το ευζλικτο ενςωματωμζνο υποςφςτθμα επεξεργαςτι που δθμιουργοφμε με τθν τεχνολογία τθσ Xilinx για τισ ανάγκεσ τθσ εκάςτοτε εφαρμογισ. Η πλατφόρμα υλικοφ (hardware platform) αποτελείται από ζναν ι περιςςότερουσ επεξεργαςτζσ και περιφερειακά που ενϊνονται με τα κανάλια επικοινωνίασ του επεξεργαςτι. Το XPS παίρνει τθν περιγραφι υλικοφ τθσ πλατφόρμασ ςε ζνα αρχείο, το Microprocessor Hardware Specification (MHS). Το αρχείο MHS είναι θ κφρια πθγι που διατθρεί τθν περιγραφι τθσ πλατφόρμασ υλικοφ και παρουςιάηει ςε ζνα κείμενο τφπου ASCII τα ςτοιχεία του υλικοφ του ενςωματωμζνου 35

52 ςυςτιματοσ. Πταν θ περιγραφι τθσ πλατφόρμασ υλικοφ ζχει ολοκλθρωκεί, θ πλατφόρμα αυτι μπορεί να εξαχκεί για να χρθςιμοποιθκεί από το SDK Software Development Το board support package (BSP) είναι μια ςυλλογι από οδθγοφσ λογιςμικοφ και προαιρετικά το λειτουργικό ςφςτθμα πάνω ςτο οποίο κα αναπτυχκεί θ εφαρμογι μασ. Το λογιςμικό που δθμιουργείται περιζχει μόνο ζνα μζροσ από τισ βιβλιοκικεσ Xilinx που χρθςιμοποιοφνται ςτο ενςωματωμζνο ςχζδιό μασ. Δίνεται θ δυνατότθτα να φτιάξουμε πολλαπλζσ εφαρμογζσ για να τρζχουν ςτο BSP. Η πλατφόρμα υλικοφ κα πρζπει να ζχει ειςαχκεί πριν από τθ δθμιουργία του λογιςμικοφ από το BSP Verification Το EDK παρζχει και software άλλα και hardware εργαλεία επιβεβαίωςθσ. Στθ ςυνζχεια ακολουκεί μια περιγραφι των διακζςιμων εργαλείων τόςο ςε software όςο και ςε hardware. Hardware verification Using Simulation Για να γίνει επιβεβαίωςθ των ςωςτϊν λειτουργιϊν του υλικοφ, μποροφμε να παράγουμε ζνα μοντζλο εξομοίωςθσ το οποίο μπορεί να τρζξει ςε ζναν εξομοιωτι HDL. Κατά τθ διάρκεια τθσ εξομοίωςθσ, ο επεξεργαςτισ ι οι επεξεργαςτζσ τρζχουν τα προγράμματα που ζχουμε γράψει. Μποροφμε να επιλζξουμε να δθμιουργιςει behavioral, structural, ι timingaccurate μοντζλο εξομοίωςθσ. Το ISIM (ο εξομοιωτισ τθσ Xilinx) τϊρα υποςτθρίηει εξομοίωςθ ενςωματωμζνων ςυςτθμάτων. Software Verification Using Debugging Οι ακόλουκεσ επιλογζσ είναι διακζςιμεσ για επιβεβαίωςθ λογιςμικοφ: o o o Μποροφμε να φορτϊςουμε το design μασ ςε ζνα υποςτθριηόμενο board και να χρθςιμοποιιςουμε ζνα εργαλείο debugging για να ελζγξουμε τον επεξεργαςτι του board. Μποροφμε να χρθςιμοποιιςουμε ζναν Instruction Set Simulator (ISS) που τρζχει ςε ζναν host υπολογιςτι για να κάνουμε debug ςτον κϊδικά μασ. Μποροφμε να μετριςουμε τθν απόδοςθ του ςυςτιματοσ μζςω τθσ διαδικαςίασ profiling τθσ εκτζλεςθσ του κϊδικα Device Configuration Πταν οι πλατφόρμεσ υλικοφ και λογιςμικοφ ζχουν ολοκλθρωκεί, μποροφμε ζπειτα να δθμιουργιςουμε ζνα bitstream για τθ ςυςκευι FPGA. 36

53 o Για προτυποποίθςθ, κατεβάηουμε το bitstream μαηί με το όποιο λογιςμικό κζλουμε να τρζξει ςτθν ενςωματωμζνθ πλατφόρμα ενόςω ςυνδζεται με το host υπολογιςτι. o Για τθ γραμμι παραγωγισ, μποροφμε να αποκθκεφςουμε το προγραμματιηόμενο bitstream μαηί με το λογιςμικό ςε μία non-volatile μνιμθ που είναι ςυνδεδεμζνθ με το FPGA Επιςκόπηςη του EDK Μια πλατφόρμα ενςωματωμζνου ςυςτιματοσ τυπικά αποτελείται από ζναν ι περιςςότερουσ επεξεργαςτζσ, περιφερειακά και μπλοκ μνιμθσ, διαςυνδεδεμζνα μζςω καναλιϊν επικοινωνίασ του επεξεργαςτι. Επιπλζον ζχει κφρεσ επικοινωνίασ για να επικοινωνεί με τον ζξω κόςμο. Κάκε ζνασ από τουσ επεξεργαςτικοφσ πυρινεσ (που καλοφνται και pcores ι processor IPs) ζχουν ζνα αρικμό από παραμζτρουσ που μποροφμε να αλλάξουμε και να προςαρμόςουμε τθ ςυμπεριφορά τουσ. Αυτζσ οι παράμετροι κακορίηουν και τθ διευκυνςιοδότθςθ των περιφερειακϊν και τθσ μνιμθσ. Το XPS μασ επιτρζπει να επιλζγουμε από ζνα πλικοσ προαιρετικϊν δυνατοτιτων. Κατά ςυνζπεια, το FPGA χρειάηεται μόνο να υλοποιιςει το υποςφςτθμα των λειτουργιϊν που απαιτοφνται από τθν εφαρμογι που αναπτφςςουμε. Για παράδειγμα, αν κζλουμε να ζχουμε πρόςβαςθ ςτο δίκτυο κα επιλζξουμε να υποςτθρίηεται κάτι τζτοιο, αν πάλι θ πρόςβαςθ ςτο δίκτυο δεν απαιτείται τότε κα επιλζξουμε να μθν υποςτθρίηεται και ζτςι κα κερδίςουμε κάποιο χϊρο ςτο FPGA ενδεχομζνωσ για κάτι άλλο. Στο επόμενο ςχθματικό γίνεται μια επιςκόπθςθ τθσ αρχιτεκτονικισ του EDK και πϊσ αυτά τα εργαλεία αλλθλεπιδροφν μεταξφ τουσ για αν παράγουν ζνα ενςωματωμζνο ςφςτθμα [6] [7]. 37

54 Εικόνα 2.3 Embedded Development Kit (EDK) Tools Architecture 38

55 2.3.6 EDK εργαλεύα και εφαρμογϋσ Ο Ρίνακασ που ακολουκεί περιγράφει επιγραμματικά τα εργαλεία και τθσ εφαρμογζσ που υποςτθρίηονται ςτο EDK και ςτθ ςυνζχεια περιγράφεται μια ςφντομθ παρουςίαςθ του κάκε εργαλείου. Πίνακασ 2.1 EDK Tools and Utilities Hardware Development and Verification Xilinx Platform Studio An integrated design environment (GUI) in which you can create your embedded hardware design. The Base System Builder Allows you to quickly create a working embedded design Wizard using any features of a supported development board or using basic functionality common to most embedded systems. For initial project creation it is recommended to use The Create and Import Peripheral Wizard Coprocessor Wizard Platform Generator (Platgen) FXPS Command Line or no window Mode Bus Functional Model Simulation Model Generator (Simgen) Simulation Library Compiler (Compxlib) the BSB wizard. Assists you in adding your own custom peripheral(s) to a design. The CIP creates associated directories and data files required by XPS. The Platform Specification Utility (PsfUtility) tool enables automatic generation of Microprocessor Peripheral Definition (MPD) files, which are required to create IP peripherals that are compliant with the Embedded Development Kit (EDK). The CIP wizard in XPS supports features provided by the PsfUtility for MPD file creation (recommended.) Helps you add a coprocessor to a CPU. (This applies to MicroBlaze-based designs only.) Constructs the programmable system on a chip in the form of HDL and synthesized netlist files. Allows you to run embedded design flows or change tool options from a command line. Helps simplify the verification of custom peripherals by creating a model of the bus environment to use in place of the actual embedded system. Generates the hardware simulation model and the compilation script files for simulating the complete system. Compiles the EDK simulation libraries for the target simulator, as required, before starting behavioral simulation of the design. Software Development and Verification Software Development Kit An integrated design environment (GUI), that helps you with the development of software application projects. Library Generator (Libgen) Constructs a BSP comprising a customized collection of software libraries, drivers, and OS. GNU Compiler Tools Builds a software application based on the platforms created by the Libgen. Xilinx Microprocessor Used for software download and debugging. Also provides a Debugger channel through which the GNU debugger accesses the device. GNU Debugger GUI for debugging software on either a simulation model or 39

56 target device. Bitstream Initializer (Bitinit) Updates an FPGA configuration bitstream to initialize the onchip instruction memory with the software executable. Debug Configuration Wizard Automates hardware and software platform debug configuration tasks common to most designs. System ACE File Generator (GenACE) Generates a Xilinx System ACE configuration file based on the FPGA configuration bitstream and software executable to be stored in a compact flash device in a production system. Flash Memory Programmer Allows you to use your target processor to program onboard Common Flash Interface (CFI)-compliant parallel flash devices with software and data. Format Revision Tool and Updates the project files to the latest format. The Version Version Management Management wizard helps migrate IPs and drivers created Wizard with an earlier EDK release to the latest version. [7] 2.4 Xilinx Platform Studio (XPS) Το Xilinx Platform Studio (XPS) παρζχει ζνα ολοκλθρωμζνο περιβάλλον για τθ δθμιουργία ενςωματωμζνων ςυςτθμάτων βαςιςμζνα ςτο επεξεργαςτι MicroBlaze ι/και PowerPC. Το XPS παρζχει επίςθσ ζναν editor και project manager για να δθμιουργοφμε και να επεξεργαηόμαςτε τον πθγαίο κϊδικα. Το XPS παρζχει επίςθσ παραμετροποίθςθ των επιλογϊν των εργαλείων διαμόρφωςθσ και παρζχει ζνα γραφικό περιβάλλον για επεξεργαςία του ςυςτιματοσ ςυνδζςεων των επεξεργαςτϊν, των περιφερειακϊν και των καναλιϊν επικοινωνίασ. Μζςα από το XPS μποροφμε να τρζχουμε όλα τα εργαλεία ςυςτιματοσ που απαιτοφνται για να επεξεργαςτοφμε τα διάφορα κομμάτια υλικοφ του ςυςτιματόσ μασ. Μποροφμε επιπλζον να κάνουμε επιβεβαίωςθ λειτουργίασ του ςυςτιματοσ μζςα από το περιβάλλον του XPS. Το XPS παρζχει: Τθν δυνατότθτα να προςκζτουμε επεξεργαςτζσ και πυρινεσ περιφερειακϊν, να επεξεργαηόμαςτε τισ παραμζτρουσ των πυρινων, να κάνουμε ςφνδεςθ ςτο κανάλι και ςυνδζςεισ ακροδεκτϊν για να φτιάξουμε ζνα MHS (microprocessor specification file) αρχείο. Υποςτιριξθ των εργαλείων που παρουςιάςτθκαν ςτον Ρίνακασ 2.1 EDK Tools and Utilities. Δυνατότθτα παραγωγισ και προεπιςκόπθςθσ του μπλοκ διαγράμματοσ του ςυςτιματοσ και αναφοράσ ςχεδίου ( κατειλθμμζνα slices κτλ). Υποςτιριξθ Project manager Διαχείριςθ τθσ εξάρτθςθσ των διεργαςιϊν και τθσ ροισ εργαλείων Δυνατότθτα να εξάγουμε το αρχείο που περιγράφει τισ προδιαγραφζσ hardware και να το ειςάγουμε ςτο SDK. 40

57 Τα προγράμματα αυτά μπορεί να κακορίηουν όλεσ τισ επιλογζσ που ζχουμε, αλλά μζςα από αυτά μακαίνεται θ όλθ διαδικαςία ανάπτυξθσ ενόσ ενςωματωμζνου ςυςτιματοσ. Τα προβλιματα και τα διλιμματα που προκφπτουν ςχετικά με τισ επιλογζσ και τον τρόπο υλοποίθςθσ του ενςωματωμζνου είναι ίδια ανεξαρτιτωσ τθσ πλατφόρμασ προγραμμάτων ανάπτυξθσ. Επίςθσ θ μεκοδολογία που ακολουκείται για τθν ανάπτυξθ του ενςωματωμζνου δεν είναι ςχετικι και δεν περιορίηεται από τα προγράμματα. Μπορεί πχ να ζχουμε μόνο δφο ι ακόμα και μία επιλογι όςο αφορά τον επεξεργαςτι αλλά όλα τα περιφερειακά και το ςτιςιμο ενόσ τζτοιου ςυςτιματοσ δεν περιορίηεται ςτο πρόγραμμα. Η ανάπτυξθ ενόσ ενςωματωμζνου ςυςτιματοσ είναι μια διαδικαςία δφςκολθ και αυτά που πρζπει να λάβουμε υπόψθ μασ είναι πολλοί παράγοντεσ. Λογικό είναι αυτοί οι παράγοντεσ να αλλθλεπιδροφν μεταξφ τουσ. Η όλθ ανάπτυξθ είναι μια εφκραυςτθ υπόκεςθ και πολλζσ φορζσ πρζπει να γυρνάμε πίςω ςτθν ανάπτυξθ για να αλλάηουμε ενδεχομζνωσ μία παράμετρο. Εδϊ κα γίνει μια παρουςίαςθ των λειτουργιϊν που επιτελοφν τα προγράμματα και μζςα από αυτά παρουςιάηεται θ ςυνολικι ροι ανάπτυξθσ. Ασ δοφμε ςτθ ςυνζχεια τα βαςικά ςτοιχεία που κα χρθςιμοποιιςουμε ςτο ςχεδιαςμό του ενςωματωμζνου ςυςτιματοσ [7] The Base System Builder Wizard Ο οδθγόσ Base System Builder (BSB) μάσ βοθκάει ςτθ γριγορθ ανάπτυξθ του ςυςτιματοσ λειτουργίασ. Μερικά ςχζδια ενςωματωμζνων ςυςτθμάτων μποροφν να αναπτυχκοφν χρθςιμοποιϊντασ μόνο τον BSB wizard. Για πιο περίπλοκα ςυςτιματα, ο BSB wizard παρζχει τθν baseline του ςυςτιματοσ που μποροφμε να παραγοντοποιιςουμε για να ολοκλθρϊςουμε το ενςωματωμζνο ςφςτθμα. Με τον BSB μποροφμε να παράγουμε ζνα ςφςτθμα με ζναν επεξεργαςτι για τουσ υποςτθριηόμενουσ επεξεργαςτζσ, και ζνα ςφςτθμα με δφο επεξεργαςτζσ MicroBlaze. Για αποτελεςματικό τρόπο δθμιουργίασ του project, θ Xilinx προτείνει να χρθςιμοποιοφμε τον BSB wizard ςε κάκε περίπτωςθ. Βαςιςμζνο ςτο αναπτυξιακό που χρθςιμοποιοφμε, το BSB μασ επιτρζπει να επιλζξουμε και να παραμετροποιοφμε τα ςτοιχεία του ςυςτιματοσ όπωσ είναι ο τφποσ επεξεργαςτι, το debug interface, θ cache, ο τφποσ και το μζγεκοσ μνιμθσ, και θ επιλογι περιφερειακϊν. Ο BSB παρζχει λειτουργικζσ προεπιλεγμζνεσ τιμζσ που μποροφν να αλλάξουν με βάςθ τισ ανάγκεσ. Αν θ πλακζτα που ζχουμε δεν είναι διακζςιμθ ι δεν υποςτθρίηεται προσ το παρόν (πχ aftermarket πλακζτα) από τον BSB, μποροφμε να επιλζξουμε Custom board και όχι κάποιο από τα προεπιλεγμζνα boards. Χρθςιμοποιϊντασ αυτι τθν επιλογι, μποροφμε να κακορίςουμε ξεχωριςτά το hardware device που αναμζνεται να χρθςιμοποιιςουμε ςτο custom board. Για να τρζχουμε ζπειτα το παραχκζν ςφςτθμα πρζπει να ειςάγουμε περιοριςμοφσ pins του FPGA ςτο user constrains file (UCF). Αν θ υποςτθριηόμενθ πλακζτα ζχει επιλεχκεί, το BSB ειςάγει αυτοφσ του περιοριςμοφσ ςτο UCF αυτόματα. 41

58 Στθν περίπτωςθ του Custom board υπάρχουν και ζτοιμα αρχεία που περιγράφουν τθ λειτουργία, τον τρόπο που λειτουργοφν κακϊσ και τα περιφερειακά που υποςτθρίηονται και πϊσ αυτά ςυνδζονται ςτο ςυνολικό ςφςτθμα. Αν δεν υπάρχουν αυτά τα αρχεία για να αυτοματοποιοφν κάπωσ τθ διαδικαςία, το όλο εγχείρθμα είναι δφςκολο. Θα πρζπει για παράδειγμα να βροφμε τον ακριβι τρόπο που λειτουργοφν οι μνιμεσ για να μπορζςει να υπάρξει ςωςτι επικοινωνία. Εμείσ εδϊ δουλζψαμε με πλακζτεσ που υποςτθρίηονται άμεςα από τθ Xilinx. Μόνο ςτθν περίπτωςθ που τρζχαμε τθ 12.2 και κζλαμε να δοκιμάςουμε το ML402 δεν υπιρχε υποςτιριξθ γιατί θ Xilinx το είχε κόψει από τισ πλακζτεσ που υποςτθρίηει για ανάπτυξθ ενςωματωμζνων ςυςτθμάτων. Σε αυτι τθν περίπτωςθ ακολουκιςαμε τον πρϊτο τρόπο που περιγράφουμε και πιραμε τα αρχεία από τθ 11.5 ζκδοςθ που υποςτιριηαν το ML402 και ζτςι μπορζςαμε να αναπτφξουμε και εκεί εφαρμογζσ [7] The Create and Import Peripheral Wizard Ο Create and Import Peripheral (CIP) οδθγόσ βοθκάει να δθμιουργοφμε τα δικά μασ περιφερειακά και να τα ειςάγουμε ςτο XPS-compliant repositories ι ςτο project. Στον Create τρόπο λειτουργίασ, ο CIP οδθγόσ δθμιουργεί ζνα πρότυπο που μασ βοθκάει να υλοποιιςουμε τα περιφερειακά μασ χωρίσ να απαιτεί λεπτομερι κατανόθςθ των πρωτοκόλλων καναλιοφ επικοινωνίασ, αλλαγι ονομάτων, ι τα αρχεία να είναι ςε ςυγκεκριμζνο τρόπο από το XPS. Αναφζροντασ τα παραδείγματα από το αρχείο προτφπου και χρθςιμοποιϊντασ διάφορα βοθκθτικά αρχεία που υποςτθρίηονται και εξάγονται από τον οδθγό αυτό, μποροφμε γριγορα να ξεκινιςουμε τθ ςχεδίαςθ τθσ δικιά μασ λογικι ωσ περιφερειακό προςαρτθμζνο ςτον επεξεργαςτι που γράφουμε το λογιςμικό. Στον Import τρόπο λειτουργίασ, το εργαλείο παράγει τα αρχεία διεπαφϊν και τισ δομζσ των φακζλων που είναι απαραίτθτα για να κάνει το περιφερειακό ορατό από τθν πλειοψθφία εργαλείων του XPS. Από τον import τρόπο λειτουργίασ, υποκζτεται ότι ζχουν ακολουκθκεί όλεσ οι ςυμβάςεισ ονοματολογίασ για το XPS. Από τθ ςτιγμι που ζχει ειςαχκεί, το περιφερειακό είναι διακζςιμο ςτισ βιβλιοκικεσ των περιφερειακϊν του XPS. Πταν δθμιουργοφμε ι ειςάγουμε ζνα περιφερειακό, το XPS παράγει το Microprocessor Peripheral Definition (MPD) και το Peripheral Analyze Order (PAO) αυτόματα. Το MPD αρχείο κακορίηει τισ διεπαφζσ του περιφερειακοφ μασ. Το PAO αρχείο που ορίηεται με το Platgen και με το Simgen κακορίηει τα HDL αρχεία που χρειάηονται για compilation (ςφνκεςθ και εξομοίωςθ) για τα περιφερειακά και τθ ςειρά αυτϊν των αρχείων. Ο τρόποσ δθμιουργίασ και ειςαγωγισ είναι πολφ ςθμαντικόσ. Χωρίσ κάτι τζτοιο το ςφςτθμα δεν κα μποροφςε να είναι παραμετροποιιςιμο και επεκτάςιμο και ουςιαςτικά θ ανάπτυξθ κα ιταν προνόμιο πχ τθσ Xilinx. Εμείσ ςε αυτι τθ διπλωματικι επικεντρωνόμαςτε ςτο να βγοφμε ζνα εφκολο, γριγορο, αξιόπιςτο και αυτοματοποιθμζνο τρόπο να εξάγουμε τα αποτελζςματα από ςπάνιο γεγονότα. Ουςιαςτικά ζχουμε το περιφερειακό και το τροποποιοφμε με τζτοιο τρόπο που 42

59 να μπορεί να ςυνεργαςτεί ωσ μζροσ ενόσ ενςωματωμζνου ςυςτιματοσ. Το ενςωματωμζνο ςφςτθμα αναπτφςςεται με τζτοιο τρόπο που θ λειτουργία του να επικεντρϊνεται ςτο περιφερειακό. Θα μποροφςε κανείσ να δει και το ςφςτθμα ωσ ζναν επεξεργαςτι που θ δουλειά του είναι να εξυπθρετεί και να είναι ςτθ διάκεςθ ενόσ άλλου ςυνεπεξεργαςτι. Από τθν άποψθ του ενςωματωμζνου, ο επεξεργαςτισ ζχει τθ κφρια δουλεία, αλλά από άποψθ ανάγκθσ φπαρξθσ το περιφερειακό κατζχει τον κυρίαρχο ρόλο. Ππωσ και ςτο παράδειγμα ενόσ ψθφιακοφ ρολογιοφ. Από άποψθ λειτουργίασ, το κομμάτι που μετράει τον χρόνο είναι το ςθμαντικότερο, αλλά χωρίσ πχ το κομμάτι που ελζγχει και μπορεί να αναπαραςτιςει αυτά τα δεδομζνα ςτθν οκόνθ, το πρϊτο δεν ζχει λόγο φπαρξθσ. Ζτςι κι εδϊ, υπάρχει ζνα ςφςτθμα που όπωσ παρουςιάηεται και κάτω, τα δεδομζνα εξάγονται με ζναν τρόπο, και ειςάγονται παράμετροι με ζναν άλλον. Εμείσ εξερευνοφμε τισ δυνατότθτεσ που ζχουμε για να φτιάξουμε ζνα ςφςτθμα καλφτερο και πιο αξιόπιςτο. Αυτό όμωσ δεν ςθμαίνει ότι γίνεται μόνο ανάπτυξθ. Απαιτείται θ γνϊςθ από διάφορα αντικείμενα και το ερευνθτικό ενδιαφζρον είναι μεγάλο. Για παράδειγμα θ ςυλλογι ςπάνιων δεδομζνων είναι από μόνθ τθσ μια κρίςιμθ διαδικαςία. Η αξιοπιςτία λογιςμικοφ (software reliability) ιταν κάτι που ζπρεπε να μελετθκεί και να μασ εγγυθκεί ότι δεν ςυμβαίνουν ςπάνια ςφάλματα ςτο λογιςμικό. Σε αυτι τθν περίπτωςθ το ςφςτθμα κα ζβγαηε αποτελζςματα που δεν κα είχαν όμωσ κανζνα νόθμα. Γενικά πρόκειται για πειραματικι διάταξθ που ςκοπό ζχει τθν προτυποποίθςθ τθλεπικοινωνιακϊν διατάξεων. Δίνεται μια πιο αναλυτικι παρουςίαςθ ςε πιο κάτω ενότθτα. Σε αυτό όμωσ το ςφςτθμα, ςκοπόσ είναι να εξετάςουμε ςπάνια γεγονότα. Αυτά όμωσ τα ςπάνια γεγονότα ςυμβαίνουν με τυχαίο τρόπο και το διάςτθμα που μπορεί να ςυμβοφν είναι τυχαίο. Ρχ μπορεί να ςυμβεί ζνα γεγονόσ και το επόμενο να είναι μετά από δζκα μζρεσ, μπορεί όμωσ να ςυμβεί και μετά από μερικά msec. Επίςθσ όταν μιλάμε για τζτοιου είδουσ ςυςτιματα όπου δεν μπορείσ εκ των πρότερων να γνωρίηεισ πολλά αποτελζςματα, πρζπει να βροφμε άλλουσ τρόπουσ να επαλθκεφουμε τθ ςωςτι ςυμπεριφορά του. Ριο αναλυτικά αυτοί οι τρόπο παρουςιάηονται παρακάτω [7] Platform Generator (Platgen) Το platgen ςυνκζτει (compiles) τθν περιγραφι του high-level από το ενςωματωμζνο ςφςτθμα επεξεργαςτι ςε HDL netlist που μπορεί να υλοποιθκεί ςε μία ςυςκευι FPGA. Ριο ςυγκεκριμζνα με το Platgen μπορεί να: Διαβάηει το MHS αρχείο ωσ τθν πρωταρχικι είςοδό του. Διαβάηει πλθκϊρα αρχείων περιγραφισ υλικοφ επεξεργαςτικϊν πυρινων (pcore) (MPD, PAO) από το XPS project και από κάκε IP repository χριςτθ. Ραράγει το αρχείο περιγραφισ του top-level HDL design από το ενςωματωμζνο ςφςτθμα που ενϊνει όλα τα ςτιγμιότυπα των παραμετρικϊν pcores που περιζχει το ςφςτθμα. Κατά τθ διαδικαςία, αναλφει τισ ςυνδζςεισ καναλιοφ υψθλότερου επιπζδου ςτο MHS ςε πραγματικά ςιματα που απαιτοφνται για τθ διαςφνδεςθ των επεξεργαςτϊν, των περιφερειακϊν και των μνθμϊν του chip. ( Το system-level HDL 43

60 netlist που παράγεται από το Platgen χρθςιμοποιείται ωσ ζνα μζροσ τθσ διαδικαςίασ υλοποίθςθσ του FPGA). Επικαλοφμενο τον compiler του XPS κάνει τθ ςφνκεςθ για κάκε αρχικοποιθμζνο pcore. Ραράγει το block RAM Memory MAP (BMM) αρχείο το οποίο περιζχει διευκφνςεισ και configurations των on-chip block ram μνθμϊν. Αυτό το αρχείο χρθςιμοποιείται μετζπειτα για αρχικοποίθςθ των Block RAMs με το λογιςμικό [7] Debug Configuration Wizard Ο Debug Configuration οδθγόσ αυτοματοποιεί τισ διαδικαςίεσ παραμετροποίθςθσ του hardware και software platform debug που είναι κοινζσ για τα περιςςότερα ςχζδια. Μποροφμε να αρχικοποιιςουμε ζναν ChipScope πυρινα για να παρακολουκεί το Processor Local Bus (PLB) ι οποιοδιποτε άλλο ςιμα ςτο επίπεδο του ςυςτιματοσ. Επιπροςκζτωσ μποροφμε να μεταβάλουμε τισ παραμζτρουσ από ζνα ιδθ υπάρχον πυρινα ChipScope για να κάνει hardware debugging. Μποροφμε επίςθσ να ζχουμε ζνα JTAG-based με εικονικζσ κφρεσ ειςόδου και εξόδου. Για να παραμετροποιιςουμε το λογιςμικό ςε κατάςταςθ debugging μποροφμε να κζςουμε ςτον επεξεργαςτι τισ παραμζτρουσ debug. Πταν το co-debugging είναι ενεργοποιθμζνο για τον ChipScope πυρινα, μποροφμε να κζςουμε mutual triggering μεταξφ του software debugger και των ςθμάτων λογιςμικοφ. Το Interface του JTAG μπορεί να ρυκμιςτεί για να αλλθλεπιδρά με τθ ςειριακι κφρα ςτο Xilinx Microprocessor Debugger (XDM) [7]. 2.5 Software Development Kit Το Software Development Kit (SDK) παρζχει ζνα αναπτυξιακό περιβάλλον για τθν ανάπτυξθ εφαρμογϊν λογιςμικοφ. Το SDK είναι βαςιςμζνο ςτο Eclipse που είναι ανοιχτοφ κϊδικα. Τα χαρακτθριςτικά του SDK παρουςιάηονται ςτθ ςυνζχεια. Μπορεί να εγκαταςτακεί ανεξάρτθτα από το ISE και το XPS για μικρζσ απαιτιςεισ ςε αποκθκευτικό χϊρο. Μποροφμε να ειςάγουμε το XPS-generated hardware platform definition Υποςτθρίηει ανάπτυξθ λογιςμικοφ ςε ζνα ομαδικό περιβάλλον εργαςίασ. Ζχει τθν ικανότθτα να δθμιουργεί και να παραμετροποιεί το board support package (BSP) για λειτουργικό ςφςτθμα τρίτων καταςκευαςτϊν. Ραρζχει off-the-self παραδείγματα λογιςμικοφ για δοκιμι τθσ λειτουργικότθτασ του υλικοφ και του λογιςμικοφ. 44

61 Ζχει ζνα εφκολο GUI περιβάλλον για να παράγει τα linker scripts για τισ εφαρμογζσ λογιςμικοφ, να προγραμματίηει τισ FPGA ςυςκευζσ και να προγραμματίηει παράλλθλα τισ Flash μνιμεσ. Ζχει ζνα πλοφςιο ςε λειτουργίεσ C/C++ επεξεργαςτι κϊδικα και περιβάλλον ςφνκεςθσ κϊδικα. Ρροςφζρει διαχείριςθ project Επιτρζπει τθν παραμετροποίθςθ εφαρμογϊν και αυτοματοποιεί τισ διαδικαςίεσ παραγωγισ αρχείων Ραρζχει οδθγό λακϊν Ραρζχει ζνα ολοκλθρωμζνο περιβάλλον για debugging και profiling των ενςωματωμζνων ςυςτθμάτων. Το κομμάτι λογιςμικοφ ενόσ ενςωματωμζνου ςυςτιματοσ είναι εξίςου ςθμαντικό με το hardware κομμάτι. Ρολλζσ φορζσ βλζπουμε ζνα πολφ γριγορο hardware αλλά το τελικό αποτζλεςμα όςο αφορά τθν απόδοςθ δεν είναι το αναμενόμενο. Σε αυτό πολλζσ φορζσ φταίει το λογιςμικό ι ο τρόποσ επικοινωνίασ με το hardware. Για να φτιάξει κάποιοσ καλό λογιςμικό απαιτοφνται πολλζσ γνϊςεισ. Καταρχιν κα πρζπει να ξζρει καλά τθ γλϊςςα ςτθν οποία γράφει. Οι γνϊςεισ για το τι υλικό υπάρχει από κάτω και ποιεσ οι δυνατότθτζσ του είναι απαραίτθτεσ. Επίςθσ μια ξεχωριςτι επιςτιμθ είναι οι μεταφραςτζσ (compilers). Ρρζπει να είμαςτε ςε κζςθ να κατανοοφμε τον τρόπο με τον οποίο μπορεί ο κϊδικασ να μεταφραςτεί ςε κϊδικα μθχανισ. Η βελτιςτοποίθςθ του κϊδικα όςο αφορά τθν απόδοςθ είναι και αυτόσ ζνασ ερευνθτικόσ κλάδοσ. Ζχουν προτακεί διάφορεσ μζκοδοι με τισ οποίεσ μπορεί οι ίδιεσ λειτουργίεσ του λογιςμικοφ να βελτιςτοποιθκοφν. Ρροςπάκειεσ προσ αυτι τθν κατεφκυνςθ γίνονται και για τουσ προςωπικοφσ υπολογιςτζσ. Στα ενςωματωμζνα ςυςτιματα ο κϊδικασ που γράφουμε πρζπει να είναι βελτιςτοποιθμζνοσ. Βελτιςτοποίθςθ τόςο όςο αφορά ςτθ χριςθ των πόρων όςο και ςτισ επιδόςεισ του. Οι πόροι ςε ζνα τζτοιο ςφςτθμα είναι περιοριςμζνοι. Δεν ζχουμε για παράδειγμα τθ δυνατότθτα απεριόριςτθσ μνιμθσ ζςτω με τθ μορφι εικονικισ όπωσ ςτουσ υπολογιςτζσ. Τα overflow τθσ μνιμθσ εδϊ μπορεί να γίνουν πολφ πιο γριγορα. Επίςθσ, όπωσ ζχουμε αναφζρει, τα ενςωματωμζνα ςυςτιματα προορίηονται για να λειτουργοφν για χρόνια πολλζσ φορζσ, χωρίσ δυνατότθτα επανεκκίνθςθσ. Ζτςι ζνασ πιο εξονυχιςτικόσ ζλεγχοσ κρίνεται απαραίτθτοσ. Ζνα άλλο πρόβλθμα που απαςχολεί τθν επιςτθμονικι αλλά και τθ βιομθχανικι κοινότθτα είναι θ ςυγγραφι λογιςμικοφ με ςτόχο τθ χαμθλι κατανάλωςθ. Τα εργαλεία μπορεί να είναι πολφ χριςιμα και να μποροφν να κάνουν κάποιεσ βελτιςτοποιιςεισ, ςε καμία όμωσ περίπτωςθ δεν είναι ςε κζςθ να κατανοιςουν και να κάνουν τζτοιου είδουσ βελτιςτοποιιςεισ. Στα ενςωματωμζνα ςυςτιματα, μιλάμε για μία εντελϊσ ξεχωριςτι κατθγορία που ναι μεν μπορεί να εμφανίηει ίδια χαρακτθριςτικά με τουσ προςωπικοφσ υπολογιςτζσ, απαιτεί όμωσ εντελϊσ διαφορετικι αντιμετϊπιςθ όςο αφορά το λογιςμικό. Πςο αφορά τα λειτουργικά ςυςτιματα, αυτά υπάρχουν και είναι ζνασ κλάδοσ που ανκεί ςτα ενςωματωμζνα ςυςτιματα. Το ios τθσ Apple, το android τθσ Google, το Symbian τθσ Nokia είναι ευρζοσ γνωςτά και κατά κάποιο τρόπο γενικοφ ςκοποφ λειτουργικά ςυςτιματα 45

62 ενςωματωμζνων ςυςτθμάτων. Η τάςθ που υπάρχει ςε αυτά τα λειτουργικά ςυςτιματα είναι θ εφκολθ επεκταςιμότθτα των λειτουργιϊν. Άλλα λειτουργικά ςυςτιματα είναι τα Windows CE, και Linux-based ςυςτιματα. Η Xilinx με τθ ςειρά τθσ ζχει το Xilkernel το οποίο είναι ζνα λειτουργικό ςφςτθμα βαςιςμζνο ςτο Linux πυρινα που επιτρζπει multitasking. Πςο αφορά ςτισ δυνατότθτεσ αλλά και τισ απαιτιςεισ του λειτουργικοφ ςυςτιματοσ υπάρχουν πολλζσ προςεγγίςεισ. Η επιλογι πρζπει να είναι όςο πιο κοντά γίνεται ςτισ απαιτιςεισ που υπάρχουν. Για παράδειγμα δεν ζχει νόθμα να βάλουμε ζνα λειτουργικό ςφςτθμα που να επιτρζπει πολλζσ εφαρμογζσ να τρζχουν ταυτόχρονα αν το λογιςμικό που αναπτφςςουμε εμείσ αποτελείται από μόνο μία εφαρμογι. Το λειτουργικό ςφςτθμα ςτα ενςωματωμζνα ςυςτιματα μεταφράηεται απευκείασ ςε υλικό και κατά ςυνζπεια ςε κόςτοσ. Η κεωρία λειτουργικϊν ςυςτθμάτων και ο τρόποσ με τον οποίο ςτινεται ζνα λειτουργικό ςφςτθμα είναι απαραίτθτεσ γνϊςεισ. Απαραίτθτθ είναι επίςθσ θ γνϊςθ όςο αφορά ςτουσ τρόπουσ διαχείριςθσ μνιμθσ, κρυφϊν μνθμϊν και καταχωρθτϊν εντόσ τθσ επεξεργαςτικισ μονάδασ. Γίνεται κατανοθτό ότι θ ςυγγραφι ενόσ προγράμματοσ ςε ζνα ενςωματωμζνο ςφςτθμα δεν είναι το ίδιο απλό με τθ ςυγγραφι ενόσ προγράμματοσ ςτον υπολογιςτι. Μια άλλθ πολφ χριςιμθ ικανότθτα που παρζχει θ Xilinx είναι το Profiling. Με βάςθ αυτό, μποροφμε να τρζξουμε τον κϊδικά μασ ςε πραγματικζσ ςυνκικεσ λειτουργίασ και να καταςκευάςει ζνα πίνακα με τισ απαιτιςεισ ςε χρόνο για τθν κάκε ςυνάρτθςθ που τρζχει. Αυτό είναι πολφ χριςιμο. Μασ βοθκάει να επικεντρϊςουμε το ενδιαφζρον μασ ςε κάποιεσ ςυναρτιςεισ και να βελτιςτοποιιςουμε τθ λειτουργία αυτϊν. Σε ζνα ςφςτθμα πραγματικοφ χρόνου, αυτό το βιμα είναι απαραίτθτο για να ζχουμε μια εποπτεία του ςυςτιματοσ για τισ απαιτιςεισ του ςε χρόνο. Το profiling όμωσ δεν δίνει πάντα αποτελζςματα. Σε ζνα ςφςτθμα interruptbased, δεν μποροφμε με αυτό τον τρόπο να ζχουμε μια εποπτεία τθσ κακυςτζρθςθσ αφοφ οι ςυναρτιςεισ είναι κριμζνεσ μζςα ςτθ διαδικαςία εξυπθρζτθςθσ των διακοπϊν. Σε αυτι τθν περίπτωςθ πρζπει να ακολουκθκεί άλλθ ανάλυςθ για να βροφμε κακυςτεριςεισ. Ζνασ τζτοιοσ τρόποσ αναλφεται ςε παρακάτω κεφάλαιο [1] [2] [3] [4] [7] Library Generator (Libgen) Με τθ βοικεια του Libgen δίνεται θ δυνατότθτα παραμετροποίθςθσ των βιβλιοκθκϊν, των device drivers, του ςυςτιματοσ αρχείων, και του ςυςτιματοσ χειριςμοφ των διακοπϊν του ενςωματωμζνου επεξεργαςτι δθμιουργϊντασ ζνα Board support package (BSP). Ο BSP ορίηει, για κάκε επεξεργαςτι, τουσ drivers που ςχετίηονται με τα περιφερειακά που ειςάγονται ςτθν πλατφόρμα υλικοφ, τισ επιλεγμζνεσ βιβλιοκικεσ, τισ ςτάνταρ ςυςκευζσ ειςόδου / εξόδου, τισ ρουτίνεσ εξυπθρζτθςθσ διακοπϊν και άλλα ςχετικζσ επιλογζσ με το λογιςμικό. Επιπροςκζτωσ, μζςα από το SDK projects, ορίηουμε ςε ποιόν επεξεργαςτι κα τρζξει κάκε εφαρμογι που βαςίηεται ςτο BSP. Ραίρνοντασ βιβλιοκικεσ και οδθγοφσ (drivers) από το φάκελο εγκατάςταςθσ, μαηί με custom libraries και drivers για το custom περιφερειακό μασ που παρζχουμε εμείσ ςτο ςφςτθμα, το SDK είναι ςε κζςθ να κάνει compile τθν εφαρμογι μασ και να περιζχει τισ 46

63 βιβλιοκικεσ και τουσ οδθγοφσ ςτο Executable Linked Format (ELF) αρχείο που είναι ζτοιμο να τρζξει ςτθν πλατφόρμα επεξεργαςτι υλικοφ. Το Libgen διαβάηει τισ επιλεγμζνεσ βιβλιοκικεσ και τα processor core (pcore) software description files (Microprocessor Driver Definition (MDD) και driver code) από τισ βιβλιοκικεσ του EDK και από κάκε IP repository. Η επιλογι βιβλιοκθκϊν και οδθγϊν είναι μια διαδικαςία που πρζπει να δϊςουμε αρκετι ςθμαςία. Ππωσ αναφζραμε και πιο πριν, το ςφςτθμα το διαμορφϊνομε όπωσ κζλουμε. Αυτό ςθμαίνει ότι χρειάηεται προςοχι ςτθν επιλογι των βιβλιοκθκϊν αλλά και ςτθν επιλογι των παραμζτρων αυτϊν. Για παράδειγμα αν δθλϊνουμε το ςφςτθμα να χρθςιμοποιιςει κάποια επιπλζον πακζτα βιβλιοκθκϊν αλλά τελικά δεν κάνουμε χριςθ αυτϊν, καταλαμβάνουν πολφτιμο χϊρο ςτθ μνιμθ χωρίσ λόγο. Να αναφζρουμε τζλοσ ότι οι βιβλιοκικεσ που παρζχονται κακϊσ και οι drivers είναι ςε χαμθλό επίπεδο και δουλεφουν με ζναν ςυγκεκριμζνο τρόπο. Δίνεται με αυτό τον τρόπο ςτθν ομάδα ανάπτυξθσ λογιςμικοφ θ δυνατότθτα να ςτιςουν ζνα λειτουργικό με τον τρόπο που κρίνεται καλφτεροσ και πιο αντιπροςωπευτικόσ για τθν εκάςτοτε ανάπτυξθ [7] GNU Compiler Tools Τα GNU Compiler Tools καλοφνται για compiling και linking των εφαρμογϊν για κάκε επεξεργαςτι του ςυςτιματοσ. Οι processor-specific compilers είναι: Ο mb-gcc compiler για τουσ επεξεργαςτζσ MicroBlaze Ο powerpc-aebi-gcc για τουσ επεξεργαςτζσ PowerPC Ασ δοφμε μια προεπιςκόπθςθ των δυνατοτιτων που ζχουν: Ο compiler διαβάηει ζνα ςφνολο από C κϊδικα και επικεφαλίδεσ αρχείων (header files) ι assembler source files για ζναν ςυγκεκριμζνο επεξεργαςτι. Ο linker ςυνδυάηει τισ compiled εφαρμογζσ με τισ επιλεγμζνεσ εφαρμογζσ και παράγει τα εκτελζςιμα ELF αρχεία. Ο Linker διαβάηει επίςθσ τα linker scripts, τα οποία είναι είτε ο default linker script που παράγεται από τα εργαλεία είτε ζνα από αυτά που μποροφμε να παράγουμε εμείσ. Το να παράγουμε εμείσ το link script πολλζσ φορζσ είναι μονόδρομοσ. Ρολλζσ είναι οι περιπτϊςεισ που τα εργαλεία δεν είναι ςε κζςθ να κζςουν τθ ςωςτι τιμι ςτθ ςτοίβα. Αυτό το ςυναντιςαμε ςτθν περίπτωςθ που κζλουμε να κάνουμε χριςθ του δικτφου και τα πακζτα δικτφου είναι αρκετά μεγάλα (τθσ τάξθσ των 60ΚΒ). [7] 47

64 2.5.3 Επιπλϋον δυνατότητεσ Xilinx Microprocessor Debugger Μποροφμε να κάνουμε debug ςτο πρόγραμμά μασ χρθςιμοποιϊντασ ζνα Instruction Set Simulator (ISS), ι πάνω ςτθν πλακζτα Xilinx FPGA φορτϊνοντάσ το μαηί με το bitstream. Το εργαλείο Xilinx Microprocessor Debugger (XDM) διαβάηει το εκτελζςιμο αρχείο ELF του προγράμματοσ. Για debugging ςε φυςικό FPGA, το XMD επικοινωνεί με το ίδιο καλϊδιο που χρθςιμοποιείται για να παραμετροποιιςουμε το FPGA με το bitstream Bitstream Initializer (Bitinit) Το εργαλείο Bitinit αρχικοποιεί τθν on-chip block RAM μνιμθ που είναι ςυνδεδεμζνθ με τον επεξεργαςτι με τισ πλθροφορίεσ λογιςμικοφ. Αυτό το εργαλείο διαβάηει το hardware-only bitstream που παράγεται από τα εργαλεία ISE (system.bit), και παράγει ζνα καινοφργιο bitstream (download.bit) που περιζχει τθν εκτελζςιμθ ενςωματωμζνθ εφαρμογι (ELF) για κάκε επεξεργαςτι. Αυτό το εργαλείο χρθςιμοποιεί το BMM αρχείο, που αρχικά ζχει παραχκεί από το Platgen και ζχει ανανεωκεί από το ISE με τισ πλθροφορίεσ φυςικισ τοποκζτθςθσ τθσ κάκε block RAM ςτο FPGA System ACE File Generator (GenACE) Το XPS παράγει τα Xilinx System ACE configuration files από το FPGA bitstream, το ELF και τα αρχεία δεδομζνων. Το αρχείο ACE που παράγεται μπορεί να χρθςιμοποιθκεί για να παραμετροποιθκεί το FPGA, να αρχικοποιθκεί θ block RAM, να αρχικοποιθκεί θ εξωτερικι μνιμθ με ζγκυρο πρόγραμμα ι δεδομζνα και να γίνει εκκίνθςθ του επεξεργαςτι ςε ζνα παραχκζν ςφςτθμα. Το EDK παρζχει ζνα Tool command language script (genace.tcl ), που χρθςιμοποιείται από το XMD command για να παράγει το αρχείο ACE. Τα αρχεία ACE μποροφν να παραχκοφν για τουσ επεξεργαςτζσ PowerPC και MicroBlaze με το Microprocessor Debug Module (MDM) [7]. 48

65 2.6 Εφαρμογό: Χαρακτηριςμόσ τηλεπικοινωνιακών διατϊξεων Η εφαρμογι που υλοποιείται από το προτεινόμενο ενςωματωμζνο ςφςτθμα είναι ο χαρακτθριςμόσ μίασ τθλεπικοινωνιακισ διάταξθσ. Σκοπόσ μιασ τθλεπικοινωνιακισ διάταξθσ είναι θ μετάδοςθ τθσ πλθροφορίασ από ζνα ςθμείο ςε άλλο. Η μετάδοςθ τθσ πλθροφορίασ με αναλογικό τρόπο δεν είναι αποτελεςματικι λόγω των ςφαλμάτων που ειςάγει το μζςο επικοινωνίασ. Ζτςι θ μετάδοςθ γίνεται με ψθφιακό τρόπο, θ πλθροφορία προσ μετάδοςθ μετατρζπεται ςε διακριτζσ τιμζσ και αυτζσ μεταδίδονται ςτο κανάλι. Αυτι είναι μία μόνο διαμόρφωςθ που μπορεί να γίνει. Ο παραλιπτθσ όμωσ, ανάλογα με το φυςικό μζςο δεν λαμβάνει πάντα το ςωςτό ςιμα. Μια τθλεπικοινωνιακι διάταξθ ζχει τθ μορφι που παρουςιάηεται ςτθν Εικόνα 2.4. Χεθηαθή Πεγή Encoder Καλάιη επηθνηλσλίαο Παξαιήπηεο Decoder Εικόνα 2.4 Μοντζλο τηλεπικοινωνιακήσ διάταξησ Το κανάλι μετάδοςθσ όμωσ δεν είναι ιδανικό, βάηει κόρυβο με τρόπο που δεν μπορεί να προβλεφτεί και να αποφευχκεί. Χρειαηόμαςτε επομζνωσ ζνα τρόπο να ανιχνεφουμε τα λάκθ και αν είναι δυνατόν να τα διορκϊνουμε. Ρροσ αυτιν τθν κατεφκυνςθ βρίςκονται οι κϊδικεσ LDPC (low density parity check code). Στο μινυμα προσ μετάδοςθ βάηουν επιπλζον πλθροφορία με ςκοπό να είναι θ δυνατι θ αναγνϊριςθ του ςφάλματοσ από τον decoder και θ ανάκτθςθ του αρχικοφ μθνφματοσ. Η λογικι είναι θ εξισ. Η κωδικοποίθςθ γίνεται με τζτοιο τρόπο που θ κάκε λζξθ-κϊδικασ να διαφζρει από τισ άλλεσ όςο το δυνατόν περιςςότερο, να ζχει δθλαδι μεγάλθ απόςταςθ. Υπάρχουν και bit ιςοτιμίασ που βοθκάνε τον αποκωδικοποιθτι να ανιχνεφςει τισ λζξεισ ςτισ οποίεσ ζγινε λάκοσ. Στθν πλευρά του αποκωδικοποιθτι, ανιχνεφεται ζνα ςφάλμα. Στθ ςυνζχεια με βάςθ τθ λζξθ-κωδικό που ζλαβε γίνεται θ αντιςτοίχθςθ ςτθ λζξθ που είναι πιο κοντά ςε αυτι. Με αυτό τον τρόπο, ςφάλματα που τυχόν ςυμβαίνουν, μποροφν να διορκϊνονται. Υπάρχει όμωσ περίπτωςθ να κάνει αντιςτοίχιςθ ςε λζξθ που ςτθν πραγματικότθτα δεν είναι θ αναμενόμενθ. Να ζχει δθλαδι αλλοιωκεί τόςο το ςιμα που να ςυγκλίνει ςε λζξθ μθ επικυμθτι. 49

66 Το κανάλι προςκζτει ζνα κόρυβο. Αυτόσ ο κόρυβοσ ζχει ςυγκεκριμζνα χαρακτθριςτικά, είναι λευκόσ κόρυβοσ με κανονικι κατανομι. Το ςιμα δθλαδι μετά από το κανάλι είναι αδφνατο να προβλεφτεί, αλλά μπορεί μόνο να βρεκεί θ ςυνάρτθςθ πυκνότθτασ πικανότθτασ θ οποία ακολουκεί κατανομι Gauss. Ζνα από τα ηθτοφμενα ςτο ςχεδιαςμό τθλεπικοινωνιακϊν διατάξεων και ειδικότερα ςυςτθμάτων διόρκωςθσ λακϊν είναι θ εφρεςθ κωδικϊν που ζχουν τζτοια χαρακτθριςτικά που να γίνεται όςο το δυνατόν μεγαλφτερθ διόρκωςθ λακϊν και μετάδοςθ με το μζγιςτο δυνατό ρυκμό. Η παροφςα διπλωματικι δεν επικεντρϊνεται τόςο ςτθν τθλεπικοινωνιακι διάταξθ όςο ςτα χαρακτθριςτικά που αναφζρονται ςτθν ενότθτα 4.1. Μποροφμε δθλαδι να βάλουμε οτιδιποτε άλλο ςτθ κζςθ αυτοφ και γενικά να το αντιμετωπίςουμε ωσ ζνα black box /custom IP με ςυγκεκριμζνθ διεπαφι με τον ζξω κόςμο. 2.7 ChipScope και υπϊρχουςεσ λύςεισ Το ChipScope είναι κι αυτό ζνα μζροσ του Xilinx ISE. Ππωσ θ πυκνότθτα των FPGA ςυςκευϊν μεγαλϊνει, ζτςι μεγαλϊνει και θ ανάγκθ μαηί με το υλικό μασ, να κατεβαίνουν και τα απαραίτθτα devices για δοκιμι και επιβεβαίωςθ ορκισ λειτουργίασ. Ουςιαςτικά είναι ζνασ ενςωματωμζνοσ logic analyzer που κατεβαίνει μαηί με το υλικό μασ. Λογικό είναι να καταλαμβάνει χϊρο και οριςμζνεσ φορζσ να προςκζτει και μία μικρι κακυςτζρθςθ ςτο κρίςιμο μονοπάτι. Η διαδικαςία να κατεβάηουμε το hardware ςτο FPGA είναι θ μία υπόκεςθ. Το άλλο όμωσ μεγαλφτερο πρόβλθμα που υπάρχει είναι πϊσ μποροφμε να επαλθκεφςουμε ότι όντωσ δουλεφει ςωςτά. Υπάρχουν διάφορεσ προςεγγίςεισ ςε αυτό το κζμα και υπάρχει μία ολόκλθρθ επιςτιμθ από πίςω. Το πιο απλό που μποροφμε να κάνουμε είναι να ανακζςουμε τισ εξόδουσ ςε κάποιο LED του FPGA και να παρατθροφμε από εκεί τθν ζξοδο του ςυςτιματοσ. Αυτό όμωσ ζχει πολλοφσ περιοριςμοφσ. Ρρϊτα απ όλα τα LEDs ςε ζνα FPGA είναι περιοριςμζνα. Δεν μποροφμε για παράδειγμα να ζχουμε 32 LEDs για ζνα παρατθροφμε ζναν ακροιςτι. Το άλλο και ςθμαντικότερο πρόβλθμα αυτισ τθσ προςζγγιςθσ είναι θ ταχφτθτα. Το ανκρϊπινο μάτι δεν μπορεί για παράδειγμα να παρατθρεί ζνα LED να αναβοςβινει με ταχφτθτα 100MHz. Σε αυτι τθν περίπτωςθ το μόνο που κα βλζπαμε είναι το LED μόνιμα αναμμζνο αλλά με λιγότερθ ζνταςθ. Επίςθσ δεν μποροφμε να παρατθροφμε πολλά LEDs ταυτόχρονα και να βγάηουμε αποτελζςματα ταυτόχρονα. Μια άλλθ προςζγγιςθ που υπάρχει είναι να χρθςιμοποιιςουμε logic analyzer. Σε αυτι τθν περίπτωςθ πρζπει να λάβουμε υπόψθ μασ και το κόςτοσ του Logic analyzer που πολλζσ φορζσ είναι μεγάλο. Επίςθσ κακϊσ προχωράει θ τεχνολογία, οι ταχφτθτεσ των FPGAs βελτιϊνονται με αποτζλεςμα ο Logic Analyzer να μθν είναι ςε κζςθ να παρακολουκιςει τισ εξόδουσ. Το άλλο πρόβλθμα που υπάρχει εδϊ είναι θ φυςικι ςφνδεςθ των pins με τον Logic Analyzer. Χρειαηόμαςτε καλϊδια που να ζχει ςυγκεκριμζνεσ προδιαγραφζσ και να κάνουμε 50

67 εμείσ τισ ςυνδζςεισ τόςο όςο αφορά το UCF αρχείο του ςυςτιματοσ, όςο και τθ φυςικι ςφνδεςθ των pins και τθν αντιςτοίχιςθ αυτϊν ςτον Logic Analyzer. Αυτό ακριβϊσ το πρόβλθμα ικελε να αντιμετωπίςει θ Xilinx με τθν ειςαγωγι του ChipScope. Ουςιαςτικά είναι ζνασ logic Analyzer που τοποκετείται εντόσ του chip. Με αυτόν τον τρόπο γίνεται εφκολθ θ παρατιρθςθ του ςυςτιματοσ και θ επιβεβαίωςθ λειτουργίασ. Εικόνα 2.5 ChipScope System Block Diagram Η παρουςία όμωσ υπολογιςτι ςε αυτιν τθν περίπτωςθ είναι απαραίτθτθ αφοφ θ μιςι δουλειά γίνεται ςτο FPGA θ άλλθ μιςι όμωσ γίνεται ςτον υπολογιςτι. Και αυτι όμωσ θ προςζγγιςθ ζχει περιοριςμοφσ. Αν δοφμε λιγάκι τον τρόπο που λειτουργεί το ChipScope, μποροφμε να καταλάβουμε και τουσ περιοριςμοφσ που υπάρχουν. Ουςιαςτικά αυτό που γίνεται είναι να βάηει ζνα εξελιγμζνο κομμάτι HDL που παρακολουκεί τισ εξόδουσ του ςυςτιματοσ ι ενδεχομζνωσ και εςωτερικά ςιματα, τα οποία όμωσ επιβάλλεται να είναι buffered. Στθ ςυνζχεια παίρνει αυτά τα δεδομζνα και τα αποκθκεφει ςε μία μνιμθ. Η μνιμθ όμωσ αυτι ζχει περιοριςμζνο μζγεκοσ και κατά ςυνζπεια μπορεί να ςυλλζξει περιοριςμζνα δείγματα. Στθ ςυνζχεια αυτά τα δείγματα ςτζλνονται ςτον υπολογιςτι όπου μποροφμε να τα παρακολουκιςουμε με ζναν γραφικό τρόπο τα αποτελζςματα. Ουςιαςτικά και αυτό είναι μια ενςωματωμζνθ υλοποίθςθ. Υπάρχουν κάποια κομμάτια που είναι φτιαγμζνα από πιο πριν και ωσ περιφερειακό ζχουν το JTAG. Ρεριοριςμζνα πλαίςια τιμϊν ςυνεπάγεται αυτόματα περιοριςμζνθ παρατιρθςθ του ςυςτιματοσ. 51

68 Μια άλλθ λφςθ που υπάρχει και χρθςιμοποιείται ευρφτατα είναι θ αξιοποίθςθ τθσ ςειριακισ κφρασ. Το αναγκαίο υλικό υλοποιείται εφκολα ςε HDL και υπάρχει ζνασ ςχετικά εφκολοσ τρόποσ να εξάγουμε τα δεδομζνα και να τα αποκθκεφουμε ενδεχομζνωσ ςε αρχεία. Επιτρζπει τθ ςυνεχι μεταφορά δεδομζνων αλλά θ παραμετροποίθςθ δεν είναι τόςο εφκολθ υπόκεςθ. Επίςθσ τα δεδομζνα από τον παράλλθλο τρόπο που παράγονται πρζπει να πολυπλζκονται για να μπορζςει να γίνει μεταφορά μζςω τθσ ςειριακι κφρασ. Το άλλο πρόβλθμα που υπάρχει εδϊ είναι και πάλι θ ταχφτθτα. Η ςειριακι κφρα ζχει χαμθλό ρυκμό μεταφοράσ δεδομζνων και αναλόγωσ τθν υλοποίθςθ αυτόσ ο ρυκμόσ δεν είναι επαρκισ για να μεταφζρει τα δεδομζνα. Ζνα άλλο κζμα που υπάρχει με αυτόν τον τρόπο μεταφοράσ είναι το γεγονόσ ότι δεν υπάρχουν εξελιγμζνοι τρόποι εξαςφάλιςθσ αςφαλοφσ μεταφοράσ πζρα από το τθν ιςοτιμία. Πποιοσ και αν επιλεγεί να είναι ο τρόποσ υπάρχει και άλλο ζνα πρόβλθμα. Αυτό είναι θ ειςαγωγι παραμζτρων ςτο ςφςτθμα. Το ChipScope δεν υποςτθρίηει κάτι τζτοιο ςτα περιςςότερα Boards. Υπάρχει και το VIO (virtual input/output) αλλά ακόμα αναπτφςςεται και ςχετικά πρόςφατα. Ρζρα από τθ ςειριακι κφρα απαιτείται ζνα πιο εξελιγμζνο ςφςτθμα που να επιτρζπει τθν αμφίδρομθ επικοινωνία. Ο τρόποσ που χρθςιμοποιείται αρκετά είναι θ ειςαγωγι παραμζτρων μζςω των switches που ζχει το board. Μζςω των διακοπτϊν μποροφμε είτε να ειςάγουμε απευκείασ τιμζσ είτε να κάνουμε κάποια αντιςτοίχθςθ ςτθ μνιμθ και να ειςάγονται από εκεί δεδομζνα που είναι προ-αποκθκευμζνα. Στθν εφαρμογι-ςτόχο καλοφμαςτε να βελτιςτοποιιςουμε και να αντιμετωπίςουμε αυτά τα προβλιματα. Το ςφςτθμα ωσ ζχει ςε υλοποίθςθ αμιγϊσ υλικοφ, διαβάηει παραμζτρουσ μζςω των διακοπτϊν. Τρζχει το πείραμα και ςτθν περίπτωςθ που βρεκεί κάποιο λάκοσ frame, αυτό αποκθκεφεται ςε μια τοπικι μνιμθ. Στθ ςυνζχεια, παίρνουμε τα δεδομζνα αυτισ τθσ μνιμθσ μζςω του ChipScope. Στθ ςυνζχεια ςτζλνουμε reset ςτθ μνιμθ για να μπορεί να γραφτεί εκ νζου. Αυτό όμωσ δεν είναι ιδιαίτερα λειτουργικό. Αν θ μνιμθ είναι γραμμζνθ, δεν μποροφν να αποκθκευκοφν καινοφρια frames και χάνουμε πολφτιμεσ, ςπάνιεσ πλθροφορίεσ. Επίςθσ, λόγω του ChipScope, κα πρζπει κάποιοσ, ςε ςχετικά ςφντομο διάςτθμα, να ελζγχει αν υπάρχουν καινοφργια δεδομζνα ςτο ChipScope. Αυτι θ διαδικαςία μπορεί να αυτοματοποιθκεί κζτοντασ trigger τιμζσ για να γίνει θ δειγματολθψία. Η διαδικαςία όμωσ αποκικευςθσ των αρχείων δεν μπορεί να γίνει με κάποιον παραδοςιακό τρόπο, πχ μζςα από το πρόγραμμα τουλάχιςτον ςτισ τωρινζσ εκδόςεισ του προγράμματοσ. Εκτόσ όλων αυτϊν, πρζπει να υπάρχει φυςικι επαφι με το FPGA για να μποροφμε τόςο να κακορίηουμε παραμζτρουσ όςο και να κάνουμε reset ςτθ μνιμθ για να μπορεί να δεχτεί καινοφργιεσ τιμζσ. Αυτά τα προβλιματα αποτζλεςαν τθν ζμπνευςθ για τθ διπλωματικι και για τον τρόπο με τον οποίο μποροφν πειραματικζσ διατάξεισ που ζχουν ωσ αντικείμενο τον χαρακτθριςμό και τθν επαλικευςθ τθλεπικοινωνιακϊν, και όχι μόνο, διατάξεων να αυτοματοποιθκοφν. Αρχικόσ ςτόχοσ ιταν να μπορζςει να υπάρξει ζνα ςφςτθμα που να ζχει ςφςτθμα αρχείων και να μπορεί να αποκθκεφει τα αποτελζςματα εκεί. Στθν πορεία όμωσ υπιρξαν πολλά προβλιματα και μελετικθκαν πολλζσ διαφορετικζσ προςεγγίςεισ. Η κάκε ςχεδιαςτικι απόφαςθ που πιραμε λιφκθκε κατόπιν διερεφνθςθσ όπωσ κα φανεί και ςτα επόμενα κεφάλαια [54] [53] [52] [32]. 52

69 3 Ενςωματωμϋνα ςυςτόματα Βαςικϊ ςτοιχεύα και λειτουργύεσ Στο προθγοφμενο κεφάλαιο, ζγινε μια ειςαγωγι ςτα εργαλεία και ςτισ δυνατότθτεσ που αυτά ζχουν. Ραρουςιάςαμε το ςυνολικό ςφςτθμα που υπάρχει και πάνω ςτο οποίο κα βαςιςτεί θ ςχεδίαςθ. Ραρουςιάςαμε τον τρόπο με τον οποίο γίνεται εξαγωγι δεδομζνων και τα προβλιματα που ζχει αυτόσ ο τρόποσ. Σε αυτό το κεφάλαιο, αρχικά κα κάνουμε μια παρουςίαςθ των boards τα οποία ζχουμε ςτθ διάκεςι μασ κακϊσ και των δυνατοτιτων που αυτά ζχουν. Στθ ςυνζχεια κα προχωριςουμε ςτθν παρουςίαςθ των καναλιϊν επικοινωνίασ, των περιφερειακϊν και των δυνατοτιτων που ζχουν. Η περιγραφι που γίνεται εδϊ είναι πολφ ςθμαντικι για να κατανοιςουμε τα μζςα που ζχουμε και πϊσ μποροφμε να τα αξιοποιιςουμε για να ζχουμε τα βζλτιςτα αποτελζςματα. Το αναπτυξιακό ςφςτθμα το οποίο επιλζχκθκε για τθν υλοποίθςθ και δοκιμι βαςίηεται ςε Virtex5, θ ανάπτυξθ όμωσ ζγινε και ςε άλλα δφο για λόγουσ που αναλφονται ςε επόμενο κεφάλαιο. 3.1 Βαςικϊ ςτοιχεύα ενόσ αναπτυξιακού ςυςτόματοσ Στθν ενότθτα αυτι αναφζρουμε τα βαςικά ςτοιχεία των αναπτυξιακϊν ςυςτθμάτων που ζχουμε ςτθ διάκεςι μασ. Στθ διπλωματικι χρθςιμοποιιςαμε τα αναπτυξιακά boards Spartan 3e, Virtex 4 ML402, Virtex 5 ML507. Ο λόγοσ που δουλζψαμε ςε αυτά τα ςυγκεκριμζνα είναι τα περιφερειακά που προςφζρουν. Το μεγαλφτερο μζροσ τθσ δουλειάσ και των δοκιμϊν που διεξιγαμε ζγινε ςτο Spartan3E. Αυτό οφείλεται ςτο γεγονόσ ότι ιταν διακζςιμο και ότι είναι το πιο μικρό όςο αφορά τθν απόδοςθ και τισ ικανότθτεσ. Ζτςι, όςο αφορά τισ βελτιςτοποιιςεισ του κϊδικα καλφτερα αποτελζςματα ςτο Spartan ςυνεπάγεται και καλφτερα αποτελζςματα ςτα άλλα δφο. Το ML402 χρθςιμοποιικθκε για να ελζγξουμε και να μετριςουμε ταχφτθτεσ όςο αφορά τθν CompactFlash. Το ML507 ιταν το πιο δυνατό και το μόνο που διζκετε FPGA με PowerPC. Επίςθσ είναι το μόνο που μπορεί να φιλοξενιςει το ςυνολικό ςφςτθμα που από μόνο του καταλαμβάνει το 75 % του χϊρου και απαςχολεί ςχεδόν όλα τα DSP48. Επίςθσ είναι το μόνο που διακζτει DDR2 και εξελιγμζνο ελεγκτι μνιμθσ. Ο χρόνοσ όμωσ ςφνκεςθσ του ςυνολικοφ ςυςτιματοσ ιταν τόςο μεγάλοσ που κρίκθκε απαραίτθτο να εργαςτοφμε ςτο μικρότερο Spartan3E με μοντζλο του ςυςτιματοσ και όχι το ίδιο το ςφςτθμα. Στθ ςυνζχεια μεταςχθματίςαμε με τζτοιο τρόπο τον κϊδικα ϊςτε να μπορεί να εκτελείται από τον MicroBlaze αλλά και από τον PowerPC. Ασ δοφμε ςτθ ςυνζχεια τα boards που χρθςιμοποιιςαμε. 53

70 3.1.1 Virtex 4 ML402 Evaluation Platform Το ςυγκεκριμζνο board ζχει το XC4VSX35-FF FPGA.To πρϊτο μζροσ του κωδικοφ δθλϊνει ποιο FGPA είναι. Το δεφτερο μζροσ δθλϊνει το package ςτο οποίο βρίςκεται ενϊ το τρίτο μζροσ είναι ζνασ ςυντελεςτισ που χαρακτθρίηεται από τθν ταχφτθτα του. Ζχει λογικά κελιά που μεταφράηονται ςε Slices, μζγιςτθ κατανεμθμζνθ μνιμθ 240 Kb και 192 XtremeDSP. Αυτά είναι Slices ειδικά ςχεδιαςμζνα για πράξεισ DSP. Ριο ςυγκεκριμζνα ζχουν ζναν 18-bit x 18 bit πολλαπλαςιαςτι, πολλαπλαςιαςτι- ςυγκριτι, ι πολλαπλαςιαςτι-ακροιςτι. Υποςτθρίηουν επίπεδα pipeline για βελτιωμζνεσ επιδόςεισ. Η μζγιςτθ ςυχνότθτά τουσ αγγίηει τα 500 MHz. Εκτόσ από τα DSP, ζχει 192 x 18 Kb block ram και ςυνολικι μζγιςτθ ram 3456 Kb. Ζχει 8 DSM που είναι μονάδεσ που μποροφν να αλλάηουν το ρολόι ειςόδου του ςυςτιματοσ (πολλαπλαςιαςμό και διαίρεςθ του ρολογιοφ ειςόδου του DCM) ι και αλλαγι τθσ μορφισ, του skew κ.α. Αυτζσ οι μονάδεσ είναι πολφ χριςιμεσ αφοφ κάποια μζρθ του ςυςτιματοσ λειτουργοφν με διαφορετικό ρολόι ςε ςχζςθ με το ρολόι που προςφζρει το board. Ζχει ακόμα 4 PMCDs. Τζλοσ ζχει ςυνολικά 11 banks με ειςόδουσ εξόδουσ. Εδϊ όμωσ μασ ενδιαφζρει και τι υπάρχει από περιφερειακά πάνω ςτθν πλακζτα. Ζχουμε λοιπόν: 64-MB DDR SDRAM, 32-bit interface running up to 266-MHz data rate One differential clock input pair and differential clock output pair with SMA connectors One 100-MHz clock oscillator (socketed) plus one extra open 3.3V clock oscillator socket General purpose DIP switches (ML401/ML402 platform), LEDs, and push buttons Expansion header with 32 single-ended I/O, 16 LVDS capable differential pairs, 14 spare I/Os shared with buttons and LEDs, power, JTAG chain expansion capability, and IIC bus expansion Stereo AC97 audio codec with line-in, line-out, 50-mW headphone, and microphonein (mono) jacks RS-232 serial port 16-character x 2-line LCD display One 4-Kb IIC EEPROM VGA output:140 MHz / 24-bit video DAC PS/2 mouse and keyboard connectors System ACE CompactFlash configuration controller with Type I/II CompactFlash Connector ZBT synchronous SRAM 9 Mb on 32-bit data bus with four parity bits Intel StrataFlash (or compatible) linear flash chips (8 MB) 10/100/1000 tri-speed Ethernet PHY transceiver USB interface chip (Cypress CY7C67300) with host and peripheral ports Xilinx XC95144XL CPLD to allow linear flash chips to be used for FPGA configuration 54

71 Xilinx XCF32P Platform Flash configuration storage device JTAG configuration port for use with Parallel Cable III or Parallel Cable IV cable Onboard power supplies for all necessary voltages 3A AC adapter Power indicator LED Το Block διάγραμμα του FPGA παρουςιάηεται ςτθν Εικόνα 3.1. Εικόνα 3.1 ML402 Evaluation Platform Block Diagram Στθν Εικόνα 3.2 που ακολουκεί παρουςιάηεται το πραγματικό FPGA [10]. 55

72 Εικόνα 3.2 Xilinx Virtex 4 ML Spartan 3E Starter kit Το Spartan 3E starter kit είναι ζνα ςχετικά μικρό και φκθνό board. Σε διάφορεσ αναλφςεισ που κάναμε όςο αφορά το ενςωματωμζνο κομμάτι ιταν θ πρϊτθ μασ επιλογι. Ρρϊτα απ όλα λόγω των περιοριςμζνων πόρων που ζχει θ ςφνκεςθ μπορεί να γίνει πιο γριγορα ςε ςχζςθ με τα άλλα board. Ζπειτα, λόγο των περιοριςμζνων δυνατοτιτων τυχόν ςφάλματα που μποροφν να προκφψουν ςτο επίπεδο τθσ εφαρμογισ εμφανίηονται πιο γριγορα οπότε μποροφν και να διορκωκοφν άμεςα. Ζνα άλλο προτζρθμα αυτοφ του Board ιταν θ ικανότθτα να ςυνδζεται απευκείασ με τον υπολογιςτι χωρίσ τθ χριςθ του Platform Cable USB. Λόγω αυτοφ του γεγονότοσ θ μεταφορά αρχείων μποροφςε να γίνει πιο γριγορα. Ασ δοφμε ςτθ ςυνζχεια τα χαρακτθριςτικά του. Το FPGA είναι το XC3S500E-FGG320-4 ακολουκεί τθν ίδια λογικι με τθν παραπάνω ςτθν ονοματολογία. Ζχει 500Κ πφλεσ ςυςτιματοσ που αντιςτοιχοφν ςε λογικά slices. Η κατανεμθμζνθ RAM φτάνει τα 73Kbits. Ζχει 360Kbits block RAM. Ρεριζχει 20 πολλαπλαςιαςτζσ που ζχουν δφο κφρεσ των 18-bits. Ζχει 4 DCMs. Τζλοσ ο μζγιςτοσ αρικμόσ των pin που είναι διακζςιμα για χριςθ είναι 232 ενϊ τα maximum differential I/O pairs είναι 92. Το Spartan3E παρουςιάηεται ςτθν Εικόνα

73 Εικόνα 3.3 Xilinx Spartan3E Starter Kit Ασ δοφμε ςτθ ςυνζχεια τι ζχει από περιφερειακά και από ειςόδουσ/εξόδουσ [9]. Xilinx XC3S500E Spartan-3E FPGA o Up to 232 user-i/o pins o 320-pin FBGA package o Over 10,000 logic cells Xilinx 4 Mbit Platform Flash configuration PROM Xilinx 64-macrocell XC2C64A CoolRunner CPLD 64 MByte (512 Mbit) of DDR SDRAM, x16 data interface, 100+ MHz 16 MByte (128 Mbit) of parallel NOR Flash (Intel StrataFlash) o FPGA configuration storage o MicroBlaze code storage/shadowing 16 Mbits of SPI serial Flash (STMicro) o FPGA configuration storage o MicroBlaze code shadowing 2-line, 16-character LCD screen PS/2 mouse or keyboard port 57

74 VGA display port 10/100 Ethernet PHY (requires Ethernet MAC in FPGA) Two 9-pin RS-232 ports (DTE- and DCE-style) On-board USB-based FPGA/CPLD download/debug interface 50 MHz clock oscillator SHA-1 1-wire serial EEPROM for bitstream copy protection Hirose FX2 expansion connector Three Digilent 6-pin expansion connectors Four-output, SPI-based Digital-to-Analog Converter (DAC) Two-input, SPI-based Analog-to-Digital Converter (ADC) with programmable-gain pre-amplifier ChipScope SoftTouch debugging port Rotary-encoder with push-button shaft Eight discrete LEDs Four slide switches Four push-button switches SMA clock input 8-pin DIP socket for auxiliary clock oscillator Virtex-5 ML507 Evaluation Platform Το ML507 ιταν το μεγαλφτερο και το πιο γριγορο από τα FPGA που είχαμε ςτθ διάκεςι μασ. Ήταν το μόνο που διακζτει FPGA με PowerPC. Σε αυτό μόνο χωροφςε θ πειραματικι διάταξθ για τθν οποία αναπτφχκθκε θ παροφςα διπλωματικι. Φςτερα από ανάπτυξθ ςτα δφο άλλα FPGA περάςαμε ςε αυτό και ουςιαςτικά ιταν κάτι ςαν τθ γραμμι παραγωγισ για το τελικό προϊόν. Δεν ιταν πάντα διακζςιμο για ανάπτυξθ αυτό το Board γιατί ιδθ ζτρεχε θ πειραματικι διάταξθ ςε ςυνδυαςμό με το ChipScope. Ζπρεπε δθλαδι να κάνουμε μόνο επιβεβαίωςθ λειτουργίασ ςε αυτό το board και όχι ανάπτυξθ. Επίςθσ λόγω τθσ φφςθσ τθσ πειραματικισ διάταξθσ για χαρακτθριςμό τθλεπικοινωνιακϊν διατάξεων ζπρεπε να μποροφμε να εγγυθκοφμε τθν ορκι λειτουργία όλων των υπόλοιπων περιφερειακϊν και του PowerPC. Οι επιδόςεισ όςο αφορά τθν ταχφτθτα τόςο του software όςο και του hardware ιταν ςαφϊσ ανϊτερεσ. Ασ δοφμε ςτθ ςυνζχεια τα χαρακτθριςτικά του. Ρρϊτα απ όλα το Virtex 5 είναι ςε μικτότερθ λικογραφία και τα slices ζχουν πλζον αλλάξει από 4-input ςε 6-input. Αυτό ςυνεπάγεται ότι θ ταχφτθτα και ο χϊροσ που καταλαμβάνει θ λογικι μασ είναι καλφτερα ςε ςχζςθ με προθγοφμενεσ τεχνολογίεσ. Το FPGA είναι το XC5VFX70T-1FFG1136. Ζχει slices και 820 Kb distributed RAM. Ρεριζχει 128 DPS48 τα οποία είναι 25 x 18 two complement πολλαπλαςιαςτζσ, με προαιρετικό pipeline και ζνα προαιρετικό 48-bit accumulator. Ζχει 296 x 18Kb block RAM τα οποία μποροφν να ςυμπεριφερκοφν ωσ 148x36Kb και μασ δίνει ςυνολικά 5328 Kb μζγιςτθ Block RAM. Ρεριζχει 6 CMTs κακζνα από τα οποία περιζχει δφο DCMs και ζνα PLL. Ζχει ζνα PowerPC ζτοιμο προσ χριςθ. Ζχει 3 58

75 endpoint Blocks για PCI Express και 4 Ethernet MACs O μζγιςτοσ αρικμόσ RocketIO είναι 16. Ο ςυνολικόσ αρικμόσ τον I/O banks είναι 19 με μζγιςτο αρικμό Ι/Ο προσ τον χριςτθ τα 640. Στθ ςυνζχεια παρουςιάηεται το Block διάγραμμα του evaluation platform. Τα χαρακτθριςτικά του είναι: Εικόνα 3.4 Virtex-5 ML507 Evaluation Platform Block Diagram Xilinx Virtex-5 FPGA XC5VFX70T-1FFG1136 (ML507) Two Xilinx XCF32P Platform Flash PROMs (32 Mb each) for storing large device configurations Xilinx System ACE CompactFlash configuration controller with Type I CompactFlash connector Xilinx XC95144XL CPLD for glue logic 64-bit wide, 256-MB DDR2 small outline DIMM (SODIMM), compatible with EDK supported IP and software drivers Clocking o Programmable system clock generator chip o One open 3.3V clock oscillator socket o External clocking via SMAs (two differential pairs) General purpose DIP switches (8), LEDs (8), pushbuttons, and rotary encoder 59

76 Expansion header with 32 single-ended I/O, 16 LVDS-capable differential pairs, 14 spare I/Os shared with buttons and LEDs, power, JTAG chain expansion capability, and IIC bus expansion Stereo AC97 audio codec with line-in, line-out, 50-mW headphone, microphone-in jacks, SPDIF digital audio jacks, and piezo audio transducer RS-232 serial port, DB9 and header for second serial port 16-character x 2-line LCD display One 8-Kb IIC EEPROM and other IIC capable devices PS/2 mouse and keyboard connectors Video input/output o Video input (VGA) o Video output DVI connector (VGA supported with included adapter) ZBT synchronous SRAM, 9 Mb on 32-bit data bus with four parity bits Intel P30 StrataFlash linear flash chip (32 MB) Serial Peripheral Interface (SPI) flash (2 MB) 10/100/1000 tri-speed Ethernet PHY transceiver and RJ-45 with support for MII, GMII, RGMII, and SGMII Ethernet PHY interfaces USB interface chip with host and peripheral ports Rechargeable lithium battery to hold FPGA encryption keys JTAG configuration port for use with Parallel Cable III, Parallel Cable IV, or Platform USB download cable Onboard power supplies for all necessary voltages Temperature and voltage monitoring chip with fan controller 6A AC adapter Power indicator LED MII, GMII, RGMII, and SGMII Ethernet PHY Interfaces GTP/GTX: SFP (1000Base-X) GTP/GTX: SMA (RX and TX Differential Pairs) GTP/GTX: SGMII GTP/GTX: PCI Express (PCIe ) edge connector (x1 Endpoint) GTP/GTX: SATA (dual host connections) with loopback cable GTP/GTX: Clock synthesis ICs Mictor trace port BDM debug port Soft touch port System monitor Το ML507 παρουςιάηεται ςτθν Εικόνα 3.5 [11]. 60

77 Εικόνα 3.5 Xilinx Virtex-5 ML507 Evaluation Platform 3.2 Δύαυλοι επικοινωνύασ (Buses) Τα κανάλια επικοινωνίασ είναι από τα πιο ςθμαντικά κομμάτια ςτθν ανάπτυξθ ενόσ ςυςτιματοσ. Καταρχιν κακορίηουν το εφροσ τθσ ταχφτθτασ επικοινωνίασ. Ζπειτα κακορίηουν τον τρόπο με τον οποίο γίνονται οι ςυνδζςεισ. Επιπλζον, από τθν άποψθ υλικοφ κακορίηουν το interface που πρζπει να ζχει μια ςυςκευι για να μπορεί να ςυνδεκεί ςτο κανάλι. Αυτό αποτελείται από το standard τθσ ςφνδεςθσ που ςε πολλζσ περιπτϊςεισ ζχει και διαφορετικζσ εκδόςεισ και από το πρωτόκολλο που χρθςιμοποιείται για τθν επικοινωνία, ουςιαςτικά γίνεται μια ςφμβαςθ για να μιλάνε όλοι οι εμπλεκόμενοι τθν ίδια γλϊςςα για να μποροφν να καταλαβαίνει ο ζνασ τον άλλον. Υπάρχουν πολλϊν ειδϊν κανάλια επικοινωνίασ που μποροφν να χωριςτοφν με διάφορουσ τρόπουσ. Μποροφν να χωριςτοφν με βάςθ το εφροσ ταχφτθτασ που ζχουν. Μπορεί να γίνει διαχωριςμόσ με βάςθ τθν αρχιτεκτονικι πρωτοκόλλου που ακολουκοφν. Μπορεί να γίνει ακόμα διαχωριςμόσ όςον αφορά ςτον τρόπο ςφνδεςθσ του φυςικοφ μζςου, αν δθλαδι χρθςιμοποιοφν άλλο φυςικό μζςο για ζλεγχο και άλλο για δεδομζνα ι ακόμα και με βάςθ το εφροσ του φυςικοφ μζςου επικοινωνίασ. Είχαμε αναλφςει ςε προθγοφμενθ ενότθτα κάποια βαςικά χαρακτθριςτικά του καναλιοφ επικοινωνίασ. Σε αυτι τθν ενότθτα κα γίνει μία περιγραφι των καναλιϊν που χρθςιμοποιιςαμε και των βαςικϊν χαρακτθριςτικϊν του κακενόσ. 61

78 3.2.1 Local Memory Bus Αυτό το κανάλι επικοινωνίασ ςυναντάται ςτθν περίπτωςθ του MicroΒlaze. Συναντάται δθλαδι εκεί όπου δεν ζχουμε ι δεν κζλουμε ζναν εξελιγμζνο τρόπο επικοινωνίασ. Το Local Memory Bus (LMB) είναι ζνα γριγορο, τοπικό κανάλι για τθ ςφνδεςθ των επεξεργαςτϊν MicroBlaze των κυρϊν instruction και data με περιφερειακά υψθλισ ταχφτθτασ και πρωταρχικά με on-chip Block RAM (BRAM). Τα κφρια χαρακτθριςτικά είναι: Αποτελεςματικό, single master κανάλι που δεν απαιτεί διαιτθτι. Ξεχωριςτό read και write data bus Χαμθλι χρθςιμοποίθςθ πόρων του FPGA. Ο MicroBlaze χρθςιμοποιεί δφο τζτοια κανάλια LMB όπωσ φαίνεται ςτθν Εικόνα 3.6. Το ςφςτθμα παριςτάνει τθ χριςθ ενόσ I και ενόσ D LMB καναλιοφ που ςυνδζονται με μία dual-port BRAM μζςω ξεχωριςτϊν LMB BRAM interface controllers. Αυτι είναι μια ςυνικθσ διάταξθ που χρθςιμοποιείται κακϊσ επιτυγχάνει παράλλθλθ μεταφορά εντολϊν και δεδομζνων με ςχετικά μικρζσ απαιτιςεισ ςε υλικό. [22] 62

79 Εικόνα 3.6 MicroBlaze Processor System Using Two LMB Modules DDR2 Ελεγκτόσ μνόμησ για τον PowerPC 440 Στθν περίπτωςθ που χρθςιμοποιοφμε το PowerPC 440, ο τρόποσ ςφνδεςθσ με τθ μνιμθ είναι διαφορετικόσ. Εδϊ ζχουμε υποςτιριξθ των DDR2 με πολφ μεγαλφτερεσ ταχφτθτεσ και μεγαλφτερεσ χωρθτικότθτεσ. Ο επεξεργαςτισ ςε αυτιν τθν περίπτωςθ ςυνδζεται με το Memory controller Interface το οποίο παρζχει τθ διεπαφι για τθ ςφνδεςθ με τθν μνιμθ DDR2. Τα βαςικά χαρακτθριςτικά είναι: Supports a maximum performance of 333 MHz in the fastest speed grade Supports 16-bit, 32-bit, and 64-bit data widths, and 72-bit data width with ECC (DQ:DQS = 8:1) Supports DDR2 SDRAM single-rank registered DIMMs and components Supports the following DDR2 SDRAM features: o CAS latencies (3, 4, 5) o Additive latencies (0, 1, 2, 3, 4) o On-die termination (ODT) 63

80 o Burst lengths (4, 8) Supports bank management (up to four banks open) Performs the memory device initialization sequence upon power-up Performs auto-refresh cycles Ο τρόποσ ςφνδεςθσ παρουςιάηεται ςτθν Εικόνα 3.7. Εικόνα 3.7 PPC440 MCI and PPC440MC DDR2 Memory Controller Block Diagram Ο PPC440MC DDR2 Memory Controller ζχει διεπαφζσ απευκείασ ςτον επεξεργαςτι PowerPC μζςω του MCI. Με αυτό τον τρόπο επιτυγχάνει μζγιςτθ λειτουργικότθτα και επιδόςεισ ςτθ μνιμθ. Το κανάλι αυτό δεν είναι επεκτάςιμο και δεν μποροφν να ςυνδεκοφν άλλα περιφερειακά πάνω του. Η γνϊςθ όμωσ τθσ φπαρξισ του είναι ςθμαντικόσ παράγοντασ για να είμαςτε ςε κζςθ να καταλάβουμε τουσ κφκλουσ του επεξεργαςτι όςο αφορά τθν ανάγνωςθ και εγγραφι και ποια είναι τα μζςα τα οποία είναι απαςχολθμζνα ςε αυτζσ τισ περιόδουσ. Επίςθσ με βάςθ το παραπάνω διάγραμμα, βλζπουμε ότι υπάρχουν και τζςςερα Local links. Αυτά τα local links ςυνοδεφονται με DMA controllers και επιτρζπουν τθν απευκείασ ςφνδεςθ με άλλα περιφερειακά. Μποροφμε να ςτιςουμε επομζνωσ ζνα ςφςτθμα που κάνει χριςθ αυτϊν και τα δεδομζνα να μεταφζρονται ςτον επεξεργαςτι μζςω τθσ μνιμθσ. Με ανάλογο τρόπο μπορεί να γίνει μεταφορά των δεδομζνων από τον επεξεργαςτι ςτο περιφερειακό. Για παράδειγμα ςε ζνα ςφςτθμα που ζχουμε ςυνεπεξεργαςτζσ ι άλλεσ μονάδεσ που αναλαμβάνουν να εκτελζςουν πράξεισ μεταξφ πινάκων το DMA είναι πολφ ςθμαντικό και μπορεί να επιταχφνει τισ διαδικαςίεσ κατά ζνα μεγάλο ποςοςτό [25]. 64

81 3.2.3 Fast Simplex Link (FSL) Το κανάλι Fast Simplex Link (FSL) είναι ζνα μονισ κατεφκυνςθσ point-to-point κανάλι επικοινωνίασ το οποίο χρθςιμοποιείται για να γίνεται θ γριγορθ επικοινωνία μεταξφ δφο ςτοιχείων του ςυςτιματοσ ςτο FPGA. Η διεπαφι FSL είναι διακζςιμθ και ςτον επεξεργαςτι MicroBlaze τθσ Xilinx. Οι διεπαφζσ χρθςιμοποιοφνται για τθ μεταφορά δεδομζνων από τo register file του επεξεργαςτι ςτο υλικό που υλοποιείται ςτο FPGA. Τα βαςικά χαρακτθριςτικά είναι: Implements a uni-directional point to point FIFO based communication Provide mechanism for unshared and non-arbitrated communication mechanism. This can be used for fast transfer of data words between master and slave implementing the FSL interface Provides an extra control bit for annotating data being transmitted. This control bit can be used by the slave- side interface for multiple purposes. For example, decode the word being transmitted as a control word or use the bit to indicate the start or end of the transmission of a frame. FIFO depths can be as low as 1 and as high as 8K. Supports both synchronous and asynchronous FIFO modes. This allows the master and slave side of the FSL to clock at different rates. Support for SRL16 and dual port LUT RAM or Block RAM based FIFO implementation. Το Block διάγραμμα του καναλιοφ παρουςιάηεται ςτθν Εικόνα 3.8. Εικόνα 3.8 Fast Simplex Link (FSL) Bus Block Diagram Βλζπουμε ότι ωσ υλοποίθςθ δεν ζχει κάποια εξελιγμζνθ λογικι όπωσ για παράδειγμα είχε ο MCI. Ωςτόςο αυτόσ ο δίαυλοσ επικοινωνίασ είναι αρκετά εξελιγμζνοσ για να μασ εγγυθκεί τθν αςφαλι μεταφορά δεδομζνων μεταξφ δφο ςτοιχείων υλικοφ. Το δυνατότερο ςθμείο ίςωσ να είναι το γεγονόσ ότι επιτρζπει ακόμα και τθ ςφνδεςθ μεταξφ ςτοιχείων που δεν ζχουν το ίδιο ρολόι [55]. 65

82 3.2.4 Processor Local Bus v4.6 Το Processor Local Bus (PLB) αποτελεί το βαςικό κανάλι επικοινωνίασ ςτο ςφςτθμά μασ. Ράνω ςε αυτό μπαίνουν ςχεδόν όλα τα περιφερειακά ακόμα και το δικό μασ Custom IP. Η ζκδοςθ 4,6 είναι αναβάκμιςθ τθσ προγενζςτερθσ 3,6. Αποτελεί αναβάκμιςθ και επζκταςθ των λειτουργιϊν. Ριο παλιά χρθςιμοποιοφνταν άλλο κανάλι επικοινωνίασ αλλά οι εξελίξεισ τθσ τεχνολογίασ οδιγθςαν ςτθν αλλαγι του. Το προθγοφμενο πρότυπο ιταν το On-Chip Peripheral Bus (OPB). Το Xilinx 128-bit Processor Local Bus (PLB) v4.6 παρζχει τισ υποδομζσ καναλιοφ για να ςυνδζονται ζνασ προαιρετικόσ αρικμόσ από PLB master και PLB slave ςε ζνα κακολικό PLB ςφςτθμα. Αποτελείται από το ςφςτθμα ελζγχου του καναλιοφ, watchdog timer, ξεχωριςτζσ διευκφνςεισ, write και read μονάδεσ μονοπατιϊν δεδομζνων, και προαιρετικά μία DCR slave διεπαφι για να παρζχει πρόςβαςθ ςτον ίδιο τον καταχωρθτι κατάςταςθσ λακϊν του καναλιοφ. Τα βαςικά χαρακτθριςτικά είναι: Arbitration support for a configurable number of PLB master devices PLB address and data steering support for all masters 128-bit, 64-bit, and 32-bit support for masters and slaves PLB address pipelining (supported in shared bus mode or point-to-point configuration) Three-cycle arbitration Four levels of dynamic master request priority Selectable round robin or fixed priority arbitration Configurable optimization for point-to-point topology PLB watchdog timer PLB architecture compatible Complete PLB bus structure provided o Supports a configurable number of slave devices o No external OR gates required for PLB slave input signals PLB Reset circuit o PLB Reset generated synchronously to the PLB clock o PLB Reset generated synchronously from external reset when external reset provided o Provides vectorized reset signal to reduce system fanout for improved timing Active state of external reset selectable via a design parameter Το PLB αποτελείται από το κεντρικό διαιτθτι καναλιοφ, τα απαραίτθτα bus control και gating λογικι, και όλα τισ απαραίτθτεσ OR/MUX δομζσ. Η Xilinx παρζχει τθ ςυνολικι δομι του PLB καναλιοφ και επιτρζπει τθν απευκείασ ςφνδεςθ με ζνα παραμετρικό αρικμό master και slaves. Στο ςχιμα που ακολουκεί φαίνεται ζνα παράδειγμα του τρόπου ςφνδεςθσ του PLB ςε ζνα ςφςτθμα με τρία master και τρία slave ςυςτιματα. 66

83 Εικόνα 3.9 PLB Interconnect Diagram Στο PLB βλζπουμε ζναν εξελιγμζνο τρόπο επικοινωνίασ. Βλζπουμε ότι μπορεί να υποςτθρίξει master και slave ςυςκευζσ. Επίςθσ παρατθροφμε ότι υπάρχουν διάφορεσ μζκοδοι για τον τρόπο που μπορεί να γίνει θ επικοινωνία. Υποςτθρίηεται θ διάταξθ για άμεςθ επικοινωνία μεταξφ περιφερειακϊν. Επίςθσ βλζπουμε ότι υπάρχουν διάφοροι τρόποι για να αντιμετωπίςουν τον καταμεριςμό του καναλιοφ ςτα περιφερειακά. Με αυτόν τον τρόπο μπορεί να δοκοφν προτεραιότθτεσ ι να ακολουκθκεί θ γενικι λογικι Round Robin όπου όλοι ζχουν ίςα δικαιϊματα να χρθςιμοποιοφν το κανάλι. Είναι ζνα κανάλι το οποίο μπορεί ςχετικά εφκολα να παραμετροποιθκεί και αναλόγωσ προσ τισ ανάγκεσ να υποςτθρίηονται διαφορετικά πρωτόκολλα επικοινωνίασ. Στθν Εικόνα 3.10 βλζπουμε το block διάγραμμα του PLB. 67

84 Εικόνα 3.10 PLB Block Diagram 68

85 Εικόνα 3.11 PLB Master Interface 69

86 Εικόνα 3.12 PLB Slave interface Εκτόσ από τα κανάλια επικοινωνίασ που περιγράψαμε εδϊ, υπάρχουν και άλλοι τρόποι επικοινωνίασ. Για παράδειγμα ςτθν περίπτωςθ που ζχουμε δυο επεξεργαςτζσ, αυτοί μποροφν να επικοινωνοφν μζςω ςυςτιματοσ mailbox μζςω τθσ μνιμθσ [24]. 70

87 3.3 Μονϊδεσ μνημών Στθν προθγοφμενθ ενότθτα αναλφςαμε τα κανάλια επικοινωνίασ και τα βαςικά χαρακτθριςτικά τουσ. Σε αυτι τθν ενότθτα κα αναλφςουμε το δεφτερο πιο ςθμαντικό παράγοντα που είναι οι μνιμεσ. Στθ ςχεδίαςθ ενόσ ςυςτιματοσ θ οργάνωςθ των μνθμϊν και θ μεταφορά αρχείων μεταξφ αυτϊν παίηει πολφ ςθμαντικό ρόλο. Η αρχιτεκτονικι των μνθμϊν είναι ζνασ κλάδοσ που ανκεί και πάντα κα καλείται να αντιμετωπίηει προβλιματα. Το γενικό πλάνο είναι το εξισ, όςο πιο κοντά είναι οι μνιμεσ ςτον επεξεργαςτι, τόςο πιο γριγορεσ είναι οι μνιμεσ. Αντικζτωσ, όςο πιο μακριά από τον επεξεργαςτι, τόςο πιο μεγάλεσ ςε αποκθκευτικό χϊρο είναι οι μνιμεσ. Με τθν είςοδο του διαδικτφου ςτα υπολογιςτικά ςυςτιματα, αν κάποιοσ κεωριςει το διαδίκτυο ωσ αποκθκευτικό χϊρο τότε ουςιαςτικά ο αποκθκευτικόσ χϊροσ είναι πολφ μεγάλοσ. Το πρόβλθμα που καλοφνται να αντιμετωπίςουν οι ςχεδιαςτζσ αρχιτεκτονικισ υπολογιςτικϊν ςυςτθμάτων είναι θ αποτελεςματικι μεταφορά και θ ελαχιςτοποίθςθ τθσ άςκοπθσ μεταφοράσ δεδομζνων. Στα ενςωματωμζνα ςυςτιματα, πρζπει κανείσ να λάβει υπόψθ του και τον παράγοντα τθσ κατανάλωςθσ ενζργειασ λόγω τθσ άςκοπθσ μεταφοράσ δεδομζνων. Το πρόβλθμα που παρουςιάςτθκε παραπάνω υπάρχει αλλά ςε μικτότερθ κλίμακα. Για παράδειγμα πολφ ςπάνια κα δοφμε ενςωματωμζνο ςφςτθμα με κινοφμενα αποκθκευτικά μζςα. Υπάρχουν τζτοιεσ υλοποιιςεισ αλλά τα κινοφμενα μζρθ ζχουν τθν ζννοια των περιφερειακϊν και όχι τθν αποκικευςθ του κϊδικα που τρζχει ο μικροεπεξεργαςτισ. Στθν περίπτωςθ των ενςωματωμζνων ςυςτθμάτων, το ςφνθκεσ μοντζλο που χρθςιμοποιείται είναι πολλζσ μνιμεσ, κατανεμθμζνεσ ςε διάφορα μζρθ τθσ πλακζτασ, θ κάκε μία από τισ οποίεσ εξυπθρετεί άλλο ςκοπό και άλλου είδουσ δεδομζνα αποκθκεφονται ςε αυτζσ. Για παράδειγμα ζχουμε EEPROM, αυτζσ είναι αργζσ μνιμεσ όςο αφορά τθν εγγραφι αλλά γριγορεσ όςο αφορά τθν ανάγνωςθ. Επομζνωσ αυτζσ τισ χρθςιμοποιοφμε με το βζλτιςτο δυνατό τρόπο. Αποκθκεφουμε εκεί τα κομμάτια κϊδικα που δεν αλλάηουν ι άλλα δεδομζνα που είναι ςτακερζσ για το ςφςτθμα. Για παράδειγμα ςτθν περίπτωςθ των κινθτϊν τθλεφϊνων, εκεί αποκθκεφεται το λειτουργικό ςφςτθμα μαηί με τουσ drivers για τα διάφορα περιφερειακά που ζχει αφοφ αυτά δεν αλλάηουν ςυχνά ι και κακόλου. Στα FPGAs ζχουμε και εδϊ διαφόρων ειδϊν μνιμεσ. Υπάρχουν οι κατανεμθμζνεσ RAMs, οι Block RAMs οι DDR, οι FLASH μνιμεσ, ακόμα ζχουμε και τισ Compact Flash μνιμεσ. Αναλόγωσ το αναπτυξιακό Board, ποικίλουν τόςο ςε ταχφτθτα όςο και ςε χωρθτικότθτα και διακεςιμότθτα. Για παράδειγμα ςτο αναπτυξιακό με Spartan ζχουμε DDR μνιμθ, ςτο ML507 όμωσ ζχουμε DDR2 και ζνα πιο εξελιγμζνο τρόπο διαχείριςθσ και πρόςβαςθσ των δεδομζνων. Στθν περίπτωςθ των FPGA, αν και υποςτθρίηονται οι κρυφζσ μνιμεσ, ςτισ περιςςότερεσ περιπτϊςεισ δεν προςφζρει κάτι όςο αφορά τθν ταχφτθτα και δεν τισ χρθςιμοποιιςουμε. Αυτό οφείλεται ςτο γεγονόσ ότι ςτθν πραγματικότθτα δεν υπάρχουν κρυφζσ μνιμεσ και επομζνωσ υλοποιοφνται ςτο χϊρο που υπάρχει κάποιου άλλου είδουσ μνιμθ. Για παράδειγμα αν ζχουμε μόνο BRAM ςτο ςφςτθμά μασ, δεν ζχει νόθμα να δθλϊςουμε τθ 71

88 χριςθ cache αφοφ το μόνο που κα κάνει είναι να μεταφζρει τα ίδια δεδομζνα που υπάρχουν ςτθν BRAM ςε κάποιο άλλο ςθμείο τθσ ίδια μνιμθσ. Αυτό όμωσ δεν μπορεί να γενικευτεί γιατί θ τεχνολογία εξελίςςεται και μπορεί να γίνει ςυμφζρον από άποψθ επιδόςεων θ χριςθ κρυφϊν μνθμϊν ακόμα και ςτα ςθμερινά αναπτυξιακά boards αφοφ οι soft cores μποροφν να αναβακμιςτοφν και να βγουν καινοφργια μοντζλα. Στο Spartan3e ζχουμε ςτθ διάκεςι μασ: BRAM SRAM DDR_SRAM και FLASH μνιμεσ. Στο Virtrex4 ML402 ζχουμε: BRAM SRAM DDR_SDRAM EEPROM Compact Flash Στο Virtex5 ML507 ζχουμε: BRAM SRAM DDR2_SDRAM EEPROM Compact Flash BRAM Το BRAM block είναι ζνα παραμετροποιιςιμο ςτοιχείο μνιμθσ που μπορεί να ςυνδεκεί ςε ποικίλουσ BRAM interface Controllers. Το BRAM Block παράγεται ωσ structural HDL από εργαλείο το EDK design βαςιςμζνο ςτισ παραμζτρουσ από το BRAM interface controller. Πλεσ οι παράμετροι του BRAM block υπολογίηονται αυτόματα και κζτονται από τα εργαλεία EDK Platgen και τα Simgen. Τα βαςικά χαρακτθριςτικά είναι: Fully automated generation and configuration of HDL through EDK Platgen/Simgen tools. Number of BRAM primitives utilized is a function of the configuration parameters for: memory address range, number of byte-write enables, the data width, and the targeted architecture 72

89 Both Port A and Port B of the memory block can be connected to independent BRAM Interface Controllers: LMB (Local Memory Bus), OPB (On-chip Peripheral Bus), PLB (Processor Local Bus), and OCM (On-Chip Memory). Supports byte, half-word, word, and double word transfers provided the correct number of byte-write enables have been configured. Το BRAM Block είναι ζνα structural design που αρχικοποιείται από ζναν αρικμό πρωταρχικϊν RAMB, το οποίο εξαρτάται από ςυγκεκριμζνουσ παράγοντεσ. Ζνα παράδειγμα τζτοιασ υλοποίθςθσ παρουςιάηεται παρακάτω [56]. Εικόνα 3.13 BRAM Block implementation Example with 4 RAM16 primitives DDR SRAM Οι DDR SDRAM είναι οι double data rate synchronous dynamic random access memory που είναι μια κατθγορία μνθμϊν ολοκλθρωμζνων κυκλωμάτων. Είναι ουςιαςτικά μια αναβάκμιςθ των μνθμϊν single data rate και επιτυγχάνουν καλφτερουσ ρυκμοφσ μεταφοράσ δεδομζνων. Μποροφν να μεταφζρουν δεδομζνα τόςο ςτθν ανερχόμενθ όςο και ςτθν κατερχόμενθ παρυφι του ρολογιοφ. Οι υπόλοιπεσ DDR2 και DDR3 είναι αντικατάςταςθ αυτϊν των προτφπων με ςτόχο τθ βελτιςτοποίθςθ ςε ταχφτθτα, ανοχι λάκουσ και βελτιςτοποίθςθ ςε κζματα ενζργειασ. Ασ δοφμε όμωσ ποιεσ είναι οι DDR που ζχουμε ςτο Spartan3E και ςτθ ςυνζχεια τον τρόπο με τον οποίο αυτζσ ςυνδζονται. Το Spartan3E περιζχει μία μνιμθ 512 Mbits (32M x 16) DDR SDRAM με ζνα 16 bit data interface όπωσ παρουςιάηεται ςτο παρακάτω ςχιμα. Πλεσ οι διεπαφζσ τθσ μνιμθσ ςυνδζονται ςτο I/O Bank 3 του FPGA και τροφοδοτοφνται και τα δφο με 2,5V που παράγονται από το ρυκμιςτι τάςθσ που παίρνει 5V ωσ είςοδο. Τα 1.25V παράγονται χρθςιμοποιϊντασ ζναν διαιρζτθ τάςθσ με αντιςτάςεισ. 73

90 Εικόνα 3.14 Spartan3E 512 Mbits DDR SDRAM Η ςφνδεςθ, για τθν ςχεδίαςθ EDK ακολουκεί τισ διεπαφζσ Multi-Port Memory Controller (MPMC). Το πρότυπο αυτό αναλφεται ςτθν ενότθτα μετά τισ DDR2 μνιμεσ λόγω τθσ ςθμαςίασ που ζχει και λόγω του γεγονότοσ ότι χρθςιμοποιείται με πολλϊν ειδϊν μνιμεσ [9] [42] DDR2 SDRAM Οι μνιμεσ DDR2 αποτελοφν εξζλιξθ των μνθμϊν DDR και δεν υπάρχει ςυμβατότθτα μεταξφ αυτϊν των δφο. Σε ςυνδυαςμό με το double pumping (θ μζκοδοσ άντλθςθσ δεδομζνων τόςο ςτθν ανερχόμενθ όςο και ςτθν κατερχόμενθ κορυφι του ρολογιοφ), επιτρζπουν μεγαλφτερθ ταχφτθτα και μικρότερθ κατανάλωςθ, τρζχοντασ το εςωτερικό ρολόι τουσ ςτο μιςό του ρολογιοφ του καναλιοφ επικοινωνίασ. Οι δφο παράγοντεσ ςυνδυάηονται και το ςυνολικό αποτζλεςμα είναι τζςςερισ μεταφορζσ δεδομζνων για κάκε κφκλο του εςωτερικοφ ρολογιοφ. Από τθ ςτιγμι όμωσ που το εςωτερικό ρολόι είναι το μιςό του εξωτερικοφ, οι DDR2 μποροφν να προςφζρουν μεγαλφτερο bandwidth αλλά με μεγαλφτερο latency. Εναλλακτικά, με το διπλάςιο ρολόι ςε ςχζςθ με τισ DDR μποροφν να προςφζρουν διπλάςιο bandwidth αλλά με το ίδιο latency. Το Virtex5 ML507 ιταν το μόνο αναπτυξιακό που είχαμε ςτθ διάκεςι μασ με DDR2. Οι ταχφτθτεσ ςτισ οποίεσ ζτρεχε θ μνιμθ είχαν οριςτεί να είναι τα 266MHz ενϊ θ μζγιςτθ 74

91 δοκιμαςμζνθ ταχφτθτα ςφμφωνα με τθν Xilinx είναι τα 400MHz. Η DDR2 δεν είναι on board όπωσ ςτθν περίπτωςθ του Spartan3E αλλά είναι ςε ειδικι κφρα SODIMM που βρίςκεται ςτο κάτω μζροσ τθσ αναπτυξιακισ πλατφόρμασ. Η προ-εγκατεςτθμζνθ μνιμθ είναι 256MB ενϊ δίνεται θ δυνατότθτα αναβάκμιςθσ και αλλαγισ τθσ [11] [42] Multi-Port Memory Controller (MPMC) Ο MPMC είναι ζνασ πλιρωσ παραμετροποιιςιμοσ ελεγκτισ μνιμθσ που υποςτθρίηει SDRAM/ DDR/ DDR2/ DDR3/ LPDDR μνιμεσ. Ο MPMC παρζχει πρόςβαςθ ςτθ μνιμθ ςε μία από τισ οκτϊ κφρεσ, κάκε μία από τισ οποίεσ μπορεί να επιλεχκεί από ζνα ςετ από Personality Interface Modules (PIMs) τα οποία επιτρζπουν τθ ςφνδεςθ του PowerPC 405 και του MicroBlaze που χρθςιμοποιοφν το CoreConnect Toolkit Processor Local Bus (PLB) και τθσ δομζσ CashLink. Το MPMC υποςτθρίηει τον ελεγκτι Soft Direct Memory Access (SDMA) που παρζχει full-duplex, high-bandwidth, LocalLink interface με τθ μνιμθ. Είναι διακζςιμοσ επίςθσ και ζνασ Video Frame Buffer Controller (VFBC) PIM. Τα βαςικά χαρακτθριςτικά είναι: Soft Direct Memory Access (SDMA) support Double Data Rate (DDR/DDR2/DDR3/LPDDR) and Single Data Rate (SDR) SDRAM memory support. DIMM support (registered and unbuffered). Error Correcting Code (ECC) Performance Monitoring (PM), and Debug register support. Parameterizable: o number of ports (1 to 8) o number of data bits to memory (4, 8, 16, 32, 64) o configuration of data path FIFOs Memory Interface Generator (MIG)-based PHY v3.4 support. Static Physical (PHY) interface alternative to the MIG-based PHY User configuration of arbitration algorithms Customize-able Interfaces: XCL, LocalLink (using SDMA), PLB v4.6 with Xilinx simplifications, NPI, MCB, MIB/PPC440MC, and VFBC Ο τρόποσ επικοινωνίασ ςτθν περίπτωςθ του Spartan3E και του MicroBlaze παρουςιάηεται ςτθν Εικόνα

92 Εικόνα 3.15 MPMC MicroBlaze use case Στθν Εικόνα 3.16 παρουςιάηεται το block διάγραμμα. 76

93 Εικόνα 3.16 MPMC Soft Memory Controller Architecture Block Diagram Στθ ςυνζχεια παρουςιάηεται ζνα παράδειγμα του τρόπου ςφνδεςθσ τθσ μνιμθσ DDR2 [57]. 77

94 Εικόνα 3.17 DDR2 Memory Connections SRAM Οι μνιμεσ SRAM είναι οι Static Random Access Memory, που είναι ζνα είδοσ θμιαγϊγιμων μνθμϊν όπου το static υποδεικνφει ότι ςε αντίκεςθ με τισ dynamic RAM (DRAM), δεν χρειάηεται να ανανεϊνονται περιοδικά. Ωσ SRAM χρθςιμοποιοφν ζνα bistable latching circuitry για να αποκθκεφςουν το κάκε bit. Οι SRAM δίνουν τθν αποκθκευμζνθ πλθροφορία με τθν ζκκεςθ τθσ παραμζνουςασ πλθροφορίασ, ωςτόςο οι πλθροφορίεσ που είναι αποκθκευμζνεσ δεν είναι μόνιμεσ με τθ ςυμβατικι ζννοια ότι τα δεδομζνα χάνονται αν θ μνιμθ δεν τροφοδοτείται με ρεφμα. Στθν περίπτωςθ του ML507 ζχουμε ζνα high-speed, low-latency on board chip. Η μνιμθ είναι οργανωμζνθ ςε 256K x 36 bits. Αυτι θ οργάνωςθ παρζχεται για 32 bit data bus και 78

95 υποςτθρίηουν τζςςερα bit ιςοτιμίασ. Χωρικά, είναι τοποκετθμζνθ κάτω από τθν αποςπϊμενθ LCD οκόνθ και δεν είναι ορατά. Η ίδια SRAM υπάρχει και ςτθν περίπτωςθ του Virtex4. Τζλοσ να αναφζρουμε ότι οι SRAM και οι flash μνιμεσ μοιράηονται το ίδιο data bus που αναλφεται ςτθ ςυνζχεια [11] [42] FLASH Οι μνιμεσ Flash είναι μνιμεσ που αποκθκεφουν μόνιμα τισ τιμζσ, με τθν ζννοια ότι διατθροφν τθν πλθροφορία ακόμα και χωρίσ ρεφμα, και μποροφν να ςβθςτοφν και να γραφτοφν εκ νζου θλεκτρικά. Είναι ζνα ςυγκεκριμζνο είδοσ EEPROM που μποροφν να ςβινονται και να γράφονται ςε μεγάλα blocks και ςτοιχίηουν πολφ λιγότερο από τθσ byteprogrammable EEPROM. Εδϊ μποροφν να γράφονται κομμάτια κϊδικα τα οποία δεν αλλάηουν. Επίςθσ εδϊ μπορεί να γραφτεί το bit αρχείο και το αρχείο αρχικοποίθςθ μνθμϊν με ςκοπό να φορτϊνεται ςε κάκε εκκίνθςθ του FPGA και με αυτόν τον τρόπο να προγραμματίηεται το FPGA και να αρχικοποιείται. Τα αναπτυξιακά boards ςυνικωσ ζρχονται με κάποιο προ-εγκατεςτθμζνο ςφςτθμα. Στθν περίπτωςθ του Spartan3E αυτό ζρχεται με ζνα picoblaze που χειρίηεται και αναπαριςτά δεδομζνα ςτθν LCD οκόνθ. Το bitstream κακϊσ και ο κϊδικασ που τρζχει είναι αποκθκευμζνα ςε FLASH μνιμθ που διακζτει. Υπάρχουν πολλϊν ειδϊν FLASH μνιμεσ ανάλογα με τισ ανάγκεσ και τισ απαιτιςεισ τθσ εφαρμογισ, όπωσ NOR-FLASH, NAND-FLASH κλ. Και αυτζσ μπαίνουν ςτο ίδιο κανάλι επικοινωνίασ με τισ SRAM το οποίο αναλφεται παρακάτω Multi-Channel External Memory Controller Το Xilinx Multi-Channel External Memory controller παρζχει το control interface για εξωτερικζσ ςφγχρονεσ και αςφγχρονεσ SRAM και FLASH μνιμεσ μζςω του MCH ι του PLB interface. Το MCH EMC είναι ζνα soft IP core που ςχεδιάςτθκε από τθν Xilinx και παρζχει τα παρακάτω χαρακτθριςτικά: Connects as a 32-bit or 64-bit slave on PLB v4.6 bus of 32, 64 or 128 bits Parameterizable number (0 to 4) of channel interfaces that can be configured with a Xilinx CacheLink (XCL) protocol (see "Reference Documents") Can be used with PLB interface only or MCH interface only or in combination of both PLB and MCH interfaces Supports multiple (up to 4) external memory banks Supports single-beat and burst transactions Supports target-word first PLB Cacheline read and line-word first PLB Cacheline write transactions of 4, 8 and 16 words Supports both linear and target word cache line transaction of 1, 4, 8 and 16. Supports low latency PLB Point-to-Point topology Supports Synchronous / Asynchronous SRAMs and Nor Flash memory devices 79

96 Supports page mode Nor flash Supports memory data widths of 64-bit, 32-bit, 16-bit and 8-bit Supports data width matching Supports configurable cycle time for read and write operations Στθν Εικόνα 3.18 παρουςιάηεται το block διάγραμμα [58]. Εικόνα 3.18 MCH EMC Top level block diagram EEPROM Οι EEPROM είναι οι Electrically Erasable Programmable Read-Only Memory. Είναι μνιμεσ που αποκθκεφουν μόνιμα τα δεδομζνα με τθν ζννοια ότι κρατάνε τισ τιμζσ τουσ ακόμα και χωρίσ ρεφμα. Για να γραφτοφν πρζπει να περάςει ρεφμα μεγαλφτερο από τθν κανονικι λειτουργία τουσ. Συνικωσ ςε τζτοιεσ μνιμεσ γράφονται δεδομζνα τα οποία δεν αλλάηουν ςχεδόν ποτζ όπωσ για παράδειγμα θ MAC address του Ethernet Controller. Στο Virtex5 ML507 ζχουμε 8Kb EEPROM μνιμθ. Η ςφνδεςθ γίνεται μζςω του IIC bus. Μια ακόμα εφαρμογι που ζχουν οι EEPROM ςτα FPGA είναι για copy-protection του bitstream αρχείου. Με αυτόν τον τρόπο γίνεται κατά κάποιο τρόπο δφςκολο να γίνει cloning του FPGA. 80

97 Το κανάλι ICC προςφζρει μια διςφρματθ ςειριακι διεπαφι χαμθλισ ταχφτθτασ ςε ζνα μεγάλο εφροσ διάςθμων ςυςκευϊν. Στο κανάλι αυτό, εκτόσ από τισ EEPROM μποροφμε να το επεκτείνουμε και να ςυνδζςουμε και δικά μασ περιφερειακά. Ασ δοφμε τα βαςικά χαρακτθριςτικά. Connects as a 32-bit Slave on PLB V4.6 bus of 32, 64 and 128 bits data width Master or slave operation Multi-master operation Software selectable acknowledge bit Arbitration lost interrupt with automatic mode switching from master to slave Calling address identification interrupt with automatic mode switching from master to slave START and STOP signal generation/detection Repeated START signal generation Acknowledge bit generation/detection Bus busy detection Fast mode 400 KHz operation or standard mode 100 KHz 7 bit or 10 bit addressing General call enable or disable Transmit and receive FIFOs - 16 bytes deep Throttling General purpose output, 1 bit to 8 bits wide Dynamic Start/Stop generation Filtering on the SCL and SDA signals to eliminate spurious pulses Στθν Εικόνα 3.19 παρουςιάηεται το μπλοκ διάγραμμα[59] [42]. 81

98 Εικόνα 3.19 IIC Top Level Block Diagram CompactFlash Οι CompactFlash είναι ςυςκευζσ μαηικισ αποκικευςθσ που χρθςιμοποιείται από τισ θλεκτρικζσ ςυςκευζσ. Είναι NAND based flash μνιμεσ. Είναι αποςπϊμενεσ μόνιμεσ μνιμεσ. Η δυνατότθτα να μποροφν να διαβαςτοφν και από τον υπολογιςτι και από το FPGA τισ κάνει ελκυςτικζσ ςε προτάςεισ αποκικευςθσ δεδομζνων. Στθν παροφςα διπλωματικι, δοκιμάςαμε να ζχουμε ωσ κφριο αποκθκευτικό μζςο μία CompactFlash όπωσ κα δοφμε ςε επόμενο κεφάλαιο. Οι CF κάρτεσ (CompactFlash) ςυνδζονται μζςω του System ACE (Advance Configuration Environment) τθσ Xilinx. Μζςω αυτοφ μποροφμε τόςο να χρθςιμοποιιςουμε τον αποκθκευτικό χϊρο για να κατεβάηουμε τα αρχεία bitstream, όςο και ωσ αποκθκευτικό χϊρο για τισ ενςωματωμζνεσ εφαρμογζσ. Το SYSACE (System ACE) είναι ζνασ Interface controller μεταξφ του Processor Local Bus και του Microprocessor Interface του System ACE. Αυτό το ςτοιχείο ενϊνεται απευκείασ με το PLB. Τα βαςικά χαρακτθριςτικά είναι: Connects as a 32-bit slave on PLB V4.6 buses, which are 32, 64 or 128 bit wide The XPS SYSACE is used in conjunction with a System ACE Compact Flash Solution to provide a System ACE memory solution System ACE Microprocessor Interface (MPU) o Read/Write from or to a Compact Flash device o Supports both 8-bit and 16-bit data bus access modes Το block διάγραμμα παρουςιάηεται ςτθν Εικόνα 3.20 [60] [42]. 82

99 Εικόνα 3.20 System ACE Interface Controller Block Diagram 3.4 On-board περιφερειακϊ Στισ προθγοφμενεσ ενότθτεσ αναλφςαμε τα βαςικά κανάλια επικοινωνίασ και τισ μνιμεσ. Σε αυτι τθν ενότθτα κα μελετιςουμε περιφερειακά που είναι on-board. Επίςθσ κα δοφμε πϊσ μποροφμε να κάνουμε ειςαγωγι άλλων soft περιφερειακϊν General Purpose Input / Output (GPIO) Το General Purpose Input / Output παρζχει τα μζςα για να ενϊςουμε απλά κυκλωματικά ςτοιχεία πάνω ςτο PLB. Το GPIO είναι ζνα 32-bit περιφερειακό που ενϊνεται με το PLB v4.6. Είναι ζνα περιφερειακό που βάηει γενικοφ ςκοποφ ειςόδουσ και εξόδουσ. Σε αυτό το περιφερειακό ενϊνονται τα LEDs, Switches και Buttons. Ασ δοφμε τα βαςικά χαρακτθριςτικά: Connects as a 32-bit slave on PLB v4.6 bus of 32, 64 or 128 bits Configurable as single or dual GPIO channel(s) Number of GPIO bits configurable from 1 to 32 bits Each GPIO bit can be dynamically programmed as input or output Width of each of the channels can be individually configured 83

100 Independent reset values for each bit of all registers Optional interrupt request generation Οι κφρεσ μποροφν να ορίηονται δυναμικά ωσ είςοδοι ι ωσ ζξοδοι, ενεργοποιϊντασ ι απενεργοποιϊντασ ζναν 3-state buffer. Τα κανάλια μποροφν να παραμετροποιθκοφν για να παράγουν ζνα interrupt όταν γίνει αντιλθπτι μια μετάβαςθ αντιλθφτεί ςε οποιαδιποτε από τισ ειςόδουσ τουσ. Ακολουκεί το block διάγραμμα που περιγράφει τον τρόπο ςφνδεςθσ και λειτουργίασ του περιφερειακοφ [61]. Εικόνα 3.21 GPIO Block Diagram UART Lite Αυτό το περιφερειακό είναι θ ςειριακι κφρα επικοινωνίασ. Ουςιαςτικά αποτελεί το stdio (standard input output) του ςυςτιματοσ. Εκεί εκτυπϊνονται τυχόν μθνφματα του ςυςτιματοσ. Τα αρχικά είναι Universal Asynchronous Receiver Transmitter (UART) Lite και ςυνδζεται με το PLB για να παρζχει τισ διεπαφζσ ελζγχου για αςφγχρονθ ςειριακι μεταφορά δεδομζνων. Αυτόσ ο soft core ςχεδιάςτθκε για να επικοινωνεί με το PLBV46. Τα βαςικά χαρακτθριςτικά είναι: PLB interface is based on PLB v4.6 specification Supports 8-bit bus interfaces One transmit and one receive channel (full duplex) 16-character Transmit FIFO and 16-character Receive FIFO Configurable number of data bits in a character (5-8) 84

101 Configurable parity bit (odd or even) Configurable baud rate Το block διάγραμμα παρουςιάηεται ςτθν Εικόνα 3.22 [62]. Εικόνα 3.22 UART Lite Block Diagram Ethernet Lite Media Access Controller Το Ethernet Lite MAC (Media Access Controller) είναι ςχεδιαςμζνο για να εφαρμόηει τα χαρακτθριςτικά που παρουςιάηονται ςτο πρότυπο IEEE Media Independent Interface (ΜΙΙ). Το Ethernet Lite MAC υποςτθρίηει το παραπάνω πρότυπο με το industry standard Physical Layer (PHY) device και επικοινωνεί με τον επεξεργαςτι μζςω του Processor Local Bus (PLB). Το ςχζδιο προςφζρει 10 Mbps και 100 Mbps (γνωςτό και ωσ Fast Ethernet). Στόχοσ είναι να προςφζρει τισ ελάχιςτεσ λειτουργίεσ που είναι απαραίτθτεσ για να περεχεί διεπαφι δικτφου με τουσ λιγότερουσ δυνατοφσ πόρουσ. Τα βαςικά χαρακτθριςτικά είναι: Connects as 32-bit slave on PLB V4.6 buses of 32, 64 or 128 bits Supports single beat and burst transactions Memory mapped direct I/O interface to the transmit and receive data dual port memory Media Independent Interface (MII) for connection to external 10/100 Mbps PHY transceivers Independent internal 2K byte Tx and Rx dual port memory for holding data for one packet Optional dual buffer memories, 4K byte pingpong, for Tx and Rx Receive and Transmit Interrupts 85

102 Optional MDIO interface for PHY access Internal loop back support Το Block διάγραμμα παρουςιάηεται ςτθν Εικόνα 3.23 [20]. Εικόνα 3.23 Ethernet Lite Block Diagram Interrupt Controller Ζνα άλλο πολφ ςθμαντικό περιφερειακό είναι ο interrupt controller. Ο interrupt controller ςυγκεντρϊνει πολλαπλά interrupt από περιφερειακζσ ςυςκευζσ ςε ζνα και μόνο interrupt και το ςτζλνει ςτον επεξεργαςτι του ςυςτιματοσ. Οι καταχωρθτζσ για ζλεγχο, ενεργοποίθςθ και αποδοχι (acknowledge) interrupts είναι προςβάςιμοι μζςω ενόσ slave interface του PLB. Ο αρικμόσ των interrupts και των επιλογϊν (ευαιςκθςία ςε ςτάκμθ ι ςε ακμι) μποροφν να προςαρμοςτοφν ςτο ςφςτθμα που επικυμοφμε. 86

103 Τα βαςικά χαρακτθριςτικά είναι: Connects as a 32-bit slave on PLB V4.6 bus of 32, 64 and 128-bit data width Configurable number of (up to 32) interrupt inputs Single interrupt output Easily cascaded to provide additional interrupt inputs Priority between interrupt requests is determined by vector position. The least significant bit (LSB, in this case bit 0) has the highest priority Interrupt Enable Register for selectively disabling individual interrupt inputs Master Enable Register for disabling interrupt request output Each input is configurable for edge or level sensitivity; edge sensitivity can be configured for rising or falling; level sensitivity can be active-high or low Automatic edge synchronization when inputs are configured for edge sensitivity Output interrupt request pin is configurable for edge or level generation - edge generation configurable for rising or falling; level generation configurable for activehigh or low Το Block διάγραμμα παρουςιάηεται ςτθν Εικόνα 3.24 [27]. Εικόνα 3.24 Interrupt Controller Block Diagram 87

104 3.4.5 IP Cores Τα περιφερειακά που περιγράψαμε παραπάνω δεν είναι τα μόνα που υποςτθρίηονται. Υπάρχουν και άλλα, αλλά δεν κρίκθκε απαραίτθτο να κάνουμε αναφορά ςε όλα όςα υπάρχουν και μποροφμε να χρθςιμοποιιςουμε. Υπάρχουν και άλλα περιφερειακά, που μποροφν να μπουν ςτο ςχζδιό μασ. Αυτά τα ονομάηουμε IP cores. Ζνα παράδειγμα αυτϊν παρουςιάηεται ςτθ ςυνζχεια: Εικόνα 3.25 IP Core Example Αυτά όπωσ βλζπουμε κάποια είναι ελεφκερα και ζρχονται μαηί με το πρόγραμμα, άλλα δεν είναι ελεφκερα και απαιτείται ειδικι άδεια για να τα χρθςιμοποιιςουμε. Ουςιαςτικά, τα IP cores, είναι είτε εξολοκλιρου soft ςε VHDL, είτε κάποιο μζροσ υπάρχει ςε ζνα chip και το υπόλοιπο υλοποιείται μζςα ςτο FPGA. Το soft κομμάτι είναι θ διαςφνδεςθ που πρζπει να γίνει πάνω ςε κάποιο κανάλι για να μπορεί να επικοινωνεί με τον επεξεργαςτι, μαηί βζβαια με το UCF αρχείο που περιγράφει τα pins τα οποία χρθςιμοποιεί ςτθν περίπτωςθ που επικοινωνεί με κάποιο κομμάτι ζξω από το FPGA. Στα IP cores ςυγκαταλζγονται και τα custom IP cores. Αυτά είναι πυρινεσ που μποροφμε να φτιάξουμε εμείσ και να ειςάγουμε ςτο ςφςτθμα μασ. Η διαδικαςία ειςαγωγισ δεν είναι εφκολθ υπόκεςθ αν και δίνεται ζνα template με το οποίο μπορεί κάποιοσ να ξεκινιςει τθ διαδικαςία. Αυτό γίνεται μζςω του CIP (create and import peripheral ) όπωσ φαίνεται ςτθ ςυνζχεια, θ διαδικαςία όμωσ αναλφεται ςε επόμενο κεφάλαιο λόγω τθσ ςπουδαιότθτασ που ζχει [12] [13] [14] [15] [16]. 88

105 Εικόνα 3.26 Create and Import Peripheral Wizard 89

106 4 Αρχιτεκτονικό ενςωματωμϋνου ςυςτόματοσ Στα προθγοφμενα κεφάλαια, αρχικά κάναμε μία ειςαγωγι ςτα ενςωματωμζνα ςυςτιματα και ςτουσ επεξεργαςτζσ που χρθςιμοποιοφνται. Στθ ςυνζχεια αναλφςαμε το περιβάλλον εργαςίασ, τισ δυνατότθτεσ που μασ παρζχουν αυτά τα προγράμματα και ορίςαμε το πρόβλθμα και τισ υπάρχουςεσ λφςεισ που ζχουν προτακεί και χρθςιμοποιοφνται. Στθ ςυνζχεια ζγινε μια ανάλυςθ των αναπτυξιακϊν ςυςτθμάτων, των καναλιϊν επικοινωνίασ των ενςωματωμζνων ςυςτθμάτων, των μονάδων μνθμϊν που τα απαρτίηουν και των περιφερειακϊν τα οποία ζχουν και επιτρζπουν τθν επικοινωνία, είτε εςωτερικά είτε εξωτερικά. Στο κεφάλαιο αυτό, αρχικά κα δοφμε τισ προδιαγραφζσ του ςυςτιματοσ και κα ορίςουμε τουσ ςτόχουσ. Στθ ςυνζχεια κα περάςουμε ςτθ μεκοδολογία που ακολουκιςαμε για το χαρακτθριςμό του τθλεπικοινωνιακοφ ςυςτιματοσ. Ζπειτα κα περιγράψουμε τθ βαςικι αρχιτεκτονικι κακϊσ και μία ςφντομθ περιγραφι ςχετικά με τον τρόπο που μποροφμε να βάλουμε τθ δικιά μασ VHDL λογικι ωσ περιφερειακό του ενςωματωμζνου ςυςτιματοσ. Στθν τελευταία ενότθτα, κα γίνει μία ειςαγωγι ςτθν ανάπτυξθ λογιςμικοφ και ςτουσ οδθγοφσ (drivers). 4.1 Προδιαγραφϋσ ςυςτόματοσ και ςτόχοι Στθν ενότθτα 2.6 ζγινε μια περιγραφι του ςυςτιματοσ. Εδϊ αναλφουμε τον τρόπο λειτουργίασ και τισ απαιτιςεισ που ζχει. Η γενικι ιδζα είναι θ εξισ. Υπάρχει ζνασ κωδικοποιθτισ ο οποίοσ παίρνει τιμζσ από ζνα LFSR (linear feedback shift register) των 16 bit. Στθ ςυνζχεια αυτό το ςιμα κωδικοποιείται μζςα από ζναν κωδικοποιθτι (encoded) και επεκτείνεται με πλεονάηουςα πλθροφορία για να μπορεί να γίνει αργότερα διόρκωςθ λακϊν [65]. Το κωδικοποιθμζνο ςιμα περνάει από ζνα κανάλι επικοινωνίασ το οποίο προςκζτει κόρυβο με γκαουςιανι κατανομι. Αυτόσ ο κόρυβοσ είναι ουςιαςτικά μια εξομοίωςθ του κερμικοφ κυρίωσ κορφβου που προςκζτει το φυςικό μζςο [66]. Στθ ςυνζχεια το ςιμα μεταδίδεται και αποκωδικοποιείται ςτον αποκωδικοποιθτι (decoder) [64]. Πταν αποκωδικοποιθκεί, υπάρχει ζνα LFSR επιπλζον που δουλεφει με τον ίδιο τρόπο και το ςιμα ςυγκρίνεται με το αρχικό. Στθν περίπτωςθ που δεν υπάρχει λάκοσ, επαναλαμβάνεται θ διαδικαςία. Στθν περίπτωςθ όμωσ που υπάρχει λάκοσ, το frame αυτό αποκθκεφεται ςε μία τοπικι μνιμθ. Η μνιμθ αυτι μπορεί αρχικά να χωρζςει δφο τζτοια frame. Αυτό ζγινε με ςκοπό να μθν χρειάηεται τόςο ςυχνά reset θ μνιμθ για να αποκθκεφει εκ νζου δεδομζνα. Πταν αυτά τα δφο πλαίςια αποκθκευτοφν, δεν μπορεί να ςϊςει καινοφργια, και όςα ζρχονται για αποκικευςθ αγνοοφνται. Τα frame αυτά είναι περιπλεγμζνα δεδομζνα που μπορεί, ανάλογα με τθν κωδικοποίθςθ να ςυμβολίηουν είτε το αρχικό μινυμα, είτε το μινυμα που παραλιφκθκε, είτε και τα δφο ι ακόμα και κάποια άλλθ πλθροφορία. Τα frames αυτά παράγονται με βάςθ τον τρόπο που επιλζγεται να λειτουργοφν. Μπορεί για παράδειγμα να βγαίνουν όταν υπάρχει κάποιο λάκοσ κατά τθν 90

107 αναγνϊριςθ, μπορεί να βγαίνουν όταν τα δφο μθνφματα ςυγκλίνουν ςτθν κωδικι λζξθ ι όχι. Το γενικό πλάνο του ςυςτιματοσ παρουςιάηεται ςτθν Εικόνα 4.1. LFSR LFSR Encoder AWGN + Decoder LLR + RAM Εικόνα 4.1 Πρότυπη τηλεπικοινωνιακή διάταξη Από το παραπάνω ςχιμα όμωσ λείπουν πολλά βαςικά κομμάτια λογικισ όπωσ είναι για παράδειγμα τα FSMs. Ο τρόποσ όμωσ λειτουργίασ είναι βαςιςμζνοσ ςτθν προαναφερκείςα λογικι. Πςο αφορά τισ απαιτιςεισ του ςυςτιματοσ, ζχουμε ςυγκεκριμζνα χαρακτθριςτικά. Τα frames που ενδιαφζρουν δεν παράγονται ςε ςυγκεκριμζνα χρονικά διαςτιματα αλλά παράγονται με τυχαίο τρόπο λόγω τθσ τυχαιότθτασ που ειςάγει το κανάλι επικοινωνίασ ςτο ςφςτθμα. Δεν μποροφμε δθλαδι να ξζρουμε από πριν πότε και τι είδουσ ςφάλμα μπορεί να προκφψει κατά τθ μετάδοςθ. Χρειαηόμαςτε επομζνωσ ζναν αποτελεςματικό τρόπο να αποκθκεφουμε με αςφάλεια τα δεδομζνα. Ο τρόποσ αυτό κα πρζπει να είναι όςο το δυνατόν πιο γριγοροσ και να εγγυάται ότι τα δεδομζνα που παράγονται από το τθλεπικοινωνιακό πρότυπο αποκθκεφονται χωρίσ ςφάλματα. Αυτό ιςχφει γιατί εκτόσ από 91

108 τθ χρονικι ανεξαρτθςία των δεδομζνων, τα δεδομζνα δεν μποροφν να επαλθκευτοφν εφκολα. Στόχοσ του πειράματοσ είναι ο χαρακτθριςμόσ και θ επαλικευςθ ορκι λειτουργίασ τθσ τθλεπικοινωνιακισ διάταξθσ και οι επιλογζσ κατά τθν ανάπτυξθ γίνονται με βάςθ τα αποτελζςματα που παράγονται. Αν υπιρχε τρόποσ να επαλθκευτοφν όλα τα δεδομζνα τότε δεν κα υπιρχε λόγοσ φπαρξθσ τθσ διάταξθσ. Επομζνωσ, κζλουμε να εγγυθκοφμε τθν αςφαλι μεταφορά και αποκικευςθ των δεδομζνων κακϊσ θ ςπουδαιότθτά τουσ είναι μεγάλθ. Το δεφτερο ςθμαντικό ςτοιχείο είναι θ ταχφτθτα. Εφόςον δεν υπάρχει κάποια περιοδικι λειτουργία του κυκλϊματοσ, πρζπει να είμαςτε ςε κζςθ, να αποκθκεφουμε τα δεδομζνα όςο το δυνατό πιο γριγορα. Με αυτό τον τρόπο μπορεί να υπάρξει κάποια εγγφθςθ ότι δεν κα χακοφν δεδομζνα κατά τθ διάρκεια επεξεργαςίασ αυτϊν. Τζλοσ, άλλα όχι λιγότερο ςθμαντικόσ, είναι ο παράγοντασ τθσ εφκολθσ εξαγωγισ αυτϊν των αποτελεςμάτων με τρόπο τζτοιο που να μθν διακόπτεται το πείραμα. Επιπλζον, μασ ενδιαφζρει θ εφκολθ ειςαγωγι παραμζτρων ςτο ςφςτθμα. Γενικά κα μποροφςε να υποςτθριχτεί θ παφςθ του πειράματοσ για να γίνουν κάποιεσ λειτουργίεσ του επεξεργαςτι, αλλά κάτι τζτοιο κα ζπρεπε να προβλεφτεί πριν τθν ανάπτυξθ τθσ πειραματικισ διάταξθσ. Οι ςτόχοι αυτοί είναι ςυγκεκριμζνοι αλλά δεν αναφζρονται μόνο ςε αυτιν τθν εφαρμογι. Υπάρχουν πολλά ςυςτιματα που θ λειτουργία τουσ και οι απαιτιςεισ τουσ μοιάηουν πάρα πολφ με αυτζσ. Πλα τα κρίςιμα ςυςτιματα που ςκοπό ζχουν τθν παρατιρθςθ ενόσ τυχαίου αλλά και ακόμα και περιοδικοφ φαινομζνου μποροφν να ενταχκοφν ςε αυτιν τθν κατθγορία. Για παράδειγμα, ζνα ςφςτθμα παρατιρθςθσ κεραυνϊν. Ζχει εντελϊσ διαφορετικι λειτουργία αλλά ζχει ίδια χαρακτθριςτικά. Σίγουρα δεν μποροφμε να προβλζψουμε πότε κα ςυμβεί και με τι ςυχνότθτα αλλά είναι πολφ ςθμαντικό να αποκθκεφςουμε όλεσ τισ πλθροφορίεσ και να μποροφμε να τισ εξάγουμε χωρίσ να χρειαςτεί να διακοπεί θ λειτουργία του ςυςτιματοσ. Βλζπουμε επομζνωσ ότι από μία application- specific εφαρμογι που αρχικά ξεκίνθςε θ ανάπτυξθ, καταλιγουμε ςε ζνα ςφςτθμα που μπορεί να αναφζρεται ςε μία μεγάλθ γκάμα εφαρμογϊν και ερευνθτικοφ ενδιαφζροντοσ. Να αναφζρουμε και άλλα παραδείγματα εφαρμογισ αυτοφ του ςυςτιματοσ δεν ζχει νόθμα. Οπουδιποτε υπάρχει λόγοσ παρατιρθςθσ τυχαίων γεγονότων κυρίωσ ςπάνιων μπορεί να χρθςιμοποιθκεί χωρίσ να διακόπτει τθν αρχικι λειτουργία του ςυςτιματοσ. 4.2 Σρόποσ χαρακτηριςμού τηλεπικοινωνιακού ςυςτόματοσ Από τα παραπάνω γίνεται κατανοθτόσ ο λόγοσ χαρακτθριςμοφ ενόσ τζτοιου ςυςτιματοσ. Δε κα μποροφςε να γίνει ανάπτυξθ χωρίσ να γίνει πρϊτα χαρακτθριςμόσ. Εφόςον μιλάμε για τυχαία γεγονότα που ςυμβαίνουν ςε τυχαίεσ χρονικζσ ςτιγμζσ, δεν μποροφςε να υπάρξει τρόποσ επιβεβαίωςθσ τθσ ορκισ λειτουργίασ. Γίνεται κατανοθτι θ ανάγκθ φπαρξθσ ενόσ ςυςτιματοσ μοντζλου, που κα μποροφμε εκ των προτζρων να ξζρουμε τθ ςυμπεριφοράσ του, τθ λειτουργία του και τα αποτελζςματα που παράγει να μποροφν να επαλθκευκοφν. 92

109 Ζτςι, μπορεί να γίνει ανάπτυξθ χωρίσ να ζχουμε αυτό κάκε αυτό το ςφςτθμα αλλά ζνα μοντζλο που να προςεγγίηει κάποια χαρακτθριςτικά τθσ ςυμπεριφορά του. Το μοντζλο επομζνωσ, κα ζχει παρόμοιεσ, αν όχι ίδιεσ, ειςόδουσ και εξόδουσ και κα παράγει αποτελζςματα που κα ζχουν παρόμοια μορφι τουλάχιςτον όςο αφορά το μζγεκοσ και το εφροσ των bit. Αναφζραμε παραπάνω ότι μασ ενδιαφζρει πάρα πολφ θ ταχφτθτα αποκικευςθσ των δεδομζνων. Επομζνωσ κα πρζπει να ζχουμε ζναν τρόπο να κάνουμε τθ μζτρθςθ τθσ ταχφτθτασ. Πταν όμωσ μιλάμε για ζνα ολόκλθρο ενςωματωμζνο ςφςτθμα, κάτι τζτοιο δεν είναι εφκολθ υπόκεςθ. Επίςθσ κα πρζπει να είμαςτε ςε κζςθ να δοφμε πϊσ κατανζμεται θ ταχφτθτα και που βρίςκεται το κρίςιμο μονοπάτι από το ςφνολο του software και hardware. Αυτά τα κζματα κα μασ απαςχολιςουν ςε επόμενθ ενότθτα. Το μοντζλο που υιοκετιςαμε είναι ζνασ LFSR ωσ ο πυρινασ του περιφερειακοφ μασ ςυςτιματοσ. Ρριν δοφμε όμωσ γιατί ζγινε αυτι θ επιλογι ασ δοφμε λίγο πιο αναλυτικά τα χαρακτθριςτικά του LFSR Linear Feedback Shift Register Ο Linear Feedback Shift Register είναι ζνασ καταχωρθτισ ολίςκθςθσ του οποίου θ είςοδοσ είναι μια γραμμικι ςυνάρτθςθ των προθγοφμενων καταςτάςεων. Η μονι γραμμικι ςυνάρτθςθ που υλοποιείται γίνεται με χριςθ πυλϊν XOR. Η αρχικι τιμι του LFSR καλείται seed και επειδι θ λειτουργία των καταχωρθτϊν είναι ντετερμινιςτικι, οι ζξοδοι των καταχωριςτϊν μποροφν να υπολογιςτοφν από τθν προθγοφμενθ κατάςταςθ. Επιπλζον, επειδι οι καταχωρθτζσ ζχουν πεπεραςμζνο αρικμό καταςτάςεων, θ ακολουκία κάποια ςτιγμι κα επαναλαμβάνεται. Ωςτόςο, ζνα LFSR με καλά επιλεγμζνθ ςυνάρτθςθ ανάδραςθσ μπορεί να παράγει ακολουκία bit που να εμφανίηεται τυχαία και να ζχει πολφ μεγάλο κφκλο περιόδου. Η μζγιςτθ περίοδοσ μπορεί να είναι 2 n -1 όπου n είναι ο αρικμόσ των register που ζχει το LFSR. [42][63] Το κάκε LFSR μπορεί να χαρακτθριςτεί από το πολυϊνυμο ανάδραςθσ. Η κάκε βακμίδα register καλείτε tap. Το πολυϊνυμο αυτό ουςιαςτικά υποδεικνφει από πια tap γίνεται θ ανάδραςθ. Για παράδειγμα ζχουμε: Ρου αυτό ιςοδυναμεί με το LFSR τθσ Εικόνα R R R 93

110 Εικόνα 4.2 Μορφή LFSR Επίςθσ από το βακμό του πολυωνφμου μποροφμε να βγάλουμε τον αρικμό των taps που ζχει το LFSR. Επιπλζον αν LFSR ζχει βακμό πολυωνφμου n τότε θ μζγιςτθ περίοδοσ είναι 2 n - 1. Αν το πολυϊνυμο είναι πρωταρχικό τότε δίνει των μζγιςτο αρικμό περιόδου. Στα πρωταρχικά πολυϊνυμα δεν παίηει ρόλο θ αρχικι τιμι seed για τθ μζγιςτθ περίοδο. Αρκεί βζβαια θ αρχικι τιμι να μθν είναι 0. Για να ζχουμε το μζγιςτο αρικμό περιόδου, κα πρζπει ο αρικμόσ των taps να είναι άρτιοσ. Εμείσ χρθςιμοποιιςαμε για τθ μοντελοποίθςθ ζνα LFSR των 32 bit. Το πρωταρχικό πολυϊνυμο είναι Ρου μασ δίνει ωσ περίοδο = 4,3 δισ διαφορετικζσ τιμζσ μζχρι να αρχίςουν να επαναλαμβάνονται. Με αυτόν τον τρόπο ζχουμε ζνα κφκλωμα το οποίο παράγει διαφορετικζσ, ανεξάρτθτεσ μεταξφ τουσ τιμζσ. Ραράγει δθλαδι τιμζσ με ζναν ψευδοτυχαίο τρόπο. Η δε περίοδοσ είναι τόςο μεγάλθ που δεν υπάρχει περίπτωςθ να επαναλθφτοφν τιμζσ χωρίσ να το καταλάβουμε τουλάχιςτον ςτα πλαίςια τθσ παροφςασ διπλωματικισ αφοφ το μζγιςτο δυνατό ρολόι που χρθςιμοποιιςαμε είναι 100 MHz. Άρα όλεσ οι δυνατζσ τιμζσ επαναλαμβάνονται κάκε 43 sec. Επίςθσ το LFSR είναι εφκολο ςτθν υλοποίθςθ ςε C και ζτςι μποροφμε με ζνα ςχετικά εφκολο τρόπο να επιβεβαιϊςουμε τα αποτελζςματα και τον ορκό τρόπο λειτουργίασ. Επίςθσ μασ δίνεται θ δυνατότθτα ςτθν περίπτωςθ ςυνεχόμενθσ λειτουργίασ, να μετριςουμε τθν ταχφτθτα αφοφ ξζρουμε τθν ακολουκία από ποίο πριν. Ο κϊδικασ που υλοποιεί το LFSR ςε C για επιβεβαίωςθ των αποτελεςμάτων παρατίκεται ςτθ ςυνζχεια: Το LFSR αποτελεί μία πολφ καλι λφςθ για μοντελοποίθςθ. Ραράγει διανφςματα με ςχεδόν τυχαίο τρόπο. Τα διανφςματα αυτά είναι ανεξάρτθτα μεταξφ τουσ και μποροφμε να ανιχνεφςουμε τυχόν ςφάλματα. Επιπλζον, μποροφμε να αναγνωρίςουμε αυτά τα 94

111 ςφάλματα και να καταλάβουμε τθν αιτία που τα προκαλεί. Βζβαια για τθ μοντελοποίθςθ δεν κα χρειαςτοφμε μόνο το LFSR αλλά και μία τοπικι μνιμθ και ζνα FSM που κα ςυντονίηει τισ διαδικαςίεσ. Στθ ςυνζχεια παρακζτουμε τθ μορφι του μοντζλου: LFSR Two port RAM FSM Εικόνα 4.3 Μοντζλο ςυςτήματοσ Βλζπουμε ότι υπάρχει μία μνιμθ RAM που είναι δφο κυρϊν. Αυτι θ λογικι αναπτφχκθκε για να μπορεί ο επεξεργαςτισ να αντλεί τα δεδομζνα με τθ δικιά του ταχφτθτα χωρίσ να επθρεάηει τθ μεταφορά από τθν άλλθ πλευρά. Αυτό αποτελεί το βαςικό μοντζλο του ςυςτιματοσ. Στθ ςυνζχεια υπιρξαν διάφορεσ παραλλαγζσ ανάλογα με τθν επιβεβαίωςθ τθσ λειτουργίασ που κζλαμε να κάνουμε. Ζχουμε δθλαδι ζνα ςφςτθμα αναφοράσ όπωσ αναλφςαμε πάνω ςτο οποίο κάνουμε τισ αλλαγζσ που κζλουμε και επιβεβαιϊνουμε τθ λειτουργία που χρειάηεται. Με αυτόν τον τρόπο, θ ανάπτυξθ και θ εφαρμογι όςων κάναμε ςτο τθλεπικοινωνιακό μοντζλο γίνεται ςχετικά εφκολα και εξαςφαλίηει τθ λειτουργία και τθν αποφυγι ςφαλμάτων. Το διάγραμμα καταςτάςεων είναι το ακόλουκο: 95

112 Reset Boot up State S0 S1 Internal Reset State Take new values or keep the same values S2 Loop State - Writes date from LFSR to RAM S3 Sent Interrupt State S4 Hold State Loop State Εικόνα 4.4 Διάγραμμα καταςτάςεων Η κατάςταςθ S0 είναι θ αρχικι κατάςταςθ τθν οποία κάνει boot up το κανάλι. Στθ ςυνζχεια περνάει ςτθν S1 ςτθν οποία γίνεται εςωτερικό reset και τροφοδοτείται το LFSR με το seed ςτο οποίο κζλουμε να δουλζψει. Στθ ςυνζχεια περνάμε ςτθν S2 ςτθν οποία τα δεδομζνα που παράγονται από το LFSR γράφονται ςτθν τοπικι μνιμθ. Αυτι είναι μια επαναλθπτικι διαδικαςία που επαναλαμβάνεται όςεσ φορζσ ορίηουμε. Στισ αρχικζσ δοκιμζσ ζκανε 64 επαναλιψεισ. Στθ ςυνζχεια όμωσ οι επαναλιψεισ αυξικθκαν και μζχρι τισ 4032 τιμζσ. Μετά περνάμε ςτθν κατάςταςθ που ςτζλνεται interrupt ςτο μικροεπεξεργαςτι που είναι μια κατάςταςθ που κρατάει ζνα clock. Στθ ςυνζχεια περνάμε ςτθν S4 που είναι μία κατάςταςθ ςτθν οποία το LFSR περιμζνει μζχρι να πάρει ο επεξεργαςτισ τα δεδομζνα από τθν τοπικι μνιμθ. Αρχικά θ κατάςταςθ αυτι δεν υπιρχε. Ρροςτζκθκε όμωσ ςτθν πορεία για τθν ορκι λειτουργία του κυκλϊματοσ. Στισ τελικζσ εκδόςεισ, το loop τθσ κατάςταςθσ αυτισ δεν είναι ςτατικό αλλά κακορίηεται δυναμικά από τον επεξεργαςτι ςτζλνοντασ ςιμα wait. Αυτό το ςιμα ςτθ ςυνζχεια μπορεί να μεταφζρεται ςτα εςωτερικά ςτοιχεία για να παγϊνει το πείραμα μζχρι να αποκθκευκοφν με αςφάλεια τα δεδομζνα. 96

113 4.3 Αρχιτεκτονικό ςυςτόματοσ Στθν προθγοφμενθ ενότθτα είδαμε τον τρόπο που γίνεται θ μοντελοποίθςθ, τουσ λόγουσ που θ μοντελοποίθςθ είναι ζνα απαραίτθτο βιμα και παρουςιάςαμε τζλοσ τθ βαςικι αρχιτεκτονικι του μοντζλου που χρθςιμοποιοφμε για τθν ανάπτυξθ. Σε αυτιν τθν ενότθτα κα παρουςιάςουμε τθν αρχιτεκτονικι του ςυςτιματοσ. Αρχικά πρζπει να κάνουμε διαχωριςμό του τρόπου με τον οποίο κα γίνεται ενθμζρωςθ του επεξεργαςτι για τθν φπαρξθ δεδομζνων. Οι δφο βαςικοί τρόποι είναι μζςω polling και μζςω interrupts. Μζςω polling, ο επεξεργαςτισ αναλαμβάνει να ρωτάει ςε τακτά χρονικά διαςτιματα το περιφερειακό αν ζχει δεδομζνα. Με τθ μζκοδο των interrupts, ο επεξεργαςτισ μπορεί να εκτελεί λειτουργίεσ και ςε περίπτωςθ που το περιφερειακό ζχει δεδομζνα, αναλαμβάνει να ενθμερϊςει τον επεξεργαςτι ςτζλνοντασ ζνα interrupt. Εμείσ επιλζγουμε το δεφτερο τρόπο. Αναλυτικά ςτοιχεία ςχετικά με αυτιν τθν επιλογι αναφζρονται ςε επόμενθ ενότθτα. Σε προθγοφμενεσ ενότθτεσ αναλφςαμε τα κανάλια επικοινωνίασ, τισ μνιμεσ που υπάρχουν και τα διάφορα περιφερειακά που απαρτίηουν ζνα ενςωματωμζνο ςφςτθμα. Εδϊ κα δοφμε τθ ςυνολικι αρχιτεκτονικι του ςυςτιματοσ. Στθν Εικόνα 4.5 παρουςιάηεται το μπλοκ διάγραμμα του ςυνολικοφ ςυςτιματοσ. 97

114 Εικόνα 4.5 Overall System Block Diagram 98

115 Το Block διάγραμμα τθσ Εικόνα 4.5 παράγεται αυτόματα μζςα από το XPS. Βλζπουμε ότι θ αρχιτεκτονικι του ςυςτιματοσ βαςίηεται ςε όςα αναφζραμε ςτα προθγοφμενα κεφάλαια. Υπάρχουν δθλαδι διαφορετικά κανάλια επικοινωνίασ ανάλογα με το περιφερειακό που κζλουμε να επικοινωνιςει. Ο επεξεργαςτισ τθν πάνω αρχιτεκτονικι είναι ο PowerPC 440 και ζχει ζναν εξελιγμζνο τρόπο να επικοινωνεί με τθ μνιμθ. Αυτό γίνεται μζςα από το κανάλι επικοινωνίασ Multi Memory Controller. Η μνιμθ από τθν πλευρά τθσ είναι θ DDR2 SDRAM που είναι ουςιαςτικά και θ πιο γριγορθ μνιμθ που χρθςιμοποιιςαμε για τθν ανάπτυξθ τθσ παροφςασ διπλωματικισ και με χωρθτικότθτα 256 ΜΒ. Βλζπουμε επίςθσ τον επεξεργαςτι να επικοινωνεί με το κφκλωμα που κάνει reset και με το JTAG. Επιπλζον επικοινωνεί με το PLB. Το κφκλωμα reset είναι απαραίτθτο να υπάρχει δεδομζνου ότι δεν μπορεί με ζνα και μόνο reset να γίνεται reset ςτον επεξεργαςτι και ςτα περιφερειακά. Ο επεξεργαςτισ πρζπει να είναι ςε κζςθ να παίρνει reset από άλλθ πθγι και να μπορεί ςτθ ςυνζχεια να ςτζλνει reset ςτα υπόλοιπα κυκλϊματα και να κακορίηει τισ κατάλλθλεσ παραμζτρουσ για να γίνει ςωςτά το boot up των περιφερειακϊν. Τζλοσ, να αναφζρουμε ότι αυτό το κφκλωμα ςυνδζεται και με εξωτερικό διακόπτθ (κουμπί) ςτο FPGA με το οποίο μποροφμε να ςτείλουμε reset ςτον επεξεργαςτι. Το JTAG ςτοιχείο που βλζπουμε, χρθςιμοποιείται για debugging και για profiling των εφαρμογϊν που αναπτφςςουμε. Επίςθσ μζςω του JTAG μασ δίνεται θ δυνατότθτα να παρατθροφμε τθ κερμοκραςία ςε πραγματικζσ ςυνκικεσ λειτουργίασ. Ζτςι μασ δίνεται θ δυνατότθτα να ελζγξουμε για τυχόν λειτουργία πάνω από τα επιτρεπτά όρια λειτουργίασ. Επίςθσ μζςω αυτοφ μασ δίνεται θ δυνατότθτα να παρατθροφμε μεταβολζσ τθσ κερμοκραςίασ ανάλογα με το φόρτο εργαςίασ. Στον PowerPC 440 και με τθν ζκδοςθ 12.2 δεν υποςτθρίηεται ςυνάρτθςθ που να κάνει stand by τον επεξεργαςτι. Ακόμα και οι ςυναρτιςεισ sleep που δίνονται για χριςθ, απλά ρίχνουν τον επεξεργαςτι ςε ζνα βρόχο για ςυγκεκριμζνο διάςτθμα χωρίσ ουςιαςτικι μείωςθ τθσ κατανάλωςθσ και επομζνωσ τθσ κερμοκραςίασ. Κάτι τζτοιο κα αποτελοφςε ιδιαίτερο ενδιαφζρον όμωσ. Πλα τα παραπάνω αποτελοφν peer-to-peer επικοινωνία μζςω καναλιϊν επικοινωνίασ μεταξφ του επεξεργαςτι και των περιφερειακϊν που ςυνδζονται ςε αυτά. Δεν υπάρχει όμωσ μόνο αυτοφ του είδουσ επικοινωνία. Υπάρχει και το PLB κανάλι. Στο PLB ςυνδζονται ςχεδόν όλα τα γενικοφ ςκοποφ περιφερειακά. Γενικοφ ςκοποφ με τθν ζννοια ότι δεν απαιτείται θ αποκλειςτικι χριςθ ενόσ καναλιοφ επικοινωνίασ για να μιλιςουν με τον επεξεργαςτι. Εδϊ βλζπουμε δφο κατθγορίεσ. Υπάρχουν τα περιφερειακά που ςυνδζονται ςε master mode και τα περιφερειακά που ςυνδζονται ςε slave mode. Σε master mode, ςυνδζονται αυτά τα περιφερειακά τα οποία θ επικοινωνία με τον επεξεργαςτι είναι πολφ ςθμαντικι ι και κρίςιμθ και πρζπει να γίνει με προτεραιότθτα μεγαλφτερθ ςε ςχζςθ με τα slave. Εδϊ ανικει θ two port block ram ι αλλιϊσ BRAM. Είναι δφο κυρϊν μνιμθ, μία κφρα για δεδομζνα και άλλθ μία για εντολζσ. Ωςτόςο, βλζπουμε ότι ςτθν περίπτωςθ που κζλουμε τθν άντλθςθ δεδομζνων από ζνα περιφερειακό και τθν αποκικευςθ ςτθ μνιμθ κάτι τζτοιο δεν ςυμφζρει κακϊσ δεν μπορεί να γίνει one way μεταφορά αρχείων. Θα πρζπει πρϊτα να μεταφερκοφν ςτον επεξεργαςτι και μετά από εκεί ςτθ μνιμθ. 99

116 Σε slave mode, βλζπουμε όλα τα περιφερειακά που απομζνουν. Ζχουμε τθ ςειριακι κφρα επικοινωνίασ, τον Ethernet controller, τον timer, τον interrupt controller και το δικό μασ περιφερειακό υλοποιθμζνο ςε VHDL. Αυτά τα περιφερικά ζχουν τθν ίδια προτεραιότθτα και μποροφν να μοιράηονται το φυςικό μζςο. Τζλοσ, ωσ ξεχωριςτό περιφερειακό βλζπουμε το clock generator. Αυτό δεν επικοινωνεί με κάποιον τρόπο με τον επεξεργαςτι αλλά επικοινωνεί με όλα τα περιφερειακά με τθν ευρφτερθ ζννοια και δίνει τα ρολόγια. Τα περιφερειακά δεν ζχουν όλα τθν ίδια ςυχνότθτα. Στθν παραπάνω αρχιτεκτονικι για παράδειγμα ο επεξεργαςτισ τρζχει ςτα 400 MHz, θ DDR2 ςτα 266 MHz ενϊ τα υπόλοιπα περιφερειακά και το PLB κανάλι ςτα 100 MHz. Πλα αυτά παίρνουν τα ρολόγια τουσ από το clock generator. Στθ ςυνζχεια παρατίκεται ο clock wizard και παρουςιάηεται ο τρόποσ με τον οποίο μπορεί να γίνουν αλλαγζσ ςτα ρολόγια του ςυςτιματοσ. 100

117 Εικόνα 4.6 Clock Generator Wizard Βλζπουμε επομζνωσ ότι με ζνα ςχετικά απλό τρόπο μποροφμε να αλλάξουμε τουσ χρονιςμοφσ του ςυνολικοφ ςυςτιματοσ, αρκεί βζβαια να μθν παραβιάηουμε τουσ περιοριςμοφσ ςε χρονιςμοφσ ςε κάποιο ςτοιχείο του ενςωματωμζνου ςυςτιματοσ. 101

118 4.4 Custom IP Core Σρόποσ ειςαγωγόσ Σε αυτι τθν ενότθτα κα δοφμε τον τρόπο που μποροφμε να ειςάγουμε το τθλεπικοινωνιακό ςφςτθμα ι το LFSR ωσ περιφερειακό του ενςωματωμζνου ςυςτιματοσ. Θεωροφμε απαραίτθτο να αναφζρουμε αυτό το κομμάτι για να γίνει κατανοθτόσ ο τρόποσ με τον οποίο αλλθλεπιδρά με τον επεξεργαςτι. Η διαδικαςία γίνεται μζςα από τον CIP wizard, ωςτόςο απαιτείται καλι κατανόθςθ των μθχανιςμϊν. Ασ δοφμε ςτθ ςυνζχεια τθ διαδικαςία: Εικόνα 4.7 Create Peripheral Wizard 102

119 Με βάςθ τον παραπάνω οδθγό, δθμιουργοφμε ζνα template όςο το δυνατό πιο κοντά ςτισ ανάγκεσ μασ. Με αυτό τον τρόπο αποφεφγουμε πολλά κομμάτια ςτα οποία μποροφν να γίνουν ςχεδιαςτικά ςφάλματα. Αρχικά επιλζγουμε τον τρόπο με τον οποίο μπορεί να επικοινωνεί το περιφερειακό μασ με το PLB. Ορίηουμε ωσ πρϊτθ επιλογι αν επιτρζπεται θ αίτθςθ reset μζςω του λογιςμικοφ. Αυτι θ λειτουργία είναι πολφ ςθμαντικι και απαιτεί εξελιγμζνθ υλοποίθςθ. Το reset εδϊ είναι ανεξάρτθτο από το reset του καναλιοφ και μπορεί να γίνει ανεξάρτθτα από τα άλλα περιφερειακά. Στθ ςυνζχεια ζχουμε τθν επιλογι να χρθςιμοποιιςουμε FIFO λογικι για εγγραφι και ανάγνωςθ μεταβλθτϊν. Αυτι θ επιλογι υλοποιείται με μεταβλθτι FIFO με ςκοπό να μποροφν τα ςυμβαδίςει θ γριγορθ ταχφτθτα του περιφερειακοφ με τθν αργι του επεξεργαςτι. Ο επεξεργαςτισ τρζχει με τζςςερισ φορζσ το ρολόι του περιφερειακοφ, χρειάηεται όμωσ πολφ περιςςότερουσ κφκλουσ για να αποκθκεφςει ζνα δεδομζνο. Στθ ςυνζχεια ζχουμε τθν επιλογι του interrupt. Με αυτό τον τρόπο δίνεται θ δυνατότθτα να παράγουμε από το περιφερειακό μασ ζνα interrupt. Ππωσ αναλφςαμε παραπάνω, ο interrupt controller είναι και αυτόσ ζνα slave περιφερειακό. Άρα με αυτό τον τρόπο γίνεται interconnection μεταξφ δφο περιφερειακϊν ςε slave mode. Οι software registers είναι ουςιαςτικά και ο τρόποσ επικοινωνίασ που επιλζγουμε. Γίνεται ανάκεςθ καταχωρθτϊν του λογιςμικοφ ςε φυςικοφ πόρουσ του ςυςτιματοσ. Μποροφμε να ορίηουμε μζχρι και 4096 registers. Αυτοί με βάςθ το template είναι διπλισ κατεφκυνςθσ. Μποροφν δθλαδι και να διαβάηονται αλλά και να γράφονται από το λογιςμικό. Αυτό βζβαια εμείσ πρζπει να το αλλάξουμε κακϊσ ςτο τθλεπικοινωνιακό ςφςτθμα και ςτο μοντζλο του ζχουμε ειςόδουσ και εξόδουσ ωσ ξεχωριςτά ςιματα. Οι software register αντιςτοιχοφν ουςιαςτικά ςε registers ςε υλικό(variable ςτθν διλωςθ process ςτθ VHDL) Η αντιςτοίχιςθ γίνεται μζςα από εικονικι διευκυνςιοδότθςθ του περιφερειακοφ. Εμείσ για παράδειγμα όταν κζλουμε να ανακτιςουμε δεδομζνα και να τα αποκθκεφςουμε, χρθςιμοποιοφμε δφο τζτοιουσ registers. Ο ζνασ δίνει ουςιαςτικά τθ διεφκυνςθ προσ ανάγνωςθ ςτθν τοπικι μνιμθ του περιφερειακοφ και ο άλλοσ αποκθκεφει προςωρινά τα δεδομζνα που ανακτϊνται από τθν τοπικι μνιμθ. Με αυτόν τον τρόπο εξαςφαλίηουμε ότι τα δεδομζνα που κα παίρνουμε κα είναι ςωςτά και δεν κα χάνονται δεδομζνα λόγω διαφορετικισ ταχφτθτασ του περιφερειακοφ με τον επεξεργαςτι. Με τθ χριςθ του logic memory space ουςιαςτικά ςτο template καταςκευάηεται θ μεκοδολογία που αναπτφξαμε παραπάνω. Δεν επιλζξαμε κάτι τζτοιο για να ζχουμε εμείσ τον ζλεγχο και για να μποροφμε να κατανοιςουμε καλφτερα τθ διαδικαςία. Η τελευταία επιλογι είναι θ χριςθ data phase timer που μασ επιτρζπει να ελζγχουμε το ρολόι μζςω λογιςμικοφ. Συνοπτικά, κάνει gated clock που μπορεί να ελζγχεται απ register του λογιςμικοφ. Πλα τα παραπάνω αναφζρονται ςτθν περίπτωςθ που δουλεφουμε ςε slave mode. Για τθν ανάπτυξθ εδϊ, δεν χρειάςτθκε να δοφμε τθν επιλογι του master mode. Άλλωςτε τα περιςςότερα περιφερειακά είναι ςε slave mode οπότε κι εμείσ αναπτφξαμε ςε slave mode [6] [12] [13] [14] [15] [16]. 103

120 4.4.2 Ειςαγωγό διακοπών ςυςτόματοσ Εικόνα 4.8 Peripheral Wizard Interrupt Service Μζςω του οδθγοφ δθμιουργίασ περιφερειακοφ μποροφμε να επιλζξουμε τον τρόπο και τον αρικμό των interrupt που κα ςτζλνονται ςτον interrupt controller. Στθ ςυνζχει αφοφ ολοκλθρωκεί θ διαδικαςία δθμιουργίασ και ειςαγωγισ, μποροφμε να κάνουμε τθ φυςικι ςφνδεςθ του interrupt με τον interrupt controller όπωσ παρουςιάηεται ςτθ ςυνζχεια: 104

121 Εικόνα 4.9 Interrupt Connection Dialog Ραρατθροφμε ότι εκτόσ από τθν ανάκεςθ των διακοπϊν ςτον ελεγκτι διακοπϊν, μποροφμε να αλλάξουμε και προτεραιότθτα μεταξφ διακοπϊν. Με αυτόν τον τρόπο επομζνωσ, μποροφμε να φτιάξουμε ζνα ςφςτθμα με βάςθ τισ δικζσ μασ ανάγκεσ και να ορίςουμε τισ προτεραιότθτεσ εξυπθρζτθςθσ διακοπϊν. Αυτό όμωσ ςτο ςφςτθμα που αναπτφςςουμε δεν ζχει μεγάλθ ςπουδαιότθτα. Αυτό που μασ ενδιαφζρει εμάσ είναι ανεξάρτθτα με ποια αίτθςθ διακοπισ εξυπθρετείται, αυτό να γίνεται γριγορα ϊςτε να μπορεί να εξυπθρετθκεί θ επόμενθ Software Registers Στθ ςυνζχεια τθσ δθμιουργίασ του template του περιφερειακοφ μποροφμε να ορίςουμε τον αρικμό των καταχωρθτϊν που κα διατίκενται προσ χριςθ. 105

122 Εικόνα 4.10 User Software Resister Εδϊ ορίηουμε τον αρικμό των καταχωρθτϊν που μπορεί να υποςτθρίξει το περιφερειακό μασ. Βλζπουμε ότι όλοι οι register περνάνε μζςα από το ίδιο φυςικό μζςο και όχι παράλλθλα. Αυτό όμωσ είναι απόλυτα λογικό δεδομζνου ότι ο επεξεργαςτισ δεν υποςτθρίηει VLIW εντολζσ και κατά επζκταςθ παραλλθλιςμό ςτθν εκτζλεςθ εντολϊν. Στάδια pipeline υπάρχουν όπωσ αναφζρουμε και ςτο 1 ο κεφάλαιο 3-5 ι 7 ανάλογα με τον επεξεργαςτι αλλά ακόμα και αυτό δεν είναι παραλλθλιςμόσ. 106

123 4.4.4 Επύπεδα αρχιτεκτονικόσ υποςυςτόματοσ Στθ ςυνζχεια παρουςιάηουμε τα επίπεδα υλοποίθςθσ που απαιτοφνται για τθν επικοινωνία του top entity ςε VHDL με τον επεξεργαςτι, χρθςιμοποιϊντασ τθ λογικι που αναπτφξαμε. PLB V4.6 RAM FSM Sub-System User Logic User Logic Interface Interface Καλαιηνύ επηθνηλσλίαο Εικόνα 4.11 Τρόποσ ςφνδεςησ custom περιφερειακοφ Για να γίνει θ ςφνδεςθ του υποςυςτιματοσ που κζλουμε, βλζπουμε ότι πρζπει να περάςουμε από πολλά επίπεδα. Ουςιαςτικά δεν υπάρχει απευκείασ ςφνδεςθ του υποςυςτιματοσ με τον επεξεργαςτι. Απευκείασ ςφνδεςθ δεν υπάρχει περίπτωςθ να επιτευχκεί και αυτό λόγω τθσ διαφοράσ ςτθν ταχφτθτα που υπάρχει δεν μπορεί το υποςφςτθμα να ςτζλνει δεδομζνα ςε κάκε clock και ο επεξεργαςτισ να είναι ςε κζςθ να διαβάηει και να αποκθκεφει τα δεδομζνα. Για τον ίδιο λόγο δεν μπορεί να γίνει και επικοινωνία από τον επεξεργαςτι προσ το περιφερειακό μασ. Αυτό το ςυμπζραςμα βγικε φςτερα από πειραματικζσ μετριςεισ. Βλζπουμε ότι προκειμζνου να επικοινωνιςει ο επεξεργαςτισ με το περιφερειακό μασ, απαιτοφνται άλλα τρία επίπεδα ςε VHDL. Το ζξω 107

124 επίπεδο (1 ο ) είναι το interface του καναλιοφ επικοινωνίασ. Στο 2 ο επίπεδο ζχουμε τθν επεξεργαςία των ςτοιχίων του καναλιοφ επικοινωνίασ και τθν μορφοποίθςθσ ςε μορφι κατάλλθλθ για τθν user λογικι. Σε αυτό το αρχείο γίνονται οι διαφοροποιιςεισ του template ςτον οδθγό δθμιουργίασ περιφερειακϊν. Στο 3 ο επίπεδο είναι θ λογικι μασ για τον τρόπο με τον οποίο κα διαβάηονται τα δεδομζνα από τα παραπάνω επίπεδα και κα περνιοφνται ςτα παρακάτω επίπεδα. Για παράδειγμα, αν μία μεταβλθτι αλλάξει το πότε αυτι κα περάςει το υποςφςτθμα μασ, κακορίηεται εδϊ. Στο 4 ο επίπεδο είναι το ςφςτθμα που κζλουμε να ορίηουμε ωσ περιφερειακό. 4.5 Ανϊπτυξη λογιςμικού και οδηγού (Drivers) Αρχιτεκτονικό λογιςμικού ςυςτόματοσ Στθν ενότθτα αυτι κα αναλφςουμε τον τρόπο με τον οποίο αναπτφςςεται το λογιςμικό και τον τρόπο με τον οποίο χρθςιμοποιοφνται και ςτινονται οι οδθγοί (drivers). Στο πρϊτο κεφάλαιο, είχαμε αναλφςει τισ αρχιτεκτονικζσ λογιςμικοφ που υπάρχουν κακϊσ και τα χαρακτθριςτικά που αυτζσ ζχουν. Στθν παροφςα ανάπτυξθ, λόγω του περιοριςμοφ ςτθν ταχφτθτα, επιλζγουμε ζνα απλό βρόχο ελζγχου. Η γενικι ιδζα είναι: 108

125 CPU Main programm RAM Control loop Εικόνα 4.12 Simple Control loop Ξεκινάει ο επεξεργαςτισ από μία διεφκυνςθ του Control Loop. Στθ ςυνζχεια το control Loop δίνει τον ζλεγχο ςτο κυρίωσ πρόγραμμα. Τρζχει το πρόγραμμα και όταν ολοκλθρωκεί θ διαδικαςία επιςτρζφει ςτο Control loop, αυτι όμωσ τθ φορά δεν υπάρχει το link για να τρζξει ξανά το πρόγραμμα. Πταν φτάςουμε ςτο ςτάδιο παραγωγισ (release) μποροφμε να αντικαταςτιςουμε το control loop με το main πρόγραμμά μασ. Σε αυτι όμωσ τθν περίπτωςθ, κα πρζπει να τροποποιιςουμε το πρόγραμμα για να μθν κλείνει ποτζ το loop. Αν κλείςει, δεν μπορεί μετά ο επεξεργαςτισ να βρεκεί ξανά ςτθν αρχι με αποτζλεςμα να χρειάηεται reset για να μπορεί να ξεκινιςει εκ νζου. Ωσ εναλλακτικι λφςθ, μποροφμε να χρθςιμοποιιςουμε κάποιον ζτοιμο kernel. Μια τζτοια προςζγγιςθ δίνεται μζςα από το XILKERNEL τθσ XILINX. Αυτόσ είναι ζνασ πυρινασ τφπου Linux που προςφζρει τθ δυνατότθτα εκτζλεςθσ πολλαπλϊν διεργαςιϊν. Κάτι τζτοιο όμωσ κα επιβάρυνε το ςφςτθμα και δεν κα είχαμε τα αποτελζςματα που περιμζνουμε. Μζςω τθσ αρχιτεκτονικισ που επιλζξαμε, ζχουμε εμείσ τον πλιρθ ζλεγχο και μποροφμε να 109

126 επθρεάςουμε και ςτιςουμε ζνα ςφςτθμα με βάςθ τισ ανάγκεσ μασ. Επίςθσ ζτςι όπωσ ζχουμε αναπτφξει το λογιςμικό, ο ζλεγχοσ δεν επιςτρζφει ποτζ ςτο Control loop. Στθν main ςυνάρτθςθ υπάρχει ζνα while που δεν τερματίηει ποτζ Εικονικό διευθυνςιοδότηςη Μζςω τθσ εικονικισ διευκυνςιοδότθςθσ, μπορεί ο επεξεργαςτισ να ξζρει που βρίςκεται το περιφερειακό και να επικοινωνεί μαηί του κζτοντασ διευκφνςεισ. Η διαδικαςία διευκυνςιοδότθςθσ γίνεται αυτόματα μζςα από το XPS (Xilinx Platform Studio) μποροφμε όμωσ να αλλάξουμε τισ διευκφνςεισ και ενδεχομζνωσ να προςκζςουμε καινοφργιεσ ςε καινοφργια περιφερειακά όπωσ παρουςιάηεται ςτθ ςυνζχεια. Εικόνα 4.13 Virtual Address Generator Βλζπουμε ότι ςτθν ίδια κζςθ που βρίςκονται οι εικονικζσ διευκφνςεισ, είναι και οι διευκφνςεισ των μνθμϊν. Οι διευκφνςεισ βζβαια των μνθμϊν περνάνε από ζνα ολοκλθρωμζνο που προςκζτει ι αφαιρεί ζνα offset για να δθμιουργιςει τισ πραγματικζσ διευκφνςεισ. Η διαδικαςία τθσ εικονικισ διευκυνςιοδότθςθσ και τθσ ανάκεςθσ αυτϊν ςε περιφερειακά είναι ιδιαίτερα δθμοφιλισ ( αν όχι αποκλειςτικι ) ςτθ ςχεδίαςθ υπολογιςτικϊν ςυςτθμάτων Οδηγού (Drivers) Για να μπορεί ο επεξεργαςτισ να επικοινωνεί με τα περιφερειακά και όχι μόνο πρζπει να γνωρίηει τον τρόπο που μπορεί να γίνει θ επικοινωνία. Αυτό γίνεται μζςα από ζνα ςφνολο βιβλιοκθκϊν. Από αυτζσ τισ βιβλιοκικεσ άλλεσ είναι ζτοιμεσ και οι ςυναρτιςεισ και παράμετροι δεν αλλάηουν, άλλεσ όμωσ προορίηονται για το ςυγκεκριμζνο project και 110

127 καταςκευάηονται τθ ςτιγμι που ειςάγουμε τισ παραμζτρουσ του υλικοφ ι ςε κάποιο βιμα μζςα από το XPS. Για πολλζσ από τισ ςυναρτιςεισ που προςφζρει θ XILINX μπορεί κάποιοσ να αντλιςει πλθροφορίεσ μζςα από το «OS and Libraries Document Collection» (UG643). Σε αυτό αναφζρονται κάποιεσ από τθσ ςυναντιςεισ και όχι όλεσ. Επίςθσ, κακϊσ βγαίνουν καινοφργιεσ εκδόςεισ τθσ ςουίτασ εφαρμογϊν, οι βιβλιοκικεσ ανανεϊνονται και οι παλιζσ παφουν να ιςχφουν. Ρολλζσ χριςιμεσ πλθροφορίεσ μπορεί κανείσ να αντλιςει μζςα από το project Navigator του EDK μζςω του Board Support Package. Εικόνα 4.14 Board Support Package Μζςω αυτοφ, ζχουμε πρόςβαςθ ςτο API (Application Programming interface) ςτο οποίο μποροφμε να δοφμε ακριβϊσ πωσ ςυντάςςεςαι, τι ορίςματα παίρνει, τι τιμζσ επιςτρζφει αλλά και τι ακριβϊσ κάνει θ κάκε ςυνάρτθςθ. Ζνα παράδειγμα παρουςιάηεται ςτθ ςυνζχεια [8]. 111

128 Εικόνα 4.15 GPIO API Software Drivers Τζλοσ, από όλεσ τισ ςυναρτιςεισ μποροφμε να δοφμε τον κϊδικα, με ςχόλια που βοθκάνε ςτθν κατανόθςι του και ςτον τρόπο με τον οποίο μποροφμε να χρθςιμοποιιςουμε τισ ςυγκεκριμζνεσ ςυναρτιςεισ. Αυτό γίνεται από μζςα από τον εξελιγμζνο editor που είναι βαςιςμζνοσ ςτο Eclipse του SDK. Εικόνα 4.16 MFS library example Τζλοσ, το πιο ςθμαντικό αρχείο όςο αφορά τθ ςυνεργαςία υλικοφ και λογιςμικοφ είναι το αρχείο περιγραφισ του hardware. Αυτό είναι μοναδικό για κάκε project του SDK. Το αρχείο αυτό εξάγεται από το XPS και περιζχει πλθροφορίεσ για το τι είδουσ hardware υπάρχει και ςε ποιεσ εικονικζσ διευκφνςεισ είναι αυτό ανακεμζνο. Επίςθσ ςτο αρχείο αυτό υπάρχουν διάφορεσ πλθροφορίεσ ςχετικά με τον τρόπο που μπορεί να γίνει θ επικοινωνία. Για παράδειγμα αναφζρει τον τφπο του καναλιοφ που υποςτθρίηει το ςυγκεκριμζνο περιφερειακό. Στο αρχείο αυτό περιλαμβάνεται και ονοματολογία των περιφερειακϊν για 112

129 να μποροφν εφκολα να ςυνεργάηονται οι βιβλιοκικεσ. Το αρχείο αυτό είναι το xparameters.h. Ζνα μζροσ αυτοφ παρουςιάηεται ςτθν Εικόνα Εικόνα 4.17 "xparameters.h" Η ανάπτυξθ λογιςμικοφ γίνεται ςε C ι C++ και υπάρχει ο κατάλλθλοσ compiler που μεταφράηει τον κϊδικα ςε γλϊςςα μθχανισ προοριςμζνο για το Microblaze ι PowerPC ανάλογα με τθν περίπτωςθ. Το παραχκζν αρχείο είναι το elf αρχείο όπωσ ζχουμε αναλφςει ςτο κεφάλαιο

130 5 Διερεύνηςη και αξιολόγηςη λύςεων Στα προθγοφμενα κεφάλαια είδαμε τα γενικά χαρακτθριςτικά των ενςωματωμζνων ςυςτθμάτων τθσ Xilinx και πωσ αυτά αλλθλεπιδροφν και ςυνεργάηονται μεταξφ τουσ. Επίςθσ, διατυπϊκθκε το πρόβλθμα και οι απαιτιςεισ που αυτό ζχει και οι προδιαγραφζσ που πρζπει να ακολουκιςει. Σε αυτό το κεφάλαιο διερευνοφμε τισ επιλογζσ που ζχουμε και τισ λφςεισ που μποροφν να υπάρξουν. Οι λφςεισ που προτείνουμε εδϊ αναφζρονται ςτα ςθμερινά ςυςτιματα, τισ τωρινζσ ανάγκεσ και τισ ςθμερινζσ δυνατότθτεσ των αναπτυξιακϊν. Η ανάπτυξθ όμωσ ακολουκεί μια διαδικαςία διαχρονικι που μπορεί να εφαρμοςτεί ενδεχομζνωσ και ςε μελλοντικά ςυςτιματα. Οι προτάςεισ που υπάρχουν εδϊ, μποροφν να χωριςτοφν ςε τρεισ κατθγορίεσ προςεγγίςεων τζτοιου είδουσ προβλθμάτων. Το κεφάλαιο αυτό είναι χωριςμζνο ςε ενότθτεσ με βάςθ τθ λφςθ που προτείνεται. Αρχικά κα αναφζρουμε τθ ςειριακι επικοινωνία ωσ μια λφςθ. Στθ ςυνζχεια εξετάηουμε τθ χριςθ CompactFlash ωσ το κφριο αποκθκευτικό μζςο. Μετά προχωράμε ςτθ χριςθ τθσ DDR και DDR2. Στθν τελευταία ενότθτα γίνεται αξιολόγθςθ των λφςεων που προτείνονται και παρουςιάηονται τα κριτιρια επιλογισ. Οι λφςεισ που προτείνονται εδϊ, αναπτφχκθκαν είτε εξολοκλιρου ι μζχρι κάποιο ςθμείο μζχρι να εξάγουμε τισ απαραίτθτεσ μετριςεισ και τα ςυμπεράςματα να βαςίηονται ςε πραγματικά δεδομζνα. 5.1 Επικοινωνύα μϋςω ςειριακόσ θύρασ Ο πιο εφκολοσ τρόποσ όςο αφορά τθν επικοινωνία είναι μζςω τθσ ςειριακισ κφρασ. Με αυτόν τον τρόπο τα δεδομζνα αποκθκεφονται προςωρινά ςε καταχωρθτζσ ι ςε κάποιον πίνακα και ςτθ ςυνζχεια ςτζλνονται ςτθ ςειριακι είςοδο / ζξοδο. Απαραίτθτθ προχπόκεςθ ενόσ τζτοιου ςυςτιματοσ είναι θ φπαρξθ ενόσ υπολογιςτι που κα τρζχει κάποιο πρόγραμμα και κα αναλαμβάνει να ςυλλζγει και να αποκθκεφει τα δεδομζνα ςε αρχεία Σρόποσ αποθόκευςησ Τα δεδομζνα ςε αυτιν τθν περίπτωςθ, δεν αποκθκεφονται τοπικά αλλά μεταφζρονται για αποκικευςθ ςε ζνα υπολογιςτικό ςφςτθμα. Το υπολογιςτικό ςφςτθμα πρζπει να είναι ςε κατάςταςθ αναμονισ και να μπορεί να ζχει τα μζςα να αναγνωρίςει και να αποκθκεφςει κατάλλθλα τα δεδομζνα ςε αρχεία. Επίςθσ κα πρζπει να μπορεί να επιτφχει αμφίδρομθ επικοινωνία και να μπορεί να ςτείλει παραμζτρουσ ςτο ςφςτθμα. Η γενικι αρχιτεκτονικι ενόσ τζτοιου ςυςτιματοσ παρουςιάηεται ςτθν Εικόνα 5.1 Αρχιτεκτονικι ςειριακισ ςφνδεςθσεικόνα

131 CPU Serial Serial CPU Τνπηθή κλήκε Sub system FPGA Αλαπηπμηαθό Board Υπνινγηζηηθό ζύζηεκα Εικόνα 5.1 Αρχιτεκτονική ςειριακήσ ςφνδεςησ Διϊγραμμα ροόσ δεδομϋνων Με βάςθ τθν αρχιτεκτονικι που αναλφςαμε ςτο προθγοφμενο κεφάλαιο, και το δικό μασ περιφερειακό αλλά και θ ςειριακι κφρα είναι slave mode του PLB. Επομζνωσ, τα δεδομζνα κα περνάνε πρϊτα από τον επεξεργαςτι και τισ τοπικζσ μνιμεσ και μετά κα ςτζλνονται ςτο περιφερειακό τθσ ςειριακισ κφρα για να μεταφερκοφν από εκεί ςτο υπολογιςτικό ςφςτθμα. Στθ ςυνζχεια ακολουκεί το διάγραμμα ροισ για τθ μεταφορά των δεδομζνων. 115

132 Γεδνκέλα πεξηθεξεηαθνύ Γεδνκέλα ζε αξρείν Δλεκέξσζε MicroBlaze Μεηαθνξά θαη απνζήθεπζε ζε αξρείν Μεηαθνξά δεδνκέλσλ από πεξηθεξεηαθό ζην MicroBlaze Πξνεηνηκαζία θαη κνξθνπνίεζε δεδνκέλσλ γηα απνζήθεπζε ζε αξρείν Πξνζσξηλή απνζήθεπζε ζε ηνπηθή κλήκε Μεηαθνξά ζηε CPU θαη πξνζσξηλή απνζήθεπζε Μεηαθνξά Γεδνκέλσλ ζην πεξηθεξεηαθό ζεηξηαθήο ζύξαο Δλεκέξσζε CPU γηα ύπαξμε δεδνκέλσλ Τνπηθή απνζήθεπζε θαη πξνεηνηκαζία παθέηνπ γηα απνζηνιή Λήςε δεδνκέλσλ από Σεηξηαθό πεξηθεξεηαθό ππνινγηζηηθνύ ζπζηήκαηνο Μεηαθνξά δεδνκέλσλ κέζσ ζεηξηαθνύ θαισδίνπ Εικόνα 5.2 Διάγραμμα ροήσ δεδομζνων ςειριακήσ επικοινωνίασ Το διάγραμμα αναφζρεται μόνο ςτθ μεταφορά και αποκικευςθ των δεδομζνων μζςω τθσ ςειριακισ κφρασ. Ωςτόςο θ επικοινωνία είναι αμφίδρομθ και κα πρζπει να μπορεί να γίνει μεταφορά και προσ τθν άλλθ κατεφκυνςθ. Επομζνωσ, θ πολυπλοκότθτα αυξάνεται και μαηί αυξάνονται και οι περιοριςμοί που πρζπει να λάβουμε υπόψθ μασ για τθν ορκι μεταφορά 116

133 των δεδομζνων και τθ ςωςτι επικοινωνία. Στθ ςυνολικι αρχιτεκτονικι αυτισ τθσ προτεινόμενθσ υλοποίθςθσ πρζπει να λάβουμε υπόψθ μασ και τον περιοριςμζνο τρόπο αποφυγισ λακϊν κατά τθ μεταφορά μζςω τθσ ςειριακισ επικοινωνίασ. Ο μόνο ζλεγχοσ που γίνεται ουςιαςτικά είναι ο ζλεγχοσ ιςοτιμίασ ςε επίπεδο byte. Επίςθσ δεν υπάρχει τρόπο αν γίνει λάκοσ μεταφορά να ανακτθκοφν από κάπου τα δεδομζνα αφοφ θ κφρια μονάδα αποκικευςθσ είναι μετά τθ μεταφορά των δεδομζνων Προτεινόμενη υλοπούηςη Εδϊ κα δοφμε ζνα προτεινόμενο τρόπο υλοποίθςθσ. Είδαμε επιγραμματικά τα προβλιματα που μπορεί να υπάρξουν ςε αυτιν τθν προςζγγιςθ λφςθσ του προβλιματοσ. Θα πρζπει όμωσ να εξαλείψουμε όςο το δυνατόν τα προβλιματα που μπορεί να υπάρξουν. Επομζνωσ, κα ακολουκιςουμε τθν προςζγγιςθ τθσ ανάπτυξθσ ςυςτιματοσ βαςιςμζνο ςε διακοπζσ (interrupt). Ουςιαςτικά ο επεξεργαςτισ κα πρζπει να είναι ςε κζςθ να αναγνωρίηει δφο ςυναρτιςεισ εξυπθρζτθςθσ διακοπϊν. Το ζνα Interrupt είναι για να ενθμερϊνεται ο επεξεργαςτισ για τθν φπαρξθ δεδομζνων ςτο περιφερειακό μασ και ο άλλοσ για τθν φπαρξθ παραμζτρων ςτθ ςειριακι κφρα. Και από τισ δφο πλευρζσ τα δεδομζνα πρζπει να εξυπθρετθκοφν άμεςα. 117

134 MicroBlaze Custom IP Interrupt Handler Interrupt Controller Serial Port Interrupt Handler Main Program Serial Port IP Custom IP Core Memory Εικόνα 5.3 Προτεινόμενη υλοποίηςη Η προτεινόμενθ υλοποίθςθ παρουςιάηεται ςτο παραπάνω ςχιμα. Ο Interrupt controller ενϊνεται και με τα δφο περιφερειακά. Το custom IP Core ςτζλνει interrupt όταν ζχει δεδομζνα προσ αποκικευςθ (τα frame ςτθν περίπτωςθ του τθλεπικοινωνιακοφ μοντζλου). Αυτά τα δεδομζνα μετά ςτζλνονται ακολουκϊντασ το διάγραμμα ροισ δεδομζνων που αναλφςαμε παραπάνω. Στθν περίπτωςθ που υπάρχουν παράμετροι που πρζπει να περάςουν προσ το Custom IP, ενθμερϊνει θ ςειριακι κφρα τον επεξεργαςτι για τθν φπαρξθ αυτϊν μζςω Interrupt. Η βαςικι ςυνάρτθςθ λογιςμικοφ δεν κα πρζπει να κλείνει, κα πρζπει να είναι ςε ζνα βρόχο που δεν τελειϊνει ποτζ. Στθ ςυνζχεια κάκε φορά που ζρχεται ζνα αίτθμα διακοπισ, ο επεξεργαςτισ κα πρζπει να ξζρει που, και να υπάρχουν, οι αντίςτοιχεσ ςυναρτιςεισ εξυπθρζτθςθσ διακοπϊν. Απαραίτθτθ προχπόκεςθ να ζχει αρχικοποιθκεί ο interrupt controller και να ζχουν γίνει οι ςυνδζςεισ για τισ ςυναρτιςεισ εξυπθρζτθςθσ διακοπϊν. 118

135 5.2 CompactFlash ωσ αποθηκευτικό μϋςο Μία άλλθ ςχετικά εφκολθ υλοποίθςθ είναι θ χριςθ τθσ CompactFlash ωσ το κφριο αποκθκευτικό μζςο. Ππωσ αναλφςαμε και ςε προθγοφμενο κεφάλαιο, μπορεί να γίνει θ επικοινωνία του MicroBlaze ι του PowerPC με τθν CompactFlash μζςω του SYSACE. Η CompactFlash, είναι μία αποκθκευτικι ςυςκευι που μπορεί να αφαιρεκεί από το αναπτυξιακό board και να ςυνδεκεί με τον υπολογιςτι για να μποροφμε να ανακτιςουμε τα δεδομζνα και να επεξεργαςτοφμε τα frame που κζλουμε να εξάγουμε Σρόποσ αποθόκευςησ δεδομϋνων Στθν περίπτωςθ που κζλουμε να αποκθκεφςουμε τα δεδομζνα ςτθν CompactFlash, τα δεδομζνα πρϊτα μεταφζρονται από το περιφερειακό ςτον επεξεργαςτι και ςτθ ςυνζχεια ςτθν κάρτα μνιμθσ. Αυτό οφείλετε ςτο γεγονόσ ότι και ο ελεγκτισ SYSACE είναι ςε slave mode πάνω ςτο PLB. Για αυτό το λόγο πρζπει να μεςολαβιςει μια τοπικι αποκικευςθ ςτθ μνιμθ του επεξεργαςτι. Ασ δοφμε ςτθ ςυνζχεια τθν αρχιτεκτονικι μιασ τζτοιασ προςζγγιςθσ. 119

136 ILMB DLMB MicroBlaze PLB V4.6 SYSACE Custom IP Core CompactFlash Εικόνα 5.4 Αρχιτεκτονική CompactFlash ωσ μζςο αποθήκευςησ δεδομζνων Διϊγραμμα ροόσ δεδομϋνων Ππωσ αναλφςαμε και πάνω, δεν μπορεί να γίνει απευκείασ ςφνδεςθ μεταξφ του Custom IP Core και SYSACE γιατί και τα δφο μοιράηονται το ίδιο κανάλι επικοινωνίασ. Επομζνωσ πρζπει να μεςολαβιςει ο επεξεργαςτισ και να αποκθκεφςει προςωρινά τα δεδομζνα. Επιπλζον, τα δεδομζνα που είναι προσ αποκικευςθ πρζπει να περάςουν με ςυγκεκριμζνο τρόπο γιατί θ CompactFlash ζχει ςφςτθμα αρχείων. Το ςφςτθμα αρχείων που χρθςιμοποιιςαμε, είναι το FAT16. Ασ δοφμε ςτθ ςυνζχεια το διάγραμμα ροισ δεδομζνων. 120

137 Γεδνκέλα πεξηθεξεηαθνύ Γεδνκέλα ζε αξρείν ζηελ CompactFlash Δλεκέξσζε MicroBlaze Μεηαθνξά ζηελ CompactFlash Μεηαθνξά δεδνκέλσλ από ην πεξηθεξεηαθό ζηνλ MicroBlaze Μεηαθνξά ζην SYSACE Πξνζσξηλή απνζήθεπζε ζε ηνπηθή κλήκε Γεκηνπξγία αξρείνπ Δπεμεξγαζία θαη κνξθνπνίεζε δεδνκέλσλ Πξνεηνηκαζία CompactFlash - Πξόζβαζε ζηελ δνκή αξρείσλ Εικόνα 5.5 Διάγραμμα ροήσ δεδομζνων CompactFlash Το διάγραμμα αναφζρεται ςτθν περίπτωςθ μεταφοράσ από το περιφερειακό προσ τθν CompactFlash. Στθν περίπτωςθ τθσ αντίκετθσ κατεφκυνςθσ, κα πρζπει να ακολουκιςουμε τθν αντίκετθ διαδικαςία. Με τθ διαφορά ςε ςχζςθ με τθν προθγοφμενθ μζκοδο, ότι εδϊ, ο επεξεργαςτισ κα πρζπει να ξεκινιςει τθ διαδικαςία για τθν ανάκτθςθ παραμζτρων από τθν CompactFlash. Επομζνωσ κα πρζπει να υπάρχει ζνασ άλλοσ τρόποσ για να ενθμερϊνουμε τον επεξεργαςτι να εκτελζςει αυτι τθν ενζργεια. 121

138 5.2.3 Προτεινόμενη υλοπούηςη Είδαμε τθν αρχιτεκτονικι και το διάγραμμα ροισ των δεδομζνων. Σε αυτιν τθν ενότθτα κα δοφμε τθν προτεινόμενθ υλοποίθςθ. Αρχικά, όπωσ και πριν, προτείνουμε το περιφερειακό μασ να επικοινωνεί με τον επεξεργαςτι μζςω αιτθμάτων διακοπισ. Με αυτόν τον τρόπο εγγυάται ότι δεν κα χάνονται δεδομζνα επειδι δεν ενθμερϊνεται ο επεξεργαςτισ. Το αίτθμα διακοπισ κα αναλαμβάνει ολόκλθρθ τθ διαδικαςία μεταφοράσ των δεδομζνων από το περιφερειακό μασ ςτον επεξεργαςτι και ςτθν τοπικι μνιμθ και μετά τθ μεταφορά και τθν αποκικευςθ από τθν τοπικι μνιμθ ςτθν CompactFlash. Το άλλο πρόβλθμα που προκφπτει είναι το εξισ. Η CompactFlash ζχει περιοριςμζνο χϊρο. Επομζνωσ προκφπτει θ ανάγκθ να μπορεί να αφαιρεκεί θ κάρτα μνιμθσ κατά τθ διάρκεια λειτουργίασ για να μποροφμε να πάρουμε τα δεδομζνα. Επομζνωσ κα πρζπει να υπάρχει ζνασ μθχανιςμόσ που να μασ επιτρζπει να εξάγουμε τθν κάρτα μνιμθσ και να περνάμε τισ νζεσ παραμζτρουσ με τθ μορφι κάποιου αρχείου. Και αντίςτοιχα ο μθχανιςμόσ ειςαγωγισ των παραμζτρων ςτο πείραμα που τρζχει. Για αυτό, προτείνεται να αναπτυχκεί κάποιοσ μθχανιςμόσ με τθ χριςθ κάποιων διακοπτϊν (switches ι buttons) του αναπτυξιακοφ Board. Ενδεχομζνωσ να υπάρχει ζνασ διακόπτθσ για αςφαλι αφαίρεςθ τθσ κάρτασ μνιμθσ και ζνασ διακόπτθσ για τθν ειςαγωγι νζων παραμζτρων ςτο ςφςτθμα που κα αντλεί αυτζσ τισ παραμζτρουσ από κάποιο αρχείο τθσ Compact Flash. Επίςθσ ςε αυτό το ςενάριο κα πρζπει να υπάρχει και ζνασ ακόμα διακόπτθσ που κα μπορεί να κάνει reset ςτο πείραμα. Επομζνωσ προκφπτει ζνα ςφςτθμα με 4 υπορουτίνεσ εξυπθρζτθςθσ διακοπϊν. Εξυπθρζτθςθ διακοπϊν για αποκικευςθ αποτελεςμάτων από το Custom IP Core Εξυπθρζτθςθ διακοπϊν για αςφαλι αφαίρεςθ κάρτασ μνιμθσ (CompactFlash) Εξυπθρζτθςθ διακοπϊν για ειςαγωγι παραμζτρων ςτο Custom IP Core Εξυπθρζτθςθ διακοπϊν για reset Custom IP Core Η προτεινόμενθ υλοποίθςθ παρουςιάηεται ςτθ ςυνζχεια: 122

139 LEDs CompactFlash MicroBlaze Interrupt Handlers Local Data (Temporary Data) Interrupt Controller Functions Main Program Local Memory Buttons - Swithes Custom IP Core Εικόνα 5.6 Προτεινόμενη υλοποίηςη Στθν παραπάνω προτεινόμενθ αρχιτεκτονικι, βλζπουμε τθν φπαρξθ των LEDs. Τα LEDs υπάρχουν για να μποροφν να ενθμερϊνουν τον χριςτθ ςχετικά με τθν κατάςταςθ του ςυςτιματοσ. Για παράδειγμα μπορεί να ανάβει ζνα LED για να ενθμερϊνει τον χριςτθ ότι είναι ζτοιμθ θ μνιμθ για αςφαλι αφαίρεςθ. Επίςθσ κα πρζπει να μπορεί να ενθμερϊνει τον χριςτθ ςχετικά με τθν κατάςταςθ τθσ μνιμθσ, για παράδειγμα να ανάβει ζνα LED ςτθν περίπτωςθ που θ CompactFlash ζχει κάτω από 20 % ελεφκερθ μνιμθ. 123

140 5.3 Χρόςη RAM ωσ κύριο αποθηκευτικό μϋςο Με βάςθ τισ προθγοφμενεσ προςεγγίςεισ λφςεων, προκφπτει θ εξισ παρατιρθςθ. Στισ προθγοφμενεσ προςεγγίςεισ, τα δεδομζνα μεταφζρονταν πρϊτα ςε μία προςωρινι μνιμθ και μετά αποκθκευόντουςαν ι ςτζλνονταν. Οπότε αν κζλουμε να πετφχουμε μία βελτιςτοποίθςθ κα πρζπει τα δεδομζνα να μθν αποκθκεφονται προςωρινά αλλά μόνιμα. Από τθ μόνιμθ κζςθ που είναι αποκθκευμζνα κα πρζπει με κάποιον ζξυπνο τρόπο να μποροφν να ανακτϊνται. Ωσ λφςθ επομζνωσ εδϊ, χρθςιμοποιοφμε τθν κφρια μνιμθ ωσ το μόνιμο αποκθκευτικό μζςο Σρόποσ αποθόκευςησ δεδομϋνων Εδϊ, το αποκθκευτικό μζςο είναι θ κφρια μνιμθ. Τα δεδομζνα μεταφζρονται από το περιφερειακό μασ ςτθ μνιμθ και ςτθ ςυνζχεια αποκθκεφονται. Εδϊ οι μνιμεσ μασ δεν είναι οι Local μνιμεσ του επεξεργαςτι αλλά θ κφρια μνιμθ, είτε θ DDR για τθν περίπτωςθ του Spartan, είτε θ DDR2 ςτθν περίπτωςθ του Virtex5 ML507. Αυτζσ οι μνιμεσ, ςε αυτι τθν προςζγγιςθ, χρθςιμοποιοφνται ωσ μαηικζσ μνιμεσ αποκικευςθσ. Στθ ςυνζχεια αναπτφξαμε ζναν τρόπο να μποροφμε να παίρνουμε τα δεδομζνα από αυτζσ τισ μνιμεσ. Η μεκοδολογία όμωσ ανάκτθςθσ των δεδομζνων είναι εντελϊσ διαφορετικι διαδικαςία και δεν χρειάηεται να γίνεται τθ ςτιγμι που αποκθκεφονται τα δεδομζνα. Ο χϊροσ των 256 MB είναι υπζραρκετόσ για να αποκθκεφςει τα δεδομζνα που κζλουμε με ζνα γριγορο και αςφαλι τρόπο. Η ανάκτθςθ των δεδομζνων γίνεται μζςα δικτφου. Επίςθσ μζςω δικτφου γίνεται θ ειςαγωγι παραμζτρων ςτο ςφςτθμα. Ασ δοφμε ςτθ ςυνζχεια τθ βαςικι αρχιτεκτονικι. 124

141 DDR2 Different Time line PPC440MC PPC440 PLBv46 Timer PHY Ethernet Conroller Custom IP Core Ethernet - Internet Εικόνα 5.7 Αρχιτεκτονική DDR ωσ αποθηκευτικό μζςο Βλζπουμε ότι υπάρχει διαχωριςμόσ μεταξφ αποκικευςθσ και ανάκτθςθσ δεδομζνων. Συμβαίνει δθλαδι ςε διαφορετικι χρονικι περίοδο. Είναι ςαν να ζχουμε πάρει το κρίςιμο μονοπάτι και να το ζχουμε ςπάςει ςε πολλά κομμάτια. Με αυτό τον τρόπο πλζον ζχουμε one-way path μεταξφ δεδομζνων και αποκικευςθσ. 125

142 5.3.2 Διϊγραμμα ροόσ δεδομϋνων Εδϊ πλζον δεν ζχουμε μόνο ζνα μονοπάτι ςτθν αποκικευςθ των δεδομζνων. Από μόνα τουσ να αποκθκευτοφν ςτθ μνιμθ δεν είναι λφςθ του προβλιματοσ. Αυτό οφείλεται ςτο γεγονόσ ότι πρζπει με κάποιον τρόπο να μποροφμε να ανακτιςουμε από εκεί τα δεδομζνα. Δεν μποροφμε δθλαδι να αφιςουμε τα δεδομζνα ςτθ μνιμθ χωρίσ να τα ανακτιςουμε. Επομζνωσ ο μθχανιςμόσ ανάκτθςθσ είναι εξίςου ςθμαντικόσ. Εξίςου ςθμαντικι είναι θ ανάκτθςθ των δεδομζνων με αςφαλι τρόπο. Επομζνωσ ζχουμε: Γεδνκέλα Πεξηθεξεηαθνύ Δλεκέξσζε ηνπ PPC Αίηεζε απνζηνιήο αξρείσλ από Client Μεηαθνξά δεδνκέλσλ από ην πεξηθεξεηαθό ζηνλ PPC Δπεμεξγαζία αίηεζεο Δπεμεξγαζία δεδνκέλσλ θαη κνξθνπνίεζε Αλάθηεζε αξρείνπ Απνζήθεπζε αξρείσλ ζηελ θύξηα κλήκε Απνζηνιή δεδνκέλσλ Γεδνκέλα ζηνλ Client Μέζσ Internet - Ethernet Εικόνα 5.8 Διάγραμμα ροήσ δεδομζνων Ρεριςςότερα ςτοιχεία όςο αφορά τθν υλοποίθςθ αναλφονται ςτο επόμενο κεφάλαιο. 126

143 5.3.3 Προτεινόμενη υλοπούηςη Αναφζρουμε εδϊ μία υλοποίθςθ αλλά πιο λεπτομερι ςτοιχεία ςχετικά με τθν υλοποίθςθ αναφζρονται ςτο επόμενο κεφάλαιο. Η προτεινόμενθ υλοποίθςθ ζχει ωσ εξισ. Το Custom IP Core επικοινωνεί με τον επεξεργαςτι μζςω interrupt. Στθ ςυνζχεια τα αρχεία αποκθκεφονται ςε ζνα εικονικό ςφςτθμα αρχείων ςτθ μνιμθ. To Ethernet επικοινωνεί και αυτό με τον επεξεργαςτι με interrupt και τον ειδοποιεί όταν υπάρχει αίτθμα για εξυπθρζτθςθ. Οπότε ζχουμε: Interrupt Handlers PPC440 Functions Interrupt Controller PHY Ethernet Timer Custom IP Core Memory File System Main Program DDR2 Εικόνα 5.9 Προτεινόμενη υλοποίηςη Ρεριςςότερεσ λεπτομζρειεσ αναφζρονται ςε παρακάτω κεφάλαιο. 127

144 5.4 Μετρόςεισ Κριτόρια και επιλογϋσ Στθν προθγοφμενθ ενότθτα αναλφςαμε και προτείναμε τρεισ διαφορετικζσ μεταξφ τουσ προςεγγίςεισ. Ρροφανϊσ και δεν είναι οι μόνεσ προςεγγίςεισ που υπάρχουν. Αναφορικά, μποροφμε να χρθςιμοποιιςουμε USB αντί για Compact Flash μνιμεσ ι ακόμα για πιο μεγάλθ ταχφτθτα, ςκλθρό δίςκο μζςω ςφνδεςθσ SATA. Αυτζσ όμωσ οι λφςεισ είναι υψθλοφ ρίςκου λόγο τθσ ελλιποφσ υποςτιριξθσ από Xilinx. Με τισ παραπάνω προςεγγίςεισ καλφπτουμε ζνα μεγάλο μζροσ των λφςεων που μποροφν να προτακοφν. Στθν πρϊτθ περίπτωςθ ζχουμε τθν οικογζνεια λφςεων απομακρυςμζνθσ αποκικευςθσ των δεδομζνων. Σε αυτιν τθν οικογζνεια κα πρζπει εκτόσ από το αναπτυξιακό board, να υπάρχει και ζνα απομακρυςμζνο υπολογιςτικό ςφςτθμα αφιερωμζνο (dedicated) να εκτελεί κάποιεσ διεργαςίεσ. Θα πρζπει επομζνωσ να αναπτφξουμε εφαρμογζσ και για τα δφο ςυςτιματα. Σε ζνα τζτοιο ςφςτθμα, τα κρίςιμα ςθμεία όςο αφορά ςτθν αςφαλι αποκικευςθ των δεδομζνων αυξάνονται. Καταρχιν κα πρζπει να εγγυθκοφμε τθν αςφαλι διαχείριςθ των δεδομζνων από τθν πλευρά του αναπτυξιακοφ board. Ζπειτα κα πρζπει να είμαςτε ςε κζςθ να γνωρίηουμε κατά πόςο το μζςο μεταφοράσ ειςάγει λάκθ και κατά πόςο αυτά είναι εφκολα ςτθν ανίχνευςθ χωρίσ να γνωρίηουμε τα δεδομζνα. Στθ ςυνζχεια κα πρζπει το υπολογιςτικό ςφςτθμα να είναι πάντα διακζςιμο και ςε κζςθ να πάρει και να αποκθκεφςει τα δεδομζνα. Ειδικά ςε αυτό το ςτάδιο, ςτθν περίπτωςθ που χρθςιμοποιοφμε ζναν υπολογιςτι γενικοφ ςκοποφ κάτι τζτοιο δεν είναι κακόλου εφκολθ υπόκεςθ δεδομζνου του όγκου των εφαρμογϊν που μπορεί να τρζχουν ςτο background. Στθ δεφτερθ περίπτωςθ, ζχουμε τθν οικογζνεια λφςεων που προτείνει ζνα αποκθκευτικό μζςο που είναι αποςπϊμενο. Στθν περίπτωςθ αυτι ζχουμε άλλου είδουσ προβλιματα. Καταρχιν θ ικανότθτα διαδραςτικότθτασ μειϊνεται πάρα πολφ και ςε καμία περίπτωςθ δεν μπορεί να είναι άμεςθ και on-the-fly. Θα απαιτείται θ αφαίρεςθ του μζςου, θ είςοδοσ των παραμζτρων ςε αυτό και ςτθ ςυνζχεια θ ςφνδεςι του και θ μεταφορά των παραμζτρων. Εκτόσ αυτϊν, βλζπουμε τθν ανάγκθ φπαρξθσ άλλων μζςων για να μπορεί να ενθμερϊνεται ο χριςτθσ ςχετικά με τθν εςωτερικι λειτουργία, όπωσ ςτο παράδειγμα τθ χαμθλι διακζςιμθ μνιμθσ. Επίςθσ απαιτεί ζναν εξελιγμζνο τρόπο χειριςμοφ των interrupt αφοφ πλζον τα Interrupt δεν κα επικεντρϊνονται μόνο ςτθ διαδικαςία του πειράματοσ αλλά και ςτισ περιφερειακζσ λειτουργίεσ που κα υποςτθρίηουν τισ βαςικζσ λειτουργίεσ. Το άλλο μειονζκτθμα που υπάρχει εδϊ, είναι τι γίνονται τα δεδομζνα ςτθν περίπτωςθ που αφαιρείται το αποκθκευτικό μζςο. Στθν τρίτθ περίπτωςθ, ζχουμε τθν οικογζνεια λφςεων που προτείνει τοπικι αποκικευςθ και απομακρυςμζνθ ανάκτθςθ αυτισ τθσ πλθροφορίασ. Σε αυτι τθν οικογζνεια, τουλάχιςτον τθν περίπτωςθ χριςθσ Ethernet, θ διαδραςτικότθτα μπορεί να είναι άμεςθ και να μποροφν να περνάνε παράμετροι on-the-fly. Επίςθσ με αυτό τον τρόπο μποροφν να χρθςιμοποιθκοφν και άλλα μζςα πζρα το Ethernet για τθν ανάκτθςθ δεδομζνων όπωσ για παράδειγμα κάποιο USB flash drive που όταν ςυνδζεται να ανακτϊνται απευκείασ τα δεδομζνα. Το πρόβλθμα με αυτι τθν οικογζνεια προτεινόμενων λφςεων είναι ςτθν ανάπτυξθ κακϊσ απαιτεί ιδιαίτερθ προςοχι και ουςιαςτικά πρόκειται για ανάπτυξθ 128

145 υψθλοφ επιπζδου. Οι διεργαςίεσ πλζον δεν είναι αυτόνομεσ αλλά δθμιουργοφν ζνα ςφςτθμα πιο κοντά ςτα service-based ςυςτιματα. Στθν ενότθτα αυτι κάνουμε τισ επιλογζσ για τον προτεινόμενο τρόπο υλοποίθςθσ. Οι επιλογζσ γίνονται φςτερα από πραγματικά πειραματικά αποτελζςματα. Τα δεδομζνα αυτά προζκυψαν φςτερα από υλοποίθςθ και των τριϊν προςεγγίςεων μζχρι ζνα ςτάδιο. Τα κριτιρια επιλογισ είναι ζνα πολφ ςθμαντικό κζμα. Ππωσ ζχουμε αναφζρει ζχουμε ζνα κρίςιμο ςφςτθμα ςτο οποίο τα δεδομζνα πρζπει να αποκθκεφονται γριγορα και με τρόπο που εγγυάται ότι τα δεδομζνα που αποκθκεφτθκαν είναι τα δεδομζνα του Custom IP Core. Το ςθμαντικότερο κριτιριο επομζνωσ είναι θ ταχφτθτα. Η ταχφτθτα ςτθν αποκικευςθ των δεδομζνων. Αυτό περιλαμβάνει όλα τα βιματα μζχρι τθν τελικι αποκικευςθ των δεδομζνων ςε μορφι κατάλλθλθ για επεξεργαςία. Με βάςθ αυτό το κριτιριο ζγιναν πραγματικζσ μετριςεισ. Ριο ςυγκεκριμζνα, μετριςαμε τουσ κφκλουσ ρολογιοφ του επεξεργαςτι που απαιτοφνται για τθν αποκικευςθ ι τθν αποςτολι ςτθν περίπτωςθ τθσ ςειριακισ κφρασ, bit ςτοιχείων. Η αποκικευςθ ι θ μεταφορά γίνεται με χαρακτιρεσ HEX για να ελαχιςτοποιιςουμε τον όγκο ςε μία μορφι που κα είναι εφκολθ ςτθν περεταίρω επεξεργαςία. Ζχουμε: Ρροτεινόμενθ Υλοποίθςθ Κφκλοι ρολογιοφ Επεξεργαςτι Σειριακι επικοινωνία CompactFlash ωσ αποκθκευτικό μζςο DDR2 ωσ αποκθκευτικό μζςο Πίνακασ 5.1 Κφκλοι ρολογιοφ προτεινόμενων υλοποιήςεων 129

146 Κφκλοι ρολογιοφ Επεξεργαςτή Σειριακι επικοινωνία CompactFlash ωσ αποκθκευτικό μζςο DDR2 ωσ αποκθκευτικό μζςο Προτεινόμενη Υλοποίηςη Εικόνα 5.10 Διάγραμμα επιδόςεων προτεινόμενων υλοποιήςεων Βλζπουμε επομζνωσ ότι θ DDR2 είναι πολφ πιο γριγορθ ςε ςχζςθ με τισ άλλεσ προςεγγίςεισ. Η ςειριακι επικοινωνία χάνει ςε ταχφτθτα και λόγω του περιοριςμζνου εφρουσ ηϊνθσ που ζχει ςε ςχζςθ με τισ άλλεσ προςεγγίςεισ. Η CompactFlash αλλά και θ ςειριακι κφρα χάνουν ςε ταχφτθτα λόγω τθσ προςωρινισ μεταφοράσ και αποκικευςθσ των δεδομζνων πριν γίνει θ μόνιμθ αποκικευςι τουσ. Στθν περίπτωςθ τθσ CompactFlash θ ταχφτθτα εγγραφισ είναι ςαφϊσ μικρότερθ ςε ςχζςθ με τθν DDR2 ι ακόμα και με τθν DDR. Η ταχφτθτα εγγραφισ των δεδομζνων δεν είναι το μόνο κριτιριο επιλογισ. Ζνα άλλο πολφ ςθμαντικό κριτιριο ςτθν επιλογι είναι θ αςφαλισ αποκικευςθ των δεδομζνων. Στθν περίπτωςθ τθσ ςειριακισ κφρασ θ αςφάλεια είναι πολφ περιοριςμζνθ αφοφ δεν παρζχει κάποιον εξελιγμζνο τρόπο πιςτοποίθςθσ δεδομζνων κατά τθ μεταφορά.