¿Qué puede hacer el dsPIC que el humilde microcontrolador PIC no puede hacer?

Todavía no he usado un chip DSP. Todo lo que sé es que su arquitectura es tal que pueden realizar cálculos bastante rápido, generalmente dentro de un ciclo de reloj, tienen instrucciones de acumulación múltiple en su conjunto de instrucciones y tienen DMA para que la CPU no tenga que perder un tiempo precioso moviendo datos alrededor. Creo que hay más, pero estos son algunos puntos básicos.

Puedo ver que Microchip tiene dsPIC, que es su línea de chips DSP. ¿No podemos simplemente usar un PIC18 o PIC32 que también tiene multiplicadores incorporados para hacer DSP también? ¿En qué se diferencia el dsPIC del PIC normal?

Mi pregunta principal es esta: ¿Por qué necesitamos tener algo separado y distinto llamado chip DSP y no integrar la capacidad de cálculo de unidad de coma flotante de alta precisión en todos los microcontroladores? Seguramente con las tecnologías de proceso que tenemos ahora, esto no debería ocupar mucho espacio.

Además, ¿cómo sé que necesito usar un chip DSP en mi proyecto en lugar de un microcontrolador normal?

Hay buenas respuestas a preguntas similares aquí: electronics.stackexchange.com/questions/3067/…
Un PIC32 es una arquitectura completamente diferente (MIPS) que otros PIC, su nombre probablemente tenga más que ver con el marketing que con cualquier otra cosa. Es significativamente más potente que otros dispositivos PIC, incluido el dsPIC.

Respuestas (4)

