Gebalanceerde DAC en discrete interpolatie

Traditionele bronapparaten zoals CD-, DVD- en platenspelers.
(streaming-/computeraudio graag in de daarvoor aangewezen forumgroep)

Moderators: Barry2001, Beheerdersteam

Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

SSassen schreef:
de uitgangen van de DAC's, is dit gewoon hetzelfde als 8x oversampling en dan de data door een FIR filter stoppen met de coëfficienten 1-1-1-1-1-1-1-1, dus dit is gewoon lineare interpolatie.
Hehe... 8)
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

Sander,

Ik zal het je proberen uit te leggen. Eerst iets over lineaire interpolatie, dat is in wezen een ongewenste vorm van interpolatie. Je creert er vervorming mee omdat je afwijgt van de enige echte juiste interpolatie. Tussen twee bemonsterde waarden kan nooit de juiste waarde gevonden worden door in het midden te gaan zitten, je zult dat met een Sinc moeten doen.

Dan iets over het uitgangssignaal. Wellicht dat de 8 DAC's afzonderlijk 8x oversampled zijn, om zo die Ts/8 verschuiving te realiseren en daar zit dan de winst. Maar je had ook net zo goed 1 DAC kunnen nemen met 8x oversampling. Na optelling van de 8 verschoven signalen verkrijg je ten slotte het signaal dat ik je voorgerekend heb: hetzelfde signaal als 1 DAC (en voor hele lage frequenties 8x de amplitude) maar dan met een afzwakking in het hoog.

Volgens mij is er helemaal geen winst in interpolatie.

Groet,
Jacco
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

Rede genoeg om ervoor te pleiten om de coefficentien niet allemaal gelijk te maken.

Voor een degelijk filter is zijn 8 tabs echter wel erg weinig, evenals 16 tabs.

Jacco, Sander gebruikt met name meerdere DAC's om de niet lineariteiten te verminderen. Dat je daar dan ook nog leuk mee kan interpoleren is meer een leuke bijzaak denk ik. Maar 8x digitale oversampling en alle dac's gelijk laten lopen heeft natuurlijk een vergelijkbaar en misschien beter resultaat.
Laatst gewijzigd door voodooless op do 07 dec 2006, 11:12, 1 keer totaal gewijzigd.
Gebruikersavatar
SSassen
Berichten: 11528
Lid geworden op: vr 22 apr 2005, 10:21
Locatie: Zuidoostbeemster
Contacteer:

Bericht door SSassen »

Jacco,
Eerst iets over lineaire interpolatie, dat is in wezen een ongewenste vorm van interpolatie. Je creert er vervorming mee omdat je afwijgt van de enige echte juiste interpolatie. Tussen twee bemonsterde waarden kan nooit de juiste waarde gevonden worden door in het midden te gaan zitten, je zult dat met een Sinc moeten doen.
Laten we voorop stellen dat IEDERE vorm van interpolatie ongewenst is, je creërt immers tussenwaardes die niet in 't origineel voorkomen, maar een benadering zijn. In beginsel komt het erop neer dat je punt A op een grafiek met punt B verbindt, je kan dit doen met een rechte lijn, of in stappen, met een kromming, of een statistisch onderbouwde curve, etc. etc.

De keuze die hier gemaakt is is zoals je zelf al eerder aangegeven heb in je afleiding er eentje die GEEN invloed heeft op de fase van het signaal. Met een digitaal oversampling filter heb je daar toch last van door de bijzonder steile brickwall filtering etc. Kortom, het is een bewuste keuze om te kiezen tussen twee kwaden. Ik denk, maar moet dit uiteraard straks in de praktijk gaan toetsen, dat deze vorm van interpolatie minder 'erg' is gehoormatig dan de brickwall filtering, deciminatie, dithering, etc. in een doorsnee digitaal filter. Het is en blijft echter een keuze, omdat interpolatie nu eenmaal een compromis blijft.

Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

voodooless schreef:
Rede genoeg om ervoor te pleiten om de coefficentien niet allemaal gelijk te maken.

Voor een degelijk filter is zijn 8 tabs echter wel erg weinig, evenals 16 tabs.

Jacco, Sander gebruikt met name meerdere DAC's om de niet lineariteiten te verminderen. Dat je daar dan ook nog leuk mee kan interpoleren is meer een leuke bijzaak denk ik.
Wat mij betreft is het niet eens een bijzaak. Wat de analoge uitgang doet van die DAC kan ik natuurlijk niet overzien.

