A rádiófrekvenciából történő demodulálás után egy szemmel láthatóan értelmetlen '1'-esekből és '0'-sokból álló
végtelen kódsorozatot kapunk, amelyet akkor is veszünk, amikor az adó oldalon nem ad senki. Ekkor természetesen
zajból eredő '1'-esek és '0'-sok érkeznek hozzánk.
A bitfolyamot a modulátorba vezetés előtt gyakran átkódolják. Néhány gyakori kódolást ismertetek az alábbiakban:
(T): Idő segédjel (clk)
(A): Bináris adat
(B): NRZI jel
(C): manchester kódolás utáni jel
(D): HAPN kódolás utáni jel
Ha ezen elvek után visszakódoljuk, akkor megkaphatjuk a valódi bitfolyamot, amit azután összefésülhetünk, illetve keretekre bonthatunk.
A digitális adatok összefésülése
A modulációkkal foglalkozó részben láttuk, hogy vannak olyan eljárások, amelyek baudonként (szimbólumonként) több bitet
adnak eredményül. Illetve szükséges lehet az időben egymás után jövő biteket független csatornában kezelnünk.
Összefésülési eljárások:
Nem fésüljük, hanem mindegyik szálat egy-egy külön csaktornaként kezelünk a későbbiekben
Egy adatfolyamba, egymás után írjuk az egyidőben levett biteket
Az időben egymás után érkező N bitet N db külön csatornaként kezeljük. Ekkor egy időrés alapú rendszerhez jutunk.
A digitális adatok csomagokra bontása
A digitális bitfolyamot célszerű minél korábban véges méretű keretekre bontani. Ennek előnyei közül néhány:
Több párhuzamos adatfolyamot lehet egyetlen csatornában átvinni
Hatékonyabb hibajavító kódolás alkalmazható rá
Half-duplex átvitel esetén is biztosítható a véges idejű nyugtázás
A csomagokra bontás elvégezhető például egy olyan bitfolyamrészletnél, amely a csomag belsejében nem fordulhat
elő. Ehhez gondoskodnunk kell az adataink küldés előtti átkódolásáról, hogy véletlenül se fordulhasson elő ilyen bitfolyam.
A legegyszerűbb keretezésnél használt trükk a karakterbeszúrás. Ekkor kiválasztunk egy karaktert, amely a kerethatár,
és az adatcsomagban a forrásadatokban okvetlen kiküszöböljük az ilyen karakterek előfordulását, például úgy, hogy a
forrásadatok közt előforduló speciális karaktert egy ún. escape karakter segítségével kódoljuk. Természetesen ekkor az
escape karakter kódja is speciálissá válik, ezért azt a karaktert is escape karakterrel kell továbbítani.
A kódolás előnye, hogy processzorok által gyorsan végezhető, ezért a magasabb szintű bittakarékos kódolásoknál gyakran
előfordul. Jó példa erre a PPP protokoll, ahol tetszőleges karakter átvihető, de a modemmel és a túloldallal is kell
tartani a kapcsolatot.
A leg bittakarékosabb eljárás a bitbeszúrás (bit stuffing). Például elterjedt az a keretezési mód, ahol 0111 1110
kombinációval jelzik a csomag elejét és végét.
A forrásadatban a 6 db '1'-es bit elkerülése érdekében minden 5 egymás utáni '1'-es után egy '0'-t szúrunk,
vevőoldalon a keretezés után a csomagban minden 5 egymás utáni '1' után található karaktert
(amely értéke mindig 0) eltávolítunk.
A digitális hibajavítás
Az adatátvitel során két helyen próbálhatunk meg hibát javítani:
a bitfolyamban
az adatcsomagban
Ebből kifolyólag megkülömböztethetünk adatfolyamra és csomagra alkalmazható hibajavító kódolásokat.
Belátható, hogy a bitfolyamra alkalmazott hibajavító algoritmus ráhúzható a csomagra is, azonban a csomagok
hibajavítására sokkal jobb algoritmusok állnak rendelkezésre, mint a bitfolyamok esetén. Sajnos ezek a
csomag javítására alkalmas algoritmusok nem használhatóak bitfolyamra.
Bitfolyam javító algoritmusok:
Viterbi
Fano
Adatcsomag (blokk) javító algoritmusok:
Reed Solomon
Turbó kódok
Az alábbi ábra a Turbó kód összehasonlító tesztjét ábrázolja. A függőleges tengelyen a kódolás után kapott bithibaarány,
a vízszintes tengelyen a kódolás előtti digitális jel-zaj viszony látható.
Jelmagyarázat:
Bit Error Rate (BER): a sérült bitek aránya az átvitel után.
Eb: Jel energiája (egy szimbólum energiája)
N0: Zajteljesítmény
Megjegyzés: az Eb/N0 = S/N, tehát a jel-zaj viszony.
A digitális átvitel közeghozzáférése
Szinkron rendszer (pl.: E1), amely folyamatosan ad, ezért csak pont-pont összeköttetésre alkalmas
CSMA és CSMA/CD, amely P perzisztens véletlen hozzáférésű rendszer
Tokenes rendszer, ahol az egyik legjobban látható rádiótorony osztja az adáshoz az engedélyt (pl.: AX.25 DAMA).
A bejelentkezés ekkor is véletlen hozzáféréssel történik, azonban üzem közben nincs csomagütközés
Érdekes megoldás, ha például egy lemenő ág szinkron rendszerű, a felmenő ága viszont P perzisztens vagy tokenes
rendszert használ.
A digitális átvitel folyamvezérlése (flow control)
Alacsony szinten is érdemes egy minimális adatfolyam vezérlést végezni.
Ha a vevő puffere teli van, felesleges adatok küldésével terhelni a rádiófrekvenciát.
Ha a vevő nem üzemkész, akkor sem célszerű erőltetni az adást.
Bizonyos esetekben ha a vevő hibásan vette le a csomagot, sebességnövekedést érhetünk el, ha már itt újrakérjük (AX.25 I frame).
Rádiós átvitelnél célszerű bejelentkezni a rendszerbe illetve kijelentkezni a rendszerből.
Célszerű lehet térerő-, modulációparaméterek és egyéb paraméterek időnkénti átjuttatása, megbeszélése.
Üzenetszórt átvitelnél, illetve néhány QSO-szerű átvitelnél nem célszerű a sok vevőállomásnak nyugtaküldéssel terhelni a rádiófrekvenicát.
A digitális adatok tömörítése
A digitális adatokat rádiós átvitelkor érdemes tömöríteni. A tömörítéshez a
GZIP illetve a BZIP2 algoritmusok használata ajánlott.
Jelenleg rádióamatőr célokra az átvitelekhet nem használnak tömörítést.
TCP/IP átvitelnél az IP és TCP headert a Van Jakobson féle fejléctömörítéssel célszerű lenne minimalizálni,
ezáltal kevesebb felesleges információt szállítani a rádiófrekvencián.
A digitális adatok feldolgozása
A digitális adatokat az összeállítása után mégegyszer célszerű CRC ellenőrzésnek alávetni.
Ritka eset, hogy nagy állományokkal dolgozunk (>10 MB), ekkor az MD5 ellenőrző kód hatékonyabb lehet.
A nagy adatállományokat célszerű daraboltan átjuttatni a rádiófrekvencián. Ez a meglevő Packet rádió rendszerben
apró fájlok formájában történhet, azonban a modern szemlélet szerint kliens és szerver oldalon egyaránt blokkonkénti ellenőrző kódot generálva és
aztokat a kódokat összehasonlítva differenciális másolásra is lehetőségünk nyílik.
Sajnos ennek rádióamatőr szerveroldali implementációjával még nem találkoztam.