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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΩΔΙΚΕΣ LDPC Τεχνικές Κωδικοποίησης

Μελέτη και αξιολόγηση τυχαίων Low Density Parity Check Κωδίκων σε περιβάλλον AWGN

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

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

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

Σταθερή περιβάλλουσα (Constant Envelope)

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

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

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

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

"Μελέτη της Συμπεριφοράς Αποκωδικοποιητών LDPC στην περιοχή του Error Floor"

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

Ευρυζωνικά δίκτυα (2) Αγγελική Αλεξίου

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

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

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

Συστηματική Σχεδίαση Αρχιτεκτονικών Αποκωδικοποιητών LDPC

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

Βασικές λειτουργίες Ανίχνευση πλαισίων Τι κάνει το επίπεδο ζεύξης Χρησιμοποιεί τις υπηρεσίες του φυσικού επιπέδου, ήτοι την (ανασφαλή) μεταφορά δεδομέ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ Τομέας: Ηλεκτρονικής και Υπολογιστών Εργαστήριο Ηλεκτρονικών Εφαρμογών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

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

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

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

Ψηφιακή Λογική Σχεδίαση

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

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

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

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

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

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 5 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Συμπίεση Δεδομένων

Μελέτη και Προσομοίωση n πομπού για ασύρματη πρόσβαση ΦΟΙΤΗΤΗΣ: ΛΑΖΑΡΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΕΥΣΤΑΘΙΟΥ ΔΗΜΗΤΡΙΟΣ

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

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

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

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

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

Αναγνώριση Προτύπων Ι

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

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

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

