introvert píše:A co Bit Perfect...
Tento termín nesouvisí se samotným přenosem, dokonce se nejedná ani o nějaký standard, nebo normu. Obecně to znamená, že zdrojový zvuk nebude cestou k DAC nijak dále zpracováván. Ve smyslu SW zásahu na straně přehrávače, průchodu ovladačů a zvukovým jádrem OS. Zjednodušeně řečeno je to "snaha", nikoliv zaručený výsledek.
introvert píše:U CD kvality je datový tok max 2 Mbit/s
Zásadní není datový tok, ale počet vzorků za sekundu a jejich datový rozsah. To si vyjednají obě zařízení před přenosem s tím, že PC má teoretické limity jen ve výkonu CPU. Periferie zpracovává signál maximem svého interního výkonu (typicky v jednotkách MHz).
Přenos v rámci USB probíhá po balíčcích (ve velikosti násobků od 8 do 1024 B ) s tím, že jednotlivé typy přenosu mají pevně dané limity (hromadný přenos 512, izochronní 1024 B ). Další limity jsou v častosti zápisu a čtení (oba směry jsou rozdílné a má na ně vliv OS a velkost vyrovnávacích pamětí na obou stranách).
Na těch zmíněných 2 Mbit bych potřeboval 488 datových balíků (2 Mbit / 512 B ). USB 2.0 v nejvyšším režimu (High Speed) přenáší datový rámec každou 1 milisekundu, tedy teoreticky maximálně 1000 krát za sekundu. Každý rámec může mít až 8 datových balíků - teoreticky tak co 1 sekunda to 8000 balíků. Ovšem to je opravdu jen "papírová" teorie.
Pokud bych každý přenos kontroloval a opravoval případné chyby, dostanu se u každého z balíků na:
- vyjednání odeslání
- poslání balíku
- potvrzení doručení
- vyjednání kontroly
- příjem kontrolního součtu
- potvrzení přijetí
...celkem nejméně × 6 v případě bez chyby a průměrně × 8 s případnou opravou nějakých chyb. Tedy z těch 488 datových balíků bych měl naráz cca 3900. Pokud do toho přičtu odezvy/latence přenosu a sníženou rychlost na straně pomalé periferie, vyjde mi, že s korekcí dat nepřenesu přes USB ani to CD audio. Prostě není čas.
introvert píše:... rychlost není limitujícím faktorem.
Zaměňujete rychlost a propustnost. Nejde o rychlost přenosu nebo kapacitu rozhraní, ale o jeho schopnost vyrovnat se s chybou. Chyby přenosu nastávají neustále, část jich zvládne opravit přímo HW korekce USB, část až SW.
Nicméně, kdybyste na zvuk použil USB hromadný přenos, výsledek by zněl (pokud jste zažil) jako natažený/deformovaný pásek audiokazety, případně jako když walkmanu docházely baterie - zvuk se v takovém případě přehraje vždy datově správně, ale bez ohledu na čas. Nakonec
tady je přibližná simulace - jen si představte nepravidelné změny.
Další částí přenosu je režie pro vyjednání spojení - to platí obecně u jakéhokoliv HW, kde je potřeba vyjednat a dohodnout přenos. Například i při zápisu/čtení pevného disku - teoretické maximum má od reality vždy daleko a jistě víte, že zkopírovat jeden velký soubor je mnohem rychlejší, než tu stejnou kapacitu rozdělenou na více částí.
martas38 píše: ...kontrolní součet ... opravuje chyby převodník?
Kontrolní součet a zpětná komunikace je jen při hromadném přenosu. Izochronní přenos komunikuje asi takto:
PC > jsi tam?
DAC > ano
PC > teď ti za každý N časový úsek pošlu X dat
DAC > OK
PC > posílám data
PC > konec přenosu
PC > jsi tam?
...
DAC v tomto směru je vlastně jen přijímač vysílání (jako rádio), které následně zpracuje. Jako korekci by mohl DAC použít vyrovnávací paměť. To by fungovalo (jako na starých přenosných CD přehrávačích) jen v případě, že by reprodukce zvuku nebyla vázána na další jevy - jako třeba obraz/video.
Další možností (která se aktuálně používá nejvíce) je odhad a rekonstrukce/interpolace zvukových vln. V malém rozsahu dochází k dopočítání poškozeného signálu a případné detekci/zahození vyloženě nesmyslných dat. Nicméně na to má vliv už interní čip DAC a každý výrobce to řeší trochu jinak.
A aby to bylo složitější, USB data obsahují základní součty, ale z toho DAC jen pozná, že obdržel vše správně nebo ne. Nic dalšího se už neděje. Interpolaci pak použije na výstup, který převedl ze správných dat. Ta chybná buď zahodí, nebo přehraje s chybou. K opravám samotného datového přenosu nedochází nikdy.