DE60306709T2 - Vorrichtung und Verfahren zur Erzeugung von zyklischen Codes für die Fehlerkorrektur in digitaler Kommunikation - Google Patents

Vorrichtung und Verfahren zur Erzeugung von zyklischen Codes für die Fehlerkorrektur in digitaler Kommunikation Download PDF

Info

Publication number
DE60306709T2
DE60306709T2 DE60306709T DE60306709T DE60306709T2 DE 60306709 T2 DE60306709 T2 DE 60306709T2 DE 60306709 T DE60306709 T DE 60306709T DE 60306709 T DE60306709 T DE 60306709T DE 60306709 T2 DE60306709 T2 DE 60306709T2
Authority
DE
Germany
Prior art keywords
information signal
circuit
polynomial
code
represented
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 - Lifetime
Application number
DE60306709T
Other languages
English (en)
Other versions
DE60306709D1 (de
Inventor
K. Keshab 92692 Mission Viejo Parhi
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.)
Broadcom Corp
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Publication of DE60306709D1 publication Critical patent/DE60306709D1/de
Application granted granted Critical
Publication of DE60306709T2 publication Critical patent/DE60306709T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/617Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/04Distributors combined with modulators or demodulators
    • H04J3/047Distributors with transistors or integrated circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/03Shaping networks in transmitter or receiver, e.g. adaptive shaping networks
    • H04L25/03006Arrangements for removing intersymbol interference
    • H04L25/03012Arrangements for removing intersymbol interference operating in the time domain
    • H04L25/03019Arrangements for removing intersymbol interference operating in the time domain adaptive, i.e. capable of adjustment during data reception
    • H04L25/03057Arrangements for removing intersymbol interference operating in the time domain adaptive, i.e. capable of adjustment during data reception with a recursive structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Power Engineering (AREA)
  • Error Detection And Correction (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft digitale Datenübertragungen. Spezifischer betrifft die vorliegende Erfindung zyklische Codes zur Fehlerkontrolle bei digitalen Datenübertragungen.
  • Hintergrund der Erfindung
  • Das Übertragen von Informationen über das Internet und andere digitale Datenübertragungssysteme ist in den Vereinigten Staaten und anderenorts üblich geworden. Da sich die Zahl der Menschen, die diese Datenübertragungssysteme nutzen, erhöht hat, ist auch der Bedarf, digitale Daten mit immer höheren Geschwindigkeiten zu senden, gestiegen.
  • Durch ein digitales Datenübertragungssystem gesendete Informationen sind typischerweise codiert und werden als Folge von Informationscodeworten gesendet. Die Codierung wird dazu verwendet, die Gesamtleistung eines digitalen Datenübertragungssystems zu verbessern. Zusätzlich zur Codierung von Informationen vor dem Senden berechnen viele digitale Datenübertragungssysteme außerdem Gruppen von Bits oder Codeworten, die vor dem Senden an eine Gruppe von Informationsbits angehängt werden. Diese Bits oder Codeworte können von einem Signaldecoder eines Empfängers dazu verwendet werden, Bitfehler zu ermitteln und/oder zu korrigieren, die während der Übertragung auftreten können. CRC- (Cyclic Redundancy Check/zyklische Redundanzprüfungs-) Bits stellen ein Beispiel für Bits dar, die vor dem Senden an eine Gruppe von Informationsbits angehängt werden. Diese Bits werden von einem Signaldecoder verwendet, um Bitfehler zu ermitteln und/oder zu korrigieren.
  • Typischerweise bilden die an eine Gruppe von Informationsbits zur Übertragung angehängte Bits und/oder Codeworte einen Teil eines zyklischen Codes oder eines systematischen zyklischen Codes. Zyklische Codes oder spezifischer systematische zyklische Codes werden häufig unter Verwendung eines linearen Feedback-Schieberegisters (LFSR – Linear Feedback Shift Register) generiert, das dafür ausgelegt ist, ein bestimmtes Generator-Polynom oder ein bestimmtes Paritätspolynom zu implementieren. Die Generierung eines systematischen zyklischen Codes umfasst typischerweise drei Operationen. Diese Operationen sind: (1) Multiplizieren eines Informationssignals U(x) mit Xn-k, (2) Dividieren des Produkts U(x)·Xn-k durch ein Generator-Polynom G(x), um einen Rest R(x) zu erhalten, und (3) Addieren von R(x) zu U(x)·Xn-k.
  • Systeme und Verfahren zum Generieren zyklischer Codes existieren bereits. Diese herkömmlichen Systeme und Verfahren haben jedoch Einschränkungen, die verhindern, dass sie mit hohen Datenraten arbeiten. Insbesondere geschachtelte Feedback-Schleifen des zum Generieren der Codeworte verwendeten LFSR bilden einen Geschwindigkeitsengpass.
  • Herkömmliche Techniken, wie etwa Look-Ahead, Pipelining und Parallelismus, werden häufig dazu verwendet, Geschwindigkeitsengpässe bei digitalen Datenübertragungssystemen zu überwinden. Diese herkömmlichen Techniken können jedoch nicht immer erfolgreich dabei angewandt werden, digitale Datenübertragungssysteme zu konstruieren, die mit Datenraten von mehr als 2GB/s arbeiten. Die Anwendung dieser herkömmlichen Techniken ist beispielsweise bei der Handhabung von geschachtelten Feedback-Schleifen, wie etwa den Feedback-Schleifen eines linearen Feedback-Schieberegisters, das zum Generieren der Codeworte eines zyklischen Codes verwendet wird, besonders schwierig.
  • Es gibt einige Ansätze, die beispielsweise bei der Anwendung von Look-Ahead in Verbindung mit einer Schaltung mit geschachtelten Feedback-Schleifen verwendet werden können. Viele dieser Ansätze verbessern jedoch nicht die Leistung der digitalen Schaltung, auf die sie angewandt werden, wobei einige dieser Ansätze die Schaltungsleistung sogar verschlechtern oder die Leistung in Bezug auf den Look-Ahead-Faktor weniger als linear verbessern können. Dies ist zumindest zum Teil darauf zurückzuführen, dass Look-Ahead-Netze die Iterationsgrenze einer Schaltung erhöhen können. In ähnlicher Weise führt die Anwendung herkömmlicher Pipelining- und Parallelismus-Techniken auf geschachtelte Feedback-Schleifen bei digitalen Hochgeschwindigkeitsdatenübertragungssystemen nicht unbedingt zu einer besseren Leistung. Das Anwenden dieser herkömmlichen Techniken führt zu Ausgangslastproblemen (Fan-Out-Problemen) bei digitalen Hochgeschwindigkeitsdatenübertragungssystemen, wodurch sie nicht dazu verwendet werden können, Geschwindigkeitsengpässe zu überwinden, die bei einem digitalen Hochgeschwindigkeitsdatenübertragungssystem durch geschachtelte Feedback-Schleifen verursacht werden.
  • Es besteht derzeit Bedarf an neuartigen Konstruktionstechniken und digitalen Logikschaltungen, die zum Bau von digitalen Hochgeschwindigkeitsdatenübertragungssystemen verwendet werden können.
  • Das Dokument von Pei Tong-Bi et al., "High-Speed Parallel CRC Circuits in VLSI", IEEE Transactions on Communications, IEEE Inc., New York, USA, Band 40, Nr. 4, 1. April 1992 (01.04.1992), Seiten 653–657, XP000297743, offenbart die Verwendung einer VLSI-Technologie zur Beschleunigung von CRC-Schaltungen (zyklischen Redundanzprüfungsschaltungen), die zur Fehlerermittlung in Telekommunikationssystemen verwendet werden.
  • Das Dokument von J. H. Derby, "High-Speed CRC Computation Using State-Space Transformations", Proc. of IEEE Global Telecommunications Conference 2001, San Antonio, USA, Band 1 von 6, 25. November 2001 (25.11.2001), Seiten 166–170, XP001090238, offenbart eine Zustandsraumtransformation für das M-Bits-aufeinmal-CRC-System, die die Komplexität seiner Feedback-Schleife auf die des ursprünglichen Bit-auf-einmal-Systems (bit-at-a-time system) reduziert.
  • Das Dokument von T. K. Matsushima et al., "Parallel Encoder and Decoder Architecture for Cyclic Codes", IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Institute of Electronics Information and Comm. Eng. Tokyo, JP, Band 79, Nr. 9, September 1996 (09.1996), Seiten 1313–1323, XP000679621, offenbart eine Parallel-Coder-/Decoderarchitektur, die sowohl auf binäre als auch nicht binäre zyklische Codes angewandt werden kann.
  • Das Dokument von G. Albertengo et al., "Parallel CRC Generation", IEEE Micro, IEEE Inc., New York, USA, Band 10, Nr. 5, 1. Oktober 1990 (01.10.1990), Seiten 63–71, XP000170678, offenbart eine Technik, die die Fähigkeit bereitstellt, ein lineares Feedback-Schieberegister zu analysieren, das für gewöhnlich zur seriellen Implementierung von CRCs durch dieselben Techniken eingesetzt wird, die bei digitalen Filtern verwendet werden.
  • Ein Ziel der vorliegenden Erfindung besteht darin, ein System und ein Verfahren zum Generieren zyklischer Codes zur Fehlerkontrolle bei digitalen Datenübertragungen bereitzustellen, die Geschwindigkeitsengpässe verhindern und es digitalen Datenübertragungssystemen ermöglichen, mit hohen Datenraten zu arbeiten.
  • Dieses Ziel wird durch ein in Anspruch 1 dargelegtes System und ein in Anspruch 7 dargelegtes Verfahren erreicht.
  • Vorteilhafte Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen definiert.
  • Es werden Systeme und Verfahren zum Generieren zyklischer Codes zur Fehlerkontrolle bei der digitalen Datenübertragung dargelegt. Allgemein ausgedrückt, arbeitet die Erfindung, indem sie eine ursprüngliche Gruppe zu sendender Informationsbits empfängt. Diese ursprüngliche Gruppe von Informationsbits wird bearbeitet, um eine transformierte Bitgruppe zu bilden. Die transformierte Bitgruppe wird weiter bearbeitet, um ein ursprüngliches Codewort zu bilden. Dieses ursprüngliche Codewort wird dann transformiert, um ein Codewort eines herkömmlichen zyklischen Codes zu bilden, und an die ursprüngliche Gruppe von Informationsbits angehängt.
  • Bei einer beispielhaften Ausführungsform wird ein K-Bit-Informationssignal empfangen, das durch ein Polynom U(x) mit einem Grad K – 1 repräsentiert wird. Das Informationssignal, wird bearbeitet, um ein transformiertes Informationssignal zu bilden, und zwar unter Verwendung einer ersten Transformierten, die durch ein Polynom G1(x) mit einem Grad P repräsentiert wird. Das transformierte Informationssignal wird durch ein Polynom T(x) mit einem Grad K + P – 1 repräsentiert. T(x) ist gleich U(x)G1(x). Ein ursprünglicher zyklischer Code, der durch ein Polynom R1(x) repräsentiert wird, wird für das transformierte Informationssignal unter Verwendung einer zweiten Transformierten generiert, die durch ein Polynom G2(x) repräsentiert wird. Die zweite Transformierte G2(x) weist höherwertige Führende-Null-Terme auf. R1(x) ist gleich dem Rest, der durch Dividieren von T(x) durch G2(x) erhalten wird. Der ursprüngliche zyklische Code wird transformiert, um einen endgültigen zyklischen Code zu bilden, der durch ein Polynom R2(x) repräsentiert wird, und zwar unter Verwendung der ersten Transformierten. R2(x) ist gleich R1(x)/G1(x).
  • Die Erfindung kann dazu verwendet werden, die Codeworte herkömmlicher zyklischer Codes und/oder systematischer zyklischer Codes zu generieren. Bei einer Ausführungsform beispielsweise ist der generierte endgültige zyklische Code ein zyklischer Redundanzprüfungscode. Bei einer anderen Ausführungsform ist der generierte endgültige zyklische Code ein Bose-Chaudhuri-Hocquenghem-Code. Bei einer weiteren Ausführungsform ist der generierte endgültige zyklische Code ein Reed-Solomon-Code. Die Erfindung kann beispielsweise auch dazu verwendet werden, zyklische Hamming-Codes, zyklische Golay-Codes und Schieberegistercodes maximaler Länge zu generieren.
  • Bei einer beispielhaften Ausführungsform wird das transformierte Informationssignal durch Addieren des Informationssignals U(x) zu wenigstens einer zeitverschobenen Kopie des Informationssignals U(x + t) gebildet.
  • Bei einer beispielhaften Ausführungsform werden ein erstes lineares Feedback-Schieberegister zum Bilden des ursprünglichen zyklischen Codes und ein zweites lineares Feedback-Schieberegister zum Bilden des endgültigen zyklischen Codes verwendet. Der endgültige zyklische Code wird durch Dividieren des ursprünglichen zyklischen Codes R1(x) durch die erste Transformierte G1(x) gebildet.
  • Bei einer beispielhaften Ausführungsform werden die K Bits des Informationssignals U(x) parallel verarbeitet, um das Polynom T(x), den ursprünglichen zyklischen Code R1(x) und die endgültigen Codewortbits zu generieren.
  • Weitere Merkmale und Vorteile der vorliegenden Erfindung sowie der Aufbau und Betrieb verschiedener Ausführungsformen der vorliegenden Erfindung sind nachfolgend unter Bezugnahme auf die begleitenden Zeichnungen genauer beschrieben.
  • Kurzbeschreibung der Zeichnungen/Figuren
  • Die Ausführungsformen der vorliegenden Erfindung werden unter Bezugnahme auf die begleitenden Figuren beschrieben. In den Figuren geben gleiche Bezugszeichen identische oder funktionell ähnliche Elemente an. Darüber hinaus bezeichnet die Ziffer ganz links in einem Bezugszeichen die Figur, in der das Bezugszeichen erstmals erscheint. Die begleitenden Figuren, die hierin enthalten sind und einen Teil der Beschreibung bilden, veranschaulichen die vorliegende Erfindung und dienen, zusammen mit der Beschreibung, ferner dazu, die Grundlagen der Erfindung zu erläutern und es einem Fachmann auf dem relevanten Gebiet zu ermöglichen, die Erfindung herzustellen und anzuwenden.
  • 1 ist ein Blockdiagramm einer beispielhaften linearen Feedback-Schieberegisterschaltung zum Generieren eines zyklischen Codes.
  • 2 ist ein Blockdiagramm einer beispielhaften Schaltung mit zwei parallelen Pfaden zum Generieren eines zyklischen Codes, die durch Entfalten der Schaltung gemäß 1 um einen Faktor von zwei erhalten wird.
  • 3 ist ein Blockdiagramm einer beispielhaften Schaltung mit drei parallelen Pfaden, die durch Entfalten der Schaltung gemäß 1 um einen Faktor von drei erhalten wird.
  • 4 ist ein Blockdiagramm einer beispielhaften erfindungsgemäßen Schaltung, die durch Hinzufügen einer zusätzlichen Zeitverzögerung zur innersten geschachtelten Schleife der Schaltung gemäß 1 erhalten wird.
  • 5 ist ein Blockdiagramm einer beispielhaften erfindungsgemäßen Schaltung mit drei parallelen Pfaden, die durch Entfalten der Schaltung gemäß 4 um einen Faktor von drei erhalten wird.
  • 6A ist ein Blockdiagramm eines beispielhaften erfindungsgemäßen Codierers (Coder) zum Generieren eines zyklischen Codes.
  • 6B ist ein Blockdiagramm einer beispielhaften erfindungsgemäßen Schaltung mit drei parallelen Pfaden, die durch Entfalten der Schaltung gemäß 6A um einen Faktor von drei erhalten wird.
  • 7 ist ein Blockdiagramm eines beispielhaften erfindungsgemäßen Codierers zum Generieren eines zyklischen Codes.
  • 8 ist ein Blockdiagramm einer beispielhaften linearen Feedback-Schieberegisterschaltung zum Generieren eines zyklischen Codes.
  • 9 ist ein Blockdiagramm einer beispielhaften linearen Feedback-Schieberegisterschaltung zum Generieren eines zyklischen Codes, die durch Durchführen eines Retiming-Verfahrens an der Schaltung gemäß 4 erhalten wird.
  • 10 ist ein Blockdiagramm einer beispielhaften erfindungsgemäßen Schaltung mit drei parallelen Pfaden, die durch Entfalten der Schaltung gemäß 10 um einen Faktor von drei erhalten wird.
  • 11 ist ein Flussdiagramm der Schritte eines erfindungsgemäßen Verfahrens zum Generieren zyklischer Codes.
  • Genaue Beschreibung der Erfindung
  • Moderne digitale Datenübertragungssysteme enthalten Schaltungen, die zyklische Codes generieren. Allgemein ausgedrückt, sind zyklische Codes Codeworte (Bitgruppen), die zwischen Gruppen von Informationssignalbits eingefügt sind, die einen großen Strukturbetrag besitzen. Diese Codeworte werden beispielsweise dazu verwendet, die Bits eines empfangenen digitalen Informationssignals zu decodieren und Übertragungsfehler zu korrigieren. Beispielhafte zyklische Codes umfassen zyklische Redundanzprüfungscodes (CRC-Codes), Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes), den Reed-Solomon-Code, zyklische Hamming-Codes, den zyklische Golay-Code und Schieberegistercodes maximaler Länge.
  • In der folgenden Beschreibung sind beispielhafte erfindungsgemäße Schaltungen, die zyklische Codes generieren, und ein beispielhaftes erfindungsgemäßes Verfahren zum Generieren zyklischer Codes beschrieben.
  • Beispielhafte erfindungsgemäße Schaltungen zum Generieren zyklischer Codes
  • 1 ist ein Blockdiagramm einer herkömmlichen Schaltung 100, die zum Generieren von CRC-Bits verwendet wird. Insbesondere generiert die Schaltung 100 einen zyklischen (7, 4)-Code. Ein zyklischer (7, 4)-Code ist ein Code, der ein Drei-Bit-Codewort an vier Informationsbits anhängt und dadurch eine Gruppe aus insgesamt sieben Bits bildet. Die Schaltung 100 basiert auf dem Generator-Polynom G(x) = 1 + X + X3. G(x) weist einen höherwertigen Führende-Null-Term auf (d.h. der X2-Term ist gleich null).
  • Die Schaltung 100 umfasst einen Schalter 102 und ein lineares Feedback-Schieberegister (LFSR) 104. Der Schalter 102 weist drei Ports (a, b und c) auf. Der Schalter 102 kann ein beliebiger herkömmlicher elektronischer Schalter sein, wie z.B. eine beliebige herkömmliche Art von Feldeffekttransistor (FET). Das LFSR 104 weist drei Verzögerungseinrichtungen 106a, 106b und 106c auf. Das LFSR 104 weist außerdem zwei Addieren 108a und 108b auf. Die Verzögerungseinrichtungen 106 können eine beliebige Art von Verzögerungseinrichtung sein, wie z.B. D-Flipflops. Die Addierer 108 repräsentieren eine Modulo-2-Addition und sind als ausschließende ODER-Schaltungen ausgeführt. Das LFSR 104 weist zwei Feedback-Schleifen auf.
  • Die innerste Feedback-Schleife ist eine geschachtelte Feedback-Schleife. Diese innerste geschachtelte Feedback-Schleife wird durch die Addierer 108a und 108b, die Verzögerungseinrichtungen 106b und 106a und die Leiterbahnen gebildet, die diese Einrichtungen miteinander verbinden.
  • Die Schaltung 100 verfügt über zwei Betriebsarten. Bei einer ersten Betriebsart wird eine Gruppe von CRC-Bits oder ein CRC-Codewort (R3, R2, R2) durch das LFSR 104 generiert, wobei R1 von der Verzögerungseinrichtung 106a, R2 von der Verzögerungseinrichtung 106b und R3 von der Verzögerungseinrichtung 106c ausgegeben wird. Bei einer zweiten Betriebsart wird das generierte CRC-Codewort aus dem LFSR 104 verschoben und an eine Gruppe von Informationsbits angehängt.
  • Bei der ersten Betriebsart der Schaltung 100 ist der a-Port des Schalters 102 elektrisch mit dem b-Port verbunden. Bei dieser ersten Betriebsart werden die Bits eines digitalen Informationssignals in den a-Port des Schalters 102 eingegeben. Während jedes Taktzyklus der Schaltung 100 wird ein Bit des digitalen Informationssignals am b-Port des Schalters 102 ausgegeben. Dasselbe Bit wird auch dem Addierer 108a zugeführt. Das dem Addierer 108a zugeführte Bit wird zu einem Ausgang der Verzögerungseinrichtung 106a addiert, um ein resultierendes Bit zu bilden. Dieses resultierende Bit wird dann als Eingang dem Addierer 108b und der Verzögerungseinrichtung 106c des LFSR 104 zugeführt.
  • Zum besseren Verständnis der ersten Betriebsart der Schaltung 100 betrachten wir das folgende Beispiel, wobei das LFSR 104 dazu verwendet wird, ein CRC-Codewort für eine Gruppe von vier Informationssignalbits (1, 1, 0, 1) zu generieren.
  • Anfangs ist jeder der Ausgänge der Verzögerungseinrichtungen 106 ein 0-Bit (d.h. das Codewort (R3, R2, R1) des LFSR 104 lautet (0, 0, 0), bevor das erste von vier Informationssignalbits (1, 1, 0, 1) der Schaltung 100 zugeführt wird). Während eines ersten Taktzyklus der Schaltung 100 wird das erste Bit der vier Bits (1) dem a-Port des Schalters 102 und dem Addierer 108a zugeführt. Das 0-Ausgangsbit der Verzögerungseinrichtung 106a wird unter Verwendung der Modulo-2-Addition zu diesem ersten Bit (d.h. 1) addiert, um ein Ausgangsbit zu bilden, das gleich eins ist (0 + 1 = 1). Dieses Ausgangsbit (1) wird dann sowohl der Verzögerungseinrichtung 106c als auch dem Addierer 108b als Eingang zugeführt. Infolge dessen ändert sich der Ausgang des Addierers 108b in 1 (0 + 1 = 1). Zu Beginn des nächsten Taktzyklus, dem Taktzyklus zwei, werden die Ausgänge jeder der Verzögerungseinrichtungen 106 entsprechend ihren Eingängen abgeändert und das Codewort (R3, R2, R1) des LFSR wird von (0, 0, 0) in (1, 1, 0) abgeändert.
  • Während des zweiten Taktzyklus wird das zweite der vier Bits (1) des Eingangssignals dem a-Port des Schalters 102 und dem Addierer 108a zugeführt. Das 0-Ausgangsbit der Verzögerungseinrichtung 106a wird nun zu dem zweiten Bit des Informationsbits (d.h. 1) unter Verwendung der Modulo-2-Addition addiert, um ein neues Ausgangsbit zu bilden, das gleich eins ist (0 + 1 = 1). Dieses Ausgangsbit (1) wird dann sowohl der Verzögerungseinrichtung 106c als auch dem Addierer 108b als Eingang zugeführt. Infolge dessen ändert sich der Ausgang des Addierers 106b nun in 0 (1 + 1 = 0). Zu Beginn des nächsten Taktzyklus, dem Taktzyklus drei, werden Ausgänge der Verzögerungseinrichtungen 106 wiederum entsprechend ihren Eingängen abgeändert und das Codewort (R2, R1) des LFSR 104 wird von (1, 1, 0) in (1, 0, 1) abgeändert.
  • In ähnlicher Art und Weise wie vorstehend beschrieben, wird das Codewort (R3, R2, R1) des LFSR 104 zu Beginn des vierten Taktzyklus von (1, 0, 1) in (1, 0, 0) und zu Beginn des fünften Taktzyklus von (1, 0, 0) in (1, 0, 0) abgeändert. Somit hat die Schaltung 100 während der Übertragung der vier Informationsbits (1, 1, 0, 1) ein Drei-Bit-CRC-Codewort (1, 0, 0) generiert. Dies ist nachfolgend in Tabelle 1 zusammengefasst.
  • Tabelle 1
    Figure 00090001
  • Die Einschwingzeit der Schaltung 100 entspricht der Einschwingzeit von zwei Addierern 108 (d.h. 2TAddierer). Dies ist durch Kenntnisnahme der Tatsache ersichtlich, dass der Ausgang des Addierers 108b vom Ausgang des Addierers 108a abhängig ist. Wie durch die Schaltung gemäß 3 dargestellt, können herkömmliche Entfal tungstechniken (Unfolding-Techniken) diese Einschwingzeit paralleler CRC-Schaltungen erhöhen, da die kritischen Pfade der entfalteten Schaltungen typischerweise länger als die sequentiellen sind.
  • Bei der zweiten Betriebsart der Schaltung 100 ist der c-Port anstelle des a-Ports des Schalters 102 elektrisch mit dem b-Port verbunden. Bei dieser zweiten Betriebsart wird während jedes Taktzyklus der Schaltung 100 ein Bit eines durch das LFSR 104 generierten Codeworts an den b-Port des Schalters 102 ausgegeben. Daher kann die Schaltung 100 durch Umschalten zwischen den zwei Betriebsarten dazu verwendet werden, sowohl CRC-Codeworte zu generieren als auch dazu, diese Codeworte an Bitgruppen eines Informationssignals anzuhängen. Durch Schalten in die zweite Betriebsart kann beispielsweise das während der Übertragung der vier Informationsbits (1, 1, 0, 1) generierte Codewort (1, 0, 0) an die vier Informationsbits angehängt werden, um sieben Übertragungsbits (1, 1, 0, 1, 1, 0, 0) zu bilden.
  • Wie in 1 gezeigt, umfasst das LFSR 104 zwei Feedback-Schleifen. Diese Feedback-Schleifen begrenzen die Rate, mit der Daten durch die Schaltung 100 verarbeitet werden können. Die Schaltung 100 kann nicht schneller als die Einschwingzeit der langsamsten Feedback-Schleife getaktet werden.
  • Das Entfalten oder Unfolding ist eine Technik zum Erhöhen der Verarbeitungsgeschwindigkeit bestimmter digitaler Schaltungen. Das Entfalten umfasst die Bildung paralleler Verarbeitungspfade. Herkömmliche Entfaltungstechniken können jedoch, wie hierin beschrieben, Ausgangslastprobleme und erhöhte Schaltungseinschwingzeiten verursachen. Aus diesem Grund können herkömmliche Entfaltungstechniken nicht dazu verwendet werden, digitale Hochgeschwindigkeitsdatenübertragungssysteme zu konstruieren, insbesondere Systeme, die mit einer Datenrate von mehr als 2 GB/s arbeiten sollen.
  • 2 ist ein Blockdiagramm einer Schaltung 200 mit zwei parallelen Pfaden, die durch Entfalten des LFSR 104 der Schaltung 100 erhalten wird. Wie in 2 gezeigt, weist die Schaltung 200 vier Addierer 202a, 202b, 202c und 202d und drei Verzögerungseinrichtungen 204a, 204b und 204c auf. Die Schaltung 200 kann anstelle des LFSR 104 der Schaltung 100 verwendet werden, um die Codeworte eines (7, 4)-CRC-Codes zu generieren.
  • Die Schaltung 200 generiert eine Gruppe von CRC-Bits oder ein CRC-Codewort (R3, R2, R1), wobei R1 der Ausgang der Verzögerungseinrichtung 204a, R2 der Ausgang der Verzögerungseinrichtung 204b und R3 der Ausgang der Verzögerungseinrichtung 204c ist. Die Iterationsgrenze (Einschwingzeit) der Schaltung 200 entspricht der Einschwingzeit von zwei Addierern 202 (d.h. 2TAddierer). Dies ist beispielsweise auf die Tatsache zurückzuführen, dass der Ausgang des Addierers 202b vom Ausgang des Addierers 202a abhängig ist. Die Schaltung 200 arbeitet ähnlich wie die Schaltung 100, außer dass der Schaltung 200, anstelle der einen Information bei der Schaltung 100, zwei Informationsbits während jedes Taktzyklus der Schaltung 200 zugeführt werden.
  • Zum besseren Verständnis des Betriebs der Schaltung 100 betrachten wir nun das folgende Beispiel, bei dem die Schaltung 200 dazu verwendet wird, ein CRC-Codewort für eine Gruppe von vier Informationssignalbits (1, 1, 0, 1) zu generieren. Dies sind dieselben vier Informationssignalbits, die vorstehend zur Darstellung des Betriebs des LFSR 104 verwendet worden sind.
  • Anfangs ist jeder der Ausgänge der Verzögerungseinrichtungen 204 ein 0-Bit (d.h. das Codewort (R3, R2, R1) der Schaltung 200 lautet (0, 0, 0), bevor das erste von vier Informationssignalbits (1, 1, 0, 1) der Schaltung 200 zugeführt wird). Während eines ersten Taktzyklus der Schaltung 200 wird das erste Bit der vier Bits (1) dem Addierer 202a und das zweite Bit der vier Bits (1) dem Addierer 202d zugeführt. Der Eingang des Addierers 202a wird als Eingang B0 bezeichnet. Das 0-Ausgangsbit der Verzögerungseinrichtung 204a wird zu diesem ersten Informationssignalbit (d.h. 1) unter Verwendung der Modulo-2-Addition addiert, um ein Ausgangsbit zu bilden, das gleich eins ist (0 + 1 = 1). Dieses Ausgangsbit (1) wird dann sowohl dem Addierer 202b als auch dem Addierer 202c als Eingang zugeführt. Infolge dessen ändert sich der Ausgang des Addierers 202b in 1 (0 + 1 = 1).
  • Während derselben Taktperiode wird das zweite Bit des Informationssignals (1) dem Addierer 202d als Eingang zugeführt. Dieser Eingang der Schaltung 200 wird als Eingang B1 bezeichnet. Der Ausgang der Verzögerungseinrichtung 204b wird dann zu diesem zweiten Informationssignalbit (d.h. 1) addiert, um ein Ausgangbit zu bilden, das gleich 1 ist (0 + 1 = 1). Dieses Ausgangsbit wird dem Addierer 202c und der Verzögerungseinrichtung 204c als Eingangsbit zugeführt. Infolge dessen bildet der Addierer 202c ein Ausgangsbit, das gleich 0 ist (1 +1 = 0). Zu Beginn des nächsten Taktzyklus, dem Taktzyklus zwei, werden die Ausgänge einer jeden der Verzögerungseinrichtungen 204 entsprechend ihren Eingängen abgeändert und das Codewort (R3, R2, R1) der Schaltung 200 wird von (0, 0, 0) in (1, 0, 1) abgeändert.
  • Während des zweiten Taktzyklus der Schaltung 200 wird das dritte Bit der vier Informationsbits (0) dem Addierer 202a zugeführt. Das 1-Ausgangsbit der Verzögerungseinrichtung 204a wird zu diesem dritten Informationssignalbit (d.h. 3) addiert, um ein Ausgangsbit zu bilden, das gleich eins ist (1 + 0 =1). Dieses Ausgangsbit (1) wird dann sowohl dem Addierer 202b als auch dem Addierer 202c zugeführt. Infolge dessen ändert sich der Ausgang des Addierers 202b in 0 (1 +1 = 0). Während derselben Taktperiode wird das vierte Bit des Informationssignals (1) dem Addierer 202d als Eingang zugeführt. Der Ausgang der Verzögerungseinrichtung 204b wird dann zu diesem vierten Informationssignalbit (d.h. 1) addiert, um ein Ausgangsbit zu bilden, das gleich 1 ist (0 + 1 = 1). Dieses Ausgangsbit wird dem Addierer 202c und der Verzögerungseinrichtung 204c als Eingang zugeführt. Infolge dessen bildet der Addierer 202c ein Ausgangsbit, das gleich 0 ist (1 + 1 = 0). Zu Beginn des nächsten Taktzyklus, dem Taktzyklus drei, werden die Ausgänge einer jeden der Verzögerungseinrichtungen 204 entsprechend ihren Eingängen abgeändert und das Codewort (R3, R2, R1) der Schaltung 200 wird von (1, 0, 1) in (1, 0, 0) abgeändert. Dies ist nachfolgend in Tabelle 2 zusammengefasst.
  • Tabelle 2
    Figure 00120001
  • Wie aus dem vorstehenden Beispiel zu ersehen ist, generiert die Schaltung 200 dasselbe Codewort in zwei Taktzyklen wie es das LFSR 104 in vier Taktzyklen tut. Die durch die Schaltung 200 generierten CRC-Codeworte werden, ähnlich wie vorstehend in Bezug auf die Schaltung 100 beschrieben, zur Übertragung an die vier Informationssignalbits angehängt.
  • Theoretisch kann die Schaltung gemäß 1 weiter entfaltet werden, in dem Bestreben die Verarbeitungszeit weiter zu verkürzen. Wie durch die Schaltung gemäß 3 gezeigt, kann das weitere Entfalten unter Verwendung herkömmlicher Entfaltungstechniken zu erhöhten Schaltungseinschwingzeiten und/oder der Unfähigkeit, die gewünschten Resultate zu erzielen, führen.
  • 3 ist ein Blockdiagramm einer Schaltung 300 mit drei parallelen Pfaden, die durch Entfalten des LFSR 104 der Schaltung 100 erhalten wird. Wie in 3 gezeigt, weist die Schaltung 300 sechs Addierer 302a, 302b, 302c, 302d, 302e und 302f und drei Verzögerungseinrichtungen 304a, 304b und 304c auf. Die Schaltung 300 arbeitet ähnlich wie vorstehend in Bezug auf die Schaltung 200 beschrieben und generiert die Codeworte in zwei Zyklen. Infolge der weiteren Entfaltung ist die Einschwingzeit der Schaltung nun jedoch gleich der Einschwingzeit von vier Addierern 302 (d.h. 4TAddierer), was dem Zweifachen der Einschwingzeit der Schaltung 200 entspricht. Dies ist durch Kenntnisnahme der Tatsache ersichtlich, dass der Ausgang des Addierers 302c von den Ausgängen der Addierer 302a, 302f und 302e abhängig ist. Diese Beschränkung der herkömmlichen Entfaltung wird jedoch durch die vorliegende Erfindung überwunden, wie durch die Schaltungen gemäß 4 und 5 dargestellt.
  • 4 ist Blockdiagramm einer erfindungsgemäßen Schaltung 400, die durch Hinzufügen einer zusätzlichen Zeitverzögerung zur innersten geschachtelten Feedback-Schleife der Schaltung 100 erhalten wird. Das Hinzufügen einer oder mehrerer zusätzlicher Zeitverzögerungen zur innersten geschachtelten Feedback-Schleife einer Schaltung vor dem Entfalten ist eine erfindungsgemäße Technik. Diese erfindungsgemäße Technik ist nachfolgend genauer beschrieben. Das Hinzufügen einer oder mehrerer zusätzlicher Verzögerungen zur innersten geschachtelten Feedback-Schleife einer Schaltung vor dem Entfalten einer Schaltung ermöglicht es der vorliegenden Erfindung, die Beschränkungen hinsichtlich der erhöhten Schaltungseinschwingzeit zu überwinden, die mit herkömmlichen Entfaltungstechniken in Verbindung gebracht werden.
  • Die Schaltung 400 umfasst einen Schalter 402 und ein lineares Feedback-Schieberegister (LFSR) 404. Der Schalter 402 weist drei Ports (a, b und c) auf. Das LFSR 404 weist vier Verzögerungseinrichtungen 406a, 406b, 406c und 406d auf. Das LFSR 404 umfasst außerdem zwei Addierer 408a und 408b. Die innerste geschachtelte Feedback-Schleife des LFSR 404 wird durch den Addierer 408a, den Addierer 408b, die Verzögerungseinrichtungen 406c, 406b und 406a und die Leiterbahnen gebildet, die diese Einrichtungen miteinander verbinden.
  • Die Schaltung 400 arbeitet ähnlich wie vorstehend in Bezug auf Schaltung 100 beschrieben. Die Schaltung 400 kann durch ein Polynom P(x) = 1 + X + X4 dargestellt werden. P(x) weist zwei höherwertige Führende-Null-Terme auf (d.h. die Terme X2 und X3 sind gleich null).
  • Die Einschwingzeit der Schaltung 400 vor dem Entfalten entspricht der Einschwingzeit von zwei Addierern 408 (d.h. 2TAddierer). Dies ist durch Kenntnisnahme der Tatsache ersichtlich, dass der Ausgang des Addierers 408b vom Ausgang des Addierers 408a abhängig ist.
  • 5 ist ein Blockdiagramm einer erfindungsgemäßen Schaltung 500 mit drei parallelen Pfaden, die durch Entfalten des LFSR 404 der Schaltung 400 erhalten wird. Wie in 5 gezeigt, weist die Schaltung 500 sechs Addierer 502a, 502b, 502c, 502d, 502e und 502f und vier Verzögerungseinrichtungen 504a, 504b 504c und 504d auf.
  • Die Schaltung 500 ist der vorstehend beschriebenen Schaltung 300 ähnlich. Die Einschwingzeit der Schaltung 500 ist jedoch gleich der Einschwingzeit von zwei Addierern 502 (d.h. 2TAddierer), was der Einschwingzeit der Schaltung 400 entspricht. Somit überwindet die erfindungsgemäße Entfaltungstechnik, wie durch 5 gezeigt, die Beschränkungen von herkömmlichen Entfaltungstechniken.
  • Die erfindungsgemäße Entfaltungstechnik ist nicht auf die hierin dargestellten beispielhaften Schaltungen beschränkt. Es können beispielsweise zwei zusätzliche Zeitverzögerungen zur innersten geschachtelten Feedback-Schleife des LFSR 104 hinzugefügt werden, so dass jede Verzögerungseinrichtung 106a und 106b effektiv eine 2T-Verzögerungseinrichtung ist. In diesem Fall würde, wenn das LFSR 104 entfaltet wird, um zwei parallele Pfade zu bilden, jede der Verzögerungseinrichtungen 204a und 204b in der Schaltung 200 zu einer 2T-Verzögerungseinrichtung. Bei den Ausführungsformen der Erfindung sind der innersten geschachtelten Feedback-Schleife des LFSR 104 zusätzliche Zeitverzögerungen hinzugefügt, um erfindungsgemäß eine weitere Entfaltung zuzulassen und dadurch die Rate zu erhöhen, mit der zyklische Codeworte generiert werden können.
  • Wie durch 6A, 6B und 7 gezeigt, werden die vorstehend beschriebenen erfindungsgemäßen Techniken dazu verwendet, Codierer zum Generieren zyklischer Codes zu bilden, die dazu imstande sind, mit hohen Datenraten zu arbeiten.
  • 6A ist ein Blockdiagramm eines beispielhaften erfindungsgemäßen Codierers 600 zum Generieren der Codeworte eines (7, 4)-CRC-Codes. Der Codierer 600 umfasst eine erste Transformationsschaltung 602, ein LFSR 604, eine zweite Tnansformationsschaltung 606 (die eine weitere LFSR-Schaltung ist) und einen Schalter 608. Der Codierer 600 unterscheidet sich dahingehend von der Schaltung 100, dass er zusätzlich zum LFSR 604 zwei Tnansformationsschaltungen umfasst, wobei das LFSR 604 ein anderes Generator-Polynom implementiert als das LFSR 104. Wie vorstehend beschrieben, implementiert das LFSR 104 das Genenator-Polynom G(x), das gleich (1 + X + X3) ist. Das LFSR 604 implementiert jedoch das Generator-Polynom G2(x), das gleich (1 + X + X2 + X5) ist. G2(x) weist zwei höherwertige Führende-Null-Terme auf (d.h. die Terme X3 und X4 sind gleich null). Das Generator-Polynom G2(x) wird durch Multiplizieren des Generator-Polynoms G(x), das gleich (1 + X + X3) ist, mit dem Polynom G1(x), das gleich (1 + X2) ist, erhalten.
  • Wie ein Fachmann auf den relevanten Gebieten anhand der hierin vorgesehenen Beschreibung erkennen wird, addiert die Transformationsschaltung 602 unter Verwendung der Modulo-2-Addition die Bits eines digitalen Eingangssignals U(x) zu einer Kopie des digitalen Eingangssignals U(x), das durch zwei Zeitverzögerungen verzögert wird. Dies entspricht dem Multiplizieren der Bits des digitalen Eingangssignals U(x) mit dem Polynom G1(x), das gleich (1 + X2) ist, und sieht zwei Look-Ahead-Grade vor. Die Transformationsschaltung 602 umfasst einen Addierer 612a und zwei Verzögerungseinrichtungen 610a und 610b.
  • Die Einrichtungen des LFSR 604 arbeiten ähnlich wie die vorstehend in Bezug auf das LFSR 104 beschriebenen Einrichtungen. Das LFSR 604 implementiert eine Divisionsoperation und generiert Restbits R1(x) am Ausgang der Verzögerungseinrichtung 610c. Diese Restbits werden dazu verwendet, einen (7, 4)-CRC-Code zu bilden. Das LFSR 604 umfasst, zusätzlich zur Verzögerungseinrichtung 610c, die Verzögerungseinrichtungen 601d, 610e, 610f und 610g sowie drei Addierer 612b, 612c und 612d. Das LFSR 604 dividiert die Bits des Informationssignals U(x) durch G2(x), wobei G2(x) gleich G(x)G1(x) ist. Bei den Ausführungsformen der Erfindung wird das LFSR 604 erfindungsgemäß entfaltet, um drei parallele Verarbeitungswege zu bilden und dadurch die Rate zu erhöhen, mit der der Codierer 600 Daten verarbeitet.
  • Die Transformationsschaltung 606 transformiert die durch das LFSR 604 generierten Restbits in die durch die Schaltung 100 generierten (7, 4)-CRC-Codeworte. Die Transformationsschaltung 606 addiert das am Ausgang der Verzögerungseinrichtung 610c generiere Ausgangssignal zu einer verzögerten Kopie dieses Ausgangssignals. Die verzögerte Kopie des Ausgangssignals wird durch zwei Zeitverzögerungen verzögert. Die Transformationsschaltung 606 entspricht dem Berechnen des Quotienten, der durch Dividieren der durch das LFSR 604 generierten Restbits durch das Polynom G1(x) erhalten wird, welches gleich (1 + X2) ist.
  • Der Schalter 608 arbeitet ähnlich wie der Schalter 102 der Schaltung 100. Der Schalter 608 kann ein beliebiger herkömmlicher elektronischer Schalter sein, wie z.B. eine beliebige herkömmliche Art von Feldeffekttransistor (FET).
  • 6B ist ein Blockdiagramm einer beispielhaften erfindungsgemäßen Schaltung 650 mit drei parallelen Pfaden. Die Schaltung 650 wird durch Entfalten der Schaltung 600 um einen Faktor von drei erhalten.
  • Wie in 6B gezeigt, wurden die erste Transformationsschaltung 602, das LFSR 604 und die zweite Transformationsschaltung 606 (welche eine weitere LFSR-Schaltung ist) jeweils erfindungsgemäß entfaltet. Die entfaltete erste Transformationsschaltung 602 umfasst zwei Verzögerungseinrichtungen 610 und drei Addierer 612. Das entfaltete LFSR 604 umfasst fünf Verzögerungseinrichtungen 610 und neun Addierer 612. Die entfaltete zweite Transformationsschaltung 606 umfasst zwei Verzögerungseinrichtungen 610 und drei Addierer 612.
  • 7 zeigt eine vereinfachte schematische Darstellung eines zweiten erfindungsgemäßen Codierers 700 zum Generieren eines zyklischen Codes. Der Codierer 700 umfasst eine Transformationsschaltung 702, ein erstes LFSR 704, ein zweites LFSR 706 und zwei Modulo-2-Addierer 708a und 708b. Der Zweck der Transformationsschaltung 702 besteht darin, die Bits eines Informationssignals U(x) in die Bits eines transformierten Informationssignals T(x) zu transformieren. Das LFSR 704 implementiert ein Generator-Polynom G2(x), das durch Multiplizieren eines herkömmlichen Generator-Polynoms G(x) gebildet wird, um mittels eins Polynoms G1(x) einen spezifischen zyklischen Code zu implementieren. Wie hierin beschrieben, wird das Polynom G1(x) gewählt, um die Anzahl der in der innersten geschachtelten Feedback-Schleife des LFSR 704 ausgebildeten Verzögerungen zu erhöhen. Wie vorstehend beschrieben, kann das LFSR 704 erfindungsgemäß entfaltet/umgestaltet werden, um eine Erhöhung der Einschwingzeit (Schleifenbegrenzung) der entfalteten/umgestalteten Schaltung zu vermeiden. Das LFSR 706 implementiert ein Polynom mit kleinem Grad, das zum Transformieren der durch das LFSR 704 generierten Restbits (Codeworte) in die Codeworte eines gewünschten zyklischen Codes verwendet wird (d.h. die Codeworte, die typischerweise durch das spezifische Generator-Polynom G(x) generiert werden würden, das mit dem Polynom G1(x) multipliziert wurde). Aus der hierin angegebenen Beschreibung der Erfindung geht für Fachleute auf den relevanten Gebieten hervor, wie der Codierer 700 zu implementieren ist.
  • 8 ist ein Blockdiagramm eines zweiten Beispiels einer LFSR-Schaltung 800 zum Generieren eines zyklischen Codes. Diese Schaltung lässt sich durch Retiming von einer der Schaltung 100 (siehe 1) ähnlichen Schaltung ableiten. Die Schaltung 800 wird zum Generieren der Codeworte eines BCH-Codes verwendet. Wie nachfolgend beschrieben ist der Betrieb der Schaltung 800 dem Betrieb der Schaltung 100 ähnlich.
  • 8 ist als eine zweite beispielhafte Schaltung vorgesehen, die als Basis für die Herstellung eines erfindungsgemäßen Codierers dienen kann. Es können auch andere Schaltungen zum Generieren zyklischer Codes als Basis für die Herstellung eines erfindungsgemäßen Codierers dienen, was für Fachleute auf den relevanten Gebieten angesichts der hierin angegebenen Beschreibung ersichtlich sein dürfte.
  • Wie in 8 gezeigt, umfasst die Schaltung 800 drei Schalter 802a, 802b und 802c und ein LFSR 804. Das LFSR 804 umfasst mehrere Verzögerungseinrichtungen 806 und mehrere Addierer 808. Der Schalter 802a weist zwei Ports (a und b) auf. Die Schalter 802b und 802c haben drei Ports (a, b und c). Die Schalter 802 können beliebige herkömmliche elektronische Schalter sein, wie z.B. eine beliebige herkömmliche Art von Feldeffekttransistor (FET). Die Verzögerungseinrichtungen 806 können eine beliebige herkömmliche Art von Verzögerungseinrichtung sein, wie z.B. D-Flipflops. In ähnlicher Weise können die Addierer 808 eine beliebige herkömmliche Art von Modulo-2-Addiererschaltung sein. Wie aus 8 ersichtlich, weist das LFSR 804 mehrere geschachtelte Feedback-Schleifen auf. Die Verzögerungseinrichtung 806a bildet einen Teil aller geschachtelten Feedback-Schleifen des LFSR 804.
  • Ähnlich wie die Schaltung 100 besitzt die Schaltung 800 zwei Betriebsarten. Bei einer ersten Betriebsart wird ein BCH-Codewort durch das LFSR 804 generiert. Bei einer zweiten Betriebsart wird das generierte BCH-Codewort aus dem LFSR 804 verschoben.
  • Bei der ersten Betriebsart der Schaltung 800 sind die a-Ports der Schalter 802a, 802b und 802c elektrisch mit den b-Ports verbunden. Wie hierin verwendet, sind zwei Einrichtungen oder Knoten einer Schaltung elektrisch miteinander verbunden, wenn ein Signal an einer Einrichtung oder einem Knoten der Schaltung an einer anderen Einrichtung oder einem anderen Knoten der Schaltung erfasst werden kann. Das erfasste Signal kann beispielsweise gespeichert, gefiltert und/oder verstärkt werden, bevor es an einer anderen Einrichtung oder einem anderen Knoten der Schaltung erfasst wird. Bei dieser ersten Betriebsart werden die Bits eines digitalen Informationssignals in den a-Port des Schalters 802a eingegeben. Während jedes Taktzyklus der Schaltung 800 wird ein Bit des digitalen Informationssignals am b-Port des Schalters 802b ausgegeben. Dasselbe Bit wird auch dem Addierer 808a zugeführt. Das dem Addierer 808a zugeführte Bit wird zu einem Ausgang der Verzögerungseinrichtung 806a addiert, um ein resultierendes Bit zu bilden. Dieses resultierende Bit wird dann einem jeden der anderen Addierer 808 (z.B. den Addierern 808b, 808c und 808d) des LFSR 804 und der Verzögerungseinrichtung 806d des LFSR 804 als Eingang zugeführt. Für einen Fachmann auf den relevanten Gebieten wäre angesichts der hierin angegebenen Beschreibung ersichtlich, wie die LFSR-Schleife 804 arbeitet, um anhand einer Gruppe von Informationssignalbits ein BCH-Codewort zu generieren. Die Bits des generierten Codeworts sind die Ausgänge einer jeden der Verzögerungseinrichtungen 806.
  • Bei der zweiten Betriebsart der Schaltung 800 sind die a-Ports der Schalter 802a, 802b und 802c nicht elektrisch mit den b-Ports verbunden. Bei dieser zweiten Betriebsart ist der c-Port des Schalters 802b elektrisch mit dem b-Port des Schalters 802b verbunden. Da der a-Port des Schalters 802c nicht elektrisch mit dem b-Port verbunden ist, wird der Ausgang des Addierers 808a nicht zu einem der Addierer 808 oder einer der Verzögerungseinrichtungen 806 des LFSR 804 zurückgeführt. Bei dieser zweiten Betriebsart wird während jedes Taktzyklus der Schaltung 800 ein Bit des generierten Codeworts am b-Port des Schalters 802b ausgegeben. Durch Umschalten zwischen den zwei Betriebsarten generiert die Schaltung 800 Codeworte und hängt diese Codeworte an Bitgruppen eines Informationssignals an.
  • Wie hierin beschrieben kann die Erfindung auf die Schaltung 800 angewandt werden, um ähnlich wie vorstehend in Bezug auf die Schaltung 100 beschrieben einen BCH-Codierer zu bilden. Ein Fachmann auf den relevanten Gebieten wird angesichts der hierin angegebenen Beschreibung dazu in der Lage sein, die Erfindung auf die Schaltung 800 anzuwenden, um einen erfindungsgemäßen BCH-Codierer herzustellen und zu verwenden. Bei einer Ausführungsform hat ein erfindungsgemäßer BCH-Codierer die Form des vorstehend beschriebenen Codierers 700.
  • 9 und 10 zeigen, wie die Erfindung auf Retimed-Schaltungen anzuwenden ist. 9 zeigt eine beispielhafte Ausführungsform einer LFSR-Schaltung 900, die der Schaltung 400 gemäß 4 entspricht. Die Schaltung 900 wird durch Durchführen eines Retiming-Verfahrens an der Schaltung 400 erhalten. 10 zeigt eine beispielhafte erfindungsgemäße Schaltung 1000. Die erfindungsgemäße Schaltung 1000 wird durch Entfalten der Schaltung 900 um einen Faktor von drei erhalten. Die Schaltung 1000 zeigt, wie die Erfindung auf Retimed-Schaltungen, wie z.B. die in 1 und 4 gezeigten CRC-Schaltungen, anzuwenden ist.
  • Beispielhaftes erfindungsgemäßes Verfahren zum Generieren zyklischer Codes In diesem Abschnitt wird ein beispielhaftes erfindungsgemäßes Verfahren zum Generieren zyklischer Codes beschrieben. Dieses Verfahren kann unter Verwendung der vorstehend beschriebenen erfindungsgemäßen Techniken und Schaltungsausführungsformen implementiert werden. Das beispielhafte Verfahren ist jedoch nicht darauf beschränkt, nur unter Verwendung der hierin beschriebenen Schaltungen ausgeführt zu werden.
  • 11 ist ein Flussdiagramm der Schritte eines Verfahrens 1100 zum Generieren zyklischer Codes zur Fehlerkontrolle bei digitalen Datenübertragungen. Bei dem Beispiel gemäß 11 umfasst das Verfahren 1100 vier Schritte 1102, 1104, 1106 und 1108. Das Verfahren 1100 beginnt mit Schritt 1102.
  • In Schritt 1102 wird ein K-Bit-Informationssignal empfangen. Dieses Informationssignal wird durch ein Polynom U(x) mit einem Grad K – 1 repräsentiert.
  • In Schritt 1104 wird das Informationssignal U(x) transformiert, um ein transformiertes Informationssignal zu bilden. Das Informationssignal U(x) wird unter Verwendung einer ersten Transformierten transformiert, die durch ein Polynom G1(x) mit einem Grad P repräsentiert wird. P ist größer als null. Das transformierte Informationssignal wird durch ein Polynom T(x) mit einem Grad K + P – 1 repräsentiert. T(x) ist gleich U(x)G1(x).
  • Bei einer Ausführungsform umfasst der Schritt 1104 das Addieren des Informationssignals U(x) unter Verwendung der Modulo-2-Addition zu wenigstens einer zeitverschobenen Kopie des Informationssignals, um das transformierte Informationssignal T(x) zu bilden.
  • Bei einer Ausführungsform kann der Schritt 1104 beispielsweise unter Verwendung der Transformationsschaltung 702 der Schaltung 700 implementiert werden.
  • In Schritt 1106 wird ein ursprünglicher zyklischer Code für das transformierte Informationssignal T(x) unter Verwendung einer zweiten Transformierten generiert, die durch ein Polynom G2(x) repräsentiert wird. Dieser ursprüngliche zyklische Code wird durch ein Polynom R1(x) repräsentiert. G2(x) weist höherwertige Führende-Null-Terme auf. R1(x) ist gleich dem Rest, der durch Dividieren von T(x) durch G2(x) erhalten wird.
  • Bei einer Ausführungsform werden die K Bits des Informationssignals U(x) in wenigstens zwei Bitteilsätze aufgeteilt. Diese wenigstens zwei Bitteilsätze werden parallel verarbeitet, um den ursprünglichen zyklischen Code R1(x) zu generieren.
  • Bei einer Ausführungsform kann der Schritt 1106 beispielsweise unter Verwendung des LFSR 704 der Schaltung 700 implementiert werden. Wie hierin beschrieben, wird die Schaltung 700 bei den Ausführungsformen erfindungsgemäß entfaltet, um die Rate zu erhöhen, mit der Daten verarbeitet werden.
  • In Schritt 1108 wird der ursprüngliche zyklische Code R1(x) transformiert, um einen endgültigen zyklischen Code zu bilden, der durch ein Polynom R2(x) repräsentiert wird. Der ursprüngliche zyklische Code R1(x) wird unter Verwendung der ersten Transformierten G1(x) transformiert. R2(x) ist gleich R1(x)/G1(x).
  • Bei einer Ausführungsform ist der gebildete endgültige zyklische Code ein zyklischer Redundanzprüfungscode. Bei einer anderen Ausführungsform ist der gebildete endgültige zyklische Code ein Bose-Chaudhuri-Hocquenghem-Code. Bei einer weiteren Ausführungsform ist der gebildete endgültige zyklische Code ein Reed-Solomon-Code. Andere zyklische Codes sind erfindungsgemäß ebenfalls möglich.
  • Bei einer Ausführungsform kann der Schritt 1108 beispielsweise unter Verwendung des LFSR 706 der Schaltung 700 implementiert werden.
  • Angesichts der hierin angegebenen Beschreibung wird ein Fachmann auf den relevanten Gebieten verstehen, wie jeder der Schritte des Verfahrens 1100 auszuführen ist, um einen gewünschten zyklischen Code zu generieren, der dazu in der Lage ist, als Teil eines digitalen Hochgeschwindigkeitsdatenübertragungssystem zu arbeiten.
  • Schlusswort
  • Vorstehend wurden verschiedene Ausführungsformen der vorliegenden Erfindung beschrieben. Es versteht sich, dass diese Ausführungsformen rein beispielhaft angegeben wurden und keine Einschränkung darstellen. Daher sollen die Breite und der Schutzumfang der vorliegenden Erfindung nicht durch eine der vorstehend beschriebenen beispielhaften Ausführungsformen eingeschränkt werden, sondern vielmehr nur gemäß den folgenden Ansprüchen und ihren Entsprechungen definiert werden.

