The line is blurring between today's very capable MCUs and what is a true DSP.
Basically, someone says they want a DSP because they are doing lots of "signal processing stuff" but truth is that they often don't need a full-on DSP for basic signal processing. Only when it gets more advanced then this will they need a real dedicated DSP, and here's why:
a DSP has an accumulator that is designed around multiply-accumulate, because filters are mostly a continuous application of high-order polynomials. The accumulator has guard bits, so that it doesn't lose precision, and the final result can be truncated without much loss of precision. A DSP operating in real-time is more efficient with a Harvard architecture (but it's not needed for non-realtime signal processing, so MCUs do ok here). DSP's have fractional number representation internally, and you can operate on fractional numbers directly, and the registers and instruction set understand fractional numbers, -1.0 < Rx < 1.0. This is because a filter's coefficients are already fractional numbers and the results will also be fractional numbers as it accumulates. DSPs can do parallel fetch while calculating a result.. and DSPs can often do all of this in just a few specialized instructions.
Now, the ARM Cortex-M4 has some DSP extensions, such as a single cycle MAC. This may make it operate faster doing some "DSPish" things, but it may fall short if you want to do DSP in real time on the incoming datastream from your multichannel measurement system.
Finally, a DSP makes programming a filter so easy
the basic FIR filter is
Which is just a series of multiply and accumate, and can often be done in just a few instructions on a DSP, which might take several instructions on a non-DSP. The DSP can parallel fetch the next x value and the b coefficient while calculating and accumulating y[n]
So.. just some food for thought, to help you decide if you need a real DSP or if a modern MCU with DSP extensions will be good enough for your needs.
The line is blurring between today's very capable MCUs and what is a true DSP.
Out of the choices you gave, ARM is the way to go for sheer power. The Raspberry Pi is very hard to beat at its price.
Out of the choices you gave, ARM is the way to go for sheer power. The Raspberry Pi is very hard to beat at its price.lol no, we are talking DSP here, this is Linear algebra. You need vector coprocessor at the very least
For some reasons, not sure actually why. I would like to stay as far as possible from ARM if not needed.
Probably will go with dsPIC. As I wrote, the XC is free, the MPLAB X I know already. And I am generally familiar with Microchip way.
Out of the choices you gave, ARM is the way to go for sheer power. The Raspberry Pi is very hard to beat at its price.lol no, we are talking DSP here, this is Linear algebra. You need vector coprocessor at the very leastThe Raspberry Pi actually does have a video centric DSP.
But even without it, 700MHz of ARM will outpace any dsPIC very easily.
would like to have possibility in the future to do some basic signal analysis/statistic etc.
Low cost STM32F4 (The development board costs 15$ - bargain) can execute multiply & accumulate instruction in a single cycle. Since it has a speed of 164Mhz, It can execute multiply & accumulate instruction 164 million times/second, which is very fast.
However, any microcontroller with DSP will work, STM32F4 is just my personal choice.
ARM processors won't be as quick as DSPs when FFTs are involved.
Where as the M4F still needs to spend cycles getting the data out of RAM into the working register set
Why not? What are they missing? And since the things labeled "DSP" range from that 16bit dsPIC with no floating point to chips that cost $100+ each, perhaps you should qualify "DSP" further as well.
But that's a 200MIPS fixed point DSP, so I don't know how it would compare against an RPI or BeagleBone.
NXP also offers a 200MHz dual core (M4 and M0)
IMHO that TMS320F28335 is extremely expensive compared to an LPC4076FBD144 from NXP (according to the prices from Digikey). The LPC4076FBD144 is a 120MHz Cortex M4 controller with FPU and DSP/SIMD extensions (http://www.arm.com/products/processors/technologies/dsp-simd.php). If the 120MHz Cortex isn't enough then NXP also offers a 200MHz dual core (M4 and M0) for less money than the TMS320F28335. I stand by what I already typed before: unless you need really brutal processing power going for an ARM based controller is the best option. The C2000 may be nice but the community support is nowhere near as extensive as it is for ARM. If you need a highly optimised algorithm you stand a better chance finding one for ARM than C2000 unless you want to pay $$$.