Groet,
Jacco
Gebruikersavatar
SSassen
Berichten: 11528
Lid geworden op: vr 22 apr 2005, 10:21
Locatie: Zuidoostbeemster
Contacteer:

Bericht door SSassen »

Uiteraard kan je door de coëfficienten anders te kiezen bv. de hoogafval wat wegpoetsen, iig. kan je op die manier een stuk 'curve fitting' doen zodat je straks als je zonder digitale oversampling gaat werken toch op een rechte curve uitkomt. Ik kies voor een milde mate van oversampling 2x of 4x, zonder brickwall filtering, en hoop daarmee dit wegen van coëfficienten niet nodig te hebben.

Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

SSassen schreef:
De keuze die hier gemaakt is is zoals je zelf al eerder aangegeven heb in je afleiding er eentje die GEEN invloed heeft op de fase van het signaal. Met een digitaal oversampling filter heb je daar toch last van door de bijzonder steile brickwall filtering etc.
Eh, wacht ff... met FIR filters kun je prima brick wall filters maken die fase correct zijn :) Met als nadeel het zo bekende pre-ringing van het filter en in sommige gevallen een niet acceptabele passband ripple. Een kwestie van meer die size opofferen voor meer tabs :)
Gebruikersavatar
SSassen
Berichten: 11528
Lid geworden op: vr 22 apr 2005, 10:21
Locatie: Zuidoostbeemster
Contacteer:

Bericht door SSassen »

Eh, wacht ff... met FIR filters kun je prima brick wall filters maken die fase correct zijn
Mja, kan wel, maar in de regel is men daar toch wat laks mee. Probleem is bv. dat om je residual image op Fs/2 (22kHz) weg te kunnen poetsen je toch bijzonder steil moet filter op 20kHz. De meeste filters gaan dan toch fasedraaing laten zien, omdat -100dB demping binnen 2kHz toch wel wat lastig is.

Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

SSassen schreef:
De meeste filters gaan dan toch fasedraaing laten zien, omdat -100dB demping binnen 2kHz toch wel wat lastig is.
As I said: meer tabs -> meer die size -> meer $$
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

SSassen schreef:
Eh, wacht ff... met FIR filters kun je prima brick wall filters maken die fase correct zijn
Mja, kan wel, maar in de regel is men daar toch wat laks mee. Probleem is bv. dat om je residual image op Fs/2 (22kHz) weg te kunnen poetsen je toch bijzonder steil moet filter op 20kHz. De meeste filters gaan dan toch fasedraaing laten zien, omdat -100dB demping binnen 2kHz toch wel wat lastig is.

Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Mijn hemel....

FASEDRAAIING IS NIET BELANGRIJK!!!!!!!!!!!

Fir filters hebben de prettige eigenschap dat de groepslooptijd constant is. Althans, in 99% van de 100 gevallen. Dus die steile filters is no problem. Wat wel een probleem is (nou ja, wat heet) is de pre en post echo met die gekke dingen.

Groet,
Jacco
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

Zo kun je met 5555 tabs leuke dingen doen:

Afbeelding

:lol:

100% fase correct, en 0.0001% passband ripple en 120 dB drop in 2 Khz :)
Gebruikersavatar
SSassen
Berichten: 11528
Lid geworden op: vr 22 apr 2005, 10:21
Locatie: Zuidoostbeemster
Contacteer:

Bericht door SSassen »

Zo kun je met 5555 tabs leuke dingen doen:
Hoeveel DAC's zijn dan? Plaats ik vast een bestelling :shock: :mrgreen:

Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Gebruikersavatar
SSassen
Berichten: 11528
Lid geworden op: vr 22 apr 2005, 10:21
Locatie: Zuidoostbeemster
Contacteer:

Bericht door SSassen »

Jacco,
FASEDRAAIING IS NIET BELANGRIJK!!!!!!!!!!!
Oeps! Ik bedoelde natuurlijk groepslooptijd, ik haal die dingen nogal eens door elkaar geloof ik, volgende keer krijg je taart, afgesproken?
Ten slotte nog iets over groepslooptijd. Dit blijkt een constante te zijn en komt uit op 7*Pi/(8*ws), wat dus betekent dat de fasecoherentie niet aangetast wordt en dus onhoorbaar is.
Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

voodooless schreef:
Zo kun je met 5555 tabs leuke dingen doen:
[...]
0.0001% passband ripple en 120 dB drop in 2 Khz :)
Ja, die orde grootte van ripple heb je wel nodig om de pre echo onder het hoorbare niveau te krijgen.

Maarre, als je zo'n filter gaat maken, dan kan het zijn dat je je coefficienten moet gaan aanpassen door afrondingen in de praktische implementatie...

