por pbernardi » 17 Jan 2008 12:04
Vamos descer um pouco mais, para ver para que servem tais componentes:
DSP: Para onde exige algum tipo de cálculo pesado. É usado em CODECS de áudio e de vídeo, processamento de sinais, alguns simples para fazer reconhecimento de DTMF, p.ex. Em geral, recebe uma quantidade grande de dados, processa e devolve o resultado, ou recebe dados continuamente e devolve resultados continuamente.
ARM e processadores de 32 bits em geral: IMHO, um bom indicativo se o projeto precisa ou não de um processador de 32 bits, é se você precisa colocar um SO nele (linux, o mais comum, mas não o único). Se não precisar, possivemente um ucontrolador de 8 bits dê conta.
FPGA: no ínicio, era mais usado como "glue logic". Muitas vezes saia mais barato usar uma CPLD ou FPGA do que colocar 15 componentes discretos. Mas evoluiu e hoje há uma infinidade de aplicações, que nem dá pra listar direito. Há FPGAs com DSP integrado, com Processador, com Ethernet, simples, rápida, com RAM, com FLASH. Uma notável diferença é que por ser, a grosso modo, um "hardware programável", é muito mais rápido que um processador de mesmo clock. Por exemplo, um processador, para ler um registro, processar algo simples e retornar pode demorar alguns ciclos de clock, enquando, dependendo da aplicação, uma FPGA consegue fazer em um ciclo de clock. Mas isso é genérico, tem casos que processador é melhor que FPGAs, notoriamente em processamentos mais complexos.
But to us there is but one God, plus or minus one - Corinthians 8:6±2. (xkcd.com)