FR2917863A1 - Bus avec circuit de correction d'erreur - Google Patents

Bus avec circuit de correction d'erreur Download PDF

Info

Publication number
FR2917863A1
FR2917863A1 FR0755898A FR0755898A FR2917863A1 FR 2917863 A1 FR2917863 A1 FR 2917863A1 FR 0755898 A FR0755898 A FR 0755898A FR 0755898 A FR0755898 A FR 0755898A FR 2917863 A1 FR2917863 A1 FR 2917863A1
Authority
FR
France
Prior art keywords
data
error correction
repeater
bit
circuit
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.)
Pending
Application number
FR0755898A
Other languages
English (en)
Inventor
Richard Ferrant
Cedric Maufront
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 Crolles 2 SAS
Original Assignee
STMicroelectronics Crolles 2 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 Crolles 2 SAS filed Critical STMicroelectronics Crolles 2 SAS
Priority to FR0755898A priority Critical patent/FR2917863A1/fr
Priority to US12/140,643 priority patent/US8266494B2/en
Publication of FR2917863A1 publication Critical patent/FR2917863A1/fr
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/14Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

L'invention concerne un bus de données comprenant une pluralité de blocs logiques (310-317, 336-343) couplés en série, chaque bloc logique comprenant au moins un répéteur pour amplifier au moins un bit de données émis par le bus de données et au moins l'un des blocs logiques comprenant en outre des circuits couplés en parallèle avec ledit au moins un répéteur et agencés pour déterminer un premier bit de code de correction d'erreur associé audit au moins un bit de données.

Description