Claims (10)

  1. System zum Generieren zyklischer Codes zur Fehlerkontrolle bei digitalen Datenübertragungen mit: einer Einrichtung (600, 700) zum Empfangen eines K-Bit-Informationssignals, das durch ein Polynom U(x) mit einem Grad K – 1 repräsentiert wird, einer Einrichtung (602, 702) zum Transformieren des Informationssignals, um ein transformiertes Informationssignal zu bilden, unter Verwendung einer ersten Transformierten, die durch ein Polynom G1(x) mit einem Grad P repräsentiert wird, wobei P größer als null ist und wobei das transformierte Informationssignal durch ein Polynom T(x) mit einem Grad K + P – 1 repräsentiert wird und T(x) gleich U(x) G1(x) ist, einer Einrichtung (604, 704) zum Generieren eines ursprünglichen zyklischen Codes, der durch ein Polynom R1(x) repräsentiert wird, für das transformierte Informationssignal unter Verwendung einer zweiten Transformierten, die durch ein Polynom G2(x) repräsentiert wird, wobei R1(x) gleich einem Rest ist, der durch Dividieren von T(x) durch G2(x) erhalten wird, und wobei G2(x) durch Multiplizieren eines Generator-Polynoms G(x) mit dem Polynom G1(x) erhalten wird, wobei G(x) das Generator-Polynom eines endgültigen zyklischen Codes ist, und einer Einrichtung (606, 706) zum Transformieren des ursprünglichen zyklischen Codes, um den endgültigen zyklischen Code zu bilden, der durch ein Polynom R2(x) repräsentiert wird, unter Verwendung der ersten Transformierten, wobei R2(x) gleich R1(x)/G1(x) ist.
  2. System nach Anspruch 1, wobei die Einrichtung (602, 702) zum Transformieren des Informationssignals, um das transformierte Informationssignal zu bilden, Einrichtungen (612a, 612b) zum Hinzufügen des Informationssignals zu wenigstens einer zeitverschobenen Kopie des Informationssignals umfasst.
  3. System nach Anspruch 1, wobei die Einrichtung (604, 704) zum Generieren des ursprünglichen zyklischen Codes ein lineares Feedback-Schieberegister umfasst.
  4. System nach Anspruch 1, wobei die Einrichtung (606, 706) zum Transformieren des ursprünglichen zyklischen Codes ein lineares Feedback-Schieberegister umfasst.
  5. System nach Anspruch 1, das ferner umfasst: eine Einrichtung zum parallelen Verarbeiten der K Bits des Informationssignals, um den ursprünglichen zyklischen Code zu generieren.
  6. System nach Anspruch 1, wobei der endgültige zyklische Code ein zyklischer Redundanzprüfungscode oder ein Bose-Chaudhuri-Hocquenghem-Code oder ein Reed-Solomon-Code ist.
  7. Verfahren zum Generieren zyklischer Codes zur Fehlerkontrolle bei digitalen Datenübertragungen, das umfasst: 1102) Empfangen eines K-Bit-Informationssignals, das durch ein Polynom U(x) mit einem Grad K – 1 repräsentiert wird, 1104) Transformieren des Informationssignals, um ein transformiertes Informationssignal zu bilden, unter Verwendung einer ersten Transformieren, die durch ein Polynom G1(x) mit einem Grad P repräsentiert wird, wobei P größer als null ist und wobei das transformierte Informationssignal durch ein Polynom T(x) mit einem Grad K + P – 1 repräsentiert wird und T(x) gleich U(x) G1(x) ist, 1106) Generieren eines ursprünglichen zyklischen Codes, der durch ein Polynom R1(x) repräsentiert wird, für das transformierte Informationssignal unter Verwendung einer zweiten Transformierten, die durch ein Polynom G2(x) repräsentiert wird, wobei R1(x) gleich einem Rest ist, der durch Dividieren von T(x) durch G2(x) erhalten wird, und wobei G2(x) durch Multiplizieren eines Generator-Polynoms G(x) mit dem Polynom G1(x) erhalten wird, wobei G(x) das Generator-Polynom eines endgültigen zyklischen Codes ist, und 1108) Transformieren des ursprünglichen zyklischen Codes, um den endgültigen zyklischen Code zu bilden, der durch ein Polynom R2(x) repräsentiert wird, unter Verwendung der ersten Transformierten, wobei R2(x) gleich R1(x)/G1(x) ist.
  8. Verfahren nach Anspruch 7, wobei der Schritt 1104) umfasst: Hinzufügen des Informationssignals zu wenigstens einer zeitverschobenen Kopie des Informationssignals, um das transformierte Informationssignal zu bilden.
  9. Verfahren nach Anspruch 7, wobei der Schritt 1106) umfasst: Dividieren der K Bits des Informationssignals in wenigstens zwei Teilmengen an Bits, und paralleles Verarbeiten der wenigstens zwei Teilmengen an Bits, um den ursprünglichen zyklischen Code zu generieren.
  10. Verfahren nach Anspruch 7, wobei der Schritt 1108) umfasst: Bilden eines zyklischen Redundanzprüfungscodes oder eines Bose-Chaudhuri-Hocquenghem-Codes oder eines Reed-Solomon-Codes.
