Autor Tema: Reproductor de Mp3 con dsPic  (Leído 109800 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Darukur

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 464
    • Informacion, recursos y ejemplos para desarrollos con microcontroladores
Re: Reproductor de Mp3 con dsPic
« Respuesta #30 en: 08 de Noviembre de 2006, 22:56:33 »
Martin, no se si ni siquiera que carax baje pero te comento que del doc ese con links que me pasaste baje como 6 libros de Digital signal procesing y D.S.Procesors

Despues los empezamos a mirar, no se en que momento, vos sabes nuestros tiempos  :(
El que no sabe lo que busca no entiende lo que encuentra.
Mi Pagina Web:  http://www.sistemasembebidos.com.ar
Mi foro:             http://www.sistemasembebidos.com.ar/foro/

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #31 en: 09 de Noviembre de 2006, 00:53:17 »
Si, tenes razón. Bajo tantas cosas que me olvido de todo lo que tengo, por ahí en mis 50 cds de "todo ebooks" hay algo pero quería saber de alguién que haya leido algún libro de DSP interesante.
Con respecto a los tiempos sabés que tengo mi PYME en casa y el inversor rondando a cada rato  :mrgreen:. Tengo que terminar el bendito gabinete para mañana y ensamblar la mecánica, por suerte Charly me va a dar una mano.

Salutes.

Martín
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #32 en: 09 de Noviembre de 2006, 01:11:49 »
Pufff ya encontré a la biblia sobre DSP:

Proakis - Digital Signal Processing - Principles, Algorithms & Applications

Libro de 1000 páginas, para imprimirlo y leerselo en una noche :)

Voy a ver si me preparo unos pochoclos y me siento a leerlo en la PC :)

Salutes.

Martín
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Darukur

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 464
    • Informacion, recursos y ejemplos para desarrollos con microcontroladores
Re: Reproductor de Mp3 con dsPic
« Respuesta #33 en: 09 de Noviembre de 2006, 08:41:43 »
Che en ese doc baje no uno sino SEIS manuales de DSP!
El que no sabe lo que busca no entiende lo que encuentra.
Mi Pagina Web:  http://www.sistemasembebidos.com.ar
Mi foro:             http://www.sistemasembebidos.com.ar/foro/

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #34 en: 09 de Noviembre de 2006, 21:26:27 »
Si los voy a mirar. ¿Qué pasó al final con el PWM?

Por suerte ya termino el gabinete y mañana ya estoy listo para agregar más info al proyecto. Voy a empezar de cero ya que lo que escribí sobre el decodificador quedó medio descolgado.

Saludos.

Martín
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #35 en: 09 de Noviembre de 2006, 22:27:05 »
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Darukur

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 464
    • Informacion, recursos y ejemplos para desarrollos con microcontroladores
Re: Reproductor de Mp3 con dsPic
« Respuesta #36 en: 10 de Noviembre de 2006, 09:11:43 »
Buenisim, despues lo miro.
El tema del PWM es asi:
Tiene 16 bits de resolucion maximo, que es dependiente de la relacion entre la frec del oscilador y la del timer que uses.
Se necesitan al menos 8 ciclos de PWM repetidos para asegurar un valor continuo para el ROC.
Si queremos 44100Hz para frecuencia de muestreo, necesitamos 352800Hz de freq de PWM con lo que la frec de Clock deberia ser para tener 16 bits Fclock=2^16*352800=23121100800, no da no?
Ademas 352800Hz tiene para 1bit  menos de 3uS de duracion la anchura del pulso, imaginate el tipo de capacitor que necesitas para que tome ese pulsito.

En fin, con el PWM se puede hacer formas de onda pero no para lo que queremos.
El que no sabe lo que busca no entiende lo que encuentra.
Mi Pagina Web:  http://www.sistemasembebidos.com.ar
Mi foro:             http://www.sistemasembebidos.com.ar/foro/

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #37 en: 10 de Noviembre de 2006, 11:16:24 »
Ja 23GHz, ¿usamos nitrógeno líquido? :mrgreen:
Estuve mirando el DAC del MintyMP3 y usan el CS4340. Enlace:

