FR 2935819 A1 20100312 FR 0804882 A 20080905 DISPOSITIF DE TRAITEMENT NUMERIQUE POUR TRANSFORMEE DE FOURIER ET FILTRAGE A REPONSE IMPULSIONNELLE FINIE L'invention concerne le traitement numérique de signaux, et notamment, mais non exclusivement, le traitement de signaux de communications dans des postes émetteurs/récepteurs mobiles pour télécommunications sans fil. Les standards de signaux de communication sans fil évoluent dans le temps et plusieurs standards peuvent coexister à un moment donné. Chaque standard nécessite une circuiterie de traitement de signal adaptée, aussi bien en ce qui concerne les circuits de réception que les circuits d'émission. Cependant, il est souhaitable d'avoir des appareils de télécommunications mobiles qui peuvent fonctionner selon plusieurs standards différents. Chaque standard peut aussi avoir plusieurs modes de fonctionnement différents et il est souhaitable que les appareils mobiles puissent fonctionner selon les différents modes des différents standards. En particulier, selon le standard utilisé et selon le mode de fonctionnement utilisé dans un standard, les signaux numériques doivent subir des traitements numériques différents dans la chaîne de communication, tant en émission qu'en réception. Aujourd'hui, les principales techniques d'accès sont le WCDMA 20 (Wideband Code Division Multiple Access), l'OFDM (Orthogonal Frequency Division Multiplexing), et le MC-CDMA. La technique d'accès WCDMA sur laquelle se base le standard UMTS (Universal Mobile Telecommunications System), standard de la communication de troisième génération (3G), nécessite l'emploi d'un filtre 25 numérique à réponse impulsionnelle finie (filtre FIR) dans les chaînes d'émission et de réception. Les données à envoyer (et de même les données reçues) sont réparties sur deux voies de transmission nommées I et Q déphasées de 90° l'une par rapport à l'autre et chaque voie subit un filtrage FIR identique. La technique d'accès OFDM forme une base pour plusieurs standards de télécommunication sans fil tels que le standard IEEE 802.11 pour la communication sans fil WIFI, le standard DVB-H pour la télévision numérique terrestre mobile et le standard ECMA-368 pour le Bluetooth 3.0. Cette technique nécessite des calculs de transformées de Fourier rapides (FFT) pour diviser le signal sur plusieurs sous-porteuses. La technique d'accès MC-CDMA est la combinaison des deux techniques citées ci-dessus. Elle est à la base de nouveaux standards en cours de développement comme le standard IEEE 802.20 nommé également MBWA (Mobile Broadband Wireless Access). Cette technique nécessite l'emploi de FFT et de filtres FIR. Lorsque ces standards utilisent des transformées de Fourier rapides, les transformées peuvent être de tailles variables, c'est-à-dire qu'elles peuvent traiter des blocs de données numériques de taille variable. Typiquement, les tailles peuvent varier entre 64 et 8192 points et les fréquences peuvent être comprises entre 1.92 MHz et 409.6 MHz. Pour les standards qui utilisent un filtrage FIR, c'est la même chose : les tailles des filtres sont variables et les fréquences également, selon le standard et les caractéristiques du canal de transmission, éventuellement évaluées en ligne ou plus couramment estimées avant le fonctionnement. Pour intégrer plusieurs standards dans un même appareil de télécommunication, il faut alors prévoir plusieurs circuits numériques d'exécution de transformées de Fourier (correspondant à des tailles différentes de blocs d'information à traiter) et plusieurs circuits numériques d'exécution de filtrage FIR correspondant aussi à des tailles différentes. Ces solutions présentent des limitations tant du point de vue de l'encombrement que de la consommation énergétique. Une autre solution consiste à utiliser un microprocesseur programmable pour effectuer toutes les fonctions de filtrage, qu'elles soient FFT ou FIR, à l'aide de programmes stockés en mémoire. Mais les microprocesseurs assez rapides pour respecter les contraintes temps-réel des standards de télécommunication sans fil sont également volumineux et très consommateurs d'énergie. Une solution alternative consiste à utiliser un module capable d'exécuter des FFT de tailles variables en plus d'un deuxième module capable de traiter des FIR de tailles variables aussi. Bien que cette solution soit plus efficace en consommation d'énergie et en surface, cette solution reste sous-optimale puisqu'à tout moment l'un des deux modules est inutilisé. L'invention propose une solution permettant la réalisation, d'une manière économique en encombrement et en consommation d'énergie, de différentes fonctions de filtrage et particulièrement des fonctions de transformée de Fourier et de filtrage FIR. L'invention permet alors, notamment, de faciliter le traitement de signaux de télécommunications répondant à des standards aussi différents que les standards WCDMA et OFDM ou encore MC-CDMA dans un même appareil de télécommunications. L'invention utilise un module de calcul itératif exécutant par une suite d'opérations une transformée de Fourier rapide (FFT) chaque fois qu'une transformée de Fourier doit être effectuée, et d'utiliser ce même module de calcul pour exécuter une fonction de filtrage FIR en domaine fréquentiel. La fonction de filtrage FIR est réalisée suivant l'invention par une transformée de Fourier suivie d'une multiplication par des coefficients et suivie par une transformée de Fourier inverse. Le module de calcul itératif comprend essentiellement un circuit élémentaire de calcul nommé circuit papillon (butterfly circuit en anglais) et constitué d'au moins un additionneur complexe, un soustracteur complexe, et un multiplieur complexe, ainsi qu'une entrée de coefficient reliée à une mémoire contenant des coefficients complexes. Ce circuit élémentaire est utilisé de manière itérative (les signaux de sortie du circuit élémentaire sont réinjectés à l'entrée pour un nouveau calcul), en un nombre d'étapes qui dépend de la taille des groupes de nombres complexes à traiter lors du calcul de la transformée de Fourier rapide. Le principe de calcul élémentaire itératif pour l'exécution d'une transformée de Fourier rapide est bien connu. Un circuit papillon peut typiquement recevoir en entrée deux nombres complexes et un coefficient complexe ; il fournit à sa sortie deux autres nombres complexes. On reviendra plus loin sur le détail des circuits papillon et de la fonction de calcul qu'ils exécutent. Plus précisément, l'objet de la présente invention est donc un dispositif de traitement de signaux numériques comportant un module de calcul itératif apte à recevoir une première succession de nombres complexes et à effectuer par une série d'opérations itératives une transformée de Fourier rapide de cette première succession de nombres complexes, pour fournir sur une sortie du module une deuxième succession de nombres qui représente la transformée de Fourier de la première succession, le module de calcul itératif comprenant à cet effet au moins un circuit élémentaire de calcul itératif et des mémoires associées au circuit élémentaire, caractérisé en ce que le dispositif de traitement comprend des moyens pour : - fournir sur sa sortie, dans un premier mode de fonctionnement 15 correspondant à l'exécution d'une transformée de Fourier rapide (directe ou inverse), la deuxième succession de nombres, - effectuer, dans un deuxième mode de fonctionnement correspondant à l'exécution d'une fonction de filtrage à réponse impulsionnelle finie, une multiplication de chaque nombre de la deuxième 20 succession de nombres complexes par un coefficient complexe respectif, de manière à produire une troisième succession de nombres complexes, et appliquer à l'entrée du module de calcul itératif (MCI) la troisième succession pour effectuer une transformée de Fourier inverse de la troisième succession de manière à produire sur la sortie du module de calcul itératif une quatrième 25 succession de nombres complexes représentant cette transformée inverse, - fournir sur sa sortie, dans le deuxième mode de fonctionnement, la quatrième succession de nombres représentant le résultat d'une fonction de filtrage à réponse impulsionnelle finie exécutée sur les nombres de la première succession. 30 Ainsi, le même module de calcul permet d'exécuter, au choix, des transformées de Fourier rapides ou des fonctions de filtrage FIR. Dans ce dernier cas, les coefficients utilisés dans la multiplication des nombres de la deuxième succession sont choisis, comme on le verra plus loin, en fonction des coefficients de la fonction de filtrage FIR à exécuter sur les nombres de la première succession. Dans une réalisation avantageuse, le multiplieur du circuit élémentaire est utilisé pour effectuer la multiplication des nombres de la deuxième succession par des coefficients complexes, en appliquant à l'entrée du multiplieur les nombres de la deuxième succession et en multipliant chacun de ces nombres par un coefficient. Le détail de cette solution ainsi que les autres réalisations envisagées pour effectuer la multiplication par les coefficients du filtre FIR seront traités plus loin. Le dispositif de traitement numérique peut être incorporé à un appareil de transmission ou réception de signaux de télécommunications comportant deux voies de transmission I et Q déphasées de 90° devant subir un filtrage à réponse impulsionnelle finie identique sur les deux voies ; dans ce cas, les signaux présents sur la voie I sont considérés comme étant les parties réelles des nombres complexes de la première succession, et les signaux sur la voie Q sont considérés comme étant les parties imaginaires de ces nombres. En sortie du dispositif de traitement, dans le mode de fonctionnement FIR, les parties réelles des nombres de la quatrième succession constituent les signaux filtrés de la voie I et les parties imaginaires de ces nombres constituent les signaux filtrés de la voie Q. Ce dispositif peut aussi effectuer le filtrage simultané de deux séries de données indépendantes en les groupant dans un seul signal complexe tel que l'une forme la partie réelle et l'autre la partie imaginaire. Le filtrage d'un seul signal réel est aussi possible ; dans ce cas une des deux parties du signal complexe contiendra le signal à filtrer, l'autre sera systématiquement mise à zéro. Le dispositif de traitement comporte de préférence une mémoire de coefficients multiplicateurs permettant l'exécution d'une transformée de Fourier et une transformée de Fourier inverse par le circuit élémentaire de calcul itératif, sur des blocs de taille maximale de Nmax échantillons. Les circuits de séquencement du circuit élémentaire sont aptes à contrôler une séquence itérative de fonctionnement du circuit élémentaire en utilisant un sous-ensemble seulement des coefficients de la mémoire de coefficients, ceci en fonction du nombre N de nombres complexes de la première succession. En outre, ce dispositif est capable de traiter des transformées de Fourier rapide et des filtres FIR de tailles variables selon les besoins du domaine applicatif concerné. Ce traitement peut être effectué en deux modes si l'on considère une mise en oeuvre avec plus d'un papillon. En effet, et selon le besoin de temps de calcul, le module peut utiliser, dans un mode séquentiel, un seul papillon pour effectuer le traitement demandé. Dans un mode parallèle, et pour accélérer le traitement, deux ou plusieurs papillons peuvent être utilisés simultanément pour traiter les données. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels : - la figure 1 représente un circuit élémentaire de calcul itératif (circuit papillon) ; - la figure 2 représente un exemple d'étapes de calcul itératif de FFT ; - la figure 3 représente un circuit élémentaire plus détaillé ; - la figure 4 représente un module de calcul itératif de FFT ; - la figure 5 représente un dispositif de traitement selon l'invention, 25 apte à effectuer une transformée de Fourier ou une fonction de filtrage à réponse impulsionnelle finie ; - la figure 6 représente un exemple de circuit papillon configurable en simple multiplieur. Principe de la transformée de Fourier rapide Pour mieux faire comprendre l'invention, on rappelle le principe d'une transformée de Fourier rapide FFT effectuée en quatre calculs papillon sur un bloc de quatre nombres complexes à partir d'un circuit papillon élémentaire, donc une FFT de taille 4. Divers types de circuit papillon existent et on prendra comme exemple un circuit papillon d'ordre 2 à décimation en fréquence (2-DIF). Ce circuit papillon, représenté schématiquement à la figure 1 et désigné par la référence PAP, comprend deux entrées de données pour deux nombres complexes m et p, deux sorties de données pour fournir deux nombres complexes M et P qui résultent d'une étape de calcul élémentaire effectuée sur les nombres m et p, et une entrée de coefficient pour introduire une valeur de coefficient complexe k dans le calcul. Le circuit papillon comprend un additionneur de nombres complexes ADD, un soustracteur de nombres complexes SST, et un multiplieur MULT pour multiplier un nombre complexe par le coefficient complexe k. L'additionneur, le soustracteur et le multiplieur sont agencés entre les entrées de données et les sorties de sorte que les sorties fournissent les 20 résultats de calcul suivants : M=m+p P = k.(m - p) Pour effectuer la transformée de Fourier d'un bloc de quatre nombres complexes a, b, c, d, quatre étapes de calcul itératif à l'aide du 25 même circuit papillon sont effectuées. Elles sont schématisées à la figure 2. Dans la première étape on applique les nombres a et c à l'entrée et on recueille en sortie des nombres M1 et P1. Dans la deuxième étape, on applique les nombres b et d et on recueille des nombres M2 et P2. Dans la troisième étape, on applique à l'entrée les nombres M1 et M2 précédemment 30 calculés et on recueille en sortie des nombres a' et b'. Dans la quatrième étape, on applique les nombres P1 et P2 à l'entrée et on recueille des nombres c' et d' en sortie. Les coefficients k appliqués à l'entrée de coefficient varient au cours de ces étapes. Les nombres a', b', c', d' sont la transformée de Fourier du groupe de nombres a, b, c, d. Deux circuits papillon élémentaires peuvent fonctionner en 5 parallèle pour traiter simultanément les étapes 1 et 2 d'un côté et les étapes 3 et 4 de l'autre. Pour traiter des blocs de taille plus grande, le nombre d'étapes est plus élevé. En effet, une FFT est traitée par étages. Typiquement, une FFT de taille T = 2" nécessite n étages. Chaque étage est exécuté par T/2 calculs 10 papillons effectués par un circuit papillon ou plusieurs circuits papillon travaillant en parallèle. Le nombre de coefficients k utilisés augmente en proportion du nombre n. D'autres types de circuits papillon peuvent être utilisés : papillons d'ordre 2 à décimation dans le temps (2-DIT) qui utilisent encore un 15 additionneur, un soustracteur et un multiplieur mais qui exécutent le calcul suivant : M = m + k.p P = m ù k.p Des circuits papillon d'ordre 4 existent, traitant les données quatre 20 par quatre (papillons 4-DIF ou 4-DIT). Ces explications ne sont données qu'à titre de rappel pour faciliter la compréhension. La réalisation de transformées de Fourier rapide est bien connue dans la technique. La figure 1 représente sous une forme condensée avec des 25 opérateurs complexes un circuit papillon. La figure 3 représente ce circuit d'une manière plus détaillée avec des opérateurs réels. II faut alors trois additionneurs de nombres réels, trois soustracteurs de nombres réels et quatre multiplieurs de nombres réels pour traiter les parties réelles et parties imaginaires des nombres en entrée et les parties réelles et imaginaires des coefficients de multiplication. Si on appelle mr et mi les parties réelle et imaginaire du nombre m = mr + j.mi, et de même pr et pi pour le nombre p, kr et ki pour le coefficient k, Mr et Mi pour le nombre M et Pr et Pi pour le nombre P, le circuit papillon doit en effet établir les calculs suivants résultant des égalités déjà mentionnées M = m+p et P=k.(mùp). M=(mr+Pr)+i.(mi+Pi) P = [kr(mr -Pr) ù ki(mi ù pi)] + j.[ki(mr -Pr) + kr(mi ùPi)] 10 Soit : Mr=(mr+Pr); Mi=(mi+Pi) Pr = [kr(mr ùPr) ù ki(mi ù pi)] ; Pi = [ki(mr ùPr) + kr(mi -Pi)] 15 La figure 4 montre un exemple de réalisation du module de calcul itératif MCI qui effectue le calcul d'une transformée de Fourier à l'aide de deux circuits papillon élémentaires et de mémoires associées. Les circuits papillons sont désignés par PAPI et PAP2. Ils sont associés à des mémoires double port M1 à M4 permettant de stocker des 20 données qui sortent des circuits papillons et de les réinjecter sur les entrées, pour effectuer itérativement les étapes d'une transformée de Fourier. Des multiplexeurs 10, 12, 14, 16 sont placés en amont des circuits papillons ; ils permettent de sélectionner les mémoires d'entrée et de sortie pour chaque papillon à chaque étape de calcul. Typiquement, on voit qu'un multiplexeur 25 permet d'appliquer à une entrée de chaque circuit papillon une donnée venant de la mémoire M1 ou de la mémoire M3, et à l'autre entrée une donnée venant de la mémoire M2 ou de la mémoire M4. Les données issues du circuit papillon PAPI peuvent être stockées dans la mémoire M1 ou la mémoire M3 selon le cas. Celles qui sont issues du circuit papillon PAP2 peuvent être stockées dans la mémoire M2 ou la mémoire M4. Pendant qu'une mémoire applique des données à l'entrée d'un circuit papillon, le circuit papillon écrit dans l'autre mémoire et réciproquement, en alternance. D'autres multiplexeurs 18, 20, 22, 24 permettent d'appliquer des nombres à l'entrée des mémoires M1 et M2 au début du calcul itératif. Ensuite, les données à l'entrée des mémoires M1 et M2 viennent des sorties des circuits papillons PAPI et PAP2 respectivement à chaque nouvelle étape du calcul itératif. Un séquenceur non représenté commande les différentes étapes du calcul et gère l'adressage des quatre mémoires. Ce séquenceur commande les multiplexeurs, et il commande aussi l'adressage d'une mémoire COEFK qui contient les coefficients de multiplication k nécessaires à l'exécution des opérations de calcul élémentaires dans les circuits PAPI et PAP2. A chaque nouvelle étape, des coefficients k sont extraits de cette mémoire pour être appliqués aux circuits papillons. Le choix des coefficients à utiliser au cours du calcul itératif dépend de la taille de la transformée de Fourier à effectuer. Avec le circuit de la figure 4, les nombres complexes successifs sont appliqués par groupes de quatre à l'entrée et sont itérativement traités jusqu'à ce que la totalité de la transformée de Fourier ait été exécutée, le nombre d'étages dépendant de la taille des blocs de nombres à traiter. Un démultiplexeur DMX à l'entrée du module MCI permet d'aiguiller vers les entrées du module les nombres complexes successifs qui se présentent sur une borne d'entrée E du dispositif. Filtraqe FIR On rappelle par ailleurs ce qu'est une opération de filtrage à réponse impulsionnelle finie ou filtrage FIR, de l'anglais � Finite Impulse Response �. Une opération de filtrage d'un seul échantillon est une convolution de N échantillons successifs de signal par N coefficients de pondération. Elle consiste à prendre une série de N données numériques qui sont des échantillons temporels successifs d'un niveau de signal, puis à multiplier chaque échantillon de la série par un coefficient réel respectif, et enfin à additionner l'ensemble des échantillons ainsi pondérés pour fournir un échantillon de sortie qui tient compte non seulement d'une valeur d'échantillon courant de signal mais aussi des N-1 échantillons de signal qui ont précédé l'échantillon courant. Au fur et à mesure que des échantillons se présentent à l'entrée du filtre FIR le filtre produit des échantillons filtrés. La fonction de filtrage est définie par les coefficients choisis. Si on ne tient pas compte des effets de bord au démarrage, le filtre produit N échantillons filtrés pendant la durée pendant laquelle il reçoit N échantillons à traiter. C'est le principe du filtrage FIR dans le domaine temporel. La même fonction de filtrage se met en oeuvre également en passant dans le domaine fréquentiel : une fonction de filtrage FIR est équivalente à une transformée de Fourier FFT pour passer dans le domaine fréquentiel, suivie d'une multiplication des nombres qui en résultent par des coefficients respectifs (qui dépendent de la fonction de filtrage choisie), et suivie d'une transformée de Fourier inverse pour repasser dans le domaine temporel. En d'autres mots, si un groupe de N échantillons successifs à filtrer est représenté par un vecteur xä dans le domaine temporel, et si la fonction de filtrage FIR dans le domaine temporel est une convolution par un vecteur de coefficients réels h,,, le résultat de la fonction est un vecteur yä tel que yä = xä*h,,, l'opérateur * représentant l'opération de convolution, c'est-à-dire la sommation des échantillons successifs du vecteur x,,, chaque échantillon étant pondéré par un coefficient du vecteur h,,. On peut écrire alors que si le vecteur Xä est la transformée de Fourier du vecteur x,,, soit Xä=FFT(xä ), et si le vecteur Yä est la transformée de Fourier du vecteur y,,, soit Yä=FFT(yä ), alors il existe un vecteur Hä de coefficients complexes, qui se déduit des coefficients réels h,,, tel que Yä = X,,.H,,. Le vecteur Yä se déduit alors du vecteur Xä par une simple opération de multiplication. On peut donc écrire encore que yä est la transformée de Fourier inverse de Y,,, soit yä = FFT-'(Yä), ou encore que yä = FFT-1(XV.Hä ), ou encore que : yä = FFT"1 [Hv. FFT(xä )] La fonction de filtrage FIR peut donc se ramener à la succession d'une transformée de Fourier, d'une multiplication, et d'une transformée de Fourier inverse. On notera que pour les fonctions de filtrage de taille N (convolution de N échantillons) il faut en principe faire des transformées de Fourier de taille 2N en travaillant sur des groupes de 2N échantillons décalés en recouvrement mutuel de N échantillons à chaque fois (pour éviter les effets de bord entre groupes d'échantillons). Dispositif de traitement numérique Selon l'invention, on traite les signaux numériques d'entrée à l'aide d'un dispositif de traitement numérique capable d'effectuer une transformée de Fourier (et donc aussi une transformée de Fourier inverse puisque c'est la même opération avec d'autres coefficients), et pourvu de moyens pour effectuer en outre une opération de multiplication sur les résultats d'un calcul de transformée de Fourier. Le dispositif de traitement utilise un module de calcul itératif (MCI), tel que par exemple celui de la figure 4, qui effectue des transformées de Fourier dans un premier mode de fonctionnement et des filtrages FIR dans un deuxième mode de fonctionnement. Ainsi, dans le cadre d'un traitement numérique de signaux de communication correspondant à une norme qui exige des calculs de transformées de Fourier (en OFDM par exemple ou en MC-DMA) le module pourra calculer ces transformées. Mais si les signaux de communication correspondent à une norme qui exige un filtrage FIR (en WCDMA ou MCCDMA), au lieu de traiter ces signaux dans le temps, on utilisera le même module électronique MCI pour effectuer d'abord une transformée de Fourier, puis une multiplication, puis une transformée de Fourier inverse. De plus, comme les circuits papillon comprennent toujours des multiplieurs, il n'est même pas indispensable de rajouter des circuits de 12 multiplication spécifiques pour effectuer les opérations de multiplication entre le premier calcul de transformée de Fourier et le calcul de transformée inverse dans le cas d'un filtrage FIR. On pourra de manière préférentielle utiliser les multiplieurs des circuits papillons. La figure 5 représente le schéma de principe général du dispositif de traitement selon l'invention, dans le cas où on utilise les multiplieurs des circuits papillons pour le filtrage FIR. Le coeur du dispositif est un module de calcul itératif MCI utilisant un ou plusieurs circuits papillon, par exemple deux papillons PAPI et PAP2 comme à la figure 4. Ce module comprend donc les circuits papillons et les mémoires associées, par exemple quatre mémoires double port M1 à M4. II fonctionne sous la commande d'un séquenceur SEQ comme expliqué précédemment, et il est associé à une mémoire de coefficients COEFK qui contient les coefficients complexes k nécessaires à l'exécution de transformées de Fourier. Mais le séquenceur est ici apte, dans un mode FIR, à gérer la succession d'opérations nécessaires à l'exécution d'une succession des trois opérations transformée de Fourier, multiplication, transformée inverse avant de fournir sur la sortie du module de calcul un résultat final qui représente un filtrage à réponse impulsionnelle finie. La multiplication nécessaire pour le filtrage FIR utilise des coefficients h différents des coefficients k utilisés pour la transformée de Fourier. Sur la figure 5 on a représenté une mémoire COEFH contenant les coefficients h, distincte de la mémoire COEFK contenant les coefficients k, mais on comprendra que ces deux mémoires pourraient dans certains cas être confondues en une seule. C'est le séquenceur SEQ qui gère l'adressage de ces mémoires pour sélectionner une valeur k ou une valeur h pour chacun des multiplieurs du module de calcul itératif à chaque étage du calcul de la FFT. Pour exécuter la succession des opérations nécessaires au filtrage FIR on prévoit de préférence de découper chacune des mémoires RAM du module MCI en cinq mémoires. Ceci permet de masquer le temps de chargement des données en entrée et de lecture des données en sortie. Ces cinq mémoires se divisent en trois mémoires d'entrée qu'on appellera ci- après memA, memB, memC, une mémoire de sortie qu'on appellera memO, et une mémoire de travail qu'on appellera memT. Afin d'exécuter une opération de filtrage des données stockées dans les mémoires memA et memB par exemple, les données sont lues de ces mémoires au premier étage de calcul de FFT, puis traitées et stockées dans la mémoire memT. Tout le reste du traitement se fait en transitant uniquement dans la mémoire de travail memT. Au dernier étage de calcul de FFT, les données sont stockées dans la mémoire memO. Notons que pendant le calcul de l'opération FIR sur les données stockées en memA et memB, les données suivantes sont stockées dans memC et les résultats antérieurs sont lus de la mémoire memO. Ces mémoires permettent donc, entre autres, de réinjecter à l'entrée du module de calcul itératif les résultats de calcul intermédiaires fournis par ce module. L'adressage des mémoires est commandé par le séquenceur SEQ. Le séquenceur a été représenté avec une entrée de commande MODE permettant de selectionner l'un des deux modes de fonctionnement du séquenceur : le premier mode ou mode FFT (calcul simple de transformée de Fourier des signaux reçus à l'entrée) ou le deuxième mode ou mode FIR (filtrage FIR des signaux reçus à l'entrée). La représentation d'une entrée MODE sur la figure 5 est symbolique, l'entrée n'est pas nécessairement une entrée physique. Cette information, ainsi que d'autres telles que la taille de la FFT ou du FIR à exécuter, peut être envoyée par d'autres moyens au séquenceur. Par exemple par programmation pendant une phase de démarrage de l'opérateur ("boot" en anglais). Dans le premier mode, c'est-à-dire quand une FFT doit être exécutée, le séquenceur met en oeuvre des séquences d'adressages programmées qui déterminent l'exécution d'une FFT. Dans le deuxième mode, c'est-à-dire si une exécution de FIR est demandée, le séquenceur met en oeuvre des séquences plus complexes impliquant l'exécution d'une FFT, la réinjection des valeurs numériques résultant de la FFT dans les circuits papillons pour effectuer une multiplication de ces valeurs par les coefficients du vecteur Hä , et la réinjection dans les circuits papillons des valeurs ainsi multipliées pour exécuter une transformée de Fourier inverse. Premier Mode (Exécution de FFT) Pour exécuter une FFT, une première succession de 2" nombres complexes est appliquée à une entrée E du dispositif de traitement (entrée numérique pour un nombre complexe, donc subdivisée en deux entrées réelles : une entrée pour la valeur de la partie réelle et une entrée pour la valeur de la partie imaginaire). Nous nous plaçons ici dans un cas particulier où le module MCI est composé de papillons d'ordre 2 pour expliquer un principe général. La première succession de nombres complexes est traitée par ensembles de quatre nombres pour chaque étage de calcul et les nombres sont dirigés vers les entrées du module de calcul itératif ; les coefficients k du circuit papillon sont issus de la mémoire COEFK ; il y a n étapes commandées par le séquenceur, au bout desquelles la sortie S du module fournit une deuxième succession de 2" nombres qui représente la transformée de Fourier de la première succession. La sortie S a été représentée sous forme de quatre conducteurs de sortie puisque dans cet exemple le module de calcul itératif traite les nombres quatre par quatre. On n'a pas distingué les sorties réelles et imaginaires pour ne pas alourdir le schéma. Cette description reste valable quel que soit le nombre et type de papillons qui constituent le module MCI. Deuxième Mode (Exécution de FIR) Pour exécuter un filtrage FIR de taille 2"-1, une première succession de 2" nombres complexes est appliquée à l'entrée E du module ; elle est traitée tout d'abord exactement comme pour une exécution de FFT, mais la deuxième succession obtenue à la fin des n étages est stockée dans la mémoire de travail pour être réappliquée ultérieurement à l'entrée E. La deuxième succession subit alors, sous la commande du séquenceur, un traitement de multiplication de chacun des 2" nombres par un coefficient H respectif tiré par le séquenceur de la mémoire COEFH. La multiplication est faite de préférence par les multiplieurs du module de calcul itératif. Pour que la multiplication soit faite par les multiplieurs du module de calcul itératif, une solution consiste à appliquer les données à multiplier deux par deux et non quatre par quatre (dans le cas où le module MCI comporte deux papillons d'ordre 2 ou un papillon d'ordre 4) : à chaque circuit papillon (qui ne comporte qu'un seul multiplieur) est appliqué un seul nombre à multiplier. Si c'est un circuit papillon du type de la figure 1, on applique par exemple le nombre sur l'entrée m en mettant systématiquement l'entrée p à zéro, et on recueille le nombre multiplié par un coefficient H sur la sortie P. C'est le séquenceur SEQ qui gère cette opération en utilisant la mémoire COEFH pour le coefficient multiplicateur. Après l'exécution de cette multiplication des 2" nombres par les coefficients H on obtient une troisième succession de 2" nombres complexes. Le séquenceur exécute alors un programme de calcul de transformée de Fourier inverse sur cette troisième succession, en appliquant les nombres de la troisième succession sur les entrées des circuits papillons, et en effectuant les opérations itératives nécessaires. Les coefficients de multiplication k de la transformée de Fourier inverse sont pris dans la mémoire COEFK ou calculés par des opérations simples (soustractions) à partir des coefficients de la transformée directe. A la fin de cette partie de la séquence on obtient en sortie S du module de calcul MCI une quatrième succession de 2" nombres complexes qui représentent la transformée de Fourier inverse de la troisième succession et qui représentent donc aussi la sortie du filtrage FIR de la première succession. Dans un système de télécommunications sans fil on a en général une démodulation selon deux voies en quadrature de phase par rapport à la fréquence porteuse ; ces voies sont généralement appelées voie I et voie Q. Lorsque le traitement de signal exige une transformée de Fourier des signaux, la transformée de Fourier porte sur des blocs de nombres complexes et ces nombres complexes ont une valeur de partie réelle définie par les signaux présents sur la voie I et une valeur de partie imaginaire définie par les signaux présents sur la voie Q. Les signaux de la voie I et de la voie Q sont donc appliqués au dispositif de traitement lorsqu'une simple transformée de Fourier est exécutée, et la sortie du module fournit alors d'autres signaux complexes dont la partie réelle constitue la voie 1 et la partie imaginaire constitue la voie Q pour suivre d'autres étapes de traitement de signal en aval du module. Mais lorsque le traitement de signal envisagé en fonction de la norme d'émission ou réception exige un filtrage FIR, le filtrage FIR dans le domaine temporel ne porte que sur des signaux réels et la voie I et la voie Q doivent subir un filtrage FIR identique séparément. Dans ce cas, on regroupe les voies I et Q en un seul signal complexe (I formant la partie réelle et Q la partie imaginaire) et c'est l'ensemble des valeurs numériques complexes ainsi établi qui va subir une transformée de Fourier puis une multiplication puis une transformée inverse. A la sortie, le signal complexe aura donc subi un filtrage FIR et sera divisé à nouveau en une voie I comprenant la partie réelle des nombres de la quatrième succession et une voie Q comprenant la partie imaginaire de ces nombres. La fonction de filtrage FIR de deux voies en quadrature de phase est ici exécutée avec un seul circuit qui traite à la fois les deux voies en mélangeant les informations relatives aux deux voies (voir par exemple les équations relatives au circuit papillon de la figure 3) et en séparant ensuite les résultats en deux voies. Dans ce qui précède on a considéré que la multiplication simple par un coefficient se fait en appliquant à un circuit papillon un nombre sur une entrée et une valeur nulle sur une autre entrée. On peut alternativement envisager que le circuit papillon soit configurable par une entrée de commande (contrôlée par le séquenceur) pour avoir une configuration plus adaptée à une simple multiplication pendant l'opération de multiplication lors d'un filtrage FIR. Par exemple, si on se réfère à nouveau à un circuit papillon du type de la figure 1, un multiplexeur pourrait être interposé en amont du multiplieur du circuit papillon pour recevoir soit la sortie du soustracteur, lorsque le séquenceur demande l'exécution d'une transformée de Fourier, soit l'une des entrées m ou p (sur laquelle on appliquera la donnée à multiplier) lorsque le séquenceur demande l'exécution d'une simple multiplication. Le séquenceur commande ce multiplexeur, donc commande la configuration du circuit papillon. La donnée à multiplier n'a alors pas besoin de transiter inutilement par le soustracteur avant d'être multipliée et on n'est pas obligé de placer une valeur nulle sur l'autre entrée du circuit papillon. La figure 6 représente un exemple d'un tel circuit papillon configurable en simple multiplieur par une entrée CONFIG commandée par le séquenceur. On peut encore envisager, bien que ce soit moins avantageux, 5 que le multiplieur destiné à l'établissement des fonctions FIR ne soit pas le multiplieur d'un circuit papillon mais un multiplieur supplémentaire. Le dispositif de traitement numérique selon l'invention permet de faire des transformées de Fourier de tailles variables et donc aussi des fonctions FIR de taille variable. C'est le séquenceur qui gère la taille des 10 blocs transformés en définissant le nombre d'étapes itératives des circuits papillons et en sélectionnant dans la mémoire COEFK les coefficients qui correspondent à la taille envisagée. Les coefficients pour les petites tailles sont des sous-ensembles des coefficients des plus grandes tailles. La mémoire COEFK contient donc les coefficients nécessaires pour le 15 traitement de blocs d'une taille maximale Nmax. La mémoire COEFK peut être une mémoire non volatile (ROM) car les coefficients sont fixes, imposés par les équations des transformées de Fourier. La mémoire COEFH est de préférence une mémoire volatile car les coefficients des fonctions de filtrage FIR dépendent de l'application et de la taille des blocs, mais on pourrait bien 20 sûr prévoir une mémoire non-volatile contenant les coefficients des applications envisagées. Elle serait alors regroupée avec la mémoire COEFK en une seule mémoire éventuellement non-volatile. Notons en plus que pour certains cas (comme celui du FIR pour UMTS), la plupart des coefficients du filtre sont nuls. Pour cela, et pour économiser en surface et en temps de 25 traitement, une option peut être utilisée pour masquer à zéro la sortie des mémoires de donnée dans le cas des multiplications par des coefficients nuls. La mémoire COEFK peut ne comporter qu'un quart des coefficients nécessaires au calcul d'une transformée de Fourier, sachant que les autres coefficients ainsi que les coefficients de la transformée inverse s'en 30 déduisent par symétrie. En effet, les coefficients (complexes) d'une FFT de taille donnée sont situés tous sur la moitié du cercle unité ayant une partie imaginaire négative. Les coefficients à partie réelle négative peuvent être calculés à partir de ceux à partie réelle positive par simple calcul d'opposé. Les coefficients de la FFT inverse sont sur la deuxième moitié du cercle (à partie imaginaire positive) et peuvent donc être calculés par un calcul d'opposé aussi. Deux simples soustracteurs en sortie de la mémoire COEFK peuvent servir à calculer les coefficients manquants : ils calculent les opposés des parties réelles et imaginaires des coefficients présents pour établir les coefficients manquants. On a décrit ci-dessus un exemple dans lequel deux circuits papillons sont utilisés dans le module de calcul itératif. On peut prévoir un nombre quelconque de circuits papillons selon les contraintes temporelles du domaine applicatif en question. Dans le schéma de la figure 4, on a supposé que les mémoires mi à M4 sont des mémoires à double port, c'est-à-dire qu'on peut entrer simultanément dans la mémoire deux adresses pour lire ou écrire deux données en même temps. On a alors besoin de quatre mémoires. Mais on pourrait utiliser des mémoires ordinaires à simple port, ne permettant la lecture ou l'écriture que d'une seule donnée lorsqu'on lui applique une adresse. Il faudrait alors tout simplement huit mémoires au lieu de quatre. On pourrait utiliser aussi deux mémoires à quatre ports. Des mémoires "read-before-write" (dénomination issue de l'anglais signifiant lecture avant écriture) existent aussi et peuvent être utilisées. Ces mémoires ont la particularité d'effectuer une lecture et une écriture en un seul cycle d'horloge. Chaque papillon nécessite alors deux mémoires readbefore-write (rbw) simple port qui constituent à la fois les mémoires en entrée et en sortie des papillons. En effet, dans le cas d'utilisation de mémoires rbw, chaque papillon lit de la mémoire une valeur et stocke une autre dans la même adresse à chaque cycle d'horloge. Ceci introduit des contraintes sur les emplacements des données dans les mémoires puisque, dans ce cas, les lectures et écritures se font dans la même mémoire et à la même adresse. Le générateur d'adresse qui doit indiquer l'adresse de lecture/écriture à chaque cycle d'horloge prend en entrée dans ce cas le numéro de l'étage de calcul courant (nombre 'etage'), le numéro de l'opération papillon dans cet étage (nombre 'num'), la taille de la FFT effectuée (nombre 'taille') et la profondeur du pipeline du papillon. L'adresse courante est alors obtenue en appelant d'une manière récursive la fonction suivante un nombre 'étage' de fois : F(num) = num/2 + LSB(num)*taille/4 + offset LSB(num) étant le bit de poids faible du nombre num et offset 10 étant une constante. Dans une réalisation avantageuse, on peut prévoir un fonctionnement de calcul de la transformée de Fourier rapide ou de filtrage FIR selon plusieurs modes : un mode séquentiel et un mode parallèle. Prenons le cas où le module comporte huit papillons d'ordre 2. Chaque 15 papillon doit posséder les ressources de mémorisation nécessaires comme discuté précédemment. Considérons le cas où des mémoires simples port sont utilisées. Chaque papillon doit donc avoir accès à quatre mémoires : deux en entrée et deux en sortie. Soit donc au total 32 mémoires : 16 en entrée et 16 en sortie. Ces mémoires fonctionneront en ping-pong ; d'un 20 étage à l'autre, les mémoires d'entrée deviendront des mémoires de sortie et vice-versa. Pour un fonctionnement en mode séquentiel, quatre mémoires (des mémoires distinctes ou qui font partie des 32 mémoires mentionnées précédemment) seront utilisées avec un seul papillon. 25 Les mémoires dans les deux modes sont dimensionnées selon la taille de la plus grande FFT (ou le plus grand FIR) à effectuer, sachant que dans le mode parallèle, les blocs de données à traiter sont répartis entre toutes les mémoires de l'ensemble des papillons utilisés. Selon le mode de fonctionnement, les données en entrée sont soit 30 aiguillées vers les seize mémoires reliées aux huit papillons tous activés en mode parallèle, soit stockées dans les deux mémoires d'entrée d'un seul papillon en mode séquentiel. Les autres papillons et mémoires dans ce dernier mode seront inactifs, ce qui réduira la consommation électrique dans le module. Notons enfin que des signaux de contrôle de configuration sont appliqués au séquenceur pour spécifier la fonctionnalité du module : opération FFT ou FIR ; FFT directe ou inverse ; FFT en mode parallèle ou séquentiel (dans le cas d'une mise en oeuvre avec plusieurs circuits papillons) ; taille de la FFT ou du FIR ; adresses de début et de fin du masque à zéro (dans le cas d'une mise en oeuvre utilisant un masque) ; et ~o coefficients du FIR (dans le cas d'une implémentation en mémoire volatile (ou RAM) des coefficients du filtre). REVENDICATIONS1. Dispositif de traitement de signaux numériques comportant un module de calcul itératif (MCI) apte à recevoir une première succession de nombres complexes et à effectuer par une série d'opérations itératives une transformée de Fourier rapide de cette première succession de nombres complexes pour fournir sur une sortie du module une deuxième succession de nombres qui représente la transformée de Fourier de la première succession, le module de calcul itératif comprenant à cet effet au moins un circuit élémentaire de calcul itératif (PAPI) et des mémoires (Ml, M2) associées au circuit élémentaire, caractérisé en ce que le dispositif de traitement comprend des moyens pour : - fournir sur sa sortie, dans un premier mode de fonctionnement correspondant à l'exécution d'une transformée de Fourier rapide, la deuxième succession de nombres, - effectuer, dans un deuxième mode de fonctionnement correspondant à l'exécution d'une fonction de filtrage à réponse impulsionnelle finie, une multiplication de chaque nombre de la deuxième succession de nombres complexes par un coefficient complexe respectif, de manière à produire une troisième succession de nombres complexes, et appliquer à l'entrée du module de calcul itératif (MCI) la troisième succession pour effectuer une transformée de Fourier inverse de la troisième succession de manière à produire sur la sortie du module de calcul itératif une quatrième succession de nombres complexes représentant cette transformée inverse, - fournir sur sa sortie, dans le deuxième mode de fonctionnement, la quatrième succession de nombres représentant le résultat d'une fonction de filtrage à réponse impulsionnelle finie exécutée sur les nombres de la première succession. 2. Dispositif de traitement de signaux numériques selon la revendication 1, caractérisé en ce que le circuit élémentaire comprend au moins un additionneur (ADD), un soustracteur (SST), et un multiplieur (MULT), ainsi qu'une entrée de coefficient reliée à une mémoire (COEFK, COEFH) contenant un coefficient pour effectuer une multiplication par cecoefficient, et en ce que la multiplication des nombres de la deuxième succession est faite par ce multiplieur en appliquant sur une entrée du multiplieur les nombres de la deuxième succession. 3. Dispositif de traitement de signaux numériques selon la revendication 2, caractérisé en ce que le circuit élémentaire comprend un multiplexeur en amont du multiplieur (MULT), ainsi qu'une entrée de commande (CONFIG) du multiplexeur pour appliquer au multiplieur soit la sortie du soustracteur soit une entrée de l'additionneur. 4. Dispositif de traitement de signaux numériques selon l'une des revendications 1 à 3, caractérisé en ce qu'il comporte une mémoire (COEFK) de coefficients multiplicateurs permettant l'exécution d'une transformée de Fourier et une transformée de Fourier inverse par le circuit élémentaire de calcul itératif sur des blocs d'une taille maximale donnée, et un moyen (SEQ) pour contrôler une séquence itérative de fonctionnement du circuit élémentaire de calcul itératif en utilisant une partie seulement des coefficients de la mémoire de coefficients en fonction du nombre N de nombres complexes de la première succession. 5. Dispositif de traitement de signaux numériques selon l'une des revendications 1 à 4, caractérisé en ce qu'il est incorporé à un appareil de transmission ou réception de signaux comportant deux voies de transmission I et Q déphasées de 90°, les signaux sur la voie I définissant les parties réelles des nombres complexes de la première succession, et les signaux sur la voie Q définissant les parties imaginaires des nombres de la première succession. 6. Dispositif de traitement de signaux numériques selon la revendication 5, caractérisé en ce que les parties réelles des nombres de la quatrième succession constituent les signaux filtrés par filtrage à réponse impulsionnelle finie de la voie I, et les parties imaginaires des nombres de la quatrième succession constituent les signaux filtrés par le même filtrage à réponse impulsionnelle finie de la voie Q.35 7. Dispositif de traitement selon la revendication 4, caractérisé en ce que la mémoire de coefficients multiplicateurs comprend un quart des coefficients multiplicateurs nécessaires à l'exécution d'une transformée de Fourier d'une taille donnée ou de la transformée inverse, les autres coefficients nécessaires à cette exécution étant obtenus à partir d'un simple calcul de valeur opposée de la partie réelle ou imaginaire des coefficients stockés. 8. Dispositif de traitement selon l'une des revendications 1 à 7, caractérisé en ce que le module de calcul itératif comporte plusieurs circuits papillon et en ce qu'il est prévu des moyens pour un fonctionnement soit selon un mode accéléré dans lequel les circuits papillons fonctionnent en parallèle, soit selon un mode séquentiel utilisant un seul circuit papillon. 9. Dispositif de traitement selon l'une des revendications 1 à 8, caractérisé en ce que les mémoires du module de calcul itératif sont divisées chacune en cinq mémoires qui sont trois mémoires d'entrée, une mémoire de sortie, et une mémoire de travail, les mémoires d'entrée recevant les nombres à traiter par le module, la mémoire de sortie fournissant les nombres issus des calculs effectués par le module, et la mémoire de travail servant à effectuer les calculs intermédiaires.