Brevet FR3051084A1 — publié le 20171110

B15001 - 16-RO-056 1 GÉNÉRATEUR DE NOMBRES D'OSCILLATIONS Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, des circuits ou fonctions électroniques utilisables comme dans un circuit ou 5 dispositif électronique. Un exemple d'application des circuits et fonctions électroniques de la présente description est la réalisation d'un générateur de nombres aléatoires. Un autre exemple d'application est la réalisation d'une fonction physique non clonable (PUF), par exemple pour générer des identifiants 10 uniques ou des clés cryptographiques uniques. La présente description concerne plus particulièrement les générateurs de nombres aléatoires dans des applications de sécurité telles que de chiffrement, d'authentification, etc. Exposé de l'art antérieur 15 Dans de nombreuses applications, des unités de traitement, par exemple des unités centrales de traitement (CPU) des microcontrôleurs, utilisent des nombres générés aléatoirement. Les circuits de génération de nombres aléatoires 20 utilisent divers circuits ou sous-ensembles qui peuvent avoir d'autres applications hors de la génération de nombres aléatoires. En particulier, un générateur de nombres aléatoires utilise des 3051084 B15001 - 16-RO-056 2 circuits de type oscillateur, multiplexeur, etc. qui, bien que tout particulièrement intéressants dans la génération de nombres aléatoires, ne sont pas limités à ces applications. Les générateurs de nombres auxquels s'applique la 5 présente description sont basés sur l'utilisation de lignes à retard rebouclées l'une sur l'autre. Il existe un besoin d'amélioration des générateurs de nombres aléatoires ou des circuits fournissant des fonctions physiques non clonables. 10 Plus généralement, il existe un besoin d'amélioration de fonctions électroniques logiques, utilisables non seulement dans des applications de génération de nombres aléatoires ou reproductibles, mais également dans d'autres applications où des problèmes similaires se posent. 15 Résumé Un mode de réalisation pallie tout ou partie des inconvénients des solutions usuelles de génération de nombres aléatoires ou de fonctions physiques pour identifiants uniques, clés cryptographiques, etc. 20 Un mode de réalisation selon un aspect de la présente description propose un circuit dont le comportement est modélisable pour réaliser un générateur de nombres d'oscillations à des fins de génération de nombres aléatoires ou d'un nombre non clonable. 25 Un mode de réalisation selon cet aspect propose un générateur dont le comportement puisse être vérifié. Un mode de réalisation selon cet aspect propose une solution compatible avec l'utilisation de cellules standard d'une technologie électronique donnée. 30 Un mode de réalisation selon un autre aspect de la présente description propose une structure de multiplexeur symétrique, c'est-à-dire ayant un comportement temporel similaire pour faire transiter un front montant et pour faire transiter un front descendant. 3051084 B15001 - 16-RO-056 3 Un mode de réalisation selon cet autre aspect propose une structure de multiplexeur compatible avec les structures usuelles de multiplexeur. Un mode de réalisation selon encore un autre aspect de 5 la présente description propose un compteur de changement d'état (d'oscillations) de signaux bruités. Un mode de réalisation selon cet encore autre aspect propose une solution plus particulièrement adaptée au comptage d'une sortie d'un générateur d'oscillations. 10 Ainsi, un mode de réalisation d'un premier aspect prévoit un circuit de génération d'un nombre d'oscillations comportant : une première branche comprenant au moins une ligne à retard apportant des retards symétriques sur fronts montants et 15 sur fronts descendants et au moins un élément retardateur asymétrique apportant des retards différents sur fronts montants et sur fronts descendants ; une deuxième branche, rebouclée sur la première et comprenant au moins une ligne à retard apportant des retards 20 symétriques sur fronts montants et sur front descendants. Selon un mode de réalisation de ce premier aspect, la deuxième branche comporte en outre au moins un élément retardateur asymétrique apportant des retards différents sur fronts montants et sur fronts descendants. 25 Selon un mode de réalisation de ce premier aspect, des portes de type NON-ET, combinant les sorties respectives des branches avec un signal de commande, sont intercalées entre les sorties respectives de chaque branche et l'entrée de l'autre branche. 30 Selon un mode de réalisation de ce premier aspect, les lignes à retard sont constituées d'éléments logiques ramenant à une fonction non inverseuse à une seule entrée et dont les temps de montée et de descente sont identiques. 3051084 B15001 - 16-RO-056 4 Selon un mode de réalisation de ce premier aspect, le ou les éléments retardateurs sont constitués de circuits logiques non inverseurs. Selon un mode de réalisation de ce premier aspect, chaque élément retardateur est constitué d'une fonction logique que l'on peut ramener à une fonction non inverseuse ne dépendant que d'une seule entrée et dont les temps de montée et de descente sont différents. Selon un mode de réalisation de ce premier aspect, la ou les branches comportent en outre, une deuxième ligne à retard apportant des retards symétriques sur fronts montants et sur fronts descendants, connectée en parallèle sur l'élément retardateur de la branche concernée. Un mode de réalisation prévoit également un générateur 15 de nombres comportant : au moins un circuit de génération d'un nombre d'oscillations ; et au moins un compteur du nombre d'oscillations générées par ledit circuit. 20 Selon un mode de réalisation, ledit circuit est configuré pour générer un nombre aléatoire d'oscillations. Un mode de réalisation prévoit également dispositif électronique comportant au moins un générateur de nombres configuré pour générer un nombre reproductible. 25 Un mode de réalisation d'un deuxième aspect prévoit un multiplexeur logique, deux vers un, comportant : deux bornes d'entrée ; une borne de sortie ; une borne de commande ; et 30 un multiple de quatre multiplexeurs unitaires deux vers un raccordés en série, un premier multiplexeur unitaire ayant ses entrées connectées aux bornes d'entrée, un dernier multiplexeur unitaire ayant sa sortie connectée à la borne de sortie et les autres multiplexeurs unitaires ayant leurs entrées respectives 35 interconnectées à la sortie du multiplexeur précédent dans 3051084 B15001 - 16-RO-056 5 l'association en série, une moitié des multiplexeurs unitaires étant commandée en inverse par rapport à une autre moitié. Selon un mode de réalisation de ce deuxième aspect, les multiplexeurs unitaires sont des multiplexeurs inverseurs. 5 Selon un mode de réalisation de ce deuxième aspect, tous les multiplexeurs unitaires sont identiques. Selon un mode de réalisation de ce deuxième aspect, une moitié des multiplexeurs a ses entrées de commande connectées à ladite borne de commande. 10 Selon un mode de réalisation de ce deuxième aspect, l'autre moitié des multiplexeurs a ses entrées de commande connectées en sortie d'un multiplexeur dont une entrée est connectée à ladite borne de commande. Un mode de réalisation prévoit également un multiplexeur 15 quatre vers un, comportant trois multiplexeurs logiques deux vers un. Un mode de réalisation prévoit également un circuit de génération de nombres, comportant au moins un multiplexeur tel que ci-dessus. 20 Un mode de réalisation d'un troisième aspect prévoit un circuit de comptage d'impulsions fournies par un circuit ayant au moins deux bornes de fourniture de signaux impulsionnels inversés, comportant : un premier compteur des impulsions d'un premier signal 25 impulsionnel fournissant un premier compte ; un deuxième compteur des impulsions d'un deuxième signal impulsionnel fournissant un deuxième compte ; et un élément de sélection de l'un des comptes. Selon un mode de réalisation de ce troisième aspect, 30 l'élément de sélection reçoit, outre les comptes fournis par les compteurs, lesdits signaux impulsionnels. Selon un mode de réalisation de ce troisième aspect, l'élément de sélection prend en compte la disparition d'impulsions d'un des signaux impulsionnels. 3051084 B15001 - 16-RO-056 6 Selon un mode de réalisation de ce troisième aspect, le compte sélectionné est celui du compteur dont le signal impulsionnel s'arrête en premier. Selon un mode de réalisation de ce troisième aspect, le 5 compte sélectionné est celui du compteur dont le signal impulsionnel s'arrête en dernier. Selon un mode de réalisation de ce troisième aspect, le compte sélectionné est celui : du compteur ayant le plus grand compte si les deux 10 comptes ont la même parité ; ou du compteur ayant le plus grand compte si ce compte est pair et le plus petit si le compte est impair. Selon un mode de réalisation de ce troisième aspect, le circuit de sélection fournit le bit de poids faible du compte sélectionné. Selon un mode de réalisation de ce troisième aspect, les impulsions sont fournies par deux lignes à retard rebouclées l'une sur l'autre d'un générateur d'oscillations. Selon un mode de réalisation de ce troisième aspect, le 20 circuit de comptage d'impulsions comporte en outre, en amont de chaque compteur, un circuit de mise en forme des impulsions. Selon un mode de réalisation de ce troisième aspect, le circuit de mise en forme comporte une bascule dont une sortie est rebouclée sur une entrée d'initialisation ou de réinitialisation 25 (RN) après traversée d'un élément retardateur. Selon un mode de réalisation de ce troisième aspect, le retard apporté par l'élément retardateur est supérieur à la durée minimale de prise en compte d'une impulsion par la bascule. Un mode de réalisation prévoit un circuit de génération 30 de nombres, comportant au moins un circuit de comptage d'impulsions. Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de 3051084 B15001 - 16-RO-056 7 réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique 5 du type auquel s'appliquent les modes de réalisation décrits ; la figure 2 représente un exemple de circuit de génération d'un nombre d'oscillations pour un générateur de nombres aléatoires ou d'un nombre non clonable; les figures aA, 3B, 3C, 3D et 3E illustrent, sous forme 10 de chronogrammes, une nouvelle interprétation du fonctionnement d'un générateur d'un nombre d'oscillations ; la figure 4 représente un mode de réalisation d'un générateur d'oscillations ; la figure 5 représente, de façon schématique et sous 15 forme de blocs, une variante de réalisation d'un générateur d'un nombre d'oscillations ; la figure 6 représente, de façon schématique, un mode de réalisation de lignes à retard pour générateur de nombre d'oscillations ; la figure 7 représente, de façon schématique, un mode de réalisation d'un circuit multiplexeur symétrique deux vers un ; la figure 8 représente un mode de réalisation d'un multiplexeur symétrique quatre vers un ; la figure 9 représente un mode de réalisation d'un 25 générateur de nombres aléatoires basé sur un générateur de nombre d'oscillations ; la figure 10 représente un mode de réalisation d'un circuit de mise en forme d'un signal impulsionnel ; et les figures 11A, 11B, 11C et 11D illustrent, sous forme 30 de chronogrammes, le fonctionnement du circuit de mise en forme de la figure 10. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. En particulier, les éléments 35 structurels et/ou fonctionnels communs aux différents modes de 3051084 B15001 - 16-RO-056 8 réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation décrits ont 5 été représentés et seront détaillés. En particulier, les utilisations des nombres générés (aléatoires ou non clonables) et les applications des circuits intégrant le générateur décrit n'ont pas été détaillées, les modes de réalisation décrits étant compatibles avec les utilisations et applications usuelles. De 10 façon arbitraire, on désigne par état 1, l'état haut d'un signal logique et par état 0 son état bas. Lorsque l'on fait référence aux termes "environ", "approximativement" ou "de l'ordre de", cela signifie à 10 % près, de préférence à 5 % près. Le générateur de nombres objet de la présente 15 description est décrit par la suite en relation avec un exemple de générateur de nombres aléatoires d'oscillations. Sauf précision contraire, tout ce qui est décrit par la suite s'applique cependant à un générateur de nombre d'oscillations pour fonction physique non clonable. 20 La figure 1 représente, de façon très schématique un circuit électronique 1 du type auquel d'appliquent les modes de réalisation qui vont être décrits. Le circuit 1 comporte, entre autres : une entité de calcul 12 ou de traitement (PU), par 25 exemple une machine d'états, un microprocesseur, un circuit logique programmable, etc. ; une ou plusieurs zones 14 (MEM) de stockage volatile et/ou non volatile pour stocker tout ou partie des données et clés ; 30 un ou plusieurs circuits 16 mettant en oeuvre diverses fonctions (FCT) liées à l'application à laquelle est destiné le circuit 1, par exemple un crypto processeur, un circuit de commande d'un capteur biométrique, etc. ; un ou plusieurs bus 17 de données, d'adresses et/ou de 35 commandes entre les différents éléments internes au circuit 1 et 3051084 B15001 - 16-RO-056 9 une interface d'entrée-sortie 19 (I/O) de communication avec l'extérieur du circuit 1 ; et un ou plusieurs circuits 2 (RNG) de génération de nombres aléatoire. 5 La figure 2 représente un exemple de schéma électrique d'un générateur 10 usuel d'un nombre d'oscillations pour générateur de nombres aléatoires. Ce générateur 10 est basé sur deux lignes à retard composées chacune d'éléments retardateurs en série, rebouclées 10 l'une sur l'autre, chaque élément retardateur restituant le signal dans le même état (1 ou 0) que son entrée. Le nombre d'éléments retardateurs de chaque chaîne peut être différent ou identique. Dans l'exemple représenté, une première ligne 11 comporte quatre élément éléments retardateurs 111, 112, 113 et 114 en série entre 15 une borne de sortie 131 d'une première porte logique 13 de type NON-ET (NAND) et une première borne d'entrée 153 d'une deuxième porte logique 15 de type NON-ET. Une deuxième ligne 17 comporte trois éléments retardateurs 171, 172 et 173 en série entre une borne de sortie 151 de la deuxième porte 15 et une première entrée 20 133 de la première porte 13. Les deuxièmes entrées respectives 135 et 155 des portes logiques 13 et 15 constituent des bornes d'entrée destinées à recevoir un même signal CTRL de commande (de déclenchement de la génération d'un nombre). Le nombre d'oscillations, qui conditionne le nombre aléatoire, est prélevé, par exemple, en sortie de la première ligne, c'est-à-dire sur la première entrée 153 de la porte 15. En variante, le nombre d'oscillations est prélevé en entrée 133 de la porte 13, en sortie 131 de la porte 13 ou en sortie 151 de la porte 15. La différence entre les retards apportés par les deux 30 lignes conditionne le rapport cyclique des signaux présents aux bornes 133 et 153. En théorie, le générateur de la figure 2 oscille indéfiniment avec un rapport cyclique tant que le signal CTRL est à l'état 1. En pratique, en l'absence de bruit mais avec des 35 éléments retardateurs (portes logiques) ayant des temps différents 3051084 B15001 - 16-RO-056 10 qui finissent par déformer suffisamment le rapport cyclique pour que l'oscillateur s'arrête, le générateur finit par s'arrêter après un nombre d'oscillations fixe. En présence de bruit (gigue de phase - jitter), le générateur finit par s'arrêter mais après 5 un nombre d'oscillations dont la valeur varie. Ainsi, le fait que le générateur s'arrête n'est pas en soi gênant, bien au contraire, mais ce qui est gênant est de ne pas pouvoir déterminer autour de quelle valeur (quel nombre d'oscillations) il s'arrêtera. En effet, pour que le générateur 10 de nombres aléatoires fonctionne correctement, il faut qu'il ait accumulé suffisamment de bruit, donc un nombre d'oscillations suffisant afin que le résultat du comptage du nombre d'oscillations fournisse, quand le compteur s'arrête, un alea suffisant au niveau de son bit de poids faible ou de quelques 15 (moins de dix) bits de poids faible du compteur d'oscillations. Les modes de réalisation décrits ci-dessous tirent leur origine dans une nouvelle analyse du comportement d'un générateur de nombres d'oscillations. En particulier, les inventeurs ont constaté qu'il était 20 possible de lier le comportement du générateur de nombres d'oscillations aux paramètres intrinsèques mais quantifiables des éléments qui le constituent. Les figures aA, 3B, 3C, 3D et 3E illustrent, par des chronogrammes, le fonctionnement théorique du circuit de la figure 25 2. La figure aA représente un exemple d'allure du signal CTRL. La figure 3B illustre un exemple correspondant d'allure du signal présent sur la sortie 131 de la porte 13. La figure 3C illustre un exemple correspondant d'allure du signal présent sur la sortie de la première ligne (l'entrée 133 de la porte 13). La figure 3D illustre un exemple correspondant d'allure du signal présent sur la sortie 151 de la porte 15. La figure 3E illustre un exemple correspondant d'allure du signal présent sur la sortie de la première ligne (l'entrée 153 de la porte 15). 3051084 B15001 - 16-RO-056 11 On suppose que le retard apporté par chaque porte et par chaque élément retardateur vaut une valeur tdu, identique pour tous les éléments et portes. Quand le signal CTRL est à l'état 0, les sorties 131 et 5 151 sont tout le temps à l'état 1. Par conséquent les sorties 133 et 153 des lignes 17 et 11 sont stables à l'état 1. A un instant t30, le signal CTRL est basculé à l'état 1 pour activer la génération. Après un retard tdu, les sorties 131 et 151 basculent à l'état 0 à un instant t31. Les lignes 13 et 15 10 apportent respectivement des retards de 4*tdu et de 3*tdu aux fronts montants et descendants des signaux présents aux bornes 131 et 151. Par conséquent, le signal 133 bascule à l'état 1 à un instant t32, postérieur de 3*tdu par rapport à l'instant t31 et le signal 153 bascule à l'état 1 à un instant t33, postérieur de 15 4*tdu par rapport à l'instant t31. Les signaux 131 et 151 basculent alors à l'état 1 avec un retard tdu par rapport aux instants t32 et t33 respectivement, et ainsi de suite. Le nombre d'oscillations prélevé, de préférence en 20 sortie 153 (ou 133), lorsque l'oscillation s'arrête, est aléatoire. On notera que ce nombre d'oscillations peut être compté à n'importe quel point de la boucle. Les inventeurs considèrent, qu'outre le bruit de phase, l'un des facteurs qui conduit à l'arrêt du générateur provient 25 notamment d'un déséquilibre entre les temps de montée et les temps de descente des signaux, c'est-à-dire entre le temps que met un élément retardateur ou une porte pour commuter de l'état 1 vers l'état 0 et de l'état 0 vers l'état 1. En effet, le décalage entre les temps de montée et temps de descente d'une branche du 30 générateur (ligne à retard plus porte NON-ET) entraîne qu'il arrive un moment où la durée d'un état devient inférieure au retard apporté par un élément de la ligne à retard. Un problème est que ce "moment" est fonction du nombre d'éléments retardateurs de la ligne (accumulation des décalages 35 temporels). On souhaiterait cependant pouvoir rendre contrôlable 3051084 B15001 - 16-RO-056 12 la durée au bout de laquelle un générateur s'arrête, afin, lors de la conception d'un nouveau circuit, de pouvoir garantir que le nombre d'oscillations avant l'arrêt du générateur est suffisant. En reprenant les notations de l'exemple de la figure 2, 5 on notera par la suite : tin, l'instant d'un front (montant ou descendant) de rang n du signal de la sortie 131 ; t2n, l'instant d'un front (montant ou descendant) de rang n du signal de la sortie 151 ; 10 Lin, la durée du niveau bas de rang n du signal de la sortie 131 (cette durée est liée au retard apporté par la deuxième ligne 17 plus la première porte 13) ; H2n, la durée du niveau haut de rang n du signal de la sortie 151 (cette durée est liée au retard apporté par la première 15 ligne 11 plus la deuxième porte 15) ; tri et tfi, les temps de montée et de descente respectifs du signal de la sortie 151 par rapport à l'instant de commutation de la borne 131 ; et tr2 et tf2, les temps de montée et de descente respectifs 20 du signal de la sortie 131 par rapport à l'instant de commutation de la borne 151. Le comportement du générateur peut s'écrire à partir de suites arithmétiques. En particulier, on peut écrire : 25 Lin = tl2n+1 tl2n et H2n = t22n+2 t22n+1. Par ailleurs : tl2n = t22n-1 tf2 tl2n+1 = t22n tr2 30 t22n-1 = tl2n-2 + tri ; et t22n = tl2n-1 tfi On peut en déduire : Lin = H2n-i - Afr2, avec Afr2 = tf2 - tr2 ; et H2/-1-1 = Lln_i + Afri, avec Afri = tfi - tri. 3051084 B15001 - 16-RO-056 13 A partir de ces relations, on peut exprimer les récurrences des différentes durées simplement en fonction des différences entre les temps de montée et de descente. Par exemple, pour la durée Lin, on peut écrire : 5 Lln+1 = Lin + Afrl - Afr2. Puis, en exprimant la suite à partir du premier te= L10 (n=0): Lin = L10 - n*r, avec r = Afr2 - Afrl. On obtient donc une suite arithmétique dont la raison r 10 est déterminable, lors de la conception du circuit, en fonction du nombre de cellules de base (éléments retardateurs) choisis et de leur écart entre temps de montée et temps de descente. Une relation similaires peut s'écrire pour les durées H2, avec : 15 H2n = H20 - n*r. De façon similaire, en notant : Hln, la durée du niveau haut de rang n du signal de la sortie 131 (cette durée est liée au retard apporté par la première ligne 11 plus la deuxième porte 15) ; 20 L2n, la durée du niveau bas de rang n du signal de la sortie 151 (cette durée est liée au retard apporté par la première ligne 11 plus la deuxième porte 15) ; et On peut obtenir les relations suivantes : Hln = H10 + n*r ; et 25 L2n = L20 + n*r. Si la différence entre les temps de montée et les temps de descente (la raison r) est négative, les durées Li et H2 augmentent tandis que les durées L2 et Hl diminuent. A l'inverse, si la raison r est positive, les durée Li et H2 diminuent tandis 30 que les durée Li et H2 augmentent. La figure 4 représente un mode de réalisation d'un générateur de nombres d'oscillations tirant profit de cette analyse. En particulier, on souhaite pouvoir contrôler (afin de 35 respecter des caractéristiques souhaitées pour le générateur 3051084 B15001 - 16-RO-056 14 aléatoire) le comportement temporel du générateur d'oscillations, c'est-à-dire la durée à partir de laquelle il s'arrête. Cette durée est non seulement fonction du retard apporté par les lignes à retard mais également des temps de montée et de descente de ces 5 lignes. Connaissant les comportements des cellules de base (éléments retardateurs) de la technologie dans laquelle on souhaite réaliser le générateur aléatoire, on peut déduire le nombre d'oscillations après lequel le générateur va s'arrêter. 10 Avec une raison r positive, on peut fixer une limite quand la durée Lin devient nulle, c'est-à-dire pour n = L1/r. En pratique, les oscillations s'arrêtent quand la durée de l'impulsion devient inférieure au retard d'un élément retardateur. Selon ce mode de réalisation, chaque branche est 15 composée d'une ligne à retard 21, respectivement 27, dite symétrique c'est-à-dire ayant des temps de montée et de descente identiques ou très proches (écart entre le temps de montée et de descente inférieur au dixième de la raison r) en série avec un élément 22, respectivement 28, dit asymétrique, dont les temps de 20 montée et de descente sont différents l'un de l'autre. Une borne 231 d'entrée la première branche est reliée en sortie d'une première porte logique 23 de type NON-ET (NAND) dont une première entrée 235 reçoit un signal de déclenchement CTRL et dont une seconde entrée 233 reçoit la sortie de la deuxième branche. Une 25 borne de sortie 253 de la première branche est reliée à une première entrée d'une deuxième porte 25 de type NON-ET dont une première entrée 255 reçoit le signal CTRL et dont la sortie 251 est reliée en entrée de la deuxième branche. La sortie du générateur d'un nombre aléatoire d'oscillations est par exemple 30 la borne 253 ou la borne 233. Comme précédemment, cette sortie, donc le comptage des oscillations, peut correspondre en variante à la sortie 231 ou 251 de la porte 23, respectivement 25, ou plus généralement à n'importe quel point de la boucle. En pratique, la sortie est reliée en sortie d'un compteur asynchrone du nombre d'oscillations qui compte le nombre d'oscillations entre 3051084 B15001 - 16-RO-056 15 l'activation du générateur par le signal CTRL et l'arrêt des oscillations. Ce compteur (non représenté en figure 4) est, par exemple, constituée d'une bascule ou de plusieurs bascules en cascade, l'entrée d'horloge de la ou d'une première bascule 5 recevant le signal de sortie du générateur. La ou les sorties des bascules fournissent un nombre sur un ou plusieurs bits (selon le nombre de bascules) dont généralement seuls les bits ou le bit de poids faible sont conservés pour constituer le nombre aléatoire. Le cas échéant, plusieurs générateurs sont utilisés en 10 parallèle pour augmenter le débit en bits aléatoires générés. Pour réaliser les lignes à retard symétriques 21 et 27, on utilise, de préférence des inverseurs appariés, c'est-à-dire un nombre pair d'inverseurs dans chaque ligne. Par exemple, la ligne 21 comporte p paires d'inverseurs 3 en série tandis que la 15 ligne 27 comporte q paires d'inverseurs 3 en série. Les nombre p et q peuvent être identiques ou différents l'un de l'autre. En utilisant des paires d'inverseurs, non seulement le signal n'est pas inversé en sortie de chaque ligne, mais surtout chaque ligne présente un temps de montée et de descente identique 20 ou très proche (écart inférieur au dixième de la raison divisée par p ou par q). En effet, en utilisant des cellules logiques identiques de la technologie concernée, même si un inverseur 3 réalisé dans cette technologie a un temps de montée différent de son temps de descente, une paire d'inverseurs 3 identiques forme 25 un élément dont les temps de monté et de descente sont identiques. En notant tr et tf, les temps de montée et de descente d'un inverseur 3, le temps de montée et de descente d'une paire devient tr+tf (tr+tf ou tf+tr selon le sens du front d'entrée). Ainsi, même si les temps tf et tr sont différents l'un de l'autre, leur 30 somme reste constante pour toute les paires d'inverseurs. Les lignes 21 et 27 apportent donc un retard déterminable et constant quelle que soit la transition (montante ou descendante). On peut utiliser n'importe quelle réalisation d'inverseur (par exemple des inverseurs CMOS formés de deux 35 transistors en série, des porte NON-OU ou NON-ET à entrées 3051084 B15001 - 16-RO-056 16 interconnectées, etc.) pourvus que ces inverseurs respectent la condition d'associer, lorsqu'ils sont appariées en série, successivement temps de montée et temps de descente, ou inversement, afin que ces temps soient sommés quel que soit le 5 front présent en entrée. Pour réaliser les éléments asymétriques 22 et 24, on utilise un élément de type amplificateur logique (buffer) non inverseur, à l'exclusion de deux inverseurs identiques en série. Par exemple, on peut utiliser une porte de type OU, de type ET 10 dont les deux entrées sont reliées, ou encore toute fonction logique que l'on peut ramener à une fonction inverseuse ne dépendant que d'une seule entrée et dont les temps de montée et de descente sont différents. Chaque élément 22 et 24 est choisi pour présenter un temps de montée différent de son temps de 15 descente. De plus, les éléments 22 et 24 sont choisis pour présenter des écarts différents entre temps de montée et temps de descente. Ainsi, on introduit les écarts qui vont conditionner l'arrêt du générateur. En pratique, comme il ressort des formules établies plus haut, les portes 23 et 25 apportent également un 20 décalage entre les temps de montée et de descente de chaque branche. Ce décalage doit être ajouté à celui introduit par l'élément 24, respectivement 22, pour obtenir les écarts, respectivement Afrl et Afr2, donc les raisons des suites arithmétiques. 25 Un avantage de la réalisation proposée est que ces nombres p et q de paires d'inverseurs des lignes 21 et 27 n'influent pas sur la raison des suites arithmétiques définissant les oscillations. En effet, ils ne conditionnent que les premiers termes de chaque suite, c'est-à-dire les durées des premières 30 impulsions qui suivent la commutation du signal CTRL pour activer la génération. Selon un mode de réalisation simplifié, on prévoit un seul élément 22 ou 24, l'autre branche n'ayant que la ligne à retard symétrique. 3051084 B15001 - 16-RO-056 17 Les lignes 21 et 27 peuvent être indifféremment placées en amont ou en aval des éléments 22 et 24 avec lesquels elles sont respectivement associées. En variante, les éléments 22 et 24 sont même intercalés à l'intérieur des lignes 21 et 27, entre des 5 inverseurs ou des paires d'inverseurs qui les constituent. Un avantage des modes de réalisation décrits est qu'il est désormais aisé de dimensionner un générateur d'oscillations et de pouvoir le caractériser. Ainsi, lors de la conception d'un circuit électronique comportant un générateur de nombres 10 aléatoires, connaissant les écarts entre les temps de montée et de descente dans la technologie, il devient aisé de respecter un cahier des charges. L'interprétation du nombre généré s'effectue en comptant les impulsions sur une des sorties 233 et 253 et en prenant, en 15 tant que bit aléatoire, par exemple, le bit de poids faible à la fin de la période de comptage. La période de comptage est fixée par un signal d'horloge. La figure 5 représente, de façon schématique, une variante de réalisation selon laquelle on cherche à minimiser la 20 raison de la suite arithmétique, tout en la conservant aisément déterminable. Selon cette variante, par rapport à la réalisation de la figure 4, on prévoit, en parallèle avec chaque élément 22, 24 ou ligne à retard asymétrique (ADL - Asymetric Delay Line), une 25 deuxième ligne à retard symétrique (SDL - Symetric Delay Line) 26, respectivement 28. Les entrées des lignes à retard 22 et 26 sont reliées en sortie de la ligne 21. Les entrées des lignes 24 et 28 sont reliées en sortie de la ligne 27. Les sorties des lignes 22 et 26, respectivement 24 et 28, sont reliées à des 30 entrées d'un multiplexeur deux vers un 51, respectivement 52, dont la sortie est reliée en entrée 253, respectivement 233, de la porte logique 25, respectivement 23. Le multiplexeur 51 est commandé par un signal issu d'un comptage (compteur 53, CNTH) des impulsions de son signal de sortie. En d'autres termes, le 35 compteur détermine le nombre d'impulsions à partir duquel on 3051084 B15001 - 16-RO-056 18 commute de la ligne asymétrique 22 vers la ligne symétrique 26. Côté multiplexeur 52, on peut prévoir une commande par le même compteur 53 ou par un compteur différent qui compte alors les impulsions de la sortie du multiplexeur 52. En pratique, si on 5 utilise un seul compteur, on le place sur la branche ayant le retard le plus long afin de ne pas commuter les multiplexeurs avant la fin des premières impulsions. Une telle variante permet de rendre configurable la raison des suites arithmétiques et plus particulièrement de 10 réduire cette raison afin de retarder l'arrêt du générateur. En effet, en exécutant une boucle (une impulsion sur chaque branche) asymétrique et le reste des boucles uniquement avec les éléments symétriques (21, 26, 27 et 28), on minimise la raison de la suite. En reprenant les notations prises plus haut, 15 la raison r se trouve divisée par le nombre de boucles. Cela permet, entre autres, d'augmenter le nombre d'impulsions circulant dans les lignes à retard du générateur tout en réduisant la taille de ces lignes à retard. Le cas échéant, le compteur 53 est le compteur de 20 comptage des impulsions dont le ou les bits de poids faibles sont utilisés, à l'arrêt des oscillations, pour définir le nombre aléatoire généré. La figure 6 représente un mode de réalisation d'une ligne à retard 6, paramétrable à la fois en retard symétrique et 25 en retard asymétrique. La réalisation de la figure 6 peut constituer, à titre d'exemple particulier dans les réalisations précédentes, un mode de réalisation de la ligne à retard symétrique, par exemple 21, et de l'élément retardateur asymétrique, par exemple 22, d'une 30 branche. Selon ce mode de réalisation, on associe une ou plusieurs (dans l'exemple trois) lignes à retard symétriques 212, 214 et 216, c'est-à-dire ayant chacune des temps de montée et de descente identiques, à un ou plusieurs (dans l'exemple trois) 35 éléments retardateur ou lignes à retard asymétriques 221, 223, 3051084 B15001 - 16-RO-056 19 225, c'est-à-dire ayant chacun des temps de montée et de descente différents, chaque ligne asymétrique ou symétrique étant courtcircuitable à l'aide d'un multiplexeur 61, 62, 63, 64, 65, 66 respectivement. En d'autres termes les entrées des lignes 212, 5 214, 216, 221, 223 et 225 sont respectivement reliées directement à une première entrée des multiplexeurs 61, 62, 63, 64, 65, 66 dont l'autre entrée est reliée à la sortie de la ligne à retard correspondante. Les sorties des multiplexeurs 61, 62, 63, 64 et 65 sont respectivement reliées aux entrées des lignes 214, 216, 10 221, 223, 225 et la sortie du multiplexeur 66 définit la sortie OUT de la ligne à retard paramétrable. Chaque multiplexeur 61 à 66 est commandable indivi- duellement, par exemple, par un bit différent, respectivement [5], [4], [3], [2], [1], [0] d'un mot SEL DLY. 15 Dans une application à la réalisation d'un générateur de nombres d'oscillations du type illustré par la figure 4, la borne IN d'entrée de la ligne 6 est reliée en sortie (231 ou 251, figures 4 et 5) de la branche concernée. Chaque ligne 212, 214, 216 est, de préférence, 20 constituée d'une ou plusieurs paires d'inverseurs, c'est-à-dire d'éléments retardateurs ayant chacun des temps de montée et de descente identiques comme décrit plus haut. Dans l'exemple représenté, les lignes 212, 214 et 216 comportent respectivement 32, 16 et 8 paires d'inverseurs, soit 32, 16 et 8 éléments 25 retardateurs symétriques unitaires (sdelt). Les lignes asymétriques 221, 223, 225 apportent des retards identiques ou différents les unes des autres. De préférence, les lignes 221, 223 et 225 sont constituées d'éléments unitaires identiques, c'est-à-dire apportant le même décalage 30 entre temps de montée et temps de descente. On prévoit alors des nombres différents de ces éléments unitaires dans chacune des lignes, ce qui rend le système paramétrable aisément avec une granularité optimale. Dans l'exemple représenté, les lignes 221, 223 et 225 comportent respectivement 4, 2 et 1 éléments 35 retardateurs asymétriques unitaires (adelt). 3051084 B15001 - 16-RO-056 20 Ainsi, la ligne à retard 6 est paramétrable à la fois en retard et en différence entre temps de montée et temps de descente. En prenant l'exemple d'éléments unitaires identiques dans les lignes 212, 214 et 216, et d'éléments unitaires 5 identiques dans les lignes 221, 223 et 225, on peut choisir un retard symétrique compris entre 8 et 56 fois le retard de l'élément unitaire symétrique et un écart temporel entre front montant et front descendant compris entre 1 et 7 fois l'écart apporté par l'élément unitaire asymétrique. 10 Les éléments unitaires sont, par exemple, réalisés comme décrit plus haut en relation avec la figure 4. Le nombre de lignes à retard symétriques et asymétriques dépend de la capacité de réglage souhaitée. Les éléments asymétriques ont non seulement des temps de montée et de descente 15 différents mais aussi un délai intrinsèque qui contribue au délai total de la ligne à retard. La réalisation de la figure 6 peut servir, par exemple, à intégrer une même architecture de générateur et à rendre cette structure paramétrable, que ce soit à la conception ou dans 20 l'application. La réalisation de la figure 6 peut être combinée à celle de la figure 5 en mettant en parallèle de chaque ligne asymétrique 221, 223, 225, une ligne symétrique de même retard, supprimant ainsi le court-circuit de la ligne attaquant les entrées 25 supérieures (dans l'orientation de la figure 6) des multiplexeurs 64 à 66. En variante, on utilise des multiplexeurs 3 vers 1 dont deux entrées reçoivent les sorties respectives de deux lignes en parallèle de même retard, respectivement symétrique et asymétrique, et dont la troisième entrée reçoit directement la 30 sortie du multiplexeur de rang précédent. Dans la réalisation de la figure 6 ou de ses variantes, afin de faciliter le paramétrage, il serait souhaitable que les multiplexeurs 61 à 66 apportent des retards symétriques. Or, un multiplexeur usuel a un fonctionnement asymétrique en termes de 35 temps de montée et de temps de descente. 3051084 B15001 - 16-RO-056 21 La figure 7 représente un mode de réalisation d'un multiplexeur 7 ayant un fonctionnement symétrique, c'est-à-dire un temps de montée et un temps de descente identiques. Le multiplexeur 7 de la figure 7 est un multiplexeur 5 deux vers un, c'est-à-dire qu'il sélectionne l'une de ses deux entrées A ou B et fournit le signal correspondant en sortie Z. La sélection entre l'entrée A ou B s'effectue par un signal de commande S. Le multiplexeur 7 comporte quatre éléments de 10 multiplexage ou de sélection deux vers un. On peut considérer que le multiplexeur 7 est constitué de 4 multiplexeurs unitaires 72, 74, 76 et 78 associés en chaîne. Les multiplexeurs sont des multiplexeurs inverseurs. Un premier multiplexeur 72 a ses bornes d'entrée respectivement reliées aux entrées A et B. Un deuxième 15 multiplexeur 74 a ses deux entrées reliées ensemble à la sortie du premier multiplexeur 72. Un troisième multiplexeur 76 a ses deux entrées reliées ensemble à la sortie du deuxième multiplexeur 74. Un quatrième multiplexeur 78 a ses deux entrées reliées ensemble à la sortie du troisième multiplexeur 76 et sa sortie 20 fournit la sortie Z. Le signal S commande directement les multiplexeurs 72 et 74 et, après traversée d'un inverseur 75, les multiplexeurs 76 et 78. Le fait que les multiplexeurs 74, 76 et 78 aient leurs entrées interconnectées engendre qu'ils n'effectuent en fait 25 aucune sélection. Toutefois, en supposant que tous les multiplexeurs 72, 74, 76 et 78 sont identiques, ils ont tous des temps de montée et de descente identiques. De plus, ils ont tous un comportement similaire lors d'un front sur leur première entrée et tous un comportement similaire lors d'un front sur leur 30 deuxième entrée. En notant tr les temps de montée, tf les temps de descente et en affectant ces notations d'un premier indice A, respectivement B, selon que le front est sur l'entrée A (la première entrée du multiplexeur unitaire concerné) ou B (la 35 deuxième entrée du multiplexeur unitaire concerné) et d'un 3051084 B15001 - 16-RO-056 22 deuxième indice 72, 74, 76 ou 78 selon le multiplexeur unitaire concerné, on peut écrire : trA72 = trA74 = trA76 = t rA78 = trA ; tfA72 = tfA74 = t fA76 = t fA78 = tfA 5 trB72 = trB74 = trB76 = trB78 = trB ; et tfB72 = tfB74 = tfB76 = tfB78 = tfB. En raison de l'inversion de la commande des deux multiplexeurs 76 et 78 par rapport à celle des multiplexeurs 72 et 74, les temps de montée et de descente du multiplexeur 7, de 10 l'entrée A ou B jusqu'à la sortie Z, peuvent s'écrire, selon qu'un front montant r ou descendant f est présent sur l'entrée A ou sur l'entrée B : trAZ = tfA72 trA74 tfB76 trB78 ; tfAZ = trA72 tfA74 trB76 tfB78 ; 15 trBZ = tfB72 trB74 tfA76 trA78 ; et tfBZ = trB72 tfB74 trA76 tfA78. Comme les temps de montée et de descente unitaire sont identiques pour une entrée donnée, on en déduit : trAZ = tfAZ = trBZ = tfBZ = trA + tfA + trB + tfB. 20 Par conséquent, les temps de montée et de descente du multiplexeur 7 sont identiques quelle que soit l'entrée considérée. Le multiplexeur est donc symétrique avec la définition donnée plus haut. En variante, on peut prévoir d'inverser la commande à 25 d'autres endroits pourvu que deux multiplexeurs sélectionnent leurs premières entrées respectives quand les deux autres sélectionnent leurs deuxièmes entrées respectives. Dans ce cas, on veillera cependant à ce que le retard de propagation apporté par les inverseurs ne soit pas supérieur au temps de propagation 30 minimum d'un multiplexeur unitaire, faute de quoi la sortie est faussée. Un avantage du mode de réalisation de la figure 7 est qu'il garantit que la sélection des multiplexeurs 76 et 78 soit active avant que le signal (le front) ait fini de traverser les multiplexeurs 72 et 74. 3051084 B15001 - 16-RO-056 23 Bien que cela n'apporte pas d'avantage en termes de symétrie, on peut prévoir d'utiliser 8, 12, 16 et plus généralement tout multiple de quatre de multiplexeurs unitaires pourvu que la moitié soit commandée en inverse par rapport à 5 l'autre moitié. Cela permet, par exemple, d'augmenter le temps de propagation sans nuire à la symétrie du fonctionnement. Un avantage du mode de réalisation de la figure 7 est qu'il est indépendant de la structure interne des multiplexeurs unitaires. En effet, pourvu que l'on utilise des multiplexeurs 10 unitaires identiques, le fonctionnement décrit est respecté. Un multiplexeur tel que représenté en figure 7 a de multiple applications. En particulier, il est fréquent qu'il soit avantageux d'avoir un fonctionnement symétrique. A titre d'exemple particulier d'application, le 15 multiplexeur de la figure 7 peut être utilisé pour réaliser chacun des multiplexeurs 61, 62, 63, 64, 65 et 66 de la réalisation de la figure 6. Un avantage est alors que la raison des suites d'impulsions du générateur de nombres reste uniquement liée aux éléments asymétriques 221, 223 et 225, ce qui facilite le 20 dimensionnement. La structure du multiplexeur 7 de la figure 7 peut être déclinée pour réaliser des multiplexeurs à plus de deux entrées. La figure 8 représente un mode de réalisation d'un multiplexeur symétrique 8 quatre vers un. 25 Selon ce mode de réalisation, on utilise trois multiplexeurs deux vers un du type de celui de la figure 7. Un premier multiplexeur 7a définit deux entrée A et B. Un deuxième multiplexeur 7b définit des entrées C et D. Les sorties respectives des multiplexeurs 7a et 7b sont connectées aux deux 30 entrées d'un troisième multiplexeur 7c dont la sortie définit la sortie Z' du multiplexeur quatre vers un. Les multiplexeurs 7a et 7b sont respectivement commandés par un signal 51 et par son inverse. Le multiplexeur 7c est commandé par un signal S2. Par exemple, en supposant un mot de sélection sur deux bit, le signal 3051084 B15001 - 16-RO-056 24 S2 est constitué par le bit de poids fort et le signal Si par le bit de poids faible. Dans un générateur de nombres aléatoires du type décrit ci-dessus, l'interprétation de la sortie du générateur requiert 5 de compter les impulsions présentent en sortie. C'est ce comptage qui détermine le nombre tiré. Par exemple, on prend, comme bit aléatoire généré par le générateur 20, le bit de poids faible du compte des impulsions présentes en sortie du générateur entre son déclenchement et un signal de lecture du compteur, postérieur à 10 l'arrêt des oscillations. L'intervalle de temps entre le déclenchement du générateur et le signal de lecture est choisi en fonction de la plage d'intervalles de temps possible conditionné par le dimensionnement des lignes à retard du générateur. Toutefois, dans un compteur, il peut exister un 15 déséquilibre entre les comptes d'états 1 et d'états 0 en particulier si un des états du signal à compter devient trop court par rapport à l'autre. Ce phénomène est dû au fait qu'à partir d'une certaine durée d'impulsion (dans le sens décroissant de durée), le compteur n'est capable de prendre en compte l'impulsion 20 que dans un sens selon la parité du compte courant qu'il contient. On se retrouve alors avec un déséquilibre entre la probabilité de tirer un 1 et de tirer un 0. En d'autres termes, avec un générateur du type de celui de la figure 4 (mais également avec celui de la figure 2), lorsque le rapport cyclique devient trop déformé, 25 l'utilisation de la sortie du générateur comme horloge de comptage conduit à ce que la durée de l'impulsion (basse ou haute selon la sortie concernée) est inférieure au temps minimum de prise en compte de la bascule. Or ce temps diffère pour un état haut et pour un état bas. Par conséquent, quelle que soit la sortie 30 utilisée, la bascule sortira de son fonctionnement normal et on ne peut pas déterminer à l'avance, lors de la conception, quelle sortie sera concernée. Ce problème est susceptible de se rencontrer non seulement pour compter le nombre d'oscillations dans un générateur 35 tel que décrit dans la présente description mais plus généralement 3051084 B15001 - 16-RO-056 25 pour compter des évènements de faible durée dans un signal, par exemple un détecteur de perturbations transitoires (glitch). En effet, un compteur, qu'il soit asynchrone ou non fonctionne normalement avec une horloge, dite carrée, c'est-à5 dire de rapport cyclique proche de 50%. Or, dans le cas du générateur décrit ci-dessus, le rapport cyclique de l'horloge du compteur asynchrone, qui correspond à la sortie 231 ou 251 (ou 233, 253), diminue à chaque période jusqu'à l'arrêt de l'oscillation, ou au contraire augmente à chaque période jusqu'à 10 l'arrêt de l'oscillation. Par conséquent, une des sorties s'arrête à l'état 0 et l'autre s'arrête à l'état 1. Toutefois, on ne peut généralement pas savoir avec certitude à l'avance laquelle des sorties s'arrêtera dans l'état 1 et laquelle s'arrêtera dans l'état 0. 15 Côté compteur, on utilise des bascules qui requièrent dans leurs spécifications, une durée minimum de l'horloge à l'état haut (1) et une durée minimum du signal d'horloge à l'état bas (0), par exemple arbitrairement 110 ps pour la durée minimum à l'état haut et 87 ps pour la durée minimum à l'état bas. Par 20 conséquent, quand la bascule d'entrée du compteur reçoit une horloge de rapport cyclique très faible ou très grand, il peut finir par fonctionner hors spécification et l'impulsion du signal d'horloge n'est alors pas pris en compte. La figure 9 représente un mode de réalisation d'un 25 générateur de nombres aléatoires du type décrit ci-dessus avec ses éléments de comptage des impulsions permettant de mettre en forme le nombre généré. La figure 9 illustre une variante dans laquelle les nombres d'impulsions générés sont prélevés en sortie des portes 30 231 et 251. Selon ce mode de réalisation, chaque sortie 251, 231 du générateur de nombre d'oscillations aléatoire 20 (RONG), par exemple tel que décrit en figure 4, est reliée en entrée d'un compteur, respectivement 91 (CNTR), 93 (CNTL). Chaque compteur 35 91, 93 compte les impulsions du signal de sortie correspondant du 3051084 B15001 - 16-RO-056 26 générateur. Chaque compteur est un compteur asynchrone, par exemple de type bascule D. La lecture des compteurs 91 et 93 est déclenchée par un signal READ qui transfère les comptes vers un circuit 95 de 5 décision (DECIS) ou de combinaison. Le circuit 95 reçoit également les signaux de sortie 231 et 251 afin de connaitre, lors de la décision, les états de ces signaux à l'arrêt des oscillations. Fonctionnellement, on utilise des compteurs du nombre d'oscillations, l'un avec une sortie du générateur 20, l'autre 10 avec l'autre sortie du générateur 20. Comme indiqué ci-dessus, l'un des compteurs s'arrêtera de fonctionner avant l'autre, c'est-à-dire que sa bascule d'entrée arrêtera de fonctionner avant la bascule d'entrée de l'autre, sous l'effet du fait que les durées minimales de fonctionnement des bascules sont différentes pour 15 l'état bas et pour l'état haut. En fait, un des compteurs d'arrêtera sous l'effet d'une oscillation ne respectant pas son temps minimum à l'état bas tandis que l'autre compteur s'arrêtera sous l'effet d'une oscillation ne respectant pas son temps minimum à l'état haut. 20 Selon les applications, le critère de choix, par le circuit 95 entre les sorties des compteurs 91 et 93 selon les états fournis par les sorties 231 et 251, diffère. Ce critère de choix peut être conditionné par une simulation du fonctionnement du générateur afin de déterminer si les bascules s'arrêtent à 25 cause du temps minimum à l'état haut ou à cause du temps minimum à l'état bas. Par exemple, si l'on attache de l'importance à la parité du résultat de comptage et en supposant que la bascule du compteur qui s'arrête le premier s'arrête sous l'effet d'une durée de temps 30 bas (état 0) trop faible, la valeur du compteur correspondant sera plus faible que la valeur de l'autre compteur. Si cet effet se cumule avec un fonctionnement asymétrique de la bascule, c'est-à-dire un basculement plus facile de 0 vers 1 que de 1 vers 0 (ou inversement), cela introduit un biais dans la génération du nombre 3051084 B15001 - 16-RO-056 27 aléatoire qui n'est pas souhaitable. On sélectionne alors celui des compteurs qui s'est arrêté sur une commutation de 1 vers 0. Selon encore un autre exemple où la parité à moins d'importance qu'un nombre élevé d'oscillations, on sélectionne le 5 compteur qui s'arrête en dernier. Selon encore un autre exemple, la décision dépend de la relation entre les compteurs. Ainsi, on conserve la valeur : du compteur ayant le plus grand compte si les deux comptes ont la même parité ; ou 10 du compteur ayant le plus grand compte si ce compte est pair et le plus petit si le compte est impair. Selon encore un autre exemple, on considère que celui des compteurs qui continue de fonctionner présente un fort risque de fonctionner de façon dissymétrique car l'autre compteur s'est 15 déjà arrêté. Dans ce cas, le bloc 95 sélectionne le résultat du compteur qui s'arrête le premier, c'est-à-dire le premier qui, lors d'un changement d'état de la sortie 231 ou 251, ne change pas son bit de poids faible. Cet exemple de réalisation est préféré dans le cas où l'on n'a pas déterminé, en simulation, la cause 20 d'arrêt des bascules (temps minimum à l'état bas où temps minimum à l'état haut). Le fait de compter les deux sorties et de prendre l'une ou l'autre selon le cas permet de ne rater aucune impulsion. On notera que le circuit de comptage décrit en relation 25 avec la figure 9 s'applique plus généralement à tout générateur de nombres aléatoires et pas nécessairement à celui de la figure 4. En particulier, il peut être mis en oeuvre pour tout générateur de nombres aléatoires ayant des lignes à retard rebouclées l'une sur l'autre (par exemple, figure 2). 30 Selon un autre mode de réalisation de cet aspect de comptage, les signaux fournis par les sorties 253 et 233 sont mis en forme avant d'être comptés afin d'éliminer certains ratés possible dans le comptage. Pour cela, des circuits de mise en forme optionnels (SHAPER) 97 sont intercalés entre les sorties 35 respectives 251 et 231 et les compteurs 91 et 93. 3051084 B15001 - 16-RO-056 28 La figure 10 représente un mode de réalisation d'un circuit de mise en forme 97 d'un signal impulsionnel. Le circuit 97 comporte une bascule 972 de type D dont l'entrée D est forcée à l'état haut (1) et dont la sortie non 5 inversée Q définit la sortie S97 fournissant le signal mis en forme. L'entrée d'horloge CK de la bascule 972 définit l'entrée du circuit recevant le signal impulsionnel à mettre en forme. La sortie inversée NQ de la bascule 972 est reliée, par l'intermédiaire d'un élément retardateur non inverseur 974 (DELAY) 10 à une première entrée d'une porte logique 976 de type ET dont une sortie est reliée à l'entrée de réinitialisation RN (active sur front montant) de la bascule 972. Une deuxième entrée de la porte 976 est destinée à recevoir un signal RSTN d'activation du circuit 97. Quand le signal RSTN est à l'état 0, le circuit 97 n'est pas 15 actif et la sortie S97 est en permanence à l'état 0. La porte 976 est donc optionnelle si l'on n'a pas besoin de désactiver le circuit 97. La valeur du retard introduit par l'élément 974 est choisie pour être supérieure à la largeur minimale d'impulsion 20 que peut capturer la bascule D. Les figures 11A, 11B, 11C et 11D illustrent, sous forme de chronogrammes, le fonctionnement du circuit de mise en forme de la figure 10. La figure 11A représente un exemple d'allure du signal d'entrée CK à mettre en forme. La figure 11B représente un 25 exemple d'allure correspondante du signal de la sortie Q (S97). La figure 11C représente un exemple d'allure correspondante de la sortie NQ. La figure 11D représente un exemple d'allure correspondante du signal de l'entrée RN. On suppose un signal impulsionnel CK d'impulsions 30 positive. Initialement, la sortie Q (donc la sortie S97) est à l'état 0, la sortie NQ est à l'état 1. L'entrée RN est à l'état 1. On suppose le signal RSTN actif (état 1). A l'apparition (instant t90) d'un front montant sur le 35 signal d'horloge CK, comme l'entrée D est à l'état 1 et que 3051084 B15001 - 16-RO-056 29 l'entrée RN est à l'état 1, cette impulsion est transmise sur la sortie Q qui bascule à l'état 1. Par contre, la sortie NQ (inverse de la sortie Q) bascule à l'état 0. Cet état est transmis, avec un retard DELAY sur l'entrée RN (en considérant le retard apporté 5 par la porte 976 inclus dans la valeur DELAY). La commutation de l'entrée RN à la fin de retard DELAY provoque le forçage de la sortie Q à l'état 0 et, par conséquent, de la sortie NQ à l'état 1, ce qui provoque, à son tour, toujours à l'issue du retard DELAY, le basculement de l'entrée RN à l'état 0. La bascule est 10 alors prête à prendre un nouvel état en compte. La partie droite des chronogrammes illustre le fonctionnement avec une impulsion CK de durée inférieure au retard DELAY. Le retard DELAY fixe la durée des impulsions du signal de sortie indépendamment de la durée de l'impulsion du signal CK. Par conséquent, même si 15 l'impulsion du signal CK est théoriquement trop courte pour que sa descente soit prise en compte, elle est quand même présente sur la sortie Q. La durée DELAY fixe la durée des impulsions du signal S97, donc d'entrée des compteurs dans la réalisation de la figure 20 10. Pour réaliser un circuit de mise en forme fonctionnant avec un signal impulsionnel d'impulsions négatives, la sortie de la porte 976 est reliée à l'entrée de mise à un de la bascule, l'entrée est forcée à l'état 0 et l'élément retardateur reçoit la 25 sortie non inversée Q tandis que la sortie du circuit de mise en forme est définie par la sortie inversée NQ. Le fonctionnement se transpose sans difficulté des explications données ci-dessus. Un avantage des modes de réalisation qui ont été décrits est qu'ils permettent de concevoir ou de configurer un générateur 30 de nombres aléatoires de façon fiable et déterminable. Ainsi, on peut respecter les critères fixés par un cahier des charges et valider que le générateur respecte ce cahier des charges. Un autre avantage est que la solution décrite est compatible avec l'utilisation de cellules standards d'une 35 technologie donnée. 3051084 B15001 - 16-RO-056 30 Un autre avantage est que l'ensemble du générateur est réalisable avec des éléments logiques. Pour un générateur de nombres aléatoires, le nombre est prélevé soit après un intervalle de temps fixe, déclenché par 5 l'activation du générateur (signal CTRL) et choisi pour être supérieur au temps maximum d'arrêt du générateur), soit en détectant l'arrêt du ou des compteurs. Pour réaliser un générateur de nombres non clonable de type identifiant d'un circuit intégré, les lignes à retard et la 10 raison des suites arithmétiques sont dimensionnées afin de fixer le nombre d'oscillations. Le prélèvement du nombre est effectué après l'arrêt du générateur comme pour un générateur de nombres aléatoires et on ne conserve de préférence qu'une partie des bits (les plus significatifs). 15 Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix des retards apportés par les lignes à retard symétriques et des décalages apportés par les éléments retardateurs asymétriques dépend de l'application et du cahier 20 des charges du générateur. Enfin, la mise en oeuvre pratique des modes de réalisation qui ont été décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus. REVENDICATIONS1. Circuit (20) de génération d'un nombre d'oscillations comportant : une première branche comprenant au moins une ligne à retard (21) apportant des retards symétriques sur fronts montants et sur fronts descendants et au moins un élément retardateur asymétrique (22) apportant des retards différents sur fronts montants et sur fronts descendants ; une deuxième branche, rebouclée sur la première et comprenant au moins une ligne à retard (27) apportant des retards 10 symétriques sur fronts montants et sur front descendants. 2. Circuit selon la revendication 1, dans lequel la deuxième branche comporte en outre au moins un élément retardateur asymétrique (24) apportant des retards différents sur fronts montants et sur fronts descendants. 15 3. Circuit selon la revendication 1 ou 2, dans lequel des portes (25, 23) de type NON-ET, combinant les sorties respectives des branches avec un signal (CTRL) de commande, sont intercalées entre les sorties respectives (253, 233) de chaque branche et l'entrée (251, 231) de l'autre branche. 20 4. Circuit selon l'une quelconque des revendications 1 à 3, dans lequel les lignes à retard (21, 27) sont constituées d'éléments logiques ramenant à une fonction non inverseuse à une seule entrée et dont les temps de montée et de descente sont identiques. 25 5. Circuit selon l'une quelconque des revendications 1 à 4, dans lequel le ou les éléments retardateurs (22, 24) sont constitués de circuits logiques non inverseurs. 6. Circuit selon la revendication 5, dans lequel chaque élément retardateur (22, 24) est constitué d'une fonction logique 30 que l'on peut ramener à une fonction non inverseuse ne dépendant que d'une seule entrée et dont les temps de montée et de descente sont différents. 7. Circuit selon l'une quelconque des revendications 1 à 6, dans lequel la ou les branches comportent en outre, une 3051084 B15001 - 16-RO-056 32 deuxième ligne à retard (26, 28) apportant des retards symétriques sur fronts montants et sur fronts descendants, connectée en parallèle sur l'élément retardateur (22, 24) de la branche concernée. 5 8. Générateur de nombres comportant : au moins un circuit (20) selon l'une quelconque des revendications 1 à 7 ; et au moins un compteur (91, 93) du nombre d'oscillations générées par ledit circuit. 9. Dispositif électronique comportant au moins un générateur selon la revendication 8, ledit circuit (20) comportant des moyens pour générer un nombre aléatoire d'oscillations. 10. Dispositif électronique comportant au moins un générateur selon la revendication 8, ledit circuit (20) comportant 15 des moyens pour générer un nombre reproductible.