DE2425823A1 - Einrichtung zur fehlererkennung und fehlerkorrektur - Google Patents

Einrichtung zur fehlererkennung und fehlerkorrektur

Info

Publication number
DE2425823A1
DE2425823A1 DE19742425823 DE2425823A DE2425823A1 DE 2425823 A1 DE2425823 A1 DE 2425823A1 DE 19742425823 DE19742425823 DE 19742425823 DE 2425823 A DE2425823 A DE 2425823A DE 2425823 A1 DE2425823 A1 DE 2425823A1
Authority
DE
Germany
Prior art keywords
matrix
bit
code
module
sub
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.)
Ceased
Application number
DE19742425823
Other languages
English (en)
Inventor
Douglas Craig Bossen
Se June Hong
Mu-Yue Hsiao
Arvind Motibhai Patel
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2425823A1 publication Critical patent/DE2425823A1/de
Ceased legal-status Critical Current

Links

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Description

Böblingen, den 20.. Mai 1974
te-aa/bs 2425323
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
Amtliches Aktenzeichen: Neuanmeldung Aktenzeichen der Anmelderin: PO 971 040
Einrichtung zur Fehlererkennung und Fehlerkorrektur
Die Erfindung betrifft eine Einrichtung zur Fehlererkennung und Fehlerkorrektur nach dem Oberbegriff des Anspruchs 1 sowie ein Verfahren zum Aufbau und zur Optimierung der Einrichtung.
Wenn bisher Informationsbits (z.B. DO, D1 und D2) gespeichert oder zwischen zwei Punkten übertragen werden sollten, so konnten Fehler in den Datenbits durch vielerlei Techniken erkannt und korrigiert werden. Diese Techniken sind z.B. beschrieben in: "Error Detecting Logic for Digital Computers" von Frederick F. Sellers, Jr., Mu-Yue Hsiao und Leroy W. Bearnson (McGraw Hill 1968) und Error Correcting Codes von W. Wesley Peterson (The M.I.T. Press 1961). Typischerweise werden mit den Informationsbits zusammen auch Prüfbits geführt, die das Auftreten und die Lage von Fehlern sowohl in den Informationsbits als auch in den Prüfbits angeben. So bilden in dem allgemein bekannten Hammingcode jedes Prüfbit und vorgewählte Informationsbits eine Codegruppe, in der der Wert eines jeden Prüfbit durch den Wert der Informationsbits in seiner Codegruppe bestimmt wird. Jede Veränderung eines Informationsbit oder eines Prüfbit während der übertragung ist daher an der Empfängerseite zu identifizieren. Die nachfolgende Tabelle 1 zeigt einen vereinfachten 6-Bit-Code zur
409881/0845
Erkennung und Korrektur von Einzelfehlern (SEC/SED), worin die Werte der drei Prüfbits C1, C2 und C3 als Funktion von drei Informationsbits DO, D1 und D2 ermittelt werden.
Tabelle 1 - Stand der Technik
Hamming SEC/SED (6,3) Code
k Informationsbits (n-k) Prüfbits
DO D1 D2 C1 C2 C3
S1 1
S2. 0
S3 0
O 0
1 0
O 1
Die Gesamtzahl von Bits im Codewort ist n, es enthält k Informationsbits, n-k (auch mit r bezeichnete) Prüfbits und der Code ist angegeben als (n, k). In der nachfolgenden Tabelle 2 bilden die Prüfbits C1, C2 und C3 und die Informationsbits DO, D1 und D2 die Codegruppe S1.
Tabelle 2 - Stand der Technik
Hamming SEC/SED (6,3) Code
DO DI D2 C1 C2 C3
SL. ..1 0 1 1 0 0
S2.. ..1 1 1 0 1 0
S3.. ..0 1 1 0 0 1
po 971 040 409881/0845
Für die durch die Matrix dargestellten Beziehungen zwischen den Prüfbits und Informationsbits gelten die Regeln, daß jede Codegruppe mindestens ein Prüfbit enthalten muß, daß jedes Informationsbit mindestens einer Codegruppe angehören muß und daß jede Codegruppe eindeutige Sätze von Informationsbits und Prüfbits enthalten muß. Die Beziehungen führen zu Antivalenzfunktionen (Exclusives ODER), wobei jedes Informationsbit "Eins" in der Matrix einen Eingang und jedes Prüfbit "Eins" einen Ausgang darstellen. Nimmt man z.B. eine gerade Parität an, so ist das Prüfbit C1 = 1, wenn eine Eins in einer der Positionen DO oder D2 vorhanden ist und das Prüfbit ist gleich Null, wenn eine Eins in beiden Positionen oder in keiner Position steht. Bei ungerader Parität ergeben sich entgegengesetzte Werte für CI. Anders herum ausgedrückt ist das Prüfbit C1 gleich der antivalenten Verknüpfung von DO und D2 für gerade Parität. In ähnlicher Weise ist das Prüfbit C2 gleich der antivalenten Verknüpfung von DO, D1 und D2. Jede Codegruppe enthält im allgemeinen mehr als ein Prüfbit.
Tritt bei der übertragung der Information eines Codewortes mit den Bits DO, D1, D2, C1, C2 und C3 ein Einzelfehler auf, so zeigt sich dieser durch die Nichtübereinstimmung zwischen der erwarteten Parität einer jeden Codegruppe und der empfangenen Parität der Codegruppe. Diese Veränderung resultiert aus einem Fehler, der im empfangenen Wort mit Hilfe einer Analyse der empfangenen Information ermittelt werden kann, wie sie in Tabelle 3 gezeigt ist.
Tabelle 3 - Stand der Technik DO D1 D2 C1 C2 C3 Syndrome
S1 1 O 1 1 0 0 1
S2 1 110 10 1
S3 0 1 1 0 0 1 0
PO 971 040 409881 / 0 8 Λ 5
Die Analyse erfolgt, indem man jede Codegruppe auf Genauigkeit (gerade Parität) untersucht und dann die Lage des fehlerhaften Bits ableitet. Die Untersuchung einer jeden Codegruppe ergibt ein Syndrom, in dem eine Eins anzeigt, daß die Parität dieser Codegruppe falsch ist. Ein das Informationsbit DO betreffender Fehler erzeugt z.B. die Syndrome S1, S2 und Si (Paritätsfehler in den Codegruppen S1 und S2). Da das Informationsbit DO das* einzige die Codegruppen S1, S2 und nicht S3 beeinflußende Bit ist, ist dieses das falsche Bit.
Außer der Erkennung und Korrektur eines Einzelfehlers ist die Erkennung von Doppelfehlern erwünscht. Bei dem Stand der Technik konnte man Doppelfehler durch ein zusätzliches Prüfbit CT bearbeiten, welches die Gesamtparität aller Bits im Codewort gemäß Darstellung in Tabelle 4 untersucht.
Tabelle 4 - Stand der Technik Hamming SEC/DED (7,3) Code
DO D1 D2 C1 C2 C3
S1 . . . 1 0 1 1 0 0
S2 1 1 1 0 1 1
S3 0 1 1 0 0 1
CT
0 0 0
ST 1
Ohne das zusätzliche CT-Bit lassen je zwei Fehler in einer Codegruppe (z.B. ein Fehler in den Bits DO und C1) die Parität in dieser Gruppe gerade, aber nicht unbedingt in anderen, und zeigen somit die Fehlerlage falsch an. Das zusätzliche CT-Bit bezeichnet diese nicht korrigierbare Fehlerbedingung durch Anzeigen der Tatsache, daß sich die Gesamtparität nicht geändert hat, obwohl eine oder mehrere Codegruppen eine Änderung aufweisen.
po 971 040 40988 1/08 45
Bei der Konstruktion von Prüfbit-Erzeugerschaltungen stellt jedes Informationsbit "Eins" in der Informationsbitmatrix einen Eingangsschenkel einer Äntivalenzschaltung und jedes Prüfbit "Eins" einen Ausgang dar. Bei Fehlererkennungsschaltungen stellt jede Eins einen Schenkel einer Antivalenzschaltung dar, die Fehlerlokalisierungsschaltung benötigt außerdem noch weitere Schaltkreise. Auch wenn Antivalenzschaltglieder mit mehr als zwei Eingängen verfügbar wären, so muß doch eine große Anzahl derartiger Schaltungen vorgesehen werden; außerdem muß berücksichtigt werden, daß einige Signale längere Wege durchlaufen als andere und daß die Betriebsgeschwindigkeit durch den längsten Weg bestimmt wird. Das Prüfbit CT ist ein hauptsächlicher Komplizierungsfaktor, weil es nur Einsen enthält und somit zahlreiche Eingänge erfordert und einen langen Signalweg hat.
Die US-Patentschrift Nr. 3 623 155 beschreibt eine verbesserte Schaltung, die durch eine Matrix der in Tabelle 5 gezeigten Art illustriert wird. Ein viertes eindeutig gesetztes Prüfbit C4 ist vorgesehen für die überwachung einer willkürlichen Anzahl von Informationsbits (als Beispiel sind die Bits DO und D1 in der Codegruppe S4 gezeigt); es ist so gewählt, daß jedes Informationsbit und jedes Prüfbit.in eine ungerade Zahl (1, 3, 5, 7 usw.) von Codegruppen gesetzt wird.
Tabelle 5
DED (7,3) Code D2 C1 C2 C3 C
DO D1 1 1 0 0 0
S1 1 0 1 0 1 0 0
S2 1 1 1 0 ' 0 1 0
S3 0 1 0 0 0 0 1
S 4 1 1
Durch überwachung aller vier Codegruppen S1 bis S4 auf gerade Parität zeigt das resultierende Syndrom (welches eine oder mehrere ungerade Paritäten enthält) einen oder mehrere Fehler an. Da
po 971 040 409881/0845
jedes Informationsbit und jedes Prüfbit einer ungeraden Anzahl von Codegruppen zugeordnet ist, wird ein Einzelfehler (oder ein anderer ungerader Fehler) angezeigt durch eine ungerade Anzahl von Codegruppen-Paritätsanzeigen und ein Doppelfehler (oder ein anderer geradzahliger Fehler) durch eine gerade Anzahl. Einzelfehler können außerdem leicht durch Decodierung der Syndrome nach ihren gemeinsamen BitZuordnungen lokalisiert werden. Da ein Fehler in der Bitposition DO z.B. ein Syndrom S1, S2, sT, S4 erzeugt (gerade Paritäten durch die Codegruppen S1, S 2 und S4 erkannt) kann ein UND-Glied durch Signale betätigt werden, die gerade Paritäten für die Codegruppen S1, S2 und S4 anzeigen (und bei Bedarf eine ungerade Parität für S3) und damit das Bit DO als korrekturbedürftig bezeichnen.
Die vorliegende Erfindung stellt sich ausgehend vom beschriebenen Stand der Technik die Aufgabe, eine Einrichtung zur Erzeugung von Prüfbits und zur Fehlererkennung anzugeben, deren Aufbau aus identischen Baueinheiten erfolgen soll, die ein Minimum von Eingabe/Ausgabe-Verbindungen zwischen den Baueinheiten aufweist und bei der die Zeitverzögerung durch die Codierung und Decodierung minimal ist.
Zur Lösung dieser Aufgabe werden die im Kennzeichen des Patentanspruchs 1 angegebenen erfinderischen Maßnahmen vorgeschlagen. Weitere Merkmale, vorteilhafte Weiterbildungen und Ausgestaltungen der Erfindung sind in den Unteransprüchen enthalten.
Der modulare Aufbau sowohl des Prüfbitgenerators als auch der Fehlererkennungsschaltung aus identischen Bauelementen bringt insbesondere den Vorteil der Kostenersparnis bei der Herstellung mit sich, außerdem erlaubt er den Einbau der einzelnen Bauelemente an denjenigen Stellen des Systems (innerhalb eines Speichers, beispielsweise) die aus Gründen des Systemaufbaus und der elektronischen Umgebung hierzu am geeignesten sind. Die Minimalisierung der Anzahl der Verbindungsleitungen zwischen den Bauelementen trägt ebenfalls zur Kostenreduzierung und zum Aufbau eines wenig
971 040 409881/0845
komplizierten Systems bei. Die Vermeidung langer Verbindungsleitungen und die daraus resultierende geringe Verzögerung vermindert den zusätzlichen Zeitaufwand für die Durchführung von Fehlerprüfung und Fehlerkorrektur.
Ein wesentliches Hilfsmittel zum modularen Aufbau des Prüfbitgenerators und des Fehlererkennungsgerätes besteht in einer Codiermatrix, im folgenden Η-Matrix genannt. Mit Hilfe dieser Matrix wird jedes Informationsbit dadurch codiert, daß man es einer Anzahl von Code-Gruppen zuordnet und die Code-Gruppen in Abschnitte von gleicher Länge aufteilt. Die Teilcode-Gruppen innerhalb desselben Abschnittes werden einem entsprechenden Informationsbyte zugeordnet.
Die repräsentative Η-Matrix für den Modularcode in Fig. 2 zeigt, daß jeder Abschnitt eine gleiche Anzahl von Einerbits enthält und er eine zyklische Permutation des vorhergehenden Abschnittes ist, d.h., jede Zeile in der Matrix bildet die nächste Zeile in der nächsten Matrix. Die identischen modularen Baueinheiten (Module) entsprechen in ihrer Anzahl der Anzahl der Abschnitte gleicher Länge oder Bytes, in die der Code unterteilt ist. Jedes Modul enthält eine identische Gruppe von Logikschaltungen zur Verarbeitung der Bits des zu dem Modul gehörenden Bytes. Jede Gruppe von Logikschaltungen erzeugt die Parität der Teilcodegruppen innerhalb des Abschnittes. Auf jedem Modul sind weitere logische Schaltungen untergebracht, um die Paritäten der Teilcodegruppen von den anderen Moduln miteinander zu verknüpfen; die Kombination dieser Verknüpfung mit der Parität der Teilcodegruppe des betreffenden Moduls erzeugt das Prüfbit für die gesamte Codegruppe. In ähnlicher Weise erhält man das Syndrombit für die betreffende Codegruppe durch Einschluß des Prüfbits in die lineare Kombination der Paritäten der Teile der die Gesamtcodegruppe bildenden Codegruppe .
Die Η-Matrix soll nicht nur eine Realisierung in modularer Bauweise erlauben, sondern auch eine Mechanisierung mit einer Mindestverzögerung für die Codierung und die Decodierung. Sie ist
po 971 040 AO 9 88 1 /0845
außerdem für ein Minimum von Eingabe/Ausgabekontaktstifen pro Modul ausgelegt. Diese Ziele werden erreicht durch die Zuordnung eines jeden Bits zu einer Anzahl von Codegruppen, die ein Minimum darstellen und die eine Höchstzahl von Zeilen mit lauter Nullen in jedem Abschnitt der Matrix liefern. Die Zuordnung von Einsen in den Spalten der Matrix erfolgt durch ein Verfahren der Erzeugung von Vektoren (r, w) , wovon r die Spalte oder die Vektorlänge und w das kleinste Gewicht (Anzahl von Einsen im Vektor) ist; diese Zuordnung erfolgt mit Hilfe von Lückenlängenvektoren (eine Lückenlänge ist definiert als die Anzahl von Nullen zwischen den Einsen im Vektor), die die Vektoren oder Verbindungen bestimmen/ die die größte Anzahl von Codegruppen mit lauter Nullen ergeben. Ein Maximum von Null-Zeilen in der Matrix setzt die pro Modul erforderliche Anzahl von Eingabe/Ausgabestiften auf ein Mindestmaß herunter.
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben.
Es zeigen:
Fig. 1 ein Blockdiagramm einer, die Erfindung enthaltenden Systems;
Fig. 2 die Darstellung einer Matrix zur Veranschaulichung der Verbindungen innerhalb des Prüfbitgenerators / des Fehlerdetektors und Fehlerlokalisierers der Fig. 1;
Fig. 3 eine modulare Paritätsprüfmatrix für 128 Informationsbits mit den zyklischen Zeilen 1 bis 8 und der festen Zeile 9;
Fig. 4 eine Teilmatrix zur Darstellung des Grundmodulabschnittes, aus dem die Η-Matrix aufgebaut ist;
PO 971 040 409881 /0845
Fig. 5 ein schematisches Schaltbild der Schaltungsverbindungen auf dem Grundmodul;
Fig. 6 ein Schaltbild der Verbindungen zwischen den
Modulen und
Fig. 7 schematisch den in Fig. 1 gezeigten Fehlerlokalisierer. *
64 Informationsbits DO bis D63 auf der in Fig. 1 gezeigten Eingangs Sammelleitung 1 werden einem Prüfbitgenerator zur Verfügung gestellt. Die 64 Informationsbits werden auf die Bytes B1 bis B8 zu je 8 Bits aufgeteilt. Der Prüfbitgenerator erzeugt für eine Ausgangssammelleitung 3 ein Prüfbit für jedes Prüfbyte, welches an das entsprechende Prüfbyte angehängt wird, bevor dieses benutzt oder in den Speicher 5 gesetzt wird. Diese gespeicherten Informationsbytes und Prüfbits werden aus dem Speicher auf die Sammelleitung 6 ausgelesen und zur Erzeugung des 8-Bit-Syndroms S1 bis S8, welches für die acht Codegruppen auf der Sammelleitung 8 charakterisiert ist, an den Fehlerdetektor 7 geleitet. Mit den acht Syndrombits wird das Vorhandensein von Einzel- oder Doppelfehlern ermittelt und die Lage eines Einzelfehlers lokalisiert.
Eines oder mehrere Signale auf den acht Syndromleitungen veranlassen das ODER-Glied 9 zur Abgabe eines Signales auf die Fehlerleitung. Eine ungerade Anzahl von Signalen auf den acht Syndromleitungen zeigt einen Einzelfehler oder eine ungerade Anzahl von Fehlern an; dies wird durch ein Antivalenzglied 10 erkannt, welches über das UND-Glied 16 an die Einzelfehlerleitung gekoppelt wird, wenn das ODER-Glied 9 anzeigt, daß ein Fehler aufgetreten ist. Wenn bei Betätigung des ODER-Gliedes 9 eine gerade Zahl von Signalen auf den Syndromleitungen liegt, wird das UND-Glied 16 durch den invertierten oder Sperreingang vom Antivalenzglied 10 geschaltet und gibt ein Signal auf die Doppelfehler-Aus gäbe leitung. Die Syndromsignalleitungen S1 bis S8 werden wei-
971 040 409 8-81/0845
terhin an einen Fehlerlokalisierer 11 geführt, der die Fehleranzeigen DO1 bis D63* und die Anzeigen Ci' bis C81 auf 72 Fehleranzeigeleitungen 12 an einen Fehlerkorrigierer 13 leitet. Der Fehlerkorrigierer 13 kombiniert entsprechende Fehleranzeigen und Codewortpositionen und liefert korrigierte Informationsbits auf die Sammelleitung 14 und korrigierte Prüfbits auf die Sammelleitung 15.
Die allgemeine Konstruktion des in Fig. 1 gezeigten Systemes wird weiter im Zusammenhang mit der in Fig. 2 gezeigten Matrix erklärt, die symbolisch den Prüfbitgenerator 2, den Fehlerdetektor 7 und den Fehlerlokalisierer 11 zeigt. Die Matrixspalten zeigen das 72 Bit umfassende Codewort so in 64 Informationsbits DO bis D63 und acht Prüfbits C1 bis C8 unterteilt, daß ein Prüfbit am Ende von je acht ein Informationbyte bildenden Bits steht.
Jedes der Prüfbits C1 bis C8 steht in einem anderen Abschnitt der Matrix. Jedes Byte definiert einen bestimmten Abschnitt der Η-Matrix und jeder Abschnitt enthält dieselbe Anzahl von Einsen. Jeder folgende Abschnitt der Η-Matrix ist eine zyklische Permutation des vorhergehenden Abschnittes. Die Zeile 1 im ersten Abschnitt beispielsweise wird zur Zeile 2 im zweiten Abschnitt und zur Zeile 3 im dritten Abschnitt usw. Jedes Prüfbit C1 bis C8 gehört zu einer anderen der acht Codegruppen S1 bis S8, die in der Matrix als Zeilen S1 bis S8 angegeben sind. Jedes Einerbit in der Matrix stellt eine physikalische Schaltverbindung dar. Im Prüfbitgenerator 2 ist jedes der Prüfbits C1 bis C8 gleich der Antivalenzfunktion all der Informationsbits der Codegruppe, deren Lage durch eine Eins in der betreffenden Matrixzeile gekennzeichnet ist. Das Prüfbit C1 ist z.B. gleich der antivalenten Funktion der Informationsbits DO bis D7, D30, D35, D36# D37 usw. Ähnlich wird das Prüfbit C2 durch antivalente Verknüpfung aller an der Codegruppe S2 beteiligten Bits, nämlich DO, D2, D5 usw. gebildet. Im Fehlerdetektor 7 wird ein ähnliche Antivalenzoperation mit jeder Codegruppe jedoch einschließlich des zugehörigen Prüfbits ausgeführt, um die entsprechenden Syn-
•Ό 971 040 4098 8 1/084 5
drome S1 bis S8 zu erhalten. Für die Codegruppe S1 wird z.B. eine Antivalenzoperation auf den Informationsbits DO bis D7, D30 usw. und dem Prüfbit C1 ausgeführt. Da der Prüfbitgenerator 2 die Prüfbits C1 bis C8 so zuordnet, daß sich eine gerade Anzahl von Einsen in jeder Codegruppe ergibt (gerade Parität), erkennt der Fehlerdetektor 7, daß die gerade Parität unverändert geblieben ist, wenn kein Fehler vorliegt. Wenn jedoch ein Fehler vorliegt, haben eine oder mehrere der acht Codegruppen eine ungerade Parität und lösen dadurch Syndromsignale auf den entsprechenden Leitungen S1 bis S8 in Fig. 1 aus. Natürlich können die Prüfbits auch so zugeordnet werden, daß sich eine ungerade Anzahl von Einsen in jeder Codegruppe ergibt, so daß das Verfahren auch mit ungerader Parität anstatt mit gerader arbeitet. Die Interpretation dieser Syndrome durch den Fehlerlokalisierer 11 wird durch die Matrix der Fig. 2 ebenfalls dargestellt. Ein Fehler in einer Informationsbitposition oder einr Prüfbitposition (Matrixspalten) beeinflußt vorbestimmte Codegruppen (Matrixzeilen S1 bis S8). Ein Fehler im Informationsbit DO führt z.B. zu einer ungeraden Parität in den Codegruppen S1, S2 und S3, die durch Syndromsignale vom Fehlerdetektor 7 auf den Leitungen S1, S2 und S3 dargestellt wird. Zur Ermittlung der Fehlerlage dient ein UND-Glied für jedes Codewortbitbit (Matrixspalte) mit Eingängen von jeder Syndromleitung für die Codegruppe, zu der es gehört (ein Bit in seiner Matrixspalte). Das ist in Fig. 2 durch die Zahlen unter der Matrix wiedergegeben. Da die Syndrome S1, S2 und S3 beispielsweise durch einen Fehler im Bit DO erzeugt werden, wird ein Ausgangssignal eines UND-Gliedes hervorgerufen durch die Eingänge S1, S2 und S3 und "Einzelfehler". Die zusätzlichen Eingänge "Ϊ, 1 und F sollen die richtige Fehlerdecodierung sicherstellen und überlappende Syndromuntergruppen unterscheiden. Da die Einerbits in der Matrix der Fig. 2 die Schaltungen für die Implementierung der Prüfbiterzeugung und Fehlererkennung, Fehlerlokalisierung und Korrektur darstellen, ist um so weniger Schaltungsaufwand zur Konstruktion des Systemes erforderlich, je weniger Einsen in der Matrix stehen.
po 971 040 409881/0845
Die Arbeitsgeschwindigkeit des Prüfbitgenerators 2 und des Fehlerdetektors 7 wird bestimmt durch den längsten von den Eingangssignalen zurückgelegten Weg. Um die Anzahl von O-Zeilen im Matrixmodul möglichst groß und die Anzahl von Zeilen aus lauter Einsen möglichst klein zu halten, muß daher außerdem die Anzahl von Einsen in jeder Zeile der Matrix ausgeglichen werden.
Zu den weiteren Kriterien für die Konstruktion der Matrix gehören die inhärenten Regeln für die Korrektur von Einzelfehlern und die Erkennung von Doppelfehlern, d.h., jede Gruppe muß mindestens ein Prüfbit enthalten, jedes Informationsbit muß ein Glied mindestens einer Codegruppe sein und jede Codegruppe muß eindeutige Sätze von Informationsbits und Prüfbits enthalten. Im Falle der Einzelfehlerkorrektur/Doppelfehlererkennung (SEC/DED) verlangt die Codeoptimierung, daß jedes Informationsund Prüfbit zu einer ungeraden Zahl der Codegruppen S1 bis S8 gehört. Im Falle der Prüfbits muß diese Zahl 1 sein und im Falle der Informationsbits größer als 1. Weiterhin ist die Wahl der Anzahl von Codegruppen wichtig, zu denen ein bestimmtes Informationsbit gehören soll. Abgesehen von Überlegungen zu Systeinarchitektur, wie sie weiter unten angestellt werden, wird die Mitgliedschaft in Codegruppen nach einem Verfahren zur Erzeugung von Lückenlängenvektoren bestimmt (diese Lückenlängen sind die Anzahl von Nullen zwischen den Einsen im Vektor). Das Verfahren besteht darin, daß man zuerst den Lückenlängenvektor mit der längsten Lücke erzeugt, beispielsweise indem man den Vektor mit dem kleinsten Hamminggewicht (d.h. der kleinsten Anzahl von Einsen im Vektor) zuerst wählt. Aus der Äquivalenzklasse der vollen Länge, d.h. die ausgewählten Vektoren haben die volle Länge, können die Lückenlängenvektoren erzeugt werden, die für die Spalten in der Matrix verwendet werden. Wenn einmal alle Vektoren mit voller Länge für das kleinste Gewicht benutzt worden sind, wird die Äquivalenzklasse für das nächsthöhere Gewicht zur Erzeugung der Vektoren benutzt, die als weitere Spalten in der Matrix verwendet werden. Dieses Verfahren wird fortgesetzt, bis alle Spalten in der Matrix gefüllt sind. Die Lückenlängenangabe der Äqui-
po 971 040 409881 /08 45
yalenzklasse kann so verschoben werden, daß die kleineren Lücken zuerst erscheinen, um eine möglichst große Anzahl von O-Zeilen in der Matrix zu erhalten, wenn alle Vektoren oder Spalten erzeugt sind.
Die vorliegende Erfindung befaßt sich mit der Herstellung einer Modularstruktur der Codier- und Decodierfunktionen, deren Mechanisierung auf einer bestimmten Paritätsprüfmatrix basiert. Die Paritatsprüfmatrix ist in verschiedene Abschnitte unterteilt, von denen jeder eine zyklische Permutation des anderen ist, d.h., aufeinanderfolgende Abschnitte unterscheiden sich nur durch die Verschiebung der Zeilen, um eine Zeile relativ zum anderen Abschnitt. Die erste Zeile des ersten Abschnittes wird z.B. die zweite Zeile des zweiten Abschnittes und die dritte Zeile des dritten Abschnittes usw. Eine solche Anordnung ergibt die modulare Implementierung des Codes, d.h., dasselbe Bauteil kann für jeden Abschnitt der Paritätsprüfmatrix verwendet werden, indem man einfach die Verbindungen zu den Eingabe/Ausgabestiften verändert. Der in dieser Erfindung verwendete Code hat die folgende Paritätsmatrix H:
[τ |Γι |t2|....|Vi I ij (2.1)
r = Anzahl von Prüf bits
I = r χ r Identitätsmatrix
T = r χ b Erzeugeruntermatrix (= Modul) b = Modulgröße; r χ b = Informationslänge T. = die zyklische i-te Verschiebung von T um i Zeilen ist.
Die Relation von T und T. kann genauer dargestellt werden durch:
PO 971 040 40988 1/08 45
τ =
ν1 v2
vr
v(r-1+2)
v1 v2
v(r-i)
worin die v's die Zeilenvektoren der Einsen und Nullen mit der Länge b sind.
T ist definiert als die Erzeugeruntermatrix; deren Konstruktion kommt der Konstruktion der gesamten H-Matrix gleich, da jeder durch T definierte Abschnitt sich nur durch die zyklische Permutation bezüglich der Zeilen unterscheidet. Die Anzahl von Einsen in einem T-Abschnitt ist gleich der Anzahl von Einsen in jeder Zeile der Η-Matrix. Die Anzahl von Einsen in jeder Zeile der Η-Matrix bestimmt die Anzahl von Stufen, die der Paritätsbaum im Mechanisierungsprozeß haben muß. Somit lautet die erste Bedingung für die Matrix oder einen Abschnitt T, daß er die kleinstmögliche Gesamtzahl von Einsen haben muß. Die anderen bei der Konstruktion der Η-Matrix zu berücksichtigenden Kriterien besagen, daß alle zyklischen Verschiebungen der Spalten des T-Abschnittes in H erscheinen. Somit muß ein Spaltenvektor von T die Bedingung erfüllen von allen r zyklischen Verschiebungen seiner selbst verschieden sein. Ein Vektor wird nur dann als Vektor mit voller Länge betrachtet, wenn er sich von allen seinen zyklischen Verschiebungen unterscheidet; so ist z.B. 1000 eine volle Länge, wogegen 1010 keine volle Länge ist: 1000 * 0100 + 0010 -*■ 0001 ·*■ 1000, bzw. 1010 -»· 0101 ·> 1010 mit nur zwei Verschiebungen. Wenn ein Vektor V1 eine zyklische Verschiebung von V2 ist, dann ist V2 auch eine zyklische Verschiebung von Vl. Die zyklische
PO 971 040
09881/0845
Verschiebungsbeziehung erfüllt also die Bedinungen der Reflexivität und Transitiv!tat einer äquivalenten Relation. Die Matrix H der Gleichung (2.1) ist eine Paritätsprüfmatrix für SEC (Einzelfehlerkorrektur) dann und nur dann, wenn alle Spalten des Abschnittes T zu einer anderen zyklischen Äquivalenzklasse bestimmter voller Länge gehören. Allgemein kann die Paritätsprüfmatrix eines Einzelfehler-Korrekturcodes aufgebaut werden, indem man einfach eine eindeutige r-stellige Spalte aufführt, wobei η die Codelänge und r die Anzahl der Prüfbits sind. Die Spalten der Paritätsprüfmatrix selbst werden jedoch in dieser Erfindung erzeugt, indem man die Spalten gemäß einer Lückenlängennotierung eines Vektors erzeugt. Die Lückenlängennotierung eines Vektors der Länge r mit dem Hamminggewicht w ist ein w-Tupel (a-, a2...a), so, daß a. die i-te Lückenlänge zwischen Einsen im Vektor unter Berücksichtigung der zyklischen Wiederholung bezeichnet. Der
a1a2a3
Vektor (Ptryicini ^a^ 2·Β· ^as Gewicht w=3, eine Länge r=6 und die Lückenlänge a,. =0, a~ = 1 und a„ = 2. Diese Lückenlängen sind die Anzahl von Nullen, die zwischen den Einsen im Vektor stehen. a1 wäre z.B. die Anzahl von Nullen zwischen den beiden ersten Einsen des Vektors, in diesem Falle also 0. Die zweiten Lückenlänge ist die Anzahl von Nullen zwischen den zweiten beiden Einsen im Vektor, nämlich den Einsen in der zweiten und vierten Position. Zwischen diesen beiden Einsen liegt eine Null und ergibt somit eine Lückelänge a2 = 1. Entsprechend beträgt die Lückenlänge oder die Anzahl von Nullen zwischen der dritten 1 und der ersten 1 um das Ende des Vektors herum a3 = 2, weil zwei Nullen vorhanden sind. Mathematisch läßt sich das folgendermaßen ausdrücken:
Σ a. = r-w
Diese Lückenlängenbezeichnung des Vektors charakterisiert den Vektor vollständig bis auf seine r zyklischen Verschiebungen. Alle Spalten von T gehören demzufolge zu einer bestimmten zyk lischen Äquivalenzklasse voller Länge dann und nur dann, wenn
PO 971 040 409881/0845
die Lückenlängenvektoren ebenfalls zu einer bestimmten Äquivalenzklasse voller Länge gehören.
Mit der Lückenlängenbezeichnung kann man durch das folgende Verfahren Vektoren der Η-Matrix erzeugen, die innerhalb einer Äquivalenzklasse voller Länge liegen.
Zuerst wird ein Lücken- oder Längenvektor erzeugt, indem man den Vektor auswählt, der die längste Lücke enthält. Bei dem zur Definition des Lückenlängenvektors benutzten Beispiel (r, w) = (6,3), a1 + a2 + a3 = 6-3 = 3 kann man feststellen, daß 300 die höchste Zahl der zyklischen Äquivalenzklasse voller Länge ist, die benutzt werden kann, übersetzt man das in einen Spaltenvektor für die Η-Matrix, so ergibt sich eine Spalte (100011) mit drei Nullen zwischen der ersten und der zweiten Eins im Vektor, in dem die Einsen in der fünften und sechsten Position keine Null zwischen sich haben. Der nächste Vektor oder die zu wählende Spalte für die Η-Matrix würde aus der Äquivalenzklasse gewählt, die durch 300 bestimmt ist, oder würde die nächstkleinere Zahl in der Reihenfolge sein, also 210, 201, 120, 111, 102, 030, O21, 012 und 003.
Jedesmal, wenn ein Lückenlängenvektor erzeugt wird, wird er als eine Spalte für die Η-Matrix akzeptiert, wenn 1. er die volle Länge hat und 2. alle seine zyklischen Verschiebungen von allen vorher akzeptierten Vektoren verschieden sind. Die Reihenfolge der Annahme spielt keine Rolle aufgrund der Äquivalenzbeziehung. Geht man im oben beschriebenen Beispiel (r, w)=(6,3) vom Vektor mit der längsten Lücke aus, nämlich 300, so sieht man, daß 111 keine volle Länge ist, da der Vektor 101010 lauten würde, der bei Verschiebung 010101 und bei nochmaliger Verschiebung 101010 ergibt, so daß man insgesamt nur 3 und nicht die benötigten 6 Verschiebungen erhält. Er kann also nicht als Vektor mit voller Länge betrachtet werden und wird daher zurückgewiesen. Die nachfolgende Tabelle 1 zeigt alle möglichen zyklischen Äquivalenzklassen mit voller Länge für einige (r,w)'s.
Po 971 040 409881/0845
Tabelle 1
(7,2) (7,3)
400
310
301
220
211
(8,2) (8,3) (8,4)
500 4000
410 3100
401 3010
320 3001
311 2200 302 2110 221 2101
2011
(9,2) (9,3) (9,4)
600 5000
510 4100
501 4010
420 4001
411 3200
402 3110
330 3101
321 3020
312 3011
3002 2210 2201 2120 2111
(10,2) (10,3) (10,4)
700 6000
610 5100
601 5010
520 5001
511 4200
502 4110
430 4020
421 4011
412 4002
403 33OO
331 3210
322 3201
3120
po 971 040 409881/0845
- J8 -
3030 3021 2220 2211 2121
In diesem einfachen Beispiel des SEC, kann das T der Matrix konstruiert werden aus Vektoren von (rr 2), wobei r die Länge des Vektors und 2 das Hamming-Gewicht/ d. h. die Zahl von Einsen im Vektor ist. Der Vektor mit geringstem Gewicht w wird zuerst gewählt und dann die Gewichte schrittweise erhöht, bis alle b Spalten des Abschnittes der Matrix gefüllt sind. Aus dem obigen Beispiel (nachfolgende Matrixtabelle 2) geht hervor, daß die erste Zeile des T für eine automatische Byteparität des Abschnittes der Matrix lauter Einsen enthält. Das hat eine Antivalenzoperation mit allen Bits des Bytes zur Folge. Für SEC/DED, wo eine optimale Mechanisierung erwünscht ist, können ungerade w-Vektoren benutzt werden; w = 3, 5, 7 usw. oder man kann beliebige Vektoren von (r-l,w) benutzen und die letzte Zeile in der Matrix dazu benutzen, das Gewicht jeder Spalte ungerade zu machen wodurch sich eine Informationslänge von (r-b). b ergibt. Jeder Spaltenvektor im T-Abschnitt der Matrix kann nach Wunsch im voraus verschoben werden. In der vorliegenden Betrachtung erfolgt die Verschiebung so, daß die größte Lückenlänge an letzter Position ist.Bei der in Tabelle 2 gezeigten Matrix T sind die Spalten der Matrix beispielsweise bezeichnet mit A-H.
Tabelle 2
b= 8, r = 8, nur SEC
ABCDEFGH
11111111A06 10010110B15 O1O11OO1C24 OOIOIIOOD 005
O O 0 0 0 0 1 1 E 104 Die letzte Lücke
O 0 0 0 0 O O 0 F 014 ist die größte.
0 O 0 0 0 0 O 0 G O23
0 0 0 0 0 0 0 0 H 113
Γ0 971 040
409881/0845
Die Spalten der Matrix werden gemäß der Lückenlängenbezeichnung erzeugt, worin (r, w) gleich (8,2) ist und 2 das kleinste Gewicht bezeichnet. Wir haben also einen 8-Bit-Vektor mit 2 Einsen. In der Tabelle 1 findet man für eine zyklische Äquivalenzklasse voller Länge (8,2) den Wert 60, 51 und 42. Hiermit werden die Spalten A, B und C in Tabelle 2 erzeugt. Die Spalten und die Ltikkenlängen sind dabei schon verschoben, d. h., anstatt 60, 51 und 42 werden 06, 15 und 24 benutzt. Das ist wichtig, da diese Anordnung die größte Anzahl von O-Zeilen liefert und die Anzahl von Eingangs- Ausgangsverbindungen bei der Mechanisierung der Anordnung sehr klein gehalten wird. Um die weiteren Spalten der Matrix zu erzeugen, wird die nächste Äquivalenzklasse (8,3) benutzt und ebenfalls verschoben, um die größte Anzahl von 0 Spalten zu bekommen.
Tabelle 3
b = 8, r »■ 8, SEC-DED
A B C D E F G H A 005
1 1 1 1 1 1 1 1 B 1O4
i-l O 1 O O 1 O r-l C 014
1 1 O O 1 O O 1 D 203
O 1 1 1 O O 1 1 E 113
O O O 1 1 1 O 1 F 023
O O O O O O 1 O G 212
O O O O O O O O H 00003
O O O O O O O O
Für den in Tabelle 3 gezeigten Code für die Einzelfehlerkorrektur und die Doppelfehlererkennung sollte die erste gewählte Äquivalenzklasse ein ungerades Gewicht haben, um den Code innerhalb des Kriteriums der ungeraden Gewichte zu halten, wie es im Stand der Technik festgelegt ist. Aus der Tabelle 1 wird somit (8,3) gewählt. Wieder wird die Spalten- und Lückenlängenbezeichnung umgestellt, um die größte Anzahl von O-Zeilen
PO 971 040 409881/0845
in der Matrix zu erhalten. Die (8,3) Lückenlängennotierungen aus der Tabelle werden zur Erzeugung von A-G benutzt. H erhält man jedoch durch übergang zum nächsten ungeraden Gewicht w, was ist and somit (8,5) ergibt. Wenn in der Tabelle 1 jedoch w
größer als ^ ist, sollte (r, r-w) benutzt und komplementiert
z r
werden. Da w = 5 und größer als ^ ist, benutzen wir (r,r-w)
=(8,3) und das Komplement. Eine Eintragung unter(8,3) aus der Tabelle hat einen Lückenlängenvektor mit der Bezeichnung oder
Komplementiert man diesen Vektor, so werden alle Einsen zu Nullen und alle Nullen zu Einsen und man erhält:
Diese Reihe kann nach oben verschoben werden, um die Spalte mit einer 1 zu beginnen und man erhält:
po 971 040 409881/0845
. 1
Offensichtlich ist dies gleich: 00003, der Luckenlängennotierung der Spalte H in der Matrix.
Die Η-Matrix mit r Prüfbits und einem Byte von b Bits und einer entsprechenden Modulgröße kann die volle Verschiebung der T-Matrix nicht nutzen, wenn die Informationslänge kleiner ist als r-b. Das resultiert in einer verschiedenen Anzahl von Einsen in jeder Zeile der Η-Matrix. Der Code kann z. B. modular sein, ohne daß alle Zeilen des Moduls zyklisch sind. Ein 9 Prüfbit-SEC-Code kann z. B. für 128 Datenbits gemacht sein, indem man die ersten 8 Zeilen des T zyklisch und die letzte Zeile in jedem Modul gleich macht. In demselben Fall kann die Einzelfehlerkorrektur/Doppelfehlererkennung erfolgen mit Hilfe von (8,w), worin w = 2, 3, 4 usw. ist und die letzte Zeile kann in jedem Byte feststehend gemacht werden, um jeder Spalte eine ungerade Parität zu geben. Diese Zeile ist in Fig. 3 mit der Nummer 9 bezeichnet; sie in jedem der Bytes B1-B8 fest. Die Zeilen 1-8 sind zyklisch vertauscht, d.h., jede Zeile verschiebt sich um eine Zeile in jedem Byte so, daß z.B. die erste Zeile in Bl mit lauter Einsen zur zweiten Zeile in B2 wird usw.
Die Kriterien für optimale Codierung und Decodierung sind ähnlich wie im Stand der Technik und man erhält sie dadurch, daß man zuerst die kleineren w-Vektoren wählt und dadurch die Minimalzahl von Einsen in jeder Zeile der Η-Matrix sicherstellt und indem man alle Einsen in einer Zeile von T anordnet, erhält man eine automatische Byte- oder Modulparität. Außerdem wird die Anzahl von Zeilen aus lauter Nullen möglichst groß gemacht, indem
PO 971 040 4 0 988 1/08 A 5
man zuerst die Vektoren mit größeren Lücken wählt und dadurch die Anzahl von notwendigen Eingabe/Ausgabe-Stiften für jeden Modul möglichst klein hält. Wendet man das in den vorhergehenden Abschnitten beschriebene Codeaufbauverfahren an, so erhält man eine Implementierung, die vollständig modular ist, d.h., es wird nur eine Art von Bauteilen benötigt. Bei der Prüfung oder Syndromerzeugung tritt eine minimale Verzögerung auf durch die Minimalzahl von betroffenen Einsen in der Matrix. Ein Minimum von Eingabe/Ausgabe Stiften pro Modul wird erreicht aufgrund der Vektorwahl der Matrix nach Lückenlängennotierung.
Während Fig. 2 das Beispiel eines Code (72,64) zeigt, läßt sich dasselbe Verfahren zur Konstruktion anderer Matrizen verwenden, sei es für den besprochenen Code oder andere Codestrukturen, die damit mechanisiert werden können. Wie bereits gesagt, wird als Grundmodul bei der Konstruktion des Code ein Byte und ein Prüfbit verwendet. Durch Zusammenfassung eines Prüfbits i mit dem zugehörigen Byte i wird die Decodiergeschwindigkeit verbessert und die vollständige Modularität des Systems ermöglicht.
In Fig. 4 ist das Basis- oder Grundmodul einer SEC/ÖED-Matrix (72,64) gezeigt. Das Prüfbit Cl ist am Ende der Zeile Sl dargestellt. Dieser Code oder Modul entspricht dem SEC/DED Code mit einer Länge b=8 und r=8, wie in der obigen Tabelle 3 angegeben. Vergleicht man Fig. 4 mit der in Fig. 2 gezeigten H-Matrix, so zeigt sich, daß der ganze Code der Fig. 2 aus allen möglichen zyklischen Verschiebungen der Zeilen der Grundmodulmatrix der Fig. 4 besteht. Jedes Byte der Matrix der Fig. 2 trägt zu 6 Prüfbits (oder Syndrombits) bei, wodurch sich die Einsparungen an Eingabe/Ausgabe-Stiften ergeben. Basierend auf der Struktur des in Fig. 4 gezeigten Grundmoduls kann ein Hardware-Modul wie es in Fig. 5 gezeigt ist, konstruiert und als wiederholt eingesetzte Einheit für die gesamte Mechanisierung des Code benutzt werden, indem die richtigen Zwischenverbindungen, hergestellt werden wie sie in Verbindung mit Fig. 6 gezeigt sind.
po 971 04° 409 88 1/08
Der in Fig. 5 gezeigte Prüfbit- Generator 2 und der Fehlerdetektor 7 werden anschließend beschrieben. Die beiden Funktionen können mit geringfügigen Änderungen von derselben Einheit wahrgenommen werden. Fig. 5 stellt also sowohl den Prüfbitgenerator 2 als auch den Fehlerdetektor 7 dar. Im einen Fall sind die mit B bezeichneten Punkte die Eingabekontakte und C die Ausgabekontakte; im anderen Fall bewirken B und C die Eingabe, während an Kontakt S das Ausgabesignal erscheint. Der Aufgabe des Prüfbitgenerators besteht in der überwachung der hereinkommenden Informationsbits BO-B63 zur Erzeugung der Prüfbits C1-C8.
Diese überwachung und Erzeugung erfolgt auf Bytebasis wobei alle Bits eines Bytes parallel am Eingang des betreffenden Moduls empfangen werden. Die Information kommt auf der EingangsSammelleitung 1 parallel an. Das erste Byte wird an erste Modul geleitet, das zweite Byte an das zweite Modul usw. Jedes Byte wird also parallel seinem entsprechenden Modul zugeleitet. Die als Bi (0), i (1), Bi (2)... Bi (7) dargestellten parallelen Bits werden an die entsprechenden Anschlüsse 12-19 auf dem i-ten Grundmodul eingegeben. Diese Informationsbiteingaben werden an eine Antivalenzschaltungsgruppe mit der Bezeichnung Antivalenzschaltungen 20-24 geleitet. Die Verbindungen zwischen den Eingangsanschlüssen des Moduls und den Antivalenzschaltungen 20-24 erfolgt entsprechend den Einsen in der in Fig. 4 gezeigten Grundmodulmatrix.
In dem Grundmodul in Fig. 4 ist das Bi (O)-Bit des Bytes eine 1 in der Zeile Sl, S2, S3. Entsprechend wird das Bit Bi (0) als Eingabesignal den Antivalenzschaltungen 20, 21 und 22 zugeleitet. Ähnlich sind für das Bit Bi (1) Einsen in der Reihe Sl, S3 und S4 vorhanden, so daß eine Verbindung von Bi (1) zu den Antivalenzschaltungen 22 und 23 besteht und die Antivalenzschaltung 20 durch die Rückkopplung 25 vom Antivalenzglied 23 versorgt wird.
PO971 04° 409881/0845
Somit ist jedes Bit des Bytes mit den Codegruppen verbunden, die durch die Einsen im Grundmodul bezeichnet sind. Jede Zeile des Grundmoduls stellt ja bekanntlich einen Teil oder Abschnitt der Codegruppe dar. Eine andere Betrachtungsmöglichkeit der Codegruppierung der Antivalenzglieder 20-24 besteht darin, daß jedes Antivalenzglied 20-24 eine Zeile in der Matrix darstellt und die Biteingänge empfängt, die zu dieser Zeile beitragen, d.h., die eine Eins in der betreffenden Bitposition in der Zeile der Matrix haben. Das Antivalenzglied 20 hat z.B. eine Eins-Biteingabe von jedem Eingabebit in dem Byte, das einer Eins-Eingabe in jeder Stelle in der Zeile Sl entspricht. Dementsprechend sind die Eingänge Bi (1), B{2), Bi (3), B(6) und Bi (7) mit dem Antivalenzglied 23 verbunden dargestellt, dessen Ausgang durch die Rückkopplung 25 mit dem Antivalenzglied 20 verbunden ist und denselben Effekt liefert, als wenn sie alle mit dem Antivalenzglied verbunden wären. Das Ausgangssignal des Antivalenzgliedes 20 ist die antivalente Verknüpfung aller Bits in dieser Zeile, und liefert die Parität Pi des i-ten Modul am Ausgabeanschluß 30. Ähnlich stellt das Antivalenzglied 21 die Zeile S2 des Grundmoduls dar und sollte somit einen Eingang von den Bits 0, 2, 5 und 7 haben, entsprechend den Einsen in der Zeile S2. Aus Fig.5 ist zu ersehen, daß das Antivalenzglied 21 Eingänge von Bi (0), Bi (2), Bi (5) und Bi (7) hat. Die Ausgabe vom Antivalenzglied 21 ist die Parität dieses Abschnittes der Codegruppe und wird mit wi (i+1) bezeichnet. Somit ist die Ausgabe eines jeden Antivalenzgliedes 2o-24 die Parität des Abschnittes der zu dem entsprechenden Modul gehörenden Codegruppe. Um das Prüfbit für eine Codegruppe zu erzeugen, muß man als Eingänge zum Modul die Paritäten der Abschnitte derselben Codegruppe von den anderen Modulen haben. Diese Eingaben sind mit den Eingangsanschlüssen 31-35 verbunden dargestellt und bezeichnet mit wi+3 (i) , wi+4 (i) , wi+5 (i) , wi+6 (i) und wi+7 (i) . Diese Eingänge sind mit dem Antivalenzglied 40 verbunden, dessen Ausgang an ein weiteres Antivalenzglied 41 angeschlossen ist. Der andere Eingang zum Antivalenzglied 41 ist das Gesamtparitätsbit P (i), welches vom Ausgang des Antivalenzgliedes 20 über die Verbindung 43
po 971 040 409881/0845
kommt. Somit sind die Eingaben zum Antivalenzglied 41 die Paritäten der anderen Abschnitte der Codegruppe zuzüglich der Parität des Abschnittes derselben zu dem entsprechenden Modul gehörenden Codegruppe. Die Ausgabe des Antivalenzgliedes 41 besteht aus dem Prüfbit C (i), welches am Ausgabeanschluß 45 zur Verfügung gestellt wird. Wie bereits gesagt wird das erzeugte Prüfbit an das Informationsbyte angehängt und mit diesem gespeichert.
Dasselbe Grundmodul kann für den Fehlerdetektor 7 verwendet werden. Der einzige Unterschied besteht darin, daß bei Verwendung des Grundmoduls als Fehlerdetektor dieser die Prüfbitinformation zusammen mit dem Byte empfängt, um das Syndrom S(i) am Ausgang 47 zu errechnen. Aus dem Grundmodul der Fig. 5 ist zu ersehen, daß das Prüfbit C(I) als Eingabe zum Anschluß 45 benutzt wird, wenn der Modul als Fehlerdetektor arbeitet. Dieses Signal C(i) läuft durch das UND-Glied 46 und nimmt an der vom Antivalenzglied 41 zur Erzeugung des Ausgabesyndroms S(i) am Ausgang 47 durchgeführten Antivalenzoperation teil.
Um die Beziehungen zur Ermittlung der Prüfbits und der Syndrombits auszudrücken, bedient man sich folgender Bezeichnungen:
P(D = W1(I) = B1(O) 9 B1(I) Φ B±(2) Φ B±(3) Φ ...Φ Β±(7) (1)
W1 (1+1) = B1(O) Φ B1 (2) Φ Β± (5) Φ B1 (7) (2)
W1 (1+2) = B1(O) Φ B1(I) 9 Β±(4) 9Β±(7) (3)
W1 (1+3) = B1(I) Φ B1 (2) © B1(S) Φ Β±(6) Φ Β±(7) (4)
W1 (1+4) « B1 (3) Φ B1 (4) Φ B1(S) Φ Β±(7) (5)
W1(1+5) = B1 (6) (6)
cd) = W1(D φ W1+3(D φ W1+4U) φ W1+5(D φ W1+6(D φ W1+7(D (7) S(I) = C(i) Φ C(I) wobei C(I) das gespeicherte Prüfbit ist. (8)
Die Gleichung (1) setzt die Parität des i-ten Modul gleich allen antivalentverknüpften Eingabebits des Bytes B1(O)- B1(7). Die Gleichung (2) ist die Teilparität der der i-ten Zeile in der Matrix folgenden Zeile. Die Werte W±(i+2)-W±(i+5) erhält man ge-
409881/0845
nauso. Die Gleichung (7) besagt, daß das Prüfbit für den i-ten Modul durch Antivalenzverknüpfung der Zeilen in den vorhergehenden Abschnitten erreicht wird, die in derselben Codegruppe liegen. Für i = 1 stellt die Gleichung z.B. dar, daß die erste Zeile des ersten Modul sowie die erste Zeile des i+3 Modul, welches das vierte Modul ist, wo eine Eins im Informationsbit 30 steht, teilnehmen. Der 5., 6., 7. und 8. Modul haben alle eine Teilnahme an der ersten Zeile. Die Gleichung (8) besagt, daß das Syndrom durch Antivalenzverknüpfung des erzeugten Prüfbits C(i) mit dem gespeicherten (früher erzeugten) Prüfbit C'(i) entsteht. Die Syndrombits si-S8 geben an, ob eine gerade oder ungerade Parität für die entsprechende Codegruppe aufgetreten ist.
Die einem jeden Datenbyte entsprechenden Moduln sind also gleich; i stellt das i-te Byte und den i-ten Moduln dar. Die inneren Verbindungen auf dem Modul werden bestimmt durch die Gleichungen (I)-(8). Der i-te Modul übernimmt die folgenden Funktionen:
1. Er empfängt das i-te Byte als Eingabe für die Prüfbitberechnung oder das i-te Byte und das i-te Prüfbit als Eingabe für die Syndromberechnungen.
2. Er errechnet den Teilparitätsbeitrag W1(J) aus dem Byte i für das j-te Prüf- oder Syndrombit. J hat die Werte i, i+1, i+2, i+3, i+4, i+5 und i+6 Modulo 8 (siehe Gleichungen 1-6).
3. Er empfängt die Teilparitätsbeiträge, die von den anderen Moduln errechnet sind, nämlich W1+3(D, W1+4(I), wi+5(i), W1+6U), W1+7U), jeweils aus den Moduln
i+3, i+4, i+5, i+6 und i+7.
ΓΟ971Ο4Ο 409881/08.45
4. Er errechnet das Prüfbit C(i) oder das Syndrombit S(i) aus den Teilparitätsbeiträgen nach den Gleichungen (7) und (8). Außerdem enthält der Modul eine Speicherleitung in Verbindung mit UND-Gliedern für Speicher- oder Leseoperationen zur Prüfbit- bzw. Syndrombiterrechnung.
Die Modulverbindungen werden nach der Gleichung (7) bestimmt und sind in Fig. 6 gezeigt. Dort sind 8 identische Moduln in symmetrischer Weise zur Verarbeitung eines 8 Byte großen Wortes verbunden. Die Moduln sind von 0-7 entsprechend den Bytezahlen 0-7 nummeriert. Jeder Modul 0-7 ist mit den anderen so verbunden, daß er die Teilparitätsbeiträge für die Teile der Codegruppe von den anderen Bytes empfangen kann. Der Modul 2 empfängt z.B. als Eingänge W5(2), W6(2), W7(2), WO(2) und Wl (2) von den Moduln 5, 6/ 7, 0 bzw. 1. Entsprechend ist der Modul 2 mit seinen Teilparitätsausgängen verbunden mit den Moduln 3, 4, 5, 6 und 7 um die Teilparitätsbeiträge W2(3), W2(4), W2(5), W2(6) und W2(7) zu übertragen. Jeder Modul empfängt das entsprechende Byte als eine durch B0-B7 bezeichnete Eingabe, die als eine 8 Bit große Eingabe zu federn der Moduln 0-7 dargestellt ist, und liefert eine entsprechende Byteparität, das Prüf- oder Syndrombit und Teilparitäten als Ausgabe. Die Speicherzustandleitung ist an jedes Modul angeschlossen, um die Prüfbit- bzw. die Syndrombitberechnungen zu steuern.
In Fig. 7 ist der FehlerlokaIlsierer 11 gezeigt, der die Syndromsignale S1-S8 überwacht, welche durch ein 1 Bit anzeigen, daß die entsprechende Codegruppe eine ungerade Parität hat. Der Fehlerlokalisierer 11 setzt ein Signal "Bit falsch" BO'-B63' und Cl'-C8', um anzuzeigen, daß das dieser Leitung entsprechende Informations- oder Prüfbit falsch ist und korregiert werden muß. Der Fehlerlokalisierer 11 enthält 72 UND-Glieder A1-A72 entsprechend den 72 Spalten der in Fig. 2 gezeigten Matrix. Das UND-Glied Al beispielsweise empfängt Eingänge von den Lei-
PO 971 040 409 88 1/08 45
tungen Sl, S2 und S3 sowie der Einzelfehlerleitung und gibt ein Signal auf die Leitung BO1. Zusätzliche Eingänge konnten auf den Leitungen sT, sT und S8~. Diese zusätzlichen Eingänge sollen fehlerhaften Betrieb bei Abwesenheit eines Signales verhindern. Die invertierten Signale ST - S~8~ werden durch die Inverter 50-57 geliefert. UND-Glieder mit 2 Eingängen können verwendet werden, es ist also nicht notwendig, UND-Glieder mit mehreren Eingängen vorzusehen, wie sie dargestellt sind. Zusätzliche Stufen von UND/ODER-Gliedern können z. B. vorgesehen sein.
Zusammenfassend sei darauf hingewiesen, daß 64 Informationsbits DO-D63 auf der Sammelleitung 1 empfangen und byteparallel an die entsprechenden Modulen weitergeleitet werden, wo die entsprechenden Prüfbits Cl-C8 vom Prüfbitgenerator 2 erzeugt und dann auf die Sammelleitung 3 gegeben werden. Die Prüfbits werden an die Informationsbits angehängt und als 72 Bit großes Codewort in den Speicher gesetzt oder verarbeitet.Beim Lesen aus dem Speicher über die Sammelleitung überwacht der Fehlerdetektor 7 die 72 Bits der Nachricht und setzt auf die Sammelleitung 8 die Syndromsignale S1-S8, die die durch einen Fehler betroffenen Codegruppen bezeichnen. Der Fehlerlokalisierer 11 erzeugt als Funktion der Syndromsignale und des Einzelfehlersignals ein Signal auf der 72 Bit großen Sammelleitung 12, welches die Lage des Fehlers anzeigt. Der Fehlerkorrigierer 13 invertiert dann das fehlerhafte Bit und setzt ein korrigiertes Codewort auf die Sammelleitungen 14 und
Im einzelnen heißt das folgendes: nimmt man an,daß das Bit DO fehlerhaft aus dem Speicher auf die Sammelleitung 6 gelesen wurde, dann empfängt der Fehlerdetektor 7 dieses Codewort und der veränderte Zustand des Informationsbit DO wird durch die Antivalenzglieder 1,2 und 3 auf dem Modul 1 erkannt. Diese Antivalenzglieder geben dann eine fehlerhafte Byteparität P(i) ab, sowie W^i+1) und W±(i+2),worin i gleich 1 ist. Da P (i) ebenfalls bei der Erzeugung von C(i) und S(i) beteiligt ist, sind auch diese beiden Bits falsch. Da die Teilparitäten W^i+1) , W
po 971 04° 40988 1/084 5
fehlerhaft sind, führen sie einen weiteren Fehler in die Berechnung der nächsten beiden folgenden Moduln ein, an die sie angeschlossen sind. Somit sind S(2) und S(3) falsch. Aus der H-Matrix der Fig. 1 ist zu ersehen, daß S(1), S(2) und S(3) betroffen sind, wenn das Bit DO fehlerhaft ist, da dieses Bit zu diesen 3 Codegruppen beiträgt. Das ODER-Glied 9 in Fig. 1 erkennt einen Fehler und die Anti**alenzschaltung 10 erkennt die ungerade Zahl von Syndromsignalen auf der Sammelleitung 8 als Einzelfehler. Der in Fig. 7 gezeigte Fehlerlokalisierer 11 empfängt Eingangssignale auf den Leitungen S(D, S (2), S (3) und auf der Einzelfehlerleitung, so daß das UND-Glied A1 ein Signal auf die Leitung DO' gibt. Der Fehlerkorrigierer 13 kann 72 Antivalenzschaltungen mit je 2 Eingängen enthalten, die jeweils einen Eingang von der Sammelleitung 6 und einen entsprechenden Eingang von der Sammelleitung 12 empfangen. Der Fehlerkorrigierer invertiert die Positionen DO leitet aber das übrige Codewort auf der Sammelleitung 6 an die Sammelleitungen 14 und 15 weiter.
Als Beispiel für die Erfindung wurde ein SEC/DED-Code verwendet, der im Stand der Technik mit Hilfe von Schaltnetzen und nicht mit der wirtschaftlicheren sequentiellen Anordnung (Schaltwerk) mechanisiert wurde. Der Aufbauprozeß des Code läßt sich am besten mit der Paritätsprüfmatrix beschreiben. Die Matrix ist so aufgebaut, daß die modulare Implementierung des Codes möglich ist, indem man identische Einheiten vorsieht, die im System wie z.B. ein Speicher verteilt werden können. Die Anordnung liefert eine minimale Verzögerung für die Dekodierung und Codierung und schließt die automatische Bestimmung der Modulparität ein. Die Matrix selbst ist so aufgebaut, daß sich eine minimale Anordnung von Eingabe/Ausgabe-Stiften pro Modul ergibt.
PO 971 040
409881/0845

Claims (13)

PATENTANSPRÜCHE
1./ Einrichtung zur Fehlererkennung und Fehlerkorrektur von Binärcodes mit einer Mehrzahl von Informations- und Prüfbits, die in Codeabschnitte (z.B. Bytes) gleicher Länge mit je mindestens einem Prüfbit eingeteilt sind und wobei jedes Informationsbit mindestens einer von mehreren eindeutigen Codegruppen angehört,
gekennzeichnet durch:
a) einen Prüfbitgenerator (2, Fig. 1), bestehend aus
t identischen und untereinander verbundenen Prüfbiterzeugerschaltungen (Module, Fig. 1), wobei jedem Codeabschnitt ein Schaltungsmodul zugeordnet ist, welcher durch logische Verknüpfung der Gesamtparität des Abschnitts mit Teilparitäten der Codegruppe das Prüfbit für den Codeabschnitt erzeugt und an diesen vor der Weiterverarbeitung anfügt;
b) eine Fehlererkennungseinrichtung (7), bestehend aus
identischen und untereinander verbundenen Syndromsignalerzeugern (Module), wobei jedem Codeabschnitt ein Erzeugermodul zugeordnet ist, welcher durch logische
Verknüpfung der Gesamt-Parität mit Teilparitäten der Codegruppe sowie mit dem vom Prüfbiterzeuger errechneten Prüfbit Syndromsignale (S1 bis S8) für jede Codegruppe zur Erkennung aufgetretener Fehler (Paritätsänderungen) erzeugt;
c) eine Einrichtung zur Analyse der Syndromsignale (9,
10, 16), zur Fehlerlokalisation (11) und zur Fehlerkorrektur (13) .
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Moduln des Prüfbitgenerators und der Fehlererkennungseinrichtung identisch aufgebaut sind.
3. Einrichtung nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß die Moduln folgenden Aufbau aufweisen:
o4° 409881/0845
a) erste Schaltmittel zur logischen Verknüpfung der Eingangssignale (B1, entsprechend den Informationsbits eines Ccdeabschnittes i), bestehend aus mehreren Schaltvorrichtungen (20...24), die jeweils den Teilcodegruppen des Abschnitts zugeordnet sind (z.B. 22 der Teilcodegruppe Β±(0), B1(I), B1M), B1(T)) und weiterhin bestehend aus Ausgangsleitungen zur Abgabe des Signals für die Gesamtparität (Pi) des Abschnitts und der Teilparitäten (W±(i+1));
b) zweite Schaltmittel (40) zur logischen Verknüpfung der von ausgewählten übrigen Moduln der Einrichtung an die Eingangsklemmen (31 bis 35) gelieferten Teilparitäten (W1+3 J1j,...);
c) dritte Schaltmittel (41) zur Verknüpfung der Gesamtparität (P(i)) des Abschnitts mit dem Ausgangssignal der zweiten Schaltmittel (40) zur Erzeugung des Prüfbits (C(I)) des Abschnitts bzw. im Fall der Fehlerprüfeinrichtung zur Erzeugung des Syndromsignals (S(i)) unter Hinzuziehung des gespeicherten (von dem Prüfbiterzeuger errechneten) Prüfbits (C(i)) unter Steuerung von UND-Gliedern (46).
4. Einrichtung nach den Ansprüchen 1 bis 3, dadurch gekennzeichnet, daß die ersten, zweiten und dritten Schaltmittel jedes Modules aus Antivalenzschaltungen (exklusives ODER) bestehen.
5. Einrichtung nach einem oder mehreren der Ansprüche 1 bis
4, dadurch gekennzeichnet, daß die Einzelmodule des Prüfbitgenerators (2) und der Fehlererkennungseinrichtung (7) an verschiedenen Stellen des Systems (z.B. im Speicher) verteilt eingebaut sind.
6. Einrichtung nach einem oder mehreren der Ansprüche 1 bis
5, dadurch gekennzeichnet, daß die Lokalisierschaltung (11, Fig. 1) für Einzelfehler aus UND-Gliedern (1, 2...,
PO 971 040 409881/0845
(Pig. 7) besteht, die jeweils einem Bit des Binärcodes zugeordnet sind und deren Eingänge mit der Leitung '•Einzelfehler·1 (Fig. 1) sowie mit einzelnen Syndromleitungen (Si) entsprechend dem Auftreten der Bits in den einzelnen Codegruppen verbunden sind.
7. Verfahren zum Aufbau der modularen Einrichtung nach Anspruch 1 bis 6 und zur Minimalisierung der Verbindungen zwischen und in den Moduln,
gekennzeichnet durch:
a) Hinzuziehung einer Codiermatrix (Η-Matrix, Fig. 2), welche aus je einer Untermatrix (T-Matrix) für jeden Codeabschnitt besteht und durch die Anordnung der binären Einsen die Leitungeverbindungen innerhalb eines Moduls anzeigt, insbesondere diejenigen zwischen dem Eingangsbit (B.) und den Antivalenzschaltungen (20 bis 24), welche den Teilcodegruppen für das betreffende Bit in dem Abschnitt zugeordnet sind;
b) spaltenweiser Aufbau einer Untermatrix mit einer geringstmöglichen Anzahl von Einsen, einer maximalen Anzahl von Zeilen mit lauter Nullen und einer einzigen Zeile mit lauter Einsen, derart, daß die einzelnen Spaltenvektoren jeweils einer Äquivalenzklasse voller Länge angehören;
c) Aufbau der Gesamtmatrix durch Vervielfachung der erstellten Untermatrix unter jeweils zyklischer Vertauschung der Zeilen beim Übergang von einer Untermatrix zur benachbarten.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß zum Aufbau der Untermatrix (T-Matrix) folgende Schritte durchgeführt werden:
a) Auswahl eines aus r Elementen (r = Zahl der Prüfbits) bestehenden Vektors (r, w) voller Länge, der das geringste Hamming-Gewicht w und die größte Lückenlänge aufweist;
po 971 04° 409881/0845
b) Bestimmung der Luckenlängennotationen für diesen Vektor und Gruppierung der Lückenlängencodes nach ihrer Größe;
c) Bestimmung derjenigen Vektoren aus den ermittelten Lückenlängencodes, welche zur Äquivalensklasse voller Länge gehören;
d) Einbau dieser Vektoren als Spaltenvektoren in die T-Matrix, sofern zyklische Vertauschungen dieser Vektoren noch nicht in der Untermatrix enthalten sind;
e) nach Berücksichtigung aller Vektoren mit kleinstem Hamminggewicht Übergang zu den Vektoren mit nächstkleineren Hamminggewichten und Wiederholung der Verfahrensschritte (b bis d) bis zum vollständigen Aufbau der Untermatrix.
9. Verfahren nach Anspruch 7 und 8, dadurch gekennzeichnet, daß die ermittelten Spaltenvektoren der Untermatrix vor ihrem Einbau so umgeordnet werden, daß sich in der Matrix eine Maximalzahl von 0-Reihen ergibt, um die Zahl der Eingabe/Ausgabeverbindungen zu minimalisieren.
10. Verfahren nach den Ansprüchen 7 bis 9, dadurch gekennzeichnet, daß in der Untermatrix eine aus lauter Einsen bestehende Zeile zur Bestimmung der Gesamtparität erzeugt wird und daß im Anschluß an diese Zeile ein 1-Bit eingesetzt wird.
11. Verfahren nach den Ansprüchen 7 bis 10, dadurch gekennzeichnet, daß im Fall w>r/2 anstelle des Vektors £r, w} zum Aufbau der Unterraatrix der Vektor (r, r-w) benutzt und der ermittelte Spaltenvektor vor Einbau in die Untermatrix komplementiert wird.
12« Verfahren nach den Ansprüchen 7 bis 10, dadurch gekennzeichnet, daß zur Erzeugung der Codiermatrix bei der Wiederholung der üntermatrij: (T) nur der Teil (r-ti
&©ll@ss s%fklis€h v@rtaus©life wird und die letzte Zai:
97 ί 040 409881/084 S
in allen üntennatrizen gleich und derart gewählt wird, daß sich in jeder Spalte der Matrix eine bestimmte (gerade oder ungerade) Parität einstellt.
13. Einrichtung nach den Ansprüchen 1 bis 6, aufgebaut nach dem Verfahren der Ansprüche 7 bis 11, zur Behebung von Einzelfehlern und zur Erkennung von Doppelfehlern in einem (72, 64)-Code, bestehend aus acht Gruppen zu je acht Bits und einem Prüfbit, dadurch gekennzeichnet, daß die Leitungsverbindungen auf dem i-ten Modul und die Verbindungen unter den acht identischen Moduln durch folgende Gleichungen (entsprechend der Codiermatrix Fig. 2) dargestellt werden:
P(i) = W±(i) - B1(O) Φ B±(1) Φ Β±(2) Φ B±(3) Φ...·
- B1(O) Φ B1(Z) Φ B1(S) Φ
W±(i+2) = B1(O) Φ B1(D Φ B1 (4) Φ B1 (7) W1(i+3) = B1(D Φ B1(D · B1O) Φ B1 (6) Φ B1 (7) W±(i+4) - B1O) Φ B1U) Φ B1(S) Φ Β±(7) W±(i+5) = B1(S)
C(I)-W1(D φ W1+3(D φ W1+4(D φ W1+5(D φ wi+6(i)twi+7(i) S(D - C(D Φ C (D
worin P(D die Parität der i-ten Bytes bedeuten, B1(J) das j-te Bit auf dem i-ten Byte bzw. Modul, W1J1+^ die k-te Teilparität auf dem i-ten Modul, C(D das Prüfbit und S(D das Syndrombit auf dem i-ten Modul und C1(i) das gespeicherte (früher errechnete) Prüfbit.
409881/0845
Leerseite
DE19742425823 1973-05-29 1974-05-28 Einrichtung zur fehlererkennung und fehlerkorrektur Ceased DE2425823A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US00364480A US3825893A (en) 1973-05-29 1973-05-29 Modular distributed error detection and correction apparatus and method

Publications (1)

Publication Number Publication Date
DE2425823A1 true DE2425823A1 (de) 1975-01-02

Family

ID=23434707

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19742425823 Ceased DE2425823A1 (de) 1973-05-29 1974-05-28 Einrichtung zur fehlererkennung und fehlerkorrektur

Country Status (7)

Country Link
US (1) US3825893A (de)
JP (1) JPS5320367B2 (de)
CA (1) CA1014665A (de)
DE (1) DE2425823A1 (de)
FR (1) FR2325105A1 (de)
GB (1) GB1432535A (de)
IT (1) IT1014599B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2838493A1 (de) * 1977-12-23 1979-06-28 Fujitsu Ltd Fehlerkorrektur- und fehlerfeststellsystem

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4005405A (en) * 1975-05-07 1977-01-25 Data General Corporation Error detection and correction in data processing systems
JPS5381036A (en) * 1976-12-27 1978-07-18 Hitachi Ltd Error correction-detection system
DE2758952C2 (de) * 1977-12-30 1979-03-29 Siemens Ag, 1000 Berlin Und 8000 Muenchen Schaltungsanordnung zum Codieren oder Decodieren von Blnärinformationen
US4166211A (en) * 1978-04-03 1979-08-28 Burroughs Corporation Error control system for named data
US4185269A (en) * 1978-06-30 1980-01-22 International Business Machines Corporation Error correcting system for serial by byte data
US4216541A (en) * 1978-10-05 1980-08-05 Intel Magnetics Inc. Error repairing method and apparatus for bubble memories
US4241446A (en) * 1978-10-16 1980-12-23 Honeywell Information Systems Inc. Apparatus for performing single error correction and double error detection
US4244049A (en) * 1979-02-02 1981-01-06 Burroughs Corporation Method and apparatus for enhancing I/O transfers in a named data processing system
JPS55134467A (en) * 1979-04-06 1980-10-20 Nec Corp Magnetic disc device
US4384353A (en) * 1981-02-19 1983-05-17 Fairchild Camera And Instrument Corp. Method and means for internal error check in a digital memory
US4404676A (en) * 1981-03-30 1983-09-13 Pioneer Electric Corporation Partitioning method and apparatus using data-dependent boundary-marking code words
DE3122381A1 (de) * 1981-06-05 1982-12-23 Ibm Deutschland Gmbh, 7000 Stuttgart Verfahren und einrichtung zur erzeugung von pruefbits zur sicherung eines datenwortes
US4455655A (en) * 1981-09-28 1984-06-19 Hewlett-Packard Company Real time fault tolerant error correction mechanism
US4965825A (en) 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
US7831204B1 (en) 1981-11-03 2010-11-09 Personalized Media Communications, Llc Signal processing apparatus and methods
USRE47642E1 (en) 1981-11-03 2019-10-08 Personalized Media Communications LLC Signal processing apparatus and methods
EP0097159B1 (de) * 1981-12-30 1989-03-15 International Business Machines Corporation Zwei bits pro zeichen sec/ded-kode
US4523314A (en) * 1983-02-07 1985-06-11 Sperry Corporation Read error occurrence detector for error checking and correcting system
US4519079A (en) * 1983-02-17 1985-05-21 The United States Of America As Represented By The Secretary Of The Army Error correction method and apparatus
US4608456A (en) * 1983-05-27 1986-08-26 M/A-Com Linkabit, Inc. Digital audio scrambling system with error conditioning
US4649540A (en) * 1984-12-26 1987-03-10 Thomson Components-Mostek Corp. Error-correcting circuit having a reduced syndrome word
US4852100A (en) * 1986-10-17 1989-07-25 Amdahl Corporation Error detection and correction scheme for main storage unit
US4868829A (en) * 1987-09-29 1989-09-19 Hewlett-Packard Company Apparatus useful for correction of single bit errors in the transmission of data
US5267241A (en) * 1990-04-04 1993-11-30 Avasem Corporation Error correction code dynamic range control system
GB9213818D0 (en) * 1992-06-30 1992-08-12 Inmos Ltd Digital signal comparison circuitry
US6367046B1 (en) * 1992-09-23 2002-04-02 International Business Machines Corporation Multi-bit error correction system
US5539754A (en) * 1992-10-05 1996-07-23 Hewlett-Packard Company Method and circuitry for generating syndrome bits within an error correction and detection circuit
US5856987A (en) * 1993-12-30 1999-01-05 Intel Corporation Encoder and decoder for an SEC-DED-S4ED rotational code
DE69526279T2 (de) * 1994-02-22 2002-10-02 Siemens Ag Flexible Fehlerkorrekturcode/Paritätsbit-Architektur
US5805615A (en) * 1996-08-29 1998-09-08 International Business Machines Corporation Method and apparatus for encoding certain double-error correcting and triple-error detecting codes
US5754562A (en) * 1996-08-29 1998-05-19 International Business Machines Corporation Method and apparatus for encoding certain double-error correcting and triple-error detecting codes
US6003144A (en) * 1997-06-30 1999-12-14 Compaq Computer Corporation Error detection and correction
US6219817B1 (en) 1998-04-20 2001-04-17 Intel Corporation Error correction and detection for faults on time multiplexed data lines
US6584526B1 (en) * 2000-09-21 2003-06-24 Intel Corporation Inserting bus inversion scheme in bus path without increased access latency
JP4413091B2 (ja) * 2004-06-29 2010-02-10 株式会社ルネサステクノロジ 半導体装置
US7962837B2 (en) * 2007-09-13 2011-06-14 United Memories, Inc. Technique for reducing parity bit-widths for check bit and syndrome generation for data blocks through the use of additional check bits to increase the number of minimum weighted codes in the hamming code H-matrix
US8069392B1 (en) 2007-10-16 2011-11-29 Integrated Device Technology, Inc. Error correction code system and method
CN111858135B (zh) * 2020-06-17 2023-12-19 百富计算机技术(深圳)有限公司 数据存储、校验方法、装置、终端设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3648239A (en) * 1970-06-30 1972-03-07 Ibm System for translating to and from single error correction-double error detection hamming code and byte parity code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2838493A1 (de) * 1977-12-23 1979-06-28 Fujitsu Ltd Fehlerkorrektur- und fehlerfeststellsystem

Also Published As

Publication number Publication date
JPS5011742A (de) 1975-02-06
GB1432535A (en) 1976-04-22
US3825893A (en) 1974-07-23
CA1014665A (en) 1977-07-26
FR2325105A1 (fr) 1977-04-15
JPS5320367B2 (de) 1978-06-26
FR2325105B1 (de) 1979-02-16
IT1014599B (it) 1977-04-30

Similar Documents

Publication Publication Date Title
DE2425823A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE2260850A1 (de) Fehlerkorrektursystem
DE3125048C2 (de)
DE2916710C2 (de)
DE2456709C2 (de) Schaltungsanordnung zur Fehlererkennung und -korrektur
DE3638632A1 (de) Halbleiterspeicher
DE3209679C2 (de)
DE3603926A1 (de) Halbleiter-speicherelement
DE2622184A1 (de) Fehlerkorrekturverfahren
EP0219917B1 (de) Vermittlungsanlage mit Fehlerkorrektur
DE4220196C2 (de) Halbleiterspeichervorrichtung und Verfahren zum Korrigieren eines Datenfehlers in einer Halbleiterspeichervorrichtung entsprechend einer vorbestimmten Hamming-Matrix
DE2916619A1 (de) System zum uebertragen binaerer daten ueber eine anzahl von kanaelen
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
EP0325318B1 (de) Vermittlungsanlage
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
DE2320354C2 (de) Schaltungsanordnung zur Erkennung und Korrektur von Fehlern in Bitgruppen
DE2047868A1 (de) Schaltung zur Korrektur von Einzel fehlern in den Wortern eines zyklischen (n, k) Codes
DE102019113970B4 (de) Erkennung von adressfehlern
DE69907622T2 (de) Verfahren zur Fehlerkorrektur in einem in einer Mehrpegelspeicherzelle gespeicherten Binärwort, mit einer Minimumanzahl von Korrekturbits
DE2524129C3 (de) Zeitsteuereinheit für die Steuerung logischer Schaltungen
DE3716594C2 (de) Schaltungsanordnung für Fernmeldeanlagen, insbesondere Fernsprechvermittlungsanlagen, mit Speichereinrichtungen, in denen gespeicherte Informationsportionen auf ihre Richtigkeit überprüft werden
DE3134831A1 (de) System zur uebertragung digitaler informationssignale
DE2742881C2 (de)
EP0294678B1 (de) Sicherungseinrichtung zum Absichern von Daten in Speichereinheiten einer Datenverarbeitungsanlage unter Verwendung eines Fehlererkennungs- und Fehlerkorrekturcodes

Legal Events

Date Code Title Description
OD Request for examination
8131 Rejection