Groet,
Jacco
Laatst gewijzigd door dekkersj op do 07 dec 2006, 11:50, 1 keer totaal gewijzigd.
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

SSassen schreef:
Jacco,
FASEDRAAIING IS NIET BELANGRIJK!!!!!!!!!!!
Oeps! Ik bedoelde natuurlijk groepslooptijd, ik haal die dingen nogal eens door elkaar geloof ik, volgende keer krijg je taart, afgesproken?
Ten slotte nog iets over groepslooptijd. Dit blijkt een constante te zijn en komt uit op 7*Pi/(8*ws), wat dus betekent dat de fasecoherentie niet aangetast wordt en dus onhoorbaar is.
Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Ja, het begrip fasecoherentie is mij aangesmeerd door iemand die met blokgolven de fasehuishouding wilde kwalificeren. Zo kwamen we op 1 lijn zeg maar en het zegt niets anders dan dat de blokgolf die er uit komt het beste moet lijken op de blokgolf die er in gaat. Dan is er fasecoherentie. Persoonlijk blijf ik liever de term groepslooptijdvervorming oid gebruiken.

Groet,
Jacco
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

dekkersj schreef:
Maarre, als je zo'n filter gaat maken, dan kan het zijn dat je je coefficienten moet gaan aanpassen door afrondingen in de praktische implementatie...
Natuurlijk. 64 bit FP is bij dit soort dingen wel aan te raden. Echter heb ik niet echt de behoefte om iets dergelijks zelf te proberen.

De CS8421 doet het toch al best netjes met 0.007 ripple en een stopband van -125 dB.
Gebruikersavatar
SSassen
Berichten: 11528
Lid geworden op: vr 22 apr 2005, 10:21
Locatie: Zuidoostbeemster
Contacteer:

Bericht door SSassen »

Mja, vind de CS8421 nu niet echt een goed voorbeeld, neem dan als voorbeeld een AD1896 of SRC4192.

Met vriendelijke groet,

Sander Sassen
http://www.hardwareanalysis.com
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

SSassen schreef:
Mja, vind de CS8421 nu niet echt een goed voorbeeld, neem dan als voorbeeld een AD1896 of SRC4192.
Tja, wisselend, de ripple van de SRC is iets minder, stopband is wel flink beter, THD vergelijkbaar. De AD lijkt toch flink minder met maar 0.016 db.

Dus volgens mij zijn die dingen redelijk aan elkaar gewaagd (waar de AD imho de slechtste is).
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

voodooless schreef:
SSassen schreef:
Mja, vind de CS8421 nu niet echt een goed voorbeeld, neem dan als voorbeeld een AD1896 of SRC4192.
Tja, wisselend, de ripple van de SRC is iets minder, stopband is wel flink beter, THD vergelijkbaar. De AD lijkt toch flink minder met maar 0.016 db.
Goed, die AD kan dus de kliko in...Onacceptabel.

Ik kreeg ooit een tip om eens te kijken naar AK4395, die heeft een ripple van 0.0002 dB (in sharp roll-off mode). Dat is dus een pre echo op -95 dBFS. Netjes!

Groet,
Jacco
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

Dat is een DAC en geen ASRC jacco ;) Maar goed. Als je een SRC gebruikt is het niet zinvol om daar dan een DAC oversampling achter te zetten die ook weer ripple geeft. Dat is dubbelop.

De vraag is of een upsampler daadwerkelijk zoveel beter is dan een oversampling dac met digitaal filter. in essentie doen ze beiden hetzelfde natuurlijk. De upsamplers hebben echter vaak betere THD en ruis specs (maar dat is natuurlijk in het digitale domein) dan de DAC's.
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

voodooless schreef:
Dat is een DAC en geen ASRC jacco ;) Maar goed. Als je een SRC gebruikt is het niet zinvol om daar dan een DAC oversampling achter te zetten die ook weer ripple geeft. Dat is dubbelop.

De vraag is of een upsampler daadwerkelijk zoveel beter is dan een oversampling dac met digitaal filter. in essentie doen ze beiden hetzelfde natuurlijk. De upsamplers hebben echter vaak betere THD en ruis specs (maar dat is natuurlijk in het digitale domein) dan de DAC's.
In een digitaal filter is ook voorzien in de verzwakking die de DAC gaat maken (Sincverzwakking). Dat lijkt mij the way to go.

