Modérateurs: Modération Forum DIY, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 19 invités

OdroDAC => UGSD

Message » 14 Juin 2017 18:23

Première partie – Carte digitale

Bonjour à tous,

Me voici de retour avec un nouveau projet qui m'a pas mal occupé depuis un peu plus de 6 mois.
Après le boost en puissance / courant de mon UP avec l'UP-Grade, puis un design un peu plus avancé avec la réalisation de mes premiers PCB pour l’UGS Muse + gros boulot sur le développement du software de la carte de contrôle, je voulais passer à un nouveau challenge encore un peu plus difficile histoire de continuer à apprendre car c'est aussi là où je m'amuse le plus :wink:.

Ma source de référence est mon BDP-95 qui est toujours aussi bon mais je trouve à la longue que le fait de devoir allumer ma TV pour sélectionner les morceaux dématérialisés à jouer depuis mon NAS est peu pratique.
L'idée de créer un lecteur réseau digne de ce nom a donc tout doucement commencé à germer. Je me suis rapidement orienté vers une solution Volumio ou Runeaudio car je trouve top le fait de pouvoir avoir une solution réseau, compatible airplay, ... avec un écran déporté qui affiche la lecture en cours, les jaquettes, pilotable avec une tablette... J'ai choisi comme base hardware pour cela l'Odroid C2. Et vu que cette Odroid sera connectée au final à un DAC afin de jouer de la musique, ce lecteur réseau s’appelle OdroDAC (Odroid + DAC).

Si on veut obtenir quelque chose de bon en utilisant une C2 il faut obligatoirement prévoir de remettre en forme l'interface I2S qu'elle fournit via un domaine d'horloge très faible jitter car bien qu’elle ait une interface I2S dédiée, elle est master et issue d’horloges internes au MPU de la C2 avec potentiellement un jitter élevé qui est une des principales sources de distorsion dans le domaine digital.
Il me fallait prévoir donc de réaliser une carte digitale sur laquelle la C2 allait se connecter et s'occupant principalement de cela.

La topologie globale que j'ai implémentée est un étage à 3 entrées digitales, une FIFO pour isoler les domaines d'horloge, un étage d'isolation galvanique, un domaine d'horloge faible jitter et un étage de reclocking de course.

Cote entrées digitales, je suis parti au départ sur Amanero + Ordoid + une interface I2S externe en spare, au cas où. L'Amanero apportant l'avantage de pouvoir être slave sur l'I2S donc de ne pas avoir besoin immédiatement d’une FIFO fonctionnelle pour apprécier une écoute.
L'étage suivant est composé d'un FPGA + de la SRAM externe afin principalement d'implémenter la FIFO et pourquoi pas un futur éventuel traitement du signal / filtrage. Je suis fait plaisir et parti sur les derniers MAX10 + 2MB de SRAM comme ça on est large et j’ai de quoi m’amuser :mdr:.
Derrière tout cela on attaque une série d'isolateurs silicon image que j'aime tant (déjà utilisés dans l’UGS Muse) afin de se trouver dans un domaine isolé et bien moins bruité que celui du FPGA.
La on arrive ensuite sur des bascules D réputées très faible jitter (Potato Flip-Flop) qui sont clockées par 2 oscillateurs super faible jitter aussi. J'utilise pour le moment des Crystek et j'ai ajouté la possibilité (si nécessaire) de mettre une carte oscillateur externe montée sur silent bloc afin de limiter encore plus le jitter lié aux vibrations.
Pour alimenter tout cela j'utilise les (fantastiques) derniers LDO de LT avec notamment LT3042 et LT3081.

Je me suis donc lancé dans la réalisation d'un nouveau PCB et cette fois je suis passé en 4 couches, ce n’est pas plus difficile, ce n’est pas plus cher et c'est bien mieux ! Si j'avais eu ce recul j’aurais probablement fait certains PCB du Muse en 4 couches aussi. Bref c'est ça le DIY, on apprend tous le temps !

Arrivée de ces premiers PCB, pas mal du tout (je testais un nouveau fabricant de PCB), assemblage du premier proto ok, mais un petit bug non critique sur l'interface Amanero m'ennuie un peu car j'aime les trucs parfaits. Bref c'est mon premier proto et tout le reste fonctionne parfaitement du coup cette carte me permet de commencer à implémenter le code du FPGA, car ça aussi c'est tout nouveau pour moi :wink:.

Le premier proto:
Image

