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

DAC DSD en composant discret

Message » 25 Jan 2017 10:51

peufeu a écrit:Wooh, ça fait longtemps que je ne suis pas venu sur ce forum ! Rebonjour !

Je pensais justement à toi en lisant ce fil et je me disais que c'est dommage que tu n'interviennes pas ,merci pour ton retour :bravo:
Samsara
 
Messages: 5271
Inscription Forum: 20 Avr 2000 2:00
  • offline

Message » 25 Jan 2017 21:57

Rebonjour, merci ça fait plaisir !

maxidcx a écrit:Dans le cadre d'un DAC discrete fait à la mano (et pas trop usine à gaz) est ce qu'un format dsd 1 bit serait plus facile à implementer


Mouais... je sais pas... Outre les défauts du modulateur S-D 1-bit, il reste tout de même quelques problèmes d'implémentation, notamment la quantité de bruit hors-bande en HF (il y a plus de bruit que de signal) et fatalement la sensibilité au jitter qui est énorme ! En effet la présence de jitter HF sur l'horloge va replier le spectre du bruit HF en BF. Il y a quelques temps je m'étais amusé à faire une simulation pour voir, en utilisant sox pour encoder un son en DSD64 puis un petit script en python/numpy pour appliquer du jitter dessus.

Code: Tout sélectionner
Jitter RMS        SNR 0..20kHz
0 ps random       129.77 dB
10 ps random      119.34 dB
100 ps random      99.79 dB
1000 ps random     79.85 dB
1516 ps HDMI       74.76 dB
4951 ps HDMi       62.69 dB


Pour avoir le SNR qui est sur la brochure du DSD (ie, 120 dB) on voit qu'il faut déjà une réalisation très très soignée (ie, 10ps).

D'après ce que j'en ai vu, sortir du 1-bit peut se faire de plusieurs façons...

1) Sortir directement un bitstream, comme l eNPC SM5872! Bien que son modulateur soit multibit, il sort du PWM donc 0 ou 1. Donc, on sort nos bits et puis on se démerde avec un filtrage analogique impossible à faire. C'est le chip dans le CD63SE Marantz, sans nul doute le pire lecteur "audiophile" qu'il m'ait été donné d'entendre : bien sûr les AOP qui sont chargés de filtrer le signal partent en limitation de slew rate à chaque transision, niveaux de jitter énormes, etc.

2) On envoie les bits dans un registre à décalage, mettons 32 ou 40 bits, dont chaque sortie est connectée à un sommateur via une résistance. En mettant les bonnes valeurs de résistances on a donc un filtrage FIR. Intéressant car la sensibilité au jitter, qui est liée à la dérivée du signal de sortie, diminue fortement. La complexité du filtrage analogique diminue fortement aussi. Il me semble que c'est la solution retenue par Bruno Putzeys dans son dac Mola Mola (mais son bitstream est à 100 MHz).

3) (tous les autres DACs intégrés) : conversion en PCM, filtrage numérique, sortie en sigma delta multibits.

Donc si tu veux le faire, fais le avec la méthode 2. Déjà t'as pas juste 1 flip flop mais une bonne assiette de circuits logiques !...

Il faudra bien garder à l'esprit que la référence de tension du DAC... c'est l'alim. Comme on ne peut pas tirer un courant variable sur une référence et espérer une quelconque stabilité, il faudra donc le faire en symétrique, avec 2 registres à décalage qui auront chacun des bits complémentaires, pour qu'à chaque instant les courants s'équilibrent un peu partout et que tout soit bien verrouillé.

Apparemment, Putzeys met simplement 32 ou 64 flops et les utilise comme registre à décalage :mdr:
http://audiosciencereview.com/forum/ind ... p-jpg.385/

Bon, après, IV etc... mais on voit que si l'idée était de faire un truc simple... c'est pas gagné !!!!!!
peufeu
 
Messages: 71
Inscription Forum: 24 Avr 2013 8:34
  • offline

Message » 26 Jan 2017 23:13

peufeu a écrit:Wooh, ça fait longtemps que je ne suis pas venu sur ce forum ! Rebonjour !

frank512 a écrit:Très interessant!



La qualité du SNR est proportionnelle au nombre de bits dans le CNA.
C 'est plus clair sur les raisons du choix d'un HQ player avec un algorithme de 32 bits. :bravo:


Tu n'as pas lu le document.

Le document te dit qu'un convertisseur 1-bit qui suréchantillonne à 64Fs peut espérer :

