Para ser honesto, la línea entre los dos casi ha desaparecido en la actualidad y hay procesadores que pueden clasificarse como ambos (AD Blackfin, por ejemplo).
En términos generales:
Los microcontroladores son procesadores matemáticos de 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 acumularse de forma múltiple en una sola instrucción. También suelen tener otras instrucciones vectoriales o SIMD. Históricamente, no eran sistemas basados en interrupciones y funcionaban 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 funcionar en un gran bucle procesando un flujo de datos. Los DSP se pueden diseñar como procesadores de punto fijo, punto fijo o punto flotante.
Históricamente, si desea procesar flujos de audio, flujos de video, control rápido del motor, cualquier cosa que requiera procesar un flujo de datos a alta velocidad, debería consultar un DSP.
Si quisiera controlar algunos botones, medir la temperatura, ejecutar un LCD de caracteres, controlar otros IC que procesan cosas, usaría un microcontrolador.
Hoy en día, en su mayoría se encuentran procesadores de tipo microcontrolador de propósito general con instrucciones similares a DSP incorporadas o con coprocesadores de chip para tratar la transmisión de datos u otras operaciones de DSP. Ya no se usan mucho los DSP puros, excepto en industrias específicas.
El mercado de los procesadores es mucho más amplio y borroso de lo que solía ser. Por ejemplo, casi no considero que un ARC cortex-A8 SoC sea un microcontrolador, pero probablemente se ajuste a la definición estándar, especialmente en un paquete PoP.
EDITAR: Calculé 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 el 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 quedaba sentado haciendo lo suyo, procesando los canales de audio durante años sin que nadie lo tocara. El procesamiento de audio consistió en varios filtros y funciones acústicas. El sistema también era "conectable en caliente" con la capacidad de agregar un número de 'zonas' independientes en una sola caja. Fue un total de 3 diseños de PCB (placa base, una placa posterior y un módulo de conexión) y la placa posterior admite 4 módulos de conexión. Todo un proyecto divertido, ya que lo estaba haciendo solo, tuve que hacer el diseño del sistema, el esquema, el diseño de PCB y el firmware.
Ahora podría haber hecho todo esto con un único y voluminoso núcleo ARM, solo necesitaba unos 50MIPS de trabajo DSP en números de punto fijo de 24 bits por zona. Pero porque sabía que este sistema funcionaría durante un tiempo extremadamente largo y sabía que era fundamental que nunca hiciera clic o salte o algo así. Elegí implementarlo con un DSP de baja potencia por zona y un único microcontrolador PIC que desempeñó el papel de administración del sistema. De esta manera, incluso si una de las funciones de uC fallara, tal vez un ataque DDOS en su puerto Ethernet, el DSP con mucho gusto simplemente continuaría alejándose y es probable que nadie lo sepa.
Entonces, el microcontrolador jugó el rol de ejecutar el LCD de 2 caracteres de línea, algunos botones, control de temperatura y control del ventilador (también había algunos amplificadores de audio de 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.
Esa es una situación en la que incluso en los días en los 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 en las que me he encontrado con DSP:
* Audio de gama alta: receptores de muy alta gama y equipo de mezcla y procesamiento con calidad de concierto
* Procesamiento de radar: también he usado núcleos ARM para esto en aplicaciones de gama baja.
* Procesamiento de sonar
* Visión de computadora en tiempo real
En su mayor parte, los extremos inferior y medio del espacio de audio / video / similar han sido controlados por procesadores de aplicaciones que combinan una CPU de propósito general con motores de descarga conjunta para varias aplicaciones.