We are trying to use the ADAU1463 to perform adaptive noise cancellation using the MFxLMS block in SigmaStudio. We are also using the ADUA1777 for the codec. The noise bandwidth we’re trying to cancel is 100Hz-1kHz. I’m having problems getting the error signal to minimize to zero in the MFxLMS training mode.
The eval board setup is as follows:
1 – The ADAU1777 provides the master clock to the ADAU1463
2 – I2S data flows from the ADAU1777 to the ADAU1463’s SDATA_IN3 port
3 – I2S data is sent to the ADAU1777 from the ADAU1463’s SDATAIO1 port
4 – The I2S BLCK_IN3 and LRCLK_IN3 are set as masters
5 – 192 kHz serial port rate
6 – The sample rate of the ADCs, DACs and core fs of the ADAU1777 are set to 768kHz (to minimize latency)
7 – The sample rate of the ADAU11467 core fs is set to 8kHz (to increase the anc frequency resulution)
Below is the clock control and I2S setup between the two eval boards:
I have the secondary path filter length set to 256. When I start the training, I can hear the generated white noise at the speaker output. But the mean square error output on the ReadBack block usually just bounces around some value which increases or decreasing when I increase or decrease the output of the anti-noise signal (using the volume control slider). The error output never converges to or something near zero. The secondary path coefficients it outputs are all negative values, usually between 0.1 and .001.
Here is a screen shot of my ADAU1463 setup in SigmaStudio:
I’m wondering if my sampling frequencies are set up correctly (I attached the project files I’m using in the zip file below)
Also, how long should the training process usually take? I’ve been running it for a few minutes at different step sizes but not sure if it needs to run longer.
Any help or advice is greatly appreciated!
TK