fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Dudas sobre dsPIC.

3 Respuestas
2 Usuarios
0 Reactions
1,565 Visitas
beamspot
Respuestas: 1132
Topic starter
(@beamspot)
Noble Member
Registrado: hace 17 años

Hola:

Este finde estuve pensando un rato sobre los dsPIC, a raíz de un artículo en la Elektor. Por eso, este lunes por la mañana le he echado una ojeada a algunos de sus PDF. Por influencia de mis vecinos de BCN (a 40Km), he leido los PDF's en 'Diagonal', 😈 y a raiz de algunos puntos que no me han quedado claros, he decidido hacer una 'consulta popular'. 😈

Veamos, siguendo los dictados de Jack, estos son los detalles internos (corregidme si me equivoco):

- Los dsPIC son en realidad los PIC de 16 bits a los que han añadido un 'DSP Engine' (de DSP poco, a mi parecer, como mucho DSC).
- Aunque tienen la estructura moderna de 16 acumuladores (como los AVR, ARM, MIPS, PIC32, etc), el DSP sólo tiene dos acumuladores de 40 bits.
- Aunque dichos acumuladores son de 40 bits, el MAC es de 17x17 en multiplicador que se acumula en los 40 bits.
- Sobre los acumuladores sólo hay una ALU relativamente simple (sin multiplicador ni divisor).
- Los datos de multiplicar y dividir del DSP cogen los datos de ciertos registros W.
- Tiene Bit Reversal.
- Tiene Saturación.
- Tiene (barrel) Shift sobre los acumuladores de 40 bits, con un límite de shift/rotate de máximo 16/17 bits.
- Divisor de hasta 32/16 bits. Multiplicador de 17 x 17 bits.
- Coma fija.
- No tiene DMA.
- No tiene contadores autoin-decrementables de datos de entrada, salida, posición TAP para FIR, etc.
- 40MIPS máximo.
- 12 bits de ADC máximo.
- Como mucho, 4KB de RAM.

En resumen, que el tal DSP engine sólo permite operaciones relativamente simples sobre el acumulador de 40 bits, mientras que el resto lo hace sobre 16/32 bits. A pesar de tener arquitectura Harvard, no permite multiplicar un valor de la RAM/W con un valor de la flash y acumular en un sólo ciclo de reloj. Básicamente, un micro con algunas capacidades de cálculo matemático (multiplicador, divisor, barrel shifter, saturación, inversión del orden de los bits), y un par de acumuladores de 40 bits.

O sea, que un ARM Cortex M3, sin contar precio, da mas prestaciones si excluimos el acumulador de 40 bits y la utilidad MAC (aunque no cuesta mucho implementar una de 64 bits con pocas instrucciones en el ARM enlazando dos registros de 32 bits). ¿Estoy en lo cierto?

Para que no os mireis mucho los ARM:
- 16 registros de 32 bits.
- Multiplicador y divisor de 32x32 bits sobre cualquier registro.
- Hasta 96MIPS a 96MHz.
- Saturación.
- Según el manual, sistema de inversión del orden de los bits.
- Barrel shifter de 32 bits completo sobre cualquier registro.
- DMA en muchos modelos.
- Hasta 12 bits ADC a 2MSPS (hay modelos con 16 bits de ADC, pero son ARM7-TDMI).
- Coma fija.
- Precios por debajo del euro en algunos casos.

Responder
2 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Hombre tampoco hay que pasarse, (valgame decir primero que no he usado los dsPIC todavía).

Estas comparando un dsPIC (con un core de 16bits) contra un ARM7-Cortex3 (con un core de 32bits).

A partir de ahí decir que dsPICs hay dos familias 30 y 33 y cambian cosas entre ellas, por ejemplo la velocidad (dsPIC30 --> 30MIPS, dsPIC33 --> 40MIPS), tambien hay que decir que ambos son DSC's no DSP's (y así lo anuncian los de Microchip).

Respecto a las características puedo decir:
- Hay dispositivos con 16 A/D de 10bitsx4Ms/s, hay de 32 x 12-bit @ 500 ksps
- Algunos si que tienen DMA ( http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532303 " onclick="window.open(this.href);return false; )
- Tienen librerías optimizadas para los cálculos de DSP ( http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en023598 " onclick="window.open(this.href);return false; ), con tiempos muy interesantes (PID --> 0.75us, Complex FFT N=64 --> 93.4 us, Vector Dot Product N=32 --> 2.9 us, ...)

S2

Ranganok Schahzaman

Responder
beamspot
Respuestas: 1132
Topic starter
(@beamspot)
Noble Member
Registrado: hace 17 años

Hola:

Gracias por la pronta respuesta. Al respecto un par de comentarios:

1º Efectivamente, Microchip indica claramente que los dsPIC son en realidad DSC's (como tal consta en su página web y en muchos otros sitios), sólo que el 'DSP engine' induce a error (algo muy habitual de la gente de márquetin de cualquier empresa).
2º Aunque el core de los ARM sea de 32 bits, ARM y derivados lo 'venden' como de 16. Otra cosa típica de márquetin, para 'invadir' un terreno que en teoría no pisan, pero que en realidad apenas existe.
3º Aunque uno sea de 16 bits y el otro de 32, creo pertinente comparar dos micros de similares precios/prestaciones, ya que los Cortex de marras me los han llegado a ofertar a 1.2€/1KU anuales (LPC's pequeños, si la memoria no me falla, aunque hace tiempo de esto). Eso si que son precios competitivos.
4º Lo del DMA, según la tabla comparativa de Microchip que me he mirado, aparecía en todos como No, aunque igual se me ha escapado alguno.
5º Lo de las librerías optimizadas, ni me lo he planteado. Si hay algo que nunca falta en Microchip son librerías. Pero ST también tiene librerías de DSP para sus STM32, aunque no he mirado tiempos. Por supuesto, habría que mirar la parte de velocidades de reloj, ya que esta parte de tiempos siempre depende de este último, y los ARM además suelen tener tiempos de espera y sistemas de aceleración de la (lenta en comparación) Flash.
6º El dsPIC que pones es bastante generoso en cuanto a RAM (16KB). Presupongo que he mirado mal las tablas comparativas que comento en 4. Esto me pasa por leer en Diagonal.

Y para rematar la faena, este era un ejercicio que en mi retorcida mente enlazaba con las gafas de ultrasonidos. De todas maneras, mi apuesta sería más radikal: FPGA, que tienen potencia de cálculo estratosférica en comparación (Spartan 3A, la más pequeña: 3x 250 millones de operaciones MAC mínimo por segundo a 18 x 18 + 48 bits).

Responder
Compartir: