FR 2789245 A1 20000804 FR 9900954 A 19990128 ! La présente invention est relative à un circuit électronique de calcul programmable basé sur l'arithmétique dite "en ligne". L'arithmétique en ligne est une technique de calcul qui permet un traitement sériel des nombres en les présentant selon ce qu'il est convenu d'appeler un "système redondant". Cette technique de calcul a été décrite notamment par Jean-Michel Muller dans un ouvrage intitulé "On-line Computing. A Survey and Some New Results", Algorithms and Parallel VLSI Architectures II, Elsevier Science Publishers, 1992. Cette technique de calcul a l'avantage d'éviter les reports (notamment dans les additions) et de rendre le calcul nettement plus rapide et simplifié. Les circuits FPGA (acronyme anglais pour "Field- Programmable Gate Array"), apparus ces dernières années, présentent l'inconvénient de nécessiter, pour leur programmation, un travail long et complexe et, par suite, coûteux. L'invention a pour but de fournir un circuit électronique de calcul plus simple et plus souple d'utilisation que les circuits mentionnés ci-dessus, tout en permettant d'effectuer des calculs sur des fonctions mathématiques les plus diverses, qu'elles soient de type linéaire ou de type non linéaire. L'invention a donc pour objet un circuit électronique de calcul programmable basé sur l'arithmétique dite en ligne, caractérisé en ce qu'il comprend: - au moins une matrice de cellules dont chaque cellule est conçue pour effectuer au moins une fonction de calcul sur des opérandes en ligne qui lui sont appliqués, - des moyens programmables pour, d'une part, configurer chaque cellule pour former un opérateur de calcul donné à appliquer aux opérandes et pour, d'autre part, assurer l'interconnexion des cellules pour les configurer en matrice pour une fonctionnalité de calcul donnée, et - des moyens de transfert pour assurer le transfert des opérandes et des résultats des calculs effectués par lesdites cellules, d'une part, entre lesdites cellules et, d'autre part, entre ladite matrice et au moins une entrée ou une sortie dudit circuit. Il résulte de ces caractéristiques non seulement une simplicité de structure du circuit, mais également des possibilités de programmation nettement plus aisées qu'il n'était possible d'obtenir avec les circuit FPGA de la technique antérieure. Ces propriétés favorables du circuit de l'invention sont dues, en premier lieu, au traitement en ligne des opérandes et des résultats intermédiaires de calcul et, en second lieu, au fait que les cellules sont conçues pour assurer, chacune, une ou plusieurs fonctionnalités de calcul. Selon d'autres caractéristiques de l'invention: - ladite première matrice comprend une pluralité de cellules identiques dont chacune présente des fonctionnalités de multiplication et de sommation; - chaque cellule de ladite première matrice comprend un réseau de bus comportant un jeu de bus pour le transfert des opérandes et un jeu de bus pour véhiculer des signaux de commande destinés à configurer la cellule et, ledit réseau de bus communique avec les autres cellules de ladite première matrice par l'intermédiaire de deux interfaces d'interconnexion propres à cette cellule; - chaque cellule de ladite première matrice comprend un bloc multiplieur et un bloc sommateur, un bloc de prétraitement de données destiné à introduire un retard programmable sur les opérandes pour compenser le cas échéant les délais en ligne subis par les opérandes dans lesdits blocs multiplieur et sommateur, et un bloc de normalisation connecté à la sortie du bloc sommateur pour la remise en forme des résultats des calculs effectués dans ce bloc sommateur, et/ou effectuer des comparaisons sur ces résultats et/ou en fixer les limites maximum et minimum; - une seconde desdites matrices comprend une pluralités de cellules agencées pour effectuer des calculs de fonctions non-linéaires; ladite seconde matrice comprend un premier groupe de cellules identiques pour le calcul d'opérations non linéaires comme la division et le calcul de la racine carrée, et un second groupe de cellules identiques destinées respectivement à assurer une approximation polynominale et à réaliser le calcul d'algorithmes à base d'addition et de décalages, et un jeu de bus est prévu dans ladite seconde matrice pour véhiculer des signaux de commande destinés à configurer lesdites cellules, ledit réseau de bus communiquant avec les autres cellules de ladite seconde matrice par l'intermédiaire d'une pluralité d'interfaces d'interconnexion propres à chaque cellule. D'autres caractéristiques et avantages de la présente invention apparaîtront au cours 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 est un schéma symbolique général d'un circuit selon l'invention pour le calcul sur des opérandes en ligne; - la figure 2 montre le schéma d'un bloc de conversion numérique/numérique redondant permettant de former des opérandes en ligne; - la figure 3 est un schéma global d'une matrice de calcul de fonctions linéaires; - la figure 4 montre plus en détail la structure d'une cellule de la matrice de la figure 3, ainsi que les bus permettant de la connecter dans la matrice; - la figure 5 est une schéma d'un bloc de prétraitement appartenant à une cellule de calcul de fonctions linéaires de la figure 4; - les figures 6 à 8 montrent les schémas général et de détail d'un bloc multiplieur utilisé dans chaque cellule du circuit de l'invention; - la figure 9 représente la structure du bloc sommateur de chaque cellule du circuit selon l'invention; - la figure 10 est un schéma montrant la structure d'un bloc de normalisation utilisé dans chaque cellule du circuit selon l'invention; - la figure 11 est un schéma général de la matrice de calcul des fonctions non linéaires du circuit selon l'invention: - les figures 12 à 22 montrent le détail des blocs de la fig. 11; - la figure 23 montre un schéma du bloc d'horloges programmables utilisé dans le circuit de calcul selon l'invention; - la figure 24 montre un schéma d'un bloc de compteurs de programme utilisé dans le circuit de calcul selon l'invention; - la figure 25 est un schéma d'un bloc de conversion numérique redondant/analogique utilisé dans le circuit selon l'invention; et - la figure 26 est un schéma d'un bloc de conversion numérique redondant/numérique utilisé dans le circuit de calcul de l'invention. L'exemple de réalisation de l'invention, que l'on va décrire ci-après, est de préférence réalisé sur une seule puce de circuit intégré, dont la topographie générale est représentée sur la figure 1. Ce circuit comprend des moyens d'entrée pour introduire de l'information, ces moyens comportant: - un ensemble de blocs 30 (tels que décrits dans la thèse de B. Ginetti, intitulée "CMOS RSD Cyclic A-to-D Converters" et publiée par l'Université Catholique de Louvain en mars 1992) de conversion analogique/numérique redondant permettant de convertir des données d'entrée analogiques en des opérandes selon l'arithmétique en ligne; - un ensemble de blocs 35 de conversion numérique/numérique redondant pour convertir des données se présentant sous forme numérique en des données selon l'arithmétique en ligne; - un ensemble de plots d'entrée 50E permettant l'interfaçage direct avec des circuits capables de fournir des nombres en codage redondant. Le circuit selon l'invention comporte également des moyens de calcul des fonctions mathématiques à appliquer à l'information d'entrée. Ces moyens de calcul sont répartis en deux matrices 10 et 20. La première matrice 10 est destinée au calcul des fonctions linéaires et la seconde matrice 20 est chargée de calculer des fonctions non linéaires. Le circuit selon l'invention comprend également des moyens de génération des signaux d'horloge programmables 70 et des compteurs de programme 80 nécessaires pour synchroniser tous les opérateurs travaillant en parallèle. Par ailleurs, il est prévu des moyens de sortie de l'information composés d'un ensemble de blocs 40 de conversion numérique redondant/analogique, un ensemble de blocs 45 de conversion numérique redondant/numérique et un ensemble de plots de sortie 50S permettant l'interfaçage direct avec des circuits capables de recevoir des nombres en codage redondant. La figure 2 représente un bloc 35 de conversion numérique/numérique redondant. La fonction de ce bloc est de fournir séquentiellement, à partir d'un nombre qui est appliqué, soit en parallèle sur des lignes 350 à 358, soit en série sur une ligne 359, un code redondant sortant sur une sortie 388 qui correspond à ce nombre. La sortie 388 est un ensemble de lignes permettant d'engendrer un codage série, chiffre à chiffre avec les poids forts en tête, de la valeur se trouvant sur les lignes d'entrées 350 à 358 ou 359. Selon la base choisie du système de numération et le codage utilisé, l'ensemble de lignes 388 peut comporter 3, 4 ou 5 fils par chiffre, voire davantage. Comme indiqué sur la figure 2, une ligne 369 pilote des multiplexeurs d'entrée 360 à 368. Cette ligne 369 permet ainsi de faire le choix entre une entrée série appliquée sur la ligne 359 et une entrée parallèle appliquée sur les lignes 350 à 358. La ligne 369 commande également un bloc 382 qui détermine le chargement de plusieurs verrous 371 à 378. Ce bloc 382 reçoit en entrée, les signaux des lignes 369 et 379 et fournit en sortie huit lignes de commande de chargement des verrous 371 à 378. Si l'entrée est parallèle, la ligne 369 est active de sorte que les huit signaux de commande sont actifs simultanément. Si l'entrée est en série, la ligne 369 est inactive. La ligne 379 porte le signal d'horloge qui est distribué successivement aux différents verrous. Dans un cas comme dans l'autre, le format du nombre entré (en série ou parallèle) peut être: - codé en binaire standard ou en complément à deux; il est alors stocké dans les verrous 371 à 378 et le verrou 370 n'est pas utilisé. Tous les verrous sont initialisés par la commande de remise à zéro portée par la ligne 381; ou - codé sous la forme d'une valeur absolue et d'un signe; dans ce cas, la valeur absolue est stockée dans les verrous 371 à 378 et le signe est stocké dans le verrou 370. Ce verrou dispose de son propre signal de chargement porté par la ligne 380. La sortie de ce verrou 370 active, dans le bloc 387, la logique de génération du signe pour le premier chiffre non nul présent dans la valeur absolue. Les sorties des verrous 371 à 378 sont multiplexées à travers des multiplexeurs 383 et 384 dont les sorties sont appliquées à un bloc 387 de codage redondant. Les multiplexeurs 383 et 384 sont commandés par deux lignes 385 et 386 qui permettent de sélectionner correctement les valeurs provenant des verrous 371 à 378. Ces deux lignes 385 et 386 permettent de sélectionner des paires de verrous pour le codage, en commençant soit par les verrous 371 et 372 et en finissant par les verrous 377 et 378, soit l'inverse. Il est ainsi possible d'accepter en entrée, des nombres ayant en tête soit le poids fort, soit le poids faible. La figure 2 montre un cas particulier d'implémentation pour un codage en base 4, pour lequel les chiffres sont pris par paires, ce qui fixe le nombre de verrous, la taille des multiplexeurs et le nombre d'entrées du bloc de codage. Pour d'autres bases et d'autres codages du chiffre, ces éléments seraient différents. On va maintenant décrire en détail la matrice 10 de calcul des fonctions linéaires dont la figure 3 représente le schéma d'ensemble. Elle est composée d'une matrice de cellules identiques 100 permettant le calcul des fonctions linéaires. Les cellules sont alimentées par deux types de bus: les bus qui transportent les opérandes et les bus qui transportent les signaux de commande. Ceux-ci permettent de synchroniser les différentes phases de calcul entre elles, de sélectionner des horloges locales et de démarrer les calculs pour chaque cellule. La figure 3 montre en particulier le système de communication des opérandes qui permet d'appliquer des valeurs sur les quatre côtés et d'accéder individuellement à chacune des cellules. Il est également possible de regrouper les blocs par deux, par trois, par quatre, etc. jusqu'à disposer d'une suite de seize blocs successifs. Sur la figure 3, seuls les bus des données sont représentés. Les bus de commande forment un réseau régulier de deux bus de 16 fils, qui pénètrent dans chaque cellule. Dans chaque cellule, des bits de programmation permettent d'activer un multiplexeur sélectionnant le ou les signaux de commande nécessaires au fonctionnement de la cellule. Le nombre des signaux nécessaires dépend de la cellule elle-même. La figure 4 montre la structure globale de chacune des cellules 100 de la figure 3 ainsi que le détail de l'interconnexion des bus internes et externes d'une telle cellule. Deux boîtes ou interfaces d'interconnexions 150 (dont l'une est détaillée en bas de la figure) sont situées dans les angles supérieur gauche et inférieur droit de la cellule pour permettre d'appliquer quatre fois huit bus d'opérandes et de faire sortir quatre fois huit autres bus d'opérandes. Comme le montre le détail de la figure 4, pour 2 fois seize bus 151 en entrée, seize multiplexeurs 152 sont commandés chacun par un registre programmable 153 de cinq bits. Ce registre permet de sélectionner un bus pour le connecter vers l'un des bus internes d'entrée 154. De même en sortie, seize multiplexeurs 155 sont commandés chacun par un registre programmable 156 de cinq bits. Ce registre 156 permet de sélectionner un bus 157 pour le connecter vers l'un des bus externes en sortie 158. Le bloc 100 reçoit, par un multiplexeur 160, les signaux de seize bus provenant soit de huit des seize bus d'entrée (161), soit de huit des seize bus de sortie (162); ceci permet de former des boucles à l'intérieur d'un bloc. Le bloc 100 reçoit également, par l'intermédiaire d'un multiplexeur 170, les signaux de seize bus provenant soit des huit autres bus d'entrée (171), soit de huit autres bus de sortie (173). En sortie, le bloc 100 envoie des signaux sur huit bus par sa sortie supérieure vers le bus (162) et sur huit autres bus par sa sortie inférieure vers le bus (172). Le bloc de calcul des fonctions linéaires 100 est composé de quatre sous-blocs, soit un bloc de pré- traitement 110 (figure 5), un bloc multiplieur 120 (figure 6), un bloc sommateur 130 (figure 9) et un bloc de normalisation 140 (figure 10). Le bloc multiplieur 120, moyennant une multiplication par une constante ou une multiplication de deux variables ou opérandes, calcule des produits partiels. Les résultats obtenus par le bloc multiplieur (produits intermédiaires) sont sommés dans le bloc sommateur 130. Le bloc de normalisation 140 permet de remettre en forme les nombres qui sortent des sommateurs pour pouvoir les ré-injecter dans une autre cellule ou les sortir du circuit. Ce bloc de normalisation 140 permet également d'effectuer les comparaisons et de déterminer les opérandes minimum et maximum. Le bloc de pré-traitement est utilisé pour synchroniser les nombres au début des calculs. En effet, les nombres peuvent provenir, soit des entrées, soit d'une cellule, soit d'une suite de cellules. Selon le temps de latence nécessaire à chaque cellule, appelé "délai en ligne", les nombres (poids forts en tête) peuvent arriver pendant des cycles différents. Il est donc nécessaire de retarder ceux qui arrivent trop vite pour que les opérations se déroulent correctement, ce que réalise ce bloc de pré-traitement 110. La fonction du bloc de pré-traitement 110 consiste donc à introduire un retard programmable sur les variables, les constantes ou les résultats des calculs afin de synchroniser le début des opérations devant suivre des chemins n'ayant pas le même retard en ligne. Ce bloc 110 est également utilisé pour stocker des Il constantes additives. Comme le montre la figure 5, les données arrivent par le bus supérieur 1101 ou par le bus inférieur 1102. Le multiplexeur 1103, contrôlé par le bit de5 programmation 1104, permet de sélectionner l'un des deux bus. La sortie du multiplexeur 1103 entre dans le bloc 1105. Ce dernier permet de programmer la taille des opérandes. Il permet d'amener, soit huit variables de huit bits (une variable occupe un bloc), soit quatre10 variables de seize bits (une variable occupe deux blocs), soit deux variables de vingt-quatre bits (une variable occupe trois blocs et deux blocs restent inutilisés), soit deux variables de trente deux bits (une variable occupe quatre blocs), vers les registres à retard programmable multiple 1106 et vers les registres à retard programmable simple 1107. Un registre à retard programmable simple 1107 se comporte comme un registre FIFO ("premier entré/premier sorti") pourvu de deux horloges. Lorsque l'horloge de chargement est active, une variable ou une constante est chargée dans le registre. Lorsque l'horloge de calcul est active, la valeur stockée est transmise en série sur le bus de sortie 1109. Le registre à retard programmable multiple 1106 a le même fonctionnement que le registre simple 1107 au chargement mais, lors de la transmission en sortie, il est connecté à deux bus 1108. Le premier de ces bus porte le signal retardé simple, le second de ces bus porte le même signal retardé d'un coup d'horloge supplémentaire. Les lignes 1110 et 1111 amènent deux bus d'horloge programmable dans le bloc 1112. Celui-ci permet de sélectionner, à partir de bits de programmation, les huit horloges de chargement et l'horloge de calcul des registres 1106. Le même rôle est joué par le bloc 1113, qui sélectionne, à partir des bus d'horloge 1114 et 1115, les huit horloges de chargement et celle de calcul des registres 1107. En se référant aux figures 6 à 8, on va maintenant décrire en détail le bloc multiplieur 120 de chaque cellule 100. Comme le montre la figure 6, le bloc multiplieur est composé d'un ensemble de huit multiplieurs en ligne 1200 permettant d'effectuer des multiplications par des constantes. Ces multiplieurs sont organisés en deux rangées de quatre étages 1 à 4. Dans l'exemple de la figure 6, chaque étage de multiplieurs peut traiter quatre chiffres en base 4. Chacune des deux rangées de multiplieurs reçoit ses entrées d'un ensemble de bus verticaux 1201 à 1204 pour la rangée de gauche et 1205 à 1208 pour la rangée de droite. Les sorties 1215 de chacun des multiplieurs sont envoyées vers le bloc sommateur 130 (figure 9). Comme le montre la figure 7, chaque multiplieur 1200 traite une multiplication en ligne d'une variable par une constante. La variable entre dans le multiplieur par une ligne 1211, tandis que la constante est appliquée, avant le calcul, sur une ligne 1212. Cette constante est mémorisée dans le multiplieur à l'aide d'un registre 1213. Le multiplieur reçoit également, sur la ligne 1214, l'information provenant du multiplieur situé en-dessous de lui. Cette information est nécessaire uniquement pour le calcul d'opérandes dont la taille est supérieure à celle d'un multiplieur simple. De la même façon, le multiplieur fournit, à celui situé au-dessus de lui, la même information à travers une ligne 1215. Lorsque les multiplieurs ne sont pas interconnectés, les sorties 1215 sont envoyées vers le bloc sommateur 130 (figure 9) qui fournit le résultat de l'opération en ligne. Le multiplieur propage également la valeur de l'opérande, appliquée sur la ligne 1211, vers le multiplieur situé au-dessous de lui sur une ligne 1216. En plus du registre 1213, le multiplieur comprend un bloc 1217 qui implémente la multiplication des chiffres de la variable entrée sur la ligne 1211 par ceux stockés dans le registre 1213. Les sorties du bloc 1217 sont envoyées vers un bloc 1218 qui est un additionneur parallèle. Il reçoit ses entrées du bloc 1217, ainsi que du bloc 1219 qui permet de stocker les résultats partiels. Lorsque plusieurs multiplieurs sont interconnectés, le bloc 1218 reçoit également l'information provenant de l'étage inférieur par la ligne 1214. Il envoie ses données vers le bloc 1219 pour un stockage temporaire. L'organisation en deux rangées de quatre multiplieurs permet: - d'une part, comme le montre la figure 8, de traiter une multiplication en ligne de deux opérandes en utilisant deux blocs 1200 voisins horizontalement. L'un des deux opérandes arrive par un bus horizontal 1220 provenant, de même que les bus 1221 et 1222, du circuit de prétraitement. Celui-ci est connecté à la fois au bus vertical 1204 et au bus vertical 1208. Le bus 1204 est connecté à la ligne d'entrée 1211 du multiplieur de gauche. Le bus vertical 1208 est lui-même connecté à la ligne d'entrée 1211 du multiplieur de droite. Le second opérande arrive par le bus horizontal 1221. Celui-ci est connecté au bus vertical 1207 qui entre dans le multiplieur de droite par la ligne 1212. Le second opérande, retardé d'un cycle, arrive par le bus horizontal 1222. Celui-ci est connecté au bus vertical 1203 qui est lui-même connecté à l'entrée 1212 du multiplieur de gauche. L'ordre des opérandes (premier et second) est sans influence sur le résultat. Les sorties 1215 des deux multiplieurs sont envoyées vers le bloc sommateur 130 qui effectue la somme des résultats partiels. - d'autre part, comme le montre la figure 6, d'utiliser les multiplieurs voisins verticalement pour programmer la taille des opérandes. Dans l'exemple choisi, l'utilisation d'un bloc permet d'effectuer les opérations sur huit bits, mais l'utilisation de deux blocs consécutifs permet d'effectuer les opérations sur seize bits, l'utilisation de trois blocs consécutifs permet d'effectuer les opérations sur vingt-quatre bits et l'utilisation de quatre blocs consécutifs permet d'effectuer les opérations sur trente-deux bits. Ces configurations peuvent être commandées par les bits de programmation B1 à B4. Par exemple, lorsque le bit B1 est à "1" les étages 1 et 2 sont interconnectés. Dans ce cas, les chiffres de poids forts sortant de l'étage 1 fournissent les résultats intermédiaires de l'opération sur seize bits. Il est également possible de calculer simultanément une seconde opération sur seize bits grâce au bit B3. En effet, lorsque le bit B3 est à "1" les étages 3 et 4 sont interconnectés. Dans ce cas, les chiffres de poids forts sortant de l'étage 3 fournissent les résultats intermédiaires de l'opération sur seize bits. De même lorsque les bits B1 et B2 sont à "1", les étages 1, 2 et 3 sont interconnectés. Dans ce cas, les chiffres de poids forts sortant de l'étage 1 fournissent les résultats intermédiaires de l'opération sur vingt- quatre bits. Finalement, lorsque les bits B1, B2 et B3 sont à "1", les étages i à 4 sont interconnectés. Dans ce cas, les chiffres sortant de l'étage 1 fournissent les résultats intermédiaires de l'opération sur trente- deux bits. Il est clair que les types de regroupement, décrits ci-dessus, peuvent être combinés pour calculer, par exemple, le produit de deux variables avec une précision de huit, seize, vingt-quatre ou trente-deux bits. Les sorties sont alors obtenues à partir des résultats partiels fournis par les multiplieurs de poids forts de gauche et de droite qui sont ensuite additionnés dans le bloc sommateur 130. Les connexions des bus verticaux 1201 à 1208 vers les multiplieurs ont été réalisées de telle sorte que: - les huit constantes puissent être chargées en série, simultanément avant les calculs; - huit variables (qui peuvent être différentes) puissent entrer en série simultanément pendant les calculs pour les produits d'opérandes multipliés par des constantes; lors du calcul de produits de deux opérandes, pour lequel quatre lignes sont nécessaires pour chaque multiplieur, les bus verticaux puissent être tronçonnés au moyen de l'ensemble d'interrupteurs commandés par le bit de programmation B4. Dans ce cas, les multiplieurs de l'étage 1 reçoivent leur entrées à partir des bus 1204, 1203 et 1208, 1207, respectivement. Les multiplieurs de l'étage 2 reçoivent leur entrées à partir des bus 1202, 1201 et 1206, 1205, respectivement. Les multiplieurs des étages 3 et 4 reçoivent exactement les mêmes entrées. Celles-ci sont distinctes des premières car les deux tronçons de bus sont séparés grâce au bit de programmation B4 qui est mis à "0". On va maintenant décrire la structure du bloc sommateur 130 en se référant à la figure 9. La fonction du bloc sommateur est d'effectuer tant les sommations de résultats que l'ajout de constantes ou d'opérandes additifs. Afin de réduire au minimum le retard en ligne, le bloc sommateur 130 est composé d'un ensemble d'arbres de sommation. Ainsi, on trouvera huit arbres de sommation à trois entrées, quatre arbres de sommation à cinq entrées, deux arbres de sommation à neuf entrées et un arbre de sommation à dix-sept entrées. Les arbres de sommation à trois entrées 1300 à 1303 et 1310 à 1313 sont utilisés pour les calculs (A.x + B ou A. x + z), pour lesquels deux lignes proviennent du produit " A.x " par la sortie 1215 du bloc multiplieur situé en vis-à- vis et la ligne supplémentaire provient de la constante "B" ou de l'opérande à ajouter "z". Les arbres de sommation à cinq entrées (1304, 1305 et 1314, 1315 sont utilisés pour les20 produits d'opérandes C(x.y) ou encore un double produit (A.x + B.y), pour lesquels deux lignes proviennent du multiplieur de gauche et deux du multiplieur de droite du bloc 120. La cinquième entrée est utilisée pour l'addition d'une éventuelle constante ou d'un autre opérande. Les arbres de sommation à neuf entrées 1306, 1316 sont utilisés pour additionner les sorties des quatre multiplieurs correspondant aux deux étages considérés (x.y + z.t) ou (A.x + B:y + C.z + D.t) dans le bloc multiplieur 120. La neuvième entrée est utilisée pour l'addition d'une éventuelle constante ou d'un opérande. Le dernier arbre de sommation 1309 permet d'additionner les sorties 1215 de tous les multiplieurs du bloc de multiplication 120. Une ligne supplémentaire permet d'additionner une éventuelle constante ou un opérande supplémentaire. Un bit de programmation B5 permet de tronçonner le bus 1317 d'arrivée des constantes en deux demi-bus. Quatre constantes peuvent arriver pour chaque paire d'étages du sommateur comme le montre la figure 9. On peut remarquer que tous les arbres ne peuvent être utilisés simultanément. Comme les entrées sont connectées directement sur les arbres, afin de réduire la consommation au minimum, quinze bits de programmation B10 à B25 (non représentés)peuvent être inclus, à raison d'un par arbre, et ils sont alors utilisés pour programmer la non utilisation d'un arbre. Ces bits viennent simultanément mettre à zéro les entrées de chaque arbre non utilisé et mettre leurs sorties à haute impédance, par exemple au moyen de portes "tristate". Ainsi, quelles que soient les valeurs transitant sur les bus 1215 de sortie des multiplieurs 1200, elles n'entraînent pas une activité dans chacun des arbres de sommation du bloc 130. On va maintenant décrire le bloc de normalisation en se référant plus particulièrement à la figure 10. La fonction du bloc de normalisation 140 est de réaliser une réécriture du nombre redondant afin de normaliser sa taille. En effet, une propriété du codage redondant est de permettre plusieurs représentations différentes dumême nombre. Les nombres utilisés étant représentés en virgule fixe sous la forme 0.nLnzn3n4..., plusieurs passages successifs dans les additionneurs peuvent entraîner la formation d'un nombre de plus en plus grand devant la virgule. Il est alors impératif de normaliser ce nombre pour lui redonner la forme O. nln2n3n4... Comme le montre la figure 10, les sorties du bloc sommateur 130, qui arrivent sur les lignes 1420 à 1428, sont introduites dans un banc de normalisateurs 1400 à 1408. Le bloc de normalisation contient un normalisateur 14001 qui remet le nombre en forme. Une fois le nombre sous une forme convenable, il est possible de le comparer. C'est pourquoi ce bloc est équipé de trois registres 14002, 14005 et 14008. Le registre 14002 est envoyé dans le comparateur 14003 pour fournir le résultat de la comparaison sur les lignes 14004. Celles- ci sont connectées aux bus de commande (non représentés sur la figure). Le second registre 14005 contient une borne supérieure que le signal ne doit pas dépasser. La sortie du comparateur 14006 contrôle le multiplexeur 14007 qui écrête vers le haut le signal provenant du normalisateur 14001. Le troisième registre 14008 contient une borne inférieure que le signal ne doit pas franchir. La sortie du comparateur 14009 contrôle le multiplexeur 14010 qui écrête vers le bas le signal provenant du normalisateur 14001. Les bits de programmation 14011 permettent de sélectionner, à travers le multiplexeur 14012, soit la sortie directe du normalisateur 14001, soit la sortie des écrêteurs (minimum et maximum) pour l'envoyer en sortie de bloc. Dans le diagramme du bloc 140, on peut noter que la sortie du bloc 1404 est connectée sur le même bus que celle du bloc 1400, car ces deux sorties ne peuvent être simultanément actives. La matrice de calcul des fonctions non linéaires 20 va être décrite ciaprès en se référant aux figures 11 à 22. Cette matrice est chargée du calcul des fonctions non linéaires. Elle comprend une pluralité de premières lignes de blocs de calcul 210 pour calculer des fonctions, comme la division et la racine carrée, et une pluralité de secondes lignes de blocs de calcul 220 pour évaluer les fonctions élémentaires. Cette pluralité de secondes lignes de blocs 220 est divisée en deux parties: une partie pour les petites précisions et une partie pour les grandes. Comme dans la matrice 10 de cellules de calcul des fonctions linéaires, les cellules de la matrice 20 de la figure 11 sont alimentées par deux types de bus: les bus 211 qui transportent les opérandes et les bus 212 qui transportent les signaux de commande. Ceux-ci permettent la synchronisation des différentes phases, la sélection des horloges locales et le démarrage des calculs pour chaque cellule. La figure 11 montre par le diagramme 213 comment ces bus 211 qui transportent les opérandes peuvent être interconnectés de manière programmable ou non. Le diagramme 213 représente le croisement des lignes des bus. La division étant la seule opération à deux arguments, seuls les blocs 210, qui implémentent cette opération, possèdent deux entrées de données et une entrée de commande par bloc. La seconde ligne composée des blocs 220 ne recevra qu'une seule entrée de donnée et une entrée de commande par bloc. Le détail des connexions des bus 212 aux bus internes de chacune des cellules 210 et 220 est indiqué à la figure 12. Cette figure montre, respectivement, un bloc d'entrée 218 et un bloc de sortie 219. Chaque bloc d'entrée 218 possède un multiplexeur 223 permettant de sélectionner, grâce aux bits de programmation 225, une entrée parmi les seize possibles. Un bloc 218 est utilisé pour chaque entrée des signaux de données, ainsi que pour l'entrée des signaux de commande. Un bloc 218 d'entrée dans une cellule 210 comporte donc 3 cellules, tandis que le bloc 221 d'entrée dans une cellule 220 n'en comporte que deux. Pour les deux types de cellule, 210 et 220, les signaux de sortie sont envoyés vers les bus de données par le bloc 219. Ce dernier permet de sortir un résultat de calcul sur les bus 211 par l'intermédiaire d'un multiplexeur 227 commandé par un registre programmable 229. La taille de la matrice 20 dépend de celle de la matrice 10. Si, par exemple, la seconde est une matrice 4 x 4, la matrice 20 pourra comporter une première ligne de quatre blocs ou cellules 210 pour le calcul de la division et de la racine carrée et une seconde ligne divisée en deux blocs 220 pour l'implémentation de l'approximation polynomiale et deux blocs 220 pour l'implémentation d'algorithmes à base d'additions et de décalages. Les cellules 220 ont des interconnexions de bus analogues (non représentées en détail) à ceci près qu'elles n'ont besoin de recevoir qu'un seul opérande à partir des bus 211 de sorte que les blocs 221 ne comportent qu'un seul multiplexeur et qu'un seul registre programmable. On va maintenant décrire l'une des cellules de calcul des fonctions algébriques en se référant plus particulièrement aux figures 13 à 17. On a représenté sur la figure 13 le schéma d'un bloc ou cellule de calcul de fonction algébrique. En arithmétique en ligne, mise en oeuvre dans le circuit selon l'invention, une solution possible pour évaluer ces deux fonctions est d'utiliser une itération comme celle proposée dans l'article paru en 1987 dans la revue IEEE par Paul K-G. Tu et ai. Cette itération peut être implantée avec la cellule 210 de la figure 16 qui est composée de quatre parties principales: - des blocs 2110 chargées du pré- traitement des opérandes, - un bloc 2120 qui effectue l'itération, - un bloc 2130 pour effectuer le post- traitement permettant de rétablir les domaines originaux modifiés par les blocs de pré-traitement 2110, et - un bloc 2140 permettant d'arrondir le résultat. Suivant les domaines des opérandes, les blocs de pré et de post-traitement peuvent être utiles ou non (bits de programmation Pl, P2, P3). L'étude numérique des domaines des opérandes effectuée par le logiciel de programmation permet de connaître la taille et la valeur des constantes permettant d'effectuer les pré et post- traitements. Comme montrée à la figure 14, chacune des blocs 2110 est composée à son tour de deux blocs. Les constantes et leurs tailles sont programmées dans un registre 2116 et la multiplication est effectuée dans un bloc 2115. Dans le cas d'une racine carrée, une seule cellule de pré-traitement 2110 est nécessaire, car il n'y a qu'un seule opérande alors qu'il y en a deux dans le cas de la division. Les pré- traitements consistent en des multiplications par des constantes pour que les intervalles de convergence puissent être ramenés à ceux de l'algorithme utilisé. Le bloc de post-traitement 2130 de la figure 15, sert à ramener l'intervalle à celui du signal d'entrée présent avant le pré-traitement. Pour ce faire, il faut utiliser une multiplication réalisée dans un bloc 2131 par une constante stockée dans un registre 2132 et éventuellement l'addition réalisée dans un bloc 2134, d'une constante stockée dans un registre 2133. Un bit de programmation P4 permet d'effectuer ou non l'addition de cette dernière constante. Comme le montre la figure 16, le bloc 2120 du bloc de calcul 210 effectue l'itération de division ou de racine carrée. Des registres série-parallèle 2121 et 2122 permettent de stocker les opérandes qui arrivent en série mais qui sont utilisés totalement (donc en parallèle) par rapport à la précision atteinte à chaque itération. Un registre parallèle 2123 contient le résultat intermédiaire calculé à chaque itération (dans le cas de la division, il s'agit du reste partiel). Un bloc 2125 est un additionneur parallèle de trois nombres et un décaleur vers la droite programmables. C'est à dire que l'on doit pouvoir effectuer ou ne pas effectuer l'addition et/ou le décalage. La commande qui permet de savoir quelles opérations il faut effectuer à chaque itération dans le bloc 2125 est fournie par une table stockée dans un bloc 2124. Cette table est alimentée par le nouveau chiffre des opérandes qui arrive à chaque itération et de quelques bits de poids forts du résultat partiel de l'itération précédente. La taille de cette table est dépendante de plusieurs paramètres numériques comme la base utilisée ou l'intervalle de définition des opérandes. Dans le cadre du calcul d'une racine carrée, le registre série-parallèle 2122 n'est pas utilisé et l'additionneur 2125 n'utilise donc plus que deux entrées au lieu de trois. La table 2124 doit donc être configurée en fonction du calcul effectué dans la cellule 210. Un bloc 2140 représenté sur la figure 17 réalise l'arrondi du résultat. Il comprend un bloc 2141 qui effectue une normalisation du résultat et un bloc 2142 qui est un automate modifiant la valeur du ou des derniers chiffres pour l'arrondi. Un bit de programmation P5 permet de déterminer le mode de l'arrondi (au plus près ou troncature). En se référant plus particulièrement aux figures 18 à 22, on va maintenant décrire le bloc 220 d'évaluation des fonctions élémentaires servant à évaluer certaines opérations mathématiques de la classe des fonctions élémentaires comme le sinus, le cosinus, l'exponentielle et le logarithme. Les détails sur l'évaluation des fonctions élémentaires peuvent être trouvés dans le livre de J. M. Muller intitulé: "Elementary functions, algorithms et implementation", Birkhauser, Boston 1997. Pour la description du bloc 220, les définitions suivantes sont adoptées: f est la fonction élémentaire à évaluer; x est l'argument de la fonction; y est le résultat de l'évaluation de f de x; c'est à dire: y = f(x) Le schéma général d'évaluation d'une fonction élémentaire est le suivant: Réduction d'argument x * f g Evaluation Y* = g(x*) Restauration d'argument Y* -± y La première phase est la réduction d'argument. Cette phase est souvent nécessaire, car il n'est pas possible de trouver une technique d'évaluation des fonctions élémentaires qui soit précise et rapide quelle que soit la valeur des arguments. La réduction d'argument consiste donc à ramener l'argument initial x dans le domaine de convergence ce qui donne la valeur X*. Il existe différentes techniques de réduction d'argument suivant le type de fonction considéré. La deuxième phase est l'évaluation de g de x* proprement dite. Cette évaluation interne peut se faire en utilisant différentes techniques, comme les approximations polynomiales ou les algorithmes à base de décalages par exemple. Le choix d'une technique plutôt qu'une autre est le résultat d'un compromis entre le temps d'évaluation, la surface de circuit nécessaire, certaines caractéristiques mathématiques de la fonction et la précision accessible. La dernière phase permet de retrouver la valeur de f(x) à partir de celle de g(x*). Cette phase de restauration de l'argument est généralement très simple. L'architecture globale de la cellule 220 est illustrée à la figure 18. On retrouve le découpage en trois parties, la cellule comprenant un bloc 2210 effectuant la réduction d'argument, un bloc 2220, ou un bloc 2230, effectuant l'évaluation interne et un bloc 2240 effectuant la restauration d'argument Afin d'utiliser au mieux les ressources du circuit, deux techniques d'évaluation des fonctions élémentaires peuvent être utilisées suivant la précision désirée, ce qui nécessite deux types de blocs pour l'évaluation interne à savoir les blocs 2220 et 2230. Pour les nombres à huit et à seize bits, les fonctions élémentaires sont évaluées en utilisant des approximations polynomiales. Pour les précisions correspondant à ces tailles de nombre, le degré des polynômes d'approximation utilisés est assez faible pour garantir que le nombre d'opérations ne soit pas trop important. Le bloc 2220 effectue l'évaluation interne en utilisant cette approximation polynomiale, mais seulement pour des nombres dont la précision est de huit et de seize bits. Par contre pour des nombres de taille supérieure (vingt-quatre et trente-deux bits), le degré des polynômes d'approximation devient relativement important. Pour éviter des calculs trop nombreux et un circuit volumineux, on utilise une technique à base d'additions et de décalages accomplie dans le bloc 2230. Le choix du nombre de cellules 2220 et 2230 à utiliser dépend de l'application visée. Cependant, on sait que dans la plupart des applications en traitement de signal, en traitement d'images et en commande numérique, les grandes précisions sont plus rares que les précisions "courantes". Des bits de programmation Pi et P2 dans la cellule 220 permettent de passer ou non par la réduction d'argument et/ou la reconstruction du résultat final. Ces choix doivent être fait de manière indépendante, car pour certaines fonctions élémentaires, il est possible que l'une des deux ou les deux opérations soient inutiles. Cette détermination des phases de pré- traitement et post-traitement est faite par l'outil de programmation. La figure 19 représente le bloc de réduction d'argument qui comporte: - une table 2211 permettant, en fonction des premiers chiffres de l'argument, de sélectionner dans quel intervalle il se trouve et de fournir alors les constantes correspondantes pour réaliser la réduction d'argument; - un registre 2212 de type "FIFO" de taille programmable permettant de retarder l'entrée x pendant le temps nécessaire pour que la table 2211 puisse5 fournir ses valeurs; - un multiplieur 2213 par une constante de taille programmable utilisé dans le cas des réductions d'argument de type multiplicatif. La constante de la multiplication est donnée par la table 2211; et - un additionneur 2214 utilisé dans le cas des réductions d'argument de type additif. La valeur qui doit être ajoutée à l'argument est donnée par la table 2211. Le bit de programmation P3 permet de fixer le type de réduction d'argument qui dépend de la fonction élémentaire à évaluer. La figure 20 représente l'architecture du bloc 2220 d'évaluation interne par des approximations polynominales. Il comprend: - une table 2221, qui fournit les coefficients du polynôme en fonction des premiers chiffres de l'entrée et des indications données par le bloc de réduction d'argument 2210; - un registre 2222 de type "FIFO" de taille programmable pour compenser le temps de latence dû à la lecture dans la table 2221 et pour synchroniser la valeur lue avec les premiers chiffres de l'entrée; - un bloc d'addition 2223, effectuant la correction de l'argument réduit sur l'intervalle courant; - un bloc 2225 pour calculer le carré de l'argument; - un bloc 2224 pour calculer l'argument à la puissance 4; - des registres 2226 de type "FIFO" de tailles programmables pour compenser les délais différents dus aux calculs du carré et de la puissance quatrième de5 l'argument; et - des multiplieurs 2227 par des constantes liés, par une méthode arborescente, pour effectuer le calcul du polynôme d'approximation par une méthode arborescente. Les constantes des multiplieurs correspondant aux coefficients du polynôme sont fournies par la table 2221. La figure 21 représente l'architecture interne du bloc 2230 d'évaluation interne par des algorithmes à base d'additions et de décalages. Ce bloc comprend:15 - un registre 2231 de type "FIFO" de taille programmable pour introduire un délai supplémentaire qui dépend de la fonction; - une table 2232 permettant, au vu de la valeur du chiffre entrant, des informations provenant de la réduction d'argument et de la commande locale effectuée par un bloc 2235, de fournir les valeurs appropriées des constantes en entrée du bloc 2234; - un registre 2233 pour stocker les résultats partiels; - un bloc 2234 d'addition/décalage programmable. La commande, qui provient du contrôle local 2235 fixe les opérations qui doivent être faites à chaque cycle sur les opérandes provenant de la table 2232, le bloc de commande locale 2235 permettant de savoir le numéro de l'itération en cours et de fournir des commandes spécifiques lors des premières et/ou des dernières itérations; et - un bloc 2236 permettant de recoder la valeur de sortie. C'est l'équivalent d'une pré-normalisation dans le cas des fonctions linéaires. La figure 22 montre le bloc de restauration d'argument qui comprend: - une table 2241 pour choisir, en fonction des premiers chiffres de l'entrée, une constante à ajouter à l'entrée; - un registre 2242 de type "FIFO" de taille programmable permettant de retarder l'entrée le temps que la table 2241 puisse fournir sa valeur; - un bloc d'addition 2243 qui fait la somme de l'entrée, de la constante fournie par la table 2241 et d'une information fournie par le bloc de réduction d'argument 2210; et - un bloc de normalisation 2244 pour garantir une écriture cohérente de la valeur de sortie. La figure 23 représente le schéma du bloc d'horloges programmables 70 de la figure 1, dont la fonction est de fournir des signaux d'horloge à différentes fréquences, et avec différents décalages, qu'on peut utiliser pour masquer l'horloge de base pour certaines opérations. Les sorties de ce bloc peuvent également être utilisées pour valider des entrées ou des sorties des divers organes de calcul du circuit de l'invention pendant la durée des opérations sur huit, seize, vingt-quatre ou trente-deux bits. Comme le montre la figure 23, le signal d'horloge de base 71 entre dans des diviseurs 72 à 76. Le bloc 72 réalise une division par deux de l'horloge de base et alimente deux lignes en sortie. Le bloc 73 réalise une division par quatre de l'horloge de base et alimente quatre lignes de sortie. En base 4, ce bloc permet de couvrir les opérations de huit bits. Le bloc 74 réalise une division par huit de l'horloge de base et alimente huit lignes de sortie. En base 4, ce bloc permet de couvrir les opérations de seize bits. Le bloc 75 réalise une division par douze de l'horloge de base et alimente douze lignes de sortie. En base 4, ce bloc permet de couvrir les opérations de vingt-quatre bits. Le bloc 76 réalise une division par seize de l'horloge de base et alimente seize lignes de sortie. En base 4, ce bloc permet de couvrir les opérations de trente-deux bits. Un système d'interrupteurs programmables (symbolisés par les petit carrés aux croisement des lignes), permet de sélectionner les sorties des blocs 72 à 76 pour les connecter vers l'une des seize sorties du bloc 70. Ces lignes de sortie s'étendent à travers tout le circuit et traversent les deux matrices. Elles forment les bus 212 de la figure 11. Le bloc 80 est composé d'une pluralité de compteurs programmables 800, tels que présenté à la figure 24. La fonction du bloc 800 est d'appliquer une fenêtre au signal d'horloge de la ligne 81. Avant l'ouverture de la fenêtre, le signal de sortie 80a est inactif. Pendant l'ouverture de la fenêtre, le signal de sortie 80a reproduit celui de la ligne 81. A la fermeture de la fenêtre, le signal 80a redevient inactif jusqu'à la prochaine ouverture. Ce compteur programmable comprend trois registres 82, 83 et 84, un compteur 85 et trois comparateurs 86, 87 et 88. Le premier registre 82 stocke la période du signal. Le second registre 83 stocke le cycle de démarrage du signal (ouverture de la fenêtre). Le troisième registre 84 stocke le cycle de fin du signal (fermeture de la fenêtre). Le compteur 85 reçoit l'horloge de base. Sa sortie est comparée en permanence avec le contenu des trois registres 82, 83 et 84. La sortie du premier comparateur 86 (=) fournit le signal de remise à zéro du compteur 85. La sortie du second comparateur 87 (2) est appliquée à une porte ET 89 à trois entrées pour fournir le signal de sortie 80a du compteur programmable 800. La sortie du troisième comparateur 88 ( commande qui parcourent toute la surface du circuit. La figure 25 est un schéma du bloc 40 de conversion numérique redondant/analogique de la figure 1 Sa fonction est de fournir une valeur analogique, à partir de la valeur d'entrée séquentielle sous un format en ligne appliquée sur une ligne 401, et d'une tension de référence +Vref (ou -Vref)appliquée sur une ligne 402. Les chiffres introduits séquentiellement sont tout d'abord stockés dans un registre série-parallèle 403. Les sorties de ce registre attaquent en parallèle un système de ponts diviseurs de tension 404. A partir des valeurs signées de chacun des chiffres du nombre, ce bloc génère une sortie analogique en 405. Pour la conversion, on tirera bénéfice de la notation redondante par l'emploi de polarisations positives ou négatives dans la sommation analogique des coefficients en l'appliquant à une solution conventionnelle, comme on peut la trouver dans le livre de U. Tietze et Ch. Schenk, intitulé "Halbleiter-Schaltung- technik" et édité chez Springer-Verlag, Berlin, 1993. La figure 26 représente un schéma du bloc de conversion numérique redondant/numérique 45 de la figure 1 qui a pour fonction de fournir séquentiellement ou en parallèle, à partir d'un nombre en ligne qui vient d'être calculé, le code binaire standard ou en complément à deux ou encore codé sous la forme d'une valeur absolue et d'un signe qui lui correspond. Le nombre en ligne arrive en série sur une ligne 451 pour être appliqué à un registre série-parallèle 452 dans lequel il est stocké. Ce registre 452 fournit à un bloc de conversion 453 d'une part la partie positive (+ ) du nombre et d'autre part sa partie négative (-). Le bloc 453 effectue une simple soustraction de ces deux parties du nombre stocké dans le registre 452. Quatre bits de programmation Pi à P4 permettent de programmer le type de sortie attendue. Le bit P1 permet de choisir entre le codage binaire et le codage sous la forme de valeur absolue et de signe assorti. Lorsque le codage est binaire, le bit P2 permet de déterminer s'il s'agit d'un codage standard ou d'un codage en complément à deux. Le bit P3 permet de choisir entre une sortie série, par une ligne 454 et une sortie parallèle par des lignes 455. Lorsque la sortie est série, le bit P4 permet de choisir si le poids fort ou le poids faible doit sortir en premier. REVENDICATIONS 1. Circuit électronique de calcul programmable basé sur l'arithmétique dite en ligne caractérisé en ce qu'il comprend - au moins une première matrice (10, 20) de cellules dont chaque cellule est conçue pour effectuer au moins une fonction de calcul sur des opérandes en ligne qui lui sont appliquées, - des moyens programmables (70) pour, d'une part, configurer chaque cellule pour former un opérateur de calcul donné à appliquer aux opérandes et pour, d'autre part, assurer l'interconnexion des cellules pour les configurer en matrice pour une fonctionnalité de calcul donnée, et - des moyens de transfert pour assurer le transfert des opérandes et des résultats des calculs effectués par lesdites cellules, d'une part, entre lesdites cellules et, d'autre part, entre ladite première matrice (10, 20) et au moins une entrée (50E) et au moins une sortie (50S) dudit circuit. 2 Circuit de calcul selon la revendication 1, caractérisé en ce que ladite première matrice (10) comprend une pluralité de cellules identiques (100) dont chacune présente des fonctionnalités de multiplication et de sommation. 3. Circuit de calcul suivant la revendication 2, caractérisé en ce que chaque cellule (100) de ladite première matrice (10) comprend un réseau de bus comportant un jeu de bus pour le transfert des opérandes et un jeu de bus pour véhiculer des signaux de commande destinés à configurer la cellule et en ce que ledit réseau de bus communique avec les autres cellules de ladite première matrice par l'intermédiaire de deux interfaces d'interconnexion (150) propres à cette cellule. 4. Circuit de calcul suivant l'une quelconque des revendications 2 et 3, caractérisé en ce que chaque cellule (100) de ladite première matrice (10) comprend un bloc multiplieur (120) et un bloc sommateur (130), un bloc de prétraitement de données (110) destiné à introduire un retard programmable sur les opérandes pour compenser le cas échéant les délais en ligne subis par les opérandes dans lesdits blocs multiplieur (120) et sommateur (130), et un bloc de normalisation (140) connecté à la sortie du bloc sommateur (130) pour la remise en forme des résultats des calculs effectués dans ce bloc sommateur, et/ou effectuer des comparaisons sur ces résultats et/ou en fixer les limites maximum et minimum. 5. Circuit de calcul selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'une seconde desdites matrices (20) comprend une pluralités de cellules (210, 220) agencées pour effectuer des calculs de fonctions non-linéaires. 6. Circuit de calcul selon la revendication 5, caractérisé en ce que ladite seconde matrice (20) comprend un premier groupe de cellules identiques (210) pour le calcul d'opérations non linéaires comme la division et le calcul de la racine carrée, et un second groupe de cellules identiques (220) destinées respectivement à assurer une approximation polynominale et à réaliser le calcul d'algorithmes à base d'addition et de décalages, et en ce qu'un jeu de bus (211, 212) est prévu dans ladite seconde matrice pour véhiculer des signaux de commande destinés à configurer lesdites cellules, ledit réseau de bus communiquant avec les autres cellules de ladite seconde matrice par l'intermédiaire d'une pluralité d'interfaces d'interconnexion (218, 219) propres à chaque cellule.