Flattening the NOS droop - diyAudio
Go Back   Home > Forums > Blogs > abraxalito

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Rate this Entry

Flattening the NOS droop

Posted 14th April 2012 at 03:13 AM by abraxalito
Updated 14th April 2012 at 03:48 AM by abraxalito

Having been a fan of NOS DACs now for something over a year I've decided it was high time for sorting out their most serious drawback - the roll off in the HF. This is an unavoidable result of using a zero-order hold function to reconstruct the original (impulse) samples. Droop exists even with oversampled DACs, its just at its most severe in NOS.

One of the most popular ways to flatten the response is to add on some kind of analog filter with a rising response (to 3.16dB @ 20kHz). A first order shelving filter can't quite cut it though so an LC tank circuit has been employed by a few. This needs to have a moderately high Q to achieve the correction.

I've played around with inductors to achieve this and haven't much liked the resulting sound. Whether this was due to the particular inductors I was using I didn't experiment. Admittedly they were very cheap ones. In general though when I've used high Q circuits in crossovers I haven't much liked the colouration introduced. This I noticed happened when the Q was >0.7 in the audio band.

Now the resonant frequency of an LC tank to undo the droop is above the range of hearing - I found it needs to be close to 30kHz. So perhaps I wasn't hearing the direct result of the peakiness of at least 8dB which is necessarily introduced. But then again I might have been hearing 2nd order effects of raising the level of the imaging products beyond the audio band. Those are jolly undesirable because they are close in - to exacerbate them by 8dB or more seems unwise to me.

Another solution is to implement the correction filter in the digital domain. I've posted up such a filter on the 'Open source DSP XOs' thread. The problem with this approach is that I am using mere 16bit DACs in my designs. Any kind of digital filter produces a result which extends beyond 16bits and hence needs to be requantized to fit within 16bits once again. This means dither, which means added noise. Also there's a loss of dynamic range within the lower audio band to incorporate the 3.2dB of gain at 20kHz. Overall not a great option in my case because of the 16bit DAC bottleneck. I really wanted a solution with all the advantages of dynamic range which an analog filter gives, but without the messy high Q stuff.

Eventually after a lot of head scratching a solution came to me in a moment of clarity - a hybrid (analog-digital) FIR filter. Using DACs as analog-digital multipliers its possible to implement an FIR while doing the accumulation function in analog. The FIR coefficients are programmed in (as currents) to the reference input of the DACs (pin7 on the TDA1545) and each DAC is fed from a tapped delay line.

A quick bit of simulation with LTSpice using the delay lines showed that only a 3 tap filter was required if I was willing to compromise a bit on the flatness of the correction or the HF extreme. Seeing as I don't think I've got any hearing above 17kHz I decided to build a filter which corrected the droop only up to 17kHz and let the response above that fend for itself.

The 3 coefficients then turn out to be 1, -0.15, 0.026. Since my current DAC is 32 paralleled TDA1545s in a differential configuration, I needed to add 4 extra DACs each side for a total of 40. 3 of the extra DACs constitute the -0.15 coefficient (with a one-sample delay) and the final one gives the 0.026, delayed by two samples. More implementation details in a subsequent post - right now I'm going back to listening to the result which, incidentally I'm very pleased with
Views 977 Comments 4 Email Blog Entry
Total Comments 4

Comments

  1. Old Comment
    Richard,

    This seems very clever. Have you measured the frequency response @ 20kHz? I'm curious to know how much of a penalty there actually was at the band edge with the 3-tap filter.
    permalink
    Posted 15th April 2012 at 12:22 AM by Ken Newton Ken Newton is offline
  2. Old Comment
    abraxalito's Avatar
    Thanks Ken - no, no measurements yet. Still too busy loving to listen to it to bother with a plot. But I will do one eventually.

    Its jolly hard to get an accurate measurement of frequency response when there's aliasing nearby. In the end I used Audacity with FFT to estimate the amplitude (this with my inductor and shelving filters).. Still wasn't completely happy I got an accurate result though because there was a significant disagreement compared to the theory!
    permalink
    Posted 15th April 2012 at 01:36 AM by abraxalito abraxalito is online now
  3. Old Comment
    rjm's Avatar
    For 44.1kHz data, 20kHz audio waveform is being sampled at just 2 points per cycle. Perhaps it's better to make the reconstructed output at these frequencies less, rather than more audible.
    permalink
    Posted 20th April 2012 at 11:35 PM by rjm rjm is offline
  4. Old Comment
    abraxalito's Avatar
    Actually, about 2.2 points per cycle. What's the problem with that?
    permalink
    Posted 21st April 2012 at 12:52 AM by abraxalito abraxalito is online now
 
Hide this!Advertise here!

New To Site? Need Help?

All times are GMT. The time now is 10:02 AM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright 1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2