A ce moment-là je rencontre une autre personne (Emyeuoi) ayant assemblé un UGS Muse qui me met sur une piste super intéressante qui va faire prendre au projet une nouvelle dimension.
Il me parle du NMR qu’il possède, une carte OEM offrant une solution de renderer DLNA via Ethernet qui a beaucoup d'avantage notamment d'être I2S slave (un peu comme l'Amanero), de pouvoir extraire tout un tas d'informations super intéressantes des fichiers audio, pilotable avec un Smartphone,...

Je fais une copie des principales fonctionnalités de la bête, c'est assez alléchant...
  • digital audio Media Renderer
  • UPnP AV 2.0 / DLNA
  • plays and decodes common audio formats from HTTP streams
  • resolution up to 32-bit, sampling rate up to 384kHz
  • support for DSD audio at 64xFS (2.8224MHz) and 128xFS (5.6448MHz)
  • support for gapless playback
  • embedded 32-bit digital level attenuator
  • bit-perfect data transmission
  • 2-channel asynchronous endpoint with external clocking for jitter-free stereo playback
  • hardware and software modes for easy integration
  • compact design, low EMI

Au début l’idée était de l’aider à développer le soft pour sa carte NMR via la carte de contrôle de l’UGS Muse et puis au final en regardant la datasheet du MR-MOD de plus près, je me suis dit, c’est bougrement bon ce module, je m’en achète un et le soft que je développe sera réutilisable au moins pour nous 2 :wink:.
Après coup je suis vraiment satisfait d’avoir fait ce choix tellement c’est bon et je remercie Emyeuoi pour avoir m’avoir mis sous le nez cette solution que je ne connaissais pas.

MR-MOD => https://www.engineered.ch/products/mr-mod/

Je me lance donc dans une v1.0 de ma carte digitale en supprimant l'Amanero (peu utile lorsqu'on a une solution Ethernet), j’ajoute le module MR-MOD (car ce qu'il y a sur la NMR sera implémenté dans mon FPGA), j’ajoute un WM8805 en mode software avec entrées SPDIF, RCA, BNC, AES, je garde bien évidemment la C2 tout en lui ajoutant le support de carte Raspberry Pi (I2S via le connecteurs 40pins) et enfin une entrée I2S externe supplémentaire multiplexée avec Odroid / RPi au cas où...
Au passage j'en profite pour changer un LDO vu la consommation du MR-MOD + monte les crystek sur supports afin de pouvoir changer les oscillateurs en 2 secondes pour faire des essais comparatifs entre divers modèles. Pour le LDO je passe au LT3083, toujours du top de chez LT avec beaucoup de courant.

Réception de mes nouveaux PCB, tout fonctionne parfaitement, je me focalise pour le moment sur le MR-MOD, les Odroid et WM8805 attendront un peu (notamment l’implémentation de la FIFO).
Le code complet de génération des horloges pour le MR-MOD est déjà implémenté dans le FPGA et tout fonctionne très bien pour des flux PCM ou DSD.

Voici a quoi ressemble cette nouvelle version:
Image

L'Odroid sous la carte:
Image

Le MR-MOD au premier plan:
Image

Afin de piloter cette carte je réutilise la carte de contrôle de l’UGS Muse qui était déjà bien prévue pour faire autre chose que de contrôler le Muse :wink:.

J’ai déjà implémenté la partie soft de contrôle du MR-MOD et je commence à afficher des choses sympathiques:
Image

Image

Au passage j’aimerai aussi remercier Tazz avec qui j’ai partagé les détails de cette carte avant de partir en fab afin qu’il me confirme qu’elle soit la plus universelle possible et notamment compatible avec les dernières puces ESS PRO. J’ai de mon côté dans les tiroirs des TDA1541A ainsi que des PCM1794A, pour donner une idée de la direction que prend le DAC…

Et puis un grand merci aussi à Eric évidemment qui est toujours dans la confidence de mes projets et qui a un œil critique et des conseils que j’apprécie beaucoup.

Le DAC est terminé lui aussi, le chapitre 2 très bientôt, suivit des alimentation pour terminer :)...
Dernière édition par Alex_twn le 16 Juil 2019 16:58, édité 4 fois.
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 14 Juin 2017 18:24

On continue donc après 2 mois de pause avec le DAC.

Alors pour le DAC je me suis amusé à partir de mon FDA-2 pour faire des tests et voir comment je pouvais aller encore un peu plus loin. Je suis tombé en fouinant sur le web, sur le site de Deode et de son implémentation particulière des PCM1794A en mode NOS et étage I/V passif qui a attiré mon attention.

Avant de continuer à décrire l’implémentation je tiens à préciser que j’ai contacté Deode qui m’a très sympathiquement donné son autorisation pour réutiliser une partie de son concept et l’exposer ici dans mon projet.

