Brevet FR3006094A1 — publié le 20141128

B12637 - 13-R0-0308 1 ECRITURE D'UNE MEMOIRE EEPROM SUR BUS 12C Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits incluant une ou plusieurs mémoires EEPROM connectées à un bus I2C. Exposé de l'art antérieur Un bus I2C est un bus bifilaire normalisé (UM10204 I2C-bus specification and user manual Rev.4 - 13 February 2012). Les mémoires EEPROM font partie des dispositifs susceptibles d'être raccordés à un bus I2C pour stocker des données provenant d'autres dispositifs connectés au bus ou fournir des données à ces dispositifs. Un dispositif souhaitant écrire des données dans une mémoire EEPROM présente, sur le bus, une série de données avec l'adresse de leur écriture dans la mémoire. La mémoire reçoit ces données, les parallélise, et programme les cellules correspondantes. Tant que l'écriture n'est pas terminée, la mémoire n'envoie pas de signal d'acceptation de sorte qu'elle refuse de communiquer avec le bus, le libérant pour d'autres périphériques éventuellement disponibles. Une fois l'écriture de la série terminée, une série suivante est présentée sur le bus par le dispositif. B12637 - 13-R0-0308 2 Résumé Un objet d'un mode de réalisation est de pallier tout ou partie des inconvénients des systèmes comportant une mémoire EEPROM sur un bus I2C. Un autre objet d'un mode de réalisation est d'accélérer l'écriture de données dans une mémoire EEPROM connectées à un bus I2C. Un autre objet d'un mode de réalisation est de proposer une solution qui soit compatible avec les bus I2C 10 existants et qui ne nécessite aucune modification du protocole I2C côté dispositif accédant à la mémoire. Un autre objet d'un mode de réalisation est de proposer une solution plus particulièrement adaptée à des mémoires EEPROM dont l'adressage dans la mémoire utilise au 15 moins un bit d'un champ d'adresse de sélection du circuit esclave. Selon un premier aspect, un objet d'un mode de réalisation est de proposer une solution compatible avec le fonctionnement actuel des bus I2C. 20 Selon un deuxième aspect, un objet d'un mode de réalisation est de proposer une solution qui ne modifie pas le cheminement des données dans la mémoire. Pour atteindre tout ou partie de ces objets ainsi que d'autres, on prévoit un circuit de mémoire EEPROM comportant, 25 entre un registre de réception des données et un décodeur de colonne, une mémoire tampon dont la taille correspond à la taille d'un page de données. On prévoit également un procédé d'écriture de données dans une mémoire EEPROM connectée à un bus I2C, dans lequel les 30 données à écrire sont transmises par page, la programmation d'une page de données dans la mémoire s'effectuant pendant qu'une autre page est reçue. Selon un mode de réalisation la page reçue est stockée dans une mémoire tampon. B12637 - 13-R0-0308 3 Selon un mode de réalisation, la mémoire accuse réception des données d'une page pendant qu'une autre page est en cours de programmation. 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 réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 est une représentation schématique d'un 10 système comportant des dispositifs électroniques connectés à un bus I2C ; la figure 2 illustre, de façon très schématique, une trame de communication sur un bus I2C ; la figure 3 est une représentation, sous forme de 15 blocs, d'un mode de réalisation d'une mémoire selon un premier aspect ; la figure 4 illustre, de façon très schématique, un mode de mise en oeuvre du procédé d'écriture dans une mémoire EEPROM selon le premier aspect de la figure 3 ; 20 les figures aA et 5B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la figure 3, selon un mode de réalisation ; les figures 6A. et 6B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la 25 figure 3, selon un autre mode de réalisation ; la figure 7 est une représentation, sous forme de blocs, d'une mode de réalisation d'une mémoire selon un deuxième aspect ; la figure 8 illustre, de façon très schématique, un 30 mode de mise en oeuvre du procédé d'écriture dans une mémoire EEPROM selon le deuxième aspect de la figure 7 ; les figures 9A. et 9B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la figure 7, selon un mode de réalisation ; et B12637 - 13-R0-0308 4 les figures 10A et 10B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la figure 7, selon un autre mode de réalisation. 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. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation qui vont être décrits ont été représentés et seront détaillés. En particulier, le fonctionnement d'un bus I2C n'a pas été détaillé, les modes de réalisation décrits étant compatibles avec le fonctionnement usuel et ne nécessite aucune modification du protocole I2C. La figure 1 est une représentation schématique d'un système comportant plusieurs dispositifs ou circuits électroniques connectés à un bus 1, de type I2C. Le système peut être un téléphone (mobile, DECT ou autre), un équipement de radio ou télédiffusion, un ordinateur, et plus généralement n'importe quel équipement traitant des données numériques. Un bus I2C comporte deux conducteurs SDA et SCL, 20 respectivement destinés à véhiculer des données et un signal de synchronisation. Le protocole I2C est normalisé. Plusieurs dispositifs électroniques devant communiquer entre eux sont connectés au bus 1. Le plus souvent, ces dispositifs incluent un microcontrôleur 12 et divers circuits ou 25 dispositifs 14 (DEV1), 16 (DEV2), par exemple des mémoires volatiles ou non, des décodeurs, des processeurs de traitement, des capteurs, etc. Dans les applications visées par la présente description, un ou plusieurs circuits 3 de mémoire non volatile 30 reprogrammable (EEPROM) sont connectés au bus 1. Dans la représentation de la figure 1, seuls les conducteurs du bus 1 ont été représentés. En pratique, le système comporte généralement d'autres constituants et les circuits 12, 14, 16 et 3 peuvent être connectés à divers B12637 - 13-R0-0308 conducteurs d'alimentation, et à d'autre bus d'adresses, de données et de commande qui n'ont pas été représentés. La figure 2 représente un exemple usuel de trame 2 de transmission de données depuis un dispositif ou circuit maître 5 vers une mémoire 3 (circuit esclave). On fera par la suite référence à un microcontrôleur 22 comme circuit maître, mais ce qui va être décrit s'applique plus généralement à tout circuit adapté à communiquer sur un bus I2C. D'après la norme I2C, une trame commence par une 10 condition de démarrage 21 (S), suivie d'un octet de sélection 22 dont une première partie 221 (SLAVE ADDRESS) sur 7 bits, identifie le dispositif destinataire et dont une deuxième partie 222 généralement sur un bit, identifie l'opération à effectuer sur ce dispositif esclave, à savoir récupération (ou lecture) de 15 données (R) ou un envoi (ou écriture) de données (W). Pour une mémoire EEPROM, l'état 0 ou 1 (en niveau logique) de ce bit 23 identifie une lecture ou une programmation. Chaque octet transmis sur le bus I2C est suivi d'un bit 23 (A) positionné par le récepteur et dont l'état indique au microcontrôleur la 20 réception ou non de l'octet par la mémoire. En fait, ce bit est au repos dans un état (N) indicateur d'une absence de réception et, quand elle a reçu l'octet, la mémoire change l'état de ce bit vers un état (A) que le microcontrôleur décode comme un accusé-réception. Une fois le circuit esclave sélectionné 25 (adressé), un ou deux octets 24 (ADD) qui suivent servent à identifier l'adresse de lecture ou d'écriture dans ce circuit. Puis, les données sont transmises par octet 25 (DATAi, avec i compris entre 1 et m). Un bit d'accusé-réception 23, généré par le dispositif recevant les données, suit chaque octet d'adresse 30 ou de données transmis. La fin de la trame est repérée par une condition d'arrêt 26 (P) positionné par le microcontrôleur. En prenant l'exemple d'une mémoire EEPROM 3 d'une capacité de 1 mégabit, la trame 2 comporte deux octets 24 d'adresse et typiquement 256 octets 25 de données (m = 256) 35 correspondant à la taille maximale d'une page. B12637 - 13-R0-0308 6 Un problème que l'on rencontre avec les mémoires EEPROM usuelles fonctionnant sous bus I2C est qu'elles ne peuvent pas recevoir des données pendant qu'elles en programment d'autres. En d'autres termes, l'écriture dans une mémoire EEPROM se décompose en une phase de réception des données à écrire, sous la forme de la réception d'une trame I2C, puis d'une phase de programmation pendant laquelle les cellules du réseau matriciel de la mémoire EEPROM sont programmées (écrites). Cela se traduit par le fait que la mémoire ne peut 10 d'habitude pas recevoir de données tant que la programmation d'une trame n'est pas terminée. Cela conditionne la durée d'une opération d'écriture. Côté bus I2C, il ne faut pas que le microcontrôleur 12 ne renvoie de données pendant que la mémoire n'est pas libre, 15 car la mémoire ne pourrait pas les traiter et elles seraient perdues. Selon la configuration du microcontrôleur, soit il envoie périodiquement (à la suite les unes des autres) des tentatives d'écriture jusqu'à ce que la mémoire réponde (mode 20 dit polling), soit il attend une temporisation déterminée (applicable si le microcontrôleur connait a priori le temps nécessaire à la programmation par la mémoire) avant d'envoyer une nouvelle trame de demande de lecture ou d'écriture. Dans le premier cas, le microcontrôleur 12 envoie, après la condition 25 d'arrêt 26, une ou plusieurs tentatives d'écriture en initiant une trame 29 avec une condition de démarrage 21, l'adresse 221 de la mémoire et un bit 222 demandant une écriture (W). Tant que la mémoire est occupée, elle n'envoie pas d'accusé-réception 23' (le bit reste dans l'état de repos). Une fois que la mémoire a 30 répondu en positionnant le bit 23' d'accusé-réception (A), le microcontrôleur renvoie une trame 2 d'écriture en recommençant depuis le début. Il serait souhaitable de raccourcir la durée d'une opération d'écriture. B12637 - 13-R0-0308 7 On pourrait penser augmenter la fréquence d'horloge du bus afin d'accélérer le rythme de transmission des données dans la mémoire. Toutefois, un bus I2C est, de par sa nature, limité en fréquence. En pratique, il est difficile de gérer un bus I2C à une fréquence supérieure au MHz. De plus, cela introduit des contraintes sur les composants, qui augmentent leurs prix de revient. Selon la présente description, on prévoit que la mémoire EEPROM accepte des données du bus I2C pendant qu'elle est en train d'écrire d'autres données dans ses cellules. Ainsi, on adjoint à la mémoire EEPROM une fonction tampon (virtuelle ou réelle) permettant, en écriture, de recevoir des données alors que les cellules sont en train d'être programmées. On pourrait penser intercaler, entre la connexion du circuit de mémoire EEPROM et le bus, une mémoire vive servant de mémoire tampon. Toutefois, cela ne ferait que transposer le problème à la connexion entre cette mémoire vive et la mémoire EEPROM, la mémoire vive devant alors attendre que la mémoire EEPROM ait fini de programmer ces cellules pour lui envoyer de nouvelles données. Une contrainte est que, pour que la mémoire fonctionne correctement sur le bus I2C, les modifications apportées à celle-ci et à son mode opératoire doivent être transparentes pour le bus, c'est-à-dire que l'on doit respecter la structure de la trame I2C. L'octet 24 ou les deux octets 24 d'adresse de la trame I2C conditionne la capacité d'adressage de la mémoire (1 octet limite à 16 kbits, 2 octets limitent à 512 kbits). On peut cependant étendre cette capacité d'adressage jusqu'à 4 Mbits en utilisant de 1 à 3 bits de l'octet 22 de sélection du dispositif esclave (du champ 221 d'adresse de dispositif esclave). Les mémoires EEPROM fonctionnant sous bus I2C peuvent donc être réparties en deux grandes catégories : les mémoires dont la capacité requiert d'utiliser, en plus des un ou deux 35 octets d'adresse 24 de la trame I2C, un ou plusieurs bits de B12637 - 13-R0-0308 8 l'octet de sélection 22, et les mémoires pour lesquels les un ou deux octets d'adresse 24 de la trame I2C suffisent. En pratique, la première catégorie concerne les mémoires de plus de 2 kbits (4 kbits et plus) si on utilise un seul octet d'adresse 24 (mode 5 d'adressage dit I2C) et les mémoires de plus de 512 kbits (1 Mbits et plus) si l'on utilise deux octets d'adresse 24 (mode d'adressage dit I2C étendu). L'inventeur a constaté que, pour les mémoires de la première catégorie en mode I2C étendu, c'est-à-dire les mémoires 10 de plus de 512 kbits, la taille d'une page (déterminée par le nombre de lignes de bits (colonnes) traitées par le décodeur) est de 256 octets pour les mémoires de 1 et 2 Mbits. Pour ce qui est des mémoires en mode I2C (un seul bit d'adresse), soit les mémoires ayant une capacité d'au plus l6kbits, la taille d'une 15 page est de 16 octets. Pour les mémoires de la seconde catégorie en mode I2C étendu, la taille d'une page est typiquement de 128 octets pour une mémoire de 512 kbits, de 64 octets pour une mémoire de 256 ou de 128 kbits, et de 32 octets pour une mémoire de 64 kbits ou 20 de 32 kbits. Habituellement, la taille d'une trame 2 envoyée sur le bus I2C en écriture correspond à la taille d'une page. Cela optimise le chargement dans la mémoire. Selon un premier aspect, on vise à préserver la taille 25 de page habituellement utilisée et ainsi à ne pas modifier la taille des trames côté microcontrôleur. La figure 3 est un schéma-bloc simplifié d'un mode de réalisation d'une mémoire 3 selon ce premier aspect. De façon usuelle, la mémoire comporte un plan mémoire 30 31 (MATRIX) formé d'un réseau matriciel de cellules mémoire (non représentées). Le plan 31 définit la capacité de la mémoire. Un décodeur 32 de rangée (ROW DEC) décode les adresses reçues pour sélectionner les cellules à programmer. Un décodeur 33 (LATCH) de colonne ou ligne de bit reçoit les données à programmer, par 35 rangée, c'est-à-dire les états des différents bits de la rangée B12637 - 13-R0-0308 9 adressée. Les décodeurs 32 et 33 sont commandés par un circuit logique 34 (CTRL) qui reçoit les trames du bus I2C et les décode. Les octets d'adresse sont envoyés vers un registre d'adresse 35 (AREG) et les octets de données sont envoyés vers 5 un registre de données 36 (DREG). Le circuit comporte en outre un générateur haute tension 37 (HV) pour générer, à partir d'une tension d'alimentation de quelques volts, une tension de programmation des cellules mémoire, par exemple de l'ordre de la quinzaine de volts, supérieure à cette tension d'alimentation. 10 La structure ci-dessus correspond à un exemple usuel de mémoire EEPROM. Le registre de données 36 a pour rôle de paralléliser les octets de données qui sont reçus en série du bus I2C. En pratique, il s'agit le plus souvent d'un registre sur huit bits 15 qui, une fois qu'il a reçu un octet du bus I2C, le transfère au décodeur 33. Le circuit 34 envoie un accusé réception 23 pour obtenir l'octet suivant. Le décodeur de colonne 33 stocke de façon temporaire ces données jusqu'à ce que la page soit complète (en fait jusqu'à réception de la condition 26 de fin de 20 trame), puis les envoie sur les lignes de bits du plan mémoire 31. Il en résulte l'écriture en une seule passe des cellules appartenant à la rangée décodée. Le registre 35 a le même rôle que le registre 36, mais pour les adresses qu'il parallélise à destination du décodeur 25 32. Dans un fonctionnement usuel, la mémoire (sa logique de contrôle 34) n'envoie un bit d'accusé-réception 23' de la trame 29 (phase d'attente) qu'une fois la programmation effectuée, c'est-à-dire une fois que les données ont fini d'être 30 stockées, de façon non volatile dans les cellules mémoire, ce qui prend généralement de l'ordre de la milliseconde. Selon le mode de réalisation de la figure 3, on intercale, entre le registre de données 36 et le décodeur de colonne 33, une mémoire tampon 39 (mémoire volatile) ayant la 35 taille d'une page du plan mémoire 32. Cette mémoire tampon B12637 - 13-R0-0308 10 permet de recevoir une page pendant qu'une page précédente est en cours d'écriture dans le plan mémoire. Ce mode de réalisation requiert de modifier la gestion de l'émission du bit d'accusé-réception par le dispositif 5 esclave (la mémoire). Ainsi, le circuit 34 est paramétré pour changer l'état du bit 23', donc émettre un accusé-réception sur le bus, alors même que la mémoire est en programmation, c'est-à-dire que l'écriture des bits présent dans les bascules (non représentées) de lignes de bit du décodeur de colonne 33 n'est 10 pas terminée. La figure 4 est un schéma-bloc illustrant le fonctionnement de ce mode de réalisation. La partie gauche de la figure illustre ce qui se passe côté microcontrôleur et la partie droite ce qui se passe côté mémoire. Les opérations sur 15 le bus sont symbolisées en partie centrale. Le microcontrôleur commence (bloc 41, BEGIN) par préparer les données à envoyer à la mémoire. Il envoie une première trame FR1 sur le bus (bloc 421, SEND FR1) sous forme d'octets (BYTES) successifs séparés par des 20 bits d'accusé-réception (A.). Côté mémoire, les octets reçus sont parallélisés par les registres d'adresse, puis de données, les octets de données étant transférés à la mémoire tampon 39 (bloc 431, FR1 -> DREG -> BUFF). Une fois la page reçue, le contenu de la mémoire 25 tampon 39 est transféré dans les bascules du décodeur de colonne 33 (bloc 44, FR1 -> LATCH). Par exemple, toutes les données sont transférées en parallèle de la mémoire tampon 39 au décodeur 33. En variante, ce transfert peut être sérialisé, par exemple par octets ou par mots de plusieurs octets, au prix d'un temps 30 légèrement allongé, mais au bénéfice d'un circuit plus simple. Le transfert dans le décodeur s'effectue après que la mémoire a reçu une condition d'arrêt indiquant la fin de la transmission de la trame. Côté microcontrôleur, on suppose dans cet exemple 35 qu'il se met en mode d'envoi de requêtes d'écriture successives B12637 - 13-R0-0308 11 (bloc 451, POLLING) en envoyant des trames 29 avec le bit 222 de l'octet de sélection dans l'état W. En fait, le microcontrôleur essai d'envoyer la trame suivante, mais reste bloqué au niveau du premier octet tant que la mémoire n'en accuse pas réception (bit 23'). Tant que le transfert dans le décodeur 33 n'a pas eu lieu, le bit 23' reste dans l'état N de repos. Dès que ce transfert est effectué, le circuit 34 de la mémoire peut positionner ce bit 23' dans l'état A. S'agissant de la première trame, le temps d'attente 451 est réduit car les bascules du décodeurs sont libres (il n'y a pas de programmation en cours). En variante, on pourra prévoir que la première trame ne transite pas par la zone tampon et soit directement traitée par le décodeur de colonne. S'ensuit alors, à la fois la programmation du plan mémoire 31 avec les données de la première page (bloc 461, PROG FR1) et l'envoi (bloc 422, SEND FR2) de la deuxième trame FR2 par le microcontrôleur et la mise en parallèle et le transfert des données, côté mémoire, dans la zone tampon 33 (bloc 432, FR2 -> DREG -> BUFF). Le microcontrôleur se remet alors en mode d'attente (bloc 45). La durée du mode d'attente est ici conditionnée par la durée la plus longue entre le temps nécessaire à la programmation d'une trame dans le plan mémoire et le temps nécessaire à la transmission d'une trame sur le bus. Si le temps de programmation est le plus long des deux (cas illustré par la figure 4), tant que la programmation de la mémoire n'est pas terminée (sortie NO du bloc 471, FR1 WRITTEN ?), le contenu de la zone tampon 39 ne peut pas être transféré dans le décodeur 33 et le circuit 34 laisse donc le bit 23' au repos. Dès que la programmation de la page est terminée (sortie Y du bloc 471), le contenu de la zone tampon (la trame FR2) est transféré dans le décodeur de colonne (bloc 442, FR2 -> LATCH), puis le circuit 34 active le bit 23' dans l'état 35 A. B12637 - 13-R0-0308 12 Si le temps de transmission est plus long que le temps de programmation, la fin de l'envoi de la trame suivante sera postérieure à la fin de la programmation de la trame courante. La condition 471 sera remplie et le "polling donnera immédiatement un accusé-réception sur le bit 23'. Ce fonctionnement se poursuit pour toutes les pages que le microcontrôleur souhaite écrire, avec pour chaque trame i, son envoi (bloc 42i, SEND FRi) par le microcontrôleur et son stockage dans la zone tampon de la mémoire (bloc 43i, PRi - -> DREG -> BUFF) pendant la programmation (bloc 46i-1, PROG FRi-1) de la trame précédente, le transfert de la trame dans le décodeur de colonne (bloc 44i, FRi -> LATCH) une fois l'écriture de la trame précédente terminée (bloc 47i-1, PRi-1 WRITTEN ?), et ainsi de suite ((bloc 42i+1, SEND FRi ; bloc 43i+1, PRi+1 -> DREG -> BUFF ; bloc 46i, PROG PRi ; etc.). On peut prévoir que le microcontrôleur s'assure qu'une programmation est terminée en envoyant une commande de lecture. Si une programmation est en cours ou une trame est en attente dans la mémoire tampon, la mémoire refuse en laissant le bit 23' à l'état N. Par contre, sur une commande d'écriture, la mémoire peut l'accepter. Par exemple, un test de lecture est déclenché par le microcontrôleur à la fin des n trames. Lors du traitement de la dernière trame FRn ((bloc 42n, SEND FRn ; bloc 43n, FRn -> DREG -> BUFF ; etc.), l'attente par le microcontrôleur (bloc 45n) est alors plus longue car il faut attendre (bloc 47n-1, FRn-1 WRITTEN ?) la fin de la programmation de la trame FRn-1 (bloc 46n-1, PROG FRn-1) pour transférer (bloc 44n, FRn -> LATCH) la trame FRn dans le décodeur et commencer sa programmation (bloc 46n, PROG ERn). Le dernier bit 23' est positionné dans l'état A à la fin de la programmation de la trame FRn (sortie Y du bloc 47n, FRn WRITTEN ?). La phase d'attente est toutefois ici une phase où le microcontrôleur cherche à lire des données (bit 222 = R) plutôt 35 qu'à en écrire, pour s'assurer que la programmation est finie. B12637 - 13-R0-0308 13 La procédure d'écriture est alors terminée (bloc 48, END). Comme décrit ci-dessus, le microcontrôleur fonctionne de préférence en mode "polling", c'est-à-dire qu'à la fin de la 5 trame, il envoie une commande d'écriture jusqu'à ce que la mémoire réponde. En variante, on pourra soit prévoir un mode temporisé avec une temporisation nulle (dans le cas d'une durée de programmation plus rapide que la durée de transmission d'une trame), ou ajuster la temporisation à la différence de durée 10 entre programmation et transmission. Selon un mode de réalisation destiné à la première catégorie de mémoires (utilisant un, deux ou trois bits de la partie 221 de l'octet 22 de sélection pour compléter l'octet ou les octets d'adresse 24), on utilise le bit de poids fort de la 15 partie d'adresse contenue dans le champ 221 de l'octet de sélection 22 pour organiser la gestion de la mémoire tampon 39 et programmer le plan mémoire 31 avec les données reçues d'une page pendant que la mémoire reçoit la page suivante. On tire profit du fait que la taille de la page dépend du mode (I2C ou 20 I2C étendu) mais ne varie pas avec la taille de la mémoire (16 octets pour le mode I2C, et 256 octets pour les mémoires de 1 et 2 Mbits). Cela est donc facilement gérable côté microcontrôleur. Le microcontrôleur débute une trame en envoyant un octet de sélection et deux octets d'adresse. Toutefois, il 25 alterne l'état du bit de poids fort d'une trame à la suivante. Côté mémoire, les bits d'adresse, contenus dans l'octet 22 et dans les octets 24, sont transférés de façon usuelle vers le registre d'adresse. Toutefois, le circuit 34 interprète en outre le bit de poids fort de l'adresse pour gérer le registre ou 30 mémoire tampon. Les figures aA et 5B illustrent des exemples de trames d'écriture selon ce mode de réalisation, respectivement dans le cas où la programmation d'une page est plus lente que la transmission d'une trame et inversement. Les figures aA et 5B 35 concernent le cas d'une mémoire de 1 Mbits. Aux figures aA et B12637 - 13-R0-0308 14 5B, on a identifié les périodes respectives 42, 45 et 46 d'émission des trames par le microcontrôleur, d'attente et de programmation dans la matrice mémoire pour n pages (ici équivalentes à n trames) de m octets (BYTES). On retrouve la condition de démarrage 21 (S) puis, pour chaque trame, les octets de sélection 22, d'adresses 24 (add) et de données 25 (dat), séparés par des bits 23 d'accusé réception (A), la trame se terminant par une condition d'arrêt 26 (P). Dans ce mode de réalisation, le contenu de l'octet de 10 sélection 22 diffère d'une trame à l'autre et le microcontrôleur alterne la valeur A0, A2 du bit de poids fort de la partie d'adresse incluse dans le champ 221. Les figures aA et 5B illustrent le cas où la transmission de la deuxième trame est immédiate après la 15 première trame, la zone tampon étant initialement vide (étape 451, figure 4, réduite au minimum, voire absente). Pour la suite, dans le cas de la figure SA, il y a entre chaque trame, une phase d'attente 45 constituée de trames 29 (condition 21, octet 22, bit 23' à l'état N) jusqu'à ce que 20 le bit 23' soit positionné à l'état A par la mémoire. Dans cet exemple, le bit de poids fort de l'adresse prend alternativement la valeur A0 ou A2 d'une phase d'attente à la suivante. Dans le cas de la figure 5B, il n'y a pas de phase d'attente côté microcontrôleur. C'est la mémoire qui attend dans 25 la mesure où la programmation est plus rapide que la transmission. Cela est illustré par l'absence de phase 45 et le fait que la phase 46 est plus courte que la phase 42. Pour s'assurer que la mémoire a fini de programmer, on peut effectuer des requêtes de lecture. Quel que soit le bit de 30 poids fort de l'adresse, si les programmations (en cours et éventuellement en attente dans le tampon 39) sont finies, la mémoire enverra un bit 23' à l'état A. Selon un autre mode de réalisation, adapté aux deux catégories de mémoires (utilisant une partie de l'octet de 35 sélection ou non), l'alternance entre une page et la suivante B12637 - 13-R0-0308 15 s'effectue directement à partir des trames, la mémoire identifiant la fin d'une page par la fin d'une trame (réception de la condition 26). Ce mode de réalisation présente l'avantage d'être 5 compatible avec toutes les mémoires (y compris celles dont la capacité ne requiert pas d'inclure des bits d'adresse dans l'octet de sélection). On notera que, quel que soit le mode de réalisation, le microcontrôleur connaît la taille de la mémoire qu'il 10 souhaite adresser. Il connaît donc la taille de la page, donc de la mémoire tampon. Il peut alors adapter la taille maximum de la trame pour qu'elle corresponde à la taille d'une page. Il peut toujours envoyer moins d'octets que ne compte la page. Toutefois, s'il en envoie plus, les derniers octets reçus 15 écrasent les premiers. Les figures 6A et 6B illustrent des exemples de trames d'écriture selon cet autre mode de réalisation, respectivement dans le cas où la programmation d'une page est plus lente que la transmission d'une trame et inversement. 20 Par rapport au mode de réalisation illustré par les figure SA et 5B, une différence est que le microcontrôleur ne se préoccupe pas d'alterner le bit de poids fort de l'adresse (cela est illustré aux figure 6A. et 6B dans un exemple de mémoire de la deuxième catégorie, l'octet 22 ayant toujours la valeur A0). 25 Une autre différence est que la mémoire n'a pas besoin d'interpréter ce bit de poids fort. Cela simplifie l'adressage côté microcontrôleur. Un autre avantage de ce mode de réalisation est qu'il est complètement transparent pour le microcontrôleur. 30 La gestion de l'accusé-réception de fin de trame sur la requête en lecture 29 du microcontrôleur est similaire à celle du mode de réalisation des figures aA et 5B. Quel que soit le mode de réalisation, le fonctionnement de la mémoire en lecture n'est pas modifié. Les B12637 - 13-R0-0308 16 données sont directement lues, par octet, et transférées du plan mémoire vers un registre de données de sortie non représenté. Selon un deuxième aspect, on tire profit de la présence des bascules présentes au niveau du décodeur de colonne pour jouer le rôle de mémoire tampon. Par rapport au premier aspect, une différence est que les trames d'écritures on la taille d'une demi-page physique de la mémoire et non la taille d'une page. La figure 7 est un schéma-bloc d'un mode de 10 réalisation d'une mémoire 3' selon ce deuxième aspect. On retrouve les éléments 31, 32, 34, 35, 36 et 37 de la figure 3. Par contre, selon ce deuxième aspect, le décodeur de colonnes 33' est divisée en deux groupes ou banques de cellules : un premier groupe 332 (BANK') de lignes de bit 15 correspond aux adresses de rang le plus élevé et un deuxième groupe 334 (BANK2) de lignes de bit correspondant aux adresses de rang le plus faible. Le groupe est identifié par le bit de poids fort de l'adresse. Par exemple, pour une mémoire de 2048 lignes de bit (page de 256 octets), les groupes 332 et 334 20 adressent chacun 128 octets. Trois multiplexeurs MUX, respectivement 71 entre le registre d'adresses 35 et les groupes 332 et 334, 72 entre le circuit de commande 34 et les groupes 332 et 334, et 73 entre le circuit d'alimentation 37 et les groupes 332 et 334 sont ajoutés. Le rôle de ces multiplexeurs 25 71, 72 et 73 est d'aiguiller les données et la haute tension de programmation vers l'un ou l'autre des groupes. Les signaux de sélection des multiplexeurs n'ont pas été illustrés. Ces signaux proviennent en pratique du bloc de commande 34. En variante, le multiplexeur 71 est omis. Il n'est en effet pas gênant d'envoyer 30 l'adresse aux deux groupes, pourvu que le multiplexeur 72 envoie les signaux de commande appropriés pour ne charger les données que dans un des groupes 332 et 334. Afin de préserver le fonctionnement du plan mémoire, celui-ci doit, lors de la fabrication, être divisée en deux 35 groupes ou deux zones adressables séparément. B12637 - 13-R0-0308 17 Par rapport au premier aspect, l'adressage effectué par le microcontrôleur est par demi-page de la mémoire et non par page. Ainsi, le microcontrôleur doit sélectionner en alternance l'un ou l'autre des groupes La figure 8 est un schéma-bloc illustrant le fonctionnement de ce mode de réalisation. La partie gauche de la figure illustre ce qui se passe côté microcontrôleur et la partie droite ce qui se passe côté mémoire. Les opérations sur le bus sont symbolisées en partie centrale. Le microcontrôleur commence (bloc 81, BEGIN) par préparer les données à envoyer à la mémoire. Il envoie une première trame FR1 sur le bus (bloc 821, SEND FR1) sous forme d'octets (BYTES) successifs séparés par des bits d'accusé-réception (A). Cette trame représente la taille d'une demi-page de la mémoire. Côté mémoire, les octets reçus sont parallélisés par les registres d'adresse, puis de données, les octets de données étant transférés (en parallèle ou partiellement en série) au premier groupe de bascules du registre de colonne (bloc 831, FR1 -> DREG -> BANK1). Une fois que le microcontrôleur a envoyé sa demi-page, on suppose dans cet exemple qu'il se met en mode d'envoi de requêtes d'écriture successives (bloc 851, POLLING) en envoyant des trames 29 avec le bit 222 de l'octet de sélection dans l'état W. Une fois la première demi-page reçue, le circuit 34 de la mémoire positionne le bit 23' dans l'état A. S'agissant de la première trame, le temps d'attente 851 est réduit car le transfert dans le décodeur est rapide. S'ensuit alors, à la fois la programmation du plan mémoire 31 avec les données de la première demi-page (bloc 861, PROG FR1) et l'envoi (bloc 822, SEND ER2) de la deuxième trame ER2 par le microcontrôleur et son transfert, côté mémoire, dans le second groupe de bascules du registre de colonne (bloc 832, ER2 -> DREG -> BANK2). B12637 - 13-R0-0308 18 Le microcontrôleur se remet alors en mode d'attente (bloc 85). La durée du mode d'attente est ici conditionnée par la durée la plus longue entre le temps nécessaire à la programmation d'une demi-page dans le plan mémoire et le temps nécessaire à la transmission d'une trame sur le bus. Si le temps de programmation est le plus long des deux (cas illustré par la figure 8), tant que la programmation de la mémoire n'est pas terminée (sortie NO du bloc 871, FR1 WRITTEN ?), la demi-page suivante ne peut pas être reçue dans le décodeur 33 et le circuit 34 laisse donc le bit 23' au repos. Dès que la programmation de la demi-page est terminée (sortie Y du bloc 871), le circuit 34 active le bit 23' dans l'état A. Si le temps de transmission est plus long que le temps de programmation, la condition 871 est immédiatement remplie et le bit 23' est dans l'état A dès la première requête de "polling" du microcontrôleur. Ce fonctionnement se poursuit pour toutes les pages que le microcontrôleur souhaite écrire, avec pour chaque demi-page i, son envoi dans une trame (bloc 82i, SEND FRi) par le microcontrôleur et son transfert dans le groupe de bascules libre du décodeur de colonne (bloc 83i, FRi -> DREG -> BANK2), arbitrairement le groupe 2, pendant la programmation (bloc 86i-1, PROG FRi-1) de la demi-page précédente, l'envoi d'un bit 23' d'accusé-réception une fois l'écriture de la trame précédente terminée (bloc 87i-1, BANK1 WRITTEN ?), et ainsi de suite ((bloc 82i+1, SEND FRi ; bloc 83i+1, FRi+1 -> DREG -> BANK1 ; bloc 46i, PROG FRi ; bloc 87i, BANK2 WRITTEN ? ; etc.). Comme dans le premier aspect, le microcontrôleur s'assure que la programmation est terminée par l'envoi de requêtes de lecture. Ainsi, lors du traitement de la dernière demi-page ou 35 trame FRn (bloc 82n, SEND FRn ; bloc 83n, FRn -> DREG -> BANK2 ; B12637 - 13-R0-0308 19 etc.), l'attente par le microcontrôleur (bloc 85n) est plus longue car il faut attendre (bloc 87n-1, BANK1 WRITTEN ?) la fin de la programmation de la trame ERn-1 (bloc 86n-1, PROG FRn-1) pour commencer la programmation de la trame FRn (bloc 86n, PROG FRn). Le dernier bit 23' est positionné dans l'état A à la fin de la programmation de la trame ERn (sortie Y du bloc 87n, BANK2 WRITTEN ?). La procédure d'écriture est alors terminée (bloc 88, END). Dans cet aspect également, le microcontrôleur fonctionne de préférence en mode "polling", c'est-à-dire qu'à la fin de le trame, il envoie une commande d'écriture jusqu'à ce que la mémoire réponde. En variante, on pourra soit prévoir un mode temporisé avec une temporisation nulle (dans le cas d'une durée de programmation plus rapide que la durée de transmission d'une trame), ou ajuster la temporisation à la différence de durée entre programmation et transmission. Selon un mode de réalisation destiné à la première catégorie de mémoires (utilisant un, deux ou trois bits de la partie 221 de l'octet 22 de sélection pour compléter l'octet ou les octets d'adresse 24), on utilise le bit de poids fort de la partie d'adresse contenue dans le champ 221 de l'octet de sélection 22 pour sélectionner le groupe 332 ou 334 de bascules du décodeur de colonne 33 et programmer le plan mémoire 31 avec les données reçues d'une demi-page pendant que la mémoire reçoit la demi-page suivante. Comme pour le premier aspect, on tire profit du fait que la taille de la page dépend du mode (I2C ou I2C étendu) mais ne varie pas avec la taille de la mémoire (16 octets pour le mode I2C, et 256 octets pour les mémoires de 1 et 2 Mbits). Cela est donc facilement gérable côté microcontrôleur. Le microcontrôleur débute une trame en envoyant un octet de sélection et deux octets d'adresse. Toutefois, il alterne l'état du bit de poids fort d'une trame à la suivante. Côté mémoire, les bits d'adresse, contenus dans l'octet 22 et dans les octets 24, sont transférés de façon usuelle vers le B12637 - 13-R0-0308 20 registre d'adresse. Toutefois, le circuit 34 interprète en outre le bit de poids fort de l'adresse pour gérer le groupe de bascules adressé. Les figures 9A et 9B illustrent des exemples de trames 5 d'écriture selon ce mode de réalisation, respectivement dans le cas où la programmation d'une demi-page est plus lente que la transmission d'une trame et inversement. Les figures 9A et 9B concernent le cas d'une mémoire de 1 Mbits. Aux figures 9A et 9B, on a identifié les périodes respectives 82, 85 et 86 10 d'émission des trames par le microcontrôleur, d'attente et de programmation dans la matrice mémoire pour n demi-pages (ici équivalentes à n trames) de m/2 octets (m/2 BYTES) plus les bits d'accusé-réception. On retrouve la condition de démarrage 21 (S) puis, 15 pour chaque trame, les octets de sélection 22, d'adresses 24 (add) et de données 25 (dat), séparés par des bits 23 d'accusé réception (A), la trame se terminant par une condition d'arrêt (P). Dans ce mode de réalisation, le contenu de l'octet de sélection 22 diffère d'une trame à l'autre et le microcontrôleur 20 alterne la valeur A0, A2 du bit de poids fort de la partie d'adresse incluse dans le champ 221 pour sélectionner alternativement chacun des groupes de la mémoire. Les figures 9A et 9B illustrent le cas où la transmission de la deuxième trame est immédiate après la 25 première trame, la zone tampon étant initialement vide (étape 851, figure 4 réduite au minimum, voire absente). Pour la suite, dans le cas de la figure 9A, il y a entre chaque trame, une phase d'attente 85 constituée de trames 29 (condition 21, octet 22, bit 23' à l'état N) jusqu'à ce que 30 le bit 23' soit positionné à l'état A par la mémoire. Dans cet exemple, le bit de poids fort de l'adresse prend alternativement la valeur AO ou A2 d'une phase d'attente à la suivante. Dans le cas de la figure 9B, il n'y a pas de phase d'attente côté microcontrôleur. C'est la mémoire qui attend dans 35 la mesure où la programmation est plus rapide que la B12637 - 13-R0-0308 21 transmission. Cela est illustré par l'absence de phase 85 et le fait que la phase 86 est plus courte que la phase 82. Pour s'assurer que la mémoire a fini de programmer, on peut effectuer des requêtes de lecture. Quel que soit le bit de 5 poids fort de l'adresse, si la programmation est finie, la mémoire enverra un bit 23' à l'état A. Selon un autre mode de réalisation, adapté aux deux catégories de mémoires (utilisant une partie de l'octet de sélection ou non), le groupe est identifié par le bit de poids 10 fort, qu'il soit ou non dans l'octet de sélection (par exemple, cas d'une mémoire de 512 kbits). Le microcontrôleur doit cependant toujours, selon le deuxième aspect, alternée les groupes d'une demi-page à l'autre lors de l'envoi. Comme dans le premier aspect, ce mode de réalisation 15 présente l'avantage d'être compatible avec toutes les mémoires (y compris celles dont la capacité de requiert pas d'inclure des bits d'adresse dans l'octet de sélection). Par rapport au premier aspect, la taille maximum d'une trame que peut prendre en compte la mémoire correspond ici à la 20 taille d'une demi-page. Les figure 10A et 10B illustrent des exemples de trames d'écriture selon cet autre mode de réalisation, respectivement dans le cas où la programmation d'une page est plus lente que la transmission d'une trame et inversement. 25 Par rapport au mode de réalisation illustré par les figure 9A et 9B, une différence est que le microcontrôleur ne se préoccupe pas d'alterner le bit de poids fort de l'adresse (cela est illustré aux figure 10A et 10B dans un exemple de mémoire de la deuxième catégorie, l'octet 22 ayant toujours la valeur A0). 30 Une autre différence est que la mémoire n'a pas besoin d'interpréter ce bit de poids fort. Cela simplifie l'adressage côté microcontrôleur. Un autre avantage de ce mode de réalisation est qu'il est complètement transparent pour le microcontrôleur. B12637 - 13-R0-0308 22 La gestion de l'accusé-réception de fin de trame sur la requête en lecture 29 du microcontrôleur est similaire à celle du mode de réalisation des figures 9A. et 9B. Comme pour le premier aspect, quel que soit le mode de réalisation, le fonctionnement de la mémoire en lecture n'est pas modifié. Les données sont directement lues, par octet, et transférées du plan mémoire vers un registre de données de sortie non représenté. On notera que l'architecture décrite en relation avec le deuxième aspect peut être compatible avec une utilisation par page entière (groupe 1 + groupe 2). Il suffit que le circuit de commande 34 et les multiplexeurs puissent adresser les deux groupes en même temps. Dans ce cas, on perd l'avantage de rapidité lié à la transmission pendant la programmation. Toutefois, cela permet au microcontrôleur de transmettre des données par page entière de façon classique. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix entre le premier et le deuxième aspect et entre les différents modes de réalisation peut être dicté par la vitesse du bus et la taille de la mémoire concernée afin d'optimiser les temps d'écriture. Par exemple, pour une mémoire de 1 Mbits, on préférera une réalisation conforme au deuxième aspect. De plus, lorsque l'on fait référence à une transmission ou une programmation par page ou demi-page, on comprendra qu'il peut s'agir de moins d'une page ou moins d'une demi-page en fonction de la quantité de données que l'on souhaite stocker. De même, la transmission pourrait comporter plus d'une page ou d'une demi-page, les données en excès écrasant les premières données. En outre, la réalisation pratique d'une mémoire selon le premier ou deuxième aspect est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus 35 et en utilisant des techniques en elles-mêmes connues de B12637 - 13-R0-0308 23 conception et de fabrication de circuits intégrés. De même, la configuration ou programmation de la mémoire pour qu'elle traite les trames selon l'un des modes de réalisation décrits et notamment positionne les bits s'accusé-réception au bon moment est également à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus. REVENDICATIONS1. Circuit de mémoire EEPROM (3) comportant, entre un registre de réception des données (36) et un décodeur de colonne (33), une mémoire tampon (39) dont la taille correspond à la taille d'un page de données. 2. Procédé d'écriture de données dans une mémoire EEPROM connectée à un bus I2C, dans lequel les données à écrire sont transmises par page, la programmation (46) d'une page de données dans la mémoire (3) s'effectuant pendant qu'une autre page est reçue (43). 3. Procédé selon la revendication 2, dans lequel la page reçue est stockée dans une mémoire tampon (39). 4. Procédé selon la revendication 2 ou 3, dans lequel la mémoire accuse réception des données d'une page pendant qu'une autre page est en cours de programmation. 5. Procédé selon l'une quelconque des revendications 2 à 4, adapté à une mémoire selon la revendication 1.