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

Here it is, a special edition for TDA1540 and TDA1541:

An externally hosted image should be here but it was not working when we last tested it.


It has some major differences due to different format and requirements of the DAC itself:

* 8x interpolation (up to 384 kHz). The filter was specifically resigned for a lower interpolation rate.
* Synchronous CLK clock. It's either 5.6448 MHz or 6.144 MHz depending on the input (whether it's 44.1 kHz or 48 kHz based).
* Synchronous LE signal acting as a strobe for one CLK period.
* Offset binary format.
* Data is clocked in on the falling edge of the CLK.
* Ability to choose between 14 bits (TDA1540) and 16 bits (TDA1541).
* Required MCLK of 11.2896 MHz, 12.288 MHz, 22.5792 MHz, 24.576 MHz, 33.8688 MHz, 36.864 MHz, 45.1584 MHz or 49.152 MHz.
* Maximum stream up to 384 kHz.
 
Should fit inside a CD104 and replace the SAA7030.

It will ;) I have a small addon-like PCB to generate MCLK from LRCK using CS2300-03 from Cirrus Logic (Clock Multiplier / Jitter Reduction – Generates a Low Jitter 6 - 75 MHz Clock from a Jittery 23 kHz to 30 MHz Clock Source) since most CDs cannot provide synced MCLK signal.

Anyway, I have designed a small PCB for AD1864 / AD1865 for this filter:

An externally hosted image should be here but it was not working when we last tested it.


An externally hosted image should be here but it was not working when we last tested it.


An externally hosted image should be here but it was not working when we last tested it.


It's basically all in one with AC rectifiers and power on delay with relays.

Keep in mind that AD1865 here is running at 16x 44.1 kHz and it is working quite well:

1 kHz @ 0 dBFS:

An externally hosted image should be here but it was not working when we last tested it.


1 kHz @ -60 dBFS:

An externally hosted image should be here but it was not working when we last tested it.


I have some minor fixes left within the description of the filter and after that I will create a few more DACs for it.
 
I guess it's way off your project's scope, but I can't help but wonder if your fpga (with more headers) could receive 2 I2S streams from a miniDSP (bass/treble x left/right), upsample to 384/24, and then split the output into 4 I2S (or spdif) to feed 4 mono DAC ICs. Possible? It doesn't look like it could... just a dream...
 
Last edited:
Member
Joined 2017
Paid Member
I would say it's not a dream from my experience. XC6SLX09 doesn't have enough resource to implement several x16 FIR filters because it is an entry device. You can use large FPGA at a reasonable cost. The problem is provably assembly cost. A large-scale device usually uses BGA which is completely impossible to do hand soldering. X-ray inspection is also needed to avoid cold joint. But as long as it doesn't have an analog section like PLL which needs some adjustment, it's not difficult to design and assemble such PCB.

My current system is almost the same as you mentioned. My transport with SD card slots does pre-digital processing(SSRC) and outputs 8 spdifs to feed 8 power amplifiers which have DAC with a digital crossover and x8 OS FIR filter. Everything is done by FPGA. The transport is XC7A100T(BGA) which is larger than XC6SLX09 at least 10 times. The amplifier is XC6SLX09. It doesn't need a large one because each amplifier has a DAC where it means you have enough resource to do a digital process. Besides BGA soldering, no "outsourcing" is needed, as long as you can design PCB. My system almost fixed 2 or 3 years ago. It works well now.
 
Yea, it is a bit too much. This project is already running at the edge like xx3stksm said. It is supposed to be stereo only digital interpolation filter.

XC7A100T is a powerful FPGA. I believe saying that it is 10 times more powerful than XC6SLX9 is underestimation :) It has 240 DSP48E1 slices while XC6SLX9 has only 16 DSP48A1. The difference between DSP48E1 and DS48A1 is huge enough not to mention the amount of them available within Artix-7.

I have that Artix-7 as well, so perhaps one day I will use it for something much bigger ;)
 
Second revision of my PCB for AD1864 / AD1865 is done:

An externally hosted image should be here but it was not working when we last tested it.


An externally hosted image should be here but it was not working when we last tested it.


The digital filter is powered by the DAC itself, so basically only one transformer is required for everything :)

Also, a bit of TDPF dithering can cancel out quanitization errors on a -96 dBFS signal for 18 bit DAC (AD1865):

vaXZcyt.png
 
Hey, if you want a digital filter I can always add a PCB for AD1865 or AD1862 for 20 EUR. I do not assemble DACs myself, except for the digital filter of course which is manually pre-assembled.

Following DAC was finished yesterday and that's with AD1862:

An externally hosted image should be here but it was not working when we last tested it.


An externally hosted image should be here but it was not working when we last tested it.


An externally hosted image should be here but it was not working when we last tested it.


Both AD1864/AD1865 and AD1862 DACs do work with the same digital filter. I'm currently developing a DAC for TDA1541(A), but it will use the other digital filter which uses different interpolation ratio as well as different format.
 
Everything is within that one PCB :)

That is including AC rectifiers, so you just hook up a transformer and you are good to go. Also, the output is delayed using a NE555 and a pair of relays, so it doesn't have that pop on startup.

Even the digital filter is powered by the DAC, so all you need is a transformer and some sort of attenuator on the output (pot, R-2R laddder or other) and you are good to go. I'm designing minimalistic DACs, so they aren't very complicated nowadays.
 
Hello cspirou

In my opinion it is much better than PMD100 or PMD200, even though they are really good on their own (one of the best actually), but you would have to hear it yourself nonetheless :)

Thanks! Main reason I ask is because I have a DAC with a blown PMD200 and replacement chips are very rare and cost a fortune. So this project is extremely interesting to me.
 
It's for an Assemblage 3.1 that has been through quite an adventure. It has 4 x PCM1704 chips. Good news is that the digital filter board is separate so I can remove it entirely if I don't get the current PMD200 to work.

Plan was to use some modules from Ian to get it working again. The main issue is that his I2S -> PCM solution is NOS, which is enough to get it working again but I would rather have something closer to the original PMD200.