=> SNR =50 77. dB, soit un équivalent 8 bits, si il travaille avec un modulateur SD d'ordre 1
=> SNR= 79 17. dB, soit un équivalent 12 bits, si il travaille avec un modulateur SD d'ordre 2

C'est pourquoi le modulateur du DSD travaille à un ordre beaucoup plus élevé que 2, il me semble que c'est 5 ou 6... pour faire semblant d'avoir une résolution vendable. Purement académique car les convertos 1-bit sont obsolètes depuis 15 ans dans les applications audio haut de gamme, soit dit en passant...

Salut,
Ok c'est plus clair! :thks:
J'ai cru que c'était le nombre de bits au filtrage.

J'ai un peu fouillé sur le site de Signalyst, le logiciel travaille en modulateur d'ordre 7.
L'OSR disponible peut aller jusqu'à 512 Fs voir 1024 Fs en fonction du dac.
Je calculerai pour voir ce que ça donne via la formule.
frank512
 
Messages: 309
Inscription Forum: 03 Nov 2013 22:38
  • offline

Message » 26 Jan 2017 23:27

Peufeu,

Image

J'ai fait un petit recap des technologies utilisées chez Total dac entre autres.
L'entrée de gamme( D1 core) est composé d'un réseau de registre avec un étage amplifié pour fournir une tension suffisante.
Le haut de gamme (D1 twelve) est composé de 6 réseaux de registre => la tension est suffisante pour se priver de l'étage amplifié.

Pour le dac Mola Mola, je présume que les 32 flops par canal autorisent de se passer d'étage amplifié dans le DAC.
Si on met dans le DSC1 un étage amplifié, ou à défaut laisser un gain de 2 sur le AD844, les 4 registres par canal du DSC1 devraient être suffisant... n'est ce pas?
frank512
 
Messages: 309
Inscription Forum: 03 Nov 2013 22:38
  • offline

Message » 27 Jan 2017 0:04

Le SNR que j'avais posté est faux : j'avais loupé un détail de la norme DSD. De façon amusante, mon calcul était optimiste car j'avais mal sommé le bruit, et pessimiste car j'ai utilisé une modulation à -12dB au lieu de -6, et par un heureux hasard ça se compense quasiment :mdr: La courbe est bonne, ceci dit.

En gros, pour répondre à ta question sur les ordres de modulateurs etc :

Ton modulateur 1-bit sort tout le temps des -1 et des 1 (ce qui revient à la même chose que des 0 et des 1 mais centré sur le zéro, ça simplifie la suite). La puissance de sortie RMS est donc de ... 1, puisque l'amplitude est tout le temps de 1, la seule chose qui change c'est le signe. Pour l'unité de la puissance, comme on est dans le domaine numérique, on n'a pas d'unité ;)

Mettons qu'on ait pas de signal : on sort donc une quantité égale de 1 et de -1, dont la moyenne est notre signal nul. La sortie contient donc uniquement du bruit, dont la puissance est 1.

Un modulateur "noise shaper" va répartir ce bruit dans les fréquences élevées pour le sortir de la bande audio.
=> Un ordre plus élevé envoie plus de bruit en HF et en laisse moins en BF : c'est bien.
=> Mais ce sont des systèmes non-linéaires chaotiques et... en gros, quasi personne ne comprend marchent ces machins. Un modulateur d'ordre élevé peut très bien partir en sucette, générer des tonalités, des chirps, ou moduler la répartition du bruit en fonction de la valeur du signal... et la seule façon de le savoir, c'est de le prendre la main dans le sac !... On ne sait pas le prévoir mathématiquement. C'est ennuyeux.

D'autre part :
Si on augmente la fréquence de bits en sortie (mettons DSD64 => DSD512) alors on a la même puissance de bruit, mais on l'étale sur une tartine de fréquences bien plus large, on a donc une épaisseur de bruit par MHz bien plus fine ! Le job du filtre analogique est bien facilité, et on peut utiliser un modulateur d'ordre faible (moins sujet aux problèmes sus-mentionnés)
=> Les choses s'améliorent proportionnellement à la fréquence de sortie (jusqu'au moment où les circuits commencent à ramer bien sûr).
=> ESS a choisi 50-100 MHz, Putzeys 100 MHz... c'est pas par hasard.
=> 2.8 MHz du DSD64 = LOL

