FR 2920894 A1 20090313 FR 0706355 A 20070911 ARCHITECTURE DE REGISTRE MEMOIRE A DETECTION D'ERREUR INTEGRE ET PROCEDE DE DETECTION D'ERREUR ASSOCIE La présente invention concerne une architecture de registre mémoire avec des moyens de détection d'erreur intégrés, et un procédé de détection d'erreur associé, notamment pour la détection d'aléas logiques dits SEU pour "Single Event Upset" qui peuvent se produire dans un environnement radiatif. Les mémoires des circuits électroniques utilisés en milieu radiatif hostile sont susceptibles de subir des collisions avec des ions lourds, des protons, ou des neutrons, qui peuvent provoquer des aléas logiques. Un aléa logique est un phénomène en soi non destructif, qui se traduit par un changement intempestif de l'état logique d'un point mémoire. Les conséquences de ces altérations intempestives des informations contenues en mémoire peuvent avoir des conséquences très graves, selon les fonctions du circuit qui sont atteintes. Les milieux radiatifs hostiles sont l'espace et la haute atmosphère, 15 mais aussi certains environnements terrestres, correspondant à la présence de dispositifs/systèmes radiatifs. Ainsi, les circuits électroniques embarqués dans les aéronefs, avions, sondes ou autres, ou les circuits électroniques utilisés dans certains environnements terrestres radiatifs, par exemple en environnement médical 20 ou nucléaire, et qui sont des circuits généralement soumis à des contraintes de fiabilité très élevés, sont particulièrement exposés à ces aléas logiques. Ces aléas vont toucher plus particulièrement les points mémoires statiques, c'est à dire des points de mémoire en technologie RAM, dans lesquels un état logique est mémorisé par configuration de bascules logiques. 25 Ainsi, s'agissant de circuits électroniques du type programmables tels que des circuits FPGA ( Field Programmable Gate Array), mais non reprogrammables in situ, c'est à dire dont la configuration ou programmation n'est pas mémorisée dans une mémoire de technologie RAM, la configuration ou programmation est réputée insensible à ces aléas. 30 Cependant, ces circuits programmables contiennent généralement quelques registres destinés à contenir des données de configuration modifiables, correspondant à des options, qui sont paramétrées par les applications auxquelles sont destinés ces circuits. Ces registres, qui sont typiquement formés de bascules logiques, sont ainsi sensibles à ces perturbations radiatives externes, ce qui peut entraîner de graves dysfonctionnements. Pour pallier ce problème, on prévoit généralement l'utilisation de codes correcteurs d'erreurs, tels que les codes de Hamming. Un code correcteur est alors associé à chaque mot dont la longueur dépend de la longueur de la structure de donnée en mémoire. Typiquement, à une structure de donnée de 2n bits, on associera un code correcteur de n bits. ~o Cependant, dans le contexte des circuits programmables, la complexité des circuits combinatoires associés au code de correction d'erreur pour réaliser la détection et la correction, relativement au nombre de points mémoires supplémentaires occupés par le code correcteur est un inconvénient majeur de cette technique. 15 Une autre solution courante est d'utiliser une architecture de redondance, généralement basée sur un triplement de chacun des registres du circuit électronique, et associée à un circuit combinatoire mettant en oeuvre une technique de décision dit à vote majoritaire. Cette technique cumule les inconvénients du nombre de points mémoire supplémentaires,- 20 pour un registre de n bits, il faut 2n bits supplémentaires-, et de la complexité du circuit combinatoire. Pour ces raisons ces architectures ne sont généralement pas utilisées pour la sécurisation de plus d'une dizaine de bits. Le coût de ces techniques en terme de points mémoire et de logique combinatoire, se traduit en un coût de surface supplémentaire et de 25 consommation électrique, ce qui est un problème majeur notamment pour tous les circuits électroniques destinées aux applications embarquées, comme les applications avioniques et médicales. Dans l'invention, on a cherché une technique plus performante en termes de nombre de points mémoire et de logique combinatoire, sans rien 30 perdre en fiabilité, pour la sécurisation de bits de données, particulièrement bien adaptée à la sécurisation des bits de données d'un ou plusieurs registres d'un circuit électronique, notamment d'un circuit programmable, non reprogrammable in situ. Une idée à la base de l'invention est d'appliquer une technique de 35 calcul de bits de parité croisés, qui permet d'obtenir une détection et une correction efficace, pour un coût en termes de points mémoire et de logique combinatoire bien moindre que dans les techniques de l'état de l'art. Selon cette technique, on associe à chaque bit du registre deux bits de parité calculés chacun sur deux groupes de bits du registre, ces deux groupes n'ayant en commun que le bit du registre considéré. Cela revient à répartir "mentalement" les bits du registre dans une matrice à n lignes et m colonnes, une ligne et une colonne de la matrice désignant un unique point du registre auquel on associe un bit de parité de ligne et un bit de parité de colonne. Un contrôle des deux bits de parité associés de façon unique à un bit du registre permet la détection, et la correction, d'une erreur sur ce bit. Il permet aussi la détection et la correction d'une erreur sur un bit de parité. L'invention concerne ainsi une architecture d'un registre mémoire comprenant N éléments mémoire prévus pour stocker N bits d'une donnée présentée en écriture, caractérisée en ce que ladite architecture est basée sur une répartition mentale des N bits de donnée dans une matrice d'au moins deux dimensions n et m, avec n et m entiers non nuls et nxm au moins égal à N, plaçant chaque bit de ladite donnée à l'intersection d'une ligne parmi n et d'une colonne parmi k, ladite architecture comprenant un élément mémoire supplémentaire par ligne pour stocker un bit de parité ligne calculé sur les bits de donnée associés à ladite ligne et un élément mémoire supplémentaire par colonne pour stocker un bit de parité colonne calculé sur les bits de donnée associés à ladite colonne. L'architecture comprend des moyens de détection et de correction d'erreur associé à chacun des bit de donnée et de parité mémorisés. Elle comprend notamment des moyens de détection d'erreur associés à chaque bit de parité mémorisé ligne, respectivement colonne, lesdits moyens de détection étant configurés pour vérifier qu'un bit de parité calculé sur les bits de donnée mémorisés sur la ligne associée, respectivement la colonne associée, correspond au dit bit de parité mémorisé ligne, respectivement colonne, et fournissant en sortie un signal d'erreur de parité ligne, respectivement colonne correspondant, avec un état actif correspondant à une erreur détectée. Elle comprend aussi un circuit de correction par élément mémoire d'un bit de donnée, ledit circuit de correction recevant en entrée le signal d'erreur de parité ligne et le signal de parité colonne de la ligne et de la colonne associées au dit bit de donnée, ledit circuit de correction ayant pour effet d'inverser l'état logique contenu dans ledit élément mémoire, sur réception d'un état actif de chacun desdits signaux d'erreur. Dans une variante, le circuit électronique peut être testé par un dispositif externe qui fournit les bits d'une donnée avec ses bits de parité, avec une ou des erreurs volontaires, permettant de vérifier le bon fonctionnement de la détection. L'invention concerne un dispositif électronique, avec un circuit électronique comprenant un ou des registres suivant cette architecture. L'invention concerne aussi un procédé de détection d'erreur dans un registre mémoire, caractérisé en ce qu'il consiste à associer à chaque bit de donnée du registre, deux bits de parité, un premier bit de parité calculé sur un premier groupe de bits dudit registre, un deuxième bit de parité calculé sur un deuxième groupe de bits dudit registre, lesdits premier et deuxième groupes de bits ayant ce seul bit du registre en commun, les bits de parité étant calculés avec l'écriture d'une donnée dans ledit registre, à partir des groupes de bits correspondant prélevés de la donnée à écrire, et mémorisés dans des points mémoire, et à vérifier que les bits de parité calculés à partir des groupes de bits de donnée correspondants lus dans ledit registre, correspondent aux dits bits de parité lus dans le dit registre. La vérification est effectuée pour chaque bit de parité du registre par un calcul de bit de parité sur ledit bit parité et lesdits bits de donnée correspondants lus dans le registre. Lorsque les premier et deuxième bits de parité associés à un bit de donnée du registre sont chacun détectés faux, une correction du bit de donnée du registre est effectuée, correspondant à une inversion de son état logique. Dans le cas où, pour les bits de parité des premiers groupes de bits, respectivement des deuxièmes groupes de bits, la vérification du bit de parité du registre donne un résultat faux, et qu'aucune erreur n'est détectée sur les bits de parité des deuxièmes groupes, respectivement des premiers, une correction dudit bit de parité du registre est effectuée, correspondant à une inversion de son état logique. D'autres avantages et caractéristiques de l'invention sont détaillés 35 dans la description suivante en référence aux dessins illustrés d'un mode de réalisation de l'invention, donné à titre d'exemple non limitatif. Dans ces dessins : -la figure 1 illustre un circuit électronique du type programmable et non reprogrammable in situ comprenant des registres mémoire à sécuriser; -la figure 2 illustre une structure de donnée avec des bits de parités selon l'invention; -la figure 3 illustre un principe de formation des premier et deuxième groupes de bits pour le calcul des deux bits de parités associé à chaque bit de la donnée; -la figure 4 illustre un mécanisme de détection et correction d'erreur selon l'invention; -la figure 5 est un schéma mettant en évidence un mécanisme général de correction d'erreur selon l'invention; - la figure 6 illustre un exemple d'architecture d'un registre mémoire selon 15 l'invention; -la figure 7 illustre un mécanisme de détection et correction d'erreur selon une variante de l'invention; et - les figures 8a et 8b illustrent respectivement une structure de donnée d'un registre et un schéma d'un mécanisme général de correction d'erreur selon 20 un perfectionnement de l'invention. Un circuit programmable 1, non reprogrammable in situ, comprend typiquement et comme illustré en figure 1, une partie figée 2, par exemple des anti-fusibles, et un ou des registres RI à R3 dans l'exemple, qui 25 permettent de configurer certaines fonctions programmées dans la partie 2. L'invention concerne une architecture de ces registres, qui permet de les sécuriser vis à vis d'aléas logiques intempestifs. Cette architecture est décrite par une structure de donnée des registres et une combinatoire associée de détection et correction d'erreur. 30 La figure 2 illustre une structure de donnée d'un registre mémoire R selon l'invention. Elle comprend N points mémoire pour contenir au plus N bits de donnée [QN_1... Qo], et n+m points mémoire au moins pour contenir n+m bits de parité [QPn+m-i -QP0], avec n.m au moins égal à N, n et m entiers. A chaque bit Q; de donnée du registre, on fait ainsi correspondre un premier bit de parité parmi n et un deuxième bit de parité parmi m. Les deux bits de parité associés à un bit du registre sont calculés chacun sur un groupe de bits de donnée du registre, les deux groupes de bits correspondants étant tels qu'ils n'ont en commun que le bit de registre associé. Ainsi, les deux groupes associés à un bit de donnée du registre pour calculer les deux bits de parité correspondant équivalent à une ligne de bits et une colonne de bits d'une matrice : Cela revient à distribuer les bits de données du registre dans une matrice, les deux groupes de bits pour le ~o calcul des deux bits de parité associés correspondants respectivement à la ligne et la colonne à l'intersection desquelles se trouve le bit de donnée du registre considéré. Ainsi, comme représenté sur la figure 3, à chaque bit de donnée Q; du registre : 15 - on prend les bits de données situés sur la même ligne Li, formant un premier groupe de bits, pour calculer un premier bit de parité de ligne QPLi ; - et on prend les bits de données situés sur la même colonne Ck, formant un deuxième groupe de bits associé au bit de donnée Q;, pour calculer un deuxième bit de parité de colonne QPCk. 20 On notera que selon la valeur de N, et selon les valeurs de n et m choisies, la répartition des bits dans la matrice peut laisser des cases vides : en d'autres termes les groupes d'un même type, par exemple les lignes, n'ont pas nécessairement le même nombre d'éléments. Ceci est indifférent, puisque ce que l'on cherche, c'est à constituer pour chaque bit, deux groupes 25 de bits qui n'ont que ce bit en commun, pour calculer deux bits de parité associés. La matrice n'est qu'une technique mentale qui permet de se représenter les groupes de manière simple. Une donne de 32 bits de données ("bits utiles") d'un registre peut ainsi par exemple être agencée en une matrice : 30 -de 8 lignes et 4 colonnes, le registre comprenant 8 bits de parité ligne correspondant chacun à 4 bits utiles et 4 bits de parité colonne correspondant chacun à 8 bits utiles; -de 5 lignes et 7 colonnes, le registre comprenant 5 bits de parité ligne correspondant chacun à 7 bits utiles, 4 bits de parité colonne 35 correspondant chacun à 5 bits utiles et 3 bits de parité colonne correspondant chacun à 4 bits utiles compte tenu de 3 positions vides dans la matrice; -de 6 lignes et 6 colonnes, le registre comprenant 6 bits de parité ligne et 2 bits de parité colonne correspondant chacun à 6 bits utiles et 4 bits 5 de parité colonne correspondant chacun à 5 bits utiles compte tenu de 4 positions vides dans la matrice. La figure 4 illustre de façon simplifiée un mécanisme 10 de détection, et de correction, associé à une telle structure de donnée d'un registre R, de N bits utiles et n+m bits de parité. Dans cette figure, on 10 considère les n+m bits de parités dans leur ensemble, sans discriminer les deux bits de parités associés à chaque bit de donnée du registre. Cette figure correspond à une architecture de registre selon l'invention qui comprend : - des moyens de calcul P de bits de parité sur des groupes de bits 15 prédéterminés d'une donnée D présentée en écriture par un dispositif externe; -des moyens de mémorisation F, typiquement des bascules D, des N données utiles et de n+m bits de parité; - des moyens de détection d'erreur DT; 20 -des moyens de correction d'erreur C; et -un multiplexeur M, permettant de charger et transférer en entrée des moyens de mémorisation F, les N bits d'une donnée présentée en écriture et les n+m bits de parité calculés sur des groupes de bits de cette donnée, ou des bits de correction présentés par les moyens de correction 25 d'erreur. De manière plus détaillée, lorsque N bits utiles [DN_1 ... Do] (ou moins) d'une donnée D sont présentés en écriture WE aux moyens de mémorisation M du registre, les n+m bits de parité sont calculés (P) sur les groupes de bits correspondants, prélevés de la donnée D présentée en 30 écriture : on obtient n+m bits de parité [QPn+mm-QPo], qui sont mémorisés en F. Ces bits mémorisés alimentent un circuit de détection d'erreur DT. Le principe de détection d'erreur sur un bit de donnée utile peut être expliqué comme suit et comme illustré sur la figure 4 : chacun des n+m bits de parité mémorisé est comparé en DT2 à un bit de parité recalculé en 35 DT1 sur le groupe correspondant de bits utiles mémorisés. Si on note OP; un bit de parité correspondant à un groupe de bits utiles présentés en écriture formé des bits DA, DB, Dc. Le bit de parité recalculé Q'P; recalculé sur les bits mémorisés QA, QB, Qc, est comparé au bit de parité mémorisé QP;, typiquement par une porte logique XOR. Si ils sont identiques, le signal de détection Err; en sortie de porte XOR sera à 0, signifiant qu'il n'y a pas d'erreur. Si ils sont différents, le signal de détection Err; sera à 1. On se place par exemple sur un calcul de parité pair. Le calcul de parité correspondant effectué sur un groupe de bits, correspond à positionner à 1 ou à 0 le bit de parité correspondant pour que le nombre de 1 soit pair : ce bit de parité est typiquement le résultat d'une combinatoire de type OU exclusif appliquée à ce groupe de bits. On remarque ainsi que le principe de détection expliqué est équivalent à calculer la parité sur l'ensemble des bits mémorisés formé par le groupe de bits utiles QA, QB, Qc et le bit de parité Q1'1;. Le nouveau bit de parité calculé est le signal de détection d'erreur Err;. Si on reprend la matrice de la figure 3, la détection d'erreur de parité ligne consiste alors pour chaque ligne, à calculer la parité sur m+1 bits : les m bits utiles sur cette ligne + le bit de parité de cette ligne. La détection d'erreur de parité colonne consiste alors pour chaque colonne, à calculer la parité sur n+1 bits : les n bits utiles sur cette colonne + le bit de parité de cette colonne. Les moyens de détection d'erreur DT fournissent en sortie un signal de détection d'erreur par bit de parité du registre. Les n+m signaux d'erreur Err; ainsi fournis sont utilisés par les moyens de correction C pour déterminer pour chacun des N bits de donnée mémorisés, s'il est erroné ou pas, et effectuer une correction de ce bit de donnée le cas échéant, par inversion de son état logique. A titre liminaire, on rappelle que dans le contexte de l'invention, il s'agit de détecter une erreur dans le registre de type aléa logique de type SEU. Dans ce contexte, statistiquement à un moment donné, un seul bit du registre peut être affecté par un tel aléa. Suivant la structure de donnée de l'invention, cet aléa peut ainsi affecter un bit utile Q; du registre ou un bit de parité QP;. S'agissant d'un bit utile Q; du registre, il se trouve à l'intersection d'une ligne Li et d'une colonne Ck selon le principe de l'invention comme 35 illustré sur la figure 5. Si l'état logique d'un bit de donnée mémorisé Q; est modifié par un aléa, alors les deux bits de parité ligne et colonne associés QPL1 et QPCk seront détectés erronés : pour chaque bit de donnée mémorisé Q;, la logique de correction associée reçoit ainsi deux signaux d'erreur de parité, ErrL1 et ErrCk. Si les deux signaux d'erreur ErrL1 et ErrCk sont détectés actifs, alors le bit Q; sera corrigé, par inversion de son état logique. S'agissant d'un bit de parité OP; du registre, si il est affecté par un aléa, le signal de détection d'erreur de parité associé sera actif, alors que les autres signaux d'erreurs de parité duale ou complémentaire seront inactifs. Plus clairement, et comme illustré sur la figure 5 : si on considère le bit de parité de la ligne Li , QPLi. Si c'est ce bit qui a été affecté par l'aléa, la détection d'erreur de parité sur cette ligne conduit à un signal d'erreur de parité actif : typiquement ErrLi est à 1. Par contre, comme on a vu que statistiquement à un moment donné seul ce bit de parité est affecté par l'aléa, tous les bits utiles et de parité du registre sont corrects. Notamment, tous les signaux d'erreur de parité duale, c'est à dire calculés sur les colonne c, à cm sont corrects : tous ces signaux ErrC1 à ErrCm sont donc à zéro. La correction d'un bit de parité sera donc effectuée si le signal d'erreur de parité associé est détecté actif alors que tous les signaux d'erreur de parité duale sont détectés inactifs. La logique de correction prévoit ainsi typiquement une combinatoire, typiquement de type NOR dans l'exemple de logique utilisée, pour fournir un signal d'erreur locale ligne Err-L et un signal d'erreur locale colonne Err-C, appliqué le premier à la logique de correction de chacun des bits de parité colonne, et le deuxième à la logique de correction de chacun des bits de parité ligne. Une architecture de registre mémoire selon l'invention permet ainsi de corriger potentiellement chacun des N bits de donnée et des n+m bits de parité mémorisés du registre, en fonction des erreurs détectées, chacun au moyen de deux signaux d'erreur. Sur le schéma de la figure 4, les bits fournis par la logique de correction C sont notés par un signe prime : [Q'N_, Q'o] [Q'Pä+m_, ... QP0J. Si un bit mémorisé en F n'est pas détecté erroné, il est inchangé ; si un bit mémorisé en F est détecté erroné, le point mémoire associé est ré-écrit avec l'état logique inverse fourni par la logique de correction. Typiquement, les points mémoires de donnée et de parité sont chargés (Load) avec les bits présentés sur une voie A d'un multiplexeur M, à chaque fois qu'une donnée est présentée en écriture WE, ou ceux présentés sur une voie B du multiplexeur M, et fournis par le mécanisme de correction d'erreur C : un bit détecté erroné est inversé, sinon il est ré-écrit à l'identique, à chaque front actif d'une horloge interne H. Suivant le principe de détection et correction décrit, et comme apparent sur la figure 5, on peut ainsi obtenir une architecture de registre mémoire très homogène entre les bits de données et de parité, nécessitant une combinatoire limitée. Un exemple d'une architecture correspondante est illustré sur la figure 6 qui met en évidence cette homogénéité, entre un point mémoire de donnée pour mémoriser un bit de donnée Q; correspondant à un bit de donnée D; fourni en écriture WE par un dispositif externe, et les deux points mémoire de parité associés. Selon l'invention, le point mémoire de donnée Q; comprend un élément de mémorisation F.i, typiquement une bascule D, un circuit de correction C.i et un multiplexeur M.i.(en reprenant les notations de la figure 4 en préfixe). Au bit mémorisé Q;, correspond deux bits de parité, typiquement un bit de parité QPLi de la ligne Li et un bit de parité QPCk de la colonne Ck à l'intersection desquelles le bit Q; se trouve, selon la répartition mentale des bits utiles du registre selon l'invention. Chacun des points mémoire de bit de parité comprend un circuit de calcul de parité, un élément de mémorisation, un circuit de détection, un circuit de correction et un multiplexeur. Dans la figure 6, on note P.Lj, F.Lj, DT.Lj, C.Lj, et M.Lj, ces éléments du point mémoire associé au bit QPL; de parité de ligne L. Et P.Ck, F.Ck, DT.Ck, C.Ck, et M.Ck, ces éléments du point mémoire associé au bit QPCk de parité de colonne Lk. En dehors des circuits de calcul de parité et de détection réservés aux points mémoire de bits de parité, les points mémoire ont ainsi la même structure. La structure de donnée du registre selon l'invention est ainsi très homogène. L'architecture donnée en exemple est maintenant décrite de 35 manière plus détaillée. Chacun des multiplexeurs M.i, M.Lj, M.Ck a une première et une deuxième voies d'entrée A et B. La première voie d'entrée A est prévue pour recevoir le bit de donnée D; reçu en écriture WE (Mi), ou un bit de parité (M.Lj, M.Ck). Une deuxième voie d'entrée B est prévue pour recevoir un bit issu des moyens de correction Ci, C.Lj, C.Ck : dans l'exemple, ce bit, Q';, Q'PLi, Q'PCk, aura le même état logique que celui contenu dans le point mémoire si aucune erreur n'a été détectée sur ce point mémoire, ou l'état logique inverse dans le cas contraire. Le bit de parité présenté sur la voie A du multiplexeur M.Lj ou M.Ck est calculé et fourni par les moyens de calcul P.Lj ou P.Ck, sur le groupe de donnée associé prélevé sur les bits de données fournis en écriture par le dispositif externe. Le bit PLi(D) est calculé par les moyens P.Lj sur un premier groupe G(D)F de bits de données comprenant dans l'exemple les bits de données D;, Da, Db, Dc ; le bit PCk(D) est calculé par les moyens P.Ck sur un deuxième groupe G(D)k de bits de données comprenant dans l'exemple les bits de données D;, Dr, Ds, Dp. Ces deux groupes correspondent à la répartition "mentale" matricielle choisie des bits de la donnée D présentée en écriture, qui est telle que ces deux groupes ont uniquement le bit de donnée D; en commun. D'une manière générale, le nombre de bits de données appliqué en entrée des circuits P.Lj est ainsi de m, au plus, et le nombre de bits de données appliqué en entrée des circuits P.Lk est de n au plus, selon qu'il reste des positions libres dans la matrice ou pas. Le mécanisme de détection d'erreur sur le bit de donnée mémorisé Q; comprend deux mécanismes parallèles de détection d'erreur mis en oeuvre dans chacun des points mémoire des bits de parité associés. Prenons le bit de parité QPLi mémorisé dans l'élément F.Lj. Les moyens de détection DT.Lj fournissent le signal d'erreur de parité correspondant ErrLi par calcul de la parité sur le groupe G(Q)i de bits de donnée correspondant (Q;, Qa, Qb, Qc) prélevé sur les bits de donnée mémorisés, plus le bit de parité mémorisé QPL;. Ce calcul est typiquement réalisé par une combinatoire de portes OU exclusif. Si aucun bit mémorisé parmi les bits utiles et le bit de parité n'a été modifié par un aléa, la parité est inchangée, donc le signal d'erreur ErrL; 35 prend un état correspondant, passif, typiquement zéro. Si un de ces bits mémorisés a été modifié, la parité est changée et le signal de détection d'erreur ErrLi prend un état correspondant dit état actif, typiquement 1. Ce signal d'erreur ErrLi est appliqué au circuit de correction d'erreur C.Lj associé à ce bit de parité, et à chacun des circuits de correction des points mémoire des bits de donnée du groupe G(Q)i, notamment au circuit Ci de correction associé au bit Q. Pour le bit de parité QPCk mémorisé dans le point mémoire F.Ck, le mécanisme de détection mis en oeuvre par les moyens DT.Ck est identique, appliqué au groupe de bits de données mémorisés G(Q)k=(Q;, Qr, Qs et Qp) plus le bit de parité QPCk mémorisé. Les moyens DT.Ck fournissent ainsi un signal d'erreur ErrCk en sortie, qui est appliqué au circuit de correction d'erreur C.Ck associé à ce bit de parité, et à chacun des circuits de correction des points mémoire des bits de donnée du groupe G(Q)k, notamment au circuit Ci de correction associé au bit Q. Des moyens de détection d'erreur locale DT-C et DT-L sont en outre prévus pour fournir des signaux d'erreur locale correspondant Err-C et Err-L. Comme précédemment expliqué, ces moyens de détection sont typiquement réalisés par une logique combinatoire de type NOR, sur les signaux d'erreur de parité colonne pour le premier, et sur les signaux d'erreur de parité ligne pour le deuxième. Dans l'exemple de logique retenue en exemple, si il n'y a aucune erreur de parité colonne, respectivement ligne, le signal Err-C , respectivement Err-L, est à l'état 1 actif, et à zéro sinon. Le circuit de correction d'erreur Ci associé au bit de donnée mémorisé Q;, est un circuit combinatoire apte à générer un niveau logique inverse de celui mémorisé, si les deux signaux d'erreurs de parité Err-Li et Err-Ck associés sont à l'état actif (1 dans l'exemple), et à générer un niveau logique identique à celui mémorisé sinon. Les circuits de correction d'erreur C.Lj et C.Ck associés respectivement au bit de parité ligne mémorisé QPLi, et au bit de parité colonne mémorisé QPCk ont une combinatoire similaire, apte à générer un niveau logique inverse de celui mémorisé, si les deux signaux d'erreurs associés sont à l'état actif (1 dans l'exemple), et à générer un niveau logique identique à celui mémorisé sinon. Pour C.Lj, les deux signaux d'erreur sont le signal d'erreur de parité Err-Li et le signal d'erreur locale correspondant Err- C. Pour C.Ck, les deux signaux d'erreur sont le signal d'erreur de parité Err-Ck et le signal d'erreur locale correspondant Err-L. Ces circuits de correction C.i, C.Lj, et C.Ck mettent ainsi en oeuvre la même logique pour fournir en sortie l'état du bit corrigé, respectivement Q';, Q'PL1, Q'PCk. Cette logique comprend une première porte ET (AND) recevant en entrées les deux signaux d'erreur, et une porte OU exclusif (XOR) recevant en entrées, la sortie de la porte ET et le bit mémorisé dans le point mémoire considéré, respectivement Q;, QPLi, QPCk. Au front actif d'horloge H suivant, l'état logique en sortie du circuit de correction est écrit dans le point mémoire correspondant, F.i, F.Lj, F.Ck. La figure 7 illustre une variante du mécanisme illustré sur la figure 4, dans laquelle les bits de parité [Pä+m_i Pol calculés sur des bits de la donnée D[DN_1... Dol présentée en écriture par un dispositif externe, sont également présentés par ce dispositif externe. Par rapport à la figure 4, l'architecture du registre ne comprend plus les moyens P de calcul de parité. Dans la figure 6, cela revient à supprimer les circuits P.Lj et P.Ck de calcul de parité sur des bits de la donnée présentée en écriture. Les bits PLI et PCk sont directement présentés par le dispositif externe, avec les bits de données D. Cette variante a différents avantages. Elle permet une homogénéisation de la structure de donnée du registre à N bits de données et n+m bits de parité (Figure 2) avec les opérations d'écriture, en choisissant n et m de manière à correspondre aux caractéristiques de ces opérations d'écriture, pour écrire tous les bits de la structure de donnée en une seule opération. Par exemple un registre dont la structure de donnée comprend 20 bits utiles avec 12 bits de parité peut être configuré en une seule opération d'écriture de 32 bits. En outre, cette variante permet de mettre en oeuvre une procédure de test, dans laquelle une séquence de données (bits utiles+bits de parité) présentée par le dispositif externe comprend des erreurs, permettant de vérifier le bon fonctionnement du mécanisme de détection et correction d'aléas logiques. Dans au moins une donnée de la séquence, un bit parmi les bits de donnée et de parité est volontairement erroné, simulant un aléa. On vient ensuite lire le registre pour vérifier que cet aléa a été convenablement corrigé. Cette variante permet en outre un perfectionnement de l'invention illustré sur les figures 8a et 8b. Dans ce perfectionnement, la structure de donnée du registre (Figure 8a) comprend un bit de parité supplémentaire QPG que l'on appelle bit de parité de clôture. Ce bit de parité de clôture est égal à la parité calculée sur l'ensemble des bits de parité ligne, ou l'ensemble des bits de parité colonne, ou les deux, qui sont toutes équivalentes par définition. Ce bit de parité est calculé et fourni par le dispositif externe avec les autre bits de parité et les bits utiles de la donnée. Dans le principe général de détection/correction, et comme illustré sur la figure 8b, cela revient à répartir la structure de la donnée mémorisée dans le registre dans une matrice à n+1 lignes L1 à Lä+1, la n+1 ième ligne comprenant les m bits de parité colonne QPC1 à QPCk et le bit de parité de clôture QPG, et à m+1 colonnes C1 à Cm+1, la m+1 ième colonne comprenant les n bits de parité ligne QPL1 à QPLn et le bit de parité de clôture QPG. Comme indiqué plus haut, la parité calculée sur les bits de parité ligne, doit être identique à la parité calculée sur les bits de parité colonne. Ainsi, le bit de parité de clôture QPG peut être vu dans la matrice indifféremment comme le bit de parité de la ligne Lä+1, calculé sur les bits de parité colonne QPC1 à QPCk. A ce titre, on peut associer au point mémoire du bit de parité de clôture : - un circuit de détection DT.L(n+1), identique aux autres circuits de détection d'erreur de parité ligne et qui fournit le signal d'erreur locale colonne Err-L des figures 5 et 6, appliqué aux circuits de correction de chacun des bits de parité colonne; - et un circuit de détection DT.C(m+1), identique aux autres circuits de détection d'erreur de parité ligne, et qui fournit le signal d'erreur locale ligne Err-C des figures 5 et 6, appliqué aux circuits de correction de chacun des bits de parité ligne. Ces deux signaux Err-C et Err-L fournis et appliqués comme les autres signaux d'erreur de parité, rendent la logique de détection et correction complètement homogène pour les bits utiles et les bits de parité du registre, comme il ressort clairement de la figure 8b : chaque bit de parité ligne est à l'intersection de la colonne Cm+1 et d'une ligne de la matrice et sa correction dépend des deux signaux d'erreur de parité sur cette colonne et sur cette ligne; chaque bit de parité colonne est à l'intersection de la ligne Lr,+1 et d'une colonne de la matrice et sa correction dépend des deux signaux d'erreur de parité sur cette colonne et sur cette ligne ; le bit de parité de clôture étant à la fois un bit de parité ligne et un bit de parité colonne. Ces deux logiques de détection DT.L(n+1) et DT.C(m+1) associées au bit de parité de clôture remplacent ainsi par équivalence les moyens de détection d'erreur locale DT-C et DT-L prévus dans la variante des figures 5 et 6. L'architecture de registre mémoire qui vient d'être décrite permet de sécuriser de manière fiable et efficace, à moindre coût, les bits de données qui doivent y être mémorisés. La logique de détection/correction à la cadence horloge permet de restituer la valeur d'un bit erroné de manière simple et aisément compréhensible, car elle consiste à inverser le bit à l'intersection d'une ligne et d'une colonne dont les parités sont trouvées incorrectes. Selon la variante mise en oeuvre, elle peut en outre facilement être testée, et présente une grande homogénéité de traitement des bits utiles et de parité. Enfin la capacité de détection des erreurs multiples est meilleure que pour un code de Hamming optimisé. Elle est particulièrement intéressante pour des registres de circuit 20 programmable non reprogrammable in situ. REVENDICATIONS 1. Architecture d'un registre mémoire comprenant N éléments mémoire (Fi) prévus pour stocker N bits (Q;) d'une donnée présentée en écriture, caractérisée en ce que ladite architecture est basée sur une répartition mentale des N bits de donnée dans une matrice d'au moins deux dimensions n et m, avec n et m entiers non nuls et nxm au moins égal à N, plaçant chaque bit de ladite donnée à l'intersection d'une ligne (Li) parmi n et d'une colonne (Ck) parmi k, ladite architecture comprenant un élément mémoire supplémentaire (F.Lj) par ligne (Li) pour stocker un bit de parité ligne calculé sur les bits de donnée associés à ladite ligne et un élément mémoire supplémentaire (F.Ck) par colonne pour stocker un bit de parité colonne calculé sur les bits de donnée associés à ladite colonne. 2. Architecture selon la revendication 1, caractérisée en ce que lesdits bits de parité ligne et colonne calculés sur les bits d'une donnée à écrire sont présentés en écriture avec lesdits bits de données par un dispositif externe. 3. Architecture selon la revendication 2, caractérisée en ce que lesdits bits de donnée et lesdits bits de parité ligne et colonne sont présentés en écriture dans une même opération. 4. Architecture selon la revendication 1, caractérisée en ce que lesdits bits de parité ligne et colonne calculés sur les bits d'une donnée présentée en écriture sont calculés par des moyens interne (P). 5. Architecture d'un registre mémoire selon l'une des revendications 30 précédente, caractérisée en ce qu'elle comprend des moyens de détection d'erreur (DT) associés à chaque bit de parité mémorisé ligne, respectivement colonne, lesdits moyens de détection étantconfigurés pour vérifier qu'un bit de parité calculé sur les bits de donnée mémorisés (Q;) sur la ligne associée, respectivement la colonne associée, correspond au dit bit de parité mémorisé ligne (QPLi), respectivement colonne (QPCk), et fournissant en sortie un signal d'erreur de parité ligne (ErrLi), respectivement colonne (ErrCk) correspondant, avec un état actif correspondant à une erreur détectée. 6. Architecture selon la revendication 5, caractérisée en ce qu'elle comprend un circuit de correction (Ci) par élément mémoire (Fi) d'un bit de donnée, ledit circuit de correction recevant en entrée le signal d'erreur de parité ligne (ErrLi) et le signal de parité colonne (ErrCk) de la ligne et de la colonne associées au dit bit de donnée, ledit circuit de correction ayant pour effet d'inverser l'état logique contenu dans ledit élément mémoire, sur réception d'un état actif de chacun desdits signaux d'erreur. 7. Architecture selon le revendication 5 ou 6, caractérisée en ce qu'elle comprend des moyens de correction par élément mémoire de bit de parité ligne (F.Lj), respectivement colonne (F.Ck), lesdits moyens de correction recevant deux signaux d'erreur, un premier signal d'erreur étant ledit signal d'erreur de parité ligne (ErrLi), respectivement colonne (ErrCk), correspondant et un deuxième signal d'erreur locale ligne (Err-C), respectivement colonne (Err-L), lesdits moyens de correction ayant pour effet d'inverser l'état logique contenu dans ledit élément mémoire, sur réception d'un état actif de chacun desdits premier et deuxième signaux d'erreur. 8. Architecture selon la revendication 7, caractérisée en ce que ledit deuxième signal d'erreur locale ligne (Err-C) respectivement colonne (Err-L) est fourni par une logique de type NOR, recevant en entrée tous les signaux d'erreur de parité colonne, respectivement ligne. 9. Architecture selon la revendication 7, en combinaison avec la revendication 2 ou 3, caractérisé en ce qu'elle comprend un élément mémoire supplémentaire d'un bit de parité de clôture(QPG) calculé sur lesdits bits de parité ligne et/ou colonne et fourni par le dispositif externe, ledit bit de parité de clôture étant mentalement placé à l'intersection d'une ligne supplémentaire (Ln+1) comprenant les bits de parité colonne, et d'une colonne supplémentaire (Cm+i) comprenant les bits de parité ligne, et en ce que ledit deuxième signal d'erreur locale ligne, respectivement colonne, est fourni par un circuit de détection d'erreur de parité colonne (DT.C(m+1)), respectivement ligne (DT.L(n+1)), configuré pour vérifier qu'un bit de parité calculé sur les bits de parité ~o colonne mémorisés (QPCk) sur la ligne associée (Ln,,), respectivement les bits de parité ligne mémorisés (QPLi) sur la colonne associée (Cm+i), correspond au dit bit de parité de clôture mémorisé (QPG), et fournissant en sortie ledit deuxième signal d'erreur locale ligne (Err-C), respectivement colonne (Err-L), avec 15 un état actif correspondant à une erreur détectée. Architecture de registre mémoire selon l'une quelconque des revendications précédentes, du type programmable, mais non reprogrammable in situ. Dispositif électronique comprenant un circuit électronique comprenant un ou des registres mémoire avec une architecture selon l'une quelconque des revendications précédentes, et des moyens de fourniture de ladite donnée à mémoriser dans le ou les dits registres. Procédé de test d'un registre mémoire ayant une architecture selon la revendication 2 ou 3, en combinaison avec l'une quelconque des revendications 5 à 11, caractérisé en ce qu'il comprend au moins une étape de fourniture d'une donnée ou 20 11. 25 12. 30 13. 35 10. Architecture selon la revendication 5 ou 9, caractérisée en ce que ladite vérification d'un circuit de correction sur une ligne ou sur une colonne est réalisée par une logique de calcul de parité sur tous les bits mémorisés plus le bit de parité mémorisé sur cette ligne, ou sur cette colonne, le résultat du calcul fournissant ledit signal d'erreur correspondant.d'une séquence de données, dans laquelle parmi les bits de données et les bits de parité de ligne et colonne d'au moins une donnée présentée en écriture, un bit est erroné. 14. Procédé de détection d'erreur dans un registre mémoire, caractérisé en ce qu'il consiste à associer à chaque bit de donnée du registre, deux bits de parité, un premier bit de parité calculé sur un premier groupe de bits dudit registre, un deuxième bit de parité calculé sur un deuxième groupe de bits dudit registre, lesdits premier et deuxième groupes de bits ayant ce seul bit du registre en commun, les bits de parité étant calculés avec l'écriture d'une donnée dans ledit registre, à partir des groupes de bits correspondant prélevés de la donnée à écrire, et mémorisés dans des points mémoire, et à vérifier que les bits de parité calculés à partir des groupes de bits de donnée correspondants lus dans ledit registre, correspondent aux dits bits de parité lus dans le dit registre. 15. Procédé selon la revendication 14, caractérisé en ce que ladite vérification est effectuée pour chaque bit de parité du registre par un calcul de bit de parité sur ledit bit parité et lesdits bits de donnée correspondants lus dans le registre. 16. Procédé de détection selon la revendication 14 ou 15, caractérisé en ce qu'il comprend une correction d'un bit de donnée du registre, par inversion de son état logique, lorsque les premier et deuxième bits de parité associés sont chacun détectés faux. 17. Procédé selon la revendication 14, 15 ou 16, caractérisé en ce que pour chacun des bits de parité des premiers groupes de bits, respectivement des deuxièmes groupes de bits, lorsque ladite vérification du bit de parité du registre donne un résultat faux, et qu'aucune erreur n'est détectée sur les bits de parité des deuxièmes groupes, respectivement des premiers, une correction dudit bit de parité du registre est effectuée, correspondant à une inversion de son état logique.