Αναπαράσταση Δεδομένων (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Μέθοδοι Ελέγχου Σφαλμάτων

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ

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

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Εισαγωγή στην επιστήμη των υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ

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

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

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

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

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

Θεώρημα κωδικοποίησης πηγής

ΤΕΙ ΚΡΗΤΗΣ ΤΜ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡ/ΚΗΣ & ΠΟΛΥΜΕΣΩΝ ΔΙΔΑΣΚΩΝ: Δρ. Γ. ΓΑΡΔΙΚΗΣ. Δορυφορική ψηφιακή τηλεόραση

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

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

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

Transcript:

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

ii

Σχεδίαση αποκωδικοποιητή VLSI για κώδικες LDPC Τσατσαράγκος Ιωάννης Μεταπτυχιακή Διπλωματική Εργασία Επιβλέπων Καθηγητής: Παλιουράς Βασίλης Μέλη Εξεταστικής Επιτροπής: Μπερμπερίδης Κωνσταντίνος Μπίρμπας Αλέξιος Πάτρα, Μάρτης 2009 iii

iv

Ευχαριστίες Για την εκπόνηση της παρούσας διπλωματικής εργασίας, θα ήθελα να ευχαριστήσω θερμά τον επιβλέποντα καθηγητή μου, κ. Βασίλη Παλιουρά, για την πολύτιμη βοήθεια και τη συνεχή υποστήριξη που μου παρείχε. Θα ήθελα, επίσης, να ευχαριστήσω τον Ν.Κάνιστρα, για την άριστη συνεργασία, στα πλαίσια της εργαστηριακής έρευνας που διεξάγουμε πάνω στους LDPC κώδικες, στο Εργαστήριο Σχεδιασμού VLSI Κυκλωμάτων, του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών. Τέλος, θα ήθελα να ευχαριστήσω τον κ. Κ.Μπερμπερίδη και τον κ. Α.Μπίρμπα για τη συμμετοχή τους στην τριμελή επιτροπή. v

vi

Περιεχόμενα Το αντικείμενο και η συνεισφορά της διπλωματικής εργασίας... 1 Περίληψη... 3 Κεφάλαιο 1 Το Σύστημα Ψηφιακής Επικοινωνίας Κωδικοποίηση καναλιού... 5 1.1 Σύστημα Ψηφιακής Επικοινωνίας... 5 1.2 Κωδικοποίηση καναλιού... 10 1.3 Κώδικες ανίχνευσης και διόρθωσης σφαλμάτων... 11 Κεφάλαιο 2 Κώδικες LDPC... 13 2.1 Γραμμικοί Μπλοκ Κώδικες... 13 2.2 Κώδικες LDPC... 15 2.2.1 Ιστορική Αναδρομή... 15 2.2.2 Βασικά Χαρακτηριστικά... 16 2.2.3 Πλεονεκτήματα Μειονεκτηματα... 20 Κεφάλαιο 3 Αλγόριθμοι Αποκωδικοποίησης... 23 3.1 Αποκωδικοποίηση... 23 3.2 Αλγόριθμοι Message Passing... 26 3.2.1 Log Sum Product (Log SP)... 27 3.2.2 Min Sum (MS)... 30 3.3 Layered Decoding... 31 3.4 Περιγραφή του προτεινόμενου αλγορίθμου και αποτελέσματα εξομοίωσης... 33 3.4.1 Επίδοση προτεινόμενου αλγορίθμου Ρυθμός εμφάνισης λανθασμένων δυαδικών ψηφίων και κωδικών λέξεων (αποτελέσματα εξομοίωσης)... 39 vii

3.5 Παραλλαγή του προτεινόμενου αλγορίθμου, με χρήση του Min Sum αλγορίθμου για την ενημέρωση των κόμβων ελέγχου... 41 3.6 Πειραματικά αποτελέσματα επίδοσης αλγορίθμων Log SP και Min Sum για πεπερασμένα μήκη λέξης... 44 Κεφάλαιο 4 Αρχιτεκτονική του Υλικού... 49 4.1 Αρχιτεκτονικές για LDPC αποκωδικοποιητές... 49 4.1.1 State of the art αρχιτεκτονικές LDPC αποκωδικοποιητών... 53 4.2 Προτεινόμενη αρχιτεκτονική VLSI αποκωδικοποιητή για κώδικες LDPC... 55 4.2.1 Χρονοπρογραμματισμός αποκωδικοποίησης... 58 4.2.2 Variable Processing Unit... 63 4.2.3 Check Processing Unit... 65 4.2.4 Permutation Network... 69 4.2.5 Μονάδα ελέγχου... 71 Κεφάλαιο 5 Ροή Σχεδίασης (Design Flow)... 77 5.1 Αναπτυξιακό σύστημα Virtex 4 SX35 (ML 402)... 84 Κεφάλαιο 6 Υλοποίηση σε FPGA και αποτελέσματα εξομοιώσεων... 91 6.1 Απαιτήσεις σε επιφάνεια πολυπλοκότητα... 99 6.2 Ταχύτητα αποκωδικοποίησης... 101 Συμπεράσματα... 105 Αναφορές Βιβλιογραφία... 109 viii

Κατάλογος Σχημάτων Σχήμα 1.1 : Βασικά στοιχεία ενός συστήματος ψηφιακής επικοινωνίας.... 6 Σχήμα 1.2 : Απλοποιημένο μοντέλο ενός συστήματος ψηφιακής επικοινωνίας... 9 Σχήμα 2.1 : Παράδειγμα ενός πίνακα ελέγχου ισοτιμίας με n=20, d u =3 και d c =4.... 17 Σχήμα 2.2 : Ο πίνακας ελέγχου ισοτιμίας και το αντίστοιχο διάγραμμα Tanner ενός LDPC κώδικα.... 19 Σχήμα 3.1 : Αποκωδικοποίηση με χρήση του Message-Passing αλγορίθμου δύο φάσεων.... 24 Σχήμα 3.2 : Γραφική παράσταση της συνάρτησης Φ(x).... 28 Σχήμα 3.3 : Πίνακας βάσης για έναν rate ½ WiMax 802.16e LDPC κώδικα (z=96).... 34 Σχήμα 3.4 : Πίνακας βάσης για έναν rate ⅔ WiMax 802.16e LDPC κώδικα (z=96).... 34 Σχήμα 3.5 : Δομή του πίνακα ελέγχου ισοτιμίας για έναν rate ½ WiMax 802.16 LDPC κώδικα (z=96).... 35 Σχήμα 3.6 : Ρυθμός εμφάνισης λανθασμένων δυαδικών ψηφίων (BER).... 39 Σχήμα 3.7 : Ρυθμός εμφάνισης λανθασμένων κωδικών λέξεων (FER).... 40 Σχήμα 3.8 : BER για την υλοποίηση 1 του Log-SP layered decoding.... 45 Σχήμα 3.9 : BER για την υλοποίηση 1 του Min-Sum layered decoding.... 46 Σχήμα 3.10 : BER για την υλοποίηση 2 του Log-SP layered decoding.... 47 Σχήμα 3.11 : BER για την υλοποίηση 2 του Min-Sum layered decoding.... 48 Σχήμα 4.1 : Hardware-Sharing αρχιτεκτονική για LDPC αποκωδικοποιητή.... 50 Σχήμα 4.2 : Datapath παράλληλης αρχιτεκτονικής για LDPC αποκωδικοποιητή.... 52 Σχήμα 4.3 : Αρχιτεκτονική του LDPC αποκωδικοποιητή.... 55 Σχήμα 4.4 : RTL σχηματικό της αρχιτεκτονικής του LDPC αποκωδικοποιητή για z=5.... 57 ix

Σχήμα 4.5 : I/O LDPC αποκωδικοποιητή.... 58 Σχήμα 4.6 : Χρονοπρογραμματισμός αποκωδικοποίησης για κάθε υποεπανάληψη του αλγορίθμου.... 59 Σχήμα 4.7 : Γενικό σχήμα χρονοπρογραμματισμού αποκωδικοποίησης.... 62 Σχήμα 4.8 : Αρχιτεκτονική κόμβου μεταβλητής (VPU).... 64 Σχήμα 4.9 : Αρχιτεκτονική κόμβου ελέγχου (CPU) για Log-SP.... 66 Σχήμα 4.10 : Αρχιτεκτονική κόμβου ελέγχου (CPU) για Min-Sum.... 68 Σχήμα 4.11 : Permutation network 4 εισόδων / εξόδων.... 69 Σχήμα 4.12 : Permutation network 6 εισόδων / εξόδων.... 70 Σχήμα 4.13 : Σήματα ελέγχου του LDPC αποκωδικοποιητή για log-sp layered decoding.... 74 Σχήμα 4.14 : Σήματα ελέγχου της CPU μοναδας ελέγχου για log-sp layered decoding.. 75 Σχήμα 5.1 : Design Flow LDPC αποκωδικοποιητή.... 78 Σχήμα 5.2 : Αποτελέσματα εξομοιώσεων του VHDL κώδικα, σε περιβάλλον Modelsim... 81 Σχήμα 5.3 : Αποτελέσματα μετρήσεων, σε FPGA Virtex-4 SX35, με χρήση του ChipScope της Xilinx.... 82 Σχήμα 5.4 : Μοντέλο σε Xilinx System Generator.... 83 Σχήμα 5.5 : Μπλοκ διάγραμμα του αναπτυξιακού Virtex-4 ML402.... 85 Σχήμα 5.6 : Λεπτομερής απεικόνιση των συστατικών μερών ενός αναπτυξιακού συστήματος Virtex-4 ML402 (Εμπρός όψη).... 86 Σχήμα 5.7 : Λεπτομερής απεικόνιση των συστατικών μερών ενός αναπτυξιακού συστήματος Virtex-4 ML402 (Πίσω όψη).... 87 Σχήμα 5.8 : Αναπτυξιακό σύστημα Virtex4_XC4VSX35_ff668, σε λειτουργία, στο εργαστήριο μας.... 89 Σχήμα 6.1 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Spartan 3 - XC3S5000, για log-sp layered decoding.... 92 Σχήμα 6.2 : Routed Design της αρχιτεκτονικής του LogSP LDPC αποκωδικοποιητή, για z=96, σε Spartan 3 - XC3S5000, για log-sp layered decoding.... 93 x

Σχήμα 6.3 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 5 - XC5VLX330, για log-sp layered decoding.... 94 Σχήμα 6.4 : Routed Design της αρχιτεκτονικής του Log-SP LDPC αποκωδικοποιητή, για z=96, σε Virtex 5 - XC5VLX330, για log-sp layered decoding.... 95 Σχήμα 6.5 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 4 - XC4VSX35-12FF668, για log-sp layered decoding.... 96 Σχήμα 6.6 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 4 - XC4VSX35-12FF668, για Min-Sum layered decoding.... 97 Σχήμα 6.7 : Routed Design της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 4 - XC4VSX35-12FF668, για Min-Sum layered decoding.... 98 xi

xii

Κατάλογος Πινάκων Πίνακας 1 : State of the art αρχιτεκτονικών για LDPC αποκωδικοποιητές.... 54 Πίνακας 2: Λογισμικό που χρησιμοποιήθηκε στα επιμέρους βήματα σχεδίασης του αποκωδικοποιητή.... 79 Πίνακας 4 : Απαιτήσεις σε επιφάνεια των επιμέρους τμημάτων και του συνολικού design για μια υλοποίηση σε Virtex 5 - XC5VLX330, για log-sp layered decoding.... 99 Πίνακας 5 : Ταχύτητα αποκωδικοποίησης των επιμέρους τμημάτων και του συνολικού design για μια υλοποίηση σε Virtex 5 - XC5VLX330, για log-sp layered decoding.... 102 Πίνακας 6 : Αποτελέσματα μετρήσεων για τον 96 96 LDPC αποκωδικοποιητή.... 103 xiii

xiv

Το αντικείμενο και η συνεισφορά της διπλωματικής εργασίας Η διόρθωση λαθών με κώδικες LDPC είναι μεγάλου ενδιαφέροντος σε σημαντικές νέες τηλεπικοινωνιακές εφαρμογές, όπως δορυφορικό Digital Video Broadcast (DVB) DVB-S2, IEEE 802.3an (10GBASE-T) και IEEE 802.16 (WiMAX). Οι κώδικες LDPC ανήκουν στην κατηγορία των μπλοκ κωδικών. Πρόκειται για κώδικες ελέγχου και διόρθωσης σφαλμάτων μετάδοσης, με κυριότερο χαρακτηριστικό τους τον χαμηλής πυκνότητας πίνακα ελέγχου ισοτιμίας (Low Density Parity Check), από τον οποίο και πήραν το όνομά τους. Η αποκωδικοποίηση γίνεται μέσω μιας επαναληπτικής διαδικασίας ανταλλαγής πληροφορίας μεταξύ δύο τύπων επεξεργαστικών μονάδων. Η υλοποίηση σε υλικό (hardware) των LDPC αποκωδικοποιητών αποτελεί ένα ραγδαία εξελισσόμενο πεδίο για τη σύγχρονη επιστημονική έρευνα. Σκοπός της παρούσας διπλωματικής εργασίας υπήρξε ο σχεδιασμός, η υλοποίηση και η βελτιστοποίηση αρχιτεκτονικών αποκωδικοποιητών VLSI για κώδικες LDPC. Έχουν αναπτυχθεί διάφοροι αλγόριθμοι αποκωδικοποίησης, οι οποίοι είναι επαναληπτικοί. Μελετήθηκαν αρχιτεκτονικές βασισμένες σε δύο αλγόριθμους, τον log Sum-Product και τον Min-Sum. Ο πρώτος είναι θεωρητικά βέλτιστος, αλλά ο Min-Sum είναι αρκετά απλούστερος και έχει μεγαλύτερο πρακτικό ενδιαφέρον στα πλαίσια μιας ρεαλιστικής εφαρμογής. Συγκεκριμένα, αναπτύχθηκαν δύο αλγόριθμοι αποκωδικοποίησης, οι οποίοι χρησιμοποιούν ως δομικά στοιχεία, τους δύο προαναφερθέντες αλγορίθμους και τη φιλοσοφία του layered decoding. Η μελέτη μας επικεντρώθηκε σε κώδικες, η δομή των πινάκων ελέγχου ισοτιμίας των οποίων, προσφέρεται για υλοποίηση. Για αυτό το λόγο, χρησιμοποιήσαμε κώδικες του προτύπου WiMax 802.16e. Η συνεισφορά της παρούσας εργασίας έγκειται στο σχεδιασμό και την υλοποίηση αποδοτικών αρχιτεκτονικών σε επίπεδο επιφάνειας και ταχύτητας αποκωδικοποίησης (Mbps), καθώς και η διερεύνηση του σχετικού σχεδιαστικού χώρου, χρησιμοποιώντας ως σχεδιαστικές παραμέτρους, τον αλγόριθμο αποκωδικοποίησης, τη χρονοδρομολόγηση 1

των πράξεων, το βαθμό παραλληλίας της αρχιτεκτονικής, το βάθος του pipelining και την αριθμητική αναπαράσταση των δεδομένων. Επιπλέον, είναι σημαντικό να αναφέρουμε πως, στα πλαίσια της σχεδίασης του LDPC αποκωδικοποιητή και με τη βοήθεια του εργαλείου Matlab, αναπτύχθηκαν παραμετρικά scripts για την παραγωγή του VHDL κώδικα. Οι δύο βασικές παράμετροι που χρησιμοποιήθηκαν ήταν το πλήθος των επεξεργαστικών μονάδων και το μήκος λέξης των δεδομένων. Τα scripts αυτά αποτέλεσαν ένα πολύ χρήσιμο εργαλείο κατά τη διαδικασία ανάπτυξης και βελτιστοποίησης της αρχιτεκτονικής, δίνοντας μας τη δυνατότητα να παράγουμε με αυτοματοποιημένο και γρήγορο τρόπο τον VHDL κώδικα, για τις επιμέρους μονάδες του αποκωδικοποιητή. Η υλοποίηση ενός μοντέλου αποκωδικοποιητή σε υλικό, μας δίνει τη δυνατότητα να διεξάγουμε ταχύτατες εξομοιώσεις, σε σχέση με αντίστοιχες υλοποιήσεις σε λογισμικό (π.χ. σε Matlab περιβάλλον). Διαθέτουμε, έτσι, ένα ισχυρό εργαλείο για τη μελέτη της επίδοσης διαφόρων ρεαλιστικών υλοποιήσεων αποκωδικοποιητών. Κατά τη διάρκεια της υλοποίησης, αξιοποιήθηκε αναπτυξιακό σύστημα βασισμένο σε virtex-4 fpga. 2

Περίληψη H παρούσα διπλωματική εργασία πραγματεύεται το σχεδιασμό, την υλοποίηση και τη βελτιστοποίηση ενός αποκωδικοποιητή VLSI για κώδικες LDPC. Στο κεφάλαιο 1 παρουσιάζονται το λειτουργικό διάγραμμα και τα βασικά στοιχεία ενός συστήματος ψηφιακής επικοινωνίας, καθώς και ένα απλοποιημένο ψηφιακό τηλεπικοινωνιακό μοντέλο, το οποίο εστιάζει στη διαδικασία της κωδικοποίησης και αποκωδικοποίησης της πληροφορίας. Το κεφάλαιο ολοκληρώνεται με μια σύντομη παρουσίαση των βασικών χαρακτηριστικών της κωδικοποίησης καναλιού και των διαφόρων κατηγοριών κωδικών ανίχνευσης και διόρθωσης σφαλμάτων. Το κεφάλαιο 2 ξεκινά με μια ανάλυση των γραμμικών μπλοκ κωδικών. Ακολουθεί σύντομη ιστορική αναδρομή σχετικά με τους LDPC κώδικες και αναλυτική περιγραφή των βασικών χαρακτηριστικών τους, καθώς και αναφορά των πλεονεκτημάτων και μειονεκτημάτων τους σε σχέση με τους ανταγωνιστές τους. Το κεφάλαιο 3 ξεκινά με την παρουσίαση κάποιων βασικών αλγορίθμων αποκωδικοποίησης κωδικών LDPC, καθώς και των σχημάτων χρονοπρογραμματισμού των μηνυμάτων που ανταλλάσσονται από τα επεξεργαστικά στοιχεία του αποκωδικοποιητή. Στη συνέχεια, παρουσιάζεται ο αλγόριθμος αποκωδικοποίησης, που αναπτύχθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας, ο οποίος χρησιμοποιεί ως δομικά στοιχεία τον αλγόριθμο log-sp και τη φιλοσοφία του layered decoding. Επιπλέον, σχεδιάστηκε μια παραλλαγή του αλγορίθμου, στην οποία χρησιμοποιείται ο Min-Sum αλγόριθμος, για την ενημέρωση των κόμβων ελέγχου. Επιπροσθέτως, παρουσιάζονται διαγράμματα BER vs SNR, με πειραματικά στοιχεία από εξομοιώσεις σε περιβάλλον MATLAB. Στο κεφάλαιο 4 αναφερόμαστε συνοπτικά στις βασικές κατηγορίες αρχιτεκτονικών για LDPC αποκωδικοποιητές, καθώς και στο state of the art των αρχιτεκτονικών αυτών. Στη συνέχεια, παρουσιάζεται αναλυτικά η αρχιτεκτονική του αποκωδικοποιητή που σχεδιάσαμε στα πλαίσια της παρούσας διπλωματικής εργασίας, για τις δυο παραλλαγές του layered decoding αλγορίθμου, που αναφέραμε στο προηγούμενο κεφάλαιο. 3

Στο κεφάλαιο 5 αναφερόμαστε στο design flow της σχεδίασης αρχιτεκτονικών αποκωδικοποιητών VLSI για κώδικες LDPC. Δηλαδή, στη μεθοδολογία που υιοθετήθηκε και τα μέσα που χρησιμοποιήθηκαν για την παραγωγή του binary αρχείου, το οποίο προγραμματίζει κατάλληλα τον συγκεκριμένο τύπο FPGA, ώστε να καταστεί δυνατή η εξαγωγή των αποτελεσμάτων της αποκωδικοποίησης. Στο κεφάλαιο 6 παρουσιάζονται αποτελέσματα που προέκυψαν από πειραματικές μετρήσεις σε τρεις τύπους FPGA, όσον αφορά τις απαιτήσεις σε επιφάνεια και την ταχύτητα αποκωδικοποίησης. Επιπλέον, αναλύονται οι διαφοροποιήσεις που ανακύπτουν από τη χρήση του Min-Sum αλγορίθμου, αντί του Log-SP. Τέλος, κλείνοντας την παρούσα διπλωματική εργασία, συνοψίζουμε τα συμπεράσματα που προέκυψαν από την συνολική διαδικασία. 4

Κεφάλαιο 1 Το Σύστημα Ψηφιακής Επικοινωνίας Κωδικοποίηση καναλιού 1.1 Σύστημα Ψηφιακής Επικοινωνίας Τα τελευταία χρόνια, έχει σημειωθεί μία αυξανόμενη απαίτηση για αποδοτικά και αξιόπιστα ψηφιακά συστήματα επικοινωνιών και αποθήκευσης δεδομένων. Η απαίτηση αυτή έχει ενισχυθεί από τη χρήση μεγάλων και ταχύτατων δικτύων δεδομένων, για την ανταλλαγή, την επεξεργασία και την αποθήκευση της ψηφιακής πληροφορίας. Ένα μεγάλο ζήτημα που αφορά στη σχεδίαση τέτοιων συστημάτων είναι ο έλεγχος των λαθών, ώστε να εξασφαλίζεται η επικοινωνία χωρίς λάθη. Το 1948 ο Shannon [1] απέδειξε πως η πιθανότητα λανθασμένης μετάδοσης δεδομένων μέσω ενός ενθόρυβου τηλεπικοινωνιακού καναλιού μπορεί να περιοριστεί οσοδήποτε επιθυμούμε, υπό την προϋπόθεση ότι ο ρυθμός μετάδοσης δεδομένων πληροφορίας δεν υπερβαίνει ένα συγκεκριμένο όριο. Το όριο αυτό χαρακτηρίζει το κανάλι και το ονόμασε χωρητικότητα του καναλιού. Χρησιμοποιώντας κατάλληλη κωδικοποίηση της πληροφορίας, τα λάθη που εισάγονται από ένα κανάλι με θόρυβο, μπορούν να μειωθούν σε οποιοδήποτε επιθυμητό επίπεδο, χωρίς να μειωθεί ο ρυθμός μετάδοσης δεδομένων. Όσο μικρότερη είναι η επιθυμητή πιθανότητα σφάλματος, τόσο πολυπλοκότερη και η απαιτούμενη κωδικοποίηση. Στο Σχήμα 1.1. απεικονίζεται το λειτουργικό διάγραμμα και τα βασικά στοιχεία ενός ψηφιακού συστήματος επικοινωνίας. Η μετάδοση ξεκινά από την πηγή πληροφορίας και καταλήγει στον τελικό προορισμό. Τόσο η πηγή πληροφορίας όσο και 5

ο τελικός προορισμός ενδέχεται να είναι κάποιο πρόσωπο (όπως ένας συνομιλητής μίας τηλεφωνικής συνδιάλεξης) ή κάποια μηχανή (π.χ. ένας ψηφιακός υπολογιστής συνδεδεμένος σε κάποιο δίκτυο) και δεν αποτελούν κύριο μέρος του τηλεπικοινωνιακού συστήματος αλλά εξυπηρετούνται από αυτό. Σε ένα ψηφιακό σύστημα επικοινωνίας τα μηνύματα που παράγονται από την πηγή μετατρέπονται συνήθως σε μια ακολουθία δυαδικών ψηφίων. Το τηλεπικοινωνιακό σύστημα αποτελείται από τρία βασικά μέρη: τον πομπό, το κανάλι επικοινωνίας και το δέκτη. Πομπός Πηγή Κωδικοποιητής Πηγής Κωδικοποιητής Καναλιού Διαμορφωτής Θόρυβος Κανάλι Προορισμός Αποκωδικοποιητής Πηγής Αποκωδικοποιητής Καναλιού Αποδιαμορφωτής Δέκτης Σχήμα 1.1 : Βασικά στοιχεία ενός συστήματος ψηφιακής επικοινωνίας. Ο πομπός Ο πομπός αναλαμβάνει να μετατρέψει την έξοδο της πηγής σε μια μορφή κατάλληλη για μετάδοση μέσα από το φυσικό κανάλι ή το μέσο διάδοσης. Τον πομπό συνθέτουν ο κωδικοποιητής πηγής, ο κωδικοποιητής καναλιού και ο διαμορφωτής. Η έξοδος της πηγής μπορεί να είναι μία συνεχής κυματομορφή ή μία ακολουθία διακριτών 6

συμβόλων. Δεδομένου ότι στις ψηφιακές επικοινωνίες επεξεργαζόμαστε και μεταδίδουμε ψηφιακά σύμβολα προκύπτει η ανάγκη μετατροπής της εξόδου της πηγής σε δυαδικά ψηφία. Αυτή τη μετατροπή πραγματοποιεί ο κωδικοποιητής πηγής. Ιδανικά, θα θέλαμε να αναπαραστήσουμε την έξοδο της πηγής με όσο λιγότερα δυαδικά ψηφία γίνεται. Ο Shannon ανέδειξε την σημασία αυτής της διαδικασίας ορίζοντας την έννοια της πληροφορίας και θέτοντας το όριο του ελάχιστου μέσου αριθμού δυαδικών ψηφίων που μπορούν να χρησιμοποιηθούν για την αναπαράσταση της εξόδου μίας πηγής, ώστε να είναι εφικτή η δίχως σφάλμα ανακατασκευή της. Αποδοτικότερη κωδικοποίηση πηγής μεταφράζεται, πρακτικά, σε μικρότερο όγκο των προς μετάδοση δεδομένων. Σκοπός ενός τηλεπικοινωνιακού συστήματος είναι η μετάδοση της πληροφορίας από την πηγή στον προορισμό στο ακέραιο. Το κανάλι προσθέτει θόρυβο στην μεταδιδόμενη πληροφορία με αποτέλεσμα να μειώνεται η αξιοπιστία του συστήματος. Σε πολλές εφαρμογές μάλιστα ο περιορισμός της αξιοπιστία του συστήματος καθιστά πρακτικά ανέφικτη τη μετάδοση. Προκειμένου να βελτιωθεί η αξιοπιστία του συστήματος και να προστατευθεί αυτό από το θόρυβο του καναλιού, προστίθεται στην προς μετάδοση πληροφορία επιπλέον (πλεονάζουσα) πληροφορία. Με την ευθύνη της προσθήκης πληροφορίας έχει επιφορτιστεί ο κωδικοποιητής καναλιού. Με το ζήτημα της κωδικοποίησης καναλιού θα ασχοληθούμε εκτενέστερα στη συνέχεια. Τα ψηφιακά δεδομένα δεν είναι κατάλληλα για μετάδοση μέσω ενός καναλιού. Η ακολουθία ψηφιακών δεδομένων (ή αλλιώς διακριτών συμβόλων), που εξέρχεται από τον κωδικοποιητή καναλιού, θα πρέπει να μετατραπεί σε μία συνεχή κυματομορφή. Τα χαρακτηριστικά της απαιτούμενης κυματομορφής καθορίζονται από το είδος του καναλιού, το παρεχόμενο εύρος ζώνης και τα μεταδιδόμενα σύμβολα. Η διαδικασία της παραγωγής αυτής της κυματομορφής αποκαλείται διαμόρφωση του σήματος. Ο διαμορφωτής αναλαμβάνει την διεκπεραίωση της διαμόρφωσης και παραδίδει, εν συνεχεία, στο κανάλι επικοινωνίας την προκύπτουσα κυματομορφή. Το κανάλι επικοινωνίας Το κανάλι επικοινωνίας είναι το φυσικό μέσο που χρησιμεύει για να στέλνεται το σήμα από τον πομπό στο δέκτη. Για την ασύρματη μετάδοση το κανάλι είναι συνήθως η ατμόσφαιρα. Από την άλλη πλευρά, τα τηλεφωνικά κανάλια χρησιμοποιούν ποικιλία φυσικών μέσων, όπως είναι οι ενσύρματες γραμμές και τα καλώδια οπτικών ινών. Το κανάλι επιδρά στο μεταδιδόμενο σήμα με δύο τρόπους. Αφενός, εξασθενώντας το και, αφετέρου, εισάγοντας θόρυβο. Η εξασθένηση του σήματος σχετίζεται με τη μείωση της ισχύος του κατά τη διέλευσή του μέσα από το κανάλι. Στην περίπτωση των ασύρματων επικοινωνιών η εξασθένηση είναι ανάλογη του τετραγώνου της απόστασης που καλύπτει το σήμα και είναι πολύ μεγαλύτερη από ότι στις ενσύρματες. Στην επικοινωνία με 7

οπτικές ίνες η εξασθένηση του σήματος περιορίζεται σε εντυπωσιακό βαθμό. Αντίστοιχες είναι και επιπτώσεις του θορύβου σε κάθε περίπτωση καναλιού. Γενικότερα, στις τηλεπικοινωνίες, και πολύ περισσότερο στις ασύρματες, τόσο το κανάλι όσο και ο θόρυβος που προστίθεται από αυτό μοντελοποιούνται. Από τα πιο διαδεδομένα μοντέλα είναι εκείνα του καναλιού δίχως μνήμη, του οποίου η έξοδος θεωρείται πως εξαρτάται μόνο από την τιμή της εισόδου του εκείνη τη στιγμή, και του λευκού gaussian προσθετικού θορύβου - Additive White Gaussian Noise (AWGN). Ο δέκτης Η λειτουργία του δέκτη αποσκοπεί στην ανάκτηση του σήματος μηνύματος που περιέχεται στο λαμβανόμενο σήμα. Όπως γίνεται αντιληπτό και από το Σχήμα 1.1, ο δέκτης αποτελείται από αντίστοιχα τμήματα με εκείνα του πομπού. Σκοπός του είναι να παραλάβει τα δεδομένα από την έξοδο του καναλιού και να τα μετατρέψει σε μορφή καταληπτή από τον προορισμό, επιτελώντας την αντίστροφη λειτουργία από εκείνη του πομπού. Ο αποδιαμορφωτής λαμβάνει στην είσοδό του την έξοδο του καναλιού, μία κυματομορφή, δηλαδή, αντίστοιχη εκείνης την οποία παράγει ο διαμορφωτής στον πομπό. Την κυματομορφή αυτή την επεξεργάζεται και παράγει μία ακολουθία εξόδου που αποκαλείται ληφθείσα ακολουθία και ενδέχεται να είναι διακριτή ή συνεχής. Αντιστοιχεί στην έξοδο του κωδικοποιητή καναλιού του πομπού και μεταβιβάζεται στον αποκωδικοποιητή καναλιού. Αυτός αναλαμβάνει, αφενός να αφαιρέσει την πλεονάζουσα πληροφορία την οποία εισήγαγε ο κωδικοποιητής καναλιού, και αφετέρου, να μετατρέψει την ληφθείσα ακολουθία σε δυαδική, αξιοποιώντας την πλεονάζουσα πληροφορία. Η διαδικασία αυτή ονομάζεται αποκωδικοποίηση καναλιού. Η στρατηγική αποκωδικοποίησης βασίζεται στους κανόνες της κωδικοποίησης καναλιού καθώς και στα χαρακτηριστικά του θορύβου που προσθέτει το κανάλι. Στην ιδανική περίπτωση, η αποκωδικοποιημένη δυαδική ακολουθία θα είναι πανομοιότυπη με την αντίστοιχη που παρήγαγε ο κωδικοποιητής πηγής του πομπού. Ωστόσο, ο κίνδυνος να μην συμβεί κάτι τέτοιο είναι υπαρκτός και οφείλεται στην παρουσία του θορύβου στο κανάλι μετάδοσης. Αποτυχημένη αποκωδικοποίηση της ληφθείσας ακολουθίας συνεπάγεται λανθασμένη μετάδοση πληροφορίας, και κατά συνέπεια περιορισμό της αξιοπιστίας του συστήματος επικοινωνίας. Η δυαδική ακολουθία που εξέρχεται από τον αποκωδικοποιητή καναλιού αποτελεί την είσοδο του αποκωδικοποιητή πηγής, ο οποίος, γνωρίζοντας τη μέθοδο που χρησιμοποιείται για την κωδικοποίηση της πηγής, προσπαθεί να ανακατασκευάσει όσο γίνεται πιστότερα το αρχικό αναλογικό σήμα της πηγής. Λόγω, όμως, των σφαλμάτων του κωδικοποιητή καναλιού και της πιθανής παραμόρφωσης που προκάλεσε ο κωδικοποιητής πηγής (και ίσως και ο αποκωδικοποιητής πηγής), το αναλογικό σήμα 8

στην έξοδο του είναι μια προσέγγιση του αρχικού σήματος. Η διαφορά, ή κάποια συνάρτηση της διαφοράς, μεταξύ του αρχικού και του ανακατασκευασμένου σήματος είναι ένα μέτρο της παραμόρφωσης που προκάλεσε το σύστημα ψηφιακής μετάδοσης δεδομένων. Απλοποιημένο μοντέλο ψηφιακής επικοινωνίας Σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός, η υλοποίηση και η βελτιστοποίηση αρχιτεκτονικών αποκωδικοποιητών καναλιού. Συνεπώς, η διαδικασία της κωδικοποίησης, αλλά κυρίως της αποκωδικοποίησης. είναι αυτές που θα μας απασχολήσουν στη συνέχεια. Ένα απλοποιημένο ψηφιακό τηλεπικοινωνιακό σύστημα, στο οποίο δίνεται έμφαση σε αυτή τη θεώρηση φαίνεται στο Σχήμα 1.2. Σε σχέση με το προηγούμενο σχήμα, ο κωδικοποιητής πηγής έχει ενσωματωθεί στην πηγή σχηματίζοντας την ψηφιακή πηγή και ο αποκωδικοποιητής πηγής στον προορισμό συγκροτώντας τον ψηφιακό προορισμό. Επιπλέον, στο κανάλι επικοινωνίας έχουν ενσωματωθεί ο διαμορφωτής και ο αποδιαμορφωτής. Ψηφιακή Πηγή Κωδικοποιητής Θόρυβος Κανάλι Ψηφιακός Προορισμός Αποκωδικοποιητής Σχήμα 1.2 : Απλοποιημένο μοντέλο ενός συστήματος ψηφιακής επικοινωνίας. 9

1.2 Κωδικοποίηση καναλιού Σκοπός της κωδικοποίησης καναλιού είναι να ελαχιστοποιηθεί η πιθανότητα λανθασμένης μετάδοσης. Από τη θεωρία πληροφορίας, γνωρίζουμε πως όποια και αν είναι η πιθανότητα λάθους κατά τη μετάδοση δεδομένων, υπάρχει τρόπος κατασκευής κωδικών διόρθωσης λαθών, οι οποίοι έχουν πολύ μικρή πιθανότητα αποτυχίας. Με το θεώρημα της κωδικοποίησης ενθόρυβου καναλιού, ο Shannon απέδειξε πως είναι εφικτό να μειωθεί οσοδήποτε η πιθανότητα λάθους κατά τη μετάδοση, αρκεί ο ρυθμός της μεταδιδόμενης πληροφορίας να μην υπερβαίνει την χωρητικότητα του καναλιού. Συγκεκριμένα, για κανάλι με εύρος ζώνης B, και για λόγο ισχύος του σήματος ως προς την ισχύ του θορύβου SNR (Signal-to-noise-ratio), η χωρητικότητα του καναλιού C, δηλαδή ο μέγιστος ρυθμός μετάδοσης δεδομένων (σε bits per second - bps) χωρίς σφάλμα, δίδεται από τον τύπο : C = Β log2(1 + SNR) (1.1) Επομένως, αν R ο ρυθμός μετάδοσης δεδομένων και C η χωρητικότητα του καναλιού, μπορούμε να έχουμε αξιόπιστη μετάδοση εφ όσον: R < C Από την παραπάνω σχέση, γίνεται σαφές πως η χωρητικότητα του καναλιού εξαρτάται από το εύρος ζώνης και την ισχύ του θορύβου. Σκοπός του σχεδιαστή του τηλεπικοινωνιακού συστήματος είναι να μεταδώσει με ρυθμό ο οποίος να προσεγγίζει όσο γίνεται περισσότερο το όριο του Shannon, περιορίζοντας κατά το δυνατό την πιθανότητα σφάλματος. Αν επιθυμούμε να μειώσουμε την πιθανότητα σφάλματος χωρίς να μειωθεί ο θόρυβος ή να αυξηθεί ο ρυθμός μετάδοσης θα πρέπει να αυξήσουμε την υπολογιστική πολυπλοκότητα της κωδικοποίησης καναλιού. Προκύπτει έτσι ένα tradeoff ανάμεσα στην υπολογιστική πολυπλοκότητα και την αξιοπιστία του συστήματος μετάδοσης. Η υπολογιστική πολυπλοκότητα και η ισχύς του μεταδιδόμενου σήματος είναι παράγοντες, οι οποίοι αφενός αυξανόμενοι βελτιώνουν την αξιοπιστία του συστήματος, αφετέρου, όμως, αυξάνουν και το κόστος της μετάδοσης. Η αναζήτηση ενός σχήματος το οποίο θα προσφέρει την αποδοτικότερη κωδικοποίηση με το μικρότερο υπολογιστικό κόστος είναι διαρκής, όσο το όριο του Shannon δεν επιτυγχάνεται. 10

1.3 Κώδικες ανίχνευσης και διόρθωσης σφαλμάτων Ο κώδικας που χρησιμοποιείται και οι διαδικασίες που ακολουθούνται κατά τις φάσεις της κωδικοποίησης και της αποκωδικοποίησης καθορίζουν σε μεγάλο βαθμό την απόδοση του συστήματος. Οι κώδικες διόρθωσης λαθών χωρίζονται σε δύο μεγάλες κατηγορίες, στους μπλοκ κώδικες (Block Codes) και στους συνελικτικούς κώδικες (Convolutional Codes). Κύριο χαρακτηριστικό των μπλοκ κωδικών είναι ο τεμαχισμός της προς μετάδοση πληροφορίας σε μπλοκ των k συμβόλων και η αντιστοιχία καθενός από αυτά σε ένα μπλοκ n συμβόλων, το οποίο αποκαλείται κωδική λέξη ή codeword (n k). Στους συνελικτικούς κώδικες, κάθε m-bit σύμβολο πληροφορίας, μετατρέπεται σε ένα n-bit σύμβολο (n m), με κάθε σύμβολο να εξαρτάται όχι μόνο από το ίδιο, αλλά και από τα k προηγούμενα από αυτό σύμβολα πληροφορίας. Επομένως, η κύρια διαφορά μεταξύ των δύο κατηγοριών κωδικών είναι η ύπαρξη μνήμης στους συνελικτικούς κώδικες. Μια ακόμη σημαντική διάκριση που μπορεί να γίνει είναι βάσει του τρόπου διαχείρισης των σφαλμάτων. Υπάρχουν κώδικες οι οποίοι απλά ανιχνεύουν την ύπαρξη σφαλμάτων και κώδικες που πέρα από την ανίχνευση έχουν και την ικανότητα διόρθωσης των σφαλμάτων. Το επιπλέον κόστος, βέβαια, των τελευταίων είναι στην υπολογιστική πολυπλοκότητα, η οποία είναι σαφώς μεγαλύτερη. Στην κατηγορία των κωδικών μπλοκ ανήκουν οι κώδικες Hamming, οι κυκλικοί κώδικες, οι BCH, οι Reed-Solomon και αρκετοί άλλοι. Συνδυασμός απλών κωδικών έχει οδηγήσει στην δημιουργία εξαιρετικά επιτυχημένων σύνθετων σχημάτων κωδικοποίησης καναλιού. Οι κώδικες γινομένου, οι αλυσιδωτοί κώδικες και οι τούρμπο κώδικες (turbo codes) είναι ορισμένες χαρακτηριστικές περιπτώσεις. Οι τελευταίοι αποτέλεσαν τα τελευταία χρόνια τους πλέον αποδοτικούς κώδικες για κωδικοποίηση καναλιού, επιτυγχάνοντας σε αρκετές περιπτώσεις ρυθμούς μετάδοσης πολύ κοντά στο όριο του Shannon. Ωστόσο, στην παρούσα εργασία θα ασχοληθούμε με μια άλλη κατηγορία κωδικών, τους LDPC κώδικες (Low-Density Parity-Check codes). Πρόκειται για γραμμικούς μπλοκ κώδικες και θα αναφερθούμε διεξοδικότερα σε αυτούς στο επόμενο κεφάλαιο. 11

12

Κεφάλαιο 2 Κώδικες LDPC Όπως αναφέραμε και στο προηγούμενο κεφάλαιο, οι κώδικες LDPC αποτελούν υποκατηγορία των γραμμικών μπλοκ κωδικών. Πριν προχωρήσουμε στην αναλυτική παρουσίαση των LDPC κωδικών, καλό είναι πρώτα να παρουσιάσουμε τα βασικά χαρακτηριστικά των γραμμικών μπλοκ κωδικών. 2.1 Γραμμικοί Μπλοκ Κώδικες Ένας κώδικας είναι μία διαδικασία μονοσήμαντης απεικόνισης στοιχείων από ένα σύνολο Α σε ένα σύνολο Β. Στην περίπτωση της κωδικοποίησης καναλιού και των κωδικών που χρησιμοποιούνται για αυτήν, τα στοιχεία του συνόλου Α ονομάζονται λέξεις πληροφορίας u i (i= 1,2,,M), ενώ εκείνα του συνόλου Β, στα οποία και αντιστοιχίζονται, ονομάζονται κωδικές λέξεις, ή codewords, c i. To M ισούται με τους δυνατούς συνδυασμούς των ακολουθιών k δυαδικών ψηφίων, δηλαδή M=2 k. Δυαδικός ονομάζεται ένας κώδικας όταν τα στοιχεία και των δύο συνόλων είναι ακολουθίες δυαδικών ψηφίων (0 ή 1). Εφόσον μιλάμε για μονοσήμαντη απεικόνιση δεν μπορεί το πλήθος των στοιχείων των δύο συνόλων να διαφέρει. Μια από τις κατηγορίες κωδικών καναλιού είναι οι γραμμικοί κώδικες μπλοκ. Ένας κώδικας μπλοκ είναι γραμμικός αν κάθε γραμμικός συνδυασμός δύο κωδικών του λέξεων είναι επίσης κωδική του λέξη. Στην περίπτωση δυαδικού κώδικα αυτό σημαίνει πως το αποτέλεσμα της συνιστώσας-προς-συνιστώσα XOR λογικής πράξης μεταξύ δύο κωδικών του λέξεων, είναι επίσης κωδική λέξη. 13

Η μετατροπή της ακολουθίας των k bits (λέξη πληροφορίας) σε ακολουθία των n bits (codeword) πραγματοποιείται με την βοήθεια ενός k n δυαδικού πίνακα G, ο οποίος ονομάζεται γεννήτορας πίνακας του κώδικα. Η κωδική λέξη παράγεται με τον πολλαπλασιασμό της λέξης πληροφορίας με τον γεννήτορα πίνακα : c= u G i i (2.1) Προκύπτει έτσι η κωδική λέξη c i. Τα n δυαδικά ψηφία που συνιστούν την κωδική λέξη ορίζουν έναν χώρο n διαστάσεων. Κάθε δυαδικό σύμβολο της κωδικής λέξης είναι και μία συνιστώσα του χώρου αυτού. Ο n-διάστατος χώρος περιλαμβάνει 2 n στοιχεία, μόνο τα 2 k εκ των οποίων αποτελούν έγκυρες κωδικές λέξεις. Οι 2 k έγκυρες κωδικές λέξεις συνιστούν έναν k-διάστατο υποχώρο του n-διάστατου χώρου. Ονομάζουμε C αυτόν τον υποχώρο. Οι γραμμές του γεννήτορα πίνακα G δεν είναι τίποτα περισσότερο από τα k διανύσματα που αποτελούν τη βάση του υποχώρου C. Έστω όλες οι δυαδικές ακολουθίες μήκους n οι οποίες είναι ορθογώνιες προς όλα τα διανύσματα του k-διάστατου υποχώρου C. Κάθε μία από αυτές τις ακολουθίες έχει την εξής ιδιότητα : T h c i = 0, (2.2) όπου i= 1,2,, 2 k, h είναι μία από τις ορθογώνιες ακολουθίες μήκους n, c Τ i είναι η ανάστροφη εκδοχή της έγκυρης κωδικής λέξης c i, ενώ ο τελεστής δηλώνει την συνιστώσα-προς-συνιστώσα XOR λογική πράξη ή, ισοδύναμα, την modulo-2 άθροιση. Αποδεικνύεται ότι το πλήθος των μήκους n ακολουθιών που έχουν την παραπάνω ιδιότητα είναι 2 n-k. Οι 2 n-k ορθογώνιες ακολουθίες h i μπορεί να θεωρηθεί ότι είναι οι έγκυρες κωδικές λέξεις ενός (n,n-k) γραμμικού κώδικα μπλοκ, ο οποίος συμβολίζεται με C T και καλείται δυϊκός(dual) του αρχικού (n,k) κώδικα C. Οι κωδικές λέξεις του κώδικα C T είναι σύμφωνα με τη σχέση (2.2) ορθογώνιες ως προς τις κωδικές λέξεις c i του κώδικα C. Έστω H ο γεννήτορας πίνακας του κώδικα C T. Ο πίνακας H αποτελείται από (n-k) γραμμές n στοιχείων οι οποίες είναι τα διανύσματα βάσης του (n-k)-διάστατου χώρου. Κάθε μία εξ'αυτών είναι μία έγκυρη κωδική λέξη του κώδικα C T. Επομένως, κάθε γραμμή του πίνακα H είναι ορθογώνια ως προς κάθε έγκυρη κωδική λέξη του κώδικα C. Κατά συνέπεια, ο πίνακας H μας παρέχει n-k σχέσεις, τις οποίες θα πρέπει να επαληθεύει μία κώδική λέξη για να είναι έγκυρη, και οι οποίες συνοψίζονται στην ακόλουθη σχέση: T ci H = 0 (2.3) 14

Πρακτικά, στην περίπτωση του δυαδικού κώδικα, λόγω της modulo-2 άθροισης, κάθε μία γραμμή ελέγχει αν μεταξύ συγκεκριμένων ψηφίων της κωδικής λέξης υπάρχει άρτιο πλήθος άσων. Επομένως, ο πίνακας H ελέγχει την ισοτιμία των άσων της κωδικής λέξης. Για τον λόγο αυτό, ονομάζεται Πίνακας Ελέγχου Ισοτιμίας (Parity Check Matrix) του αρχικού κώδικα C και είναι, όπως και ο γεννήτορας πίνακας G, χαρακτηριστικός του κώδικα. 2.2 Κώδικες LDPC 2.2.1 Ιστορική Αναδρομή Οι κώδικες LDPC εφευρέθηκαν από τον R.G.Gallager στις αρχές της δεκαετίας του 60 [2][3] και ήταν οι πρώτοι κώδικες διόρθωσης λαθών, οι οποίοι μπορούσαν να προσεγγίσουν ρυθμούς μετάδοσης δεδομένων πολύ κοντά στο θεωρητικό μέγιστο, το όριο Shannon. Λόγω, όμως, του γεγονότος ότι τότε δεν ήταν εφικτό να υλοποιηθούν σε υλικό, εξαιτίας των μεγάλων απαιτήσεων τους σε υπολογιστική πολυπλοκότητα, έμειναν στο περιθώριο για αρκετά χρόνια. Με την αλματώδη εξέλιξη της τεχνολογίας, από τα μέσα της δεκαετίας του 90 το ενδιαφέρον στράφηκε ξανά στους κώδικες LDPC, αφού πλέον ήταν δυνατή η υλοποίηση τους. Επιπλέον, η μεγάλη ανάπτυξη της τεχνολογίας της πληροφορίας έστρεψε το ενδιαφέρον της αγοράς σε υψηλής απόδοσης κώδικες μετάδοσης δεδομένων, οι οποίοι παίζουν καθοριστικό ρόλο σε πλήθος παραγόντων που αφορούν τη μετάδοση. Οι παράγοντες αυτοί κυμαίνονται από την ποιότητα του σήματος έως και τη διάρκεια ζωής της μπαταρίας. Το 1993 παρουσιάστηκαν οι turbo κώδικες (Berrou, Glavieux, and Thitimajshima, 1993) [4], και ο αντίστοιχος επαναληπτικός αλγόριθμος αποκωδικοποίησης. Οι αξιοσημείωτες επιδόσεις των κωδικών αυτών προκάλεσε ποικίλα ερωτήματα και μεγάλο ενδιαφέρον για παρόμοιες επαναληπτικές μεθόδους. Το 1995, οι D.MacKay και R. M. Neal [5] επανέφεραν στο προσκήνιο τους LDPC κώδικες, και συνέδεσαν τον επαναληπτικό τους αλγόριθμο με την έννοια του belief propagation (Pearl, 1988) [6], την οποία δανείστηκαν από την κοινότητα της τεχνητής νοημοσύνης (δίκτυα Bayes). Το 1996, οι M. Sipser and D. A. Spielman [7] χρησιμοποίησαν τον πρώτο αλγόριθμο αποκωδικοποίησης του R.G.Gallager (αλγόριθμος Α) στην αποκωδικοποίηση κωδικών διαστελλόμενων στοιχείων (expander codes). Το 1998, τα διμερή γραφήματα (διάγράμματα Tanner) [9] αρχισαν να χρησιμοποιούνται για την αναπαράσταση κωδικών διόρθωσης σφαλμάτων (Kschischang and Frey, 1998) [8], με σκοπό να μπορούν να περιγραφούν πολλοί διαφορετικοί αλγόριθμοι μέσω κοινού 15

φορμαλισμού. Μπορούμε να πούμε, πως οι κώδικες LDPC είχαν καθοριστική συμβολή σε δύο επαναστατικές εξελίξεις στον τομέα της κωδικοποίησης καναλιού: τη βασισμένη σε γράφημα περιγραφή του κώδικα και τις επαναληπτικές μεθόδους αποκωδικοποίησης. Μολονότι η υλοποίηση κωδικών LDPC καθυστέρησε σε σχέση με αυτή άλλων, με κύριο ανταγωνιστή τους turbo κώδικες, τα τελευταία χρόνια κατάφεραν να γίνουν πρότυπο (standard) για σημαντικές νέες τηλεπικοινωνιακές εφαρμογές. Το 2003 έγιναν πρότυπο για το DVB_S2 (Digital Video Broadcasting δορυφορική μετάδοση ψηφιακής τηλεόρασης), κερδίζοντας τη μάχη απ τους turbo κώδικες. To 2008 επιλέχθηκαν αντί των συνελικτικών turbo κωδικών (convolutional turbo codes) για το πρότυπο ITU-T G.hn, λόγω της μικρότερης υπολογιστικής πολυπλοκότητας τους, ειδικά για ρυθμούς μετάδοσης της τάξης του 1 Gbps, καθώς και της καλύτερης απόδοσης ως προς τη διόρθωση σφαλμάτων [32]. 2.2.2 Βασικά Χαρακτηριστικά Πρόκειται για κώδικες ελέγχου ισοτιμίας. Περιγράφονται πλήρως, είτε από τον γεννήτορα πίνακα G, είτε από τον πίνακα ελέγχου ισοτιμίας (Parity Check Matrix) H, είτε από ένα διάγραμμα Tanner. Όπως έχει ήδη αναφερθεί, η κωδικοποίηση ενός κώδικα μπλοκ γίνεται με τη βοήθεια του γεννήτορα πίνακα G. Τα προς μετάδοση δεδομένα, τεμαχίζονται σε μπλοκ μήκους k. Αν και οι κώδικες LDPC μπορούν να γενικευτούν και για μη δυαδικά αλφάβητα, η μελέτη τέτοιων περιπτώσεων ξεφεύγει από τους σκοπούς της παρούσας εργασίας. Από εδώ και στο εξής, κάθε φορά που θα αναφερόμαστε σε κώδικα LDPC θα εννοούμε δυαδικό κώδικα. Η λέξη πληροφορίας πολλαπλασιάζεται με τον k n πίνακα G, σύμφωνα με τη σχέση (2.1), και παράγει ένα διάνυσμα 1 n. Αυτό το διάνυσμα είναι το κωδικοποιημένο μπλοκ και ονομάζεται κωδική λέξη. Δεδομένου ότι γνωρίζοντας τον γεννήτορα πίνακα μπορούμε να βρούμε όλες τις κωδικές λέξεις του κώδικα, ένας πρώτος τρόπος περιγραφής ενός κώδικα LDPC είναι ο πίνακας αυτός. Αντίστοιχα, μπορεί να περιγραφεί πλήρως ο κώδικας LDPC με τον πίνακα ελέγχου ισοτιμίας Η. Αυτός έχει το χαρακτηριστικό ότι πολύ μικρό ποσοστό των στοιχείων του είναι μη μηδενικά (δηλαδή είναι άσσοι). Πρόκειται επομένως για έναν «αραιό» (sparse) πίνακα, όσον αφορά την παρουσία άσσων, χαρακτηριστικό από το οποίο πήραν και το όνομά τους οι συγκεκριμένοι κώδικες. Δεδομένου ότι κάθε έγκυρη λέξη του κώδικα θα πρέπει να ικανοποιεί τη σχέση (2.3), γνωρίζοντας τον πίνακα Η μπορούμε να διακρίνουμε από το σύνολο των 2 n δυνατών συνδυασμών κωδικών λέξεων, τις 2 k 16

έγκυρες. Κάθε στήλη και κάθε γραμμή του πίνακα ισοτιμίας αποτελείται από έναν μικρό σταθερό αριθμό d u και d c, αντίστοιχα, άσσων. Έχει καθιερωθεί να συμβολίζεται ως (n, d u, d c ) ένας κώδικας LDPC του οποίου ο πίνακας ελέγχου ισοτιμίας αποτελείται από n στήλες και m=n-k γραμμές, κάθε στήλη του οποίου περιέχει d u άσσους και κάθε γραμμή του d c άσσους. Στην πραγματικότητα, με τον συμβολισμό αυτό δεν συμβολίζεται ένας μόνο κώδικας αλλά μία ομάδα κωδικών LDPC, αφού η αλλαγή θέσης σε έναν και μόνο άσσο του πίνακα, μας δίνει έναν διαφορετικό κώδικα. Ένα παράδειγμα πίνακα ελέγχου ισοτιμίας παρουσιάζουμε στο ακόλουθο σχήμα: 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 Σχήμα 2.1 : Παράδειγμα ενός πίνακα ελέγχου ισοτιμίας με n=20, d u =3 και d c =4. Κάθε γραμμή του πίνακα H αντιστοιχεί σε μία εξίσωση ελέγχου ισοτιμίας (parity check) και κάθε άσσος στη θέση (i,j) του πίνακα H, σημαίνει πως το j-στο σύμβολο δεδομένων συμμετέχει στην i-οστη εξίσωση ελέγχου ισοτιμίας. Γίνεται αντιληπτό πώς αφού κάθε γραμμή του πίνακα ελέγχου ισοτιμίας ικανοποιεί την σχέση (2.2), θα πρέπει πρακτικά μεταξύ εκείνων των δυαδικών ψηφίων της κωδικής λέξης που αντιστοιχούν στους άσσους της γραμμής ελέγχου, να υπάρχει άρτιο πλήθος άσσων. Επιπλέον, δεδομένου ότι ο συνολικός αριθμός των άσσων ενός πίνακα ελέγχου ισοτιμίας διαστάσεων (m,n) είναι σταθερός ισχύει, mdc= n d (2.4) u 17

Ένα μέγεθος που έχει ενδιαφέρον είναι ο ρυθμός(rate) R του κώδικα. Ορίζεται ως ο λόγος των δεδομένων πληροφορίας, ή information bits, (k) προς τα μεταδιδόμενα δεδομένα (n). Επομένως, σύμφωνα με τα όσα έχουμε αναφέρει έως τώρα, ο ρυθμός ενός (n, d u, d c ) κώδικα LDPC, του οποίου η λέξη πληροφορίας αποτελείται από k δυαδικά ψηφία, δίνεται από τι σχέση : k n m m du R = = = 1 R = 1 - n n n d (2.5) c Ένας κώδικας LDPC του οποίου οι παράμετροι d u, d c είναι σταθερές για όλες τις στήλες και όλες τις γραμμές του πίνακα ισοτιμίας, όπως ο κώδικας του σχήματος 2.1, ονομάζεται κανονικός (regular). Υπάρχουν, ωστόσο, και κώδικες για τους οποίους δεν ισχύει κάτι τέτοιο. Αυτοί ανήκουν στην κατηγορία των μη κανονικών (irregular) κωδικών LDPC. Σε αυτή την περίπτωση, ο αριθμός των άσσων κάθε γραμμής ή κάθε στήλης, είναι συνάρτηση της γραμμής ή της στήλης, αντίστοιχα, και περιγράφεται συνήθως με συγκεκριμένα πολυώνυμα [10]. Αν και οι κανονικοί κώδικες έχουν απλούστερη υλοποίηση του αποκωδικοποιητή τους, οι μη κανονικοί κώδικες LDPC υπερτερούν ως προς την επίδοση. Το 1981 ο Tanner [9] προσδιόρισε έναν πολύ πρακτικό τρόπο περιγραφής ενός μπλοκ κώδικα, ο οποίος αποδείχτηκε εξαιρετικά χρήσιμος για του κώδικες LDPC. Η περιγραφή του Tanner βασίζεται στον πίνακα ελέγχου ισοτιμίας και αποτελείται από έναν διμερή γράφο (bipartite graph) ή, όπως έχει επικρατήσει να λέγεται, «διάγραμμα Tanner». Ο γράφος αποτελείται από δύο ειδών κορυφές-κόμβους και ακμές μεταξύ αυτών. Οι κορυφές της μιας κατηγορίας ονομάζονται κόμβοι μεταβλητής (variable nodes), και αντιστοιχούν στις στήλες του πίνακα ισοτιμίας, ενώ στην άλλη κατηγορία κορυφών ανήκουν οι κόμβοι ελέγχου (check nodes), οι οποίοι αντιστοιχούν στις γραμμές του. Μπορούμε να πούμε πως κάθε κόμβος μεταβλητής αναπαριστά κάποιο σύμβολο δεδομένων και κάθε κόμβος ελέγχου μια εξίσωση ελέγχου ισοτιμίας. Οι άσσοι του πίνακα ισοτιμίας αντιστοιχούν στις ακμές του γράφου. Έστω ότι το στοιχείο (i,j) του πίνακα H είναι άσσος. Σε αυτή την περίπτωση, υπάρχει μία ακμή η οποία συνδέει τον κόμβο μεταβλητής ο οποίος αντιστοιχεί στην στήλη j με τον κόμβο ελέγχου ο οποίος αντιστοιχεί στην γραμμή i. Αντίστοιχα, τοποθετούνται οι υπόλοιπες ακμές που συνδέουν variable με check κόμβους σύμφωνα με την κατανομή των άσσων στον πίνακα ισοτιμίας του κώδικα. Ο αριθμός των ακμών που συνδέονται σε κάθε κόμβο ονομάζεται βαθμός (degree) του συγκεκριμένου κόμβου. Ο 18

βαθμός των κόμβων μεταβλητής είναι σταθερός για έναν κανονικό κώδικα LDPC, όπως και εκείνος των κόμβων ελέγχου. Οι δύο αυτές παράμετροι αντιστοιχούν στις παραμέτρους d u και d c που αναφέραμε παραπάνω, και για το λόγο αυτό θα χρησιμοποιήσουμε τον ίδιο συμβολισμό, αφού περιγράφουν ουσιαστικά τα ίδια μεγέθη. Στην περίπτωση των μη κανονικών (irregular) κωδικών, ο βαθμός των κόμβων τους περιγράφεται από ειδικά πολυώνυμα κατανομής βαθμού. Στο σχήμα 2.2 φαίνεται ένας πίνακας ελέγχου ισοτιμίας και το αντίστοιχο διάγραμμα Tanner. O κώδικας του σχήματος είναι ένας (9,2,3)-LDPC κώδικας. Η βασική ιδιότητα του συγκεκριμένου και κάθε LDPC κώδικα είναι η ακόλουθη: Όλα τα ψηφία που συνδέονται σε έναν κόμβο ελέγχου έχουν modulo 2 άθροισμα ίσο με το μηδέν ή, ισοδύναμα, έχουν αποτέλεσμα μηδέν στην πράξη XOR. Αυτή η ιδιότητα ονομάζεται περιορισμός ισοτιμίας ελέγχου (parity check constraint), και κάθε λέξη των 9 bits για Check Nodes Variable Nodes Σχήμα 2.2 : Ο πίνακας ελέγχου ισοτιμίας και το αντίστοιχο διάγραμμα Tanner ενός LDPC κώδικα. 19

τον συγκεκριμένο κώδικα είναι έγκυρη κωδική λέξη αν και μόνο αν ικανοποιεί όλα τα parity check constraints, που στη συγκεκριμένη περίπτωση είναι 6 (βλέπε Σχέση 2.3). Ένα πολύ σημαντικό χαρακτηριστικό ενός διαγράμματος Tanner είναι η ύπαρξη κύκλων. Ένας κύκλος μήκους g είναι μία κλειστή διαδρομή η οποία περιλαμβάνει g το πλήθος ακμές. Η παρουσία κύκλων στο διάγραμμα Tanner ενός κώδικα είναι ανεπιθύμητη, διότι περιορίζει την απόδοση της αποκωδικοποίησης, πλην όμως ανέφικτη, καθώς η απουσία κύκλων προϋποθέτει απόλυτη ανεξαρτησία μεταξύ των bits που ελέγχει η κάθε γραμμή του πίνακα ισοτιμίας. Δεδομένου ότι η αποφυγή των κύκλων δεν είναι δυνατή, επιδιώκεται η παρουσία κύκλων με το μέγιστο δυνατό μήκος. Το μήκος όμως των κύκλων είναι ανάλογο των διαστάσεων του πίνακα ισοτιμίας, γεγονός που θέτει όρια στο μέγιστο δυνατό τους μήκος. Ο μικρότερος κύκλος που μπορεί να εμφανισθεί είναι ένας κύκλος μήκους 4. Το μήκος του μικρότερου κύκλου ενός κώδικα είναι εκείνο που μας ενδιαφέρει κυρίως, και για το λόγο αυτό αποτελεί χαρακτηριστικό του κώδικα και ονομάζεται girth. 2.2.3 Πλεονεκτήματα Μειονεκτηματα 'Όπως θα δούμε και στη συνέχεια, ο πίνακας ελέγχου ισοτιμίας καθορίζει το κύκλωμα και κατά συνέπεια την πολυπλοκότητα του αποκωδικοποιητή. Πιο συγκεκριμένα, η πολυπλοκότητα είναι ανάλογη των μη μηδενικών στοιχείων του πίνακα ισοτιμίας. Όσο λιγότεροι, επομένως, είναι οι άσσοι του πίνακα ισοτιμίας, τόσο απλούστερος ο αποκωδικοποιητής, γεγονός που φανερώνει το σημαντικό πλεονέκτημα των κωδικών LDPC, ως προς την υλοποίηση, έναντι άλλων μπλοκ κωδικών ίδιου μεγέθους. Ένα ακόμα σημαντικό πλεονέκτημα των κωδίκων LDPC, είναι το γεγονός πως οι χρησιμοποιούμενοι αλγόριθμοι αποκωδικοποίησης, πέρα από την διόρθωση σφαλμάτων, προσφέρουν σαφή και έγκυρη ανίχνευση των περιπτώσεων εκείνων που η αποκωδικοποίηση αποτυγχάνει. Ενώ θεωρητικά είναι πιθανό, με κατάλληλη επιλογή κώδικα, μπορούμε να ελαττώσουμε κατά πολύ την πιθανότητα η αποκωδικοποίηση να καταλήξει σε κωδική λέξη η ο οποία να είναι έγκυρη, χωρίς όμως να είναι εκείνη που μεταδόθηκε. Ένα εξαιρετικής σημασίας πλεονέκτημα των κωδίκων LDPC είναι οι πολύ καλές επιδόσεις τους. Ενώ μέχρι πριν λίγα χρόνια οι κώδικες turbo ήταν εκείνοι οι οποίοι κατείχαν τα πρωτεία όσον αφορά τις επιδόσεις, πλέον οι κώδικες LDPC φαίνεται να τους 20

ανταγωνίζονται επάξια. Υποστηρίζουν ρυθμούς μετάδοσης, οι οποίοι πλησιάζουν τη χωρητικότητα καναλιού (όριο Shannon). Το βασικό αρνητικό στοιχείο είναι πως για να επιτευχθεί αυτός ο ρυθμός μετάδοσης πρέπει να χρησιμοποιηθεί κώδικας πολύ μεγάλου μήκους. Αυτό σημαίνει πως απαιτείται πολύ μεγάλος πίνακας ελέγχου ισοτιμίας. Όσο αραιός και να είναι ένας τόσο μεγάλος πίνακας, ο αριθμός των μη μηδενικών του στοιχείων είναι εξαιρετικά μεγάλος, με αποτέλεσμα η αποκωδικοποίηση να είναι εξαιρετικά απαιτητική από άποψη πολυπλοκότητας. 21

22

Κεφάλαιο 3 Αλγόριθμοι Αποκωδικοποίησης 3.1 Αποκωδικοποίηση Η αποκωδικοποίηση είναι μία διαδικασία κατά την οποία ο αποκωδικοποιητής αποφαίνεται για την ακολουθία συμβόλων που μεταδόθηκε, έχοντας ως δεδομένα την ακολουθία συμβόλων που έλαβε. Με βάση τον message-passing αλγόριθμο, ο οποίος αποτελεί κλασικό τρόπο αποκωδικοποίησης κωδικών LDPC και στον οποίο θα αναφερθούμε εκτενώς στη συνέχεια, μηνύματα (messages) στέλνονται μεταξύ των κόμβων του διαγράμματος Tanner, που περιγράφει τον κώδικα, και εκτελούνται κάποιοι υπολογισμοί στους κόμβους αυτούς. Όπως αναφέραμε στο προηγούμενο κεφάλαιο, κάθε κόμβος μεταβλητής αναπαριστά κάποιο σύμβολο δεδομένων και κάθε κόμβος ελέγχου μια εξίσωση ελέγχου ισοτιμίας. Ας υποθέσουμε ότι κάποια από τα ψηφία-σύμβολα μιας κωδικής λέξης, καθώς αυτή διαδίδεται μέσω του καναλιού επικοινωνίας, έχουν υποστεί αλλοίωση, εξαιτίας της παρουσίας θορύβου στο κανάλι. Αφού φτάσει η αλλοιωμένη κωδική λέξη στον αποκωδικοποιητή, κάθε σύμβολο της μπαίνει ως είσοδος στον αντίστοιχο κόμβο μεταβλητής. Ο κάθε κόμβος μεταβλητής προκειμένου να πάρει μια απόφαση σχετικά με το αν το bit που έλαβε είναι σωστό ή λάθος, «ρωτά» όλους τους γειτονικούς του κόμβους ελέγχου, ποια είναι η «γνώμη» τους για την τιμή του συγκεκριμένου bit. Καθένας από αυτούς τους κόμβους ελέγχου ρωτά, στη συνέχεια, τους υπόλοιπους γειτονικούς του κόμβους μεταβλητής ποια είναι η τρέχουσα τιμή-εκτίμησή τους για τα δικά τους bits (Φάση Α) και στέλνει στον αρχικό κόμβο μεταβλητή μια απάντηση, η οποία είναι συνάρτηση των τιμών αυτών (Φάση Β). Στην ουσία, με αυτό τον τρόπο ελέγχεται η άρτια ή περιττή ισοτιμία των άσσων της ελεγχόμενης ομάδας ψηφίων. Επειδή, όμως, κάθε 23

κόμβος μεταβλητής έχει περισσότερους από έναν γειτονικούς κόμβους ελέγχου, έχει και περισσότερες από μία γνώμες για το αν είναι σωστό το δικό του bit. Πρέπει με κάποιο τρόπο να επεξεργαστεί αυτές τις γνώμες και να βγάλει κάποιο συμπέρασμα για την τιμή του συγκεκριμένου bit. Για παράδειγμα, θα μπορούσε να «πιστέψει» την πλειοψηφία. Η παραπάνω διαδικασία αποτελεί μία επανάληψη του message passing αλγορίθμου. Με κάθε επιπλέον επανάληψη που γίνεται, αυξάνεται η πιθανότητα να είναι σωστή η εκτίμηση των κόμβων μεταβλητής για τις τιμές των ψηφίων της κωδικής λέξης. Στο Σχήμα 3.1 απεικονίζεται η διαδικασία ανταλλαγής μηνυμάτων που μόλις περιγράψαμε, για τον (9,2,3)-LDPC κώδικα που αναφέραμε στο κεφάλαιο 2. Σχήμα 3.1 : Αποκωδικοποίηση με χρήση του Message-Passing αλγορίθμου δύο φάσεων. 24

Κατά τη μετάδοση δεδομένων, κάποια (ή όλα) από τα λαμβανόμενα σύμβολα διαφέρουν από εκείνα που εισήχθησαν στο κανάλι, ορισμένα πολύ και άλλα λιγότερο. Στην περίπτωση που έχουμε έναν δυαδικό κώδικα και διαμόρφωση BPSK (Binary Phase Shift Keying) τα μεταδιδόμενα σύμβολα είναι το +1 (λογικό 1) και το -1 (λογικό 0). Εξαιτίας του θορύβου στο κανάλι επικοινωνίας, το σήμα που λαμβάνει ο αποδιαμορφωτής κατά τη δειγματοληψία δεν είναι ίδιο με το αρχικό, αλλά παίρνει ενδιάμεσες τιμές ή ακόμα και ανεστραμμένες, αν υπάρχει πολύς θόρυβος. Υπάρχουν δύο προσεγγίσεις όσον αφορά τον τρόπο έκφρασης της τιμής κάθε λαμβανομένου συμβόλου, καθώς και των ενδιάμεσων εκτιμήσεων, κατά τη διάρκεια της αποκωδικοποίησης. Η προφανής, η οποία ονομάζεται hard decision, είναι να θεωρήσουμε πως το πρόσημο του λαμβανομένου συμβόλου είναι αρκετό για να κάνουμε μία πρώτη εκτίμηση για το μεταδιδόμενο σύμβολο. Αν, εφαρμόζοντας αυτή τη θεώρηση σε όλα τα σύμβολα της κωδικής λέξης, προκύπτει μη έγκυρη κωδική λέξη, τότε προσπαθούμε να διορθώσουμε τα όποια σφάλματα, διαχειριζόμενοι πλέον δυαδικά ψηφία. Επομένως αντιστοιχίζουμε ένα μόνο δυαδικό ψηφίο σε κάθε σύμβολο που λαμβάνουμε. Με τον τρόπο αυτό κβαντίζουμε άμεσα τα λαμβανόμενα σύμβολα και χάνουμε την όποια πληροφορία μπορούμε να αντλήσουμε από αυτά. Η αποκωδικοποίηση αυτή είναι χαμηλής πολυπλοκότητας, οδηγεί όμως σε σημαντική απώλεια ληφθείσας πληροφορίας. Για παράδειγμα, αν υποψιαζόμαστε ότι ένα από δύο λαμβανόμενα σύμβολα +0,13 και +1,2 είναι λανθασμένα, δηλαδή λόγω του θορύβου έχει αλλάξει το πρόσημό τους, τότε είναι πολύ λογικό να θεωρήσουμε πιθανότερο αυτό να έχει συμβεί στο πρώτο σύμβολο. Αυτή την εκτίμηση δεν θα μπορέσουμε να την κάνουμε αν εξαρχής εξισώσουμε τα δύο λαμβανόμενα σύμβολα θεωρώντας ότι είναι +1. Η δεύτερη προσέγγιση χρησιμοποιεί περισσότερα από ένα δυαδικά ψηφία, τα λεγόμενα soft bits, για την αναπαράσταση των λαμβανόμενων συμβόλων και των μηνυμάτων που ανταλλάσσονται μεταξύ κόμβων ελέγχου και μεταβλητής. Η ληφθείσα πληροφορία, η οποία προκύπτει από την ακριβή τιμή του λαμβανόμενου συμβόλου, διατηρείται καθ'όλη τη διάρκεια της αποκωδικοποίησης και αξιοποιείται κατά τον καλύτερο δυνατό τρόπο. Προκειμένου να εκτιμηθεί, κατά την αποκωδικοποίηση, αν η κωδική λέξη στην οποία αυτή καταλήγει είναι έγκυρη (στο τέλος κάθε επανάληψης ή κάποιου αριθμού επαναλήψεων) γίνεται μία προσωρινή κβάντιση των εκτιμώμενων soft bits των συμβόλων, χωρίς όμως αυτά να χάνονται. Αντίθετα, αν η κωδική λέξη δεν είναι έγκυρη, η αποκωδικοποίηση συνεχίζεται με τις «soft» τιμές των συμβόλων. Η εκτίμηση αυτή αποκαλείται soft decision και επιτυγχάνει αποτελεσματικότερη αποκωδικοποίηση. Το κόστος της, από άποψη υπολογιστικής πολυπλοκότητας, όμως. είναι σαφώς μεγαλύτερο από αυτό της hard decision εκτίμησης. 25

Πριν περάσουμε στην παρουσίαση κάποιων βασικών αλγορίθμων αποκωδικοποίησης κωδικών LDPC, είναι σκόπιμο να σχολιάσουμε πως από την περιγραφή του message-passing αλγορίθμου διαφαίνεται μία αντιστοιχία ανάμεσα στο διάγραμμα Tanner ενός κώδικα και στο κύκλωμα που υλοποιεί την αποκωδικοποίηση. Το κύκλωμα αυτό θα μπορούσε να αποτελείται από δύο ειδών υπολογιστικές μονάδες, έναν τύπο για τους κόμβους ελέγχου (Check Processing Unit - CPU) και έναν για τους κόμβους μεταβλητής (Variable Processing Unit - VPU). Κάθε κόμβος του διαγράμματος Tanner αντιστοιχεί σε μία επεξεργαστική μονάδα του αντίστοιχου τύπου. Μεταξύ των δύο τύπων υπολογιστικών μονάδων ανταλλάσσονται εκτιμήσεις-μηνύματα, τις οποίες και επεξεργάζονται. Η διαδικασία αυτή είναι επαναληπτική. Ο τρόπος επεξεργασίας των εκτιμήσεων καθορίζεται από τον χρησιμοποιούμενο αλγόριθμο αποκωδικοποίησης. Αναδεικνύεται, έτσι, η σπουδαιότητα της παρουσίας λίγων άσσων στον πίνακα ισοτιμίας, το πλήθος των οποίων είναι ανάλογο με το πλήθος των ανταλλασσόμενων μηνυμάτων. Επιπλέον, οι διαστάσεις του πίνακα καθορίζουν το πλήθος των υπολογιστικών μονάδων και, κατ επέκταση, την πολυπλοκότητα του κυκλώματος αποκωδικοποίησης. 3.2 Αλγόριθμοι Message Passing Οι αλγόριθμοι αποκωδικοποίησης κωδικών LDPC διακρίνονται σε δύο κύριες μεγάλες κατηγορίες, τους Message-Passsing και τους Bit-Flipping. Η υλοποίηση των αλγορίθμων της πρώτης κατηγορίας βασίζεται στην ανταλλαγή μηνυμάτων επαναληπτικά μεταξύ δύο τύπων επεξεργαστικών μονάδων. Η διαδικασία αυτή ονομάζεται belief propagation ή χρονοδρομολόγηση δύο φάσεων (two-phase scheduling). Ανάλογη υλοποίηση μπορούμε να έχουμε και για τους αλγορίθμους Bit- Flipping, με τη διαφορά πως σε αυτούς απαιτείται και ένας κεντρικοποιημένος έλεγχος σε κάθε επανάληψη, σε αντίθεση με την αμιγώς κατανεμημένη υλοποίηση των αλγορίθμων Message-Passing. Ωστόσο, η κύρια διαφορά των δύο αυτών κατηγοριών είναι πως οι αλγόριθμοι Message-Passing βασίζονται κυρίως σε soft decision αποκωδικοποίηση, ενώ, αντίθετα, οι αλγόριθμοι Bit-Flipping επιδιώκουν την ελαχιστοποίηση της υπολογιστικής πολυπλοκότητας, βασιζόμενοι σε hard decision αποκωδικοποίηση. Οι αλγόριθμοι Bit-Flipping δεν θα μας απασχολήσουν περισσότερο στην παρούσα εργασία. Στη συνέχεια, θα παρουσιάσουμε δύο βασικούς εκπροσώπους των Message- Passing αλγορίθμων, τους αλγορίθμους Log Sum-Product και Min-Sum. Πρόκειται για 26

επαναληπτικούς αλγορίθμους, οι οποίοι αποτελούνται από τέσσερα βασικά στάδια. Το πρώτο, είναι η αρχικοποίηση των Q v f μηνυμάτων, βάσει των τιμών των λαμβανομένων συμβόλων. Κατά το δεύτερο στάδιο λαμβάνει χώρα ο υπολογισμός των R f v μηνυμάτων, τα οποία οι check nodes στέλνουν στους variable nodes. Αποκαλείται συνήθως στάδιο ενημέρωσης των check nodes. Το τρίτο στάδιο, συνίσταται στον υπολογισμό των Q f v μηνυμάτων, τα οποία στέλνουν οι variable nodes στους check nodes και αποκαλείται συνήθως στάδιο ενημέρωσης των variable nodes. Το τέταρτο και τελευταίο στάδιο περιλαμβάνει, αφενός μία εκτίμηση της τιμής κάθε bit και τη λήψη μίας hard απόφασης για κάθε bit από τον αντίστοιχο variable node και, αφετέρου, τον έλεγχο της εγκυρότητας της κωδικής λέξης που προκύπτει από τις hard αποφάσεις. Ο έλεγχος της εγκυρότητας συνίσταται στην ικανοποίηση από την κωδική λέξη της σχέσης 2.3 του δευτέρου κεφαλαίου. Αν η κωδική λέξη είναι έγκυρη ο αλγόριθμος τερματίζεται, διαφορετικά επαναλαμβάνονται τα στάδια 2 έως 4 μέχρι να καταλήξει σε μία έγκυρη κωδική λέξη ή να ικανοποιηθεί το εκάστοτε κριτήριο τερματισμού. Αυτό, συνήθως, είναι ένας προκαθορισμένος μέγιστος αριθμός επαναλήψεων, χωρίς να αποκλείεται και η ύπαρξη πιο σύνθετων κριτηρίων 3.2.1 Log Sum Product (Log SP) Ο αλγόριθμος αυτός προέκυψε ως εξέλιξη του Sum-Product, κατόπιν μεταφοράς του τελευταίου στο λογαριθμικό πεδίο. Στον log-sp, τα ανταλλασσόμενα μηνύματα εκφράζονται ως φυσικοί λογάριθμοι λόγου πιθανοτήτων(llr, Log-Likelihood Ratio). Ο φυσικός λογάριθμος συνήθως συμβολίζεται ως ln(x) ή log e (x). Εμείς θα χρησιμοποιήσουμε απλά το συμβολισμό log(x) στην παρούσα εργασία. Για την περίπτωση που έχουμε AWGN κανάλι και BPSK διαμόρφωση τα βήματα του αλγορίθμου είναι τα ακόλουθα : Αρχικοποίηση : Ανάθεση αρχικών τιμών στα μηνύματα Q v f σύμφωνα με τη σχέση : 0 2 Q = y v f, (3.1) σ όπου με y i συμβολίζουμε την τιμή του αντίστοιχου λαμβανόμενου συμβόλου. c 2 n Ενημέρωση των check nodes : Υπολογισμός του μηνύματος R n f v, τo οποίo στέλνει ο check node f στον variable node v κατά τη n-ιοστή επανάληψη του αλγορίθμου : 27

n R f v = Φ ( Φ( Q )) sign ( Q ) f Su n 1 n 1 v' f v' f f v' S ( v) f v' S ( v) u, (3.2) όπου με ( v) συμβολίζεται το σύνολο των variable nodes, εκτός του v, με τους οποίους συνδέεται ο check node f, ενώ η sign(x) είναι μια συνάρτηση που επιστρέφει +1 για x 0 και -1 για x<0. Η συνάρτηση Φ δίνεται από τον ακόλουθο τύπο: u x 1 e x Φ ( x) = log = log(tanh( )) x 1+ e 2 (3.3) Σχήμα 3.2 : Γραφική παράσταση της συνάρτησης Φ(x). 28

Η συνάρτηση Φ είναι συμμετρική ως προς την ευθεία y=x, και κατά συνέπεια, ταυτίζεται με την αντίστροφή της (Σχήμα 3.2). Επειδή η ακρίβεια της συγκεκριμένης συνάρτησης επηρεάζει σε μεγάλο βαθμό την απόδοση του αλγορίθμου αρκετές μελέτες έχουν εκπονηθεί για την αποδοτικότερη αναπαράστασή της σε υλικό. Η πιο συνηθισμένη από αυτές βασίζεται στη χρήση μνημών (Look-Up Tables). Η ιδιότητα της συμμετρίας της διευκολύνει αυτή την υλοποίησή υποδιπλασιάζοντας το απαιτούμενο μέγεθος των Look-Up Tables. Η υλοποίηση της Φ σε υλικό επιβάλλει την πεπερασμένη ακρίβεια αναπαράστασής της, δηλαδή τον κβαντισμό της. Το σφάλμα κβαντισμού που εισάγεται από την διαδικασία αυτή θέτει ένα όριο στην επίδοση του αλγορίθμου. Ενημέρωση των variable nodes : Υπολογισμός του μηνύματος Q n v f, τo οποίo στέλνει ο variable node v στον check node f κατά τη n-ιοστή επανάληψη του αλγορίθμου: v n v f n f ' v, (3.4) v f ' S ( f ) Q = R c όπου με f ' Sc ( f) συμβολίζεται το σύνολο των check nodes, εκτός του f, με τους οποίους συνδέεται ο variable node v. Hard Decision : Για κάθε bit, ο αντίστοιχος variable node κάνει μία συνολική εκτίμηση σύμφωνα με τη σχέση : Q v n = Rf ' v, (3.5) v f' S c όπου λαμβάνονται υπόψη όλα τα μηνύματα τα οποία λαμβάνει ο variable node. Βάσει της τιμής της ποσότητας Q v παίρνεται μία hard απόφαση, και συγκεκριμένα : 0 αν Qv 0 v = 1 αν Qv < 0 (3.6) Αντίστοιχη απόφαση λαμβάνεται για όλα τα bits της κωδικής λέξης. Σε περίπτωση που η προκύπτουσα κωδική λέξη είναι έγκυρη ο αλγόριθμος τερματίζει και η 29

συγκεκριμένη κωδική λέξη αποτελεί την αποκωδικοποιημένη. Διαφορετικά, επαναλαμβάνεται η διαδικασία από το στάδιο της ενημέρωσης των check nodes. 3.2.2 Min Sum (MS) Ο αλγόριθμος Min-Sum(MS) διαφέρει από τον log SP μόνο στο στάδιο της ενημέρωσης των check nodes. Η συνάρτηση Φ, είναι μία γνησίως φθίνουσα συνάρτηση. Όπως φαίνεται και από το Σχήμα 3.2, για μικρές τιμές του ορίσματος εισόδου της, παίρνει μεγάλες τιμές, ενώ για μεγαλύτερες εισόδους παίρνει πολύ μικρότερες τιμές. Λόγω αυτής της ιδιότητας, στο άθροισμα της σχέσης (3.2) κυριαρχεί το μικρότερο από τα μηνύματα Q v f. Μπορούμε, επομένως, να απλοποιήσουμε το άθροισμα προσεγγίζοντάς το με τον μικρότερο από τους όρους του : (3.7) H συνάρτηση min επιστρέφει εκείνο το όρισμα εισόδου της το οποίο έχει την μικρότερη τιμή από όλα τα υπόλοιπα. Όσο μικρότερος είναι ο όρος αυτός από τους υπόλοιπους όρους του αθροίσματος, τόσο καλύτερη είναι και η παραπάνω προσέγγιση. Συνδυάζοντας τις σχέσεις (3.2), (3.7) και Φ -1 (x)=φ(x), προκύπτει ο τύπος: R n min ( Q f v ) sign ( Q ) f u v' S ( v) n 1 v' f f u v' S ( v) n 1 v' f = (3.8) O αλγόριθμος MS χρησιμοποιεί αυτή τη σχέση για την ενημέρωση των check nodes, αντί για τη σχέση (3.2) του Log-SP. Τα υπόλοιπα στάδια των δύο αλγορίθμων είναι κοινά. Μπορούμε να πούμε πως ο αλγόριθμος MS είναι μία προσέγγιση του αλγορίθμου log-sp, η οποία μειώνει σημαντικά την πολυπλοκότητα της αποκωδικοποίησης, λόγω της απουσίας της συνάρτησης Φ. Παρότι ο log-sp είναι θεωρητικά βέλτιστος, ο Min-Sum είναι αρκετά απλούστερος και έχει μεγαλύτερο πρακτικό ενδιαφέρον στα πλαίσια μιας ρεαλιστικής εφαρμογής, όπως θα δούμε και στη συνέχεια. 30

3.3 Layered Decoding Στην προηγούμενη ενότητα, παρουσιάσαμε τη φιλοσοφία των αλγορίθμων message-passing, θεωρώντας πως αυτοί ακολουθούν ένα πλήρως παράλληλο σχήμα κατά τον χρονοπρογραμματισμό των μηνυμάτων που ανταλλάσσονται μεταξύ των επεξεργαστικών στοιχείων του αποκωδικοποιητή (two-phase scheduling). Στην πρώτη φάση, ενημερώνονται όλοι οι κόμβοι ελέγχου λαμβάνοντας τα μηνύματα που αποστέλλονται από τους κόμβους μεταβλητής, ενώ, αντίστοιχα, ακολουθεί η δεύτερη φάση με την ενημέρωση όλων μαζί των κόμβων μεταβλητής. Εδώ, θα αναφερθούμε σε μια κάπως διαφορετική προσέγγιση χρονοδρομολόγησης των μηνυμάτων ενός message-passing αλγορίθμου, η οποία ονομάζεται Layered Decoding (αποκωδικοποίηση σε επίπεδα), ενώ στη βιβλιογραφία έκανε την πρώτη της εμφάνιση με την ονομασία turbo decoding message passing ή TDMP (τούρμπο αποκωδικοποίηση περάσματος μηνυμάτων) [20]. Η επεξεργασία ξεκινά από ένα υποσύνολο των κόμβων ελέγχου και τα μηνύματα που υπολογίζονται αποστέλλονται άμεσα στους αντίστοιχους κόμβους μεταβλητής που συνδέονται με τους κόμβους ελέγχου του τρέχοντος υποσυνόλου. Η ενημέρωση των τιμών αυτών των κόμβων μεταβλητής γίνεται άμεσα, οπότε το επόμενο υποσύνολο κόμβων ελέγχου θα λάβει τις ενημερωμένες τιμές. Ας φέρουμε στο μυαλό μας τον πίνακα ελέγχου ισοτιμίας. Κατά την layered αποκωδικοποίηση οι γραμμές του πίνακα περνούν από επεξεργασία σε ομάδες ή στρώματα. Κάθε στρώμα υποβάλλεται σε επεξεργασία με αύξουσα σειρά, λαμβάνοντας υπόψη και την πληροφορία που πρόεκυψε από την επεξεργασία του αμέσως προηγούμενου στρώματος. Αυτή η διαδικασία έχει ως αποτέλεσμα την επιτάχυνση της ταχύτητα σύγκλισης. Το μεγαλύτερο πρόβλημα που ανακύπτει κατά την χρησιμοποίηση της layered αποκωδικοποίησης, σε μια υλοποίηση LDPC αποκωδικοποιητή, είναι η διαθεσιμότητα των τρεχόντων μηνυμάτων. Πρόκειται για μερικώς παράλληλες υλοποιήσεις, οι οποίες είναι σχεδιασμένες κατά τρόπο τέτοιο που εισάγει μια καθυστέρηση στη μετάδοση δεδομένων μεταξύ διαδοχικών στρωμάτων του πίνακα ελέγχου ισοτιμίας. Πριν ξεκινήσει η επεξεργασία ενός στρώματος, πρέπει να είναι διαθέσιμη πληροφορία, η οποία αντλείται από την επεξεργασία του προηγούμενου στρώματος. Αυτά τα δεδομένα απαιτούν κάποιους κύκλους ρολογιού για να υπολογιστούν. Οι αρχιτεκτονικές αποκωδικοποιητών που βασίζονται σε αυτή την προσέγγιση αποτελούνται από ένα σύνολο επεξεργαστικών μονάδων δύο τύπων (VPUs και CPUs), 31

σαν αυτές που αναφέραμε στην ενότητα 3.1. Το πλήθος των μονάδων αυτών, όμως, είναι μικρότερο από το πλήθος των κόμβων ελέγχου και μεταβλητής αντίστοιχα. Προκειμένου να υπάρχει ευελιξία, οι VPUs και CPUs ακολουθούν ένα σειριακό σχήμα ανταλλαγής μηνυμάτων. Αυτό, πρακτικά, σημαίνει πως μπορούν να δεχθούν ή να στείλουν ένα μήνυμα ανά κύκλο ρολογιού. Συνεπώς, για έναν κόμβο ελέγχου με βαθμό d c = n, απαιτούνται n κύκλοι ρολογιού για την επεξεργασία όλων των μηνυμάτων στην αντίστοιχη CPU. Σε κάθε κύκλο υπολογίζεται ένα μήνυμα. Για αυτό το λόγο, πρέπει να υπάρχει πρόβλεψη ώστε, για τουλάχιστον d c κύκλους, καμία άλλη CPU να μη μπορεί να εκτελέσει επεξεργασία για λογαριασμό κάποιου κόμβου ελέγχου που ενδεχομένως να απαιτήσει μηνύματα που μόλις ενημερώνονται. Οι χρονικοί περιορισμοί που μόλις αναφέραμε πρέπει να λαμβάνονται σοβαρά υπόψη κατά την υλοποίηση σε υλικό και περιορίζουν σημαντικά την επίδοση του αποκωδικοποιητή. 32

3.4 Περιγραφή του προτεινόμενου αλγορίθμου και αποτελέσματα εξομοίωσης Ένα σημαντικό χαρακτηριστικό των κωδικών LDPC είναι ότι ο αλγόριθμος αποκωδικοποίησης, και κατά συνέπεια και το κύκλωμα που τον υλοποιεί, εξαρτώνται άμεσα από τη δομή του πίνακα ελέγχου ισοτιμίας. Να αναφέρουμε ό,τι ένας κώδικας WiMax 802.16e [21] προκύπτει από ένα πίνακα βάσης H b (base matrix), ο οποίος αποτελείται από 24 στήλες και (1-R) 24 γραμμές, όπου R είναι το rate του κώδικα. Tα στοιχεία του πίνακα H b είναι ακέραιοι αριθμοί που δηλώνουν συντελεστή ολίσθησης. Ο πίνακας ελέγχου ισοτιμίας H του κώδικα προκύπτει από τον πίνακα βάσης αντικαθιστώντας κάθε στοιχείο του τελευταίου με έναν δεξιά κυκλικά ολισθημένο, κατά τον αντίστοιχο συντελεστή ολίσθησης, μοναδιαίο πίνακα μεγέθους z z. Στην περίπτωση που ο αντίστοιχος συντελεστής ολίσθησης είναι αρνητικός, τότε ο πίνακαςαντικαταστάτης είναι ένας μηδενικός τετραγωνικός πίνακα μεγέθους z. Συνεπώς, κάθε στοιχείο του πίνακα βάσης ορίζει ένα τετραγωνικό υπομητρώο μεγέθους z, το οποίο συνήθως κυμαίνεται μεταξύ 24 και 96. Συνεπώς, ο πίνακας ελέγχου ισοτιμίας ορίζεται ως : όπου P i, j είναι ένα δεξιά κυκλικά ολισθημένο μοναδιαίο υπομητρώο ή ένα μηδενικό υπομητρώο μεγέθους z, με n b = 24 και m b = (1-R) 24. 33

Στα δύο επόμενα σχήματα αναπαρίστανται δύο μορφές πινάκων βάσης, για μήκος κωδικής λέξης Ν=2304 και z = 96. Ο πρώτος, αντιστοιχεί σε κώδικα με rate R=½ και ο δεύτερος, σε R= ⅔. Σχήμα 3.3 : Πίνακας βάσης για έναν rate ½ WiMax 802.16e LDPC κώδικα (z=96). Σχήμα 3.4 : Πίνακας βάσης για έναν rate ⅔ WiMax 802.16e LDPC κώδικα (z=96). Επιπλέον, στο σχήμα 3.5 μπορούμε να δούμε τη δομή ενός 1152 2304 rate ½ WiMax 802.16 LDPC κώδικα για z = 96. 34

Σχήμα 3.5 : Δομή του πίνακα ελέγχου ισοτιμίας για έναν rate ½ WiMax 802.16 LDPC κώδικα (z=96). Γίνεται κατανοητό πως μας ενδιαφέρουν κώδικες μεγάλου μήκους, οι οποίοι δεν μπορούν να υλοποιηθούν από μια πλήρως παράλληλη αρχιτεκτονική, για μια ρεαλιστική εφαρμογή. Όπως θα δούμε και στη συνέχεια, η τιμή του z καθορίζει το βαθμό παραλληλίας και αποτελεί ρυθμιστικό παράγοντα του trade-off μεταξύ απαιτούμενης επιφάνειας(area) και ταχύτητας αποκωδικοποίησης. Στα πλαίσια της σχεδίασης ενός αποδοτικού LDPC αποκωδικοποιητή, κληθήκαμε να επιλέξουμε κάποιο συγκεκριμένο αλγόριθμο αποκωδικοποίησης καθώς και ένα σχήμα χρονοδρομολόγησης των ανταλλασσόμενων μηνυμάτων. Καθοδηγούμενοι από την φιλοσοφία του layered decoding και του log-sp, αναπτύξαμε τον ακόλουθο αλγόριθμο αποκωδικοποίησης : 35

Αρχικοποίηση : λ = LLR v pv 0 pv 1 (3.9) S v = (3.10) λ v S f = 0, sgn = 1 f (3.11) ( f v) H( f v) R = 0,, :, = 1 f v (3.12) Επαναληπτική διαδικασία : % k οστή επανάληψη % for k= 1, 2,..., NOI % m οστή υποεπανάληψη % for κάθε γραμμή του πίνακα βάσης H b (m: 1 to M) for κάθε στήλη του πίνακα βάσης H b (n:1 to N) if Hb(i,j) 0 for κάθε κόμβο ελέγχου ( ) f m 1 z+ 1, m z v n 1 z+ 1, n z : H f, v = 1 for κάθε κόμβο μεταβλητής ( ) ( ) S = S R v v f v (3.13) Q v f = Sv (3.14) S = S +Φ Q f f v f (3.15) sgn f = sgn Q f v f sign (3.16) 36

end forloop v end forloop f end forloop n for κάθε στήλη του πίνακα βάσης H b (n:1 to N) if Hb(i,j) 0 for κάθε κόμβο ελέγχου ( ) f m 1 z+ 1, m z + = 1 for κάθε κόμβο μεταβλητής v ( n 1) z 1, n z : H( f, v) R f v = sgn f sign Q v f Φ S f Φ Q v f S = S + R v v f v (3.17) (3.18) end forloop v S f = 0 & sgn = 1 f (3.19) end forloop f end forloop n end forloop m % Τέλος m οστής υποεπανάληψης % end forloop k % Τέλος k οστής επανάληψης % Hard Decision : for v ( ) Dv = sign Sv (3.20) end forloop v 37

Συμβολισμοί : H b : H : z : NOI : είναι ο πίνακας βάσης (base matrix) του κώδικα. Έχει διαστάσεις Μ Ν (rows x columns). Τα στοιχεία του είναι ακέραιοι αριθμοί που δηλώνουν συντελεστή ολίσθησης. είναι ο πίνακας ελέγχου ισοτιμίας του κώδικα. Προκύπτει από τον πίνακα βάσης αντικαθιστώντας κάθε στοιχείο του με έναν δεξιά κυκλικά ολισθημένο, κατά τον αντίστοιχο συντελεστή ολίσθησης, μοναδιαίο πίνακα μεγέθους z z. Στην περίπτωση που ο αντίστοιχος συντελεστής ολίσθησης είναι αρνητικός, τότε ο πίνακας-αντικαταστάτης είναι μηδενικός τετραγωνικός πίνακα μεγέθους z. είναι το μέγεθος των τετραγωνικών υποπινάκων που απαρτίζουν τον πίνακα H. είναι ο προκαθορισμένος αριθμός επαναλήψεων που πραγματοποιεί ο αλγόριθμος. Μ : είναι το πλήθος των γραμμών του πίνακα βάσης H b. Ν : είναι το πλήθος των στηλών του πίνακα βάσης H b. Φ(x) : ( ) log tanh x Φ x =, if ( x) max_φ, then 2 Φ > Φ ( x) = max_φ. max_φ : σταθερά στην οποία γίνεται saturated η Φ ( x). λ ν : Η εκ των προτέρων (a priori) πληροφορία που δίνει το κανάλι για το bit της λαμβανόμενης κωδικής λέξης. v S f, S v : μεταβλητές οι οποίες αντιστοιχούν στα υπολογιζόμενα αθροίσματα στον κόμβο ελέγχου f και στον κόμβο μεταβλητής v αντίστοιχα. R_M f, R_M2 f : οι μεταβλητές του κόμβου ελέγχου που αντιστοιχούν στα δύο, κατά απόλυτη τιμή, μικρότερα εισερχόμενα στον κόμβο μηνύματα. Χρησιμοποιούνται στο min-sum layered decoding, που θα δούμε στη συνέχεια. Inf : Μέγιστη τιμή που μπορεί να αναπαρασταθεί από τη συγκεκριμένη υλοποίηση. Εξαρτάται από τον αριθμό δυαδικών ψηφίων που χρησιμοποιούμε για την αναπαράσταση των δεδομένων (κβαντισμό των τιμών). R f v : το μήνυμα που στέλνει ο check κόμβος f στον variable κόμβο v. 38

Q v f : το μήνυμα που στέλνει ο variable κόμβος v στον check κόμβο f. sign : συνάρτηση σύμφωνα με την οποία ( x) sign 1, x< 0 = 0, x 0. 3.4.1 Επίδοση προτεινόμενου αλγορίθμου Ρυθμός εμφάνισης λανθασμένων δυαδικών ψηφίων και κωδικών λέξεων (αποτελέσματα εξομοίωσης) Οι δυνατότητες αποκωδικοποίησης του αλγόριθμου που παρουσιάστηκε νωρίτερα περιγράφονται στα κάτωθι διαγράμματα BER vs. SNR : 10-1 Log-SP layered decoding algorithm performance (WiMax - 801.16e LDPC code A, z=96) double precision finite word length 10-2 BER (Bit Error Rate) 10-3 10-4 10-5 1 1.2 1.4 1.6 1.8 2 Eb/N0 (db) Σχήμα 3.6 : Ρυθμός εμφάνισης λανθασμένων δυαδικών ψηφίων (BER). 39

Στα σχήματα 3.6 και 3.7 παρουσιάζεται η επίδοση του log-sp layered-decoding αλγορίθμου αποκωδικοποίησης, σε μία ρεαλιστική του υλοποίηση. Πρόκειται για τα αποτελέσματα εξομοιώσεων σε περιβάλλον Matlab, όπου χρησιμοποιήθηκε κώδικας A (ρυθμός κώδικα ½ ) του προτύπου IEEE 802.16e (βλέπε Σχήμα 3.3), για z = 96, για σταθερό αριθμό επαναλήψεων, ΝΟΙ =10. Εκτελέστηκαν για τον συγκεκριμένο κώδικα δύο πειράματα. Στο πρώτο πείραμα χρησιμοποιήθηκε η διπλή(«άπειρη») ακρίβεια (double precision) του εργαλείου, τόσο για την αναπαράσταση των ανταλλασσόμενων μηνυμάτων μεταξύ των κόμβων, όσο και για τους υπολογισμούς που υλοποιούνται μέσα σε αυτούς. Στο δεύτερο πείραμα, η ακρίβεια αναπαράστασης της πληροφορίας περιορίστηκε με ομοιόμορφο κβαντισμό. Τα ανταλλασσόμενα μηνύματα αναπαρίστανται με 4 ακέραια και 4 κλασματικά δυαδικά ψηφία, ενώ η έξοδος των LUTs που υλοποιούν τη συνάρτηση Φ, περιορίστηκε στα 5 ακέραια και 8 κλασματικά bits. Για να μην έχουμε περαιτέρω απώλεια πληροφορίας κατά την εκτέλεση του αλγορίθμου αποκωδικοποίησης, και με δεδομένο ότι ο μέγιστος 10 0 Log-SP layered decoding algorithm performance (WiMax - 801.16e LDPC code A, z=96) double precision finite word length FER (Frame Error Rate) 10-1 10-2 10-3 1 1.2 1.4 1.6 1.8 2 Eb/N0 (db) Σχήμα 3.7 : Ρυθμός εμφάνισης λανθασμένων κωδικών λέξεων (FER). 40

αριθμός των μηνυμάτων που εισέρχονται και, κατά συνέπεια, αθροίζονται σε έναν κόμβο ελέγχου είναι εφτά, οι αθροιστές που απαιτούνται στους κόμβους ελέγχου είναι 20 bits (5+8+7), ενώ οι αντίστοιχοι αθροιστές στους κόμβους μεταβλητής αρκεί να είναι 14 bits (4+4+6), μιας και το μέγιστο fan in ενός κόμβου ελέγχου και μεταβλητής είναι 7 και 6, αντίστοιχα. Στα παραπάνω διαγράμματα φαίνονται οι ρυθμοί εμφάνισης λανθασμένων bits (Bit Error Rate) και λανθασμένων κωδικών λέξεων (Frame Error Rate), για διαφορετικές στάθμες θορύβου. Με μπλε καμπύλη αναπαρίστανται τα αποτελέσματα στην περίπτωση της double precision εξομοίωσης, ενώ με κόκκινο χρώμα έχουν σχεδιαστεί τα αποτελέσματα για πεπερασμένης ακρίβειας αναπαράσταση. Στην περίπτωση του πρώτου διαγράμματος (BER), ο περιορισμός της επίδοσης του αλγορίθμου είναι ελάχιστος στις χαμηλές στάθμες θορύβου ( E b /N 0 <1.6dB ). Για μεγαλύτερες στάθμες θορύβου, ο περιορισμός φαίνεται να αυξάνει. Αντιθέτως, δεν προκύπτει ανάλογο συμπέρασμα από το δεύτερο διάγραμμα (FER). Ακόμα και για E b /N 0 =2dB ο ρυθμός εμφάνισης λανθασμένων κωδικών λέξεων είναι ελάχιστα μεγαλύτερος στην περίπτωση της πεπερασμένης ακρίβειας. 3.5 Παραλλαγή του προτεινόμενου αλγορίθμου, με χρήση του Min Sum αλγορίθμου για την ενημέρωση των κόμβων ελέγχου Όπως αναφέραμε στην ενότητα 3.2.2, ο αλγόριθμος Min-Sum (MS) διαφέρει από τον log SP μόνο στο στάδιο της ενημέρωσης των check nodes. Τα υπόλοιπα στάδια των δύο αλγορίθμων είναι όμοια. Μπορούμε να πούμε πως ο αλγόριθμος MS είναι μία προσέγγιση του αλγορίθμου log-sp, η οποία μειώνει σημαντικά την πολυπλοκότητα της αποκωδικοποίησης, λόγω της απουσίας της συνάρτησης Φ. Το γεγονός αυτό, μας οδήγησε στη διερεύνηση του κατά πόσο μια παραλλαγή του αλγορίθμου που παρουσιάσαμε στην προηγούμενη ενότητα, βασισμένη σε Min-Sum, θα μπορούσε να είναι το ίδιο, ή ακόμα περισσότερο, αποδοτική στα πλαίσια μιας ρεαλιστικής εφαρμογής. Σε αναλογία με τα βήματα του log-sp layered-decoding αλγορίθμου, ο Min-Sum layered-decoding αλγόριθμος αποτελείται από τα ακόλουθα βήματα : 41

Αρχικοποίηση : λ = LLR v pv 0 pv 1 (3.21) S v = (3.22) λ v R_ M = Inf, R_ M2 = Inf, sgn 1 f f f = (3.23) ( f v) H( f v) R = 0,, :, = 1 f v (3.24) Επαναληπτική διαδικασία : % k οστή επανάληψη % for k= 1, 2,..., NOI % m οστή υποεπανάληψη % for κάθε γραμμή του πίνακα βάσης H b (m: 1 to M) for κάθε στήλη του πίνακα βάσης H b (n:1 to N) if Hb(i,j) 0 for κάθε κόμβο ελέγχου ( ) f m 1 z+ 1, m z v n 1 z+ 1, n z : H f, v = 1 for κάθε κόμβο μεταβλητής ( ) ( ) S = S R v v f v (3.25) Q v f = Sv (3.26) N1= min Q,min( R_ M, R_ M2 v f ) (3.27) if N1= Q v f WHO v f = (3.28) 42

end if N2= min Q,max( R_ M, R_ M2 v f ) (3.29) R_ M N1 f = (3.30) R_ M2 N2 f = (3.31) sgn f = sgn sign Q f v f (3.32) end forloop v end forloop f end forloop n for κάθε στήλη του πίνακα βάσης H b (n:1 to N) if Hb(i,j) 0 for κάθε κόμβο ελέγχου ( ) f m 1 z+ 1, m z + = 1 for κάθε κόμβο μεταβλητής v ( n 1) z 1, n z : H( f, v) if WHO v f == Reg = R_ M (3.33α) f else Reg = R_ M 2 (3.33β) f end if R f v = sgn f sign Q v f Reg (3.34) S = S + R v v f v (3.35) 43

end forloop v end forloop f end forloop n end forloop m % Τέλος m οστής υποεπανάληψης % R_ M = Inf, R_ M2 = Inf, sgn 1 f f f = (3.36) end forloop k % Τέλος k οστής επανάληψης % Hard Decision : for v ( ) Dv = sign Sv (3.37) end forloop v 3.6 Πειραματικά αποτελέσματα επίδοσης αλγορίθμων Log SP και Min Sum για πεπερασμένα μήκη λέξης Στα πειράματα που πραγματοποιήθηκαν χρησιμοποιήθηκε διαμόρφωση BPSK ενώ το κανάλι ήταν AWGN. Σε κάθε περίπτωση τα LLRs τα οποία εισέρχονται στον αποκωδικοποιητή αναπαρίστανται από 3 ακέραια και 3 κλασματικά δυαδικά ψηφία (bits). 44

Υλοποίηση 1η: Τα ανταλλασσόμενα μεταξύ των κόμβων μηνύματα αναπαρίστανται από 3 ακέραια και 3 κλασματικά bits. Η συνάρτηση (πρακτικά, το LUT που την υλοποιεί) Φ στους check nodes, στην περίπτωση του Log-SP, αναπαρίσταται από 3 ακέραια και 3 κλασματικά bits. 10 0 WiMax code A z=96 Log-SP Layered Decoding Exchanged Messages 3.3 bits & phi 3.3 bits 10-1 BER - Bit Error Rate 10-2 10-3 10-4 10-5 10-6 1 1.5 2 2.5 3 3.5 4 4.5 Eb/N0 (db) Σχήμα 3.8 : BER για την υλοποίηση 1 του Log-SP layered decoding. 45

10 0 WiMax code A z=96 Min-Sum Layered Decoding Exchanged Messages 3.3 bits & phi 3.3 bits 10-1 BER - Bit Error Rate 10-2 10-3 10-4 10-5 10-6 1 1.5 2 2.5 3 3.5 4 4.5 Eb/N0 (db) Σχήμα 3.9 : BER για την υλοποίηση 1 του Min-Sum layered decoding. Παρατηρούμε πως, με τη συγκεκριμένη υλοποίηση, έχουμε εμφάνιση error floor και για τις δύο παραλλαγές του αλγορίθμου. Προφανώς, χρειάζονται περισσότερα δυαδικά ψηφία για την αναπαράσταση των δεδομένων, ώστε να έχουμε ικανοποιητική επίδοση. 46

Υλοποίηση 2η: Τα ανταλλασσόμενα μεταξύ των κόμβων μηνύματα αναπαρίστανται από 4 ακέραια και 4 κλασματικά bits. Η συνάρτηση (πρακτικά ο LUT που την υλοποιεί) Φ στους check nodes, στην περίπτωση του Log-SP, αναπαρίσταται από 5 ακέραια και 8 κλασματικά bits. 10 0 WiMax code A z=96 Log-SP Layered Decoding Exchanged Messages 4.4 bits & Phi function 5.8 bits 10-1 BER - Bit Error Rate 10-2 10-3 10-4 10-5 1 1.2 1.4 1.6 1.8 2 2.2 Eb/N0 (db) Σχήμα 3.10 : BER για την υλοποίηση 2 του Log-SP layered decoding. 47

10 0 WiMax code A z=96 Min-Sum Layered Decoding Exchanged Messages 4.4 bits & phi 5.8 bits 10-1 BER - Bit Error Rate 10-2 10-3 10-4 10-5 1 1.2 1.4 1.6 1.8 2 2.2 Eb/N0 (db) Σχήμα 3.11 : BER για την υλοποίηση 2 του Min-Sum layered decoding. Η συγκεκριμένη υλοποίηση, είναι εμφανώς καλύτερη. Τα error floor έχουν εξαλειφθεί και για τις δύο παραλλαγές του αλγορίθμου. 48

Κεφάλαιο 4 Αρχιτεκτονική του Υλικού 4.1 Αρχιτεκτονικές για LDPC αποκωδικοποιητές Ο αριθμός των επεξεργαστικών μονάδων καθορίζει το βαθμό παραλληλίας της εκάστοτε αρχιτεκτονικής και αποτελεί ρυθμιστικό παράγοντα του trade-off μεταξύ απαιτούμενης επιφάνειας (area), ταχύτητας αποκωδικοποήσης, κατανάλωσης ενέργειας και ευελιξίας. Στο ένα άκρο βρίσκονται οι πλήρως παράλληλες υλοποιήσεις που οδηγούν σε «ταχύτερες» αρχιτεκτονικές με χαμηλότερη κατανάλωση ενέργειας, αλλά που έχουν μεγαλύτερες απαιτήσεις σε επιφάνεια και μπορούν να χρησιμοποιηθούν μόνο από έναν συγκεκριμένο τύπο κώδικα. Στην αντίπερα όχθη, έχουν αναπτυχθεί σειριακές υλοποιήσεις (ένας κόμβος ελέγχου και ένας κόμβος μεταβλητής). Έχουν τη μεγαλύτερη δυνατή ευελιξία και μικρότερη απαιτούμενη επιφάνεια, αλλά χαμηλότερη ταχύτητα αποκωδικοποίησης. Συνήθως, προτιμούνται μερικώς παράλληλες υλοποιήσεις, οι οποίες επιτυγχάνουν ικανοποιητική απόδοση και ευελιξία, σε συνδυασμό με σχετικά χαμηλή απαιτούμενη επιφάνεια και κατανάλωση ενέργειας. Οι VLSI LDPC αποκωδικοποιητές μπορούν να χωριστούν σε δύο βασικές κατηγορίες: τους βασισμένους σε μνήμη (memory-based ή hardware-sharing) και τους πλήρως παράλληλους (fully parallel). Στους πρώτους, ανταλλάσσονται μηνύματα μεταξύ διαμοιραζόμενων επεξεργαστικών μονάδων, δια μέσου κοινής μνήμης. Στους πλήρως παράλληλους αποκωδικοποιητές, όλοι οι κόμβοι του διαγράμματος Tanner απεικονίζονται/υλοποιούνται απευθείας σε υλικό. 49

Hardware-Sharing Αρχιτεκτονικές Η Hardware-Sharing αρχιτεκτονική (Σχήμα 4.1) αποτελείται από ένα μικρό πλήθος από κόμβους μεταβλητής (variable) και ελέγχου (check) και µονάδα μνήμης, κατάλληλα οργανωμένη για την αποθήκευση των μηνυμάτων και την υλοποίηση των διασυνδέσεων του διμερούς γραφήματος. Το πλήθος των κόμβων μεταβλητής και ελέγχου ποικίλει, αλλά πάντοτε είναι μικρό σε σχέση µε τους αριθμούς n και m, δηλαδή τις διαστάσεις του πίνακα ελέγχου ισοτιμίας Η, ο οποίος χαρακτηρίζει το συγκεκριμένο κώδικα LDPC. Σχήμα 4.1 : Hardware-Sharing αρχιτεκτονική για LDPC αποκωδικοποιητή. Τα πλεονεκτήματα της Hardware-Sharing αρχιτεκτονικής είναι η μείωση της επιφάνειας του αποκωδικοποιητή, καθώς και η δυνατότητα υποστήριξης πολλαπλών μεγεθών μπλοκ (block) και ρυθμών (rates) κώδικα. Συνήθως, το μεγαλύτερο ποσοστό της επιφάνειας του αποκωδικοποιητή το καταλαμβάνει η μονάδα μνήμης και η μονάδα ελέγχου. Από την άλλη, η συγκεκριµένη αρχιτεκτονική έχει το µειονέκτηµα της σχετικά µικρής ταχύτητας αποκωδικοποίησης (throughput). Το γεγονός αυτό, οφείλεται στο ότι ο υπολογισµός των τιµών των µηνυµάτων, κατά την αποκωδικοποίηση, γίνεται κατά τµήµατα. Δεν είναι δυνατόν να υπολογιστούν όλα τα µηνύµατα, είτε αυτά είναι variableto-check µηνύµατα, είτε είναι check-to-variable µηνύµατα, αφού ο αριθµός των κόμβων μεταβλητής και των κόμβων ελέγχου είναι περιορισµένος. Για παράδειγµα, στην αρχιτεκτονική του σχήματος 4.1 τα variable-to-check μηνύματα θα πρέπει να 50

υπολογίζονται κατά τετράδες και να αποθηκεύονται κατάλληλα στη µνήµη, η οποία παίζει τον ρόλο των διασυνδέσεων µεταξύ των κόμβων μεταβλητής και ελέγχου. Αφού υπολογιστούν όλα τα variable-to-check µηνύµατα, λαµβάνει χώρα η λειτουργία των κόμβων ελέγχου, οι οποίοι στη συγκεκριµένη περίπτωση είναι δύο. Άρα, τα check-tovariable µηνύµατα θα πρέπει να υπολογίζονται κατά δυάδες και να αποθηκεύονται στη µνήµη. Είναι προφανές ότι αυτή η διαδικασία είναι χρονοβόρα, αφού χρειάζονται πολλοί κύκλοι ρολογιού για την ολοκλήρωση µιας µόνο επανάληψης. Ακόµα ένα µειονέκτηµα της Hardware-Sharing αρχιτεκτονικής είναι η µεγάλη πολυπλοκότητα της μονάδας ελέγχου. Η πολυπλοκότητα αυτή οφείλεται στο ότι η µονάδα ελέγχου έχει την ευθύνη του συντονισµού της διαδικασίας που περιγράφηκε παραπάνω, η οποία είναι αρκετά πολύπλοκη. Κυρίως, όµως, η πολυπλοκότητα της µονάδας ελέγχου οφείλεται στη διαχείριση της µονάδας µνήµης. Τέλος, οι μεγάλες απαιτήσεις σε memory bandwidth οδηγούν σε σημαντική κατανάλωση ενέργειας. Η Hardware-Sharing αρχιτεκτονική είναι κατάλληλη για εφαρµογές όπου το κρίσιµο µέγεθος είναι η επιφάνεια, ενώ δεν υπάρχουν μεγάλες απαιτήσεις σε ταχύτητα. Αντίθετα, για εφαρµογές όπου το κρίσιµο µέγεθος είναι η ταχύτητα, η παράλληλη αρχιτεκτονική, η οποία περιγράφεται στην επόµενη παράγραφο, είναι καταλληλότερη. Fully Parallel Αρχιτεκτονικές Η παράλληλη αρχιτεκτονική προκύπτει άµεσα από ένα διμερές γράφηµα Tanner, σαν αυτό του σχήµατος 2.2. Εδώ, όλοι οι κόμβοι μεταβλητής και οι κόμβοι ελέγχου υλοποιούνται ένας προς ένας. Η µεταξύ τους διασύνδεση γίνεται µε καλώδια, τα οποία είναι προσεκτικά κατανεµηµένα στην επιφάνεια του κυκλώµατος (routing). Από την γραφική αναπαράσταση του LDPC κώδικα, προκύπτει πως υπάρχουν εξαρτήσεις (dependencies) μονάχα μεταξύ κόμβων διαφορετικού είδους (variable / check nodes). Σε έναν μόνο κύκλο ρολογιού υπολογίζονται όλα τα variable-to-check µηνύµατα, παράλληλα, και στέλνονται στους check nodes, ώστε στον επόµενο κύκλο να υπολογιστούν όλα τα check-to-variable μηνύματα κ.ο.κ.. Μέσα σε δύο µόνο κύκλους ρολογιού, έχει ολοκληρωθεί µία επανάληψη του message-passing αλγορίθµου. Έτσι, οδηγούμαστε σε πολύ υψηλή απόδοση. Όσον αφορά στη µονάδα ελέγχου, η πολυπλοκότητά της είναι κατά πολύ µειωµένη σε σχέση µε την hardwaresharing αρχιτεκτονική, αφού στη συγκεκριµένη περίπτωση η ανταλλαγή µηνυµάτων γίνεται µέσω καλωδίων, µε αποτέλεσµα να µην απαιτείται πολύπλοκη διευθυνσιοδότηση κάποιας µονάδας µνήµης. Το βασικό µειονέκτηµα μιας παράλληλης αρχιτεκτονικής, είναι η µεγάλη επιφάνεια που καταλαμβάνει, αφού απαιτεί την υλοποίηση σε υλικό 51

όλων των κόμβων ελέγχου και μεταβλητής. Παρόλα αυτά, εξαιτίας του πολύ μικρού παράγοντα δραστηριότητας, η κατανάλωση ενέργειας είναι εξαιρετικά μικρή. Άλλο ένα αρνητικό είναι η αδυναμία της να υποστηρίξει πολλαπλά μεγέθη block και rates κώδικα, οπότε έχει μικρότερη ευελιξία. Η πλήρως παράλληλη αρχιτεκτονική είναι κατάλληλη για εφαρµογές όπου η ταχύτητα είναι το κρίσιµο µέγεθος, ενώ οι απαιτήσεις για µικρή επιφάνεια δεν είναι καθοριστικής σηµασίας. Η μεγαλύτερη πρόκληση κατά την υλοποίηση ενός παράλληλου αποκωδικοποιητή είναι οι διασυνδέσεις (routing) των λειτουργικών μονάδων. Απαιτείται ένας πολύ µεγάλος αριθμός καλωδίων. Σε κάποιες περιπτώσεις, οι απαιτήσεις των διασυνδέσεων σε area μπορεί να ξεπεράσουν ακόμα και το μίσο της επιφάνειας του ολοκληρωμένου. Με βάση έναν soft decision LDPC κώδικα με μέγεθος block 1024 bits και rate κώδικα ίσο με ½, προκύπτει πως απαιτούνται 1024 κόμβοι μεταβλητής και 512 κόμβοι ελέγχου. To datapath του παράλληλου αποκωδικοποιητή απεικονίζεται στο Σχήμα 4.2, στο οποίο για απλότητα εμφανίζεται μόνος ένας κόμβος μεταβλητής και ελέγχου. Παρατηρούμε, πως τα variable-to-check και check-to-variable μηνύματα μεταφέρονται από ξεχωριστά σύνολα καλωδίων. Σχήμα 4.2 : Datapath παράλληλης αρχιτεκτονικής για LDPC αποκωδικοποιητή. 52

Για τον συγκεκριμένο LDPC κώδικα, μετά από εξαντλητικές εξομοιώσεις [11], προέκυψε πως απαιτούνται 3328 ακμές για την υλοποίηση ενός μη κανονικού (irregular) κώδικα, με μέσο βαθμό κόμβων μεταβλητής (column weight) ίσο με 3.25 και μέσο βαθμό κόμβων ελέγχου (row weight) ίσο με 6.5. Οπότε αν χρησιμοποιήσουμε 4 bits για την αναπαράσταση κάθε μηνύματος, απαιτείται αριθμός καλωδίων για τη μεταφορά των μηνυμάτων ίσος με : 3328 ακμές 4 bits/μήνυμα 2 μονοπάτια = 26.624 καλώδια Παρατηρούμε, πως ο αριθμός των διασυνδέσεων είναι εξαιρετικά μεγάλος, καθώς και η επιφάνεια που καταλαμβάνεται. 4.1.1 State of the art αρχιτεκτονικές LDPC αποκωδικοποιητών Δεν είναι εύκολο να παρουσιάσουμε επακριβώς το state of the art των LDPC αποκωδικοποιητών, καθώς κάθε αρχιτεκτονική στοχεύει στη βελτιστοποίηση συγκεκριμένης/ων παραμέτρων, σαν αυτές που αναφέρθηκαν στην προηγούμενη παράγραφο. Στον επόμενο πίνακα θα παρουσιάσουμε τα βασικά χαρακτηριστικά 7 συγκεκριμένων πολλά υποσχόμενων υλοποιήσεων : B-H : πλήρως παράλληλος αποκωδικοποιητής [11], OFDM : παράλληλη αρχιτεκτονική για OFDM συστήματα [15], SHIFT_LDPC : μερικώς παράλληλος αποκωδικοποιητής, βασισμένος σε Shift-LDPC κώδικες [19], UWB : μερικώς παράλληλος αποκωδικοποιητής για OFDM (orthogonal frequencydivision multiplexing) -UWB (ultra-wide band) συστήματα, βασισμένος σε ultra sparce κώδικες [18], K-P : μερικώς παράλληλη αρχιτεκτονική, σχεδιασμένη για μια συγκεκριμένη κλάση κωδικών [12], Layered : μερικώς παράλληλος αποκωδικοποιητής, βασισμένος σε layered αποκωδικοποίηση, ο οποίος υποστηρίζει 6 διαφορετικές κλάσεις LDPC κωδικών [14], 53

Flexible : ευελικτη αρχιτεκτονική ικανή να αποκωδικοποιήσει οποιονδήποτε τυχαίο LDPC κώδικα [13]. B-H [11] OFDM [15] SHIFT_ LDPC [19] UWB [18] K-P [12] LAYERED [14] FLEXIBLE [13] Μέγεθος Block (Bits) Πλήθος απαιτούμενων πυλών για λογική (K) Συνολική Επιφάνεια (mm 2 ) 1024 648 1944 8192 9600 1024 576 2304 1024 1750 195 457 170 52.5 1.9 11.3 / 16.8 0.504 6.29 3.83 2.94 Τεχνολογία (nm) 160 130 180 65 180 130 130 Μέγιστη Συχνότητα Ρολογιού (MHz) Ταχύτητα αποκωδικοποίησης (Mbps) Αριθμός Επαναλήψεων 64 400 317 500 200 333 245 1000 150 1000 5100 1450 582 155 619 31.2 64 15 10 8 10 8 Αλγόριθμος αποκωδικοποίησης Log_SP Log_SP Min Sum Min Sum Log_SP 3 Min Log_SP Κβαντισμός (bits) 4 6 6 3 5 6 8 Πίνακας 1 : State of the art αρχιτεκτονικών για LDPC αποκωδικοποιητές. 54

4.2 Προτεινόμενη αρχιτεκτονική VLSI αποκωδικοποιητή για κώδικες LDPC Στο Σχήμα 4.3 φαίνεται το ανώτερο επίπεδο (top level) της αρχιτεκτονικής του υλικού που υλοποιεί τον αλγόριθμο που περιγράψαμε. CPU : Check Processing Unit VPU : Variable Processing Unit LBS : Logarithmic barrel shifter Σχήμα 4.3 : Αρχιτεκτονική του LDPC αποκωδικοποιητή. 55

Πρόκειται για μια βασισμένη σε μνήμη αρχιτεκτονική διαμοιραζόμενων πόρων (hardware sharing). Το πλήθος των μονάδων VPU και CPU ισούται με την τιμή του z και καθορίζει το βαθμό παραλληλίας που επιτυγχάνει η αρχιτεκτονική μας. Συνακόλουθα, είναι ρυθμιστικός παράγοντας της απαιτούμενης επιφάνειας(area) και της ταχύτητας αποκωδικοποίησης που επιτυγχάνεται για συγκεκριμένο μέγεθος LDPC κώδικα. Η είσοδος στον αποκωδικοποιητή είναι σε μορφή φυσικών λογαρίθμων λόγου πιθανοτήτων(logarithmic Likelihood Ratios - LLRs). Τα LLRs εισέρχονται σειριακά από μία είσοδο και αποθηκεύονται στις z First In, First Out μνήμες (fifos). Τα LLRs είναι λέξεις μήκους n δυαδικών ψηφίων, σε αναπαράσταση συμπληρώματος του δύο. Το Permutation Network υλοποιείται με τη βοήθεια ενός Logarithmic Barrel Shifter (LBS) και θα παρουσιαστεί διεξοδικά στην ενότητα 4.2.4. Η δομή των υποπινάκων z z είναι τέτοια, που μας οδηγεί στη συγκεκριμένη επιλογή. Το επίπεδο των πολυπλεκτών καθορίζει αν θα σταλούν variable-to-check(v2c) ή check-to-variable(c2v) μηνύματα μέσω του δικτύου διασύνδεσης, δηλ. του LBS. Η βασική διαφορά μεταξύ των δύο υλοποιήσεων του layered decoding αλγόριθμου που αναφέραμε στο προηγούμενο κεφάλαιο, για Min-Sum και log-sp, έγκειται στην σχεδίαση του κόμβου ελέγχου(check processing unit), Συνακόλουθα, θα υπάρχουν οι αντίστοιχες αλλαγές στη μονάδα ελέγχου των CPUs (CPUs control unit). Συγκεκριμένα, τα απαιτούμενα σήματα ελέγχου θα μειωθούν σχεδόν στο μισό, κάτι που οδηγεί σε μείωση της πολυπλοκότητας της μονάδας ελέγχου. 56

Στο επόμενο σχήμα (4.4) φαίνεται το σχηματικό σε επίπεδο Register Transfer (RTL), το οποίο παράγεται από το εργαλείο XST του Xilinx-ISE, αφού περάσει από σύνθεση τον κώδικα VHDL του αποκωδικοποιητή. Πρόκειται για ένα design για z=5, επιλέξαμε μικρή τιμή του z ώστε να είναι ευδιάκριτα τα συστατικά του μέρη (πάνω αριστερά οι 5 fifos, πάνω δεξιά οι VPUs, στο κέντρο οι CPUs και στο κάτω μέρος το permutation network). Για την αναπαράσταση τόσο των LLRs όσο και των ενδιάμεσων μηνυμάτων χρησιμοποιήσαμε αριθμούς σε συμπλήρωμα του δύο, με τρία ακέραια και τρία κλασματικά ψηφία. Σχήμα 4.4 : RTL σχηματικό της αρχιτεκτονικής του LDPC αποκωδικοποιητή για z=5. 57

Στο σχήμα 4.5 μπορούμε να δούμε τις κύριες εισόδους και εξόδους του LDPC αποκωδικοποιητή μας. Από την είσοδο lchannel_gen εισέρχονται σειριακά τα 6-bit LLRs. Από την έξοδο D_out εξέρχεται σιεριακά η αποκωδικοποιημένη ακολουθία δυαδικών ψηφίων. Το σήμα Num_of_Iterations δηλώνει τον μέγιστο ρυθμό επαναλήψεων που εκτελεί ο αλγόριθμος, ενώ το Num_of_Errors_gen αναπαριστά το πλήθος των λανθασμένων δυαδικών ψηφίων. Επιπλέον, υπάρχει ένα ρολόι και δύο σήματα reset. Σχήμα 4.5 : I/O LDPC αποκωδικοποιητή. 4.2.1 Χρονοπρογραμματισμός αποκωδικοποίησης Όπως αναφέραμε στο προηγούμενο κεφάλαιο, στην ανάλυση που κάναμε για το layered decoding, η επεξεργασία σύμφωνα με αυτόν τον αλγόριθμο ξεκινά από ένα υποσύνολο των κόμβων ελέγχου και τα μηνύματα που υπολογίζονται αποστέλλονται άμεσα στους αντίστοιχους κόμβους μεταβλητής που συνδέονται με τους κόμβους ελέγχου του τρέχοντος υποσυνόλου. Η ενημέρωση των τιμών των συγκεκριμένων κόμβων μεταβλητής γίνεται άμεσα, οπότε το επόμενο υποσύνολο κόμβων ελέγχου θα λάβει τις ενημερωμένες τιμές. Ας ξαναφέρουμε στο μυαλό μας τον προτεινόμενο layered-decoding log-sp αλγόριθμο και ας υποθέσουμε πως διαθέτουμε έναν πίνακα ελέγχου ισοτιμίας με δομή αντίστοιχη του πίνακα του σχήματος 3.5. Η επεξεργασία θα εξελίσσεται γραμμή 58

γραμμή, και με δεδομένο ότι ο συγκεκριμένος πίνακας διαθέτει 12 γραμμές, μια επανάληψη του αλγορίθμου απαρτίζεται από 12 υποεπαναλήψεις, σε κάθε μία από τις οποίες λαμβάνει χώρα η επεξεργασία της αντίστοιχης γραμμής. Στο σχήμα 4.6 μπορούμε να δούμε το σχήμα χρονοπρογραμματισμού των πράξεων και της ανταλλαγής μηνυμάτων, μεταξύ των δύο τύπων επεξεργαστικών μονάδων, για μια υποεπανάληψη του αλγορίθμου. Για τον συγκεκριμένο κώδικα, όπου το degree κάθε κόμβου μεταβλητής είναι 6 ή 7, απαιτούνται 18 ή 20, αντίστοιχα, κύκλοι για την ολοκλήρωση κάθε υποεπανάληψης. Σχήμα 4.6 : Χρονοπρογραμματισμός αποκωδικοποίησης για κάθε υποεπανάληψη του αλγορίθμου. Λειτουργίες στις επεξεργαστικές μονάδες μεταβλητής (VPU) compute v2c : Για τον συγκεκριμένο κόμβο μεταβλητής, αφαιρείται από το άθροισμα του εισερχόμενου LLR και των πρότερων check2variable(c2v) μηνυμάτων (RAM_v_24), το αντίστοιχο αποθηκευμένο(στη μνήμη RAM_v_144) c2v μήνυμα (ανάκληση και αφαίρεση - fetch and subtract). 59

idle : Αδρανές. interim sum var : Αποθηκεύεται το εισερχόμενο c2v μήνυμα στην κατάλληλη θέση μνήμης (RAM_v_144) και συναθροίζεται (RAM_v_24). Λειτουργίες στις επεξεργαστικές μονάδες ελέγχου (CPU) idle : αδρανές. interim sum check : Αποθηκεύεται το εισερχόμενου v2c μήνυμα, αφού πρώτα περάσει από τη Φ, στην κατάλληλη θέση μνήμης(ram_c) και συναθροίζεται. Αποθηκεύεται το πρόσημο του εισερχόμενου μηνύματος και υπολογίζεται το γινόμενο των προσήμων. compute c2v : Αφαιρείται από το άθροισμα των v2c μηνυμάτων το αντίστοιχο v2c μήνυμα του κόμβου μεταβλητής, στον οποίο θα σταλεί το υπολογισθέν εξερχόμενο c2v μήνυμα, και υπολογίζεται το πρόσημο του συγκεκριμένου μηνύματος. Λειτουργίες στο δίκτυο διασύνδεσης (LBS) idle : αδρανές send v2c : Το επίπεδο των πολυπλεκτών καθορίζει αν θα σταλούν variable-to-check (v2c) ή check-to-variable (c2v) μηνύματα μέσω του δικτύου διασύνδεσης, δηλ. του LBS. Εδώ, μηνύματα στέλνονται από τους κόμβους μεταβλητής στους κόμβους ελέγχου. send c2v : Τα μηνύματα στέλνονται από τους κόμβους ελέγχου στους κόμβους μεταβλητής. Δεν πρέπει να ξεχνάμε πως κάθε «γραμμή» του πίνακα του σχήματος 3.5 απαρτίζεται στην πραγματικότητα από z γραμμές, κάθε μία από τις οποίες περιέχει 24 z στοιχεία. Συνεπώς, σε κάθε κύκλο ρολογιού λειτουργούν παράλληλα z επεξεργαστικές μονάδες. Γίνεται αντιληπτό πως αύξηση του z, επιφέρει μείωση του αριθμού των απαιτούμενων κύκλων ρολογιού για την ολοκλήρωση μιας επανάληψης του αλγορίθμου, για συγκεκριμένων διαστάσεων κώδικα. Ως επακόλουθο, όμως, έχουμε αύξηση των απαιτήσεων σε επιφάνεια. 60

Στο επόμενο σχήμα (4.7) απεικονίζεται το γενικό σχήμα του χρονοπρογραμματισμού της αποκωδικοποίησης που εκτελεί η αρχιτεκτονικής μας. Χρησιμοποιούμε έναν 1152 2304, rate ½, WiMax 802.16 LDPC κώδικα και z = 96. Σε έναν τέτοιο κώδικα, κάθε κωδική λέξη των 2304 bits, περιέχει 1152 bits πληροφορίας (information bits) και 1152 bits ισοτιμίας (parity bits). Η διαδικασία αποκωδικοποίησης μπορεί να χωριστεί σε δύο διαδοχικά στάδια, στο στάδιο φόρτωσης των LLRs στις z fifos εισόδου (LOAD) και στο στάδιο αποκωδικοποίησης της κωδικής λέξης (decoding). Το πρώτο στάδιο απαιτεί 2304 κύκλους ρολογιού για να ολοκληρωθεί, εφόσον τα δεδομένα εισέρχονται σειριακά από την είσοδο lchannel_gen. Στη συνέχεια, εισερχόμαστε στο στάδιο της αποκωδικοποίησης, όπου λαμβάνει χώρα ανταλλαγή μηνυμάτων μεταξύ των VPUs και CPUs. Όπως φαίνεται στο σχήμα, έχουμε θεωρήσει σταθερό αριθμό επαναλήψεων ίσο με 10. Κάθε μία από αυτές, όπως αναφέρθηκε, αποτελείται από 12 υποεπαναλήψεις, σαν αυτή που περιγράψαμε στο σχήμα 4.6. Απαιτούνται συνολικά 2240 κύκλοι ρολογιού για την ολοκλήρωση του δεύτερου σταδίου. Η δομή της αρχιτεκτονικής μας είναι τέτοια ώστε να είναι εφικτή η επικάλυψη του σταδίου αποκωδικοποίησης της τρέχουσας κωδικής λέξης με αυτό της φόρτωσης της επόμενης. Μετά το τέλος της πρώτης επανάληψης της αποκωδικοποίησης είναι δυνατή η εγγραφή των νέων LLRs στις fifos. Το χαρακτηριστικό αυτό, επιφέρει μείωση της καθυστέρησης (latency) αποκωδικοποίησης, για μια μεγάλη ακολουθία δυαδικών ψηφίων, περίπου στο μισό της καθυστέρησης που θα είχαμε αν η διαδικασία ήταν πλήρως σειριακή. Επομένως, η ρυθμαπόδοση (throughput) σχεδόν διπλασιάζεται. Στο σχήμα 4.7 μπορούμε να δούμε μια τέτοια ανάλυση σχετικά με τους απαιτούμενους κύκλους ρολογιού, το latency και το throughput της αρχιτεκτονικής μας. 61

Σχήμα 4.7 : Γενικό σχήμα χρονοπρογραμματισμού αποκωδικοποίησης. 62

4.2.2 Variable Processing Unit Στο σχήμα 4.8 αναπαρίσταται η αρχιτεκτονική της variable processing μονάδας (VPU) του LDPC αποκωδικοποιητή μας. Χρησιμοποιείται κοινή αρχιτεκτονική για τον κόμβο μεταβλητής, τόσο για τον log-sp layered-decoding όσο και για τον Min-Sum layered-decoding αλγόριθμο. Στην ενότητα 4.2.1 αναφερθήκαμε στις βασικές λειτουργίες που λαμβάνουν χώρα στην VPU. Θα αναφερθούμε στα σήματα ελέγχου που ρυθμίζουν τη λειτουργία της VPU σε επόμενη ενότητα. Οι μνήμες RAM_v_144 και RAM_v_24, αντιστοιχούν στις μνήμες RAM_d_144 και RAM_d_24 του σχήματος 4.8. Πρόκειται για κατανεμημένες (distributed) μνήμες των 144 και 24 θέσεων, αντίστοιχα. Κάθε θέση μνήμης είναι των n bits, όπου n το μήκος λέξης των ανταλλασσόμενων μηνυμάτων Η πρώτη χωρίζεται σε 24 banks των 6 θέσεων. Συνεπώς μπορεί να υποστηρίξει κώδικες με μέγιστο βαθμό για τους κόμβους μεταβλητής d u = 6. Ο 1152 2304, rate ½, WiMax 802.16 LDPC κώδικας που χρησιμοποιούμε διαθέτει κόμβους μεταβλητής με degree 2, 3 και 6. Στη μνήμη RAM_d_24 αποθηκεύονται οι ενημερωμένες εκτιμήσεις για το αντίστοιχο bit της κωδικής λέξης. Στη θέση k (κ 0 23) της μνήμης RAM_d_24 της i-οστής VPU (i 0 z), αποθηκεύεται η πληροφορία για τα το δυαδικό ψηφίο z k + i. 63

Σχήμα 4.8 : Αρχιτεκτονική κόμβου μεταβλητής (VPU). 64

4.2.3 Check Processing Unit Στο σχήμα 4.9 αναπαρίσταται η αρχιτεκτονική της check processing μονάδας (CPU) του LDPC αποκωδικοποιητή μας για τον log-sp layered-decoding αλγόριθμο. Στην ενότητα 4.2.1 αναφερθήκαμε στις βασικές λειτουργίες που λαμβάνουν χώρα στην CPU. Θα αναφερθούμε στα σήματα ελέγχου που ρυθμίζουν τη λειτουργία της CPU σε επόμενη ενότητα. Οι μνήμη RAM_c, που αναφέραμε στην ενότητα 4.2.1, αντιστοιχεί στη μνήμη RAM_d_8 του σχήματος 4.9. Πρόκειται για κατανεμημένη (distributed) μνήμη των 8 θέσεων, η οποία δύναται να υποστηρίξει κώδικες με μέγιστο βαθμό για τους κόμβους ελέγχου d c = 8. Ο κώδικας που χρησιμοποιούμε διαθέτει κόμβους ελέγχου με degree 6 και 7. Η συνάρτηση Φ υλοποιήθηκε με τη χρήση μνημών (Look-Up Tables). Προκειμένου να μειωθεί το latency του αποκωδικοποιητή, σχεδιάστηκαν ποικίλες αρχιτεκτονικές κόμβου ελέγχου, με δεδομένο ότι το κρίσιμο μονοπάτι του συνολικού design βρισκόταν, αρχικά, στους κόμβους αυτού του τύπου. Συγκεκριμένα, τη συνολική καθυστέρηση του κρίσιμου μονοπατιού συνθέτουν οι καθυστερήσεις στην έξοδο της RAM, στον αθροιστή adder_carry_sel, στη Φ, στον πολυπλέκτη και την είσοδο του καταχωρητή Reg_out. Ας αναφέρουμε δύο βασικά βήματα που έγιναν προς την κατεύθυνση της μείωσης της καθυστέρησης στον κόμβο ελέγχου. Αρχικά, υπήρχε ένας μόνο αθροιστής και ένας επιπλέον πολυπλέκτης. Ο πολυπλέκτης αντικαταστάθηκε από έναν ακόμα αθροιστή (Adder2) και ο κρίσιμος αθροιστής (adder_carry_sel) υλοποιήθηκε ως carry select αθροιστής, ο οποίος είναι ταχύτερος. Επιπλέον, η Φ και η βαθμίδα επιλογής πρόσημου, αντικαταστάθηκαν από μία Φ και μία -Φ, τοποθετημένες παράλληλα, ακολουθούμενες από έναν πολυπλέκτη ο οποίος επιλέγει μία από τις τιμές f_out και f_out_inv, ανάλογα με την τιμή του σήματος XOR_out2. Το αποτέλεσμα ήταν αύξηση της απαιτούμενης επιφάνειας, αλλά και σημαντική μείωση της καθυστέρησης. Συγκεκριμένα, να αναφέρουμε πως εξομοιώσεις σε fpga Virtex 4-XC4VSX35-12FF668 έδειξαν πως επιτύχαμε να μειώσουμε την καθυστέρηση κατά 20%. Το κόστος που καλούμαστε να πληρώσουμε είναι η αύξηση της απαιτούμενης επιφάνειας. Σε επίπεδο χρησιμοποίησης slices, η αύξηση είναι της τάξης του 11%, ενώ σε επίπεδο LUTs, φθάνει το 25%, εξαιτίας της διπλής Φ στην έξοδο. Όπως θα δούμε και στο επόμενο κεφάλαιο, η πρώτη μετρική(slices) είναι η κρίσιμη. Γενικά, συνεχώς βρισκόμαστε αντιμέτωποι με το trade-off μεταξύ απαιτούμενης επιφάνειας (area) και 65

Σχήμα 4.9 : Αρχιτεκτονική κόμβου ελέγχου (CPU) για Log-SP. 66

ταχύτητας αποκωδικοποίησης-καθυστέρησης σε κάθε σχεδιαστική προσέγγιση που επιλέγουμε να ακολουθήσουμε. Ο δρόμος που θα ακολουθήσουμε, σε κάθε περίπτωση, εξαρτάται από τις σχεδιαστικές προδιαγραφές που έχουμε θέσει και τις απαιτήσεις που θέλουμε να ικανοποιήσουμε. Επίσης, ο τύπος του fpga στο οποίο γίνονται οι εξομοιώσεις μας και τα ιδιαίτερα χαρακτηριστικά του (μέγιστη συχνότητα ρολογιού, διαθέσιμοι πόροι σε επιφάνεια) καθορίζουν σε μεγάλο βαθμό τα αποτελέσματα των μετρήσεων μας. H αρχιτεκτονική της CPU για τον Min-Sum layered-decoding αλγόριθμο διαφέρει από την αντίστοιχη του Log-SP (σχήμα 4.10). Τόσο η Φ όσο και οι αθροιστές απουσιάζουν, καθώς και η 8 θέσεων μνήμη RAM των n bits, όπου n το μήκος λέξης των ανταλλασσόμενων μηνυμάτων. Η μνήμη RAM_d_8 είναι μια 8 θέσεων μνήμη του ενός bit, για την αποθήκευση των προσήμων των v2c μηνυμάτων. Οι καταχωρητές R_M και R_M2 χρησιμοποιούνται για την αποθήκευση του μικρότερου και του αμέσως μεγαλύτερου μηνύματος. Αντί για αθροίσεις έχουμε συγκρίσεις (c1, c2). Τέλος, έχει προστεθεί συνδυαστική λογική (πύλες AND, OR, XOR) για τον υπολογισμό κάποιων σημάτων ελέγχου. Όπως θα δούμε και στο επόμενο κεφάλαιο, η πολυπλοκότητα της μονάδας ελέγχου για τον Min-Sum layered-decoding αλγόριθμο απαιτεί λιγότερους πόρους σε επιφάνεια, ενώ παρουσιάζει και μικρότερης καθυστέρησης κρίσιμο μονοπάτι, σε σχέση με την αντίστοιχη υλοποίηση για Log-SP layered-decoding. 67

Σχήμα 4.10 : Αρχιτεκτονική κόμβου ελέγχου (CPU) για Min-Sum. 68

4.2.4 Permutation Network Όπως αναφέρθηκε, το δίκτυο διασύνδεσης (permutation network), το οποίο παρεμβάλλεται μεταξύ των δύο τύπων επεξεργαστικών μονάδων, υλοποιείται με τη βοήθεια ενός Logarithmic Barrel Shifter (LBS). Η δομή των υποπινάκων z z είναι τέτοια (ολισθημένοι μοναδιαίοι), που μας οδηγεί στη συγκεκριμένη επιλογή. Στο επόμενο σχήμα (4.11) φαίνεται ένα τέτοιο 4 4 δίκτυο. Σχήμα 4.11 : Permutation network 4 εισόδων / εξόδων. Αποτελείται από ένα δίκτυο πολυπλεκτών. Αν έχουμε Ν εισόδους/εξόδους, τότε ο συνολικός αριθμός των στρωμάτων των πολυπλεκτών (σταδίων) ισούται με log2 N. Ο πολυπλέκτης i (i 0 N-1) του σταδίου k (κ 0 log2 N 1), δέχεται σαν εισόδους τις εξόδους των πολυπλεκτών i και mod(i+s, N) του αμέσως προηγούμενου σταδίου, όπου s=2 k. Το Ν ταυτίζεται με το γνωστό μας z. Έστω ότι έχουμε z = 6. Τα απαιτούμενα στάδια πολυπλεκτών είναι log2 z = 3. Αν αναπαραστήσουμε τον συντελεστή ολίσθησης στο δυαδικό σύστημα (π.χ. 4 100) και χρησιμοποιήσουμε το λιγότερο σημαντικό bit ως σήμα ελέγχου(sel_mux) του σταδίου 0 των πολυπλεκτών, το δεύτερο λιγότερο σημαντικό ως σήμα ελέγχου του σταδίου 1, κ.ο.κ., τότε το permutation network θα υλοποιεί την επιθυμητή 69

συνδεσμολογία μεταξύ κόμβων μεταβλητής(είσοδοι) και ελέγχου(έξοδοι). Για παράδειγμα, αν έχουμε συντελεστή ολίσθησης ίσο με 2 (2 010), το δεξιά κυκλικά ολισθημένο μητρώο είναι το ακόλουθο: Σε αυτό, η είσοδος 0 συνδέεται με την έξοδο 4, η είσοδος 1 με την έξοδο 5, κ.ο.κ. Αν επιλέξουμε τα σήματα ελέγχου με τον τρόπο που μόλις αναφέραμε, παρατηρούμε στο επόμενο σχήμα πως επιτυγχάνουμε την επιθυμητή διασύνδεση. Σχήμα 4.12 : Permutation network 6 εισόδων / εξόδων. 70

Για z = 96, που είναι η τιμή που μας ενδιαφέρει περισσότερο, απαιτούνται log2 z = 7 στάδια πολυπλεκτών. Αυτό έχει ως επακόλουθο την εμφάνιση κρίσιμου μονοπατιού στο δίκτυο διασύνδεσης. Για να σπάσει το μονοπάτι αυτό στα δυο, εφαρμόσαμε τεχνική pipelining, με την τοποθέτηση ενός στρώματος καταχωρητών μεταξύ τρίτου και τέταρτου στρώματος πολυπλεκτών. Με αυτό τον τρόπο, καταφέραμε να μειώσουμε κατά περίπου 50% την καθυστέρηση στο δίκτυο διασύνδεσης, με μια μικρή αύξηση του απαιτούμενου υλικού(στρώμα καταχωρητών). Η βασισμένη στο δίκτυο διασύνδεσης, που μόλις παρουσιάσαμε, αρχιτεκτονική LDPC αποκωδικοποιητή προσφέρει μεγάλη ευελιξία. Στην περίπτωση που θέλουμε να στείλουμε c2v μηνύματα, μεταξύ κόμβων ελέγχου και μεταβλητής, αρκεί ως σήματα ελέγχου των πολυπλεκτών να χρησιμοποιήσουμε, αυτή τη φορά, τα bits της δυαδικής αναπαράστασης της τιμή z-pf (pf: συντελεστής ολίσθησης), με ανάλογο τρόπο. Με βάση το προηγούμενο παράδειγμα, η τιμή αυτή θα είναι 6-2 = 4 (100). Όπως αναφέρθηκε, το επίπεδο των πολυπλεκτών που αναπαρίσταται στο σχήμα 4.3, θα είναι αυτό που θα καθορίσει ποιες θα είναι οι είσοδοι και οι έξοδοι του LBS δικτύου, επομένως και το αν θα σταλούν variable-to-check(v2c) ή check-to-variable(c2v) μηνύματα. 4.2.5 Μονάδα ελέγχου Η αρχιτεκτονική του αποκωδικοποιητή διαθέτει τρεις μονάδες ελέγχου (CPU, VPU και LBS control unit). Κάθε μία από αυτές υλοποιείται ως μηχανή πεπερασμένων καταστάσεων (fsm - finite state machine). Στο σχήμα 3.3 του προηγούμενου κεφαλαίου παρουσιάσαμε έναν τύπο πίνακα βάσης, για μήκος κωδικής λέξης Ν=2304, μέγεθος z = 96 και rate κώδικα R=½. Ο πίνακας αυτός περιέχει την απαιτούμενη πληροφορία για την απόδοση των σωστών τιμών στα σήματα ελέγχου που ρυθμίζουν τη λειτουργία του αποκωδικοποιητή. Το σύνολο των σημάτων ελέγχου που βρίσκονται στις εξόδους μιας μονάδας ελέγχου, σε κάθε κύκλο ρολογιού, ορίζουν την κατάσταση (state) λειτουργίας της αντίστοιχης υπό έλεγχο επεξεργαστικής μονάδας, στο συγκεκριμένο κύκλο ρολογιού, είτε αυτή είναι κόμβος μεταβλητής, κόμβος ελέγχου ή το δίκτυο διασύνδεσης(lbs). Ο VHDL κώδικας για την υλοποίηση των μονάδων ελέγχου παράγεται με τη βοήθεια Matlab κώδικα που αναπτύχθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας. Προκειμένου να χρησιμοποιήσουμε με αποδοτικό τρόπο την πληροφορία που περιέχεται στον πίνακα βάσης του κώδικα, μετασχηματίζουμε την πληροφορία αυτή στα 3 ακόλουθα μητρώα. 71

H LBS H LBS : μητρώο διαστάσεων Ν 2, όπου Ν = i= 1...12 RAM _ c( i). Στην πρώτη στήλη αποθηκεύεται ο παράγοντας ολίσθησης και στη δεύτερη ο αριθμός του κόμβου μεταβλητής στον οποίο αναφέρεται. Επομένως, για z=96 και Ν=2304, H LBS (i,1) 0 95 και H LBS (i,2) 0 23. Ram_v : διάνυσμα 1 24, στη θέση j του οποίου αποθηκεύεται ο βαθμός (degree) της j-οστής στήλης του πίνακα ελέγχου ισοτιμίας. Ram_c : διάνυσμα 1 12, στη θέση i του οποίου αποθηκεύεται ο βαθμός της i-οστής γραμμής του πίνακα ελέγχου ισοτιμίας. 72

Στο σχήμα 4.13 παραθέτουμε τα σήματα ελέγχου όλων των control units, για κάθε γραμμή i (i 0 12) του πίνακα ελέγχου ισοτιμίας. Στην ουσία, πρόκειται για όλα τα σήματα ελέγχου της αρχιτεκτονικής του αποκωδικοποιητή για μια υποεπανάληψη του αλγορίθμου. Όπως αναφέραμε, κάθε επανάληψη του αλγορίθμου αποτελείται από 12 τέτοιες υποεπαναλήψεις, κάθε μία από τις οποίες διαρκεί 18 ή 20 κύκλους, ανάλογα με τον βαθμό της αντίστοιχης γραμμής του πίνακα H. Με αστερίσκους έχουν σημειωθεί κάποια σήματα που παρουσιάζουν ιδιαίτερη συμπεριφορά ανάλογα με την επανάληψη ή την υποεπανάληψη στην οποία βρίσκεται η διαδικασία αποκωδικοποίησης. Ακολουθούν κάποια βασικά χαρακτηριστικά των σημάτων ελέγχου: Η VPU μονάδα ελέγχου έχει 20 bits λέξη ελέγχου (control word). Η LBS μονάδα ελέγχου έχει 7 bits λέξη ελέγχου. Η CPU μονάδα ελέγχου έχει 10 bits λέξη ελέγχου. για i=1, pos(i)=1 για i 2, pos(i)=pos(i-1)+ram_c(i-1) Απαιτούνται 24 VPU μετρητές (σε επίπεδο matlab προγράμματος για την παραγωγή του VHDL κώδικα) για τον προσδιορισμό της κατάλληλης θέσης στη μνήμη RAM_v_144, στην οποία θα γραφεί το εισερχόμενο c2v μήνυμα: VPU_counter_ j 0 n j, όπου n j = RAM_v(j) (2, 3 ή 6) και j 1...24. Η μνήμη RAM_v_144 (ή RAM_d_144) είναι 144 θέσεων, οπότε απαιτούνται 8 bits για την αναπαράσταση της αντιστοιχης διεύθυνσης address_ram_v_144, η οποία προκύπτει από την σχέση : *** 6 H LBS (pos(i),2) + VPU_counter_H LBS (pos(i),2) (ctrl_v(19 downto 12)) Η μνήμη RAM_v_24 (ή RAM_d_24) είναι 24 θέσεων, οπότε απαιτούνται 5 bits για την αναπαράσταση της διεύθυνσης address_ram_v_24. Η μνήμη RAM_c (ή RAM_d_8) είναι 8 θέσεων, οπότε απαιτούνται 3 bits για την αναπαράσταση της διεύθυνσης address_ram_c. * Στην πρώτη επανάληψη, η μνήμη RAM_v_144 είναι άδεια, δηλαδή c2v = 0 (WE_144 = 1, Mux_1add_sel = 0, reset_v = 1). 73

Σχήμα 4.13 : Σήματα ελέγχου του LDPC αποκωδικοποιητή για log-sp layered decoding. 74

** Στoν πρώτο υπολογισμό του συγκεκριμένου κόμβου μεταβλητής, στην πρώτη επανάληψη του αλγορίθμου, φορτώνεται το αντίστοιχο LLR για αυτόν τον κόμβο (Mux_2add_sel = 0). Όπως αναφέραμε, η βασική διαφορά μεταξύ των δύο υλοποιήσεων του layered decoding αλγόριθμου, για Min-Sum και log-sp, έγκειται στην σχεδίαση του κόμβου ελέγχου (check processing unit), και συνακόλουθα, της μονάδας ελέγχου των CPUs (CPUs control unit). Τα σήματα ελέγχου της CPU μονάδας ελέγχου απεικονίζονται στο επόμενο σχήμα. Απαιτούνται μόνο 6 bits, 40% λιγότερα από την log-sp υλοποίηση. Σχήμα 4.14 : Σήματα ελέγχου της CPU μοναδας ελέγχου για log-sp layered decoding. 75

76

Κεφάλαιο 5 Ροή Σχεδίασης (Design Flow) Ο όρος ροή σχεδίασης (design flow) δηλώνει τη συνδυασμένη χρήση εργαλείων αυτοματοποιημένης ηλεκτρονικής σχεδίασης, κατά τη διαδικασία σχεδιασμού ενός ολοκληρωμένου κυκλώματος. Στο σχήμα 6.1 αναπαρίσταται το design flow της σχεδίασης αρχιτεκτονικών αποκωδικοποιητών VLSI για κώδικες LDPC, που αποτέλεσε το αντικείμενο της παρούσας διπλωματικής εργασίας. Επιπλέον, στον πίνακα 5 υπάρχουν κατηγοριοποιημένα όλα τα εργαλεία λογισμικού που χρησιμοποιήθηκαν κατά τη διάρκεια της διαδικασίας ανάπτυξης. Το σύστημα που κληθήκαμε να σχεδιάσουμε και να υλοποιήσουμε είναι ένας αποδοτικός - σε επίπεδο ταχύτητας, ποιότητας αποκωδικοποίησης (χαμηλός ρυθμός εμφάνισης σφαλμάτων - BER) και επιφάνειας ολοκλήρωσης - LDPC αποκωδικοποιητής. Η επιλογή συγκεκριμένου αλγορίθμου αποκωδικοποίησης καθώς και ενός σχήματος χρονοδρομολόγησης των ανταλλασσόμενων μηνυμάτων, οδήγησε στη σχεδίαση συγκεκριμένης αρχιτεκτονικής σε υλικό. Παρουσιάσαμε δύο παραλλαγές αυτής της αρχιτεκτονικής, μία για τον Log-SP και μία για τον Min-Sum layered-decoding αλγόριθμο. Περιγραφή σε Υλικό Με τη βοήθεια του εργαλείου Matlab γράφηκαν παραμετρικά scripts για την παραγωγή του VHDL κώδικα. Οι δύο βασικές παράμετροι που χρησιμοποιήθηκαν ήταν το πλήθος z των επεξεργαστικών μονάδων (CPUs, VPUs) και το μήκος λέξης n για 77

Σχήμα 5.1 : Design Flow LDPC αποκωδικοποιητή. τα ανταλλασσόμενα μηνύματα. Με βάση τις προδιαγραφές που έχουμε θέσει, μπορούμε να μεταβάλλουμε ανάλογα τις δύο αυτές παραμέτρους. Για παράδειγμα, μεγάλο z αυξάνει τον βαθμό παραλληλίας της αρχιτεκτονικής, με συνακόλουθη αύξηση της ταχύτητας αποκωδικοποίησης, αλλά και της απαιτούμενης επιφάνειας. Αύξηση του n, επιφέρει μείωση του BER, αλλά οδηγεί, και πάλι, σε αύξηση της επιφάνειας ολοκλήρωσης. Τα scripts αυτά αποτέλεσαν ένα πολύ χρήσιμο εργαλείο κατά τη διαδικασία ανάπτυξης και βελτιστοποίησης της αρχιτεκτονικής, δίνοντας μας τη δυνατότητα να παράγουμε με αυτοματοποιημένο και γρήγορο τρόπο τον VHDL κώδικα για τις επιμέρους μονάδες του αποκωδικοποιητή. 78

Μετά τη συγγραφή του VHDL κώδικα, μπορούμε να τρέξουμε Behavioral εξομοιώσεις, είτε στον ISE Simulator είτε στο Modelsim (Σχήμα 6.2)., χρησιμοποιώντας κατάλληλα testbenches. Αυτό αποτελεί ένα πρώτο βήμα της διαδικασίας επαλήθευσης και εκσφαλμάτωσης (debugging) του κώδικα. Στη συνέχεια, ο VHDL κώδικας περνάει από σύνθεση με τη βοήθεια του εργαλείου XST του Xilinx ISE, και παράγεται το RTL (Register Transfer Level) σχηματικό της αρχιτεκτονικής. Επιπλέον, παράγεται μια αναφορά (report) με στοιχεία για τις καθυστερήσεις, τη χρησιμοποίηση των πόρων του FPGA και τυχών σφάλματα που ανιχνεύτηκαν στην αρχιτεκτονική μας. Παραγωγή VHDL κώδικα Δημιουργία Bit True Μοντέλου Matlab 7.0.4 (R14) Matlab 7.0.4 (R14) Σύνθεση Υλοποίηση Παραγωγή Binaries Προγραμματισμός του board Xilinx ISE 9.1 Matlab 7.0.4 (R14) Xilinx System Generator 7.1 Simulink 6.2 Εξομοιώσεις / Επαλήθευση Matlab 7.0.4 (R14) Xilinx ISE 9.1 Simulator Modelsim XE III / Starter 6.2c ChipScope Pro 9.1 Πίνακας 2: Λογισμικό που χρησιμοποιήθηκε στα επιμέρους βήματα σχεδίασης του αποκωδικοποιητή. 79

Ακολουθεί η υλοποίηση (translate, map, place & route) της αρχιτεκτονικής μας, με παραγωγή αντίστοιχων reports, και η εκτέλεση post-route εξομοιώσεων. Η έκδοση του Xilinx ISE simulator που ήταν διαθέσιμη κρίθηκε ανεπαρκής για post-route εξομοιώσεις, οπότε χρησιμοποιήθηκε μόνο το Modelsim. Εφόσον, δεν υπάρχουν λάθη και η αρχιτεκτονική επιτελεί την επιθυμητή λειτουργία, παράγουμε το binary αρχείο, το οποίο στη συνέχεια φορτώνεται στο FPGA με τη βοήθεια του εργαλείου impact του ISE. Με χρήση του ChipScope Pro μπορούμε να δούμε τα αποτελέσματα της αποκωδικοποίησης που επιτυγχάνει η αρχιτεκτονική αποκωδικοποιητή που έχουμε κατεβάσει στο FPGA (Σχήμα 6.3). Αυτό που μας ενδιαφέρει πρωτίστως είναι η τιμή του BER (Bit Error Rate). Όπως φαίνεται και από τα σχήματα 6.2 και 6.3, η λειτουργικότητα της VHDL περιγραφής της αρχιτεκτονικής του αποκωδικοποιητή, πριν ακόμα περάσει από Σύνθεση, και του πλήρως υλοποιημένου σε FPGA μοντέλου, είναι όμοιες. Αυτός ήταν ο βασικός στόχος της παρούσας διπλωματικής, η υλοποίηση, δηλαδή, σε υλικό ενός αποκωδικοποιητή LDPC. Περιγραφή σε Λογισμικό Εκτός από την περιγραφή και υλοποίηση της αρχιτεκτονικής μας σε υλικό, αναπτύξαμε μια αντίστοιχη περιγραφή της σε λογισμικό. Συγκεκριμένα, σε περιβάλλον matlab, είμαστε σε θέση να κατασκευάζουμε το «bit true» μοντέλο της εκάστοτε αρχιτεκτονικής μας, και να το χρησιμοποιήσουμε για εξομοιώσεις που μετράνε το BER του αποκωδικοποιητή μας, καθώς και ως μέσο εκσφαλμάτωσης και επαλήθευσης της ορθής λειτουργίας του. Αφενός, διαθέτουμε, έτσι, ένα αξιόπιστο εργαλείο για την μέτρηση της απόδοσης διαφόρων παραλλαγών αρχιτεκτονικής αποκωδικοποιητή, το οποίο μας βοηθά να πάρουμε αποφάσεις σχετικά με σχεδιαστικές παραμέτρους, όπως είναι η αριθμητική αναπαράσταση των δεδομένων. Αφετέρου, αποτελεί ένα μέσο παραγωγής testbenches, για την επαλήθευση των αποτελεσμάτων που παράγει η υλοποίηση σε υλικό, αλλά και ανίχνευσης των σχεδιαστικών παραλείψεων που επιφέρουν εσφαλμένη λειτουργία του αποκωδικοποιητή. 80

Σχήμα 5.2 : Αποτελέσματα εξομοιώσεων του VHDL κώδικα, σε περιβάλλον Modelsim. 81

Σχήμα 5.3 : Αποτελέσματα μετρήσεων, σε FPGA Virtex-4 SX35, με χρήση του ChipScope της Xilinx. 82

Μια κάπως διαφορετική μεθοδολογία που μπορούμε να ακολουθήσουμε είναι να παράξουμε το.bit binary αρχείο, το οποίο στη συνέχεια φορτώνουμε στο FPGA, με χρήση του System Generator της Xilinx. Πρόκειται για ένα εργαλείο μοντελοποίησης και υλοποίησης DSP συστημάτων, το οποίο προσαρτάται σε περιβάλλον Matlab και συνεργάζεται με το Simulink. Σχήμα 5.4 : Μοντέλο σε Xilinx System Generator. Στο σχήμα 6.2 μπορούμε να δούμε ένα μοντέλο που κατασκευάσαμε με τη βοήθεια του System Generator. Απαρτίζεται από blocks της Xilinx, του Simulink και ένα block που αναπτύχθηκε στο εργαστήριο ως μοντέλο του αποκωδικοποιητή LDPC. Με χρήση του Black Box μπορούμε να εισαγάγουμε τον VHDL κώδικα του αποκωδικοποιητή μας. Υπάρχει ειδικό μπλοκ της Xilinx που παράγει Λευκό Προσθετικό Gaussian Θόρυβο (AWGN). Με τα μπλοκ Gateway In και Gateway Out μπορούμε να ορίσουμε συγκεκριμένους ακροδέκτες του FPGA σαν εισόδους / εξόδους του design μας. Τέλος, υπάρχει το μπλοκ ChipScope το οποίο εισάγει ICON και ILA πυρήνες στο μοντέλο μας. 83

Με χρήση του μπλοκ System Generator (πάνω αριστερά) ορίζουμε παραμέτρους - όπως είναι ο τύπος του FPGA το οποίο θα προγραμματίσουμε, η γλώσσα περιγραφής hardware (VHDL, Verilog), το εργαλείο σύνθεσης (π.χ. XST), ο ακροδέκτης του ρολογιού του FPGA, κτλ. σε ένα αναδυόμενο παράθυρο αντίστοιχο με αυτό που απεικονίζεται στα αριστερά της εικόνας. Στο κάτω μέρος φαίνεται το παράθυρο στο οποίο ορίζουμε τις παραμέτρους του μπλοκ Gateway In (πχ ορίζουμε σαν ακροδέκτη εισόδου τον R20 για το σήμα εισόδου reset). Κατά τη διαδικασία υλοποίησης του μοντέλου που κατασκευάσαμε, o System Generator καλεί το εργαλείο ISE, το οποίο εκτελεί αυτόματα τις λειτουργίες που περιγράψαμε παραπάνω (σύνθεση, υλοποίηση, παραγωγη binaries). 5.1 Αναπτυξιακό σύστημα Virtex 4 SX35 (ML 402) Ακολουθεί μια σύντομη παρουσίαση του αναπτυξιακού συστήματος, το οποίο χρησιμοποιήθηκε στο εργαστήριο κατά τη διαδικασία σχεδίασης, υλοποίησης και βελτιστοποίησης του αποκωδικοποιητή, καθώς και κατά την εκτέλεση των πειραμάτων. Στο σχήμα 6.3 απεικονίζεται το μπλοκ διάγραμμα του συγκεκριμένου αναπτυξιακού συστήματος, το οποίο χρησιμοποιεί Virtex4_XC4VSX35_ff668 FPGA. 84

Σχήμα 5.5 : Μπλοκ διάγραμμα του αναπτυξιακού Virtex-4 ML402. Στα δύο επόμενα σχήματα απεικονίζονται λεπτομερώς τα συστατικά μέρη ενός αναπτυξιακού συστήματος Virtex-4 ML402. 1) Virtex-4 FPGA : XC4VSX35-FF668. 2) DDR SDRAM : 64 MB DDR SDRAM, 32-bit data bus στα 266 MHz. Μπορεί να υποστηρίξει επεκτάσεις μέχρι και 1-Gb DDR. 3) Differential Clock Input And Output With SMA Connectors 4) Oscillator Sockets : 1 100MHz SYSCLK, 1 USERCLK. 5) LCD Brightness and Contrast Adjustment 6) DIP Switches (Active-High) : 8 γενικού σκοπού διακόπτες. 85

