Brevet FR2990781A1 — publié le 20131122

MULTIPLIEUR SERIE NUMERIQUE Domaine technique de l'invention L'invention est relative aux multiplieurs binaires, et plus particulièrement à un multiplieur destiné à être incorporé dans un dispositif d'autotest embarqué. État de la technique De plus en plus de circuits intégrés sont munis de dispositifs d'autotest embarqués, également appelés dispositifs BIST (de l'anglais « Built-In Self-Test »). De tels dispositifs sont le plus souvent utilisés dans la phase de test en production des circuits intégrés. Ils sont conçus pour assister les équipements de test à effectuer des tests de fonctionnalités spécifiques et pour réduire le temps de test. Il est courant d'avoir besoin d'un multiplieur binaire dans un dispositif BIST. La figure 1 illustre une méthodologie de calcul de multiplication servant de base à de nombreuses structures de multiplieur binaire. On cherche à multiplier, par exemple, un nombre binaire A de 4 bits Ao à A3, par un nombre binaire B de quatre bits Bo à B3. L'ensemble des produits partiels ou termes AiBi, seize termes dans l'exemple, est réparti en 7 colonnes, de sorte que chaque terme AiBi soit rangé dans la colonne de rang i+j. Les rangs des colonnes correspondent aux poids du résultat R de la multiplication. Le résultat R est obtenu en additionnant les nombres binaires formés par les termes juxtaposés des colonnes. Une colonne est complétée par un 0 lorsqu'il n'existe pas de terme. Le résultat comprend ainsi 7 bits RO à R6 correspondant respectivement aux colonnes, et un bit de poids fort supplémentaire R7 recevant l'éventuelle retenue de l'addition. De nombreuses structures de multiplieur, favorisant la vitesse de calcul, comme le multiplieur de Dadda ou le multiplieur à arbre de Wallace, sont conçues pour effectuer 25 toutes les opérations illustrées par la figure 1 en parallèle en utilisant de la logique combinatoire. Le nombre de portes logiques de ces structures croît avec le carré du nombre de bits des multiplicandes. Il est dommage de sacrifier cette surface de silicium pour un élément ne nécessitant pas un résultat de calcul quasi immédiat, comme dans la plupart des 30 systèmes de test embarqués. Résumé de l'invention Il est donc souhaitable de prévoir un multiplieur de taille particulièrement petite dont les performances soient suffisantes pour une utilisation dans un dispositif BIST. On tend à satisfaire ce besoin en prévoyant un multiplieur d'un nombre binaire A de n 5 bits par un nombre binaire B de p bits, configure pour additionner chaque terme AiBi avec un décalage à gauche de i+j bits, où Ai est le bit de poids i du nombre A, et Bi le bit de poids j du nombre B, avec i variant entre 0 et n-1, et j variant entre 0 et p-1. Le multiplieur comprend un premier compteur associé au nombre A, configure pour compter modulo n, et cadencé par une horloge ; un deuxième compteur associé au 10 nombre B, cadencé par ladite horloge ; des moyens pour produire séquentiellement les termes AiBi en prenant les contenus des premier et deuxième compteurs comme poids i et j, respectivement ; et des moyens pour décaler le contenu de l'un des premier et deuxième compteurs d'un incrément lorsque l'autre compteur a fait une révolution. Selon un mode de réalisation, le multiplieur comprend, pour additionner les termes 15 AiBj, un compteur à incrément programmable, de n+p bits, cadencé par ladite horloge et recevant le terme AiBi courant comme consigne de programmation d'un incrément de 21+J. Selon un mode de réalisation, le compteur à incrément programmable comprend une série de bascules connectées en cascade de manière que, si l'entrée de programmation 20 de rang i+j est active, la bascule de rang i+j commute systématiquement, et toute bascule de rang k> i+j commute si toutes les bascules de rang compris entre i+j et k-1 sont à un état actif Selon un mode de réalisation, le deuxième compteur est configure pour compter modulo p+ 1, et le multiplieur comprend des moyens pour inhiber la prise en compte du terme 25 AiBi courant lorsque le deuxième compteur contient/p. Selon un mode de réalisation, le deuxième compteur est configure pour compter modulo p, et le multiplieur comprend des moyens pour incrémenter le premier compteur d'un incrément supérieur ou égal à 2 à chaque révolution du deuxième compteur. Selon un mode de réalisation, le premier compteur est configure pour compter en avant 30 et le deuxième compteur est configure pour compter en arrière. Selon un mode de réalisation, les moyens de production des termes AiBi comprennent deux multiplexeurs recevant respectivement les nombres A et B, et dont les commandes de sélection sont fournies respectivement par les premier et deuxième compteurs ; et une porte ET combinant les sorties des multiplexeurs. Selon un mode de réalisation, les moyens d'inhibition de la prise en compte du terme A1l3j comprennent une porte configurée pour annuler le terme lorsque le deuxième 5 compteur contient p. Selon un mode de réalisation, pour inhiber la prise en compte du terme Ail3j, le multiplexeur associé au nombre B comprend une (p+1)-ième entrée sélectionnable par le contenu (j) du deuxième compteur, et recevant la valeur O. Description sommaire des dessins 10 Des modes de réalisation seront exposés dans la description suivante, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1, précédemment décrite, illustre une méthodologie de multiplication de nombres binaires ; - la figure 2 représente schématiquement un mode de réalisation de multiplieur 15 série de faible complexité ; - la figure 3 est un diagramme illustrant un premier mode de fonctionnement du multiplieur de la figure 2; - la figure 4 est un diagramme illustrant une variante de fonctionnement ; - la figure 5 est un diagramme illustrant un deuxième mode de fonctionnement du 20 multiplieur de la figure 2; - la figure 6a représente schématiquement un mode de réalisation de compteur asynchrone à incrément programmable ; - la figure 6b représente schématiquement un mode de réalisation de compteur synchrone à incrément programmable ; 25 - la figure 7 est un diagramme illustrant un mode de fonctionnement dépourvu de cycles fantômes ; - la figure 8 représente partiellement et schématiquement un mode de réalisation de multiplieur série permettant un fonctionnement selon le diagramme de la figure 7; - la figure 9 est un diagramme illustrant un mode de fonctionnement de multiplieur série permettant de réduire le nombre de cycles nécessaires à une multiplication ; - la figure 10 représente schématiquement un mode de réalisation de multiplieur série fonctionnant selon le mode de la figure 9 ; et - la figure 11 représente schématiquement et partiellement un deuxième mode de réalisation de compteur synchrone à incrément programmable. Description d'un mode de réalisation préféré de l'invention Dans un dispositif BIST, la vitesse de calcul d'un multiplieur n'est pas primordiale. On peut dans la plupart des situations se contenter d'un multiplieur de structure série qui produit un résultat en au moins n2 cycles d'horloge, où n est la taille des multiplicandes. Malgré que les structures série existantes soient particulièrement simples, on cherche encore à réduire la surface silicium occupée. La figure 2 représente schématiquement un mode de réalisation de multiplieur série de structure particulièrement simple. Pour être plus précis, il s'agit d'une structure parallèle-série, puisque les multiplicandes A et B sont fournis en parallèle, tandis que les produits partiels A,B, sont produits en série. Les multiplicandes A et B peuvent être de tailles différentes, disons de n etp bits, respectivement. Les multiplicandes A et B sont fournis à des multiplexeurs MUX respectifs, de n bits vers 1 et de p bits vers 1. Les entrées de sélection des multiplexeurs reçoivent respectivement les poids i et j des bits A, et B, à sélectionner dans les nombres A et B, où i varie entre 0 et n-1, et j varie normalement entre 0 et p-1. Les bits A, et B, sélectionnés sont combinés par une porte ET 10 pour produire le terme courant Le poids i servant à opérer la sélection du bit A, est fourni par un compteur CNT-A configure pour compter modulo n, tandis que le poids j servant à opérer la sélection du bit B, est fourni par un compteur CNT-B configure pour compter modulo p+1. Les compteurs CNT-A et CNT-B sont cadencés par une horloge système CK et leur contenu initial peut être programmé par des lignes d'initialisation INIT. On remarque, avec cette configuration, que le poids j peut atteindre la valeur p, qui est une valeur ne correspondant à aucun bit du nombre B, puisque le poids maximal des bits du nombre B est p-1. On autorise néanmoins cette possibilité et, lorsqu'elle se produit, on ignore la valeur du terme courant Ail3j. Pour ignorer un tel terme, compte tenu de la structure du multiplieur, il suffit de l'annuler. Cela est réalisé, par exemple, à l'aide d'une porte ET 12 qui combine la sortie de la porte 10 et un signal de masquage MK, actif lorsque le compteur CNT-B contient la valeur p. Dans l'exemple représenté, on a n = p = 4. Le compteur CNT-A est un compteur sur 2 bits, tandis que le compteur CNT-B est un compteur sur 3 bits. Le compteur CNT-B peut théoriquement compter entre 0 et 7, mais il sera configure en pratique pour compter entre 0 et 4. Le signal de masquage MK est alors la valeur du bit de poids fort MSB du compteur CNT-B. Ce bit de poids fort peut par ailleurs ne pas faire partie de la valeur j fournie au multiplexeur, comme cela est représenté. Selon une variante, pour ignorer le terme ABi lorsque le poids j est hors-limites, le multiplexeur associé au nombre B peut comporter, comme cela est représenté en pointillés, cinq entrées au lieu de quatre, et la cinquième entrée, qui est sélectionnée lorsque j = 4, reçoit la valeur 0 en permanence. Dans ce cas, comme cela est représenté en pointillés, le bit de poids fort MSB du compteur CNT-B fait partie de la valeur j fournie au multiplexeur. De façon générale, pour un nombre B de p bits et un compteur CNT-B comptant modulo p+1, le multiplexeur associé au nombre B comporte p+1 entrées, dont la dernière, sélectionnée lorsque j = p, reçoit 0 en permanence. Les termes AiBi produits séquentiellement par la porte 10 sont fournis à un démultiplexeur 1 vers 7 DMUX. L'entrée de sélection du démultiplexeur reçoit la sortie 25 d'un additionneur 14 qui fournit la somme des poids i et j du terme AiBi courant, ces poids étant fournis respectivement par les compteurs CNT-A et CNT-B. Ainsi, la ligne de sortie du démultiplexeur vers laquelle le terme courant AiBi est aiguillé est représentative du décalage à gauche à opérer pour sommer le terme, c'est-à-dire du rang de la colonne où le terme est rangé selon la représentation de la figure 1. 30 La sommation des termes AiBi est effectuée à l'aide d'un compteur CNT-R à incrément programmable, cadencé par l'horloge CK. Les incréments sont programmables par puissances de 2. La taille en bits du compteur est celle n+p du résultat R à produire, soit huit bits RO à R7 dans l'exemple. Le compteur comprend n+p-1 = 7 entrées de programmation d'incrément, pour les bits RO à R6, respectivement, recevant les sorties du démultiplexeur DMUX. Le fonctionnement du compteur CNT-R est le suivant. Lorsqu'une entrée de programmation de rang k est à 1, la valeur formée par les bits de rangs k et au-dessus est 5 incrémentée de 1 au prochain front actif de l'horloge CK, ce qui revient à incrémenter le compteur de 2k. En théorie, plusieurs entrées de programmation peuvent être à 1, mais dans la structure de la figure 2, seule une entrée à la fois est à 1, ce qui se produit lorsque le terme AiBi courant, transmis sur l'une des sorties du démultiplexeur DMUX, est à 1. Le contenu du compteur CNT-R reste inchangé lorsque toutes les entrées de 10 programmation sont à 0. Avec cette configuration, chaque terme AiBi est ajouté au contenu du compteur CNT-R à la position i+j, ce qui correspond à l'addition du terme au contenu d'un registre avec un décalage à gauche de i+j bits, ou encore à l'addition du terme après l'avoir multiplié par 21+J. 15 La figure 3 est un diagramme illustrant un premier mode de fonctionnement du multiplieur de la figure 2. Le compteur CNT-A est configure pour compter en avant, tandis que le compteur CNT-B est configuré pour compter en arrière. Les valeurs initiales des deux compteurs sont programmées à 0. Ainsi, au rythme de l'horloge CK, et dans le cadre de l'exemple avec n = p = 4, le compteur CNT-A compte 0, 1, 2, 3, 0, 20 1... tandis que le compteur CNT-B compte 0, 4, 3, 2, 1, 0, 4, 3... Au premier cycle d'horloge CK, on ajoute le terme A0B0 à la position 0 du compteur CNT-R. Au deuxième cycle, le compteur CNT-B contient la valeur 4, qui est hors-limites - le terme A1B4, non défini, est annulé et le contenu du compteur CNT-R reste inchangé. Aux deux cycles suivants, on ajoute successivement les termes A2B3 et A3B2 25 à la position 5 du compteur CNT-R, et ainsi de suite. Au bout de 20 cycles, on a ajouté tous les termes AiBi aux positions correspondantes du compteur CNT-R, qui contient alors le résultat R de la multiplication. On remarque que les poids i et j des termes AiBi varient de manière quelconque au cours des cycles d'horloge. Cela n'a aucune importance, puisque l'addition est 30 commutative, et que le résultat final sera le même, pourvu que les termes soient pris en compte avec le bon décalage et qu'ils soient tous balayés. Ces propriétés sont donc exploitées pour générer la séquence des termes AiBi de manière particulièrement simple, à l'aide de deux simples compteurs comptant en continu. Le prix à payer pour cette simplicité est la génération de cycles fantômes, correspondant aux phases où le compteur CNT-B est hors-limites. Dans l'exemple de la figure 3, on compte quatre cycles fantômes, représentés dans des cadres, et seize cycles utiles. Pour des nombres de 4 bits, on compte un cycle fantôme sur cinq. En démarrant les compteurs des valeurs 2 et 3, c'est-à-dire en démarrant juste après le premier cycle fantôme, comme cela est représenté par une étendue Fi, on parvient à faire la multiplication en 19 cycles au lieu de 20. Après le 19e cycle, au lieu de finir sur les valeurs 1 et 4, correspondant à un cycle fantôme, on force les compteurs à leurs valeurs de démarrage 2 et 3. Dans ce cas, chaque multiplication est effectuée en 19 cycles au lieu de 20. De façon générale, la proportion de cycles fantômes est de un pour chaque révolution du compteur CNT-B, ou du compteur qui a le plus de cycles à compter. Donc cette proportion diminue lorsque le nombre de bits des multiplicandes augmente. La proportion peut être diminuée encore en choisissant les valeurs de démarrage des compteurs juste après un cycle fantôme, ce qui permet de réduire de 1 le nombre de cycles fantômes par phase de multiplication. La figure 4 est un diagramme illustrant une variante où les compteurs CNT-A et CNT-B démarrent de leurs valeurs initiales par défaut, c'est-à-dire les valeurs prises après une simple réinitialisation des compteurs. La structure des compteurs est alors simplifiée par 20 l'omission des circuits servant à programmer les valeurs de démarrage (INIT). Ainsi, au premier cycle d'horloge, les compteurs CNT-A et CNT-B viennent d'être initialisés à leurs valeurs par défaut 0 et 4. Le premier cycle est un cycle fantôme, puisque la valeur 4 est hors-limites. Les termes ABi sont ensuite produits selon une séquence différente qu'à la figure 3, mais cela n'a aucune conséquence sur le résultat 25 final compte tenu de la commutativité de l'addition. Les cycles fantômes sont représentés dans des cadres. Dans les exemples des figure 3 et 4, on remarque que des termes de même position i+j dans le résultat R sont tous produits consécutivement, selon la séquence de positions 0, 5, 1, 6, 2, 3, 4 à la figure 3 et selon la séquence 4, 0, 5, 1, 6, 2, 3 à la figure 4. Or, il n'est 30 pas indispensable que les termes de même position dans le résultat soient produits consécutivement, du fait de la commutativité de l'addition. La figure 5 est un diagramme illustrant un deuxième mode de fonctionnement produisant une séquence de termes selon des positions i+j non consécutives. Ici le compteur CNT-B est configure pour compter en avant, comme le compteur CNT-A. Les compteurs CNT-A et CNT-B comptent respectivement de 0 à 3 et de 0 à 4. Au premier cycle, les compteurs ont été réinitialisés et contiennent chacun la valeur O. Au cours des quatre premiers cycles d'horloge, les contenus des compteurs CNT-A et CNT-B varient de manière identique. Au cinquième cycle, un cycle fantôme, le compteur CNT-A déborde et revient à 0, tandis que le compteur CNT-B atteint sa valeur maximale 4, pour revenir à 0 au sixième cycle. La position dans le résultat des termes AiBi change à chaque cycle. Cela ne présente aucun inconvénient, et permet d'utiliser deux compteurs de même nature démarrant de 10 leur valeur de réinitialisation. La multiplication est terminée au 19e cycle et le 20e cycle est un cycle fantôme. On peut ainsi supprimer ce cycle fantôme dans des multiplications consécutives en forçant la réinitialisation des compteurs à la fin de chaque 19e cycle. La figure 6a représente schématiquement un mode de réalisation de compteur à 15 incrément programmable CNT-R. Ce mode de réalisation est illustré sur la base d'une architecture de compteur asynchrone. Un compteur asynchrone comprend une série de bascules T connectées en cascade, l'entrée d'horloge de chaque bascule recevant la sortie inversée Q/ de la bascule précédente. L'entrée d'horloge de la première bascule reçoit l'horloge de comptage, et 20 chaque bascule reçoit la valeur 1 sur son entrée de basculement T. Avec cette configuration, chaque bascule commute son état à chaque fois que la sortie Q/ de la bascule précédente présente un front montant, c'est-à-dire lorsque la bascule précédente passe de 1 à 0. A la figure 6a, le compteur comprend autant de bascules (Ro-R7) que de bits dans le 25 résultat R de la multiplication. L'entrée d'horloge de chaque bascule est précédée d'un multiplexeur qui sélectionne, soit la sortie Q/ de la bascule précédente, soit le signal d'horloge CK. Le multiplexeur associé à la première bascule Ro reçoit la valeur 0 à la place de la sortie Q/ d'une bascule. Les commandes de sélection des multiplexeurs constituent les entrées de 30 programmation d'incrément, reliées aux sorties du démultiplexeur DMUX de la figure 2. Lorsqu'une entrée de programmation est à 0, le multiplexeur sélectionne la sortie Q/ de la bascule précédente, selon une configuration de compteur asynchrone traditionnel. Pour la première bascule, le multiplexeur sélectionne la valeur O. Ainsi, si toutes les entrées de programmation sont à 0, le compteur ne reçoit aucun signal d'horloge et conserve son contenu. Lorsqu'une entrée de programmation de rang k est à 1, le multiplexeur aiguille l'horloge CK vers la bascule Rk. Ainsi, si seule cette entrée de programmation est à 1, les autres étant à 0, les bascules Rk à R7 se comportent comme un compteur de 8-k bits qui est incrémenté au prochain front descendant de l'horloge CK, tandis que les bascules Ro à Rk_i sont figées. La figure 6b représente schématiquement un mode de réalisation de compteur à 10 incrément programmable de structure synchrone. Un compteur synchrone comprend une série de bascules T cadencées simultanément par une même horloge CK. L'entrée de basculement T de chaque bascule est connectée pour n'être active que si toutes les bascules de rang inférieur sont à 1. Cela est réalisé par une série de portes ET 15 connectées en cascade. Chaque porte ET commande 15 l'entrée T d'une bascule associée et combine la sortie Q de la bascule précédente avec la sortie de la porte ET précédente. L'entrée T de la première bascule reçoit normalement la valeur 1 en permanence, ainsi la porte ET précédant la deuxième bascule est optionnelle. Pour rendre l'incrément programmable, on prévoit une porte OU entre chaque porte ET 20 15 et l'entrée T de la bascule associée. Une première entrée de la porte OU reçoit la sortie de la porte ET, et une deuxième entrée de la porte OU forme une entrée de programmation d'incrément, dont le rang est celui de la bascule associée. Avec cette configuration, lorsqu'une entrée de programmation de rang k est mise à 1, la porte OU force à 1 l'entrée T de la bascule de rang k. La bascule commute alors à chaque front 25 d'horloge indépendamment des états des bascules de rang inférieur, incrémentant le contenu du compteur de 2k à chaque cycle. L'entrée T de la première bascule reçoit directement l'entrée de programmation de rang O. Les diagrammes 3 à 5 illustrent qu'il suffit, pour générer la séquence des poids i et j des 30 termes Ail3j, de prendre les contenus de deux compteurs qui comptent en continu, modulo n et p respectivement, en décalant le contenu de l'un des compteurs d'un pas à chaque fois que l'autre compteur a fait une révolution. Dans les exemples précédents, le contenu du compteur CNT-B est décalé à chaque révolution du fait qu'il compte un pas de plus par révolution. Le même effet pourrait être obtenu avec un compteur CNT-B qui compte modulo p au lieu de p+1, mais qui est arrêté pendant un cycle après chaque révolution. Dans ce cas, à la figure 5, on aurait la séquence 0, 1, 2, 3, 3, 0... pour le compteur CNT-B. Cela équivaut à décrémenter le compteur CNT-B de 1 à chaque révolution. Ces deux variantes produisent des cycles fantômes. La figure 7 est un diagramme de fonctionnement issu d'une transformation du diagramme de la figure 5, permettant de supprimer les cycles fantômes. Le compteur 10 CNT-B est ici configure pour compter en avant modulo p (4 dans l'exemple), au lieu de compter modulo p+1. Le décalage d'un pas entre les compteurs à chaque révolution est obtenu de la manière suivante, par exemple. A chaque fois que le compteur CNT-B atteint sa valeur maximale p-1, le compteur CNT-A est incrémenté de 2 au lieu de 1 au prochain cycle, 15 et cela pendant un seul cycle. On saute ainsi le cycle fantôme qui existait dans le diagramme de la figure 5. En fait, il n'est pas nécessaire de fixer à p-1 le seuil pour déclencher le décalage d'un pas. Il suffit que le compteur CNT-B ait effectué une révolution, une révolution pouvant démarrer à une valeur quelconque comprise entre 0 et p-1. 20 Par ailleurs, l'incrément utilisé pour le décalage peut être différent de 2. L'ensemble de valeurs que l'incrément peut prendre dépend des propriétés des opérandes. Lorsque les opérandes ont un nombre égal de bits, l'incrément peut prendre comme valeur tout nombre entier Ic compris entre 2 et p-1, tel que Ic-1 et p sont premiers entre eux. Les valeurs possibles de l'incrément Ic sont résumées dans le tableau suivant pour des 25 exemples de tailles d'opérande. Taille d'opérande Valeurs possibles pour Ic 4 bits 2 5 bits 2, 3, 4 6 bits 2 7 bits 2, 3, 4, 5, 6 8 bits 2, 4, 6 9 bits 2, 3, 5, 6, 8 10 bits 2, 4, 8 16 bits 2, 4, 6, 8, 10, 12, 14 L'homme du métier saura trouver des ensembles de définition de l'incrément Ic lorsque les opérandes sont de tailles différentes. La figure 8 représente partiellement et schématiquement un mode de réalisation de multiplieur série permettant d'obtenir ce fonctionnement. La structure de ce multiplieur est basée sur celle de la figure 2 ; des éléments similaires sont désignés par des mêmes références. Le compteur CNT-B est configure pour compter en avant modulo p au lieu de p+1. On 10 ne trouve plus le circuit de masquage de la figure 2, formé par la porte 12 commandée par un signal de masquage MK. Le compteur CNT-A est ici un compteur à incrément programmable. Il pourrait avoir la même structure que celle de la figure 6a. En pratique, on n'a besoin que des entrées de programmation de rangs 0 et 1, permettant, respectivement, de sélectionner un pas +1 et 15 un pas +2 pour les incréments. Ainsi, le compteur est de structure classique à partir de sa troisième bascule, si on a besoin de plus de 2 bits pour le compteur. Un comparateur 16 observe la sortie j du compteur CNT-B. Lorsque j est égal à p-1 (3 dans l'exemple), le comparateur programme l'incrément +2 du compteur CNT-A. Lorsque j est différent de p-1, c'est-à-dire dans tous les autres cas, le comparateur 20 programme l'incrément +1 du compteur CNT-A. Les modes de réalisation de multiplieur série décrits jusqu'à maintenant opèrent une multiplication en n xp cycles, où n etp sont les tailles respectives des opérandes A et B. Lorsque les tailles sont égales et une puissance de 2, il est possible de diviser par 2 le nombre de cycles en augmentant la surface du circuit selon un compromis acceptable. 25 On prévoit pour cela de produire deux séquences simultanées distinctes de termes ABi et de les sommer deux par deux. La première séquence, notée Ail3j, est produite directement par les compteurs CNT-A et CNT-B, et la deuxième séquence, notée Ai/Bii est produite par les compléments des compteurs CNT-A et CNT-B. On modifie en outre la façon de décaler le compteur CNT-A pour que tous les termes à sommer soient produits, sans doublons ni termes manquants. La figure 9 est un diagramme illustrant un exemple de production de séquences convenables pour des opérandes de 4 bits. En partant du diagramme de la figure 7, le compteur CNT-A, en plus d'être incrémenté de 2 à chaque révolution du compteur CNT-B, est incrémenté de 2 également à mi-révolution du compteur CNT-B. En d'autres termes, pour des opérandes de 4 bits, le compteur CNT-A est incrémenté de 2 à chaque fois que le contenu du compteur CNT-B passe par une valeur impaire. Le diagramme indique les séquences qui en découlent pour les valeurs i+j, i/+//, et les compléments CNT-A/, CNT-B/, des compteurs CNT-A et CNT-B. On remarque que toutes les combinaisons des couples (i, j) sont représentées sur 8 cycles dans les valeurs prises par les compteurs ou leurs compléments. La figure 10 représente schématiquement un mode de réalisation de multiplieur fonctionnant selon le mode de la figure 9. On retrouve la structure de la figure 8 en double. Un premier jeu de multiplexeurs MUX, porte ET 10, et démultiplexeur DMUX est associé aux contenus directs des compteurs CNT-A et CNT-B, fournis par les sorties Q des bascules formant ces compteurs. Un deuxième jeu de multiplexeurs MUX', porte ET 10', et démultiplexeur DMUX' est associé aux compléments des contenus des compteurs CNT-A et CNT-B, fournis par les sorties Q/ des bascules formant ces mêmes compteurs. Les démultiplexeurs DMUX, DMUX' sont commandés respectivement par les valeurs i+j et i/+//, produites respectivement par l'additionneur 14 et un additionneur 14' recevant les compléments des contenus des compteurs CNT-A et CNT-B. La somme des deux nombres formés par les sorties des démultiplexeurs est utilisée pour programmer l'incrément du compteur CNT-R. Dans l'exemple, on somme deux nombres de 6 bits, ce qui nécessiterait en théorie un additionneur complet de 6 bits. En réalité, compte tenu de la structure particulière utilisée, il s'avère qu'une simple porte OU suffit pour additionner les bits de poids plus élevés et les bits de poids plus faibles. En effet, comme le montre le diagramme de la figure 9, dans la plupart des cycles, les rangs des sorties des deux démultiplexeurs, définis par les valeurs i+j et i/+//, sont différents. Il en résulte qu'on additionne un bit forcément nul avec un bit éventuellement non nul, ce qui requiert une simple porte OU. Ce n'est que pour le rang central, 3 dans l'exemple, qu'on somme deux bits pouvant être tous deux à 1. On prévoit pour cela un demi-additionneur formé, comme cela est représenté, d'une porte OU-exclusif et d'une porte ET, recevant chacune les sorties de rang 3 des deux démultiplexeurs. La porte OU-exclusif fournit le bit de rang 3 de la somme et la porte ET fournit une retenue. Le bit de rang 4 de la somme est formé d'un OU des sorties de rang 4 des deux démultiplexeurs, suivi d'un OU avec la retenue. Il n'y a pas d'autre retenue à prendre en compte car, si le demi-additionneur produit une retenue, c'est que toutes les sorties des démultiplexeurs, sauf celles de rang 3, sont nulles. Le comparateur 16, qui détermine la valeur de l'incrément à appliquer au compteur CNT-A, est configure pour comparer le contenu du compteur CNT-B aux valeurs 1 et 3, c'est-à dire la valeur médiane et la valeur maximale du contenu du compteur. Avec cette structure, l'incrément programmé pour le compteur CNT-R peut être quelconque, et différent d'une puissance de 2. En d'autres termes, plusieurs entrées de 15 programmation d'incrément peuvent être simultanément à 1. Les structures de compteur des figures 6a et 6b peuvent ne pas fonctionner dans une telle situation. La figure 11 représente partiellement un mode de réalisation de compteur à incrément programmable permettant de mettre à 1 un nombre quelconque d'entrées de programmation. Ce compteur est d'architecture synchrone, comme celui de la figure 6b, 20 c'est-à-dire que l'entrée de commutation T d'une bascule n'est active, normalement, que si toutes les bascules de rang inférieur sont à 1. En outre, une cellule logique 18 est associée à chaque bascule pour, d'une part, « demander » la commutation à la cellule suivante par une porte ET 20 et, d'autre part, décider de la commutation de la bascule courante par une porte OU-exclusif 22, dont la 25 sortie est reliée à l'entrée T de la bascule. Une « demande » de commutation est équivalente, dans un compteur synchrone classique, à l'indication que toutes les bascules de rang inférieur sont à 1 et, donc, que la bascule suivante doit commuter. Dans la structure de la figure 11 on décide en outre, en fonction de l'entrée de programmation, si la bascule courante est effectivement commutée et si la demande de 30 commutation est propagée. La cellule 18 est configurée pour provoquer la commutation de la bascule associée au prochain front d'horloge CK, si l'une des conditions suivantes est satisfaite : a) L'entrée de programmation est à 0 et la cellule précédente demande la commutation de la bascule - cas du compteur synchrone classique. b) L'entrée de programmation est à 1, et la cellule précédente ne demande pas la commutation de la bascule - cas du compteur de la figure 6b avec une seule entrée de programmation à 1. Cette fonctionnalité est obtenue à l'aide de la porte OU-exclusif 22 dont une première entrée est reliée à l'entrée de programmation, et une deuxième entrée reçoit la sortie de la porte ET 20 de la cellule précédente. La cellule 18 est en outre configurée pour figer la bascule si l'une des conditions 10 suivantes est satisfaite : c) L'entrée de programmation est à 0 et la cellule précédente ne demande pas la commutation de la bascule - cas du compteur synchrone classique. d) L'entrée de programmation est à 1, et la cellule précédente demande la commutation de la bascule. En d'autres termes, si la commutation est 15 « demandée » en double, la bascule ne commute pas, ce qui revient en fait à commuter la bascule deux fois - cela se produit quand une bascule de rang inférieur a son entrée de programmation à 1. Cette fonctionnalité est également obtenue à l'aide de la porte OU-exclusif 22. Une demande de commutation est produite par la porte ET 20 dans les cas suivants : 20 e) Dans le cas a) lorsque la bascule contient 1. f) Dans le cas b) lorsque la bascule contient 1. g) Dans le cas d), indépendamment du contenu de la bascule. On suppose que la bascule a commuté deux fois même si elle est restée figée. Si elle contient 0, c'est que la bascule est passée par 1 (virtuellement) et qu'une demande de 25 commutation correspondante doit être propagée. Les fonctions e) et f) sont obtenues par une porte OU 24 combinant la demande de commutation de la cellule précédente et l'entrée de programmation. Une première entrée de la porte ET 20 reçoit la sortie de la porte 24, et une deuxième entrée reçoit la sortie Q de la bascule. La fonction g) est obtenue par une porte ET 26 combinant la demande de commutation de la cellule précédente et l'entrée de programmation. Une porte OU 28 est intercalée entre la sortie Q de la bascule et la porte 20, et force la deuxième entrée de la porte 20 à 1 lorsque la sortie de la porte 26 est active.5 REVENDICATIONS1. Multiplieur d'un nombre binaire A de n bits par un nombre binaire B de p bits, configuré pour additionner chaque terme ABJ avec un décalage à gauche de i+j bits, où A, est le bit de poids i du nombre A, et BJ le bit de poids j du nombre B, avec j variant entre 0 et n-1, et j variant entre 0 et p-1, caractérisé en ce qu'il comprend : - un premier compteur (CNT-A) associé au nombre A, configuré pour compter modulo n, et cadencé par une horloge (CK) ; - un deuxième compteur (CNT-B) associé au nombre B, cadencé par ladite horloge (CK) ; - des moyens (MUX, 10) pour produire séquentiellement les termes ABJ en prenant les contenus des premier et deuxième compteurs comme poids i et j, respectivement ; et - des moyens (16) pour décaler le contenu de l'un des premier et deuxième compteurs d'un incrément lorsque l'autre compteur a fait une révolution. 2. Multiplieur selon la revendication 1, comprenant, pour additionner les termes ABj, un compteur à incrément programmable (CNT-R), de n+p bits, cadencé par ladite horloge (CK) et recevant le terme ABJ courant comme consigne de programmation d'un incrément de 2'+'. 3. Multiplieur selon la revendication 2, dans lequel le compteur à incrément programmable (CNT-R) comprend une série de bascules connectées en cascade de manière que, si l'entrée de programmation de rang i+j est active, la bascule de rang i+j commute systématiquement, et toute bascule de rang k> i+j commute si toutes les bascules de rang compris entre i+j et k-1 sont à un état actif. 4. Multiplieur selon la revendication 1, dans lequel le deuxième compteur (CNT-B) est configuré pour compter modulo p+1, et le multiplieur comprend des moyens (12) pour inhiber la prise en compte du terme ABJ courant lorsque le deuxième compteur contient j=p. 5. Multiplieur selon la revendication 1, dans lequel le deuxième compteur (CNT-B) est configuré pour compter modulo p, et le multiplieur comprend des moyens (16)pour incrémenter le premier compteur d'un incrément supérieur ou égal à 2 à chaque révolution du deuxième compteur. 6. Multiplieur selon la revendication 1, dans lequel le premier compteur (CNT-A) est configuré pour compter en avant et le deuxième compteur (CNT-B) est configuré pour compter en arrière. 7. Multiplieur selon la revendication 1, dans lequel les moyens de production des termes AM., comprennent : - deux multiplexeurs (MUX) recevant respectivement les nombres A et B, et dont les commandes de sélection sont fournies respectivement par les premier et deuxième compteurs ; et - une porte ET (10) combinant les sorties des multiplexeurs. 8. Multiplieur selon la revendication 1, dans lequel les moyens d'inhibition de la prise en compte du terme A1B1 comprennent une porte (12) configurée pour annuler le terme lorsque le deuxième compteur contient p. 9. Multiplieur selon la revendication 7 dans lequel, pour inhiber la prise en compte du terme AB, le multiplexeur associé au nombre B comprend une (p+1)-ième entrée sélectionnable par le contenu (j) du deuxième compteur (CNT-B), et recevant la valeur 0.