Para ser honesto, la línea entre los dos ya casi ha desaparecido y hay procesadores que se pueden clasificar como ambos (AD Blackfin, por ejemplo).
Generalmente hablando:
Los microcontroladores son procesadores matemáticos enteros con un subsistema de interrupción. Algunos pueden tener unidades de multiplicación de hardware, otros no, etc. El punto es que están diseñados para matemáticas simples, y principalmente para controlar otros dispositivos.
Los DSP son procesadores optimizados para el procesamiento de señales de transmisión. A menudo tienen instrucciones especiales que aceleran las tareas comunes, como la acumulación múltiple en una sola instrucción. También a menudo tienen otras instrucciones vectoriales o SIMD. Históricamente no eran sistemas basados en interrupciones y operaban con sistemas de memoria no estándar optimizados para su propósito, lo que los hacía más difíciles de programar. Por lo general, fueron diseñados para operar en un gran bucle procesando un flujo de datos. Los DSP se pueden diseñar como procesadores de punto entero, punto fijo o punto flotante.
Históricamente, si quisiera procesar transmisiones de audio, transmisiones de video, hacer un control rápido del motor, cualquier cosa que requiera el procesamiento de una transmisión de datos a alta velocidad, buscaría un DSP.
Si quisieras controlar algunos botones, medir una temperatura, ejecutar un LCD de caracteres, controlar otros circuitos integrados que procesan cosas, usarías un microcontrolador.
Hoy en día, se encuentran principalmente procesadores de tipo microcontrolador de uso general con instrucciones DSP incorporadas o con coprocesadores en chip para manejar datos de transmisión u otras operaciones DSP. Ya no se ven mucho los DSP puros, excepto en industrias específicas.
El mercado de procesadores es mucho más amplio y más borroso de lo que solía ser. Por ejemplo, apenas considero que un ARM cortex-A8 SoC sea un microcontrolador, pero probablemente se ajuste a la definición estándar, especialmente en un paquete PoP.
EDITAR: pensé que agregaría un poco para explicar cuándo / dónde he usado DSP incluso en los días de los procesadores de aplicaciones.
Un producto reciente que diseñé estaba haciendo procesamiento de audio con X canales de entrada y X canales de salida por 'zona'. El uso previsto para el producto significaba que a menudo se sentaba allí haciendo lo suyo, procesando los canales de audio durante años sin que nadie lo tocara. El procesamiento de audio consistió en varios filtros acústicos y funciones. El sistema también era "conectable en caliente" con la capacidad de agregar cierto número de "zonas" independientes, todo en una sola caja. Fue un total de 3 diseños de PCB (placa base, una placa posterior y un módulo enchufable) y la placa posterior admitió 4 módulos enchufables. Fue un proyecto bastante divertido ya que lo estaba haciendo solo, tuve que hacer el diseño del sistema, el esquema, el diseño de la PCB y el firmware.
Ahora podría haber hecho todo con un solo núcleo ARM voluminoso, solo necesitaba aproximadamente 50MIPS de trabajo DSP en números de punto fijo de 24 bits por zona. Pero debido a que sabía que este sistema funcionaría durante un tiempo extremadamente largo y sabía que era crítico que nunca haga clic o explote ni nada de eso. Elegí implementarlo con un DSP de baja potencia por zona y un solo microcontrolador PIC que desempeñaba la función de administración del sistema. De esta manera, incluso si una de las funciones uC fallara, tal vez un ataque DDOS en su puerto Ethernet, el DSP felizmente seguiría funcionando y es probable que nadie lo sepa.
Por lo tanto, el microcontrolador desempeñó el papel de ejecutar la pantalla LCD de caracteres de 2 líneas, algunos botones, monitoreo de temperatura y control del ventilador (también había algunos amplificadores de audio de bastante alta potencia en cada placa) e incluso sirvió una página web de estilo AJAX a través de Ethernet. También gestionó los DSP a través de una conexión en serie.
Entonces esa es una situación en la que incluso en los días en que podría haber usado un solo núcleo ARM para hacer todo, el diseño dictaba un IC de procesamiento de señal dedicado.
Otras áreas donde me he encontrado con DSP:
* Audio de gama alta: receptores de gama muy alta y equipos de mezcla y procesamiento de calidad de concierto
* Procesamiento de radar: también he usado núcleos ARM para esto en aplicaciones de gama baja.
* Procesamiento de sonda
* Visión por computadora en tiempo real
En su mayor parte, los extremos inferior y medio del espacio de audio / video / similar han sido asumidos por procesadores de aplicaciones que combinan una CPU de propósito general con motores de descarga co-proc para diversas aplicaciones.