Η παρούσα διπλωματική εργασία αφορά την μελέτη και υλοποίηση ενός LDPC (low density parity check ) αποκωδικοποιητή. Οι συγκεκριμενοι αποκωδικοποιητές βρίσκουν εφαρμογή στον εντοπισμό και διόρθωση λαθών σε ψηφιακά τηλεπικοινωνιακά συστήματα. Στην αρχιτεκτονική που χρησιμοποιήσαμε υλοποιήθηκε επίσης ένα ακόμα υποκύκλωμα που ήταν υπεύθυνο για τον πρόωρο τερματισμό της διαδικασίας αποκωδικοποίησης. Κατά τη διάρκεια εκπόνησης της εργασίας χρησιμοποιήθηκαν διάφορα εργαλεία για την δημιουργία και επιβεβαίωση της ορθής λειτουργίας του αποκωδικοποιητή. Συγκεκριμένα, χρησιμοποιήθηκε το software MATLAB για την ανάπτυξη του μοντέλου του αποκωδικοποιητή και στη συνέχεια το ISE της Xilinx για την υλοποίηση/σύνθεση του κυκλώματος σε hardware. Τέλος, το κύκλωμα περάστηκε στο FPGA ( ML605 evaluation board ) του εργαστηρίου όπου έγιναν οι τελικές μετρήσεις.
Η παρούσα διπλωματική εργασία αφορά την μελέτη και υλοποίηση ενός LDPC (low density parity check ) αποκωδικοποιητή. Οι συγκεκριμενοι αποκωδικοποιητές βρίσκουν εφαρμογή στον εντοπισμό και διόρθωση λαθών σε ψηφιακά τηλεπικοινωνιακά συστήματα. Στην αρχιτεκτονική που χρησιμοποιήσαμε υλοποιήθηκε επίσης ένα ακόμα υποκύκλωμα που ήταν υπεύθυνο για τον πρόωρο τερματισμό της διαδικασίας αποκωδικοποίησης. Κατά τη διάρκεια εκπόνησης της εργασίας χρησιμοποιήθηκαν διάφορα εργαλεία για την δημιουργία και επιβεβαίωση της ορθής λειτουργίας του αποκωδικοποιητή. Συγκεκριμένα, χρησιμοποιήθηκε το software MATLAB για την ανάπτυξη του μοντέλου του αποκωδικοποιητή και στη συνέχεια το ISE της Xilinx για την υλοποίηση/σύνθεση του κυκλώματος σε hardware. Τέλος, το κύκλωμα περάστηκε στο FPGA ( ML605 evaluation board ) του εργαστηρίου όπου έγιναν οι τελικές μετρήσεις.
Η παρούσα διπλωματική εργασία αφορά το σχεδιασμό και την υλοποίηση ενός LDPC (low density parity check ) κωδικοποιητή με τη μέθοδο Richardson-Urbanke (RU) και ενός αποκωδικοποιητή MaximumLikelihood. Στην αρχιτεκτονική που χρησιμοποιήσαμε υλοποιήθηκε επίσης ένα ακόμα κύκλωμα ενός binary κωδικοποιητή, για να ελεγχθεί η σωστή λειτουργία της μεθόδου αυτής. Κατά τη διάρκεια εκπόνησης της εργασίας χρησιμοποιήθηκαν διάφορα εργαλεία για την δημιουργία και επιβεβαίωση της ορθής λειτουργίας του αποκωδικοποιητή. Συγκεκριμένα, χρησιμοποιήθηκε το software MATLAB για την ανάπτυξη του μοντέλου του κωδικοποιητή και στη συνέχεια το ISE της Xilinx για την υλοποίηση/σύνθεση του κυκλώματος σε hardware. Τέλος, το κύκλωμα περάστηκε στο FPGA ( ML605 evaluation board ) του εργαστηρίου όπου έγιναν οι τελικές μετρήσεις.
Η διόρθωση λαθών με κώδικες LDPC είναι μεγάλου ενδιαφέροντος σε σημαντικές νέες τηλεπικοινωνιακές εφαρμογές, όπως δορυφορικό Digital Video Broadcast (DVB) DVB-S2, IEEE 802.3an (10GBASE-T) και IEEE 802.16 (WiMAX). Οι κώδικες LDPC ανήκουν στην κατηγορία των γραμμικών μπλοκ κωδικών. Πρόκειται για κώδικες ελέγχου και διόρθωσης σφαλμάτων μετάδοσης, με κυριότερο χαρακτηριστικό τους τον χαμηλής πυκνότητας πίνακα ελέγχου ισοτιμίας (Low Density Parity Check), από τον οποίο και πήραν το όνομά τους. Η αποκωδικοποίηση γίνεται μέσω μιας επαναληπτικής διαδικασίας ανταλλαγής πληροφορίας μεταξύ δύο τύπων επεξεργαστικών μονάδων. Η υλοποίηση σε υλικό των LDPC αποκωδικοποιητών αποτελεί ένα ραγδαία εξελισσόμενο πεδίο για τη σύγχρονη επιστημονική έρευνα. Σκοπός της παρούσας διπλωματικής εργασίας υπήρξε ο σχεδιασμός, η υλοποίηση και η βελτιστοποίηση αρχιτεκτονικών αποκωδικοποιητών VLSI για κώδικες LDPC. Έχουν αναπτυχθεί διάφοροι αλγόριθμοι αποκωδικοποίησης, οι οποίοι είναι επαναληπτικοί. Μελετήθηκαν αρχιτεκτονικές βασισμένες σε δύο αλγόριθμους, τον log Sum-Product και τον Min-Sum. Ο πρώτος είναι θεωρητικά βέλτιστος, αλλά ο Min-Sum είναι αρκετά απλούστερος και έχει μεγαλύτερο πρακτικό ενδιαφέρον στα πλαίσια μιας ρεαλιστικής εφαρμογής. Συγκεκριμένα, αναπτύχθηκαν δύο αλγόριθμοι αποκωδικοποίησης, οι οποίοι χρησιμοποιούν ως δομικά στοιχεία, τους δύο προαναφερθέντες αλγορίθμους και τη φιλοσοφία του layered decoding. Η μελέτη μας επικεντρώθηκε σε κώδικες, η δομή των πινάκων ελέγχου ισοτιμίας των οποίων, προσφέρεται για υλοποίηση. Για αυτό το λόγο, χρησιμοποιήσαμε κώδικες του προτύπου WiMax 802.16e. Η συνεισφορά της παρούσας εργασίας έγκειται στο σχεδιασμό και την υλοποίηση αποδοτικών αρχιτεκτονικών σε επίπεδο επιφάνειας και ταχύτητας αποκωδικοποίησης (Mbps), καθώς και η διερεύνηση του σχετικού σχεδιαστικού χώρου, χρησιμοποιώντας ως σχεδιαστικές παραμέτρους, τον αλγόριθμο αποκωδικοποίησης, τη χρονοδρομολόγηση των πράξεων, το βαθμό παραλληλίας της αρχιτεκτονικής, το βάθος του pipelining και την αριθμητική αναπαράσταση των δεδομένων. Επιπλέον, είναι σημαντικό να αναφέρουμε πως, στα πλαίσια της σχεδίασης του LDPC αποκωδικοποιητή και με τη βοήθεια του εργαλείου Matlab, αναπτύχθηκαν παραμετρικά scripts για την παραγωγή του VHDL κώδικα. Οι δύο βασικές παράμετροι που χρησιμοποιήθηκαν ήταν το πλήθος των επεξεργαστικών μονάδων και το μήκος λέξης των δεδομένων. Τα scripts αυτά αποτέλεσαν ένα πολύ χρήσιμο εργαλείο κατά τη διαδικασία ανάπτυξης και βελτιστοποίησης της αρχιτεκτονικής, δίνοντας μας τη δυνατότητα να παράγουμε με αυτοματοποιημένο και γρήγορο τρόπο τον VHDL κώδικα, για τις επιμέρους μονάδες του αποκωδικοποιητή. Η υλοποίηση ενός μοντέλου αποκωδικοποιητή σε υλικό, μας δίνει τη δυνατότητα να διεξάγουμε ταχύτατες εξομοιώσεις, σε σχέση με αντίστοιχες υλοποιήσεις σε λογισμικό (π.χ. σε Matlab περιβάλλον). Διαθέτουμε, έτσι, ένα ισχυρό εργαλείο για τη μελέτη της επίδοσης διαφόρων ρεαλιστικών υλοποιήσεων αποκωδικοποιητών. Κατά τη διάρκεια της υλοποίησης, αξιοποιήθηκε αναπτυξιακό σύστημα βασισμένο σε virtex-4 fpga.
Οι κώδικες LDPC ανήκουν στην κατηγορία των block κωδικών. Πρόκειται για κώδικες ελέγχου σφαλμάτων μετάδοσης και πιο συγκεκριμένα για κώδικες διόρθωσης σφαλμάτων. Αν και η εφεύρεσή τους (από τον Gallager) τοποθετείται χρονικά στις αρχές της δεκαετίας του 60, μόλις τα τελευταία χρόνια κατάφεραν να κεντρίσουν το έντονο ενδιαφέρον της επιστημονικής-ερευνητικής κοινότητας για τις αξιόλογες επιδόσεις τους. Πρόκειται για κώδικες ελέγχου ισοτιμίας με κυριότερο χαρακτηριστικό τον χαμηλής πυκνότητας πίνακα ελέγχου ισοτιμίας (Low Density Parity Check) από τον οποίο και πήραν το όνομά τους. Δεδομένου ότι η κωδικοποίηση των συγκεκριμένων κωδικών είναι σχετικά απλή, η αποκωδικοποίηση τους είναι εκείνη η οποία καθορίζει σε μεγάλο βαθμό τα χαρακτηριστικά του κώδικα που μας ενδιαφέρουν, όπως είναι η ικανότητα διόρθωσης σφαλμάτων μετάδοσης (επίδοση) και η καταναλισκόμενη ισχύς. Για το λόγο αυτό έχουν αναπτυχθεί διάφοροι αλγόριθμοι αποκωδικοποίησης, οι οποίοι είναι επαναληπτικοί. Παρόλο που οι ανεπτυγμένοι αλγόριθμοι και οι διάφορες εκδοχές τους δεν είναι λίγοι, δεν έχει ακόμα καταστεί εφικτό να αναλυθεί θεωρητικά η επίδοσή τους. Στην παρούσα εργασία παρατίθενται οι κυριότεροι αλγόριθμοι αποκωδικοποίησης κωδικών LDPC, που έχουν αναπτυχθεί μέχρι σήμερα. Οι αλγόριθμοι αυτοί υλοποιούνται και συγκρίνονται βάσει των αποτελεσμάτων εξομοιώσεων. Ο πιο αποδοτικός από αυτούς είναι ο αποκαλούμενος αλγόριθμος log Sum-Product και στηρίζει σε μεγάλο βαθμό την επίδοσή του σε μία αρκετά πολύπλοκή συνάρτηση, την Φ(x). Η υλοποίηση της τελευταίας σε υλικό επιβάλλει την πεπερασμένη ακρίβεια αναπαράστασής της, δηλαδή τον κβαντισμό της. Το σφάλμα κβαντισμού που εισάγεται από την διαδικασία αυτή θέτει ένα όριο στην επίδοση του αλγορίθμου. Η μελέτη που έγινε στα πλαίσια της εργασίας οδήγησε στον προσδιορισμό δύο μηχανισμών εισαγωγής σφάλματος κβαντισμού στον αλγόριθμο log Sum-Product και στη θεωρητική έκφραση της πιθανότητας εμφάνισης κάθε μηχανισμού κατά την πρώτη επανάληψη του αλγορίθμου. Μελετήθηκε επίσης ο τρόπος με τον οποίο το εισαγόμενο σφάλμα κβαντισμού επιδρά στην απόφαση του αλγορίθμου στο τέλος της κάθε επανάληψης και αναπτύχθηκε ένα θεωρητικό μοντέλο αυτού του μηχανισμού. Το θεωρητικό μοντέλο δίνει την πιθανότητα αλλαγής απόφασης του αλγορίθμου λόγω του σφάλματος κβαντισμού της συνάρτησης Φ(x), χωρίς όμως να είναι ακόμα πλήρες αφού βασίζεται και σε πειραματικά δεδομένα. Η ολοκλήρωση του μοντέλου, ώστε να είναι πλήρως θεωρητικό, θα μπορούσε να αποτελέσει αντικείμενο μελλοντικής έρευνας, καθώς θα επιτρέψει τον προσδιορισμό του περιορισμού της επίδοσης του αλγορίθμου για συγκεκριμένο σχήμα κβαντισμού της συνάρτησης, αποφεύγοντας χρονοβόρες εξομοιώσεις.
Οι κώδικες LDPC ανήκουν στην κατηγορία των block κωδίκων. Πρόκειται για κώδικες ελέγχου σφαλμάτων μετάδοσης και πιο συγκεκριμένα για κώδικες διόρθωσης σφαλμάτων. Αν και αναπτύχθηκαν από τον Gallager στις αρχές της δεκαετίας του 60, μόλις τα τελευταία χρόνια έχουν καταφέρει να κεντρίσουν το ενδιαφέρον της επιστημονικής και ερευνητικής κοινότητας λόγω και της ραγδαίας ανάπτυξης στο κομμάτι της αρχιτεκτονικής υλικού που επιτρέπει την πιο εύκολη υλοποίησή τους παρά την μεγάλη υπολογιστή τους πολυπλοκότητα. Είναι κώδικες ελέγχου ισοτιμίας με κυριότερο χαρακτηριστικό τον χαμηλής πυκνότητας πίνακα ελέγχου ισοτιμίας (Low Density Parity Check) από τον οποίο πήραν και το όνομά τους. Δεδομένου ότι η κωδικοποίηση των συγκεκριμένων κωδίκων είναι σχετικά απλή, η αποκωδικοποίησή τους είναι εκείνη που καθορίζει σε μεγάλο βαθμό τα χαρακτηριστικά του κώδικα που μας ενδιαφέρουν, όπως η ικανότητα διόρθωσης σφαλμάτων μετάδοσης (επίδοση). Για αυτό το λόγο έχουν αναπτυχθεί διάφοροι αλγόριθμοι αποκωδικοποίησης, οι οποίοι είναι επαναληπτικοί. Στην παρούσα διπλωματική εργασία μελετήθηκε η υλοποίηση του LDPC αποκωδικοποιητή της matlab με χρήση ενός κβαντιστή που είναι βασισμένος στην μέθοδο του Information Bottleneck και συγκεκριμένα στον τροποποιημένο Sequential Information Bottleneck που ανέπτυξαν οι Jan Lewandowsky και Gerhard Bauch. Μελετήθηκε η απόδοση του αποκωδικοποιητή για πέντε διαφορετικούς πίνακες ελέγχου ισοτιμίας για 5 και 10 επαναλήψεις του αποκωδικοποιητή και ελέγχθηκε η απόδοσή του σε σύγκριση με την υλοποίηση με έναν γραμμικό κβαντιστή με ίδια αλλά και περισσότερα bit κβάντισης, σύμφωνα με τα πειραματικά δεδομένα της υλοποίησης. Τέλος, εξετάστηκε η υλοποίηση του κβαντιστή σε αρχιτεκτονικές υλικού.
Οι χαμηλής πυκνότητας κώδικες ελέγχου ισοτιμίας (Low Density Parity Check Codes), που συντομογραφικά σε αυτή την εργασία θα αναφέρουμε ως LDPC κώδικες, είναι γραμμικοί μπλοκ κώδικες που πετυχαίνουν μεταδόσεις κοντά στη χωρητικότητα του καναλιού, και τους διακρίνει ένα αραιό μητρώο ελέγχου ισοτιμίας (parity check matrix). Οι LDPC κώδικες ανήκουν στην κατηγορία των επαναληπτικών κωδίκων διόρθωσης σφαλμάτων. Η επαναληπτική αποκωδικο- ποίηση (Γνωστή και ως message-passing ή probabilistic decoding κωδικοποίηση) μπορεί να επιτευχθεί με ένα μεγάλου βαθμού παραλληλισμό, πετυχαίνοντας έτσι ένα μεγάλο κέρδος τοσο απο τη μεριά της κωδικοποίησης όσο και από τη μεριά της ρυθμοαπόδοσης (throughput). Ο στοχαστικός υπολογισμός (stochastic computing) έχει αποδειχτεί ότι μειώνει τόσο τη ψηφιακή λογική που χρησιμοποιείται σε επίπεδο αριθμού πυλών, όσο και την πολυπλοκότητα στην καλωδίωση των LDPC αποκωδικποιητών. Σκοπός της παρούσας διπλωματικής είναι η μελέτη της εισαγωγής των στοχα- στικών LDPC κωδίκων με υλοποίηση αλγορίθμων αποκωδικοποίησης σε λογικό και σε υλικό.
Στο πρώτο μέρος της παρούσας Διπλωματικής Εργασίας εισάγονται οι βασικές έννοιες της Θεωρίας Κωδικοποίησης και των Τηλεπικοινωνιακών Συστημάτων. Για τη διόρθωση λαθών στην περίπτωση της μετάδοσης μέσω ενός θορυβώδους καναλιού εφαρμόζεται κωδικοποίηση καναλιού με Γραμμικούς Μπλοκ Κώδικες, και πιο συγκεκριμένα Κώδικες Χαμηλής Πυκνότητας Ελέγχου Ισοτιμίας (Low-Density Parity-Check Codes, LDPC). Ορίζεται η μαθηματική περιγραφή των κωδίκων αυτών και διατυπώνονται σχετικοί ορισμοί και θεωρήματα. Επίσης, διατυπώνεται το κριτήριο Μέγιστης Πιθανοφάνειας, στο οποίο βασίζεται η ανάπτυξη του αντίστοιχου αποκωδικοποιητή. Το δεύτερο μέρος περιλαμβάνει την εξομοίωση του αποκωδικοποιητή Μέγιστης Πιθανοφάνειας στο λογισμικό και την υλοποίησή του σε FPGA, στις περιπτώσεις όπου χρησιμοποιούνται Soft ή Hard είσοδοι στον αποκωδικοποιητή. Ακόμη, παρουσιάζεται η Αρχιτεκτονική του αποκωδικοποιητή και η Μεθοδολογία Σχεδίασής του. Παρουσιάζονται βελτιώσεις στη σχεδίαση του αποκωδικοποιητή που οδηγούν σε μείωση της απαιτούμενης επιφάνειας στο υλικό. Τα αποτελέσματα που προκύπτουν από τις μετρήσεις των δύο υλοποιήσεων συγκρίνονται με την περίπτωση αποκωδικοποιητή βασισμένο σε επαναλήψεις και εξάγονται τα διαγράμματα ρυθμού σφαλμάτων bit και τα αντίστοιχα συμπεράσματα.