24-bit S/PDIF DAC med 16-bit material
24-bit S/PDIF DAC med 16-bit material
Funderar bygga en ny DAC med DIR9001 och PCM1794, men undrar nu om man alls vinner nån ljudkvalitet på det jämfört med en 16-bits USB-DAC som PCM2707 + PCM1794 som jag har.
Interpolerar moderkortets ljudkretsar upp 16-bits MP3 till 24-bit när man matar ut signalen på S/PDIF?
Interpolerar moderkortets ljudkretsar upp 16-bits MP3 till 24-bit när man matar ut signalen på S/PDIF?
Re: 24-bit S/PDIF DAC med 16-bit material
Använder din nuvarande DAC PCM2707 som USB-I2S-brygga för att sedan låta PCM1794 sköta omvandlingen?
I så fall tror jag inte du vinner något på att byta till S/PDIF. Det går liksom inte att "interpolera" från 16 till 24 bitar. Det finns ingen mer information att hämta, och det enda man skulle kunna göra är lägga på dithering, men jag kan inte tänka mig att det gör någon skillnad.
Om jag var sugen på att bygga en DAC (och det är jag) skulle jag titta på klockningen istället. Båda de lösningarna du nämner, med S/PDIF och med PCM2707, återskapar klockan från den inkommande dataströmmen. Detta blir aldrig riktigt bra, och de flesta seriösa omvandlare har istället en lokal oscillator nära DAC-kretsen, och använder antingen omsampling för att klocka om inkommande data mot denna, eller kör med asynkron USB (där datorn får följa klockan som ljudkortet genererar).
I så fall tror jag inte du vinner något på att byta till S/PDIF. Det går liksom inte att "interpolera" från 16 till 24 bitar. Det finns ingen mer information att hämta, och det enda man skulle kunna göra är lägga på dithering, men jag kan inte tänka mig att det gör någon skillnad.
Om jag var sugen på att bygga en DAC (och det är jag) skulle jag titta på klockningen istället. Båda de lösningarna du nämner, med S/PDIF och med PCM2707, återskapar klockan från den inkommande dataströmmen. Detta blir aldrig riktigt bra, och de flesta seriösa omvandlare har istället en lokal oscillator nära DAC-kretsen, och använder antingen omsampling för att klocka om inkommande data mot denna, eller kör med asynkron USB (där datorn får följa klockan som ljudkortet genererar).
Re: 24-bit S/PDIF DAC med 16-bit material
Jepp, tar bara I2S ur den som nu; http://users.abo.fi/jskata/JEDAC/ .
Får man generellt mindre jitter med S/PIF jämfört med USB?
Ser att TI också har ett 24-bits USB-chip, http://www.ti.com/product/pcm3060 . Undrar hur det står sig jämfört med PCM2707?
Så finns det ju Tenor-chippen, men de verkar vara svåra att få tag på som enskilda chips från Aliexpress/Ebay... färdiga DACar finns förmånligt dock.
Får man generellt mindre jitter med S/PIF jämfört med USB?
Ser att TI också har ett 24-bits USB-chip, http://www.ti.com/product/pcm3060 . Undrar hur det står sig jämfört med PCM2707?
Så finns det ju Tenor-chippen, men de verkar vara svåra att få tag på som enskilda chips från Aliexpress/Ebay... färdiga DACar finns förmånligt dock.
Re: 24-bit S/PDIF DAC med 16-bit material
PCM3060 ser inte ut att vara ett USB-chip dessvärre.
Jag vet inte om man kan säga något generellt när det gäller S/PDIF kontra USB. Antar att det beror på vad som sitter på andra sidan också. S/PDIF har ju fördelen att det är galvaniskt isolerat iaf.
Jag vet inte om man kan säga något generellt när det gäller S/PDIF kontra USB. Antar att det beror på vad som sitter på andra sidan också. S/PDIF har ju fördelen att det är galvaniskt isolerat iaf.
Re: 24-bit S/PDIF DAC med 16-bit material
Ah, måste ha varit trött när jag såg den.
Men att stacka DACar som man gjort där, hjälper ändå inte mot det som grämer mig, att jag bara använder 16 av 24 bitar i PCM1794.
Men att stacka DACar som man gjort där, hjälper ändå inte mot det som grämer mig, att jag bara använder 16 av 24 bitar i PCM1794.
Re: 24-bit S/PDIF DAC med 16-bit material
Men har du något material som är i 24-bitar då?
Det kan iof. vara praktiskt med 24-bitar i hela kedjan, för då kan man använda digital volymkontroll utan att skämmas allt för mycket.
Det kan iof. vara praktiskt med 24-bitar i hela kedjan, för då kan man använda digital volymkontroll utan att skämmas allt för mycket.
Re: 24-bit S/PDIF DAC med 16-bit material
Det vet jag egentligen inte och det var väl det jag ursprungligen undrade...
Förstår att t.ex. mp3 komprimeras i frekvensplanet så det rimligtvis borde vara beroende på spelaren hur många bitar som kommer ut?
Nu förstår jag iofs att mp3 är en större skymf mot ljudkvaliteten är 16 vs 24 bit.
Förstår att t.ex. mp3 komprimeras i frekvensplanet så det rimligtvis borde vara beroende på spelaren hur många bitar som kommer ut?
Nu förstår jag iofs att mp3 är en större skymf mot ljudkvaliteten är 16 vs 24 bit.
Re: 24-bit S/PDIF DAC med 16-bit material
Jo, det är väl sant iof. MP3 tror jag egentligen inte innehåller info om antalet bitar eller samplerate heller för den delen, så det går säkert att få ut 24 bitar ur en MP3-avkodare om man vill. Jag har dock ingen aning om de där extra bitarna innehåller något information som är värd att lyssna på i det fallet 

