Cikkek

CD lemezek kódolása

Szinte mindenki tud vagy hallott már valamit arról, hogy miként tárolódnak a CD-n az adatok. A legtöbben azonban sok mindent nem vagy nem pontosan tudnak, és nagyon kevesen vannak, akik a CD felépítésének minden egyes részletét alaposan ismerik (a szerző sem tartozik az utóbbi csoportba), de különböző forrásokból össze lehet szedni sok-sok információt, és így végülis elég pontos képet alkothatunk arról, hogy hogyan is működik valójában a CD.

Az alábbiakban a zenei CD (CD-DA) kódolási rendszerét tekintjük át, az itt leírt alapok azonban (nagyrészt) igazak minden más CD-formátum esetére is.

Az többnyire ismert, hogy a CD-n pit-ek („lyukak”) és land-ek váltakozása tárolja az információt. Első ránézésre azt hihetnénk, hogy egy pit-nek egy „1”-es bitet feleltetnek meg, a land-nek pedig egy „0”-ást (esetleg fordítva). A helyzet azonban nem ilyen egyszerű.

Az előző részben említettük, hogy a legrövidebb pit 0,833 µm hosszú, és a lemez felületén a (képzeletbeli) spirál hossza 5378 m. Ezek alapján a lemez tárolókapacitására legfeljebb (5378 m / 0,833 µm/bit =) kb. 770 MB adódna. Csakhogy ezzel több probléma is van.

Először is, ha sok az egymás utáni „0” bit (hosszú a land), akkor az olvasólézer nem tudja követni a spirált, „eltéved” (ne felejtsük el, hogy nyomott lemezen nincs tényleges spirál, csak a pitek elhelyezkedése spirális!). Másodszor, ha nem váltakoznak elég sűrűn a pit-ek és land-ek, akkor az olvasó nem tudja mihez szinkronizálni magát, és időzítési hibák léphetnek fel (a kelleténél később vagy hamarabb olvas be egy bitet). Harmadszor, az adatok közé mindenféleképpen szükség van különböző vezérlő és hibajavító adatokra (a zenei CD-n a hibajavító adat mennyisége a zenei adatok mennyiségének 1/3-a), ami csökkenti a használható tárkapacitást. Ha ezzel összevetjük azt, hogy egy zenei CD-re kb. 750 MB zenei adat fér fel, akkor már megérthetjük, hogy a kódolás nem történhet a pit=1, land=0 (vagy fordítva) alapon.

A CD-n egy „1”-es bitet egy pit-land vagy land-pit átmenet, míg egy „0”-ás bitet az átmenet hiánya kódolja. Mivel egy pit minimális hossza meghatározott, ezért két „1”-es nem követheti egymást túl szorosan, legalább két „0”-ás bitnek kell köztük lennie. Ugyanakkor a „0”-ás bitek száma sem lehet túl sok, hogy az időzítés ne csússzon el. Egymás után nem lehet 10-nél több „0” bit. Ezekből a megkötésekből látható, hogy közvetlenül nem tárolhatók az adatbyte-ok, valahogyan át kell alakítani őket. Az átalakítás módja az ún. EFM-moduláció, ami az angol eight-to-fourteen modulation (nyolcról tizennégyre moduláció) rövidítése. Ennek során minden 8 bites byte-ot egy táblázat alapján egy 14 bites számra cserélnek ki. Azért 14 bitesre, mert ezekből 267 olyan kombináció van, amely megfelel a fentebbi kritériumoknak (ezekből kilencet nem használnak).

Ha megnézzük az EFM-kódtáblát, feltűnik, hogy van olyan EFM-kód, amely 1-esre végződik, és van olyan is, amelyik 1-essel kezdődik. Mivel két egyes nem követheti egymást, ezért a 14 bites EFM-kódok közé még beszúrnak 3 összekötő bitet. Ezeket úgy kell megválasztani, hogy:

1. Mindig teljesüljön az, hogy két egyes bit között legalább kettő és legfeljebb tíz nullás bit legyen
2. A 100000000001000000000010 bitminta csak szinkronkarakterként (l. később) fordulhat elő
3. A nagyfrekvenciás jel spektrumának 20 kHz alatti komponensei minél gyengébbek legyenek (ez a szervorendszer jobb működéséhez szükséges).

Az olvasás során az összekötő biteket figyelmen kívül hagyják.

Az alábbiakban a zenei CD (CD-DA) kódolási módját ismertetjük.
Tizenkét minta (a bal és jobb csatorna 6-6 darab 16 bites mintavételi értéke) alkot egy keretet.

B1 J1 B2 J2 B3 J3 B4 J4 B5 J5 B6 J6

A keretet ezután 8 bites szavak formájában kódolják, így minden 16 bites mintavételi értékből két 8 bites szó lesz.

B1 B1 J1 J1 B2 B2 J2 J2 B3 B3 J3 J3 B4 B4 J4 J4 B5 B5 J5 J5 B6 B6 J6 J6

