FR 2951835 A1 20110429 FR 0957487 A 20091026 DESCRIPTION La présente invention concerne le domaine du traitement du signal, plus particulièrement de la correction des signaux. Plus précisément, l'invention a pour objet un dispositif numérique permettant le calcul, en temps réel, d'un signal de consigne corrigé et destiné notamment à être employé dans les unités de génération de gradients de champ magnétique. Ces dernières sont communément mises en oeuvre dans la spectrométrie par résonance magnétique nucléaire (RMN) et les systèmes d'imagerie par résonance magnétique (IRM). De manière connue, les gradients sont engendrés par des bobines placées à l'intérieur de l'aimant générant le champ magnétique principal constant. Ces bobines sont pilotées par des amplificateurs de courant, leur consigne étant habituellement donnée en tension et consistant généralement en une séquence d'impulsions. Cette consigne est générée par un dispositif numérique dont l'entrée est un séquenceur, constituant un générateur d'impulsions programmable, et la sortie un étage de conversion numérique-analogique donnant la tension de consigne. Le générateur d'impulsions est programmé en fonction du type d'analyse devant être effectuée par le spectromètre ou l'imageur. La figure 1 annexée montre les différentes composantes constitutives essentielles d'un système de génération de gradients. Une configuration habituelle d'un tel système permet de générer des gradients de champs suivant les trois axes (X, Y et Z, ce dernier étant colinéaire avec le champ principal), comme représenté sur la figure 2 annexée. D'autres configurations de systèmes sont également connues et mises en oeuvre. Il est également connu que, lors de la variation du champ magnétique dans une bobine de gradient, des courants de Foucault apparaissent sur des éléments conducteurs, externes à la bobine, soumis à ce champ. Ces courants produisent un champ magnétique s'opposant au champ des gradients. -2- En considérant, par exemple, une bobine de gradient traversée par une impulsion de courant, le temps d'établissement du champ magnétique crée par cette bobine sera influencé par le champ engendré par les courants de Foucault. Ce phénomène est illustré sur la figure 3 annexée (illustration de l'effet des courants de Foucault sur le champ magnétique généré par une bobine de gradient). La dégradation du champ des gradients par celui produit par les courants de Foucault a une influence néfaste sur les performances du spectromètre ou de l'imageur. Il est par conséquent nécessaire de réduire au maximum l'effet des courants de Foucault sur le champ des gradients. A cette fin, une correction (du type préaccentuation par exemple) peut être appliquée sur la consigne en tension afin de compenser l'effet du champ opposé (la figure 4 annexée illustre une telle correction des effets des courants de Foucault). Les solutions numériques proposées à ce jour pour réaliser une telle correction sont principalement de deux types, à savoir, les solutions entièrement matérielles (basées sur des machines à états par exemple) et les solutions de nature logicielle (mise en oeuvre sur un microprocesseur de traitement de signaux DSP, par exemple). Le premier type de solution résulte en une implémentation rigide et figée et le second type de solution fait état de performances limitées. La présente invention a notamment pour but de proposer une solution améliorée permettant de surmonter les limitations des solutions mentionnées ci-dessus, son application n'étant toutefois pas restreinte à la correction des signaux de consigne des bobines de gradients. En outre, la solution proposée par l'invention devrait également permettre, d'une part, une bonne prédictibilité des performances et, d'autre part, une bonne gestion de l'utilisation des ressources matérielles mises en oeuvre, du fait d'une structure et d'une constitution simples. A cet effet, l'invention a pour objet un dispositif de correction en temps réel de signaux de consigne ou de commande en fonction de facteurs ou de coefficients de correction ou de compensation fournis, en particulier pour la correction des signaux de consigne destinés à la commande de bobines de gradients d'un appareil de spectrométrie ou d'imagerie par résonance magnétique nucléaire, ledit dispositif étant destiné à recevoir en entrée des signaux de consigne et à délivrer à sa sortie des -3- signaux de consigne modifiés pour compenser les défauts, limitations, perturbations, interférences, effets négatifs ou analogues rencontrés ultérieurement lors du traitement, de la transmission, de la transformation et/ou de l'application desdits signaux de consigne, dispositif caractérisé en ce qu'il consiste en au moins un circuit basé sur une architecture microprogrammée et composé de plusieurs sous-ensembles coopérants de composants numériques comprenant essentiellement un micro-séquenceur formant compteur, une mémoire de stockage de microinstructions et une unité de traitement associée à au moins une des mémoire de travail et intégrant des modules de calcul arithmétique, ladite unité de traitement modifiant les données des signaux de consigne en accord avec les microinstructions adressées par le micro-séquenceur et en prenant en compte les facteurs ou coefficients de correction ou de compensation fournis. Bien que de nombreuses applications de ce dispositif de correction sont envisageables, il est plus particulièrement fait état dans la présente de sa mise en oeuvre dans le contexte RMN/IRM. Ainsi, l'invention concerne également un système de génération de gradients de champ magnétique comprenant essentiellement des moyens de génération d'un signal de consigne numérique, par exemple sous la forme d'une séquence d'impulsions, des moyens de conversion et d'amplification du signal de consigne, le cas échéant propres à une voie, et une ou plusieurs bobine(s) de génération de gradients alimentée(s) par le signal ou les signaux amplifiée(s) fourni(s) par les moyens de conversion et d'amplification associés, le cas échéant respectivement correspondant, ledit système comportant également un dispositif de correction du signal de consigne avant sa conversion et son amplification, et le cas échéant sa démultiplication, système caractérisé en ce que le dispositif de correction est un dispositif tel que décrit ci-dessus. Le procédé de correction résultant de la mise en oeuvre de ces différentes dispositions matérielles et logicielles consiste à générer, dans le contexte de la production de gradients de champ magnétique, une correction en temps réel par un dispositif numérique inséré entre le générateur d'impulsions et l'étage de conversion numérique-analogique dans un système de génération du type précité. Le dispositif de correction peut, par exemple, implémenter un filtre passe-haut numérique afin d'appliquer une préaccentuation ou une -4- prédistorsion sur le signal de consigne (voir la figure 4 annexée). Le dispositif de correction numérique selon l'invention sera également appelé « correcteur » par la suite. Etant donné que la correction apportée est avantageusement paramétrable (en rapport avec les caractéristiques de la bobine de gradients ou de l'amplificateur par exemple), les calculs effectués par le correcteur prennent en considération des coefficients provenant d'un dispositif externe. Ces coefficients peuvent être calculés en fonction de paramètres entrés manuellement par l'opérateur ou par un dispositif automatisé. Les paramètres précités, dont l'exploitation permet de déterminer les coefficients de correction mis en oeuvre par le dispositif de correction, peuvent par exemple être déterminés ou résulter de mesures effectuées préalablement et permettant de relever les effets des courants de Foucault (voir par exemple WO 89/08852). Une fois établis, ces coefficients ne varient plus tant que les composants du système ne changent pas, leur calcul ne relève donc pas de l'aspect temps réel contrairement aux opérations effectuées par le correcteur. L'invention sera mieux comprise, grâce à la description ci- après, qui se rapporte à un mode de réalisation préféré, donné à titre d'exemple non limitatif, et expliqué avec référence aux dessins schématiques annexés, dans lesquels : la figure 5 est un schéma bloc de principe d'un système de génération de gradients de champ magnétique intégrant un dispositif de 25 correction ou correcteur selon l'invention ; la figure 6 est un schéma de principe illustrant la constitution d'un dispositif de correction selon un mode de réalisation de l'invention ; la figure 7 illustre schématiquement les différents signaux d'entrée et de sortie d'un micro-séquenceur faisant partie du dispositif de la 30 figure 6 ; la figure 8 est un schéma bloc de principe d'un ensemble fonctionnel [unité de traitement/mémoires de travail] faisant partie du dispositif de la figure 6 ; la figure 9 illustre schématiquement la constitution de la 35 mémoire de stockage des microinstructions faisant partie du dispositif de la figure 6, ainsi que la constitution et l'agencement d'une ligne de microinstructions, -5- la figure 10 est une représentation de principe illustrant une application du dispositif de la figure 6 sous la forme de trois cellules de filtrage en parallèle, et, les figures 11 et 12 sont des représentations de principe illustrant les contenus des mémoires ou des zones de mémoires stockant respectivement les données (fig. 11) et les coefficients de correction (fig. 12) et associées à l'unité de traitement comme représenté sur la figure 6. La figure 6 des dessins annexés montre, en relation avec les figures 7 à 9, un dispositif 1 de correction en temps réel de signaux de consigne ou de commande en fonction de facteurs ou de coefficients de correction ou de compensation fournis, en particulier pour la correction des signaux de consigne destinés à la commande de bobines de gradients 2 d'un appareil de spectrométrie ou d'imagerie par résonance magnétique nucléaire. Un tel dispositif 1 est destiné à recevoir en entrée des signaux de consigne et à délivrer à sa sortie des signaux de consigne modifiés ou corrigés pour compenser les défauts, limitations, perturbations, interférences, effets négatifs ou analogues rencontrés ultérieurement lors du traitement, de la transmission, de la transformation et/ou de l'application desdits signaux de consigne. Conformément à l'invention, ledit dispositif de correction 1 consiste en au moins un circuit 1' basé sur une architecture microprogrammée et composé de plusieurs sous-ensembles 3, 4, 5, 6, 6' coopérants de composants numériques comprenant essentiellement un micro-séquenceur 3 formant compteur, une mémoire 4 de stockage de microinstructions et une unité de traitement 5 associée à au moins une des mémoire de travail 6, 6' et intégrant des modules 7, 7' de calcul arithmétique, ladite unité de traitement 5 modifiant les données des signaux de consigne en accord avec les microinstructions adressées par le micro- séquenceur 3 et en prenant en compte les facteurs ou coefficients de correction ou de compensation fournis. Selon une première caractéristique de l'invention, les microinstructions contenues dans la mémoire de stockage 4 forment un algorithme de correction pilotant le fonctionnement des différents sous- ensembles opérationnels 3, 5, 6, 6' constitutifs du dispositif de correction 1 et programmé en fonction de la correction à réaliser, le séquencement des données au niveau de registres d'entrée 8 et de sortie 8' dudit dispositif 1, -6- ainsi que la remise à zéro du micro-séquenceur 3 étant piloté par un signal de synchronisation SYNC dont la période est un multiple du signal d'horloge CLK cadençant le fonctionnement des différents sous-ensembles constitutifs. Selon une autre caractéristique de l'invention, la ou les mémoire(s) de travail 6, 6' comprend(nent) au moins une première zone mémoire 6 destinée à stocker les coefficients de correction à appliquer et au moins une seconde zone mémoire 6' destinée à stocker la donnée d'entrée à corriger, le ou les résultat(s) intermédiaire(s) des opérations arithmétiques réalisées par les modules de calculs arithmétiques et le résultat final correspondant à la donnée de sortie corrigée. Il peut être prévu soit une seule mémoire de travail comprenant au moins deux zones de stockage 6 et 6' distinctes, soit deux mémoires de travail 6 et 6' distinctes. La prévision de mémoires de stockage 4 et de travail 6, 6' comme exposée ci-dessus confère au dispositif 1 une grande souplesse. En effet, elles permettent d'effectuer : - la mise à jour des coefficients ou facteurs de correction en temps réel (contenu de la mémoire 6), - la modification du type d'opérations réalisées par le correcteur 1 par la mise à jour du micro-programme (contenu de la mémoire 4) sans modification de la structure de base du correcteur 1 (unités arithmétiques, etc). En accord avec une réalisation pratique avantageuse de l'invention, et comme l'illustre la figure 8 des dessins annexés, l'unité de traitement 5 comprend également, d'une part, des bus 9, 9' de transmission d'opérandes, éventuellement associés à au moins un multiplexeur 10 alimentant les modules de calcul arithmétique 7, 7', en fonction de signaux de commande élémentaires des microinstructions à exécuter, avec des données et des coefficients extraits de la ou des mémoire(s) de travail 6, 6' par l'intermédiaire de ports de lecture 11 et, d'autre part, au moins un bus 12 d'alimentation en données relié à un port d'écriture 13 de la seconde mémoire ou zone mémoire 6' et éventuellement à un module 13' d'inversion de signe, et associé en amont à un multiplexeur 14 relié aux sorties des modules de calcul arithmétique 7, 7', au registre d'entrée 8 de la donnée à corriger, le cas échéant à au moins l'un des bus 9, 9' de transmission d'opérandes, et éventuellement à un registre de mise à zéro, l'état dudit -7- multiplexeur 14 étant également déterminé par des signaux de commande élémentaires des microinstructions à exécuter. Lorsque le format des données numériques manipulées par l'unité de traitement 5 et stockées dans les mémoires de travail 6, 6' est différent de celui ou ceux du ou des formats des données numériques en entrée (DATA-IN) ou en sortie (DATA-OUT), il peut être prévu que le dispositif 1 comprenne aussi des modules de conversion 15, 15' mutuellement inverses, en entrée et en sortie, les données d'entrée et de sortie étant par exemple des nombres entiers codés en complément à deux (fig. 6). Bien que l'invention soit décrite et représentée plus particulièrement dans le cadre d'une structure linéaire, l'homme du métier comprend aisément qu'en cas de voies multiples ou de quantités de données à traiter importantes, le dispositif de correction 1 peut présenter une structure vectorielle et comporter plusieurs circuits 1' arrangés en parallèle, chaque circuit intégrant un groupement fonctionnel [microséquenceur 3 / mémoire de stockage 4 / unité de traitement 5 et mémoire(s) de travail 6, 6']. Conformément à une application possible de l'invention, ressortant de la figure 10, le dispositif 1 peut être programmé pour implémenter trois cellules de filtrage 16 arrangées en parallèle, chaque cellule correspondant préférentiellement à un filtre numérique passe-haut du premier ordre. Le dispositif de correction 1 présente une grande souplesse d'utilisation et peut servir à effectuer divers types d'opérations sur le signal à corriger, par exemple un signal de consigne d'amplificateur. Par conséquent, il peut, par exemple, également être utilisé pour corriger les défauts de linéarité de l'amplificateur de gradients 19' dans une application en relation avec un système 17 de génération de gradients de champ magnétique. L'invention concerne également un système 17 du type précité, qui comprend essentiellement, comme le montre la figure 5 des dessins annexés, des moyens 18, 18' de génération d'un signal de consigne numérique, par exemple sous la forme d'une séquence d'impulsions, des moyens de conversion 19 et d'amplification 19' du signal de consigne et une ou plusieurs bobine(s) 2 de génération de gradients alimentée(s) par le signal ou les signaux amplifiée(s) fourni(s) par les moyens de conversion et -8- d'amplification associés, le cas échéant respectivement correspondante, ledit système comportant également un dispositif de correction du signal de consigne avant sa conversion et son amplification, et le cas échéant sa démultiplication. Ce système 17 est caractérisé en ce que le dispositif de correction est un dispositif 1 tel que décrit précédemment. Ce système 17 peut avantageusement consister en un système de génération de gradients selon plusieurs axes, un dispositif de correction 1 étant associé à chaque axe. L'invention sera décrite dans ce qui suit, à titre d'exemple, de manière plus détaillée et en relation avec les dessins annexés. La figure 6 illustre les différentes parties constitutives essentielles du dispositif de correction 1, à savoir : - le micro-séquenceur 3 qui est un compteur permettant l'incrémentation du pointeur, ou compteur ordinal, de microcode exécuté, - l'unité de traitement 5 qui est composée des unités ou modules de calcul de base 7, 7' ainsi que des multiplexeurs 10, 14 permettant le transfert des données, - la mémoire 6 de coefficients de correction déterminés pour l'application courante, - la mémoire 6' de données qui contient les résultats intermédiaires, ou finaux, des calculs effectués par l'unité de traitement 5, - la mémoire microcode 4 qui contient le microcode constituant le microprogramme. Chaque ligne de microcode, qui est une microinstruction, peut éventuellement piloter le micro-séquenceur 3, la mémoire de données 6' et de coefficients 6 (ou éventuellement la mémoire unique partitionnée en zones contenant respectivement les données et les coefficients) et l'unité de traitement 5. Les données en entrée du correcteur 1 sont avantageusement des nombres entiers codés en complément à deux, les données en sortie, prises en charge par le convertisseur 15', sont également des nombres entiers codés en complément à deux. Toutes les composantes du dispositif de correction 1 fonctionnent de manière synchrone à l'aide d'une seule horloge (signal CLK sur la figure 6). Le flot de données en entrée et en sortie du dispositif 1 (CORRECTOR_IN et CORRECTOR_OUT) est également synchronisé avec cette horloge. -9- Les registres de données 8 et 8', tels que représentés sur la figure 6, sont rafraîchis en fonction d'un signal de synchronisation (SYNC) dont la période correspond à un nombre entier et constant de périodes d'horloge CLK. Le temps d'activation du signal de synchronisation est égal à une période d'horloge. Le délai entre les données en entrée et les données corrigées en sortie correspond à la période du signal de synchronisation. Le démarrage du micro-séquenceur 3 est aussi conditionné par ce signal de synchronisation. Le micro-séquenceur 3 est composé d'un compteur piloté par 10 des signaux du dispositif (voir figures 6 et 7). La sortie (OUT) du micro-séquenceur 3 correspond à la valeur courante du compteur. Les signaux de pilotage dudit micro-séquenceur 3 sont les suivants : - RST : entrée d'initialisation asynchrone. Celle-ci est 15 prioritaire sur les autres entrées. Lorsqu'activée, le micro-séquenceur 3 se réinitialise, c'est-à-dire sa sortie se positionne à l'état initial (zéro par exemple). Cette entrée est utilisée lors de l'initialisation globale du correcteur, à la mise sous tension par exemple. - CLK : entrée d'horloge. 20 - EN : entrée (synchrone) de validation. La sortie du compteur est incrémentée, par pas de un, à chaque période d'horloge, tant que cette entrée est validée. - RESTART : entrée (synchrone) de redémarrage. Le micro-séquenceur 3 est réinitialisé lorsque cette entrée est activée. Cette entrée est 25 prioritaire sur l'entrée EN. En d'autres termes, si le micro-séquenceur 3 est désactivé car l'entrée EN est inactive, l'activation de RESTART réinitialise tout de même le micro-séquenceur 3. La sortie du micro-séquenceur 3 adresse la mémoire 4 contenant le microcode. La valeur courante du compteur correspond par 30 conséquent au compteur ordinal. L'entrée d'horloge (CLK) du micro-séquenceur 3 est connectée à l'horloge globale du dispositif de correction 1. L'entrée de validation (EN) est contrôlée par le microcode, via le signal SEQ_EN, tandis que l'entrée de redémarrage est connectée au signal de synchronisation du dispositif (SYNC sur la figure 6). Le compteur ordinal 35 peut donc être arrêté par le microcode lorsque les calculs ont été effectués, puis être redémarré (rappelons que l'entrée RESTART est prioritaire sur - 10 - EN) par le signal de synchronisation afin d'effectuer les calculs sur les données suivantes. L'unité de traitement 5 a été conçue de manière à utiliser un minimum de ressources matérielles tout en garantissant des performances optimales. Les critères de performances concernent non seulement le temps de calcul mais également la précision de ces derniers. La notion de précision des calculs est primordiale si le correcteur 1 doit implémenter des filtres numériques à réponse impulsionnelle infinie (RII) d'ordre supérieur ou égal à 2 (les erreurs dues aux arrondis peuvent alors entraîner l'instabilité du filtre). Afin de garantir une bonne précision, l'unité de traitement 5 effectue avantageusement les calculs avec des nombres en virgule flottante respectant la norme IEEE 754 (ou CEI 60559). Une précision moindre peut suffire suivant les cas d'utilisation, des nombres en virgule fixe peuvent alors être employés afin d'économiser des ressources. Le principe de fonctionnement resterait tout de même identique. Les données en entrée et en sortie (DATA IN et DATA OUT) sont des nombres entiers codés en complément à deux. En entrée ces données sont converties en nombres à virgule flottante (convertisseur 15 = bloc "Int2Float") et en sortie les données sont converties en nombres entiers (convertisseur 15' = bloc "Float2Int"). La mémoire de données 6', volatile (de type RAM), autorise préférentiellement trois accès simultanés aux données stockées: deux accès en lecture et un accès en écriture, ceci à trois adresses différentes. La mémoire des coefficients 6, volatile également, est caractérisée par des ports d'écriture et de lecture 11 séparés, le port d'écriture étant connecté sur un bus provenant d'un dispositif extérieur au correcteur 10 (voir figure 5). La largeur d'une ligne de mémoire (données ou coefficients) correspond, dans la pratique, à la taille des nombres en virgule flottante (par exemple 64 bits s'il s'agit d'un format de codage « double précision » suivant la norme IEEE 754, ou 32 bits dans le cas du codage en « simple précision »). Les profondeurs des mémoires données 6' et coefficients 6 dépendent du type d'algorithme de correction mis en oeuvre. L'un des ports de lecture 11 de la mémoire de données 6' et le port de lecture 11 de la mémoire des coefficients 6 sont connectés sur un bus 9 d'opérandes (A-BUS). La source de l'opérande se trouvant sur A- -11- BUS est sélectionnée via un multiplexeur 10. En d'autres termes, l'opérande se trouvant sur A-BUS peut être un résultat stocké (source : mémoire des données 6') ou un coefficient (source : mémoire des coefficients 6) suivant l'état du multiplexeur 10. Le second bus 9' d'opérandes (B-BUS) est directement connecté sur l'autre port de lecture 11 de la mémoire des données 6'. Les bus d'opérandes 9 (A-BUS) et 9' (B-BUS) alimentent des unités ou modules arithmétiques 7, 7' pour nombres à virgule flottante : un additionneur 7 et un multiplieur 7'. B-BUS permet également d'envoyer les données vers le convertisseur 15' [nombre à virgule flottante / nombre entier]. Sur le port d'écriture 13 de la mémoire de données est connecté un bus 12, dénommé D-BUS. Sur ce dernier est placé un multiplexeur 14 permettant de sélectionner la source de la donnée à stocker. Cette source peut-être : - un registre contenant la valeur 0, ceci permet d'initialiser une ligne mémoire, - le résultat de la conversion nombre entier vers nombre à virgule flottante (sortie du convertisseur 15). La donnée d'entrée peut ainsi 20 être stockée en mémoire de données 6', - le résultat de la multiplication des opérandes des bus A-BUS et B-BUS (bus 9 et 9'), - le résultat de l'addition des opérandes des bus A-BUS et B-BUS (bus 9 et 9'), 25 L'opérande se trouvant sur le bus 9 (A-BUS), ceci permet de déplacer des données en mémoire de données 6'. Avant d'être placée en mémoire de données, le signe d'une valeur peut éventuellement être changé (au niveau du module d'inversion 13') afin de stocker son opposé. 30 On notera que la largeur de tous les bus 9, 9', 12 mentionnés correspond à la taille des nombres en virgule flottante. Sans modifier le principe de fonctionnement du dispositif 1, des registres tampons peuvent être placés sur les ports d'accès des mémoires 6, 6' afin d'augmenter la fréquence de fonctionnement de l'unité de traitement 35 5. Ceci équivaut à ajouter des étages de pipeline. Le fonctionnement des unités ou modules 7 et 7' effectuant les opérations arithmétiques (additionneur et multiplieur) peut également reposer sur des lignes de - 12 - transmission. Le nombre d'étages nécessaires est dépendant de la fréquence de fonctionnement et de la technologie mise en oeuvre. En outre, afin d'accélérer les calculs, le traitement peut aisément être vectorisé. A cette fin plusieurs sous-ensembles [unités de traitement 5/mémoire 6, 6' de données et de coefficients] peuvent être placés en parallèle tout en étant pilotés par le même microcode. Le fonctionnement coopératif et coordonné des composantes de l'unité de traitement 5 et des mémoires 6, 6' des données et des coefficients est conditionné par des signaux de commandes qui correspondent à des champs contenus dans les microinstructions. Les signaux de commande sont les suivants pour l'exemple représenté figure 8 : - D_SEL : sélection de la source des données à placer sur D-BUS (bus 12). - NEGSEL : signal d'activation de l'unité 5 permettant d'inverser le signe de la donnée présente sur D-BUS. - D ADDR : adresse d'écriture des données dans la mémoire des données 6'. - D_EN : signal de validation du port d'écriture 13 de la mémoire des données 6'. Lorsque ce signal est actif la donnée présente sur D-BUS (bus 12) est stockée dans la mémoire des données 6' à l'adresse indiquée par D_ADDR (bus 9). - A ADDR : adresse de lecture des données dans la mémoire des données 6' pour le premier port de lecture 11. - B_ADDR : idem à A_ADDR, pour le second port de lecture 11 de la mémoire des données 6'. - COEFF ADDR : adresse de lecture des données dans la mémoire des coefficients 6. - A_SEL : sélection de la source des données à placer sur A-30 BUS (bus 9). - OUT EN : signal de validation du registre contenant le résultat de l'unité de conversion 8' [nombres à virgule flottante vers nombres entiers]. Cette donnée correspond au résultat final calculé par l'unité de traitement 5. 35 La mémoire microcode 4 (mémoire de stockage des microinstructions) est non volatile et possède un port d'accès unique. Chaque ligne de cette mémoire 4 contient une microinstruction. Son bus - 13 - d'adresses est connecté au compteur ordinal, qui correspond à la sortie du micro-séquenceur 4, tandis que son bus données véhicule les microinstructions. La taille de la mémoire 4 dépend du type d'algorithme de correction mis en oeuvre : le nombre de lignes est fonction de la quantité de microinstructions à exécuter et la taille d'une ligne est en rapport avec la quantité d'emplacements de mémoire de données et de coefficients à adresser. Cette mémoire microcode peut être volatile s'il s `avère nécessaire d'améliorer la souplesse du dispositif de correction 1 en changeant le type d'algorithme. Ceci n'a pas d'influence sur le principe de fonctionnement dudit correcteur 1. Dans l'exemple représenté figure 9, chaque microinstruction est codée sous forme de champs fixes, chaque champ contenant un signal de commande. Les signaux de commande sont ceux énumérés dans la section précédente auxquels s'ajoute le signal de validation du micro-séquenceur 4 (SEQ_EN). Les signaux ASEL, A_ADDR et COEFF ADDR sont combinés en un champ unique. La taille de ce champ correspond à la taille du bus d'adresses le plus grand entre A ADDR et COEFF ADDR, plus un bit pour A_SEL. En effet, par le bus d'opérandes A-BUS (bus 9) ne transite qu'une donnée à la fois, qui provient soit de la mémoire des données 6', soit de la mémoire des coefficients 6. Dans ce qui suit, on décrira plus en détail un exemple non limitatif d'implémentation d'une fonction par le dispositif de correction ou correcteur 1. L'exemple décrit ci-après présente l'utilisation du correcteur 1 dans un système 17 de génération de gradients équipé d'un seul axe, donc d'une seule bobine de gradient 2 et d'un seul amplificateur de courant 19' (tel que représenté figure 5). Plus précisément, le correcteur 1 implémente trois cellules de filtrage 16 en parallèle dans l'exemple décrit (voir figure 10). Chaque cellule 16 correspond à un filtre numérique passe-haut du premier ordre. Cette configuration permet d'agir sur six paramètres (le gain et la constante de temps de chaque cellule 16) du correcteur 1 afin d'obtenir le meilleur champ de gradients possible. La fonction de transfert d'une cellule de filtrage 16 peut être déterminée comme suit : - 14 - 1) Fonction de transfert dans le plan de Laplace d'un filtre passe-haut du premier ordre : .T\+i Rs Cs) bilinéaire : Avec : le gain la constante de temps 2) Fonction de transfert dans le plan z, transformation 1- =, û 1 2f Avec : f la fréquence d'échantillonnage, qui dans le cadre du 15 correcteur 1 correspond à la fréquence du signal de synchronisation SYNC (voir figure 6). 3) Fonction de transfert dans le plan z: .H.-1)= 1--s ' (1) Avec : 20 2r (2) - 2 B=,k. +2f (3) 4) Transposition de la relation (1) dans le domaine temporel : 25 y(n) = A(x(n) ù x(n -1)) ù By(n -1) (4) 5) Fonction de transfert dans le domaine temporel du correcteur 1 représenté sur la figure 10 est : 30 y(n) = x(n) + y (n) + yz (n) + y3 (n) (5) - = k 10 - 15 - En utilisant la relation (4) avec (5), nous obtenons : y(n) = x(n) + A1(x(n) - x(n-1)) - Biyi(n-1) + A2(x(n) - x(n-1)) - B2y2(n-1) + A3(x(n) - x(n - 1)) - B3y3(n - 1) 5 Chaque couple de coefficients (Am;Bm) est calculé à l'aide des relations (2) et (3) en prenant en considération le gain xm et la constante de temps i m de chaque cellule 16 qui, dans l'exemple décrit, sont les paramètres d'entrée du système 17. 10 Les termes AI, A2 , A3 , B1, B2 , B3 peuvent être identifiés aux coefficients du correcteur 1. Le calcul de ces termes en fonction des gains et constantes ne présente pas d'aspect temps réel. Ce calcul peut par conséquent être effectué par un dispositif externe ne faisant pas partie du correcteur 1 (unité de calcul sur la figure 5) et ne nécessite pas de 15 description supplémentaire, compte tenu des connaissances de l'homme du métier. Dans le cas où les paramètres d'entrée du système sont les gains et constantes de temps des trois cellules 16 dans le domaine analogique, le dispositif externe devra lors du calcul des coefficients 20 compenser la déformation en fréquence apportée par la transformation bilinéaire. Dans le cadre de l'exemple pratique décrit, il y a ensuite lieu de réaliser l'implémentation de l'algorithme de correction. Pour implémenter cet algorithme, il y a lieu de considérer que 25 les composantes du correcteur 1 ont les caractéristiques suivantes : - Valeur initiale du compteur ordinal : 0. - Calculs sur des nombres à virgule flottante de précision étendue selon la norme IEEE 754 (64 bits dont 1 bit de signe, 11 bits d'exposant et 52 bits de mantisse). 30 - Pas de traitement vectorisé : le correcteur 1 est composé d'un seul sous-ensemble [unité de traitement 5/mémoires de données et coefficients 6, 6']. - Nombre d'étages de pipeline constituant les unités de calcul pour nombres à virgule flottante : 35 Multiplieur : cinq étages de canaux de communication (pipeline) -16- Additionneur : sept étages de canaux de communication (pipeline) - Ports d'accès en lecture des mémoires 4, 6, 6' équipés de registres tampons : latence d'une période d'horloge lors d'un accès. - Convertisseurs de format des nombres 15, 15' et unité d'inversion de signe 13' sans étage de pipeline (canaux de communication). - Codes de sélection du multiplexeur 14 alimentant D-BUS (bus 12) : 000 : registre contenant 0 001 : sortie du convertisseur 15 nombres entiers vers nombres à virgule flottante 010 : résultat en sortie du multiplieur 7' 011: résultat en sortie de l'additionneur 7 100 : donnée présente sur A-BUS (bus 9) - Codes de sélection du multiplexeur 10 alimentant A-BUS (bus 9) : 0 : premier port de lecture 11 de la mémoire de données 6' 1 : port de lecture 11 de la mémoire des coefficients 6 - Structure des microinstructions : Une microinstruction est codée sur 20 bits, les champs sont les suivants : SEQEN : 1 bit OUT EN : 1 bit NEG EN : 1 bit D EN: 1 bit D ADDR : 4 bits A SEL : 1 bit A ADDR/COEFF ADDR : 4 bits B ADDR : 4 bits D SEL : 3 bits - Taille de la mémoire microcode 4 : 61 x 20 bits - Taille de la mémoire des données 6 : 12 x 64 bits - Taille de la mémoire des coefficients 6 : 6 x 64 bits Les figures 11 et 12 montrent le contenu des mémoires de données 6' et des coefficients 6. La notation des adresses est hexadécimale. Afin de diminuer la quantité de mémoire de données nécessaire, une même ligne peut contenir des données différentes en fonction de l'évolution de -17- l'exécution de l'algorithme : l'adresse 8 par exemple contient d'abord le résultat de la multiplication de Es par Y ( ù 1) puis le résultat final U). Le tableau suivant comprend les opérations successives correspondant à l'algorithme de l'exemple décrit (chaque ligne du tableau correspond à une microinstruction donc à une ligne de la mémoire microcode). Ligne Description de l'opération 0 Stockage de x(n); lecture de B1 et yl(n-1) 1 Lecture de B2 et y2(n-1) 2 Lecture de x(n) et -x(n-1) 3 Pas d'opération 4 Remplacement de -x(n-1) par x(n); lecture de B3 et y3(n-1) 5 Pas d'opération 6 Pas d'opération 7 Stockage de -B 1 y 1(n-1) 8 Stockage de -B2y2(n-1) 9 Pas d'opération Stockage de x(n)-x(n-1) 11 Stockage de -B3y3(n-1) 12 Lecture de Al et x(n)-x(n-1) 13 Lecture de A2 et x(n)-x(n-1) 14 Lecture de A3 et x(n)-x(n-1) Pas d'opération 16 Pas d'opération 17 Pas d'opération 18 Pas d'opération 19 Stockage de A 1(x(n)-x(n-1)) Stockage de A2(x(n)-x(n-1)) 21 Stockage de A3(x(n)-x(n-1)) 22 Lecture de A1(x(n)-x(n-1)) et -Blyl(n-1) 23 Lecture de A2(x(n)-x(n-1)) et -B2y2(n-1) 24 Lecture de A3(x(n)-x(n-1)) et -B3y3(n-1) 2951835 -18- Pas d'opération 26 Pas d'opération 27 Pas d'opération 28 Pas d'opération 29 Pas d'opération Pas d'opération 31 Stockage de yl(n) 32 Stockage de y2(n) 33 Stockage de y3(n); lecture de x(n) et yl(n) 34 Pas d'opération Lecture de y2(n) et y3(n) 36 Pas d'opération 37 Pas d'opération 38 Pas d'opération 39 Pas d'opération Pas d'opération 41 Pas d'opération 42 Stockage de x(n)+yl(n) 43 Pas d'opération 44 Stockage de y2(n)+y3(n) Pas d'opération 46 Lecture de x(n)+yl(n) et y2(n)+y3(n) 47 Pas d'opération 48 Pas d'opération 49 Pas d'opération Pas d'opération 51 Pas d'opération 52 Pas d'opération 53 Pas d'opération 54 Pas d'opération Stockage de y(n) 56 Pas d'opération 57 Lecture de y(n) 58 Pas d'opération 59 Activation du registre de sortie 2951835 - 19 - Attente Bien entendu, l'invention n'est pas limitée au mode de réalisation décrit et représenté aux dessins annexés. Des modifications restent possibles, notamment du point de vue de la constitution des divers 5 éléments ou par substitution d'équivalents techniques, sans sortir pour autant du domaine de protection de l'invention. REVENDICATIONS1. Dispositif de correction en temps réel de signaux de consigne ou de commande en fonction de facteurs ou de coefficients de correction ou de compensation fournis, en particulier pour la correction des signaux de consigne destinés à la commande de bobines de gradients d'un appareil de spectrométrie ou d'imagerie par résonance magnétique nucléaire, ledit dispositif étant destiné à recevoir en entrée des signaux de consigne et à délivrer à sa sortie des signaux de consigne modifiés pour compenser les défauts, limitations, perturbations, interférences, effets négatifs ou analogues rencontrés ultérieurement lors du traitement, de la transmission, de la transformation et/ou de l'application desdits signaux de consigne, dispositif (1) caractérisé en ce qu'il consiste en au moins un circuit (1') basé sur une architecture microprogrammée et composé de plusieurs sous-ensembles (3, 4, 5, 6, 6') coopérants de composants numériques comprenant essentiellement un micro-séquenceur (3) formant compteur, une mémoire (4) de stockage de microinstructions et une unité de traitement (5) associée à au moins une des mémoire de travail (6, 6') et intégrant des modules (7, 7') de calcul arithmétique, ladite unité de traitement (5) modifiant les données des signaux de consigne en accord avec les microinstructions adressées par le micro-séquenceur (3) et en prenant en compte les facteurs ou coefficients de correction ou de compensation fournis. 2. Dispositif selon la revendication 1, caractérisé en ce que les microinstructions contenues dans la mémoire de stockage (4) forment un algorithme de correction pilotant le fonctionnement des différents sous-ensembles opérationnels (3, 5, 6, 6') constitutifs du dispositif de correction (1) et programmé en fonction de la correction à réaliser, le séquencement des données au niveau de registres d'entrée (8) et de sortie (8') dudit dispositif (1), ainsi que la remise à zéro du micro-séquenceur (3) étant piloté par un signal de synchronisation (SYNC) dont la période est un multiple du signal d'horloge (CLK) cadençant le fonctionnement des différents sous-ensembles constitutifs. 3. Dispositif selon l'une quelconque des revendications 1 et 2, caractérisé en ce que la ou les mémoire(s) de travail (6, 6') comprend(nent) au moins une première zone mémoire (6) destinée à stocker les coefficients de correction à appliquer et au moins une seconde zone mémoire (6')- 21 - destinée à stocker la donnée d'entrée à corriger, le ou les résultat(s) intermédiaire(s) des opérations arithmétiques réalisées par les modules de calculs arithmétiques et le résultat final correspondant à la donnée de sortie corrigée. 4. Dispositif selon la revendication 3, caractérisé en ce que l'unité de traitement (5) comprend également, d'une part, des bus (9, 9') de transmission d'opérandes, éventuellement associés à au moins un multiplexeur (10) alimentant les modules de calcul arithmétique (7, 7'), en fonction de signaux de commande élémentaires des microinstructions à exécuter, avec des données et des coefficients extraits de la ou des mémoire(s) de travail (6, 6') par l'intermédiaire de ports de lecture (11) et, d'autre part, au moins un bus (12) d'alimentation en données relié à un port d'écriture (13) de la seconde mémoire ou zone mémoire (6') et éventuellement à un module (13') d'inversion de signe, et associé en amont à un multiplexeur (14) relié aux sorties des modules de calcul arithmétique (7, 7'), au registre d'entrée (8) de la donnée à corriger, le cas échéant à au moins l'un des bus (9, 9') de transmission d'opérandes, et éventuellement à un registre de mise à zéro, l'état dudit multiplexeur (14) étant également déterminé par des signaux de commande élémentaires des microinstructions à exécuter. 5. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comprend aussi des modules de conversion (15, 15') mutuellement inverses, en entrée et en sortie, les données d'entrée et de sortie étant par exemple des nombres entiers codés en complément à deux. 6. Dispositif selon l'une quelconque des revendications 1 à 5, caractérisé en ce que qu'il présente une structure vectorielle et comporte plusieurs circuits (1') arrangés en parallèle, chaque circuit intégrant un groupement fonctionnel [microséquenceur (3) / mémoire de stockage (4) / unité de traitement (5) et mémoire(s) de travail (6, 6')]. 7. Dispositif selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il est programmé pour implémenter trois cellules de filtrage (16) arrangées en parallèle, chaque cellule correspondant préférentiellement à un filtre numérique passe-haut du premier ordre. 8. Système de génération de gradients de champ magnétique comprenant essentiellement des moyens de génération d'un signal de consigne numérique, par exemple sous la forme d'une séquence d'impulsions, des moyens de conversion et d'amplification du signal de- 22 - consigne et une ou plusieurs bobine(s) de génération de gradients alimentée(s) par le signal ou les signaux amplifiée(s) fourni(s) par les moyens de conversion et d'amplification associés, le cas échéant respectivement correspondants, ledit système comportant également un dispositif de correction du signal de consigne avant sa conversion et son amplification, et le cas échéant sa démultiplication, système caractérisé en ce que le dispositif de correction est un dispositif (1) selon l'une quelconque des revendications 1 à 7. 9. Système selon la revendication 8, caractérisé en ce qu'il 10 consiste en un système de génération de gradients selon plusieurs axes, un dispositif de correction (1) étant associé à chaque axe.