Σχήμα 5.6 : Λεπτομερής απεικόνιση των συστατικών μερών ενός αναπτυξιακού συστήματος Virtex-4 ML402 (Εμπρός όψη). 7) User and Error LEDs (Active-High) : 11 active-high LEDs. 8) User Push Buttons (Active-High) 9) CPU Reset Button (Active-Low) 10) Expansion Headers 11) Stereo AC97 Audio Codec 12) RS-232 Serial Port 13) 16-Character x 2-Line LCD 14) IIC Bus with 4-Kb EEPROM 15) VGA Output 86

16) PS/2 Mouse and Keyboard Ports 17) System ACE and CompactFlash Connector 18) ZBT Synchronous SRAM Σχήμα 5.7 : Λεπτομερής απεικόνιση των συστατικών μερών ενός αναπτυξιακού συστήματος Virtex-4 ML402 (Πίσω όψη). 19) Linear Flash Chips 20) Xilinx XC95144XL CPLD 21) 10/100/1000 Tri-Speed Ethernet PHY 22) USB Controller with Host and Peripheral Ports 23) Xilinx XCF32P Platform Flash Configuration Storage Device 24) JTAG Configuration Port 87

25) Onboard Power Supplies 26) AC Adapter and Input Power Switch/Jack 27) Power Indicator LED 28) INIT LED 29) DONE LED 30) Program Switch 31) Configuration Address and Mode DIP Switches 32) Encryption Key Battery 33) Configuration Source Selector Switch 88