Een upsampler voegt nullen toe op de plaatsen waar je het signaal wilt interpoleren en die nulwaarden worden dan door een brickwall filter gerealiseerd (FIR). Als je genoeg voorgeschiedenis meeneemt, is dat veel nauwkeuriger dan op een lagere samplefrequentie diezelfde interpolatie te doen. Maar goed, de praktijk kan altijd afwijken en er zijn veel aspecten waar je op moet letten. Maar een ripple moet in de orde grootte zijn van 0,000x dB. Drie nullen en dan pas een getalletje. Anders hoef je mij niet wakker te maken.

Groet,
Jacco
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

dekkersj schreef:
De vraag is of een upsampler daadwerkelijk zoveel beter is dan een oversampling dac met digitaal filter. in essentie doen ze beiden hetzelfde natuurlijk.
Nullen? Toch: kopieën van het voorgaande sample ertussen => de bekende trapjes => FIR filter => interpolatie ?
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

voodooless schreef:
dekkersj schreef:
De vraag is of een upsampler daadwerkelijk zoveel beter is dan een oversampling dac met digitaal filter. in essentie doen ze beiden hetzelfde natuurlijk.
Nullen? Toch: kopieën van het voorgaande sample ertussen => de bekende trapjes => FIR filter => interpolatie ?
Nee, nullen toevoegen en dan door een filter (en dan niet het eerste de beste filter, nee het enige echte Sincfilter) halen. Ik zal het eens opzoeken.

Ziezo, een dictaat "misbruikt" en het volgende is aan de hand bij upsamplen of interpoleren (in dit voorbeeld wordt een eenvoudig proces aangenomen, het integer upsamplen)

Afbeelding

Je ziet 3 tijdassen. De bovenste is de originele datastroom in het tijddomein. Daaronder zie je de gecombineerde tijdas van de 2 klokken, klok b is 3 x hoger in frequentie dan klok a. Bij upsamplen worden er nullen toegevoegd op de plaatsen waar de twee klokken niet samenkomen (zie onderste tijdas) en dit is essentieel. Dus niet waarden onthouden oid.

Dit lijkt vreemd maar is heel logisch. Vervolgens moet je de nieuwe datastroom door een laagdoorlaatfilter (het ideale LDF) halen met een kantelpunt op de originele bandbreedte (van klok a dus). Schematisch is dat hier weergegeven:

Afbeelding

De crux is dat je begrijpt dat de bemonsteringsreconstructie gedaan wordt door een serie Sincfuncties met het gewicht van de tijddiscrete waarde. Essentieel is dat dit een proces is waarbij de Sinc van het ene samplemoment geen bijdrage levert aan het andere. Dwz ten tijde van een samplemoment is telkens maar 1 Sinc verantwoordelijk voor de output. Voor de tussenliggende tijd doen ze echter allemaal mee. Daarom moet je de tussenliggende nieuwe tijdwaarden nul maken, anders zouden ze gaan meedoen in het uiteindelijke signaal en dat wil je niet. Omdat ze nul zijn, zullen ze exact de juiste waarde aannemen door de Sinc interpolatie. Thats all.

Groet,
Jacco
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

bedankt Jacco, echter is dit me niet helemaal duidelijk:
dekkersj schreef:
De crux is dat je begrijpt dat de bemonsteringsreconstructie gedaan wordt door een serie Sincfuncties met het gewicht van de tijddiscrete waarde. Essentieel is dat dit een proces is waarbij de Sinc van het ene samplemoment geen bijdrage levert aan het andere.
Bedenk ook effe dat het perfecte Sinc filter in de praktijk niet bestaat.
Gebruikersavatar
dekkersj
Berichten: 1210
Lid geworden op: wo 11 jan 2006, 0:41
Locatie: Steenbergen (NB)
Contacteer:

Bericht door dekkersj »

voodooless schreef:
bedankt Jacco, echter is dit me niet helemaal duidelijk:
dekkersj schreef:
De crux is dat je begrijpt dat de bemonsteringsreconstructie gedaan wordt door een serie Sincfuncties met het gewicht van de tijddiscrete waarde. Essentieel is dat dit een proces is waarbij de Sinc van het ene samplemoment geen bijdrage levert aan het andere.
Bedenk ook effe dat het perfecte Sinc filter in de praktijk niet bestaat.
Uiteraard, anders zouden we oneindig moeten wachten tot er eens iets uit de cd spelert komt. Daar zijn look-up tables voor die heel precies zijn.

Overigens zit daar de ripple, aliasing problemen en al wat dies meer zij. Het ideale LDF wordt dan als FIR geimplemteerd (hoeft niet per se) en de tekortkomingen van dat filter bepalen het gedrag van dat bouwblokje.

Groet,
Jacco
Plaats reactie