PatentDe  


Dokumentenidentifikation DE102009044555A1 20.05.2010
Titel Verfahren und Vorrichtung zum Durchführen einer CRC-Prüfung
Anmelder Infineon Technologies AG, 85579 Neubiberg, DE
Erfinder Wang, Xiao-an, Allentown, US;
Berkmann, Jens, 81375 München, DE
Vertreter Patentanwälte Lambsdorff & Lange, 81673 München
DE-Anmeldedatum 16.11.2009
DE-Aktenzeichen 102009044555
Offenlegungstag 20.05.2010
Veröffentlichungstag im Patentblatt 20.05.2010
IPC-Hauptklasse H03M 13/09  (2006.01)  A,  F,  I,  20091116,  B,  H,  DE
Zusammenfassung Es wird eine Vorrichtung beschrieben, die eine Divisionseinheit (10), die dafür ausgelegt ist, einen Datenstrom (20) zu empfangen und den empfangenen Datenstrom (20) in mehrere Datensegmente aufzuteilen, und mehrere erste CRC-Prüfeinheiten (11) enthält, wobei jede der ersten CRC-Einheiten (11) dafür ausgelegt ist, eine CRC-Prüfung eines jeweiligen der mehreren Segmente von Daten durchzuführen, und wobei die mehreren CRC-Prüfungen gleichzeitig durchgeführt werden.

Beschreibung[de]

Die vorliegende Erfindung betrifft eine Vorrichtung und ein Verfahren zum Durchführen einer CRC-Prüfung (Cyclic Redundancy Code Check, zyklische Redundanzprüfung).

Eine CRC-Prüfung kann zum Beispiel verwendet werden, um eine unbeabsichtigte Veränderung von Daten bei einer Übertragung oder Speicherung zu detektieren.

Der vorliegenden Erfindung liegt die Aufgabe zugrunde, Vorrichtungen und Verfahren anzugeben, mit der sich eine derartige CRC-Prüfung in vorteilhafter Weise durchführen lässt.

Die der Erfindung zugrunde liegende Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.

Die beigefügten Zeichnungen sind vorgesehen, um ein weiteres Verständnis von Ausführungsformen zu gewährleisten. Die Zeichnungen zeigen Ausführungsformen und dienen zusammen mit der Beschreibung zur Erläuterung von Prinzipien der Ausführungsformen. Andere Ausführungsformen und viele der beabsichtigten Vorteile von Ausführungsformen werden ohne weiteres ersichtlich, wenn sie durch Bezugnahme auf die folgende ausführliche Beschreibung besser verständlich werden. Die Elemente der Zeichnungen sind nicht unbedingt maßstabsgetreu zueinander. Gleiche Bezugszahlen kennzeichnen einander entsprechende ähnliche Teile.

1 zeigt schematisch eine CRC-Prüfvorrichtung mit mehreren CRC-Prüfeinheiten.

2A bis 2C zeigen schematisch Ausführungsformen von CRC-Prüfvorrichtungen, die mehrere CRC-Prüfeinheiten und eine Einheit zum Kombinieren der Ausgaben der mehreren CRC-Prüfeinheiten enthalten.

3A und 3B zeigen schematisch Ausführungsformen von CRC-Prüfeinheiten.

4A bis 4C zeigen schematisch Ausführungsformen von CRC-Prüfvorrichtungen, die mehrere CRC-Prüfeinheiten und eine Einheit zum Kombinieren der Ausgaben der mehreren CRC-Prüfeinheiten enthalten.

5 zeigt schematisch eine Ausführungsform eines Verfahrens zum Durchführen einer CRC-Prüfung.

6 zeigt schematisch einen Datenrahmen mit CRC-Prüfdaten gemäß dem LTE-Standard.

In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, in denen zur Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Erfindung ausgeübt werden kann. In dieser Hinsicht wird Richtungsterminologie wie etwa „oben”, „unten”, „vorne”, „hinten”, „vorderes”, „hinteres” usw. mit Bezug auf die Orientierung der beschriebenen Figur(en) verwendet. Da Komponenten der Ausführungsformen in mehreren verschiedenen Orientierungen angeordnet werden können, dient die Richtungsterminologie zur Veranschaulichung und ist auf keinerlei Weise einschränkend. Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Die folgende ausführliche Beschreibung ist deshalb nicht in einschränkendem Sinne aufzufassen.

Es versteht sich, dass die Merkmale der verschiedenen hier beschriebenen beispielhaften Ausführungsformen miteinander kombiniert werden können, sofern dies nicht spezifisch anders erwähnt wird.

In der vorliegenden Beschreibung soll der Gebrauch der Begriffe „gekoppelt” und/oder „elektrisch gekoppelt” nicht bedeuten, dass die Elemente direkt gekoppelt sein müssen, sondern dass auch dazwischenliegende Elemente zwischen den „gekoppelten” oder „elektrisch gekoppelten” Elementen vorgesehen sein können.

Im Folgenden werden Vorrichtungen zum Durchführen von CRC-Prüfungen (Cyclic Redundancy Code Check, zyklische Redundanzprüfung) beschrieben. Diese Vorrichtungen können einen Datenstrom empfangen. Der Datenstrom kann in Form von einzelnen Datensymbolen oder in Form von Blöcken von Daten oder Datenpaketen wie Datenrahmen, Datenwörtern, Codeblöcken, Transportblöcken usw. empfangen werden. Der Datenstrom kann zum Beispiel mit einer konstanten oder mit einer zeitlich veränderlichen Taktrate empfangen werden. Die empfangenen Daten können aus Blöcken einer gegebenen Länge bestehen oder als solche betrachtet werden oder in solche unterteilt bzw. aufgeteilt werden. Zum Beispiel kann der empfangene Datenstrom Symbole enthalten, die angeben, wo ein Block beginnt, wo ein Block endet oder welche Länge ein Block aufweist. Die Blocklänge kann auch bekannt oder a priori gewählt sein. Im Folgenden wird ein Datenstrom betrachtet, der aus einer gegebenen Anzahl I von Daten besteht.

Die empfangenen Daten können digitale Werte, z. B. Binärwerte, enthalten. Zum leichteren Verständnis beschreibt die vorliegende Beschreibung nur den Fall von Binärwerten, obwohl die vorliegende Erfindung nicht auf Binärwerte beschränkt ist.

Fachleute werden die vorliegende Erfindung ohne Probleme unter Verwendung anderer Zahlenschemata, wie zum Beispiel ternärer oder oktaler Zahlenschemata, ausführen können. Die Beschreibung unter Verwendung von Binärwerten soll also den Schutzumfang der Erfindung nicht beschränken, sondern wird lediglich zum Zwecke einer einfacheren und klareren Darstellung gewählt.

Der empfangene Datenstrom oder ein Paket empfangener Daten oder ein beliebiges anderes Paket von Daten, die in der vorliegenden Beschreibung erwähnt werden, können als Polynom betrachtet werden, d. h. die Werte des Datenpakets können als Koeffizienten verschiedener Potenzen einer Variablen betrachtet werden. Zum Beispiel kann ein Datenstrom mit 8 Bit an Daten, wie zum Beispiel 10110001 mit Datenbits di (i = 1, 2, ..., 8) als ein Polynom

angesehen werden.

Das Bit, welches der höchsten Potenz des Polynoms entspricht, kann entweder das erste Bit oder das letzte Bit sein, wobei sich die Wahl nach der Implementierung der Vorrichtung oder des Verfahrens richtet und jede dieser Optionen von der Erfindung umfasst sein soll.

Wenn das für die digitale Darstellung des empfangenen Datenstroms verwendete Zahlenschema nur eine begrenzte Anzahl von Elementen enthält, können die Zahlen als Elemente eines endlichen Felds, wie etwa des zweielementigen Galoisfelds GF(2) bei einem binären Zahlenschema, betrachtet werden. Endliche Felder können Definitionen für mathematische Operationen, wie etwa Addition, Subtraktion, Multiplikation oder Division, umfassen. Zum Beispiel wird die Additionsoperation des Felds GF(2) durch die Tabelle

