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

83

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

Por ejemplo, comparemos el popular Microchip dsPIC30 o 33 DSP 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, conteo de pin, consumo de corriente, etc. La única diferencia importante que aparece en el listado de Digikey es la ubicación del oscilador. No puedo ver 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.), realice algunas conversiones A / D, almacene algunos datos en un flash serie, responda a algunos botones y elimine datos a un LCD de caracteres y sobre un FT232 (un sistema integrado bastante genérico), ¿qué chip debo usar? No parece que el DSP se quede atrás del PIC de ninguna manera, y ofrece este misterioso "Motor DSP". Mi código siempre hace cálculos matemáticos, y de vez en cuando necesito números de punto flotante o fraccionarios, pero no sé si me beneficiaré con un DSP.

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

    
pregunta Kevin Vermeer

6 respuestas

63

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.

    
respondido por el Mark
15

Muchos procesadores de señales digitales incluyen una variedad de funciones que no se encuentran en los procesadores "normales":

  1. La capacidad de realizar una acumulación múltiple, con ambos operandos recuperados de la RAM, a una velocidad de un ciclo por par de operandos.
  2. La capacidad de realizar algún tipo de direccionamiento 'módulo' o 'ajuste', para permitir que un búfer se use repetidamente sin tener que usar código manual para asegurar el ajuste de los punteros. El 3205x, por ejemplo, tiene un registro de 'inicio de búfer' y 'fin de búfer'; Si el código intenta aumentar o disminuir un registro de puntero que apunta a "inicio de búfer", el procesador cargará el puntero con "fin de búfer". El 3205x también tiene un modo de transferencia inversa, donde las adiciones de direcciones se propagan carry MSB a LSB, en lugar de viceversa; esto permite el direccionamiento en módulo N si N es una potencia de 2, aunque las cosas se almacenan en una secuencia desordenada.
  3. La capacidad de especificar que una instrucción se ejecute 'n' veces sin necesidad de volver a buscarla. Algunos procesadores como el 8088 incluyen esto para algunas instrucciones, pero muchos DSP lo permiten con muchas instrucciones.
  4. La capacidad de especificar que un bloque de código se ejecute repetidamente, hasta 'n' veces, sin necesidad de ramificación. Antes de cada búsqueda de código, el contador del programa se verifica en el registro de 'fin de bucle'; si coincide, y el bucle está habilitado, el contador del programa se volverá a cargar con 'inicio de bucle' (de lo contrario, se incrementará). Si 'recuento de bucles' es cero, se deshabilitará el bucle; de lo contrario, se reducirá el 'conteo de bucles'.

Tenga en cuenta que muchos DSP tendrán buses separados para permitir que los dos operandos de una acumulación múltiple se puedan recuperar simultáneamente; Nunca he visto un no-DSP que podría hacer eso. Si bien no conozco ninguna característica de la que deba faltar un chip para que sea un DSP, el espacio de silicio adicional requerido para permitir la captura de doble operando es un espacio de silicio que no se usa para otro propósito más útil en general. / p>     

respondido por el supercat
12

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

Para el uso de DSP, a menudo hay al menos una opción para usar saturación en su lugar. Es decir, en el desbordamiento, el valor permanece en el valor máximo, lo que produce menos distorsión e imita mejor el comportamiento de los circuitos analógicos.

    
respondido por el starblue
8

La mayor diferencia entre DSP y el uController estándar es la función de acumulación múltiple (DS) de DSP que uC no tiene. Esto es valioso si desea realizar cálculos de procesamiento de señales digitales reales, como FFT (un ejemplo). Realizar una FFT en un microcontrolador estándar llevará mucho tiempo en comparación con hacerlo en un MAC del DSP.

El procesamiento de señales I2C y serie no es lo mismo que procesar las formas de onda en un DSP. Se está llevando a cabo un tipo de procesamiento totalmente diferente, ya que las señales en serie son simplemente de bits.

