DE19838865C2 - Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung - Google Patents
Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen SchaltungInfo
- Publication number
- DE19838865C2 DE19838865C2 DE19838865A DE19838865A DE19838865C2 DE 19838865 C2 DE19838865 C2 DE 19838865C2 DE 19838865 A DE19838865 A DE 19838865A DE 19838865 A DE19838865 A DE 19838865A DE 19838865 C2 DE19838865 C2 DE 19838865C2
- Authority
- DE
- Germany
- Prior art keywords
- output
- input
- register
- xor
- crc
- 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
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6575—Implementations based on combinatorial logic, e.g. Boolean circuits
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Description
Die Erfindung betrifft allgemein die Erzeugung eines CRC Codes
(zyklische Redundanzprüfung oder zyklische Blockprüfung), die
zum Überprüfen von Fehlern beim Übertragen von digitalen Daten
von einem Sender an einem Empfänger verwendet wird. Der CRC
kann eine verschiedene Länge aufweisen und wird zu den
Benutzerdaten in dem Sender hinzugefügt. In dem Empfänger
werden die CRC Daten mit den CRC Daten verglichen, die auf
Grundlage der empfangenen Benutzerdaten regeneriert werden.
Wenn die zwei erzeugten CRC Daten übereinstimmen, dann wird
bestimmt, dass keine schwerwiegenden Übertragungsfehler
während der Übertragung zwischen dem Sender und dem Empfänger
aufgetreten sind.
Die Erzeugung eines CRC Codes ist eine standardmäßige Technik
und Schaltungen sind im Stand der Technik bekannt, um diesen
CRC Code entweder seriell oder parallel zu erzeugen. Wie
nachstehend mit näheren Einzelheiten erläutert wird, sind
Design-Tools (Entwurfsverfahren) verfügbar, um derartige
serielle und parallele Erzeugungsschaltungen zu entwerfen.
Bislang berücksichtigen derartige Design-
Tools für die parallele CRC Erzeugungsschaltung Redundanzen in
den Rückkopplungsleitungen nicht. Das
heißt, wenn mehr Rückkopplungsleitungen als absolut notwendig
verwendet werden, um die parallele CRC Erzeugung auszuführen,
dann wird der Hardwareaufwand extensiv und die Geschwindigkeit
zum parallelen Erzeugen der CRC Bits wird herabgesetzt.
Die vorliegende Erfindung betrifft insbesondere das Problem,
wie die Redundanzen in den parallelen CRC
Erzeugungsschaltungen verringert werden können.
Beim Entwerfen einer CRC Erzeugungsschaltung zum Erzeugen
eines CRC Codes mit der Länge N, wird ein CRC Polynom CRCN
verwendet, welches allgemein durch die folgende Gleichung (1a)
definiert wird:
CRCN = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
In dieser Gleichung (1a) ist der Koeffizient aN = 1, a0 = 1
und die Koeffizienten an, n = 1, . . ., N - 1 sind in Abhängigkeit
von dem zu bildenden CRC Code 0 oder 1. Fig. 1a zeigt das
Prinzip einer seriellen CRC Erzeugungsschaltung, die auf
Grundlage des CRC Polynoms in Gleichung (1) realisiert ist.
Die CRC Erzeugungsschaltung umfasst eine Anzahl N von
Schieberegistern C0, C1, . . ., Cn, . . ., CN-1 in einer
Reihenschaltung. Ferner sind eine Anzahl N von XOR Gattern
XOR1 . . . XORn, . . ., XORN-1, XORN vorgesehen. Ein Bitstrom SI
wird dem XOR Gatter XORN seriell eingegeben (XOR: Ex-ODER-
Gatter). Im wesentlichen sind in Abhängigkeit von der Wahl von
N und an in der Gleichung (1) XOR Gatter zwischen jeweils zwei
Schieberegistern Cn, Cn-1 vorgesehen. In Abhängigkeit von den
Rückkopplungen oder Rückführungen von dem XOR Gatter XORN zu
den einzelnen Schieberegistern (Flip-Flops) C, wird ein
gewünschter CRC Code von dem Schieberegister CN-1 der letzten
Stufe ausgegeben.
Somit wählt der Entwickler den zu erzeugenden CRC Code durch
Wählen der Rückkopplungen, d. h. durch Wählen von N und welche
der Koeffizienten an 0 oder 1 sind, in Abhängigkeit von dem
gewünschten CRC Code. In der Schaltung in Fig. 1a zeigt sich
diese Auswahl von Koeffizienten an durch die Rückkopplung und
die Einfügung der bestimmten XOR Gatter zwischen jeweils zwei
Schieberegistern.
Der Betrieb der Schaltung in Fig. 1a ist folgendermaßen. Der
Eingangsbitstrom SI von X Bits (beispielsweise 100) wird dem
XOR Gatter XORN bei sequentiellen Taktzyklen seriell
eingegeben. Danach wird der in den seriellen Schieberegistern
gespeicherte CRC Code seriell ausgelesen. Das heißt, dass nach
der Verwendung von X Taktzyklen zum Eintakten der X Bits in
die CRC Schaltung, weitere N Taktzyklen verwendet werden
müssen, um den erzeugten CRC Code seriell auszulesen. Der
ausgelesene CRC Code wird dann seriell an die Benutzerdaten
von x Bits angehängt, um zusammen mit den Benutzerdaten an den
Empfänger übertragen zu werden.
Unter Verwendung der seriellen CRC Erzeugungsschaltung aus
Fig. 1a werden deshalb zusätzliche N Taktzyklen immer
benötigt, um den erzeugten CRC Code auszulesen, was die
Verarbeitungszeit zum Erzeugen und Übertragen des CRC Codes
erhöht.
Fig. 1b zeigt ein Beispiel der seriellen CRC Schaltung für
einen speziellen CRC13 Code. Das heißt, in Fig. 1b ist das
Polynom folgendermaßen gewählt:
CRC13 = X13 + X12 + X7 + X6 + X5 + X4 + X2 + 1 (1b)
wie in Fig. 1b über der seriellen CRC Schaltung gezeigt. Somit
ist in der Schaltung aus Fig. 1b N = 13 und a13 = a12 = a7 =
a6 = a5 = a4 = a2 = a0 = 1. Die Wahl dieser Koeffizienten in
dem CRC Polynom zeigt sich in der Schaltungskonfiguration
durch die Rückführungen von dem Schieberegister C12 zu den
anderen Schieberegistern C0-C11 über die jeweiligen XOR
Gatter zwischen den einzelnen Schieberegistern C. In Fig. 1b
wird der CRC Code mit einer Länge 13 seriell bei dem
"seriellen CRC13 Ausgang" ausgegeben, nachdem die X Bits
seriell eingegeben worden sind.
Da in den Schaltungen in Fig. 1a und 1b die Verarbeitung
seriell ausgeführt wird, erhöht sich die Verarbeitungszeit.
Deshalb gibt es eine alternative Lösung zur Ausführung der
Erzeugung des CRC Codes parallel für ein Datenpaket mit T
Bits, das ein sein paralleler Teil der seriellen X Bits ist. Fig.
1c zeigt eine allgemeine Konfiguration einer parallelen CRC
Erzeugungsschaltung.
In Fig. 1c ist eine Eingangsregistereinrichtung I mit T
Eingangsregistern I0, I1 . . . IT . . . IT-1 zum gleichzeitigen
Speichern von T Eingangsbits vorgesehen. Jedes
Eingangsregister weist eine Ausgangsleitung I(0), I(1), . . .
I(t) . . . I(T - 1) auf, die zu einer Kopplungseinrichtung CM
führt. Eine Ausgangsregistereinrichtung C weist N
Ausgangsregister C0, C1, . . . CN . . . CN-1 zum parallelen
Speichern des erzeugten CRC Codes auf. Jedes Ausgangsregister
weist eine Eingangsleitung C0(T), C1(T), . . . Cn(T) . . .
CN-1(T) und eine Ausgangsleitung C0(0), C1(0) . . . Cn(0) . . .
CN-1(0) auf. Ferner sind eine Anzahl N von parallelen XOR
Gattern XOR0, XOR1 . . . XORn . . . XORN-1 vorgesehen, die jeweils
einen mit einer jeweiligen Eingangsleitung der
Ausgangsregister verbundenen Ausgang und eine Anzahl von mit
der Kopplungseinrichtung CM gekoppelten Eingangsleitungen
aufweisen. Die Ausgangsleitungen der jeweiligen
Ausgangsregister werden ebenfalls der Kopplungseinrichtung CM
eingegeben.
Der Betrieb der parallelen CRC Erzeugungsschaltung in Fig. 1c
ist folgendermaßen. Aus dem Datenstrom von X Bits werden eine
Anzahl von T Bits der Eingangsregistereinrichtung I (parallel)
eingegeben. Die Kopplungseinrichtung CM bestimmt, welche
Ausgangsleitungen von der Eingangsregistereinrichtung I und
welche Ausgangsleitungen von den Ausgangsregistern C den
jeweiligen XOR Gattern eingegeben werden. Die
Kopplungseinrichtung "koppelt" die Ausgänge von den
Eingangsregistern und die Ausgänge der Ausgangsregister nicht,
sondern bestimmt lediglich, welche Eingangsleitungen der XOR
Gatter einen getrennten Eingang von den jeweiligen Eingangs-
und Ausgangsregistern empfangen müssen. In einem Taktzyklus
enthalten die Ausgangsregister C einen parallel erzeugten CRC
Code. Dann werden in dem nächsten Taktzyklus der nächste Satz
von T Eingangsbits der Eingangsregistereinrichtung I
eingegeben. Dann werden sie den XOR Gattern in Kombination mit
dem in den Ausgangsregistern C gehaltenen vorangehenden CRC
Code eingegeben. Somit wird für jeweils T Eingangsbits nur ein
Taktzyklus benötigt, um den CRC Code parallel zu erzeugen. Im
Gegensatz zu den seriellen Schaltungen in Fig. 1a und Fig. 1b,
bei denen die serielle Erzeugung des CRC Codes viel Zeit
benötigt und deshalb unerwünscht ist, bildet die parallele
Erzeugungsschaltung aus Fig. 1c den CRC Wert für die Anzahl T
von Eingangsbits in einem Taktzyklus.
Jedoch ist allgemein der Entwurf der Kopplungseinrichtung CM,
die bestimmt, wie die Ausgangsleitungen der Eingangsregister
und die Ausgangsleitungen der Ausgangsregister als Eingänge an
die jeweiligen XOR Gatter geführt werden müssen, keine
triviale Aufgabe. Das heißt, was mit einer internen
Zustandsverschiebung in einem seriellen Eingangsregister
durchgeführt wurde, muss nun in Fig. 1c in einem Schritt
parallel ausgeführt werden. Herkömmliche Design-Tools führen -
für ein gegebenes Polynom und eine gegebene Länge des CRC
Codes - eine Simulation der seriellen CRC Schaltung aus, um
herauszufinden, wie sich die einzelnen Einträge in den
seriellen Schieberegistern sukzessive mit der Eingabe der T
Bits verändern. Auf Grundlage dieser Simulationen wird die
Kopplungseinrichtung bestimmt.
In dem Dokument "PEI, Tong-Bi; ZUKOWSKI CHARLES: High-Speed
Parallel CRC Circuits in VLSI. In: IEEE Transactions on
Communications, April 1992 Vol. 40 Nr. 4, Seiten 653-657, ist
eine parallele CRC-Erzeugungsschaltung zum parallelen
Generieren eines CRC-Codes der Länge N gemäß dem Oberbegriff
des Anspruchs 1, 2 beschrieben. Der CRC-Code der Länge N = 32
ist als ein CRC-Polynom definiert und der CRC-Code wird hier
parallel für eine Anzahl T = 24 Eingangsbits eines
Datenstroms bestimmt. Die Kopplung der Eingangsregister-
Ausgangsleitungen und der Ausgangsregister-Ausgangsleitungen
mit den Eingangsleitungen der XOR-Gatter erfolgt in einer
Kopplungseinrichtung. Wie voranstehend erwähnt, beschreibt
dieses Dokument, daß durch eine Simulation einer seriellen
CRC-Erzeugungsschaltung die Kopplung der jeweiligen Leitungen
in der Kopplungseinrichtung bestimmt werden kann. Hier werden
beispielsweise SPICE Simulationen verwendet, um die
Verzögerung der D-Flip-Flops zu bestimmen. Vergleichbare
Lösungen wie in der voranstehend erwähnten Druckschrift für
die parallele Generierung von CRC-Codes sind in dem Dokument
"ALBERTENGO, Guido; SISTO, Riccardo: Parallel CRC Generation.
In: IEEE Micro, Oktober 1990, Seiten 63-71" in der US 5103451
A und in den Patent Abstracts of Japan E-948,05.07 1990 Vol.
14, No. 312, JP 2-101824 A beschrieben.
Der Erfinder hat Simulationen zum Entwerfen (d. h. Entwickeln
und Generieren) der parallelen CRC Schaltung in dieser Weise
ausgeführt und das Problem entdeckt, dass die herkömmliche
Kopplungseinrichtung CM den Nachteil aufweist, dass in der Tat
zu viele Rückkopplungen von den Ausgangsregistern verwendet
werden. Das heißt, da die herkömmlichen Simulations-Tools
jedes Flip-Flop (Schieberegister) der seriellen CRC Schaltung
individuell betrachten, wurde entdeckt, dass sie nicht
erfassen können, dass eine mögliche Redundanz existiert, d. h.,
dass zu viele Rückführungen von den Ausgangsregistern und zu
viele Ausgangsleitungen von den Eingangsschieberegistern I den
XOR Gattern eingegeben werden. Es wurde festgestellt, dass
diese Redundanz die Verarbeitungszeit und den in der
parallelen CRC Erzeugungsschaltung erforderlichen
Hardwareaufwand erhöht. Somit sind in Abhängigkeit von dem
verwendeten Polynom einige der Rückführungen von Signalen
tatsächlich überflüssig und die Design-Tools konnten diese
bislang nicht als unnötig erkennen.
Die Erfindung stützt sich auf die Erkenntnis des Problems,
dass - in Abhängigkeit von verwendetem Polynom - nicht
sämtliche Rückführungen und nicht sämtliche Ausgänge von den
Eingangsregistern als Eingänge für die XOR Gatter erforderlich
sind, und dass es für die parallele Berechnung des CRC Codes
ausreichend ist, nur einige der in den Ausgangsregistern
gespeicherten vorangehenden Werte zu berücksichtigen.
Somit ist das von dem Erfinder erkannte unbekannte Problem,
- - ein Verfahren und eine parallele CRC Erzeugungsschaltung bereitzustellen, die zu einer höheren Verarbeitungsgeschwindigkeit führen, während der für die Realisation der parallelen CRC Erzeugungsschaltung erforderliche Hardwareaufwand verringert wird.
Dieses Problem wird gelöst durch ein Verfahren (Anspruch 1)
zum Generieren einer parallelen CRC Erzeugungsschaltung zum
parallelen Erzeugen eines CRC Codes der Länge N, der als ein
CRC Polynom (CRC)
CRC = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
definiert ist, wobei aN = a0 = 1 ist und die Koeffizienten an
gleich 0 oder 1 sind, in Abhängigkeit von dem zu bildenden CRC
Code, parallel für eine Anzahl T von Eingangsbits eines
Datenstroms, umfassend die folgenden Schritte:
- a) Bereitstellen einer Eingangsregistereinrichtung (I) mit T Eingangsregistern I0, I1, . . . It . . ., IT-1 zum gleichzeitigen Speichern der T Eingangsbits, wobei jedes Eingangsregister eine Ausgangsleitung I(0), I(1), . . . I(t) . . ., I(T - 1) aufweist.
- b) Bereitstellen einer Ausgangsregistereinrichtung (C) mit N Ausgangsregistern C0, C1, . . . Cn . . ., CN-1 zum gleichzeitigen Speichern des CRC Codes, wobei jedes Ausgangsregister jeweils eine Eingangsleitung C0(T), C1(T), . . . Cn(T) . . . CN-1(T) und eine Ausgangsleitung C0(0), C1(0), . . . Cn(0) . . . CN-1(0) aufweist; und
- c) Bereitstellen einer Anzahl N von XOR Gattern XOR0, XOR1, . . . XORn . . . XORN-1, die jeweils einen mit einer jeweiligen Eingangsleitung der Ausgangsregister verbundenen Ausgang und Eingangsleitungen aufweisen, die Eingangsregister-Ausgangsleitungen und einer vorgegebenen Anzahl der Ausgangsregister-Ausgangsleitungen gekoppelt sind;
dadurch gekennzeichnet, dass
- a) die Kopplung der Eingangsregister-Ausgangsleitungen und der Ausgangsregister-Ausgangsleitungen mit den Eingangsleitungen der XOR Gatter durch die folgenden Schritte erhalten wird:
- b) Speichern einer Matrix CT mit N Spalten und T + 1 Zeilen in
einem Speicher:
wobei die Zeilenelemente ct0,0, ct0,1, . . . ct0,n . . . ct0,N-1 in der Zeile 0 jeweils den Index der Ausgangsregister-Ausgangsleitungen C0(0), C1(0), . . . Cn(0) . . . CN-1(0) speichern; und
wobei die Spaltenelemente ct1,n, ctt,n, ctT,n, für die Spaltennummern n, für die an = 0 ist, einen beliebigen nicht-Lese-Wert speichern, der anzeigt, dass dieser Wert zum Bilden von Kopplungsgruppen nicht berücksichtigt werden soll, und für die Spaltennummern n, für die an = 1 ist, das folgende Wertpaar speichern:
ctT,n = iT-1 = (I(T - 1), CN-1(T - 1))
ctT-1,n = iT-2 = (I(T - 2), CN-1(T - 2))
.
.
.
ctt,n = it-1 = (I(t - 1), CN-1(t - 1))
.
.
.
ct1,n = i0 = (I(0), CN-1(0)) (2)
wobei der erste Wert in dem Paar eine Eingangsregister- Ausgangsleitung bezeichnet, der zweite Wert in dem Paar einen Ausgangsregister-Zustandsparameter bezeichnet und der Wert CN-1(0) die Ausgangsleitung der Ausgangsregister-Ausgangsleitung CN-1 bezeichnet; - c) Bestimmen des Index der Eingangsregister-
Ausgangsleitungen und des Index der Ausgangsregister-
Ausgangsleitungen für jedes der N XOR Gatter XOR0, XOR1,
. . . XORn, . . . XORN-1 wie folgt:
- 1. Wählen eines XOR Gatters mit der Nummer n [0, N - 1];
- 2. Lesen des Elementpaars ctT,n aus der Matrix CT und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen- und Spaltennummern angeordnet sind, und Gruppieren von diesen in eine Kopplungsgruppe gn;
- 3. wenn die Kopplungsgruppe gn Ausgangsregister- Zustandsparameter CN-1(t) mit t ≠ 0, umfasst, Lesen von Elementpaaren ctt,N-1 mit t ≠ 0 entsprechend zu den Ausgangsregister-Zustandsparametern und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen und Spaltennummern angeordnet sind, und Ersetzen der Ausgangsregister-Zustandsparameter in der Kopplungsgruppe mit diesen Werten;
- 4. Wiederholen des Ausleseschritts e23, bis keine weiteren Ausgangsregister-Zustandsparameter in der Kopplungsgruppe gn existieren und Löschen von Paaren von identischen Eingangsregister- Ausgangsleitungs-Indizes und identischen Ausgangsregister-Ausgangsleitungs-Indizes in der Kopplungsgruppe entweder an Zwischenstufen der Ersetzung oder nachdem sämtliche Ausgangsregister- Zustandsparameter ersetzt worden sind;
- 5. Wiederholen der Schritte e21-e24 für sämtliche N XOR Gatter zum Bilden von N Kopplungsgruppen;
- 6. wobei jede Kopplungsgruppe gn für jedes XOR Gatter die Eingangsregister-Ausgangsleitungen und die Ausgangsregister-Ausgangsleitungen anzeigt, die mit dem Eingang des jeweiligen XOR Gatters verbunden werden sollen; und
- 7. Verbinden der Eingangsregister-Ausgangsleitungen und der Ausgangsregister-Ausgangsleitungen mit dem Eingang des jeweiligen XOR-Gatters gemäß der jeweiligen Kopplungsgruppen.
Ferner wird dieses Problem gelöst (Anspruch 2) durch eine
parallele CRC Erzeugungsschaltung zum parallelen Generieren
eines CRC Codes der Länge N, der als ein CRC Polynom (CRC)
CRC = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
definiert ist, wobei aN = a0 = 1 ist und die Koeffizienten an
0 oder 1 sind, in Abhängigkeit von dem zu bildenden CRC Code,
parallel für eine Anzahl T von Eingangsbits eines
Datenstromes, umfassend:
- a) eine Eingangsregistereinrichtung mit T Eingangsregistern I0, I1, . . . It . . ., IT-1 zum gleichzeitigen Speichern der T Eingangsbits, wobei jedes Eingangsregister eine Ausgangsleitung I(0), I(1), . . . I(t) . . ., I(T - 1) aufweist.
- b) eine Ausgangsregistereinrichtung mit N Ausgangsregistern C0, C1, . . . Cn . . ., CN-1 zum gleichzeitigen Speichern des CRC Codes, wobei jedes Ausgangsregister jeweils eine Eingangsleitung C0(T), C1(T), . . . Cn(T) . . . CN-1(T) und eine Ausgangsleitung C0(0), C1(0), . . . Cn(0) . . . CN-1(0) aufweist; und
- c) eine Anzahl N von XOR Gattern XOR0, XOR1, . . . XORn . . . XORN-1 vorgesehen sind, die jeweils einen mit einer jeweiligen Eingangsleitung der Ausgangsregister verbundenen Ausgang und Eingangsleitungen aufweisen, die Eingangsregister-Ausgangsleitungen und Ausgangsregister- Ausgangsleitungen gekoppelt sind;
dadurch gekennzeichnet, dass
- a) die Kopplung der Eingangsregister-Ausgangsleitungen und der Ausgangsregister-Ausgangsleitungen mit den Eingangsleitungen der XOR Gatter durch die folgenden Schritte definiert wird:
- b) Speichern einer Matrix CT mit N Spalten und T + 1 Zeilen in
einem Speicher:
wobei die Zeilenelemente ct0,0, ct0,1, . . . ct0,n . . . ct0,N-1 in der Zeile 0 jeweils den Index der Ausgangsregister-Ausgangsleitungen C0(0), C1(0), . . . Cn(0) . . . CN-1(0) speichern; und
wobei die Spaltenelemente ct1,n . . . ctt,n . . . ctT,n für die Spaltennummern n, für die an = 0 ist, einen beliebigen nicht-Lese-Wert speichern, der anzeigt, daß dieser Wert zum Bilden von Kopplungsgruppen nicht berücksichtigt werden soll, und für die Spaltennummern n, für die an = 1 ist, das folgende Wertpaar speichern:
ctT,n = iT-1 = (I(T - 1), CN-1(T - 1))
ctT-1,n = iT-2 = (I(T - 2), CN-1(T - 2))
.
.
.
ctt,n = it-1 = (I(t - 1), CN-1(t - 1))
.
.
.
ct1,n = i0 = (I(0), CN-1(0))
wobei der erste Wert in dem Paar eine Eingangsregister- Ausgangsleitung bezeichnet, der zweite Wert in dem Paar einen Ausgangsregister-Zustandsparameter bezeichnet und der Wert CN-1(0) die Ausgangsleitung der Ausgangsregister-Ausgangsleitung CN-1 bezeichnet; - c) Bestimmen des Index der Eingangsregister-
Ausgangsleitungen und des Index der Ausgangsregister-
Ausgangsleitungen für jedes der N XOR Gatter XOR0, XOR1,
. . . XORn, . . . XORN-1 wie folgt:
- 1. Wählen eines XOR Gatters mit der Nummer n [0, N - 1];
- 2. Lesen des Elementpaars ctT,n aus der Matrix CT und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen- und Spaltennummern angeordnet sind, und Gruppieren von diesen in eine Kopplungsgruppe gn;
- 3. wenn die Kopplungsgruppe gn Ausgangsregister- Zustandsparameter CN-1(t) mit t ≠ 0, umfaßt, Lesen von Elementpaaren ctt,N-1 mit t ≠ 0 entsprechend zu den Ausgangsregister-Zustandsparametern und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen und Spaltennummern angeordnet sind, und Ersetzen der Ausgangsregister- Zustandsparameter in der Kopplungsgruppe mit diesen Werten;
- 4. Wiederholen des Ausleseschritts e23), bis keine weiteren Ausgangsregister-Zustandsparameter in der Kopplungsgruppe gn existieren und Löschen von Paaren von identischen Eingangsregister-Ausgangsleitungs- Indizes und identischen Ausgangsregister- Ausgangsleitungs-Indizes in der Kopplungsgruppe entweder an Zwischenstufen der Ersetzung oder nachdem sämtliche Ausgangsregister-Zustandsparameter ersetzt worden sind;
- 5. Wiederholen der Schritte e21)-e24) für sämtliche N XOR Gatter zum Bilden von N Kopplungsgruppen;
- 6. wobei jede Kopplungsgruppe gn für jedes XOR Gatter die Eingangsregister-Ausgangsleitungen und die Ausgangsregister-Ausgangsleitungen anzeigt, die mit dem Eingang des jeweiligen XOR Gatters verbunden werden sollen.
Gemäß der Erfindung wird in einem Speicher eine
zweidimensionale (Zeit-Raum) Matrixdarstellung gespeichert,
wie sich sämtliche Einträge eines seriellen Schieberegisters
für ein gegebenes CRC Polynom ändern.
In dieser Matrixdarstellung werden Anzeigen gespeichert, die
im wesentlichen die internen Zustände und die Änderungen von
internen Zuständen, die von dem gewählten Polynom angezeigt
werden, darstellen. Dies kann äquivalent zu der Änderung von
internen Zuständen (Werten, die in den Schieberegistern
gespeichert sind) einer entsprechenden seriellen CRC
Erzeugungsschaltung angesehen werden.
Eine spezielle Suchtechnik wird verwendet, um diese
Matrixdarstellung auszuwerten, um Übergänge von internen
Zuständen zu löschen, die für das gleiche Bit zweimal
auftreten. Das heißt, das Suchverfahren wertet die
Matrixdarstellung in solcher Weise aus, dass interne Zustände
oder Eingangsbits, die einem XOR Gatter in der parallelen
Schaltung gleichzeitig eingegeben würden, gelöscht werden, da
eine XOR Kombination von zwei identischen Zuständen
(Eingangsregister-Ausgangsleitung und Ausgangsregister-
Ausgangsleitung) nicht zu einer Änderung eines Ausgangssignals
des jeweiligen XOR Gatters führt. Auf Grundlage dieser
Erkenntnis werden Rückführungen von den Ausgangsregistern
und/oder Eingangsbits, die nicht zu einer Änderung in dem
Ausgangssignal führen, gelöscht. Da die Anzahl von
Rückführungen von den Ausgangsregistern und die Anzahl von
Eingängen von den Eingangsregistern verringert wird, wird die
Verarbeitungszeit herabgesetzt und der Hardwareaufwand, der
für die parallele CRC Schaltung erforderlich ist, wird
verkleinert.
Der Geschwindigkeitsgewinn ergibt sich insbesondere aus der
Tatsache, dass die XOR-Gatter mit weniger Eingängen auskommen
als diejenigen des Standes der Technik. XOR-Gatter mit nur
zwei Eingängen weisen z. B. eine bestimmte. Laufzeit auf, z. B.
T1. Benötigt man nun ein XOR-Gatter mit vier Eingängen, so
ist dieses typischerweise als zweistufige Kaskade von
insgesamt drei XOR-Gattern mit je zwei Eingängen aufgebaut.
Eine zweistufige Kaskade weist also die doppelte Laufzeit
auf, z. B. 2 . T1. Da gemäß der Erfindung die Anzahl von
Eingängen der XOR-Gatter reduziert wird, sinkt somit die
Laufzeit, da z. B. weniger Stufen in der Kaskade erforderlich
sind. Je kürzer aber die Laufzeit ist, um so höher kann die
Schaltung getaktet werden und um so schneller wird damit die
Verarbeitung. Erfindungsgemäß werden die XOR-Gatter höchstens
T + N Eingänge aufweisen, d. h. erfindungsgemäß lässt sich die
worst case Laufzeit angeben, die viel geringer als im Stand
der Technik ist.
Herkömmliche Design-Tools, die nur die internen Zustände jedes
seriellen Schieberegisters in einer seriellen CRC Schaltung
auswerten, können diese doppelte Eingabe von Werten in ein XOR
Gatter nicht erkennen, da sie die Zustände in jedem seriellen
Schieberegister lediglich einzeln auswerten. Deshalb stellt
die Erfindung einen wesentlichen Vorteil hinsichtlich der
Herabsetzung der Verarbeitungszeit und des Hardwareaufwands
bereit.
Das Verfahren zum Erzeugen einer parallelen CRC
Erzeugungsschaltung stellt automatisch eine parallele CRC
Schaltung für jeden gewünschten CRC Code (jedes vorgegebene
CRC Polynom) bereit.
Ferner erzeugt gemäß einer weiteren Ausführungsform der
Erfindung das Verfahren automatisch einen VHDL Code, der zur
Herstellung von ASICs oder FPGAs benötigt wird. Eine
Codeausgabe von dem Verfahren wird dann zum Laden des
jeweiligen FPGAs verwendet werden. Die ASICs und die FPGAs,
die so erhalten werden, weisen eine beträchtlich erhöhte
Verarbeitungsgeschwindigkeit und einen herabgesetzten
Hardwareaufwand auf.
Die Erfindung kann in jedem Kommunikations- oder
Übertragungssystem verwendet werden, bei dem ein CRC Code
übertragen wird, der bei einer hohen Geschwindigkeit erzeugt
werden muss.
Weitere vorteilhafte Ausführungsformen und Verbesserungen der
Erfindung sind in den abhängigen Ansprüchen angegeben.
Nachstehend wird die Erfindung unter Bezugnahme auf ihre
Ausführungsformen und Beispiele beschrieben, wie in den
beiliegenden Zeichnungen dargestellt. In den Zeichnungen
bezeichnen die gleichen oder ähnlichen Bezugszeichen die
gleichen oder ähnlichen Teile.
In den Zeichnungen zeigen:
Fig. 1a eine herkömmliche serielle CRC Erzeugungsschaltung
für ein allgemeines CRC Polynom;
Fig. 1b ein Beispiel einer herkömmlichen seriellen CRC
Erzeugungsschaltung zum Erzeugen eines gewählten CRC
Codes der Länge 13;
Fig. 1c die allgemeine Konfiguration einer parallelen CRC
Erzeugungsschaltung unter Verwendung einer
Kopplungseinrichtung CM gemäß dem Stand der Technik;
Fig. 2a die Anordnung einer Matrix CT mit N Spalten und T + 1
Zeilen und Matrixelemente ct, die von dem Verfahren
gemäß der Erfindung verwendet werden;
Fig. 2b die Matrix CT zum Ermitteln einer parallelen CRC
Schaltung mit herabgesetzter Redundanz für den Fall
des Polynoms, das für die serielle CRC
Erzeugungsschaltung in Fig. 1b verwendet wird;
Fig. 2c eine Tabelle, die darstellt, welcher Ausgang der
Eingangsregister I und welcher Ausgang der
Ausgangsregister C als Eingabe für jedes XOR-Gatter
verwendet werden (so dass die Tabelle der
Kopplungseinrichtung CM in Fig. 1c entspricht),
indem das Polynom der Fig. 2b verwendet wird, wobei
die Tabelle das Ergebnis von Fig. 2b ist;
Fig. 3 die parallele CRC Erzeugungsschaltung für das
Beispiel in Fig. 1b gemäß der Erfindung durch
Verwendung der Tabelle in Fig. 2c; und
Fig. 4 ein grundlegendes Flussdiagramm des Verfahrens gemäß
der Erfindung.
Die parallele CRC Erzeugungsschaltung gemäß der Erfindung
weist die allgemeine Konfiguration auf, die in Fig. 1c gezeigt
ist. Die parallele Erzeugungsschaltung erzeugt einen CRC Code
mit der Länge N, wie durch das jeweilige CRC Polynom gemäß der
oben angegebenen Gleichung (1a) definiert wird.
Das heißt, allgemein umfasst die parallele CRC
Erzeugungsschaltung gemäß der Erfindung eine
Eingangsregistereinrichtung I mit T Eingangsregistern I0, I1,
. . . It . . ., IT-1 zum gleichzeitigen Speichern der T-
Eingangsbits, wobei jedes Eingangsregister eine jeweilige
Ausgangsleitung I(0), I(1), . . . I(t) . . . I(T - 1) aufweist.
Eine Ausgangsregistereinrichtung C weist N Ausgangsregister
C0, C1, . . . Cn . . . CN-1 zum gleichzeitigen (parallelen)
Speichern des CRC Codes auf, wobei die Ausgangsregister C
jeweils eine Eingangsleitung C0(T), C1(T), . . . CN-1(T) und
eine Ausgangsleitung C0(0), C1(0), . . . Cn(0) . . . CN-1(0)
aufweisen.
Eine Anzahl N von XOR Gattern XOR0, XOR1, . . . XORn . . . XORN-1
sind vorgesehen, wobei jedes Gatter einen mit einer jeweiligen
Eingangsleitung der Ausgangsregister verbundenen Ausgang und
Eingangsleitungen, die mit einer vorgegebenen Anzahl der
Eingangsregister-Ausgangsleitungen und Ausgangsregister-
Ausgangsleitungen gekoppelt sind, aufweist.
Die Kopplungseinrichtung CM bestimmt, welche der
Ausgangsleitungen von den Eingangsregistern I und welche der
Ausgangsleitungen von den Ausgangsregistern C Eingänge an den
einzelnen XOR Gattern sind.
Das Verfahren der Erfindung umfasst die folgenden Schritte,
wie in Fig. 4 gezeigt. Im Schritt S1 wird auf Grundlage der
allgemeinen Gleichung (1a) für das CRC Polynom die Länge N des
gewünschten CRC Codes und der Typ des CRC Codes gewählt, indem
ein Wert für N gewählt wird und indem definiert wird, welche
der Koeffizienten an, n = 1, . . ., N - 1 0 oder 1 sind. Ferner
wird im Schritt S1 die Länge des Datenpakets T, d. h. die
Anzahl von parallel zu verarbeitenden Bits, bestimmt. Somit
ist die Anzahl von Eingangsregister-Ausgangsleitungen und die
Anzahl von Ausgangsregister-Ausgangsleitungen für die
Schaltung bestimmt worden.
Auf Grundlage der gewählten Werte N, T und an wird die Matrix
CT - wie in Fig. 2a gezeigt - in einem Speicher in einem
Schritt S2 gespeichert. Die Matrix CT weist N Spalten, die mit
C0, C1, . . . Cn . . . CN - 1 nummeriert sind, und T + 1 Zeilen, die
mit t0, t1, . . . t . . . T nummeriert sind, auf.
Zeilenelemente ct0,0, ct0,1, . . . ct0,n . . . ct0,N-1 in der
ersten Zeile t0 speichern die Nummer (d. h. einen
Anzeigeparameter) der Ausgangsregister-Ausgangsleitungen
C0(0), C1(0), . . . Cn(0) . . . CN-1(0).
Die Spaltenelemente ct für die Spalten Cn, für die an = 0 ist
(z. B. wenn a3 = 0 ist, dann sind die Spaltenelemente der
Spalte C3 gemeint), speichern einen Wert 0 (d. h. sie sind
"nicht-definiert" und nehmen des Zustand des nächst
niedrigeren Elements links in der Diagonalen in einem nächsten
Taktzyklus an, wenn die Matrix als die Zeit-Raum-Darstellung
von Zustandsänderungen, wie von dem CRC Polynom benötigt, z. B.
in einer seriellen CRC Erzeugungsschaltung, betrachtet wird)
und Spalten mit Nummern Cn, für die an = 1 ist (z. B. wenn a4 =
1 ist, dann sind die Spaltenelemente der Spalte C4 gemeint),
speichern das folgende Wertpaar gemäß der Gleichung (2):
ctT,n = iT-1 = (I(T - 1), CN-1(T - 1))
ctT-1,n = iT-2 = (I(T - 2), CN-1(T - 2))
.
.
.
ctt,n = it-1 = (I(t - 1), CN-1(t - 1))
.
.
.
ct1,n = i0 = (I(0), CN-1(0)) (2)
.
.
.
.
ctT-1,n = iT-2 = (I(T - 2), CN-1(T - 2))
.
.
.
ctt,n = it-1 = (I(t - 1), CN-1(t - 1))
.
.
.
ct1,n = i0 = (I(0), CN-1(0)) (2)
.
.
.
.
Der erste Wert in dem Paar bezeichnet eine Eingangsregister-
Ausgangsleitung, der zweite Wert in dem Paar bezeichnet einen
Ausgangsregister-Zustandsparameter und der Wert CN-1(0)
bezeichnet den Ausgang des Ausgangsregisters CN-1.
Es gibt drei mögliche Eingänge für jedes Element ctt,n:
- 1. das niedrigere linke Element ctt-1,n-1, welches durch einen diagonalen Pfeil angedeutet wird und in jedem Fall verwendet wird, wenn ein niedrigeres linkes Element existiert (somit immer, außer für die am weitesten links liegende Spalte und die untere Zeile);
- 2. ein existierender Ausgang Cn(0) des Ausgangsregisters, der nur in der unteren Zeile verwendet wird;
- 3. eine Rückführungsleitung (dies ist eine XOR-Kombination des Ausgangs I(t - 1) des Eingangsregisters It-1 und des Ausgangsregisters CN-1(t-1), die mit it-1 bezeichnet wird und verwendet wird, wenn der Koeffizient an = 1 in dem CRC Polynom ist und wenn die Rückführungsleitung it-1 existiert (somit nicht in der untersten Zeile).
Somit wird die Matrix aufgefüllt (siehe das Beispiel in Fig.
2b).
Im Schritt S31 wird ein XOR Gatter mit der Nummer n (0 ≦ n ≦ N - 1,
wie der Fig. 1c entnommen werden kann) gewählt, d. h., die
Matrix CT wird ausgewertet, um zu bestimmen, welche
Ausgangsregister-Ausgangsleitungen und Eingangsregister-
Ausgangsleitungen dem XOR Gatter XORn eingegeben werden
sollen.
Im Schritt S32 wird das Element ctT,n (dies ist das Element in
der oberen Zeile T und der Spalte n) der Matrix CT gewählt.
Dann wird die Kopplungsgruppe gn gebildet, indem die diagonale
Richtung nach links unten bis zu der niedrigsten Zeile oder
der am weitesten links liegenden Spalte verfolgt wird und
indem sämtliche Elemente auf dieser Linie (d. h.
iT-1, it . . . Cn(0)) gesammelt werden. Sämtliche it werden
durch I(t) XOR CN-1(t) ersetzt, so dass CN-1(t) das gleiche
wie ctt,N-1 ist.
Dann wird im Schritt S33 untersucht, ob die Kopplungsgruppe gn
nur Anzeigen für Eingangsregister-Ausgangsleitungen I(t) und
Ausgangsregister-Ausgangsleitungen oder "anfängliche Zustände"
Cn(0) (d. h. an diesem Punkt ist klar, wie die Eingänge des XOR
Gatters XORn gebildet werden) oder auch Ausgangsregister-
Zustandsparameter ctt,n (d. h. Zustände, die in einer seriellen
CRC Erzeugungsschaltung auftreten würden, aber bei einem
anderen Taktzyklus, nämlich nicht bei dem Taktzyklus 0)
enthält. Wenn im Schritt S33 festgestellt wird, dass die
Kopplungskuppe gn Ausgangsregister-Zustandsparameter ctt,n mit
t ≠ 0 umfassen, dann müssen diese ersetzt werden, weil sie in
der Kopplungsgruppe weder eine Eingangsregister-
Ausgangsleitung noch eine Ausgangsregister-Ausgangsleitung
darstellen. Diese Ersetzung wird im Schritt S34 ausgeführt.
Im Schritt S34 werden Elemente ctt,n mit t ≠ 0 (n ist hier
immer N - 1) entsprechend der gefundenen Ausgangsregister-
Zustandsparameter und sämtliche Elemente, die in einer
diagonalen Richtung davon für abnehmende Zeilen- und
Spaltennummern angeordnet sind, gelesen und die
Ausgangsregister-Zustandsparameter in der Kopplungsgruppe
werden mit diesen Werten ersetzt. In diesem Zusammenhang
bedeutet "entsprechend", dass dann, wenn z. B. das Element den
Ausgangsregister-Zustandsparameter CN-1(T - 1) enthält, das
Element an der Spaltenposition N - 1 und an der Zeilenposition
T - 1 und sämtliche Elemente auf der Diagonalen nach links unten
davon gelesen werden und als eine neue Reihe von Wertpaaren
den jeweiligen Ausgangsleitungs-Zustandsparameter in der
Kopplungsgruppe gn ersetzen.
Dann wird der Ersetzungsschritt S34 und der
Überprüfungsschritt S33 wiederholt, bis keine weitere
Ausgangsregister-Zustandsparameter in der Kopplungsgruppe gn
vorhanden sind. Dann enthält die Kopplungsgruppe nur Anzeigen
von Eingangsregister-Ausgangsleitungen I(t) und
Ausgangsregister-Ausgangsleitungen Cn(0).
In einem Schritt S35 werden Paare von Eingangsregister-
Ausgangsleitungs-Nummern und identische Ausgangsregister-
Ausgangsleitungs-Nummern in der Kopplungsgruppe gn gestrichen.
Dieser Schritt kann auch an Zwischenstufen der Ersetzung
ausgeführt werden, da identische Werte bereits in der
Kopplungsgruppe an Zwischenstufen enthalten sein können.
Die Schritte S31-S35 werden für sämtliche N XOR Gatter
wiederholt, um N Kopplungsgruppen gn zu bilden. Im Schritt S36
können die Kopplungsgruppen gn auf einem Schirm angezeigt
werden oder von einer automatischen Entwurfs- und
Herstellungseinrichtung als ein tatsächlicher VHDL Code für
ACISs und FPGAs (ASIC: Application Specific Integrated Circuit
oder Anwendungsspezifische Integrierte Schaltung; FPGA: Field
Programmable Gate Array oder Feldprogrammierbares Gate Array)
verwendet werden.
Somit zeigt jede ermittelte Kopplungsgruppe gn für jedes XOR
aufgrund der Ersetzungs- und Löschschritte im Zusammenhang mit
der spezifisch gesetzten Matrix in dem Speicher die
Eingangsregister-Ausgangsleitungen und die Ausgangsregister-
Ausgangsleitungen an, die mit dem Eingang des jeweiligen XOR
Gatters verbunden werden sollen.
Wie sich der Fig. 2a entnehmen lässt, ist grundlegend die
Matrix CT eine tatsächliche Darstellung, wie sich die Einträge
in Schieberegistern einer seriellen CRC Erzeugungsschaltung
(die seriell das gewählte CRC Polynom realisiert) von
Taktzyklus zu Taktzyklus ändern würden. Gemäß der Erfindung
ermöglicht diese Art von (Zeit-Raum) Darstellung der
sequentiellen Zustandsänderungen, wenn sie von dem Verfahren
der Erfindung ausgewertet werden, eine Erfassung sämtliche
Redundanzen, wobei das gleiche Bit - wenn es von dem Ausgang
zurückgekoppelt wird - dem gleichen XOR Gatter wieder
eingegeben würde. Die Auswertung der Matrix ct in Fig. 2a
ermöglicht somit die Erfassung sämtlicher Redundanzen, die in
der parallelen CRC Schaltung vermieden werden sollten.
Demzufolge weist eine Schaltung, die auf Grundlage der so
ermittelten Kopplungsgruppen gn realisiert wird, eine erhöhte
Verarbeitungsgeschwindigkeit auf und benötigt nur einen
minimalen Hardwareaufwand.
Das unter Bezugnahme auf Fig. 4 beschriebene Verfahren ist
allgemein und keine Redundanz kann verpasst werden. Das
Verfahren ist allgemein dahingehend, dass es einen Entwurf der
verbesserten parallelen CRC Erzeugungsschaltung für
irgendwelche gewählten Werte von N, an und T erlaubt.
Das voranstehend beschriebene Verfahren kann zusammen mit
einem Design-Tool verwendet werden, das den VHDL Code zur
Herstellung einer ASIC oder zum Programmieren einer FPGA-
Einrichtung ausgibt. Das heißt, ein Design-Tool zum
automatischen Generieren der CRC Schaltung kann die optimale
CRC Schaltung lediglich auf Grundlage der Eingangsparameter N,
an und T, die von dem Benutzer eingegeben werden, und den
ermittelten Kopplungsgruppen erzeugen und stellt automatisch
die echte Einrichtung her, beispielsweise durch Ausgeben des
VHDL Codes, der die Verbindungen sämtlicher Eingangs- und
Ausgangsleitungen in der parallelen CRC Schaltung reflektiert.
Um das Verfahren der Erfindung zu illustrieren, wird
nachstehend die Generierung einer parallelen CRC
Erzeugungsschaltung ohne einer Redundanz entsprechend der
seriellen CRC Erzeugungsschaltung und dem Polynom in Fig. 1b
nachstehend beschrieben.
Fig. 2b zeigt die Kopplungsmatrix CT für den in Fig. 1b
dargestellten Fall. Fig. 3 zeigt die entsprechende parallele
CRC Erzeugungsschaltung, nachdem das Verfahren der Erfindung
auf die in Fig. 2b gezeigte Matrix CT angewendet wurde.
Für das Polynom CRCN, sowie es mit der Gleichung (1a)
definiert ist, wurde ein Wert von N = 13 und a13 = a12 = a7 =
a6 = a5 = a4 = a2 = a0 = 1 gewählt. Die Anzahl von Bits T, die
parallel verarbeitet werden sollen, ist zu T = 8 gewählt
worden. Wie in Fig. 3 angedeutet, führt eine derartige Auswahl
zu der Anordnung einer Eingangsregistereinrichtung I mit 8
Eingangsregistern I0-I7 zum gleichzeitigen Speichern eines
Datenpakets von T = 8 Eingangsbits. Die Ausgangsleitungen der
Eingangsregister I0-I7 sind mit I(0)-I(7) dargestellt, wie
Fig. 3 zeigt. Dementsprechend weist die Matrix CT in Fig. 2b
T + 1 = 9 Zeilen auf, die mit t0-t8 bezeichnet sind.
Da N = 13 ist, weist die Ausgangsregistereinrichtung C13
Ausgangsregister C0-C12 zum gleichzeitigen Speichern des CRC13
Codes auf. Die Ausgangsregister weisen jeweilige
Eingangsleitungen C0(8)-C12(8) und jeweilige Ausgangsleitungen
C0(0)-C12(0) auf. Somit umfasst die Matrix CT in Fig. 2b 13
Spalten, die mit C0-C12 bezeichnet sind.
N = 13 XOR Gatter XOR0-XOR12 sind angeordnet, wobei jedes Gatter
einen mit einer jeweiligen Eingangsleitung des
Ausgangsregisters verbundenen Ausgang und eine Anzahl von
Eingangsleitungen aufweist, die mit einer vorgegebenen Anzahl
der Eingangsregister-Ausgangsleitungen und Ausgangsregister-
Ausgangsleitungen gekoppelt sind.
Die Zeilenelemente in der unteren Zeile t0 der Matrix CT
speichern jeweils einen Anzeigeparameter der jeweiligen
Ausgangsregister-Ausgangsleitungen C0(0)-C12(0).
Da für den gewählten CRC13 Code a1 = a3 = a8 = a9 = a10 = a11
= 0 ist, enthalten die Spaltenelemente in den Spalten C1, C3,
C8, C9, C10, C11 nur den Diagonaleintrag als Parameter.
Andererseits enthalten die Spalten C0, C2, C4, C5, C6, C7, C12
jeweils ein Wertpaar, da für diese Spalten an = 1 ist. In Fig.
2b wird die Abkürzung i0-i7 verwendet, jedoch speichert
tatsächlich jedes dieser Spaltenelemente einen Wert wie mit
der Tabelle auf der rechten Seite der Matrix wie in Fig. 2b
dargestellt. Das "x" in dieser Tabelle zeigt an, dass diese
zwei Werte zusammen in eine Kopplungsgruppe gehören (wenn man
die entsprechende serielle Konfiguration in Fig. 1b
betrachtet, entsprechen tatsächlich die Wertpaare i0-i7 der
XOR Kombination eines jeweils seriell eingegebenen Bits von
dem jeweiligen Eingangsregister I0-I7 und dem Ausgang von dem
letzten seriellen Schieberegister C12 bei unterschiedlichen
Taktzyklen 0-7). Die Ausgangsregister-Zustandsparameter, die
definiert sind, sind die Werte C12(7), C12(6), C12(5), C12(4),
C12(3), C12(2) und C12(1), wohingegen C12(0) eine echte
Ausgangsregister-Leitungsnummer des Ausgangsregisters C12
anzeigt.
Sämtliche Spalten n = 0, n = 2, n = 4, n = 5, n = 6, n = 7, n
= 12 (d. h. C0, C2, C4, C5, C6, C7, C12) enthalten die gleichen
Elemente und als ein Beispiel sind die Elemente der ersten
Spalte (Spalten-Nummer C0) nachstehend angegeben:
ct8,0 = i7 = (I(7), C12(7))
ct7,0 = i6 = (I(6), C12(6))
ct6,0 = i5 = (I(5) C12(5))
ct5,0 = i4 = (I(4), C12(4))
ct4,0 = i3 = (I(3), C12(3))
ct3,0 = i2 = (I(2), C12(2))
ct2,0 = i1 = (I(1), C12(1))
ct1,0 = i0 = (I(0), C12(0))
ct0,0 = C0(0)
ct7,0 = i6 = (I(6), C12(6))
ct6,0 = i5 = (I(5) C12(5))
ct5,0 = i4 = (I(4), C12(4))
ct4,0 = i3 = (I(3), C12(3))
ct3,0 = i2 = (I(2), C12(2))
ct2,0 = i1 = (I(1), C12(1))
ct1,0 = i0 = (I(0), C12(0))
ct0,0 = C0(0)
Die anderen Spalten, die definierte Werte für an = 1
enthalten, enthalten die gleichen Werte. In der verwendeten
Notation bezeichnet der erste Wert in dem Paar eine
Eingangsregister-Ausgangsleitung, der zweite Wert in dem Paar
bezeichnet einen Ausgangsregister-Zustandsparameter und der
Wert C12(0) bezeichnet die Ausgangsregister-Ausgangsleitung
des Ausgangsregisters C12, wie in Fig. 3 gezeigt. C12(0) kann
auch als der Ausgangsregister-Zustandsparameter des
Ausgangsregisters C12 in dem anfänglichen Zustand betrachtet
werden.
Wenn die Matrix CT wie in Fig. 2b angeordnet ist, bezeichnen
für Illustrationszwecke die Pfeile, wie sich die Zustände in
einer seriellen CRC Erzeugungsschaltung bei jedem Taktzyklus
ändern würden. Deshalb ist die Matrix CT in Fig. 2b, wie
vorher erwähnt, eine tatsächliche Zeit-Raum-Darstellung der
Zustandsänderung in der seriellen CRC Erzeugungsschaltung auf
Grundlage des gewählten Polynoms, außer dass in Fig. 3 (und in
Fig. 2a) die Darstellung gleichzeitig für sämtliche
Zustandsänderungen durchgeführt ist und die sequentielle
Verschiebung der Bits von Schieberegister zu Schieberegister
einschließlich der jeweiligen XOR Verbindungen, wie in Fig. 1b
gezeigt, darstellt. Es sei darauf hingewiesen, dass die
Kopplungsmatrix in Fig. 2b vollständig mit den jeweiligen
Elementen gesetzt werden kann, sobald die Werte N, T und an
gewählt worden sind.
Nachstehend wird ein Beispiel diskutiert, wie die
abschließende Kopplungsgruppe g4 für das Ausgangsregister C4
unter Verwendung des Verfahrens der Erfindung in einer Matrix,
so wie sie in Fig. 2b gesetzt ist, gebildet wird.
Das XOR Gatter mit der Nummer n = 4, d. h. das Element ctt8,c4
oder dass das Element an dem Überschneidungspunkt der
Zeilennummer t8 und der Spaltennummer C4, wird gewählt. Somit
wird das Element
ct8,4 = i7 = (I(7), C12(7))
ausgelesen. Dann werden sämtliche Elemente auf der Diagonalen
zu der unteren linken Seite von dem Element ct8,4, die
definiert worden sind, ausgelesen und in die Kopplungsgruppe
g4 eingegeben. In diesem Fall werden die Elemente i5, i3,
ausgelesen. Die Kopplungsgruppe, die so gebildet wird,
enthält:
g4 = i7; i5; i3
= I(7), C12(7); I(5), C12(5); I(3), C12(3). (3.1)
Soweit enthält die Kopplungsgruppe g4 Anzeigen der
Ausgangsleitungen I(7), I(5), I(3) der Eingangsregister I7,
I5, I3. Jedoch enthält sie nicht Anzeigen über die
Ausgangsleitungen von den Ausgangsregistern, d. h. sie enthält
nur Ausgangsregister-Zustandsparameter C12(7), C12(5), C12(3)
(in Fettdruck angezeigt). Deshalb müssen diese
Ausgangsregister-Zustandsparameter für eine weitere Zerlegung
oder Ersetzung verwendet werden.
Das Element ct7,12, das dem Ausgangsregister-Zustandsparameter
C12(7) entspricht, wird als das nächste Startelement verwendet
und das Auslesen der (definierten) Elemente auf der Diagonalen
davon wird ausgeführt. Der Ausgangsregister-Zustandsparameter
C12(7) wird dann durch die Elemente dieser ausgelesenen
Diagonalen ersetzt. Die gleiche Prozedur wird unter Verwendung
der Elemente ct5,12 zur Ersetzung des Ausgangsregister-
Zustandsparameters C12(5) und des Elements ct3,12 zum Ersetzen
des Ausgangsregister-Zustandsparameters C12(3) wiederholt.
Somit enthält die Kopplungsgruppe g4 nun:
g4 = I(7), C12(7) = I(7), i6; i1; i0; C5(0); I(5), C12(5) = I(5), i4; C7(0); I(3), C12(3) = I(3), i2; C9(0). (3.2)
g4 = I(7), C12(7) = I(7), i6; i1; i0; C5(0); I(5), C12(5) = I(5), i4; C7(0); I(3), C12(3) = I(3), i2; C9(0). (3.2)
Die i's wurden nur zur Abkürzung verwendet, so dass die
vollständige Kopplungsgruppe folgendermaßen definiert ist:
g4 = I(7); I(6), C12(6); I(1), C12(1); I(0), C12(0);
C5(0));
I(5); I(4), C12(4); C7(0);
I(3); I(2), C12(2); C9(0). (3.3)
Nun enthält die Kopplungsgruppe g4 einige Eingangsregister-
Ausgangsleitungen, Ausgangsregister-Zustandsparameter (in
Fettdruck) und zum ersten Mal Ausgangsregister-
Ausgangsleitungen C5(0), C7(0), C9(0), die von der unteren
Zeile der Matrix CT gelesen worden sind. Wiederum wird die
Prozedur einer Ersetzung der Ausgangsregister-
Zustandsparameter durch jeweilige Elemente in der 13-ten
Spalte (und durch die Diagonalelemente in der linken unteren
Diagonalen) wiederholt, bis sämtliche Ausgangsregister-
Zustandsparameter ersetzt worden sind, d. h. bis die
Kopplungsgruppe g4 nur Anzeigen über die Eingangsregister-
Ausgangsleitungen und die Ausgangsregister-Ausgangsleitungen
enthält, wie folgt:
g4 = I(7); I(6); i5, i0, C6(0); I(1), i0, C11(0); I(0),
C12(0); C5(0);
I(5), I(4), i3, C8(0); C7(0);
I(3), I(2), i1, C10(0); C9(0). (3.4)
g4 = I(7), I(6), I(5), C12(5), I(0), C12(0), C6(0); I(1),
I(0), C12(0), C11(0); I(0), C12(0); C5(0);
I(5), I(4), I(3), C12(3), C8(0); C7(0);
I(3), I(2), I(1), C12(1), C10(0); C9(0). (3.5)
Weitere Ersetzungen führen zu:
g4 = I(7), I(6), I(5), I(4), I(3), I(2), I(1), I(0),
C12(0), C11(0), C10(0), C9(0), C8(0), C7(0), I(0),
C12(0), C6(0); I(1), I(0); C12(0), C11(0); I(0),
C12(0); C5(0));
I(5), I(4), I(3), I(2), I(1), I(0), C12(0), C11(0),
C10(0), C9(0), C8(0); C7(0);
I(3), I(2), I(1), I(0), C12(0), C11(0), C10(0);
C9(0). (3.6)
Da nun die Kopplungsgruppe nur Ausgangsregister-
Ausgangsleitungen und Eingangsregister-Ausgangsleitungen
enthält, kann der wesentliche Schritt der Erfindung ausgeführt
werden, nämlich die Löschung oder Beseitigung von identischen
Eingangsregister-Ausgangsleitungen und identischen
Ausgangsregister-Ausgangsleitungen. Deshalb werden die
Elemente
I(5), I(4), I(3), I(2), I(1), I(0), C12(0), C11(0),
C10(0), C9(0), C8(0), C7(0), I(0), C12(0), I(1), I(0),
C12(0), C11(0); I(0), C12(0); I(5), I(4), I(3), I(2),
I(1), I(0), C12(0), C11(0), C10(0), C9(0), C8(0); C7(0);
I(1), I(0), C12(0), C11(0). (3.7)
gelöscht, was die abschließende Kopplungsgruppe g4 mit
keinerlei Redundanz wie folgt ergibt:
g4 = I(7), I(6), C6(0); C5(0); I(3), I(2),
C10(0); C9(0) (3.8)
Somit enthält die abschließend erhaltene Kopplungsgruppe g4
keinerlei Redundanzen und zeigt die Anzahl von
Eingangsregister-Ausgangsleitungen und Ausgangsregister-
Ausgangsleitungen an, die dem gewählten XOR Gatter mit der
Nummer 4 eingegeben werden müssen.
Natürlich sei darauf hingewiesen, dass es nicht absolut
erforderlich ist, die Gruppierungen immer aufzusplitten, bis
sie nur Ausgangsleitungen der Eingangs- und Ausgangsregister
enthalten, bevor der Löschvorgang ausgeführt wird.
Beispielsweise hätte in Gleichung (3.4) bereits erkannt werden
können, daß i0 zweimal in der Kopplungsgruppe enthalten ist.
Deshalb hätte es hier bereits gelöscht werden können, da
selbst wenn dieses Element später nochmals auftritt, es in der
Kopplungsgruppe gelassen werden oder erneut verwendet werden
kann. Deshalb könnte der Algorithmus auch an Zwischenstufen
die Kopplungsgruppe durchscannen und Löschungen ausführen.
Beispielsweise führt eine dreimalige Ersetzung des Elements i7
der Gleichung (3.1) bereits zu:
i7 = I(7), C12(7) → I(7), i6, i1, i0, C5(0) → I(7), I(6),
C12(6), i1, i0, C5(0) → I(7), I(6), i5, i0, C6(0), i1, i0,
C5(0), (3.9)
wobei 15 bereits ein weiteres Mal auftritt, so dass es mit dem
15 in Gleichung (3.1) als das zweite Element gelöscht werden
kann. Ferner enthält die Zerlegung in der Gleichung (3.9)
bereits selbst i0 zweimal, so dass auch dieses i0 hier
gelöscht werden kann. Das Ergebnis, entweder
Zwischenlöschungen auszuführen oder die Löschung nur am Ende
auszuführen, unterscheidet sich in der Verarbeitungszeit zum
Ermitteln des abschließenden Ergebnisses, da natürlich Werte,
die früher in der Prozedur gelöscht werden, nicht wieder
zerlegt werden müssen. Jedoch zeigt das obige Beispiel, dass
der Schritt S35 in Fig. 4 nicht notwendigerweise an dem Ende
sämtlicher Zerlegungen ausgeführt werden muss, sondern auch
mehrere Male an Zwischenstufen der Zerlegungsprozedur
ausgeführt werden kann.
Die gleiche Prozedur wird für sämtliche übrigen 12 XOR Gatter
wiederholt und eine jeweilige Kopplungsgruppe gn mit keiner
Redundanz wird gebildet. Fig. 2c zeigt den Überblick über die
jeweiligen Kopplungsgruppen g0 . . . g12, die dann zum Verbinden
der Ausgangsleitungen und Eingangsleitungen mit dem jeweiligen
XOR verwendet werden.
Fig. 3 zeigt die abschließende Schaltung für die gewählten
werte von T = 8, N = 13 und den jeweiligen Werten an. Das
überraschende Ergebnis der Verwendung der Matrix in Fig. 2b
ist, dass erkannt werden kann, dass einige Werte einander
kompensieren und, dass die XOR Ausgänge jeweils nur als eine
Funktion der Eingangsregister-Ausgangsleitungen und der
jeweiligen Ausgangsregister-Ausgangsleitungen berechnet
werden können.
Nur die Verwendung der Gruppierung der Elemente durch Auslesen
der jeweiligen Elemente ct gemäß dem Verfahren der Erfindung
ermöglicht die Löschung der Abhängigkeiten (Redundanzen) der
Rückführung von Ausgangsleitungen und Eingangsleitungen. Das
Verfahren kann vollständig automatisiert werden und ein
jeweiliger Code kann durch eine jeweilige
Verarbeitungseinrichtung ausgegeben werden, um ein FPGA zu
laden oder ein ASIC zu entwickeln. Das Verfahren ist allgemein
und nur die Werte T, N und die an müssen gewählt werden.
Es sei darauf hingewiesen, dass natürlich die Zeilen und
Spalten ohne irgendeinen Verlust der Allgemeingültigkeit
ausgetauscht werden können.
Die parallele CRC Berechnungsschaltung, die gemäß dem
Verfahren der Erfindung entworfen ist, kann in irgendeinem
Sender oder Empfänger eines Übertragungssystems verwendet
werden, bei dem die Berechnung und Übertragung eines CRC Codes
ausgeführt wird, um Fehler der Benutzerdaten zu überprüfen.
Claims (2)
1. Verfahren zum Generieren einer parallelen CRC
Erzeugungsschaltung zum parallelen Erzeugen eines CRC
Codes der Länge N, der als ein CRC Polynom (CRC)
CRC = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
definiert ist, wobei aN = a0 = 1 ist und die Koeffizienten an gleich 0 oder 1 sind, in Abhängigkeit von dem zu bildenden CRC Code, parallel für eine Anzahl T von Eingangsbits eines Datenstroms, umfassend die folgenden Schritte:
CRC = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
definiert ist, wobei aN = a0 = 1 ist und die Koeffizienten an gleich 0 oder 1 sind, in Abhängigkeit von dem zu bildenden CRC Code, parallel für eine Anzahl T von Eingangsbits eines Datenstroms, umfassend die folgenden Schritte:
- a) Bereitstellen einer Eingangsregistereinrichtung (I) mit T Eingangsregistern I0, I1, . . . It . . ., IT-1 zum gleichzeitigen Speichern der T Eingangsbits, wobei jedes Eingangsregister eine Ausgangsleitung I(0), I(1), . . . I(t) . . ., I(T - 1) aufweist;
- b) Bereitstellen einer Ausgangsregistereinrichtung (C) mit N Ausgangsregistern C0, C1, . . . Cn . . ., CN-1 zum gleichzeitigen Speichern des CRC Codes, wobei jedes Ausgangsregister jeweils eine Eingangsleitung C0(T), C1(T), . . . Cn(T) . . . CN-1(T) und eine Ausgangsleitung C0(0), C1(0), . . . Cn(0) . . . CN-1(0) aufweist; und
- c) Bereitstellen einer Anzahl N von XOR Gattern XOR0, XOR1, . . . XORn . . . XORN-1, die jeweils einen mit einer jeweiligen Eingangsleitung der Ausgangsregister verbundenen Ausgang und Eingangsleitungen aufweisen, die mit Eingangsregister-Ausgangsleitungen und Ausgangsregister-Ausgangsleitungen gekoppelt sind;
- a) die Kopplung der Eingangsregister-Ausgangsleitungen und der Ausgangsregister-Ausgangsleitungen mit den Eingangsleitungen der XOR Gatter durch die folgenden Schritte erhalten wird:
- b) Speichern einer Matrix CT mit N Spalten und T + 1
Zeilen in einem Speicher:
wobei die Zeilenelemente ct0,0, ct0,1, . . . ct0,n . . . ct0,N-1 in der Zeile 0 jeweils den Index der Ausgangsregister-Ausgangsleitungen C0(0), C1(0), . . . Cn(0) . . . CN-1(0) speichern; und
wobei die Spaltenelemente (ct1,n . . . ctt,n . . . ctT,n) für die Spaltennummern n, für die an = 0 ist, einen beliebigen nicht-Lese-Wert speichern, der anzeigt, daß dieser Wert zum Bilden von Kopplungsgruppen nicht berücksichtigt werden soll, und Spaltennummern n, für die an = 1 ist, das folgende Wertpaar speichern:
ctT,n = iT-1 = (I(T - 1), CN-1(T - 1))
ctT-1,n = iT-2 = (I(T - 2), CN-1(T - 2))
.
.
.
ctt,n = it-1 = (I(t - 1), CN-1(t - 1))
.
.
.
ct1,n = i0 = (I(0), CN-1(0))
wobei der erste Wert in dem Paar eine Eingangsregister-Ausgangsleitung bezeichnet, der zweite Wert in dem Paar einen Ausgangsregister- Zustandsparameter bezeichnet und der Wert CN-1(0) die Ausgangsleitung der Ausgangsregister- Ausgangsleitung CN-1 bezeichnet; - c) Bestimmen des Index der Eingangsregister-
Ausgangsleitungen und des Index der
Ausgangsregister-Ausgangsleitungen für jedes der N
XOR Gatter XOR0, XOR1, . . . XORn, . . . XORN-1 wie
folgt:
- 1. Wählen eines XOR Gatters mit der Nummer n [0, N - 1];
- 2. Lesen des Elementpaars ctT,n aus der Matrix CT und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen- und Spaltennummern angeordnet sind, und Gruppieren von diesen in eine Kopplungsgruppe gn;
- 3. wenn die Kopplungsgruppe gn Ausgangsregister- Zustandsparameter CN-1(t) mit t ≠ 0, umfaßt, Lesen von Elementpaaren ctt,N-1 mit t ≠ 0 entsprechend zu den Ausgangsregister- Zustandsparametern und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen und Spaltennummern angeordnet sind, und Ersetzen der Ausgangsregister- Zustandsparameter in der Kopplungsgruppe mit diesen Werten;
- 4. Wiederholen des Ausleseschritts e23), bis keine weiteren Ausgangsregister-Zustandsparameter in der Kopplungsgruppe gn existieren und Löschen von Paaren von identischen Eingangsregister- Ausgangsleitungs-Indizes und identischen Ausgangsregister-Ausgangsleitungs-Indizes in der Kopplungsgruppe entweder an Zwischenstufen der Ersetzung oder nachdem sämtliche Ausgangsregister-Zustandsparameter ersetzt worden sind;
- 5. Wiederholen der Schritte e21)-e24) für sämtliche N XOR Gatter zum Bilden von N Kopplungsgruppen;
- 6. wobei jede Kopplungsgruppe gn für jedes XOR Gatter die Eingangsregister-Ausgangsleitungen und die Ausgangsregister-Ausgangsleitungen anzeigt, die mit dem Eingang des jeweiligen XOR Gatters verbunden werden sollen; und
- 7. Verbinden der Eingangsregister- Ausgangsleitungen und der Ausgangsregister- Ausgangsleitungen mit dem Eingang des jeweiligen XOR-Gatters gemäß der jeweiligen Kopplungsgruppen.
2. Parallele CRC Erzeugungsschaltung zum parallelen
Generieren eines CRC Codes der Länge N, der als ein CRC
Polynom(CRC)
CRC = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
definiert ist, wobei aN = a0 = 1 ist und die Koeffizienten an 0 oder 1 sind, in Abhängigkeit von dem zu bildenden CRC Code, parallel für eine Anzahl T von Eingangsbits eines Datenstromes, umfassend:
CRC = aNxN + aN-1xN-1 + . . . anxn + . . . a1x1 + a0x0 (1a)
definiert ist, wobei aN = a0 = 1 ist und die Koeffizienten an 0 oder 1 sind, in Abhängigkeit von dem zu bildenden CRC Code, parallel für eine Anzahl T von Eingangsbits eines Datenstromes, umfassend:
- a) eine Eingangsregistereinrichtung (I) mit T Eingangsregistern I0, I1, . . . It . . ., IT-1 zum gleichzeitigen Speichern der T Eingangsbits, wobei jedes Eingangsregister eine Ausgangsleitung I(0), I(1), . . . I(t) . . ., I(T - 1) aufweist.
- b) eine Ausgangsregistereinrichtung (C) mit N Ausgangsregistern C0, C1, . . . Cn . . ., CN-1 zum gleichzeitigen Speichern des CRC Codes, wobei jedes Ausgangsregister jeweils eine Eingangsleitung C0(T), C1(T), . . . Cn(T) . . . CN-1(T) und eine Ausgangsleitung C0(0), C1(0), . . . Cn(0) . . . CN-1(0) aufweist; und
- c) eine Anzahl N von XOR Gattern XOR0, XOR1, XORn . . . XORN-1 vorgesehen sind, die jeweils einen mit einer jeweiligen Eingangsleitung der Ausgangsregister verbundenen Ausgang und Eingangsleitungen aufweisen, die Eingangsregister- Ausgangsleitungen und Ausgangsregister- Ausgangsleitungen gekoppelt sind;
- a) die Kopplung der Eingangsregister-Ausgangsleitungen und der Ausgangsregister-Ausgangsleitungen mit den Eingangsleitungen der XOR Gatter durch die folgenden Schritte definiert wird:
- b) Speichern einer Matrix CT mit N Spalten und T + 1
Zeilen in einem Speicher:
wobei die Zeilenelemente ct0,0, ct0,1, . . . ct0,n . . . ct0,N-1 in der Zeile 0 jeweils den Index der Ausgangsregister-Ausgangsleitungen C0(0), C1(0), . . . Cn(0) . . . CN-1(0) speichern; und
wobei die Spaltenelemente (ct1,n . . . ctt,n . . . ctT,n) für die Spaltennummern n, für die an = 0 ist, einen beliebigen nicht-Lese-Wert speichern, der anzeigt, daß dieser Wert zum Bilden von Kopplungsgruppen nicht berücksichtigt werden soll, und für die Spaltennummern n, für die an = 1 ist, das folgende Wertpaar speichern:
ctT,n = iT-1 = (I(T - 1), CN-1(T - 1))
ctT-1,n = iT-2 = (I(T - 2), CN-1(T - 2))
.
.
.
ctt,n = it-1 = (I(t - 1), CN-1(t - 1))
.
.
.
ct1,n = i0 = (I(0), CN-1(0))
wobei der erste Wert in dem Paar eine Eingangsregister-Ausgangsleitung bezeichnet, der zweite Wert in dem Paar einen Ausgangsregister- Zustandsparameter bezeichnet und der Wert CN-1(0) die Ausgangsleitung der Ausgangsregister- Ausgangsleitung CN-1 bezeichnet; - c) Bestimmen des Index der Eingangsregister-
Ausgangsleitungen und des Index der
Ausgangsregister-Ausgangsleitungen für jedes der N
XOR Gatter XOR0, XOR1, . . . XORn, . . . XORN-1 wie
folgt:
- 1. Wählen eines XOR Gatters mit der Nummer n [0, N - 1];
- 2. Lesen des Elementpaars ctT,n aus der Matrix CT und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen- und Spaltennummern angeordnet sind, und Gruppieren von diesen in eine Kopplungsgruppe gn;
- 3. wenn die Kopplungsgruppe gn Ausgangsregister- Zustandsparameter CN-1(t) mit t ≠ 0, umfaßt, Lesen von Elementpaaren ctt,N-1 mit t ≠ 0 entsprechend zu den Ausgangsregister- Zustandsparametern und sämtlicher Elementpaare, die in einer Diagonalrichtung davon für abnehmende Zeilen und Spaltennummern angeordnet sind, und Ersetzen der Ausgangsregister- Zustandsparameter in der Kopplungsgruppe mit diesen Werten;
- 4. Wiederholen des Ausleseschritts e23), bis keine weiteren Ausgangsregister-Zustandsparameter in der Kopplungsgruppe gn existieren und Löschen von Paaren von identischen Eingangsregister- Ausgangsleitungs-Indizes und identischen Ausgangsregister-Ausgangsleitungs-Indizes in der Kopplungsgruppe entweder an Zwischenstufen der Ersetzung oder nachdem sämtliche Ausgangsregister-Zustandsparameter ersetzt worden sind;
- 5. Wiederholen der Schritte e21)-e24) für sämtliche N XOR Gatter zum Bilden von N Kopplungsgruppen;
- 6. wobei jede Kopplungsgruppe gn für jedes XOR Gatter die Eingangsregister-Ausgangsleitungen und die Ausgangsregister-Ausgangsleitungen anzeigt, die mit dem Eingang des jeweiligen XOR Gatters verbunden werden sollen.
Priority Applications (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19838865A DE19838865C2 (de) | 1998-08-26 | 1998-08-26 | Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung |
TW088113737A TW448353B (en) | 1998-08-26 | 1999-08-11 | Parallel CRC generation circuit for generating a CRC code |
PCT/EP1999/006207 WO2000013322A1 (en) | 1998-08-26 | 1999-08-24 | Parallel crc generation circuit for generating a crc code |
CNB998126535A CN1171389C (zh) | 1998-08-26 | 1999-08-24 | 用于生成循环冗余校验代码的并行循环冗余校验生成电路 |
KR1020017002438A KR20010072989A (ko) | 1998-08-26 | 1999-08-24 | 순환 중복 검사 코드를 생성하는 병렬 순환 중복 검사생성 회로 |
JP2000568189A JP2002524904A (ja) | 1998-08-26 | 1999-08-24 | Crcコードを生成するための並列crc生成回路 |
CA002341504A CA2341504A1 (en) | 1998-08-26 | 1999-08-24 | Parallel crc generation circuit for generating a crc code |
AU57401/99A AU5740199A (en) | 1998-08-26 | 1999-08-24 | Parallel crc generation circuit for generating a crc code |
EP99944500A EP1110328B1 (de) | 1998-08-26 | 1999-08-24 | Schaltung zur parallelen erzeugung eines zyklischen redundanten prüfungskodes |
DE69903743T DE69903743D1 (de) | 1998-08-26 | 1999-08-24 | Schaltung zur parallelen erzeugung eines zyklischen redundanten prüfungskodes |
AT99944500T ATE227057T1 (de) | 1998-08-26 | 1999-08-24 | Schaltung zur parallelen erzeugung eines zyklischen redundanten prüfungskodes |
US09/382,591 US6560746B1 (en) | 1998-08-26 | 1999-08-25 | Parallel CRC generation circuit for generating a CRC code |
ARP990104252A AR020262A1 (es) | 1998-08-26 | 1999-08-25 | Un metodo para desarrollar un circuito generador para generar, paralelamente, un codigo para la verificacion ciclica de redundancia y un circuito generadorpara generar, paralelamente, dicho codigo para la verificacion ciclica de redundancia |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19838865A DE19838865C2 (de) | 1998-08-26 | 1998-08-26 | Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19838865A1 DE19838865A1 (de) | 2000-03-09 |
DE19838865C2 true DE19838865C2 (de) | 2001-03-01 |
Family
ID=7878825
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19838865A Expired - Fee Related DE19838865C2 (de) | 1998-08-26 | 1998-08-26 | Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung |
DE69903743T Expired - Lifetime DE69903743D1 (de) | 1998-08-26 | 1999-08-24 | Schaltung zur parallelen erzeugung eines zyklischen redundanten prüfungskodes |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69903743T Expired - Lifetime DE69903743D1 (de) | 1998-08-26 | 1999-08-24 | Schaltung zur parallelen erzeugung eines zyklischen redundanten prüfungskodes |
Country Status (12)
Country | Link |
---|---|
US (1) | US6560746B1 (de) |
EP (1) | EP1110328B1 (de) |
JP (1) | JP2002524904A (de) |
KR (1) | KR20010072989A (de) |
CN (1) | CN1171389C (de) |
AR (1) | AR020262A1 (de) |
AT (1) | ATE227057T1 (de) |
AU (1) | AU5740199A (de) |
CA (1) | CA2341504A1 (de) |
DE (2) | DE19838865C2 (de) |
TW (1) | TW448353B (de) |
WO (1) | WO2000013322A1 (de) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763492B1 (en) * | 2000-09-26 | 2004-07-13 | Qualcomm Incorporated | Method and apparatus for encoding of linear block codes |
US7216285B2 (en) | 2001-11-09 | 2007-05-08 | Marvell International Ltd. | System and method for generating cyclic redundancy check |
US7174498B2 (en) * | 2002-02-15 | 2007-02-06 | Intel Corporation | Obtaining cyclic redundancy code |
KR100913467B1 (ko) * | 2002-11-19 | 2009-08-25 | 엘지전자 주식회사 | 병렬 순환 중복 검사 코드 발생 시스템 및 방법 |
US7191383B2 (en) * | 2003-03-28 | 2007-03-13 | International Business Machines Corporation | System and method for optimizing iterative circuit for cyclic redundancy check (CRC) calculation |
GB2406247B (en) * | 2003-09-19 | 2006-06-14 | Matsushita Electric Ind Co Ltd | Hardware accelerator for matrix calculations,especially for calculation of parity bits in cyclic redundancy check codes |
US7181671B2 (en) * | 2003-09-23 | 2007-02-20 | Macronix International Co., Ltd. | Parallelized CRC calculation method and system |
US7219293B2 (en) * | 2003-12-17 | 2007-05-15 | Macronix International Co., Ltd. | High performance CRC calculation method and system with a matrix transformation strategy |
US7225387B2 (en) * | 2004-02-03 | 2007-05-29 | International Business Machines Corporation | Multilevel parallel CRC generation and checking circuit |
WO2007034935A1 (en) | 2005-09-21 | 2007-03-29 | Semiconductor Energy Laboratory Co., Ltd. | Cyclic redundancy check circuit and semiconductor device having the cyclic redundancy check circuit |
DE102006005836B4 (de) * | 2006-02-08 | 2009-01-02 | Infineon Technologies Ag | Schaltungsanordnung und Verfahren zum Erzeugen von zur Fehlererkennung bei einer digitalen Schaltung auswertbaren Kontrollbits und Anordnung zum Überwachen einer digitalen Schaltung |
KR101286238B1 (ko) * | 2007-08-01 | 2013-07-15 | 삼성전자주식회사 | 데이터 병렬화 수신기 |
JP4814969B2 (ja) * | 2009-03-23 | 2011-11-16 | 富士通株式会社 | 準固定回路 |
CN101795175B (zh) * | 2010-02-23 | 2014-03-19 | 中兴通讯股份有限公司 | 数据的校验处理方法及装置 |
CN101783688B (zh) * | 2010-03-05 | 2013-08-14 | 苏州和迈微电子技术有限公司 | 一种64位并行多模式crc码生成电路的设计方法 |
CN102546089B (zh) * | 2011-01-04 | 2014-07-16 | 中兴通讯股份有限公司 | 循环冗余校验crc码的实现方法及装置 |
CN102394720B (zh) * | 2011-10-14 | 2014-08-06 | 广西师范大学 | 一种信息安全校验处理器 |
CN102891685B (zh) * | 2012-09-18 | 2018-06-22 | 国核自仪系统工程有限公司 | 基于fpga的并行循环冗余校验运算电路 |
CN102946297B (zh) * | 2012-11-10 | 2015-06-17 | 华中科技大学 | 一种用于数据传输差错控制的嵌套crc码生成方法及装置 |
CN105653390A (zh) * | 2014-11-10 | 2016-06-08 | 无锡华润矽科微电子有限公司 | 一种SoC系统的校验方法 |
WO2018207155A2 (en) * | 2017-05-12 | 2018-11-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive crc length for beam sweeping |
CN108540137B (zh) * | 2018-03-02 | 2021-09-03 | 江西清华泰豪三波电机有限公司 | 一种循环冗余校验码生成方法与装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5103451A (en) * | 1990-01-29 | 1992-04-07 | Motorola, Inc. | Parallel cyclic redundancy check circuit |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4593393A (en) * | 1984-02-06 | 1986-06-03 | Motorola, Inc. | Quasi parallel cyclic redundancy checker |
JPH02101824A (ja) | 1988-10-11 | 1990-04-13 | Fujitsu Ltd | 巡回冗長検査符号生成装置 |
EP0431416A3 (en) * | 1989-12-04 | 1992-04-29 | National Semiconductor Corporation | Apparatus and method for accessing a cyclic redundancy error check code generated in parallel |
CA2050123C (en) * | 1990-10-11 | 1997-12-09 | Subrahmanyam Dravida | Apparatus and method for parallel generation of cyclic redundancy check (crc) codes |
US5878057A (en) * | 1995-10-06 | 1999-03-02 | Tektronix, Inc. | Highly parallel cyclic redundancy code generator |
-
1998
- 1998-08-26 DE DE19838865A patent/DE19838865C2/de not_active Expired - Fee Related
-
1999
- 1999-08-11 TW TW088113737A patent/TW448353B/zh not_active IP Right Cessation
- 1999-08-24 WO PCT/EP1999/006207 patent/WO2000013322A1/en not_active Application Discontinuation
- 1999-08-24 KR KR1020017002438A patent/KR20010072989A/ko not_active Application Discontinuation
- 1999-08-24 DE DE69903743T patent/DE69903743D1/de not_active Expired - Lifetime
- 1999-08-24 EP EP99944500A patent/EP1110328B1/de not_active Expired - Lifetime
- 1999-08-24 JP JP2000568189A patent/JP2002524904A/ja not_active Withdrawn
- 1999-08-24 AT AT99944500T patent/ATE227057T1/de not_active IP Right Cessation
- 1999-08-24 CN CNB998126535A patent/CN1171389C/zh not_active Expired - Fee Related
- 1999-08-24 CA CA002341504A patent/CA2341504A1/en not_active Abandoned
- 1999-08-24 AU AU57401/99A patent/AU5740199A/en not_active Abandoned
- 1999-08-25 AR ARP990104252A patent/AR020262A1/es not_active Application Discontinuation
- 1999-08-25 US US09/382,591 patent/US6560746B1/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5103451A (en) * | 1990-01-29 | 1992-04-07 | Motorola, Inc. | Parallel cyclic redundancy check circuit |
Non-Patent Citations (3)
Title |
---|
ALBERTENGO, Guido, SISTO, Riccardo, Parallel CRC Generation, In: IEEE Micro, Oktober 1990, S. 63-71 * |
Pat. Abstr. of JP, E-948, 05.07.1990, Vol. 14, No. 312, JP 2-101824 A * |
PEI, Tong-Bi, ZUKOWSKI, Charles: High-Speed Parallel CRC Circuits in VLSI, In: IEEE Transactins on Communicatins, April 1992, Vol. 40, Nr. 4, S. 653-657 * |
Also Published As
Publication number | Publication date |
---|---|
EP1110328A1 (de) | 2001-06-27 |
CA2341504A1 (en) | 2000-03-09 |
JP2002524904A (ja) | 2002-08-06 |
KR20010072989A (ko) | 2001-07-31 |
CN1171389C (zh) | 2004-10-13 |
WO2000013322A1 (en) | 2000-03-09 |
ATE227057T1 (de) | 2002-11-15 |
CN1324517A (zh) | 2001-11-28 |
DE69903743D1 (de) | 2002-12-05 |
TW448353B (en) | 2001-08-01 |
US6560746B1 (en) | 2003-05-06 |
EP1110328B1 (de) | 2002-10-30 |
DE19838865A1 (de) | 2000-03-09 |
AU5740199A (en) | 2000-03-21 |
AR020262A1 (es) | 2002-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19838865C2 (de) | Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung | |
DE3650102T2 (de) | Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode. | |
DE3781839T2 (de) | Programmierbarer fifo-puffer. | |
DE2321112C2 (de) | Signalverarbeitungsanlage | |
DE602004000456T2 (de) | Verfahren und Vorrichtung zur Generierung von Prüfdaten basierend auf einer Low-Density Parity Check (LDPC) Matrix | |
DE2614916A1 (de) | Konverter zur codeumwandlung | |
DE69130640T2 (de) | Arithmetische Operationseinheit mit Bit-Invertierungsfunktion | |
DE3750390T2 (de) | Simultane Fehlererkennung bei der Kodierung durch arithmetische Datenkodierung. | |
DE69121733T2 (de) | Technik zum eingebauten Selbsttest für Nur-Lese-Speicher | |
DE69713911T2 (de) | Monolitisch integrierter speicher mit fehlerkomprimierung | |
DE112011106024T5 (de) | Erzeugungsvorrichtung für vorrichtungsspezifische Informationen und Erzeugungsverfahren für vorrichtungsspezifische Informationen | |
EP0149785B1 (de) | Verfahren und Schaltungsanordnung zur Digitalsignalverarbeitung nach Art eines vorzugsweise adaptiven Transversalfilters | |
DE3689282T2 (de) | CRC-Rechenmaschine und Methode zur CRC-Berechnung. | |
DE2728889A1 (de) | Verfahren und vorrichtung zum uebertragen eines faksimilesignals durch sequentielle randdifferentialcodierung | |
DE69129889T2 (de) | Pipelineschaltung und Verfahren zum Vergleich der relativen Differenz zwischen zwei asynchronen Zeigern und einem programmierbaren Wert | |
DE2758130C2 (de) | Binärer und dezimaler Hochgeschwindigkeitsaddierer | |
DE69429525T2 (de) | Programmierbarer redundanz/syndromgenerator | |
DE2727627C2 (de) | Dekoder zur Parallelumsetzung von binären Zeichendaten in ein Punktmatrixformat | |
DE19741915A1 (de) | Zwischenspeicheroptimierung in Hardware-Logikemulations-Systemen | |
DE10210264A1 (de) | Ein Testvektorkomprimierungsverfahren | |
DE3838940C2 (de) | ||
DE3722907A1 (de) | Maximallaengen-schieberegister-folgegenerator | |
DE69910965T2 (de) | Verfahren und gerät zum schutz gegen fehler | |
DE3918886C2 (de) | Rücksetzanordnung in einer Datenverarbeitungseinheit | |
DE2235802A1 (de) | Verfahren und einrichtung zur pruefung nichtlinearer schaltkreise |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20150303 |