DE60306709T 2002-04-09 2003-04-07 Vorrichtung und Verfahren zur Erzeugung von zyklischen Codes für die Fehlerkorrektur in digitaler Kommunikation Expired - Lifetime DE60306709T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US118038 2002-04-09
US10/118,038 US6895545B2 (en) 2002-01-28 2002-04-09 System and method for generating cyclic codes for error control in digital communications

Publications (2)

Publication Number Publication Date
DE60306709D1 DE60306709D1 (de) 2006-08-24
DE60306709T2 true DE60306709T2 (de) 2007-08-02

Family

ID=28453960

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60306709T Expired - Lifetime DE60306709T2 (de) 2002-04-09 2003-04-07 Vorrichtung und Verfahren zur Erzeugung von zyklischen Codes für die Fehlerkorrektur in digitaler Kommunikation

Country Status (3)

Country Link
US (2) US6895545B2 (de)
EP (1) EP1353446B1 (de)
DE (1) DE60306709T2 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7082563B2 (en) * 2003-01-31 2006-07-25 Italtel S.P.A. Automated method for generating the cyclic redundancy check for transmission of multi-protocol packets
EP1612950A1 (de) * 2004-06-30 2006-01-04 STMicroelectronics S.r.l. Verfahren und System zur Korrektur von Fehlern während des Schreiben und Lesens eines nichtflüchtigen Speichers
US8036380B2 (en) * 2006-12-14 2011-10-11 Telefonaktiebolaget L M Ericsson (Publ) Efficient data integrity protection
US8386878B2 (en) 2007-07-12 2013-02-26 Samsung Electronics Co., Ltd. Methods and apparatus to compute CRC for multiple code blocks
US8464141B2 (en) * 2008-08-13 2013-06-11 Infineon Technologies Ag Programmable error correction capability for BCH codes
US8161434B2 (en) * 2009-03-06 2012-04-17 Synopsys, Inc. Statistical formal activity analysis with consideration of temporal and spatial correlations
US8949703B2 (en) * 2012-03-26 2015-02-03 Xilinx, Inc. Parallel encoding for non-binary linear block code
US11458909B2 (en) 2020-02-06 2022-10-04 Rosemount Aerospace Inc. Adapter clip
TWI776483B (zh) * 2021-04-26 2022-09-01 義守大學 循環碼之編碼與解碼方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3703705A (en) * 1970-12-31 1972-11-21 Ibm Multi-channel shift register
US5383204A (en) * 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
WO1998007238A1 (en) 1996-08-15 1998-02-19 Quantum Corporation Parallel input ecc encoder and associated method of remainder computation
US5862159A (en) * 1996-09-11 1999-01-19 Texas Instruments Incorporated Parallelized cyclical redundancy check method
US6519738B1 (en) * 2000-03-07 2003-02-11 International Business Machines Corporation Method and apparatus for high-speed CRC computation based on state-variable transformation
US6934730B2 (en) * 2000-10-13 2005-08-23 Xpriori, Llc Method and system for generating a transform
AU2003245898A1 (en) * 2003-05-28 2005-01-21 Telefonaktiebolaget L M Ericsson (Publ) Parallel encoding of cyclic codes