Re: 24-bit S/PDIF DAC med 16-bit material
Intressant, kan du hjälpa mig att förtydliga lite:superx skrev:Båda de lösningarna du nämner, med S/PDIF och med PCM2707, återskapar klockan från den inkommande dataströmmen. Detta blir aldrig riktigt bra, och de flesta seriösa omvandlare har istället en lokal oscillator nära DAC-kretsen, och använder antingen omsampling för att klocka om inkommande data mot denna, eller kör med asynkron USB (där datorn får följa klockan som ljudkortet genererar).
Återskapa klockan från dataströmmen:
Hur tusan fungerar detta, är clockan på något sätt inbakad i dataströmmen? Så man letar efter en edge och på så sätt försöker lista ut klockan?
Vad är risken med detta? Får man en klocka med massa jitter så man klockar fel data?
Lokal klocka
Så här låter synkroniserar man inkommande data till en egen klocka, så inga problem med jitter eller dylikt?
Antar att risken kan vara att den lokala klockan inte riktigt är exact samma frekvens som data klockan?
Asynkron
Låter som det bästa sättet, fast detta kräver lite extra logic på mottagarsidan?
Re: 24-bit S/PDIF DAC med 16-bit material
Återskapa klockan från dataströmmen:
Datat är kodat med någon sorts Manchester-kodning: http://en.wikipedia.org/wiki/Manchester_code
Problemet är att brus och långsamma flanker kommer påverka precis när flankerna detekteras, och det kommer att bildas jitter i den återskapade klocksignalen. Risken är inte så stor att man klockar fel data, men om man vill uppnå de där 129 dB dynamic-range som det står i databladet, så gäller det att spänningsnivån klockas ut vid exakt rätt tidpunkt.
Lokal klocka
Stämmer! Inkommande datatakt kanske skiljer sig från den lokala klockan. Därför måste man sampla om datat i mjukvara, eller med en sådan här: http://www.analog.com/en/products/audio ... d1896.html
Asynkron
Funkar bara med USB/Firewire etc., och kräver särskild drivrutin till ljudkortet (iaf. förr till Windows). Krångligare att implementera på båda sidorna tror jag, eftersom det behövs mer synkronisering etc. Vanlig USB-audio skickar ju bara data blint.
Datat är kodat med någon sorts Manchester-kodning: http://en.wikipedia.org/wiki/Manchester_code
Problemet är att brus och långsamma flanker kommer påverka precis när flankerna detekteras, och det kommer att bildas jitter i den återskapade klocksignalen. Risken är inte så stor att man klockar fel data, men om man vill uppnå de där 129 dB dynamic-range som det står i databladet, så gäller det att spänningsnivån klockas ut vid exakt rätt tidpunkt.
Lokal klocka
Stämmer! Inkommande datatakt kanske skiljer sig från den lokala klockan. Därför måste man sampla om datat i mjukvara, eller med en sådan här: http://www.analog.com/en/products/audio ... d1896.html
Asynkron
Funkar bara med USB/Firewire etc., och kräver särskild drivrutin till ljudkortet (iaf. förr till Windows). Krångligare att implementera på båda sidorna tror jag, eftersom det behövs mer synkronisering etc. Vanlig USB-audio skickar ju bara data blint.
Re: 24-bit S/PDIF DAC med 16-bit material
Vad jag förstått finns en slags klocka i den vanliga "isokrona" (lika intervall) usb ljuddataströmmen i form av att sändaren (datorn) skickar ett särskilt synkpaket 1000 ggr per sekund. Samplingsfrekvensen får man alltså genom att räkna antalet samples mellan varje synkpaket (1 ms) och sedan får man extrapolera fram (tex med pll) klockan utifrån detta.
Jag tror att detta är det man menar med att "återskapa" klockan från usb ljuddatat.
Ett uppenbart problem är ju att synkpaketen inte nödvändigtvis ankommer mottagaren helt isokront - detta även om de skulle skickas så, vilket nog även sällan är fallet med våra interaktiva icke-realtidsoperativsystem (Windows mfl.).
Misstänker vidare att man för en samplingsfrekvens på 44,1kHz skulle man väl ofta räkna till 44 samples och ibland till 45 mellan synkpaketen så att från detta skapa ljud utan att varken skippa eller duplicera enskilda samplingar torde i realiteten vara nära nog omöjligt eftersom man som mottagare ju inte kan råda över alla omständigheter i kedjan innan dess.
Som superx skrev så använder de finare usb-ljudkorten ett slags asynkron överföring och jag *antar* att man då skickar över skurar med data som buffras innan man klockar ut via analogomvandlaren med förhållandevis "perfekt isokroni". Hävid har man troligen tvåvägskommunikation så att man undviker både utarmning och toppfyllning av bufferten. Har för mig att man brukar tala om att "ALSA-drivrutiner" krävs och att de inte nödvändigtvis ingår som standard beroende på operativsystem.
EDIT: Rättade stavfel och lade till om ALSA. Rätta mig gärna.
Jag tror att detta är det man menar med att "återskapa" klockan från usb ljuddatat.
Ett uppenbart problem är ju att synkpaketen inte nödvändigtvis ankommer mottagaren helt isokront - detta även om de skulle skickas så, vilket nog även sällan är fallet med våra interaktiva icke-realtidsoperativsystem (Windows mfl.).
Misstänker vidare att man för en samplingsfrekvens på 44,1kHz skulle man väl ofta räkna till 44 samples och ibland till 45 mellan synkpaketen så att från detta skapa ljud utan att varken skippa eller duplicera enskilda samplingar torde i realiteten vara nära nog omöjligt eftersom man som mottagare ju inte kan råda över alla omständigheter i kedjan innan dess.
Som superx skrev så använder de finare usb-ljudkorten ett slags asynkron överföring och jag *antar* att man då skickar över skurar med data som buffras innan man klockar ut via analogomvandlaren med förhållandevis "perfekt isokroni". Hävid har man troligen tvåvägskommunikation så att man undviker både utarmning och toppfyllning av bufferten. Har för mig att man brukar tala om att "ALSA-drivrutiner" krävs och att de inte nödvändigtvis ingår som standard beroende på operativsystem.
EDIT: Rättade stavfel och lade till om ALSA. Rätta mig gärna.
Senast redigerad av hanzibal 8 maj 2015, 17:54:11, redigerad totalt 3 gånger.
Re: 24-bit S/PDIF DAC med 16-bit material
Man buffrar data även vid synkron USB och tappar normalt ingen data alls. Problemet handlar alltså enbart om att åstadkomma en stabil klocksignal för att kunna klocka ut varje sample vid rätt tidpunkt.
Jag tror att detta är extra känsligt med moderna sigma-delta-omvandlare som ju har bytt upplösning i antalet spänningsnivåer mot upplösning i tid för att åstadkomma önskad utsignal.
Jag tror att detta är extra känsligt med moderna sigma-delta-omvandlare som ju har bytt upplösning i antalet spänningsnivåer mot upplösning i tid för att åstadkomma önskad utsignal.
Re: 24-bit S/PDIF DAC med 16-bit material
Är det verkligen så säkert - en (ändlig) buffert löser väl inte problemet per sé?superx skrev:Man buffrar data även vid synkron USB och tappar normalt ingen data alls. Problemet handlar alltså enbart om att åstadkomma en stabil klocksignal för att kunna klocka ut varje sample vid rätt tidpunkt
Som mottagare torde man ju vara ganska chanslös mot både utarmning och överfyllnad eftersom man inte i god tid kunnat påverka datahastigheten i endera riktningen.
Så vad göra då? Jo man skickar ut samma sampling en gång till eller hoppar över för att komma ifatt.
Re: 24-bit S/PDIF DAC med 16-bit material
Det stämmer inte, tror jag. Vid synkron USB (där datorn är master) känner ljudkortet inte till någon annan tid än via klockan som det inkommande datat kommer med. Man behöver såklart buffra lite i hårdvaran eftersom datat kommer klumpvis, men det kan aldrig bli någon drift mellan klockorna i datorn och ljudkortet eftersom ljudkortet klockar ut data synkront med den takt som det kommer in med.