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

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

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

Transcript

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

2

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Σύστημα Διόρθωσης Λαθών Βασισμένο σε Κώδικες BCH και Yλοποίηση σε FPGA» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών ISI MATALON Αριθμός Μητρώου:6312 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις 21/10/2013 Ο Επιβλέπων Ο Διευθυντής του τομέα Β. Παλιουράς Ε.Χούσος Επίκουρος Καθηγητής Καθηγητής......

4

5 Περίληψη Σε μία εποχή όπου η ψηφιοποίηση δεδομένων έχει αυξηθεί ραγδαία η ανάγκη για τη βέλτιστη μετάδοσή τους είναι απαραίτητη. Από τα πλέον σημαντικά μέρη των προτύπων μετάδοσης είναι η κωδικοποίηση του καναλιού μέσω ειδικών αλγορίθμων ώστε να επιτευχθεί η εύρεση και διόρθωση τυχών λαθών. Οι κώδικες Bose, Chaudhuri και Hocquenghem (BCH) είναι τέτοιου είδους κώδικες που χρησιμοποιούνται ευρέως σε εφαρμογές όπως τα CD, DVD, σκληροί δίσκοι, δίσκοι στερεάς κατάστασης (SSD) και το πρότυπο δορυφορικής μετάδοσης τηλεόρασης υψηλής ανάλυσης (HDTV), DVB-S2. Στην παρούσα διπλωματική εργασία σχεδιάστηκε και υλοποιήθηκε κωδικοποιητής και αποκωδικοποιητής BCH για τις 11 περιπτώσεις κανονικού πλαισίου που προσφέρει το πρότυπο DVB-S2. Κύριος στόχος ήταν η όσο το δυνατόν καλύτερη υλοποίηση με γνώμονα το μέγεθος, με τη χρήση κοινών κυκλωμάτων και για τις 11 περιπτώσεις. Αποτέλεσμα αυτής της βελτιστοποίησης μεγέθους, ήταν κάποιες τεχνικές βελτιστοποίησης της ταχύτητας αποκωδικοποίησης, όπως το shortening, να μη χρησιμοποιηθούν καθώς θα είχαν ως αποτέλεσμα την αύξηση της επιφάνειας μερών του αποκωδικοποιητή κατά περίπου 11 φορές. Καθώς σκοπός της διπλωματικής ήταν η μελέτη της απόδοσης των κωδίκων BCH, μελετήθηκε ο ρυθμός λαθών σε διάφορες τιμές της αναλογίας ενέργειας θορύβου (E b / N 0 ), αφού πρώτα υλοποιήθηκε σε FPGA. Abstract The amount of digital information is growing rapidly the recent decades, making transmission optimization one of the top priorities in digital information systems. One of the main parts of every transmission standard is channel encoding, with the use of algorithms aimed at finding and correcting errors (Forward Error Correction FEC). Such codes are Bose, Chaudhuri and Hocquenghem (BCH) code, which are widely used in applications like CDs, DVDs, Hard Drives, Solid State Drives (SSDs) and DVB-S2, a satellite transmission standard mostly used for High Definition Television (HDTV). This thesis sets out to account for the design and implementation of a BCH encoder and decoder for all 11 different code rates proposed by the DVB-S2 standard for normal frames. The design was area optimized in order for all 11 code rate encoders and decoders to work on the same FPGA. This lead to some optimization techniques being unused. Even though the codes are shortened, no shortening algorithms which aim at clock cycle optimization were used. Were they used, would lead parts of the decoder to be almost 11 times larger. The main goal of the thesis is to analyze the performance of the codes, so the error rate was measured under different values of the energy to noise ratio (E b / N 0 ). ~5~

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

7 Στην οικογένεια και τους φίλους μου που ήταν δίπλα μου συνεχώς και με στήριζαν. Ιδιαίτερα στο Χάρη που κατέληξα να μένω σπίτι του περισσότερο από αυτόν και στην Γκόλφω που μου έδινε δύναμη. ~7~

8 Πίνακας περιεχομένων Περίληψη...6 Οργάνωση της εργασίας...13 Τηλεπικοινωνιακό σύστημα Σύστημα ψηφιακής επικοινωνίας Μοντέλο ψηφιακής επικοινωνίας προς ανάλυση Κανάλι προσθετικού θορύβου Μέτρηση απόδοσης Κατηγορίες Κωδικών Διόρθωσης Κωδικοποίηση καναλιού Γραμμικοί Κώδικες Δομής (Linear Block Codes) Κυκλικοί Κώδικες (Cyclic Codes) Συστηματικοί Κώδικες Δομής (Systematic Codes) Συνελικτικοί Κώδικες (Convolutional Codes)...20 Άλγεβρα Πεπερασμένων Πεδίων Θεωρία Πεδίων Ομάδες Πεδία Το GF(2m) Η Πολυωνυμική Βάση και τα Πρωτογενή Στοιχεία Δυαδική Βάση Κανονική Βάση Βασικές Αριθμητικές Πράξεις στο GF(2m) και Hardware Υλοποιήσεις τους Πρόσθεση στο GF(2m) Πολλαπλασιασμός με μία σταθερά αi Πολλαπλασιασμός δύο στοιχείων του GF(2m) Διαίρεση Πολυωνύμων του GF(2) Υπολογισμός του r(ai)...31 Κώδικες BCH Κατηγορίες BCH Κωδικών Δυαδικοί Πρωτογενείς BCH Κώδικες Δυαδικοί μη πρωτογενείς BCH κώδικες BCH Κωδικοποίηση BCH Αποκωδικοποίηση Υπολογισμός Συνδρόμων Πολυώνυμο Εύρεσης Λαθών (Error Locator Polynomial) Εύρεση Θέσεων Λαθών και Διόρθωση...44 Το Πρότυπο DVB-S Εισαγωγή Βασικά Χαρακτηριστικά Αρχιτεκτονικής Προσαρμογή Ροής Εισόδου Forward Error Correction Mapping Πλαισίωση Διαμόρφωση Συμβατότητα με το DVB-S...52 ~8~

9 4.4 Χρήση κωδικών BCH στο DVB-S BCH Κωδικοποίηση BCH Αποκωδικοποίηση...55 Σχεδιασμός και Υλοποίηση Γενική Υλοποίηση Παραγωγός Λέξεων Component Κωδικοποίησης Components Αποκωδικοποιητή Παραγωγός Συνδρόμων Πολυώνυμο Εύρεσης Λαθών Έρευνα Chien Περιφερειακά Components Κανάλι Θορύβου Πολλαπλασιαστές Εύρεση Αντιστρόφων...93 Ροή Σχεδίασης Διαδικασία Σχεδίασης και Ελέγχου Προδιαγραφές, Επιλεγμένοι Αλγόριθμοι Περιγραφή σε Λογισμικό Περιγραφή σε Υλικό Έλεγχος του Συστήματος Μέσω Μετρήσεων Αναπτυξιακό Περιβάλλον Xilinx Virtex-5 FXT FPGA ML Υλοποίηση σε FPGA Πειραματικά Δεδομένα Στατιστικά Αποτελέσματα Υλοποίησης Ταχύτητα Κωδικοποίησης Αποκωδικοποίησης Αποτελέσματα Μετρήσεων Συμπεράσματα, Προτάσεις και Βελτιώσεις Συμπεράσματα Προτάσεις και Βελτιώσεις Βελτιώσεις για τη Δημιουργία Συνδρόμων (Shortening) Βελτιώσεις για τη Δημιουργία Πολυωνύμου Εύρεσης Λαθών Κάλυψη και των Μικρών Πλαισίων του DVB-S Έναρξη Επόμενης Κωδικοποίησης Πριν Τελειώσει η Αποκωδικοποίηση & Παράλληλοι Αποκωδικοποιητές Βιβλιογραφία ~9~

10 Κατάλογος Εικόνων Σχήμα 1.1: Διάγραμμα Τηλεπικοινωνιακού Συστήματος...15 Σχήμα 1.2. Απλοποιημένο Διάγραμμα Συστήματος Ψηφιακής Επικοινωνίας...16 Σχήμα 1.3.Κανάλι Προσθετικού Καναλιού...17 Σχήμα 1.4: Συνελικτικός Κωδικοποιητής με ρυθμό R = 1/ Σχήμα 2.1: Κύκλωμα πολλαπλασιασμού ενός στοιχείου β GF (2 4 ) επί το α...26 Σχήμα 2.2 Κύκλωμα πολλαπλασιασμού ενός στοιχείου β GF (2 4 ) επί το α Σχήμα 2.3. Κύκλωμα Πολλαπλασιασμού Δύο Στοιχείων του GF (2 4 )...28 Σχήμα 2.4. Εναλλακτική Υλοποίηση Κυκλώματος Πολλαπλασιασμού Δύο Στοιχείων του GF (2 4 )...29 Σχήμα 2.5. Κύκλωμα Διαίρεσης Πολυωνύμων...30 Σχήμα 2.6. Παράδειγμα Διαίρεσης Πολυωνύμου προς το g ( x)= x 5 + x Σχήμα 2.7. Εναλλακτική σχεδίαση κυκλώματος διαίρεσης πολυωνύμων...31 Σχήμα 2.8 Κύκλωμα για τον υπολογισμό του r(α)...32 Σχήμα 2.9. Κύκλωμα για υπολογισμό του r (a 3 )...33 Σχήμα 2.10 Κύκλωμα για υπολογισμού του r (a 3 ) και του r (a 6 )...34 Σχήμα 3.1. Σειριακό Κύκλωμα Κωδικοποίησης κωδικών BCH (n, k,t )...39 Σχήμα 3.2 Υλοποίηση του αλγορίθμου Berlekamp με καταχωρητές ολίσθησης...44 Σχήμα 3.3. Κύκλωμα Κυκλικής Εύρεσης Θέσεων και Διόρθωσης των Λαθών...46 Σχήμα 3.4. Παράδειγμα Κυκλώματος Ανίχνευσης Λαθών...46 Σχήμα 4.1. Λειτουργικό διάγραμμα δομής του συστήματος DVB-S Σχήμα 4.2. Οι τέσσερις αστερισμοί διαμόρφωσης του DVB-S Σχήμα 4.3. Μορφή δεδομένων μετά και την κωδικοποίηση με LDPC...53 Σχήμα 5.1. Κύκλωμα Κωδικοποίησης/Αποκωδικοποίησης BCH με Κανάλι Θορύβου...57 Σχήμα 5.2. Απλοποιημένο Σχήμα Συστήματος BCH Κωδικοποίησης/Αποκωδικοποίησης και Ελέγχου...58 Σχήμα 5.3. Κύκλωμα BCH Αποκωδικοποιητή...71 Σχήμα 6.1. Διάγραμμα Ροής Σχεδίασης...96 Σχήμα 6.2 Διάγραμμα BER - Eb/N0 για κώδικα BCH(16200,16008) από MATLAB...99 Σχήμα 6.3 Διάγραμμα BER - Eb/N0 για κώδικα BCH(16200,16008) από FPGA...99 Σχήμα 6.4. Λειτουργικό Διάγραμμα του Αναπτυξιακού Συστήματος ML Σχήμα 6.5. Λεπτομερής Απεικόνιση των Συστατικών Μερών του Αναπτυξιακού Συστήματος Virtex-5 ML507 (Εμπρός Όψη) Σχήμα 6.6. Απεικόνιση των Συστατικών Μερών του Αναπτυξιακού Συστήματος Virtex-5 ML507 (Πίσω Όψη) Σχήμα 7.1. Γραφική Παράσταση BER Eb/N0 για Κώδικα BCH(16200,16008,12) Σχήμα 7.2. Γραφική Παράσταση BER Eb/N0 για Κώδικα BCH(21600,21408,12) Σχήμα 7.3. Γραφική Παράσταση BER Eb/N0 για Κώδικα BCH(25920,25728,12) Σχήμα 7.4. Γραφική Παράσταση BER Eb/N0 για Κώδικα BCH(32400,32208,12) Σχήμα 7.5. Γραφική Παράσταση BER Eb/N0 για Κώδικα BCH(38880,38688,12) Κατάλογος Πινάκων Πίνακας 2.1. Λίστα Πρωτογενών Πολυωνύμων...24 Πίνακας 2.2. Αναπαραστάσεις των στοιχείων του GF (2 4 ) που ορίζεται από το πολυώνυμο p ( x)=x 4 +x Πίνακας 4.1. Παράμετροι κωδικοποίησης για κανονικό μήκος πλαισίου...53 ~10~

11 Πίνακας 4.2. Παράμετροι κωδικοποίησης για μικρό μήκος πλαισίου...54 Πίνακας 4.3. Πολυώνυμα BCH για κανονικό μήκος πλαισίου...54 Πίνακας 4.4. Πολυώνυμα BCH για μικρό μήκος πλαισίου...55 Πίνακας 7.1. Device Utilization Summary της Αρχιτεκτονικής του Συστήματος BCH, χωρίς το κανάλι, σε Vitrex-5 XC5VFX70T-1FFG Πίνακας 7.2. Device Utilization Summary της Αρχιτεκτονικής του Συστήματος BCH, με το κανάλι, σε Vitrex-5 XC5VFX70T-1FFG Πίνακας 7.4. Device Utilization Summary της Αρχιτεκτονικής του Συστήματος BCH, με το κανάλι και με coponent εύρεσης αντιστρόφου όπου ελέγχονται 512 λέξεις ταυτόχρονα σε Vitrex-5 XC5VFX70T-1FFG Πίνακας 7.4. Κύκλοι Ρολογιού & Ταχύτητα Μετάδοσης ~11~

12 Οργάνωση της εργασίας Η παρούσα διπλωματική εργασία πραγματεύεται το σχεδιασμό και την υλοποίηση ενός συστήματος κωδικοποίησης και αποκωδικοποίησης BCH με σκοπό την ανάλυση της απόδοσης του κώδικα σε διαφορετικές τιμές της αναλογίας ενέργειας θορύβου (E b / N 0 ). Στο κεφάλαιο 1 παρουσιάζεται το λειτουργικό διάγραμμα και τα βασικά μέρη ενός συστήματος ψηφιακής επικοινωνίας, καθώς και ένα απλοποιημένο μοντέλο του προηγούμενου συστήματος που εστιάζει στην κωδικοποίηση καναλιού. Επιπλέον γίνεται λόγος σχετικά με το κανάλι λευκού προσθετικού θορύβου (AWGN). Στη συνέχεια του κεφαλαίου υπάρχει αναφορά στα διάφορα είδη κωδικοποιήσεων. Στο κεφάλαιο 2 παρουσιάζονται βασικές αρχές της αριθμητικής πεδίων και αναλύεται το πεδίο στο οποίο λειτουργεί ο BCH. Επίσης αναλύονται συγκεκριμένες αριθμητικές πράξεις στο πεδίο αυτό και οι αντίστοιχες hardware υλοποιήσεις τους, οι οποίες είναι χρήσιμες στην κωδικοποίηση και την αποκωδικοποίηση. Στο κεφάλαιο 3 παρουσιάζεται αναλυτικά ο κώδικας BCH. Παρουσιάζεται η λογική της κωδικοποίησης σε BCH και προτείνονται αλγόριθμοι για την αποκωδικοποίηση. Επίσης παρουσιάζονται σε πρώτο βαθμό οι λογικές πίσω από τις hardware υλοποιήσεις των κωδικοποιητών και αποκωδικοποιητών. Το κεφάλαιο 4 αναφέρεται στο πρότυπο μετάδοσης DVB-S2. Αναλύονται οι τρόποι διαμόρφωσης, κωδικοποίησης LDPC, κωδικοποίησης BCH και η δομή του πλαισίου. Ο τρόπος εύρεσης του κώδικα γεννήτορα του BCH για το DVB-S2 δίνεται σε αυτό το κεφάλαιο. Στο κεφάλαιο 5 παρουσιάζεται η υλοποίηση του συστήματος του κωδικοποιητή και αποκωδικοποιητή BCH. Δίνονται κώδικες VHDL και Matlab για την καλύτερη κατανόηση της υλοποίησης και αναλύονται ξεχωριστά τα διάφορα components του συστήματος. Στο κεφάλαιο 6 γίνεται αναφορά στη ροή σχεδίασης των τελικών συστημάτων. Αναφέρονται επίσης τα διάφορα εργαλεία που χρησιμοποιήθηκαν για την υλοποίηση του συστήματος, όπως και το FPGA. Στο κεφάλαιο 7 παρουσιάζονται τα στατιστικά αποτελέσματα της υλοποίησης του συστήματος και τα αποτελέσματα που πάρθηκαν από τη διεξαγωγή διάφορων μετρήσεων, όπως και τα συμπεράσματα που προκύπτουν από αυτές. Τέλος στο κεφάλαιο 8 αναλύονται οι λόγοι που προτιμήθηκαν οι συγκεκριμένοι αλγόριθμοι για την αποκωδικοποίηση και προτείνονται βελτιώσεις για τη βέλτιστη λειτουργία του συστήματος. ~12~

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

14 Σχήμα 1.1: Διάγραμμα Τηλεπικοινωνιακού Συστήματος Μοντέλο ψηφιακής επικοινωνίας προς ανάλυση Στην παρούσα διπλωματική εργασία, καθώς στόχος ήταν η ανάλυση της απόδοσης των BCH κωδικών σε διαφορετικά επίπεδα θορύβου, χρησιμοποιήθηκε ένα απλοποιημένο μοντέλο με έμφαση στον κωδικοποιητή, στον αποκωδικοποιητή και στην προσθήκη θορύβου από το κανάλι. Δε μελετήθηκε η ψηφιοποίηση της οποιασδήποτε πληροφορίας κι έτσι ο κωδικοποιητής πηγής αγνοήθηκε. Για την δημιουργία bits χρησιμοποιήθηκε ένας απλός προσθέτης κι όχι κάποιο LFSR για τη δημιουργία ψευδοτυχαίων bit. Ο λόγος της επιλογής αυτής ήταν ότι το προς μελέτη πρότυπο DVB-S2, ανάλογα με την εκδοχή του για κανονικά πλαίσια αποτελείται από έως bit, οπότε η δημιουργία ενός LFSR για τόσο μεγάλες αλληλουχίες bit θα μεγάλωνε κατά πολύ την επιφάνεια και την πολυπλοκότητα της κατασκευής. Μια υποτυπώδης τυχαιότητα δόθηκε στον προσθέτη, η οποία θα αναλυθεί σε παρακάτω κεφάλαιο. Ο κωδικοποιητής κι ο αποκωδικοποιητής καναλιού αποτελούν ένα από τα κυριότερα μέρη του τηλεπικοινωνιακού συστήματος καθώς με τις δυνατότητα ανίχνευσης και διόρθωσης λαθών βελτιώνουν την αξιοπιστία του σήματος. Τα συστήματα αυτά θα αποτελέσουν και το κύριο σημείο μελέτης στην παρούσα διπλωματική. Η μετάδοση των δεδομένων γίνεται εσωτερικά, έτσι ο διαμορφωτής κι ο αποδιαμορφωτής παραλείπονται καθώς τα δεδομένα μεταδίδονται στη μορφή που έχουν ως έξοδος του κωδικοποιητή καναλιού. Για τη μελέτη της απόδοσης χρησιμοποιήθηκε κύκλωμα που προσομοιώνει το κανάλι για διαφορετικές στάθμες θορύβου. Το κύκλωμα αυτό υπήρξε μέρος άλλης διπλωματικής εργασίας και χρησιμοποιήθηκε για τη μελέτη του BCH κώδικα. Από την παραπάνω ανάλυση καταλήγουμε στο παρακάτω απλοποιημένο μοντέλο, όπου ο κωδικοποιητής κι ο αποκωδικοποιητής πηγής έχουν απαλειφθεί και ο διαμορφωτής με τον αποδιαμορφωτή έχουν ενταχθεί στο κύκλωμα προσομοίωσης μετάδοσης υπό θόρυβο. ~14~

15 Σχήμα 1.2. Απλοποιημένο Διάγραμμα Συστήματος Ψηφιακής Επικοινωνίας Ο πομπός και ο δέκτης θα αναλυθούν λεπτομερέστερα σε παρακάτω κεφάλαια. Το κανάλι, καθώς δεν είναι το κύριο μέρος πραγμάτευσης της διπλωματικής θα αναλυθεί σύντομα παρακάτω Κανάλι προσθετικού θορύβου Το κανάλι προσθετικού θορύβου είναι το πιο απλό μαθηματικό μοντέλο για ένα κανάλι ψηφιακής επικοινωνίας. Σύμφωνα με αυτό το μοντέλο στο εκπεμπόμενο σήμα s (t ) προστίθεται μια τιμή θορύβου n (t ) που παράγεται με μια τυχαία διαδικασία, αλλοιώνοντάς το. Το σήμα r (t) αποτελεί το άθροισμα των δύο επιμέρους σημάτων. ~15~

16 Σχήμα 1.3.Κανάλι Προσθετικού Καναλιού Το μαθηματικό μοντέλο του καναλιού λέγεται κανάλι προσθετικού γκαουσιανού θορύβου (Additive White Gaussian Noise AWGN). Σύμφωνα με τη θεωρία, δεν υπάρχει η δυνατότητα εύρεσης της στιγμιαίας τιμής ενός σήματος AWGN, λόγω της τυχαιότητας του σήματος. Για το λόγο αυτό χρησιμοποιούνται συναρτήσεις πυκνότητας πιθανότητας. Το AWGN έχει συνάρτηση πυκνότητας που ακολουθεί την κατανομή Gauss, σύμφωνα με τη σχέση: 1 f χ ( x )= e σ 2 π ( x m )2 2 2σ Κύριες παράμετροι της παραπάνω συνάρτησης είναι: α) η μέση τιμή του θορύβου, m, η οποία για τ AWGN είναι ίση με μηδέν και β) η τυπική απόκλιση του θορύβου, σ. Καθώς δεν υπάρχει η δυνατότητα εύρεσης της στιγμιαίας τιμής του σήματος, υπάρχει η δυνατότητα υπολογισμού της πιθανότητας να βρίσκεται σε ένα συγκεκριμένο διάστημα [α,β]. Για την εύρεση αυτής της πιθανότητας, χρησιμοποιείται η συνάρτηση πιθανότητας (probability function) και συμβολίζεται ως P (x ). Συγκεκριμένα, η σχέση της P (x ) είναι η παρακάτω: b P (a X b )= α 1 2π e t 2 2 dt Μέτρηση απόδοσης Για τη μέτρηση της απόδοσης του συστήματος αφού τροφοδοτηθεί ο δέκτης με ακολουθίες bit υπάρχουν διάφορες προσεγγίσεις ανάλογα τι επιθυμεί ο ερευνητής να μετρήσει. Στην προκειμένη περίπτωση, καθώς σκοπός είναι η μέτρηση της απόδοσης αποκλειστικά του κώδικα BCH μετρήθηκε ο ρυθμός των λαθών στη λέξη αφού έχει αποκωδικοποιηθεί. Έτσι μελετήθηκε η διορθωτική ικανότητα των BCH κωδίκων. 1.2 Κατηγορίες Κωδικών Διόρθωσης Στο κεφάλαιο αυτό θα αναλυθούν οι γενικές δομές των κωδικοποιήσεων όπως και, η απαραίτητη για την κωδικοποίηση και αποκωδικοποίηση BCH, άλγεβρα πεπερασμένων πεδίων. Τέλος θα αναπτυχθούν διάφορες hardware υλοποιήσεις για βασικές αριθμητικές πράξεις στο πεδίο Galois, οι οποίες ~16~

17 χρησιμοποιήθηκαν για τη δημιουργία του κωδικοποιητή και του αποκωδικοποιητή. Για την καλύτερη κατανόηση των εννοιών που θα αναλυθούν παρακάτω, δίνονται οι εξής ορισμοί. Ορισμός 1 Βάρος Hamming (Hamming weight) w ονομάζεται το πλήθος μη μηδενικών στοιχείων μιας κωδικής λέξης. Ορισμός 2 Απόσταση Hamming (Hamming distance) d ονομάζεται το πλήθος των θέσεων όπου δύο κωδικές λέξεις έχουν διαφορετικά ψηφία. Ισοδυναμεί με το βάρος της λέξης που προκύπτει αν πάρουμε το modulo-2 άθροισμα των δύο λέξεων. Ορισμός 3 Ελάχιστη απόσταση Hamminng διαφορετικών λέξεων. d min ενός κώδικα λέγεται η μικρότερη απόσταση δύο Κωδικοποίηση καναλιού Όπως αναφέρθηκε παραπάνω, η κωδικοποίηση καναλιού είναι ένα από τα σημαντικότερα μέρη ενός ψηφιακού συστήματος επικοινωνίας, καθώς εξασφαλίζει βελτιωμένη απόδοση στη μετάδοση του σήματος. Αυτό επιτυγχάνεται με την κωδικοποίηση του σήματος, όπου προστίθεται πλεονάζουσα πληροφορία την οποία χρησιμοποιεί ο αποκωδικοποιητής για να εντοπίσει και να διορθώσει πιθανά λάθη που δημιουργήθηκαν κατά τη μετάδοση. Βασική αρχή στην οποία στηρίχθηκε η θεωρία της κωδικοποίησης είναι το Θεώρημα Κωδικοποίησης Διακριτού Καναλιού με Θόρυβο του Shannon : Για κάθε διακριτό κανάλι χωρητικότητας C υπάρχει ένα σύστημα κωδικοποίησης τέτοιο ώστε, όταν η πληροφορία μεταδίδεται μέσα από το κανάλι με ρυθμό μικρότερο του C, ο ρυθμός εμφάνισης λαθών να είναι αυθαίρετα μικρός. Οι κώδικες που πέρα από την εύρεση ύπαρξης λαθών, εντοπίζουν και τα λάθη και τα διορθώνουν, χωρίς την ανάγκη αναμετάδοσης, ονομάζονται Forward Error Correcting (FEC) και χωρίζονται σε δύο είδη: τους κώδικες δομής (block codes) και τους συνελικτικούς κώδικες (convolutional codes) Γραμμικοί Κώδικες Δομής (Linear Block Codes) Στους κώδικες δομής τα bits των δεδομένων χωρίζονται σε blocks σταθερού μήκους και η επεξεργασία του κάθε block γίνεται ανεξάρτητα από τα άλλα. Κάθε κώδικας δομής χαρακτηρίζεται από τις παραμέτρους (n,k ) και απεικονίζει κάθε στοιχείο μεγέθους k bits ενός διανυσματικού χώρου F k σε ένα άλλο μεγαλύτερο, διανυσματικό χώρο F m. Η απεικόνιση αυτή λέγεται κωδική λέξη και προκύπτει με βάση συγκεκριμένους αλγεβρικού κανόνες που αφορούν το συγκεκριμένο κώδικα που χρησιμοποιείται και περιγράφονται από γεννήτορες πίνακες G ή πολυώνυμα γεννήτορες g ( x). Αν η απεικόνιση είναι γραμμική τότε ο κώδικας είναι γραμμικός. Χαρακτηριστικό των γραμμικών κωδικών είναι ότι το άθροισμα οποιωνδήποτε κωδικών λέξεων είναι κι αυτό κωδική λέξη. Επίσης ορίζοντας ως ελάχιστο βάρος w min το μικρότερο Hamming βάρος οποιασδήποτε μη μηδενικής λέξης, για τους γραμμικούς κώδικες ισχύει d min = w min. Αποδεικνύεται ότι σε κάθε γραμμικό μπλοκ κώδικα με ελάχιστη απόσταση d min υπάρχει η δυνατότητα διόρθωσης t (d min 1)/ 2. Για δυαδικούς κώδικες, μια λέξη u μεγέθους k bits κωδικοποιείται σε μία άλλη λέξη v μεγέθους n bits ως εξής v =u G ~17~ (1.1)

18 όπου G είναι ο k x n γεννήτορας πίνακας. Από το γεννήτορα πίνακα προκύπτει ο πίνακας ελέγχου ισοτιμίας (parity check matrix) H με τη σχέση: G H T =0 (1.2) Το H χρησιμεύει στην αποκωδικοποίηση για την εύρεση συνδρόμων, όπως θα αναλυθεί αργότερα. Ισχύει επίσης η παρακάτω σχέση: H vt =0 (1.3) Ορισμός 2.1 Ρυθμός του κώδικα (code rate) ορίζεται η αναλογία της χρήσιμης πληροφορίας προς τη k συνολική κωδικολέξη, δηλαδή R= n Τέλος, να αναφερθεί ότι σε αυτή την κατηγορία κωδικών ανήκουν και ο BCH, όπως και ο Reed Solomon Κυκλικοί Κώδικες (Cyclic Codes) Αποτελεί μια υποκατηγορία των γραμμικών κωδικών με το πλεονέκτημα της αποτελεσματικότερης κωδικοποίησης και αποκωδικοποίησης. Ορισμός 2.2 Ένας (n,k ) κώδικας δομής C είναι κυκλικός αν για κάθε λέξη c=(c0, c 1,,cn 1 ) στο C η δεξιά κυκλική ολίσθηση της c '=(cn 1, c0, c1,, cn 2 ) είναι πάλι λέξη στο C. Οι πράξεις της μετακίνησης και της κυκλικής μετακίνησης μπορούν να αναπαρασταθούν με τη χρήση πολυωνύμων. Το διάνυσμα c=(c0,c 1,,c n 1 ) μπορεί να αναπαρασταθεί πολυωνυμικά ως c ( x)=c 0 +c 1x +...+c n 1 xn 1 και μία ολίσθηση αναπαρίσταται ως εξής: 2 n. x c ( x )=c 0 x+c 1 x +...+c n 1 x Μία κυκλική ολίσθηση υπολογίζεται από το υπόλοιπο της διαίρεσης modulo 2 του xc( x ) προς x n 1. Ο διαιρετέος μπορεί να αναπαρασταθεί ως n 2 n 1 xc( x )=c n 1 ( x 1)+(c 0 x +c1 x +...+c n 2 x + cn 1 ), οπότε το υπόλοιπο της διαίρεσης είναι xc( x )(mod x n 1)=cn 1 +c 0 x +c1 x c n 2 x n 1. Έτσι είναι εμφανές ότι η χρήση των κυκλικών κωδικών πλεονεκτεί καθώς οι αλγεβρικές πράξεις μπορούν να εκφραστούν σε επίπεδο υλικού με απλούς καταχωρητές ολίσθησης. Σε ένα κυκλικό κώδικα υπάρχει μία μοναδική λέξη g =( g 0, g 1,, g n 1 ), της οποίας το πολυώνυμο g ( x )=g 0 + g 1 x +...+g n 1 x n 1 έχει το μικρότερο βαθμό σε σύγκριση με τα αντίστοιχα πολυώνυμα όλων των άλλων λέξεων. Το πολυώνυμο αυτό λέγεται πολυώνυμο γεννήτορας, το οποίο διαιρεί όλες τις άλλες κωδικές λέξεις. Όπως και στους απλούς γραμμικούς κώδικες υπάρχει πολυώνυμο ελέγχου ισοτιμίας h ( x) το οποίο υπολογίζεται από τη σχέση: h (x )= xn+ 1 (x) g (1.4) Για τους κυκλικούς κώδικες ισχύει επίσης η παρακάτω σχέση: ( c( x )h ( x)) mod (x n +1)=0 ~18~ (1.5)

