DE19781914C2 - System zum Implementieren von lauflängenbegrenzten Codes - Google Patents

System zum Implementieren von lauflängenbegrenzten Codes

Info

Publication number
DE19781914C2
DE19781914C2 DE19781914A DE19781914A DE19781914C2 DE 19781914 C2 DE19781914 C2 DE 19781914C2 DE 19781914 A DE19781914 A DE 19781914A DE 19781914 A DE19781914 A DE 19781914A DE 19781914 C2 DE19781914 C2 DE 19781914C2
Authority
DE
Germany
Prior art keywords
code
block
data
sub
symbols
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 - Fee Related
Application number
DE19781914A
Other languages
English (en)
Other versions
DE19781914T1 (de
Inventor
Kinhing Paul Tsang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Application granted granted Critical
Publication of DE19781914C2 publication Critical patent/DE19781914C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/14Digital recording or reproducing using self-clocking codes
    • G11B20/1403Digital recording or reproducing using self-clocking codes characterised by the use of two levels
    • G11B20/1423Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
    • G11B20/1426Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
    • H03M5/145Conversion to or from block codes or representations thereof
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/14Digital recording or reproducing using self-clocking codes
    • G11B20/1403Digital recording or reproducing using self-clocking codes characterised by the use of two levels
    • G11B20/1423Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
    • G11B20/1426Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof
    • G11B2020/144616 to 17 modulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Error Detection And Correction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

Die Erfindung bezieht sich auf das Codieren von Daten zur Übertragung über einen Kanal und zum Decodieren dieser so codierten Daten nach ihrer Übertragung über einen Kanal. Insbesondere bezieht sich die Erfindung auf Codierer und Decodierer, die lauflängenbegrenzte Codes implementieren.
Information, die von einer Quelle an ein Ziel übertragen wird, kann generisch betrachtet werden, als ob dieselben durch einen Kanal laufen. In manchen Kommunikationssystemen weist der Kanal eine elektromagnetische Strahlung auf, die durch die Atmosphäre hindurchgeht. Bei anderen Kommunikationssystemen weist der Kanal einen langen Leiter zwischen der Quelle und dem Ziel auf. Noch andere Kommunikationssysteme weisen eine Magnetplatte auf, wobei Information von der Quelle auf der Platte gespeichert wird und später von der Platte zum Liefern an das Ziel zurückgewonnen werden.
Bei jedem Kommunikationssystem kann die durch den Kanal übertragende Information durch Rauschen innerhalb des Kanals verfälscht werden, so daß die von der Quelle übertragene Information nicht dieselbe ist, die vom Ziel empfangen wird. Um zu identifizieren, wann solche Fehler aufgetreten sind, und in manchen Fällen, um solche Fehler zu korrigieren, wird die Information typischerweise an der Quelle unter Verwendung eines Codes codiert, der am Ziel decodiert werden kann. Der Code ist so ausgestaltet, daß er einen Satz gültiger Codewörter aufweist, die gewisse Codier-Einschränkungen erfüllen, sowohl als einzelne Codewörter als auch als Sammlung von miteinander verketteten Codewörtern. Wenn das Ziel Werte empfängt, die die Codier-Einschränkungen verletzen, weiß dasselbe, daß ein Fehler aufgetreten ist.
Typischerweise beinhaltet ein derartiges Codieren ein Übersetzen einer, eine Anzahl von Informationssymbolen enthaltenen Blockeingabeinformation in einen Block codierter Information, der eine Anzahl codierter Symbolen enthält. Das Verhältnis der Anzahl der Symbole in der Eingangsinformation zur Anzahl der Symbole in der codierten Information ist als Code-Rate bekannt. Wenn 16 Symbole einer Information als 17 codierte Symbole codiert werden, beträgt die Code-Rate 16/17. Die Anzahl der codierten Symbole ist immer größer als die Anzahl der Eingangssymbole, so daß die Rate immer kleiner als eins ist. Es ist jedoch vorteilhaft, Codes zu verwenden, die die höchstmögliche Rate aufweisen, da Codes mit einer höheren Rate effizienter als Codes mit einer niedrigeren Rate sind. Codes mit einer hohen Rate sind effizient, da jedes über den Kanal übertragene Symbol Zeit und Energie erfordert. Wenn für eine gegebene Anzahl von Eingangssymbolen weniger Code- Symbole über den Kanal übertragen werden, wird weniger Zeit und Energie von dem Kanal aufgewendet, um die Eingangsdaten zu übertragen. Somit ist ein Code mit Rate 16/17 effizienter als ein Code mit Rate 16/18, da der Rate 16/17-Code 16 Symbole der Eingangsdaten unter Verwendung von einem Symbol weniger an Code-Daten als der Rate 16/18-Code übertragen kann.
In vielen Kommunikationssystemen, einschließlich Magnetplattenlaufwerken, muß der Decodierer mit der Rate, mit der die codierten Symbole durch den Kanal erzeugt werden, synchronisiert werden. Dies wird typischerweise unter Verwendung eines phasenstarren Oszillators (PLO = phase lock oscillator), auch als Phasenregelkreis bekannt, erreicht. Der Phasenregelkreis erzeugt ein Taktsignal, das mit der Durchschnittszeit zwischen Übergängen im Kanalsignal synchronisiert ist. Da der Phasenregelkreis Übergänge in dem Signal erfordert, um das Taktsignal zu synchronisieren, muß der Codierer die Länge der Zeit zwischen Übergängen in der codierten Information begrenzen, so daß das Taktsignal des Phasenregelkreises nicht anfängt sich zu verschlechtern. Diese Einschränkung ist als lauflängenbegrenzende (RLL = run­ length-limited) Codier-Einschränkung bekannt.
US 5,537,112 A zeigt allgemein eine Vorrichtung zum Codieren mit Lauflängenbegrenzung, wobei allerdings die Länge der maximal infolge auftretenden Nullen oder Einsen nicht festgelegt ist.
Diese Druckschrift zeigt darüber hinaus explizit ein Codierschema für den Code der Rate 16/17, wobei Folgen von mehr als sechs Nullen nicht auftreten können.
EP 0 560 339 B1 zeigt ein weiteres Modulier- und Demodulierverfahren und eine entsprechende Vorrichtung.
In vielen Systemen stellt ein Binärwert von "1" einen Übergang im Kanalsignal und ein Binärwert von "0" ein Fehlen von Übergängen in dem Kanalsignal dar. Somit muß der Codierer unter einem lauflängenbegrenzten Code die Anzahl der aufeinanderfolgenden Nullen begrenzen, die verwendet wurden, um das Kanalsignal zu erzeugen. Die Einschränkung der Anzahl von aufeinanderfolgenden "Nullen" wird manchmal als die "k"- Einschränkung bezeichnet.
In der Praxis ist es schwierig, einen Code mit hoher Rate zu finden, der einfach zu implementieren ist und der die lauflängenbegrenzende Einschränkung erfüllt. Beispielsweise, um einen Code mit der Rate 16/17 zu implementieren, der einen lauflängenbegrenzende Einschränkung von "k" = 5 erfüllt, ist es erforderlich, 65 536(2 16) Codewörter auszuwählen, die die "k" = 5-Einschränkung aus möglichen 131 072(2 17) von möglichen Codewörtern erfüllen. Es müssen nicht nur die Codewörter selber die lauflängenbegrenzende Einschränkung erfüllen, sondern die Verkettung derselben mit allen anderen Codewörtern muß ebenfalls die lauflängenbegrenzende Einschränkung erfüllen.
Selbst das Auffinden derartiger Codewörter ist extrem beschwerlich. Das Auffinden derartiger Codewörter ist jedoch einfach im Vergleich zum Konstruieren eines Codierers, um die Daten in ausgewählte Codewörter zu codieren. Derartige Codierer sind komplex, da sie üblicherweise versuchen, Gemeinsamkeiten zwischen Codewörtern zu finden, die eine Abbildung zwischen Daten und Codewörtern gestalten, die auf weniger als allen Symbolen in einem Datenabschnitt basieren.
Die Erfindung ist eine Vorrichtung zum Codieren von 16-symbollangen Datenblöcken in 17-symbollangen Codeblöcke. Einzelne Datenblöcke werden von einem Datenblock-Latch empfangen, der jeden Datenblock in zwei Daten-Unterblöcke unterteilt. Ein Codierer empfängt den ersten Daten-Unterblock und codiert den ersten Daten- Unterblock in einen ersten Code-Unterblock. Eine Verschachtelungseinrichtung (E: interleaver) empfängt den ersten Code-Unterblock und den zweiten Daten-Unterblock und kombiniert die beiden Unterblöcke, um einen Codeblock zu erzeugen. Die durch die Verschachtelungseinrichtung erzeugten Codeblöcke sind derart, daß sie, wenn sie miteinander verkettet werden, eine Kette von Codesymbolen mit nicht mehr als fünf mal aufeinanderfolgendem Auftreten des gleichen Codesymbols erzeugen.
In bevorzugten Ausführungsformen werden einige der ersten Daten-Unterblöcke durch einfaches Einfügen eines Codesymbols in die ersten Daten-Unterblöcke codiert. Vorzugsweise wird jedes hinzugefügte Codesymbol an einem Ende jedes ersten Daten-Unterblocks eingefügt. Da es einfach ist, ein Codierer zu implementieren, der lediglich ein Codesymbol hinzufügt, um einen Code-Unterblock zu erzeugen, wird vorzugsweise eine Mehrheit der ersten Daten-Unterblöcke durch dieses Verfahren codiert werden.
Typischerweise wird die Erfindung in Codiersystemen verwendet, die auf einem Satz von binären Symbolen basieren, wobei die beiden Symbole in dem binären Satz die inversen Elemente voneinander sind. Beispielsweise besteht in den meisten digitalen Systemen der Satz der binären Zahlen aus "0" und "1", wobei "0" das inverse Element von "1" und "1 das inverse Element von "0" ist.
In einem bevorzugten Ausführungsbeispiel der Erfindung werden mindestens einige der Code-Unterblöcke durch ein Invertieren einiger, aber nicht aller, Datensymbole in einigen der ersten Daten-Unterblöcke gebildet. Die Datensymbole, die invertiert sind, werden basierend auf ihrer Position innerhalb des Daten-Unterblocks ausgewählt, so daß die Datensymbole, die invertiert sind, an der gleichen Position in jedem auf diese Art und Weise codierten Daten-Unterblock auftreten. Nach der Inversion der ausgewählten Datensymbole wird ein zusätzliches Codesymbol in jeden gemischten Block invertierter und nicht invertierter Datensymbolen eingefügt.
Vorzugsweise wird eine Mehrheit der ersten Daten-Unterblöcke entweder durch einfaches Hinzufügen eines Code-Symbols zu dem Daten-Unterblock oder durch Invertieren einer ausgewählten Gruppe der Datensymbole codiert. Dieses wird bevorzugt, da diese einfache Codier-Techniken mit wenigen Komponenten implementiert werden können, und wenn mehr Daten-Unterblöcke unter Verwendung dieser Techniken codiert werden, sind weniger Komponenten erforderlich, um den Codierer zu implementieren.
Das Verfahren und die Anordnung der Erfindung ist zum Erzeugen eines Codes mit 16/17-Rate geeignet, in dem 16- Bit-Digital-Wörter in erste 10-Bit-Daten-Unterblöcke und zweite 6-Bit-Daten-Unterblöcke aufgeteilt werden. Die 10-Bit- Daten-Unterblöcke werden durch den Codierer in 11-Bit-Code- Unterblöcke codiert. Die 11-Bit-Code-Unterblöcke werden dann miteinander verschachtelt oder kombiniert, wobei die zweiten 6-Bit-Daten-Unterblöcke einen 17-Bit-Codeblock oder -Codewort erzeugen. Vorzugsweise bildet die Verkettung der Codewörter eine Codekette, die eine "k" = 5-Einschränkung erfüllt.
Die Erfindung vereinfacht die Implementierung eines Codierers und Decodierers für ein RLL-Code mit 16/17-Rate durch Verwendung eines RLL-Codes mit 10/11-Rate und durch Verwendung einer einfachen Codierlogik, um eine Mehrheit der Daten-Unterblöcke, die zu dem 10/11-Codierer eingegeben werden, zu codieren.
Die Erfindung wird im folgenden unter Bezugnahme auf die beigefügte Zeichnung näher erläuter.
In der Zeichnung zeigt:
Fig. 1 ein Blockdiagramm eines Kommunikationssystems der Erfindung, das beim Beschreiben der Verfahren und einer Vorrichtung der Erfindung nützlich ist.
Fig. 1 ist ein Blockdiagramm einer Codier- /Decodiervorrichtung 10, die einen RLL-Code mit 16/17-Rate benutzt. Fig. 1 dient zur Beschreibung der Codier- und Decodierverfahren der Erfindung sowie der Codier- und Decodiervorrichtung der Erfindung.
Die ursprünglichen Daten werden durch einen Latch 30 einer Vorrichtung zum Codieren 14 über eine 16-Bit Leitung empfangen. Der Latch 30 teilt jeden 16-Bit-Datenblock in einen 6-Bit-Datenblock und einen 10-Bit-Datenblock auf. Der 10-Bit-Daten-Unterblock wird einem Codierer 32 der Rate 10/11 eingegeben, der jeden 10- Bit-Daten-Unterblock in einen 11-Bit-Code-Unterblock durch ein weiter unten beschriebenes Verfahren codiert. Der 11-Bit- Code-Unterblock und der 6-Bit-Daten-Unterblock werden durch einen Latch 34 empfangen, der mit einem Codierer 32 der Rate 10/11 und dem Latch 30 gekoppelt ist. Der Latch 34 kombiniert den 11-Bit-Code-Unterblock und den 6-Bit-Daten- Unterblock in einer unten beschriebenen Art und Weise, um einen 17-Bit-Codeblock zu erzeugen. Der 17-Bit-Codeblock wird an einen Parallel-Seriell-Wandler 36 eingegeben, der die einzelnen Bits von jedem Codeblock sequentiell ausgibt. Mit jedem neuen Codeblock verkettet der Parallel-Seriell-Wandler 36 den vorhergehenden Codeblock mit dem aktuellen Codeblock durch ein einfaches Durchführen der Parallel-Seriell Umwandlung.
Ein Vorcodierer 16, der mit dem Parallel-Seriell-Wandler 36 der Vorrichtung zum Codieren 14 verbunden ist, empfängt die Codesymbole der verketteten Codeblöcke und führt zusätzliche Operationen an den Codesymbolen durch, um die Wirksamkeit der Übertragung derselben durch den Kanal zu optimieren. Typischerweise weist der Vorcodierer 16 eine Übertragungsfunktions von 1/(1 ⊕ D) auf, wobei "1" das Eingangssignal, "D" das durch eine Zeiteinheit verzögerte Eingangssignal und ⊕ die logische EXCLUSIV-ODER-Verknüpfung darstellt. Vorcodierer mit dieser Art einer Übertragungsfunktion sind als NRZI-Vorcodierer bekannt. Alternativ kann der Vorcodierer 16 eine Übertragungsfunktion 1/(1 + D2) aufweisen, wobei "1" das Eingangssignal und "D2" das um zwei Zeiteinheiten verzögerte Eingangssignal darstellt. Vorcodierer mit dieser Art von Übertragungsfunktion sind als verschachtelte (interleaved) NRZI-Vorcodierer bekannt. Die beiden Vorcodierer, auf die oben verwiesen wurden, sind einfache Beispiele möglicher Vorcodierer, und Fachleute werden erkennen, daß an ihrer Stelle andere Vorcodierer verwendet werden können.
Der Vorcodierer 16 ist mit einem Kanal 18 verbunden, der in Magnetplattenlaufwerken ein magnetisches Medium und Magnetköpfe aufweist, die verwendet werden, um magnetische Informationen auf das magnetische Medium zu "schreiben" und magnetische Informationen von dem magnetischen Medium zu "lesen". Der Ausgang des Kanals 18 wird von einer Ausgleichseinrichtung 20 empfangen, die das Kanalausgangssignal für gewünschte Eigenschaften optimiert. Diese gewünschten Eigenschaften werden üblicherweise durch die natürlichen Eigenschaften des Kanals 18 und die Art des durch einen Detektor 22 (der die ausgeglichenen Signale von der Ausgleichseinrichtung 20 empfängt) verwendeten Erfassungsverfahrens diktiert.
Der Detektor 22 kann irgendeinen einer Anzahl von Detektoren aufweisen, einschließlich eines Viterbi-Detektors, eines Rückmeldungs-Augleichs-Detektors (DFE = Decision Feedback Equalizer) oder eines Festverzögerten-Baumsuch-Detektors (FDTS = Fixed Delay Tree Search). Fachleute werden erkennen, daß jeder dieser Detektoren als Detektor 22 verwendet werden kann, sofern der Vorcodierer 16 ausgewählt wird, um mit dem gewählten Detektor übereinzustimmen. Der Detektor 22 wandelt das ausgeglichene Signal von der Ausgleichseinrichtung 20 in eine digitale Darstellung des durch den Parallel-Seriell- Wandler 36 erzeugten digitalen Ausgangssignals.
Das digitale Signal vom Detektor 22 wird in einen Seriell- Parallel-Wandler 50 einer Vorrichtung zum Decodieren 24 eingegeben. Ein Seriell-Parallel-Wandler wandelt die seriellen digitalen Daten vom Detektor 22 in parallele Gruppen von 17-Bit- Codeblöcken um. Die Codeblöcke werden dem Latch 52 längs einer 17-Bit Leitung eingegeben. Der Latch 52 teilt jeden 17- Bit-Codeblock in einen 11-Bit-Codeblock und einen 6-Bit- Codeblock auf. Die Aufteilung wird unter Verwendung einer Umkehr-Abbildung (reverse mapping) der vom Latch 34 verwendeten Abbildung erreicht, um den 11-Bit-Code-Unterblock vom Codierer 32 der Rate 10/11 und den 6-Bit-Daten-Unterblock vom Latch 30 zu kombinieren. Der 11-Bit-Code-Unterblock vom Latch 52 wird in einem Decodierer 54 der Rate 11/10 eingegeben, der den 11-Bit-Code-Unterblock in einen 10-Bit-Daten- Unterblock durch ein weiter unten beschriebenes Verfahren decodiert.
Der 10-Bit-Daten-Unterblock vom Decodierer 54 der Rate 11/10 und der 6-Bit-Datenblock vom Latch 52 werden durch einen Latch 56 in einen 16-Bit-Datenblock kombiniert. Der Latch 56 kombiniert die beiden Daten-Unterblöcke unter Verwendung der Inversen bzw. Umkehrung der vom Latch 30 verwendeten Abbildung, um den 16-Bit-Eingangsdatenblock in 6-Bit- und 10- Bit-Daten-Unterblöcke aufzuteilen.
Zurückkehrend von der Vorrichtung zum Codieren 14 durchgeführten Abbildungen, teilt der Latch 30 der Vorrichtung zum Codieren 14 einen als D bezeichneten Datenblock in zwei Daten-Unterblöcke auf, die mit A und B bezeichnet werden, bei denen:
D [D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0], (1)
A [A9 A8 A7 A6 A5 A4 A3 A2 A1 A0], und (2)
B [B5 B4 B3 B2 B1 B0]. (3)
Der Datenblock A wird von dem Codierer 32 der Rate 10/11 in einen 11-Bit-Code-Unterblock C codiert, bei dem:
C [C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0]. (4)
Das Codieren, das durchgeführt wurde, um den Code-Unterblock C zu erzeugen, ist weiter unten erläutert. Der Latch 34 kombiniert den Code-Unterblock C und den Daten-Unterblock B, um den Codeblock W zu bilden, bei dem:
W [C10 C9 B5 C8 B4 C7 C6 B3 B2 C5 C4 B1 C3 B0 C2 C1 C0], (5)
Um sicherzustellen, daß die 17-Bit-Codeblöcke W und die Verkettung der Codeblöcke miteinander die "k" = 5- Einschränkung erfüllen, müssen die Bits des Code-Unterblocks C alle sieben der folgenden Gleichungen erfüllen:
C10 + C9 + C8 = 1 (6)
C8 + C7 + C6 = 1 (7)
C7 + C6 + C5 = 1 (8)
C6 + C5 + C4 = 1 (9)
C5 + C4 + C3 = 1 (10)
C4 + C3 + C2 + C1 = 1 (11)
C2 + C1 + C0 = 1, (12)
bei denen die Bits des Unterblocks C Werte von entweder "0" oder "1" aufweisen und "+" eine logische ODER-Verknüpfung bezeichnet. Wenn alle diese Gleichungen wahr sind, wird ein Codeblock W nicht mehr als 5 aufeinanderfolgende Nullen aufweisen, sogar wenn dieser mit anderen Codeblöcken verkettet ist.
Insbesondere stellen die Gleichungen 6 und 12 sicher, daß die "k" = 5-Einschränkung nicht verletzt wird, wenn zwei Codeblöcke verkettet werden. Beispielsweise, wenn ein Codeblock Ws mit einem Codeblock Ws-1 verkettet wird, wobei sowohl Ws und Ws-1 unter Verwendung der Gleichung 5 aufgebaut wurden, wird die Verkettung eine Kette von Bits erzeugen, die aus [B0, C2, C1, C0, C10, C9, B5, C8] bestehen. Gleichungen 6 und 12 stellen zusammen sicher, daß in einer Situation des ungünstigsten Falls diese verkettete Kette nicht die "k" = 5- Einschränkung verletzt. Insbesondere tritt mit den Gleichungen 6 und 12 die Situation des ungünstigen Falls ein, wenn C2 = "1", C8 = "1" und die verbleibenden Bits in der Kette gleich "0" sind. Sogar in diesem ungünstigsten Fall gibt es nur 5 Bits zwischen C2 und C8, so daß es höchstens 5 aufeinanderfolgende Nullen in der Verkettung des Codeblocks Ws und des Codeblocks Ws-1 gibt.
Fachleute werden erkennen, daß die Reihenfolge der Bits in der Gleichung 5 umgekehrt werden kann, ohne die Anforderungen der Gleichungen 6-12 zu beeinflussen, sofern jeder Codeblock in der gleichen Art und Weise wie alle anderen Codeblocks aufgebaut ist. Somit kann der Latch 34 den Codeblock W bilden als:
W [C0 C1 C2 B0 C3 B1 C4 C5 B2 B3 C6 C7 B4 C8 B5 C9 C10], (13)
ohne Ändern der Gleichungen 6-12, sofern wie alle Codeblöcke W die in Gleichung 13 gezeigte Reihenfolge aufweisen.
Fachleute werden ferner erkennen, daß die besonderen Code- Bits, die einer besonderen Position in Gleichungen 5 und 13 zugeordnet sind, geändert werden können solange: die in Gleichungen 5 und 13 gezeigte relative Reihenfolge von Code- Bits zu Daten-Bits, die in Gleichungen 5 und 13 gezeigt ist, ungeändert bleibt; die Position eines besonderen Code-Bits die gleiche für alle Codewörter ist; und Gleichungen 6-12 modifiziert werden, um die Änderung der Position eines spezifischen Code-Bits widerzuspiegeln. Wenn die Code-Bits C10 und C0 in Gleichung 5 vertauscht werden, so daß C0 das höchstwertige Bit in W und C10 das niedrigstwertige Bit in W ist, werden Gleichungen 6 und 12 zu
C0 + C9 + C8 = 1 (14)
bzw. C2 + C1 + C10 = 1, (15)
In der nachfolgenden Erläuterung werden spezifische Codierverfahren für einen Codierer der Rate 10/11 beschrieben, die mit dem Latch 34 verwendet werden, um Codeblöcke auf der Grundlage von Gleichung 5 zu erzeugen. Fachleute werden erkennen, daß geeignete Änderungen an dem Codierer gemacht werden können, wenn die Positionen von spezifischen Code-Bits innerhalb Gleichung 5 geändert werden, obwohl die relative Position der Code-Bits zu Daten-Bits in Gleichung 5 beibehalten wird. Wenn C10 und C0 miteinander in Gleichung 5 vertauscht werden, sind somit geeignetete Änderungen an den unten beschriebenen Gleichungen durchzuführen.
Von den 2 048 (211) möglichen 11-Bit-Strukturen für den Code- Unterblock C erfüllen nur 1 067 die Bedingungen in den Gleichungen 6-12. Dies ist mehr als die nötige Anzahl, um jeden 10-Bit-Daten-Unterblock in den 11-Bit-Daten-Unterblock abzubilden, da es nur 1 024 (210) mögliche 10-Bit-Strukturen gibt. Die untenstehenden Tabellen 1, 2, 3 und 4 zeigen die eineindeutige Abbildung (one-to-one mapping), die von der Erfindung verwendet wird, um jeden 10-Bit-Daten-Unterblock A in einen 11-Bit-Code-Unterblock C für die Verwendung in Gleichung 5 abzubilden, um die Codeblöcke W zu erzeugen. Die Tabellen 1, 2, 3 und 4 verwenden ein hexadezimales Format, um die Unterblöcke darzustellen, wobei der niedrigstwertige Hexadezimalwert von Datenblock A in den oberen Zeilen der Tabellen und die zwei höchstwertigen Hexadezimalstellen des Datenunterblocks A in den äußersten linken Spalten der jeweiligen Tabellen dargestellt sind.
TABELLE 1
TABELLE 2
TABELLE 3
TABELLE 4
Die 1 024 möglichen Kombinationen der Symbole, die im Daten- Unterblock A gefunden werden können, können in drei Typen eingeteilt werden, die durch die folgenden Gleichungen gekennzeichnet werden:
T1 = (A8 + A7 + A6) * (A7 + A6 + A5) * (A6 + A5 + A4) * (A5 + A4 + A3) * (A4 + A3 + A2 + A1) * (A2 + A1 + A0) (16)
T2 = [(A9 + A8) * (A8 + A7 + A6) * (A7 + A6 + A5) * (A6 + A5 + A4) * (A5 + A4 + A3) * (A4 + A3 + A2 + A1) * (A2 + A1 + A0)] * T1 (17)
T3 = (T1 * T2) (18)
wobei "*" einen logische UND-Verknüpfung, "+" eine logische ODER-Verknüpfung und "x" eine Inversion oder logische NICHT- Verknüpfung des Wertes "x" bezeichnet. Zusätzlich wirken T1, T2 und T3 als Boolesche Variable, die anzeigen, ob ein bestimmter Daten-Unterblock einem Typ I, II bzw. III angehört. Wenn einer der Booleschen Variablen gleich "0" ist, gehört der Daten-Unterblock nicht zu dem von der Variablen dargestellten Typ, und wenn die Variable gleich "1" ist, gehört der Daten-Unterblock zu dem von der Variablen dargestellten Typ. Zum Beispiel, wenn die Gleichung 16 gleich "1" ist, ist der Daten-Unterblock ein Daten-Unterblock vom Typ I.
Für diejenigen Daten-Unrerblöcke, die in Typ I fallen, erzeugt ein Codierer 32 der Rate 10/11 eine Codewort- Unterblock c von dem Daten-Unterblock A durch ein Zuweisen der Bits des Daten-Unterblocks A zu dem höchstwertigen Bit von Code-Unterblcok C. Mit anderen Worten führt der Codierer 32 der Rate 10/11 die folgenden Zuweisungen durch:
C10 = "1", C9 = A9, C8 = A8, C7 = A7, C6 = A6, C5 = A5, C4 = A4, C3 = A3, C2 = A2, C1 = A1, C0 = A0. (19)
Da diese Abbildung extrem leicht zu implementieren ist, wobei nur erforderlich ist, daß eine Eins mit dem Daten-Unterblock A verkettet wird, reduziert dieselbe die Komplexität des Codierers der Rate 10/11 beträchtlich. Da es eine Gesamtanzahl von 602 Strukturen im Datenblock A gibt, die zum Typ I gehören, kann außerdem eine Mehrzahl von Daten- Unterblöcken unter Verwendung dieses einfachen Systems codiert werden.
Für Daten-Unterblöcke, die die Bedingungen von Typ II erfüllen, invertiert der Codierer 32 der Rate 10/11 die Bits A4 bis A9, um Codebits C4 bis C9 zu erzeugen; die Datenbits A0 bis A3 werden direkt den Codebits C0 bis C3 zugewiesen; und das höchstwertigste Bit von Code-Unterblock wird "0" zugewiesen. Mit anderen Worten, den 11-Bits des Code- Unterblocks C werden die folgenden Werte zugewiesen:
C10 = "0", C9 = A9, C8 = A8, C7 = A7, C6 = A6, C5 = A5, C4 = A4, C3 = A3, C2 = A2, C1 = A1 and C0 = A0, (20)
wobei "x" die Inversion von "x" bezeichnet.
Von den 1 024 möglichen Strukturen bzw. Mustern für den Daten-Unterblock A gehören 207 zum Typ II. Somit gibt es 809 Strukturen für den Daten-Unterblock A, die entweder vom Typ I oder II sind. Da es nur 1 024 mögliche Strukturen für den Daten-Unterblock A gibt, sind fast 80 Prozent der möglichen Strukturen vom Typ I oder II. Dies bedeutet, daß 80 Prozent der Daten-Unterblöcke unter Verwendung sehr einfacher Logikschaltungen codiert werden können.
Die verbleibenden 215 Strukturen bzw. Mustern für den Daten- Unterblock A gehören zum Typ III. Um die Codierer- /Decodiererentwicklung einfacher zu machen, werden Unterblöcke auf der Grundlage von Gemeinsamkeiten mit anderen Unterblöcken zusammengruppiert. In einer Ausführungsform der Erfindung werden die Datenunterblöcke vom Typ III in sechs Gruppen organisiert: K, L, M, N, P, Q. Die eineindeutige Abbildung zwischen Code-Unterblöcken und Daten-Unterblöcken in den Gruppen K, L, M, N, P, Q werden untenstehend in den Tabellen 5, 6, 7, 8, 9 bzw. 10 gezeigt.
TABELLE 5
GRUPPE K
TABELLE 6
GRUPPE L
TABELLE 7
GRUPPE M
TABELLE 8
GRUPPE N
TABELLE 9
GRUPPE P
TABELLE 10
GRUPPE Q
Die sechs Gruppen von Daten-Unterblöcken vom Typ III werden durch sechs unterschiedliche Boolesche Variable gekennzeichnet, die durch ein Berechnen von Ausdrücken bestimmt werden, deren Berechnung "1" ergibt, falls der Daten-Unterblock ein Teil der Gruppe ist, und "0" ergibt, falls der Daten-Unterblock kein Teil der Gruppe ist. Die Booleschen Variablen weisen den gleichen Buchstaben auf wie die Gruppe, die sie darstellen, und werden wie folgt bestimmt:
K = (H8 * H1 * H0) * (J8 + J0) (21)
L = (H8 + H1 + H0) * (J8 + J0) (22)
M = ((A8 * H3) + (G1 * H12)) * A3 * J0 (23)
N = G3 * J1 * J0 * (((H8 + H1 + H0) * J8) + ((H12 + H4) * A3)) (24)
P = (H14 + H1) * J1 (25)
Q = G3 * H14 * J1 * A4, (26)
wobei "*" eine logische UND-Verknüpfung, "+" eine logische ODEr-Verknüpfung und "x" eine logische NICHT-Verknüpfung bezeichnet. Die Werte für G, H und J sind wie folgt definiert
G1 = A9 * A8 (27)
G3 = A9 * A8 (28)
H0 = A7 * A6 * A5 * A4 (29)
H1 = A7 * A6 * A5 * A4 (30)
H3 = A7 * A6 * A5 * A4 (31)
H4 = A7 * A6 * A5 * A4 (32)
H8 = A7 * A6 * A5 * A4 (33)
H12 = A7 * A6 * A5 * A4 (34)
H14 = A7 * A6 * A5 * A4 (35)
J0 = A3 * A2 * A1 * A0 (36)
J1 = A3 * A2 * A1 * A0 (37)
J8 = A3 * A2 * A1 * A0 (38)
Die Erzeugung der einzelnen Bits der Code-Unterblöcke C kann als einzelne Gleichungen durch ein Kombinieren der obigen Gleichungen wie folgt ausgedrückt werden:
C10 = T1 (39)
C9 = (A9 * T1) + (A9 * T2) + ((K + (A9 * L) + ((A9 + A8) * M) + P + Q) * T3) (40)
C8 = (A8 * T1) + (A8 * T2) + (((A9 * K) + L + (A8 * M) + N) * T3) (41)
C7 = (A7 * T1) + (A7 * T2) + (((A8 * K) + M + ((H8 + H1) * N) + P) * T3) (42)
C6 = (A6 * T1) + (A6 * T2) + (((A8 * K) + (A8 * L) + (A6 * N) + P + Q) * T3) (43)
C5 = (A5 * T1) + (A5 * T2) + (((J8 * K) + (A8 * L) + M + ((A7 + H0) * N)) * T3) (44)
C4 = (A4 * T1) + (A4 * T2) + (((J0 * K) + (A8 * L) + M + P + ((H4 + H1) * N)) * T3) (45)
C3 = (A3 * T1) + (A3 * T2) + (((A7 * K) + L + M + (A3 * N) + (A9 * P) + Q) * T3) (46)
C2 = (A2 * T1) + (A2 * T2) + (((A6 * K) + (A3 * L) + (A2 * M)+ (A2 * N) + P + (A7 * Q)) * T3) (47)
C1 = (A1 * T1) + (A1 * T2) + (((A5 * K) + ((A7 + A4) * L) + (A1 * M) + (A1 * N) + (A8 * P) + (A6 * Q)) * T3) (48)
C0 = (A0 * T1) + (A0 * T2) + (((A4 * K) + (A4 * L) + (A0 * M) + (A0 * N) + (A4 * P) + (A5 * Q)) * T3) (49)
Fachleute werden erkennen, daß andere Unterteilungen möglich sind, daß Boolesche Ausdrücke weiter reduziert oder andere Ausdrücke, die möglicherweise zum Implementieren der besonderen, zur Verwendung ausgewählten logischen Verknüpfungsschaltungen konstruktiver sind, aus den in Gleichungen 21 bis 49 beschriebenen, vorliegenden logischen Ausdrücken erhalten werden können. Es gibt somit weitere mögliche Formen für die logischen Gleichungen, die beim Konstruieren des Codierers 32 der Rate 10/11 verwendet würden. Die gezeigten Gleichungen werden bevorzugt sind jedoch für die Erfindung nicht erforderlich.
Der Latch 52 der Vorrichtung zum Codieren 24 der Fig. 1 verwendet das Inverse bzw. die Umkehrung der von Latch 34 verwendeten Abbildung, um den Daten-Unterblock B vom Code-Unterblock C zu "entverschachteln" (de-interleave). Der Code-Unterblock C wird an einen Decodierer mit 11/10-Rate geliefert, der den 11-bit-Code-Unterblock C in einen 10-Bit-Daten-Unterblock A decodiert.
Der Decodierer 54 der Rate 11/10 bestimmt unter Verwendung der folgenden Gleichung, ob der Unterblock C eine gültige Codestruktur aufweist:
V = [(C10 + C9 + C8) * (C8 + C7 + C6) * (C7 + C6 + C5) * (C6 + C5 + C4) * (C5 + C4 + C3) * (C4 + C3 + C2 + C1) * (C2 + C1 + C0)], (50)
wobei V gleich "1" ist, falls der Code-Unterblock gültig ist, und gleich "0" ist, falls der Code-Unterblock ungültig ist.
Der Decoder 54 der Rate 11/10 kann ferner den Typ des Daten- Unterblocks bestimmen, der den Code-Unterblock erzeugte, d. h. Typ I, II oder III. Genauer gesagt, da das höchstwertige Bit, C10, in einem Code-Unterblock "1" ist, falls der Code- Unterblock von einem Daten-Unterblock vom Typ I hergeleitet wurde, ist ein Code-Unterblock von einem Daten-Unterblock vom Typ I, wenn dieser gültig ist und das höchstwertigste Bit desselben "1" ist. Ausgedrückt im Sinne einer Booleschen Variablen, T1:
T1 = (C10 * V) (51)
wobei T1 gleich "1" ist, wenn der Code-Unterblock von einem Daten-Unterblock vom Typ I hergeleitet ist und T gleich "0" ist, wenn der Code-Unterblock nicht von einem Daten- Unterblock vom Typ I abgeleitet ist.
Die Code-Unterblöcke, die aus den Daten-Unterblöcken vom Typ II gebildet wurden, können ferner durch einen Booleschen Ausdruck gekennzeichnet sein. Um einen derartigen Ausdruck zu konstruieren, ist es hilfreich, zuerst zu erkennen, daß die Bits des Datenblocks des Typs II die Gleichungen 6-12 nicht erfüllen, falls eine "1" als das höchstwertige Bit hinzugefügt wird, um den Code-Unterblock zu bilden. Falls diese die Gleichungen erfüllen würden, würden dieselben als Daten-Unterblöcke vom Typ I bezeichnet werden. Es sollte ferner daran erinnert werden, daß, um einen Code-Unterblock aus einem Daten-Unterblock vom Typ I zu konstruieren, Bits A4 -A9 des Datenblocks vom Typ II invertiert werden und eine "0" als das höchstwertige Bit des Code-Unterblocks hinzugefügt wird. Ein Invertieren von C4-C10 sollte somit einen Unterblock erzeugen, der die Gleichungen 6-12 nicht erfüllt, falls der Code-Unterblock aus einem Daten- Unterblock vom Typ II hergeleitet wurde. Mit anderen Worten, der Code-Unterblock C wird nur aus einem Daten-Unterblock vom Typ II hergeleitet, falls der Code-Unterblock die folgende Gleichung erfüllt:
[(C10 + C9 + C8) * (C8 + C7 + C6) * (C7 + C6 + C5) * (C6 + C5 + C4) * (C5 + C4 + C3) * (C4 + C3 + C2 + C1) * (C2 + C1 + C0)] = 0 (52)
Durch ein Invertieren dieser Gleichung, so daß der Ausdruck auf der linken Seite gleich "1" wird, wenn der Code- Unterblock von einem Daten-Unterblock vom Typ II abgeleitet wird, und unter Verwendung des De-Morgan-Gesetzes, kann die Gleichung 52 ausgedrückt werden als:
[(C10 * C9 * C8) + (C8 * C7 * C6) + (C7 * C6 * C5) + (C6 * C5 * C4) + (C5 * C4 * C3) + (C4 * C3 * C2 * C1) + (C2 * C1 * C0)] = 1 (53)
Ein Code-Unterblock muß zwei zusätzliche Anforderungen erfüllen, damit dieser korrekt dahingehend identifiziert werden kann, daß derselbe von einem Daten-Unterblock vom Typ II hergeleitet wurde. Zuerst muß das höchstwertige Bit des Code-Unterblockes gleich "0" sein. Zweitens muß der Code- Unterblock die Gleichung 50 erfüllen, mit anderen Worten, er muß ein gültiger Code-Unterblock sein. Ein Kombinieren der Gleichung 53 mit diesen Beschränkungen erzeugt eine Gleichung, die gleich "1" ist, wenn der Code-Unterblock von einem Daten-Unterblock vom Typ II hergeleitet ist und gleich "0" ist, wenn der Code-Unterblock nicht von einem Daten- Unterblock vom Typ II hergeleitet ist. Ausgedrückt im Sinne einer Booleschen Variablen, T2, ist diese Gleichung:
T2 = [(C8 * C7 * C6) + (C7 * C6 * C5) + (C6 * C5 * C4) + (C5 * C4 * C3) + (C4 * C3 * C2 * C1) + (C2 * C1 * C0)] * C10 * V (54)
wobei "*" eine logische UND-Verknüpfung, "+" eine logische ODER-Verknüpfung und "x" eine logische NICHT-Verknüpfung an der Variablen "x" bezeichnet.
Es sei bemerkt, daß der Ausdruck (C10 * C9 * C8) aus der Gleichung 53 in der Gleichung 54 nicht vorhanden ist, da C10 gleich Null sein muß, und falls C10 Null ist, muß dieser gesamte Ausdruck gleich Null sein.
Code-Unterblöcke, die gültig sind, aber nicht von Daten­ unterblöcken vom Typ I oder Typ II hergeleitet wurden, fallen in eine dritte Gruppe von Unterblöcken, die durch die Boolesche Variable T3 und den Ausdruck
T3 = (T2 * C10 * V) (55)
gekennzeichnet werden.
Es sei bemerkt, daß die Gleichung für T3 nicht garantiert, daß der Code-Unterblock tatsächlich durch einen Daten- Unterblock vom Typ III generiert wurde. Es gibt zusätzliche gültige Codewörter, die einen Wert von "1" für die Gleichung 55 zusätzlich zu denen zurückgeben, die von einem Daten- Unterblock des vom Typ III hergeleitet werden. Diese zusätzlichen Code-Unterblöcke existieren, da es 1 067 mögliche gültige Code-Unterblöcke gibt, aber nur 1 024 benötigt werden, um alle möglichen Strukturen bzw. Muster der Daten-Unterblöcke unterzubringen. Folglich werden die zusätzlichen 43 Code-Unterblöcke, die nicht mit einem Daten- Unterblock verbunden sind, das Flag T3 auf "1" setzen.
Der Decodierer 54 der Rate 11/10 kann die Gruppe - K, L, M, N, P oder Q - identifizieren, von der ein Code-Unterblock unter Verwendung der folgenden Gleichungen hergeleitet wurde:
K = C9 * (H5 + H6 + H9 + H10) * (J0 * J1 * J8) (56)
L = C8 * (H4 + H3) * (C1 + C0) (57)
M = (C9 + C8) * H11 * C3 * J8 (58)
N = G1 * (((H6 + H5) * C3 * (C1 + C2)) + ((H10 + H9 + H2) * (J0 + J1 + J8))) (59)
P = G2 * H13 * C2 (60)
Q = G2 * H4 * C3 * J8, (61)
wobei ein Wert von "1" für einen Ausdruck auf der rechten Seite des Gleichheitszeichens anzeigt, daß der Code- Unterblock von einem Daten-Unterblock vom Typ III aus der besonderen Gruppe, die durch den Buchstaben auf der linken Seite gekennzeichnet ist, hergeleitet wurde. Die G, H und J Ausdrücke werden definiert als:
G1 = C10 * C9 * C8 (62)
G2 = C10 * C9 * C8 (63)
H2 = C7 * C6 * C5 * C4 (64)
H3 = C7 * C6 * C5 * C4 (65)
H4 = C7 * C6 * C5 * C4 (66)
H5 = C7 * C6 * C5 * C4 (67)
H6 = C7 * C6 * C5 * C4 (68)
H9 = C7 * C6 * C5 * C4 (69)
H10 = C7 * C6 * C5 * C4 (70)
H11 = C7 * C6 * C5 * C4 (71)
H13 = C7 * C6 * C5 * C4 (72)
J0 = C3 * C2 * C1 * C0 (73)
J1 = C3 * C2 * C1 * C0 (74)
J8 = C3 * C2 * C1 * C0 (75)
Falls ein empfangener Code-Unterblock C mit keinem der 1 024 gültigen Code-Unterblöcke, die aus den Daten-Unterblöcken hergeleitet werden können, übereinstimmen, ist es wünschenswert, eine Flag zu setzen, um anzuzeigen, daß der Code-Unterblock ein ungültiger Code-Unterblock basierend auf dem folgenden Ausdruck ist:
Fg = (T1 * T2 * K * L * M * N * P * Q) (76)
Basierend auf Gleichungen 50-75 sind die Ausdrücke zum Bestimmen der einzelnen Bits des Daten-Unterblocks A wie folgt:
A9 = (C9 * T1) + (C9 * T2) + [((C8 * K) + (C9 * L) + (C9 * C8 * M) + N + (C3 * P) + Q) * T3] (77)
A8 = (C8 * T1) + (C8 * T2) + [((C7 * K) + (C6 * L) + (C8 * M) + N + (C1 * P) + Q) * T3] (78)
A7 = (C7 * T1) + (C7 * T2) + [((C3 * K) + (C1 * C0 * L) + (C9 * C8 * M)+ ((H10 + H6) * N) + (C0 * P) + (C2 * Q)) * T3] (79)
A6 = (C6 * T1) + (C6 * T2) + [((C2 * K) + (C9 * C8 * M) + (C6 * N) + (C0 * P) + (C1 * Q)) * T3] (80)
A5 = (C5 * T1) + (C5 * T2) + [((C1 * K) + (C8 * M) + (C0 * P) + (C0 * Q)) * T3] (81)
A4 = (C4 * T1) + (C4 * T2) + [((C0 * K) + (C0 * L) + (C8 * M) + (C7 * C4 * N) + (C0 * P)) * T3] (82)
A3 = (C3 * T1) + (C3 * T2) + [((C5 * K) + (C2 * L) + (C3 * N)) * T3] (83)
A2 = (C2 * T1) + (C2 * T2) + [((C2 * M) + (C2 * N)) * T3] (84)
A1 = (C1 * T1) + (C1 * T2) + [((C1 * M) + (C1 * N)) * T3] (85)
A0 = (C0 * T1) + (C0 * T2) + [((C0 * M) + (C0 * N) + P + Q) * T3] (86)
Die Erfindung vereinfacht die Implementierung eines Codierers und eines Decodierers für einen RLL-Code mit 16/17-Rate durch Verwenden eines RLL-Codes der Rate 10/11 und durch Verwenden einer einfachen Codier-Logik, um eine Mehrheit der Daten- Unterblöcke, die an den Codierer der Rate 10/11 eingeben werden, zu kodieren.
Obgleich die Erfindung mit Bezug auf bevorzugte Ausführungsformen beschrieben wurde, werden Fachleute erkennen, daß Änderungen in Form und Detail gemacht werden können, ohne daß vom Geist und Schutzumfang der Erfindung abgewichen wird.

Claims (10)

1. Eine Vorrichtung zum Codieren von Datenblöcken in Codeblöcke mit einem Code der Rate 16/17, wobei jeder Datenblock 16 Datensymbole und jeder Codeblock 17 Codesymbole enthält, wobei die Codeblöcke derart sind, daß, wenn diese miteinander verkettet sind, um eine Kette (String) von Codesymbolen zu erzeugen, ein erstes Codesymbol nicht mehr als fünfmal aufeinanderfolgend in der Kette von Codesymbolen auftritt, wobei die Vorrichtung folgende Merkmale aufweist:
  • a) einen Datenblock-Latch zum Empfangen von einzelnen Datenblöcken und zum Aufteilen jedes Datenblocks in einen ersten Daten-Unterblock und einen zweiten Daten-Unterblock,
  • b) einen Codierer, der mit dem Datenblock-Latch gekoppelt ist, zum Empfangen des ersten Daten-Unterblocks und zum Codieren des ersten Daten-Unterblocks in einen ersten Code-Unterblock, und
  • c) eine Verschachtelungseinrichtung (Interleaver), die mit dem Codierer und dem Datenblock-Latch gekoppelt ist, zum Kombinieren von Datensymbolen in jedem zweiten Daten- Unterblock mit Codesymbolen in jedem ersten Code-Unterblock, um jeden Codeblock zu erzeugen.
