NLMS ANC Implementation (secondary path estimation)
Hello Everyone,
I am starting to experiment with ANCs and I have a board here with the ADAU 1787. I've noticed that it provides only the NLMS block as an adaptive solution, while other series provides better support for this kind of application.
I wonder if the NLMS is enough for starting to develop this kind of technology, as I have read here that this block doesn't fit this application. There's truth in that? I believe a secondary path filter can be inserted externally no?
but as a more pressing issue I would like to implement a secondary path estimator using the NLMS block. Goal is to insert Pink noise and probe using the microphone in front of the driver. This link shows a possible implementation, but I don't understand the FIR filter in front of the NLMS block. Also I have read about a perl code to be able to extract the TAPS from the NLMS block.
Anyway I'm just trying to get out of the starting line here. Learning how to properly handle the secondary path estimation would be already a good jump ahead.
Thanks for any pratical help,
JP.
secondary
anc
software
ADAU1787
Integrated/Special Purpose A/D Converters
path
Audio CODECs
Show More
Hello JP,
Thanks for your very good questions.
In the past we have been limited in how much help we can give for ANC applications to not step on what other large customers have done. However, times are changing but I need to find someone in the company who can help you with some of these more detailed and technical questions.
An ANC application does not require an "ANC" block to do this. Instead, you just need some filters and other standard blocks to implement this. However, the details are obviously super important and how it is done and what you do with the feedback etc.,etc.,etc.
So what are the details of your application? Is it a headphone? Is it a conferencing system? Is it a device like an appliance where you want to cancel a lot of the noise generated by the unit? The details can make a big difference on how it is all done.
Yes, the NLMS block is not the best to use for this.
Do you plan on having a system controller in your system that can control the DSP and the ANC algorithm?
This should get the conversation going.
Thanks!
Dave T
Hello Dave,
Thank you for the quick response.
To keep it short, the idea of my project is to offer an "anti-noise" inside a tube, but not for a given incident pressure, but for the reflected pressure.
Thankfully the separation between this 2 types of pressure doesn't have to be done using the ADAU board, but as a hardware configuration with the microphones.
What I would like to do is simply minimize the Reflected Pressure reading.
So at the NLMS block I would have as signals:
The reference signal being the incident Pressure (pin 0)
The error signal being the reflected pressure (pin 1)
Output goes to DAC.
Given that the NLMS block provided does not have a Secondary path filter, I was thinking on having an FIR filter to be convoluted with the error signal before entering the Error pin of the NLMS block, as a Hope of transforming it into a FXNLMS filter.
I still have some doubts on why the NLMS does not fully cover this approach, is it the lack of Secondary path compensation?
A big challenge of this project is the fact that the performance relies on some possible phase advance given by FIR filters, related to the latency of the full system.
I would be glad to learn work arounds for these issues which uses IIR filters as well!
I'm sorry for the intense reading,
Kind regards,
JP
Hello,
You can use NLMS to estimate the secondary path, see attached Sigma Studio project. You might need to adjust the number of taps based on your situation.
There is no simple way to transform NLMS to FxNLMS. For NLMS the error is an output, but you need an error input the LMS and that is what FxLMS provides. Unfortunately, right now the ADAU1787 does not have FxLMS in the toolbox.
ADAU1787 Sec Path.dspproj
Please log in to reply.