Aquí hay una discusión similar en un foro de DSP: DSP frente a microprocesador

    
respondido por el Jay Atkinson
5

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

Personalmente, al enfrentarme a elegir entre los dos para un diseño, intentaría categorizar si la aplicación requería cálculos repetitivos con solo una lógica de cambio de modo ocasional, o solo necesita realizar secuencias cortas de cálculos cuando surja la necesidad. El primero sería el DSP, el segundo un micro.

Y luego, por supuesto, hay cosas divertidas como OMAP que tienen ambas. = P

    
respondido por el JustJeff
1

Otra característica posible que puede tener la instrucción MAC es el incremento automático de los registros que apuntan a multiplicandos. Programé un DSP de Zilog que usaba el núcleo de Clarkspur (punto fijo de 16 bits). Era una variación de la arquitectura de Harvard con tres buses, que le permitía acceder a tres áreas de la memoria simultáneamente: memoria de instrucciones, banco de datos 1 y banco de datos 2. Con un flujo de datos en un banco y coeficientes en el otro, uno podría realice un filtro FIR con una instrucción de un solo ciclo por operación de incremento de MAC / puntero. En C la instrucción individual se ve como:

Acumulador + = rambank1 [r1 ++] * rambank2 [r2 ++];

Y, por supuesto, esta instrucción se repite para cada coeficiente.

Tampoco se mencionó anteriormente, los DSP (al menos los más antiguos que he usado) son generalmente de arquitectura RISC y están diseñados con muchas o la mayoría de las instrucciones que se ejecutan en un solo ciclo (o en el mismo número de ciclos). Esto permite la capacidad de programar una respuesta de interrupción determinística (un recuento de reloj fijo entre la línea de interrupción activa y la primera instrucción en el ISR ejecutado), mientras que la mayoría de los otros procesadores responden a interrupciones en un número variable de ciclos de reloj, dependiendo de a qué punto en una instrucción de varios ciclos la interrupción se produce. El tiempo de ejecución fijo elimina la fluctuación de fase de varias veces en salidas repetitivas.

En la comparación de OP del Microchip Pic y DSPic, entendí cuando se introdujo DSPic que se trataba principalmente de un Pic con una instrucción MAC y algunas otras funciones adicionales, lo que sin duda puede acelerar el funcionamiento de un microcontrolador que procesa la señal. funciones, pero (debido a su falta de cualquiera de las otras características discutidas) podría estar presionando la terminología para llamarlo un DSP. El MSP430 también está disponible en versiones con un hardware MAC, pero nadie llama a ESO un DSP.

Recuerdo que hace 10 o 15 años, leí que los procesadores principales de Intel estaban agregando MAC e instrucciones similares para realizar el procesamiento de señales "nativo" (en lugar de en tarjetas de expansión con procesadores DSP dedicados, que eran comunes para la producción de audio en la década de 1990) - algunos módems de bus de PC de acceso telefónico de 56k no eran más que convertidores A / D y D / A, y dependían del procesador principal para realizar las funciones de codificación y decodificación de la señal del módem, por lo que había una demanda para un uso más eficiente del procesador allí mismo. Los usos de los medios, como la edición / codificación / decodificación de video, así como la grabación / producción de audio, se aceleran en gran medida mediante instrucciones de tipo DSP.

    
respondido por el user23081

Lea otras preguntas en las etiquetas

Comentarios Recientes

¿Importan exactamente? ¡El CDRS sí! Es su amplificador diferencial de señal lo que separa lo analógico versus lo digital. No lo convierte específicamente en un mezclador. Aunque no creo que sea así. Simplemente separa las partes para que pueda aplicar una señal total para cada canal estéreo. Escuchar el anuncio de FST muestra que el fader está aquí. ¿Qué es eso y por qué es extraño? No creo que haya un aspecto definible del FST DSP. El CDRS se acerca bastante al modelo 8g de esta cabeza: es más proporcionado.... Lees verder