Also Published As

Publication number Publication date
EP1353446A2 (de) 2003-10-15
US20030154436A1 (en) 2003-08-14
US20050166122A1 (en) 2005-07-28
DE60306709D1 (de) 2006-08-24
US7539918B2 (en) 2009-05-26
US6895545B2 (en) 2005-05-17
EP1353446A3 (de) 2004-03-17
EP1353446B1 (de) 2006-07-12

Similar Documents

Publication Publication Date Title
DE602004001048T2 (de) Iterative schaltung und verfahren zur berechnung der parallel-crc (cyclic redundancy check) mit variabler breite
DE102006038020B4 (de) Sigma-Delta Modulator
DE2657826A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage
DE60117831T2 (de) Modul zur erzeugung von decoderschaltungen für faltungscodes, zugehöriges verfahren und schaltung
DE102009036946A1 (de) Programmierbare Fehlerkorrekturfähigkeit für BCH-Codes
DE19509728A1 (de) Fehlerkorrigierender Codierer, fehlerkorrigierender Decodierer und Datenübertragungssystem mit fehlerkorrigierenden Codes
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
EP0306713B1 (de) Verfahren und Anordnung zur Aufbereitung von Daten
DE60306709T2 (de) Vorrichtung und Verfahren zur Erzeugung von zyklischen Codes für die Fehlerkorrektur in digitaler Kommunikation
DE69936316T2 (de) Faltungskodierungsverfahren und vorrichtung in einem digitalen system
DE69728255T2 (de) Datenübertragungsverfahren und vorrichtung zur kodierung eines signals
DE10105626B4 (de) Verfahren und System zur Berechnung von zyklischem Blockprüfungscode und Verfahren zum Erkennen eines Fehlers
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE102014215252A1 (de) Wirksame fehlerkorrektur von mehrbitfehlern
DE60211055T2 (de) Vorrichtung und Methode zum Kodieren und Dekodieren von Kanälen in einem Mobilkommunikationssystem
DE10024444A1 (de) Vorrichtung und Verfahren zur arithmetischen Codierung/Decodierung und computerlesbares Aufzeichnungsmedium
DE69908629T2 (de) Hybrid verschachteler für turbo-kodierer
DE60301420T2 (de) Prüfer für verteilte 4-bits diagonal verschachtelte Parität (DIP4)
DE19963687A1 (de) Modulations-Codierer und -Decodierer
EP1430614B1 (de) Verfahren und vorrichtung zur bestimmung von initialisierungszuständen bei pseudo-noise-folgen
DE3702697A1 (de) Paritaetserzeugungsschaltung
DE3104762C2 (de)
DE60118716T2 (de) Log-MAP Dekodierung
DE4333382A1 (de) Verfahren und Vorrichtung zum Bilden des Reziproken eines beliebigen Elementes in einem finiten Feld

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M