J’ai donc utilisé le FDA-2 comme cobaye pour faire mes premiers tests en reprenant certains principes décris par Deode et cela se présentait pas trop mal au niveau mesures et écoute.

A partir de là je suis parti sur ma propre architecture avec PCB 4 couches à nouveau afin de faire le meilleur routage possible en implémentant une architecture parallèle permettant de positionner jusqu’à 8 DAC par carte pour un canal sachant que les cartes peuvent elle-même être empilées afin de faire 8 DAC => 16 DAC => 24 DAC … après ça coute cher :).

Je me suis employé à nouveau à faire un routage chiadé séparant complètement les parties digitales et analogiques, découplées comme il se doit et alimentées par des régulateurs de course à nouveau (LT3042) en mode parallèle pour la partie analogique afin de diviser encore plus le bruit en sortie tout en augmentant la capacité en courant (en gros on a un régulateur par DAC). Et côté digital on reste sur du LT3081.

On peut régler sur ces cartes aussi bien la tension d’alimentation que la polarisation de l’étage de sortie en courant des DAC afin d’avoir la meilleure dynamique possible.
L’entrée digitale vient de l’étage de relooking de la carte FPGA via des nappes FPC (ou câbles coaxiaux UFL) et elle peut être I2S ou right-justified afin de passer ou pas les DAC en mode NOS.
Toute la logique nécessaire est implémentée dans le FPGA.

Les premières mesures donnent des niveaux de bruit RMS sur les alimentations très faible, je suis content de mon PCB :).
3.3V FPGA (LT3083) = 260uV RMS
3.3V Isolated (LT3081) = ~30uV RMS
3.3V Isolated oscillateurs (LT3042) = 7~10uV RMS
3.3V DAC = (LT3081) 42uV RMS
5V DAC = (LT3042) 7~9uV RMS

Après un réglage aux petits oignons de l’étage de sortie en courant des DAC afin d’avoir la meilleure dynamique et les plus belles FFT possibles (avec des niveaux de bruits extrêmement faibles dans toute la bande audio confirmés sur mes analyses spectrales) j’obtiens des résultats sonores vraiment excellents et pour la première fois au-dessus de mon BDP-95 ce qui ne fut pas chose simple.

Le son qui sort de ce DAC est extrêmement agréable à écouter je ne vais pas faire de CR ici mais c’est propre, c’est dynamique, ça descend très bas, zéro fatigue, scène ouverte, tout est à sa place au bon niveau. Ça marche très bien sur les vieux CD aussi, c’est vraiment bien.

Bon je ne le précise pas immédiatement mais j’y ai passé pas mal de temps dessus et au départ je n’étais pas au niveau de l’Oppo, ça me décourageait un peu d’ailleurs mais en persévérant et comprenant bien comment le DAC fonctionne on arrive à la mettre dans une configuration dans laquelle il produit une conversion très naturelle et vraiment plaisante à écouter. Au final, ils sont très bons ces PCM1794A.

J’ai d’ailleurs passe pas mal de temps à comprendre comment marche l’étage de sortie en courant de ces circuits, car assez mal documenté dans la datasheet. Je me suis généré des trames I2S de test dans le FPGA afin de mettre la sortie du DAC à des niveaux particuliers et comprendre comment sont liés FS, BPZ, Vdd, Iref, l’influence d’une charge passive … en faisant tout un paquet de mesures compilées dans une table excel et faire le reverse engineering.

L’étage amont MR-MOD + isolation + reclocking sur horloge très faible jitter n’est pas pour rien non plus à la qualité d’écoute obtenue je pense.
Je précise aussi que je sors sur des transformateurs de sortie Lundhal qui jouent probablement aussi leur rôle.
Bref pour une première étape c’est déjà très bien.

La carte DAC (il y en a 2 pour 2 canaux stereo):

Image

Avec tout le reste dans un chassis bricole pour les tests :

Image

Je vais attaquer maintenant des tests en implémentant un bloc ASRC (HW ou IP dans le FPGA) pour voir aussi ce que cela donne.
Et puis il y a aussi le software à finir pour le WM8805 que j’ai complétement laisse de côté et l’Odroid aussi avec sa FIFO.
Et puis une mise en boite plus tard…
Dernière édition par Alex_twn le 05 Sep 2017 18:16, édité 1 fois.
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 14 Juin 2017 18:24

Reserve
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 14 Juin 2017 18:25

Reserve
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 14 Juin 2017 18:25

Reserve
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 15 Juin 2017 7:31

Ciao Alex,

Wow... another impressive project!!! Congratulation :ohmg:

I am glad to see that the amazing NMR is now integrated in your board :)