http://web.media.mit.edu/~ladyada/make/minty/hardware.html

Salutes.

Martín
« Última modificación: 11 de Noviembre de 2006, 12:07:11 por Zaphyrus »
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #38 en: 10 de Noviembre de 2006, 14:39:58 »
Estoy dando vueltas por el foro de EdaBoard para ver si obtengo más información para el MP3 y acá encontré la forma de que una persona hace los algortimos para los DSP:

Citar
For instance, Porting MP3 Decoder on DSProcessor using assembly language.
(1)Floating Point C
(2)Discriminating tables,gobal variables,local variables,buffer from floating point c.
(3)Transforming 2/3 dimension variables/tables to one dimension array or point.
(4)Observing the values of table,gobal variable,local variable to define
integer/fraction precision using Q format.
(5)Using "printf/fprintf" watchs the precision to avoid overflow.
(6)Rearranging Q format.
(7)Transforming fixed point c to DSP assembly language.

Enlace:

http://www.edaboard.com/viewtopic.php?t=109517&highlight=mp3

¿Alguien sabe que es "Q format"?

Saludos.

Martín
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #39 en: 11 de Noviembre de 2006, 14:47:46 »
Me auto respondo 8)

Estuve investigando el motor DSP de los dsPIC y usa este formato de Q Format. Así que es importante que lo sepamos para el reproductor así le sacamos el jugo en assembler :)

Acá dejo una traducción que encontré en un PDF en internet llamado "Introduction to DSP" de la University of Hertfordshire:
Citar
Notación Punto Fijo:

Algunas veces llamado notación de punto fraccional o Q format, usa un punto binario implícito para representar fracciones binarias. Este punto siempre se mantiene en una locación fija. El rango dinámico de un procesador es el rango entre el número más pequeño y más grande que se puede representar.
En un procesador de 16 bits, el rango dinámico es 32767 a -32768. Tal pequeño rango dinámico puede facilmente crear overflow. Por ejemplo, 1000*1000 = 1000000, el cual es un overflow.
Sin embargo, si el rango numerico es limitado, o más precisamente escalado, de 1 a -1, una multiplicación nunca podría producir overflow. Por ejemplo, la multiplicación de 2 números fraccionarios dentro del rango de 1 a -1 debe siempre producir un resultado que es también una fracción. El resultado por lo tanto es confinado dentro del rango de 1 a -1.
Desafortunadamente, sumas sucesivas puede producir valores de overflow fuera del rango de 1 a -1. Este punto debe ser recordado cuando se realiza aritmetica de punto fijo.
El procesamiento de señales son sumas y multiplicaciones intensivas. Un overflow puede tener consecuencias serias (por ejemplo  recorte de una señal). Un sistema de punto fijo puede resolver este problema revisando el overflow después de cada operación matemática, o conociendo que la entradas y salidas de la operación son bien manejadas.

Notación Q de Punto Fijo:

El principio de la notación Q es la aplicación de un simple coeficiente de escala para convertir fracciones en enteros para que DSP de punto fijo pueda manejarlos. La letra Q significa "Cantidad de bits fracionales" (Quantity of fractional bits) y el número que sigue la Q indica el números de bits que son usados por la fracción. Esta divide el número en una región superior y una inferior de bits donde la región superior contiene el bit de signo y cualquier valor entero, y los bits inferiores contienen la fracción.
Cualquier formato Q es posible, pero Q15 es el más ampliamente usado en los DSP de 16 bits y Q31 es mas conmunmente usados en los DSP de 32 bits. En el formato Q15, un punto decimal imaginario es colocado entre los bits 15 y 16. El rango superior en este caso es un solo MSB (para los DSP de 16 bits) el cual es esencialmente un bit de signo, o bits 16-31 en un DSP de 32 bits. Los restantes 15 bits son usados para representar la parte fracionaria del número. Para convertir un entero en formato Q a un valor de punto flotante un coeficiente de escala es necesario. Si el número Q es 15, el coeficiente o resolución de la fracción será 2^-15 o 30.518e-6.