gegeben und seine Multiplikationsoperation wird durch die Tabelle:

Die Divisions- und Subtraktionsoperation des Felds GF(2) werden durch dieselbe Tabelle wie die Additionsoperation gegeben.

Alle definierten Operationen können verwendet werden, um eine Kombination von Datenströmen oder Datenpaketen zu definieren. Zum Beispiel können Datenströme addiert, voneinander subtrahiert, multipliziert oder durcheinander dividiert werden. Wie oben erwähnt wurde, können Fachleute gemäß einer gewünschten Implementierung der Erfindung auch eine andere Zahlendarstellung und/oder ein anderes endliches Feld verwenden.

In GF(2) entsprechen die Operatoren Addition, Division und Subtraktion dem bitweisen Operator XOR, und die Multiplikationsoperation entspricht dem bitweisen Operator AND. Das heißt, dass diese Berechnungen auch in Hardware ausgeführt bzw. berechnet werden können, z. B. kann eine Multiplikation unter Verwendung von AND-Gattern berechnet werden, und eine Divisionsoperation kann unter Verwendung von XOR-Gattern berechnet werden. Dementsprechend können die Operationen unter Verwendung von Halbleiterchips ausgeführt werden.

Eine interessante Operation ist die Berechnung des Rests einer Division eines ersten Datenstroms oder Datenpakets, der bzw. das als ein erstes Polynom D(x) betrachtet wird, durch einen zweiten Datenstrom oder ein zweites Datenpaket, der bzw. das als ein zweites Polynom C(x) betrachtet wird, d. h. die Modulo-Berechnung

D(x) mod C(x).

Zum Beispiel kann eine CRC-Prüfung (Cyclic Redundancy Code) an einem empfangenen Datenstrom unter Verwendung einer Modulo-Operation durchgeführt werden. Das Ergebnis der Operation D(x) mod C(x) wird als der CRC-Prüfwert bezeichnet. Der CRC-Prüfwert kann zum Beispiel verwendet werden, um zu detektieren, ob ein Datenstrom oder Datenpaket korrekt empfangen wurde. Zu diesem Zweck kann der CRC-Prüfwert in einer Sendeeinrichtung an einen Datenstrom oder ein Datenpaket angehängt werden. In der Empfangseinrichtung wird der CRC-Prüfwert des empfangenen Datenstroms einschließlich des angehängten CRC-Prüfwerts berechnet und sollte 0 sein, wenn die Daten fehlerfrei empfangen wurden.

CRC-Prüfungen können auch in verschiedene andere Einrichtungen und elektrische Schaltungen integriert werden. CRC-Prüfungen können in vielen Kommunikationssystemen verwendet werden, zum Beispiel um eine zuverlässige Fehlerdetektion zu gewährleisten oder um den korrekten Empfang empfangener Daten zu prüfen. Die nachfolgend beschriebenen CRC-Prüfvorrichtungen oder -verfahren können immer dann verwendet werden, wenn CRC-Prüfwerte berechnet werden müssen, z. B. auf der Sendeseite und/oder der Empfangsseite oder in Kommunikationseinrichtungen, die auf Kommunikationsstandards wie etwa GSM (Global System for Mobile Communications), UMTS (Universal Mobile Telecommunications System), HSDPA (High-Speed Downlink Packet Access, HSUPA (High-Speed Uplink Packet Access), HSPA+ (Evolved High-Speed Packet Access) 42 Mbps, LTE (Long Term Evolution), LTE 300 Mbps, WIMAX (Worldwide Interoperability for Microwave Access), Bluetooth usw. basieren.

CRC-Prüfungen können auch mit Turbodecodierung kombiniert werden. Dies kann erfordern, dass ein CRC-Prüfwert in jedes Turbocodewort eingebettet wird. Die immer weiter zunehmenden Datenraten von Kommunikationsstandards können zu Turbo-Decodierungs-Vorrichtungen führen, die mehrere Bits pro Hardwarezyklus produzieren. Um den Latenzanforderungen des jeweiligen Standards zu genügen, kann es vorteilhaft sein, die Verarbeitungszeit der CRC-Prüfung so niedrig wie möglich zu halten.

Eine CRC-Prüfvorrichtung kann zum Beispiel signalabwärts eines Turbodecodierers angeordnet werden, um zu detektieren, ob die Ausgabe des Turbodecodierers ein ordnungsgemäß decodierter Datenstrom ist.

Eine CRC-Prüfvorrichtung kann auch in einem Turbodecodierer angeordnet werden. Ein Turbodecodierer kann zwei miteinander gekoppelte Decodierungseinheiten enthalten, wobei die erste Decodierungseinheit an Daten in normaler oder umgekehrter Reihenfolge arbeitet und die zweite Decodierungseinheit an Daten mit verwürfelter (gescrambelter) Reihenfolge arbeitet. Es wird erwartet, dass die Ausgaben der beiden Decodierungseinheiten in Richtung eines korrekt decodierten Datenpakets konvergieren. Zum Beispiel wird gemäß einem auf einem Vergleich basierenden Ansatz detektiert, ob die Ausgaben der beiden Decodierungseinheiten identisch sind, sodass geschlossen werden kann, ob das Datenpaket korrekt decodiert worden ist. Dieses Verfahren kann jedoch möglicherweise versagen, falls die Decodierung nicht weiter verbessert werden kann, obwohl das Codewort noch nicht korrekt decodiert worden ist. Als Alternative oder zusätzlich zu der Anordnung einer CRC-Prüfvorrichtung signalabwärts des Turbodecodierers kann eine CRC-Prüfvorrichtung zum Beispiel nach der ersten Decodierungseinheit angeordnet werden und kann zu einer frühen Beendigung des iterativen Turbodecodierungsprozesses verwendet werden. In diesem Fall kann die CRC-Prüfvorrichtung zum frühen Stoppen des iterativen Prozesses verwendet werden, z. B. wenn die CRC-Prüfung anzeigt, dass der Datenstrom ohne jeglichen Fehler decodiert worden ist. Ein solcher CRC-unterstützter Turbodecodierer kann eine Iteration weniger als ein herkömmlicher Turbodecodierer erfordern und kann somit den Strom- bzw. Energieverbrauch und die Verarbeitungszeit reduzieren. Eine CRC-Prüfvorrichtung kann auch nach dem zweiten Decodierer angeordnet werden, um unnötige Ausführungszeit und Energie zu sparen, muss aber möglicherweise warten, bis alle Datenbits eines Codeblocks durch den zweiten Decodierer decodiert worden sind, bevor der CRC-Prüfwert berechnet werden kann.

Ein CRC-Prüfwert kann berechnet werden, indem Datenbits eines Datenstroms sequentiell in ein einziges lineares Rückkopplungsschieberegister eingespeist werden. Die Verarbeitungsgeschwindigkeit einer solchen Vorrichtung beträgt 1 Bit pro Hardwarezyklus.

1 zeigt schematisch eine Vorrichtung 100 zum Durchführen von CRC-Prüfungen (Cyclic Redundancy Code Check, zyklische Redundanzprüfung). Die Vorrichtung 100 umfasst eine Divisionseinheit 10 (oder Teilungs- bzw. Unterteilungseinheit) und mehrere erste CRC-Prüfeinheiten 11. Die Divisionseinheit 10 ist dafür ausgelegt, einen Datenstrom 20 zu empfangen und den Datenstrom 20 in mehrere Datensegmente zu unterteilen (oder aufzuteilen). Bei einer Ausführungsform kann die Anzahl der Segmente von Daten der Anzahl der ersten CRC-Prüfeinheiten 11 entsprechen und die Segmente von Daten können gleiche Längen aufweisen. Jedes der Segmente von Daten kann zu einer anderen der ersten CRC-Prüfeinheiten 11 gesendet werden. Jede der ersten CRC-Prüfeinheiten 11 kann dazu ausgelegt sein, eine CRC-Prüfung eines jeweiligen der mehreren Datensegmente durchzuführen. Wie in 1 gezeigt, können die ersten CRC-Prüfeinheiten 11 parallel angeordnet werden und können die jeweiligen CRC-Prüfungen bei einer Ausführungsform simultan oder gleichzeitig berechnen.

Als Alternative zum Senden der Segmente von Daten zu den ersten CRC-Einheiten 11 kann die Divisionseinheit 10 bei einer anderen Ausführungsform dazu ausgelegt sein, jeder der ersten CRC-Prüfeinheiten 11 anzuzeigen, welcher Teil des Datenstroms 20 durch die jeweilige erste CRC-Einheit 11 zu verarbeiten ist.

2A zeigt schematisch eine Vorrichtung 200 zum Durchführen von CRC-Prüfungen. Ähnlich wie die in 1 dargestellte Vorrichtung 100 umfasst die Vorrichtung 200 eine Divisionseinheit 10 und mehrere CRC-Prüfeinheiten 11. Die Vorrichtung 200 umfasst ferner mehrere zweite CRC-Prüfeinheiten 12, mehrere Multiplikationseinheiten 13 und eine Kombiniereinheit 15. Zusammen mit einer signalabwärts angeschlossenen zweiten CRC-Prüfeinheit 12 kann eine Multiplikationseinheit 13 als eine kombinierte CRC-Prüfeinheit 14 betrachtet werden.

Bei einer Ausführungsform kann die Divisionseinheit 10 dazu ausgelegt sein, einen Datenstrom 20 mit I Datenbits zu empfangen, wobei I eine positive ganze Zahl ist. Die Divisionseinheit 10 kann dazu ausgelegt sein, den Datenstrom 20 in mehrere Segmente, zum Beispiel M Segmente, zu unterteilen, wobei M eine beliebige positive ganze Zahl sein kann, und die Segmente von Daten zu den mehreren ersten CRC-Prüfeinheiten 11 zu senden. Im Allgemeinen kann M den Wert einer beliebigen positiven ganzen Zahl annehmen und kann insbesondere gleich der Anzahl der ersten CRC-Prüfeinheiten 11 sein. Die Anzahl der Segmente von Daten und die Anzahl der ersten CRC-Prüfeinheiten 11 kann identisch oder unterschiedlich sein. Zum Beispiel kann es möglich sein, dass die Anzahl der ersten CRC-Prüfeinheiten 11 größer als die Anzahl der Segmente von Daten ist. In diesem Fall kann mindestens eine erste CRC-Prüfeinheit 11 vorliegen, die nicht zur Berechnung eines CRC-Prüfwerts für ein Segment von Daten des vorliegenden Datenstroms 20 verwendet wird. Es kann auch möglich sein, dass die Anzahl der ersten CRC-Prüfeinheiten 11 kleiner als die Anzahl der Segmente von Daten ist. In diesem Fall kann mindestens eine erste CRC-Prüfeinheit 11 vorliegen, die CRC-Prüfwerte für mindestens zwei Segmente von Daten berechnen muss. Zum Beispiel kann die Anzahl der Segmente von Daten zweimal die Anzahl der ersten CRC-Prüfeinheiten 11 betragen, und jede der ersten CRC-Prüfeinheiten 11 kann eine CRC-Prüfung von zwei Segmenten von Daten durchführen.

Die Länge der Segmente von Daten oder die Anzahl der in den Datensegmenten enthaltenen Datenbits können verschieden oder können gleich sein. Bei der in 2A gezeigten Ausführungsform wird ein Datenstrom 20 der Länge I empfangen und in M Segmente gleicher Länge N = I/M unterteilt. Ferner wird bei der in 2A gezeigten Ausführungsform jedes der Segmente von Daten zu einer anderen der ersten CRC-Prüfeinheiten 11 gesendet.

Bei einer Ausführungsform treten die Datenbits in den Datensegmenten nicht unbedingt in derselben Reihenfolge wie in dem empfangenen Datenstrom 20 auf, und die Datensegmente enthalten die Datenbits nicht unbedingt in derselben Reihenfolge wie der empfangene Datenstrom 20. Im Allgemeinen können die Datenbits eines Segments von Daten beliebig aus dem Datenstrom 20 ausgewählt werden. Bei einer in 2B gezeigten Ausführungsform enthält jedes der Datensegmente aufeinanderfolgende Daten des empfangenen Datenstroms 20 in derselben Reihenfolge, in der diese in dem Datenstrom 20 enthalten waren. Gemäß dieser Ausführungsform wird ein Datenstrom von 20 Datenbits in 4 Datensegmente aufgeteilt, wobei jedes dieser Datensegmente 5 Datenbits enthält. Bei den in 4A bis 4C gezeigten Ausführungsformen, die später beschrieben werden, werden die Segmente von Daten gebildet, indem jedes M-te Datenbit des Datenstroms 20 einem Segment von Daten zugewiesen wird, wobei M die Anzahl der ersten CRC-Prüfeinheiten 11 ist. Anders ausgedrückt sind bei dieser Ausführungsform die aufeinanderfolgenden Daten in jedem der Datensegmente in dem Datenstrom 20 durch M – 1 Daten separiert. Ferner wird bei den in 4A bis 4C gezeigten Ausführungsformen jedes von M in dem Datenstrom 20 aufeinanderfolgenden Daten einem anderen von M Segmenten von Daten zugewiesen.

Bei einer Ausführungsform kann der Datenstrom 20 als ein Polynom mit Koeffizienten di mit i = 0, 1, ..., I – 1 betrachtet werden, und die Segmente von Daten können als Polynome Dm(x) mit m = 0, 1, ..., M – 1 betrachtet werden.

Die Vorrichtung 200 von 2A ist dafür ausgelegt, eine CRC-Prüfung gegen CRC-Prüfdaten C durchzuführen, wobei eine als segmentierte parallele CRC-Prüfung bezeichnete Technik verwendet wird. Die CRC-Prüfdaten C können als ein Polynom C(x) in GF(2) betrachtet werden und können eine Länge bzw. einen Grad K aufweisen, die bzw. der kleiner als die Länge I des empfangenen Datenstroms 20 ist (K < I). K kann eine beliebige positive ganze Zahl sein. Beim LTE-Standard ist K zum Beispiel 24. Bei Betrachtung sowohl des empfangenen Datenstroms 20 und der CRC-Prüfdaten C als Polynome kann die in der Vorrichtung 200 durchgeführte CRC-Prüfung als Berechnung des Rests D(x) mod C(x) betrachtet werden.

Jede der ersten CRC-Prüfeinheiten 11 kann dafür ausgelegt sein, den Rest eines jeweiligen Segments von Daten Dm unter Verwendung der CRC-Prüfdaten C zu berechnen, d. h. kann dafür ausgelegt sein, den Rest Dm(x) mod C(x) zu berechnen. Jede der ersten CRC-Prüfeinheiten 11 kann einen Datenstrom oder ein Datenpaket ausgeben, der bzw. das den CRC-Prüfwert des Segments Dm von Daten angibt, die zu der jeweiligen, zum Beispiel m-ten ersten CRC-Prüfeinheit 11 gesendet wurden. Bei einer Ausführungsform kann jede der ersten CRC-Prüfeinheiten 11 ein lineares Rückkopplungsschieberegister ähnlich wie bei den in 3A und 3B gezeigten Beispielen enthalten.

Die Ausgabe jeder der ersten CRC-Einheiten 11 kann in eine jeweilige Multiplikationseinheit 13 eingegeben werden, in der sie mit einem anderen Eingangsdatenstrom oder -datenpaket 17 multipliziert wird. Die Anzahl der Multiplikationseinheiten 13 kann gleich der Anzahl der ersten CRC-Prüfeinheiten 11 sein und der Ausgang jeder der ersten CRC-Prüfeinheiten 11 kann mit einem Eingang einer verschiedenen der Multiplikationseinheiten 13 (siehe 2A) verbunden sein.

Jede Multiplikationseinheit 13 kann mindestens zwei Eingänge aufweisen. Ein Eingang jeder Multiplikationseinheit 13 kann mit dem Ausgang einer jeweiligen der ersten CRC-Prüfeinheiten 11 gekoppelt werden. Der andere Eingang jeder Multiplikationseinheit 13 kann einen jeweiligen von vorberechneten Werten, die in Form eines weiteren Datenstroms oder Datenpakets 17 vorliegen können, empfangen oder Zugriff auf einen solchen haben. Bei einer Ausführungsform kann dieser weitere Datenstrom bzw. dieses weitere Datenpaket 17 einen vorberechneten Wert umfassen, der mit der anderen Eingabe bzw. den anderen Eingaben bzw. dem anderen Eingang bzw. den anderen Eingängen der Multiplikationseinheiten 13 multipliziert wird. Die vorberechneten Werte 17 für die mehreren Multiplikationseinheiten 13 können zum Beispiel in einem Speicher gespeichert und können aus der Position des Segments von Daten, die zu der jeweiligen ersten CRC-Prüfeinheit 11, die signalaufwärts der jeweiligen Multiplikationseinheit 13 positioniert ist, gesendet wurden, berechnet werden. Jeder der vorberechneten Werte 17 kann einem jeweiligen der Segmente von Daten entsprechen und kann aus der Position des jeweiligen Segments von Daten in dem Datenstrom 20 berechnet und kann in eine jeweilige Multiplikationseinheit 13 eingegeben werden. Die vorberechneten Werte 17 für verschiedene Multiplikationseinheiten 13 können unterschiedlich sein. Eine Multiplikation kann berechnet werden, indem man wie oben beschrieben die Datenströme als Polynome betrachtet. Die Multiplikation kann zum Beispiel die Multiplikationsoperation des Galoisfelds wie oben beschrieben sein. Bei dieser Ausführungsform kann die Multiplikationseinheit 13 als eine Galoisfeld-Multiplikationseinheit betrachtet werden.

Der Ausgang jeder der Multiplikationseinheiten 13 kann mit einem Eingang einer jeweiligen der mehreren zweiten CRC-Prüfeinheiten 12 gekoppelt werden. Die Anzahl der zweiten CRC-Prüfeinheiten 12 kann gleich der Anzahl der ersten CRC-Prüfeinheiten und/oder der Anzahl der Segmente von Daten sein. Die zweiten CRC-Prüfeinheiten 12 können ein lineares Rückkopplungsschieberegister enthalten und können bei einer Ausführungsform gleich oder ähnlich den ersten CRC-Prüfeinheiten 11 sein. Die zweiten CRC-Prüfeinheiten 12 können dafür ausgelegt sein, einen CRC-Prüfwert der Ausgabe der Multiplikationseinheiten 13 zu berechnen.

Jede der ersten CRC-Prüfeinheiten 11 kann einen Zweig der CRC-Prüfvorrichtung 200 definieren. Bei einer Ausführungsform können die in demselben Zweig der Vorrichtung 200 enthaltenen Multiplikationseinheiten 13 und die zweiten CRC-Prüfeinheiten 12 in einer kombinierten CRC-Prüfeinheit 14 kombiniert werden, von der weiter unten noch ein Beispiel beschrieben wird und die schematisch in 3A und 3B dargestellt sind.

Die Ausgänge der zweiten CRC-Prüfeinheiten 12 oder der kombinierten CRC-Prüfeinheiten 14 können mit einem Eingang einer Kombiniereinheit 15 gekoppelt werden. Die Kombiniereinheit 15 kann dazu ausgelegt sein, die Ausgaben der mehreren parallelen CRC-Berechnungszweige zu kombinieren. Die Kombiniereinheit 15 kann die Position des jeweiligen Segments von Daten in dem Datenstrom 20 zur korrekten Kombination der Datenbits verwenden.

Die Ausgabe der Kombinationseinheit 15 kann den CRC-Wert des empfangenen Datenstroms 20 darstellen und kann zur weiteren Verarbeitung verwendet werden. Der CRC-Wert kann zum Beispiel zu einer Einheit gesendet werden, die den berechneten CRC-Wert D(x) mod C(x) auswertet, um zum Beispiel zu prüfen, ob die empfangenen Daten ohne Übertragungsfehler empfangen wurden. Der Ausgangswert kann auch verwendet werden, um einen CRC-Prüfwert an den Datenstrom 20 anzuhängen, zum Beispiel wenn sich die Vorrichtung 200 in einem Sender befindet.

Die in 2A gezeigte Darstellung bedeutet nicht unbedingt, dass die CRC-Prüfeinheiten 11 und 12 durch verschiedene Einheiten implementiert werden müssen. Bei einer Ausführungsform kann vorgesehen sein, dass jeder CRC-Berechnungszweig der Vorrichtung 200 eine einzige CRC-Prüfeinheit enthält, die in rekursiver Weise benutzt wird. Das heißt, dass die CRC-Prüfeinheit eines jeweiligen der Zweige die erste CRC-Prüfung durchführt, das Ergebnis der ersten CRC-Prüfung zu der Multiplikationseinheit 13 sendet und danach unter Verwendung der Ausgabe der Multiplikationseinheit 13 die zweite CRC-Prüfung durchführt.

2B zeigt schematisch eine Vorrichtung 201 zum Durchführen von CRC-Prüfungen. Die Vorrichtung 201 empfängt einen Datenstrom 20 von zum Beispiel I = 20 Datenbits. Typische Längen I von Datenströmen 20 können zum Beispiel zwischen 10 und 150.000 Datenbits betragen, z. B. bei LTE. Der Datenstrom 20 wird durch eine Divisionseinheit 10 z. B. in M = 4 Segmente aufgeteilt bzw. segmentiert, und jedes der 4 Segmente von Daten enthält zum Beispiel N = 5 Datenbits. Bei dieser Ausführungsform wird der empfangene Datenstrom 20 dergestalt in aufeinanderfolgende Segmente von Datenbit segmentiert, dass die Reihenfolge der Datenbits in den Segmenten von Daten der Reihenfolge in dem empfangenen Datenstrom 20 entspricht. Diese M Segmente von Daten Dm können somit durch Polynome

beschrieben werden und die CRC-Prüfung D(x) mod C(x) kann geschrieben werden als

Jedes der M Segmente von Daten wird zu einem der M parallelen CRC-Berechnungszweige gesendet. Jeder Zweig kann mit einer ersten CRC-Prüfeinheit 11 beginnen. Bei Verwendung der oben beschriebenen Polynomformulierung berechnen die ersten CRC-Prüfeinheiten 11 die folgenden Terme:

Die Ausgabe jeder der ersten CRC-Prüfeinheiten 11 wird in den Multiplikationseinheiten 13 mit einem jeweiligen vorberechneten Wert 17 multipliziert, der ausgedrückt werden kann als Am(x) = xmN mod C(x), m = 0, 1, ..., M – 1(2D) oder ausgedrückt werden kann als: Am(x) = XmN, m = 0, 1, ..., M – 1.(2E)

Bei einer Ausführungsform können die vorberechneten Werte 17 beträchtliche Zeit vor der Ankunft des empfangenen Datenstroms 20 vorberechnet werden. Sie können beispielsweise nach dem Zusammenbau der Vorrichtungen 200, 201 und 202 in einem Speicher gespeichert werden. Der Speicher kann dafür ausgelegt sein, M Pakete 17 von Daten zu speichern, wobei jedes der M Pakete 17 eine Länge kleiner oder gleich der Länge K des CRC-Prüfpolynoms C(x) aufweisen kann. Insbesondere kann der Speicher dafür ausgelegt sein, M Datenpakete von je K – 1 Datenbits zu speichern.

Die Ausgaben der Multiplikationseinheiten 13 können beschrieben werden als (Am(x)·Bm(x))(2F) und werden in die zweiten CRC-Prüfeinheiten 12 eingegeben, die Ausgaben berechnen, die beschrieben werden können als (Am(x)·Bm(x)) mod C(x).(2G)

Die Ausgaben der M zweiten CRC-Prüfeinheiten werden dann in der Kombiniereinheit 15 kombiniert, deren Ausgabe durch das folgende Polynom beschrieben werden kann:

Der Term von Gleichung (2H) entspricht dem CRC-Wert des empfangenen Datenstroms D.

2C zeigt eine Vorrichtung 202, die im Wesentlichen dieselben Komponenten wie die Vorrichtungen 200 und 201 enthält, aber nicht die zweiten CRC-Prüfeinheiten 12 signalabwärts der Multiplikationseinheiten 13 enthält. Statt dessen werden die Ausgaben der Multiplikationseinheiten 13 direkt in die Kombiniereinheit 15 eingegeben, deren Ausgabe durch ein Polynom beschrieben werden kann:

Der Ausgang der Kombinationseinheit 15 kann für eine weitere CRC-Prüfung unter Verwendung der CRC-Prüfdaten C mit einer dritten CRC-Berechnungseinheit 16 gekoppelt werden. Bei einer Ausführungsform kann die dritte CRC-Prüfeinheit 16 gleich oder ähnlich zu den ersten CRC-Prüfeinheiten 11 sein.

Die Ausgabe der dritten CRC-Prüfeinheit 16 kann durch ein Polynom

beschrieben werden.

Ähnlich wie Gleichung (2H) entspricht Gleichung (2K) dem CRC-Wert des empfangenen Datenstroms D.

Die in 2C gezeigte Darstellung bedeutet nicht unbedingt, dass die CRC-Prüfeinheiten 11 und 16 durch verschiedene Einheiten implementiert werden müssen, z. B. kann bei einer Ausführungsform vorgesehen sein, dass die CRC-Prüfung der dritten CRC-Prüfeinheit 16 durch eine der ersten CRC-Prüfeinheiten 11 durchgeführt wird.

Es können zusätzliche Verarbeitungseinheiten, zum Beispiel zusätzliche CRC-Prüfeinheiten, zu den Vorrichtungen 200, 201 und 202 hinzugefügt werden, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen.

3A zeigt schematisch ein Beispiel für eine kombinierte CRC-Prüfeinheit 14 gemäß den 2A und 2B. Bei einer Ausführungsform kann eine solche kombinierte CRC-Prüfeinheit 14 zwei Eingänge 141 und 142 aufweisen, in die Datenströme A bzw. B eingegeben werden können, und kann einen Ausgang 143 aufweisen, an dem ein dem Ergebnis der Berechnung A(x)·B(x) mod C(x) entsprechender Datenstrom 143 ausgegeben wird. Die ersten CRC-Berechnungseinheiten 11 und/oder die dritten CRC-Berechnungseinheiten 16 können der in 3A gezeigten kombinierten CRC-Prüfeinheit 14 ähnlich oder gleich sein. Zum Beispiel können die ersten und/oder dritten CRC-Berechnungseinheiten 11, 16 gebildet werden, indem man den zweiten Eingang 142 einer kombinierten CRC-Prüfeinheit 14 weglässt, den zweiten Eingang 142 vernachlässigt oder den Datenstrom B an den zweiten Eingang 142 für jedes Datenbit auf 1 setzt, sodass die Galois-Multiplikation von A und B gleich A ist.

3B zeigt schematisch ein Beispiel für eine kombinierte CRC-Prüfeinheit 14 mit einem linearen Rückkopplungs-Schieberegister. Der Datenstrom A(x) wird zu dem Eingang 141 des linearen Rückkopplungs-Schieberegisters gesendet und wird bitweise mit dem Datenstrom B(x) mit den Bits Bk (k = 0, 1, ..., K – 1) des Eingangs 142 multipliziert. Dies kann durch bitweise AND-Verknüpfung entsprechender Datenbits erzielt werden. Das durch diese Multiplikation erhaltene Ergebnis wird in die K Eingänge des linearen Rückkopplungs-Schieberegisters eingegeben, mit den Bits Ck (k = 0, 1, ..., K – 1) der CRC-Prüfdaten C XOR-verknüpft, in den Verzögerungsmodulen D verzögert und dann in die nächste XOR-Einheit eingegeben. Für die ersten und/oder dritten CRC-Berechnungseinheiten 11, 16 kann ein ähnliches Rückkopplungs-Schieberegister verwendet werden. In diesem Fall kann die Multiplikation mit dem Datenstrom B(x) weggelassen werden, oder alle Bits Bk (k = 0, 1, ..., K – 1) können auf 1 gesetzt werden.

4A zeigt schematisch eine Vorrichtung 400 zum Durchführen von CRC-Prüfungen. Die Vorrichtung 400 enthält eine Divisionseinheit 10, mehrere erste CRC-Prüfeinheiten 11, mehrere Verarbeitungseinheiten 19, mehrere Multiplikationseinheiten 13, mehrere zweite CRC-Prüfeinheiten 12 und eine Kombiniereinheit 15. Die Komponenten der Vorrichtungen 200 und 400, die mit denselben Bezugszahlen bezeichnet werden, sind identisch oder ähnlich, sofern im Folgenden nicht anders angegeben.

Die bei der in 4A gezeigten Ausführungsform verwendete Divisionseinheit 10 kann dafür ausgelegt sein, Daten aus dem Datenstrom 20 gemäß einem als Verschachtelung (interleaving) bezeichneten Schema auszuwählen. Gemäß diesem Schema wird der Datenstrom 20 in M Segmente von Daten aufgeteilt, sodass die einem Segment von Daten zugewiesenen Bits in dem empfangenen Datenstrom 20 durch M – 1 Bits getrennt sind. Ein Beispiel ist in 4B gezeigt, wobei die m-te der ersten CRC-Prüfeinheiten 11 die Datenbits n·M + m mit n = 0, 1, ..., N – 1 und N = I/M empfängt. Vom mathematischen Standpunkt aus gesehen kann das Segment von Daten, das zu der m-ten ersten CRC-Prüfeinheit 11 gesendet wird, durch das folgende Polynom beschrieben werden:

und die CRC-Prüfung D(x) mod C(x) kann beschrieben werden als:

Falls M eine Potenz von 2 ist, gilt die Identität Dm(xM) = [Dm(x)]M.(4C)

Dementsprechend kann die CRC-Prüfung D(x) mod C(x) beschrieben werden als:

mit rm(x) = Dm(x) mod C(x). Gleichung (4C) gilt auch für q-elementige Galoisfelder GF(q), wobei q eine Potenz einer Primzahl p ist, d. h. q = p&mgr;, wobei &mgr; eine positive ganze Zahl ist und wobei M eine Potenz von q ist, d. h. M = qr, r = 1, 2, 3, Dementsprechend kann jede der ersten CRC-Prüfeinheiten 11 zum Beispiel dafür ausgelegt sein, einen CRC-Prüfwert rm(x) = Dm(x) mod C(x) zu berechnen, welcher der entsprechenden Verarbeitungseinheit 19 zugeführt werden kann. Die Verarbeitungseinheit 19 kann dafür ausgelegt sein, eine Potenz ihrer Eingabe rm(x) zu berechnen und kann zum Beispiel ein Datenpaket ausgeben, das einem Polynom rm(x)M entspricht. Wenn die Bedingungen für Gleichung (4C) erfüllt sind, ist die Ausgabe der Verarbeitungseinheit 19 mit einem Datenpaket identisch, das rm(xM) entspricht, da rm(x)M = rm(xM) oder Dm(x)M = Dm(xM) gilt, beispielsweise wenn M eine Potenz von 2 ist.

Obwohl die Beziehung (4C) oder rm(x)M = rm(xM) nur für die oben beschriebenen Bedingungen gilt, z. B. für den Fall, dass M eine Potenz von 2 ist, müssen auf dieser Beziehung basierende Ausführungsformen nicht unbedingt eine entsprechende Anzahl erster CRC-Prüfeinheiten 11 aufweisen, z. B. die Anzahl der ersten CRC-Prüfeinheiten 11 muss keine Potenz von 2 sein, da beobachtet wurde, dass stattdessen eine beliebige Anzahl erster CRC-Prüfeinheiten 11 oder parallele CRC-Berechnungszweige verwendet werden kann. Alle solchen Varianten werden von der Erfindung umfasst.

Die Verarbeitungseinheit 19 kann zum Beispiel die M-te Potenz ihres Eingangssignals direkt berechnen, z. B. durch M-maliges Multiplizieren des Eingangswerts mit sich selbst. Die Verarbeitungseinheit 19 kann auch die M-te Potenz ihrer Eingabe berechnen, indem die M-te Potenz der Variablen x des Polynoms in der Polynomformulierung berechnet wird. Dies ist möglich, wenn Gleichung (4C) gilt, z. B. wenn M eine Potenz von 2 ist, d. h. wenn die Anzahl der ersten CRC-Prüfeinheiten 11 und/oder der Segmente von Daten 2, 4, 8, 16, 32, 64 usw. ist. Betrachtet man die Eingaben der Verarbeitungseinheiten 19 als Datenpakete, so kann dies zum Beispiel erreicht werden, indem man M – 1 Nullen nach jedem Datenbit des zu dem Eingang einer Verarbeitungseinheit 19 gesendeten Datenpakets hinzufügt. Dies ist möglich, weil in GF(2) die folgende Identität gilt: (1x0 + 1x2)2 = 1 + x4 = 1x0 + 0x1 + 0x2 + 0x3 + 1x4, d. h. der Datenstrom kann folgendermaßen erweitert werden:

101 → 100010

In diesem Fall kann die Berechnung der M-ten Potenz eines Eingangsdatenpakets mit dem Hinzufügen von M – 1 Nullen nach jedem Datenbit identisch sein. Es ist offensichtlich, dass man anstelle der oben beschriebenen Berechnung der Potenz der Variablen in der Verarbeitungseinheit 19 auch die signalabwärtsgelegene Einheit bzw. signalabwärtsgelegenen Einheiten über die neue Position der Datenbits informieren kann, z. B. durch Angabe, dass das zweite Datenbit so interpretiert werden soll, als ob es ein M-tes Datenbit wäre. In dem Beispiel (1x0 + 1x2)2 wäre es möglich, das erste Bit zu dem ersten Eingang, das zweite Bit zu dem dritten Eingang und das dritte Bit zu dem fünften Eingang des linearen Rückkopplungs-Schieberegisters zu senden, d. h. die Berechnung der Potenz kann durch das Senden der Datenbits zu den Eingängen eines linearen Rückkopplungsschieberegisters so, als ob eine erforderliche Anzahl von Nullen zu dem Datenpaket hinzugefügt worden wäre, ersetzt werden.

Die Ausgänge der Verarbeitungseinheiten 19 können mit den Eingängen der Multiplikationseinheiten 13 gekoppelt werden. Die Multiplikationseinheiten 13 können ihre Eingaben mit vorberechneten Werten 18 multiplizieren. Die vorberechneten Werte 18 können bei einer Ausführungsform der Position des Segments von Daten in dem Datenstrom 20 entsprechen, dessen CRC-Prüfwert in dem jeweiligen Zweig der CRC-Prüfvorrichtung 401 berechnet wird. Die vorberechneten Werte 18 können zum Beispiel den folgenden Polynomen entsprechen: Am(X) = xm, m = 0, 1, ..., M – 1 oder können den folgenden Polynomen entsprechen: Am(x) = xmM mod C(x), m = 0, 1, ..., K – 1.

Bei einer Ausführungsform können die vorberechneten Werte 18 auch CRC-Prüfwerte sein, wie etwa Am(x) mod C(x), und die Eingangswerte bzw. Eingabewerte, die mit den vorberechneten Werten 18 multipliziert werden, können auch CRC-Prüfwerte der Ausgaben der Verarbeitungseinheiten 19 sein. Dies kann zum Beispiel erreicht werden, indem man weitere CRC-Prüfeinheiten, die in den 4A bis 4C nicht gezeigt sind, zwischen den Verarbeitungseinheiten 19 und den Multiplikationseinheiten 13 anordnet. In einem solchen Fall können die Eingaben der Multiplikationseinheiten 13 zum Beispiel durch die folgenden Polynome beschrieben werden: Bm(x) = rm(xM) mod C(x) = rm(x)M mod C(x), m = 0, 1, ..., M – 1.

Die vorberechneten Werte 18, wie etwa xm oder [xm mod C(x)], können in einem Speicher abgelegt werden, insbesondere in einem Speicher mit M oder K – 1 Elementen von jeweils M oder K – 1 Datenbits.

Die Ausgaben der Multiplikationseinheiten 13 können durch die Polynome

Am(x) Bm(x). beschrieben werden.

Die zweiten CRC-Prüfeinheiten 12 berechnen CRC-Werte der Polynome Am(x) Bm(x): (Am(x) Bm(x)) mod C(x)

In der Kombiniereinheit 15 werden die Ausgaben der M parallelen CRC-Berechnungszweige zu einem Datenpaket kombiniert, welches durch das folgende Polynom beschrieben werden kann:

Gleichung (4E) entspricht dem CRC-Wert des empfangenen Datenstroms D.

4C zeigt schematisch eine Vorrichtung 402 zum Durchführen von CRC-Prüfungen. Die Vorrichtung 402 entspricht zum Großteil der Vorrichtung 401, enthält aber nicht die zweiten CRC-Prüfeinheiten 12 signalabwärts der Multiplikationseinheiten 13. Statt dessen werden die Ausgaben der Multiplikationseinheiten 13 direkt der Kombiniereinheit 15 zugeführt, deren Ausgabe durch ein Polynom

beschrieben werden kann, sodass die Ausgabe der dritten CRC-Prüfeinheit 16 durch ein Polynom beschrieben werden kann:

Gleichung (4G) entspricht dem CRC-Wert des empfangenen Datenstroms D.

Für Fachleute sollte offensichtlich sein, dass zusätzliche Verarbeitungseinheiten, zum Beispiel zusätzliche CRC-Prüfeinheiten, zu den Vorrichtungen 400, 401 und 402 hinzugefügt werden können, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Ferner ist für Fachleute offensichtlich, dass die oben gezeigten Ausführungsformen und/oder Gleichungen leicht modifiziert werden können. Zum Beispiel können die Gleichungen so modifiziert werden, dass die Unter-Terme anders gruppiert bzw. zusammengefasst werden können, und die oben beschriebenen Ausführungsformen können dementsprechend modifiziert werden, ohne von dem Schutzumfang der Erfindung abzuweichen.

Sowohl segmentierte als auch verschachtelte parallele CRC-Prüfungen wie oben beschrieben können die für eine CRC-Prüfung benötigte Zeit um einen Faktor verringern, der, verglichen mit einer nichtparallelisierten CRC-Prüfvorrichtung, gleich dem Grad der Parallelisierung ist. Der Grad der Parallelisierung kann zum Beispiel als die Anzahl der Segmente von Daten definiert werden, in die der Datenstrom 20 segmentiert bzw. aufgeteilt wird, oder als die Anzahl der ersten CRC-Prüfeinheiten 11 oder die Anzahl paralleler CRC-Berechnungszweige.

Bei segmentierter paralleler CRC können die vorberechneten Werte 17 von der Länge des empfangenen Datenstroms 20, z. B. der Länge eines Datenrahmens oder eines Turbocodeworts, abhängen. Die vorberechneten Werte 18 der verschachtelten parallelen CRC können so gewählt werden, dass sie von der Länge des empfangenen Datenstroms unabhängig sind, d. h. sie können so gewählt werden, dass sie nur von K abhängen.

Die oben beschriebenen Vorrichtungen können dafür ausgelegt sein, mit derselben Taktrate zu laufen, mit der die Datenbits in dem Datenstrom 20 empfangen werden. Es kann somit unnötig sein, die CRC-Prüfvorrichtungen mit einer Taktrate zu takten, die kleiner als die Datenbit-Abtastrate ist. Die oben beschriebenen CRC-Prüfvorrichtungen können auch die Latenz verringern und können es erlauben, gegebene Latenzanforderungen leichter zu erfüllen.

Die Ausgabe einer elektronischen Schaltung kann mit Bezug auf eine Eingabe verzögert sein, d. h. sie kann Berechnungszeit erfordern. Die Verzögerung oder Berechnungszeit kann durch die Logiktiefe der elektronischen Schaltung, d. h. die Anzahl und Komplexität der Operationen, die nacheinander durchgeführt werden müssen, oder die Anzahl und Verzögerungen, die durch in Reihe geschaltete Transistoren in dieser Schaltung erzeugt werden, bestimmt werden. Die Komponenten, die die größten Verzögerungen verursachen, können die maximale Taktrate bestimmen, mit der die oben beschriebenen CRC-Prüfvorrichtungen betrieben werden können. Bei den oben beschriebenen Vorrichtungen können die bestimmenden Komponenten zum Beispiel die ersten CRC-Prüfeinheiten 11 sein, da diese Einheiten einen CRC-Prüfwert aus einem Datensegment von etwa 100 bis 150.000 Datenbits berechnen müssen, während die von den zweiten oder dritten CRC-Prüfeinheiten verarbeiteten Daten zum Beispiel eine Länge aufweisen können, die der Länge der CRC-Prüfdaten C ähnlich ist, z. B. eine Länge von etwa 24 Datenbits aufweisen können. Die durch andere Komponenten der oben beschriebenen Vorrichtungen eingeführten Verzögerungen können im Vergleich zu der durch eine erste CRC-Prüfeinheit 11 eingeführten Verzögerung vernachlässigbar sein. Ihr Einfluss kann zum Beispiel weniger als 10%, 1% oder 0.1% der Berechnungszeit betragen.

Beim Erhöhen des Grads der Parallelisierung muss möglicherweise jede der ersten CRC-Prüfeinheiten nur ein kleineres Segment von Daten verarbeiten, und die Berechnungszeiten zur Berechnung des CRC-Prüfwerts können sich umgekehrt zu dem Anstieg der Parallelisierung ändern. Zum Beispiel kann eine Verdopplung des Grads der Parallelisierung die für die Berechnung des CRC-Prüfwerts bei derselben Taktrate erforderliche Zeit um einen Faktor 2 verringern. Die von den ersten CRC-Prüfeinheiten 11 benötigte Berechnungszeit wird durch den Grad der Parallelisierung möglicherweise nicht erhöht. Komponenten wie etwa eine Kombiniereinheit 15 haben möglicherweise nur einen vernachlässigbaren oder kleinen Einfluss auf die Berechnungszeit von weniger als 10%, 1% oder 0,1%. Ähnlich kann die maximale Taktrate näherungsweise von dem Grad der Parallelisierung unabhängig sein und kann um weniger als 10%, 1% oder 0,1% beeinflusst werden. Der Grad der Parallelisierung kann dementsprechend beliebig geändert werden, wenn die CRC-Prüfvorrichtung mit einer Taktrate betrieben wird, die kleiner als 90%, 99% oder 99,9% der maximalen Taktrate ist.

5 zeigt schematisch ein Beispiel für ein Verfahren zum Durchführen einer CRC-Prüfung unter Verwendung mehrerer paralleler oder gleichzeitiger CRC-Prüfungen. Das in 5 gezeigte Beispiel kann zum Beispiel unter Verwendung der Vorrichtungen 202 oder 402 ausgeführt werden. Das Verfahren umfasst Schritte S1 bis S6. Der Verfahrensschritt S1 umfasst die Berechnung von Werten, die konstant sind und somit vorberechnet werden können. Diese Werte können zum Beispiel zum leichten Zugriff in einem Speicher gespeichert werden. In dem Verfahrensschritt S2 wird ein Datenstrom empfangen und in eine Anzahl von Segmenten von Daten aufgeteilt oder segmentiert. Im Verfahrensschritt S3 wird ein CRC-Prüfwert für jedes der Segmente von Daten berechnet. Im Verfahrensschritt S4 wird jeder der CRC-Prüfwerte mit einem jeweiligen der vorberechneten Werte multipliziert. Die jeweiligen vorberechneten Werte können zum Beispiel die Position des jeweiligen der Segmente von Daten in dem empfangenen Datenstrom angeben. Im Verfahrensschritt S5 werden die multiplizierten Werte gemäß der Position des jeweiligen Segments von Daten in dem Datenstrom kombiniert. Im Verfahrensschritt S6 wird der kombinierte Wert für eine weitere CRC-Prüfung verwendet. Der aus dem Verfahrensschritt S6 erhaltene CRC-Prüfwert kann dem CRC-Prüfwert des empfangenen Datenstroms entsprechen.

Für Fachleute ist erkennbar, dass das in 5 beschriebene Verfahren gemäß einer der oben beschriebenen Ausführungsformen abgeändert werden kann.

6 zeigt schematisch, wie CRC-Prüfungen in dem LTE-Standard (Technische Spezifikation 3GPP 36.212) verwendet werden können. Gemäß diesem Standard wird in jedem Übertragungszeitintervall ein Transportblock 61 von der MAC-Schicht an die Bitübertragungsschicht übertragen. Als erstes wird ein CRC-Prüfwert 62 des Typs A zu dem Transportblock 61 hinzugefügt. Das Ergebnis dieser CRC-Prüfung auf Transportblockbasis wird als eine ACK/NACK-Antwort für den Sender verwendet. Dann wird der Transportblock 61 in Codeblöcke 61a, 61b, 61c aufgeteilt, bevor diese turbocodiert werden. Zu jedem Codeblock 61a, 61b, 61c wird ein zusätzlicher CRC-Prüfwert 64 des Typs B hinzugefügt. Es können Füllbits 63 mit vordefinierten Werten zu dem Anfang des ersten Codeblocks 61a hinzugefügt werden. Bei LTE wurden Frühabschlussschemata in die Turbodecodierer integriert, sodass der iterative Decodierungsprozess beendet wird, wenn der decodierte Rahmen als gut angesehen wird. Dadurch kann es möglich sein, Strom bzw. Energie zu sparen, der bzw. die in einer drahtlosen Vorrichtung eine knappe Ressource sein kann. Wenn eine CRC-Prüfung zum frühen Abschluss oder zum frühen Anhalten der Iteration des Turbodecodierungsprozesses verwendet wird, ist es wünschenswert, dass die CRC-Prüfung parallel zu der Turbodecodierung betrieben wird, um den Durchsatz nicht zu verschlechtern. Die CRC-Prüfung 62 kann verwendet werden, um die Übertragung des Transportblocks als ganzes zu prüfen, und die CRC-Prüfungen 64 können verwendet werden, um die Übertragung der Codeblöcke 65a, 65b, 65c zu prüfen. Das oben in Verbindung mit 1 bis 5 beschriebene Konzept kann auf eine oder mehrere der CRC-Prüfungen 62, 64 angewandt werden.

Obwohl ein bestimmtes Merkmal oder ein bestimmter Aspekt einer Ausführungsform der Erfindung möglicherweise mit Bezug auf nur eine von mehreren Implementierungen offenbart wurde, kann ein solches Merkmal oder ein solcher Aspekt mit einem oder mehreren Merkmalen oder Aspekten der anderen Implementierungen kombiniert werden, so wie es für eine beliebige gegebene oder konkrete Anwendung erwünscht und vorteilhaft sein kann. So, wie die Ausdrücke „enthalten”, „aufweisen”, „mit” oder andere Varianten davon entweder in der ausführlichen Beschreibung oder in den Ansprüchen verwendet wurden, sollen ferner solche Ausdrücke auf ähnliche Weise wie der Ausdruck „umfassen” einschließend sein. Ferner versteht sich, dass Ausführungsformen der Erfindung in diskreten Schaltungen, teilweise integrierten Schaltungen oder vollintegrierten Schaltungen oder Programmiermitteln implementiert werden können. Außerdem ist der Ausdruck „beispielhaft” lediglich als Beispiel gemeint und nicht als die beste oder optimale Ausführungsform. Außerdem versteht sich, dass hier abgebildete Merkmale und/oder Elemente der Einfachheit und des leichteren Verständnisses halber mit konkreten Abmessungen relativ zueinander dargestellt sind und dass die tatsächlichen Abmessungen wesentlich von den hier dargestellten abweichen können.

Obwohl hier spezifische Ausführungsformen dargestellt und beschrieben wurden, ist für Durchschnittsfachleute erkennbar, dass vielfältige alternative und/oder äquivalente Implementierungen die gezeigten und beschriebenen spezifischen Ausführungsformen ersetzen können, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Die vorliegende Anmeldung soll jegliche Anpassungen oder Varianten der hier besprochenen spezifischen Ausführungsformen abdecken.


Anspruch[de]
Vorrichtung, umfassend:

eine Divisionseinheit (10), die dafür ausgelegt ist, einen Datenstrom (20) zu empfangen und den empfangenen Datenstrom (20) in mehrere Datensegmente aufzuteilen; und

mehrere erste CRC-Prüfeinheiten (11) zur CRC-Prüfung,

wobei jede der ersten CRC-Prüfeinheiten (11) dafür ausgelegt ist, eine CRC-Prüfung eines jeweiligen der mehreren Datensegmente durchzuführen, wobei die mehreren CRC-Prüfungen gleichzeitig durchgeführt werden.
Vorrichtung nach Anspruch 1, mit einer signalabwärts jeder der ersten CRC-Prüfeinheiten (11) angeordneten jeweiligen zweiten CRC-Prüfeinheit (12), die dafür ausgelegt ist, eine CRC-Prüfung an ihr zugeführten Eingangsdaten durchzuführen, wobei die Eingangsdaten jeweils mit einer Ausgabe der ersten CRC-Einheiten (11) verbunden sind. Vorrichtung nach Anspruch 2, mit einer jeweiligen Multiplikationseinheit (13), die zwischen jeder der ersten CRC-Prüfeinheiten (11) und zweiten CRC-Prüfeinheiten (12) angeordnet ist. Vorrichtung nach Anspruch 3, mit einem Speicher, der dafür ausgelegt ist, vorberechnete Werte zu speichern, und dafür ausgelegt ist, die vorberechneten Werte Eingängen der Multiplikationseinheiten (13) bereitzustellen. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei jede der ersten CRC-Prüfeinheiten (11) ein jeweiliges Ergebnis ausgibt, und ferner mit einer Kombiniereinheit (15), die dafür ausgelegt ist, die von den ersten CRC-Prüfeinheiten (11) ausgegebenen Ergebnisse oder von diesen abgeleitete Ergebnisse zu kombinieren. Vorrichtung nach Anspruch 5, mit einer signalabwärts der Kombiniereinheit angeordneten dritten CRC-Prüfeinheit (16). Vorrichtung nach einem der vorhergehenden Ansprüche, wobei jedes der Datensegmente aufeinanderfolgende Datenteile enthält, die alle dieselbe Reihenfolge wie in dem Datenstrom (20) aufweisen. Vorrichtung nach einem der Ansprüche 4 oder 7, wobei jeder der vorberechneten Werte einem jeweiligen der Datensegmente entspricht und unter Verwendung der Position des jeweiligen Segments von Daten in dem Datenstrom (20) berechnet wird. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei aufeinanderfolgende Datenelemente in jedem der Datensegmente durch M – 1 Daten in dem Datenstrom (20) getrennt werden, wobei M eine ganze Zahl und größer oder gleich der Anzahl der ersten CRC-Prüfeinheiten (11) ist. Vorrichtung nach Anspruch 9, wobei M die Anzahl der ersten CRC-Prüfeinheiten (11) ist und wobei jedes von M aufeinanderfolgenden Datenelementen in dem Datenstrom (20) einem jeweiligen der M Datensegmente zugewiesen wird. Vorrichtung nach einem der Ansprüche 9 oder 10, wobei M eine Potenz von 2 ist. Vorrichtung nach einem der Ansprüche 9 bis 11, wobei jeder der vorberechneten Werte einem jeweiligen der Segmente von Daten entspricht und unter Verwendung der Position des jeweiligen Datensegments in dem Datenstrom berechnet wird. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei jede der ersten CRC-Prüfeinheiten ein lineares Rückkopplungs-Schieberegister umfasst. Verfahren mit den folgenden Schritten:

Empfangen eines Datenstroms (20);

Aufteilen des empfangenen Datenstroms (20) in mehrere Datensegmente; und

gleichzeitiges Durchführen einer ersten CRC-Prüfung jedes der Datensegmente, um mehrere erste CRC-Werte zu erhalten.
Verfahren nach Anspruch 14, mit dem Schritt:

Durchführen einer zweiten CRC-Prüfung jedes der ersten CRC-Werte, um mehrere zweite CRC-Werte zu erhalten.
Verfahren nach Anspruch 14 oder 15, mit dem Schritt:

Multiplizieren jedes der ersten CRC-Prüfwerte mit einem jeweiligen der mehreren vorberechneten Werte.
Verfahren nach einem der Ansprüche 14 bis 16, mit dem Schritt:

Kombinieren der ersten CRC-Prüfwerte.
Verfahren nach Anspruch 17, mit dem Schritt:

Durchführen einer dritten CRC-Prüfung an den kombinierten CRC-Prüfwerten.
Verfahren nach einem der Ansprüche 14 bis 18, wobei jedes der Datensegmente aufeinanderfolgende Datenteile enthält, die dieselbe Reihenfolge wie in dem Datenstrom aufweisen. Verfahren nach einem der Ansprüche 16 oder 19, wobei jeder der vorberechneten Werte einem jeweiligen der Datensegmente entspricht und unter Verwendung der Position des jeweiligen Datensegments in dem Datenstrom berechnet wird. Verfahren nach einem der Ansprüche 14 bis 20, wobei in jedem der Datensegmente aufeinanderfolgende Datenelemente in dem Datenstrom (20) durch M – 1 Daten getrennt sind, wobei M die Anzahl der ersten CRC-Prüfungen ist. Verfahren nach Anspruch 21, wobei jedes der M aufeinanderfolgenden Datenelemente in dem Datenstrom (20) einem jeweiligen der M Datensegmente zugewiesen wird. Vorrichtung, umfassend:

eine Divisionseinheit (10), die dafür ausgelegt ist, einen Datenelemente umfassenden Datenstrom zu empfangen und den empfangenen Datenstrom in M Datensegmente aufzuteilen, wobei M eine positive ganze Zahl ist; und

M erste CRC-Prüfeinheiten (11), wobei jede der M ersten CRC-Prüfeinheiten (11) dafür ausgelegt ist, eine CRC-Prüfung eines jeweiligen der M Datensegmente durchzuführen, wobei die M CRC-Prüfungen gleichzeitig durchgeführt werden und wobei jedes der M aufeinanderfolgenden Datenelemente in dem Datenstrom einem anderen der M Datensegmente zugewiesen wird.
Vorrichtung, umfassend:

eine Divisionseinheit (10), die dafür ausgelegt ist, einen Datenelemente umfassenden Datenstrom (20) zu empfangen; und

M erste CRC-Prüfeinheiten, wobei M eine positive ganze Zahl ist, wobei die Divisionseinheit (10) jedes von M aufeinanderfolgenden Datenelementen in dem Datenstrom (20), der ein Datensegment umfasst, einer anderen der M ersten CRC-Prüfeinheiten (11) zuweist und wobei jede der M ersten CRC-Prüfeinheiten (11) eine CRC-Prüfung des jeweiligen ihr zugewiesenen Datensegments durchführt und die CRC-Prüfungen gleichzeitig durchgeführt werden.
Vorrichtung, umfassend:

eine Divisionseinheit (10), die dafür ausgelegt ist, einen Datenstrom (20) zu empfangen und den empfangenen Datenstrom (20) in mehrere Datensegmente aufzuteilen; und

mehrere Zweige, wobei jeder der Zweige dafür ausgelegt ist, eine CRC-Prüfung eines jeweiligen der mehreren Datensegmente durchzuführen, und wobei die mehreren CRC-Prüfungen simultan durchgeführt werden und wobei jeder Zweig mindestens eine CRC-Prüfeinheit (11, 12) und mindestens eine Multiplikationseinheit (13) umfasst.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com