2. Die Vorrichtung gemäß Anspruch 1, bei der die Datensymbole und die Codesymbole aus einem Satz von binären Symbolen gebildet sind, wobei der Satz von binären Symbolen ein erstes binäres Symbol und ein zweites binäres Symbol aufweist, und die ersten und zweiten binären Symbole als zueinander inverse Elemente betrachtet werden, wobei mindestens einige der ersten Daten-Unterblöcke durch ein Invertieren ausgewählter Datensymbole in jedem ersten Daten- Unterblock codiert werden, während die verbleibenden Datensymbole in jedem ersten Daten-Unterblock nicht invertiert werden, wodurch gemischte Blöcke erzeugt werden, und die ersten Code-Unterblöcke durch Hinzufügen eines eingefügten Codesymbols zu jedem gemischten Block vervollständigt werden, wobei die ausgewählten Datensymbole in der gleichen Position in jedem ersten Daten-Unterblock auftreten, der auf diese Art und Weise codiert ist bzw. wird.
3. Die Vorrichtung gemäß Anspruch 2, bei der die ersten Daten-Unterblöcke, die durch Hinzufügen eines eingefügten Codesymbols in die ersten Daten-Unterblöcke codiert sind, und die ersten Daten-Unterblöcke, die durch ein Invertieren ausgewählter Datensymbole in jedem ersten Daten-Unterblock codiert sind, während die verbleibenden Datensymbole in jedem ersten Daten-Unterblock nicht invertiert sind, wodurch gemischte Blöcke erzeugt werden, und ein eingefügtes Codesymbol zu jedem gemischten Block hinzugefügt wird, wobei die ausgewählten Datensymbole in der gleichen Position in jedem ersten Datenblock auftreten, zusammen eine Mehrheit von ersten Daten-Unterblöcken darstellen.
4. Eine Vorrichtung zum Decodieren von Codeblöcken in Datenblöcke mit einem Code der Rate 16/17, wobei jeder Datenblock 16 Datensymbole und jeder Codeblock 17 Codesymbole enthält, wobei die Codeblöcke derart sind, daß, wenn diese miteinander verkettet sind, um eine Kette (String) von Codesymbolen zu erzeugen, ein erstes Codesymbol nicht mehr als fünfmal aufeinanderfolgend in der Kette von Codesymbolen auftritt, wobei die Vorrichtung folgende Merkmale aufweist:
  • a) einen Codeblock-Latch zum Empfangen einzelner Codeblöcke und zum Aufteilen jedes Codeblocks in einen ersten Code-Unterblock und einen zweiten Code-Unterblock,
  • b) einen Decodierer, der mit dem Codeblock-Latch gekoppelt ist, zum Empfangen des ersten Code-Unterblocks und zum Decodieren des ersten Code-Unterblocks in einen ersten Daten-Unterblock, und
  • c) eine Verschachtelungseinrichtung (Interleaver), die mit dem Decodierer und dem Codeblock-Latch gekoppelt ist, zum Kombinieren von Codesymbolen in jedem zweiten Code-Unterblock mit Datensymbolen in jedem ersten Daten-Unterblock, um jeden Datenblock zu erzeugen.
