24-bit S/PDIF DAC med 16-bit material

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

24-bit S/PDIF DAC med 16-bit material

Inlägg av JanErik »

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?
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

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).
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av JanErik »

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.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

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.
Användarvisningsbild
slurry
Inlägg: 289
Blev medlem: 18 februari 2005, 14:06:23

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av slurry »

DDDAC 1794 är svaret :)
http://www.dddac.com/
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av JanErik »

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.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

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.
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av JanErik »

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.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

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 :D
arte
Inlägg: 317
Blev medlem: 13 januari 2006, 01:18:50

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av arte »

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).
Intressant, kan du hjälpa mig att förtydliga lite:

Å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?
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

Å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.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av hanzibal »

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.
Senast redigerad av hanzibal 8 maj 2015, 17:54:11, redigerad totalt 3 gånger.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

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.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av hanzibal »

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
Är det verkligen så säkert - en (ändlig) buffert löser väl inte problemet per sé?

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.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: 24-bit S/PDIF DAC med 16-bit material

Inlägg av superx »

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.
Skriv svar