AVB 32 in, 32 out to TDM design support

First time on the site? Say hello here!
New User
Posts: 3
Joined: Mon Nov 25, 2019 11:10 am

AVB 32 in, 32 out to TDM design support

Postby raimonds » Mon Nov 25, 2019 1:50 pm

Dear Colleagues,

I would like to add the AVB interface with 32 in 32 out channels to my DSP projects.
I am strong in FPGA, Analog Device DSPs, Matlab but the xTime Composer environment is very new for me.
What about a design support to create AVB interface with 32/32 channels from AVB side
and, possibly, two TDM "wires" with 16 channels each of inputs and two TDM "wires" with 16 channels of outputs as I2S side?

Thank you,
Active Member
Posts: 32
Joined: Mon Sep 05, 2016 4:20 pm

Postby lorenzochiesi » Mon Nov 25, 2019 3:02 pm

Forwardfing PM:

Hi lorenzochiesi,
How are your success in 32/32 TDM project mentioned here viewtopic.php?t=4835 ?


Hi Raimonds,

The post you are linking was about 32/32 I/O channel on I2S interface.
I2S is a special definition (better specified) of a more general TMD interface with 2 only channel serial communication lane.
Thus my question was about how to achieve use 16/16 serial I/O lane each with 2 channel.

Looking to your questions seems wou want the "opposite":
16 channel transmitted over 2 "wire", thus that's a 2 x 16ch TDM interface not I2S.

Some facts from my experience:

- Both USB design and AVB design could work quite easily with 32in / 32out

- Hardware pin limitation of XMOS IC (only few special 1bit port work for I2S/TDM I/O) makes difficult to have more than 8 serial wire,
thus if you need I2s interface (only 2 ch per serial lane) you can't achieve more than 16 total IO channel (easily).
To overcome this limitation quite complex coding is needed to use ohter pin available trough 4bit port as I/O.
Probably in te year some code was make available but at the I overcomed this issue with small fpga converting 4/4 lane 8 ch TDM to 16/16 lane I2S.

- I don't suggest in any design to deal with 16ch TDM if not strictly necessary. 8 channel TDM is usually fine from IO perspective, much more standard and much less headhake on signal routing (@48kHz).

I suggest you start from XMOS MC Audio v2 reference board to explore your application.
https://www.xmos.com/download/xCORE-200 ... l(1.2).pdf

I succesfully achieve 32in 32out AVB on that board with 4 / 4 lane 8ch TDM interfaces.

About XTimeComposer:
If you are experienced on FPGA and DSP world don't worry....
Read carefully all programming documentation by XMOS, make some test with the board and you will probably love that tool and XMOS platform!
No anymore interrupt headhake as in DSP :-) ...small task running on dedicated or shared core will solve all your issue.

Hope this help,
New User
Posts: 3
Joined: Mon Nov 25, 2019 11:10 am

Postby raimonds » Tue Nov 26, 2019 8:36 am

Thank you, Lorenzo, for detailed description!

Yes, I did find the example "AN00203_-Gigabit-Ethernet-AVB-endpoint-example-using-TDM-master_1.0.3rc1" which looks like work on my XK-AUDIO-216-MC-AB board.
But what about to "squeeze" 16 channels into one serial line. I am successfully using that to communicate between Analog Device DSP and FPGA.
It would be nice to keep such high density - 4 serial lines instead of 8 serial lines.
If I understand correctly, the one core of the controller is responsible to process 8 channels and to send/receive them by use of one serial line in the mentioned example.
Is it possible to multiplex the outputs/inputs of the work of two cores into one stream of 16 channels?
Or even all 32 channels into one serial line? 49.152 MHz bit clock is below 60 MHz limit of input/output ports ...
Thank you,
Active Member
Posts: 32
Joined: Mon Sep 05, 2016 4:20 pm

Postby lorenzochiesi » Tue Nov 26, 2019 12:38 pm

Hi raimonds,
Maybe is possible but I'll not advise for 2 reason:
- In my experience push XMOS core (at least the one dealing with TDM16) near limit could result in fuzzy result not easy to debug
- TDM16 @48kHz is very delicate signal to deal on PCB...I'll not suggest unless is absolutely necessary
You really need this? Good luck!

User avatar
Respected Member
Posts: 479
Joined: Thu Nov 26, 2015 11:47 pm

Postby akp » Tue Nov 26, 2019 5:50 pm

I'd advise not to use more than 24.576 MHz for the bit clock. It should work to get TDM 16 at 48 kHz. But you will have to be careful. You could get marginal results so you will want to be familiar with the io port clocking documents on the xmos web site so you can compute timing margin (setup/hold) and also make use of things like the port sample delay e.g. if necessary.
New User
Posts: 3
Joined: Mon Nov 25, 2019 11:10 am

Postby raimonds » Wed Nov 27, 2019 12:10 pm

Thanks Lorenzo, thanks akp,

I am using TDM16@48 kHz without any problems.
Even TDM16@96 kHz is working with slight adjustment of MCLK phase with ADAU dsp which is not officially supporting such high bit clock : )
But ok, I will stay on use of TDM8. Just will have to use 8 data lines.
New User
Posts: 2
Joined: Wed Dec 11, 2019 5:44 pm

Postby SVStech » Wed Dec 11, 2019 5:55 pm

Hi raimonds,

I am also working to get 32 I/O working on the MC audio reference board, but I have a few questions:
1. Is there an equivalent USB version of AN00203 that works via USB? If so, what audio drivers are needed for ASIO compatibility?
2. I'm having issues with getting the AVB descriptors in Mac OS 10.14 - is that something that is normal, and is there a guide on debugging AVB descriptors that you would recommend?
3. Are there any github repositories that I should look to for example code apart from the application notes provided by XMOS?

Thanks in advance,
Posts: 1
Joined: Mon Dec 14, 2020 10:21 pm

Postby DJKalian » Mon Dec 14, 2020 11:51 pm

Hi guys, quick question.

For those of you who have been able to get your boards working with 32 I/O TDM or even just the 8 I/O I2S, did you guys run into any issues getting your Macs to talk to it with AVB or did you use some other devices to test. I've run into the issue that I can send AVB audio to the board from my Mac, but cannot receive any. I also tried using the board with a Presonus 32SC mixer and it doesn't even see the board. While I am an electronics technician by trade, AVB is not in the area of my knowledge, and it's not clear to me if I have an issue with the board or the programming.

I have been able to hook my logic analyzer up to the board and I can see that the hardware is receiving its proper signals, I just can't get it to route and I was wondering if those of you who have been successful could give me some tips.

Thanks guys,


Who is online

Users browsing this forum: No registered users and 2 guests