Ez összesen 24 darab 8 bites szó.

Ezután a páros szavakat két blokkal késlelteik, és az így kapott „szavakat” összekavarják. Ez a késleltetés és keverés az átszövési folyamat első része.

Az így kapott 24 byte-hoz (ne felejtsük el, hogy ezek két blokk késleltetést tartalmaznak, ezért az ezeket a szavakat jelölő szimbólumok egy része két blokkal ezelőtti adatot jelöl) adnak 4 byte paritást. Ezt a paritást „Q” paritásnak nevezik. Az algoritmus ezen részében található paritáshibát C2 hibának nevezik. A Q paritásról később részletesen lesz szó.

Az így kapott 24 + 4Q = 28 byte-nyi szót késleltetik, mégpedig mindegyik byte-ot eltérő mértékben. A késleltetés mértéke mindig 4 blokk egész számú többszöröse, így pl. az első byte-ot késleltethetik 4 blokkal, a másodikat 8 blokkal, és így tovább. A késleltetés eredményeként a szavak összesen 28 x 4 = 112 blokkon oszlanak el.

Az eredményül kapott 28 byte-hoz ismét képeznek 4 byte paritást, ezt P paritásnak nevezik, és a 28 adatbyte után teszik. Így összesen 28 + 4 = 32 byte-unk van. Az algoritmus ezen részében előforduló hibákat C1 hibáknak nevezik. Később a P paritásról is részletesebben lesz szó.

Végül ismét végrehajtanak egy páratlan-páros késleltetést, de ezúttal csak egy blokkal. A P és Q paritás bitjeit invertálják.

Az így kapott 32 byte elé beszúrnak egy 8 bites alkódbyte-ot. Az alkódadatok tartalmazzák pl. az időinformációkat. Ez a 33 byte – benne 24 byte zenei információval – alkot egy keretet.

A következő lépésben az adatokat EFM-modulációnak (eight to fourteen modulation, nyolcról tizennégyre moduláció) vetik alá. Az EFM-moduláció során minden 8 bites byte-ot (egy táblázat alapján) egy 14 bites értékre cserélnek. Az EFM-kódok úgy vannak összeállítva, hogy bennük egymás után ne legyen kettőnél kevesebb illetve tíznél több nulla bit – ez behatárolja a pitek lehetséges hosszát, és megbízhatóvá teszi az olvasást.

Ezután az adatok elé tesznek egy egyedi, EFM-modulációval nem előállítható 24 bites szinkronjelet (értéke 10000000 00010000 00000010). A szinkronjel és minden 14 bites EFM-kód után 3 összekötő bitet raknak (ezek tartalmát az olvasáskor figyelmen kívül hagyják). Az így előállított 588 bit a csatornakeret (channel frame).

Egy csatornakeret felépítése:

Szinkronkarakter: 24+3 csatornabit = 27 bit
Alkódbyte: 1*(14+3) = 17 bit
Adatbyte-ok: 12*(14+3) = 204 bit
Hibajavító byte-ok: 4*(14+3) = 68 bit
Adatbyte-ok: 12*(14+3) = 204 bit
Hibajavító byte-ok: 4*(14+3) = 68 bit

Összesen 588 csatornabit, benne 192 adatbit (24 adatbyte).

98 keret alkot egy szektort, azaz egy szektor 98 x 24 = 2352 adatbyte-ot tartalmaz. Mint a fentiekből látható, a szektor a zenei adatokon kívül nem tartalmaz semmilyen egyéb – pl. cím- vagy idő- – információt. Ezeket az alkódadatokban tárolják, amiről később lesz szó. Itt most azért fontos ezt megjegyezni, mert így válik érthetővé, hogy miért nem olyan egyszerű beolvasni egy zenei CD-ről a számokat, mint egy CD-ROM-ról leolvasni egy file-t/szektort. Ebből a címzési pontatlanságból adódhat a digitális zene leszedésénél (grab, rip) a „jitter” vagy szinkronizációs hiba, illetve az offset.

Forrás : Nagy Szabolcs


Egyedi ajánlat feliratkozás

Iratkozzon fel itt, és a jövőben elküldjük kiemelt akciós ajánlatainkat. Ne maradjon le!


FACEBOOK

Kövessen minket a világ legnagyobb közösségi portálján! Legyen az ismerősünk!

CIKKEK

Szekciónkban az adattárólással foglalkozó információs tárunkat ismerheti meg.

TWITTER

Ismerje meg cégünk mindennapjait, látogassa folyamatosan mikroblog oldalunkat.
 

Hívjon minket!
+36 1 296 2489
+36 70 3644-066
Írjon nekünk!
info(kukac)adathordozok.hu
cd gyártás dvd gyártás cd sokszorosítás dvd sokszorosítás dvd nyomtatás cd nyomtatás digipack dvd készítés cd készítés Sitemap dvd másolás digipak
dvd lemezek plasztik kártya készítés