Multichannel AoE Hardware

audioethernet

first off I have already found a wealth of information here so thank you! I am hoping to get some general feedback on a project I'd like to work on. Here is an outline.

I'd like to be able to transmit 8 channels of 24 bit 48KHz audio over ethernet to a collection of 6 to 8 receivers all connected through a switch. Here is my thought process.

  1. Network Speed – 8 channels * 24 bits = 24 bytes. That is below the minimum of 46 bytes (non 802.1Q) so we'll just work with that minimum. Our minimum frame size then is 84 bytes. At 48KHz this would imply an average throughput of ~32.3 mbit/s on the network. Given this result a fast ethernet network with appropriate switches would seem to be OK. Does this analysis seem accurate?

    Note that I'm not too too concerned with perfect playback so an occasionally dropped packet isn't a big deal. Given this I don't think I want to get into sample rate conversion for the network transmission.

    Sidenote – originally I wanted to work on a 10Base-T network because a lot of MCUs had integrated 10Base-T MAC/PHY. Given the minimum 84 byte frame size though… this would restrict sample rates to a little less than 15KHz yuck!

    Just to be sure I'm thinking about this correctly, I cannot violate the 84 byte frame minimum if I want to be able to use commercial switches correct?

  2. Receiver Hardware

    a. Ethernet Controller – I'd like a 100Base-T ethernet controller with built in MAC/PHY. The problem though is, it needs to be able to communicate with the MCU fast enough to push all the audio data through. 8 channels * 24 bits * 48KHz = 9.22 mbit/s. I'm thinking this is going to be too fast for SPI. The ENC424J600, in addition to SPI, has a parallel interface which seems to be useful for faster speeds. Page 53, gives some theoretical performance figures.

    http://ww1.microchip.com/downloads/en/DeviceDoc/39935c.pdf

    b. MCU – Which ever one I choose will need to be beefy enough to read in all 8 channels of audio data from the Ethernet controller, do some very basic DSP on then (channel mixing), and send out the data to a stereo 24 bit DAC at 48KHz. In addition to this it also needs to do some basic interfacing with panel I/O. Any suggestions on a suitable MCU?

    Note that I'm looking at using this DAC.

    http://www.cirrus.com/en/products/cs4341.html

Any comments or thoughts you guys have that might be useful to this project would be very much appreciated!

Thanks,
Jordan

Best Answer

  1. You don't want to send a single packet for every sample. That's because the packet has headers as well, and that means inefficiency in the transfer. Putting several samples into a single packet will both increate the efficiency and get you over your minimum packet size. The upper limit on the number of samples is the maximum latency that you can tolerate. At 48kHz, adding one more sample into your packets would increase the latency by ~21\$\mu\$s. You should also calculate the latency introduced by the whole system end-to-end. Having 8-16 samples per packet would increase your efficiency above 70-80%.

  2. I'd go for a microcontroller with a built-in Ethernet MAC. Having a built-in PHY as well would be a nice plus, however, that extra constraint would decrease your choice by large. There many-many microcontrollers with a built-in 100Mbps MAC, but only a few with a built-in PHY as well.