Adaptive FIR Fx-NLMS, which evaluation board?
Dear Community,
I would like to implement an adaptive FIR filter with 1024 coefficients, to be updated by a normalized, filtered-X LMS algorithm (Fx-NLMS) at a sample rate of 2 kHz. For this, I am looking for a DSP evaluation board which in addition also should have two analog line-in and one line-out. Will the ADAU1452 be a good choice or are there better ones?
(The graphical programming of the SigmaDSPs sounds attractive, else if the Matlab code of the algorithm now used for off-line simulations could be transfered so the DSP understands it and then downloaded to the DSP board memory that could be an alternative, if C/C++ programming could be avoided it would be nice)
With best regards
Karl-Ola
Audio Signal Processors
adau1452
SigmaDSP Audio Processors
HI Karl
The SigmaDSP is a good affordable option. The 145x core (and 144x) can certainly do what you need. At this time and for the near future, the only way to program this is using assembly code (either by ADI or qualified 3rd parties). Porting Matlab code to assembly is not an option. At the moment, there is a NLMS adaptive filter built into SigmaStudio however not an FX-NLMS ( don't remember the differences but my guess is that they are not much).
ADI has many other DSP, such as our Sharc family of DSPs, that are also supported by SigmaStudio. Consider this another option.The Sharc (and Blackfin) do have a supported C compiler.
Depending on the cost sensitivity of your application you can choose what better suits you.
Can you comment on your application? What is it and for what market?
Thank you
Miguel
Hi Miguel,
Thanks for answering.
The application is to create a zone of silence around the operator’s head in a truck cabin. The source of sound is the truck diesel engine and the acceleration of which is picked up and is the input to the FIR filter. The output from the filter is the input to a loudspeaker close to the operator’s head radiating the anti-sound. A microphone in the same zone picks up the error signal which is one input to the LMS algorithm. The other is the reference signal, the diesel engine acceleration. The LMS algorithm updates the FIR filter coefficients at a sample-to-sample basis, in this case at 2 kHz.
The already available NLMS block is one good step ahead. The difference between LMS and the filtered-x LMS algorithm is that in the latter case the reference signal x(n) is filtered, see block Ŝ(z) to the left of LMS in the figure below, before it enters the LMS algorithm,. The impulse-response of Ŝ(z) (which is a copy of the so-called secondary path) is estimated once for all off-line and can be realized by a fixed coefficient FIR filter of length 20. So the question is: Is it possible to insert the extra block representing the fixed FIR filter of length 20?
Best regards
Karl-Ola
Hello again,
Did I get it correctly, for SigmaDSPs assembler coding is needed, for SHARC and Blackfin on the contrary there are C –compilers available, right?
If it turns out that using SigmaDSPs like the 1452 for realizing Fx-LMS will be too complicated because of the assembler –programming, would the BlackfinBF592 evaluation board be a good choice? If so, is some ready-made code available? Many questions…
Best regards
Karl-Ola
HI Karl-Ola:
I put in your request to add the Filtered X NLMS algorithm into our library. It will probably take a couple of months before it makes it to the general SigmaStudio release. Blackfin is a fixed point DSP (there is a 32 bit version and a 16 bit version). They are both good candidates for doing what you need. Most audio customers that have the patience to do some DSP themselves and want the best of both worlds (Graphical Programming AND C compilers) use Sharc, in many cases because of it's floating point nature.
There are pros and cons between Blackfin, Sharcs and SigmaDSPs and all fit a different market. For example, the Blackin is more used as a microcontroller with very good DSP capabilities. The SigmaDSP was originally specifically designed for audio in cost constrained applications (although there are many versions of it now a days). Sharc is the only Floating point DSP and covers many different markets, including industrial, audio and others.
Both Blackfin and Sharc have C compiler and other tools. There is a SigmaStudio version written for the Sharc.
The SigmaDSP can be programmed with SigmaStudio only. There are 2 versions of SigmaDSP (fixed point), one with a 5.23 format (28 bits) and the 145x with an 8.24 fixed point format ( - 32 bits)
Hope this helps.
Miguel
Your request for adding Fx-NLMS to SigmaStudio is appreciated, thanks.
Best regards
Karl-Ola
Hi Miguel,
I know that Filtered X LMS block has been added for 1452. Would it be possible to add that block for ADAU 144x series at any point?
Kind Regards
Karol
Hi Miguel,
Great to come across your reply above. I want to know if there is any way for SHARC board, like ADSP 21469, to run LMS when designing the system in SigmaStudio. Unfortunately, I cannot find modules like "FIR - adaptive" or "LMS" in SigmaStudio for SHARC. Could you give me some suggestions on how to implement the FIR filtering with adaptive LMS algorithm in it?
Thanks a lot!
Regards,
Guo
Please log in to reply.