ΣSigmaStudio Ask AI Русский Log in

ADAU1701 Noise removal algorithm

SigmaDSP & SigmaStudio Dario Mar 18, 2020 00:00 11 replies Original on forum ↗
Thread Summary

Thread Summary

The user inquired about noise reduction tools for the ADAU1701, noting the lack of a dedicated NR block in the ADI Algorithms table. The support engineer explained that the ADAU1701 has limited MIPS (1024 instructions per sample) and suggested a multi-band noise gate approach, sharing a prototype FullFsNR block and a sample project. The user encountered an error due to exceeding the MIPS limit and successfully reduced the program size to fit within the available instructions.
AI Generated Content
Subscribe
Dario Question
Mar 18, 2020 00:00

Hello,

where I can find a Noise removal or Noise reduction tool for ADAU1701?
I cannot find any noise tool in the ADI Algorithms table or in any other place..

Thanks

Audio Signal Processors

SigmaDSP Audio Processors

adau1701

pastedimage1584525777680v1.png
pastedimage1584525777680v1.png
pastedimage1584525815416v2.png
pastedimage1584525815416v2.png
KJBob Reply
Mar 18, 2020 00:00

Hello Dario,

My comments below assume you're speaking of processing an incoming signal to reduce the audible effect of accompanying noise. Noise reduction is a difficult task which generally needs more computing power than a ADAU1701 provides. Thus, there's no general-purpose NR block for this chip. Yet for limited applications such as speech processing, you can try some NR techniques that can fit into a -1701 and which you may find useful. The basic idea is to split the incoming audio into frequency bands with multiple filters, apply a noise gate to each band, then add the bands back together. When a frequency band measures sufficiently high, it's assumed to be useful signal so it passes through. Below threshold, it's considered noise, and so blocked. The ADAU1701 has enough capacity to run 12 -- 16 channels this way, thus can cover the speech frequency range in 1/3 octave bands. Shown below is a portion of such a design, and I attached a sample project below:

Interestingly, ADI did release a prototype NR block using this principle -- it never made it into SigmaStudio, but used to be available as an add-in. I had evaluated its performance here. The block itself has disappeared, likely lost in this forum's transition from Jive Software to Telligent. Perhaps someone at ADI could resurrect it for you, if you have speech processing NR in mind.

I had also experimented with stereo music NR using the much-more powerful ADAU1452 -- see, Huge Project to Fill Up a ADAU1452 And Make it Do Something

Best regards,

Bob

Voice-Track-16-filter_fits_1701.zip

Voice-track-alg.png
Voice-track-alg.png
Dario Reply
Mar 23, 2020 00:00

Dear Bob,

thanks so much for your quick answer and sorry for my late reply.
I'will try as per your suggestion, I hope to be able to do that cause I'm at the beginning with SS.

Basically my goal is removing the noise in transmission after ADC and AM modulation.

about prototype NR block , it never made it into SS, which means is no longer available? Or is it possible download the add-in somewhere?

thank you

Dario

KJBob Reply
Mar 23, 2020 00:00

Hi Dario,

Modulation and demodulation projects are fun in SigmaStudio. Pretty much anything you know in analog works here as well. I found the prototype FullFsNR algorithm in my archives, it's attached below. Unzip and copy it to the same directory that SigmaStudio is in. Then open the sample project also attached below -- if it doesn't load properly, you may need to go to Tools ==> Add In Manager to make the FullFsNR block active. Experiment with its settings to see what they do, sorry there's no documentation although the settings are similar to those in other dynamic processing blocks.

Best regards,

Bob

Sample project:

Voice-noise-reduction_ADI.zip

The add-in block FullFsNR:

6406.FullFSNR.zip

Dario Reply
Mar 24, 2020 00:00

Hi Bob,

OK, I try and I'll let you know.

I really appreciate your help,

My best

Dario

KJBob Reply
Mar 24, 2020 00:00

Thanks, Dario, hope it works well for you. Also I'd like to thank DaveThib, who went looking for the algorithm upon seeing our conversation, and who, once finding out I still had it, allowed me to share it.

