16x Digital interpolation filter - drive PCM56, PCM58, AD1865 and so on up to 768 kHz

Sorry, build still not completed yet, but I promise I will report as soon as I have the FIR in operation.

About the DF1704 / PMD100 etc. I reported elsewhere on the forum, but once I have my build finished I will compare with the FIR!
 
I mean, what you can easily do with an FPGA is to use fixed-point numbers with whatever wordlength is required. So for a FIR, you can round the coefficients to some finite wordlength. That will result in frequency response errors (and only frequency response errors), but you can keep those as small as you like by using long enough coefficients. The multiplications and summation can then be done in full precision - if you need 71 bits for the sum, you use 71 bits, no need to round anything to some standard wordlength.

Dithering and rounding the result to the DAC wordlength will add some quantization noise, but that's inevitable.
 
Sorry, build still not completed yet, but I promise I will report as soon as I have the FIR in operation.

About the DF1704 / PMD100 etc. I reported elsewhere on the forum, but once I have my build finished I will compare with the FIR!
Hi jpk73, how's the performance of your FIR with AD1862 compared with others? I am using the same DAC and is looking for a good way to listen to hi res music.
 
I completed my DAC with AD1862 DAC and it sounds great. I attach some scope shots taken at the analog out from Audacity generated files with both filter settings at the 16x filter board. I don't understand what's wrong with the 60kHz sine since the 80kHz looks fine. Also why do sawtooth and square waves look so damaged? On my other DACs the signals look much better, but I am still not 100% sure about Audacity. Music playback looks good on the scope.

EDIT: scope shots removed
 
Last edited:
@jpk73 By the way, since I got notified by response within this thread and I am sure someone will ask about your scope shots. If I recall correctly the internal coefficients of the filter attenuate the signal by 1 dB. This is enough for a sine, but not enough for example square wave (which consists of infinite amount of sine waves). In basic mathematical principle for square wave we need 3 dB of attenuation compared to sine wave. So to avoid overshoots you need to attenuate the input signal a bit more (by extra 1 or 2 dB, depending on the signal itself). This is perfectly normal and expected behavior. I chose only 1 dB of internal attenuation based on bunch of tests I did back then which led me to conclusion that most music signals will not create any overshoots after interpolation.
 
Last edited:
OK, I removed the scope shots and took new ones with attenuation:
 

Attachments

  • linear_1k_sine.png
    linear_1k_sine.png
    32.1 KB · Views: 37
  • linear_1k_square.png
    linear_1k_square.png
    32.9 KB · Views: 33
  • linear_1k_sawtooth.png
    linear_1k_sawtooth.png
    33.4 KB · Views: 35
  • linear_80k_sine.png
    linear_80k_sine.png
    30.8 KB · Views: 34
  • minimum_1k_sine.png
    minimum_1k_sine.png
    32.1 KB · Views: 32
  • minimum_1k_square.png
    minimum_1k_square.png
    33.3 KB · Views: 36
  • minimum_1k_sawtooth.png
    minimum_1k_sawtooth.png
    34.6 KB · Views: 35
  • minimum_80k_sine.png
    minimum_80k_sine.png
    30.8 KB · Views: 33
Last edited:
  • Like
Reactions: 3lite