mardi 9 juin 2020

R2R diy Audio Dac.

Un peu de curiosité : quel rendu sonore peut bien produire un circuit convertisseur audio-numérique de fabrication personnelle.

Mise en garde : pas de débat théorique sur le sujet ici. Ça n'est pas le but. 

J'estime que la bataille en terme de qualité 'pure' sonore est terminée depuis le milieu des années 90. Depuis, les fabricants de matériels ne proposent plus grand chose d'innovant, les fournisseurs de composants n'en faisant pas plus si ce n'est augmenter le nombre de bits et la fréquence de conversion des composants, sans réellement d'intérêt pour le matériel grand public.

Le problème, à mon sens, réside dans le format inchangé du CD audio non tant en terme de résolution qu'en terme de fréquence de mise à disposition des échantillons sonores qui reste 'coincée' à 44,1 KHz, ce qui oblige toujours à la mise en place de filtres à sur-échantillonnage dans le but de faciliter la construction des filtres analogiques de sortie (suppression du bruit d'échantillonnage numérique).

Pour ceux qui souhaiteraient un peu de théorie, visitez les vidéos de JiPi :



Pour améliorer la restitution sonore, les principales sources potentielles de bruit et de distorsion ont depuis longtemps été 'quasi éliminées' :

  • Erreur de bruit analogique (qualité des alimentations et de conception des matériels).
  • Erreur de quantification des convertisseurs.
  • Erreur ou aberrations des filtres à sur-échantillonnage.
  • Instabilité des signaux d'horloge.
  • etc...

Je ne parlerai pas des tentatives de nouveaux formats de transport de l'information comme le SACD et son flux DSD, et de la technologie Delta-Sigma des convertisseur numériques-analogiques qui, outre le fait d'avoir apporté un semblant de nouveau Graal commercial, dans les fait n'apportait pas vraiment grande révolution dans la restitution sonore si ce n'est un coup de production 10 fois moins élevé que les convertisseurs de type R2R de l'époque, pour le grand bien financier des actionnaires.

Et pour enfoncer le clou, le très ancien convertisseur Phillips TDA1541 demeure une référence en terme de conversion numérique analogique, malgré le (ou à cause du) fait que ce soit un convertisseur de type R2R.

https://tryphonblog.com
Ce TDA 1541 faisait suite au TDA 1540 (14 bits de résolution) :

Image récupérée sur le Web.

De tous les lecteurs CD que j'ai pu tester, je n'en ai gardé que deux. Un CD104 à TDA 1540 :

http://www.lampizator.eu
et un lecteur CD Arcam Delta 70.2 à TDA 1541 de type S1 (une couronne) :



Tout ceci pour en arriver au fait qu'il y a deux façon d'envisager la restitution sonore. Soit par l'aspect technique donc purement objectif, soit pas l'aspect 'plaisir' du rendu donc purement subjectif. A partir du moment ou le taux de distorsion du signal reste dans des proportions raisonnables (inférieur à 1%) et que le rendu est plaisant, j'estime que cela vaut mieux que d'avoir engagé de grosses sommes dans un système techniquement presque parfait mais à l'écoute ennuyeuse, voire pénible.

Le champ d'expérimentation au niveau amateur existe toujours dans le domaine ou cela reste possible bien évidemment. Puisqu'il n'est pas envisageable de façon 'artisanale' (quoi que...) de créer soi-même ses propres circuits intégrés, il reste possible de réaliser des circuits de conversion de type R2R 'à la main', sur circuit imprimé.

C'est sur cette base que Monsieur Vincent Brient à commencé à concevoir il y a quelques années son Totaldac :