Por lo general, "DSP..." significa "potencia más relevante y/o hardware más relevante en el momento en que se presentó el producto ".
Los procesadores generalizados tienden a ponerse al día con los dispositivos especializados más antiguos.
DSPIC tiene p[probablemente más de 10 años - Olin lo sabrá.

[Los elementos entre paréntesis se relacionan con algunos ejemplos de DSPIC; no son exhaustivos].

En los productos DSP, espere una combinación de:
Espere cosas como desplazadores de barril,
canalizaciones amplias y rápidas y tiempos de ejecución de ciclo único rápidos,
instrucciones de ciclo único amplias,
DMA [6 u 8 canales, búfer de RAM de puerto dual] rangos de direccionamiento de memoria lineal grandes [programa de 4 Mword , 64 kB de datos] características especializadas orientadas a la aritmética
Tal vez:
periféricos especializados como control de motor,
hardware para varios estándares de comunicaciones diferentes [CAN, IIC, UART, IIS, AC97, ...] búferes de comunicaciones más profundos que los habituales [4 bytes] más rápidos y /o ADC más anchos de lo habitual [2 Msps, 10 o 12 bits]

Encontrará la mayoría de estos en la familia DSPIC, y cada vez más en las familias de procesadores gp.
En casos extremos, obtiene microcodificación de usuario y más.

Si no recuerdo mal, escuché por primera vez sobre el esfuerzo de diseño de dsPIC en 1999, las primeras muestras se entregaron a principios de 2002 con piezas de producción a finales de 2002 o principios de 2003. Todavía tengo un 30F2010 hecho a mano en un paquete DIP de cerámica de 28 pines fue etiquetado accidentalmente como 30F6010. Solo funcionó a 1/3 de la velocidad máxima final, y estaba marcado a mano como el n. ° 55 o algo así.
También se pueden sincronizar hasta 200 o 260 MHz, mientras que la línea PIC solo admite hasta 4 a 20 MHz. Ser 10+ veces más rápido es definitivamente un punto a considerar.
@Havenard: señaló que se trata de una sesión de preguntas y respuestas de 2014: mencionó PIC32 como una posible alternativa al DSPIC. El PIC32MX 2007 tiene Cmax (frecuencia de reloj máxima) de 80 MHz. El PIC32MZ 2013 tiene Cmax de 252 MHz. || Comparación útil aunque incompleta aquí {Wikipedia}.

Algunas de las ventajas de un dsPIC sobre los PIC de arquitectura anterior, como las familias PIC 16 y 18:

  1. Rutas de datos de 16 bits de ancho y ALU, en comparación con 8.

  2. Capacidad para abordar directamente (versiones posteriores de ambas arquitecturas ampliaron esto de varias maneras torpes) más memoria de datos. Un PIC 16 básico puede direccionar 128 bytes directamente, 512 con banca. Los PIC 16F1xxx más nuevos tienen banca extendida para permitir el direccionamiento de más memoria de datos. La arquitectura PIC 18 está limitada a 4k bytes. La arquitectura dsPIC puede direccionar 64k bytes o 32k palabras de 16 bits directamente, aunque por varias razones solo la mitad está disponible para RAM en la arquitectura básica. Un esquema bancario en algunos de los modelos posteriores ha ampliado eso.

  3. Más rápido. El 30F original podía funcionar a 30 MIP, con 40 MIP como parte de la norma ahora. La nueva serie E puede ejecutar hasta 70 MIP, aunque hay más razones por las que podría quedarse esperando algo que los modelos anteriores más lentos. Todavía son significativamente más rápidos en promedio.

  4. Capacidad DSP. El motor DSP tiene dos acumuladores de 40 bits y el hardware habitual para realizar una secuencia de operaciones MAC en arreglos, un MAC por ciclo de instrucción (consulte la respuesta de Dave Tweed). El MAC y las instrucciones relacionadas superponen la indexación de la matriz y la terminación del bucle con la acumulación múltiple real.

  5. 15 "registros de trabajo" de 16 bits utilizables por software en lugar del único registro W de 8 bits de las arquitecturas PIC de 8 bits.

  6. Cambiador de barril.

  7. Ciclo único 16x16 --> Multiplicación de 32 bits.

  8. División de hardware. Una operación de 32 div 16 --> 16 bits requiere 18 ciclos.

  9. Un montón de instrucciones de 3 operandos. Por ejemplo, puede agregar el contenido de dos registros de trabajo y poner el resultado en un tercero, todo en un solo ciclo. Esto se aplica a la mayoría de las operaciones matemáticas, lógicas y de desplazamiento.

  10. En general, un conjunto de instrucciones más regular y simétrico.

  11. Interrupciones vectoriales. El PIC 16 tiene un solo vector de interrupción y el PIC 18 tiene dos. En las partes de 16 bits (PIC 24, dsPIC 30 y 33), cada fuente de interrupción tiene su propio vector. Esto reduce la latencia en la rutina de interrupción porque no tiene que gastar ciclos para averiguar qué interrupción atender.

    Esto también permite una mejor arquitectura de software. La rutina de interrupción para un periférico en particular puede estar en el mismo módulo que el otro código que maneja ese periférico, en lugar de tener que tener una rutina de interrupción global.

  12. Varias otras ventajas que se desprenden de la arquitectura más amplia.

Por lo general, la característica distintiva clave de un DSP en comparación con una CPU de propósito general es que el DSP puede ejecutar ciertas operaciones de procesamiento de señales con pocos o ningún ciclo de CPU desperdiciado en instrucciones que no calculan resultados.

Una de las operaciones más básicas en muchos algoritmos DSP clave es la operación MAC (multiplicación-acumulación), que es el paso fundamental que se utiliza en los productos cruzados y de punto de matriz, filtros FIR e IIR, así como FFT. Un DSP normalmente tendrá una organización de registro y/o memoria y una ruta de datos que le permite realizar al menos 64 operaciones MAC en pares de datos únicos en una fila sin desperdiciar relojes en la sobrecarga de bucle o movimiento de datos. Las CPU de uso general generalmente no tienen suficientes registros para lograr esto sin usar instrucciones adicionales para mover datos entre registros y memoria.

+1 por el énfasis en las operaciones MAC. Estos son sin duda el núcleo de la mayoría de las operaciones de DSP.
Esa es una descripción general de DSP, no específicamente dsPIC, que es mucho menos capaz que lo que ha descrito.
@Clifford: Si bien mi respuesta está escrita principalmente para abordar la pregunta más general, "¿qué es un DSP?", No hay nada que no sea cierto sobre el dsPIC específicamente.
Dijiste " al menos 64 operaciones MAC", que están lejos de las dos de dsPIC . Para ser justos, el dsPIC es un DSC, no un DSP; ese concepto erróneo en la pregunta no se aborda aquí. También aprecio que fue hace mucho tiempo, y probablemente académico: cualquier persona que analice este problema ahora haría bien en reevaluar el mercado de las piezas apropiadas.
@Clifford: Creo que tienes el extremo equivocado del palo en este caso. Es cierto que el dsPIC tiene solo dos instrucciones MAC diferentes, pero eso no es de lo que estaba hablando. Hablaba de rendimiento: la capacidad de ejecutar instrucciones MAC de forma continua, sin necesidad de ciclos adicionales para el movimiento de datos o sobrecarga de bucle. Las instrucciones REPEAT y DO eliminan la sobrecarga del bucle, y las memorias X e Y en el chip brindan acceso a los datos, siendo su tamaño la principal limitación. Esto es lo que, en última instancia, limita la cantidad de MAC que puede hacer antes de que necesite detenerse y mover datos.
Tienes razón. Entendí mal tu punto. Pensé que no estabas sugiriendo MAC concurrente sin bucle. De hecho, el dsPIC tiene un bucle de hardware extendido (múltiples instrucciones) en comparación con el PIC24.

El dsPIC33 es esencialmente un PIC24 con una modesta capacidad DSP, principalmente un MAC dual. Está dirigido al control motor. Llamarlo DSP sería exagerar: Microchip se refiere a él como un controlador de señal digital, lo que refleja su aplicación objetivo de control de motores.

Lo he usado en aplicaciones de procesamiento de señales modestas para la decodificación de banda base de GMSK de baja velocidad, pero esa aplicación luego se implementó y amplió con éxito en un ARM Cortex-M3 a 72 MHz. No usaría ningún tipo de PIC por elección. Aparte del nicho PIC32, son arquitectónicamente extraños e inconsistentes en toda la gama. ARM Cortex-M4 o M7, por ejemplo, poseen un soporte DSP mucho más extenso que dsPIC con una selección mucho más amplia de piezas y rango de rendimiento.

Puede procesar la señal sin usar un DSP dedicado. Los DSP actuales se vuelven útiles cuando se procesan múltiples señales o cuando se opera a frecuencias de muestreo muy altas, como por ejemplo, para radio definida por software. Sin embargo, cada vez más podría usar un FPGA para eso.

¿Por qué no optar por un procesador de 32 bits muy potente? ¿Es realmente tan importante tener un procesador "DSP" sobre un potente procesador de 32 bits? El costo de los procesadores de 32 bits se ha reducido bastante ahora.
@ quantum231: he editado la respuesta: hubo un error tipográfico: "con" -> "sin"; así que ahora esencialmente dice eso. Además, no necesita ser tan poderoso; Depende de la aplicación. Hay, por ejemplo, proyectos de efectos de guitarra basados ​​en Arduino (AVR). El procesamiento de señales de audio no requiere necesariamente mucha potencia. Otro error tipográfico nos dice que "no" nos daría un PIC por elección. ¡Edición de teléfono con dedos gordos!
@quantum231 Legado e inercia. Piense como una empresa con productos e infraestructura existentes.