Rango dinámico en Q15:

El rango dinámico es el mismo para Q15 que para los enteros normales. Es el coeficiente de escala el que diferencia las 2 partes y por lo tanto se puede tener dificultades para saber el formato en uso. Como se mencionó anteriormente, para prevenir el overflow de las entradas y salidas puede llevarse a fracciones del rango de 1 a -1 simplemente aplicando el coeficiente de escala.

Representación numerica en Q15:

Escalar un número es simplemente:

Entero = Número_Fraccional_Q15 * 2^15


Rango dinámico:
Número                               Mayor       Menor
Número fracionario               0.999              -1
Entero escalado por Q15       32767       -32768



En otro post voy a seguir con las reglas del uso de este formato.

Saludos.

Martín
« Última modificación: 11 de Noviembre de 2006, 20:51:49 por Zaphyrus »
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #40 en: 11 de Noviembre de 2006, 16:49:13 »
Sigo con las reglas del uso del formato:

Citar
Reglas para las operaciones:

La mas importante regla para el uso del formato Q15 de punto fijo es evitar el uso de número mayores de 1 o menores de -1. Si multiplicamos 0.5 y 0.45 el resultado es otra fracción. Multiplicando el producto por 2 puede ser realizado usando 2 métodos. Un método es multiplicar primero una de las entradas por 2, si el resultado de la operación intermedia excede +/-1.0 tendremos un problema. Las entradas pueden ser primero escaladas para abajo y luego escaladas para arriba más tarde, pero esto está lejos de ser eficiente. Una alternativa al método es sumar el producto a si mismo.
Estas es una de las dificultades de usar operaciones de punto fijo. El programador debe pensar acerca de estos problemas y planear con anterioridad.
Otra importante regla es que todos los números deber ser escalados al mismo formato Q (Q15 en nuestro ejemplo), colocando el punto decimal en ambos operandos en el mismo lugar, antes que la suma o resta es realizada. Generalmente esto también es praticado en la multiplicación. Sin embargo, mezclar formatos Q no es deseado.

Suma en Q15:

Decimal               Q15                            Re-escalado Q15/32767
0.5+0.05=0.55     16384+1638=18022     0.55
0.5-0.05=0.45      16384-1638=14746      0.45

En la tabla de arriba vemos la suma en Q15. Los números 0.55 y 0.55 son cada uno escalados por 32767 (coeficiente Q15) y luego sumados. Dado que los números son escalados con el mismo formato Q, el punto decimal en ambos estará en el mismo lugar (bit 15). La suma es luego re-escalada para verificar el resultado.
En el segundo ejemplo vemos la resta.       

Multiplicación en Q15:

Cuando los números escalados son multiplicados, el coeficiente de escalado es multiplicado. Para compensar, un segundo factor de escala que pondrá los datos en la posición de bit correcta es usado. La muestra de la multiplicación en Q15 da una idea de cuan grande el número puede ser. Pero como podemos también ver, la división por el coeficiente Q15 escala el número de vuelta y da el resultado correcto.
Anticipando esto, la multiplicación sobre un DSP de 16 bits produce un resultado de 32 bits. En realidad, el resultado es empaquetado dentro de los bits superiores y viene con 2 bits de signo. El programador puede desplazar un bit hacia la izquierda antes de almacenar los bits superiores, los DSP estan actualmente optimizados para realizar esta operación y luego almacenar el dato.
Podemos ver como la multiplicación Q15*Q15 funciona. En particular cuando los coeficientes de escala son multiplicados el resultado es una nueva constante de escala con un valor de Q igual a la suma de las 2 constantes Q usadas en los operandos.