Cet appareil est équipé de résistances de très haute précision et de circuits intégrés logiques de base (bien que j'imagine que ce design ait évolué depuis les débuts) afin de recréer le fonctionnement d'un circuit intégré R2R de type TDA1541. Je n'ai hélas jamais pu écouter ce type de machine.

J'aurais pu me lancer dans la réalisation de ce type de DAC mais le temps a passé et je me suis orienté vers d'autres sujets. Jusqu'à ce que je découvre le projet de Dilshan R Jayakody concernant la réalisation d'un DAC 24 bits stéréo à la base pour Raspberry Pi. Ce design est cependant suffisamment flexible pour être utilisé en tant que DAC standard puisqu'il possède une interface I2S, et ressemble fortement au Totaldac si ce n'est que l'ensemble de la logique est contenue dans un CPLD et que les résistances sont de type standard donc d'un coût raisonnable, même en tolérance de 0,1% comme celles que j'ai choisies :


Ce circuit étant libre de droit, et toutes les ressources étant également disponibles sur le dépôt Git du projet, j'ai décidé d'en réaliser un exemplaire. La majorité des composants passifs de ce circuit sont en boitier cms de type 603. D'habitude cela ne me pose pas de problème de souder à la main quelques composants cms en boitier 805 (taille au dessus), mais dans le cas présent, souder au fer standard presque une centaine de boitier 603 me semblait être une 'torture' inutile. Avec le circuit imprimé, j'ai donc aussi demandé la réalisation du pochoir correspondant. Quelques semaines plus tard, j'ai donc reçu de quoi réaliser le montage :

Le circuit imprimé.

Le pochoir correspondant.
La réalisation du circuit s'en trouve grandement facilitée puisqu'en premier lieu il suffit de placer de la pâte à souder sur les plots du circuit imprimé en s'aidant du pochoir. L'opération s'effectue facilement même en n'ayant pas pris le soin de conserver ce pochoir parfaitement plat sur le circuit imprimé :


Cette façon de faire un peu 'cavalière' aura pour effet de déposer un peu trop de pâte sur les pads du CPLD. Je le savais, je savais aussi qu'une petite finition à la tresse à dessoudé aurait réglé le problème. Ce qui fût le cas :


Une fois les composants cms montés, il ne restait plus qu'à placer les quelques composants traversants comme les gros condensateurs de filtrage, les connecteurs et les deux résistances ajustables. A noter que la version des fichiers actuellement disponibles ne correspond pas totalement à l'image que Dilshan R Jayakody a publiée sur son blog puisque les deux condensateurs de sortie de blocage de la composante continue ne sont pas implémentés. Ce qui n'est pas plus mal puisque d'une part il se peut q'ils ne soient pas obligatoirement indispensables puisque souvent les entrées des amplificateurs en sont déjà pourvus, et que d'autre part cela permettra de placer des condensateurs de meilleur qualité pour effectuer des essais au casque par exemple.

Même si l'assemblage de la carte semble s'être bien déroulé, la première mise sous tension est toujours quelque peu angoissante :



Fort heureusement, pas de 'magic smoke' au démarrage. Le CPLD reste froid. Il ne reste plus alors qu'à programmer ce gros circuit pour qu'il réalise la fonction de réception de signal I2S et qu'il envoi directement aux résistances les signaux correspondant. Pour cela il reste encore à connecter le montage à un PC équipé du logiciel Altera (Intel) via l'interface de programmation adéquate :


Une fois la connexion effectuée, il suffit d'installer la version 18.1 du logiciel Quartus Lite puis à lancer la compilation du projet :



La compilation se déroule sans problème et génère le fichier nécessaire à la programmation effective du CPLD. Le 'programme' est écrit en Vérilog et non pas en VHDL dont j'ai plus l'habitude mais comme l'on dit : si vous en connaissez un, vous comprendrez l'autre!

L'ensemble du projet n'utilise que la moitié des ressources logique du CPLD et presque les trois quart de ses pattes. Le composant semble donc adapté à l'application envisagée.

La programmation du composant se déroule, elle aussi, sans difficulté :



Et voilà! Le circuit est 'potentiellement' opérationnel. Il ne reste plus qu'à le connecter à une source I2S et à le brancher sur un amplificateur audio pour en tester le résultat, non sans avoir au préalable réalisé quelques tests aux instruments de mesure sur l'état de ses sorties.

Oui, sauf qu'aux premiers tests, rien ne se passa. Dès le départ j'avais une petite idée sur le problème. L'oscillateur de 50MHz possède un brochage quelque peu étrange. Un peu trop de pâte à souder avait créé une petite connexion parasite. La aussi, un peu de tresse à dessouder a réglé le problème.

Pour effectuer mes tests, il me fallait donc un générateur de bus I2S. L'occasion de ressortir ma carte d'évaluation Wolfson WM8740 :


Je ne sais plus depuis combien de temps je possède cette carte mais cela fait un bon bout de temps. Une bonne vingtaine d'années je pense. Elle a l'avantage de posséder un convertisseur de bus SPDIF vers différentes formats dont l'I2S, grâce à un CS8414. D'ailleurs ce circuit est aujourd'hui obsolète, la date de son datasheet annonce 1998!

Il va sans dire que pour tester un flux SPDIF de type Compact Disc ce récepteur SPDIF convient tout à fait. Le système de test consiste donc en une source SPDIF (une sortie de PC) et le récepteur SPDIF qui envoi directement ses signaux vers la carte DAC R2R. A noter que j'ai du installer deux diodes en série sur chaque signal du bus I2S de façon à ce que leurs niveaux haut passe de 5V à 3,6V. Ce n'est pas les 3,3V imposés par les entrée du CPLD, mais cette légère surtension ne pose pas de problème :


La petite carte en bas à gauche est une carte d'adaptation de tension des signaux. A l'origine, j'avais prévu de m'en servir pour convertir les signaux de 5V en provenance de la carte Wolfson vers les 3,3V des entrées du CPLD. Evidemment, cette carte ne monte pas assez en fréquence et déforme totalement les signaux de données et d'horloge au nouveau bits, d'ou le remplacement par le système de diodes.

J'ai aussi disposé deux gros condensateurs de type MKS de 2,2µF en sortie qui, avec les 560 Ohms de résistance de sortie des AOP, permettent de descendre suffisamment en fréquence pour restituer un signal de bonne qualité.

Evidemment, difficile de rendre compte de la qualité de sortie de ce DAC sans en faire au moins une capture de la sortie audio. Au casque le signal sonore est absolument parfait. Et pourtant nous ne sommes 'qu'en qualité CD', sans le moindre sur-échantillonnage, sans filtre efficace de sortie des harmoniques d'échantillonnage, ni la moindre correction de jitter...

Conclusion (provisoire).  Dans la conclusion de son article, Dilshan R Jayakody indique que son DAC fournit un signal de bonne qualité. Force est de constater qu'effectivement, c'est le cas. Il me reste à effectuer une capture de la sortie de ce DAC, et puis à éventuellement étudier quelques améliorations possibles de la qualité de sortie audio.

Cette petite digression audio-numérique sentait bon le milieu des années 90 ;-)