Σχήμα 5.8 : Αναπτυξιακό σύστημα Virtex4_XC4VSX35_ff668, σε λειτουργία, στο εργαστήριο μας. 89

90

Κεφάλαιο 6 Υλοποίηση σε FPGA και αποτελέσματα εξομοιώσεων Για την υλοποίηση (synthesis and implementation) της αρχιτεκτονικής που μόλις περιγράψαμε, χρησιμοποιήσαμε τρεις τύπους FPGA (Spartan3_XC3S5000_-5fg900, Virtex5_XC5VLX330_-2ff1760, Virtex4_XC4VSX35_-12FF668). Οι μετρήσεις μας επικεντρώθηκαν στην διερεύνηση των απαιτήσεων σε επιφάνεια ολοκλήρωσης και της μέγιστης δυνατής ταχύτητας αποκωδικοποίησης που μπορεί να επιτύχει η προτεινόμενη αρχιτεκτονική. Τα αποτελέσματα που προέκυψαν, σε επίπεδο απαιτήσεων επιφάνειας, απεικονίζονται στα σχήματα 5.1, 5.3, 5.5 και 5.6. Για τους πρώτους δύο τύπους FPGA τα αποτελέσματα αναφέρονται στην υλοποίηση του log-sp layered decoding, ενώ για το Virtex 4, υπάρχουν επιπλέον στοιχεία και για την υλοποίηση του Min-Sum layered decoding, η οποία είναι λιγότερο απαιτητική σε επιφάνεια ολοκλήρωσης (area). Το συγκεκριμένο FPGA (Virtex4_XC4VSX35), ήταν αυτό το οποίο χρησιμοποιήθηκε ως αναπτυξιακό σύστημα, στο εργαστήριο, για την υλοποίηση και βελτιστοποίηση του αποκωδικοποιητή, και την εκτέλεση των πειραμάτων. Πραγματοποιήθηκαν εξαντλητικές εξομοιώσεις όσον αφορά την ταχύτητα αποκωδικοποίησης. Μας ενδιαφέρει να διερευνήσουμε το πώς αυτή μεταβάλλεται για τους διάφορους τύπους FPGA, και για τις δύο παραλλαγές του αλγορίθμου αποκωδικοποίησης που παρουσιάσαμε. Επιπλέον, στα σχήματα 5.2, 5.4 και 5.7, απεικονίζεται το routed design που προκύπτει στον Xilinx FPGA Editor, όπου φαίνεται η υλοποίηση σε κάθε ένα από τα τρία FPGAs. 91

Οι μετρήσεις έγιναν για μια αρχιτεκτονική αποκωδικοποιητή με μήκη λέξης n=6 (3 ακέραια και 3 κλασματικά ψηφία), για τα LLRs και τα ανταλλασσόμενα μηνύματα, και για πλήθος κόμβων z=96. Αυτό μεταφράζεται σε αποκωδικοποίηση κώδικα με κωδική λέξη των 2304 ψηφίων. Οι τιμές έχουν αναπαρασταθεί σε συμπλήρωμα του 2. Σχήμα 6.1 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Spartan 3 - XC3S5000, για log-sp layered decoding. 92

Σχήμα 6.2 : Routed Design της αρχιτεκτονικής του LogSP LDPC αποκωδικοποιητή, για z=96, σε Spartan 3 - XC3S5000, για log-sp layered decoding. 93

Σχήμα 6.3 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 5 - XC5VLX330, για log-sp layered decoding. 94

Σχήμα 6.4 : Routed Design της αρχιτεκτονικής του Log-SP LDPC αποκωδικοποιητή, για z=96, σε Virtex 5 - XC5VLX330, για log-sp layered decoding. 95

Σχήμα 6.5 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 4 - XC4VSX35-12FF668, για log-sp layered decoding. 96

Σχήμα 6.6 : Utilization Summary της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 4 - XC4VSX35-12FF668, για Min-Sum layered decoding. 97

Σχήμα 6.7 : Routed Design της αρχιτεκτονικής του LDPC αποκωδικοποιητή, για z=96, σε Virtex 4 - XC4VSX35-12FF668, για Min-Sum layered decoding. Με βάση τις εξομοιώσεις που εκτελέστηκαν, παραθέτουμε στη συνέχεια μερικά στοιχεία, σχετικά με την επιφάνεια ολοκλήρωσης και την ταχύτητα του αποκωδικοποιητή. 98