[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