19 1.2.4 Συστηματικοί Κώδικες Δομής (Systematic Codes) Ορισμός 2.3 Συστηματικοί είναι οι κώδικες των οποίων οι κωδικές λέξεις περιέχουν το μήνυμα (χρήσιμη πληροφορία) αναλλοίωτο. Η συστηματικότητα αποτελεί μια ιδιότητα των κωδικών και δεν είναι απαραίτητη η γραμμικότητα για να είναι συστηματικός ένας κώδικας. Ο BCH που θα μελετηθεί παρακάτω είναι κυκλικός και συστηματικός. Η συστηματικότητα ενός κώδικα εξασφαλίζεται από το γεννήτορα, ο οποίος πρέπει να είναι συστηματικός, δηλαδή της μορφής: [ p 0,0 G=[ P I k ]= p 1,0 p k 1,0 p 0,1 p 0, n k p 1,1 p 1, n k p k 1,1 p k 1,n k ] (1.6) όπου ο I k είναι πίνακας (k x k ) και ο P είναι πίνακας k x (n k ) που παράγει σύμβολα ισοτιμίας Συνελικτικοί Κώδικες (Convolutional Codes) Οι συνελικτικοί κώδικες ανακαλύφθηκαν το 1954 από τον Elias [1], ο οποίος έδειξε ότι τα ψηφία ισοτιμίας μπορούν να εισαχθούν σε μία ακολουθία δεδομένων με τη χρήση καταχωρητών ολίσθησης. Είναι γραμμικοί κώδικες οι οποίοι μπορούν να θεωρηθούν σύνολο ψηφιακών φίλτρων, των οποίων οι έξοδοι αν πολυπλεχθούν παράγουν την κωδική λέξη. Στην πράξη πολλές φορές προτιμώνται των κωδικών δομής γιατί συχνά έχουν καλύτερη απόδοση από τους κώδικες δομής αντίστοιχης πολυπλοκότητας. Σε αυτό έχει βοηθήσει το γεγονός ότι είναι από τους πρώτους κώδικες, με αποτέλεσμα να έχουν αναπτυχθεί ισχυροί αλγόριθμοι αποκωδικοποίησης. Η βασική διαφορά με τους κώδικες δομής είναι ότι κάθε κωδική λέξη δεν εξαρτάται μόνο από τα k bits καθώς δεν ξεχωρίζει ο κωδικοποιητής την πληροφορία σε μπλοκ. Τροφοδοτείται ο κωδικοποιητής συνεχώς και η έξοδός του είναι η modulo-2 άθροιση του τρέχοντος συμβόλου με τα προηγούμενα. Έχει συνεπώς ο κωδικοποιητής μνήμη. Σχήμα 1.4: Συνελικτικός Κωδικοποιητής με ρυθμό R = 1/2 ~19~

20 Κεφάλαιο 2 Άλγεβρα Πεπερασμένων Πεδίων 2.1 Θεωρία Πεδίων Ομάδες Ομάδα (group) (G, ) ονομάζεται μία ομάδα G στοιχείων, μέσα στην οποία ορίζεται ένας τελεστής για την οποία ισχύουν τα παρακάτω: Ισχύει η προσεταιριστική ιδιότητα, για παράδειγμα Υπάρχει στοιχείο e της ομάδας, το οποίο ονομάζεται ταυτοτικό στοιχείο και για το οποίο ισχύει a e=e a=a, για κάθε a G. Για κάθε a G υπάρχει ένα στοιχείο b G το οποίο είναι ο αντίστροφος του α, δηλαδή στοιχείο για το οποίο ισχύει a b=e. Ο αντίστροφος του α συχνά συμβολίζεται ως α 1 (όταν ο τελεστής είναι τύπου πολλαπλασιασμού) ή ως α (όταν ο τελεστής είναι τύπος πρόσθεσης). a (b c )=(a b) c Αν ισχύει η αντιμεταθετική ιδιότητα δηλαδή a b=b a για κάθε a, b G, τότε η ομάδα λέγεται αντιμεταθετική. Επίσης μία ομάδα αποκαλείται Abelian όταν είναι αντιμεταθετική με έναν τελεστή τύπου πρόσθεσης (προς τιμή του μαθηματικού N.H. Abel). Τάξη του συνόλου είναι ο αριθμός των στοιχείων του. b Όταν η τάξη ενός συνόλου είναι πεπερασμένη τότε το σύνολο αποκαλείται πεπερασμένο Πεδία Πεδίο (F,+, ) είναι ένα σύνολο στοιχείων F στον οποίο ορίζονται οι πράξεις της πρόσθεσης και πολλαπλασιασμού, όπως και της αφαίρεσης (αντίστροφης πρόσθεσης) και διαίρεσης (αντίστροφου πολλαπλασιασμού). Το F είναι πεδίο αν και μόνο αν: 1. To πεδίο είναι κλειστό ως προς την πρόσθεση, δηλαδή για κάθε a και b που ανήκουν στο F, το άθροισμα a +b ανήκει στο F. 2. Το πεδίο είναι κλειστό ως προς τον πολλαπλασιασμό, δηλαδή για κάθε a και b που ανήκουν στο F, το πηλίκο a b ανήκει στο F. 3. Υπάρχει ένα στοιχείο που ανήκει στο F, το ταυτοτικό στοιχείο της πρόσθεσης που ονομάζεται συμβολίζεται με 0. a +0=0 +a =a, a F 4. Υπάρχει ένα στοιχείο που ανήκει στο F, το ταυτοτικό στοιχείο της πολλαπλασιασμού που ονομάζεται συμβολίζεται με 1. a 1=1 a=a, a F, a 0 5. Για κάθε a F υπάρχει ένα στοιχείο b G για το οποίο ισχύει a +b=b +a=0. Το στοιχείο b συχνά αποκαλείται αντίθετος του a και συμβολίζεται με a. ~20~

21 6. Για κάθε a F υπάρχει ένα στοιχείο b G για το οποίο ισχύει a b=b a=1. b συχνά αποκαλείται αντίστροφος του a και συμβολίζεται με a Προσεταιριστηκότητα για πρόσθεση a +(b +c)=(a +b)+c Το στοιχείο a,b, c F 8. Προσεταιριστηκότητα για πολλαπλασιασμό a (b c)=(a b) c a,b,c F, a 0 9. Αντιμεταθετικότητα για πρόσθεση a +b=b +a a,b F 10. Αντιμεταθετικότητα για πολλαπλασιασμό a b=b a 11. a,b F a (b+c )=a b + a c Τα πεπερασμένης τάξης πεδία έχουν ιδιαίτερη σημασία για τη θεωρία κωδικοποίησης και ονομάζονται πεπερασμένα πεδία ή πεδία Galois προς τιμήν του Evariste Galois [2] που τα ανακάλυψε. Ένα Galois πεδίο τάξης q συμβολίζεται ως GF (q). To q πρέπει να είναι πρώτος αριθμός ώστε να μπορεί να οριστεί το πεδίο για τις πράξεις της modulo-q πρόσθεσης και του modulo-q πολλαπλασιασμού [3]. Έστω ένα πεπερασμένο πεδίο GF (q) και μία ακολουθία των αθροισμάτων του μοναδιαίου στοιχείου 1 στο πεδίο αυτό: 1 2 k i=1 i=1 i= =1, 1=1+1,..., 1=1+1 k φορές Καθώς όμως το πεδίο είναι κλειστό ως προς την άθροιση, όλα τα παραπάνω αθροίσματα πρέπει να ανήκουν στο πεδίο. Συνεπώς, το πεδίο όντας πεπερασμένο, η ακολουθία των αθροισμάτων θα αρχίζει να επαναλαμβάνεται. Άρα υπάρχουν δύο θετικοί ακέραιοι m, n GF (q) όπου m<n για τους οποίους ισχύει: m n m n i=1 i=1 i=1 1= 1 1=0 λ Ο μικρότερος θετικός αριθμός λ για τον οποίο ισχύει 1=0 λέγεται χαρακτηριστικός αριθμός και i=1 αποδεικνύεται ότι είναι πρώτο αριθμός [4] Το GF(2m) Καθώς οι κώδικες BCH είναι σε πεδίο GF (2 m ) θα αναλυθούν πιο διεξοδικά αυτού του είδους τα πεδία. Αρχικά θα δοθούν κάποιοι βασικοί ορισμοί και ιδιότητες που αφορούν την αριθμητική δυαδικών πεδίων. Ένα πολυώνυμο p ( x) βαθμού m ορισμένο στο GF (2) είναι πολυώνυμο της μορφής: p ( x)= p 0 + p 1 x + + p m x m p i GF (2)={0,1 }. όπου Αποδεικνύεται: Οι πράξεις σε τέτοιου είδους πολυώνυμα γίνονται modulo-2 [4]. p 2 ( x )= p (x 2 ) και για κάθε (2.1) (2.2) i 0 : i [ p ( x)]2 = p ( x 2 )i ~21~ (2.3)

22 Ορισμός 2.1 Ένα πολυώνυμο p ( x) στο GF (2) βαθμού m λέγεται μη αναγόμενο (irreducible) αν το p ( x) δε διαιρείται από κανένα πολυώνυμο του GF (2) βαθμού μικρότερου ή ίσου του m και μεγαλύτερου του μηδενός. Το πεδίο GF (2) ονομάζεται πεδίο βάσης και από αυτό παράγονται extension fields και συμβολίζονται ως GF (2 m ). Για να κατασκευαστεί ένα extension field GF (2 m ) επιλέγεται ένα πολυώνυμο του GF (2) βαθμού m, έστω το p ( x). Ύστερα κατασκευάζεται ένα σύνολο F, 2 m πολυωνύμων, βαθμού μικρότερου ή ίσου του m. Αποδεικνύεται ότι όταν η πρόσθεση και ο πολλαπλασιασμός αυτών των πολυωνύμων γίνεται modulo p( x ), το σύνολο F αποτελεί ένα πεδίο 2 m στοιχείων και ονομάζεται GF (2 m ) [5]. Από τα παραπάνω είναι προφανές ότι το GF (2 m ) είναι επέκταση του GF (2) Η Πολυωνυμική Βάση και τα Πρωτογενή Στοιχεία Ορισμός 2.2 'Ένα σύνολο m γραμμικά ανεξάρτητων στοιχείων β =( β 0, β 1,,b m 1 ), β i GF (2m ) i [0, m 1] ονομάζεται βάση για το GF(2m). Ορισμός 2.3 Έστω a μία ρίζα ενός μη αναγόμενου Α={1, a,...,a m 1 } είναι πολυωνυμική βάση του GF (2 m ). πολυωνύμου του GF (2 m ) Τότε το Παράδειγμα: Έστω το GF (2 4 ) με μη αναγόμενο πολυώνυμο p ( x)=x 4 +x +1. Αν το a είναι ρίζα του p ( x) τότε το Α={1, a, a 2, a 3 } αποτελεί βάσει του πεδίου και τα στοιχεία του πεδίου μπορούν να αναπαρασταθούν ως a 0 +a 1 a +a 2 a 2 +a 3 a 3 a i GF (2) (2.4) Ορισμός 2.4 Ένα πολυώνυμο n βαθμού, το οποίο είναι μη αναγόμενο, χαρακτηρίζεται πρωτογενές (primitive) αν δεν είναι διαρέτης του πολυωνύμου 1+ x m για οποιοδήποτε m<2 n 1. Αν το a είναι ρίζα του p ( x), όπου το p ( x) είναι μη αναγόμενο και πρωτογενές το πεδίο Galois GF (2 m ) μπορεί να αναπαρασταθεί ως ένα σύνολο στοιχείων GF (2 m )={0,1, a, a 2,...,a n 1 }, όπου n=2 m 1. Το a ονομάζεται πρωτογενές στοιχείο και ισχύει a n =1 (2.5) Η επιλογή του τρόπου αναπαράστασης των στοιχείων του πεδίου μεταξύ διανυσματικής και πολυωνυμικής μορφής εξαρτάται από την υλοποίηση. Στο hardware για παράδειγμα, η διανυσματική μορφή ανάγει την πράξη της πρόσθεσης σε απλή πρόσθεση modulo 2. Η modulo 2 πρόσθεση εκφράζεται σε hardware απλά ως μια πύλη XOR. ~22~