5. Die Vorrichtung gemäß Anspruch 4, bei der eine Mehrheit der ersten Code-Unterblöcke durch Entfernen eines Codesymbols von den ersten Code-Unterblöcken decodiert wird.
6. Die Vorrichtung gemäß Anspruch 5, bei der die Datensymbole und die Codesymbole aus einem Satz von binären Symbolen gebildet sind, wobei der Satz von binären Symbolen ein erstes binäres Symbol und ein zweites binäres Symbol aufweist, und die ersten und zweiten binären Symbole als zueinander inverse Elemente betrachtet werden, wobei mindestens einige der ersten Code-Unterblöcke durch ein Invertieren ausgewählter Codesymbole in jedem ersten Code- Unterblock decodiert werden, während die verbleibenden Codesymbole in jedem ersten Code-Unterblock nicht invertiert werden, wodurch gemischte Blöcke erzeugt werden, und die ersten Daten-Unterblöcke durch Entfernen eines eingefügten Codesymbols von jedem gemischten Block vervollständigt werden, wobei die ausgewählten Codesymbole in der gleichen Position in jedem ersten Code-Unterblock auftreten, der auf diese Art und Weise decodiert ist bzw. wird.
7. Ein Verfahren zum Codieren von Datenblöcken in Codeblöcke mit einem Code der Rate 16/17, wobei jeder Datenblock 16 Datensymbole und jeder Codeblock 17 Codesymbole enthält, wobei die Codeblöcke derart, sind, daß, wenn diese miteinander verkettet sind, um eine Kette (String) von Codesymbolen zu erzeugen, ein erstes Codesymbol nicht mehr als fünfmal aufeinanderfolgend in der Kette von Codesymbolen auftritt, wobei das Verfahren folgende Schritte aufweist:
  • a) Aufteilen jedes Datenblocks in einen ersten Daten- Unterblock und einen zweiten Daten-Unterblock,
  • b) Codieren des ersten Daten-Unterblocks in einen ersten Code-Unterblock, und
  • c) Verschachteln (Interleaving) der Datensymbole in jedem zweiten Daten-Unterblock mit Codesymbolen in jedem ersten Code-Unterblock, um jeden Codeblock zu erzeugen.
