I have an older design using an ADAU1701, and we'd like to upgrade it to include consumer-grade TOSLINK (optical input), but I don't want to add too much cost. From my reading, this gets complicated, because the master clock for the ADAU won't be synchronized with the external source. So I assume I'll need an ASRC.
I see a few options -
1. Add a chip to convert S/PDIF to I2S as a slave to the source, then use an ASRC to sync the digital data into the ADAU1701. This seems quite complicated, but maybe there's a cheap IC somewhere that does all this?
2. Convert the S/PDIF into analog, which is mux'd or mixed to the ADAU analog input. This probably requires a receiver + DAC, so $$.
3. Switch to an ADAU1442 or similar (adds $5), which handles the digital side nicely, but requires a codec to retain my analog capability, so that's another $2 or so. The extra processing is nice but I don't really need it.
Given that this type of input is so common in inexpensive consumer gear, I'm surprised it's turning out to be so expensive - easily $5 plus the connector in quantity.
Any other options I'm overlooking?
There are SPDIF transceiver ICs (not ADI products though as far as I know, other than ADAV801/3 which are also codecs) that will sync their clocks to incoming SPDIF or their own MCLK if there is no SPDIF present. There are also a few with ASRCs. You could use one of those if you have have your ADAU1701 slave to the resulting I2S stream. You're still looking at a $5 chip though, and you'll need to control it with a MCU.
A lot of the inexpensive consumer gear is using SoC devices that have all of these functions integrated, but they don't necessarily have the DSP capabilities of SigmaDSP, and certainly they don't have the same ease of programming. There are also lots of obsolete AC97 codecs that will have SPDIF support, that could be what inexpensive devices are still using. Most of those parts don't have very good codecs by modern standards.
Thanks very much. The DIR9001 looked interesting, as it can use its own clock, or the source clock, and switch automatically. Then the ADAU1701 would be a slave via I2S. I'm not sure how well-behaved the clock switching is, however, and whether the ADAU1701 will lock up during these transitions. It's only a $2 chip.
Maybe I should see just how bad these old AC97 codecs are..
Do you need -1701 to run continuously? If not, pull it into reset on transitions. The transceiver chips usually have lock flag pin for that purpose.
As you noted if you only need Rx and not Tx, those chips aren't as expensive.
I wouldn't bother with AC97 as they have a lot of other functions you don't need, you'd have to program them (vs. a Rx chip that can run in hardware mode), and the codecs are much worse than -1701. Also check those parts carefully as I think only S/PDIF Tx was mandatory, many of them don't have Rx. I only mentioned them because some consumer products might still use them as cheap SoCs. I believe ADI has made all of theirs obsolete, but a few other vendors still have them in their catalogs.
All we need is RX. The DIR9001 may fit the bill at ~$2, or something similar. It need not be continuously running when switching to S/PDIF; we can afford a second or two for a reset. And I do have a microcontroller on the board.
Still more cost and hassle than I was expecting, but this might be the best solution.
Check this (my own) project WM8804+AD1895+ADA1701 (1Spdifin, 4DAC OUT), fs=96kHz:
or try AD1445 + external DAC ex.PCM5102.