Noticias:

Auriculares.org: el foro sobre auriculares en español

Menú Principal

Asubio DAC [En proceso....]

Iniciado por lord.camilo, Junio 18, 2009, 23:55:01

Tema anterior - Siguiente tema

glt

#15
Descubrí que tienen pensado hacer algo similar al projecto HIFIDUINO. Pues me parece una excelente idea! porque ese soy yo  :).  Al respecto a los relés, ¿No se pueden controlar los relojes directamento con los pines digitales del Arduino?  Otra opción es utilizar un reloj de dos frecuencias como las que fabrica Silicon Labs: https://www.silabs.com/Support%20Documents/TechnicalDocs/si532.pdf  

Aqui estan vendiendo el SRC:  http://cgi.ebay.com/5x-SRC4392-New-Hi-End-Sample-Rate-Converter-Location-US_W0QQitemZ110408096215QQcmdZViewItemQQptZLH_DefaultDomain_0?hash=item19b4d5d9d7&_trksid=p3911.c0.m14&_trkparms=65%3A12|66%3A2|39%3A1|72%3A1205|240%3A1318|301%3A0|293%3A1|294%3A50

lord.camilo

#16
Hola glt, Bienvenido! y encantado de tenerte por aquí,

No sabía que te defendias con el español :D :D jejejejeje

Me alegra que el proyecto te parezca interesante, cuanta más gente seamos aportando cosas y corrigiendo posibles errores mejor será el resultado final ;). Espero que nos eches una mano con la programación de todo el sistema cuando llegue el momento ;).  

Cita de: glt en Junio 30, 2009, 08:46:43
Al respecto a los relés, ¿No se pueden controlar los relojes directamento con los pines digitales del Arduino?  

A ver, si te refieres a controlar los relés directamente, sin los transistores, pues no es posible debido a que la máxima corriente de salida que da el 328P es de 20 mA y el relé necesita 36 mA (a 5Vdc) para poder funcionar.

Si te refieres a controlar los relojes de entrada a los DAC mediante sus entradas de "enable", pues tampoco es posible debido a:


  • SYSCK, generado por el PCM2707 no se puede activar/desactivar, mediante el uC.
  • La entrada MCLK del SRC4392 necesita en todo momento estar alimentado por la señal MCLKSRC (generada por XO2/XO3 que si estan controlados directamente por el uC) para poder generar RXCKO.
  • La salida RXCKO puede ser activada/desactivada mediante software accediendo a un registro del SRC4392, por lo tanto no es necesario un relé para su control

Por otra parte si queremos alimentar el MCLK del los DACs con RXCKO (Funcionamiento síncrono para el DIR del SRC4392) será necesario desactivar MCLKSRC y SYSCK. Mientras que si queremos alimentar los DACs con SYSCK (Funcionamiento síncrono para la entrada USB) será necesario desactivar MCLKSRC y RXCKO. Y por último si queremos alimentar los DACs con MCLKSRC (funcionamiento asíncrono) habrá que desactivar SYSCK y RXCKO.

Por lo tanto, como decía, es indispensable el uso de los relés o del multiplexor analógico para seleccionar el reloj con el cual se quiere alimentar los DACs. Cual crees que puede ser la mejor opción respecto al rendimiento.

Cita de: glt en Junio 30, 2009, 08:46:43
Otra opción es utilizar un reloj de dos frecuencias como las que fabrica Silicon Labs: https://www.silabs.com/Support%20Documents/TechnicalDocs/si532.pdf

Es una opción interesante, pero me la impresión de que es más difícil conseguir este tipo de relojes. Ya que no están disponibles directamente en sitios como Farnell o Mouser y es necesario contactar directamente con Silicon Labs. Qué opinas del rendimiento de estos relojes frente a los crystek C33xx, la verdad es que viendo los datasheets de ambos, las características de los si532 parecen mejores. Aunque por otra parte los crystek son más fáciles de conseguir y son un modelo con un rendimiento perfectamente probado en otros proyectos como el OPUS DAC de Twisted Pear. Otra opción serían los relojes de TentLabs pero tienen el inconveniente de ser bastante caros.  

Cita de: glt en Junio 30, 2009, 08:46:43
Aqui estan vendiendo el SRC:  http://cgi.ebay.com/5x-SRC4392-New-Hi-End-Sample-Rate-Converter-Location-US_W0QQitemZ110408096215QQcmdZViewItemQQptZLH_DefaultDomain_0?hash=item19b4d5d9d7&_trksid=p3911.c0.m14&_trkparms=65%3A12|66%3A2|39%3A1|72%3A1205|240%3A1318|301%3A0|293%3A1|294%3A50