B8127 - 06-GR3-519 1 BUS AVEC CIRCUIT DE CORRECTION D'ERREUR Domaine de
l'invention La présente invention concerne un circuit de correction d'erreur et plus particulièrement un bus comprenant un circuit de correction d'erreur.
Arrière-plan de l'invention Tout traitement de données, incluant la mémorisation de données ou la transmission de données de façon électronique peut provoquer des erreurs et donc des problèmes pour récupérer les données. Des codes de correction d'erreur constituent un moyen de détermination de la survenance d'erreurs dans des données et/ou de correction de ces erreurs. Un code de Hamming est un exemple d'un tel code de correction d'erreur et est basé sur une vérification de polarité de diverses combinaisons de bits d'un mot, chaque combinaison fournissant un bit de données de correction d'erreur. Un autre exemple de code de correction d'erreur décrit dans la demande de brevet US2003/0070135 de Laurent Murillo, présente des avantages par rapport au code de Hamming en termes de facilité d'utilisation, et nécessite de façon générale un bit supplémentaire de code de correction d'erreur par rapport au code de Hamming.
B8127 - 06-GR3-519
2 De façon générale, l'utilisation de codes de correction d'erreur ajoute un retard à la lecture de données d'une mémoire ou à la réception de données émises, ce qui est un inconvénient. La figure 1 représente un exemple d'une mémoire 100 comprenant un bloc de codage de code de correction d'erreur (ECC) et un bloc de décodage de code de correction d'erreur. Ainsi, quand on écrit dans la mémoire 100, les données sont fournies sur une entrée 106 vers le bloc de codage de code de correction d'erreur 102 qui produit des bits de correction d'erreur, en utilisant par exemple le code Hamming susmentionné. Les données D et des bits de correction d'erreur S sont fournis par le bloc de codage de code de correction d'erreur 102 à une sortie 108 et sont ensuite mémorisés dans les cellules 110 de la mémoire 100. Quand les données D sont lues dans la mémoire, elles sont fournies avec des bits de correction d'erreur associés S au bloc de décodage de code de correction d'erreur 104 qui reproduit les bits de correction d'erreur en utilisant les données en provenance des cellules mémoire 110, et vérifie que les bits de correction d'erreur reproduits sont les mêmes que les bits mémorisés S. Une ou plusieurs erreurs peuvent être corrigées en comparant les bits de correction d'erreur reproduits et mémorisés. Cette comparaison peut indiquer directement l'emplacement des erreurs qui peuvent être corrigées en inversant le bit correspondant. Les données D sont alors fournies à partir du bloc de décodage de code de correction d'erreur et de la mémoire sur une sortie 112. Dans l'exemple de la figure 1, le bloc 102 introduit un retard pour produire les bits de codage de correction d'erreur et un autre retard est introduit par le bloc de décodage de correction d'erreur 104. La figure 2 représente une variante dans laquelle un microprocesseur 200 sur un circuit intégré 202 transmet des données D à un microprocesseur 204 qui fait partie d'un second circuit intégré 206. Le code de correction d'erreur est produit par le bloc de codage de code de correction d'erreur 208 sur le B8127 - 06-GR3-519
3 circuit intégré 202 et les données D et le code de correction d'erreur associé S sont transmis par une ligne de transmission 210 vers le circuit intégré 206. Au niveau du circuit intégré 206, un bloc de décodage de code de correction d'erreur 212 vérifie le code de correction d'erreur en reproduisant le code de correction d'erreur sur la base des données reçues par les lignes 210 et vérifie que le code reproduit est identique au code transmis sur le bus 210. A nouveau, selon le processus de codage utilisé, une ou plusieurs erreurs dans les données peu- vent être détectées et/ou corrigées. Les données sont alors fournies au microprocesseur 204. Les blocs de codage de correction d'erreur 208 et 212 du circuit de la figure 2 présentent également des inconvénients en raison du retard qu'ils apportent à la transmission et à la réception des données. RESUNE DE L'INVENTION Un objet de la présente invention est de prévoir un circuit de codage de correction d'erreur qui traite au moins partiellement un ou plusieurs des problèmes de l'art antérieur.
Selon un aspect de la présente invention il est prévu un bus de données comprenant une pluralité de blocs logiques couplés en série, chaque bloc logique comprenant au moins un répéteur pour amplifier au moins un bit de données émis par ledit bus de données, au moins un des blocs logiques comprenant en outre des circuits couplés en parallèle avec ledit au moins un répéteur et agencé pour déterminer un premier bit de code de correction d'erreur associé audit au moins un bit de données. Selon un mode de réalisation de la présente invention, le bus de données comprend en outre une pluralité de sorties pour fournir les données et le premier bit du code de correction d'erreur. Selon un autre aspect de la présente invention, il est prévu un circuit comprenant le bus de données ci-dessus, et un autre bus de données couplé audit bus de données et comprenant une pluralité de seconds blocs logiques couplés en série, chaque B8127 -06-GR3-519
4 second bloc logique comprenant au moins un second répéteur pour amplifier au moins un bit de données émis avec ledit autre bus de données, au moins un des seconds blocs logiques comprenant en outre des circuits en parallèle avec ledit au moins un second répéteur agencé pour déterminer un second bit de code et comparer les premier et second bits de code de correction d'erreur. Selon un mode de réalisation de la présente invention, au moins un des seconds blocs logiques comprend en outre des moyens logiques pour corriger les données sur la base de ladite comparaison. Selon un mode de réalisation de la présente invention, le circuit comprend en outre un circuit de mémoire connecté entre lesdits bus de données, le circuit de mémoire étant agencé pour mémoriser ledit au moins un bit de données et le premier bit du code de correction d'erreur. Selon un mode de réalisation de la présente invention, le circuit comprend en outre une ligne de transmission couplée entre lesdits bus de données, la ligne de transmission étant agencée pour transmettre ledit au moins un bit de données et le premier bit du code de correction d'erreur du premier au second bloc de circuit. Selon un autre aspect de la présente invention, il est prévu un dispositif électronique comprenant le bus ou le circuit 25 de données ci-dessus. Selon un autre aspect de la présente invention, il est prévu un lecteur de données ou un téléphone mobile comprenant le dispositif électronique ci-dessus. Selon un autre aspect de la présente invention, il est 30 prévu un procédé d'émission de données pour un bus de données comprenant : amplifier au moins un bit des données en utilisant au moins un répéteur d'un bloc logique ; et pendant un retard fourni par ledit au moins un répéteur, déterminer au moyen du bloc logique au moins un bit de code de correction d'erreur 35 associé audit au moins un bit de données.
B8127 - 06-GR3-519
Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres de l'invention apparaîtront à la lecture de la description détaillée suivante de modes de réalisation faite à titre 5 d'illustration mais pas de limitation en relation avec les figures jointes parmi lesquelles : la figure 1 (décrite ci-dessus) représente schématiquement une mémoire comprenant un circuit à code de correction d'erreur ; la figure 2 (décrite ci-dessus) représente schématiquement deux circuits intégrés dont chacun comprend un circuit à code de correction d'erreur ; la figure 3 représente une mémoire avec un circuit à code de correction d'erreur associé selon un mode de réalisation 15 de la présente invention ; la figure 4 représente des premier et second blocs de circuit dont chacun comprend un circuit de correction d'erreur selon un mode de réalisation de la présente invention ; la figure 5 représente un exemple d'un bus de données 20 comprenant des circuits selon un mode de réalisation de la présente invention ; la figure 6 représente schématiquement un exemple de bus de données comprenant des circuits pour produire des bits de correction d'erreur et pour corriger des erreurs selon un mode 25 de réalisation de la présente invention ; et la figure 7 représente un dispositif comprenant un circuit de correction d'erreur selon un mode de réalisation de la présente invention. DESCRIPTION DETAILLE DE L'INVENTION 30 La figure 3 représente un circuit de mémoire 300 comprenant une mémoire 302, par exemple une mémoire statique à accès aléatoire (SRAM) ou une mémoire morte (ROM), un bus de données (304) couplé à une entrée de la mémoire et un bus de données 305 couplé à une sortie de la mémoire. Le terme "bus de 35 données" est utilisé ici pour désigner toute connexion entre B8127 - 06-GR3-519
6 dispositifs électroniques pour le transfert de données. En figure 3, un dispositif 307 est couplé à la mémoire 302 par le bus de données 304 tandis que la mémoire 302 est couplée à un dispositif 308 par le bus de données 305. Les dispositifs 307 et 308 sont par exemple des ports de microprocesseur ou autres circuits qui peuvent accéder à la mémoire 302. Le bus de données 304 comprend des lignes d'entrée 306 pour recevoir des données D qui peuvent être mémorisées dans la mémoire 302. Dans cet exemple, les données sont transmises en parallèle et ainsi le nombre de lignes 306 est par exemple égal au nombre de bits de données mémorisés dans chaque cellule de la mémoire 302, par exemple 16 ou 32 bits. Dans une variante de réalisation, le bus de données 304 et/ou le bus de données 305 pourrait être un bus de données série. Le bus de données 304 comprend également des lignes de sortie 309 couplées à la mémoire 302 fournissant les données D et un certain nombre de bits de correction d'erreur S. Le nombre de lignes de données des lignes de sortie 309 est égal au nombre de lignes de données à l'entrée 306 tandis que le nombre de lignes pour les bits de correction d'erreur S dépendra du nombre de bits produits, et, dans cet exemple, est égal à quatre. Le bus de données 304 comprend également huit blocs logiques répéteurs 310 à 317 couplés en série entre les lignes d'entrée 306 et les lignes de sortie 309. En raison de la distance séparant le dispositif 307 et la mémoire 302, des répéteurs sont prévus pour amplifier des données en plusieurs points entre les lignes d'entrée 306 et la mémoire 302, pour réduire le retard total du signal. A titre d'exemple, une SRAM d'un mégabit fabriquée dans une technologie de 45 nm peut avoir un périmètre égal à environ 4 mm de longueur, la moitié du périmètre étant donc égal à environ 2 mm. Cette distance donne une bonne indication du type de distance qu'une connexion à la SRAM doit couvrir. Dans cette technologie, une connexion couvrant une distance de 2 mm peut introduire un retard sur les signaux d'environ 4 ns. Ce B8127 -06-GR3-519
7 retard est déterminé par des résistances et capacités réparties. Au contraire, si les données sont répétées, par exemple en dix segments par dix répéteurs régulièrement espacés, la distance est divisée par dix et donc la résistance et la capacité de chaque segment sont le dixième de celles de la ligne de transmission totale. Et le retard de chaque segment est donc le centième de celui de la ligne de transmission d'ensemble. Le retard entre chaque répéteurs chute donc à environ 0,04 ns ce qui fournit un retard total de seulement de 0,40 ns au lieu de 4 ns.
Ainsi l'utilisation de répéteurs est souvent nécessaire. Au moins certains des blocs logiques répéteurs 310 à 317 (ici les blocs 310, 312, 314 et 316) comprennent des circuits pour produire des bits de correction d'erreur S en fonction des bits de données D, de sorte que, à la sortie du dernier bloc logique répéteur 317, tous les bits de correction d'erreur S associés aux données D ont été produits. Chaque bloc logique répéteur 310 à 317 comprend un ou plusieurs répéteurs pour amplifier les signaux de données D, et également des répéteurs pour amplifier les bits de correction d'erreur S ou des signaux intermédiaires dans la génération de S bits reçus par ce répéteur. Par exemple, le bloc 317 comprend des répéteurs pour amplifier les données D et les quatre bits de correction d'erreur S reçus du répéteur 316 tandis que le répéteur 310 comprend seulement des répéteurs pour les données D.
Le bus de données 305 comporte des lignes d'entrée 322 qui sont couplées à la mémoire 302 pour recevoir des données D' et des bits de correction d'erreur S' de la mémoire 302. Pour une cellule mémoire donnée, les données D' et les bits de correction d'erreur S' sont en principe identiques aux données D et aux bits S fournis par le bus de données 304 mais des erreurs peuvent avoir été introduites. Les lignes de sortie de données 334 sont prévues pour fournir des données D' et, comme pour le nombre de lignes d'entrée 306 vers le bus de données 304, le nombre de lignes de sortie 334 est par exemple égal au nombre de bits de données mémorisés dans chaque cellule de la mémoire 302.
B8127 - 06-GR3-519
8 Le bus de données 305 comprend en outre huit blocs logiques répéteurs 336 et 343 couplés en série entre les lignes d'entrée de données 332 et les lignes de sortie de données 334. A nouveau, les répéteurs sont utiles en raison de la distance séparant la mémoire 302 et le dispositif 308. Chaque bloc 336 à 343 comprend un répéteur pour amplifier les données D' et les bits de correction d'erreur S' fournis aux blocs logiques répéteurs suivants de la série. Au moins certains des blocs logiques répéteurs 336 à 343 comprennent des circuits logiques pour véri- fier les bits de correction d'erreur S' par rapport aux nouveaux bits de correction d'erreur calculés associés aux données D'. Une fois que chaque bit de correction d'erreur a été utilisé pour vérifier les données, il n'est plus nécessaire qu'il soit transmis au bloc logique répéteur suivant et ainsi, dans cet exemple, le nombre de bits de correction d'erreur S', et donc le nombre de connexions entre blocs logiques, chute entre les premier et dernier blocs logiques répéteurs 336 à 343. A la sortie du dernier bloc logique répéteur 343, seules les données D' sur les lignes 334 sont fournies.
Dans le cas où on réalise seulement une vérification des données D' par rapport aux bits de correction d'erreur S', une indication est par exemple fournie à partir du bus de données 305 si une erreur a été trouvée, de sorte qu'une action peut être prise en réponse, telle qu'une relecture des données en question à partir de la mémoire 302. A titre de variante, les circuits dans les blocs logiques répéteurs 336 à 343 non seule-ment vérifient les données D', mais encore corrigent au moins certaines des erreurs dans ces données, en fonction d'une comparaison entre les bits de correction d'erreur mémorisés S' et les bits de correction d'erreur régénérés. En ce cas, les données modifiées D" sont fournies à partir du dernier répéteur 343. La figure 4 représente un circuit de transmission 400 pour transmettre des données à partir d'un microprocesseur 402 vers un microprocesseur 404, bien que le principe puisse s'appliquer à la transmission de données entre n'importe quels dispositifs.
B8127 - 06-GR3-519
9 Dans l'exemple de la figure 4, un microprocesseur 402 fait partie d'un bloc de circuit 406 qui est par exemple un premier circuit intégré et le microprocesseur 404 fait partie d'un bloc de circuit 408 qui est par exemple un second circuit inté- gré, les blocs de circuit 406 et 408 étant couplés par une ligne de transmission 410. La ligne de transmission 410 est par exemple une connexion série ou autre type de connexion qui peut provoquer des erreurs dans les données transmises. Par exemple, si les données sont transmises à partir d'un processeur vers l'affichage de dispositifs électroniques, les erreurs peuvent survenir dans les données pendant la transmission par suite d'interférences électromagnétiques. Pour éviter et/ou corriger les erreurs, le codage et le décodage de correction d'erreur est appliqué à chaque extrémité de la ligne de transmission, respec- tivement. Le bloc de circuit 406 comprend un port de sortie 412 pour fournir les données D et les bits de correction d'erreur S sur le bus 410 alors que le bloc de circuit 408 comprend un port d'entrée 414 pour recevoir les données D' et les bits de correction d'erreur S' du bus 410.
Les distances entre les microprocesseurs 402, 404 et les ports de sortie et d'entrée respectifs 412, 414 sont telles qu'il est préférable de prévoir une succession de répéteurs dans les deux cas pour amplifier les données à intervalles réguliers. Chacun des bus de données 415 et 416 est muni de blocs logiques répéteurs. Dans cet exemple, le bus de données 415 comprend six blocs logiques répéteurs 417 à 422 connectés en série entre le microprocesseur 402 et le port de sortie 412. Comme avec les blocs logiques répéteurs décrits en relation avec la figure 3, ces blocs comprennent des répéteurs pour amplifier le signal de données D et également éventuellement des circuits logiques pour produire des bits de correction d'erreur S et des signaux intermédiaires. Le bus de données 416 est prévu entre le port d'entrée 414 et le microprocesseur 404 et comprend six blocs logiques répéteurs 430 à 435 couplés en série, chacun de ces blocs logiques répéteurs comprenant des répéteurs pour amplifier B8127 -06-GR3-519
10 les données D' et également éventuellement des circuits logiques pour vérifier les bits de correction d'erreur S'. Les bus de données 415 et 416 fonctionnent de façon très similaire aux bus de données 304 et 305 décrits en relation avec la figure 3, et ne seront pas à nouveau décrits en détail. Dans certains modes de réalisation, le circuit de correction d'erreur vérifie seulement les données D' en ce qui concerne les bits de correction d'erreur S' et fournit une indication, par exemple au microprocesseur 404, si des erreurs sont détectées. Si oui, les données sont par exemple réémises. Dans des variantes de réalisation, les circuits des bus de données 416 peuvent en outre ou à titre de variante corriger des erreurs dans les données, auquel cas la sortie du dernier bloc logique répéteur 435 contient des données D" qui sont une version corrigée des données D'. De façon avantageuse, les modes de réalisation des figures 3 et utilisent le fait que, dans des circuits intégrés de conception moderne, il existe une tendance à former des circuits de plus en plus petits comprenant des pistes métalliques très minces qui ont une résistance élevée et nécessitent donc plus de répéteurs. De plus, un code de correction d'erreur est de plus en plus souvent nécessaire pour assurer l'intégrité des données et, en incorporant les éléments logiques requis pour produire et vérifier les bits de correction d'erreur dans les blocs logiques répéteurs prévus pour répéter les signaux de données, le circuit de correction d'erreur peut être mis en oeuvre sans ajouter de retard dans le système. La figure 5 représente un exemple de bus de données 500 comprenant des circuits pour produire un code de correction d'erreur en parallèle avec les répéteurs de données. Cet exemple est basé sur un code de Hamming. Le nombre total de bits de correction d'erreur dans cet exemple du code de Hamming pour chaque mot de données est égal à log2(n) + 1, où "n" est le nombre de bits de chaque mot. Dans l'exemple de la figure 5, il y a 8 bits de données b1 à b8 dans chaque bloc de données pour B8127 - 06-GR3-519
11 lequel des codes de correction d'erreur correspondants doivent être produits. Ainsi, quatre bits A, B, C et D d'un code de Hamming sont produits. Le bus de données 500 comprend trois blocs logiques répéteurs 502, 504 et 506 connectés en série. Selon la distance à parcourir sur le bus de données 500, d'autres blocs logiques pourraient être prévus comprenant d'autres répéteurs. Pour minimiser le nombre de connexions entre les blocs logiques répéteurs et le nombre de répéteurs, des blocs logiques pour la génération du code de correction d'erreur sont dans ce cas prévus en tant que blocs logiques répéteurs finaux dans le bus de données. Dans cet exemple, chaque bloc logique répéteur 502, 504, 506 comprend deux inverseurs 508 connectés en série pour répéter chacun des bits de données b1 à b8.
Le bit de correction d'erreur A dans cet exemple est calculé sous la forme d'un OU Exclusif des bits b8, b6, b2 et b1, le bit B sous la forme d'un OU Exclusif des bits b8, b4, b3 et b2, le bit C sous la forme d'un OU Exclusif des bits b6, b5, b4 et b2 et le bit D sous la forme d'un OU Exclusif de tous les bits. Dans cet exemple, le bit de correction d'erreur A est produit par deux portes OU Exclusif, XOR, 510 et 512 dans le bloc logique répéteur 502 et une porte XOR 514 dans le bloc logique répéteur 504. La porte XOR 510 fournit le OU Exclusif des bits b8 et b6 alors que la porte XOR 512 fournit le OU Exclusif des bits b2 et b1. La porte XOR 514 fournit le OU Exclusif des sorties des portes 510 et 512. La sortie de la porte XOR 514 est répétée par deux inverseurs connectés en série dans le bloc logique répéteur 506 pour fournir le bit de correction d'erreur de sortie A. De façon similaire, le bit de correction d'erreur B est calculé sur la base d'un OU Exclusif des bits b8 et b4 par la porte XOR 516 et des bits b3 et b2 par la porte XOR 518 dans le bloc logique répéteur 502 et dans le bloc logique répéteur 504, le OU Exclusif des sorties des portes XOR 516 et 518 par la B8127 - 06-GR3-519
12 porte 520. A nouveau, la sortie de la porte XOR 520 est ampli-fiée par deux inverseurs connectés en série dans le bloc logique répéteur 506. Le bit d'erreur C est produit sur la base d'un OU Exclusif des bits b6 et b5 par la porte XOR 522 et sur les bits b4 et b3 par la porte XOR 524 dans le bloc logique répéteur 502 et le OU Exclusif des sorties des portes XOR 522 et 524 par la porte XOR 526 dans le bloc logique répéteur 504. Deux inverseurs sont prévus en série dans le bloc logique répéteur 506 pour amplifier la sortie de la porte XOR 526. Le bit d'erreur D est produit par une opération OU Exclusif sur tous les bits b1 à b8. Pour cela, une porte XOR 528 est prévue dans le bloc logique répéteur 502 pour fournir le OU Exclusif des bits b8 et b7 et des portes XOR 530 et 534 sont prévus dans le bloc logique répéteur 504 pour fournir le OU Exclusif des sorties des portes XOR 528-522 et 524-512, respectivement. Une porte XOR 536 dans le bloc logique répéteur 506 fournit le OU Exclusif des sorties des portes XOR 530 et 534 pour fournir le bit de correction d'erreur de sortie D.
Cet exemple est donné sur la base d'un bus de données parallèle. Il sera clair que les mêmes principes pourraient s'appliquer à un bus de données série si des circuits logiques supplémentaires sont prévus dans chaque bloc logique répéteur pour convertir le train de bits série en train parallèle pour le calcul des bits d'erreur. Les bits d'erreur et tout signal intermédiaire sont par exemple alors transmis sur des lignes parallèles séparées ou réintroduits dans le train série à la sortie de chaque répéteur. La figure 6 représente un exemple d'un bus de données 30 600 comprenant des circuits pour vérifier les bits de correction d'erreur et corriger une ou plusieurs erreurs. Comme cela est illustré en figure 6, le bus de données 600 comprend des lignes d'entrée pour recevoir des bits b1' à b8' et des bits de correction d'erreur A' à D' provenant du 35 circuit de génération de code de correction d'erreur, par exemple B8127 -06-GR3-519
13 le circuit 500 de la figure 5 mais qui peut contenir une ou plusieurs erreurs par rapport à ces données. Le bus de données 600 comprend un bloc de génération 602 qui régénère les bits de correction d'erreur à partir des bits de données b1' à b8' et ceux-ci sont désignés par A", B", C" et D". Si une erreur de données a pris place, les bits de correction d'erreur A" à D" peuvent être différents des bits de correction d'erreur A' et D'. Le bloc de circuit 602 n'a pas été représenté en détail et est, pour cet exemple, identique au circuit 500 illustré en figure 5. Une succession d'étages série 604 comprenant des inverseurs 606 connectés en série est prévu pour amplifier les bits de correction d'erreur A', B', C' et D' produits précé- demment. Bien que représentés sous forme d'un seul bloc par souci de simplicité, comme pour le circuit 500, le bloc de circuit 602 peut comprendre deux blocs logiques répéteurs connectés en série, et deux inverseurs 606 connectés en série concernant chacun des bits de données A' à D' sont par exemple prévus dans chaque bloc logique répéteur. Les blocs logiques répéteurs 608 et 610 sont connectés en série avec le bloc 602 et chacun comprend des répéteurs pour amplifier les huit bits b1' à b8'. Le bloc logique répéteur 608 comprend également une succession de comparateurs constitués par exemple de portes ET, pour comparer les bits de correction d'erreur précédemment calculés aux bits de correction d'erreur régénérés, en d'autres termes A" à A', B" à B', C" et C' et D" à D'. La sortie de chaque comparaison est fournie en tant que signal de sortie EA, EB, EC et ED, chacun indiquant si les comparaisons concernant les bits A" à D" indique respectivement une erreur des données. Dans certains modes de réalisation, on réalise seule- ment une vérification des erreurs et si l'une des valeurs EA à ED indique une erreur, ceci est indiqué en sortie de sorte que les données associées peuvent être réémises ou relues. De préfé- B8127 - 06-GR3-519
14 rence, une ou plusieurs erreurs sont localisées et corrigées sur la base de ce signal, comme cela va maintenant être expliqué. Les bits de données b1' à b8' ainsi que les bits d'indication d'erreur EA à ED sont fournis à un bloc logique répéteur 61 qui détermine l'emplacement des erreurs dans les données en fonction des signaux EA à ED. En particulier, en connaissant quel bit de correction d'erreur indique une erreur, il est possible avec le code de Hamming de localiser une ou plusieurs erreurs. Ainsi, à cette étape, un bit El à E8 est pro- duit en association avec chaque bit de données b1' à b8'. Chaque signal El à E8 a par exemple une valeur "1" si le bit associé est détecté comme étant une erreur ou une valeur "0" si le bit associé est détecté comme ne comportant pas d'erreur. Les bits de données b1 à b8 ainsi que les bits d'erreur associés El à E8 sont fournis à un bloc logique répéteur ultérieur 612 dans la succession, qui comprend des circuits pour corriger les erreurs. Ce bloc comprend par exemple huit portes X0R (non représentées), qui réalisent la fonction OU Exclusif entre chaque bit et son signal d'erreur respectif. Ainsi, la sortie du bloc de correction 612 est constituée de bits de données modifiés b1" à b8" qui ont été corrigés. Un signal de débordement OF est également fourni à la sortie du bloc logique répéteur 612 qui indique par exemple si le nombre d'erreurs détectées est trop élevé pour être corrigé, par exemple si plus de deux bits de données comportent des erreurs. Ce signal est par exemple produit par le bloc 610 et fourni sur une ligne séparée (non représentée) au bloc 612. Selon le processus de codage, le circuit de correction peut de façon générale traiter un nombre limité d'erreurs. Si on détecte trop d'erreurs, ceci peut être indiqué par unsignal de sortie et les données renvoyées ou relues. Dans l'exemple de la figure 6, dans lequel huit bits de données sont prévus, si EA à ED sont tous à "0", ceci indique par exemple une absence d'erreur et les quinze autres combinaisons de bits ("0001" à "1111") indiquent des nombres d'erreurs différents. Certaines de ces combinaisons B8127 - 06-GR3-519
15 représentent des erreurs corrigeables alors que certaines ne peuvent pas être corrigées comme cela est indiqué par le débordement. Le signal OF peut se propager par l'intermédiaire d'autres répéteurs, avec les données.
La figure 7 représente schématiquement un dispositif 700 qui est par exemple un dispositif électronique portable tel qu'un lecteur de musique et/ou de signaux vidéo, une caméra numérique, un ordinateur de poche, un téléphone mobile, un assistant numérique personnel, ou autre dispositif électronique. Le dispo- sitif 700 comprend un microprocesseur 702, une mémoire 704, une port d'entrée 708, un afficheur 710 et un clavier 712. D'autres composants non représentés en figure 7 peuvent être prévus. Des bus de données sont prévus entre les composants. En particulier, des bus de données 714 et 716 sont prévus en direction et à partir du microprocesseur 702 vers les ports de sortie d'entrée 706, 708, respectivement. Un bus de données bidirectionnel 718 est prévu entre le microprocesseur 702 et la mémoire 704. Un bus de données 720 est prévu entre le microprocesseur 702 et l'affichage 710. Au moins un des bus de données 714, 716, 718 et 720 comprend des blocs logiques répéteurs avec les circuits de correction d'erreur décrits précédemment. De façon avantageuse, en combinant des circuits de correction d'erreur avec des répéteurs, les retards logiques associés à la correction d'erreur peuvent être masqués dans les blocs répéteurs qui ont un retard de propagation associé. Les modes de réalisation du circuit répéteur comprenant un circuit de correction d'erreur décrit ici peuvent être utilisés dans une large plage d'applications, non limitée à l'exemple d'un bloc mémoire et de lignes de transmission illus- tré en figures 3 et 4. Ces circuits peuvent être utilisés de façon générale chaque fois qu'il y a un besoin de codage à correction d'erreur, en émission ou en réception et/ou que les données soient corrigées ou non en même temps qu'il existe un besoin de répéteurs pour répéter et amplifier des données.
B8127 - 06-GR3-519
16 Des exemples de dispositifs dans lesquels des bus de données comprenant les blocs logiques répéteurs décrits pour-raient être incorporés incluent des ordinateurs de poche, des reproducteurs de signaux numériques tels que des lecteurs enre- gistreurs de disques durs, des téléphones mobiles, des assistants numériques personnels, des caméras numériques, etc. Bien qu'un certain nombre de modes de réalisation particuliers aient été décrits, il sera clair pour l'homme de l'art que de nombreuses modifications et variantes peuvent être 10 envisagées. Par exemple, bien qu'un seul exemple de logique de codage de code de correction d'erreur et un seul exemple de logique de vérification de code de correction d'erreur aient été fournis, de nombreuses modifications et variantes peuvent être apportées à ces circuits. En outre, tout processus de codage de correction d'erreur pourrait être mis en oeuvre dans des modes de réalisation de l'invention, le code de Hamming étant seulement un exemple. De tels codes peuvent réaliser seulement une vérification d'erreur, ou corriger une erreur ou deux ou plus. Bien qu'en figures 3 et 4, une génération et une véri-fication progressive des bits de correction d'erreur dans la succession de blocs logiques répéteurs aient été représentés, il est clair que les codes d'erreur peuvent être produits et véri- fiés d'une façon quelconque, tout en utilisant des étages 25 répéteurs multiples et impliqueront de même la génération de signaux intermédiaires émis à partir d'un bloc logique répéteur vers le suivant. Les modes de réalisation décrits ici pourraient s'appliquer à tout nombre de bits de données et les circuits logiques pour- 30 raient être mis en oeuvre avec tout nombre de blocs logiques répéteurs, allant par exemple de seulement deux blocs logiques répéteurs à des centaines de blocs logiques répéteurs. 15 20