8. Das Verfahren gemäß Anspruch 7, bei dem eine Mehrheit der Code-Unterblöcke vollständig durch Hinzufügen eines Codesymbols an einem Ende der jeweiligen ersten Daten- Unterblöcke gebildet wird.
9. Ein Verfahren zum Decodieren von Codeblöcken in Datenblöcke mit einem Code der Rate 16/17, wobei jeder Datenblock 16 Datensymbole und jeder Codeblock 17 Codesymbole enthält, wobei die Codeblöcke derart sind, daß, wenn diese miteinander verkettet sind, um eine Kette (String) von Codesymbolen zu erzeugen, ein erstes Codesymbol nicht mehr als fünfmal aufeinanderfolgend in der Kette von Codesymbolen auftritt, wobei das Verfahren folgende Schritte aufweist:
  • a) Aufteilen jedes Codeblocks in einen, ersten Code- Unterblock und einen zweiten Code-Unterblock
  • b) Decodieren des ersten Code-Unterblocks in einen ersten Daten-Unterblock, und
  • c) Kombinieren von Codesymbolen in einem zweiten Code- Unterblock mit Datensymbolen in einem ersten Daten- Unterblock, um einen Datenblock zu erzeugen.
10. Das Verfahren gemäß Anspruch 9, bei dem eine Mehrheit der ersten Code-Unterblöcke durch Entfernen eines Codesymbols von den ersten Code-Unterblöcken vollständig decodiert wird.
DE19781914A 1996-08-05 1997-08-05 System zum Implementieren von lauflängenbegrenzten Codes Expired - Fee Related DE19781914C2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US2322596P 1996-08-05 1996-08-05
US08/792,194 US5781133A (en) 1996-08-05 1997-01-30 Method and apparatus for implementing run length limited codes
PCT/US1997/013650 WO1998006181A1 (en) 1996-08-05 1997-08-05 System for implementing run length limited codes