Impresionante, gracias por el enlace, menudo precio. Aunque de momento todavía no estoy en proceso conseguir los componentes, cuando llegue el momento tendré muy en cuenta la opción de eBay no imaginaba que se podían conseguir este tipo de cosas y menos por esos precios.

Por cierto glt, enhorabuena por tu proyecto Hifiduino, me parece muy interesante y como bien dices me ha dado muchisimas ideas ;). Muchas gracias por compartirlo.

Un saludo.

glt

Cita de: lord.camilo en Junio 30, 2009, 13:27:06
Hola glt, Bienvenido! y encantado de tenerte por aquí,

No sabía que te defendias con el español :D :D jejejejeje

Por otra parte si queremos alimentar el MCLK del los DACs con RXCKO (Funcionamiento síncrono para el DIR del SRC4392) será necesario desactivar MCLKSRC y SYSCK. Mientras que si queremos alimentar los DACs con SYSCK (Funcionamiento síncrono para la entrada USB) será necesario desactivar MCLKSRC y RXCKO. Y por último si queremos alimentar los DACs con MCLKSRC (funcionamiento asíncrono) habrá que desactivar SYSCK y RXCKO.

Por lo tanto, como decía, es indispensable el uso de los relés o del multiplexor analógico para seleccionar el reloj con el cual se quiere alimentar los DACs. Cual crees que puede ser la mejor opción respecto al rendimiento.



Muchas gracias por la bienvenida!  Espero poder contribuir a este proyecto (y también practicar un poco el español ya que me lo aprendí en antiguos tiempos cuando las computadoras personales todavia no existían  ;)  pues me perdonan los errores ortográficos  ;D)

No sabía que se tienen que controlar los relojes de entrada para el SRC pues es un aparato asincrónico. O sea que si funciona igual que el hermano menor SRC4192 (el que tengo en el twistedpearaudio kit), entonces la frecuencia de salida es siempre controlada por los dos relojes locales. O sea que este modo de operar es preferido pues reduce el jitter.

De todos modos, tengo que leer el data sheet para entender mejor a qué te refieres.

Carlos

Excelente español ;) Y bienvenido...

Max

Lamento no poder ayudar en este proyecto. :(

Pero disfruto mucho con la lectura de este hilo y comprendo mas de lo que esperaba. :)
Auriculares: HD650, ATH M50, Yuin PK2, Shure SE102
Amplificadores: Fiio E5, Ibasso D2 Boa, Beresford TC-7520 (LM4562NA)
Fuentes: PC, iPod Nano 4G

lord.camilo

Me alegro de que te este resultando interesante Max  :D :D
Si aguantas y comprendes el pedazo ladrillo que estoy apunto de postear... :juer: estoy seguro de que si que podras aportar cosas  ;) ;)

Un saludo

lord.camilo

#21
ASUBIO DAC: Receptor S/PDIF y ASRC

Aquí esta el esquemático de la parte correspondiente al SRC4392:



Se usaran los siguientes bloques funcionales del SRC4392:


  • Puerto A. Se configura como una entrada, encargada de recibir la señal I2S enviada por el PCM2707.
  • Puerto B. Se configura como una salida, encargada de enviar la correspondiente  señal digital I2S a los DACs, que se encargaran de su conversión a formato analógico.
  • DIR (Digital Interface Receiver). Encargado de seleccionar una de las cuatro entradas S/PDIF para posteriormente recuperar los datos de audio que se encuentran embebidos en la misma.
  • ASRC (Asynchronous Sample Rate Converter). Encargado de realizar el upsampling correspondiente mediante la comparación de la frecuencia de sampleo de entrada con la frecuencia de sampleo de salida.

Este integrado estará controlado por el uC AtMega 328P utilizando para ello un bus I2C.

1. PUERTOS SERIE



1.1. PUERTO A

El puerto A se configura en modo Esclavo (Slave mode), de esta manera LRCKA y BCKA son entradas. Por otra parte se usará la entrada SDINA dejando la salida SDOUTA sin conectar.

Las salidas LRCK, BCK y DOUT del PCM2707 irán conectadas respectivamente  a las entradas LRCKA, BCKA y SDINA del SRC4392.