23 m x+x 1+x+x4 1+x2+x5 1+x+x6 1+x3+x7 1+x2+x3+x4+x8 1+x4+x9 1+x3+x10 1+x2+x11 1+x+x4+x6+x12 1+x+x3+x4+x13 m x+x6+x10+x14 1+x+x15 1+x+x3+x12+x16 1+x3+x17 1+x7+x18 1+x+x2+x5+x19 1+x3+x20 1+x2+x21 1+x+x22 1+x5+x23 1+x+x2+x7+x24 Πίνακας 2.1. Λίστα Πρωτογενών Πολυωνύμων Ορισμός 2.5 Ελάχιστο πολυώνυμο του p ( x) τέτοιο ώστε p ( β )=0. β GF (2 m ) είναι το μη μηδενικό πολυώνυμο ελάχιστου βαθμού Αποδεικνύεται ότι το ελάχιστο πολυώνυμο p ( x) ενός στοιχείου β GF (2 m ) είναι μη αναγόμενο. Επίσης αποδεικνύεται ότι αν το β είναι η ρίζα ενός πολυωνύμου f (x ) του GF (2) τότε το f (x ) διαιρείται από το p ( x). Ορισμός 2.6 Έστω β ένα στοιχείο του Galois πεδίου GF (2 m ). Τα στοιχεία ονομάζονται συζυγή ως προς το υποπεδίο GF (2). [3] 2 3 β, β 2, β 2, β 2, Επιπλέον, αποδεικνύεται ότι αν το β είναι ρίζα ενός πολυώνυμο στο GF (2) τότε και τα συζυγή β 2, β 2, β 2, είναι επίσης ρίζες του πολυωνύμου [3] Δυαδική Βάση Η δυαδική βάση είναι βασική έννοια για τη θεωρία κωδικοποίησης, γιατί μπορεί να χρησιμοποιηθεί για την υλοποίηση πολλαπλασιαστών. Ορισμός 2.7 Έστω λ i και μ i βάσεις του πεπερασμένου πεδίου GF (2 m ), f μία γραμμική m m συνάρτηση που απεικονίζει το GF (2 ) στο GF (2) και έστω β GF (2 ), b 0. Τότε οι λ i και μ i είναι δυαδικές μεταξύ τους ως προς τα f και β αν: f ( βλi μ j )= { 1 αν i = j 0 αν i j (2.6) όπου λ i είναι πολυωνυμική βάση και η μ i δυαδική βάση Κανονική Βάση m Β={ β, β 2,, β 2 1 } όπου Μία κανονική βάση για το GF (2 m ) είναι μία βάση της μορφής m β GF (2 ). Για κάθε πεπερασμένο πεδίο υπάρχει πάντα τουλάχιστον μία κανονική βάση. Η κανονική βάση είναι ιδιαίτερα χρήσιμη για την απεικόνιση δυνάμεων, καθώς αν το σύνολο {a 0, a 1,, a m 1 } είναι ~23~

24 η αναπαράσταση της κανονικής βάσης του a GF (2 m ) τότε το σύνολο {a m 1,a 0, a 1,, a m 2 } είναι η αναπαράσταση της κανονικής βάσης του a 2. Με την εκμετάλλευση των ιδιοτήτων των κανονικών βάσεων είναι δυνατή η υλοποίηση σε hardware πολλαπλασιαστών σε υψηλή απόδοση. Ακολουθεί πίνακας με τους διαφορετικούς τρόπους αναπαράστασης των στοιχείων του GF (2 4 ) που ορίζεται από το πολυώνυμο p ( x)=x 4 +x +1 Δύναμη του a Πολυωνυμική βάση 1,a,a2,a Δυαδική βάση 1,a3,a2,a Κανονική βάση a3,a6,a12,a Πίνακας 2.2. Αναπαραστάσεις των στοιχείων του GF(24) που ορίζεται από το πολυώνυμο p(x)=x4+x+1 ~24~

25 2.2 Βασικές Αριθμητικές Πράξεις στο GF(2m) και Hardware Υλοποιήσεις τους Πριν αναπτυχθούν οι διάφορες hardware υλοποιήσεις, δίνονται οι έννοιες για κάποια σύμβολα ώστε να είναι πιο κατανοητά τα σχήματα. D : Είναι στοιχείο μνήμης στο οποίο είναι αποθηκευμένο ένα bit πληροφορίας, οπότε συνήθως είναι ένα D flip flop. + : Είναι προσθέτης. Έχει δύο εισόδους και μία έξοδο. Στο GF(2m) είναι αντίστοιχο μιας πύλης XOR gi ή Χ gi : Είναι πολλαπλασιαστής. Έχει μία είσοδο και μία έξοδο και υπολογίζει το πηλίκο της εισόδου με το g i. Στο GF (2 m ) καθώς η είσοδος μπορεί να είναι είτε 1 είτε 0, το συγκεκριμένο σύμβολο λειτουργεί ως διακόπτεις όπου η έξοδος είναι είτε 0 είτε το g i Πρόσθεση στο GF(2m) Όπως προαναφέρθηκε η άθροιση επιτυγχάνεται με πύλες XOR. Συγκεκριμένα μια πολυωνυμική πρόσθεση επιτυγχάνεται συνδέοντας τα ψηφία ίδιας τάξης των δύο προσθετέων με πύλες XOR. Η αλληλουχία των εξόδων των XOR πυλών δημιουργεί το άθροισμα των δύο στοιχείων Πολλαπλασιασμός με μία σταθερά αi Έστω ένα στοιχείο β GF (2 4 ) που θέλουμε να το πολλαπλασιάσουμε με το πρωτογενές στοιχείο του πεδίου α. Από τη σχέση 2.4 γνωρίζουμε ότι το β μπορεί να αναπαρασταθεί πολυωνυμικά ως: β = β 0 + β 1 α+ β 2 α2 + β 3 α3 β i GF (2) (2.7) Έστω ότι στο πεδίο που δουλεύουμε το ελάχιστο πολυώνυμο του στοιχείου α είναι το p ( x)=1+ x+ x 4. Αυτό σημαίνει ότι p (a)=0 1+ a +a 4=0. Με τη βοήθεια αυτής της σχέσης υπολογίζουμε το γινόμενο α β και το εκφράζουμε στη μορφή της σχέσης 2.4: α β= β 3 +( β 0 + β 3 )α+ β 1 α 2 + β 2 α 3 Σχήμα 2.1: Κύκλωμα πολλαπλασιασμού ενός στοιχείου β GF (2 4 ) ~25~ επί το α (2.8)

26 Από την παραπάνω σχέση προκύπτει ότι ο πολλαπλασιασμός αυτός μπορεί να υλοποιηθεί με ένα γραμμικό καταχωρητή ολίσθησης με ανάδραση (Linear Feedback Shift Register LFSR) που φαίνεται στο σχήμα 2.1, φορτώνοντας στους καταχωρητές τους συντελεστές της πολυωνυμικής αναπαράστασης του β. Στην ανερχόμενη παρυφή του ρολογιού ο καταχωρητής θα περιέχει τη διανυσματική αναπαράσταση του γινομένου με τα λιγότερο σημαντικά bits να εμφανίζονται αριστερά. Στον επόμενο παλμό θα περιέχει το β α2, και συνεπώς στον i οστό παλμό του ρολογιού θα περιέχει το γινόμενο β αi. Με λίγες μεταβολές στο παραπάνω σχήμα υπάρχει η δυνατότητα να κατασκευαστεί κύκλωμα που να έχει ως έξοδο το β αi από τον πρώτο παλμό. Είναι προφανές ότι στο δεύτερο παλμό θα εμφανιστεί το γινόμενο β α2i. Συνεχίζοντας το παραπάνω παράδειγμα έστω ότι θέλουμε να υπολογίσουμε απευθείας το γινόμενο β α3 ακολουθώντας τη ίδια μεθοδολογία: β α 3= β 0 α 3 + β 1 α4 + β 2 α5 + β 3 α6 = β 0 α 3 + β 1 (1+α)+ β 2 (α+α 2 )+ β 3 (α 2 +α3 ) 2 3 = β 1 +( β 1 + β 2 )α+( β 2 + β 3 )α +( β 0 + β 3) α Από τα παραπάνω καταλήγουμε στο σχήμα 2.2. Πρακτικά αυτό που είναι διαφορετικό είναι η διασύνδεσητων καταχωρητών μεταξύ τους αντί να είναι σειριακή. Επίσης, η ανάδραση δεν εξαρτάται από τον ίδιο συντελεστή για όλους τους καταχωρητές. Σχήμα 2.2 Κύκλωμα πολλαπλασιασμού ενός στοιχείου β GF (2 4 ) επί το α3 Καθώς οι αλλαγές είναι οι παραπάνω μπορεί να γενικευθεί ότι για τον πολλαπλασιασμό ενός στοιχείου β GF (2 m ) απαιτούνται m registers και το μέγιστο m 1 XOR πύλες και υπάρχει η δυνατότητα να ολοκληρωθεί η διαδικασία σε ένα κύκλο ρολογιού. ~26~

27 2.2.3 Πολλαπλασιασμός δύο στοιχείων του GF(2m) Θεωρούμε δύο στοιχεία β,γ GF (2 4 ) με πολυωνυμικές αναπαραστάσεις: b=b 0 +b 1 α+b 2 α 2 +b 3 α3 b i GF (2) c=c 0 +c1 α+c 2 α2 +c3 α3 c i GF (2) Το γινόμενό τους μετά από πράξεις πολυωνύμων μπορεί να γραφτεί στην παρακάτω μορφή: (2.9) b c=(( (c 3 b )a +c 2 b ) a +c1 b ) a +c 0 b Με κάποιες παραλλαγές στο κύκλωμα του σχήματος 2.2 και από την παραπάνω σχέση μπορεί να σχεδιασθεί το επόμενο κύκλωμα: Σχήμα 2.3. Κύκλωμα Πολλαπλασιασμού Δύο Στοιχείων του GF (2 4 ) Στον πρώτο κύκλο υπολογίζεται το c3 b, στο δεύτερο το c2 b και θα προστεθεί στο πρώτο γινόμενο κ.ο.κ. Είναι προφανές ότι θα χρειαστούν 4 επαναλήψεις ή αλλιώς 4 κύκλοι ρολογιού. Γενικεύοντας για τον πολλαπλασιασμό δύο στοιχείων b,c GF (2m ) με τη χρήση αυτού του κυκλώματος θα χρειαστούν m κύκλοι ρολογιού. Οι απαιτήσεις ενός τέτοιου κυκλώματος είναι 3m καταχωρητές, m πύλες AND, m πύλες XOR. ~27~

28 Εκφράζοντας όμως το γινόμενο με άλλο τρόπο: b c στην παρακάτω μορφή, γίνεται να σχεδιασθεί ο πολλαπλασιαστής b c=(( (c 0 b)+c1 ba ) +c 2 b a 2 )+c3 ba3 (2.10) Έτσι το κύκλωμα του πολλαπλασιασμού μπορεί να σχεδιαστεί σύμφωνα με το παρακάτω σχήμα: Σχήμα 2.4. Εναλλακτική Υλοποίηση Κυκλώματος Πολλαπλασιασμού Δύο Στοιχείων του ~28~ GF (2 4 )

29 2.2.5 Διαίρεση Πολυωνύμων του GF(2) Η διαίρεση πολυωνύμων σε πεδία Galois είναι μία πράξη ιδιαίτερα σημαντική για την κωδικοποίηση κυκλικών κωδικών, όπως οι BCH [6]. Η πράξη της διαίρεσης μπορεί να γίνει αν πρώτα υπολογιστεί ο αντίστροφος του διαιρετέου και αυτός πολλαπλασιαστεί με το διαιρέτη. Ο αντίστροφος ενός στοιχείου β μπορεί να υπολογιστεί από τη σχέση β 2 1=1 οπότε: m m β 1 =β 2 2 Έστω πολυώνυμα d ( x ) βαθμού n και (2.13) g ( x) βαθμού p και συγκεκριμένα: d ( x)=d 0 +d 1x +d 2 x 2 + +d n x n g ( x)=d 0 + g 1x +g 2 x g p x p, με d n και g p μη μηδενικά d ( x) παράγει υπόλοιπο τάξης P 1 και πηλίκο τάξης n p. Παρακάτω δίνεται μία g (x) υλοποίηση πολυωνυμικής διαίρεσης σε hardware. Τότε το Σχήμα 2.5. Κύκλωμα Διαίρεσης Πολυωνύμων Η λειτουργία του παραπάνω κυκλώματος συνοψίζεται στα εξής βήματα: 1. Όλα τα στοιχεία μνήμης μηδενίζονται 2. Ολισθαίνουν οι συντελεστές του d ( x ) p φορές (δηλαδή για p κύκλους ρολογιού), ξεκινώντας με το πιο σημαντικό. 3. Συνεχίζουν και ολισθαίνουν οι συντελεστές του d ( x ). Τα bits τα οποία εξέρχονται μέσω της εξόδου q ( x) αποτελούν τους συντελεστές του πηλίκου, ξεκινώντας από το πιο σημαντικό. 4. Αφού έχουν ολισθήσει όλοι οι συντελεστές του d ( x ) τα στοιχεία της μνήμης αποτελούν το υπόλοιπο, με το πιο σημαντικό bit να είναι στα δεξιά. ~29~

30 Σχήμα 2.6. Παράδειγμα Διαίρεσης Πολυωνύμου προς το g ( x )= x 5 +x +1 Παρακάτω δίνεται ένα κύκλωμα διαίρεσης εναλλακτικής σχεδίασης καθώς θα χρησιμοποιηθεί σε παρακάτω κεφάλαιο. Η λειτουργία του είναι όμοια με το προηγούμενα κύκλωμα. Σχήμα 2.7. Εναλλακτική σχεδίαση κυκλώματος διαίρεσης πολυωνύμων Υπολογισμός του r(ai) r (a i ) είναι ένα πολυώνυμο το οποίο είναι ιδιαίτερα χρήσιμο και συγκεκριμένα στην Το αποκωδικοποίηση BCH κωδίκων. Σε αντιστοιχία με τα προηγούμενα παραδείγματα, έστω ένα πολυώνυμο βαθμού 2m-2 στο GF (2 4 ). Η έκφραση r(a), όπου το α είναι το πρωτογενές στοιχείο του GF (2 4 ) μπορεί να γραφτεί ως εξής: r (a)=r 0 + r 1 a +r 2 a r 14 a 14 (2.14) Μετά από πράξεις το r (a) μπορεί να καταλήξει στην εξής μορφή: r (a)=( ((r 14 a+r 13)a +r12 ) a + ) a+ r 0 ~30~ (2.15)

31 Από την παραπάνω σχέση προκύπτει ότι για τον υπολογισμού το r (a) αρκεί να πολλαπλασιάσουμε το r i a και να το προσθέσουμε με στο r i 1. Αυτό είναι εφικτό αν στο κύκλωμα του σχήματος 2.2 προστεθεί και μία πύλη XOR. Συγκεκριμένα: Σχήμα 2.8 Κύκλωμα για τον υπολογισμό του r(α) Αντίστοιχα μπορεί να υλοποιηθεί το r (a i ), με την προσθήκη μια πύλης XOR στην είσοδο του αντίστοιχου κυκλώματος πολλαπλασιασμού. Γενικά απαιτούνται m καταχωρητές, το πολύ m πύλες XOR και ολοκληρώνεται σε 2 m 1 κύκλους. Λόγω της χρησιμότητάς του r (a i ) θα αναλυθεί ένας εναλλακτικός τρόπος υπολογισμού του r (a i ). Έστω ότι p i (x ) είναι το ελάχιστο πολυώνυμο που αντιστοιχεί στο στοιχείο a i.. Διαιρούμε το r ( x) με το p i (x ) και έχουμε: r ( x)=q ( x ) pi ( x )+b ( x) (2.16) όπου b( x ) είναι το υπόλοιπο της διαίρεσης. Αντικαθιστώντας στη σχέση 2.16 όπου x το a i και λαμβάνοντας υπόψιν ότι p i (a i )=0, βρίσκουμε ότι: r (a i )=b (a i ) (2.17) Η σχέση 2.16 μπορεί να αξιοποιηθεί για το σχεδιασμό ενός διαφορετικού κυκλώματος υπολογισμού του r (a i ). Για παράδειγμα θα θεωρήσουμε ότι θέλουμε να υπολογίσουμε το r (a 3 ). Το ελάχιστο πολυωνύμου του a 3 είναι το p ( x)=1+ x+ x2 +x 3 + x4. Το υπόλοιπο της διαίρεσης θα έχει βαθμό μικρότερο του 4, άρα θα έχει τη μορφή: b( x )=b 0 +b 1 x +b 2 x 2 +b 3 x3 Συνεπώς, r(a 3 )=b (a 3 ) =b 0 +b 1 a +b 2 a +b 3 a =b 0 +b3 a+b 2 a 2 +(b1 +b 2 +b 3 )a 3 Από την παραπάνω σχέση μπορούμε να συμπεράνουμε ότι είναι δυνατό να υπολογιστεί το ζητούμενο με χρήση ενός LFSR και μερικών πυλών XOR. Το κύκλωμα που προκύπτει φαίνεται στο σχήμα 2.8. Οι συντελεστές του b( x ) εμφανίζονται στον καταχωρητή 4 κύκλους ρολογιού μετά την εφαρμογή της εισόδου. Με κατάλληλο συνδυασμό αυτών των συντελεστών βρίσκουμε το ζητούμενο. Στο κύκλωμα αυτό στις θέσεις του LFSR του σχήματος 2.5 εφαρμόζονται οι συντελεστές του ελαχίστου πολυωνύμου. Καθώς το ελάχιστο πολυώνυμο είναι γνωστό εκ των προτέρων αντικαθίστανται οι πύλες AND με ανοιχτοκυκλώματα και βραχυκυκλώματα, για απλοποίηση του hardware. ~31~

32 Φαινομενικά, αυτός ο τρόπος υπολογισμού του r (a i ) δεν υπερτερεί του προηγούμενου ούτε ως προς την ταχύτητα, ούτε ως προς την πολυπλοκότητα του hardware. Το πλεονέκτημά του γίνεται σαφές όταν θέλουμε να σχεδιάσουμε πολλές τιμές του r ( x) στο GF (2 m ). Αυτό συμβαίνει γιατί πολλά διαφορετικά στοιχεία έχουν το ίδιο ελάχιστο πολυώνυμο. Από τον ορισμό 2.6 έχει προκύψει ότι αν ένα στοιχείο β είναι ρίζα του p ( x) του GF (2) τότε και τα συζυγή β 2, β 2, β 2, είναι ρίζες του ίδιου πολυωνύμου. Κατά συνέπεια, τα στοιχεία του πεδίου που είναι άρτιες δυνάμεις του α είναι πάντα ρίζες του ελαχίστου πολυωνύμου ενός στοιχείου που είναι περιττή δύναμη του α. Κατά συνέπεια, είναι δυνατό με το ίδιο LFSR να υπολογίσουμε πολλές διαφορετικές τιμές του πολυωνύμου, μειώνοντας έτσι το απαιτούμενο hardware. 2 3 Για παράδειγμα, τα r (a 3 ) και r (a 6 ) μπορούν να υπολογιστούν από το κύκλωμα του σχήματος 2.8, αφού τα στοιχεία α3 και α6 είναι και τα δύο ρίζες του ελάχιστου πολυωνύμου του α3, p ( x)=1+ x+ x 2 + x 3 + x 4. Όπως και πριν προκύπτει ότι: r (a 6 )=b(a 6 ) =b0 +b 1 a +b 2 a +b 3 a =(b 0 +b 2 )+b 2 a +(b1 + b 2 )a 2 +(b 1 +b 2 +b3 ) a 3 Σχήμα 2.9. Κύκλωμα για υπολογισμό του r (a 3 ) Κατά αντίστοιχο τρόπο, με το ίδιο κύκλωμα και μερικές επιπλέον πύλες XOR μπορούμε να υπολογίσουμε τις τιμές του r (a 3 2 ) l. Η υλοποίηση αυτή είναι ιδιαίτερα χρήσιμη για το σχεδιασμό κυκλωμάτων υπολογισμού των συνδρόμων σε BCH αποκωδικοποιητές, όπως θα αναλυθεί στο επόμενο κεφάλαιο. l ~32~

33 Σχήμα 2.10 Κύκλωμα για υπολογισμού του ~33~ r (a 3 ) και του r (a 6 )

34 Κεφάλαιο 3 Κώδικες BCH Η κωδικοποίηση BCH έχει πάρει την ονομασία της από τους Bose, Ray-Chaudhuri[7] και Hocquenghem[8] οι οποίοι εξέδωσαν τα έργα τους το 1959 και 1960, στα οποία αναπτυσσόταν ο τρόπος σχεδίασης κωδικών στο GF(2) με συγκεκριμένη απόσταση. Αργότερα επεκτάθηκαν σε μη δυαδικούς κώδικες από τους Gorenstein και Zierler το 1961 [9]. Παράλληλα, το 1960 δημοσιεύτηκαν οι κώδικες Reed-Solomon από τους ομώνυμους επιστήμονες. Αργότερα ανακαλύφθηκε ότι οι BCH και RS κώδικες έχουν άμεση σχέση. 3.1 Κατηγορίες BCH Κωδικών Εντός του συγκεκριμένου υποκεφαλαίου θα αναλυθούν κατηγορίες δυαδικών BCH κωδικών. Θα περιοριστεί η ανάλυση στους δυαδικούς, καθώς στο DVB-S2 που θα αναλυθεί στο επόμενο κεφάλαιο οι BCH κώδικες είναι δυαδικοί. Αυτοί οι κώδικες προσφέρουν υψηλή απόδοση και ευκολία στις τεχνικές κωδικοποίησης και αποκωδικοποίησης. Δίνονται οι συμβολισμοί που θα χρησιμοποιούνται, με m 3 και t <2 m 1 από εδώ και στο εξής: Μήκος block: n Μήκος χρήσιμης πληροφορίας: k Διορθωτική ικανότητα κώδικα (αριθμός λαθών που διορθώνονται): t Αριθμός ψηφίων ισοτιμίας: Ελάχιστη απόσταση n k m t d min 2 t +1 Με βάση τους παραπάνω προσδιορισμούς ένα κώδικας BCH συμβολίζεται: BCH (n, k ) BCH (n, k,t ) ή Δυαδικοί Πρωτογενείς BCH Κώδικες Στους πρωτογενείς κώδικες ισχύει: n=2 m 1. Το πολυώνυμο γεννήτορας μπορεί να προσδιοριστεί από τις ρίζες του μέσα στο πεδίο Galois GF (2 m ). Το πολυώνυμο γεννήτορας ενός BCH (n, k,t ) κώδικα είναι το πολυώνυμο του GF(2) ελαχίστου βαθμού, το οποίο έχει ρίζες: a, a 2, a 3,...., a 2t. Άρα: g (a i )=0 για 1 i 2t (3.1) Για να υπολογιστεί το g ( x ), αρκεί να βρεθούν τα ελάχιστα πολυώνυμα p i (x ) των αντίστοιχων στοιχείων a i του πεδίου. Το γινόμενο όλων των p i (x) πληροί τη σχέση 3.1. Καθώς όμως υπάρχει η απαίτηση το g ( x ) να είναι ελαχίστου βαθμού πρέπει να υπολογιστεί το ελάχιστο κοινό πολλαπλάσιο των p i (x ), δηλαδή: ~34~

35 (3.2) g ( x)= LCM { p 1 ( x ) p 2 ( x ) p 2t ( x )} Από τον ορισμό 2.6 και τις ιδιότητες των συζυγών μπορεί η παραπάνω σχέση να απλοποιηθεί. Κάθε άρτια δύναμη του a μπορεί να εκφραστεί ως εξής: l a i =a j 2 a i =(a j )2 l (3.3) Άρα τα συγκεκριμένα a i και a j είναι ρίζες του ίδιου πολυωνύμου p i (x ), συνεπώς έχουν το ίδιο ελάχιστο πολυώνυμο. Τα παραπάνω οδηγούν στην απλοποίηση της σχέσης 3.2, καθώς μπορούν να εξαλειφθούν τα ελάχιστα πολυώνυμα που έχουν άρτιες δυνάμεις με αποτέλεσμα τη μορφή: (3.4) g ( x )= LCM { p 1 ( x ) p 3 ( x)... p 2t 1 ( x)} Στη σχέση 3.4 κάθε πολυώνυμο p i (x ) είναι το πολύ m βαθμού και συνολικά πολλαπλασιάζονται t πολυώνυμα μεταξύ τους. Άρα ο βαθμός του πολυωνύμου του γεννήτορα είναι το πολύ m t. Για μικρό t, τα ψηφία ισοτιμίας n k είναι ίσα με το γινόμενο m t [10] Η Όπως έχει προαναφερθεί, ο πίνακας ελέγχου ισοτιμίας είναι απαραίτητος για την αποκωδικοποίηση, λαμβάνοντας υπ' όψιν ότι κάθε πολυώνυμο που αντιστοιχεί σε κωδική λέξη διαιρείται από το πολυώνυμο γεννήτορα, άρα τα στοιχεία a, a 2, a 3,,a 2t είναι ρίζες του. Έτσι ο πίνακας ελέγχου ισοτιμίας είναι ο παρακάτω: [ 1 a a2 a3 1 a 2 (a 2 )2 (a 2 )3 H = 1 a 3 (a 3 )2 (a 3 )3 1 a 2t (a 2t )2 (a 2t )3 a n 1 (a 2 )n 1 (a 3 )n 1 (a 2t )n 1 ] (3.5) Ο πίνακας αυτός όπως αναφέρθηκε πριν, μπορεί να απλοποιηθεί λόγω της ύπαρξης συζυγών. Καταλήγουμε στην παρακάτω μορφή: [ 1 a a2 a3 1 a2 (a 3 )2 (a 3 ) H= 1 a (a ) (a 5 )3 2t 1 2t 1 2 2t a (a ) (a ) a n 1 (a 3 )n 1 (a 5 )n 1 2t 1 n 1 (a ) ] (3.6) Τα στοιχεία του ελέγχου ισοτιμίας είναι στοιχεία του πεδίου Galois GF (2m ). Μπορούν οπότε να αντικατασταθούν με τις διανυσματικές τους αναπαραστάσεις και να καταλήξει ο πίνακας να περιέχει μόνο δυαδικά στοιχεία. ~35~

36 Αποδεικνύεται ότι η ελάχιστη απόσταση ενός δυαδικού πρωτογενούς BCH κώδικα είναι τουλάχιστον 2t +1 [4] Δυαδικοί μη πρωτογενείς BCH κώδικες Οι δυαδικοί μη πρωτογενείς BCH κώδικες μπορούν να κατασκευαστούν με παρόμοιο τρόπο με αυτό των πρωτογενών. Διαφέρουν στο μήκος block, δηλαδή n 2 m 1 και στο ότι οι ρίζες του πολυωνύμου γεννήτορα β, β 2, β 3,, β 2t είναι μη πρωτογενή στοιχεία του GF (2m ). Το πολυώνυμο γεννήτορας, πάλι υπολογίζεται από το ελάχιστο κοινό πολλαπλάσιο των ελαχίστων πολυωνύμων των β, β 2, β 3,, β 2t. ~36~

37 3.2 BCH Κωδικοποίηση Έστω μία λέξη ως εξής: u μεγέθους k bits η οποία κωδικοποιείται σε μία άλλη λέξη v μεγέθους n bits v ( x)=u (x ) g ( x) Στόχος είναι όμως ο κωδικός να είναι συστηματικός. Η κωδική λέξη της παραπάνω μορφής δεν είναι συστηματική. Καθώς στόχος είναι μια λέξη k bits να μετατραπεί σε κώδικα n bits με τη χρήσιμη πληροφορία αμετάβλητη, αν μετακινηθεί η λέξη n k bits και προστεθεί ένα πολυώνυμο p ( x) του οποίου τα ψηφία είναι τα ψηφία ισοτιμίας επιτυγχάνουμε ένα συστηματικό κώδικα. Η μορφή του είναι η παρακάτω: v ( x )=x n k u ( x)+ p ( x) Είναι εμφανές ότι το (3.7) p ( x) είναι το πηλίκο. Συγκεκριμένα: u ( x) g ( x)=x( n k ) u( x)+ p( x) p ( x)=u ( x)mod g ( x) (3.8) Για να υλοποιηθεί το συγκεκριμένο p ( x) όπως φαίνεται αρκεί ένα κύκλωμα διαίρεσης από το οποίο οι τιμές των καταχωρητών μετά από τους απαιτούμενους κύκλους για την ολοκλήρωση της διαίρεσης p ( x). Όπως είχε αναφερθεί στο προηγούμενο κεφάλαιο, οι αποτελούν τους συντελεστές του καταχωρητές έχουν την τιμή του υπολοίπου της διαίρεσης. Από τα παραπάνω, προκύπτει η υλοποίηση του σχήματος 3.1. είναι αυτή ενός κωδικοποιητή BCH. Η λειτουργία του κυκλώματος είναι η εξής: Οι δύο διακόπτες είναι στη θέση a καθώς προωθούνται τα bits του μηνύματος σειριακά, αρχίζοντας από τα σημαντικότερα. Το κύκλωμα διαίρεσης τροφοδοτείται με τους συντελεστές του μηνύματος, ενώ καθώς ο κάτω διακόπτης είναι στη θέση a, ως έξοδος βγαίνει η είσοδος του μηνύματος. Όπως φαίνεται η συστηματικότητα έχει επιτευχθεί καθώς το μήνυμα αποστέλλεται αυτούσιο. Μετά από k κύκλους, μόλις δηλαδή έχει προωθηθεί ολόκληρο το μήνυμα οι διακόπτες αλλάζουν θέση. Αυτή τη χρονική στιγμή το μήνυμα έχει βγει ολόκληρο αυτούσιο ως έξοδος, ενώ u( x) συγχρόνως έχει ολοκληρωθεί η διαίρεση. Έτσι οι καταχωρητές έχουν πάρει την g ( x) επιθυμητή τιμή του υπολοίπου της διαίρεσης ή αλλιώς τις τιμές των συντελεστών του p ( x). Πλέον για την ολοκλήρωση του κωδικού απομένει να ολισθήσει το u ( x) n k θέσεις και να βγουν ως έξοδος και οι τιμές των καταχωρητών του κυκλώματος. Και τα δύο θα έχουν επιτευχθεί μετά από n k κύκλους ρολογιού. Καθώς ο κάτω διακόπτης βρίσκεται στη θέση b ως έξοδος πλέον είναι ο τελευταίος καταχωρητής, οπότε αρκεί να προωθηθούν οι τιμές των υπολοίπων καταχωρητών για να έχει ολοκληρωθεί η κωδικοποίηση. Αυτό επιτυγχάνεται με τη μετάβαση του πάνω διακόπτη στη θέση b, από την οποία πλέον αποστέλλονται σταθερά μηδενικά κλείνοντας και την ανατροφοδότηση. Με αυτόν τον τρόπο δε μεταβάλλονται οι τιμές των καταχωρητών, ενώ συγχρόνως ολισθαίνουν οι τιμές τους σε κάθε κύκλο ρολογιού. ~37~

38 Σχήμα 3.1. Σειριακό Κύκλωμα Κωδικοποίησης Kωδικών BCH (n, k,t ) Από την παραπάνω ανάλυση της διαδικασίας της κωδικοποίησης φαίνεται ότι συνολικά απαιτούνται n κύκλοι ρολογιού για την ολοκλήρωσή της. Στους δυαδικούς BCH μπορούν να αντικατασταθούν οι πολλαπλασιαστές με ανοιχτά και κλειστά κυκλώματα καθώς το 1 και το 0 είναι οι μόνες δύο πιθανές τιμές. Το κρίσιμο μονοπάτι (critical path) αυτής της αρχιτεκτονικής αποτελείται από δύο XOR πύλες, και η έξοδος της δεξιάς XOR πύλης είναι είσοδος για όλες τις άλλες XOR πύλες. Στην περίπτωση που έχουμε BCH κώδικες μεγάλου μήκους, η αρχιτεκτονική αυτή έχει το μειονέκτημα της μεγάλης καθυστέρησης που εισάγεται από τη δεξιά πύλη XOR, επειδή έχει πολύ μεγάλο fanout. Η υλοποίηση αυτή, αν και γενικά πολύ αποδοτική και χαμηλής πολυπλοκότητας, ενδέχεται να είναι προβληματική σε ορισμένες εφαρμογές λόγω της καθυστέρησης. ~38~

39 3.3 BCH Αποκωδικοποίηση Η αποκωδικοποίηση ενός κώδικα έχει σαφώς μεγαλύτερη πολυπλοκότητα από την κωδικοποίηση. Στους BCH κώδικες η αποκωδικοποίηση χωρίζεται στα παρακάτω στάδια: 1. Υπολογισμός συνδρόμων 2. Υπολογισμός πολυωνύμου εύρεσης λαθών (error locator polynomial). Έχοντας υπολογιστεί τα σύνδρομα, χρησιμοποιούνται διάφορες μεθοδολογίες για τον υπολογισμό του πολυωνύμου, για παράδειγμα ο αλγόριθμος τους Peterson, των Berlekamp-Massey, του Ευκλείδη και των PetersonGorenstein-Ziegler που χρησιμοποιείται για RS κώδικες. Οι ρίζες του πολυωνύμου εύρεσης λαθών παρέχουν μια ένδειξη του πού είναι τα λάθη. 3. Εύρεση των ριζών του πολυωνύμου εύρεσης λαθών. Ύστερα, καθώς έχουν βρεθεί οι ρίζες, διορθώνονται τα στοιχεία της κωδικολέξης που είναι λάθος. Ένας συνήθης αλγόριθμο για την εύρεση των ριζών είναι η Αναζήτηση Chien (Chien search). 4. Για τους μη δυαδικούς κώδικες απαιτείται και ένα τέταρτο βήμα, στο οποίο καθορίζονται οι τιμές των λανθασμένων συμβόλων. Αυτό πραγματοποιείται συνήθως με τον αλγόριθμο του Forney. Καθώς οι κώδικες προς μελέτη είναι δυαδικοί, το τελευταίο στάδιο δε θα αναλυθεί περαιτέρω Υπολογισμός Συνδρόμων Έστω τα πολυώνυμα: c ( x)=c 0 +v 1 x +c 2 x 2 + +c n 1 x n 1 r( x )=r 0 +r 1 x+r 2 x 2 + +r n 1 x n 1 2 n 1 e ( x )=e 0 +e 1 x +e 2 x + +e n 1 x όπου c ( x) είναι η κωδικολέξη χωρίς λάθη, r ( x) είναι η ληφθείσα από τον αποκωδικοποιητή λέξη και e ( x) το πρότυπο λάθους. Αρχικά γνωστό είναι μόνο το r ( x). Στους κώδικες BCH το πολυώνυμο γεννήτορας έχει 2 t ρίζες και συγκεκριμένα: g (a )=g (a 2 )= =g (a 2t )=0 (3.9) Επίσης για μία κωδικοποιημένη λέξη (χωρίς να έχει λάθη) ισχύει ότι οι ρίζες του πολυωνύμου γεννήτορα είναι και ρίζες της, αν γραφτεί σε πολυωνυμική μορφή. Άρα: c (a)=c (a 2 )= =c(a 2t)=0 Για τη λέξη που έχει φτάσει στον αποκωδικοποιητή, δηλαδή την τη σχέση 3.10 προκύπτει ~39~ (3.10) r ( x), ισχύει r ( x)=c( x )+e (x). Από

40 j n 1 j jk S j =r(a )=e (a )= e k a, j=1,2,,2t (3.11) k =0 Τα S 1, S 2,,S 2t ονομάζονται σύνδρομα. Από τη σχέση 2.6 προκύπτει ότι όταν το σύνολο των συνδρόμων έχουν μηδενική τιμή, τότε η ληφθείσα λέξη r ( x) είναι χωρίς λάθη. Έστω ότι η λέξη r ( x) που έφτασε στον αποκωδικοποιητή έχει v λάθη τα οποία βρίσκονται στις θέσεις i 1, i2,,i v με αντίστοιχες τιμές λάθους eij 0. Τότε v v S j = e i (a ) = e i (a ), j il l=1 il j l l =1 v S j = ei X l =1 il με X l =a προκύπτει l l j l (3.12) j=1,2,, 2t Για τους δυαδικούς κώδικες ισχύει ότι e i =1. Οπότε : l v S j = X l j (3.13) l=1 Γνωρίζοντας το X l, είναι γνωστή η θέση του λάθος και το μόνο που χρειάζεται είναι η αντίστροφη τιμή αυτού του bit. Έτσι, τα X l ονομάζονται εντοπιστές λαθών (error locators). Οπότε σε πρώτο βαθμό πρέπει να βρεθούν τα σύνδρομα και παρακάτω να βρεθούν οι εντοπιστές λαθών. Από την παραπάνω περιγραφή και ειδικά από τη σχέση 3.11 είναι εμφανές ότι για την εύρεση των συνδρόμων αρκεί να χρησιμοποιηθεί το κύκλωμα που τελεί την πράξη r (a i ). Συγκεκριμένα προτιμάται να χρησιμοποιηθεί ένα κύκλωμα όπως αυτό του σχήματος 2.10 για την ελαχιστοποίηση της επιφανείας καθώς η υλοποίηση πολλών συνδρόμων μπορεί να γίνει σε κοινό κύκλωμα Πολυώνυμο Εύρεσης Λαθών (Error Locator Polynomial) Από τη σχέση 3.13 προκύπτουν οι παρακάτω σχέσεις: S 1 =X 1 + X X v S 2 =X 21 + X X 2v 2t 2t 2t S 2t =X 1 + X X v (3.14) Οι εξισώσεις αυτές λέγονται ότι είναι το άθροισμα δυνάμεων συμμετρικών συναρτήσεων. Αυτές δίνουν 2t εξισώσεις με άγνωστο αριθμό εντοπιστών λαθών. Πρόκειται για μη γραμμικές εξισώσεις και ένας τρόπος λύσης τους είναι ο εξαντλητικός έλεγχος, ο οποίος όμως δεν είναι υπολογιστικά εύκολος. Γι' αυτό το λόγο, είναι προτιμότερο να εισαχθεί ένα νέο πολυώνυμο, που ονομάζεται πολυώνυμο εύρεσης λαθών (error locator polynomial) το οποίο μεταφέρει το πρόβλημα σε ένα πιο επιθυμητό επίπεδο. Το συγκεκριμένο πολυώνυμο ορίζεται ως εξής: ~40~

41 l l n=1 n=1 Λ( x )= (1 X n x)= (1+ X n x)=λ0 + Λ1 x + + Λv 1 x v 1 + Λv x v Από τη σχέση 3.15 αποδεικνύεται ότι τα Λi αποτελούν τις στοιχειώδεις συναρτήσεις των δηλαδή: Λ0 =1 Λ1= X 1 + X X v Λ2 =X 1 X 2 + X 2 X X v 1 X v Λv =X 1 X 2 X v (3.15) Xi, (3.16) Από τις σχέσεις 3.14 και 3.16 προκύπτει ότι τα σύνδρομα S i μπορούν συνδέονται με τους συντελεστές του πολυωνύμου Λ( x ) μέσω ενός συνόλου εξισώσεων που λέγονται ταυτότητες του Νεύτωνα: S 1 + Λ1 =0 S 2 + Λ1 S 1 +2Λ2 =0 S 3 + Λ1 S 2 + Λ2 S 1 + 3Λ3 =0 S v + Λ1 S v 1 + +vλ v=0 (3.17) ή v S j = Λi S j i (3.18) i=1 Οι παραπάνω ταυτότητες απλοποιούνται όταν ο κώδικας είναι δυαδικός, καθώς τότε iλi =0 για άρτιο. i Από τις σχέσεις 3.17 μπορούν να υπολογισθούν οι ζητούμενοι συντελεστές του πολυωνύμου Λ( x ). Ο βαθμός του πολυωνύμου αυτού δείχνει πόσα λάθη υπάρχουν στη ληφθείσα λέξη, οπότε πρέπει να είναι ίσος ή μικρότερος του t για να αποκωδικοποιηθεί σωστά. Οι σχέσεις αυτές μπορεί να έχουν πολλές λύσεις, οπότε είναι απαραίτητος ο προσδιορισμός του πολυωνύμου Λ( x ) ελαχίστου βαθμού. Για την εύρεση των συντελεστών αυτών, όπως αναφέρθηκε, έχουν αναπτυχθεί διάφοροι αλγόριθμοι από τους οποίους θα αναλυθεί ο Berlekamp-Massey [10]. Ο αλγόριθμος αυτός είναι επαναληπτικός και απαιτεί 2t επαναλήψεις, αφού τα σύνδρομα που είναι γνωστά είναι τα S 1, S 2,,S 2t. Ο αλγόριθμος ξεκινάει από ένα πολυώνυμο Λ(1)( x ) ελαχίστου βαθμού το οποίο ικανοποιεί την πρώτη εξίσωση Νεύτωνα. Έπειτα ελέγχεται αν το πολυώνυμο ικανοποιεί και τη δεύτερη εξίσωση Νεύτωνα. Αν ναι τότε Λ(2) ( x)=λ(1) (x ), αν όχι τότε προστίθεται στο Λ(1)( x ) ένας διορθωτικός όρος έτσι ώστε να ικανοποιείται και η δεύτερη εξίσωση. Στο τελευταίο βήμα του αλγορίθμου έχει υπολογιστεί το Λ(2t ) (x ) και αυτό πλέον θεωρείται ότι είναι το σωστό πολυώνυμο εύρεσης των θέσεων των λαθών από το οποίο θα προκύψει το ζητούμενο πρότυπο λάθους. Πιο συγκεκριμένα, έστω ότι στο μ-οστό βήμα του αλγορίθμου ικανοποιούνται οι πρώτες μ εξισώσεις ( μ) ( μ) ( μ) 2 ( μ) L Νεύτωνα από το πολυώνυμο Λ ( x )=1+ Λ x+ Λ x + + Λ x. Πρακτικά είναι και το μέχρι στιγμής μ ~41~

42 πολυώνυμο εύρεσης λαθών όπου ισχύει: Lμ S j = Λiμ S j i όπου j=l μ +1,, μ i=1 L μ είναι το μήκος του πολυωνύμου στο συγκεκριμένο στάδιο. Υπάρχει περίπτωση να έχει διαφορετική τιμή από το βαθμό του πολυωνύμου, μ, καθώς μπορεί συντελεστές του Λ( μ)( x ) να είναι ίσοι με μηδέν. Σε κάποιο ενδιάμεσο βήμα έχει υπολογιστεί ως πολυώνυμο σύνδεσης το Λ( μ 1)( x) μήκους L μ 1 το οποίο παράγει την ακολουθία [ S 1, S 2,, S μ 1 ] για κάποιο μ 1<2t. Ελέγχουμε αν παράγει και το στοιχείο S μ υπολογίζοντας την έξοδο: L μ 1 S μ = Λ(i μ 1) S μ i i=1 Αν το S μ είναι ίσο με το S μ δεν απαιτείται καμιά αναβάθμιση στο πολυώνυμο δηλαδή, Λ( μ)( x )=Λ( μ 1)( x ) και L μ =L μ 1. Σε διαφορετική περίπτωση έχουμε μια μη μηδενική απόκλιση (discrepancy) που σχετίζεται με το Λ( μ 1)( x) ως εξής: L μ 1 L μ 1 i= 1 i=0 d μ 1 =S μ S μ =S μ + Λ(i μ 1) S μ 1= Λ(i μ 1) S μ 1 (3.19) Συνεπώς για τον υπολογισμό του Λ( μ+1) ( x): d μ =0, τότε Λ( μ+1) ( x)= Λ( μ) ( x), και Αν Αν d μ 0, επαναλαμβάνονται τα βήματα του αλγορίθμου για να βρεθεί ένα πολυώνυμο Λ( ρ )( x ) για το οποίο d ρ 0 και για το οποίο η διαφορά ρ L ρ έχει τη μέγιστη τιμή. Τότε: Λ ( μ+1) L μ+1= L μ. ( μ) ( x)= Λ ( x)+ d μ ( μ ρ) ( ρ) x Λ (x ) dρ Τα παραπάνω αφορούν τόσο τους δυαδικού BCH κώδικες, όσο και τους μη δυαδικούς. Καθώς οι BCH κώδικες που θα αναλυθούν είναι δυαδικοί, οι άρτιες επαναλήψεις θα μπορούν να παραλειφθούν. Αυτό συμβαίνει γιατί το d μ θα είναι μηδέν στις συγκεκριμένες επαναλήψεις. Κατά συνέπεια ο αλγόριθμος γίνεται ταχύτερος καθώς ολοκληρώνεται σε t βήματα, αντί 2t. Η προηγούμενη ανάλυση συνοψίζεται στους παρακάτω τύπους [11,12]: d ( 2μ) n 1 ( 2m) = Λ j S μ j (3.20) j= 0 Λ(2μ+ 2)( x )=Λ(2μ ) ( x)+d ( 2μ) xb( 2μ )( x ) ~42~ (3.21)

43 Β (2μ+ 2) { x 2 B(2μ ) ( x) αν d ( 2μ )=0 ή 2 l ( 2m )>k (x )= x Λ( 2μ) ( x) ( 2μ ) ( 2m ) αν d 0 και 2 l k ( 2μ) d (3.22) Όπου l (2μ) μια βοηθητική μεταβλητή η οποία συμβολίζει το βαθμό του Λ(2μ). Συγκεκριμένα: { ( 2μ) αν d (2μ)=0 ή 2 l (2m ) >k l (2μ+2)= l k +1 l ( 2μ) αν d (2μ) 0 ή 2 l (2m ) k Οι αρχικές συνθήκες είναι: Λ(0) (x )=1, B (0)( x)=1, l ( 0)=0. (3.23) (3.24) Με βάση τις παραπάνω σχέσεις μπορούν εξαχθούν διάφορα συμπεράσματα που αφορούν την υλοποίηση του αλγορίθμου, η οποία φαίνεται στο σχήμα 3.2. Κατ' αρχάς, ο αλγόριθμος μπορεί να υλοποιηθεί με τέσσερις καταχωρητές: έναν καταχωρητή ολίσθησης για τα σύνδρομα, έναν απλό καταχωρητή για τους συντελεστές του Λ( x ), ένα για τους συντελεστές του ενδιάμεσου πολυωνύμου B( x ) και ένα για τα γινόμενα Λ j S m j. Όλοι οι καταχωρητές αποτελούνται από στοιχεία του GF (2 μ ), δηλαδή κάθε στάδιο τους αποτελείται από m bits. Για απλοποίηση προστίθεται ένα ακόμα στάδιο σε κάθε καταχωρητή ολίσθησης, το οποίο χρειάζεται για τις αρχικές συνθήκες. Ο αθροιστής είναι ένας Galois αθροιστής που υλοποιείται με απλές πύλες XOR. Η έξοδος περνάει σε ένα κύκλωμα που υπολογίζει τον αντίστροφο ενός στοιχείου ενός πεδίου Galois, το οποίο μπορεί πολύ απλά να υλοποιηθεί με ένα lookup table, δηλαδή μια μνήμη ROM μεγέθους 2 m m bits. Σχήμα 3.2 Υλοποίηση του αλγορίθμου Berlekamp με καταχωρητές ολίσθησης Εύρεση Θέσεων Λαθών και Διόρθωση Αφού προσδιοριστεί το πολυώνυμο Λ( x ) είναι δυνατή η εύρεση των ριζών του, οι οποίες δείχνουν τις θέσεις των λαθών μέσα στην κωδικολέξη, ώστε να επιτευχθεί τελικά η διόρθωσή της. Γι' αυτό το βήμα έχουν αναπτυχθεί επίσης διάφοροι αλγόριθμοι, δύο εκ των οποίων είναι ο αλγόριθμος του Peterson και ο πλέον διαδεδομένος του Chien. Σύμφωνα με τον αλγόριθμο του Peterson, οι ρίζες του πολυωνύμου Λ( x ) μπορούν να βρεθούν με απλή ~43~

44 αντικατάσταση των εξής απλά βήματα: 1, a,a 2,,a n 1, όπου n=2 m 1 στο Λ( x ). Ο αλγόριθμος αυτός αναλύεται στα 1. Αντικαθίστανται διαδοχικά τα 1, a,a 2,,a n 1 στο πολυώνυμο Λ( x ). 2. Αν Λ(a j )=0 τότε ο αντίστροφος του a j, δηλαδή το a n j είναι ένας αριθμός που προσδιορίζει τη θέση ενός λάθους. Αυτό σημαίνει ότι υπάρχει λάθος στη θέση n j. Λαμβάνουμε υπόψιν ότι a n =1 και a j =a n j. 3. Μετά από n επαναλήψεις έχουν προσδιοριστεί πλήρως όλες οι ρίζες του Λ( x ), άρα και όλα τα λάθη. Συνεπώς γνωρίζουμε το πρότυπο λάθους και διορθώνουμε με modulo 2 πρόσθεση με τη ληφθείσα λέξη. Αργότερα, ο Chien ανέπτυξε έναν ακόμα αλγόριθμο για εύρεση και διόρθωση λαθών, με τον οποίο η αποκωδικοποίηση γίνεται bit προς bit [13]. Σύμφωνα με αυτόν τον αλγόριθμο, τα πιο σημαντικά bits αποκωδικοποιούνται πρώτα. Για να γίνει η αποκωδικοποίηση του bit που βρίσκεται στη θέση n j ο αλγόριθμος υπολογίζει το άθροισμα: 1+ Λ1 a j + Λ2 a 2j+ + Λv a vj Αν το άθροισμα αυτό είναι ίσο με το μηδέν, τότε προφανώς το a j είναι ρίζα του πολυωνύμου Λ( x ) και συνεπώς υπάρχει λάθος στη θέση n j. Το λάθος μπορεί να διορθωθεί αμέσως με απλή αντιστροφή του αντίστοιχου bit της ληφθείσας λέξης. Αν το παραπάνω άθροισμα είναι διάφορο του μηδενός, τότε το bit στη θέση n j είναι σωστό. Η υλοποίηση του αλγορίθμου Chien για δυαδικούς κώδικες φαίνεται στο σχήμα 3.3. Οι αρχικές τιμές των συντελεστών του πολυωνύμου Λ( x ) αποθηκεύονται σε t καταχωρητές ενώ η ληφθείσα ακολουθία αποθηκεύεται σε ένα buffer με τα πιο σημαντικά bits πρώτα. Το κύκλωμα επίσης χρησιμοποιεί t Galois πολλαπλασιαστές, η υλοποίηση των οποίων έχει παρουσιαστεί στο Κεφάλαιο 2. Η συνθήκη Λk =1 ανιχνεύεται μέσω ενός απλός Galois αθροιστή με ένα αντιστροφέα στην έξοδο. Στο σχήμα 3.4 φαίνεται ένα τέτοιο κύκλωμα για m=4. Το κύκλωμα διόρθωσης λαθών λειτουργεί ως εξής: αρχικά η ληφθείσα ακολουθία αποθηκεύεται στο buffer με τα πιο σημαντικά bits πρώτα, και συντελεστές Λk που υπολογίστηκαν από το προηγούμενο βήμα της αποκωδικοποίησης, για παράδειγμα από τον αλγόριθμο Berlekamp, αποθηκεύονται στους καταχωρητές. Οι αρχικές τιμές των Λk θα συμβάλλουν στην ανίχνευση αν υπάρχει λάθος στο πιο σημαντικό bit της ληφθείσας λέξης, που αντιστοιχεί στη θέση n 1. Αν υπάρχει λάθος, η έξοδος του κυκλώματος που ανιχνεύει αν ισχύει η συνθήκη Λk =1 θα είναι το λογικό 1. Συνεπώς ολισθαίνει το πιο σημαντικό bit έξω από το buffer, ώστε να προστεθεί modulo 2 με το 1 και να διορθωθεί. Δηλαδή, αν σε κάθε παρυφή του ρολογιού ολισθαίνει και ένα ακόμα bit της ληφθείσας ακολουθίας έξω από το buffer, η λέξη θα έχει διορθωθεί σε n παρυφές του ρολογιού, δεδομένου ότι δεν υπάρχουν περισσότερα από t λάθη. ~44~

45 Σχήμα 3.3. Κύκλωμα Κυκλικής Εύρεσης Θέσεων και Διόρθωσης των Λαθών Σχήμα 3.4. Παράδειγμα Κυκλώματος Ανίχνευσης Λαθών ~45~

46 Κεφάλαιο 4 Το Πρότυπο DVB-S2 Καθώς οι κώδικες BCH είναι αυτοί του συγκεκριμένου προτύπου, κρίνεται χρήσιμο να αναλυθεί το DVB-S2. Σε αυτό το κεφάλαιο θα αναπτυχθεί το πλαίσιο λειτουργίας του, το είδος της κωδικοποίησης κ.α. 4.1 Εισαγωγή Το Πρόγραμμα Εκπομπής Ψηφιακού Βίντεο (Digital Video Broadcasting, DVB Project) [14,15] διαμορφώθηκε το Σεπτέμβριο του 1993 και το πρώτο πρότυπο που αναπτύχθηκε ήταν το DVB-S, το οποίο χρησιμοποιείται σήμερα από τους περισσότερους δορυφορικούς παρόχους υπηρεσιών σε παγκόσμια κλίμακα. Το DVB-S αναπτύχθηκε στα πλαίσια του DVB και προτυποποιήθηκε από το Ευρωπαϊκό Ινστιτούτο Τηλεπικοινωνιακών Προτύπων (European Telecommunications Standards Institute, ETSI). Είναι σχεδιασμένο ώστε να παρέχει υπηρεσίες τηλεοπτικών προγραμμάτων απευθείας-στην-οικία του χρήστη (direct-to-home) για τις υπηρεσίες BSS (Broadcast Satellite Services) και FSS (Fixed Satellite Services). Απευθύνεται σε ολοκληρωμένους αποκωδικοποιητές δέκτη (Integrated Receiver Decoders, IRDs) για καταναλωτές, καθώς και για συστήματα κεραιών συλλογής (SMATV) και σταθμούς καλωδιακής τηλεόρασης. Το DVB-S παρέχει μια ποικιλία λύσεων που είναι κατάλληλες για εύρη ζώνης αναμεταδότη μεταξύ 26 και 72 MΗz. Σημειώνεται ότι οι καταστάσεις λειτουργίας του συστήματος επεκτάθηκαν ώστε να καλύπτουν επίσης υπηρεσίες διανομής μέσω δορυφόρου, όπως μεταφορά εικόνας και ακουστικού υλικού μεταξύ τηλεοπτικών στούντιο, ή από απομακρυσμένες περιοχές απευθείας στις εγκαταστάσεις του εκπομπού με σκοπό τη Συλλογή Ψηφιακών Δορυφορικών Ειδήσεων ( Digital Satellite News Gathering, DSNG). Το DVB-S2 αποτελεί τη δεύτερη γενιά προτύπων δορυφορικής μετάδοσης στα πλαίσια του προγράμματος DVB και αποτελεί εξέλιξη του προτύπου DVB-S. Το διάγραμμα δομής του συστήματος δίνεται στο σχήμα 4.1 [14]. Η σχεδίασή του είναι τέτοια που επιτρέπει την εξυπηρέτηση πολλαπλών ευρυζωνικών δορυφορικών εφαρμογών, δηλαδή: εφαρμογές τηλεόρασης Κανονικής και Υψηλής Ευκρίνειας (SDTV, HDTV), αλληλεπιδραστικές υπηρεσίες για καταναλωτικές εφαρμογές, όπως η πρόσβαση στο διαδίκτυο επαγγελματικές εφαρμογές, όπως η Ψηφιακή Τηλεόραση και η Συλλογή Ειδήσεων (DSNG), η διανομή τηλεοπτικού σήματος σε επίγειους πομπούς και η διανομή ψηφιακών δεδομένων. Το πρότυπο DVB-S2 αναπτύχθηκε γύρω από τρεις βασικούς άξονες: τη βέλτιστη απόδοση μετάδοσης, την απόλυτη ευελιξία και την όσο το δυνατόν χαμηλότερη πολυπλοκότητα του δέκτη. Το DVB-S2 για να επιτύχει την καλύτερη σχέση μεταξύ πολυπλοκότητας και απόδοσης, επωφελείται από τις πιο πρόσφατες εξελίξεις στην κωδικοποίηση καναλιών, με τη χρήση LDPC κωδικών και τη διαμόρφωση, με τη χρήση QPSK, 8PSK, 16APSK και 32APSK. Το αποτέλεσμα είναι ότι κάτω από τις ίδιες συνθήκες μετάδοσης το DVB-S2 επιτυγχάνει την αύξηση της χωρητικότητας μετάδοσης έως και τριάντα τοις εκατό σε σχέση με το DVB-S. ~46~

47 Σχήμα 4.1. Λειτουργικό διάγραμμα δομής του συστήματος DVB-S2 Όταν χρησιμοποιείται για εφαρμογές σημείου προς σημείου (point to point), όπως για τη μετάδοση δεδομένων σε ένα μόνο χρήστη (unicast) μέσω IP, τότε το κέρδος του DVB-S2 είναι ακόμα μεγαλύτερο σε σχέση με το DVB-S. Η μεταβλητή λειτουργία κωδικοποίησης και διαμόρφωσης (VCM) επιτρέπει διαφορετικές διαμορφώσεις και επίπεδα προστασίας λάθους να χρησιμοποιηθούν και να αλλαχτούν πλαίσιο-πλαίσιο. Αυτό σε συνδυασμό με τη χρήση ενός καναλιού επιστροφής για να επιτύχει την προσαρμοστική κωδικοποίηση και διαμόρφωση (Adaptive Coding and Modulation, ACM) κλειστού βρόχου, επιτρέπει τη βελτιστοποίηση των παραμέτρων μετάδοσης για κάθε μεμονωμένο χρήστη, εξαρτώμενων από τις συνθήκες του δρόμου μετάδοσης. Το γεγονός ότι το DVB-S2 εφαρμόζεται και σε υπάρχοντες δορυφορικούς αναμεταδότες με πληθώρα χαρακτηριστικών μετάδοσης και για διάφορους συνδυασμούς φασματικής απόδοσης και απαιτήσεων λόγου σήματος προς θόρυβο, δείχνει τη σημαντική τους ευελιξία και πρακτικότητα. Επιπλέον, δεν περιορίζεται σε κωδικοποίηση βίντεο και ήχου MPEG-2, αλλά είναι σχεδιασμένο έτσι ώστε να χειρίζεται μια ποικιλία πρωτοκόλλων ήχου, βίντεο και δεδομένων. Ανάμεσα σε αυτά συμπεριλαμβάνονται και σχήματα που βρίσκονται στο στάδιο της προτυποποίησης για μελλοντικές εφαρμογές DVB. Το DVB-S2 προσαρμόζεται σε οποιοδήποτε τύπο ροής εισόδου δεδομένων, όπως είναι η συνεχής ροή bit, απλά ή πολλαπλά Ρεύματα Μεταφοράς MPEG (Transport Streams, TS), πακέτα IP, καθώς και πακέτα του πρωτοκόλλου Ασύγχρονου Τρόπου Μεταφοράς (Asynchronous Transfer Mode, ATM). Το γεγονός αυτό περιορίζει την ανάγκη δημιουργίας ενός νέου προτύπου στο μέλλον. Επίσης πέρα από τη συμβατότητα με το MPEG-2 που χρησιμοποιούταν στο DVB-S, η υιοθέτηση του MPEG-4, το οποίο περιέχει βελτιωμένους αλγορίθμους συμπίεσης, δίνει τη δυνατότητα μετάδοσης τηλεόρασης υψηλής ευκρίνειας με το ίδιο εύρος ζώνης που θα μεταδιδόταν τηλεόραση κανονικής ευκρίνειας με το πρότυπο MPEG-2. ~47~

48 4.2 Βασικά Χαρακτηριστικά Αρχιτεκτονικής Προσαρμογή Ροής Εισόδου Η Προσαρμογή Ροής Εισόδου (Mode and Stream Adaptation) (βλ. Σχήμα 4.1) εξαρτάται από την εξυπηρετούμενη εφαρμογή και αποτελεί τη διεπαφή προς κάθε ρεύμα εισόδου. Οι ακολουθίες εισόδου μπορεί να είναι απλά ή πολλαπλά ρεύματα μεταφοράς, με χρήση πακέτων ή σε συνεχή ροή. Παράλληλα, το μπλοκ Προσαρμογής Ροής Εισόδου διαθέτει διάφορα προαιρετικά εργαλεία για τη λειτουργία της Προσαρμοστικής Κωδικοποίησης και Διαμόρφωσης (Adaptive Coding and Modulation, ACM). Επιπλέον, στην περίπτωση πολλαπλών εισόδων, παρέχει συγχώνευση (merging) όλων των ρευμάτων εισόδου σε ένα απλό μεταδιδόμενο σήμα, και στη συνέχεια τεμαχισμό (slicing) αυτού σε μπλοκ κωδικοποιημένα κατά FEC Forward Error Correction Για να επιτευχθεί από το σύστημα η βέλτιστη απόδοση, το πρότυπο DVB-S2 επωφελείται από τις σύγχρονες εξελίξεις όσον αφορά την κωδικοποίηση καναλιού και τη διαμόρφωση. Αναφορικά με τη χρήση κωδικοποίησης για τη διόρθωση σφαλμάτων, υιοθετείται η τεχνική FEC. Η τεχνική αυτή επιτρέπει την αποκωδικοποίηση στο δέκτη χωρίς να είναι απαραίτητη οποιαδήποτε πληροφορία από τον πομπό. Ως αποτέλεσμα μιας σειράς εργαστηριακών εξομοιώσεων για την εύρεση του πλέον αποδοτικού κώδικα, επιλέχθηκε τελικά μια οικογένεια από απλούς μπλοκ κώδικες με πολύ περιορισμένη αλγεβρική δομή. Οι κώδικες αυτοί είναι οι κώδικες Ελέγχου Ισοτιμίας Χαμηλής Πυκνότητας (Low Density Parity Check, LDPC). Οι LDPC κώδικες χρησιμοποιούν αναδρομικές τεχνικές αποκωδικοποίησης και τα κύρια χαρακτηριστικά τους είναι: το πολύ μεγάλο μήκος των μπλοκ (64800 bits για το κανονικό πλαίσιο και bits για το μικρότερο πλαίσιο) ο τεράστιος αριθμός επαναλήψεων για την αποκωδικοποίηση (περίπου 50), με τη δομή του κώδικα να παρουσιάζει αρκετές περιοδικότητες, οι οποίες ευνοούν την υλοποίηση ενός παράλληλου αποκωδικοποιητή η παρουσία ενός συνδεδεμένου εξωτερικού κώδικα BCH (Bose-Chaundhuri-Hocquenghem) (χωρίς παρεμβολή ψηφίων), ο οποίος χρησιμοποιήθηκε από τους σχεδιαστές ως μια χαμηλού κόστους λύση απέναντι σε σφάλματα που παρατηρούνται σε υψηλούς CNR λόγους. Στο DVB-S2 είναι δυνατή η χρήση δύο ειδών μπλοκ με μήκος ή bits. Η επιλογή αυτή υπαγορεύτηκε από δύο αντικρουόμενες ανάγκες. Τα μπλοκ μεγάλου μήκους βελτιώνουν το σηματοθορυβικό λόγο που επιτυγχάνεται, αλλά ταυτόχρονα αυξάνουν την καθυστέρηση της διαδικασίας διαμόρφωσης και αποδιαμόρφωσης από άκρο σε άκρο. Επομένως για εφαρμογές όπου η καθυστέρηση δεν είναι ιδιαίτερα κρίσιμη, όπως για παράδειγμα η ευρυεκπομπή, ενδείκνυται η χρήση μεγάλων πλαισίων. Αντίθετα για αλληλεπιδραστικές εφαρμογές, όπου οι καθυστερήσεις πρέπει να διατηρούνται σε χαμηλά επίπεδα, τα μικρά πλαίσια είναι πιο αποδοτικά. Η εγγενής ευελιξία του DVB-S2 επιτρέπει την ικανοποίηση μιας μεγάλης ποικιλίας απαιτήσεων. Ανάλογα λοιπόν με την επιλεγμένη διαμόρφωση και τις απαιτήσεις του συστήματος, μπορούν να επιλεγούν ρυθμοί κωδικοποίησης ίσοι με 1/2, 1/4, 1/3, 2/5, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9 και 9/10. Οι χαμηλοί ρυθμοί κωδικοποίησης, δηλαδή 1/2, 1/4, 1/3 και 2/5, έχουν εισαχθεί ώστε να επιτρέπουν τη λειτουργία του συστήματος κάτω από εξαιρετικά άσχημες συνθήκες ζεύξης. Έτσι, σε συνδυασμό με τη χρήση QPSK διαμόρφωσης, το σύστημα είναι σε θέση να λειτουργεί κανονικά, ακόμη και όταν η στάθμη του σήματος είναι κάτω από τη στάθμη του θορύβου. Χωρίς τη χρήση κωδικοποίησης, η πτώση της στάθμης του σήματος κάτω από τη στάθμη του θορύβου θα καθιστούσε αδύνατη τη λήψη σωστής απόφασης για τα ψηφία πληροφορίας στο δέκτη και θα οδηγούσε σε διακοπή της λειτουργίας του συστήματος. ~48~

49 4.2.3 Mapping Κάθε FECFRAME, δηλαδή κάθε κωδικοποιημένο block των ή των bits, θα πρέπει να μετατραπεί από σειριακό σε παράλληλο. Το πιο σημαντικό bit του block αυτού αντιστοιχίζεται στο πιο σημαντικό bit της παράλληλης ακολουθίας. Κάθε παράλληλη ακολουθία αντιστοιχίζεται σε ένα QPSK, 8PSK, 16APSK ή 32APSK αστερισμό, δηλαδή γεννά μία σειρά ( I,Q), το μήκος της οποίας εξαρτάται από τη διαμόρφωση που χρησιμοποιείται. Η έξοδος του block που κάνει το mapping (βλ. Σχήμα 4.1) λέγεται XFECFRAME (complex FECFRAME), και αποτελείται από μία σειρά συμβόλων, κάθε ένα από τα οποία είναι ένα μιγαδικό διάνυσμα της μορφής ( I,Q). Με I συμβολίζεται ο in-phase συντελεστής και με Q ο quadrature συντελεστής Πλαισίωση Για το σύστημα DVB-S2 η διαδικασία της πλαισίωσης υλοποιείται σε δυο διαφορετικά επίπεδα. Το πρώτο αφορά το φυσικό επίπεδο, μεταφέροντας λίγα bits σηματοδοσίας στα οποία παρέχεται υψηλή ασφάλεια. Το δεύτερο περιλαμβάνεται στο επίπεδο της βασικής ζώνης, μεταφέροντας μια ποικιλία από bits σηματοδοσίας, κάτι που επιτρέπει τη μέγιστη ευελιξία κατά την προσαρμογή του σήματος εισόδου. Πλαισίωση φυσικού επιπέδου Κατά τη διαδικασία της αποδιαμόρφωσης και της αποκωδικοποίησης FEC, ο δέκτης πρέπει να συγχρονίζεται και να ανιχνεύει τις παραμέτρους της διαμόρφωσης και της κωδικοποίησης που χρησιμοποιήθηκαν από τον πομπό. Αυτός είναι ο σημαντικότερος σκοπός της πλαισίωσης φυσικού επιπέδου, μέσω της οποίας παρέχεται συγχρονισμός και σηματοδοσία στο φυσικό επίπεδο. Ο συγχρονισμός του δέκτη επιτυγχάνεται με την ανάκτηση του φέροντος και της φάσης, καθώς και με συγχρονισμό των πλαισίων. Μέσα σε ένα πλαίσιο η διαμόρφωση και το σχήμα της κωδικοποίησης είναι ομογενή, αλλά είναι δυνατόν να μεταβάλλονται σε διαδοχικά πλαίσια όταν χρησιμοποιείται μεταβλητή κωδικοποίηση και διαμόρφωση (VCM). Σημειώνεται ότι η δομή πλαισίωσης φυσικού επιπέδου είναι ανεξάρτητη της εφαρμογής. Κάθε πλαίσιο PL αποτελείται από: 1. ένα ωφέλιμο φορτίο των bits (κανονικό πλαίσιο FEC) ή bits (σύντομο πλαίσιο FEC), το οποίο παράγεται από την κωδικοποίηση των bits του χρήστη σύμφωνα με το επιλεγμένο σχήμα FEC, επομένως το ωφέλιμο φορτίο αντιστοιχεί σε ένα μπλοκ του συνδυασμένου κώδικα LDPC/BCH 2. μια Επικεφαλίδα PL, η οποία περιέχει πληροφορία συγχρονισμού και σηματοδοσίας, δηλαδή τον τύπο της διαμόρφωσης, το ρυθμό κωδικοποίησης, το μήκος πλαισίου και την παρουσία ή απουσία κάποιων πιλοτικών συμβόλων, τα οποία συχνά χρησιμοποιούνται για διευκόλυνση του συγχρονισμού Η Επικεφαλίδα PL στο DVB-S2 αποτελείται πάντα από 90 σύμβολα και το ωφέλιμο φορτίο αποτελείται από ένα ακέραιο πολλαπλάσιο των 90 συμβόλων (εξαιρώντας τα πιλοτικά σύμβολα). Σημειώνεται ότι η επικεφαλίδα PLαποκωδικοποιείται πρώτη από το δέκτη. Για το λόγο αυτό, δεν προστατεύεται από το ισχυρό σχήμα κωδικοποίησης LDPC/BCH. Εξαιτίας όμως της σπουδαιότητάς της, η επικεφαλίδα πρέπει να αποκωδικοποιείται ορθά ακόμη και κάτω από τις χειρότερες δυνατές συνθήκες της ζεύξης. Επομένως, οι σχεδιαστές επέλεξαν για αυτή ένα πολύ χαμηλό ρυθμό κωδικοποίησης (7/64), κατάλληλο για αποκωδικοποίηση μέσω ενός συσχετιστή. Ταυτόχρονα, ελαχιστοποιήθηκε ο αριθμός των bit σηματοδοσίας, ώστε να μειωθεί η πολυπλοκότητα της αποκωδικοποίησης και η απώλεια αποδοτικότητας. ~49~

50 Πλαισίωση επιπέδου βασικής ζώνης Το δεύτερο επίπεδο δομής πλαισίωσης, αυτό της βασικής ζώνης, επιτρέπει μια πιο ολοκληρωμένη λειτουργικότητα σηματοδοσίας, ώστε να ρυθμιστεί ο δέκτης σύμφωνα με τις διάφορες εφαρμογές, οι οποίες μπορεί να περιλαμβάνουν απλά ή πολλαπλά ρεύματα εισόδου, ρεύματα γενικής χρήσης ή ρεύματα μεταφοράς, Σταθερή Κωδικοποίηση και Διαμόρφωση (Constant Coding and Modulation, CCM) ή Προσαρμοστική Κωδικοποίηση και Διαμόρφωση (Adaptive Coding and Modulation, ACM). Η επικεφαλίδα βασικής ζώνης έχει μέγεθος 80 bits και τοποθετείται μπροστά από το πεδίο δεδομένων. Σκοπός της είναι να γνωστοποιήσει στο δέκτη το σχήμα της ροής εισόδου και την κατάλληλη λειτουργία για την προσαρμογή του. Παρά το μεγάλο πλήθος των ψηφίων σηματοδοσίας στην επικεφαλίδα (80), δεν θυσιάζεται η αποδοτικότητα της μετάδοσης ούτε η ανοχή έναντι του θορύβου. Η επικεφαλίδα BB μεταφέρει και επιπλέον πληροφορίες σηματοδοσίας, όπως χαρακτηρισμό των ρευμάτων εισόδου του διαμορφωτή, περιγραφή της θέσης και των χαρακτηριστικών των πακέτων χρήστη, ένδειξη της παρουσίας πρόσθετων bit στο μεταδιδόμενο BBFRAME (baseband frame), σήμανση της ενεργοποίησης ορισμένων επιλογών, όπως είναι η συνάρτηση διαγραφής των μηδενικών πακέτων και η συνάρτηση συγχρονισμού της ροής εισόδου και ένδειξη για το σχήμα διαμόρφωσης και για τον παράγοντα roll-off που έχει επιλεγεί Διαμόρφωση Για τη μετάδοση των ψηφίων πληροφορίας μέσω του δορυφορικού καναλιού υπάρχει η δυνατότητα επιλογής ανάμεσα σε τέσσερις αστερισμούς διαμόρφωσης (βλ. Σχήμα 1). Όπως έχει αναφερθεί, οι διαμορφώσεις QPSK και 8PSK διαθέτουν σταθερή περιβάλλουσα, επομένως μπορούν να χρησιμοποιηθούν σε μη γραμμικούς δορυφορικούς αναμεταδότες που λειτουργούν κοντά στον κορεσμό. Για το λόγο αυτό, χρησιμοποιούνται συνήθως σε εφαρμογές ευρυεκπομπής, επιτυγχάνοντας υψηλή απόδοση ισχύος. Από την άλλη, τεχνικές ανώτερης τάξεως, όπως 16APSK και 32APSK, είναι ευαίσθητες σε πιθανές μη γραμμικότητες. Έτσι, απαιτούν ένα υψηλότερο επίπεδο CNR, καθώς και την ελαχιστοποίηση της μη γραμμικότητας του αναμεταδότη. Οι τεχνικές αυτές υπερέχουν ως προς τη φασματική απόδοση και προορίζονται κυρίως για επαγγελματικές εφαρμογές. Σημειώνεται ότι οι αστερισμοί 16APSK και 32APSK έχουν βελτιστοποιηθεί έτσι ώστε να λειτουργούν σε ένα μη γραμμικό αναμεταδότη τοποθετώντας τα σημεία σε κύκλους, όπως φαίνεται και στο Σχήμα 4.2. Επιλέγοντας κατάλληλα τον αστερισμό διαμόρφωσης και τα ποσοστά κωδικοποίησης, είναι δυνατό να επιτευχθούν φασματικές αποδόσεις από 0.5 έως 4.5 bit ανά σύμβολο. Οι επιλογές γίνονται ανάλογα με τις δυνατότητες και τους περιορισμούς του χρησιμοποιούμενου δορυφορικού αναμεταδότη. Αναφορικά με την τιμή του συντελεστή roll-off, ο οποίος καθορίζει το σχήμα και τη διεύρυνση του φάσματος, υπάρχουν τρεις δυνατότητες. Στο DVB-S2 μπορεί να χρησιμοποιηθεί η τιμή α=0.35, κάτι που συμβαίνει και με το DVB-S. Όμως, υπάρχουν και δυο άλλες δυνατές τιμές, για α=0.25 ή 0.20, οι οποίες παρέχουν αυστηρότερο περιορισμό του σχήματος του εύρους ζώνης. ~50~

51 Σχήμα 4.2. Οι τέσσερις αστερισμοί διαμόρφωσης του DVB-S2 4.3 Συμβατότητα με το DVB-S Η προτυποποίηση του DVB-S ολοκληρώθηκε το 1993 και έκτοτε αποτελεί το πλέον διαδεδομένο πρότυπο για δορυφορική μετάδοση. Τα πλεονεκτήματα του και κυρίως η ευελιξία της λειτουργίας του οδήγησαν στην υιοθέτηση του από την πλειοψηφία των δορυφορικών αναμεταδοτών ανά την υφήλιο. Το DVB-S2, η προδιαγραφή δεύτερης γενιάς για δορυφορική μετάδοση, έρχεται να αντικαταστήσει το DVB-S παρέχοντας νέες δυνατότητες. Ο μεγάλος όμως αριθμός των δεκτών DVB-S που είναι ήδη εγκατεστημένοι καθιστά πολύ δύσκολη τη σκέψη της πλήρους αντικατάστασης των τερματικών πρώτης γενιάς από εκείνα του DVB-S2. Για το λόγο αυτό, απαιτείται συμβατότητα με τα συστήματα της προηγούμενης γενιάς, η οποία θα επιτρέψει στους DVB-S δέκτες να συνεχίσουν να λειτουργούν. Ταυτόχρονα, οι νέοι, προηγμένοι δέκτες θα απολαμβάνουν επιπλέον χωρητικότητα και νέες υπηρεσίες. Στο τέλος της μεταβατικής περιόδου και όταν όλοι οι δέκτες θα έχουν αναβαθμιστεί σύμφωνα με το πρότυπο DVB-S2, δεν θα είναι πλέον απαραίτητη η συμβατότητα με παλαιά τερματικά, αφού το σύνολο των χρηστών θα μπορεί να αξιοποιεί πλήρως τις δυνατότητες του DVB-S2. Στο DVB-S2 έχει προβλεφθεί η συνύπαρξη δεκτών παλιάς και νέας γενιάς, έτσι έχουν καθοριστεί προαιρετικές λειτουργίες συμβατότητας προς τα πίσω (Backwards Compatibility, BC). Οι λειτουργίες αυτές συνίστανται στην αποστολή δυο ρευμάτων μεταφοράς από ένα απλό δορυφορικό κανάλι. Το πρώτο ρεύμα ονομάζεται Υψηλής Προτεραιότητας (High Priority, HP) και είναι συμβατό τόσο με το DVB-S όσο και με το DVB-S2. Το δεύτερο καλείται Χαμηλής Προτεραιότητας (Low Priority, LP) και είναι συμβατό αποκλειστικά με δέκτες DVB- S2. ~51~

52 4.4 Χρήση κωδικών BCH στο DVB-S2 Στην παρούσα εργασία στόχος είναι η σχεδίαση και υλοποίηση ενός BCH αποκωδικοποιητή για DVB-S2 συστήματα. Γι' αυτό το λόγο παρακάτω θα αναλυθεί με περισσότερη λεπτομέρεια το θέμα της κωδικοποίησης καναλιού για ανίχνευση και διόρθωση λαθών στο δέκτη (FEC). Το υποσύστημα FEC encoding (βλ. Σχήμα 4.1) πραγματοποιεί την εξωτερική κωδικοποίηση με BCH κώδικες, την εσωτερική κωδικοποίηση με LDPC και το bit interleaving. Μετά την Προσαρμογή Ροής Εισόδου, στην είσοδο του υποσυστήματος μπαίνει ένα block δεδομένων που λέγεται BBFRAME (Base-Band FRAME). Η K bch bits υπόκειται σε έξοδος του υποσυστήματος είναι ένα FECFRAME. Κάθε BBFRAME των επεξεργασία από το υποσύστημα ώστε να μετατραπεί σε ένα FECFRAME των n ldpc bits. Τα ψηφία ισοτιμίας του BCH κώδικα (BCHFEC) τοποθετούνται μετά το BBFRAME, και κατόπιν τοποθετούνται τα ψηφία ισοτιμίας του LDPC (LDPCFEC), όπως φαίνεται και στο Σχήμα 4.3. Σχήμα 4.3. Μορφή δεδομένων μετά και την κωδικοποίηση με LDPC Το n ldpc μπορεί να παίρνει δύο διαφορετικές τιμές, ανάλογα με τον τρόπο λειτουργίας του συστήματος. Το DVB-S2 υποστηρίζει κανονικό μήκος πλαισίου με n ldpc=64800 bits και μικρό μήκος πλαισίου με n ldpc=16200 bits. Στους Πίνακες 4.1 και 4.2 φαίνονται οι διάφορες παράμετροι κωδικοποίησης ανάλογα με τον επιλεγόμενο ρυθμό κώδικα για κανονικό και μικρό πλαίσιο αντίστοιχα. Πίνακας 4.1. Παράμετροι κωδικοποίησης για κανονικό μήκος πλαισίου ~52~

53 Πίνακας 4.2. Παράμετροι κωδικοποίησης για μικρό μήκος πλαισίου BCH Κωδικοποίηση Σε κάθε BBFRAME εφαρμόζεται ένας BCH κώδικας διόρθωσης t λαθών για να παραχθεί ένα προστατευμένο από λάθη πακέτο. Για κανονικό μήκος πλαισίου δουλεύουμε στο GF (216 ) ενώ για μικρό μήκος πλαισίου στο GF (214 ). O BCH κώδικας απαιτούμε να διορθώνει μεταβλητό αριθμό λαθών ανάλογα με το ρυθμό του LDPC κώδικα και γι' αυτό το λόγο διατηρούμε πίνακες με πολυώνυμα γεννήτορες, και συγκεκριμένα τους Πίνακες 4.3 και 4.4. Το πολυώνυμο γεννήτορας του BCH κώδικα που διορθώνει t λάθη προκύπτει πολλαπλασιάζοντας τα t πρώτα πολυώνυμα του πίνακα 4.3 (για κανονικό μήκος πλαισίου) ή του 4.4 (για μικρό μήκος πλαισίου). Στην ουσία τα g i ( x ) αποτελούν ελάχιστα πολυώνυμα των αντίστοιχων στοιχείων a i του εκάστοτε πεδίου Galois. Έτσι, ο πολλαπλασιασμός τους δίνει ένα πολυώνυμο γεννήτορα, όπως αναφέρεται και στην ενότητα Με γνωστό πλέον το πολυώνυμο γεννήτορα, κωδικοποιούμε τα δεδομένα με συστηματική κωδικοποίηση, σύμφωνα δηλαδή με τις Σχέσεις 3.7 και 3.8 του Κεφαλαίου 3. Η έξοδος του BCH κωδικοποιητή είναι ένα block δεδομένων μήκους N bch, το οποίο και περνάει στον εσωτερικό LDPC κωδικοποιητή. Πίνακας 4.3. Πολυώνυμα BCH για κανονικό μήκος πλαισίου ~53~

54 Πίνακας 4.4. Πολυώνυμα BCH για μικρό μήκος πλαισίου BCH Αποκωδικοποίηση Στον δέκτη η κωδικοποιημένη πληροφορία μήκους n ldpc περνάει πρώτα από τον LDPC αποκωδικοποιητή, ο οποίος παράγει ένα block μήκους k ldpc =N bch. Για την αποφυγή πιθανών λαθών σε χαμηλά bit error rates (BER) απαιτείται να ακολουθήσει και η BCH αποκωδικοποίηση. ~54~

55 Κεφάλαιο 5 Σχεδιασμός και Υλοποίηση Στο παρακάτω κεφάλαιο θα αναλυθεί ο σχεδιασμός του συστήματος κωδικοποίησης και αποκωδικοποίησης BCH, συμβατό με το πρότυπο DVB-S2 για όλους τους ρυθμούς κώδικα σε κανονικό μήκος πλαισίου. Καθώς στόχος ήταν να καλύπτονται οι 11 διαφορετικοί ρυθμοί κώδικα, με την όσο το δυνατόν μικρότερη αύξηση μεγέθους επιλέχθηκαν να χρησιμοποιηθούν αλγόριθμοι που θα ικανοποιούσαν μία τέτοια συνθήκη. Θα υπάρξει περαιτέρω αναφορά στις επιλογές αυτές στην επιμέρους ανάλυση των διάφορων υποσυστημάτων. Καθώς οι BCH κώδικες σε μικρό μήκος πλαισίου είναι κώδικες στο GF (214 ) αντί του GF (216 ), η επιφανειακή αύξηση του συστήματος θα ήταν σημαντική, οπότε αποφασίστηκε η υλοποίηση μόνο για κανονικά πλαίσια. Όπως θα αναλυθεί και σε παρακάτω κεφάλαιο, για το σωστό σχεδιασμό του συστήματος κατασκευάστηκαν αρχικά, ένα θεωρητικό/μαθηματικό και ένα «bit true» μοντέλο στο Matlab ώστε να βοηθήσουν στην καλύτερη κατανόηση και τον έλεγχο του συστήματος. Στην ανάλυση αυτού του κεφαλαίου θα θεωρηθεί ότι το σύστημα αυτό είναι BCH (n, k,t ) και συγκεκριμένα για λόγους ευκολίας το BCH (16200,16008,12), χωρίς αυτό να σημαίνει ότι απαιτούνται αλλαγές για τους άλλους ρυθμούς. 5.1 Γενική Υλοποίηση To σύστημα κωδικοποιητή/αποκωδικοποιητή αποτελείται από διάφορα επιμέρους υποσυστήματα (components) τα οποία για λόγους οργάνωσης θα χωριστούν με το παρακάτω τρόπο: Παραγωγός Λέξεων Components Κωδικοποίησης: είναι τα components τα οποία υλοποιούν την κωδικοποίηση Components Αποκωδικοποίησης: είναι τα components τα οποία υλοποιούν την αποκωδικοποίηση Περιφερειακά Components Λειτουργίας και Μετρήσεων: είναι τα components τα οποία είναι απαραίτητα για τη σωστή λειτουργία του συστήματος (όπως ένα component που στέλνει σήματα on off στα διάφορα άλλα υποσυστήματα), χρησιμεύουν στις μετρήσεις (όπως το component προσομοίωσης του AWGN) και στοιχεία μνήμης. Όπως φαίνεται στο σχήμα 5.2 ο παραγωγός λέξεων αποστέλλει τη λέξη σειριακά. Ταυτόχρονα ξεκινάει η διαδικασία της κωδικοποίησης. Μετά από τους απαραίτητους n κύκλους για την ολοκλήρωση της κωδικοποίησης, η κωδικολέξη προωθείται σε στοιχείο μνήμης για σύγκριση όσον αφορά τις μετρήσεις. Συγχρόνως στέλνεται σε 2μπιτο κανάλι στο component προσομοίωσης του AWGN, το οποίο εξάγει και πάλι σε 2μπιτη έξοδο την πληροφορία αφού της έχει προστεθεί θόρυβος. Η έξοδος του AWGN component αποτελεί τη ληφθείσα λέξη του κωδικοποιητή, ο οποίος τη συγκεντρώνει σε ένα στοιχείο μνήμης. Κατά τη διάρκεια της κωδικοποίησης, κατά τη διαδικασία διόρθωσης, παράλληλα γίνεται έλεγχος των διορθωμένων bit με τα bit της κωδικοποιημένη λέξης προτού σταλεί. Τη διαδικασία ενεργοποίησης και συγχρονισμού των διαφορετικών components το έχει αναλάβει το component switches. Ακολουθεί η σχεδίαση του συστήματος, η οποία έχει παραχθεί από το HDL Designer και ένα απλοποιημένο σχήμα στο οποίο έχουν παραληφθεί αρκετά components. ~55~

56 Σχήμα 5.1. Κύκλωμα Κωδικοποίησης/Αποκωδικοποίησης BCH με Κανάλι Θορύβου

57 Σήματα Ενεργοποίησης Διάφορων Components Κωδικοποίησης Παραγωγός Λέξεων Λέξη Switches Κωδικολέξη Κωδικοποιητής Έλεγχος/ Συγκριση Σήματα Ενεργοποίησης Διάφορων Components Αποκωδικοποίησης AWGN Διορθωμένη Λέξη Ληφθείσα Λέξη Αποκωδικοποιητής Σχήμα 5.2. Απλοποιημένο Σχήμα Συστήματος BCH Κωδικοποίησης/Αποκωδικοποίησης και Ελέγχου Για καλύτερη κατανόηση των κωδικών VHDL που θα δοθούν παρακάτω σημειώνεται ότι τα NBCH(rate) και KBCH(rate) αποτελούν τα αντίστοιχα n bch & k bch. Το σήμα rate αποτελεί είσοδος του συστήματος και το ρυθμίζει να λειτουργεί στους 11 διαφορετικούς ρυθμούς του DVB-S2. Οι μεταβολές του rate κατά τα πειράματα γίνονταν μέσω μικρών αλλαγών στον κώδικα, λόγω έλλειψης διακοπτών στο FPGA, οπότε δεν έχει τοποθετηθεί ως είσοδος. Για λειτουργίες διαφορετικές των πειραμάτων,θα μπορούσε να λειτουργήσει το σύστημα με το rate για είσοδο, όπως και δοκιμάστηκε. Παρακάτω ακολουθεί ο κώδικας του BCH_ENC_DEC, δηλαδή του συστήματος. Αυτός ο κώδικας διασυνδέει τα διάφορα components μεταξύ τους LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; use work.u_constants_pkg.all; use ieee.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity U_BCH_Enc_Dec is port ( clk : in STD_LOGIC; rst_sw : in STD_LOGIC; snr: in STD_LOGIC_VECTOR(5 downto 0); times: OUT STD_LOGIC_VECTOR(0 to 31); out_errors: OUT STD_LOGIC_VECTOR(0 to 31)); end U_BCH_Enc_Dec; architecture struct of U_BCH_Enc_Dec is component ram port( clka : wea : addra : dina : douta : end component; in in in in out std_logic; std_logic_vector(0 downto 0); std_logic_vector(15 downto 0); std_logic_vector(0 downto 0); std_logic_vector(0 downto 0)); ~57~

58 COMPONENT U_Switches IS PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; enc_counter: IN STD_LOGIC_VECTOR(0 to 15); buf_counter: IN STD_LOGIC_VECTOR(0 to 15); syn_counter: IN STD_LOGIC_VECTOR(0 to 16); chien_counter: IN STD_LOGIC_VECTOR(0 to 15); enchien_out: IN STD_LOGIC; en_enc: OUT STD_LOGIC; enbuf: OUT STD_LOGIC; ensyn: OUT STD_LOGIC; enber: OUT STD_LOGIC; buf_count_rst: OUT STD_LOGIC; outaddr : OUT STD_LOGIC_VECTOR(0 to 15); out_times: IN STD_LOGIC_VECTOR(0 to 31) ); END COMPONENT; component U_enc_input is port ( clk : IN STD_LOGIC; rst : IN STD_LOGIC; en_enc: IN STD_LOGIC; ensyn: IN STD_LOGIC; msg : OUT STD_LOGIC); end component U_enc_input; component U_Encoder IS PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; en_enc: IN STD_LOGIC; msg : IN STD_LOGIC; code : OUT STD_LOGIC; enc_counter: OUT STD_LOGIC_VECTOR (0 to 15)); end component U_Encoder; component U_Buf_Enc is port( clk : in rst : in enbuf : in code : in enc_code : out delay_buf : out std_logic; std_logic; std_logic; std_logic; std_logic_vector(0 to 1); std_logic); end component U_Buf_Enc ; component U_Buffer PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; enbuf : IN STD_LOGIC; buf_count_rst: IN STD_LOGIC; ramen_sw : OUT STD_LOGIC_VECTOR(0 to 0); inaddr : OUT STD_LOGIC_VECTOR(0 to 15); ~58~

59 87 buf_counter: OUT STD_LOGIC_VECTOR(0 to 15)); 88 end component U_Buffer; component U_Buf_Dec is 91 port( 92 clk : in std_logic; 93 delay_buf : in std_logic; 94 r_snr : in std_logic_vector(0 to 1); 95 rbuf : out std_logic); 96 end component U_Buf_Dec ; component u_noise is 100 port(clk : in std_logic; 101 rst : in std_logic; 102 dinready: in std_logic; 103 enc_code: in std_logic_vector (1 downto 0); 105 snr: in std_logic_vector (5 downto 0); 104 doutready: out std_logic; 105 r_snr: out std_logic_vector(0 to 1)); 106 end component u_noise ; component U_Decoder IS 110 PORT( 111 clk : IN STD_LOGIC; 112 rst : IN STD_LOGIC; 113 ensyn: IN STD_LOGIC; 114 enber: IN STD_LOGIC; 115 r : IN STD_LOGIC; 116 enc_msg : IN STD_LOGIC; 117 out_times: OUT STD_LOGIC_VECTOR (0 to 31); 118 out_errors: OUT STD_LOGIC_VECTOR (0 to 31); 119 syn_counter: OUT STD_LOGIC_VECTOR (0 to 16); 120 chien_counter: OUT STD_LOGIC_VECTOR (0 to 15); 121 enchien_out: OUT STD_LOGIC); 122 end component U_Decoder; signal msg,code,rst,rst_inv: STD_LOGIC; 126 signal enbuf,ensyn,enber,enchien_out,r,enc_msg,rbuf: STD_LOGIC; 127 signal en_enc,buf_count_rst: STD_LOGIC; 128 signal delay : STD_LOGIC :='1'; 129 signal ramaddr,inaddr,ramencaddr,enc_counter,buf_counter,chien_counter: STD_LOGIC_VECTOR (0 to 15); 130 signal syn_counter: STD_LOGIC_VECTOR (0 to 16); 131 signal outaddr: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 132 signal ramin,ramout,ramout_test,ramen_sw,ramen,ramencen,ramencout,ramencin: STD_LOGIC_VECTOR (0 to 0); 133 signal out_times: STD_LOGIC_VECTOR (0 to 31); 134 signal enc_code,r_snr: STD_LOGIC_VECTOR (0 to 1); 135 signal delay_buf,ready_in,ready_out: STD_LOGIC; 136 signal snr_out1,snr_out2: STD_LOGIC_VECTOR (5 downto 0); begin U_Ram_enc : ram 141 PORT MAP ( 142 clka => clk, 143 wea => ramencen, ~59~

60 addra => ramencaddr, dina => ramencin, douta => ramencout ); U_Ram_dec: ram PORT MAP ( clka => clk, wea => ramen, addra => ramaddr, dina => ramin, douta => ramout ); u_snr: u_noise port map( clk => clk, rst => rst_inv, dinready => ready_in, enc_code => enc_code, snr =>snr doutready => ready_out, r_snr =>r_snr ); 167 U_sw : U_Switches port map(clk,rst,enc_counter,buf_counter,syn_counter,chien_counter,enchien_out,en_en c,enbuf,ensyn,enber,buf_count_rst,outaddr,out_times); 168 U_enc_in : U_enc_input port map(clk,rst,en_enc,ensyn,msg); 169 U_enc : U_Encoder port map (clk,rst,en_enc,msg,code,enc_counter); 170 U_B_Enc: U_Buf_Enc port map(clk,rst,enbuf,code,enc_code,delay_buf); 171 U_rbuf : U_Buffer port map (clk,rst,enbuf,buf_count_rst,ramen_sw,inaddr,buf_counter); 172 U_B_Dec: U_Buf_Dec port map(clk,delay_buf,r_snr,rbuf); 173 U_dec : U_Decoder port map (clk,rst,ensyn,enber,r,enc_msg,out_times,out_errors,syn_counter,chien_counter,e nchien_out); times<=out_times; 176 ready_in<=en_enc; U_BCH_Enc_Dec_proc: Process (clk) 179 begin 180 if (clk'event AND clk='1') then 181 rst<=rst_sw; 182 rst_inv<=not(rst); 183 if rst='0' then 184 if ramen_sw(0)='1' then 185 if delay='1' then 186 delay<='0'; ramin(0)<=(rbuf); 189 if inaddr<=(nbch(conv_integer(rate))-1) then 190 ramen<="1"; ramen<="0"; if (conv_integer(inaddr)<11 or inaddr >= NBCH(CONV_INTEGER(rate))+11) then -- to deytero to vazoume gia na midenizoun ramencen kai ramen ~60~

61 ramencen<="0"; ramencen<="1"; ramaddr<=inaddr; ramencaddr<=inaddr-11; ramencin(0)<=code; if delay='0' then delay<='1'; ramencen<="0"; ramen<="0"; ramaddr<=outaddr; ramencaddr<=outaddr; r<=ramout(0); enc_msg<=ramencout(0); ramen<="0"; ramencen<="0"; ramin<="0"; ramencin<="0"; ramaddr<=ramaddr+1; ramencaddr<=ramencaddr+1; delay<='1'; end process U_BCH_Enc_Dec_proc; end struct; Κώδικας 1: VHDL Top Entity Συστήματος Τα σήματα rst και rst_inv είναι μέσα στο process ώστε να γίνουν σύγχρονα, καθώς μεταβάλλονται μόνο κατά τη μετάβαση στη θετική παρυφή του ρολογιού. Το σήμα rst_sw είναι το κουμπί του reset του συστήματος (reset_switch). Καθώς το FPGA δίνει '1' όταν πατηθεί το κουμπί και το component noise ζητάει αρνητική παρυφή για reset υπήρξε η ανάγκη αντιστροφής του σήματος reset με το rst_inv. Tα U_Buf_Enc και U_Buf_Dec είναι δύο μικρά buffers που συνδέονται στην έξοδο του πομπού και στην είσοδο του δέκτη. Το πρώτο μεταβάλλει το σήμα από σειριακό σε παράλληλο 2 bit και το δεύτερο κάνει το αντίστροφο. Σκοπός τους είναι να προσαρμόζεται κατάλληλα το σήμα ώστε να είναι κατάλληλης μορφής για το κανάλι. Το U_Buffer διαχειρίζεται τη RAM που έχει ανάγκη ο αποκωδικοποιητής, στέλνοντας σήματα ενεργοποίησης εγγραφής (WEA) και τη διεύθυνση μνήμης που θα διαβαστεί ή θα εγγραφεί. Το package U_Constants κρίνεται προτιμότερο να μη δοθεί ως ένα ολοκληρωμένο κομμάτι κώδικα αλλά επιμέρους σημεία του θα δοθούν στα επόμενα υποκεφάλαια, όπου κριθεί χρήσιμο. Περιέχει σταθερές που χρησιμοποιούνται σε διάφορα components, όπως και ορισμούς πολυδιάστατων διανυσμάτων (arrays). ~61~

62 5.2 Παραγωγός Λέξεων Ιδανικά ο παραγωγός λέξεων θα έπρεπε να είναι ένα component παραγωγής ψευδοτυχαίων λέξεων όπως ένα κατάλληλα προσαρμοσμένο LFSR. Η δημιουργία ενός τέτοιου component για λέξεις μεγέθους 2 14 έως 2 16 είναι μια επίπονη διαδικασία. Ο συνδυασμός μικρότερων LFSR για τη δημιουργία μιας λέξης τέτοιου μεγέθους δε θα μπορούσε να προσφέρει την επιθυμητή τυχαιότητα, καθώς τα components αυτά έχουν συγκεκριμένη περίοδο, μετά την οποία η ψευδοτυχαία αλληλουχία λέξεων επαναλαμβάνεται. Όσο μικρότερη είναι η λέξη που παράγουν τόσο μικρότερη και η περίοδος, το οποίο σημαίνει ότι μετά από T (όπου Τ είναι η περίοδος των LFSR) θα επαναλαμβανόταν η λέξη. Καθώς το σημαντικότερο μέρος της διπλωματικής αυτής είναι η κωδικοποίηση, η αποκωδικοποίηση και τα αποτελέσματα αυτών, αποφασίστηκε να μη δημιουργηθεί παραγωγός ψευδοτυχαίων λέξεων τάξης 2 14 έως Για το λόγο αυτό θεωρήθηκε ικανοποιητικός ένας προσθέτης για την παραγωγή λέξεων. Το component αυτό ρυθμίστηκε να μη μηδενίζουν τα στοιχεία μνήμης του όταν πατηθεί το reset, έτσι ώστε να προσφέρει μια υποτυπώδη τυχαιότητα καθώς τουλάχιστον η πρώτη λέξη των μετρήσεων παραμένει άγνωστη. Δεν ισχύει όμως το ίδιο και για την αλληλουχία. Το πλήθος των μετρήσεων για κάθε στάθμη θορύβου κατέστησε την μη ύπαρξη τυχαιότητας θέμα μικρής σημασίας. Λόγω μεγέθους των παραγόμενων λέξεων ο προσθέτης δεν κατασκευάστηκε όπως ένας τυπικός προσθέτης μικρού μεγέθους. Υπήρξε η απαίτηση προσθήκης μιας μνήμης RAM για το χειρισμό των λέξεων αυτών. Όπως φαίνεται και στον κώδικα παρακάτω το σήμα carry δρα ως το υπόλοιπο στην πρόσθεση. Αρχικά ελέγχεται αν στη θέση " " (από εδώ και στο εξής θα συμβολίζονται οι θέσεις μνήμης με το δεκαδικό τους αντίστοιχο) υπάρχει το ψηφίο 1, αν ναι τότε μεταβάλλεται σε 0 και το carry παίρνει τιμή 1, αλλιώς μεταβάλλεται σε 1, ενώ το carry παραμένει 0. Αν το carry πήρε την τιμή 1 τότε στη θέση 1 θα ελεγχθεί αν υπάρχει το ψηφίο 1,αν ναι τότε μεταβάλλεται σε 0 και το carry παραμένει 1, αλλιώς μεταβάλλεται σε 1, ενώ το carry παίρνει την τιμή 0. Η διαδικασία αυτή επαναλαμβάνεται k φορές, δηλαδή όσα bit είναι η λέξη που θα κωδικοποιηθεί (μήνυμα). Όπως φαίνεται παρακάτω, τα en_enc και ensyn είναι είσοδοι στο σύστημα, τα οποία αποτελούν διακόπτες άλλων components. Τα περισσότερα components έχουν δικό τους σήμα ενεργοποίησης το οποίο λαμβάνουν από το component switches, το οποίο συνδυάζοντας τις διάφορες καταστάσεις των components, στέλνει σήμα ενεργοποίησης. ~62~

63 1 LIBRARY IEEE; USE use use use IEEE.STD_LOGIC_1164.ALL; ieee.numeric_std.all; work.u_constants_pkg.all; IEEE.std_logic_unsigned.all; ENTITY U_enc_input IS PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; en_enc: IN STD_LOGIC; ensyn : IN STD_LOGIC; msg : OUT STD_LOGIC); end U_enc_input; architecture Structure of U_enc_input is COMPONENT ram_enc PORT ( clka : IN STD_LOGIC; wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); addra : IN STD_LOGIC_VECTOR(15 DOWNTO 0); dina : IN STD_LOGIC_VECTOR(0 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) ); END COMPONENT; signal signal signal signal signal signal signal count,count_wr: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); addr: STD_LOGIC_VECTOR (15 downto 0):=(others=>'0'); carry: STD_LOGIC:='0'; dina,douta: STD_LOGIC_VECTOR (0 downto 0); wea: STD_LOGIC_VECTOR (0 to 0):="0"; temp,delay_1bit: STD_LOGIC; delay: STD_LOGIC_VECTOR (0 to 1):="00"; begin U_buf_enc_ram : ram_enc PORT MAP ( clka => clk, wea => wea, addra => addr, dina => dina, douta => douta ); Enc_input_proc: begin process (clk) if (clk'event AND clk='1' AND clk'last_value='0') then if rst='0' then if (en_enc='1' and ensyn='0') then if count<kbch(conv_integer(rate)) then wea<="0"; msg<=douta(0); for i in 0 to 15 addr(i)<=count(i); end ; ~63~