Et le multibit ?
Si on remplace les -1/+1 par 64 valeurs équidistantes, on divise le bruit par 64 et on obtient un DAC ESS. Comme il pédale 16x plus vite que le DSD64 et qu'il a 6 bits au lieu de 1, le bruit en sortie est divisé par 1000 environ. Rajoute un facteur 10 car le filtre analogique est bien plus efficace pour éliminer le bruit HF que juste au-dessus de 20k...

Bon, bref, maintenant, si on veut sortir un signal...

Mettons qu'on veut sortir une valeur +1, alors on ne sort plus que des +1, et... il n'y a plus de bruit du tout, puisque tous les bits sortis sont les mêmes ! Et on a un léger problème, puisque si on voulait sortir un signal de +0.9999 eh bien on aurait que des +1 et une fois de temps en temps, rarement, un -1... suffisamment rarement pour que ça ressemble à un signal plat avec un trou dedans de temps en temps, et là le filtre analogique ne peut pas corriger.

Donc sur un DAC 1-bit on travaille à une modulation faible. Pour le DSD c'est au maximum -6dB c'est-à-dire qu'on ne sort pas de signal dont la moyenne est supérieure à 0.5 ; dans ce cas on a 50% de "+1", et 50% de bruit réparti équitablement entre "+1" ou "-1".

Oui mais alors tu vas me dire, plus on a de signal, moins on a de bruit ! Eh oui, on appelle ça la modulation du bruit, ça se mesure... et ça fait faire des trucs bizarres aux AOP qui sont derrière.

Note que le SNR avant filtrage est de 6dB au maximum. Pour arriver aux 120 qui sont sur la brochure, il faut pas mal filtrer, et c'est moins cher de le faire en numérique, raison pour laquelle les DAC SACD repasse le SACD en PWM à fréquence élevée pour le filtrer avec un FIR...

Le 1-bit, quelle prise de chou !

-----------------------------------------------

> J'ai fait un petit recap des technologies utilisées chez Total dac entre autres.

Ouais mais là ils sont tous en R-2R et on est sur le topic du 1-bit ! C'est bizarre non ?
peufeu
 
Messages: 71
Inscription Forum: 24 Avr 2013 8:34
  • offline

Message » 07 Juin 2017 13:25

Salut Peufeu,

Ton modulateur 1-bit sort tout le temps des -1 et des 1 (ce qui revient à la même chose que des 0 et des 1 mais centré sur le zéro, ça simplifie la suite). La puissance de sortie RMS est donc de ... 1, puisque l'amplitude est tout le temps de 1, la seule chose qui change c'est le signe. Pour l'unité de la puissance, comme on est dans le domaine numérique, on n'a pas d'unité ;)


La conversion du modulateur se fait en unaire.
La topologie des 32 résistances en parallèle autorise 32 combinaisons avec LSB=1.
Image

Dans le cas du DSC1, 2^N correspond au 32 combinaisons soit l'équivalent de 5bits.
OSR=512
Structure du 7 eme ordre=> n=7

Resultat SNR= 124 db

Niveau THD, certains ont mesuré -111db à -10db de puissance avec le kit chinois dsc1.
Résistances chinoises à 0.1%.
Transfo chinois.
frank512
 
Messages: 309
Inscription Forum: 03 Nov 2013 22:38
  • offline

Message » 07 Juin 2017 19:05

Intéressant.

Je viens de regarder le schéma du DSC1 : le flux DSD est donc envoyé dans un registre à décalage 32 bits dont les sorties sont pondérées par des résistances, suivi par un sommateur inverseur à base de AD844.

C'est une convolution en analogique: si les résistances sont toutes identiques, le flux DSD subit simplement une moyenne glissante, càd une convolution avec un créneau de longueur 32. On pourrait moduler les valeurs des résistances pour faire un filtre sinc, par exemple, ou n'importe quel autre filtre, il suffit de traduire sa réponse impulsionnelle sous forme de résistances. C'est le principe utilisé par NXP dans le UDA1380 par exemple. Je copie les explications:

8.6.1 GENERAL INFORMATION
The Filter-Stream Digital-to-Analog Converter (FSDAC) is
a semi-digital reconstruction filter that converts the
1-bit data stream (running at either 64fs for the 5th-order
noise shaper or 128fs for the 3rd-order noise shaper) of the
noise shaper into an analog output voltage. The filter
coefficients are implemented as current sources, and are
summed at virtual ground of the output operational
amplifier. In this way very high signal-to-noise
performance and low clock jitter sensitivity are achieved.
A post-filter is not needed due to the inherent filter function
of the DAC. On-board amplifiers convert the FSDAC
output current to an output voltage signal, capable of
driving a line output. The output voltage of the FSDAC
scales proportionally with the power supply voltage.