Claims (10)

REVENDICATIONS
1. Bus de données comprenant une pluralité de blocs logiques (310-317, 336-343, 417-422, 430-435) couplés en série, chaque bloc logique comprenant au moins un répéteur pour ampli-fier au moins un bit de données émis par ledit bus de données, au moins un des blocs logiques comprenant en outre des circuits couplés en parallèle avec ledit au moins un répéteur et agencés pour déterminer un premier bit de code de correction d'erreur associé audit au moins un bit de données.
2. Bus de données selon la revendication 1, comprenant 10 en outre une pluralité de sorties pour fournir les données et le premier bit du code de correction d'erreur.
3. Circuit comprenant le bus de données de la revendication 1 ou 2, et un autre bus de données couplé audit bus de données et comprenant une pluralité de seconds blocs logiques 15 couplés en série, chaque second bloc logique comprenant au moins un second répéteur pour amplifier au moins un bit de données émis avec ledit autre bus de données et au moins l'un des seconds blocs logiques comprenant en outre des circuits en parallèle avec ledit au moins un second répéteur et agencés pour 20 déterminer un second bit de code et comparer les premier et second bits de code de correction d'erreur.
4. Circuit selon la revendication 3, dans lequel au moins un des seconds blocs logiques comprend en outre des moyens logiques pour corriger ledit au moins un bit de données émis par 25 ledit autre bus de données sur la base de ladite comparaison.
5. Circuit selon la revendication 3 ou 4, comprenant en outre un circuit de mémoire (302) connecté entre lesdits bus de données, le circuit de mémoire étant agencé pour mémoriser ledit au moins un bit de données et le premier bit du code de 30 correction d'erreur.
6. Circuit selon la revendication 3 ou 4, comprenant en outre une ligne de transmission couplée entre lesdits bus de données, la ligne de transmission étant agencée pour transmettreB8127 - 06-GR3-519 18 ledit au moins un bit de données et le premier bit du code de correction d'erreur du premier au second bloc de circuit.
7. Dispositif électronique comprenant le bus de données de la revendication 1 ou 2, ou le circuit de données de l'une quelconque des revendications 3 à 6.
8. Lecteur de données comprenant le dispositif électronique selon la revendication 7.
9. Téléphone mobile comprenant un dispositif électronique selon la revendication 7.
10. Procédé d'émission de données pour un bus de données comprenant : amplifier au moins un bit des données en utilisant au moins un répéteur d'un bloc logique (310-317, 336-343, 417-422, 430-435) ; et pendant un retard fourni par ledit au moins un répéteur, déterminer au moyen du bloc logique au moins un bit de code de correction d'erreur associé audit au moins un bit de données.
FR0755898A 2007-06-20 2007-06-20 Bus avec circuit de correction d'erreur Pending FR2917863A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0755898A FR2917863A1 (fr) 2007-06-20 2007-06-20 Bus avec circuit de correction d'erreur
US12/140,643 US8266494B2 (en) 2007-06-20 2008-06-17 Bus with error correction circuitry

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0755898A FR2917863A1 (fr) 2007-06-20 2007-06-20 Bus avec circuit de correction d'erreur

