Need help with tdm to i2s with XMOS avb

If you have a simple question and just want an answer.
Post Reply
tonetechnician
Member
Posts: 14
Joined: Mon Jan 30, 2017 11:09 am

Need help with tdm to i2s with XMOS avb

Post by tonetechnician »

Hello everyone,

I'm doing an avb project. We are using a custom made board with an XMOS and SHARC processor.

I have implemented a mixer designed to take multiple tracks and mix them to two output pins (DAC0 and DAC1) via the i2s master. This implementation works perfectly with 1 stream of up to 32 channels, but when I enable multiple listening sinks to get more streams, the board does not work. Specifically, when I try send audio over 4 streams of 24 channels board drops connection and I get an AVDECC entity model (AEM) command saying DEREGISTER_UNSOLICITED_NOTIFICATION and the device then drops.

Here is my avb_conf.h file.

Image
Image

Now, here is the crux of my question, if my board has been using the i2s bus for audio, how to I use it with the tdm master/is it even necessary for me to use the tdm master?

All I really need to do is pull samples off at the Ethernet MAC, put them into a buffer, mix them to the 2 i2s pins and send them out, so I'm not sure I need the tdm master functionality - although I could be very wrong in saying this.

The board's code has been based off the I2S master example - http://www.xmos.com/download/private/AN ... rc1%29.pdf
I have also followed the TDM master example - http://www.xmos.com/download/private/AN ... rc1%29.pdf

But am failing to get audio to come from the board in either.

Any help or guidance with this would be much appreciated! Thank you!


tonetechnician
Member
Posts: 14
Joined: Mon Jan 30, 2017 11:09 am

Post by tonetechnician »

I've answered my own question. Am writing here in case someone else runs into the same issue.

Both the TDM and i2s master have diagrams describing each process. In these diagram we see that the MAC never speaks directly with the i2s master, which helped confirm that the i2s master bus is a channel between the XMOS processor and the DAC's on the board. Thus TDM is only needed if you plan to send multiple channel streams on a single wire to another processor, otherwise we stick with i2s.

The reason I was not able to send multiple streams was the channel count was too high for my bandwidth, so the board would just drop out. After going to a smaller stream channel configuration I am receiving audio I as I originally suspected.

Best,
Post Reply