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

Discussions générales sur le DIY Audio : choix des HP, comparaisons des principes : clos vs BR, etc

FDA : Noise Shaping

Message » 17 Déc 2015 0:35

Cela faisait longtemps que je n'avais pas fait autre chose que de troller sur ce forum.

Donc voici un petit tuto sur le noise shaping
Ceci m'a permis de réviser un grand classique du traitement du signal audio.

Pas sûr que cela ait sa place sur un forum DIY, mais l'envie m'en a été donnée par le sujet sur les FDA :
diy-amplification/ampli-fda-diy-discussion-avant-projet-t30064999.html

Car un FDA est essentiellement constitué de 4 étapes :
1) suréchantillonage important (ie : 384Khz pour le TAS5558)
2) réduction de nombre de bits (ie : 5/7/8 bits .. je ne sais pas pour le TS5558)
3) modulation PWM
4) étage d'amplification de puissance analogique, mais en tout ou rien, d'où un rendement très élevé

Les 3 premières étapes sont entièrement réalisé dans le domaine digital. Comme les marketeurs ne savent compter que jusqu’à trois, ils disent que c'est un Full Digital Amplifier (FDA) !
C'est un peu oublier les problèmes potentiels de l'étage analogique , qui n'est dans aucune boucle de contre réaction et donc dont tout défaut se retrouvera dans le signal de sortie...

A part cela :
Le suréchantillonage est en fait juste un filtrage FIR (Bon, si on veut être un peu malin il faut passer par un filtre polyphase, mais ça sera pour un autre tuto).

On verra les points 3 et 4 un autre jour , si j'ai le courage

Reste l'étape de réduction du nombre de bit. Elle est nécessaire car le modulateur PWM ne peut avoir une grande précision (sous peine d'horloge à trop haute fréquence). Il est donc limité à un faible nombre de bits en entré (ie: moins de 8 ).

Réduire le nombre de bits d'un signal digital est priori simple : Si vous avez un signal sur M bits et que vous voulez le réduire à N, prenez juste les N bits de poids fort et voila !

Regardons par exemple ce qui se passe si on réduit à 4 bits (16 niveaux de valeur) par troncation directe, un signal de -6dbFs à 768Hz échantillonné à 384Khz :
Image
Beuuuurk
Il fallait s'y attendre, la troncation est une opération non linéaire, et donc elle produit de la distorsion harmonique.
Ici certaines harmoniques sont à ~ -40db . C'est de l'ordre du 1% de disto , une cata.

Heureusement , on peut faire mieux grâce au dithering !

Dithering

Cela consiste à ajouter du bruit avant la troncation :hein: , mais pas n'importe quel bruit et pas à n'importe quel niveau :
Si on réduit à N bits un signal codé sur M bit , on va ajouter un bruit codé sur M-N bits. C'est à dire que le bruit ajouté va occuper les bits qui vont être supprimés !
J'avais une belle analogie foireuse pour vous expliquer comment ca fonctionne, mais c’était trop long, alors le mieux c'est d'essayer.

Voici toujours le même signal que précédemment, toujours réduit à 4 bits mais avec ajout d'un bruit à distribution triangulaire au niveau souhaité avant troncation :

Image

Miracle, :ohmg: , toute la distorsion harmonique à disparue !
Bon, par contre on a du bruit et pas qu'un peu : à un niveau tout juste acceptable pour un autoradio ...

Alors on va "sculter le bruit" (noise shaping)

Noise Shaping

L'idée est la suivante :
Si Yd est la sortie de l'opération (dither + troncation) et Y son entrée.
Alors on peut toujours dire que Yd=Y+E, où E est l'erreur commise.
E c'est ce qu'il y à en trop en sortie par rapport à ce qu'on voulait à cause du bruit rajouté par le dithering et l'erreur de troncation.

Pourquoi pas essayer de renvoyer -E, à l'entrée pour essayer de compenser :wtf:
Au moins aux fréquences basses qui évoluent lentement, on peut espérer compenser l'erreur de l'étape de troncation précédente et que tout cela se moyenne par miracle...
En gros , un schéma comme celui ci :
Image
Note : Ne pas tenir compte de N(Z) pour l'instant.