Peux-tu élaborer comment tu arrives à ton calcul de SNR? Étant donné que la sortie est égale au flux DSD convolué avec la réponse impulsionnelle du filtre passe-bas implémenté avec les résistances, le SNR en sortie sera celui du flux DSD, mais avec le bruit pondéré par la réponse en fréquence du filtre (on espère donc enlever le maximum de bruit en HF!)

Un ajustement des valeurs des résistances pour faire un filtre sinc donnerait une meilleure réjection du bruit HF, et faciliterait le boulot du AD844, soit dit en passant, en réduisant l'ampleur du saut à chaque coup d'horloge et décalage.

Le principe est intéressant. Note que la précision des résistances importe peu, contrairement à un DAC R2R, une erreur sur les résistances ne changera pas la distortion, mais simplement la fonction de transfert du filtre, donc inutile d'investir dans des 0.01% !

Note que L'Empereur-Dieu Putzeys utilise ce principe dans son DAC Mola Mola aussi. Pour celui qui tient à faire du 1-bit, je pense que c'est la meilleure solution.

Cependant il y a un énorme bug dans le schéma: normalement on le ferait en différentiel, avec deux chaînes de registres à décalages dont une prend les bits inverses de l'autre. Ceci pour consommer un courant constant sur l'alim, qui sert aussi de référence. En effet la tension de sortie est proportionnelle à la tension d'alim.

Dans le montage tel qu'il est, la consommation dépend de la densité de 1 dans le flux, ce qui fait que la tension d'alim va varier.

Le signal en sortie sera donc le produit du signal audio voulu et de la réponse transitoire de l'aim à la consommation variable des registres à décalage... donc, il y aura distortion, mais pas facile à mesurer, ça va dépendre de la réponse de l'alim, notamment de son impédance en fonction de la fréquence, on aura donc une disto dépendante de la fréquence.

Je prévois donc une forte augmentation de la distortion à certaines fréquences, probablement dans les basses, et une intermodulation entre basses et aigues. Entre les deux canaux aussi. Mais impossible de prédire à quelles fréquences. Si ça se trouve tu auras -110dB donc super à 1kHz, et une perf dégueulasse à 100Hz... ou autres...

Soekris a eu le même problème sur son R2R, le fix est de rajouter un tombereau de condensateurs...
peufeu
 
Messages: 71
Inscription Forum: 24 Avr 2013 8:34
  • offline

Message » 10 Juin 2017 21:09

peufeu a écrit:Peux-tu élaborer comment tu arrives à ton calcul de SNR? Étant donné que la sortie est égale au flux DSD convolué avec la réponse impulsionnelle du filtre passe-bas implémenté avec les résistances, le SNR en sortie sera celui du flux DSD, mais avec le bruit pondéré par la réponse en fréquence du filtre (on espère donc enlever le maximum de bruit en HF!)

Oui ce calcul est basé sur l'erreur de quantification.
C 'est pour donné la base, car au début sans prendre en considération le reste, on était parti du postulat que ce système à 1 bit n'était pas capable d'avoir une base SNR de qualité. Néanmoins à l'aide de l'oversampling et de l'ordre du convertisseur, le bruit de quantification n'a rien à envier au dac chipset.

Un ajustement des valeurs des résistances pour faire un filtre sinc donnerait une meilleure réjection du bruit HF, et faciliterait le boulot du AD844, soit dit en passant, en réduisant l'ampleur du saut à chaque coup d'horloge et décalage.

Ne connaissant pas les filtre Sinc, R1/R2 sur le schéma ont été changés pour 500 Ohms. Les résistances en // sont maintenant de 8k.
Dans le cas de la THD à -111db, le AD844 a été remplacé par un transfo.
Dans la version originale, le sallen key du 7eme ordre doit jouer le rôle de filtre sinc=> c'est bien ça?

Le principe est intéressant. Note que la précision des résistances importe peu, contrairement à un DAC R2R, une erreur sur les résistances ne changera pas la distortion, mais simplement la fonction de transfert du filtre, donc inutile d'investir dans des 0.01% !

