Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
PROCESSOR FOR PROCESSING DIGITAL DATA HAVING A BUTTERFLY OPERATOR CONFIGURABLE BETWEEN A FFT/IFFT COMPUTATION AND A CHANNEL DECODING AND CORRESPONDING TELECOMMUNICATION DEVICE
Document Type and Number:
WIPO Patent Application WO/2015/033080
Kind Code:
A1
Abstract:
The invention relates to a processor for processing digital data (80), which comprises at least one butterfly operator (82) configurable between a first configuration in which the butterfly operator performs a Fast Fourier transform computation and a second configuration in which the butterfly operator performs a computation of the metrics of an implementation of a channel decoding algorithm. Said butterfly operator has an architecture comprising the hardware adder/subtractor modules (40', 42', 48', 50'), each including a plurality of basic adder/subtractor modules. Said hardware adder/subtractor modules (40', 42', 48', 50') are configurable by means of at least one programmable parameter (cmd) for the selection of an addition/subtraction dynamic range among a plurality of possible addition/subtraction dynamic range between a maximum dynamic range according to which a single addition/subtraction computation at maximum size of the operands is performed by all of the basic modules in a cascade and a minimum dynamic range according to which a plurality of independent addition/subtraction computations at minimum size of the operands are performed by each one of the basic modules in parallel.

Inventors:
MICHARD ROMAIN (FR)
NAOUES MALEK (FR)
NOGUET DOMINIQUE (FR)
Application Number:
PCT/FR2014/052209
Publication Date:
March 12, 2015
Filing Date:
September 08, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
COMMISSARIAT L ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES (FR)
International Classes:
H03M13/41; G06F17/14
Domestic Patent References:
WO2011154642A22011-12-15
WO1999048025A21999-09-23
WO2011064514A12011-06-03
Foreign References:
EP2577498A22013-04-10
EP2507720A12012-10-10
Other References:
CHUL Y JUNG ET AL: "Design of reconfigurable coprocessor for communication systems", IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS 2004 (SIPS 2004), 13-15 OCTOBER 2004, AUSTIN, TEXAS, USA, 2004, pages 142 - 147, XP002602257
HYUNSEOK LEE ET AL: "A low-power DSP for wireless communications", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 18, no. 9, 25 August 2010 (2010-08-25), pages 1310 - 1322, XP002602259
PACI G ET AL: "Exploration of low power adders for a SIMD data path", PROCEEDINGS OF THE 12TH CONFERENCE ON ASIA SOUTH PACIFIC DESIGN AUTOMATION (ASP-DAC 2007), 23-26 JANUARY 2007, YOKOHAMA, JAPAN, 23 January 2007 (2007-01-23), pages 914 - 919, XP031085617, ISBN: 978-1-4244-0629-6, DOI: 10.1109/ASPDAC.2007.358106
ANONYMOUS: "Adder-subtractor", WIKIPEDIA ARTICLE, VERSION DATED 18 APRIL 2013 21:07, 18 April 2013 (2013-04-18), XP055135453, Retrieved from the Internet [retrieved on 20140820]
BOUCARON J ET AL: "Dynamic variable stage pipeline: an implementation of its control", RAPPORT DE RECHERCHE N° 6918, INRIA, INRIA-00381563, VERSION 1, 5 May 2009 (2009-05-05), XP055135692, Retrieved from the Internet [retrieved on 20140821]
TIAN HANGPEI ET AL: "Gaining flexibility and performance of computing using tailored instruction set and reconfigurable architecture", 2008 INTERNATIONAL CONFERENCE ON MULTIMEDIA AND UBIQUITOUS ENGINEERING (MUE 2008), 24-26 APRIL 2008, BUSAN, KOREA, 24 April 2008 (2008-04-24), pages 324 - 329, XP031263708, ISBN: 978-0-7695-3134-2
YUAN-HAO HUANG ET AL: "A 1.1 G MAC/s sub-word-parallel digital signal processor for wireless communication applications", IEEE JOURNAL OF SOLID-STATE CIRCUITS, vol. 39, no. 1, January 2004 (2004-01-01), pages 169 - 183, XP011105699, ISSN: 0018-9200
TAKALA J ET AL: "Scalable FFT processors and pipelined butterfly units", JOURNAL OF VLSI SIGNAL PROCESSING, vol. 43, June 2006 (2006-06-01), pages 113 - 123, XP019410191, ISSN: 1573-109X
NAOUES M: "Management d'opérateurs communs dans les architectures de terminaux multistandards", THÈSE DE DOCTORAT, SUPÉLEC & SUP'COM, TEL-00931390, VERSION 1, 26 November 2013 (2013-11-26), XP055135099, Retrieved from the Internet [retrieved on 20140818]
L. ALAUS ET AL.: "Promising technique of parameterization for reconfigurable radio, the Common Operators Technique : fundamentals and examples", JOURNAL OF SIGNAL PROCESSING SYSTEMS, 14 March 2009 (2009-03-14)
Attorney, Agent or Firm:
BONNET, MICHEL (FR)
Download PDF:
Claims:
REVENDICATIONS

1 . Processeur (80) de traitement de données numériques comportant au moins un opérateur papillon (82 ; 82' ; 82Ί , 82'n) configurable entre une première configuration dans laquelle l'opérateur papillon réalise un calcul de transformée de Fourier rapide et une seconde configuration dans laquelle l'opérateur papillon réalise un calcul de métriques d'une implémentation d'un algorithme de décodage canal, cet opérateur papillon présentant une architecture comportant des modules matériels d'addition/soustraction (40', 42', 48', 50' ; 86), caractérisé en ce que les modules matériels d'addition/soustraction (40', 42', 48', 50' ; 86) comportent chacun plusieurs modules élémentaires d'addition/soustraction (88, 90, 92, 94 ; 102) et sont configurables à l'aide d'au moins un paramètre programmable (cmd) pour la sélection d'une dynamique d'addition/soustraction parmi plusieurs dynamiques d'addition/soustraction possibles entre :

- une dynamique maximale selon laquelle un calcul unique d'addition/soustraction à taille maximale des opérandes est réalisé par l'ensemble des modules élémentaires (88, 90, 92, 94 ; 102) en cascade, et

- une dynamique minimale selon laquelle plusieurs calculs indépendants d'addition/soustraction à taille minimale des opérandes sont réalisés par chacun des modules élémentaires (88, 90, 92, 94 ; 102) en parallèle.