Publications (1)

Publication Number Publication Date
FR2917863A1 true FR2917863A1 (fr) 2008-12-26

Family

ID=39204685

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0755898A Pending FR2917863A1 (fr) 2007-06-20 2007-06-20 Bus avec circuit de correction d'erreur

Country Status (2)

Country Link
US (1) US8266494B2 (fr)
FR (1) FR2917863A1 (fr)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046366A1 (en) * 2000-10-11 2002-04-18 Nec Corporation Serial communication device and method of carrying out serial communication
US20020188892A1 (en) * 2001-04-04 2002-12-12 Nec Corporation Method and apparatus for online detection and correction of faults affecting system-on-chip buses
US20040037367A1 (en) * 2000-07-06 2004-02-26 Christoph Werner Method and digital circuit for transmitting a plurality of bit sequences to be transmitted via several bus lines
EP1427126A2 (fr) * 2002-12-06 2004-06-09 Fanuc Ltd Système de détection et correction d'erreurs, et dispositif de commande utilisant celui-ci

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274646A (en) * 1991-04-17 1993-12-28 International Business Machines Corporation Excessive error correction control
US5490155A (en) * 1992-10-02 1996-02-06 Compaq Computer Corp. Error correction system for n bits using error correcting code designed for fewer than n bits
US6223301B1 (en) * 1997-09-30 2001-04-24 Compaq Computer Corporation Fault tolerant memory
US20020156953A1 (en) * 2001-02-28 2002-10-24 Beiley Mark A. Dynamic bus inversion method
US6901486B2 (en) * 2002-07-05 2005-05-31 Hewlett-Packard Development Company, L.P. Method and system for optimizing pre-fetch memory transactions
US7058735B2 (en) * 2003-06-02 2006-06-06 Emulex Design & Manufacturing Corporation Method and apparatus for local and distributed data memory access (“DMA”) control
US7243203B2 (en) * 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7321997B2 (en) * 2004-03-30 2008-01-22 Intel Corporation Memory channel self test
US7269681B1 (en) * 2004-12-01 2007-09-11 Advanced Micro Devices, Inc. Arrangement for receiving and transmitting PCI-X data according to selected data modes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040037367A1 (en) * 2000-07-06 2004-02-26 Christoph Werner Method and digital circuit for transmitting a plurality of bit sequences to be transmitted via several bus lines
US20020046366A1 (en) * 2000-10-11 2002-04-18 Nec Corporation Serial communication device and method of carrying out serial communication
US20020188892A1 (en) * 2001-04-04 2002-12-12 Nec Corporation Method and apparatus for online detection and correction of faults affecting system-on-chip buses
EP1427126A2 (fr) * 2002-12-06 2004-06-09 Fanuc Ltd Système de détection et correction d'erreurs, et dispositif de commande utilisant celui-ci

