-
Technisches Gebiet
-
Die vorliegende Anwendung bezieht sich allgemein auf drahtlose Kommunikationseinrichtungen und insbesondere auf das Codieren und Decodieren von Daten, die zwischen drahtlosen Kommunikationseinrichtungen übertragen werden.
-
Hintergrund der Technik
-
In der Informationstheorie ist ein Low-Density-Parity-Check-Code (Paritätsprüfungscode mit geringer Dichte, LDPC-Code) ein Fehlerkorrekturcode zum Übertragen einer Nachricht über einen verrauschten Übertragungskanal. Bei LDPC-Codes handelt es sich um eine Klasse von linearen Blockcodes. LDPC- und sonstige Fehlerkorrekturcodes können eine perfekte Übertragung zwar nicht garantieren, die Wahrscheinlichkeit, dass Informationen verloren gehen, kann jedoch so weit, wie erwünscht ist, verringert werden. LDPC war der erste Code, der Datenübertragungsraten nahe dem theoretischen Maximum ermöglichte, das als Shannon-Grenze bezeichnet wird. LDPC-Codes können mit 0,0045 dB der Shannon-Grenze arbeiten. Bei seiner Entwicklung im Jahr 1963 konnte LDPC noch nicht implementiert werden. Turbocodes, die 1993 entdeckt wurden, wurden in den späten 1990-er Jahren zum Codierungsschema der Wahl. Turbocodes werden für Anwendungen wie zum Beispiel Weltraum-Satellitenkommunikation verwendet. LDPC erfordert eine komplexe Verarbeitung, ist jedoch mit Stand von 2007 das effizienteste Schema, das entdeckt worden ist. LDPC-Codes können zu einer großen Mindestdistanz (im Folgenden „dmin”1 führen und die Decodierungskomplexität verringern.
-
Offenlegung der Erfindung
-
Lösung des Problems
-
Es wird ein Empfänger zur Verwendung in einem drahtlosen Kommunikationsnetzwerk bereitgestellt, der in der Lage ist, codierte Übertragungen zu decodieren.
-
Vorteilhafte Wirkungen der Erfindung
-
Die vorliegende Offenlegung beschreibt eine Vorrichtung und ein Verfahren zum Erhöhen der Konstruktionseffizienz für einen LDPC-Decodierer mit 1 Gbps.
-
Kurze Beschreibung der Zeichnungen
-
Für ein umfassenderes Verständnis der vorliegenden Offenlegung und ihrer Vorteile wird nun auf die folgende Beschreibung zusammen mit den beigefügten Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen gleiche Teile darstellen:
-
1 veranschaulicht ein beispielhaftes drahtloses Netzwerk 100, das ACK/NACK-Nachrichten gemäß einer beispielhaften Ausführungsform der Offenlegung überträgt;
-
2A stellt ein Übersichtsschaubild eines Übertragungsweges bei einem orthogonalen Frequenzmehrfachzugriffsverfahren gemäß einer beispielhaften Ausführungsform der Offenlegung dar;
-
2B stellt ein Übersichtsschaubild eines Empfangsweges bei einem orthogonalen Frequenzmehrfachzugriffsverfahren gemäß einer beispielhaften Ausführungsform der Offenlegung dar;
-
3 veranschaulicht eine Top-Level-Architektur eines LDPC-CRISP gemäß Ausführungsformen der vorliegenden Offenlegung;
-
4 veranschaulicht einen Tanner-Graphen, der einer Paritätsprüfungsmatrix gemäß Ausführungsformen der vorliegenden Offenlegung entspricht;
-
5A veranschaulicht einen Code mit einer Rate 1/2 gemäß einer Ausführungsform eines herkömmlichen LDPC-Decodierers;
-
5B veranschaulicht einen Code mit einer Rate 5/6 gemäß einer Ausführungsform eines herkömmlichen LDPC-Decodierers;
-
6 veranschaulicht ein ausführliches Blockschaubild eines beispielhaften LDPC-Decodierers, der eine Decodierung gemäß einem Flooding-Verfahren durchführt;
-
7 veranschaulicht ein ausführliches Blockschaubild eines beispielhaften LDPC-Decodierers, der eine geschichtete Decodierung gemäß den Prinzipien der vorliegenden Offenlegung durchführt;
-
8 stellt eine Matrix H für einen Code mit der Rate 1/2 dar;
-
9 stellt eine Matrix H für einen Code mit einer Rate 5/8 dar;
-
10 stellt eine Matrix H für einen Code mit einer Rate 3/4 dar; und
-
11 stellt eine Matrix H für einen Code mit einer Rate 13/16 dar.
-
Das beste Verfahren zur Ausführung der Erfindung
-
Es wird ein Empfänger zur Verwendung in einem drahtlosen Kommunikationsnetzwerk bereitgestellt, der in der Lage ist, codierte Übertragungen zu decodieren. Der Empfänger umfasst eine Empfangswegschaltung zum Empfangen und Abwärtsumwandeln eines eingehenden Hochfrequenzsignals (HF-Signals), um ein codiertes Empfangssignal zu erzeugen; und einen Low-Density-Parity-Check-Decodierer (LDPC-Decodierer), der der Empfangswegschaltung zugehörig ist, zum Decodieren des codierten Empfangssignals. Der LDPC-Decodierer umfasst des Weiteren einen Speicher zum Speichern einer Paritätsprüfungsmatrix H, die Zeilen R und Spalten C umfasst, wobei jedes Element der Paritätsprüfungsmatrix H entweder einen Verschiebungswert oder einen Wert –1 umfasst; und eine Vielzahl von Verarbeitungselementen zum Durchführen einer geschichteten LDPC-Decodierung, wobei zumindest ein Verarbeitungselement in der Lage ist, in demselben Zyklus eine erste Zeile und eine zweite Zeile der Paritätsprüfungsmatrix H zu verarbeiten.
-
Es wird ein Verfahren zum Decodieren von Übertragungen in einem drahtlosen Kommunikationsnetzwerk bereitgestellt. Das Verfahren umfasst die Schritte eines Empfangens und eines Abwärtsumwandelns eines eingehenden Hochfrequenzsignals (HF-Signals) in einer Empfangseinrichtung, um ein codiertes Empfangssignal zu erzeugen; und eines Decodierens des codierten Empfangssignals in einem Low-Density-Parity-Check-Decodierer (LDPC-Decodierer). Der LDPC-Decodierer umfasst einen Speicher zum Speichern einer Paritätsprüfungsmatrix H, die Zeilen R und Spalten C umfasst, wobei jedes Element der Paritätsprüfungsmatrix H entweder einen Verschiebungswert oder einen Wert –1 umfasst. Das Verfahren umfasst des Weiteren ein Verarbeiten einer ersten Zeile und einer zweiten Zeile der Paritätsprüfungsmatrix H in demselben Zyklus in einem Verarbeitungselement des Decodierers, das in der Lage ist, eine geschichtete LDPC-Decodierung durchzuführen.
-
Bevor im Folgenden die genaue Beschreibung der Erfindung erfolgt, ist es möglicherweise von Vorteil, Definitionen bestimmter Wörter und Ausdrücke darzulegen, die in dieser gesamten Patentveröffentlichung verwendet werden: Die Begriffe „enthalten” und „umfassen” wie auch Ableitungen davon bedeuten eine Einschließung ohne Einschränkung; der Begriff „oder” ist einschließend und bedeutet „und/oder”; die Ausdrücke „zugehörig” und „damit verbunden” wie auch Ableitungen davon können „beinhalten” „eingeschlossen sein in”, „untereinander verbunden”, „enthalten”, „enthalten sein in”, „verbunden sein mit”, „angeschlossen sein an”, „kommunizierend verbunden mit”, „zusammenarbeiten mit”, „verzahnen”, „nebeneinander stellen”, „in unmittelbarer Nachbarschaft gelegen”, „gebunden sein an”, „aufweisen”, „eine Eigenschaft aufweisen von” oder dergleichen bedeuten; und der Begriff „Steuereinheit” bedeutet jegliche Einrichtung, jegliches System oder jeglichen Teil davon, die, das bzw. der zumindest einen Vorgang steuert, wobei eine solche Einrichtung in Hardware, Firmware oder Software oder in einer Kombination von zumindest zwei dieser umgesetzt werden kann. Es ist zu beachten, dass die Funktionalität, die einer bestimmten Steuereinheit zugehörig ist, zentral oder verteilt, gleichgültig, ob lokal oder entfernt, sein kann. Definitionen für bestimmte Wörter und Ausdrücke werden in dieser gesamten Patentveröffentlichung bereitgestellt, und Kennern der Technik sollte ersichtlich sein, dass solche Definitionen in vielen, wenn nicht in den meisten Fällen, für vorherige wie auch künftige Verwendungen solcher definierter Wörter und Ausdrücke gelten.
-
Verfahren für die Erfindung
-
Die im Folgenden erörterten 1 bis 11 und die verschiedenen Ausführungen, die dazu verwendet werden, die Prinzipien der vorliegenden Offenlegung in dieser Patentveröffentlichung zu beschreiben, dienen lediglich der Veranschaulichung und sind nicht so zu verstehen, dass sie die Offenlegung in jeglicher Hinsicht einschränken. Kennern der Technik ist ersichtlich, dass die Prinzipien der vorliegenden Offenlegung in einem beliebigen, in geeigneter Weise angeordneten, drahtlosen oder drahtgebundenen Kommunikationssystem umgesetzt werden können.
-
Die vorliegende Offenlegung beschreibt eine Vorrichtung und ein Verfahren zum Erhöhen der Konstruktionseffizienz für einen LDPC-Decodierer mit > 1 Gbps. Die vorgeschlagene Architektur unterstützt LDPC-Codes der Matrix H für Z = 42, wie in der US-Patentanmeldung mit dem Aktenzeichen 12/876.903 vorgeschlagen, die zuvor oben durch Bezugnahme eingeschlossen worden ist. Die vorgeschlagene Architektur unterstützt außerdem LDPC-Codes der Matrix H für Z = 24, wie in der US-Patentanmeldung mit dem Aktenzeichen 12/855.442 vorgeschlagen, die zuvor oben durch Bezugnahme eingeschlossen worden ist.
-
Im Wesentlichen können LDPC-Decodierungsverfahren in zwei Hauptkategorien eingeteilt werden. Eine erste Kategorie, die als Flooding- oder parallele Decodierung bezeichnet wird, ignoriert Zeilenkonflikte, um die Parallelität zu erhöhen. Eine zweite Kategorie, die als geschichtete oder serielle Decodierung bezeichnet wird, verwendet die Informationen, die zwischen Zeilenverarbeitungen angesammelt werden. Bei einer geschichteten Decodierung kann aufgrund von Konflikten die Verarbeitung von mehr Zyklen je Iteration erforderlich sein. Die geschichtete Decodierung erfordert jedoch erheblich weniger Iterationen (33% bis 50% weniger Iterationen), um sich derselben BLER-Leistung zu nähern wie die Flooding-Decodierung.
-
Lösungen nach dem Stand der Technik für Gigabit-LDPC-Decodierung haben hauptsächlich das Flooding-Decodierungsverfahren berücksichtigt, um die LDPC-Verarbeitungsparallelität zu erhöhen, um Anforderungen an den Durchsatz zu erfüllen, und haben mögliche Konflikte zwischen den Prüfknoten ignoriert. Dadurch wurde die Verarbeitungseffizienz verringert und die Anzahl der erforderlichen Iterationen erhöht, um die Ziel-FER/BER zu erreichen, was zu einem erhöhten Energieverbrauch führte.
-
8 bis 11 stellen ein Beispiel für eine LDPC-Decodierung mit vier verschiedenen Raten dar, die durch vierverschiedene Matrizen H, wie in WiGig/802.11 ad, Spec 1.0 definiert, mit einer Blockgröße von 672 Bit unterstützt werden. Wie im Folgenden genauer erörtert wird, beschreiben 8 bis 11, wie die beiden Decodierungsverfahren (geschichtet und Flooding) die vorgegebene Rate und die Matrix H verarbeiten können und geben an, wie viele LDPC-Maschinen(-Verarbeitungselemente) und -Zyklen zum Verarbeiten der Matrix H erforderlich sind. Es wird ein Vergleich zwischen den beiden Decodierungsverfahren für die Verarbeitung der betreffenden Rate bereitgestellt.
-
Allgemein bestehen die Vorteile einer Flooding-Decodierungsarchitektur für WiGig in Folgendem: i) Hochgeschwindigkeitsverarbeitung (1 Iteration/Zyklus); und ii) kurze Latenzzeiten (Einzelblockverarbeitung). Die Nachteile einer Flooding-Decodierungsarchitektur für WiGig sind: i) höherer Energieverbrauch je Gatterzahl je Durchsatz; 2langsamere Konvergenz (33 bis 50% langsamer); iii) geringere Effizienz (d. h. im Fall der Rate 13/16 – 3 Zeilen und 4 Maschinen); und iv) längerer kritischer Pfad.
-
Allgemein bestehen die Vorteile einer geschichteten Decodierungsarchitektur für WiGig in Folgendem: i) geringere Gatterzahl je Durchsatz (3 Maschinen statt 4 Maschinen); ii) Skalierbarkeit (Synthesefähigkeit-Einzelmaschinensynthese); iii) kürzerer kritischer Pfad (reduzierte Logik, keine Notwendigkeit, vor dem Zurückschreiben Minimalwerte hinzuzufügen); und iv) ermöglicht vorzeitigen Abbruch zwischen Zeilen. Die Nachteile einer geschichteten Decodierungsarchitektur für WiGig sind: i) 1,5× maximale Latenzzeit aufgrund mehrerer Blöcke; und ii) größere Puffer zur Unterstützung mehrerer Blöcke.
-
1 veranschaulicht ein beispielhaftes drahtloses Netzwerk 100, das LDPC-Codierungen und -Decodierung gemäß den Prinzipien der vorliegenden Offenlegung durchführt. Bei der veranschaulichten Ausführungsform umfasst das drahtlose Netzwerk 100 eine Basisstation (BS) 101, eine Basisstation (BS) 102, eine Basisstation (BS) 103 und sonstige ähnliche (nicht dargestellte) Basisstationen. Die Basisstation 101 steht mit der Basisstation 102 und der Basisstation 103 in Verbindung. Die Basisstation 101 steht außerdem mit dem Internet 130 oder einem ähnlichen (nicht dargestellten) IP-basierten Netzwerk in Verbindung.
-
Die Basisstation 102 stellt (über die Basisstation 101) einen drahtlosen Breitbandzugang zum Internet 130 für eine erste Vielzahl von Mobilstationen innerhalb eines Abdeckungsbereichs 120 der Basisstation 102 bereit. Die erste Vielzahl von Mobilstationen umfasst eine Mobilstation 111, die sich in einem kleinen Unternehmen (small business, SB) befinden kann, eine Mobilstation 112, die sich in einem Großunternehmen (enterprise, E) befinden kann, eine Mobilstation 113, die sich an einem WiFi-Hotspot (HS) befinden kann, eine Mobilstation 114, die sich in einer ersten Wohnung (residence, R) befinden kann, eine Mobilstation 115, die sich in einer zweiten Wohnung (R) befinden kann, und eine Mobilstation 116, bei der es sich um ein Mobilgerät (M) wie zum Beispiel ein Mobiltelefon, einen drahtlosen Laptop, einen drahtlosen PDA oder dergleichen handeln kann.
-
Die Basisstation 103 stellt (über die Basisstation 101) einen drahtlosen Breitbandzugang zum Internet 130 für eine zweite Vielzahl von Mobilstationen innerhalb eines Abdeckungsbereichs 125 der Basisstation 103 bereit. Die zweite Vielzahl von Mobilstationen umfasst die Mobilstation 115 und die Mobilstation 116. Bei einer beispielhaften Ausführungsform können die Basisstationen 101 bis 103 miteinander und mit den Mobilstationen 111 bis 116 mithilfe von OFDM- oder OFDMA-Techniken kommunizieren.
-
Die Basisstation 101 kann entweder mit einer größeren Anzahl oder mit einer kleineren Anzahl von Basisstationen in Verbindung stehen. Wenngleich in 1 nur sechs Mobilstation dargestellt werden, versteht es sich darüber hinaus, dass das drahtlose Netzwerk 100 einen drahtlosen Breitbandzugang für zusätzliche Mobilstationen bereitstellen kann. Es wird darauf hingewiesen, dass sich die Mobilstation 115 und die Mobilstation 116 an den Rändern sowohl des Abdeckungsbereichs 120 als auch des Abdeckungsbereichs 125 befinden. Die Mobilstation 115 und die Mobilstation 116 kommunizieren jeweils sowohl mit der Basisstation 102 als auch mit der Basisstation 103, und ihre Betriebsart kann als Verbindungsübergabe bezeichnet werden, die Kennern der Technik bekannt ist.
-
Die Mobilstationen 111 bis 116 können über das Internet 130 auf Sprach-, Daten-, Video-, Videokonferenz- und/oder sonstige Breitbanddienste zugreifen. Bei einer beispielhaften Ausführungsform können eine oder mehrere der Mobilstationen 111 bis 116 einem Zugangspunkt (access point, AP) eines WiFi-WLAN zugehörig sein. Bei der Mobilstation 116 kann es sich um beliebige einer Anzahl von Mobilgeräten handeln, darunter um ein(en) WLAN-fähige(n/s) Laptop-Computer, persönlichen Datenassistenten, Notebook, Handgerät oder eine sonstige WLAN-fähige Einrichtung. Bei den Mobilstationen 114 und 115 kann es sich zum Beispiel um ein(en) WLAN-fähige(n/s) Personal-Computer (PC), Laptop-Computer, Gateway oder eine sonstige Einrichtung handeln.
-
2A ist ein Übersichtsschaubild eines Übertragungsweges bei einem orthogonalen Frequenzmehrfachzugriffsverfahren (orthogonal frequency division multiple access, OFDMA). 2B ist ein Übersichtsschaubild eines Empfangsweges bei einem orthogonalen Frequenzmehrfachzugriffsverfahren (OFDMA). In den 2A und 2B ist, lediglich zum Zweck der Veranschaulichung und Erläuterung, der OFDMA-Übertragungsweg in der Basisstation (BS) 102 umgesetzt und der OFDMA-Empfangsweg in der Mobilstation (MS) 116 umgesetzt. Es versteht sich jedoch für einen Kenner der Technik, dass der OFDMA-Empfangsweg auch in der BS 102 umgesetzt werden kann und der OFDMA-Übertragungsweg in der MS 116 umgesetzt werden kann.
-
Der Übertragungsweg in der BS 102 umfasst einen Kanalcodierungs- und -modulierungsblock 205, einen Seriell-zu-Parallel-Block (S-zu-P-Block) 210, einen Block für eine schnelle Fourier-Umkehrtransformation (Inverse Fast Fourier Transform, IFFT) 215 mit der Größe N, einen Parallel-zu-Seriell-Block (P-zu-S-Block) 220, einen Block 225 zum Hinzufügen eines zyklischen Präfixes und einen Aufwärtswandler (up-converter, UC) 230. Der Empfangsweg in der MS 116 umfasst einen Abwärtswandler (down-converter, DC) 255, einen Block 260 zum Entfernen des zyklischen Präfixes, einen Seriell-zu-Parallel-Block (S-zu-P-Block) 265, einen Block für eine schnelle Fourier-Transformation (Fast Fourier Transformation, FFT) 270 mit der Größe N, einen Parallel-zu-Seriell-Block (P-zu-S-Block) 275 und einen Kanaldecodierungs- und -demodulierungsblock 280.
-
Zumindest einige der Komponenten in den 2A und 2B können in Software umgesetzt werden, während andere Komponenten durch konfigurierbare Hardware oder eine Mischung aus Software und konfigurierbarer Hardware umgesetzt werden können. Insbesondere wird angemerkt, dass die in dieser Offenlegungsschrift beschriebenen FFT-Blöcke und IFFT-Blöcke als konfigurierbare Software-Algorithmen umgesetzt werden können, wobei der Wert der Größe N entsprechend der Umsetzung modifiziert werden kann.
-
In der BS 102 empfängt der Kanalcodierungs- und -modulierungsblock 205 einen Satz von Informations-Bits, wendet eine LDPC-Codierung an und moduliert (z. B. mit QPSK, QAM) die Eingabe-Bits, um eine Sequenz von Frequenzbereichsmodulations-Symbolen zu erzeugen. Der Seriell-zu-Parallel-Block 210 wandelt (d. h. demultiplext) die seriellen modulierten Symbole in parallele Daten um, um N parallele Symbolströme zu erzeugen, wobei N die IFFT/FFT-Größe ist, die in der BS 102 und der MS 116 verwendet wird. Der IFFT-Block 215 mit der Größe N führt anschließend einen IFFT-Vorgang an den N parallelen Symbolströmen durch, um Zeitbereichs-Ausgangssignale zu erzeugen. Der Parallel-zu-Seriell-Block 220 wandelt (d. h. multiplext) die parallelen Zeitbereichs-Ausgangssymbole aus dem IFFT-Block 215 mit der Größe N um, um ein serielles Zeitbereichssignal zu erzeugen. Der Block 225 zum Hinzufügen eines zyklischen Präfixes fügt dann dem Zeitbereichssignal ein zyklisches Präfix hinzu. Der Aufwärtswandler 230 moduliert schließlich die Ausgabe des Blocks 225 zum Hinzufügen eines zyklischen Präfixes in Hochfrequenz zur Übertragung über einen Funkkanal (d. h. er wandelt sie aufwärts). Das Signal kann auch vor dem Umwandeln in Hochfrequenz im Basisband gefiltert werden
-
Das übertragene HF-Signal trifft in der MS 116 ein, nachdem es den Funkkanal durchlaufen hat, und es werden Vorgänge durchgeführt, die zu denjenigen an der BS 102 umgekehrt sind. Der Abwärtswandler 255 wandelt das Empfangssignal abwärts in die Basisbandfrequenz um, und der Block 260 zum Entfernen des zyklischen Präfixes entfernt das zyklische Präfix, um das serielle Zeitbereichs-Basisbandsignal zu erzeugen. Der Seriell-zu-Parallel-Block 265 wandelt das Zeitbereichs-Basisbandsignal in parallele Zeitbereichssignale um. Der FFT-Block 270 mit der Größe N führt anschließend einen FFT-Algorithmus durch, um N parallele Frequenzbereichssignale zu erzeugen. Der Parallel-zu-Seriell-Block 275 wandelt die parallelen Frequenzbereichssignale in eine Sequenz von modulierten Datensymbolen um. Der Kanaldecodierungs- und -demodulierungsblock 280 demoduliert und decodiert dann die modulierten Symbole (d. h. er führt eine LDPC-Decodierung an ihnen durch), um den ursprünglichen Eingabedatenstrom wiederherzustellen.
-
Jede der Basisstationen 101 bis 103 kann einen Übertragungsweg umsetzen, der mit dem Übertragen auf der Abwärtsstrecke zu den Mobilstationen 111 bis 116 vergleichbar ist, und kann einen Empfangsweg umsetzen, der mit dem Empfangen auf der Aufwärtsstrecke von den Mobilstationen 111 bis 116 vergleichbar ist. In ähnlicher Weise kann jede der Mobilstationen 111 bis 126 einen Übertragungsweg entsprechend der Architektur zum Übertragen auf der Aufwärtsstrecke zu den Basisstationen 101 bis 103 umsetzen und kann einen Empfangsweg entsprechend der Architektur zum Empfangen auf der Abwärtsstrecke von den Basisstationen 101 bis 103 umsetzen.
-
Der Kanaldecodierungs- und -demodulierungsblock 280 decodiert die empfangenen Daten. Der Kanaldecodierungs- und -demodulierungsblock 280 umfasst einen Decodierer, der dazu konfiguriert ist, einen Low-Density-Parity-Check-Decodierungsvorgang durchzuführen. Bei einigen Ausführungsformen umfasst der Kanaldecodierungs- und demodulierungsblock 280 einen oder mehrere Prozessoren mit rekonfigurierbarem Befehlssatz für kontextbasierte Operationen (context-based Operation reconfigurable instruction set processors, CRISPs) wie zum Beispiel den bzw. die CRISP-Prozessor(en), der/die in einer oder mehreren aus der Anmeldung mit dem Aktenzeichen 11/123.313, eingereicht am 06. Mai 2005, mit dem Titel „Context-Based Operation Reconfigurable Instruction Set Processor And Method Of Operation”; dem Patent Nr. 7.769.912, eingereicht am 01. Juni 2005, mit dem Titel „MultiStandard SDR Architecture Using Context-Based Operation Reconfigurable Instruction Set Processors”; dem Patent Nr. 7.483.933, erteilt am 27. Januar 2009, mit dem Titel „Correlation Architecture For Use In Software-Defined Radio Systems”; der Anmeldung mit dem Aktenzeichen 11/225.479, eingereicht am 13. September 2005, mit dem Titel „Turbo Code Decoder Architecture For Use In Software-Defined Radio Systems”; und der Anmeldung mit dem Aktenzeichen 11/501.577, eingereicht am 09. August 2006, mit dem Titel „Multi-Code Correlation Architecture For Use In Software-Defined Radio Systems” beschrieben werden, die sämtlich durch Bezugnahme in die vorliegende Anmeldung eingeschlossen sind, als ob sie hierin vollständig dargelegt würden.
-
3 veranschaulicht eine Top-Level-Architektur eines LDPC-CRISP 300 gemäß Ausführungsformen der vorliegenden Offenlegung. Die in 3 dargestellte Ausführungsform des LDPC-CRISP 300 dient lediglich der Veranschaulichung. Es könnten sonstige Ausführungsformen von Top-Level-Architekturen für den LDPC-CRISP 300 verwendet werden, ohne vom Umfang dieser Offenlegung abzuweichen. Der LDPC-CRISP 300 kann in dem Kanaldecodierungs- und -demodulierungsblock 280 in 2 umgesetzt werden.
-
Der LDPC-CRISP 300 umfasst einen Befehlsdecodierer- & Adressenerzeugerblock 305. Bei einigen Ausführungsformen kann es sich bei dem Befehlsdecodierer- & Adressenerzeugerblock 305 um einen programmierbaren endlichen Automaten handeln. Bei einigen Ausführungsformen arbeitet der Befehlsdecodierer- & Adressenerzeugerblock 305 als Steuereinheit für den LDPC-CRISP 300 und seine Komponenten. Der LDPC-CRISP 300 umfasst außerdem einen Eingabepufferblock 310, einen Leseschalterblock 315, eine Prozessoranordnung 320, einen Schreibschalterblock 325 und einen extrinsischen Pufferblock 330. Bei einigen (nicht ausdrücklich veranschaulichten) Ausführungsformen umfasst der Eingabepufferblock 310 den extrinsischen Pufferblock 330 (z. B. kann es sich bei dem Eingabepufferblock 310 und dem extrinsischen Puffer 330 um denselben Block handeln).
-
Der Befehlsdecodierer- & Adressenerzeugerblock 305 umfasst eine Vielzahl von Befehlen zum Steuern von Vorgängen des LDPC-CRISP 300. Bei einigen Ausführungsformen ist ein Abschnitt (z. B. ein Teil oder alle) der Vielzahl von Befehlen rekonfigurierbar, um den Betrieb des LDCP-CRISP 300 zu variieren. Die Vielzahl von Befehlen kann so rekonfiguriert werden, dass der LDCP-CRISP 300 eine serielle V-Decodierung oder eine serielle C-Decodierung durchführt. Zusätzlich kann die Vielzahl von Befehlen so rekonfiguriert werden, dass der LDPC-CRISP 300 eine Decodierung durch eine Flooding-Technik, eine geschichtete Technik, eine Sum-Product-Technik oder eine Min-Sum-Technik durchführt. Die Vielzahl von Befehlen kann außerdem so rekonfiguriert werden, dass eine Anzahl von Iterationen variiert wird, die so durchgeführt wird, dass der LDPC-CRISP 300 nur eine Anzahl von Iterationen durchführt oder weiterhin Iterationen durchführt, bis ein vorgegebenes Ereignis eintritt oder ein vorgegebener Zeitraum verstrichen ist.
-
Des Weiteren kann die Vielzahl von Befehlen so rekonfiguriert werden, dass der LDPC-CRISP 300 eine Decodierung für einen oder mehrere aus IEEE 802.16e (im Folgenden „WiMax”), Digital Video Broadcasting-Satellite-Second Generation (im Folgenden „DVB-S2”) und International Mobile Telecommunications-Advanced (im Folgenden „IMT-Advanced” oder „4G”) durchführt. Der LDPC-CRISP 300 kann auf jedes System angewendet werden, das einen LDPC-Decodierungsalgorithmus umfasst, darunter, jedoch nicht beschränkt auf CDMA, OFDMA, WiMax, Systeme der dritten Generation (third generation, 3G) und 4G-Systeme. Darüber hinaus kann die Vielzahl von Befehlen so rekonfiguriert werden, dass der LDPC-CRISP 300 die Anzahl von LDPC-CRISP-Decodierereinheiten zur Verwendung bei dem Decodierungsvorgang variiert. Der Befehlsdecodierer- & Adressenerzeugerblock 305 ist außerdem dazu konfiguriert, eine Matrix H zu speichern (im Folgenden im Hinblick auf 5A und 5B erörtert).
-
Der Eingabepufferblock 310 ist dazu konfiguriert, Daten (z. B. Codewörter oder Symbole) zu empfangen. Der Eingabepufferblock 310 umfasst eine Anzahl von Speicherblöcken zum Speichern der empfangenen Daten. Bei einigen Ausführungsformen kann der Eingabepufferblock 310 vierundzwanzig (24) Speicherblöcke zum Speichern der empfangenen Daten umfassen.
-
Der Leseschalter liest die Matrix H aus dem Befehlsdecodierer- & Adressenerzeugerblock 305. Der Leseschalter 315 liest außerdem die empfangenen Daten aus dem Eingabepufferblock 310. Der Leseschalter 315 verwendet die Matrix H dazu zu ermitteln, ab welcher Position die Daten aus dem Eingabepuffer 310 gelesen werden sollen. Der Leseschalter 315 ist dazu konfiguriert, einen Z-Faktor-Rechtsverschiebungsmultiplexer(MUX)-Vorgang auf die empfangenen Daten anzuwenden, die aus dem Eingabepufferblock 310 gelesen worden sind. Der Z-Faktor-Rechtsverschiebungsmultiplexer(MUX)-Vorgang beruht auf den Verschiebungsdaten, die aus der Matrix H errechnet worden sind, oder auf dem Verschiebungsvektor (im Folgenden im Hinblick auf 5A und 5B erörtert).
-
Die Prozessoranordnung 320 umfasst eine Anzahl von Prozessorelementen. Jedes Prozessorelement (PE) umfasst eine Vielzahl von Prozessoren, die dazu konfiguriert sind, eine Flooding-Technik, eine geschichtete Technik, eine Sum-Product-Technik oder eine Min-Sum-Technik durchzuführen. Beispielsweise kann die Prozessoranordnung 320 dazu konfiguriert sein, Minimalwerte mithilfe einer Min-Sum-Technik zu suchen. Des Weiteren ist die Prozessoranordnung 320 dazu konfiguriert, eine Decodierung für einen oder mehrere aus WiMax, DVB-S2 und 4G durchzuführen. Bei einigen Ausführungsformen umfasst die Prozessoranordnung 320 vier (4) Prozessorelemente, wobei jedes Prozessorelement vierundzwanzig (24) Prozessoren umfasst. Bei solchen Ausführungsformen kann der LDPC-CRISP 300 als 2/4-Einheiten-LDPC-Decoder-CRISP bezeichnet werden.
-
Der Schreibschalterblock 325 ist dazu konfiguriert, eine Min/Next-Min-Auswahl und -Summen von der Prozessoranordnung 320 zu empfangen. Der Schreibschalterblock 325 ist des Weiteren dazu konfiguriert, einen Z-Faktor-Linksverschiebungs-MUX-Vorgang auf die Min/Next-Min-Auswahl und -Summen, die von der Prozessoranordnung 320 empfangen wurden, anzuwenden, um einen Satz von extrinsischen Ausgabedaten zu erzeugen. Ferner ist der Schreibschalterblock 325 dazu konfiguriert, die extrinsischen Ausgabedaten des Schreibschalterblocks 325 in den extrinsischen Pufferblock 330 zu schreiben. Beispielsweise ist der Schreibschalterblock 325 dazu konfiguriert, die Matrix H zu verwenden, um den durch den Leseschalter 315 durchgeführten Vorgang umzukehren.
-
Der extrinsische Pufferblock 330 ist dazu konfiguriert, die extrinsischen Ausgabedaten in einer Anzahl von Speichereinheiten zu speichern. Bei einigen Ausführungsformen umfasst der extrinsische Pufferblock 330 vierundzwanzig (24) Speichereinheiten. Der extrinsische Pufferblock 330 ist außerdem so mit dem Leseschalter 315 verbunden, dass der Leseschalter 315 die extrinsischen Ausgabedaten (im Folgenden auch als „extrinsische Ausgabe” bezeichnet) lesen kann.
-
Auf diese Weise ist der LDPC-CRISP 300 in der Lage, eine Anzahl von Iterationen der empfangenen Daten durchzuführen. Der LDPC-CRISP 300 ist in der Lage, die Eingabedaten zu lesen und einen Decodierungsprozess auf die Eingabedaten anzuwenden, um extrinsische Daten auszugeben. Anschließend führt der LDPC-CRISP 300 eine oder mehrere Iterationen des Decodierungsprozesses unter Verwendung der extrinsischen Daten aus dem vorherigen Decodierungsprozess als Eingabe für den nächsten Decodierungsprozess durch. Die Eingabedaten als solche werden nur einmal verwendet, und anschließend erzeugt der LDPC-CRISP 300 die extrinsischen Daten zur Verwendung in den nachfolgenden Iterationen.
-
Der LDPC-CRISP 300 kann so konfiguriert werden, dass er Iterationen durchführt, bis ein Beendigungsereignis eintritt. Beispielsweise kann der LDPC-CRISP 300 dazu konfiguriert werden, eine vorgegebene Anzahl von Iterationen durchzuführen. Darüber hinaus kann der LDPC-CRISP 300 dazu konfiguriert werden, Iterationen durchzuführen, bis die extrinsischen Daten einen vorgegebenen Wert (z. B. einen Konvergenzpunkt) erreichen. Des Weiteren kann der LDPC-CRISP 300 so konfiguriert werden, dass er Iterationen durchführt, bis eine Ausgabe des höchstwertigen Bits (most significant bit, MSB) über mehrere aufeinanderfolgende Iterationen unverändert ist.
-
Bei LDPC-Codes handelt es sich um lineare Codes, die durch dünnbesetzte Paritätsprüfungsmatrizen (H) gekennzeichnet sein können. Die Matrix H weist eine geringe Dichte von binären 1-Bits auf. Die dünne Besetzung von H führt zu einem großen d
min und verringert die Decodierungskomplexität. Eine beispielhafte Matrix H wird durch die Gleichung 1 dargestellt: [Gleichung 1]
-
Ein LDPC-Code ist regulär, wenn jede Zeile dasselbe Gewicht (Wr) aufweist und jede Spalte dasselbe Gewicht (Wc) aufweist. Der reguläre LDPC-Code wird mit (Wc, Wr)-regular angegeben. Anderenfalls ist der LDPC-Code irregulär. Reguläre Codes lassen sich leichter implementieren und analysieren. Ferner weisen reguläre Codes geringere Grundfehler auf. Irreguläre Codes können jedoch die Kapazität besser ausschöpfen als reguläre Codes.
-
4 veranschaulicht einen Tanner-Graphen 400, der einer Paritätsprüfmatrix gemäß Ausführungsformen der vorliegenden Offenlegung entspricht. Die in 4 dargestellte Ausführungsform des Tanner-Graphen 400 dient lediglich der Veranschaulichung. Es könnten sonstige Ausführungsformen des Tanner-Graphen 400 verwendet werden, ohne vom Umfang dieser Offenlegung abzuweichen.
-
Bei dem Tanner-Graphen 400 handelt es sich um einen bipartiten Graphen. Bei bipartiten Graphen werden Knoten in zwei getrennte Sätze aufgeteilt, und die Kanten verbinden nur Knoten zweier unterschiedlicher Typen. Die beiden Typen von Knoten in dem Tanner-Graphen 400 werden als variable Knoten (im Folgenden „V-Knoten”) und Prüfknoten (check nodes, im Folgenden „C-Knoten”) bezeichnet.
-
V-Knoten entsprechen Bits des Codewortes oder, gleichwertig, Spalten der Paritätsprüfungsmatrix H. Es sind n V-Knoten vorhanden. V-Knoten werden auch als „Bit-Knoten” bezeichnet. C-Knoten entsprechen Paritätsprüfungsgleichungen oder, gleichwertig, Zeilen der Paritätsprüfungsmatrix H. Es sind zumindest m = n – k C-Knoten vorhanden.
-
Der Tanner-Graph 400 entspricht der Paritätsprüfungsmatrix H, die durch Gleichung 1 veranschaulicht wird. Der Tanner-Graph 400 umfasst fünf (5) C-Knoten (die Anzahl der Paritäts-Bits) und zehn (10) V-Knoten (die Anzahl der Bits in einem Codewort). Der C-Knoten fi ist mit dem V-Knoten cj verbunden, wenn es sich bei dem Element hij der Matrix H um eine binäre 1 handelt. Beispielsweise ist der C-Knoten f0 mit c0, c1, c2, c3, c5, c7 und c9 verbunden. Die Verbindung zwischen f0 und c0 entspricht h00; die Verbindung zwischen f0 und c2 entspricht h01; und so weiter. Folglich entsprechen die Verbindungen mit f0 der ersten Zeile in der Matrix H, wie in Gleichung 2 weiter veranschaulicht wird:
-
[Gleichung 2]
-
-
H 0 = [1 1 1 1 0 1 0 1 0 1]
-
Bei einem Grad eines Knotens handelt es sich um die Anzahl der Kanten (z. B. Verbindungen), die mit dem Knoten verbunden sind. Ein Zyklus ist in dem Tanner-Graphen 400 die Gesamtlänge eines Weges mit unterschiedlichen Kanten, der in sich selbst endet. Ein Weg von c1→f2→c2→f0→c1 ist ein Beispiel für einen kurzen Zyklus. Kurze Zyklen sollten vermieden werden, da kurze Zyklen die Decodierungsleistung beeinträchtigen. Kurze Zyklen treten in der Matrix H durch Spalten mit einer Überlappung von zwei zutage.
-
Bei einigen Ausführungsformen verwendet der LDPC-CRISP 300 einen Sum-Product-Prozess zum Decodieren der LDPC-Codes. Bei einigen solchen Ausführungsformen wird eine Decodierung mit harter Entscheidung durchgeführt. Bei anderen solchen Ausführungsformen wird eine Decodierung mit weicher Entscheidung durchgeführt. Bei zusätzlichen und alternativen Ausführungsformen verwendet der LDPC-CRISP 300 einen Min-Sum-Prozess.
-
Der LDPC-CRISP 300 ist als Universaldecodierer zur Verwendung mit mehreren Übertragungsstandards konfiguriert, darunter, jedoch nicht beschränkt auf WiMax, DVB-S2 und 4G. Der LDPC ist dazu konfiguriert, eine Anzahl von Coderaten zu verwenden, darunter, jedoch nicht beschränkt auf: die Coderate 1/2, die Coderate 5/8, die Coderate 3/4 und die Coderate 13/16.
-
5A veranschaulicht einen Code 500 mit der Rate 1/2 gemäß einer Ausführungsform eines herkömmlichen LDPC-Decodierers. Die in 5A dargestellte Ausführungsform des Codes 500 mit der Rate 1/2 dient lediglich der Veranschaulichung. Es könnten sonstige Ausführungsformen des Codes 500 mit der Rate 1/2 verwendet werden, ohne vom Umfang dieser Offenlegung abzuweichen.
-
Bei einigen Ausführungsformen kann die Paritätsprüfungsmatrix H, die in einem Empfangsweg gespeichert ist (die z. B. in dem Kanaldecodierer und -demodulator 280 gespeichert ist) entsprechend dem Code 500 mit der Rate 1/2 konfiguriert werden. Bei dem Code 500 mit der Rate 1/2 handelt es sich um eine 576-×-288-Matrix, die eine Übertragung von fünfhundertsechsundsiebzig (576) Bits pro Rahmen (bits per frame, bpf) darstellt. Bei dem Code 500 mit der Rate 1/2 stellen die ersten zwölf (12) Spalten 505 systematische (oder Daten-)Bits dar, wohingegen die zweiten zwölf (12) Spalten 510 Paritäts-(oder Redundanz-)Bits darstellen. Jedes Bit ist ein Positions-Bit, das eine 24-×-24-Matrix darstellt. Der Z-Faktor definiert die Anzahl der Bits pro Matrix. Der Z-Faktor kann zum Beispiel vierundzwanzig (24) betragen. Insofern umfasst bei dem Code 500 mit der Rate 1/2 jeder Rahmen bei der Übertragung zweihundertachtundachtzig (288) systematische Bits und zweihundertachtundachtzig (288) Paritäts-Bits. Ein Wert –1 stellt eine Nullmatrix (0-Matrix) dar. Dementsprechend gibt ein Wert „–1” an, dass die Position in der Berechnung nicht verwendet wird. Bei den verbleibenden Werten (d. h. die nicht –1 sind) handelt es sich um Positionswerte, die eine Matrix darstellen. Beispielsweise wird die Matrix, die durch den Positionswert 94 dargestellt wird, der in h01 515 zu finden ist, durch vier (4) dividiert und abgerundet, um dreiundzwanzig (23) zu erzielen. Anschließend wird die Einheitsmatrix dreiundzwanzig Mal verschoben.
-
5B veranschaulicht einen Code 550 mit der Rate 5/6 gemäß einer Ausführungsform eines herkömmlichen LDPC-Decodierers. Die in 5B dargestellte Ausführungsform des Codes 550 mit der Rate 5/6 dient lediglich der Veranschaulichung. Es könnten sonstige Ausführungsformen des Codes 550 mit der Rate 5/6 verwendet werden, ohne vom Umfang dieser Offenlegung abzuweichen.
-
Bei einigen Ausführungsformen kann die Paritätsprüfungsmatrix H entsprechend dem Code 550 mit der Rate 5/6 konfiguriert werden. Bei dem Code 550 mit der Rate 5/6 handelt es sich um eine 576-×-288-Matrix, die eine Übertragung von fünfhundertsechsundsiebzig (576) bpf darstellt. Bei dem Code 550 mit der Rate 5/6 stellen die ersten zwanzig (20) Spalten 555 systematische (Daten-)Bits dar, wohingegen die letzten vier (4) Spalten 560 Paritäts-(oder Redundanz-)Bits darstellen. Insofern umfasst bei der Verwendung des Codes 550 mit der Rate 5/6 jeder Rahmen bei der Übertragung vierhundertachtzig (480) systematische Bits und sechsundneunzig (96) Paritäts-Bits. Ein Wert –1 stellt eine 24-×-24-Nullmatrix (0-Matrix) dar. Dementsprechend gibt ein Wert –1 an, dass das Bit nicht verwendet wird. Bei den verbleibenden Werten (die nicht –1 sind) handelt es sich um Positionswerte, die eine Matrix darstellen. Beispielsweise wird die Matrix, die durch den Positionswert 25 dargestellt wird, der in h01 565 zu finden ist, durch vier (4) dividiert und abgerundet, um sechs (6) zu erzielen. Anschließend wird die Einheitsmatrix sechs Mal verschoben.
-
Bei einigen Ausführungsformen kann eine 4G-Matrix H zwei Vektoren umfassen. Bei solchen Ausführungsformen umfasst der erste Vektor nur die Positionswerte, wohingegen der zweite Vektor einen Verschiebungswert umfasst. Beispielsweise wird der Positionsvektor für die erste Zeile der Matrix H 500 durch Gleichung 3 veranschaulicht:
-
[Gleichung 3]
-
-
Jeder Wert in dem Vektor H
0, der in Gleichung 3 veranschaulicht wird, stellt eine Spaltenposition ungleich null (z. B. nicht „–1” für die Zeile 0 dar.
3 Darüber hinaus wird der zweite Vektor (hierin als H
s0 bezeichnet), der die Verschiebungswerte für die Matrix H
500 enthält, durch Gleichung 4 veranschaulicht: [Gleichung 4]
-
Wenn man die Brüche auflöst, kann die Gleichung 4 als Gleichung 5 geschrieben werden:
-
[Gleichung 5]
-
-
6 veranschaulicht ein ausführliches Blockschaubild eines beispielhaften LDPC-Decodierer-CRISP 600, der eine Decodierung gemäß einem Flooding-Verfahren durchführt. Die in 6 dargestellte Ausführungsform des LDPC-CRISP 600 für serielle V-Decodierung dient lediglich der Veranschaulichung. Es könnten sonstige Ausführungsformen des LDPC-CRISP 600 verwendet werden, ohne vom Umfang dieser Offenlegung abzuweichen. In 6 wird angenommen, dass Decodierungsvorgänge an insgesamt N = 672 Bit durchgeführt werden. Bei einer Decodierung mit einer Rate 1/2 wären folglich 336 systematische Bits und 336 Parität-Bits vorhanden. Für Z = 42 werden die 336 systematischen Bits in 8 Blöcke von jeweils 42 Daten-Bits segmentiert, und die 336 Paritäts-Bits werden in 8 Blöcke von jeweils 42 Paritäts-Bits segmentiert.
-
Der LDPC-CRISP 600 umfasst einen Eingabepuffer, der eine Vielzahl von einzelnen Speichereinheiten 605 umfasst. Bei den einzelnen Speichereinheiten 605 handelt es sich um eine Vielzahl von getrennten und unterschiedlichen Speichereinrichtungen, die jeweils in der Lage sind, Daten in unabhängigen Datenschreibvorgängen zu empfangen, die in den übrigen einzelnen Speichereinheiten 605 auftreten.4 Bei einer beispielhaften Ausführungsform umfasst der LDPC-CRISP 600 sechzehn (16) Speichereinheiten 605a bis 605p. Es versteht sich, dass die Darstellung von 16 Speichereinheiten lediglich beispielhaft ist und die Vielzahl von Speichereinheiten 605 eine beliebige Anzahl von Speichereinheiten umfassen kann. Die Speichereinheiten 605a bis 605p sind dazu konfiguriert, über den Empfangsweg empfangene Daten zu speichern. Der LDPC-CRISP 600 ist als solcher dazu konfiguriert, 16 Daten gleichzeitig zu lesen (statt nur ein Datum gleichzeitig, wenn lediglich eine Speichereinheit verwendet wird).
-
Beispielsweise kann jede Speichereinheit 605 Datenstichproben (z. B. 8 weiche Bits) aus dem Empfangsweg in 2B empfangen. In einem solchen Beispiel empfängt die Speichereinheit 605a Stichproben 0 bis 41 von systematischen Daten zu einem Zeitpunkt t0, wenn die Speichereinheit 605a Daten empfängt. In ähnlicher Weise würde die Speichereinheit 605b Datenstichproben 42 bis 83 zum Zeitpunkt t0 empfangen und so weiter. Schließlich würde die Speichereinheit 605p Datenstichproben 629 bis 671 zum Zeitpunkt t0 empfangen. Folglich empfangen die Speichereinheiten 605a bis 605p gleichzeitig (336) Stichproben von Daten (systematische oder Paritätsdaten).
-
Der LDPC-CRISP 600 umfasst außerdem einen extrinsischen/Zeilensubtrahiererblock 610. Der extrinsische/Zeilensubtrahiererblock 610 ist dazu konfiguriert, dass er zumindest einen Abschnitt extrinsischer Daten, die durch einen Schreibschalter 640 in den Speicherbänken gespeichert worden sind, entfernt. Der extrinsische/Zeilensubtrahiererblock 610 verfügt über 16 Eingabekanäle, einen für jede der Speichereinheiten 605a bis 605p, und über 16 Ausgabekanäle.
-
Der LDPC-CRISP 600 umfasst außerdem einen 1-zu-1-Leseschalter 615. Der Leseschalter 615 wählt N variable Eingaben aus den 16 Eingabe-/extrinsischen Daten je Zeile aus und richtet sie aus. N entspricht der Anzahl von Prozessorelementen (z. B. Prozessoren), die in einer Prozessoranordnung 625 arbeiten.
-
Der LDPC-CRISP 600 umfasst einen Z-Faktor-Rechtsverschiebungs-MUX-Block 620. Der Z-Faktor-Rechtsverschiebungs-MUX-Block 620 ist dazu konfiguriert, einen Z-Faktor-Rechtsverschiebungs-MUX-Vorgang auf die empfangenen Daten, die aus den Speicherbänken 605 (über die Blocke 610 und 615) gelesen worden sind, anzuwenden. Nach dem Auswählen der N Eingaben/extrinsischen Ausgaben richtet der Z-Faktor-Rechtsverschiebungs-MUX-Block 620 die N Eingaben/extrinsischen Ausgaben auf der Grundlage der Matrix H aus (d. h. der führt eine Z-Verschiebung an ihnen aus).
-
Beispielsweise wird die Z-Faktorverschiebung auf die Daten in jeder Speichereinheit 605 entsprechend der Matrix H 500 angewendet. Da jeder Positionswert einer 42-×-42-Matrix (z. B. 42 Stichproben von Daten) entspricht, werden beispielsweise alle 42 Stichproben von Daten in jeder Speichereinheit 605 auf der Grundlage des in der Matrix H zu findenden Positionswertes verarbeitet. Folglich werden sämtliche Daten in den Speichereinheiten 605a bis 605p auf der Grundlage der Matrix H verschoben.
-
Ein Minimumerkennungsblock 625 umfasst eine Anzahl von Prozessoren, die dazu konfiguriert sind, eine Flooding-Technik, eine Sum-Product-Technik oder eine Min-Sum-Technik durchzuführen. Der Minimumerkennungsblock 625 kann Strukturen und Funktionen ähnlich der Prozessoranordnung 320 in 3 umfassen. Beispielsweise kann der Minimumerkennungsblock 625 dazu konfiguriert sein, Minimalwerte mithilfe einer Min-Sum-Technik zu suchen. Des Weiteren ist der Minimumerkennungsblock 625 dazu konfiguriert, eine Decodierung für einen beliebigen oder mehrere beliebige aus WiMax, DVB-S2 und 4G durchzuführen. Jeder der Prozessoren in dem Minimumerkennungsblock 625 ist dazu konfiguriert, eine unterschiedliche Gleichung anzuwenden, wie durch die Matrix H dargestellt. Bei einigen Ausführungsformen umfasst die Prozessoranordnung 16 Prozessoren. Bei einigen zusätzlichen und alternativen Ausführungsformen umfasst der Minimumerkennungsblock 625 eine einzige Einheit mit 42 Prozessoren.
-
Jedes der Prozessorelemente in dem Minimumerkennungsblock 625 ist dazu konfiguriert, aus jeder der Speichereinheiten 605a bis 605p zu lesen, so dass alle in einer der Speichereinheiten 605a bis 605p gespeicherten Daten gleichzeitig unter Verwendung einer unterschiedlichen Gleichung verarbeitet werden.
-
Der Minimumerkennungsblock 625 ist von der Anzahl der Z-Faktor-Spalten abhängig, die pro Zyklus verarbeitet werden. Bei einigen Ausführungsformen ist der Minimumerkennungsblock 625 dazu konfiguriert, einen Minimalwert (Min-Wert) und einen nächsten Minimalwert (Next-Min-Wert) entsprechend dem kleinsten Bit-Wert bzw. dem zweitkleinsten Bit-Wert auszugeben. Der Minimumerkennungsblock 625 speichert die Min- und Next-Min-Werte in einem oder mehreren Registern. Das eine oder die mehreren Register sind in dem Minimumerkennungsblock 625 enthalten.
-
Der LDPC-CRISP 600 umfasst eine Anzahl von Auswahl- und Additionsblöcken 630. Bei einigen Ausführungsformen umfasst der LDPC-CRISP 600 einen ersten Auswahl- und Additionsblock 630a und einen zweiten Auswahl- und Additionsblock 630b. Jeder der Auswahl- und Additionsblöcke 630 ist dazu konfiguriert, einen Min/Next-Min-Auswahl- und -Additionsvorgang durchzuführen. Bei einigen Ausführungsformen ist der erste Auswahl- und Additionsblock 630a dazu konfiguriert, den Min/Next-Min-Auswahl- und -Additionsvorgang an einem ersten Prüfknoten durchzuführen, wohingegen der zweite Auswahl- und Additionsblock 630b dazu konfiguriert ist, den Min/hext-Min-Auswahl- und -Additionsvorgang an einem zweiten Prüfknoten durchzuführen.
-
Der LDPC-CRISP 600 umfasst des Weiteren eine Anzahl von Z-Faktor-Linksverschiebungs-MUX-Blöcken 635. Bei einigen Ausführungsformen umfasst der LDPC-CRISP 600 einen ersten Z-Faktor-Linksverschiebungs-MUX-Block 635a und einen zweiten Z-Faktor-Linksverschiebungs-MUX-Block 635b. Jeder der Anzahl von Z-Faktor-Linksverschiebungs-MUX-Blöcken 634a, b ist dazu konfiguriert, eine Min/Next-Min-Auswahl und Min/Next-Min-Summen zu empfangen und einen Z-Faktor-Linksverschiebungs-MUX-Vorgang an der empfangenen Min/Next-Min-Auswahl und den empfangenen Min/Next-Min-Summen durchzuführen.
-
Der LDPC-CRISP 600 ist dazu konfiguriert, einen Satz von Ausgabedaten (z. B. von extrinsischen Ausgaben) zu erzeugen. Jeder einer Anzahl von Schreibschalterblöcken 640 ist dazu konfiguriert, die Ausgabedaten der Z-Faktor-Linksverschiebungs-MUX-Blöcke 635 in zumindest eine aus einer Vielzahl von extrinsischen Speichereinheiten 645 und die Vielzahl von Speicherbänken 605 zu schreiben. Bei einigen Ausführungsformen ist ein erster Schreibschalterblock 640a dazu konfiguriert, die Ausgabedaten in die Vielzahl von extrinsischen Speichereinheiten 645 zu schreiben, wohingegen ein zweiter Schreibschalterblock 640b dazu konfiguriert ist, die Ausgabedaten in die Vielzahl von Speichereinheiten 605 zu schreiben.
-
7 veranschaulicht ein ausführliches Blockschaubild eines beispielhaften LDPC-Decodierer-CRISP 700, der eine geschichtete Decodierung gemäß den Prinzipien der vorliegenden Offenlegung durchführt. Herkömmliche Verfahren zur geschichteten Decodierung verarbeiten jeweils eine Zeile der Matrix H. Decodierte Informationen aus einer Zeile werden beim Decodieren von nachfolgenden Zeilen verwendet. Das verbesserte Verfahren zur geschichteten Decodierung unterscheidet sich jedoch von herkömmlichen Verfahren zur geschichteten Decodierung insofern, als zwei Zeilen gleichzeitig decodiert werden können, sofern Spaltenelemente in den beiden ausgewählten Zeilen der Matrix sich gegenseitig ausschließen oder nicht überlappend sind (d. h. die Elemente aus derselben Spalte werden nicht gleichzeitig verwendet).
-
8 kann zur Veranschaulichung dieses Konzeptes herangezogen werden. 8 stellt eine Matrix H für einen Code mit einer Rate 1/2 dar. Die erste Zeile der Matrix H und die dritte Zeile der Matrix H schließen sich gegenseitig aus oder sind nicht überlappend. Es wird daran erinnert, dass ein Eintrag –1 in der Matrix H angibt, dass der entsprechende Eintrag in der Matrix H beim Decodieren der systematischen und der Paritäts-Bits nicht verwendet wird. Bei jedem Spaltenelement in der ersten Zeile der Matrix H, das nicht –1 ist, ist das entsprechende Spaltenelement in der dritten Zeile der Matrix H –1 (nicht verwendet). In ähnlicher Weise ist bei jedem Spaltenelement in der dritten Zeile der Matrix H, das nicht –1 ist, das entsprechende Spaltenelement in der ersten Zeile der Matrix H –1 (nicht verwendet).
-
Genauer gesagt, die Werte der ersten (= 40), dritten (= 38), fünften (= 13), siebten (= 5) und neunten (= 18) Spalte der ersten Zeile entsprechen sämtlich Werten von –1 in der ersten, dritten, fünften, siebten und neunten Spalte der dritten Zeile. Außerdem entsprechen die Werte der zweiten (= 36), vierten (= 31), sechsten (= 7), achten (= 34), zehnten (= 10) und elften (= 41) Spalte der dritten Zeile sämtlich Werten von –1 in der zweiten, vierten, sechsten, achten, zehnten und elften Spalte der ersten Zeile.
-
Es ist diese Eigenschaft der ersten und der dritten Zeile, die gleichzeitig decodiert werden sollen, sich gegenseitig auszuschließen (oder nicht zu überlappen), selbst bei einem Verfahren zur geschichteten Decodierung.[Satz unverständlich, möglichweise unvollständig] In ähnlicher Weise schließen sich die zweite und die vierte Zeile der Matrix H in 8 gegenseitig aus und können gleichzeitig decodiert werden.
-
In 7 ähneln viele der Komponentenblöcke des LDPC-CRISP 700 dem LDPC-CRISP 600 in 6. Insbesondere umfasst der LDPC-CRISP 700 einen Eingabepuffer, der eine Vielzahl von einzelnen Speichereinheiten 605a bis 605p umfasst, wie bei dem LDPC-CRIPS5 600. Der LDPC-CRISP 700 umfasst darüber hinaus einen extrinsischen/Zeilensubtrahiererblock 610 wie bei dem LDPC-CRIPS6 600.
-
Der 1-zu-1-Leseschalter 615 ist in 7 jedoch durch einen 1-×-16-zu-2-×-8-Leseschalter 715 ersetzt worden. Der Leseschalter 715 empfängt die 16 Eingabekanäle von dem Subtrahiererblock 610, teilt jedoch die Ausgaben in zwei getrennte 8-Kanalausgaben auf, eine für jede der sich gegenseitig ausschließenden Zeilen, die gleichzeitig verarbeitet werden.
-
Anschließend werden die beiden getrennten Kanäle parallel verarbeitet. Der Z-Faktor-Rechtsverschiebungs-MUX-Block 720a führt eine Rechtsverschiebung an einer ersten Gruppe von acht Ausgaben (entsprechend einer sich gegenseitig ausschließenden Matrixzeile) aus dem Subtrahiererblock 715 durch. Der Z-Faktor-Rechtsverschiebungs-MUX-Block 720b führt eine Rechtsverschiebung an einer zweiten Gruppe von acht Ausgaben (entsprechend einer zweiten sich gegenseitig ausschließenden Matrixzeile) aus dem Subtrahiererblock 715 durch.
-
Ein Minimumerkennungsblock 725 umfasst eine Anzahl von Prozessoren, die dazu konfiguriert sind, einen Vorgang einer geschichteten Decodierung an einer Gruppe von 8 Ausgabekanälen aus dem MUX-Block 720a gleichzeitig mit einer weiteren Gruppe von 8 Ausgabekanälen aus dem MUX-Block 720b durchzuführen. Anders als der Minimumerkennungsblock 625 (der einen Min-Wert und einen Next-Min-Wert erzeugt) erzeugt der Minimumerkennungsblock 725 ein Paar solcher Werte, nämlich einen Min-Wert und einen Next-Min-Wert für die Ausgaben aus dem MUX-Block 720a und einen Min-Wert und einen Next-Min-Wert für die Ausgaben aus dem MUX-Block 720b. Auf der Grundlage der aktuellen verarbeiteten Zeilen der Matrix H kann der Minimumerkennungsblock 725 entweder die beiden Min-Werte (und zwei entsprechende Next-Min-Werte) der beiden Sätze von 8 Eingaben (für zwei sich gegenseitig ausschließende Zeilen) oder einen einzelnen Min-Wert (und den entsprechenden Next-Min-Wert) aller 16 Eingaben (für eine einzelne Zeile) ausgeben.
-
Die Auswahl- und Additionsblöcke 730a, 730b, 730c und 730d führen Vorgänge durch, die mit den Vorgängen vergleichbar sind, die durch die Auswahl- und Additionsblöcke 630a und 730b durchgeführt werden. Jeder der Auswahl- und Additionsblöcke 730a bis 730d verarbeitet jedoch 8 Eingabekanäle und erzeugt 8 Ausgabekanäle, wohingegen jeder der Auswahl- und Additionsblöcke 630a und 630b 16 Eingabekanäle verarbeitet und 16 Ausgabekanäle erzeugt.
-
In ähnlicher Weise führen die Z-Faktor-Rechtsverschiebungs-MUX-Blöcke 735a, 735b, 735c und 750d Vorgänge durch, die mit den Vorgängen vergleichbar sind, die durch die Z-Faktor-Linksverschiebungs-MUX-Blöcke 635a und 635b durchgeführt werden. Jeder der MUX-Blöcke 735a bis 750d verarbeitet jedoch 8 Eingabekanäle und erzeugt 8 Ausgabekanäle, wohingegen die MUX-Blöcke 635a und 635b jeweils 16 Eingabekanäle verarbeiten und 16 Ausgabekanäle erzeugen.
-
Schließlich umfasst der LDPC-CRISP 700 Schreibschalterblöcke 740a und 740b, bei denen es sich um 2-×-8-zu-1-×-16-Einrichtungen handelt, die den Vorgang des 1-×-16-zu-2-×-8-Leseschalters 715 umkehren. Der Schreibschalterblock 740a schreibt Ausgabedaten in die extrinsischen Speichereinheiten 645a bis 645p. Der Schreibschalterblock 740b schreibt die Ausgabedaten in die Speichereinheiten 605a bis 605p.
-
8 bis 11 veranschaulichen die komparativen Vorteile der geschichteten Decodierung gemäß den Prinzipien der vorliegenden Offenlegung.
-
8 stellt eine Matrix H für einen Code mit der Rate 1/2 dar. Bei einer beispielhaften Ausführungsform umfasst der LDPC-Decodierer-CRISP 700 16 Verarbeitungselemente, wobei jedes Verarbeitungselement 42 Daten- oder Paritäts-Bits pro Zyklus verarbeitet. Bei dem Code mit der Rate 1/2 in 8 sind 4 Paare unabhängiger (d. h. sich gegenseitig ausschließender oder nicht überlappender) Zeilen vorhanden, die unabhängig voneinander verarbeitet werden können (d. h. parallele Maschinen für ein Flooding). Bei einem Maximum von Wr = 8 Eingaben pro Zeile kann jede Maschine 2 Zeilen (8 + 8 Verarbeitungselemente) pro Zyklus verarbeiten.
-
Bei einem geschichteten Vorgang verarbeitet eine Maschine Nr. P0 die erste und die dritte Zeile in einem ersten Zyklus (T = 0). Die Maschine Nr. P0 verarbeitet die zweite und die vierte Zeile in einem zweiten Zyklus (T = 1). Die Maschine Nr. P0 verarbeitet die fünfte und die siebte Zeile in einem dritten Zyklus (T = 2). Schließlich verarbeitet die Maschine Nr. P0 die sechste und die achte Zeile in einem vierten Zyklus (T = 3).
-
Bei einem Flooding-Vorgang verarbeitet die Maschine Nr. P0 die erste und die dritte Zeile, eine Maschine Nr. P1 verarbeitet die zweite und die vierte Zeile, eine Maschine Nr. P2 verarbeitet die fünfte und die siebte Zeile, und eine Maschine Nr. P3 verarbeitet die sechste und die achte Zeile, alle in demselben Zyklus.
-
Folglich ist das Flooding vier Mal schneller als die geschichtete Decodierung, erfordert jedoch vier Mal so viele Verarbeitungselemente. Bei der Flooding-Decodierung wird jedoch Konvergenz um 33 bis 50% langsamer erreicht als bei einer geschichteten Decodierung. Infolgedessen ist die Flooding-Decodierung etwa 33% weniger effizient als die geschichtete Decodierung.
-
9 stellt eine Matrix H für einen Code mit einer Rate 5/8 dar. Bei dem Code mit der Rate 5/8 sind 2 Paare unabhängiger Zeilen, die unabhängig voneinander verarbeitet werden können, und 2 abhängige Zeilen (d h. 4 parallele Maschine für ein Flooding) vorhanden. Bei den 2 Paaren mit einem Maximum von Wr <= 8 Eingaben pro Zeile kann jede Maschine 2 Zeilen (8 + 8 Verarbeitungselemente) pro Zyklus verarbeiten.
-
Bei einem geschichteten Vorgang verarbeitet die Maschine Nr. P0 die erste7 in einem ersten Zyklus (T = 0). Die Maschine Nr. P0 verarbeitet die zweite Zeile in einem zweiten Zyklus (T = 1). Die Maschine Nr. P0 verarbeitet die dritte und die fünfte Zeile in einem dritten Zyklus (T = 2). Schließlich verarbeitet die Maschine Nr. P0 die vierte und die sechste Zeile in einem vierten Zyklus (T = 3).
-
Bei einem Flooding-Vorgang verarbeitet die Maschine Nr. P0 die erste Zeile, die Maschine Nr. P1 verarbeitet die zweite Zeile, die Maschine Nr. P2 verarbeitet die dritte und die fünfte Zeile, und die Maschine Nr. P3 verarbeitet die vierte und die sechste Zeile, alle in demselben Zyklus. Auf diese Weise ist das Flooding vier Mal schneller als die geschichtete Decodierung, erfordert jedoch vier Mal so viele Verarbeitungselemente.
-
Wiederum ist das Flooding vier Mal schneller als die geschichtete Decodierung, erfordert jedoch vier Mal so viele Verarbeitungselemente. Bei der Flooding-Decodierung wird jedoch Konvergenz um 33 bis 50% langsamer erreicht als bei einer geschichteten Decodierung. Infolgedessen ist die Flooding-Decodierung etwa 33% weniger effizient als die geschichtete Decodierung.
-
10 stellt eine Matrix H für einen Code mit der Rate 3/4 dar. Bei dem Code mit der Rate 3/4 sind 0 Paare unabhängiger Zeilen, die unabhängig voneinander verarbeitet werden können, und 4 abhängige Zeilen (d h. 4 parallele Maschine für ein Flooding) vorhanden.
-
Bei einem geschichteten Vorgang verarbeitet die Maschine Nr. P0 die erste8 in einem ersten Zyklus (T = 0). Die Maschine Nr. P0 verarbeitet die zweite Zeile in einem zweiten Zyklus (T = 1). Die Maschine Nr. P0 verarbeitet die dritte Zeile in einem dritten Zyklus (T = 2). Schließlich verarbeitet die Maschine Nr. P0 die vierte Zeile in einem vierten Zyklus (T = 3).
-
Bei einem Flooding-Vorgang verarbeitet die Maschine Nr. P0 die erste Zeile, die Maschine Nr. P1 verarbeitet die zweite Zeile, die Maschine Nr. P2 verarbeitet die dritte Zeile, und die Maschine Nr. P3 verarbeitet die vierte Zeile, alle in demselben Zyklus.
-
Folglich ist das Flooding vier Mal schneller als die geschichtete Decodierung, erfordert jedoch vier Mal so viele Verarbeitungselemente. Bei der Flooding-Decodierung wird jedoch Konvergenz um 33 bis 50% langsamer erreicht als bei einer geschichteten Decodierung. Infolgedessen ist die Flooding-Decodierung etwa 33% weniger effizient als die geschichtete Decodierung.
-
11 stellt eine Matrix H für einen Code mit einer Rate 13/16 dar. Bei dem Code mit der Rate 13/16 sind 0 Paare unabhängiger Zeilen, die unabhängig voneinander verarbeitet werden können, und 3 abhängige Zeilen (d h. mindestens 4 parallele Maschinen für ein Flooding zur Unterstützung der anderen Raten oben) vorhanden.
-
Bei einem geschichteten Vorgang verarbeitet die Maschine Nr. P0 die erste9 in einem ersten Zyklus (T = 0). Die Maschine Nr. P0 verarbeitet die zweite Zeile in einem zweiten Zyklus (T = 1). Die Maschine Nr. P0 verarbeitet die dritte Zeile in einem dritten Zyklus (T = 2).
-
Bei einem Flooding-Vorgang verarbeitet die Maschine Nr. P0 die erste Zeile, die Maschine Nr. P1 verarbeitet die zweite Zeile, und die Maschine Nr. P2 verarbeitet die dritte Zeile, alle in demselben Zyklus.
-
Folglich ist das Flooding drei Mal schneller als die geschichtete Decodierung, erfordert jedoch vier Mal so viele Verarbeitungselemente. Bei der Flooding-Decodierung wird jedoch Konvergenz um 33 bis 50% langsamer erreicht als bei einer geschichteten Decodierung. Infolgedessen ist die Flooding-Decodierung etwa 50% weniger effizient als die geschichtete Decodierung.
-
Die vorliegende Offenlegung ist zwar anhand einer beispielhaften Ausführungsform beschrieben worden, verschiedene Änderungen und Modifizierungen können jedoch einem Kenner der Technik vorgeschlagen werden. Es ist beabsichtigt, dass die vorliegende Offenlegung solche Änderungen und Modifizierungen als in den Umfang der beigefügten Ansprüche fallend einschließt.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-