FR 3066337 A1 20181116 FR 1754113 A 20170511 1 Procédé d'élimination de la gigue du flux d'un signal numérique d'entrée. La présente invention a trait à un procédé de traitement du signal, plus particulièrement appliqué à des signaux numériques destinés à être convertis en signaux analogiques, en lien avec des problématiques liées au signal d'horloge. Plus spécifiquement encore, l'invention s'applique au domaine du son, et de la restitution en haute fidélité (Hi-Fi) de musiques émanant de sources numériques diverses. Les signaux utilisés pour le codage des sons autant que les matériels qui les utilisent se sont largement diversifiés ces dernières années, notamment à l'aune des évolutions et progrès des technologies disponibles autant sur un plan matériel que logiciel, de sorte que les opérations de reproduction sonore doivent s'accommoder de sources de signaux de plus en plus variées à mesure que le temps passe. Dans les convertisseurs Hi-Fi, par exemple, qui sont basés à titre principal sur une électronique réalisant la conversion numérique/analogique, il est devenu impossible de contrôler le signal d'horloge de la source numérique d'entrée du fait de la diversité des équipements utilisables. Ceux-ci vont du lecteur de CDDVD à l'ordinateur personnel en passant par les télévisions, etc. Le résultat pratique est que pour réaliser l'indispensable conversion des signaux numériques issus de ces équipements, en vue de les transformer en des signaux analogiques de qualité compatible avec les exigences élevées de restitution sonore HI-FI, on se retrouve avec un signal d'horloge imprécis. 3066337 2 De fait, la qualité de la conversion, dont dépend in fine la restitution sonore, est d'emblée obérée par ce problème de signal d'horloge supposé cadencer ladite conversion, l'imprécision mentionnée étant un phénomène 5 connu en électronique sous le nom de gigue, ou jitter en anglais. La fluctuation du signal d'horloge dans le signal numérique série codant le son, se traduisant par une dispersion temporelle de ce signal, impacte dans un 10 premier temps le traitement électronique, c'est-à-dire la conversion du signal. Elle a évidemment ensuite une conséquence sur le résultat obtenu en sortie du convertisseur, c'est-à-dire le signal analogique du son, et elle affecte in fine sa reproduction sonore audible. 15 L'invention apporte une solution à ce problème, en proposant une approche technique innovante permettant une lecture fidèle de fichiers codant des pièces de musique depuis des médias de divers types, ensuite transmis selon des normes série par exemple de type USB, 20 offrant ainsi une compatibilité avec de nombreux formats. La solution de l'invention, en s'affranchissant des insuffisances liées aux problématiques d'horloge posées ci-dessus, permet un rendu sonore des pièces musicales de très haute qualité. 25 Pour remplir ces objectifs, et d'autres qui seront manifestes à la lecture des développements qui suivent, le procédé de l'invention, permettant en réalité l'élimination de la gigue du flux d'un signal numérique d'entrée d'une unité électronique de traitement de 30 signaux, est tel qu'il comporte les étapes suivantes : 3066337 3 - détermination de la fréquence nominale d'un premier signal d'horloge d'entrée cadençant ledit signal d'entrée ; - configuration d'une horloge de l'unité 5 électronique pour générer un second signal d'horloge de cadencement des signaux de sortie de l'unité électronique sur la base de ladite fréquence nominale ; - mémorisation en continu du signal d'entrée dans 10 un espace mémoire fonctionnant en mode FIFO ; - asservissement de la fréquence du second signal d'horloge au taux de remplissage de l'espace mémoire en faisant varier par incréments la fréquence du second signal d'horloge selon la 15 variation du niveau d'occupation de l'espace mémoire à partir de conditions initiales prédéterminées. L'idée force à la base du procédé de l'invention est de décorréler le signal d'horloge de sortie (le second 20 signal d'horloge) du signal d'horloge issu de la source numérique d'entrée, qualifié ici de premier signal d'horloge. Le but est en quelque sorte de régénérer l'horloge, en vue d'un traitement ultérieur du signal numérique d'entrée, de manière à garantir que l'horloge 25 de cadencement dudit traitement soit en permanence à la même fréquence que la fréquence de l'horloge source. En d'autres termes, il s'agit de créer, pour le traitement électronique objet, un signal d'horloge indépendant mais asservi à la fréquence d'entrée pour 30 séquencer ledit traitement à venir, par exemple une conversion digitale analogique. C'est cet exemple 3066337 4 particulier qui sera utilisé à titre principal dans la suite de la description de l'invention. Le nouveau signal d'horloge, découplé du signal d'entrée mais qui lui est à chaque instant synchronisé en fréquence, 5 empêche toutes pertes des données, lesquelles sont préservées du fait de leur stockage en mémoire. Le flux numérique d'entrée n'est donc pas modifié au cours des opérations propres à ce procédé, qui ne concernent que les horloges d'entrée/sortie. 10 Selon une possibilité, les conditions initiales prédéterminées de l'asservissement de fréquence comportent une taille définie d'espace mémoire, un seuil haut de remplissage, un seuil bas de remplissage, un incrément de fréquence, une direction de modification 15 initiale du remplissage, allant de préférence dans le sens du vidage de l'espace mémoire. Plus précisément, le seuil haut de remplissage et le seuil bas de remplissage sont par exemple prévus pour encadrer un taux de remplissage de 50% de l'espace 20 mémoire. Ce taux de remplissage garantit une certaine latence dans le calcul ultérieur des seuils éventuellement successifs à déterminer dans un sens ou dans l'autre, puisqu'il se situe à mi-chemin entre les extrêmes constitués d'un espace mémoire respectivement 25 plein et vide, offrant dès lors une marge de manoeuvre maximale dans les deux sens. De même, l'incrément de fréquence initial est compris entre 3 Hz et 5 Hz, de préférence fixé à 4 Hz, valeur qui constitue en pratique un point de départ raisonnable 30 dans la perspective d'une possible multiple division par deux. Selon un mode de fonctionnement particulier, à partir des données initiales précisées auparavant, le procédé 3066337 5 de l'invention comporte la réalisation en boucles d'un cycle formé par les étapes suivantes : - Comparaison du niveau de remplissage de l'espace mémoire avec un seuil bas SEUIL _BAS ; 5 - Si le niveau de remplissage est supérieur au seuil bas SEUIL _BAS, comparaison du niveau de remplissage de l'espace mémoire avec un seuil haut SEUIL _HAUT ; - Si le niveau de remplissage est inférieur au 10 seuil bas SEUIL _BAS ou supérieur au seuil haut SEUIL _HAUT, détection de la direction du remplissage de l'espace mémoire, sinon fin du cycle ; - Si la direction indique respectivement un 15 remplissage ou un vidage, comparaison de la valeur de l'incrément de la fréquence à une valeur minimale incrément min, division par un _ facteur u s'il lui est supérieure sinon maintien inchangé, puis inversion de la direction de 20 remplissage ; - Vérification que la valeur seuil de remplissage de l'espace mémoire est respectivement supérieure à 1 et inférieure à la contenance totale de l'espace mémoire TAILLE_FIFO ; 25 - Si oui, respectivement décrémentation ou incrémentation de la valeur du seuil SEUIL _BAS et SEUIL HAUT d'une unité ; 3066337 6 - Sinon établissement respectivement du seuil haut à TAILLE FIF0/2 + 2 et du seuil bas à _ TAILLE FIF0/2 - 2 ; _ - Variation de la fréquence respectivement par 5 soustraction/addition de l'incrément ; - Fin du cycle. Ces étapes permettent à la fréquence générée, c'est-à-dire le second signal d'horloge, de converger rapidement vers la valeur réelle de la fréquence de 10 l'horloge du flux d'entrée, celle du premier signal d'horloge, si la valeur de u est fixée de manière raisonnable. Dans un tel cas, au bout d'un nombre de boucles de l'ordre d'une dizaine, les deux valeurs sont ajustées, et la synchronisation est réalisée. 15 De préférence, le facteur u est fixé à deux, de sorte qu'à chaque changement de type de seuil lorsqu'on est au-delà d'une valeur minimale d'incrément, le palier incrémental est divisé par deux. De préférence encore, la valeur de l'incrément minimal de fréquence est 20 comprise entre 10 et 50 mHz. Dès lors que l'incrément de fréquence devient inférieur ou égal à cette valeur seuil basse, il n'y a plus de division de l'incrément par deux, et les boucles de réalisation des cycles s'arrêtent. Selon le procédé, les cycles formés de la 25 succession d'étapes sont répétés à des intervalles compris entre 8 ms et 12 ms, de préférence toutes les 10 ms, jusqu'à arriver à la valeur minimale de l'incrément de la fréquence. Un recalage de la première fréquence d'entrée et de 30 la seconde fréquence de sortie par réalisation de plusieurs boucles de ces cycles est de plus 3066337 7 régulièrement effectué, une fois par période prédéterminée p, période qui peut être de l'ordre d'une heure. Ainsi, toutes les heures, le procédé de l'invention visant à la suppression de la jigue du 5 signal d'entrée, en d'autres termes au recalage de la fréquence du signal d'horloge de sortie sur la fréquence du signal d'horloge d'entrée, est en substance réenclenché. Dans une application audio telle que dans l'exemple 10 préférentiel qui constitue le fil conducteur de la présente description, le flux numérique d'entrée est de préférence sous format I2S. Ce format I2S distingue en fait trois types de signaux : 15 - des signaux de données audio sérialisées (data) ; - un signal d'horloge « mot » (wck), qui permet la détection du passage d'un échantillon de la voie gauche à la voie droite et vice-versa ; et - un signal d'horloge « bit » (bck), qui permet de 20 décoder les données brutes. Dans un traitement de type conversion numérique/analogique, les convertisseurs actuels se basent sur un signal d'horloge (sck) spécifique pour cadencer la conversion numérique/analogique, signal qui 25 doit être synchrone avec le signal d'horloge « bit » précité (bck). En d'autres termes, la fréquence du signal d'horloge sck doit être un multiple de la fréquence du signal d'horloge bck. Le but de l'invention est de fournir une horloge sck « propre », c'est-à-dire 30 découplée de l'horloge d'entrée, au convertisseur pour améliorer les performances de conversion. C'est donc sur les signaux d'horloge « bit » que porte l'invention. Sur un plan matériel, selon une configuration 3066337 8 possible, l'unité de traitement électronique comporte un microcontrôleur doté de moyens de stockage comportant au moins un espace mémoire de type FIFO pour le stockage en continu d'au moins un signal numérique d'entrée, des 5 moyens de connexion à une interface I2S d'entrée apte à gérer un premier signal d'horloge d'entrée, une interface I2S de sortie du signal numérique et une horloge programmable reliée au microcontrôleur et munie d'une sortie d'un second signal d'horloge de sortie. 10 En substance, ce sont donc deux composants principaux qui sont employés par l'unité de traitement électronique utilisée à l'appui du procédé de l'invention. Plus précisément, pour ce qui a trait au microcontrôleur : 15 - l'interface I2S d'entrée permet de recevoir le flux audio numérique, et est cadencée par ce dernier. Sur la base du schéma type du format I2S précisé auparavant, les différents signaux connectés à cette interface sont notés de la 20 manière suivante : - data in : données audio d'entrée sérialisées _ - wck_in : horloge « mot » d'entrée - bck _in : horloge « bit » d'entrée - l'interface I2S de sortie émet le flux audio 25 numérique par exemple à destination du convertisseur numérique/analogique. Sur la même base que ci-dessus, les différents signaux connectés à cette interface sont notés : - data_out : données audio de sortie sérialisées 30 - wck_out : horloge mot de sortie - bck_out : horloge bit de sortie - la mémoire traite les échantillons intermédiaires 3066337 9 du flux de données audio arrivant en entrée, selon un mode de stockage de type FIFO. Elle stocke lesdits échantillons d'entrée et les met par conséquent en attente. 5 L'horloge programmable, pilotée de manière numérique, possède une granularité de réglage de la fréquence de sortie suffisamment fine pour s'adapter à la fréquence d'entrée. Plus précisément, ce composant peut en pratique être un générateur d'horloge à commande 10 numérique, par exemple du type SI570, ou un générateur de signaux à commande numérique (DDS), par exemple du type AD9910 ou AD9957. L'horloge programmable fournit le signal d'horloge sck qui cadence le traitement électronique ultérieur, par exemple la conversion 15 numérique/analogique. Ce signal est également fourni au microcontrôleur pour cadencer l'interface I2S de sortie. Le procédé de l'invention est en pratique mis en oeuvre via un logiciel spécifique qui permet d'effectuer, de la manière qui a été précisée auparavant, 20 l'asservissement nécessaire du signal d'horloge bck_out (signal qui est identifié au signal d'horloge sck précité) en sortie au signal d'horloge bck_in en entrée. L'invention va à présent être décrite plus en détail, en référence aux figures annexées qui représentent un 25 exemple de mise en oeuvre non limitatif de l'invention, et pour lesquelles : - la figure 1 représente un schéma de principe simplifié de l'unité électronique de traitement selon l'invention ; et 30 - la figure 2 montre un organigramme de mise en oeuvre possible du procédé selon l'invention. En référence à la figure 1, un étage 1 de sélection de source permet dans les faits d'assurer la connexion avec 3066337 10 les différents moyens de transfert des signaux en provenance de diverses sources, leur réception puis leur transformation en un signal en format I2S. Initialement, selon les sources d'où ils proviennent, les signaux 5 audio peuvent par exemple être véhiculés, selon la figure 1, par des câbles USB (USB), des fibres optiques (opt), des câbles coaxiaux (coax) et des câbles numériques AES/XLR (AES/XLR). D'autres solutions de transfert sont bien entendu évidemment possibles. 10 Le signal transformé en format I2S sépare les horloges (CLK) et les données (DATA : F3 E2 C5), comme noté auparavant, à destination d'un micro-contrôleur 2 qui est l'un des deux composants essentiels du système de l'invention avec l'horloge programmable 3. Le signal 15 d'horloge concerné au titre du procédé de l'invention est comme mentionné le signal d'horloge « bit », en l'occurrence référencé CLK. Le micro-contrôleur 2 comporte des moyens de stockage (mémoires) internes, et gère le transfert des données (DATA) et leur 20 mémorisation selon un mode FIFO. Les données sont préservées en mémoire, et disponibles en sortie exactement sous la même forme (DATA : F3 E2 C5) en vue d'être envoyées à un étage de traitement 4, en l'espèce un convertisseur numérique/analogique (DAC). 25 Le signal d'horloge subit un traitement particulier, décrit auparavant, au moyen de l'horloge programmable 3, le signal d'horloge de sortie étant asservi au signal d'horloge d'entrée. Les deux signaux sont synchrones en fréquence, ce qui explique l'usage de la même référence 30 (CLK), mais découplés pour ce qui concerne la gigue, du fait du traitement de l'invention. Cette synchronisation permet d'éviter les pertes de données. Il est à noter que le pilotage purement numérique de la génération 3066337 11 d'horloge évite la production d'un bruit parasite inhérent à un pilotage analogique. Un tel bruit se traduirait en pratique par un ajout de gigue ou décalage temporel dans le signal d'horloge généré. 5 En référence à la figure 2, le cycle d'étapes ou d'opérations constituant la routine d'asservissement de la fréquence du second signal d'horloge est réalisé en un certain nombre de boucles successives, par exemple tous les 10 ms. La fréquence de départ du signal 10 d'horloge à asservir est en fait synchronisée avec la fréquence nominale du signal d'horloge en entrée, le découplage ne concernant que la jigue. Les conditions initiales sont par ailleurs les suivantes : l'espace mémoire est par exemple égal à TAILLE_FIFO = 48, le 15 seuil bas SEUIL _BAS est égal à 22, le seuil haut SEUIL _HAUT est égal à 26, l'incrément fréquentiel se monte à 4 Hz et la direction initiale du vidage/remplissage de l'espace mémoire est orientée vers un vidage, c'est-à-dire que la valeur de l'index 20 correspondant DIRECTION est égale à BAS (DIRECTION=BAS). Ladite routine commence par un test du niveau de remplissage de l'espace mémoire FIFO, comparé au seuil bas SEUIL _BAS. Dans l'hypothèse où ledit niveau n'est pas inférieur à ce seuil, une comparaison est effectuée 25 avec le seuil haut de remplissage SEUIL_HAUT. Aucun autre traitement n'est effectué si le niveau de remplissage se situe entre les deux valeurs SEUIL_BAS et SEUIL _HAUT, et le cycle est par conséquent terminé. Cela signifie en pratique que la valeur de la fréquence 30 d'horloge de sortie est raisonnablement synchronisée à la valeur de la fréquence du signal d'horloge d'entrée, et qu'aucun traitement d'asservissement n'est nécessaire. 3066337 12 Dans le cas inverse où lesdites comparaisons donnent des résultats inverses, à savoir que le niveau de remplissage est inférieur/supérieur respectivement aux valeurs SEUIL BAS/SEUIL HAUT, la direction de _ _ 5 remplissage en cours (un remplissage positif de l'espace mémoire correspondant à DIRECTION=HAUT et un vidage de cet espace correspondant à DIRECTION=BAS) est testée en vue de contrôler si l'espace mémoire est en train de se remplir ou de se vider. Si la direction va dans le sens 10 (DIRECTION=HAUT) d'un remplissage dans le cas d'un niveau inférieur à SEUIL_BAS en cours ou si la direction va dans le sens (DIRECTION=BAS) d'un vidage dans le cas d'un niveau supérieur à SEUIL_HAUT en cours, l'incrément de fréquence est testé pour vérifier s'il est supérieur 15 à une valeur minimale d'incrément référencée incrément min. Dans l'affirmative, la valeur de l'incrément fréquentiel est divisée par deux pour être fixée à une valeur égale à incrément/2, c'est-à-dire à 2 HZ dans la première boucle de l'exemple actuel, puis la 20 direction du remplissage de l'espace mémoire est inversée. Si la valeur de l'incrément n'est pas supérieure à ladite valeur minimale, elle n'est pas divisée par deux avant que la direction du remplissage ne soit inversée. 25 Dans la branche correspondant à un niveau de remplissage de l'espace mémoire inférieur à SEUIL_BAS en cours, on se retrouve donc, après un ajustement éventuel de la valeur de la fréquence, à une direction de remplissage orientée à la baisse. Un test est effectué 30 pour vérifier que SEUIL_BAS est encore supérieur à 1. Ce même test est d'ailleurs directement effectué si, après avoir initialement constaté que le niveau de remplissage de l'espace mémoire est inférieur à SEUIL_BAS, la 3066337 13 direction de remplissage n'est pas égale à DIRECTION=HAUT, ce qui signifie que l'espace mémoire est déjà en train de se vider. Si SEUIL _BAS n'est pas supérieur à 1, la valeur du 5 seuil haut SEUIL _HAUT est modifiée pour la fixer à SEUIL _ HAUT = TAILLE FIF0/2 + 2, sinon la valeur de _ SEUIL _BAS est modifiée en y soustrayant 1 avant d'opérer la même modification de SEUIL HAUT. La fréquence est ensuite modifiée par soustraction de l'incrément 10 fréquentiel. On diminue en pratique la fréquence puisqu'on est plutôt dans une dynamique de vidage de l'espace mémoire. Le cycle est alors terminé, un autre cycle peut alors éventuellement recommencer. Dans l'autre branche correspondant à un niveau de 15 remplissage de l'espace mémoire supérieur à SEUIL _HAUT en cours, on se retrouve donc, après l'ajustement éventuel sur la valeur de la fréquence, à une direction du remplissage orientée à la hausse. Cette fois, la valeur du seuil haut est comparée à la taille maximale 20 de l'espace mémoire, pour contrôler qu'il est inférieur à cette dernière, SEUIL_HAUT REVENDICATIONS1. Procédé d'élimination de la gigue du flux d'un signal numérique d'entrée d'une unité électronique de traitement de signaux, comportant : - détermination de la fréquence nominale d'un premier signal d'horloge d'entrée cadençant ledit signal d'entrée ; - configuration d'une horloge de l'unité électronique pour générer un second signal d'horloge de cadencement des signaux de sortie de l'unité électronique sur la base de ladite fréquence nominale ; - mémorisation en continu du signal d'entrée dans un espace mémoire fonctionnant en mode FIFO ; - asservissement de la fréquence du second signal d'horloge au taux de remplissage de l'espace mémoire en faisant varier par incréments la fréquence du second signal d'horloge selon la variation du niveau d'occupation de l'espace mémoire à partir de conditions initiales prédéterminées. 2. Procédé d'élimination de la gigue d'un signal selon la revendication précédente, caractérisé en ce que les conditions initiales prédéterminées comportent une taille définie d'espace mémoire, un seuil haut de remplissage, un seuil bas de remplissage, un incrément de fréquence, une direction de modification initiale du remplissage, allant de préférence dans le sens du vidage de l'espace mémoire. 3066337 16 3. Procédé d'élimination de la gigue d'un signal selon la revendication précédente, caractérisé en ce que le seuil haut de remplissage et le seuil bas de remplissage encadrent un taux de remplissage de 50% de l'espace 5 mémoire. 4. Procédé d'élimination de la gigue d'un signal selon l'une des revendications 2 et 3, caractérisé en ce que l'incrément de fréquence initial est compris entre 3 Hz et 5 Hz, de préférence fixé à 4 Hz. 10 5. Procédé d'élimination de la gigue d'un signal selon l'une des revendications 2 à 4, caractérisé par la réalisation en boucles d'un cycle formé par les étapes suivantes : - Comparaison du niveau de remplissage de l'espace mémoire avec un seuil bas SEUIL _BAS ; 15 - Si le niveau de remplissage est supérieur au seuil bas SEUIL _BAS, comparaison du niveau de remplissage de l'espace mémoire avec un seuil haut SEUIL_HAUT ; - Si le niveau de remplissage est inférieur au seuil bas SEUIL BAS ou supérieur au seuil haut SEUIL HAUT, _ SEUIL_ HAUT, détection de la direction du remplissage de l'espace mémoire, sinon fin du cycle ; - Si la direction indique respectivement un remplissage ou un vidage, comparaison de la valeur de l'incrément de la fréquence à une valeur minimale incrément min, _ 25 division par un facteur u s'il lui est supérieure sinon maintien inchangé, puis inversion de la direction de remplissage ; - Vérification que la valeur seuil de remplissage de l'espace mémoire est respectivement supérieure à 1 et 3066337 17 inférieure à la contenance totale de l'espace mémoire TAILLE FIFO ; _ - Si oui, respectivement décrémentation ou incrémentation de la valeur du seuil SEUIL _BAS et SEUIL HAUT d'une 5 unité ; - Sinon établissement respectivement du seuil haut à TAILLE FIF0/2 + 2 et du seuil bas à TAILLE FIF0/2 - 2 ; _ _ - Variation de la fréquence respectivement par soustraction/addition de l'incrément ; 10 - Fin du cycle. 6. Procédé d'élimination de la gigue d'un signal selon la revendication précédente, caractérisé en ce que le facteur u est égal à deux. 7. Procédé d'élimination de la gigue d'un signal selon l'une 15 des revendications 5 et 6, caractérisé en ce que la valeur de l'incrément minimal de fréquence incrément_ min est comprise entre 10 et 50 mHz. 8. Procédé d'élimination de la gigue d'un signal selon l'une des revendications 5 à 7, caractérisé en ce que les 20 cycles formés de la succession d'étapes sont répétés à des intervalles compris entre 8 ms et 12 ms, de préférence toutes les 10 ms, jusqu'à arriver à la valeur minimale incrément min de l'incrément de la fréquence. _ 9. Procédé d'élimination de la gigue d'un signal selon l'une 25 des revendications précédentes, caractérisé en ce qu'un recalage de la seconde fréquence de sortie avec la première fréquence d'entrée est effectué une fois par période prédéterminée p, la période p étant de préférence de l'ordre d'une heure. 3066337 18 10. Dispositif pour l'élimination de la gigue d'un signal selon le procédé selon l'une des revendications précédentes, caractérisé en ce que l'unité de traitement électronique comporte un microcontrôleur 2 doté de moyens 5 de stockage comportant au moins un espace mémoire 5 de type FIFO pour le stockage en continu d'au moins un signal numérique d'entrée, des moyens de connexion à une interface I2S d'entrée apte à gérer un premier signal d'horloge d'entrée, une interface I2S de sortie du signal 10 numérique et une horloge programmable 3 reliée au microcontrôleur 2 et munie d'une sortie d'un second signal d'horloge de sortie. 15 20