Also Published As

Publication number Publication date
US8266494B2 (en) 2012-09-11
US20090125789A1 (en) 2009-05-14

Similar Documents

Publication Publication Date Title
EP0402210B1 (fr) Procédé pour vérifier l'intégrité d'un logiciel ou de données, et système pour la mise en oeuvre de ce procédé
FR2911414A1 (fr) Dispositif et procede pour lire un mot de donnees et dispositif et procede pour memoriser un bloc de donnees
FR2686990A1 (fr) Unite arithmetique ayant une operation d'accumulation.
EP1292889B1 (fr) Memoire eeprom securisee comprenant un circuit de correction d'erreur
CH653457A5 (fr) Procede de correction d'erreurs dans des signaux de donnees digitales.
FR3038752A1 (fr)
FR2981472A1 (fr) Dispositif et procede de production d'une sequence de bits
FR2960977A1 (fr) Generateur de sequence a sollicitation variable pour circuit d'autotest integre
WO2014131546A1 (fr) Procede d'encodage de donnees sur une carte a puce par des codes de poids constant
FR3025041A1 (fr)
FR2984553A1 (fr) Procede et dispositif de detection de fautes
FR2831971A1 (fr) Procede de memorisation de donnees avec correction d'erreur
US20130121125A1 (en) Apparatus and method for processing optical information using low density parity check code
EP1983436A1 (fr) Contrôle d'intégrité d'une mémoire externe à un processeur
FR2917863A1 (fr) Bus avec circuit de correction d'erreur
EP1880387B1 (fr) Dispositif de protection d'une memoire contre les attaques par injection d'erreur
EP1076933B1 (fr) Dispositif de correction d'erreurs et lecteur de disque optique comportant un tel dispositif
EP2865100B1 (fr) Dispositif de correction de deux erreurs avec un code de distance de hamming trois ou quatre
EP1571522A1 (fr) Dispositif de protection contre l'injection d'erreur dans un bloc logique asynchrone d'un module logique élémentaire
WO2003014931A2 (fr) Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur
EP0715430B1 (fr) Système de transmission au moyen d'informations protégées par un code de gestion d'erreurs
EP1300953A1 (fr) Code de détection et/ou de correction d'erreurs à haute efficacité
EP1571754B1 (fr) Dispositif de protection contre l'injection d'erreur dans une bascule synchrone d'un module logique élémentaire
EP0437127A1 (fr) Circuit décaleur avec générateur de bits de parité
WO2013079306A1 (fr) Procede de maximisation de la capacite de correction d'un code correcteur d ' erreurs mettant en oeuvre des syndromes supplementaires