tubeman napisao:Malko si ih i ti pomiješao
I2SSPDIFSvi ovi navedeni konvertori čine samo nered u sustavu jer što više konverzija (pogotovo SPDIF I USB (AUDIO) jedni u druge direktno ili posredno, to gore.
Kada se već toliko tvika, onda se može napraviti i sasvim mali tvikić koji će (danas sasvim standardni) i2s izlaz iz samog drajva (a danas ih praktički svi imaju) dovući direktno do DAC-a i to kroz praktički bilo kakvu žicu. Pošto se radi o klokiranom signalu, nema jittera i svih onih metafizičkih pojava o kojima se puno voli razglabati.
...U stvari, uopće mi je čudno da se nakon SPDIFa (koji je zbilja donekle problematičan ali mu se ne može zamjeriti jer je još od stoljeća sedmog), nije napravio protokol koji će biti takav da pouzdano prenosi signal (osim samog checksuma).
Ajmo malo ne skakat pred rudo bez detaljnog proucavanja stvari.
I2S _NIJE_ clockiran signal, jer tu inace fali jedan jako bitan signal imenom MCLK kojeg za razliku od relativno sporog I2S-a nije lako prenositi na dulje staze bez problema. Odnosno, preciznije, ovisno o vrsti konvertera, I2S moze ali i ne mora unutar svojih signala sadrzavati referentni clock. Tipicno, kod multibit konvertera I2S sadrzi referentni clock, i taj je u pravilu LRCK, koji ima frekvenciju jedanku samplin rate-u. No pricati o tome da tu nema jittera je jednostavno krivo - ima, i to potencijalno jos i puno vise nego sto bi se ocekivalo.
Prije nego objasnim zasto je to moguce, treba objasniti neke bitne stvari u izvodjenju CDP-a kao uredjaja.
Za pocetak, jitter se moze tolerirati unutar digitalnog dijela tog lanca reprodukcije do samog kraja, tj. do samog DAC-a. Kao sto sam drugdje vec nekoliko puta pisao, 'sampling rate' je u sustavu na neki nacin implicitna 'konstanta' - racuna se da je svaki sample apsolutno jednake duljine. Ovo je vrlo bitno jer je iza DAC-a uvijek neka forma filtriranja (pa i kod non-OS-a, samo tamo nije nuzno filter kao takav vec tu ulogu preuzima karakter ostatka sustava). Filteri rade u frekventnoj, a time i u vremenskoj domeni (frekvencija = 1/period -> 1/vrijeme koliko nesto traje). Niskopropusni filter, receno matematicki, ima karakter integratora, a to je sklop koji zapravo sakuplja energiju sadrzanu unutar jednog sampla. A ona je jednaka velicini napona koji predstavlja digitalno zapisani brojcani iznos sampla, i to je eksplicitno specificirano, PUTA VRIJEME SAMPLA, a to je implicitno specificirano. Jitter je zapravo varijacija duljine sampla oko srednje vrijednosti. Da bi mu uticaj bio zanemariv, teoretski treba biti manji od najmanje 'znamenke' brojcane vrijednosti sampla. Ako je sampling 16 bita, to znaci da je najmanja vrijednost sampla 1/(2^16), 1/65536, sto znaci da varijacija duljine sampla smije biti manja od 1/65536 trajanja sampla.
Problem je u tome da ce tipicni digitalni dio CDP-a sasvim ispravno prenositi podatke s varijacijom samplinga 1/64 a cesto i jos gore. Tipicni CDP k tome ima tzv. 'master clock' koji, sto se tice digitalnog dijela sistema, sasvim fino radi s jitterom 1/64Fs, dok je za DAC potrebno 1/65536Fs ili cak bolje (u razloge ovdje necu ulaziti i nisu bitni za objasnjenje problema). Radi toga je konstrukcija CDP-a obicno takva da je master clock generiran najpreciznije i PRVO dat DAC-u a onda se dalje s njim radi sto se treba prema digitalnom dijelu - svaka operacija nad clockom povecava jitter. Kos modernih konvetora, a kad se radi o bitstream konvertorima, u pravilu je master clock najprije doveden do DAC chipa, a cesto i generiran u samom DAC chipu lokalnim oscilatorom. To je zato da bi sam DAC chip mogao kao zadnji stupoanj digitalne obrade imati reclocking prema tom clocku, cime se digitalni signal neposredno u tocki konverzije u analogni re-sinhronizira na clock minimalnog jittera. Taj clock je najcesce mnogostruko vise frekvencije od sampling frekvencije Fs, 192, 256, 384 ili cak i vise puta.
Tako referentni clock ide sasvim kontra smjerom od podataka: pocinje u DAC chipu i propagira prema servo-u za ocitavanje podataka, dok podaci idu suprotno, od citanja, prema DAC-u. Sve to zato jer je DAC taj na kojeg sve mora biti sinhronizirano. I ovdje ujedno lezi srz problema s jitterom, SPDIF-om, i I2S-om. Na kraju sve ovisi o tome kako mozemo izvesti cijelu pricu da se najvise priblizimo tom idealu.
U praksi postoje slijedeci problemi:
SPDIF - signal je moduliran tako da je u njemu prisutan i clock i podaci. Ako se podaci dobivaju iz SPDIF ulaza, DAC je u startu spojen 'naopako' - umjesto da je on taj na koji se sinhronizira sve, on je taj koji se na sve sinhronizira. Clock koji se dobiva iz SPDIF-a je u praksi u CDP-u izveden kako sam gore opisao, dakle DAC u CDP-u je 'izvor', a sam clock se visestruko obradjuje dok ne dodje do dekoder chipa koji ga dalje obradjuje u SPDIF signal. Pri prijemu SPDIF signala slijedi daljnja obrada, te re-generiranje i multipliciranje frekvencije putem PLL-a, ukupno hrpa stupnjeva obrade koji svaki doprinosi jitter-u aditivno a neki cak i multiplikativno (PLL). Iako se ovaj problem moze rijesiti na razne nacine koji su svi jedan kompleksniji od drugog, postoji jednostavan i relativno jeftin nacin da se on rijesi s minimumom hardware-a - da se paralelno s SPDIF-om vodi master clock. Problem je sto nikad nije donesen standard kako bi se to izvelo - niti na razini konektora i kabla, niti na razini frekvencije koje bi se koristila, pa cak ni u kom smjeru bi signal trebao ici ako se koristi. Primjerice, sasvim bi dovoljno bilo da se iz CDP-a vodi postojeci MCLK, no osim sto to ni najmanje ne pase za druge vrste uredjaja gdje bi bilo bolje da se (kao sto je logicnije iako ne uvijek prakticnije) vodi iz DAC-a, u uporabi su sve moguce kombinacije, od 128, 192, 156, 384, 512 Fs a rijedje i 768 i 1024Fs. Pri vecim Fs prenos takvih signala postaje itekako problematican (192k Fs * 1024 ~~ 193Mhz) i sama priprema signala za prenos kablom i nakon toga prijem i pretvorba u signal kakav ocekuje DAC proizvodi jitter, pa se opet vracamo na varijantu gdje je DAC taj koji daje clock, s obzirom da ostatak sistema ima mnogostruko vecu toleranciju na jitter.
LRCK u odnosu na MCLK - multibit konverteri u pravilu nemaju sto raditi s signalom tipa MCLK s obzirom da njima treba referentna frekvencija Fs - a tu prenosi signal LRCK. Problem j eu tome sto NEMA specifikacije jittera za LRCK u CDP specifikaciji, i stovise, LRCK je cesto dobiven kompleksnom logikom iz MCLK, cesto i bez posebne paznje kad se tice unosenja jittera u taj signal. TDA1541 je ovdje vrlo tipican - njegov je referentni clock LRCK, dok je u svim modernim sustavima referentni clock MCLK. Drugim rijecima, LRCK se smatra digitalnim signalom i uglavnom se uzima da je tolerancija sustava na jitter u tom signalu onih vec spomenutih 1/64Fs, a ne kao sto bi TDA ocekivao, 1/65536Fs. VODJENJE I2S SIGNALA SAMO PO SEBI NE GARANTIRA MINIMALNI JITTER. Potrebno je znati sto i kako generira I2S signale. I2S NIJE specificiran s jitterom kakav ocekuje DAC nego digitalni sustav za prijenos informacija, jer je I2S standard za digitalni prenos informacija.
U prijevodu:
1) Kod SPDIF-a nije problem korektan prijenos podataka. Spoj na SPDIF-u treba ziasta biti katastrofalan da bi podaci bili prenoseni pogresno. Problem je kod regeneracija clocka iz SPDIF-a, jitter moze biti nedopustivo velik, i to gori cim je visi sample rate.
2) kod svakog DAC-a i onog iz ceg mu dolaze podaci, treba prouciti koji je clock referentan i po potrebi napraviti prilagodbu. Sama primjena nekog standarda spajanja nije nikakva garancija kvalitete relevantnih signala, i ponovno, to se ne odnosi na tocnos prenosa digitalnih signala, vec na tocnost clocka. Tako spajanje mehanizma I2S-om samo po sebi uopce ne garantira kvalitetan spoj, jer u cijeloj prici fali onaj MCLK koji nije dio niti SPDIF niti MCLK specifikacije, iako je implicitno sadrzan u svim tim signalima.
Hint:
Ako je LRCK referentni clock za DAC a generiran je iz nekog MCLK-a 'ko zna cime' (u CDP-u to je najcesce u samom DAC chipu ako je bitstream, ili je u dekoder chipu), tada ga treba re-clockati pomocu MCLK-a. To vrijedi za bilo koji izvor signala za DAC chip pa makar to bio SPDIF prijemnik ili CD citac. Jedini slucaj kad to nije potrebno je primjerice kad SPDIF, USB ili stolivec prijemnik ima interno re-clockanje MCLK-om na svim I2S izlazima... a ima li to onaj kojeg ste odabrali?