FR3095073A1 - Codage de données sur bus série - Google Patents

Codage de données sur bus série Download PDF

Info

Publication number
FR3095073A1
FR3095073A1 FR1903929A FR1903929A FR3095073A1 FR 3095073 A1 FR3095073 A1 FR 3095073A1 FR 1903929 A FR1903929 A FR 1903929A FR 1903929 A FR1903929 A FR 1903929A FR 3095073 A1 FR3095073 A1 FR 3095073A1
Authority
FR
France
Prior art keywords
memory
data
bit
transmitted
round
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1903929A
Other languages
English (en)
Other versions
FR3095073B1 (fr
Inventor
Francois Tailliet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1903929A priority Critical patent/FR3095073B1/fr
Priority to US16/840,759 priority patent/US11321270B2/en
Priority to CN202010281520.XA priority patent/CN111813730A/zh
Publication of FR3095073A1 publication Critical patent/FR3095073A1/fr
Application granted granted Critical
Publication of FR3095073B1 publication Critical patent/FR3095073B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • G11C5/066Means for reducing external access-lines for a semiconductor memory clip, e.g. by multiplexing at least address and data signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1045Read-write mode select circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

Codage de données sur bus série La présente description concerne un procédé de codage d’une donnée (B) à transmettre sur un bus série SPI, dans lequel un registre (2) d’état d’une mémoire est modifié, à au moins un instant choisi, en fonction de tout ou partie de ladite donnée (B) à transmettre. Figure pour l'abrégé : Fig. 4

Description

Codage de données sur bus série
La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les systèmes dans lesquels plusieurs circuits sont susceptibles de communiquer sur un bus série.
Le bus série est déjà largement mis en œuvre pour permettre à plusieurs circuits électroniques d’un même système de communiquer entre eux. En automobile, par exemple, un calculateur utilise fréquemment un bus série pour permettre à un microprocesseur de venir lire ou écrire des informations dans une mémoire non volatile tout au long de l’utilisation d’un véhicule.
Il existe un besoin d’étendre les capacités actuelles de communication par bus série. Il serait en particulier souhaitable de pouvoir profiter de la présence d’un bus série pour permettre de coder des informations supplémentaires, transmissibles indépendamment des canaux de communication usuels.
Un mode de réalisation pallie tout ou partie des inconvénients des procédés de codage de données sur bus série connus.
Un mode de réalisation prévoit un procédé de codage d’une donnée à transmettre sur un bus série SPI, dans lequel un registre d’état d’une mémoire est modifié, à au moins un instant choisi, en fonction de tout ou partie de ladite donnée à transmettre.
Selon un mode de réalisation, la mémoire est une mémoire non volatile reprogrammable.
Selon un mode de réalisation, le registre d’état est modifié par une inversion d’état d’un bit de verrouillage de la mémoire en écriture.
Selon un mode de réalisation, le registre d’état est modifié au cours d’un cycle d’écriture dans la mémoire.
Selon un mode de réalisation, le registre d’état est modifié une seule fois au cours du cycle d’écriture dans la mémoire, la donnée à transmettre formant un bit.
Selon un mode de réalisation, le registre d’état est modifié plusieurs fois au cours du cycle d’écriture dans la mémoire, la donnée à transmettre formant un mot comportant au moins deux bits.
Selon un mode de réalisation, le nombre de modifications du registre d’état, au cours du cycle d’écriture dans la mémoire, est lié au nombre de transitions d’états entre des bits successivement transmis du mot.
Selon un mode de réalisation, ladite donnée à transmettre est représentative d’une usure de la mémoire.
Selon un mode de réalisation, ladite donnée à transmettre reflète un nombre de corrections d’erreurs effectuées au sein de la mémoire.
Un mode de réalisation prévoit un procédé comportant les étapes suivantes :
commencer à écrire dans la mémoire ;
transmettre, de façon périodique, le registre d’état de la mémoire ;
modifier, audit instant donné, le registre d’état de la mémoire pour coder tout ou partie de la donnée à transmettre ; et
cesser d’écrire dans la mémoire.
Un mode de réalisation prévoit un circuit électronique adapté à la mise en œuvre du procédé décrit.
Un mode de réalisation prévoit une mémoire non volatile comportant un registre d’état adapté à être modifié par la mise en œuvre du procédé décrit.
Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation et modes de mise en œuvre particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles :
la figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d’un circuit électronique ;
la figure 2 représente un exemple de registre d’état d’une mémoire ;
la figure 3 est un diagramme d’enchaînement d’un mode de réalisation d’opérations associées à un cycle d’écriture de données dans une mémoire via un bus série ;
la figure 4 représente un mode de mise en œuvre d’un procédé de codage d’une donnée à transmettre sur un bus série ; et
la figure 5 représente un autre mode de mise en œuvre d’un procédé de codage d’une donnée à transmettre sur un bus série.
De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation et modes de mise en œuvre 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 étapes et éléments utiles à la compréhension des modes de réalisation et modes de mise en œuvre décrits ont été représentés et sont détaillés. En particulier, la génération des signaux en fonction des données à transmettre sur un bus série et la réception de ces signaux par un circuit de réception n’ont pas été détaillées, les modes de réalisation et modes de mise en œuvre décrits étant compatibles avec les transmissions usuelles entre deux ou plusieurs circuits sur un bus série.
Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments.
Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures.
Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près.
La figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d’un circuit électronique 1 du type auquel s’appliquent les modes de mise en œuvre décrits.
Selon ce mode de réalisation, le circuit électronique 1 comporte :
une ou plusieurs unités 11 de traitement numérique (PU), par exemple de type machine d’états, microprocesseur, circuit logique programmable, etc. ;
une ou plusieurs mémoires 12, 13 de stockage volatil (RAM) et/ou non volatil (NVM) de données et programmes ;
un ou plusieurs bus 14 de données, d’adresses et/ou de commandes entre les différents éléments internes au circuit électronique 1 ;
une ou plusieurs interfaces 15 d’entrée-sortie (I/O) de communication avec l’extérieur du circuit ; et
divers autres circuits en fonction de l’application, symbolisés en figure 1 par des blocs 16 (FCT).
Dans la plupart des applications, la mémoire 13 est susceptible d’être utilisée pour enregistrer ou stocker des informations, paramètres, résultats de calculs, etc. propres au fonctionnement du circuit électronique 1. Le cas échéant, la mémoire 13 communique généralement avec un ou plusieurs autres éléments du système. Dans l’exemple de la figure 1, on considère que la mémoire 13 échange des données avec l’unité 11 de traitement numérique, laquelle vient lire ou écrire des informations dans la mémoire 13. La mémoire 13 est, par exemple, une mémoire non volatile reprogrammable (Electrically Erasable Programmable Read-Only Memory – EEPROM).
En figure 1, le bus 14 permet une transmission de données, notamment entre l’unité 11 de traitement numérique et la mémoire 13. L’unité 11 de traitement numérique peut ainsi dialoguer avec la mémoire 13 en lui envoyant, via le bus 14, des requêtes, ou instructions, ou codes opératoires (opcodes). Ces codes opératoires sont généralement standardisés en fonction du bus 14 choisi pour mettre en œuvre la transmission de données. Le bus 14 est typiquement un bus série, par exemple un bus de données série synchrone de type SPI (Serial Peripheral Interface).
Dans le cas où le bus 14 est un bus SPI, l’unité 11 de traitement numérique peut, en particulier, transmettre à la mémoire un code opératoire noté « RDSR ». Grâce au code opératoire RDSR, l’unité 11 de traitement numérique peut venir lire un registre d’état de la mémoire 13. Le contenu de ce registre d’état est renvoyé, en réponse à une réception du code opératoire RDSR, par la mémoire 13 à l’unité 11 de traitement numérique. Le registre d’état est notamment représentatif d’opérations permises ou en cours d’exécution au sein de la mémoire 13. Pour simplifier et sauf précision contraire, on assimilera par la suite le registre de la mémoire au contenu de ce registre.
La figure 2 représente un exemple de registre 2 d’état d’une mémoire.
Dans l’exemple de la figure 2, le registre 2 d’état (Status Register – SR) d’une mémoire (par exemple, la mémoire 13 en figure 1) prend typiquement la forme d’un octet constitué des huit bits suivants :
un bit 20 (WIP – Write In Progress) adapté à indiquer qu’une opération d’écriture est en cours dans la mémoire ;
un bit 21 (WEL – Write Enable Latch) de verrouillage de la mémoire en écriture ;
deux bits 22 et 23 (BP0 - Block Protection 0 et BP1 - Block Protection 1) dont la combinaison est adaptée à délimiter des zones, ou plages, ou quadrants de la mémoire que l’on souhaite protéger en écriture ;
trois bits 24, 25 et 26 dont les valeurs sont arbitrairement, dans cet exemple, fixées à 0 ; et
un bit 27 (SRWD - Status Register Write Disable) adapté à interdire l’écriture du registre 2 d’état de la mémoire.
Les bits 22 à 27 du registre 2 d’état de la mémoire ne sont généralement pas destinés à être modifiés au cours d’une utilisation normale d’un produit doté de cette mémoire. Une valeur prédéfinie est donc généralement attribuée, en usine, à chacun des bits 22 à 27. La plupart du temps, la valeur de chaque bit 22 à 27 est ainsi paramétrée « en dur » par un fabricant d’équipements mettant en œuvre de telles mémoires. À titre d’exemple particulier d’application, dans le secteur automobile, ce fabricant est, par exemple, un équipementier fournissant des calculateurs embarqués ou unités de commande électroniques (ECU – Electronic Control Units) à des constructeurs de véhicules.
En revanche, les bits 20 et 21 (WIP et WEL, respectivement) du registre 2 d’état possèdent des valeurs qui sont généralement amenées à évoluer tout au long de l’utilisation normale d’un produit doté d’une telle mémoire. Les valeurs des bits WIP et WEL sont, en particulier, modifiées au gré de cycles d’écriture effectués sur la mémoire.
Par convention arbitraire, on désigne par 0 ou 1 les états respectifs des bits indépendamment des niveaux électriques représentés par ces états, pris pour exemple comme « haut » et « bas ».
En supposant, par exemple, que les valeurs des bits WIP et WEL sont toutes deux initialement égales à 0 et que l’on souhaite effectuer un cycle d’écriture dans la mémoire. Les valeurs des bits WIP et WEL du registre 2 d’état de cette mémoire sont alors typiquement modifiées comme suit :
le bit WEL est mis à l’état 1, ce qui signifie que le cycle d’écriture dans la mémoire est autorisé ;
dès le début du cycle d’écriture, la valeur du bit WIP commute à l’état 1 pour indiquer qu’une écriture est en cours dans la mémoire ;
au cours du cycle d’écriture dans la mémoire, le bit WEL est mis à l’état 0 ; et
une fois le cycle d’écriture achevé, le bit WIP est mis à l’état 0.
La figure 3 est un diagramme d’enchaînement d’un mode de réalisation d’opérations associées à un cycle d’écriture de données dans une mémoire via un bus série.
Selon ce mode de réalisation, une unité de traitement numérique (11, figure 1) est reliée, de préférence connectée, à une mémoire (13, figure 1) par un bus série (14, figure 1). On suppose que l’unité de traitement numérique a besoin d’écrire des données dans la mémoire afin, par exemple, de sauvegarder une information, de mémoriser un résultat de calcul, etc. Pour simplifier, on s’intéresse principalement aux opérations qui se déroulent du côté de la mémoire.
Dans l’exemple de la figure 3, une première étape (bloc 301, MEMORY SELECT) consiste, pour l’unité de traitement numérique, à sélectionner la mémoire dans laquelle il souhaite écrire une ou plusieurs données. La mémoire reçoit alors (bloc 311, RECEIVE WREN COMMAND), de la part de l’unité de traitement numérique, un code opératoire, noté « WREN ». Le code opératoire WREN, qui précède les opérations d’écriture proprement dites, permet d’autoriser l’écriture dans la mémoire. La mémoire est ensuite désélectionnée (bloc 302, MEMORY DESELECT) par l’unité de traitement numérique. Le bit WEL de verrouillage de la mémoire en écriture passe alors à l’état 1 (bloc 321, WEL = 1).
L’unité de traitement numérique sélectionne alors de nouveau la mémoire (bloc 303, MEMORY SELECT). Une fois la mémoire sélectionnée, une commande d’écriture, envoyée par l’unité de traitement numérique, est reçue par la mémoire (bloc 312, RECEIVE WRITE COMMAND). Cette commande d’écriture comporte, par exemple :
un octet de code opératoire ;
deux octets d’adresse ; et
un certain nombre d’octets constituant la ou les données à écrire dans la mémoire.
La mémoire est ensuite désélectionnée (bloc 304, MEMORY DESELECT) par l’unité de traitement numérique. La désélection de la mémoire provoque le démarrage du cycle d’écriture proprement dite dans la mémoire (bloc 331, BEGIN DATA WRITING). Le bit WIP passe alors à l’état 1 (bloc 323, WIP = 1). À l’issue des opérations d’écriture proprement dites (bloc 333, END DATA WRITING), le bit WIP repasse à l’état 0 (bloc 325, WIP =0).
Selon un mode de réalisation préféré, la mémoire est, en parallèle des opérations d’écriture décrites ci-dessus, c’est-à-dire pendant une durée séparant les blocs 331 et 333, de nouveau sélectionnée (bloc 305, MEMORY SELECT) par l’unité de traitement numérique. La mémoire reçoit alors (bloc 313, RECEIVE RDSR COMMAND), de la part de l’unité de traitement numérique, un autre code opératoire, noté « RDSR ». Le code opératoire RDSR constitue une requête d’envoi, en continu, du registre d’état de la mémoire. La mémoire, à réception du code opératoire RDSR, commence alors, en retour, à émettre son registre d’état (bloc 351, SR BYTE OUTPUT) à destination de l’unité de traitement.
Selon un mode de réalisation préféré, la mémoire transmet (bloc 351) en boucle (à chaque coup d’horloge), via le bus série, son registre d’état tant qu’elle reste sélectionnée par l’unité de traitement numérique (ou autre circuit sélectionnant la mémoire). Cette sélection est décorrélée des opérations d’écriture proprement dites (blocs 331, 323 et 333), la mémoire étant sélectionnée par un signal binaire distinct du bus. Dans l’exemple de la figure 3, l’unité de traitement commande la désélection de la mémoire (bloc 306, MEMORY DESELECT) dès que les opérations d’écriture sont terminées, c’est-à-dire quand le bit WIP repasse à l’état 0 (bloc 325). Cette désélection de la mémoire interrompt l’envoi, en boucle, du registre d’état de la mémoire (bloc 353, END SR BYTE OUTPUT).
Pendant une phase où le bit WIP est à l’état 1 et où la mémoire est sélectionnée, la mémoire transmet donc en boucle (bloc 351) son registre d’état. En d’autres termes, le registre d’état est transmis, cycliquement ou périodiquement, pendant que le cycle d’écriture a lieu dans la mémoire et tant que la mémoire demeure sélectionnée par l’unité de traitement (bloc 35). Cela permet ainsi à l’unité de traitement numérique de suivre une évolution du registre d’état.
Selon un mode de réalisation préféré, le registre d’état de la mémoire est transmis de façon synchrone par rapport à un signal de synchronisation, ou signal d’horloge, servant à cadencer les transmissions de données sur le bus série. Par exemple, pour une transmission de données à une fréquence de 1 MHz, une durée minimale de 8 µs sépare chaque émission, par la mémoire, de l’octet constituant le registre d’état. Toujours selon cet exemple, au cours d’un cycle d’écriture d’une durée totale de 3 ms, le registre d’état peut donc être théoriquement émis 375 fois par la mémoire. En considérant des cycles d’écriture compris entre 1 ms et 4 ms, le registre d’état peut alors théoriquement être émis au moins 125 fois et au plus 500 fois.
Le bit WEL du registre d’état de la mémoire est généralement réinitialisé à un instant quelconque pendant l’exécution des opérations d’écriture des données. Grâce au mode de réalisation exposé ci-dessus, en relation avec la figure 3, il est possible de repérer facilement cet instant. La mise à jour du registre d’état de la mémoire et sa lecture par l’unité de traitement numérique tout au long des opérations d’écriture permettent en effet de surveiller l’instant où la valeur du bit WEL repasse à 0.
Un avantage de ce mode de réalisation est de permettre une rétrocompatibilité avec des circuits et procédés de communication existants utilisant un bus série SPI. Une mémoire (13, figure 1) mettant en œuvre le procédé décrit ci-dessus est, en effet, compatible avec des applications usuelles. Le mode de réalisation exposé en relation avec la figure 3 peut ainsi être implémenté dans un circuit existant sans toutefois venir perturber son fonctionnement.
La figure 4 représente un mode de mise en œuvre d’un procédé de codage d’une donnée à transmettre sur un bus série.
Selon ce mode de mise en œuvre, on considère un cycle d’écriture, comme exposé en relation avec la figure 3, durant lequel la mémoire transmet, en boucle, son registre 2 d’état tant que des opérations d’écriture sont en cours. Pour simplifier, on ne s’intéresse qu’aux bits 20 (WIP) et 21 (WEL) de l’octet formant le registre 2 d’état de la mémoire. On considère, dans cet exemple, que les valeurs des autres bits 22 à 27 ne subissent aucune évolution tout au long du cycle d’écriture, et que les bits 20 et 21 représentent les bits de poids faible du registre 2 d’état.
Au cours des opérations d’écriture, on suppose que le registre 2 d’état de la mémoire est actualisé et transmis à n reprises. En d’autres termes, on considère que l’émission en boucle (bloc 351, figure 3) du registre d’état de la mémoire s’effectue n fois pendant une durée séparant le bloc 351 (figure 3) du bloc 353 (figure 3).
Toujours selon cet exemple, des opérations d’écriture dans la mémoire ont lieu entre une première itération ROUND 1 et une dernière itération ROUND n. En figure 4, cela se traduit par le fait que, entre ces deux itérations, la valeur du bit WIP demeure égale à 1, signe que des opérations d’écriture sont en cours d’exécution. Le bit WIP est mis à l’état 0 après la dernière itération ROUND n, ce qui constitue, en figure 4, une ultime étape ROUND n+1.
Dans l’exemple de la figure 4, on ne s’intéresse, pour simplifier, qu’à six itérations intermédiaires ROUND 2, ROUND 3, ROUND k-1, ROUND k, ROUND k+1 et ROUND n-1. Ces six itérations intermédiaires sont, toujours dans cet exemple, successivement intercalées entre la première itération ROUND 1 et la dernière itération ROUND n. D’autres itérations (non représentées) sont également susceptibles de s’intercaler entre les itérations ROUND 3 et ROUND k-1, d’une part, et/ou entre les itérations ROUND k+1 et ROUND n-1, d’autre part. En d’autres termes, les itérations apparaissent temporellement dans un ordre suivant : ROUND 1, ROUND 2, ROUND 3, …, ROUND k-1, ROUND k, ROUND k+1, …, ROUND n-1 et ROUND n.
À chaque nouvelle itération, le contenu du registre 2 d’état de la mémoire est susceptible d’être mis à jour et transmis, par la mémoire, sur le bus série. Le registre 2 d’état de la mémoire est, dans cet exemple, actualisé et émis au moins aux itérations successives ROUND 1, ROUND 2, ROUND 3, ROUND k-1, ROUND k, ROUND k+1, ROUND n-1 et ROUND n.
Dans un cycle d’écriture utilisant un bus SPI, il a été précédemment exposé, en relation avec la figure 2, que l’instant de réinitialisation du bit WEL pouvait intervenir n’importe quand entre le début et la fin des opérations d’écriture.
Selon un mode de mise en œuvre préféré, on se propose de contrôler la réinitialisation du bit WEL, de sorte que cette réinitialisation intervienne à un instant choisi. Dans l’exemple de la figure 4, le bit WEL est volontairement réinitialisé (ici, le bit WEL est mis à l’état 0) entre l’itération ROUND 2 et l’itération ROUND 3. Toujours selon cet exemple, la valeur du bit WEL demeure égale à 0 pour toutes les itérations suivantes ROUND 3 à ROUND n.
Le contrôle intentionnel ou déterministe de la réinitialisation du bit WEL lors des opérations d’écriture permet ici de coder un bit 4 (B) de donnée, ou donnée binaire. On peut, par exemple, choisir de réinitialiser le bit WEL :
soit avant une certaine itération, par exemple l’itération ROUND k, pour coder un état bas du bit B ;
soit après cette même itération ROUND k, pour coder un état haut du bit B.
Il est ainsi possible de communiquer, par exemple à une unité de traitement connectée à la mémoire, le bit B dont la valeur est codée par rapport à l’instant où le bit WEL est mis à l’état 0 au cours d’un cycle d’écriture. Si le bit WEL est réinitialisé avant une certaine itération, ou un certain instant ou une certaine durée, cela revient à coder un premier état du bit B. En revanche, si le bit WEL est réinitialisé après cette même itération, ou ce même instant ou cette même durée, cela revient à coder un deuxième état du bit B.
Selon un mode de mise en œuvre, on tire profit de ce contrôle de la réinitialisation du bit WEL pendant un cycle d’écriture pour transmettre un bit B représentatif d’une usure de la mémoire. Par exemple, on intervient sur l’instant choisi pour mettre le bit WEL à l’état 0 en vue de coder le bit B dont :
un état haut permet d’indiquer qu’une ou plusieurs opérations de correction d’erreur ont eu lieu dans la mémoire, ce qui peut signifier que la mémoire est usée ; et
un état bas traduit le fait qu’aucune correction d’erreur n’a eu lieu dans la mémoire, ce qui peut vouloir dire que la mémoire n’est pas usée.
Selon un autre mode de mise en œuvre, on considère que la valeur prise par le bit WEL à l’itération ROUND k, ou à un instant correspondant à l’itération ROUND k, conditionne l’état du bit B. En d’autres termes, l’itération ROUND k constitue une référence pour le codage du bit B. On considère ainsi, par exemple :
que le bit B vaut 1 si le bit WEL vaut 1 au moment de l’itération ROUND k ; et
que le bit B vaut 0 si le bit WEL vaut 0 au moment de l’itération ROUND k.
Toujours selon cet exemple, on contrôle, en fonction de la valeur du bit B que l’on souhaite transmettre à chaque nouveau cycle d’écriture dans la mémoire, l’instant auquel le bit WEL est mis à l’état 0 pendant le cycle considéré. En supposant que l’on veuille coder un état 0 du bit B durant un cycle d’écriture, on mettra le bit WEL à l’état 0 lors d’une itération précédant l’itération ROUND k (par exemple, lors de l’itération ROUND 2). Le bit WEL sera ensuite maintenu à l’état 0 jusqu’à la fin du cycle d’écriture, de sorte que la valeur du bit WEL vaudra bien 0 au moment de l’itération ROUND k.
En supposant que l’on veuille ensuite coder un état 1 du bit B durant un autre cycle d’écriture, on mettra le bit WEL à l’état 0 lors d’une itération postérieure à l’itération ROUND k (par exemple, lors de l’itération ROUND n-1). Le bit WEL sera ainsi maintenu à l’état 1 au moins jusqu’à l’itération ROUND k.
D’un cycle d’écriture à l’autre, on peut décider de réinitialiser (mettre à l’état 0) le bit WEL de façon déterministe dans des plages d’itérations antérieures ou postérieures à l’itération k servant de référence. Par exemple, on peut décider que le bit WEL sera toujours mis à l’état 0 :
à l’itération ROUND 2 pour coder une valeur 0 du bit B ; et
à l’itération ROUND n-1 pour coder une valeur 1 du bit B.
En variante, on peut décider de réinitialiser le bit WEL de façon aléatoire dans les plages d’itérations antérieures ou postérieures à l’itération k servant de référence. Par exemple, on peut coder :
un état 0 du bit B en réinitialisant le bit WEL à une itération aléatoirement choisie parmi les itérations antérieures à l’itération ROUND k ; et
un état 1 du bit B en ne réinitialisant le bit WEL qu’à une itération aléatoirement choisie parmi les itérations postérieures à l’itération ROUND k.
La figure 5 représente un autre mode de mise en œuvre d’un procédé de codage d’une donnée à transmettre sur un bus série.
Selon ce mode de mise en œuvre, on considère encore un cycle d’écriture comportant n itérations comme exposé en relation avec la figure 4. Pour simplifier, on ne s’intéresse qu’aux bits 20 (WIP) et 21 (WEL) de l’octet formant le registre 2 d’état de la mémoire. On considère, dans cet exemple, que les valeurs des autres bits 22 à 27 ne subissent aucune évolution tout au long du cycle d’écriture. Toujours dans cet exemple, on suppose que le registre 2 d’état de la mémoire est actualisé et transmis sur le bus SPI au moins aux itérations successives ROUND 1, ROUND 2, ROUND 3, ROUND k-1, ROUND k, ROUND k+1, ROUND n-1 et ROUND n.
Lors d’un cycle d’écriture utilisant, par exemple, un bus série SPI, la valeur du bit WEL est modifiable à plusieurs reprises pendant l’écriture. Il est par conséquent possible d’étendre le principe de codage d’un bit, exposé en relation avec la figure 4, pour coder plusieurs bits formant une donnée ou mot 5 (DATA). Pour cela, on contrôle la valeur prise par le bit WEL du registre 2 d’état à chaque nouvelle itération de la boucle d’actualisation et d’émission du registre 2 d’état de la mémoire.
Dans l’exemple de la figure 5, on impose la valeur du bit WEL pour chaque itération comprise entre ROUND 2 et ROUND n-1. Cela permet de coder, pour chaque nouvelle itération, un bit de la donnée DATA dont la valeur est égale à la valeur du bit WEL à l’itération considérée. Ainsi, dans l’exemple de la figure 5, la donnée DATA forme un mot comportant notamment :
un bit 50, dont la valeur est égale à la valeur du bit WEL à l’itération ROUND 2 ;
un bit 51, dont la valeur est égale à la valeur du bit WEL à l’itération ROUND 3 ;
un bit 52, dont la valeur est égale à la valeur du bit WEL à l’itération ROUND k-1 ;
un bit 53, dont la valeur est égale à la valeur du bit WEL à l’itération ROUND k ;
un bit 54, dont la valeur est égale à la valeur du bit WEL à l’itération ROUND k+1 ; et
un bit 55, dont la valeur est égale à la valeur du bit WEL à l’itération ROUND n-1.
Pour un cycle de transmission durant lequel le registre 2 d’état de la mémoire est actualisé et émis n fois, il est ainsi théoriquement possible de transmettre, par le bus série, une donnée DATA comportant jusqu’à n-2 bits. Par exemple, pour un cycle d’écriture, dans la mémoire, cadencé à une fréquence de 10 MHz et s’étalant sur une durée de 1 ms, on peut transmettre via le bus série une donnée DATA comportant environ 1 000 bits (1 kbit). Cela revient à créer un nouveau canal de transmission de données sur le bus série.
Dans l’exemple de la figure 5, les bits 50 à 55 de la donnée DATA sont transmis, dans l’ordre, du bit de poids le plus faible (bit 50) au bit de poids le plus fort (bit 55), ce qui n’est pas obligatoire. On peut en effet prévoir de transmettre les bits 50 à 55 de la donnée DATA dans un autre ordre, par exemple dans un ordre résultant d’une permutation.
Dans l’exemple de la figure 5, le registre 2 d’état subit, pendant un même cycle d’écriture dans la mémoire, un nombre de modifications lié au nombre de transitions d’états entre les bits successivement transmis du mot 5.
Les différents modes de mise en œuvre et variantes, exposés ci-dessus en relation avec les figures 4 et 5, sont susceptibles d’être mis en œuvre :
par un circuit, par exemple le circuit 1 (figure 1) ; et/ou
par une mémoire non volatile, par exemple la mémoire 13 (figure 1), dont le registre 2 d’état est adapté à être modifié tel que décrit.
Divers modes de réalisation, modes de mise en œuvre et variantes ont été décrits. L’homme de l’art comprendra que certaines caractéristiques de ces divers modes de réalisation, modes de mise en œuvre et variantes pourraient être combinées, et d’autres variantes apparaîtront à l’homme de l’art. En particulier, le codage d’un bit B comme exposé en relation avec la figure 4 est susceptible d’être répété, au cours de cycles d’écriture successifs, afin, par exemple, de coder plusieurs bits B formant ensemble une ou plusieurs données. De même, le codage d’une donnée DATA comme exposé en relation avec la figure 5 est susceptible d’être répété, au cours de cycles d’écriture successifs, afin, par exemple, de coder plusieurs données DATA formant, après recombinaison (par exemple, après concaténation), une autre donnée non transmissible lors d’un seul cycle d’écriture dans la mémoire.
Enfin, la mise en œuvre pratique des modes de réalisation, modes de mise en œuvre et variantes décrits est à la portée de l’homme du métier à partir des indications fonctionnelles données ci-dessus. En particulier, le bit B et la donnée DATA peuvent représenter tout type d’information ou portion d’information, par exemple une information traduisant un état d’usure de la mémoire ou un nombre de corrections d’erreurs réalisées pendant une durée déterminée.

Claims (12)

  1. Procédé de codage d’une donnée (B ; DATA) à transmettre sur un bus série SPI (14), dans lequel un registre (2) d’état d’une mémoire (13) est modifié, à au moins un instant choisi, en fonction de tout ou partie de ladite donnée (B ; DATA) à transmettre.
  2. Procédé selon la revendication 1, dans lequel la mémoire (13) est une mémoire non volatile reprogrammable.
  3. Procédé selon la revendication 1 ou 2, dans lequel le registre (2) d’état est modifié par une inversion d’état d’un bit (WEL) de verrouillage de la mémoire (13) en écriture.
  4. Procédé selon l’une quelconque des revendications 1 à 3, dans lequel le registre (2) d’état est modifié au cours d’un cycle d’écriture dans la mémoire (13).
  5. Procédé selon la revendication 4, dans lequel le registre (2) d’état est modifié une seule fois au cours du cycle d’écriture dans la mémoire (13), la donnée (B) à transmettre formant un bit (4).
  6. Procédé selon la revendication 4, dans lequel le registre (2) d’état est modifié plusieurs fois au cours du cycle d’écriture dans la mémoire (13), la donnée (DATA) à transmettre formant un mot (5) comportant au moins deux bits (50, 51, 52, 53, 54, 55).
  7. Procédé selon la revendication 6, dans lequel le nombre de modifications du registre (2) d’état, au cours du cycle d’écriture dans la mémoire (13), est lié au nombre de transitions d’états entre des bits successivement transmis du mot (5).
  8. Procédé selon l’une quelconque des revendications 1 à 7, dans lequel ladite donnée (B ; DATA) à transmettre est représentative d’une usure de la mémoire (13).
  9. Procédé selon l’une quelconque des revendications 1 à 8, dans lequel ladite donnée (B ; DATA) à transmettre reflète un nombre de corrections d’erreurs effectuées au sein de la mémoire (13).
  10. Procédé selon l’une quelconque des revendications 1 à 9, comportant les étapes suivantes :
    commencer à écrire dans la mémoire (13) ;
    transmettre, de façon périodique, le registre (2) d’état de la mémoire (13) ;
    modifier, audit instant donné, le registre (2) d’état de la mémoire (13) pour coder tout ou partie de la donnée (B ; DATA) à transmettre ; et
    cesser d’écrire dans la mémoire (13).
  11. Circuit électronique (1) adapté à la mise en œuvre du procédé selon l’une quelconque des revendications 1 à 10.
  12. Mémoire (13) non volatile comportant un registre (2) d’état adapté à être modifié par la mise en œuvre du procédé selon l’une quelconque des revendications 1 à 10.
FR1903929A 2019-04-12 2019-04-12 Codage de données sur bus série Active FR3095073B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1903929A FR3095073B1 (fr) 2019-04-12 2019-04-12 Codage de données sur bus série
US16/840,759 US11321270B2 (en) 2019-04-12 2020-04-06 Data encoding on a serial bus
CN202010281520.XA CN111813730A (zh) 2019-04-12 2020-04-10 串行总线上的数据编码

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1903929 2019-04-12
FR1903929A FR3095073B1 (fr) 2019-04-12 2019-04-12 Codage de données sur bus série

Publications (2)

Publication Number Publication Date
FR3095073A1 true FR3095073A1 (fr) 2020-10-16
FR3095073B1 FR3095073B1 (fr) 2021-03-12

Family

ID=67660280

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1903929A Active FR3095073B1 (fr) 2019-04-12 2019-04-12 Codage de données sur bus série

Country Status (3)

Country Link
US (1) US11321270B2 (fr)
CN (1) CN111813730A (fr)
FR (1) FR3095073B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527401A (zh) * 2021-02-08 2021-03-19 北京紫光青藤微系统有限公司 存储器的启动方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248267A1 (en) * 2005-04-29 2006-11-02 Programmable Microelectronics Corporation Flash memory having configurable sector size and flexible protection scheme
CN105468563A (zh) * 2015-12-28 2016-04-06 杭州士兰控股有限公司 Spi从设备、spi通信系统及spi通信方法
FR3041806A1 (fr) * 2015-09-25 2017-03-31 Stmicroelectronics Rousset Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630152A (en) * 1992-05-18 1997-05-13 Motorola, Inc. Communication protocol between master and slave device with register information sharing
DE60041823D1 (de) * 2000-12-29 2009-04-30 St Microelectronics Srl Ein elektrisch modifizierbarer nichtflüchtiger Halbleiterspeicher der eingeschriebene Daten solange hält, bis ihre Neuprogrammierung abgeschlossen ist
CN103885908B (zh) * 2014-03-04 2017-01-25 中国科学院计算技术研究所 一种基于外部设备可访问寄存器的数据传输系统及其方法
WO2015176040A1 (fr) * 2014-05-15 2015-11-19 Adesto Technologies Corporation Dispositifs et procédé de mémoire ayant un accusé de réception d'instructions
TWI658465B (zh) * 2018-02-02 2019-05-01 華邦電子股份有限公司 記憶體裝置以及其寫入/抹除方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248267A1 (en) * 2005-04-29 2006-11-02 Programmable Microelectronics Corporation Flash memory having configurable sector size and flexible protection scheme
FR3041806A1 (fr) * 2015-09-25 2017-03-31 Stmicroelectronics Rousset Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits
CN105468563A (zh) * 2015-12-28 2016-04-06 杭州士兰控股有限公司 Spi从设备、spi通信系统及spi通信方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527401A (zh) * 2021-02-08 2021-03-19 北京紫光青藤微系统有限公司 存储器的启动方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
FR3095073B1 (fr) 2021-03-12
US20200327092A1 (en) 2020-10-15
CN111813730A (zh) 2020-10-23
US11321270B2 (en) 2022-05-03

Similar Documents

Publication Publication Date Title
EP0282123B1 (fr) Système et procédé pour cryptographie avec application
EP0436251A2 (fr) Système de codage de signaux numériques destinés à être transmis et/ou stockés et système de décodage correspondant
EP2120388A1 (fr) Vérification d'intégrité d'une clé de chiffrement
EP1883239A1 (fr) Méthode de stockage et d'exploitation d'un évènement audio/video diffusé
FR3095073A1 (fr) Codage de données sur bus série
FR3009633A1 (fr) Communication sur bus i2c
EP2320595A1 (fr) Protection d'une clé de chiffrement
WO2009059763A1 (fr) Procede de deverrouillage d'un calculateur de controle moteur
EP1557765A1 (fr) Procédé d'arbitrage hiérarchisé
FR3120267A1 (fr) Communication sur bus I2C
FR2817683A1 (fr) Procede de codage/decodage de donnees numeriques transmises sur une liaison serie, notamment du type dit "8b/10b", et dispositif de mise en oeuvre
EP1961225A1 (fr) Processeur de securite et procedes d'inscription de titres d'acces et de cles cryptographiques
EP0380378B1 (fr) Procédé et dispositif d'accès hiérarchisé à un réseau de transmission d'informations
EP1772808A1 (fr) Dispositif et procédé de lecture d'informations dans un ensemble de composants électroniques reliés à un bus de communication, appliqué à la lecture d'une matrice de pixels
EP1591866B1 (fr) Contrôle de l'exécution d'un algorithme par un circuit intégré
FR2519828A2 (fr) Systeme de videotex muni des moyens de controle d'acces a l'information
EP3147811A1 (fr) Stockage et lecture d'un code d'authentification de message dans une memoire externe
EP1098525A2 (fr) Décodeur MPEG utilisant une mémoire partagée
US20060007026A1 (en) Data transmitting circuit and method based on differential value data encoding
FR3102270A1 (fr) Procédé et dispositif de détection d’une intrusion sur un bus de données d’un véhicule
FR2880962A1 (fr) Procede et circuit de controle d'un jeu de donnees ayant plusieurs mots de donnees.
EP0792071A1 (fr) Dispositif de décodage de signaux de type MPEG2
FR2757653A1 (fr) Controleur d'entrees-sorties autonome et deporte
FR3121527A1 (fr) Procédé et dispositif de détection d’une intrusion sur un bus de données d’un véhicule
JP6948961B2 (ja) 通信システム及び通信方法

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20201016

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6