As you know I am demobilizing from Korea moving to Vietnam and my laboratory will be offline for the next 2 months... in the meantime I will enjoy your posts here :)

Take care my friend and keep us posted!

Cheers,
Enrico
emyeuoi
 
Messages: 13
Inscription Forum: 28 Jan 2016 13:39
Localisation: Italian living in South Korea
  • offline

Message » 15 Juin 2017 7:53

Salut Alex_twn
voila vraiment un projet très complet sur lequel tu mets une très grosse énergie, la quantité de détails (hw,sw..) à couvrir est impressionante, tous mes encouragements pour la suite;
je te rejoins bien sur l'idée que le point faible des solutions digitale et des dac diy se situe au niveau du jitter. j'utilise moi même une carte vanity93 dans un oppo qui fait fifo et pll numerique autour d'un fpga et je peux confirmer que la différence qu'apporte ces technologies vaut l'investissement.
il y a quelques mois j'étais sur une idée similaire d'intégrer un odroid ou une BB et j'étais arrivé à la conclusion que le fifo n'étais pas nécessaire si on arrive à envoyer la master clock vers l'odro, en modifiant les driver alsa pour s'assurer que la clock audio synchronize le flux sortant. Elle reste incontournable pour les entrées du WM8805 de toute façon, et l'isolation et le reclocking aval potato restent fondamentaux pour certains dac. (il semble que le pcm1794 fasse le reclocking en interne)
l'avantage du fpga c'est que tu pourra aussi faire un filtre de reconstitution custom et utiliser même des dacs R2R ou DSD à la mode en diy.
tu pourrais aussi loger un filtre d'upsampling de haut vol dans le fpga, je pense au filtre polynomiaux comme ceux des Meridian
je suivrai avec beaucoup d'interet ton travail, et j'espère que tu trouveras des forumeurs qui partagerons ton enthousiasme sur cette réalisation.
:bravo:
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3097
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 16 Juin 2017 5:56

emyeuoi a écrit:Ciao Alex,

Wow... another impressive project!!! Congratulation :ohmg:

I am glad to see that the amazing NMR is now integrated in your board :)

As you know I am demobilizing from Korea moving to Vietnam and my laboratory will be offline for the next 2 months... in the meantime I will enjoy your posts here :)

Take care my friend and keep us posted!

Cheers,
Enrico


Ciao Enrico,
Thanks, this module is also there because of you :).
I'll keep you posted and the soft will be 100% completed when you resume in Vietnam.
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 16 Juin 2017 6:08

maxidcx a écrit:Salut Alex_twn
voila vraiment un projet très complet sur lequel tu mets une très grosse énergie, la quantité de détails (hw,sw..) à couvrir est impressionante, tous mes encouragements pour la suite;
je te rejoins bien sur l'idée que le point faible des solutions digitale et des dac diy se situe au niveau du jitter. j'utilise moi même une carte vanity93 dans un oppo qui fait fifo et pll numerique autour d'un fpga et je peux confirmer que la différence qu'apporte ces technologies vaut l'investissement.
il y a quelques mois j'étais sur une idée similaire d'intégrer un odroid ou une BB et j'étais arrivé à la conclusion que le fifo n'étais pas nécessaire si on arrive à envoyer la master clock vers l'odro, en modifiant les driver alsa pour s'assurer que la clock audio synchronize le flux sortant. Elle reste incontournable pour les entrées du WM8805 de toute façon, et l'isolation et le reclocking aval potato restent fondamentaux pour certains dac. (il semble que le pcm1794 fasse le reclocking en interne)
l'avantage du fpga c'est que tu pourra aussi faire un filtre de reconstitution custom et utiliser même des dacs R2R ou DSD à la mode en diy.
tu pourrais aussi loger un filtre d'upsampling de haut vol dans le fpga, je pense au filtre polynomiaux comme ceux des Meridian
je suivrai avec beaucoup d'interet ton travail, et j'espère que tu trouveras des forumeurs qui partagerons ton enthousiasme sur cette réalisation.
:bravo:


Salut Maxidcx,
Merci pour les encouragements :).
Interressant la piste que tu donnes pour utiliser la C2 en slave sur l'I2S, il faut que je regarde de plus prêt mais la board telle qu'elle est faite peut en effet rediriger MCLK vers la C2. J'ai essayé de faire un truc le plus ouvert possible afin de ne pas être coincé plus tard.
Je ne savais pas que le PCM1794 reclocke l'I2S à son entrée et c'est précisément le DAC que j'utilise sur ma première carte.
Pour le FPGA en effet tout ce que tu mentionne sont les implémentations typique que j'ai en tête.
Notamment pour commencer un filtre d'interpolation de qualité car j'utilise le PCM1794 en mode NOS tout filtres internes désactivés.