Publications (1)

Publication Number Publication Date
DE19781914C2 true DE19781914C2 (de) 2001-11-08

Family

ID=26696872

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19781914T Pending DE19781914T1 (de) 1996-08-05 1997-08-05 System zum Implementieren von lauflängenbegrenzten Codes
DE19781914A Expired - Fee Related DE19781914C2 (de) 1996-08-05 1997-08-05 System zum Implementieren von lauflängenbegrenzten Codes

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE19781914T Pending DE19781914T1 (de) 1996-08-05 1997-08-05 System zum Implementieren von lauflängenbegrenzten Codes

Country Status (6)

Country Link
US (1) US5781133A (de)
JP (1) JP2000515703A (de)
KR (1) KR100306425B1 (de)
DE (2) DE19781914T1 (de)
GB (1) GB2331213B (de)
WO (1) WO1998006181A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100219608B1 (ko) * 1996-07-23 1999-10-01 윤종용 디지탈 기록 미디어와 디지탈 통신등의 디지탈 채널에 채택되는 신호변조방법
JP4058153B2 (ja) * 1998-02-25 2008-03-05 株式会社日立グローバルストレージテクノロジーズ 符号化方法およびそれを用いた記録再生装置
US6184806B1 (en) * 1998-03-13 2001-02-06 Quantum Corporation Rate 32/33 (D=0, K=6) run length limited modulation code having optimized error propagation
US6094316A (en) * 1998-03-27 2000-07-25 Samsung Electronics Co., Ltd. Method and apparatus for providing thermal asperity compensation in a fixed delay tree search detector
US6046691A (en) * 1998-04-13 2000-04-04 Lucent Technologies Inc. Rate 16/17 (0,5) modulation code apparatus and method for partial response magnetic recording channels
US6288655B1 (en) 1998-09-14 2001-09-11 Seagate Technology Llc Encoding and decoding techniques for data in 24 bit sequence
JP3578645B2 (ja) * 1998-10-19 2004-10-20 矢崎総業株式会社 変換方法、復調方法、変換装置、及び復調装置
US6236340B1 (en) * 1999-01-04 2001-05-22 Quantum Corporation Modulation encoders and decoders
FI106758B (fi) * 1999-04-16 2001-03-30 Nokia Networks Oy Segmentointimekanismi lohkoenkooderia varten
US6549147B1 (en) * 1999-05-21 2003-04-15 Nippon Telegraph And Telephone Corporation Methods, apparatuses and recorded medium for reversible encoding and decoding
US6417788B1 (en) 1999-07-09 2002-07-09 Maxtor Corporation High rate runlength limited codes for 10-bit ECC symbols
US6259384B1 (en) * 1999-07-09 2001-07-10 Quantum Corporation High rate runlength limited codes for 10-bit ECC symbols
US6906883B2 (en) * 2000-09-14 2005-06-14 Samsung Electronics Ltd., Co. Servo defect management scheme in hard disk drives
US6724553B2 (en) 2001-03-26 2004-04-20 Samsung Electronics Co., Ltd. Method and apparatus for generating the optimum read timing for read and write offset of a magneto resistive head
US6489762B2 (en) 2001-04-26 2002-12-03 Samsung Electronics Co., Ltd. Method to detect junction induced signal instability from GMR/MR heads
KR100468764B1 (ko) * 2001-09-13 2005-01-29 삼성전자주식회사 디스크 위의 위치 정보를 제공하는 방법 및 장치
US6791780B2 (en) 2001-10-15 2004-09-14 Samsung Electronics Co., Inc. Method and apparatus for providing write current optimization
US7035031B2 (en) * 2001-11-26 2006-04-25 Samsung Electronics Co., Ltd. Installation of heater into hard disk drive to improve reliability and performance at low temperature
US6839004B2 (en) 2001-11-27 2005-01-04 Seagate Technology Llc High rate run length limited code
US6959412B2 (en) * 2002-03-04 2005-10-25 Seagate Technology Llc Error correction coding utilizing numerical base conversion for modulation coding
US6674375B2 (en) * 2002-06-07 2004-01-06 Seagate Technology Llc Run length limited coding with minimal error propagation
US6961010B2 (en) * 2003-08-13 2005-11-01 Seagate Technology Llc DC-free code design with increased distance between code words
US6989776B2 (en) * 2003-11-17 2006-01-24 Seagate Technology Llc Generation of interleaved parity code words having limited running digital sum values
US7002492B2 (en) * 2004-07-07 2006-02-21 Seagate Technology Llc High rate running digital sum-restricted code
US7486208B2 (en) * 2007-05-16 2009-02-03 International Business Machines Corporation High-rate RLL encoding
US7432834B1 (en) * 2007-07-05 2008-10-07 International Business Machines Corporation RLL encoding for LTO-5 tape
CN104753653B (zh) * 2013-12-31 2019-07-12 中兴通讯股份有限公司 一种解速率匹配的方法、装置和接收侧设备
US9015165B1 (en) * 2014-03-03 2015-04-21 Michael L. Hamm Text-SQL relational database
US9484949B1 (en) * 2015-04-09 2016-11-01 Oracle International Corporation Variable run length encoding of a bit stream

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0560339A1 (de) * 1992-03-10 1993-09-15 Sony Corporation Verfahren und Gerät zur Modulation und Demodulation
US5537112A (en) * 1994-01-12 1996-07-16 Seagate Technology, Inc. Method and apparatus for implementing run length limited codes in partial response channels

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2533091A1 (fr) * 1982-09-13 1984-03-16 Cii Honeywell Bull Systeme de detection et de correction d'erreurs de transmission d'un message binaire utilisant un code cyclique detecteur et correcteur d'erreurs de type reed-solomon entrelace

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0560339A1 (de) * 1992-03-10 1993-09-15 Sony Corporation Verfahren und Gerät zur Modulation und Demodulation
US5537112A (en) * 1994-01-12 1996-07-16 Seagate Technology, Inc. Method and apparatus for implementing run length limited codes in partial response channels

