-
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.
-
-
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.
-
-
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.