freeDSP - an open source 2-in 4-out digital crossover board

Unfortunately there is no documentation on ADAU1701 assembler language (machine code), SigmaStudio is only way to program the chip

Ah, yes. That, for me, is reason enough not to use that DSP chip until Analog changes their mind.

However, it would be possible to design an algorithm in SS and the update the parameters (like biquads for the filters) to the DSP separately once the parameter location has found from the generated code.

Possible, yes, but a royal hassle - and would have to be totally redone every time you change configuration, number of filters or anything else more complicated than just the parameters.
 
Ah, yes. That, for me, is reason enough not to use that DSP chip until Analog changes their mind.



Possible, yes, but a royal hassle - and would have to be totally redone every time you change configuration, number of filters or anything else more complicated than just the parameters.

Not so much as we have just a one application here - a digital crossover. Put just as many BiQuad blocks there what is allowed. Then for the unused blocks configure the biquads (a0,a1,a2,b1,b2) with a0 = 1, other = 0 to pass the signal unchanged, or if it's parallel biquad block set all coefficient to zero.

Now question is what is (are) the needed configurations. 2 (ins) x (4) outs is fine for basic two-way speaker, and 1x4 for single 4-way one. For ADAU1452 with more processing power a configuration like 2 x 8 might be the only one needed ever.

Now if room correction is used some biquads should be saved for it as well, or maybe two ADAU1701's could be chained with the first one doing the Room EQ and the second would be the crossover. Now maybe the analog ADC on ADAU1701 should also be replaced with external I2S ADC, or with S/PDIF input or ASRC (or both like on DCX). Then we would also need a better clock - maybe a separate module with couple of outputs (using FME connectors). Also better DAC's could be needed. At this point there might be need for several configurations, but then regarding the I2S/analog outputs there could be just a parameter and a switch so that the output config could be changed just changing a parameter without a new software.
 
Now question is what is (are) the needed configurations. 2 (ins) x (4) outs is fine for basic two-way speaker, and 1x4 for single 4-way one. For ADAU1452 with more processing power a configuration like 2 x 8 might be the only one needed ever.

I guess 2x6 is a very common configuration - but you don't really want to do it using a fixed configuration for 2x8, because you end up wasting 25% of the biquads.
 
I guess 2x6 is a very common configuration - but you don't really want to do it using a fixed configuration for 2x8, because you end up wasting 25% of the biquads.

Yes and wasting would be 50% if only four outputs are needed. However, I believe that you can handle the configuration in SS "code". Also you don't really need many biquads for the crossover functionality (LP/HP filters). It's the EQ's (Room EQ, baffle step, etc.) that use most of the capacity of the DSP.
 
If all there's needed is biquads, then I can fit 256 of them into a Spartan-6 LX16 when running at 192 Khz sample rate....

Using the 18 x 18 multiplier and a 48-bit accumulator? ADAU1701 has 28-bit × 28-bit multiplier with 56-bit accumulator. At low frequencies (room correction) even that is not enough because of quntization noise. Multirate processing would be one solution (but not using ADAU1701).
 
reading all the discussions in digital line level , I can conclude that there is a real need for a high-end low cost DSP board. the cost will be driven by the ADAU1452 ($20) and the AKM flagship ADC (~20$). the AKM 4490 flagship DAC is below 5$ per stereo channel.
adding up low noise separate supplies, premium postfilter opamps, and a low jitter clock, we are still around 100$ in parts, not bad for a 120dB+ dynamic range and 300MIPS. the whole design needs to balanced to get anywhere near a realistic S/N. so XLR connectors add up as well. the new AKM ADC will be available Q1/2015.
I prefer AKM as they are pin programmable so no dirty micro needed..
 
Member
Joined 2009
Paid Member
Using the 18 x 18 multiplier and a 48-bit accumulator? ADAU1701 has 28-bit × 28-bit multiplier with 56-bit accumulator. At low frequencies (room correction) even that is not enough because of quntization noise. Multirate processing would be one solution (but not using ADAU1701).

No, 256 Biquads at 192 Khz sample rate when doing 35 x 35 bit multiplication with 70 bit accumulation....

You do also use a smaller FPGA for fewer Biquads, and you can also fit all interfaces in it....

And a small uC for on the fly filter coefficient calculation....
 
Elektor / Sigma Studio

I use modified Elektor boards with Sigma Studio and it works just fine. The input caps are too small (easy fix) and you need some gain on the outputs. I cannot hear or measure anything bad noise - wise or distortion - wise at all.
Generally I prototype on DX2496, then commit the filters to the Elektor board. The Elektor boards sound a little better than the Behringer (I think).
 
No, 256 Biquads at 192 Khz sample rate when doing 35 x 35 bit multiplication with 70 bit accumulation....

You do also use a smaller FPGA for fewer Biquads, and you can also fit all interfaces in it....

And a small uC for on the fly filter coefficient calculation....