2. Processeur (80) de traitement de données numériques selon la revendication 1 , dans lequel les modules matériels d'addition/soustraction (40', 42', 48', 50' ; 86) sont configurables pour la sélection de la dynamique maximale des modules matériels d'addition/soustraction (40', 42', 48', 50' ; 86) lorsque l'opérateur papillon (82 ; 82' ; 82'1 ; 82'n) est dans sa première configuration de calcul de transformée de Fourier rapide et pour la sélection de la dynamique minimale des modules matériels d'addition/soustraction (40', 42', 48', 50' ; 86) lorsque l'opérateur papillon (82 ; 82' ; 82'1 ; 82'n) est dans sa seconde configuration de calcul de métriques d'une implémentation d'un algorithme de décodage canal.

3. Processeur (80) de traitement de données numériques selon la revendication 1 ou 2, dans lequel chaque module matériel d'addition/soustraction comporte N modules élémentaires d'addition/soustraction et N-1 multiplexeurs, chaque multiplexeur étant placé entre deux modules élémentaires d'addition/soustraction (88, 90, 92, 94 ; 102) et étant à sélection de l'une parmi deux entrées à l'aide du paramètre programmable (cmd), une sortie de chaque multiplexeur (96, 98, 100) étant reliée à une entrée du module élémentaire d'addition/soustraction (88, 90, 92, 94 ; 102) placé en aval de ce multiplexeur (96, 98, 100) et l'une des entrées de chaque multiplexeur (96, 98, 100) étant reliée à une sortie du module élémentaire d'addition/soustraction (88, 90, 92, 94 ; 102) placé en amont de ce multiplexeur (96, 98, 100).

4. Processeur (80) de traitement de données numériques selon la revendication 3, dans lequel chaque module élémentaire d'addition/soustraction (88, 90, 92, 94 ; 102) comporte plusieurs éléments de base (104, 106, 108, 1 10 ; 1 12) d'addition/soustraction binaire connectés en cascade, chaque élément de base (104, 106, 108, 1 10 ; 1 12) d'addition/soustraction binaire comprenant un élément de base (1 14) d'addition binaire, une porte logique NON (1 16) et un multiplexeur (1 18) disposé entre la porte logique NON (1 16) et l'une des entrées de l'élément de base (1 14) d'addition binaire, pour la sélection entre une opération d'addition binaire et une opération de soustraction binaire pouvant être réalisées par chaque élément de base (104, 106, 108, 1 10 ; 1 12) d'addition/soustraction binaire.

5. Processeur (80) de traitement de données numériques selon l'une quelconque des revendications 1 à 4, dans lequel l'opérateur papillon (82') comporte un premier étage formant un module de multiplication complexe à architecture en pipeline et un second étage d'addition/soustraction complexes et de sélection d'au moins une sortie (S Ί) de l'opérateur papillon (82').

6. Processeur (80) de traitement de données numériques selon la revendication 5, dans lequel:

- un premier niveau séquentiel du premier étage de l'opérateur papillon

(82') est un niveau de multiplications réelles comportant deux éléments de mémoire à registre escamotable (L1 , L2) et deux modules matériels de multiplication (38, 36) réelle,

- un second niveau séquentiel du premier étage de l'opérateur papillon (82') est un niveau d'addition/soustraction réelles comportant deux registres (R4, R5) et des premier et deuxième modules matériels d'addition/soustraction (40', 42') configurables,

- le second étage de l'opérateur papillon (82') comporte un multiplexeur (84") à deux entrées, un multiplexeur (120) à trois entrées (S1 , S4, S3), des troisième et quatrième modules matériels d'addition/soustraction (48', 50') configurables et quatre éléments de mémoire à registre escamotable (L5, L6, L3, L4), dont des premier et deuxième éléments de mémoire à registre escamotable (L5, L6) sont reliés en entrée respectivement aux sorties des premier et deuxième modules matériels d'addition/soustraction (40', 42') configurables du second niveau séquentiel et en sortie respectivement aux troisième et quatrième modules matériels d'addition/soustraction (48', 50') configurables, et

- l'opérateur papillon (82') présente des première et deuxième sorties (S 2, S'-,) destinées à être observées, reliées respectivement à la sortie du troisième module matériel d'addition/soustraction (48') et à la sortie du multiplexeur (120) à trois entrées.

7. Processeur (80) de traitement de données numériques selon la revendication 6, dans lequel les deux multiplexeurs (84", 120) et les quatre modules matériels d'addition/soustraction (40', 42', 48', 50') sont configurables entre la première configuration dans laquelle l'opérateur papillon (82') réalise le calcul de transformée de Fourier rapide, une deuxième configuration dans laquelle l'opérateur papillon (82') réalise un calcul de valeurs de métriques de branches d'une implémentation d'un algorithme de décodage canal et une troisième configuration dans laquelle l'opérateur papillon (82') réalise un calcul de valeurs de métriques de chemins et de survivants d'une implémentation d'un algorithme de décodage canal.

8. Processeur (80) de traitement de données numériques selon la revendication 7, dans lequel le multiplexeur à trois entrées (120) est à sélection de l'une de ses trois entrées (S1 , S4, S3) pour la fourniture de la deuxième sortie (S Ί) de l'opérateur papillon (82'), lesdites entrées (S1 , S4, S3) étant reliées respectivement aux sorties des premier et deuxième éléments de mémoire à registre escamotable (L5, L6) du second étage et du quatrième module matériel d'addition/soustraction (50') configurable.

9. Processeur (80) de traitement de données numériques selon la revendication 7 ou 8, dans lequel les deux modules matériels d'addition/soustraction

(48', 50') du second étage de l'opérateur papillon (82') sont configurables entre la première configuration de l'opérateur papillon (82') dans laquelle ils basculent d'additionneur en soustracteur et inversement à chaque cycle d'horloge, la deuxième configuration de l'opérateur papillon (82') dans laquelle ils basculent d'additionneur en soustracteur et inversement à chaque cycle d'horloge et la troisième configuration de l'opérateur papillon (82') dans laquelle ils fonctionnent en soustracteur uniquement.

10. Processeur (80) de traitement de données numériques selon l'une quelconque des revendications 7 à 9, dans lequel le deuxième module matériel d'addition/soustraction (42') configurable du second niveau séquentiel du premier étage de l'opérateur papillon (82') est configurable entre la première configuration de l'opérateur papillon (82') dans laquelle il fonctionne en soustracteur uniquement, la deuxième configuration de l'opérateur papillon (82') dans laquelle il fonctionne en soustracteur ou en additionneur et la troisième configuration de l'opérateur papillon (82') dans laquelle il fonctionne en additionneur uniquement.

1 1 . Processeur (80) de traitement de données numériques selon l'une quelconque des revendications 7 à 10, dans lequel le premier module matériel d'addition/soustraction (40') du deuxième étage de l'opérateur papillon (82') est configurable entre la première configuration de l'opérateur papillon (82') dans laquelle il fonctionne en additionneur uniquement, la deuxième configuration de l'opérateur papillon (82') dans laquelle il fonctionne en additionneur ou en soustracteur et la troisième configuration de l'opérateur papillon (82') dans laquelle il fonctionne en additionneur uniquement.

12. Processeur (80) de traitement de données numériques selon l'une quelconque des revendications 1 à 1 1 , comportant une pluralité d'opérateurs papillons (82Ί , 82'n) configurables entre ladite première configuration et ladite seconde configuration, ces opérateurs papillons (82Ί , 82'n) étant structurés entre eux pour un calcul de transformée de Fourier rapide par une approche algorithmique de Cooley-Tukey en treillis de type Radix-2 et pour une implémentation d'un algorithme de décodage canal en treillis à quatre symboles de référence.

13. Dispositif de télécommunication (122) à modulation/démodulation multi porteuses de signaux émis/reçus et à décodage de signaux traités par un code convolutif, comportant au moins un processeur (80) de traitement de données numériques selon l'une quelconque des revendications 1 à 10.

14. Dispositif de télécommunication (122) selon la revendication 13, à modulation et démodulation de type OFDM.

15. Dispositif de télécommunication (122) selon la revendication 14, de type multi-normes, comportant au moins un modulateur/démodulateur à modulation et démodulation OFDM compatible avec chaque norme implémentée et au moins un décodeur de signal codé par un code convolutif compatible avec chaque norme implémentée.

Description:
PROCESSEUR DE TRAITEMENT DE DONNEES NUMERIQUES A OPERATEUR PAPILLON CONFIGURABLE ENTRE UN CALCUL DE FFT/IFFT ET UN DECODAGE CANAL ET DISPOSITIF DE TELECOMMUNICATION CORRESPONDANT

La présente invention concerne un processeur de traitement de données numériques à opérateur papillon configurable notamment pour l'exécution d'un calcul de transformée de Fourier rapide directe dite FFT (de l'Anglais « Fast Fourier Transform ») ou de transformée de Fourier rapide inverse dite IFFT (de l'Anglais « Inverse Fast Fourier Transform »). Elle concerne également un dispositif de télécommunication émetteur/récepteur comportant au moins un tel processeur.

Un tel processeur trouve son utilité dans un grand nombre d'applications de télécommunication, notamment dans les dispositifs à modulation/démodulation multi porteuses des signaux émis/reçus. En effet, dans ce type de dispositifs, la modulation/démodulation fait intervenir généralement et avantageusement un calcul numérique de FFT/IFFT, notamment dans le cadre de la radio logicielle ou radio reconfigurable SDR (de l'Anglais « Software Defined Radio »).

Un dispositif d'émission/réception de type SDR est un dispositif dans lequel la conversion numérique/analogique se fait au plus près de l'antenne, de sorte que les traitements de modulation/démodulation et de codage/décodage exécutés par le dispositif de télécommunication se font sur des signaux numériques. Ces signaux numériques se prêtent effectivement mieux à un traitement reconfigurable, c'est-à- dire capable de s'adapter à différentes normes ou à différentes évolutions.

Aujourd'hui par exemple, de nombreuses normes de communication sans fil existent. Une conséquence immédiate de cette prolifération de normes est le besoin grandissant en dispositifs capables de gérer des normes différentes. La limitation en capacité de calcul et la consommation électrique excessive des processeurs de traitement du signal programmables font de ces dispositifs une solution mal adaptée pour répondre complètement à ce besoin. Par conséquent, une solution purement logicielle n'est pas envisageable et l'utilisation d'opérateurs matériels s'impose.

Une première solution pour gérer plusieurs normes consiste à juxtaposer au sein d'un même dispositif de télécommunication les différentes chaînes de traitement des normes considérées comportant chacune leurs opérateurs matériels. Cette solution est simple à implémenter, mais présente l'inconvénient majeur de ne pas être efficace en termes de surface de silicium utilisée. En outre, son évolutivité est limitée aux normes considérées initialement et la complexité de sa mise en œuvre n'est pas optimale. En effet, la complexité de cette solution correspond à la somme des complexités de chaque norme à laquelle s'ajoute celle des organes de reconfiguration.

Une autre solution consiste à concevoir les différentes chaînes de traitement de telle sorte qu'elles mettent en commun une partie de leurs modules fonctionnels et opérateurs matériels. Cette seconde solution prévoit une paramétrisation du dispositif de sorte que sa reconfiguration pour qu'il exécute telle ou telle chaîne de traitement ne nécessite qu'un changement de valeurs de paramètres. Notamment, une technique de mise en commun d'opérateurs matériels est présentée dans l'article de L. Alaus et al, intitulé « Promising technique of parameterization for reconfigurable radio, the Common Operators Technique : fundamentals and examples », publié dans Journal of Signal Processing Systems, DOI 10.1007/s1 1265-009-0353-04, le 14 mars 2009. Selon cette solution, les opérateurs mis en commun étant reconfigurables par un simple chargement de paramètres, ils permettent d'obtenir un dispositif reconfigurable tout en limitant le nombre d'éléments matériels à implémenter.

A titre d'exemple, cet article indique qu'un opérateur matériel de calcul de FFT/IFFT peut être avantageusement mis en commun parce qu'il est sollicité par un grand nombre de normes. En effet, la plupart des normes de télécommunication actuelles ou en préparation sont basées sur des modulations de type OFDM (de l'Anglais « Orthogonal Frequency Division Multiplexing »). La modulation OFDM est un procédé de codage de signaux numériques par répartition en fréquences orthogonales. Le principe de la modulation OFDM consiste à multiplexer une communication en la répartissant sur des sous-canaux envoyés simultanément sur des fréquences indépendantes. Le cœur même d'une modulation OFDM comporte un calcul de FFT.

L'opérateur FFT intervient plus généralement en tant qu'opérateur de base de fonctions de réception de signaux dans le domaine fréquentiel dans la majorité des normes. Par exemple, un opérateur FFT est utilisé dans une implémentation fréquentielle d'une estimation de canal par égalisation, dans une modulation/démodulation multi porteuses, dans un algorithme de désétalement et dans l'exécution d'une fonction dite de « canalisation » (i.e. sélection de canal) en banc de filtres. Cet opérateur peut donc être utilisé à différents niveaux d'une chaîne de traitement et dans le cadre de différentes normes. Il permet d'envisager l'obtention d'un dispositif de télécommunication reconfigurable présentant un nombre limité d'opérateurs matériels de calcul de FFT.

Or, la majorité des normes impose un procédé de codage de canal pour assurer une fiabilité des données transmises. En effet, le codage de canal sert à lutter contre les perturbations apportées par le canal de transmission en remplaçant le message à transmettre par un message moins vulnérable, par exemple en codant ce message avec un codeur convolutif. L'algorithme de Viterbi, un algorithme de type « Turbo décodeur » ou l'algorithme BCJR (issu des noms de ses inventeurs Bahl, Cocke, Jelinek et Raviv) sont alors des techniques généralement utilisées pour le décodage de signaux traités par code convolutif.

L'implémentation de l'une de ces techniques dans un dispositif d'émission/réception de type SDR augmente sensiblement sa complexité parce qu'elle nécessite des modules matériels et un processeur spécifiques.

L'invention s'applique alors plus particulièrement à un processeur de traitement de données numériques comportant au moins un opérateur papillon configurable entre une première configuration dans laquelle l'opérateur papillon réalise un calcul de transformée de Fourier rapide et une seconde configuration dans laquelle l'opérateur papillon réalise un calcul de métriques d'une implémentation d'un algorithme de décodage canal, cet opérateur papillon présentant une architecture comportant des modules matériels d'addition/soustraction.

Un tel processeur est par exemple décrit dans la demande de brevet européen publiée sous le numéro EP 2 577 498. En particulier, il est montré qu'une implémentation par opérateur(s) papillon(s) du calcul de FFT par une approche algorithmique dite de Cooley-Tukey en subdivision de type Radix-2 ressemble à une implémentation possible du calcul de valeurs de métriques de branches et du calcul de valeurs de métriques de chemins et de survivants d'un algorithme de décodage canal. Ainsi, une mise en commun de plusieurs modules matériels d'addition et soustraction utilisés dans un processeur de calcul de FFT à opérateurs papillons est possible pour l'implémentation à schéma de papillon d'un algorithme de décodage canal. Le processeur décrit dans cette demande de brevet présente avantageusement une architecture en pipeline. En outre, en paramétrant astucieusement au moins un élément de cette architecture, il devient envisageable de concevoir un unique processeur de traitement de données numériques capable, selon son paramétrage, de réaliser un calcul de FFT à opérateurs papillons et un calcul de valeurs de métriques de branches et/ou de valeurs de métriques de chemins et de survivants d'une implémentation d'un algorithme de décodage canal.

Les fonctions de modulation/démodulation et de décodage canal peuvent ainsi être remplies dans un même dispositif de télécommunication sur la base d'opérateurs matériels communs, limitant d'autant le nombre et la taille des éléments matériels à intégrer dans le dispositif.

Par ailleurs, les ressources globales nécessaires aux calculs de FFT, d'une part, et aux calculs de décodage canal, d'autre part, sont différentes. En se référant aux normes actuelles, la taille des FFT oscille entre 64 et 2048 bits, ce qui nécessite entre 32 et 1024 opérateurs papillons par étape du treillis, alors que les degrés des polynômes générateurs des codes convolutifs varient entre 4 et 8 bits, ce qui nécessite entre 8 et 128 opérateurs papillons. En outre, les ressources globales nécessaires aux calculs de métriques de branches, d'une part, et aux calculs de métriques de chemins et de survivants, d'autre part, étant également différentes, le fait de pouvoir paramétrer les trois configurations précitées permet d'optimiser la taille et l'utilisation d'un microprocesseur implémentant une pluralité de tels opérateurs papillons reconfigurables. Plus précisément, les ressources devant être allouées pour les calculs de FFT étant généralement très supérieures à celles nécessaires aux traitements d'un algorithme de décodage canal, une parallélisation des calculs de décodage canal permettant de les accélérer est ainsi possible sans surcoût en termes d'opérateurs reconfigurables.

Cependant, les dynamiques des opérandes des additionneurs/soustracteurs de l'opérateur papillon nécessaires aux calculs de FFT sont généralement supérieures à celles nécessaires aux calculs de décodage canal. Plus précisément, lors des calculs de FFT, la taille des opérandes oscille entre 8 et 12 bits alors que les calculs de décodage canal sont généralement effectués sur des données de taille oscillant entre 3 et 8 bits. Par conséquent, chaque opérateur papillon étant dimensionné pour supporter les calculs de FFT, un surdimensionnement des modules matériels d'addition/soustraction de l'opérateur papillon est observé lors des traitements de décodage canal.

Il peut ainsi être souhaité de prévoir un processeur de traitement de données qui permet de résoudre au moins une partie des problèmes et contraintes précités et/ou d'améliorer la reconfigurabilité d'un dispositif de télécommunication pour un gain en vitesse de fonctionnement sans augmentation de surface. L'invention a donc pour objet un processeur de traitement de données numériques comportant au moins un opérateur papillon configurable entre une première configuration dans laquelle l'opérateur papillon réalise un calcul de transformée de Fourier rapide et une seconde configuration dans laquelle l'opérateur papillon réalise un calcul de métriques d'une implémentation d'un algorithme de décodage canal, cet opérateur papillon présentant une architecture comportant des modules matériels d'addition/soustraction, dans lequel les modules matériels d'addition/soustraction comportent chacun plusieurs modules élémentaires d'addition/soustraction et sont configurables à l'aide d'au moins un paramètre programmable pour la sélection d'une dynamique d'addition/soustraction parmi plusieurs dynamiques d'addition/soustraction possibles entre une dynamique maximale selon laquelle un calcul unique d'addition/soustraction à taille maximale des opérandes est réalisé par l'ensemble des modules élémentaires en cascade et une dynamique minimale selon laquelle plusieurs calculs indépendants d'addition/soustraction à taille minimale des opérandes sont réalisés par chacun des modules élémentaires en parallèle.

Ainsi, en paramétrant astucieusement la dynamique des modules d'addition/soustraction des opérateurs papillons, il devient envisageable de concevoir un unique processeur de traitement de données numériques capable de réaliser sans gaspillage de ressources un calcul de FFT à opérateurs papillons et un calcul de valeurs de métriques d'une implémentation d'un algorithme de décodage canal.

En outre, lors des traitements de décodage canal, la dynamique nécessaire d'addition/soustraction étant inférieure à la dynamique maximale des modules matériels d'addition/soustraction, une parallélisation des calculs de décodage canal est possible permettant de les accélérer sans surcoût en termes d'opérateurs.

De façon optionnelle, les modules matériels d'addition/soustraction sont configurables pour la sélection de la dynamique maximale des modules matériels d'addition/soustraction lorsque l'opérateur papillon est dans sa première configuration de calcul de transformée de Fourier rapide et pour la sélection de la dynamique minimale des modules matériels d'addition/soustraction lorsque l'opérateur papillon est dans sa seconde configuration de calcul de métriques d'une implémentation d'un algorithme de décodage canal.

De façon optionnelle également, chaque module matériel d'addition/soustraction comporte N modules élémentaires d'addition/soustraction et N-1 multiplexeurs, chaque multiplexeur étant placé entre deux modules élémentaires d'addition/soustraction et étant à sélection de l'une parmi deux entrées à l'aide du paramètre programmable, une sortie de chaque multiplexeur étant reliée à une entrée du module élémentaire d'addition/soustraction placé en aval de ce multiplexeur et l'une des entrées de chaque multiplexeur étant reliée à une sortie du module élémentaire d'addition/soustraction placé en amont de ce multiplexeur.

De façon optionnelle également, chaque module élémentaire d'addition/soustraction comporte plusieurs éléments de base d'addition/soustraction binaire connectés en cascade, chaque élément de base d'addition/soustraction binaire comprenant un élément de base d'addition binaire, une porte logique NON et un multiplexeur disposé entre la porte logique NON et l'une des entrées de l'élément de base d'addition binaire, pour la sélection entre une opération d'addition binaire et une opération de soustraction binaire pouvant être réalisées par chaque élément de base d'addition/soustraction binaire.

De façon optionnelle également, l'opérateur papillon comporte un premier étage formant un module de multiplication complexe à architecture en pipeline et un second étage d'addition/soustraction complexes et de sélection d'au moins une sortie de l'opérateur papillon.

De façon optionnelle également : un premier niveau séquentiel du premier étage de l'opérateur papillon est un niveau de multiplications réelles comportant deux éléments de mémoire à registre escamotable et deux modules matériels de multiplication réelle ; un second niveau séquentiel du premier étage de l'opérateur papillon est un niveau d'addition/soustraction réelles comportant deux registres et des premier et deuxième modules matériels d'addition/soustraction configurables ; le second étage de l'opérateur papillon comporte un multiplexeur à deux entrées, un multiplexeur à trois entrées, des troisième et quatrième modules matériels d'addition/soustraction configurables et quatre éléments de mémoire à registre escamotable, dont des premier et deuxième éléments de mémoire à registre escamotable sont reliés en entrée respectivement aux sorties des premier et deuxième modules matériels d'addition/soustraction configurables du second niveau séquentiel et en sortie respectivement aux troisième et quatrième modules matériels d'addition/soustraction configurables ; et l'opérateur papillon présente des première et deuxième sorties destinées à être observées, reliées respectivement à la sortie du troisième module matériel d'addition/soustraction et à la sortie du multiplexeur à trois entrées. De façon optionnelle également, les deux multiplexeurs et les quatre modules matériels d'addition/soustraction sont configurables entre la première configuration dans laquelle l'opérateur papillon réalise le calcul de transformée de Fourier rapide, une deuxième configuration dans laquelle l'opérateur papillon réalise un calcul de valeurs de métriques de branches d'une implémentation d'un algorithme de décodage canal et une troisième configuration dans laquelle l'opérateur papillon réalise un calcul de valeurs de métriques de chemins et de survivants d'une implémentation d'un algorithme de décodage canal.

De façon optionnelle également, le multiplexeur à trois entrées est à sélection de l'une de ses trois entrées pour la fourniture de la deuxième sortie de l'opérateur papillon, lesdites entrées étant reliées respectivement aux sorties des premier et deuxième éléments de mémoire à registre escamotable du second étage et du quatrième module matériel d'addition/soustraction configurable.

De façon optionnelle également, les deux modules matériels d'addition/soustraction du second étage de l'opérateur papillon sont configurables entre la première configuration de l'opérateur papillon dans laquelle ils basculent d'additionneur en soustracteur et inversement à chaque cycle d'horloge, la deuxième configuration de l'opérateur papillon dans laquelle ils basculent d'additionneur en soustracteur et inversement à chaque cycle d'horloge et la troisième configuration de l'opérateur papillon dans laquelle ils fonctionnent en soustracteur uniquement.

De façon optionnelle également, le deuxième module matériel d'addition/soustraction configurable du second niveau séquentiel du premier étage de l'opérateur papillon est configurable entre la première configuration de l'opérateur papillon dans laquelle il fonctionne en soustracteur uniquement, la deuxième configuration de l'opérateur papillon dans laquelle il fonctionne en soustracteur ou en additionneur et la troisième configuration de l'opérateur papillon dans laquelle il fonctionne en additionneur uniquement.

De façon optionnelle également, le premier module matériel d'addition/soustraction du deuxième étage de l'opérateur papillon est configurable entre la première configuration de l'opérateur papillon dans laquelle il fonctionne en additionneur uniquement, la deuxième configuration de l'opérateur papillon dans laquelle il fonctionne en additionneur ou en soustracteur et la troisième configuration de l'opérateur papillon dans laquelle il fonctionne en additionneur uniquement.

De façon optionnelle également, un processeur de traitement de données numériques selon l'invention peut comporter une pluralité d'opérateurs papillons configurables entre ladite première configuration et ladite seconde configuration, ces opérateurs papillons étant structurés entre eux pour un calcul de transformée de Fourier rapide par une approche algorithmique de Cooley-Tukey en treillis de type Radix-2 et pour une implémentation d'un algorithme de décodage canal en treillis à quatre symboles de référence.

L'invention a également pour objet un dispositif de télécommunication à modulation/démodulation multi porteuses de signaux émis/reçus et à décodage de signaux traités par un code convolutif, comportant au moins un processeur de traitement de données numériques tel que défini précédemment.

De façon optionnelle, un dispositif de télécommunication selon l'invention est à modulation et démodulation de type OFDM.

De façon optionnelle également, un dispositif de télécommunication selon l'invention est de type multi-normes, comportant au moins un modulateur/démodulateur à modulation et démodulation OFDM compatible avec chaque norme implémentée et au moins un décodeur de signal codé par un code convolutif compatible avec chaque norme implémentée.

L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels :

- la figure 1 représente schématiquement la structure, à huit entrées inversées et huit sorties ordonnées, d'un réseau de traitement de données en treillis pour l'implémentation d'un calcul de FFT/IFFT par une approche algorithmique de Cooley-Tukey en subdivision de type Radix-2,

- la figure 2 représente schématiquement la structure d'un opérateur papillon utilisé par le réseau de traitement de données de la figure 1 ,

- la figure 3 représente schématiquement une implémentation possible en modules d'addition/soustraction et de multiplication de l'opérateur papillon de la figure 2,

- la figure 4 représente schématiquement la structure générale d'une chaîne de traitement de données pour une implémentation d'un algorithme de décodage canal,

- la figure 5 représente schématiquement la structure d'un opérateur papillon utilisable par une partie de la chaîne de traitement de données de la figure 4, - les figures 6A et 6B représentent schématiquement une implémentation possible en modules d'addition/soustraction de l'opérateur papillon de la figure 5,

- les figures 7 et 8 représentent schématiquement la structure générale d'un processeur à opérateur papillon selon deux modes de réalisation de l'invention,

- les figures 9, 10 et 1 1 illustrent en détail l'un des modules matériels d'addition/soustraction du processeur à opérateur papillon de la figure 7 ou 8,

- la figure 12 représente schématiquement la structure générale d'un processeur à opérateur papillon selon un troisième mode de réalisation de l'invention, et

- la figure 13 représente schématiquement la structure générale d'un dispositif de télécommunication selon un mode de réalisation de l'invention.

La transformée de Fourier rapide directe FFT est un algorithme de calcul de la transformée de Fourier discrète. Cet algorithme est utilisé en traitement numérique du signal pour transformer des données discrètes du domaine temporel ou spatial dans le domaine fréquentiel.

Soient par exemple N valeurs temporelles discrètes x[0], x[N-1 ] d'un signal x. Les N valeurs fréquentielles de la transformée de Fourier discrète X de ce signal x sont définies par la formule suivante : x [k] = , pour k = 0, N-1 , où w = e N

La transformée de Fourier discrète inverse étant équivalente à la transformée de Fourier discrète directe, à un signe et facteur 1/N près, la transformée de Fourrier rapide inverse IFFT repose sur le même algorithme que la FFT pour calculer cette transformée de Fourier discrète inverse. Tout processeur de traitement de données numériques configuré pour l'exécution d'un calcul de transformée de Fourier rapide directe FFT est donc également apte au calcul de transformée de Fourier rapide inverse IFFT.

Une implémentation particulièrement simple et très utilisée du calcul de FFT est l'approche algorithmique de Cooley-Tukey en subdivision de type Radix-2. Elle suppose que le nombre N d'échantillons transformés soit une puissance de deux et subdivise de façon récursive le traitement de n échantillons en deux traitements identiques de taille n/2 à une échelle inférieure. En effet, à une première échelle : X[k] =∑x[n\e N = ∑ x[2n\e N + ∑ x[2n + l]e N

n=0 n=0 n=0

X[k] =∑ 2«k + e N ∑ J [2« + lk ,

-i—nk

De façon récurrente, un calcul de FFT à une échelle donnée est réalisé par deux calculs de FFT à une échelle inférieure, l'un portant sur les échantillons pairs, l'autre sur les échantillons impairs du signal à l'échelle donnée.

A l'aide de simplifications supplémentaires bien connues, on obtient ainsi un traitement en treillis à plusieurs échelles (ou niveaux) impliquant autant d'étapes successives. Un exemple de treillis est illustré sur la figure 1 , à entrées inversées (de l'Anglais « bit-reversed input ») pour N = 8 impliquant trois étapes St1 , St2 et St3.

Chaque étape comporte N/2 calculs en papillon, pour un nombre total de N/2 x log 2 (N) calculs en papillon, tels que celui illustré sur la figure 2. Ce calcul en papillon nécessite le calcul croisé de deux données y k [0] et y k [1 ], comportant une multiplication complexe de l'une des données, y k [1 ], par un facteur W pour fournir une valeur intermédiaire, puis une addition et une soustraction complexes entre y k [0] et cette valeur intermédiaire pour fournir deux données y k+1 [0] et y k+1 [1 ]. Dans l'exemple illustré sur la figure 1 , le facteur W vaut w° à l'échelle/étape St1 , w° ou w 2 à l'échelle/étape St2 et w°, w 1 , w 2 ou w 3 à l'échelle/étape St3.

Les deux relations liant y k+1 [0] et y k+1 [1 ] à y k [0] et y k [1 ] prennent la forme suivante :

En pratique, le calcul en papillon est réalisé par un opérateur structuré en un premier étage de multiplication complexe et un second étage d'addition et soustraction complexes recevant en entrée les données de sorties du premier étage. Pour réaliser sa multiplication complexe, le premier étage comporte des modules matériels de multiplication réelle, des modules matériels d'addition/soustraction réelle et des liens de transmission de données entre ces modules. Pour réaliser son addition et sa soustraction complexes, le second étage comporte des modules matériels d'addition/soustraction réelle et des liens de transmission de données vers ces modules.

Plus précisément, en notant : y k [l] = a + ib,

W = c + id,

y k [o] = e + if,

où a, b, c, d, e et f sont des valeurs réelles, on fait apparaître le besoin en modules matériels de multiplication, addition et soustraction réelles :

y k+l [θ] = [e + (ac - bd)] + i[f + (bc + ad)],

y k+l [l] = [e - (ac - bd)] + i[f - (bc + ad)\

Sous cette forme simple, le calcul réalisé par un opérateur papillon nécessite a priori quatre modules matériels de multiplication réelle, trois modules matériels d'addition réelle et trois modules matériels de soustraction réelle, comme cela est représenté en partie gauche de la figure 3.

Plus précisément, le premier étage de multiplication complexe de l'opérateur papillon 10 représenté en partie gauche de la figure 3, portant la référence 12, comporte quatre modules de multiplication 14, 16, 18 et 20 pour réaliser respectivement les produits ad, bc, bd et ac, un module d'addition 22 recevant les données de sortie des modules 14 et 16 pour réaliser la somme ad + bc et un module de soustraction 24 recevant les données de sortie des modules 18 et 20 pour réaliser la soustraction ac - bd.

Le second étage d'addition et soustraction complexes de l'opérateur papillon 10, portant la référence 26, comporte :

- un module d'addition 28 recevant la donnée de sortie du module 22 et la variable f pour réaliser l'opération ad + bc + f, fournissant ainsi la partie imaginaire notée FFt-ImO de y k+ i [0],

- un module d'addition 30 recevant la donnée de sortie du module 24 et la variable e pour réaliser l'opération ac - bd + e, fournissant ainsi la partie réelle notée FFt-ReO de y k+ i [0],

- un module de soustraction 32 recevant la donnée de sortie du module 22 et la variable f pour réaliser l'opération - ad - bc + f, fournissant ainsi la partie imaginaire notée FFt-lm1 de y k +i [1 ], et

- un module de soustraction 34 recevant la donnée de sortie du module 24 et la variable e pour réaliser l'opération bd - ac + e, fournissant ainsi la partie réelle notée FFt-Re1 de y k +i [1 ].

Selon une architecture en pipeline qui s'avère plus avantageuse, le même calcul réalisé par un opérateur papillon peut ne nécessiter que deux modules matériels de multiplication réelle et quatre modules d'addition et/ou soustraction réelles, mais utilise alors en plus deux multiplexeurs, comme cela est représenté en partie droite de la figure 3. Cette architecture tire profit du fait que les multiplications réelles ac et bc, d'une part, et ad et bd, d'autre part, peuvent être effectuées en deux cycles d'horloge successifs.

Plus précisément, le premier étage 12' de multiplication complexe de l'opérateur papillon 10' représenté en partie droite de la figure 3 comporte tout d'abord à un premier niveau séquentiel :

- trois registres R1 , R2 et R3, recevant respectivement et successivement les opérandes c et d pour le registre R1 , les opérandes b et f pour le registre R2 (dans lequel l'opérande f n'est pas exploité et systématiquement écrasé par l'opérande b suivant) et les opérandes a et e pour le registre R3 (dans lequel l'opérande e n'est pas exploité et systématiquement écrasé par l'opérande a suivant),

- un module de multiplication 36 alimenté par les registres R1 et R2 pour réaliser successivement en deux cycles d'horloge les opérations bc et bd, et

- un module de multiplication 38 alimenté par les registres R1 et R3 pour réaliser successivement en deux cycles d'horloge les opérations ac et ad.

Il comporte ensuite à un second niveau séquentiel :

- deux registres R4 et R5, recevant respectivement les sorties des modules de multiplication 36 et 38,

- un module d'addition 40 classique recevant la sortie du registre R4 et celle du module de multiplication 38 pour réaliser l'opération bc + ad, et

- un module de soustraction 42 classique recevant la sortie du registre R5 et celle du module de multiplication 36 pour réaliser l'opération ac - bd.

Le second étage 26' d'addition et soustraction complexes de l'opérateur papillon 10' comporte :

- deux registres R6 et R7, recevant respectivement les sorties des modules d'addition 40 et de soustraction 42,

- deux registres R8 et R9, recevant chacun successivement les opérandes b et f, dans lesquels l'opérande b n'est pas exploité et systématiquement écrasé par l'opérande f suivant, ces deux registres permettant le stockage temporaire de deux valeurs successives de l'opérande f pendant que les calculs en deux cycles d'horloge du premier étage 10' de multiplication complexe sont exécutés, - un multiplexeur 44 à deux entrées et une sortie, relié aux deux registres R8 et R9, basculant à chaque cycle d'horloge d'un registre à l'autre pour sélectionner à chaque fois la première des deux valeurs de f stockées temporairement,

- deux registres R10 et R1 1 , recevant chacun successivement les opérandes a et e, dans lesquels l'opérande a n'est pas exploité et systématiquement écrasé par l'opérande e suivant, ces deux registres permettant le stockage temporaire de deux valeurs successives de e pendant que les calculs en deux cycles d'horloge du premier étage 10' de multiplication complexe sont exécutés,

- un multiplexeur 46 à deux entrées et une sortie, relié aux deux registres R10 et R1 1 , basculant à chaque cycle d'horloge d'un registre à l'autre pour sélectionner à chaque fois la première des deux valeurs de e stockées temporairement,

- un module d'addition/soustraction 48 classique, basculant à chaque cycle d'horloge d'additionneur en soustracteur ou l'inverse, recevant les sorties du registre R6 et du multiplexeur 44 pour réaliser successivement les opérations f + (bc + ad) et f - (bc + ad), fournissant ainsi successivement la partie imaginaire notée FFt-ImO de y k+1 [0] et la partie imaginaire notée FFt-

- un module d'addition/soustraction 50 classique, basculant à chaque cycle d'horloge d'additionneur en soustracteur ou l'inverse, recevant les sorties du registre R7 et du multiplexeur 46 pour réaliser successivement les opérations e + (ac - bd) et e - (ac - bd), fournissant ainsi successivement la partie réelle notée FFt-ReO de y k+1 [0] et la partie réelle notée FFt-Re1 de

Il apparaît donc clairement que les deux structures d'opérateur papillon 10 et 10' illustrées sur la figure 3 sont équivalentes en termes de calcul effectué pour la réalisation d'un calcul de FFT. Mais la structure 10' en pipeline présente une meilleure optimisation de la surface utilisée et une consommation plus faible que la structure 10.

La structure générale d'une chaîne de traitement de données pour une implémentation d'un algorithme de décodage canal, par exemple l'algorithme de Viterbi, est représentée sur la figure 4. Cet algorithme a pour but de trouver par récurrence la séquence d'états la plus probable ayant produit une séquence mesurée [X 0 , .. . , XN-I] dans le cas d'un signal codé par un codeur convolutif, c'est-à-dire un codeur comportant un registre à décalage dans lequel chaque bit entrant génère un décalage dans le registre et un résultat en sortie.

Son principe est de comparer chaque valeur reçue avec toutes les sorties possibles du registre à décalage de manière à déterminer quel a été le décalage de ce registre le plus probable qui a engendré la valeur reçue. La connaissance de ce décalage permet de connaître la valeur qui l'a provoqué et par conséquent la valeur génératrice du message reçu.

Pour chaque valeur de message reçu, on obtient une structure en treillis reportant en ordonnée l'ensemble des états possibles du registre à décalages et en abscisse l'ensemble des transitions possibles, le motif du treillis se répétant invariablement dans le temps à chaque nouvelle entrée du codeur. En sortie du codeur, seules certaines séquences binaires sont possibles. Elles correspondent aux différents chemins qui existent dans le diagramme en treillis.

L'application d'un algorithme de décodage canal, et en particulier de l'algorithme de Viterbi, consiste alors à rechercher, dans le treillis, la séquence binaire la plus proche de la séquence reçue. En pratique, le déroulement de l'algorithme comporte les trois opérations suivantes, à chaque instant et pour chaque état du treillis :

- un calcul de valeurs de métriques de branches réalisé par un bloc 52, consistant à calculer à la réception de N symboles (pour un rendement de 1 /N) des valeurs représentant la vraisemblance des symboles reçus par rapport aux 2 N symboles possibles. Ces 2 N valeurs sont appelées les métriques de branches et notées BmOO, Bm01 , Bm10 et Bm1 1 pour N = 2 ;

- un calcul de valeurs de métriques de chemins et de survivants réalisé par un bloc 54, consistant à déterminer l'état le plus probable du registre à décalage. Pour chaque nœud du treillis, une métrique de chemin représentant la probabilité cumulée pour ce nœud de faire partie de la séquence émise est mise à jour en tenant compte de la métrique de chemin calculée au cycle précédent et des valeurs de métriques de branches courantes. Cette mise à jour comporte le calcul de deux métriques de chemins et la sélection de la plus faible (chemin survivant) ; - une mémorisation du bit de décision réalisée par un bloc 56, en vue de restituer le signal décodé en fin de trame par une technique de remontée des survivants.

Concrètement, le bloc 52 calcule la différence entre une valeur reçue et les sorties possibles du registre à décalage. Il est généralement qualifié de bloc BMC (de l'Anglais « Branch Metric Computation »).

Le bloc 54, généralement qualifié de bloc ACS (de l'Anglais « Add, Compare, Select ») réalise à chaque nœud du treillis des additions de deux métriques de chemins avec les métriques de branches, une comparaison des deux métriques de chemins obtenues et une sélection de la plus faible.

Pour un calcul sur la base de quatre métriques de branches BmOO, Bm01 , Bm10 et Bm1 1 calculées par le bloc BMC 52, on peut ainsi faire apparaître un opérateur papillon tel que celui représenté sur la figure 5, pour le calcul des deux métriques de chemins suivantes :

Pm k [t + l] = VitO = Min(Pm k [t] + BmOO, Pm k+l [t] + BmlO),

Pm k+N/2 [t + 1] = Vitl = Min(Pm k [t] + BmO 1, Pm k+l [t] + Bml 1) '

Indépendamment de l'équation précédente, lorsque les quatre métriques de branches BmOO, Bm01 , Bm10 et Bm1 1 résultent d'un couple (x, y) de valeurs d'entrée possibles, elles peuvent par exemple être calculées de la façon suivante :

BmOO = x + y

BmOÏ = x— y

BmlO =—x— y

Bml 1 =—x + y

En considérant que la détection d'un minimum par comparaison de deux valeurs peut être réalisée à l'aide d'un soustracteur couplé à un multiplexeur, on note que cet opérateur papillon nécessite, pour réaliser les calculs des blocs BMC 52 et ACS 54, à savoir un calcul de valeurs de métriques de branches et de valeurs de métriques de chemins et de survivants d'une implémentation d'un algorithme de décodage canal :

- pour chacun des deux calculs de valeurs de métriques de chemins et de survivants, deux modules matériels d'addition et un module matériel de soustraction (bloc ACS 54),

- quatre modules matériels d'addition ou soustraction pour le calcul des quatre valeurs de métriques de branches BmOO, Bm01 , Bm10 et Bm1 1

(bloc BMC 52. Comme cela est représenté sur la figure 6A, si l'on note (x, y) le couple de valeurs d'entrée possibles, alors le bloc BMC 52 de l'opérateur papillon de la figure 5 comporte à un premier niveau séquentiel :

- un module d'addition 60 pour réaliser l'opération x+y = BmOO, et

- un module de soustraction 62 pour réaliser l'opération x-y = Bm01 , et à un second niveau séquentiel :

- un module de soustraction 64 recevant en entrée la sortie du module 60 à soustraire à la valeur « 0 » pour réaliser l'opération 0-(x+y) = Bm10, et

- un module de soustraction 66 recevant en entrée la sortie du module 62 à soustraire à la valeur « 0 » pour réaliser l'opération O-(x-y) = Bm1 1 .

Comme cela est représenté sur la figure 6B, si l'on note P0 et P1 les deux métriques de chemins calculées au cycle précédent, alors le bloc ACS 54 de l'opérateur papillon de la figure 5 comporte à un premier niveau séquentiel :

- un module d'addition 68 recevant la métrique de branche BmOO ou Bm01 et la variable P0 pour réaliser l'opération P0 + BmOO ou PO + Bm01 , et

- un module d'addition 70 recevant la métrique de branche Bm10 ou Bm1 1 et la variable P1 pour réaliser l'opération P1 + Bm10 ou P1 + Bm1 1 , et à un deuxième niveau séquentiel :

- un module de soustraction 72 recevant les données de sorties des modules 68 et 70 pour une comparaison de P0 + BmOO et P1 + Bm10 permettant d'en déduire la valeur de VitO, ou pour une comparaison de PO + Bm01 et P1 + Bm1 1 permettant d'en déduire la valeur de Vit1 .

Il apparaît alors que la structure en papillon et en pipeline de l'opérateur papillons 10' de FFT, d'une part, et la structure en papillon de l'opérateur de décodage canal de la figure 5, d'autre part, impliquent des configurations matérielles permettant d'envisager une mise en commun d'une partie de leurs modules matériels d'addition/soustraction et des liens entre ces modules au sein d'une même architecture, moyennant un paramétrage d'au moins un élément, module et/ou lien, de cette architecture à l'aide d'au moins un multiplexeur par exemple.

En particulier, l'ensemble E constitué du second niveau séquentiel du premier étage 12' de multiplication complexe et du second étage 26' d'addition et soustraction complexes de l'opérateur papillon 10' présente quatre modules matériels d'addition et/ou soustraction tout comme l'ensemble constitué des premier et second niveaux séquentiels du bloc BMC 52. Cet ensemble E peut donc être utilisé moyennant paramétrage, soit en configuration de calcul de FFT, soit en configuration de calcul de métriques de branches d'un algorithme de décodage canal, tel que par exemple l'algorithme de Viterbi, mais aussi un algorithme de type « Turbo décodeur » ou BCJR.

En particulier également, l'ensemble constitué des premier et second niveaux séquentiels du bloc ACS 54 présente trois modules matériels d'addition et/ou soustraction. Cet ensemble peut donc tirer profit des modules matériels de l'ensemble E. L'ensemble E peut donc être utilisé moyennant paramétrage également, soit en configuration de calcul de FFT, soit en configuration de calcul de métriques de chemins et de survivants d'un algorithme de décodage canal, tel que par exemple l'algorithme de Viterbi, mais aussi un algorithme de type « Turbo décodeur » ou BCJR.

En conclusion, l'architecture en pipeline de l'opérateur papillon 10' peut être très simplement modifiée pour pouvoir être utilisée moyennant paramétrage, soit en configuration de calcul de FFT, soit en configuration de calcul de métriques de branches d'un algorithme de décodage canal, soit en configuration de calcul de métriques de chemins et de survivants d'un algorithme de décodage canal.

On obtient par exemple le processeur de traitement de données 80 représenté schématiquement sur la figure 7. Ce processeur 80 comporte au moins un opérateur papillon 82 quasiment identique à celui de la partie droite de la figure 3 (opérateur 10'). Cet opérateur papillon 82 à architecture en pipeline comporte les mêmes éléments R1 à R1 1 et 36, 38, 44 et 46 que l'opérateur papillon 10'. Ceux-ci ne seront donc pas de nouveau décrits.

En revanche, il diffère de l'opérateur papillon 10' en ce que les modules 40, 42, 48 et 50 sont remplacés par des modules matériels d'addition/soustraction 40', 42', 48' et 50' respectivement, chacun de ces modules 40', 42', 48' et 50' comportant plusieurs modules élémentaires d'addition/soustraction et étant à dynamique de calcul configurable.

Il comporte en outre un multiplexeur supplémentaire 84 à deux entrées et une sortie s'interposant entre la sortie du multiplexeur 44 et l'entrée du module matériel d'addition/soustraction 48' à laquelle le multiplexeur 44 est relié dans l'architecture de l'opérateur papillon 10'. L'une des deux entrées du multiplexeur supplémentaire 84 reçoit ainsi la sortie du multiplexeur 44 et son autre entrée est reliée à la sortie du module matériel d'addition/soustraction 40'.

En outre, quatre sorties de l'opérateur papillon 82 sont en particulier observées : la sortie S1 du module matériel d'addition/soustraction 40', la sortie S2 du module matériel d'addition/soustraction 48', la sortie S3 du module matériel d'addition/soustraction 50' et la sortie S4 du module matériel d'addition/soustraction 42'.

Enfin, certains éléments du processeur de traitement de données 80 sont configurables à l'aide d'au moins un paramètre programmable pour que l'opérateur papillon 82 puisse être utilisé soit en configuration de calcul de FFT, soit en configuration de calcul de métriques de branches d'un algorithme de décodage canal, soit en configuration de calcul de métriques de chemins et de survivants d'un algorithme de décodage canal. Conformément à l'invention, certains éléments sont aussi configurables, à l'aide d'un paramètre programmable identique ou différent du précédent, pour pouvoir réaliser des opérations d'addition/soustraction à dynamique variable des opérandes. Les éléments configurables précités sont représentés en grisé. Il s'agit du multiplexeur 84 et des modules matériels d'addition/soustraction 40', 42', 48' et 50'.

Selon une première configuration FFT, un ensemble A de paramètres est fourni en entrée des registres R1 , R2, R3, R8, R9, R10, R1 1 du processeur 80, le multiplexeur 84 est configuré pour fournir la sortie du multiplexeur 44 en entrée du module matériel d'addition/soustraction 48', le module matériel d'addition/soustraction 40' est configuré en additionneur, le module matériel d'addition/soustraction 42' est configuré en soustracteur et les deux modules matériels d'addition/soustraction 48' et 50' sont configurés pour basculer d'additionneur en soustracteur et inversement à chaque cycle d'horloge. L'ensemble A de paramètres contient les mêmes paramètres que ceux fournis à l'opérateur 10', à savoir, successivement c, d pour le registre R1 , b, f pour les registres R2, R8 et R9, et a, e pour les registres R3, R10 et R1 1 . Cette première configuration permet de retrouver exactement l'architecture et la configuration de l'opérateur 10' (à l'exception des modules 40', 42', 48' et 50' qui sont en outre configurables en dynamique de calcul), d'où un fonctionnement du processeur 80 en configuration de calcul de FFT. Les sorties observées dans cette première configuration sont S2 (pour les résultats successifs FFt-ImO et FFt-lm1 ) et S3 (pour les résultats successifs FFt-ReO et FFt-Re1 ). On remarque que dans cette première configuration, toutes les ressources du processeur 80 sont effectivement utilisées.

Selon une deuxième configuration BMC, un ensemble B de paramètres est fourni en entrée des registres R1 , R2, R3, R8, R9, R10, R1 1 du processeur 80, le multiplexeur 84 est configuré pour fournir la sortie du multiplexeur 44 en entrée du module matériel d'addition/soustraction 48', le module matériel d'addition/soustraction 40' est configuré en additionneur, le module matériel d'addition/soustraction 42' est configuré en soustracteur et les deux modules matériels d'addition/soustraction 48' et 50' sont configurés en soustracteurs. L'ensemble B de paramètres fournis au processeur 80 contient l'élément neutre « 1 » de la multiplication pour le registre R1 , les valeurs successives x, « 0 » pour les registres R2, R8, R9 et les valeurs successives « 0 », y pour les registres R3, R10, R1 1 . Cette deuxième configuration permet d'escamoter les multiplications des modules 36 et 38 grâce à la valeur « 1 » fournie au registre R1 et d'obtenir les résultats x+y et x-y en sorties des modules 40', configuré en additionneur, et 42', configuré en soustracteur. Par un bon cadencement des multiplexeurs 44 et 46, elle permet également de fournir la valeur « 0 » aux modules matériels d'addition/soustraction 48' et 50' désormais configurés en soustracteurs de sorte que ces derniers fournissent les résultats -x-y et -x+y. Les sorties observées dans cette deuxième configuration sont S1 (pour le résultat x+y = BmOO), S2 (pour le résultat -x-y = Bm10), S3 (pour le résultat -x+y = Bm1 1 ), et S4 (pour le résultat x-y = Bm01 ).

Selon une troisième configuration ACS, un ensemble C de paramètres est fourni en entrée des registres R1 , R2, R3, R8, R9, R10, R1 1 du processeur 80, le multiplexeur 84 est configuré pour fournir la sortie du module matériel d'addition/soustraction 40' configuré en additionneur en entrée du module matériel d'addition/soustraction 48' et le module matériel d'addition/soustraction 48' est configuré en soustracteur.

L'ensemble C de paramètres fournis au processeur 80 contient :

- l'élément neutre « 1 » de la multiplication pour le registre R1 , les valeurs successives P0, Bm10 pour les registres R2, R8, R9 et P1 , BmOO pour les registres R3, R10, R1 1 (ensemble C1 ), ou

- l'élément neutre « 1 » de la multiplication pour le registre R1 , les valeurs successives P0, Bm1 1 pour les registres R2, R8, R9 et P1 , Bm01 pour les registres R3, R10, R1 1 (ensemble C2).

Cette troisième configuration permet d'escamoter les multiplications des modules 36 et 38 grâce à la valeur « 1 » fournie au registre R1 et d'obtenir successivement les résultats P0+Bm00 et P1 +Bm10 (lorsque l'ensemble C1 est fourni en entrée) ou P0+Bm01 et P1 +Bm1 1 (lorsque l'ensemble C2 est fourni en entrée) en sortie du module matériel d'addition/soustraction 40' configuré en additionneur. Les résultats successifs fournis par le module 40' sont ensuite soustraits entre eux par le module 48' configuré en soustracteur, grâce au multiplexeur 84 et au décalage provoqué par le registre R6. Les sorties observées dans cette deuxième configuration sont S1 (pour les résultats successifs P0+Bm00 et P1 +Bm10 lorsque C1 est fourni en entrée, pour les résultats successifs P0+Bm01 et P1 +Bm1 1 lorsque C2 est fourni en entrée) et S2 (pour le résultat PO+BmOO - (P1 +Bm10) lorsque C1 est fourni en entrée, pour le résultat P0+Bm01 - (P1 +Bm1 1 ) lorsque C2 est fourni en entrée).

Comme déjà évoqué précédemment, les dynamiques des opérandes des additionneurs/soustracteurs de l'opérateur papillon nécessaires aux calculs de FFT sont supérieures à celles nécessaires aux calculs de décodage canal. Ainsi, la taille des opérandes oscille entre 8 et 12 bits lors des calculs de FFT alors que les calculs de décodage canal sont effectués sur les données de taille entre 3 et 8 bits.

Il est donc souhaitable d'implémenter dans les opérateurs papillons des additionneurs/soustracteurs à dynamique configurable permettant d'une part de supporter les calculs de FFT et d'autre part d'effectuer plusieurs calculs indépendants d'addition/soustraction en parallèle lors des traitements de décodage canal, évitant ainsi tout gaspillage de ces ressources matérielles.

Conformément à l'invention, chaque module matériel d'addition/soustraction 40', 42', 48' et 50' du processeur de traitement de données 80 représenté schématiquement sur la figure 7, est un module matériel d'addition/soustraction configurable à l'aide d'un paramètre programmable « cmd » pour la sélection d'une dynamique des opérations d'addition/soustraction parmi plusieurs dynamiques d'addition/soustraction possibles entre une dynamique maximale, selon laquelle un calcul unique d'addition/soustraction à taille maximale des opérandes est réalisé par l'ensemble des modules élémentaires qu'il comporte organisés en cascade, et une dynamique minimale, selon laquelle plusieurs calculs indépendants d'addition/soustraction à taille minimale des opérandes sont réalisés par chacun des modules élémentaires qu'il comporte disposés en parallèle.

Le détail de ces modules matériels d'addition/soustraction 40', 42', 48' et 50' ainsi que des modules élémentaires qu'ils comportent sera explicité lors de la description des figures 9, 10 et 1 1 .

L'opérateur papillon 82 ainsi conçu fonctionne de façon équivalente à la structure d'opérateur papillon 10' illustrée sur la figure 3 lors des calculs de FFT, mais les nouveaux modules configurables d'addition/soustraction 40', 42', 48' et 50' permettent une meilleure parallélisation des calculs de décodage canal et par conséquent d'optimiser l'utilisation des ressources du processeur 80.

En variante, le processeur de traitement de données 80 peut être conçu, de façon complètement équivalente, comme illustré sur la figure 8. Dans cette variante de réalisation, il n'est pas ajouté de multiplexeur supplémentaire 84. Le multiplexeur 44 à deux entrées et une sortie de l'opérateur 10' est simplement remplacé par un multiplexeur 84' à trois entrées et une sortie configurable pour fonctionner strictement comme l'ensemble des deux multiplexeurs 44 et 84 tels qu'assemblés l'un (le multiplexeur 44) en amont de l'autre. Ainsi, les trois entrées du multiplexeur 84' sont reliées aux sorties des registres R8, R9 et à celle du module matériel d'addition/soustraction 40'. La sortie du multiplexeur 84' est reliée à l'une des entrées du module matériel d'addition/soustraction 48'.

Les figures 9, 10 et 1 1 illustrent le détail d'un des modules matériels d'addition/soustraction 40', 42', 48' et 50' des structures de l'opérateur papillon 82 illustrées sur les figures 7 et 8 précédemment décrites.

Plus précisément, la figure 9 représente schématiquement la structure d'un module matériel d'addition/soustraction 86 comportant plusieurs modules élémentaires d'addition/soustraction. La référence générale 86 identifie l'un quelconque des modules matériels d'addition/soustraction 40', 42', 48' et 50' précédemment évoqués.

D'une façon générale, chaque module matériel d'addition/soustraction 86 comporte N modules élémentaires d'addition/soustraction et N-1 multiplexeurs. Chacun des multiplexeurs est placé entre deux modules élémentaires d'addition/soustraction et est à sélection de l'une parmi deux entrées à l'aide du paramètre programmable « cmd ». La sortie de chaque multiplexeur est reliée à l'entrée du module élémentaire d'addition/soustraction placé en aval de ce multiplexeur et l'une des entrées de chaque multiplexeur est reliée à la sortie du module élémentaire d'addition/soustraction placé en amont de ce multiplexeur.

Dans l'exemple de réalisation illustré sur la figure 9, le module matériel d'addition/soustraction 86 comporte quatre modules élémentaires d'addition/soustraction 88, 90, 92, 94 ordonnés de droite à gauche et trois multiplexeurs 96, 98, 100 également ordonnés de droite à gauche. Chacun de ces multiplexeurs 96, 98, 100 est placé entre deux modules élémentaires d'addition/soustraction et comporte deux entrées et une sortie. Le premier module élémentaire d'addition/soustraction 88, représenté à droite de la figure 9, reçoit un paramètre binaire « sous » en tant que retenue d'entrée R EM1 . Ce paramètre « sous » permet la sélection de l'opération à effectuer par le module matériel d'addition/soustraction 86. Par exemple, dans le cas où « sous » est égal à « 1 » le module matériel d'addition/soustraction 86 est configuré en soustracteur. Dans le cas contraire, « sous » = « 0 », ce module 86 est configuré en additionneur. Le premier multiplexeur 96, placé entre le premier module élémentaire d'addition/soustraction 88 et le deuxième module élémentaire d'addition/soustraction 90, reçoit en entrée une retenue de sortie R SM1 du premier module élémentaire d'addition/soustraction 88 et le paramètre binaire « sous ». La sortie du premier multiplexeur 96 est reliée à une retenue d'entrée R EM2 du deuxième module élémentaire d'addition/soustraction 90. Le deuxième multiplexeur 98, placé entre le deuxième module élémentaire d'addition/soustraction 90 et le troisième module élémentaire d'addition/soustraction 92, reçoit en entrée une retenue de sortie R SM2 du deuxième module élémentaire d'addition/soustraction 90 et le paramètre « sous ». La sortie de ce deuxième multiplexeur 98 est reliée à une retenue d'entrée R EM3 du troisième module élémentaire d'addition/soustraction 92. Enfin, le troisième multiplexeur 100, situé entre le troisième module élémentaire d'addition/soustraction 92 et le quatrième module élémentaire d'addition/soustraction 94, reçoit en entrée une retenue de sortie R SM 3 du troisième module élémentaire d'addition/soustraction 92 et le paramètre « sous ». La sortie de ce troisième multiplexeur 100 est reliée à une retenue d'entrée R EM4 du quatrième module élémentaire d'addition/soustraction 94.

Le paramètre programmable « cmd » fourni aux trois multiplexeurs 96, 98, 100 permet de sélectionner à la sortie de chaque multiplexeur l'une des valeurs parmi les deux valeurs d'entrée possibles : R S MI et « sous » en entrée du premier multiplexeur 96, R SM2 et « sous » en entrée du deuxième multiplexeur 98 et R SM3 et « sous » en entrée du troisième multiplexeur 100.

Dans le cas où les trois multiplexeurs 96, 98, 100 sont paramétrés par « cmd » pour fournir en sortie le paramètre « sous », quatre calculs indépendants d'addition/soustraction en parallèle sont réalisés par les modules élémentaires d'addition/soustraction 88, 90, 92, 94. Ainsi, chacun des modules élémentaires d'addition/soustraction 88, 90, 92, 94 reçoit en entrée deux opérandes, par exemple de taille n bits, qu'il additionne ou soustrait selon la valeur du paramètre « sous » fourni à chacun d'eux. Pour des raisons de clarté, ces opérandes d'entrée ne sont pas représentés sur la figure 9. Dans cet exemple de réalisation comportant quatre modules élémentaires d'addition/soustraction 88, 90, 92, 94, quatre opérations d'addition/soustraction indépendantes les unes des autres, chacune à dynamique de n bits, peuvent ainsi être effectuées. Cependant, dans d'autres variantes de réalisation, le module matériel d'addition/soustraction 86 pouvant comporter un nombre différent de modules élémentaires d'addition/soustraction, par exemple N, un nombre N d'opérations d'addition/soustraction indépendantes les unes des autres, chacune à dynamique de n bits, peut être effectué.

En revanche, dans le cas où les multiplexeurs 96, 98, 1 00 sont paramétrés par « cmd » pour fournir en sortie les retenues R SM i , R SM2 ET R SM3 des trois premiers modules d'addition/soustraction 88, 90, 92 placés respectivement en amont de ces multiplexeurs, un calcul unique d'addition/soustraction est réalisé par l'ensemble des modules élémentaires d'addition/soustraction 88, 90, 92, 94 en cascade. Les retenues de sortie R S MI , R SM2 et ff 5M3 de chaque module élémentaire d'addition/soustraction 88, 90, 92 sont en effet propagées d'un module élémentaire d'addition/soustraction à l'autre en commençant par la retenue R SM 1 fournie par le premier module élémentaire 88 qui effectue une partie du calcul unique sur les n bits de poids le plus faible LSB (de l'anglais « Least Significant Bit ») d'opérandes fournis en entrée. L'opération d'addition ou de soustraction réalisée par ce calcul unique est définie selon la valeur du paramètre « sous » fourni dans ce cas uniquement en entrée du premier module élémentaire d'addition/soustraction 88. Dans cet exemple de réalisation, le calcul unique est effectué avec une dynamique maximale de 4xn bits. Néanmoins, dans d'autres variantes de réalisation, le module matériel d'addition/soustraction 86 pouvant comporter un nombre différent de modules élémentaires d'addition/soustraction, par exemple N, la dynamique maximale de ce calcul unique est de Nxn bits.

En résumé, grâce à une utilisation astucieuse du paramètre programmable

« cmd », dans le cas où N calculs indépendants d'addition/soustraction en parallèle sont réalisés par le module matériel d'addition/soustraction 86, chaque module élémentaire d'addition/soustraction 88, 90, 92, 94 reçoit en entrée le signal « sous » lui permettant de sélectionner le type d'opération indépendante à effectuer entre une opération d'addition et une opération de soustraction. Dans le cas où un calcul unique d'addition/soustraction est effectué par le module matériel d'addition/soustraction 86, seul le premier module élémentaire d'addition/soustraction 88 reçoit en entrée le signal « sous » lui permettant de sélectionner le type de calcul unique à effectuer.

La figure 1 0 représente schématiquement un module élémentaire d'addition/soustraction tel que l'un de ceux introduits précédemment, comportant plusieurs éléments de base d'addition/soustraction binaire organisés en cascade. Chaque élément de base d'addition/soustraction binaire permet de réaliser une opération d'addition sur un bit ou une opération de soustraction sur un bit et son fonctionnement sera détaillé en référence à la figure 1 1 . La référence générale 102 indiquée sur la figure 10 identifie l'un quelconque des modules élémentaires d'addition/soustraction 88, 90, 92 et 94 précédemment évoqués.

Plus précisément, la figure 1 0 représente schématiquement un module élémentaire d'addition/soustraction 1 02 à quatre bits. Ce module élémentaire d'addition/soustraction 102 comporte donc quatre éléments de base 104, 1 06, 1 08, 1 10 d'addition/soustraction binaire connectés en cascade et reliés entre eux par des retenues d'entrée R E2 , R E3 , R E et des retenues de sortie R S i, Rs2 > R s3 - Ainsi, le premier élément de base 104 d'addition/soustraction binaire, situé à droite de la figure 1 0, reçoit une retenue d'entrée R E1 . Cette retenue d'entrée R E1 correspond à l'une des retenues d'entrée R EM i, REM2 , R EM3 , R EM selon que le module élémentaire d'addition/soustraction 1 02 représente le module 88, 90, 92 ou 94. La retenue de sortie R S1 du premier élément de base 104 d'addition/soustraction binaire est reliée à la retenue d'entrée R E2 du deuxième élément de base 1 06 d'addition/soustraction binaire. La retenue de sortie R S2 du deuxième élément de base 106 d'addition/soustraction binaire est reliée à la retenue d'entrée R E3 du troisième élément de base 108 d'addition/soustraction binaire et la retenue de sortie R S3 du troisième élément de base 108 d'addition/soustraction est reliée à la retenue d'entrée R E4 du quatrième élément de base 1 10 d'addition/soustraction.

Par ailleurs, tous les éléments de base précités 1 04, 106, 1 08, 1 1 0 reçoivent la retenue d'entrée R E1 du premier élément de base 1 04 en tant que paramètre de configuration en additionneur ou soustracteur. Comme indiqué précédemment, la retenue d'entrée R E1 du premier élément de base 104 correspond en effet à la retenue d'entrée du module élémentaire d'addition/soustraction 102 et vaut :

- soit le paramètre « sous » si les trois multiplexeurs 96, 98, 1 00 de la figure 9 sont paramétrés par « cmd » pour réaliser quatre calculs indépendants d'addition/soustraction en parallèle,

- soit « sous » , ff 5M1 , R SM 2 ou R SM3 (respectivement lorsque le module élémentaire 102 est le module 88, 90, 92 ou 94 de la figure 9) si les trois multiplexeurs 96, 98, 100 de la figure 9 sont paramétrés par « cmd » pour réaliser un calcul unique d'addition/soustraction en cascade. Dans ce cas, l'information d'opération d'addition ou de soustraction se propage à l'aide des retenues de sortie R S MI , R SM2 et ff 5M3 .

Le module élémentaire d'addition/soustraction 1 02 reçoit en outre en entrée deux opérandes e x et e 2 . Dans cet exemple de réalisation, les opérandes e x et e 2 fournis à ce module élémentaire d'addition/soustraction 1 02 comportent quatre bits chacun, e = (e 13 , e 12 , e n , e 10 ) et e 2 = (e 23 , e 22 , e 21 , e 20 ) , e 10 et e 20 correspondant aux bits de poids le plus faible LSB, e 13 et e 23 aux bits de poids le plus fort MSB (de l'anglais « Most Significant Bit »).

Chacun des éléments de base 1 04, 106, 1 08, 1 1 0 d'addition/soustraction binaire du module élémentaire d'addition/soustraction 102 effectue un calcul d'addition/soustraction de deux bits de même poids des opérandes d'entrée e x et e 2 .

La valeur résultat de l'addition/soustraction effectuée par ce module élémentaire d'addition/soustraction 1 02 est représentée sur quatre bits correspondant aux sorties 5 0 , 5 1 ; 5 2 , 5 3 des quatre éléments de base 104, 106, 1 08, 1 10, 5 3 correspondant au bit de poids le plus fort MSB et 5 0 au bit de poids le plus faible LSB de la valeur résultat.

Dans cet exemple de réalisation, le module élémentaire d'addition/soustraction 102 est capable d'effectuer des opérations d'addition/soustraction sur quatre bits. Cependant, dans d'autres variantes de réalisation n éléments de base peuvent s'enchaîner pour constituer un module élémentaire d'addition/soustraction 102 pouvant effectuer des opérations d'addition/soustraction sur un nombre n de bits.

La figure 1 1 représente schématiquement une implémentation possible d'un élément de base 1 1 2 d'addition/soustraction binaire. La référence générale 1 1 2 identifie l'un quelconque des éléments de base 104, 106, 108, 1 1 0 précédemment évoqués. Cet élément de base 1 1 2 d'addition/soustraction binaire comprend un élément de base 1 14 d'addition binaire à trois entrées (deux opérandes binaires d'entrée b t et b 2 à additionner, par exemple les bits e 10 et e 20 ou e n et e 21 ou e 12 et e 22 ou e 13 et e 23 , ainsi qu'une retenue d'entrée R E ) et deux sorties (le résultat de l'addition binaire sur un bit S et la retenue de sortie R S ) . Il comporte en outre une porte logique NON 1 1 6 et un multiplexeur 1 1 8 disposé entre la porte logique NON 1 16 et l'une des entrées, par exemple celle de l'opérande binaire b 2 , de l'élément de base 1 14 d'addition binaire. Plus précisément, le multiplexeur 1 18 présente deux entrées, l'une recevant directement l'opérande binaire b 2 , l'autre le recevant indirectement via la porte logique NON 1 16. L'une ou l'autre de ces deux entrées est sélectionnée en fonction de la valeur de la retenue d'entrée R E1 du premier élément de base 104 fournie en tant que paramètre de configuration du multiplexeur 1 18.

Le tableau ci-dessous illustre la table de vérité de l'opération réalisée par l'élément de base 1 14 d'addition binaire.

Grâce à la porte logique NON 1 16 et au multiplexeur 1 18 disposés sur l'entrée correspondant à l'opérande binaire b 2 , l'élément de base 1 12 d'addition/soustraction binaire permet d'effectuer, en plus de l'opération d'addition binaire précitée, une opération de soustraction binaire selon l'expression : S = b x - b 2 = b x +Y 2 + 1- Conformément à cette expression, l'élément de base 1 12 d'addition/soustraction binaire est configuré en soustracteur binaire si, et seulement si, la valeur de la retenue d'entrée R E est égale à « 1 » et la valeur du paramètre de configuration R E1 est égale à « 1 » également.

Le tableau ci-dessous illustre la table de vérité de l'opération de soustraction réalisée par l'élément de base 1 12 d'addition/soustraction ainsi conçu.

En variante, le processeur de traitement de données 80 représenté schématiquement sur la figure 7 peut être conçu comme illustré sur la figure 12. Dans cette variante de réalisation, un opérateur papillon 82' à architecture en pipeline comporte les mêmes éléments 36, 38, R4, R5, 40', 42', 48' et 50' que l'opérateur papillon 82 décrit précédemment en référence à la figure 7. En revanche, selon un perfectionnement possible de l'invention, il diffère de l'opérateur papillon 82 en ce que les registres (ou bascules synchrones) R1 , R2, R3, R6, R7 sont remplacés par des éléments de mémoire à registre escamotable, que nous désignerons par la suite en tant que « verrous synchrones » (leur fonctionnement sera détaillé ultérieurement dans la description) L1 , L2, L5 et L6. Plus précisément, le registre R1 est supprimé, le registre R2 est remplacé par le verrou synchrone L1 , le registre R3 est remplacé par le verrou synchrone L2, le registre R6 est remplacé par le verrou synchrone L5 et le registre R7 est remplacé par le verrou synchrone L6. Les deux registres R8 et R9 ainsi que le multiplexeur 44 sont également remplacés par un seul verrou synchrone L3. Également, les deux registres R10 et R1 1 et le multiplexeur 46 auquel ils sont reliés sont remplacés par un seul verrou synchrone L4. On notera par ailleurs que la sortie S1 est prise en sortie du verrou synchrone L5 et que la sortie S4 est prise en sortie du verrou synchrone L6, les sorties S2 et S3 restant inchangées.

En outre, le multiplexeur 84 est remplacé par un multiplexeur 84" dont l'une des deux entrées est reliée à la sortie du verrou synchrone L4 et l'autre à la sortie du verrou synchrone L5. La sortie du multiplexeur 84" est reliée à l'une des entrées du module matériel d'addition/soustraction 50'. Comme le multiplexeur 84 qu'il remplace, le multiplexeur 84" est configurable pour que l'opérateur papillon 82' puisse être utilisé soit en configuration de calcul de FFT, soit en configuration de calcul de métriques de branches d'un algorithme de décodage canal, soit en configuration de calcul de métriques de chemins et de survivants d'un algorithme de décodage canal. Il est donc également représenté en grisé.

Enfin, selon un autre perfectionnement possible de l'invention, un multiplexeur

120 à trois entrées, pour la sélection d'une unique sortie S'i parmi les trois sorties précitées S1 , S3 et S4, est placé en sortie du verrou synchrone L5 (pour S1 ), du verrou synchrone L6 (pour S4) et du module matériel d'addition/soustraction 50' (pour S3). L'opérateur papillon 82' présente ainsi deux sorties : la sortie S'i introduite par le multiplexeur 120 et une sortie S' 2 correspondant à la sortie S2 déjà mentionnée du module matériel d'addition/soustraction 48'. Le multiplexeur 120 est lui aussi représenté en grisé parce qu'il est également configurable pour que l'opérateur papillon 82' puisse être utilisé soit en configuration de calcul de FFT, soit en configuration de calcul de métriques de branches d'un algorithme de décodage canal, soit en configuration de calcul de métriques de chemins et de survivants d'un algorithme de décodage canal.

Par analogie avec la configuration des opérateurs 10' et 82 des figures 3, 7 et 8, il peut être considéré que l'opérateur papillon 82' de la figure 12 comporte ainsi :

- un premier étage de multiplication complexe comprenant :

• à un premier niveau séquentiel de multiplications réelles : les deux verrous synchrones L1 , L2 et les deux modules matériels de multiplication réelle 36, 38,

• à un second niveau séquentiel d'addition/soustraction réelles : les deux registres R4, R5 et les deux modules matériels d'addition/soustraction

40', 42' ; et

- un second étage d'addition/soustraction complexes et de sélection d'au moins une sortie comprenant les quatre verrous synchrones L3, L4, L5, L6, les deux multiplexeurs 84", 120 et les deux modules matériels d'addition/soustraction 48', 50'.

L'utilisation des verrous synchrones L1 , L2, L3 L4, L5 et L6 dans l'opérateur papillon 82' à la place des registres R1 , R2, R3, R6, R7, R8, R9, R10 et R1 1 dans l'opérateur papillon 82 et l'introduction de la sélection de la sortie S'i de l'opérateur papillon 82' imposent des modifications dans les séquencements des calculs par rapport à ceux de l'opérateur papillon 82.

Chaque verrou synchrone au sens de l'invention comporte une entrée EV, un registre, un multiplexeur et une sortie SV. Le registre est disposé entre l'entrée du verrou synchrone EV et l'une des entrées du multiplexeur. Plus précisément, le multiplexeur présente deux entrées, l'une recevant directement l'entrée du verrou synchrone EV, l'autre la recevant indirectement via le registre. En outre, le multiplexeur est commandé par un signal de contrôle CV lui permettant de choisir en sortie du verrou synchrone SV entre l'entrée du verrou synchrone EV et la sortie du registre. Ainsi, lorsque le signal de contrôle CV vaut « 1 », la valeur du signal d'entrée EV est recopiée en sortie SV. Lorsque le signal de contrôle CV vaut « 0 », la valeur courante de la sortie SV est maintenue. Dans ce dernier cas, le verrou synchrone se comporte comme un registre.

Dans cet exemple de réalisation, les verrous synchrones L1 , L2 du premier niveau séquentiel du premier étage de multiplication complexe sont commandés par un signal de contrôle CV1 différent d'un autre signal de contrôle CV2 qui commande les verrous synchrones L3, L4, L5 et L6 du second étage d'addition et soustraction complexes.

Dans cet exemple également, tous les modules matériels d'addition/soustraction 40', 42', 48' et 50' du processeur de traitement de données 80 sont configurables à l'aide du paramètre programmable « cmd » pour la sélection de la dynamique maximale des modules matériels d'addition/soustraction 40', 42', 48' et 50' lorsque l'opérateur papillon 82' est dans sa configuration de calcul de transformée de Fourier rapide et pour la sélection de la dynamique minimale des modules matériels d'addition/soustraction 40', 42', 48' et 50' lorsque l'opérateur papillon 82' est dans sa configuration de calcul de métriques d'une implémentation d'un algorithme de décodage canal.

Selon la première configuration FFT de l'opérateur papillon 82', l'ensemble A de paramètres est fourni en entrée des verrous synchrones L1 , L2, L3, L4 et des multiplieurs 36, 38 du processeur 80. Plus précisément, les paramètres c, d sont fournis en entrée des multiplieurs 36, 38, les paramètres b, f en entrée des verrous synchrones L1 , L3 et les paramètres a, e en entrée des verrous synchrones L2, L4. Le multiplexeur 84" est configuré pour fournir la valeur de la sortie du verrou synchrone L4 en entrée du module matériel d'addition/soustraction 50'. Le module matériel d'addition/soustraction 42' est configuré en soustracteur et le module matériel d'addition/soustraction 40' en additionneur. Les deux modules matériels d'addition/soustraction 48' et 50' sont configurés pour basculer d'additionneur en soustracteur et inversement à chaque cycle d'horloge. Enfin, le multiplexeur 120 est configuré pour fournir la sortie S3 du module matériel d'addition/soustraction 50' en sortie S'-, .

Lors d'un premier cycle d'horloge, la valeur du signal de contrôle CV1 étant égale à « 1 », les valeurs b et a en entrée des verrous synchrones L1 et L2 sont recopiées en sortie des verrous synchrones L1 et L2 respectivement, et par conséquent en entrée des multiplieurs 36 et 38 permettant à ceux-ci de fournir les résultats bc et ac aux registres R4 et R5 respectivement.

Lors d'un deuxième cycle d'horloge, la valeur du signal de contrôle CV1 étant égale à « 0 », les valeurs b et a en sortie des verrous synchrones L1 et L2 sont maintenues. Les multiplieurs 36 et 38 fournissent ainsi les résultats bd et ad aux registres R4 et R5 respectivement. Le module 42' configuré en soustracteur fournit le résultat ac-bd au verrou synchrone L6. En même temps, le module 40' configuré en additionneur fournit le résultat bc+ad au verrou synchrone L5. La valeur du signal de contrôle CV2 des verrous synchrones L3, L4, L5 et L6 étant égale à « 1 », les valeurs en entrée de ces verrous synchrones sont recopiées en sortie. Ainsi, le module 50' configuré en additionneur reçoit la donnée ac-bd du verrou synchrone L6 et la variable e du verrou synchrone L4 et fournit la partie réelle e+(ac-bd), notée FFt-ReO. Le module 48' configuré en additionneur reçoit la donnée bc+ad du verrou synchrone L5 et la variable f du verrou synchrone L3 et fournit la partie imaginaire f+( bc+ad), notée FFt-lmO.

Lors d'un troisième cycle d'horloge, la valeur du signal de contrôle CV2 des verrous synchrones L3, L4, L5 et L6 étant égale à « 0 », les valeurs en sortie de ces verrous synchrones sont maintenues. Ainsi, le module 50' configuré en soustracteur recevant la donnée ac-bd du verrou synchrone L6 et la variable e du verrou synchrone L4 fournit la partie réelle e-(ac-bd), notée FFt-Re1 . Le module 48', configuré en soustracteur, recevant la donnée bc+ad du verrou synchrone L6 et la variable f du verrou synchrone L3 fournit la partie imaginaire, f-(bc+ad) notée FFt- Im1 .

Le multiplexeur 120 étant configuré pour fournir la sortie S3 en sortie S'i , celle-ci fournit les résultats successifs FFt-ReO et FFt-Re1 . La sortie S' 2 fournit les résultats successifs FFt-lmO et FFt-lm1 . On remarque que dans cette première configuration, toutes les ressources du processeur 80 sont effectivement utilisées.

Selon la deuxième configuration BMC de l'opérateur papillon 82', l'ensemble B de paramètres est fourni en entrée des verrous synchrones L1 , L2, L3, L4 et des multiplieurs 36 et 38 du processeur 80. Plus précisément, l'élément neutre « 1 » de la multiplication est fourni en entrée des multiplieurs 36 et 38, les valeurs successives x, « 0 » en entrée des verrous synchrones L1 , L3 et les valeurs successives y, « 0 » en entrée des verrous synchrones L2, L4. La valeur « 1 » fournie en entrée des multiplieurs 36 et 38 permet d'escamoter les multiplications. Le multiplexeur 84" est configuré pour fournir la sortie du verrou synchrone L4 en entrée du module matériel d'addition/soustraction 50'. Le module matériel d'addition/soustraction 42' est configuré en soustracteur et le module matériel d'addition/soustraction 40' en additionneur. Les deux modules matériels d'addition/soustraction 48' et 50' sont configurés pour basculer d'additionneur en soustracteur et inversement à chaque cycle d'horloge. Enfin, le multiplexeur 120 est configuré pour fournir la sortie S3 du module matériel d'addition/soustraction 50' en sortie S'i

Lors d'un premier cycle d'horloge, la valeur du signal de contrôle CV1 étant égale à « 1 », les valeurs x et y en entrée des verrous synchrones L1 et L2 sont recopiées en sortie des verrous synchrones L1 et L2 respectivement, et par conséquent en entrée des registres R4 et R5.

Lors d'un deuxième cycle d'horloge, la valeur du signal de contrôle CV1 étant égale à « 0 », les valeurs x et y en sortie des verrous synchrones L1 et L2 sont maintenues. De cette façon, le module 42' configuré en soustracteur peut fournir en sortie le résultat x-y. En même temps, le module 40' configuré en additionneur peut fournir en sortie le résultat x+y. La valeur du signal de contrôle CV2 étant égale à « 1 », les résultats des modules 40' et 42' sont recopiés en sortie des verrous synchrones L5 et L6. La valeur « 0 » en sortie des verrous synchrones L3 et L4 est fournie aux modules 48' et 50' de sorte que ces derniers configurés en additionneurs fournissent les résultats x+y et x-y respectivement.

Lors d'un troisième cycle d'horloge, la valeur du signal de contrôle CV2 étant égale à « 0 », les résultats x+y et x-y des modules 40' et 42' respectivement sont maintenus en sortie des verrous synchrones L5 et L6. La valeur « 0 » est également maintenue en sortie des verrous synchrones L3 et L4 et est fournie aux modules 48' et 50' de sorte que ces derniers configurés en soustracteurs fournissent les résultats -x-y et -x+y respectivement.

Ainsi, la sortie S'i fournit la valeur de la sortie observée sur S3 pour le résultat x-y = Bm01 et -x+y = Bm1 1 séquentiellement. La sortie S' 2 fournit les valeurs observées sur S2 pour le résultat x+y = BmOO et -x-y = Bm10 séquentiellement.

Selon la troisième configuration ACS de l'opérateur papillon 82', l'ensemble C de paramètres est fourni en entrée des verrous synchrones L1 , L2, L3, L4 et des multiplieurs 36 et 38 du processeur 80. Le multiplexeur 84" est configuré pour fournir la sortie du verrou synchrone L5 en entrée du module matériel d'addition/soustraction 50'. Les modules matériels d'addition/soustraction 40' et 42' sont configurés en additionneurs. Le module matériel d'addition/soustraction 50' est configuré en soustracteur. Enfin, le multiplexeur 120 est configuré pour commuter entre la sortie S3 du module matériel d'addition/soustraction 50', la sortie S1 du verrou synchrone L5 et la sortie S4 du verrou synchrone L6 en sortie S'i en fonction des observations souhaitées.

L'ensemble C de paramètres fournis au processeur 80 contient :

- l'élément neutre « 1 » de la multiplication pour les multiplieurs 36 et 38, les valeurs successives P0, Bm10 pour les verrous synchrones L1 , L3 et P1 , BmOO pour les verrous synchrones L2, L4 (ensemble C1 ), ou - l'élément neutre « 1 » de la multiplication pour les multiplieurs 36 et 38, les valeurs successives PO, Bm1 1 pour les verrous synchrones L1 , L3 et P1 , Bm01 pour les verrous synchrones L2, L4 (ensemble C2).

Cette troisième configuration permet de nouveau d'escamoter les multiplications des modules 36 et 38 grâce à la valeur « 1 » fournie en entrée de ces modules. Les ensembles C1 et C2 sont fournis successivement en entrée des verrous synchrones L1 et L2.

Ainsi, lors d'un premier cycle d'horloge, la valeur du signal de contrôle CV1 étant égale à « 1 », les valeurs PO et P1 en entrée des verrous synchrones L1 et L2 sont recopiées en sortie des verrous synchrones L1 et L2 respectivement et par conséquent en entrée des registres R4 et R5.

Lors d'un deuxième cycle d'horloge, la valeur du signal de contrôle CV1 étant à nouveau égale à « 1 », les valeurs Bm10 et BmOO en entrée des verrous synchrones L1 et L2 (lorsque l'ensemble C1 est fourni en entrée) sont recopiées en sortie des verrous synchrones L1 et L2 respectivement et par conséquent en entrée des registres R4 et R5. Le résultat P0+Bm00 est obtenu en sortie du module d'addition/soustraction 40' configuré en additionneur et le résultat P1 +Bm10 est obtenu en sortie du module 42' également configuré en additionneur. La valeur du signal de contrôle CV2 étant égale à « 1 », les résultats des modules 40' et 42' sont recopiés en sortie des verrous synchrones L5 et L6. Ces résultats sont ensuite fournis en entrée du module 50' grâce au multiplexeur 84" qui sélectionne en sortie l'entrée correspondant à la valeur du verrou synchrone L5. Le module 50' configuré en soustracteur permet de soustraire ces résultats entre eux pour obtenir le résultat P0+Bm00 - (P1 +Bm10) en sortie S3. Ce résultat est maintenu en sortie S3 lors d'un troisième cycle d'horloge, la valeur du signal de contrôle CV2 étant égale à « 0 ».

Successivement, lorsque l'ensemble C2 est fourni en entrée, le résultat P0+Bm01 est obtenu en sortie du module d'addition/soustraction 42', configuré en additionneur, et P1 +Bm1 1 est obtenu en sortie du module 40' également configuré en additionneur. Grâce au multiplexeur 84", ces résultats fournis par les modules 40' et 42' sont ensuite soustraits entre eux par le module 50' configuré en soustracteur pour obtenir le résultat P0+Bm01 - (P1 +Bm1 1 ) en sortie S3.

Dans cette troisième configuration, les deux sorties intermédiaires S4 et S1 sont également observées pour les résultats intermédiaires P0+Bm00 et P1 +Bm10 respectivement lorsque l'ensemble C1 est fourni en entrée. Les mêmes sorties intermédiaires S4 et S1 sont observées respectivement pour les résultats P0+Bm01 et P1 +Bm1 1 lorsque l'ensemble C2 est fourni en entrée. Grâce à la présence et aux commutations du multiplexeur 120, seule la sortie S'i est concrètement observée, successivement :

- pour les résultats P0+Bm00 (sortie S4), P1 +Bm10 (sortie S1 ) et P0+Bm00 - (P1 +Bm10) (sortie S3) lorsque C1 est fourni en entrée, et

- pour les résultats P0+Bm01 (sortie S4), P1 +Bm1 1 (sortie S1 ) et P0+Bm01 - (P1 +Bm1 1 ) (sortie S3) lorsque C2 est fourni en entrée.

Dans cette variante de réalisation, l'utilisation des verrous synchrones L1 , L2, L3 L4, L5 et L6 à la place des registres R1 , R2, R3, R6, R7, R8, R9, R10 et R1 1 permet avantageusement de gagner un cycle d'horloge par rapport aux variantes de réalisation illustrées sur les figures 7 et 8 lors des calculs effectués par l'opérateur papillon 82' soit en configuration de calcul de FFT soit en configuration de calcul de métriques d'un algorithme de décodage canal.

En outre, l'utilisation des additionneurs/soustracteurs 40', 42' dans les variantes de réalisation illustrées sur les figures 7, 8 et 12 à la place de l'additionneur 40 et du soustracteur 42 de l'opérateur papillon 10' introduit un degré de liberté supplémentaire dans le séquencement des calculs à effectuer par le processeur 80.

A titre d'exemple, lorsque l'opérateur papillon 82' de la figure 12 est dans sa configuration de calcul de métriques de branches BMC, la configuration des modules 40' et 42' peut être modifiée de façon à obtenir les résultats BmOO, Bm01 , Bm10 et Bm1 1 sur des sorties différentes.

Ainsi, le module 40' peut être configuré en soustracteur et fournir à sa sortie le résultat x-y. Le module 42' est alors en conséquence configuré en additionneur et fournit en sortie le résultat x+y. Lorsque la valeur « 0 » est fournie aux modules 48' et 50', ces derniers configurés en additionneurs fournissent les résultats x-y et x+y respectivement et configurés en soustracteurs fournissent les résultats -x+y et -x-y respectivement. La sortie S'i fournit séquentiellement la valeur de la sortie observée sur S3 pour les résultats x+y = BmOO et -x-y = Bm10. La sortie S' 2 fournit séquentiellement les valeurs observées sur S2 pour les résultats x-y = Bm01 et -x+y = Bm1 1 séquentiellement. On peut observer que les résultats sur les sorties S'i et S' 2 sont simplement inversés par rapport aux résultats obtenus lorsque le module 40' est configuré en additionneur et le module 42' en soustracteur.

Il apparaît clairement que le processeur de traitement de données 80 décrit précédemment est configurable à l'aide d'au moins un paramètre pour effectuer un calcul de FFT dans sa première configuration, un calcul de métriques de branches d'une implémentation d'un algorithme de décodage canal dans sa deuxième configuration et un calcul de métriques de chemins et de survivants d'une implémentation d'un algorithme de décodage canal dans sa troisième configuration. Le basculement d'une configuration à l'autre est très simple à réaliser dans les exemples détaillés précédemment, et en particulier dans l'exemple de la figure 12 par paramétrisation des modules d'addition/soustraction 40', 42', 48', 50', du multiplexeur 120 et des liens possibles entre le module 50' et les éléments L4 et L5 (grâce à une paramétrisation du multiplexeur 84").

Par ailleurs, la dynamique des opérandes devant être utilisés pour effectuer les calculs de FFT étant généralement supérieure à celle nécessaire aux traitements d'un algorithme de décodage canal, les modules matériels d'addition/soustraction 40', 42' 48', 50' de ce processeur 80 sont aussi avantageusement configurables à l'aide d'au moins un paramètre programmable pour la sélection de leur dynamique maximale lors du calcul de FFT et de leur dynamique minimale lors des calculs de métriques de l'algorithme de décodage canal. Une parallélisation des calculs de décodage canal permettant de les accélérer est ainsi rendue possible sans surcoût en termes de nouveaux opérateurs.

Le fait de pouvoir paramétrer les trois configurations précitées ainsi que la dynamique des opérandes effectuant les calculs pour chacune de ces configurations permet d'optimiser la taille et l'utilisation d'un microprocesseur implémentant une pluralité de tels opérateurs papillons reconfigurables. Au final, c'est une meilleure répartition des ressources selon les besoins des standards ciblés qui est assurée.

Enfin, compte tenu de la variabilité de la performance des technologies microélectroniques, il est avantageux de proposer des processeurs de base les plus réguliers possible. En effet, il est alors envisageable d'implanter de tels processeurs en surnombre dans une architecture redondante et de les configurer a posteriori en fonction des performances ou des pannes éventuelles de chacun de ces processeurs.

Par conséquent, un processeur de traitement de données 80 tel que celui décrit précédemment est avantageusement intégré dans un dispositif de télécommunication 122 à modulation/démodulation multi porteuses des signaux émis/reçus et à décodage de signaux traités par un code convolutif comme illustré sur la figure 13. On note que le processeur 80 peut comporter une pluralité d'opérateurs papillons reconfigurables 82i , 82 n ou 82Ί , 82' n tels que les opérateurs 82 ou 82' décrits précédemment. Le dispositif 122 illustré sur la figure 13 est plus précisément un terminal de télécommunication, mais l'invention peut bien sûr être mise en œuvre dans d'autres types de dispositifs de télécommunication tels qu'une station de base d'un réseau de télécommunication, un modem, un décodeur sans fil ou un équipement de télécommunication de type CPE (de l'Anglais « Customer Premises Equipment »).

Les applications de ce processeur de traitement à deux modes de fonctionnement FFT et décodage canal sont multiples que ce soit pour un dispositif à norme unique ou pour un dispositif multi-norme. En effet, beaucoup de normes mettent par exemple en œuvre une modulation OFDM (calcul de FFT) et nécessitent un décodage canal de code convolutif (par exemple l'algorithme de Viterbi), parmi lesquels :

- la radiodiffusion numérique terrestre DAB,

- la télédiffusion numérique terrestre (DVB-T, DVB-H),

- la radiodiffusion numérique terrestre T-DMB,

- la radiodiffusion numérique DRM,

- les liaisons filaires : ADSL, VDSL, modem sur courant porteur (Homeplug), modem câble (norme Docsis),

- les réseaux sans-fils basés sur les normes 802.1 1 a, 802.1 1 g (Wi-Fi), 802.16 (WiMAX) et HiperLAN,

- les réseaux mobiles de nouvelle génération (4G).

Cette liste n'est bien sûr pas exhaustive puisque la quasi-totalité des normes actuelles ou à l'étude utilise une modulation OFDM et/ou un décodage canal de code convolutif.

En outre, des travaux récents ont montré que la FFT pouvait être appliquée à des opérations plus diversifiées qu'une simple modulation. Notamment, elle peut être utilisée pour des calculs de corrélation, la genèse de filtres de type FIR, l'estimation de canal ou la détection de plusieurs utilisateurs. De plus, il a été montré que la structure en Radix-2 peut être facilement utilisée comme structure de base pour réaliser d'autres types de Radix. De même, l'algorithme de Viterbi a lors d'études passées été étendu au décodage des Turbos Codes.

Ainsi, l'architecture commune FFT/décodage canal proposée peut être utilisée par une majorité des fonctions de dispositifs de télécommunication et ne se restreint pas aux seuls blocs de décodage canal et de modulation/démodulation.

On notera par ailleurs que l'invention n'est pas limitée aux modes de réalisation décrits précédemment. Il apparaîtra en effet à l'homme de l'art que diverses modifications peuvent être apportées aux modes de réalisation décrits ci- dessus, à la lumière de l'enseignement qui vient de lui être divulgué. Les modules matériels d'addition/soustraction configurables selon l'invention peuvent également être utilisés notamment dans le processeur de traitement de données décrit dans la demande de brevet européen publiée sous le numéro EP 2507720. Dans les revendications qui suivent, les termes utilisés ne doivent pas être interprétés comme limitant les revendications aux modes de réalisation exposés dans la présente description, mais doivent être interprétés pour y inclure tous les équivalents que les revendications visent à couvrir du fait de leur formulation et dont la prévision est à la portée de l'homme de l'art en appliquant ses connaissances générales à la mise en œuvre de l'enseignement qui vient de lui être divulgué.