Kas yra Kanalo kodavimas?

Kanalų kodavimas yra skaitmeniniame ryšyje naudojama technika, užtikrinanti, kad perdavimas būtų priimtas su minimaliomis klaidomis arba be jų. Įvairūs kodavimo metodai, kuriuos galima naudoti, pasiekiami įpynus papildomus dvejetainius skaitmenis į perdavimą. Kai dekoduojama priėmimo pusėje, perdavimas gali būti patikrintas, ar nėra klaidų, ir daugeliu atvejų jį pataisyti. Kitais atvejais gavėjas tiesiog prašo dar kartą perduoti.

Kanalo kodavimo idėja buvo sukurta dėl neišvengiamų klaidų bet kokio tipo ryšio kanale. Radijo bangos, elektriniai signalai ir net šviesos bangos per šviesolaidinius kanalus turės tam tikrą triukšmą terpėje, taip pat signalo pablogėjimą, kuris atsiranda tam tikru atstumu. Kadangi komunikacijos problema yra tokia dažna, taikomosios matematikos šakose, pavyzdžiui, informacijos teorijoje ir kodavimo teorijoje, buvo sukurta daugybė teorijų, kaip ją spręsti.

Vienas dažniausiai naudojamas metodas vadinamas automatiniu kartojimo užklausa (ARQ), kuris tiesiog apima gavėją, kuris patikrina, ar siuntime nėra klaidų, ir paprašo pakartotinio perdavimo, jei kas nutiktų. Tai kartais vadinama atgaline klaidų taisymu. Kita vertus, kanalo kodavimas yra išankstinio klaidų taisymo (FEC) technika. Siuntėjas paruošia bitus perdavimui naudodamas specialų algoritmą, žinomą kaip klaidų taisymo kodas, kuris vėliau dekoduojamas priimančiojoje pusėje. Abu metodai taip pat dažnai naudojami mišriu būdu, todėl nedideles perdavimo klaidas galima ištaisyti naudojant kanalo kodą, o esant didelėms klaidoms, reikalingas visiškas pakartotinis siuntimas.

Pirmąją kanalo kodavimo techniką sukūrė matematikas Richardas Hammingas, kuris sukūrė vadinamąjį Hamingo kodą. Tai buvo pirmasis persiunčiamas klaidų taisymo kodas, kuris apima papildomų dvejetainių skaitmenų, vadinamų pariteto bitais, įtraukimą į perdavimą. Sumanus pariteto bitų apskaičiavimas priimančiame perdavimo gale parodys, ar perdavimo metu įvyko klaidų, kur jos yra bitų eilutėje ir kaip jas pataisyti, kad būtų atkurtas pradinis siuntimas.

Hamingo kodas patenka į kanalų kodavimo metodų, vadinamų blokiniais kodais, šeimą, kurių daugelis buvo sukurta bėgant metams. Blokų kodai paprastai apima bitų rinkimą į fiksuoto ilgio blokus, kurie vėliau vadinami kodiniais žodžiais. Kiekvienam kodo žodžiui suteikiami atitinkami tikrinimo bitai, kuriuos gavėjas dekoduoja. Bloko kodo metodai linkę padidinti perdavimo dydį dėl kodo žodžio pridėtų bitų, o tai gali turėti įtakos kanalo pralaidumui.

Kitas kanalo kodavimo metodas yra žinomas kaip konvoliucinis kodas. Šie metodai yra daug greitesni ir gali užkoduoti bet kokio ilgio bitų srautą. Vienas dažniausiai naudojamas tokio tipo kodas vadinamas Viterbi kodu, kurį sukūrė italų matematikas Andrew Viterbi. Šio metodo trūkumas yra tas, kad didėjant konvoliucinio kodo ilgiui, didėja ir jo sudėtingumas dekoduojant. Daugeliu atvejų konvoliucijos kodai naudojami kartu su blokiniais kodais, vadinamais sujungtais klaidų taisymo kodais.