[elektro] CD lemez emulacio

Móczik Gábor pm_levlista at progzmaster.hu
Thu Jan 30 17:16:43 CET 2014


2014.01.30. 14:49 keltezéssel, Acs Gabor írta:
> Ráadásul azt, hogy a CD-ről mikor honnan akar olvasni a processzor, azt
> ő dönti el, és annak megfelelően mozgatja a fejet, számolja az adott
> adatsor kezdetének a helyét. Ez függ sokmindentől, a CD-n ugye
> hibajavító algoritmus van, stb. Azt az életbe' ki nem találod, hogy ő
> éppen hova akart menni.

A lemez sem tudja mit akarnak olvasni róla, nincs kétirányú kommunikáció.

A lemeznek is csak mechanikai paraméterei vannak: adott rádiuszon, adott 
szöghelyzetben tartalmaz valamit, egy szisztéma szerint felépítve. A 
szisztéma, pl. hogy nagyobb rádiuszon nagyobb szektorszámok vannak, 
pozitív vagy negatív forgásirányra növekszik a szektorszám, azaz milyen 
a forgásirány, egy szabvány lemezen hol mi található, pl. a lemez elején 
meta adatok vannak, stb.

Ezt kell kihasználni.

A külső abszolút mechanikai méretek sokkal nagyobb tűrésűek mint az sáv 
mérete ami rajta van. Ugye nem húzósan megy fel a lemez a lejátszó 
tengelyére...

Simán üt tized milimétereket, a kezdő sáv is csak kb. van ott, ahol 
lennie kellene... Ezt az olvasó is tudja, beleolvas a lemezbe, és ha nem 
az van ott amit keresett, akkor odébbmegy, mert a szisztéma szerint 
tudja, hogy ha ott nincs, akkor merre kell odébbmenni.

Ugyanezt kell emulálni.

Egy pozíciószenzorral olvasni kell a motor szöghelyzetét. Nem szükséges 
nagy felbontás, gyakorlatilag a szögsebességet kell kiszámolni, ebből 
durva közelítéssel tudod az adatsebességet, majd a szögsebesség 
változását kell figyelni, hogy tudd, hogy az olvasó lassabban vagy 
gyorsabban várja az adatsort.

Követni kell a fejet. Nem csak a csavarorsót, hanem a mágneses aktuátort 
is. Nem nehéz, mert világít a laser.
Pl. egy ugyaniyen csavarorsós fejre felteszel egy CCD vagy más 
képszenzort, a megvilágított pixel koordinátájából tudod, hogy hová 
világít az orsódhoz képest. Precízen érzékelhető az elmozdulás.

Maximum akkora pixelméret kell, mint a specifikáció szerinti sáv 
középtávolság.

Azzal, hogy elkapod, hová ment a fej, nagyjából megtudod, hogy kb. 
melyik szektor tartományt keresi az olvasó.

Nem kell tudnod pontosan, az olvasó sem tudja, hogy ott lesz-e, vagy 
2mm-rel odébb. A csavarorsón nincs jeladó, egy sima DC motor hajtja, az 
algoritmus vélhetően egy időre modellezett szervóhajtással céloz oda, 
azt se tudja eltalálta-e a rádiuszt amit akart, vagy sem.

Ha megnézel egy CD olvasót működés közben, látni fogod ha tracket 
váltasz, hogy nem találja el elsőre, kicsit korrigál valamerre.

Onnan tudja meg, hogy beleolvas az adatsorba, kap egy szektort, ami ha 
nem az amit keresett, akkor eldönti, hogy előrébb vagy visszább van, az 
aktuátorral gyorsan odébbhúz és újraolvas, majd az orsóval kicsit 
nagyobb időállandóval odaáll pontosan.

Amikor durván pozíciót vált, te az abszolút rádiusz alapján prezentálsz 
egy adatot, kb. azt, aminek szabvány szerint kellene lennie ott. Utána 
figyeled a további pozícióugrást, ebből megtudod, hogy azt kereste-e, 
vagy mást, az ugrás mértékéből megsaccolod, hogy mennyire mást...


Ez egy igen precíz szabályzókör, elég komplex, de azt is emberek 
tervezték. Terveztek bonyolultabbat is, ott van a DVD is, meg a 
blue-ray, stb... Az emuláció is komplex lesz, de ember ezt is meg tudja 
tervezni szerintem. :-)

Az olvasót meg tudnád tervezni?
Arnold audio-t tervez szerintem, de most gondold el, hogy pl. egy 52x CD 
olvasóban kb. 5-7ezer RPM a lemez fordulatszám, dől befelé a stream, 
real-time olvasni kell és el kell találni a szektort tizedmásodpercen 
belül, különben a user nagyon pipa lesz. :-)



More information about the Elektro mailing list