Voyons ce que cela donne sur notre signal (en vert noise shaped, en bleu seulement avec dither)
Image
Wahoo, notre signal est toujours là (ouf) mais le bruit est en dessous de -90db de 0 à 5Khz !
Pas mal
Par contre ça remonte fort après. C'est même moins bon que sans noise shaping au delà de 90Khz .

On a retiré du bruit à certaines fréquence pour en rajouter à d'autres. C'est cela sculpter le bruit.
Mais comme on est malin, on a retiré du bruit aux fréquences audibles et augmenté le bruit aux fréquences inaudibles. 8)

Et on peut faire mieux !
Plutôt que de renvoyer directement l'erreur X vers l'entrée, on peut la filtrer pour "sculter le bruit" comme on le désire, avec la limitation que plus on en retire dans une zone de fréquence plus ca augmentera ailleurs.
Le filtre c'est le bloc N(Z) sur le schéma ci-dessus.
Dans le graphe en vert précédent N(Z) =Z-1 : C'est un noise shaper du 1er ordre.
On peut complexifier un peu avec un noise shaper du 2ème ordre : H(Z)=2Z-1-Z-2

Ici 2nd ordre en mauve pétant et 1er ordre en vert criard :
Image
On a encore plus retiré de bruit là où ça nous intéresse, mais à 100Khz le bruit à encore augmenté.

Note : On peut avoir l'impression que l'on retire plus que l'on ajoute, mais l'échelle logarithmique est trompeuse : on retire beaucoup sur une petite zone de fréquence et on rajoute peu sur une grande zone de fréquence.

En fait, on est presque complètement libre de choisir N(Z) comme on veut. FIR; IIR etc ..
De préférence minimum phase pour des raisons compliquées et d'ordre quelconque. (Le TS5558 utilise un filtre du 4ème ordre)

Certains, utilisent des filtres qui essayent de tirer parti de caractéristiques psychoacoustiques : on retire plus de bruit là ou l'oreille est la plus sensible.
Vous trouverez ici , une liste très complète de tout ce qui est utilisé en pratique :
http://audio.rightmark.org/lukin/dither/dither.pdf

Mais, au fait, il ressemble à quoi notre noise shaped signal, avec son bruit à -100dbFs de 0 à 10Khz :
Image
:ko: étonnant non ?
Et oui le traitement de signal c'est magique : ce signal si sale, a en fait très peu de bruit dans la bande audio. Tout ce bruit visible est à bien plus haute fréquence. (rappelez vous : fréquence d’échantillonnage 384Khz)
On voit bien par contre que ce signal est quantifié sur 4 bits : il y à très peu de niveau différent (13 sur 16 maxi en 4 bits).

Voilà j'espère que vous avez compris quelque chose. En tout cas, réaliser un noise shaper c'est pas bien compliqué (voir le schéma). Il faut juste faire le bon choix pour le filtre, mais il existe beaucoup de bons exemples éprouvés dans la littérature.

A noter, que l'on peut pousser le bouchon plus loin : utiliser une fréquence échantillonnage vraiment très élevé (ex : 2.822Mhz) et seulement 1 bit !
C'est le format DSD du SACD , mais il n'est pas sans inconvénients.
Dernière édition par tcli le 10 Jan 2016 22:44, édité 6 fois.
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 17 Déc 2015 3:10

Beau boulot !
gbadaut
 
Messages: 403
Inscription Forum: 02 Aoû 2009 0:51
Localisation: Lyon
  • offline

Message » 17 Déc 2015 9:38

Merci tcli pour ton article très intéressant et ludique , un vrai cadeau de Noel!
L’ère du tout numérique jusqu'à la Voice Coil arrive à grand pas ? :bravo:

Donc en fait tu nous confirmes qu'avec un dither et un bon N.S, on peux faire un bon Dac avec peu de bits ... je suis presque convaincu aussi. Sauf qu'il reste le problème du point 1. Le sur-échantillonnage indispensable implique un filtrage et c'est la que la dégradation du son arrive si on compare avec des DAC NOS. Pour corroborer, il semble qu'un PCM1792 sonne aussi bien q'un PCM1704 a condition de changer l'upsampling amont (ref h.rutgers)