64 61 count<=count+1; 62 delay<="00"; 63 delay_1bit<='1'; count_wr<=(others=>'0'); count<=(others=>'0'); 68 if delay<"11" then 69 wea<="0"; 70 addr<=" "; 71 temp<=douta(0); 72 delay<=delay+1; if count_wr<=(kbch(conv_integer(rate))+1) then 75 if wea="0" then 76 if delay_1bit='1' then 77 if count_wr=" " then 78 carry <=douta(0); 79 temp<=douta(0) xor '1'; temp<=douta(0) xor carry; 82 carry<=(douta(0) and carry); delay_1bit<='0'; wea<="1"; 87 delay_1bit<='1'; if delay_1bit='1' then 91 dina(0)<=temp; 92 delay_1bit<='0'; dina(0)<=temp; 95 addr<=count_wr+1; 96 count_wr<=count_wr+1; 97 delay_1bit<='1'; 98 wea<="0"; wea<="0"; 106 count<=(others=>'0'); 107 count_wr<=(others=>'0'); 108 delay<="00"; 109 delay_1bit<='1'; end process Enc_input_proc; 113 end Structure; Κώδικας 2. VHDL Παραγωγός Λέξεων/Προσθέτης ~64~

65 5.3 Component Κωδικοποίησης Ο αλγόριθμος της κωδικοποίησης έχει αναλυθεί στο κεφάλαιο 3.2. Αποτέλεσμα αυτής της ανάλυσης είναι ο παρακάτω VHDL κώδικας, βασισμένος σε κύκλωμα του σχήματος 3.1, δίνοντας όμως τη δυνατότητα να αξιοποιηθεί το κύκλωμα για όλους τους ρυθμούς του κανονικού πλαισίου του προτύπου DVB-S2 1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_1164.ALL; 3 use ieee.numeric_std.all; 4 use std.standard.natural; 5 use work.u_constants_pkg.all; 6 use IEEE.std_logic_unsigned.all; ENTITY U_Encoder IS 10 PORT( 11 clk : IN STD_LOGIC; 12 rst : IN STD_LOGIC; 13 en_enc: IN STD_LOGIC; 14 msg : IN STD_LOGIC; 15 code : OUT STD_LOGIC; 16 enc_counter: OUT STD_LOGIC_VECTOR (0 to 15)); 17 end U_Encoder; architecture Structure of U_Encoder is signal dreg: STD_LOGIC_VECTOR (0 to 191):=(others=>'0'); 23 signal count: STD_LOGIC_VECTOR (0 to 15); 24 signal delay: STD_LOGIC_VECTOR(0 to 1):="00"; 25 signal temp:std_logic:='1'; 26 begin 27 enc_counter<=count; 28 U_enc_proc: Process (clk) 29 variable msg_temp: STD_LOGIC:='0'; 30 begin 31 if (clk'event AND clk='1') then 32 if (rst='0' and en_enc='1') then 33 if delay<"10" then 34 delay<=delay+1; if(count>(nbch(conv_integer(rate))-kbch(conv_integer(rate))+2)) then 37 code<=msg; 38 if (msg='0' or msg='1') then 39 msg_temp:=msg xor dreg(191); 40 count <= (count - 1); if (count>" ") then 44 msg_temp:='0'; 45 code<=dreg(conv_integer(nbch(conv_integer(rate)))conv_integer(kbch(conv_integer(rate)))-1); 46 count <= (count -1); if (count>" ") then 49 count<= count -" "; ~65~

66 if ((NBCH(CONV_INTEGER(rate))KBCH(CONV_INTEGER(rate))))=" " then then 55 for i in 191 downto if (i=0) then 58 dreg(0)<=msg_temp and G(0,0); dreg(i)<= (msg_temp and G(0,i-1))xor dreg(i-1); end ; if ((NBCH(CONV_INTEGER(rate))KBCH(CONV_INTEGER(rate))))=" " then then 65 for i in 159 downto if (i=0) then 68 dreg(0)<=msg_temp and G(1,0); dreg(i)<= (msg_temp and G(1,i-1))xor dreg(i-1); end ; for i in 127 downto if (i=0) then 77 dreg(0)<=msg_temp and G(2,0); dreg(i)<= (msg_temp and G(2,i-1))xor dreg(i-1); end ; delay<="00"; 87 code<='0'; 88 dreg<=(others=>'0'); 89 temp<='1'; 90 count<=(nbch(conv_integer(rate))+2); end process U_enc_proc; 94 end Structure; Κώδικας 3. VHDL Κωδικοποιητής BCH Όπως φαίνεται στον κώδικα παραπάνω, ο αριθμός των επαναλήψεων, δηλαδή των κύκλων ρολογιού που απαιτούνται για το συγκεκριμένο κώδικα ορίζεται από το σήμα count. Το πάνω όριο του count είναι το NBCH(CONV_INTEGER(rate))+2, δηλαδή ορίζεται από το n του BCH για τον αντίστοιχο ρυθμό που ορίζεται από το rate. Ωστόσο ανάλογα με το ρυθμό δεν αλλάζουν μόνο οι επαναλήψεις. Στον πίνακα 4.1 φαίνεται ότι μεταβάλλεται και η διορθωτική ικανότητα του κώδικα και συγκεκριμένα το t μπορεί να πάρει τις τιμές 12,10 και 8. Όπως έχει αναφερθεί στο κεφάλαιο το πολυώνυμο γεννήτορας μεταβάλλεται, ανάλογα με το t και συγκεκριμένα προκύπτει πάντα από το γινόμενο των πρώτων t ~66~

67 πολυωνύμων του πίνακα 4.3. Οι τιμές του πολυωνύμου γεννήτορα είναι αποθηκευμένες στο πακέτο (package) U_Constants. Γι' αυτό το λόγο, υπάρχουν οι συνθήκες στις σειρές 54 έως 84, για να μεταβάλλεται ο γεννήτορας αναλόγως του t. Θα μπορούσαν να εκφραστούν οι συνθήκες αναλόγως του σήματος rate (11 περιπτώσεις), αλλά προτιμήθηκε να εκφραστούν αναλόγως των 3 περιπτώσεων της διαφοράς n k. Συγκεκριμένα για διαφορά 192 διορθώνονται 12 λάθη, 160 διορθώνονται 10 λάθη και 128 διορθώνονται 8 λάθη. Παρόμοιες συνθήκες υπήρξαν και στον αποκωδικοποιητή. 5.4 Components Αποκωδικοποιητή Ο αποκωδικοποιητής αποτελεί το πιο σύνθετο component του συστήματος. Αποτελείται από τρία processes, όσοι δηλαδή και οι αλγόριθμοι που αναλύθηκαν ότι είναι απαραίτητοι στο κεφάλαιο 3.3. Αρχικά θα δοθεί το κομμάτι του κώδικα που περιέχει τις δηλώσεις και τις συνδέσεις με άλλα components. Ύστερα στα υποκεφάλαια που θα ακολουθήσουν θα δοθούν τα processes μεμονωμένα LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; use work.u_constants_pkg.all; use IEEE.std_logic_unsigned.all; use std.standard.natural; ENTITY U_Decoder IS PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; ensyn: IN STD_LOGIC; enber: IN STD_LOGIC; r : IN STD_LOGIC; enc_msg: IN STD_LOGIC; out_times: OUT STD_LOGIC_VECTOR (0 to 31); out_errors: OUT STD_LOGIC_VECTOR (0 to 31); syn_counter: OUT STD_LOGIC_VECTOR (0 to 16); chien_counter: OUT STD_LOGIC_VECTOR (0 to 15); enchien_out: OUT STD_LOGIC); end U_Decoder; architecture Structure of U_Decoder is component U_Mul port( clk : IN STD_LOGIC; rst : IN STD_LOGIC; mul1: IN current_pol; mul2: IN STD_LOGIC; result: OUT current_pol); end component U_Mul; component U_Mul_12 port( clk : IN STD_LOGIC; rst : IN STD_LOGIC; mul1: IN current_pol; mul2: IN STD_LOGIC_VECTOR (0 to 12); result: OUT current_pol); ~67~

68 41 end component U_Mul_12; component U_Multiplier16 44 PORT( 45 clk : IN STD_LOGIC; 46 rst : IN STD_LOGIC; 47 mul2: IN STD_LOGIC_VECTOR (0 to 15); 48 found: OUT STD_LOGIC; 49 result: OUT STD_LOGIC_VECTOR(0 to 15)); 50 end component U_Multiplier16; type SYN is array (1 to 24,0 to 15) of std_logic; 53 signal enchien: STD_LOGIC:='0'; 54 signal msg: STD_LOGIC; 55 signal countsyn: STD_LOGIC_VECTOR (0 to 16):=(others=>'0'); 56 signal tempcountsyn: STD_LOGIC_VECTOR (0 to 15); 57 signal s : SYN := (others => (others => '0')); 58 signal c : CURRENT_POL:=(others=>(others=>'0')); 59 signal d_s_rst: std_logic:='1'; 60 signal xb : CURRENT_POL:=(others=>(others=>'0')); 61 signal tempd: std_logic; 62 signal d_xb : CURRENT_POL; 63 signal d_rst: std_logic :='1'; 64 signal tempdmem: std_logic_vector(0 to 15); 65 signal memrslt : STD_LOGIC_VECTOR(0 to 15); 66 signal found: STD_LOGIC; 67 signal dinv_c_rst: std_logic:='1'; 68 signal xc:current_pol; 69 signal tempd_inv:std_logic; 70 signal b_next : CURRENT_POL:=(others=>(others=>'0')); 71 signal dinv_c : CURRENT_POL; 72 signal c_s_rst: std_logic:='1'; 73 signal temp_s: std_logic_vector (0 to 12); 74 signal c_s: CURRENT_POL; 75 signal p : CURRENT_POL:=(others=>(others=>'0')); 76 signal b : CURRENT_POL:=(others=>(others=>'0')); 77 signal paritylength: STD_LOGIC_VECTOR (0 to 15); 78 signal t_errors: STD_LOGIC_VECTOR (0 to 3); 79 signal chiencount: STD_LOGIC_VECTOR(0 to 15):=(others=>'0'); 80 signal temp_times,temp_errors: STD_LOGIC_VECTOR (0 to 31):=(others=>'0'); 81 signal delay:std_logic_vector (0 to 2) :=(others=>'0'); 82 signal delaysyn,delay_chien: STD_LOGIC; 83 signal b1: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 84 signal b3: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 85 signal b5: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 86 signal b7: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 87 signal b9: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 88 signal b11: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 89 signal b13: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 90 signal b15: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 91 signal b17: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 92 signal b19: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 93 signal b21: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 94 signal b23: STD_LOGIC_VECTOR (0 to 15):=(others=>'0'); 95 signal temps : SYN := (others => (others => '0')); 96 signal b1_temp,b3_temp,b5_temp,b7_temp,b9_temp,b11_temp,b13_temp,b15_temp,b17_temp,b19 _temp,b21_temp,b23_temp: STD_LOGIC_VECTOR(0 to 15); 97 signal creg:c_register; 98 signal tempcreg:c_register; ~68~

69 signal er,badframes,erperframe: std_logic_vector(0 to 15); signal errorbit: std_logic; U_muld_s: U_Mul port map(clk,d_s_rst,xb,tempd,d_xb); U_muld: U_Multiplier16 port map (clk,d_rst,tempdmem,found,memrslt); U_muldinv_c: U_Mul port map (clk,dinv_c_rst,xc,tempd_inv,dinv_c); U_mulc_s: U_Mul_12 port map(clk,c_s_rst,c,temp_s,c_s); chien_counter<=chiencount; syn_counter<=countsyn; enchien_out<=enchien; out_times<=temp_times; Κώδικας 4. VHDL Αποκωδικοποιητη Δηλώσεις και Συνδέσεις με components Όπως φαίνεται παραπάνω, όλα τα components ( τα οποία είναι πολλαπλασιαστές τριών διαφορετικών μορφών), έχουν δικά τους σήματα reset, έτσι ώστε να μηδενίζονται ή να ενεργοποιούνται συγκεκριμένες στιγμές. Ως είσοδο το σύστημα παίρνει το r το οποίο αποτελεί την έξοδο του καναλιού το οποίο προσέθεσε πιθανό θόρυβο, αφού έχει πρώτα μετατραπεί από 2μπιτη παράλληλη σε σειριακή μέσω του U_Buf_Dec και ύστερα τοποθετηθεί σε θέσεις της μνήμης U_Ram_Dec. Η τοποθέτησή τους φαίνεται στις γραμμές του κώδικα 1, όπου η ramaddr παίρνει την τιμή της inaddr και σε συγκεκριμένο πλαίσιο κύκλων η ramen παίρνει την τιμή 1. Στο σχήμα που ακολουθεί παρουσιάζεται το κύκλωμα αποκωδικοποίησης, όπως δημιουργήθηκε από το HDL Designer. Τα τρία processes τα οποία συντελούνται είναι όπως φαίνονται σε σειρά τα U_syndromes_proc, U_berlekamp_proc και U_chienc_proc (τα κίτρινα παραλληλόγραμμα). Όπως φαίνεται η κάθε διαδικασία λαμβάνει ένα (ή δύο στο Chien) σήματα enable για να ενεργοποιηθεί ενώ συγχρόνως έχει ως είσοδο την έξοδο του προηγούμενου process. Συγκεκριμένα, λαμβάνει σήμα ενεργοποίησης ensyn το U_syndromes, μετά από τους απαιτούμενους κύκλους λαμβάνει σήμα ενεργοποίησης (προερχόμενη από το U_switches) το U_Berlekamp ενώ συγχρόνως λαμβάνει και τα σύνδρομα που παρήχθησαν ως είσοδο. Μετά από τους απαιτούμενους κύκλους το U_Berlekamp στέλνει σήμα ενεργοποίησης και τους συντελεστές του πολυωνύμου εύρεσης λαθών στο U_chien. Το U_chien λαμβάνει επίσης σειριακά τη ληφθείσα λέξη, έτσι ώστε να τη διορθώσει. Τέλος λαμβάνει αντίστοιχα την κωδικοποιημένη λέξη, δηλαδή την έξοδο του κωδικοποιητή. Ουσιαστικά αναλαμβάνει και το κομμάτι του ελέγχου/σύγκρισης όπως παρουσιάστηκε στο σχήμα 5.2. Έξοδοί του είναι η σειριακή αλληλουχία των bit της διορθωμένης λέξης και συγχρόνως οι ποσότητες των λανθασμένων bit μετά την κωδικοποίηση,των πλαισίων των οποίων περιέχουν λανθασμένα bit και των κωδικοποιήσεων/αποκωδικοποιήσεων. Οι μετρητές των U_syndromes και U_chien είναι επίσης έξοδοι, οι οποίες συνδέονται με το U_switches για να στέλνει τα απαραίτητα σήματα enable. Το U_berlekamp, καθώς είναι μία πιο πολύπλοκη διαδικασία στέλνει τη σωστή στιγμή το ίδιο σήμα ενεργοποίησης στο U_chien, αντί να στείλει το μετρητή του στο U_switches. ~69~

70 Σχήμα 5.3. Κύκλωμα BCH Αποκωδικοποιητή

71 5.4.1 Παραγωγός Συνδρόμων Η υλοποίηση του παραγωγού συνδρόμων βασίστηκε στην ανάλυση του κεφαλαίου και στο σχήμα Η επιλογή μιας τέτοια σχεδίασης αν και πιο πολύπλοκη, έδωσε τη δυνατότητα να ελαχιστοποιηθεί σημαντικά το μέγεθος του κυκλώματος παραγωγής συνδρόμων. Ενώ με διαφορετική υλοποίηση θα απαιτούνταν 24 ανεξάρτητα κυκλώματα, όσα και τα σύνδρομα (2t ), με τη σχεδίαση αυτή απαιτήθηκαν 12, καθώς ομαδοποιήθηκαν τα διάφορα σύνδρομα. Για τον ίδιο λόγο δεν ακολουθήθηκαν τεχνικές shortening. Καθώς οι τεχνικές αυτές απαιτούν διαφορετικού είδους υλοποίηση για κάθε μέγεθος λέξης, θα υπήρχε η απαίτηση κατασκευής 11 διαφορετικών κυκλωμάτων παραγωγής συνδρόμων για την κάθε περίπτωση μετάδοσης του DVB-S2 με κανονικό πλαίσιο. Όπως φαίνεται στο σχήμα 2.10, η διαφορά των r (a 3 ) και r (a 6 ) βρίσκεται στον τρόπο σύνδεσης των b i ώστε να παραχθούν τα αντίστοιχα πολυώνυμα των συνδρόμων. Η παραγωγή των b i από την άλλη, είναι ίδια καθώς τα a 3 και α6 έχουν κοινό ελάχιστο πολυώνυμο. H εύρεση των ελαχίστων πολυωνύμων και οι σχέσεις των b i βρέθηκαν μέσω των δύο παρακάτω κωδικών του Matlab για τον κώδικα BCH (16200,16008,12). Σημειώνεται ότι βάσει του DVB-S2 για τον παραπάνω κώδικα BCH αντιστοιχεί διαμόρφωση 1/4 QPSK. Επίσης καθώς το πρωτογενές πολυώνυμο είναι ίδιο σε όλες τις διαμορφώσεις τα δεδομένα είναι ίδια για οποιοδήποτε rate δοθεί ως σήμα. dvb=getparamsdvbs2demo('qpsk 1/4',4,50); % από αυτήν την εντολή μπορούμε να πάρουμε τα στοιχεία του κώδικα prim=dvb.bchprimitivepoly; % prim=primitive polynomial minimal=zeros(12,17); minimal1=gftuple(1,prim); minimal1=minpol(gf(bi2de(minimal1),16,bi2de(prim))); minimal1=minimal1.x; for i=1:17 minimal(1,i)=minimal1(i); end %min pol για group S1,S2,S4,S8,S16 minimal2=gftuple(3,prim); minimal2=minpol(gf(bi2de(minimal2),16,bi2de(prim))); minimal2=minimal2.x; for i=1:17 minimal(2,i)=minimal2(i); end %min pol για group S3,S6,S12,S24 minimal3=gftuple(5,prim); minimal3=minpol(gf(bi2de(minimal3),16,bi2de(prim))); minimal3=minimal3.x; for i=1:17 minimal(3,i)=minimal3(i); end Κώδικας 5. Μatlab Παραγωγή Ελαχίστων Πολυωνύμων για BCH του DVB-S2 QPSK 1/4 Ο κώδικας συνεχίζει και για τις υπόλοιπες ομάδες ([S5,S10,S20],[S7,S14],[S9,18],[S11,S22],[S13],[S15],[17], [S19],[S21],[S23]). ~71~

72 x=zeros(16,16,24); for i=1:24 for k=1:16 temp=gftuple((k-1)*i,prim);%βάζω (k-1) γιατί μελετάμε 1,a,a^2... for m=1:16 x(k,m,i)=temp(m); end end end Κώδικας 6. Matlab Παραγωγός Σχέσεων bi Τα αποτελέσματα των δύο αυτών κωδικών περάστηκαν ως δεδομένα στο U_Constants ως MIN1,MIN3,...,MIN23 και ως X1,X2,X3,...,X24, όπου [type X is array (0 to 15,0 to 15) of std_logic;]. Με αυτά τα δεδομένα είναι εφικτή η κατασκευή του παραγωγού συνδρόμων όπως φαίνεται στον κώδικα U_syndromes_proc: Process (clk) begin if (clk'event AND clk='1') then if (ensyn='1' and rst='0') then if (CONV_INTEGER(countsyn)<=65536) then if delay<"010" then b1_temp<=b1; b3_temp<=b3; b5_temp<=b5; b7_temp<=b7; b9_temp<=b9; b11_temp<=b11; b13_temp<=b13; b15_temp<=b15; b17_temp<=b17; b19_temp<=b19; b21_temp<=b21; b23_temp<=b23; if delaysyn='0' then delay<=delay+1; countsyn<=countsyn+1; delaysyn<='1'; delaysyn<='0'; if delaysyn='1' then for i in 15 downto 0 if (i=0) then b1(i)<=(b1_temp(15) and MIN1(0)) xor r; b3(i)<=(b3_temp(15) and MIN3(0)) xor r; b5(i)<=(b5_temp(15) and MIN5(0)) xor r; b7(i)<=(b7_temp(15) and MIN7(0)) xor r; b9(i)<=(b9_temp(15) and MIN9(0)) xor r; b11(i)<=(b11_temp(15) and MIN11(0)) xor b13(i)<=(b13_temp(15) and MIN13(0)) xor b15(i)<=(b15_temp(15) and MIN15(0)) xor b17(i)<=(b17_temp(15) and MIN17(0)) xor ~72~ r; r; r; r;

73 41 b19(i)<=(b19_temp(15) and MIN19(0)) xor r; 42 b21(i)<=(b21_temp(15) and MIN21(0)) xor r; 43 b23(i)<=(b23_temp(15) and MIN23(0)) xor r; b1(i)<=(b1_temp(15) and MIN1(0) and MIN1(16-i))xor b1_temp(i-1); 46 b3(i)<=((b3_temp(15) and MIN3(0)) and MIN3(16-i))xor b3_temp(i-1); 47 b5(i)<=((b5_temp(15) and MIN5(0)) and MIN5(16-i))xor b5_temp(i-1); 48 b7(i)<=((b7_temp(15) and MIN7(0)) and MIN7(16-i))xor b7_temp(i-1); 49 b9(i)<=((b9_temp(15) and MIN9(0)) and MIN9(16-i))xor b9_temp(i-1); 50 b11(i)<=((b11_temp(15) and MIN11(0)) and MIN11(16i))xor b11_temp(i-1); 51 b13(i)<=((b13_temp(15) and MIN13(0)) and MIN13(16i))xor b13_temp(i-1); 52 b15(i)<=((b15_temp(15) and MIN15(0)) and MIN15(16i))xor b15_temp(i-1); 53 b17(i)<=((b17_temp(15) and MIN17(0)) and MIN17(16i))xor b17_temp(i-1); 54 b19(i)<=((b19_temp(15) and MIN19(0)) and MIN19(16i))xor b19_temp(i-1); 55 b21(i)<=((b21_temp(15) and MIN21(0)) and MIN21(16i))xor b21_temp(i-1); 56 b23(i)<=((b23_temp(15) and MIN23(0)) and MIN23(16i))xor b23_temp(i-1); end ; 59 delaysyn<='0'; b1_temp<=b1; 62 b3_temp<=b3; 63 b5_temp<=b5; 64 b7_temp<=b7; 65 b9_temp<=b9; 66 b11_temp<=b11; 67 b13_temp<=b13; 68 b15_temp<=b15; 69 b17_temp<=b17; 70 b19_temp<=b19; 71 b21_temp<=b21; 72 b23_temp<=b23; 73 for j in 0 to s(1,j)<=(x1(0,j) and b1(0)) xor (X1(1,j) and b1(1)) xor (X1(2,j) and b1(2)) xor (X1(3,j) and b1(3)) xor (X1(4,j) and b1(4)) xor (X1(5,j) and b1(5)) xor (X1(6,j) and b1(6)) xor (X1(7,j) and b1(7)) xor (X1(8,j) and b1(8)) xor (X1(9,j) and b1(9)) xor (X1(10,j) and b1(10)) xor (X1(11,j) and b1(11)) xor (X1(12,j) and b1(12)) xor (X1(13,j) and b1(13)) xor (X1(14,j) and b1(14)) xor (X1(15,j) and b1(15)); 76 s(2,j)<=(x2(0,j) and b1(0)) xor (X2(1,j) and b1(1)) xor (X2(2,j) and b1(2)) xor (X2(3,j) and b1(3)) xor (X2(4,j) and b1(4)) xor (X2(5,j) and b1(5)) xor (X2(6,j) and b1(6)) xor (X2(7,j) and b1(7)) xor (X2(8,j) and b1(8)) xor (X2(9,j) and b1(9)) xor (X2(10,j) and b1(10)) xor (X2(11,j) and b1(11)) xor (X2(12,j) and b1(12)) xor (X2(13,j) and b1(13)) xor (X2(14,j) and b1(14)) xor (X2(15,j) and b1(15)); 77 s(4,j)<=(x4(0,j) and b1(0)) xor (X4(1,j) and b1(1)) xor (X4(2,j) and b1(2)) xor (X4(3,j) and b1(3)) xor (X4(4,j) and b1(4)) xor (X4(5,j) and b1(5)) xor (X4(6,j) and b1(6)) xor (X4(7,j) and b1(7)) xor ~73~

74 (X4(8,j) and b1(8)) xor (X4(9,j) and b1(9)) xor (X4(10,j) and b1(10)) xor (X4(11,j) and b1(11)) xor (X4(12,j) and b1(12)) xor (X4(13,j) and b1(13)) xor (X4(14,j) and b1(14)) xor (X4(15,j) and b1(15)); 78 s(8,j)<=(x8(0,j) and b1(0)) xor (X8(1,j) and b1(1)) xor (X8(2,j) and b1(2)) xor (X8(3,j) and b1(3)) xor (X8(4,j) and b1(4)) xor (X8(5,j) and b1(5)) xor (X8(6,j) and b1(6)) xor (X8(7,j) and b1(7)) xor (X8(8,j) and b1(8)) xor (X8(9,j) and b1(9)) xor (X8(10,j) and b1(10)) xor (X8(11,j) and b1(11)) xor (X8(12,j) and b1(12)) xor (X8(13,j) and b1(13)) xor (X8(14,j) and b1(14)) xor (X8(15,j) and b1(15)); 79 s(16,j)<=(x16(0,j) and b1(0)) xor (X16(1,j) and b1(1)) xor (X16(2,j) and b1(2)) xor (X16(3,j) and b1(3)) xor (X16(4,j) and b1(4)) xor (X16(5,j) and b1(5)) xor (X16(6,j) and b1(6)) xor (X16(7,j) and b1(7)) xor (X16(8,j) and b1(8)) xor (X16(9,j) and b1(9)) xor (X16(10,j) and b1(10)) xor (X16(11,j) and b1(11)) xor (X16(12,j) and b1(12)) xor (X16(13,j) and b1(13)) xor (X16(14,j) and b1(14)) xor (X16(15,j) and b1(15)); s(3,j)<=(x3(0,j) and b3(0)) xor (X3(1,j) and b3(1)) xor (X3(2,j) and b3(2)) xor (X3(3,j) and b3(3)) xor (X3(4,j) and b3(4)) xor (X3(5,j) and b3(5)) xor (X3(6,j) and b3(6)) xor (X3(7,j) and b3(7)) xor (X3(8,j) and b3(8)) xor (X3(9,j) and b3(9)) xor (X3(10,j) and b3(10)) xor (X3(11,j) and b3(11)) xor (X3(12,j) and b3(12)) xor (X3(13,j) and b3(13)) xor (X3(14,j) and b3(14)) xor (X3(15,j) and b3(15)); 82 s(6,j)<=(x6(0,j) and b3(0)) xor (X6(1,j) and b3(1)) xor (X6(2,j) and b3(2)) xor (X6(3,j) and b3(3)) xor (X6(4,j) and b3(4)) xor (X6(5,j) and b3(5)) xor (X6(6,j) and b3(6)) xor (X6(7,j) and b3(7)) xor (X6(8,j) and b3(8)) xor (X6(9,j) and b3(9)) xor (X6(10,j) and b3(10)) xor (X6(11,j) and b3(11)) xor (X6(12,j) and b3(12)) xor (X6(13,j) and b3(13)) xor (X6(14,j) and b3(14)) xor (X6(15,j) and b3(15)); 83 s(12,j)<=(x12(0,j) and b3(0)) xor (X12(1,j) and b3(1)) xor (X12(2,j) and b3(2)) xor (X12(3,j) and b3(3)) xor (X12(4,j) and b3(4)) xor (X12(5,j) and b3(5)) xor (X12(6,j) and b3(6)) xor (X12(7,j) and b3(7)) xor (X12(8,j) and b3(8)) xor (X12(9,j) and b3(9)) xor (X12(10,j) and b3(10)) xor (X12(11,j) and b3(11)) xor (X12(12,j) and b3(12)) xor (X12(13,j) and b3(13)) xor (X12(14,j) and b3(14)) xor (X12(15,j) and b3(15)); 84 s(24,j)<=(x24(0,j) and b3(0)) xor (X24(1,j) and b3(1)) xor (X24(2,j) and b3(2)) xor (X24(3,j) and b3(3)) xor (X24(4,j) and b3(4)) xor (X24(5,j) and b3(5)) xor (X24(6,j) and b3(6)) xor (X24(7,j) and b3(7)) xor (X24(8,j) and b3(8)) xor (X24(9,j) and b3(9)) xor (X24(10,j) and b3(10)) xor (X24(11,j) and b3(11)) xor (X24(12,j) and b3(12)) xor (X24(13,j) and b3(13)) xor (X24(14,j) and b3(14)) xor (X24(15,j) and b3(15)); s(5,j)<=(x5(0,j) and b5(0)) xor (X5(1,j) and b5(1)) xor (X5(2,j) and b5(2)) xor (X5(3,j) and b5(3)) xor (X5(4,j) and b5(4)) xor (X5(5,j) and b5(5)) xor (X5(6,j) and b5(6)) xor (X5(7,j) and b5(7)) xor (X5(8,j) and b5(8)) xor (X5(9,j) and b5(9)) xor (X5(10,j) and b5(10)) xor (X5(11,j) and b5(11)) xor (X5(12,j) and b5(12)) xor (X5(13,j) and b5(13)) xor (X5(14,j) and b5(14)) xor (X5(15,j) and b5(15)); 87 s(10,j)<=(x10(0,j) and b5(0)) xor (X10(1,j) and b5(1)) xor (X10(2,j) and b5(2)) xor (X10(3,j) and b5(3)) xor (X10(4,j) and b5(4)) xor (X10(5,j) and b5(5)) xor (X10(6,j) and b5(6)) xor (X10(7,j) and b5(7)) xor (X10(8,j) and b5(8)) xor (X10(9,j) and b5(9)) xor (X10(10,j) and b5(10)) xor (X10(11,j) and b5(11)) xor (X10(12,j) and b5(12)) xor (X10(13,j) and b5(13)) xor (X10(14,j) and b5(14)) xor (X10(15,j) and b5(15)); 88 s(20,j)<=(x20(0,j) and b5(0)) xor (X20(1,j) and b5(1)) xor (X20(2,j) and b5(2)) xor (X20(3,j) and b5(3)) xor (X20(4,j) and b5(4)) xor (X20(5,j) and b5(5)) xor (X20(6,j) and b5(6)) xor (X20(7,j) and b5(7)) xor (X20(8,j) and b5(8)) xor (X20(9,j) and b5(9)) xor (X20(10,j) and b5(10)) xor (X20(11,j) and b5(11)) xor (X20(12,j) and b5(12)) xor (X20(13,j) and b5(13)) xor (X20(14,j) and b5(14)) xor (X20(15,j) and b5(15)); s(7,j)<=(x7(0,j) and b7(0)) xor (X7(1,j) and b7(1)) xor ~74~

75 (X7(2,j) and b7(2)) xor (X7(3,j) and b7(3)) xor (X7(4,j) and b7(4)) xor (X7(5,j) and b7(5)) xor (X7(6,j) and b7(6)) xor (X7(7,j) and b7(7)) xor (X7(8,j) and b7(8)) xor (X7(9,j) and b7(9)) xor (X7(10,j) and b7(10)) xor (X7(11,j) and b7(11)) xor (X7(12,j) and b7(12)) xor (X7(13,j) and b7(13)) xor (X7(14,j) and b7(14)) xor (X7(15,j) and b7(15)); 91 s(14,j)<=(x14(0,j) and b7(0)) xor (X14(1,j) and b7(1)) xor (X14(2,j) and b7(2)) xor (X14(3,j) and b7(3)) xor (X14(4,j) and b7(4)) xor (X14(5,j) and b7(5)) xor (X14(6,j) and b7(6)) xor (X14(7,j) and b7(7)) xor (X14(8,j) and b7(8)) xor (X14(9,j) and b7(9)) xor (X14(10,j) and b7(10)) xor (X14(11,j) and b7(11)) xor (X14(12,j) and b7(12)) xor (X14(13,j) and b7(13)) xor (X14(14,j) and b7(14)) xor (X14(15,j) and b7(15)); s(9,j)<=(x9(0,j) and b9(0)) xor (X9(1,j) and b9(1)) xor (X9(2,j) and b9(2)) xor (X9(3,j) and b9(3)) xor (X9(4,j) and b9(4)) xor (X9(5,j) and b9(5)) xor (X9(6,j) and b9(6)) xor (X9(7,j) and b9(7)) xor (X9(8,j) and b9(8)) xor (X9(9,j) and b9(9)) xor (X9(10,j) and b9(10)) xor (X9(11,j) and b9(11)) xor (X9(12,j) and b9(12)) xor (X9(13,j) and b9(13)) xor (X9(14,j) and b9(14)) xor (X9(15,j) and b9(15)); 94 s(18,j)<=(x18(0,j) and b9(0)) xor (X18(1,j) and b9(1)) xor (X18(2,j) and b9(2)) xor (X18(3,j) and b9(3)) xor (X18(4,j) and b9(4)) xor (X18(5,j) and b9(5)) xor (X18(6,j) and b9(6)) xor (X18(7,j) and b9(7)) xor (X18(8,j) and b9(8)) xor (X18(9,j) and b9(9)) xor (X18(10,j) and b9(10)) xor (X18(11,j) and b9(11)) xor (X18(12,j) and b9(12)) xor (X18(13,j) and b9(13)) xor (X18(14,j) and b9(14)) xor (X18(15,j) and b9(15)); s(11,j)<=(x11(0,j) and b11(0)) xor (X11(1,j) and b11(1)) xor (X11(2,j) and b11(2)) xor (X11(3,j) and b11(3)) xor (X11(4,j) and b11(4)) xor (X11(5,j) and b11(5)) xor (X11(6,j) and b11(6)) xor (X11(7,j) and b11(7)) xor (X11(8,j) and b11(8)) xor (X11(9,j) and b11(9)) xor (X11(10,j) and b11(10)) xor (X11(11,j) and b11(11)) xor (X11(12,j) and b11(12)) xor (X11(13,j) and b11(13)) xor (X11(14,j) and b11(14)) xor (X11(15,j) and b11(15)); 97 s(22,j)<=(x22(0,j) and b11(0)) xor (X22(1,j) and b11(1)) xor (X22(2,j) and b11(2)) xor (X22(3,j) and b11(3)) xor (X22(4,j) and b11(4)) xor (X22(5,j) and b11(5)) xor (X22(6,j) and b11(6)) xor (X22(7,j) and b11(7)) xor (X22(8,j) and b11(8)) xor (X22(9,j) and b11(9)) xor (X22(10,j) and b11(10)) xor (X22(11,j) and b11(11)) xor (X22(12,j) and b11(12)) xor (X22(13,j) and b11(13)) xor (X22(14,j) and b11(14)) xor (X22(15,j) and b11(15)); s(13,j)<=(x13(0,j) and b13(0)) xor (X13(1,j) and b13(1)) xor (X13(2,j) and b13(2)) xor (X13(3,j) and b13(3)) xor (X13(4,j) and b13(4)) xor (X13(5,j) and b13(5)) xor (X13(6,j) and b13(6)) xor (X13(7,j) and b13(7)) xor (X13(8,j) and b13(8)) xor (X13(9,j) and b13(9)) xor (X13(10,j) and b13(10)) xor (X13(11,j) and b13(11)) xor (X13(12,j) and b13(12)) xor (X13(13,j) and b13(13)) xor (X13(14,j) and b13(14)) xor (X13(15,j) and b13(15)); s(15,j)<=(x15(0,j) and b15(0)) xor (X15(1,j) and b15(1)) xor (X15(2,j) and b15(2)) xor (X15(3,j) and b15(3)) xor (X15(4,j) and b15(4)) xor (X15(5,j) and b15(5)) xor (X15(6,j) and b15(6)) xor (X15(7,j) and b15(7)) xor (X15(8,j) and b15(8)) xor (X15(9,j) and b15(9)) xor (X15(10,j) and b15(10)) xor (X15(11,j) and b15(11)) xor (X15(12,j) and b15(12)) xor (X15(13,j) and b15(13)) xor (X15(14,j) and b15(14)) xor (X15(15,j) and b15(15)); s(17,j)<=(x17(0,j) and b17(0)) xor (X17(1,j) and b17(1)) xor (X17(2,j) and b17(2)) xor (X17(3,j) and b17(3)) xor (X17(4,j) and b17(4)) xor (X17(5,j) and b17(5)) xor (X17(6,j) and b17(6)) xor (X17(7,j) and b17(7)) xor (X17(8,j) and b17(8)) xor (X17(9,j) and b17(9)) xor (X17(10,j) and b17(10)) xor (X17(11,j) and b17(11)) xor (X17(12,j) and b17(12)) xor (X17(13,j) and b17(13)) xor (X17(14,j) and b17(14)) xor (X17(15,j) and b17(15)); s(19,j)<=(x19(0,j) and b19(0)) xor (X19(1,j) and b19(1)) xor ~75~

76 (X19(2,j) and b19(2)) xor (X19(3,j) and b19(3)) xor (X19(4,j) and b19(4)) xor (X19(5,j) and b19(5)) xor (X19(6,j) and b19(6)) xor (X19(7,j) and b19(7)) xor (X19(8,j) and b19(8)) xor (X19(9,j) and b19(9)) xor (X19(10,j) and b19(10)) xor (X19(11,j) and b19(11)) xor (X19(12,j) and b19(12)) xor (X19(13,j) and b19(13)) xor (X19(14,j) and b19(14)) xor (X19(15,j) and b19(15)); s(21,j)<=(x21(0,j) and b21(0)) xor (X21(1,j) and b21(1)) xor (X21(2,j) and b21(2)) xor (X21(3,j) and b21(3)) xor (X21(4,j) and b21(4)) xor (X21(5,j) and b21(5)) xor (X21(6,j) and b21(6)) xor (X21(7,j) and b21(7)) xor (X21(8,j) and b21(8)) xor (X21(9,j) and b21(9)) xor (X21(10,j) and b21(10)) xor (X21(11,j) and b21(11)) xor (X21(12,j) and b21(12)) xor (X21(13,j) and b21(13)) xor (X21(14,j) and b21(14)) xor (X21(15,j) and b21(15)); s(23,j)<=(x23(0,j) and b23(0)) xor (X23(1,j) and b23(1)) xor (X23(2,j) and b23(2)) xor (X23(3,j) and b23(3)) xor (X23(4,j) and b23(4)) xor (X23(5,j) and b23(5)) xor (X23(6,j) and b23(6)) xor (X23(7,j) and b23(7)) xor (X23(8,j) and b23(8)) xor (X23(9,j) and b23(9)) xor (X23(10,j) and b23(10)) xor (X23(11,j) and b23(11)) xor (X23(12,j) and b23(12)) xor (X23(13,j) and b23(13)) xor (X23(14,j) and b23(14)) xor (X23(15,j) and b23(15)); 110 end ; 111 delaysyn<='1'; 112 countsyn<=countsyn+1; if (CONV_INTEGER(countsyn)=65537) then 117 countsyn<=countsyn+1; 118 delay<="000"; b1<=(others=>'0'); 123 b3<=(others=>'0'); 124 b5<=(others=>'0'); 125 b7<=(others=>'0'); 126 b9<=(others=>'0'); 127 b11<=(others=>'0'); 128 b13<=(others=>'0'); 129 b15<=(others=>'0'); 130 b17<=(others=>'0'); 131 b19<=(others=>'0'); 132 b21<=(others=>'0'); 133 b23<=(others=>'0'); 134 temps<= (others => (others => '0')); 135 countsyn<=(others=>'0'); 136 delaysyn<='1'; 137 if rst='1' then 138 s<=(others=>(others=>'0')); 139 delay<="000"; end PROCESS U_syndromes_proc; Κώδικας 7. VHDL Παραγωγός Συνδρόμων Καθώς δε χρησιμοποιείται η τεχνική shortening για την παραγωγή συνδρόμων δε χρειάζονται n κύκλοι αλλά 2 m =216 = Στους πρώτους n κύκλους, θα σταλεί η ληφθείσα λέξη και ύστερα θα στέλνονται μηδενικά για να γίνουν συνολικά οι 2 16 κύκλοι, επειδή η λέξη δεν είναι shortened. Όπως ~76~

77 φαίνεται στον κώδικα προστίθενται μερικοί επιπλέον κύκλοι ώστε να υπάρχει σωστός συγχρονισμός με τα υπόλοιπα components Πολυώνυμο Εύρεσης Λαθών Επιλέχτηκε ο αλγόριθμος Berlekamp Massey για την εύρεση του πολυωνύμου. Οι σχέσεις 3.20 έως 3.24 είναι αυτές που βοήθησαν να κατασκευαστεί το συγκεκριμένο process. Ο κώδικας VHDL θα δοθεί ολόκληρος και ύστερα θα αναλυθεί ανά σχέση U_berlekamp_proc: PROCESS(clk) variable k: integer:=1; variable l: integer:=0; variable dmux: integer; variable d: std_logic_vector(0 to 15); variable counter: integer:=55; variable t : CURRENT_POL:=(others=>(others=>'0')); variable inv_check: std_logic_vector(0 to 15); begin if (clk'event AND clk='1') then if (enber='1' and rst='0') then if k<=(2*conv_integer(t_errors)-1) then enchien<='0'; enchien<='1'; if (CONV_INTEGER(countsyn)=65537) then enchien<='0'; if (enber='1' and rst='0') then if (k<=(2*conv_integer(t_errors)-1)) then if (counter=0) then if (dmux/=0 and (2*l)<=k) then l:=k-l; -- eyresi c-if (counter=18) then p<=c; if t_errors="1100" then for j in 12 downto 0 for i in 0 to 15 if (j=0) then xb(j,i)<=b(12,i); xb(j,i)<=b(j-1,i); end ; end ; ~77~

78 if t_errors="1010" then for j in 10 downto 0 for i in 0 to 15 if (j=0) then xb(j,i)<=b(10,i); xb(j,i)<=b(j-1,i); end ; end ; for j in 8 downto 0 for i in 0 to 15 if (j=0) then xb(j,i)<=b(8,i); xb(j,i)<=b(j-1,i); end ; end ; if (counter>17 or counter<2) then d_s_rst<='1'; tempd<=d(counter-2); d_s_rst<='0'; if (counter=0) then if t_errors="1100" then for j in 12 downto 0 for i in 0 to 15 c(j,i)<= p(j,i) xor d_xb(j,i); end ; end ; if t_errors="1010" then for j in 10 downto 0 for i in 0 to 15 c(j,i)<= p(j,i) xor d_xb(j,i); end ; end ; for j in 8 downto 0 for i in 0 to 15 ~78~

79 c(j,i)<= p(j,i) xor d_xb(j,i); end ; end ; -- eyresi b if (counter=36) then b<=b_next; if (dmux/=0 and (2*l)<=k) then if (counter>=20) then if (counter<=35) then tempdmem<=d; d_rst<='0'; d_rst<='1'; d_rst<='1'; if (counter<=18 and counter>2) then dinv_c_rst<='0'; dinv_c_rst<='1'; if (counter=18) then if t_errors="1100" then for j in 12 downto 0 for i in 0 to 15 if (j=0) then xc(j,i)<=c(12,i); xc(j,i)<=c(j-1,i); end ; end ; if t_errors="1010" then for j in 10 downto 0 for i in 0 to 15 if (j=0) then xc(j,i)<=c(10,i); xc(j,i)<=c(j-1,i); end ; end ; for j in 8 downto 0 for i in 0 to 15 if (j=0) then ~79~

80 xc(j,i)<=c(8,i); xc(j,i)<=c(j-1,i); end ; end ; if (counter<=18 and counter>2) then tempd_inv<=memrslt(counter-3); if (counter=1) then b_next<=dinv_c; if (counter=1) then if t_errors="1100" then for j in 12 downto 0 for i in 0 to 15 if (j=0) then b_next(j,i)<=xb(12,i); b_next(j,i)<=xb(j-1,i); end ; end ; if t_errors="1010" then for j in 10 downto 0 for i in 0 to 15 if (j=0) then b_next(j,i)<=xb(10,i); b_next(j,i)<=xb(j-1,i); end ; end ; for j in 8 downto 0 for i in 0 to 15 if (j=0) then b_next(j,i)<=xb(8,i); b_next(j,i)<=xb(j-1,i); end ; end ; ~80~

81 eyresi d if (counter<=38 or counter>54) then c_s_rst<='1'; if t_errors="1100" then for j in 12 downto 0 temp_s(j)<=t(j,counter-39); end ; if t_errors="1010" then for j in 10 downto 0 temp_s(j)<=t(j,counter-39); end ; for j in 8 downto 0 temp_s(j)<=t(j,counter-39); end ; c_s_rst<='0'; if (counter=55) then if (k=1) then for i in 0 to 15 t(0,i):=s(1,i); end ; if t_errors="1100" then for j in 12 downto 2 for i in 0 to 15 t(j,i):=t(j-2,i); end ; end ; if t_errors="1010" then for j in 10 downto 2 for i in 0 to 15 t(j,i):=t(j-2,i); end ; end ; for j in 8 downto 2 for i in 0 to 15 t(j,i):=t(j-2,i); end ; end ; ~81~

82 for i in 0 to 15 t(1,i):=s(k-1,i); t(0,i):=s(k,i); end ; if (counter=37) then d:=(others=>'0'); if t_errors="1100" then for j in 0 to 12 for i in 0 to 15 d(i):=c_s(j,i) xor d(i); end ; end ; if t_errors="1010" then for j in 0 to 10 for i in 0 to 15 d(i):=c_s(j,i) xor d(i); end ; end ; for j in 0 to 8 for i in 0 to 15 d(i):=c_s(j,i) xor d(i); end ; end ; dmux:=0; for i in 0 to 15 if (d(i)/='0') then dmux:=1; end ; -- rythmisi metritwn if (counter=0) then k:=k+2; counter:=55; if (counter<=35 and counter>=21) then if (dmux/=0 and (2*l)<=k) then if found='1' then counter:=20; counter:=counter-1; ~82~

83 counter:=counter-1; paritylength<=(nbch(conv_integer(rate))-kbch(conv_integer(rate))); if paritylength=" " then t_errors<="1100"; if paritylength=" " then t_errors<="1010"; t_errors<="1000"; if rst='1' then enchien<='0'; dmux:=1; d_s_rst<='1'; d_rst<='1'; dinv_c_rst<='1'; c_s_rst<='1'; l:=0; k:=1; counter:=55; if (ensyn='1' or rst='1') then c<=(others=>(others=>'0')); c(0,0)<='1'; p<=c; t:=(others=>(others=>'0')); b<=(others=>(others=>'0')); b(0,0)<='1'; b_next<=(others=>(others=>'0')); b_next(0,0)<='1'; for i in 0 to 15 t(0,i):=s(1,i); end ; t(1,1):='1'; end process U_berlekamp_proc; Κώδικας 8. VHDL Berlekamp - Massey Το process έχει δύο μετρητές, δηλαδή τον counter και τον k. To k μετράει πόσες επαναλήψεις του αλγορίθμου Berlekamp Massey έχουν γίνει ενώ ο counter είναι ένας εσωτερικός μετρητής που ουσιαστικά υποδεικνύει σε ποια φάση του αλγορίθμου βρίσκεται. Οι ζυγές επαναλήψεις του αλγορίθμου όπως έχει αναφερθεί στο κεφάλαιο παραλείπονται αφού ο κώδικας είναι δυαδικός, οπότε ο k θα πάρει διαδοχικά τις τιμές 1,5,...,23. Ο counter μειώνεται σε κάθε clock με εξαίρεση ένα μέρος του αλγορίθμου όπου ο counter σταματάει μέχρι να ολοκληρωθεί. Αυτό συμβαίνει γιατί η συγκεκριμένη διαδικασία κατασκευάστηκε με τέτοιο τρόπο ώστε ο χρόνος ολοκλήρωσής της δεν είναι σταθερός. Οι εντολές για τη ρύθμιση του counter βρίσκονται στις σειρές 336 έως 353 (το σταμάτημα του counter γίνεται όταν φτάσει στην τιμή 35 και μόλις έρθει το σήμα found=1 τότε πέφτει στην τιμή 21). ~83~

84 Αντιστοιχίσεις: Για να γίνει πιο εύκολα κατανοητός ο κώδικας αλλά και η παρακάτω περιγραφή δίνονται οι εξής αντιστοιχίσεις των σημάτων με τους συμβολισμούς των σχέσεων 3.20 ως 3.23: c=η επόμενη τιμή του Λ, p=η προηγούμενη τιμή του Λ, l = l, d = d, B = B. l (σειρές και counter=0): Το l αλλάζει όταν ο counter φτάσει το 0 (στο τέλος ενός κύκλου του k ) καθώς επηρεάζει τις άλλες σχέσεις, ενώ το ίδιο εξαρτάται μόνο από το k. d (σειρές και counter=55 ως 37): Καθώς το d είναι απαραίτητο για τον υπολογισμό των Λ και B, πρέπει να βρεθεί πρώτο για να ξεκινήσουν οι διαδικασίες εύρεσής τους. Η σχέση 3.20 μπορεί να υλοποιηθεί σε hardware με τον εξής τρόπο: Τοποθετούνται 16μπιτοι καταχωρητές ολίσθησης με αρχική τιμή του πρώτου να είναι το S1. Σε κάθε κύκλο του αλγορίθμου (αύξηση του k κατά 2), ολισθαίνουν κατά δύο θέσεις τα στοιχεία των καταχωρητών και οι δύο πρώτοι παίρνουν τα δύο επόμενα σύνδρομα (S2 και S3). Αφού πάρουν τις κατάλληλες τιμές οι καταχωρητές ολίσθησης (counter=55) τα στοιχεία τους πολλαπλασιάζονται με την τρέχουσα τιμή του Λ (c) [16]. Αυτό επιτυγχάνεται σε 16 κύκλους με ένα κύκλωμα t πολλαπλασιαστών όταν δοθεί c_s_rst=0. B (σειρές και counter=36 ως 1): Αποτελεί ίσως το πιο πολύπλοκο και πιο χρονοβόρο κομμάτι του κώδικα. Οι απαιτούμενοι κύκλοι εξαρτώνται από το μέγεθος των κωδικών λέξεων αλλά και από την ίδια τη σχεδίαση του αποκωδικοποιητή. Για τον πάνω κλάδο της σχέσης 3.22 πρώτα το b παίρνει την τιμή του b_next (δηλαδή παίρνει την επόμενη τιμή του), ύστερα δε χρειάζεται παρά ένας κύκλος καθώς το μόνο που απαιτείται για να υλοποιηθεί το x 2 B( x ) είναι δύο κυκλικές ολισθήσεις του B. Για μεγαλύτερη ευκολία επιλέχθηκε το σημείο όπου count=1 για να γίνει αυτή η ολίσθηση, καθώς έχει ήδη υπολογιστεί για την εύρεση του c το x B( x ). Έτσι απαιτείται μία κυκλική ολίσθηση του σήματος xb ώστε να βρεθεί η νέα τιμή του B( x ). Για τον κάτω κλάδο της σχέσης 3.22 αφού πρώτα το b πάρει την επόμενη τιμή b_next, ενεργοποιείται το κύκλωμα εύρεσης του αντιστρόφου το d, το οποίο θα αναλυθεί σε επόμενη ενότητα. Αφού εντοπιστεί, ενεργοποιείται το κύκλωμα πολλαπλασιασμού του αντιστρόφου του d με το x Λ( x ) (xc). Λ (σειρές και counter=18 ως 0): H τρέχουσα τιμή της b, και όχι η υπολογιζόμενη (γι' αυτό και υπάρχει το b_next), εκτελεί μία κυκλική ολίσθηση και ύστερα πολλαπλασιάζεται με το d. Ύστερα, όπως και στις προηγούμενες περιπτώσεις, μηδενίζεται το σήμα reset του απαιτούμενου πολλαπλασιαστή και για 16 κύκλους υπολογίζεται το d xb ( x). Ύστερα με μία πύλη XOR το πολυώνυμο του γινομένου που προέκυψε από την προηγούμενη πράξη, προστίθεται στην υπάρχουσα τιμή του c. Αφού ολοκληρωθεί ο αλγόριθμος στέλνεται σήμα enchien ώστε να ξεκινήσει η έρευνα Chien Έρευνα Chien Βάσει της ενότητας κατασκευάστηκε στο Matlab ένας πίνακας ο οποίος θα διευκόλυνε τις απαιτούμενες πράξεις για την έρευνα Chien. Τα στοιχεία του πίνακα αυτού περάστηκαν ως δεδομένα στο package U_Constants ως type MATRIX is array (0 to 15,0 to 15) of std_logic; με ονόματα MATRIX1,MATRIX2,...,MATRIX12. ~84~

85 for i=1:12 for k=0:15 temp=gftuple(i+k,prim); for m=1:16 matrix(k+1,m,i)=temp(m); end end end Κώδικας 9: Matlab Δημιουργία Πίνακα για την Κατασκευή των Πολλαπλασιαστών 1 U_chien_proc: PROCESS(clk) 2 3 variable enc_msg_temp: std_logic; 4 5 begin 6 if (clk'event AND clk='1') then 7 if rst='1' then 8 temp_times<=(others=>'0'); 9 temp_errors<=(others=>'0'); 10 badframes<=(others=>'0'); if (enchien='0' or rst='1') then 13 chiencount<=(others=>'0'); 14 er<=(others=>'0'); 15 if t_errors="1100" then 16 for j in 11 downto for i in 0 to creg(j,i)<=c(j+1,i); 21 end ; 22 end ; if t_errors="1010" then 25 for j in 9 downto for i in 0 to creg(j,i)<=c(j+1,i); 30 end ; 31 end ; for j in 7 downto for i in 0 to creg(j,i)<=c(j+1,i); 38 end ; 39 end ; delay_chien<='1'; if (CONV_INTEGER(chiencount)<=4 or (chiencount>(nbch(conv_integer(rate))+4) and chiencount<(nbch(conv_integer(rate))+6))) then ~85~

86 46 if t_errors="1100" then 47 for j in 11 downto for i in 0 to creg(j,i)<=c(j+1,i); 52 end ; 53 end ; if t_errors="1010" then 56 for j in 9 downto for i in 0 to creg(j,i)<=c(j+1,i); 61 end ; 62 end ; for j in 7 downto for i in 0 to creg(j,i)<=c(j+1,i); 69 end ; 70 end ; tempcreg<=creg; 74 if delay_chien='1' then 75 delay_chien<='0'; chiencount<=chiencount+1; 78 delay_chien<='1'; erperframe<=(others=>'0'); if (chiencount<(nbch(conv_integer(rate)))+5) then if delay_chien='1' then for m in 0 to creg(0,m)<=(matrix1(0,m) and tempcreg(0,0)) xor (MATRIX1(1,m) and tempcreg(0,1)) xor (MATRIX1(2,m) and tempcreg(0,2)) xor (MATRIX1(3,m) and tempcreg(0,3)) xor (MATRIX1(4,m) and tempcreg(0,4)) xor (MATRIX1(5,m) and tempcreg(0,5)) xor (MATRIX1(6,m) and tempcreg(0,6)) xor (MATRIX1(7,m) and tempcreg(0,7)) xor (MATRIX1(8,m) and tempcreg(0,8)) xor (MATRIX1(9,m) and tempcreg(0,9)) xor (MATRIX1(10,m) and tempcreg(0,10)) xor (MATRIX1(11,m) and tempcreg(0,11)) xor (MATRIX1(12,m) and tempcreg(0,12)) xor (MATRIX1(13,m) and tempcreg(0,13)) xor (MATRIX1(14,m) and tempcreg(0,14)) xor (MATRIX1(15,m) and tempcreg(0,15)); 87 creg(1,m)<=(matrix2(0,m) and tempcreg(1,0)) xor (MATRIX2(1,m) and tempcreg(1,1)) xor (MATRIX2(2,m) and tempcreg(1,2)) xor (MATRIX2(3,m) and tempcreg(1,3)) xor (MATRIX2(4,m) and tempcreg(1,4)) xor (MATRIX2(5,m) and tempcreg(1,5)) xor (MATRIX2(6,m) and tempcreg(1,6)) xor (MATRIX2(7,m) and tempcreg(1,7)) xor (MATRIX2(8,m) and tempcreg(1,8)) xor (MATRIX2(9,m) and tempcreg(1,9)) xor (MATRIX2(10,m) and tempcreg(1,10)) xor (MATRIX2(11,m) and tempcreg(1,11)) xor (MATRIX2(12,m) and tempcreg(1,12)) xor (MATRIX2(13,m) and tempcreg(1,13)) xor (MATRIX2(14,m) and tempcreg(1,14)) xor (MATRIX2(15,m) and tempcreg(1,15)); 88 creg(2,m)<=(matrix3(0,m) and tempcreg(2,0)) xor (MATRIX3(1,m) and tempcreg(2,1)) xor (MATRIX3(2,m) and tempcreg(2,2)) xor (MATRIX3(3,m) and tempcreg(2,3)) xor (MATRIX3(4,m) and tempcreg(2,4)) xor ~86~

87 (MATRIX3(5,m) and tempcreg(2,5)) xor (MATRIX3(6,m) and tempcreg(2,6)) xor (MATRIX3(7,m) and tempcreg(2,7)) xor (MATRIX3(8,m) and tempcreg(2,8)) xor (MATRIX3(9,m) and tempcreg(2,9)) xor (MATRIX3(10,m) and tempcreg(2,10)) xor (MATRIX3(11,m) and tempcreg(2,11)) xor (MATRIX3(12,m) and tempcreg(2,12)) xor (MATRIX3(13,m) and tempcreg(2,13)) xor (MATRIX3(14,m) and tempcreg(2,14)) xor (MATRIX3(15,m) and tempcreg(2,15)); 89 creg(3,m)<=(matrix4(0,m) and tempcreg(3,0)) xor (MATRIX4(1,m) and tempcreg(3,1)) xor (MATRIX4(2,m) and tempcreg(3,2)) xor (MATRIX4(3,m) and tempcreg(3,3)) xor (MATRIX4(4,m) and tempcreg(3,4)) xor (MATRIX4(5,m) and tempcreg(3,5)) xor (MATRIX4(6,m) and tempcreg(3,6)) xor (MATRIX4(7,m) and tempcreg(3,7)) xor (MATRIX4(8,m) and tempcreg(3,8)) xor (MATRIX4(9,m) and tempcreg(3,9)) xor (MATRIX4(10,m) and tempcreg(3,10)) xor (MATRIX4(11,m) and tempcreg(3,11)) xor (MATRIX4(12,m) and tempcreg(3,12)) xor (MATRIX4(13,m) and tempcreg(3,13)) xor (MATRIX4(14,m) and tempcreg(3,14)) xor (MATRIX4(15,m) and tempcreg(3,15)); 90 creg(4,m)<=(matrix5(0,m) and tempcreg(4,0)) xor (MATRIX5(1,m) and tempcreg(4,1)) xor (MATRIX5(2,m) and tempcreg(4,2)) xor (MATRIX5(3,m) and tempcreg(4,3)) xor (MATRIX5(4,m) and tempcreg(4,4)) xor (MATRIX5(5,m) and tempcreg(4,5)) xor (MATRIX5(6,m) and tempcreg(4,6)) xor (MATRIX5(7,m) and tempcreg(4,7)) xor (MATRIX5(8,m) and tempcreg(4,8)) xor (MATRIX5(9,m) and tempcreg(4,9)) xor (MATRIX5(10,m) and tempcreg(4,10)) xor (MATRIX5(11,m) and tempcreg(4,11)) xor (MATRIX5(12,m) and tempcreg(4,12)) xor (MATRIX5(13,m) and tempcreg(4,13)) xor (MATRIX5(14,m) and tempcreg(4,14)) xor (MATRIX5(15,m) and tempcreg(4,15)); 91 creg(5,m)<=(matrix6(0,m) and tempcreg(5,0)) xor (MATRIX6(1,m) and tempcreg(5,1)) xor (MATRIX6(2,m) and tempcreg(5,2)) xor (MATRIX6(3,m) and tempcreg(5,3)) xor (MATRIX6(4,m) and tempcreg(5,4)) xor (MATRIX6(5,m) and tempcreg(5,5)) xor (MATRIX6(6,m) and tempcreg(5,6)) xor (MATRIX6(7,m) and tempcreg(5,7)) xor (MATRIX6(8,m) and tempcreg(5,8)) xor (MATRIX6(9,m) and tempcreg(5,9)) xor (MATRIX6(10,m) and tempcreg(5,10)) xor (MATRIX6(11,m) and tempcreg(5,11)) xor (MATRIX6(12,m) and tempcreg(5,12)) xor (MATRIX6(13,m) and tempcreg(5,13)) xor (MATRIX6(14,m) and tempcreg(5,14)) xor (MATRIX6(15,m) and tempcreg(5,15)); 92 creg(6,m)<=(matrix7(0,m) and tempcreg(6,0)) xor (MATRIX7(1,m) and tempcreg(6,1)) xor (MATRIX7(2,m) and tempcreg(6,2)) xor (MATRIX7(3,m) and tempcreg(6,3)) xor (MATRIX7(4,m) and tempcreg(6,4)) xor (MATRIX7(5,m) and tempcreg(6,5)) xor (MATRIX7(6,m) and tempcreg(6,6)) xor (MATRIX7(7,m) and tempcreg(6,7)) xor (MATRIX7(8,m) and tempcreg(6,8)) xor (MATRIX7(9,m) and tempcreg(6,9)) xor (MATRIX7(10,m) and tempcreg(6,10)) xor (MATRIX7(11,m) and tempcreg(6,11)) xor (MATRIX7(12,m) and tempcreg(6,12)) xor (MATRIX7(13,m) and tempcreg(6,13)) xor (MATRIX7(14,m) and tempcreg(6,14)) xor (MATRIX7(15,m) and tempcreg(6,15)); 93 creg(7,m)<=(matrix8(0,m) and tempcreg(7,0)) xor (MATRIX8(1,m) and tempcreg(7,1)) xor (MATRIX8(2,m) and tempcreg(7,2)) xor (MATRIX8(3,m) and tempcreg(7,3)) xor (MATRIX8(4,m) and tempcreg(7,4)) xor (MATRIX8(5,m) and tempcreg(7,5)) xor (MATRIX8(6,m) and tempcreg(7,6)) xor (MATRIX8(7,m) and tempcreg(7,7)) xor (MATRIX8(8,m) and tempcreg(7,8)) xor (MATRIX8(9,m) and tempcreg(7,9)) xor (MATRIX8(10,m) and tempcreg(7,10)) xor (MATRIX8(11,m) and tempcreg(7,11)) xor (MATRIX8(12,m) and tempcreg(7,12)) xor (MATRIX8(13,m) and tempcreg(7,13)) xor (MATRIX8(14,m) and tempcreg(7,14)) xor (MATRIX8(15,m) and tempcreg(7,15)); 94 creg(8,m)<=(matrix9(0,m) and tempcreg(8,0)) xor (MATRIX9(1,m) and tempcreg(8,1)) xor (MATRIX9(2,m) and tempcreg(8,2)) xor (MATRIX9(3,m) and tempcreg(8,3)) xor (MATRIX9(4,m) and tempcreg(8,4)) xor (MATRIX9(5,m) and tempcreg(8,5)) xor (MATRIX9(6,m) and tempcreg(8,6)) xor (MATRIX9(7,m) and tempcreg(8,7)) xor (MATRIX9(8,m) and tempcreg(8,8)) xor (MATRIX9(9,m) and tempcreg(8,9)) xor (MATRIX9(10,m) and tempcreg(8,10)) xor (MATRIX9(11,m) and tempcreg(8,11)) xor (MATRIX9(12,m) and tempcreg(8,12)) xor (MATRIX9(13,m) and tempcreg(8,13)) xor (MATRIX9(14,m) and tempcreg(8,14)) xor (MATRIX9(15,m) and tempcreg(8,15)); 95 creg(9,m)<=(matrix10(0,m) and tempcreg(9,0)) xor ~87~

88 (MATRIX10(1,m) and tempcreg(9,1)) xor (MATRIX10(2,m) and tempcreg(9,2)) xor (MATRIX10(3,m) and tempcreg(9,3)) xor (MATRIX10(4,m) and tempcreg(9,4)) xor (MATRIX10(5,m) and tempcreg(9,5)) xor (MATRIX10(6,m) and tempcreg(9,6)) xor (MATRIX10(7,m) and tempcreg(9,7)) xor (MATRIX10(8,m) and tempcreg(9,8)) xor (MATRIX10(9,m) and tempcreg(9,9)) xor (MATRIX10(10,m) and tempcreg(9,10)) xor (MATRIX10(11,m) and tempcreg(9,11)) xor (MATRIX10(12,m) and tempcreg(9,12)) xor (MATRIX10(13,m) and tempcreg(9,13)) xor (MATRIX10(14,m) and tempcreg(9,14)) xor (MATRIX10(15,m) and tempcreg(9,15)); 96 creg(10,m)<=(matrix11(0,m) and tempcreg(10,0)) xor (MATRIX11(1,m) and tempcreg(10,1)) xor (MATRIX11(2,m) and tempcreg(10,2)) xor (MATRIX11(3,m) and tempcreg(10,3)) xor (MATRIX11(4,m) and tempcreg(10,4)) xor (MATRIX11(5,m) and tempcreg(10,5)) xor (MATRIX11(6,m) and tempcreg(10,6)) xor (MATRIX11(7,m) and tempcreg(10,7)) xor (MATRIX11(8,m) and tempcreg(10,8)) xor (MATRIX11(9,m) and tempcreg(10,9)) xor (MATRIX11(10,m) and tempcreg(10,10)) xor (MATRIX11(11,m) and tempcreg(10,11)) xor (MATRIX11(12,m) and tempcreg(10,12)) xor (MATRIX11(13,m) and tempcreg(10,13)) xor (MATRIX11(14,m) and tempcreg(10,14)) xor (MATRIX11(15,m) and tempcreg(10,15)); 97 creg(11,m)<=(matrix12(0,m) and tempcreg(11,0)) xor (MATRIX12(1,m) and tempcreg(11,1)) xor (MATRIX12(2,m) and tempcreg(11,2)) xor (MATRIX12(3,m) and tempcreg(11,3)) xor (MATRIX12(4,m) and tempcreg(11,4)) xor (MATRIX12(5,m) and tempcreg(11,5)) xor (MATRIX12(6,m) and tempcreg(11,6)) xor (MATRIX12(7,m) and tempcreg(11,7)) xor (MATRIX12(8,m) and tempcreg(11,8)) xor (MATRIX12(9,m) and tempcreg(11,9)) xor (MATRIX12(10,m) and tempcreg(11,10)) xor (MATRIX12(11,m) and tempcreg(11,11)) xor (MATRIX12(12,m) and tempcreg(11,12)) xor (MATRIX12(13,m) and tempcreg(11,13)) xor (MATRIX12(14,m) and tempcreg(11,14)) xor (MATRIX12(15,m) and tempcreg(11,15)); 98 end ; 99 delay_chien<='0'; 100 msg<=errorbit xor r; tempcreg<=creg; 103 for m in 0 to if t_errors="1100" then 106 er(m)<=creg(0,m) xor creg(1,m) xor creg(2,m) xor creg(3,m) xor creg(4,m) xor creg(5,m) xor creg(6,m) xor creg(7,m) xor creg(8,m) xor creg(9,m) xor creg(10,m) xor creg(11,m); if t_errors="1010" then 109 er(m)<=creg(0,m) xor creg(1,m) xor creg(2,m) xor creg(3,m) xor creg(4,m) xor creg(5,m) xor creg(6,m) xor creg(7,m) xor creg(8,m) xor creg(9,m); er(m)<=creg(0,m) xor creg(1,m) xor creg(2,m) xor creg(3,m) xor creg(4,m) xor creg(5,m) xor creg(6,m) xor creg(7,m); end ; 115 if(er(0)='1' AND er(1)='0' AND er(2)='0' AND er(3)='0' AND er(4)='0' AND er(5)='0' AND er(6)='0' AND er(7)='0' AND er(8)='0' AND er(9)='0' AND er(10)='0' AND er(11)='0' AND er(12)='0' AND er(13)='0' AND er(14)='0' AND er(15)='0') then 116 errorbit<='1'; errorbit<='0'; if temp_times<" " and temp_errors<" " then 122 if msg/=enc_msg_temp then 123 temp_errors<=temp_errors+1; ~88~

89 erperframe<=erperframe+1; out_errors<=temp_errors; enc_msg_temp:=enc_msg; if (chiencount=(nbch(conv_integer(rate)))+3) then temp_times<=temp_times+1; if conv_integer(erperframe)>0 then badframes<=badframes+1; chiencount<=chiencount+1; delay_chien<='1'; end process U_chien_proc; Κώδικας 10. VHDL Έρευνα Chien 5.5 Περιφερειακά Components Στο παρών κεφάλαιο θα αναλυθούν ορισμένα components τα οποία αξιοποιήθηκαν για να κατασκευαστεί το σύστημα. Ορισμένα από αυτά χρησιμοποιήθηκαν από διάφορα συστήματα Κανάλι Θορύβου Το component U_noise, το οποίο προσέθετε θόρυβο είναι αποτέλεσμα άλλης διπλωματικής εργασίας και στη συγκεκριμένη εργασία απλώς συνδέθηκε στον κωδικοποιητή και στον αποκωδικοποιητή. Καθώς όμως το σύστημα είναι σειριακό, ενώ το κανάλι απαιτεί μετάδοση 2 μπιτ παράλληλων κατασκευάστηκαν δύο components που μετέτρεπαν το σήμα κατάλληλα library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity U_Buf_Enc is port( clk : in rst : in enbuf : in code : in enc_code : out delay_buf : out std_logic; std_logic; std_logic; std_logic; std_logic_vector(0 to 1); std_logic); end entity U_Buf_Enc ; architecture behavioral of U_Buf_Enc is signal addr: STD_LOGIC_VECTOR (0 to 0):="0"; ~89~

90 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity U_Buf_Enc is port( clk : in rst : in enbuf : in code : in enc_code : out delay_buf : out std_logic; std_logic; std_logic; std_logic; std_logic_vector(0 to 1); std_logic); end entity U_Buf_Enc ; architecture behavioral of U_Buf_Enc is signal addr: STD_LOGIC_VECTOR (0 to 0):="0"; begin delay_buf<=addr(0); Proc0: process (clk) is begin if (clk'event and clk = '1') then if (rst='1' or enbuf='0') then addr<="0"; enc_code(conv_integer(addr))<=code; addr<=not(addr); end process Proc0 ; end architecture behavioral; Κώδικας 11. VHDL Buffer Κωδικοποιητή library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity U_Buf_Dec is port( clk : in delay_buf : in r_snr : in rbuf : out std_logic; std_logic; std_logic_vector(0 to 1); std_logic); end entity U_Buf_Dec ; architecture behavioral of U_Buf_Dec is signal temp: STD_LOGIC_VECTOR(0 to 1); begin Proc0: process (clk) is ~90~

91 22 begin 23 if (clk'event and clk = '1') then 24 if delay_buf='1' then 25 rbuf<=temp(1); temp<=r_snr; 29 rbuf<=r_snr(0); end process Proc0 ; end architecture behavioral; Κώδικας 12. VHDL Buffer του Αποκωδικοποιητή Στους buffers η πληροφορία εισέρχεται και εξέρχεται σειριακά αντίστοιχα. Για να μην προστεθεί δεύτερο ρολόι διαφορετικής περιόδου, αποφασίστηκε για τον buffer του αποκωδικοποιητή να γίνει η εξής διαδικασία: 1. Στον πρώτο κύκλο αποθηκεύεται σε ένα προσωρινό σήμα το r_snr, δηλαδή η έξοδος του καναλιού. Σε αυτόν τον κύκλο θα βγει ως έξοδος το πρώτο bit του r_snr 2. Στο δεύτερο κύκλο βγαίνει ως έξοδος το δεύτερο bit του προσωρινού σήματος ή του δεύτερου bit του r_snr του προηγούμενου κύκλου 3. Επαναλαμβάνεται η διαδικασία. Με αυτόν τον τρόπο αποφεύχθηκε η δημιουργία δεύτερου ρολογιού και συγχρόνως πάρθηκαν πληροφορίες και από τις δύο θέσεις bit Πολλαπλασιαστές Στο σύστημα υλοποιήθηκαν διαφορετικοί πολλαπλασιαστές, με μικρές όμως διαφορές. Γι' αυτό το λόγο κρίνεται ότι μια παράθεση αρκεί. Για την κατασκευή ενός τέτοιου κυκλώματος αξιοποιήθηκε η θεωρία της ενότητας LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; use work.u_constants_pkg.all; ENTITY U_Mul IS PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; mul1: IN CURRENT_POL; mul2: IN STD_LOGIC; result: OUT CURRENT_POL); end U_Mul; architecture Structure of U_Mul is signal test: STD_LOGIC; ~91~

92 18 signal test1: STD_LOGIC; 19 begin 20 U_Mul_proc: Process (clk) 21 variable tmp: STD_LOGIC_VECTOR(0 to 12); 22 variable rslt: current_pol:=(others=>(others=>'0')); 23 begin 24 if (clk'event AND clk='1') then 25 if(rst='0') then 26 for j in 12 downto tmp(j):=rslt(j,15); 29 end ; 30 for j in 12 downto for i in 15 downto if (i=0) then 35 rslt(j,0):=(mul2 and mul1(j,0)) xor tmp(j); 36 test<=rslt(0,0); rslt(j,i):=((mul2 and mul1(j,i))xor(min1(16-i)and tmp(j)) xor rslt(j,i-1)); end ; 41 end ; 42 test1<=rslt(0,0); 43 result<=rslt; tmp:=(others=>'0'); 46 rslt:=(others=>(others=>'0')); end process U_Mul_proc; 50 end Structure; Κώδικας 13. VHDL Πολλαπλασιαστές Εύρεση Αντιστρόφων Για την εύρεση αντιστρόφων αποφασίστηκε να χρησιμοποιηθεί ένα look-up table του οποίου οι τιμές θα πολλαπλασιάζονται με την προς αντιστροφή λέξη. Το look-up table περιέχει όλες τις πιθανές τιμές του πεδίου GF (216 ). Αν το γινόμενο είναι 1 τότε αυτή η λέξη (του look up table) είναι η αντίστροφη. Λόγω των περιορισμών του hardware (FPGA), αντί ενός look up table προτιμήθηκαν τέσσερις 16μπιτοι μετρητές οι οποίοι στο τέλος κάθε πολλαπλασιασμού θα αυξάνονται κατά 4. Υπάρχουν διάφορες προτάσεις για βελτίωση της υπάρχουσας διαδικασίας οι οποίες θα αναλυθούν σε επόμενο κεφάλαιο. Όταν βρεθεί ο αντίστροφος, στέλνεται σήμα found=1 και συγχρόνως ως έξοδος η αντίστροφη λέξη. Αναλόγως της υλοποίησης, το component αυτό μπορεί να είναι πολύ αργό. Συγκεκριμένα το μέγιστο πρέπει να ελεγχθούν αν είναι αντίστροφες =65535 λέξεις (το 0 δεν εξετάζεται). Για τον έλεγχο κάθε λέξης απαιτούνται 16 κύκλοι ρολογιού για να γίνει ο πολλαπλασιασμός. Η καλύτερη υλοποίηση που δοκιμάστηκε και δούλευε επιτυχώς ήταν να ελέγχονται 512 λέξεις. Καθώς όμως ο χρόνος σύνθεσης, λόγω της πολυπλοκότητας του συστήματος ήταν μεγάλος προτιμήθηκε μία υλοποίηση 256 λέξεων. Ο κώδικας παρακάτω για να είναι πιο ευνόητος δίνεται με έλεγχο 4 λέξεων. Η ταχύτητα του αλγορίθμου θα αναλυθεί σε παρακάτω κεφάλαιο. Για να ελαχιστοποιηθεί ο χρόνος, όταν βρεθεί ο αντίστροφος η διαδικασία σταματάει και στέλνεται το σήμα found=1. ~92~

93 1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_1164.ALL; 3 use ieee.numeric_std.all; 4 use work.u_constants_pkg.all; 5 use IEEE.std_logic_unsigned.all; 6 7 ENTITY U_Multiplier16 IS 8 PORT( 9 clk : IN STD_LOGIC; 10 rst : IN STD_LOGIC; 11 mul2: IN STD_LOGIC_VECTOR (0 to 15); 12 --led: OUT STD_LOGIC; 13 found: OUT STD_LOGIC; 14 result: OUT STD_LOGIC_VECTOR (0 to 15)); 15 end U_Multiplier16; architecture struct of U_Multiplier16 is type mul_16bit_x4 is array (0 to 3,0 to 15) of STD_LOGIC; 20 signal tmp_mul0,tmp_mul1,tmp_mul2,tmp_mul3 : STD_LOGIC_VECTOR(0 to 15); 21 signal test_mul1: STD_LOGIC_VECTOR (15 downto 0); 22 signal testcount: INTEGER; 23 signal testrslt:mul_16bit_x4; 24 signal delay: STD_LOGIC; begin U_Multiplier16_proc: Process (clk) 30 variable mul1,rslt: mul_16bit_x4:=(others=>(others=>'0')); 31 variable count: INTEGER:=0; 32 variable tmp: STD_LOGIC_VECTOR (0 to 3); 33 begin 34 if (clk'event AND clk='1') then 35 testcount<=count; 36 testrslt<=rslt; 37 if(rst='0') then 38 if delay='1' then 39 delay<=not(delay); for i in 0 to mul1(0,i):=tmp_mul0(i); 44 mul1(1,i):=tmp_mul1(i); 45 mul1(2,i):=tmp_mul2(i); 46 mul1(3,i):=tmp_mul3(i); 47 end ; 48 if count<=15 then 49 for j in 3 downto tmp(j):=rslt(j,15); 52 end ; 53 for j in 3 downto for i in 15 downto if (i=0) then 58 rslt(j,0):=(mul2(15-count) and mul1(j,0)) xor tmp(j); rslt(j,i):=((mul2(15-count) and mul1(j,i))xor(min1(16-i)and tmp(j)) xor rslt(j,i-1)); ~93~

94 61 62 end ; 63 end ; 64 count:=count+1; for j in 0 to if (rslt(j,0)='1' and rslt(j,1)='0' and rslt(j,2)='0' and rslt(j,3)='0' and rslt(j,4)='0' and rslt(j,5)='0' and rslt(j,6)='0' and rslt(j,7)='0' and rslt(j,8)='0' and rslt(j,9)='0' and rslt(j,10)='0' and rslt(j,11)='0' and rslt(j,12)='0' and rslt(j,13)='0' and rslt(j,14)='0' and rslt(j,15)='0') then 69 for i in 15 downto result(i)<=mul1(j,i); --thelw lsb na einai to 0 72 found<='1'; 73 --testfound<='1'; 74 end ; if j=3 then 77 rslt:=(others=>(others=>'0')); 78 tmp:=(others=>'0'); 79 tmp_mul0<=tmp_mul0+4; 80 tmp_mul1<=tmp_mul1+4; 81 tmp_mul2<=tmp_mul2+4; 82 tmp_mul3<=tmp_mul3+4; 83 count:=0; end ; delay<='1'; 91 count:=0; 92 found<='0'; 93 tmp:=(others=>'0'); 94 rslt:=(others=>(others=>'0')); 95 tmp_mul0<=" "; 96 tmp_mul1<=" "; 97 tmp_mul2<=" "; 98 tmp_mul3<=" "; end process U_Multiplier16_proc; 102 end struct; Κώδικας 14. VHDL Εύρεση Αντιστρόφου ~94~

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

96 6.1.1 Προδιαγραφές, Επιλεγμένοι Αλγόριθμοι Αρχικά αναλύθηκαν οι προδιαγραφές του προτύπου DVB-S2. Καθώς στις προδιαγραφές του προτύπου αυτού περιλαμβάνονται κώδικες BCH διαφορετικών ρυθμών, έπρεπε αρχικά να επιλεγεί ποιος κώδικας BCH θα αναλυθεί. Επιλέχθηκε να κατασκευαστεί σύστημα κωδικοποιητή αποκωδικοποιητή το οποίο να δέχεται όλους τους κώδικες BCH για DVB-S2 κανονικού πλαισίου, δηλαδή όσους κώδικες του προτύπου ανήκουν στο GF (216 ). Η απόφαση αυτή έκανε το επόμενο στάδιο, δηλαδή τη σχεδίαση σε VHDL, πιο πολύπλοκη καθώς το ζήτημα της επιφανείας είναι πιο έντονο όταν υπάρχει η απαίτηση συστήματος για 11 διαφορετικές κωδικοποιήσεις. Για το πέρασμα στο FPGA έπρεπε η σχεδίαση να γίνει με στόχο να καταλαμβάνει το σύστημα μικρή επιφάνεια και πόρους, να έχει υψηλή συχνότητα λειτουργίας (ιδανικά τέτοια ώστε να εκμεταλλεύεται τη μέγιστη συχνότητα του FPGA), και τέλος το throughput όλου του συστήματος να είναι αρκετά υψηλό ώστε να επιτρέπει τη γρήγορη μελέτη της συμπεριφοράς του συστήματος, ειδικότερα στις χαμηλές στάθμες θορύβου. Στόχος ήταν η εύρεση αλγορίθμων και σχεδίαση τέτοια ώστε να ικανοποιούνται όλοι αυτοί οι στόχοι ιδανικότερα Περιγραφή σε Λογισμικό Αφού καθορίστηκαν οι αλγόριθμοι που θα χρησιμοποιηθούν, ακολούθησε η μοντελοποίηση του κώδικα BCH και η περιγραφή του σε λογισμικό, με την κατασκευή ενός «bit true» μοντέλου. Το περιβάλλον λογισμικού που χρησιμοποιήθηκε ήταν το MATLAB. Για τη μείωση του χρόνου που απαιτείται για την εύρεση και διόρθωση λαθών που πιθανώς υπάρχουν σε τμήματα του μοντέλου, επιλέχθηκε να αναπτυχθεί κατά ανεξάρτητα τμήματα τα οποία αργότερα συνδέθηκαν. Αργότερα ελέγχθηκε και το συνολικό μοντέλο Περιγραφή σε Υλικό Αφού ολοκληρώθηκε η περιγραφή σε λογισμικό, ακολούθησε η περιγραφή σε υλικό. Συγκεκριμένα υλοποιήθηκε το σύστημα σε γλώσσα VHDL μέσω του περιβάλλοντος ModelSim, σε συνδυασμό με το MATLAB το οποίο παρήγαγε κάποιες τιμές οι οποίες ήταν απαραίτητες για την υλοποίηση σε VHDL. Ωστόσο, όλα αυτά τα δεδομένα περάστηκαν στον κώδικα VHDL, ώστε κάθε παραμετροποίηση (δηλαδή αλλαγή του ρυθμού του κώδικα) να είναι εφικτή με τους διακόπτες του FPGA και όχι από την παραγωγή νέου bitstream. Εξαίρεση αποτελεί το component που εξομοιώνει ένα κανάλι με θόρυβο, καθώς σε αυτό υπήρχε η ανάγκη μεταβολής του κώδικα μέσω scripts του Matlab. Για την αποκλειστική λειτουργία του συστήματος ως κωδικοποιητή και αποκωδικοποιητή δεν υπάρχει καμία ανάγκη χρήσης scripts για τις διάφορες παραμετροποιήσεις. Αφού έγινε επαλήθευση της υλοποίησης σε VHDL, με σύγκριση των αποτελεσμάτων του MATLAB με αυτές της προσομοίωσης του Modelsim, μετετράπη ο κώδικας ώστε να είναι κατάλληλος για ανέβασμα στο FPGA. Σε αυτό το στάδιο έγινε χρήση του εργαλείου XST του Xilinx ISE Προτού ανεβεί στο FPGA καθορίστηκαν τα σημεία του FPGA που αντιστοιχούν στις διάφορες εισόδους, ορίστηκε το ρολόι κ.α. Ακολούθησε η σύνθεση του σχεδιασμού μετά την οποία δόθηκαν στοιχεία όπως η χρήση των πόρων, οι καθυστερήσεις και τυχόν σφάλματα. Να σημειωθεί ότι αρχικά χρησιμοποιήθηκε το Virtex5-LX50T το οποίο, με την προσθήκη του component του καναλιού, δεν μπορούσε να καλύψει τις ανάγκες επιφάνειας του συστήματος και χρησιμοποιήθηκε το Virtex5-FX70T. Εφόσον δεν υπήρχαν λάθη στην αρχιτεκτονική ακολούθησε η υλοποίηση της αρχιτεκτονικής (translate,map,place & route) και επιπλέον εξομοιώσεις μέσω του ModelSim για επαλήθευση. Τελευταίο σημείο ήταν παραγωγή bitstream αρχείου το οποίο ανέβηκε στο FPGA μέσω του εργαλείου impact του ISE. Me τη χρήση του εργαλείου Chipscope Pro του ISE, υπάρχει η δυνατότητα παρατήρησης των καθορισμένων εξόδων του συστήματος, μέσω των οποίων έγινε ο τελικός έλεγχος και αργότερα και οι μετρήσεις. ~96~

97 6.1.4 Έλεγχος του Συστήματος Μέσω Μετρήσεων Στο τελευταίο στάδιο ελέγχου έγινε μια σύγκριση των λαθών σε διάφορες στάθμες θορύβου μεταξύ του θεωρητικού MATLAB μοντέλου και του συστήματος περασμένο στο FPGA. Πριν από αυτό τον έλεγχο, με την απουσία θορύβου στο κανάλι, έγινε έλεγχος της διορθωτικής ικανότητας του κώδικα με σταθερή μεταβολή t bit της κωδικοποιημένης λέξης και έλεγχου αν η αποκωδικοποιημένη λέξη είναι σωστή. Για τον ευκολότερο έλεγχο, κατασκευάστηκε διάγραμμα BER E b / N 0. Ο κώδικας που ελέγχθηκε ήταν ο BCH (16200,16008,12). Για την όσο το δυνατόν ρεαλιστικότερη αναπαράσταση, στο θεωρητικό μοντέλο για κάθε στάθμη του E b / N 0 μετρήθηκαν τουλάχιστον λάθη. Στο FPGA έγιναν μετρήσεις που στις περισσότερες στάθμες ξεπερνούσαν κατά πολύ αυτόν τον αριθμό. Όπως φαίνεται στα σχήματα 6.2 και 6.3, οι αποκλίσεις του θεωρητικού μοντέλου με τις μετρήσεις του FPGA είναι ελάχιστες. Το διάστημα στο οποίο έγινε η σύγκριση είναι το [2,6], γιατί απαιτείται πολύς χρόνος για τη μέτρηση αποτελεσμάτων με το μοντέλο λογισμικού. Στο FPGA έγιναν επιπλέον μετρήσεις και σε μεγαλύτερο διάστημα, το οποίο θα παρουσιαστεί σε επόμενο κεφάλαιο. ~97~

98 Σχήμα 6.2 Διάγραμμα BER - Eb/N0 για κώδικα BCH(16200,16008) από MATLAB Σχήμα 6.3 Διάγραμμα BER - Eb/N0 για κώδικα BCH(16200,16008) από FPGA ~98~

99 6.2 Αναπτυξιακό Περιβάλλον Xilinx Virtex-5 FXT FPGA ML507 Ακολουθεί μια σύντομη παρουσίαση του αναπτυξιακού συστήματος που κυρίως χρησιμοποιήθηκε κατά τη διαδικασία της σχεδίασης, υλοποίησης και ελέγχου του συστήματος, καθώς και κατά την εκτέλεση των πειραμάτων. Στο παρακάτω σχήμα φαίνεται το λειτουργικό διάγραμμά του. Σχήμα 6.4. Λειτουργικό Διάγραμμα του Αναπτυξιακού Συστήματος ML 507 Ακολουθούν δύο σχήματα που απεικονίζουν τα συστατικά μέρη του αναπτυξιακού συστήματος Virtex-5 ML507. ~99~

100 Σχήμα 6.5. Λεπτομερής Απεικόνιση των Συστατικών Μερών του Αναπτυξιακού Συστήματος Virtex-5 ML507 (Εμπρός Όψη) Σχήμα 6.6. Απεικόνιση των Συστατικών Μερών του Αναπτυξιακού Συστήματος Virtex-5 ML507 (Πίσω Όψη) Πιο αναλυτικά τα συστατικά μέρη αυτού του αναπτυξιακού συστήματος με βάση την αρίθμηση των σχημάτων είναι: ~100~

101 Virtex-5 FPGA : XC5VFX70T-1FFG1136 DDR2 SODIMM : MIG Compliance, Memory Expansion, Clock Signal, Signaling Differential Clock Input and Output with SMA Connectors Oscillators : 100 ΜΗ oscillator 3.3 V (user) 25 MHz to the Ethernet PHY 24.5 MHz to the audio 27 MHz to the USB Controller 33 MHz to the Xilinx System ACE CF 33MHz, 27 MHz, and differential 200 MHz to the Xilinx FPGA LCD Brightness and Contrast Adjustment General Purpose I/O DIP Switches (Active-High) User and Error LEDs (Active-High) User Pushbuttons (Active -High) CPU Reset Button(Active-Low) XGI Expansion Headers : Differential, Single-Ended and Other Expansion I/O Connectors Stereo AC97 Audio Codec RS-232 Serial Port 16-Character x 2-Line LCD IIC Bus with 8-Kb EEPROM DVI Connector PS/2 Mouse and Keyboard Ports System ACE and Compact Flash Connector ZBT Synchronous SRAM Linear Flash Chips Xilinx XC95144XL CPLD 10 /100 /1000 Tri-Speed Ethernet PHY USB Controller with Host and Peripheral Ports Xilinx XCF32P Platform Flash PROM Configuration Storage Devices JTAG Configuration Port Onboard Power Supplies AC Adapter and Input Power Switch /Jack Power Indicator LED DONE LED INIT LED Program Switch Configuration Address and Mode DIP Switches Encryption Key Battery SPI Flash IIC Fan Controller and Temperature / Voltage Monitor Piezo VGA Input Video Codec JTAG Trace / Debug Rotary Encoder Differential GTP / GTX Input and Output with SMA Connectors PCI Express Interface Serial-ATA Host Connectors SFP Connector GTP / GTX Clocking Circuitry Soft Touch Landing Pad System Monitor ~101~

102 Κεφάλαιο 7 Υλοποίηση σε FPGA Πειραματικά Δεδομένα 7.1 Στατιστικά Αποτελέσματα Υλοποίησης Για την υλοποίηση (σύνθεση και τοποθέτηση) που περιγράφηκε στο προηγούμενο κεφάλαιο, χρησιμοποιήθηκε το FPGA Virtex-5 XC5VFX70T-1FF1136. Μέγιστη συχνότητα υπολογίστηκε από το ISE στα MHz, όμως η υλοποίηση περιορίστηκε στα 100 Mhz. Παρακάτω ακολουθούν τα στατιστικά του συστήματος με και χωρίς το κανάλι, ώστε να είναι εμφανές το μέγεθος του συστήματος για συνθήκες εκτός προσομοίωσης. Πίνακας 7.1. Device Utilization Summary της Αρχιτεκτονικής του Συστήματος BCH, χωρίς το κανάλι, σε Vitrex-5 XC5VFX70T-1FFG1136 ~102~

103 Πίνακας 7.2. Device Utilization Summary της Αρχιτεκτονικής του Συστήματος BCH, με το κανάλι, σε Vitrex-5 XC5VFX70T-1FFG1136 Όπως φαίνεται στον πρώτο πίνακα, αν είχαν εφαρμοστεί τεχνικές shortening με αποτέλεσμα να μην μπορεί να χρησιμοποιηθεί μια αρχιτεκτονική που να είναι συμβατή για όλους κώδικες, καθώς μεγάλωνε κατά 11 φορές περίπου το τμήμα που έβρισκε τα σύνδρομα, όπως και άλλα components, θα ήταν πιθανό να υπάρχει πρόβλημα μεγέθους σε αυτό το FPGA. Με τις συγκεκριμένες επιλογές, όπως φαίνεται ακόμα και με την προσθήκη του καναλιού, οι πόροι του FPGA καλύπτουν την αρχιτεκτονική του συστήματος. Οι δύο πίνακες έχουν για component εύρεσης αντιστρόφου τον κώδικα 14, δηλαδή σύστημα όπου ελέγχονται 4 λέξεις ταυτόχρονα. Παρακάτω ακολουθεί ο πίνακας συστήματος που το component εύρεσης αντιστρόφου ελέγχει 512 λέξεις ταυτόχρονα. Όπως φαίνεται υπάρχουν πόροι του FPGA που ~103~

104 χρησιμοποιούνται σχεδόν στο 100%. Αυτό συμβαίνει γιατί πέρα από 512 λέξεις που είναι την ίδια στιγμή προσπελάσιμες υπάρχουν και μπιτοι πολλαπλασιαστές. Πίνακας 7.4. Device Utilization Summary της Αρχιτεκτονικής του Συστήματος BCH, με το κανάλι και με coponent εύρεσης αντιστρόφου όπου ελέγχονται 512 λέξεις ταυτόχρονα σε Vitrex-5 XC5VFX70T1FFG1136 ~104~

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

K24 Ψηφιακά Ηλεκτρονικά 6: Πολυπλέκτες/Αποπολυπλέκτες

K24 Ψηφιακά Ηλεκτρονικά 6: Πολυπλέκτες/Αποπολυπλέκτες K24 Ψηφιακά Ηλεκτρονικά 6: Πολυπλέκτες/Αποπολυπλέκτες TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΧΝΟΛΟΓΙΚΟ Περιεχόμενα 1 2 3 4 Λειτουργία Πολυπλέκτης (Mul plexer) Ο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συνδυαστικά Λογικά Κυκλώματα Συνδυαστικά Λογικά Κυκλώματα Ένα συνδυαστικό λογικό κύκλωμα συντίθεται από λογικές πύλες, δέχεται εισόδους και παράγει μία ή περισσότερες εξόδους. Στα συνδυαστικά λογικά κυκλώματα οι έξοδοι σε κάθε χρονική

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

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

Μέθοδοι Ελέγχου Σφαλμάτων Μέθοδοι Ελέγχου Σφαλμάτων Έλεγχος Ισοτιμίας (Parity Check) Άθροισμα Ελέγχου (Checksum) Έλεγχος κυκλικού πλεονασμού (CRC- Cyclic Redundancy Check) Μερικά μπορεί να μεταφερθούν λάθος, πχ λόγω θορύβου Θα

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

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

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

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

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

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

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

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

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

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

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

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

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

Σήματα και Συστήματα. Διάλεξη 1: Σήματα Συνεχούς Χρόνου. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Σήματα και Συστήματα. Διάλεξη 1: Σήματα Συνεχούς Χρόνου. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής Σήματα και Συστήματα Διάλεξη 1: Σήματα Συνεχούς Χρόνου Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Εισαγωγή στα Σήματα 1. Σκοποί της Θεωρίας Σημάτων 2. Κατηγορίες Σημάτων 3. Χαρακτηριστικές Παράμετροι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τηλεπικοινωνιακά Συστήματα ΙΙ Τηλεπικοινωνιακά Συστήματα ΙΙ Διάλεξη 9: Εισαγωγή στην τεχνική πολυπλεξίας Code Division Multiple Access - CDMA Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα Ορισμός Σχέση CDMA με την TDMA και την

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

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

Μ Α Θ Η Μ Α Τ Ι Κ Α Α Γ Υ Μ Ν Α Σ Ι Ο Υ Μ Α Θ Η Μ Α Τ Ι Κ Α Α Γ Υ Μ Ν Α Σ Ι Ο Υ 1 Συνοπτική θεωρία Ερωτήσεις αντικειμενικού τύπου Ασκήσεις Διαγωνίσματα 2 ΣΥΝΟΠΤΙΚΗ ΘΕΩΡΙΑ ΕΡΩΤΗΣΕΙΣ-ΑΠΑΝΤΗΣΕΙΣ 1. Πότε ένας φυσικός αριθμός λέγεται άρτιος; Άρτιος

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

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

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

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

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

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

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

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης Γ2.1 Στοιχεία Αρχιτεκτονικής Γ Λυκείου Κατεύθυνσης Ορισμός άλγεβρας Boole Η άλγεβρα Boole ορίζεται, ως μία αλγεβρική δομή A, όπου: (α) Το Α είναι ένα σύνολο στοιχείων που περιέχει δύο τουλάχιστον στοιχεία

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Αριθμητικά Συστήματα. Επιμέλεια Διαφανειών: Δ. Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Αριθμητικά Συστήματα Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Αριθμητικά Συστήματα Δεκαδικό Σύστημα: Βάση το 10, ψηφία 10 και συντελεστές

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

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

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

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

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

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

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

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΕΝΟΤΗΤΑ Μ1 ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Εκπαιδευτής: Γ. Π. ΠΑΤΣΗΣ, Επικ. Καθηγητής, Τμήμα Ηλεκτρονικών Μηχανικών, ΤΕΙ Αθήνας ΚΑΘΟΛΙΚΕΣ ΠΥΛΕΣ NND NOR ΑΛΓΕΒΡΑ OOLE ΘΕΩΡΗΜΑ

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

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

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

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

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

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

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

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL 3.1 Εισαγωγή στα FLIP FLOP 3.1.1 Θεωρητικό Υπόβαθρο Τα σύγχρονα ακολουθιακά κυκλώματα με τα οποία θα ασχοληθούμε στο εργαστήριο των Ψηφιακών συστημάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ

ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ ΘΕΩΡΙΑ ΑΛΓΕΒΡΑ ΚΕΦΑΛΑΙΟ Α.1. 1) Ποιοι φυσικοί αριθμοί λέγονται άρτιοι και ποιοι περιττοί; ( σ. 11 ) 2) Από τι καθορίζεται η αξία ενός ψηφίου σ έναν φυσικό αριθμό; ( σ. 11 ) 3) Τι

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΉΜΑ ΕΠΙΣΤΉΜΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Κ 7 Επικοινωνίες ΙΙ Χειμερινό Εξάμηνο Διάλεξη η Νικόλαος Χ. Σαγιάς Επίκουρος Καθηγητής Webpage: hp://ecla.uop.gr/coure/tst25 e-ail:

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

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

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ Πίνακας περιεχομένων Κεφάλαιο 1 - ΟΙ ΦΥΣΙΚΟΙ ΑΡΙΘΜΟΙ... 2 Κεφάλαιο 2 ο - ΤΑ ΚΛΑΣΜΑΤΑ... 6 Κεφάλαιο 3 ο - ΔΕΚΑΔΙΚΟΙ ΑΡΙΘΜΟΙ... 10 ΣΩΤΗΡΟΠΟΥΛΟΣ ΝΙΚΟΣ 1 Κεφάλαιο 1 - ΟΙ ΦΥΣΙΚΟΙ ΑΡΙΘΜΟΙ

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

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

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ψηφιακή Σχεδίαση Ενότητα 9: Ελαχιστοποίηση και Κωδικοποίηση Καταστάσεων, Σχεδίαση με D flip-flop, Σχεδίαση με JK flip-flop, Σχεδίαση με T flip-flop Δρ. Μηνάς

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

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

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

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

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

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

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΕΝΟΤΗΤΑ Μ1 ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Εκπαιδευτής: Γ. Π. ΠΑΤΣΗΣ, Επικ. Καθηγητής, Τμήμα Ηλεκτρονικών Μηχανικών, ΤΕΙ Αθήνας ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ 1. Ποια είναι η βάση

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

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

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

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

Ελίνα Μακρή

Ελίνα Μακρή Ελίνα Μακρή elmak@unipi.gr Μετατροπή Αριθμητικών Συστημάτων Πράξεις στα Αριθμητικά Συστήματα Σχεδίαση Ψηφιακών Κυκλωμάτων με Logism Άλγεβρα Boole Λογικές Πύλες (AND, OR, NOT, NAND, XOR) Flip Flops (D,

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

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

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

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

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα Μάθημα: Μαθηματικά Διάλεξη 1 η : Εισαγωγή-Επανάληψη βασικών εννοιών (1 ο, 2 ο, 3 ο Κεφάλαιο) 11-10-2017, 18-10-2017 Διδάσκουσα: Αριστούλα Κοντογιάννη ΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Κ 17 Επικοινωνίες ΙΙ Χειμερινό Εξάμηνο Διάλεξη 15 η Νικόλαος Χ. Σαγιάς Επίκουρος Καθηγητής Webpage: http://eclass.uop.gr/courses/tst15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΠΛΗ-21 ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΠΛΗ-2 ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ ΑΣΚΗΣΕΙΙΣ ΓΡΑΠΤΩΝ ΕΡΓΑΣΙΙΩΝ & ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ ΣΥΝΤΕΛΕΣΤΕΣ

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

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

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

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

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

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

Ψηφιακές Τηλεπικοινωνίες. Δισδιάστατες Κυματομορφές Σήματος Ψηφιακές Τηλεπικοινωνίες Δισδιάστατες Κυματομορφές Σήματος Εισαγωγή Στα προηγούμενα μελετήσαμε τη διαμόρφωση PAM δυαδικό και Μ-αδικό, βασικής ζώνης και ζωνοπερατό Σε κάθε περίπτωση προέκυπταν μονοδιάστατες

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

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

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

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

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

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

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

Επιμέλεια: Σπυρίδων Τζινιέρης-ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ ΓΙΑ ΤΗΝ Α ΓΥΜΝΑΣΙΟΥ ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ Α ΓΥΜΝΑΣΙΟΥ

Επιμέλεια: Σπυρίδων Τζινιέρης-ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ ΓΙΑ ΤΗΝ Α ΓΥΜΝΑΣΙΟΥ ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ Α ΓΥΜΝΑΣΙΟΥ Τι είναι κλάσμα; Κλάσμα είναι ένα μέρος μιας ποσότητας. ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ Α ΓΥΜΝΑΣΙΟΥ Κλάσμα είναι ένας λόγος δύο αριθμών(fraction is a ratio of two whole numbers) Πως εκφράζετε συμβολικά ένα κλάσμα; Εκφράζετε

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

ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 3

ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 3 ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 3 ΑΠΛΟΠΟΙΗΣΗ και ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ Σκοπός: Η κατανόηση της σχέσης µιας λογικής συνάρτησης µε το αντίστοιχο κύκλωµα. Η απλοποίηση λογικών συναρτήσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μ Α Θ Η Μ Α Τ Ι Κ Α Γ ΓΥΜΝΑΣΙΟΥ ΖΕΡΒΟΣ ΜΑΝΟΛΗΣ Μ Α Θ Η Μ Α Τ Ι Κ Α Γ ΓΥΜΝΑΣΙΟΥ ΖΕΡΒΟΣ ΜΑΝΟΛΗΣ 1 ΜΕΡΟΣ Α ΚEΦΑΛΑΙΟ 1 Ο ΑΛΓΕΒΡΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ 1.1 ΠΡΑΞΕΙΣ ΜΕ ΠΡΑΓΜΑΤΙΚΟΥΣ ΑΡΙΘΜΟΥΣ Α. Οι πραγματικοί αριθμοί και οι πράξεις τους 1. ΕΡΩΤΗΣΗ Τι ονομάζουμε

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

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

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

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

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

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

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

ΑΣΠΑΙΤΕ Εργαστήριο Ψηφιακών Συστημάτων & Μικροϋπολογιστών Εργαστηριακές Ασκήσεις για το μάθημα «Λογική Σχεδίαση» ΑΣΚΗΣΗ 3 ΠΙΝΑΚΕΣ KARNAUGH

ΑΣΠΑΙΤΕ Εργαστήριο Ψηφιακών Συστημάτων & Μικροϋπολογιστών Εργαστηριακές Ασκήσεις για το μάθημα «Λογική Σχεδίαση» ΑΣΚΗΣΗ 3 ΠΙΝΑΚΕΣ KARNAUGH ΑΣΚΗΣΗ 3 ΠΙΝΑΚΕΣ KARNAUGH 3.1 ΣΚΟΠΟΣ Η κατανόηση της απλοποίησης λογικών συναρτήσεων με χρήση της Άλγεβρας Boole και με χρήση των Πινάκων Karnaugh (Karnaugh maps). 3.2 ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ 3.2.1 ΑΠΛΟΠΟΙΗΣΗ

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

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΥΝΔΥΑΣΤΙΚΗ ΛΟΓΙΚΗ 2017, Δρ. Ηρακλής Σπηλιώτης Συνδυαστικά και ακολουθιακά κυκλώματα Τα λογικά κυκλώματα χωρίζονται σε συνδυαστικά (combinatorial) και ακολουθιακά (sequential).

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

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Α ΓΥΜΝΑΣΙΟΥΣΤΗΝ ΑΛΓΕΒΡΑ. Άρτιοι αριθμοί ονομάζονται οι αριθμοί που διαιρούνται με το 2 και περιττοί εκείνοι

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Α ΓΥΜΝΑΣΙΟΥΣΤΗΝ ΑΛΓΕΒΡΑ. Άρτιοι αριθμοί ονομάζονται οι αριθμοί που διαιρούνται με το 2 και περιττοί εκείνοι ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Α ΓΥΜΝΑΣΙΟΥΣΤΗΝ ΑΛΓΕΒΡΑ 1)Ποιοι αριθμοί ονομάζονται άρτιοι και ποιοι περιττοί ; Άρτιοι αριθμοί ονομάζονται οι αριθμοί που διαιρούνται με το 2 και περιττοί εκείνοι που δεν διαιρούνται

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

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

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

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