DE19781914C2 - System zum Implementieren von lauflängenbegrenzten Codes - Google Patents
System zum Implementieren von lauflängenbegrenzten CodesInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion 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
-
- 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/14—Digital recording or reproducing using self-clocking codes
- G11B20/1403—Digital recording or reproducing using self-clocking codes characterised by the use of two levels
- G11B20/1423—Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
- G11B20/1426—Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M5/00—Conversion of the form of the representation of individual digits
- H03M5/02—Conversion to or from representation by pulses
- H03M5/04—Conversion to or from representation by pulses the pulses having two levels
- H03M5/14—Code 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/145—Conversion to or from block codes or representations thereof
-
- 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/14—Digital recording or reproducing using self-clocking codes
- G11B20/1403—Digital recording or reproducing using self-clocking codes characterised by the use of two levels
- G11B20/1423—Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
- G11B20/1426—Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof
- G11B2020/1446—16 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.
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.
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.
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)
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 |
JP3415121B2 (ja) * | 1998-09-14 | 2003-06-09 | シーゲイト テクノロジー エルエルシー | 24ビットシーケンスデータの符号化および復号技術 |
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 |
US6259384B1 (en) * | 1999-07-09 | 2001-07-10 | Quantum Corporation | High rate runlength limited codes for 10-bit ECC symbols |
US6417788B1 (en) | 1999-07-09 | 2002-07-09 | Maxtor 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 |
WO2003047111A2 (en) | 2001-11-27 | 2003-06-05 | 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 |
WO2005020440A1 (en) * | 2003-08-13 | 2005-03-03 | 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)
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)
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 |
-
1997
- 1997-01-30 US US08/792,194 patent/US5781133A/en not_active Expired - Lifetime
- 1997-08-05 GB GB9902529A patent/GB2331213B/en not_active Expired - Fee Related
- 1997-08-05 DE DE19781914T patent/DE19781914T1/de active Pending
- 1997-08-05 WO PCT/US1997/013650 patent/WO1998006181A1/en active IP Right Grant
- 1997-08-05 DE DE19781914A patent/DE19781914C2/de not_active Expired - Fee Related
- 1997-08-05 JP JP10508132A patent/JP2000515703A/ja active Pending
-
1999
- 1999-02-05 KR KR1019997000971A patent/KR100306425B1/ko not_active IP Right Cessation
Patent Citations (2)
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 |
---|---|
GB2331213B (en) | 2001-03-14 |
JP2000515703A (ja) | 2000-11-21 |
KR100306425B1 (ko) | 2001-09-29 |
GB9902529D0 (en) | 1999-03-24 |
WO1998006181A1 (en) | 1998-02-12 |
US5781133A (en) | 1998-07-14 |
KR20000029826A (ko) | 2000-05-25 |
GB2331213A (en) | 1999-05-12 |
DE19781914T1 (de) | 1999-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19781914C2 (de) | System zum Implementieren von lauflängenbegrenzten Codes | |
DE69603053T2 (de) | Verfahren zum Generieren eines gleichstromfreien Kodes mit Kodierung eines Teiles der Daten durch die Sequenz der digitalen Summe aufeinanderfolgender Kodewörtern, und Vorrichtung dazu | |
DE69609509T2 (de) | Trelliskodierung mit verminderter fehlerverbreitung | |
DE69513720T2 (de) | Codiereinrichtung für punktierten Faltungscode | |
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. | |
DE69424972T2 (de) | Rotationsinvariante Mehrpegelkodierungssysteme | |
DE3785474T2 (de) | Dekodierung von Brückennetzwerken und Koden. | |
DE69330591T2 (de) | Differentiell kodierte Pulspositionsmodulation mit Schutzintervall für die Anwendung in Kommunikationsnetzwerken | |
DE69425298T2 (de) | Einrichtung zur Kodierung/Dekodierung von n-bit Quellworten in entsprechende m-bit Kanalworte und umgekehrt | |
DE68926314T2 (de) | Eingangskodierung für Partial-Response-Kanäle | |
DE69117035T2 (de) | Digitale Modulation | |
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 | |
DE69611150T2 (de) | Verfahren und Anordnung zur Erzeugung eines lauflängebegrenzten Codes mit Gleichstromsteuerung | |
DE69632879T2 (de) | Kodeübertragung mit lokaler Parität | |
DE69321746T2 (de) | Datenmodulations und -demodulationsverfahren und -vorrichtung | |
DE2364874A1 (de) | Kodieranordnung fuer ein differentialphasenmodulationssystem | |
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 | |
DE3225058A1 (de) | Verfahren und vorrichtung zur verarbeitung binaerer daten | |
DE69527935T2 (de) | Gleichtaktfreier ternärer Kode | |
DE69328642T2 (de) | Datenumsetzungsverfahren und Aufzeichnungs-/Wiedergabegerät zur Durchführung desselben | |
DE69032076T2 (de) | Einrichtung für Datenkodierung und Vorwärts-Fehlerkorrektur für eine niedrige Offset-Gleichspannung und eine kurze Lauflänge | |
DE69733465T2 (de) | Umsetzung einer sequenz von m-bit-informationswörtern in ein moduliertes signal |
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 |