Διόρθωση λαθών σε συστήματα αποθήκευσης πληροφορίας τεχνολογίας PCM με χρήση κώδικα BCH

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

Download "Διόρθωση λαθών σε συστήματα αποθήκευσης πληροφορίας τεχνολογίας PCM με χρήση κώδικα BCH"

Transcript

1 Μεταπτυχιακό Δίπλωμα Ειδίκευσης στα Ολοκληρωμένα Συστήματα Υλικού-Λογισμικού Διπλωματική Εργασία Διόρθωση λαθών σε συστήματα αποθήκευσης πληροφορίας τεχνολογίας PCM με χρήση κώδικα BCH Συγγραφέας: Κωνσταντίνος Νάκος Επιβλέπων: Θεόδωρος Αντωνακόπουλος 13 Φεβρουαρίου 2013

2

3 Περίληψη Αντικείμενο της διπλωματικής εργασίας αποτελεί η μελέτη και ανάλυση των μεθόδων διόρθωσης λαθών με χρήση κώδικα BCH που μπορούν να εφαρμοστούν σε συστήματα αποθήκευσης πληροφορίας τεχνολογίας PCM (Phase- Change Memory). Η τεχνολογία PCM αποτελεί μία νέα τεχνολογία που υπόσχεται υψηλές χωρητικότητες, χαμηλή κατανάλωση ισχύος και μπορεί να εφαρμοστεί είτε σε συσκευές αποθήκευσης σταθερής κατάστασης (Solid State Drives) είτε σε μνήμες τυχαίας προσπέλασης (Random-Access Memories), παρέχοντας μία εναλλακτική πρόταση έναντι μνημών τεχνολογίας flash και DRAM. Ένα από τα μειονεκτήματα της τεχνολογίας PCM είναι η ανθεκτικότητα εγγραφής (write endurance), η οποία μπορεί να βελτιωθεί με τη χρήση μεθόδων διόρθωσης λαθών που θα παρατείνουν τον χρόνο ζωής της συσκευής όταν, λόγω της φυσικής φθοράς του μέσου, αρχίσουν να υπάρχουν σφάλματα στα αποθηκευμένα δεδομένα. Για την εφαρμογή της διόρθωσης λαθών μπορούν να χρησιμοποιηθούν κώδικες BCH, οι οποίοι αποτελούν μια κλάση ισχυρών κυκλικών κωδίκων διόρθωσης τυχαίων λαθών, και κατασκευάζονται με χρήση της άλγεβρας πεπερασμένων πεδίων. Οι κώδικες BCH είναι ιδανικοί για διόρθωση λαθών σε συσκευές αποθήκευσης πληροφορίας όπου η κατανομή των λαθών είναι τυχαία. Αρκετοί αλγόριθμοι έχουν προταθεί για τις λειτουργίες αποδοτικής κωδικοποίησης και αποκωδικοποίησης κωδίκων BCH. Στην παρούσα εργασία μελετήθηκαν λύσεις που μπορούν να υλοποιηθούν με παράλληλες αρχιτεκτονικές, ενώ ειδικότερα για την λειτουργία αποκωδικοποίησης έγινε χρήση ενός παράλληλου αλγορίθμου που δεν χρειάζεται αντιστροφείς πεπερασμένου πεδίου για την επίλυση των εξισώσεων των συνδρόμων, επιτυγχάνοντας υψηλές συχνότητες λειτουργίας. Για την κατανόηση των λειτουργιών κωδικοποίησης και αποκωδικοποίησης απαιτείται η προσεκτική μελέτη της άλγεβρας πεπερασμένων πεδίων και της αριθμητικής της. Οι κώδικες BCH προσφέρουν πλεονεκτήματα όπως χαμηλή πολυπλοκότητα και ύπαρξη αποδοτικών μονάδων υλοποίησης σε υλικό. Στην παρούσα εργασία σχεδιάστηκαν ένας παράλληλος κωδικοποιητής και ένας παράλληλος αποκωδικοποιητής για τον κώδικα BCH(728,688). Τα δύο συστήματα υλοποιήθηκαν ως περιφερειακά σε ενσωματωμένο σύστημα βασισμένο σε επεξεργαστή MicroBlaze, με έμφαση σε μια καλή σχέση μεταξύ της συχνότητας λειτουργίας και των απαιτήσεων σε επιφάνεια υλικού και κατανάλωση ισχύος. Για την υλοποίηση χρησιμοποιήθηκε συσκευή FPGA σειράς Virtex-6.

4

5 Abstract The objective of this thesis is the study and analysis of BCH errorcorrection methods that can be applied on PCM (Phase-Change Memory) storage devices. PCM is a new technology that promises high capacities, low power consumption and can be applied either on Solid State Drives or on Random Access Memories, providing an alternative to flash and DRAM memories. However, PCM suffers from limited write endurance, which can be increased using error-correction schemes that will extend the lifetime of the device when, due to medium wear-out, errors start to appear in the written data. Thus, BCH codes (powerful cyclic random multiple error-correcting codes) can be employed. BCH codes are ideal for ECC (Error-Correction Coding) in storage devices, due to their fault model which is random noise. Several algorithms have been proposed for efficient coding and decoding of BCH codes. In the present thesis parallel implementations where studied. For the decoding process in particular, a parallel algorithm was used that does not require finite field inverter units to solve the syndrome equations, achieving high operation frequencies. For the understanding of BCH coding and decoding processes, basic knowledge of the finite field algebra and arithmetic is required. BCH codes offer advantages such as low complexity and efficient hardware implementations. In the present thesis a parallel encoder and a parallel decoder for the BCH(728,688) code were designed. The above systems were implemented as peripherals on an MicroBlaze-based embedded system, with emphasis on an optimal tradeoff between area and power consumption. A Virtex-6 FPGA device was used for the final stages of the implementation.

6

7 Περιεχόμενα 1 Εισαγωγή Συσκευές αποθήκευσης πληροφορίας PCM και διόρθωση λαθών Οργάνωση εργασίας Στοιχεία άλγεβρας πεπερασμένων πεδίων Ομάδες Πεδία To GF (2 m ) Η πολυωνυμική βάση και τα πρωτογενή στοιχεία Η δυαδική βάση Η κανονική βάση Υλοποίηση αριθμητικής πεπερασμένων πεδίων Πρόσθεση δύο στοιχείων Πολλαπλασιασμός με μία σταθερά α i Πολλαπλασιασμός δύο στοιχείων ενός πεδίου Galois Υπολογισμός του r(α i ) Κώδικες BCH Δυαδικοί πρωτογενείς BCH κώδικες Δυαδικοί μη-πρωτογενείς BCH κώδικες Κωδικοποίηση BCH κωδίκων Αποκωδικοποίηση BCH κωδίκων Υπολογισμός συνδρόμων Υπολογισμός του πολυωνύμου εύρεσης θέσεων των λαθών Προσδιορισμός των θέσεων των λαθών και διόρθωση 29 4 Κωδικοποιητής BCH Σειριακή κωδικοποίηση Παράλληλη κωδικοποίηση Σχεδίαση παράλληλου κωδικοποιητή BCH(728,688) Αλγόριθμος

8 ii Προδιαγραφές και διεπαφή Αρχιτεκτονική Λειτουργία μηχανής πεπερασμένων καταστάσεων Σύνοψη Αποκωδικοποιητής BCH Αλγόριθμοι Υπολογισμός συνδρόμων Υπολογισμός πολυωνύμου εντοπισμού λαθών Έρευνα κατά Chien Διόρθωση λαθών Σχεδίαση παράλληλου αποκωδικοποιητή BCH(728,688) Προδιαγραφές και διεπαφή Αρχιτεκτονική Μονάδα υπολογισμού συνδρόμων Μονάδα υπολογισμού του πολυωνύμου εντοπισμού λαθών Μονάδα έρευνας κατά Chien Διόρθωση λαθών Μονάδα ανίχνευσης ύπαρξης λαθών Μονάδα ανίχνευσης αποτυχίας αποκωδικοποίησης Λειτουργία μηχανής πεπερασμένων καταστάσεων Λειτουργία συστήματος Σύνοψη Ενσωμάτωση κωδικοποιητή και αποκωδικοποιητή BCH ως περιφερειακά σε Ενσωματωμένο Σύστημα Εισαγωγή στα ενσωματωμένα συστήματα Επεξεργαστής MicroBlaze Δίαυλοι επικοινωνίας AXI4, AXI4-Lite Σχεδίαση ενσωματωμένου συστήματος Ενσωμάτωση κωδικοποιητή BCH Ενσωμάτωση αποκωδικοποιητή BCH Υλοποίηση ενσωματωμένου συστήματος σε συσκευή FPGA και αποτελέσματα Μεθοδολογία και ροή σχεδίασης Μοντελοποίηση σε περιβάλλον MATLAB Μοντελοποίηση σε γλώσσα περιγραφής υλικού VHDL και λογική εξομοίωση Λογική εξομοίωση κωδικοποιητή Λογική εξομοίωση αποκωδικοποιητή Σύνθεση (XST) και υλοποίηση ανεξάρτητων συστημάτων. 134

9 iii Αποτελέσματα σύνθεσης και υλοποίησης κωδικοποιητή Αποτελέσματα σύνθεσης και υλοποίησης αποκωδικοποιητή Αποτελέσματα από υλοποίηση ενσωματωμένου συστήματος (EDK) Επαλήθευση αποτελεσμάτων Συμπεράσματα και μελλοντική εργασία Σύνοψη Συμπεράσματα και κατευθύνσεις Αʹ Κώδικες 171

10

11 Κατάλογος σχημάτων 2.1 Αθροιστής πεπερασμένου πεδίου Κύκλωμα για πολλαπλασιασμό τυχαίου στοιχείου στο GF (2 4 ) με α Κύκλωμα για πολλαπλασιασμό τυχαίου στοιχείου στο GF (2 4 ) με α Κύκλωμα για πολλαπλασιασμό δύο στοιχείων στο GF (2 4 ) Ένα άλλο κύκλωμα για πολλαπλασιασμό δύο στοιχείων στο GF (2 4 ) Κύκλωμα για υπολογισμό του r(α) Αρχιτεκτονική σειριακού κωδικοποιητή BCH Απλοποιημένη αρχιτεκτονική παράλληλου κωδικοποιητή BCH Κύκλωμα για υπολογισμό του U 39 (T ) με κρίσιμη διαδρομή μεγάλης καθυστέρησης Παράδειγμα επαναχρησιμοποίησης υπο-εκφράσεων σε κύκλωμα Βελτιστοποίηση του κυκλώματος υπολογισμού του U 39 (T ) με δομή δένδρου πυλών XOR Διεπαφή κωδικοποιητή BCH(728,688) Μοτίβο διακύμανσης εξωτερικού σήματος ενεργοποίησης (en) του κωδικοποιητή Αρχιτεκτονική κωδικοποιητή BCH(728,688) Μηχανή πεπερασμένων καταστάσεων (FSM) του κωδικοποιητή Κυματομορφές σημάτων του κωδικοποιητή κατά την είσοδο του 1ου μηνύματος και εγγραφή του 1ου αθροίσματος ελέγχου Κυματομορφές σημάτων του κωδικοποιητή κατά την είσοδο του 2ου μηνύματος και εγγραφή του 2ου αθροίσματος ελέγχου Γενικό σχήμα αρχιτεκτονικής αποκωδικοποιητή BCH Σειριακή μονάδα υπολογισμού συνδρόμων

12 vi 5.3 Παράλληλη μονάδα υπολογισμού συνδρόμων Επεξεργαστικό στοιχείο αρχιτεκτονικής του αλγορίθμου SiBM Αρχιτεκτονική για την υλοποίηση του αλγορίθμου SiBM Συμβατική μονάδα υλοποίησης της Έρευνας κατά Chien Παράλληλη μονάδα υλοποίησης της Έρευνας κατά Chien Παράλληλη μονάδα υλοποίησης της Έρευνας κατά Chien Συμβατική μονάδα που υλοποιεί Έρευνα κατά Chien και διόρθωση λαθών Διεπαφή αποκωδικοποιητή BCH(728,688) Αρχιτεκτονική αποκωδικοποιητή BCH(728,688) Παράλληλες μονάδες υπολογισμού συνδρόμων Δομή της μονάδας υπολογισμού συνδρόμων Αρχιτεκτονική της μονάδας υπολογισμού του πολυωνύμου εντοπισμού λαθών Δομή της μονάδας ελέγχου του τμήματος υπολογισμού του Λ(x) Χρήση καταχωρητή ολίσθησης για παραγωγή των σημάτων ελέγχου c Κυματομορφές σημάτων του τμήματος υπολογισμού του Λ(x) Αρχιτεκτονική της μονάδας που υλοποιεί την Έρευνα κατά Chien Γενικό κύκλωμα για διόρθωση λαθών σε παράλληλη αρχιτεκτονική Δομή παράλληλης μονάδας διόρθωσης λαθών Μονάδα ανίχνευσης αποτυχίας της διαδικασίας αποκωδικοποίησης Μηχανή πεπερασμένων καταστάσεων (FSM) του αποκωδικοποιητή Κυματομορφές σημάτων κατά την εκκίνηση της διαδικασίας αποκωδικοποίησης Κυματομορφές σημάτων κατά το τέλος του υπολογισμού συνδρόμων, της εκτέλεσης του αλγορίθμου SiBM και της εκκίνησης της έρευνας κατά Chien Κυματομορφές σημάτων κατά την εκκίνηση ανάγνωσης των byte του μηνύματος από τη FIFO και διόρθωσης των λαθών με τη μέθοδο Chien Κυματομορφές σημάτων κατά την ολοκλήρωση της διαδικασίας αποκωδικοποίησης Αρχιτεκτονική επεξεργαστή MicroBlaze Εσωτερική δομή διεπαφής AXI Εσωτερική δομή διεπαφής AXI4-Lite

13 vii 6.4 Αρχιτεκτονική ενσωματωμένου συστήματος κωδικοποιητήαποκωδικοποιητή Δομή περιφερειακού παράλληλου κωδικοποιητή BCH Διάγραμμα καταστάσεων της FSM του περιφερειακού κωδικοποιητή Δομή περιφερειακού αποκωδικοποιητή Διάγραμμα καταστάσεων της FSM του περιφερειακού αποκωδικοποιητή Ροή σχεδίασης ενσωματωμένου συστήματος κωδικοποιητήαποκωδικοποιητή BCH Λογική εξομοίωση παράλληλου κωδικοποιητή BCH εκκίνηση κωδικοποίησης Λογική εξομοίωση παράλληλου κωδικοποιητή BCH ολοκλήρωση κωδικοποίησης Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH εκκίνηση αποκωδικοποίησης Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH ολοκλήρωση υπολογισμού συνδρόμων, υπολογισμός συντελεστών πολυωνύμου Λ(x) και εκκίνηση έρευνας κατά Chien Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH διόρθωση 1ου λάθους μηνύματος Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH διόρθωση 2ου και 3ου λάθους μηνύματος Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH διόρθωση 4ου λάθους μηνύματος Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH ολοκλήρωση αποκωδικοποίησης Virtex-6 XC6VLX240T-2FF1759 Δομή και διασυνδέσεις Σχήμα RTL για τον κωδικοποιητή μετά τη σύνθεση (XST) Χρησιμοποίηση υλικού για τον κωδικοποιητή μετά τη σύνθεση (XST) Χρησιμοποίηση λογικών στοιχείων για τον κωδικοποιητή μετά τη σύνθεση (XST) Σχήμα RTL για τον αποκωδικοποιητή μετά τη σύνθεση (XST) Χρησιμοποίηση υλικού για τον αποκωδικοποιητή μετά τη σύνθεση (XST) Χρησιμοποίηση λογικών στοιχείων για τον αποκωδικοποιητή μετά τη σύνθεση (XST) Προβολή σχεδίασης του XPS για το ενσωματωμένο σύστημα κωδικοποιητή-αποκωδικοποιητή BCH Διεπαφές διαύλων για το ενσωματωμένο σύστημα στο XPS Κατανομή διευθύνσεων μνήμης για το ενσωματωμένο σύστημα στο XPS

14 viii 7.20 Χρησιμοποίηση υλικού ανά module για για το ενσωματωμένο σύστημα στο XPS Χρησιμοποίηση υλικού για για το ενσωματωμένο σύστημα στο XPS Εκκίνηση λειτουργίας αποκωδικοποιητή με μήνυμα χωρίς λάθη Εκκίνηση λειτουργίας αποκωδικοποιητή με μήνυμα χωρίς λάθη Εκκίνηση λειτουργίας αποκωδικοποιητή με μήνυμα χωρίς λάθη Παράκαμψη της υπόλοιπης διαδικασίας αποκωδικοποίησης σε μήνυμα χωρίς λάθη Ολοκλήρωση εξόδου του μηνύματος από τον αποκωδικοποιητή Εκκίνηση λειτουργίας αποκωδικοποιητή σε μήνυμα με 4 λάθη Είσοδος στον αποκωδικοποιητή του 1ου και 2ου λάθους του μηνύματος Είσοδος στον αποκωδικοποιητή του 3ου και 4ου λάθους του μηνύματος Διόρθωση 1ου και 2ου λάθους του μηνύματος Διόρθωση 3ου και 4ου λάθους του μηνύματος Τερματισμός λειτουργίας του αποκωδικοποιητή σε μήνυμα με 4 λάθη Είσοδος στον αποκωδικοποιητή του 1ου και 2ου λάθους ενός μηνύματος με 5 λάθη Είσοδος στον αποκωδικοποιητή του 3ου και 4ου λάθους ενός μηνύματος με 5 λάθη Είσοδος στον αποκωδικοποιητή του 5ου λάθους ενός μηνύματος με 5 λάθη Αποτυχία διόρθωσης του 1ου και 2ου λάθους ενός μηνύματος με 5 λάθη Αποτυχία διόρθωσης του 3ου και 4ου λάθους ενός μηνύματος με 5 λάθη Αποτυχία διόρθωσης του 5ου λάθους και ολοκλήρωση αποκωδικοποίησης ενός μηνύματος με 5 λάθη

15 Κεφάλαιο 1 Εισαγωγή 1.1 Συσκευές αποθήκευσης πληροφορίας PCM και διόρθωση λαθών Τις τελευταίες δεκαετίες, η ολοκλήρωση όλο και μεγαλύτερης κλίμακας στις τεχνολογίες μνημών έχει προσφέρει πολλά και σημαντικά οφέλη, όπως μεγαλύτερη πυκνότητα, αυξημένη χωρητικότητα και μικρότερο κόστος. Οι τεχνολογίες που έχουν επικρατήσει χρησιμοποιούν μηχανισμούς αποθήκευσης που απαιτούν εγγενή χαρακτηριστικά ελέγχου και εφαρμογής φόρτισης. Αυτό έχει σαν αποτέλεσμα συμβατικές τεχνολογίες, όπως η DRAM και οι μνήμες flash, να έχουν φτάσει σε ένα σημείο κορεσμού, τόσο ως προς την περαιτέρω ολοκλήρωσή τους όσο και ως προς την κατανάλωση ισχύος. Ειδικότερα για την τεχνολογία DRAM, η οποία χρησιμοποιείται ως κύρια μνήμη σε υπολογιστικά συστήματα για δεκαετίες, θα είναι δύσκολο να επιτευχθεί κλίμακα ολοκλήρωσης κάτω από τα 50 nm [1] λόγω διάφορων περιορισμών που σχετίζονται με διαρροές (leakages) και χρόνους διατήρησης δεδομένων. Η τεχνολογία PCM (Phase-Change Memory) αποτελεί μία νέα τεχνολογία στον χώρο των συσκευών αποθήκευσης πληροφορίας. Μπορεί να προσφέρει υψηλές χωρητικότητες, χαμηλή κατανάλωση ισχύος και μπορεί να εφαρμοστεί είτε σε συσκευές αποθήκευσης σταθερής κατάστασης (Solid State Drives) είτε σε μνήμες τυχαίας προσπέλασης, παρέχοντας μία εναλλακτική πρόταση έναντι μνημών τεχνολογίας flash και DRAM. Προσφέρει έναν nonvolatile μηχανισμό αποθήκευσης που επιδέχεται ολοκλήρωση μεγαλύτερης κλίμακας, με αποτέλεσμα να αποτελεί υποψήφιο διάδοχο των σημερινών τεχνολογιών.

16 2 Οι συσκευές που βασίζονται στην τεχνολογία PCM λειτουργούν με εναλλαγές μεταξύ χαμηλής αντίστασης κρυσταλλικής κατάστασης και υψηλής αντίστασης άμορφης κατάστασης. Η μετάβαση φάσης, η οποία προκαλείται με θερμικό τρόπο, επιτυγχάνεται με την διοχέτευση ρεύματος στο υλικό αποθήκευσης κατά τη διάρκεια των εγγραφών. Η κατάσταση του κυττάρου στη συνέχεια ανιχνεύεται κατά τη διάρκεια των αναγνώσεων, με την κατάσταση υψηλής αντίστασης να ερμηνεύεται ως 0 και την κατάσταση χαμηλής αντίστασης ως 1. Η τεχνολογία PCM βασίζεται σε θερμικές επιδράσεις και σε ιδιότητες του αναλογικού ρεύματος και δεν απαιτεί έλεγχο σε επίπεδο ηλεκτρονίων. Όσο οι τεχνολογίες ολοκληρώνονται σε μεγαλύτερη κλίμακα και τα σημεία θερμικής επαφής συρρικνώνονται, το ρεύμα που απαιτείται μειώνεται επίσης γραμμικά. Ως προς τις δυνατότητες ολοκλήρωσης του μηχανισμού της τεχνολογίας PCM, έχει παρουσιαστεί μία πρωτότυπη συσκευή στα 20 nm, ενώ εκτιμάται ότι θα φτάσει στα 9 nm [2]. Ως εναλλακτική της DRAM και άλλων συμβατικών τεχνολογιών, η τεχνολογία PCM μπορεί να προσφέρει έναν τρόπο αύξησης της πυκνότητας και χωρητικότητας της κύριας μνήμης. Ωστόσο, η βασική πρόκληση που πρέπει να αντιμετωπιστεί για την τεχνολογία PCM είναι η περιορισμένη ανθεκτικότητα εγγραφής της (write endurance). Οι εγγραφές με χρήση της τεχνολογίας PCM προκαλούν θερμική διαστολή και συστολή στο στοιχείο αποθήκευσης, υποβαθμίζοντας τις επαφές διάχυσης και περιορίζοντας την ανθεκτικότητα σε μερικές εκατοντάδες εκατομμύρια εγγραφές ανά κύτταρο στις υπάρχουσες εφαρμογές. Σε σημερινές συσκευές, ένα κύτταρο PCM υποστηρίζει κατά μέσο όρο περίπου 10 7 εγγραφές [3]. Αυτό σημαίνει ότι μια συσκευή αποθήκευσης πληροφορίας PCM θα παρουσιάσει φθορά σχετικά γρήγορα αν χρησιμοποιηθεί ως κύρια μνήμη. Αυτός είναι ένας σημαντικός περιορισμός και ένας βασικός λόγος που η τεχνολογία PCM δεν είναι ακόμα έτοιμη να αντικαταστήσει τεχνολογίες όπως η DRAM [4]. Μια προσέγγιση στην προσπάθεια να ξεπεραστεί αυτός ο φραγμός είναι η χρήση μεθόδων διόρθωσης λαθών που θα παρατείνουν τον χρόνο ζωής της συσκευής όταν, λόγω της φυσικής φθοράς του μέσου, αρχίσουν να εμφανίζονται σφάλματα στα αποθηκευμένα δεδομένα. Οι κώδικες διόρθωσης BCH είναι ιδανικοί για εφαρμογή στην περίπτωση των συσκευών PCM λόγω της δυνατότητάς τους για διόρθωση πολλαπλών τυχαίων λαθών, κάτι που ανταποκρίνεται στο μοτίβο εμφάνι-

17 3 σης σφαλμάτων των εν λόγω συσκευών. Για την υλοποίησή τους μπορούν να χρησιμοποιηθούν αποδοτικές υλοποιήσεις σε υλικό ενώ στη βιβλιογραφία υπάρχουν πολλές προτάσεις για αποδοτικές αρχιτεκτονικές. Η εφαρμογή ενός συστήματος διόρθωσης λαθών σε μία συσκευή PCM θα παρέτεινε αρκετά τον χρόνο ζωής της ο οποίος περιορίζεται από την ανθεκτικότητα εγγραφής της. Οι κώδικες BCH αποτελούν μία κλάση ισχυρών κυκλικών κωδίκων διόρθωσης λαθών. Για την υλοποίηση τόσο της κωδικοποίησης όσο και της αποκωδικοποίησης έχουν προταθεί αρκετοί αλγόριθμοι και αρχιτεκτονικές. Η διαδικασία αποκωδικοποίησης είναι αρκετά πολυπλοκότερη από την κωδικοποίηση και για την κατανόησή της είναι απαραίτητη η γνώση της άλγεβρας πεπερασμένων πεδίων. Τα βήματα της αποκωδικοποίησης περιλαμβάνουν τον υπολογισμό των συνδρόμων της λέξης που πρέπει να αποκωδικοποιηθεί, από τα οποία μπορεί να κατασκευαστεί ένα πολυώνυμο, το λεγόμενο πολυώνυμο εντοπισμού λαθών, η εύρεση των ριζών του οποίου ισοδυναμεί με την εύρεση των λαθών. Ο υπολογισμός αυτού του πολυωνύμου είναι το πιο πολύπλοκο κομμάτι της αποκωδικοποίησης και, ως εκ τούτου, αποτελεί το κρίσιμο σημείο που καθορίζει την απόδοση ενός κυκλώματος αποκωδικοποίησης. Η πλειοψηφία των υλοποιήσεων που έχουν παρουσιαστεί υιοθετούν αλγόριθμους που χρησιμοποιούν πολύπλοκα κυκλώματα αντιστροφής στοιχείων πεπερασμένου πεδίου. Η καθυστέρηση αυτών των κυκλωμάτων περιορίζει τη μέγιστη συχνότητα λειτουργίας που μπορεί να επιτευχθεί, μιας και οι πράξεις της αντιστροφής χρησιμοποιούνται σε επαναληπτικό βρόχο του αλγορίθμου. Για το λόγο αυτό αναζητήθηκαν και μελετήθηκαν προσεγγίσεις που χρησιμοποιούν πολλαπλασιαστές πεπερασμένου πεδίου αντί για αντιστροφείς, οι οποίοι είναι αρκετά πιο γρήγοροι και που αφήνουν περιθώρια για επίτευξη αρκετά υψηλότερων συχνοτήτων λειτουργίας. Πέρα από την βελτιστοποίηση του πυρήνα του αλγορίθμου, σημαντική κρίθηκε η δυνατότητα παράλληλης επεξεργασίας περισσότερων του ενός δυαδικών ψηφίων σε κάθε κύκλο. Η υλοποίηση παράλληλων κυκλωμάτων κωδικοποίησης και αποκωδικοποίησης ήταν ο στόχος αυτής της εργασίας ώστε να μειωθεί σημαντικά ο χρόνος αναμονής (latency), ο οποίος είναι ιδιαίτερα σημαντικός τόσο σε συσκευές αποθήκευσης πληροφορίας όσο και σε οποιαδήποτε άλλη συσκευή επικοινωνίας. Η εφαρμογή των κωδίκων διόρθωσης λαθών (Error-Control Coding ECC) σε συσκευές όπως αυτές που περιγράφηκαν προηγουμένως μπο-

18 4 ρούν να αναβάλλουν ενδεχόμενη αποτυχία τους σημαντικά [5]. Σε αυτή την εργασία μελετώνται αρκετές εναλλακτικές που έχουν προταθεί, αναζητώντας την χρυσή τομή μεταξύ πολυπλοκότητας και ταχύτητας, έχοντας ως βασικό στόχο την εφαρμογή αυτών των μεθόδων σε συσκευές αποθήκευσης πληροφορίας οποιασδήποτε τεχνολογίας, της οποίας η ανθεκτικότητα εγγραφής αποτελεί περιορισμό. Για το σκοπό αυτό σχεδιάστηκε και υλοποιήθηκε ενσωματωμένο σύστημα που χρησιμοποιεί έναν παράλληλο κωδικοποιητή και έναν παράλληλο αποκωδικοποιητή για τον κώδικα BCH(728,688). Ο συγκεκριμένος κώδικας παρέχει συγκριτικά πλεονεκτήματα και μπορεί να εφαρμοστεί με μεγάλη επιτυχία σε συσκευές αποθήκευσης λόγω του μοντέλου σφαλμάτων που τις διέπει. Η υλοποίηση του ενσωματωμένου συστήματος σε συσκευή FPGA αποτελεί μία πειραματική μελέτη των δυνατοτήτων και των προοπτικών της διόρθωσης λαθών ως εργαλείο νέων τεχνολογιών όπως η PCM. 1.2 Οργάνωση εργασίας Στο Κεφάλαιο 2 γίνεται μια σύντομη παρουσίαση της αριθμητικής πεπερασμένων πεδίων, η οποία είναι απαραίτητη για την κατανόηση των διαδικασιών κωδικοποίησης και αποκωδικοποίησης. Κατά την εισαγωγή αυτή παρουσιάζονται κάποιες βασικές μονάδες αριθμητικής πεπερασμένων πεδίων οι οποίες αποτελούν δομικά στοιχεία και σημείο εκκίνησης για τα πολυπλοκότερα συστήματα που θα σχεδιαστούν και θα παρουσιαστούν στη συνέχεια. Το Κεφάλαιο 3 επιχειρεί μία παρουσίαση των Κωδίκων BCH και των ιδιοτήτων τους. Γίνεται μία πρώτη αναφορά στο τι περιλαμβάνει μία διαδικασία κωδικοποίησης και αποκωδικοποίησης και κάποιοι από τους πιο σημαντικούς αλγόριθμους που τις υλοποιούν. Τέλος, αναφέρονται διάφορα χαρακτηριστικά για τον κώδικα BCH(728,688) που επιλέχθηκε για το σύστημα το οποίο υλοποιήθηκε. Στο Κεφάλαιο 4 παρουσιάζεται αναλυτικά η σχεδίαση ενός παράλληλου κωδικοποιητή για τον κώδικα BCH(728,688), από τους αλγόριθμους που χρησιμοποιήθηκαν μέχρι την αναλυτική αρχιτεκτονική του. Μελετάται η συμβατική σειριακή αρχιτεκτονική που έχει επικρατήσει και επισημαίνονται τα σημαντικά πλεονεκτήματα στην ταχύτητα κωδικοποίησης και στο χρόνο αναμονής, με μικρό αντίτιμο ως προς την πολυπλοκότητα, μιας παράλληλης υλοποίησης.

19 Στο Κεφάλαιο 5 παρουσιάζεται αναλυτικά η σχεδίαση ενός παράλληλου αποκωδικοποιητή για τον κώδικα BCH(728,688). Ιδιαίτερη βάση δίνεται στην μελέτη των διάφορων αλγορίθμων, καθώς υιοθετείται μία αρχιτεκτονική που δεν χρησιμοποιεί αντιστροφείς πεπερασμένου πεδίου. Αναλύεται με εξαιρετική λεπτομέρεια η αρχιτεκτονική και τα χαρακτηριστικά λειτουργίας του συστήματος, καθώς και η λογική που το υποστηρίζει. Στο Κεφάλαιο 6 παρουσιάζεται η δομή, η λογική και η λειτουργία των περιφερειακών που σχεδιάστηκαν για την ενσωμάτωση των συστημάτων παράλληλου κωδικοποιητή και παράλληλου αποκωδικοποιητή σε πλήρες ενσωματωμένο σύστημα βασισμένο στον επεξεργαστή MicroBlaze. Παρουσιάζονται επίσης κάποια γενικά εισαγωγικά στοιχεία για τα ενσωματωμένα συστήματα και για τον soft core επεξεργαστή MicroBlaze. Στο Κεφάλαιο 7 παρουσιάζεται όλη η διαδικασία υλοποίησης, από την μεθοδολογία που ακολουθήθηκε και τα διάφορα εργαλεία, έως την επαλήθευση των αποτελεσμάτων κατά την εκτέλεση λειτουργιών κωδικοποίησης και αποκωδικοποίησης στο ενσωματωμένο σύστημα που έχει προγραμματιστεί σε συσκευή FPGA. Παρουσιάζονται αναλυτικά πειραματικά αποτελέσματα και μετρήσεις που αφορούν τη μέγιστη συχνότητα λειτουργίας και την πολυπλοκότητα υλικού κάθε υλοποίησης καθώς και του ενσωματωμένου συστήματος ως σύνολο. Τέλος, στο Κεφάλαιο 8 γίνεται μία σύνοψη της εργασίας και των συμπερασμάτων που προέκυψαν ως προς το κατά πόσο η προσέγγιση που παρουσιάστηκε μπορεί να αποτελέσει λύση στο πρόβλημα ανθεκτικότητας εγγραφής των συσκευών αποθήκευσης πληροφορίας νέων τεχνολογιών. Επίσης, εκτιμάται η τεχνολογική αξία της υλοποίησης που παρουσιάστηκε σε σχέση με άλλες προσεγγίσεις στο ζήτημα των μεθόδων διόρθωσης λαθών. 5

20

21 Κεφάλαιο 2 Στοιχεία άλγεβρας πεπερασμένων πεδίων Ο σκοπός αυτού του κεφαλαίου είναι να προσφέρει μια σύντομη εισαγωγή στην άλγεβρα των πεπερασμένων πεδίων, η γνώση της οποίας είναι απαραίτητη για την κατανόηση των διαδικασιών της κωδικοποίησης και αποκωδικοποίησης που θα μελετηθούν στη συνέχεια της εργασίας. Επίσης, στην τελευταία ενότητα του κεφαλαίου γίνεται μία παρουσίαση κυκλωμάτων που μπορούν να χρησιμοποιηθούν για την υλοποίηση βασικών πράξεων σε αριθμητική πεπερασμένων πεδίων. Οι αποδείξεις παραλείπονται (ο αναγνώστης μπορεί να ανατρέξει στο [6] που αποτέλεσε και τη βάση αυτής της εισαγωγής). 2.1 Ομάδες Ορισμός 2.1. Ένα σύνολο G στο οποίο ορίζεται μια δυαδική πράξη ονομάζεται ομάδα (group) εάν ικανοποιούνται οι ακόλουθες συνθήκες: 1. Για την δυαδική πράξη ισχύει η προσεταιριστική ιδιότητα, δηλαδή a (b c) = (a b) c 2. Το G περιέχει ένα στοιχείο e τέτοιο ώστε, για κάθε a στο G, a e = e a = a Το e ονομάζεται ταυτοτικό στοιχείο (identity element) του συνόλου.

22 8 3. Για κάθε στοιχείο a στο G, υπάρχει ένα άλλο στοιχείο a στο G τέτοιο ώστε a a = a a = e To a ονομάζεται αντίστροφος του a. Μια ομάδα G λέγεται ότι είναι αθροιστική (commulative) αν η δυαδική της πράξη ικανοποιεί και την ακόλουθη συνθήκη: Για κάθε a και b στο G, a b = b a Θεώρημα 2.1. Το ταυτοτικό στοιχείο σε μια ομάδα G είναι μοναδικό. Θεώρημα 2.2. Ο αντίστροφος ενός στοιχείου της ομάδας είναι μοναδικός. Το πλήθος των στοιχείων σε μια ομάδα λέγεται τάξη (order) της ομάδας. Μια ομάδα πεπερασμένης τάξης λέγεται πεπερασμένη ομάδα. Έστω τώρα H είναι μη κενό υποσύνολο του G. Το υποσύνολο H λέγεται ότι είναι υποομάδα (subgroup) του G εάν είναι κλειστό ως προς την πράξη ομάδας του G και ικανοποιεί όλες τις συνθήκες μιας ομάδας. Για παράδειγμα, το σύνολο όλων των λογικών αριθμών είναι μια ομάδα ως προς την πρόσθεση πραγματικών αριθμών. Το σύνολο όλων των ακέραιων ακεραίων είναι μια υποομάδα της ομάδας των λογικών αριθμών ως προς την πρόσθεση λογικών αριθμών. Μια υποομάδα του G που δεν είναι ταυτόσημη με το G λέγεται γνήσια υποομάδα (proper subgroup) του G. Θεώρημα 2.3. Έστω G μια ομάδα ως προς τη δυαδική πράξη. Έστω H ένα μη κενό υποσύνολο του G. Τότε το H είναι μια υποομάδα του G εάν ισχύουν οι ακόλουθες συνθήκες: 1. Το H είναι κλειστό ως προς την δυαδική πράξη. 2. Για κάθε στοιχείο a στο H, ο αντίστροφος του a είναι επίσης στο H. Ορισμός 2.2. Έστω H μια υποομάδα της ομάδας G με δυαδική πράξη. Έστω a ένα στοιχείο του G. Τότε το σύνολο των στοιχείων a H

23 9 {a h : h H} λέγεται αριστερό σύμπλοκο (left coset) του H; το σύνολο των στοιχείων H a {h a : h H} λέγεται δεξιό σύμπλοκο (right coset) του H. Είναι προφανές ότι αν η ομάδα G είναι αθροιστική, τότε κάθε αριστερό σύμπλοκο a H ταυτίζεται με κάθε δεξιό σύμπλοκο H a; δηλαδή, a H = H a για κάθε a G. Σε αυτή την εισαγωγή, μελετώνται κυρίως οι αθροιστικές ομάδες, οπότε από εδώ και στο εξής δεν θα γίνεται διάκριση μεταξύ αριστερών και δεξιών σύμπλοκων. Θα αναφέρονται απλά ως σύμπλοκα. Θεώρημα 2.4. Έστω H μια υποομάδα της ομάδας G με δυαδική πράξη. Δύο στοιχεία σε ένα σύμπλοκο H δεν ταυτίζονται ποτέ. Θεώρημα 2.5. Έστω H μια υποομάδα της ομάδας G με δυαδική πράξη. Δύο στοιχεία σε δύο διαφορετικά σύμπλοκα της υποομάδας H μιας ομάδας G δεν ταυτίζονται ποτέ. Από τα Θεωρήματα 2.4 και 2.5, προκύπτουν οι ακόλουθες ιδιότητες για τα σύμπλοκα μιας υποομάδας H μιας ομάδας G: 1. Κάθε στοιχείο της ομάδας G εμφανίζεται σε ένα και μόνο σύμπλοκο της υποομάδας H; 2. Όλα τα διακεκριμένα σύμπλοκα της υποομάδας H είνα ξένα μεταξύ τους; και 3. Η ένωση όλων των διακεκριμένων σύμπλοκων της υποομάδας H σχηματίζει την ομάδα G. 2.2 Πεδία Πεδίο: Έστω F ένα σύνολο στοιχείων πάνω στο οποίο ορίζονται οι πράξεις της πρόσθεσης + και του πολλαπλασιασμού. Το F λέγεται πεδίο αν ικανοποιούνται οι ακόλουθες συνθήκες: 1. Ισχύει η αντιμεταθετική ιδιότητα για την πράξη της πρόσθεσης. Το ταυτοτικό στοιχείο της πρόσθεσης ονομάζεται μηδενικό στοιχείο και συμβολίζεται με 0. a + 0 = 0 + a = a, a F

24 10 2. Για το σύνολο F 0 ισχύει η αντιμεταθετική ιδιότητα για την πράξη του πολλαπλασιασμού. Το ταυτοτικό στοιχείο του πολλαπλασιασμού ονομάζεται μοναδιαίο στοιχείο και συμβολίζεται με 1. a 1 = 1 a = a, a F 3. Ισχύει η επιμεριστική ιδιότητα ως εξής: a (b + c) = a b + a c, a, b, c F Σε ένα πεδίο ορίζονται τόσο ο αντίστροφος ενός στοιχείου a για την πρόσθεση και συμβολίζεται με a, όσο και για τον πολλαπλασιασμό και συμβολίζεται με a 1. Η ύπαρξη του a κάνει εφικτό τον ορισμό της πράξης της αφαίρεσης ως εξής: b a = b + ( a), a, b F. Αντίστοιχα, η ύπαρξη του a 1 κάνει εφικτό τον ορισμό της πράξης της διαίρεσης ως εξής: b/a = b a 1, a, b F. Έστω τώρα ένα πεδίο GF (q). Δημιουργούμε μία ακολουθία των αθροισμάτων του μοναδιαίου στοιχείου 1 στο GF (q): 1 1 = 1, i=1 2 1 = 1 + 1,..., i=1 k 1 = (k φορές) i=1 Επειδή όμως το πεδίο είναι κλειστό ως προς την άθροιση, κάθε ένα από τα παραπάνω αθροίσματα πρέπει να ανήκει στο πεδίο. Συνεπώς, κάποια στιγμή η ακολουθία των αθροισμάτων αρχίζει να επαναλαμβάνεται, ή, με άλλα λόγια, υπάρχον δύο θετικοί ακέραιοι m, n με m < n τέτοιοι ώστε m 1 = i=1 n 1 = i=1 m n i=1 1 = 0 Ο μικρότερος θετικός ακέραιος αριθμός λ για τον οποίο ισχύει λ 1 = 0 λέγεται χαρακτηριστικός αριθμός του πεδίου και αποδεικνύεται ότι είναι πρώτος αριθμός [6]. Τα πεδία πεπερασμένης τάξης έχουν ιδιαίτερη σημασία για τη θεωρία κωδικοποίησης και ονομάζονται πεπερασμένα πεδία ή πεδία Galois προς τιμήν του Evariste Galois, ο οποίος τα ανακάλυψε. Ένα Galois πεδίο τάξης q συμβολίζεται ως GF (q). Αποδεικνύεται ότι πρέπει το q να είναι πρώτος αριθμός ώστε να μπορεί να οριστεί το πεδίο για τις πράξεις της modulo-q i=1

25 11 πρόσθεσης και του modulo-q πολλαπλασιασμού. Στην παρούσα εργασία θα χρησιμοποιηθεί δυαδική αριθμητική, που σημαίνει ότι πρέπει το q να είναι ίσο με 2. Κατά συνέπεια, όλες οι πράξεις θα ορίζονται modulo-2. Το GF (2) ονομάζεται πεδίο βάσης και από αυτό θα παραχθούν πεδία επέκτασης που συμβολίζονται ως GF (2 m ) και έχουν ιδιαίτερη σημασία για τους κώδικες διόρθωσης λαθών. 2.3 To GF (2 m ) Αρχικά θα δοθούν κάποιοι βασικοί ορισμοί και ιδιότητες που αφορούν την αριθμητική δυαδικών πεδίων. Ένα πολυώνυμο p(x) βαθμού m ορισμένο πάνω στο GF (2) είναι ένα πολυώνυμο της μορφής: p(x) = p 0 + p 1 x + p 2 x p m x m (2.1) όπου οι συντελεστές p i ανήκουν στο GF (2) = {0, 1}. Στα πολυώνυμα αυτά ισχύει η πρόσθεση, η αφαίρεση, ο πολλαπλασιασμός και η διαίρεση που ισχύει και στα κλασσικά πολυώνυμα, μόνο που εδώ όλες οι επιμέρους πράξεις γίνονται modulo-2. Αποδεικνύεται ότι για τα πολυώνυμα στο GF (2) ισχύει: Και κατ επέκταση για κάθε i 0 ισχύει: p 2 (x) = p(x 2 ) (2.2) [p(x)] 2i = p(x 2i ) (2.3) Ορισμός 2.3. Ένα πολυώνυμο p(x) πάνω στο GF (2) βαθμού m λέγεται μη ανάγωγο αν το p(x) δεν διαιρείται από κανένα πολυώνυμο του GF (2) βαθμού μικρότερου ή ίσου του m και μεγαλύτερου του μηδενός. Για να κατασκευαστεί ένα πεδίο επέκτασης GF (2 m ) επιλέγεται ένα πολυώνυμο του GF (2) βαθμού m, έστω το p(x). Έπειτα κατασκευάζεται ένα σύνολο 2 m πολυωνύμων βαθμού μικρότερου ή ίσου του m και ονομάζεται F. Αποδεικνύεται ότι όταν η πρόσθεση και ο πολλαπλασιασμός αυτών των πολυωνύμων γίνεται modulo-p(x), το σύνολο F αποτελεί ένα πεδίο 2 m στοιχείων και ονομάζεται GF (2 m ). Έτσι, το GF (2 m ) αποτελεί επέκταση του GF (2) όπως και οι μιγαδικοί αριθμοί C αποτελούν επέκταση των πραγματικών αριθμών R, με χρήση του πολυωνύμου p(x) = x

26 Η πολυωνυμική βάση και τα πρωτογενή στοιχεία Ένα σύνολο m γραμμικά ανεξάρτητων στοιχείων β = {β 0, β 1,..., β m 1 } του GF (2 m ) ονομάζεται βάση για το GF (2 m ). Κάθε στοιχείο α GF (2 m ) μπορεί να αναπαρασταθεί με μοναδικό τρόπο ως γραμμική συνάρτηση των στοιχείων της βάσης του πεδίου. Δηλαδή, α = α 0 β 0 + α 1 β α m 1 β m 1 α i GF (2) (2.4) Οπότε, το στοιχείο α μπορεί να αναπαρασταθεί ως ένα διάνυσμα (α 0 α 1... α m 1 ), τα στοιχεία του οποίου είναι δυαδικοί αριθμοί. Υπάρχει ένας μεγάλος αριθμός πιθανών βάσεων για το GF (2 m ). Παρακάτω θα εξεταστεί μια από τις πιο σημαντικές. Έστω p(x) το μη ανάγωγο πολυώνυμο που ορίζει το GF (2 m ). Θεωρώντας το α ως μία ρίζα του p(x), τότε το A = {1, α,..., a m 1 } αποτελεί μία πολυωνυμική βάση για το GF (2 m ). Για παράδειγμα, έστω το GF (2 4 ) με μη ανάγωγο πολυώνυμο το p(x) = x 4 + x + 1. Αν το α είναι μία ρίζα του πολυωνύμου αυτού, τότε το A = {1, α, α 2, α 3 } αποτελεί μία πολυωνυμική βάση του πεδίου και κάθε ένα από τα 16 στοιχεία του μπορεί να αναπαρασταθεί ως: α = α 0 + α 1 α + α 2 α 2 + α 3 α 3, α i GF (2) (2.5) Οι συντελεστές της βάσης συνήθως αναγράφονται σε πίνακες βάσης, όπως ο Πίνακας 2.1. Ένα μη ανάγωγο πολυώνυμο p(x) βαθμού m λέγεται πρωτογενές (primitive) αν ο μικρότερος θετικός ακέραιος αριθμός n για τον οποίο το p(x) διαιρεί το x n + 1 είναι ο n = 2 m 1. Στον Πίνακα 2.1 δίνεται μία λίστα με πρωτογενή πολυώνυμα για διάφορα πεπερασμένα πεδία. Πρέπει να σημειωθεί ότι το πρωτογενές πολυώνυμο δεν είναι απαραίτητα μοναδικό για ένα συγκεκριμένο m. Αν τώρα το α είναι μία ρίζα του p(x), όπου το p(x) είναι όχι μόνο μη ανάγωγο αλλά και πρωταρχικό, τότε το Galois πεδίο GF (2 m ) μπορεί εναλλακτικά να αναπαρασταθεί ως ένα σύνολο στοιχείων GF (2 m ) = {0, 1, α, α 2,..., α n 1} όπου n = 2 m 1. Σε αυτή την περίπτωση το α ονομάζεται πρωτογενές στοιχείο και ισχύει α n = 1. Η σχέση ανάμεσα στις δυνάμεις του α και της αναπαράστασης της πολυωνυμικής βάσης

27 13 m m x + x x + x 6 + x 10 + x x + x x + x x 2 + x x + x 3 + x 12 + x x + x x 3 + x x 3 + x x 7 + x x 2 + x 3 + x 4 + x x + x 2 + x 5 + x x 4 + x x 3 + x x 3 + x x 2 + x x 2 + x x + x x + x 4 + x 6 + x x 5 + x x + x 3 + x 4 + x x + x 2 + x 7 + x 24 Πίνακας 2.1: Λίστα πρωτογενών πολυωνύμων φαίνεται στον Πίνακα 2.2. Ελάχιστο πολυώνυμο (minimal polynomial) ενός στοιχείου β GF (2 m ) λέγεται ένα πολυώνυμο ϕ(x) ελάχιστου βαθμού, για το οποίο ισχύει ϕ(β) = 0. Ο βαθμός του πολυωνύμου αυτού θα είναι μικρότερος του 2 m. Αποδεικνύεται ότι το ελάχιστο πολυώνυμο ϕ(x) ενός στοιχείου β GF (2 m ) είναι μη ανάγωγο. Επίσης αποδεικνύεται ότι αν το β είναι ρίζα ενός πολυωνύμου f(x) του GF (2), τότε το f(x) διαιρείται από το ϕ(x). Οι ιδιότητες αυτές του ελάχιστου πολυωνύμου αποκτούν ιδιαίτερη σημασία καθώς μπορούν να απλοποιήσουν σημαντικά την υλοποίηση της πράξης του πολλαπλασιασμού. Έστω β ένα στοιχείο του Galois πεδίου GF (2 m ). Τα στοιχεία β, β 2, β 22, β 23,... λέγονται συζυγή στοιχεία (conjugates) του β ως προς το υπό-πεδίο GF (2). Αποδεικνύεται ότι αν το β είναι ρίζα ενός πολυωνύμου f(x) του GF (2) τότε και τα β, β 2, β 22, β 23,... είναι ρίζες του πολυωνύμου αυτού. 2.5 Η δυαδική βάση Η δυαδική βάση είναι μία πολύ σημαντική έννοια στη θεωρία πεπερασμένων πεδίων αλλά και στη θεωρία κωδικοποίησης, καθώς μπορεί να χρησιμοποιηθεί για την υλοποίηση πολλαπλασιαστών. Έστω {λ i } και {µ i } βάσεις του πεπερασμένου πεδίου GF (2 m ), και έστω f μία γραμμική συνάρτηση που απεικονίζει το GF (2 m ) στο GF (2), και έστω β GF (2 m ), β 0. Τότε οι {λ i } και {µ i } είναι δυαδικές η μία προς τη άλλη ως προς τα f και β αν:

28 14 Δύναμη του α Πολυωνυμική βάση Δυαδική βάση Κανονική βάση 1, α, α 2, α 3 1, α 3, α 2, α α 3, α 6, α 12, α Πίνακας 2.2: Αναπαραστάσεις πολυωνυμικής, δυαδικής και κανονικής βάσης του GF (2 4 ) που ορίζεται από το πολυώνυμο p(x) = x 4 + x αν i = j f(βλ i µ i ) = 0 αν i j (2.6) Σε αυτή την περίπτωση, η {λ i } είναι μία πολυωνυμική βάση και η {µ i } μία δυαδική βάση. Κάθε βάση έχει μία δυαδική βάση ως προς οποιαδήποτε μη μηδενική γραμμική συνάρτηση f : GF (2 m ) GF (2), και οποιοδήποτε μη μηδενικό β GF (2 m ). Για παράδειγμα, έστω το GF (2 4 ) με p(x) = x 4 +x+1, και έστω α μία ρίζα του p(x). Τότε η πολυωνυμική βάση του πεδίου είναι {1, α, α 2, α 3 }. Έστω τώρα β = 1 και f ο λιγότερο σημαντικός συντελεστής της πολυωνυμικής βάσης, τότε το σύνολο {1, α 3, α 2, α} είναι η αντίστοιχη δυαδική βάση. Δηλαδή, μεταβάλλοντας την τιμή του β μπορούμε να βρούμε 2 m 1 δυαδικές βάσεις και να χρησιμοποιήσουμε τελικά όποια έχει τα καλύτερα για εμάς χαρακτηριστικά. Μία συνήθης επιλογή είναι η δυαδική βάση η οποία προκύπτει από την πολυωνυμική με τον πιο απλό γραμμικό μετασχηματισμό.

29 15 Σχήμα 2.1: Αθροιστής πεπερασμένου πεδίου 2.6 Η κανονική βάση Μία κανονική βάση για το GF (2 m ) είναι μία βάση της μορφής B = {β, β 2,..., β 2n 1 } όπου β GF (2 m ). Για κάθε πεπερασμένο πεδίο υπάρχει πάντα τουλάχιστον μία κανονική βάση. Η κανονική βάση είναι ιδιαίτερα χρήσιμη για την απεικόνιση δυνάμεων, καθώς αν το σύνολο {α 0, α 1,..., α m 1 } είναι η αναπαράσταση της κανονικής βάσης του α GF (2 m ) τότε το σύνολο {α m 1, α 0, α 1,..., α m2 } είναι η αναπαράσταση της κανονικής βάσης του α 2. Με την εκμετάλλευση των ιδιοτήτων των κανονικών βάσεων λοιπόν είναι δυνατή η υλοποίηση σε hardware πολλαπλασιαστών με υψηλή απόδοση. 2.7 Υλοποίηση αριθμητικής πεπερασμένων πεδίων Πρόσθεση δύο στοιχείων Για να προσθέσουμε δύο στοιχεία ενός πεπερασμένου πεδίου, απλά προσθέτουμε modulo-2 τις διανυσματικές τους αναπαραστάσεις. Το διάνυσμα που προκύπτει είναι το ζητούμενο άθροισμα. Η υλοποίηση της άθροισης είναι ιδιαίτερα απλή, αφού μπορεί να πραγματοποιηθεί με m XOR πύλες των δύο εισόδων σε ένα κύκλο ρολογιού, και δεν υπάρχει κρατούμενο. Έτσι, δύο στοιχεία που ανήκουν, για

30 16 παράδειγμα, στο GF (2 4 ) μπορούν να προστεθούν με το κύκλωμα που φαίνεται στο σχήμα 2.1. Αρχικά, τα διανύσματα των δύο στοιχείων που θα προστεθούν, έστω α, β GF (2 4 ) φορτώνονται στους καταχωρητές Α και Β. Θεωρώντας θετική λογική, στην ανερχόμενη παρυφή του ρολογιού, το ζητούμενο άθροισμα θα φορτωθεί στον καταχωρητή Α. Στο κύκλωμα του σχήματος 2.1 χρησιμοποιούνται επιπλέον m πύλες AND, στις οποίες συνδέουμε το σήμα ADD, το οποίο ενεργοποιεί το κύκλωμα της πρόσθεσης (αντιστοιχεί δηλαδή σε ένα σήμα enable) Πολλαπλασιασμός με μία σταθερά α i Έστω ένα στοιχείο β GF (2 4 ) και ότι θέλουμε να το πολλαπλασιάσουμε με το πρωτογενές στοιχείο του πεδίου α. Από τη θεωρία των πεπερασμένων πεδίων γνωρίζουμε ότι το β μπορεί να αναπαρασταθεί πολυωνυμικά ως εξής: β = b 0 + b 1 α + b 2 α 2 + b 3 α 3, b i GF (2) (2.7) Έστω ότι στο πεδίο που δουλεύουμε το ελάχιστο πολυώνυμο του στοιχείου α είναι το ϕ(x) = 1 + x + x 4. Αυτό σημαίνει ότι ϕ(α) = 0 1+α+α 4 = 0. Με τη βοήθεια αυτής της σχέσης υπολογίζουμε το γινόμενο α β και το εκφράζουμε στην ακόλουθη μορφή: α β = b 3 + (b 0 + b 3 )α + b 1 α 2 + b 2 α 3 (2.8) Κατά συνέπεια, ο πολλαπλασιασμός αυτός μπορεί να υλοποιηθεί με έναν γραμμικό καταχωρητή ολίσθησης γραμμικής ανάδρασης (Linear Feedback Shift Register LFSR) που φαίνεται στο σχήμα 2.2. αρχικά φορτώνουμε τη διανυσματική αναπαράσταση του στοιχείου β στον καταχωρητή. Στην ανερχόμενη παρυφή του ρολογιού ο καταχωρητής θα περιέχει τη διανυσματική αναπαράσταση του ζητούμενου γινομένου, με τα λιγότερο σημαντικά bits να εμφανίζονται αριστερά. Στο δεύτερο παλμό του ρολογιού ο καταχωρητής θα περιέχει τη διανυσματική αναπαράσταση του γινομένου β α 2, και συνεπώς στον i-οστό παλμό του ρολογιού θα περιέχει τη διανυσματική αναπαράσταση του γινομένου β α i. Συχνά είναι απαραίτητο να σχεδιαστεί ένα κύκλωμα για πολλαπλασιασμό επί α i με τον περιορισμό το αποτέλεσμα να είναι διαθέσιμο σε χρόνο ενός ρολογιού. Αν για παράδειγμα θέλουμε τα υπολογίσουμε το γινόμενο β α 3 σε χρόνο ενός ρολογιού αρκεί να ακολουθήσουμε την

31 17 Σχήμα 2.2: Κύκλωμα για πολλαπλασιασμό τυχαίου στοιχείου στο GF (2 4 ) με α Σχήμα 2.3: Κύκλωμα για πολλαπλασιασμό τυχαίου στοιχείου στο GF (2 4 ) με α 3 προηγούμενη διαδικασία: β α 3 = b 0 α 3 + b 1 α 4 + b 2 α 5 + b 3 α 6 = b 0 α 3 + b 1 (1 + α) + b 2 (α + α 2 ) + b 3 (α 2 + α 3 ) = b 1 + (b 1 + b 2 )α + (b 2 + b 3 )α 2 + (b 0 + b 3 )α 3 (2.9) Από την παραπάνω σχέση είναι εφικτός ο σχεδιασμός του εν λόγω κυκλώματος, σύμφωνα με το σχήμα 2.3. Δηλαδή, στη γενική περίπτωση, η υλοποίηση του πολλαπλασιασμού με μία σταθερά απαιτεί έναν καταχωρητή των m σταδίων και το πολύ m 1 πύλες XOR και ολοκληρώνεται σε ένα μόνο κύκλο ρολογιού Πολλαπλασιασμός δύο στοιχείων ενός πεδίου Galois Θεωρούμε τώρα δύο στοιχεία β, γ GF (2 4 ), με πολυωνυμικές αναπαραστάσεις: β = b 0 + b 1 α + b 2 α 2 + b 3 α 3, b i GF (2) γ = c 0 + c 1 α + c 2 α 2 + c 3 α 3, c i GF (2)

32 18 Το γινόμενο τους, μετά από πράξεις πολυωνύμων, μπορεί να γραφτεί στην παρακάτω μορφή: β γ = (((c 3 β)α + c 2 β)α + c 1 β)α + c 0 β (2.10) Για να υλοποιηθεί αυτός ο πολλαπλασιασμός χρειάζεται μία παραλλαγή του κυκλώματος πολλαπλασιασμού επί α (σχήμα 2.2) σε συνδυασμό με το κύκλωμα της πρόσθεσης (σχήμα 2.1). Ένα τέτοιο κύκλωμα παρουσιάζεται στο σχήμα 2.4. Σχήμα 2.4: Κύκλωμα για πολλαπλασιασμό δύο στοιχείων στο GF (2 4 ) Στο κύκλωμα αυτό αρχικά φορτώνονται οι διανυσματικές αναπαραστάσεις των δύο στοιχείων στους καταχωρητές B και C. Στον πρώτο κύκλο ρολογιού θα υπολογιστεί το γινόμενο c 3 β. Στον δεύτερο κύκλο ρολογιού το προηγούμενο αποτέλεσμα θα πολλαπλασιαστεί επί α και θα προστεθεί σε αυτό το νέο γινόμενο c 2 β. Στον τρίτο κύκλο ρολογιού το προηγούμενο αποτέλεσμα θα πολλαπλασιαστεί επί α και θα προστεθεί σε αυτό το νέο γινόμενο c 1 β. Τέλος, στον τέταρτο κύκλο ρολογιού το προηγούμενο αποτέλεσμα θα πολλαπλασιαστεί επί α και θα προστεθεί

33 19 Σχήμα 2.5: Ένα άλλο κύκλωμα για πολλαπλασιασμό δύο στοιχείων στο GF (2 4 ) σε αυτό το νέο γινόμενο c 0 β. Με αυτό τον τρόπο μετά από τέσσερις κύκλους θα έχουμε στον καταχωρητή Α το ζητούμενο αποτέλεσμα. Με αυτόν τον τρόπο ο πολλαπλασιασμός δύο στοιχείων απαιτεί τρεις καταχωρητές των m σταδίων, m πύλες AND, m πύλες XOR και ολοκληρώνεται σε m κύκλους ρολογιού. Υπάρχει όμως και ένας εναλλακτικός τρόπος πολλαπλασιασμού. Το γινόμενο β γ μπορεί να εκφραστεί στη μορφή: β γ = (((c 0 β) + c 1 βα) + c 2 βα 2 ) + c 3 βα 3 (2.11) Έτσι, το κύκλωμα του πολλαπλασιασμού μπορεί να σχεδιαστεί σύμφωνα με το σχήμα 2.5. Το κύκλωμα αυτό είναι της ίδιας πολυπλοκότητας και απαιτεί τον ίδιο χρόνο εκτέλεσης με αυτό του 2.4. Γενικά, δύο στοιχεία του πεδίου Galois GF (2 m ) μπορούν να πολλαπλασιαστούν με ένα κύκλωμα συνδυαστικής λογικής 2m εισόδων και m εξόδων Υπολογισμός του r(α i ) Ο υπολογισμός της τιμής r(α i ) ενός πολυωνύμου είναι μια ιδιαίτερα σημαντική πράξη, με ευρεία εφαρμογή στη αποκωδικοποίηση BCH κωδίκων. Έστω ένα πολυώνυμο r(x) στο GF (2). Ενδεικτικά, θα δουλέψουμε

34 20 Σχήμα 2.6: Κύκλωμα για υπολογισμό του r(α) στο GF (2 4 ), και θεωρούμε πολυώνυμο βαθμού 2 m 2. Η επιλογή αυτή θα αιτιολογηθεί πλήρως στο Κεφάλαιο 3, όπου επεξηγούνται οι BCH κώδικες. Η έκφραση r(α) μπορεί να γραφτεί ως εξής: r(α) = r 0 + r 1 α + r 2 α r 14 α 14 (2.12) όπου το α είναι το πρωτογενές στοιχείο του GF (2 4 ). Η παραπάνω έκφραση μπορεί να μετασχηματιστεί μετά από πράξεις, έτσι ώστε να έρθει σε μία μορφή που να κάνει σαφή τον τρόπο υλοποίησης της: r(α) = (... ((r 14 α + r 13 )α + r 12 )α +...)α + r 0 (2.13) Έτσι, είναι σαφές ότι η υλοποίηση της συγκεκριμένης πράξης απαιτεί να γίνεται επαναλαμβανόμενα ένας πολλαπλασιασμός nα και μία πρόσθεση αυτού με το r i 1. Αυτό είναι εφικτό με χρήση του κυκλώματος του σχήματος 2.2, αν προστεθεί σε αυτό μια μονάδα πρόσθεσης (ή ισοδύναμα μία πύλη XOR). Το προτεινόμενο κύκλωμα φαίνεται στο σχήμα 2.6. Κατά αντίστοιχο τρόπο μπορεί να υλοποιηθεί οποιαδήποτε πράξη r(α i ) με προσθήκη μίας πύλης XOR στην είσοδο του αντίστοιχου κυκλώματος πολλαπλασιασμού. Στη γενική περίπτωση, η πράξη αυτή απαιτεί ένα καταχωρητή των m σταδίων, το πολύ m πύλες XOR, και ολοκληρώνεται σε τόσους κύκλους ρολογιού όσο είναι και το μήκος της λέξης εισόδου (στη συγκεκριμένη περίπτωση 2 m 1).

35 Κεφάλαιο 3 Κώδικες BCH Οι πρώτοι γραμμικοί κώδικες για διόρθωση λαθών που ανακαλύφθηκαν ήταν οι κώδικες Hamming [7]. Αυτοί οι κώδικες είναι ικανοί για διόρθωση ενός μόνο λάθους αλλά επειδή αυτοί και οι παραλλαγές τους είναι ιδιαίτερα απλοί είναι ιδιαίτερα διαδεδομένοι για συστήματα στα οποία απαιτείται διόρθωση λαθών. Αργότερα, οι κώδικες Hamming γενικεύτηκαν σε μία μεγάλη κατηγορία ισχυρών κωδίκων διόρθωσης τυχαίων λαθών, τους Bose, Chaudhuri και Hocquenghem (BCH). Οι δυαδικοί BCH κώδικες ανακαλύφθηκαν από τον Hocquenghem το 1959 [8] και ανεξάρτητα από τους Bose και Chaudhuri το 1960 [9]. 3.1 Δυαδικοί πρωτογενείς BCH κώδικες Οι δυαδικοί BCH κώδικες είναι μία από τις πιο σπουδαίες υποκατηγορίες των BCH κωδίκων με πολύ εκτεταμένη χρήση σε συστήματα διόρθωσης λαθών. Μερικά από τα πλεονεκτήματα τους είναι ότι είναι η υψηλή απόδοση, η σχετική ευκολία στις τεχνικές κωδικοποίησης και αποκωδικοποίησης και η απλή και αποδοτική υλοποίησή τους σε υλικό [6]. Για κάθε θετικό ακέραιο m 3 και t < 2 m 1 υπάρχει δυαδικός BCH κώδικας με τα εξής χαρακτηριστικά: Μήκος κωδικής λέξης: 2 m 1 Αριθμός ψηφίων ισοτιμίας: n k mt Ελάχιστη απόσταση: d min 2t + 1 Διορθωτική ικανότητα: t

36 22 Είναι αξιοσημείωτο ότι για t = 1 προκύπτουν κώδικες Hamming. Όσον αφορά το BCH κώδικα, το πολυώνυμο-γεννήτοράς του μπορεί να προσδιοριστεί από τις ρίζες του μέσα στο πεδίο Galois GF (2 m ). Συγκεκριμένα, το πολυώνυμο-γεννήτορας ενός BCH(n,k,t) κώδικα είναι το πολυώνυμο του GF (2) ελάχιστου βαθμού, το οποίο έχει ως ρίζες τα στοιχεία α, α 2, α 3,..., α 2t Δηλαδή, αν το πολυώνυμο-γεννήτορας συμβολιστεί με g(x) τότε για αυτό ισχύει: g(α i ) = 0, για 1 i 2t (3.1) Για να υπολογίσουμε το πολυώνυμο g(x), βρίσκουμε πρώτα τα ελάχιστα πολυώνυμα ϕ i (x) των αντίστοιχων στοιχείων α i του πεδίου. Το γινόμενο όλων των ϕ i (x) προφανώς ικανοποιεί τη σχέση 3.1. Έχουμε όμως επιπλέον την απαίτηση το g(x) να είναι ελάχιστου βαθμού. Συνεπώς, αρκεί να υπολογίσουμε το ελάχιστο κοινό πολλαπλάσιο του γινομένου, δηλαδή g(x) = LCM{ϕ 1 (x)ϕ 2 (x)... ϕ 2t (x)} (3.2) Ο παραπάνω υπολογισμός μπορεί να απλοποιηθεί ακόμα περισσότερο αν ληφθεί υπ όψιν ο ορισμός του συζυγούς ενός στοιχείου από το Κεφάλαιο 2. Κάθε άρτια δύναμη του α μπορεί να γραφτεί στην εξής μορφή: α i = α j2l α i = (a j ) 2l (3.3) όπου i άρτιος και j περιττός. Κατά συνέπεια, τα α i και α j είναι και τα δύο ρίζες του πολυωνύμου ϕ j (x), δηλαδή έχουν το ίδιο ελάχιστο πολυώνυμο. Άρα από τη σχέση 3.2 μπορούν να αφαιρεθούν όλα τα ελάχιστα πολυώνυμα στοιχείων που είναι άρτιες δυνάμεις του α. Έτσι g(x) = LCM{ϕ 1 (x)ϕ 3 (x)... ϕ 2t 1 (x)} (3.4) Στη Σχέση 3.4 κάθε πολυώνυμο ϕ i (x) έχει βαθμό το πολύ m, και υπάρχουν συνολικά t πολυώνυμα που πολλαπλασιάζονται. Άρα, ο βαθμός του πολυωνύμου-γεννήτορα θα είναι το πολύ mt, δηλαδή τα ψηφία ισοτιμίας θα είναι το πολύ mt. Για μικρό t, τα ψηφία ισοτιμίας n k είναι ίσα με το γινόμενο mt [10].

37 23 Σε αυτό το σημείο μπορεί να οριστεί και το μητρώο ελέγχου ισοτιμίας (parity-check matrix) H, αν ληφθεί υπ όψιν ότι κάθε πολυώνυμο που αντιστοιχεί σε κωδική λέξη διαιρείται από το πολυώνυμο-γεννήτορα, άρα τα στοιχεία α, α 2, α 3,..., α 2t είναι ρίζες του. Έτσι, το μητρώο H είναι το ακόλουθο: 1 α α 2 α 3... α n 1 1 α 2 (α 2 ) 2 (α 2 ) 3... (α 2 ) n 1 H = 1 α 3 (α 3 ) 2 (α 3 ) 3... (α 3 ) n α 2t (α 2t ) 2 (α 2t ) 3... (α 2t ) n 1 (3.5) Αν θεωρήσουμε κωδική λέξη v = (v 0 v 1... v n 1 ), τότε για το μητρώο αυτό ισχύει v H T = 0. Για τους λόγους που αναφέρθηκαν προηγουμένως (σχέση 3.3) είναι προφανές ότι οι άρτιες γραμμές του πίνακα H μπορούν να παραλειφθούν. Κατά συνέπεια, ο πίνακας ελέγχου ισοτιμίας μπορεί να απλουστευτεί στον παρακάτω πίνακα: 1 α α 2 α 3... α n 1 1 α 3 (α 3 ) 2 (α 3 ) 3... (α 3 ) n 1 H = 1 α 5 (α 5 ) 2 (α 5 ) 3... (α 5 ) n α 2t 1 (α 2t 1 ) 2 (α 2t 1 ) 3... (α 2t 1 ) n 1 (3.6) Τα στοιχεία του μητρώου ελέγχου ισοτιμίας είναι στοιχεία του πεδίου Galois GF (2 m ). Μπορούν λοιπόν να αντικατασταθούν με τις διανυσματικές τους αναπαραστάσεις και έτσι να εξαχθεί ένας πίνακας H που να περιέχει μόνο δυαδικά στοιχεία. Αποδεικνύεται ότι η ελάχιστη απόσταση ενός δυαδικού πρωτογενούς BCH κώδικα είναι τουλάχιστον 2t + 1 [6]. 3.2 Δυαδικοί μη-πρωτογενείς BCH κώδικες Οι δυαδικοί μη-πρωτογενείς BCH κώδικες μπορούν να κατασκευαστούν με τρόπο παρόμοιο με αυτό των πρωτογενών. Αυτοί οι κώδικες έχουν μήκος block n 2 m 1 και το πολυώνυμο-γεννήτοράς τους έχει ρίζες τα στοιχεία β, β 2, β 3,..., β 2t

38 24 όπου β είναι ένα μη πρωτογενές στοιχείο του GF (2 m ). Αν θεωρήσουμε ότι τα ψ 1 (x), ψ 2 (x),..., ψ 2t (x) είναι τα ελάχιστα πολυώνυμα των στοιχείων β, β 2, β 3,..., β 2t αντίστοιχα, τότε το πολυώνυμο-γεννήτορας είναι το: g(x) = LCM{ψ 1 (x), ψ 2 (x),..., ψ 2t (x)} Στους δυαδικούς μη-πρωτογενείς κώδικες ο αριθμός των ψηφίων ισοτιμίας είναι το πολύ mt και η ελάχιστη απόσταση του κώδικα τουλάχιστον 2t+1. Η παρούσα εργασία πραγματεύεται μόνο την περίπτωση των πρωτογενών BCH κωδίκων. 3.3 Κωδικοποίηση BCH κωδίκων Όπως αναφέρθηκε στο Κεφάλαιο 2, μία λέξη u μεγέθους k δυαδικών ψηφίων κωδικοποιείται σε μία άλλη λέξη v μεγέθους n δυαδικών ψηφίων ως εξής: v(x) = u(x) g(x) Αυτού του είδους η κωδικοποίηση όμως δεν θα δημιουργήσει έναν συστηματικό κώδικα, κάτι που γενικά δεν είναι επιθυμητό. Για αυτό το λόγο η κωδικοποίηση γίνεται ως εξής: v(x) = x n k u(x) + p(x) (3.7) όπου p(x) είναι το πολυώνυμο που αντιστοιχεί στα ψηφία ισοτιμίας (parity) και προκύπτει από τη σχέση: p(x) = [x n k u(x)] mod g(x) (3.8) Με αυτόν τον τρόπο η πληροφορία εμφανίζεται αυτούσια μέσα στην κωδικοποιημένη λέξη και καταλαμβάνει τα περισσότερο σημαντικά δυαδικά ψηφία της, ενώ τα ψηφία ισοτιμίας είναι τα λιγότερο σημαντικά ψηφία της λέξης. Οι BCH κώδικες υλοποιούνται όπως οι κυκλικοί κώδικες, δηλαδή η κωδικοποίηση γίνεται με καταχωρητές ολίσθησης γραμμικής ανάδρασης (LFSR). Η υλοποίηση της πράξης που εκφράζει η σχέση 3.7 και που κάνει δυνατή τη συστηματική κωδικοποίηση θα αναλυθεί στο Κεφάλαιο 4.

39 Αποκωδικοποίηση BCH κωδίκων Η διαδικασία αποκωδικοποίησης είναι αρκετά πιο πολύπλοκη από την κωδικοποίηση. Γενικά, μπορεί να χωριστεί σε τρία βήματα: 1. Υπολογισμός συνδρόμων 2. Υπολογισμός του πολυωνύμου εντοπισμού των λαθών 3. Προσδιορισμός των θέσεων των λαθών και διόρθωση Υπολογισμός συνδρόμων Έστω ότι τα πολυώνυμα: v(x) = v 0 + v 1 x + v 2 x v n 1 x n 1 r(x) = r 0 + r 1 x + r 2 x r n 1 x n 1 e(x) = e 0 + e 1 x + e 2 x e n 1 x n 1 είναι η σωστή κωδική λέξη, η λέξη που έλαβε ο δέκτης και το μοτίβο λαθών αντίστοιχα. Τα πολυώνυμα αυτά συνδέονται με την εξής σχέση: r(x) = v(x) + e(x) (3.9) Στο δέκτη διαθέσιμο είναι μόνο το πολυώνυμο r(x), το οποίο και αποθηκεύεται σε μία μνήμη προσωρινής αποθήκευσης. Από τη θεωρία κωδικοποίησης είναι γνωστό ότι για ένα κώδικα διόρθωσης t λαθών, έχουμε 2t σύνδρομα, τα οποία υπολογίζονται από την εξής σχέση: S = (S 1 S 2... S 2t ) = r H (3.10) Από τις σχέσεις 3.5 και 3.10 εξάγεται ότι S i = r(α i ) = r 0 + r 1 α + r 2 α r n 1 α n 1 (3.11) για i = 1, 2,..., 2t. Η υλοποίηση αυτής της πράξης μπορεί να γίνει από κυκλώματα όπως αυτό του σχήματος 2.6. Προφανώς, όταν όλα τα σύνδρομα είναι ίσα με το μηδέν, η σχέση 3.10 γίνεται r H T = 0, άρα η λέξη που έχει ληφθεί είναι κωδική λέξη και δεν έχουν συμβεί λάθη.

40 Υπολογισμός του πολυωνύμου εύρεσης θέσεων των λαθών Από τις Σχέσεις 3.9 και 3.11 και λαμβάνοντας υπ όψιν ότι τα α i (i = 1, 2,..., 2t) είναι ρίζες κάθε κωδικής λέξης v(x), προκύπτει ότι: S i = e(α i ), i = 1, 2,..., 2t (3.12) Στη συνέχεια θεωρείται ότι στη λέξη που μεταδόθηκε έχουν εισαχθεί ν λάθη στις θέσεις j 1, j 2,..., j ν. Έτσι, το πρόβλημα της αποκωδικοποίησης ανάγεται στο πρόβλημα του προσδιορισμού των θέσεων αυτών. Με αυτά τα δεδομένα, το πολυώνυμο e(x) μπορεί να γραφτεί ως εξής: e(x) = x j 1 + x j x j ν (3.13) Από τις Σχέσεις 3.12 και 3.13 προκύπτει η σχέση: S i = (α i ) j 1 + (α i ) j (α i ) jν, i = 1, 2,..., 2t (3.14) Συνεπώς, έχουμε ένα σύστημα 2t εξισώσεων με ν αγνώστους, και συγκεκριμένα τους j 1, j 2,..., j ν. Γενικά, αυτές οι εξισώσεις έχουν πολλές λύσεις, κάθε μία από τις οποίες αντιστοιχεί σε ένα διαφορετικό μοτίβο λαθών. Ο αποκωδικοποιητής πρέπει να βρει την λύση που αντιστοιχεί στο μικρότερο δυνατό αριθμό λαθών, καθώς αυτό είναι το μοτίβο λάθους που είναι πιο πιθανό να έχει εισαχθεί από το κανάλι. Επίσης, για να υπάρχει δυνατότητα διόρθωσης πρέπει ο αριθμός των λαθών να είναι μικρότερος ή ίσος της διορθωτικής ικανότητας t του κώδικα που χρησιμοποιείται. Για την επίλυση των εξισώσεων 3.14, ο αποκωδικοποιητής πρέπει πρώτα να προσδιορίσει του συντελεστές ενός πολυωνύμου που λέγεται πολυώνυμο εντοπισμού λαθών και ορίζεται από τη σχέση [10]: ν Λ(x) = (1 + α j n x) (3.15) n=1 Για διευκόλυνση των πράξεων, θέτοντας X n = α jn παραπάνω εξίσωση μπορεί να γραφτεί: για 1 n ν, η

41 27 Λ(x) = = ν (1 + X n x) n=1 ν λ n x n n=0 (3.16) Το πιο δύσκολο κομμάτι της αποκωδικοποίησης είναι να προσδιοριστούν οι συντελεστές του πολυωνύμου εντοπισμού λαθών από τα σύνδρομα. Από τη σχέση 3.16 αποδεικνύεται με μαθηματικό τρόπο ότι τα λ n αποτελούν στοιχειώδεις συμμετρικές συναρτήσεις των X n, δηλαδή: λ 0 = 1 λ 1 = X 1 + X X ν λ 2 = X 1 X 2 + X 2 X X ν 1 X ν (3.17). (3.18) λ ν = X 1 X 2... X nu Παράλληλα όμως από τη σχέση 3.14 φαίνεται ότι τα σύνδρομα συνδέονται με τα X n σύμφωνα με τη σχέση: S i = X i 1 + X i X i ν, i = 1, 2,..., 2t (3.19) Από τις Σχέσεις 3.17 και 3.19 παρατηρούμε ότι τα σύνδρομα S i μπορούν τελικά να συνδεθούν με τους συντελεστές του πολυωνύμου Λ(x) μέσω ενός συνόλου εξισώσεων που λέγονται ταυτότητες του Newton: S 1 + λ 1 = 0 S 2 + λ 1 S 1 + 2λ 2 = 0 S 3 + λ 1 S 2 + λ 2 S 1 + 3λ 3 = 0. (3.20) S ν + λ 1 S ν λ ν 1 S 1 + νλ ν = 0. Οι παραπάνω ταυτότητες μπορούν να απλοποιηθούν αν λάβουμε υπ όψιν ότι στη δυαδική περίπτωση iλ i = 0 για άρτιο i.

42 28 Από τις σχέσεις 3.20 είναι εφικτό να προσδιοριστούν οι ζητούμενοι συντελεστές του πολυωνύμου Λ(x). Ο βαθμός του πολυωνύμου αυτού υποδεικνύει πόσα λάθη υπάρχουν στη ληφθείσα λέξη, και συνεπώς είναι επιθυμητό να είναι μικρότερος ή ίσος του t για σωστό αποτέλεσμα. Επίσης, όπως αναφέρθηκε προηγουμένως, οι σχέσεις αυτές μπορεί να έχουν πολλές λύσεις, οπότε είναι απαραίτητος ο προσδιορισμός του πολυωνύμου Λ(x) ελάχιστου βαθμού. Για την εύρεση των συντελεστών αυτών έχουν αναπτυχθεί διάφοροι αλγόριθμοι, όπως ο αλγόριθμος Peterson-Gorenstein-Zieler ή ο Ευκλείδειος αλγόριθμος. Πιο αποδοτικός όμως αλγόριθμος θεωρείται ο αλγόριθμος Berlekamp-Massey [10], ο οποίος και θα χρησιμοποιηθεί στην παρούσα εργασία. Παρακάτω δίνεται μια γενική περιγραφή του αλγορίθμου, χωρίς αποδείξεις. Ο αλγόριθμος Berlekamp είναι επαναληπτικός και απαιτεί 2t επαναλήψεις, αφού τα σύνδρομα του είναι γνωστά και είναι τα S 1, S 2,..., S 2t. Το πρώτο βήμα του αλγορίθμου είναι η εύρεση ενός ελάχιστου βαθμού πολυώνυμο Λ (1) (x) του οποίου οι συντελεστές ικανοποιούν την πρώτη ταυτότητα του Newton. Έπειτα ελέγχει αν αυτό το πολυώνυμο ικανοποιεί και τη δεύτερη ταυτότητα του Newton, και αν ναι θέτει Λ (2) (x) = Λ (1) (x). Αν όχι, ο αλγόριθμος προσθέτει στο Λ (1) (x) έναν όρο διόρθωσης έτσι ώστε το Λ (2) (x) να ικανοποιεί τις δύο πρώτες ταυτότητες Newton. Στο τελευταίο βήμα του αλγορίθμου έχει υπολογιστεί το Λ (2t) (x) και αυτό πλέον θεωρείται ότι είναι το πολυώνυμο εντοπισμού λαθών από το οποίο θα προκύψει το ζητούμενο μοτίβο λάθους. Πιο συγκεκριμένα, έστω ότι στο µ-οστό βήμα του αλγορίθμου έχει υπολογισθεί ένα πολυώνυμο λ (µ) (x) = 1 + λ (µ) 1 x + λ(µ) 2 x λ (µ) ν µ x νµ το οποίο ικανοποιεί τις πρώτες µ ταυτότητες Newton. Τότε, για να προχωρήσουμε στο επόμενο βήμα υπολογίζουμε την ακόλουθη ποσότητα: d µ = S µ+1 + λ (µ) 1 S µ + λ (µ) 2 S µ λ (µ) ν µ S µ+1 νµ (3.21) Για τον υπολογισμό του λ (µ+1) (x): 1. Αν d m = 0, τότε Λ (µ+1) (x) = Λ (µ) (x), και ν µ+1 = ν µ. 2. Αν d m 0, ο αλγόριθμος γυρνά στις προηγούμενες επαναλήψεις και βρίσκει ένα πολυώνυμο Λ (ρ) (x) για το οποίο d ρ 0 και η διαφορά

43 29 ρ ν ρ έχει τη μέγιστη τιμή. Τότε Λ (µ+1) (x) = Λ (µ) (x) + d µ d ρ x (µ ρ) Λ (ρ) (x) Τα παραπάνω αφορούν τόσο τους δυαδικούς BCH κώδικες όσο και τους μη δυαδικούς. Στην περίπτωση μας ασχολούμαστε μόνο με δυαδικούς BCH κώδικες, και συνεπώς όλες οι άρτιες επαναλήψεις μπορούν να παραλειφθούν. Έτσι ο αλγόριθμος γίνεται ταχύτερος και ολοκληρώνεται σε t βήματα. Ο αλγόριθμος που περιγράφηκε είναι ο γενικός αλγόριθμος Berlekamp- Massey. Στο Κεφάλαιο 5 θα γίνει μία εκτενέστερη μελέτη των τρόπων υλοποίησής του και των παραλλαγών που έχουν προταθεί Προσδιορισμός των θέσεων των λαθών και διόρθωση Αφού προσδιοριστεί το πολυώνυμο Λ(x) το μόνο που μένει είναι να βρεθούν οι ρίζες του, οι οποίες δείχνουν τις θέσεις των λαθών μέσα στην κωδική λέξη, ώστε να επιτευχθεί τελικά η διόρθωσή τους. Για αυτό το βήμα της αποκωδικοποίησης έχουν αναπτυχθεί επίσης διάφοροι αλγόριθμοι. Παρακάτω θα γίνει αναφορά σε δύο από αυτούς, τον αλγόριθμο Peterson και τον πλέον διαδεδομένο αλγόριθμο Chien. Ο αλγόριθμος του Peterson αποτελεί την πιο απλή δυνατή λύση, καθώς σύμφωνα με αυτόν οι ρίζες του πολυωνύμου Λ(x) μπορούν να βρεθούν με απλή αντικατάσταση των 1, α, α 2,..., α n 1 (n = 2 m 1) στο Λ(x). Ο αλγόριθμος αυτός αναλύεται στα εξής απλά βήματα: 1. Αντικατάσταση στο Λ(x) διαδοχικά των στοιχείων 1, α, α 2,..., α n 1 (n = 2 m 1). 2. Εάν Λ(α j ) = 0 τότε ο αντίστροφος του α j, δηλαδή το στοιχείο α n j είναι ένας αριθμός που προσδιορίζει τη θέση ενός λάθους. Αυτό σημαίνει ότι υπάρχει λάθος στη θέση n j. Λαμβάνουμε υπ όψιν ότι α n = 1 και α j = α n j. 3. Μετά από n επαναλήψεις έχουν προσδιοριστεί πλήρως όλες οι ρίζες του Λ(x), άρα και όλα τα λάθη. Συνεπώς γνωρίζουμε το μοτίβο λάθους και διορθώνουμε με modulo-2 πρόσθεση με τη ληφθείσα λέξη.

44 30 Αργότερα, ο Chien ανέπτυξε έναν ακόμα αλγόριθμο για εύρεση και διόρθωση λαθών, με τον οποίο η αποκωδικοποίηση γίνεται ψηφίο προς ψηφίο [11]. Σύμφωνα με αυτό τον αλγόριθμο, τα πιο σημαντικά δυαδικά ψηφία αποκωδικοποιούνται πρώτα. Για να γίνει η αποκωδικοποίηση του ψηφίου που βρίσκεται στη θέση n j ο αλγόριθμος υπολογίζει το άθροισμα: 1 + λ 1 α j + λ 2 α 2j λ ν α ν j Αν το άθροισμα αυτό είναι ίσο με το μηδέν, τότε προφανώς το a j είναι ρίζα του πολυωνύμου Λ(x), και συνεπώς υπάρχει λάθος στη θέση n j. Το λάθος μπορεί να διορθωθεί αμέσως με απλή αντιστροφή του αντίστοιχου δυαδικού ψηφίου της ληφθείσας λέξης. Αν το παραπάνω άθροισμα είναι διάφορο του μηδενός, τότε το δυαδικό ψηφίο στη θέση n j είναι σωστό. Η υλοποίηση του αλγορίθμου Chien για δυαδικούς κώδικες θα αναλυθεί στην Ενότητα

45 Κεφάλαιο 4 Κωδικοποιητής BCH 4.1 Σειριακή κωδικοποίηση Ένας δυαδικός (n, k) κώδικας BCH κωδικοποιεί ένα μήνυμα των k δυαδικών ψηφίων σε μία κωδική λέξη των n δυαδικών ψηφίων. Τα k δυαδικά ψηφία του μηνύματος (m k 1, m k 2,..., m 0 ) μπορούν να θεωρηθούν συντελεστές ενός πολυωνύμου m(x) = m k 1 x k 1 + m k 2 x k m 0, βαθμού k 1, όπου m k 1, m k 2,..., m 0 GF (2). Ομοίως, τα n δυαδικά ψηφία της αντίστοιχης κωδικής λέξης (c n 1, c n 2,..., c 0 ) μπορούν να θεωρηθούν συντελεστές ενός πολυωνύμου c(x) = c n 1 x n 1 + c n 2 x n c 0, βαθμού n 1, όπου επίσης c n 1, c n 2,..., c 0 GF (2). Τότε, η κωδικοποίηση με κώδικα BCH μπορεί να εκφραστεί απλά με την σχέση c(x) = m(x)g(x) όπου το πολυώνυμο g(x) = g n k x n k + g n k 1 x n k g 0, βαθμού n k, με g n k, g n k 1,..., g 0 GF (2), είναι το πολυώνυμο-γεννήτορας του κώδικα BCH. Συνήθως g n k = g 0 = 1. Ωστόσο, γενικά προτιμάται η συστηματική κωδικοποίηση, από τη στιγμή που τα δυαδικά ψηφία του μηνύματος είναι απλά ένα μέρος της κωδικής λέξης. Η συστηματική κωδικοποίηση μπορεί να υλοποιηθεί ως εξής: c(x) = m(x) x n k + Rem(m(x) x n k ) g(x) (4.1) όπου το Rem(f(x)) g(x) αντιστοιχεί στο πολυώνυμο που προκύπτει ως υπόλοιπο της διαίρεσης του f(x) με το g(x). Γενικά, η κατασκευή ενός συστηματικού κώδικα BCH αποτελείται από τρία βήματα:

46 32 Σχήμα 4.1: Αρχιτεκτονική σειριακού κωδικοποιητή BCH Βήμα 1: Πολλαπλασιασμός του πολυωνύμου του μηνύματος m(x) με x n k. Βήμα 2: Διαίρεση της ποσότητας (m(x) x n k ) με το g(x) για να προκύψει το υπόλοιπο της διαίρεσης, δηλαδή η ποσότητα Rem(m(x) x n k ) g(x). Βήμα 3: Σχηματισμός της κωδικής λέξης με προσάρτηση του υπολοίπου στο μήνυμα. Για την υλοποίηση αυτών των τριών βημάτων του αλγορίθμου μπορεί να χρησιμοποιηθεί μια αρχιτεκτονική με έναν καταχωρητή ολίσθησης γραμμικής ανάδρασης (Linear Feedback Shift Register - LFSR) των n k σταδίων, στην οποία οι όροι των αναδράσεων καθορίζονται από το πολυώνυμο-γεννήτορα g(x). Στο σχήμα 4.1 παρατίθεται μια βασισμένη σε LFSR αρχιτεκτονική ενός σειριακού κωδικοποιητή BCH, όπου είναι η πράξη XOR, είναι ο πολλαπλασιασμός πεπερασμένου πεδίου, και οι (n k) καταχωρητές χρησιμοποιούνται για να αποθηκεύουν το υπόλοιπο Rem(m(x) x n k ) g(x). Κατά την πάροδο των πρώτων k κύκλων ρολογιού, οι δύο διακόπτες είναι συνδεδεμένοι στην είσοδο a, και το μήνυμα των k δυαδικών ψηφίων εισάγεται στον LFSR σειριακά με πρώτο το πιο σημαντικό ψηφίο. Ταυτόχρονα, τα δυαδικά ψηφία του μηνύματος στέλνονται στην έξοδο για να σχηματιστεί το συστηματικό τμήμα της κωδικής λέξης. Μετά από k κύκλους ρολογιού, οι διακόπτες μετακινούνται στην είσοδο b. Σε αυτό το σημείο, οι n K καταχωρητές περιέχουν τους συντελεστές του Rem(m(x) x n k ) g(x). Στη συνέχεια τα δυαδικά ψηφία του υπολοίπου ολισθαίνουν εκτός των καταχωρητών στην έξοδο της κωδικής λέξης, ψηφίο

47 33 προς ψηφίο, ώστε να σχηματίσουν τα υπόλοιπα ψηφία της συστηματικής κωδικής λέξης. Για δυαδικούς κώδικες BCH, οι πολλαπλασιαστές πεπερασμένου πεδίου στο σχήμα 4.1 μπορούν να αντικατασταθούν από σύνδεση ή απουσία σύνδεσης όταν το g i (0 i < n k) είναι 1 ή 0 αντίστοιχα. Η κρίσιμη διαδρομή αυτής της αρχιτεκτονικής αποτελείται από δύο πύλες XOR και η έξοδος της δεξιότερης πύλης XOR είναι είσοδος για όλες τις άλλες. Στην περίπτωση των μεγάλων κωδίκων BCH αυτή η αρχιτεκτονική μπορεί να επηρεαστεί από μία πιθανώς μεγάλη καθυστέρηση της δεξιότερης πύλης XOR, που θα οφείλεται στο μεγάλο πλήθος των πυλών που αυτή οδηγεί (το λεγόμενο fanout bottleneck). Αν και η σειριακή αρχιτεκτονική του κωδικοποιητή BCH είναι σχετικά απλή, στις περιπτώσεις που δεν μπορεί να είναι τόσο γρήγορη όσο οι προδιαγραφές της εφαρμογής απαιτούν θα πρέπει να υιοθετηθούν παράλληλες αρχιτεκτονικές. Το πρόβλημα του fanout bottleneck θα συνεχίσει να υπάρχει και σε αυτές, με σημαντική διαφορά όμως τη μείωση, κατά έναν παράγοντα ίσο με τον βαθμό παραλληλίας, των κύκλων ρολογιού που θα απαιτούνται για την κωδικοποίηση του ίδιου μηνύματος. [12] [13] [14] 4.2 Παράλληλη κωδικοποίηση Ένας παράλληλος κωδικοποιητής BCH που μπορεί να επεξεργάζεται m δυαδικά ψηφία ταυτόχρονα έχει m φορές πιο μεγάλη ταχύτητα επεξεργασίας από έναν σειριακό κωδικοποιητή. Από την ανάλυση της προηγούμενης ενότητας γίνεται σαφές ότι για την υλοποίηση ενός παράλληλου κωδικοποιητή BCH θα πρέπει η κατάσταση του καταχωρητή που κρατά το υπόλοιπο τη χρονική στιγμή T +m να μπορεί να προκύψει από την κατάσταση του ίδιου καταχωρητή τη χρονική στιγμή T και από τα m δυαδικά ψηφία του μηνύματος. Για το σκοπό αυτό έχουν προταθεί διάφοροι αλγόριθμοι [12] [13] [14]. Σε αυτή την εργασία έχει υιοθετηθεί η λύση των Zhang et al. στο [14]. Έστω ότι U 0 (T ),..., U R 1 (T ) είναι οι καταστάσεις των καταχωρητών που κρατούν το υπόλοιπο τη χρονική στιγμή T και x(t + 1) είναι το δυαδικό ψηφίο πληροφορίας που εισέρχεται τη χρονική στιγμή T + 1. Τότε οι καταστάσεις U 0 (T + 1),..., U R 1 (T + 1) μπορούν να εκφραστούν ως εξής:

48 34 U R 1 (T + 1) = U R 2 (T ) + g R 1 [U R 1 (T ) + x(t + 1)] U R 2 (T + 1) = U R 3 (T ) + g R 2 [U R 1 (T ) + x(t + 1)]. U 1 (T + 1) = U 0 (T ) + g 1 [U R 1 (T ) + x(t + 1)] U 0 (T + 1) = [U R 1 (T ) + x(t + 1)] Αυτές οι εξισώσεις μπορούν να ξαναγραφτούν ως πολλαπλασιασμός μητρώων: U R 1 (T + 1) U R 2 (T + 1) U R 3 (T + 1). U 1 (T + 1) U 0 (T + 1) R 1 g R g R g R = g Η εξίσωση 4.2 μπορεί να απλοποιηθεί ορίζοντας R R U R 1 (T ) + x(t + 1) U R 2 (T ) U R 3 (T ). U 1 (T ) U 0 (T ) (4.2) R 1 U(T + 1) = [U R 1 (T + 1)U R 2 (T + 1)... U 1 (T + 1)U 0 (T + 1)] T U(T ) = [U R 1 (T )U R 2 (T )... U 1 (T )U 0 (T )] T X(T + 1) = [x(t + 1) ] T και θέτοντας g R g R g R F = g R R όπου η πρώτη στήλη στο μητρώο F είναι οι συντελεστές του πολυώνυμουγεννήτορα g(x). Τότε, η εξίσωση 4.2 μπορεί να γραφεί ως εξής:

49 35 U(T + 1) = F [U(T ) + X(T + 1)] (4.3) Η εξίσωση αυτή υποδηλώνει ότι η επόμενη κατάσταση του καταχωρητή που κρατά το υπόλοιπο μπορεί να υπολογιστεί από την τρέχουσα κατάσταση και την είσοδο. Υποθέτοντας πως U(T + m) είναι η κατάσταση του καταχωρητή υπολοίπου τη χρονική στιγμή T + m, σύμφωνα με την εξίσωση 4.3, μπορεί να εξαχθεί η ακόλουθη αναδρομική σχέση για το U(T + m): U(T + m) = F m (U(T ) + X(T + m) (4.4) όπου X(T + m) = [x 1 (T + m)... x m (T + m) ] T και το μητρώο F m μπορεί να κατασκευαστεί αναδρομικά καθώς το i μεταβάλλεται από 2 έως m: F i = F (i 1) g R 1 g R 2. g 1 1 oι πρώτϵς R 1 στήλϵς τoυ F i 1 g R g R με F 1 =..... g R R R R Το αποτέλεσμα υποδεικνύει ότι όταν ένας κωδικοποιητής BCH επεξεργάζεται ένα μήνυμα m δυαδικών ψηφίων σε κάθε κύκλο, μπορεί να υπολογίσει το υπόλοιπο μετά από k/m κύκλους, όταν και θα είναι αποθηκευμένο στον καταχωρητή υπολοίπου. Οπότε, είναι πλέον δυνατό να υλοποιηθεί ένας παράλληλος κωδικοποιητής για έναν συστηματικό κώδικα BCH, ο οποίος θα παράγεται προσαρτώντας το υπόλοιπο μετά το μήνυμα των k δυαδικών ψηφίων,. Στο σχήμα 4.2 παρατίθεται η αρχιτεκτονική του παράλληλου κωδικοποιητή BCH που βασίζεται στην προσέγγιση αυτή. Αποτελείται από δύο μονάδες: ένα απλό ακολουθιακό κύκλωμα και ένα πολύπλοκο συνδυαστικό λογικό δίκτυο. Όπως γίνεται κατανοητό, η σχεδίαση ενός παράλληλου κωδικοποιητή υψηλής απόδοσης εξαρτάται από τη βελτιστοποίηση.,

50 36 F bch (I,S ) S next S Σχήμα 4.2: Απλοποιημένη αρχιτεκτονική παράλληλου κωδικοποιητή BCH αυτού του πολύπλοκου συνδυαστικού κυκλώματος, ζήτημα για το οποίο προηγούμενες μελέτες [15] [16] έχουν καταλήξει ότι είναι ένα NP-πλήρες πρόβλημα. Ακόμα και για το ίδιο κύκλωμα, για διαφορετικούς στόχους βελτιστοποίησης θα πρέπει να εφαρμοσθούν διαφορετικές μέθοδοι κάθε φορά. 4.3 Σχεδίαση παράλληλου κωδικοποιητή BCH(728,688) Στα πλαίσια της παρούσας εργασίας σχεδιάστηκε και υλοποιήθηκε ένας παράλληλος κωδικοποιητής για τον κώδικα BCH(728,688) με βάση τους αλγόριθμους που αναλύθηκαν στις προηγούμενες δύο ενότητες. Τα χαρακτηριστικά του συγκεκριμένου κώδικα, καθώς και οι λόγοι που αυτός επιλέχθηκε, αναλύθηκαν στο Κεφάλαιο 3. Ο κώδικας BCH(728,688), ο οποίος μπορεί να διορθώσει μέχρι 4 λάθη, είναι συντετμημένη (shortened) μορφή του κώδικα BCH(1023,983) με στοιχεία από το πεπερασμένο πεδίο GF (2 10 ). Το πολυώνυμο-γεννήτοράς του είναι το g(x) = x 40 + x 39 + x 33 + x 31 + x 30 + x 29 + x 27 + x 25 + x 24 + x 23 + x 22 + x 21 + x 19 + x 16 + x 12 + x 11 + x 10 + x 9 + x 7 + x 6 + x 4 + x 3 + x + 1 Όπως αναφέρθηκε, ο αλγόριθμος που επιλέχθηκε για την σχεδίαση του παράλληλου κωδικοποιητή BCH(728,688) είναι ο αλγόριθμος των Zhang et. al. [14]. Η διαδικασία της σχεδίασης ξεκινά την προσαρμογή του αλγορίθμου στα χαρακτηριστικά του κώδικα BCH(728,688) και συνεχίζει με την σύνθεση της αρχιτεκτονικής που θα τον υλοποιήσει.

51 Αλγόριθμος Αρχικά σχεδιάστηκε ο σειριακός κωδικοποιητής που αντιστοιχεί στο πολυώνυμο-γεννήτορα σύμφωνα με τον αλγόριθμο που αναλύθηκε στην παράγραφο 4.1. Οι όροι του πολυωνύμου καθορίζουν σε ποια σημεία υπάρχουν αναδράσεις και σε ποια όχι (ανάλογα με το εάν g i = 0 ή 1 ) στην γενική αρχιτεκτονική του σχήματος 4.1. Από το πολυώνυμο γίνεται εύκολα αντιληπτό πως υπάρχουν 23 μη μηδενικοί όροι, κάτι που σημαίνει ότι η δεξιότερη πύλη XOR θα πρέπει να οδηγήσει άλλες 23 πύλες. O σειριακός κωδικοποιητής BCH(728,688) χρειάζεται 688 κύκλους ρολογιού για την είσοδο όλων των ψηφίων του μηνύματος στον LFSR συν 40 κύκλους για ολίσθηση του αθροίσματος ελέγχου των 40 δυαδικών ψηφίων στην έξοδο. Αν ληφθούν υπόψη το fanout bottleneck λόγω της δεξιότερης XOR που περιορίζει τη μέγιστη ταχύτητα του συστήματος, και οι ανάγκες της προδιαγραφής που απαιτούν επεξεργασία περισσοτέρων του ενός ψηφίων σε κάθε κύκλο ρολογιού, κρίνεται σκόπιμο να σχεδιαστεί ένας παράλληλος κωδικοποιητής για τον κώδικα BCH(728,688). Ο κωδικοποιητής αυτός θα έχει βαθμό παραλληλίας 8, θα δέχεται δηλαδή σε κάθε κύκλο 8 δυαδικά ψηφία (1 byte), κάτι που σημαίνει ότι θα χρειάζονται 86 κύκλοι για να εισέλθουν όλα τα δυαδικά ψηφία του μηνύματος 688 ψηφία μηνύματος ( ) και να σχηματιστεί στους καταχωρητές το υπόλοιπο της διαίρεσης του πολυωνύμου του μηνύματος με το g(x), ενώ 8 ψηφία ανά κύκλο χρειάζονται άλλοι 5 κύκλοι για να ολισθήσουν στην έξοδο τα 40 δυαδικά ψηφία ( ). Σε σχέση με τους 728 κύκλους που 40 ψηφία υπολοίπου 8 ψηφία ανά κύκλο χρειάζεται ο σειριακός κωδικοποιητής για σχηματισμό της κωδικής λέξης, οι 91 κύκλοι στην περίπτωση του παράλληλου κωδικοποιητή αποτελούν μια σημαντική μείωση της τάξης του 87.5%. Η μεθοδολογία που εφαρμόσθηκε για τη σχεδίαση του παράλληλου κωδικοποιητή έχει ως βάση των αλγόριθμο [14] που αναλύθηκε στην ενότητα 4.2. Ο κώδικας BCH(728,688) έχει άθροισμα ελέγχου (checksum) των 40 δυαδικών ψηφίων. Αυτό σημαίνει πως χρειάζονται 40 καταχωρητές του ενός δυαδικού ψηφίου για την αποθήκευσή του. Έστω ότι U 0 (T ) έως U 39 (T ) και U 0 (T + 8) έως U 39 (T + 8) είναι οι τιμές των 40 καταχωρητών τις χρονικές στιγμές και T +8 αντίστοιχα, ενώ X 1 (T +8)... X 8 (T +8) είναι τα 8 παράλληλα δυαδικά ψηφία εισόδου τη χρονική στιγμή T+8. Βάση της διαδικασίας που θα περιγραφεί στη συνέχεια είναι η εξίσωση 4.4 για βαθμό παραλληλίας m = 8, δηλαδή

52 38 U(T + 8) = F 8 (U(T ) + X(T + 8)) (4.5) όπου X(T + 8) = [x 1 (T + 8)... x 8 (T + 8) ] T, ενώ το μητρώο F 8 κατασκευάστηκε αναδρομικά, με το i να μεταβάλλεται από 2 έως 8, και είναι F 8 = Τότε, θέτοντας V 39 (T ) = U 39 (T ) + X 1 (T + 8), V 38 (T ) = U 38 (T ) + X 2 (T + 8),. V 32 (T ) = U 32 (T ) + X 8 (T + 8). και εφαρμόζοντας την εξίσωση 4.5 προκύπτουν από τον πίνακα F 8 οι

53 39 ακόλουθες σχέσεις για τον υπολογισμό των περιεχομένων των 40 καταχωρητών του αθροίσματος ελέγχου (ή, αλλιώς, του υπολοίπου): U 39 (T + 8) = V 39 (T ) + V 37 (T ) + V 36 (T ) + V 35 (T ) + V 34 (T ) + V 33 + V 32 (T ) + U 31 (T ) U 38 (T + 8) = V 38 (T ) + V 37 (T ) + U 30 (T ) U 37 (T + 8) = V 39 (T ) + V 37 (T ) + V 36 (T ) + U 29 (T ) U 36 (T + 8) = V 38 (T ) + V 36 (T ) + V 35 (T ) + U 28 (T ) U 35 (T + 8) = V 37 (T ) + V 35 (T ) + V 34 (T ) + U 27 (T ) U 34 (T + 8) = V 39 (T ) + V 36 (T ) + V 34 (T ) + V 33 (T ) + U 26 (T ) U 33 (T + 8) = V 38 (T ) + V 35 (T ) + V 33 (T ) + V 32 (T ) + U 25 (T ) U 32 (T + 8) = V 39 (T ) + V 36 (T ) + V 35 (T ) + V 33 (T ) + U 24 (T ) U 31 (T + 8) = V 39 (T ) + V 38 (T ) + V 35 (T ) + V 34 (T ) + V 32 (T ) + U 23 (T ) U 30 (T + 8) = V 39 (T ) + V 38 (T ) + V 36 (T ) + V 35 (T ) + V 32 (T ) + U 22 (T ) U 29 (T + 8) = V 39 (T ) + V 38 (T ) + V 36 (T ) + V 33 (T ) + V 32 (T ) + U 21 (T ) U 28 (T + 8) = V 38 (T ) + V 36 (T ) + V 34 (T ) + V 33 (T ) + U 20 (T ) U 27 (T + 8) = V 39 (T ) + V 37 (T ) + V 35 (T ) + V 33 (T ) + V 32 (T ) + U 19 (T ) U 26 (T + 8) = V 38 (T ) + V 37 (T ) + V 35 (T ) + V 33 (T ) + U 18 (T ) U 25 (T + 8) = V 39 (T ) + V 37 (T ) + V 36 (T ) + V 34 (T ) + V 32 (T ) + U 17 (T ) U 24 (T + 8) = V 38 (T ) + V 37 (T ) + V 34 (T ) + V 32 (T ) + U 16 (T ) U 23 (T + 8) = V 35 (T ) + V 34 (T ) + V 32 (T ) + U 15 (T ) U 22 (T + 8) = V 39 (T ) + V 37 (T ) + V 36 (T ) + V 35 (T ) + V 32 (T ) + U 14 (T ) U 21 (T + 8) = V 38 (T ) + V 37 (T ) + V 33 (T ) + V 32 (T ) + U 13 (T ) U 20 (T + 8) = V 35 (T ) + V 34 (T ) + V 33 (T ) + U 12 (T ) U 19 (T + 8) = V 34 (T ) + V 33 (T ) + V 32 (T ) + U 11 (T ) U 18 (T + 8) = V 39 (T ) + V 37 (T ) + V 36 (T ) + V 35 (T ) + V 34 (T ) + U 10 (T ) U 17 (T + 8) = V 38 (T ) + V 36 (T ) + V 35 (T ) + V 34 (T ) + V 33 (T ) + U 9 (T ) U 16 (T + 8) = V 37 (T ) + V 35 (T ) + V 34 (T ) + V 33 (T ) + V 32 (T ) + U 8 (T ) U 15 (T + 8) = V 37 (T ) + V 35 (T ) + U 7 (T ) U 14 (T + 8) = V 39 (T ) + V 36 (T ) + V 34 (T ) + U 6 (T ) U 13 (T + 8) = V 39 (T ) + V 38 (T ) + V 35 (T ) + V 33 (T ) + V 32 (T ) + U 5 (T ) U 12 (T + 8) = V 38 (T ) + V 37 (T ) + V 34 (T ) + V 32 (T ) + U 4 (T ) U 11 (T + 8) = V 35 (T ) + V 34 (T ) + V 32 (T ) + U 3 (T ) U 10 (T + 8) = V 37 (T ) + V 36 (T ) + V 35 (T ) + U 2 (T ) U 9 (T + 8) = V 39 (T ) + V 37 (T ) + V 33 (T ) + V 32 (T ) + U 1 (T ) U 8 (T + 8) = V 38 (T ) + V 37 (T ) + V 35 (T ) + V 34 (T ) + V 33 (T ) + U 0 (T ) U 7 (T + 8) = V 37 (T ) + V 36 (T ) + V 34 (T ) + V 33 (T ) + V 32 (T ) U 6 (T + 8) = V 37 (T ) + V 34 (T ) U 5 (T + 8) = V 36 (T ) + V 33 (T ) U 4 (T + 8) = V 39 (T ) + V 35 (T ) + V 32 (T ) U 3 (T + 8) = V 38 (T ) + V 37 (T ) + V 36 (T ) + V 35 (T ) + V 33 (T ) + V 32 (T ) U 2 (T + 1) = V 33 (T ) U 1 (T + 8) = V 39 (T ) + V 32 (T ) U 0 (T + 8) = V 38 (T ) + V 37 (T ) + V 36 (T ) + V 35 (T ) + V 34 (T ) + V 33 (T ) + V 32 (T )

54 40 Σχήμα 4.3: Κύκλωμα για υπολογισμό του U 39 (T ) με κρίσιμη διαδρομή μεγάλης καθυστέρησης Όπως υποδεικνύουν οι παραπάνω εξισώσεις, η παρουσία 1 στο μητρώο F 8 υποδηλώνει την ύπαρξη πύλης XOR στο συνδυαστικό κύκλωμα που αναφέρθηκε στην ενότητα 4.2. Σε αυτές τις 40 εξισώσεις, οι όροι V 39 (T ), V 38 (T ), V 37 (T ), V 36 (T ), V 35 (T ), V 34 (T ), V 33 (T ) και V 32 (T ) εμφανίζονται 16, 16, 21, 18, 23, 20, 21 και 22 φορές αντίστοιχα. Υπενθυμίζεται ότι αυτοί οι όροι αντιστοιχούν σε πύλες XOR μεταξύ των προηγούμενων καταστάσεων U 39 (T ),..., U 32 (T ) των καταχωρητών και των 8 δυαδικών ψηφίων που εισέρχονται παράλληλα σε κάθε κύκλο ρολογιού. Οπότε οι παραπάνω αριθμοί εκφράζουν το πλήθος των πυλών που αυτές οι 8 πύλες XOR οδηγούν (fanout). Αυτό σημαίνει ότι η πύλη XOR που πραγματοποιεί την πράξη U 35 (T ) + x 3 (T ) οδηγεί άλλες 23 πύλες, περισσότερες από κάθε άλλη, ενώ οι 8 πύλες που αντιστοιχούν στους παραπάνω όρους οδηγούν συνολικά 157 πύλες. Οπότε, θα πρέπει να γίνει κάποια βελτιποίηση που να ελαχιστοποιεί το fanout, το οποίο είναι το σημείο συμφόρησης (bottleneck) του συστήματος. Το σχήμα 4.3 απεικονίζει το λογικό κύκλωμα για τον υπολογισμό του U 39 (T ) χωρίς κάποια βελτιστοποίηση. Αυτό το κύκλωμα αποτελείται από 14 λογικά επίπεδα και η κρίσιμη διαδρομή του είναι πολύ μεγάλη (ίση με την καθυστέρηση 14 πυλών XOR). Άρα θα πρέπει να γίνει βελτιστοποίηση και ως προς τα τα λογικά επίπεδα του συνδυαστικού λογικού δικτύου ώστε να μειωθεί αυτή η κρίσιμη διαδρομή. Μία μέθοδος βελτιστοποίησης που εφαρμόστηκε είναι η επαναχρησιμοποίηση αυτών των 8 υπο-εκφράσεων (sharing sub-expression) ώστε να μειωθεί τόσο η επιφάνεια όσο και η πολυπλοκότητα του συνδυαστικού τμήματος του κωδικοποιητή. Οι υπο-εκφράσεις που επιλέχθηκαν για να επαναχρησιμοποιηθούν είναι οι 8 όροι που αναφέρθηκαν παραπάνω

55 41 Σχήμα 4.4: Παράδειγμα επαναχρησιμοποίησης υπο-εκφράσεων σε κύκλωμα (V 39 (T ),..., V 32 (T )). Αξίζει να σημειωθεί ότι όταν η διαδικασία αυτή δεν έγινε χειροκίνητα, το εργαλείο σύνθεσης δεν εφάρμοσε κάποια αντίστοιχη βελτιστοποίηση, με αποτέλεσμα να συνθέσει ένα αρκετά μεγαλύτερο συνδυαστικό λογικό δίκτυο σε επιφάνεια. Στο σχήμα 4.4 φαίνεται σχηματικά ένα παράδειγμα αυτής της διαδικασίας. Η δεύτερη βελτιστοποίηση που εφαρμόστηκε είχε σαν στόχο τη μείωση της κρίσιμης διαδρομής. Χρησιμοποιήθηκε δομή ζυγισμένου δένδρου (balanced tree-type structure) για το δίκτυο των πυλών XOR του συνδυαστικού δικτύου. Το αποτέλεσμα ήταν η κρίσιμη διαδρομή, η οποία ήταν ίση με την καθυστέρηση 14 πυλών XOR, να μειωθεί σε καθυστέρηση ίση με 4 XOR πύλες. Στο σχήμα 4.5 παρατίθεται ένα παράδειγμα της βελτιστοποίησης αυτής για τον υπολογισμό του U 39 (T ) που αναφέρθηκε νωρίτερα (και το οποίο ήταν η κρίσιμη διαδρομή του συνδυαστικού κυκλώματος του κωδικοποιητή). Αξίζει να σημειωθεί εδώ ότι τα παραπάνω σχήματα και παραδείγματα δεν είναι αντιπροσωπευτικά μιας τελικής υλοποίησης που θα γίνει σε συσκευή FPGA, καθώς δεν χρησιμοποιούνται πύλες XOR των δύο εισόδων αλλά LUTs (Look-Up Tables) περισσότερων εισόδων, ο αριθμός των οποίων εξαρτάται από την συσκευή. Θα πρέπει να ληφθεί υπόψη η εσωτερική αρχιτεκτονική της εκάστοτε συσκευής για να εφαρμοστεί η βελτιστοποίηση της δομής δένδρων XOR. Ωστόσο, η ανάθεση των υποεκφράσεων που χρησιμοποιούνται πολλές φορές σε συγκεκριμένες πύλες είναι μια βελτιστοποίηση που μπορεί να εφαρμοστεί σε οποιαδήποτε συσκευή καθώς βοηθά το εργαλείο σύνθεσης να δημιουργήσει μια υλοποίηση με λιγότερες ανάγκες σε επιφάνεια και πιθανώς καλύτερη τοποθέτηση των διάφορων στοιχείων στη συσκευή. Από τη στιγμή που έχει οριστεί το περιεχόμενο του συνδυαστικού

56 42 Σχήμα 4.5: Βελτιστοποίηση του κυκλώματος υπολογισμού του U 39 (T ) με δομή δένδρου πυλών XOR τμήματος μπορεί να αρχίσει η φάση σχεδίασης του συνολικού συστήματος του κωδικοποιητή, ξεκινώντας από τις προδιαγραφές που θα πρέπει να πληρεί και την διεπαφή (interface) επικοινωνίας του Προδιαγραφές και διεπαφή Στο σχήμα 4.6 παρουσιάζεται η διεπαφή του κωδικοποιητή BCH(728,688) που σχεδιάστηκε. Τα σήματα που επιλέχθηκαν είναι τα εξής: Σχήμα 4.6: Διεπαφή κωδικοποιητή BCH(728,688) Σήματα εισόδου: data_in Γραμμή εισόδου δεδομένων πλάτους 8 δυαδικών ψηφίων (ενός byte). clk Σήμα ρολογιού (clock).

57 43 en resetn Σήμα ενεργοποίησης (enable) του κωδικοποιητή. Έχει την τιμή 1 όταν τα δεδομένα στην είσοδο είναι έγκυρα (μέρος του μηνύματος προς κωδικοποίηση) και την τιμή 0 όταν στην είσοδο δεδομένων δεν υπάρχουν δεδομένα του μηνύματος. Σήμα επαναφοράς αρνητικής λογικής (active low reset). Σήματα εξόδου: data_out Γραμμή εξόδου δεδομένων πλάτους 8 δυαδικών ψηφίων (ενός byte). data_valid Σήμα ένδειξης ύπαρξης ή όχι έγκυρων δεδομένων (δηλαδή byte του αθροίσματος ελέγχου) στην έξοδο data_out. finished Σήμα ένδειξης ολοκλήρωσης της διαδικασίας κωδικοποίησης. Ο επιθυμητός τρόπος λειτουργίας είναι σχετικά απλός: όταν το σήμα ενεργοποίησης en είναι 1, στην είσοδο δεδομένων data_in υπάρχουν 8 δυαδικά ψηφία (1 byte) ενός μηνύματος προς κωδικοποίηση των 688 δυαδικών ψηφίων, οπότε ο κωδικοποιητής πρέπει να αρχίσει να σχηματίζει το άθροισμα ελέγχου, και, όσο το σήμα ενεργοποίησης παραμένει 1, να συνεχίζει να διαβάζει την είσοδο δεδομένων έως ότου εισέλθουν όλα τα byte του μηνύματος. Όταν ολοκληρωθεί η είσοδος των 86 byte του μηνύματος, θα πρέπει ο κωδικοποιητής να έχει έτοιμο το άθροισμα ελέγχου, το οποίο θα έχει αποθηκευθεί σε έναν εσωτερικό καταχωρητή των 40 δυαδικών ψηφίων (5 byte). Στη συνέχεια ο κωδικοποιητής εξάγει το άθροισμα ελέγχου μέσω της εξόδου δεδομένων data_out, κάνοντας το σήμα data_valid 1 για χρόνο ίσο με τη διάρκεια των 5 κύκλων ρολογιού που χρειάζονται για την έξοδο των 5 byte του αθροίσματος ελέγχου. Κατά τον 5ο κύκλο το σήμα finished γίνεται επίσης 1, σηματοδοτώντας την ολοκλήρωση της διαδικασίας κωδικοποίησης. Πέρα από τις παραπάνω γενικές προδιαγραφές λειτουργίας, λόγω της φύσης του ευρύτερου συστήματος στο οποίο θα ενσωματωθεί ο κωδικοποιητής, θεωρήθηκε σκόπιμο το σύστημα να τηρεί και κάποιες πρόσθετες προδιαγραφές:

58 44 Υποστήριξη συνεχόμενης λειτουργίας: Είσοδος του πρώτου byte α- πό το επόμενο προς κωδικοποίηση μήνυμα στον αμέσως επόμενο κύκλο από την είσοδο του τελευταίου byte του προηγούμενου μηνύματος. Υποστήριξη διακοπτόμενου σήματος ενεργοποίησης: Ύπαρξη διαστημάτων κατά την εισαγωγή των byte ενός μηνύματος που το σήμα ενεργοποίησης γίνεται 0 (και δεν υπάρχουν έγκυρα δεδομένα στην είσοδο), χωρίς να χάνεται το μέχρι τότε υπολογισμένο άθροισμα ελέγχου, και συνέχιση της διαδικασίας κωδικοποίησης όταν το σήμα ενεργοποίησης γίνει πάλι 1, με είσοδο των επόμενων byte του μηνύματος. Η υποστήριξη των δύο αυτών δυνατοτήτων κάνει το σύστημα του κωδικοποιητή πιο ευέλικτο και πιο εύκολο να επαναχρησιμοποιηθεί από διάφορες διατάξεις. Επιπλέον, ένας κωδικοποιητής που υποστηρίζει τις παραπάνω δύο δυνατότητες μπορεί να χρησιμοποιηθεί για διάφορους τρόπους λειτουργίας, καθώς δεν είναι απαραίτητο να δεχθεί τα 86 byte ενός μηνύματος συνεχόμενα, ενώ μπορεί να τεθεί σε αναμονή για όσο χρειαστεί χωρίς να χαθεί το ήδη υπολογισμένο άθροισμα ελέγχου. Ένα παράδειγμα τέτοιου μοτίβου διακύμανσης του σήματος ενεργοποίησης παρατίθεται στο σχήμα 4.7. Σχήμα 4.7: Μοτίβο διακύμανσης εξωτερικού σήματος ενεργοποίησης (en) του κωδικοποιητή Αρχιτεκτονική Στο σχήμα 4.8 εμφανίζεται λεπτομερώς η αρχιτεκτονική του κωδικοποιητή που σχεδιάστηκε, η οποία βασίζεται στη γενική αρχιτεκτονική του σχήματος 4.2. Τα υποσυστήματα BCH ENCODER LOGIC και STATE REG υλοποιούν τις δύο βασικές μονάδες της γενικής αρχιτεκτονικής του σχήματος 4.2, δηλαδή το συνδυαστικό λογικό δίκτυο και τον καταχωρητή κατάστασης

59 45 Σχήμα 4.8: Αρχιτεκτονική κωδικοποιητή BCH(728,688) αντίστοιχα. Οι υπόλοιπες μονάδες υλοποιούν τις απαιτήσεις που διατυπώθηκαν στην προηγούμενη παράγραφο. Πιο αναλυτικά: BCH ENCODER LOGIC Συνδυαστικό κύκλωμα που αποτελείται από δένδρα πυλών XOR, το οποίο έχει μία είσοδο του ενός byte, στην οποία εμφανίζονται τα byte του μηνύματος προς κωδικοποίηση, και μία είσοδο των 5 byte, στην οποία είναι συνδεδεμένη η ανάδραση από τον καταχωρητή κατάστασης STATE REG. Είναι το υποσύστημα που υλοποιεί τον πυρήνα του αλγορίθμου που αναλύθηκε στην παράγραφο 4.2 και κάνει δυνατή την παράλληλη κωδικοποίηση. STATE REG Ο καταχωρητής κατάστασης στον οποίο δημιουργείται το άθροισμα ελέγχου καθώς εισέρχονται τα byte του μηνύματος που πρέπει να κωδικοποιηθεί. Το σήμα ενεργοποί-

60 46 ησης του καταχωρητή είναι συνδεδεμένο με το εξωτερικό σήμα ενεργοποίησης en. Αυτό έχει σαν αποτέλεσμα ο καταχωρητής να διατηρεί την προηγούμενη κατάστασή του όταν το εξωτερικό σήμα ενεργοποίησης γίνει 0, αγνοώντας τα αντίστοιχα δεδομένα εισόδου, έως ότου το σήμα ενεργοποίησης γίνει πάλι 1, οπότε και θα υπάρχει το επόμενο byte του μηνύματος στην είσοδο. CHECKSUM REG COUNTER FSM Ο καταχωρητής αυτός δεν ενεργοποιείται από το εξωτερικό σήμα en αλλά από ένα εσωτερικό σήμα ενεργοποίησης που παράγεται από το υποσύστημα ελέγχου του κυκλώματος, την μονάδα FSM. Ο καταχωρητής αυτός αποθηκεύει το τελικό άθροισμα ελέγχου όταν έχει ολοκληρωθεί η διαδικασία εισόδου των 86 byte ενός μηνύματος, ώστε το αριστερότερο τμήμα (BCH ENCODER LOGIC και STATE REG) να είναι σε θέση να αρχίσει να δέχεται το επόμενο μήνυμα προς κωδικοποίηση στον αμέσως επόμενο κύκλο ρολογιού. Μετρητής των 7 δυαδικών ψηφίων, ο οποίος μετρά από το 0 ( ) έως το 85 ( ) και μετά επιστρέφει στο 0. Ο μετρητής ενεργοποιείται από το εξωτερικό σήμα en ώστε να καταγράφει το πλήθος των byte του μηνύματος που έχουν εισέλθει, ενώ μηδενίζει στο 85 για να μπορεί να αρχίσει να μετρά τα byte του επόμενου μηνύματος στον αμέσως επόμενο κύκλο από την είσοδο του τελευταίου byte του προηγούμενου μηνύματος (όταν δηλαδή το σήμα en παραμένει 1 μεταξύ δύο διαδοχικών μηνυμάτων). Η μηχανή πεπερασμένων καταστάσεων (Finite State Machine FSM) του κωδικοποιητή, η οποία μέσω των σημάτων που παράγει συ-

61 47 ντονίζει την λειτουργία όλων των υποσυστημάτων και καθιστά δυνατές τις προδιαγραφές και τις απαιτήσεις που αναφέρθηκαν στην προηγούμενη παράγραφο. Η μονάδα FSM έχει εισόδους το εξωτερικό σήμα ενεργοποίησης en και την τρέχουσα κατάσταση του μετρητή ώστε να γνωρίζει το πλήθος των byte που έχουν εισέλθει στο σύστημα. Έξοδοι της FSM είναι το σήμα ενεργοποίησης του καταχωρητή CHECKSUM REG, τα σήματα επαναφοράς state_reg_clrn και checksum_clrn και τα σήματα επιλογής των δύο πολυπλεκτών. Η λογική της μηχανής πεπερασμένων καταστάσεων και της παραγωγής των σημάτων εξόδου της αναλύεται στην επόμενη παράγραφο. Το σύστημα δέχεται επίσης εξωτερικά τα καθολικά σήματα ρολογιού (clk) και επαναφοράς (resetn) τα οποία συνδέονται σε όλα τα ακολουθιακά στοιχεία και στη μηχανή πεπερασμένων καταστάσεων Λειτουργία μηχανής πεπερασμένων καταστάσεων Η μηχανή πεπερασμένων καταστάσεων του κωδικοποιητή είναι η καρδιά του συστήματος κωδικοποίησης, καθώς καθορίζει πλήρως τον τρόπο λειτουργίας του. Αυτή η λειτουργία σε γενικές γραμμές έχει ως εξής: 1. Πριν γίνει οτιδήποτε άλλο, τα ακολουθιακά στοιχεία του κυκλώματος (καταχωρητές, μετρητής, FSM) αρχικοποιούνται στην μηδενική κατάσταση. 2. Ο κωδικοποιητής αναμένει έως ότου το εξωτερικό σήμα ενεργοποίησης en γίνει Όταν το σήμα en γίνει 1 ενεργοποιείται ο καταχωρητής κατάστασης (STATE REG), ο μετρητής (COUNTER) και η μηχανή πεπερασμένων καταστάσεων (FSM). 4. Όσο το σήμα en παραμένει ενεργό, ο καταχωρητής κατάστασης ανανεώνει το προσωρινό άθροισμα ελέγχου συναρτήσει του εισερχόμενου byte του μηνύματος και της προηγούμενης κατάστασής

62 48 του. Ταυτόχρονα, ο μετρητής μετρά τους κύκλους ρολογιού για τους οποίους είναι ενεργό το σήμα en, τιμή που αντιστοιχεί στο πλήθος των byte του μηνύματος που έχουν εισέλθει. Εάν το σήμα en γίνει 0, απενεργοποιούνται προσωρινά ο καταχωρητής STATE REG και ο μετρητής, κρατώντας όμως την τελευταία τους κατάσταση και αναμένοντας τα επόμενα έγκυρα δεδομένα. 5. Στον κύκλο ρολογιού κατά τον οποίο ο μετρητής φτάσει στην τιμή 85 ( ) έχουν εισέλθει τα πρώτα 85 byte του μηνύματος, ενώ αν το σήμα en είναι ενεργό στην είσοδο υπάρχει το 86ο και τελευταίο byte του μηνύματος. Αυτό σημαίνει ότι στον επόμενο κύκλο ο καταχωρητής STATE REG θα περιέχει το τελικό άθροισμα ελέγχου για το μήνυμα και ο μετρητής θα έχει την τιμή Όταν ο μετρητής γυρίσει πάλι στην τιμή 0, θα έχει ολοκληρωθεί η εισαγωγή ενός μηνύματος των 86 byte και ο καταχωρητής STATE REG περιέχει το άθροισμα ελέγχου αυτού του μηνύματος. Σε αυτό το σημείο υπάρχουν δύο περιπτώσεις, ανάλογα με την τιμή του σήματος en: en = 1 : Μόλις έχει ολοκληρωθεί η εισαγωγή ενός μηνύματος, αλλά στην είσοδο υπάρχει το πρώτο byte του επόμενου μηνύματος. Αυτό σημαίνει πως θα πρέπει ο καταχωρητής κατάστασης να σβήσει την εσωτερική του κατάσταση και στον ίδιο κύκλο να αποθηκεύσει την επόμενή του κατάσταση, η οποία θα είναι συνάρτηση του εισερχόμενου byte του μηνύματος και μιας μηδενικής προηγούμενης εσωτερικής κατάστασης (αφού εκκινεί τον σχηματισμό ενός νέου αθροίσματος ελέγχου). Εάν αυτό γινόταν με το εσωτερικό σήμα state_reg_clrn στον επόμενο κύκλο ο καταχωρητής θα είχε μηδενικό περιεχόμενο, χάνοντας το υπολογισμένο άθροισμα ελέγχου για το πρώτο byte του νέου μηνύματος. Για το λόγο αυτό, και μόνο για αυτόν τον κύκλο, θα πρέπει ο πολυπλέκτης 2-σε-1 που οδηγεί την 2η είσοδο του συνδυαστικού κυκλώματος να επιλέξει την είσοδο 0 και όχι την προηγούμενη κατάσταση του STATE REG, η οποία υπενθυμίζεται ότι είναι το άθροισμα ελέγχου του προηγούμενου μηνύματος. Έτσι, στον καταχωρητή

63 49 κατάστασης στον επόμενο κύκλο θα υπάρχει το νέο άθροισμα ελέγχου, εισάγοντας ως προηγούμενη κατάσταση τη μηδενική αντί της πραγματικής εξόδου του καταχωρητή STATE REG, παρακάμπτοντας την επαναφορά του και την απώλεια ενός κύκλου ρολογιού. en = 0 : Στην είσοδο δεν υπάρχει νέο byte κάποιου νέου μηνύματος, οπότε ο καταχωρητής STATE REG μπορεί να μηδενιστεί και να περιμένει το επόμενο έγκυρο byte στην είσοδο, έχοντας μηδενική κατάσταση. Από τις παραπάνω περιπτώσεις γίνεται προφανής η αναγκαιότητα του καταχωρητή CHECKSUM REG. Εφόσον υπάρχει η περίπτωση άφιξης ενός δεύτερου συνεχόμενου μηνύματος προς κωδικοποίηση χωρίς να υπάρχει ενδιάμεσο διάστημα 5 κύκλων αδράνειας για ανάγνωση του STATE REG και αποστολή των 5 byte που περιέχει στην έξοδο, είναι απαραίτητος ένας ακόμα καταχωρητής ο οποίος θα αποθηκεύσει το προηγούμενο άθροισμα ελέγχου, θα το διατηρήσει μέχρι αυτό να βγει στην έξοδο, και θα αποδεσμεύσει τον καταχωρητή STATE REG ο οποίος θα μπορεί να αρχίσει να δημιουργεί το άθροισμα ελέγχου της επόμενης λέξης. Άρα, θα πρέπει το σήμα ενεργοποίησης του καταχωρητή CHECKSUM REG να είναι 1 σε αυτόν τον κύκλο. Όσον αφορά το σήμα επαναφοράς state_reg_clrn του καταχωρητή STATE REG (το οποίο είναι ενεργό όταν έχει τιμή 0 ), θα πρέπει να είναι 1 εάν το en είναι 1 και 0 εάν το en είναι 0, καθώς τότε θα πρέπει να μηδενιστεί και να παραμείνει έτσι μέχρι τον έλευση του πρώτου byte του επόμενου μηνύματος. Οπότε, για αυτόν τον κρίσιμο κύκλο, το σήμα state_reg_clrn θα πρέπει να συνδεθεί με το εξωτερικό σήμα en, ενώ όλες τις άλλες στιγμές θα πρέπει να είναι Στους επόμενους 5 κύκλους θα πρέπει το άθροισμα ελέγχου του προηγούμενου μηνύματος, που βρίσκεται πλέον στον καταχωρητή CHECKSUM REG, να εξέλθει από τον αποκωδικοποιητή μέσω της εξόδου data_out. Αυτό μπορεί να γίνεται ταυτόχρονα με την είσοδο του επόμενου μηνύματος το άθροισμα του οποίου θα δημιουργείται στον ενδιάμεσο καταχωρητή STATE REG. Δεδομένου ότι το σήμα ενεργοποίησης του καταχωρητή αυτού είναι συνδεδεμένο με το εξωτερικό σήμα en, οι δύο διαδικασίες μπορούν να γίνονται ταυτόχρονα και για οποιοδήποτε μοτίβο εισαγωγής νέων έγκυρων byte.

64 50 8. Όταν έχει σταλεί και το τελευταίο από τα 5 byte του προηγούμενου αθροίσματος ελέγχου στην έξοδο, ο κωδικοποιητής αναμένει την ολοκλήρωση του επόμενου μηνύματος. Όταν ο μετρητής γίνει πάλι 0, ισχύουν όσα αναφέρθηκαν στο (6), και η διαδικασία συνεχίζεται με τον ίδιο τρόπο. Στο σχήμα 4.9 παρατίθεται το διάγραμμα καταστάσεων της μονάδας FSM που υλοποιεί την παραπάνω συμπεριφορά. Από το διάγραμμα γίνεται εύκολα αντιληπτό ότι η μηχανή και το σύστημα τον περισσότερο χρόνο βρίσκεται στην κατάσταση IDLE, ανεξάρτητα από το εξωτερικό σήμα en, το οποίο δεν παίζει κάποιο ρόλο στις μεταβάσεις. Αυτό συμβαίνει γιατί το σύστημα έχει σχεδιαστεί έτσι ώστε οι μονάδες BCH ENCODER LOGIC και STATE REG να μπορούν να λειτουργούν ανεξάρτητα από το υπόλοιπο κύκλωμα και να συντονίζονται μόνο με το εξωτερικό σήμα en που δηλώνει την ύπαρξη έγκυρων byte μηνύματος στην είσοδο. Η είσοδος της FSM που σηματοδοτεί την έξοδο από την κατάσταση IDLE είναι η τιμή του μετρητή, byte_cnt, που σηματοδοτεί την ολοκλήρωση της εισόδου ενός πλήρους μηνύματος των 86 byte και την ύπαρξη τελικού αθροίσματος ελέγχου που πρέπει να γραφτεί στον καταχωρητή CHECKSUM REG και από εκεί στην έξοδο ανά byte. Όταν η τιμή αυτή είναι 85 ( ), όπως αναλύθηκε προηγουμένως, έχουν εισέλθει 85 από τα 86 byte του μηνύματος, κάτι που σημαίνει ότι στον επόμενο κύκλο πρέπει το άθροισμα ελέγχου που θα υπάρχει στον καταχωρητή STATE REG να αποθηκευτεί στον καταχωρητή CHECKSUM REG. Ταυτόχρονα, θα πρέπει το σήμα επιλογής του πολυπλέκτη 2-σε-1 να έχει την τιμή 1 ώστε να οδηγεί το συνδυαστικό κύκλωμα με μηδενική τιμή ως προηγούμενη κατάσταση, ενώ το σήμα επαναφοράς state_reg_clrn του καταχωρητή STATE REG θα πρέπει να έχει την τιμή του σήματος en κατά τον ίδιο κύκλο. Όλα αυτά γίνονται όταν το σύστημα μεταβαίνει στην κατάσταση CHECKSUM_WR. Στη συνέχεια, θα πρέπει τα περιεχόμενα του καταχωρητή CHECKSUM REG, τα οποία είναι τα 5 byte του αθροίσματος ελέγχου που μόλις υπολογίσθηκε, να βγουν στην έξοδο. Αυτό συντελείται κατά το πέρασμα του συστήματος από τις καταστάσεις READ_BYTE_1 έως READ_BYTE_5. Κάθε μία από αυτές τις καταστάσεις αλλάζει το σήμα επιλογής του πολυπλέκτη 5-σε-1 ώστε να διαβαστούν με τη σειρά και τα 5 byte του αθροίσματος ελέγχου και να εμφανιστούν στην έξοδο. Στα σχήματα 4.10 και 4.11 παρατίθενται οι κυματομορφές των σημάτων που παράγει η μηχανή πεπερασμένων καταστάσεων κατά την

65 51 Σχήμα 4.9: Μηχανή πεπερασμένων καταστάσεων (FSM) του κωδικοποιητή είσοδο δύο μηνυμάτων προς κωδικοποίηση. Μετά το πέρας των 86 byte του πρώτου μηνύματος το σήμα en παραμένει 1, ενώ μετά το πέρας των 86 byte του δεύτερου μηνύματος έχει την τιμή 0. Το σημείο που έχει ενδιαφέρον είναι η συμπεριφορά του σήματος state_reg_clrn μετά την ολοκλήρωση της εισόδου κάθε μηνύματος σε σχέση με το εξωτερικό σήμα en, καθώς και η τιμή του σήματος επιλογής mux1_sel, η οποία για τον κύκλο ακριβώς μετά την ολοκλήρωση της εισόδου ενός μηνύματος γίνεται 1 ώστε να τροφοδοτήσει με 0 το συνδυαστικό κύκλωμα κατά τον πρώτο κύκλο εισαγωγής του επόμενου μηνύματος.

66 52 clk en data_in B1 B2 B30 B31 B32 B60 B61 B62 B86 B1 B2 B3 B4 B5 byte_cnt state_reg_clrn checksum_en mux1_sel data_valid finished Σχήμα 4.10: Κυματομορφές σημάτων του κωδικοποιητή κατά την είσοδο του 1ου μηνύματος και εγγραφή του 1ου αθροίσματος ελέγχου clk en data_in B5 B6 B34 B35 B36 B64 B65 B66 B85 B86 byte_cnt state_reg_clrn checksum_en mux1_sel data_valid finished Σχήμα 4.11: Κυματομορφές σημάτων του κωδικοποιητή κατά την είσοδο του 2ου μηνύματος και εγγραφή του 2ου αθροίσματος ελέγχου

67 Σύνοψη Ο παράλληλος κωδικοποιητής που σχεδιάστηκε και παρουσιάστηκε στις προηγούμενες παραγράφους υπολογίζει και εξάγει το άθροισμα ελέγχου ενός μηνύματος 688 δυαδικών ψηφίων (86 byte) σε 91 κύκλους. Η έξοδος data_out μπορεί να συνδεθεί απευθείας σε κάποια εξωτερική μνήμη χρησιμοποιώντας το σήμα εξόδου data_valid ως σήμα ενεργοποίησης εγγραφής για αποθήκευση των 5 byte του αθροίσματος ελέγχου, σε περίπτωση που δεν είναι δυνατή η σύγχρονη επικοινωνία. Πολύ εύκολα μπορεί να δημιουργηθεί ένα σύστημα που να περιβάλλει τον κωδικοποιητή και να σχηματίζει την πλήρη κωδική λέξη των 728 δυαδικών ψηφίων από το μήνυμα και το άθροισμα ελέγχου που υπολογίσθηκε. Αναφέρθηκε στην αρχή της ενότητας ότι ο κώδικας BCH(728,688) που χρησιμοποιείται είναι συντετμημένη μορφή του κώδικα BCH(1023,983). Η υλοποίηση του shortening γίνεται εσωτερικά στον κωδικοποιητή ορίζοντας τη μέγιστη τιμή του μετρητή, η οποία χρησιμοποιείται από την μηχανή πεπερασμένων καταστάσεων για να εκκινήσει την εγγραφή του αθροίσματος ελέγχου στον εσωτερικό καταχωρητή αθροίσματος ελέγχου. Ο κωδικοποιητής αυτός θα μπορούσε να τροποποιηθεί για την περίπτωση του κώδικα BCH(1023,983) αλλάζοντας απλά τον μετρητή και την τιμή που περιμένει η FSM για να θεωρήσει το άθροισμα ελέγχου ως τελικό. Στο Κεφάλαιο 6 θα περιγραφεί αναλυτικά ο τρόπος ενσωμάτωσης του κωδικοποιητή που σχεδιάστηκε σε σύστημα που ελέγχεται από επεξεργαστή MicroBlaze και στο Κεφάλαιο 7 θα αναλυθούν οι λεπτομέρειες και τα αποτελέσματα της υλοποίησης του συστήματος σε συσκευή FPGA της σειράς Virtex-6, ενώ θα παρουσιαστούν και τα αποτελέσματα τόσο της εξομοίωσης όσο και της εκτέλεσης σε υλικό για κωδικοποίηση ενδεικτικών μηνυμάτων.

68

69 Κεφάλαιο 5 Αποκωδικοποιητής BCH Στο Κεφάλαιο 3 έγινε μια γενική προσέγγιση της διαδικασίας αποκωδικοποίησης ενός κώδικα BCH που μπορεί να διορθώσει t λάθη. Αυτή η διαδικασία αποτελείται από τέσσερα βασικά στάδια: 1. Υπολογισμός 2t συνδρόμων από την κωδική λέξη που έχει ληφθεί 2. Εύρεση πολυωνύμου εντοπισμού λαθών 3. Εύρεση θέσεων λαθών 4. Διόρθωση λαθών Το σχήμα 5.1 δίνει ένα γενικό σχήμα αρχιτεκτονικής για την υλοποίηση της διαδικασίας αποκωδικοποίησης. Αυτή η διαδικασία βασίζεται στον υπολογισμό των συνδρόμων. Το πολυώνυμο r(x) είναι η κωδική λέξη που έχει ληφθεί (πιθανώς με λάθη), το πολυώνυμο d(x) είναι η κωδική λέξη που προκύπτει μετά την αποκωδικοποίηση, ενώ S(x) και Λ(x) είναι τα πολυώνυμα συνδρόμων και εντοπισμού λαθών αντίστοιχα. Στη συνέχεια θα γίνει μια μελέτη των αλγορίθμων που έχουν προταθεί για κάθε ένα από τα παραπάνω βήματα της αποκωδικοποίησης. Σχήμα 5.1: Γενικό σχήμα αρχιτεκτονικής αποκωδικοποιητή BCH

70 Αλγόριθμοι Υπολογισμός συνδρόμων Το πρώτο βήμα της διαδικασίας κωδικοποίησης, ο υπολογισμός των συνδρόμων, καθορίζει εάν η λέξη που έχει ληφθεί είναι έγκυρη κωδική λέξη ή όχι. Σε περίπτωση που δεν είναι έγκυρη, προσφέρει το πρώτο βήμα για την εύρεση των λανθασμένων δυαδικών ψηφίων. Η λειτουργία αυτού του σταδίου βασίζεται στα εγγενή χαρακτηριστικά του κώδικα που έχει επιλεγεί, και πιο συγκεκριμένα στο πολυώνυμο-γεννήτορα. Το πολυώνυμο-γεννήτορας έχει 2t ρίζες που είναι πρωταρχικά στοιχεία του πεδίου επέκτασης στο οποίο λειτουργεί ο αποκωδικοποιητής. Κατά την κωδικοποίηση της κωδικής λέξης αυτά τα χαρακτηριστικά έχουν μεταβιβαστεί από το πολυώνυμο-γεννήτορα στην κωδική λέξη, η οποία έχει τις ίδιες ρίζες. Εάν, λοιπόν, g(x) είναι το πολυώνυμο γεννήτορας και c(x) είναι η κωδική λέξη, ισχύει g(α) = g(α 2 ) =... = g(α 2t ) = 0 και c(α) = c(α 2 ) =... = c(α 2t ) = 0 Στην περίπτωση που μελετάται θεωρείται ότι η λέξη r(x) που έχει ληφθεί είναι η κωδική λέξη c(x) αφού αυτή έχει περάσει από ένα κανάλι με θόρυβο. Αυτό σημαίνει πως πιθανώς ένα ή περισσότερα δυαδικά ψηφία της κωδικής λέξης έχουν αλλάξει τιμή λόγω των σφαλμάτων μετάδοσης που μπορεί να προκαλέσει ο θόρυβος του καναλιού. Τότε, r(x) = c(x) + e(x), όπου e(x) είναι το πολυώνυμο λαθών, δηλαδή ένα πολυώνυμο που έχει μηδενικούς συντελεστές στα σημεία (δυαδικά ψηφία) που η κωδική λέξη δεν έχει αλλοιωθεί και μη μηδενικούς συντελεστές στα σημεία που έχουν εισαχθεί λάθη από το κανάλι. Η εύρεση των συντελεστών του e(x) αποτελεί τον στόχο της διαδικασίας αποκωδικοποίησης καθώς όταν αυτοί οι συντελεστές καθοριστούν θα έχουν βρεθεί και οι θέσεις των λαθών που έχουν συμβεί κατά την μετάδοση, οπότε θα είναι δυνατή η διόρθωσή τους (εάν το πλήθος τους είναι ίσο ή μικρότερο της διορθωτικής ικανότητας του κώδικα που έχει επιλεγεί). Σε αυτό το σημείο εισέρχεται ο ρόλος των 2t συνδρόμων, τα οποία ορίζονται ως

71 57 S j = r(α j ) = c(α j ) + e(α j ) = e(α j ), 1 j 2t (5.1) Η ισότητα αυτή προκύπτει επειδή, όπως αναφέρθηκε προηγουμένως, c(α) = c(α 2 ) =... = c(α 2t ) = 0. Οπότε συνεπάγεται ότι εάν τα σύνδρομα υπολογισθούν μηδενικά τότε και το πολυώνυμο λαθών e(x) θα είναι μηδενικό, οπότε δεν θα έχουν συμβεί λάθη κατά τη μετάδοση και θα ισχύει r(x) = c(x). Σε αυτή την περίπτωση προφανώς δεν χρειάζεται να συνεχιστεί η διαδικασία αποκωδικοποίησης και ο αποκωδικοποιητής θα πρέπει να επιστρέψει την λέξη που έλαβε αυτούσια. Εάν τα σύνδρομα που υπολογισθούν δεν είναι μηδενικά, τότε και το πολυώνυμο e(x) δεν θα είναι μηδενικό και η διαδικασία αποκωδικοποίησης θα συνεχιστεί χρησιμοποιώντας τις τιμές των συνδρόμων. Ο αλγόριθμος υπολογισμού των συνδρόμων που υιοθετήθηκε βασίζεται στη σχέση n 1 S j = r(α j ) = r i (α j ) i, 1 j 2t (5.2) j=0 για 1 j 2t. Η σχέση 5.2 μπορεί να χρησιμοποιηθεί για να παραχθούν 2t εξισώσεις, μία για κάθε ένα από τα 2t σύνδρομα, κάθε μία από τις οποίες χρησιμοποιεί και διαφορετική ρίζα του πολυωνύμου-γεννήτορα για υπολογισμό του αποτελέσματος. Όπως αναλύθηκε στο Κεφάλαιο 2, αυτές οι ρίζες είναι γνωστές, ενώ έχει γίνει περιγραφή μονάδων που μπορούν να χρησιμοποιηθούν για τον υπολογισμό μιας παράστασης της μορφής r(α i ), που ουσιαστικά είναι ο πολλαπλασιασμός του πολυωνύμου r(x) με το στοιχείο α i στο συγκεκριμένο πεπερασμένο πεδίο. Κάθε εξίσωση που προκύπτει από την σχέση 5.2 υπολογίζει την τιμή του πολυωνύμου r(x) (δηλαδή της λέξης που έχει ληφθεί) για μία διαφορετική ρίζα του πολυωνύμου-γεννήτορα. Η σχέση αυτή μπορεί να υλοποιηθεί με την μονάδα που απεικονίζεται στο σχήμα 5.2 [17] [18]. Για τον υπολογισμό όλων των 2t συνδρόμων μπορούν να χρησιμοποιηθούν 2t τέτοιες μονάδες, κάθε μία από τις οποίες θα υπολογίζει την τιμή του πολυωνύμου r(x) για διαφορετική ρίζα του πολυωνύμου-γεννήτορα (και, πιο συγκεκριμένα, για τα πρωταρχικά στοιχεία 1, α, α 2,..., α 2t του πεδίου GF (2 10 )). Η συμβατική υλοποίηση του σχήματος 5.2 θα χρειαστεί n κύκλους ρολογιού για την ολοκλήρωση του υπολογισμού ενός συνδρόμου, όπου n είναι το μήκος της ληφθείσας λέξης σε δυαδικά ψηφία. Ακόμα και αν

72 58 Σχήμα 5.2: Σειριακή μονάδα υπολογισμού συνδρόμων χρησιμοποιηθούν 2t τέτοιες μονάδες παράλληλα ώστε να υπολογισθούν και τα 2t σύνδρομα, και πάλι θα χρειαστούν n κύκλοι. Όπως και στην περίπτωση της σχεδίασης του κωδικοποιητή, είναι επιθυμητό ο αποκωδικοποιητής να μπορεί να επεξεργάζεται σε κάθε κύκλο περισσότερα του ενός δυαδικά ψηφία, οπότε μελετήθηκαν λύσεις που προσφέρουν τέτοια δυνατότητα παράλληλης εισόδου. Οι Song, Yu και Shaffer στο [19] παρουσιάζουν μια παράλληλη μονάδα παραγωγής συνδρόμων, η οποία μπορεί να δέχεται p δυαδικά ψηφία σε κάθε κύκλο. Η αρχιτεκτονική αυτής της υλοποίησης παρατίθεται στο σχήμα 5.3. Η μονάδα αυτή αποτελείται από p σταθερούς πολλαπλασιαστές πεπερασμένου πεδίου (Finite Field Multiplier FFM), έναν αθροιστή πεπερασμένου πεδίου (Finite Field Adder FFA) p + 1 εισόδων και έναν καταχωρητή των m δυαδικών ψηφίων (για την αποθήκευση στοιχείων ενός πεπερασμένου πεδίου GF (2 m )). Οι σταθεροί πολλαπλασιαστές σχεδιάζονται σύμφωνα με την λογική που παρουσιάστηκε στην Ενότητα 2.7, ενώ ο αθροιστής είναι ένας απλός αθροιστής XOR ο οποίος δεν παράγει κρατούμενο. Μια τέτοια παράλληλη μονάδα μπορεί να αντικαταστήσει κάθε προηγούμενη σειριακή μονάδα, με αποτέλεσμα ο χρόνος που απαιτείται για τον υπολογισμό των συνδρόμων να μειωθεί από n κύκλους σε n/p κύκλους. Αξίζει εδώ να σημειωθεί ότι για δυαδικούς κώδικες BCH, τα σύνδρομα με άρτιο δείκτη είναι τετράγωνα προηγούμενων συνδρόμων (με μικρότερο δείκτη), δηλαδή ισχύει S 2j = S 2 j Αυτό σημαίνει ότι χρειάζονται μόνο t παράλληλες μονάδες για να υπολογίζουν τα σύνδρομα με περιττούς δείκτες οι οποίες θα συνοδεύονται από κυκλώματα τετραγωνισμού στοιχείων πεπερασμένου πεδίου που θα παράγουν τα τετράγωνα των περιττών συνδρόμων.

73 59 Σχήμα 5.3: Παράλληλη μονάδα υπολογισμού συνδρόμων Υπολογισμός πολυωνύμου εντοπισμού λαθών Τα 2t σύνδρομα που υπολογίζονται από την προηγούμενη βαθμίδα αποτελούν την πληροφορία στην οποία θα βασιστεί η διαδικασία αποκωδικοποίησης στην συνέχεια. Όπως αναφέρθηκε λεπτομερώς στο Κεφάλαιο 3, εάν υπάρχουν ν λάθη στην λέξη της οποίας γίνεται αποκωδικοποίηση, το πολυώνυμο λαθών e(x) μπορεί να γραφτεί ως [6] e(x) = Y 1 x i 1 + Y 2 x i Y ν x i ν όπου Y 1, Y 2,..., Y ν είναι οι τιμές των λαθών που έχουν συμβεί στις θέσεις x i 1, x i 2,..., x iν, με 0 i 1 < i 2 <... < i ν. Για δυαδικούς κώδικες BCH, που είναι και η περίπτωση εδώ, οι τιμές των λαθών είναι πάντα 1 στο δυαδικό σύστημα, οπότε η παραπάνω παράσταση απλοποιείται και γίνεται e(x) = x i 1 + x i x i ν (5.3) Από τις εξισώσεις 5.1 και 5.3, προκύπτει το ακόλουθο σύνολο εξισώσεων για τα 2t σύνδρομα:

74 60 S 1 = α i 1 + α i α i ν S 2 = (α i 1 ) 2 + (α i 2 ) (α i ν ) 2 S 3 = (α i 1 ) 3 + (α i 2 ) (α i ν ) 3 (5.4). S 2t = (α i 1 ) 2t + (α i 2 ) 2t (α i ν ) 2t όπου τα α i 1, α i 2,..., α iν είναι άγνωστα. Εάν αυτά βρεθούν, οι δυνάμεις τους i 1, i 2,..., i ν δίνουν τις θέσεις των λαθών στο e(x) σύμφωνα με την εξίσωση 5.3. Θέτοντας X 1 = α i 1, X 2 = α i 2,..., X ν = α iν μπορούν να οριστούν το πολυώνυμο εντοπισμού λαθών (error locator polynomial) Λ(x), βαθμού ν, και το πολυώνυμο υπολογισμού λαθών (error evaluator polynomial) Ω(x), βαθμού το πολύ ν 1, ως εξής: Λ(x) = Ω(x) = ν (1 X j x) = 1 + λ 1 x + λ 2 x λ ν x ν (5.5) j=1 ν i=1 Y i X m 0 i ν j=1,j i (1 X j x) = ω 0 + ω 1 x + ω 2 x ω ν 1 x ν 1 (5.6) Τα πολυώνυμα αυτά σχετίζονται με τα σύνδρομα μέσω της βασικής εξίσωσης (key equation) S(x) Λ(x) = Ω(x) mod x 2t (5.7) όπου S(x) = S 0 + S 2 x S 2t 1 x 2t 1 είναι το πολυώνυμο των συνδρόμων.το πολυώνυμο εντοπισμού λαθών Λ(x) έχει ως ρίζες τα στοιχεία X 1 j, για j = 1, 2,... ν. Η επίλυση της βασικής εξίσωσης για να βρεθούν τα Λ(x) και Ω(x) από το S(x) είναι το δυσκολότερο μέρος της διαδικασίας αποκωδικοποίησης ενός γενικού κώδικα BCH. Στην περίπτωση των δυαδικών κωδίκων BCH o υπολογισμός του πολυωνύμου Ω(x) δεν χρειάζεται, καθώς η τιμή των λαθών είναι πάντα 1, και το πρόβλημα γίνεται λιγότερο πολύπλοκο. Παρ όλα αυτά, παραμένει το bottleneck της διαδικασίας αποκωδικοποίησης. Για την επίλυση της βασικής εξίσωσης και τον υπολογισμό του πο-

75 61 λυωνύμου Λ(x) έχουν προταθεί τέσσερις βασικοί αλγόριθμοι: ο αλγόριθμος Peterson [20], ο αλγόριθμος του Ευκλείδη (Euclid s ή Euclidean algorithm) [21] [22], ο αλγόριθμος Berlekamp-Massey [10] [23] και o αλγόριθμος συνεχών κλασμάτων (continuous-fraction algorithm) [24]. Οι τρεις πρώτοι από αυτούς τους αλγόριθμους έχουν παρουσιαστεί αναλυτικά στο Κεφάλαιο 3. Στην προσπάθεια εξαγωγής αποδοτικών υλοποιήσεων για τις αρχιτεκτονικές που βασίζονται στους προηγούμενους αλγόριθμους, έχουν προταθεί κάποιες παραλλαγές, όπως ο τροποποιημένος αλγόριθμος του Ευκλείδη (modified Euclidean algorithm me) [25] [26], ο εκτεταμένος αλγόριθμος του Ευκλείδη (extended Euclidean algorithm ee) [22], και διάφορες εκδοχές του Berlekamp-Massey χωρίς αντιστροφή (inversionless Berlekamp-Massey ibm) [27] [28] [29], οι οποίες θα παρουσιαστούν στη συνέχεια αναλυτικά. Παλαιότερα η πλειοψηφία των υλοποιήσεων υιοθετούσαν αρχιτεκτονικές βασισμένες στην παραλλαγή ee του αλγόριθμου του Ευκλείδη για υπολογισμό του μέγιστου κοινού διαιρέτη δύο πολυωνύμων [29]. Ένα πλεονέκτημα αυτών των αρχιτεκτονικών είναι η κανονικότητα, ενώ η κρίσιμη διαδρομή είναι T F F M + T F F A + T MUX, όπου T F F M, T F F A και T MUX είναι οι καθυστερήσεις ενός πολλαπλασιαστή, ενός αθροιστή και ενός πολυπλέκτη αντίστοιχα αριθμητικής πεπερασμένου πεδίου. Πριν την πρόταση αρχιτεκτονικών βασισμένων στον αλγόριθμο ibm από τους Sarwate και Shanbhag στο [29], λίγες υλοποιήσεις αποκωδικοποιητών BCH χρησιμοποιούσαν αρχιτεκτονικές βασισμένες στον αλγόριθμο Berlekamp-Massey, πιθανώς επειδή θεωρούνταν μη κανονικές και είχαν μεγαλύτερη κρίσιμη διαδρομή, η οποία γινόταν μεγαλύτερη όσο αυξανόταν η διορθωτική ικανότητα του κώδικα [30]. Η επαναδιατύπωση του αλγορίθμου από από τους Sarwate και Shanbhag πετυχαίνει εξαιρετικά κανονικές αρχιτεκτονικές αποκωδικοποιητών. Επίσης, αυτές οι αρχιτεκτονικές μπορούν να λειτουργούν σε ρυθμούς δεδομένων συγκρίσιμους με αρχιτεκτονικές βασισμένες στον αλγόριθμο ee, ενώ έχουν μικρότερη πολυπλοκότητα πυλών και απλούστερες δομές ελέγχου. Αρχιτεκτονικές για υλοποίηση του γενικού αλγόριθμου Berlekamp- Massey έχουν προταθεί από τους Berlekamp [31], Liu [32] και τους Oh και Kim [33]. Αυτές οι προτάσεις απαιτούν 2t έως και 3t πολλαπλασιασμούς πεπερασμένου πεδίου (FFM), όπου t είναι η διορθωτική ικανότητα του κώδικα. Το σημαντικότερο όμως είναι πως απαιτούν έναν αντιστροφέα πεπερασμένου πεδίου (Finite Field Inverter FFI) για να υλοποιήσουν την πράξη της διαίρεσης.

76 62 Ο Burton στο [27] ήταν ο πρώτος που πρότεινε έναν αλγόριθμο Berlekamp-Massey χωρίς αντιστροφή για αποκωδικοποιητές BCH. Αυτός υλοποιήθηκε από τους Reed, Shih και Truong [28] για κώδικες BCH και Reed-Solomon. Αν και χρειάζονται περισσότεροι πολλαπλασιαστές πεπερασμένου πεδίου στην υπάρχουσα υλοποίηση του ibm, με την εφαρμογή του αποφεύγεται η χρήση αντιστροφέων πεπερασμένου πεδίου, οι οποίοι έχουν μεγάλη καθυστέρηση, με αποτέλεσμα να μειώνεται σημαντικά η κρίσιμη διαδρομή και να είναι δυνατή η χρήση υψηλών συχνοτήτων ρολογιού. Ο γενικός αλγόριθμος Berlekamp-Massey είναι μια επαναληπτική διαδικασία που χρησιμοποιείται για την επίλυση της εξίσωσης 5.7. Στην αρχική πρόταση του Berlekamp [10], ο αλγόριθμος ξεκινά με τα πολυώνυμα Λ(0, x) = 1, Ω(0, x) = 0 και υπολογίζει επαναληπτικά τα πολυώνυμα Λ(r, x) και Ω(r, x) ικανοποιώντας την βασική εξίσωση 5.7 και, τελικά, βρίσκει ως λύση στην εξίσωση 5.7 τα πολυώνυμα Λ(2t, x) και Ω(2t, x). Στον αλγόριθμο χρησιμοποιούνται δύο βοηθητικά πολυώνυμα, το B(r, x) και το H(r, x), με αρχικές τιμές B(0, x) = 1 και H(0, x) = 1. Για κάθε διαδοχική τιμή του r ο αλγόριθμος υπολογίζει τα Λ(r, x) και B(r, x) από τα Λ(r 1, x) και B(r 1, x) αντίστοιχα. Με παρόμοιο τρόπο ο αλγόριθμος υπολογίζει τα Ω(r, x) και H(r, x) από τα Ω(r 1, x) και H(r 1, x) αντίστοιχα. Αφού το S(x) έχει βαθμό 2t 1, και τα άλλα πολυώνυμα μπορούν να έχουν βαθμό το πολύ t, ο αλγόριθμος χρειάζεται να αποθηκεύσει περίπου 6t στοιχεία του πεδίου. Εάν κάθε επανάληψη ολοκληρώνεται σε έναν κύκλο ρολογιού, απαιτούνται 2t κύκλοι για εύρεση των πολυωνύμων εντοπισμού και υπολογισμού λαθών. Συχνά χρησιμοποιείται η εκδοχή του αλγόριθμου Berlekamp-Massey που δίνεται στο [22], όπου υπολογίζονται επαναληπτικά μόνο το Λ(r, x) και το B(r, x). Μετά την ολοκλήρωση των 2t επαναλήψεων, το πολυώνυμο υπολογισμού λαθών Ω(2t, x) υπολογίζεται από τους όρους βαθμού έως και t 1 στο γινόμενο πολυωνύμων Λ(2t, x) S(x). Μια υλοποίηση αυτής της εκδοχής χρειάζεται να αποθηκεύσει μόνο 4t στοιχεία του πεδίου, αλλά ο υπολογισμός του Ω(2t, x) χρειάζεται επιπλέον t κύκλους ρολογιού. Αν και αυτή η εκδοχή του αλγορίθμου επιτυγχάνει μικρότερη επιφάνεια, με αντίτιμο την μεγαλύτερη καθυστέρηση, έχει το ίδιο πρόβλημα με την εκδοχή του Berlekamp, καθώς κατά τη διάρκεια κάποιων επαναλήψεων είναι απαραίτητο κάθε συντελεστής του Λ(r, x) να διαιρεθεί με μια ποσότητα δ r. Αυτές οι διαιρέσεις γίνονται πιο αποδοτικά αν υπολογισθεί πρώτα η ποσότητα δ 1 r, ο αντίστροφος του δ r, και μετά πολ-

77 63 λαπλασιαστεί κάθε συντελεστής του Λ(r, x) με δ 1 r. Δυστυχώς όμως, ανεξάρτητα από το αν χρησιμοποιηθεί αυτή η μέθοδος ή κατασκευαστούν ξεχωριστά κυκλώματα διαίρεσης για κάθε συντελεστή του Λ(r, x), αυτές οι διαιρέσεις, οι οποίες εκτελούνται μέσα σε έναν επαναληπτικό βρόχο, χρειάζονται περισσότερο χρόνο από τους πολλαπλασιασμούς. Προφανώς, εάν αυτές οι διαιρέσεις μπορούσαν να αντικατασταθούν με πολλαπλασιασμούς, το κύκλωμα που θα προέκυπτε θα είχε μικρότερη κρίσιμη διαδρομή και θα μπορούσαν να επιτευχθούν υψηλότερες συχνότητες ρολογιού. Με βάση την παραπάνω ανάλυση, οι Sarwate και Shanbhag στο [29] πρότειναν την εκδοχή του αλγορίθμου Berlekamp-Massey χωρίς αντιστροφή (ibm), όπως και μια μετασχηματισμένη συστολική αρχιτεκτονική για την υλοποίησή του, την RiBM (Reformulated ibm). Εισάγοντας ένα πολυώνυμο απόκλισης (discrepancy polynomial) δ(r, x), η αρχιτεκτονική RiBM είναι σε θέση να ανανεώνει το πολυώνυμο εντοπισμού λαθών Λ(r, x) και να υπολογίζει την τιμή της απόκλισης για τον επόμενο κύκλο ταυτόχρονα [29]. Αυτό εξαλείφει το βρόχο ανάδρασης στον αλγόριθμο ibm, και έτσι μειώνει την κρίσιμη διαδρομή στο μισό. Η υλοποίηση της αρχιτεκτονικής RiBM απαιτεί 3t + 1 αθροιστές πεπερασμένου πεδίου, 6t + 2 πολλαπλασιαστές πεπερασμένου πεδίου, 6t + 2 καταχωρητές των m δυαδικών ψηφίων και 3t + 1 πολυπλέκτες των m δυαδικών ψηφίων. Χρειάζονται 2t κύκλοι για την ολοκλήρωση του αλγορίθμου, ενώ η κρίσιμη διαδρομή είναι ίση με T F F M + T F F A. Στο [34] παρουσιάζονται αρχιτεκτονικές στις οποίες έχει εφαρμοστεί folding για να μειωθεί η πολυπλοκότητα σε υλικό της αρχιτεκτονικής RiBM με αντίτιμο αύξηση του χρόνου αναμονής (latency). Οι αλγόριθμοι που αναφέρθηκαν προηγουμένως είναι σχεδιασμένοι για γενικούς κώδικες BCH. Για δυαδικούς κώδικες BCH, όπως αυτός που χρησιμοποιείται σε αυτή την εργασία, ισχύουν δύο σημαντικές ιδιότητες: 1. Δεν χρειάζεται να βρεθεί το πολυώνυμο υπολογισμού λαθών Ω(x) καθώς η τιμή του λάθους είναι πάντα η τιμή 1 στο δυαδικό σύστημα. Στο [29] αποδεικνύεται ότι, κατά την επαναληπτική διαδικασία, ο υπολογισμός του Λ(r, x) δεν επηρεάζει τον υπολογισμό του Ω(r, x), κάτι που κάνει δυνατή την αφαίρεση του υπολογισμού του τελευταίου. 2. Στις περιττές επαναλήψεις η απόκλιση είναι πάντα 0 στα πεπερασμένα πεδία δυαδικής βάσης GF (2 m ).

78 64 Οι παραπάνω ιδιότητες κάνουν δυνατή την αφαίρεση όλων των περιττών επαναλήψεων, μειώνοντας το συνολικό πλήθος των επαναλήψεων στο μισό (t). Ακόμα, επειδή το σύνδρομο S 2t 1 χρησιμοποιείται πρώτη φορά στην (2t 1)-οστή επανάληψη και δεν επηρεάζει το τελικό αποτέλεσμα, μπορεί επίσης να παραλειφθεί. Ο απλοποιημένος αλγόριθμος ibm (Simplified ibm SiBM), ο οποίος προτάθηκε και υλοποιήθηκε από τους Liu, Rho και Sung στο [18], για αποκωδικοποίηση δυαδικών κωδίκων BCH, περιγράφεται στη συνέχεια σε ψευδοκώδικα. The SiBM algorithm Initialization: δ 2t = (0), θ 2t (0) = 0, δ 2t 1 (0) = 0, θ 2t 1 (0) = 0, k(0) = 0, γ(0) = 1. Inputs: S i, (i = 0, 1, 2,..., 2t 2) δ i (0) = θ i (0) = S i, (i = 0, 1,..., 2t 2) for r = 0 step 1 until t 1 do step SiBM.1 δ i (r + 1) = γ(r) δ i+2 (r) δ 0 (r) θ i+1 (r), (i = 0, 1, 2,..., 2t) ( δ 2t+2 (r) = δ 2t+1 (r) = 0, θ 2t+1 (r) = 0) step SiBM.2 if δ 0 (r) 0 and k(r) 0 then θ i (r + 1) = δ i+1 (r), (0 i 2t, i 2t 2 k, k = 0, 1) γ(r + 1) = δ 0 (r) k(r + 1) = k(r) else θi (r + 1) = θ i (r), (0 i 2t, i 2t 2 2r k, k = 0, 1) γ(r + 1) = γ(r) k(r + 1) = k(r) + 2 end if θ i (r + 1) = 0, (i = 2t 2 2r k, k = 0, 1) end for Outputs: λ i (t) = δ i (t), (i = 0, 1,..., t) Σύμφωνα με τον αλγόριθμο SiBM, στην r-οστή επανάληψη, οι ανανεώσεις του i-οστού συντελεστή στο βήμα SiBM.1 μπορούν να γίνουν παράλληλα με τις ανανεώσεις του (i + 1)-οστού συντελεστή στο βήμα SiBM.2. Ένα επεξεργαστικό στοιχείο (processing element PE) του SiBM, το οποίο μπορεί και εκτελεί παράλληλα τις δύο αυτές ανανεώσεις, του i-οστού συντελεστή στο πολυώνυμο Λ(r, x) και του (i + 1)-οστού συντελεστή στο πολυώνυμο Θ(r, x), παρατίθεται στο σχήμα 5.4 [18]. Κάθε επεξεργαστικό στοιχείο αποτελείται από δύο πολλαπλασιαστές πεπε-

79 65 Σχήμα 5.4: Επεξεργαστικό στοιχείο αρχιτεκτονικής του αλγορίθμου SiBM ρασμένου πεδίου, έναν αθροιστή πεπερασμένου πεδίου και έναν 3-σε-1 πολυπλέκτη των m δυαδικών ψηφίων. Ο αλγόριθμος SiBM μπορεί να υλοποιηθεί με 2t επεξεργαστικά στοιχεία και 4t + 1 καταχωρητές, που σχηματίζουν μία διάταξη 2 t, όπως φαίνεται στο σχήμα 5.5. Το σήμα ελέγχου c0 και οι κοινόχρηστες είσοδοι γ(r) και δ 0 (r) οδηγούν όλα τα επεξεργαστικά στοιχεία. Η μονάδα ελέγχου ανανεώνει το γ(r) και το k(r) ανάλογα με το βήμα SiBM.2 του αλγορίθμου. Οι καταστάσεις των καταχωρητών αρχικοποιούνται στις τιμές των συνδρόμων και ανανεώνονται από τις εξόδους των επεξεργαστικών στοιχείων σύμφωνα με τα βήματα SiBM.1 και SiBM.2 του αλγορίθμου. Ο επαναληπτικός αλγόριθμος ολοκληρώνεται σε t κύκλους, με 4t πολλαπλασιαστές πεπερασμένου πεδίου, 2t αθροιστές πεπερασμένου πεδίου, 2t πολυπλέκτες και 2t + 1 καταχωρητές. Υποθέτοντας ότι ένας πολυπλέκτης είναι ταχύτερος από έναν πολλαπλασιαστή πεπερασμένου πεδίου [29], η κρίσιμη διαδρομή του αλγορίθμου SiBM είναι T F F M + T F F A. Μετά από t κύκλους οι συντελεστές του Λ(t, x) είναι αποθηκευμένοι στους καταχωρητές R 0 έως R t. Η αρχιτεκτονική που βασίζεται στον αλγόριθμο SiBM έχει ένα σημαντικό πλεονέκτημα στην πολυπλοκότητα υλικού έναντι της αρχιτεκτονικής RiBM λόγω της αφαίρεσης του τμήματος υπολογισμού του πολυωνύμου Ω(r, x), αλλά και έναντι των αρχιτεκτονικών που βασίζονται στον τροποποιημένο αλγόριθμο του Ευκλείδη (me), ενώ έχουν προταθεί υλοποιήσεις [18] [34] που εφαρμόζουν folding μειώνοντας την απαι-

80 66 Σχήμα 5.5: Αρχιτεκτονική για την υλοποίηση του αλγορίθμου SiBM τούμενη επιφάνεια ακόμα περισσότερο. Λόγω αυτών των συγκριτικών πλεονεκτημάτων ο αλγόριθμος SiBM επιλέχθηκε ως βάση για την υλοποίηση του τμήματος υπολογισμού του πολυωνύμου εντοπισμού λαθών του αποκωδικοποιητή Έρευνα κατά Chien Το τρίτο βήμα της αποκωδικοποίησης ενός κώδικα BCH είναι η εύρεση των αριθμών θέσεων των λαθών, οι οποίοι είναι οι αντίστροφοι των ριζών του Λ(x). Οι ρίζες του Λ(x) μπορούν να βρεθούν απλώς αντικαθιστώντας σε αυτό τα πρωταρχικά στοιχεία 1, α, α 2,..., α n 1, με n = 2 m 1 σε ένα πεπερασμένο πεδίο GF (2 m ). Εάν α n = 1, τότε ο αντίστροφος ενός στοιχείου ως προς το συγκεκριμένο πεπερασμένο πεδίο είναι α l = α n l. Οπότε, εάν το στοιχείο α l είναι μια ρίζα του Λ(x), το α n l είναι ένας αριθμός θέσης λάθους και στο ληφθέν μήνυμα έχει συμβεί λάθος στο δυαδικό ψηφίο r n l. Η μέθοδος της αντικατάστασης για εύρεση των ριζών του πολυωνύμου εντοπισμού λαθών χρησιμοποιήθηκε πρώτη φορά από τον Peterson στον αλγόριθμό του για αποκωδικοποίηση κωδίκων BCH [6] [20]. Αργότερα, ο Chien πρότεινε μία διαδικασία για εφαρμογή αντικατάστασης των πρωταρχικών στοιχείων του πεδίου στο Λ(x) και διόρθωσης των λαθών [11] η οποία έχει επικρατήσει να λέγεται έρευνα

81 67 κατά Chien (Chien s search). Αυτή η διαδικασία, η οποία περιγράφηκε αναλυτικά στο Κεφάλαιο 3, θα χρησιμοποιηθεί σε αυτή την εργασία για εύρεση των θέσεων των λαθών βάσει του πολυωνύμου εντοπισμού λαθών που υπολογίσθηκε στην προηγούμενη βαθμίδα. Ο αλγόριθμος της μεθόδου του Chien είναι σχετικά απλός. Από τη στιγμή που έχει καθοριστεί το πολυώνυμο Λ(x) θα πρέπει να υπολογιστεί η τιμή του για x = 1, α, α 2,..., α n 1, για όλα δηλαδή τα πρωταρχικά στοιχεία του πεπερασμένου πεδίου. Οι τιμές α i, 0 i (n 1) για τις οποίες Λ(α i ) = 0 αποτελούν ρίζες του πολυωνύμου. Οι θέσεις των λαθών είναι οι δυνάμεις των αντίστροφων αυτών των στοιχείων, δηλαδή των α l i. Επειδή τα πεδία που χρησιμοποιούνται είναι πεπερασμένα, υπάρχει η δυνατότητα εξαντλητικού ελέγχου όλων των πρωταρχικών στοιχείων ως πιθανών ριζών του πολυωνύμου Λ(x). Παρά το ότι ο έλεγχος είναι εξαντλητικός, για το μέγεθος της κωδικής λέξης και το πεδίο επέκτασης που χρησιμοποιείται η διαδικασία είναι αρκετά αποτελεσματική και λιγότερο πολύπλοκη σε σχέση με άλλες αλγεβρικές μεθόδους. Θα πρέπει λοιπόν να υπολογισθεί η τιμή του πολυωνύμου εντοπισμού λαθών Λ(x) = λ 0 +λ 1 x+λ 2 x λ t x t για x = 1, α, α 2,..., α n 1, δηλαδή θα πρέπει να υπολογισθούν οι ακόλουθες n ποσότητες: Λ(1) = λ 0 + λ 1 + λ λ t Λ(α) = λ 0 + λ 1 α + λ 2 α λ t α t Λ(α 2 ) = λ 0 + λ 1 α 2 + λ 2 (α 2 ) λ t (α 2 ) t. Λ(α n 1 ) = λ 0 + λ 1 α n 1 + λ 2 (α n 1 ) λ t (α n 1 ) t Όπως αναφέρθηκε και προηγουμένως, όταν η τιμή που υπολογίζεται για κάποιο από τα στοιχεία του πεδίου είναι 0 τότε το συγκεκριμένο στοιχείο αποτελεί ρίζα του πολυωνύμου. Η λειτουργία του συγκεκριμένου τμήματος είναι παρόμοια με τη λειτουργία του τμήματος υπολογισμού συνδρόμων. Στην αρχική πρότασή του ο Chien παρουσιάζει ένα απλό κύκλωμα που υλοποιεί αυτόν τον εξαντλητικό έλεγχο, χρησιμοποιώντας τις προηγουμένως υπολογισμένες τιμές, οι οποίες αποθηκεύονται σε καταχωρητές. Αυτή η μονάδα παρατίθεται στο σχήμα 5.6. Η λειτουργία της μονάδας αυτής βασίζεται στην διαπίστωση ότι η τιμή του πολυωνύμου για το στοιχείο α i+1, αντί να υπολογιστεί από την

82 68 Σχήμα 5.6: Συμβατική μονάδα υλοποίησης της Έρευνας κατά Chien αρχή, μπορεί να προκύψει σχετικά εύκολα από την ήδη υπολογισμένη τιμή για το στοιχείο α i. Πιο συγκεκριμένα, εάν η τιμή του πολυωνύμου Λ(x) για x = α i είναι Λ(α i ) = λ 0 + λ 1 α i + λ 2 (α i ) λ t (α i ) t = β 0,i + β 1,i + β 2,i β t,i όπου β i,j = λ i α j, τότε για το επόμενο στοιχείο α i+1 ισχύει [35] Λ(α i+1 ) = λ 0 + λ 1 α i+1 + λ ( 2 αi+1 ) λ t (α i+1 ) t = λ 0 + λ 1 α i α + λ ( 2 αi α) λ t (α i α) t = λ 0 + λ 1 (α i )α + λ ( 2 αi ) 2 α λ t (α i ) t α t = β 0,i + β 1,i α + β 2,i α β t,i α t = β 0,i+1 + β 1,i+1 + β 2,i β t,i+1 Σύμφωνα με την παραπάνω λογική, αρκούν τέσσερις σταθεροί πολλαπλασιαστές πεπερασμένου πεδίου οι οποίοι θα πολλαπλασιάζουν τους συντελεστές του πολυωνύμου λ 1, λ 2, λ 3 και λ 4 με τα α, α 2, α 3 και α 4 αντίστοιχα, και ένας αθροιστής πεπερασμένου πεδίου που θα αθροίζει τα τέσσερα γινόμενα και τον συντελεστή λ 0. Οι τιμές των τεσσάρων νέων συντελεστών θα αποθηκεύονται σε τέσσερις καταχωρητές ώστε στον επόμενο κύκλο να υπολογισθεί η τιμή του πολυωνύμου για το επόμενο στοιχείο του πεπερασμένου πεδίου χρησιμοποιώντας την προηγουμένως υπολογισμένη τιμή, σύμφωνα με τη λογική που αναλύθηκε παραπάνω. Μετά από n 1 κύκλους ρολογιού, στους καταχωρητές θα υπάρχει η τιμή Λ(α n 1 ) = λ 0 + λ 1 α n 1 + λ 2 (α n 1 ) λ t (α n 1 ) t και ο έλεγχος όλων των πρωταρχικών στοιχείων του πεπερασμένου πεδίου θα έχει ολοκληρωθεί.

83 69 Σχήμα 5.7: Παράλληλη μονάδα υλοποίησης της Έρευνας κατά Chien Η συμβατική μονάδα του σχήματος 5.6 υπολογίζει σε κάθε κύκλο την ποσότητα [17] Λ(α i ) = t λ j α ij j=0 όπου 0 i (n 1). Στον πρώτο κύκλο όλοι οι πολυπλέκτες επιλέγουν τους συντελεστές του Λ(x) (γίνεται δηλαδή αρχικοποίηση των καταχωρητών) και στους επόμενους κύκλους επιλέγουν τις ανατροφοδοτήσεις των καταχωρητών. Το πολυώνυμο Λ(x) θα πρέπει να υπολογισθεί για n πιθανές θέσεις λαθών (αφού το μήνυμα που έχει ληφθεί έχει μήκος n δυαδικά ψηφία). Αυτό σημαίνει πως θα χρειαστούν n κύκλοι για την ολοκλήρωση της διαδικασίας ελέγχου κατά Chien. Για να επιταχυνθεί η διαδικασία είναι απαραίτητη μια παράλληλη αρχιτεκτονική της έρευνας κατά Chien η οποία θα υπολογίζει το πολυώνυμο Λ(x) για περισσότερες της μίας θέσεις ανά κύκλο, δηλαδή θα υπολογίζει σε κάθε κύκλο τιμές για περισσότερα του ενός στοιχεία του πεπερασμένου πεδίου. Στη βιβλιογραφία έχουν προταθεί δύο παράλληλες αρχιτεκτονικές, οι οποίες παρατίθενται στα σχήματα 5.7 [19] και 5.8 [30]. Η αρχιτεκτονική του σχήματος 5.7 είναι απλά μια unfolded εκδοχή της συμβατικής αρχιτεκτονικής του σχήματος 5.6 κατά έναν παράγοντα unfolding p. Οι δύο παράλληλες αρχιτεκτονικές έχουν πολλά κοινά. Για βαθμό παραλληλίας p και οι δύο αρχιτεκτονικές μειώνουν τον χρόνο που απαιτείται για την ολοκλήρωση της διαδικασίας Chien από n κύκλους ρο-

84 70 Σχήμα 5.8: Παράλληλη μονάδα υλοποίησης της Έρευνας κατά Chien λογιού σε n/p, ενώ έχουν παρόμοια πολυπλοκότητα υλικού: και στις δύο περιπτώσεις χρησιμοποιούνται p t σταθεροί πολλαπλασιαστές πεπερασμένου πεδίου, p αθροιστές πεπερασμένου πεδίου t εισόδων και m δυαδικών ψηφίων, t καταχωρητές των m δυαδικών ψηφίων και t πολυπλέκτες των m δυαδικών ψηφίων. Η μεγάλη διαφορά των δύο αρχιτεκτονικών είναι η κρίσιμη διαδρομή, αφού στην πρώτη αρχιτεκτονική είναι T MUX + (p T F F M ) + T F F A ενώ στην δεύτερη είναι μόλις T MUX + T F F M + T F F A. Προφανώς με την δεύτερη παράλληλη αρχιτεκτονική μπορούν να επιτευχθούν αρκετά υψηλότερες συχνότητες λειτουργίας (υποθέτοντας ότι η καθυστέρηση T F MM είναι κυρίαρχη έναντι των T F F A και T MUX, η κρίσιμη διαδρομή της δεύτερης αρχιτεκτονικής είναι p φορές μικρότερη [17]). Για τους λόγους αυτούς, για την υλοποίηση της αρχιτεκτονικής του τμήματος του αποκωδικοποιητή BCH(728,688) που θα εκτελεί την έρευνα κατά Chien επιλέχθηκε η αρχιτεκτονική του σχήματος Διόρθωση λαθών Οι ρίζες του πολυωνύμου Λ(x) που βρέθηκαν στην προηγούμενη βαθμίδα υποδεικνύουν τις θέσεις στις οποίες έχουν συμβεί λάθη. Προφανώς, αυτές οι ρίζες μπορούν να είναι το πολύ t, κατ αντιστοιχία με τον μέγιστο βαθμό που μπορεί να έχει το πολυώνυμο Λ(x). Όπως αναφέρθηκε

85 71 Σχήμα 5.9: Συμβατική μονάδα που υλοποιεί Έρευνα κατά Chien και διόρθωση λαθών και στην προηγούμενη ενότητα, εάν για κάποιο α i υπολογισθεί Λ(α i ) = 0 συνεπάγεται ότι υπάρχει σφάλμα στην θέση που υποδεικνύει η δύναμη του αντίστροφου του στοιχείου αυτού, δηλαδή στη θέση α n i. Στην παρούσα εργασία μελετώνται οι δυαδικοί κώδικες BCH, οπότε σημασία έχει μόνο η θέση των λαθών, αφού η τιμή τους είναι πάντα 1 στο δυαδικό σύστημα. Ο αλγόριθμος διόρθωσης των λαθών είναι αρκετά απλός και περιγράφεται στο [11]. Σύμφωνα με αυτόν, για τη διόρθωση των λαθών αρκεί μία πύλη XOR που θα δέχεται στη μία είσοδο την έξοδο του τμήματος που εκτελεί την έρευνα κατά Chien και στην άλλη τα δυαδικά ψηφία της λέξης που έχει ληφθεί. Η προσέγγιση αυτή αφορά αρχιτεκτονικές Chien που υπολογίζουν μία τιμή του πολυωνύμου Λ(x) σε κάθε κύκλο, την οποία κάνουν XOR με ένα δυαδικό ψηφίο της λέξης που έχει ληφθεί (για αρχιτεκτονικές που είναι δηλαδή σειριακές). Η εφαρμογή αυτής της λογικής στη συμβατική αρχιτεκτονική του σχήματος 5.6 μπορεί να φανεί στο σχήμα 5.9 [6]. Στην περίπτωση που ο κώδικας που χρησιμοποιείται είναι σε συντετμημένη μορφή (shortened) η ανάγνωση από την μνήμη των δυαδικών ψηφίων της λέξης που έχει ληφθεί θα πρέπει να καθυστερήσει κύκλους ρολογιού ίσους με το shortening που έχει εφαρμοσθεί. Αυτό οφείλεται στην αντιστοιχία των θέσεων των λαθών και των δυνάμεων των αντίστροφων των ριζών, όπως θα αναλυθεί στη συνέχεια.

86 Σχεδίαση παράλληλου αποκωδικοποιητή BCH(728,688) Στις προηγούμενες ενότητες παρουσιάστηκαν οι βασικοί αλγόριθμοι στους οποίους θα βασιστεί η διαδικασία σχεδίασης ενός παράλληλου αποκωδικοποιητή για τον κώδικα BCH(728,688). Αυτοί οι αλγόριθμοι αφορούν τα τέσσερα βασικά υποσυστήματα του αποκωδικοποιητή σύμφωνα με την γενική αρχιτεκτονική του σχήματος 5.1. Ο κώδικας BCH(728,688), όπως έχει αναφερθεί νωρίτερα, είναι μια συντετμημένη μορφή του κώδικα BCH(1023,983). Στην Παράγραφο που ακολουθεί θα διατυπωθούν οι προδιαγραφές σχεδίασης, θα παρουσιαστεί η διεπαφή επικοινωνίας και θα αναφερθούν οι υπόλοιπες συμβάσεις σχετικά με την επικοινωνία του αποκωδικοποιητή με το εξωτερικό του περιβάλλον. Στη συνέχεια, θα παρουσιαστεί η αρχιτεκτονική του συστήματος που σχεδιάστηκε, τόσο η διάταξη και οι διασυνδέσεις στο υψηλότερο επιπέδου όσο και η εσωτερική δομή και λειτουργία κάθε υποσυστήματος. Στην Παράγραφο θα αναλυθεί η λειτουργία της μηχανής πεπερασμένων καταστάσεων που ελέγχει τη λειτουργία και παράγει τα σήματα ελέγχου του συστήματος, ενώ στην Παράγραφο θα περιγραφεί συνολικά η λειτουργία του αποκωδικοποιητή. Τέλος, στην Παράγραφο θα γίνει μία σύνοψη του Κεφαλαίου και θα αναφερθούν κάποια γενικά χαρακτηριστικά του αποκωδικοποιητή Προδιαγραφές και διεπαφή Η διεπαφή που επιλέχθηκε για το σύστημα του αποκωδικοποιητή παρουσιάζεται στο σχήμα Σχήμα 5.10: Διεπαφή αποκωδικοποιητή BCH(728,688) Τα σήματα διεπαφής του αποκωδικοποιητή είναι τα εξής:

87 73 Σήματα εισόδου: data_in Γραμμή εισόδου δεδομένων πλάτους 8 δυαδικών ψηφίων (ενός byte). clk en resetn start Σήμα ρολογιού (clock). Σήμα ενεργοποίησης (enable) του αποκωδικοποιητή. Έχει την τιμή 1 όταν τα δεδομένα στην είσοδο είναι έγκυρα (είναι δηλαδή μέρος της λέξης που πρέπει να αποκωδικοποιηθεί) και την τιμή 0 όταν στην είσοδο δεδομένων δεν υπάρχουν δεδομένα του μηνύματος. Σήμα επαναφοράς αρνητικής λογικής (active low reset). Σήμα πυροδότησης (trigger) έναρξης λειτουργίας του αποκωδικοποιητή. Σήματα εξόδου: data_out Γραμμή εξόδου δεδομένων πλάτους 8 δυαδικών ψηφίων (ενός byte). errors Σήμα ένδειξης πλήθους λαθών που βρέθηκαν και διορθώθηκαν. data_valid Σήμα ένδειξης εγκυρότητας των δεδομένων της εξόδου data_out. Είναι 1 όταν το byte στην έξοδο δεδομένων είναι μέρος της λέξης που έχει αποκωδικοποιηθεί. failure finished Σήμα ένδειξης αποτυχίας αποκωδικοποίησης. Είναι 1 όταν έχουν υπάρξει περισσότερα λάθη από 4 (διορθωτική ικανότητα του κώδικα). Σήμα ένδειξης ολοκλήρωσης της διαδικασίας αποκωδικοποίησης. Γίνεται 1 όταν έναν κύκλο μετά την έξοδο του τελευταίου byte της λέξης που αποκωδικοποιήθηκε. Ο επιθυμητός τρόπος λειτουργίας είναι ο εξής: όταν το σήμα start γίνει 1 θα πρέπει στον επόμενο κύκλο ο αποκωδικοποιητής να αρχί-

88 74 σει να τροφοδοτείται με έγκυρα δεδομένα μιας λέξης των 91 byte (728 δυαδικών ψηφίων) μέσω της εισόδου δεδομένων data_in. Παράλληλα, θα πρέπει το σήμα ενεργοποίησης en να είναι 1 καθ όλη τη διαδικασία αποκωδικοποίησης και 0 όταν ο αποκωδικοποιητής δεν χρησιμοποιείται. Ο αποκωδικοποιητής θα εκτελέσει τα τέσσερα βήματα της αποκωδικοποίησης και όταν το σήμα data_valid γίνει 1 θα υπάρχει στην έξοδο δεδομένων data_out το 1ο byte της αποκωδικοποιημένης λέξης. Το σήμα data_valid θα παραμείνει 1 για άλλους 90 κύκλους (συνολικά 91 κύκλοι για 91 byte). Στον αμέσως επόμενο κύκλο από την έξοδο του 91ου και τελευταίου byte της αποκωδικοποιημένης λέξης, το σήμα data_valid θα γίνει 0, ενώ το σήμα finished θα γίνει 1, σηματοδοτώντας το τέλος της διαδικασίας αποκωδικοποίησης. Τον ίδιο κύκλο η τιμή του σήματος errors θα αντιστοιχεί στο πλήθος των λαθών που βρέθηκαν και διορθώθηκαν κατά την αποκωδικοποίηση και η τιμή του σήματος failure θα είναι 1 εάν υπήρξαν περισσότερα από 4 λάθη και η διαδικασία αποκωδικοποίησης απέτυχε, ενώ θα είναι 0 εάν βρέθηκαν από 0 έως 4 λάθη. Η επικοινωνία του αποκωδικοποιητή με το εξωτερικό περιβάλλον είναι σαφής και απλή. Κατά την υλοποίηση του αποκωδικοποιητή ως περιφερειακό σε ενσωματωμένο σύστημα, που περιγράφεται αναλυτικά στο Κεφάλαιο 6, χρησιμοποιήθηκαν μνήμες FIFO για την είσοδο και την έξοδο των δεδομένων, καθώς και μια μηχανή πεπερασμένων καταστάσεων που παρήγαγε τα σήματα ανάγνωσης και εγγραφής αναλόγως. Παρ όλα αυτά, ο αποκωδικοποιητής που σχεδιάστηκε υποστηρίζει σύγχρονη επικοινωνία χωρίς προβλήματα με βάση τη διεπαφή που περιγράφηκε, ενώ το σήμα data_valid και η γραμμή εξόδου data_out μπορούν να συνδεθούν απευθείας σε κάποια μνήμη ως γραμμή εισόδου δεδομένων και σήμα ενεργοποίησης εγγραφής αντίστοιχα, για αποθήκευση της λέξης που αποκωδικοποιήθηκε. Στην παρούσα σχεδίαση θα πρέπει τα 91 byte της λέξης προς αποκωδικοποίηση να τροφοδοτηθούν σε 91 διαδοχικούς κύκλους ρολογιού αλλά το σύστημα μπορεί εύκολα να τροποποιηθεί ώστε να υποστηρίζει και διακοπτόμενη λειτουργία (με τρόπο παρόμοιο με αυτόν που υιοθετήθηκε στο Κεφάλαιο 4 για τη σχεδίαση του κωδικοποιητή). Ωστόσο, επειδή η δομή του περιφερειακού, που ήταν ο στόχος της υλοποίησης, χρησιμοποιεί μνήμες FIFO για ασύγχρονη επικοινωνία και έλεγχο ροής μεταξύ του περιβάλλοντος και του αποκωδικοποιητή, θεωρήθηκε σκόπιμο να μην γίνει η σχεδίαση περισσότερο πολύπλοκη απ όσο χρειάζεται.

89 75 Σχήμα 5.11: Αρχιτεκτονική αποκωδικοποιητή BCH(728,688) Αρχιτεκτονική Στο σχήμα 5.11 παρουσιάζεται η αρχιτεκτονική του αποκωδικοποιητή BCH(728,688) που σχεδιάστηκε. Το σχήμα είναι όσο πιο λεπτομερές γίνεται και περιέχει όλες τις διασυνδέσεις μεταξύ των υποσυστημάτων. Η αρχιτεκτονική είναι πιστή στον αλγόριθμο της διαδικασίας αποκωδικοποίησης κωδίκων BCH του σχήματος 5.1. Οι διαφοροποιήσεις που υπάρχουν στο σχήμα αφορούν την προσθήκη μιας μηχανής πεπερασμένων καταστάσεων (CONTROLLER), μιας μονάδας ανίχνευσης λαθών με βάση τα σύνδρομα που υπολογίσθηκαν (η έξοδός της είναι 0 όταν όλα τα σύν-

90 76 δρομα είναι μηδενικά και δεν υπάρχει λάθος στη λέξη που έχει ληφθεί), μιας μονάδας ανίχνευσης πιθανής αποτυχίας κατά τη διαδικασία αποκωδικοποίησης, καθώς και ενός καταχωρητή στον οποίο αποθηκεύεται το επόμενο byte προς έξοδο. Η ύπαρξη του πολυπλέκτη πριν τον καταχωρητή οφείλεται στην ενσωμάτωση λειτουργίας παράκαμψης (bypass), την οποία θα πρέπει να εκτελέσει το σύστημα όταν τα σύνδρομα προκύπτουν μηδενικά. Η λειτουργία αυτή θα αναλυθεί κατά την περιγραφή της μηχανής πεπερασμένων καταστάσεων (FSM) στην Ενότητα Τα καθολικά σήματα ρολογιού (clk) και επαναφοράς (resetn) συνδέονται σε όλα τα ακολουθιακά στοιχεία του συστήματος και στην FSM, το εξωτερικό σήμα ενεργοποίησης en συνδέεται στην FSM και στον καταχωρητή εξόδου μόνο, ενώ τα υπόλοιπα σήματα ελέγχου, συμπεριλαμβανομένου του εσωτερικού σήματος επαναφοράς clearn, παράγονται από την FSM. Η εσωτερική αρχιτεκτονική των μονάδων υπολογισμού συνδρόμων, υπολογισμού του πολυωνύμου εντοπισμού λαθών, έρευνας κατά Chien και διόρθωσης λαθών θα παρουσιαστούν στις επόμενες ενότητες. Στο σχήμα 5.11 φαίνονται οι διασυνδέσεις αυτών των μονάδων, καθώς και τα σήματα ελέγχου τους και αφετηρία αυτών. Πιο συγκεκριμένα, η μονάδα υπολογισμού συνδρόμων SYNDROME GENERATOR έχει σαν είσοδο την κύρια γραμμή εισόδου δεδομένων του συστήματος, data_in, η οποία έχει πλάτος 8 δυαδικών ψηφίων και στην οποία εισέρχεται η λέξη που πρέπει να αποκωδικοποιηθεί ανά byte. Οι έξοδοι της μονάδας, οι οποίες είναι 7 γραμμές δεδομένων των 10 δυαδικών ψηφίων, συνδέονται με την μονάδα SIBM KEY EQUATION SOLVER, η οποία υπολογίζει το πολυώνυμο εντοπισμού λαθών. Κάθε γραμμή δεδομένων αντιστοιχεί σε ένα υπολογισμένο σύνδρομο (τα σύνδρομα όπως και οι υπόλοιπες ποσότητες των εσωτερικών γραμμών δεδομένων είναι στοιχεία του GF (2 10 ) και απαιτούνται 10 δυαδικά ψηφία για την αναπαράστασή τους). Το 8ο σύνδρομο, όπως αναφέρθηκε στην παράγραφο 5.1.2, δεν απαιτείται από τον αλγόριθμο SiBM για τον υπολογισμό του πολυωνύμου Λ(x), οπότε παραλείπεται. Ωστόσο, συνδέεται σαν είσοδος, όπως και τα υπόλοιπα σύνδρομα, στη μονάδα ανίχνευσης σφαλμάτων ERROR DETECTOR, η οποία παράγει ένα σήμα ένδειξης λαθών (error flag) όταν τα σύνδρομα δεν είναι μηδενικά, το οποίο ελέγχει η FSM. Τα σήματα ελέγχου επαναφοράς clearn και ενεργοποίησης syn_en της μονάδας παράγονται από την FSM. Η κύρια είσοδος δεδομένων του συστήματος, data_in, συνδέεται επίσης στην εσωτερική μνήμη FIFO, όπου αποθηκεύε-

91 77 ται προσωρινά η λέξη που λαμβάνεται και πρέπει να αποκωδικοποιηθεί. Η μονάδα SIBM KEY EQUATION SOLVER συνδέεται με την μονάδα έρευνας κατά Chien (CHIEN SEARCH) με 5 γραμμές των 10 δυαδικών ψηφίων. Οι γραμμές αυτές αντιστοιχούν στους συντελεστές λ 0, λ 1, λ 2, λ 3 και λ 4 του πολυωνύμου Λ(x). Οι γραμμές αυτές συνδέονται επίσης στη μονάδα ανίχνευσης αποτυχίας της διαδικασίας αποκωδικοποίησης (FAILURE DETECTOR), λεπτομέρειες για τη λειτουργία της οποίας θα αναφερθούν στην Ενότητα Τα σήματα ελέγχου επαναφοράς clearn, ενεργοποίησης sibm_en και αρχικοποίησης sibm_init παράγονται από την FSM. Στη συνέχεια, η μονάδα CHIEN SEARCH συνδέεται με την μονάδα διόρθωσης σφαλμάτων (ERROR CORRECTION με 8 γραμμές δεδομένων των 10 δυαδικών ψηφίων οι οποίες αντιστοιχούν στις 8 τιμές του πολυωνύμου Λ(x) που υπολογίζει η μονάδα έρευνας κατά Chien για 8 στοιχεία α i του GF (2 10 ) σε κάθε κύκλο. Η μονάδα ERROR CORRECTION δέχεται επίσης σαν είσοδο την γραμμή δεδομένων received πλάτους 8 δυαδικών ψηφίων που είναι η έξοδος της εσωτερικής μνήμης FIFO όπου έχει αποθηκευτεί προσωρινά η ληφθείσα λέξη. Οι γραμμές δεδομένων eval0, eval1,..., eval7 που εξέρχονται από την μονάδα έρευνας κατά Chien συνδέονται επίσης στη μονάδα FAILURE DETECTOR. Τα σήματα ελέγχου επαναφοράς clearn, ενεργοποίησης chien_en και αρχικοποίησης chien_init παράγονται από την FSM. Η μονάδα που αναφέρθηκε προηγουμένως και ανιχνεύει πιθανή αποτυχία της αποκωδικοποίησης, FAILURE DETECTOR, έχει σαν εισόδους τις γραμμές lamda0, lamda1,..., lamda4 και eval0, eval1,..., eval8, ενώ σαν εξόδους έχει τα σήματα failure και errors που είναι κύριες έξοδοι του συστήματος. Τα σήματα ελέγχου clearn, fail_check, coef_cnt_en και root_cnt_en που δέχεται η μονάδα σαν εισόδους παράγονται από την FSM. Όλες οι μονάδες της διάταξης ελέγχονται και συγχρονίζονται από την FSM του αποκωδικοποιητή, τη μονάδα CONTROLLER. H FSM δέχεται σαν εισόδους το εξωτερικό σήμα εκκίνησης της αποκωδικοποίησης start, το σήμα error_flag για την περίπτωση που δεν υπάρχουν λάθη και πρέπει να γίνει παράκαμψη της υπόλοιπης διαδικασίας αποκωδικοποίησης, και το σήμα fifo_empty για έλεγχο πριν την ανάγνωση από την μνήμη FIFO, ενώ παράγει όλα τα εσωτερικά σήματα ελέγχου που αναφέρθηκαν προηγουμένως. Η λειτουργία της θα αναλυθεί στην Παράγραφο

92 78 (α) Μονάδα υπολογισμού S 1 (β) Μονάδα υπολογισμού S 3 (γ) Μονάδα υπολογισμού S 5 (δ) Μονάδα υπολογισμού S 7 Σχήμα 5.12: Παράλληλες μονάδες υπολογισμού συνδρόμων Μονάδα υπολογισμού συνδρόμων Ο κώδικας BCH(728,688) που έχει επιλεγεί έχει διορθωτική ικανότητα t = 4, πράγμα που σημαίνει ότι θα πρέπει να υπολογιστούν 2t = 8 σύνδρομα. Σύμφωνα με την ανάλυση της προηγούμενης παραγράφου, πρέπει να χρησιμοποιηθούν 4 μονάδες σαν αυτή του σχήματος 5.3 για υπολογισμό των συνδρόμων S 1, S 3, S 5 και S 7, δηλαδή των συνδρόμων με περιττό δείκτη, και άλλες 4 απλές μονάδες τετραγωνισμού για υπολογισμό των S 2, S 4, S 6 και S 8. Οι μονάδες που υπολογίζουν τα S 1, S 3, S 5 και S 7 παρατίθενται στο σχήμα 5.12, ενώ οι μονάδες τετραγωνισμού έχουν παρουσιαστεί αναλυτικά στην Ενότητα 2.7. Τα S 2, S 4, S 8 προκύπτουν από το S 1, ενώ το S 6 από το S 3, ως εξής: S 2 = (S 1 ) 2 S 4 = (S 2 ) 2 = ((S 1 ) 2 ) 2 S 6 = (S 3 ) 2 S 8 = (S 4 ) 2 = ((S 2 ) 2 ) 2 = (((S 1 ) 2 ) 2 ) 2

93 79 Στις τέσσερις μονάδες του σχήματος 5.12 χρησιμοποιούνται σταθεροί πολλαπλασιαστές του πεδίου GF (2 10 ), δηλαδή μονάδες στις οποίες η είσοδος πολλαπλασιάζεται με ένα πρωταρχικό στοιχείο του πεδίου. Για ένα πολυώνυμο εισόδου r(x), όπως την λέξη των 728 δυαδικών ψηφίων που πρέπει να αποκωδικοποιηθεί, ένας πολλαπλασιαστής που πολλαπλασιάζει με το στοιχείο α i υπολογίζει την ποσότητα r(α i ). Παραδείγματα τέτοιων πολλαπλασιαστών παρουσιάστηκαν στην Ενότητα 2.7 και βασίζονταν σε έναν καταχωρητή ολίσθησης των 10 δυαδικών ψηφίων με αναδράσεις και πύλες XOR. Η θέση και το πλήθος των αναδράσεων και των πυλών καθορίζονται από το πρωταρχικό στοιχείο του GF (2 10 ) με το οποίο θα πολλαπλασιάζει η συγκεκριμένη μονάδα. Όμως για την περίπτωση των πολλαπλασιαστών που συμμετέχουν στις παράλληλες μονάδες του σχήματος 5.12 θα πρέπει να είναι δυνατή η κοινή χρήση ενός καταχωρητή και οι υπολογισμοί θα πρέπει να ολοκληρώνονται σε έναν κύκλο για κάθε 8 εισερχόμενα δυαδικά ψηφία. Για να γίνει δυνατό κάτι τέτοιο θα πρέπει να καθοριστεί το συνδυαστικό κύκλωμα που θα οδηγεί τον καταχωρητή (οι πύλες XOR και οι διασυνδέσεις μεταξύ των βαθμίδων του ). Στη συνέχεια θα αναλυθεί η μεθοδολογία που εφαρμόστηκε για σχεδίαση του κυκλώματος υπολογισμού του S 1 σύμφωνα με την αρχιτεκτονική της μονάδας του σχήματος Έστω ότι τα εισερχόμενα δυαδικά ψηφία σε έναν κύκλο είναι r 0, r 1, r 2, r 3, r 4, r 5, r 6 και r 7, και έστω ότι τα περιεχόμενα του καταχωρητή είναι d 0, d 1, d 2, d 3, d 4, d 5, d 6, d 7, d 8 και d 9. Ο καταχωρητής τότε περιέχει τη διανυσματική αναπαράσταση ενός στοιχείου του πεδίου GF (2 10 ), έστω δ, το οποίο είναι δ = d 0 + d 1 α + d 2 α 2 + d 3 α 3 + d 4 α 4 + d 5 α 5 + d 6 α 6 + d 7 α 7 + d 8 α 8 + d 9 α 9 Σύμφωνα με την αρχιτεκτονική για τον υπολογισμό του S 1, μετά από έναν παλμό το περιεχόμενο του καταχωρητή θα πρέπει να είναι ένα νέο στοιχείο του GF (2 10 ), έστω ε, του οποίου η διανυσματική αναπαράσταση θα είναι ε = r 7 + r 6 α + r 5 α 2 + r 4 α 3 + r 3 α 4 + r 2 α 5 + r 1 α 6 + r 0 α 7 + δα 8 (5.8) Για να προκύψει μία σχέση για το ε συναρτήσει των ψηφίων r 0, r 1,..., r 7 και των προηγούμενων περιεχόμενων του καταχωρητή, d 0, d 1,...,

94 80 d 9, θα πρέπει να γίνει υπολογισμός της ποσότητας δα 8, δηλαδή δα 8 = d 0 α 8 + d 1 α 9 + d 2 α 10 + d 3 α 11 + d 4 α 12 + d 5 α 13 + d 6 α 14 + d 7 α 15 + d 8 α 16 + d 9 α 17 = d 0 α 8 + d 1 α 9 + d 2 (α 3 + 1) + d 3 (α 4 + α) + d 4 (α 5 + α 2 ) + d 5 (α 6 + α 3 ) + d 6 (α 7 + α 4 ) + d 7 (α 8 + α 5 ) + d 8 (α 9 + α 6 ) + d 9 (α 7 + α 3 + 1) = (d 2 + d 9 ) + d 3 α + d 4 α 2 + (d 2 + d 5 + d 9 )α 3 + (d 3 + d 6 )α 4 + (d 4 + d 7 )α 5 + (d 5 + d 8 )α 6 + (d 6 + d 9 )α 7 + (d 0 + d 7 )α 8 + (d 1 + d 8 )α 9 (5.9) Εάν αντικατασταθεί το δα 8 στην εξίσωση 5.8 με την ποσότητα που υπολογίσθηκε στην εξίσωση 5.9, προκύπτει η ακόλουθη σχέση: ε = (r 7 + d 2 + d 9 ) + (r 6 + d 3 )α + (r 5 + d 4 )α 2 + (r 4 + d 2 + d 5 + d 9 )α 3 + (r 3 + d 3 + d 6 )α 4 + (r 2 + d 4 + d 7 )α 5 + (r 1 + d 5 + d 8 )α 6 + (r 0 + d 6 + d 9 )α 7 + (d 0 + d 7 )α 8 + (d 1 + d 8 )α 9 (5.10) Η εξίσωση 5.10 καθορίζει το συνδυαστικό τμήμα που θα οδηγεί τον καταχωρητή χρησιμοποιώντας τα 8 εισερχόμενα δυαδικά ψηφία της ληφθείσας λέξης και τα 10 δυαδικά ψηφία της προηγούμενης κατάστασής του. Οπότε, η αρχιτεκτονική υπολογισμού του S 1 του σχήματος 5.12 απλοποιείται σε μια αρχιτεκτονική δύο μονάδων, ενός συνδυαστικού κυκλώματος που πραγματοποιεί τις πράξεις XOR και τις συνδέσεις μεταξύ των εισερχόμενων ψηφίων και των ψηφίων της ανατροφοδότησης από τον καταχωρητή, και ενός απλού καταχωρητή 10 δυαδικών ψηφίων. Οι παράλληλες μονάδες υπολογισμού των συνδρόμων S 3, S 5 και S 7 σχεδιάζονται με παρόμοιο τρόπο. Στο σχήμα 5.13 παρουσιάζεται η αρχιτεκτονική που σχεδιάστηκε για το τμήμα υπολογισμού συνδρόμων του αποκωδικοποιητή BCH(728,688). Η μονάδα δέχεται στην είσοδο δεδομένων r σε κάθε κύκλο 8 δυαδικά ψηφία της λέξης που έχει ληφθεί, ενώ τις υπόλοιπες εισόδους αποτελούν τα καθολικά σήματα ρολογιού (clk) και επαναφοράς (resetn) του συστήματος, ένα σήμα ενεργοποίησης (syn_en) και ένα σήμα εσωτερικής επαναφοράς (clearn) για τις περιπτώσεις που πρέπει να μηδενιστεί η κατάσταση των καταχωρητών του συγκεκριμένου τμήματος μόνο. Έξοδοι της μονάδας είναι οι γραμμές s1,s2,..., s8, κάθε μία από τις οποίες έχει πλάτος 10 δυαδικών ψηφίων, και οι οποίες αντιστοιχούν στα σύνδρομα S 1, S 2,..., S 8.

95 Σχήμα 5.13: Δομή της μονάδας υπολογισμού συνδρόμων 81

96 82 Η αρχιτεκτονική αποτελείται από 8 συνδυαστικά κυκλώματα τα οποία περιέχουν συνδέσεις και πύλες XOR και 8 καταχωρητές των 10 δυαδικών ψηφίων για αποθήκευση των συνδρόμων. Από τα 8 συνδυαστικά κυκλώματα, τα 4 είναι κυκλώματα τετραγωνισμού αριθμητικής πεπερασμένου πεδίου GF (2 10 ), όπως αυτά που παρουσιάστηκαν στην Ενότητα 2.7. Όταν το σήμα ενεργοποίησης syn_en είναι 1, στην είσοδο υπάρχουν 8 έγκυρα δυαδικά ψηφία της λέξης που έχει ληφθεί. Αυτό το σήμα ενεργοποιεί τους καταχωρητές, οι οποίοι αποθηκεύουν τα σύνδρομα που σχηματίζονται από τα συνδυαστικά κυκλώματα συναρτήσει των εισερχόμενων ψηφίων και των προηγούμενων περιεχομένων των καταχωρητών. Όταν το σήμα ενεργοποίησης γίνει 0, πράγμα που σημαίνει ότι έχει ολοκληρωθεί η είσοδος των 728 δυαδικών ψηφίων της λέξης, οι καταχωρητές απενεργοποιούνται κρατώντας την τελευταία κατάστασή τους, η οποία αντιστοιχεί στα σύνδρομα S 1, S 2,..., S 8 που χρειάζονται για τη συνέχεια της αποκωδικοποίησης. Το τμήμα υπολογισμού των συνδρόμων δεν χρειάζεται κάποια άλλη μονάδα λογικής, καθώς η λειτουργία του εξαρτάται μόνο από το σήμα ενεργοποίησης που παράγεται από την μηχανή πεπερασμένων καταστάσεων του αποκωδικοποιητή. Οι λεπτομέρειες συγχρονισμού του τμήματος με το υπόλοιπο σύστημα θα αναλυθούν στις Παραγράφους και Από τη στιγμή που τα σύνδρομα υπολογιστούν, η αποκωδικοποίηση μπορεί να προχωρήσει στο επόμενο στάδιο, που είναι ο υπολογισμός του πολυωνύμου εντοπισμού λαθών Μονάδα υπολογισμού του πολυωνύμου εντοπισμού λαθών Η αρχιτεκτονική του τμήματος υπολογισμού του πολυωνύμου Λ(x) σχεδιάστηκε με βάση τον αλγόριθμο SiBM που αναλύθηκε στην Παράγραφο και ακολουθεί τη γενική συστολική αρχιτεκτονική του σχήματος 5.5. Ο κώδικας BCH(728,688) που χρησιμοποιείται έχει διορθωτική ικανότητα t = 4, οπότε χρησιμοποιούνται 2t = 8 επεξεργαστικά στοιχεία, 4t + 1 = 17 καταχωρητές των 10 δυαδικών ψηφίων, 4t + 1 = 17 πολυπλέκτες 2-σε-1 των 10 δυαδικών ψηφίων για την οδήγηση των καταχωρητών με τα σύνδρομα από την προηγούμενη βαθμίδα, και μια μονάδα ελέγχου που υλοποιεί τη λογική του αλγορίθμου SiBM, δηλαδή παράγει τα σήματα ελέγχου c0 και c1 και ανανεώνει την ποσότητα γ(r) βάσει της ποσότητας δ 0 (r). Η αρχιτεκτονική αυτή παρατίθεται στο σχήμα 5.14.

97 83 Σχήμα 5.14: Αρχιτεκτονική της μονάδας υπολογισμού του πολυωνύμου εντοπισμού λαθών Για να είναι πιο ευανάγνωστο το διάγραμμα παραλείπονται τα σήματα εισόδου clk, resetn, clearn, sibm_en και sibm_start της μονάδας. Από αυτά, τα σήματα clk, resetn, clearn και sibm_en είναι συνδεδεμένα σε όλα τα ακολουθιακά στοιχεία, ενώ το σήμα εκκίνησης sibm_start συνδέεται στη μονάδα ελέγχου και σε όλους τους πολυπλέκτες. Αυτό γίνεται ώστε όταν το σήμα sibm_start, που πυροδοτεί την εκκίνηση της λειτουργίας του τμήματος, γίνει 1, οι πολυπλέκτες να επιλέξουν ως είσοδο των καταχωρητών τις γραμμές των συνδρόμων που έχουν υπολογισθεί από την προηγούμενη βαθμίδα. Στον επόμενο κύκλο, το σήμα sibm_start θα ξαναγίνει 0 (το σήμα εκκίνησης κάθε μονάδας γίνεται 1 από την μηχανή πεπερασμένων καταστάσεων μόνο για έναν κύκλο, στον οποίο γίνονται οι απαραίτητες αρχικοποιήσεις της βαθμίδας) και οι καταχωρητές θα συνδεθούν με τις εισόδους και τις εξόδους των επεξεργαστικών στοιχείων, σύμφωνα με την γενική συστολική αρχιτεκτονική του σχήματος 5.5, και θα παραμείνουν συνδεδεμένοι για τους επόμενους t = 4 κύκλους που χρειάζονται για την ολοκλήρωση του επαναληπτικού αλγόριθμου SiBM.

98 84 Τα υπόλοιπα σήματα εισόδου είναι τα καθολικά σήματα ρολογιού (clk) και επαναφοράς (resetn) του αποκωδικοποιητή, και το σήμα sibm_en που είναι το σήμα ενεργοποίησης του τμήματος και παράγεται από τη μηχανή πεπερασμένων καταστάσεων. Η δομή κάθε επεξεργαστικού στοιχείου είναι αυτή που περιγράφεται στο σχήμα 5.4. Για την πράξη του πολλαπλασιασμού σε αριθμητική πεδίου GF (2 10 ) χρησιμοποιήθηκε ο πολλαπλασιαστής που παρουσιάστηκε στην Ενότητα 2.7, ο οποίος εκτελεί πολλαπλασιασμό δύο στοιχείων του πεδίου GF (2 10 ) σε έναν μόνο κύκλο. Ο αθροιστής είναι ένα απλό συνδυαστικό κύκλωμα αθροιστή XOR, ενώ χρησιμοποιείται και ένας πολυπλέκτης 3-σε-1 των 10 δυαδικών ψηφίων. Η μονάδα ελέγχου του τμήματος υπολογισμού του Λ(x) έχει σαν εισόδους το σήμα ρολογιού clk, τα σήματα επαναφοράς resetn (συστήματος) και clearn (τμήματος), το σήμα ενεργοποίησης τμήματος sibm_en, το σήμα εκκίνησης λειτουργίας τμήματος sibm_start και το σήμα delta0_in, το οποίο είναι η έξοδος του καταχωρητή delta_0 και αντιστοιχεί στην απόκλιση της προηγούμενης επανάληψης του αλγορίθμου SiBM, δηλαδή στην ποσότητα δ 0 (r). Εσωτερικά, αποτελείται από δύο καταχωρητές των 10 δυαδικών ψηφίων για αποθήκευση των ποσοτήτων γ(r) και k(r), έναν καταχωρητή ολίσθησης των 3 δυαδικών ψηφίων για παραγωγή του σήματος ελέγχου c1 και από ένα συνδυαστικό κύκλωμα που υλοποιεί τη λογική παραγωγής του σήματος ελέγχου c0 και υπολογισμού των γ(r+1) και k(r + 1) βάσει των ποσοτήτων δ 0 (r), γ(r) και k(r). Η δομή του τμήματος ελέγχου φαίνεται στο σχήμα Το συνδυαστικό τμήμα υλοποιεί τη λογική του τμήματος ελέγχου. Έχει σαν εισόδους τα σήματα delta0_in, gamma_in και kappa_in (τα οποία αντιστοιχούν στις ποσότητες δ 0 (r), γ(r) και k(r)) και το σήμα σήμα εκκίνησης sibm_start. Οι έξοδοι του συνδυαστικού τμήματος είναι τα σήματα delta0_out, gamma_out και kappa_out (τα οποία αντιστοιχούν στις ποσότητες δ 0 (r), γ(r + 1) και k(r + 1)) και το σήμα ελέγχου c0. Το σήμα delta0_out είναι συνδεδεμένο με το delta0_in και επιστρέφεται αυτούσιο για να τροφοδοτηθεί, μαζί με τα υπόλοιπα σήματα, στα επεξεργαστικά στοιχεία της αρχιτεκτονικής. Η λογική παραγωγής των υπόλοιπων σημάτων εξόδου βασίζεται στο 2ο βήμα ανανέωσης του αλγορίθμου SiBM. Πιο συγκεκριμένα: c0: Όταν το σήμα delta0_in δεν είναι 0 ( ) και το πιο σημαντικό δυαδικό ψηφίο του σήματος kappa_in είναι 0, όταν δηλαδή το σήμα kappa_in εκφράζει θετικό αριθμό σε προσημασμένη

99 85 Σχήμα 5.15: Δομή της μονάδας ελέγχου του τμήματος υπολογισμού του Λ(x) αριθμητική, το σήμα c0 παίρνει την τιμή 1. Αν κάποια από τις προηγούμενες συνθήκες δεν ισχύει, το c0 παίρνει την τιμή 0. gamma_out, kappa_out: Εάν το σήμα sibm_start είναι 1, το σήμα gamma_out παίρνει την τιμή 1 ( ) και το kappa_out την τιμή 0 ( ). Αυτό γίνεται επειδή, όπως αναφέρθηκε και προηγουμένως, όταν το σήμα sibm_start είναι 1 γίνεται η αρχικοποίηση του τμήματος. Εάν το σήμα sibm_start δεν είναι 1, ελέγχονται οι συνθήκες που αναφέρθηκαν στην περίπτωση του c0, δηλαδή αν το σήμα delta0_in δεν είναι 0 ( ) και αν το πιο σημαντικό δυαδικό ψηφίο του σήματος kappa_in είναι 0. Αν ισχύουν αυτές οι δύο συνθήκες, το gamma_out παίρνει την τιμή του σήματος εισόδου delta0_in και το kappa_out παίρνει την τιμή kappa_in σε προσημασμένη αριθμητική. Εάν, τέλος, δεν ισχύει κάποια από τις δύο παραπάνω συνθήκες, το gamma_out παίρνει την τιμή του σήματος gamma_in και το kappa_out την τιμή kappa_in+2. Για το σήμα ελέγχου c1 η λογική είναι απλούστερη. Σύμφωνα με τον αλγόριθμο SiBM, οι ποσότητες θ i (r + 1) θα πρέπει να είναι 0 για

100 86 i = 2t 2 2r k, όπου k = 0, 1. Αυτό σημαίνει πως όταν r = 0, στην 1η δηλαδή επανάληψη του αλγορίθμου, θα πρέπει θ 6 (1) = 0 και θ 5 (1) = 0. Ομοίως, στην 2η επανάληψη του αλγορίθμου θα πρέπει θ 4 (2) = 0 και θ 3 (2) = 0, και στην 3η επανάληψη θα πρέπει θ 2 (3) = 0 και θ 1 (3) = 0. Στην 4η και τελευταία επανάληψη κανονικά θα έπρεπε θ 0 (4) = 0 και θ 1 (4) = 0 αλλά ο αλγόριθμος τερματίζει χωρίς άλλη επανάληψη (άρα τα θ i (4) δε θα χρησιμοποιηθούν). Η λειτουργικότητα αυτή ρυθμίζεται με το σήμα ελέγχου c1 που οδηγεί τους 3-σε-1 πολυπλέκτες των επεξεργαστικών στοιχείων. Όπως φαίνεται στο σχήμα 5.4, όταν το σήμα c1 είναι 1, ως θ i+1 (r + 1) επιλέγεται η είσοδος 1x, η οποία είναι 0 ( ). Οπότε το σήμα c1 θα πρέπει να είναι 1 στην 1η επανάληψη για τα επεξεργαστικά στοιχεία PE4 και PE5, στη 2η επανάληψη για τα PE2 και PE3 και στην 3η για τα PE0 και PE1. Για την παραγωγή του σήματος χρησιμοποιήθηκε ένας καταχωρητής ολίσθησης σειριακής εισόδου-παράλληλης εξόδου των 3 δυαδικών ψηφίων, ο οποίος οδηγείται με το σήμα sibm_start και ενεργοποιείται με το σήμα sibm_en. Τα σήματα c1 των επεξεργαστικών στοιχείων συνδέονται ανά δύο σε κάθε δυαδικό ψηφίο της εξόδου, με αποτέλεσμα κάθε ολίσθηση του καταχωρητή να κάνει 1 το σήμα c1 στο επόμενο ζεύγος επεξεργαστικών στοιχείων, όπως φαίνεται στο σχήμα Στο σχήμα 5.17 παρατίθενται οι κυματομορφές των σημάτων του τμήματος σε μία τυχαία εκτέλεση του αλγορίθμου για τους πέντε κύκλους ρολογιού κατά τους οποίους είναι ενεργό το τμήμα υπολογισμού του Λ(x) (ένας κύκλος αρχικοποίησης και τέσσερις επαναλήψεις του αλγορίθμου SiBM). Στο τέλος αυτών των πέντε κύκλων ρολογιού οι καταχωρητές delta_0, delta_1, delta_2, delta_3 και delta_4 περιέχουν τους συντελεστές του πολυωνύμου Λ(x) και οδηγούν, μέσω των εξόδων lamda0, lamda1, lamda2, lamda3 και lamda4, την επόμενη βαθμίδα του αποκωδικοποιητή. Στις κυματομορφές φαίνεται ότι κάποια λ i γίνονται 0 κατά τη διάρκεια της εκτέλεσης του SiBM και, τελικά, μετά και την 4η επανάληψή του μόνο 5 στοιχεία μπορούν να είναι μη μηδενικά: τα λ 0 (4), λ 1 (4), λ 2 (4), λ 3 (4) και λ 4 (4). Αυτό είναι λογικό καθώς η διορθωτική ικανότητα του BCH(728,688) είναι t = 4, οπότε ο βαθμός του πολυωνύμου Λ(x) που υπολογίζεται μπορεί να είναι το πολύ 4, άρα θα έχει το πολύ 5 μη μηδενικούς συντελεστές (και, ειδικότερα, τους συντελεστές που αναφέρθηκαν πριν). Αυτό φυσικά δεν σημαίνει ότι δεν μπορούν να έχουν συμβεί περισσότερα από 4 λάθη στη λέξη που έχει ληφθεί, ωστόσο ο αλγόριθμος SiBM ψάχνει για ένα μοτίβο λαθών δηλαδή, ένα πολυώνυμο λαθών e(x)

101 87 με τους λιγότερους μη μηδενικούς συντελεστές μεταξύ όλων των πιθανών e(x) που ικανοποιούν τα σύνδρομα που υπολογίσθηκαν. Σε περίπτωση που έχουν συμβεί περισσότερα από 4 λάθη υπάρχουν διάφοροι τρόποι να αναγνωρίσει ο αποκωδικοποιητής την αποτυχία διόρθωσης όλων των λαθών συνδυάζοντας πληροφορίες από διάφορα στάδια της αποκωδικοποίησης. Αυτό το ζήτημα θα αναλυθεί στην Παράγραφο Μετά τους πέντε κύκλους εκτέλεσης του αλγορίθμου SiBM, έχει υπολογισθεί πλέον το πολυώνυμο εντοπισμού λαθών Λ(x), οι συντελεστές του οποίου διαβιβάζονται στην επόμενη βαθμίδα της αποκωδικοποίησης. Το επόμενο βήμα είναι η εύρεση των ριζών αυτού του πολυωνύμου, οι οποίες θα υποδείξουν τις θέσεις των λαθών Μονάδα έρευνας κατά Chien Η αρχιτεκτονική που σχεδιάστηκε έχει ως βάση την παράλληλη αρχιτεκτονική του σχήματος 5.8. Ο βαθμός παραλληλίας επιλέχθηκε να είναι p = 8, όπως και στα υπόλοιπα τμήματα του αποκωδικοποιητή. Αυτό έχει σαν αποτέλεσμα να χρειάζονται t 8 = 32 σταθεροί πολλαπλασιαστές πεπερασμένου πεδίου, 8 αθροιστές πεπερασμένου πεδίου, 4 πολυπλέ- Σχήμα 5.16: Χρήση καταχωρητή ολίσθησης για παραγωγή των σημάτων ελέγχου c1

102 88 clk sibm_en sibm_start c0 c c1_5 c1_4 c1_3 c1_2 c1_1 c1_0 delta_0_out 0 Λ0(0)=S0 Λ0(1) Λ0(2) Λ1(3) Λ0(4) delta_1_out 0 Λ1(0)=S1 Λ1(1) Λ1(2) Λ1(3) Λ1(4) delta_2_out 0 Λ2(0)=S2 Λ2(1) Λ2(2) Λ2(3) Λ2(4) delta_3_out 0 Λ3(0)=S3 Λ3(1) Λ3(2) Λ3(3) Λ3(4) delta_4_out 0 Λ4(0)=S4 Λ4(1) Λ4(2) Λ4(3) Λ4(4) delta_5_out 0 Λ5(0)=S5 Λ5(1) Λ5(2) Λ5(3) 0 delta_6_out 0 Λ6(0)=S6 Λ6(1) Λ6(2) 0 delta_7_out 0 0 delta_8_out state sibm_init sibm_1st sibm_2nd sibm_3rd sibm_4th Σχήμα 5.17: Κυματομορφές σημάτων του τμήματος υπολογισμού του Λ(x) κτες 2-σε-1 των 10 δυαδικών ψηφίων και 5 καταχωρητές των 10 δυαδικών ψηφίων. Ο αριθμός των καταχωρητών διαφέρει από την τιμή t που αναφέρεται στην προηγούμενη παράγραφο γιατί θεωρήθηκε σκόπιμο να υπάρχει ένας καταχωρητής στον οποίο θα αποθηκευτεί ο συντελεστής λ 0 από την προηγούμενη βαθμίδα, καθώς το στοιχείο αυτό θα πρέπει να διοχετευτεί ως είσοδος στους 8 αθροιστές πεπερασμένου πεδίου. Στο σχήμα 5.18 παρουσιάζεται η δομή της αρχιτεκτονικής που σχεδιάστηκε για τη μονάδα που υλοποιεί την έρευνα κατά Chien. Οι σταθεροί πολλαπλασιαστές που χρησιμοποιούνται σχεδιάστηκαν με την λογική που περιγράφηκε στην Ενότητα 2.7. Οι αθροιστές πεπερασμένου πεδίου είναι απλοί αθροιστές XOR 5 εισόδων. Τα σήματα εισόδου του τμήματος είναι τα καθολικά σήματα ρολογιού (clk) και επαναφοράς (resetn, clearn), το σήμα ενεργοποίησης του τμήματος, chien_en, το σήμα αρχικοποίησης του τμήματος, chien_init, και οι γραμμές δεδομένων lamda0, lamda1, lamda2, lamda3 και lamda4, όλες των 10 δυαδικών ψηφίων, οι οποίες αντιστοιχούν στους συντελεστές λ 0, λ 1, λ 2,

103 Σχήμα 5.18: Αρχιτεκτονική της μονάδας που υλοποιεί την Έρευνα κατά Chien 89

104 90 λ 3 και λ 4 του πολυωνύμου Λ(x) που υπολογίσθηκαν στην προηγούμενη βαθμίδα. Τα σήματα εξόδου του τμήματος είναι οι γραμμές δεδομένων eval0, eval1,..., eval7, οι οποίες αντιστοιχούν σε υπολογισμένες τιμές του πολυωνύμου για κάποιο στοιχείο α i.η λειτουργία της αρχιτεκτονικής βάσει αυτών των σημάτων είναι απλή: 1. Στον πρώτο κύκλο κατά τον οποίο το σήμα ενεργοποίησης chien_en είναι 1, το σήμα αρχικοποίησης chien_init είναι επίσης 1, με αποτέλεσμα στους καταχωρητές να αποθηκευτούν οι τιμές των γραμμών lamda0, lamda1, lamda2, lamda3 και lamda4. 2. Στους επόμενους κύκλους, και μέχρι την ολοκλήρωση της μεθόδου Chien, το σήμα chien_en παραμένει 1 και το chien_init είναι 0, με αποτέλεσμα οι καταχωρητές να συνδέονται με την έξοδο των πολλαπλασιαστών του 1ου επιπέδου. 3. Όταν ολοκληρωθεί η μέθοδος Chien, το σήμα chien_en γίνεται 0 και τα περιεχόμενα των καταχωρητών δεν επηρεάζονται από τις αναδράσεις των πολλαπλασιαστών. Να σημειωθεί εδώ ότι η μέθοδος Chien θα πρέπει να εκτελεστεί για 128 κύκλους και όχι μόνο για 91, όπως το τμήμα υπολογισμού των συνδρόμων. Αυτό συμβαίνει επειδή ο κώδικας BCH(728,688) είναι συντετμημένη (shortened) μορφή του κώδικα BCH(1023,983). Στον υπολογισμό των συνδρόμων εάν μετά τα 91 byte της λέξης ακολουθούσαν άλλα 35 μηδενικά byte το αποτέλεσμα θα ήταν τα ίδια ακριβώς σύνδρομα που είχαν υπολογισθεί μετά την είσοδο του 91ου byte. Όμως στη μονάδα της έρευνας κατά Chien τα πράγματα είναι διαφορετικά λόγω του ότι οι θέσεις των λαθών είναι οι δυνάμεις των αντίστροφων των ριζών που θα βρεθούν. Εάν η λέξη που έχει ληφθεί αντιστοιχεί στο πολυώνυμο r(x) = r 0 + r 1 x + r 2 x r 727 x 727, ένα λάθος στο ψηφίο r 0 θα ανιχνευθεί από τη μέθοδο Chien όταν υπολογισθεί η τιμή του Λ(x) για το αντίστροφο του στοιχείου α 0 = 1, δηλαδή για το α 1022, και βρεθεί Λ(α 1022 ) = 0. Εάν η μέθοδος Chien σταματούσε στις 91 επαναλήψεις (δηλαδή στα πρώτα 728 στοιχεία του πεδίου GF (2 10 )), το Λ(x) θα υπολογιζόταν μέχρι και για το στοιχείο α 727, που σημαίνει ότι θα μπορούσε να ανιχνεύσει λάθη στα ψηφία r 727, r 726,..., r 295 αλλά δεν θα μπορούσε να ανιχνεύσει πιθανά λάθη στα ψηφία r 294, r 293,..., r 0. Αυτό σημαίνει πως η μέθοδος Chien θα πρέπει να εκτελεστεί για 128 κύκλους (η αντίστοιχη

105 91 i Λ(α pi ) Λ(α 0 ) r 1022 Λ(α 288 ) r 734 Λ(α 296 ) r 726 Λ(α 1008 ) r 14 Λ(α 1016 ) r 6 Λ(α pi+1 ) Λ(α 1 ) r 1021 Λ(α 289 ) r 733 Λ(α 297 ) r 725 Λ(α 1009 ) r 13 Λ(α 1017 ) r 5 Λ(α pi+2 ) Λ(α 2 ) r 1020 Λ(α 290 ) r 732 Λ(α 298 ) r 724 Λ(α 1010 ) r 12 Λ(α 1018 ) r 4 Λ(α pi+3 ) Λ(α 3 ) r 1019 Λ(α 291 ) r 731 Λ(α 299 ) r 723 Λ(α 1011 ) r 11 Λ(α 1019 ) r 3 Λ(α pi+4 ) Λ(α 4 ) r 1018 Λ(α 292 ) r 730 Λ(α 300 ) r 722 Λ(α 1012 ) r 10 Λ(α 1020 ) r 2 Λ(α pi+5 ) Λ(α 5 ) r 1017 Λ(α 293 ) r 729 Λ(α 301 ) r 721 Λ(α 1013 ) r 9 Λ(α 1021 ) r 1 Λ(α pi+6 ) Λ(α 6 ) r 1016 Λ(α 294 ) r 728 Λ(α 302 ) r 720 Λ(α 1014 ) r 8 Λ(α 1022 ) r 0 Λ(α pi+7 ) Λ(α 7 ) r 1015 Λ(α 295 ) r 727 Λ(α 303 ) r 719 Λ(α 1015 ) r 7 Λ(α 1023 ) Πίνακας 5.1: Αντιστοιχία υπολογισμένων τιμών του Λ(x) και πιθανών θέσεων λαθών σειριακή αρχιτεκτονική του σχήματος 5.6 για 1023 κύκλους), ενώ οι τιμές που θα υπολογιστούν στις πρώτες 36 επαναλήψεις (i = 0, 1,..., 35) δεν αντιστοιχούν σε δυαδικά ψηφία της λέξης (αντιστοιχούν στα ψηφία r 1022, r 1021,..., r 735 τα οποία είναι μηδενικά λόγω του shortening). Στην 37η επανάληψη (i = 36) θα υπολογισθεί η πρώτη τιμή που αντιστοιχεί σε ψηφίο της ληφθείσας λέξης, δηλαδή η ποσότητα Λ(α 295 ) που αντιστοιχεί στο ψηφίο r 727. Από την 37η (i = 36) μέχρι και την 128η (i = 127) επανάληψη θα έχουν υπολογιστεί οι τιμές που αντιστοιχούν στα υπόλοιπα δυαδικά ψηφία του r(x), δηλαδή στα ψηφία r 726 έως r 0. Στον Πίνακα 5.1 φαίνεται η αντιστοιχία των ποσοτήτων που υπολογίζονται σε κάθε επανάληψη και των δυαδικών ψηφίων που αυτές αφορούν. Τα κελιά με σκίαση περιέχουν υπολογισμούς που δεν αντιστοιχούν σε δυαδικά ψηφία της λέξης που έχει ληφθεί λόγω του shortening. Οι τιμές του Λ(x) που υπολογίζονται για τα διάφορα α i υποδεικνύουν τις θέσεις των λαθών. Η επόμενη παράγραφος μελετά τη διαδικασία της διόρθωσης των λαθών με βάση αυτήν την πληροφορία και τη λέξη που έχει ληφθεί Διόρθωση λαθών Στην περίπτωση που μελετάται θα πρέπει να σχεδιαστεί μια παράλληλη μονάδα διόρθωσης των λαθών η οποία, σε αντιστοιχία με το υπόλοιπο σύστημα, θα πρέπει σε κάθε κύκλο να διορθώνει 8 δυαδικά ψηφία (1 byte) της λέξης που έχει ληφθεί. Πιο συγκεκριμένα, θα πρέπει να διαβάζει 8 δυαδικά ψηφία από την εσωτερική μνήμη τα οποία θα κάνει XOR με τις 8 εξόδους της παράλληλης μονάδας της έρευνας κατά Chien. Οπότε, σε πρώτη ανάγνωση, αυτή η παράλληλη μονάδα θα πρέπει να περιέχει 8 πύλες XOR που θα οδηγούνται από τη μία είσοδο με τα

106 92 8 δυαδικά ψηφία που διαβάζονται από την μνήμη. Η άλλη είσοδος των πυλών XOR θα πρέπει να είναι 1 αν η αντίστοιχη έξοδος της μονάδας Chien των 10 δυαδικών ψηφίων είναι 0 ( ) και 0 σε κάθε άλλη περίπτωση. Οπότε, εσωτερικά, από τα 10 δυαδικά ψηφία κάθε εισόδου eval0, eval1,..., eval7 θα πρέπει να παράγεται ένα σήμα ένδειξης zero_flag, το οποίο στη συνέχεια θα γίνεται XOR με το αντίστοιχο δυαδικό ψηφίο από τα 8 που διαβάζονται από την μνήμη. Μια σχηματική αναπαράσταση αυτής της λογικής παρατίθεται στο σχήμα Η σχεδίαση μιας παράλληλης μονάδας διόρθωσης των λαθών η οποία θα δέχεται την έξοδο της παράλληλης μονάδας έρευνας κατά Chien βασίστηκε στον Πίνακα 5.1 ώστε να βρεθεί η αντιστοιχία μεταξύ των δυαδικών ψηφίων της ληφθείσας λέξης και των εξόδων της παράλληλης αρχιτεκτονικής Chien που πρέπει να οδηγούν κάθε πύλη XOR. Λόγω του shortening κατά 295, αριθμός που δεν είναι ακριβές πολλαπλάσιο του 8, σε αυτό το σημείο προέκυψε μια αναντιστοιχία στα δυαδικά ψηφία που διαβάζονται ανά 8 από την μνήμη FIFO και στις τιμές που υπολογίζονται. Πιο συγκεκριμένα, στον Πίνακα 5.1, όταν i = 37 υπολογίζονται οι τιμές του Λ(x) που αντιστοιχούν στα δυαδικά ψηφία r 726 έως r 719. Όμως το πρώτο byte που θα διαβαστεί από τη μνήμη θα αποτελείται από τα δυαδικά ψηφία r 727 έως r 720. Για το ψηφίο r 727 απαιτείται, όπως φαίνεται και στον Πίνακα 5.1, η υπολογισμένη τιμή του Λ(x) από τον προηγούμενο κύκλο, Λ(α 295 ). Η λύση που υιοθετήθηκε σε αυτό το σημείο ήταν η προσθήκη ενός καταχωρητή στην αρχιτεκτονική του σχήματος 5.19 ο οποίος θα κρατά την τιμή του σήματος zero_flag του υπολογισμού από τον προηγούμενο κύκλο ώστε να εφαρμοστεί στην πύλη XOR όταν διαβαστεί το αντίστοιχο δυαδικό ψηφίο. Η τελική αρχιτεκτονική του τμήματος διόρθωσης λαθών παρουσιάζεται στο σχήμα Μονάδα ανίχνευσης ύπαρξης λαθών Η μονάδα ανίχνευσης ύπαρξης λαθών δέχεται στην είσοδο τις γραμμές s1, s2,..., s8, 10 δυαδικών ψηφίων η κάθε μία, οι οποίες είναι έξοδοι της μονάδας SYNDROME GENERATOR και αντιστοιχούν στα 8 σύνδρομα που υπολογίζονται για τη λέξη που πρέπει να αποκωδικοποιηθεί. Η μονάδα ελέγχει τα σύνδρομα και εάν είναι όλα μηδενικά η έξοδός της, zero_flag, έχει την τιμή 0. Εάν έστω και ένα σύνδρομο είναι διάφορο του μηδενός, η έξοδος της μονάδας έχει την τιμή 1. Αυτή η πληροφο-

107 93 Σχήμα 5.19: Γενικό κύκλωμα για διόρθωση λαθών σε παράλληλη αρχιτεκτονική Σχήμα 5.20: Δομή παράλληλης μονάδας διόρθωσης λαθών

108 94 ρία χρησιμοποιείται από την FSM του συστήματος για την περίπτωση που η ληφθείσα λέξη δεν έχει λάθη, οπότε και πρέπει να παρακαμφθεί η υπόλοιπη διαδικασία της αποκωδικοποίησης Μονάδα ανίχνευσης αποτυχίας αποκωδικοποίησης Η μονάδα που ανιχνεύει εάν υπήρξε αποτυχία στην διαδικασία αποκωδικοποίησης είναι η μονάδα FAILURE DETECTOR. Αποτυχία αποκωδικοποίησης μπορεί να διαπιστωθεί στις εξής περιπτώσεις: Οι ρίζες που βρίσκει η έρευνα κατά Chien για το πολυώνυμο Λ(x) είναι λιγότερες από τους μη μηδενικούς συντελεστές του. Τα σύνδρομα είναι μη μηδενικά αλλά η έρευνα κατά Chien στο πολυώνυμο Λ(x) δε βρίσκει καμία ρίζα. Ο συντελεστής λ 0 του πολυωνύμου Λ(x) είναι 0. Οι πρώτες δύο περιπτώσεις είναι ισοδύναμες καθώς και στην δεύτερη περίπτωση οι ρίζες είναι λιγότερες από τους μη μηδενικούς συντελεστές του Λ(x). Το κύκλωμα που σχεδιάστηκε για υλοποίηση της συγκεκριμένης λειτουργικότητας παρατίθεται στο σχήμα Το συνδυαστικό κύκλωμα ZCOUNT βγάζει στην έξοδό του το πλήθος των εισόδων που είναι μηδενικές και το συνδυαστικό κύκλωμα NZCOUNT βγάζει στην έξοδό του το πλήθος των εισόδων που δεν είναι μηδενικές. Οι τιμές αυτές αποθηκεύονται στους καταχωρητές ROOTS REG και COEFFS REG αντίστοιχα. Ο καταχωρητής COEFFS REG ενεργοποιείται με το σήμα coef_cnt_en μόνο για έναν κύκλο, ακριβώς μετά την ολοκλήρωση του αλγορίθμου SiBM, όταν δηλαδή έχει υπολογισθεί το πολυώνυμο Λ(x). Ο καταχωρητής ROOTS REG ενεργοποιείται με το σήμα coef_cnt_en, το οποίο μένει ενεργό ( 1 ) από την FSM όσο εκτελείται η έρευνα κατά Chien. Σε κάθε κύκλο μετρά πόσες από τις εισόδους είναι μηδενικές, αφού μια μηδενική τιμή σε κάποιο από τα σήματα eval0 έως eval7 αντιστοιχεί σε εύρεση ρίζας του πολυωνύμου Λ(x), και για όσους κύκλους εκτελείται η έρευνα κατά Chien συσσωρεύει στον καταχωρητή ROOTS REG το πλήθος των μηδενικών στοιχείων που έχουν εμφανιστεί στις εισόδους του. Το συνδυαστικό κύκλωμα NCOMPARATOR είναι ένας συγκριτής αρνητικής λογικής, ο οποίος ελέγχει τις δύο εισόδους και εάν είναι ίσες η έξοδός του έχει την τιμή 0. Εάν είναι διαφορετικές, η έξοδός του έχει την τιμή 1.

109 95 Σχήμα 5.21: Μονάδα ανίχνευσης αποτυχίας της διαδικασίας αποκωδικοποίησης Η πύλη OR παίρνει στη μία είσοδο την έξοδο του συγκριτή και στην άλλη είσοδο το σήμα lamda0_zflag που είναι 1 όταν το lamda0 είναι μηδενικό. Έτσι ελέγχεται και η τρίτη από τις παραπάνω περιπτώσεις. Τέλος, ο καταχωρητής FAILURE FLAG καταγράφει την έξοδο της πύλης OR όταν το σήμα ενεργοποίησης fail_check είναι 1, κάτι που γίνεται μόνο όταν ολοκληρωθεί η έρευνα κατά Chien οπότε το άθροισμα των ριζών που έχουν μετρηθεί είναι το τελικό. Υπενθυμίζεται ότι τα σήματα ενεργοποίησης παράγονται όλα από την μηχανή πεπερασμένων καταστάσεων του συστήματος Λειτουργία μηχανής πεπερασμένων καταστάσεων Η μονάδα CONTROLLER είναι η μηχανή πεπερασμένων καταστάσεων (FSM) του αποκωδικοποιητή. Συνδέεται με όλα τα επιμέρους υποσυστήματα και παράγει όλα τα απαραίτητα εσωτερικά σήματα ελέγχου καθώς και κάποια από τα σήματα εξόδου του αποκωδικοποιητή. Πιο συγκεκριμένα, η FSM δέχεται ως εισόδους τα καθολικά σήματα ρολογιού (clk), επαναφοράς (resetn) και ενεργοποίησης (en), το σήμα εκκίνησης λειτουργίας start, το σήμα ένδειξης ύπαρξης λαθών error_flag, καθώς και το σήμα fifo_empty που είναι 1 όταν η εσωτερική μνήμη FIFO δεν περιέχει στοι-

110 96 χεία. Οι έξοδοι της FSM είναι τα εξής σήματα: clearn fifo_wr_en fifo_rd_en syn_en sibm_en sibm_init chien_en chien_init Εσωτερικό σήμα επαναφοράς για τις περιπτώσεις που πρέπει να μηδενιστούν τα περιεχόμενα των ακολουθιακών στοιχείων του αποκωδικοποιητή. Σήμα ενεργοποίησης εγγραφής στην εσωτερική μνήμη FIFO. Σήμα ενεργοποίησης ανάγνωσης από την εσωτερική μνήμη FIFO. Σήμα ενεργοποίησης τους υποσυστήματος υπολογισμού συνδρόμων (μονάδα SYNDROME GENERATOR). Σήμα ενεργοποίησης τους υποσυστήματος υπολογισμού του πολυωνύμου εντοπισμού λαθών (μονάδα SIBM KEY EQUATION SOLVER). Σήμα αρχικοποίησης τους υποσυστήματος υπολογισμού του πολυωνύμου εντοπισμού λαθών (μονάδα SIBM KEY EQUATION SOLVER). Σήμα ενεργοποίησης τους υποσυστήματος έρευνας κατά Chien (μονάδα CHIEN SEARCH). Σήμα αρχικοποίησης τους υποσυστήματος έρευνας κατά Chien (μονάδα CHIEN SEARCH). root_cnt_en Σήμα ενεργοποίησης του καταχωρητή που κρατά το πλήθος των ριζών που έχουν βρεθεί από την έρευνα κατά Chien (εσωτερικός καταχωρητής της μονάδας FAILURE DETECTOR). coef_cnt_en Σήμα ενεργοποίησης του καταχωρητή που αποθηκεύει το πλήθος των μη μηδενικών συντελεστών του πολυωνύμου εντοπισμού λαθών που έχει υπολογισθεί (εσωτερικός καταχωρητής της μονάδας FAILURE DETECTOR). fail_check Ενεργοποίηση του καταχωρητή που αποθηκεύει και οδηγεί στην έξοδο το σήμα failure (εσωτερικός καταχωρητής της μονάδας FAILURE DETECTOR).

111 97 mux_sel data_valid finished Σήμα επιλογής του πολυπλέκτη 2-σε-1 που οδηγεί τον καταχωρητή εξόδου DOUT REG. Χρησιμοποιείται στην περίπτωση που από τον υπολογισμό των συνδρόμων προκύπτει ότι στη ληφθείσα λέξη δεν έχουν συμβεί λάθη, οπότε τα περιεχόμενα της FIFO οδηγούνται στην έξοδο χωρίς να συνεχιστεί η διαδικασίας αποκωδικοποίησης (παράκαμψη αποκωδικοποίησης λειτουργία bypass). Σήμα που υποδεικνύει την ύπαρξη έγκυρων δεδομένων στην έξοδο data_out (αποτελεί κύρια έξοδο του αποκωδικοποιητή). Σήμα ολοκλήρωσης αποκωδικοποίησης (αποτελεί κύρια έξοδο του αποκωδικοποιητή). Γίνεται 1 για έναν κύκλο αφού το data_valid από 1 γίνει 0. Στο σχήμα 5.22 παρατίθεται το διάγραμμα καταστάσεων της FSM. Αποτελείται από 15 καταστάσεις, από τις οποίες 4 υλοποιούν την διαδικασία υπολογισμού συνδρόμων, μία υλοποιεί την εκτέλεση του αλγορίθμου SiBM για υπολογισμό του πολυωνύμου Λ(x), 6 υλοποιούν τις διάφορες φάσεις της έρευνας κατά Chien (καθώς, λόγω του ζητήματος του shortening που αναφέρθηκε στην Παράγραφο 5.2.5, οι πρώτοι 36 κύκλοι εκτέλεσης της μεθόδου Chien δεν επιδρούν στα byte της λέξης που έχει ληφθεί), 2 καταστάσεις υλοποιούν την λειτουργία παράκαμψης σε περίπτωση που δεν ανιχνευθούν λάθη στο μήνυμα εισόδου και άλλες 2 καταστάσεις αντιστοιχούν στην κατάσταση αδράνειας και τερματισμού της αποκωδικοποίησης. Η FSM διατηρεί επίσης εσωτερικά τους μετρητές syn_cnt, bypass_cnt, sibm_cnt και chien_cnt για να μετρά τους κύκλους ρολογιού για τους οποίους εκτελούνται τα υποσυστήματα υπολογισμού συνδρόμων, παράκαμψης αποκωδικοποίησης, εκτέλεσης του αλγορίθμου SiBM και έρευνας κατά Chien αντίστοιχα. Πιο συγκεκριμένα, οι μετρητές αυτοί καθορίζουν τον κύκλο ρολογιού κατά τον οποίο το σύστημα πρέπει να εξέλθει από τις επαναληπτικές καταστάσεις SYN_GEN, BYPASS, SIBM, CHIEN_NOP και CHIEN_RD. H FSM αλλάζει κατάσταση σε κάθε θετική ακμή του ρολογιού, ενώ οι έξοδοι είναι χρονισμένες και αλλάζουν επίσης σε κάθε θετική ακμή του ρολογιού. Αποτέλεσμα είναι τα σήματα να είναι διαθέσιμα έναν κύκλο μετά, αλλά και να μην υπάρχουν ανεπιθύμητες διακυμάνσεις (spikes ή

112 98 Σχήμα 5.22: Μηχανή πεπερασμένων καταστάσεων (FSM) του αποκωδικοποιητή

113 99 glitches) στα σήματα ελέγχου, αφού όλα οδηγούνται από καταχωρητές. Στο σχεδιασμό του συστήματος έχει ληφθεί υπόψη αυτό, με αποτέλεσμα να έχουν χρειαστεί κάποιες επιπλέον καταστάσεις για αρχικοποίηση, αλλά και να είναι πιο σταθερό το σύστημα. Τα ονόματα των καταστάσεων είναι ενδεικτικά της λειτουργίας τους. Πιο συγκεκριμένα: IDLE SYN_INIT SYN_GEN Αρχική κατάσταση και κατάσταση αδράνειας του συστήματος, δηλαδή η κατάσταση στην οποία παραμένει το σύστημα εάν το εξωτερικό σήμα επαναφοράς resetn είναι ενεργό ( 0 active low) ή αν το εξωτερικό σήμα ενεργοποίησης en είναι ανενεργό ( 0 ). Επίσης, στην κατάσταση αυτή παραμένει το σύστημα ακόμα και αν το σήμα en είναι ενεργό μέχρι να γίνει ενεργό ( 1 ) το εξωτερικό σήμα εκκίνησης λειτουργίας start. Το σύστημα μεταβαίνει στην κατάσταση SYN_INIT όταν το σήμα start γίνει 1 ενώ βρίσκεται στην κατάσταση IDLE. Η κατάσταση αυτή προετοιμάζει το υποσύστημα των συνδρόμων να δεχθεί τα δεδομένα του μηνύματος που πρέπει να αποκωδικοποιηθεί και να αρχίσει να σχηματίζει τα σύνδρομα. Πιο συγκεκριμένα, γίνεται ενεργό το σήμα syn_en που είναι συνδεδεμένο με τους καταχωρητές στους οποίους αποθηκεύονται τα σύνδρομα, ώστε στον επόμενο κύκλο να μπορούν να αποθηκεύσουν τις τιμές από το πρώτο byte του μηνύματος. Επίσης, το σήμα fifo_wr_en γίνεται 1 ώστε τα εισερχόμενα byte να εγγράφονται στην εσωτερική μνήμη FIFO. Επαναληπτική κατάσταση στην οποία το υποσύστημα υπολογισμού συνδρόμων διαβάζει τα εισερχόμενα byte του μηνύματος και σχηματίζει τα 8 σύνδρομα. Σε κάθε κύκλο αυξάνεται ο μετρητής syn_cnt, ενώ τα σήματα syn_en και fifo_wr_en (εφόσον εισάγονται τα byte του μηνύματος) παραμένουν 1 καθ όλη τη διάρκεια της παραμονής σε αυτή την κατάσταση. Το σύστημα παραμένει σε αυτή την κατάσταση όσο ο μετρητής syn_cnt έχει τιμή μικρότερη από 89 ( ), ώστε,

114 100 μαζί με την επόμενη κατάσταση, το υποσύστημα υπολογισμού συνδρόμων να εκτελεστεί για 91 κύκλους (ο μετρητής ξεκινά από το 0). SYN_LAST SYN_CHECK Το σύστημα βρίσκεται σε αυτή την κατάσταση κατά τον τελευταίο κύκλο εκτέλεσης του τμήματος υπολογισμού συνδρόμων. Σε αυτόν τον κύκλο εισάγεται το τελευταίο byte του μηνύματος εισόδου, πράγμα που σημαίνει ότι στον επόμενο κύκλο στους καταχωρητές του υποσυστήματος υπολογισμού συνδρόμων θα είναι αποθηκευμένα τα τελικά σύνδρομα για το μήνυμα. Για το λόγο αυτό, από τον επόμενο κύκλο και μετά θα πρέπει οι καταχωρητές να διατηρήσουν την κατάστασή τους, οπότε το σήμα syn_en γίνεται 0 και στον επόμενο κύκλο το τμήμα υπολογισμού συνδρόμων θα είναι ανενεργό. Επίσης, εφόσον στον επόμενο κύκλο στην είσοδο δε θα υπάρχουν έγκυρα δεδομένα, δηλαδή κάποιο byte του μηνύματος, το σήμα fifo_wr_en γίνεται 0 ώστε να μην γραφτεί στην εσωτερική μνήμη FIFO το byte που θα υπάρχει στην είσοδο data_in¹. Στην κατάσταση αυτή ελέγχεται το σήμα error_flag που παράγει η μονάδα ERROR DETECTOR ώστε να εξακριβωθεί εάν υπάρχουν λάθη ή όχι στο μήνυμα (όπως έχει αναφερθεί προηγουμένως, το σήμα error_flag είναι 0 όταν όλα τα σύνδρομα είναι μηδενικά και 1 διαφορετικά). Εάν το σήμα error_flag είναι 0, η επόμενη κατάσταση του συστήματος θα είναι η BYPASS_INIT. Εάν το σήμα error_flag είναι 1, δηλαδή τα σύνδρομα δεν είναι μηδενικά, επόμενη κατάσταση θα είναι η SIBM ώστε να συνεχιστεί η διαδικασία αποκωδικοποίησης. Στην παρούσα κατάσταση ενεργοποιούνται τα σήματα sibm_en και sibm_init ώστε, στην περίπτωση που επόμενη κατάσταση θα είναι η SIBM, οι καταχωρητές του ¹Για την υλοποίηση του αποκωδικοποιητή ως περιφερειακού σε ενσωματωμένο σύστημα, κατέστη απαραίτητο το σήμα fifo_wr_en να παραμείνει 1 και για αυτόν τον κύκλο, ώστε να γραφτεί ένα μηδενικό byte μετά τα 91 byte του εισερχόμενου μηνύματος. Οι λόγοι για αυτή την επιλογή έχουν να κάνουν με την χρήση μνημών FIFO με ασύμμετρο λόγο πλάτους εισόδου και πλάτους εξόδου. Αυτό το ζήτημα θα αναλυθεί στο Κεφάλαιο 6.

115 101 τμήματος αυτού να είναι ενεργοί και να αρχικοποιηθούν στις τιμές των συνδρόμων. BYPASS_INIT Εάν στην προηγούμενη κατάσταση το σήμα error_flag ήταν 0, το σύστημα μεταβαίνει σε λειτουργία παράκαμψης, όπου τα περιεχόμενα της εσωτερικής μνήμης FIFO μεταβιβάζονται απευθείας στην έξοδο. Η κατάσταση BYPASS_INIT είναι μια κατάσταση προετοιμασίας, η οποία κάνει το σήμα fifo_rd_en ενεργό ( 1 ) ώστε στον επόμενο κύκλο να υπάρχει στην έξοδό της μνήμης FIFO το πρώτο byte του μηνύματος. Επίσης, το σήμα επιλογής του πολυπλέκτη που οδηγεί τον καταχωρητή εξόδου DOUT REG γίνεται 1 ώστε να επιλέγεται ως είσοδός του απευθείας η έξοδος της μνήμης FIFO και όχι η έξοδος του υποσυστήματος διόρθωσης λαθών. Τέλος, επειδή το byte που στον επόμενο κύκλο θα είναι στην έξοδο της μνήμης FIFO θα καθυστερήσει άλλον έναν κύκλο μέχρι να εμφανιστεί στην έξοδο (λόγω της επιπλέον καθυστέρησης του καταχωρητή εξόδου DOUT REG), το σήμα data_valid παραμένει 0 και θα γίνει ενεργό στην επόμενη κατάσταση. BYPASS SIBM Επαναληπτική κατάσταση που υλοποιεί τη λειτουργία παράκαμψης της υπόλοιπης διαδικασίας αποκωδικοποίησης. Το σύστημα παραμένει σε αυτή την κατάσταση έως ότου ο μετρητής bypass_cnt πάρει την τιμή 91 ( ), κάτι που θα σημαίνει ότι διαβάστηκαν από την μνήμη FIFO όλα τα byte του μηνύματος που έχει ληφθεί. Κατά την παραμονή στην παρούσα κατάσταση τα σήματα fifo_rd_en, data_valid και mux_sel παραμένουν ενεργά. Εάν στην κατάσταση SYN_CHECK το σήμα error_flag είχε την τιμή 1, το σύστημα θα μεταβεί στην επαναληπτική κατάσταση SIBM η οποία υλοποιεί τους 4 κύκλους εκτέλεσης του αλγορίθμου SiBM για υπολογισμό του πολυωνύμου εντοπισμού λαθών. Οι καταχωρητές του τμήματος έχουν αρχικοποιηθεί από την κατάσταση SYN_CHECK με τις τιμές των συνδρόμων,

116 102 οπότε στην κατάσταση αυτή το σήμα sibm_init είναι ανενεργό ( 0 ), ενώ το sibm_en παραμένει ενεργό ώστε οι καταχωρητές να ανανεώνουν τις τιμές του σε κάθε κύκλο. Παράλληλα, γίνεται ενεργό το σήμα chien_init ώστε οι καταχωρητές της μονάδας που εκτελεί την έρευνα κατά Chien να είναι συνδεδεμένοι με τις εξόδους του υποσυστήματος υπολογισμού του πολυωνύμου Λ(x). Σε κάθε κύκλο που το σύστημα παραμένει στην κατάσταση αυτή ο μετρητής sibm_cnt αυξάνεται, και όταν γίνει 3 ( 11 ), έχουν γίνει δηλαδή 4 επαναλήψεις ( 00, 01, 10, 11 ) του αλγορίθμου SiBM, το σύστημα εξέρχεται από την κατάσταση SIBM και μεταβαίνει στην κατάσταση CHIEN_LOAD. CHIEN_LOAD Σε αυτή την κατάσταση το σήμα sibm_en του προηγούμενου τμήματος γίνεται 0, ενώ τα σήματα chien_init και chien_en είναι ενεργά ( 1 ), καθώς ενεργοποιείται το υποσύστημα έρευνας κατά Chien. Επίσης, ενεργοποιείται το σήμα coef_cnt_en ώστε να γίνει υπολογισμός των μη μηδενικών συντελεστών του πολυωνύμου Λ(x), το οποίο έχει πλέον υπολογισθεί. CHIEN_NOP Επαναληπτική κατάσταση που υλοποιεί την έρευνα κατά Chien για τους πρώτους 36 κύκλους που δεν αντιστοιχούν σε δυαδικά ψηφία του μηνύματος που έχει ληφθεί αλλά στο κομμάτι του κώδικα που έχει γίνει shortened (το ζήτημα αυτό αναλύθηκε στην Παράγραφο 5.2.5). Κατά την παραμονή σε αυτή την κατάσταση δε γίνεται καμία ενέργεια πάνω στα δεδομένα που έχουν ληφθεί, οπότε το σήμα ενεργοποίησης ανάγνωσης της FIFO fifo_rd_en είναι 0. Ωστόσο το σήμα chien_en παραμένει 1 αφού, προφανώς, θα πρέπει να υπολογιστούν και οι τιμές για το κομμάτι του κώδικα που έχει γίνει shortened. Παράλληλα, γίνεται ενεργό το σήμα root_cnt_en ώστε η μονάδα FAILURE_DETECTOR να ανανεώνει το πλήθος των ριζών που βρίσκει η έρευνα κατά Chien (ακόμα και αν οι πρώτοι 36 κύκλοι δεν αντιστοιχούν σε δυαδικά ψηφία του μηνύματος, η εύρεση μιας ρίζας σε αυτό το τμήμα του κώδικα θα

117 103 υποδεικνύει αποτυχία στη διαδικασία αποκωδικοποίησης). Το σύστημα εξέρχεται από την παρούσα κατάσταση όταν ο μετρητής chien_cnt γίνει 34 ( ), κάτι που θα σημαίνει ότι η έρευνα κατά Chien έχει εκτελεστεί για 35 κύκλους. CHIEN_RDIN Το σύστημα μεταβαίνει στην κατάσταση CHIEN_RDIN όταν η έρευνα κατά Chien έχει εκτελεστεί για 35 κύκλους. Οπότε, αυτή η κατάσταση αντιστοιχεί στον 36ο κύκλο εκτέλεσης της μεθόδου Chien. Αυτό σημαίνει ότι οι τιμές που θα υπολογίζει η έρευνα κατά Chien από τον επόμενο κύκλο και έπειτα, θα αντιστοιχούν σε δυαδικά ψηφία του μηνύματος που έχει ληφθεί, οπότε αυτά θα πρέπει να διαβαστούν από την μνήμη FIFO και να μεταβιβαστούν στη μονάδα ERROR CORRECTION που θα κάνει τη διόρθωση των λαθών βάσει των τιμών που θα υπολογίζει η μονάδα CHIEN SEARCH. Για το λόγο αυτό, ενεργοποιείται το σήμα ανάγνωσης της FIFO, fifo_rd_en, ενώ παραμένουν ενεργά τα σήματα chien_en και root_cnt_en. Σημειώνεται ότι επειδή, όπως αναφέρθηκε και στην κατάσταση BYPASS_INIT, η έξοδος καθυστερεί έναν κύκλο λόγω του καταχωρητή εξόδου, το σήμα data_valid δε γίνεται ακόμα 1, κάτι που θα γίνει στην επόμενη κατάσταση. CHIEN_VALID Δεν αλλάζει κάτι στα σήματα ελέγχου, απλά εισάγεται ένας παραπάνω κύκλος μέχρι να είναι έγκυρα τα δεδομένα στην έξοδο (χρειάζεται ένας κύκλος από την ενεργοποίηση του σήματος fifo_rd_en μέχρι να είναι διαθέσιμα τα δεδομένα στην έξοδο της μνήμης FIFO και άλλος ένας κύκλος για να εμφανιστεί η τιμή από την έξοδο της μονάδας διόρθωσης λαθών στην έξοδο data_out, λόγω της ύπαρξης του καταχωρητή εξόδου). Στον επόμενο κύκλο το σύστημα μεταβαίνει στην κατάσταση CHIEN_RD. CHIEN_RD Επαναληπτική κατάσταση που υλοποιεί το κομμάτι της έρευνας κατά Chien το οποίο αντιστοιχεί σε δυαδικά ψηφία του μηνύματος που έχει ληφθεί. Η κατά-

118 104 σταση αυτή αναλαμβάνει τον συγχρονισμό των μονάδων έρευνας κατά Chien και διόρθωσης λαθών, καθώς η πρώτη τροφοδοτεί τη δεύτερη με τις υπολογισμένες τιμές που εκείνη χρειάζεται για εντοπισμό των θέσεων των λαθών. Πλέον το σήμα data_valid γίνεται ενεργό, που σημαίνει ότι τα δεδομένα που θα υπάρχουν στην έξοδο data_out θα θεωρούνται έγκυρα (μέρος του αποκωδικοιημένου μηνύματος) από τον επόμενο κύκλο και μετά. Το σύστημα παραμένει στην παρούσα κατάσταση έως ότου ο μετρητής chien_cnt πάρει την τιμή 127 ( ), που θα σημαίνει ότι η έρευνα Chien έχει φτάσει στο τέλος της, και το σύστημα θα πρέπει να μεταβεί στην κατάσταση CHIEN_FN. CHIEN_FN FINISH Το σύστημα εισέρχεται στην κατάσταση CHIEN_FN τον τελευταίο κύκλο εκτέλεσης της έρευνας κατά Chien. Κατά την είσοδο στην κατάσταση αυτή το σήμα ανάγνωσης της FIFO γίνεται 0 (καθώς σε αυτόν τον κύκλο διαβάστηκε το τελευταίο byte του μηνύματος), ενώ 0 γίνεται και το σήμα ενεργοποίησης του υποσυστήματος της έρευνας κατά Chien, ώστε από τον επόμενο κύκλο να είναι ανενεργό. Επίσης, 0 γίνεται το σήμα root_cnt_en (εφόσον η έρευνα κατά Chien θα σταματήσει από τον επόμενο κύκλο, δε θα υπολογιστούν άλλες ρίζες), ενώ ενεργοποιείται το σήμα fail_check, ενεργοποιώντας τον καταχωρητή που αποθηκεύει το σήμα εξόδου failure του υποσυστήματος FAILURE DETECTOR το οποίο υποδεικνύει αποτυχία της διαδικασίας αποκωδικοποίησης. Στον επόμενο κύκλο το σύστημα θα μεταβεί στην κατάσταση FINISH που είναι η κατάσταση τερματισμού της διαδικασίας αποκωδικοποίησης.² Κατάσταση τερματισμού κατά την οποία το σήμα εγκυ- ²Σημειώνεται πως το σήμα data_valid παραμένει 1 για έναν κύκλο μετά το πέρας της διαδικασίας αποκωδικοποίησης και ανάγνωσης της FIFO. Οι λόγοι είναι αυτοί που αναφέρθηκαν προηγουμένως στην κατάσταση FAILURE DETECTOR. Λόγω λεπτομερειών υλοποίησης που θα αναλυθούν στο Κεφάλαιο 6, είναι απαραίτητο να προστεθεί ένα μηδενικό byte στο τέλος του μηνύματος, για το οποίο το σήμα ένδειξης εγκυρότητας data_valid θα είναι 1, ώστε αυτό να γραφτεί σε μία FIFO με ασύμμετρο πλάτος θυρών εισόδου/εξόδου.

119 105 ρότητας δεδομένων data_valid γίνεται 0 και το σήμα εξόδου finished, το οποίο υποδεικνύει το τέλος της αποκωδικοποίησης, γίνεται 1. Όλα τα υπόλοιπα σήματα παραμένουν ανενεργά. Στον επόμενο κύκλο το σύστημα μεταβαίνει στην κατάσταση αδράνειας IDLE. Στην επόμενη παράγραφο γίνεται περιγραφή της συνολικής λειτουργίας του συστήματος για είσοδο ενός μηνύματος και αποκωδικοποίησή του Λειτουργία συστήματος Σύμφωνα με την ανάλυση της προηγούμενης παραγράφου, αρχικά το σύστημα βρίσκεται στην κατάσταση IDLE, αναμένοντας να γίνει 1 το σήμα εκκίνησης λειτουργίας start. Όταν το σήμα start γίνει 1, το σύστημα θα μεταβεί στην κατάσταση SYN_INIT, όπου θα πρέπει τα σήματα fifo_wr_en και syn_en να γίνουν 1. Δεδομένου ότι τα σήματα αυτά θα αλλάξουν την κατάστασή τους σε έναν κύκλο, τα πρώτα έγκυρα δεδομένα εισόδου θα πρέπει να εφαρμοστούν στην είσοδο data_in 2 κύκλους ρολογιού αφού το start γίνει 1. Το σήμα syn_en ενεργοποιεί τους καταχωρητές του υποσυστήματος υπολογισμού συνδρόμων, οπότε με την είσοδο των byte του μηνύματος αρχίζει να δημιουργούνται σε αυτούς τα 8 σύνδρομα που αντιστοιχούν στο μήνυμα εισόδου. Στο σχήμα 5.23 παρατίθενται οι κυματομορφές των σημάτων από αυτό το πρώτο βήμα της διαδικασίας αποκωδικοποίησης. clk resetn en start clearn fifo_wr_en syn_en syn_cnt data_in byte0 byte1 byte2 byte3 state IDLE SYN_INIT SYN_GEN Σχήμα 5.23: Κυματομορφές σημάτων κατά την εκκίνηση της διαδικασίας αποκωδικοποίησης

120 106 clk resetn en start clearn fifo_wr_en fifo_rd_en syn_en syn_cnt sibm_en sibm_init sibm_cnt chien_en chien_init chien_cnt root_cnt_en coef_cnt_en data_in byte90 byte91 0 state SYN_GEN SYN_LAST SYN_CHECK SIBM CHIEN_LOAD CHIEN_NOP Σχήμα 5.24: Κυματομορφές σημάτων κατά το τέλος του υπολογισμού συνδρόμων, της εκτέλεσης του αλγορίθμου SiBM και της εκκίνησης της έρευνας κατά Chien Όταν ολοκληρωθεί η είσοδος των byte του μηνύματος, στους καταχωρητές της μονάδας υπολογισμού συνδρόμων είναι αποθηκευμένες οι τελικές τιμές των 8 συνδρόμων. Τότε το σήμα syn_en πρέπει να γίνει 0 ώστε οι καταχωρητές να διατηρήσουν αυτές τις τιμές, οι οποίες θα μεταβιβαστούν στη μονάδα υπολογισμού του πολυωνύμου εντοπισμού λαθών. Ταυτόχρονα, το σήμα fifo_wr_en γίνεται επίσης 0, αφού έχουν εισέλθει και αποθηκευτεί και τα 91 byte του μηνύματος, ενώ ενεργά γίνονται και τα σήματα sibm_en και sibm_init. Το σύστημα παραμένει στην κατάσταση SIBM για 4 κύκλους ρολογιού κατά τους οποίους εκτελείται ο αλγόριθμος SiBM. Μετά και την πάροδο της 4ης επανάληψης της κατάστασης SIBM, στις γραμμές lamda0, lamda1,..., lamda4 εμφανίζονται οι συντελεστές του πολυωνύμου Λ(x) που βρέθηκε. Στον επόμενο κύκλο το σύστημα περνά στην κατάσταση CHIEN_LOAD, όπου ενεργοποιείται το σήμα chien_en, ώστε να αρχίσει η εκτέλεση της έρευνας κατά Chien για εύρεση των ριζών του πολυωνύμου που μόλις υπολογίσθηκε. Επίσης, ενεργοποιείται για έναν κύκλο το σήμα coef_cnt_en, για υπολογισμό του πλήθους των μη μηδενικών συντελεστών του πολυωνύμου Λ(x), και έναν κύκλο μετά ενεργοποιείται, και μένει ενεργό καθ όλη τη διαδικασία Chien, το σήμα root_cnt_en για καταμέτρηση του πλήθους των ριζών που εντοπίζονται. Στο σχήμα 5.24 παρατίθενται οι κυματομορφές των σημάτων κατά τη διάρκεια αυτού του κρίσιμου τμήματος της διαδικασίας αποκωδικοποίησης.

121 107 clk resetn en start clearn data_valid fifo_wr_en fifo_rd_en chien_en chien_init chien_cnt root_cnt_en coef_cnt_en data_out 0 byte0 byte1 byte2 state CHIEN_NOP CHIEN_RDIN CHIEN_VALID CHIEN_RD Σχήμα 5.25: Κυματομορφές σημάτων κατά την εκκίνηση ανάγνωσης των byte του μηνύματος από τη FIFO και διόρθωσης των λαθών με τη μέθοδο Chien Η έρευνα Chien, λόγω των ιδιοτήτων που αναλύθηκαν στην Παράγραφο για κώδικες στους οποίους έχει γίνει shortening, εκτελείται για 36 κύκλους χωρίς να διαβάσει τα byte του μηνύματος που έχει ληφθεί από την εσωτερική μνήμη. Στον 36ο κύκλο εκτέλεσης της μεθόδου Chien, ενεργοποιείται το σήμα ενεργοποίησης ανάγνωσης από τη μνήμη FIFO, fifo_rd_en, και δύο κύκλους μετά γίνεται 1 το σήμα data_valid, αφού εμφανίζεται το 1ο byte του αποκωδικοποιημένου μηνύματος στην έξοδο. Το σύστημα περνά στην κατάσταση CHIEN_RD κατά την οποία διαβάζονται τα byte του μηνύματος από την FIFO και διορθώνονται ή όχι με βάση τις τιμές που υπολογίζει σε κάθε κύκλο η μονάδα έρευνας κατά Chien. Οι κυματομορφές σημάτων κατά τη μετάβαση από την κατάσταση CHIEN_NOP κατά την οποία δε γίνεται διόρθωση λαθών, στην CHIEN_RD όπου γίνεται διόρθωση λαθών, φαίνονται στο σχήμα Όταν η μέθοδος Chien έχει εκτελεστεί για 127 κύκλους, τα σήματα fifo_rd_en, chien_en, root_cnt_en γίνονται 0, όπως και το σήμα data_valid έναν κύκλο αργότερα. Όλα αυτά γίνονται στην κατάσταση CHIEN_FN, όταν και στην έξοδο του αποκωδικοποιητή εμφανίζεται το τελευταίο byte του μηνύματος. Στον επόμενο κύκλο το σύστημα μεταβαίνει στην κατάσταση τερματισμού FINISH, κατά την οποία είναι ενεργό το σήμα fail_check για να περάσει στην έξοδο το σήμα ένδειξης αποτυχίας αποκωδικοποίησης που έχει υπολογισθεί από τη μονάδα FAILURE DETECTOR. Στον επόμενο κύκλο το σήμα finished γίνεται 1, σηματοδοτώντας την ολοκλήρωση της διαδικασίας κωδικοποίησης. Έναν κύκλο μετά, ενεργο-

122 108 clk resetn en start clearn data_valid finished fifo_wr_en fifo_rd_en chien_en chien_init chien_cnt root_cnt_en coef_cnt_en fail_check data_out byte88 byte89 byte90 byte91 0 state CHIEN_RD CHIEN_FN FINISH IDLE Σχήμα 5.26: Κυματομορφές σημάτων κατά την ολοκλήρωση της διαδικασίας αποκωδικοποίησης ποιείται το εσωτερικό σήμα επαναφοράς clearn ( 0 active low), ώστε να μηδενιστούν τα περιεχόμενα όλων των καταχωρητών του συστήματος και να είναι σε θέση να δεχθεί το επόμενο μήνυμα προς αποκωδικοποίηση. Οι κυματομορφές των σημάτων κατά την ολοκλήρωση της διαδικασίας αποκωδικοποίησης παρατίθενται στο σχήμα Σύνοψη Ο παράλληλος αποκωδικοποιητής που σχεδιάστηκε και παρουσιάστηκε στις προηγούμενες παραγράφους αποκωδικοποιεί ένα μήνυμα 728 δυαδικών ψηφίων (91 byte) σε 229 κύκλους. Ο χρόνος αυτός υπολογίζεται από τη στιγμή που το σήμα εκκίνησης λειτουργίας start γίνει 1 μέχρι τη στιγμή που το σήμα εξόδου finished, που σηματοδοτεί την ολοκλήρωση της διαδικασίας αποκωδικοποίησης, γίνει επίσης 1, οπότε και θα έχουν εξέλθει όλα τα byte του αποκωδικοποιημένου μηνύματος στην έξοδο. Για 91 από αυτούς τους κύκλους εκτελείται ο υπολογισμός των συνδρόμων, για έναν κύκλο ελέγχονται οι τιμές τους και εξακριβώνεται το εάν έχουν συμβεί λάθη στα δεδομένα εισόδου, για 4 κύκλους εκτελείται ο αλγόριθμος SiBM, για 128 κύκλους εκτελείται η έρευνα κατά Chien και 5 κύκλοι χρησιμεύουν για αρχικοποιήσεις των διάφορων τμημάτων. Ο χρόνος αναμονής (latency) από τη στιγμή που εισέλθει το 1ο byte του μηνύματος μέχρι τη στιγμή που εξέλθει το 1ο byte του αποκωδι-

123 109 κοποιημένου μηνύματος είναι 135 κύκλοι. Η έξοδος data_out μπορεί να συνδεθεί απευθείας σε κάποια εξωτερική μνήμη, όπως και στην περίπτωση του κωδικοποιητή, χρησιμοποιώντας το σήμα εξόδου data_valid ως σήμα ενεργοποίησης εγγραφής. Αυτή η συνδεσμολογία χρησιμοποιήθηκε στο Κεφάλαιο 6 για ασύγχρονη επικοινωνία του αποκωδικοποιητή μέσω των διαύλων με το υπόλοιπο ενσωματωμένο σύστημα. Στο Κεφάλαιο 7 θα παρουσιαστούν αποτελέσματα εξομοίωσης και υλοποίησης για το σύστημα αποκωδικοποιητή που σχεδιάστηκε, καθώς και στατιστικά στοιχεία που αφορούν την επιφάνεια που καταλαμβάνει και την μέγιστη συχνότητα λειτουργίας που μπορεί να υποστηρίξει.

124

125 Κεφάλαιο 6 Ενσωμάτωση κωδικοποιητή και αποκωδικοποιητή BCH ως περιφερειακά σε Ενσωματωμένο Σύστημα Στο προηγούμενο Κεφάλαιο αναλύθηκε η διαδικασία σχεδίασης, ξεκινώντας από τους απαραίτητους αλγόριθμους και φτάνοντας σε λεπτομερή περιγραφή αρχιτεκτονικής, ενός παράλληλου κωδικοποιητή και ενός παράλληλου αποκωδικοποιητή για τον κώδικα BCH(728,688). Στο Κεφάλαιο που ακολουθεί αυτές οι δύο μονάδες θα αντιμετωπισθούν ως μαύρα κουτιά (black boxes) και θα μελετηθεί ο τρόπος που αυτά μπορούν να αποτελέσουν περιφερειακές μονάδες ενός ενσωματωμένου συστήματος. Αρχικά θα γίνει μια εισαγωγή στα ενσωματωμένα συστήματα και τα χαρακτηριστικά τους και στη συνέχεια θα περιγραφεί ο τρόπος που τα συστήματα του κωδικοποιητή και του αποκωδικοποιητή θα ενσωματωθούν σε ένα τέτοιο σύστημα, με χρήση επεξεργαστή MicroBlaze και διαύλων επικοινωνίας AXI4 και AXI4-Lite. Οι ακριβείς τεχνικές λεπτομέρειες της υλοποίησης και των εργαλείων που χρησιμοποιήθηκαν θα αναφερθούν στο Κεφάλαιο Εισαγωγή στα ενσωματωμένα συστήματα Ενσωματωμένο σύστημα είναι ένα σύστημα βασισμένο σε μικροεπεξεργαστή που είναι σχεδιασμένο να εκτελεί μία ή ένα συγκεκριμένο

126 112 εύρος λειτουργιών, σε αντίθεση με ένα υπολογιστικό σύστημα γενικού σκοπού [36]. Συχνά ένα ενσωματωμένο σύστημα έχει απαιτήσεις επεξεργασίας πραγματικού-χρόνου (real-time), ενώ από τη στιγμή που είναι προσανατολισμένο για συγκεκριμένες εργασίες μπορεί και να βελτιστοποιηθεί με βάση αυτές και τους περιορισμούς που υπάρχουν (π.χ. συχνότητα λειτουργίας, κατανάλωση ισχύος, επιφάνεια). Η πλειοψηφία των συστημάτων που σχεδιάζονται και κατασκευάζονται σήμερα είναι ενσωματωμένα συστήματα. Οι εφαρμογές τους έχουν μεγάλο έυρος, από φορητές συσκευές μέχρι μεγάλα βιομηχανικές διατάξεις. Ανάλογα με τις ανάγκες της εφαρμογής ένα ενσωματωμένο σύστημα μπορεί να φέρει έναν επεξεργαστή, έναν δίαυλο επικοινωνίας και μνήμη μόνο, μέχρι πολλά επεξεργαστικά στοιχεία, περιφερειακά και δίκτυο. Το πεδίο των Ενσωματωμένων Συστημάτων είναι πολύ ευρύ (μέχρι και ο ορισμός τους ποικίλει στη βιβλιογραφία) και δεν είναι ο στόχος αυτής της εργασίας. Για το λόγο αυτό στη συνέχεια θα γίνει αναφορά αποκλειστικά σε ενσωματωμένα συστήματα που μπορούν να υλοποιηθούν σε συσκευές επαναπρογραμματιζόμενης λογικής (FPGA), καθώς μία τέτοια συσκευή είναι η βάση της υλοποίησης που έγινε στο Κεφάλαιο Επεξεργαστής MicroBlaze Οι επεξεργαστές των ενσωματωμένων συστημάτων μπορούν να είναι Hard Core ή Soft Core. Οι Hard-Core επεξεργαστές είναι επεξεργαστές που βρίσκονται ήδη στην συσκευή FPGA και δεν μπορούν να αντικατασταθούν. Ωστόσο μπορούν να αλλαχθούν κάποιες παράμετροί τους. Ένας τέτοιος επεξεργαστής είναι ο PowerPC. Οι επεξεργαστές Soft Core από την άλλη δεν υπάρχουν με φυσική μορφή στη συσκευή αλλά μπορούν να υλοποιηθούν πλήρως με λογική σύνθεση και να προγραμματισθούν σε αυτή. Ένας τέτοιος επεξεργαστής είναι ο MicroBlaze, που θα χρησιμοποιηθεί σε αυτή την εργασία. Ο MicroBlaze σχεδιάστηκε για τις συσκευές FPGA της Xilinx. Ως soft core επεξεργαστής υλοποιείται ολοκληρωτικά στη μνήμη γενικού σκοπού και στο λογικό κομμάτι της συσκευής FPGA. Ως προς το σύνολο εντολών, ο MicroBlaze είναι παρόμοιος με την αρχιτεκτονική DLX RISC που περιγράφεται στο [37]. Είναι ένας αρκετά ευπροσάρμοστος επεξεργαστής, ενώ τα χαρακτηριστικά είναι τα ακόλουθα [38]:

127 113 Σχήμα 6.1: Αρχιτεκτονική επεξεργαστή MicroBlaze 32 καταχωρητές γενικού σκοπού των 32 δυαδικών ψηφίων Λέξη εντολής των 32 δυαδικών ψηφίων με τρεις τελεστές και δύο τρόπους διευθυνσιοδότησης Δίαυλο διευθύνσεων των 32 δυαδικών ψηφίων Single issue pipeline Πέρα από αυτά τα χαρακτηριστικά, ο επεξεργαστής MicroBlaze μπορεί να προσαρμοστεί ώστε να επιτρέπει επιπλέον λειτουργικότητα. Στο σχήμα 6.1 παρουσιάζεται η εσωτερική αρχιτεκτονική του MicroBlaze [38]. 6.3 Δίαυλοι επικοινωνίας AXI4, AXI4-Lite Οι δίαυλοι επικοινωνίας που χρησιμοποιήθηκαν για την σχεδίαση του ενσωματωμένου συστήματος είναι οι τεχνολογίες της Xilinx, ΑΧΙ4 και AXI4-Lite. Στα σχήματα 6.2 και 6.3 παρουσιάζονται οι δομές των διεπαφών αυτών των διαύλων.

128 114 Σχήμα 6.2: Εσωτερική δομή διεπαφής AXI4 Σχήμα 6.3: Εσωτερική δομή διεπαφής AXI4-Lite

129 Σχεδίαση ενσωματωμένου συστήματος Το ενσωματωμένο σύστημα που σχεδιάστηκε και υλοποιήθηκε είναι ένα απλό σύστημα, το οποίο περιλαμβάνει έναν επεξεργαστή MicroBlaze, δύο διαύλους δεδομένων, έναν ελεγκτή μνήμης (DMA), μία μονάδα μνήμης (BRAM) και δύο περιφερειακά συστήματα τα οποία υλοποιούν τον κωδικοποιητή και τον αποκωδικοποιητή που παρουσιάστηκαν στα προηγούμενα δύο κεφάλαια. Ο στόχος του συστήματος είναι ο έλεγχος ορθής λειτουργίας και διαλειτουργικότητας των συστημάτων κωδικοποιητή και αποκωδικοποιητή σε ένα πλήρες σύστημα. Ένα τέτοιο σύστημα μπορεί να χρησιμοποιηθεί ως βάση για κάποια μεγαλύτερη διάταξη η οποία χρειάζεται δυνατότητες κωδικοποίησης και αποκωδικοποίησης δεδομένων (είτε για διόρθωση λαθών είτε για άλλο σκοπό), όπως οι συσκευές αποθήκευσης πληροφορίας που αναφέρθηκαν στο κεφάλαιο 1. Σε αυτή την ενότητα παρουσιάζεται η γενική αρχιτεκτονική ενός τέτοιου συστήματος καθώς οι λεπτομέρειες υλοποίησης έχουν άρρηκτη σχέση με το εργαλείο σύνθεσης και την διάταξη υλικού που χρησιμοποιείται. Οι λεπτομέρειες της υλοποίησης θα παρουσιαστούν αναλυτικά στο Κεφάλαιο 7, μαζί με όλα τα αποτελέσματα από τις εξομοιώσεις και τις εκτελέσεις στη συσκευή FPGA, καθώς και τα στατιστικά στοιχεία επιφάνειας και ταχύτητας που προέκυψαν. Στο σχήμα 6.4 παρουσιάζεται το γενικό σχήμα αρχιτεκτονικής του ενσωματωμένου συστήματος που σχεδιάστηκε. Το σύστημα χρησιμοποιεί δύο βασικούς διαύλους δεδομένων για επικοινωνία μεταξύ των υποσυστημάτων, οι οποίοι είναι βασισμένοι στην τεχνολογία AXI (Advanced extensible Interface) της Xilinx. Οι δύο αυτοί δίαυλοι είναι ο AXI4 για υψηλή απόδοση και υποστήριξη εγγραφής και ανάγνωσης τύπου burst, και ο AXI4-Lite για απλή, χαμηλού ρυθμού επικοινωνία [39]. Έκτός από τον επεξεργαστή και τους διαύλους επικοινωνίας, χρησιμοποιήθηκαν ακόμα ένας ελεγκτής μνήμης DMA και μία μονάδα μνήμης BRAM, ώστε να είναι πιο εύκολη και αποδοτική η τροφοδότηση των περιφερειακών με δεδομένα κατά τον έλεγχο ορθής λειτουργίας. Στις επόμενες δύο παραγράφους θα παρουσιαστεί η εσωτερική δομή των δύο περιφερειακών που σχεδιάστηκαν με βάση τα συστήματα κωδικοποιητή και αποκωδικοποιητή BCH.

130 116 Σχήμα 6.4: Αρχιτεκτονική ενσωματωμένου συστήματος κωδικοποιητή-αποκωδικοποιητή Ενσωμάτωση κωδικοποιητή BCH Στο σχήμα 6.5 παρουσιάζεται η εσωτερική δομή του περιφερειακού το οποίο ενσωματώνει τον παράλληλο κωδικοποιητή BCH που σχεδιάστηκε και παρουσιάστηκε στο Κεφάλαιο 4. Το περιφερειακό αποτελείται από δύο μνήμες FIFO, δύο καταχωρητές των 32 δυαδικών ψηφίων και τη μονάδα BCH ENCODER CORE η οποία αντιστοιχεί στο σύστημα παράλληλου κωδικοποιητή BCH που έχει σχεδιαστεί. Το περιφερειακό περιλαμβάνει μία μηχανή πεπερασμένων καταστάσεων η οποία αναλαμβάνει να παράγει τα κατάλληλα εσωτερικά σήματα για την επικοινωνία εντός του περιφερειακού (δηλαδή μεταξύ της μονάδας του κωδικοποιητή και των υπόλοιπων στοιχείων που τον πλαισιώνουν) και αρκετές διαδικασίες που αναλαμβάνουν την ανάγνωση και εγγραφή των μνημών FIFO και των καταχωρητών από την πλευρά των διαύλων. Αξίζει εδώ να σημειωθεί ότι το πλάτος δεδομένων των δύο διαύλων είναι 32 δυαδικά ψηφία ενώ το πλάτος δεδομένων εισόδου του κωδι-

131 117 Σχήμα 6.5: Δομή περιφερειακού παράλληλου κωδικοποιητή BCH κοποιητή είναι 8 δυαδικά ψηφία. Για το λόγο αυτό χρησιμοποιήθηκαν μνήμες FIFO με ασύμμετρο λόγο πλάτους δεδομένων εισόδου και εξόδου. Έτσι, η γραμμή εισόδου δεδομένων της μνήμης FIFO IN έχει πλάτος 32 δυαδικών ψηφίων και η γραμμή εξόδου δεδομένων έχει πλάτος 8 δυαδικών ψηφίων, ώστε να μπορεί να συνδεθεί απευθείας στην είσοδο δεδομένων data_in του κωδικοποιητή. Το αντίστροφο γίνεται στην μνήμη FIFO OUT. Επίσης, ο κάθε καταχωρητής είναι των 32 δυαδικών ψηφίων, από τα οποία χρησιμοποιείται μόνο ένα σε κάθε περίπτωση για τις λειτουργίες του κωδικοποιητή (χρειάζεται ένα δυαδικό ψηφίο για το σήμα εισόδου start στον καταχωρητή CONTROL REG και ένα δυαδικό ψηφίο για το σήμα εξόδου finished στον καταχωρητή STATUS REG). Οι μνήμες FIFO και οι καταχωρητές έχουν χρησιμοποιηθεί για να μπορεί να υπάρξει ασύγχρονη επικοινωνία και έλεγχος ροής μεταξύ του περιφερειακού και του επεξεργαστή (ή οποιουδήποτε άλλου στοιχείου χρειάζεται να επικοινωνήσει με τον κωδικοποιητή). Όταν θα πρέπει να κωδικοποιηθεί ένα μήνυμα, ο επεξεργαστής ή ο ελεγκτής μνήμης DMA γράφουν μέσω του διαύλου AXI4 στην μνήμη FIFO IN τα 86 byte του μηνύματος και στη συνέχεια γράφουν μέσω του διαύλου AXI4-Lite στο λιγότερο σημαντικό ψηφίο του καταχωρητή ελέγχου (CONTROL REG) την τιμή 1. Αυτό το δυαδικό ψηφίο αντιστοιχεί στο εσωτερικό σήμα εκκίνησης λειτουργίας start του περιφερειακού. Η μηχανή πεπερασμένων

132 118 καταστάσεων του περιφερειακού συντονίζει την εσωτερική διάταξη και τροφοδοτεί τον κωδικοποιητή με τα 86 byte του μηνύματος από την μνήμη εισόδου FIFO IN, ενεργοποιώντας το σήμα enc_en του κωδικοποιητή. Στη συνέχεια, όταν ο κωδικοποιητής τελειώσει τον σχηματισμό του αθροίσματος ελέγχου αυτό γράφεται στη μνήμη εξόδου FIFO OUT, ενώ στο λιγότερο σημαντικό ψηφίο του καταχωρητή κατάστασης STATUS REG, το οποίο αντιστοιχεί στο σήμα εξόδου finished του κωδικοποιητή, γράφεται η τιμή 1. Ο επεξεργαστής μπορεί να ελέγχει το περιεχόμενο του καταχωρητή STATUS REG και όταν αυτό γίνει 1 μπορεί να διαβάσει το άθροισμα ελέγχου από τη μνήμη FIFO OUT. Σχήμα 6.6: Διάγραμμα καταστάσεων της FSM του περιφερειακού κωδικοποιητή Στο σχήμα 6.6 παρουσιάζεται η μηχανή πεπερασμένων καταστάσεων που υλοποιεί τη βασική λογική του περιφερειακού. Το σύστημα βρίσκε-

133 119 ται στην κατάσταση IDLE κατά την εκκίνηση λειτουργίας και όσο το σήμα start είναι 0. Όταν το σήμα start γίνει 1, το σύστημα μεταβαίνει στην κατάσταση READ_FIFO_IN_INIT κατά την οποία το σήμα ενεργοποίησης ανάγνωσης fifo_in_rd_en της FIFO IN γίνεται 1. Αυτό σημαίνει ότι στον επόμενο κύκλο στην έξοδο της FIFO IN θα εμφανιστεί το 1ο byte του μηνύματος προς κωδικοποίηση. Για το λόγο αυτό, σε αυτή την κατάσταση το σήμα ενεργοποίησης του κωδικοποιητή παραμένει 0 καθώς ακόμα δεν υπάρχουν έγκυρα δεδομένα στην είσοδό του. Στον επόμενο κύκλο το σύστημα μεταβαίνει στην επαναληπτική κατάσταση READ_FIFO_IN, όπου και παραμένει για 86 κύκλους. Κατά την παραμονή στην κατάσταση αυτή το σήμα ανάγνωσης της FIFO IN παραμένει 1, ενώ την ίδια τιμή έχει πλέον και το σήμα ενεργοποίησης του κωδικοποιητή enc_en. Όταν ο εσωτερικός μετρητής fsm_cnt που χρησιμοποιεί η FSM πάρει την τιμή 86 ( ) έχουν εξέλθει από τη μνήμη FIFO IN και έχουν εισέλθει στον κωδικοποιητή όλα τα byte του μηνύματος που πρέπει να κωδικοποιηθεί, οπότε το σύστημα μεταβαίνει στην κατάσταση WAIT_FN. Κατά την παραμονή σε αυτή την κατάσταση η FSM ελέγχει το σήμα εξόδου finished του κωδικοποιητή. Όταν αυτό γίνει 1 θα σημαίνει ότι ο κωδικοποιητής τελείωσε την κωδικοποίηση του μηνύματος και το έχει ήδη αποθηκεύσει στην μνήμη FIFO OUT. Το σήμα ενεργοποίησης εγγραφής της μνήμης εξόδου FIFO OUT είναι συνδεδεμένο στην έξοδο data_valid του κωδικοποιητή. Αυτό σημαίνει ότι όταν ο κωδικοποιητής αρχίσει να εμφανίζει στην έξοδό του έγκυρα δεδομένα (δηλαδή, τα 5 byte του αθροίσματος ελέγχου) αυτά αποθηκεύονται στην μνήμη FIFO OUT χωρίς την παρέμβαση της FSM του περιφερειακού. Ένα ζήτημα το οποίο αναφέρθηκε προηγουμένως, και που πρέπει να αναφερθεί πριν συνεχίσει η περιγραφή της FSM του περιφερειακού, είναι μια τεχνική ιδιαιτερότητα των μνημών FIFO με ασύμμετρο λόγο πλάτους δεδομένων εισόδου-εξόδου η οποία επηρέασε τη σχεδίαση της FSM. Οι μνήμες αυτές κατασκευάστηκαν με το εργαλείο CORE Generator της Xilinx. Για μία μνήμη, όπως στην περίπτωση που μελετάται, με πλάτος εισόδου των 8 δυαδικών ψηφίων και πλάτος εξόδου των 32 δυαδικών ψηφίων, τίθεται ένα θέμα κατά την ανάγνωση όταν στην είσοδο έχουν γραφτεί δεδομένα τα οποία είναι λιγότερα από 32 δυαδικά ψηφία. Για παράδειγμα, εάν από την έξοδο του κωδικοποιητή γραφτούν στην μνήμη FIFO OUT 3 byte, δηλαδή 24 δυαδικά ψηφία, δεν θα έχουν συμπληρωθεί τα 32 δυαδικά ψηφία της λέξης που διαβάζεται από την άλλη πλευρά. Σε μια τέτοια περίπτωση, οι ασύμμετρες μνήμες εμφανίζουν στην έξοδο

134 120 μηδενικά και όχι τα 3 byte που έχουν αποθηκευτεί εσωτερικά, τα οποία θα εμφανιστούν μόνο όταν γραφτεί και ένα 4ο byte που θα συμπληρώσει την λέξη των 32 δυαδικών ψηφίων της εξόδου της μνήμης [40]. Η παραπάνω συμπεριφορά έχει σημασία για την συνέχιση της ανάλυσης ως προς την FSM του περιφερειακού. Ο κωδικοποιητής βγάζει στην έξοδο μετά το πέρας της κωδικοποίησης 5 byte. Από αυτά, τα 4 πρώτα συμπληρώνουν μία πλήρη λέξη ως προς την έξοδο της μνήμης FIFO OUT αλλά το 5ο δε θα μπορεί να διαβαστεί από την μνήμη έως ότου σε αυτή γραφτούν άλλα 3 byte. Για το λόγο αυτό, το σύστημα μετά την κατάσταση WAIT_FN μεταβαίνει στις καταστάσεις WRITE_ZERO_1, WRITE_ZERO_2 και WRITE_ZERO_3, κατά τις οποίες στη μνήμη FIFO OUT γράφονται 3 μηδενικά byte ώστε να είναι δυνατή η ανάγνωση του 5ου byte του αθροίσματος ελέγχου από την μνήμη. Μετά και την κατάσταση WRITE_ZERO_3 το σύστημα μεταβαίνει πάλι στην κατάσταση αδράνειας περιμένοντας το επόμενο μήνυμα προς κωδικοποίηση. Η παραπάνω ιδιαιτερότητα συναντάται και στην περίπτωση της ενσωμάτωσης του παράλληλου αποκωδικοποιητή ως περιφερειακού, που θα αναλυθεί στην επόμενη Παράγραφο Ενσωμάτωση αποκωδικοποιητή BCH Η εσωτερική δομή του περιφερειακού που σχεδιάστηκε για την ενσωμάτωση του παράλληλου αποκωδικοποιητή BCH, η σχεδίαση του οποίου παρουσιάστηκε στο Κεφάλαιο 5, παρατίθεται στο σχήμα 6.7 και είναι παρόμοια με αυτήν της περίπτωσης του παράλληλου κωδικοποιητή. Οι διαφορές έχουν να κάνουν με τα σήματα εξόδου του αποκωδικοποιητή που συνδέονται στον καταχωρητή κατάστασης STATUS REG. Ο αποκωδικοποιητής βγάζει στο περιβάλλον, εκτός από την ένδειξη ολοκλήρωσης finished, κι άλλες πληροφορίες που έχουν να κάνουν με τη διαδικασία αποκωδικοποίησης ενός μηνύματος, όπως αριθμό λαθών που βρέθηκαν και διορθώθηκαν (σήμα εξόδου errors) και ένδειξη αποτυχίας της διαδικασίας αποκωδικοποίησης λόγω ύπαρξης περισσότερων λαθών από τη διορθωτική ικανότητα του κώδικα που χρησιμοποιείται (σήμα εξόδου failure). Έτσι, ο αποκωδικοποιητής χρησιμοποιεί 5 δυαδικά ψηφία στον καταχωρητή STATUS REG: ένα για την ένδειξη ολοκλήρωσης της αποκωδικοποίησης, ένα για την ένδειξη αποτυχίας της και 3 δυαδικά ψηφία που είναι η δυαδική αναπαράσταση του πλήθους των λαθών που βρέθηκαν και διορθώθηκαν.

135 121 Σχήμα 6.7: Δομή περιφερειακού αποκωδικοποιητή Η λειτουργία του περιφερειακού είναι η ίδια με αυτή που περιγράφηκε στην περίπτωση του κωδικοποιητή. Μια εξωτερική μονάδα (είτε ο επεξεργαστής είτε κάποια άλλη) επικοινωνεί με τον αποκωδικοποιητή διαμέσου των δύο μνημών FIFO και των δύο καταχωρητών. Στην μνήμη FIFO IN γράφεται το μήνυμα που πρέπει να αποκωδικοποιηθεί (91 byte), από την οποία διοχετεύεται στον αποκωδικοποιητή και μετά την ολοκλήρωση της διαδικασίας αποκωδικοποίησης το αποκωδικοποιημένο μήνυμα γράφεται στη μνήμη FIFO OUT, μέσω της οποίας διαβάζεται από την μονάδα που ζήτησε την αποκωδικοποίηση. Στον καταχωρητή ελέγχου CONTROL REG γράφεται η τιμή 1 για ενεργοποίηση του εσωτερικού σήματος εκκίνησης start και στον καταχωρητή κατάστασης STATUS REG γράφονται από τον αποκωδικοποιητή οι πληροφορίες που σχετίζονται με την διαδικασία αποκωδικοποίησης που ολοκληρώθηκε. Η μηχανή πεπερασμένων καταστάσεων του περιφερειακού που συντονίζει τις μνήμες FIFO και τους καταχωρητές με τον αποκωδικοποιητή είναι διαφορετική από αυτήν που χρησιμοποιήθηκε στην ενσωμάτωση του κωδικοποιητή, αλλά η βασική ιδέα είναι η ίδια. Η μηχανή αυτή παρατίθεται στο σχήμα 6.8. Το σύστημα του περιφερειακού αρχικά είναι στην κατάσταση IDLE περιμένοντας να γίνει 1 το σήμα εκκίνησης λειτουργίας start. Κατά την παραμονή σε αυτή την κατάσταση το σήμα ανάγνωσης της μνήμης FIFO

136 122 Σχήμα 6.8: Διάγραμμα καταστάσεων της FSM του περιφερειακού αποκωδικοποιητή IN είναι 0, ενώ το σήμα ενεργοποίησης του αποκωδικοποιητή dec_en είναι συνδεδεμένο με το σήμα start. Αυτό γίνεται επειδή ο αποκωδικοποιητής χρειάζεται δύο κύκλους από τη στιγμή που το σήμα start γίνει 1 μέχρι να δεχθεί το πρώτο έγκυρο byte του μηνύματος (όπως αναλύθηκε στην Παράγραφο ). Με αυτόν τον τρόπο μπορεί να παραλειφθεί μια ενδιάμεση κατάσταση που απλά θα καθυστερούσε κατά ένα κύκλο την FSM του περιφερειακού μέχρι ο αποκωδικοποιητής να είναι σε θέση να δεχθεί δεδομένα. Όταν το σήμα start γίνει 1, το σύστημα μεταβαίνει στην επαναληπτική κατάσταση READ_FIFO_IN, όπου ενεργοποιούνται τα σήματα fifo_in_rd_en και dec_en, ενώ ενεργοποιείται και το σήμα status_clrn ( 0 active low) ώστε να σβηστούν από τον καταχωρητή κατάστασης STATUS REG τα δεδομένα που είχαν γραφτεί κατά την προηγούμενη διαδικασία αποκωδικοποίησης. Επίσης, όσο το σύστημα παραμένει σε αυτή την κατάσταση αυξάνεται ο εσωτερικός μετρητής fsm_cnt της μηχανής πεπερασμένων καταστάσεων, η τιμή του οποίου αντιστοιχεί στο πλήθος των byte που έχουν διαβαστεί από τη μνήμη FIFO IN. Το σύστημα πα-

137 123 ραμένει σε αυτή την κατάσταση έως ότου ο μετρητής αυτός πάρει την τιμή 91 ( ), που θα σημαίνει ότι έχουν διαβαστεί από τη μνήμη FIFO IN όλα τα byte του μηνύματος που πρέπει να αποκωδικοποιηθεί. Τότε το σύστημα μεταβαίνει στην κατάσταση WAIT_FN, όπου το σήμα fifo_in_rd_en γίνεται 0. Το σύστημα παραμένει σε αυτή την κατάσταση μέχρι το σήμα ολοκλήρωσης της διαδικασίας αποκωδικοποίησης finished γίνει 1. Τότε, επιστρέφει στην κατάσταση αδράνειας IDLE. Το ζήτημα που αναφέρθηκε στην προηγούμενη Παράγραφο σχετικά με τις ασύμμετρες FIFO υπάρχει και εδώ, καθώς τα 91 byte που γράφονται στην FIFO OUT ανά byte από τον αποκωδικοποιητή δεν είναι ακριβές πολλαπλάσιο του 32. Πιο συγκεκριμένα, χρειάζεται να γραφτεί ένα ακόμα byte ώστε να διαβαστούν τα 3 τελευταία byte του αποκωδικοποιημένου μηνύματος. Αυτό υλοποιείται εσωτερικά στον αποκωδικοποιητή, όπως αναλύθηκε στο Κεφάλαιο 5, ο οποίος διατηρεί το σήμα data_valid (το οποίο είναι συνδεδεμένο με το σήμα ενεργοποίησης εγγραφής της FIFO OUT) ενεργό για έναν κύκλο παραπάνω κατά την ολοκλήρωση της διαδικασίας, ώστε να γραφεί ένα μηδενικό byte μετά τα 91 byte του αποκωδικοποιημένου μηνύματος. Στο Κεφάλαιο 7 που ακολουθεί θα παρουσιαστούν περισσότερες τεχνικές λεπτομέρειες σχετικά με την μεθοδολογία ενσωμάτωσης των δύο περιφερειακών, καθώς αυτές εξαρτώνται από το εργαλείο και την διάταξη υλικού που χρησιμοποιήθηκε για την υλοποίηση. Επίσης, όπως αναφέρθηκε νωρίτερα, πέρα από τις δύο βασικές FSM που παρουσιάστηκαν, η λογική ενός περιφερειακού αποτελείται και από άλλες διαδικασίες και δομές που κάνουν δυνατή την επικοινωνία του με τους διαύλους δεδομένων, τον επεξεργαστή MicroBlaze και τον ελεγκτή μνήμης DMA. Όλα αυτά θα αναλυθούν στη συνέχεια.

138

139 Κεφάλαιο 7 Υλοποίηση ενσωματωμένου συστήματος σε συσκευή FPGA και αποτελέσματα Στα Κεφάλαια 4, 5 και 6 έγινε λεπτομερής περιγραφή των αρχιτεκτονικών που σχεδιάστηκαν τόσο για το εσωτερικό των παράλληλων συστημάτων κωδικοποίησης και αποκωδικοποίησης όσο και για τη δομή του ενσωματωμένου συστήματος που θα τα φιλοξενήσει. Στη συνέχεια θα παρουσιαστεί αναλυτικά η ροή σχεδίασης του συνολικού συστήματος, η οποία ξεκινά με τις προδιαγραφές του συστήματος και τους αλγόριθμους που έχουν μελετηθεί στα προηγούμενα κεφάλαια και τελειώνει με την εκτέλεση διαδικασιών κωδικοποίησης και αποκωδικοποίησης μηνυμάτων στο ενσωματωμένο σύστημα που έχει υλοποιηθεί σε συσκευή FPGA. 7.1 Μεθοδολογία και ροή σχεδίασης Στο σχήμα 7.1 παρουσιάζεται το διάγραμμα της διαδικασίας που ακολουθήθηκε για την σχεδίαση και υλοποίηση των παράλληλων μονάδων κωδικοποιητή και αποκωδικοποιητή του κώδικα BCH(728,688) ως περιφερειακά σε ενσωματωμένο σύστημα. Η διαδικασία ξεκινά με την ανάλυση των προδιαγραφών σχεδίασης και συνεχίζει με την συλλογή και μελέτη αλγορίθμων κωδικοποίησης και αποκωδικοποίησης που μπορούν να χρησιμοποιηθούν για τις διαδικασίες κωδικοποίησης και αποκωδικοποίησης. Το ζητούμενο είναι η εξαγωγή αρχιτεκτονικών που ικανοποιούν τις προδιαγραφές που έχουν τεθεί.

140 126 Σχήμα 7.1: Ροή σχεδίασης ενσωματωμένου συστήματος κωδικοποιητή-αποκωδικοποιητή BCH

141 127 Αφού επιλέχθηκαν συγκεκριμένοι αλγόριθμοι και συγκεκριμένες αρχιτεκτονικές (που έχουν παρουσιαστεί αναλυτικά στα Κεφάλαια 4 και 5), σειρά έχει η μοντελοποίηση του συστήματος. Σε αυτό το σημείο κατασκευάστηκαν τρία μοντέλα που υλοποιούν τους αλγορίθμους και τις αρχιτεκτονικές που έχουν επιλεγεί. Ένα από αυτά, το μοντέλο γλώσσας περιγραφής υλικού (η γλώσσα που υιοθετήθηκε ήταν η VHDL), μπορεί να τροφοδοτήσει κατ αρχάς τη λογική εξομοίωση, τα αποτελέσματα της οποίας θα πρέπει να συμφωνούν με τα αποτελέσματα των άλλων δύο μοντέλων για ίδιες εισόδους, και την διαδικασία της σύνθεσης, που είναι η αρχή της διαδικασίας υλοποίησης του μοντέλου VHDL. Στη συνέχεια γίνεται υλοποίηση του μοντέλου στο εργαλείο EDK (Embedded Development Kit) της Xilinx. Μεγάλο μέρος της σχεδίασης του ενσωματωμένου συστήματος εξαρτάται από το συγκεκριμένο εργαλείο και θα παρουσιαστεί αναλυτικά στη συνέχεια. Η υλοποίηση του ενσωματωμένου συστήματος στο EDK έχει σαν αποτέλεσμα τα αρχεία bitstream (.bit,.bmm) που χρειάζονται για προγραμματισμό της συσκευής FPGA που θα χρησιμοποιηθεί ως αναπτυξιακό περιβάλλον. Σε αυτό το σημείο παρεμβάλλεται το εργαλείο SDK (Software Development Kit) το οποίο δίνει τη δυνατότητα προγραμματισμού του ενσωματωμένου συστήματος που έχει υλοποιηθεί με τις γλώσσες υψηλού επιπέδου C ή C++. Σε αυτό το εργαλείο γράφτηκαν τα ανάλογα προγράμματα για τροφοδότηση των περιφερειακών κωδικοποιητή και αποκωδικοποιητή με μηνύματα και ελέγχθηκε η ορθή λειτουργία τους. Τελικό στάδιο της διαδικασίας είναι ο έλεγχος της εξόδου των τριών μοντέλων και του υλικού για ίδια είσοδο. Αυτές οι έξοδοι θα πρέπει να είναι ίδιες, για επαρκώς μεγάλο πλήθος εισόδων, ώστε να θεωρηθεί επιτυχημένη η διαδικασία σχεδίασης και το σύστημα αξιόπιστο. Στη συνέχεια, θα περιγραφούν και θα αναλυθούν τα στάδια της σχεδίασης, ξεκινώντας με την μοντελοποίηση του συστήματος. 7.2 Μοντελοποίηση σε περιβάλλον MATLAB Στο περιβάλλον MATLAB κατασκευάστηκαν δύο μοντέλα. Το πρώτο κάνει χρήση της ενσωματωμένης δυνατότητας του περιβάλλοντος για υπολογισμούς σε πεπερασμένα πεδία, και το δεύτερο είναι ένα bit-true μοντέλο, στο οποίο δεν χρησιμοποιούνται συναρτήσεις του περιβάλλοντος πέρα από την συνάρτηση XOR και την χρήση μητρώων τα οποία αντιστοιχούν σε καταχωρητές.

142 128 Το but-true μοντέλο αποτέλεσε ένα πρώτο βήμα και οδηγό στη διαδικασία κατασκευής του μοντέλου VHDL, καθώς πέρα από συμπεριφορά μοντελοποιεί και την δομή των αλγορίθμων και αρχιτεκτονικών που επιλέχθηκαν. Όπως αναφέρθηκε χρησιμοποιούνται για την κατασκευή του μόνο πράξεις XOR και μητρώα, σε αντιστοιχία με τις πύλες XOR και τους καταχωρητές που θα χρησιμοποιηθούν στο μοντέλο VHDL. Ο δεύτερος ρόλος των μοντέλων MATLAB είναι η παραγωγή συνόλου εισόδων και έγκυρων εξόδων ώστε να ελεγχθεί για το ίδιο σύνολο το τελικό σύστημα. Περισσότερα για αυτό το θέμα θα αναφερθούν στην Ενότητα Μοντελοποίηση σε γλώσσα περιγραφής υλικού VHDL και λογική εξομοίωση Το μοντέλο που κατασκευάστηκε στη γλώσσα περιγραφής υλικού VHDL ανταποκρίνεται πλήρως στις αρχιτεκτονικές των διαφόρων τμημάτων του παράλληλου κωδικοποιητή και παράλληλου αποκωδικοποιητή που παρουσιάστηκαν στα Κεφάλαια 4 και 5 και δεν χρειάζεται να αναφερθούν πάλι σε αυτό το σημείο. Οι κώδικες VHDL παρατίθενται στο Παράρτημα Αʹ. Μετά τη κατασκευή του μοντέλου, έγινε λογική εξομοίωση για να εξακριβωθεί ότι λειτουργεί σύμφωνα την αρχιτεκτονική που έχει σχεδιαστεί και αναλυθεί προηγουμένως. Στη συνέχεια θα γίνει αναφορά σε δύο ενδεικτικά παραδείγματα λογικής εξομοίωσης στο ISim Λογική εξομοίωση κωδικοποιητή Στα σχήματα 7.2 και 7.3 παρουσιάζονται κυματομορφές εξομοίωσης στο εργαλείο ISim. Για την εξομοίωση σχεδιάστηκε testbench που τροφοδοτεί τον κωδικοποιητή με τα byte του μηνύματος που πρέπει να κωδικοποιηθεί και στη συνέχεια ελέγχει την έξοδό του με την αναμενόμενη έξοδο που έχει υπολογισθεί με τα μοντέλα MATLAB. Η κυματομορφή με το γαλάζιο χρώμα αντιστοιχεί σε αυτή την αναμενόμενη έξοδο. Όπως μπορεί να φανεί και στα σχήματα, τα αποτελέσματα της εξομοίωσης είναι τα αναμενόμενα.

143 129 Σχήμα 7.2: Λογική εξομοίωση παράλληλου κωδικοποιητή BCH εκκίνηση κωδικοποίησης Σχήμα 7.3: Λογική εξομοίωση παράλληλου κωδικοποιητή BCH ολοκλήρωση κωδικοποίησης

144 Λογική εξομοίωση αποκωδικοποιητή Στα σχήματα 7.4 έως 7.9 παρουσιάζονται κυματομορφές εξομοίωσης στο εργαλείο ISim. Για την εξομοίωση σχεδιάστηκε testbench που τροφοδοτεί τον αποκωδικοποιητή με τα byte του μηνύματος που πρέπει να αποκωδικοποιηθεί και στη συνέχεια ελέγχει την έξοδό του με την αναμενόμενη έξοδο που έχει υπολογισθεί με τα μοντέλα MATLAB. Η κυματομορφή με το γαλάζιο χρώμα αντιστοιχεί σε αυτή την αναμενόμενη έξοδο. Όπως μπορεί να φανεί και στα σχήματα, τα αποτελέσματα της εξομοίωσης είναι τα αναμενόμενα. Πιο συγκεκριμένα, στο σχήμα 7.4 παρουσιάζονται οι κυματομορφές βασικών σημάτων του αποκωδικοποιητή για την αρχή της διαδικασίας κωδικοποίησης. Στο σχήμα 7.5 παρουσιάζονται οι κυματομορφές για την περίοδο ολοκλήρωσης του υπολογισμού των συνδρόμων, εκτέλεσης του αλγορίθμου SiBM και εκκίνησης της έρευνας κατά Chien. Στη συνέχεια, παρουσιάζονται οι κυματομορφές των σημάτων κατά τους κύκλους που γίνεται η διόρθωση λαθών. Στα σήματα που έχουν επισημανθεί, φαίνεται ο συντελεστής που μηδενίζεται και προκαλεί την διόρθωση του αντίστοιχου byte, ενώ φαίνεται ότι το byte που διαβάζεται από την εσωτερική μνήμη (received/fifo_out) διορθώνεται από τη μονάδα διόρθωσης λαθών στην τιμή που παίρνει το σήμα corrected. Τέλος, στο σχήμα 7.9 φαίνονται οι κυματομορφές των σημάτων κατά την ολοκλήρωση της διαδικασίας αποκωδικοποίησης. Στην Ενότητα έχει γίνει αναλυτική παρουσίαση του τρόπου λειτουργίας του αποκωδικοποιητή που σχεδιάστηκε. Οι κυματομορφές από την εξομοίωση είναι απόλυτα σύμφωνες με τις κυματομορφές προδιαγραφών και με την περιγραφή του συστήματος. Όπως θα αναλυθεί στην Ενότητα 7.6, το σύστημα δοκιμάστηκε με ένα επαρκώς μεγάλο σύνολο δοκιμής και η έξοδός του ήταν πάντα η αναμενόμενη. Μετά την λογικής εξομοίωση του μοντέλου VHDL και της επαλήθευσης ορθής λειτουργίας του (χωρίς να λαμβάνονται υπόψη οι χρονισμοί), επόμενο βήμα είναι η σύνθεση και η υλοποίηση του παράλληλου κωδικοποιητή και αποκωδικοποιητή ως ανεξάρτητα συστήματα, διαδικασία από την οποία μπορούν να εξαχθούν ενδιαφέροντα στοιχεία όσον αφορά την πολυπλοκότητα.

145 131 Σχήμα 7.4: Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH εκκίνηση αποκωδικοποίησης Σχήμα 7.5: Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH ολοκλήρωση υπολογισμού συνδρόμων, υπολογισμός συντελεστών πολυωνύμου Λ(x) και εκκίνηση έρευνας κατά Chien

146 132 Σχήμα 7.6: Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH διόρθωση 1ου λάθους μηνύματος Σχήμα 7.7: Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH διόρθωση 2ου και 3ου λάθους μηνύματος

147 133 Σχήμα 7.8: Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH διόρθωση 4ου λάθους μηνύματος Σχήμα 7.9: Λογική εξομοίωση παράλληλου αποκωδικοποιητή BCH ολοκλήρωση αποκωδικοποίησης

148 134 Σχήμα 7.10: Virtex-6 XC6VLX240T-2FF1759 Δομή και διασυνδέσεις 7.4 Σύνθεση (XST) και υλοποίηση ανεξάρτητων συστημάτων Σε αυτό το στάδιο, τα μοντέλο VHDL, των οποίων η λογική ορθότητα επαληθεύτηκε με χρήση λογικής εξομοίωσης για μεγάλο δείγμα εισόδων, διαβιβάστηκε στο εργαλείο ISE Project Navigator της Xilinx, ώστε να γίνει σύνθεση και υλοποίηση των συστημάτων κωδικοποιητή και αποκωδικοποιητή ανεξάρτητα, ώστε να γίνει μια πρώτη διερεύνηση ως προς την συχνότητα λειτουργίας που μπορεί να επιτύχει κάθε σύστημα, αλλά και της επιφάνειας που θα δεσμεύσει. Για τις διαδικασίες της σύνθεσης και της υλοποίησης σε υλικό χρησιμοποιήθηκε η συσκευή FPGA XC6VLX240T-2FF1759 της σειράς Virtex-6 της Xilinx, η οποία χρησιμοποιεί τεχνολογία ολοκλήρωσης στα 40 nm. Στo σχήμα 7.10 παρατίθεται ένα μπλοκ διάγραμμα με τη δομή και τις διασυνδέσεις της συσκευής Αποτελέσματα σύνθεσης και υλοποίησης κωδικοποιητή Στο σχήμα 7.11 παρατίθεται το σχήμα RTL (RTL Schematic) που παράχθηκε μετά τη σύνθεση του συστήματος του κωδικοποιητή. Σύμφωνα με την αναφορά χρονισμών μετά την διαδικασία Place and Route (Post-PAR Timing Report) η μέγιστη συχνότητα στην οποία μπορεί

149 135 Σχήμα 7.11: Σχήμα RTL για τον κωδικοποιητή μετά τη σύνθεση (XST) να λειτουργήσει ο κωδικοποιητής είναι τα MHz. Στα σχήματα 7.12 και 7.13 παρατίθενται οι αναφορές για τη χρησιμοποίηση υλικού Αποτελέσματα σύνθεσης και υλοποίησης αποκωδικοποιητή Στο σχήμα 7.14 παρατίθεται το σχήμα RTL (RTL Schematic) που παράχθηκε μετά τη σύνθεση του συστήματος του αποκωδικοποιητή. Σύμφωνα με την αναφορά χρονισμών μετά την διαδικασία Place and Route (Post-PAR Timing Report) η μέγιστη συχνότητα στην οποία μπορεί να λειτουργήσει ο αποκωδικοποιητής είναι τα MHz. Στα σχήματα 7.15 και 7.16 παρατίθενται οι αναφορές για τη χρησιμοποίηση υλικού. Γίνεται εύκολα αντιληπτό ότι ο αποκωδικοποιητής έχει μεγαλύτερη πολυπλοκότητα υλικού από τον κωδικοποιητή και χρειάζεται αρκετά μεγαλύτερη επιφάνεια.

150 136 Σχήμα 7.12: Χρησιμοποίηση υλικού για τον κωδικοποιητή μετά τη σύνθεση (XST)

151 137 Σχήμα 7.13: Χρησιμοποίηση λογικών στοιχείων για τον κωδικοποιητή μετά τη σύνθεση (XST) Σχήμα 7.14: Σχήμα RTL για τον αποκωδικοποιητή μετά τη σύνθεση (XST)

152 138 Σχήμα 7.15: Χρησιμοποίηση υλικού για τον αποκωδικοποιητή μετά τη σύνθεση (XST)

153 139 Σχήμα 7.16: Χρησιμοποίηση λογικών στοιχείων για τον αποκωδικοποιητή μετά τη σύνθεση (XST) 7.5 Αποτελέσματα από υλοποίηση ενσωματωμένου συστήματος (EDK) Στη συνέχεια, χρησιμοποιήθηκε το εργαλείο Xilinx Platform Studio του EDK για υλοποίηση του ενσωματωμένου συστήματος κωδικοποιητήαποκωδικοποιητή. Στο σχήμα 7.17 παρατίθεται η προβολή σχεδίασης του ενσωματωμένου συστήματος που υλοποιήθηκε, στο σχήμα 7.18 παρουσιάζονται τις διεπαφές των διάφορων module με τους διαύλους επικοινωνίας, στο σχήμα 7.19 φαίνεται η κατανομή διευθύνσεων στα διάφορα module του ενσωματωμένου συστήματος και στα σχήματα 7.21 και 7.20 φαίνεται η χρησιμοποίηση υλικού συνολικά και ανά module. Από το σχήμα 7.20 γίνεται σαφές ότι ο αποκωδικοποιητής BCH κα-

154 140 Σχήμα 7.17: Προβολή σχεδίασης του XPS για το ενσωματωμένο σύστημα κωδικοποιητή-αποκωδικοποιητή BCH ταλαμβάνει το μεγαλύτερο ποσοστό επιφάνειας στο ενσωματωμένο σε σχέση με τα υπόλοιπα υποσυστήματα, με ένα ποσοστό που φτάνει περίπου στο 40% του χώρου που χρησιμοποιείται συνολικά. Ο κωδικοποιητής BCH καταλαμβάνει πολύ μικρή επιφάνεια, κάτι που είναι απόλυτα λογικό καθώς από την ανάλυση στα Κεφάλαια 4 και 5 είναι φανερό πως έχει αρκετά μικρότερη πολυπλοκότητα από τον αποκωδικοποιητή. Για την λειτουργία του ενσωματωμένου συστήματος επιλέχθηκε η συχνότητα των 100 MHz. Κατά την υλοποίηση του συστήματος, το εργαλείο XPS ανέφερε ως μέγιστη δυνατή συχνότητα λειτουργίας τα MHz, τιμή αρκετά μικρότερη από την θεωρητική δυνατότητα που υπολογίσθηκε κατά την σύνθεση και υλοποίηση κάθε συστήματος ξεχωριστά. Αυτό οφείλεται στις επιπλέον μονάδες που έχουν προστεθεί στο σύστημα, όπως οι μνήμες FIFO, και στην επιπρόσθετη λογική που αναλαμβάνει την επικοινωνία των υποσυστημάτων εντός του περιφερειακού.

155 Σχήμα 7.18: Διεπαφές διαύλων για το ενσωματωμένο σύστημα στο XPS 141

156 142 Σχήμα 7.19: Κατανομή διευθύνσεων μνήμης για το ενσωματωμένο σύστημα στο XPS Σχήμα 7.20: Χρησιμοποίηση υλικού ανά module για για το ενσωματωμένο σύστημα στο XPS

157 Σχήμα 7.21: Χρησιμοποίηση υλικού για για το ενσωματωμένο σύστημα στο XPS 143

158 Επαλήθευση αποτελεσμάτων Μετά την υλοποίηση του ενσωματωμένου συστήματος με το Xilinx Platform Studio, χρησιμοποιήθηκε το Software Development Kit για να προγραμματιστεί η συσκευή FPGA με τα αρχεία bitstream και να γραφτεί λογισμικό για τον έλεγχο του συστήματος. Για το σκοπό αυτό χρησιμοποιήθηκε το σύνολο δοκιμής που τροφοδοτήθηκε ως είσοδος και στα μοντέλα MATLAB, ώστε να είναι δυνατή η σύγκριση της εξόδου της συσκευής FPGA με τις εξόδους των μοντέλων αυτών. Στη συνέχεια παρουσιάζονται κάποια παραδείγματα χρήσης των περιφερειακών αυτών. Παρατίθενται σε κάθε περίπτωση οι κυματομορφές από την λογική εξομοίωση και οι κυματομορφές από την κανονική λειτουργία του κωδικοποιητή και του αποκωδικοποιητή ως περιφερειακών τα οποία έχουν τροφοδοτηθεί με δεδομένα από τον MicroBlaze. Μπορεί εύκολα να διαπιστωθεί ότι οι κυματομορφές συμφωνούν απόλυτα και το σύστημα που σχεδιάστηκε λειτουργεί σύμφωνα με τις προδιαγραφές. Θα ακολουθήσουν κυματομορφές για την κωδικοποίηση ενός μηνύματος από τον κωδικοποιητή, και τρεις περιπτώσεις αποκωδικοποίησης μηνύματος από τον αποκωδικοποιητή: Αποκωδικοποίηση μηνύματος χωρίς λάθη Αποκωδικοποίηση μηνύματος με 4 λάθη (εντός διορθωτικής ικανότητας κώδικα) Αποκωδικοποίηση μηνύματος με 5 λάθη (εκτός διορθωτικής ικανότητας κώδικα)

159 Σχήμα 7.22: Εκκίνηση λειτουργίας αποκωδικοποιητή με μήνυμα χωρίς λάθη 145

160 146 Σχήμα 7.23: Εκκίνηση λειτουργίας αποκωδικοποιητή με μήνυμα χωρίς λάθη

161 Σχήμα 7.24: Εκκίνηση λειτουργίας αποκωδικοποιητή με μήνυμα χωρίς λάθη 147

162 148 Σχήμα 7.25: Παράκαμψη της υπόλοιπης διαδικασίας αποκωδικοποίησης σε μήνυμα χωρίς λάθη

163 Σχήμα 7.26: Ολοκλήρωση εξόδου του μηνύματος από τον αποκωδικοποιητή 149

164 150 Σχήμα 7.27: Εκκίνηση λειτουργίας αποκωδικοποιητή σε μήνυμα με 4 λάθη

165 Σχήμα 7.28: Είσοδος στον αποκωδικοποιητή του 1ου και 2ου λάθους του μηνύματος 151

166 152 Σχήμα 7.29: Είσοδος στον αποκωδικοποιητή του 3ου και 4ου λάθους του μηνύματος

167 Σχήμα 7.30: Διόρθωση 1ου και 2ου λάθους του μηνύματος 153

168 154 Σχήμα 7.31: Διόρθωση 3ου και 4ου λάθους του μηνύματος

169 Σχήμα 7.32: Τερματισμός λειτουργίας του αποκωδικοποιητή σε μήνυμα με 4 λάθη 155

170 156 Σχήμα 7.33: Είσοδος στον αποκωδικοποιητή του 1ου και 2ου λάθους ενός μηνύματος με 5 λάθη

171 Σχήμα 7.34: Είσοδος στον αποκωδικοποιητή του 3ου και 4ου λάθους ενός μηνύματος με 5 λάθη 157

172 158 Σχήμα 7.35: Είσοδος στον αποκωδικοποιητή του 5ου λάθους ενός μηνύματος με 5 λάθη

173 159 Σχήμα 7.36: Αποτυχία διόρθωσης του 1ου και 2ου λάθους ενός μηνύματος με 5 λάθη

174 160 Σχήμα 7.37: Αποτυχία διόρθωσης του 3ου και 4ου λάθους ενός μηνύματος με 5 λάθη

175 Σχήμα 7.38: Αποτυχία διόρθωσης του 5ου λάθους και ολοκλήρωση αποκωδικοποίησης ενός μηνύματος με 5 λάθη 161

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες Πρώτο Κεφάλαιο Εισαγωγή στα Ψηφιακά Συστήματα 1.1 Αναλογικά και Ψηφιακά Σήματα και Συστήματα... 1 1.2 Βασικά Ψηφιακά Κυκλώματα... 3 1.3 Ολοκληρωμένα κυκλώματα... 4 1.4 Τυπωμένα κυκλώματα... 7 1.5 Εργαλεία

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

Χρήστος Ξενάκης. Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων

Χρήστος Ξενάκης. Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων ΘΕΩΡΙΑ ΠΛΗΡΟΦΟΡΙΑΣ Κεφάλαιο 10 : Κωδικοποίηση καναλιού Χρήστος Ξενάκης Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων Περιεχόμενα Ομιλίας Απόσταση και βάρος Hamming Τεχνικές και κώδικες ανίχνευσης &

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

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

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

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

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Πεπερασμένες και Διαιρεμένες Διαφορές Εισαγωγή Θα εισάγουμε την έννοια των διαφορών με ένα

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

«Σύστημα Διόρθωσης Λαθών Βασισμένο σε Κώδικες BCH και Yλοποίηση σε FPGA»

«Σύστημα Διόρθωσης Λαθών Βασισμένο σε Κώδικες BCH και Yλοποίηση σε FPGA» ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΣΧΕΔΙΑΣΜΟΥ VLSI ΚΥΚΛΩΜΑΤΩΝ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων

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

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

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

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

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

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

Nέες Τεχνολογίες. στις Επικοινωνίες

Nέες Τεχνολογίες. στις Επικοινωνίες Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Τμήμα Πληροφορικής & Επικοινωνιών Nέες Τεχνολογίες στις Επικοινωνίες Δρ. Δημήτριος Ευσταθίου Επίκουρος Καθηγητής Κώδικες Διόρθωσης Λαθών Τεχνολογικό Εκπαιδευτικό

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

(a + b) + c = a + (b + c), (ab)c = a(bc) a + b = b + a, ab = ba. a(b + c) = ab + ac

(a + b) + c = a + (b + c), (ab)c = a(bc) a + b = b + a, ab = ba. a(b + c) = ab + ac Σημειώσεις μαθήματος Μ1212 Γραμμική Άλγεβρα ΙΙ Χρήστος Κουρουνιώτης ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 2014 Κεφάλαιο 1 Διανυσματικοί Χώροι Στο εισαγωγικό μάθημα Γραμμικής Άλγεβρας ξεκινήσαμε μελετώντας

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ψηφιακή Σχεδίαση Ενότητα 12: Σύνοψη Θεμάτων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΨΗΦΙΑΚΑ ΟΛΟΚΛΗΡΩΜΕΝΑ ΗΛΕΚΤΡΟΝΙΚΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΟΜΑ Α Α Αριθµητική Λογική Μονάδα των 8-bit 1. Εισαγωγή Γενικά µια αριθµητική λογική µονάδα (ALU, Arithmetic Logic Unit)

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

Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Τμήμα Μηχανικών Η/Υ και Πληροφορικής Τμήμα Μηχανικών Η/Υ και Πληροφορικής Εργαστήριο Επεξεργασίας Σημάτων και Τηλεπικοινωνιών Ασύρματες και Κινητές Επικοινωνίες Κωδικοποίηση καναλιού Τι θα δούμε στο μάθημα Σύντομη εισαγωγή Γραμμικοί κώδικες

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

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

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

Συνδυαστικά Κυκλώματα

Συνδυαστικά Κυκλώματα 3 Συνδυαστικά Κυκλώματα 3.1. ΣΥΝΔΥΑΣΤΙΚΗ Λ ΟΓΙΚΗ Συνδυαστικά κυκλώματα ονομάζονται τα ψηφιακά κυκλώματα των οποίων οι τιμές της εξόδου ή των εξόδων τους διαμορφώνονται αποκλειστικά, οποιαδήποτε στιγμή,

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

a = a a Z n. a = a mod n.

a = a a Z n. a = a mod n. Αλγεβρα Ι Χειμερινο Εξαμηνο 2017 18 Διάλεξη 1 Ενότητα 1. Πράξεις: Πράξεις στο σύνολο S, ο πίνακας της πράξης, αντιμεταθετικές πράξεις. Προσεταιριστικές πράξεις, το στοιχείο a 1 a 2 a n. Η πράξη «σύνθεση

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

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

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

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

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

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

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

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

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

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

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

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

ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΣΥΝΔΡΟΜΟΥ. ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ BCC (1) (Υπολογισμός Συνδρόμου)

ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΣΥΝΔΡΟΜΟΥ. ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ BCC (1) (Υπολογισμός Συνδρόμου) ΚΥΚΛΩΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΣΥΝΔΡΟΜΟΥ... Πύλη Ανασύζευξη πριν την ολίσθηση g g g -k- + s o + s +... + S -k- Πύλη Διάνυσμα λήψης R(x) Κύκλωμα ανάλογο με αυτό του κωδικοποιητή Βήματα:. iitializatio s i = πύλη off,

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

Περιεχόμενα. Πρόλογος... XI. Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA Κεφάλαιο 2. Τεχνολογία VLSI Εισαγωγή Βασικές Αρχές...

Περιεχόμενα. Πρόλογος... XI. Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA Κεφάλαιο 2. Τεχνολογία VLSI Εισαγωγή Βασικές Αρχές... Περιεχόμενα Πρόλογος... XI Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA... 1 1.1 Εισαγωγή... 1 1.2 Βασικές Αρχές... 1 1.2.1 Boolean Άλγεβρα... 1 1.2.2 Σχηματικά και Λογικά Σύμβολα... 6 1.3 Ψηφιακή Σχεδίαση

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

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή 6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή Εισαγωγή Η σχεδίαση ενός ψηφιακού συστήµατος ως ακολουθιακή µηχανή είναι εξαιρετικά δύσκολη Τµηµατοποίηση σε υποσυστήµατα µε δοµικές µονάδες:

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 11: Αριθμητική υπολοίπων-δυνάμεις Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Ψηφιακά Συστήματα. 6. Σχεδίαση Συνδυαστικών Κυκλωμάτων

Ψηφιακά Συστήματα. 6. Σχεδίαση Συνδυαστικών Κυκλωμάτων Ψηφιακά Συστήματα 6. Σχεδίαση Συνδυαστικών Κυκλωμάτων Βιβλιογραφία 1. Φανουράκης Κ., Πάτσης Γ., Τσακιρίδης Ο., Θεωρία και Ασκήσεις Ψηφιακών Ηλεκτρονικών, ΜΑΡΙΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΕΠΕ, 2016. [59382199] 2. Floyd

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

Παράδειγμα 14.2 Να βρεθεί ο μετασχηματισμός Laplace των συναρτήσεων

Παράδειγμα 14.2 Να βρεθεί ο μετασχηματισμός Laplace των συναρτήσεων Κεφάλαιο 4 Μετασχηματισμός aplace 4. Μετασχηματισμός aplace της εκθετικής συνάρτησης e Είναι Άρα a a a u( a ( a ( a ( aj F( e e d e d [ e ] [ e ] ( a e (c ji, με a (4.9 a a a [ e u( ] a, με a (4.3 Η σχέση

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

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης; 10. Τι ονομάζουμε Ευκλείδεια διαίρεση και τέλεια διαίρεση; Όταν δοθούν δύο φυσικοί αριθμοί Δ και δ, τότε υπάρχουν δύο άλλοι φυσικοί αριθμοί π και υ, έτσι ώστε να ισχύει: Δ = δ π + υ. Ο αριθμός Δ λέγεται

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

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

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 1) Να μετατρέψετε τον δεκαδικό αριθμό (60,25) 10, στον αντίστοιχο δυαδικό 11111,11 111001,01 111100,01 100111,1 111100,01 2)

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

9 Πολυώνυμα Διαίρεση πολυωνύμων

9 Πολυώνυμα Διαίρεση πολυωνύμων 4ο Κεφάλαιο 9 Πολυώνυμα Διαίρεση πολυωνύμων Α ΑΠΑΡΑΙΤΗΤΕΣ ΓΝΩΣΕΙΣ ΘΕΩΡΙΑΣ Ορισμοί Μονώνυμο του x ονομάζουμε κάθε παράσταση της μορφής ν αx όπου α R, * ν N και x μια μεταβλητή που μπορεί να πάρει οποιαδήποτε

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

Τεχνικές διόρθωσης και ανίχνευσης σφαλµάτων

Τεχνικές διόρθωσης και ανίχνευσης σφαλµάτων Τεχνικές διόρθωσης και ανίχνευσης σφαλµάτων Εντοπισµός σφαλµάτων Εντοπισµός ιόρθωση Προστίθενται bit πλεονασµού Αν µπορεί διορθώνει, (forward error correction) αλλιώς ζητά επανεκποµπή (backward error correction)

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

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος ΜEd: «Σπουδές στην εκπαίδευση» ΚΕΦΑΛΑΙΟ 1 Ο : Εξισώσεις - Ανισώσεις 1 1.1 Η ΕΝΝΟΙΑ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ ΑΛΓΕΒΡΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΟΡΙΣΜΟΙ Μεταβλητή

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

Θεωρία Πληροφορίας. Διάλεξη 7: Κωδικοποίηση καναλιού με γραμμικούς κώδικες block. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Θεωρία Πληροφορίας. Διάλεξη 7: Κωδικοποίηση καναλιού με γραμμικούς κώδικες block. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής Θεωρία Πληροφορίας Διάλεξη 7: Κωδικοποίηση καναλιού με γραμμικούς κώδικες block Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα Τεχνικές Διόρθωσης Λαθών Κώδικες εντοπισμού λαθών Κώδικες εντοπισμού

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

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

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

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

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα. i Π Ρ Ο Λ Ο Γ Ο Σ Το βιβλίο αυτό αποτελεί μια εισαγωγή στα βασικά προβλήματα των αριθμητικών μεθόδων της υπολογιστικής γραμμικής άλγεβρας (computational linear algebra) και της αριθμητικής ανάλυσης (numerical

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

Το μόνο, ίσως, μειονέκτημά τους είναι ότι το μήκος τους υπόκειται σε περιορισμό από το πλήθος των στοιχείων του σώματος επί του οποίου ορίζονται.

Το μόνο, ίσως, μειονέκτημά τους είναι ότι το μήκος τους υπόκειται σε περιορισμό από το πλήθος των στοιχείων του σώματος επί του οποίου ορίζονται. ΚΕΦΑΛΑΙΟ 5 Κώδικες Reed-Solomo και συναφείς κώδικες To 1959 o Hocqueghe και, ανεξάρτητα, το 1960 οι Bose Ray-Chaudhuri επινόησαν μια κατηγορία κωδίκων τους λεγόμενους BCH κώδικες. Οι κώδικες αυτοί είναι

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

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών: Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 23 Διάρκεια εξέτασης : 6 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών: Θέμα (,5 μονάδες) Στις εισόδους του ακόλουθου κυκλώματος c b a εφαρμόζονται οι κάτωθι κυματομορφές.

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

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών... 37 3.1 Αριθμητικά σύνολα... 37 3.2 Ιδιότητες... 37 3.3 Περισσότερες ιδιότητες...

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών... 37 3.1 Αριθμητικά σύνολα... 37 3.2 Ιδιότητες... 37 3.3 Περισσότερες ιδιότητες... Περιεχόμενα Πρόλογος... 5 Κεφάλαιο Βασικές αριθμητικές πράξεις... 5. Τέσσερις πράξεις... 5. Σύστημα πραγματικών αριθμών... 5. Γραφική αναπαράσταση πραγματικών αριθμών... 6.4 Οι ιδιότητες της πρόσθεσης

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

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

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

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

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

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

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

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

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

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή Κεφάλαιο. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας Περιεχόμενα. Αριθμητικά συστήματα. Μετατροπή αριθμών από ένα σύστημα σε άλλο.3 Πράξεις στο δυαδικό σύστημα.4 Πράξεις στο δεκαεξαδικό σύστημα.5

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

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ & ΗΛΕΚΤΡΟΝΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ & μ-υπολογιστων ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ Θεωρητικό Μέρος Οι σειριακές λειτουργίες είναι πιο

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

Αριθμητικά Συστήματα

Αριθμητικά Συστήματα Αριθμητικά Συστήματα Σε οποιοδήποτε αριθμητικό σύστημα, με βάση τον αριθμό Β, ένας ακέραιος αριθμός με πλήθος ψηφίων ν, εκφράζεται ως ακολούθως: α ν-1 α ν-2 α 1 α 0 = α ν-1 Β ν-1 + α ν-2 Β ν-2 + + α 1

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

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

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

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

3. Απλοποίηση Συναρτήσεων Boole

3. Απλοποίηση Συναρτήσεων Boole 3. Απλοποίηση Συναρτήσεων Boole 3. Μέθοδος του χάρτη Η πολυπλοκότητα ψηφιακών πυλών που υλοποιούν μια συνάρτηση Boole σχετίζεται άμεσα με την πολύπλοκότητα της αλγεβρικής της έκφρασης. Η αλγεβρική αναπαράσταση

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

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Παρεμβολή και Παρεκβολή Εισαγωγή Ορισμός 6.1 Αν έχουμε στη διάθεσή μας τιμές μιας συνάρτησης

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 3 Λειτουργίες σε Bits, Αριθμητικά Συστήματα Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Φύση υπολογιστών Η

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

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit! Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 25-6 Πράξεις με δυαδικούς αριθμούς (αριθμητικές ) http://di.ionio.gr/~mistral/tp/csintro/ Αριθμοί Πράξεις με δυαδικούς αριθμούς

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

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

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

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

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

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

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ ΚΕΦΑΛΑΙΟ 7 Ο ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ 1. Όταν μπροστα" (αριστερα") απο" ε"ναν αριθμο" γραφει" το συ"μβολο + το"τε ο αριθμο"ς

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

Μεταθέσεις και πίνακες μεταθέσεων

Μεταθέσεις και πίνακες μεταθέσεων Παράρτημα Α Μεταθέσεις και πίνακες μεταθέσεων Το παρόν παράρτημα βασίζεται στις σελίδες 671 8 του βιβλίου: Γ. Χ. Ψαλτάκης, Κβαντικά Συστήματα Πολλών Σωματιδίων (Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο,

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

Πράξεις με δυαδικούς αριθμούς

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

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

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER 4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER Σκοπός του κεφαλαίου είναι να παρουσιάσει μερικές εφαρμογές του Μετασχηματισμού Fourier (ΜF). Ειδικότερα στο κεφάλαιο αυτό θα περιγραφούν έμμεσοι τρόποι

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

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Ολοκλήρωση Εισαγωγή Έστω ότι η f είναι μία φραγμένη συνάρτηση στο πεπερασμένο

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

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ 1.1 Εισαγωγή...11 1.2 Τα κύρια αριθμητικά Συστήματα...12 1.3 Μετατροπή αριθμών μεταξύ των αριθμητικών συστημάτων...13 1.3.1 Μετατροπή ακέραιων

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

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών TINΑ ΒΡΕΝΤΖΟΥ www.ma8eno.gr www.ma8eno.gr Σελίδα 1 Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Στους πραγματικούς αριθμούς ορίστηκαν οι

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

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

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

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών Συμβολισμοί Σε αναλογία με τους ορισμούς συμβολίζουμε μια ακολουθία: 1 είτε μέσω του διανυσματικού ορισμού, παραθέτοντας αναγκαστικά

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Μάθημα 4 ο Πράξεις με bits Δρ. Γκόγκος Χρήστος Κατηγορίες πράξεων με bits Πράξεις με δυαδικά ψηφία Αριθμητικές πράξεις

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

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

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

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

ΚΩΔΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΥ ΣΦΑΛΜΑΤΟΣ (2)

ΚΩΔΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΥ ΣΦΑΛΜΑΤΟΣ (2) ΚΩΔΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΥ ΣΦΑΛΜΑΤΟΣ () P e συνάρτηση των S/N και r b (B) Συμβάσεις κανονισμοί για τα S, B Φασματική πυκνότητα θορύβου καθορισμένη Πολυπλοκότητα και κόστος συστήματος ΚΩΔΙΚΟΠΟΙΗΣΗ ΚΑΝΑΛΙΟΥ Καλά

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

Μαθηματικά Γ Γυμνασίου

Μαθηματικά Γ Γυμνασίου Α λ γ ε β ρ ι κ έ ς π α ρ α σ τ ά σ ε ι ς 1.1 Πράξεις με πραγματικούς αριθμούς (επαναλήψεις συμπληρώσεις) A. Οι πραγματικοί αριθμοί και οι πράξεις τους Διδακτικοί στόχοι Θυμάμαι ποιοι αριθμοί λέγονται

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΜΑΘΗΜΑ 2 ο ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ 2009-10 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ 1 Άλγεβρα Βοοle η θεωρητική βάση των λογικών κυκλωμάτων Η άλγεβρα Βοοle ορίζεται επάνω στο σύνολο

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης 1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης Στη συγκεκριμένη ενότητα εξετάζουμε θέματα σχετικά με την αριθμητική πεπερασμένης ακρίβειας που χρησιμοποιούν οι σημερινοί υπολογιστές και τα

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

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Συνδυαστική Λογική. Επιμέλεια Διαφανειών: Δ. Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Συνδυαστική Λογική Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Ψηφιακά Κυκλώματα Τα ψηφιακά κυκλώματα διακρίνονται σε συνδυαστικά (combinational)

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

Μνήμη και Προγραμματίσιμη Λογική

Μνήμη και Προγραμματίσιμη Λογική Μνήμη και Προγραμματίσιμη Λογική Η μονάδα μνήμης είναι ένα στοιχείο κυκλώματος στο οποίο μεταφέρονται ψηφιακές πληροφορίες προς αποθήκευση και από το οποίο μπορούμε να εξάγουμε αποθηκευμένες πληροφορίες

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

Ολοκληρωμένα Κυκλώματα

Ολοκληρωμένα Κυκλώματα Δημοκρίτειο Πανεπιστήμιο Θράκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γ. Δημητρακόπουλος Ολοκληρωμένα Κυκλώματα Πρόοδος - Φθινόπωρο 2017 Θέμα 1 ο Σχεδιάστε το datapath για τον υπολογισμό

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

Εισαγωγή στις Τηλεπικοινωνίες. Δομή της παρουσίασης

Εισαγωγή στις Τηλεπικοινωνίες. Δομή της παρουσίασης 1 Oct 16 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εισαγωγή στις Τηλεπικοινωνίες Διάλεξη 4 η Γεωμετρική Αναπαράσταση

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

β) 3 n < n!, n > 6 i i! = (n + 1)! 1, n 1 i=1

β) 3 n < n!, n > 6 i i! = (n + 1)! 1, n 1 i=1 Κεφάλαιο 2: Στοιχεία Λογικής - Μέθοδοι Απόδειξης 1. Να αποδειχθεί ότι οι λογικοί τύποι: (p ( (( p) q))) (p q) και p είναι λογικά ισοδύναμοι. Θέλουμε να αποδείξουμε ότι: (p ( (( p) q))) (p q) p, ή με άλλα

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

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

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

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

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

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

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

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,... KΕΦΑΛΑΙΟ ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ Βασικές έννοιες διαιρετότητας Θα συµβολίζουµε µε, τα σύνολα των φυσικών αριθµών και των ακεραίων αντιστοίχως: {,,3,,, } { 0,,,,, } = = ± ± ± Ορισµός Ένας φυσικός αριθµός

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

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

ΑΚΑΔΗΜΙΑ ΕΜΠΟΡΙΚΟΥ ΝΑΥΤΙΚΟΥ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : TEΣT ΑΞΙΟΛΟΓΗΣΗΣ ΓΝΩΣΕΩΝ ΣΤΑ ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ ΑΚΑΔΗΜΙΑ ΕΜΠΟΡΙΚΟΥ ΝΑΥΤΙΚΟΥ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : TEΣT ΑΞΙΟΛΟΓΗΣΗΣ ΓΝΩΣΕΩΝ ΣΤΑ ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ ΣΠΟΥΔΑΣΤΗΣ : Λιασένκο Ρομάν ΕΠΙΒΛΕΠΟΥΣΑ ΚΑΘΗΓΗΤΡΙΑ : Τόλιου Κατερίνα NEA

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

Οι Φυσικοί Αριθμοί. Παρατήρηση: Δεν στρογγυλοποιούνται αριθμοί τηλεφώνων, Α.Φ.Μ., κωδικοί αριθμοί κλπ. Πρόσθεση Φυσικών αριθμών

Οι Φυσικοί Αριθμοί. Παρατήρηση: Δεν στρογγυλοποιούνται αριθμοί τηλεφώνων, Α.Φ.Μ., κωδικοί αριθμοί κλπ. Πρόσθεση Φυσικών αριθμών Οι Φυσικοί Αριθμοί Γνωρίζουμε ότι οι αριθμοί είναι ποσοτικές έννοιες και για να τους γράψουμε χρησιμοποιούμε τα αριθμητικά σύμβολα. Οι αριθμοί μετρούν συγκεκριμένα πράγματα και φανερώνουν το πλήθος της

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

(a 1, b 1 ) (a 2, b 2 ) = (a 1 a 2, b 1 b 2 ).

(a 1, b 1 ) (a 2, b 2 ) = (a 1 a 2, b 1 b 2 ). ΕΜ0 - Διακριτά Μαθηματικά Ιανουαρίου 006 Άσκηση - Λύσεις Πρόβλημα [0 μονάδες] Εστω L και L δύο κυκλώματα σε ένα γράφημα G. Εστω a μία ακμή που ανήκει και στο L και στο L και έστω b μία ακμή που ανήκει

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

Τα παρακάτω σύνολα θα τα θεωρήσουμε γενικά γνωστά, αν και θα δούμε πολλές από τις ιδιότητές τους: N Z Q R C

Τα παρακάτω σύνολα θα τα θεωρήσουμε γενικά γνωστά, αν και θα δούμε πολλές από τις ιδιότητές τους: N Z Q R C Κεφάλαιο 1 Εισαγωγικές έννοιες Στο κεφάλαιο αυτό θα αναφερθούμε σε ορισμένες έννοιες, οι οποίες ίσως δεν έχουν άμεση σχέση με τους διανυσματικούς χώρους, όμως θα χρησιμοποιηθούν αρκετά κατά τη μελέτη τόσο

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

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ Θέματα μελέτης Ορθότητα και απόδοση αλγορίθμων Παρουσίαση και ανάλυση αλγορίθμου για πρόσθεση Al Khwarizmi Αλγόριθμοι Το δεκαδικό σύστημα εφευρέθηκε στην Ινδία περίπου το

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

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

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

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

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

4.1. Πολυώνυμα. Η έννοια του πολυωνύμου

4.1. Πολυώνυμα. Η έννοια του πολυωνύμου 4.1 Πολυώνυμα Η έννοια του πολυωνύμου ΟΡΙΣΜΟΙ 1. Μονώνυμο του x ονομάζουμε κάθε παράσταση της μορφής αx ν, όπου α R, ν N (σταθερές) και x R (μεταβλητή). 2. Πολυώνυμο του x ονομάζουμε κάθε παράσταση της

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

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών Συμπίεση Δεδομένων Δοκιμής (Test Data Compression), Παν Πατρών Test resource partitioning techniques ΑΤΕ Automatic Test Equipment (ATE) based BIST based Έλεγχος παραγωγής γής βασισμένος σε ΑΤΕ Μεγάλος

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

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

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

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

Ανίχνευση και διόρθωση σφαλμάτων σε συστήματα επικοινωνιών με κωδικοποίηση Reed-Solomon

Ανίχνευση και διόρθωση σφαλμάτων σε συστήματα επικοινωνιών με κωδικοποίηση Reed-Solomon Ανίχνευση και διόρθωση σφαλμάτων σε συστήματα επικοινωνιών με κωδικοποίηση Reed-Solomon Αλέξανδρος Βασιλείου Σεπτέμβριος 2011 Πανεπιστήμιο Πατρών PERIEQŸOMENA Συνεισφορά της εργασίας...........................

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

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

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

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

* * * ( ) mod p = (a p 1. 2 ) mod p.

* * * ( ) mod p = (a p 1. 2 ) mod p. Θεωρια Αριθμων Εαρινο Εξαμηνο 2016 17 Μέρος Α: Πρώτοι Αριθμοί Διάλεξη 1 Ενότητα 1. Διαιρετότητα: Διαιρετότητα, διαιρέτες, πολλαπλάσια, στοιχειώδεις ιδιότητες. Γραμμικοί Συνδυασμοί (ΓΣ). Ενότητα 2. Πρώτοι

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

2ογελ ΣΥΚΕΩΝ 2ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ

2ογελ ΣΥΚΕΩΝ 2ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ογελ ΣΥΚΕΩΝ ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ο ΓΕΛ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β ΛΥΚΕΙΟΥ ογελ ΣΥΚΕΩΝ ογελ ΣΥΚΕΩΝ ΣΧΟΛΙΚΟ ΕΤΟΣ -4 ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Επιμέλεια: ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

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

ΕΑΠ/ΠΛΗ22/ΑΘΗ.4/4η ΟΣΣ/ Ν.Δημητρίου 1

ΕΑΠ/ΠΛΗ22/ΑΘΗ.4/4η ΟΣΣ/ Ν.Δημητρίου 1 (*) Οι σημειώσεις αυτές συνοψίζουν τα βασικά σημεία της παρουσίασης PLH22_OSS4_slides_2015_2016 που είναι διαθέσιμη στο study.eap.gr ΕΑΠ/ΠΛΗ22/ΑΘΗ.4/4η ΟΣΣ/ Ν.Δημητρίου 1 ΕΑΠ/ΠΛΗ22/ΑΘΗ.4/4η ΟΣΣ/ Ν.Δημητρίου

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

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

5. (Λειτουργικά) Δομικά Διαγράμματα

5. (Λειτουργικά) Δομικά Διαγράμματα 5. (Λειτουργικά) Δομικά Διαγράμματα Γενικά, ένα λειτουργικό δομικό διάγραμμα έχει συγκεκριμένη δομή που περιλαμβάνει: Τις δομικές μονάδες (λειτουργικά τμήματα ή βαθμίδες) που συμβολίζουν συγκεκριμένες

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

Γραμμική Αλγεβρα ΙΙ Διάλεξη 1 Εισαγωγή Χρήστος Κουρουνιώτης Πανεπισ τήμιο Κρήτης 19/2/2014 Χ.Κουρουνιώτης (Παν.Κρήτης) Διάλεξη 1 19/2/ / 13

Γραμμική Αλγεβρα ΙΙ Διάλεξη 1 Εισαγωγή Χρήστος Κουρουνιώτης Πανεπισ τήμιο Κρήτης 19/2/2014 Χ.Κουρουνιώτης (Παν.Κρήτης) Διάλεξη 1 19/2/ / 13 Γραμμική Άλγεβρα ΙΙ Διάλεξη 1 Εισαγωγή Χρήστος Κουρουνιώτης Πανεπιστήμιο Κρήτης 19/2/2014 Χ.Κουρουνιώτης (Παν.Κρήτης) Διάλεξη 1 19/2/2014 1 / 13 Εισαγωγή Τι έχουμε μάθει; Στο πρώτο μάθημα Γραμμικής Άλγεβρας

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

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET)

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 25-6 Το τρανζίστορ MOS(FET) πύλη (gate) Ψηφιακή και Σχεδίαση πηγή (source) καταβόθρα (drai) (σχεδίαση συνδυαστικών κυκλωμάτων) http://di.ioio.gr/~mistral/tp/comparch/

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

Θέµατα ( ικαιολογείστε πλήρως όλες τις απαντήσεις σας)

Θέµατα ( ικαιολογείστε πλήρως όλες τις απαντήσεις σας) Τµήµα Μαθηµατικών, Πανεπιστηµίου Κρήτης Εξεταστική περίοδος Ιουνίου ακαδηµαϊκού έτους 29-21 Παρασκευή, 1 Ιουνίου 21 Εφαρµοσµένη Άλγεβρα ιδάσκων: Α. Τόγκας Θέµατα ( ικαιολογείστε πλήρως όλες τις απαντήσεις

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

Τι είναι βαθμωτό μέγεθος? Ένα μέγεθος που περιγράφεται μόνο με έναν αριθμό (π.χ. πίεση)

Τι είναι βαθμωτό μέγεθος? Ένα μέγεθος που περιγράφεται μόνο με έναν αριθμό (π.χ. πίεση) TETY Εφαρμοσμένα Μαθηματικά Ενότητα ΙΙ: Γραμμική Άλγεβρα Ύλη: Διανυσματικοί χώροι και διανύσματα, μετασχηματισμοί διανυσμάτων, τελεστές και πίνακες, ιδιοδιανύσματα και ιδιοτιμές πινάκων, επίλυση γραμμικών

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

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

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

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

Δ/νση Β /θµιας Εκπ/σης Φλώρινας Κέντρο ΠΛΗ.ΝΕ.Τ. Πολυώνυµα ΠΟΛΥΩΝΥΜΑ ΑΚΕΡΑΙΑ ΠΟΛΥΩΝΥΜΑ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ

Δ/νση Β /θµιας Εκπ/σης Φλώρινας Κέντρο ΠΛΗ.ΝΕ.Τ. Πολυώνυµα ΠΟΛΥΩΝΥΜΑ ΑΚΕΡΑΙΑ ΠΟΛΥΩΝΥΜΑ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ ΠΟΛΥΩΝΥΜΑ ΑΚΕΡΑΙΑ ΠΟΛΥΩΝΥΜΑ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ Ορισµός Ονοµάζουµε ακέραιο πολυώνυµο του x κάθε έκφραση της µορφής : α ν x ν + α ν-1 x ν-1 + α ν-2 x ν-2 + +α 1 x + α 0 όπου α ν, α ν-1, α ν-2,, α 1, α 0 C και

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

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

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

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

Μαθηματικά μοντέλα συστημάτων

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

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