J'en profite pour reposter ce lien sur le topic (noise shaping meridian) que tu connais ou il y quelques pdf intéressants et des résultats de simuls qui rejoignent biens les courbes que tu postes.

Quel est ton point de vue sur la qualité de ces architectures pour la partie haute du spectre ? (est ce que le N.S. impacte la disto entre 5-20khz par exemple ) et/ou à faible volume (SNR) ?
Dernière édition par maxidcx le 17 Déc 2015 9:53, édité 1 fois.
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 17 Déc 2015 9:40

tcli a écrit:Cela faisait longtemps que je n'avais pas fait autre chose que de troller sur ce forum.


Ca nous arrive à tous! :wink:

En tout cas, bel exposé, on a l'impression de comprendre! :lol:
Merci!
Philby
 
Messages: 9819
Inscription Forum: 12 Mar 2001 2:00
Localisation: 33
  • offline

Message » 17 Déc 2015 20:31

maxidcx a écrit:Donc en fait tu nous confirmes qu'avec un dither et un bon N.S, on peux faire un bon Dac avec peu de bits ... je suis presque convaincu aussi.

Ce tuto n'est qu'un essai de vulgarisation de la technique de base. Il n'aborde pas les problèmes ..
J'ai écris cet article parce que je connaissais bien le principe depuis plusieurs dizaines d'année, mais je ne l'avais jamais vraiment essayé.
Je veux dire , jamais codé un noise shaper et regardé comment ca se comportait en pratique.
Toutefois, tout est écris en "octave", donc c'est plus une simu idéale fait en une soirée qu'une vraie mise en oeuvre. En particulier les calculs internes s'effectuent en flottant 64 bits. C'est un peu luxueux et cache peut être certains défauts qu'aurait une vraie mise en œuvre. De plus en jouent un peu avec, il y a des résultats qu'il faut que je comprenne mieux.
C'est l’intérêt de pratiquer, il y a toujours des trucs qui ne sont pas dans les livres ...

maxidcx a écrit: Sauf qu'il reste le problème du point 1. Le sur-échantillonnage indispensable implique un filtrage et c'est la que la dégradation du son arrive si on compare avec des DAC NOS

Tu arrives vraiment a entendre la différence entre 2 bon filtrages ?
Et si tu entends une différence entre avec et sans, comment peux tu être sur que cela vient du filtrage et pas d'un autre élément dans la chaine de reproduction ?
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 18 Déc 2015 1:15

maxidcx a écrit:Donc en fait tu nous confirmes qu'avec un dither et un bon N.S, on peux faire un bon Dac avec peu de bits ...


C'est grosso merdo également le fonctionnement d'un DAC moderne: Le modulateur d'un ESS9018 fonctionne sur 6 bits par défaut (et même si on peu pousser à 9, 6 donne le meilleur résultat en terme de S/N) et avec un noise shaping du 5eme ordre pour les étages finaux. Bon c'est pas un modulateur pwm, mais delta/sigma, mais on est pas loin...
Tazz28
 
Messages: 2802
Inscription Forum: 03 Nov 2008 23:47
Localisation: Dreux
  • offline

Message » 25 Avr 2016 20:27

Merci pour ce tuto que j'aurais raté si tu ne venais pas de poster le lien sur le fil FDA. Impossibie de tout suivre...

La configuration dans mon profil


Thierry
MSB Premier - Benchmark AHB2 x2 - Vivid G2S2
ThierryNK
Membre HCFR
Membre HCFR
 
Messages: 1405
Inscription Forum: 03 Juin 2012 12:48
Localisation: Saint Maur (94)
  • offline

Message » 26 Avr 2016 18:37

Merci pour cet article .. et pour l'usage du libre "octave" :wink:
domcars0
 
Messages: 179
Inscription Forum: 18 Aoû 2005 15:39
  • offline


Retourner vers Discussions Générales

 
  • Articles en relation
    Dernier message