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

1452 ASRC noise

SigmaDSP & SigmaStudio zhou Dec 17, 2014 00:00 8 replies Original on forum ↗
Thread Summary

Thread Summary

The user experiences a 'pop' noise when changing the gain settings of the ADC and SPDIF before connecting the optical output of a DVD to the SPDIF pin on the ADAU1452. The noise disappears after the SPDIF connection is established. A workaround involves muting the ASRC output channels until the SPDIF lock is detected, which can be monitored via the 'S/PDIF Receiver Lock Bit Detector Bit' register (0xF600). This can be achieved without a microcontroller by configuring the ASRC to mute on lock loss.
AI Generated Content
Subscribe
zhou Question
Dec 17, 2014 00:00

Hi,
I use 1452 on my target broad.The testing project of ASRC is attached.When I need the input from ADC ,I set the gain of ASRC to be -100dB and the gain of ADC to be 0dB. When I need the input from ASRC ,I set the gain of ADC to be -100dB and the gain of ASRC to be 0dB. It is OK if I change the settings(change the gain of ADC and SPDIF) after I connect the optical output of DVD to the SPDIF pin. But if I change the settings(change the gain of ADC and SPDIF) before I connect the optical output of DVD to the SPDIF pin, when I change the settings(change the gain of ADC and SPDIF) it generates a noise which sounds like "POP". Do I miss any setting of ASRC or SPDIF? Or it is the bug of 1452?

Best Regards,
Alex

JohnTo Reply
Dec 17, 2014 00:00

Hi Alex,

I was able to verify your noise issue by modifying your supplied project to run on the EVAL-ADAU1452MINIZ board with the serial port 0 inputs/outputs running as an I2S master. In addition to a single pop when changing the level, if I move the control up and down I can hear continuous "zipper" noise. It seems the noise will disappear when making level adjustments after the SPDIF optical cable is connected to the board. After the first insertion, the cable can be removed and reinserted but the level adjustment noise no longer occurs as long as the board is not powered down.

Some of my observations:

Initial insertion of SPDIF optical connector you will hear a larger pop on the output speakers.

Power cycling the board with the USBi connector still attached will not reproduce the issue (once SPDIF has been connected). But, powering cycling the board with USBi connector also removed will reproduce the noise issue.

Disabling the ASRC0 and SPDIF will still cause the noise issue, so I suspect the root cause cannot be related to SPDIF or ASRC inputs. The core would be reading from memory mapped registers. Perhaps when there is no serial clocks connecting from the ASRC block the SPI or I2C transactions from USBi are causing some noise on the chip.

Self-booting the ADAU1452 will still cause the issue. You can connect the USBi to the board after self-boot and recreate the noise.

Workaround:

If your design will need to support "hot-plugging" the SPDIF optical cable into your system, I would suggest muting the outputs from the ASRCIn input channels and then the host microcontroller should monitor the state of the ADAU145x "S/PDIF Receiver Lock Bit Detector Bit". Once that is valid (i.e green below), you can unmute the ASRC channels to eliminate the clicks/pops.

-JT

0ea1178399c6315c0b989221dfc96d5e.png
0ea1178399c6315c0b989221dfc96d5e.png
0ea1178399c6315c0b989221dfc96d5e.png-395x202.png
0ea1178399c6315c0b989221dfc96d5e.png-395x202.png
da17d0f1082d71fceb18ec7b135b933c.png
da17d0f1082d71fceb18ec7b135b933c.png
da17d0f1082d71fceb18ec7b135b933c.png-620x504.png
da17d0f1082d71fceb18ec7b135b933c.png-620x504.png
zhou Reply
Dec 25, 2014 00:00

Hi John,

Thank you for your reply.I have another question: how to read the "S/PDIF Receiver Lock Bit Detector Bit",when I use the microcontroller as the host? Does it send 0xF600 to 1452, and 1452 will send back the value of "S/PDIF Receiver Lock Bit Detector Bit"? Like the level detector?

Best Regards,
Alex

JohnTo Reply
Jan 5, 2015 00:00

Hi Alex,

Happy New Year! I apologize for the delay with the shutdown over the holidays.

Your assumption is correct. Just like reading any parameter data memory variable for an algorithm cell, you can read an on-chip register the same way by making a read request. We can even test the read of any peripheral register within SigmaStudio and capture the activity.

Just a quick review, here is the datasheet timing for a SPI register read sequence on Page 39, Figure 37 in the ADAU145x datasheet:

Using SigmaStudio, we can capture the read of address 0xF600 (SPDIF Receiver Lock Bit Detection Register) by pressing the "Read All Registers" button at the bottom of the SPDIF_RX register window.

After reading all of the registers, we can go to the Capture Window and scroll through the register reads to find the "parameter" name IC1_SPDIF_LOCK_DET, and then drag this into the Sequencer Window.

Executing the Sequencer Window download command, we will also see displayed information from reading of the SPDIF Receiver Lock Bit Detection Register in the Capture Window:

