5
\$\begingroup\$

I have experience with selecting low end PICs, but haven't had to select a controller for DSP before. Initially I thought about the dsPIC line, but the only reason for this because I am comfortable with the microchip line.

So, what options do I have to select from? How can I decide what is best for me? Are there in general differences between lines? Example, the MSP430 line is good for very low power, are there any similar type of things for the DSP lines?

For my specific project I am going to have 3 sets of SPI from ADCs that are 24bit at about 400KHz, but I am find with broad description on how to find the proper platform.

\$\endgroup\$
8
\$\begingroup\$

If I was asked to look at DSP products, I would look at the architecture. The hardware architectures for DSP processors are more varied than for general purpose processors.

  1. Word Length. As you mentioned, your source data is 24-bits. So, unless you are able to lose some fidelity, you will need a DSP that can handle 24-bits data at least.
  2. Fixed/Floating Point. You will need to look at your algorithms to see if floating-point hardware is needed or if it can be entirely implemented in fixed-point. Not all DSPs can do floating-point in hardware.
  3. Addressing Modes. You are dealing with buffers all the time. While DSPs have circular addressing modes, some have more advanced modes that are able to chain memory blocks together or flip memory blocks in hardware and more. I would say that this is the most critical architecture aspect for a DSP.
  4. Special Instructions. Every DSP has specialised instructions. At the minimum, they will have a MAC instruction. However, some have far more esoteric ones which may benefit your application.
  5. Data Paths. Some DSPs have unique data paths, or even multiple datapaths, which allow different data streams to be manipulated separately or combined together, in hardware.
  6. Execution Units. Most DSPs have many parallel execution units that can perform different things at the same time - e.g. multiply, add and shift different registers at the same time.

Then, looking at the algorithms that need to be coded, I would select a DSP architecture that is easier to use to implement the algorithms.

\$\endgroup\$
8
\$\begingroup\$

First, collect some of the data you want to process on a PC.

Second, develop your algorithms on the PC. Start with matlab/octave or numpy.

Third, translate the algorithm into C code on the PC. Does it behave well as floating-point? 16-bit fixed-point? Profile it to see how many multiply+accumulates it does per second of sample data.

Now you know the requirements and you have the algorithm ready to go. You are ready to choose a DSP.

\$\endgroup\$
  • \$\begingroup\$ So in other words you are telling me to take it one step at a time? :-) I have been trying to figure out the easiest way to collect that much data for Matlab analysis. Guess that might be worth a second question If I can't find any other questions about it. \$\endgroup\$ – Kellenjb Jan 29 '11 at 22:19
  • 1
    \$\begingroup\$ you could start of with a data aqusition card for the PC to acquire the data, then as suggested use matlab to develop your algorithm on real data and so on. \$\endgroup\$ – smashtastic Jan 30 '11 at 8:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.