Also Published As

Publication number Publication date
GB2331213A (en) 1999-05-12
JP2000515703A (ja) 2000-11-21
US5781133A (en) 1998-07-14
GB2331213B (en) 2001-03-14
KR100306425B1 (ko) 2001-09-29
DE19781914T1 (de) 1999-06-17
KR20000029826A (ko) 2000-05-25
WO1998006181A1 (en) 1998-02-12
GB9902529D0 (en) 1999-03-24

Similar Documents

Publication Publication Date Title
DE19781914C2 (de) System zum Implementieren von lauflängenbegrenzten Codes
DE3888418T2 (de) PRML-Kodierung.
DE3689733T2 (de) Gerät zur Übertragung von Datenbitgruppen und Verfahren zur Beurteilung der mit der grössten Wahrscheinlichkeit übertragenen Sequenz.
DE69024045T2 (de) Kodierungsverfahren und Vorrichtung zur Pipeline- und Parallelverarbeitung.
DE3785474T2 (de) Dekodierung von Brückennetzwerken und Koden.
DE68926314T2 (de) Eingangskodierung für Partial-Response-Kanäle
DE10134472B4 (de) Sende- und Empfangsschnittstelle und Verfahren zur Datenübertragung
DE69117035T2 (de) Digitale Modulation
DE69233373T2 (de) TCM-Schema mit nichtganzzahligen Datenraten, Rahmensignalen und Konstellationsumformung
DE69612955T4 (de) Verfahren zur umwandlung von m-bit-informationsworten in ein moduliertes signal, verfahren zur herstellung eines aufzeichnungsträgers, codiervorrichtung, vorrichtung, aufzeichnungsvorrichtung, signal sowie aufzeichnungsträger
DE3689819T2 (de) Fehler-Korrektur-Koder/Dekoder.
DE3854292T2 (de) Decoder.
DE69632879T2 (de) Kodeübertragung mit lokaler Parität
DE102007016461B4 (de) Verfahren zum Übertragen DC-balance-kodierter Daten, Verfahren zum Reduzieren von Simultaneous Switching Noise, Datensender, Datenempfänger und Daten-Sender/ Empfänger
DE2364874A1 (de) Kodieranordnung fuer ein differentialphasenmodulationssystem
DE60038333T2 (de) Vier-zu-sechs Kodierungstabelle, Modulation die diese anwendet, aber ohne Vereinigungsbit ,sowie ihre Anwendung für optische Plattenaufzeichnungs- oder Wiedergabesysteme
DE3039726A1 (de) Verfahren und vorrichtung zum codieren eines digitalsignals mit niedriger gleichkomponente
DE19742417A1 (de) Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand
DE68920739T2 (de) Daten-Kodierung für den Sofortstart von PRML-Empfängern.
DE3225058A1 (de) Verfahren und vorrichtung zur verarbeitung binaerer daten
DE69032076T2 (de) Einrichtung für Datenkodierung und Vorwärts-Fehlerkorrektur für eine niedrige Offset-Gleichspannung und eine kurze Lauflänge
DE2828219A1 (de) Verfahren zur aufzeichnung und wiedergabe digitaler daten auf magnetspeicher
DE69733465T2 (de) Umsetzung einer sequenz von m-bit-informationswörtern in ein moduliertes signal
DE3407832C2 (de) Verfahren zum Kodieren und Dekodieren binärer Daten
EP0464910A2 (de) Übertragungseinrichtung mit einem blockcode-codiertem Hauptkanal und mit einem Zusatzkanal

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8607 Notification of search results after publication
8127 New person/name/address of the applicant

Owner name: SEAGATE TECHNOLOGY LLC, SCOTTS VALLEY, CALIF., US

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee