Cs. Kádár Péter - XXI. századi Diszkónika, 440. Kódokat a DAT-ra!

A kódokat adattömörítésre, titkosításra, hibafelismerésre és -javításra, adatátvitelre és adattárolásra használják.

A kódokat különféle tudományágak – például az információelmélet, az elektronika, a matematika, a nyelvészet, a szociális és kulturális pszichológia, valamint a számítástechnika – tanulmányozzák a hatékony és megbízható módszerek tervezése és alkalmazhatósága céljából. A kódolás bizonyos fajtáit már az ókorban is használták, az információelmélet és ezen belül a modern kódelmélet matematikai alapjait azonban 1948-ban Claude Elwood Shannon fektette le „A kommunikáció matematikai elmélete” (Mathematical Theory of Communication) című kétrészes tanulmányában.

kod02

Ez a dolgozat arra a problémára összpontosított, hogy hogyan lehet a legjobban, a legkisebb torzítással és a legkevesebb, legkisebb vonalkapacitással (kis sávszélességgel, rossz jel-zaj viszonnyal) továbbítani az információt. Mivel matematikai elméletről van szó, nemcsak e tanulmány, hanem az egyes későbbi, valóban hatékony kódolási eljárások megértéséhez is olyan felsőfokú matekos ismeretekre volna szükség, amelyeknek hiánya bennem is bűntudatot keltett. Így inkább arra összpontosítok, hogy az R-DAT esetében milyen feladatok voltak, ezeket milyen kódolási eljárásokkal sikerült – ha sikerült egyáltalán – megoldani, s melyeket használunk napjainkban is. A kódolási módszerek mélységeiben azonban nem merülök el, mert garantáltan elsüllyednék.

Először lássuk hát, milyen üzemmódokat kellett vagy lehetett volna tudnia egy szabványos R-DAT-magnónak! Szabványosról van most szó, nem a kivételekről.

kod03

A szabvány alapvetően a mintavételi frekvenciával és a felbontással játszik, s ehhez igazítja a többit. Megjegyzem, kvadró R-DAT magnó sohasem került kereskedelmi forgalomba. A 32 kHz-es mintavételi frekvencia azért volt fontos, mert a korabeli műholdas rádióműsorokat is ilyen mintavételi frekvenciával sugározták, és úgy tervezték, hogy ezeket az adásokat közvetlenül digitálisan lehessen rögzíteni. A Sony is gyártott digitális rádióvevő készüléket. Degrell Lászlónak, a „Lemezjátszók és hanglemezek” című könyv szerzőjének volt ilyen méregdrága rádiója, és érthető módon roppant dühös volt, amikor a korai digitális adásokat (ezek még nem DAB vagy DAB+ rendszerűek voltak) egyszerűen megszüntették.

A következő tömbvázlat a mezei R-DAT magnó funkcionális felépítését mutatja. Van néhány fogalom, amit majd értelmezni fogok; ne türelmetlenkedj!

kod04

Az analóg-digitális és a digitális-analóg átalakító feladatát és működését e sorozat 22-27. részeiből már ismered, természetesen a konkrét megvalósításuktól nagyon is függ a minőség, de ez áramköri kérdés. Felvételkor az AD-átalakító kimenetén megjelenő mintákat a gép az eredeti sorrendben olvassa be a memóriába, de nem ebben a sorrendben olvassa ki. Ezt az adatkeverést, szétterítést külföldiül interleavingnek becézik, és számos adathordozóban – CD, DVD, blu-ray – használják. A szétterítés hibafelismerő és -javító eljárás, amely akkor működik jól, ha egy adag hiba nem véletlenszerűen, hanem sok egymás utáni bitben fordul elő. Az ilyen csoport- vagy csomaghibának, hibacsomónak is van külföldi neve: burst error. Ezeket a hibákat fizikai sérülések okozhatják, például por, leváló anyagtörmelék vagy vízszintes karcolás a magnószalagon. Ha az egyik bit hibás, akkor valószínű, hogy a szomszédos bitek is sérültek. A véletlenszerű hibák kijavítására használt módszerek nem hatékonyak a csomaghibák korrigálására. Ha viszont az eredetileg egymás után levő biteket nem egymás utáni sorrendben rögzítjük, hanem szétterítjük, akkor a hordozóra, esetünkben szalagra fölvett, egymás után levő bitek nem ugyanahhoz a kódsorozathoz fognak tartozni, a csomaghiba széttöredezik, így hatékonyabb, bár némileg lassabb lesz a hibajavítás. Hiszen, ha a szétterítés következtében nem az egész csomag sérül, akkor a nem sérült bitek segítségével – ha azok között hibafelismerő és -javító bitek is vannak – az egész csomag helyreállítható.

kod05

A szétterítés könnyen végrehajtható úgy, hogy felvételkor az adatblokkok mintáit sorokban írják be a memóriába, viszont oszlopokban olvassák ki belőle. Lejátszáskor fordítva játszódik le ugyanez. Az R-DAT esetében pöppet bonyolultabb a helyzet, mert az is a célok közé tartozott, hogy a hangot szerkeszteni, vágni is lehessen. Mivel az adatokat forgófejes magnóval, ferde csíkokon rögzítik, az iménti követelmény miatt akárhogyan nem helyezhetők el a kódok. Egy-egy ferde csíkba nem lehet belebarmolni, mert akkor szinkronhiba miatt „ugrana” a hang. Tehát akármekkora területen nem teríthető szét a jel. Az R-DAT kódjában két-két csík tartalmaz egy adatblokkot tokkal-vonóval, tehát szerkesztéskor csak ezt a két csíkot kell összerendezni.

Van azonban még egy bibi. Mi van ugyanis akkor, ha a hibacsomó mellett közvetlenül egy egyedi, véletlenszerű hiba is van? A visszarendezéskor ez a hiba nem javítható ki, ami torzításként válik hallhatóvá. Ezt úgy védték ki, hogy az oszlopok mentén további kódszavakat vittek be a memóriába. E kódszavak arra valók, hogy még visszarendezés előtt a segítségükkel javítsák ki a véletlenszerű hibákat, hogy aztán a hibacsomót javító eljárás dolgozhasson tovább.

Az egyszerű sor-oszlop játék rendkívül hatékony, azonban lehet még jobbá tenni. Az R-DAT-ban, a CD-ben, a DVD-ben, a blu-ray-ben, a digitális kompakt kazettában és még számos helyen használták vagy használják a Reed-Solomon kód valamelyik változatát.

kod06

A két matematikus hapsi által kidolgozott kódnak az a jellemzője, hogy egyetlen bájtnyi (tudod, 8 bitnyi) hiba megtalálásához és kijavításához két bájtnyi redundáns kód szükséges. Ha viszont a kód tudja, hogy hol helyezkedik el hiba, mert valamilyen program megmondja neki, akkor elég egy bájtnyi redundancia is. Az oszlopbéli kódszavak kettős funkciót kaptak. Ha véletlenszerű a hiba, az oszlopbéli kódszavak meghatározzák a helyét és kijavítják. Ha viszont hibacsomó van, az oszlopbéli kódszó csak azt állapítja meg, hogy a kódcsomag megpusztult, a csomag mindegyik bitje hibás. Ez az információ hozzáadódik a memória tartalmához, amikor lejátszáskor az oszlopot előhívják. Egy komplett oszlop minden egyes sorában egyedi hibák keletkeznek, de már mindegyik meg van jelölve úgynevezett jelzőbitekkel, miszerint ez az adat hibás. Ezáltal a rendszer már tudja a hiba helyét. S itt veszünk egy mély levegőt, mert csak a végeredményt írom le. Ezzel az eljárással akkora hibacsomót tud az R-DAT kijavítani, ami a szalagon 2,5 mm-nyi helyet foglal el. Ha még ennél is nagyobb területen van hiba, akkor a rendszer az előző minták alapján jósolgat, de az eredmény kétséges. Hozzáteszem, hogy napjaink szilárdtest memóriáiban ekkora terület hatalmasnak számít, így lényegesen több adat fér el bennük, mint bármilyen finom szemcsézettségű magnószalagon.

Visszatérve a tömbvázlat bal felső második téglalapjához, az időkompresszió azt jelenti, hogy a bemenő jelek sebességénél nagyobb gyorsasággal olvassák ki a memóriából a jeleket, hogy legyen idő hibakódok képzésére, valamint még tájékoztató és vezérlő szubkódokat is adhassanak hozzá. Az AD átalakítóból párhuzamosan érkező jeleket sorossá alakítják át, végül a csatornakódolóhoz érkezvén, az órajelet is hozzáadják.

Eddig bizonyára kézenfekvő volt, hogy egy digitális jelfolyamban a 0 értékű bitnek 0 volt feszültség, az 1 értékű bitnek valamilyen pozitív feszültség, mondjuk, +5 volt felelt meg. Az R-DAT nem ilyen, hanem NRZI eljárást használ. A Non-Return-to-Zero Inverted (nullához nem visszatérő invertált) lényege, hogy csak akkor van változás, ha a bit értéke 1. Ha 0, akkor nincs változás.

kod07

Tehát, ha jön egy 1 értékű bit, akkor a 0 volt feszültséghez képest vagy pozitív vagy negatív lesz a feszültség. Ha mondjuk előzőleg pozitív volt, akkor most negatív lesz, és mindaddig így marad, ameddig nem jön egy újabb 1 értékű bit. Ekkor átvált pozitívba, és mindaddig pozitív marad, ameddig nem jön ismét 1 értékű bit. Ekkor átvált tehát negatívba, és így tovább.

A csatornakódolásra azért van szükség, mert minden adatátviteli és -rögzítő eszköznek van valamilyen és valamekkora torzítása, és az a cél, hogy ez a torzítás a lehető legkevésbé zavarja a végeredményt. Az eredeti PCM kódot tehát úgy kell módosítani, hogy a zavar hiába erőlködjön. Ennek az a módja, hogy az eredeti jelcsomagot kiegészítjük újabb bitekkel, vagyis ismét redundássá tesszük a jelet, de e redundáns jelben csak bizonyos bitkombinációk fordulhatnak elő. Az AD átalakító kimenetén egy-egy 16 bit felbontású minta 2db 1 bájtos, vagyis 2 db 8 bites adatszóból áll. Az R-DAT 8-ból 10 bites kódolást használt, a 8b/10b nevű kódolás egyik típusát. A 8b/10b kódolás eredetileg az IBM szabadalma volt. A kódolás célja, hogy a digitális jel egyenáramú összetevője NRZI (vagy más hasonló) kódolás esetén kiegyensúlyozott legyen, ami azt jelenti, hogy a jel egyenáramú összetevőjének átlagértéke 0 legyen. Ha ugyanis nem 0, akkor ún. offset hiba keletkezik, amit egyes áramköri elemek nem szeretnek, hiszen pl. transzformátorokkal nem vihető át egyenfeszültség, a kondenzátoros csatolás sem kellemes, és a félvezető alkatrészek működési tartománya is beszűkül. Ez utóbbinak az az oka, hogy a félvezetők munkapontja eltolódik, a kivezérlési tartomány aszimmetrikus lesz, tehát az egyik félperiódusban hamarabb beveri a jel a fejét, és az erősítés mértéke is változhat. A kiegyensúlyozás legegyszerűbben úgy érhető el, hogy egy blokkon belül kizárólag 0,1,0,1,0,1 sorozat van. Ez azonban csak egyetlen jelkombináció. Más trükk kell, de még ekkor sem minden tízbites csomag megfelelő. A 10 bit összes változata 210 = 1024, de ebből csak 256-ot használnak. Viszont ez is elég az összes fajta nyolcbites (28 = 256) jelcsomag rögzítéséhez. A kódolás során egy-egy 8 bites szót két részre bontanak. Az egyik rész három bitből áll, a másik ötből. Legyen a három bites kód 001! Ez nem kiegyenlített, hiszen több 0 van benne, mint 1. Ahhoz, hogy kiegyenlített legyen, hozzáadnak még egy karaktert: 1001. Legyen az ötbites kód 11100! Ez sem kiegyenlített, hiszen eggyel több 1 van benne, mint ahány 0. Adjunk hát hozzá még egy 0-t, 011100! A két részt egyesítve, ezt kapjuk: 1001011100. De mi van akkor, ha az ötbites kód 10111? Akkor nem tudunk mit tenni, az ilyen kód nem használható, szerencsére, van miből válogatni. A 8b/10b kódolás egyébként olyan cuki, hogy az órajelek helyreállítását is segíti.

A felvétel lejátszásakor minden fordítva történik. A jelet a 10b/8b dekóderre vezetve, visszanyerhető a soros jelfolyam és külön az órajel. A szubkód-információ a szubkód-kimenetre jut, a szétterített bitek összegyűjtésével a hangminták az eredeti sorrendbe rendeződnek, s az időviszonyok is az eredeti digitális jelfolyamnak felelnek meg. Ehhez az szükséges, hogy a rendszer kiküszöbölje a nyafi hatását. A hibafelismerés és -javítás több lépcsőben, részben még a 10/8 dekódolás során megtörténik. Ha már sikerült mindent kijavítani, a digitális-analóg átalakító analóg jelet lök ki magából.

