FPGA , DSP or Micro controller for my robot
Most people have serious doubts regarding this issue and are confused when confronted with the question. Each class of chips has its own advantages and disadvantages and using one might help using the other might complicate things. So I did a little search and here is a short article which will help you choose the appropriate for your next project (usually uC's).
The three solutions
As I said earlier each of them has its own advantage and disadvantage so listed below are the three types with some application and uses.
FPGAs (Field Programmable Gate Arrays) are programmable digital logic chips. What that means is that you can program them to do almost any digital function. You can connect the gates together to form multipliers, registers, adders and so on. The programming is done at block diagram level where blocks can be simple gates to complex FFT's. When you use FPGA to perform a function it will be the fastest as compared to the other two. CPLD also come under nearly the same category but they have lesser number of gates and are faster than FPGA.
The DSP (Digital signal processor) is a specialized microprocessor - typically programmed in C, perhaps with assembly code for performance. It is well suited to extremely complex maths-intensive tasks, with conditional processing. It is limited in performance by the clock rate, and the number of useful operations it can do per clock.
The micro controller is the one is most widely used. It is something similar to the DSP but does not support any complex instructions and other math intensive programming, which a DSP can do. These are limited by the clock only and usually come in RISC or CISC type.
Which one to use
If you need very high sampling rate then FPGA is the choice for you simply said if you need something which has to process large amounts of data very fast ( > some MB's of data). Some thing like if you wish to encrypt data stream of an NIC using RC5 or ISAC. Also remember once the FPGA is switched of it loses all its data ( everything is on SRAM ) .If you don't want to lose data you can try for CPLD which use EEPROM and are faster but have smaller number of gates.
While DSP cannot do things very fast it can do very complex things at a lower speed, which will be very hard to implement in an FPGA device. Also DSP's are programmed in C so most programmers will feel naturally at home. DSP's are usually suited for places where signal processing is involved. A DSP usually converts an analog signal to digital ( A2D ) processes the digital signal and then finally put it back in analog form ( D2A). One of the most used DSP is the TMS320C6201 which runs at about 200 Mhz .
While our third competitor the microcontroller is nearly similar to DSP ( read above ) also offer some other features which DSP's don't offer but is usually . It is relatively easy to learn and program than a DSP. Also micro controllers are widely used and easily available at affordable prices. Some famous 8 bit uC series are the avr , pic and 8051 ( though a little outdated ).
But which one for my robot ?
From above we see that the FPGA is out as we usually wont require very high sampling rates and also we would like the system to retain what its been programmed to do. Also its hard to get the FPGA Chip and its not very well supported from a hobby point of view. But if you need some thing very fast and the uC and DSP cant do the trick the FPGA is finally for you. At least much cheaper than going in for an ASIC.
The DSP is recommended if you are processing lots of signals or your robot is doing some pretty math intensive computations. Also if your robot is pretty high end and you can seem to find a uC which is powerful enough. Its also recommended for high end legged robots something like Troody by the MIT Leg Lab.
The micro controller is the solution for the 90% of undergraduate and hobby robots. Easy to program, learn and use they come in wide variety of configurations. They are recommended for simple LFR's to high end Autonomous robots ( mars rovers ). Search the site for more info on uC's.
I hope this little guide was worth your time, let me know though the comments