1.2. PUERTO B

El puerto B se configura en modo Maestro (Master mode), de esta manera LRCKB y BCKB son salidas. Por otra parte se usará la salida SDOUTB dejando la entrada SDINB sin conectar.

Las salidas LRCKB, BCKB y SDOUTB del SRC4392 irán conectadas respectivamente a las entradas LRCLK, BCLK y DIN de los dos WM8741.

2. DIR

Será el encargado de seleccionar una de:


  • Multiplexar las cuatro entradas S/PDIF para seleccionar una de ellas.
  • Recuperar los datos embebidos en la señal S/PDIF seleccionada. Mediante el uso de un decodificador.
  • Recuperar la señal de reloj embebida en la señal S/PDIF. Mediante el uso un PLL (Phase locked Loop). Esta señal de reloj recuperada por el DIR es la señal de reloj RXCKO que en nuestra aplicación no será de utilidad.



Este bloque funcional habrá que configurarlo para que utilice la señal MCLK como reloj de referencia.

En lo que respecta a las cuatro interfaces S/PDIF de entrada al SRC4392, se han configurado siguiendo  las páginas 43 y 44 del datasheet, donde viene todo explicado de una manera muy completa y visual. Cualquier recomendación que mejore, si es posible, lo descrito en el datasheet será bienvenida.

3. ASRC

Los relojes  XO2 y XO3 serán los encargados de generar la señal MCLKSRC que será nuestro reloj de referencia para todo el sistema. Por lo tanto esta señal irá conectada a:


  • Entrada MCLK del SRC4392.
  • Entradas MCLK de los WM8741.

Por tanto a partir de ahora cuando nos refiramos al MCLK estaremos hablando de la señal MCLKSRC.

Según el upsampling deseado, activaremos uno u otro reloj mediante sus correspondientes entradas de ENABLE.


  • XO2 (24.576 MHz) activo. Permitirá upsampling a 48 kHz (24.576/512), 96 kHz (24.576/256) y 192 kHz (24.576/128).
  • XO3 (22.5792 MHz) activo. Permitirá upsampling a 44.1 kHz (22.5792/512), 88.2 kHz (22.5792/256) y 176.4 kHz (22.5792/128).

Las entrada de ENABLE de cada uno de los relojes serán controladas mediante las señales SMCLK1 y SMCLK2 generadas por las salidas PC2 (pin 25) y PC3 (pin 26) del uC AtMega 328P.

Antes de entrar en detalles de configuración, aclarar que el SRC se basa en la comparación de fsin (frecuencia de sampleo que tenemos a la entrada)=LRCKA y fsout (frecuencia de sampleo que queremos a la salida)=LRCKB, estas dos frecuencias junto con un reloj de referencia que en  nuestro caso será MCLK (recordar que a esta entrada de reloj le corresponde la señal MCLKSRC generada por uno de los dos relojes externos)servirán para estimar los parámetros necesarios para realizar el correspondiente upsampling de fsin a fsout.



Al trabajar en este modo habrá que configurar el puerto de salida (PUERTO B) tal y como sigue:


  • Seleccionar MCLK como "Master clock", de este reloj se derivarán LRCKB y BCKB (64xLRCKB).
  • Seleccionar SRC como nuestra fuente de datos. De esta manera estaremos mandando al puerto de salida (puerto B) los datos procesados por el  SRC (Sample Rate Converter).
  • Seleccionar el divisor de reloj correspondiente al upsampling que se quiere realizar (MCLKSRC/512, MCLKSRC/256 o MCLKSRC/128). Por ejemplo si queremos  hacer upsampling a 96 kHz, tendremos que activar el reloj XO2 (24.576 MHz) mediante la señal SMCLK1 y seleccionar un divisor de 256, ya que de esta manera 24576000/256=96kHz.
  • Seleccionar como formato de salida 24bits I2S, para ello BFMT2=0, BFMT1= 0 y BFMT0=1 (ver registro de control 0x05)

CONFIGURACIÓN DEL DIR

Habrá que configurar el SRC de la siguiente manera:


  • Seleccionar el DIR como el origen de los datos que queremos procesar.
  • Seleccionar el MCLK como reloj de referencia.

CONFIGURACIÓN USB

Habrá que configurar el SRC de la siguiente manera:


  • Seleccionar el PUERTO A como el origen de los datos que queremos procesar.
  • Seleccionar el MCLK como reloj de referencia.