A kódokat természetesen el is kellett valahogy helyezni a szalagon. Ennek módjáról is lesz szó, azonban a meglehetősen száraz kódjellemzők után megemlítem, hogy az az R-DAT magnó, amivel először közeli barátságot kötöttem, a Sony első kereskedelmi forgalomba került cucca, a DTC-1000ES készülék volt. Ebből egy példányt 1988-ban vásárolt meg a Magyar Rádió.

kod08

A belseje nem különösebben szép, de többé-kevésbé rendezett.

kod09

Az ES a Sony audiofileknek szánt „esprit” kivitelt jelenti, amit nemcsak a fa doboz jellemez, hanem az is, hogy a házat belülről rézzel vonták be a fémszerkezetben keringő kóboráramok indukálta mágneses tér elleni védekezésként. A házat az akusztikai rezgések ellen is csillapították. Az analóg és a digitális áramkörök külön-külön tápegységről kapták a villanyt. Az analóg-digitális átalakítók Sony gyártmányúak voltak; oly kezdetlegesek, hogy még túlmintavételezést (lásd a sorozat 144. részét) sem tudtak. A digitális processzorokat szintén a Sony gyártotta. Ami viszont meglepő, hogy a digitális-analóg átalakítót, a TDA 1540-et az R-DAT tekintetében ellenérdekelt Philipstől vásárolták. Ez az IC a korai CD-játszók áramköre volt.

kod10

A kollégáim által végzett méréseket követően, amelyek persze bőven hozták az analóg technikához képest sokkal jobb specifikációt (akkor még nem tudtuk, hogy nem átviteli sávot, jel-zaj viszonyt, THD-t, nyafit vagy áthallást kell mérni), készítettem egy riportot a Rádió 6-os stúdiójában Balog Gyulával, a Stúdiótechnikai Osztály vezetőjével.

kod11

A riportban Balog Gyula a 6-os stúdió történetéről és műszaki jellemzőiről beszélt. Igen, arról a 6-osról volt szó, amelyet most le akarnak rombolni, és elképesztő hazugságokat sem szégyellenek állítani ennek érdekében.

kod12

Például a Pázmány Péter Katolikus Egyetem fejlesztési főigazgatója, Dr. Becker Pál szerint a stúdiót már lebontották. Ehhez képest időnként zenei közvetítések mennek onnan, igaz, a technikai helyiségből már elhurcolták a cuccokat, így a világ egyik legjobb, Studer gyártmányú, analóg keverőasztalát is. Annak idején ennek a keverőasztalnak az egyik kijáratára cuppant a DTC-1000ES is felvételkor, az egyik bejáratára pedig lejátszáskor.

kod13

A korabeli riport azért készült, mert 1989. június 17-én ebből a stúdióból ment A hangzáskultúra napja, amelynek során minden riport és beszélgetés élő volt, kivéve ezt az egyet, mert arra gondoltam, hogy élesben is ki kéne próbálni a kütyüt. Volt azonban egy apró bibi: a DAT-kazetta szalagját nyilvánvalóan nem lehet nyiszálni, márpedig egy helyen szükség lett volna a rövidítésre. Az R-DAT kódrendszer egyik alkódjának SKIP (kihagyás) a neve. Ezt az alkódot bárhová el lehet helyezni, és ha valamiért nem kell, törölni is lehet anélkül, hogy a hanganyagba belenyúlna. Ha a magnó elektronikája érzékeli a SKIP alkódot, a készülék eszeveszetten tekerni kezd a következő START alkódig, és ott lejátszásba kapcsol. Néhány másodpercig persze csönd van, ami a rádióműsorban kibírhatatlanul hosszú időt jelent, de előre szóltunk a hallgatóknak, s ők megértőn nem pánikoltak. Volt viszont egy apróság, amiről nem tudtak. Bár az egésznapos műsort nagyon előkészítettük, úgy tíz perccel a riport lejátszása előtt be akartam rakni az apró DAT-kazettát a magnóba. Egészen biztos voltam abban, hogy hová tettem, de ahogy ez történni szokott, nem volt ott. Mindenhol kerestem, mint az őrült. Végül mégis ott találtam meg, ahová eredetileg pottyantottam. Valahol talán most is megvan a kazi, s esetleg a magnó is.