Tu à l'air d'avoir bien défriché le sujet, si tu as plus d'infos je suis preneur :).
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 16 Juin 2017 7:52

Salut
pour le pcm1794 et un filtrage approprié, il y a un site :
https://www.by-rutgers.nl
c'est là que j'ai repiqué l'info du reclocking. Rutgers à développé aussi une super-clock (qui a été reprise sur diyaudio avec un CG pour des quartz spéciaux). Il a aussi développé le filtre sur fpga. j'ai eu l'occasion de le contacter et il répond aux mails :)

concernant le mode slave, il y a un projet assez intéressant autour de la beaglebone et d'une carte d'interface qui fait isolation et reclocking, développée par russ white, et il y a une version du driver alsa customisé dans une distribution "botic", sur diyaudio : http://www.diyaudio.com/forums/twisted- ... ost4272641

pour l'interpolation polynomiale (upsampling x 2 ou x4) ici :
http://yehar.com/blog/wp-content/upload ... 8/deip.pdf

et pour un noise shaping avec le papier Meridian qui va bien :
diy-general/noise-shaping-96khz-meridian-518-t30057792.html
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3097
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 16 Juin 2017 11:32

Super intéressant tous ces liens merci !
Il faut que je passe du temps la dessus.
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 17 Juin 2017 10:02

Salut
le MR-MOD est un truc vachement intéressant, j'avais déjà jeté un oeil en tombant dessus par hazard en cherchant des trucs comme le S8.
ce qui est assez nul (en plus du fait qu'il ne gère pas l'airplay) c'est de ne pas pouvoir le configurer plus, par exemple lui relier une entrée I2S directement d'un WM8805, et surtout lui balancer quelques biquad ou des FIR...
dommage. probablement que dans une démarche d'intégration OEM par quantité il doit y avoir possibilité de discuter avec la société, mais pour 3 ou 4 cartes DIY probablement pas.
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3097
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 21 Juin 2017 23:10

Salut à tous.
Excellent projet!! :bravo: ça fait un moment que j’essaie de trouver des tutos pour faire ce que tu fais Alex_twn. (fifo isolateur horloge) Je n'ai rien trouvé là-dessus à part des solutions toutes prêtes comme "ian fifo reclock" sur diyaudio. As-tu des sources qui me permettrai d'apprendre et mettre en place ce type de solution, stp? :)
cubano_69
 
Messages: 93
Inscription Forum: 18 Juil 2010 14:11
  • offline

Message » 22 Juin 2017 8:09

maxidcx a écrit:Salut
le MR-MOD est un truc vachement intéressant, j'avais déjà jeté un oeil en tombant dessus par hazard en cherchant des trucs comme le S8.
ce qui est assez nul (en plus du fait qu'il ne gère pas l'airplay) c'est de ne pas pouvoir le configurer plus, par exemple lui relier une entrée I2S directement d'un WM8805, et surtout lui balancer quelques biquad ou des FIR...
dommage. probablement que dans une démarche d'intégration OEM par quantité il doit y avoir possibilité de discuter avec la société, mais pour 3 ou 4 cartes DIY probablement pas.


Salut,
Pour l'airplay je suis d'accord avec toi c'est dommage mais je compte sur l'odroid pour cela qui sera ma solution de choix une fois la fifo terminée ou en utilisant la méthode que tu donnes le plus haut.
Pour le reste il y a toujours moyen d'utiliser le FPGA qui est plutôt musclé.
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 22 Juin 2017 8:18

cubano_69 a écrit:Salut à tous.
Excellent projet!! :bravo: ça fait un moment que j’essaie de trouver des tutos pour faire ce que tu fais Alex_twn. (fifo isolateur horloge) Je n'ai rien trouvé là-dessus à part des solutions toutes prêtes comme "ian fifo reclock" sur diyaudio. As-tu des sources qui me permettrai d'apprendre et mettre en place ce type de solution, stp? :)


Salut,
Non je n'ai pas de tutos, tout viens d'une réflexion menée depuis plusieurs mois pour pondre cette achitecture.
Rien n'est vraiment compliqué pour le moment, mis à part la fifo que je commence à découvrir.
La dessus on peut trouver de la littérature sur le web mais je n'ai pas encore assez fouillé.
Pour le reste, isolateur et clocks c'est assez simple, et dans l'introduction du sujet je donne une bonne idées de l'architecture et de comment tout ce beau monde est connecté.
Alex_twn
 
Messages: 1089
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline


Retourner vers Sources et DAC