4. ALIMENTACIÓN Y DECOUPLING

AGND (pin 10), DGND1 (pin 16), DGND2 (pin 30), DGND3 (pin 43) y BGND (pin 44) estarán directamente conectadas a tierra.

VCC (pin 9), VDD18 (pin 17), VDD33 (pin 33) y VIO (pin 42) usan el esquema de decoupling recomendado por el datasheet pero además las alimentaciones se filtran mediante "ferrite beads" L3, L4, L5 y L6 tal y como se explica en el siguiente documento:

Supply decoupling.

Por otra parte BCK, LRCK y DOUT tienen una pequeña resistencia en serie de 47 ohm, tal y como se explica también en el anterior documento.

5. OTROS DETALLES

Las señales SDA1 y SCL1 del bus I2c se conectan a las entradas SDA (pin 22) y SCL (pin 20) del SRC4392 respectivamente. Las entradas A1 y A0 se conectan a un jumper ( J4) esto nos permitirá configurar la dirección del dispositivo dentro del bus I2C.

La salida de interrupción INT (pin 23) del SRC4392 necesita una resistencia de pull-up de 10k, tal y como indica el datasheet. Esta salida será leída por el uC que actuará en consecuencia, esto aun tengo que estudiarlo un poco más...

La salida RXCKO (señal de reloj recuperada por el DIR) y la entrada RXCKI se dejarán sin conectar.
Bueno pues creo que no me dejo nada, espero haberme explicado bien. Y como siempre digo cualquier duda, sugerencia o error ya sabéis... que para eso está el hilo.

Lo próximo en venir, será toda la parte dedicada a los WM8741...

Un saludo  

glt

Creo que ya entiendo lo que quieres hacer con el modo sincrónico. En este modo, los relojes usados van a ser de mas jitter (como se dice en español?). Y según los expertos, si le introduces relés o complicas las conecciones a los relojes the mas precisión, entonces le añades jitter a esos relojes.  Pues, en mi opinión creo que es mejor siempre usar el SRC y no introducir jitter a las señales de los relojes.

No sería mejor usar el SRC con la misma frecuencia de entrada (por ejemplo, usar el SRC a 44.1K para entradas de 44.1K) en vez the utilizar el reloj de menor precisión?

lord.camilo

Hola glt  :D

Cita de: glt en Julio 01, 2009, 01:20:37
Creo que ya entiendo lo que quieres hacer con el modo sincrónico. En este modo, los relojes usados van a ser de mas jitter (como se dice en español?). Y según los expertos, si le introduces relés o complicas las conecciones a los relojes the mas precisión, entonces le añades jitter a esos relojes. Pues, en mi opinión creo que es mejor siempre usar el SRC y no introducir jitter a las señales de los relojes.

Totalmente de acuerdo con todo lo que dices. Simplemente quería introducir el modo síncrono para poder hacer comparaciones con el modo asíncrono. Pero la verdad al hacerlo de esta manera todo se vuelve un poco más complicado de lo que esperaba... además de tener que introducir los relés en el camino de los relojes con los inconvenientes (jitter no tiene traducción al español ;)) que esto supone tal y como dices. Así que todavía no tengo muy claro si implementar este modo o no hacerlo, ya que probablemente no aporte nada interesante... o tal vez si? ??? no lo sé, tengo que pensarlo con más calma. Si alguien más tiene algo que decir al respecto... ya sabe.

Cita de: glt en Julio 01, 2009, 01:20:37
No sería mejor usar el SRC con la misma frecuencia de entrada (por ejemplo, usar el SRC a 44.1K para entradas de 44.1K) en vez the utilizar el reloj de menor precisión?

Hombre... la verdad que esto no se me había ocurrido :juer: y puede ser interesante, de esta manera podríamos evitar el upsampling si así lo indicamos y usariamos siempre el modo asíncrono, con lo cual se simplificarían las cosas, evitando los inconvenientes del modo síncrono... es una opción a tener en muy en cuenta.

Un saludo.

glt

Cita de: lord.camilo en Julio 01, 2009, 01:46:25


Hombre... la verdad que esto no se me había ocurrido :juer: y puede ser interesante, de esta manera podríamos evitar el upsampling si así lo indicamos y usariamos siempre el modo asíncrono, con lo cual se simplificarían las cosas, evitando los inconvenientes del modo síncrono... es una opción a tener en muy en cuenta.

Un saludo.

Hola lord.camilo,