Ok, so the multiplication is implemented by dividing it to four 18-bit parts and results are shifted and added. So would a LX9 (with 16 vs. 32 DSP48A1 slices of LX16) then do the 256 biquads @96 kHz sample rate? How about the routing of the biquads then for pre-prosessing stages (parallel stages for parametric EQ), crossover stages and post-prosessing stages for each crossover (lets say four cascaded biquads each / channel, I mean a stereo channel, left or right). We have 128 biquads / channel, and possibly four output channels, a configuration like 64 pre-processing biquads (parallel) + 4 x (8 cascaded xover biquads + 8 parallel post-prosessing biquads) = 128 biquads / ch would be possible. In addition each output should have adjustable delay, and obviously I2S output framing with the word and bit clocks.

So if this works for LX9 we could use this the Mojo v3 board, right?:

https://embeddedmicro.com/mojo-v3.html

Btw, how difficult would it be to implement multirate biquads (mean sample rate conversion down and up, biquads are the same except for clock frequency) on FPGA? For room correction the low frequencies are the most important, and that's where the IIR doesn't work well. Using a sample rate like 600 Hz (96k / 160) for <300 Hz band would help a lot.
 
Last edited:
This LX9 board is cheap:
Mimas Xilinx Spartan 6 FPGA Development Board | Numato Lab

Anyway, ADAU1452 board with converters would be nice, though it wouldn't have to be a such hi-end one as proposed. The chip has digital input (SPDIF) and ASRC so the ADC could be an additional module. As DAC something like PCM1690 (differential output) or PCM1691 (single ended) would be enough for me.
 
Last edited:
Member
Joined 2009
Paid Member
Ok, so the multiplication is implemented by dividing it to four 18-bit parts and results are shifted and added. So would a LX9 (with 16 vs. 32 DSP48A1 slices of LX16) then do the 256 biquads @96 kHz sample rate? How about the routing of the biquads then for pre-prosessing stages (parallel stages for parametric EQ), crossover stages and post-prosessing stages for each crossover (lets say four cascaded biquads each / channel, I mean a stereo channel, left or right). We have 128 biquads / channel, and possibly four output channels, a configuration like 64 pre-processing biquads (parallel) + 4 x (8 cascaded xover biquads + 8 parallel post-prosessing biquads) = 128 biquads / ch would be possible. In addition each output should have adjustable delay, and obviously I2S output framing with the word and bit clocks.

So if this works for LX9 we could use this the Mojo v3 board, right?:

https://embeddedmicro.com/mojo-v3.html

Btw, how difficult would it be to implement multirate biquads (mean sample rate conversion down and up, biquads are the same except for clock frequency) on FPGA? For room correction the low frequencies are the most important, and that's where the IIR doesn't work well. Using a sample rate like 600 Hz (96k / 160) for <300 Hz band would help a lot.

A LX9 would as you say do 256 biquads @ 96 Khz. Another options is the very new Artix-7 -15, the Artix series have even more DSP resources and the DSP48E1 seems to be able to run faster, the Spartan-6 get slow in 35x35 mode, even when pipelined I don't seem to get more than 50 Mhz, which is actually fine for a 45/49 Mhz master clock.... Preliminary pricing have the Artix -15 somewhere between the Spartan-6 -9 and -16....

By designing your logic smart you should be able to distribute the biquad resources as you want.

The low frequency problems with IIR filters is more due to coefficient size, a SigmaDSP seems to be fixed at 4.24 format, while a FPGA could do t.ex. 3.32, making it easy to process low frequencies without having to run at different sample rates....

The Mojo Board is a nice little board, especially with the onboard uC for configuration and control, and could easily be used as the DSP board on top of a board with ADC, DAC's and Power Supply....
 
I have never used Dirty PCBs before, but i know a lot who has and the end result is good. There are even cheaper alternatives which do ENIG finishes and multiple color options in the same price range, but they usually mess up the silkscreen :-/

These do sound interesting, but I am still waiting to receive my kit from them (the freeDSP guys). I want to build and test one before jumping on board for more.

Thanks for posting the link. Is that really $25 for 10 boards? Wow.
 
Received the boards, but unfortunately they had HASL finish instead of ENIG (doh.). Anyways, i'll be doing a board until they manage to fix the error!
 

Attachments

  • IMG_6943.jpg
    IMG_6943.jpg
    591.5 KB · Views: 918
  • IMG_9434.jpg
    IMG_9434.jpg
    403.6 KB · Views: 888
Hi everyone,

I was looking for a way to connect the raspberry to a DSP and I found the freeDSP project. It seems to have all what I need.
Please, can you clarify some points?
1) There is another project very similar to freeDSP called HifiBerry MiniDSP DSP light | Crazy Audio. It seems that freeDSP is at advanced stage of development with respect to HifiBerry MiniDSP. What are the main differences between freeDSP and HifiBerry MiniDSP?
2) What are the differences between the freeDSP board and the universal DSP board Elektor ADAU1701 Universal Audio DSP Board (130232-71) Elektor
3) What are the differences between the freeDSP board and the official analog device board EVAL-ADAU1401AEBZ ADAU1701 | datasheet and product info SigmaDSP® 28/56-Bit Audio Processor with Two ADCs and Four DACs | Analog Devices
3) Is there a way to program the freeDSP board with ADAU1701 directly from the raspberry? Maybe no since the SigmaStudio software run only on Windows.


Thank you in advance for your answers.