Best regards,

Bob

Dario Reply
Mar 27, 2020 00:00

Hello Bob,

by using the add-in block FullFsNR something goes wrong...

do you recognize this error?

thank you

Dario

pastedimage1585321046153v1.png
pastedimage1585321046153v1.png
DaveThib Reply
Mar 27, 2020 00:00

Hello Dario,

Your program is too large. You have run out of instructions. You can see the amount you are using by looking at the file that is in the files SigmaStudio creates. In your projct folder there will be a folder named IC1_"your project name". In that folder is a folder called "net_list_out2". In that folder you will find a file called "compiler_Output.txt". In that file you will find your instruction usage.

Now in the error box it does show that you are using 1040 instructions and this part has a max of 1024 but there is some overhead used for housekeeping so you should keep it down below 1010-ish. Is usually good.

So you need to reduce your program by about 30 instructions. Send me your program and I can look at it to see where you can be more efficient. 30 fewer instructions may be able to be achieved.

Dave T

KJBob Reply
Mar 27, 2020 00:00

Hi Dario,

By "Run out of MIPS," the error is saying that the ADAU1701 doesn't have enough room for your entire program. You could just remove some blocks until it fits, yet a little background info might help.

The ADAU1701 converts incoming audio to digital numbers at the rate of 48,000 samples per second (assuming we're using this most common default sample rate). This works out to a time of (1/48000 = 20.833 uS) per sample, during which the chip must execute your entire schematic once. The speed of the chip's processing core determines how many instructions we can run in that time, therefore the size of the schematic we can run.

The ADAU1701 operates at 49.152 MIPS (million instructions per second). Multiplying this rate by the sample time yields 1024 instructions per sample. The actual number of instructions available to use is actually a bit lower due to overhead; it's generally at least 1010. The error message you received says that the present schematic needs 1040 instructions -- thus it's too large for the ADAU1701 to run. So in effect, we need to put your schematic on a diet. At 625 instructions, the FullFsNR block is by far the single largest one in your program -- yet it still leaves you 1010 - 625 = 385 instructions for the rest of your schematic. Often there's more than one way to do something in SigmaDSP, so with some thought it's usually possible to make things fit.

First, you need some tools. Unfortunately, the Sigma100 compiler used by the AD1940 and the ADAU170x doesn't directly report MIPS usage unless you go over -- yet it does provide this information in a text file it generates each time you Link-Compile-Download. This post describes how.

Next, it helps to have a general idea of how many MIPS each of the various blocks use. You'll gain this knowledge with experience, yet it may help to have a list of blocks with their instruction usage. Take a look here: ADAU1701 Instruction Usage Table.

Armed with these tools you can attack your excessive-MIPS problem. Perhaps begin by removing non-essential features, then figure more compact ways to re-introduce them one at a time. There's a certain fun in cramming as much functionality as will fit into a ADAU1701 -- and you can become an expert.

Best regards,

Bob

Dario Reply
Mar 30, 2020 00:00

Dear Dave,

I perfectly understand and I found the .txt you talk about. Actually I have exceded the number of instructions used (out of a possible 1024 ).

I figure out how reduce the istruction on my own, for a moment, just to understand if the NR block works fine for my needs.

I'd like sharing with you guys my project, but it's about a project owned by my company so I cannot divulge the content...

Many thanks for your help.

Dario

Dario Reply
Mar 30, 2020 00:00

Dear Bob,

everything's crystal clear.

This is my new situation after "the diet". I' going to run the program on my board soon to understand if the NR block works for my purpose.

thank you very much.

Dario

pastedimage1585554015541v1.png
pastedimage1585554015541v1.png
DaveThib Reply
Mar 30, 2020 00:00

Hello Dario,

That was a good diet plan! Worked well, will it help me? My doctor wants me to lose some weight! LOL

We work with confidential customer data on a daily basis and we understand the issues. You can send the schematic to me in a private message if you like. Otherwise, we could go through the details of a mutual NDA. I looked up your company domain and I do not think we have one in place at the moment. So it is your choice.

Dave T