Dado A y B en el formato Q15, el resultado C=A*B es:

C=(A*2^15)*(B*2^15)=A*B*2^30
C=(A*Qx)*(B*Qy)=A*B*Qx+y

Es evidente que la salida no es mas un formato Q15. Para compensar esto, necesitamos preguntarnos donde está el nuevo punto decimal. Notando que 2^30 es lo mismo que decir Q30, sabemos que el punto decimal está en el bit 30 del resultado de 32 bits. Para regresar a Q15 (2^15) debemos multiplicar por 2^-15 (desplazamiento hacia la derecha por 15).
El formato Q de punto fijo tiene la ventaja de prevenir overflows pero introduce complicaciones para los progamadores de DSP.

Bueno espero que se haya entendido.

Saludos.

Martín
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #41 en: 12 de Noviembre de 2006, 16:16:51 »
Darukur, que te parece empezar con grabación PCM y lo usamos con el código que tenes para el FAT16. Es decir, grabamos algo, lo guardamos en la MMC y luego lo reproducimos. De esta forma cubrimos una de las características que tienen algunos reproductores de MP3 de grabar conversaciones.
Creo que es una buena manera de entrar en calor para lo que viene después.

Navegando llegué a esta página sobre experimentos con DSP. Con un simple microcontrolador Atmel ATtiny26 hace Delay, Echo, Pitch Conversion. Muy interesante:

http://elm-chan.org/works/vp/report.html

Saludos.

Martín
« Última modificación: 12 de Noviembre de 2006, 17:56:30 por Zaphyrus »
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Darukur

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 464
    • Informacion, recursos y ejemplos para desarrollos con microcontroladores
Re: Reproductor de Mp3 con dsPic
« Respuesta #42 en: 13 de Noviembre de 2006, 08:51:33 »
Estuve leyendo lo que posteaste, muy bueno. Me quedo claro.
Sip, vamos a leer primero un WAV y mandarlo a un DAC casero.
Salute
El que no sabe lo que busca no entiende lo que encuentra.
Mi Pagina Web:  http://www.sistemasembebidos.com.ar
Mi foro:             http://www.sistemasembebidos.com.ar/foro/

Desconectado Zaphyrus

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 323
    • Mi blog: Es cuestión de actitud
Re: Reproductor de Mp3 con dsPic
« Respuesta #43 en: 13 de Noviembre de 2006, 18:05:56 »
Acá dejo algunos enlaces más sobre MP3:

http://datacompression.info/MP3.shtml
http://www.mpeg.org/MPEG/audio.html

Y en esta página están los test que se le realizan a los codificadores y decodificadores de MP3:

http://web.archive.org/web/20020413110354/privatewww.essex.ac.uk/~djmrob/mp3decoders/tests.html

Con respecto al wav hay que investigar como es el formato de archivo. Este paso lo podemos realizar en un PIC18 para ir adelantando.
¿El DAC casero que comentas es el R2R?

Salutes.

Martín
"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas." Arthur C. Clarke.
Mi Proyecto Final de Carrera-Microprocesador RISC de 16 bits en HDL: http://martin.calveira.googlepages.com/home
Mi página web o blog: http://es-cuestion-de-actitud.blogspot.com/
Martín Calveira - Zárate - Argentina

Desconectado Darukur

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 464
    • Informacion, recursos y ejemplos para desarrollos con microcontroladores
Re: Reproductor de Mp3 con dsPic
« Respuesta #44 en: 14 de Noviembre de 2006, 08:57:56 »
Err, el R2R o el otro que no me acuerdo el nombre en donde cada resistencia es el doble de la anterior.
Obviamente el segundo depende de la precision de las resistencias.
Dale. Estoy entusiasmado.
PD: Que manera de chivar en el GYM!
El que no sabe lo que busca no entiende lo que encuentra.
Mi Pagina Web:  http://www.sistemasembebidos.com.ar
Mi foro:             http://www.sistemasembebidos.com.ar/foro/