83 votos

¿Cuál es la diferencia entre un DSP y un microcontrolador estándar?

Entiendo que un DSP está optimizado para el procesamiento de señales digitales, pero no estoy seguro de cómo repercute eso en la tarea de elegir un CI. Casi todo lo que hago con un microcontrolador implica el procesamiento de señales digitales.

Por ejemplo, comparemos el popular DSP dsPIC30 o 33 de Microchip y su otra oferta de 16 bits, el microcontrolador de propósito general PIC24. El dsPIC y el PIC pueden configurarse para tener la misma memoria y velocidad, tienen conjuntos periféricos similares, capacidad A/D similar, número de pines, consumo de corriente, etc. La única diferencia importante que aparece en el listado de Digikey es la ubicación del oscilador. No puedo notar la diferencia mirando los precios (o cualquier otro campo, para el caso).

Si quiero trabajar con un par de sensores externos usando varios protocolos (I2C, SPI, etc.), hacer algunas conversiones A/D, almacenar algunos datos en alguna flash serial, responder a algunos botones, y empujar los datos a un LCD de caracteres y sobre un FT232 (un sistema embebido bastante genérico), ¿qué chip debería usar? No parece que el DSP vaya a ir por detrás del PIC de ninguna manera, y ofrece este misterioso "motor DSP". Mi código siempre hace matemáticas, y de vez en cuando necesito números de punto flotante o fraccionarios, pero no sé si me beneficiará usar un DSP.

Una comparación más general entre los DSP y los microcontroladores de otro proveedor sería igualmente útil; sólo estoy utilizando estos como punto de partida para la discusión.

66voto

Matt Dunnam Puntos 721

Para ser sinceros, la línea que separa a ambos ha desaparecido casi por completo y hay procesadores que pueden clasificarse como ambos (AD Blackfin, por ejemplo).

En general:

Los microcontroladores son procesadores matemáticos enteros con un subsistema de interrupción. Algunos pueden tener unidades de multiplicación por hardware, otros no, etc. El punto es que están diseñados para las matemáticas simples, y sobre todo para controlar otros dispositivos.

Los DSP son procesadores optimizados para el procesamiento de señales en flujo. Suelen tener instrucciones especiales que agilizan tareas comunes como multiplicar-acumular 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. Suelen estar diseñados para operar en un gran bucle que procesa un flujo de datos. Los DSP pueden diseñarse como procesadores de números enteros, de punto fijo o de punto flotante.

Históricamente, si se quería procesar flujos de audio, de vídeo, controlar motores a gran velocidad, cualquier cosa que requiriera procesar un flujo de datos a gran velocidad, se recurría a un DSP.

Si quieres controlar unos botones, medir una temperatura, hacer funcionar una pantalla LCD de caracteres, controlar otros circuitos integrados que están procesando cosas, utilizarías un microcontrolador.

Hoy en día, la mayoría de los procesadores de propósito general son microcontroladores con instrucciones de tipo DSP incorporadas o con coprocesadores en el chip para tratar los datos en flujo u otras operaciones DSP. Los DSP puros ya no se utilizan mucho, salvo en sectores específicos.

El mercado de los procesadores es mucho más amplio y borroso que antes. Por ejemplo, no considero que un SoC ARM cortex-A8 sea un microcontrolador, pero probablemente se ajuste a la definición estándar, especialmente en un paquete PoP.

EDITAR: Pensé en añadir un poco para explicar cuándo y dónde he utilizado DSPs incluso en los días de los procesadores de aplicación.

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 allí haciendo lo suyo, procesando los canales de audio durante años sin que nadie lo tocara. El procesamiento de audio consistía en varios filtros y funciones acústicas. El sistema también era "conectable en caliente", con la posibilidad de añadir un cierto número de "zonas" independientes en una sola caja. Se trataba de un total de 3 diseños de PCB (placa base, un backplane y un módulo enchufable) y el backplane soportaba 4 módulos enchufables. Fue un proyecto muy divertido ya que lo hice solo, tuve que hacer el diseño del sistema, el esquema, el diseño del PCB y el firmware.

Ahora podría haber hecho todo el asunto con un solo núcleo ARM voluminoso, sólo necesitaba unos 50MIPS de trabajo DSP en números de punto fijo de 24bit por zona. Pero como sabía que este sistema iba a funcionar durante un tiempo extremadamente largo y sabía que era crítico que nunca hiciera click o pop o algo así. Decidí implementarlo con un DSP de baja potencia por zona y un único microcontrolador PIC que desempeñaba la función de gestión del sistema. De esta manera, incluso si una de las funciones del uC se bloquea, tal vez un ataque DDOS en su puerto Ethernet, el DSP seguiría funcionando felizmente y es probable que nadie lo sepa.

Así que el microcontrolador desempeñó el papel de ejecutar la pantalla LCD de 2 líneas de caracteres, algunos botones, la monitorización de la temperatura y el control del ventilador (también había algunos amplificadores de audio de bastante potencia en cada placa) e incluso sirvió una página web de estilo AJAX a través de ethernet. También gestionaba los DSPs a través de una conexión serie.

Así que es una situación en la que incluso en los días en que podría haber utilizado un solo núcleo ARM para hacer todo, el diseño dictó un IC de procesamiento de señales dedicado.

Otras áreas en las que me he encontrado con DSPs:

*Audio de alta gama - Receptores de muy alta gama y equipos de mezcla y procesamiento de calidad para conciertos

*Procesamiento de radares - También he utilizado núcleos ARM para esto en aplicaciones de gama baja.

*Proceso de Sonido

*Visión por ordenador en tiempo real

En su mayor parte, los extremos inferior y medio del espacio de audio/vídeo/similar han sido ocupados por procesadores de aplicaciones que combinan una CPU de propósito general con motores de descarga de coproducción para diversas aplicaciones.

14voto

reconbot Puntos 1670

Una cosa que los otros no mencionaron es el comportamiento en el desbordamiento numérico. En los procesadores normales, esto normalmente se envuelve desde el valor máximo hasta el valor mínimo.

Para el uso del DSP suele haber al menos una opción para utilizar saturación en su lugar. Es decir, en caso de desbordamiento el valor se mantiene en el valor máximo, lo que produce menos distorsión e imita mejor el comportamiento de los circuitos analógicos.

9voto

intrepion Puntos 3973

La mayor diferencia entre el DSP y el uController estándar es la función de acumulación múltiple (MAC) del DSP que el uC no tiene. Esto es valioso si quieres realizar verdaderas matemáticas de procesamiento de señales digitales como la FFT (un ejemplo). Hacer una FFT en un microcontrolador estándar llevará mucho tiempo en comparación con realizarla en un MAC del DSP.

No es lo mismo procesar señales I2C y serie que procesar formas de onda en un DSP. El tipo de procesamiento es totalmente diferente, ya que las señales en serie son sólo un golpe de bits.

Aquí hay una discusión similar en un foro de DSP: DSP vs. Microprocesador

5voto

SQLMenace Puntos 68670

Lo que solía diferenciar a los DSP era su optimización para las operaciones aritméticas, especialmente la multiplicación, aunque hoy en día no es raro que los microcontroladores vengan dotados de instrucciones de multiplicación y división. Todavía puede haber una ventaja en el procesamiento de señales con chips DSP, en la medida en que algunos de ellos tienen soporte de hardware para matemáticas de punto fijo (por ejemplo, el TI TMS320s 'IQ' lib), mientras que los micros son más propensos a incluir sólo unidades de enteros.

Personalmente, a la hora de elegir entre los dos para un diseño, intentaría clasificar si la aplicación requiere cálculos repetitivos con una lógica de cambio de modo ocasional, o si sólo necesita realizar secuencias cortas de cálculos según la necesidad. Lo primero sería el DSP, lo segundo un micro.

Y luego, por supuesto, hay cosas divertidas como el OMAP que tiene ambas cosas =P

1voto

Alex Andronov Puntos 178

John Baez tiene una bonita página expositiva sobre esto llamada Clasificar los espacios es fácil . Alrededor de dos tercios de la página habla de la estructura multiplicativa en $\mathbb{C}P^\infty$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X