After reading this article on FPGA-based audio synthesis and this paper about realtime GPU audio, I now realize that audio processing and sound synthesis are all about latency, rather than raw power. And short of developing a custom ASIC, nothing beats a good FPGA on the latency front.
With that in mind, I believe that the 16 CPU cores found in the Adapteva device of the Parallella board won’t do much for us, and that a single Zynq Z-7045 SoC would give us better performance than four Zynq Z-7020 devices, and would be a lot easier to use. In such a context, I have decided to replace the four Parallella boards by a single Zynq Z-7045 board (Mercury ZX1 for example). And down the road, we will upgrade to a Zynq UltraScale+ MPSoC, which will give us 5 times more system-level performance per watt.
To further simplify our design and reduce latency to the absolute minimum, we will attach the Zynq MPSoC to a series of XMOS XU208 microcontrollers, one for every stereo audio input (8), one for every stereo audio output (10), one for the 16 CV inputs, and one for the 16 CV outputs. In addition, we will use a slightly more powerful XEF216 with 128 I/Os to provide the following interfaces:
- 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
Each one of the 8 XU208 microcontrollers used for stereo audio inputs will be connected to an ES9102C ADC converter, while each one of the 10 XU208 microcontrollers used for stereo audio outputs will be connected to an ES9018 DAC converter, which will give us a perfectly balanced design. And the 20 microcontrollers will give us plenty of I/Os to control our keypad, bargraphs, and motorized faders. As a result, I think we’ll get rid of the good old ATmega microcontrollers as well.
This is a pretty radical redesign, but I think it’s for the best…