Isn't I2C will be the bottle neck if fast DSP is used here?
You would think...
5 times a 67 MHz chip is not hard to do. The Raspberry PI 3 has a quad core running at 1.2 GHz. But how do you get down to the hardware?
The last couple of days I have been looking at Ultibo (
www.ultibo.org) as it is based on FreePascal and provides the tools to talk directly to the hardware without a formal OS getting in the middle. In addition, the thread unit allows for manually scheduling the 4 cores. Ultibo is free... The slope of the learning curve will approach infinity, I think. There is just so much stuff to learn.
There are probably other ways to do this with the RPi. Basically, you want to get Linux out of the way (if it is necessary) and write straight to hardware.
There are other processors with similar features that aren't locked into the RPi design. This may make more SPI channels available or perhaps DMA would be easier to use, etc. The Broadcom chips seem to be locked in secrecy.
Any time you are doing multiply-add, you should be thinking of DSP. The Blackfin 537 is a 600 MHz chip designed specifically for DSP as is the Sharc. I was using the GCC toolchain quite effectively and it's free. uCLinux runs on the chip as it doesn't require an MMU.
http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/bf537-ezlite.html#eb-overviewIf you can arrange your algorithm as parallel operations or some kind of pipelined arrangement, the FPGA can be VERY fast. The problem then becomes latency. Do the pipelined stages, with their associated delay, impact the speed requirements? You get one result each clock but it may be the result of a sample taken 10 clocks before. OTOH, the clock might turn out to be pretty fast. Many FPGAs can run at 200 MHz and the high dollar chips can run MUCH faster.
On the FPGA, you read all sensors in parallel. You can have as many SPI channels as your package pins permit. And they can be FAST! It's simple to add a FIFO buffer for each sensor channel.
In terms of FPGAs, I can only discuss what I know and that's Xilinx and 'very little'. I am coming to terms with Vivado and the Artix 7 chips are pretty nice. Digilent's Nexys 4 DDR board (expensive) uses a HUGE chip with gobs of BlockRam. The Arty board uses a much smaller chip but it's still pretty useful.
If you have a need for bulk memory, the Nexys 4 DDR board is pretty nice because Digilent supplies a component to make the DDR look like static RAM. This eliminates the need to endlessly study timing diagrams or use a Xilinx IP core. I haven't used this component. I have used the Xilinx IP with their Microblaze softcore and it works well.