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 Schaltung

Info

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
Application number
DE19838865A
Other languages
English (en)
Other versions
DE19838865A1 (de
Inventor
Gerd Moersberger
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Priority to DE19838865A priority Critical patent/DE19838865C2/de
Priority to TW088113737A priority patent/TW448353B/zh
Priority to CA002341504A priority patent/CA2341504A1/en
Priority to EP99944500A priority patent/EP1110328B1/de
Priority to CNB998126535A priority patent/CN1171389C/zh
Priority to KR1020017002438A priority patent/KR20010072989A/ko
Priority to JP2000568189A priority patent/JP2002524904A/ja
Priority to AT99944500T priority patent/ATE227057T1/de
Priority to AU57401/99A priority patent/AU5740199A/en
Priority to PCT/EP1999/006207 priority patent/WO2000013322A1/en
Priority to DE69903743T priority patent/DE69903743D1/de
Priority to US09/382,591 priority patent/US6560746B1/en
Priority to ARP990104252A priority patent/AR020262A1/es
Publication of DE19838865A1 publication Critical patent/DE19838865A1/de
Application granted granted Critical
Publication of DE19838865C2 publication Critical patent/DE19838865C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6575Implementations 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

Gebiet der Erfindung
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.
Hintergrund der Erfindung
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.
Zusammenfassung der Erfindung
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.
Kurzbeschreibung der Zeichnungen
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.
Beschreibung 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)
.
.
.
.
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.
Beispiel
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)
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)
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.
Gewerbliche Anwendbarkeit
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:
  • 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;
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, 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:
  • 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;
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.
DE19838865A 1998-08-26 1998-08-26 Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung Expired - Fee Related DE19838865C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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