Si, yo creo que lo que quieres hacer is comparar con y sin upconvert. Lo que se llama síncrono (ya aprendí cómo se dice  ;D), no mas pienso que es pass-through, y el DAC tiene que utilizar el reloj que fue derivado de la señal spdif or usb. Lo que hace el SRC is recalcular los samples con un nuevo reloj de mucha mas precisión.

Saludos.

lord.camilo

#25
Hola

Bueno después de pensármelo he decidido hacer caso de la sugerencia de glt (muchas gracias... ;) ;)) y eliminar el modo de funcionamiento síncrono ya que probablemente no aportaba nada interesante y además complicaba algo las cosas :juer:.  

Así que actualizo toda la explicación correspondiente al SRC4392, también actualizo los esquemáticos que se encuentran en el primer post, que ya están cerca de ser los definitivos ;D.

Por cierto acabo de recibir el libro que comentaba sobre diseño de PCBs con el OrCad, así que dentro de poco tocará ponerse en marcha con el PCB oo) oo)....

Un saludo.

glt

Hola lord.camilo,

Gracias por la confidencia... ;)

A propósito, piensas verder kits?, porque lo mas pequeño que puedo soldar es SOIC y prefiero through-hole.

lord.camilo

Hola glt,

Respecto a lo de los kits pues no lo sé... todo depende de si hay interés, de cómo este de tiempo libre y lo más importante, de si consigo acabar el proyecto. Lo que sí es prácticamente seguro es que llegado el momento encargue más de un PCB, pero todo a su debido tiempo por ahora prefiero centrarme en acabar el proyecto que todavía queda muchísimo por hacer ;).

En cuanto a si el PCB estará basado en componentes SMD o through-hole, pues todavía no está decidido ??? aunque lo más probable es que esté basado en SMD.

Un saludo.

lord.camilo

Hola

A ver si la gente del foro que tenga experiencia soldando SMD me puede comentar algo, sobre si es muy complicado soldar los siguientes encapsulados:


  • TQFP 48 pines (SRC4392)
  • TQFP 32 pines (PCM2707 y AtMega 328P)
  • SSOP 28 pines (WM8741)
  • US8 (PCA9306)

Por otra parte en lo que respecta a condensadores, resistencias, ferritas y demás componentes pasivos, estoy pensando en los siguientes encapsulados:


  • 0805
  • 1206

Me interesa especialmente saber cual es vuestra opinión/experiencia con estos dos últimos tipos. Sería muy complicado soldar todo lo anterior con un soldador JBC 14S con la correspondiente punta fina. ¿Que tipo/marca de flux os da mejores resultados?.

También estoy empezando a realizar la lista de materiales, en las próximas semanas la publicaré para que me digáis que os parecen los componentes elegidos y hagáis las sugerencias que os parezcan interesantes ;).

Una vez que esta lista este cerrada, empezaré con la parte más complicada del proyecto que es el diseño del PCB... :juer: :juer: tengo curiosidad por ver lo que va a salir de todo esto, jejejejeje....

Un saludo 



picodeloro

#29
Nunca he soldado los encapsulados de los integrados que pones ahí, tengo visto soldarlos con un estañador "a lo bruto" unidendo todas las patillas y acto seguido poner una malla de desoldar encima de las patillas y quitar los excedentes de estaño, requiere tener mucha práctica para no tostar el componete en cuestión. Puedo buscar componentes similares entre las placas de "chatarra" que tengo por casa y hacer pruebas de soldadura a ver como se da la cosa. Con respecto al resto de los componentes, 1206 se puede soldar bien con una punta fina para el estañador, para 0805 ya hay que andar más fino.

Actualmente estoy trabajando en una modificación de un par de Larocco Diablo y empleo para las resistencias el encapsulado 1206 (aunque tal vez tenga que cambiar algunas por 0805)y SOT23 para los componentes "discretos", en estos tamaños puedes usar el estañador sin mayor problema.

En cuanto al Flux yo uso el de JBC, a mi me vale. Una opción que te puede resultar socorrida es una pasta de soldar que lleva el estaño en la propia pasta, aplicas la pasta en la PCB, pones el componente, le aplicas el estañador y fundes la pasta quedándose el estaño en la pista y la patilla del componente.

Si ves que necesitas ayuda en este tema, avísame que me pongo al día rápido.

-- o --
Rodrigo
"All the audiophools need are pilot lights that can be rolled for peace of mind."

Spritzer