[sdiy] dsPIC33 question..

Eric Brombaugh ebrombaugh1 at cox.net
Thu Oct 2 22:47:52 CEST 2008


karl dalen wrote:

> Well, you are most likely right but it depends what we
> meant by high performance DSP work? At Texas C6xxx performance?

Generally, yes. When I think 'high-performance DSP' I'm thinking along 
the lines of ADI SHARC, TI C6X, Freescale DSP56k, etc. Anything with > 
16-bit data and true MACs. By those standards, the dsPIC doesn't qualify 
as high-performance. It does qualify as inexpensive, easy to use and 
good enough for most stuff I do.

> Cortex is a bit faster then ARM7 its also easyier to program.
> If one wants fast short DSP routines one can place then in RAM
> and execute from there but yeat again as you say there are 
> limitations, ther are many issues, but as Anti H once mentioned
> there are pleny of power in a ARM7 etc to do a complete
> 4 OSC + filter wavetable synth, so it all depends on what
> we meant by high DSP performance.! 

Cortex is a different beast from ARM7 and isn't the comparison you 
initially made. If you want to go back and state that "Cortex has way 
more DSP power than a dsPIC" then we can start a new discussion. :)

That said, you'd also need to define which version of Cortex you're 
comparing to. The Cortex M3 used in many of the embedded processors 
available today doesn't have the same power as the Cortex A8 that's 
found in the TI OMAP processors. Trying to compare a dsPIC to a Cortex 
A8 would be about as useful as comparing a 6502 to a Pentium.

>> When it comes to DSP however they're seriously lacking in areas
>> where the dsPIC has better resources.
> 
> Please, im interessted to hear your finds?

Let's look at a typical DSP operation - the FIR filter. This involves 
repeatedly grabbing a new data value from a buffer, multiplying it by a 
coefficient and adding the result to an accumulator. In an ARM7, each of 
these operations (compute data address, load data, compute coefficient 
address, load coefficient, multiply, add) requires a separate 
instruction, as well as some overall looping control, for a total of 
about 8 - 10 instructions per iteration. In a dsPIC, all of these 
operations can be handled by _one_ instruction in a hardware repeat loop 
that executes at the full processor clock rate. To give the same 
performance in this (admittedly specialized) operation, the ARM7 would 
need a clock rate of > 300MHz to out-do a dsPIC running at 40MHz.

Eric



More information about the Synth-diy mailing list