If there is a valid SPDIF stream connected to the eval board optical input, we will see that the SPDIF Input Lock (bit 0) is set to 1, showing a successful lock to the input stream.

Contrary to what is shown in Figure 37, it seems the SigmaStudio USBi's on-board microcontroller is a little more conservative with the non-burst type SPI reads and delays each SPI read by around 4 ms. I also notice for read requests there is a 4 ms stall of the SPI clock between the requested SPI address on MOSI and the reading of the SPI data on MISO. Perhaps this is to ensure all reads are valid for all register requests. But it works! As they say "when in Rome (do as the Romans do)".

(Zoomed out view of reading address 0xF600)

(Closeup view of read request at beginning of SPI transaction)

(Closeup view of read result at end of SPI transaction)

-JT

b903d10d958cf4e8c596ca7cf58ba019.png
b903d10d958cf4e8c596ca7cf58ba019.png
b903d10d958cf4e8c596ca7cf58ba019.png-620x164.png
b903d10d958cf4e8c596ca7cf58ba019.png-620x164.png
5543eebc73f98324f29d4d8f0cd106a0.png
5543eebc73f98324f29d4d8f0cd106a0.png
5543eebc73f98324f29d4d8f0cd106a0.png-301x156.png
5543eebc73f98324f29d4d8f0cd106a0.png-301x156.png
68609f3fb916be3f6293460014a25b0a.png
68609f3fb916be3f6293460014a25b0a.png
68609f3fb916be3f6293460014a25b0a.png-620x100.png
68609f3fb916be3f6293460014a25b0a.png-620x100.png
c5b1aae8f77781ef79740e6cd2f8f07e.png
c5b1aae8f77781ef79740e6cd2f8f07e.png
c5b1aae8f77781ef79740e6cd2f8f07e.png-620x89.png
c5b1aae8f77781ef79740e6cd2f8f07e.png-620x89.png
95b48a8661560b819eba03ffda7c7b6a.png
95b48a8661560b819eba03ffda7c7b6a.png
95b48a8661560b819eba03ffda7c7b6a.png-620x115.png
95b48a8661560b819eba03ffda7c7b6a.png-620x115.png
33f7ac91e3767daa13d1a5801f1c879a.png
33f7ac91e3767daa13d1a5801f1c879a.png
33f7ac91e3767daa13d1a5801f1c879a.png-620x103.png
33f7ac91e3767daa13d1a5801f1c879a.png-620x103.png
3bd25988b5828c4158584f07b8dc5818.png
3bd25988b5828c4158584f07b8dc5818.png
3bd25988b5828c4158584f07b8dc5818.png-620x140.png
3bd25988b5828c4158584f07b8dc5818.png-620x140.png
fio Reply
Mar 26, 2015 00:00

Hi John,

will there be a software solution in the future?

We don't want to integrate a uC just for this "auto" mute feature for hot-plugging spdif.

Maybe another workaround without a microcontroller?

Best regards,

Lasse

fio Reply
Nov 19, 2015 00:00

Hi Dave,

this is not a solution for the first lock after powering up the ADAU.

There is no problem with the mute function (mute ASRC when lock is lost) if at least one lock is done!

After this you can plug-in/out the toslink without any pop noise. You can also reset the ADAU (ADM811), and hotplugging spdif after this without any noise.

Cause it is a one time event there is a solution without a uC.

The signal level of ASRC without at least one lock is undefined, a level detector shows something like this (static):

So, after some thoughts on this problem..

The first lock always ends up in FS signal peak, and I have never seen a (random?) default signal >-3dB.

So I just detect the lock peak signal one time.

Maybe AD is able to implement a defined status of the ARSC, but for now - this is even the same solution for the problem with I2S pop noise on first lock event if you have to use an ASRC.

Lasse

e03a05406fb0059497399974ca5df635.jpg
e03a05406fb0059497399974ca5df635.jpg
e03a05406fb0059497399974ca5df635.jpg-151x434.jpg
e03a05406fb0059497399974ca5df635.jpg-151x434.jpg
e5c9db5a10feb8a44ec86714704ba0a5.jpg
e5c9db5a10feb8a44ec86714704ba0a5.jpg
e5c9db5a10feb8a44ec86714704ba0a5.jpg-620x398.jpg
e5c9db5a10feb8a44ec86714704ba0a5.jpg-620x398.jpg
fio Reply
Nov 19, 2015 00:00

Tested with spdif on EVAL-ADAU1452MINIZ 1.1.

Lasse

DaveThib Reply
Nov 19, 2015 00:00

Hello Lasse,

I ran into this older post and thought I would clarify and give a suggestion for others who may read this post. The SPDIF input will have to go through an ASRC. The ASRC lock status is updated every sample period in this part so you can monitor the lock status to see when lock is lost. The part can also be set to mute the ASRC when lock is lost to prevent unwanted noise when that happens. So this auto-mute function can be done without a microcontroller.

Dave T

DaveThib Reply
Nov 19, 2015 00:00

Hello Lasse,

Was this on a 1452 or was this on a 1442?

Dave T