I was wondering what DSP chip would be appropriate for a guitar pedal effect. I need to sample the incoming signal preferably at 96kHz perform a simple numeric function upon each sample and output he result.
The function will be floating point and contain trig functions. Each sample is run through the function once and outputed.
ADC and DAC convertion will need to either be contained in the chip or sorted out separately.
I understand there are PICs out there and other similar things that can do this, I'm just unfamiliar with there devices and trying to wade though the websites to figure out what would work is kinda rough when your clueless. :)
Are you going to build one or a million? If the latter, the cost of the silicon is important. If you only build a few, the silicon is free. The expense is the time to develop the software so you should look for an software environment you like.
You said 96kHz. Call that 100 kHz, or 10 microseconds per sample. You need a CPU that is fast enough to run your algorithim in the alloted time. Trig functions can be messy. I'd suggest getting a development board and timing things. (If you might buy a million, the FEs will be helpful. If not...)
Why do you think you need floating point? The input isn't floating. The output isn't floating.
As a (probably crazy) straw-man, you could consider table lookup. It doesn't take much time, but it sure eats memory. It might be worthwhile to implement the algorithim on a PC and look at it on a graph. Can you compress that graph? Think interpolation, or curve fitting. A cheap CPU with external memory might be less expensive than a CPU fast enough to do the trig functions.
These are my opinions, not necessarily my employer\'s. I hate spam.
On a sunny day (Sun, 25 Oct 2009 19:46:54 -0700 (PDT)) it happened Fred wrote in :
Whatever you choose, keep in mind that digital processing introduces delays. 'Latency' is the word. That may cause very undesirable effects in the end result.
So a bleeding fast DSP should be at an advantage here (read power guzzling). Or maybe do some of the processing in hardware, say use an FPGA. Depends on all you want to do. Maybe an analog circuit makes more sense for a guitar... But then again if your name or preference in Jimmy Hendrix., maybe all the artefacts will help a bit ;-) grin
If you must do this with floating point you'll need a floating-point DSP chip like an Analog Devices Sharc or a TI 6000 series ($$$, but maybe not too much of a differential for a one-off). I'd see if I couldn't do this with a fixed-point chip and some sort of approximation, or clever fixed- point math. The design work is harder, but it may be worth it.
The other point being avoidance of floating point and do it in fixed point if at all possible. If you use a cheap micro, fp will be too much of a performance hog with many C libraries, not to mention the amount of code space it takes up...
Dunno about cordic -- to get that kind of speed from an inexpensive DSP you probably need to go with something like a polynomial best-fit. This would make the "knob" adjustment easy, as you'd just change the coefficients of the polynomial.
I've written everything in C since the early 90's, even stuff like interrupt handlers. The only assembler is in the startup and that's kept as short as possible. It's the only way to get maintainable and portable code and modern compilers and cpu's are very good. Even keil C for 8051 can keep up with the later 8051 derivatives from Silicon labs and others. For example, a 400 Hz pwm sine wave inverter where the timers are reloaded every pwm cycle, 10 or so lines of C and an interrupt handler time of approx 60 uS.
You write it all in C to start with, then dip down and look at the compiler entrails and optimise the assembler *only* if it's not fast enough :-)...