Αρχιτεκτονικές διόρθωσης λαθών βασισµένες σε κώδικες BCH

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

Download "Αρχιτεκτονικές διόρθωσης λαθών βασισµένες σε κώδικες BCH"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ Μεταπτυχιακό ίπλωµα Ειδίκευσης «Ολοκληρωµένα Συστήµατα Υλικού & Λογισµικού» Αρχιτεκτονικές διόρθωσης λαθών βασισµένες σε κώδικες BCH Μεταπτυχιακή ιπλωµατική Εργασία Σπουρλής Γεώργιος Πάτρα, Μάρτιος 2012 ~ 1 ~

2 ~ 2 ~

3 Αρχιτεκτονικές διόρθωσης λαθών βασισµένες σε κώδικες BCH Μεταπτυχιακή ιπλωµατική Εργασία Σπουρλής Γεώργιος Α.Μ. 165 Επιβλέπων Καθηγητής: Παλιουράς Βασίλειος Μέλη Εξεταστικής Επιτροπής: Μπερµπερίδης Κωνσταντίνος Νικολός ηµήτριος Πάτρα, Μάρτιος 2012 ~ 3 ~

4 ~ 4 ~

5 Ευχαριστίες Για την εκπόνηση της παρούσας διπλωµατικής εργασίας, θα ήθελα να ευχαριστήσω θερµά τον επιβλέποντα καθηγητή µου, κ. Βασίλη Παλιουρά, για την πολύτιµη βοήθεια και τη συνεχή υποστήριξη που µου παρείχε. Θα ήθελα να ευχαριστήσω τους Γ. Τσατσαράγκο, A. Mahdi και τον Π. Σακελλαρίου, υποψήφιους διδάκτορες του Τµήµατος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών για την άριστη συνεργασία, την συνεχή ενασχόληση τους για την επίλυση αποριών σε θέµατα τηλεπικοινωνιακών συστηµάτων, ειδικότερα για τα επιπρόσθετα έτοιµα τµήµατα που χρησιµοποιήθηκαν στα πλαίσια αυτής της εργασίας καθώς και για την πολύτιµη βοήθεια τους σε θέµατα σχεδιασµού και χειρισµού των εργαλείων που χρησιµοποιήθηκαν. Τέλος θα ήθελα να ευχαριστήσω τους κυρίους Κ. Μπερµπερίδη και. Νικολό για την συµµετοχή τους στην τριµελή εξεταστική επιτροπή. ~ 5 ~

6 Περιεχόµενα Σκοπός και αντικείµενο της εργασίας. 15 Οργάνωση της εργασίας.. 17 Κεφάλαιο 1: Τηλεπικοινωνιακό Σύστηµα Σύστηµα ψηφιακής επικοινωνίας Μοντέλο ψηφιακού συστήµατος προς ανάλυση Μέτρηση απόδοσης Κεφάλαιο 2: Κατηγορίες κωδικών διόρθωσης Αριθµητική συστήµατος Συνελικτικοί κώδικες (Convolutional codes) Γραµµικοί µπλοκ κώδικες (Linear block codes) Κυκλικοί κώδικες (Cyclic codes) Αριθµητική συστήµατος Πεδία (Fields) Πεδία πραγµατικών R και µιγαδικών C αριθµών Πεδία Galois Μη ανάγωγα και πρωταρχικά πολυώνυµα Συζυγή στοιχεία και ελάχιστα πολυώνυµα Συζυγή στοιχεία (Conjugate elements) Ελάχιστα πολυώνυµα (Minimal polynomials) Παραγοντοποίηση x Γεννήτρια ψευδοτυχαίων αριθµών Κυκλώµατα βασικών πράξεων σε πεδία Galois Πρόσθεση Αφαίρεση Πολλαπλασιασµός ιαίρεση. 50 Κεφάλαιο 3: Κώδικες LDPC BCH Κώδικες LDPC Κωδικοποίηση ~ 6 ~

7 3.1.2 Αποκωδικοποίηση Αλγόριθµοι message-passing Πλεονεκτήµατα Μειονεκτήµατα Κώδικες BCH Κωδικοποίηση Αποκωδικοποίηση Υπολογισµός Syndromes Το Πολυώνυµο Εύρεσης Λαθών (Error Locator Polynomial) Υπολογισµός ριζών πολυωνύµου εύρεσης λαθών ιόρθωση λαθών Μη δυαδικοί κώδικες Πλεονεκτήµατα Μειονεκτήµατα 67 Κεφάλαιο 4: Αρχιτεκτονική και αλγόριθµοι αποκωδικοποίησης BCH Τρέχον επίπεδο τεχνογνωσίας State of the art για BCH κώδικες Γενικές αρχές Ανάλυση αλγορίθµων και αντίστοιχης αρχιτεκτονικής Κωδικοποιητής BCH Αλγόριθµος Αρχιτεκτονική data path Λειτουργία FSM Υλοποίηση shortening Γενικά χαρακτηριστικά Αποκωδικοποιητής Υπολογισµός syndromes Αλγόριθµος Αρχιτεκτονική data path Λειτουργία FSM Υλοποίηση shortening Γενικά χαρακτηριστικά Αποκωδικοποιητής Υπολογισµός πολυωνύµου εύρεσης λαθών (error locator polynomial).. 84 ~ 7 ~

8 Αλγόριθµος Αρχιτεκτονική data path Λειτουργία FSM Υλοποίηση shortening Γενικά χαρακτηριστικά Αποκωδικοποιητής Υπολογισµός syndromes µε τη µέθοδο Chien Search Αλγόριθµος Αρχιτεκτονική data path Λειτουργία FSM Υλοποίηση shortening Γενικά χαρακτηριστικά Αποκωδικοποιητής ιόρθωση λαθών Αλγόριθµος Αρχιτεκτονική data path Λειτουργία FSM Υλοποίηση shortening Γενικά χαρακτηριστικά Κεφάλαιο 5: Σύστηµα σε σειρά BCH LDPC Τρέχον επίπεδο τεχνογνωσίας State of the art για κώδικες σε σειρά οµή του συστήµατος σε σειρά Εισαγωγή Ανάλυση των συστατικών του προς εξέταση συστήµατος Σύστηµα µέτρησης Λειτουργία Αρχιτεκτονική Λειτουργία FSM Γενικά χαρακτηριστικά Σύστηµα αποθήκευσης µετρήσεων Λειτουργία Αρχιτεκτονική. 124 ~ 8 ~

9 5.4.2 Λειτουργία FSM Γενικά χαρακτηριστικά Κεντρικό FSM του συστήµατος σε σειρά Γενική λειτουργία Λειτουργία FSM Γενικά χαρακτηριστικά Κεφάλαιο 6: Ροή σχεδίασης ιαδικασία σχεδίασης και ελέγχου Ανάλυση διαδικασίας σχεδίασης προδιαγραφές, χρησιµοποιούµενοι αλγόριθµοι Ανάλυση διαδικασίας σχεδίασης περιγραφή σε λογισµικό Ανάλυση διαδικασίας σχεδίασης περιγραφή σε υλικό Έλεγχος του κωδικοποιητή και αποκωδικοποιητή BCH Αναπτυξιακό περιβάλλον Xilinx Virtex-5 FXT FPGA ML Κεφάλαιο 7: Αποτελέσµατα υλοποίησης και εξοµοιώσεων σε FPGA Στατιστικά στοιχεία υλοποίησης σε επιφάνεια πολυπλοκότητα Συνολικό σύστηµα Σύστηµα σε σειρά BCH LDPC Σύστηµα BCH Κωδικοποιητές BCH, BCH LDPC Ταχύτητα κωδικοποίησης αποκωδικοποίησης Αποτελέσµατα εξοµοιώσεων σε διόρθωση λαθών 158 Κεφάλαιο 8: Σύνοψη Συµπεράσµατα Επεκτάσεις Παράρτηµα Α. 169 Α.1 Αναλυτικά αποτελέσµατα εξοµοίωσης για τον κώδικα (255, 231) µέσω µοντέλου στο MATLAB για το διάστηµα (2, 5.1) Α.2 Αναλυτικά πειραµατικά αποτελέσµατα για τον κώδικα BCH (255, 231) µέσω FPGA στο διάστηµα (2, 8.1) ~ 9 ~

10 Παράρτηµα Β Β.1 Αναλυτικά πειραµατικά αποτελέσµατα για το σύστηµα BCH-LDPC (2016, 1392) µέσω του FPGA Virtex-5 XC5VFX70T-1FFG Β.2 Αναλυτικά πειραµατικά αποτελέσµατα για το σύστηµα BCH-LDPC (2016, 1332) µέσω του FPGA Virtex-5 XC5VFL330T-1FF Αναφορές Βιβλιογραφία ~ 10 ~

11 Κατάλογος Σχηµάτων Σχήµα 1.1: Αναλυτικό διάγραµµα συστήµατος ψηφιακής επικοινωνίας.. 19 Σχήµα 1.2: Απλοποιηµένο διάγραµµα συστήµατος ψηφιακής επικοινωνίας 21 Σχήµα 1.3: Κανάλι προσθετικού θορύβου 22 Σχήµα 2.1: Συνελικτικός κωδικοποιητής µε ρυθµό R = Σχήµα 2.2: Κωδικοποιητής, διάγραµµα καταστάσεων και trellis για G(x) = [1 + x 2, 1 + x + x 2 ].. 28 Σχήµα 2.3: LFSR τύπου 1 µε χαρακτηριστικό πολυώνυµο F(x) = 1 + x + x Σχήµα 2.4: ιαδικασία µετατροπής LFSR τύπου 1 σε τύπου 2 και τελική µορφή Σχήµα 2.5: Πολλαπλασιαστής σε πεδίο Galois µε χρήση LFSR Σχήµα 2.6: Προτεινόµενος πολλαπλασιαστής 3 bits σε πεδίο Galois Σχήµα 2.7: ιαιρέτης σε πεδίο Galois Σχήµα 3.1: Πίνακας ελέγχου ισοτιµίας µε το αντίστοιχο διάγραµµα Tanner Σχήµα 4.1: Συνδεσµολογία µεταξύ data paths και FSM του κώδικα BCH Σχήµα 4.2: Αρχιτεκτονική κωδικοποιητή BCH 75 Σχήµα 4.3: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM του κωδικοποιητή BCH. 76 Σχήµα 4.4: Αρχιτεκτονική του τµήµατος υπολογισµού των syndromes Σχήµα 4.5: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM του τµήµατος υπολογισµού των syndromes Σχήµα 4.6: α) Αρχιτεκτονική του τµήµατος υπολογισµού του πολυωνύµου εύρεσης λαθών, β) Καταχωρητής ολίσθησης για την αποθήκευση και τον υπολογισµό του x p(x), γ) Καταχωρητής ολίσθησης των syndromes από την προηγούµενη βαθµίδα Σχήµα 4.7: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM του τµήµατος υπολογισµού του πολυωνύµου εύρεσης λαθών.. 93 Σχήµα 4.8: Αρχιτεκτονική του τµήµατος Chien search 99 Σχήµα 4.9: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM του τµήµατος Chien search. 101 Σχήµα 4.10: Αρχιτεκτονική του τµήµατος διόρθωσης Σχήµα 4.11: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM του τµήµατος διόρθωσης. 107 ~ 11 ~

12 Σχήµα 5.1: Συνδεσµολογία συνολικού συστήµατος προς υλοποίηση Σχήµα 5.2: Αρχιτεκτονική του τµήµατος µέτρησης Σχήµα 5.3: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM του τµήµατος µετρήσεων. 122 Σχήµα 5.4: οµή της µνήµης αποθήκευσης των µετρήσεων 124 Σχήµα 5.5: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του FSM της µνήµης αποθήκευσης των µετρήσεων Σχήµα 5.6: Μπλοκ διάγραµµα και διάγραµµα καταστάσεων του κεντρικού FSM Σχήµα 6.1: ιάγραµµα ροής σχεδίασης. 131 Σχήµα 6.2: ιαγράµµατα BER E N για κώδικα BCH α) από MATLAB, β) από Hardware. 134 Σχήµα 6.3: Μπλοκ διάγραµµα του αναπτυξιακού συστήµατος Virtex-5 ML Σχήµα 6.4: Λεπτοµερής απεικόνιση των συστατικών µερών του αναπτυξιακού συστήµατος Virtex-5 ML507 (Εµπρός όψη). 135 Σχήµα 6.5: Λεπτοµερής απεικόνιση των συστατικών µερών του αναπτυξιακού συστήµατος Virtex-5 ML507 (Πίσω όψη) 136 Σχήµα 7.1: Μπλοκ διάγραµµα του συστήµατος BCH LDPC χωρίς το κανάλι και τα συστήµατα µέτρησης απόδοσης 146 Σχήµα 7.2: Μπλοκ διάγραµµα του συστήµατος BCH χωρίς το κανάλι και τα συστήµατα µέτρησης απόδοσης 149 Σχήµα 7.3: Μπλοκ διάγραµµα του συστήµατος κωδικοποίησης α) BCH β) BCH LDPC. 152 Σχήµα 7.4: Γραφική παράσταση BER - E N των συστηµάτων LDPC, BCH LDPC(2016, 1392), BCH LDPC(2016, 1332). 159 Σχήµα 7.5: Γραφική παράσταση BER SNR των συστηµάτων LDPC, BCH LDPC(2016, 1392), BCH LDPC(2016, 1332). 160 Σχήµα ΠΑ.1: Γραφική παράσταση BER - E N του συστήµατος BCH (255, 231). 174 ~ 12 ~

13 Κατάλογος Πινάκων Πίνακας 1: Αναπαραστάσεις πολυωνύµου, διανύσµατος, δύναµης στοιχείων του GF(2 4 ) µε τη χρήση του g(x) = 1 + x + x Πίνακας 2: Κλάση συζυγών και ελάχιστα πολυώνυµα στο GF(2 3 ) λαµβάνοντας υπόψη το GF(2). 44 Πίνακας 3: Κλάση συζυγών και ελάχιστα πολυώνυµα στο GF(2 4 ) λαµβάνοντας υπόψη το GF(2). 44 Πίνακας 4: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος BCH LDPC µε τα συστήµατα µέτρησης απόδοσης, το κανάλι και τη χρήση του κώδικα BCH (756, 696), σε Virtex-5 XC5VFX70T-1FFG Πίνακας 5: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος BCH LDPC µε τα συστήµατα µέτρησης απόδοσης, το κανάλι και τη χρήση του κώδικα BCH (756, 666), σε Virtex-5 XC5VFX70T-1FFG Πίνακας 6: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος BCH LDPC µε τα συστήµατα µέτρησης απόδοσης, το κανάλι και τη χρήση του κώδικα BCH (756, 666), σε Virtex-5 XC5VLX330Τ-1FF Πίνακας 7: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος µε τους τρεις BCH LDPC, τα συστήµατα µέτρησης απόδοσης, το κανάλι και τη χρήση του κώδικα BCΗ (756, 666), σε Virtex-5 XC5VLX330T-1FF Πίνακας 8: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος BCH LDPC χωρίς τα συστήµατα µέτρησης απόδοσης και το κανάλι, και τη χρήση του κώδικα BCH (756, 696), σε Virtex-5 XC5VFX70T-1FFG Πίνακας 9: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος BCH LDPC χωρίς τα συστήµατα µέτρησης απόδοσης και το κανάλι, και τη χρήση του κώδικα BCH (756, 666), σε Virtex-5 XC5VFX70T-1FFG Πίνακας 10: Device Utilization Summary της αρχιτεκτονικής του συνολικού συστήµατος BCH LDPC χωρίς τα συστήµατα µέτρησης απόδοσης και το κανάλι, και τη χρήση του κώδικα BCH (756, 666), σε Virtex-5 XC5VLX330T-1FF Πίνακας 11: Device Utilization Summary της αρχιτεκτονικής του συστήµατος BCH (756, 696) χωρίς τα συστήµατα µέτρησης απόδοσης και το κανάλι, σε Virtex-5 XC5VFX70T-1FFG Πίνακας 12: Device Utilization Summary της αρχιτεκτονικής του συστήµατος BCH (756, 666) χωρίς τα συστήµατα µέτρησης απόδοσης και το κανάλι, σε Virtex-5 XC5VFX70T-1FFG Πίνακας 13: Device Utilization Summary της αρχιτεκτονικής του συστήµατος BCH (756, 666) χωρίς τα συστήµατα µέτρησης απόδοσης και το κανάλι, σε Virtex-5 XC5VLX330T-1FF ~ 13 ~

14 Πίνακας 14: Device Utilization Summary της αρχιτεκτονικής του συστήµατος κωδικοποίησης BCH (756, 696) σε Virtex-5 XC5VFX70T-1FFG Πίνακας 15: Device Utilization Summary της αρχιτεκτονικής του συστήµατος κωδικοποίησης BCH (756, 666), σε Virtex-5 XC5VFX70T-1FFG Πίνακας 16: Device Utilization Summary της αρχιτεκτονικής του συστήµατος κωδικοποίησης BCH LDPC, µε χρήση του κώδικα BCH (756, 696) σε Virtex-5 XC5VFX70T-1FFG Πίνακας 17: Device Utilization Summary της αρχιτεκτονικής του συστήµατος κωδικοποίησης BCH LDPC, µε χρήση του κώδικα BCH (756, 666), σε Virtex-5 XC5VFX70T-1FFG ~ 14 ~

15 Σκοπός και αντικείµενο της διπλωµατικής εργασίας Στη σύγχρονη εποχή η ανάγκη για αξιοπιστία των δεδοµένων στις νέες τηλεπικοινωνιακές εφαρµογές έχει οδηγήσει στη ανάπτυξη και βελτιστοποίηση των λεγόµενων κωδικών διόρθωσης λαθών. Πρόκειται για συστήµατα που έχουν την δυνατότητα ανίχνευσης και διόρθωσης λαθών που εισέρχονται σε τµήµα της πληροφορίας που µεταφέρεται µέσω τηλεπικοινωνιακών κυρίως δικτύων λόγω του θορύβου από το περιβάλλον και πιο συγκεκριµένα από το κανάλι µετάδοσης. Υπάρχουν αρκετές κατηγορίες από τέτοιους κώδικες διόρθωσης ανάλογα της δοµής και της φύσης των αλγορίθµων που χρησιµοποιούν. Οι δύο κυριότερες κατηγορίες είναι οι συνελικτικοί κώδικες και οι γραµµικοί µπλοκ κώδικες µε τους οποίους θα ασχοληθούµε. Οι δύο κώδικες που θα χρησιµοποιηθούν στα πλαίσια αυτής της εργασίας είναι οι κώδικες LDPC και οι BCH. Ανήκουν και οι δυο στους γραµµικούς µπλοκ κώδικες. Κυριότερα χαρακτηριστικά για τους κώδικες LDPC είναι η χρήση πινάκων ελέγχου ισοτιµίας χαµηλής πυκνότητας και επαναληπτικών κωδικών αποκωδικοποίησης. Κυριότερα χαρακτηριστικά για τους κώδικες BCH είναι η χρήση γεννήτορα πολυωνύµου για την κωδικοποίηση, η σταθερή απόσταση d µεταξύ των κωδικών λέξεων και η χρήση µη επαναληπτικών αλγορίθµων κωδικοποίησης. Επιπλέον πρέπει να αναφερθεί η σηµαντική διαφορά µεταξύ στους δυο κώδικες σχετικά µε την διορθωτική ικανότητα. Οι LDPC έχουν ανώτερη συµπεριφορά σε υψηλά επίπεδα θορύβου σε σχέση µε τους κώδικες BCH υποφέρουν όµως από το φαινόµενο του error-floor σε χαµηλότερα επίπεδα κάτι που δεν παρουσιάζεται στους κώδικες BCH και αποτελεί µια σηµαντική παρατήρηση που θα χρησιµοποιηθεί κατά την σχεδίαση των συστηµάτων. Σκοπός της παρούσας διπλωµατικής εργασίας αποτελεί αρχικά ο σχεδιασµός και η υλοποίηση ενός παραµετρικού συστήµατος κωδικοποίησης και αποκωδικοποίησης για δυαδικούς BCH κώδικες διαφόρων µεγεθών. Εκτός της παραµετροποίησης έµφαση δόθηκε στην χαµηλή πολυπλοκότητα του συστήµατος, στον υψηλό ρυθµό επεξεργασίας και στην δυνατότητα χρήσης shortening. Σε δεύτερη φάση πραγµατοποιήθηκε σύνδεση µεταξύ, του παραπάνω κώδικα BCH, µε έναν έτοιµο κώδικα LDPC και ένα κανάλι λευκού προσθετικού θορύβου (AWGN) που σχεδιάστηκαν στα πλαίσια άλλων διπλωµατικών εργασιών µε τελικό αποτέλεσµα την µελέτη της συµπεριφοράς του συνολικού συστήµατος σε θέµατα διόρθωσης λαθών και πιο συγκεκριµένα στην µείωση του φαινοµένου του error-floor που παρατηρείται στον LDPC κώδικα. Επιπλέον µελετήθηκε η απαίτηση του συστήµατος σε πόρους καθώς και ο ρυθµός επεξεργασίας που επιτυγχάνεται. Οι κύριες παράµετροι του κώδικα BCH που µπορούν να µεταβληθούν είναι το µέγεθος της κωδικής λέξης και η διορθωτική ικανότητα που επιτυγχάνεται (στην µελέτη µας αποτέλεσε την παράµετρο που αποκλειστικά µεταβάλλαµε). Τελικά η συνεισφορά της παρούσας εργασίας συνίσταται στο σχεδιασµό αποδοτικών αρχιτεκτονικών για δυαδικούς BCH κώδικες και την υλοποίηση τους σε FPGA για την διεξαγωγή ταχύτατων εξοµοιώσεων ειδικά σε χαµηλά επίπεδα θορύβου σε σχέση µε αντίστοιχες υλοποιήσεις σε λογισµικό (π.χ. περιβάλλον MATLAB). Επιπρόσθετα σηµαντική είναι η συνεισφορά και στην δηµιουργία των κατάλληλων µοντέλων σε λογισµικό που επιτρέπουν τον έλεγχο σωστής λειτουργίας και παρέχουν την δυνατότητα τροποποίησης για βελτίωση των χαρακτηριστικών πριν την τελική σχεδίαση. Πρέπει ακόµα να αναφερθεί και η ανάπτυξη των κατάλληλων παραµετρικών scripts για την εύκολη παραγωγή του VHDL κώδικα συγκεκριµένων τµηµάτων της σχεδίασης. Τέλος ιδιαίτερα σηµαντικό είναι το γεγονός της σύνδεσης 2 διαφορετικών µπλοκ κωδικών (BCH, LDPC) και της µελέτης της συµπεριφοράς τους σε επίπεδο ταχύτητας και διόρθωσης λαθών. ~ 15 ~

16 ~ 16 ~

17 Οργάνωση της εργασίας Η παρούσα διπλωµατική εργασία πραγµατεύεται το σχεδιασµό, την υλοποίηση ενός συστήµατος κωδικοποίησης, αποκωδικοποίησης BCH και την κατάλληλη σύνδεση τους µε αντίστοιχα τµήµατα από κώδικα LDPC µε σκοπό την δηµιουργία ενός σε σειρά συστήµατος µε καλύτερα χαρακτηριστικά σχετικά µε την διόρθωση λαθών. Στο κεφάλαιο 1 παρουσιάζεται το λειτουργικό διάγραµµα και τα βασικά στοιχεία ενός συστήµατος ψηφιακής επικοινωνίας, καθώς και ένα απλοποιηµένο µοντέλο του προηγούµενο συστήµατος που εστιάζει στη διαδικασία της κωδικοποίησης και της αποκωδικοποίησης της πληροφορίας. Επιπλέον γίνεται λόγος σχετικά µε το κανάλι λευκού προσθετικού θορύβου (AWGN) καθώς και για την µέτρηση της απόδοσης ενός τηλεπικοινωνιακού συστήµατος σχετικά µε την αξιοπιστία που προσφέρει. Το κεφάλαιο 2 αναφέρεται στις κυριότερες κατηγορίες από κώδικες διόρθωσης που χρησιµοποιούνται µε τα γενικότερα χαρακτηριστικά τους και τις δοµές από τις οποίες αποτελούνται. Ακόµα παρουσιάζεται το πεδίο αριθµητικής στο οποίο λειτουργεί ο κώδικας BCH και παρουσιάζονται οι αρχιτεκτονικές των κυκλωµάτων που υλοποιούν τις βασικές πράξεις καθώς και οι αρχιτεκτονικές άλλων χρήσιµων κυκλωµάτων που θα χρησιµοποιηθούν στα πλαίσια της εργασίας όπως είναι τα LFSR. Στο κεφάλαιο 3 παρουσιάζονται πιο αναλυτικά οι αρχές, οι αλγόριθµοι και οι δοµές που χρησιµοποιούνται για την κωδικοποίηση και αποκωδικοποίηση, για τους κώδικες BCH και LDPC που θα χρησιµοποιηθούν. Αναφέρονται επίσης εναλλακτικοί τρόποι για την αποκωδικοποίηση καθώς και τα πλεονεκτήµατα και µειονεκτήµατα για την απόδοση γενικότερα για τους δυο αυτούς κώδικες. Στο κεφάλαιο 4 γίνεται αναφορά στην σχεδίαση του κωδικοποιητή και του αποκωδικοποιητή BCH που θα χρησιµοποιήσουµε. Θα παρουσιαστούν οι γενικές αρχές της σχεδίασης οι αλγόριθµοι που χρησιµοποιούνται σε κάθε τµήµα και η αρχιτεκτονική που προέκυψε τόσο για τα data paths όσο και για τα απαιτούµενα FSM. Θα παρουσιαστούν οι λόγοι που χρησιµοποιήθηκαν οι συγκεκριµένοι αλγόριθµοι και οι αντίστοιχες αρχιτεκτονικές τους και τέλος θα δοθούν τα γενικά χαρακτηριστικά τους. Στο κεφάλαιο 5 παρουσιάζεται η συνδεσµολογία του συνολικού συστήµατος µε τους δυο κωδικοποιητές αποκωδικοποιητές σε σειρά και τα επιπρόσθετα τµήµατα που χρησιµοποιούνται για την πραγµατοποίηση των µετρήσεων σχετικά µε την απόδοση του συστήµατος σε θέµατα διόρθωσης. Ακόµα παρουσιάζονται οι αρχιτεκτονικές τους καθώς και οι συνολικοί χρονισµοί όπως αυτοί προκύπτουν από το κεντρικό FSM του συστήµατος. Στο κεφάλαιο 6 γίνεται αναφορά στην ροή σχεδίασης των τελικών συστηµάτων. Παρουσιάζεται η µεθοδολογία που ακολουθήθηκε, από την µοντελοποίηση του συστήµατος µέχρι την παραγωγή των binaries αρχείων για τον προγραµµατισµό του FPGA. Αναφέρονται τα εργαλεία που χρησιµοποιήθηκαν για την µοντελοποίηση και την σχεδίαση καθώς και το αναπτυξιακό σύστηµα (FPGA) που επιλέχθηκε για τον έλεγχο της ορθής λειτουργίας και την πραγµατοποίηση µετρήσεων. ~ 17 ~

18 Στο κεφάλαιο 7 παρουσιάζονται τα αποτελέσµατα που προέκυψαν από τις πειραµατικές µετρήσεις σε δυο τύπους FPGA και σχετίζονται µε τις απαιτήσεις σε πόρους των FPGA και τον ρυθµό επεξεργασίας του συνολικού συστήµατος αλλά και επιµέρους τµηµάτων, καθώς και µε τα αποτελέσµατα σχετικά µε την απόδοση του συστήµατος σε σειρά για την διόρθωση λαθών σε διάφορα επίπεδα θορύβου. Τέλος ακολουθεί µια σύνοψη της εργασίας που πραγµατοποιήθηκε και αναφέρονται τα συµπεράσµατα καθώς και µελλοντικές επεκτάσεις µε στόχο την µεγαλύτερη απόδοση σε διόρθωση λαθών, ρυθµό επεξεργασίας και µείωση των απαιτούµενων πόρων στο FPGA. ~ 18 ~

19 Κεφάλαιο 1 Τηλεπικοινωνιακό σύστηµα 1.1 Σύστηµα ψηφιακής επικοινωνίας Τα τελευταία χρόνια η ανάγκη για αποδοτικά και αξιόπιστα κυρίως συστήµατα ψηφιακής επικοινωνίας έχει παρουσιάσει µια αξιοσηµείωτη αύξηση. Σε αυτό έχει συµβάλει η δηµιουργία ολοένα µεγαλύτερων και ταχύτερων δικτύων σε συνδυασµό µε την ραγδαία εξέλιξη της τεχνολογίας σε υπολογιστική δυνατότητα επεξεργασίας καθώς και τις αυξηµένες ανάγκες σε αποθηκευτικούς χώρους. Ειδικά µε την χρήση του διαδικτύου και των ολοένα και περισσότερων εφαρµογών του, που εξυπηρετούν εκατοµµύρια χρήστες η απαίτηση για υψηλού επιπέδου µετάδοσης έχει αυξηθεί. Ως αποτέλεσµα όλων των παραπάνω η σχεδίαση συστηµάτων ελέγχου λαθών σε δίκτυα µετάδοσης πληροφοριών αποτελεί κοµβικό σηµείο και αποτελεί αντικείµενο έρευνας. Στο επόµενο σχήµα θα παρουσιάσουµε ένα διάγραµµα ενός τυπικού ψηφιακού τηλεπικοινωνιακού συστήµατος. Ένα τέτοιο σύστηµα αποτελείται κυρίως από τρία βασικά µέρη: τον ποµπό, το κανάλι και τέλος τον δέκτη. Σχήμα 1.1 : Αναλυτικό διάγραμμα συστήματος ψηφιακής επικοινωνίας Η µετάδοση της πληροφορίας ξεκινάει από την πηγή. Η πηγή µπορεί να είναι κάποιο πρόσωπο όπως ένας οµιλητής µιας οποιασδήποτε συνδιάλεξης η κάποιο ψηφιακό σύστηµα όπως ένας υπολογιστής συνδεδεµένος σε δίκτυο. Η έξοδος της πηγής µπορεί να είναι οποιασδήποτε µορφής σήµα όπως µια κυµατοµορφή (αναλογικό σήµα) η µια ακολουθία διακριτών συµβόλων (ψηφιακό σήµα). Ωστόσο η έξοδος της πηγής πρέπει κάθε φορά να µετατραπεί σε µια µορφή κατάλληλη για µετάδοση ανάλογα µε το µέσο που χρησιµοποιείται κάθε φορά (οπτικές ίνες, ασύρµατες επικοινωνίες, δορυφορικές ζεύξεις). Το σύστηµα που επιτρέπει αυτή την µετατροπή είναι ο ποµπός και συνήθως αποτελείται από τα εξής µέρη: τον κωδικοποιητή πηγής, τον κωδικοποιητή καναλιού και τον διαµορφωτή. Ο ~ 19 ~

20 κωδικοποιητής πηγής είναι το σύστηµα που αναλαµβάνει την µετατροπή της εξόδου της πηγής σε δυαδικά ψηφία όποτε αυτό είναι απαραίτητο. Ο κωδικοποιητής καναλιού είναι το σύστηµα που φέρει την ευθύνη της πρόσθεσης πλεονάζουσας πληροφορίας στην ήδη υπάρχουσα µε σκοπό την αύξηση της αξιοπιστίας του συστήµατος. Όταν η πληροφορία µεταδίδεται µέσω του καναλιού προστίθεται σε αυτήν «θόρυβος» µε αποτέλεσµα το σήµα να φτάνει στον δέκτη παραµορφωµένο. Η πλεονάζουσα αυτή πληροφορία δίνει την δυνατότητα στον δέκτη να πραγµατοποιήσει την διόρθωση-ανακατασκευή του σήµατος που έλαβε. Ο διαµορφωτής είναι το σύστηµα που µετατρέπει την έξοδο του κωδικοποιητή καναλιού σε κατάλληλη κυµατοµορφή για την µετάδοση της πληροφορίας µέσω του καναλιού-µέσου µετάδοσης λαµβάνοντας υπόψη τα χαρακτηριστικά του καναλιού κάθε φορά. Γενικά η έξοδος του κωδικοποιητή πηγής δεν είναι κατάλληλη για την άµεση αποστολή της πληροφορίας µέσω του καναλιού. Το δεύτερο συστατικό στοιχείο του τηλεπικοινωνιακού συστήµατος όπως προαναφέραµε είναι το κανάλι επικοινωνίας. Το κανάλι είναι το φυσικό µέσο µέσα από το οποίο αποστέλλεται το σήµα από τον ποµπό στο δέκτη. Κατά την µετάδοση µέσα από το κανάλι το σήµα εξασθενεί σε ισχύ ανάλογα µε την απόσταση που πρέπει να διανύσει, ενώ παράλληλα εισάγεται και σε αυτό επιπλέον θόρυβος από το περιβάλλον. Γενικά υπάρχει µεγάλη ποικιλία από φυσικά µέσα µετάδοσης µε ιδιαίτερα χαρακτηριστικά το καθένα όσον αφορά την ποιότητα του σήµατος που προσφέρουν αλλά και το κόστος κατασκευής τους. Στις ασύρµατες επικοινωνίες το φυσικό µέσο µετάδοσης είναι η ατµόσφαιρα µε κυριότερους λόγους στην αλλοίωση του σήµατος, τον θερµικό θόρυβο (από ανθρώπινες δραστηριότητες) αλλά και τον ατµοσφαιρικό θόρυβο (καιρικές συνθήκες). Στα τηλεφωνικά δίκτυα χρησιµοποιούνται κατά κύριο λόγο ενσύρµατα κανάλια. Πιο χαρακτηριστικά παραδείγµατα είναι τα οµοαξονικά καλώδια τα οποία έχουν µεγάλο εύρος ζώνης και τα συνεστραµµένα ζεύγη συρµάτινων γραµµών. Τα σήµατα µέσα από τα ενσύρµατα καλώδια παραµορφώνονται και κατά πλάτος και κατά φάση. Παρόλα αυτά τα ενσύρµατα κανάλια χρησιµοποιούνται σε µεγάλο ποσοστό για την µετάδοση πληροφοριών παγκοσµίως. Τελευταία η τεχνολογία που κερδίζει συνεχώς έδαφος έναντι των ενσύρµατων καλωδίων είναι οι οπτικές ίνες. Οι οπτικές ίνες προσφέρουν πολύ µεγαλύτερο εύρος ζώνης και µικρότερη απόσβεση σήµατος σε σχέση µε τα ενσύρµατα δίκτυα αν και έχουν µεγαλύτερο κόστος. Η παραµόρφωση του σήµατος στις οπτικές ίνες οφείλεται στην απόσβεση και την διασπορά του φωτός. Σε ένα οπτικό σύστηµα ο ποµπός µετατρέπει την πληροφορία σε ηλεκτρικούς παλµούς που αυτή µε την σειρά τους µέσω φωτεινής πηγής (laser η LED) µετατρέπονται σε φωτεινούς παλµούς που µεταδίδονται µέσω της οπτικής ίνας. Το τρίτο και τελευταίο στοιχείο του τηλεπικοινωνιακού συστήµατος όπου καταλήγει η πληροφορία είναι ο δέκτης. Σκοπός του δέκτη είναι η ανάκτηση της χρήσιµης πληροφορίας που στάλθηκε από τον ποµπό, η επεξεργασία της ώστε να είναι όσο πιο πιστή γίνεται σε σχέση µε την αρχική που στάλθηκε και τέλος η µετατροπή της σε µια µορφή αντιληπτή από τον προορισµό. Πρακτικά επιτελείται η ακριβώς αντίστροφη διαδικασία από εκείνη που πραγµατοποιήθηκε στον ποµπό. Το πρώτο στάδιο του δέκτη είναι ο αποδιαµορφωτής. Πρόκειται για το σύστηµα που λαµβάνει ως είσοδο την έξοδο του καναλιού,όπου είναι η κυµατοµορφή που δηµιουργήθηκε από τον διαµορφωτή στον ποµπό συν τον θόρυβο όπου εισήχθηκε στο κανάλι, και την µετατρέπει στην κατάλληλη δυαδική µορφή για τον αποκωδικοποιητή καναλιού που είναι το επόµενο σύστηµα. Ο αποκωδικοποιητής καναλιού είναι επιφορτισµένος µε τη λειτουργία της επεξεργασίας της πληροφορίας για την εύρεση και διόρθωση λαθών, που πιθανόν υπάρχουν λόγω του θορύβου στο κανάλι, βάση της πλεονάζουσας πληροφορίας που είχε εισαχθεί όπως αναφέραµε προηγουµένως, καθώς και για την αφαίρεση στο τέλος της πλεονάζουσας πληροφορίας από το µήνυµα. Προφανώς πρόκειται για µια πολύ σηµαντική διαδικασία διότι πιθανή αποτυχία του συστήµατος αυτού σηµαίνει ότι η πληροφορία που θα φτάσει στον προορισµό δεν θα είναι πανοµοιότυπη µε αυτήν που προσήλθε από την πηγή κατά συνέπεια η αξιοπιστία του τηλεπικοινωνιακού συστήµατος θα είναι περιορισµένη. Ο κίνδυνος για να γίνει κάτι τέτοιο είναι υπαρκτός και οφείλεται στην παρουσία του θορύβου στο κανάλι. Στη συνέχεια η έξοδος του προκύπτει από τον αποκωδικοποιητή καναλιού αποτελεί την είσοδο για το τελευταίο σύστηµα τον αποκωδικοποιητή πηγής. Ο αποκωδικοποιητής πηγής έχει ως στόχο την ανακατασκευή του αρχικού αναλογικού σήµατος που στάλθηκε από την πηγή µε βάση την δυαδική πληροφορία από το προηγούµενο στάδιο. Τελικά στον προορισµό φτάνει η έξοδος του αποκωδικοποιητή πηγής η οποία είναι µια προσέγγιση του αρχικού σήµατος τόσο λόγω του θορύβου που προστέθηκε όσο και λόγω ~ 20 ~

21 αδυναµίας του αποκωδικοποιητή καναλιού όπως αναφέρθηκε παραπάνω καθώς και των παραµορφώσεων από τον κωδικοποιητή και αποκωδικοποιητή πηγής. Η διαφορά αυτή µεταξύ της τελικής εξόδου στον προορισµό και της αρχικής εισόδου από την πηγή είναι το µέτρο που καθορίζει την αξιοπιστία και την αποτελεσµατικότητα του συστήµατος ψηφιακής µετάδοσης. 1.2 Μοντέλο ψηφιακού συστήµατος προς ανάλυση Σε αυτή την ενότητα θα παρουσιάσουµε το µοντέλο τηλεπικοινωνιακού συστήµατος που θα χρησιµοποιηθεί για αυτήν την διπλωµατική εργασία παρουσιάζοντας στο τέλος ένα πιο απλοποιηµένο διάγραµµα δίνοντας έµφαση στα συστήµατα στα όποια θα αναλυθούν. Σχήμα 1.2 : Απλοποιημένο διάγραμμα συστήματος ψηφιακής επικοινωνίας Αρχικά ως πηγή στο σύστηµα που θα µελετήσουµε θα έχουµε µια απλή γεννήτρια δυαδικών ψηφίων. Η γεννήτρια αυτή θα υλοποιηθεί µε την χρήση καταχωρητή ολίσθησης µε ανάδραση (LFSR). Γίνεται αντιληπτό στην συγκεκριµένη περίπτωση ότι δεν χρειάζεται κωδικοποιητής και αποκωδικοποιητής πηγής αντίστοιχα λόγω της φύσης των δεδοµένων που έχουµε ως έξοδο. Συνεπώς µια τέτοια πηγή µπορούµε να την χαρακτηρίσουµε ως ψηφιακή πηγή δεδοµένων. Στην συνέχεια στο σύστηµα έχουµε τους κωδικοποιητές και αποκωδικοποιητές καναλιού. Πρόκειται όπως αναφέρθηκε στις προηγούµενες ενότητες ίσως για το πιο καθοριστικό τµήµα του τηλεπικοινωνιακού συστήµατος που θα καθορίσει την αξιοπιστία και την απόδοση του συστήµατος. Τα συστήµατα αυτά θα είναι και το κύριο αντικείµενο αυτής της διπλωµατικής. Η σχεδίαση τους βασίζεται στην υλοποίηση σε υλικό (Hardware) των διαφόρων αλγορίθµων που τους αποτελούν. Πρόκειται για κώδικες που αφορούν τόσο στην ανίχνευση όσο και στην διόρθωση λαθών. Συγκεκριµένα θα ασχοληθούµε µε γραµµικούς µπλοκ κώδικες. Στο επόµενο κεφάλαιο θα αναφερθούµε µε περισσότερες λεπτοµέρειες για τα χαρακτηριστικά και την λειτουργία των κωδικών που θα χρησιµοποιηθούν. Τέλος στο κανάλι που θα χρησιµοποιήσουµε, η διαµόρφωση και αναδιαµόρφωση πραγµατοποιούνται εσωτερικά και δεν το θεωρούµε ξεχωριστό σύστηµα. Το κανάλι βασίζεται στη λογική της πρόσθεσης θορύβου στην µεταδιδόµενη πληροφορία. Πιο αναλυτικά µε βάση αυτό το µοντέλο, στο σήµα s(t) που εκπέµπεται, ~ 21 ~

22 προστίθεται ένα άλλο σήµα n(t) που αντιπροσωπεύει τον θόρυβο που προστίθεται. Το τελικό σήµα που εξέρχεται από το κανάλι είναι το r(t) όπως φαίνεται και στην εικόνα που ακολουθεί. Σχήμα 1.3 : Κανάλι προσθετικού θορύβου Το µαθηµατικό µοντέλο του καναλιού που χρησιµοποιείται, λέγεται κανάλι λευκού Gaussian προσθετικού θορύβου(additive White Gaussian Noise - AWGN).Το AWGN σήµα από την θεωρία γνωρίζουµε ότι µεταβάλλεται τυχαία στη διάρκεια του χρόνου που σηµαίνει ότι δεν µπορούµε να υπολογίσουµε την στιγµιαία τιµή του, αλλά την πιθανότητα του σήµατος να βρίσκεται σε συγκεκριµένο διάστηµα τιµών [α,β]. Το αποτέλεσµα είναι σε τυχαία σήµατα η αριθµητική αναφορά να γίνεται µέσω µόνο συναρτήσεων πυκνότητας πιθανότητας µε παραµέτρους: α) την µέση τιµή του θορύβου m που στην περίπτωση του AWGN είναι ίση µε µηδέν, β) την τυπική απόκλιση του θορύβου σ. Η σχέση της συνάρτησης πυκνότητας πιθανότητας είναι : ( ) = Η σχέση της συνάρτησης πιθανότητας είναι: ( ) = ( ) (1.1) (1.2) Ο λόγος για τον οποίο είναι σηµαντική η αναφορά στην κωδικοποίηση του καναλιού και στο µαθηµατικό µοντέλο είναι διότι µε αυτόν τον τρόπο επέρχεται η δυνατότητα ελαχιστοποίησης λανθασµένης πληροφορίας λόγω της µετάδοσης. Το θεώρηµα του Shannon αποδεικνύει ότι είναι εφικτή η µείωση της πιθανότητας λάθους κατά την µετάδοση αρκεί ο ρυθµός της µεταδιδόµενης πληροφορίας να µην υπερβαίνει την χωρητικότητα του καναλιού. Η χωρητικότητα του καναλιού C δίνεται από την σχέση: C = Blog 2 (1 + SNR) (1.3) Όπου µε Β συµβολίζεται το εύρος ζώνης του καναλιού, µε SNR ο λόγος της ισχύς του σήµατος που θέλουµε να µεταδώσουµε προς την ισχύ του σήµατος θορύβου. Για να έχουµε ουσιαστική δυνατότητα περιορισµού των λαθών στο µεταδιδόµενο σήµα πρέπει να ισχύει: R < C Όπου µε R συµβολίζεται ο ρυθµός µετάδοσης της πληροφορίας. ~ 22 ~

23 1.3 Μέτρηση απόδοσης Πέρα από τη µαθηµατική µοντελοποίηση του συστήµατος είναι ιδιαιτέρως σηµαντικό να αναφερθεί και ο τρόπος µε τον οποίο σχεδιαστής του συστήµατος θα µπορεί να µετρήσει και να αξιολογήσει τις δυνατότητες του συστήµατος που σχεδίασε σχετικά µε την ανίχνευση και την διόρθωση της προκύπτουσας λανθασµένης πληροφορίας. Μια συνηθισµένη τεχνική που θα χρησιµοποιηθεί και για την µέτρηση της απόδοσης του συστήµατος που θα µελετήσουµε είναι η τροφοδότηση του συστήµατος µε γνωστή είσοδο και ο έλεγχος της εξόδου µε βάση αυτήν την είσοδο. Υπάρχουν αρκετοί τρόποι για το χαρακτηρισµό της απόδοσης και οι πιο συχνά χρησιµοποιούµενοι είναι: Η µέτρηση των λαθών του αποκωδικοποιητή (word error rate) κατά την οποία ελέγχεται απλώς αν η είσοδος του αποκωδικοποιητή είναι ακριβώς η ίδια µε την έξοδο του. Η µέτρηση των λανθασµένων bit πληροφορίας (bit error rate) κατά την οποία µετράται ο αριθµός των bits στα οποία διαφέρουν η είσοδος του κωδικοποιητή µε την έξοδο του αποκωδικοποιητή. Η µέτρηση των λανθασµένων bit στο σύνολο της κωδικός λέξης κατά την οποία µετράται ο αριθµός των bits στα οποία διαφέρουν η είσοδος του αποκωδικοποιητή µε την έξοδο του. Η µέτρηση της µη δυνατότητας αποκωδικοποίησης κατά την οποία µετράται το πόσες φορές ο αποκωδικοποιητής δεν ήταν σε θέση να αποκωδικοποιήσει την ακολουθία συµβόλων που έλαβε. Ο έλεγχος της απόδοσης που θα πραγµατοποιήσουµε στο δικό µας σύστηµα βασίζεται στην µέτρηση των bits στα οποία διαφέρει η λέξη πληροφορίας και η έξοδος του αποκωδικοποιητή. ~ 23 ~

24 ~ 24 ~

25 Κεφάλαιο 2 Κατηγορίες κωδικών διόρθωσης - Αριθµητική συστήµατος Σε αυτό το κεφάλαιο θα αναφερθούµε γενικά στις κατηγορίες των κωδικών διόρθωσης λαθών και στον τρόπο λειτουργίας τους. Έπειτα θα αναφέρουµε τις βασικές αρχές της αριθµητικής που θα χρησιµοποιηθεί για την υλοποίηση των κωδικοποιητών και αποκωδικοποιητών BCH που θα χρησιµοποιήσουµε στο προς µελέτη σύστηµα. Ακόµα θα παρουσιάσουµε τους αλγορίθµους και τη δοµή των τµηµάτων που υλοποιούν τις πράξεις της πρόσθεσης, της αφαίρεσης, του πολλαπλασιασµού και της διαίρεσης που θα χρησιµοποιηθούν στη σχεδίαση του συστήµατος. 2.1 Συνελικτικοί κώδικες (Convolutional codes) Μια από τις πιο µεγάλες κατηγορίες από κώδικες διόρθωσης είναι οι συνελικτικοί κώδικες. Οι συνελικτικοί κώδικες είναι γραµµικοί κώδικες που έχουν τέτοια δοµή όσον αφορά τον γεννήτορα πινάκα ώστε η κωδικοποίηση να απαιτεί ένα πλήθος από ψηφιακά φίλτρα γραµµικά και χρονικώς ανεξάρτητα, µε την κωδική λέξη να προκύπτει ως αποτέλεσµα δειγµατοληψίας των εξόδων του φίλτρου. Οι συνελικτικοί κώδικες είναι από τις πρώτες κατηγορίες που εµφανιστήκαν χρονικά. Αυτό έχει ως αποτέλεσµα να χρησιµοποιούνται ευρύτατα καθώς µε το πέρασµα των χρόνων έχουν αναπτυχτεί αλγόριθµοι αποκωδικοποίησης µε πολύ καλές επιδόσεις καθώς και αποδοτικές αρχιτεκτονικές. Όσον αφορά την λειτουργία τους, οι συνελικτικοί κώδικες διαφέρουν από τους µπλοκ κώδικες στο γεγονός ότι η πληροφορία δεν χωρίζεται σε µπλοκ των k συµβόλων ενώ και τα επιπλέον παραγόµενα n-k σύµβολα της κωδικής λέξης δεν εξαρτώνται αποκλειστικά από τα k σύµβολα πληροφορίας. Ο συνελικτικός κωδικοποιητής τροφοδοτείται συνεχώς µε σύµβολα τα οποία δεν διαχωρίζονται σε µπλοκ ενώ κάθε χρονική στιγµή δειγµατολειπτούνται οι έξοδοι του κωδικοποιητή που προκύπτουν ως modulo-2 άθροιση του τρέχοντος συµβόλου µε προηγούµενα. Συνεπώς πρόκειται για κωδικοποιητές µε µνήµη σε αντίθεση µε τους µπλοκ κώδικες. Παρόλα αυτά χρησιµοποιείται η σύµβαση ότι πρόκειται για κώδικες µε ρυθµό R=k/n δεχόµενοι ότι k καινούρια σύµβολα εισόδου σε δεδοµένα χρονικά διαστήµατα παράγουν n σύµβολα εξόδου. Γενικά κάθε ακολουθία από σύµβολα m(x) = [,m -2, m -1, m 0, m 1, m 2, m 3, ] που εισέρχεται στον συνελικτικό κωδικοποιητή µπορεί να περιγράφει ως µια σειρά δυνάµεων µιας µεταβλητής x µε τιµές από ένα πεδίο F. Μια τέτοια ακολουθία µπορεί να περιγράφει και ως µια σειρά Laurent ( ) =. Το πλήθος όλων των σειρών Laurent στο F είναι πεδίο το οποίο δηλώνεται ως F[[x]]. Έτσι ισχύει ότι το m(x) F[[x]]. Για πολλαπλές εισόδους χρησιµοποιείται η αναπαράσταση m (1) (x), m (2) (x) για τις επιµέρους ακολουθίες µε την τελική να γράφεται ως m(x)= [m (1) (x) m (2) (x)] F[[x]] 2. ~ 25 ~

26 Ένας τυπικός συνελικτικός κωδικοποιητής παρουσιάζεται παρακάτω: Σχήμα 2.1 : Συνελικτικός κωδικοποιητής με ρυθμό R = 1/2 Παρατηρούµε ότι η είσοδος-ακολουθια m(x) περνάει διαµέσου δυο φίλτρων που µοιράζονται στοιχεία µνήµης παράγοντας τις δυο κωδικοποιηµένες εξόδους. Ο ρυθµός του κώδικα είναι R=1/2. Οι δυο ακολουθίες που προκύπτουν στην έξοδο interleaved και παράγουν την τελική έξοδο c k. c k (1) = m k + m k-2 και c k (2) = m k + m k-1 + m k-2 Την σχέση µεταξύ εισόδου-εξοδου µπορούµε να την αναπαραστήσουµε µέσω συνάρτησης µεταφοράς. Έτσι έχουµε c (1) (x) = g (1) (x)m(x) καθώς και c (2) (x) = g (2) (x)m(x). Κάθε ακολουθία εισόδου και εξόδου µπορούµε να την αναπαραστήσουµε µε ένα πολυώνυµο όπου οι συντελεστές τους ανήκουν στο πεδίο GF(q) ανάλογα του πλήθους των bits που αντιστοιχούν σε κάθε σύµβολο της ακολουθίας εισόδου. Με όµοιο τρόπο αναπαρίστανται και οι συναρτήσεις µεταφοράς. Θα δώσουµε ένα παράδειγµα χρησιµοποιώντας τον κωδικοποιητή του παραπάνω σχήµατος και δεχόµενοι ότι ένα σύµβολο εισόδου είναι ένα bit. Μια ακολουθία εισόδου m={1,1,0,0,1,0,1}, αναπαριστάται ως m(x) =1 + x + x 4 + x 6 GF(2)[[x]]. Οι συναρτήσεις µεταφοράς είναι οι: g (1) (x) = 1 + x 2, g (2) (x) = x + x 2. Οι έξοδοι που προκύπτουν είναι: c (1) (x) = m(x)g (1) (x) = (1 + x + x 4 + x 6 )(1 + x 2 ) = 1 + x + x 2 + x 3 + x 4 + x 8 c (2) (x) = m(x)g (2) (x) = (1 + x + x 4 + x 6 )(1 + x + x 2 )=1 + x 3 + x 4 + x 5 + x 7 + x 8 Οι έξοδοι τελικά είναι οι: c (1) (x)={1,1,1,1,1,0,0,0,1}, c (2) (x)={1,0,0,1,1,1,0,1,1} Γενικά ένας κωδικοποιητής συνελικτικού κώδικα µε ρυθµό R=k/n σχετίζεται µε ένα k n πίνακα συνάρτησης µεταφοράς G(x). Για το παράδειγµα του συνελικτικού κωδικοποιητή του σχήµατος 2.1 ισχύει ότι G(x) = [1 + x x + x 2 ]. Παρατηρούµε ότι οι επιµέρους συναρτήσεις µεταφοράς του παραπάνω πίνακα συνάρτησης µεταφοράς είναι πολυωνυµικές Ένας τέτοιος κωδικοποιητής λέγεται FIR η feed forward κωδικοποιητής. Αντίθετα όταν οι επιµέρους συναρτήσεις µεταφοράς του πίνακα είναι κλασµατικές µε αριθµητή και παρονοµαστή πολυώνυµα ο κωδικοποιητής ονοµάζεται IIR η feedback κωδικοποιητής. Άλλη µια ιδιότητα που σχετίζεται άµεσα µε τον πίνακα συνάρτησης µεταφοράς είναι αν ο κωδικοποιητής είναι συστηµατικός η όχι. Ένας κωδικοποιητής γενικά λέγεται συστηµατικός αν η είσοδος του εµφανίζεται στην εξόδου του ξεκάθαρα µε την ίδια µορφή. Συνήθως σε συστηµατικούς κωδικοποιητές το πρώτο τµήµα της κωδικής λέξης είναι η είσοδος και ακολουθεί το τµήµα µε την ~ 26 ~

27 πλεονάζουσα πληροφορία. Στους συνελικτικούς κώδικες προκειµένου ο κωδικοποιητής να είναι συστηµατικός πρέπει ο πίνακας συνάρτησης µεταφοράς να έχει την εξής µορφή: G(x)= [ Ι κ G κ ] όπου I κ είναι ο µοναδιαίος πίνακας. Για παράδειγµα ένας συστηµατικός κωδικοποιητής µε ρυθµό R=2/3 µπορεί να έχει πίνακα συνάρτησης µεταφοράς: 1 0 G(x) = 0 1 Γενικά για κάθε συνελικτικό κώδικα που έχει κλασµατικούς όρους στην συνάρτηση µεταφοράς υπάρχει ο ισοδύναµος του, ο οποίος στην συνάρτηση µεταφοράς έχει µόνο πολυωνυµικούς όρους ωστόσο υπάρχει το ενδεχόµενο ο ισοδύναµος κώδικας να µην είναι και συστηµατικός που σε αρκετές περιπτώσεις είναι χρήσιµο να είναι. Γενικά δυο κωδικες είναι ισοδύναµοι αν οι συναρτήσεις µεταφοράς τους παράγουν τον ίδιο κώδικα στην έξοδο. Για να είναι δυο συναρτήσεις µεταφοράς G 1 (x), G 2 (x) ισοδύναµες πρέπει να ισχύει G 1 (x) = T(x)G 2 (x) όπου ο πίνακας Τ(x) να µην αντιστρέψιµος. Άλλο επίσης σηµαντικό στοιχείο όσον αφορά τον κωδικοποιητή είναι το πλήθος των στοιχείων µνήµης που χρησιµοποιούνται. Προφανώς προτιµούνται κωδικοποιητές µεταξύ ισοδύναµων κωδικών µε τον ελάχιστο δυνατό αριθµό στοιχείων µνήµης και καταστάσεων. Κάθε συνελικτικός κωδικοποιητής µπορεί να χαρακτηριστεί και ως µια µηχανή καταστάσεων (state machine). Τόσο για τις ανάγκες της κωδικοποίησης αλλά και της αποκωδικοποίησης είναι χρήσιµα τα διαγράµµατα καταστάσεων που αναπαριστούν τις σχέσεις µεταξύ των καταστάσεων τωρινήςεπόµενης. Έχοντας n στοιχεία µνήµης έχουµε 2 n καταστάσεις. Άλλη χρήσιµη αναπαράσταση είναι η χρήση γράφου για την αναπαράσταση των συνδέσεων µεταξύ καταστάσεων διαφορετικών χρονικών στιγµών. Ενώνοντας πολλούς γράφους ώστε να έχουµε γνώση πολλών χρονικών στιγµών δηµιουργείται ένας γράφος που ονοµάζεται trellis. Στο σχήµα που ακολουθεί παρουσιάζεται το κύκλωµα, το διάγραµµα καταστάσεων και ο γράφος που περιγράφει τον κωδικοποιητή µε πίνακα συνάρτησης µεταφοράς G(x) = [1 + x x + x 2 ]. ~ 27 ~

28 Σχήμα 2.2 : Κωδικοποιητής, διάγραμμα καταστάσεων και trellis για G(x) = [1 + x 2, 1 + x + x 2 ] Για την αποκωδικοποίηση των συνελικτικών κωδικών έχουν προταθεί αρκετοί αλγόριθµοι. Μεταξύ των σηµαντικότερων είναι ο αλγόριθµος Viterbi βασική αρχή του οποίου είναι η µεγιστοποίηση της πιθανοφάνειας της ακολουθίας. Μια παραλλαγή αυτού του αλγορίθµου (SOVA) µπορεί επίσης να παρέχει και µια ένδειξη της αξιοπιστίας των αποκωδικοποιηµένων συµβόλων που προκύπτουν. Άλλος αλγόριθµος αποκωδικοποίησης ο MAP (maximum a pasteriori) που αναφέρεται και ως BCJR ο οποίος υπολογίζει πιθανότητες των αποκωδικοποιηµένων bits. Φυσικά υπάρχουν και µερικώς βέλτιστοι αλγόριθµοι αποκωδικοποίησης που παρουσιάζουν αρκετό ενδιαφέρον καθώς έχουν πολύ καλά χαρακτηριστικά τόσο σε απόδοση αλλά και χαµηλότερη υπολογιστική πολυπλοκότητα. Ο αλγόριθµος Viterbi είναι ένας από τους πρώτους και πιο σηµαντικούς αλγορίθµους που χρησιµοποιούνται για την αποκωδικοποίηση συνελικτικών κωδικών. Χρησιµοποιείται σε ένα µεγάλο εύρος τηλεπικοινωνιακών θεµάτων. Είναι βέλτιστος όσον αφορά την µεγιστοποίηση της πιθανοφάνειας της ακολουθίας εξόδου από τα δεδοµένα εισόδου. Πρόκειται για έναν αλγόριθµο συντοµότερης διαδροµής ανάλογο µε αυτόν του Dijkstra καθώς υπολογίζει την συντοµότερη διαδροµή µε την χρήση του trellis του κάθε κώδικα. Κεντρική ιδέα του αλγορίθµου είναι η εξής: Κάθε κωδικοποιηµένη ακολουθία (c 0, c 1,..) αντιστοιχεί σε µια διαδροµή διάµεσου του trellis του κωδικοποιητή. Εξαιτίας του θορύβου του καναλιού η ακολουθία r που έλαβε ο αποκωδικοποιητής δεν αντιστοιχεί ακριβώς σε κάποιο µονοπάτι του trellis. Ο αποκωδικοποιητής µέσου αυτού του αλγορίθµου βρίσκει ένα µονοπάτι το οποίο είναι κοντινότερο στην ληφθείσα ακολουθία βάση της συνάρτησης πιθανότητας που είναι κατάλληλη για το εκάστοτε µοντέλο καναλιού που χρησιµοποιείται. Στην περίπτωση του καναλιού µε λευκό προσθετικό θόρυβο χρησιµοποιείται η ευκλείδεια απόσταση ως η κατάλληλη συνάρτηση για την εύρεση του κοντινότερου µονοπατιού. Προκειµένου βέβαια να έχουµε βέλτιστα αποτελέσµατα πρέπει η συνάρτηση να εφαρµοστεί σε µεγάλες ληφθείσες ακολουθίες συµβόλων. Την συνάρτηση πιθανοφάνειας που θα µεγιστοποιηθεί την ονοµάζουµε f(r x) όπου: ( ) = ( ) = (,,,, ) = ( ) (2.1) µε r συµβολίζουµε τα ληφθέντα στον αποκωδικοποιητή σύµβολα και x τα σύµβολα εισόδου στον κωδικοποιητή. Κάθε φορά υπολογίζεται και διατηρείται στην µνήµη το µονοπάτι που µεγιστοποιεί την συνάρτηση και είναι και το συντοµότερο. Αν και όπως αναφέραµε ο αλγόριθµος Viterbi είναι βέλτιστος η πολυπλοκότητα του αυξάνεται εκθετικά µε τον αριθµό των καταστάσεων (2 n όπου n οι καταστάσεις). Το όριο πιθανότητας για την κωδικοποίηση καναλιού στους συνελικτικούς κώδικες προβλέπει ότι για την βελτιστοποίηση της απόδοσης αυτών των κωδικών απαιτείται µεγαλύτερη µνήµη. Προκύπτει συνεπώς το πρόβληµα ότι ~ 28 ~

29 δεν είναι πάντα εφικτή η σχεδίαση ενός αποκωδικοποιητή µε αρκετή µνήµη για να πετύχουµε το επιθυµητό επίπεδο απόδοσης. Επίσης ο αλγόριθµος Viterbi ανεξάρτητα του επιπέδου του θορύβου κάνει την ίδια ποσότητα υπολογισµών. Για αυτούς τους λογούς δηµιουργήθηκαν κώδικες όπου και µικρότερη πολυπλοκότητα υλικού έχουµε και λιγότερους υπολογισµούς ανάλογα µε το επίπεδο του θορύβου. Το κόστος βέβαια για αυτούς τους αλγορίθµους είναι ότι αν και µικροί και γρήγοροι δεν παρέχουν πάντα την απόφαση όπου µεγιστοποιεί την πιθανοφάνεια. Αυτοί οι κώδικες για την αναπαράσταση τους χρησιµοποιούν δέντρα και όχι το διάγραµµα trellis. Κάθε φορά λοιπόν επιλέγεται το ανάλογο µονοπάτι-κλαδι ανάλογα µε την απόφαση που παίρνεται για το κάθε σύµβολο. Επίσης για αυτούς τους κωδικες απαιτούνται συναρτήσεις όσον αφορά την µέτρηση της πιθανοφάνειας τέτοιες ώστε να µπορούν να πάρουν απόφαση για µονοπάτια. Ο αλγόριθµος stack η ZJ είναι ένας µη-βελτιστος αλγόριθµος. Η λειτουργία του βασίζεται στην ιδέα της χρήσης µιας λίστας όπου διατηρούνται όλα τα µερικά µονοπάτια. Η λίστα είναι ταξινοµηµένη έτσι ώστε το µονοπάτι που µεγιστοποιεί την συνάρτηση πιθανοφάνειας να είναι στην κορυφή της λίστας. Σε κάθε βήµα αποκωδικοποίησης το µονοπάτι που βρίσκεται στην κορυφή της λίστας εξετάζεται. Υπολογίζονται τα 2 k µονοπάτια απόγονοι του υπολογίζοντας κάθε φορά την καινούρια τιµή της συνάρτησης και επανατοποθετούνται στην λίστα κατά φθίνουσα σειρά. Όταν φτάσουµε σε κόµβο-«φύλλο» στο δέντρο ο αλγόριθµος τερµατίζει. Επόµενος αλγόριθµος αυτής της κατηγορίας είναι ο Fano. H διαφορά του µε τον stack είναι ότι πλέον δεν διατηρούνται στην µνήµη όλα τα µονοπάτια που είναι υπό εξέταση αλλά ένα κάθε φορά. Ο αλγόριθµος διατηρεί µια τιµή κατωφλίου Τ. Προκειµενου να προχωρήσει περισσότερο στο δέντρο πρέπει η συνάρτηση να αυξάνει. Ο αλγόριθµος είναι λογικής depth-first. Αν προχωρώντας στο µονοπάτι η συνάρτηση πάρει τιµή µικρότερη του Τ τότε ο αλγόριθµος γυρίζει σε προηγούµενο κόµβο και υπολογίζει εκ νέου την τιµή της συνάρτησης. Ο τελευταίος αλγόριθµος που θα παρουσιαστεί είναι µια παραλλαγή του αλγορίθµου Viterbi και ονοµάζεται αλγόριθµος Μ. Ο κανονικός αλγόριθµος Viterbi έχει µεγάλο αριθµό καταστάσεων η πολυπλοκότητα αυξάνεται, ενώ επειδή µόνο ένα µονοπάτι είναι το σωστό, πολλοί υπολογισµοί επεκτείνονται σε µονοπάτια που δεν χρησιµοποιούνται. Ο αλγόριθµος Μ διατηρεί σε λίστα Μ µονοπάτια. Σε κάθε βήµα αυτά τα µονοπάτια επεκτείνονται σε Μ2 k (όπου k είναι ο αριθµός των bits εισόδου). Η συνάρτηση υπολογίζεται µε τον ίδιο τρόπο όπως στον Viterbi. Τα καλύτερα Μ µονοπάτια διατηρούνται για το επόµενο βήµα και στο τέλος κρατείται το µονοπάτι µε το καλύτερη τιµή. 2.2 Γραµµικοί µπλοκ κωδικες (Linear block codes) Ένας κώδικας είναι µια διαδικασία µονοσήµαντης απεικόνισης στοιχείων από ένα σύνολο Α σε ένα άλλο σύνολο Β. Τα στοιχεία του συνόλου Α ονοµάζονται λέξεις πληροφορίας (infowords), ενώ τα στοιχεία του συνόλου Β ονοµάζονται κωδικες λέξεις (codewords). Πιο συγκεκριµένα ένας (n,k) µπλοκ κώδικας C πάνω σε ένα αλφάβητο από q σύµβολα είναι ένα σετ από q k n-διανύσµατα που ονοµάζονται κωδικες λέξεις. Σχετιζόµενος µε τον κώδικα είναι ένας κωδικοποιητής ο οποίος αντιστοιχίζει ένα µήνυµα k-συµβόλων στο αντίστοιχο codeword. Προφανώς ισχύει ότι n>k όπου τα n- k επιπλέον σύµβολα προκύπτουν µε την χρήση µιας µαθηµατικής δοµής από τον κωδικοποιητή. Η ανάγκη µονοσήµαντης απεικόνισης είναι απαραίτητη ώστε να υπάρχει η δυνατότητα διόρθωσης λαθών ωστόσο µπορεί να υπάρχουν περισσότεροι από ένας τρόποι για να γίνει η αντιστοίχιση. Ένας µπλοκ κώδικας θα µπορούσε να αναπαρασταθεί ως µια πλήρης λίστα αλλά για µεγάλο k αυτό θα ήταν ασύµφορο και από πλευράς υλικού, αλλά και για την διαδικασία της αποκωδικοποίησης. Χαρακτηριστικό των κωδικοποιητών µπλοκ είναι ότι αποτελούνται από διατάξεις χωρίς µνήµη γιατί δεν χρησιµοποιούν bits από προηγούµενα µπλοκ. Ένας µπλοκ κώδικας σε πεδίο F q µε q σύµβολα ~ 29 ~

30 µήκους n και q k κωδικες λέξεις είναι γραµµικός αν και µόνο αν οι q k κωδικές του λέξεις σχηµατίζουν ένα k-διαστατο διάνυσµα, υποχώρο του χώρου διανυσµάτων όλων των n µήκους διανυσµάτων του F n q. Ο αριθµός n λέγεται µήκος του κώδικα ενώ ο αριθµός k διάσταση του κώδικα και προφανώς ο ρυθµός του κώδικα είναι R=k/n. Βασική ιδιότητα ενός γραµµικού κώδικα είναι το γεγονός ότι το άθροισµα οποιονδήποτε δυο κωδικών του λέξεων είναι επίσης κωδική λέξη. Ο αριθµός των bits που είναι 1 σε µια κωδική λέξη ονοµάζεται βάρος Hamming w της κωδικής λέξης. Ως απόσταση Hamming d µεταξύ δυο κωδικών λέξεων ορίζεται ο αριθµός των θέσεων στις οποίες διαφέρουν οι δυο λέξεις. Το ελάχιστο βάρος ενός κώδικα ορίζεται ως το µικρότερο Hamming βάρος οποιασδήποτε µη µηδενικής κωδικής λέξης. Ως ελάχιστη απόσταση ενός µπλοκ κώδικα ορίζεται η µικρότερη απόσταση µεταξύ οποιωνδήποτε ζευγών κωδικών λέξεων του κώδικα. Σε έναν γραµµικό µπλοκ κώδικα ικανοποιείται η συνθήκη d min = w min, δηλαδή η ελάχιστη απόσταση του είναι ίση µε το ελάχιστο βάρος Hamming αυτού του κώδικα. Αποδεικνύεται λοιπόν ότι σε κάθε γραµµικό µπλοκ κώδικα µε ελάχιστη απόσταση d min υπάρχει η δυνατότητα διόρθωσης t (d min -1)/2. Η διαδικασία της κωδικοποίησης συνίσταται στην µετατροπή του µπλοκ των k συµβόλων σε ένα µπλοκ n συµβόλων. Έχουµε δηλαδή την ακολουθία των πληροφοριακών συµβόλων η µηνύµατος m = [m 0, m 1, m 2,, m k ] και προκύπτει η κωδική λέξη c = [c 0, c 1, c 2,,c n ]. Η µετατροπή από την µια ακολουθία στην άλλη πραγµατοποιείται µε την βοήθεια ενός k n πίνακα G ο οποίος ονοµάζεται γεννήτορας πίνακας του κώδικα. Η κωδική λέξη παράγεται µε τον πολλαπλασιασµό της λέξης πληροφορίας µε τον γεννήτορα πίνακα: c = mg (2.2) Παρατηρούµε ότι αυτή η κωδικοποίηση είναι πιο αποτελεσµατική από άποψη υλικού καθώς πλέον δεν απαιτείται η αποθήκευση των q k διανυσµάτων παρά µόνο η αποθήκευση των k n στοιχείων του πίνακα G. Πρακτικά ο γεννήτορας πίνακας δεν είναι τίποτα περισσότερο από ένα k διανύσµατα γραµµικώς ανεξάρτητα µεταξύ τους γραµµικοί συνδυασµοί των οποίων δηµιουργούν τον k-διάστατο χώρο διανυσµάτων του κώδικα. Πρέπει σε αυτό το σηµείο να τονιστεί ότι η αναπαράσταση των κωδικών λέξεων που παρέχονται µε την χρήση του γεννήτορα πίνακα G δεν είναι µοναδική. Με αυτό εννοούµε ότι δοθέντος ενός γεννήτορα πίνακα G πραγµατοποιώντας µη µηδενικούς γραµµικούς συνδυασµούς στις γραµµές του πίνακα µπορούµε να δηµιουργήσουµε ένα νέο γεννήτορα πίνακα G new. Τότε η διαδικασία της κωδικοποίησης θα ορίζεται ως c = mg new. Σε αυτήν την περίπτωση πάλι ένα µήνυµα θα αντιστοιχίζεται σε µια κωδική λέξη αλλά δεν θα είναι απαραίτητα ίδια µε αυτήν που θα δηµιουργούταν αν το ίδιο µήνυµα πολλαπλασιαζόταν µε τον αρχικό πίνακα G. Σε αυτό το σηµείο είναι σκόπιµο να αναφέρουµε την συστηµατικότητα όσον αφορά στους κωδικοποιητές για µπλοκ κωδικες. Έστω ότι έχουµε έναν µπλοκ κώδικα (n,k) όχι απαραίτητα γραµµικό. Ένας κωδικοποιητής λέγεται συστηµατικός αν το µήνυµα-πληροφορια που του αποστείλουµε υπάρχει αναλλοίωτο στην κωδική λέξη. Πρέπει να δοθεί έµφαση στο γεγονός ότι το να υπάρχει συστηµατικότητα στην κωδική λέξη είναι ιδιότητα του γεννήτορα πίνακα και όχι του κώδικα. Οι γεννήτορες πινάκες που έχουν αυτή την ιδιότητα ονοµάζονται συστηµατικοί. Ένας συστηµατικός γεννήτορας πίνακας µπορεί να γραφτεί στην ακόλουθη µορφή:,,, 1 0 0,, G = [P I k ] =, (2.3),,, ~ 30 ~

31 όπου ο πίνακας I k είναι ένας k k µοναδιαίος πίνακας και ο P είναι ένας k (n-k) πίνακας που παράγει τα σύµβολα ισοτιµίας. Η διαδικασία της κωδικοποίησης γίνεται ως εξής: c = m[p I k ] = [mp m] Παρατηρούµε ότι η κωδική λέξη χωρίζεται πλέον σε δυο τµήµατα: το τµήµα m που περιέχει αναλλοίωτο το µήνυµα και το τµήµα mp που αποτελεί τα σύµβολα ελέγχου ισοτιµίας(parity check symbols). υο γραµµικοί κωδικες που είναι ίδιοι, εκτός από µια µετάθεση µεταξύ κάποιων τµηµάτων του κώδικα λέγονται ισοδύναµοι κώδικες. Γεννήτορες πινάκες που αντιστοιχούν σε ισοδυνάµους κώδικες προκύπτουν από τις εξής δυο λειτουργίες: Α) ανταλλαγή στηλών, Β) γραµµικοί συνδυασµοί γραµµών. Εκτός από τον γεννήτορα πίνακα G σηµαντικό ρόλο στους γραµµικούς µπλοκ κωδικες κατέχει και ο πίνακας έλεγχου ισοτιµίας που συµβολίζεται µε Η. Ο πίνακας αυτός αποτελείται από n-k διανύσµατα n συµβόλων και αποτελεί τον διανυσµατικό χώρο για έναν (n,n-k) κώδικα ο οποίος συµβολίζεται ως C T. Βασική ιδιότητα που προσδιορίζει τους πίνακες G και Η αποτελεί το γεγονός ότι είναι ορθογώνιοι µεταξύ τους και συνεπώς ισχύει ότι: GH T = 0 (2.4) Επιπλέον οι κωδικες λέξεις αυτού του κώδικα που είναι 2 n-k σε πλήθος είναι ορθογώνιες µε τις λέξεις του κώδικα C κατά συνέπεια κάθε γραµµή του πίνακα Η είναι ορθογώνια ως προς κάθε έγκυρη κωδική λέξη του κώδικα C. Ο κώδικας C t ονοµάζεται δυικός του κώδικα C. Βάσει αυτών των ιδιοτήτων προκύπτουν δυο πολύ σηµαντικές παρατηρήσεις: Κάθε γραµµή του πίνακα Η είναι ορθογώνια ως προς κάθε έγκυρη κωδική λέξη του κώδικα C. Κατά συνέπεια ο πίνακας. Η µας παρέχει n-k σχέσεις τις οποίες θα πρέπει να επαληθεύουν µια κωδική λέξη για να είναι έγκυρη. Αυτή η ιδιότητα µπορεί να χρησιµοποιηθεί στον δέκτη για επαλήθευση ότι λαµβανοµένη λέξη είναι κωδική λέξη του κώδικα. Η ιδιότητα αυτή συνοψίζεται στην σχέση ch T = 0 (2.5) Ακόµα έστω ότι ένας γραµµικός µπλοκ κώδικας έχει πίνακα έλεγχου ισοτιµίας Η. Η ελάχιστη απόσταση d min του κώδικα είναι ίση µε τον µικρότερο θετικό αριθµό των στηλών του Η που είναι γραµµικώς εξαρτηµένοι. Σε αυτό το σηµείο θα δούµε την εφαρµογή της παραπάνω ιδιότητας στο θέµα της ανίχνευσης λαθών. Υποθέτουµε ότι έχουµε έναν γραµµικό µπλοκ κώδικα (n,k) και µεταδίδουµε µια κωδική λέξη του n συµβόλων µέσα από κανάλι προσθετικού θορύβου. Το κανάλι προσθέτει στην κωδική λέξη που διέρχεται µέσα από αυτό, ένα σφάλµα e, n συµβόλων µε αποτέλεσµα να εισέρχεται τελικά στον δέκτη µια λέξη r, n συµβόλων η οποία δεν είναι απαραίτητα έγκυρη κωδική λέξη. Μπορούµε να γράψουµε ότι ισχύει : r = c + e (2.6) ~ 31 ~

32 µε την αριθµητική να είναι στο πεδίο F q. Το διάνυσµα λάθους e προσθέτει λάθη στις θέσεις όπου τα σύµβολα του έχουν τιµή διάφορη της µηδενικής. Αν κάθε σύµβολο δηλαδή του διανύσµατος λάθους είναι µηδέν προφανώς το κανάλι δεν έχει εισάγει κανένα λάθος. Ως σύνδροµο σφάλµατος s ορίζεται το διάνυσµα: s = rh T (2.7) Όπως αναφέραµε προηγουµένως για να είναι µια λέξη έγκυρη κωδική λέξη του κώδικα πρέπει να ισχύει ch T = 0, όπου Η είναι ο πίνακας ελέγχου ισοτιµίας του κώδικα. Για το σύνδροµο ισχύει : s = rh T = (c + e)h T = eh T Αν το s = 0 τότε η λέξη r που έφτασε στον δέκτη είναι έγκυρη κωδική λέξη σε αντίθετη περίπτωση γνωρίζουµε ότι σίγουρα υπάρχει λάθος στην λέξη. Όσον αφορά την αποκωδικοποίηση των λέξεων που φτάνουν στον δέκτη υπάρχουν 2 κατηγορίες κωδικοποιητών: Η πρώτη κατηγορία είναι οι αποκωδικοποιητές πλήρους διόρθωσης λαθών. Πρόκειται για αποκωδικοποιητές οι οποίοι δοσµένης της λέξης r που παραλαµβάνουν επιλέγουν την κωδική λέξη c η οποία ελαχιστοποιεί µια συνάρτηση όπως είναι η απόσταση Hamming d H (r,c) και µε τη χρήση κατάλληλων δοµών όπως οι standard πίνακες (standard array) έχουµε την δυνατότητα για πλήρη αποκωδικοποίηση. Βέβαια τέτοιοι αποκωδικοποιητές έχουν πολύ µεγάλη πολυπλοκότητα και απαιτούν πολύ υλικό και δεν χρησιµοποιούνται στην πράξη. Η δεύτερη κατηγορία είναι οι αποκωδικοποιητές περιορισµένης δυνατότητας διόρθωσης λαθών. Πρόκειται για αποκωδικοποιητές οι οποίοι επιλέγουν την κωδική λέξη c δεδοµένης της ληφθείσας λέξης r πάλι µε την χρήση των ίδιων συναρτήσεων µόνο που αυτή την φορά αρκεί να ισχύει d H (r,c) t. Εάν σε έναν τέτοιο αποκωδικοποιητή δεν µπορεί να βρεθεί µια κωδική λέξη που να ικανοποιεί την συνθήκη τότε λέµε ότι έχουµε αποτυχία του αποκωδικοποιητή. Σε αυτό το σηµείο θα αναφέραµε τι δυνατότητες τροποποίησης υπάρχουν για τους γραµµικούς µπλοκ κωδικες. Υπάρχει η δυνατότητα της επέκτασης µε την πρόσθεση ενός επιπλέον πλεονάζοντα όρου, παράγοντας έναν κώδικα (n+1, k, d+1), που έχει δηλαδή έναν επιπλέον σύµβολο ισοτιµίας αλλά και η απόσταση του κώδικα αυξάνει κατά 1. Υπάρχει η δυνατότητα µείωσης µε την διαγραφή ενός σύµβολου ισοτιµίας έτσι ο κώδικας γίνεται (n-1,k). Με µείωση κατά p φόρες υπάρχει η δυνατότητα για µείωση της απόστασης του κώδικα σε d-p. Υπάρχει η δυνατότητα για εξαγωγή µε την διαγραφή από τον κώδικα κάποιων κωδικών του λέξεων. Βεβαία αυτό πρέπει να γίνει κατάλληλα αν θέλουµε να παραµείνει γραµµικός ο κώδικας µας. Η ελάχιστη απόσταση µε αυτήν την τροποποίηση µπορεί να αυξηθεί. Υπάρχει η δυνατότητα για αύξηση ενός κώδικα µε την πρόσθεση νέων κωδικών λέξεων σε αυτόν. Βέβαια δεν εξασφαλίζεται ότι ο κώδικας που θα προκύψει θα είναι γραµµικός ενώ και η ελάχιστη απόσταση µπορεί να είναι µειωµένη. Υπάρχει η δυνατότητα για µείωση του µήκους ενός κώδικα µε την διαγραφή ενός συµβόλου µηνύµατος. Αυτό σηµαίνει ότι αφαιρείται µια γραµµή και µια στήλη από τον γεννήτορα πίνακα. Έτσι έχουµε έναν (n-1, k-1) κώδικα. Τέλος υπάρχει η δυνατότητα για αύξηση του µήκους ενός κώδικα µε την πρόσθεση ενός συµβόλου µηνύµατος. Αυτό σηµαίνει ότι µια γραµµή και µια στήλη προστίθεται στον γεννήτορα πίνακα. Με αυτόν τον τρόπο ένας (n,k) κώδικας γίνεται (n+1, k+1) κώδικας. ~ 32 ~

33 2.3 Κυκλικοί κώδικες (Cyclic codes) Σε αυτήν την ενότητα θα παρουσιάσουµε µια υποκατηγορία από γραµµικούς µπλοκ κώδικες, τους κυκλικούς κωδικες. Πρόκειται για κωδικες που έχουν επιπλέον αλγεβρική δοµή για να έχουν αποτελεσµατικότερη κωδικοποίηση και αποκωδικοποίηση. Οι κυκλικοί κώδικες βασίζονται σε πράξεις µε πολυώνυµα µε βασική αλγεβρική δοµή να είναι ο δακτύλιος. οσµένου ενός διανύσµατος c = (c 0, c 1,, c n-1 ) GF(q) n, το διάνυσµα c = (c n-1, c 0,, c n-2 ) λέγεται ότι είναι µια κυκλική µετακίνηση του c προς τα δεξιά. Μια µετακίνηση κατά w θέσεις προς τα δεξιά παράγει ένα διάνυσµα (c n-r, c n-r+1,, c n-1, c 0, c 1,, c n-r-1 ). Ένας (n,k) µπλοκ κώδικας C λέγεται ότι είναι κυκλικός εάν είναι γραµµικός και εάν πραγµατοποιώντας δεξιά κυκλική µετακίνηση στα σύµβολα κάθε κωδικής λέξης c = (c 0, c 1,, c n-1 ) που ανήκει στον κώδικα C, η καινούρια λέξη c new = (c n-1, c 0,,c n-2 ) που προκύπτει είναι επίσης κωδική λέξη του ιδίου κώδικα C. Οι πράξεις της µετακίνησης και της κυκλικής µετακίνησης µπορούν να αναπαρασταθούν µε τη χρήση πολυωνύµων. Το διάνυσµα c = (c 0, c 1,, c n-1 ) µπορεί να αναπαρασταθεί µε την πολυωνυµική µορφή c(x) = c 0 + c 1 x + + c n-1 x n-1. Μια µη κυκλική µετακίνηση αναπαριστάται από πολλαπλασιασµό πολυωνύµων x*c(x) = c 0 x + c 1 x c n-1 x n-1. Προκειµενου να έχουµε κυκλική µετακίνηση απαιτείται η διαίρεση του xc(x) µε τον όρο x n -1 από όπου θα κρατήσουµε ως αποτέλεσµα το υπόλοιπο της διαίρεσης. xc(x) =c n-1 x n-1 + (c 0 x + c 1 x c n-1 ), xc(x) (mod x n -1) = c n-1 + c 0 x + + c n-2 x n-1. Η αλγεβρική δοµή η οποία θα µας βοηθήσει στην µελέτη των κυκλικών κωδικών είναι ο δακτύλιος (ring). Ένας δακτύλιος <R,+, *> είναι ένα σετ R µε δυο βασικές πράξεις: την πρόσθεση (+) και τον πολλαπλασιασµό (*) που ορίζονται στο R µε τέτοιο τρόπο ώστε να ισχύει: Ι1 Το < R,+ > είναι ένα abelian group. Όπου θεωρούµε το στοιχείο ταυτότητα (identity) της πρόσθεσης ως το 0. Ι2 Η πράξη του πολλαπλασιασµού είναι προσεταιριστική: (a*b)*c = a*(b*c) για όλα τα a,b,c R. Ι3 Ισχύει η επιµεριστική ιδιότητα: a(b+c) = ab + ac, (a + b)c = ac + bc. Ένας δακτύλιος ονοµάζεται αντιµεταθετικός εάν ισχύει a*b = b*a για κάθε a, b R. Ένας δακτύλιος λέγεται ότι είναι δακτύλιος µε ταυτότητα αν η πράξη * του πολλαπλασιασµού έχει στοιχείο ταυτότητας η ουδέτερο στοιχείο. Αυτό είναι συνήθως το 1. Στους δακτυλίους δεν είναι υποχρεωτικό όλα τα στοιχειά να έχουν πολλαπλασιαστικό αντίστροφο. Τα στοιχεία ωστόσο που έχουν πολλαπλασιαστικό αντίστροφο λέγονται µονάδες (units). Εκτός από τους απλούς δακτυλίους έχουµε και δακτυλίους πολυωνύµων. Έστω ότι έχουµε ένα δακτύλιο R. Ένα πολυώνυµο f(x) βαθµού n µε συντελεστές στο R είναι ( ) = µε α n 0. Το σετ όλων των πολυωνύµων µε συντελεστές σε έναν δακτύλιο χρησιµοποιώντας τις γνωστές πράξεις της πρόσθεσης και του πολλαπλασιασµού πολυωνύµων σχηµατίζουν ένα δακτύλιο που ονοµάζεται πολυωνυµικός δακτύλιος R[x]. Οι δακτύλιοι πολυωνύµων έχουν ιδιαίτερη σηµασία όσον αφορά την δυνατότητα της δηµιουργίας πεδίων. ~ 33 ~

34 Έστω ότι R είναι ένας δακτύλιος. Ένα σετ I από µη µηδενικά στοιχεία του δακτυλίου ονοµάζεται «ιδανικό» αν ικανοποιεί τις ακόλουθες συνθήκες: I1 Το Ι σχηµατίζει group υπό την πράξη της πρόσθεσης στο R. Ι2 Για κάθε α I και r R ισχύει ότι το αr I. Η σηµασία τους φαίνεται από το γεγονός ότι οι κυκλικοί κωδικες σχηµατίζουν «ιδανικά» σε δακτυλίους πολυωνύµων. Ένα τέτοιο σετ I σε έναν δακτύλιο R λέγεται ότι είναι πρωταρχικό αν υπάρχει κάποιο g Ι τέτοιο ώστε κάθε στοιχείο a Ι να µπορεί να εκφραστεί ως προϊόν a = mg για κάποιο m R. Για ένα πρωταρχικό «ιδανικό» σετ ένα τέτοιο στοιχείο g ονοµάζεται στοιχείο γεννήτορας. Με βάση τα όσα αναφέρθηκαν παραπάνω µια κυκλική µετακίνηση ενός πολυωνύµου κωδικής λέξης c(x) µπορεί να αναπαρασταθεί ως xc(x) modulo x n -1. Αν θεωρήσουµε το πολυώνυµο c(x) ως στοιχείο του GF(q)[x]/(x n -1). Σε αυτό τον δακτύλιο κάθε στοιχείο προέρχεται από πράξη modulo, συνεπώς κάθε δύναµη του x µε το οποίο πολλαπλασιάζονται µια κωδική λέξη αποτελεί µια µετακίνηση προς τα δεξιά κατά x θέσεις. (c n-1, c 0, c 1,, c n-2 ) xc(x) (c n-2, c n-1, c 0,, c n-3 ) x 2 c(x) (c 1, c 2,, c n-1, c 0 ) x n-1 c(x) Επιπλέον, αν αυτές οι κωδικες λέξεις πολλαπλασιαστούν πάλι µε αριθµούς που ανήκουν στο GF(q) το αποτέλεσµα που προκύπτει είναι πάλι κωδική λέξη. Γενικά οποιοσδήποτε γραµµικός συνδυασµός τέτοιων κωδικών λέξεων έχει ως αποτέλεσµα δηµιουργία κωδικών λέξεων (εφόσον ο κώδικας είναι γραµµικός). Θεωρούµε ότι ο κυκλικός κώδικας που εξετάζουµε ανήκει στο GF(q) και οι κωδικές του λέξεις εκφράζονται ως πολυώνυµα στο GF(q)[x]/(x n -1). Αν πάρουµε οποιοδήποτε πολυώνυµο a(x) GF(q)[x]/(x n -1) της µορφής a(x) = a 0 + a 1 x + + a n-1 x n-1 και το πολλαπλασιάσουµε µε το c(x), τότε το a(x)c(x) είναι ένας γραµµικός συνδυασµός από κυκλικές µετακινήσεις του c(x) και είναι συνεπώς κωδική λέξη του κυκλικού κώδικα. Βάση όλων αυτών µπορούµε να κάνουµε κάποιες παρατηρήσεις σχετικά µε τους κυκλικούς κώδικες. Κάθε (n,k) κυκλικός κώδικας έχει ελάχιστο πολυώνυµο g(x) που είναι ο γεννήτορας του ideal και ονοµάζεται πολυώνυµο γεννήτορας του κώδικα µε βαθµό n-k. g(x) = g 0 + g 1 x + g 2 x g n-k x n-k Κάθε κωδική λέξη του κυκλικού κώδικα µπορεί να εκφραστεί ως το γινόµενο του πολυωνύµου γεννήτορα και ενός πολυωνύµου µηνύµατος m(x) βαθµού µικρότερου του k, ως c(x) = m(x)g(x). Με m(x) = m 0 + m 1 x + + m k-1 x k-1. Κάθε πολυώνυµο που προκύπτει µε αυτόν τον τρόπο πρέπει να έχει βαθµό µικρότερο η ίσο του n, έτσι ώστε n κωδικοποιηµένα σύµβολα να µπορούν να αναπαρασταθούν. Ο γεννήτορας είναι παράγοντας του x n -1 στο GF(q)[x]. Με βάση τα παραπάνω η διαδικασία της κωδικοποίησης του µηνύµατος συνίσταται στον πολλαπλασιασµό: ~ 34 ~

35 c(x) = m(x)g(x) = (m 0 g(x) + m 1 xg(x) + + m k-1 x k-1 g(x)) = [m 0 m 1 m 2 m k-1 ] ( ) ( ) ( ) Συνεπώς έχουµε c=mg όπου G είναι ένας k n διαγώνιος πίνακας. Για έναν κυκλικό κώδικα µήκους n µε γεννήτορα πολυώνυµο g(x) υπάρχει ένα κατά αντιστοιχία πολυώνυµο h(x) βαθµού k τέτοιο ώστε να ικανοποιείται η σχέση h(x)g(x) = x n -1. Αυτό το πολυώνυµο ονοµάζεται πολυώνυµο ελέγχου ισοτιµίας (parity check polynomial). εδοµένου ότι οι κωδικες λέξεις είναι πολλαπλάσια του g(x) τότε για κάθε κωδική λέξη ισχύει: c(x)h(x) = m(x)g(x)h(x) = m(x)(x n -1) που ισούται µε 0 στο πεδίο GF(q)[x]/(x n -1). Βάση αυτής της ιδιότητας παρέχεται ένας τρόπος ελέγχου των ληφθέντων από τον αποκωδικοποιητή λέξεων r(x). Μια ληφθείσα λέξη r(x) είναι κωδική λέξη αν και µόνο αν r(x)h(x) (mod a n -1) = 0. Ειδικά για τους γραµµικούς µπλοκ κωδικες µπορούµε να ορίσουµε ένα σύνδροµο (syndrome). Υπάρχουν αρκετοί τρόποι για να γίνει αυτό. Ένας απλός τρόπος είναι να ορίσουµε ένα σύνδροµο πολυώνυµο (syndrome polynomial) s(x) που αντιστοιχεί στα ληφθέντα δεδοµένα r(x). s(x) = r(x)h(x) (mod x n - 1), όπου το s(x) είναι ίσο µε µηδέν αν και µόνο αν το r(x) είναι κωδική λέξη. Αυτός ο τρόπος κωδικοποίησης ωστόσο είναι µη συστηµατικός. Προκειµένου να επιτυγχάνεται συστηµατική κωδικοποίηση απαιτείται κάποια επιπλέον διαδικασία που θα περιγραφεί παρακάτω. Αρχικά έχουµε το µήνυµα m = (m 0, m 1,, m k-1 ) σε µορφή πολυωνύµου, m(x) = m 0 + m 1 x + + m k-1 x k-1. Στην συνέχεια µετακινούµε προς τα δεξιά το µήνυµα κατά n-k θέσεις έτσι έχουµε: x n-k m(x) = m 0 x n-k + m 1 x n-k m k-1 x n-1, το οποίο πολυώνυµο αν παρατηρήσουµε αντιστοιχεί στο µήνυµα (0,0,,0, m 0, m 1,, m k-1 ) όπου αρχικά αποτελείται από n-k µηδενικά σύµβολα. Στην συνέχεια αν το αποτέλεσµα αυτό διαιρεθεί µε το πολυώνυµο γεννήτορα g(x) προκύπτει πηλίκο και υπόλοιπο: x n-k m(x) = q(x)g(x)+d(x), όπου q(x) είναι το πηλίκο και d(x) είναι το υπόλοιπο τα οποία έχουν βαθµό µικρότερο από n-k. Το υπόλοιπο d(x) που προκύπτει αντιστοιχεί σε κωδική ακολουθία (d 0, d 1,, d n-k-1, 0, 0,, 0). Αν αναδιατάξουµε τους όρους στην παραπάνω σχέση προκύπτει ότι x n- k m(x) d(x) = q(x)g(x). εδοµένου ότι το αριστερό µέρος της εξίσωσης είναι πολλαπλάσιο του g(x) συνεπάγεται ότι είναι κωδική λέξη. Η αναπαράσταση του σε ακολουθία κώδικα είναι: (-d 0, -d 1,, - d n-k-1, m 0, m 1,, m k-1 ) Τα σύµβολα του µηνύµατος εµφανίζονται στις τελευταίες k θέσεις ενώ τα σύµβολα ισοτιµίας εµφανίζονται στις αρχικές n-k θέσεις. Αυτό µας δίνει µια συστηµατική κωδικοποίηση. Προηγουµένως είχαµε ορίσει το σύνδροµο πολυώνυµο που χρησιµοποιείται για την αποκωδικοποίηση ως s(x) = r(x)h(x) (mod x n - 1). Σε αυτό το σηµείο θα παρουσιάσουµε ένα εναλλακτικό τρόπο ορισµού του συνδρόµου. Από τη στιγµή που µια κωδική λέξη πρέπει να είναι πολλαπλάσιο του g(x), όταν διαιρούµε το r(x) µε το g(x) και το υπόλοιπο είναι µηδέν τότε το r(x) είναι κωδική λέξη όπως αναφέρθηκε παραπάνω. Βάση αυτής της διαπίστωσης µπορεί να χρησιµοποιηθεί ο αλγόριθµος της διαίρεσης προκειµενου να οριστεί το σύνδροµο πολυώνυµο. Συνεπώς ο νέος ορισµός του πολυωνύµου είναι : r(x) = q(x)g(x) + s(x), s(x) = s 0 + s 1 x + + s n-k-1 x n-k-1. (2.8) Το q(x) είναι το πηλίκο της διαίρεσης και δεν έχει άµεση εφαρµογή στην διαδικασία της αποκωδικοποίησης. Το s(x) είναι το νέο σύνδροµο πολυώνυµο αλλά και το υπόλοιπο της διαίρεσης, µε αποτέλεσµα να έχει βαθµό µικρότερο από αυτόν του g(x). Βάση αυτού του ορισµού το ~ 35 ~

36 συγκεκριµένο πολυώνυµο µπορεί να αποκτηθεί µε τη χρήση ενός κυκλώµατος διαιρέτη. Μια σηµαντική ιδιότητα που προκύπτει είναι ότι τα σύνδροµα που αντιστοιχούν σε κωδικες λέξεις που έχουν υποστεί µετακίνηση προς τα δεξιά κατά i θέσεις προκύπτουν µε µετακίνηση προς τα δεξιά των αποτελεσµάτων των πράξεων s(x) (mod g(x)). Αυτό έχει ως άµεση συνέπεια την µείωση του απαραιτήτου υλικού που απαιτείται για την αποκωδικοποίηση. 2.4 Αριθµητική συστήµατος Πεδία (Fields) Σε αυτήν την ενότητα θα αναφερθούµε στην αριθµητική που θα χρησιµοποιηθεί στο προς µελέτη κύκλωµα και θα αναφερθούν οι µαθηµατικοί ορισµοί και οι ιδιότητες της βάσης αυτής της αριθµητικής ενώ στο τέλος θα παρουσιαστούν και αρχιτεκτονικές που υλοποιούν τις βασικές αριθµητικές πράξεις που θα χρησιµοποιηθούν στο προς µελέτη κύκλωµα. Τα πεδία αποτελούν σηµαντικό θεωρητικό υπόβαθρο στον ορισµό και τη χρήση διανυσµάτων σε θέµατα διόρθωσης λαθών αλλά και στην αριθµητική που χρησιµοποιείται ιδιαίτερα στους γραµµικούς µπλοκ κωδικες. Για αυτό το λόγο κρίνεται απαραίτητο σε αυτό το σηµείο να αναφέρουµε τον ορισµό αλλά και τις βασικές ιδιότητες που ισχύουν στα πεδία γενικότερα αλλά και πιο συγκεκριµένα σχετικά µε τις βασικές πράξεις, της πρόσθεσης και του πολλαπλασιασµού. Ορισµός Πεδίου: Πεδίο <F, +, *> είναι ένα σύνολο από αντικείµενα F στο οποίο οι πράξεις της πρόσθεσης και του πολλαπλασιασµού, της αφαίρεσης και της διαίρεσης εφαρµόζονται µε τρόπο ανάλογο του τρόπου που εφαρµόζονται στο σύνολο των πραγµατικών αριθµών. Πιο συγκεκριµένα οι πράξεις της πρόσθεσης και του πολλαπλασιασµού ικανοποιούν τα ακόλουθα: Ι1 Η πράξη της πρόσθεσης είναι κλειστή στο σύνολο αριθµών του πεδίου. Για κάθε a και b στο F, το αποτέλεσµα της πράξης της πρόσθεσης των δυο αυτών στοιχείων a + b ανήκει στο σύνολο αριθµών του πεδίου. Ι2 Η πράξη της πρόσθεσης έχει ουδέτερο στοιχείο. Υπάρχει δηλαδή στοιχείο στο F, που συµβολίζεται µε 0 τέτοιο ώστε a + 0 = 0 + a = a για κάθε στοιχείο a που ανήκει στο F. Ι3 Υπάρχει προσθετικός αντίστροφος στο σύνολο F. Πιο συγκεκριµένα για κάθε στοιχείο a που ανήκει στο F, υπάρχει ένα στοιχείο b στο F, τέτοιο ώστε να ισχύει a + b = b + a = 0. Το στοιχείο b ονοµάζεται προσθετικός αντίστροφος του a και δηλώνεται ως a. Ι4 Ισχύει η προσεταιριστική ιδιότητα στη πρόσθεση: (a + b) + c = a + (b + c) για κάθε a,b,c F. Ι5 Ισχύει η αντιµεταθετική ιδιότητα στην πρόσθεση: a + b = b + a για κάθε a,b F. Ι6 Η πράξη του πολλαπλασιασµού είναι κλειστή στο σύνολο αριθµών του πεδίου. Για κάθε a και b στο F, το αποτέλεσµα της πράξης του πολλαπλασιασµού των δυο αυτών στοιχείων a*b ανήκει στο σύνολο αριθµών του πεδίου. Ι7 Η πράξη του πολλαπλασιασµού έχει ουδέτερο στοιχείο. Υπάρχει δηλαδή στοιχείο στο F, που συµβολίζεται µε 1 τέτοιο ώστε a * 1 = 1 * a = a για κάθε στοιχείο a που ανήκει στο F µε a 0. Ι8 Υπάρχει πολλαπλασιαστικός αντίστροφος στο σύνολο F. Πιο συγκεκριµένα για κάθε στοιχείο a που ανήκει στο F µε a 0, υπάρχει ένα στοιχείο b στο F, τέτοιο ώστε να ισχύει a * b = b * a =1. Το στοιχείο b ονοµάζεται πολλαπλασιαστικός αντίστροφος του a και δηλώνεται ως a -1. ~ 36 ~

37 Ι9 Ισχύει η προσετεριστική ιδιότητα στο πολλαπλασιασµό: (a * b) * c = a * (b * c) για κάθε a,b,c F. Ι10 Ισχύει η αντιµεταθετική ιδιότητα στον πολλαπλασιασµό: a * b = b* a για κάθε a,b F. Ι11 Τέλος ισχύει η επιµεριστική ιδιότητα: a * (b + c) = a * b + a * c. Οι πρώτες τέσσερις απαιτήσεις δηλώνουν άµεσα ότι τα στοιχεία του πεδίου F σχηµατίζουν γκρουπ (group) υπό την πράξη της πρόσθεσης. Βάση των επιπλέον απαιτήσεων υποδηλώνεται ότι τα µη µηδενικά στοιχεία που απαρτίζουν το F σχηµατίζουν group υπό την πράξη του πολλαπλασιασµού. Το πεδίο <F, +, *> συχνά αναφέρεται ως απλά F και είναι και η σύµβαση που θα χρησιµοποιείται από εδώ και πέρα όπου χρειαστεί. Ένα πεδίο µε q στοιχεία σε αυτό µπορεί να υποδηλωθεί ως F q. Γενικότερα πεδία µε πεπερασµένο αριθµό στοιχείων λέγονται πεπερασµένα πεδία. Επίσης είναι σηµαντικό να αναφερθεί η βασική διαφορά σε σχέση µε τον δακτύλιο (ring). Στον δακτύλιο δεν είναι απαραίτητο να υπάρχει ουδέτερο στοιχείο ως προς την πράξη του πολλαπλασιασµού ενώ επίσης κάθε στοιχείο του δεν έχει απαραίτητα πολλαπλασιαστικό αντίστροφο. Γενικά κάθε πεδίο είναι και δακτύλιος, αλλά κάθε δακτύλιος δεν είναι απαραίτητα και πεδίο. Η βασική προϋπόθεση ώστε ένας δακτύλιος <Ζ p, +, *> να είναι και πεδίο είναι ότι πρέπει το πλήθος p των µη µηδενικών στοιχείων του δακτυλίου να είναι πρώτος αριθµός. Εκτός από αυτά τα πεπερασµένα πεδία υπάρχουν και άλλα τα οποία παράγονται από αυτά και ονοµάζονται πεδία επέκτασης (extension fields) Πεδία πραγµατικών R και µιγαδικών αριθµών C Είναι σκόπιµο να ξεκινήσουµε τη µελέτη µε πεδία αριθµών που µας είναι ήδη γνωστά πριν εξηγήσουµε το πεδίο που θα χρησιµοποιήσουµε για την αριθµητική του συστήµατος µας. Τα δυο αυτά πεδία είναι το πεδίο των πραγµατικών αριθµών καθώς και το πεδίο των µιγαδικών αριθµών που είναι επέκταση του πρώτου. Οι µιγαδικοί αριθµοί µπορούν να αναπαρασταθούν µε πολλούς τρόπους ανάλογα τι µας εξυπηρετεί στην κάθε περίσταση. Μπορούν να αναπαρασταθούν ως µορφή διανύσµατος (a,b) ως µορφή πολυωνύµου a + bi όπου i η ρίζα του πολυωνύµου x αν και στην παρούσα φάση θα ήταν χρησιµότερο να αποσυνδέσουµε το i µε την τιµή 1, καθώς και σε πολική µορφή re iθ. οσµένων δυο µιγαδικών αριθµών θα παρουσιάσουµε τις πράξεις της πρόσθεσης και του πολλαπλασιασµού µε τέτοιο τρόπο σαν να τις ορίζουµε εξαρχής βάση των ιδιοτήτων που αναφέραµε για τα πεδία. Έστω ότι οι µιγαδικοί αριθµοί που έχουµε είναι σε διανυσµατική µορφή και είναι οι εξής: (a,b), (c,d). Η πράξη της πρόσθεσης γίνεται ως εξής: (a,b) + (c,d) = (a + c, b + d) Πρέπει να αναφερθεί το γεγονός ότι η πράξη της πρόσθεσης όπως πραγµατοποιήθηκε ικανοποιεί τις ιδιότητες που αναφέραµε προηγουµένως σχετικά µε τα πεδία. Αν πραγµατοποιούσαµε την πρόσθεση µε τους ιδίους αριθµούς σε άλλη µορφή όπως η πολυωνυµική θα διαπιστώναµε ότι το αποτέλεσµα θα ήταν ισοδύναµο. Είναι ενδιαφέρον να δούµε πως θα έπρεπε να οριστεί ο πολλαπλασιασµός ώστε να τηρούνται και πάλι οι ιδιότητες που αναφέρθηκαν παραπάνω. Μπορούµε σε πρώτη φάση να θεωρήσουµε ότι έχουµε τους αριθµούς σε πολυωνυµική µορφή και να εκτελέσουµε τον πολλαπλασιασµό όπως όταν πολλαπλασιάζουµε πολυώνυµα µε τον συµβατικό τρόπο. Το αποτέλεσµα θα είναι το εξής: (a + bi)*(c + di) = ac + (ad + bc)i + bdi 2, ~ 37 ~

38 Παρατηρούµε σε αυτό το σηµείο όµως ότι το αποτέλεσµα έχει έναν όρο µε i 2, που ουσιαστικά δεν είναι σωστή αναπαράσταση αποτελέσµατος. Ένας τρόπος για να αποφύγουµε αυτόν τον όρο είναι να διαιρέσουµε το αποτέλεσµα που πρόεκυψε µε κάποιο άλλο πολυώνυµο ίδιου βαθµού και να κρατήσουµε ως αποτέλεσµα το υπόλοιπο της διαίρεσης. Αν επιλέξουµε ως πολυώνυµο το g(i) = 1 + i 2 και πραγµατοποιήσουµε την διαίρεση θα διαπιστώσουµε ότι το αποτέλεσµα που προκύπτει είναι ως υπόλοιπο της διαίρεσης είναι (ac bd) + (ad + bc)i. Το αποτέλεσµα που προκύπτει είναι το ίδιο µε αυτό που θα παίρναµε αν κάναµε την πράξη χωρίς να λαµβάναµε υπόψη τους κανόνες και ο λόγος είναι το πολυώνυµο που επιλέχτηκε προκειµενου να κάνουµε την διαίρεση που µας έδωσε το υπόλοιπο. Η ρίζα αυτού του πολυωνύµου είναι η 1 βάση της οποίας ορίζεται στην πραγµατικότητα το i. Προφανώς και το i στην συγκεκριµένη περίπτωση είναι και η ρίζα του πολυωνύµου g, δηλαδή i =0. Προφανώς πλέον µπορούµε να αντικαταστήσουµε κατευθείαν την τιµή -1 στην θέση του i 2 στο αποτέλεσµα του πολλαπλασιασµού και να πάρουµε το ίδιο αποτέλεσµα. Αν τώρα είχαµε στο αποτέλεσµα κάποια έκφραση που περιείχε δύναµη του i υψηλότερης τάξης για παράδειγµα i 3 θα µπορούσαµε να απλοποιήσουµε την έκφραση σε µικρότερες δυνάµεις του i χρησιµοποιώντας την λογική της αντικατάστασης της τιµής i 2 = -1. i 3 = i * i 2 =i * (-1) = -i Παρατηρούµε λοιπόν ότι έχουµε ορίσει το σύνολο-πεδιο των µιγαδικών αριθµών. Είναι ωστόσο σηµαντικό να αναφερθεί ότι το πολυώνυµο που χρησιµοποιήθηκε για να οριστεί ο πολλαπλασιασµός δεν έχει ρίζες στο σύνολο των πραγµατικών αριθµών R. Αν το πολυώνυµο g(i) που χρησιµοποιήσαµε είχε ρίζες στο σύνολο των πραγµατικών αριθµών η πράξη του πολλαπλασιασµού δεν θα ικανοποιούσε τις απαιτήσεις του πεδίου. Ένα πολυώνυµο το οποίο δεν µπορεί να αναπαρασταθεί από γινόµενο πολυωνύµων µικρότερου βαθµού λέγεται µη ανάγωγο. Ουσιαστικά πήραµε ένα πολυώνυµο το οποίο δεν είχε ρίζες στο πεδίο των πραγµατικών αριθµών και δηµιουργήσαµε ένα νέο στοιχείο i το οποίο είναι ρίζα του g(i) και ορίσαµε µε τη χρήση αυτού του στοιχείου ένα νέο πεδίο. Το πεδίο C που δηµιουργήθηκε λέγεται ότι είναι ένα πεδίο επέκτασης του πεδίου R το οποίο µε τη σειρά του ονοµάζεται πεδίο βάσης. Με τον ίδιο τρόπο ορίζονται και τα πεδία Galois που θα µας απασχολήσουν παρακάτω ως προς τις αριθµητικές πράξεις, ενώ µπορούµε και εδώ να επιλέξουµε την αναπαράσταση των αριθµών που θα χρησιµοποιήσουµε ανάλογα µε τους στόχους που θέλουµε να επιδιώξουµε Πεδία Galois Σε αυτήν την ενότητα θα παρουσιάσουµε τις βασικές αρχές και τα χαρακτηριστικά των πεδίων Galois που θα µας απασχολήσουν ιδιαίτερα καθώς σε αυτά τα πεδία θα υλοποιείται η αρχιτεκτονική του συστήµατος µας. Αρχικά θα ξεκινήσουµε µε την έννοια του υποπεδίου (subfield). Υποπεδίο ενός πεδίου ονοµάζεται ένα υποσύνολο ενός πεδίου το οποίο είναι µε την σειρά του πεδίο. Ως παράδειγµα µπορούµε να αναφέρουµε το πεδίο των ρητών αριθµών Q που είναι υποπεδίο των πραγµατικών R. Βεβαίως ιδιαίτερη σηµασία έχει να εξετάσουµε το θέµα και από την αντίθετη πλευρά όπως αναφέραµε στην προηγούµενη ενότητα. Με βάση αυτόν τον συλλογισµό παρατηρούµε ότι ένα πεδίο επέκτασης E ενός πεδίου F είναι ένα πεδίο στο οποίο το F είναι υποπεδίο και πεδίο βάσης. Γενικά πεδία επέκτασης κατασκευάζονται ώστε να δηµιουργούν ρίζες µη ανάγωγων πολυωνύµων στο πεδίο βάσης. Ως παράδειγµα για την κατανόηση των παραπάνω παρατηρούµε ότι το πολυώνυµο f(x) = x 2 2 είναι µη ~ 38 ~

39 ανάγωγο στο σύνολο πεδίο των ρητών αριθµών Q αλλά στους πραγµατικούς αριθµούς µπορεί να γραφτεί ως f(x) = (x + 2)(x - 2) καθώς το f(x) είναι ανάγωγο στο R. Αναφέρθηκε προηγουµένως ότι ο δακτύλιος <Z p, +, *> είναι και πεδίο όταν το πλήθος p των µη µηδενικών του στοιχείων είναι πρώτος αριθµός. Αποδεικνύεται ότι όλα τα πεπερασµένα πεδία έχουν τάξη ιση µε κάποια δύναµη ενός πρώτου αριθµού p m. Για m >1 τα πεδία που σχηµατίζονται είναι πεδία επέκτασης του Z p χρησιµοποιώντας µη ανάγωγο πολυώνυµο βαθµού m. Τα πεπερασµένα αυτά πεδία συµβολίζονται µε GF(p m ) η GF(q) µε q = p m, όπου το GF σηµαίνει πεδία(fields) Galois. Για να γίνει πιο κατανοητή η διαδικασία αλλά και να δούµε στην πράξη τα χαρακτηριστικά αλλά και τη δοµή ενός τέτοιου πεδίου θα παρουσιάσουµε ένα παράδειγµα στο GF(2 4 ) όπου θα δούµε πως γίνονται οι πράξεις της πρόσθεσης και του πολλαπλασιασµού. Κάθε αριθµός στο GF(2 4 ) µπορεί να αναπαρασταθεί ως ένα διάνυσµα 4 στοιχείων (a, b, c, d) καθένα από τα οποία παίρνει τιµή στο GF(2). Η πράξη της πρόσθεσης στο GF(2 4 ) ορίζεται ως πρόσθεση στοιχείο προς στοιχείο και στην συνέχεια modulo 2. Έτσι για τους αριθµούς (a 1, a 2, a 3, a 4 ) GF(2 4 ) και (b 1, b 2, b 3, b 4 ) GF(2 4 ) όπου a i GF(2) και b i GF(2) ισχύει: (a 1, a 2, a 3, a 4 ) + (b 1, b 2, b 3, b 4 ) = ((a 1 +b 1 )mod2, (a 2 + b 2 )mod2, (a 3 + b 3 )mod2, (a 4 + b 4 )mod2) Αν και η πράξη της πρόσθεσης είναι απλή υπόθεση ο πολλαπλασιασµός δεν ορίζεται τόσο απλά. Προκειµενου να οριστεί απαιτείται ένα πολυώνυµο µη ανάγωγο στο GF(2) m βαθµού, 4 ου βαθµού στο παράδειγµα που παραθέτουµε. Ένα τέτοιο πολυώνυµο είναι το g(x) = 1 + x + x 4. Στο πεδίο επέκτασης GF(2 4 ) ορίζουµε το στοιχείο α να είναι ρίζα του g(x) άρα ισχύει ότι: α 4 + α + 1 = 0 ή α 4 = α + 1 Κάθε αριθµός (a, b, c, d) στο GF(2 4 ) εκτός της αναπαράστασης ως διάνυσµα µπορεί να αναπαρασταθεί και σε πολυωνυµική µορφή a + bα + cα 2 + dα 3. Από αυτό το γεγονός καταλαβαίνουµε ποια είναι η χρησιµότητα του µη ανάγωγου πολυωνύµου. Ο λόγος είναι ότι πολλαπλασιάζοντας 2 αριθµούς σε πολυωνυµική µορφή προκύπτουν δυνάµεις µεγαλύτερες του α 3 που όµως δεν µπορούν να χρησιµοποιηθούν για αναπαράσταση αριθµού σε πολυωνυµική µορφή. Το µη ανάγωγο πολυώνυµο µας δίνει την δυνατότητα να µετατρέψουµε τις δυνάµεις που είναι µεγαλύτερες του α 3 σε άλλες ίσες η µικρότερες µε αυτό, ως εξής: α 4 = 1 + α, α 5 = α(α 4 ) = α + α 2, α 6 = α 2 (α 4 ) = α 2 + α 3, α 7 = α 3 (α 4 ) = α 3 (1 + α) = α α. Επειδή το πολυώνυµο που χρησιµοποιήσαµε είναι µη ανάγωγο όλες οι δυνάµεις µέχρι το α 14 έχουν µοναδική αναπαράσταση, ενώ ισχύει ακόµα ότι α 15 = α 0 = 1. Από αυτήν την παρατήρηση προκύπτει µια µορφή αναπαράστασης όπως είναι η πολική και ονοµάζεται αναπαράσταση δύναµης. Πρακτικά λοιπόν εκτός της διανυσµατικής και της πολυωνυµικής αναπαράστασης άλλη µια προστίθεται η αναπαράσταση δύναµης η οποία είναι πολύ χρήσιµη. Παρακάτω παρουσιάζουµε έναν πίνακα που συνοψίζει την σχέση µεταξύ των διαφόρων αναπαραστάσεων για το πεδίο GF(2 4 ) χρησιµοποιώντας το µη ανάγωγο πολυώνυµο g(x) = 1 + x + x 4. ~ 39 ~

40 Πολυωνυµική Αναπαράσταση Αναπαράσταση ιανύσµατος Αναπαράσταση ιανύσµατος (ακέραιοι) Αναπαράσταση ύναµης α n Λογάριθµος n Λογάριθµος Zech z(n) = α α α 1 4 α α α α α α α + α α α 2 + α α α + α α α α α + α α α + α α α + α 2 + α α α + α 2 + α α α 2 + α α α α Πίνακας 1 : Αναπαραστάσεις πολυωνύμου, διανύσματος, δύναμης στοιχείων του GF(2 4 ) με τη χρήση του g(x) = 1 + x + x 4 Στον πίνακα αυτό η τελευταία στήλη του δίνει τον λογάριθµο Zech που αντιστοιχεί σε κάθε στοιχείο του πεδίου Galois. Ο λογάριθµος Zech χρησιµεύει στην πραγµατοποίηση πράξεων µεταξύ των στοιχείων του πεδίου και σε ορισµένες υλοποιήσεις έχει βρεθεί ότι η χρήση του µπορεί να µειώσει σηµαντικά τον χρόνο εκτέλεσης των πράξεων. Σε ένα πεδίο Galois GF(2 m ) ο λογάριθµος Zech z(n) ορίζεται ως εξής: a z(n) = 1 + α n, n = 1, 2,, 2 m 2. Για παράδειγµα ισχύει ότι 1 + α 2 = α 8, καθώς z(2) = 8. Με την προσέγγιση του λογάριθµου Zech για τον υπολογισµό πράξεων σε πεδία Galois οι αριθµοί αναπαριστώνται µε την χρήση του εκθετικού. Θα δείξουµε ένα παράδειγµα για την πράξη της πρόσθεσης. Έστω θέλουµε να κάνουµε την πράξη α 3 + α 5. Αρχικά παραγοντοποιούµε την πράξη βγάζοντας κοινό παράγοντα την µικρότερη δύναµη άρα έχουµε: α 3 + α 5 = α 3 (1 + α 2 ). Με την χρήση του λογάριθµου έχουµε όπως είπαµε ότι + α 2 = α 8, καθώς z(2) = 8. Άρα τελικά προκύπτει ότι: α 3 + α 5 = α 3 (1 + α 2 ) = α 3 α 8 = α 11. Αφού παρουσιάστηκε ένα παράδειγµα κατασκευής ενός πεδίου Galois κρίνεται επιπλέον σκόπιµο να παρουσιαστούν κάποια βασικά θέµατα που αφορούν στην θεωρία και την µαθηµατική υπόσταση του πεδίου. Θα παρουσιαστούν βασικά χαρακτηριστικά που ισχύουν για αυτά τα πεδία. Χαρακτηριστικός αριθµός ενός δακτυλίου R ονοµάζεται ο µικρότερος θετικός ακέραιος αριθµός n για τον οποίο ισχύει nα = 0 για κάθε α R. Εάν τέτοιος αριθµός δεν υπάρχει τότε θεωρείται ότι ο δακτύλιος έχει χαρακτηριστικό αριθµό 0.Αυτος βέβαια είναι ο ορισµός για τον δακτύλιο, όµως έχει αναφερθεί ότι κάθε πεδίο είναι και δακτύλιος. Ειδικά για πεδία αποδεικνύεται ότι πρέπει αυτός ο χαρακτηριστικός αριθµός να είναι 0 ή πρώτος αριθµός. Για κάθε στοιχείο x, y που ανήκουν σε πεδίο µε χαρακτηριστικό αριθµό p ισχύει ότι: (x + y) p = x p + y p. ~ 40 ~

41 Όπως αναφέρθηκε και σε προηγούµενη ενότητα η τάξη q κάθε πεπερασµένου πεδίου GF(q) πρέπει να είναι δύναµη πρώτου αριθµού. Πρακτικά κάθε πεπερασµένο πεδίο GF(q) έχει ένα υποπεδίο τάξης p όπου p είναι πρώτος αριθµός. Το GF(q) συµπεριφέρεται ουσιαστικά σαν διάνυσµα χώρου πάνω στο υποπεδίο GF(p). Το γεγονός αυτό έχει σηµασία σχετικά µε την αναπαράσταση του πεδίου. Προηγουµένως κατασκευάσαµε ένα πεδίο GF(2 4 ) χρησιµοποιώντας την πολυωνυµική αναπαράσταση µε βάση των δυνάµεων α 0 = 1, α, α 2, α 3. Γενικεύοντας για τον σχηµατισµό ενός πεδίου GF(p m ) χρησιµοποιούνται ως βάση τα στοιχεία {1, α, α 2, α 3,, α m-1 } ως διανύσµατα βάσης, ωστόσο οποιοδήποτε σετ από m γραµµικώς ανεξάρτητα µη µηδενικά στοιχεία του GF(p m ) µπορεί να χρησιµοποιηθεί ως βάση του διανυσµατικού χώρου. Για την κατασκευή του πεδίου GF(2 4 ) θα µπορούσαµε για παράδειγµα να χρησιµοποιήσουµε ως στοιχεία βάσης τους εξής γραµµικούς συνδυασµούς {1 + α, α + α 2, 1+ α 3, α + α }. Η σχέση µε το µη ανάγωγο πολυώνυµο που ορίζει τον πολλαπλασιασµό ουσιαστικά συµβάλει άµεσα σε αυτόν τον τοµέα. Ένας ακόµα σηµαντικός ορισµός είναι αυτός της τάξης ενός στοιχείου του υπό εξέταση πεδίου κάθε φορά. Έστω λοιπόν ότι β GF(q). Ορίζουµε ως τάξη του στοιχείου β και γράφεται ord(β) τον µικρότερο θετικό ακέραιο n για τον οποίο ισχύει ότι β n = 1. Ένα στοιχείο µε τάξη q-1 στο GF(q) ονοµάζεται πρωταρχικό στοιχείο και παράγει όλα τα µη µηδενικά στοιχεία του πεδίου. Επιπλέον έχει και την µεγαλύτερη τάξη από κάθε άλλο στοιχείο του πεδίου. Στην κατασκευή του GF(2 4 ) το στοιχείο που αναφέρθηκε ως α είχε τάξη 15 και ήταν το πρωταρχικό στοιχείο του πεδίου. Με βάση αυτόν τον ορισµό µπορούν να παρατεθούν τα παρακάτω λήµµατα: Εάν το β GF(q) και β 0 τότε αποδεικνύεται ότι η τάξη του στοιχείου β διαιρεί το q-1 (ord(β) (q-1)). Έστω β GF(q) αποδεικνύεται ότι β s = 1 αν και µόνο αν ord(β) s. Έστω α, β GF(q) µε το στοιχείο α να έχει τάξη s και το στοιχείο β να έχει τάξη t και (s, t) = 1, αποδεικνύεται ότι το στοιχείο αβ έχει τάξη st. Σε ένα στοιχείο α ενός πεπερασµένου πεδίου αν ord(α) = t και β = α i τότε ord(β) = t/(i,t). Ο λόγος για τον οποίο έπρεπε να αναφερθούν τα παραπάνω λήµµατα ήταν γιατί είναι απαραίτητα για την απόδειξη του εποµένου βασικού θεωρήµατος που έµµεσα διευκρινίζει πόσα είναι τα πρωταρχικά στοιχεία σε ένα πεδίο Galois. Σε ένα πεδίο Galois GF(q), αν t q-1 τότε υπάρχουν φ(t) στοιχεία τάξης t στο GF(q) όπου φ(t) είναι η συνάρτηση Euler. Άρα εφόσον τα πρωταρχικά στοιχεία έχουν τάξη q-1 τότε υπάρχουν φ(q-1) πρωταρχικά στοιχεία. Επειδή πρωταρχικά στοιχεία υπάρχουν σε κάθε πεδίο τα µη µηδενικά στοιχεία του πεδίου µπορούν να αναπαρασταθούν ως δύναµη αυτού του στοιχείου. Συνεπώς αν α είναι πρωταρχικό στοιχείο του GF(q) τότε τα στοιχεία του πεδίου είναι {α, α 2,, α q-2, α q-1 = 1} ενώ αν β είναι ένα άλλο πρωταρχικό στοιχείο του πεδίου όπου β = α i τότε το πεδίο µπορεί να γραφτεί ως (β, β 2,, β q-2, β q-1 = 1). Αυτό σηµαίνει ότι βασικά χρησιµοποιούνται διαφορετικοί γεννήτορες που έχουν σαν αποτέλεσµα οι αναπαραστάσεις των πεδίων να διαφέρουν χωρίς αυτό όµως να σηµαίνει ότι διαφέρουν και τα πεδία. Υπάρχει µόνο ένα πεδίο Galois µε q στοιχεία απλώς µας δίνεται η δυνατότητα να επιλέξουµε πως θα τα αναπαραστήσουµε. Αποδεικνύεται τέλος ότι κάθε στοιχείο ενός πεδίου GF(q) ικανοποιεί την εξίσωση x q x = 0 και σαν επέκταση αυτού µπορούµε να πούµε ότι κάθε στοιχείο του πεδίου ικανοποιεί και τη σχέση x = 0 για κάθε n 0. Τα στοιχεία σε ένα πεδίο βάσης GF(q) είναι επίσης και στοιχεία σε πεδία επέκτασης GF(q m ). εδοµένου ότι έχουµε ένα στοιχείο β GF(q m ) στο πεδίο επέκτασης είναι σκόπιµο να γνωρίζουµε αν ανήκει και στο πεδίο βάσης GF(q). Στην ερώτηση αυτή απαντάει το επόµενο θεώρηµα. Αποδεικνύεται ότι ένα στοιχείο β στο GF(q m ) ανήκει και στο GF(q) αν και µόνο αν β q = β, και γενικότερα αν = β για κάθε n 0. Ιδιαίτερο ενδιαφέρον έχει επίσης ποια είναι τα υποπεδία ενός ~ 41 ~

42 πεδίου και ποια είναι η συνθήκη που πρέπει να ισχύει. Αποδεικνύεται λοιπόν ότι ένα πεδίο GF(q k ) είναι υποπεδίο του GF(q j ) αν και µόνο αν k j. 2.5 Μη ανάγωγα και πρωταρχικά πολυώνυµα Σε αυτήν την ενότητα είναι σκόπιµο να συζητηθούν περισσότερα θέµατα που έχουν να κάνουν µε τα πρωταρχικά και µη ανάγωγα πολυώνυµα που αποτέλεσαν σηµαντικά στοιχεία για τον ορισµό και την κατασκευή των πεδίων Galois. Αρχικά θα αναφερθούν οι βασικές ιδιότητες των πολυώνυµων και στη συνέχεια θα επεκταθούµε σε θέµατα που έχουν να κάνουν µε πεδία Galois. Κάθε πολυώνυµο βαθµού d που ορίζεται σε ένα πεδίο F έχει το πολύ d ρίζες σε κάθε πεδίο που περιέχει το πεδίο F. Βέβαια πρέπει να τονιστεί ότι αυτή η ιδιότητα δεν ισχύει πάντα σε δακτυλίους. Όσον αφορά την κατασκευή των πεδίων επέκτασης αναφέρθηκε ότι οποιοδήποτε µη ανάγωγο πολυώνυµο µπορεί να χρησιµοποιηθεί για αυτό τον σκοπό, ωστόσο οι υπολογισµοί στο πεδίο θα γίνονται ευκολότεροι αν χρησιµοποιηθεί πρωταρχικό πολυώνυµο. Προκειµενου να δοθεί ο ορισµός του πρωταρχικού πολυωνύµου είναι χρήσιµο να ειπωθούν ορισµένα θεωρήµατα και παρατηρήσεις. Έστω ότι p είναι πρώτος αριθµός. Αποδεικνύεται ότι ένα µη ανάγωγο πολυώνυµο m βαθµού f(x) GF(p)[x] διαιρεί το -1. Είναι σηµαντικό να τονιστεί ότι ένα µη ανάγωγο πολυώνυµο µπορεί να διαιρέσει το 1 δεν σηµαίνει όµως ότι ισχύει και το αντίστροφο. Επιπλέον ένα µη ανάγωγο πολυώνυµο f(x) GF(q)[x] και είναι µη ανάγωγο βαθµού m τότε ισχύει ότι f(x) [ - x] για κάθε k τέτοιο ώστε m k. Σε αυτό το σηµείο θα αναφέρουµε τον ορισµό του πρωταρχικού πολυωνύµου. Ένα µη ανάγωγο πολυώνυµο p(x) ΑΝΗΚΕΙ GF(p)[x] βαθµού m ονοµάζεται πρωταρχικό εάν ο µικρότερος θετικός ακέραιος n για τον οποίο το p(x) διαιρεί το x n -1 είναι το n = p m 1.Το ιδιαίτερα σηµαντικό χαρακτηριστικό ενός τέτοιου πολυωνύµου είναι ότι οι ρίζες είναι πρωταρχικά στοιχεία στο GF(p m ), που συνεπάγεται ότι οποιαδήποτε από τις ρίζες του µπορεί να παράγει όλα τα µη µηδενικά στοιχεία αυτού του πεδίου. 2.6 Συζυγή στοιχεία και ελάχιστα πολυώνυµα Είναι συχνό φαινόµενο η δοµή ενός κώδικα να ορίζεται σε ένα πεδίο GF(q m ) ωστόσο να είναι επιθυµητό να χρησιµοποιηθεί ένα πολυώνυµο γεννήτορας g(x) πάνω σε κάποιο πεδίο βάσης GF(q). Ουσιαστικά αυτό που απαιτείται είναι πολυώνυµα που να έχουν συντελεστές στο πεδίο βάσης αλλά ρίζες σε ένα µεγαλύτερο πεδίο επέκτασης. Η λογική των συζυγών στοιχείων και των ελαχίστων πολυώνυµων µας παρέχουν τον τρόπο για να περιγράψουµε τα πολυώνυµα που χρειαζόµαστε Συζυγή στοιχεία (Conjugate elements) Είναι σκόπιµο να ξεκινήσει η µελέτη µε ένα παράδειγµα από τα πολυώνυµα µε συντελεστές στο σύνολο των πραγµατικών αριθµών. Αρχικά έχουµε έναν µιγαδικό αριθµό από το πεδίο C, έστω τον x 1 = 2 + 3i. Στο πεδίο C υπάρχει το πολυώνυµο x 2 3i όπου έχει το x 1 ως ρίζα όµως απαιτείται ένα πολυώνυµο µε πραγµατικούς συντελεστές που να έχει ρίζα το x 1. Γνωρίζουµε ότι προκειµενου να υπάρχει ως ρίζα το x 1 απαιτείται το πολυώνυµο αυτό να έχει ρίζα και το x 2 = 2 3i που ονοµάζεται συζυγής του x 1. Το πολυώνυµο που ψάχνουµε στο παράδειγµα είναι το (x x 1 )(x x 2 ) = x 2-4x Κατά παρόµοιο τρόπο στα πεπερασµένα πεδία υπάρχει η ίδια αναλογία. Αποδεικνύεται ότι σε ένα ~ 42 ~

43 πεδίο Galois GF(q) = GF(p r ) για κάποιο r 1ενα πολυώνυµο f(x) = GF(q)[x] και f i GF(q). Ισχύει ότι f( ) = [ ( )]. Αυτό πρακτικά σηµαίνει ότι αν το στοιχείο β GF(q m ) είναι ρίζα του f(x) GF(q)[x], τότε το στοιχείο είναι επίσης ρίζα του f(x). Βάση αυτού ορίζονται τα συζυγή στοιχεία. Έστω το στοιχείο β GF(q m ). Τα συζυγή του β λαµβάνοντας υπόψη το πεδίο GF(q) είναι τα στοιχεία β, β q, β, β,. Φυσικά επειδή συζητάµε για πεπερασµένα στοιχεία µετά από κάποιο σηµείο αρχίζει η επανάληψη τους. Τα συζυγή στοιχεία του β λαµβάνοντας υπόψη το GF(q) σχηµατίζουν ένα σετ που ονοµάζεται κλάση συζυγών του β. Τα στοιχεία κάθε πεδίου Galois ανήκουν σε µια µόνο κλάση το καθένα µε τα στοιχεία 1 = α 0 και το 0 να σχηµατίζουν µόνα τους την δική τους κλάση το καθένα ξεχωριστά. Ο µικρότερος θετικός ακέραιος d για τον οποίο n q d 1 ονοµάζεται πολλαπλασιαστική τάξη του q modulo n. Ο ορισµός αυτός είναι απαραίτητος ώστε να αναφερθεί και να αποδειχτεί το παρακάτω λήµµα. Έστω ότι έχουµε ένα στοιχείο β στο GF(q m ) µε τάξη ord(β) = n και έστω d είναι η πολλαπλασιαστική τάξη του q modulo n. Τότε αποδεικνύεται ότι ισχύει = β. Τα d στοιχεία β, β q,,, είναι όλα µοναδικά Ελάχιστα πολυώνυµα (Minimal polynomials) Σε αυτή την ενότητα θα εξεταστούν πολυώνυµα στο GF(q)[x] τα οποία έχουν ένα στοιχείο β GF(q m ) και όλα τα συζυγή του ως ρίζες. Αρχικά θα αναφέρουµε τον ορισµό του ελάχιστου πολυωνύµου. Έστω ένα στοιχείο β GF(q m ). Ως ελάχιστο πολυώνυµο του β λαµβάνοντας υπόψη το GF(q) ορίζεται το µη µηδενικό πολυώνυµο ελάχιστου βαθµού p(x) GF(q)[x] τέτοιο ώστε p(β) = 0. Γυρνώντας στην αναλoγία µε τους µιγαδικούς αριθµούς αναφέρουµε ξανά το πολυώνυµο f(x) = x 2 4x + 13 που όπως είδαµε έχει ως ρίζα τον µιγαδικό αριθµό x 1 = 2 + 3i αλλά πραγµατικούς συντελεστές. Είναι φανερό ότι δεν υπάρχει πολυώνυµο µικρότερου βαθµού µε συντελεστές στους πραγµατικούς αριθµούς που να έχει ρίζα το x 1. Τα ελάχιστα πολυώνυµα έχουν ορισµένες ιδιότητες που θα αναφερθούν στην συνεχεία. Αποδεικνύεται ότι για κάθε στοιχείο β GF(q m, ) υπάρχει ένα µοναδικό ελάχιστο πολυώνυµο p(x) µε ελάχιστο βαθµό στο GF(q)[x] τέτοιο ώστε: 1. P(β) = Ο βαθµός του p(x) m. 3. Αν υπάρχει πολυώνυµο f(x) GF(q)[x] τέτοιο ώστε f(β) = 0 τότε p(x) f(x). 4. Το p(x) είναι µη ανάγωγο στο GF(q)[x]. Μια σηµαντική διαπίστωση είναι ότι πρωταρχικά πολυώνυµα είναι και τα ελάχιστα πολυώνυµα για τα πρωταρχικά στοιχεία σε ένα πεπερασµένο πεδίο όπως τα πεδία Galois. Έστω τώρα ότι το στοιχείο β GF(q m ) και έχει τάξη n και έστω ότι d είναι η πολλαπλασιαστική τάξη του q modulo n. Αποδεικνύεται τότε ότι οι συντελεστές του πολυωνύµου p(x) = ( ) λαµβάνουν τιµή στο GF(q). Επιπλέον το p(x) είναι µη ανάγωγο. Έτσι το p(x) είναι ελάχιστο πολυώνυµο του β. Αυτό ουσιαστικά δηλώνει ότι οι ρίζες ενός ελάχιστου πολυωνύµου εµπεριέχονται στην συζυγή τάξη του β. Ακόµα βάση της παραπάνω πρότασης προκύπτει και ότι όλες οι ρίζες ενός µη ανάγωγου πολυωνύµου f(x) GF(q)[x] έχουν την ίδια τάξη. Ακολουθούν πινάκες µε κλάσεις συζυγών και τα ελάχιστα πολυώνυµα που παράγουν για τα πεδία GF(2 3 ) και GF(2 4 ). ~ 43 ~

44 Κλάση Συζυγών Ελάχιστα Πολυώνυµα {0} Μ_(x) = x {1} M 0 (x) = x + 1 {α, α 2, α 4 } M 1 (x) = (x α)(x α 2 )(x α 4 ) = x 3 + x + 1 {α 3, α 6, α 5 } M 3 (x) = (x α 3 )(x α 6 )(x α 5 ) Πίνακας 2 : Κλάση συζυγών και ελάχιστα πολυώνυμα στο GF(2 3 ) λαμβάνοντας υπόψη το GF(2) Κλάση Συζυγών Ελάχιστα Πολυώνυµα {0} Μ_(x) = x {1} M 0 (x) = x + 1 {α, α 2, α 4, α 8 } M 1 (x) = (x α)(x α 2 )(x α 4 )(x α 8 ) = x 4 + x + 1 {α 3, α 6, α 9, α 12 } M 3 (x) = (x α 3 )(x α 6 )(x α 9 )(x α 12 ) = x 4 + x 3 + x 2 + x +1 {α 5, α 10 } M 5 (x) = (x α 5 )(x α 10 ) = x 2 + x + 1 {α 7, α 11, α 13, α 14 } M 7 (x) = (x α 7 )(x α 11 )(x α 13 )(x α 14 ) = x 4 + x 3 +1 Πίνακας 3 : Κλάση συζυγών και ελάχιστα πολυώνυμα στο GF(2 4 ) λαμβάνοντας υπόψη το GF(2) 2.7 Παραγοντοποιήση x n -1 Με βάση όλα τα παραπάνω είναι πλέον δυνατό να περιγραφεί µια διαδικασία παραγοντοποίησης του x n 1 σε ένα πεπερασµένο πεδίο τιµών για διάφορες τιµές του n. Επιπλέον βάση των όσων είπαµε παραπάνω όταν ισχύει ότι n = q m - 1 κάθε στοιχείο του GF(q m ) είναι ρίζα του -1. Συνεπώς προκύπτει ότι 1= ( ) για ένα πρωταρχικό στοιχείο α GF(q) και n = q m - 1. Οι παράγοντες αυτοί µπορούν να χωριστούν σε συζυγείς κλάσεις και πολλαπλασιάζοντας τους δίνουν ελάχιστα πολυώνυµα. Συνεπώς το 1 µπορεί να εκφραστεί ως γινόµενο ελαχίστων πολυωνύµων από µη µηδενικά στοιχεία Φυσικά παραγοντοποιήση αυτού του όρου µπορεί να γίνει ακόµα και αν n q m 1. Ένα στοιχείο β 1 τέτοιο ώστε β n = 1 καλείται n-ιοστη ρίζα της µονάδας. Το πρώτο βήµα για µια τέτοια παραγοντοποιήση είναι να καθορίσουµε το πεδίο GF(q m ) όπου τέτοιες ρίζες µπορούν να υπάρξουν. Αφού εντοπίσουµε το κατάλληλο πεδίο η παραγοντοποιήση επιτυγχάνεται µε τη χρήση ελαχίστων πολυωνύµων στο πεδίο, δεδοµένου ότι αν n q m 1 τότε υπάρχουν φ(n) στοιχεία στο GF(q m ). Βέβαια αυτό απαιτεί να βρεθεί το κατάλληλο m ώστε n q m -1 που γίνεται µε δοκιµή και έλεγχο. 2.8 Γεννήτρια ψευδοτυχαίων αριθµών Σε αυτήν την ενότητα θα παρουσιάσουµε ένα τρόπο κατασκευής γεννήτριας ψευδοτυχαίων αριθµών που βασίζεται στην χρήση πρωταρχικών πολυωνύµων για την κατασκευή γραµµικών καταχωρητών ολίσθησης µε ανάδραση (Linear Feedback Shift Register) η απλούστερα LFSR. Ένα LFSR ουσιαστικά αποτελείται από έναν απλό καταχωρητή ολίσθησης όπου κάποιες από τις εξόδους του ανατροφοδοτούν την είσοδο του µέσω πυλών xor που πρακτικά επιτελούν την πράξη της πρόσθεσης όπως θα δούµε στην συνέχεια και κατά συνέπεια συµβάλλουν στην γραµµικότητα του ~ 44 ~

45 συστήµατος. Η αρχική κατάσταση ενός LFSR ονοµάζεται seed και παίζει ουσιαστικό ρόλο στην παραγωγή των τιµών των εξόδων. Η διαδικασία παραγωγής τιµών είναι ντετερµινιστική και εξαρτάται από τις τιµές των εξόδων στην προηγούµενη κατάσταση του λόγω των αναδράσεων. Επιπλέον ο καταχωρητής έχει πεπερασµένο αριθµό καταστάσεων που σηµαίνει ότι η ακολουθία των εξόδων που δίνει επαναλαµβάνεται µετά από κάποια περίοδο. Το πόσο µεγάλη είναι αυτή η περίοδος εξαρτάται από την ανάδραση, το µήκος του πολυωνύµου και την αρχική του κατάσταση. Λόγω των δυο τελευταίων αυτών χαρακτηριστικών τους τα LFSR κατατάσσονται στην κατηγορία των ψευδοτυχαίων γεννητριών. Κάθε LFSR των k βαθµίδων χαρακτηρίζεται από ένα πολυώνυµο k βαθµού το οποίο καλείται χαρακτηριστικό πολυώνυµο του LFSR και είναι της µορφής F(x) = 1 +, όπου το i δηλώνει τις βαθµίδες του καταχωρητή και το c i δείχνει ποιες από αυτές τις βαθµίδες οδηγούν την ανατροφοδότηση της εισόδου, µε c i = 1 να έχουµε ανάδραση και c i = 0 να µην έχουµε ανάδραση. Οι αναδράσεις που προκύπτουν µέσω πύλης ή πυλών xor οδηγούν την είσοδο του LFSR. Με βάση αυτές τις πληροφορίες και γνωρίζοντας το χαρακτηριστικό πολυώνυµο µπορούµε να κατασκευάσουµε το LFSR, ή αν έχουµε το LFSR να βρούµε το χαρακτηριστικό πολυώνυµο που αντιστοιχεί σε αυτό. Στο επόµενο σχήµα παρουσιάζεται ένα LFSR µε το χαρακτηριστικό πολυώνυµο που αντιστοιχεί σε αυτό. Σχήμα 2.3 : LFSR τύπου 1 με χαρακτηριστικό πολυώνυμο F(x) = 1 + x + x 4 Όπως αναφέρθηκε και προηγουµένως η περίοδο στην οποία επαναλαµβάνεται η ακολουθία άρα κατά συνέπεια το µήκος της ακολουθίας εξαρτάται από το πώς γίνεται η ανάδραση, πόσο µεγάλο είναι το µήκος του LFSR καθώς και ποια είναι η αρχική τιµή του LFSR. Την πληροφορία του πώς γίνεται η ανατροφοδότηση και πόσο µεγάλο είναι το µήκος του LFSR την παίρνουµε από το χαρακτηριστικό του πολυώνυµο. Στην πρώτη περίπτωση όποια αρχική τιµή δοθεί εκτός της µηδενικής θα δώσει ακολουθία µικρότερη η ίση του 2 k - 1. Αν η αρχική τιµή είναι η µηδενική µόνο ένα στοιχείο προκύπτει στην έξοδο το 0 και δεν αλλάζει. Επιπλέον πρέπει να αναφερθεί το γεγονός ότι σε κάθε άλλη περίπτωση πλην της µηδενικής τιµής ο συνδυασµός όλο 0 στην έξοδο δεν µπορεί να προκύψει. Πρέπει λοιπόν να βρεθεί η κατάλληλη αρχική τιµή ώστε η ακολουθία που θα προκύψει να έχει το µεγαλύτερο δυνατό µήκος. Βέβαια σηµαντικό ρόλο παίζει και το τι χαρακτηριστικό πολυώνυµο χρησιµοποιούµε. Όταν χρησιµοποιείται για την κατασκευή LFSR µη ανάγωγο πολυώνυµο η περίοδος είναι ανεξάρτητη της αρχικής κατάστασης (εκτός αν είναι η µηδενική) και είναι πάντα ένα υποπολλαπλάσιο του 2 k 1 µε k να είναι ο βαθµός του πολυωνύµου. Αν τώρα το πολυώνυµο που χρησιµοποιείται είναι εκτός από µη ανάγωγο και πρωταρχικό τότε η περίοδος παίρνει την µέγιστη δυνατή τιµή της που είναι 2 k 1. Σε αυτές τις περιπτώσεις η αρχική κατάσταση που χρησιµοποιείται (εκτός της µηδενικής ) το µόνο που κάνει είναι να µετατοπίζει χρονικά την ακολουθία. ~ 45 ~

46 Για την κατασκευή λοιπόν ενός LFSR αρκεί να είναι γνωστό το χαρακτηριστικό του πολυώνυµο, µε τον βαθµό του να δηλώνει το πλήθος των καταχωρητών βαθµίδων που χρησιµοποιεί και τους όρους µε συντελεστή 1 να δηλώνουν τις βαθµίδες από όπου γίνεται η ανάδραση, µε όλες τις αναδράσεις να συνδέονται σε µια (η και περισσότερες) πύλες xor που η έξοδος της οδηγεί την είσοδο του LFSR. Χαρακτηριστικό αυτού του είδους LFSR είναι ότι οι πύλες xor εµφανίζονται µόνο στα µονοπάτια ανάδρασης. Ένα τέτοιο LFSR είναι και αυτό του σχήµατος 2.3 και χαρακτηρίζεται ως τύπου 1. Υπάρχουν όµως και LFSR όπου οι πύλες xor εµφανίζονται µόνο µεταξύ των καταχωρητών. Αυτά τα LFSR χαρακτηρίζονται ως modular η τύπου 2. Υπάρχει η δυνατότητα ένα LFSR τύπου 1 να µετασχηµατιστεί σε τύπου 2 µε τη χρήση του αντίστροφου πολυωνύµου. Σε κάθε χαρακτηριστικό πολυώνυµο αντιστοιχεί το αντίστροφο του που παράγεται από τη σχέση F*(x) = x n F(1/x). Η ακολουθία που παράγεται από ένα LFSR τύπου 1 µε χαρακτηριστικό πολυώνυµο F*(x) είναι η αντίστροφη αυτής που θα παραγόταν αν χρησιµοποιούσαµε το πολυώνυµο F(x). Το συµπέρασµα είναι ότι έχοντας ένα LFSR τύπου 1 µε χαρακτηριστικό πολυώνυµο F(x) µπορεί να σχεδιαστεί ένα LFSR τύπου 2 ακλουθώντας τα εξής βήµατα: 1. Βρίσκουµε το αντίστροφο πολυώνυµο. 2. Σχεδιάζουµε το LFSR που αντιστοιχεί σε αυτό και είναι τύπου Τέλος σχεδιάζουµε το LFSR τύπου 2 τοποθετώντας τις πύλες xor στα σηµεία όπου υπάρχουν οι αναδράσεις στο LFSR τύπου 1. Στο επόµενο σχήµα παρουσιάζουµε το LFSR τύπου 1 που αντιστοιχεί στο αντίστροφο πολυώνυµο και στη συνέχεια το LFSR τύπου 2 που αντιστοιχεί σε αυτό του σχήµατος 2.3. Το αντίστροφο πολυώνυµο του είναι : F*(x) = x 4 F(1/x) = x 4 (1 + 1/x + 1/x 4 ) = x 4 + x Σχήμα 2.4 : Διαδικασία μετατροπής LFSR τύπου 1 σε τύπου 2 και τελική μορφή ~ 46 ~

47 Ένα τέτοιο LFSR θα χρησιµοποιηθεί στο τελικό σύστηµα ως γεννήτρια δεδοµένων, ακολουθίες των οποίων θα κωδικοποιούνται και θα στέλνονται µέσω του καναλιού στον αποκωδικοποιητή. Επιπλέον άλλο ένα πανοµοιότυπο LFSR θα υπάρχει και στο τµήµα του συστήµατος που θα ελέγχει και θα µετράει τα bit στα οποία θα διαφέρει η ακολουθία εισόδου που στάλθηκε µε αυτήν που πρόεκυψε από την αποκωδικοποίηση. Τα δυο αυτά LFSR πρέπει να είναι συγχρονισµένα µεταξύ τους ώστε να παράγουν τις ίδιες ακολουθίες. 2.9 Κυκλώµατα βασικών πράξεων σε πεδία Galois Σε αυτήν την ενότητα θα παρουσιαστούν οι αλγόριθµοι που υλοποιούν τις βασικές πράξεις σε πεδία Galois καθώς η δοµή τους σε hardware που θα χρησιµοποιηθεί στο προς µελέτη σύστηµα. Οι πράξεις που µας ενδιαφέρουν είναι η πρόσθεση, η αφαίρεση, ο πολλαπλασιασµός και η διαίρεση και τα πεδία που µας ενδιαφέρουν είναι τα πεδία Galois GF(2) και τα πεδία επέκτασης του GF(2 m ) Πρόσθεση-Αφαίρεση Η πράξη της πρόσθεσης είναι κατεξοχήν βασική πράξη και όπως αναφέρθηκε και προηγουµένως χρησιµοποιήθηκε και για τον ορισµό των πεδίων Galois. Ωστόσο ιδιαίτερα στα πεδία Galois η συγκεκριµένη πράξη είναι πολύ εύκολη. Αναφέρθηκε σε προηγούµενη ενότητα ότι ουσιαστικα κάθε αριθµός στο GF(2 m ) µπορεί να αναπαρασταθεί ως ένα διάνυσµα m στοιχείων (a 1, a 2, a 3,, a m ) καθένα από τα οποία παίρνει τιµή στο GF(2), όπου m 1. Προφανώς όταν m = 1 τότε συζητάµε για δυαδικούς καθαρά αριθµούς. Η πράξη της πρόσθεσης στο GF(2 m ) ορίζεται ως πρόσθεση στοιχείο προς στοιχείο και στην συνέχεια modulo 2 και αναφέρθηκε ως παράδειγµα ότι στο πεδίο GF(2 4 ) η πρόσθεση µε τους αριθµούς (a 1, a 2, a 3, a 4 ) GF(2 4 ) και (b 1, b 2, b 3, b 4 ) GF(2 4 ) όπου a i GF(2) και b i GF(2) γίνεται ως εξής: (a 1, a 2, a 3, a 4 ) + (b 1, b 2, b 3, b 4 ) = ((a 1 +b 1 )mod2, (a 2 + b 2 )mod2, (a 3 + b 3 )mod2, (a 4 + b 4 )mod2) ηλαδή έχουµε (a i + b i )mod2. Αυτή η πράξη πρακτικά µπορεί να αντικατασταθεί µε µια πύλη xor δεδοµένου ότι τα a i, b i παίρνουν τιµές 0 η 1. Συνοψίζοντας γενικά όταν έχουµε αριθµούς στο GF(2 m ) απαιτούνται m πύλες xor στοιχείο προς στοιχείο για να πραγµατοποιηθεί η πρόσθεση. Η πράξη της αφαίρεσης ορίζεται ακριβώς µε τον ίδιο τρόπο ως (a i - b i )mod2. Ακριβώς επειδή συζητάµε για πεδία GF(2 m ) όπου κάθε αριθµός αναπαριστάται ως ένα διάνυσµα m στοιχείων τα οποία ανήκουν στο GF(2) η πράξη της αφαίρεσης είναι πρακτικά ίδια µε την πράξη της πρόσθεσης δεν υπάρχει διαχωρισµός δηλαδή µεταξύ πρόσθεσης και αφαίρεσης και κατ επέκταση και αυτή πραγµατοποιείται µε πύλες xor ακριβώς µε τον ίδιο τρόπο όπως η πρόσθεση Πολλαπλασιασµός Η πράξη του πολλαπλασιασµού είναι πιο πολύπλοκη όπως είχε προαναφερθεί σε σχέση µε την πράξη της πρόσθεσης. Προκειµενου να οριστεί απαιτείται ένα πολυώνυµο g(x) µη ανάγωγο στο GF(2) m βαθµού. Στο πεδίο επέκτασης GF(2 m ) ορίζουµε το στοιχείο α να είναι ρίζα του g(x) άρα ισχύει ότι g(α) = 0. Κάθε αριθµός (a 1, a 2,, a m ) στο GF(2 m ) εκτός της αναπαράστασης ως διάνυσµα µπορεί να αναπαρασταθεί και σε πολυωνυµική µορφή a 1 + a 2 α + a 3 α a m α m-1. Η χρησιµότητα του g(x) είναι η µετατροπή των δυνάµεων που είναι µεγαλύτερες του α m-1 λόγω του πολλαπλασιασµού σε άλλες βαθµού µικρότερου του m-1. Ένας τέτοιος πολλαπλασιαστής αποτελείται από ένα πλέγµα ~ 47 ~

48 πυλών and και xor. Τέτοιας λογικής είναι και ο πολλαπλασιαστής που θα χρησιµοποιηθεί στο σύστηµα που θα µελετήσουµε. Υπάρχουν και άλλοι τρόποι φυσικά να πραγµατοποιηθεί πολλαπλασιαστής σε hardware όπως για παράδειγµα µε την χρήση LFSR όπως φαίνεται παρακάτω. Σχήμα 2.5 : Πολλαπλασιαστής σε πεδίο Galois με χρήση LFSR Οι πολλαπλασιαστές που βασίζονται στην χρήση LFSR απαιτούν περισσότερα από 1 κύκλους για να βγει στην έξοδο το αποτέλεσµα αλλά έχουν υψηλή συχνότητα ρολογιού. Από την άλλη πλευρά ο πολλαπλασιαστής που χρησιµοποιούµε έχει χαµηλότερη συχνότητα ρολογιού όπως µπορεί να διαπιστωθεί κοιτώντας τα µονοπάτια λογικής αλλά µπορεί να πραγµατοποιήσει την πράξη µέσα σε 1 κύκλο ρολογιού. Επιπλέον δίνει την δυνατότητα να χρησιµοποιήσουµε όποιο µη ανάγωγο πολυώνυµο θέλουµε για την αναπαράσταση των δυνάµεων που είναι µεγαλύτερες του m-1 αλλάζοντας απλώς την τιµή σε µια είσοδο του πολλαπλασιαστή, ενώ είναι και εύκολα παραµετροποιήσιµος σε γλώσσα περιγραφής υλικού για την χρήση του ίδιου κώδικα σε µεγαλύτερα πεδία GF(2 m ). Παρακάτω θα παρουσιάσουµε τον αλγόριθµο σε ψευδοκώδικα που υλοποιεί τον πολλαπλασιασµό και θα αναλύσουµε την λειτουργία του. Ο αλγόριθµος φαίνεται παρακάτω: Αρχικοποίηση της εξόδου του πρώτου τµήµατος syntelestes = 0; for κάθε συντελεστή της 1 ης εισόδου i = 0,1,,m-1 for κάθε συντελεστή της 2 ης εισόδου j = 0,1,,m-1 syntelestes i+j+1 = syntelestes i+j+1 xor (a i and b j ); end for end for final_syntelestes[1:m] = syntelestes[1:m] ~ 48 ~

49 for i = 0,1,,m-1 for j = 0,1,,m-1 if sel im+j = 1 final_syntelestes j = final_syntelestes j xor syntelestes m+i end for end for end for c[1:m] = final_syntelestes[1:m] Τώρα θα αναλύσουµε λίγο την λειτουργία και την δοµή του. Ο πολλαπλασιαστής αυτός αρχικά αποτελείται από δυο βασικά δοµικά τµήµατα. Το πρώτο τµήµα του επιτελεί την πράξη του πολλαπλασιασµού µεταξύ των δυο πολυωνύµων στα οποία όπως αναφέρθηκε προηγουµένως αναπαρίστανται τα στοιχεία του πεδίου. Άρα δηµιουργείται ως αποτέλεσµα ένα πολυώνυµο βαθµού το πολύ 2*m-2 όπου m ορίζεται από το πεδίο επέκτασης που χρησιµοποιείται και δηλώνει το πλήθος των bits από τα οποία αποτελούνται τα στοιχεία που χρησιµοποιούµε. Πρόκειται για το πλέγµα πυλών and και xor. Το δεύτερο τµήµα αυτό που κάνει είναι η διασύνδεση των δυνάµεων που πρόεκυψαν από την µετατροπή αυτών µε βαθµό µεγαλύτερο του m-1 στις κατάλληλες µε βαθµό το πολύ m-1 και την τελική πρόσθεση των συντελεστών µε ίδιο βαθµό. Πρόκειται για το πλέγµα πυλών xor. Τώρα το πώς γίνεται αυτή η µετατροπή εξαρτάται από το µη ανάγωγο πολυώνυµο που χρησιµοποιείται και πιο συγκεκριµένα από την είσοδο του πολλαπλασιαστή που χρησιµοποιείται στην συνθήκη του if στο δεύτερο τµήµα του αλγορίθµου. Πρακτικά αυτή η είσοδος περιέχει την αναπαράσταση των δυνάµεων βαθµού από m έως 2*m 2 και είναι µεγέθους (2*m 2 (m 1))*m = m(m 1) bits. Πρακτικά αυτό το if µεταφράζεται σε hardware σαν πολυπλέκτης που επιτρέπει την κατάλληλη διασύνδεση. Ένα παράδειγµα ενός τέτοιου πολλαπλασιαστή φαίνεται στο επόµενο σχήµα όπου θέλουµε να γίνει ο πολλαπλασιασµός: (c 0, c 1, c 2 ) = (a 0, a 1, a 2 ) * (b 0, b 1, b 2 ) Σχήμα 2.6 : Προτεινόμενος πολλαπλασιαστής 3 bits σε πεδίο Galois ~ 49 ~

50 2.9.3 ιαίρεση Η πράξη της διαίρεσης είναι ιδιαίτερη όσον αφορά τα πεπερασµένα πεδία GF(2 m ) που χρησιµοποιούµε αλλά και γενικότερα. Πραγµατοποιείται µε την λογική ότι τ/β = τ*1/β = τ*β -1. Πρώτο βήµα λοιπόν είναι να βρεθεί ο αντίστροφος β -1 του β. Ο αντίστροφος του β υπολογίζεται µε διαδοχικούς πολλαπλασιασµούς βάση της επόµενης ιδιότητας. Για κάθε στοιχείο β που ανήκει σε πεδίο Galois GF(2 m ) ισχύει ότι = β, µιας και = α 0 = 1 µε α να είναι η ρίζα του µη ανάγωγου πολυωνύµου όπως αναφέραµε παραπάνω. Συνεπώς προκύπτει ότι το αντίστροφο στοιχείο του β, το β -1 = β/β 2 = /β 2 =. Το 2 m 2 µπορεί να γραφτεί ως m-1. Άρα προκύπτει ότι το β -1 µπορεί να γραφτεί ως: β -1 = β 2 * β 4 * β 8 * *( ) = [β[β[ [β(β) 2 ] 2 ] 2 ] 2 ] 2. Ο υπολογισµός της παραπάνω σχέσης πραγµατοποιείται τόσο αλγοριθµικά όσο και σε hardware µε τη χρήση του όρου P = AB 2 + C. Ο αλγόριθµος λοιπόν που πραγµατοποιεί τη διαίρεση είναι ο εξής: Β = β /* αρχικοποίηση για την πρώτη τιµή του όρου AB 2 + C For i = m -2 to 1 /* Εδώ είναι το κυρίως σώµα της επανάληψης {P = P 2 β} /* Για τον όρο P = AB 2 + C, έχουµε Α = β, Β = P, C = 0 P = P 2 /* Για το τελευταίο P ισχύει A = 1, B = β, C = 0. Το τελικό αποτέλεσµα είναι P = β -1 είναι το αντίστροφο του β. Για να γίνει η διαίρεση αρκεί µια τροποποίηση στην τελευταία γραµµή του κώδικα όπου αντί για A = 1 βάζουµε ως Α το στοιχείο το οποίο θέλουµε να διαιρέσουµε µε το β. Το κύκλωµα λοιπόν που πραγµατοποιεί την αντιστροφή και την διαίρεση φαίνεται στο επόµενο σχήµα. Σχήμα 2.7 : Διαιρέτης σε πεδίο Galois ~ 50 ~

51 Όπως παρατηρούµε το κύκλωµα αποτελείται από m-1 πολλαπλασιαστές σε σειρά που εκτός του µεγάλου του µεγέθους σε υλικό έχει και µεγάλο critical path µε αποτέλεσµα να είναι αργό. Αν και υπάρχουν και πιο γρήγορες υλοποιήσεις [25] όλες είναι αισθητά πιο αργές από τον απλό πολλαπλασιαστή καθώς έχουν µονοπάτια από πολλαπλασιαστές σε σειρά. Για αυτό το λόγο και στο σύστηµα που θα µελετήσουµε δεν χρησιµοποιείται πουθενά διαιρέτης αλλά έχουν γίνει κατάλληλες τροποποιήσεις στα σηµεία που κανονικά θα χρησιµοποιούσαµε έτσι ώστε να µειωθεί και η απαίτηση σε υλικό αλλά και να µην δηµιουργηθούν µονοπάτια µε µεγάλες καθυστερήσεις. ~ 51 ~

52 ~ 52 ~

53 Κεφάλαιο 3 Κώδικες LDPC BCH Οι γραµµικοί µπλοκ κωδικες LDPC και BCH είναι οι δυο κωδικες που θα χρησιµοποιηθούν στο σύστηµα που θα µελετήσουµε στην συνέχεια. Συνεπώς κρίνεται σκόπιµο σε αυτό το κεφάλαιο να παρατηρήσουµε τις βασικές αρχές λειτουργιάς τους και να αναφέρουµε τα βασικά χαρακτηριστικά τους. 3.1 Κωδικες LDPC Κωδικοποίηση Οι κωδικες LDPC είναι κωδικες έλεγχου ισοτιµίας. Για την περιγραφή τους µπορεί να χρησιµοποιηθεί ο γεννήτορας πίνακας G αλλά και ο πίνακας έλεγχου ισοτιµίας Η όπως ισχύει και για τους περισσότερους µπλοκ κωδικες. Ενδιαφέρον έχει ωστόσο και η περιγραφή τους µε τη χρήση γράφων και πιο συγκεκριµένα µέσω διαγραµµάτων Tanner. Όπως και σε κάθε γραµµικό µπλοκ κώδικα έτσι και εδώ η πληροφορία τα προς µετάδοση δηλαδή δεδοµένα τεµαχίζονται σε µπλοκ µήκους k σύµβολων. Πρακτικά ο LDPC που θα χρησιµοποιηθεί είναι δυαδικός που σηµαίνει ότι κάθε σύµβολο είναι 1 bit. Η λέξη πληροφορίας πολλαπλασιάζεται µε έναν πίνακα µε έναν k n πίνακα G και παράγει ένα διάνυσµα 1 n. Το διάνυσµα αυτό που αποτελεί την έξοδο του κωδικοποιητή είναι η κωδική λέξη που προκύπτει. Με αυτόν τον τρόπο µπορούν να παραχθούν όλες οι κωδικες λέξεις του κώδικα και είναι ο πρώτος τρόπος περιγραφής του κώδικα. Ένας άλλος τρόπος περιγραφής του κώδικα LDPC είναι µε τη χρήση του πίνακα έλεγχου ισοτιµίας Η. Πρόκειται για έναν πίνακα µεγέθους (n k) n. Το ιδιαίτερο χαρακτηριστικό αυτού του πίνακα είναι το πολύ µικρό ποσοστό των µη µηδενικών στοιχείων που περιέχει (δηλαδή των άσσων). Πρόκειται δηλαδή για έναν «αραιό» πίνακα όσον αφορά τα στοιχεία του που είναι 1, και πρόκειται για το χαρακτηριστικό βάση του όποιου πήραν οι κωδικες αυτοί, την συγκεκριµένη ονοµασία που έχουν. Για τον γεννήτορα πίνακα αλλά και τον πίνακα ισοτιµίας ισχύει ότι HG = 0. Επιπλέον όπως είχαµε αναφέρει και στην ενότητα µε τους γραµµικούς µπλοκ κωδικες πρέπει κάθε έγκυρη λέξη του κώδικα να ικανοποιεί τις σχέσεις c i H T = 0. Μπορούµε να γράψουµε τις γραµµές του πίνακα ισοτιµίας ως h Η = h h (3.1) Η εξίσωση h i T c = 0 λέγεται ότι είναι ένα γραµµικός περιορισµός έλεγχου ισοτιµίας για την κάθε κωδική λέξη c και επίσης µπορεί να χρησιµοποιηθεί το notation z m = h m T c όπου z m καλείται ένας έλεγχος ισοτιµίας (parity - check). Κάθε γραµµή του πίνακα ισοτιµίας δηλαδή αντιστοιχεί σε µια εξίσωση ισοτιµίας και κάθε µη µηδενικό στοιχείο στη θέση (i,j) σηµαίνει ότι το j-ιοστό σύµβολο δεδοµένων συµµετέχει στην i-ιοστή εξίσωση ισοτιµίας. Γνωρίζοντας τον πίνακα Η µπορούµε να διακρίνουµε από το σύνολο των 2 n δυνατών συνδυασµών κωδικών λέξεων τις 2 k έγκυρες. Ένας από τους συµβολισµούς για τους κωδικες LDPC είναι ο εξής (n, d u, d c ), όπου το n δηλώνει τις στήλες του πίνακα ισοτιµίας και το µήκος της κωδικής λέξης, το d u το πλήθος των στοιχείων που είναι 1 σε κάθε ~ 53 ~

54 στήλη και το d c το πλήθος των στοιχείων που είναι 1 σε κάθε γραµµή, όπου έχουµε m = n k γραµµές. Το πλήθος των µη µηδενικών στοιχείων σε κάθε γραµµή και στήλη ονοµάζεται και βάρος της γραµµής w r η στήλης w c αντίστοιχα. Βέβαια αυτός είναι συµβολισµός µιας οµάδας από κωδικες LDPC αφού αλλαγή θέσης σε ένα µόνο µη µηδενικό στοιχείο του πίνακα συνεπάγεται έναν διαφορετικό κώδικα. εδοµένου ότι ο πίνακας Η είναι σταθερός άρα και ο αριθµός των µη µηδενικών στοιχείων ισχύει ότι md c = nd u. Όπως είχε αναφερθεί και στην ενότητα µε τους γραµµικούς µπλοκ κωδικες ένα σηµαντικό µέγεθος είναι και ο ρυθµός R του κώδικα που καθορίζει το ποσοστό του πλήθους των bit πληροφορίας επί του συνόλου των bit της κωδικής λέξης. Για τους κωδικες LDPC χρησιµοποιώντας τον συµβολισµό που αναφέραµε προηγουµένως ο ρυθµός δίνεται από την σχέση: R = k/n = (n-m)/n = 1- m/n R = 1 d u /d c (3.2) Είναι σηµαντικό να αναφερθεί ότι οι παραπάνω ρυθµοί ισχύουν για την περίπτωση που οι παράµετροι d u, d c είναι σταθερές για κάθε γραµµή και στήλη. Όταν ισχύει αυτό ο κώδικας ονοµάζεται κανονικός (regular). Υπάρχουν βεβαίως και κωδικες για τους οποίους δεν έχουν όλες οι στήλες των ίδιο αριθµό µη µηδενικών στοιχείων οµοίως και οι γραµµές. Οι κωδικες αυτοί ονοµάζονται µη κανονικοί (irregular) κωδικες LDPC. Σε αυτήν την κατηγορία κωδικών ο αριθµός των µη µηδενικών στοιχείων κάθε γραµµής η κάθε στήλης είναι συνάρτηση της γραµµής η της στήλης αντίστοιχα και περιγράφεται µε συγκεκριµένα πολυώνυµα. Πλεονέκτηµα των µη κανονικών κωδικών είναι η υπεροχή τους σε επιδόσεις όσον αφορά την διόρθωση λαθών, αλλά η υλοποίηση του αποκωδικοποιητή τους είναι πιο πολύπλοκη σε σχέση µε τους κανονικούς. Ο τελευταίος τρόπος για την περιγραφή των κωδικών LDPC είναι όπως αναφέραµε τα διαγράµµατα Tanner. Το διάγραµµα Tanner πρόκειται ουσιαστικα για έναν διµερή γράφο ο οποίος βασίζεται στον πίνακα ελεγχου ισοτιµίας. Ο γράφος έχει δυο ειδών κόµβους. Τους κόµβους µεταβλητής (variable nodes) που αντιστοιχούν στις στήλες του πίνακα ισοτιµίας και αναπαριστούν τα σύµβολα δεδοµένων και τους κόµβους ελέγχου (check nodes) οι οποίοι αντιστοιχούν στις γραµµές του πίνακα ισοτιµίας και αναπαριστούν µια εξίσωση ελέγχου ισοτιµίας. Συνδέσεις έχουµε µόνο µεταξύ διαφορετικών ειδών κόµβων οι οποίες αναπαριστώνται µε ακµές στο γράφο. Το ποιοι κόµβοι µεταβλητής συνδέονται µε ποιους κόµβους ελέγχου εξαρτάται από τις θέσεις των µη µηδενικών στοιχείων στον πίνακα ελέγχου ισοτιµίας. Έτσι λοιπόν ακµή µεταξύ ενός κόµβου µεταβλητής i που αντιστοιχεί στην στήλη i και ενός κόµβου ελέγχου j που αντιστοιχεί στην γραµµή j του πίνακα ελέγχου ισοτιµίας υπάρχει αν και µόνο αν το αντίστοιχο στοιχείο (i,j) του πίνακα ελέγχου ισοτιµίας είναι 1. Αντίστοιχα τοποθετούνται και οι υπόλοιπες ακµές µεταξύ των κόµβων µεταβλητής και ελέγχου ανάλογα µε την κατανοµή των µη µηδενικών στοιχείων στον πίνακα ισοτιµίας. Ένα τέτοιο διάγραµµα µε τον αντίστοιχο πίνακα Η παρουσιάζεται στο σχήµα 3.1. Ο αριθµός των ακµών που συνδέονται σε κάθε κόµβο ονοµάζεται βαθµός (degree) του κάθε κόµβου. Όπως είναι κατανοητό ο βαθµός των κόµβων µεταβλητών αλλά και των κόµβων ελέγχου είναι σταθερός για τους κανονικούς LDPC κωδικες σε αντίθεση µε τους µη κανονικούς κωδικες. Ειδικά για τους κανονικούς κωδικες οι παράµετροι που αντιστοιχούν στους βαθµούς των κάθε ειδών κόµβων είναι ίδιοι µε τις παραµέτρους d u και d c. Βασική ιδιότητα των LDPC κωδικών είναι ότι όλα τα ψηφιά που συνδέονται σε ένα κόµβο ελέγχου έχουν άθροισµα modulo 2 (xor) ίσο µε το µηδέν. Η ιδιότητα αυτή ονοµάζεται περιορισµός ισοτιµίας ελέγχου (parity check constraint). Ουσιαστικα αυτό σηµαίνει ότι το πλήθος των µη µηδενικών στοιχείων σε κάθε στήλη του πίνακα ελέγχου ισοτιµίας είναι άρτιος αριθµός. Κάθε έγκυρη κωδική λέξη πρέπει να ικανοποιεί όλους αυτούς τους περιορισµούς. ~ 54 ~

55 Σχήμα 3.1 : Πίνακας ελέγχου ισοτιμίας με το αντίστοιχο διάγραμμα Tanner. Ένα ιδιαίτερο χαρακτηριστικό που µπορεί να διακριθεί σε ένα διάγραµµα Tanner είναι η ύπαρξη κύκλων στο γράφο. Ένας κύκλος µήκους u είναι µια κλειστή διαδροµή η όποια περιλαµβάνει u ακµές. Η παρουσία των κύκλων στο διάγραµµα Tanner είναι ανεπιθύµητη καθώς περιορίζει την απόδοση της αποκωδικοποίησης µε αποτέλεσµα την µείωση του πλήθους λαθών που µπορεί να διορθώσει ο κώδικας. Όµως είναι και ανέφικτη που σηµαίνει ότι πάντα θα υπάρχει κύκλος. Η προσπάθεια λοιπόν επικεντρώνεται στην µεγιστοποίηση όσο είναι δυνατόν του µήκους των κύκλων. Προφανώς βέβαια υπάρχει όριο στο µέγιστο µήκος που µπορεί να έχει κάθε κύκλος και θέτεται από το µέγεθος του πίνακα ισοτιµίας. Ο µικρότερος κύκλος που µπορεί να εµφανιστεί είναι µήκους 4. Αυτό που πρακτικά µας ενδιαφέρει στην σχεδίαση είναι το µήκος του µικρότερου κύκλου που εµφανίζεται στον κώδικα. Για αυτό το λόγο αποτελεί βασικό χαρακτηριστικό του κώδικα και ονοµάζεται girth Αποκωδικοποίηση Κατά την διαδικασία της αποκωδικοποίησης, αφού έχει ληφθεί η ακολουθία συµβόλων µέσω του καναλιού ο αποκωδικοποιητής την ελέγχει ώστε να εξακριβωθεί αν υπάρχει λάθος στα δεδοµένα και αν η ακολουθία που έλαβε είναι έγκυρη κωδική λέξη. Οι δυο βασικοί αλγόριθµοι που χρησιµοποιούνται είναι ο message-passing και ο bit-flipping. Η υλοποίηση των αλγορίθµων της πρώτης κατηγορίας βασίζεται στην ανταλλαγή µηνυµάτων επαναληπτικά µεταξύ των κόµβων µεταβλητής και των κόµβων ελέγχου. Η διαδικασία αυτή ονοµάζεται belief propagation ή χρονοδροµολόγηση 2 φάσεων (two phase scheduling) Οι αλγόριθµοι της κατηγορίας bit-flipping βασίζονται και αυτοί σε υλοποιήσεις όπου κύριο χαρακτηριστικό είναι η ανταλλαγή µηνυµάτων µε τη διάφορα όµως ότι υπάρχει ένας κεντρικοποιηµένος έλεγχος σε κάθε επανάληψη σε αντίθεση µε την πλήρως κατανεµηµένη υλοποίηση των αλγορίθµων message-passing. Η κύρια διαφορά όµως µεταξύ των δυο αυτών κατηγοριών είναι ότι οι αλγόριθµοι message-passing βασίζονται κυρίως σε softdecision αποκωδικοποίηση και αυξηµένη απόδοση, έναντι των αλγορίθµων bit-flipping που βασίζονται σε hard-decision κωδικοποίηση µε στόχο την ελαχιστοποίηση της υπολογιστικής πολυπλοκότητας. Είναι σκόπιµο λοιπόν να εξετάσουµε την ανταλλαγή µηνυµάτων µεταξύ των κόµβων του διαγράµµατος Tanner. Αναφέρθηκε στην προηγούµενη ενότητα ότι κάθε κόµβος ~ 55 ~

56 µεταβλητής αναπαριστά κάποιο σύµβολο δεδοµένων και κάθε κόµβος ελέγχου µια εξίσωση ελέγχου ισοτιµίας. Αρχικά λοιπόν η διαδικασία της αποκωδικοποίησης ξεκινάει µε την άφιξη των συµβόλων µέσω του καναλιού στον αποκωδικοποιητή. Λόγω του θορύβου που προστέθηκε κατά την µετάδοση µέσω του καναλιού κάποια από τα σύµβολα της κωδικής λέξης είναι δυνατό να έχουν αλλάξει τιµή. Κάθε σύµβολο από αυτήν την λέξη µπαίνει ως είσοδος στον αντίστοιχο κόµβο µεταβλητής. Κάθε κόµβος πρέπει να πάρει µια απόφαση σχετικά µε το αν το σύµβολο που έλαβε είναι σωστό η λάθος και «ρωτάει» τους κόµβους ελέγχου µε τους οποίους συνδέεται για αυτό. Κάθε ένας από αυτούς τους κόµβους ελέγχου «ρωτάει» µε την σειρά του, τους κόµβους µεταβλητής µε τους οποίους συνδέεται ποια είναι η εκτίµηση τους για τα δικά τους bits και στέλνει στον αρχικό κόµβο µεταβλητής µια απάντηση συνάρτηση των τιµών που έλαβε. Ουσιαστικα ελέγχεται η άρτια η περιττή ισοτιµία των άσσων της ελεγχόµενης οµάδας συµβόλων. Η ουσία είναι ότι κάθε κόµβος µεταβλητής συνδέεται µε περισσότερους από έναν κόµβους ελέγχου και κάθε κόµβος έλεγχου δίνει την δίκη του απάντηση σχετικά µε το αν είναι σωστό το δικό του bit. Η πληροφορία αυτή πρέπει µε κάποιο τρόπο να επεξεργαστεί ώστε να βγει το συµπέρασµα για την τιµή του συγκεκριµένου bit. Ένας τρόπος θα ήταν η απόφαση να παρθεί µέσω πλειοψηφίας. Η παραπάνω διαδικασία αποτελεί µια επανάληψη του αλγορίθµου. Περισσότερες επαναλήψεις έχουν ως αποτέλεσµα αυξηµένη πιθανότητα για σωστή εκτίµηση του αποτελέσµατος. Όπως αναφέραµε κατά την µετάδοση µέσα από το κανάλι κάποια από τα λαµβανόµενα σύµβολα διαφέρουν σε σχέση µε τα σύµβολα που εισάχθηκαν σε αυτό. Στην περίπτωση που έχουµε δυαδικό κώδικα και διαµόρφωση BPSK τα µεταδιδόµενα σύµβολα είναι το +1 (λογικό 1) και το -1 (λογικό 0). Λόγω λοιπόν του θορύβου ο αποδιαµορφωτής λαµβάνει ένα σήµα που κάποιες από τις τιµές του είναι ενδιάµεσες των +1, -1 ενώ µερικές φόρες και ανεστραµµένες. Υπάρχουν δυο τρόποι για να εκφραστούν οι τιµές του λαµβανοµένου συµβόλου. Η πιο απλή µέθοδος που χρησιµοποιείται από τον αλγόριθµο bit-flipping η όποια και ονοµάζεται hard decision αρκείται στο πρόσηµο η γενικότερα στο σηµαντικό ψηφίο του συµβόλου για να γίνει η εκτίµηση. Αυτό προφανώς γίνεται για κάθε σύµβολο της λέξης και σε περίπτωση που η λέξη δεν είναι έγκυρη κωδική λέξη προσπαθούµε σε επίπεδο δυαδικού ψηφίου να κάνουµε διορθώσεις. Αντιστοιχίζεται δηλαδή ένα δυαδικό ψηφίο σε κάθε σύµβολο. Το µειονέκτηµα αυτής της µεθόδου είναι ότι λόγω της άµεσης κβάντισης του σήµατος χάνουµε σηµαντικό τµήµα της πληροφορίας που σηµαίνει χαµηλή διορθωτική ικανότητα. Το όφελος είναι η χαµηλή πολυπλοκότητα που προσφέρει. Η δεύτερη µέθοδος που χρησιµοποιείται από τον αλγόριθµο message-passing χρησιµοποιεί περισσότερα από ένα δυαδικά ψηφία τα οποία ονοµάζονται soft bits, για την αναπαράσταση των λαµβανόµενων συµβόλων και κατ επέκταση των µηνυµάτων µεταξύ κόµβων ελέγχου και µεταβλητής. Η ληφθείσα πληροφορία που προκύπτει από την ακριβή τιµή του λαµβανοµένου συνόλου διατηρείται σε όλη την διάρκεια της αποκωδικοποίησης. Κατά την αρχική εκτίµηση για το αν η λέξη που έλαβε ο αποκωδικοποιητής είναι έγκυρη τα soft bits δεν λαµβάνονται υπόψη. Αν ωστόσο βρεθεί ότι η λέξη δεν είναι η έγκυρη κωδική τότε η διαδικασία της διόρθωσης πραγµατοποιείται µε τις soft τιµές των συµβόλων. Η διαδικασία αυτή ονοµάζεται soft decision και έχει ως θετικό στοιχείο την πολύ αποδοτική αποκωδικοποίηση. Μειονέκτηµα είναι η µεγαλύτερη υπολογιστική πολυπλοκότητα που απαιτείται. Σε αυτό το σηµείο είναι σκόπιµο να σχολιαστεί η συσχέτιση µεταξύ του διαγράµµατος Tanner και του κυκλώµατος που υλοποιεί την αποκωδικοποίηση µέσω της χρήσης ανταλλαγής µηνυµάτων. Ένα τέτοιο κύκλωµα αποκωδικοποίησης αποτελείται από δυο ειδή υπολογιστικών µονάδων, έναν για τους ~ 56 ~

57 κόµβους ελέγχου που ονοµάζεται Check Processing Unit και έναν για τους κόµβους µεταβλητής που ονοµάζεται Variable Processing Unit. Κάθε κόµβος του διαγράµµατος Tanner αντιστοιχεί σε µια επεξεργαστική µονάδα του αντιστοίχου τύπου, µεταξύ των οποίων ανταλλάσσονται µηνύµατα τα οποία και επεξεργάζονται. Σε αυτό το σηµείο φαίνεται το πώς το πλήθος των µη µηδενικών στοιχείων στο πίνακα έλεγχου ισοτιµίας έχει άµεση σχέση µε το πλήθος καταρχήν των µηνυµάτων που ανταλλάσσονται και κατ επέκταση µε το πλήθος των επεξεργαστικών µονάδων και την υπολογιστική πολυπλοκότητα που απαιτείται. Η επεξεργασία εξαρτάται σε µεγάλο βαθµό και από τον αλγόριθµο αποκωδικοποίησης που χρησιµοποιείται. Τέλος πρέπει να αναφερθεί ότι η διαδικασία αυτή είναι επαναληπτική Αλγόριθµοι message-passing Σε αυτήν την ενότητα θα παρουσιαστούν βασικές αρχές αλγορίθµων της κατηγορίας message-passing δεδοµένου ότι ο κώδικας LDPC που θα χρησιµοποιηθεί στο σύστηµα που θα χρησιµοποιηθεί είναι αυτής της κατηγορίας. Οι κύριοι εκπρόσωποι των message-passing αλγορίθµων είναι οι: Log Sum Product και Min Sum. Είναι και οι δυο επαναληπτικοί αλγόριθµοι και αποτελούνται από τέσσερα βασικά στάδια. Το πρώτο περιλαµβάνει την αρχικοποίηση των µηνυµάτων βάση των τιµών των λαµβανόµενων συµβόλων. Το δεύτερο στάδιο περιλαµβάνει τον υπολογισµό των µηνυµάτων τα οποία στέλνουν οι κόµβοι check στους κόµβους variable. Το τρίτο στάδιο περιλαµβάνει τον υπολογισµό των µηνυµάτων τα οποία στέλνονται από τους κόµβους variable στους κόµβους check. Το τέταρτο και τελευταίο στάδιο περιλαµβάνει µια εκτίµηση της τιµής κάθε bit και τη λήψη µιας Hard απόφασης για κάθε bit από τον αντίστοιχο variable κόµβο καθώς και τον έλεγχο της εγκυρότητας της κωδικής λέξης που προκύπτει από τις hard αποφάσεις. Κατά τον έλεγχο της εγκυρότητας ουσιαστικα ελέγχεται αν η κωδική λέξη που προκύπτει ικανοποιεί την σχέση 2.5. Αν η κωδική λέξη είναι έγκυρη τότε ο αλγόριθµος τερµατίζεται σε διαφορετική περίπτωση επαναλαµβάνονται τα στάδια 2 έως 4 µέχρι να καταλήξει ο αλγόριθµος σε µια κωδική λέξη η να ικανοποιηθεί το εκάστοτε κριτήριο τερµατισµού. Ένα κριτήριο τερµατισµού που χρησιµοποιείται αρκετά στην πράξη είναι να υπάρχει ένας µέγιστος αριθµός επαναλήψεων που έχει οριστεί εξαρχής χωρίς ωστόσο να αποκλείεται και η χρήση πιο σύνθετων κριτήριων. Ο αλγόριθµος Log Sum Product (Log-SP) προέκυψε ως εξέλιξη του Sum- Product κατόπιν µεταφοράς του τελευταίου στο λογαριθµικό πεδίο. Ουσιαστικό στοιχείο του Log-SP είναι ότι τα ανταλλασσόµενα µηνύµατα εκφράζονται ως φυσικοί λογάριθµοι λόγου πιθανοτήτων(llr, Log Likelihood Ratio). Ο αλγόριθµος Min-Sum (MS) διαφέρει από τον Log-SP µόνο στο στάδιο της ενηµέρωσης των κόµβων check. Για την ενηµέρωση των κόµβων check χρησιµοποιείται η συνάρτηση Φ(x) = log = - log(tanh( )) από τον αλγόριθµο Log-SP. Αυτή η συνάρτηση έχει την ιδιαιτερότητα ότι είναι γνησίως φθίνουσα αλλά και ότι για µικρές τιµές του ορίσµατος της παίρνει µεγάλες τιµές ενώ για µεγαλύτερες τιµές ορίσµατος παίρνει πολύ µικρές τιµές. Έτσι µπορεί να γίνει απλοποίηση στη σχέση που ισχύει για την ενηµέρωση των κόµβων check µε τη χρήση της συνάρτησης min από όπου πήρε και το όνοµα του ο αλγόριθµος. Ουσιαστικα ο αλγόριθµος MS είναι µια προσέγγιση του Log-SP η οποία µειώνει σηµαντικά την πολυπλοκότητα της αποκωδικοποίησης. Βέβαια το κόστος είναι ότι θεωρητικά έχουµε µειωµένη απόδοση της αποκωδικοποίησης δεδοµένου ότι ο αλγόριθµος Log-Sum είναι θεωρητικά βέλτιστος ωστόσο ο MS έχει περισσότερο ενδιαφέρον για µια πρακτική εφαρµογή. Βασική φιλοσοφία των παραπάνω αλγορίθµων είναι η πλήρης παραλληλία που επιτυγχάνεται κατά τον χρονοπρογραµµατισµό, επεξεργασία και ανταλλαγή µηνυµάτων µεταξύ των επεξεργαστικών στοιχείων του αποκωδικοποιητή. Υπάρχει όµως και µια διαφορετική προσέγγιση χρονοδροµολόγησης των µηνυµάτων για ένα message passing αλγόριθµο που βασίζεται στην επεξεργασία της πληροφορίας τµηµατικά και ονοµάζεται αποκωδικοποίηση σε επίπεδα η Layered ~ 57 ~

58 Decoding. Κεντρική ιδέα αυτής της µεθόδου είναι ότι η επεξεργασία ξεκινά από ένα υποσύνολο των κόµβων ελέγχου και τα µηνύµατα αποστέλλονται στους κόµβους µεταβλητής που συνδέονται άµεσα µε τους συγκεκριµένους κόµβους ελέγχου. Αφού ολοκληρωθεί αυτή η ενηµέρωση η διαδικασία συνεχίζεται µε το επόµενο υποσύνολο κόµβων ελέγχου που ωστόσο θα λάβει τις ενηµερωµένες τιµές και αυτό συνεχίζεται µέχρι όλοι οι κόµβοι ελέγχου και µεταβλητής να έχουν ενηµερωθεί. Αυτή η διαδικασία βέβαια αν και επιτρέπει µεγάλη ταχύτητα σύγκλισης εισάγει µια καθυστέρηση στην µετάδοση µηνυµάτων µεταξύ διαφορετικών στρωµάτων-υποσυνόλων του πίνακα ελέγχου ισοτιµίας καθώς πρέπει να είναι διαθέσιµη η πληροφορία από τα προηγούµενα στρώµατα. Οι αρχιτεκτονικές των αποκωδικοποιητών που βασίζονται σε αυτή την προσέγγιση αποτελούνται και αυτές από ένα σύνολο επεξεργαστικών µονάδων δυο τύπων όµοιες µε αυτές που αναφέρθηκαν παραπάνω µε την διαφορά όµως ότι το πλήθος τους είναι µικρότερο σε σχέση µε το πλήθος των κόµβων µεταβλητής και ελέγχου αντίστοιχα. Η ανταλλαγή µηνυµάτων γίνεται µε ένα σειριακό τρόπο που σηµαίνει καθυστέρηση στην ανταλλαγή µηνυµάτων και κατάλληλο χρονοπρογραµµατισµό ώστε καµιά άλλη µονάδα ελέγχου να µην ζητήσει τιµές που µόλις ενηµερώνονται Πλεονεκτήµατα Μειονεκτήµατα Γενικά οι κωδικες LDPC έχουν πολλά καλά χαρακτηριστικά. Είναι γενικά απλοί όσον αφορά το κύκλωµα και την πολυπλοκότητα του αποκωδικοποιητή. Αυτό προέρχεται από το γεγονός ότι η πολυπλοκότητα είναι ανάλογη των µη µηδενικών στοιχείων του πίνακα ελέγχου ισοτιµίας. Όσο πιο αραιός είναι αυτός ο πίνακας τόσο απλούστερος γίνεται ο αποκωδικοποιητής ως προς την υλοποίηση σηµαντικό πλεονέκτηµα σε σχέση µε άλλους µπλοκ και µη κωδικες ίδιου µεγέθους. Ιδιαίτερα σηµαντική είναι και η δυνατότητα που προσφέρουν πέρα από την διόρθωση και στο θέµα της σαφής και έγκυρης ανίχνευσης των περιπτώσεων κατά των οποίων η αποκωδικοποίηση αποτυγχάνει. Το πιο σηµαντικό ωστόσο πλεονέκτηµα που έχουν το ότι είναι από τους πιο αποδοτικούς κωδικες σε θέµατα διόρθωσης λαθών και υποστηρίζουν ρυθµούς µετάδοσης οι οποίοι πλησιάζουν τη χωρητικότητα καναλιού συµφώνα µε το όριο του Shannon. Προκειµενου βέβαια να επιτευχθεί ο ρυθµός αυτός πρέπει να χρησιµοποιηθεί κώδικας µεγάλου µήκους που σηµαίνει αυτόµατα και µεγάλος πίνακας ελέγχου ισοτιµίας. Η ανάγκη αυτή γίνεται κατανοητή αν σκεφτούµε την απαίτηση για µεγάλου µήκους κύκλους στο διάγραµµα Tanner που αναφέρθηκε παραπάνω. Το αποτέλεσµα είναι ότι ακόµα και αν είναι αραιός ο πίνακας ισοτιµίας πάλι ο αριθµός των µη µηδενικών στοιχείων του θα είναι µεγάλος µε αποτέλεσµα η αποκωδικοποίηση να είναι αρκετά απαιτητική από άποψη πολυπλοκότητας αλλά και να απαιτείται µεγάλη επιφάνεια σε υλικό. Τέλος ως αρνητικό στοιχείο είναι και το γεγονός ότι λόγω της επαναληπτικής διαδικασίας αποκωδικοποίησης αλλά και των κύκλων στο διάγραµµα Tanner οι κωδικες LDPC παρουσιάζουν κάποιο σφάλµα όσον αφορά την αποκωδικοποίηση µε αποτέλεσµα την εµφάνιση λανθασµένων bit στην έξοδο του αποκωδικοποιητή. Το φαινόµενο αυτό εµφανίζεται πιο έντονα όσο µικραίνει η ισχύς του θορύβου έναντι του σήµατος στο κανάλι καθώς σε αυτό το σηµείο ο αριθµός των λαθών που προέρχονται από την εσωτερική αυτή αδυναµία είναι συγκρίσιµος µε τον αριθµό αυτών των λαθών που προέρχονται λόγω της πολύ µεγάλης αλλοίωσης του σήµατος στο κανάλι και ονοµάζεται σφάλµα κατωφλίου (error-floor). Ο κώδικας LDPC που θα χρησιµοποιηθεί στο προς µελέτη σύστηµα είναι της κατηγορίας messagepassing και χρησιµοποιεί έναν αλγόριθµο που βασίστηκε στη φιλοσοφία κυρίως του layered decoding και του Normalized Min-Sum. ~ 58 ~

59 3.2 Κώδικες BCH Σε αυτήν την ενότητα θα παρουσιάσουµε τις βασικές αρχές κωδικοποίησης και αποκωδικοποίησης για την ευρύτερη κατηγορία κωδικών διόρθωσης BCH Κωδικοποίηση Οι κωδικες BCH είναι κυκλικοί και γραµµικοί µπλοκ κωδικες µπορούν να περιγράφουν µε την χρήση του γεννήτορα πολυωνύµου. Ένας κώδικας BCH σε ένα πεδίο GF(q) µήκους n που µπορεί να διορθώσει (το λιγότερο) t λάθη ορίζεται και κατασκευάζεται µε τα παρακάτω βήµατα: 1. Καθορίζουµε τον µικρότερο ακέραιο αριθµό m έτσι ώστε το GF(q m ) έχει πρωταρχική ρίζα n βαθµού β. 2. Επιλεγούµε ένα µη µηδενικό ακέραιο b, συνήθως b = Καταγράφουµε 2t συνεχόµενες δυνάµεις του β: β b, β b+1,, β b+2t-1 και καθορίζουµε λαµβάνοντας υπόψη το πεδίο GF(q) το ελάχιστο πολυώνυµο για κάθε µια από αυτές τις δυνάµεις. (Αν τα στοιχεία ανήκουν σε συζυγείς κλάσεις τότε µόνο ένα ελάχιστο πολυώνυµο υπολογίζεται) 4. Το πολυώνυµο γεννήτορας που ψάχνουµε είναι το ελάχιστο κοινό πολλαπλάσιο αυτών των ελαχίστων πολυωνύµων. Ο κώδικας που προκύπτει είναι ένας (n, n deg(g(x))) κυκλικός κώδικας. Επειδή το πολυώνυµο γεννήτορας κατασκευάζεται χρησιµοποιώντας ελάχιστα πολυώνυµα λαµβάνοντας υπόψη το πεδίο GF(q), ο γεννήτορας g(x) έχει συντελεστές στο πεδίο GF(q) που ονοµάζεται και «µικρό» πεδίο και ρίζες στο GF(q m ) που ονοµάζεται και «µεγάλο» πεδίο. Για την κωδικοποίηση είναι αρκετό να εργαστούµε στο µικρό πεδίο, για την αποκωδικοποίηση όµως απαιτούνται πράξεις στο πεδίο επέκτασης. Το όριο (bound) των BCH είναι η απόδειξη ότι η διαδικασία κατασκευής γεννητόρων πολυωνύµων που περιγράφηκε παραπάνω παράγει κωδικες µε το λιγότερο την ορισµένη ελάχιστη απόσταση. Πιο συγκεκριµένα αποδεικνύεται ότι: Έστω C είναι ένας q-ιοστός (n, k) κυκλικός κώδικας µε γεννήτορα πολυώνυµο g(x). Έστω GF(q m ) είναι το µικρότερο πεδίο επέκτασης του GF(q) που περιέχει µια πρωταρχική ρίζα n βαθµού και έστω β αυτή η ρίζα. Έστω το g(x) είναι ένα ελάχιστου βαθµού πολυώνυµο στο GF(q)[x] και έχει 2t συνεχόµενες ρίζες της µορφής g(β b ) = g(β b+1 ) = g(β b+2 ) = = = g(β b+2t-1 ). Τότε η ελάχιστη απόσταση του κώδικα ικανοποιεί την συνθήκη d min δ = 2t +1, και ο κώδικας που προκύπτει µπορεί να διορθώσει το λιγότερο t λάθη. Γενικά η ελάχιστη απόσταση δηλώνει το ποσό διαφέρουν δυο κωδικες λέξεις του κώδικα µεταξύ τους όσον αφορά το πλήθος των διαφορετικών bit η συµβόλων ανάλογα µε τον έχουµε δυαδικό η όχι κώδικα αντίστοιχα. Γενικά κάθε BCH κώδικας περιγράφεται µε τρεις αριθµούς (n,k,d) η (n,k,t) όπου n είναι το µήκος της κωδικής λέξης σε σύµβολα, k είναι το µήκος της λέξης πληροφορίας, και d είναι η ελάχιστη απόσταση του κώδικα η αν χρησιµοποιείται το t που είναι η διορθωτική ικανότητα του κώδικα. Ο ρυθµός για αυτούς κωδικες είναι ο ίδιος όπως και για όλους τους γραµµικούς µπλοκ κωδικες και ορίζεται ως R = k/n. Γενικά κατά την κατασκευή κωδικών BCH υπάρχει η δυνατότητα να αυξηθεί η σχεδιαστική απόσταση µε την πρόσθεση επιπλέον συνεχόµενων δυνάµεων του β ως ρίζες του πολυωνύµου γεννήτορα. Για τους RS κωδικες ωστόσο η ελάχιστη απόσταση του κώδικα είναι ακριβώς η σχεδιαστική απόσταση. ~ 59 ~

60 Οι κωδικες RS (Reed-Solomon) είναι µια ειδική κατηγορία των κωδικών BCH. Είναι µη δυαδικοί κώδικες ισχύει και για αυτούς ο ίδιος συµβολισµός αλλά επιπλέον ισχύει ότι n=q m 1οπου µε m συµβολίζεται το πλήθος των q-ιοστών στοιχείων από τα οποία αποτελείται ένα σύµβολο της κωδικής λέξης. Γενικά ισχύει πάντως ότι και για τους BCH χωρίς επιπλέον ρίζες αλλά και τους RS ότι το η ελάχιστη απόσταση είναι d min = n k +1. Στην συνέχεια θα αναφερθούµε στην ευρύτερη κατηγορία BCH κωδικες στην οποία συµπεριλαµβάνονται και οι RS κωδικες. Έχει ενδιαφέρον να αναφερθούν κάποια ασυµπτωτικά αποτελέσµατα σχετικά µε τους BCH κώδικες όσον αφορά τον ρυθµό τους και την ελάχιστη απόσταση τους. Αρχικά θα παρατεθεί ο παρακάτω ορισµός. Μια κατηγορία από κωδικες στο GF(q) για δεδοµένο q λέγονται ότι είναι καλοί αν περιέχουν µια άπειρη ακολουθία από κωδικες C 1, C 2,, όπου C i είναι ένας (n i, k i, d i ) κώδικας όπου και ο ρυθµός του R i = k i /n i και η σχετική απόσταση d i /n i προσεγγίζουν ένα µη µηδενικό όριο καθώς το i τείνει στο άπειρο. Αποδεικνύεται ότι δεν υπάρχει ακολουθία από πρωταρχικούς κωδικες BCH στο πεδίο GF(q) όπου και ο ρυθµός και η σχετική απόσταση συγκλίνουν σε µη µηδενική τιµή. Αυτό σηµαίνει ότι καθώς οι κωδικες µεγαλώνουν, το πλήθος των λαθών που µπορούν να διορθώσουν σε σχέση µε το µέγεθος της κωδικής λέξης, τείνει στο µηδέν. Παρόλα αυτά οι κωδικες BCH µεσαίου µεγέθους (µε n µέχρι µερικές χιλιάδες) είναι από τους καλύτερους. Όσον αφορά το θέµα της κωδικοποίησης υπάρχουν βασικά δυο τρόποι για να γίνει αυτό ο συστηµατικός και ο µη συστηµατικός. Κατά τον µη συστηµατικό τρόπο ουσιαστικα αυτό που γίνεται είναι πολλαπλασιασµός µεταξύ του µηνύµατος-λεξης πληροφορίας m = (m 0, m 1,, m k-1 ) που µπορεί να παρουσιαστεί ως πολυώνυµο k βαθµού m(x) = m 0 + m 1 x + m 2 x m k-1 x k-1, µε το γεννήτορα πολυώνυµο g(x) και προκύπτει η κωδική λέξη c = (c 0, c 1,, c n-1 ) που µπορεί να γραφτεί µε όµοιο τρόπο όπως το µήνυµα σε πολυωνυµική µορφή. Άρα για την µη συστηµατική κωδικοποίηση έχουµε: c(x) = m(x)g(x). Προκειµενου να έχουµε συστηµατική κωδικοποίηση απαιτείται λίγο πιο πολύπλοκη διαδικασία που δίνεται από την εξής σχέση: c(x) = m(x)x n-k R g(x) [m(x)x n-k ] (3.3) Όπου µε το R g(x) [ ] δηλώνουµε την πράξη του υπολογισµού του υπολοίπου µετά από διαίρεση µε το πολυώνυµο γεννήτορα στην συγκεκριµένη περίπτωση g(x). Τυπικά ο κώδικας είναι σε κάποιο πεδίο GF(2 m ) για κάποιο m Αποκωδικοποίηση Υπάρχουν αρκετοί αλγόριθµοι που έχουν αναπτυχτεί για την αποκωδικοποίηση κωδικών BCH. Σε αυτήν την ενότητα θα παρουσιάσουµε µια γενική προσέγγιση που ωστόσο θα είναι και η βάση για την αρχιτεκτονική που θα υλοποιεί την αποκωδικοποίηση του κώδικα BCH που θα χρησιµοποιηθεί στο προς µελέτη σύστηµα. Τα βήµατα είναι τα εξής: 1. Αρχικά έχουµε των υπολογισµό των syndromes. 2. Καθορισµός του πολυωνύµου εύρεσης λαθών (error locator polynomial) του οποίου οι ρίζες παρέχουν µια ένδειξη του που είναι τα λάθη. Υπάρχουν αρκετοί µέθοδοι για να βρεθεί αυτό το πολυώνυµο. Σε αυτές τις µεθόδους περιλαµβάνονται ο αλγόριθµος του Peterson, ο αλγόριθµος του Berlekamp-Massey, ο αλγόριθµος του Ευκλείδη και ο αλγόριθµος των Peterson-Gorenstein-Ziegler που είναι για RS κωδικες συγκεκριµένα. ~ 60 ~

61 3. Επόµενο βήµα είναι η εύρεση των ριζών του πολυωνύµου η οποία γίνεται συνήθως χρησιµοποιώντας την έρευνα κατά Chien (Chien search). Πρόκειται για µια εξαντλητική έρευνα σε όλα τα στοιχεία του πεδίου. 4. Για µη δυαδικούς κωδικες απαιτείται και ένα τέταρτο βήµα στο οποίο καθορίζονται οι τιµές των λανθασµένων συµβόλων. Αυτό πραγµατοποιείται συνήθως µε τον αλγόριθµο του Forney Υπολογισµός Syndromes Στους κωδικες BCH από κατασκευής του το πολυώνυµο γεννήτορας έχει 2t ρίζες που είναι στοιχεία του πεδίου επέκτασης το οποίο χρησιµοποιούµε για την αποκωδικοποίηση, έτσι ισχύει ότι: g(α) = g(α 2 ) = = g(α 2t ) = 0 (3.4) Για αυτό το λόγο και αν προσέξουµε το πώς γίνεται η κωδικοποίηση είτε µε τον συστηµατικό είτε µε τον µη συστηµατικό τρόπο ισχύει για την κωδική λέξη αν γραφτεί σε µορφή πολυωνύµου ότι: c(α) = = c(α 2t ) = 0 Αυτός είναι ένας τρόπος καθορισµού του αν η λέξη που έχει φτάσει στον αποκωδικοποιητή είναι έγκυρη κωδική λέξη η όχι. Γενικά στον αποκωδικοποιητή θεωρούµε ότι έχει φτάσει µια λέξη που µπορεί να παρουσιαστεί ως πολυώνυµο r(x) και είναι τέτοια ώστε να ισχύει ότι r(x) = c(x) + e(x). Βάση των παραπάνω δυο σχέσεων τελικά έχουµε: S j = r(α j ) = e(α j ) = e α, j = 1, 2,, 2t. (3.5) Οι τιµές S 1, S 2,, S 2t ονοµάζονται syndromes των δεδοµένων που ελήφθησαν. Θεωρούµε ότι η λέξη r που έφτασε στον αποκωδικοποιητή έχει ν λάθη τα οποία βρίσκονται στις θέσεις i 1, i 2,, i v µε αντίστοιχες τιµές λάθους 0. Τότε S j = e (a ) = e (a ), µε Χ l = a προκυπτει S j = e X j = 1, 2,, 2t (3.6) Για τους δυαδικούς κωδικες ισχύει ότι = 1. Ειδικά για τους δυαδικούς κωδικες ισχύει ότι: S j = X Αν ξέρουµε το X l τότε γνωρίζουµε την θέση του λάθους και το µόνο που χρειάζεται είναι η αντίστροφη της τιµής αυτού του bit. Για αυτό τον λόγο και τα X l ονοµάζονται εντοπιστές λαθών (error locators). Το επόµενο στάδιο είναι να καθοριστούν τα X l µε τη χρήση των syndromes S j. Ένας τρόπος για να γίνει αυτό είναι µε την χρήση του πολυωνύµου εύρεσης λαθών που θα παρουσιαστεί στην επόµενη ενότητα. ~ 61 ~

62 Το Πολυώνυµο Εύρεσης Λαθών (Error Locator Polynomial) Βάση της τελευταίας σχέσης από την προηγούµενη ενότητα προκύπτουν για δυαδικούς κωδικες που έχουν = 1 ακόλουθες εξισώσεις: S 1 = X 1 + X X v S 2 = X X X v 2 S 2t = X 1 2t + X 2 2t + + X v 2t Οι εξισώσεις αυτές λέγονται ότι είναι άθροισµα δυνάµεων συµµετρικών συναρτήσεων. Αυτές δίνουν 2t εξισώσεις µε άγνωστο ν αριθµό εντοπιστών λαθών. Πρόκειται για µη γραµµικές εξισώσεις και ένας τρόπος λύσης τους είναι ο εξαντλητικός έλεγχος κάτι όµως που δεν είναι υπολογιστικά εύκολο. Αντί λοιπόν να επιχειρήσει κανείς να λύσει αυτές τις µη γραµµικές εξισώσεις είναι προτιµότερο να εισαχθεί ένα νέο πολυώνυµο που ονοµάζεται πολυώνυµο εύρεσης λαθών (error locator polynomial) το οποίο µεταφέρει το πρόβληµα σε ένα πιο επιθυµητό επίπεδο. Το συγκεκριµένο πολυώνυµο ορίζεται ως εξής: Λ(x) = Π(1- Χ l x) = Λ ν x v + Λ ν-1 x v Λ 1 x + Λ 0 όπου Λ 0 = 1. Βάση αυτού του ορισµού αν x = X l -1 τότε το Λ(x) = 0. Οι ρίζες λοιπόν του πολυωνύµου είναι στα reciprocals (στο αντίστοιχο πεδίο αριθµητικής) των εντοπιστών λαθών. Γενικά για τους συντελεστές αυτού του πολυωνύµου ισχύει ότι: Λ 0 = 1 -Λ 1 = (-1) 2 Λ 2 = (-1) v Λ v = X 1 X 2 X v Οι συντελεστές Λ i του πολυωνύµου είναι το άθροισµα των γινoµένων µε i παράγοντες όλων των συνδυασµών των εντοπιστών λαθών. Οι παραπάνω εξισώσεις αναφέρονται ως στοιχειώδεις συµµετρικές εξισώσεις των εντοπιστών λαθών. Βασικό χαρακτηριστικό είναι ότι και αυτές µε τη σειρά τους παρέχουν µη γραµµικές σχέσεις µεταξύ των συντελεστών του πολυωνύµου και των εντοπιστών λαθών. Το στοιχείο κλειδί όµως είναι η παρατήρηση ότι υπάρχει γραµµική σχέση µεταξύ των syndromes και των συντελεστών του πολυωνύµου. Αυτή η σχέση περιγράφεται από τις ιδιότητες του Newton που έχουν εφαρµογή σε κάθε πεδίο κατ επέκταση και στα πεδία Galois. Άρα µεταξύ των συντελεστών του πολυωνύµου και των syndromes ισχύει: S k + Λ 1 S k Λ k-1 S 1 + kλ k = 0, 1 k v S k + Λ 1 S k Λ v-1 S k-v+1 + Λ ν S k-v = 0 k > v. ~ 62 ~

63 Για k > ν υπάρχει µια γραµµική ανάδραση µεταξύ των syndromes και των συντελεστών του πολυωνύµου που περιγράφεται από την σχέση: Αυτή η σχέση µπορεί να εκφραστεί σε µορφή πινάκων: S S S j = Λ S (3.7) S S S S S S S Λ Λ = - Λ S S S Ο πίνακας ν v ονoµάζεται M v και είναι της µορφής Toeplitz. Το πλήθος των λαθών ν δεν είναι εκ των προτέρων γνωστό και πρέπει να καθοριστεί. Ο αλγόριθµος των Peterson Gorenstein - Zierler λειτουργεί ως εξής: 1. Θέτουµε v = t. 2. Σχηµατίζουµε τον πίνακα M v και υπολογίζουµε την ορίζουσα για να καθορίσουµε αν το M v είναι αντιστρέψιµος. Αν δεν είναι αντιστρέψιµος το θέτουµε ν = ν -1 και επαναλαµβάνουµε το βήµα. 3. Αν ο M v είναι αντιστρέψιµος λύνουµε τις εξισώσεις για τους συντελεστές Λ 1, Λ 2,,Λ ν. Για τους δυαδικούς κωδικες BCH µπορεί να γίνει µια απλοποίηση καθώς ισχύει ότι S 2j = S j 2. Οι σχέσεις µπορούν πλέον να απλοποιηθούν και προκύπτουν σε µορφή πίνακα οι παρακάτω εξισώσεις: S S 1 S S S S S S S S S S S S S Λ S Λ S = (3.8) Λ S Αν σε αυτό υπάρχουν t λάθη τότε ο πίνακας είναι αντιστρέψιµος. Αν δεν είναι αντιστρέψιµος αφαιρούµε 2 γραµµές και στήλες και ελέγχουµε πάλι την ορίζουσα του. Όταν ο πίνακας που θα προκύψει θα είναι αντιστρέψιµος µπορούµε πλέον να βρούµε τους συντελεστές Λ i και στη συνέχεια να βρούµε τις ρίζες του. Αυτή η προσέγγιση ονοµάζεται αλγόριθµος του Peterson. Για µικρούς αριθµούς λαθών υπάρχουν ακριβείς σχέσεις που υπολογίζουν τους συντελεστές του Λ(x). Οι µέθοδοι που περιγράφηκαν παραπάνω χρησιµοποιούν ευθέως την γραµµική άλγεβρα και είναι υπολογιστικά πολύπλοκοι. Μια διαφορετική προσέγγιση γίνεται µε τον αλγόριθµο των Berlekamp- Massey που θα αποτελέσει και την επιλογή µας για τον αποκωδικοποιητή BCH που θα χρησιµοποιήσουµε στο προς µελέτη σύστηµα. Γενική ιδέα είναι ότι ξεκινάµε µε τη λύση µικρών προβληµάτων και την πληροφορία που εξασφαλίζουµε την χρησιµοποιούµε για τη λύση µεγαλυτέρων ώσπου στο τέλος αποκτούµε µια γενική λύση του όλου προβλήµατος µε καλύτερη υπολογιστική πολυπλοκότητα σε σχέση µε τον αλγόριθµο του Peterson. Παρατηρούµε ότι η εξίσωση S j = - Λ S περιγράφει την έξοδο ενός LFSR µε συντελεστές τις τιµές Λ 1, Λ 2,, Λ ν. Στόχος λοιπόν είναι να βρεθούν οι συντελεστές Λ j µε τέτοιο τρόπο ώστε το LFSR να παράγει την ακολουθία των syndromes S 1, S 2,, S 2t. Βάση της αρχής της µεγίστης πιθανοφάνειας ο αριθµός ν των λαθών πρέπει να είναι ο µικρότερος που να σχετίζεται µε τα συγκεκριµένα syndromes. Αυτό σηµαίνει θέλουµε να καθορίσουµε το µικρότερο δυνατό LFSR. Στόχος του αλγορίθµου Berlekamp-Massey είναι να δηµιουργηθεί το LFSR το οποίο παράγει όλη την ~ 63 ~

64 ακολουθία των syndromes (S 1, S 2,, S 2t ) τροποποιώντας ένα υπάρχον αρχικό αν είναι δυνατό, παράγοντας ολοένα και µακρύτερες ακολουθίες. Αρχικά η διαδικασία ξεκινάει µε ένα LFSR που µπορεί να παράγει το S 1. Επόµενο βήµα είναι να καθοριστεί αν το συγκεκριµένο LFSR µπορεί να παράγει την ακολουθία [S 1, S 2 ]. Αν µπορεί η ακολουθία αυτή να παραχθεί µε το υπάρχον LFSR τότε δεν απαιτούνται αλλαγές σε διαφορετική περίπτωση καθορίζεται ένα νέο LFSR το οποίο µπορεί να παράξει αυτή την ακολουθία. Γενικεύοντας αυτήν την διαδικασία µπορούµε να πούµε ότι ξεκινάµε από ένα LFSR που παράγει την ακολουθία [S 1, S 2,, S k-1 ] και τροποποιώντας το αν κρίνεται απαραίτητο παράγεται η ακολουθία [S 1, S 2,, S k ] µε στόχο πάντα το LFSR που προκύπτει να είναι το µικρότερο δυνατό σε µήκος. Ολοκληρώνοντας την διαδικασία πρέπει να προκύπτει όλη η ακολουθία των syndromes µε τους συντελεστές του LFSR να αποτελούν τους συντελεστές του πολυωνύµου εύρεσης λαθών µε το µικρότερο βαθµό. Προφανώς η διαδικασία που περιγράφηκε είναι επαναληπτική και απαιτείται ένας τρόπος αναπαράστασης του πολυωνύµου Λ(x) κατά τα διάφορα στάδια του αλγορίθµου. Έστω L k το µήκος του LFSR που παράγεται στο στάδιο k του αλγορίθµου. Άρα έχουµε Λ [κ] (x) = 1 + Λ [k] [ ] 1 x + + Λ x (3.9) Που είναι το πολυώνυµο σύνδεσης που υποδεικνύει τις συνδέσεις του LFSR που παράγει την ακολουθία εξόδου [S 1, S 2,, S k ]. Πρακτικά είναι και το µέχρι στιγµής πολυώνυµο εύρεσης λαθών όπου ισχύει: [ ] S j = - Λ S µε j = L k + 1,, k. Σε κάποιο ενδιάµεσο βήµα έχει υπολογιστεί ως πολυώνυµο σύνδεσης το Λ [k-1] (x) µήκους L k το οποίο παράγει την ακολουθία [S 1, S 2,, S k-1 ] για κάποιο k-1 < 2t. Ελέγχουµε αν παράγει και το στοιχείο S k υπολογίζοντας την έξοδο: S = [ ] Λ S. Εφόσον το είναι ισο µε το S k δεν απαιτείται καµιά αναβάθµιση για το LFSR µε Λ [k] (x) = Λ [k-1] (x) και L k = L k-1. Σε διαφορετική περίπτωση έχουµε µια µη µηδενική απόκλιση (discrepancy) που σχετίζεται µε το Λ [k-1] (x) ως εξής: [ ] [ ] d k = S k S = S k + Λ S = Λ S (3.10) Σε αυτήν την περίπτωση απαιτείται αναβάθµιση του LFSR και του πολυωνύµου σύνδεσης. Αυτή είναι η κεντρική ιδέα του αλγορίθµου Berlekamp-Massey που θα παρουσιαστεί πλήρως στο επόµενο κεφάλαιο. Άλλος τρόπος για την κατασκευή του πολυωνύµου εύρεσης λαθών είναι και ο αλγόριθµος του Ευκλείδη που ως προσέγγιση αποκωδικοποίησης συχνά αποκαλείται και αλγόριθµος Sugiyama. Στόχος είναι µε την χρήση αυτού του αλγορίθµου να λυθεί η εξίσωση: Ω(x) = S(x)Λ(x) (mod x 2t ) Όπου S(x) είναι τα syndromes που έχουµε υπολογίσει, Λ(x) είναι το πολυώνυµο εύρεσης λαθών που θέλουµε να υπολογίσουµε και t είναι ο αριθµός λαθών που µπορεί να διορθώσει ο συγκεκριµένος κώδικας ενώ το Ω(x) είναι ένα πολυώνυµο εκτίµησης που έχει εφαρµογή στον υπολογισµό της σωστής τιµής σε µη δυαδικούς κωδικες BCH όπως θα αναφέρουµε στην συνέχεια. Εκ πρώτης όψης ~ 64 ~

65 φαίνεται ότι το πρόβληµα έχει αρκετούς περιορισµούς και η παραπάνω εξίσωση δεν µπορεί να λυθεί. Η σχέση αυτή µπορεί να γραφτεί και ως: Θ(x)(x 2t ) + Λ(x)S(x) = Ω(x) και ο αλγόριθµος του Ευκλείδη µπορεί να δώσει λύση µε την χρήση των συνθηκών που λένε ότι ο βαθµός του πολυωνύµου Ω(x) θα είναι µικρότερος του t και ο βαθµός του πολυωνύµου Λ(x) µικρότερος η ίσος του t, το πολυώνυµο S(x) έχει 2t συντελεστές και ο πρώτος ορός του πολυωνύµου έχει βαθµό τουλάχιστον 2t. Υπό αυτές τις συνθήκες η παραπάνω εξίσωση έχει λύση. Επιπλέον ο επαυξηµένος αλγόριθµος του Ευκλείδη για ένα ζεύγος (a, b) από έναν Ευκλείδειο τοµέα επιστρέφει και ένα ζεύγος (s, t) τέτοιο ώστε να ισχύει as + bt = c, όπου c είναι ο µέγιστος κοινός διαιρέτης των στοιχείων a, b. Αν λοιπόν χρησιµοποιηθεί ο επαυξηµένος αλγόριθµος του Ευκλείδη µπορεί να δηµιουργηθεί επαναληπτικά µια ακολουθία πολυώνυµων Θ [k] (x), Λ [k] (x), Ω [k] (x) που να ικανοποιούν: Θ [k] (x)x 2t + Λ [k] (x)s(x) = Ω [k] (x) Το κριτήριο για να σταµατήσει η διαδικασία είναι βασισµένο στην παρατήρηση ότι ο βαθµός του πολυωνύµου Ω(x) πρέπει να είναι µικρότερος του t. Τα βήµατα για την αποκωδικοποίηση είναι βάση του συγκεκριµένου αλγορίθµου: 1. Υπολογισµός των syndromes και του πολυωνύµου των syndromes S(x) = S 1 + S 2 x + + S 2t x 2t Εφαρµογή του αλγορίθµου του Ευκλείδη µε α(x) = x 2t και b(x) = S(x) µέχρι deg(r i (x)) < t. Τότε Ω(x) = r i (x) και Λ(x) = t i (x). 3. Στη συνέχεια βρίσκουµε τις ρίζες του πολυωνύµου Λ(x) και τους εντοπιστές λαθών X i. 4. Τέλος αν έχουµε µη δυαδικούς κωδικες χρησιµοποιούµε τον αλγόριθµο του Forney για να καθορίσουµε τις σωστές τιµές Υπολογισµός ριζών πολυωνύµου εύρεσης λαθών Από την στιγµή που έχει υπολογιστεί το πολυώνυµο εύρεσης λαθών το επόµενο βήµα είναι η εύρεση των ριζών που µε τη σειρά τους θα δείξουν τα σηµεία-συµβολα της λέξης που είναι λανθασµένα. Το πεδίο ενδιαφέροντος που θα εξεταστεί για την εύρεση των ριζών είναι το GF(q m ) όπου το q είναι συνήθως 2 και το m σε περίπτωση δυαδικού κώδικα εξαρτάται από το µήκος της κωδικής λέξης ως εξής n = 2 m -1 ενώ σε περίπτωση µη δυαδικού κώδικα ισούται µε το πλήθος των bit από τα οποία αποτελείται κάθε σύµβολο. Το γεγονός ότι εργαζόµαστε σε πεπερασµένα πεδία (µε πλήθος στοιχείων µερικές χιλιάδες το περισσότερο), δίνει την δυνατότητα να εξεταστεί κάθε στοιχείο του πεδίου για να καθοριστεί αν είναι ρίζα του πολυωνύµου. Υπάρχουν και άλλοι αλγεβρικοί τρόποι που παραγοντοποιούν το πολυώνυµο και βρίσκουν τις ρίζες του όµως για τα πεδία που συνήθως χρησιµοποιούνται σε κωδικες διόρθωσης λαθών και για το πλήθος των ριζών που συνήθως εµπλέκονται η έρευνα κατά Chien είναι ίσως ο πιο αποτελεσµατικός τρόπος και παρουσιάζεται παρακάτω. Σε αυτό το σηµείο θα παρουσιαστεί ένα παράδειγµα στο οποίο το πολυώνυµο εύρεσης λαθών που θα χρησιµοποιηθεί έχει βαθµό ν = 3 και είναι το: Λ(x) = Λ 0 + Λ 1 x + Λ 2 x 2 + Λ 3 x 3 = 1 + Λ 1 x + Λ 2 x 2 + Λ 3 x 3. ~ 65 ~

66 Υπολογίζουµε στην συνέχεια την τιµή του Λ(x) για κάθε µη µηδενικό στοιχείο του πεδίου µε τη σειρά: x = 1, x = α,, x =. Άρα έχουµε: Λ(1) = 1 + Λ 1 (1) + Λ 2 (1) 2 + Λ 3 (1) 3 Λ(α) = 1 + Λ 1 (α) + Λ 2 (α) 2 + Λ 3 (α) 3 Λ(α ) = 1 + Λ 1 (α ) + Λ 2 (α ) 2 + Λ 3 (α ) 3. Όταν το αποτέλεσµα για κάποια συγκεκριµένη τιµή είναι 0 τότε το στοιχείο αυτή αποτελεί ρίζα του πολυωνύµου. Αυτή είναι η µέθοδος Chien που θα χρησιµοποιηθεί και στον BCH του συστήµατος µας ιόρθωση λαθών Μη δυαδικοί κωδικες Για τους δυαδικούς κωδικες είχε αναφερθεί ότι = 1 και συνεπώς αν υπολογίσουµε τις τιµές των X l τότε γνωρίζουµε την θέση του λάθους και το µόνο που χρειάζεται είναι η αντίστροφη της τιµής αυτού του bit. Συνεπώς η διαδικασία της διόρθωσης που απαιτείται είναι απλώς µια αντιστροφή. Για τους µη δυαδικούς κωδικες όµως δεν είναι αρκετό να βρεθεί µόνο η θέση του λάθους X l πρέπει να βρεθεί και η σωστή τιµή του συµβόλου καθώς αυτό αναπαριστάται στην συγκεκριµένη περίπτωση από m bits. Για την περίπτωση λοιπόν των µη δυαδικών κωδικών η σχέση µεταξύ των syndromes και των εντοπιστών λαθών είναι: S 1 = e X 1 + e X e X v S 2 = e X e X e X v S 2t = e X 2t 1 + e X 2t 2t e X v Παρόλο που η σχέση µεταξύ των syndromes και των εντοπιστών λαθών αλλάζει η σχέση µεταξύ των συντελεστών του πολυωνύµου εύρεσης λαθών και των syndromes µένει η ίδια. Άρα οι αλγόριθµοι για το πολυώνυµο Λ(x) ισχύουν και για αυτήν την περίπτωση. Αφού λοιπόν το πολυώνυµο Λ(x) βρεθεί καθώς και οι ρίζες του, απαιτείται να βρεθούν πλέον οι σωστοί συντελεστές. Μια µέθοδος για τον υπολογισµό αυτών των συντελεστών είναι ο αλγόριθµος Forney. Η διαδικασία ξεκινάει από την σχέση µεταξύ των εντοπιστών λαθών και των syndromes: S = e X, j = 1, 2,, 2t Σε αυτήν την περίπτωση όµως οι συντελεστές δεν παίρνουν τιµές µόνο µεταξύ 0 ή 1. ~ 66 ~

67 Γνωρίζοντας πλέον τους εντοπιστές λαθών υπάρχει η δυνατότητα για άµεση λύση των γραµµικών εξισώσεων X X X X X X X X X e e S S = e S Για την υλοποίηση του αλγορίθµου Forney απαιτούνται κάποιοι επιπλέον ορισµοί. Αρχικά το πολυώνυµο syndrome ορίζεται ως: S(x) = S 1 + S 2 x + S 3 x S 2t x 2t-1 = S x (3.11) Ουσιαστικα πρόκειται για ένα πολυώνυµο µε συντελεστές τις τιµές των syndromes. Επίσης ορίζεται ένα πολυώνυµο εκτίµησης λαθών Ω(x) βάση της σχέσης Ω(x) = S(x)Λ(x) (mod x 2t ) (3.12) Η εξίσωση αυτή ονοµάζεται εξίσωση κλειδί (key equation). Σκοπός του υπολογισµού της πράξης modulo x 2t είναι να µην υπάρχουν όροι µε βαθµό µεγαλύτερο η ισο του 2t. Η εξίσωση αυτή χρησιµοποιήθηκε και στον αλγόριθµο του Ευκλείδη για τον υπολογισµό του πολυωνύµου εύρεσης λαθών κάτι καθόλου τυχαίο µιας και ο συγκεκριµένος αλγόριθµος ενδείκνυται για χρήση σε περιπτώσεις µη δυαδικού κώδικα. Τέλος είναι σηµαντικό να οριστεί και η παραγωγός ενός πολυωνύµου στο πεδίο Galois. Έστω ότι έχουµε ένα πολυώνυµο f(x) = f 0 + f 1 x + + f t x t σε κάποιο πεδίο Galois. Η παράγωγος αυτού του πολυωνύµου ορίζεται όπως και στο σύνολο των πραγµατικών αριθµών ως f (x) = f 1 + 2f 2 x + + tf t x t-1, όπου mf i = f i + f i + + f i, µε πλήθος m στοιχείων f i. Ισχύουν και σε αυτό το πεδίο οι ίδιες ιδιότητες όσον αφορά τις παραγώγους γινοµένων και πηλίκων. Τελικά αποδεικνύεται ότι οι τιµές των λανθασµένων συµβόλων βάση του αλγορίθµου Forney υπολογίζονται βάση της σχέσης: Όπου Λ (x) είναι η πρώτη παράγωγος του πολυωνύµου Λ(x) Πλεονεκτήµατα Μειονεκτήµατα e = - Ω(Χ k -1 ) / Λ (Χ k -1 ) (3.13) Γενικά οι κωδικες BCH έχουν πολλά καλά χαρακτηριστικά. Είναι γενικά απλοί όσον αφορά το κύκλωµα και την πολυπλοκότητα του κωδικοποιητή. Ο λόγος είναι ότι στην συγκεκριµένη περίπτωση ο γεννήτορας που χρησιµοποιείται είναι διάνυσµα µε αποτέλεσµα να έχουµε έναν αρκετά απλό και µικρό κωδικοποιητή. Σηµαντικό πλεονέκτηµα που θα εκµεταλλευτούµε στο τελικό σύστηµα που θα µελετήσουµε είναι ότι αυτοί οι κωδικες σε αντίθεση µε τους επαναληπτικούς όπως οι LDPC και οι συνελικτικοί δεν παρουσιάζουν το φαινόµενο του σφάλµατος κατωφλίου (error-floor). Ο λόγος είναι ότι έχουν σχεδιαστεί αρχικά µε µία ελάχιστη απόσταση και συνεπώς όσο µειώνεται η ισχύς του θορύβου σε σχέση µε το σήµα τόσο καλύτερα αποτελέσµατα έχουν. Επιπλέον σηµαντικό χαρακτηριστικό είναι ότι οι σχεδιάσεις τους ευνοούν την ταχύτητα λειτουργίας. Σηµαντικό µειονέκτηµα τους είναι η χαµηλή ωστόσο απόδοση σε συνθήκες υψηλού θορύβου σε σχέση µε αντίστοιχους άλλους µπλοκ κώδικες όπως οι LDPC καθώς και σε σχέση µε συνελικτικούς κώδικες. Τέλος µειονέκτηµα αποτελεί ότι όπως αναφέρθηκε και πρωτύτερα ότι καθώς οι κωδικες µεγαλώνουν, το πλήθος των λαθών που µπορούν να διορθώσουν σε σχέση µε το µέγεθος της κωδικής λέξης, τείνει στο µηδέν άρα δεν συµφέρει η χρήση τους σε κώδικες µε µεγάλο µήκος λέξης. ~ 67 ~

68 ~ 68 ~

69 Κεφάλαιο 4 Αρχιτεκτονική και αλγόριθµοι αποκωδικοποίησης BCH Σε αυτό το κεφάλαιο θα εξετάσουµε τους αλγορίθµους και την αρχιτεκτονική που αντιστοιχεί σε αυτούς για την υλοποίηση του κωδικοποιητή και του αποκωδικοποιητή του κώδικα BCH που θα χρησιµοποιηθούν στο τελικό σύστηµα. 4.1 Τρέχον επίπεδο τεχνογνωσίας State of the art για BCH κώδικες Οι κώδικες BCH είναι από τους πιο ευρέως χρησιµοποιούµενους µπλοκ κώδικες σε τηλεπικοινωνιακές εφαρµογές ενώ τα τελευταία χρόνια έχουν πεδίο εφαρµογής και σε συστήµατα ψηφιακής αποθήκευσης για αύξηση της αξιοπιστίας των δεδοµένων λόγω των χαρακτηριστικών τους σε θέµατα ανίχνευσης και διόρθωσης λαθών. Επιπλέον έχουν επιλεχτεί για διάφορα πρότυπα όπως το G και το DVB-S2 όπου συµµετέχουν µαζί µε άλλους κώδικες. Μεγαλύτερη αναφορά σχετικά µε το πρότυπο DVB S2 θα γίνει στο επόµενο κεφάλαιο. Σε αυτήν την ενότητα θα παρουσιάσουµε διάφορες εργασίες που περιέχουν τις τελευταίες εξελίξεις σε θέµατα υλοποίησης για κώδικες BCH µε αποτέλεσµα αρχιτεκτονικές υψηλού ρυθµού επεξεργασίας και χαµηλών απαιτήσεων σε επιφάνεια. Αρχικά στην εργασία [1] παρουσιάζεται µια αρχιτεκτονική για την συστηµατική προσέγγιση του κωδικοποιητή που συνδυάζει την αύξηση της παραλληλίας µε την αύξηση της συχνότητας λειτουργίας. Πιο συγκεκριµένα θεωρείται ότι το µεγάλο fanout που προέρχεται από την πύλη xor της εισόδου που τροφοδοτεί µε την σειρά της δεδοµένα σε όλα τα τµήµατα µε τους συντελεστές του πολυωνύµου γεννήτορα περιορίζει την συχνότητα λειτουργίας του κωδικοποιητή. Προτείνεται λοιπόν µια µεθοδολογία για την µείωση του fanout της πύλης µέσω και της αύξησης της παραλληλίας. Υπάρχουν τρία βήµατα στα οποία συνοψίζεται η διαδικασία: Αρχικά το µήνυµα πολλαπλασιάζεται µε ένα πολυώνυµο p(x), το πολυώνυµο γεννήτορας τροποποιείται σε g (x) = p(x)g(x), το υπόλοιπο του m(x)p(x)/g (x) διαιρείται µε το p(x) όπου προκύπτει η αναµενόµενη έξοδος και τελικά προστίθενται αρκετές καθυστερήσεις στο πιο δεξιό κύκλο ανάδρασης για την µείωση του fanout. Προκειµένου να µην υπάρχει υψηλό fanout και στο τρίτο στάδιο χρησιµοποιείται η τεχνική του look-ahead pipeline. Το πολυώνυµο p(x) επιλέγονται πολλά µικρά πολυώνυµα τέτοια ώστε να µην απαιτούνται επαναλήψεις ανάλογα και µε τον βαθµό του unfold που χρησιµοποιείται. Σχετικά µε τον αποκωδικοποιητή υπάρχουν βελτιστοποιήσεις σε όλα τα στάδια. Αρχικά έχει ενδιαφέρον να ξεκινήσουµε µε το τµήµα υπολογισµού του πολυωνύµου εύρεσης λαθών που αποτελεί και το πιο πολύπλοκο τµήµα. Στην εργασία [2] χρησιµοποιείται ένας τροποποιηµένος BM αλγόριθµος που δεν απαιτεί την χρήση διαιρέτη τροποποιώντας κατάλληλα το τµήµα αναβάθµισης του πολυωνύµου µε την χρήση ενός παράγοντα που σχετίζεται µε την απόκλιση που υπολογίζεται από τον αλγόριθµο. Όσον αφορά την υλοποίηση χρησιµοποιείται ένας καταχωρητής όπου σε κάθε κύκλο εισέρχονται οι τιµές από την βαθµίδα των syndromes. Η λογική που έχει χρησιµοποιείται στην σχεδίαση που θα ακολουθήσει σε επόµενες ενότητες δεν διαφέρει και πάρα πολύ από αυτήν την προσέγγιση. ~ 69 ~

70 Μια διαφορετική σχεδίαση για αυτό το τµήµα που χρησιµοποιεί και πάλι τον αλγόριθµο BM παρουσιάζεται στην εργασία [3]. Σε αυτήν παρουσιάζεται µια νέα σειριακή δοµή που κάνει χρήση ενός κατάλληλου χρονοπρογραµµατισµού µε τη χρήση τριών πολλαπλασιαστών σε πεδίο Galois για τον υπολογισµό του πολυωνύµου. Κάθε επανάληψη αναλύεται σε v + 1 κύκλους µε t. Τέλος πραγµατοποιεί και ένα κατάλληλο επαναπροσδιορισµό του συστήµατος για τον υπολογισµό του πολυωνύµου που χρησιµοποιείται για τους µη δυαδικούς κώδικες. Ειδικά για την περίπτωση που χρησιµοποιούνται κώδικες µε ιδιαίτερα χαµηλή διορθωτική ικανότητα (πολύ υψηλό code rate) µπορεί να επέλθουν και άλλες βελτιστοποιήσεις για το τµήµα υπολογισµού του BM. Στην εργασία [4] εξετάζεται κώδικας µε διορθωτική ικανότητα t = 3. Λόγω του µικρού βαθµού του πολυωνύµου που προκύπτει, υπάρχουν αναλυτικές σχέσεις για τον υπολογισµό του χωρίς την χρήση επαναλήψεων. Γίνεται λοιπόν προσεκτική ανάλυση και χρησιµοποιείται ένας κατάλληλος πίνακας look-up-table µεγέθους (m + 1) 2 bits, όπου υπάρχουν έτοιµοι οι υπολογισµοί που απαιτούνται και πιο συγκεκριµένα για την τιµή (x ) + (x ). Στην εργασία [5] εξετάζεται µία βαθµωτή και παράλληλη αρχιτεκτονική για σύστηµα σε σειρά που υποστηρίζει το πρότυπο DVB S2. Ιδιαίτερο ενδιαφέρον έχει η αρχιτεκτονική υπολογισµού ριζών στον BCH αποκωδικοποιητή. Οι πολλαπλασιαστές που υπάρχουν για τον έλεγχο των ριζών στην συγκεκριµένη περίπτωση αρχικοποιούνται σε µία διαφορετική αρχική τιµή λόγω του shortening που υφίσταται η λέξη πληροφορίας µε την χρήση πολυπλεκτών και µιας µνήµης ROM όπου είναι αποθηκευµένες αυτές οι τιµές. Λόγω της πολύ µεγάλης καθυστέρησης που προκύπτει από τον υπολογισµό των ριζών µε την χρήση του αλγορίθµου Chien search στην πράξη χρησιµοποιούνται κατάλληλες δοµές µε υψηλή παραλληλία p που έχουν ως αποτέλεσµα την αύξηση της επιφάνειας και των πόρων που απαιτούνται. Στην εργασία [6] προσδιορίζεται µια µέθοδος µείωσης της απαιτούµενης επιφάνειας για αυτό το τµήµα. Πιο συγκεκριµένα χρησιµοποιείται ο αλγόριθµος IMA για την εύρεση κοινών υποεκφράσεων σε κάθε ανεξάρτητο πολλαπλασιαστή µε σκοπό την απλοποίηση της δοµής του. Επιπλέον γίνεται επέκταση και στην λογική των της εύρεσης κοινών υποεκφράσεων και σε πολλαπλασιαστές της ίδιας στήλης µε στόχο την περαιτέρω απλοποίηση βασιζόµενοι στην λογική του Group Matching. Μια διαφορετική προσέγγιση [7] που παρέχει ακόµα καλύτερα αποτελέσµατα για την εύρεση των ριζών του πολυωνύµου κατά Chien search είναι η χρήση µεθόδου 2-D βελτιστοποίησης. Με αυτήν την µέθοδο ολόκληρη η δοµή της παράλληλης αρχιτεκτονικής ελέγχεται για κοινές υποεκφράσεις µε αποτέλεσµα την δραστική µείωση της επιφάνειας και της υπολογιστικής πολυπλοκότητας. Στην εργασία [8] παρουσιάζεται µια συνολική βελτιστοποίηση της δοµής του αποκωδικοποιητή µε στόχο την µείωση της επιφάνειας που απαιτείται. Λόγω της ιδιότητας = που ισχύει για τους δυαδικούς κώδικες µειώνεται σε t από 2t τα τµήµατα για τον υπολογισµό των syndromes. Επιπλέον χρησιµοποιείται και σε αυτήν την περίπτωση η λογική του Group matching τόσο στο τµήµα εύρεσης ριζών αλλά και στο τµήµα υπολογισµού των syndromes. Στην εργασία [9] παρουσιάζεται µια αρχιτεκτονική που χρησιµοποιεί 4 bits παράλληλες αρχιτεκτονικές για την εύρεση των syndromes και των υπολογισµών των ριζών. Μάλιστα αυτά τα δυο τµήµατα µοιράζονται κοινούς πόρους δεδοµένου ότι χρονικά δεν λειτουργούν παράλληλα έτσι και αλλιώς µε αποτέλεσµα την µείωση της απαιτούµενης επιφάνειας. Στο τµήµα που υπολογίζει το πολυώνυµο εύρεσης λαθών χρησιµοποιείται ένας τροποποιηµένος αλγόριθµος ΒΜ έτσι ώστε οι ρίζες του πολυωνύµου να δείχνουν άµεσα τις θέσεις όπου υπάρχουν λάθη χωρίς να απαιτείται κύκλωµα αντιστροφής στην συνέχεια. Το συγκεκριµένο πολυώνυµο ορίζεται ως: ~ 70 ~

71 Λ(x) = (1 + x β )(1 + x β ) (1 + x β ) Επιπλέον χρησιµοποιούνται κατάλληλοι διαιρέτες που χρησιµοποιούν το λεγόµενο σύνθετο πεδίο (Composite Field). Στην εργασία [10] εισάγεται η έννοια της αναπαράστασης του υπολογισµού των syndromes µε τη χρήση πίνακα που έχει ως αποτέλεσµα µια παράλληλη αρχιτεκτονική µε χαµηλότερη πολυπλοκότητα. Χρησιµοποιείται ένας κατάλληλα τροποποιηµένος αλγόριθµος RiBM που δεν απαιτεί πολλαπλασιασµούς λόγω της µικρής σχετικά διορθωτικής ικανότητας που επιθυµείται και των κατάλληλων απλοποιήσεων των σχέσεων που πραγµατοποιείται. Και στο στάδιο της εύρεσης ριζών αντί των κλασσικών πολλαπλασιαστών χρησιµοποιούνται απλοποιηµένοι πολλαπλασιαστές λόγω της µιας σταθερής εισόδου που περιέχουν. Ακόµα χρησιµοποιείται ένας επεκταµένος γρήγορος αλγόριθµος για αυτό το τµήµα, που χρησιµοποιεί κώδικα Gray και κατάλληλα άλλα πολυώνυµα (affine). Όπως και προηγουµένως και σε αυτήν την περίπτωση [11] εξετάζεται κώδικας BCH µικρής διορθωτικής ικανότητας. Προσδιορίζεται και εδώ ένας κατάλληλος αλγόριθµος (MDS) για τον υπολογισµό του πολυωνύµου εύρεσης λαθών λόγω του µικρού βαθµού του πολυωνύµου. Στα syndromes χρησιµοποιούνται κατάλληλα πολυπλέκτες αντί πολλαπλασιαστών GF ενώ και για τον υπολογισµό των τιµών του πολυωνύµου και την διόρθωση της λέξης χρησιµοποιείται µια αρχιτεκτονική µε έλεγχο συνθηκών για τις περιπτώσεις που έχουµε κανένα η ένα λάθος. Στην συνέχεια θα παρουσιαστούν δοµές για κώδικες BCH που χρησιµοποιούνται σε συστήµατα µνηµών υψηλής πυκνότητας για την διόρθωση λαθών. Πρόκειται κυρίως για κώδικες που έχουν µεγάλο µήκος κωδικής λέξης αλλά παρέχουν µικρή διορθωτική ικανότητα της τάξης των δυο µέχρι τεσσάρων λαθών. Για αυτές τις εφαρµογές αυτές οι δύο κύριοι παράµετροι είναι η επιφάνεια που καταλαµβάνεται και η επιπρόσθετη καθυστέρηση που προκύπτει. Στην εργασία [12] προτείνεται χρήση κώδικα BCH µεγέθους (4148, 4096) µε διορθωτική ικανότητα 4. Χρησιµοποιείται παραλληλία κατά 8 στον κωδικοποιητή µε τον διαχωρισµό των τιµών-καταστάσεων στο LFSR. Πραγµατοποιείται παραλληλία t και 2t για τον υπολογισµό των syndromes και των ριζών αντίστοιχα και χρησιµοποιούνται κοινοί πόροι για την υλοποίηση τους. Ο αλγόριθµος που χρησιµοποιείται είναι ο απλοποιηµένος (S = S και t κύκλοι) BM χωρίς κύκλωµα αντιστροφής µε µια υλοποίηση t-fold για αρχιτεκτονική. Στην εργασία [13] προτείνεται µια αρχιτεκτονική για BCH µε µέγεθος (274, 256) και διορθωτική ικανότητα t = 2. Λόγω της µικρής διορθωτικής ικανότητας και σε αυτήν την περίπτωση χρησιµοποιείται αρχιτεκτονική χωρίς καθυστερήσεις για τον υπολογισµό του πολυωνύµου εύρεσης λαθών κατά BM. εν χρησιµοποιούνται αντιστροφείς αλλά ούτε και πολλαπλασιαστές παρά µόνο πράξεις modulo-2. Στην εργασία [14] δίνεται έµφαση κυρίως στο τµήµα υπολογισµού των τιµών κατά Chien. Αντί της χρήσης των πολλαπλασιαστών µιας σταθερής εισόδου (CFFM) χρησιµοποιείται µια διαφορετική τεχνική βάση της οποίας χρησιµοποιείται αρχιτεκτονική MPCN (minimal polynomial combinational networks). Το αποτέλεσµα είναι µια σηµαντική µείωση των πυλών xor που χρησιµοποιούνται για αυτό το τµήµα. Ταυτόχρονα η ιδέα αυτή επεκτείνεται και για το τµήµα υπολογισµού των syndromes και τελικά χρησιµοποιείται µια κοινή αρχιτεκτονική και για τα δυο τµήµατα ώστε να υπάρχει ακόµα µεγαλύτερη µείωση της επιφάνειας και των πόρων που απαιτούνται. Η λογική αυτή στηρίζεται στη χρήση ενός νέου πολυωνύµου T(x) το οποίο συνδέεται µε κάθε συντελεστή Λ µέσω της σχέσης: Λ = T (x) και τελικά προκύπτει ότι : P =Λ a =M (x) W (x) D (x) ~ 71 ~

72 Όπου το M (x) είναι το ελάχιστο πολυώνυµο του α και το D (x) είναι το υπόλοιπο της διαίρεσης µεταξύ του όρου x T (x) και του ( ) και η εξίσωση του Chien τροποποιείται ως: Λ a = P + 1 = D a + 1 Κατά παρόµοιο τρόπο προκύπτει η αντίστοιχη σχέση στο τµήµα των syndromes. Στην εργασία [15] προτείνεται µια αρχιτεκτονική για τον αποκωδικοποιητή που στοχεύει σε υψηλή παραλληλία και µικρή καθυστέρηση σχετικά µε το latency. Ο κώδικας έχει διορθωτική ικανότητα t=2 για τον υπολογισµό του πολυωνύµου εύρεσης λαθών χρησιµοποιούνται απευθείας τροποποιηµένοι τύποι και δεν απαιτείται πολλαπλασιαστές. Οµοίως και για το παράλληλο τµήµα υπολογισµού ριζών χρησιµοποιούνται «δέντρα» xor. Στην δοµή επέρχονται απλοποιήσεις µέσω της µεθόδου RDFA(reverse dataflow analysis) και της «οµαλότατης κατάβασης» διατηρώντας µια ισορροπία µεταξύ του πλήθους των υποεκφράσεων που µπορούν να αντικατασταθούν και του fanout που προκαλούν. 4.2 Γενικές αρχές Σε αυτήν την ενότητα θα αναφέρουµε κάποια βασικά χαρακτηριστικά σχετικά µε την ανάλυση που θα επακολουθήσει µε τους αλγορίθµους που θα χρησιµοποιηθούν καθώς και µε την υλοποίηση σε επίπεδο αρχιτεκτονικής. Αρχικά ο κώδικας ο όποιος θα χρησιµοποιηθεί θα είναι δυαδικός. Κάθε σύµβολο του θα αναπαριστάται µε τη χρήση ενός bit σχετικά µε την λέξη πληροφορίας στην είσοδο του και την κωδική λέξη που θα προκύπτει από τον κωδικοποιητή. Όσον αφορά την κωδικοποίηση της λέξης πληροφορίας θα χρησιµοποιηθεί η συστηµατική προσέγγιση κατά την οποία η λέξη πληροφορίας θα εµφανίζεται αυτούσια στην αρχή της κωδικής λέξης που θα προκύπτει. Ο αποκωδικοποιητής αποτελείται από 4 βασικά τµήµατα όπως αυτά παρουσιάστηκαν στο προηγούµενο κεφάλαιο και είναι: α) το κύκλωµα υπολογισµού των syndromes, β) το κύκλωµα υπολογισµού του πολυωνύµου εύρεσης λαθών, γ) το κύκλωµα εύρεσης ριζών του παραπάνω πολυωνύµου και τέλος δ) το κύκλωµα διόρθωσης των λαθών. Κάθε ένα από αυτά τα 5 συνολικά κυκλώµατα θα αποτελείται από 2 τµήµατα, το µονοπάτι των δεδοµένων (data path) και από µια µηχανή πεπερασµένων καταστάσεων (Finite State Machine - FSM). Σκοπός του FSM είναι ο συγχρονισµός των λειτουργιών του data path ανάλογα και µε τα αποτελέσµατα που αυτό δίνει σε ορισµένες περιπτώσεις. Επιπλέον κάθε κύκλωµα ξεκινάει την λειτουργία του εφόσον έχει ολοκληρωθεί η επεξεργασία του προηγουµένου κυκλώµατος. Αυτός ο συγχρονισµός επιτυγχάνεται µε την χρήση σηµάτων «χειραψίας» (handshaking) τα οποία προέρχονται και αυτά µε τη σειρά τους από τα FSM. Μετά την ολοκλήρωση της λειτουργίας του κάθε κυκλώµατος το FSM του παράγει ένα σήµα enable που ενηµερώνει το FSM του επόµενου κυκλώµατος ότι υπάρχουν έγκυρες τιµές στην έξοδο του προηγούµενου κυκλώµατος και ότι µπορεί να ξεκινήσει την λειτουργία του. Οµοίως συνεχίζεται η ίδια διαδικασία όταν και το επόµενο κύκλωµα ολοκληρώσει την λειτουργία του. Στο σχήµα 4.1 παρουσιάζεται η δοµή κάθε κυκλώµατος (data path- FSM) καθώς και η χρήση των σηµάτων «χειραψίας». Κατά την ανάλυση των αλγορίθµων και των αντίστοιχων κυκλωµάτων θα γίνει αναφορά και στους χρονισµούς και τις χρονικές καθυστερήσεις που απαιτούνται για την σωστή λειτουργία τους. Επίσης πρέπει να αναφερθεί ότι για την σωστή λειτουργία του συστήµατος, ο αποκωδικοποιητής πρέπει να τελειώσει την επεξεργασία του, προτού σταλεί νέα λέξη πληροφορίας στον κωδικοποιητή. Ιδιαίτερα σηµαντικό είναι να αναφερθεί ότι οι αλγόριθµοι υποστηρίζουν και την περίπτωση του επιθυµείται µείωση του κώδικα µε την προσθήκη κάποιων µηδενικών στοιχείων στο τµήµα της λέξης πληροφορίας (shortening). Αυτό είναι σηµαντικό και επιθυµητό στην περίπτωση µας προκειµένου να µπορούν να ενωθούν τα κυκλώµατα που ~ 72 ~

73 υλοποιούν διαφορετικούς κώδικες (BCH LDPC). Επίσης θα αναφερθούν και οι λόγοι που προτιµήθηκαν οι συγκεκριµένοι αλγόριθµοι µε τις συγκεκριµένες υλοποιήσεις. Τέλος για την περιγραφή των διαφόρων κυκλωµάτων από τους αλγορίθµους χρησιµοποιήθηκε η γλώσσα περιγραφής υλικού VHDL και δόθηκε ιδιαίτερη έµφαση στην παραµετρικότητα των τµηµάτων που παράχθηκαν για την εύκολη περιγραφή κωδικών µεταβλητού µεγέθους. Σχήμα 4.1 : Συνδεσμολογία μεταξύ data paths και FSM του κώδικα BCH 4.3 Ανάλυση αλγορίθµων και αντίστοιχης αρχιτεκτονικής Σε αυτήν την ενότητα θα γίνει αναλυτική παρουσίαση όλων των τµηµάτων του κωδικοποιητή και αποκωδικοποιητή µε τη σειρά που χρησιµοποιούνται στην πράξη. Θα αναλυθούν τόσοι οι αλγόριθµοι όσο και η αρχιτεκτονική µε τα αντίστοιχα FSM και τους χρονισµούς τους. Τέλος θα γίνει αναφορά στην δυνατότητα χρήσης του shortening και σε γενικά χαρακτηριστικά που αφορούν την σχεδίαση και τους αλγορίθµους που επιλέχτηκαν Κωδικοποιητής BCH Σε αυτήν την ενότητα θα παρουσιάσουµε το κωδικοποιητή BCH µιας και είναι το πρώτο κύκλωµα που χρησιµοποιείται στην επεξεργασία της λέξης πληροφορίας Αλγόριθµος Όπως αναφέρθηκε στο προηγούµενο κεφάλαιο υπάρχουν δυο τρόποι προκειµενου να δηµιουργηθεί η κωδική λέξη από την λέξη πληροφορίας µέσω του κωδικοποιητή. Αυτό µπορεί να γίνει είτε χρησιµοποιώντας τον µη συστηµατικό τρόπο όπου η κωδική λέξη c(x) προκύπτει πολλαπλασιάζοντας την λέξη πληροφορίας m(x) µε τον γεννήτορα πίνακα c(x) = m(x)g(x), είτε χρησιµοποιώντας τον συστηµατικό τρόπο κατά τον όποιο η κωδική λέξη υπολογίζεται ως c(x) = m(x)x n-k R g(x) [m(x)x n-k ]. Στην συγκεκριµένη περίπτωση προτιµήθηκε η συστηµατική προσέγγιση έναντι της µη συστηµατικής. ~ 73 ~

74 Ο λόγος είναι ότι γενικά βάση της µεθόδου αποκωδικοποίησης που θα χρησιµοποιηθεί και του γεγονότος ότι χρησιµοποιούµε δυαδικό κώδικα ο µη συστηµατικός τρόπος δεν προσφέρει τίποτα περισσότερο σε θέµατα απόδοσης σε σχέση µε τον συστηµατικό ο οποίος από την πλευρά του ως υλοποίηση είναι απλούστερος από άποψη πολυπλοκότητας και υλικού. Ο µη συστηµατικός τρόπος όσον αφορά την υλοποίηση του θα απαιτούσε για δυαδικό κώδικα ένα µεγάλο πλήθος από πύλες xor και καταχωρητές ανάλογα µε το µέγεθος του κώδικα και πιο συγκεκριµένα µε το µέγεθος της κωδικής λέξης. Το πολυώνυµο γεννήτορας g(x) έχει συντελεστές στο πεδίο GF(2) αλλά ρίζες στο GF(2 m ) όπου για το m ισχύει n = 2 m 1 ενώ στην περίπτωση του shortening ισχύει ότι n + s = 2 m 1 όπου s είναι το µέγεθος του shortening που πραγµατοποιείται. Ουσιαστικα παράγεται µε την χρήση των ελαχίστων πολυωνύµων και των κλάσεων συζυγών. Πρακτικά χρησιµοποιούµε µια συνάρτηση του Matlab που παράγει γεννήτορες πολυώνυµα για τα κατάλληλα µεγέθη κώδικα Αρχιτεκτονική data path Η υλοποίηση σε αρχιτεκτονική του κωδικοποιητή BCH θα βασιστεί λοιπόν στην συστηµατική µέθοδο που ορίζεται που ορίζεται από την σχέση: c(x) = m(x)x n-k R g(x) [m(x)x n-k ] Προτού δείξουµε την αρχιτεκτονική του συγκεκριµένου κωδικοποιητή και αναλύσουµε τον τρόπο λειτουργίας του είναι σκόπιµο να δούµε πως προκύπτει αυτή, από την παραπάνω σχέση. Παρατηρούµε ότι η σχέση αποτελείται από 2 µέρη. Το πρώτο µέρος είναι το m(x)x n-k από όπου καταλαβαίνουµε ότι ο κώδικας είναι συστηµατικός. Αυτό το τµήµα δηλώνει ότι το µήνυµα εµφανίζεται εντελώς αναλλοίωτο στην κωδική λέξη καθώς γνωρίζουµε εξ αρχής ότι ο βαθµός του πολυωνύµου µε το οποίο αναπαριστάται η κωδική λέξη c είναι n 1 ενώ ο βαθµός του αντιστοίχου πολυωνύµου για την λέξη πληροφορίας είναι k 1. Ισχύει λοιπόν ότι: m(x)x n-k = [m 0 + m 1 x + m 2 x m k-1 x k-1 ]x n-k = m 0 x n-k + m 1 x n-k+1 + m 2 x n-k m k-1 x n-1. Προκύπτει λοιπόν ένα πολυώνυµο µε µέγιστη δύναµη n-1 και ελάχιστη n-k. Το R g(x) [ ] όπως αναφέραµε και στο προηγούµενο κεφάλαιο δηλώνει πράξη εύρεσης υπολοίπου µετά από διαίρεση µε το πολυώνυµο γεννήτορα g(x). Το πολυώνυµο g(x) έχει βαθµό n-k-1 κάτι που άµεσα δηλώνει ότι η µέγιστη δύναµη του πολυωνύµου που προκύπτει από το δεύτερο µέρος της σχέσης δεν µπορεί να υπερβαίνει το n-k-1 και άµεσα συνεπάγεται ότι το µήνυµα m(x) εµφανίζεται αναλλοίωτο στην κωδική λέξη. Αυτό σε επίπεδο αρχιτεκτονικής είναι πολύ εύκολο να υλοποιηθεί απλώς µε το να σταλεί κατευθείαν στην έξοδο, κάθε σύµβολο-bit της λέξης πληροφορίας που εµφανίζεται στην είσοδο. Το δεύτερο τµήµα της σχέσης που αναπαριστά το υπόλοιπο διαίρεσης µπορεί να υλοποιηθεί µε τη χρήση ενός LFSR. εδοµένου ότι χρησιµοποιείται το πολυώνυµο γεννήτορας g(x) για την εύρεση του υπολοίπου αυτό θα είναι και το χαρακτηριστικό πολυώνυµο βάση του οποίου θα γίνει και ο πολλαπλασιασµός µε τα bit της λέξης πληροφορίας αλλά και οι συνδέσεις για τις αναδράσεις του LFSR. Προκύπτει ότι το LFSR θα αποτελείται από n k καταχωρητές λόγω του βαθµού του πολυωνύµου g(x). Κάθε bit από την λέξη πληροφορίας εκτός από την έξοδο θα κατευθύνεται και στο LFSR. Στο επόµενο σχήµα παρουσιάζεται η αρχιτεκτονική του κωδικοποιητή BCH που θα χρησιµοποιηθεί και βασίζεται στις παραπάνω παρατηρήσεις. ~ 74 ~

75 Σχήμα 4.2 : Αρχιτεκτονική κωδικοποιητή BCH Σε αυτόν τον κωδικοποιητή το LFSR που χρησιµοποιείται είναι τύπου 2 καθώς οι πύλες xor, είναι µεταξύ των καταχωρητών. Οι πολλαπλασιαστές µιας και ο κώδικας που χρησιµοποιείται είναι δυαδικός αποτελούνται από πύλες and όπου η µια τους είσοδος είναι οι συντελεστές του πολυωνύµου γεννήτορα g(x) και η άλλη προέρχεται από µια πράξη xor µεταξύ της εισόδου και του τελευταίου καταχωρητή του LFSR. Ακόµα σε αυτήν την υλοποίηση µεταξύ όλων των καταχωρητών υπάρχει πύλη xor και σύνδεση ανάδρασης ωστόσο στις περιπτώσεις όπου ο συντελεστής του g(x) είναι µηδέν ουσιαστικα τίποτα από τα δυο δεν υπάρχει. Όταν κάποιο g i είναι 0 η έξοδος της πύλης and πάντα είναι 0 και η πύλη xor στην οποία είναι είσοδος αυτή η τιµή, έχει ως έξοδο την τιµή εισόδου της. Στο κωδικοποιητή αυτό υπάρχουν και δυο πολυπλέκτες που χρησιµοποιούνται προκειµενου να εµφανιστούν στην έξοδο οι n k τιµές των parity bits. Σε αυτό το σηµείο θα αναλύσουµε την λειτουργία του κωδικοποιητή βήµα προς βήµα. 1. Αρχικά γίνεται αρχικοποίηση των καταχωρητών του LFSR στην τιµή Στην συνέχεια ξεκινάει η αποστολή του της λέξης πληροφορίας στέλνοντας πρώτα το πιο σηµαντικό bit (MSB). 3. Την ίδια στιγµή και κατά την διάρκεια ολόκληρης της αποστολής του µηνύµατος οι πολυπλέκτες λαµβάνουν δεδοµένα από την είσοδο 0 και στην έξοδο του κωδικοποιητή εµφανίζεται bit προς bit αυτούσια η λέξη πληροφορίας. 4. Με το τέλος της µετάδοσης των δεδοµένων οι πολυπλέκτες πλέον λαµβάνουν δεδοµένα από την είσοδο 1 ενώ παράλληλα οι καταχωρητές του LFSR περιέχουν τους συντελεστές του τµήµατος R g(x) [m(x)x n-k ] δηλαδή τα parity bits. Πλέον δεδοµένου ότι η είσοδος του πολυπλέκτη,που είναι συνδεδεµένος µε τις πύλες and, είναι 0 καταργούνται άµεσα όλες οι συνδέσεις ανάδρασης και οι πύλες xor µεταξύ των καταχωρητών. 5. Έπειτα οι τιµές που είναι αποθηκευµένες στους καταχωρητές µετακινούνται προς την έξοδο του κωδικοποιητή bit προς bit. 6. Με το τέλος αυτής της διαδικασίας έχει παραχθεί η κωδική λέξη και η διαδικασία µπορεί να ξεκινήσει πάλι από την αρχή. ~ 75 ~

76 Λειτουργία FSM Αφού παρουσιάσαµε την αρχιτεκτονική του data path πρέπει να δείξουµε πως αλληλεπιδρά µε τα σήµατα που παράγει το FSM αλλά και τους ακριβείς χρονισµούς του. Με βάση τον τρόπο λειτουργίας του κωδικοποιητή που αναφέρθηκε παραπάνω, τα σηµεία στα οποία επεµβαίνει το FSM είναι οι δυο πολυπλέκτες, η αρχικοποίηση των καταχωρητών και τέλος τα σήµατα που δηλώνουν την αρχή και το τέλος της λειτουργίας του κωδικοποιητή. Στο σχήµα που ακολουθεί φαίνεται το διάγραµµα καταστάσεων του FSM του κωδικοποιητή και τα σήµατα εισόδου και εξόδου του. Σχήμα 4.3 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM του κωδικοποιητή BCH Τα σήµατα που θα µας απασχολήσουν ως είσοδοι στο FSM είναι: το rst το γενικό reset του συστήµατος και το en_in που δηλώνει πότε ξεκινάει η κωδικοποίηση. Οι έξοδοι του FSM είναι: το rst_out που αποτελεί το εσωτερικό reset για την αρχικοποίηση των καταχωρητών του LFSR, το σήµα sel_out που αποτελεί το σήµα επιλογής για τους πολυπλέκτες και τέλος το en_channel που χρησιµοποιείται για την δήλωση στην επόµενη βαθµίδα ότι ο κωδικοποιητής έχει έγκυρα δεδοµένα στην έξοδο του. Η αρχική κατάσταση του FSM είναι η state0. Σε αυτήν την κατάσταση βρισκόµαστε µετά από σήµα rst = 1 στο συνολικό κύκλωµα και µετά από το τέλος της διαδικασίας παραγωγής της κωδικής λέξης. Παραµένουµε σε αυτήν έως ότου σταλεί σήµα en_in µε τιµή 1 στον κωδικοποιητή που τον ειδοποιεί ότι µια καινούρια λέξη πληροφορίας είναι έτοιµη προκειµενου να παραχθεί η αντίστοιχη κωδική λέξη. Σε αυτήν την κατάσταση το σήµα rst_out αρχικοποιεί τους καταχωρητές ώστε να είναι έτοιµοι για την παράγωγη των parity bits. Ενώ το σήµα sel_out γίνεται 11 δείχνοντας ως εισόδους τις θέσεις 1 και στους δυο πολυπλέκτες ώστε ουσιαστικα να µην υπάρχουν αναδράσεις στο LFSR. Από εδώ και πέρα θα χρησιµοποιήσουµε την σύµβαση ότι στην έξοδο εµφανίζονται τα δεδοµένα της εισόδου X αν το σήµα επιλογής έχει τιµή X. ~ 76 ~

77 Όταν το σήµα en_in αποκτήσει την τιµή 1 τότε ο κωδικοποιητής ενηµερώνεται ότι αρχίζει η κωδικοποίηση και πηγαίνουµε στην κατάσταση state1. Σε αυτήν την κατάσταση το πρώτο bit της λέξης πληροφορίας είναι στην είσοδο και οι δυο πολυπλέκτες γυρίζουν στην θέση 0 και ισχύει ότι sel_out = 00. Για το εσωτερικό reset ισχύει ότι rst_out = 0. Πλέον οι καταχωρητές και άρα το LFSR λειτουργεί κανονικά. Ακόµα το σήµα en_channel γίνεται 1 και δηλώνει ότι στην έξοδο του κωδικοποιητή έχουµε έγκυρα δεδοµένα. Στο FSM υπάρχει ένας µετρητής χρόνου (timer) που αρχίζει να λειτουργεί όταν είµαστε στην κατάσταση state1 καθώς στην κατάσταση state0 αρχικοποιείται στην τιµή 0. Μένουµε στην κατάσταση state1 έως ότου ολόκληρη η λέξη πληροφορίας έχει εισαχτεί στον κωδικοποιητή και κατ επέκταση ο µετρητής έχει µετρήσει k κύκλους. Η επόµενη κατάσταση είναι η state2. Το µόνο που αλλάζει σε σχέση µε την προηγούµενη είναι ότι πλέον οι πολυπλέκτες γυρίζουν στη θέση 1 και το αντίστοιχο σήµα γίνεται sel_out = 11. Ουσιαστικα βρισκόµαστε στην κατάσταση στην οποία τα parity bits έχουν παραχθεί και θέλουµε να βγουν στην έξοδο του κωδικοποιητή. Προκειµενου κάθε bit της κωδικής λέξης να έχει εµφανιστεί στην έξοδο της απαιτούνται άλλοι n k κύκλοι, συνολικά n κύκλοι ρολογιού. Μόλις λοιπόν ο µετρητής µετρήσει n κύκλους τότε η διαδικασία έχει ολοκληρωθεί. Το σήµα en_channel γίνεται 0 που δηλώνει το τέλος της κωδικής λέξης. Πλέον πηγαίνουµε στην κατάσταση state3 και στον επόµενο κύκλο στην κατάσταση state4. Πρόκειται για δυο µεταβατικές καταστάσεις που δεν συνεισφέρουν τίποτα στην διαδικασία. Έπειτα ξαναγυρίζουµε στην κατάσταση state0 όπου περιµένουµε το σήµα en_in να γίνει 1 προκειµένου να αρχίσει µια νέα διαδικασία κωδικοποίησης Υλοποίηση shortening Σε αυτήν την αρχιτεκτονική είναι επιθυµητό να υπάρχει η δυνατότητα για µείωση της κωδικής λέξης κατά κάποια σύµβολα (shortening). Στην γενική περίπτωση µια τέτοια µείωση κατά s σύµβολα µπορεί να γίνει απλά µε την εισαγωγή µηδενικών στοιχείων στις s πρώτες θέσεις της κωδικής λέξης θεωρώντας ότι η κωδική λέξη ξεκινάει µετά από αυτό το σηµείο. Κάτι τέτοιο µπορεί να γίνει και στην υλοποίηση που αναφέρθηκε παραπάνω. Έχει ενδιαφέρον να παρατηρήσουµε την συµπεριφορά του LFSR του κωδικοποιητή ακολουθώντας την παραπάνω διαδικασία. Αρχικά οι καταχωρητές είναι αρχικοποιηµένοι στην τιµή 0. Εισάγοντας s µηδενικά στοιχεία στην αρχή παρατηρούµε ότι η τιµή στους καταχωρητές παραµένει 0. Τα µηδενικά στοιχεία έχουν ως αποτέλεσµα οι έξοδοι των πυλών and να είναι 0 όπως και οι έξοδοι των πυλών xor µιας και οι δυο είσοδοι τους είναι 0. Βάση αυτής της παρατήρησης προκύπτει ότι προκειµένου να γίνει µια µείωση στον κώδικα στην συγκεκριµένη αρχιτεκτονική δεν απαιτείται τίποτα περισσότερο από την αλλαγή συνθηκών όσον αφορά τον µετρητή. Αρκεί να µετρηθούν m s κύκλοι για την αλλαγή από την κατάσταση state1 στην state2 και n s κύκλοι για την αλλαγή από την state2 στην κατάσταση state χωρίς να χρειαστεί να σταλούν αρχικά µηδενικά στοιχεία Γενικά χαρακτηριστικά Απαιτούνται λοιπόν n κύκλοι ρολογιού ή n s για την περίπτωση του shortening προκειµένου να παραχθεί η κωδική λέξη. Αυτό συµβαίνει γιατί έχουµε επιλέξει από άποψη αρχιτεκτονικής να εισέρχεται µόνο 1 σύµβολο-bit της κωδικής λέξης σε κάθε κύκλο. Γενικά θα ήταν δυνατό µε τη χρήση της τεχνικής του unfold στην αρχιτεκτονική να εισάγονται περισσότερα σύµβολα σε κάθε κύκλο. Ωστόσο µια τέτοια αρχιτεκτονική θα απαιτούσε µεγαλύτερη πολυπλοκότητα και υλικό και θα περιόριζε ίσως την χρήση του shortening. Επίσης λόγω του καναλιού που θα χρησιµοποιηθεί δεν έχει νόηµα να χρησιµοποιηθεί unfold µεγαλύτερο του 2 αλλά και πάλι θα χρησιµοποιηθεί άλλος τρόπος ~ 77 ~

78 προκειµένου να µην έχουµε τόση καθυστέρηση σε κύκλους στο τελικό σύστηµα. Γενικά για την συστηµατική προσέγγιση η συγκεκριµένη υλοποίηση είναι κλασική αλλά γρήγορη σε συχνότητα λειτουργίας και χαµηλής πολυπλοκότητας Αποκωδικοποιητής Υπολογισµός syndromes Σε αυτήν την ενότητα θα παρουσιάσουµε το πρώτο τµήµα από το οποίο αποτελείται ο αποκωδικοποιητής που είναι το κύκλωµα υπολογισµού των syndromes Αλγόριθµος Ο αποκωδικοποιητής έχει ως βασικές λειτουργίες την εύρεση των σηµείων στα οποία έχει αλλοιωθεί η κωδική λέξη µετά την διέλευση της διαµέσου του καναλιού και την διόρθωση τους. Το πρώτο στάδιο του, ο υπολογισµός των syndromes σε πρώτη φάση κάνει τον διαχωρισµό αν η λέξη που έχει φτάσει στον αποκωδικοποιητή είναι έγκυρη κωδική λέξη η όχι. Σε περίπτωση που δεν είναι έγκυρη κωδική λέξη προσφέρει το πρώτο βήµα για την εύρεση των λανθασµένων bits. Όπως αναφέρθηκε και στο προηγούµενο κεφάλαιο η λειτουργία αυτού του σταδίου στηρίζεται στα χαρακτηριστικά της κατασκευής του γεννήτορα πολυωνύµου τα οποία µεταβιβάζονται και στην κωδική λέξη. Το πολυώνυµο γεννήτορας έχει εκ κατασκευής του 2t ρίζες που είναι στοιχεία του πεδίου επέκτασης στο οποίο λειτουργεί ο αποκωδικοποιητής. Ισχύει λοιπόν ότι g(α) = g(α 2 ) = = g(α 2t ) = 0 και λόγω της κωδικοποίησης ισχύει και για κάθε έγκυρη κωδική λέξη ότι c(α) = c(α 2 ) = c(α 2t ) = 0. Στον κωδικοποιητή θεωρούµε ότι έχει φτάσει µια λέξη που παρουσιάζεται σε πολυωνυµική µορφή ως r(x) και ισχύει για αυτήν ότι r(x) = c(x) + e(x) όπου e(x) είναι το πολυώνυµο που έχει συντελεστές διάφορους του µηδέν στα σηµεία που έχει εισέλθει θόρυβος από το κανάλι και το οποίο δεν είναι γνωστό. Βάση των παραπάνω σχέσεων ορίζονται τα syndromes S j και υπολογίζονται µέσω της σχέσης S j = r(α j ) = e(α j ) = e α για j = 1, 2,, 2t. Αυτή θα είναι και η σχέση στην οποία θα βασιστούµε για την αρχιτεκτονική του αντίστοιχου τµήµατος. Αν οι λέξεις που φτάνουν στον κωδικοποιητή είναι έγκυρες κωδικές λέξεις τότε οι τιµές S 1, S 2,,S j των syndromes είναι µηδέν. Σε αντίθετη περίπτωση που οι τιµές αυτές δεν είναι µηδενικές γνωρίζουµε µε βεβαιότητα ότι οι λέξεις που έχουν φτάσει στον αποκωδικοποιητή δεν είναι έγκυρες κωδικές λέξεις, έχουν αλλοιωθεί από το κανάλι και απαιτείται διόρθωση. Γενικά αυτή η προσέγγιση όσον αφορά τον κωδικοποιητή έχει ως αποτέλεσµα µια χαµηλής πολυπλοκότητας αρχιτεκτονική αρκετά γρήγορη βέβαια σε συχνότητα λειτουργίας. Ωστόσο για την περίπτωση δυαδικού κώδικα είναι πολύ αποτελεσµατική και εξασφαλίζει την αναµενόµενη απόδοση Αρχιτεκτονική data path Η υλοποίηση σε αρχιτεκτονική του τµήµατος υπολογισµού των syndromes θα βασιστεί στην σχέση: S j = r(α j ) = e(α j ) = µε j = 1, 2,, 2t. Αρχικά θα αναλύσουµε την παραπάνω σχέση για να δούµε πως θα προκύψει η αρχιτεκτονική που θα περιγραφεί στην συνέχεια για αυτό το τµήµα. Το βασικό τµήµα αυτής της σχέσης στο οποίο θα βασιστούµε είναι η πρώτη ισότητα µιας και το πολυώνυµο e(x) δεν είναι γνωστό. Στην πραγµατικότητα αυτό αναζητείται από τον αποκωδικοποιητή ενώ το πολυώνυµο r(x) είναι η λέξη που φτάνει στον αποκωδικοποιητή µέσω του καναλιού. Αρχικά παρατηρούµε ότι δεν έχουµε µια εξίσωση αλλά 2t εξισώσεις όπου το ιδιαίτερο χαρακτηριστικό της καθεµίας είναι ότι χρησιµοποιεί για τον υπολογισµό του αποτελέσµατος και µια διαφορετική ρίζα του πολυωνύµου γεννήτορα, που είναι και στοιχείο του πεδίο επέκτασης που χρησιµοποιείται. Οι ρίζες του πολυωνύµου είναι γνωστές εκ των προτέρων και οι υπολογισµοί καθενός syndrome συνεπώς µπορούν να γίνουν παράλληλα. Αυτό που ~ 78 ~

79 ουσιαστικά υπολογίζεται είναι η τιµή ενός πολυωνύµου για µία συγκεκριµένη τιµή εισόδου. Η τιµή αυτή είναι µια ρίζα του πολυωνύµου g(x) και το πολυώνυµο και πιο συγκεκριµένα οι συντελεστές του, αντιστοιχούν στην λέξη που φτάνει στον αποκωδικοποιητή. Αυτοί είναι και οι δυο είσοδοι που απαιτούνται. Ο υπολογισµός γίνεται µε την χρήση ενός πολλαπλασιαστή ο οποίος υπολογίζει δυνάµεις του στοιχείου-ρίζα α j. Αν ο αντίστοιχος συντελεστής του πολυωνύµου r(x) είναι 1 τότε η αντίστοιχη τιµή που υπολογίστηκε αθροίζεται µε τις υπόλοιπες δυνάµεις µε συντελεστή 1 του πολυωνύµου r(x). To άθροισµα αποθηκεύεται σε έναν καταχωρητή και όταν υπολογιστούν και αθροιστούν όλες οι δυνάµεις έχει τελειώσει και ο υπολογισµός της τιµής. Στο επόµενο σχήµα παρουσιάζεται η αρχιτεκτονική ενός από τα 2t τµήµατα του κυκλώµατος υπολογισµού των syndromes που θα χρησιµοποιηθεί και είναι βασισµένο στις παραπάνω παρατηρήσεις. Σχήμα 4.4 : Αρχιτεκτονική του τμήματος υπολογισμού των syndromes Αρχικά εκτός από τα 2t τµήµατα υπολογισµού των syndromes υπάρχουν και δύο καταχωρητές ολίσθησης. Στον πρώτο καταχωρητή αποθηκεύονται αρχικά οι συντελεστές του πολυωνύµου r(x) δηλαδή η λέξη προς εξέταση. Ο καταχωρητής αυτός αποτελείται από καταχωρητές 1 bit σε σειρά και έχει ως έξοδο, την έξοδο καθενός από τους καταχωρητές από τους οποίους αποτελείται. Ο δεύτερος καταχωρητής ολίσθησης έχει διαφορετική δοµή. Αποτελείται από καταχωρητές 1 bit αλλά µεταξύ αυτών υπάρχουν και πολυπλέκτες. Οι πολυπλέκτες αυτοί επιτρέπουν στον καταχωρητή ολίσθησης να φορτωθεί παράλληλα από την έξοδο του προηγούµενου καταχωρητή ολίσθησης. Η φόρτωση της λέξης γίνεται αντίστροφα από ότι την έστειλε το κανάλι. Ο λόγος είναι το ότι όπως είπαµε στην αρχιτεκτονική του κωδικοποιητή αρχικά στέλνουµε το πιο σηµαντικό bit της λέξης πληροφορίας. ~ 79 ~

80 Χρησιµοποιώντας λοιπόν πολλαπλασιαστή για την παραγωγή των δυνάµεων απαιτείται αντιστροφή της λέξης. Θα µπορούσαµε να χρησιµοποιήσουµε διαιρέτη για να µην κάνουµε την αντιστροφή όµως σε αυτήν την περίπτωση θα δηµιουργούσαµε ένα µεγάλο critical path και θα γινόταν πολυπλοκότερη η χρήση του shortening. Η έξοδος αυτού του καταχωρητή είναι 1 bit από την οποία εξέρχονται σε κάθε κύκλο οι τιµές που είναι αποθηκευµένες στους καταχωρητές του. Η έξοδος αυτού του καταχωρητή ολίσθησης στην συνέχεια αποτελεί είσοδος σε κάθε ένα από τα 2t τµήµατα. Ο υπολογισµός των δυνάµεων γίνεται µε την χρήση ενός πολλαπλασιαστή και ενός καταχωρητή. Η µία είσοδος του πολλαπλασιαστή έχει ως µόνιµη τιµή µια από τις 2t ρίζες του πολυωνύµου γεννήτορα. Η έξοδος του πολλαπλασιαστή συνδέεται στην είσοδο του καταχωρητή όπου αποθηκεύεται η τιµή. Στον επόµενο κύκλο αυτή η τιµή µέσω της εξόδου του καταχωρητή τροφοδοτεί την άλλη είσοδο του πολλαπλασιαστή και παράγεται η επόµενη δύναµη. Η έξοδος αυτού του καταχωρητή αποτελεί είσοδο σε έναν πολυπλέκτη. Η άλλη είσοδος του πολυπλέκτη έχει ως είσοδο την σταθερή τιµή µηδέν. Το σήµα επιλογής του πολυπλέκτη τροφοδοτείται από τον καταχωρητή ολίσθησης όπου περιέχεται η κωδική λέξη. Όταν το bit της κωδικής είναι 0 τότε στην έξοδο του πολυπλέκτη εµφανίζεται η τιµή µηδέν ενώ όταν είναι 1 που σηµαίνει ότι η δύναµη αυτή του πολυωνύµου r(x) υπάρχει, στην έξοδο του πολυπλέκτη εµφανίζεται η υπολογισµένη τιµή από τον πολλαπλασιαστή. Η τιµή αυτή στην συνέχεια µέσω µιας πύλης xor 2 εισόδων, προστίθενται µε το υπόλοιπο άθροισµα που έχει υπολογιστεί και αποθηκεύεται σε έναν καταχωρητή. Ο τελευταίος πολυπλέκτης χρησιµοποιείται για τον υπολογισµό του πρώτου αθροίσµατος όπου δεν είναι αποτέλεσµα δύναµης αλλά αποτελεί τον σταθερό όρο της πολυωνυµικής µορφής της λέξης πληροφορίας. Σε αυτό το σηµείο πρέπει να τονίσουµε ότι ο αποκωδικοποιητής στο σύνολο του λειτουργεί στο πεδίο επέκτασης GF(2 m ) άρα χρησιµοποιούνται κατάλληλοι πολλαπλασιαστές όπως αυτός του σχήµατος 2.6 για πράξεις σε αυτό το πεδίο. Επίσης όλοι καταχωρητές είναι των m bits όπως και οι πύλες xor για την πράξη της πρόσθεσης. Αφού αναλύσαµε την αρχιτεκτονική θα δούµε την λειτουργία βήµα προς βήµα. 1. Αρχικά γίνεται η αρχικοποίηση των καταχωρητών. Ο καταχωρητής που χρησιµοποιείται για την παραγωγή των δυνάµεων µαζί µε τον πολλαπλασιαστή αρχικοποιείται στην τιµή α 0 = 1 και όχι στην όλο 0 καθώς σε µια τέτοια περίπτωση καµία δύναµη δεν θα µπορούσε να παραχθεί αφού ο πολλαπλασιαστής θα είχε µια είσοδο µε τιµή 0 πάντα. 2. Στην συνέχεια από το κανάλι η γενικότερα την προηγούµενη βαθµίδα καταφθάνουν η λέξη r(x) στον καταχωρητή ολίσθησης. Καθ όλη αυτήν την διάρκεια οι άλλοι δυο καταχωρητές πρέπει να είναι σε κατάσταση αρχικοποίησης. 3. Κατά την διάρκεια της λήψης της λέξης από το κανάλι η την προηγούµενη βαθµίδα ο καταχωρητής ολίσθησης που πραγµατοποιεί την αντιστροφή δεν απαιτείται να είναι σε κατάσταση αρχικοποίησης. Ο λόγος είναι ότι αφού γίνει η πλήρης λήψη της λέξης τότε αυτή φορτώνεται στον καταχωρητή παράλληλα αφού οι πολυπλέκτες µε το κατάλληλο σήµα επιλογής το επιτρέπουν σε αυτό το σηµείο. Η προηγούµενη τιµή του δεν έχει καµία αξία και χάνεται και τελικά γίνεται η αντιστροφή. 4. Αµέσως µετά την ολοκλήρωση της διαδικασία της αντιστροφής οι πολυπλέκτες του καταχωρητή ολίσθησης πλέον δεν επιτρέπουν την παράλληλη φόρτωση και ξεκινάει ο υπολογισµός της τιµής του πολυωνύµου r(x). Ο πολυπλέκτης στο τµήµα που αποθηκεύει το τελικό αποτέλεσµα λαµβάνει δεδοµένα από την είσοδο 1 που περιέχει την τιµή του σταθερού όρου του πολυωνύµου, της πρώτης τιµής που εξέρχεται από το σύστηµα που υλοποιεί την αντιστροφή, κάνει πρόσθεση µε την αρχικά µηδενική τιµή που έχει ο καταχωρητής και αποθηκεύει αυτήν την τιµή. Ταυτόχρονα έχει υπολογιστεί και η πρώτη δύναµη από τον πολλαπλασιαστή που ενδέχεται να χρησιµοποιηθεί στον επόµενο κύκλο ανάλογα µε το επόµενο bit της λέξης που έλαβε ο αποκωδικοποιητής. ~ 80 ~

81 5. Στην συνέχεια ανάλογα µε τα bit της λέξης-πολυωνύµου r(x) o πρώτος πολυπλέκτης επιλέγει ανάµεσα στις δυο εισόδους του. Επιπλέον ο άλλος πολυπλέκτης λαµβάνει δεδοµένα από την είσοδο 0 µέχρι τον τελικό υπολογισµό του αποτελέσµατος. 6. Αφού παραχθεί το τελικό αποτέλεσµα, η διαδικασία µπορεί να ξεκινήσει πάλι από την αρχή Λειτουργία FSM Μετά την παρουσίαση της αρχιτεκτονικής του data path σειρά έχει η παρουσίαση του FSM µε τα σήµατα που παράγει και τους ακριβείς χρονισµούς. Το FSM παράγει τα σήµατα που ελέγχουν όλους τους πολυπλέκτες και αυτούς στα 2t τµήµατα καθώς και αυτούς στον καταχωρητή ολίσθησης. Παράγει τα σήµατα αρχικοποίησης των καταχωρητών στα 2t τµήµατα όχι όµως στους καταχωρητές ολίσθησης. Είναι σηµαντικό να αναφερθεί ότι η έξοδος του καταχωρητή ολίσθησης που πραγµατοποιεί την αντιστροφή πρώτα τροφοδοτεί το FSM και από εκεί οι τιµές διαδίδονται στο data path µέσω του σήµατος επιλογής του πολυπλέκτη για την παραγωγή των δυνάµεων καθώς και την είσοδο του άλλου πολυπλέκτη για την τιµή του σταθερού όρου. Επιπρόσθετα παράγει τα σήµατα που δηλώνουν: το τέλος της λειτουργίας του σταδίου υπολογισµού των syndromes, όλη την διάρκεια λήψης της λέξης από το κανάλι, σήµα που στέλνεται και στο τελευταίο στάδιο της διόρθωσης. Τέλος δέχεται και το σήµα ότι αρχίζει η λήψη της λέξης από το κανάλι η την προηγούµενη βαθµίδα γενικότερα που είναι εκτός του αποκωδικοποιητή BCH. Στο σχήµα που ακολουθεί φαίνεται το διάγραµµα καταστάσεων του FSM του σταδίου για τον υπολογισµό των syndromes και τα σήµατα εισόδου και εξόδου του. Σχήμα 4.5 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM του τμήματος υπολογισμού των syndromes Τα σήµατα που θα µας απασχολήσουν ως είσοδοι στο FSM είναι: το rst το γενικό reset του συστήµατος, το en_in που δηλώνει πότε ξεκινάει η λήψη της λέξης από το κανάλι και το σήµα eisodosn που δέχεται από τον καταχωρητή ολίσθησης την αντεστραµµένη λέξη. Οι έξοδοι του FSM είναι: το rst_out που αποτελεί το εσωτερικό reset για την αρχικοποίηση των καταχωρητών εκτός των ~ 81 ~

82 καταχωρητών ολίσθησης, τα σήµατα sel_f, sel_r, sel_s που ελέγχουν τους πολυπλέκτες για την ύπαρξη του συντελεστή της αντίστοιχης δύναµης της ληφθείσας λέξης, την άθροιση των στοιχείων για τον υπολογισµό του τελικού αποτελέσµατος και την παράλληλη φόρτωση της ληφθείσας λέξης στον καταχωρητή ολίσθησης όπου πραγµατοποιείται και η αντιστροφή της αντίστοιχα, το σήµα exodos που δίνει και το σταθερό όρο στο data path και τέλος τα σήµατα en_dio και en_out που χρησιµοποιούνται για την δήλωση στην βαθµίδα της διόρθωσης ότι αρχίζει η λήψη της λέξης και ότι ο υπολογισµός των syndromes ολοκληρώθηκε µε την έξοδος αυτού του κυκλώµατος να έχει έγκυρα δεδοµένα αντίστοιχα. Η αρχική κατάσταση του FSM είναι η statewait. Σε αυτήν την κατάσταση καταλήγουµε µετά από σήµα rst = 1 στο συνολικό κύκλωµα καθώς και µετά από το τέλος της διαδικασίας αφού έχει υπολογιστεί η τελική τιµή. Παραµένουµε σε αυτήν την κατάσταση έως ότου το σήµα en_in = 1 από το κανάλι η γενικότερα την προηγούµενη βαθµίδα ειδοποιεί το FSM ότι αρχίζει η λήψη της λέξης. Σε αυτήν την κατάσταση το σήµα rst_out γίνεται 1 και αρχικοποιεί τους καταχωρητές εκτός των καταχωρητών ολίσθησης, τα σήµατα επιλογής για τους πολυπλέκτες έχουν τις τιµές sel_f = 0 και sel_r = 0 µε τον πολυπλέκτη για τον υπολογισµό δύναµης να λαµβάνει δεδοµένα από την είσοδο µε την σταθερή µηδενική τιµή και τον άλλο να λαµβάνει δεδοµένα από τον καταχωρητή που αποθηκεύει το τελικό αποτέλεσµα που λόγω της αρχικοποίησης όµως έχει µηδενική τιµή στην έξοδο. Το σήµα επιλογής των πολυπλεκτών στον αντίστοιχο καταχωρητή ολίσθησης είναι sel_s = 1 που σηµαίνει ότι δεν γίνεται παράλληλη φόρτωση ενώ και το σήµα exodos που αποτελεί την είσοδο του πολυπλέκτη για την τιµή του σταθερού όρου είναι και αυτό 0. Όταν το σήµα en_in αποκτήσει την τιµή 1 τότε ενηµερωνόµαστε ότι αρχίζει η λήψη της λέξης και πραγµατοποιείται µετάβαση στην κατάσταση statechannel. Στην κατάσταση αυτή εξακολουθούν οι καταχωρητές των 2t τµηµάτων να είναι βρίσκονται σε κατάσταση αρχικοποίησης µε το σήµα rst_out να παραµένει στην τιµή 1. Και τα σήµατα των δυο πολυπλεκτών διατηρούν την τιµή τους. Όσο συνεχίζεται η λήψη της λέξης, το σήµα επιλογής των πολυπλεκτών του καταχωρητή ολίσθησης αλλά και το σήµα exodos διατηρούν τις τιµές τους, ενώ το σήµα en_dio παίρνει την τιµή 1 και πληροφορεί την βαθµίδα της διόρθωσης ότι έχει αρχίσει η λήψη της λέξης. Μόλις τελειώσει η µετάδοση της λέξης το σήµα en_in παίρνει την τιµή 0 και πηγαίνουµε στην κατάσταση state1 ενώ µηδενίζεται και το σήµα en_dio που πληροφορεί την βαθµίδα ης διόρθωσης για το τέλος της λήψης. Οι καταχωρητές παύουν να είναι σε κατάσταση αρχικοποίησης και το αντίστοιχο σήµα rst_out γίνεται 0. Το σήµα επιλογής sel_s των πολυπλεκτών του καταχωρητή ολίσθησης γίνεται 1 και η λέξη αντιστρέφεται και φορτώνεται παράλληλα σε αυτόν. Όσον αφορά το πολυπλέκτη που χρησιµοποιείται για την διέλευση των δυνάµεων στον πρώτο κύκλο το σήµα επιλογής του sel_f έχει τιµή 0 καθότι ο πρώτος όρος της λέξης αποτελεί τον σταθερό όρο του πολυωνύµου που έχει δύναµη 0 ενώ στους υπόλοιπους κύκλους παίρνει τιµή ανάλογα µε τα bit της λέξης r(x). Όµοια συµπεριφορά έχει και το σήµα επιλογής του πολυπλέκτη που επιτρέπει την άθροιση των δυνάµεων. Στον πρώτο κύκλο το σήµα επιλογής του, sel_r έχει τιµή 1 και από τον πολυπλέκτη διέρχεται η τιµή του σταθερού όρου που προέρχεται από την έξοδο-σηµα exodos του FSM, που µε τη σειρά της τροφοδοτείται από την πρώτη τιµή του καταχωρητή ολίσθησης µέσω του σήµατος-εισόδου του FSM eisodosn. Σε αυτήν την κατάσταση αρχίζει να λειτουργεί και ο µετρητής του συστήµατος που προηγουµένως ήταν σε κατάσταση αρχικοποίησης µε αρχική τιµή 0. Στην κατάσταση state1 παραµένουµε έως ότου υπολογιστεί το τελικό αποτέλεσµα. εδοµένου ότι για να γίνει αυτό πρέπει να έχουν διαβαστεί όλα τα bit της ληφθείσας λέξης που αντιστοιχούν σε συντελεστές πολυωνύµου απαιτούνται n κύκλοι ρολογιού. Όταν ο µετρητής λοιπόν αποκτήσει τιµή n τότε πηγαίνουµε στην επόµενη κατάσταση που είναι η state2. Σε αυτήν την κατάσταση ουσιαστικά ~ 82 ~

83 ειδοποιούµε την επόµενη βαθµίδα ότι έχει ολοκληρωθεί ο υπολογισµός των syndromes και ότι υπάρχουν έγκυρα δεδοµένα στις εξόδους µέσω του σήµατος en_out που παίρνει την τιµή 1. Όλα τα άλλα σήµατα διατηρούν την τιµή που είχαν από την προηγούµενη κατάσταση. Τέλος στον επόµενο κύκλο αφού έχει ολοκληρωθεί ο υπολογισµός των syndromes πηγαίνουµε στην κατάσταση statewait όπου αναµένουµε εκ νέου το σήµα en_in να γίνει 1 και ένας καινούριος υπολογισµός να ξεκινήσει Υλοποίηση shortening Όπως αναφέραµε και στην περίπτωση του κωδικοποιητή µας ενδιαφέρει η αρχιτεκτονική και του αποκωδικοποιητή να υποστηρίζει την δυνατότητα για shortening. Όπως και στον κωδικοποιητή έτσι και εδώ θεωρούµε ότι η µείωση που θέλουµε να πετύχουµε είναι κατά s σύµβολα. Στον κωδικοποιητή η αρχή στην οποία βασιστήκαµε για την υλοποίηση του shortening ήταν η αποστολή s µηδενικών bit στην αρχή της κωδικής λέξης όπου s ήταν και το µέγεθος του shortening που θέλαµε να πραγµατοποιήσουµε. Στην πράξη είδαµε ότι ήταν αρκετό να µειώσουµε κατά s το µήκος της κωδικής λέξης και την τιµή του µετρητή που χρησιµοποιούταν ως συνθήκη για την αλλαγή των καταστάσεων στο FSM χωρίς να απαιτείται καµία αλλαγή στο data path. Με την ίδια λογική, µε την χρήση µηδενικών στοιχείων στην αρχή της λέξης πληροφορίας θα ξεκινήσουµε και εδώ την ανάλυση µας. Έχοντας s µηδενικά bit στην αρχή της λέξης πληροφορίας και λόγω της συστηµατικής προσέγγισης στον κωδικοποιητή προκύπτει ότι και η κωδική λέξη θα έχει τα s µη µηδενικά στοιχεία στην αρχή της. Όπως αναφέρθηκε και προηγουµένως τα πρώτα bit της λέξης πληροφορίας και κατ επέκταση και της κωδικής λέξης είναι και τα πιο σηµαντικά (MSB) και αναπαριστούν τις πιο µεγάλες δυνάµεις όταν αναφερόµαστε στην πολυωνυµική µορφή των λέξεων. Αυτό σηµαίνει ότι οι πιο µεγάλες δυνάµεις έχουν µηδενικούς συντελεστές. Συνεπώς για τον υπολογισµό τιµής του πολυωνύµου βάση της αρχιτεκτονικής και του τρόπου που αναλύθηκε παραπάνω είναι ακριβώς το ίδιο είτε έχουµε τα s µηδενικά σύµβολα στην αρχή είτε δεν τα έχουµε καθόλου. Επιπλέον βάση και της αντιστροφής που γίνεται, οι δυνάµεις µε µηδενικό συντελεστή εµφανίζονται τελευταίες και δεν επεµβαίνουν στον υπολογισµό. Το τελικό συµπέρασµα είναι πως δεν χρειάζονται τα µηδενικά στοιχεία στην αρχή και συνεπώς µπορεί να χρησιµοποιηθεί ως είσοδος, η έξοδος του κωδικοποιητή µε shortening που αναλύθηκε στην προηγούµενη ενότητα, Γενικά χαρακτηριστικά Τελικά απαιτούνται n κύκλοι ρολογιού ή n s για την περίπτωση του shortening για την ολοκλήρωση του υπολογισµού. Από την στιγµή που ο κωδικοποιητής στέλνει 1 bit σε κάθε κύκλο το κύκλωµα υπολογισµού των syndromes λαµβάνει 1 bit σε κάθε κύκλο. Και σε αυτήν περίπτωση µε τη χρήση της τεχνικής του unfold στην αρχιτεκτονική θα ήταν δυνατό να εισάγονται περισσότερα σύµβολα σε κάθε κύκλο. Ωστόσο µια τέτοια αρχιτεκτονική θα απαιτούσε µεγαλύτερη πολυπλοκότητα και υλικό. Επιλέχτηκε ωστόσο η παραλληλία κατά 2t τµήµατα, που το καθένα υπολογίζει ένα διαφορετικό syndrome έναντι και της χρήσης περισσότερων bit στην είσοδο αλλά και της χρήσης ενός µόνο τµήµατος για την υλοποίηση όλων των υπολογισµών που θα απαιτούσε όµως 2t περισσότερους κύκλους, λαµβάνοντας υπόψη το µέγεθος του κώδικα και την διορθωτική ικανότητα που µπορεί να χρησιµοποιηθεί. Γενικά µπορούµε να αναφέρουµε ότι η συγκεκριµένη υλοποίηση είναι αρκετά καλή όσον αφορά τα trade off µεταξύ καθυστέρησης και υλικού. Τέλος πρέπει να αναφερθεί ότι και η συγκεκριµένη υλοποίηση αλλά και όλη η αποκωδικοποίηση που βασίζεται στην χρήση των syndromes αποσκοπεί σε χαµηλή πολυπλοκότητα και υψηλή συχνότητα λειτουργίας. ~ 83 ~

84 4.3.3 Αποκωδικοποιητής Υπολογισµός πολυωνύµου εύρεσης λαθών (error locator polynomial) Σε αυτήν την ενότητα θα παρουσιάσουµε το δεύτερο τµήµα από το οποίο αποτελείται ο αποκωδικοποιητής που είναι το κύκλωµα υπολογισµού του πολυωνύµου εύρεσης λαθών Αλγόριθµος Το επόµενο βήµα µετά την ολοκλήρωση της διαδικασίας του υπολογισµού των syndromes είναι ο υπολογισµός του πολυωνύµου εύρεσης λαθών. Στο στάδιο αυτό στόχος είναι η αξιοποίηση της χρήσης των syndromes προκειµενου να εντοπιστούν τα σηµεία στα οποία έχει αλλοιωθεί πιθανώς η λέξη και πιο συγκεκριµένα οι εντοπιστές λαθών όπως αυτοί περιγράφηκαν βάση της σχέσης (3.6). Επειδή στην συγκεκριµένη περίπτωση συζητάµε για δυαδικούς κώδικες ισχύει ότι S j =. Όπως αναφέρθηκε και στο προηγούµενο κεφάλαιο οι σχέσεις αυτές είναι µη γραµµικές και ένας τρόπος λύσης είναι η χρήση του πολυωνύµου εύρεσης λαθών κατά την οποία το πρόβληµα µετασχηµατίζεται από την λύση των εξισώσεων στην εύρεση ενός πολυωνύµου του οποίου οι ρίζες αντιστοιχούν στις τιµές των X l που ψάχνουµε να βρούµε. Το πολυώνυµο αυτό ορίζεται ως Λ(x) = Π(1- Χ l x) = Λ ν x v + Λ ν- 1x v Λ 1 x + Λ 0 όπου Λ 0 = 1. Η σχέση (3.7) δείχνει πως σχετίζονται οι συντελεστές αυτού του πολυωνύµου και τα syndromes. Στο προηγούµενο κεφάλαιο αναφέρθηκαν διάφοροι µέθοδοι και αλγόριθµοι εύρεσης του πολυωνύµου. Αυτός που θα χρησιµοποιηθεί στην δική µας περίπτωση είναι ο αλγόριθµος των Berlekamp Massey. Κεντρική ιδέα του αλγορίθµου είναι η εύρεση των συντελεστών Λ i µε τέτοιο τρόπο ώστε σταδιακά να µπορεί να παραχτεί όλη η ακολουθία των syndromes που έχουµε υπολογίσει από το προηγούµενο στάδιο. Η σχέση (3.7) µπορούµε να πούµε ότι περιγράφει την έξοδο ενός LFSR µε συντελεστές, του συντελεστές του πολυωνύµου που ψάχνουµε. Στόχος είναι το LFSR αυτό να παράγει σταδιακά όλη την ακολουθία των syndrome και να έχει το ελάχιστο δυνατό µήκος καθώς βάση της αρχής της πιθανοφάνειας ο αριθµός ν των λαθών πρέπει να είναι ο µικρότερος δυνατός που να σχετίζεται µε τα συγκεκριµένα syndromes. Στην υλοποίηση της αρχιτεκτονικής δεν θα χρησιµοποιηθεί LFSR ωστόσο είναι βολική η αναφορά σε µια τέτοια δοµή για την καλύτερη κατανόηση της λειτουργίας του αλγορίθµου καθώς υπάρχει η δυνατότητα εφαρµογής σε θεωρητικό επίπεδο. Όπως αναφέρθηκε και στο προηγούµενο κεφάλαιο η διαδικασία για την ανεύρεση του πολυωνύµου είναι επαναληπτική. Στην επανάληψη k του αλγορίθµου το LFSR έχει µήκος L k που είναι και ο βαθµός του πολυωνύµου µέχρι αυτό το σηµείο. Το πολυώνυµο αυτό που καλείται και πολυώνυµο σύνδεσης, δίνεται από τη σχέση Λ [κ] (x) = 1 + Λ [k] [ ] 1 x + + Λ x και [ ] παραγει την ακολουθια syndromes [S 1, S 2,, S k ] µέσω της σχέσης S j = - Λ S µε το j να παίρνει τιµές µεταξύ L k + 1 και k. Σε αυτό το σηµείο θα δείξουµε όλη τη διαδικασία και κάποιες χρήσιµες παρατηρήσεις και ιδιότητες. X Έστω στην επανάληψη k 1 έχει υπολογιστεί ως πολυώνυµο σύνδεσης το Λ [k-1] (x) µήκους L k-1 το οποίο παράγει την ακολουθία [S 1, S 2,, S k-1 ] για κάποιο k 1 < 2t. Ελέγχουµε αν παράγει και το στοιχείο S k υπολογίζοντας την έξοδο της σχέσης S = [ ] Λ S. Εφόσον το είναι ίσο µε το S k που έχει υπολογιστεί από το προηγούµενο στάδιο δεν απαιτείται καµιά αναβάθµιση του LFSR και ισχύει Λ [k] (x) = Λ [k-1] (x) και L k = L k-1. Στην περίπτωση όµως που οι δυο τιµές διαφέρουν, υπάρχει µια µη µηδενική απόκλιση που σχετίζεται µε το Λ [k-1] (x) µέσω της ~ 84 ~

85 σχέσης (3.10) και απαιτείται αναβάθµιση του LFSR και του πολυωνύµου σύνδεσης. Στην τελευταία περίπτωση η αναβάθµιση του πολυωνύµου σύνδεσης βασίζεται στην σχέση: Λ [ ] (x) = Λ [ ] (x) + Ax Λ [ ] (x) (4.1) Το Α είναι κάποιο στοιχείο του πεδίου επέκτασης στο οποίο εργαζόµαστε, το l είναι ένας ακέραιος αριθµός το Λ [m - 1] (x) είναι ένα πολυώνυµο σύνδεσης προηγούµενης επανάληψης που παράχθηκε και το οποίο σχετίζεται µε µια µη µηδενική απόκλιση d m. Χρησιµοποιώντας το καινούργιο πολυώνυµο σύνδεσης υπολογίζουµε την νέα απόκλιση d ως εξής: d [ ] [ ] [ ] = Λ S = Λ S + Α Λ S (4.2) Για το l ισχύει ότι l = k m. Με βάση τον ορισµό της απόκλισης της σχέσης (3.10) για το δεύτερο τµήµα του δευτέρου µέλους της παραπάνω σχέσης ισχύει ότι: ~ 85 ~ [ ] Α Λ S = Ad (4.3) Στόχος είναι να µηδενιστεί η απόκλιση έτσι ώστε να προκύψει το πολυώνυµο σύνδεσης που θα µπορεί να παράγει την ακολουθία [S 1, S 2,, S k ]. Αυτό µπορεί να επιτευχτεί µε την κατάλληλη επιλογή της τιµής του Α που πρέπει να είναι Α = d d όπου για αυτήν την τιµή µε αντικατάσταση στην σχέση (4.2) και µε βάση τις σχέσεις (4.3) και (3.10) προκύπτει ότι: d = d d d d = 0 Όπως γίνεται κατανοητό η αναβάθµιση του πολυωνύµου σύνδεσης βάση της σχέσης (4.1) είναι και το κύριο θέµα του αλγορίθµου. Ωστόσο εκτός από την εύρεση του κατάλληλου στοιχείου Α και κατ επέκταση του επόµενου συντελεστή του πολυωνύµου Λ(x) ιδιαιτέρως σηµαντικό είναι το πολυώνυµο σύνδεσης η το LFSR που υποδεικνύει να έχουν το µικρότερο δυνατό µήκος. Έστω ότι έχουµε ένα LFSR µε πολυώνυµο σύνδεσης Λ [κ-1] (x) µε µήκος L k-1 το οποίο µπορεί και παράγει την ακολουθία [S 1, S 2,, S k-1 ] αλλά όχι την ακολουθία [S 1, S 2,, S k ]. Αποδεικνύεται ότι το πολυώνυµο σύνδεσης που παράγει την τελευταία ακολουθία πρέπει να έχει µήκος L k το οποίο να ικανοποιεί την σχέση L k k L k-1 (4.4) Το νέο ελάχιστο LFSR µε µήκος L k που παράγει την µεγαλύτερη ακολουθία [S 1, S 2,, S k ], προφανώς δεν µπορεί να έχει µήκος µικρότερο από το LFSR που παρήγαγε µικρότερες ακολουθίες και κατ επέκταση ισχύει ότι L k L k-1. Συνδυάζοντας τα δυο αυτά αποτελέσµατα προκύπτει ότι: L max (L, k L ) (4.5) Η ανωτέρω σχέση παρέχει ένα ελάχιστο όριο σον αφορά το µήκος του LFSR. Αποδεικνύεται ότι αν κατά την διαδικασία της αναβάθµισης του LFSR ισχύει ότι Λ [k] (x) Λ [k-1] (x) τότε ένα καινούριο LFSR µπορεί να βρεθεί όπου θα έχει µήκος που ικανοποιεί την σχέση (4.) µε ισότητα δηλαδή: L = max (L, k L ) (4.6) Τέλος είναι σηµαντικό να αναφερθεί σχετικά µε την αναβάθµιση του πολυωνύµου ότι µπορεί να µην απαιτείται αύξηση του µήκους προκειµενου να παραχθεί η ακολουθία από syndromes που απαιτείται. Αυτό ισχύει στην περίπτωση όπου L k-1 k L k-1 2L k-1 k. Παρακάτω θα παρουσιαστεί η γενική µορφή του αλγορίθµου των Berlekamp Massey σε ψευδοκώδικα και στην συνέχεια η

86 τροποποιηµένη έκδοση του, που χρησιµοποιήθηκε. Αρχικά πρέπει να αναφερθούν οι αντιστοιχίες µεταξύ των συµβολισµών του ψευδοκώδικα και αυτών που αναφέραµε παραπάνω. Το «τωρινό» πολυώνυµο σύνδεσης Λ [k] (x) συµβολίζεται µε c(x) ενώ το προηγούµενο πολυώνυµο σύνδεσης Λ [m-1] (x) συµβολίζεται µε p(x). Επίσης Ν = 2t και αποτελεί το πλήθος των εισόδων δηλαδή των syndromes. Είσοδοι: S, S,, S Αρχικοποίηση: L = 0 (το τωρινό µήκος του LFSR) c(x) = 1 (το τωρινό πολυώνυµο σύνδεσης) p(x) = 1 (το πολυώνυµο σύνδεσης πριν την τελευταία αλλαγή µήκους) l = 1 (το l είναι ίσο µε k m, ο αριθµός των ολισθήσεων στην αναβάθµιση) d m = 1 (προηγούµενη discrepancy) for k = 1 to N d = S k + (υπολογισµός discrepancy) if (d = 0) (όχι αλλαγές στο πολυώνυµο) l = l + 1 else if (2L ) (όχι αλλαγή µήκους στην αναβάθµιση) ( ) = ( ) ( ) l = l + 1 else (αναβάθµιση του c µε αλλαγή µήκους) t(x) = c(x) (προσωρινή αποθήκευση) ( ) = ( ) ( ) L = k L p(x) = t(x) = l = 1 end if end if end for ~ 86 ~

87 Παρατηρούµε ότι τα δυο πιο σηµαντικά τµήµατα του αλγορίθµου είναι ο υπολογισµός της απόκλιση και η αναβάθµιση του πολυωνύµου σύνδεσης που στην τελική µορφή είναι το πολυώνυµο που ψάχνουµε. Για την περίπτωση της αναβάθµισης του πολυωνύµου c(x) ασχέτως αν πραγµατοποιείται αλλαγή µήκους η όχι, απαιτείται ένα κύκλωµα διαιρέτη-αντιστροφέα σαν και αυτό που περιγράφηκε στο σχήµα (2.7). Είναι επίσης κατανοητό ότι βάση της εξίσωσης το µονοπάτι στο οποίο συµµετέχει ο διαιρέτης είναι µεγάλο. εδοµένου ότι και το κύκλωµα του διαιρέτη έχει µεγάλο critical path είναι σκόπιµο ο αλγόριθµος να τροποποιηθεί κατά τέτοιον τρόπο ώστε να µην απαιτείται η χρήση του. Η ιδέα που θα χρησιµοποιήσουµε βασίζεται στην λογική της δηµιουργίας ενός νέου πολυωνύµου µε διαφορετικούς συντελεστές σε σχέση µε αυτό του αλγορίθµου που περιγράψαµε παραπάνω, αλλά µε τις ίδιες ρίζες. Αυτό που έχει σηµασία για την σωστή αποκωδικοποίηση είναι οι ρίζες του πολυωνύµου που θα υπολογισθούν στο επόµενο στάδιο και όχι το πολυώνυµο αυτό καθ εαυτό. Αυτό λοιπόν που κάνουµε προκειµένου να αποφύγουµε την διαίρεση είναι ο πολλαπλασιασµός του δεύτερου µέρους της εξίσωσης της αναβάθµισης, µε την σταθερή τιµή. Η µεταβλητή βέβαια µπορεί να αλλάξει βάση του αλγορίθµου και η αναβάθµιση µπορεί να γίνει περισσότερες από µια φορά. Στο τέλος το αποτέλεσµα θα είναι ένα πολυώνυµο c (x) = d d d c(x) = d c(x) όπου ωστόσο το θα είναι ένας σταθερός αριθµός, ενώ παρ όλες τις αλλαγές που µπορεί να υποστεί η µεταβλητή, στην διάρκεια του αλγορίθµου µπορεί να αλλάξει µία µόνο φορά σε κάθε επανάληψη σε συγκεκριµένο σηµείο και αφού έχει προηγηθεί η αναβάθµιση µε αποτέλεσµα να µην δηµιουργεί ουσιαστικό πρόβληµα. Ωστόσο το πολυώνυµο c(x) χρησιµοποιείται και στον υπολογισµό της discrepancy σε κάθε επανάληψη µε αποτέλεσµα να δηµιουργείται πρόβληµα στον υπολογισµό της µετά από κάθε αναβάθµιση του, πλην της αρχικής όπου η µεταβλητή έχει τιµή 1. Όταν λοιπόν προκύψει αναβάθµιση όπου η µεταβλητή έχει τιµή διάφορη από 1 τότε προκύπτει µια απόκλιση και µε αποτέλεσµα στην συνέχεια να γίνει λάθος σε περίπτωση που απαιτηθεί εκ νέου αναβάθµιση του πολυωνύµου σύνδεσης. Το πρόβληµα φαίνεται αν αναλύσουµε την σχέση αυτή λίγο περισσότερο. Στην αρχική υλοποίηση το πολυώνυµο c(x) έχει αρχική τιµή 1. Ο συντελεστής αυτός που αφορά στον σταθερό όρο δεν µπορεί να αλλάξει πουθενά από τον αλγόριθµο οπότε διαπιστώνουµε ότι πάντα το πολυώνυµο έχει ως σταθερό όρο την τιµή 1. Ωστόσο βάση της νέας αναβάθµισης ο σταθερός όρος δεν παραµένει 1 αλλά πολλαπλασιάζεται και αυτός µε την µεταβλητή. Η λύση λοιπόν στο πρόβληµα συνεπάγεται στην προσθήκη του συντελεστή στους υπολογισµούς ως εξής: d = S + c S = c S (4.7) Η σχέση αυτή ισχύει και για την αρχική περίπτωση. Είναι εύκολο να διαπιστωθεί ότι βάση αυτής της σχέσης η τιµή που προκύπτει για την discrepancy είναι πολλαπλάσια της αρχικής κατά που είναι και το επιθυµητό. Σε αυτό το σηµείο πρέπει να τονιστεί ότι η παραπάνω διαδικασία είναι απαραίτητη για τον υπολογισµό του νέου πολυωνύµου. H τιµή της απόκλιση πρέπει να είναι πολλαπλάσια αυτής που υπολογίζεται από τον αρχικό αλγόριθµο. Το γεγονός έγκειται στο ότι η αναβάθµιση µπορεί να γίνει περισσότερες τις µια φοράς ανάλογα και µε την διορθωτική ικανότητα και το πλήθος των επαναλήψεων πιο άµεσα. Όταν για πρώτη φορά αναβαθµιστεί το πολυώνυµο µε την µεταβλητή να έχει τιµή µεγαλύτερη του 1 προκύπτει για πρώτη φορά πολυώνυµο ( ) µε συντελεστές µεγαλύτερους κατά µια σταθερά σε σχέση µε τον αρχικό αλγόριθµο. Αν υπάρξει και άλλη φορά όπου θα απαιτηθεί εκ νέου αναβάθµιση του πολυωνύµου τότε οι υπολογισµοί στο 2 ο µέρος της εξίσωσης θα έχουν ως εξής: d c (x) d x p(x) = d d c(x) dd x p(x) = d d (c(x) dd x p(x)) ~ 87 ~

88 Με τo d συµβολίζουµε την µεταβλητή στην 2 η αναβάθµιση οµοίως και για την. ιαπιστώνουµε σε αυτό το σηµείο ότι προκύπτει τελικά ένα αποτέλεσµα πολλαπλάσιο σε σχέση µε αυτό του αρχικού αλγορίθµου κατά µια σταθερά που είναι και το επιθυµητό. Τελικά ο αλγόριθµος που προκύπτει βάση των παραπάνω τροποποιήσεων είναι ο παρακάτω. Είσοδοι:,,, Αρχικοποίηση: L = 0 (το τωρινό µήκος του LFSR) c(x) = 1 (το τωρινό πολυώνυµο σύνδεσης) p(x) = 1 (το πολυώνυµο σύνδεσης πριν την τελευταία αλλαγή µήκους) l = 0 (το l είναι ίσο µε k m, ο αριθµός των ολισθήσεων στην αναβάθµιση) d m = 1 (προηγούµενη discrepancy) for k = 1 to N d = (υπολογισµός νέας discrepancy) if (d = 0) (όχι αλλαγές στο πολυώνυµο) l = l + 1 else if (2L ) (όχι αλλαγή µήκους στην αναβάθµιση) l = l + 1 ( ) = ( ) ( ) (νέα αναβάθµιση) else (αναβάθµιση του c µε αλλαγή µήκους) t(x) = c(x) (προσωρινή αποθήκευση) l = l + 1 ( ) = ( ) ( ) (νέα αναβάθµιση) L = k L p(x) = t(x) = l = 1 end if end if ~ 88 ~

89 end for Σε αυτό το σηµείο πρέπει να αναφερθεί ότι υπάρχει ακόµα µία διαφορά σε σχέση µε την ανανέωση της τιµής l από τον αλγόριθµο. Αυτή η διαφορά πρακτικά δεν αλλάζει το αποτέλεσµα σε κάθε επανάληψη όσον αφορά τις 2 βασικές λειτουργίες, υπάρχει ωστόσο το ενδεχόµενο η τελική τιµή της να είναι διαφορετική σε σχέση µε τον αρχικό αλγόριθµο αλλά αυτό δεν επηρεάζει σε καµία περίπτωση την τελική τιµή του πολυωνύµου σύνδεσης. Η αλλαγή αυτή έχει κυρίως να κάνει µε θέµατα συγχρονισµού µεταξύ data path και FSM. Επιπλέον είναι σηµαντικό να αναφερθεί ότι όλες οι µεταβλητές και οι πράξεις που συµµετέχουν στους δυο βασικούς υπολογισµούς αφορούν στοιχεία του πεδίου επέκτασης GF(2 m ) σε αντίθεση µε τις άλλες µεταβλητές και πράξεις που γίνονται στο πεδίο των πραγµατικών (δυαδικών) αριθµών. Ενώ όπως αναφέρθηκε και στο κεφάλαιο 3 σε αυτά τα πεδία οι πράξεις της πρόσθεσης και της αφαίρεσης δεν έχουν διαφορά. Τέλος είναι ιδιαίτερα σηµαντικό να επισηµανθεί ότι η φύση του αλγορίθµου είναι τέτοια ώστε κατά τις αναβαθµίσεις όταν αυτές πραγµατοποιούνται να µην προκύπτουν όροι που να έχουν ως αποτέλεσµα ρίζες µε πολλαπλότητα. Αυτό είναι ιδιαίτερα σηµαντικό για την σωστή αποκωδικοποίηση και την λειτουργία των επόµενων δυο τµηµάτων που ακολουθούν Αρχιτεκτονική data path Η υλοποίηση της αρχιτεκτονικής αυτού του τµήµατος του αποκωδικοποιητή θα βασιστεί λοιπόν στον 2 ο αλγόριθµο που περιγράφηκε παραπάνω. Προτού όµως αναλύσουµε την λειτουργία και την αρχιτεκτονική του τµήµατος θα δείξουµε πως αυτή προέκυψε βάση του αλγορίθµου. Τα δύο βασικά σηµεία του αλγορίθµου που θα µας απασχολήσουν και θα καθορίσουν το data path είναι ο υπολογισµός της απόκλισης και η αναβάθµιση του πολυωνύµου σύνδεσης. Είναι σηµαντικό να αναφερθεί από τώρα ότι οι υπολογισµοί αυτοί δεν πραγµατοποιούνται στον ίδιο κύκλο ρολογιού. Οι αποφάσεις βάση των οποίων επιλέγεται ποια ενέργεια θα πραγµατοποιηθεί σε κάθε κύκλο λαµβάνονται από το FSM και θα αναλυθούν στο συγκεκριµένο σηµείο. εδοµένου ότι ξέρουµε την διορθωτική ικανότητα t του κώδικα και συνεπώς το µέγιστο πλήθος των ριζών που µπορούν να προκύψουν από το πολυώνυµο γνωρίζουµε άµεσα και ποιος είναι ο µεγαλύτερος βαθµός που µπορεί να πάρει. Για την αποθήκευση λοιπόν του πολυωνύµου σύνδεσης c(x), του προσωρινού αποθηκευτικού χώρου t(x), όπως επίσης και για την «προηγούµενη» απόκλιση που ως στοιχείο του πεδίου έχει µέγεθος m bits, χρησιµοποιούνται καταχωρητές του κατάλληλου µεγέθους. Σχετικά µε τα πολυώνυµα, αυτό που αποθηκεύεται είναι οι συντελεστές τους µε την κατάλληλη σειρά ανάλογα την δύναµη µε την οποία σχετίζονται. Οι συντελεστές είναι και αυτοί στοιχεία του πεδίου επέκτασης µε µέγεθος m bits. Για τον υπολογισµό της απόκλισης απαιτείται άθροιση όπως φαίνεται από τον τελεστή που χρησιµοποιείται στον αλγόριθµο και υλοποιείται µε ένα κατάλληλο πλέγµα από πύλες xor. Σε αυτήν την άθροιση συµµετέχουν γινόµενα µεταξύ του τωρινού πολυωνύµου σύνδεσης και των syndromes που προέρχονται από το προηγούµενο στάδιο. Για την αποθήκευση των syndromes µπορεί να χρησιµοποιηθεί ένας καταχωρητής ολίσθησης διπλάσιου πλήθους καταχωρητών από ότι είναι το πλήθος των syndromes µεταξύ των οποίων υπάρχουν πολυπλέκτες και η έξοδος του συνίσταται από την έξοδο των πολυπλεκτών από τους οποίους αποτελείται στο επιπλέον κοµµάτι. Η δοµή αυτή επιτρέπει τον εύκολο υπολογισµό του συγκεκριµένου τµήµατος που µοιάζει µε κυκλική συνέλιξη. Στην συνέχεια µε την χρήση πολλαπλασιαστών δηµιουργούνται τα κατάλληλα γινόµενα. Πριν την άθροιση αυτών των γινοµένων προηγείται ένα στάδιο από πολυπλέκτες όπου σχετίζεται µε τον υπολογισµό και πιο συγκεκριµένα µε τα όρια στον τελεστή. Ανάλογα µε τα όρια, από ένα άλλο κύκλωµα προκύπτουν τα κατάλληλα σήµατα επιλογής για τους πολυπλέκτες όπου επιτρέπουν τη διέλευση των γινοµένων όπως υπολογίστηκαν, σε διαφορετική περίπτωση εξέρχεται µηδενική τιµή από αυτούς και στην συνέχεια ακολουθεί η άθροιση. Σε αντίθεση µε το πολυώνυµο c(x), για την ~ 89 ~

90 αποθήκευση του πολυωνύµου σύνδεσης πριν την τελευταία αλλαγή µήκους p(x) χρησιµοποιείται ένας καταχωρητής ολίσθησης και ο λόγος είναι ότι για την υπολογισµό της νέας τιµής του πολυωνύµου σύνδεσης µετά από αναβάθµιση απαιτείται ο πολλαπλασιασµός x p(x). Την χρονική στιγµή όπου γίνεται η αναβάθµιση ή απαιτείται αύξηση βάση του αλγορίθµου της µεταβλητής l πραγµατοποιείται ολίσθηση στον καταχωρητή. Στην συνέχεια κάθε συντελεστής του νέου πολυωνύµου που προκύπτει πολλαπλασιάζεται µε την τιµή d που υπολογίστηκε προηγουµένως και προστίθεται (λόγω GF(2 m )) µε το γινόµενο d c(x) που υλοποιείται και αυτό µε τη χρήση πολλαπλασιαστών µεταξύ κάθε συντελεστή του πολυωνύµου c(x) και της µεταβλητής. Στο επόµενο σχήµα παρουσιάζεται αναλυτικά η αρχιτεκτονική του τµήµατος αυτού που θα χρησιµοποιηθεί και βασίζεται στις παραπάνω παρατηρήσεις. Σχήμα 4.6 : α) Αρχιτεκτονική του τμήματος υπολογισμού του πολυωνύμου εύρεσης λαθών, β) Καταχωρητής ολίσθησης για την αποθήκευση και τον υπολογισμό του ( ), γ) Καταχωρητής ολίσθησης των syndromes από την προηγούμενη βαθμίδα ~ 90 ~

91 Στην αρχιτεκτονική αυτή µπορούµε να διακρίνουµε τα δυο βασικά τµήµατα που υλοποιούν τους υπολογισµούς που αναλύθηκαν προηγουµένως. Στο τµήµα που υπολογίζεται η απόκλιση υπάρχει ο καταχωρητής όπου αποθηκεύεται η τιµή του πολυωνύµου σύνδεσης c(x). Αυτός τροφοδοτείται από έναν πολυπλέκτη 4 σε 1. Στην πρώτη είσοδο (00) υπάρχει η µηδενική τιµή για αρχικοποίηση µετά από γενικό reset στο σύστηµα, στην 2 (01) η τιµή 1 που αφορά στην αρχικοποίηση βάση του αλγορίθµου, στην τρίτη είσοδο (10) υπάρχει η τιµή που προκύπτει από το τµήµα της αναβάθµισης, ενώ στην τελευταία είσοδο (11) έχουµε ανατροφοδότηση από την έξοδο του καταχωρητή για την περίπτωση που δεν απαιτείται νέα εισαγωγή τιµής για το πολυώνυµο c(x). Η έξοδος του καταχωρητή τροφοδοτεί και το τµήµα της αναβάθµισης όπως θα διαπιστώσουµε αργότερα αλλά και τους πολλαπλασιαστές που χρησιµοποιούνται για τον υπολογισµό των γινοµένων του τελεστή πρόσθεσης Σ. Η δεύτερη είσοδος των πολλαπλασιαστών εισέρχεται από τον καταχωρητή ολίσθησης όπου αποθηκεύονται τα syndromes. Είναι σηµαντικό να επισηµανθεί ότι τα syndromes κατευθύνονται από το προηγούµενο στάδιο στον καταχωρητή διαµέσου του FSM. Ο καταχωρητής ολίσθησης όπως αναφέρθηκε έχει διπλάσιους καταχωρητές σε σχέση µε το πλήθος syndromes. Η έξοδος του αποτελείται από την έξοδο των πολυπλεκτών πριν από τους επιπλέον καταχωρητές. Ο συγκεκριµένος καταχωρητής ολίσθησης αποτελείται πιο συγκεκριµένα από καταχωρητές των m bits µεταξύ των οποίων υπάρχουν πολυπλέκτες 2 σε 1. Υπάρχει ένας ακόµα µεγαλύτερος πολυπλέκτης 2 σε 1 όπου τροφοδοτεί τους υπόλοιπους παράλληλα. Η µία είσοδος (0) του µεγάλου πολυπλέκτη συνδέεται µε το FSM και τροφοδοτείται µε τα syndromes από το προηγούµενο στάδιο, που τοποθετούνται στους πρώτους µισούς πολυπλέκτες ενώ στους άλλους µισούς από όπου προέρχεται η έξοδος του καταχωρητή ολίσθησης τοποθετούνται µηδενικά στοιχεία. Η άλλη είσοδος (1) προέρχεται από την έξοδο των καταχωρητών. Η συγκεκριµένη συνδεσµολογία προσφέρει την δυνατότητα της επιλογής του πότε θα πραγµατοποιείται ολίσθηση και πότε θα εισέρχονται νέα δεδοµένα από το FSM που εξαρτάται από τα 2 σήµατα επιλογής των πολυπλεκτών. εδοµένου ότι ο υπολογισµός της απόκλισης πραγµατοποιείται ανά 2 κύκλους ρολογιού επιθυµείται η διατήρηση της τιµής στο καταχωρητή για 1 κύκλο. Τέλος τα syndromes από το προηγούµενο στάδιο εισέρχονται στον καταχωρητή µε τέτοιο τρόπο ώστε στην πρώτη ολίσθηση που θα πραγµατοποιηθεί το 1 ο στοιχείο που θα εµφανιστεί στην έξοδο να είναι το. Η έξοδος των πολλαπλασιαστών στην συνέχεια συνδέεται µε πολυπλέκτες. Στην άλλη είσοδο των πολυπλεκτών υπάρχει η τιµή 0. Τα σήµατα επιλογής στους πολυπλέκτες προέρχεται από ένα άλλο κύκλωµα ανάλογα µε την τιµή της µεταβλητής l(l στον αλγόριθµο) από το FSM. Ο λόγος που χρησιµοποιούνται αυτά τα κυκλώµατα έχουν να κάνουν µε τα όρια στον τελεστή της άθροισης. Οι έξοδοι των πολυπλεκτών κατευθύνονται τελικά σε ένα πλέγµα από πύλες xor που γίνεται η τελική άθροιση και προκύπτει η τιµή d. Στην συνέχεια θα περιγραφεί το τµήµα που πραγµατοποιεί την αναβάθµιση. Σε αυτό το τµήµα υπάρχει ο καταχωρητής όπου διατηρείται η τιµή από προηγούµενο υπολογισµό απόκλιση. Ο καταχωρητής τροφοδοτείται και αυτός από έναν πολυπλέκτη 4 σε 1. Στην πρώτη είσοδο (00) υπάρχει µηδενική τιµή για αρχικοποίηση του συστήµατος µετά από reset. Στην δεύτερη είσοδο (01) υπάρχει η τιµή 1 που χρησιµοποιείται στην αρχικοποίηση βάση του αλγορίθµου. Στην τρίτη είσοδο (10) υπάρχει η τιµή που προκύπτει από το τµήµα του υπολογισµού της απόκλιση, διαµέσου ενός καταχωρητή, που πραγµατοποιήθηκε στον προηγούµενο κύκλο ενώ στην τελευταία είσοδο (11) του πολυπλέκτη υπάρχει ανατροφοδότηση από την έξοδο του καταχωρητή για την περίπτωση που δεν απαιτείται καµία αλλαγή στην τιµή της µεταβλητής. Επιπλέον και σε αυτό το τµήµα υπάρχει ένας καταχωρητής ολίσθησης ανάλογης λειτουργίας µε αυτόν που αποθηκεύει τα syndromes. Ο λόγος ύπαρξης του είναι η αποθήκευση ενός προηγούµενου πολυωνύµου σύνδεσης p(x) που χρησιµοποιείται στην διαδικασία της αναβάθµισης υλοποιώντας την πράξη x p(x). Αποτελείται και αυτός από καταχωρητές των m bits µεταξύ των οποίων υπάρχουν πολυπλέκτες 2 σε 1. Οι πολυπλέκτες αυτοί τροφοδοτούνται παράλληλα από έναν µεγαλύτερο πολυπλέκτη 4 σε 1 στην ~ 91 ~

92 συγκεκριµένη περίπτωση. Στην πρώτη είσοδο (00) υπάρχει η µηδενική τιµή και επιλέγεται σε περίπτωση γενικού reset στο σύστηµα. Στην δεύτερη είσοδο (01) υπάρχει η τιµή 1 που χρησιµοποιείται για την αρχικοποίηση βάση του αλγορίθµου. Η τρίτη είσοδος (10) τροφοδοτείται µέσω ενός καταχωρητή (t(x)) µε την τιµή του πολυωνύµου c(x), από το στάδιο υπολογισµού της απόκλισης, πριν την αναβάθµιση του. Η τέταρτη είσοδος (11) ανατροφοδοτείται µέσω των εξόδων των καταχωρητών σε περίπτωση που δεν απαιτείται νέα εισαγωγή τιµής από το εξωτερικό του καταχωρητή. Η ολίσθηση πραγµατοποιείται ανά 2 κύκλους, στον επόµενο κύκλο µετά τον υπολογισµό της απόκλισης. Ποια ενέργεια θα πραγµατοποιηθεί εξαρτάται από τα 3 συνολικά σήµατα επιλογής του καταχωρητή ολίσθησης που προέρχονται από το FSM. Τέλος οι έξοδοι του καταχωρητή ολίσθησης αποτελούνται από τις εξόδους των πολυπλεκτών του. Στην συνέχεια ακολουθούν δυο σειρές πολλαπλασιαστών. Στην µία είσοδο της πρώτης σειράς συνδέεται κάθε ένας από τους συντελεστές του πολυωνύµου ( ) και στην άλλη είσοδο συνδέεται η τιµή από τον αντίστοιχο καταχωρητή. Υπολογίζεται µε αυτόν τον τρόπο ο όρος d c(x). Στην µία είσοδο της δεύτερης σειράς συνδέεται κάθε συντελεστής του όρου x p(x) από τον καταχωρητή ολίσθησης και στην άλλη είσοδο συνδέεται διαµέσου ενός καταχωρητή η τιµή d που υπολογίστηκε στον προηγούµενο κύκλο από το στάδιο υπολογισµού της απόκλισης και συνεπώς υπολογίζεται ο όρος dx p(x). Για τον τελικό υπολογισµό απαιτείται η άθροιση των συντελεστών της ίδιας δύναµης των δυο πολυωνύµων που πραγµατοποιείται µε τη χρήση πυλών xor 2 εισόδων των m bits. Με αυτόν τον τρόπο προκύπτει η νέα αναβαθµισµένη τιµή του πολυωνύµου σύνδεσης c(x). Η έξοδος αυτή συνδέεται στην αντίστοιχη είσοδο του πολυπλέκτη στο προηγούµενο τµήµα αυτού του σταδίου. Η τελική έξοδος όλης της αρχιτεκτονικής αυτού του τµήµατος προέρχεται από την έξοδο του καταχωρητή όπου αποθηκεύεται το πολυώνυµο c(x). Αφού αναλύθηκε η αρχιτεκτονική θα παρουσιαστεί και η λειτουργία του τµήµατος βήµα προς βήµα. 1. Αρχικά γίνεται η αρχικοποίηση όλων καταχωρητών συµπεριλαµβανοµένων και των καταχωρητών ολίσθησης. Ενώ οι πολυπλέκτες 4 σε 1 διαβάζουν τιµές από την είσοδο Στην συνέχεια περνάµε σε κατάσταση αρχικοποίησης αλγορίθµου όπου οι πολυπλέκτες που αναφέρθηκαν παραπάνω διαβάζουν τις εισόδους από την είσοδο 01 ενώ οι πολυπλέκτες στον καταχωρητές ολίσθησης όπου αποθηκεύεται το πολυώνυµο x p(x) διαβάζουν την τιµή αρχικοποίησης από την είσοδο Πριν ξεκινήσουν οι υπολογισµοί για την εύρεση του πολυωνύµου c(x), το κύκλωµα υπολογισµού των syndromes µέσω του κατάλληλου σήµατος ειδοποιεί την παρούσα βαθµίδα για το τέλος των υπολογισµών του και αποστέλλει τα δεδοµένα, τα οποία αποθηκεύονται στον αντίστοιχο καταχωρητή ολίσθησης. Ο συγκεκριµένος καταχωρητής ολίσθησης διαβάζει τα δεδοµένα από την είσοδο 0 του µεγάλου πολυπλέκτη, ενώ και οι µικροί φορτώνονται παράλληλα από την είσοδο 0 από την έξοδο του πρώτου πολυπλέκτη. 4. Στην συνέχεια ξεκινάνε οι υπολογισµοί πρώτα για την εύρεση της απόκλισης. Στον καταχωρητή ολίσθησης όπου είναι αποθηκευµένα τα syndromes πραγµατοποιείται ολίσθηση µε τους µικρούς πολυπλέκτες να διαβάζουν από την είσοδο 1. Ανάλογα µε την τιµή του L από το FSM στέλνονται οι κατάλληλες τιµές στα σήµατα επιλογής στους πολυπλέκτες µετά από τους πολλαπλασιαστές και τελικά υπολογίζεται η τιµή που θέλουµε. 5. Ανάλογα µε την τιµή που υπολογίστηκε, βάση του FSM υπάρχουν 3 διαφορετικές δυνατότητες: α) να γίνει µόνο ολίσθηση στο πολυώνυµο p(x) µέσω της εισόδου 1 των εσωτερικών πολυπλεκτών, β) να πραγµατοποιηθεί αναβάθµιση του πολυωνύµου σύνδεσης χωρίς ολίσθηση του πολυωνύµου p(x). Σε αυτήν την περίπτωση χρησιµοποιείται η είσοδος 0 των εσωτερικών πολυπλεκτών. γ) Η τελευταία περίπτωση είναι να πραγµατοποιηθεί αναβάθµιση του πολυωνύµου σύνδεσης µε ολίσθηση του πολυωνύµου p(x). Σε αυτήν την ~ 92 ~

93 περίπτωση επιπλέον γίνεται αναβάθµιση της τιµής της µεταβλητής d µε τον αντίστοιχο πολυπλέκτη να διαβάζει από την είσοδο Η διαδικασία που περιγράφηκε στα βήµατα 4, 5 επαναλαµβάνεται ανάλογα µε την διορθωτική ικανότητα του κώδικα (2t επαναλήψεις). Μετά την ολοκλήρωση των υπολογισµών και την εύρεση της τελικής τιµής του πολυωνύµου c(x), η διαδικασία µπορεί να ξεκινήσει πάλι από την αρχή Λειτουργία FSM Μετά την παρουσίαση της αρχιτεκτονικής του data path θα ακολουθήσει η παρουσίαση της λειτουργίας του FSM όπου θα γίνει αναφορά στα σήµατα που δέχεται και παράγει και τους ακριβείς χρονισµούς του. Το FSM παράγει τα σήµατα που ελέγχουν όλους τους πολυπλέκτες, εκτός από αυτούς µετά τους πολλαπλασιαστές στο τµήµα υπολογισµού της τιµής d, και που πραγµατοποιούν την αρχικοποίηση σε όλους τους καταχωρητές. Επίσης παράγει τα σήµατα που ελέγχουν το κύκλωµα που είναι υπεύθυνο για τα όρια του τελεστή του αλγορίθµου. Το FSM δέχεται το σήµα από την προηγούµενη βαθµίδα που δηλώνει την ολοκλήρωση του υπολογισµού των syndromes αλλά και την τιµή της απόκλισης ώστε να επιλέξει ποια συνθήκη if του αλγορίθµου θα πραγµατοποιηθεί. Τέλος αναφέρθηκε και προηγουµένως ότι τα δεδοµένα από την προηγούµενη βαθµίδα µεταφέρονται στο data path µέσω του FSM. Στο σχήµα που ακολουθεί παρουσιάζεται το διάγραµµα καταστάσεων του FSM καθώς και τα σήµατα των εισόδων και εξόδων του. Σχήμα 4.7 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM του τμήματος υπολογισμού του πολυωνύμου εύρεσης λαθών Τα σήµατα που θα µας απασχολήσουν ως είσοδοι στο FSM είναι: το rst το γενικό reset του συστήµατος, το σήµα en_in που δηλώνει την ολοκλήρωση της διαδικασίας της προηγούµενης βαθµίδας, το σήµα eisodos που αναφέρεται στην απόκλιση που υπολογίστηκε από το αντίστοιχο τµήµα του data path και τέλος το σήµα syndromes που αποτελεί τα δεδοµένα που υπολογίστηκαν από ~ 93 ~

94 την προηγούµενη βαθµίδα. Οι έξοδοι του FSM είναι: το σήµα rst_out που αποτελεί το εσωτερικό reset που χρησιµοποιείται στην αρχικοποίηση όλων των καταχωρητών, τα σήµατα enable και timer_out (στην παρουσίαση των καταστάσεων το συγκεκριµένο σήµα παρουσιάζεται ως l) που επιτρέπουν την λειτουργία του κυκλώµατος που συµµετέχει στον υπολογισµό της απόκλισης παράγοντας τα σήµατα επιλογής για τους κατάλληλους πολυπλέκτες, τα σήµατα sel_s_input και sel_s_shift που αποτελούν τα σήµατα επιλογής στον καταχωρητή ολίσθησης όπου αποθηκεύονται τα syndromes ελέγχοντας την είσοδο από όπου τροφοδοτείται και την λειτουργία της ολίσθησης αντίστοιχα, τα σήµατα sel_p_input και sel_p_shift που αποτελούν τα σήµατα επιλογής του καταχωρητή ολίσθησης όπου αποθηκεύεται το πολυώνυµο p(x) και ελέγχουν την είσοδο από όπου τροφοδοτείται και την λειτουργία της ολίσθησης τα σήµατα sel2_c, sel2_dm_input που ελέγχουν τους πολυπλέκτες που τροφοδοτούν τους καταχωρητές όπου αποθηκεύονται το πολυώνυµο c(x) και η µεταβλητή d και τέλος το σήµα en_out που δηλώνει την ολοκλήρωση της διαδικασίας διόρθωσης µε την έξοδο του κυκλώµατος να έχει έγκυρα δεδοµένα. Λόγω πολυπλοκότητας αρχικά θα αναφέρουµε τις καταστάσεις του FSM και τις τιµές στα σήµατα που παράγουν και στην συνέχεια θα δείξουµε πως και πότε γίνονται οι µεταβάσεις από την µία κατάσταση στην άλλη. Η πρώτη κατάσταση που θα εξετάσουµε είναι η state00 και προκύπτει µετά από γενικό reset στο κύκλωµα και µετά το τέλος της διαδικασίας υπολογισµού. Σε αυτήν την κατάσταση το σήµα rst_out παίρνει την τιµή 1 και αρχικοποιεί όλους τους καταχωρητές. Τα σήµατα sel_s_input, sel_s_shift έχουν τιµή 0 και ο αντίστοιχος καταχωρητής ολίσθησης αρχικοποιείται µε την µηδενική τιµή. Τα σήµατα sel_p_input, sel_p_shift παίρνουν τις τιµές 01, 0 αντίστοιχα µε τον αντίστοιχο καταχωρητή ολίσθησης να αρχικοποιείται στην τιµή 1 για το πολυώνυµο p(x). Τα σήµατα sel2_c, sel_dm_input παίρνουν την τιµή 01 και φορτώνουν τους αντίστοιχους καταχωρητές µε την τιµή αρχικοποίησης 1 για το πολυώνυµο c(x) και την µεταβλητή d βάση του αλγορίθµου. Ο µετρητής που υπάρχει αρχικοποιείται στο 0 όπως και η µεταβλητή l που ελέγχει το όριο του τελεστή άθροισης. Η επόµενη κατάσταση που θα αναλύσουµε είναι η state0. Πρόκειται για µία µεταβατική κατάσταση όπου αναµένεται το σήµα en_in και τα δεδοµένα που υπολογίστηκαν από την προηγούµενη βαθµίδα για την εκκίνηση των υπολογισµών. Τα σήµατα είναι τα ίδια όπως στην προηγούµενη κατάσταση που περιγράφηκε µε µοναδική διαφορά το σήµα rst_out που παίρνει τιµή 0 µε αποτέλεσµα οι καταχωρητές να βρίσκονται σε κατάσταση κανονικής λειτουργία. Στην συνέχεια θα αναλυθούν οι καταστάσεις στις οποίες πραγµατοποιούνται οι υπολογισµοί. Πρώτη από αυτές είναι η state1 κατά την διάρκεια της οποίας πραγµατοποιείται ο υπολογισµός της απόκλισης. Το σήµα enable παίρνει την τιµή 1 επιτρέποντας την λειτουργία του κυκλώµατος που σχετίζεται µε τα όρια του τελεστή ενώ η µεταβλητή l διατηρεί την τιµή της. Τα σήµατα sel2_c, sel_dm_input έχουν τιµή 11 διατηρώντας την τιµή που είχαν προηγουµένως διαβάζοντας από την είσοδο µε την ανατροφοδότηση. Τα σήµατα sel_s_input, sel_s_shift παίρνουν τιµή 1 και ο καταχωρητής ολίσθησης πραγµατοποιεί ολίσθηση των τιµών των syndromes που έχει. Το σήµα sel_p_shift έχει τιµή 0 και πραγµατοποιείται ολίσθηση στον αντίστοιχο καταχωρητή. Το σήµα sel_p_input που σχετίζεται µε την είσοδο από όπου διαβάζει δεδοµένα ο καταχωρητής έχει την τιµή 11 εφόσον βρισκόµαστε στην αρχή του υπολογισµού η 10 εάν προερχόµαστε από την κατάσταση state4. Στην δεύτερη περίπτωση γίνεται αναβάθµιση της τιµής του πολυωνύµου p(x) από την προηγούµενη τιµή του c(x). Τέλος από αυτήν την κατάσταση ο µετρητής αρχίζει να αυξάνεται κατά 1 σε κάθε κύκλο. ~ 94 ~

95 Μετά από την κατάσταση state1 ανάλογα µε κάποιες προϋποθέσεις που θα αναλυθούν αργότερα µπορούµε να καταλήξουµε σε µία από τις καταστάσεις state2, state3, state4. Η κατάσταση που θα αναλυθεί στην συνέχεια είναι η state2. Σε αυτήν την κατάσταση δεν πραγµατοποιείται καµία αναβάθµιση στο πολυώνυµο c(x) και στην µεταβλητή αλλά ολίσθηση στο p(x). Συνεπώς τα σήµατα sel2_c, sel_dm_input, sel_p_shift, sel_p_input έχουν τιµές 11, 11, 1, 11 αντίστοιχα. Το σήµα enable έχει την τιµή 0 καθώς το συγκεκριµένο κύκλωµα που ελέγχει δεν απαιτείται να λειτουργεί σε αυτόν τον κύκλο. Ο καταχωρητής που είναι αποθηκευµένα τα syndromes διατηρεί την τιµή του µε τα σήµατα sel_s_shift και sel_s_input να παίρνουν τιµές 0, 1 αντίστοιχα. Τέλος σε αυτήν την κατάσταση ο µετρητής και η µεταβλητή l διατηρούν τις τιµές που έχουν. Η κατάσταση που θα εξεταστεί στην συνέχεια είναι η state3. Σε αυτήν την κατάσταση πραγµατοποιείται αναβάθµιση του πολυωνύµου σύνδεσης c(x), µε τον καταχωρητή του να τροφοδοτείται από την είσοδο του πολυπλέκτη που συνδέεται µε τον έξοδο από το τµήµα αναβάθµισης, ολίσθηση στο πολυώνυµο p(x) αλλά καµία αναβάθµιση στην µεταβλητή d. Για αυτό το λόγο τα σήµατα sel2_c, sel_dm_input, sel_p_shift, sel_p_input έχουν τιµές 10, 11, 1, 11 αντίστοιχα. Και σε αυτήν την περίπτωση δεν απαιτείται η λειτουργία του τµήµατος της απόκλισης µε αποτέλεσµα να πρέπει να διατηρηθεί η τιµή των syndromes στον αντίστοιχο καταχωρητή ολίσθησης. Συνεπώς τα σήµατα sel_s_shift, sel_s_input έχουν τιµές 0, 1 αντίστοιχα διαβάζοντας από την είσοδο της ανατροφοδότησης ενώ και το σήµα enable παίρνει την τιµή 0. Τέλος και σε αυτήν την κατάσταση ο µετρητής και η µεταβλητή l διατηρούν την τιµή τους. Η τελευταία κατάσταση που θα περιγραφεί είναι η state4. Σε αυτήν την κατάσταση πραγµατοποιείται αναβάθµιση του πολυωνύµου c(x), όπως και στην κατάσταση state3, η µεταβλητή d παίρνει την τιµή d που υπολογίστηκε στον προηγούµενο κύκλο ενώ πραγµατοποιείται και ενηµέρωση του πολυωνύµου p(x) µε την τιµή του πολυωνύµου c(x) πριν την αναβάθµισή του. Συνεπώς τα σήµατα sel2_c, sel_dm_input, sel_p_shift, sel_p_input παίρνουν τις τιµές 10, 10, 1, 10 αντίστοιχα. Το τµήµα υπολογισµού της απόκλισης δεν χρησιµοποιείται σε αυτόν τον κύκλο µε αποτέλεσµα το σήµα enable να παίρνει την τιµή 0 αλλά και ο καταχωρητής ολίσθησης όπου είναι αποθηκευµένα τα syndromes διατηρεί την τιµή του µε τα σήµατα sel_s_shift, sel_s_input να έχουν τιµές 0, 1 αντίστοιχα. Τέλος ο µετρητής l διατηρεί την τιµή ενώ η µεταβλητή l αποκτά νέα τιµή και ισχύει l = timer l. Σε αυτό το σηµείο και προτού περιγραφούν οι µεταβάσεις µεταξύ των καταστάσεων θα αναφερθεί ο συσχετισµός των καταστάσεων µε τον αλγόριθµο που χρησιµοποιείται. Η κατάσταση state1 αναφέρεται στην φάση κατά την οποία πραγµατοποιείται ο υπολογισµός της απόκλισης από τον αλγόριθµο. Μόνο σε αυτό το στάδιο αυξάνει τιµή ο µετρητής καθώς οι επαναλήψεις του αλγορίθµου εξαρτώνται από το πλήθος των syndromes και µεταφράζονται σε αντίστοιχο πλήθος υπολογισµών για αποκλίσεις. Ανάλογα µε την τιµή d που υπολογίζεται καθώς και την τιµή της µεταβλητής L υπάρχουν 3 διαφορετικές περιπτώσεις που σχετίζονται µε τις συνθήκες if του αλγορίθµου. Η περίπτωση όπου ισχύει d = 0 σχετίζεται µε την κατάσταση state2, η κατάσταση state3 σχετίζεται µε την συνθήκη d 0 (2L k) όπου πραγµατοποιείται µόνο αναβάθµιση του πολυωνύµου σύνδεσης και η κατάσταση state4 σχετίζεται µε την τελική συνθήκη else όπου πραγµατοποιείται αναβάθµιση και των 2 πολυωνύµων p(x) και c(x) καθώς και της µεταβλητής d. Με βάση αυτές τις παρατηρήσεις γίνονται και οι µεταβάσεις µεταξύ των καταστάσεων. Στην κατάσταση state00 καταλήγουµε µετά από γενικό reset στο σύστηµα και µετά το τέλος της διαδικασίας των υπολογισµών. Στον επόµενο κύκλο πηγαίνουµε στην κατάσταση state0 όπου πραγµατοποιούνται όλες οι αρχικοποιήσεις βάση του αλγορίθµου. Παραµένουµε σε αυτήν την κατάσταση έως ότου το σήµα en_in από την προηγούµενη βαθµίδα αποκτήσει την τιµή 1. Τότε οι ~ 95 ~

96 τιµές των syndromes που υπολογίστηκαν από το προηγούµενο στάδιο µέσω της εξόδου exodos του FSM τροφοδοτούν το data path. Μόλις ικανοποιηθεί αυτή η συνθήκη γίνεται µετάβαση στην κατάσταση state1 όπου και πραγµατοποιείται ο υπολογισµός της απόκλισης. Ανάλογα µε την τιµή που τελικά υπολογίστηκε και τη µέχρι στιγµής τιµή της µεταβλητής L (παραπάνω αναφέρθηκε ως l) στον επόµενο κύκλο καταλήγουµε σε µία από τις καταστάσεις state2, state3, state4 όπου σε κάθε µία πραγµατοποιούνται οι ενέργειες που περιγράφηκαν παραπάνω. Στον επόµενο κύκλο σε όποια και από τις 3 παραπάνω καταστάσεις και αν βρισκόµαστε πραγµατοποιείται µετάβαση στην κατάσταση state1 και η διαδικασία συνεχίζεται κανονικά. Αυτές οι µεταβάσεις συνεχίζονται µέχρι ο µετρητής στην κατάσταση state1 να αποκτήσει την τιµή 2t. Τότε ανάλογα µε τις συνθήκες πραγµατοποιείται µετάβαση για τελευταία φορά στον επόµενο κύκλο σε µία από τις καταστάσεις: state2, state3, state4. Σε όποια από αυτές τις καταστάσεις και αν βρισκόµαστε το σήµα en_out παίρνει την τιµή 1 και ειδοποιεί την επόµενη βαθµίδα ότι οι υπολογισµοί τελείωσαν και υπάρχουν έγκυρα δεδοµένα στην έξοδο του κυκλώµατος. Στον επόµενο κύκλο πραγµατοποιείται µετάβαση στην κατάσταση state00, ανεξαρτήτως της κατάστασης στην οποία βρισκόµασταν και αναµένουµε εκ νέου το σήµα en_in να πάρει την τιµή 1 και µια νέα διαδικασία υπολογισµών να ξεκινήσει Υλοποίηση shortening Σε αυτό το σηµείο θα εξετάσουµε τη συµπεριφορά της βαθµίδας σχετικά µε την δυνατότητα για τη χρήση shortening. Η συγκεκριµένη βαθµίδα είναι τελείως αποδεσµευµένη σχετικά µε τη χρήση του shortening. Το γεγονός ότι έχει µειωθεί το µήκος της κωδικής λέξης κατά s σύµβολα (bits) δεν επηρεάζει καθόλου την λειτουργία του συγκεκριµένου τµήµατος. Η µείωση της κωδικής λέξης κατά s σύµβολα (bits) δεν επηρεάζει την διορθωτική ικανότητα του κώδικα δεδοµένου ότι δεν µειώνονται τα parity bits. Το αποτέλεσµα είναι ότι βάση της διορθωτικής ικανότητας προκύπτει το ίδιο συγκεκριµένο πλήθος από syndromes σε κάθε περίπτωση που αποτελούν είσοδοι σε αυτήν την βαθµίδα και δεν είναι τίποτα άλλο από τιµές πολυωνύµων των m bits. Το τελικό συµπέρασµα που προκύπτει είναι ότι η βαθµίδα παραµένει ως έχει είτε πραγµατοποιείται shortening είτε όχι, αφού η διορθωτική ικανότητα του κώδικα και οι είσοδοι δεν αλλάζουν Γενικά χαρακτηριστικά Τελικά σε αυτό το στάδιο απαιτούνται 4t κύκλοι ρολογιού σε κάθε περίπτωση για την ολοκλήρωση των υπολογισµών. Ουσιαστικά απαιτούνται 2t επαναλήψεις των 2 κύκλων. Στον πρώτο κύκλο κάθε επανάληψης γίνεται ο υπολογισµός της απόκλισης και στον δεύτερο η κατάλληλη ενέργεια σχετικά µε τα πολυώνυµα c(x), p(x) και τη µεταβλητή d. Λόγω αυτής της ιδιαιτερότητας η τεχνική του unfold δεν ενδείκνυται στην συγκεκριµένη περίπτωση. Η µόνη βελτίωση που θα µπορούσε να γίνει αφορά σε κάποια ιδιαιτερότητα των δυαδικών κωδικών. Κάθε δεύτερος υπολογισµός της απόκλισης έχει µηδενική τιµή µε αποτέλεσµα να γνωρίζουµε εκ των προτέρων την επόµενη κατάσταση. Αυτό θα µείωνε τους κύκλους που απαιτούνταν σε 3t ωστόσο προτιµήθηκε η γενική περίπτωση για λόγους ελέγχου σωστής λειτουργίας εξαιτίας αυτής της ιδιαιτερότητας, ενώ και η µείωση κατά t των κύκλων λειτουργίας για την διορθωτική ικανότητα των κωδικών που θα χρησιµοποιηθούν δεν θα αποφέρει σηµαντικά οφέλη. Γενικά για την περίπτωση δυαδικών κωδικών ο αλγόριθµος των Berlekamp Massey είναι από τους πιο απλούς και αποδοτικούς µε την συγκεκριµένη σχεδίαση να εξασφαλίζει υψηλή συχνότητα λειτουργίας και λίγο υλικό αν και κάπως αυξηµένη πολυπλοκότητα Αποκωδικοποιητής Υπολογισµός ριζών µε τη µέθοδο Chien Search Σε αυτήν την ενότητα θα παρουσιάσουµε το τρίτο τµήµα από το οποίο αποτελείται ο αποκωδικοποιητής που είναι το κύκλωµα υπολογισµού των ριζών του πολυωνύµου εύρεσης λαθών. ~ 96 ~

97 Αλγόριθµος Το επόµενο βήµα µετά την ολοκλήρωση της διαδικασίας του υπολογισµού του πολυωνύµου εύρεσης λαθών, Λ(x) = Π(1- Χ l x) = Λ ν x v + Λ ν-1 x v Λ 1 x + Λ 0, είναι η εύρεση των ριζών του. Όπως έχει ήδη αναφερθεί σε προηγούµενο κεφάλαιο για τις ρίζες του πολυωνύµου ισχύει ότι x = X -1 l. Η αντιστροφή λοιπόν αυτής της τιµής δείχνει τη θέση όπου βρίσκεται πιθανό λάθος στην λέξη που εισήλθε στον αποκωδικοποιητή η εύρεση λοιπόν των ριζών αποτελεί κοµβικό σηµείο. Γενικά υπάρχουν αλγόριθµοι µε τη χρήση των οποίων υπάρχει η δυνατότητα παραγοντοποίησης του πολυωνύµου και συνεπώς της εύρεσης των ριζών του. Οι ρίζες του πολυωνύµου βέβαια αναζητούνται στο πεδίο GF(2 m ). Τα πεδία Galois όπως αναφέρθηκε και προηγουµένως είναι πεπερασµένα και συνεπώς υπάρχει η δυνατότητα για εξαντλητικό έλεγχο όλων των στοιχείων του πεδίου ως πιθανές ρίζες του πολυωνύµου. Αυτή είναι και η µέθοδος που θα χρησιµοποιηθεί και ονοµάζεται έρευνα κατά Chien (Chien search). Γενικά η συγκεκριµένη µέθοδος αν και εξαντλητική, για το µέγεθος της κωδικής λέξης και του πεδίου επέκτασης που χρησιµοποιούνται στην πράξη είναι πολύ αποτελεσµατική και λιγότερο πολύπλοκη σε σχέση µε άλλες αλγεβρικές µεθόδους που υπάρχουν. Υπολογίζουµε συνεπώς την τιµή του Λ(x) για κάθε µη µηδενικό στοιχείο του πεδίου µε τη σειρά: x = 1, x = α,, x =. Είναι σηµαντική η επισήµανση ότι ο βαθµός του πολυωνύµου δείχνει την διορθωτική ικανότητα του κώδικα που συµβολίζεται µε t και εξαρτάται από το πλήθος των parity bits. Άρα έχουµε: Λ(1) = Λ 0 + Λ 1 (1) + Λ 2 (1) Λ t (1) t Λ(α) = Λ 0 + Λ 1 (α) + Λ 2 (α) Λ t (α) t Λ( ) = 1 + Λ 1 ( ) + Λ 2 ( ) 2 + Λ t ( ) t. Όταν το αποτέλεσµα είναι 0 για κάποιο από τα στοιχεία του πεδίου τότε το συγκεκριµένο στοιχείο αποτελεί ρίζα του πολυωνύµου. Η λειτουργία του συγκεκριµένου τµήµατος έχει οµοιότητες µε το τµήµα των syndromes και θα µπορούσαµε να χρησιµοποιήσουµε µια ανάλογη υλοποίηση και σε επίπεδο αλγορίθµου αλλά και αρχιτεκτονικής. Ωστόσο θα χρησιµοποιηθεί µια κάπως διαφορετική προσέγγιση. Η σχέση που θα χρησιµοποιηθεί για την υλοποίηση του υπολογισµού βασίζεται στην παρατήρηση ότι, για τον υπολογισµό της τιµής του πολυωνύµου για το επόµενο στην σειρά στοιχείο α j+1 του πεδίου επέκτασης GF(2 m ) χρησιµοποιείται ο υπολογισµός που έγινε για το προηγούµενο στοιχείο α j του πεδίου ως εξής: Λ( ) = Λ 0 + Λ 1 ( ) + Λ 2 ( ) Λ t ( ) t =, +, +, , Λ( ) = Λ 0 + Λ 1 ( ) + Λ 2 ( ) Λ t ( ) t = Λ 0 + Λ 1 ( )α + Λ 2 ( ) 2 α Λ t ( ) t α t =, +, +, , =, +, +, , ~ 97 ~

98 Όπου, =, και, =, για 0 i 2 και 0 < j t. Το αποτέλεσµα είναι ότι η συγκεκριµένη προσέγγιση έχει χαµηλές απαιτήσεις σε υλικό Αρχιτεκτονική data path Η υλοποίηση σε αρχιτεκτονική του τµήµατος υπολογισµού των ριζών του πολυωνύµου εύρεσης λαθών θα βασιστεί λοιπόν στις σχέσεις: Λ( ) =, +, +, ,, =,, =,,, = (4.8), =,,, =, 0 i 2 και 0 < j t Αρχικά θα αναλύσουµε τις παραπάνω σχέσεις για να δούµε πως θα προκύψει η αρχιτεκτονική που θα επιτελέσει την λειτουργία της εύρεσης ριζών πολυωνύµου. Θα ξεκινήσουµε από την τελευταία από τις 3 σχέσεις. Η σχέση αυτή δηλώνει σε πρώτη φάση ότι κάθε έλεγχος ενός νέου στοιχείου ως υποψηφίας ρίζας του πολυωνύµου σχετίζεται άµεσα µε τον υπολογισµό που έγινε για το αµέσως προηγούµενο στοιχείο του πεδίου επέκτασης το οποίο εξετάζουµε. Πιο συγκεκριµένα οι όροι, που χρησιµοποιούνται αποτελούν το γινόµενο των συντελεστών του πολυωνύµου µε το στοιχείο που εξετάζουµε ως ρίζα υψωµένο στην κατάλληλη δύναµη. Οι συντελεστές αυτοί είναι σε πλήθος t + 1 όπου t είναι η διορθωτική ικανότητα του κώδικα. Η αναβάθµιση για την τιµή του συντελεστή για το επόµενο στοιχείο πραγµατοποιείται µε την χρήση πολλαπλασιαστών. Ο πολλαπλασιασµός γίνεται µεταξύ του προηγούµενου υπολογισµένου συντελεστή και ενός σταθερού στοιχείου του πεδίου. Κάθε ένα από τα t + 1 τµήµατα χρησιµοποιεί ένα διαφορετικό στοιχείο του πεδίου για πολλαπλασιασµό βάση του αλγορίθµου. Η δεύτερη σχέση δηλώνει την αρχική τιµή των συντελεστών που χρησιµοποιούνται, για τον υπολογισµό της πρώτης τιµής που αντιστοιχεί στον έλεγχο ως υποψηφίας ρίζας του στοιχείου α 0 = 1. Αυτοί είναι και οι πρώτοι συντελεστές που θα χρησιµοποιηθούν στην φάση της αναβάθµισης για την εύρεση των επόµενων που αντιστοιχούν στο στοιχείο α. Είναι φανερό ότι αυτοί οι συντελεστές δεν άλλοι από τους συντελεστές του πολυωνύµου εύρεσης λαθών όπως αυτό υπολογίστηκε από το προηγούµενο τµήµα του αποκωδικοποιητή. Από την στιγµή που έχουν υπολογιστεί οι συντελεστές προκειµενου να δούµε αν το στοιχείο α i του πεδίου που αντιστοιχεί σε αυτούς, είναι ρίζα του πολυωνύµου, αρκεί να γίνει πρόσθεση µεταξύ αυτών των συντελεστών στο πεδίο GF(2 m ) που εξετάζουµε όπως δηλώνει και η πρώτη σχέση. Εάν η τιµή που θα προκύψει είναι η µηδενική τότε το στοιχείο που ελέγχθηκε αποτελεί ρίζα του πολυωνύµου εύρεσης λαθών. Είναι φανερό ότι ανάλογα µε τον βαθµό του πολυωνύµου που υπολογίστηκε που δεν υπερβαίνει το t τόσες είναι το πολύ οι ρίζες που µπορούν να βρεθούν σε αυτό το πεδίο. Στο επόµενο σχήµα παρουσιάζεται η αρχιτεκτονική του κυκλώµατος υπολογισµού των ριζών που θα χρησιµοποιηθεί και είναι βασισµένη στις παραπάνω παρατηρήσεις. ~ 98 ~

99 Σχήμα 4.8 : Αρχιτεκτονική του τμήματος Chien search Σε αυτήν την αρχιτεκτονική διακρίνουµε τα t τµήµατα που αντιστοιχούν στην αναβάθµιση των συντελεστών όπως αυτή αναφέρθηκε παραπάνω. Υπάρχουν t και όχι t + 1 τµήµατα για το λόγο ότι ο πρώτος συντελεστής, πρακτικα παραµενει ως εχει καθ όλη την διάρκεια του υπολογισµού όπως φαίνεται και από τις εξισώσεις (4.8). Κάθε τέτοιο τµήµα αποτελείται από έναν πολλαπλασιαστή, έναν πολυπλέκτη και έναν καταχωρητή. Ο πολλαπλασιαστής χρησιµοποιείται για την αναβάθµιση των συντελεστών που αντιστοιχούν σε µια διαφορετική τιµή του πεδίου που ελέγχεται ως ρίζα. Κάθε πολλαπλασιαστής έχει µια διαφορετική σταθερή είσοδο α i βάση της οποίας γίνεται η αναβάθµιση ενώ η άλλη είσοδος προέρχεται από τον πολυπλέκτη. Η έξοδος του συνδέεται µε τον αντίστοιχο καταχωρητή όπου και διατηρείται η τιµή που υπολογίστηκε, για να χρησιµοποιηθεί στον επόµενο κύκλο όπου και θα προκύψει ο νέος συντελεστής. Η έξοδος του καταχωρητή συνδέεται µε τον πολυπλέκτη. Η άλλη είσοδος του πολυπλέκτη προέρχεται από την έξοδο του προηγούµενου τµήµατος του αποκωδικοποιητή που υπολογίζει τους συντελεστές του πολυωνύµου εύρεσης λαθών. Η λειτουργία του πολυπλέκτη αφορά στον έλεγχο του πρώτου στοιχείου α 0 = 1 του πεδίου ως υποψήφια ρίζα όπου απαιτούνται οι συντελεστές όπως προκύπτουν από το προηγούµενο τµήµα του αποκωδικοποιητή. Σε διαφορετική περίπτωση χρησιµοποιείται η άλλη είσοδος του πολυπλέκτη. Οι έξοδοι των πολλαπλασιαστών καθενός από τα t τµήµατα εκτός από τον αντίστοιχο καταχωρητή σε κάθε τµήµα, συνδέονται και µεταξύ τους µέσω ενός πλέγµατος από πύλες xor που υλοποιούν την τελική άθροιση όλων των συντελεστών ώστε να προκύψει το τελικό αποτέλεσµα. Είναι σκόπιµο να σηµειωθεί αν το πολυώνυµο που υπολογίστηκε είναι βαθµού µικρότερου από t τότε οι αντίστοιχοι συντελεστές και κατ επέκταση οι είσοδοι των επιπλέον πολυπλεκτών τροφοδοτούνται µε µηδενική τιµή. Όπως αναφέρθηκε µόνο οι σταθερές τιµές α i στην είσοδο των πολλαπλασιαστών και οι τιµές Λ i από το προηγούµενο τµήµα απαιτούνται για τους υπολογισµούς ενώ το στοιχείο που πραγµατικά εξετάζεται σε κάθε κύκλο δεν χρειάζεται άµεσα στους υπολογισµούς. Ωστόσο πρέπει να ξέρουµε πιο στοιχείο εξετάζεται κάθε φορά. Για αυτό το λόγο απαιτείται άλλο ένα τµήµα µε πολλαπλασιαστή, πολυπλέκτη και καταχωρητή που θα παράγει σε κάθε κύκλο ένα διαφορετικό µη µηδενικό στοιχείο του πεδίου µε τη σειρά: x = 1, x = α, x = α 2,, x =, όπου θα είναι συγχρονισµένο µε το υπόλοιπο κύκλωµα ώστε κάθε χρονική στιγµή να παράγεται το στοιχείο που ελέγχεται ως πιθανή ~ 99 ~

100 ρίζα. Ο πολυπλέκτης και εδώ απαιτείται για το πρώτο στοιχείο α 0 = 1 καθώς ο καταχωρητής αρχικοποιείται στο 0. Τέλος υπάρχει ένας συγκριτής που ελέγχει αν το αποτέλεσµα είναι µηδέν και σε περίπτωση που αυτό ισχύει το στοιχείο που έχει παραχθεί και ελέγχεται αποθηκεύεται σε µια µνήµη από καταχωρητές. Οι καταχωρητές και οι πολλαπλασιαστές που χρησιµοποιούνται είναι των m bits. Οι πολυπλέκτες που χρησιµοποιούνται είναι 2 σε 1 και είναι και αυτοί των m bits. Αφού αναλύθηκε η αρχιτεκτονική θα δούµε την λειτουργία βήµα προς βήµα. 1. Αρχικά γίνεται η αρχικοποίηση όλων των καταχωρητών της βαθµίδας. 2. Στην συνέχεια ξεκινάει ο υπολογισµός της τιµής του πολυωνύµου για όλα τα µη µηδενικά στοιχεία του πεδίου, ένα σε κάθε κύκλο. 3. Για τον υπολογισµό του πρώτου στοιχείου α 0 = 1, όλοι οι πολυπλέκτες έχουν στην έξοδο τους την τιµή της εισόδου 1οπου υπάρχει η έξοδος από την προηγούµενη βαθµίδα. Το ίδιο ισχύει και για τον πολυπλέκτη στο τµήµα που παράγονται τα στοιχεία του πεδίου χωρίς αυτός βέβαια να τροφοδοτείται από την προηγούµενη βαθµίδα. 4. Μετά τον υπολογισµό του πρώτου στοιχείου όλοι οι πολυπλέκτες συµπεριλαµβανοµένου και του πολυπλέκτη στο τµήµα που παράγει τα στοιχεία του πεδίου, έχουν στην έξοδο τους την τιµή της εισόδου 0 ώστε να πραγµατοποιηθούν οι αναβαθµίσεις των συντελεστών που απαιτούνται για το υπόλοιπο των υπολογισµών. 5. Αφού πραγµατοποιηθούν όλοι οι υπολογισµοί, η διαδικασία µπορεί να ξεκινήσει πάλι από την αρχή Λειτουργία FSM Μετά την παρουσίαση της αρχιτεκτονικής του data path σειρά έχει η παρουσίαση του FSM µε τα σήµατα που παράγει, τους ακριβείς χρονισµούς και τις επιπρόσθετες λειτουργίες που επιτελεί. Το FSM παράγει τα σήµατα που ελέγχουν όλους τους πολυπλέκτες στο data path, και πραγµατοποιούν την αρχικοποίηση στους καταχωρητές. Επιπλέον κάνει τον έλεγχο για το αν η τιµή του πολυωνύµου που προκύπτει από τους υπολογισµούς στο data path είναι µηδενική που σηµαίνει ότι το στοιχείο που ελέγχεται στην παρούσα φάση είναι ρίζα του πολυωνύµου και σε περίπτωση που αυτό ισχύει αποθηκεύει την τιµή του στοιχείου που προέρχεται από το data path σε µια µνήµη από καταχωρητές, η έξοδος της οποίας τροφοδοτεί την επόµενη βαθµίδα του αποκωδικοποιητή. Πρέπει να επισηµανθεί ότι η έξοδος από την προηγούµενη βαθµίδα που υπολογίζει το πολυώνυµο εύρεσης λαθών διέρχεται µέσω του FSM και µετά τροφοδοτείται στο data path. Επιπρόσθετα παράγει το σήµα που δηλώνει το τέλος της λειτουργίας αυτής της βαθµίδας ενώ επίσης δέχεται και το σήµα από την προηγούµενη βαθµίδα ότι ο υπολογισµός του πολυωνύµου ολοκληρώθηκε και µπορεί να ξεκινήσει η λειτουργία της. Στο σχήµα που ακολουθεί παρουσιάζεται το διάγραµµα καταστάσεων του FSM, οι λειτουργίες της σύγκρισης των αποτελεσµάτων και της αποθήκευσης των ριζών καθώς και τα σήµατα εισόδου και εξόδου του. ~ 100 ~

101 Σχήμα 4.9 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM του τμήματος Chien search Τα σήµατα που θα µας απασχολήσουν ως είσοδοι στο FSM είναι: το rst το γενικό reset του συστήµατος, το en_in που δηλώνει την ολοκλήρωση της διαδικασίας υπολογισµού του πολυωνύµου από την προηγούµενη βαθµίδα, το eisodos που αποτελεί την έξοδο της προηγούµενης βαθµίδας και αφορά το πολυώνυµο τις ρίζες του οποίου αναζητούµε, το eisodos1 που αναφέρεται στο αποτέλεσµα των υπολογισµών στο datapath και στο σήµα eisodos2 που αναφέρεται στο στοιχείο που ελέγχεται ως υποψήφια ρίζα στον συγκεκριµένο κύκλο. Οι έξοδοι του FSM είναι: το σήµα rst_out που αποτελεί το εσωτερικό reset που χρησιµοποιείται στην αρχικοποίηση όλων των καταχωρητών στο data path, το sel που αποτελεί το σήµα επιλογής στους πολυπλέκτες, το σήµα to_datapath που αναφέρεται στο πολυώνυµο τις ρίζες του οποίου ψάχνουµε, το σήµα exodos που αναφέρεται στις ρίζες του υπολογίστηκαν και κατευθύνεται στην βαθµίδα της διόρθωσης και τέλος το σήµα en_out που δηλώνει στην επόµενη βαθµίδα ότι η διαδικασία υπολογισµού των ριζών ολοκληρώθηκε και ότι στην έξοδο υπάρχουν έγκυρα δεδοµένα. Η αρχική κατάσταση του FSM είναι η state0. Σε αυτήν την κατάσταση καταλήγουµε µετά από σήµα rst = 1 στο συνολικό κύκλωµα καθώς και µετά την ολοκλήρωση της διαδικασίας εύρεσης των ριζών. Παραµένουµε σε αυτήν την κατάσταση µέχρι το σήµα en_in από την προηγούµενη βαθµίδα να πάρει την τιµή 1 ειδοποιώντας για την εύρεση του πολυωνύµου εύρεσης λαθών. Σε αυτήν την κατάσταση το σήµα rst_out γίνεται 1 και αρχικοποιεί όλους τους καταχωρητές. Το σήµα επιλογής στους πολυπλέκτες έχει την τιµή sel = 0 λαµβάνοντας δεδοµένα από την είσοδο που είναι συνδεδεµένη µε τον καταχωρητή. Επίσης ο εσωτερικός µετρητής αρχικοποιείται και αυτός στο 0. Όταν το σήµα en_in πάρει την τιµή 1 τότε ενηµερωνόµαστε για την ολοκλήρωση της διαδικασίας της προηγούµενης βαθµίδας και πραγµατοποιείται µετάβαση στην κατάσταση state1, ενώ και η έξοδος to_datapath τροφοδοτείται από την είσοδο του FSM eisodos και µε τη σειρά της τροφοδοτεί την είσοδο 1 των πολυπλεκτών µε τους συντελεστές του πολυωνύµου εύρεσης λαθών που είναι απαραίτητο για την εκκίνηση της διαδικασίας των υπολογισµών. ~ 101 ~

102 Στην κατάσταση state1 πλέον οι καταχωρητές πρέπει να µην είναι σε κατάσταση reset και για αυτό το λόγο το αντίστοιχο σήµα παίρνει την τιµή rst_out = 0. Στον πρώτο κύκλο που βρισκόµαστε σε αυτήν την κατάσταση οι πολυπλέκτες λαµβάνουν τιµές από την είσοδο 1 όπου όπως αναφέρθηκε υπάρχουν οι συντελεστές του πολυωνύµου του οποίου τις ρίζες ψάχνουµε και συνεπώς το αντίστοιχο σήµα παίρνει την τιµή sel = 1. Για το υπόλοιπο της διαδικασίας σε αυτήν την κατάσταση το σήµα λαµβάνει την τιµή sel = 0. Σε αυτήν την κατάσταση αρχίζει και η λειτουργία του µετρητή όπου αυξάνει κατά 1 την τιµή του σε κάθε κύκλο ρολογιού. Όταν ολοκληρωθούν οι υπολογισµοί που αφορούν στα n µη µηδενικά στοιχεία του πεδίου και συνεπώς όταν ο µετρητής έχει αποκτήσει αυτήν την τιµή τότε µεταβαίνουµε στην κατάσταση state2. Στην κατάσταση state2 το σήµα επιλογής για τους πολυπλέκτες καθώς και το σήµα αρχικοποίησης για τους καταχωρητές, διατηρούν την τιµή που είχαν και προηγουµένως. Ο µετρητής αρχικοποιείται ξανά στην τιµή 0, ενώ το σήµα en_out παίρνει την τιµή 1 δηλώνοντας στην επόµενη βαθµίδα ότι ο υπολογισµός των ριζών ολοκληρώθηκε και ότι στην έξοδο υπάρχουν έγκυρα δεδοµένα. Στον επόµενο κύκλο πηγαίνουµε εκ νέου στην κατάσταση state0 αναµένοντας το σήµα en_in να ξαναγίνει 1 ώστε ένας καινούριος υπολογισµός να ξεκινήσει. Το FSM εκτός των σηµάτων που είναι απαραίτητα για τους υπολογισµούς στο data path πραγµατοποιεί και τον έλεγχο των αποτελεσµάτων που παράγονται καθώς και την αποθήκευση των στοιχείων που αντιστοιχούν στις ρίζες του πολυωνύµου και την µετάδοση τους στην επόµενη βαθµίδα. Πιο συγκεκριµένα και όπως αναφέρθηκε παραπάνω το FSM έχει δυο ακόµα σήµατα ως εισόδους που πληροφορούν για το πιο στοιχείο γίνονται υπολογισµοί στο data path την συγκεκριµένη στιγµή καθώς και πιο είναι το αποτέλεσµα των υπολογισµών. Εφόσον βρισκόµαστε στις καταστάσεις state1 ή state2 σε κάθε κύκλο ελέγχεται µέσω του σήµατος εισόδου eisodos1 αν το αποτέλεσµα των υπολογισµών έχει µηδενική τιµή. Σε περίπτωση που αυτό ισχύει, το στοιχείο το οποίο αντιστοιχεί σε αυτόν τον υπολογισµό µέσω του σήµατος εισόδου eisodos2 αποθηκεύεται σε µια µνήµη από καταχωρητές. Η έξοδος αυτών των καταχωρητών αποτελεί και την έξοδο ολόκληρης της βαθµίδας και ανανεώνεται όσο βρισκόµαστε σε αυτές τις 2 καταστάσεις Υλοποίηση shortening Σε αυτό το σηµείο θα αναλύσουµε την συµπεριφορά της βαθµίδας σχετικά µε την δυνατότητα για τη χρήση shortening. Η βαθµίδα αυτή όπως και η προηγούµενη για τον υπολογισµό του πολυωνύµου εύρεσης λαθών είναι πιο αποδεσµευµένη σχετικά µε τη χρήση του shortening. Το γεγονός ότι δηλαδή έχουµε µειώσει το µήκος της κωδικής λέξης κατά s σύµβολα(bits) δεν επηρεάζει την λειτουργία της βαθµίδας. Η µείωση της κωδικής λέξης που έχει πραγµατοποιηθεί στα αρχικά στάδια όπως έχει ήδη αναφερθεί σηµαίνει ότι τα πιο σηµαντικά bits της κωδικής λέξης είναι µηδενικά. Αυτό σηµαίνει ότι επειδή τα συγκεκριµένα σύµβολα(bits) δεν µεταδίδονται µέσω του καναλιού δεν µπορεί πρακτικά να γίνει λάθος στα συγκεκριµένα σηµεία της κωδικής λέξης. Αυτό έχει σαν συµπέρασµα ότι δεν χρειάζεται να ελεγχθούν συγκεκριµένα στοιχεία του πεδίου ως ρίζες άρα µπορεί να µειωθεί γενικά ο χρόνος κατά s κύκλους και εδώ. Στην συγκεκριµένη όµως αρχιτεκτονική δεν µπορεί να γίνει κάτι τέτοιο. Ο λόγος είναι ότι τα στοιχεία που αντιστοιχούν στις συγκεκριµένες θέσεις της κωδικής λέξης είναι και τα πρώτα που ελέγχονται στο data path. Επειδή οι σχέσεις που χρησιµοποιούνται, βασίζονται στην αναβάθµιση των συντελεστών προκειµένου να γίνουν υπολογισµοί για τα επόµενα στοιχεία δεν είναι δυνατό να µην ελεγχθούν αυτά τα στοιχεία. Το τελικό συµπέρασµα είναι ότι σε αυτήν την περίπτωση είτε γίνεται shortening είτε όχι στο µήκος της κωδικής λέξης, σε αυτήν την βαθµίδα πραγµατοποιείται αναγκαστικά έλεγχος για όλα τα στοιχεία του πεδίου. ~ 102 ~

103 Γενικά χαρακτηριστικά Τελικά σε αυτό το στάδιο απαιτούνται n κύκλοι ρολογιού σε κάθε περίπτωση για την ολοκλήρωση των υπολογισµών. Αυτό συµβαίνει καθώς εξετάζεται ένα µόνο στοιχείο του πεδίου σε κάθε κύκλο λόγω και των σχέσεων που χρησιµοποιούνται για την υλοποίηση του κυκλώµατος. Και σε αυτήν την περίπτωση θα µπορούσε να χρησιµοποιηθεί η τεχνική του unfold έτσι ώστε να είναι δυνατός ο έλεγχος περισσότερων στοιχείων σε κάθε κύκλο ρολογιού. Αυτό βέβαια θα απαιτούσε περισσότερο υλικό, πολυπλοκότερη σχεδίαση καθώς και περισσότερη µνήµη όσον αφορά τα σταθερά στοιχεία του πεδίου που θα απαιτούνταν για την λειτουργία της αναβάθµισης των συντελεστών η µεγαλύτερο critical path. Επίσης είναι σηµαντικό να αναφερθεί ξανά ότι η µέθοδος Chien είναι αρκετά αποδοτική σε σχέση µε άλλες ευριστικές µεθόδους για τα µεγέθη των πεδίων και των κωδικών λέξεων που χρησιµοποιούνται στην πράξη. Τελικά και για αυτό το τµήµα του αποκωδικοποιητή η σχεδίαση που προτιµήθηκε αποσκοπεί σε µια αρχιτεκτονική χαµηλής πολυπλοκότητας και υψηλής συχνότητας λειτουργίας Αποκωδικοποιητής ιόρθωση λαθών Σε αυτήν την ενότητα θα παρουσιάσουµε το τέταρτο και τελευταίο τµήµα από το οποίο αποτελείται ο αποκωδικοποιητής που είναι το κύκλωµα διόρθωσης λαθών Αλγόριθµος Το τελευταίο βήµα του αποκωδικοποιητή µετά και την εύρεση των ριζών του πολυωνύµου εύρεσης λαθών είναι η χρήση τους για την διόρθωση των συµβόλων(bits) της λέξης που έλαβε ο αποκωδικοποιητής µέσα από το κανάλι προσθετικού θορύβου. Σύµφωνα µε τη θεωρία των syndromes ισχύει ότι S = όπου το αντιπροσωπεύει τη θέση όπου υπάρχει λάθος στην λέξη που έλαβε ο αποκωδικοποιητής. Το πολυώνυµο εύρεσης λαθών Λ(x) = Π(1- Χ l x) έχει δηµιουργηθεί µε σκοπό τη λύση των εξισώσεων των syndromes κατά τρόπο ώστε για τις ρίζες του, να ισχύει ότι x =. εδοµένου ότι το προηγούµενο τµήµα του αποκωδικοποιητή είχε ως στόχο την εύρεση αυτών των ριζών, αυτό που απαιτείται πλέον για το τελικό στάδιο της διόρθωσης είναι η αντιστροφή της τιµής αυτών των ριζών, και η αλλαγή της τιµής των bits, µιας και ασχολούµαστε µε δυαδικό κώδικα, στις θέσεις που υποδεικνύονται από τις αντεστραµµένες τιµές των ριζών. Για την αντιστροφή των ριζών είναι αρκετή µια διαίρεση της µορφής 1 α = a a και θα µπορούσε να χρησιµοποιηθεί ο διαιρέτης του σχήµατος (2.7) σε κάθε µία από τις ρίζες που προκύπτουν από την έξοδο του τµήµατος Chien search που περιγράφηκε προηγουµένως. Ωστόσο η προσέγγιση που θα χρησιµοποιηθεί δεν απαιτεί την χρήση διαιρετών µιας και όπως έχει αναφερθεί και προηγουµένως το critical path που τους αναλογεί είναι πολύ µεγάλο. Προτού περιγράψουµε τον αλγόριθµο που θα χρησιµοποιηθεί πρέπει να αναφερθεί ο συσχετισµός µεταξύ της τιµής που προκύπτει από την αντιστροφή και της θέσης στη λέξη που της αναλογεί. Οι ρίζες που προκύπτουν από το στάδιο του Chien search όπως και οι αντεστραµµένες τιµές τους είναι στοιχεία του πεδίου επέκτασης στο οποίο εργαζόµαστε και µπορούν συνεπώς να αναπαρασταθούν µε την µορφή όπου 0 j 2 2. Έστω ότι ασχολούµαστε µε το πεδίο GF(2 5 ) όπου m = 5, αν η αντεστραµµένη τιµή µιας ρίζας είναι για παράδειγµα η τιµή α 20 αυτό σηµαίνει ότι το 20 ο πιο σηµαντικό bit της λέξης, πρέπει να αλλάξει τιµή. Η προσέγγιση που θα χρησιµοποιήσουµε βασίζεται σε έναν πίνακα look up table όπου είναι αποθηκευµένα όλα τα στοιχεία του πεδίου κατά αντίστροφη φορά ώστε να µην απαιτείται κύκλωµα διαίρεσης. Αν και αυτή η µέθοδος έχει το µειονέκτηµα να χρησιµοποιεί πολύ υλικό, απαιτεί λίγους σχετικά κύκλους για την ολοκλήρωση της λειτουργίας της. Στην συνέχεια παρουσιάζεται ο αλγόριθµος που υλοποιεί την συγκεκριµένη λειτουργία. X ~ 103 ~

104 Αρχικοποίηση temp[n,1] = 0 for i = 1 to t for j = 0 to n 1 if root(i) = memory(n j) else end if end for end for temp(j) = 1 temp(j) = temp(j) exodos = temp xor eisodos Η µεταβλητή root δηλώνει τις ρίζες από το προηγούµενο στάδιο, η µεταβλητή memory αναφέρεται στον πίνακα look up table, η µεταβλητή temp στο αποτέλεσµα του ελέγχου η µεταβλητή eisodos στην λέξη που αποσκοπούµε να διορθώσουµε και τέλος η µεταβλητή exodos αναφέρεται στην τελική έξοδο του αποκωδικοποιητή µετά την ολοκλήρωση της διαδικασίας της διόρθωσης Αρχιτεκτονική data path Η υλοποίηση της αρχιτεκτονικής αυτού του τµήµατος του αποκωδικοποιητή θα βασιστεί λοιπόν στον αλγόριθµο που περιγράφηκε παραπάνω. Προτού αναλύσουµε την λειτουργία του τµήµατος και την αρχιτεκτονική του θα δείξουµε πως αυτή προκύπτει από τον αλγόριθµο. Βασικό στοιχείο του αλγορίθµου είναι το σηµείο όπου γίνεται έλεγχος στην συνθήκη του if. Με αυτήν την συνθήκη ελέγχουµε µε ποιο στοιχείο του πίνακα look up table που περιέχει όλα τα στοιχεία του πεδίου ταιριάζουν οι ρίζες που υπολογίστηκαν από το προηγούµενο στάδιο. Με αυτόν τον τρόπο θα καθοριστούν ποια είναι τα σηµεία στα οποία θα γίνει η αλλαγή των bit στην λέξη που θέλουµε να διορθώσουµε. Η συνθήκη ελέγχου υλοποιείται µε την χρήση συγκριτών µεταξύ των δυο τιµών. Προκειµένου να είναι δυνατή η ανίχνευση της θέσης της λέξης µε αυτόν τον τρόπο πρέπει να υπάρχει φυσική σύνδεση µεταξύ των εξόδων των συγκριτών και της λέξης προς διόρθωση. Επιπλέον πρέπει να υπάρχει ένα είδος µνήµης ώστε να διατηρείται όλη η λέξη. Ένας καταχωρητής µπορεί να επιτελέσει αυτό το έργο. Επίσης είναι φανερό ότι απαιτούνται και τόσοι συγκριτές όσο είναι το µέγεθος της κωδικής λέξης. Αυτή η διαδικασία πρέπει να γίνει για όλες τις ρίζες που έχουν υπολογιστεί. Το τελευταίο τµήµα του αλγορίθµου πραγµατοποιεί µια πράξη xor µεταξύ των εξόδων των συγκριτών και της λέξης προς διόρθωση. Επιλέγεται η πράξη xor καθώς ανάλογα µε την έξοδο των συγκριτών µπορεί να γίνει η αντιστροφή της τιµής των κατάλληλων bit. Όταν απαιτείται αλλαγή τιµής οι έξοδοι των συγκριτών έχουν την λογική τιµή 1. Συνεπώς στις αντίστοιχες πύλες xor υπάρχει είσοδος µε λογική τιµή 1 µε αποτέλεσµα στην έξοδο της να εµφανίζεται η αντίστροφη τιµή που υπάρχει στην άλλη είσοδο. Αν τώρα η έξοδος του συγκριτή είναι λογικό 0 τότε στην έξοδο της αντίστοιχης πύλης xor εµφανίζεται η τιµή της άλλης εισόδου της. Όπως είπαµε προηγουµένως δεν απαιτείται διαιρέτης καθώς στο look up table είναι αποθηκευµένα κατά αντίστροφη σειρά τα στοιχεία του πεδίου. Στην περίπτωση για παράδειγµα που ασχολούµαστε µε κώδικα στο GF(2 5 ) η κωδική λέξη έχει µήκος 31 bits ενώ το πεδίο και άρα το look up table που θα χρησιµοποιηθεί, αποτελείται από ~ 104 ~

105 2 5 1 στοιχεία των 5 bits. Η θέση 20 στο look up table µέσω και του συγκριτή συνδέεται µε την 20 ο πιο σηµαντικό bit της λέξης. Η τιµή ωστόσο στο πίνακα σε αυτήν την θέση δεν είναι το στοιχείο α 20, αλλά το στοιχείο1 α = α α = α α = α και αυτό γίνεται για να µην χρησιµοποιηθεί κύκλωµα διαιρέτη που θα είχε ως αποτέλεσµα ένα µεγάλο critical path. Είναι προφανές ότι το κύκλωµα υπολογισµού ριζών στην συγκεκριµένη περίπτωση θα έδινε την τιµή ως ρίζα. Αντί λοιπόν να υπάρχουν τα στοιχεία στο look up table µε τη σειρά 1, α, α,, α τα τοποθετούµε µε την σειρά 1 1, 1 α, 1 α,, 1 α = 1, α, α,, α. Είναι σηµαντικό να τονιστεί ότι στον πίνακα µε τα στοιχεία δεν υπάρχει η µηδενική τιµή. Όπως αναφέρθηκε στο τµήµα για την εύρεση των ριζών του πολυωνύµου error locator όταν εντοπίζονται λιγότερα λάθη από την διορθωτική ικανότητα του κώδικα στις ρίζες εµφανίζεται η µηδενική τιµή. Προφανώς σε αυτήν την περίπτωση δεν γίνεται κάποια διόρθωση στον κώδικα, καθώς δεν υπάρχει θέση 0 στην λέξη. Στο επόµενο σχήµα παρουσιάζεται η αρχιτεκτονική του κυκλώµατος διόρθωσης της τιµής της λέξης που έλαβε ο αποκωδικοποιητής που θα χρησιµοποιηθεί και θα είναι βασισµένη στις παραπάνω παρατηρήσεις. Σχήμα 4.10 : Αρχιτεκτονική του τμήματος διόρθωσης Σε αυτήν την αρχιτεκτονική όπως αναφέρθηκε και προηγουµένως βασικά τµήµατα είναι ο πίνακας look up table και οι συγκριτές. Ο συγκεκριµένος πίνακας έχει n = 2 m 1 θέσεις όπου είναι αποθηκευµένα τα στοιχεία του πεδίου. Κάθε θέση εξέρχεται σήµα m bits µε την τιµή του στοιχείου και συνδέεται µε την µία είσοδο ενός συγκριτή. Υπάρχουν συνολικά n συγκριτές όσα είναι και τα στοιχεία του πεδίου. Η δεύτερη είσοδος των συγκριτών τροφοδοτείται µε τις τιµές που αντιπροσωπεύουν τις ρίζες που υπολογίστηκαν στο προηγούµενο τµήµα. Η ίδια ρίζα τροφοδοτείται ~ 105 ~

106 στις εισόδους όλων συγκριτών και συνεπώς απαιτείται ένας κύκλος για την εύρεση της θέσης για κάθε ρίζα. Η τιµή αυτή που είναι 1 bit αποθηκεύεται σε µία µνήµη n bits και διατηρείται µέχρι το τέλος της διαδικασίας. Πρέπει να τονιστεί το γεγονός ότι οι ρίζες σε πρώτη φάση από το προηγούµενο στάδιο κατευθύνονται στο FSM και από εκεί κατευθύνονται σε έναν καταχωρητή ολίσθησης όπου έχει την δυνατότητα παράλληλης φόρτωσης. Τέτοιοι καταχωρητές χρησιµοποιήθηκαν και περιγράφηκαν και στο τµήµα υπολογισµού των syndromes αλλά και στον Berlekamp Massey. Η έξοδος αυτού του καταχωρητή ολίσθησης παρέχει µία ρίζα σε κάθε κύκλο και τροφοδοτεί την µία είσοδο όλων των συγκριτών. Η λέξη που φτάνει από το κανάλι στο τµήµα υπολογισµού των syndromes αφού συγκεντρωθεί στον πρώτο καταχωρητή πριν την αντιστροφή όπως εξηγήσαµε και στο αντίστοιχο τµήµα, κατευθύνεται και σε αυτό το στάδιο και τροφοδοτεί την είσοδο ενός πολυπλέκτη 2 σε 1. Η έξοδος του πολυπλέκτη συνδέεται µε τη είσοδο ενός n µεγέθους καταχωρητή. Κάθε bit της εξόδου του καταχωρητή συνδέεται µε τη χρήση πυλών xor µε την έξοδο κάθε συγκριτή έτσι ώστε να πραγµατοποιηθεί η διόρθωση όπου αυτή απαιτείται. Η έξοδος του καταχωρητή τροφοδοτεί και την άλλη είσοδο του πολυπλέκτη ώστε η τιµή της λέξης να διατηρείται κατά το διάστηµα που πραγµατοποιείται η εύρεση του error locator polynomial καθώς και η λειτουργία του Chien search. Το σήµα επιλογής του πολυπλέκτη προέρχεται και αυτό από την βαθµίδα των syndromes. Αφού αναλύθηκε η αρχιτεκτονική θα παρουσιαστεί η λειτουργία του τµήµατος βήµα προς βήµα. 1. Αρχικά γίνεται η αρχικοποίηση όλων των καταχωρητών της βαθµίδας. 2. Πριν ξεκινήσουν οι υπολογισµοί για την διόρθωση της τιµής της λέξης το κύκλωµα υπολογισµού των syndromes µε την αποστολή των κατάλληλων σηµάτων, στέλνει την λέξη στο παρόν τµήµα. Ο πολυπλέκτης σε αυτήν την φάση διαβάζει τα δεδοµένα από την είσοδο Στην συνέχεια ο πολυπλέκτης για το υπόλοιπο της διαδικασίας δέχεται δεδοµένα από την είσοδο 0 ανατροφοδοτώντας τον καταχωρητή που περιέχει την προς διόρθωση λέξη. 4. Μετά τον υπολογισµό των ριζών του πολυωνύµου από το προηγούµενο τµήµα οι ρίζες µέσω του FSM κατευθύνονται στον καταχωρητή ολίσθησης. Οι πολυπλέκτες που τον αποτελούν λαµβάνουν αυτά τα δεδοµένα από την είσοδο 0, ενώ από τον επόµενο κύκλο λαµβάνουν δεδοµένα από την είσοδο 1 πραγµατοποιώντας ολίσθηση των δεδοµένων στην έξοδο του καταχωρητή και τροφοδοτώντας τους συγκριτές. 5. Στην συνέχεια σε κάθε κύκλο ρολογιού µια καινούρια ρίζα κατευθύνεται στις εισόδους των συγκριτών και ένα νέο σηµείο µε λάθος στην λέξη διορθώνεται. 6. Αφού τελειώσουν οι συγκρίσεις µε όλες τις ρίζες προκύπτει η διορθωµένη λέξη βάση του κώδικα BCH και η διαδικασία µπορεί να ξεκινήσει πάλι από την αρχή Λειτουργία FSM Μετά την παρουσίαση της αρχιτεκτονικής του data path σειρά έχει η παρουσίαση του FSM όπου θα γίνει αναφορά στα σήµατα που δέχεται και παράγει καθώς και στους ακριβείς χρονισµούς του. Πιο συγκεκριµένα το FSM παράγει τα σήµατα που ελέγχουν τους πολυπλέκτες στον καταχωρητή ολίσθησης, καθώς ο πολυπλέκτης που χρησιµοποιείται για την αποθήκευση και την διατήρηση της λέξης από το κανάλι ελέγχεται από το FSM του τµήµατος των syndromes. Παράγει επίσης τα σήµατα αρχικοποίησης όλων των καταχωρητών αλλά και της µνήµης που χρησιµοποιείται. Ακόµα παράγει τα σήµατα που υποδηλώνουν την λειτουργία της διόρθωσης αλλά και το τέλος της συνολικής διαδικασίας. Τέλος αναφέρθηκε ότι διαµέσου του FSM τα δεδοµένα από το προηγούµενο τµήµα κατευθύνονται στο data path. Στο επόµενο σχήµα παρουσιάζεται το διάγραµµα καταστάσεων του ~ 106 ~

107 FSM του σταδίου για την διόρθωση της λέξης από το κανάλι καθώς και τα σήµατα εισόδου και εξόδου του. Σχήμα 4.11 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM του τμήματος διόρθωσης Πιο συγκεκριµένα τα σήµατα που θα µας απασχολήσουν ως είσοδοι στο FSM είναι: το rst το γενικό reset του συστήµατος, το σήµα en_in που δηλώνει το τέλος της λειτουργίας της προηγούµενης βαθµίδας και το σήµα eisodos_from_chien που αποτελείται από τα δεδοµένα της εξόδου της προηγούµενης βαθµίδας. Οι έξοδοι του FSM είναι: το σήµα rst_out που αποτελεί το εσωτερικό reset για την αρχικοποίηση των καταχωρητών, το σήµα en_to_dio που επιτρέπει την διαδικασία της διόρθωσης να πραγµατοποιηθεί, το σήµα sel_s που ελέγχει τους πολυπλέκτες στον καταχωρητή ολίσθησης, το σήµα exodos_to_s που τροφοδοτεί τον καταχωρητή ολίσθησης µε τις ρίζες από το προηγούµενο στάδιο και τέλος το σήµα en_out που υποδηλώνει την ολοκλήρωση της διαδικασίας της διόρθωσης µε την έξοδο του κυκλώµατος να έχει έγκυρα δεδοµένα. Η αρχική κατάσταση του FSM είναι η state0. Σε αυτήν την κατάσταση καταλήγουµε µετά από σήµα rst = 1 στο συνολικό σύστηµα καθώς και µετά το τέλος της διαδικασίας της διόρθωσης. Παραµένουµε σε αυτήν την κατάσταση έως ότου το σήµα en_in πάρει την λογική τιµή 1 από την προηγούµενη βαθµίδα ειδοποιώντας για την ολοκλήρωση της λειτουργίας της. Σε αυτήν την κατάσταση το σήµα rst_out έχει την τιµή 0. Η αρχικοποίηση των καταχωρητών και της µνήµης που αποθηκεύονται οι αλλαγές γίνεται σε πρώτη φάση από το γενικό reset του συστήµατος. εν είναι απαραίτητη η αρχικοποίηση του καταχωρητή ολίσθησης στην παρούσα φάση καθώς για να ξεκινήσει η διαδικασία της διόρθωσης πρώτα πρέπει σε αυτόν να υπάρχουν οι ρίζες από το προηγούµενο στάδιο που γράφεται πάνω στην τωρινή τιµή του. Ο εσωτερικός µετρητής αρχικοποιείται στην τιµή 0 σε αυτήν την κατάσταση ενώ και το σήµα en_to_dio έχει τιµή 0 µην επιτρέποντας να γίνουν συγκρίσεις. Όταν το σήµα en_in αποκτήσει την τιµή 1 τότε ενηµερωνόµαστε ότι ολοκληρώθηκαν οι υπολογισµοί στην προηγούµενη βαθµίδα και πηγαίνουµε στην κατάσταση state1. Επιπλέον το σήµα επιλογής για τους πολυπλέκτες sel_s παίρνει την τιµή 0 αυτή τη χρονική στιγµή και ο καταχωρητής ~ 107 ~

108 ολίσθησης φορτώνεται παράλληλα από το FSM µε τα δεδοµένα από το προηγούµενο στάδιο, µέσω της εξόδου του FSM, exodos_to_s. Τα δεδοµένα αυτά τροφοδοτούνται στο FSM µέσω της εισόδου του, eisodos_from_chien. Στην κατάσταση state1 το σήµα en_to_dio αποκτά τιµή 1 και αρχίζει η διαδικασία για την διόρθωση της λέξης. Σε κάθε κύκλο ρολογιού µία καινούρια ρίζα εισέρχεται στους συγκριτές από την έξοδο του καταχωρητή ολίσθησης. Για να γίνει αυτό απαιτείται και οι καταχωρητές να είναι σε κατάσταση κανονικής λειτουργίας και οι πολυπλέκτες να διαβάζουν δεδοµένα από την είσοδο 1 ώστε να πραγµατοποιείται ολίσθηση. Συνεπώς το σήµα rst_out πρέπει να έχει τιµή 0 και το σήµα sel_s τιµή 1. Επιπλέον ο µετρητής σε αυτήν την κατάσταση αρχίζει να αυξάνει την τιµή του κατά 1 σε κάθε κύκλο ρολογιού. Στην κατάσταση state1 παραµένουµε µέχρι να ολοκληρωθεί η διόρθωση της λέξης. Αυτό συνεπάγεται ότι πρέπει να γίνει ο έλεγχος για όλες τις ρίζες που έχουν υπολογιστεί. Συνεπώς απαιτούνται t κύκλοι ρολογιού. Μόλις ο µετρητής φτάσει σε αυτήν την τιµή, στον επόµενο κύκλο πηγαίνουµε στην κατάσταση state2. Σε αυτήν την κατάσταση ειδοποιείται το σύστηµα ότι η λειτουργία της διόρθωσης και κατ επέκταση της αποκωδικοποίησης ολοκληρώθηκε µέσω του σήµατος en_out που παίρνει την τιµή 1. Τα υπόλοιπα σήµατα διατηρούν την τιµή που είχαν και στην προηγούµενη κατάσταση εκτός του µετρητή που αρχικοποιείται στην τιµή 0. Ειδικά τα σήµατα rst_out και en_to_dio πρέπει να διατηρήσουν την τιµή τους ώστε η διορθωµένη λέξη να εµφανιστεί ανέπαφη σtην έξοδο καθώς σε διαφορετική περίπτωση οι καταχωρητές και η µνήµη θα βρεθούν σε κατάσταση αρχικοποίησης. Στον επόµενο κύκλο πηγαίνουµε στην κατάσταση state3. Πρόκειται για µία µεταβατική κατάσταση που είναι απαραίτητη για να γίνουν οι κατάλληλες αρχικοποιήσεις ώστε να µπορέσει η διαδικασία να επαναληφθεί. Τα σήµατα en_to_dio, en_out έχουν τιµή 0 ενώ το σήµα rst_out παίρνει την τιµή 1. O µετρητής διατηρεί την τιµή που είχε από πριν. Στην συνέχεια οδηγούµαστε στην κατάσταση state0 και η διαδικασία συνεχίζεται µε τον ίδιο τρόπο Υλοποίηση shortening Σε αυτό το σηµείο θα εξετάσουµε την συµπεριφορά και την δυνατότητα για τη χρήση shortening στο συγκεκριµένο τµήµα του αποκωδικοποιητή. Η µείωση της κωδικής λέξης κατά s σύµβολα (bits) που είναι επιθυµητό να πραγµατοποιηθεί στον κωδικοποιητή και στον αποκωδικοποιητή δεν επηρεάζει τον τρόπο λειτουργίας αυτού του τµήµατος. Μπορεί και εδώ να χρησιµοποιηθεί µε κάποιες µικρές αλλαγές στα µεγέθη κυρίως των δοµικών στοιχείων του τµήµατος. εδοµένου ότι η λέξη από το κανάλι θα είναι µειωµένη κατά s bits ο καταχωρητής και ο πολυπλέκτης που χρησιµοποιούνται για την αποθήκευση της λέξης µπορούν να µειωθούν κατά s όσον αφορά το µέγεθος και τις 2 εισόδους τους αντίστοιχα. Η διορθωτική ικανότητα δεν µεταβάλλεται άρα ο καταχωρητής ολίσθησης δεν χρειάζεται αλλαγή. Μιας και η κωδική λέξη είναι µικρότερη και συνεπώς και οι θέσεις όπου µπορεί να γίνει διόρθωση, τόσο ο πίνακας look up table όσο και το πλήθος των συγκριτών αλλά και των πυλών xor µπορεί να µειωθεί κατά s. Ιδιαίτερη αναφορά πρέπει να γίνει σχετικά µε τη µείωση του πίνακα look up table. Χρησιµοποιώντας πάλι το παράδειγµα µε το πεδίο GF(2 5 ) λαµβάνοντας υπόψη και την αντίστροφη σειρά µε την οποία είναι αποθηκευµένα τα στοιχεία στο look up table θα δείξουµε ποια στοιχεία θα αφαιρεθούν. Όπως αναφέραµε στον κωδικοποιητή η µείωση γίνεται στην αρχή της κωδικής λέξης που αφορά στα πιο σηµαντικά bits της λέξης δηλαδή τα α, α,, α που λόγω όµως της αντιστροφής τα πραγµατικά στοιχεία είναι α α, α α,, α α = a, a,, a που αφαιρούνται από τις ανάλογες θέσεις όπου βρίσκονταν. Το τελικό συµπέρασµα είναι πως µόνο µειώσεις στο µέγεθος και πλήθος των δοµικών στοιχείων απαιτούνται για την πραγµατοποίηση του shortening. ~ 108 ~

109 Γενικά χαρακτηριστικά Τελικά απαιτούνται t κύκλοι ρολογιού σε κάθε περίπτωση για την ολοκλήρωση της διαδικασίας της διόρθωσης. Σε κάθε κύκλο εξετάζεται µία ρίζα και διορθώνεται ένα σηµείο της λέξης. Γενικά θα ήταν δυνατό να γίνει έλεγχος για περισσότερες ρίζες δεδοµένου ότι εξασφαλίζεται η µη ύπαρξη ριζών µε πολλαπλότητα άνω του 1. Ωστόσο µια τέτοια σχεδίαση θα απαιτούσε περισσότερους του ενός συγκριτές για τον έλεγχο κάθε στοιχείου του πίνακα look up table µε αποτέλεσµα την περαιτέρω αύξηση του υλικού που απαιτείται για αυτό το τµήµα. Από την άλλη µεριά υπάρχει η δυνατότητα για µια αρκετά µεγάλη µείωση του υλικού που χρησιµοποιείται τροποποιώντας την σχεδίαση µε τον εξής τρόπο. Με τη χρήση ενός πολλαπλασιαστή υπάρχει η δυνατότητα για την παραγωγή όλων των στοιχείων του πεδίου όπως ακριβώς γίνεται και στην βαθµίδα των syndromes. Επίσης ένας µόνο ελεγκτής θα µπορούσε να χρησιµοποιηθεί για τον έλεγχο κάθε ρίζας µε την προϋπόθεση ότι είναι οι ρίζες θα έπρεπε να είναι σε µία αντίστοιχη σειρά αύξουσα η φθίνουσα ώστε να αποφευχθούν περιττοί έλεγχοι και να βρεθούν όλα τα σηµεία της λέξης που απαιτούσαν διόρθωση. Κάτι τέτοιο βέβαια θα αύξανε την πολυπλοκότητα και σε αυτό και σε προηγούµενα τµήµατα της σχεδίασης ενώ θα υπήρχαν και θέµατα σχετικά µε την παραµετρικότητα της σχεδίασης. Σε κάθε περίπτωση όµως θα υπήρχε και µια σηµαντική καθυστέρηση σε κύκλους για την ολοκλήρωση της διαδικασίας. Η αρχιτεκτονική που προτιµήθηκε επιπλέον είναι χαµηλής πολυπλοκότητας και ευνοεί υψηλές συχνότητες λειτουργίας. ~ 109 ~

110 ~ 110 ~

111 Κεφάλαιο 5 Σύστηµα σε σειρά BCH LDPC Σε αυτό το κεφάλαιο θα γίνει η παρουσίαση του συστήµατος σε σειρά (concatenated) που θα µας απασχολήσει πειραµατικά και θα υλοποιηθεί σε FPGA. Θα παρουσιαστούν όλα τα δοµικά µέρη του συστήµατος και θα δοθεί έµφαση στον συνολικό χρονισµό του συστήµατος, στα µεγέθη που θα χρησιµοποιηθούν σχετικά µε τους δύο κώδικες καθώς στον τρόπο µέτρησης της απόδοσης του. 5.1 Τρέχον επίπεδο τεχνογνωσίας State of the art για κώδικες σε σειρά ιάφορες εργασίες έχουν πραγµατοποιηθεί µε σκοπό την δηµιουργία κατάλληλων δοµών από κώδικες σε σειρά, που έχουν ως αποτέλεσµα την καλύτερη απόδοση σε θέµατα διόρθωσης λαθών. Σε πολλές περιπτώσεις στόχος είναι η βελτίωση της συµπεριφοράς συγκεκριµένων κωδικών υψηλής απόδοσης σε χαµηλά επίπεδα θορύβου όπου αρχίζει να εµφανίζεται το φαινόµενο του error-floor λόγω της επαναληπτικής δοµής των αλγορίθµων που χρησιµοποιούνται που εκτός των άλλων βασίζονται και σε αποκωδικοποίηση soft-decision. Τέτοιοι κώδικες είναι οι LDPC και οι Turbo που κατά κύριο λόγο χρησιµοποιούνται όταν απαιτείται κυρίως µεγάλη δυνατότητα διόρθωσης. εν είναι τυχαίο ότι αυτοί οι δύο κώδικες χρησιµοποιούνται σε πάρα πολλά πρότυπα. Ένα τέτοιο πρότυπο είναι το DVB S2 που χρησιµοποιείται κυρίως σε δορυφορικές επικοινωνίες ευρείας ζώνης(για µεταφορά video κυρίως). Πρόκειται για δεύτερης γενιάς σύστηµα και προέκυψε από την αναβάθµιση του αρχικού DVB το Βάση αυτού του προτύπου χρησιµοποιούνται σε σειρά συστήµατα κωδικοποίησης και αποκωδικοποίησης που βασίζονται σε κώδικες LDPC και BCH. Όπως περιγράφεται και στις εργασίες [16][17][18] χρησιµοποιείται δυαδικός κώδικας BCH εξωτερικά και εσωτερικά ο LDPC µε στόχο την υψηλή απόδοση σε υψηλά επίπεδα θορύβου και την µείωση του φαινοµένου του error-floor σε χαµηλότερα επίπεδα θορύβου. Χρησιµοποιούνται δυο µεγέθη µπλοκ κωδικών και bits. Επιπλέον οι κωδικοποιητές υποστηρίζουν συνολικά έντεκα µεγέθη code rates (1 4, 1 3, 2 5, 1 2, 3 5, 2 3, 3 4, 4 5, 5 6, 8 9, 9 10) καθώς και 4 ψηφιακές διαµορφώσεις (BPSK, QPSK, 8PSK, 16APSK) ή (QPSK, 8PSK, 16APSK, 32APSK) µε τις X-APSK να αποτελούν υβριδικές διαµορφώσεις (Amplitude PSK). Στις εργασίες [17][18] παρουσιάζονται περισσότερες πληροφορίες σχετικά µε ολόκληρο το σύστηµα που περιλαµβάνει τους ποµπούς και του δέκτες. Στην εργασία [19] γίνεται και πάλι χρήση κωδικών BCH και LDPC σε σειρά. Σε αυτή την περίπτωση πραγµατοποιείται επαναληπτική αποκωδικοποίηση συνολικά και στους δυο κώδικες. Στον δυαδικό BCH πραγµατοποιείται αποκωδικοποίηση soft-decision που βασίζεται στον αλγόριθµο του Chase και οι soft τιµές που προκύπτουν επανατροφοδοτούν τον αποκωδικοποιητή LDPC. Βάση του αλγορίθµου Chase παράγεται ένα σετ από υποψήφιες κωδικές λέξεις χρησιµοποιώντας διάφορες αλγεβρικές µεθόδους και επιλέγεται αυτή για την οποία έχει εκτιµηθεί ακολουθία λάθους µε το µικρότερο δυνατό βάρος. Τα βήµατα που ακολουθούνται σχετικά µε τις επαναλήψεις επί της συνολικής διαδικασίας της αποκωδικοποίησης είναι: α) Αρχικά πραγµατοποιείται επαναληπτική αποκωδικοποίηση στον LDPC β) αν προκύψει κωδική λέξη τελειώνει η διαδικασία διαφορετικά συνεχίζεται η αποκωδικοποίηση στον BCH γ) αν ούτε εκεί προκύψει κωδική λέξη που να ικανοποιεί τις απαραίτητες συνθήκες η λέξη στέλνεται και πάλι στον LDPC αποκωδικοποιητή ωστόσο τώρα υπάρχει αλλαγή στην σχέσεις που εκτελούνται από αυτόν και η διαδικασία συνεχίζεται είτε µέχρι την παραγωγή λέξης που ικανοποιεί ~ 111 ~

112 τα κριτήρια είτε µέχρι την συµπλήρωση των απαραίτητων επαναλήψεων που έχουν αρχικώς οριστεί. Το συνολικό µέγεθος του µπλοκ είναι 1416 bits και αποτελείται από κανονικό κώδικα LDPC (3,6) και 18 κώδικες BCH (63, 51). Στην εργασία [20] χρησιµοποιείται σύστηµα σε σειρά που αποτελείται από κώδικες Turbo και BCH. Ο κώδικας BCH τοποθετείται εξωτερικά σε σχέση µε τον Turbo και στόχο έχει να περιορίσει τα γεγονότα λάθους που προκύπτουν από τον κώδικα Turbo. Ο Turbo κώδικας που χρησιµοποιείται αποτελείται από 4-καταστάσεων RSC τµηµατικούς κώδικες. ιπλός τερµατισµός (dual-termination) χρησιµοποιείται για τον τερµατισµό των trellis και πραγµατοποιείται επέκταση στη λέξη (δεδοµένα και parity bits) µε σκοπό την δηµιουργία ενός κώδικα ρυθµού 1 2 από τον αρχικό µε ρυθµό 1 3. Ο συγκεκριµένος αποκωδικοποιητής εκτελεί 32 επαναλήψεις και έχει απόδοση σε θέµατα διόρθωσης αντάξια και καλύτερα σε σχέση µε τον αντίστοιχου ρυθµού κώδικα που χρησιµοποιείται από το πρότυπο DVB-S2 αν και παρατηρείται κάποια επιδείνωση στην περιοχή του «καταρράκτη» (waterfall) επειδή χρησιµοποιούνται δυο κώδικες σε σειρά. Στην εργασία [21] το σύστηµα σε σειρά που χρησιµοποιείται αποτελείται αποκλειστικά από κώδικες BCH και πέρα από τα καλά χαρακτηριστικά σε επίπεδο διόρθωσης λαθών στοχεύει και σε υψηλό ρυθµό µετάδοσης και επεξεργασίας της τάξης των 100 Gbits/s. Αποτελείται από δυαδικούς κώδικες BCΗ. Εξωτερικά υπάρχουν 8 BCH (3860, 3824) και εσωτερικά 16 BCH (2040, 1930) κωδικοποιητές που λειτουργούν παράλληλα. Μεταξύ τους καθώς και µεταξύ των αποκωδικοποιητών τους υπάρχουν κατάλληλοι interleavers deinterleavers. Στους αποκωδικοποιητές υπάρχει διπλάσια παραλληλία σε σχέση µε τους κωδικοποιητές. Ο εξωτερικός αποκωδικοποιητής επεξεργάζεται 16 λέξεις µεγέθους (3860, 3824) παράλληλα και αποτελείται από 16 τµήµατα για υπολογισµό των syndromes, 16 τµήµατα για την εύρεση των ριζών του πολυωνύµου και 1 τµήµατα για την εύρεση του πολυωνύµου εύρεσης λαθών που µοιράζεται και βασίζεται στον αλγόριθµο DcRiBM. Ο εσωτερικός αποκωδικοποιητής έχει 32 τµήµατα για τον υπολογισµό των syndromes και των ριζών και 3 τµήµατα που µοιράζονται για τον υπολογισµό του πολυωνύµου εύρεσης λαθών. Τέλος είναι σηµαντικό να αναφερθεί ότι πραγµατοποιείται συνολικά τρεις φορές αποκωδικοποίηση. Μία τροποποίηση της αρχιτεκτονικής αυτής προτείνεται στην εργασία [22] όπου ο εξωτερικός κώδικας BCH έχει µέγεθος (3904, 3820) και ο εσωτερικός (2040, 1952) ενώ πραγµατοποιούνται µόνο δυο επαναλήψεις στην αποκωδικοποίηση. Το αποτέλεσµα είναι καλύτερη συµπεριφορά σε θέµατα διόρθωσης. Επιπλέον πραγµατοποιείται µια πιο απλοποιηµένη υλοποίηση για το τµήµα υπολογισµού syndromes βασισµένη στη χρήση κυκλωµάτων ύψωση στο τετράγωνο αντί πολλαπλασιαστών και χρησιµοποιείται µια τροποποιηµένη έκδοση του αλγορίθµου BM o Dual-pSiBM µε κύριο χαρακτηριστικό την ύπαρξη δυο γραµµών επεξεργασίας πλήθους 2t στοιχείων και την ύπαρξη pipelined πολλαπλασιαστών. Στην εργασία [23] εξετάζεται µια δοµή συστήµατος σε σειρά που αποτελείται από κώδικες BCH και RS και είναι συµβατό µε το πρωτόκολλο G.975 που επιτυγχάνει ρυθµό επεξεργασίας 10Gbits/s. Ο κωδικοποιητής αποτελείται από 8 RS κωδικοποιητές εξωτερικά και από 64 BCH εσωτερικά. Επιπλέον χρησιµοποιείται παράλληλος BCH αποκωδικοποιητής που αποτελείται από 8-bit παράλληλα τµήµατα υπολογισµού των syndromes καθώς και των ριζών του πολυωνύµου µε τη µέθοδο του Chien search ενώ χρησιµοποιούνται µόνο δυο τµήµατα υπολογισµού των πολυωνύµων εύρεσης λαθών ώστε να µειωθούν οι πόροι σε υλικό που απαιτούνται. Τέλος αξίζει να αναφερθεί µία υλοποίηση συστήµατος σε σειρά [24] σύµφωνα µε την οποία χρησιµοποιούνται κώδικες LDPC εσωτερικά και RS εξωτερικά που επιτυγχάνει ρυθµό επεξεργασίας µερικών δεκάδων Gbits/s. Χρησιµοποιήθηκε RS κώδικας και όχι κάποιος δυαδικός BCH διότι παρατηρήθηκε ορισµένες φορές ότι προέκυπτε από τον LDPC έξοδος µε µεγάλο πλήθος λαθών κοντά στα 150 bits. Ο LDPC κώδικας που χρησιµοποιείται έχει µέγεθος (9216, 7936), χρησιµοποιεί ~ 112 ~

113 αναπαράσταση δυο bits για την soft τιµή και πραγµατοποιεί 4 επαναλήψεις το πολύ ώστε να υπάρχει και υψηλός ρυθµός επεξεργασίας και ο κώδικας RS έχει µέγεθος µπλοκ (992, 956). 5.2 οµή του συστήµατος σε σειρά Εισαγωγή Τα τελευταία χρόνια µε την αλµατώδη αύξηση της υπολογιστικής δυνατότητας και την δηµιουργία ταχύτερων δικτύων, οι απαιτήσεις σε θέµατα επικοινωνίας αυξάνονται όλο και περισσότερο. Ιδιαίτερο χαρακτηριστικό στα νέα ψηφιακά επικοινωνιακά συστήµατα πρέπει να είναι η αυξηµένη αξιοπιστία της µετάδοσης των δεδοµένων και για αυτό το λόγο χρησιµοποιούνται κώδικες εύρεσης και διόρθωσης λαθών. Με την αλµατώδη αύξηση της τεχνολογίας έγινε δυνατή η υλοποίηση κωδικών όπως οι LDPC, οι οποίοι αν και εφευρέθηκαν στην δεκαετία του 60 στην σηµερινή εποχή αποτελούν ίσως τους πιο υποσχόµενους κώδικες και χρησιµοποιούνται σε αρκετά πρότυπα όπως σε δορυφορική µετάδοση Digital Video Broadcasting (DVB), DVB-S2, IEEE 802.3an (10GBASE-T) και ΙΕΕΕ (WiMAX). Επιπλέον εκτός από τη χρήση µεµονωµένων κωδικών χρησιµοποιούνται πλέον και ζεύγη από αυτούς για περαιτέρω αύξηση της απόδοσης. Συγκεκριµένα στο πρότυπο DVB-S2 οι κώδικες LDPC χρησιµοποιούνται µαζί µε κώδικες BCH σε διάφορα code rate µε στόχο την αύξηση της αξιοπιστίας της µετάδοσης. Μίας τέτοιας λογικής είναι και το σύστηµα που θα εξετάσουµε στην συγκεκριµένη εργασία που αποτελείται εξωτερικά από κώδικα BCΗ και εσωτερικά από κώδικα LDPC αν και δεν υποστηρίζει κάποιο πρότυπο Ανάλυση των συστατικών του προς εξέταση συστήµατος Σε αυτήν την ενότητα θα παρουσιάσουµε το πλήρες µπλοκ διάγραµµα του concatenated LDPC- BCH συστήµατος που θα χρησιµοποιηθεί για αυτήν την εργασία και θα αναλύσουµε τα δοµικά στοιχεία που το αποτελούν. Τέλος θα αναφερθούν τα µεγέθη κωδικών για τα οποία θα γίνει σύνθεση και υλοποίηση σε FPGA. Στο επόµενο σχήµα παρουσιάζεται το διάγραµµα του συστήµατος έτσι όπως θα υλοποιηθεί. Σχήμα 5.1 : Συνδεσμολογία συνολικού συστήματος προς υλοποίηση ~ 113 ~

114 Πρώτο στοιχείο της υλοποίησης του συστήµατος είναι, όπως είχαµε αναφέρει και στο µοντέλο του ψηφιακού συστήµατος, η ψηφιακή πηγή. Στην συγκεκριµένη περίπτωση για ψηφιακή πηγή χρησιµοποιείται ένα LFSR. Λειτουργεί ως µία ψευδοτυχαία γεννήτρια παραγωγής διανυσµάτων που τροφοδοτούν τις εισόδους του κώδικα BCH. Πρόκειται για µία απλή υλοποίηση υψηλής συχνότητας λειτουργίας. Έχει ως εισόδους, το σήµα en που όταν αποκτήσει την τιµή 1 το LFSR παράγει σε κάθε κύκλο µια νέα τιµή στην έξοδο του ενώ στην είσοδο starting εισάγουµε µία αρχική τιµή βάση της οποίας θα αρχίσει να παράγει και άλλες από τον επόµενο κύκλο. Ως έξοδο έχει το σήµα lfsr2_out. Μόνο 2 bits χρησιµοποιούνται από αυτήν την έξοδο και τροφοδοτούν τους κωδικοποιητές BCH. Το δεύτερο στοιχείο µετά την ψηφιακή πηγή είναι οι κωδικοποιητές καναλιού. Στο σύστηµα µας χρησιµοποιούνται 2 κωδικοποιητές BCH (εξωτερικοί) που τροφοδοτούν ένα κωδικοποιητή LDPC. Ο λόγος που επιλέχτηκαν 2 κωδικοποιητές BCH σχετίζεται τόσο µε την αύξηση της διορθωτικής ικανότητας όσο και για την διατήρηση ενός υψηλού ρυθµού επεξεργασίας στο σύστηµα. Όπως είχε αναφερθεί και σε προηγούµενο κεφάλαιο σχετικά µε την διορθωτική ικανότητα για τους κώδικες BCH όσο µεγαλώνουν οι κώδικες το πλήθος των λαθών που µπορούν να διορθώσουν µειώνεται αναλογικά σε σχέση µε την χρήση µικρότερων κωδικών. Για παράδειγµα έστω ότι έχουµε έναν δυαδικό κώδικα BCH µεγέθους (n,k) όπου n = 2 m -1 και συνεπώς τα στοιχεία του πεδίου αναπαρίστανται µε m bits. Η διορθωτική του ικανότητα είναι t = (n k)/m. Στην συνέχεια έχουµε έναν δυαδικό κώδικα ίδιου code rate αλλά µεγαλύτερου µεγέθους έστω (2n,2k). Για την αναπαράσταση των στοιχείων αυτού του πεδίου χρησιµοποιούνται m = log (2n + 1) = m + 1 bits. Η διορθωτική ικανότητα για αυτόν τον κώδικα είναι t = (2n 2k) (m + 1) = 2(n k) (m + 1). Είναι φανερό ότι χρησιµοποιώντας 2 τµήµατα από τον πρώτο κώδικα έχουµε αύξηση στον αριθµό των bits που µπορούν να διορθωθούν ενώ το µέγεθος της αρχιτεκτονικής παραµένει σε περίπου ίδια επίπεδα. Η πραγµατικότητα βέβαια είναι λίγο διαφορετική. Με τη χρήση 2 συστηµάτων BCH αναφερόµαστε σε βέλτιστη διορθωτική ικανότητα 2t καθώς υπάρχει η δυνατότητα και µε λιγότερα λάθη συνολικά στις δύο κωδικές λέξεις να υπάρξει αποτυχία στην αποκωδικοποίηση. Αν για παράδειγµα υπάρχουν συνολικά 2t 4 λάθη και στις δύο κωδικές λέξεις αλλά κατανέµονται t + 1 στην µία και t 5 στην άλλη τότε τα λάθη στην δεύτερη κωδική λέξη θα έχουµε πλήρης διόρθωση, δεν θα γίνει όµως το ίδιο και µε την πρώτη. Στην περίπτωση χρήσης ενός συστήµατος εφόσον η διορθωτική ικανότητα είναι ίση η λίγο µεγαλύτερη από 2t 4 τότε έχουµε πλήρης διόρθωση. Ωστόσο όσο µικρότερο είναι το code rate των κωδικών που χρησιµοποιούνται τόσο καλύτερα είναι τα αποτελέσµατα µε τη χρήση περισσότερων και µικρότερων κωδικοποιητών. Σε αυτό το σηµείο θα αναλυθεί η συµπεριφορά του BCH σχετικά µε την διόρθωση των λαθών. Για αυτόν τον κώδικα είναι εξ αρχής γνωστή η διορθωτική ικανότητα του. Εφόσον τα λάθη που δηµιουργούνται από το κανάλι είναι λιγότερα από αυτήν, έχουµε πλήρης διόρθωση. Είναι ωστόσο σηµαντικό να αναφερθεί τι γίνεται όταν έχουµε περισσότερα λάθη. Η (ελάχιστη) απόσταση του κώδικα µεταξύ οποιονδήποτε δυο κωδικών του λέξεων είναι 2t + 1. Αν υπάρχουν t + 1 λάθη σε µία κωδική λέξη βρισκόµαστε στο µέσο της απόστασης η διόρθωση αποτυγχάνει και δεν γίνεται καµία αλλαγή στην λέξη που δεν είναι κωδική λέξη του. Σε περίπτωση που υπάρχουν περισσότερα λάθη πραγµατοποιείται διόρθωση που όµως έχει ως αποτέλεσµα µία άλλη κωδική λέξη. Το αποτέλεσµα είναι ότι στην συγκεκριµένη περίπτωση εισάγονται επιπλέον λάθη. Όσο µικρότερο είναι το ποσοστό των µη επιθυµητών κωδικών λέξεων που προκύπτουν τόσο καλύτερα είναι τα αποτελέσµατα. Όσον αφορά στο θέµα του throughput του συστήµατος έχουµε σαφή µείωση των κύκλων που απαιτούνται (σχεδόν στο µισό) για την συνολική διαδικασία (κωδικοποίηση και αποκωδικοποίηση) εφόσον τα δύο συστήµατα των BCH λειτουργούν παράλληλα, κάτι που ισχύει στην περίπτωση µας. Οι κωδικοποιητές BCH που θα χρησιµοποιηθούν έχουν δοµή όπως περιγράφηκε στο προηγούµενο κεφάλαιο. Η είσοδος της λέξης πληροφορίας (input_encoder) σε κάθε έναν από αυτούς αποτελείται ~ 114 ~

115 από ένα bit όπως είχε αναφερθεί και τροφοδοτείται µε δεδοµένα από το LFSR. Επιπλέον υπάρχει και το σήµα en_in το οποίο πρέπει να πάρει την τιµή 1 προκειµένου να ξεκινήσει η κωδικοποίηση και προέρχεται από ένα κεντρικό FSM που ελέγχει όλη την λειτουργία. Η έξοδος τους (output_encoder) όσον αφορά τα δεδοµένα είναι και αυτή 1 bit και τροφοδοτούνται ταυτόχρονα στον LDPC κωδικοποιητή. Τo σήµα en_channel που εξέρχεται από κάθε έναν από τους δυο κωδικοποιητές συνδέεται µέσω µιας πύλης and µε την είσοδο din_val του κωδικοποιητή LDPC, ειδοποιώντας τον, ότι υπάρχουν έγκυρα δεδοµένα στην είσοδο του και ότι µπορεί να ξεκινήσει την λειτουργία του όταν αποκτήσει τιµή 1. Θα πραγµατοποιήσουµε 2 υλοποιήσεις στις οποίες η κωδική λέξη σε κάθε έναν από τους 2 κωδικοποιητές αποκωδικοποιητές είναι (756, 696) στην πρώτη υλοποίηση και (756, 666) στην δεύτερη. Τα µεγέθη αυτά προκύπτουν µετά από τη χρήση shortening 267 bits σε κώδικες µεγέθους (1023, 963) και (1023, 933) αντίστοιχα. Στην συνέχεια υπάρχει ο κωδικοποιητής LDPC µε τις εισόδους din_val και din. Όταν στην είσοδο din_val που αποτελείται από 1 bit φτάσει σήµα µε τιµή 1 ειδοποιείται ο κωδικοποιητής ότι µπορεί να αρχίσει η λειτουργία του όπως αναφέρθηκε και παραπάνω. Η είσοδος din αποτελείται από 2 bits και τροφοδοτείται µε τα δεδοµένα από τις εξόδους των δύο κωδικοποιητών BCH που ο κάθε ένας έχει έξοδο 1 bit. Από την ένωση των 2 κωδικών λέξεων των κωδικοποιητών BCH προκύπτει η λέξη πληροφορίας για τον κωδικοποιητή LDPC. Και στις 2 δυο υλοποιήσεις που θα πραγµατοποιηθούν, η κωδική λέξη για τον LDPC είναι (2016, 1512). Οι έξοδοι του κωδικοποιητή που θα µας απασχολήσουν είναι τα σήµατα dout και dout_val. Μέσω της εξόδου dout που αποτελείται από 2 bits εξέρχεται η κωδική λέξη και κατευθύνεται στο κανάλι. Το σήµα από την έξοδο din_val αποτελείται από 1 bit και όταν αποκτήσει τιµή 1 ειδοποιεί το κανάλι ότι υπάρχουν έγκυρα δεδοµένα στην έξοδο dout και µπορεί να ξεκινήσει η δική του λειτουργία και διατηρεί την τιµή αυτή µέχρι ολόκληρη η κωδική λέξη να µεταδοθεί στο κανάλι. Στην συνέχεια του συστήµατος υπάρχει το κανάλι προσθετικού Gaussian θορύβου. Σκοπός του είναι να αλλοιώσει κατά ένα µέρος την κωδική λέξη που προκύπτει από τον συνδυασµό των κωδικοποιητών BCH LDPC βάση της Gaussian κατανοµής εξοµοιώνοντας µε αυτό τον τρόπο τον θόρυβο που εισέρχεται στο κανάλι µετάδοσης σε πραγµατικά συστήµατα. Το κανάλι έχει ως εισόδους τα σήµατα: dinready, datain, sigma1, sigma2 που αποτελούνται από 1, 2, 23, 23 bits αντίστοιχα και ως εξόδους έχει τα σήµατα doutready, dataout11, dataout21 που αποτελούνται από 1, 6, 6 bits αντίστοιχα. Όταν το σήµα dinready πάρει τιµή 1 σηµαίνει ότι στην είσοδο datain υπάρχουν έγκυρα δεδοµένα και η λειτουργία του τµήµατος µπορεί να αρχίσει. Η είσοδος datain συνδέεται µε την έξοδο dout του κωδικοποιητή LDPC όπου υπάρχει η κωδική λέξη που έχει προκύψει από αυτόν. Οι είσοδοι sigma1, sigma2 καθορίζουν άµεσα το επίπεδο του θορύβου που θέλουµε να εισάγουµε στο σύστηµα. Η έξοδος doutready ειδοποιεί την επόµενη βαθµίδα ότι τα δεδοµένα στις εξόδους dataout11, dataout21 είναι έγκυρα όταν έχει τιµή 1 την οποία διατηρεί καθ όλη την διάρκεια µετάδοσης της λέξης. Στις δυο τελευταίες εξόδους που αναφέρθηκαν, υπάρχουν τα δεδοµένα της κωδικής λέξης στα οποία έχει προστεθεί ο θόρυβος από το κανάλι και αντιστοιχούν στο ζεύγος των bits που εισήρθαν από τις εισόδους την ανάλογη χρονική στιγµή. Παρατηρούµε όµως ότι αντί για 1 bit σε κάθε µία έξοδο έχουµε 6 bits. Ο λόγος είναι ότι µε την χρήση περισσότερων bits υπάρχει η δυνατότητα για υπολογισµό της αξιοπιστίας του λαµβανοµένου σήµατος (υπολογισµός LLR) που χρησιµοποιείται κατά την αποκωδικοποίηση στον LDPC κώδικα. Ουσιαστικά εκτός της πρόσθεσης θορύβου στο κανάλι που χρησιµοποιείται υπάρχει ένας BPSK διαµορφωτής και ο αντίστοιχος αποδιαµορφωτής βάση του οποίου υπολογίζονται και τα LLR. Τέλος όσον αφορά την δοµή του καναλιού που χρησιµοποιήθηκε ο µετασχηµατισµός Box Muller για την παραγωγή τυχαίων αριθµών κανονικής κατανοµής και ο αλγόριθµος MT19937 για την υλοποίηση του µηχανισµού µετασχηµατισµού της οµοιόµορφης κατανοµής. ~ 115 ~

116 Το επόµενο component που θα χρησιµοποιηθεί σχετίζεται άµεσα µε την λειτουργία του καναλιού. Πρόκειται για το τµήµα βάση του οποίου καθορίζει ο χρήστης του συστήµατος τη στάθµη του θορύβου σε E N που θα εισαχτεί στην κωδική λέξη στο κανάλι. Το component αυτό ονοµάζεται snrlut και περιέχει την διασπορά και την τυπική απόκλιση της για ένα διάστηµα σταθµών θορύβου. Μέσω της εισόδου SNR καθορίζεται η στάθµη του θορύβου από τον χρήστη ενώ από τις δύο εξόδους του, sigma και sigma2 που συνδέονται µε τις αντίστοιχες εισόδους του καναλιού παρέχοντας του, την απαραίτητη πληροφορία για την στάθµη θορύβου που επιθυµείται. Πρέπει να σηµειωθεί ότι η τιµή στην είσοδο SNR προέρχεται µέσω του κεντρικού FSM που υπάρχει στο σύστηµα. Ο λόγος είναι ότι εφόσον µια µέτρηση για µια στάθµη θορύβου θεωρηθεί ικανοποιητική υπάρχει αυτόµατη αναβάθµιση της στάθµης του θορύβου χωρίς την εµπλοκή του χρήστη. Η νέα στάθµη θορύβου που προκύπτει από τον προηγούµενο τρόπο είναι χαµηλότερη που σηµαίνει ότι γίνεται µικρότερη αλλοίωση της κωδικής λέξης. Μετά το κανάλι υπάρχει ο αποκωδικοποιητής LDPC. Σε αυτόν καταλήγουν τα δεδοµένα από το κανάλι που περιέχουν την αλλοιωµένη κωδική λέξη. Τα δεδοµένα αυτά εισέρχονται στις εισόδους dllr0, dllr1 του αποκωδικοποιητή και θεωρούνται έγκυρα όταν στην άλλη είσοδο του, din_val που συνδέεται µε την έξοδο του καναλιού doutready υπάρχει τιµή 1. Υπάρχει ακόµα η είσοδος n_iter όπου ο χρήστης µπορεί να επιλέξει πόσες επαναλήψεις θα πραγµατοποιηθούν µιας και ο αλγόριθµος που χρησιµοποιείται είναι επαναληπτικός. Οι έξοδοι του αποκωδικοποιητή είναι: το σήµα dout από όπου εξέρχονται ανά 2 bits τα δεδοµένα της λέξης µήκους 1512 bits µετά την διόρθωση που υπέστη από τον κώδικα και το σήµα dout_val που όταν έχει τιµή 1 πληροφορεί την επόµενη βαθµίδα ότι υπάρχουν έγκυρα δεδοµένα στην έξοδο dout. Πρέπει να σηµειωθεί ότι ο LDPC αποκωδικοποιητής που χρησιµοποιείται παίρνει soft-decision αποφάσεις, για αυτό άλλωστε γίνεται και ο υπολογισµός των LLR στο κανάλι, σε αντίθεση µε τον αποκωδικοποιητή του BCH κώδικα που παίρνει harddecision αποφάσεις. Μετά τον αποκωδικοποιητή LDPC ακολουθούν οι δύο αποκωδικοποιητές BCH. Σε αυτό το σηµείο επιχειρείται περαιτέρω διόρθωση της λέξης µε τελικό στόχο να προκύψει µια λέξη µε όσο το δυνατόν λιγότερα λάθη σε σχέση µε την αρχική λέξη που εισήρθε στους αντίστοιχους 2 κωδικοποιητές. Οι δύο αυτοί αποκωδικοποιητές έχουν ως εισόδους τα σήµατα: en_in που συνδέονται µε το σήµα dout_val του LDPC αποκωδικοποιητή το οποίο όταν έχει τιµή 1 σηµαίνει ότι υπάρχουν έγκυρα δεδοµένα στις εισόδους eisodos_bit. Τα δεδοµένα αυτά προέρχονται από την έξοδο dout του LDPC αποκωδικοποιητή. Η συγκεκριµένη έξοδος αποτελείται από 2 bits µε κάθε ένα από αυτά να κατευθύνεται στον αντίστοιχο BCH αποκωδικοποιητή ανάλογα µε το πως είχαν σταλεί αρχικά από τους κωδικοποιητές BCH στον LDPC. Οι έξοδοι των αποκωδικοποιητών αυτών είναι τα σήµατα exodos και en_out. Κάθε ένα από τα σήµατα exodos περιέχει στην ιδανική περίπτωση που όλα τα λάθη έχουν διορθωθεί, µία από τις δυο λέξεις πληροφορίας, των 696 ή 666 bits ανάλογα µε την καθεµία υλοποίηση που πραγµατοποιείται, όπως αυτές εισήλθαν στους 2 κωδικοποιητές. Πρέπει να τονιστεί ότι οι συγκεκριµένες έξοδοι έχουν µέγεθος σε bits όσο είναι η λέξη πληροφορίας (696 η 666 bits) µε αποτέλεσµα να εµφανίζεται το τελικό αποτέλεσµα στην έξοδο σε έναν κύκλο όπως προκύπτει και από την περιγραφή του τµήµατος διόρθωσης που περιγράφηκε στο προηγούµενο κεφάλαιο. Tα σήµατα en_out από τους δυο αποκωδικοποιητές συνδέονται πρώτα σε µία πύλη and και από εκεί κατευθύνονται στην επόµενη βαθµίδα. Όταν αποκτήσουν την τιµή 1 σηµαίνει ότι η διόρθωση έχει πραγµατοποιηθεί και ότι στις εξόδους exodοs υπάρχει η διορθωµένη λέξη. Σε αυτό το σηµείο µπορούµε να πούµε ότι το σύστηµα σε σειρά που περιγράφουµε έχει ουσιαστικά ολοκληρωθεί. Μετά τους δυο αποκωδικοποιητές ακολουθούν άλλες δύο βαθµίδες που έχουν ως στόχο την µέτρηση της απόδοσης του συστήµατος. Στην πρώτη από αυτές ελέγχουµε τα λάθη που τελικά δεν διορθώθηκαν, τον αριθµό των frames που στάλθηκαν καθώς και τον αριθµό των frames που ~ 116 ~

117 περιείχαν τουλάχιστον ένα λάθος. Η επόµενη βαθµίδα δεν είναι τίποτα περισσότερο από µια µνήµη που αποθηκεύει τα παραπάνω δεδοµένα σε θέσεις ανάλογες µε τη στάθµη του θορύβου στην οποία πραγµατοποιήθηκε η µέτρηση. Πιο συγκεκριµένα η βαθµίδα που πραγµατοποιεί την µέτρηση έχει ως εισόδους τα σήµατα: starting που σχετίζεται µε την αρχική τιµή ενός LFSR όµοιο µε το αρχικό που δηµιουργεί την είσοδο στο σύστηµα, το σήµα eisodos_from_diorthosi που αναφέρεται στις τελικές δυο λέξεις που προήλθαν από τους 2 BCH αποκωδικοποιητές και το σήµα en_in που συνδέεται µε την έξοδο της πύλης and όταν έχει την τιµή 1 ειδοποιείται η βαθµίδα ότι υπάρχουν έγκυρα δεδοµένα στην είσοδο eisodos_from_diorthosi και η λειτουργία του τµήµατος µπορεί να αρχίσει. Τα σήµατα που αποτελούν τις εξόδους αυτού του σταδίου είναι: το σήµα output_n_lathon που αναφέρεται στα συνολικά λάθη που έχουν µετρηθεί για τη συγκεκριµένη στάθµη θορύβου, το σήµα output_n_repeat που αναφέρεται στον αριθµό των frames που έχουν σταλεί και έχουν ελεγχθεί για λάθη στην υπάρχουσα στάθµη θορύβου, το σήµα output_n_frame που αναφέρεται στο πόσα από τα παραπάνω frames που έχουν σταλεί και ελεγχθεί περιέχουν τουλάχιστον ένα λάθος και τέλος το σήµα en_out που ειδοποιεί το κεντρικό FSM για την ολοκλήρωση του ελέγχου. Η βαθµίδα αποθήκευσης έχει ως εισόδους τα σήµατα: eisodos_lathon, eisodos_repeat, eisodos_frame που περιέχουν τις τιµές από την βαθµίδα του ελέγχου, διαµέσου του κεντρικού FSM, σχετικά µε τα συνολικά λάθη,frames που στάλθηκαν και τα frames που περιείχαν ένα τουλάχιστον λάθος για την συγκεκριµένη στάθµη θορύβου που µελετάµε το σύστηµα η οποία δίνεται στην είσοδο snr_value, το σήµα read το οποίο όταν γίνεται 1 τα δεδοµένα που έχουν αποθηκευτεί συνολικά στην µνήµη παρουσιάζονται στις εξόδους της και τέλος το σήµα en_in που συνδέεται µε την έξοδο en_to_sis_apo του κεντρικού FSM που όταν αποκτά τιµή 1 ειδοποιεί την βαθµίδα για αναβάθµιση των δεδοµένων στην µνήµη. Οι έξοδοι της βαθµίδας αποθήκευσης είναι τα σήµατα: exodos_snr, exodos_lathon, exodos_repeat, exodos_frame όπου σε κάθε κύκλο όταν το σήµα read έχει τιµή 1 εµφανίζεται ένα διαφορετικό σετ από επίπεδο θορύβου, µε το συνολικό πλήθος λαθών, το συνολικά frames που στάλθηκαν και το πλήθος των frames µε τουλάχιστον ένα λάθος που αντιστοιχούν σε αυτό. Το τελευταίο τµήµα που υπάρχει είναι ένα κεντρικό FSM βάση του οποίου ρυθµίζεται και ελέγχεται όλη η διαδικασία από την παραγωγή της λέξης πληροφορίας µέχρι την µέτρηση των λαθών και την παρουσίαση όλων των τιµών στις εξόδους της µνήµης. Τα σήµατα που αποτελούν τις εισόδους αυτού του FSM είναι: το σήµα mode βάση του οποίου ο χρήστης καθορίζει αν το σύστηµα θα αρχίσει να κάνει υπολογισµούς από την default στάθµη θορύβου που έχει οριστεί η θα χρησιµοποιηθεί µια άλλη τιµή που θα δώσει εξωτερικά ο χρήστης µέσω της εισόδου snr_user, το σήµα freeze βάση του οποίου ολοκληρώνεται όλη η διαδικασία µέχρι και την µέτρηση των λαθών στο τωρινό frame και αρχίζει η διαδικασία της ανάγνωσης της µνήµης του αντίστοιχου τµήµατος, τα σήµατα eisodos_n_lathon, eisodos_n_repeat, eisodos_n_frame όπου εισέρχονται οι τιµές που υπολογίστηκαν από την βαθµίδα των µετρήσεων και το τέλος το σήµα en_in που προέρχεται και αυτό από την βαθµίδα και των µετρήσεων και ειδοποιεί ότι οι µετρήσεις ολοκληρώθηκαν. Οι έξοδοι του FSM αποτελούνται από τα σήµατα: rst_out και rst_channel_out που αποτελούν τα σήµατα reset για το στάδιο των µετρήσεων και για το κανάλι αντίστοιχα, τα σήµατα en_lfsr, en_to_encoder και en_to_sis_apo τα οποία καθορίζουν πότε θα αρχίσει η λειτουργία του LFSR που παράγει την κωδική λέξη, των κωδικοποιητών BCH και πότε θα γίνει η αποθήκευση στην µνήµη των µετρήσεων που υπολογίσθηκαν αντίστοιχα, το σήµα read που ειδοποιεί την µνήµη ότι µπορεί να αρχίσει η διαδικασία της ανάγνωσης, τo σήµα snr που τροφοδοτεί το τµήµα snrlut µε την πληροφορία για το ποια στάθµη θορύβου επιθυµείται από τον χρήστη, τα σήµατα exodos_n_lathon, exodos_n_repeat και exodos_n_frames που χρησιµοποιούνται για την µεταφορά των µετρήσεων από την αντίστοιχη βαθµίδα στην µνήµη και τέλος υπάρχει το σήµα finished που παίρνει την τιµή 1 όταν έχουν ολοκληρωθεί οι µετρήσεις στο άνω όριο του διαστήµατος που αφορά την στάθµη του θορύβου. Τέλος είναι ιδιαίτερα σηµαντικό να αναφερθεί ότι στο συγκεκριµένο FSM πραγµατοποιείται ο έλεγχος για το πλήθος των λαθών σε µία στάθµη θορύβου ~ 117 ~

118 και την αναβάθµιση της αν η µέτρηση είναι ικανοποιητική. Μια µέτρηση θεωρείται ικανοποιητική εφόσον για µία στάθµη θορύβου έχουν µετρηθεί 1000 λάθη. Αυτή είναι και η συνθήκη για την αυτόµατη ανανέωση της τιµής του θορύβου στο τµήµα snrlut. Τα τελευταία 3 τµήµατα που αναφέρθηκαν παραπάνω θα αναλυθούν περισσότερο στην συνέχεια δείχνοντας την αρχιτεκτονική ή/και τις καταστάσεις των FSM ανάλογα µε την δοµή τους. Σε αυτό το σηµείο πρέπει να αναφερθεί ότι τα σήµατα reset που αφορούν τον κωδικοποιητή LDPC, τον αποκωδικοποιητή LDPC είναι σύγχρονα και απαιτείται χρήση καταχωρητών πριν εφαρµοστούν σε αυτούς από το κεντρικό reset, rst του συστήµατος. Σύγχρονο πρέπει να είναι και το αντίστοιχο σήµα για το κανάλι. Στην συγκεκριµένη περίπτωση αυτό προέρχεται από το κεντρικό FSM. Ειδικά το κανάλι πρέπει να παραµείνει για περίπου 200 κύκλους σε κατάσταση reset προτού αρχίσει να λειτουργεί. Σχετικά µε το reset της µνήµης όπου αποθηκεύονται όλες οι µετρήσεις πρέπει να επισηµανθεί ότι είναι διαφορετικό σε σχέση µε το γενικό reset όλων των άλλων components και ελέγχεται και αυτό κατευθείαν από τον χρήστη. Η διεπαφή µεταξύ συστήµατος χρήστη τελικά αποτελείται από τα σήµατα: rst το γενικό reset του συστήµατος, rst_apo το reset για την µνήµη, mode που σχετίζεται µε το αν θα χρησιµοποιηθεί η default τιµή για τους υπολογισµούς η όχι, το σήµα snruser που καθορίζει ποια θα είναι η στάθµη του θορύβου που επιθυµεί και τέλος το σήµα freeze που χρησιµοποιείται για την διαδικασία της ανάγνωσης της µνήµης µε τις µετρήσεις. Σκοπός της συγκεκριµένης εργασίας είναι να διαπιστωθεί κατά πόσο µπορεί να βελτιωθεί η απόδοση ενός κώδικα LDPC µε τη χρήση ενός άλλου BCH εξωτερικά από αυτόν και ιδιαίτερα για το σηµείο που αρχίζει η εµφάνιση του error floor. Σκοπός είναι η µείωση ή και η εξάλειψη του, βάση ενός κώδικα που δεν εµφανίζει τέτοια φαινόµενα. Για αυτό το λόγο και δεδοµένου ότι η απόδοση του στα επίπεδα θορύβου που πραγµατοποιείται η µελέτη είναι χαµηλότερη του LDPC, ο κώδικας BCH χρησιµοποιείται εξωτερικά. Σχεδιαστικά η προσπάθεια επικεντρώθηκε στην σχεδίαση του BCH κώδικα, της οµαλής σύνδεσης του µε τα υπόλοιπα συστήµατα και την κατάλληλη διεπαφή που θα επέτρεπε την σωστή λειτουργία και την εύκολη χρήση του συστήµατος. Η σχεδίαση των components που αφορούν την κωδικοποίηση και αποκωδικοποίηση του κώδικα LDPC καθώς και του καναλιού που χρησιµοποιήθηκαν πραγµατοποιήθηκε και µελετήθηκε σε άλλες εργασίες [25][26] όπου µπορεί κανείς να δει περισσότερες λεπτοµέρειες. 5.3 Σύστηµα µέτρησης Σε αυτήν την ενότητα θα γίνει παρουσίαση του τµήµατος όπου πραγµατοποιούνται οι µετρήσεις σχετικά µε την απόδοση του όλου συστήµατος σε θέµατα διόρθωσης λαθών Λειτουργία Αρχιτεκτονική Σε αυτό το στάδιο ελέγχονται οι δυο λέξεις που προκύπτουν µετά το τέλος των αποκωδικοποιήσεων από τους δύο αποκωδικοποιητές BCH και συγκρίνονται µε τις λέξεις πληροφορίας που είχαν αρχικά σταλεί στους δυο κωδικοποιητές. Οι λέξεις από τους 2 αποκωδικοποιητές αποθηκεύονται σε κατάλληλους καταχωρητές ολίσθησης και σε κάθε κύκλο ρολογιού, 1 bit από κάθε καταχωρητή ολίσθησης συγκρίνεται µε το αντίστοιχο αρχικό δεδοµένο. Πραγµατοποιείται ουσιαστικά σύγκριση bit προς bit µεταξύ των αρχικών και τελικών δεδοµένων. Αυτό ωστόσο προϋποθέτει ότι είναι γνωστό σε αυτό το στάδιο ποια είναι τα αρχικά δεδοµένα. Αυτό θα µπορούσε να γίνει µε τη χρήση µιας µνήµης στην οποία θα αποθηκεύονταν τα δεδοµένα από το αρχικό LFSR ωστόσο προτιµήθηκε να ~ 118 ~

119 χρησιµοποιηθεί ένα πανοµοιότυπο LFSR µε το αρχικό σε αυτό το τµήµα που θα είναι συγχρονισµένο µε την όλη διαδικασία ώστε να παράγει τα ίδια δεδοµένα µε το αρχικό. Στην συνέχεια ακολουθεί η διαδικασία της σύγκρισης µεταξύ των δεδοµένων. Όταν προκύπτουν διαφορές από τη σύγκριση αυξάνουν την τιµή τους, µετρητές που υπολογίζουν το πλήθος των λαθών αλλά και το πλήθος των λανθασµένων frames. Ένα frame τη φορά ελέγχεται και συνεπώς ο αντίστοιχος µετρητής αυξάνεται µία φορά όσα λάθη και αν υπάρχουν στο frame. Υπάρχει ακόµα ένας µετρητής στο data path που αυξάνει κατά 1 και αυτός µε κάθε νέο frame που ελέγχεται, µε την προϋπόθεση ότι και αυτή η µέτρηση πραγµατοποιείται στην ίδια στάθµη θορύβου µε τις υπόλοιπες που προηγήθηκαν. Σε αυτούς τους µετρητές ουσιαστικά υπάρχουν τα αποτελέσµατα που αφορούν µία συγκεκριµένη στάθµη θορύβου (την τελευταία που γίνεται ο έλεγχος) και αποθηκεύονται σε καταχωρητές ανάλογου µεγέθους. Στην συνέχεια οι τιµές αυτές στέλνονται προς αποθήκευση στην βαθµίδα της µνήµης στην οποία όπως θα δούµε αργότερα υπάρχουν οι τιµές για κάθε στάθµη θορύβου που έχει ελεγχθεί. Όταν από το κεντρικό FSM διαπιστωθεί ότι έχουν συµπληρωθεί 1000 λάθη τότε αρχικοποιεί τους καταχωρητές αυτού του τµήµατος που περιέχουν τις τιµές, στο 0 ώστε να µπορούν να ξεκινήσουν καινούριες µετρήσεις για µία άλλη στάθµη θορύβου. Στο επόµενο σχήµα παρουσιάζεται η αρχιτεκτονική του τµήµατος των µετρήσεων. Σχήμα 5.2 : Αρχιτεκτονική του τμήματος μέτρησης Σε αυτήν την αρχιτεκτονική εκτός από τους 3 βασικούς αθροιστές που χρησιµοποιούνται για την πραγµατοποίηση των µετρήσεων υπάρχει και ένας κατάλληλος καταχωρητής ολίσθησης στον οποίο φορτώνονται οι δυο λέξεις από τους αποκωδικοποιητές BCH. Ο συγκεκριµένος καταχωρητής ολίσθησης έχει την δυνατότητα παράλληλης φόρτωσης λόγω των πολυπλεκτών που υπάρχουν µεταξύ των καταχωρητών όπως είχε περιγραφεί και σε ενότητες του αποκωδικοποιητή BCH. Σε αυτόν τον ~ 119 ~

120 καταχωρητή αποθηκεύονται και οι δυο λέξεις στο πρώτο µισό τµήµα του καταχωρητή η µία και στο υπόλοιπο η δεύτερη. Ο καταχωρητής έχει δύο εξόδους του 1 bit η καθεµία. Η µία προέρχεται από το ένα άκρο του καταχωρητή ολίσθησης και η άλλη από το κέντρο του έτσι ώστε να εµφανίζονται στις εξόδους αυτές, bits και από τις δύο λέξεις όπως ακριβώς γίνεται µε το αρχικό LFSR όπου σε κάθε κύκλο παράγονται 2 bits καθένα από τα οποία κατευθύνεται σε διαφορετικό κωδικοποιητή BCH. Τα 2 αυτά bits συγκρίνονται µε τα 2 bits που προκύπτουν από το LFSR αυτής της βαθµίδας µέσω 2 πυλών xor. Όταν στην έξοδο των xor υπάρχει τιµή 1 σηµαίνει ότι εντοπίστηκε λάθος στις λέξεις. Οι έξοδοι των xor συνδέονται µε την µία είσοδο πυλών and στην άλλη είσοδο των οποίων συνδέεται σήµα από το FSM της βαθµίδας που επιτρέπει την διαδικασία της µέτρησης των λαθών. Οι έξοδοι των πυλών and αποτελούν σήµατα επιλογής σε δύο πολυπλέκτες που χρησιµοποιούνται για την διαδικασία της µέτρησης. Στην µία είσοδο τους υπάρχει τιµή 0 και στην άλλη είσοδο τιµή 1 µε την πρώτη είσοδο να επιλέγεται όταν το bit που ελέγχεται είναι το αναµενόµενο και την δεύτερη σε περίπτωση που το bit είναι λανθασµένο. Οι δύο αυτές έξοδοι εισέρχονται σε αθροιστή κατάλληλου µεγέθους και το αποτέλεσµα αποθηκεύεται σε κατάλληλο καταχωρητή. Πρέπει να σηµειωθεί ότι και η τιµή του καταχωρητή συµµετέχει στην άθροιση ώστε να υπάρχει µία συνολική µέτρηση για τα λάθη που δεν αφορά µόνο στον έλεγχο του τωρινού frame αλλά σε όλα τα frames που έχουν σταλεί και αφορούν µία στάθµη θορύβου. Ο καταχωρητή αυτός όπως και οι άλλοι δυο που υπάρχουν και διατηρούν τις τιµές των συνολικών frames που στάλθηκαν αλλά και αυτών στα οποία ανιχνεύτηκε ένα τουλάχιστον λάθος, ελέγχονται όσον αφορά την αρχικοποίηση τους από το FSM της βαθµίδας ανάλογα όµως µε τα δεδοµένα που στέλνει και το κεντρικό FSM του όλου συστήµατος. Για την µέτρηση και των άλλων δυο µεγεθών η αρχιτεκτονική είναι ίδια. Υπάρχει ένας πολυπλέκτης µε την µία είσοδο του να έχει µόνιµη τιµή 0 και την άλλη µόνιµη τιµή 1. Υπάρχει ο καταχωρητής όπου γίνεται η αποθήκευση του αποτελέσµατος και υπάρχει και ο αθροιστής κατάλληλου µεγέθους όπου γίνεται η άθροιση µεταξύ των τιµών του πολυπλέκτη και της υπάρχουσας τιµής του καταχωρητή. Υπάρχει µία µικρή διαφορά σχετικά µε την προέλευση του σήµατος επιλογής στον πολυπλέκτη που σχετίζεται µε την αύξηση του πλήθους των frames που περιέχουν λάθη. Ενώ το σήµα επιλογής στον άλλο πολυπλέκτη µέτρησης των συνολικών frames προέρχεται από το FSM µιας και η συγκεκριµένη τιµή αυξάνεται οπωσδήποτε κατά µια µονάδα µετά την ολοκλήρωση της διαδικασίας των συγκρίσεων, στην περίπτωση µέτρησης των λανθασµένων frames δεν χρησιµοποιείται µόνο η χρήση ενός σήµατος από το FSM. Ο λόγος είναι ότι αρκεί ένα µόνο λάθος για αύξηση της τιµής η οποία δεν πρέπει να αυξάνεται σε περίπτωση που εµφανιστούν και άλλα στο ίδιο frame. Η αλλαγή λοιπόν της τιµής πρέπει να πραγµατοποιείται στο τέλος του ελέγχου του frame και κατ επέκταση είναι απαραίτητη η χρήση ενός καταχωρητή που όπου θα αποθηκεύεται µια τιµή που θα υποδεικνύει αν έχει εµφανιστεί λάθος. Πιο αναλυτικά οι έξοδοι των 2 xor που πληροφορούν για την ύπαρξη λάθους στα bits συνδέονται και µε τις 2 εισόδους µιας πύλης or. Στην συνέχεια η έξοδος αυτής της πύλης συνδέεται µε την είσοδο µιας άλλης πύλης or στην άλλη είσοδο της οποίας βρίσκεται η έξοδος του καταχωρητή στον οποίο αποθηκεύεται µια τιµή ενός bit που δηλώνει την ύπαρξη λάθους η όχι στο frame που ελέγχεται. Με αυτό τον τρόπο µόλις εµφανιστεί τιµή 1 σε µια από τις εξόδους xor τότε και µόνο τότε στον καταχωρητή αποθηκεύεται η τιµή 1 που υποδηλώνει την ύπαρξη λάθους και διατηρείται µέχρι το τέλος του ελέγχου. Η έξοδος του καταχωρητή συνδέεται στην µία είσοδο µιας πύλης and στην άλλη είσοδο της οποίας συνδέεται το σήµα ενεργοποίησης για την αναβάθµιση του αντίστοιχου µετρητή από το FSM και η έξοδος του αποτελεί το σήµα επιλογής του αντίστοιχου πολυπλέκτη. Με την ενεργοποίηση του σήµατος από το FSM γίνεται τελικά η αύξηση στον αντίστοιχο καταχωρητή µέτρησης. Αφού αναλύθηκε η αρχιτεκτονική θα δούµε την λειτουργία βήµα προς βήµα. ~ 120 ~

121 1. Αρχικά γίνεται η αρχικοποίηση όλων των καταχωρητών της βαθµίδας (µετά από γενικό reset στο σύστηµα ή reset από το κεντρικό FSM) όπως επίσης και του LFSR. Οι πολυπλέκτες του καταχωρητή ολίσθησης αρχικά τροφοδοτούνται από την είσοδο Στην συνέχεια φτάνει η λέξη από τους αποκωδικοποιητές στο σύστηµα µέτρησης µε τους πολυπλέκτες στον καταχωρητή ολίσθησης πλέον να διαβάζουν από την είσοδο 0 ώστε να γίνει η παράλληλη φόρτωση στον καταχωρητή. 3. To LFSR σε αυτό το σηµείο λειτουργεί κανονικά και σε κάθε κύκλο ρολογιού δυο bits παράγονται ενώ πραγµατοποιείται ολίσθηση στον αντίστοιχο καταχωρητή µε την έξοδο των πολυπλεκτών που τον απαρτίζουν µέχρι το τέλος της διαδικασίας να τροφοδοτούνται από την είσοδο 0 προκειµένου να γίνει η σύγκριση. 4. Στην συνέχεια πραγµατοποιείται σε κάθε κύκλο σύγκριση µεταξύ των δεδοµένων της λέξης και αυτών του LFSR µε τον πολυπλέκτη που συµµετέχει στην µέτρηση των λαθών να τροφοδοτείται από την είσοδο 1 σε περίπτωση που υπάρχει λάθος, ή από την είσοδο 0 στην περίπτωση που δεν υπάρχει λάθος. 5. Μόλις ολοκληρωθεί η διαδικασία της σύγκρισης ο πολυπλέκτης που συµµετέχει στην µέτρηση του πλήθους των frames που στάλθηκαν εµφανίζει στην έξοδο την τιµή από την είσοδο 1 µε αποτέλεσµα να αυξάνει κατά 1 ο συνολικός αριθµός των frames. Αντίστοιχα ανάλογα την τιµή που έχει αποθηκευτεί στον καταχωρητή σχετικά µε το αν βρέθηκε λάθος στο παρόν frame και τον έλεγχο που πραγµατοποιείται στο FSM ο πολυπλέκτης που συµµετέχει στην µέτρηση των λανθασµένων frames, τροφοδοτείται από την είσοδο 1 αν έχει ανιχνευτεί έστω και ένα λάθος ή την είσοδο 0 σε περίπτωση που οι λέξεις είναι ταυτόσηµες µε τις αρχικές λέξεις πληροφορίας που στάλθηκαν. 6. Οι τιµές αυτές στους καταχωρητές που πραγµατοποιούν τις 3 µετρήσεις που µας ενδιαφέρουν διατηρούνται εκτός και αν έρθει ανάλογο σήµα από το κεντρικό FSM, και η διαδικασία συνεχίζεται µε τον ίδιο τρόπο Λειτουργία FSM Μετά την παρουσίαση της αρχιτεκτονικής του data path σειρά έχει η παρουσίαση του FSM όπου θα γίνει αναφορά στα σήµατα που δέχεται και παράγει καθώς και στους ακριβείς χρονισµούς του. Το FSM παράγει τα σήµατα που ελέγχουν τα σήµατα επιλογής στους πολυπλέκτες που πραγµατοποιούν τις µετρήσεις (έµµεσα σχετικά µε αυτούς που υπολογίζουν τα λανθασµένα frames και τα συνολικά λάθη), και αυτούς στον καταχωρητή ολίσθησης. Παράγει επίσης τα σήµατα αρχικοποίησης στους καταχωρητές που αποθηκεύουν τις µετρήσεις όχι όµως και σε αυτούς στον καταχωρητή ολίσθηση. Επιπλέον παράγει το σήµα που επιτρέπει την λειτουργία του LFSR που υπάρχει σε αυτήν την βαθµίδα και τέλος παράγει το σήµα που υποδηλώνει το τέλος της λειτουργίας της. Επιπρόσθετα δέχεται ως εισόδους σήµα από το κεντρικό FSM που δηλώνει αρχικοποίηση των καταχωρητών του data path λόγω αλλαγής στάθµης θορύβου, την τιµή από το data path που αναφέρει το πλήθος των λαθών που έχουν υπολογιστεί συµπεριλαµβανοµένου και του τελευταίου frame καθώς και το σήµα από τους αποκωδικοποιητές για το τέλος της λειτουργίας τους. Στο σχήµα που ακολουθεί παρουσιάζεται το διάγραµµα καταστάσεων του FSM και τα σήµατα εισόδου και εξόδου του. ~ 121 ~

122 Σχήμα 5.3 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM του τμήματος των μετρήσεων Τα σήµατα που θα µας απασχολήσουν ως είσοδοι στο FSM είναι: το rst το γενικό reset του συστήµατος, το σήµα rst2 το εσωτερικό reset από το κεντρικό FSM που χρησιµοποιείται στην περίπτωση αυτόµατης αλλαγής στάθµης θορύβου, το σήµα en_in που δηλώνει την ολοκλήρωση της διαδικασίας της αποκωδικοποίησης και τέλος το σήµα eisodos_from_datapath που περιέχει το συνολικό πλήθος των λαθών που έχει µετρηθεί από το datapath για αυτήν την στάθµη θορύβου. Οι έξοδοι του FSM είναι: το σήµα rst_out που αποτελεί το εσωτερικό reset προς τους καταχωρητές του datapath εκτός από τον καταχωρητή ολίσθησης, το σήµα en_lfsr που επιτρέπει την λειτουργία του LFSR της βαθµίδας, τα σήµατα en_sel_l, en_sel_f, sel_r που ελέγχουν τους πολυπλέκτες και χρησιµοποιούνται στις µετρήσεις, το σήµα sel_s που ελέγχει τους πολυπλέκτες του καταχωρητή ολίσθησης και κατ επέκταση την λειτουργία του και τέλος το σήµα en_out που δηλώνει στο κεντρικό FSM ότι οι µετρήσεις ολοκληρώθηκαν και στην έξοδο της βαθµίδας υπάρχουν έγκυρα δεδοµένα. Στη συνέχεια θα αναλυθούν οι καταστάσεις του FSM και οι µεταβάσεις που πραγµατοποιούνται. Η αρχική κατάσταση του FSM είναι η state0. Σε αυτήν την κατάσταση καταλήγουµε µετά από σήµα rst = 1 στο συνολικό σύστηµα µε τους καταχωρητές να βρίσκονται σε κατάσταση αρχικοποίησης σε αυτή την περίπτωση καθώς και µετά την ολοκλήρωση της διαδικασίας των µετρήσεων. Παραµένουµε σε αυτήν την κατάσταση µέχρι το σήµα en_in να πάρει την τιµή 1 από την προηγούµενη βαθµίδα ειδοποιώντας για την ολοκλήρωση της αποκωδικοποίησης. Σε αυτήν την κατάσταση τα σήµατα en_sel_l, en_sel_f, sel_r έχουν την τιµή 0 καθώς είµαστε σε κατάσταση αναµονής και δεν πραγµατοποιείται καµία µέτρηση σε αυτό το σηµείο. Ο µετρητής κύκλων που υπάρχει βρίσκεται και αυτός σε κατάσταση αρχικοποίησης. Αν το σήµα rst2 έχει τιµή 1 από το κεντρικό FSM τότε το σήµα rst_out έχει τιµή 1 και συνεχίζουν οι καταχωρητές των µετρήσεων να είναι σε κατάσταση αρχικοποίησης ενώ µηδενίζεται και η µεταβλητή που χρησιµοποιείται για τον έλεγχο αν στο τωρινό frame που ελέγχεται βρέθηκαν λάθη, σε διαφορετική περίπτωση η αντίστοιχη µεταβλητή διατηρεί την ~ 122 ~

123 τιµή της και το σήµα rst_out παίρνει τιµή 0. Αν το σήµα en_in από την προηγούµενη βαθµίδα έχει τιµή 0 τότε το σήµα en_lfsr παίρνει τιµή 0 µε το LFSR να µην παράγει τιµές και το σήµα sel_s να έχει τιµή 1 µε τους πολυπλέκτες στον καταχωρητή ολίσθησης που ελέγχει να πραγµατοποιούν ολίσθηση. Όταν το σήµα en_in πάρει την τιµή 1 τότε το σήµα en_lfsr αποκτά τιµή 1 µε το LFSR να λειτουργεί κανονικά, το σήµα sel_s παίρνει τιµή 0 για αυτόν τον κύκλο ώστε να φορτωθούν παράλληλα οι λέξεις από τους αποκωδικοποιητές και επιπλέον πραγµατοποιείται µετάβαση στον επόµενο κύκλο στην κατάσταση state1. Στην κατάσταση state1 αρχίζει η διαδικασία της σύγκρισης των bits µεταξύ του LFSR και της λέξης που προήλθε µετά την διόρθωση. Οι καταχωρητές πρέπει να βρίσκονται σε κατάσταση κανονικής λειτουργίας και το σήµα rst_out παίρνει τιµή 0. Το σήµα en_sel_l έχει τιµή 1 ώστε να επιτρέπεται η µέτρηση των λαθών και το σήµα sel_s έχει και αυτό τιµή 1 ώστε να γίνεται ολίσθηση στον αντίστοιχο καταχωρητή ώστε σε κάθε κύκλο να εξέρχεται 1 bit από κάθε λέξη. Τα σήµατα διατηρούν την τιµή από την προηγούµενη κατάσταση. Η µεταβλητή που περιέχει τα λάθη διατηρεί την τιµή της ενώ αντίθετα ο µετρητής σε κάθε κύκλο αυξάνει κατά 1 την τιµή του. Όσο η τιµή του είναι µικρότερη από το k που είναι το µέγεθος καθεµίας λέξης από τους αποκωδικοποιητές παραµένουµε σε αυτήν την κατάσταση και το σήµα en_lfsr έχει τιµή 1 ώστε να παράγει µια καινούρια τιµή στην έξοδο του. Όταν όµως ο µετρητής αποκτήσει την συγκεκριµένη τιµή το σήµα en_lfsr πλέον παίρνει τιµή 0 και πραγµατοποιείται µετάβαση στην κατάσταση state2. Στην κατάσταση state2 τα σήµατα rst_out, en_lfsr, en_sel_l έχουν τιµή 0 δεδοµένου ότι η µέτρηση των λαθών έχει ολοκληρωθεί. Το σήµα sel_s διατηρεί την τιµή του, ο µετρητής µηδενίζεται ενώ αντίθετα το σήµα sel_r αυξάνει κατά 1 την τιµή του υποδηλώνοντας ότι ένα ακόµα frame στάλθηκε και ελέγχθηκε. Σε αυτή τη χρονική στιγµή στην είσοδο eisodos_from_datapath του FSM υπάρχει η τιµή των συνολικών λαθών για αυτή την στάθµη θορύβου από το data path. Αν η τιµή αυτή είναι µεγαλύτερη από την τιµή που έχει η µεταβλητή του FSM στην οποία είναι καταγεγραµµένα τα λάθη που είχαν υπολογιστεί µέχρι το προηγούµενο frame τότε η τιµή της αναβαθµίζεται και το σήµα en_sel_f γίνεται 1 επιτρέποντας την αύξηση του αριθµού των λανθασµένων frame κατά 1. Σε περίπτωση που η τιµή της µεταβλητής και της εισόδου από το data path είναι ίδιες τότε το σήµα en_sel_f παίρνει τιµή 0 και η µεταβλητή διατηρεί την τιµή της. Τέλος στον επόµενο κύκλο πραγµατοποιείται µετάβαση στην κατάσταση state3. Στην κατάσταση state3 ουσιαστικά το σήµα en_out παίρνει την τιµή 1 ειδοποιώντας το κεντρικό FSM για το τέλος της διαδικασίας των µετρήσεων. Όλα τα υπόλοιπα σήµατα έχουν τιµή 0 εκτός του σήµατος sel_s. Η µεταβλητή που περιέχει το πλήθος των λαθών διατηρεί την τιµή της και ο µετρητής παραµένει σε κατάσταση αρχικοποίησης. Στον επόµενο κύκλο πραγµατοποιείται µετάβαση στην αρχική κατάσταση state0 αναµένοντας το σήµα en_in να ξαναπάρει την τιµή 1 ώστε ένα νέο frame να ελεγχθεί για λάθη Γενικά Χαρακτηριστικά Σε αυτό το σηµείο θα γίνει αναφορά σε γενικά χαρακτηριστικά της αρχιτεκτονικής καθώς και τη συµπεριφορά αυτής της βαθµίδας σε σχέση µε την χρήση του shortening στους δύο αποκωδικοποιητές BCH. Το γεγονός ότι γίνεται χρήση shortening επηρεάζει την συγκεκριµένη βαθµίδα όσον αφορά το µέγεθος του καταχωρητή ολίσθησης που αποθηκεύονται οι δύο λέξεις που πρέπει να µειωθεί κατά το ανάλογο µέγεθος (2s εφόσον θα γίνει µείωση σε κάθε µία λέξη κατά s) και ανάλογη µείωση στην συνθήκη του µετρητή (κατά s αυτή τη φορά). Αυτό δεν είναι ιδιαίτερο πρόβληµα λόγω της ~ 123 ~

124 παραµετρικότητας της σχεδίασης. Σχετικά µε την ολοκλήρωση των µετρήσεων απαιτούνται k ή k s κύκλοι ρολογιού (696 ή 666 στην περίπτωση µας ανάλογα µε την υλοποίηση). Το γεγονός αυτό σχετίζεται µε το ότι σε αυτή την αρχιτεκτονική πραγµατοποιείται σύγκριση µεταξύ 2 bits από το LFSR και 2 bits από τη λέξη. Ο λόγος για αυτό έχει να κάνει µε την χρήση του LFSR για τη σύγκριση και όχι τη χρήση µνήµης που πιθανώς θα επέτρεπε περισσότερα bits να συγκριθούν αλλά θα απαιτούσε περισσότερους αθροιστές. Το αποτέλεσµα είναι µειωµένο throughput αλλά υψηλή συχνότητα λειτουργίας λιγότερο υλικό και χαµηλή πολυπλοκότητα. 5.4 Σύστηµα αποθήκευσης µετρήσεων Σε αυτήν την ενότητα θα παρουσιαστεί το τµήµα όπου πραγµατοποιείται η αποθήκευση των µετρήσεων σχετικά µε την απόδοση του όλου συστήµατος σε θέµατα διόρθωσης λαθών Λειτουργία Αρχιτεκτονική Σε αυτό το στάδιο πραγµατοποιείται η αποθήκευση όλων των µετρήσεων που αφορούν την απόδοση του συστήµατος. Πρόκειται ουσιαστικά για µια µνήµη που ελέγχεται µέσω ενός FSM. εν υπάρχει ωστόσο ουσιαστική διάκριση µεταξύ της βαθµίδας σε data path και FSM. Η µνήµη αποτελείται από έναν πίνακα τόσων θέσεων όσο είναι και τα διαστήµατα που υπάρχουν στο snrlut σχετικά µε τις στάθµες του θορύβου. Στην περίπτωση που µελετάµε έχουµε 64 θέσεις. Κάθε µία από αυτές τις θέσεις αποτελείται από άλλες 4. Η πρώτη από αυτές είναι και η διεύθυνση καθεµιάς από τις αρχικές 64 αποτελείται συνεπώς από 6 bits και αντιστοιχίζεται µε µια στάθµη θορύβου. Στις υπόλοιπες 3 καταχωρούνται οι τιµές που µετρήθηκαν από το αντίστοιχο τµήµα που αναφέρονται στο επίπεδο θορύβου της διεύθυνσης. Οι µετρήσεις αυτές αποτελούνται όπως αναφέρθηκε και στην προηγούµενη ενότητα από το συνολικό πλήθος των λαθών, τον συνολικό αριθµό των frames που στάλθηκαν και τέλος το πλήθος των frames στο οποίο εµφανίστηκε τουλάχιστον ένα λάθος και όλα αυτά για την ίδια στάθµη θορύβου. Και στις 2 υλοποιήσεις απαιτούνται 11, 64 και 11 bits αντίστοιχα για την αποθήκευση αυτών των τιµών για µία στάθµη θορύβου και 64( ) = 5504 bits συνολικά. Το FSM χρησιµοποιείται για τις βασικές λειτουργίες της ανάγνωσης και της εγγραφής της µνήµης οι οποίες πρέπει να είναι συγχρονισµένες µε το υπόλοιπο σύστηµα. Στο επόµενο σχήµα φαίνεται η δοµή της µνήµης όπως την παρουσιάσαµε. Σχήμα 5.4 : Δομή της μνήμης αποθήκευσης των μετρήσεων ~ 124 ~

125 5.4.2 Λειτουργία FSM Σε αυτό το σηµείο θα γίνει η παρουσίαση του FSM που αντιστοιχεί στην µνήµη µε τους ακριβείς χρονισµούς του. Τα σήµατα που αντιστοιχούν σε αυτό το τµήµα αναφέρθηκαν παραπάνω ενώ δεν υπάρχει και σαφής διαχωρισµός µεταξύ FSM και µνήµης. Στο σχήµα που ακολουθεί φαίνεται το διάγραµµα καταστάσεων του FSM και τα σήµατα ολόκληρης της βαθµίδας. Σχήμα 5.5 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του FSM της μνήμης αποθήκευσης των μετρήσεων Η αρχική κατάσταση του FSM είναι η statewait. Σε αυτήν την κατάσταση καταλήγουµε ύστερα από σήµα rst = 1 (το συγκεκριµένο σήµα αντιστοιχεί στο rst_apo της διεπαφής µε τον χρήστη) καθώς και µετά το τέλος των διαδικασιών της εγγραφής και της ανάγνωσης. Το διάστηµα κατά το οποίο το σήµα rst αποκτά την τιµή 1 γίνεται η αρχικοποίηση της µνήµης µε κάθε bit να παίρνει µηδενική τιµή. Παραµένουµε σε αυτήν την κατάσταση µέχρι ένα από τα σήµατα en_in ή read να αποκτήσουν τιµή 1. Στην κατάσταση αυτή ουσιαστικά διατηρούνται οι τιµές που έχουν αποθηκευτεί µέχρι στιγµής και ο µετρητής αρχικοποιείται στο 0. Όλες οι έξοδοι έχουν µηδενική τιµή εκτός από την έξοδο exodos_snr όπου παίρνει την τιµή από την είσοδο snr_value και δείχνει την τρέχουσα τιµή της στάθµης θορύβου στο σύστηµα. Όταν το σήµα en_in πάρει την τιµή 1 τότε ενηµερωνόµαστε για την ολοκλήρωση των µετρήσεων στο frame, που ελέγχεται από την αντίστοιχη βαθµίδα, πηγαίνουµε στην κατάσταση statewrite και λαµβάνουµε υπόψη τις τιµές στις εισόδους eisodos_lathon, eisodos_repeat, eisodos_frame και snr_value. Η τιµή της εισόδου snr_value λειτουργεί ως διεύθυνση για την εύρεση της κατάλληλης θέσης από τις αρχικές 64. Αφού βρεθεί λοιπόν η κατάλληλη θέση, οι τιµές των άλλων τριών εισόδων αποθηκεύονται στις επιµέρους 3 θέσεις από τις οποίες αποτελείται η αρχική όπως αναφέρθηκε παραπάνω. εδοµένου ότι γίνεται αναβάθµιση της µνήµης, στις τρεις εξόδους υπάρχει µηδενική τιµή εκτός από την έξοδο exodos_snr όπου εξακολουθεί να υπάρχει η τιµή της εισόδου snr_value που µας ειδοποιεί σε ποια στάθµη θορύβου βρισκόµαστε. Ο µετρητής παραµένει σε κατάσταση αρχικοποίησης. Μετά το τέλος της αναβάθµισης πηγαίνουµε εκ νέου στην κατάσταση statewait. ~ 125 ~

126 Όταν το σήµα read πάρει την τιµή 1 τότε ειδοποιούµαστε από το κεντρικό FSM ότι πρέπει να γίνει ανάγνωση της µνήµης και πηγαίνουµε στην κατάσταση stateread. Σε αυτήν την κατάσταση δεν λαµβάνονται υπόψη καθόλου οι τιµές στις εισόδους. Ο µετρητής αρχίζει να αυξάνει σε κάθε κύκλο την τιµή του κατά και µε αυτό τον τρόπο παράγονται οι διευθύνσεις, βάση των οποίων εµφανίζονται στις εξόδους exodos_lathon, exodos_repeat, exodos_frame τα δεδοµένα που έχουν αποθηκευτεί στις 64 θέσεις ενώ στην έξοδο exodos_snr εµφανίζεται η τιµή που έχει ο µετρητής υποδηλώνοντας µε αυτόν τον τρόπο την στάθµη θορύβου και τις µετρήσεις που αντιστοιχούν σε αυτή. Παραµένουµε σε αυτήν την κατάσταση όσο το σήµα read παραµένει στην τιµή 1 σε αντίθετη περίπτωση πραγµατοποιείται µετάβαση στην κατάσταση statewait. Ένα καινούριο frame θα σταλεί και µια καινούρια µέτρηση θα πραγµατοποιηθεί ανανεώνοντας τις τιµές της µνήµης µε βάση την λειτουργία που προαναφέρθηκε. Τέλος πρέπει να σηµειωθεί ότι τα αποτελέσµατα θα παραµείνουν στην µνήµη και θα ανανεώνονται µέχρι να εµφανιστεί πάλι σήµα rst = 1 οπότε και θα πραγµατοποιηθεί αρχικοποίηση στα δεδοµένα της Γενικά χαρακτηριστικά Σε αυτό το σηµείο θα εξετάσουµε τα γενικά χαρακτηριστικά της βαθµίδας. Το µέγεθος της µνήµης επιλέχτηκε ώστε να ικανοποιηθούν απαιτήσεις σχετικά µε τις µετρήσεις που θέλουµε να πραγµατοποιηθούν. Θεωρείται ικανοποιητική µια µέτρηση όταν εντοπιστούν 1000 λάθη από το σύστηµα σε ένα επίπεδο θορύβου που άµεσα συνεπάγεται την χρήση 10 µε 11 bits για την αποθήκευση τους. Εφόσον υπάρχει η δυνατότητα να εµφανιστεί 1 λάθος σε κάθε frame τέτοιο µέγεθος απαιτείται για την καταµέτρηση των frames που περιέχουν λάθη. Σχετικά µε την µέτρηση του συνολικού πλήθους των frames που στέλνονται για κάθε στάθµη θορύβου εξαρτάται άµεσα από την στάθµη και τον κώδικα στην συγκεκριµένη περίπτωση χρησιµοποιήθηκαν 64 bits ώστε να υπάρχει ένα περιθώριο ασφάλειας. Τώρα σχετικά µε τα επίπεδα θορύβου χρησιµοποιούνται 64 από αυτά βάση της δοµής του snrlut. Γενικά πάντως είναι εύκολη η παραµετροποίηση του κώδικα VHDL που χρησιµοποιείται για την αλλαγή των µεγεθών. Τελικά πέρα από το µέγεθος της µνήµης η λειτουργία της βαθµίδας είναι απλή και το FSM είναι σχεδιασµένο έτσι ώστε να είναι εύκολη η παρατήρηση των µετρήσεων από το χρήστη σε σχέση µε την λειτουργία του υπόλοιπου συστήµατος. 5.5 Κεντρικό FSM του συστήµατος σε σειρά Σε αυτήν την ενότητα θα παρουσιαστεί η λειτουργία του κεντρικού FSM που ελέγχει και συντονίζει την λειτουργία ολόκληρου του συστήµατος από την παραγωγή των λέξεων πληροφορίας µέχρι την αποθήκευση των µετρήσεων Γενική Λειτουργία Το συγκεκριµένο τµήµα αποτελείται ουσιαστικά από ένα FSM που δηµιουργεί τα κατάλληλα σήµατα για την σωστή λειτουργία όλου του συστήµατος. Σε αυτό το σηµείο θα γίνει µία αρχική παρουσίαση σχετικά µε τα σηµεία στα οποία παρεµβαίνει και τους ελέγχους που πραγµατοποιεί. Το FSM αρχικά δέχεται από τον χρήστη τα κατάλληλα σήµατα που σχετίζονται µε την στάθµη του θορύβου που θέλουµε να εισαχτεί στο σύστηµα, επίσης δέχεται το σήµα από το χρήστη που συντονίζει την διαδικασία για την ανάγνωση της µνήµης όπου είναι αποθηκευµένες οι µετρήσεις διατηρώντας το υπόλοιπο σύστηµα σε κατάσταση αναµονής. Επίσης παράγει τα κατάλληλα σήµατα που απαιτούνται για την εκκίνηση της λειτουργίας του αρχικού LFSR, των κωδικοποιητών BCH καθώς και του καναλιού. Μετά το τέλος των υπολογισµών σχετικά µε τα λάθη στο τελευταίο frame που στάλθηκε ~ 126 ~

127 και ελέγχθηκε ειδοποιείται για την ολοκλήρωση της διαδικασίας καθώς και για τα τελικά αποτελέσµατα στην εκάστοτε στάθµη θορύβου. Τα αποτελέσµατα αυτά τα στέλνει για αποθήκευση στην µνήµη µέσω της χρήσης των κατάλληλων σηµάτων. Όταν έχουν ολοκληρωθεί όλοι οι υπολογισµοί δηλώνει το τέλος της λειτουργίας ολόκληρου του συστήµατος. Στο επόµενο σχήµα φαίνεται το διάγραµµα καταστάσεων του FSM και τα σήµατα που χρησιµοποιεί ως εισόδους και εξόδους. Σχήμα 5.6 : Μπλοκ διάγραμμα και διάγραμμα καταστάσεων του κεντρικού FSM Λειτουργία FSM Σε αυτό το σηµείο θα γίνει η παρουσίαση του κεντρικού FSM του συστήµατος µε τους ακριβείς χρονισµούς του και κατ επέκταση θα αναφερθεί και ο συνολικός συγχρονισµός του συστήµατος. Τα σήµατα από τα οποία αποτελείται το FSM έχουν αναφερθεί σε προηγούµενη ενότητα. Είναι σηµαντικό σε αυτό το σηµείο πριν την ανάλυση των καταστάσεων και των σηµάτων που ελέγχουν να αναφερθεί ότι έχει ιδιαίτερη σηµασία αν η µετάβαση στην κατάσταση state0 έχει γίνει λόγω σήµατος reset η όχι. Η αρχική κατάσταση του FSM είναι η state0. Σε αυτήν την κατάσταση καταλήγουµε µετά από σήµα rst = 1, µετά την ολοκλήρωση της διαδικασίας της ανάγνωσης καθώς και µετά από αναβάθµιση της τιµής της στάθµης θορύβου στο σύστηµα η γενικότερα µετά το τέλος εγγραφής των αποτελεσµάτων στην βαθµίδα της µνήµης (κατάσταση state3). Παραµένουµε σε αυτήν την κατάσταση έως ότου σταλεί σήµα ανάγνωσης της µνήµης από τον χρήστη ή µέχρι να συµπληρωθούν 200 κύκλοι ρολογιού που απαιτείται το κανάλι να είναι σε κατάσταση κανονικής λειτουργίας προτού να µπορέσουµε να στείλουµε δεδοµένα µέσω αυτού. Σε αυτή την κατάσταση το σήµα rst_out έχει τιµή 0 καθώς δεν απαιτείται µηδενισµός του αντίστοιχου µετρητή στο σύστηµα µέτρησης. Ενώ το σήµα ~ 127 ~

128 rst_channel_out διατηρείται στην τιµή 1 προκειµένου να µπορεί να λειτουργήσει το κανάλι. Ο µετρητής που µετράει 200 κύκλους αρχίζει να αυξάνει την τιµή του κατά 1 σε κάθε κύκλο, ενώ οι άλλοι δυο που υπάρχουν και σχετίζονται µε την χρήση του lfsr και της ανάγνωσης του συστήµατος µνήµης παραµένουν αρχικοποιηµένοι σε µηδενική τιµή. Στις εξόδους exodos_lathon, exodos_repeat, exodos_frame που τροφοδοτούν την µνήµη υπάρχουν µηδενικές τιµές καθώς σε αυτή την κατάσταση δεν γίνεται αναβάθµιση. Τα σήµατα en_lfsr, finished, read, en_to_sis_apo που ελέγχουν την εκκίνηση της λειτουργίας του LFSR, του τέλους όλης της διαδικασίας, την ανάγνωση κα την εγγραφή της µνήµης αντίστοιχα παίρνουν τιµή 0. Αν τώρα στην κατάσταση αυτή δεν έχουµε εισέλθει µετά από σήµα rst (που συνεπάγεται ότι δεν απαιτείται η αναµονή 200 κύκλων για το κανάλι) τότε το σήµα en_to_encoder παίρνει τιµή 1 υποδηλώνοντας την αρχή της λειτουργίας των κωδικοποιητών BCH και ο µετρητής κύκλων για το κανάλι αρχικοποιείται στην τιµή 0. Υπάρχουν δυο περιπτώσεις για µετάβαση σε άλλη κατάσταση. Η πρώτη είναι το σήµα freeze από τον χρήστη να πάρει τιµή 1 που ειδοποιεί το σύστηµα ότι επιθυµείται ανάγνωση της µνήµης. Η δεύτερη προκύπτει εφόσον ο µετρητής έχει αποκτήσει την τιµή 200 που επιτρέπει την λειτουργία του καναλιού και όλου του συστήµατος. Στην πρώτη περίπτωση πραγµατοποιείται µετάβαση στην κατάσταση state6r όπου και πραγµατοποιείται η ανάγνωση της µνήµης των µετρήσεων. Σε αυτή την περίπτωση τα 2 σήµατα rst_out και en_to_sis_apo έχουν τιµή 0 µε το σύστηµα µέτρησης να µην λειτουργεί χωρίς ωστόσο να αρχικοποιείται για να µην χαθούν εσωτερικές τιµές του και το σήµα rst_channel_out έχει τιµή 0 ώστε το κανάλι να είναι σε κατάσταση κανονικής λειτουργίας χωρίς βέβαια να διέρχεται µέσω αυτού κάποια λέξη. Οι 2 κωδικοποιητές BCH πρέπει να είναι σε κατάσταση αναµονής όπως και το αρχικό LFSR και άρα τα σήµατα en_to_encoder, en_lfsr έχουν τιµή 0. Οι µετρητές για το LFSR και το κανάλι αρχικοποιούνται ενώ και οι έξοδοι που αναβαθµίζουν την µνήµη έχουν και αυτοί τιµή 0 καθώς σε αυτό το σηµείο δεν επιτρέπονται εγγραφές. Ο τρίτος µετρητής λειτουργεί σε αυτό το σηµείο κανονικά. Είναι συγχρονισµένος µε την έξοδο της µνήµης και βάση αυτού διαπιστώνεται αν στην έξοδο της µνήµης έχουν εµφανιστεί όλες οι µετρήσεις για όλο το διάστηµα. Όσο υπάρχουν επιπλέον τιµές που πρέπει να εµφανιστούν στην έξοδο της µνήµης παραµένουµε σε αυτήν την κατάσταση µε το σήµα read να έχει τιµή 1, σε διαφορετική περίπτωση γυρίζουµε στην κατάσταση state0 µε το σήµα read να παίρνει τιµή 0. Στην δεύτερη περίπτωση πραγµατοποιείται µετάβαση στην κατάσταση state01. Σε αυτή την κατάσταση ξεκινάει η λειτουργία του LFSR που παράγει τις λέξεις πληροφορίας για τους δύο κωδικοποιητές BCH οι οποίοι είναι σε κατάσταση λειτουργίας και το σήµα en_lfsr αποκτά την τιµή 1. Όλοι οι µετρητές αρχικοποιούνται στην µηδενική τιµή ενώ και όλα τα υπόλοιπα σήµατα έχουν τιµή 0 µε εξαίρεση το rst_channel_out που έχει τιµή 1. Οι βαθµίδες όπου πραγµατοποιούνται οι µετρήσεις και η αποθήκευσης τους είναι σε κατάσταση αναµονής. Στον επόµενο κύκλο πραγµατοποιείται µετάβαση στην κατάσταση state1. Στην κατάσταση state1 παραµένουµε µέχρι την δηµιουργία ολόκληρων των λέξεων πληροφορίας. Τα σήµατα έχουν τις ίδιες τιµές όπως και στην προηγούµενη κατάσταση µε µόνη διαφορά στους µετρητές και το σήµα en_lfsr. Οι µετρητές που σχετίζονται µε την ανάγνωση της µνήµης και την λειτουργία του καναλιού αρχικοποιούνται στην τιµή 0. Ο τρίτος µετρητής όµως αυξάνει την τιµή του σε κάθε κύκλο σε αυτήν την κατάσταση µέχρι ότου αποκτήσει την τιµή που υποδηλώνει το µέγεθος της λέξης πληροφορίας. Όσο η τιµή του είναι µικρότερη από αυτό το όριο το σήµα en_lfsr έχει τιµή 1 έτσι ώστε να συνεχιστεί η παραγωγή των δύο λέξεων. Μόλις ο µετρητής αποκτήσει την συγκεκριµένη τιµή το σήµα en_lfsr παίρνει τιµή 0. Το αρχικό LFSR σταµατάει την λειτουργία του και πλέον πραγµατοποιείται µετάβαση στην κατάσταση state2. ~ 128 ~

129 Στην κατάσταση state2 παραµένουµε για το υπόλοιπο της διαδικασίας της κωδικοποίησης και της αποκωδικοποίησης µέχρι το τέλος της βαθµίδας των µετρήσεων. Τα σήµατα en_to_encoder, en_lfsr, read, finished έχουν τιµή 0. Το ίδιο ισχύει και για τους 3 µετρητές. Μόλις το σήµα en_in πάρει την τιµή 1 γίνεται µια µικρή επεξεργασία σχετικά µε τις µετρήσεις και παίρνονται οι αποφάσεις σχετικά µε το επίπεδο του θορύβου και την εγγραφή στην µνήµη. Αρχικά από τις εισόδους eisodos_n_lathon, eisodos_n_repeat, eisodos_n_frame εισέρχεται η πληροφορία από την βαθµίδα µέτρησης ενώ το σήµα en_to_sis_apo παίρνει την τιµή 1 ειδοποιώντας την µνήµη ότι υπάρχουν δεδοµένα προς εγγραφή. Σε αυτό το σηµείο επιπλέον γίνεται έλεγχος αν το πλήθος των λαθών για αυτή την στάθµη θορύβου που εξετάζεται έχει υπερβεί τον αριθµό Αν το τελευταίο ισχύει γίνεται ένας νέος έλεγχος σχετικά µε το αν η στάθµη του θορύβου αυτή τη χρονική στιγµή αποτελεί το άνω όριο του διαστήµατος το οποίο ελέγχουµε. Σε περίπτωση που και ο δεύτερος έλεγχος βγει θετικός τότε στον επόµενο κύκλο πηγαίνουµε στην κατάσταση state4 σε αντίθετη περίπτωση στον επόµενο κύκλο πραγµατοποιείται µετάβαση στην κατάσταση state3 και αυτόµατη ανανέωση της στάθµης θορύβου στο επόµενο σηµείο του διαστήµατος. Αν το πλήθος των λαθών δεν είναι 1000 σε αυτό το σηµείο, τότε στον επόµενο κύκλο θα πραγµατοποιηθεί πάλι µετάβαση στην κατάσταση state3 χωρίς όµως να αλλάξει η στάθµη θορύβου. Επόµενη προς εξέταση κατάσταση είναι η state3. Πρόκειται για µία κατάσταση στην οποία το µόνο που γίνεται είναι η ανανέωση του επιπέδου θορύβου µέσω της αύξησης της τιµής στην έξοδο snr που τροφοδοτεί το κύκλωµα snrlut ανάλογα και µε τον έλεγχο που πραγµατοποιήθηκε στην προηγούµενη κατάσταση. Καµία άλλη αλληλεπίδραση δεν πραγµατοποιείται, µε τα σήµατα en_to_encoder, en_lfsr, en_to_sis_apo, read να έχουν την τιµή 0. Τα σήµατα rst_out και rst_channel_out διατηρούν τις τιµές 0 και 1 αντίστοιχα, οι 3 µετρητές βρίσκονται σε κατάσταση αρχικοποίησης και οι έξοδοι που τροφοδοτούν την µνήµη έχουν και αυτοί µηδενικές τιµές. Η τελευταία κατάσταση του FSM είναι η state4. Σε αυτήν την κατάσταση περιέρχεται το σύστηµα εφόσον έχουν συµπληρωθεί 1000 λάθη στο άνω όριο του διαστήµατος σχετικά µε τον θόρυβο. Το σύστηµα πλέον δεν µπορεί να ξεφύγει από αυτήν την κατάσταση παρά µόνο αν γίνει reset από τον χρήστη στο σύστηµα ή αν ζητηθεί πάλι από τον χρήστη να γίνει ανάγνωση της µνήµης µέσω του σήµατος freeze όπου παίρνει την τιµή 1 οπότε και µεταβαίνουµε στην κατάσταση state6r Γενικά χαρακτηριστικά Τελικά το κεντρικό FSM είναι το µεγαλύτερο και πιο πολύπλοκο FSΜ ολόκληρου του συστήµατος. Έχει σχεδιαστεί µε σκοπό την σωστή λειτουργία του όλου συστήµατος χωρίς την ύπαρξη περιττών κύκλων κατά τις µεταβάσεις (εκτός της παρατήρησης των αποτελεσµάτων από το χρήστη), και κατά τέτοιο τρόπο ώστε να παρέχει τις απαραίτητες δυνατότητες στον χρήστη για την εύκολη διαχείριση του συστήµατος κατά τις ανάγκες του. Τέλος σχετικά µε την χρήση του shortening στον κώδικα BCH το µόνο που αλλάζει είναι η τιµή στην συνθήκη ελέγχου µε τον αντίστοιχο µετρητή για την ολοκλήρωση της λέξης πληροφορίας από το LFSR. ~ 129 ~

130 ~ 130 ~

131 Κεφάλαιο 6 Ροή σχεδίασης Σε αυτό το κεφάλαιο θα γίνει αναφορά στα βήµατα και στην διαδικασία που ακολουθήθηκε για την επιτυχή ολοκλήρωση της σχεδίασης του συστήµατος. Επιπρόσθετα στο πλαίσιο αυτής της διαδικασίας θα γίνει αναφορά και στα εργαλεία που χρησιµοποιήθηκαν σε κάθε βήµα. 6.1 ιαδικασία σχεδίασης και ελέγχου Η διαδικασία της σχεδίασης ενός συστήµατος αποτελείται από µια σειρά βηµάτων βάση των οποίων δίνεται η δυνατότητα για την δηµιουργία και κυριότερα τον άµεσο έλεγχο και τη διόρθωση µεγάλων συστηµάτων σε σύντοµο χρονικό διάστηµα. Τέσσερις είναι οι βασικοί άξονες πάνω στους οποίους κινούµαστε και σχετίζονται, µε τις προδιαγραφές του συστήµατος, την επιλογή των αλγορίθµων κωδικοποίησης και αποκωδικοποίησης του κώδικα BCH, την περιγραφή και µοντελοποίηση του συστήµατος σε λογισµικό και τέλος την υλοποίηση σε υλικό. Στο επόµενο σχήµα αναπαριστάται το διάγραµµα µε την συνολική διαδικασία που ακολουθήθηκε. Σχήμα 6.1 : Διάγραμμα ροής σχεδίασης ~ 131 ~

132 6.1.1 Ανάλυση διαδικασίας σχεδίασης - προδιαγραφές, χρησιµοποιούµενοι αλγόριθµοι Το αρχικό στάδιο της διαδικασίας είναι ο ορισµός των προδιαγραφών του συστήµατος, Πρόκειται για ένα ιδιαιτέρως σηµαντικό στάδιο που καθορίζει σε σηµαντικό βαθµό την υπόλοιπη διαδικασία. Οι προδιαγραφές στην περίπτωση µας σχετίζονται τόσο µε την απόδοση που πρέπει να επιτυγχάνει ο κώδικας BCH όσον αφορά την διορθωτική του ικανότητα, τα µεγέθη του συγκεκριµένου κώδικα και τα οποία πρέπει να είναι τέτοια ώστε να επιτυγχάνεται η ένωση µε τα υπόλοιπα τµήµατα αλλά ταυτόχρονα να καταλαµβάνει µικρή επιφάνεια και πόρους από το FPGA που θα χρησιµοποιηθεί, η υψηλή συχνότητα λειτουργίας που σε πρώτη φάση πρέπει να τέτοια ώστε να είναι δυνατή η εκµετάλλευση της µέγιστης συχνότητας του FPGA που θα χρησιµοποιηθεί και τέλος το throughput όλου του συστήµατος που πρέπει να είναι αρκετά υψηλό ώστε εκτός όλων των άλλων να επιτρέπει την γρήγορη µελέτη της συµπεριφοράς όλου του συστήµατος σε χαµηλές στάθµες θορύβου όπου τα λάθη είναι πιο δύσκολο να εµφανιστούν. Ανάλογα και µε τις προδιαγραφές αλλά και µε την πολυπλοκότητα της σχεδίασης τους σε υλικό στο τέλος, παίρνονται και οι αποφάσεις σχετικά µε τους αλγορίθµους κωδικοποίησης και αποκωδικοποίησης που χρησιµοποιήθηκαν αλλά και τη συγκεκριµένη αρχιτεκτονική για κάθε τµήµα που απαρτίζει τον κώδικα BCH που αποτέλεσε αντικείµενο αυτής της εργασίας Ανάλυση διαδικασίας σχεδίασης - περιγραφή σε λογισµικό Αφού καθορίστηκαν και οι προδιαγραφές και οι αλγόριθµοι που θα χρησιµοποιηθούν επόµενο βήµα ήταν η µοντελοποίηση του κώδικα BCH (δεδοµένου ότι για τον κώδικα LDPC και το κανάλι γνωρίζουµε ήδη την ορθή τους λειτουργία) και η περιγραφή του σε λογισµικό. Το περιβάλλον λογισµικού που χρησιµοποιήθηκε για την δηµιουργία αυτού του µοντέλο είναι το πρόγραµµα MATLAB (έκδοση R2009b). Το µοντέλο αυτό είναι «bit true» και αποτελείται από ένα πλήθος άλλων µικρότερων που µοντελοποιούν όλα τα τµήµατα που απαρτίζουν τον κωδικοποιητή αλλά και τον αποκωδικοποιητή BCH όπως αναφέρθηκαν σε προηγούµενο κεφάλαιο. Αυτό είναι ιδιαίτερα χρήσιµο κατά την σχεδίαση της αρχιτεκτονικής καθώς επιτρέπει τον έλεγχο καθενός τµήµατος ξεχωριστά µειώνοντας τον χρόνο που απαιτείται για την εύρεση και διόρθωση των λαθών που πιθανώς υπάρχουν σε κάποιο τµήµα, σε αντίθεση µε την περίπτωση όπου υπάρχει ένα καθολικό µοντέλο για ολόκληρο το σύστηµα. Το καθολικό µοντέλο όλου του συστήµατος είναι και αυτό απαραίτητο και για εύρεση λαθών αλλά κυρίως για την δυνατότητα που προσφέρεται στον σχεδιαστή σχετικά µε την µέτρηση της απόδοσης του συστήµατος µέσω τροποποίησης διαφόρων παραµέτρων (κυρίως της διορθωτικής ικανότητας) Ανάλυση διαδικασίας σχεδίασης - περιγραφή σε υλικό Μετά τον καθορισµό των αλγορίθµων που θα χρησιµοποιηθούν και την περιγραφή και των επιµέρους τµηµάτων της αρχιτεκτονικής σε µοντέλα λογισµικού σειρά έχει η περιγραφή τµηµάτων αυτών και σε υλικό. Αυτό γίνεται µε τη χρήση VHDL και MATLAB κώδικα. Η σχεδίαση της αρχιτεκτονικής µε VHDL κώδικα γίνεται µε τη χρήση του περιβάλλοντος ModelSim. To εργαλείο MATLAB σε αυτήν την περίπτωση χρησιµοποιήθηκε για την παραγωγή κάποιων παραµετρικών scripts που µε τη σειρά τους παράγουν κάποια τµήµατα VHDL κώδικα που είναι απαραίτητα για την υλοποίηση και τα οποία αλλάζουν ανάλογα µε το µέγεθος, την διορθωτική ικανότητα του κώδικα. Πιο συγκεκριµένα ως παραδείγµατα µπορούµε να αναφέρουµε τον πίνακα look up table που χρησιµοποιείται στο τµήµα της διόρθωσης και περιέχει όλα τα στοιχεία του πεδίου GF που χρησιµοποιούµε, το πρωταρχικό πολυώνυµο βάση του οποίου περιγράφονται τα στοιχεία του πεδίου που είναι απαραίτητα για τον πολλαπλασιασµό καθώς και κάποιες άλλες τιµές σταθερών σηµάτων που απαιτούνται. Γενικότερα έχει δοθεί έµφαση στην παραµετρικότητα του κώδικα που χρησιµοποιείται έτσι ώστε να είναι ~ 132 ~

133 εύκολες οι µετατροπές σχετικά µε τα µεγέθη κώδικα που χρησιµοποιούνται. Μετά την συγγραφή του VHDL κώδικα γίνεται η εξοµοίωση του συστήµατος µε τη χρήση του ModelSim. Σε αυτό το σηµείο γίνεται ο πρώτος έλεγχος επαλήθευσης µεταξύ των δεδοµένων των εξοµοιώσεων από το ModelSim και των αποτελεσµάτων των «bit true» µοντέλων. Αν υπάρχει συµφωνία µεταξύ των δυο αυτών αποτελεσµάτων τότε µπορούµε να συνεχίσουµε στο επόµενο στάδιο διαφορετικά γίνονται οι απαραίτητες τροποποιήσεις και εκ νέου εξοµοιώσεις µέχρι να επιτευχθεί η συµφωνία των αποτελεσµάτων. Το επόµενο στάδιο είναι η σύνθεση του σχεδιασµού µε τη βοήθεια του εργαλείου XST του Xilinx ISE Σε αυτό το σηµείο γίνεται έλεγχος πάλι σχετικά µε τη «σύνταξη» του κώδικα και ελέγχεται η δυνατότητα του για «κατέβασµα» στο FPGA που έχει επιλεχτεί (στην περίπτωση µας είναι το Virtex5-FX70T) και παράγεται και µια αναφορά µε στοιχεία για τις καθυστερήσεις, τη χρησιµοποίηση των πόρων του FPGA και τυχόν σφάλµατα που ανιχνεύτηκαν. Εφόσον δεν υπάρχουν λάθη στην αρχιτεκτονική µας και ταυτόχρονα διαπιστωθεί ότι πληρούνται οι προδιαγραφές βάση των αναφορών τότε συνεχίζουµε στο επόµενο βήµα που είναι η υλοποίηση της αρχιτεκτονικής(translate, map, place & route) και µε επιπλέον εξοµοιώσεις µέσω του ModelSim. Αν δεν υπάρχουν λάθη και η αρχιτεκτονική επιτελεί την επιθυµητή λειτουργία προχωράµε στο επόµενο στάδιο που είναι η παραγωγή του bitstream αρχείου το οποίο στην συνέχεια φορτώνεται στο FPGA µέσω του εργαλείου impact του ISE. Με τη χρήση του εργαλείου ChipScope Pro του ISE υπάρχει η δυνατότητα παρατήρησης των αποτελεσµάτων που είναι αποθηκευµένα στην βαθµίδα της µνήµης κατά την διάρκεια της λειτουργίας όλου του συστήµατος όταν αυτό «τρέχει» στο FPGA και γενικότερα γίνεται ο τελικός έλεγχος του συστήµατος για λάθη που σε αυτό το σηµείο σχετίζονται περισσότερο µε χρονισµούς η ειδικές συνθήκες στον αλγόριθµο. Σε αυτό το σηµείο έχει ολοκληρωθεί όλη η διαδικασία της σχεδίασης Έλεγχος του κωδικοποιητή και αποκωδικοποιητή BCH Αφού περιγράφηκε η διαδικασία που ακολουθήθηκε κρίνεται σκόπιµο να δοθεί ένα παράδειγµα σχετικά µε την επαλήθευση για τον κωδικοποιητή αποκωδικοποιητή BCH. Η επαλήθευση θα γίνει µε την µέτρηση της απόδοσης ενός κώδικα BCH (255, 231) δεδοµένου ότι αυτές είναι ουσιαστικά οι κύριες έξοδοι. Το σύστηµα που κατέβηκε στο FPGA περιλαµβάνει το LFSR ως ψηφιακή πηγή, τον κωδικοποιητή BCH, το κανάλι προσθετικού θορύβου, τον αποκωδικοποιητή BCH και τα συστήµατα µέτρησης και αποθήκευσης καθώς και το κεντρικό FSM όπως αυτά παρουσιάστηκαν. Η σύγκριση θα γίνει µε ένα µοντέλο σε κώδικα MATLAB που περιλαµβάνει κωδικοποιητή αποκωδικοποιητή ίδιου µεγέθους και κανάλι προσθετικού θορύβου. εδοµένου ότι το κανάλι που χρησιµοποιείται στο FPGA έχει ίδια στατιστική συµπεριφορά µε αυτό του µοντέλου στο MATLAB αλλά δεν βγάζει επακριβώς τα ίδια αποτελέσµατα, για αυτό τον λόγο γενικότερα οι τιµές µεταξύ µοντέλου και υλοποίησης δεν περιµένουµε να είναι ίδιες. Αυτό που µας ενδιαφέρει είναι να υπάρχει όµοια συµπεριφορά µε µικρές αποκλίσεις στις τιµές του BER - E N που θα παρουσιαστούν. Οι καµπύλες που θα αποτελέσουν το αντικείµενο της σύγκρισης αφορούν στην µέτρηση της απόδοσης του συστήµατος και θα µας απασχολήσουν και στην συνέχεια. Οι τιµές τους προκύπτουν από το πλήθος λαθών σε bits που υπάρχουν στις λέξεις που διορθώθηκαν δια το πλήθος των συνολικών bits των frames που στάλθηκαν σε µία στάθµη θορύβου. Οι µετρήσεις όπως αναφέρθηκε και στο προηγούµενο κεφάλαιο θεωρούνται έγκυρες εφόσον βρεθούν 1000 λάθη. Στο επόµενο σχήµα φαίνονται οι καµπύλες που προκύπτουν από τις µετρήσεις του µοντέλου σε κώδικα MATLAB και τις µετρήσεις της υλοποίησης σε FPGA. ~ 133 ~

134 Σχήμα 6.2 : Διαγράμματα BER-E b /N o για κώδικα BCH α) από MATLAB, β) από Hardware Παρατηρούµε ότι οι µετρήσεις µεταξύ του µοντέλου και της υλοποίησης έχουν πολύ µικρές αποκλίσεις αλλά ίδια γενικότερη συµπεριφορά οπότε γνωρίζουµε ότι η υλοποίηση του κωδικοποιητή και αποκωδικοποιητή είναι σωστή. Το διάστηµα στο οποίο έγινε η σύγκριση είναι το (2, 5.1) καθώς απαιτείται πολύς χρόνος για την µέτρηση αποτελεσµάτων µε το µοντέλο λογισµικού. Στο παράρτηµα Α φαίνονται αναλυτικά τα αποτελέσµατα του µοντέλου αλλά και της υλοποίησης µε τη χρήση του FPGA. Στο FPGA ήταν δυνατός ο έλεγχος µεγαλύτερου διαστήµατος (2, 8.1) και παρουσιάζεται η πλήρης καµπύλη για αυτό το διάστηµα. 6.2 Αναπτυξιακό περιβάλλον Xilinx Virtex-5 FXT FPGA ML507 Ακολουθεί µια σύντοµη παρουσίαση του αναπτυξιακού συστήµατος που κυρίως χρησιµοποιήθηκε κατά την διαδικασία της σχεδίασης, υλοποίησης και ελέγχου του συστήµατος, καθώς και κατά την εκτέλεση των πειραµάτων. Στο επόµενο σχήµα απεικονίζεται το µπλοκ διάγραµµα του συγκεκριµένου αναπτυξιακού συστήµατος που χρησιµοποιήθηκε. ~ 134 ~

135 Σχήμα 6.3 : Μπλοκ διάγραμμα του αναπτυξιακού συστήματος Virtex-5 ML507 Στην συνέχεια ακολουθούν δυο σχήµατα που απεικονίζουν τα συστατικά µέρη του αναπτυξιακού συστήµατος Virtex-5 ML507 Σχήμα 6.4 : Λεπτομερής απεικόνιση των συστατικών μερών του αναπτυξιακού συστήματος Virtex-5 ML507 (Εμπρός όψη) ~ 135 ~

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

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

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

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

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

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

Τηλεπικοινωνιακά Συστήματα ΙΙ

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

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

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

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

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

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

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

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

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

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

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

Καναλιού. Καναλιού. Προχωρημένα Θέματα Τηλεπικοινωνιών. Κατηγορίες Κωδικών Καναλιού. Τι πετυχαίνει η Κωδ. Καναλιού. Κωδικοποίηση Καναλιού.

Καναλιού. Καναλιού. Προχωρημένα Θέματα Τηλεπικοινωνιών. Κατηγορίες Κωδικών Καναλιού. Τι πετυχαίνει η Κωδ. Καναλιού. Κωδικοποίηση Καναλιού. Προχωρημένα Θέματα Τηλεπικοινωνιών Πηγή Δεδομένων Κωδικοποίηση Καναλιού Κώδικας Πηγής Κώδικας Καναλιού Διαμόρφωση Κανάλι Δέκτης Δεδομένων Αποκωδ/ση Πηγής Αποκωδ/ση Καναλιού Αποδιαμόρφωση Κωδικοποίηση Καναλιού

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

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

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

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

Διόρθωση λαθών με τη χρήση κωδίκων RS-LDPC

Διόρθωση λαθών με τη χρήση κωδίκων RS-LDPC ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ Μεταπτυχιακό Δίπλωμα Ειδίκευσης «Ολοκληρωμένα Συστήματα Υλικού & Λογισμικού» Διόρθωση λαθών με τη χρήση κωδίκων RS-LDPC Μεταπτυχιακή Διπλωματική Εργασία

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εργαστήριο 8 ο. Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εργαστήριο 8 ο. Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα Τμήμα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΨΗΦΙΑΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ Εργαστήριο 8 ο Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα Βασική Θεωρία Σε ένα σύστημα μετάδοσης

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

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

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

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

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

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

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

Σχεδίαση αποκωδικοποιητή VLSI για κώδικες LDPC

Σχεδίαση αποκωδικοποιητή VLSI για κώδικες LDPC ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ Μεταπτυχιακό Δίπλωμα Ειδίκευσης «Ολοκληρωμένα Συστήματα Υλικού & Λογισμικού» Σχεδίαση αποκωδικοποιητή VLSI για κώδικες LDPC Τσατσαράγκος Ιωάννης Μεταπτυχιακή

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

Εξομοίωση Τηλεπικοινωνιακού Συστήματος Βασικής Ζώνης

Εξομοίωση Τηλεπικοινωνιακού Συστήματος Βασικής Ζώνης Πανεπιστήμιο Πατρών Τμήμα Μηχ. Η/Υ & Πληροφορικής Ακαδημαϊκό Έτος 009-010 Ψ Η Φ Ι Α Κ Ε Σ Τ Η Λ Ε Π Ι Κ Ο Ι Ν Ω Ν Ι ΕΣ η Εργαστηριακή Άσκηση: Εξομοίωση Τηλεπικοινωνιακού Συστήματος Βασικής Ζώνης Στην άσκηση

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 18

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 18 ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 18 14 Νοεµβρίου, 2006 Γεώργιος Έλληνας Επίκουρος Καθηγητής ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΑ ΘΕΜΑΤΑ

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΠΑΛΜΟΚΩΔΙΚΗ ΔΙΑΜΟΡΦΩΣΗ - PCM (ΜΕΡΟΣ Α)

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΠΑΛΜΟΚΩΔΙΚΗ ΔΙΑΜΟΡΦΩΣΗ - PCM (ΜΕΡΟΣ Α) ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΠΑΛΜΟΚΩΔΙΚΗ ΔΙΑΜΟΡΦΩΣΗ - PCM (ΜΕΡΟΣ Α) 3.1. ΣΚΟΠΟΣ ΑΣΚΗΣΗΣ Σκοπός της εργαστηριακής αυτής άσκησης είναι η μελέτη της παλμοκωδικής διαμόρφωσης που χρησιμοποιείται στα σύγχρονα τηλεπικοινωνιακά

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

Αντικείμενο και συνεισφορά της Διπλωματικής Εργασίας Οι LDPC κώδικες χρησιμοποιούνται ευρέως στις μέρες μας σε ψηφιακά τηλεπικοινωνιακά συστήματα ασύρ

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Σχολή Θετικών Επιστημών Τεχνολογίας Τηλεπικοινωνιών Τμήμα Επιστήμης και Τεχνολογίας Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΕΠΙΚΟΙΝΩΝΙΕΣ ΙI Εργαστήριο 8 ο : Προσαρμοσμένα Φίλτρα Βασική

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

Σεραφείµ Καραµπογιάς ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ

Σεραφείµ Καραµπογιάς ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στα Σήµατα Εισαγωγή στα Συστήµατα Ανάπτυγµα - Μετασχηµατισµός Fourier Μετασχηµατισµός Laplace Μετασχηµατισµός z Εφαρµογές 1. ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΗΜΑΤΑ Γενική εικόνα τι

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

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

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

Συστήματα Επικοινωνιών

Συστήματα Επικοινωνιών Συστήματα Επικοινωνιών Ενότητα 5: Μαθιόπουλος Παναγιώτης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιγραφή ενότητας Πλεονεκτήματα-Μειονεκτήματα ψηφιακών επικοινωνιών, Κριτήρια Αξιολόγησης

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

Ψηφιακές Τηλεπικοινωνίες. Βέλτιστος Δέκτης

Ψηφιακές Τηλεπικοινωνίες. Βέλτιστος Δέκτης Ψηφιακές Τηλεπικοινωνίες Βέλτιστος Δέκτης Σύνδεση με τα Προηγούμενα Επειδή το πραγματικό κανάλι είναι αναλογικό, κατά τη διαβίβαση ψηφιακής πληροφορίας, αντιστοιχίζουμε τα σύμβολα σε αναλογικές κυματομορφές

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

5.1 Θεωρητική εισαγωγή

5.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 5 ΚΩ ΙΚΟΠΟΙΗΣΗ BCD Σκοπός: Η κατανόηση της µετατροπής ενός τύπου δυαδικής πληροφορίας σε άλλον (κωδικοποίηση/αποκωδικοποίηση) µε τη µελέτη της κωδικοποίησης BCD

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

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

Θεωρία Πληροφορίας. Διάλεξη 12:Κωδικοποίηση Καναλιού με Κώδικες Turbo. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής Θεωρία Πληροφορίας Διάλεξη 12:Κωδικοποίηση Καναλιού με Κώδικες Turbo Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα 1. Κώδικες turbo 2 Κώδικες Turbo Η ιδέα για τους κώδικες turbo διατυπώθηκε για

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

Συστήματα Επικοινωνιών

Συστήματα Επικοινωνιών Συστήματα Επικοινωνιών Ενότητα 10: Ψηφιακή Μετάδοση Βασικής Ζώνης Μιχαήλ Λογοθέτης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Σκοποί ενότητας Παρουσίαση των πινάκων αναζήτησης

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

ΕΕ725 Ειδικά Θέµατα Ψηφιακών Επικοινωνιών 4η διάλεξη

ΕΕ725 Ειδικά Θέµατα Ψηφιακών Επικοινωνιών 4η διάλεξη ΕΕ725 Ειδικά Θέµατα Ψηφιακών Επικοινωνιών 4η διάλεξη ηµήτρης-αλέξανδρος Τουµπακάρης Τµήµα ΗΜ&ΤΥ, Πανεπιστήµιο Πατρών 15 Μαρτίου 2010 ηµήτρης-αλέξανδρος Τουµπακάρης Ειδικά Θέµατα Ψηφιακών Επικοινωνιών 4η

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

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

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

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

ιαφορική εντροπία Σεραφείµ Καραµπογιάς

ιαφορική εντροπία Σεραφείµ Καραµπογιάς ιαφορική εντροπία Σεραφείµ Καραµπογιάς Για πηγές διακριτού χρόνου µε συνεχές αλφάβητο, των οποίων οι έξοδοι είναι πραγµατικοί αριθµοί, ορίζεται µια άλλη ποσότητα που µοιάζει µε την εντροπία και καλείται

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

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα 1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα Δεκαδικοί Αριθµοί Βάση : 10 Ψηφία : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Αριθµοί: Συντελεστές Χ δυνάµεις του 10 7392.25 = 7x10 3 + 3x10 2 + 9x10 1 + 2x10 0 + 2x10-1 + 5x10-2

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

ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στα Σήµατα Εισαγωγή στα Συστήµατα Ανάπτυγµα - Μετασχηµατισµός Fourier Μετασχηµατισµός Z

ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στα Σήµατα Εισαγωγή στα Συστήµατα Ανάπτυγµα - Μετασχηµατισµός Fourier Μετασχηµατισµός Z ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στα Σήµατα Εισαγωγή στα Συστήµατα Ανάπτυγµα - Μετασχηµατισµός Fourier Μετασχηµατισµός Laplace Μετασχηµατισµός Z Εφαρµογές Παράδειγµα ενός ηλεκτρικού συστήµατος Σύστηµα Παράδειγµα

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

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

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

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

Εισαγωγή στα ψηφιακά Συστήµατα Μετρήσεων

Εισαγωγή στα ψηφιακά Συστήµατα Μετρήσεων 1 Εισαγωγή στα ψηφιακά Συστήµατα Μετρήσεων 1.1 Ηλεκτρικά και Ηλεκτρονικά Συστήµατα Μετρήσεων Στο παρελθόν χρησιµοποιήθηκαν µέθοδοι µετρήσεων που στηριζόταν στις αρχές της µηχανικής, της οπτικής ή της θερµοδυναµικής.

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

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

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

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

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

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

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

Τηλεπικοινωνιακά Συστήματα ΙΙ

Τηλεπικοινωνιακά Συστήματα ΙΙ Τηλεπικοινωνιακά Συστήματα ΙΙ Διάλεξη 1: Χωρητικότητα Καναλιών Το θεώρημα Shannon - Hartley Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα 1. Δυαδική σηματοδοσία 2. Μορφές δυαδικής σηματοδοσίας 3.

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Σχολή Θετικών Επιστημών Τεχνολογίας Τηλεπικοινωνιών Τμήμα Επιστήμης και Τεχνολογίας Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΕΠΙΚΟΙΝΩΝΙΕΣ ΙI Εργαστήριο 7 ο : Διαμόρφωση Θέσης Παλμών

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

Μάθημα Εισαγωγή στις Τηλεπικοινωνίες Κωδικοποίηση πηγής- καναλιού Μάθημα 9o

Μάθημα Εισαγωγή στις Τηλεπικοινωνίες Κωδικοποίηση πηγής- καναλιού Μάθημα 9o Μάθημα Εισαγωγή στις Τηλεπικοινωνίες Κωδικοποίηση πηγής- καναλιού Μάθημα 9o ΕΘΝΙΚΟ & ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τομέας Επικοινωνιών και Επεξεργασίας Σήματος Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Σχολή Θετικών Επιστημών Τεχνολογίας Τηλεπικοινωνιών Τμήμα Επιστήμης και Τεχνολογίας Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΕΠΙΚΟΙΝΩΝΙΕΣ ΙI Εργαστήριο 5 ο : Προσαρμοσμένα Φίλτρα Βασική

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

Γραφική αναπαράσταση ενός ψηφιακού σήµατος

Γραφική αναπαράσταση ενός ψηφιακού σήµατος γ) Ψηφιακάτα x (n) 3 2 1 1 2 3 n Γραφική αναπαράσταση ενός ψηφιακού σήµατος Αφού δειγµατοληπτηθεί και κβαντιστεί η έξοδος µιας αναλογικής πηγής πληροφορίας, δηµιουργείταιµιαακολουθίααπόκβαντισµένεςτιµές

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

Παναγιώτης Μαθιόπουλος Ph.D.

Παναγιώτης Μαθιόπουλος Ph.D. ΨΗΦΙΑΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ Παναγιώτης Μαθιόπουλος Ph.D. Καθηγητής Ψηφιακών Επικοινωνιών Τμήμα Πληροφορικής και Τηλεπικοινωνιών ΕΚΠΑ Professor (1989 2003) Department of Electrical and Computer Engineering The

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

Τηλεπικοινωνιακά Συστήματα ΙΙ

Τηλεπικοινωνιακά Συστήματα ΙΙ Τηλεπικοινωνιακά Συστήματα ΙΙ Διάλεξη 11: Κωδικοποίηση Πηγής Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα 1. Αλγόριθμοι κωδικοποίησης πηγής Αλγόριθμος Fano Αλγόριθμος Shannon Αλγόριθμος Huffman

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

Εργαστηριακή Ασκηση 2- Κυκλικοί Κώδικες

Εργαστηριακή Ασκηση 2- Κυκλικοί Κώδικες Εργαστηριακή άσκηση 2 Θεωρία ΚΩ ΙΚΕΣ ΑΝΙΧΝΕΥΣΗΣ ΣΦΑΛΜΑΤΩΝ Οι κώδικες διόρθωσης σφαλµάτων χρησιµοποιούνται µερικές φορές για µετάδοση δεδοµένων, για παράδειγµα, όταν το κανάλι είναι µονόδροµο (simplex)

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

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

Ψηφιακές Επικοινωνίες Ψηφιακές Επικοινωνίες Ενότητα 2: Παναγιώτης Μαθιόπουλος Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εισαγωγή (1) Οι Ψηφιακές Επικοινωνίες (Digital Communications) καλύπτουν σήμερα το

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

ΕΕ728 Προχωρηµένα Θέµατα Θεωρίας Πληροφορίας 11η διάλεξη

ΕΕ728 Προχωρηµένα Θέµατα Θεωρίας Πληροφορίας 11η διάλεξη ΕΕ728 Προχωρηµένα Θέµατα Θεωρίας Πληροφορίας 11η διάλεξη ηµήτρης-αλέξανδρος Τουµπακάρης Τµήµα ΗΜ&ΤΥ, Πανεπιστήµιο Πατρών 17 Μαΐου 2011 (2η έκδοση, 21/5/2011) ηµήτρης-αλέξανδρος Τουµπακάρης Προχωρηµένα

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

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

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

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

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

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

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

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

Ψηφιακές Τηλεπικοινωνίες Ψηφιακές Τηλεπικοινωνίες Θεωρία Πληροφορίας: Χωρητικότητα Καναλιού Χωρητικότητα Καναλιού Η θεωρία πληροφορίας περιλαμβάνει μεταξύ άλλων: κωδικοποίηση πηγής κωδικοποίηση καναλιού Κωδικοποίηση πηγής: πόση

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

2 η Εργαστηριακή Άσκηση

2 η Εργαστηριακή Άσκηση Πανεπιστήμιο Πατρών Τμήμα Μηχ. Η/Υ & Πληροφορικής Ψ Η Φ Ι Α Κ Ε Σ Τ Η Λ Ε Π Ι Κ Ο Ι Ν Ω Ν Ι ΕΣ 2 η Εργαστηριακή Άσκηση Σύγκριση Ομόδυνων Ζωνοπερατών Συστημάτων 8-PSK και 8-FSK Στην άσκηση αυτή καλείστε

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

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

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

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

Μετάδοση πληροφορίας - Διαμόρφωση

Μετάδοση πληροφορίας - Διαμόρφωση Μετάδοση πληροφορίας - Διαμόρφωση MYE006: ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ Ευάγγελος Παπαπέτρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΗΧ. Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ Διάρθρωση μαθήματος Μετάδοση Βασικές έννοιες Διαμόρφωση ορισμός είδη

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

Μετάδοση πληροφορίας - Διαμόρφωση

Μετάδοση πληροφορίας - Διαμόρφωση ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΗΧ. Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ Μετάδοση πληροφορίας - Διαμόρφωση MYE006-ΠΛΕ065: ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ Ευάγγελος Παπαπέτρου Διάρθρωση μαθήματος Βασικές έννοιες μετάδοσης Διαμόρφωση ορισμός

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

Συστήματα Επικοινωνιών ΙI

Συστήματα Επικοινωνιών ΙI + Διδάσκων: Δρ. Κ. Δεμέστιχας e-mail: cdemestichas@uowm.gr Συστήματα Επικοινωνιών ΙI Ψηφιακή μετάδοση στη βασική ζώνη + Ιστοσελίδα nιστοσελίδα του μαθήματος: n https://eclass.uowm.gr/courses/icte302/ +

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

Θεωρία πληροφοριών. Τεχνολογία Πολυµέσων 07-1

Θεωρία πληροφοριών. Τεχνολογία Πολυµέσων 07-1 Θεωρία πληροφοριών Εισαγωγή Αµοιβαία πληροφορία Εσωτερική πληροφορία Υπό συνθήκη πληροφορία Παραδείγµατα πληροφορίας Μέση πληροφορία και εντροπία Παραδείγµατα εντροπίας Εφαρµογές Τεχνολογία Πολυµέσων 07-

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

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

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

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

Ψηφιακή Μετάδοση Αναλογικών Σηµάτων

Ψηφιακή Μετάδοση Αναλογικών Σηµάτων Ψηφιακή Μετάδοση Αναλογικών Σηµάτων Τα σύγχρονα συστήµατα επικοινωνίας σε πολύ µεγάλο ποσοστό διαχειρίζονται σήµατα ψηφιακής µορφής, δηλαδή, σήµατα που δηµιουργούνται από ακολουθίες δυαδικών ψηφίων. Τα

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

Ψηφιακές Τηλεπικοινωνίες. Πιθανότητα Σφάλματος για Δυαδική Διαμόρφωση

Ψηφιακές Τηλεπικοινωνίες. Πιθανότητα Σφάλματος για Δυαδική Διαμόρφωση Ψηφιακές Τηλεπικοινωνίες Πιθανότητα Σφάλματος για Δυαδική Διαμόρφωση Σύνδεση με τα Προηγούμενα Σχεδιάστηκε ο βέλτιστος δέκτης για κανάλι AWGN Επειδή πάντοτε υπάρχει ο θόρυβος, ακόμη κι ο βέλτιστος δέκτης

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

Κώδικες LDPC (Low Density Parity Check): Ανάλυση της λειτουργίας και προσομοίωσή τους σε Matlab

Κώδικες LDPC (Low Density Parity Check): Ανάλυση της λειτουργίας και προσομοίωσή τους σε Matlab ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Κώδικες LDPC (Low Density Parity Check): Ανάλυση της λειτουργίας και προσομοίωσή τους σε Matlab ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Μαρία Μαυροδήμου

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Τμήμα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΨΗΦΙΑΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ Εργαστήριο 5 ο : Διαμόρφωση Παλμών Βασική Θεωρία Μ-αδική Διαμόρφωση Παλμών Κατά την μετατροπή

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

Γενική εικόνα τι είναι σήµα - Ορισµός. Ταξινόµηση σηµάτων. Βασικές ιδιότητες σηµάτων. Μετατροπές σήµατος ως προς το χρόνο. Στοιχειώδη σήµατα.

Γενική εικόνα τι είναι σήµα - Ορισµός. Ταξινόµηση σηµάτων. Βασικές ιδιότητες σηµάτων. Μετατροπές σήµατος ως προς το χρόνο. Στοιχειώδη σήµατα. ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στα Σήµατα Εισαγωγή στα Συστήµατα Ανάπτυγµα - Μετασχηµατισµός Fourier Μετασχηµατισµός Laplace Μετασχηµατισµός Z Εφαρµογές 1. ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΗΜΑΤΑ Γενική εικόνα τι

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

Κινητές επικοινωνίες. Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA

Κινητές επικοινωνίες. Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA Κινητές επικοινωνίες Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA 1 Πολυπλεξία Η πολυπλεξία επιτρέπει την παράλληλη μετάδοση δεδομένων από διαφορετικές πηγές χωρίς αλληλοπαρεμβολές. Τρία βασικά είδη TDM/TDMA

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

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

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

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

Ασκήσεις στο µάθηµα «Επισκόπηση των Τηλεπικοινωνιών»

Ασκήσεις στο µάθηµα «Επισκόπηση των Τηλεπικοινωνιών» Ασκήσεις στο µάθηµα «Επισκόπηση των Τηλεπικοινωνιών» Άσκηση 1 Πρόκειται να µεταδώσουµε δυαδικά δεδοµένα σε RF κανάλι µε. Αν ο θόρυβος του καναλιού είναι Gaussian - λευκός µε φασµατική πυκνότητα W, να βρεθεί

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

Μέρος Β - Δίκτυα. Ασκήσεις I. Ποιος ο ρόλος του πομπού και του δέκτη στο μοντέλο επικοινωνίας που α- πεικονίζεται στο σχήμα που ακολουθεί; Μ Δεδομένα

Μέρος Β - Δίκτυα. Ασκήσεις I. Ποιος ο ρόλος του πομπού και του δέκτη στο μοντέλο επικοινωνίας που α- πεικονίζεται στο σχήμα που ακολουθεί; Μ Δεδομένα Μέρος Β - Δίκτυα 1 η Διδακτική Ενότητα Μοντέλο επικοινωνίας δεδομένων - Κώδικες - Σήματα Προβλεπόμενες διδακτικές ώρες: 1 Λέξεις Κλειδιά ASCII BCD Unicode αναλογικό σήμα ΕΛΟΤ-928 επικοινωνία δεδομένων

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

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

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

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

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9 Πρόλογος 1 Μαθηµατικό υπόβαθρο 7 1 Μαθηµατικό υπόβαθρο 9 1.1 Η αριθµητική υπολοίπων.............. 10 1.2 Η πολυωνυµική αριθµητική............ 14 1.3 Θεωρία πεπερασµένων οµάδων και σωµάτων.... 17 1.4 Πράξεις

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

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

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

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

Γραµµική Αλγεβρα. Ενότητα 2 : Επίλυση Γραµµικών Εξισώσεων. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Γραµµική Αλγεβρα. Ενότητα 2 : Επίλυση Γραµµικών Εξισώσεων. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής Γραµµική Αλγεβρα Ενότητα 2 : Επίλυση Γραµµικών Εξισώσεων Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ 1 Αριθµητικό Σύστηµα! Ορίζει τον τρόπο αναπαράστασης ενός αριθµού µε διακεκριµένα σύµβολα! Ένας αριθµός αναπαρίσταται διαφορετικά σε κάθε σύστηµα,

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

ΕΠΙΚΟΙΝΩΝΙΕΣ, ΔΙΚΤΥΑ & ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΠΙΚΟΙΝΩΝΙΕΣ, ΔΙΚΤΥΑ & ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΕΠΙΚΟΙΝΩΝΙΕΣ, ΔΙΚΤΥΑ & ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΚΕΦΑΛΑΙΟ 2ο ΑΝΑΛΟΓΙΚΑ - ΨΗΦΙΑΚΑ ΣΗΜΑΤΑ & ΑΡΧΕΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Πληροφορία Επικοινωνία συντελείται με τη μεταβίβαση μηνυμάτων από ένα πομπό σε ένα δέκτη. Μήνυμα

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

Ψηφιακοί Υπολογιστές

Ψηφιακοί Υπολογιστές 1 η Θεµατική Ενότητα : υαδικά Συστήµατα Ψηφιακοί Υπολογιστές Παλαιότερα οι υπολογιστές χρησιµοποιούνταν για αριθµητικούς υπολογισµούς Ψηφίο (digit) Ψηφιακοί Υπολογιστές Σήµατα (signals) : διακριτά στοιχεία

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

Αναλογικά & Ψηφιακά Κυκλώματα ιαφάνειες Μαθήματος ρ. Μηχ. Μαραβελάκης Εμ.

Αναλογικά & Ψηφιακά Κυκλώματα ιαφάνειες Μαθήματος ρ. Μηχ. Μαραβελάκης Εμ. Αναλογικά & Ψηφιακά Κυκλώματα ιαφάνειες Μαθήματος ρ. Μηχ. Μαραβελάκης Εμ. 1 Εισαγωγή Αναλογικό σήμα (analog signal): συνεχής συνάρτηση στην οποία η ανεξάρτητη μεταβλητή και η εξαρτημένη μεταβλητή (π.χ.

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Σχολή Θετικών Επιστημών Τεχνολογίας Τηλεπικοινωνιών Τμήμα Επιστήμης και Τεχνολογίας Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΕΠΙΚΟΙΝΩΝΙΕΣ ΙI Εργαστήριο 4 ο : Διαμόρφωση Παλμών Βασική

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

Μάθημα Επισκόπηση των Τηλεπικοινωνιών

Μάθημα Επισκόπηση των Τηλεπικοινωνιών Μάθημα Επισκόπηση των Τηλεπικοινωνιών Κωδικοποίηση Πηγής & Καναλιού Μάθημα 8 ο 9 ο ΕΘΝΙΚΟ & ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τομέας Επικοινωνιών και Επεξεργασίας Σήματος Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο Πρόβλημα ο Ασκήσεις Φροντιστηρίου 5 o Φροντιστήριο Δίνεται το παρακάτω σύνολο εκπαίδευσης: # Είσοδος Κατηγορία 0 0 0 Α 2 0 0 Α 0 Β 4 0 0 Α 5 0 Β 6 0 0 Α 7 0 Β 8 Β α) Στον παρακάτω κύβο τοποθετείστε τα

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

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

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

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

EE728 (22Α004) - Προχωρημένα Θέματα Θεωρίας Πληροφορίας 3η σειρά ασκήσεων Διακριτά και Συνεχή Κανάλια. Παράδοση: Έως 22/6/2015

EE728 (22Α004) - Προχωρημένα Θέματα Θεωρίας Πληροφορίας 3η σειρά ασκήσεων Διακριτά και Συνεχή Κανάλια. Παράδοση: Έως 22/6/2015 EE728 (22Α004) - Προχωρημένα Θέματα Θεωρίας Πληροφορίας Φυλλάδιο 13 Δ. Τουμπακάρης 30 Μαΐου 2015 EE728 (22Α004) - Προχωρημένα Θέματα Θεωρίας Πληροφορίας 3η σειρά ασκήσεων Διακριτά και Συνεχή Κανάλια Παράδοση:

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

Αλγόριθµοι Εκτίµησης Καθυστέρησης και

Αλγόριθµοι Εκτίµησης Καθυστέρησης και Αλγόριθµοι Εκτίµησης Καθυστέρησης και Βελτιστοποίησης Εισαγωγή Το κύριο πρόβληµα στην σχεδίαση κυκλωµάτων είναι η επίτευξη της µέγιστης απόδοσης για την δεδοµένη τεχνολογία. Μεγιστοποίηση απόδοσης: (α)

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

Μοντέλο Επικοινωνίας Δεδομένων. Επικοινωνίες Δεδομένων Μάθημα 6 ο

Μοντέλο Επικοινωνίας Δεδομένων. Επικοινωνίες Δεδομένων Μάθημα 6 ο Μοντέλο Επικοινωνίας Δεδομένων Επικοινωνίες Δεδομένων Μάθημα 6 ο Εισαγωγή Με τη βοήθεια επικοινωνιακού σήματος, κάθε μορφή πληροφορίας (κείμενο, μορφή, εικόνα) είναι δυνατόν να μεταδοθεί σε απόσταση. Ανάλογα

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

«Επικοινωνίες δεδομένων»

«Επικοινωνίες δεδομένων» Εργασία στο μάθημα «Διδακτική της Πληροφορικής» με θέμα «Επικοινωνίες δεδομένων» Αθήνα, Φεβρουάριος 2011 Χρονολογική απεικόνιση της εξέλιξης των Τηλεπικοινωνιών Χρονολογική απεικόνιση της εξέλιξης των

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

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. της Φοιτήτριας του Τμήματος Ηλεκτρολόγων Μηχανικών και. Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του. Πανεπιστημίου Πατρών

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

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

Παλμοκωδική Διαμόρφωση. Pulse Code Modulation (PCM)

Παλμοκωδική Διαμόρφωση. Pulse Code Modulation (PCM) Παλμοκωδική Διαμόρφωση Pulse Code Modulation (PCM) Pulse-code modulation (PCM) Η PCM είναι ένας στοιχειώδης τρόπος διαμόρφωσης που δεν χρησιμοποιεί φέρον! Το μεταδιδόμενο (διαμορφωμένο) σήμα PCM είναι

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

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

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

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

Αρχιτεκτονικές VLSI για την Αποκωδικοποίηση Κωδικών LDPC µε Εφαρµογή σε Ασύρµατες Ψηφιακές Επικοινωνίες

Αρχιτεκτονικές VLSI για την Αποκωδικοποίηση Κωδικών LDPC µε Εφαρµογή σε Ασύρµατες Ψηφιακές Επικοινωνίες ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΙΠΛΩΜΑ ΕΙ ΙΚΕΥΣΗΣ «ΟΛΟΚΛΗΡΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ» Αρχιτεκτονικές VLSI για την Αποκωδικοποίηση Κωδικών LDPC µε Εφαρµογή

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

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

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

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

Μελέτη Επίδοσης Συστημάτων Πολλαπλών Εισόδων Πολλαπλών Εξόδων

Μελέτη Επίδοσης Συστημάτων Πολλαπλών Εισόδων Πολλαπλών Εξόδων Μελέτη Επίδοσης Συστημάτων Πολλαπλών Εισόδων Πολλαπλών Εξόδων Γεώργιος Χ. Αλεξανδρόπουλος Διπλ. Μηχανικός Η/Υ & Πληροφορικής MSc Συστήματα Επεξεργασίας Σημάτων & Εικόνων Εργαστήριο Ασυρμάτων Επικοινωνιών

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

Περιεχόµενα διαλέξεων 2ης εβδοµάδας

Περιεχόµενα διαλέξεων 2ης εβδοµάδας Εισαγωγή οµή και πόροι τηλεπικοινωνιακού συστήµατος Σήµατα Περιεχόµενα διαλέξεων 1ης εβδοµάδας Εισαγωγή Η έννοια της επικοινωνιας Ιστορική αναδροµή οµή και πόροι τηλεπικοινωνιακού συστήµατος οµή τηλεπικοινωνιακού

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

Ψηφιακές Τηλεπικοινωνίες. Θεωρία Ρυθμού Παραμόρφωσης

Ψηφιακές Τηλεπικοινωνίες. Θεωρία Ρυθμού Παραμόρφωσης Ψηφιακές Τηλεπικοινωνίες Θεωρία Ρυθμού Παραμόρφωσης Θεωρία Ρυθμού-Παραμόρφωσης Θεώρημα Κωδικοποίησης Πηγής: αν έχω αρκετά μεγάλο μπλοκ δεδομένων, μπορώ να φτάσω κοντά στην εντροπία Πιθανά Προβλήματα: >

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΥΛΟΠΟΙΗΣΗ (ΣΕ ΛΟΓΙΣΜΙΚΟ) ΚΩ ΙΚΑ ΤΥΠΟΥ TURBO ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΤΗΣ ΚΟΥΤΡΟΥΜΑΝΗ ΟΛΓΑΣ του ΑΘΑΝΑΣΙΟΥ

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

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

ΘΕΜΑ. Προσομοίωση Φυσικού Επιπέδου και Επιπέδου Σύνδεσης Δεδομένων Ασύρματου Δικτύου Ιατρικών Αισθητήρων

ΘΕΜΑ. Προσομοίωση Φυσικού Επιπέδου και Επιπέδου Σύνδεσης Δεδομένων Ασύρματου Δικτύου Ιατρικών Αισθητήρων Πανεπιστήµιο Πατρών Σχολή Επιστηµών Υγείας Τµήµα Ιατρικής Εθνικό Μετσόβιο Πολυτεχνείο Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Τµήµα Μηχανολόγων Μηχανικών ΔΙΑΤΜΗΜΑΤΙΚΟ

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ ΘΕΜΑ ο 2.5 µονάδες ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις 2 Σεπτεµβρίου 2005 5:00-8:00 Σχεδιάστε έναν αισθητήρα ercetro

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

Σεραφείµ Καραµπογιάς Στοιχεία ενός Συστήµατος Ηλεκτρικής Επικοινωνίας

Σεραφείµ Καραµπογιάς Στοιχεία ενός Συστήµατος Ηλεκτρικής Επικοινωνίας Στοιχεία ενός Συστήµατος Ηλεκτρικής Επικοινωνίας Ο σκοπός του συστήµατος επικοινωνίας είναι να µεταδώσει πληροφορία (transmission of information) από ένα σηµείο του χώρου, που λέγεται πηγή, σε ένα άλλο

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

Εισαγωγή στην επιστήµη των υπολογιστών. Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών

Εισαγωγή στην επιστήµη των υπολογιστών. Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών Εισαγωγή στην επιστήµη των υπολογιστών Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών 1 Δεκαδικό και Δυαδικό Σύστηµα Δύο κυρίαρχα συστήµατα στο χώρο των υπολογιστών Δεκαδικό: Η βάση του συστήµατος

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

Καταστάσεων. Καταστάσεων

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

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