DE2357004C3 - Verfahren und Einrichtung zur Fehlerkorrektur für Daten - Google Patents
Verfahren und Einrichtung zur Fehlerkorrektur für DatenInfo
- Publication number
- DE2357004C3 DE2357004C3 DE2357004A DE2357004A DE2357004C3 DE 2357004 C3 DE2357004 C3 DE 2357004C3 DE 2357004 A DE2357004 A DE 2357004A DE 2357004 A DE2357004 A DE 2357004A DE 2357004 C3 DE2357004 C3 DE 2357004C3
- Authority
- DE
- Germany
- Prior art keywords
- error
- signals
- byte
- track
- bytes
- 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.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
Description
Die Erfindung betrifft ein Verfahren zur Fehlerkorrektur für Daten, die als /i-stelligc Datenbytes vorliegen
und in η Kanälen gespeichert oder übertragen werden, sowie eine Einrichtung zur Durchführung des Verfahrens.
In Datenverarbeitungssystemen werden die Daten zum Zwecke der Fehlerentdeckung und Fehlerkorrektur durch Codierung so mit redundanten Anteilen, also
zusätzlichen Bits, versehen, daß aus empfangenen Nachrichten oder Datenblöcken durch Decodierung die
ursprüngliche Information mit vertretbarem Aufwand wiedergewonnen werden kann, selbst wenn bei der
Übertragung oder sonstigen Behandlung der Daten mehrere Fehler aufgetreten sind.
Einrichtungen, die mit Blöcken paralleler Bytes arbeiten, sind bekannt und werden in Datenverarbei
tungsanlagen häufig benutzt, besonders bei Geräten mit mehrspuriger Datenaufzeichnung. In der deutschen
Offenlegungsschrift 21 06 314 ist eine Fehlerkorrekturanordnung mit Codierer und Decodierer beschrieben,
der zu jedem Block von k Bytes mit je b Bits zwei Früfbytes, die auch je b Bits haben, durch sequentielle
Auswertung der Datenbytes gebildet werden. Hiermit ist es möglich, beliebig viele Fehler in einem, jedoch
nicht in mehreren Bytes zu korrigieren.
In der DE-OS 2162 833 ist eine verbesserte
Anordnung beschrieben, die mit einer gleichartigen Codierung arbeitet, jedoch größere Korrekturfähigkeiten hat durch Verwendung von Hinweissignalen, die
fehlerhafte Spuren anzeigen. Auf diese Weise ist eine Fehlerkorrektur an beliebig vielen Bits von je zwei
Bytes eines Blocks möglich.
In diesen Anordnungen werden zwei zusätzliche Kanäle bzw. Spuren für die Prüfzeichen benötigt Bei
der gebräuchlichen Anzahl von acht Datenbits pro Byte wären also zehn Spuren nötig, wobei jedoch gebräuchliche Magnetbänder nur neun Spuren aufweisen.
Da die bekannten Fehlerkorrektureinrichtungen zur Korrektur von Mehrfachfehlern davon ausgehen, daß
Fehlerbündel längs einer Spur auftreten, sind sie vielfach nur für eine bestimmte Leserichtung geeignet
oder erfordern eine extensive Zwischenspeicherung mit Invertierung der Reihenfolge der gelesenen Daten.
Der vorliegenden Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren und eine Anordnung zur
Fehlerkorrektur anzugeben, die bei Verwendung von nur einer zusätzlichen Spur zur Aufzeichnung von
Prüfbits die Korrektur von Fehlern in zwei Kanälen zu ermöglichen und ein Lesen des Aufzeichnungsträgers in
beiden Bewegungsrichtungen gestatten.
Das erfindungsgemäße Verfahren ist in Anspruch 1 gekennzeichnet
Eine Einrichtung zur Durchfühmng dieses Verfahrens
ist gekennzeichnet durch
a) eine erste Syndromschaltung zur Erzeugung eines ersten Syndroms aufgrund der sequentiell eingegebenen Datenbytes und dem IMifbyte eines Codeblocks;
b) einen Fehlermustergenerator mit hingängen zur Aufnahme von Signalen aus der ersten Syndromschaltung;
c) einen Pufferspeicher zur Aufnahme aller Bytes eines Codeblocks;
d) eine Fehlerkorrekturschaltung mit Eingängen zur Aufnahme von Fehlermustersignalen, von Signalen,
die fehlerbehaftete Kanäle anzeigen, und der den Kariäien in einem Codeblock entsprechenden
Signalfolgen aus dem Pufferspeicher, und mit Ausgängen zur Abgabe von den empfangenen
Signalfolgen entsprechenden korrigierten Signalfolgen.
Die Erfindung hat den Vorteil, daß die Anzahl der zusätzlichen Prüfspuren auf eine beschränkt werden
kann und trotzdem die Korrektur von Fehlern in zwei Kanälen ermöglicht wird. Hierdurch kann trotz
Verwendung eines Standard-Magnetbandes mit neun Spuren eine Mehrspur-Fehlerkorrektur erfolgen. Wird
überhaupt keine zusätzliche Prüfspur verwendet, verbleiben infolge des Prüfbytes noch ausreichend
Korrekturmöglichkeiten, die z. B. die Korrektur einer
einzelnen fehlerhaften Spur gestatten.
Die orthogonal-symmetrischen Beziehungen bei der Erzeugung des Prüfbits lassen außerdem ein Lesen der
Spuren in beiden Bewegungsrichtungen zu.
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher
beschrieben. Es zeigt
F i g. 1 schematisch acht Datenspuren oder Kanäle und eine Paritätsspur auf einem Aufzeichnungsband,
Fig.2 schematisch einen Codeblock mit sieben Datenbytes und einem Prüfbyte quer zur Spurrichtung
sowie mit Paritätsprüfbits für alle Bytes in einer zusätzlichen Spur, mit Darstellung der Orthogonalsymmetrie gemäß Erfindung,
F i g. 3 schematisch die Lage der Datenbytes und Prüfbytes auf einem Neunspur-Band,
F i g. 4 die Paritätsprüfmatrix Hfür die Codierung von
Daten quer zu den Spuren,
Fig.5 schematisch die Lage von Signalfolgen bzw. Bitfolgen in Spurrichtung, bei blockweiser Codierung
und Aufzeichnung auf einem Neunspur-Band,
F i g. 6 die Paritätsprüfmatrix H für die Decodierung und Fehlerkorrektur in Spur-Längsrichtung,
F i g. 8 schematisch den Schieberegistermechanismus für die Codierung, d. h. Erzeugung der Prüfbytes,
F i g. 9 schematisch den Byteparitätsgenerator, der in F i g. 7 in Blockform gezeigt ist,
Fig. 10 ein Blockdiagramm der Einrichtungen zur Decodierung und Fehlerkorrektur,
F i g. 11 schematisch das Rückkopplungsschieberegister für die Decodierung,
Fig. 11a schematisch den F-Multiplizierer der
F i g. 11 und die die verschiedenen Verbindungen des Multiplizierers angebende P-Matrix,
Fig. 12 schematisch das Schieberegister SRi für die
Decodierung,
Fig. 13 Einzelheiten des in Fig. 10 gezeigten
^-Anzeigers,
F i g. 14 die relative Lage der F i g. 14a, 14b und 14c
zueinander, die den Fehlerspur-Parametergenerator aus
Fig. 10 darstellen,
Fig. 14a Einzelheiten der Erzeugung der /-Zeigersignale,
Fig. 14b schematisch die Erzeugung einer Binärdarstellung der Spurnummer /aus den /-Zeigern,
F i g. 14c Einzelheiten der Erzeugung der Binärsignale
/-/= 1,2,3USW.,
Fig. 10,
Fig. 15a schematisch den M3-Multiplizierer und die
die Verbindungen des Multiplizierers angebende Mj-Matrix,
Fig. 16 schematisch den in Blockform in Fig. 10
gezeigten Ringzähler,
Fig. 17 schematisch den in Blockform in Fig. 10
gezeigten Codefehler-Zeigergenerator,
Fig. 18 schematisch die in Fig. 10 gezeigte Fehler
korrekturschaltung 42.
Vor Beschreibung von Grundlagen und Einzelheiten der Erfindung seien noch einige Bemerkungen zu
verwendeten Begriffen und Zeichen gemacht.
Unter einem »Codeblock« ist eine Gruppe von
Datenbits und zugehörigen Prüfbits zu verstehen, die
bezüglich der Fehlerkorrektur eine Einheit bilden. Dies ist nicht dasselbe wie ein Aufzeichnungsblock, der in
einem Zuge aufgezeichnet oder gelesen wird und durch
Lücken begrenzt ist Codeblöcke können ohne Zwi
schenräume aneinandergereiht werden, und ein Auf
zeichnungsblock kann eine große Anzahl von Codeblökken enthalten. Wo kein Mißverständnis möglich ist, wird
im folgenden nur »Block« statt »Codeblock« verwendet. »Orthogonalsymmetrie« bezeichnet eine Eigenschaft
in den Beziehungen zwischen Prüfbit und zugehörigen Datenbits in einem Codeblock, die einen Wechsel der
Bearbeitung und Auswertung von byteorientierter Form (Bitgruppen quer zur Spurrichtung) zu signalfolgenorientierter Form (Bitgruppen in Spurrichtung)
jo aufgrund einfacher Transformationen erlaubt Dies
erlaubt Syndromersteuung auf Bytebasis und daraus abgeleitete Fehlerkorrektur auf Spurbasis.
Die Bezeichnung »Zeiger« wird für Binärsignaie verwendet, die den einzelnen Spuren zugeordnet sind
und die, wenn sie den Binärwert 1 haben, anzeigen, daß die betreffende Spur wegen eines schlechten Signals
fehlerverdächtig ist (Signalqualitätszeiger) oder daß für die betreffende Spur aufgrund der Decodierung ein
Fehler festgestellt wurde (Codefehler-Zeiger).
Für die Addition modulo 2, also für die Antivalenzverknüpfung, ist in Text und Zeichnungen φ verwendet.
Zwar gibt es ein Normblatt in dem das Zeichen ^^vorgeschlagen ist, doch gibt es bereits einen
Neuentwurf, bei dem der Antivalenz ein anderes
Zeichen zugeordnet ist Deshalb wird hier wegen der
einfacheren Schreibbarkeit das alte Zeichen ® verwendet
Im Betrieb wird einem Codierer des Systems Information in Parallelform zugeführt Im Codierer
werden Prüfbits und Paritätsbits für bestimmte, als Bytes bekannte Informationseinheiten erzeugt Diese
Paritätsbits und Prüfbits werden der Information so
hinzugefügt, daß eine Fehlerkorrektur möglich wird.
Das hier beschriebene Verfahren ermöglicht wegen der Orthogonalsymmetrie, die später noch näher erläutert
wird, einerseits eine Erzeugung von Prüfbits und Syndromen aufgrund von Datenbits, die in Querrichtung
μ gruppiert sind, und andererseits eine Benutzung von
Korrektursignalen, die daraus abgeleitet sind, zur
Korrektur von Datenbits, die in Längsrichtung angeordnet sind. Es erlaubt überdies auch eine Fehlerkorrektur
beim Rückwärtslesen.
Gemäß Darstellung in Fig. 1 werden üblicherweise binäre Daten auf >/2-ZoII-Bändern in neun Spuren
aufgezeichnet Eine der Sporen (P bzw. 8) ist für die Aufzeichnung der Bitparität der anderen acht Spuren
vorgesehen, d. h. ein Paritätsbit pro 8-Bit-Byte. Dieses Paritätsbit wird auch als »Querprüfbit«, »VRC-Bit« oder
»Byteparitätsbit« bezeichnet. Jedes aus acht Informationsbits und dem Paritätsbit bestehende Byte wird auf
den neun Spuren parallel aufgezeichnet (1 Bit je Spur), und wird auch wieder als ganzes Byte parallel gelesen,
wie z. B. beschrieben in DE-AS 11 25 698. Dieses
Datenformat entwickelte man beim jahrelangen Gebrauch von Magnetbändern. Beim sogenannten CRC-System
(zyklische Redundanzprüfung), das oben schon [0
erwähnt wurde, wird nach Feststellung eines Fehlers mit Hilfe des CRC-Zeichens die fehlerhafte Spur ermittelt,
so daß die Fehlerkorrektur in je einer, aber auch nur in einer Spur pro Datenblock möglich ist. Die vorliegende
Erfindung erlaubt eine Fehlerkorrektur in jeweils zwei υ Spuren. Die Zahl der gleichzeitig korrigierbaren Spuren
läßt sich durch bestimmte Maßnahmen sogar noch weiter erhöhen.
Beim Entwurf neuer Produkte ist die Verträglichkeit mit den bestehenden Normen einer der Hauptgesichtspunkte,
damit die auf verschiedenen Geräten aufgezeichneten Bänder frei ausgetauscht werden können.
Die Bitdichte in der Bewegungsrichtung des Bandes ist wesentlich höher als die in Querrichtung des Bandes.
Weil man beim Lesen aufgezeichneter Signale meistens mit Selbst-Taktierung arbeitet, folgen bei Auftreten
eines einzelnen Fehlers dann meist weitere Fehler in der gleichen Spur, was man als Fehlerbündel bezeichnet
Solche Fehler sind meist durch Defekte im magnetischen Aufzeichnungsmedium oder durch ein Abheben
des Bandes vom Magnetkopf bedingt, und bewirken einen Verlust der Synchronisation oder der Gleichlaufinformation
in den Leseschaltungen. Bei den Spuren, in denen Fehler auftreten, tritt oft ein Signalverlust im
Leseverstärker auf oder eine Phasenänderung zwischen Taktsignal und gelesenem Signal. Mit Hilfe der
Erfindung können auf diese Weise entstandene Fehler gleichzeitig in mehreren Spuren korrigiert werden.
Im beschriebenen System ist für die Aufzeichnung bzw. Übertragung eine räumliche oder zeitliche
Anordnung der Datenbits einschließlich der Prüfzeichen im Rechteckformat vorgesehen, wobei die Prüfzeichen
an zwei zueinander senkrechten Seiten des Rechtecks auftreten. Dieses Anordnungsformat ist in Fig.2
gezeigt Die Bytevektoren sind mit C (Prüfbyte) und B\ bis Bi (Datenbytes) bezeichnet Die Spurvektoren sind
mit Zt, bis Zj und P bezeichnet Die Bits innerhalb des
stark ausgezogenen Quadrats (C bis Bj und Zq bis Zj)
bilden eine orthogonalsymmetrische Anordnung; der hier verwendete Begriff der Orthogonalsymmetrie wird
weiter unten noch näher erläutert Der Spurvektor P liegt außerhalb dieses Quadrats, wird aber im Zusam
menhang damit benutzt, um Fehlerkorrekturen in mehreren Spuren bei minimaler Redundanz zu ermöglichen. Der orthogonalsymmetrische Teil ermöglicht eine
Beziehung zwischen den einzelnen Bits des Prüfbytes einerseits und zugeordneten Datenbits 01 ... 77
andererseits durch Auswertungen auf bytesequentieller Grundlage (Bi... Bj oder B1... B1), auf spursequentieller
Grundlage (Zo ...Zj oder Zj... Z0) oder durch beides, eo
wobei im letzteren Fall alle Datenbits eines Blocks zwischengespeichert werden, so daß eine kombinierte
Auswertung für das Prüfbyte C erfolgen kann. Bei Anwendung der Orthogonalsymmetrie für die Fehlerprüfung und -korrektur wird — in einer bevorzugten
Ausführungsform — das Prüfbyte C durch bytesequentielle Auswertung bestimmt, die Syndrome auf bytesequentieller Grundlage, und das eigentliche Fehlermuster
auf spursequentieller Grundlage. Bei der Bestimmung des Fehlermusters kann der Paritätsprüfanteil P mit
benutzt werden.
Die Spurkorrektur erhält man durch Korrektur der Fehlerbündel in den Spuren, die als fehlerhaft
bezeichnet sind. Die Fehlerkorrekturcodes für Symbole aus GF(2fc), dem Galois-Feld von 2b Elementen (wobei
GFGalois-Feld bedeutet und öeine positive ganze Zahl
ist), kann man bekanntlich für Korrekturen von Bündeln b benachbarter binärer Zeichen verwenden. In den
entsprechenden Codes wird jedes Prüfzeichen in GF(2i>)
ersetzt durch b Prüfbits, und jedes Informationszeichen gleicherweise durch b Informationsbits. Alle Codier-
und Decodieroperationen werden mit diesen Bündeln von jeweils b Bits ausgeführt So erhäit man die
Korrektur b benachbarter Zeichen, die der Korrektur eines Zeichens in GF(2fc) entspricht.
Die Anwendung solcher Verfahren zur Fehlerentdekkung und -korrektur in Mehrspur-Aufzeichnungsgeräten
erfordert die Auswahl von Bitbündeln längs der verschiedenen Spuren. Das ist nötig wegen des
obenerwähnten bündelweisen Auftretens von Fehlern in derartigen Aufzeichnungsgeräten. Als Konsequenz
mußte man zur Fehlerkorrektur zunächst alle Datensignale eines Blockes akkumulieren und zwischenspeichern.
Wegen der Orthogonalsymmetrie befreit diese Erfindung von der Bedingung, daß die Zeichen in GF(2iI)
sich in spurorientierten Bündeln von jeweils b Informationsbits oder Prüfbits befinden müssen. Somit
sind die Codewörter nicht in Zeichen in GF(2i>) zu
beschreiben. Ein Vorteil der Vermeidung von Zeichen aus GF(2i>) ist, daß die Prüfbits nicht mehr spurweise
gebündelt sein müssen zur Darstellung der Prüfzeichen in GF(2*). Statt dessen wird jedes Prüfbit unabhängig in
die Nachricht (in den Codeblock) eingegeben. Diese Tatsachen werden in der vorliegenden Erfindung
vorteilhaft ausgenutzt bei der Mischung von Prüfbits und Informationsbits in korrigierbaren orthogonalsymmetrischen
Abschnitten. Die beschriebene Mischung von Informations- und Prüfbits ergibt auch eine
verbesserte Fehlerkorrekturmöglichkeit bei Bandspeichern, die mit den obenerwähnten existierenden
Bandspeichern kompatibel sind.
Insbesondere wird bei einer vorzugsweisen Ausführungsform der Erfindung eine Fehlerkorrektur in zwei
Spuren mit nur einer besonderen Spur für Prüfbits möglich, wogegen bei den früheren, auf der Benutzung
von Galois-Feldern beruhenden Systemen hierfür zwei besondere Spuren notwendig waren. Eine Fehlerkorrektur
in nur einer Spur ist möglich, wenn die Paritätsspur ganz weggelassen wird und ein einzelner
Spurzeiger die fehlerhafte Spur anzeigt; es sind dann also nur acht statt neun Spuren notwendig.
Die weiter hinten beschriebene Vorrichtung kann direkt in dieser Art verwendet werden, indem das Signal
/"=8 (Fig. 14c) ständig aktiviert wird und der
Paritätsvektor P ständig gleich 0 gemacht wird. Auf diese Weise scheint in der Paritätsspur immer ein Fehler
vorzuliegen. Demzufolge wird dann, wenn in einer der
Spuren 0 bis 7 ein Fehler auftritt, diese einzelne Datenspur in der gleichen Weise korrigiert wie eine
beliebige Spur / bei der weiter hinten beschriebenen
Fehlerkorrektur zweier Spuren, von denen eine die Paritätsspur 8 ist
Die Erfindung kann selbstverständlich in verschiedenen Datenverarbeitungseinrichtungen mit unterschiedlicher Kapazität angewandt werden. Für die vorliegen-
de Beschreibung wurde als Beispiel ein 9-Spur-Magnetbandsystem
ausgewählt, wie es in der deutschen Offenlegungsschrift 21 23 769 beschrieben ist.
Bei der vorliegenden Erfindung wird Orthogonalsymmetrie verwendet bei der Erzeugung und Benutzung
von Prüfbits, wodurch es möglich ist, diese Prüfbits bei einer sequentiellen Analyse der Datenbytes, je ein Bit
pro Spur, zu erzeugen, und dann mehrere Bits längs der Kanäle unter Benutzung des byte-erzeugten Restes zu
korrigieren. Hierbei werden mittels Paritätsprüfmatnzen die byteorientierten Prüfzeichen oder Reste mit der
gleichen Datenbit-zu-Prüfbit-Beziehung erzeugt wie dann, wenn die Prüfbits längs den Spuren bestimmt
werden. Dies Erfordernis der Gleichheit in der Datenbit-zu-Prüfbit-Beziehung wird später im Zusammenhang
mit den Fig.4 und 6 beschrieben. Diese Gleichheit bedingt eine orthogonalsymmetrische Arbeitsweise
von Geräten sowohl bei der Erzeugung als auch bei der Benutzung von Fehlerprüfbits.
Der Ausdruck »Orthogonalsymmetrie« bezieht sich auf Informations- und Prüfbits außer den Querparitätsbits.
Die Orthogonalsymmetrie erlaubt es, mit den Prüfbits, die aufgrund der Byteinformationen B\ bis Bi
erzeugt wurden, Korrekturen längs den Spurenvektoren Zo... Zt zu machen (ohne Paritätsbits ist dies für eine
Spur möglich, und mit Paritätsbits ist diese Korrektur für zwei Spuren möglich, wobei eine der fehlerbehafteten
Spuren die Paritätsspur 8 ist, was durch das später beschriebene Signal j = 8 angezeigt wird). Diese
Möglichkeiten sind gegeben, wenn die Beziehungen zwischen den Prüfbits und den Informationsbits
einerseits bei der Erzeugung und andererseits bei der Benutzung der Prüfbits den folgenden beiden Gleichungen
genügen:
35
T"C + T1B1 + T2B2 + T3B3 + T4B4. + T5B5
+ ThBh + T1B1 = 0 (A)
40
TnZ() + V Tj + T2Z2 + T%Zi + T4Z4. + T5Z5
+ ThZh + T1Z1 = 0 (B)
In den beiden Gleichungen stellen die Faktoren B die Informationsbytes quer zu den Spuren 0 ... 7 da;"; C ist
das Prüfbyte quer zu den Spuren 0... 7; die Faktoren Z sind die Bitsignale längs den Spuren 0 ... 7 innerhalb
eines bestimmten Blocks (z. B. in Spur 0 stellt der Faktor Zdas Bit0 von B\...B7 und Cdar);die Faktoren Tsind
Matrixkoeffizienten, die — wie später noch weiter beschrieben wird — so ausgewählt werden, daß man
eine Orthogonalsymmetrie erreicht
Die beiden obenstehenden Gleichungen zeigen, daß die sequentielle Matrixmultiplikation und Modulo-2-Addition
der Byte-Terme gleich ist der Modulo-2-Addition der Matrixprodukte der gleichen Matrizen, jedoch mit
den Informationssignalen und dem einzelnen Prüfbit-Signalwert 'ängs den angegebenen Spuren fZ-Terme).
Aufgrund dieser Gleichheit wird das Prüfbyte mittels der Bytes Bo ... Bt erzeugt; Fehlerkorrektur kann
dagegen in den Spuren Z0... Zi vorgenommen werden.
Am vorteilhaftesten ist die Anzahl Bytes fib... ft und
Cin jedem Block gleich der Anzahl Bits (0)... (7) in
jedem dieser Bytes. Das ergibt eine quadratische es Anordnung von 8x8 Bits auf einem 9-Spur-Band, für
welche die oben beschriebene Orthogonalsymmetrie gilt (siehe F i g. 2). Die folgende Beschreibung gilt für ein
bestimmtes Ausführungsbeispiel der Erfindung, bei der in der neunten Spur (7^ separate Paritätsbits angeordnet
werden. Statt dessen könnte auch ein zyklisch erzeugtes Paritätsfeld vorgesehen werden. Zur Fehlerkorrektur
werden die Paritätsbit- und Prüfbitfelder in einer neuartigen Weise kombiniert ausgewertet, wie weiter
unten noch beschrieben wird.
Gemäß dem vorliegenden Ausführungsbeispiel bilden mehrere Codewörter, funktionell gesehen, jeweils ein
Rechteck mit den Seitenlängen n\ und Π2, wobei rt\
größer ist als n2, wie aus F i g. 2 zu ersehen ist. Die Werte
n\ und ih stellen je eine Bitanzahl dar, keine
geometrischen Abmessungen. Die Länge n\ erstreckt sich quer zu den Spuren. Jede Gruppe der Daten
darstellenden Signale hat im betrachteten System entlang den Kanälen (Spuren) eine Länge — ausgedrückt
als Anzahl von Datenbytes — die kleiner ist als die Anzahl der Kanäle, aber größer als eins. Für jede
Übertragung oder Aufzeichnung v/erden gewöhnlich mehrere solcher Codeblöcke benötigt, die alle diese
Länge haben und mit den entsprechenden Prüfbits versehen sind.
Die optimale Ausnützung der Orthogonalsymmetrie wird bei Hinzufügung einer zusätzlichen Spur dann
erreicht, wenn /J| um eine Einheit größer ·%\ als 772· Zur
weiteren Verbesserung der Korrekturmöglichkeiten können zwar noch w>. rare Paritätskanäle vorgesehen
werden (z. B. Hamn,;ng-Code), doch ergibt sich eine optimale Ausnutzung der vorhandenen Redundanz,
wenn n\ gerade um eins größer ist als lh· Die
zusätzlichen Paritätsbits könnten auch weggelassen werden. Jedoch ergibt sich dann eine Verminderung der
Korrekturmöglichkeiten, falls nicht zusätzliche Redundanz innerhalb der orthogonalsymmetrischen Anordnung
vorgesehen wird.
Prüfbitvektor (C) und Paritätsbitsvektor (P) liegen in
jedem Datenblock senkrecht zueinander. In 9-Spur-Magnetbändern wird die Paritätsspur in der Mitte oder
nahe bei der Mitte des Bandes vorgesehen, wie in F i g. 3 und 5 gezeigt Das ist aber nur die physische Anordnung;
die logische Beziehung der Datenelemente zueinander entspricht der in Fig.2 gezeigten Anordnung. Die
Paritätsprüfbits (P) sind längs der kürzeren Dimension Φ angeordnet
Die übrigen Prüfbits (C) längs der Dimension m sind
aus den Bitwerten ausgewählter Positionen der Informationsbits abgeleitet, wie später noch genauer
beschrieben wird. Die Redundanz oder die Anzahl der erforderlichen Prüfbits ist minimal, wenn n2 den größten
für ein gegebenes n\ möglichen Wert hat, d.h. wenn
Π2 = Λι — 1. Es wird anschließend das System für den
Sonderfall von n\ = 9 für das neunspurige Halbzollband besprochen. Der Code für jeden anderen Wert von n\
läßt sich in ähnlicher Weise entsprechend aufbauen.
Das Datenformat für einen, hier als optimaler Rechteckcode (ORC) bezeichneten Code, einer bevorzugten
Ausführungsform der vorliegenden Erfindung für Neunspurbänder, ist schematisch in F i g. 3 gezeigt
Jeder zur Fehlerkorrektur zusammengestellte und mit Prüfbits versehene Block enthält sieben Informationsbytes, die mit B1 bis B7 bezeichnet sind. Die Informationsbytes
können ebenso in umgekehrter Reihenfolge angeordnet werden, und das Prüfbyte C kann an einer
beliebigen Stelle in den Block eingefügt werden, was später noch genauer erklärt wird. C bezeichnet ein
aufgrund der Orthogonalsymmetrie aus den sequentiell ausgewerteten Informationsbytes B1... B7 abgeleitetes
Prüfbyte, das sich quer zu den Spuren erstreckt Jedes
mit Bi bezeichnete Informationsbyte (i = 1... 7) und das
Prüfbyte Csind 8stellige Spaltenvektoren einer Matrix:
"B1(O)"
B1(D |
und C = |
"C(O)
C(I) |
ß,-(7) | cn) | |
Der Vektor P ergibt sich aus den konventionellen Querparitätsbits (VRC), in ähnlicher Weise dargestellt
durch einen 8stelligeri Vektor, in dem die Komponente P(O) das Paritätsbit des Byte Cund die Komponente P(i)
das Paniätsbit des Byte B, (für /= 1, 2, ... 7) ist Das
heißt:
und
für
P(O) = CiO) Θ... eC(7) (1)
P(i) = B1(Q) ® B1(I) θ ... θ Bi(I) (2)
i = 1, 2, ... 7,
Das Prüfbyte Cwird aus den Informationsbytes B\,
... B1 mit der folgenden Matrixgleichung errechnet:
C = TB1 QT2B2 ΘΓ3Β,
(3a)
worin T die Begleitmatrix des irreduziblen binären Polynoms g(x) achten Grades ist und T die /-te Potenz
der Matrix ^darstellt gfo} ist gegeben durch:
g(x) = go + g\x + gzx2 + .. .grx7 +
worin
T =
"ooooooogo'
1 0 0 0 0 0 0g,
0 1 0 0 0 0 0 g2
0 0 1 0 0 0 0 g3 ..
00 0 1 00 0 g4
0 0 0 0 1 0 0 gs
0 0 0 0 0 I 0 gt
0 0 0 0 0 0 1 g7
Das Prüfbyte C kann erzeugt werden durch ein rückgekoppeltes Schieberegister, eine Anordnung von
Antivalenzgliedern, durch eine programmierte Verarbeitungseinrichtung, usw. Ein Ausführungsbeispiel mit
Schieberegister, das für eine bestimmte Arbeitsgeschwindigkeit die günstigste Lösung darstellt, wird
weiter unten beschrieben. Für langsamere Geschwin-
worin θ die Summe Modulo 2 (Antivalenzverknüpfung) bezeichnet
Die obigen Gleichungen gelten für gerade Parität Bei ungerader Parität ist je eine Seite der beiden
Gleichungen zu negieren (P(O) statt P(O) und Pp) statt
und gi für / = 1,2,... 7 entweder Null oder Eins ist
Die allgemeine Begleitmatrix Γ des Polynoms g(x)
achten Grades ist definiert als:
digkeiten ist die Verwendung einer programmierten
Verarbeitungseinrichtung günstiger; für höhere Arbeitsgeschwindigkeiten kann eine Anordnung von Antivalenzgliedern notwendig sein. Die chenstehenden Glei-
ciiuiigen bestimmen die Regeln zur Codierung der
Nachricht. Diese Regeln können konventionell mittels einer Paritätsprüfmatrix H dargestelit werden. Zu
diesem Zweck werden die Matrizen T als Elemente eines Galois-Feldes GF(28) dargestellt
ίο nc sei ein Element von GF(28), das die Restklasse Qc)
modulo g(x) darstellt. Für jede Spalte der Matrix T in Gleichung (4) tritt ein « auf. in Gleichung (3b) wird nun
g(x) gleich Null gesetzt Um Restklassen modulo gQc)za
erhalten, wird der höchststellige Term gyfi gleich der
Summe der anderen Terme gesetzt Wenn bei einer Berechnung der Term gsx3 erscheint, werden die
anderen Terme statt dieses höchststelligen Terms eingesetzt. Praktisch kann dies z. B. durch ein lineares
rückgekoppeltes Schieberegister erreicht werden.
Die Multiplikation in GF(28) ist definiert durch die
Polynom-Multiplikation der Restklassen modulo g(x]L
Somit stellt das Element«' für jedes /die Restklasse Qe)
modulo g(x)dar. Ein Element «'kann dargestellt werden
als 8stelliger Spaltenvektor der binären Koeffizienten
des Polynoms x<
modulo g(x) Für g(x) =1 +x3 + *4 + *5 + .** werden beispielsweise
die «' durch die unten angegebenen Spaltenvektoren dargestellt und gehören zu den Matrizen T gemäß
F i g. 4 und F i g. 6.
Matrizen für eine Fehlerkorrektureinrichtung bestehen aus «-Spaltenvektoren. 7° = ofi... a7; P = λ1 ... efi
usw. (Fig.4 und 6). Es wird also eine Menge von «-Spaltenvektoren ausgewählt, um die Matrizen 7" ...
T" zu bilden für die Einrichtungen zur Fehlerprüfcode-
Erzeugung sowie zur Fehlerfeststellung und Fehlerkor
rektur. Zwecks Erreichung der Orthogonalsymmetrie werden die «-Spaltenvektoren nach einem Verfahren
erzeugt das später im Zusammenhang mit den F i g. 4 und 6 beschrieben wird. In einem bevorzugten
Ausführungsbeispiel gibt es 15 eindeutige «-Spaltenvektoren, die einem 8-Bit-Prüfbyte entsprechen. Bei der
speziellen Einrichtung dieses Ausführungsbeispiels haben die Spaltenvektoren «°... »7 je nur einen Term,
der gleich 1 ist, d. h. jedes «' hat eine 1 in der /-ten Steile,
so daß sich folgende Prüfbitpositionen ergeben:
1 | 1 | 0 | 2 | 0 | 3 | 0 |
0 | X = | 1 | a. = | 0 | !* = | 0 |
0 | 0 | 1 | 0 | |||
0 | 0 | 0 | 1 | |||
0 | 0 | 0 | 0 | |||
0 | 0 | 0 | 0 | |||
0 | 0 | 0 | 0 | |||
0 | 0 | 0 | 0 | |||
0 | S | 0 | α = | 0 | 7 | 0 |
0 | α = | 0 | 0 | α = | 0 | |
0 | 0 | 0 | 0 | |||
0 | 0 | 0 | 0 | |||
1 | 0 | 0 | 0 | |||
0 | 1 | 0 | 0 | |||
0 | 0 | 1 | 0 | |||
0 | 0 | 0 | 1 | |||
Für jedes Bit besteht eine eigene Gleichung. Die Gleichungen sind nicht unabhängig voneinander, sondern stellen ein Gleichungssystem ciar.
Für einen Code mit Orthogonalsymmetrie ergibt sich,
wie später erläutert, die folgende Menge α8... α17:
zweiie Stelle (Stelle des Bytes Bi) zu bringen, muß in
7*-' der erster a-Spaltenvektor «»-■ sein, woraus sich
die folgenden T-Matrizen ergeben:
. α6]
1 | 9 | 0 | 10 | 0 | α = | "Ρ |
0 | IX = | 1 | Ä = | 0 | 0 | |
0 | 0 | 1 | 0 | |||
1 | 0 | 0 | 0 | |||
1 | 1 | 0 | 1 | |||
1 | 1 | 1 | 1 | |||
0 | 1 | 1 | 1 | |||
0 | 0 | 1 | 1 | |||
ίο
1 | Λ = | 1 | 14 | 1 | 15 | O |
1 | 1 | Λ — | 1 | Oi. — | 1 | |
O | 1 | 1 | 1 | |||
1 | 1 | O | I | |||
1 | O | O | O | |||
O | O | 1 | O | |||
1 | O | O | 1 | |||
1 | 1 | O | O | |||
0 | ■v17 — | 1 |
0 | Λ — | 0 |
I | 0 | |
1 | 0 | |
1 | 0 | |
0 | 0 | |
0 | 0 | |
1 | 0 | |
15
20
25
30
35
40
Die Matrizen Γ werden gemäß folgenden Gleichungen aus ausgewählten a-Spaltenvektoren gebildet:
7s = α3...«10 7» = et*. ..«i'
7s = Λ5...«12
7i = α6...«13
45
50
7*-ι | = τ" = | α'4,«0, α' |
= 7° = | A0... Λ7] | |
V = | Λ1 α8] | |
■ρ = | «2...«9] | |
"P = | α3... λ'° | |
7* = | α4...«" | |
75 = | οι*...«1* | |
7» = | Γ«6...«13' |
wobei α15 = «°ist
Um allgemein ein Prüfbyte C in die Byteposition k zu bringen (k = 0... 7), wird die Matrix 7*-* als erste
Matrix ausgewählt, wobei die Orthogonalsymmetrie beibehalten wird. In einer Folge von Codeblöcken kann
sich die Stellung des Prüfbytes C schrittweise verschieben.
Die oben angegebenen Beziehungen zwischen «-Spaltenvektoren und 7-Matrizen ergeben eine
besondere und unabhängige Antivalenz-Gleichung für die acht Prüfbits im Prüfbyte C Durch eine solche
Auswahl werden die Schaltungen vereinfacht Das ist wünschenswert, we' es Kosteneinsparungen bringt Die
besonderen und unabhängigen Gleichungen sind aber nicht notwendig. Prüfbyte C kann auch auf andere
Weise als durch die Einheitsmatrix Ij mit den Datenbits assoziiert werden. Dadurch kann sich eine gegenseitige
Abhängigkeit der Prüfbits ergeben, so daß man anstelle einer unabhängigen Gleichung für jedes Prüfbit ein
System voneinander abhängiger Gleichungen bekommt Das heiBt, daB die Antivalenz-Gleichung eines Prüfbits
außer einer Gruppe von Datenbits auch ein anderes Prüfbit enthalten kann.
Hierfür ergibt sich folgendes Beispiel, bei dem a.2...
α16 benutzt sind:
Matrix | α-Vektoren | ...β9 | Byte |
T1 | ...α!0 | C | |
Γ3 | a3 | ...α11 | 1 |
ζ4 | a4 | ...α12 | 2 |
Ts | a5 | ...α13 | 3 |
T" | a4 | ...α" | 4 |
T7 | a1 | ...als | 5 |
r8 | β" | ...α16 | 6 |
f | a» | 7 |
Dadurch ergeben sich acht eindeutige Matrizen entsprechend F i g. 4 und 6. Die Spaltenvektoren λ15 und
α16 werden nicht benutzt
Mit den oben ausgewählten Spaltenvekioren «°... λ14
wird das Prüfbyte C als Byte 0 in den Codeblock eingebracht, siehe Fig.3. Die Beziehungen zwischen
den Datenbytes Bi... B7, Cund den «-Spaltenvektoren ω
gehen aus den F i g. 4 und 6 hervor. Jedes T kann 7° in der ersten Bytestelle ersetzen; jede Auswahl ändert die
mathematische Beziehung des Prüfbytes C zu den Datenbytes und ändert auch den Einfluß jedes Datenbits
auf das Prüfbyte. Die dargestellte Erstellung des Prüfbytes C wird erreicht durch Auswahl des ersten
(linken) «-Spaltenvektors von 7* = P, wobei η die Zykluslänge von g(x) ist Um das Prüfbyte C in die
Da die Spaltenvektoren «? und <x9 mehr als eine »1«
enthalten, ergibt sich eine gegenseitige Beeinflussung der Prüfbits. Die Stellung des Prüfbytes C kann geändert
werden, wie oben angedeutet wurde. Die Orthogonalsynunetrie kann dabei erhalten bleiben. Für alle oben
angegebenen Matrizen sind die Spaltenvektoren oder Feldelemente «' eine zyklische Untergruppe mit der
Zykluslänge n, wobei n der Exponent von g(x) ist und
wobei 8 < π < 2* (im dargestellten Beispiel ist η = 15).
Mit der oben angegebenen Schreibweise kann die Begleitmatrix T gemäß Gleichung (4) für jede Matrix
folgendermaßen dargestellt werden:
7· = ry*2«3...*8
leder achtstellige Spaltenvektor
ι· —
K)
wobei (0)... (7) den Bits g0 ... gj entspricht stellt die
Restklasse
modulo g(x) dar und ist damit ein Element von GF(28).
Es kann gezeigt werden, daß die Matrixmultiplikation Tß einer Multiplikation der Feldelemente tx und β
entspricht Im besonderen gilt:
TY =
(6 a I
Aufgrund der Gleichungen (5) und (6a) kann man schreiben:
T2 -- Τ[
χ8]
= [TxTx2... 7x*]
(6b)
[ν= χ-'... λ"] (6c)
Allgemein gilt für jede positive ganze Zahl /:
Γ = [X1X1 + 1 ...x1*^] (7)
Wenn die Zykluslänge η einer zyklischen Untergruppe der Exponent des Polynoms g(x) ist, dann ist P die
Einheitsmatrix Ia und kann auch als 7" geschrieben
werden, »d« ist der Grad der Einheitsmatrix. Eine
Eigenschaft des Exponenten η ist, daß er die kleinste positive Zahl ist, für welche gilt:
V = 7° = Id.
Unter Benutzung der Gleichungen (1), (2), (3a) und (7) kann eine Paritätsprüfmatrix H erstellt werden, wie in
F i g. 4 dargestellt
Für jedes / ist «' ein 8stelliger Spaltenvektor. Alle
übrigen Leerstellen in der f/-Matrix entsprechen einer
0. Der obere Bereich stellt die Paritätsbeziehungen (Antivalenzgleichungen) zwischen dem Paritätsvektor P
und den Bytes C sowie B\ ... Bj dar, wobei eine »1«
40
einem Term in der Paritätsgleichung entspricht Die Paritäts-/</-Matrix auf der rechten Seite des oberen
Bereichs zeigt daß jedes Paritätsbit im P-Vektor die Parität für eines der Bytes C. Bj ... B1 darstellt Im
unteren Bereich steht im Kasten unter dem Byte C die Einheitsmatrix I<r, sie gibt die Beziehung zwischen dem
Prüfbyte Cund den Bytes B1... B7 an. Unter dem Byte B\
steht die Matrix 71, unter Bi sieht T2, usw. Das unter ft
stehende Element «9 entspricht dem Element «8 unter
Bu nachdem letzteres in einem linearen rückgekoppelten Schieberegister um eine Stelle verschoben wurde
(Multiplikation mit T). 7° ... T werden später in numerischen Beispielen noch verdeutlicht Eine der
möglichen Beziehungen zwischen den Bytes C... Bj und den auf dem Band aufgezeichneten Signalen ist in F i g. 3
gezeigt Die wirklichen Binärwerte im Prüfbyte C werden durch Antivalenzverknüpfungen der Bytes B\...
Bj und der Matrizen V ...V ermittelt
Fehlerkorrektur-Fähigkeiten
Bevor die Übereinstimmung (Orthogonalsymmetrie) zwischen den Matrizen der F i g. 4 und 6 gezeigt wird,
werden die Fehlerarten und die Datenbearbeitung bei der Fehlerbehandlung besprochen.
Die wahrscheinlichsten Fehler bei Bändern sind Spurfehler. Ein Spur-Fehlerbündel beeinflußt jedes Byte
in der gleichen Bitposition i, wobei / die Positionszahl der fehlerhaften Spur ist (0... 7). Die Paritätsspur P wird
bei der Matrixmultiplikation nicht verwendet Die Gruppen von 8 Bits, die durch solche Spurfehler
beeinflußt werden, sind in Fig.6 mit Zo, Zu Z2 Z7
(allgemein: Z1) bezeichnet Der 8-Bit-Zeilenvektor Z,
steht in der Spur / und besteht somit aus den Bits C(i),
BiOX BiO) ■ ■ - BrO) der Bytes Q B1, B2 ... B7. Vm die
Fehlerkorrektur zu erleichtern, stellt man die Korrekturgleichungen durch Terme der Vektoren Z1 und Pdar,
die in Horizontalrichtung liegen (und nicht in Vertikalrichtung
wie bei der Restberechnung). Zu diesem Zweck ordnet man einfach die Spalten (C... Bi) der in F i g. 4
gezeigten Paritätsprüfmatrix so um, daß .sie den in Fig.6 dargestellten Z,-Vektoren (Spurvektoren) entsprechen.
Die dem Vektor Z, entsprechende aufgeteilte Matrix hat folgende Form:
Γ '* 1
worin 4 die Einheitsmatrix achten Grades ist. Somit können die Paritätsprüfgleichungen aus der /Y-Matrix
so der F i g. 6 folgendermaßen geschrieben werden:
T0Z0
T2Z2 ® T3Z3 @
7 iGä D —
z.7 vx? " —
Θ T5Z5 ® VZh ® T1Z1 = 0
worin0ein 8stelliger Spaltenvektor mit lauter Nullen ist.
Die F i g. 4 und 6 zeigen die beiden Paritätsprüfmatri- ω
zen für den in Fig.2 dargestellten Block. Die Prüfmatrix der Fig.4 ist byteorientiert, während die
Prüfmatrix der F i g. 6 spurorientiert ist. Für jedes Datenbit in Si ... Bj besteht eine bestimmte Beziehung
zu C; die gleiche Beziehung besteht für entsprechende b5 Datenbits, wenn die Berechnungen wie in Fig. 6
spurorientiert sind. Das ist Orthogonalsymmetrie.
Man nehme ein Patenbit aus F i g. 2 und betrachte es
in den beiden F i g. 4 und 6; dabei wird die Übereinstimmung der Beziehungen zum Prüfbyte deutlich. Bit 54
(Ba[S)) ist in Fig.4 im Byte 4 an der Bitstelle 5. In der
Matrix 7" ist der fünfte Spaltenvektor «8. Der Vektor «8
(fünfte Spalte von links in V) setzt Bit 5 in Beziehung zu C. In F i g. 6 entspricht Z5(4) dem Bit 54. Dieses Bit ist in
der Spalte für λ8 (vierte Spalte von links in V) und stellt
damit die Beziehung zu Cin der gleichen Weise her wie in der Prüfmatrix der Fig.4. Das gleiche kann für alle
anderen Datenbits gezeigt werden.
909 629/19?
17 18
Die oben angeführte Orthogonalsymmetrie geht auch oder die der F i g. 6 (spurorientiert) benutzt, immer die
aus der Beziehung der α-Spaltenvektoren in den F i g. 4 gleiche Beziehung zwischen den Datenbits in B2 und
und 6 hervor. In F i g. 4 sind die Bits des Byte Bi über <x2 dem Prüfbyte C ergibt. Diese Tatsache wird als
... «9 mit dem Prüfbyte C assoziiert In F i g. 6 gehört Orthogonalsymmetrie bezeichnet Die gleichen Be-
zum Byte Bi die dritte Zeile von Einsen (im oberen 5 trachtungen gelten für alle Bits der Bytes B] ... Bj mit
Bereich), d.h. die dritte Bitposition in jedem der Bezug auf das Prüfbyte C.
Spurvektoren Zq ... Zi. Also ist in Fig.6 der dritte Eine weitere Tatsache ist, daß jedes Bit im Byte C
«-Spaltenvektor jeder der Matrizen 7° ... T mit dem über beide Prüfmatrizen in gleicher Weise mit einer
Byte Bi assoziiert, und das sind wiederum Λ2 ... λ9. Die Anzahl von Datenbits in Beziehung steht Man nehme
Schlußfolgerung ist daß sich unabhängig davon, ob man in z. B. das Bit C(2). In F i g. 4 gehört Spalte 2 in Id zum Bit
die Paritätsprüfmatrix H der Fig.4 (byteorientiert) C(2):
C(2) = B1(X) SB2(O) ©B3(7) ©B4(6) ®B5(5) ©ß6(4) ®ß,(3) ©6^(7) © B7(O) @B,Ö):
Man beachte, daß Bit 0 in Zn. 1 in Z1 ist, usw. In der Schreibweise gemäß F i g. 2 ergibt sich:
C(2) = 11 ©02 ©73 ©64 ®55 ©46 ©37 ©76 ©67 ©77
Für g(x) = I + χ-' + x* + Xs + Xs haben -r. λ1", \'·' und \14 eine Eins in der dritten Steiie (Bit 2).
In F i μ. 6 ist C(2) mit T1 ausgerichtet, nicht /,,(T"):
C(2) = Z0(I) ©Z1(I) ©Z,(7) ©Z4(6) ©Z5(5) ©Z„(4) ©Z7(3) ©Ζ6(7) ©Z7(6) ©Z7 (71.
Da C das Byte 0 ist, ist das erste Bit in jeder Spur Z in B1, usw.. wie es auf der rechten Seite von F i g. 6 angegeben
ist.
In der Schreibweise gemäß F i g. 2 ergibt sich:
C(2) = 02 ® 11 © 37 © 46 © 55 © 64 © 73 © 67 © 76 © 77.
Da bei einer Modulo-2-Addition die Reihenfolge derTerme keinen Einfluß auf das Ergcbnishal, ergibt rtoiafür
das Prüfbit C(2), daß die Beziehungen zu den Datenbit orthog naisymmetrisch sind. Die Orthogonalsymmetrie
für C(O) ist in F i g. 2 durch die schraffierten Bitposilionen gezeigt:
C(O) = 71 © 62 Φ 53 © 44 © 35 φ 26 © 17 © 74 © 65 ® 56 φ 47 ® 75 © 66 © 57 © 76 © 67 © 77.
In ähnlicher Weise wird die Orthogonalsymmetrie für Für C(S): ---03----
C(I) unten gezeigt unter Benutzung der geometrischen - - 12- - - - 17
Anordnung der F i g. 2 und der entsprechenden - 21- - - - 26 -
(x-Spaltenvektoren: *)---- 35 - -
- ------27 - 71 - - - 75 76 -
- - - - 54 - - 57 FürC(4): ----04---
- - - 63 - - 66 67 - - - 13 - - - 17
- - 72 - - 75 76 77 - - 22 - - - 26 26
31 - - - 35 36 -
wobei *) das Prüfbit ist. 55 *) - - - 44 45 - 47
Die Symmetrieachse erstreckt sich von der oberen - - - 53 54 - 56 57
linken zur unteren rechten Ecke der Anordnung, wie in - - 62 63 - 65 66 -
Fig. 2 zu sehen ist. Auf diese Weise kann die Symmetrie - 71 72 - 74 75 - -
für sämtliche Prüfbits gezeigt werden.
b0
FürC(2): -_02----- Für C(5): -----45--
------- 37 - - 32 - - 35 36 37
------ 46 - μ - 41 - - 44 45 46 47
----- 55 - - *) - - 53 54 55 56 -
- - 64 - - 67 - - 62 63 64 65 - -
- - - 73 - - 76 77 - 71 72 73 74 - - 77
Für C(6):
06 -
15
- 42 - - 45 46 47
- 51 - - 54 55 56 57 *) - - 63 64 65 66 -
- - 72 73 74 75 - -
FürC'(7): ------- 07
- 43 - - 46 47
- - 52 - - 55 56 57
- 61 - - 64 65 66 67 *) - - 73 74 75 76 -
Aus den obenstehenden Tabellen ist ersichtlich, daß sich jedes Prüfbit*) auf einer Diagonale befindet, die
senkrecht zur Symmetrieachse liegt, und daß alle mit ihm assoziierten Datenbits entweder auf der gleichen
Diagonale liegen, oder auf parallelen Linien dazu, dann aber alle auf der gleichen Seite bezüglich der Diagonale
mit dem Prüfbit (im obigen Beispiel alle rechts unten). Das Prüfbit C(O) steht alleine (ohne Datenbits) auf
seiner Diagonalen, die quer zur Symmetrieachse liegt.
Eine Analyse der obenstehenden Tabellen zeigt, daß eine Verschiebung der Matrizen 7" ... T, also eine
Verschiebung des Bytes C von der Spalte ganz links zu anderen Spalten, die Bitmusteranordnung verändert
und damit auch die Beziehungen zwischen der Fehlerarl und der Fehlerkorrektur.
Aufgrund der obigen Diskussion und anhand von Fig.4 und 6 werden folgende beiden Grundsätze
aufgestellt:
Fehler in einer Spur
Grundsatz 1:
Jedes Fehlermuster in einem Vektor in Horizontalrichtung (Vektoren Z, längs einer Spur) ist
erkennbar und korrigierbar.
Beweis: Das aufgrund eines in nur einer Spur auftretenden Fehlermusters erzeugte Syndrom ist ein
löstelliger binärer Vektor, der durch die lineare Kombination der Spalten der Fehler-Bitstellen (F i g. 6)
gebildet wird, die den Fehler-Bitstellen entsprechen. Wenn Si und S2 die beiden Teile des Syndroms
bezeichnen, die den eberen und unteren acht Zeilen der
W-Matrix (F i g. 6) entsprechen, und angenommen wird,
daß nur ein Vektor fehlerhaft ist, dann bestimmt Si eindeutig das Fehlermuster e.
HOl HlI
H7)
Darin ist ei das gesamte Fehlermuster; e(0)... e(7)
sind die Fehlermuster der Bytes 0... 7. Si entspricht dem
Fehlermuster, das in bisherigen Halbzollmagnetbandsystemen mit Querredundanzprüfung (VRC) erzeugt
wurde. S2 wird gebildet durch die lineare Kombination
UMlI
cd)
e wenn / = 0... 7
wenn / = 8
wenn / = 8
kann algebraisch geschrieben werden mit Elamenten von GF(28):
S2 = «'
S2 = 0
Der Grundsatz zeigt auch, daß Spur / nicht
mehrdeutig ist, wenn für jede Spur j, in der kein Fehler vorliegt, i eindeutig ist. Mit j sei ein Horizontalvektor
bezeichnet, bei dem kein Fehler vorliegt (Spur ohne Fehler). Füry Φ /giltöφ α.· φ ckJ Auch ist ei Φ 0.Somit
ist durch S2 / eindeutig bestimmt, was zur eindeutigen
Identifizierung des fehlerhaften Horizontalvektors führt.
Fehler in zwei Spuren
wenn ein Vektor Z1 (i = 0 ... 7) fehlerhaft ist; S2 = 0
wenn der Vektor P fehlerhaft ist. Die Gleichung (10) Grundsatz 2:
Fehlermuster in je zwei Vektoren entlang der horizontalen Richtung (Vektoren Z, längs den
Spuren) sind korrigierbar. Die fehlerhaften Spuren 2» werden durch eine Zeigereinrichtung festgestellt
bzw. identifiziert, welche von der Fehlerkorrektureinrichtung unabhängig ist. Die beiden fehlerhaften
Spuren werden getrennt angezeigt, z. B. durch Zeiger gemäß DE-OS 21 23 769. Solche Zeiger
2ί deuten auf Spuren mit schlechter Signalqualität, in
diesen ist die Fehlerwahrscheinlichkeit wesentlich größer als in Spuren, die nicht durch Zeiger
markiert sind.
Beweis: Wenn ei und C2 die beiden Fehlermuster
3d bezeichnen, die zu den beiden fehlerhaften Spuren /und
j gehören, und man wieder die lineare Kombination der entsprechenden Spalten der Η-Matrix von Fig.6
nimmt, ergibt sich:
51 = c, © C2 für alle Fälle Il 11
52 -=■ λ' · c, © \' ■ c; für / * X U2ai
S2 = λ1 ■ c, für ; X 112b)
Für j Φ i sind die Gleichungen (11) und (12) 4(i unabhängige Gleichungen in GF(28) und haben eine
eindeutige Lösung. Die Fehlermuster sind daher eindeutig bestimmt als:
es = Sl®V'Sj Γμγ/.Χ
ι-: = .S", © \ 1S2 flii- / X
i'i - -Si © c2 für alle Fälle
-,(ι Die Multiplikation und die Inversion der Vektoren
sind Feldoperationen in GF(28).
Praktische Ausführung
Der Codeblock kann mit jedem irreduziblen binären Polynom g(x) erzeugt werden. Für das gewählte
Magnetband-Ausführungsbeispiel gibt die nachfolgende Tabelle 1 die irreduziblen Polynome achten Grades mit
ihren Exponenten an. Die Auswahl von g(x) aus diesem Satz kann willkürlich sein, jedoch ist die Auswahl eines
bo selbstreziproken Polynoms oder eines Polynoms mit
niedrigerem Exponentenwert vorteilhaft. Dadurch wird nämlich die Fehlerkorrektur beim Rückwärtslesen
erleichtert, was für Magnetbandspeicher sehr erwünscht ist. Die Polynome mit Nr 8 und 16 in Tabelle 1 sind
b) selbstreziprok und haben den niedrigsten fxpuncnten-
wert. Das Reziprokpolynom g(x) = x* · g - ist ebenfalls
irreduzibel und hat denselben Exponenten wie g(x).
2ί
Irreduzible Polynome Achten Grades
Nr. | (ocITi/ienien | des | Polynoms | Ma | I | I | (J | r.xponenien |
Sn Ml | K | : K3 | I | 0 | 1 | 1 | ■iS Il | |
I I |
0 | 0 | 0 | I | 0 | ü | 1 | 255 |
2 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 85 |
3 | 1 | I | ü | I | I | ü | 51 | |
4 | 0 | 1 | I | 0 | I | I | 255 | |
5 | I | U | 0 | I | 0 | 1 | 85 | |
6 | 1 | 1 | 0 | 0 | 1 | 1 | 255 | |
7 | 0 | 0 | 1 | 0 | 1 | 0 | 255 | |
8 | 1 | 1 | 0 | 1 | 0 | 1 | 17 | |
9 | 0 | 1 | 0 | 0 | 0 | I | 255 | |
10 | 1 | 0 | 0 | I | 0 | I | 85 | |
Il | 0 | 1 | I | 1 | 1 | I | 255 | |
12 | 0 | 0 | 1 | 1 | 1 | 1 | 51 | |
13 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 255 |
14 | 0 | 1 | I | 0 | 1 | 0 | 0 | 255 |
15 | 1 | 1 | 0 | I | 255 | |||
16 | 0 | 0 | 1 | 17 | ||||
0 | ||||||||
1 | ||||||||
0 | ||||||||
0 | ||||||||
1 | ||||||||
Die obenstehenden irreduziblen Polynome mit dem Exponentenwert 255 sind primitive Polynome. Wenn
derartige primitive Polynome verwendet werden, kann jeder einzelne der 255 a-Spaltenvektoren zur Ausführung
der Erfindung ausgewählt werden. Von den anderen, nichtprimitiven Polynomen kann jede Anzahl
von Λ-Spaltenvektoren bis zum Exponentenwert benutzt werden.
a) Codierung
(Erzeugung der Prüfbit- und Paritätsprüfreste)
(Erzeugung der Prüfbit- und Paritätsprüfreste)
Wie aus der obigen theoretischen Beschreibung zu ersehen ist. wird das Prüfbyte Causden Informationsbytes
Bu lh. Bi... Bj und einer Begleitmatrix (wie z. B. der
oben gezeigten) entsprechend der Gleichung (3a) errechnet. Die Codierung kann mit Hilfe eines linearen
rückgekoppelten Schieberegisters 10 erfolgen, wie es in den F i g. 7 und 8 dargestellt ist
Das Schieberegister 10 enthält acht binäre Speicherelemente (0) ... (7) mit Rückkopplungsverbindung 24
und Modulo-2-Addiergliedern 26 zwischen den binären Speicherelementen. Unter einem Taktsignal schiebt das
Schieberegister den Inhalt jeder Stufe in die nächste, während es gleichzeitig rückkoppelt und neue Eingabewerte
empfängt Derartige Schieberegister sind allgemein bekannt und können bei vorgegebenen Rückkopplungsverbindungen
gemäß einem Polynom g(x) aus verfügbaren Grundschaltungen auf die verschiedenste
Art leicht aufgebaut werden. In F i g. 7 wird jedes der Eingabebytes B0 bis Bi an das Schieberegister angelegt,
wobei das Byte Bi zuerst eingegeben wird. Sämtliche
Bits 0... 7 eines Bytes werden jeweils gleichzeitig an die Modulo-2-Addierer 26 an den Ausgängen der Stufen 0
... 7 des Schieberegisters 10 angelegt Das heißt zum Beispiel, daß die Bits 0 aller Bytes Bi bis Bj nacheinander
an den Modulo-2-Addierer angelegt werden, der sich am Ausgang der Stufe Null befindet Am Eingang eines
jeden Modulo-2-Addierer 26 ist deshalb ein bestimmtes Bit des allgemeinen Bytes Bh also B(O), Sy(I)... Bi(J)
dargestellt. Jeder Modulo-2-Addierer 26 hat als zweitei Eingang die Rückkopplung 24. Die Addierer 2(
empfangen auch ein Eingangssignal von der vorherge henden Stufe. Das Ausgabesignal jedes Addierelemen
tes 26 geht in das Speicherelement der nächster Schieberegisterstufe, so daß der Inhalt sukzessive vor
einer Stufe zur anderen durch das ganze Schieberegistei geschoben wird. Die Rückkopplungsverbindungen sind
durch die binären Koeffizienten g<u g\. ■■■ gi des
Polynoms gf.^bestimmt, wobei
g,x
g„.v"
g-x
Ein Koeffizient »1« (g,·= 1) in der Gleichung bedeutet eine Verbindung und ein Koeffizient »0«
(g, = 0) keine Verbindung.
Wenn g(x) = 1 + x3 + V + x5 + x*. werden die
Rückkopplungsverbindungen für gi = g4 = g$ = \ bzw.
für x3, x*, x5 hergestellt; an den übrigen Stellen
unterbleiben die Verbindungen. In F i g. 8 ist das durch ausgezogene Linien einerseits und gestrichelte Linien
andererseits dargestellt. Nach sieben Zyklen enthält jede Stufe des Schieberegisters ein Bit des Vektors C.
Gemäß Gleichung (3a) entspricht jede Schiebeoperation einer Multiplikation des Schieberegisterinhalts mit
einer Begleitmatrix T. Zwei Verschiebungen bedeuten eine Multiplikation mit T2, usw. Die Eingangsverbindungen
sind so gelegt daß der hereinkommende Vektor mit der Matrix T vormultipliziert wird Am Anfang enthält
dieses mit SR1 bezeichnete Schieberegister 10 lauter
Nullen. Die Informationsbytes B7. B6, Bj, B4, Bi, B2 und B,
werden nacheinander in dieser Reihenfolge in das SR ί eingeschoben. Am Ende von sieben Verschiebungen
enthält das SR 1 also den Spaltenvektor:
rs,©-PB2 ΘΡΑ,Θ...© VBi.
der das Prüfbyte ist Das Prüfbyte C wird dann ausgeschoben. Die Byteparität (Querparität) von Bi, B6,
... Si und C wird auf bekannte Weise ermittelt,
entsprechend der Darstellung in Fig. 9. Der Spaltenvektor
oder das Prüfbyte C wird Byte für Byte berechnet (vertikai-sequentieli), während die Korrektur
in einer Spur (Z) auf horizontaler Basis erfolgt. Es sei daran erinnert, daß solche transversen Operationen
infolge der Orthogonalsymmetrie in den Beziehungen zwischen Datenbits und Prüfbits möglich sind.
Das Prüfbyte C enthält die aus der Ausführung von Gleichung (3a) resultierenden Prüfbits, welche jeweils
mit den Informations- oder Datensignalen in einer bestimmten Spur zusammen stehen. Die quer zu den
Spuren ermittelten Paritätsbits (Byteparität) stehen in einer separativen Spur P.
b) Decodierung
(Erzeugung des Fehlersyndroms)
(Erzeugung des Fehlersyndroms)
Wenn Zb, Zj ... Zi und P die empfangenen
Zeichenfolgen entsprechend den ursprünglichen Zeichenfolgen Zb, Zi ...Zi und P bezeichnen und einige
empfangene Zeichenfolgen Fehler enthalten, so kann das Syndrom S\, S2 erzeugt werden durch Verarbeitung
dieser Zeichenfolgen nach den durch die Gleichungen (8) und (9) gegebenen Paritätsprüfregeln, welche
spurorientiert sind. Die beiden Syndromvek'.oren S; und
& sind somit gegeben durch:
S2 = T0Z0 ® T1Z1 ® T1Z1 ® T3Z3 ® T1Z4 ® T5Z5 ® T"Zb © T1Z1
H-Ί
Die Berechnung von S2 beruht auf Spur- oder
Horizontalvektoren und nicht auf Byte- oder Vertikalvektoren, indem die Matrix der Fig.4 zur Matrix der
Fig.6 transformiert wird. Das heißt, daß die Syndromerzeugung
durch Mittel zur Decodierung der in F i g. 6 gezeigten W-Matrix erreicht wird. Die Transformation
der //-Matrizen ist insofern wichtig, als man das Syndrom Su S2 und schließlich die Fehlermuster ei, d
durch Verwendung der sequentiell verarbeitbaren Decodier-ZZ-Matrix erhält, so daß die schließliche
Fehlerkorrektur in den Z-Vektoren erfolgen kann, die in Spurrichtung verlaufen. Das ist wichtig, weil die
Spurfehler bei Magnetbandgeräten häufiger sind. Außerdem wird dadurch eine sequentielle Verarbeitung
beim Codieren und Decodieren möglich mit den quer zu den Spuren (vertikal) verlaufenden Bytes, die eine
minimale Pufferkapazität erfordern. Somit spart die Transformation der W-Matrizen beträchtliche Zeit und
Aufwand bei der Codierung, während sie eine Fehlerkorrektur in mehreren Spuren ermöglicht.
Gemäß vorliegender Erfindung erhält man 52 aus den
empfangenen Bytevektoren C, B) ...Bj unter Verwendung
der Gleichung:
S2 =
/aj iai w idling, VY vii uiv.
Q ® T1B1 ® T2B2 Θ T3B3 θ T4B4 θ T5B5 ® T6B6 θ T1Bn
(14b)
5; kann mit einer ähnlichen Schaltung erzeugt Erzeugung von 52 bevorzugt, welches mit einem
werden, wie sie für die Codierung verwendet wurde, d. h. Rückwärtsschieberegister arbeitet. Zu diesem Zweck
durch Vorwärtsschieben von B7 ... C. Ein Rückwärts- kann die Syndromgleichung folgendermaßen umge-
schieberegister (C... Bi) spart jedoch Decodierzeit bei 40 schrieben werden:
der Fehlerkorrektur, und somit wird ein Verfahren zur
der Fehlerkorrektur, und somit wird ein Verfahren zur
2 — ■* L ι *^ J ^' L^ ι
worin die negativen Exponenten der Matrizen T eine Rückwärtsverschiebung anzeigen. Die Rückkopplungsverbindungen werden gemäß g(x) (Tabelle 1) gemacht,
jedoch erfolgt die Verschiebeoperation rückwärts und entspricht der Multiplikation des Inhaltsvektors mit der
Matrix T~\ der Kehrmatrix von T. Der hereinkommende
Vektor wird vormultipliziert mit der Matrix T7, unter Verwendung eines Netzwerkes von Antivalenzschaltungen
(F i g. Ha). Das Rückwärtsschieberegister (SR 2) ist in F i g. 11 gezeigt Die empfangenen Bytes Q By, B2...
Bj werden in dieser Reihenfolge nacheinander in das SR 2 eingeschoben.
In einer praktischen Ausführung stellt Gleichung (14b) die Verarbeitung in der sogenannten Vorwärtsrichtung
dar, wobei die Byte-Reihenfolge ist:
Bj, Bb, Bs, Ba, Bj, B2, Bj, C.
(14c)
Dagegen stellt Gleichung (14c) die Verarbeitung in der
sogenannten Rückwärtsrichtung dar, wobei die Byte-Reihenfolge ist:
C, B3, B2, B3. Ba, BaB6, B2.
5] kann mit einer Antivalenzschaltung 46 errechnet
werden, welche ein Schieberegister SR3 nach Fig. 12
speist.
c) Erzeugung der Fehlermuster (e\, efi
Wenn die empfangenen Daten fehlerfrei sind, werden die Paritätsprüfgleichungen erfüllt und die Syndrome 5i
und S2 sind beide Null. Ein von Null verschiedenes 5i
und/oder S2 zeigt jedoch an, daß die empfangenen
Daten fehlerhaft sind. Nach der Fehlerkorrekturmöglichkeit des Code nehmen wir an, daß Si = S2 =0
Fehlerfreiheit anzeigt und 5i Φ 0 oder S2 Φ 0 angibt daß
eine oder zwei Spuren fehlerhaft sind (ein oder zwei horizontale Fehlerbündel). Diese fehlerhaften Spuren
sind durch die Spurnummern i (erste fehlerhafte Spur mit der niedrigeren höheren und j (zweite fehlerhafte
Spur mit der höheren Nummer) bezeichnet und durch die Signalqualitäts-Zeiger Qi und Qj in Form einer
logischen »1« markiert, welche eine schlechte Signalqualität anzeigt Der Einfachheit halber ist angenommen,
daß/< j ist wobei 0 < /
< 7 und 0 < j < 8 ist Der Code kann die Fehlermuster ei und ei bestimmen
(ez = 0, wenn / = j), die den Spuren /bzw./zugeordnet
sind.
Die Signalquaiiiäts-Zeigei (Felueruinweissignalc)
werden von dem Gerät erzeugt, in dem die Fehlerkorrektur stattfindet. Zur Erzeugung dieser Fehlerhinweissignale
(Zeiger) gibt es natürlich verschiedene Möglichkeiten, wie z. B. in der DE-OS 21 23 769 beschrieben. Im ΐ
vorliegenden Ausführungsbeispiel wird die Qualität der Signale bei Lese/Aufzeichnungsoperationen auf Echtzeitbasis
als Hinweis für mögliche Fehlerbedingungen benutzt. Die Fehlerkorrektureinrichtung erzeugt selbst
auch Fehlerhinweissignale, die im folgenden »Codefehler-Zeiger« genannt werden.
Die aus den codierten Datenbytes Bo ... Bj und dem
Prüfbyte C erzeugten Syndrome S] und 52 sind
Funktionen der Fehler in diesen Bytes. Die Fehler werden dargestellt durch Fehlermuster ei und U2, welche ι ί
zu den Spurenvektoren Z1 und Z; der Spuren / und j
gehören (wenn / — j, ist 62 = 0 und nur eine Spur
fehlerhaft). Die empfangenen Signale sind Zj = Z, ® ei
und Zj = Zj © β2. Die Fehlerkorrektur in den Spuren /
und j wird dadurch erreicht, daß man die empfangenen Signale (Z1 bzw. Zj) mit den erzeugten Fehlermustern fe,
bzw. e2) durch eine Antivalenzverknüpfung kombiniert
(bitweise); auf diese Weise (durch Komplementierung der fehlerhaften Bits) werden die richtigen Signale
wiedergewonnen. Aus den Gleichungen (8), (9), (13) und (Ha) ergibt sich für S1 und S2:
51 = e, Θ c2
52 - Fe1 Θ Tje2 für / φ j φ 8
S2 = 7"'V1 für./ = 8 oder ; = /.
Es ist zu beachten, daß S2 =0 beiy = 8 oder j = /die
Abwesenheit von Fehlern in den Informationsspuren 0 ... 7 bedeutet (d. h. keine Korrektur nötig). Bei der
Auflösung nach C2 ergibt sich:
C1 = Mj ,[S1 ΘΓ%] (15)
Mj--, = [Id+Tj ']"' für./-; φ Oundj φ 8 (16a)
Mj.i = ld fury-/ = 0oder./= 8 (16b)
/,/ist eine Einheitsmatrix. Die Matrix Mj-,erhält man
aus V-für j-i = 1,2,3,4,5,6,7.
Die Gleichung (15) läßt sich auf folgende Weise realisieren: T-1S2 erhält man aus der /-maligen
Rückwärtsverschiebung von SR 2 mit S2 als Anfangsinhalt.
Fig. 15 zeigt die Schaltung, die Si, 7-'S2 und die
Binärsignale (j-i) = χ als Eingangssignale hat und den
Wert ej errechnet. Die Blöcke Mj-i für j-i = 1,2,3,4,5,
6, 7 sind Netzwerke aus Antivalenzschaltungen, welche die Matrizen Mj-,- der Gleichung (16a) realisieren, wie
später an einer Ausführungsform mit Schieberegister gezeigt wird.
Wenn nur eine Spar fehlerhaft ist (der Fall mit i = j
und C2 = 0), erzeugt die Fehlerkorrektureinrichtung
selbst einen Codefehler-Zeiger. Da der Codefehler-Zeiger zuverlässiger ist, können die Signalqualitäts-Zeiger
in diesem Fall ignoriert werden. Der Codefehler-Zeiger wird in diesem Fall erzeugt durch Auflösung der
Gleichung (15) nach dem Index /mit ej = 0 und j—i = 0,
d. h. /wird so gewählt, daß
e2 = M0(S1
'S2) =
(17)
Dazu kann man einfach die Anzahl von Schiebeoperationen (Matrixmultiplikationen) des SR 2 (mit £2 als
Anfangsinhalt) zählen, während man die Ausgabe ez der
in Fig. 15 gezeigten Schaltung auf ei = 0 [dh.
S1 = T-1S2 gemäß (17) untersucht Wenn diese Ausgabe Ci r.sch rrisxim::! 7 Verschiebungen v"n Nu" verschieden
ist und auch S2 φ 0, dann sind zwei oder mehr Spuren
fehlerhaft. Wenn S2 =0 und U2 Φ 0, dann liegt nur ein
Fehler in der Paritätsspur (Spur 8) vor.
d) Korrektur von Spurfehlern
Mit dem Fehlermuster &i und dem Syndrom Si
können die fehlerhaften Spursignalfolgen Z, und Z1 jetzt
korrigiert werden und die korrigierten Spursignalfolgen Z/und Zjfolgendermaßen erzeugt werden:
z, =
s,
(18)
(19)
Ausführungsbeispie! für den Codierer
In F i g. 7 ist in Form eines Blockdiagramms der Codierer des Systems gezeigt. Die Codierung wird hier
nur für einen einzelnen Codeblock (mit den Datenbytes B\ ... Br) beschrieben. Es ist klar, daß dieser Vorgang
während der Aufzeichnung von Daten sehr viele Male hintereinander wiederholt wird, eben für jeden Codeblock
einmal. (Ein Aufzeichnungsblock, der durch eine Lücke am Anfang und Ende gekennzeichnet ist und in
einem Zuge aufgezeichnet oder gelesen wird, enthält normalerweise viele Codeblöcke von je acht Bytes.
Hierauf wurde schon weiter vorne hingewiesen.)
Der Codierer erzeugt das Prüfbyte C aus den Informationsbytes B1, O2... Bi, die sequentiell empfangen
werden, nach der Gleichung (3a) und fügt auch zu jedem der Bytes B], B2... Bj und Cein Paritätsbit hinzu.
Die Datenbytes werden einem Datenverteiler zugeführt, der durch ein Taktgebersignal gesteuert wird. Das
Datenbyte mit der Bezeichnung Bi wird vom Datenverteiler 12 in das linear rückgekoppelte Schieberegister
SÄ 1 eingegeben und im folgenden nacheinander die Datenbytes B6, Bs... B\. Die im Abschnitt »Codierung«
beschriebenen Matrixmultiplikationen werden durchgeführt. Aus diesen Datenbytes erzeugt das Schieberegister
SÄ 1 (10) sequentiell das Prüfbyte C. Dieses Prüfbyte wird zu den Datenbytes am Ausgang eines
UND-Gliedes 20 hinzugefügt. Gleichzeitig mit der Erzeugung des Prüfbytes C werden die Paritätsbits der
Bytes B7, B6 ... einschließlich des Paritätsbits des
Prüfbytes C erzeugt Um die Paritätsbiterzeugung für die Bytes durchführen zu können, werden die Eingabeinformationsbytes
B7, Bf, ... B] in der angegebenen
Reihenfolge dem Byteparitätsgenerator 14 über das Kabel 13 zugeführt Zur Startzeit des Codierers (I0) wird
der Binärzähler 16 für das gewählte Beispiel auf den Wert »7« geladen und mit den Impulsen des
Taktgebersignals heruntergezählt, so daß die Zeitsignale T1 ... f7 für die Bytes B] ... B7 entstehen. Die
Zeitgebersignale betätigen auch das Schieberegister 10 (SR 1) und den Datenvertei'er 12. Wenn der Zählwert 0
erreicht ist, wird das Schieberegister für weitere Schiebeoperationen durch das Taktgebersignal gesperrt, und sein Inhalt nach einer Verzögerung von einer
Zeiteinheit mittels der Verzögerungseinrichtung 18 durch die UND-Schaltung 20 ausgegeben. Einzelheiten
des Schieberegisters Si? 1 zu: Errechnung des Prüfbyte Csind in Fig.8 gezeigt Die Rückkopplungsverbindungen 24 sind durch die binären Koeffizienten g\...gi des
gewählten Polynoms g(x) bestimmt Der Einerkoeffizient bezeichnet eine Verbindung (ausgezogene Linie)
und der Nullkoeffizient das Fehlen einer Verbindung (gestrichelte Linie). Jede Stufe des Schieberegisters
SÄ 1 enthält nach den Verschiebeoperationen ein Bit des Vektors C. Die Verschiebeoperation entspricht der
Multiplikation des Schieberegister-Inhaltsvektors mit
der Begleitmatrix T(siehe Fig.4). Eingabeverbindungen sind so gelegt, daß der hereinkommende Vektor mit
der Matrix T vormultipliziert wird. Dazu werden der Eingang B(O) mit dem Eingang der ersten Stufe des
Schieberegisters und die nachfolgenden /^Eingänge mit den Eingängen der jeweils nächstfolgenden Stufe
/ + 1 verbunden. Diese Verbindungen bewirken prak- ι ο tisch eine Verschiebung um eine Stufe und dadurch eine
Multiplikation mit T— eben die gewünschte Vonnultiplikation. Am Anfang enthält das Schieberegister SR 1
lauter Nullen oder einen anderen Referenzwert
Der Byteparitätsgeneralor 14 ist in Fig 9 gezeigt, is
Die Bits (0) ... (7) der Bytes S, bzw. C werden darstelluiigsgemäß durch die Anordnung geleitet und
auch in eine Modulo-2-Addiererscha!tung 22 eingegeben, deren Ausgabe die Parität P® bzw. />
<y des Eingabedatenbytes darstellt Somit ist also die Ausgabe
des Byieparitätsgenerators 14 ein 8-Bit-Datenbyte
(oder das Prüfbyte) mit dem entsprechenden Paritätsbit Der codierte Block wird im vorliegenden Beispiel einem
mehrspurigen Aufzeichnungsgerät zugeführu
Arbeitsweise des Decodieren (Syndrom-Generator)
und der Fehlerkorrektureinrichtung
25
30
Nachdem der Block codiert und aufgezeichnet wurde, werden die vom Aufzeichnungsträger gelesenen Signale
in Form aufeinanderfolgender 9-Bit-Bytes an den Decodierer (Fig. 10) übertragen. Die Decodiereinrichtung wird durch ein Taktsignal über den Binärzähler 60
gesteuert Am Anfang jedes Codeblocks von Bytes stellt ein Startimpuls den Zähler 60 auf seine achte Stellung,
wodurch die Startzeit fo angegeben wird (der Binärzähler durchläuft bei jedem Datenbyte einen vollständigen
Zyklus). Die Erzeugung dieses Startimpulses kann in der gleichen Weise erfolgen, wie die bisherigen Leseschaltungen einen Lesestart-Impuls erzeugen (siehe z.B.
DE-AS 11 25 698). Jeder Taktimpuls kann ein Lesestart-Impuls sein, wenn der Zähler 60 auf dem Zählwert »8«
steht Auf diese Weise steuert der Zähler 60 nicht nur die Ablauffolge des Decodieren, sondern er gibt auch das
Format der gelesenen Bytes an. Die Synchronisierung eines solchen Formatzählers ist gezeigt in der DE-OS
20 69 600.
Die in der einen oder anderen Reihenfolge empfangenen Nachrichtenbytes Bj ... Bj und C werden
nacheinander im Rahmenpuffer 40 (siehe DE-OS 11 25 698) gesammelt und schräglauf-korrigiert Die
zugehörigen Signalqualitäts-Zeiger Qi, Q2 ... Qr, Qs
werden in den N-Anzeiger 74 eingegeben oder zusammen mit den empfangenen Nachrichtenbytes
schräglauf-korrigiert
Der N-Anzeiger 74 erzeugt aufgrund der Signalqualitäts-Zeiger die Signale Ni und N3, die »weniger als
zwei« (Ni) oder »mehr als zwei« (N3) fehlerhafte Spuren
angeben. Die beiden Signale Wi und N3 sind logisch 0,
wenn genau für zwei Spuren die Signalqualitäts-Zeiger den Wert 1 haben und damit zwei Spuren mit schlechter
Signalqualität bezeichnen. Die beiden Zeiger Q werden in diesem Fall vom N-Anzeiger 74 nicht gesperrt,
sondern weitergeleitet durch das ODER-Glied 76 zum Fehlerspur-Parametergenerator 54. Wenn Signal
M=I, so bedeutet dies, daß Fehler in mehreren
Spuren vorliegen und daß keine Korrektur erfolgen kann. Wenn Signal Ni = 1, so bedeutet dies, daß nur in
einer Spur (oder keiner) ein Signalfehler vorliegt Wenn der Codefehler-Zeiger auf eine bestimmte Spur weist
und ein allein vorliegender Signalqualitäts-Zeiger auf eint andere Spur, so könnten die beiden Zeiger
zusammengefaßt werden. Dies ist aber nicht ungefährlich und sollte vermieden werden, wenn nicht eine
umfassende Fehlerentdeckung neben dieser Fehlerkorrektur durchgeführt wird, wie z. B. beschrieben im
Schweizer Patent 4 31 147 bzw. DE-OS 12 87 339.
Der Decodierer (F i g. 10) errechnet zuerst sequentiell die Syndrome Si und S2 in den Schieberegistern SÄ 3
und SR2, dargestellt in den Fig. Π und 12 (genauere
Beschreibung weiter unten). Die gelesenen oder empfangenen codierten Nachrichtenbytes Q Bi, B2, B3,
&, B5, B6... Bj werden an die Schieberegister SR 3 und
SÄ 2 durch den Datenverteiler 40 in dieser Reihenfolge angelegt. Sobaid ein 8-Bit-Byte (Paritätsbit
entfällt) an den Schieberegistern SÄ 3 und SÄ 2 empfangen wurde, wird der Inhalt der Register
synchron durch das Taktsignal verschobea
Der Zählerstand »0« im Binärzähler 60 zeigt an, daß alle Bytes C, Bi ... Bj empfangen wurden. Zu diesem
Zeitpunkt enthält SÄ 3 (F i g. 12) Paritätsbits, die aus den empfangenen Bytes abgeleitet wurden. Die Antivalenzglieder 42 verknüpfen die neu erzeugten Paritätsbits mit
den aus der Paritätsspur empfangenen Bits P = Bj(S)...
C(8), und erzeugen damit den Syndromvektor Si, der dann zum Fehlermustergenerator 45 (Fig. 15) weitergegeben werden kann. Schieberegister SÄ 2 enthält
dann bereits Syndrom S2, welches weiterverarbeitet wird, so daß sich nach /Verschiebungen der Wert T-'S?
ergibt.
Wenn bei Fehlerfreiheit P=P. dann ergibt sich Si = 0; also werden keine fehleranzeigenden Signale
über die UND-Schaltungen 65 an den Fehlermustergenerator 45 abgegeben. Außerdem wird bei Fehlerfreiheit am Ende der Prüfoperationen der Inhalt des
Schieberegisters SÄ 2 aus lauter Nullen bestehen. Wegen Sj = 0 werden wiederum keine fehleranzeigenden Signale an den Fehlermustergenerator 45 abgegeben. Das Resultat ist daß der Codefehler-Zeigergenerator 72 keinen Codefehler-Zeiger abgibt Demzufolge
können die empfangenen (korrekten) Daten die Fehlerkorrektureinrichtung 42 (Fig. 18) unverändert
durchlaufen.
Wenn weniger als zwei Spuren durch die Zeiger ζ) als fehlerhaft bezeichnet werden, ist die Verarbeitung
folgendermaßen: In diesem Fall erzeugt der N-Anzeiger das Signal Ni als eine logische »1« und hindert dadurch
die externen Zeiger Q daran, zur ODER-Schaltung 76 weiterzulaufen. Statt dessen erzeugt das System
Codefehler-Zeiger Q' durch den Ringzähler 70 und den Codefehler-Zeigergenerator 72. Die Schaltung der
F i g. 10 löst sozusagen die Gleichung (17):
C2 = M0(Si® T-S2) =0
Spur / wird dadurch identifiziert, daß S2 /-mal
verschoben wird (O2 = 0). Der Ringzähler 70 startet mit
dem Zählwert-0-Signal vom Zähler 60. Gleichzeitig
stoppt das Zählwert-0-Signal vom Zähler 60 das SÄ 3
und öffnet in Verbindung mit dem Signal Ni durch das
ODER-Glied 102 und das UND-Glied 101 die Torschaltung 64 und 65. Zu dieser Zeit erscheinen die
Syndrome Si und T-11St (d.h. S2) am Ausgang der
Torschaltungen 65 bzw. 64. Die Taktsteuerung schiebt
den Ringzähler 70 und das SÄ 2 synchron, erhöht jedesmal den Zählwert im Ringzähler 70 und multipliziert
den Inhalt des Si? 2 mit T-1. Somit nimmt der Zählwert nacheinander zu (0,1,2...) und der Inhalt des
SÄ2 wird T-OS2, T- 1S2, T-2S2 ... Dadurch ändert sich
synchron mit dem Taktsignal der Ausgangswert der Torschaltung64(T-OS2, T-^S2, T-2S2).
Wenn das Signal Ni als logische »1« vorhanden
ist, erzeugt es natürlich den vom Fehlerspur-Parametergenerator 54 kommenden Wert j—i=0.
Dieses Signal öffnet den direkten Weg (Matrix Ai0 =
Identität) im Fehlermustergenerator 45. Demzufolge wird die Ausgabe es des Fehlermustergenerators 45
nacheinander Si ® T-0S2, S1 9T-1S2, Si ® T- 2S2 usw.
synchron mit dem Taktsignal. Dieses Signal ej wird jedoch durch das Signal N\ in der Torschaltung 103
daran gehindert, die Fehlerkorrektureinrichtung 42 zu erreichen. Das Signal ej wird statt dessen dem
Codefehler-Zeigergenerator 72 zugeführt, der kontinuierlich auf ej = 0 prüft Wenn dieser Fall eintritt d. h.
wenn ft = Si®-'S2 beim /-ten Zeitsteuersignal (/<8) den
Wert 0 erreicht (Si = T-1S2), erzeugt der Codefehler-Zeigergenerator
72 das Zählerstopsignal S, welches den Ringzähler 70 und das Schieberegister SÄ 2 über das
UND-Glied 68 anhält Der Zählwert Ä im Ringzähler hat zu diesem Zeitpunkt den Wert /und wird durch das
Signal r, angezeigt Dieses wird als Zeiger Q' durch die Signale ej = 0 und N\ = 1 vom Codefehler-Zeigergenerator
72 weitergegeben. Der Zeiger Q' wird durch die ODER-Schaltung 76 dem Fehlerspur-Parametergenerator 54 zugeleitet Wenn der Ringzähler 70 den
Zählwert 8 erreicht bevor beim Codefehler-Zeigergenerator 72 ej den Wert 0 hat, dann erzeugt das Signal
Π vom Zählwert Ädes Ringzählers 70 ein Zählerstopsignal
S und hält damit SÄ 2 und Ringzähler 20 an. Das Signal S2 = 0 wird durch den Fehlermustergenerator
45 kontinuierlich erzeugt und dem Codefehler-Zeigergenerator 72 zugeleitet. Wenn dieses Signal S2 = 0 den
Binärwert 0 hat und der Codefehler-Zeigergenerator für den Ringzählerwert Ä den Wert »8« feststellt, wenn
ej noch nicht gleich 0 ist wird daraus geschlossen, daß Fehler in mehr als einer Spur vorliegen und somit nicht
korrigierbar sind. Das wird durch den Codefehler-Zeigergenerator 72 angezeigt der einen binären 1 -Wert
für das Signal E (»unkorrigierbarer Fehler«) liefert. Wenn das Signal S2 = 0 den Binärwert »1« hat liegt der
Fehler in der Paritätsspur. Das wird dadurch angezeigt daß der Codefehler-Zeigergenerator das Zeigersignal
Qi als binäre Eins abgibt
Zur Korrektur von Fehlern in zwei Spuren wird der Binärzähler 60 benutzt während der Ringzähler 70
benutzt wird, wenn Fehler nur in einer oder in keiner
Spur auftreten. Der N-Anzeiger 74 erzeugt die Signale Nt und A/j, welche anzeigen, daß weniger {Nt = 1) oder
mehr (Ak=I) als zwei Spuren Fehler enthalten. Die Signale A/t und /V3 haben beide den Binärwert Null, wenn
genau zwei Spurzeiger den Wert Eins haben und damit anzeigen, daß zwei Spuren fehlerhaft sind. Die Zeiger Q
werden in diesem Fall vom N-Anzeiger ungehindert durch die ODER-Schaltung 76 an den Fehlerspur-Parametergenerator
54 weitergegeben. Der Fehlerspur-Parametergenerator gibt die Zahl / für den Binärzähler 60
ab und die Steuersignale (j— i) = χ für den Fehlermustergenerator 45. Dadurch ist der Binärzähler
60 bereits auf den Wert i eingestellt, wenn durch das Nullwert-Signal vom Zähler 60 das Herunterzählen des
Zählers 62 startet Das Schieberegister SR 2 wird
gleichzeitig und synchron mit dem Taktsignal weitergeschoben. Beim Zählstand 0 des Zählers 62 bewirkt die
letzte Schiebeoperation im Schieberegister SÄ 2, daß dessen Inhalt zu T-^S2 wird. Das Zählwert-0-Signal vom
Zähler 62 durchläuft das ODER-Glied 102 und das UND-Glied 101 und öffnet die Torschaltungen 64 und
65, so daß die Werte Si und ^'S2 an den Fehlermustergenerator
45 weitergegeben werden. Das ZähIwert-0-Signal
vom Zähler 62 bewirkt auch, daß der Zähler 62 und das Schieberegister SÄ 2 angehalten werden. Beim
Empfang von Si und T- 'S2 als Eingangswerte erzeugt
der Fehleraiustergenerator 45 das Fehlermuster C2
unter Benutzung der Steuersignale (j—i) — χ vom
Fehlerspur-Parametergenerator 54. Das Syndroni S,
und das Fehlermuster C2 werden durch die geöffneten
is Torschaltungen 65 und 103 zur Fehlerkorrekturschaltung
42 weitergeleitet
Für die Fehlerkorrektur benutzt die Fehlerkorrekturschaltung 42 das Fehlermuster ej und das Syndrom Si.
Die empfangenen Daten (mit Fehlern) werden in die Fehlerkorrekturschaltung 42 vom Rahmenpuffer 40
gebracht und den verschiedenen Antivalenzgliedern in der Fehlerkorrekturschaltung 42 als Zj-Vektoren zugeführt
Die ZrSignalfolgennotierung ist im Rahmenformat
der F i g. 5 eri 'art Die Spurzeiger / werden vom Fehlerspur-Parametergenerator abgegeben und die
Spurzeiger Q" kommen durch die ODER-Schaltung 76 entweder vom Codefehler-Zeigergenerator 72 oder von
externen Einrichtungen durch den A/-Anzeiger. Mit Hilfe dieser Zeiger werden die fehlerhaften Signalfolgen
Z1 und Z, zu + Z, und + Z1 korrigiert Die anderen
Signalfolgen werden ohne jegliche Änderung als korrekt weitergeleitet
Wenn nur eine oder keine Spur fehlerhaft ist sind die Werte von e? bzw. Si demgemäß 0 und somit wird die
Korrektur durch die Fehlerkorrekturschalter 42 richtig durchgeführt
Aufbau des Decodieren und der
Fehlerkorrekturschaltung
Fehlerkorrekturschaltung
Zum besseren Verständnis der Arbeitsweise der Fehlerkorrektureinrichtung werden anschließend die
einzelnen, das Decodiersystem bildenden Schaltungen beschrieben. Der Rahmenpuffer und Datenverteiler 40
kann in bekannter Weise aufgebaut sein; er muß die Information nach Bedarf verteilen können. Die Informationseingabe
zum Rahmenpuffer und Verteiler 40 erfolgt in Form von 8-Bit-Bytes mit einem Paritätsbit
Information wird auf die Schieberegister SÄ 3 und SÄ 2 in Form bitparalleler Bytes gemäß Darstellung in
F i g. 10 so verteilt, daß das Prüfbyte zuerst kommt Eine sehr einfache, hierfür geeignete Speichereinrichtung ist
eine Reihe von Registern, eines für jedes Informationsbyte. Die Register müssen in umgekehrter Richtung
sowie rechtwinklig zur Einleserichtung lesbar sein, um die Bitgruppen (Signalfolgen) Z, auslesen zu können.
Das Schieberegister SÄ 2 ist im einzelnen in F i g. 11
gezeigt Die Informationsbytes oder Prüfbytes werden als Eingabe einem P-Multiplizierer 44 zugeführt dessen
Einzelheiten in F i g. 11 a gegeben sind. Die Bits jede:
Bytes werden nach Multiplikation mit V als Eingabe zu den Modulo-2-Addiererschaltungen 30 benutzt, die bei
jeder Speicherstufe des Schieberegisters vorgeseher sind. Die Speicherstufen des Schieberegisters sine
numerisch von 0 bis 7 entsprechend den Bits 0 bis 7 des Eingabebytes bezeichnet Wie bereits gesagt wurde
erfolgen die Rückkopplungsverbindungen gt bis g,
entsprechend dem Wert O oder 1, der dem Term in der Gleichung
g(x) =
zugeordnet ist Wenn in der Gleichung gi=Q ist, zeigt
dies an, daß keine Rückkopplungsverbindung vorliegt, während g\ = 1 eine Rückkopplungsverbindung bezeichnet
Hierbei handelt es sich um ein Rückwärtsschiebere- ι ο gister, d. h, die Information wird aus der letzten Stufe 7
in Richtung der ersten Stufe 0 geschoben, und die Rückkopplung 31 zu ausgewählten Stufen komm t von
der Stufe 0. Jede Verschiebung im Schieberegister ist im wesentlichen eine Multiplikation der Eingabewerte mit
T-'. Die Ausgabe des Schieberegisters ist:
S2 =
... Q[T1Bn]
Der ^-Multiplizierer ist im einzelnen in Fig. 11a
gezeigt Die Schaltung besteht aus acht Modulo-2-Addierern 34, deren Ausgabewerte die Bits 0 bis 7 des Byte
TB darstellen. Die Eingabeverbindungen zu den Modulo-2-Addiererschaltungen 34 werden entsprechend
der in F i g. 11 a gezeigten Matrix V vorgenommen. Die erste Zeile der Matrix enthält z. B. Einsen in
den Positionen 1, 4, 5. 6 und 7, die anzeigen, daß eine
entsprechende Verbindung zu dem Modulo-2-Addierer Nr. 0 vorgenommen werden muß. In ähnlicher Weise
stellen Einsen in den anderen Zeilen der Matrix entsprechende Verbindungen zu anderen Modulo-2- Addierern
dar. Diese Schaltung multipliziert das Eingabebyte ßmit T.
Die in F i g. 11 dargestellte Schaltung ist sowohl beim
Vorwärtslesebetrieb als auch beim Rückwärtslesebetrieb einer Magnetbandeinheit brauchbar. Die oberen,
dem SR1 zugeordneten Verbindungen sind für Operationen
im Vorwärtslesebetrieb geeignet (VOR). Das Signal VOR betätigt die Modulo-2-Addierer 26, um die
Größe TB, modulo 2 zu den anderen angelegten Größen zu addieren. Die Vormultiplikation mit Γ wird erreicht
durch Verbindung jedes Bit /mit dem Eingangsaddierer der Bitstelle /+1 (modulo 8). Die unteren, dem SR 2
zugeordneten Verbindungen enthalten Modulo-2-Addierer 30. die durch ein Rückwärtssignal (RÜCK)
betätigt werden, ähnlich wie oben schon beschrieben. Während einem beliebigen Zeitpunkt kann entweder
nur SR 1 oder aber nur SÄ 2 benutzt werden.
Die Signale VOR und RÜCK werden z. B. aus den Befehlen einer zugeordneten Zentraleinheit durch ein
1/O-Steuergerät abgeleitet.
F i g. 12 zeigt das Schieberegister SR 3 des Decodierers.
Die Eingabebytes C, Bu Bi... Bj werden (in dieser
Reihenfolge) an einen Modulo-2-Addierer 46 gegeben. Die Ausgabe der Modulo-2-Addiererschaltung 46 wird
in die letzte Stufe 7 des Schieberegisters SR 3 gegeben, von wo sie schrittweise weitergeschoben wird, bis die
Paritätsbits der angegebenen Bytes in den entsprechenden Stufen des Schieberegisters SR 3 stehen. Der
Ausgangswert einer jeden Stufe des Schieberegisters ist das entsprechende Bit; alle zusammen bilden die
Paritätsfolge P.
Fig. 13 zeigt die N-Anzeigeschaltung 74, die die
Steuersignale N, und N3 und die (durch eine Torschaltung
beeinflußten) Zeigersignale Q liefern kann. N\ zeigt an, daß nur ein Spurzeiger (Signalqualitäts-Zeiger) oder
keiner aktiv (binär 1) ist. Das Signal N3 zeigt an, daß
mehr als zwei Spurzeiger aktiv sind. Der Q-Ausgang gibt die Zeiger Qo bis Qs ab. Das Ausgabesignal Ni erhält
man von der »weniger als zwei«-Schaltung 48, die als Eingänge die Zeiger Qo bis Qs empfängt. Das Ausgabesignal
Ni wird nur aktiviert, wenn höchstens einer der Zeigereingänge erregt ist. Das Ausgabesignal N3 erhält
man von der »mehr als zwei«-Schaltung 50, die ein Schwellenwertnetzwerk ist und eine binäre Eins am
Ausgang liefert wenn an mehr als zwei Eingängen binäre Einsen anliegen. Die Q-Zeigerausgabe erhält
man über die UND-Glieder 52, wenn die Signale Ni und
Nj nicht aktiviert sind.
F i g. 14 zeigt schematisch den Fehlerspur-Parametergenerator
54, der die Spurzeiger / erzeugt, welche die erste fehlerhafte Datenspur, die sogenannte /te Spur,
bezeichnen. Die Schaltung erzeugt außerdem die Signale h, /Ί, k für eine dreistellige Binärzahl /, und die
jo Binärsignale j—i — 0, 1, 2, 3, 4, 5, 6, 7 aus den
eingegebenen Zeigersignalen Q. Fig. 14 zeigt, daß die
logischen Schaltungen 14A 14S und 14C in dem Fehlerspur-Parametergenerator 54 zur Erzielung der
obenerwähnten Ausgangssignale zusammengefaßt sind.
In Fig. 14a ist das Verknüpfungsnetzwerk zur Erzeugung der / Zeiger /0 ... h gezeigt, die die erste
fehlerhafte Datenspur, die sogenannte /-te Spur, bezeichnen. Kombinationen der Zeigersignale Qo bis Qj
werden als Eingabe zu den UND-Gliedern 56 benutzt.
Die Kombinationen sind in aufeinander um 1 ansteigender Reihenfolge angeordnet Die Gruppierung lautet
z. B. Q0 und Qo/Q\ und Qo/Q\/Qi usw. Alle Eingangssignale
mit Ausnahme des zusätzlichen Eingangssignals in jeder Kombination werden in Negationsschaltungen an
den Eingängen zu den entsprechenden UND-Gliedern 56 komplementiert. Solange alle Zeigereingänge Q1=O
sind, liefert kein UND-Glied 56 ein Ausgangssignal. Das erste von 0 verschiedene Zeigersignal Q, wird jedoch
durch ein Ausgangssignal /, vom entsprechenden UND-Glied 56 wiedergegeben, d.h. von dem UND-Glied
56, welches dieses Zeigersignal Q1 als zusätzliches,
nicht invertiertes Eingangssignal empfängt.
Die in Fig. 14b gezeigte Schaltung verwendet als Eingabe die in einer Schaltung gemäß Fig. 14a
erzeugten /-Zeiger. Die Schaltung erzeugt den /-Parameter als eine binäre Zahl aus b Bits (hier 6=3). Die
Eingabekombination der /-Zeiger werden nach Tabelle 2 bestimmt (siehe unten). Die Spalte j (0) hat z. B.
eine »1« in den Positionen 1, 3, 5 und 7. Die
ω Verbindungen zum ersten ODER-Glied sind entsprechend
die Zeigereingänge /1, /3, /5 und /7. Diese Eingabekombinationen werden den ODER-Gliedern 58
zugeführt deren Ausgangssignale gemeinsam eine binäre Zahl bilden. Die Zeile für /=5, bezeichnet durch
b5 /5, hat z. B. einen Einereingang für das erste ODER-Glied
58 und einen Einereingang für das dritte ODER-Glied 58, was einen Ausgangswert von 101
entsprechend der binären Zahl 5 ergibt
Parameter / als Binärzahl
Angezeigt
durch
durch
/ als Binärzahl
/(2) /(1)
/(2) /(1)
h
/3
O
O
O
O
O
O
O
1
1
1
1
1
1
1
O
O
1
1
O
O
1
1
O
1
1
O
O
1
1
1
O
1
O
1
O
1
O
1
O
1
O
1
10
15 UND-Schaltungen 88 in F i g. 15 acht UND-Glieder mit je zwei Eingängen darstellt Als weiteres (zweites)
Eingangssignal für diese UND-Glieder dient das zu dem betreffenden Zweig gehörende Binärsignal j—i=x.
Die Ausgabe der UND-Glieder wird einer ODER-Schaltungskombination 90 mit acht ODER-Gliedern,
de/en jedes acht Eingänge hat zugeführt; an deren Ausgängen wird der den Fehler darstellende achtstellige
Vektor ft abgegeben. Das Signal S2 = 0 wird aus den
Signalen T-'Sz durch ein ODER-Glied 91 erzeugt
Fig. 15a zeigt Einzelheiten des Multiplizierers M3.
Die Eingangsanschlüsse zu den Modulo-2-Addiererschaltungen dieses Multiplizierers werden nach der
unten gezeigten A/3-Matrix bestimmt Die verschiedenen Matrizen M\ bis Mi für
F i g. 14c zeigt das Bild einer Schaltung, die für jeden
Wert χ von j— > = χ ein Binärsignal aus den Spurzeigern
Q erzeugt durch paarweise Kombination der <?-Zeiger
in separaten UND-Gliedern 80. Diese Eingabeordnung für Q-Zeiger hat eine erste Gruppe von Paaren, die
durch den Wert 1 getrennt sind, während eine zweite Gruppe von Paaren durch den Wert 2 getrennt sind. Die
Paare in der dritten Gruppe sind durch den Wert 3 25 Ai1 =
getrennt die der vierten durch den Wert 4 usw. jedes dieser (?-Zeigerpaare wird an ein entsprechendes
UND-Glied 80 geleitet; die Ausgangssignale der UND-Glieder werden gruppenweise in ODER-Gliedern
82 zusammengefaßt, um die Signale j— i = χ zu
erhalten. Das Steuersignal j—i = 1 erhält man vom ersten ODER-Glied 82a, weiches als Eingänge die
Ausgänge von der ersten Gruppe von UND-Gliedern 80a empfängt, deren Eingangspaare durch den Wert 1
voneinander getrennt sind. Entsprechend sind die a anderen UND-Glieder 826 bis 82i auf ähnlichen
Eigenschaften basierend, verbunden. Das zweite ODER-Glied 826 hat z. B. das Ausgangssignal j-i = 2,
während das dritte ODER-Glied 82c das Ausgangssigna!./—/ = 3 hat usw. Ein einzelnes Eingabepaar Ni und
Qi wird an ein separates ODER-Glied 83 geliefert, welches das Ausgangssignal »j~i = 0 oder j = 8«
liefert Es sollte also jeweils nur eines der Signale j—;' = χ (= binär 1) sein und damit angeben, um wieviel
Einheiten zwei durch (^-Zeiger markierte Spuren 4>
auseinanderliegen.
Fig. 15 zeigt den Fehlermustergenerator 45 zur Erzeugung des Fehlermusters ei und des Signals S2 =
0 für den Codefehler-Zeigergenerator. Der Fehlermustergenerator 45 empfängt als einen Eingang S\ und als ™
zweiten Eingang T 'S2. Jedes Bit der beiden Vektoren
Si und T-1S2 wird als Eingabe für je eines der acht
Antivalenzglieder 85 benutzt. Das Ausgangssignal eines jeden dieser acht Antivalenzglieder 85 wird in je eines
der Antivalenzglieder-Netzwerke Mi bis M1 eingegeben,
wobei jedoch im untersten der acht Zweige (Fig. 15) kein Netzwerk M ist. Einzelheiten der
Antivalenzglieder-Netzwerke M sind in Fig. 15a gezeigt, wobei die Schaltung M3 als Beispiel dient. Die
Schaltungen führen eigentlich eine Multiplikation des Eingabevektors B aus. Die Multiplikationsmatrix erhält
man durch Lösung des Ausdruckes
g(x)=
sind folgendermaßen gegeben:
sind folgendermaßen gegeben:
01111111 | Mn = | 01011101 | Ii | loomoo |
0011111I | 10101110 | My — | 01001110 | |
0001111.1 | 01010111 | 10100111 | ||
11110000 | 011Ι0Π0 | 11001 111 | ||
00000111 | 01100110 | 11111011 | ||
11111100 | 11101110 | 11100001 | ||
11111110 | 01110111 | 01110000 | ||
11 P. 1111 | 10111011 | 00111000 | ||
00101010 | Ms — | 10001000 |
00010101 | 11000100 | |
00001010 | 01100010 | |
10101111 | 00111001 | |
11111101 | IOOIOIOO | |
01010100 | 01000010 | |
10101010 | 00100001 | |
01010101 | 00010000 | |
M3 =
11001001 | JL M | 00111110 |
01100100 | M,, = | 10011111 |
10110010 | 11001111 | |
10010000 | 01011001 | |
00000001 | 10010010 | |
01001001 | 11110111 | |
00100100 | 11111011 | |
10010010 | OlllllOl | |
Der Ausgangsvektor des Multiplizierers ist das Produkt aus Eingangsvektor und Mj-,. Jedes Bit des Ausgabebyte
vom M-Multiplizierer wird in ein separates
UND-Glied 88 eingegeben. Das bedeutet, daß jede der Die Verbindungen der verschiedenen Modulo-2-Addiererschaltungen
92 im Multiplizierer M3 sind durch die zugehörige Zeile der betreffenden Matrix gegeben. Bei
dem Multiplizierer M3 werdrn die Verbindungen z. B. entsprechend den Zeilen folgendermaßen hergestellt:
Die nullte Zeile hat eine »1« in den Positionen 0,1,4 und
7, somit hat der nullte Modulo-2-Addierer die Eingabe Bo, B], B4 und Bj. Die anderen Modulo-2-Addiererschaltungen
92 haben Eingaben entsprechend den Einsen in den entsprechenden Zeilen der Matrix, Die vierte Zeile
hat eine Eins nur in der siebten Position und ist somit als eine direkte Verbindung wiedergegeben.
In Fig. 16 sind Einzelheiten der Ringzählerschaltung
70 wiedergegeben, die in Fig. 10 in Blockform gezeigt
ist. Der Ringzähler 70 hat die Stufen 0 ... 8 mit einer Rückkopplung 94 von der achten zur nullten Stufe. Der
Ausgang jeder folgenden Stufe ist mit dem Eingang der
nächsthöheren Stufe verbunden. Die Ausgabe dieser Su-fen sind Stellensignale ro bis /&, die die Zahl R nach
Darstellung in F i g. 10 bilden. Diese Zahl R wird als eine
Eingabe für den Codefehler-Zeigergenerator 72 benutzt Die neun Stellensignale der Zahl R werden auf
neun separate UND-Glieder96geleitet,«re aus Fig. 17
zu ersehen ist Wie in F i g. 10 (und 17) zu sehen ist, sind
weitere Eingangssignale für den Codefehler-Zeigergenerator 72 das Signal N\ vom /V-Anzeiger 74 sowie ej
und Si = 0 /om Fehlermustergenerator 45. Die Ώ-Eingabe wird auf ein ODER-Glied 98 in Fig. 17
geleitet, welches ein Ausgangssignal erzeugt, wenn ej# 0 ist Dieses Signal wird auf ein UND-Glied 99
zusammen mit dem Signal Nx geleitet Die ei Φ 0 -Eingabe für das UND-Glied wird negiert, so daß, wenn ei =
0 und M = I das UND-Glied 99 ein Ausgangssignal
»1« erzeugt welches an acht UND-Glieder 96 geleitet wird. Diese acht UND-Glieder geben dann die
Eingangssignale ro ... η als Codefehler-Zeigersignale
Qo ... Qi' ab. Eines davon sollte binär 1 sein, und
dadurch die fehlerhafte Spur kennzeichnen. Wenn das Signal am Ausgang des ODER-Gliedes 98 binär 1 ist
(also ei Φ 0) und deshalb durch die Negationsschaltung
am UND-Glied 99 zu einer Null wird, erzeugt das UND-Giied ein Ausgangssignai binär 0, und daher
bleiben alle Codefehler-Zeiger (Q') gleich 0, wenn ei Φ 0 ist ausgenommen Qa'. Für Qs steuert das Signal
Si = 0 und das Signal &Φ 0 das UND-Glied 96a,
welches die Paritätsspur (Spur 8) als fehlerhaft bezeichnet wenn die Signale S2* 0 und ei# 0 beide
binär 1 sind. Das achte Stellensigna! (/&) von R wird dem
ODER-Glied 97 zugeleitet welches als zwei weitere Eingänge die Signale M sowie ei Φ 0 vom ODER-Glied 98 empfängt jedes dieser zuletzt genannten Eingangssignale wird negiert so daß man bei e2=0,
M=O oder r8=1 das Zählerstopsignal S erhält Das
Stellensignal rs und die Signale ej# 0 und Sz # 0
(negiert) sind Eingänge für das UND-Glied 100, dessen Ausgangssignai anzeigt daß der Fehler nicht korrigierbar ist, wenn £den Wert 1 hat
In Fig. 18 ist die Fehlerkorrekturschaltung 42 gezeigt, die die korrigierten Datenbytes +Z0, +Z\ ...
+Z) durch Kombination der gelesenen Datenbytes Zo,
Z\ ■■■ Zj, des Fehlermusterbytes ej und der Spurzeigersignale /o bis h und Qo" bis Qr" erzeugt Die
Kombination erfolgt nach den Gleichungen:
Z1 = Z1QS1 ®r2
7 — 7 (Q e Ϊ.j — Z,j O7 2 ■
Aus diesen Gleichungen ist zu ersehen, daß ei zu
beiden fehlerhaft gelesenen Bytes und Si nur zum ersten
fehlerhaften gelesenen Byte modulo 2 addiert wird. Diese Addition erfolgt in einem Satz von acht
Modulo-2-Addierern 95 und zwei Sätzen von je acht UND-Gliedern 93 für jede der Signalfolgen (Bitgruppen) Zb, Zx, Zi... Zi gemäß Darstellung in Fig. 18. Der
erste Satz von acht UND-Gliedern 93 wirkt wie ein Satz
von Sperrgliedern, deren jedes durch das zugeordnete
Spurzeigersignal Qf geöffnet wird, wenn dieses aktiv (=binär 1) ist Der zweite Satz von acht UND-Gliedern
93 wird durch das entsprechende /-Signal gesteuert und leitet das Syndrom Si nur, wenn der zugeordnete
/-Zeiger aktiv (=binär 1) ist Der Satz von acht
das korrigierte Wort (8 Bit) +Zi.
sowohl vorwärts als auch rückwärts gelesen werden.
Das beschriebene Verfahren und die dargestellte Einrichtung zur Fehlerkorrektur eignen sich für beide
Betriebsarten. Beim Lesen in Vorwärtsrichtung kann der Decodierer so betrieben werden wie der Codierer,
oder er kann — zur Zeitersparnis — rückwärts geschoben werden. Beim Lesen in Rückwärtsrichtung
benutzt man eine Rückwärtsverschiebung und Vormultiplizierung mit 71, wobei ein asymmetrisches Polynom
die Rückkopplungs- und Eingangsverbindungen sym
metrisch umkehrt usw. Es könnten auch alle Datensi
gnale eines Codeblocks zwischengespeichert werden, so daß Si und Sb aus den gepufferten Signalen und nicht aus
den sequentiell eintreffenden Bytes berechnet werden.
Da der Paritätsteil und der orthogonalsymmetrische
Teil voneinander unabhängig sind, sind bei schweren
Störungen immer zwei — wenn auch verschlechterte — Möglichkeiten der Fehlerkorrektur gegeben: eine, die
nur auf Byteparität beruht und eine, die auf dem optimalen Rechteckcode (ORC) beruht
Für eine Fehlerkorrektur in nur einer Spur wird, wenn keine Paritätsspur vorhanden ist ein unabhängig
erzeugter Spurzeiger benötigt Die für die Fehlerkorrektur in zwei Spuren beschriebene Einrichtung kann
hierzu benutzt werden, wenn man zwangsweise j—%
macht; die einzelne fehlerbehaftete Spur wird dann so korrigiert wie es für die Zweispur-Korrektur beschrieben wurde (mit Benutzung eines unabhängigen Zeigers).
Generell werden natürlich die Fehlerkorrekturmöglichkeiten reduziert, wenn man auf die Paritätsspur (oder
andere Codeelemente) verzichtet, und eine separate bpuridentifikation muß vorgesehen werden. Doch
erlaubt die Orthogonalsymmetrie immer noch eine Korrektur von Fehlern, die in Richtung einer Spur
verlaufen, aufgrund der Auswertung von Bytes, die quer
zu den Spuren verlaufen.
Die Erfindung läßt sich auch bei nichtbinärer Codierung ausführen, also z. B. in ternären, dezimalen,
hexadezimalen Systemen usw. Für den Paritätsvektor P kann man den Hamming-Code, Fire-Code usw. oder
sogar einen Rest benutzen, der auf einem anderen Polynom beruht.
Claims (15)
1. Verfahren zur Fehlerkorrektur für Daten, die als /j-stellige Datenbytes vorliegen und in π Kanälen
gespeichert oder übertragen werden, dadurch gekennzeichnet, daß
a) jeweils n— 1 Datenbytes (B) in einem Codeblock zusammengefaßt werden und für jeden der /7—1 Kanäle bytesequentiell nach der unten angegebenen Beziehung ein orthogonal-symmetrisches Prüfbit erzeugt und in dem betreffenden Kanal gespeichert bzw. übertragen wird (Prüfbyte C)
a) jeweils n— 1 Datenbytes (B) in einem Codeblock zusammengefaßt werden und für jeden der /7—1 Kanäle bytesequentiell nach der unten angegebenen Beziehung ein orthogonal-symmetrisches Prüfbit erzeugt und in dem betreffenden Kanal gespeichert bzw. übertragen wird (Prüfbyte C)
VC + T1Bx + T1B2 + ... T- 1Bn-, = 0
(A)
VZn +VZ1 +T2Z, + ... T"1 Zn-, = 0
(B)
20
worin V die /-te Potenz der Matrix Γ darstellt,
die eine Begleitmatrix eines binären Polynoms des Grades π ist und Z, den Spurvektor der Bits
von jeweils n-1 Datenbytes und dem Prüfbyte längs der Spur / darstellt, so daß das Prüfbyte
aus den Datenbytes und die Fehlerkorrektursignale aus den Signalen innerhalb der Kanäle
hervorgehen,
b) zu jedem Informationsbyte mindestens ein Paritätsbit erzeugt wird und neben dem
Informationsbyte im n-ten bzw. weiteren Kanälen gespeichert bzw. übertragen wird,
c) aus den gelesenen bzw. empfangenen Datenbytes, dem Prüfbyte und den weiteren Prüfzeichen
jeweils eines Codeblocks durch bytesequentiel- y, Ie Auswertung zwei Syndrome erstellt werden
nach Regeln, die denen bei der Erzeugung des Prüfbytes bzw. der weiteren Prüfzeichen entsprechen,
d) aufgrund der Syndrome mindestens eine Signal- m)
kombination erzeugt wird, welche die Fehlerstellen längs mindestens einem als fehlerhaft
gekennzeichneten Kanal angibt, und daß aufgrund der erzeugten Signalkombination oder Signalkombinationen die angezeigten v>
Fehler korrigiert werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die weiteren Prüfzeichen in jedem
Codeblock Paritätsbits sind, von denen jedem Byte des Codeblocks je eines zugeordnet ist, und daß
diese Paritätsbits in einem (n + l)-ten Kanal parallel zum Codeblock gespeichert bzw. übertragen werden.
3. Verfahren nach Anspruch I, dadurch gekennzeichnet, daß für die Erzeugung des Prüfbytes die
Datenstellen der n- 1 Datenbytes und die Prüf stellen des Prüfbytes in einer quadratischen Anordnung
von π mal η Bits (Fig. ?) betrachtet werden, wobei
eine Hauptdiagonale der quadratischen Anordnung als Symmetrieachse bestimmt ist und jeder Prüfstelle e>o
eine Untermenge aller Stellen der quadratischen Anordnung fest zugeordnet ist, die symmetrisch zur
Symmetrieachse liegt, und wobei die betreffende Prüfstelle selbst zu dieser Untermenge gehört, und
daß die in allen Stellen einer jeden Untermenge, mit b5
Ausnahme der zugeordneten Prüfstelle, stehenden Werte kombiniert werden und das Ergebnis als Wert
in die betreffende Prüfsteüe eingesetzt wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die Werte in den Datenstellen und
Prüfstellen Binärwerte sind, und daß in jeder Prüfstelle der Binärwert die modulo-2-Summe der
Binärwerte ist, die in allen übrigen Stellen der betreffenden Untermenge stehen.
5. Verfahren nach den Ansprüchen 3 und 4, dadurch gekennzeichnet, daß mit Bezug auf die
Diagonale in der quadratischen Anordnung, die quer zur Symmetrieachse verläuft und auf der eine
Prüfstelle liegt, alle übrigen Stellen der dieser Prüfstelle zugeordneten Untermenge nur auf einer
Seite dieser Querdiagonalen bzw. auf dieser Querdiagonalen selbst liegen.
6. Einrichtung zur Durchführung des Verfahrens nach den Ansprüchen 1 bis 5, gekennzeichnet durch
a) eine erste Syndromschaltung (SR 2) zur Erzeugung eines ersten Syndroms (S2) aufgrund der
sequentiell eingegebenen Datenbytes und dem Prüfbyte eines Codeblocks;
b) einen Fehlermustergenerator (45) mit Eingängen zur Aufnahme von Signalen (7"-'Si) aus der
ersien Syndromschaltung (SB 2);
c) einen Pufferspeicher (40) zur Aufnahme aller Bytes eines Codeblocks;
d) eine Fehlerkorrekturschaltung (42) mit Eingängen zur Aufnahme von Fehlermustersignalen
(ej), von Signalen, die fehlerbehaftete Kanäle anzeigen (I, Q"), und der den Kanälen in einem
Codeblock entsprechenden Signalfolgen (Zi) aus dem Pufferspeicher, und mit Ausgängen zur
Abgabe von den empfangenen Signalfclgcn entsprechenden korrigierten Signalfolgen (Zi).
7. Einrichtung nach Anspruch 6, gekennzeichnet durch eine zweite Syndromschaltung (SR 3, 42),
welche zu den empfangenen Bytes eines Codeblocks die Paritätsbits erzeugt und diese mit den entsprechenden
empfangenen Paritätsbits antivalent verknüpft, so daß das abgegebene zweite Syndrom (Si)
in den Bytes aufgetretene Paritätsfehler wiedergibt.
8. Einrichtung nach Anspruch t, dadurch gekennzeichnet, daß die erste Syndromschaltung (Fig. 11)
ein rückgekoppeltes Schieberegister enthält, dem die Datenbytes und Prüfbytes sequentiell zugeführt
werden, und welches die eine Syndromkombination (S2) erzeugt nach der Beziehung
Βι + VB2®...®T>-'Bn-u
S2
worin C das empfangene Prüfbyte und Bj die
empfangenen Datenbytes sind und Tdie Begleitmatrix eines irreduziblen Polynoms, das der Erzeugung
des Prüfbytes zugrunde lag, und das die Rückkopplungsverbindungen bestimmt.
9. Einrichtung nach Anspruch 8, dadurch gekennzeichnet, daß der Inhalt des Schieberegisters (SR 2)
rückwärts verschoben werden kann und daß eine Multiplizierschaltung (44) vorgesehen ist, welche die
Datenbytes und Prüfbytes vor der Eingabe ins Schieberegister mit T" ' vormultipliziert.
10. Einrichtung nach Anspruch 6, dadurch gekennzeichnet, daß eine Anzeigeschaltung (74)
vorgesehen ist, mit η Eingängen für binäre Hinweissignale (Q,), die den η Kanälen zugeordnet
sind und durch ihren Aktivzustand auf ein fehlerbehaftetes Kanalsignal hinweisen, mit einem ersten
Ausgang für ein erstes binäres Anzeigesignal (N\), das aktiv ist, wenn kein oder ein Hinweissignal aktiv
ist, mit einem zweiten Ausgang für ein zweites
binäres Hinweissignal (Nj), das aktiv ist, wenn mehr
als zwei Hinweissignale aktiv sind, und mit π weiteren Ausgängen, welche die π Hinweissignale
unverändert abgeben, wenn keines der beiden Anzeigesignale aktiv ist
11. Einrichtung nach Anspruch 10, dadurch
gekennzeichnet, daß ein Fehlerspur-Parametergenerator (54) vorgesehen ist mit Eingängen für
Ausgangssignale (M, Q) der Anzeigeschaltung (74), der an seinen Ausgängen folgende Signale abgibt:
a) Fehlerkanalsignale (I, i), welche den Kanal mit
der niedrigsten Nummer angeben, für den ein Fehler festgestellt ist, und
b) Differenzsignale (j—'X welche die Differenz
angeben zwischen den Nummern des Kanals, für den das Fehlersignal erzeugt wird und einem
zweiten Kanal, für den ein Fehler festgestellt wurde
12. Einrichtung nach Anspruch 8, gekennzeichnet
durch Schaltungen (62, 68) welchen die eine Kanalnummer /darstellenden Fehlerkanalsignale (i)
aus dem Fehlerspur-Parametergenerator (54) zugeführt werden und die den Inhalt des Schieberegisters
noch /-mal weiterverschieben, nachdem das letzte Byte eines Blocks eingegeben wurde, so daß eine
Syndromkombination T~ 'Sj abgegeben wird.
13. Einrichtung nach den Ansprüchen 7,11 und 12,
dadurch gekennzeichnet, daß dein Fehlermustergenerator (45) die Ausgangssignale der ersten (SR 2)
und der zweiten (SR 3, 42) Syndromschaltung und
die Differenzsignale (j—i) zugeführt werden, und daß der Fehlermustcrgcnerator an seinem Ausgang
Signale abgibt, die das Fehlermuster (es) für einen
fehlerbehafteten Kanal angeben.
14. Einrichtung nach Anspruch 13, dadurch gekennzeichnet, daß ein Codefehler-Zeigergenerator (72) mit einem zugeordneten Zähler (70)
vorgesehen ist, welchem das Fehlermuster Je2) und
das erste Ani.eigesignal (N\) zugeführt werden und
der Codefehler-Zeigersignale (Q') abgibt, die den einzigen fehlerbehafteten Kanal anzeigen, wenn das
Fehlermuster (ej) aus lauter Nullen besteht und das erste Anzeigesignal (N\) aktiv ist, und daß Verbindungen (76) vorgesehen sind, um dem Fehlermuster-Parametergenerator (54) diese Codefehler-Zeiger- »··
signale (Q') kombiniert mit den Hinweissignalen (Q) aus der Anzeigeschaltung (74) als Kanalzeigersignale «?'V zuzuführen.
15. Einrichtung nach Anspruch 14, dadurch gekennzeichnet, daß die Fehlerkorrekturschaltung
(42) mit der zweiten Syndromschaltung (SR 3, 45) verbunden ist zum Empfang des zweiten Syndroms
(Si), das ein überlagertes Fehlermuster für alle Kanäle darstellt; mit dem Fehlermustergenerator
(45) zur Aufnahme des von diesem abgegebenen Fehlermusters (e*), welches das Fehlermuster für
einen von zwei fehlerbehafteten Kanälen darstellt; und mit dem Pufferspeicher zur Aufnahme von
Signalgruppen (Z1), welche die in einem Block längs
den Kanälen empfangenen Signale darstellen; daß ω sie Eingänge aufweist für die alle fehlerhaften
Kanäle anzeigenden Kanalzeigersignale (Q") und für die den ersten fehlerhaften Kanal anzeigenden
Fehlerkanalsignale (I); und daß siie aufgrund der Signalkombination des zweiten Syndroms und des b5
Fehlermusters aus der Fehlermusterschaltung die empfangene Signalgruppe eines ersten Kanals
korrigiert, und aufgrund des Fehlermusters aus dem
Fehlermustergenerator allein, sofern dieses Fehler
anzeigt, die empfangene Signalgruppe eines zweiten Kanals korrigiert
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US30697572A | 1972-11-15 | 1972-11-15 | |
US390136A US3868632A (en) | 1972-11-15 | 1973-08-20 | Plural channel error correcting apparatus and methods |
Publications (3)
Publication Number | Publication Date |
---|---|
DE2357004A1 DE2357004A1 (de) | 1974-05-30 |
DE2357004B2 DE2357004B2 (de) | 1978-11-16 |
DE2357004C3 true DE2357004C3 (de) | 1979-07-19 |
Family
ID=26975471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2357004A Expired DE2357004C3 (de) | 1972-11-15 | 1973-11-15 | Verfahren und Einrichtung zur Fehlerkorrektur für Daten |
Country Status (8)
Country | Link |
---|---|
US (1) | US3868632A (de) |
JP (1) | JPS5626063B2 (de) |
CA (1) | CA1028064A (de) |
DE (1) | DE2357004C3 (de) |
FR (1) | FR2206633B1 (de) |
IT (1) | IT1006638B (de) |
NL (1) | NL7315629A (de) |
SE (1) | SE384932B (de) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE30187E (en) * | 1972-11-15 | 1980-01-08 | International Business Machines Corporation | Plural channel error correcting apparatus and methods |
JPS5423778B2 (de) * | 1974-06-21 | 1979-08-16 | ||
US4052698A (en) * | 1975-03-17 | 1977-10-04 | Burroughs Corporation | Multi-parallel-channel error checking |
US3982226A (en) * | 1975-04-03 | 1976-09-21 | Storage Technology Corporation | Means and method for error detection and correction of digital data |
US3958220A (en) * | 1975-05-30 | 1976-05-18 | International Business Machines Corporation | Enhanced error correction |
US4107650A (en) * | 1976-08-13 | 1978-08-15 | The Johns Hopkins University | Error correction encoder and decoder |
JPS5380105A (en) * | 1976-12-24 | 1978-07-15 | Sony Corp | Digital signal transmission method |
US4100403A (en) * | 1977-04-25 | 1978-07-11 | International Business Machines Corporation | Method and means for discriminating between systematic and noise-induced error in data extracted from word organized memory arrays |
JPS5461587U (de) * | 1977-10-06 | 1979-04-28 | ||
US4205324A (en) * | 1977-12-23 | 1980-05-27 | International Business Machines Corporation | Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers |
US4201976A (en) * | 1977-12-23 | 1980-05-06 | International Business Machines Corporation | Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels |
NL7804673A (nl) * | 1978-05-02 | 1979-11-06 | Philips Nv | Systeem voor het overdragen van binaire informatie over een aantal kanalen. |
GB2042228B (en) * | 1979-01-31 | 1983-09-14 | Tokyo Shibaura Electric Co | Data correcting system |
JPS55149551A (en) * | 1979-05-10 | 1980-11-20 | Toshiba Corp | Data correcting circuit |
US4277844A (en) * | 1979-07-26 | 1981-07-07 | Storage Technology Corporation | Method of detecting and correcting errors in digital data storage systems |
GB2075227B (en) * | 1980-04-14 | 1984-09-26 | Victor Company Of Japan | Double error correcting system in digital signal reproducing apparatus |
DE3211053A1 (de) * | 1981-03-25 | 1982-10-14 | Akai Electric Co. Ltd. | Fehlerkorrektur- und kontrollsystem fuer pcm-dekodiergeraete |
US4413339A (en) * | 1981-06-24 | 1983-11-01 | Digital Equipment Corporation | Multiple error detecting and correcting system employing Reed-Solomon codes |
JPS5829237A (ja) * | 1981-08-14 | 1983-02-21 | Sony Corp | エラ−訂正方法 |
US4534031A (en) * | 1982-08-02 | 1985-08-06 | News Log International | Coded data on a record carrier and method for encoding same |
US4653051A (en) * | 1983-09-14 | 1987-03-24 | Matsushita Electric Industrial Co., Ltd. | Apparatus for detecting and correcting errors on product codes |
JPH0680491B2 (ja) * | 1983-12-30 | 1994-10-12 | ソニー株式会社 | 有限体の演算回路 |
US4797848A (en) * | 1986-04-18 | 1989-01-10 | Hughes Aircraft Company | Pipelined bit-serial Galois Field multiplier |
US4870645A (en) * | 1988-04-20 | 1989-09-26 | Aspen Peripherals Corp. | Single syndrome generator for forward and reverse read of high density magnetic tape and method therefor |
US5283791A (en) * | 1988-08-02 | 1994-02-01 | Cray Research Systems, Inc. | Error recovery method and apparatus for high performance disk drives |
US5218689A (en) * | 1988-08-16 | 1993-06-08 | Cray Research, Inc. | Single disk emulation interface for an array of asynchronously operating disk drives |
JPH02166700A (ja) * | 1988-12-15 | 1990-06-27 | Samsung Electron Co Ltd | エラー検査及び訂正装置を内蔵した不揮発性半導体メモリ装置 |
JPH04135778U (ja) * | 1991-06-04 | 1992-12-17 | 松下冷機株式会社 | 表示装置 |
US5369641A (en) * | 1991-11-12 | 1994-11-29 | Storage Technology Corporation | Method and apparatus for detecting and correcting errors in data on magnetic tape media |
US5392299A (en) * | 1992-01-15 | 1995-02-21 | E-Systems, Inc. | Triple orthogonally interleaed error correction system |
US5412689A (en) * | 1992-12-23 | 1995-05-02 | International Business Machines Corporation | Modal propagation of information through a defined transmission medium |
US5369652A (en) * | 1993-06-14 | 1994-11-29 | International Business Machines Corporation | Error detection and correction having one data format recordable on record media using a diverse number of concurrently recorded tracks |
US5592498A (en) * | 1994-09-16 | 1997-01-07 | Cirrus Logic, Inc. | CRC/EDC checker system |
US5841795A (en) * | 1996-02-12 | 1998-11-24 | Compaq Computer Corporation | Error correction codes |
US6024486A (en) * | 1996-06-05 | 2000-02-15 | Compaq Computer Corporation | Data error detection and correction |
US5978953A (en) * | 1996-12-19 | 1999-11-02 | Compaq Computer Corporation | error detection and correction |
US6003144A (en) * | 1997-06-30 | 1999-12-14 | Compaq Computer Corporation | Error detection and correction |
US6651214B1 (en) * | 2000-01-06 | 2003-11-18 | Maxtor Corporation | Bi-directional decodable Reed-Solomon codes |
US6819683B2 (en) * | 2001-01-19 | 2004-11-16 | Lucent Technologies Inc. | Communications system and associated deskewing and word framing methods |
US7028248B2 (en) * | 2001-02-28 | 2006-04-11 | International Business Machines Corporation | Multi-cycle symbol level error correction and memory system |
RU2179366C1 (ru) * | 2001-05-22 | 2002-02-10 | Плотников Андрей Алексеевич | Способ передачи дискретного сообщения и система для его осуществления |
JP3565798B2 (ja) * | 2001-06-14 | 2004-09-15 | 英二 藤原 | バースト誤りパターン生成方法及びバーストおよびバイト誤り検出・訂正装置 |
FR2830637A1 (fr) * | 2001-10-05 | 2003-04-11 | St Microelectronics Sa | Code de detection et/ou de correction d'erreurs a haute efficacite |
US7007220B2 (en) * | 2002-03-01 | 2006-02-28 | Broadlogic Network Technologies, Inc. | Error correction coding across multiple channels in content distribution systems |
AU2003263800B2 (en) * | 2002-07-29 | 2008-08-21 | Robert Halford | Multi-dimensional data protection and mirroring method for micro level data |
US7530008B2 (en) * | 2003-08-08 | 2009-05-05 | Sun Microsystems, Inc. | Scalable-chip-correct ECC scheme |
TWI309776B (en) * | 2003-10-24 | 2009-05-11 | Hon Hai Prec Ind Co Ltd | Secure storage system and method for solid memory |
US7401253B2 (en) * | 2005-05-09 | 2008-07-15 | International Business Machines Corporation | Convolution-encoded data storage on a redundant array of independent devices |
US7676729B2 (en) * | 2006-08-23 | 2010-03-09 | Sun Microsystems, Inc. | Data corruption avoidance in DRAM chip sparing |
US8140945B2 (en) * | 2008-05-23 | 2012-03-20 | Oracle America, Inc. | Hard component failure detection and correction |
US8756363B2 (en) | 2011-07-07 | 2014-06-17 | Oracle International Corporation | Efficient storage of memory version data |
US8762821B2 (en) * | 2012-03-30 | 2014-06-24 | Intel Corporation | Method of correcting adjacent errors by using BCH-based error correction coding |
US9086992B1 (en) | 2012-06-08 | 2015-07-21 | Digital Ordnance Storage, Inc. | System and method for interconnecting storage elements |
US9043559B2 (en) | 2012-10-23 | 2015-05-26 | Oracle International Corporation | Block memory engine with memory corruption detection |
US9672298B2 (en) | 2014-05-01 | 2017-06-06 | Oracle International Corporation | Precise excecution of versioned store instructions |
US9195593B1 (en) | 2014-09-27 | 2015-11-24 | Oracle International Corporation | Hardware assisted object memory migration |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3519988A (en) * | 1965-05-17 | 1970-07-07 | Honeywell Inc | Error checking arrangement for data processing apparatus |
US3629824A (en) * | 1970-02-12 | 1971-12-21 | Ibm | Apparatus for multiple-error correcting codes |
US3675200A (en) * | 1970-11-23 | 1972-07-04 | Ibm | System for expanded detection and correction of errors in parallel binary data produced by data tracks |
US3697948A (en) * | 1970-12-18 | 1972-10-10 | Ibm | Apparatus for correcting two groups of multiple errors |
US3728678A (en) * | 1971-09-03 | 1973-04-17 | Bell Telephone Labor Inc | Error-correcting systems utilizing rate {178 {11 diffuse codes |
-
1973
- 1973-08-20 US US390136A patent/US3868632A/en not_active Expired - Lifetime
- 1973-11-14 FR FR7341679A patent/FR2206633B1/fr not_active Expired
- 1973-11-14 SE SE7315421A patent/SE384932B/xx unknown
- 1973-11-14 IT IT31281/73A patent/IT1006638B/it active
- 1973-11-14 NL NL7315629A patent/NL7315629A/xx active Search and Examination
- 1973-11-14 CA CA185,798A patent/CA1028064A/en not_active Expired
- 1973-11-15 DE DE2357004A patent/DE2357004C3/de not_active Expired
- 1973-11-15 JP JP12783173A patent/JPS5626063B2/ja not_active Expired
Also Published As
Publication number | Publication date |
---|---|
NL7315629A (de) | 1974-05-17 |
SE384932B (sv) | 1976-05-24 |
IT1006638B (it) | 1976-10-20 |
JPS507439A (de) | 1975-01-25 |
FR2206633B1 (de) | 1978-11-10 |
US3868632A (en) | 1975-02-25 |
JPS5626063B2 (de) | 1981-06-16 |
DE2357004B2 (de) | 1978-11-16 |
FR2206633A1 (de) | 1974-06-07 |
DE2357004A1 (de) | 1974-05-30 |
CA1028064A (en) | 1978-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2357004C3 (de) | Verfahren und Einrichtung zur Fehlerkorrektur für Daten | |
DE2853892C2 (de) | ||
DE2060643C3 (de) | Schaltungsanordnung zur Korrektur von Einzelfehlern | |
DE2916710C2 (de) | ||
DE2362423A1 (de) | Verfahren und vorrichtung zur fehlerkorrektur | |
DE2262070A1 (de) | Mit schieberegistern arbeitendes fehlerkorrektursystem | |
DE69831790T2 (de) | Verfahren zum Lesen während des Schreibens in einer Datenspeichervorrichtung | |
DE3231956A1 (de) | Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes | |
DE2260850A1 (de) | Fehlerkorrektursystem | |
DE2106314B2 (de) | Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks | |
DE2263488C2 (de) | Einrichtung zur Erkennung und Korrektur von Fehlern in zwei fehlerbehafteten Spuren eines Vielspur-Datensystems | |
DE2622184A1 (de) | Fehlerkorrekturverfahren | |
DE69814465T2 (de) | Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten | |
DE2916619A1 (de) | System zum uebertragen binaerer daten ueber eine anzahl von kanaelen | |
DE2608435A1 (de) | Vorrichtung zur fehlererkennung und fehlerkorrektur in digitalen datenverarbeitungsanlagen | |
DE2217935B2 (de) | Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht | |
DE2053836C3 (de) | Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen | |
AT394465B (de) | Verfahren fuer die verarbeitung von aufeinanderfolgenden werten eines digitalen signals | |
DE1449334B2 (de) | Decodierer für einen rekurrenten Code | |
DE3017830A1 (de) | Datenfehler-korrektursystem | |
DE2908373C2 (de) | ||
DE3211053A1 (de) | Fehlerkorrektur- und kontrollsystem fuer pcm-dekodiergeraete | |
DE1168677B (de) | System zur Fehlerermittlung und Fehlerkorrektur | |
DE1524891C3 (de) | Schaltungsanordnung zur Korrektur von Fehlerbündeln | |
DE2742881C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C3 | Grant after two publication steps (3rd publication) | ||
8339 | Ceased/non-payment of the annual fee |