Slowly but surely, I am starting to undertand how the XMOS multicore microcontroller could be put to good use in our architecture. Since we now have a totally balanced design with dedicated ADC and DAC converters for every audio input and output, it makes sense to pair them with dedicated microcontrollers. This would free up the Zynq from any audio interfacing work, while being able to control our 17 audio converters individually.
On the audio input side, both the XMOS device associated to any given stereo audio input and the Zynq MPSoC would be connected to the same ADC converter output. On the audio output side, the XMOS device and the Zynq would be connected to the same DAC converter input. This would give our mesh of 17 XMOS devices direct access to the raw digital audio inputs and outputs.
From there, the 17 XMOS devices (XLF210 most likely) would be connected to a larger XMOS device used as primary audio interface (XEF216 most likely). This interface would be implemented using this reference design, thereby providing the following features:
- S/PDIF optical/coaxial input
- S/PDIF optical/coaxial output
- ADAT input and output
- MIDI input and output
- USB Audio Class 2.0
- Gigabit Ethernet with AVB
The XMOS devices would be connected to the Zynq in a couple of ways: first, we would use their JTAG interfaces in a daisy-chained fashion for programming; second, we would use dedicated I/Os on the XMOS and Zynq sides for exchanging digital audio signals between the two. In a perfect world, this would be achieved by implementing the xCONNECT protocol on the FPGA side. Bad news: this is far from trivial. Good news: we do not need it initially.
Last but not least, we would use a similar architecture for CV inputs and outputs, using one XMOS device for CV inputs, and another one for CV ouputs. These would be connected to the ADC converters (AD7606), DAC converter (AD5360) and Zynq MPSoC in a fashion similar to the one described above.
Learn more about the full project on its website.