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

ADAU1401 very low signal to noise ratio

SigmaDSP & SigmaStudio Tuntori Jan 21, 2022 00:00 6 replies Original on forum ↗
Subscribe
Tuntori Question
Jan 21, 2022 00:00

Hello,
I have a noise problem with a development board that uses ADAU1401. It's made by a company called MIDIWORX and is almost identical to those mini dsp boards from china that cost about 20$. It looks like this:

When I'm using the ADC inputs there is very strong hiss that drowns the music so much that it's unlistenable unless the input is cranked way too high to mask it. I tried the following things:
- Uploaded an empty program that does not use the ADCs - no noise at all.
- Uploaded a program that generates a tone using an internal oscillator and routed it to the output (again, not using the ADCs) - the tone is very clean and there's no noise at all.
I also made a simple input level detector program to see at what db level the noise is:

It turns out it is at about -35 to -37 db. This is WAY too high noise floor!

I have 2 boards, both do the same thing.

This is the board schematic:

It follows the datasheet very closely. There's just a minor difference at the inputs - the cap is 22 instead of 47uF, the resistor is also different and there is some additional filtering added. But I don't think that's the cause of it.

I'm very new to these DSPs. Is there something I'm missing? Or maybe it's just the board is routed badly or this company is selling defective ADAU chips?

Thanks in advance. Any help would be appreciated.

Audio Signal Processors

adau1401

noise

SigmaDSP Audio Processors

adau1701

board.jpg
board.jpg
snr-detector.png
snr-detector.png
unknown.png-320x50.png
unknown.png-320x50.png
KJBob Reply
Jan 24, 2022 00:00

Hello Tuntori,

I like your implementation of a level measurement which uses only a DAC output -- Perhaps your setup doesn't include a USBi so you can't perform a more direct measurement as shown below. This was done on a ADAU1701MINIZ eval board:

The top level meter shows a result similar to yours. The bottom one with the DC Block Filter included indicates a much improved result. This is because all the level detecting blocks in SigmaStudio (including the one you're using) respond down to DC, and many audio ADCs have a small DC offset. This DC doesn't degrade the audio, yet results in your rather scary no-signal level reading. So always include a DC Block filter in a project that involves any dynamic blocks including level meters, envelope followers, compressors, etc. You can repeat your experiment with a DC Block Filter added, to see if it helps.

Of course this doesn't explain the hiss you're getting. It will take some experimentation to determine its cause:

Since you have to increase the audio input to drown out the noise, it could be that your signal input is just too small compared to full-scale. The ADAU1701's ADCs are current-sensing, with 100 uA RMS full scale. This works out to 2 V RMS with the standard 18 K ohm input resistor -- that's quite a hefty signal. It will work reasonably well with 1/10 of that (you'll lose 20 dB of S/N but the hiss still won't be objectionable). Much less than that, however, would be a problem. What audio source are you using?

Like you I don't think the board's input components are responsible for the noise, as they are relatively close to ADI's standard.

Are you running a sample rate other than 48K? If so, there's two adjustments you need to make in SigmaStudio, and likely you only did one of them. See this post:

https://ez.analog.com/dsp/sigmadsp/w/documents/5214/faq-how-do-i-change-the-sample-rate-of-my-sigmastudio-system

Please try to locate the noise, and feel free to report the results.

Best regards,

Bob

DC-block-revised-sch.png
DC-block-revised-sch.png
MWboard.png
MWboard.png
Tuntori Reply
Jan 24, 2022 00:00

Hello Bob. Thank you for your really detailed answer.

I made the level metering like that because I'm still very new to this and didn't know those meters existed. I was actually trying to use an onboard led instead of tones but couldn't make the GPIOs work at first.

I repeated your experiment with nothing connected to the input and indeed there's a DC offset but removing it brings very little improvement:

It's nowhere near your results. I'm going to use a Bluetooth module as an audio source. That module can drive 32-ohm headphones so I believe it will be adequate. I'm currently testing it with my phone's headphone output. I played some music and measured it with the meter above. At max volume, it averages at about -10db. At a comfortable 50% volume, it is ~40 to -45 dB, which sounds horrible with that -53dB noise floor as you can imagine. The problem is that my volume control is going to be in the streaming device - before the DSP - and I can't change that.

KJBob said:
Are you running a sample rate other than 48K?

I haven't changed anything regarding the sample rate. Now since you told me that, I tried to change it to various sample rates and then back to 48K but nothing changed.

Unfortunately, I don't have a proper scope, only a DSO138 which is a toy but is sometimes useful for low-frequency signals. I measured right at the ADC input (on the right side of R16/R18):

Note that this scope is so bad that it shows about 3x less voltage than it actually is, so the Vpp is more like 50-60mV. On the other side of the resistors, the noise is less. It looks like the noise comes from the ADCs. I also measured other pins that I think are related to the ADCs like ADC_RES, FILTA, FILTD, but they are all noise-free.

To exclude power supply problems, I tried different supplies, including a battery but the result is the same.

It is strange that I have this problem on 2 boards. I can't see any other reason than faulty chips. Maybe this manufacturer is really selling defective/rejected chips.

Best Regards,

Diyan

pastedimage1643065473822v1.png
pastedimage1643065473822v1.png
pastedimage1643067585691v3.png
pastedimage1643067585691v3.png
KJBob Reply
Jan 25, 2022 00:00

Hello Diyan,

Well, it looks like you have performed all the right troubleshooting ideas. Perhaps you need to return those boards (if possible) and try one from another manufacturer.

Out of curiosity I scoped the 1701's ADC input on my board and found about 12 mV p-p noise (see below). So we might see some noise at these pins, at least with ordinary probe ground leads (which tend to pick up noise).

BTW -- the GPIOs default to inputs, so to light an LED you'll need to go to the HW Configuration/Register Settings tab and change the desired GPIO for output.

Best regards,

Bob

ADC.jpg
ADC.jpg
DaveThib Reply
Jan 26, 2022 00:00

Hello Diyan,

How are you powering up this board?

Describe your power and ground setup.

Dave T

Tuntori Reply
Jan 26, 2022 00:00

Hello Bob and Dave,

Power supply issues/ground loops were my first guess so I tried the absolute minimum - the board is powered from a battery and nothing else connected except headphones at the output and it still produces the noise.

Thankfully I just discovered the issue. It turns out the board was shipped with an incorrect PLL configuration. It was set to 384xFs which if I understand correctly is good for 32 kHz sample rate, since the crystal is 12.288 MHz. I changed it to 256 and the noise is gone. I don't know why I didn't try that earlier. Thanks for the tips.

Best Regards,

Diyan

KJBob Reply
Jan 26, 2022 00:00

Wonderful! Now let the fun begin!

You’re correct that this PLL config effects a 32 K sample rate. It also underclocks the entire chip, including its ADCs. The ADAU1701 Data sheet p. 20 describes how rhe ADCs work by sensing current over time — thus when underclocking, the 18K resistor from ADCRES (pin 3) to gnd must increase proportionally. Evidently the ADCs don’t work well otherwise. Good catch!