Un cod convoluțional este un cod de corectare a erorilor în care
Un cod convoluțional este un caz special de coduri de arbore și spalier .
În 1955, L. M. Fink , care la acea vreme era șeful departamentului Academiei de Comunicații din Leningrad, a propus primul cod recurent.
În 1959, specialistul occidental Hegelberger ( Hegelbeger ), care habar n-avea despre munca oamenilor de știință sovietici în domeniul codificării, a „redescoperit” codul recurent și l-a numit după sine.
Fink însuși în monografia sa „Theory of Discrete Message Transmission” [1] a scris: „În acest cod, succesiunea simbolurilor de cod nu este împărțită în combinații separate de cod. Simbolurile de corecție sunt incluse în fluxul de simboluri de informații, astfel încât câte un simbol de corecție este plasat între fiecare două simboluri de informații. Notând caractere informaționale prin , și corective prin obținem următoarea secvență de caractere:
Simbolurile informaționale sunt determinate de mesajul transmis, iar simbolurile corective sunt formate conform următoarei reguli:
(1,1)
unde este un număr întreg arbitrar numit pas de cod ( ). Evident, dacă un simbol corectiv b i este primit din greșeală, relația (1.1) din secvența primită nu va fi satisfăcută pentru . În cazul recepționării eronate a simbolului informațional, relația (1.1) nu va fi valabilă pentru două valori ale lui , și anume, pentru și pentru . De aici este ușor să derivați o regulă de corectare a erorilor de decodare. În secvența de cod acceptată , relația (1.1) este verificată pentru fiecare . Dacă nu este mulțumit cu două valori ( și ), și în același timp
(1,2)
atunci elementul de informare trebuie inversat.
Evident, redundanța codului este . Vă permite să corectați toate caracterele primite eronat, cu excepția unor combinații proaste. Deci, dacă , oferă decodarea corectă atunci când există cel puțin trei (și în unele cazuri două) simboluri recepționate corect între două simboluri primite eronat (se iau în considerare atât simbolurile de informare, cât și simbolurile de testare).
Diagrama codificatorului unui cod convoluțional nerecursiv este prezentată în Fig.1 . Este format din registre de deplasare -ari cu lungimi . Unele (poate toate) intrările și ieșirile de registru ale unor celule de memorie sunt conectate la mai multe sumatoare modulo . Numărul de sumatori este mai mare decât numărul de registre de deplasare:
La fiecare ciclu de ceas al codificatorului, la intrarea acestuia sunt furnizate simboluri informative, acestea, împreună cu simbolurile stocate în registrele de deplasare, sunt alimentate la intrările acelor sumatori cu care există o conexiune. Rezultatul adăugării sunt simboluri de cod gata de transmisie. Apoi are loc o deplasare în fiecare registru de deplasare: toate celulele sunt deplasate la dreapta cu un bit, în timp ce celulele din stânga sunt umplute cu caractere de intrare, iar celulele din dreapta sunt șterse. După aceea, ritmul se repetă. Starea inițială a registrelor este cunoscută dinainte (de obicei zero).
Pentru claritatea prezentării, vom descrie codarea convoluțională în funcție de acțiunea dispozitivului de codificare corespunzător.
Un encoder convoluțional este un dispozitiv care primește în general k simboluri de informații de intrare la fiecare ciclu de funcționare și emite n simboluri de ieșire la ieșirea fiecărui ciclu. Numărul se numește rata de cod relativă. k este numărul de simboluri de informare, n este numărul de simboluri transmise canalului de comunicație într-un ciclu de sosire la codificatorul simbolului de informații. Simbolurile de ieșire ale ciclului luat în considerare depind de m simboluri de informații care ajung la ciclul acesta și anterioare, adică simbolurile de ieșire ale codului convoluțional sunt determinate în mod unic de simbolurile sale de intrare și starea, care depinde de m - k simboluri de informații anterioare. . Elementele principale ale codului convoluțional sunt: registrul de deplasare, sumatorul modulo 2, comutatorul.
Registrul de deplasare este un dispozitiv de stocare dinamic care stochează caracterele binare 0 și 1. Memoria de coduri determină numărul de celule de declanșare m din registrul de deplasare. Când un nou caracter de informare ajunge la intrarea registrului de deplasare, caracterul stocat în bitul din dreapta este eliminat din registru și resetat. Caracterele rămase sunt mutate cu o cifră la dreapta și, astfel, cifra din stânga este eliberată, unde va ajunge noul caracter de informare.
Adunatorul modulo 2 adaugă simbolurile 1 și 0 care ajung la el. Regula de adunare modulo 2 este următoarea: suma simbolurilor binare este 0 dacă numărul unu dintre simbolurile care intră în intrări este par și este egal cu 1 dacă acest număr este ciudat.
Comutatorul citește secvențial simbolurile care ajung la intrările sale și setează secvența simbolurilor codului în canalul de comunicație de la ieșire. Prin analogie cu codurile bloc, codurile convoluționale pot fi clasificate în sistematice și nesistematice.
Un cod convoluțional sistematic este un cod care conține în secvența sa de ieșire de simboluri de cod secvența de simboluri de informații care l-a generat. În caz contrar, codul se numește nesistematic.
Cu codificarea convoluțională, transformarea secvențelor de informații în secvențe de ieșire și de cod are loc continuu. Codificatorul binar convoluțional conține un registru de deplasare de m biți și sumatori modulo 2 pentru a genera simboluri de cod în secvența de ieșire. Intrările sumatoarelor sunt conectate la anumiți biți ai registrului. Comutatorul de ieșire determină ordinea în care simbolurile de cod sunt trimise către canalul de comunicație. Apoi, structura codului este determinată de următoarele caracteristici.
Dar! Această definiție este valabilă pentru codurile bloc cu lungime constantă. Codurile convoluționale sunt continue și se caracterizează prin multe distanțe minime determinate de lungimile segmentelor inițiale ale secvențelor de cod, între care se ia distanța minimă. Numărul de simboluri din lungimea segmentului L primite pentru procesare determină, pe partea de recepție, numărul de celule din decodor.
Fie ca registrul de deplasare să conțină m celule, adică memoria de cod este egală cu m, comutatorul efectuează un ciclu de interogare, trecând valorile simbolurilor informaționale, unde m este un multiplu al lui k , în timp ce într-un ciclu interogează n 2 iesiri encoder. Numărul de simboluri de cod de ieșire afectate de o modificare a unui simbol de informații de intrare este . Valoarea I all se numește lungimea totală a constrângerii de cod .
Deoarece proprietățile corective ale unui anumit cod convoluțional sunt determinate de lungimea constrângerii codului și de alegerea legăturilor registrului de deplasare la sumatorul modulo 2 ( XOR ), atunci pentru a specifica structura codificatorului convoluțional , este necesar să se specificați ce biți ai registrului de deplasare sunt asociați cu fiecare dintre sumatorii modulo 2 ( XOR ).
Conexiunea j-lea sumator modulo 2 este descrisă de j-a secvență generatoare:
g j =(g j0 , g j1 ,g j2 ,…,g jm-1 ), (4.1)unde (4.2)
Parametri tipici ai codurilor convoluționale: k, n= 1,2,…,8; R=k/n=1/4,…,7/8; m=2,…,10.
Este convenabil să specificați un cod convoluțional utilizând polinoame generatoare, care sunt determinate de forma formulei (4.1) prin analogie cu modul în care se face acest lucru pentru codurile ciclice de bloc liniare . [2]
Polinomul generator definește complet structura codificatorului binar al codului convoluțional. Spre deosebire de codurile bloc , fiecare dintre acestea fiind descris de un singur polinom generator , un cod convoluțional este descris de mai multe polinoame generatoare. Numărul de polinoame care descriu codul convoluțional este determinat de numărul de simboluri de ieșire n . Să reprezentăm secvența simbolurilor informaționale care vin la intrarea codificatorului ca un polinom
unde X i este simbolul operatorului de întârziere pentru i cicluri ale registrului de deplasare și i = {0, 1} sunt simboluri binare informaționale. Polinoamele care descriu n secvențe de simboluri de cod care intră în intrarea comutatorului codificatorului și apoi în canalul de comunicație au forma
unde sunt simboluri de cod binar la intrarea j -a a comutatorului codificatorului.
Polinomul generator j - al codului convoluțional are forma Mai mult, datorită liniarității codului convoluțional și a notației acceptate, obținem .
Folosind reprezentarea unui cod convoluțional folosind polinoame generatoare, se poate specifica un cod convoluțional prin intermediul unor secvențe de coeficienți ai polinoamelor generatoare scrise în formă binară sau octală. Notația octală este mai compactă și este utilizată atunci când registrul de deplasare al codificatorului este lung.
În cazul general, șirul de coeficienți al celui de-al j -lea polinom generator va avea forma și coincide cu șirul generator de cod (4.1). Atunci, dacă este o secvență de simboluri codificate și este o secvență de simboluri cod la intrarea j -a a comutatorului codificatorului, atunci pentru oricare dintre ele care apar la a -lea moment ( ), putem scrie
Astfel, fiecare simbol de cod al secvenței de ieșire a codificatorului codului convoluțional este determinat de convoluția informațiilor codificate și secvența generatoare, care determină numele codurilor convoluționale. Codurile convoluționale sunt un caz special de coduri iterative sau recurente.
Codurile convoluționale sunt folosite pentru transmisia fiabilă a datelor: video, comunicații mobile, comunicații prin satelit. Ele sunt folosite împreună cu codul Reed-Solomon și alte coduri similare. Înainte de inventarea codurilor turbo , astfel de modele erau cele mai eficiente și satisface limita lui Shannon. De asemenea, codificarea convoluțională este utilizată în protocolul 802.11a la nivelul fizic MAC pentru a obține o distribuție uniformă a 0 și 1 după ce semnalul trece prin scrambler , în urma căreia numărul de simboluri transmise este dublat și, prin urmare, vom poate realiza o recepție favorabilă la dispozitivul receptor.
Dicționare și enciclopedii |
---|