DE2425823A1 - Einrichtung zur fehlererkennung und fehlerkorrektur - Google Patents
Einrichtung zur fehlererkennung und fehlerkorrekturInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
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
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.
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.
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:
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)
(7,2) (7,3)
400
310
301
301
220
211
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
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
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)
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:
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;
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) .
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
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)
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)
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 |
USRE47642E1 (en) | 1981-11-03 | 2019-10-08 | Personalized Media Communications LLC | Signal processing apparatus and methods |
US7831204B1 (en) | 1981-11-03 | 2010-11-09 | 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 |
ATE216096T1 (de) * | 1994-02-22 | 2002-04-15 | 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)
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 |
-
1973
- 1973-05-29 US US00364480A patent/US3825893A/en not_active Expired - Lifetime
-
1974
- 1974-04-10 FR FR7413430A patent/FR2325105A1/fr active Granted
- 1974-04-10 JP JP4006674A patent/JPS5320367B2/ja not_active Expired
- 1974-04-17 IT IT21506/74A patent/IT1014599B/it active
- 1974-04-18 GB GB1697174A patent/GB1432535A/en not_active Expired
- 1974-04-24 CA CA198,452A patent/CA1014665A/en not_active Expired
- 1974-05-28 DE DE19742425823 patent/DE2425823A1/de not_active Ceased
Cited By (1)
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 |
---|---|
US3825893A (en) | 1974-07-23 |
GB1432535A (en) | 1976-04-22 |
JPS5011742A (de) | 1975-02-06 |
IT1014599B (it) | 1977-04-30 |
CA1014665A (en) | 1977-07-26 |
FR2325105B1 (de) | 1979-02-16 |
FR2325105A1 (fr) | 1977-04-15 |
JPS5320367B2 (de) | 1978-06-26 |
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) | ||
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 | |
DE3878787T2 (de) | Halbleiterspeicher mit einer mitintegrierten fehlerkorrekturanordnung und integrierte schaltung mit einem derartigen halbleiterspeicher. | |
DE69317766T2 (de) | Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc) | |
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 | |
DE3853708T2 (de) | Gerät zur Korrektur von einfachen Bitfehlern und zur Erkennung von doppelten Bitfehlern bei Datenübertragung. | |
DE2454745A1 (de) | Binaerzaehler mit fehlererkennung und korrektur voruebergehender fehler | |
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 | |
DE2742881C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OD | Request for examination | ||
8131 | Rejection |