Le signal en sortie sera donc le produit du signal audio voulu et de la réponse transitoire de l'aim à la consommation variable des registres à décalage... donc, il y aura distortion, mais pas facile à mesurer, ça va dépendre de la réponse de l'alim, notamment de son impédance en fonction de la fréquence, on aura donc une disto dépendante de la fréquence.

Soekris a eu le même problème sur son R2R, le fix est de rajouter un tombereau de condensateurs...

C 'est ce que j'ai essayé de faire comprendre à Tazz sans succès...
frank512 a écrit:- aucune résistance n'est identique donc on va introduire et accumuler des non linéarités et des erreurs de corrections corrélées plus ou moins directement avec l'horloge du dac.
Les resistances sont precises à 0.1%, ce qui est très bien. Et comme le développeur le dit, la variation de resistance ne va pas entrainer de distorsions mais modifier de manière négligeable la fonction de transfert. Ainsi je ne vois pas l'interêt de rajouter autre chose.


C'est l'étage le plus critique d'un DAC, celui qui va transformer les 0/1 finaux en somme de courants unitaires, le point de passage du monde numérique à analogique. Aucun élément physique n'est identique donc aucun étage unitaire n'est identique, il faut donc ruser et utiliser extensivement le "traitement du signal" pour compenser cette inégalité entre chaque étage transformant un 1 en courant. De plus on utilise ici des circuits TTL avec des tolérances de comportement par porte pouvant être très variés et qui dans tous les cas on un comportement en charge très variable (chute de 1/2v sous 8ma de la tension de sortie d'un bit par exemple) et très différent entre le niveau haut et le niveau bas. La sommation et soustraction des différents courant doit donner des trucs bizarres.
Je ne suis pas d'accord, le seul écart qu'il pourrait y avoir lors de la transformation d'un 1 en courant serait du à une variation de la tension d' alimentation des shift register. Il y a juste à regarder dans la doc du composant tout y est. Avec une bonne alimentation il y a aucun problème. Même pour le delta sigma, avoir une mauvaise alimentation engendrerait le problème que tu viens de décrire. Quant à la precision de conversion en fonction du temps, il y a aucun souci avec une bonne horloge.


Néanmoins je pense que la qualité des résistances influe sur la distorsion surtout quand ce sont des résistances à 1 cts!
frank512
 
Messages: 309
Inscription Forum: 03 Nov 2013 22:38
  • offline

Message » 10 Juin 2017 21:42

Je te confirme que les valeurs mesurés sont pour la version du dac en différentiel.
Un avis du testeur:
Both versions - balanced and not balanced - have a strongly pronounced analog sound. I would call it "vinyl sound". I really like him.
The non-balanced version is a little in the lead in subjective comparison. But in a non-balanced version, the correlation noise at low volume is annoying.
frank512
 
Messages: 309
Inscription Forum: 03 Nov 2013 22:38
  • offline

Message » 10 Juin 2017 21:54

Image
La version différentielle du kit chinois pour info.
frank512
 
Messages: 309
Inscription Forum: 03 Nov 2013 22:38
  • offline

Message » 13 Juil 2019 19:10

Transformation de mon système en grand n'importe quoi.
Étape 3 .
Teasing :
DSC-1.png
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 13 Juil 2019 19:38

C'est un DAC ultra compact ?
androuski
 
Messages: 23165
Inscription Forum: 14 Mar 2007 14:43
Localisation: C'est un trou, mais rempli de pinard, donc ça me va.
  • offline

Message » 13 Juil 2019 20:22

J'aurais du mettre l'échelle ...
Non , c'est un DAC minimaliste, avec un FIR analogique ...
Un "sotfware defined DAC" ™
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 23 Juin 2020 9:02

Salut, qu'en-penses-tu maintenant qu'il doit fonctionner! ? :P
sdf
 
Messages: 4491
Inscription Forum: 09 Jan 2003 16:22
Localisation: Toulouse
  • online

Message » 23 Juin 2020 19:21

Et bien comment dire, il est toujours pas monté :hehe:
J'ai la boite et tout mais j'ai aussi une grosse flemme :zzzz:
Entre temps j'ai eu quelques pb et je me suis aussi trouvé des autres projets.
Mais il est toujours dans la pile des trucs à faire.
Avant j'ai une réorganisation de mon système à réaliser , mais je continue à étudier la partie soft PSM-> DSD et ca va pas être simple et surement accéléré CUDA ....
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline


Retourner vers Sources et DAC

 
  • Articles en relation
    Dernier message