DE112010003449T5 - Iterative Decodierung von Signalen, die über einen verrauschten Kanal empfangen werden, unter Verwendung von Vorwärts- und Rückwärts-Rekursionen mit einer Hochfahrinitialisierung - Google Patents

Iterative Decodierung von Signalen, die über einen verrauschten Kanal empfangen werden, unter Verwendung von Vorwärts- und Rückwärts-Rekursionen mit einer Hochfahrinitialisierung Download PDF

Info

Publication number
DE112010003449T5
DE112010003449T5 DE112010003449T DE112010003449T DE112010003449T5 DE 112010003449 T5 DE112010003449 T5 DE 112010003449T5 DE 112010003449 T DE112010003449 T DE 112010003449T DE 112010003449 T DE112010003449 T DE 112010003449T DE 112010003449 T5 DE112010003449 T5 DE 112010003449T5
Authority
DE
Germany
Prior art keywords
sequence
window
recursions
iteration
decoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112010003449T
Other languages
English (en)
Other versions
DE112010003449B4 (de
DE112010003449T9 (de
Inventor
Colman Hegarty
Steve Allpress
Carlo Luschi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Technology UK Ltd
Original Assignee
Icera LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Icera LLC filed Critical Icera LLC
Publication of DE112010003449T5 publication Critical patent/DE112010003449T5/de
Application granted granted Critical
Publication of DE112010003449T9 publication Critical patent/DE112010003449T9/de
Publication of DE112010003449B4 publication Critical patent/DE112010003449B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3972Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/6533GPP HSDPA, e.g. HS-SCCH or DS-DSCH related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0055MAP-decoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • H04L1/0066Parallel concatenated codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0067Rate matching
    • H04L1/0068Rate matching by puncturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

Ein Verfahren, eine Vorrichtung und ein Programm sind offenbart. Das Verfahren umfasst: Empfangen eines Signals mit einer Sequenz aus codierten Symbolen, wovon jedes einem von mehreren möglichen Zuständen entspricht; Bestimmen für jedes Symbol in der Sequenz einer Gruppe aus Zustandsmaßen, wovon jedes eine Wahrscheinlichkeit repräsentiert, dass das jeweilige Symbol jeweils einem der mehreren Zustände entspricht; und Decodieren des Signals durch Verarbeiten von Durchläufen aus Rekursionen unter Verwendung von Durchläufen aus Vorwärts-Rekursionen und Durchläufen von Rückwärts-Rekursionen. Das Decodieren umfasst das Ausführen mehrerer wiederholter Iterationen über die Sequenz hinweg und für jede Iteration: das Unterteilen der Sequenz in mehrere kleinere Fenster, das Verarbeiten der Fenster unter Anwendung separater Durchlaufe aus Rekursionen, und das Ausführen eines zugehörigen Initialisierungsdurchlaufs aus Rekursionen für jedes Fenster. Das Dekodieren umfasst ferner für jede wiederholte Rekursion: Wechseln der Richtung der Initialisierungsdurchläufe zwischen vorwärts und rückwärts mit jeder sukzessiven Iteration über die Sequenz hinweg, das Speichern einer der Gruppen aus Zustandsmaßen von jedem Fenster und das Initialisieren des Initialisierungsdurchlaufs jedes Fensters unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen aus einer vorhergehenden Iteration.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Decodierer, etwa die verbesserte Implementierung von Fenster arbeitenden Decodieren bzw. mit Fensterdecodierern mit weichem Eingang/weichem Ausgang bzw. Soft-input/Soft-Output (SISO) mit maximaler a posteriori Wahrscheinlichkeit (MAP), die beim Turbo-Decodieren oder dergleichen angewendet werden. Insbesondere, aber nicht ausschließlich, besitzt die vorliegende Erfindung eine Anwendbarkeit für das Verbessern des Leistungsverhaltens von mit Fenstern betriebenen Turbo-Decodierern, die für Hochgeschwindigkeitspaketzugriffs-(HSPA) und Hochgeschwindigkeitspaketzugriffs+-(HASPA+)Betriebsmodi des mobilen Telekommunikationsstandards der dritten Generation Partnerschaftsprojekts-(3GPP) Breitbandcodedivisionsmehrfachzugriff (WCDMA) gestaltet sind.
  • Hintergrund
  • Der Turbocode ist ein Fehler korrigierender Code (ECC), der üblicherweise in kabellosen Kommunikationssystemen verwendet wird, wobei ein Beispiel die physikalische Schicht des 3GPP-Standards für die kabellose Funkkommunikation ist. Turbocodes werden aufgrund ihrer Robustheit, Effizienz und ihrer relativen Einfachheit für die Implementierung verwendet. Es wird auf folgende Quellen Bezug genommen.
    • [Referenz 1] „Fehler korrigierende Codierung und Decodierung an der Shannon-Grenze: Turbo-Codes" von „C. Berrou, A. Glavieux, P. Thitimaishima. Mitteilungen, 1993. ICC 93. Genf. Technisches Programm, Konferenzaufzeichnung, IEEE Internationale Konferenz, Band 2 (1993), Seiten 1064–1070, Teil 2.
    • [Referenz 2] 3GPP TS 25.212 (Multiplexverfahren und Kanalkodierung) Abschnitt 4.2.3.2 (Turbocodierung) und 4.2.7 (Ratenanpassung).
    • [Referenz 3] Turbocodierung und Einfügung von Interaktionen auf HS-DSCH in R5 HSDPA. Dokument Nr. R1-030444 zur Diskussion 3GPP TSG-RANArbeitstreffen 1, in Treffen Nr. 32, Paris, Frankreich, 19.–23. Mai 2003.
    • [Referenz 4] Intuitive Rechtfertigung und vereinfachte Implementierung des MAP-Decodierers für einhüllende Codierungen, von A. J. Viterbi. IEEE J. Sel. Areas Commun., Band 16, Nr. 2, Seiten 260–264, Februar 1998.
    • [Referenz 5] Optimale Decodierung von linearen Codes für die Minimierung der Symbolfehlerrate, von L. R. Bahl, J. Cocke, F. Jelinek, J. Raviv. IEEE Transaktionen über Informationstheorie, IT-20, Seiten 284–287, März 1974.
    • [Referenz 6] US Patent 5,933,462 : „Ausgangsdecodierer mit weicher Entscheidung für das Decodieren von Codewörtern im Konvolutionscode”, Andrew J. Viterbi, et al
    • [Referenz 7] US Patent Offenlegungsnummer 2006/0067229 : „Übertragen von Daten in einem kabellosen Netzwerk”, Frank Frederiksen.
  • Die Funktionsweise eines Turbocodes beruht auf der parallelen oder seriellen Verkettung von zwei Komponentencodierungen, die durch ein Zwischenelement getrennt sind. Die Komponentencodierungen bzw. Codes können systematisch oder nicht-systematisch sein, wobei dies von der Anwesenheit der Eingangsinformationsbits in dem codierten Ausgangsstrom abhängt. Die folgende Beschreibung betrifft den Fall einer parallelen Verkettung systematischer Konvolutionscodes.
  • Ein Turbocode arbeitet durch redundantes Codieren zweier unterschiedlich geordneter (verschachtelter) Kopien der zu sendenden Daten. Eine gewisse Information (nicht notwendigerweise die gesamte) von beiden Codierern wird dann über einen verrauschten Kanal übermittelt. 1 zeigt schematisch einen Sender 100 mit einem Turbo-Codierer 102 und einem zugehörigen Einfügemodul bzw. Durchstoßungsmodul 108. Der Turbo-Codierer 102 umfasst einen ersten Codierer 104a als Bestandteil, einen zweiten Codierer 104b als Bestandteil und eine Verschachtelungseinheit 106, die mit ihrem Ausgang mit dem Eingang des zweiten Codierers 104b verbunden ist.
  • Der erste einzelne Codierer 104a bildet einen ersten Zweig, der parallel zu einem zweiten Zweig angeordnet ist, der aus dem zweiten einzelnen Codierer 104b und seiner zugehörigen Verschachtelungseinheit 106 gebildet ist, so dass die Eingänge des ersten einzelnen Codierers 104a und der Verschachtelungseinheit 106 jeweils so angeordnet sind, dass sie die gleichen Eingangsdaten S empfangen. Diese Eingangsdaten S enthalten die Informationsbits, d. h. die eigentlichen Daten, die übertragen werden sollen. Die Eingangsdaten S werden vorzugsweise in „systematischer” Form bereitgestellt, was bedeutet, dass sie entweder die tatsächlichen Datenbits sind oder diese in expliziter oder wörtlicher Form enthalten. Vorzugsweise enthalten sie direkt die tatsächlichen Datenbits plus zusätzliche Prüfsummenbits, beispielsweise in Anwesenheit eines zyklischen Redundanz-Prüf(CRC)Codes.
  • Die Verschachtelungseinheit 106 erzeugt eine Umordnung der systematischen Eingangsdaten S und stellt die ungeordneten systematischen Daten an dem Eingang des zweiten einzelnen Codierers 104b bereit. Somit codiert der zweite einzelne oder konstituierende Codierer 104b eine andersgeordnete Version der gleichen Daten S, wie sie von dem ersten Codierer 104a codiert sind. Die einzelnen Codierer 104a und 104b sind vorzugsweise Konvolutionscodierer, die Paritätsbits zur Verwendung bei der Fehlerkorrektur im Decodierer 115 ausgeben (der in Kürze erläutert wird). Der erste einzelne Codierer 104a gibt nicht verschachtelte Paritätsbits P aus und der zweite konstituierende oder einzelne Codierer gibt verschachtelte Paritätsbits Pi aus. Die Paritätsbits fügen redundante Bits hinzu, die hinzugefügt werden, um die Fehlerkorrektur am Decodierer 115 zu verbessern (Nebenbemerkung: Diese redundanten Paritätsbits sind zusätzlich zu den Prüfsummenbits vorgesehen, die Optional von einer CRC eingeführt werden, der CRC-Code und Turbocodes sind unterschiedliche Einheiten).
  • Die systematischen Datenbits Sk und die Paritätsbits Pnk and Pik (wobei die Ganzzahl k der Informationsbitindex = 1, 2, 3, etc. ist) werden dann in einer Sequenz übermittelt, etwa als:
    S1, Pn1, Pi1, S2, Pn2, Pi2, S3, Pn3, Pi3, ... etc.
  • Jede Kombination von Sm, Pm, Pm für den vorgegebenen Bitindex m bildet ein Symbol, das in Beziehung steht mit dem nichtcodierten Informationsbit beim Index k. Somit werden in diesem Beispiel drei Bits übertragen, um jedes tatsächliche Informationsbit darzustellen, woraus sich eine Codierungsrate von R = 1/3 ergibt.
  • Der Ausgang jedes einzelnen Codierers 104a und 104b ist dann mit einem Durchstoßungsmodul bzw. Einfügemodul 108 gekoppelt, um die Paritätsbits Pn und Pi vor ihrer Übertragung zu „durchstoßen bzw. punktieren bzw. zu entfernen”. Dies bedeutet, dass gewisse Paritätsbits entfernt werden, so dass das Verhältnis von reduntanter Information zu tatsächlicher Information variiert, d. h. dass die Coderate R in variabler Weise ansteigt. Das Durchstoßen bzw. Punktieren wird nachfolgend detaillierter erläutert.
  • Die systematischen Daten S und die Paritätsbits Pn und Pi werden über einen verrauschten Kanal 110 zu einem Empfänger 101 übertragen, wobei dies typischer Weise kabellos erfolgt, d. h. über ein kabelloses Funknetzwerk. Das Rauschen repräsentiert etwa eine Störung aufgrund eines Vorgangs des Übertragens des Signals über dem kabellosen Ausbreitsungskanal und von dem Betriebskonzept und dem Implementieren des Kommunikationsempfängers 101 – so dass das Rauschen beispielsweise von einigen oder allen Einflüssen hervorgerufen wird: Dem Modulationsprozess; anderen Übertragungs-(Tx)prozessen oder Komponenten „der Funkschnittstelle selbst” oder der Entzerrung, Demodulation oder von Abschätzprozessen mit logarithmischen Wahrscheinlichkeitsverhältnissen am Empfänger 101 „oder anderen Prozessen oder Komponenten des Empfängers” 101. Daher sind die gesamten Daten S, Pn und Pi, wie sie am Decodierer 115 empfangen werden, mit großer Wahrscheinlichkeit nicht exakt so, wie sie von dem Codierer 102 ausgegeben werden: Die empfangenen Daten enthalten Fehler und es ist ein Fehlerkorrekturdecodierungsprozess, etwa eine Turbodecodierung erforderlich.
  • Der Turbo-Decodierungsprozess in dem Empfänger 101 ist ein iterativer Prozess, wodurch jede Kopie der empfangenen Daten in abwechselnden Durchgängen mittels eines Decodierers mit weichem Eingang/weichem Ausgang (SISO) decodiert werden. Bei jedem Turbo-Decodiererdurchlauf bzw. bei jeder Iteration wird eine gewisse „weiche” Information, die den wahrscheinlichen Wert der ursprünglichen Daten betrifft, als der „extrinsische bzw. äußerliche” Eingangswert der nächsten Iteration weitergeleitet. Nach einer gewissen Anzahl derartiger Turbo-Iterationen wird die weiche Information in eine „harte” Entscheidung umgewandelt. In Anwesenheit eines CRC Codes wird dann eine Prüfsumme an den decodierten Daten ausgeführt, um zu verifizieren, dass alle Fehler erfolgreich korrigiert wurden.
  • Ein anschaulicher Empfänger 101 ist schematisch in 1 dargestellt. Der Empfänger 101 umfasst einen Eingangsbereich 116, der jedes der empfangenen systematischen Datenbits S und Paritätsbits Pn und Pi abtastet. Da diese jedoch in einem weichen Decodierer verwendet werden sollen, tastet der Eingangsbereich nicht einfach die empfangenen Bits als definitive logische Einsen und logische Nullen ab. Stattdessen wird jedes empfangene Bit S, Pn oder Pi als ein Messwert abgetastet, der das Verhältnis der Wahrscheinlichkeit, dass das empfangene Bit als logische Eins übermittelt wurde, zu der Wahrscheinlichkeit darstellt, dass das empfangene Bit als eine logische Null übermittelt wurde. Die Berechnung des Wahrscheinlichkeitsverhältnisses als eine Funktion des Eingangssignals, das in In-Phase/Quadratursignalamplituden abgetastet ist, hängt von dem verwendeten Modulationsschema ab (beispielsweise 16-QAM, 64-QAM, etc.) und der abgeschätzten Kanalrauschvarianz ab. Wenn beispielsweise dieser weiche Messwert als eine 8-Bit-Variable dargestellt wird, dann kann sie jeden Wert zwischen –127, was bedeutet „sehr wahrscheinlich eine logische Null”, bis 0, was bedeutet „gleiche Wahrscheinlichkeit für eine logische [ins oder logische Null”, bis +127 annehmen, was bedeutet „sehr wahrscheinlich eine logische Eins”. Diese „weichen” Werte werden als Wahrscheinlichkeitsverhältnisse bezeichnet. Insbesondere werden diese typischerweise als logarithmische Wahrscheinlichkeitsverhältnisse bezeichnet, so dass mathematisch gilt S = In(Prob(bit = 1)/Prob(bit = 0). Wenn das Bit mit gleicher Wahrscheinlichkeit eine Eins oder eine Null ist, Prob(bit = 1) = Prob(bit = 0) -> S = In(1) = 0. Die Verwendung von Logarithmen vereinfacht den Decodierer, da die Multiplikation durch die Addition von Logarithmen ersetzt werden kann.
  • Der Empfänger 101 umfasst ferner eine Verschachtelungseinheit 114, wobei ein Eingang davon so angeordnet ist, dass die empfangenen systematischen Daten S empfangen werden, und der Empfänger umfasst ferner ein inverses Durchstoßungsmodul bzw. Punktierungsmodul 112, wovon ein Eingang so angeordnet ist, dass die empfangenen Paritätsdaten Pn und Pi empfangen werden. Für den Fall eines parallel verketteten Turbocodes werden die empfangenen systematischen Daten S in zwei parallele Zweige aufgeteilt, wovon einer durch die Veschachtelungseinheit 114 in einer der Verschachtelungseinheit 106 entsprechenden Weise verschachtelt wird, die im Sender 100 angewendet wurde. Somit wird eine Reihe aus nicht verschachtelten logarithmischen Bit-Wahrscheinlichkeitsverhältnissen Sn und aus verschachtelten logarithmischen Bit-Wahrscheinlichkeitsverhältnissen Si am Empfänger ermittelt. Das inverse Durchstoßungsmodul bzw. Einfügemodul 112 fügt wieder das Muster von jeglichen Paritätsbits Pn und Pi ein, die von dem Durchstoßungsmodul 108 im Sender 100 entfernt wurden. Da die Information über die Paritätsbits am Empfänger nicht verfügbar ist, werden die Positionen, die den Paritätsbits entsprechen, mit logarithmischen Wahrscheinlichkeitsverhältnissen aufgefüllt, die darstellen: „Mit gleicher Wahrscheinlichkeit eine logische Eins oder eine logische Null”.
  • Der Empfänger umfasst ferner einen Turbo-Decodierer 115, der einen ersten SISO-Decodierer 117a als Bestandteil, eine weitere Verschachtelungseinheit 119, einen zweiten einzelnen SISO-Decodierer 117b, eine Entschachtelungseinheit 123 und eine Hartentscheidungsmodul 125 aufweist. Der erste SISO-Decodierer 117a besitzt einen Eingang, der mit dem Eingangsbereich verbunden und somit angeordnet ist, die nicht verschachtelten logarithmischen Wahrscheinlichkeitsverhältnisse der systematischen Bits Sn zu empfangen, und dieser Decodierer besitzt einen weiteren Eingang, der mit einem Ausgang des inversen Durchstoßungsmoduls bzw. Einfügemoduls 112 verbunden und somit angeordnet ist, die nicht verschachtelten logarithmischen Paritätsbits-Wahrscheinlichkeitsverhältnisse Pn, zu empfangen, und dieser Decodierer besitzt ferner einen weiteren Eingang, der über eine iterative Rückkopplungsschleife mit dem Ausgang der Entschachtelungseinheit 123 verbunden ist. Der Ausgang des ersten SISO-Decodierers 117a ist mit dem Eingang der weiteren Verschachtelungseinheit 119 verbunden. Der zweite SISO-Decodierer 117b besitzt einen Eingang, der mit dem Ausgang der Veschachtelungseinheit 114 verbunden und somit angeordnet ist, die verschachtelten logarithmischen Wahrscheinlichkeitsverhältnisse des systematischen Bits Si zu empfangen, und besitzt einen weiteren Eingang, der mit einem Ausgang des Einfügemoduls 112 verbunden und somit angeordnet ist, die logarithmischen Wahrscheinlichkeitsverhältnisse der verschachtelten Paritätsbits Pi zu empfangen, und dieser Decodierer besitzt ferner einen weiteren Eingang, der mit dem Ausgang der weiteren Veschachtelungseinheit 119 verbunden ist. Der Ausgang des zweiten SISO-Decodierers 117b ist mit dem Eingang der Entschachtelungseinheit 123 verbunden. Der Ausgang der Entschachtelungseinheit 123 ist auf dem Eingang des ersten SISO-Decodierers 117a zurückgekoppelt, und ist ferner mit dem Eingang des Hartentscheidungsmoduls 125 verbunden. Der Ausgang des Hartscheidungsmoduls 125 ist angeordnet, um das harte Ausgangssignal des Decodieres 115 bereitzustellen.
  • Während des Betriebs führt der erste SISO-Decodierer 117a einen weichen Decodierungsprozess auf der Grundlage der nicht verschachtelten systematischen Bits und Paritätsbits Sn bzw. Pn aus (und auf Basis des extrinsischen Signals Ein – siehe nachfolgend); somit wird eine weiche Entscheidung Eout für jedes decodierte Bit ausgegeben. Die weiche Entscheidung Eout wird typischer Weise als ein „extrinsischer oder „äußerlicher” Wert ausgedrückt. Zu beachten ist die Unterscheidung zwischen „extrinsischen” Werten Eout/Ein und den logarithmischen Wahrscheinlichkeitsverhältnissen. Die extrinsischen Werte Eout/Ein, die zwischen den einzelnen Decodieren weitergeleitet werden, sind keine wahren logarithmischen Wahrscheinlichkeitsverhältnisse. Insbesondere ist für den Decodierer 117a im logarithmischen Bereich der extrinsische Wert Eout = LLRout – (Sn + Ein), wobei LLRout das ausgegebene logarithmische Wahrscheinlichkeitsverhältnis von jedem Decodierer ist. Intuitiv misst der extrinsische Wert den Anteil an der Abschätzung des logarithmischen Wahrscheinlichkeitsverhältnisses jedes Decodierers aus der Paritätsinformation, die lediglich für diesen Decodierer verfügbar ist. Typischer Weise wird lediglich diese Information zwischen Decodieren während des iterativen Decodierungsprozesses weitergeleitet. Der extrinsische Wert wird auch in der Literatur als „a priori” Wahrscheinlichkeitsinformation für den Dekodierer bezeichnet, während der Wert LLR die vollständige „a posteriori” Wahrscheinlichkeit ist.
  • Die weitere Verschachtelungseinheit 119 verschachtelt dann die Daten Eout, die von dem ersten SISO-Decodierer 117a ausgegeben werden, in einer zu der Verschachtelungseinheit 106, die im Sender 100 angewendet würde, und in einer anderen Verschachtelungseinheit 114 entsprechenden Weise, die im Empfänger 101 angewendet würde, um den extrinsischen Eingangswert Ein dem zweiten SISO-Decodierer 117b zuzuleiten. Der zweite SISO-Decodierer 117b führt dann einen weichen Decodierungsprozess an den verschachtelten Daten auf der Grundlage der verschachtelten systematischen Bits und Paritätsbits Si und Pi (an dem extrinsischen Eingangswert Ein) aus, und gibt somit eine weitere weiche Entscheidung (extrinischer Ausgangswert) Eout für jedes decodierte Bit aus. Die Entschachtelungseinheit 123 macht dann die Veschachtelung rückgängig, die von der weiteren Verschachtelungseinheit 119 angewendet wurde, und die entschachtelten weichen Daten, die von der Entschachtelungseinheit 123 ausgegeben werden, werden dann als der extrinsische Eingangswert Ein an den Eingang des ersten SISO-Decodierers 117a zurückgespeist, so dass diese Daten ein oder mehreren weiteren Turbo-Decodiereriterationen unterzogen werden, indem der in diesem paragraphischen Prozess wiederholt wird.
  • Sobald eine ausreichende oder vorbestimmte Anzahl an Turbo-Iterationen abgeschlossen ist, werden die entschachtelten weichen Daten, die von der Entschachtelungseinheit 123 ausgegeben werden, dem Eingang des Moduls zur Durchführung einer harten Entscheidung 125 zugeleitet, dass die weichen extrinsischen Wert in definite binäre Werte mit dem Wert von logisch Null oder logisch Eins umwandelt, wobei dies davon abhängt, was wahrscheinlich ist. D. h., in der abschließenden Iteration wird die wahre logarithmische Wahrscheinlichkeitsverhälnisinformation aus der letzen SISO-Decodierung (LLRout nicht Eout) an die Entschachtelungseinheit 123 und dem Prozess für die harte Entscheidung 125 weitergeleitet. Daher ist in 1 LLRout als ein zusätzlicher Ausgang aus dem zweiten SISO-Decodierer 117b gezeigt.
  • Die Decodierung sowohl der verschachtelten als auch der nicht verschachtelten Versionen der Daten und die mehreren Iterationen verbessern die Zuverlässigkeit der decodierten Daten.
  • Es sei nun auf die Details der einzelnen Codierer 104a und 104b verwiesen; der konstituierende Codierungsalgorithmus kann im Prinzip ein beliebiger Fehler korrigierender Code sein, für den ein SISO-Decodierer aufgebaute werden kann. Jedoch ist der Turboalgorithmus 102, 115, wie er zuvor beschrieben ist, so wirksam, dass in den meisten Fällen ein kleiner rekursiver Konvolutionscodierer mit geringer Nebenbedingungslänge für gewöhnlich verwendet wird. Das macht die SISO-Decodierung relativ unaufwendig – was sehr wichtig ist, da der Turbo-Decodierungsalgorithmus mehrere SISO-Decodiereriterationen erforderlich machen kann.
  • Der einzelne Codierer ist häufig eine rekursiver systematischer Konvolutionscodierer mit lediglich 8 möglichen Zuständen (oder manchmal 16). Eine systematische Darstellung eines Konvolutionscodierers mit 8 Zuständen ist schematisch im oberen Bereich der 2 gezeigt. Eine entsprechende Instanz davon könnte verwendet werden, um jeweils die einzelnen Codierer 104a und 104b einzurichten. Der Konvolutionscodierer umfasst ein Schieberegister mit drei sequenziellen 1-Bit-Datenelementen D und mehreren modulo-2-Addierern (+), wobei die Pfeile in 2 die Kopplung und die Richtung des Datenstroms anzeigen. Dass es 3 Datenelemente D gibt, kann jeder einzelne Codierer 104a oder 104b zu jeder Zeit lediglich einen von 23 = 8 möglichen Zuständen annehmen.
  • Die Addierer (+) sind Exklusiv-Oder-(XOR) Gatter (so dass 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 0 und 1 + 1 = 0 gilt). Die eingespeisten systematischen Daten S werden durch das äußerste linke XOR-Gatter in 2 eingespeist und dann durch die Datenelemente D des Schieberegisters geschoben, wobei der andere Eingang des äußersten linken XOR-Gatters das XOR der beiden äußersten rechten Datenelemente D ist. Somit ist jeder aufeinanderfolgende Zustand von den Eingangsdaten S und dem vorhergehenden Zustand des Schieberegisters abhängig. Da die Datenelemente D in Form eines Schieberegisters verbunden sind und in dieser Weise von dem Eingang S gespeist werden, können die Bits in den Datenelementen D nicht in beliebiger Weise von einem Zustand in einen anderen übergehen. Stattdessen sind nur gewisse Zustandsübergänge möglich (und die XOR-Schaltung bildet ein Symbol S, P auf jeden der Zustandsübergänge ab). Dies ist schematisch im unteren Teil der 2 gezeigt, der ein Teil eines ”Trellis-Diagramms” ist, dass einige zulässige Übergänge zeigt (wobei das Datenelement auf der rechten Seite dem signifikantesten Bit entspricht). Beispielsweise bleibt der Zustand 000 auf 000, wenn das nächste Eingangsbit S eine null ist, oder der Zustand geht über auf 001, wenn das nächste Eingangsbit eine 1 ist. Jedoch ist ein Übergang von 000 auf einen anderen Zustand, beispielsweise 101, nicht möglich. Es sei ein weiteres Beispiel genannt; der Zustand 001 geht über in den Zustand 010, wenn das nächste Eingangsbit S eine Null ist, oder es erfolgt ein Übergang in den Zustand 011, wenn das nächste Eingangsbit S eine 1 ist. Jedoch ist ein Übergang von 001 in einen anderen Zustand, beispielsweise 110 oder 000, nicht möglich. Daher sind lediglich gewisse ”Pfade” durch das Trellis-Diagramm möglich.
  • Ein ”Trellis-”Decodierer verwendet diese Tatsache, um eine Fehlerkorrektur im Empfänger bereitzustellen. Jeder SISO-Decodierer 117a und 117b umfasst eine entsprechende Instanz eines derartigen Trellis-Decodierers. In dem Trellis-Decodierer repräsentiert ein ”Zustandsmaß” bzw. eine ”Zustandsmetrik” die Wahrscheinlichkeit für jeden der 8 möglichen Zustände für jeden Übergang zwischen Symbolen der empfangenen codierten Daten. D. h., für jeden Übergang eines empfangenen Symbols bestimmt der Trellis-Decodierer 117a oder 117b die Wahrscheinlichkeit, dass der entsprechende Codierer 104a oder 104b in jeden der 8 möglichen Zustände übergegangen ist, nachdem er das infrage stehende Symbol übertragen hat (somit entspricht jedes Symbol einer Gruppe aus 8 Zustandsmaßen). Dies funktioniert auf der Grundlage, dass ein fehlerhaftes Symbol S, P (das doch Rauschen verhindert ist) zu einer Abweichung von einem zulässigen Pfad durch das Trellis-Diagramm führt. Durch die Analyse möglicher Lösungen können die Wahrscheinlichkeiten der 8 unterschiedlichen möglichen Zustände für jedes Symbol bestimmt werden.
  • Für einen Decodierer mit maximaler a posteriori Wahrscheinlichkeit (MAP) verläuft der Decodier-Vorgang derart, dass ein Durchlauf von Trellis-Iterationen über eine Sequenz (beispielsweise einen Block) aus empfangenen Symbolen und ihre zugehörigen Gruppen aus Zustandsmaßen durchgeführt wird, jedes nachfolgende Zustandsmaß in der empfangenen Sequenz aktualisiert wird auf der Grundlage von: den vorhergehenden Zustands maßen in der Sequenz; den empfangenen Symbolwerten; und in impliziter Weise der Kenntnis der verwendeten Codierungsregel. Bei jeder Trellis-Iteration ist es das Ziel, das die Zustandsmaße der entsprechenden Gruppe divergieren, so dass eine Zahl als wahrscheinlicher als die andere auftaucht (d. h. in einer gegebenen Gruppe divergierl). In Decodierern, etwa in Turbo-Decodierern, kann der gesamte Durchlauf wieder mehrere Male über die Sequenz hinweg wiederholt werden, um zu versuchen, dass die logarithmischen Wahrscheinlichkeitsverhältnisses noch weiter auf eine bestimmtere zuverlässige Lösung hin divergieren. D. h., jede Iteration des Turbo-Decodierers umfasst eine gesamte Gruppe aus Trellis-Iterationen über den Empfangenenblock oder die Sequenz hinweg, wohingegen eine einzelne Trellis-Iteration eine Iteration zwischen zwei benachbarten Gruppen aus Zustandsmaßen ist. Um zwischen den gesamten Turbo-Iterationen und ihren einzelnen Komponenten aus Trellis-Iterationen oder dergleichen zu unterscheiden, wird eine einzelne Iteration zwischen Gruppen aus Zustandsmaßen, etwa eine Trellis-Iteration, als eine ”Rekursion” bezeichnet. Für eine mathematische Beschreibung dieses Prozesses sei auf die obigen Referenzen 1–7 verwiesen.
  • Ein MAP-Trellis-Decodierer kann auch dazu veranlasst werden, die empfangenen Symbole in der umgekehrten Reihenfolge aufzunehmen, mit der sie ursprünglich codiert wurden, dass die vorhergehenden und die nächsten Zustände des konstituierenden Codierers einfach voneinander abgeleitet werden können. Durch das Betreiben des Trellis-Decodierers in beiden Richtungen können die resultierenden ”vorwärts-” und ”rückwärts-” Zustandsmaße kombiniert werden, um eine bessere Abschätzung mit weicher Wahrscheinlichkeit der ursprünglichen Symbolwerte zu erzeugen.
  • Im Hinblick auf die Terminologie ist zu beachten, dass zur Vereinfachung der arithmetischen Operationen in praktischen Implementierungen eines derartigen MAP-Decodierers die Zustandsmaße typischerweise als die Logarithmen von Wahrscheinlichkeiten dargestellt werden, während die empfangenen Symbolwerten typischerweise als Logarithmus eines Verhältnisses der Wahrscheinlichkeit einer logischen 1 zur Wahrscheinlichkeit einer logischen 0 dargestellt werden (als logarithmisches Wahrscheinlichkeitsverhältnis oder LLR bezeichnet). LLR(Sk) = log[P(Sk = 1|rk)/P(Sk = 0|rk)], wobei P(Sk = 1|rk) und P(Sk = 0|rk) die Wahrscheinlichkeit, dass Sk dem Logikwert 1 bei gegebenem empfangenen Signal rk entspricht, bzw. Die Wahrscheinlichkeit ist, dass Sk dem Logikerwert 0 bei gegebenem empfangenen Signal rk entspricht. Weiche extrinsische Werte Eout können ebenfalls nur logarithmischer Form dargestellt werden, wie dies zuvor erläutert ist. Daher stammt der Name ”logarithmischer MAP-Decodierer bzw. Log-MAP-Decodierer” für die Art an SISO-Decodierer, wie sie hierin verwendet ist. Eine weitere arithmetische Vereinfachung kann auf Kosten einer gewissen Genauigkeit erreicht werden, um den Max-Log-MAP-Decodierer zu erhalten.
  • Die Implementierung des MAP SISO-Decodierers erfordert einen relativ großen Anteil an Speicher, das zur Ausführung einer Berechnung unter Anwendung der Vorwärts- und Rückwärts-Zustandsmaße für jedes Symbol in dem Block aus codierten Daten es zunächst erforderlich ist, alle Rückwärts-Zustandsmaße oder alle Vorwärts-Zustandsmaße zu berechnen und zu speichern.
  • 3 zeigt schematisch einen Block aus vorwärts- und rückwärts-Trellis-Rekursionen (d. h. vorwärts- und rückwärts-Trellis-Iterationen) für einen Konvolutionscode mit 8 Zuständen. Jede vertikale Linie aus Punkten in 3 repräsentiert eine Gruppe der 8 möglichen Zustände, wobei jede Gruppe einem entsprechenden Symbol in der empfangenen Sequenz entspricht. Jede Turbo-Iteration enthält dann einen vorwärts- und einen rückwärts- Durchlauf an Trellis-Rekursionen über den Block (für jeweils die verschachtelte und die nicht-verschachtelte Version der Daten).
  • Der Speicher muss 8 Zustandsmaße für jedes Symbol im Block enthalten. Wenn ein größerer Speicher ”für Allgemeinzwecke” verwendet wird, sollte beachtet werden, dass 8 Zustandsmaße für jedes Symbol in dem Block für jede MAP-Iteration eingeladen und gespeichert werden müssen.
  • Um diesen Aufwand zu vermeiden, erfand Viterbi den MAP-Decodierer mit Fenstern (siehe die obigen Referenzen 4 und 6). Viterbi machte die wichtige Beobachtung, dass es nicht notwendig ist, einen Trellis-Decodierer ganz am Anfang oder am Ende eines Blockes aus Symbolen zu starten, um eine ähnlich genaue Gruppe aus Zustandsmaßen für ein spezielles Symbol irgendwo in der Mitte des Blockes zu erhalten. Stattdessen ist es möglich, ”kalt” an einem beliebigen Punkt, der ausreichend von dem interessierenden Punkt entfernt ist, mit einer gewissen willkürlichen Gruppe aus Zustandsmaßen zu starten. Wenn der Abstand ausreichend groß ist, dann ist die anfängliche Gruppe der Werte von Zustandsmaßen zu dem Zeitpunkt nicht relevant, wenn der Trellis-Decodierer an dem interessierenden Punkt eintrifft. Viterbi schlägt vor, dass ein Abstand von 32 für einen konstituierenden Code mit 16 Zuständen häufig mehr als ausreichend ist, wenn beachtet wird, dass dies mehr als 6 Beschränkungslängen bzw. begrenzende Längen als Nebenbedingung ergibt.
  • Die Idee der Fensterbildung mit einem Fenster der Länge L nutzt diese Beobachtung, um das Speichern von Zustandsmaßen für mehr als eine Fensterlänge, d. h. für mehr als L Gruppen aus Zustandsmaßen, die den L Trellis-Stufen des Fensters entsprechen, zu vermeiden. Stattdessen ist es zur Berechnung von L Gruppen aus Maßzahlen nur erforderlich, über einen ausreichenden Abstand ”hochzufahren bzw. zu initialisieren” (ohne die Speicherung jeglicher Zustandsmaße), bevor die folgenden L Gruppen aus Zustandsmaße berechnet und verwendet werden. Diese Hochfahrphase bzw. Initialisierungsphase erfordert zusätzliche Berechnungen (Trellis-Iterationen oder ”Rekursionen”), und daher sollte, um die zusätzlichen Aufwand dieser Berechnungen zu amortisieren, die Dauer der Initialisierungsphase nicht wesentlich die Fenstergröße übersteigen (beispielsweise vermeidet die Verwendung einer Fenstergröße von 1 das Erfordernis für einen Speicher, erfordert jedoch eine übermäßige Anzahl an Initialisierungsrekursionen).
  • 4 zeigt eine schematische Darstellung eines Log-MAP-Decodiervorgangs mit Fenster zur Verwendung in einem Trellis-Decodierer, etwa dem Decodierer 117a oder 117b. Die Zeit verläuft mit zunehmenden Werten in vertikaler Richtung nach unten auf der Seite. Im Schritt 1a führt der Decodierer einen Durchlauf aus L Trellis-Rekursionen aus (d. h. Treillis-Iterationen) in der Vorwärtsrichtung für das erste Fenster, wobei beim Index 0 innerhalb des Blocks begonnen wird, und der Verlauf bis zum Index L–1 erfolgt, wobei alle entsprechenden L-Gruppen aus 8 Zustandsmaßzahlen gespeichert werden (d. h. 8 by L Zustandsmaßen). Im Schritt 1b führt der Decodierer W Initialisierungs-Trellis-Rekursionen in der umgekehrten Richtung vom Index L+W–1 innerhalb des Blockes rückwärts bis zum Index L aus. Dies liefert eine Initialisierungsstartgruppe aus Zustandsmaßen für das Beginnen der umgekehrten Trellis-Rekursionen für das erste Fenster in Rückwärtsrichtung von dem Index L–1 zum Index 0. Im Schritt 2a führt der Decodierer einen Durchlauf aus L Trellis-Rekursionen in der Vorwärtsrichtung für das zweite Fenster aus, wobei von den Rekursionen des ersten Fensters aus weiter gemacht wird und beim Index L begonnen und zum Index 2L–1 weitergegangen wird, wobei die entsprechenden L-Gruppen aus 8 Zustandsmaßen gespeichert werden. Im Schritt 2b führt der Decodierer W Initialisierungs-Trellis-Rekursionen in der umgekehrten Richtung vom Index 2L+W–1 innerhalb des Blockes bis zum Index 2L aus. Dies liefert eine initialisierte Startgruppe aus Zustandsmaßen für das Beginnen der umgekehrten Trellis-Rekursionen für das zweite Fenster in Rückwärtsrichtung von dem Index 2L–1 zum Index 2L. Im Schritt 2c führt der Decodierer einen Durchlauf aus L Trellis-Rekursionen in der Rückwärtsrichtung für das erste Fenster beginnend in Rückwärtsrichtung von dem Index L–1 bis zum Index 0 aus, wobei von der initialisierten Gruppe als Zustandsmaßen begonnen wird, wie sie für das erste Fenster im Schritt 1b bestimmt wurde, und es werden die entsprechenden vorhergehenden L-Gruppen aus 8 Zustandsmaßen gespeichert. Als Ergebnis des Schrittes 2c wird ein weicher extrinsischer Wert Eout für jedes Symbol in dem ersten Fenster ausgegeben, was für nachfolgende Turbo-Iterationen bereitsteht, oder an das Hartentscheidungsmodul 125 ausgegeben wird, wenn ausreichend viele Turbo-Iterationen bereits ausgeführt sind. Der Prozess wird auf diese Weise für das zweite, das dritte, das vierte Fenster, etc., weitergeführt, bis der gesamte Block abgedeckt ist. Jede Turbo-Iteration umfasst einen gesamten Durchlauf oder eine gesamte Gruppe aus einzelnen Trellis-Iterationen – d. h. Trellis-Rekursionen – über den gesamten Block hinweg.
  • Solange die erforderliche Dauer der Initialisierungsphase relativ klein ist, kann die Fenstergröße L in ähnlicher Weise klein und unabhängig von der Blockgröße gemacht werden; daher kann der Speicherbereich für das zeitweilige Speichern der Zustandsmaße klein sein und kann in einer sehr lokalen Weise in der Hardware für die Trellis-Berechung eingebaut werden – wodurch die erforderliche Infrastruktur und die für den Zugriff benötigte Leistung minimiert werden.
  • Es ist vorteilhaft, wenn die Möglichkeit besteht, die Codierrate zu variieren, um eine Anpassung an unterschledliche Kanalbedingungen zu ermöglichen. Die Codierrate „R” ist als das Verhältnis zwischen der Anzahl der (uncodierten) Eingangsbits und der Anzahl aus codierten Bits definiert. Typischer Weise erzeugt ein Turbo-Codierer ein oder zwei Paritätsbits aus jedem der beiden konstituierenden Codieren für jedes eingespeiste systematische Bit. Somit besitzt beispielsweise der 3GPP-Standard-Turbo-Code eine Rate von R = 1/3 (mit 1 Paritätsbit pro einzelnem Codierer pro Eingangsbit).
  • Obwohl ein derartiger Code erforderlich sein kann, um einen ausreichenden Grad an Fehlerkorrektur bei Bedingungen mit kleinem Signal/Rauschverhältnis (SNR) bereit zu stellen, ist dieser aufwendig und verschwenderisch, wenn die Kanalbedingungen besser sind. Um die Coderate R unter derartigen Bedingungen anzuheben, wird daher eine Technik eingeführt, die als Durchstoßung bzw. Punktierung bezeichnet wird, wodurch eine definierte Gruppe aus Paritätsbits entfernt wird (d. h. nicht gesendet wird). Die MAP-Decodierer in dem Empfänger 101 reagieren auf die fehlenden Paritätsbits, in dem diesen ein logarithmisches Wahrscheinlichkeitsverhältnis von 0 zugeordnet wird (was bedeutet „gleich wahrscheinlich für logisch Eins oder logisch Null”). Siehe beispielsweise Referenz 3.
  • In dem 3GPP-Standard kann diese Technik bis zum Äußersten getrieben werden – wobei sich Raten bis zu R = 0,97 ergeben (~64 von 65 Paritätsbits werden entfernt!) – wobei die Turbo-Decodierung dennoch einen wesentlichen Vorteil ergibt im Vergleich dazu, dass die Daten nicht codiert werden.
  • Nachteiliger Weise kann sich der Fensteralgorithmus unter derartigen Bedingungen sehr beeinträchtigt verhalten, da die Faustregel von Viterbi, d. h. dass einige Begrenzungslängen für die Initialisierungsphase erforderlich sind, implizit annimmt, dass keine oder nur eine begrenzte Durchstoßung bzw. Punktierung erfolgt ist.
  • Es kann gezeigt werden, dass für eine beliebige Trellis-Rekursion, in der das Paritätsbit LLR gleich Null ist (durchstoßen bzw. entfernt ist), die Zustandsmaßzahlen innerhalb einer Gruppe sich zueinander divergent im Wert verhalten können (und daher in Richtung auf ein Lösung konvergieren können). Im günstigsten Falle werden diese lediglich gemäß dem Vorzeichen des systematischen Bits neu geordnet, selbst wenn der LLR-Wert des systematischen Bits sehr groß ist. Im schlechtesten Falle kann ein LLR-Wert eines niedrigen empfangenen systematischen Bits die bestehende Divergenz verringern.
  • Eine Gruppe aus Initialisierungsrekursionen beginnt normalerweise damit, dass alle Zustandsmaßzahlen auf den gleichen Wert festgelegt werden (alle Zustände sind gleich wahrscheinlich) in der Hoffnung, dass nach einer gewissen vernünftigen Anzahl an Rekursionen die Zustandsmaßzahlen auf die gleichen Werte konvergiert sind, die sie auch angenommen hätten, wenn die Iterationen von einem bekannten Anfangszustand an einem Ende des Blockes begonnen hätten (dies bedeutet allgemein, dass die Zustandsmaßzahlen als eine Gruppe von dem anfänglichen gemeinsamen Wert aus divergieren, beispielsweise wenn ausreichend Paritätsbits vorhanden sind und wenn Fehler vorhanden sind, sollte ein einzelnes Zustandsmaß als wesentlich größer als die anderen in Erscheinung treten).
  • Dies kann jedoch nie eintreffen, wenn die Paritätsbits so intensiv entfernt bzw. punktiert wurden, dass es keine nicht enffernten Paritätsbits über die gesamte Dauer der Initialisierungsphase hinweg gibt (die Zustandsmaße bleiben durchwegs in ihrem gleichen initialisierten Zustand). Dies bedeutet, dass, obwohl der MAP-Decodierer mit Fensterfunktion den großen Vorteil besitzt, dass kein großer Zwischenspeicher erforderlich ist, dieser Decodierer sich im Vergleich zu einem Decodierer ohne Fenster sehr nachteilig verhält, wenn eine Durchstoßung bzw. Bit-Entfernung verwendet wird, um die Coderate zu erhöhen.
  • Überblick
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren bereitgestellt, dass umfasst: Empfangen eines Signals, das eine Sequenz aus codierten Symbolen aufweist, wovon jedes einem von mehreren möglichen Zuständen entspricht; Bestimmen für jedes Symbol in der Sequenz einer Gruppe aus Zustandsmaßen, die jeweils einer Wahrscheinlichkeit entsprechen, dass das jeweilige Symbol jedem der mehreren Zustände entspricht; Decodieren des Signals durch Verarbeitung von Durchläufen von Rekursionen unter Verwendung von Durchläufen von Vorwärts-Rekursionen, wodurch ein späteres Zustandsmaß in der Sequenz aktualisiert wird auf der Grundlage eines vorhergehenden Zustandsmaßes, und unter Verwendung von Durchläufen von Rückwärts-Rekursionen, wodurch ein vorhergehendes Zustandsmaß in der Sequenz auf der Grundlage eines späteren Zustandsmaßes aktualisiert wird; und ausgeben des decodierten Signals an eine Einrichtung; wobei das Decodieren umfasst: Ausführen mehrerer wiederholter Iterationen über die Sequenz hinweg, und wobei für jede Iteration gilt: Unterteilen der Sequenz in mehrere kleinere Fenster, Verarbeiten der Fenster unter Anwendung separater Durchläufe von Rekursionen und Ausführen eines zugehörigen Initialisierungsdurchlaufs aus Rekursionen für jedes Fenster; und wobei das Decodieren ferner für jede wiederholte Rekursion umfasst: Abwechseln der Richtung der Initialisierungsdurchläufe zwischen vorwärts und rückwärts für jede aufeinanderfolgende Iteration über die Sequenz hinweg, Speichern einer der Gruppen aus Zustandsmaßen für jedes Fenster, und Initialisieren des Initialisierungsdurchlaufs für jedes Fenster unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen aus vorhergehenden Iterationen.
  • In Ausführungsformen umfasst die Sequenz aus empfangenen Symbolen eine variable Menge an nicht verfügbarer redundanter Information und das Verfahren umfasst das Wiedereinführen von Bits anstelle der nicht verfügbaren redundanten Information.
  • Die Verarbeitung jedes Fensters enthält sowohl einen Vorwärtsdurchlauf als auch einen Rückwärtslauf aus bzw. an Rekursionen.
  • Das Decodieren kann ferner das Abwechseln einer Richtung der Verarbeitung jeder aufeinanderfolgenden Iteration über die Sequenz hinweg umfassen, um etwa in einer Richtung die Sequenz Fenster für Fenster vom Beginn bis zum Ende der Sequenz zu verarbeiten, und in der anderen Richtung die Sequenz Fenster für Fenster vom Ende bis zum Beginn zu verarbeiten.
  • Die Richtung, in der die Durchläufe der Rekursionen zwischen benachbarten Fenstern zusammenhängend sind, kann sich mit jeder aufeinanderfolgenden Iteration über die Sequenz hinweg ändern, und kann entgegengesetzt sein zu der Richtung der Initialisierungsrekursionen.
  • Jedes bis auf das letzte Fenster der Iteration kann die gleiche Fensterlänge besitzen, und die Sequenz kann einen Block mit einer Länge besitzen, die ein ganzzahliges Vielfaches der Fensterlänge ist, so dass das letzte Fenster eine kleinere verbleibende Anzahl an Symbolen besitzt; und die gespeicherte Gruppe aus Zustandsmaßzahlen aus jedem Fenster kann aus einer Position innerhalb jedes Fensters entnommen werden, die gleich der verbleibenden Anzahl an Symbolen für dieses Fenster in der Richtung der Verarbeitung der Iteration ist.
  • Das Signal kann über einen kabellosen Kanal empfangen werden.
  • Jede der Iterationen kann eine Turbo-Iteration sein, und jede der Rekursionen kann eine Trellis-Iteration sein.
  • Die Decodierung kann eine maximale a posteriori Wahrscheinlichkeitsdecodierung sein.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird eine Vorrichtung bereitgestellt, die umfasst: einen Empfänger, der angeordnet ist, ein Signal zu empfangen, das eine Sequenz aus codierten Symbolen enthält, wovon jedes einem von mehreren Zuständen entspricht; und einen Decodierer, der ausgebildet ist, für jedes Symbol in der Sequenz eine Gruppe aus Zustandsmaßen zu bestimmen, die jeweils einer Wahrscheinlichkeit, dass das entsprechende Symbol jedem der mehreren Zustände entspricht, repräsentiert; wobei der Decodierer ausgebildet ist, das Signal durch Verarbeiten von Durchläufen aus Rekursionen zu decodieren, wobei Durchläufe aus Vorwärts-Rekursionen verwendet werden, wodurch ein späteres Zustandsmaß in der Sequenz auf der Grundlage eines vorhergehenden Zustandsmaßes aktualisiert wird, und unter Durchläufe von Rückwärts-Rekursionen verwendet werden, wodurch ein vorhergehendes Zustandsmaß in der Sequenz auf der Grundlage eines späteren Zustandsmaßes aktualisiert wird und wobei das decodierte Signal an eine Vorrichtung ausgegeben wird; wobei der Decodierer ausgebildet ist, mehrere wiederholte Iterationen über die Sequenz hinweg auszuführen, und wobei für jede Iteration gilt: es wird die Sequenz in mehrere kleinere Fenster unterteilt, die Fenster werden unter Anwendung separater Durchläufe aus Rekursionen verarbeitet und es wird ein zugehöriger Initialisierungsdurchlauf aus Rekursionen für jedes Fenster ausgeführt; und wobei der Decodierer ferner ausgebildet ist für jede wiederholte Iteration: die Richtung der Initialisierungsdurchläufe von vorwärts nach rückwärts für jede aufeinanderfolgende Iteration über die Sequenz hinweg zu wechseln, eine der Gruppen aus Zustandsmaßen für jedes Fenster zu speichern und den Initialisierungsdurchlauf für jedes Fenster unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen von einer vorhergehenden Iteration zu initialisieren.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Computerprogrammprodukt bereitgestellt, das eine Codierung aufweist, die auf einem Computer lesbaren Medium aufgebracht und ausgebildet ist, dass, wenn sie von einem Prozess ausgeführt wird, dazu führt, dass: ein Signal mit einer Sequenz aus codierten Symbolen empfangen wird, die jeweils einem von mehreren Zuständen entsprechen; für jedes Symbol in der Sequenz eine Gruppe aus Zustandsmaßen bestimmt wird, die jeweils eine Wahrscheinlichkeit darstellen, dass das jeweilige Symbol jedem der mehreren Zustände entspricht; das Signal durch Verarbeiten von Durchläufen aus Rekursionen decodiert wird, wobei Durchläufe von Vorwärts-Rekursionen angewendet werden, wodurch ein späteres Zustandsmaß in der Sequenz auf der Grundlage eines vorhergehenden Zustandsmaßes aktualisiert wird und Durchläufe aus Rückwärts-Rekursionen verwendet werden, wodurch ein vorhergehendes Zustandsmaß in der Sequenz auf der Grundlage eines späteren Zustandsmaßes aktualisiert wird; und das decodierte Signal an eine Einrichtung ausgegeben wird; wobei das Decodieren umfasst: Ausführen mehrerer wiederholter Iterationen über die Sequenz hinweg, und für jede Iteration: Unterteilen der Sequenz in mehrere kleinere Fenster, verarbeiten der Fenster unter Anwendung separater Durchläufe als Rekursionen und Ausführen eines zugehörigen Initialisierungsdurchlaufes aus Rekursionen für jedes Fenster; und wobei das Decodieren für jede wiederholte Iteration ferner umfasst: Abwechseln der Richtung der Initialisierungsdurchläufe zwischen vorwärts und rückwärts für jede aufeinanderfolgende Iteration über die Sequenz hinweg, Speichern einer der Gruppen aus Zustandmaßen von jedem Fenster, und Initialisieren des Initialisierungsdurchlaufes jedes Fensters unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen aus einer vorhergehenden Iteration.
  • Kurze Beschreibung der Zeichnungen
  • Für ein besseres Verständnis der vorliegenden Erfindung und zum Aufzeigen, wie diese eingesetzt werden kann, wird nunmehr beispielhaft auf die begleitenden Zeichnungen verwiesen, in denen:
  • 1 eine schematische Blockansicht eines Beispiels eines Turbo-Codierungs- und Decodierungssystems ist,
  • 2 eine schematische Blockansicht eines dekursiven systematischen Konvolutionscodierers ist,
  • 3 schematisch einen Block aus vorwärts- und rückwärts-Trellis-Rekursionen für einen 8-Zustands-Konvolutsionscode zeigt,
  • 4 schematisch ein Log-MAP-Decodierfensterschema zeigt
  • 5 ein Graph ist, der Codierraten zeigt, die für gewisse Fenstergrößen problematisch sind,
  • 6 eine schematische Blockansicht eines verbesserten Fenster-Turbo-Decodierers ist,
  • 7 schematisch ein verbessertes Turbo-Decodierungsfensterschema zeigt, und
  • 8 eine beispielhafte BLER-Kurve ist, dies das simulierte Leistungsverhalten für eine Ausführungsform der vorliegenden Erfindung zeigt.
  • Detaillierter Beschreibung bevorzugter Ausführungsformen
  • Wie nahegelegt ist, beginnt eine Gruppe aus Initialisierungsrekursionen normalerweise damit, dass alle Zustandsmaßzahlen auf den gleichen Wert (alle Zustände sind gleich wahrscheinlich) gesetzt wird, in der Hoffnung, dass bei einer gewissen Ratenanzahl an Rekursionen die Zustandsmaße auf die gleichen Werte konvergiert sein werden, die angenommen werden würden, wenn Rekursionen von einem bekannten Anfangszustand an einem Ende des Blockes aus ausgeführt worden wären.
  • Dies kann nie geschehen, wenn die Paritätsbits zu heftig punktiert bzw. entfernt wurden, dass es keine nicht-punktierten bzw. durchstoßenen Paritätsbits über die gesamte Dauer einer Initialisierungsphase hinweg gibt (die Zustandsmaße bleiben durchwegs in ihrem gleichen initialisierten Zustand). Insbesondere müssen in einem 8-Zustands-Trellis-Diagramm (entsprechend einer Codierer-Begrenzungslänge bzw. einer Länge mit Nebenbedingung von gleich 4) mindestens 3 (Codierer-Begrenzungslänge 1) nicht-punktierter Paritätsbits während der Initialisierungsphase sein, bevor es möglich ist, dass die Zustandsmaße auf den Punkt hin divergieren, an welchem ein einzelnes Zustandsmaß größer ist, als die verbleibenden 7.
  • Teilweise aus diesem Grunde ist es so, dass zum Erreichen des gleichen Leistungsverhaltens wie bei einem MAP-Decodierer ohne Fenster ein MAP-Decodierer mit Fenster einen wesentlich längeren Durchlauf an Initialisierungsrekursionen erfordern kann, wenn viele Paritätsbits durchstoßen sind.
  • Diese Wirkung kann verstärkt sein und kann sich bei und in der Nähe gewisser kleinerer Coderaten herum stabilisieren, wenn die verbleibenden nicht durchstoßenen bzw. entfernten Paritätsbits lediglich bei genauen Vielfachen der Impulsantwortperiode des rekursiven konstituierenden Codierers auftreten. Beispielsweise besitzt der rekursive 3-Bit-Konvolutionscodierer, der für die Turbo-Codierung in dem 3GPP-Standard verwendet wird eine Impulsantwortperiode von 7 (siehe Referenzen 3 und 7 oben). Wenn dieses Muster auftritt, machen es LLR-Werte von nicht durchstoßenden bzw. nicht entfernten Paritätsbits die bei den Initialisierungsrekursionen angetroffen werden, möglich, dass die Zustandsmaße lediglich so divergieren, wie ein einzelnes nicht entferntes Paritätsbit. In ähnlicher Weise können zwei verschachtelte Gruppen aus nicht durchstoßenen Paritätsbits, die jeweils eine genaue Periodizität von 7 besitzen, es möglich machen, dass die Initialisierungsrekursionen, so angetroffen werden, dass die Zustandsmaße lediglich um soviel wie zwei nicht entfernte Paritätsbits divergieren. In diesen speziellen Fällen gibt es während einer beliebigen Länge der Initialisierung nie genügend Paritätsinformation, so dass die Zustandsmaße bis zu dem Punkt divergieren können, an dem ein einzelner Zustand eine höhere Wahrscheinlichkeit als jede der anderen sieben Zustände besitzt. (Zu beachten ist, dass stattdessen ein MAP-Prozess ohne Fensterverfahren, der nicht auf Initialisierungsrekursionen beruht, lediglich den Vorteil besäße, dass er von einem bekannten Zustand an einem Ende des Blockes aus beginnt.)
  • Obwohl dieses Problem relativ einfach vermieden werden könnte, in dem das Durchstoßungsmuster geringfügig verändert wird, wurde dies nicht erkannt, bis zunehmend höhere Coderaten angenommen wurden, und diese pathologische Durchstoßung wurde zunehmend ein Problem. Dies geschah mehrere Jahre, nachdem der 3GPP-Standard zum ersten Mal veröffentlicht und von vielen Parteien verwendet wurde. Somit definiert der 3GPP-Standard einen einfachen Durchstoßungsalgorithmus, der jedoch für dieses Problem bei allen Coderaten R = 7n/(7n + 4) anfällig ist, wobei „n” eine beliebige positive Ganzzahl ist. Unter diesen Bedingungen ist die kleinste Coderate, für die ein MAP-Decodierer mit Fensterbildung (mit einer Fenstergröße gleich mehrere Begrenzungslängen) einen ausgeprägten Nachteil gegenüber einem MAP-Decodierer ohne Fenster sein könnte, ungefähr R = 7/11.
  • Selbst ein MAP-Decodierer ohne Fenster kann ein relativ schlechtes Verhalten bei diesen Durchstoßungsmustern und den zuvor genannten speziellen Raten aufweisen (etwas höher oder etwas tiefere Daten – mit mehr oder weniger Paritätsbits – verhalten sich wesentlich besser, da das „1 in 7” Muster für nicht entfernte Paritätsbits gebrochen ist). Ein MAP-Decodierer mit Fenster verhält sich noch schlechter, da in der Nähe dieser speziellen Raten die Zustandsmaße gegebenenfalls nicht konvergieren, wenn das Muster aus Bit durchstoßenden Paritätsbits, das während einer Initialisierungsphase angetroffen wird, die zuvor genannte Periodizität aufweist. Wenn die Dauer der Initialisierungsphase kurz ist, kann dies für Coderaten der Fall sein, die lediglich Nahe aber nicht genau bei 7n/(7n + 4) liegen. Bei Annäherung an diese Raten kann ein Ausführen wesentlich längerer Gruppen aus Initialisierungsrekursionen es einen MAP-Decodierer mit Fenster ermöglichen, sich so gut wie ein MAP-Decodierer ohne Fenster zu verhalten. Jedoch ist, wie zuvor erläutert ist, das Verlängern der Initialisiserungsphase aufwendig.
  • 5 ist ein Graph, der zeigt, welche Raten für welche Fenstergrößen problematisch sind, in dem angegeben wird, ob die Anzahl an „wirksamen” Paritätsbits in einer Initialisierungsphase kleiner als 3 ist.
  • Wenn W = die Initialisierungslänge, R = die Coderate und P = 2R/(1 – R) ist, konvergiert die Initialisierungsphase unter Umständen nicht, wenn:
    Figure 00210001
  • Zusammengefasst gilt also, obwohl der MAP-Decodierer mit Fenster den größeren Vorteil besitzt, dass ein großer temporärer Speicher erforderlich ist, kann dennoch das Verhalten schlecht sein im Vergleich zu einem Decodierer ohne Fenster, wenn eine Durchstoßung verwendet wird, um die Coderate zu erhöhen. Aus den gerade beschriebenen Gründen gilt dies insbesondere für den Turbo-Codierer und einen Durchstoßungsalgorithmus, der in dem 3GPP-Standard definiert ist.
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung lösen diesen Nachteil für alle Coderaten, wenn der Log-MAP-Decodierer als ein Teil eines Turbo-Decodierers verwendet wird, ohne dass die Länge der Initialisierungsphase oder die Fenstergröße verändert werden müssen. Die bevorzugten Ausführungsformen ermöglichen es einem Turbo-Decodierer, der unter Anwendung von MAP- oder Log-MAP-Decodierern mit Fenstern aufgebaut Ist, dass er nahezu die gleiche Fehlerkorrekturleistung erreicht wie ein MAP- oder Log-MAP-Decodierer vollständig ohne Fenster. Somit kann die Ökonomie eines MAP- oder Log-MAP-Decodierers mit Fenster erreicht werden, ohne dass eine wesentliche Leistungseinbuße damit verknüpft ist. Beispielsweise betrifft das Folgende die Vewendung eines Log-MAP-Decodierers, wobei dies auch auf eine andere Implementierung der MAP-Trellis-Verarbeitung zum Decodieren von Turbo-Komponentencodes oder auch tatsächlich für andere Decodierer mit Fenster gilt.
  • In den bevorzugten Ausführungsformen besteht die Lösung darin, einen „Schnappschuss bzw. eine Momentaufnahme” einer Gruppe aus Zustandsmaßen zu verwenden, die während des Decodierens eines Fensters in einer einzelnen Turbo-Decodierer-Iteration gespeichert werden, um eine entsprechende Gruppe aus Zustandsmaßen zu Beginn einer Initialisierungsphase der nächsten Turbo-Decodierer-Iteration zu initialisieren.
  • Vorzugsweise sind zwei Modifizierungen an dem Decodierprozess wie folgt zu machen.
  • Die erste Modifizierung besteht darin, für jede alternierende Turbo-Decodierer-Iteration die Richtung, in der Initilisierungsrekursionen ausgeführt werden, in die Richtung zu ändern, in der kontinuierlich Rekursionen innerhalb der Log-MAP-Decodierer ausgeführt werden. D. h., in einer einzelnen Turbo-Decodierer-Iteration werden die Initialisierungs-Trellis-Rekursionen in der umgekehrten Richtung ausgeführt, während der Block in Fenstern decodiert wird, beginnend mit einem Fenster am Beginn des Blockes, wobei Fenster für Fenster der Reihe nach bis zum Ende des Blockes abgearbeitet wird (so dass die Richtung der kontinuierlichen Rekursionen vorwärts ist). Danach werden in der nachfolgenden Turbo-Decodierer-Iteration die Initialisierungs-Trellis-Rekursionen in der Vorwärtsrichtung ausgeführt, während der Block beginnend von dem spätestens Fenster in dem Block decodiert wird und die Abarbeitung Fenster für Fenster der Reihe nach bis zum frühesten Fenster erfolgt (so dass die Richtung von kontinuierlichen Rekursonen umgekehrt ist). In der nächsten Turbo-Decodierer-Iteration, die darauf folgt, werden die Richtungen wieder umgedreht werden und so weiter.
  • Zweitens, ein „Schnnppschuss” einer der kontinuierlich erzeugten Gruppen aus Zustandsmaßen wird in regelmäßigen Intervallen eines Fensters gespeichert. Die Schnappschüsse werden dann während der folgenden Turbo-Iteration verwendet, um die Zustandsmaße zu Beginn jeder Gruppe aus Initialisierungsrekursionen in den konstituierenden Log-MAP-Decodierern zu initialisieren – dies ist nur möglich, da die Richtung der Initialisierungsrekursion für jede zweite Turbo-Iteration bei einem vorgegebenen Decodierer umgekehrt wird. Es ist lediglich ein kleiner Bereich an Speicher erforderlich, um die Schnappschüsse zu speichern, da sie lediglich einmal pro Fensterlänge genommen werden. Die Genauigkeit, mit der die Zustandsmaße in diesen Schnappschüssen gespeichert werden, kann reduziert werden, um den erforderlichen Speicherplatz zu minimieren, ohne dass das Leistungsverhalten stark beeinflusst wird. Diese Lösung ergibt einen Turbo-Decodierer, der aus Log-MAP-Decodierern mit Fenstern aufgebaut ist, der nahezu so effizient ist, wie einer der aus Log-MAP-Decodierern vollständig ohne Fenster aufgebaut ist, selbst wenn der Turbo-Code durchstoßen ist.
  • Vorzugsweise werden zwei Arten von Log-MAP-SISO-Decodierer mit Fenstern verwendet. Einer führt die zuvor genannte Initialisierung (Initialisierung) nur in der umgekehrten Richtung und der andere nur in der Vorwärtsrichtung aus.
  • 6 ist eine schematische Blockansicht eines modifizierten Turbo-Decodierers gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Turbo-Decodierer umfasst ein paar aus Decodierern einen Rückwärts-Initialisierungsdecodierer 115 und einen Vorwärts-Initialisierungsdecodierer 115'. Der Turbo-Decodierer umfasst ferner zwei Schnappschuss-Speicher, die als Speicher0 und Speicher1 bezeichnet sind und ein Hartentscheidungsmodul 125. Der Rückwärts-Initialisiserungsdecodierer 115 umfasst jeweils einen ersten und einen zweiten konstituierenden SISO-Decodierer 117a und 117b, einen entsprechende Verschachtelungseinheit 119 und eine entsprechende Entschachtelungseinheit 123. Der Vorwärts-Initialisierungsdecodierer 115' umfasst einen entsprechenden ersten und zweiten konstituierenden SISO-Decodierer 117a' und 117b', eine entsprechende Verschachtelungseinheit 119' und eine entsprechende Entschachtelungseinheit 123'. Die einzelnen SISO-Decodierer 117a, 117b, 117a' und 117b' sind vorzugsweise Log-MAP-SISO-Decodierer mit Fenstern. Somit ist jeder ausgebildet, einen Block aus empfangenen Symbolen (und ihre entsprechenden Gruppen aus Zustandsmaßen) in Fenster aufzuteilen und jedes Fenster separat mittels Vorwärtsdurchläufen und Rückwärtsdurchläufen aus Trelles-Rekursionen zu decodieren.
  • Jeder der beiden Decodierer 115 und 115' ist ähnlich zu denen, die im Bezug zu 1 beschrieben sind, wobei jedoch die folgenden Änderungen vorgenommen sind. Der erste einzelne SISO-Decodierer 117a und der zweite einzelne SISO-Decodierer 117b des Rückwärts-Initialisierungsdecodierers 115 sind jeweils so ausgebildet, dass durch Decodieren eines Blockes aus empfangenen Symbolen Fenster für Fenster in der Vorwärtsrichtung arbeiten, aber Initialisierungs-Rekursionen in der Rückwärtsrichtung des Blockes ausführen. Der erste konstituierende SISO-Decodierer 117a' und der zweite konstituierende SISO-Decodierer 117b' des Vorwärts-Initialisiserungsdecodierers 115' sind jeweils ausgebildet, durch Decodierung eines Blockes aus empfangenen Symbolen Fenster für Fenster in der Rückwärtsrichtung zu arbeiten, aber Initialisierungsrekursionen in der Vorwärtsrichtung des Blockes auszuführen. Dies wird detaillierte mit Bezug zu 7 beschrieben.
  • Ferner ist der Eingang Ein des ersten SISO-Decodierers 117a des Rückwärts-Initialisierungsdecodierers 115 nicht direkt in einer Rückkopplungsschleife mit dem Ausgang Eout des zweiten SISO-Decodierers 117b des Rückwärts-Initialisierungsdecodierers 115 verbunden, sondern ist stattdessen mit dem Ausgang Eout des Vorwärts-Initialisiserungsdecodierers 115' (über dessen entsprechende Entschachtelungseinheit 123') verbunden. Folglich ist der Ausgang Eout des zweiten SISO-Decodierers 117b des Rückwärts-Initialisiserungsdecodierers 115 nicht direkt in einer Rückkopplungsschleife mit dem Eingang Ein des ersten SISO-Decodierers 117a des Rückwärts-Initialisierungsdecodierers 115 verbunden, sondern ist stattdessen mit dem Eingang Ein des ersten SiSO-Decodierers 117a' des Vorwärts-Initialisierungdecodierers 115' (über die entsprechende Entschachtelungseinheit 123) verbunden. Der Eingang Ein des ersten SISO-Decodierers 117a' des Vorwärts-Initialisierungsdecodierers 115' ist nicht direkt in einer Rückkopplungsschleife mit dem Ausgang Eout des zweiten SISO-Decodierers 117b' des Rückwärts-Initialisierungsdecodierers 115' verbunden, sondern ist stattdessen mit dem Ausgang Eout des Rückwärts-Initialisierungsdecodierers 115 (über die jeweilige Entschachtelungseinheit 123) verbunden. Der Ausgang Eout des zweiten SISO-Decodierers 117b' des Vorwärts-Initialisierungsdecodierers 115' ist nicht direkt rückgekoppelt in einer Rückkopplungsschleife zu dem Eingang Ein des ersten SISO-Decodierers 117a' des Vorwärts-Initialisierungsdecodierers 115', sondern ist stattdessen mit dem Eingang Ein des ersten SISO-Decodierers 117a des Rückwärts-Initialisierungsdecodierers 115 (über die entsprechende Entschachtelungseinheit 123') verbunden.
  • Somit ist der gesamte Turbo-Decodierer so ausgebildet, dass Turbo-Iterationen abwechseln unter Anwendung des Rückwärts-Initialisierungsdecodierers 115 und des Vorwärts-Initialisierungsdecodierers 115' verwendet werden.
  • Ein Ausgang (LLRout) der Entschachtelungseinheit 123' des Vorwärts-Initialisierungsdecodierers 115' ist mit dem Eingang des Hartentscheidungsmoduls 125 gekoppelt, das ausgebildet ist, die harte Entscheidung bereitzustellen, die ausgegeben wird, sobald Turbo-Iterationen sowohl von dem Rückwärts- als auch dem Vorwärts-Initialisierungsdecodierer 115 und 115' ausgeführt sind.
  • Ferner ist der erste SISO-Decodierer 117a des Rückwärts-Initialisierungsdecodierers 115 mit ersten Zustandsmaß-Schnappschuss-Speicher (Speicher0) und der zweite SISO-Decodierer 117b des Rückwärts-Initialisierungsdecodierers 115 mit dem zweiten Zustandsmaß-Schnappschuss-Speicher (Speicher1) verbunden. Der erste SISO-Decodierer 117a' des Vorwärts-Initialisierungsdecodierers 115' ist mit dem ersten Zustandsmaß-Schnappschuss-Speicher (Speicher0) und der zweite SISO-Decodierer 117b' des Vorwärts-Initialisierungsdecodierers 115' ist mit dem zweiten Zustandsmaß-Schnappschuss-Speicher (Speicher1) verbunden. Die SISO-Decodierer 117a und 117b, 117a' und 117b' sind ausgebildet, in Verbindung mit den Zustandsmaß-Schnappschuss-Speichern (Speicher0 und Speicher1) zusammen zu arbeiten, um Schnappschüsse bzw. Momentaufnahmen von Zustandsmaßen aufzunehmen, zu speichern und zu verwenden, in einer Weise, wie dies detaillierter nachfolgend erläutert ist.
  • Der ausgeführte Prozess ist schematisch in 7 gezeigt.
  • Die zuvor genannten „Schnappschüsse bzw. Momentaufnahmen” der Zustandsmaße, die für jede Fensterlänge L genommen werden, werden separat für SISO-Decodierungen von nicht-verschachtelten und verschachtelten Daten in dem Speicher0 und Speicher1 (gezeigt) gespeichert.
  • Es wird ein gespeicherter Schnappschuss verwendet, um eine Initialisierungsphase an genau dem gleichen Punkt in dem Block zu initialisieren, an welchem dieser ursprünglich genommen wurde.
  • Werden Schnappschüsse in genau der entgegengesetzten Reihenfolge verwendet, in der sie gespeichert wurden (Schnappschüsse der Zustandsmaße aus kontinuierlichen Vorwärts-Trellis-Rekursionen werden später verwendet, um die Rückwärts-Initialisierungs-Trellis-Rekursionen zu initialisieren und umgekehrt.
  • Gemäß 7 ist beispielhaft das Decodieren eines Blockes mit Symbolen der Größe B dargestellt, wobei das Symbol und seine entsprechende Gruppe aus Zustandsmaßen durch einen entsprechenden Index 0, 1, 2, ..., B-1 innerhalb des Blockes gekennzeichnet wird. Der Block mit den Symbolen der Länge B wird in Fenster der Länge W und Initialisierungsphasen der Länge L unterteilt. In diesem Beispiel ist W gleich L, wobei dies aber nicht notwendigerweise der Fall sein muß. Der Block Ist nicht notwendigerweise ein ganzzahliges Vielfaches der Fensterlänge W. Es kann ein Rest K verbleiben, derart, dass K=B MOD W ist, wobei MOD die Moduln-Operation angibt, wobei eines der Fenster lediglich eine Länge K anstelle der vollen Länge W aufweist (vorzugsweise ein Fenster am Rand). D. h., generell B=nW+K, wobei n eine Ganzzahl ist. Der Anschaulichkeit halber sei n = 3 in dem gezeigten Beispiel und dies nachfolgend erläutert (obwohl in einem typischeren Fall n >> 1 ist).
  • Die obere Hälfte der 7 zeigt das Decodieren, das von dem Rückwärts-Initialisierungsdecodierer 115 ausgeführt wird. Der Prozess ist sowohl an den nicht-verschachtelten als auch an den verschachtelten Versionen der Daten in dem ersten und dem zweiten konstituierenden SISO-Decodierer 117a und 117b ausgeführt.
  • Der Prozess beginnt mit einem Fenster der Größe W an dem frühesten Punkt in dem Block. Ein Rückwärtsdurchlauf aus Initialisierungsrekursionen („warmup0”) wird beginnend von dem Index W–1 zurück zum Index 0 ausgeführt. Sofern dies nicht die erste Turbo-Iteration ist, beginnt der Initialisierungsdurchlauf „warmup0” mit einer Gruppe aus Zustandsmaßen, die initialisiert werden, so dass sie weich sind zu einem entsprechenden gespeicherten Schnappschuss des s1 aus vorhergehenden Turbo-Iteration (oder wenn es die erste Turbo-Iteration ist, dann beginnen die Zustandsmaße dieser Gruppe mit gleicher Wahrscheinlichkeit). Zu beachten ist, dass s1 aus dem Schnappschuss-Speicher0 für den nicht-verschachtelten SISO-Decodierer und von dem Schnappschuss-Speicher1 für den verschachtelten SISO-Decodierer ausgelesen wird.
  • In der nachfolgenden Zeit wird ein Vorwärtsdurchlauf aus Trellis-Rekursionen („forwdso0”) über das Fenster hinweg vom Index 0 bis zum Index W–1 ausgeführt. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Vorwärtsdurchlauf bestimmt werden, werden in dem Speicher für weitere Rekursionen in einem Rückwärtsdurchlauf („reverse0”) gespeichert.
  • Zu beachten ist, dass in einigen Ausführungsformen diese anfängliche Initialisierung „warmup0” als nicht relevant aus Sicht der vorliegenden Erfindung erachtet wird. Die eigentliche bevorzugte Decodierer-Implementierung führt jedoch warmup0 aus, da für 3GPP dann „forwds0” mit dem bekannten Null-Zustand zu Beginn des Blockes initialisiert werden sollte, aber dies ist nicht in allen Ausführungsformen entscheidend.
  • Während des Vorwärtsdurchlaufs „forwrds0” über das Fenster 0 bis W-1 wird ein Schnappschuss S1 einer der Gruppen aus Zustandsmaßen genommen und in dem Zustandsmaß-Schnappschuss-Speicher (der erste Schnappschuss-Speicher0 für die nicht-verschachtelte Iteration in dem ersten SISO-Decodierer 117a und der zweite Schnappschuss-Speicher1 für die verschachtelte Iteraiton in dem zweiten SISO-Decodierer 117b) gespeichert. Die Position des Schnappschusses S1 ist die Position in welcher die Strecke in das Fenster in Vorwärtsrichtung gleich ist zu dem Rest K (d. h. wenn der Index MOD W=K), was für S1 bei K-1 der Fall ist. Dies bedeutet, dass der Schnappschuss S1 zu dem Beginn eines Initialisierungsdurchlaufs in der nächsten Turbo-Decodierer-Iteration ausgerichtet ist (siehe unten).
  • Es wird auch ein weiterer Initialisierungsdurchlauf („warmup1”) in der Rückwärtsrichtung vom Index 2W–1 zum Index W durchgeführt. Sofern dies nicht die erste Turbo-Iteration ist, beginnt der Initialisierungsdurchlauf „warmup1” mit einer Gruppe aus Zustandsmaßen, die so initialisiert werden, dass sie gleich einem entsprechenden gespeicherten Schnappschuss S2 aus der vorhergehenden Turbo-Iteration sind.
  • Zu einer nachfolgenden Zeit wird ein Rückwärtsdurchlauf aus Trellis-Rekursionen („reverse0”) über das Fenster hinweg vom Index W–1 bis zum Index 0 ausgeführt, wobei aus der Gruppe aus Zustandsmaßen vom Index W begonnen wird, wie er durch den benachbarten Initialisierungslauf „warmup1” bestimmt ist. Während dieses Rückwärtsdurchlaufes „revers0” werden Ausgangs-LLR-Werte gleichzeitig wie jede entsprechende Trellis-Rekursion zur Ausgabe für die nächste Turbo-Iteration berechnet.
  • Es wird auch ein weiterer Vorwärtsdurchlauf aus Trellis-Rekursionen („forwrds1”) über das nächste Fenster von Index W bis zu Index 2W–1 ausgeführt, wobei von der Gruppe aus Zustandsmaßen von dem Index W–1 begonnen wird, wie er in dem vorhergehenden benachbarten Vorwärtsdurchlauf „forwrdsD” bestimmt wird. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Vorwärtsdurchlauf bestimmt werden, werden in einem Speicher für weitere Rekursionen in einem Rückwärtsdurchlauf („revers1”) gespeichert. Während des Vorwärtsdurchlaufs „forwrds1” über das Fenster W bis 2W-1 wird ein weiterer Schnappschuss S2 einer der Gruppen aus Zustandsmaßen genommen und wird in dem zugehörigen Zustandsmaß-Schnappschuss-Speicher (Speicher0 für die nicht-verschachtelte Iteration und Speicher1 für die verschachtelte Iteration) gespeichert. Die Position dieses nächsten Schnappschusses S2 ist wiederum die Position, an der die Strecke in das Fenster in der Vorwärtsrichtung gleich ist zu dem Rest K (d. h., wenn der Index MOD W=K), was für S2 bei W+K–1 gilt. Dies bedeutet, dass der Schnappschuss S2 zu dem Start eines entsprechenden Inititalisierungsdurchlaufs in der nächsten Turbo-Decodierer-Iteration ausgerichtet ist (siehe unten).
  • Es wird noch ein weitere Initialisierungsdurchlauf („warmup2”) in der Rückwärtsrichtung vom Index 3W–1 zurück zum Index 2W durchgeführt. Sofern dieser nicht die erste Turbo-Iteration ist, beginnt der Initialisierungsdurchlauf „warmup2” mit einer Gruppe aus Zustandsmaßen, die so initialisiert sind, dass sie gleich einem entsprechenden gespeicherten Schnappschuss S3 aus der vorhergehenden Turbo-Iteration sind.
  • Zu einer nachfolgenden Zeit wird ein Rückwärtslauf aus Trellis-Rekursionen („reverse1”) über das Fenster vom Index 2W–1 bis zum Index W ausgeführt, wobei von der Gruppe aus Zustandsmaßen vom Index 2W begonnen wird, wie er durch den benachbarten Rückwärts-Initialisierungsdurchlauf „warmup2” bestimmt wird. Während dieses Rückwärtsdurchlaufes „reverse1” werden Ausgangs-LLR-Werte gleichzeitig mit der jeweiligen entsprechenden Trellis-Rekursion zur Ausgabe an die nächste Turbo-Iteration berechnet.
  • Es wird auch ein weiterer Vorwärtsdurchlauf aus der Trellis-Rekursionen („forwrds2”) über das nächste Fenster hinweg ausgeführt vom Index 2W bis zum Index 3W–1, wobei von der Gruppe aus Zustandsmaßen von dem Index 3W–1 begonnen wird, der in dem vorhergehenden benachbarten Vorwärtsdurchlauf „forwrds1” bestimmt wird. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Vorwärtsdurchlauf bestimmt werden, werden in dem Speicher für weitere Rekursionen in einem Rückwärtsdurchlauf („revers2”) gespeichert. Während des Vorwärtsdurchlaufs „forwrds2” über das Fenster 2W bis 3W–1 wird ein weiterer Schnappschuss S3 einer der Gruppen aus Zustandsmaßen genommen und wird in dem zugehörigen Zustandsmaß-Schnappschuss-Speicher (Speicher0 für die nicht-verschachtelte Iteration und Speicher1 für die verschachtelte Iteration) gespeichert. Die Position dieses nächsten Schnappschusses S3 ist wiederum die Position, an der die Strecke in das Fenster in der Vorwärtsrichtung gleich ist zum Rest K (d. h., wenn der Index MOD W=K), was für S3 bei 2W+K–1 gilt. Dies bedeutet, dass der Schnappschuss S3 zu dem Start eines entsprechenden Initialisierungsdurchlaufs in der nächsten Turbo-Decodierer-Iteration ausgerichtet ist (siehe unten).
  • Es wird auch noch ein weiterer Initialisierungsdurchlauf („warmup3”) in der Rückwärtsrichtung von Index B–1 zurück zum Index 3W durchgeführt (so dass dies ein kürzerer Durchlauf über den Rest K des Blockes ist, nachdem die größtmögliche ganze Zahl n aus Fenstern W in dem Block gedeckt ist). Für diese Initialisierung ist ein Schnappschuss gegebenenfalls nicht erforderlich. Zu beachten ist, dass eine Eigenschaft des für 3GPP verwendeten Turbocodes darin besteht, dass der Codierer den Block im Nullzustand beginnt und beendet, so dass hier „warmup3” mit dem bekannten Null-Zustand beim Index B–1 initialisiert würde. Jedoch verwenden andere Turbocodes auf das Ende hin gerichtete oder zirkulierende Trellis-Algorithmen, in denen es geeignet sein kann, diesen Durchlauf von einem Schnappschuss aus zu initialisieren.
  • Zu einer späteren Zeit wird ein weitere Rückwärtsdurchlauf aus Trellis-Rekursionen („revers2”) über das Fenster hinweg vom Index 3W–1 bis zum Index 2W durchgeführt, wobei von der Gruppe aus Zustandsmaßen vom Index 3W aus begonnen wird, wie er durch den benachbarten Rückwärts-Initialisierungsdurchlauf „warmup3” bestimmt ist. Während dieses Rückwärtsdurchlaufes „revers2” werden Ausgangs-LLR-Werte gleichzeitig wie jede entsprechende Trellis-Rekursion für die Ausgabe an die nächste Turbo-Iteration berechnet.
  • Ein weiterer Vorwärtsdurchlauf aus Trellis-Rekursionen („forwrds3”) wird ebenfalls über das nächste Fenster hinweg vom Index 3W zum Index B–1 durchgeführt, beginnend mit der Gruppe aus Zustandsmaßen von dem Index 3W–1, wie er in dem vorhergehenden benachbarten Vorwärtsdurchlauf „forwrds2” bestimmt ist. Somit überdeckt dieser letzte Vorwärtsdurchlauf „forwrds3” den letzten Rest K am Ende des Blockes B. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Vorwärtsdurchlauf bestimmt werden, werden in einem Speicher für weitere Rekursionen über einen Rückwärtsdurchlauf („revers3”) gespeichert. Es muss kein Schnappschuss in diesem letzten Vorwärtsdurchlauf „forwrds3” genommen werden.
  • Schließlich wird in einer weiter nachfolgenden Zeit ein letzter Rückwärtsdurchlauf aus Trellis-Rekursionen („revers3”) über das Fenster hinweg vom Index B–1 zum Index 3W durchgeführt. Während dieses Rückwärtsdurchlaufes „revers3” werden Ausgangs-LLR-Werte zur gleichen Zeit an die jeweilige entsprechende Trellis-Rekursion für die Ausgabe an die nächste Turbo-Iteration berechnet. Für 3GPP sollte der „revers3”-Durchlauf auf den bekannten Null-Zustand beim Index B–1 initialisiert werden.
  • Um somit die Funktionsweise des Rückwärts-Initialisiserungsdecodierers 115 zusammen zu fassen, gilt, dass der Block aus Symbolen Fenster für Fenster decodiert wird, wobei vom Beginn des Blockes gestartet wird und vorwärts gearbeitet wird, wobei der Rest K am Ende des Blockes angeordnet ist. Dies bedeutet, dass vorwärts die Richtung von kontinuierlichen Rekursionen ist. Anders ausgedrückt, die Vorrvärtsdurchläufe in jedem nachfolgenden Fenster können von den Zustandsmaßen des vorhergehenden Fensters beginnen, aber Rückwärtsdurchläufe erfordern andererseits Initialisierungsdurchläufe aufgrund der diskontinuierlichen Disposition aufeinanderfolgender Durchläufe aus Trellis-Rekursionen in dieser Richtung (beispielsweise zurücklaufen vom Index W–1 zu 0, dann Springen auf 2W–1, dann zurücklaufen zu W, etc.). Die Zustandsmaße werden während der Vorwärtsdurchlaufe aus Rekursionen gespeichert und die Ausgangs-LLR-Werte werden zur gleichen Zeit wie die Rückwärts-Rekursionen berechnet. Es werden Schnappschüsse genommen und während der Vorwärtsdurchläufe auf dem Wege in Vorwärtsrichtung durch den Block gespeichert und Initialisierungen werden in der Rückwärtsrichtung durchgeführt.
  • Auf die Schnappschüsse wird in der folgenden Reihenfolge zugegriffen:
    • – s1 aus der vorhergehenden Turbo-Iteration wird verwendet, um warmup0 in der aktuellen Turbo-Iteration zu initialisieren
    • – s2 aus der vorhergehenden Turbo-Iteration wird verwendet, um warmup1 in der aktuellen Turbo-Iteration zu initialisieren
    • – s1 wird während forwrds0 in der aktuellen Turbo-Iteration zur Verwendung in der nächsten Turbo-Iteration gespeichert
    • – s3 aus der vorhergehenden Turbo-Iteration wird verwendet, um warmup2 in der aktuellen Turbo-Iteration zu initialisieren
    • – s2 wird während forwrds1 in der aktuellen Turbo-Iteration zur Verwendung in der nächsten Turbo-Iteration gespeichert
    • – s3 wird während forwrds2 in der aktuellen Turbo-Iteration zur Verwendung in der nächsten Turbo-Iteration gespeichert
  • Schnappschüsse werden aus dem Schnappschuss-Speicher0 für den nicht-verschachtelten SISO-Decodierer und von dem Schnappschuss-Speicher1 für den verschachtelten SISO-Decodierer ausgelesen.
  • Die untere Hälfte der 7 zeigt das Decodieren, wie es von dem Vorwärts-Initialisierungsdecodierer 115' ausgeführt wird. Der Prozess wird sowohl an den nicht-verschachtelten als auch an verschachtelten Versionen der Daten in dem ersten und dem zweiten konstituierenden SISO-Decodierere 117a' bzw. 117b' ausgeführt.
  • Diesmal beginnt der Prozess mit einem Fenster der Größe W an der spätesten Position in dem Block der Größe B. Ein Vorwärtsdurchlauf aus Iinitalisiserungsrekursionen („warmup0”) wird beginnend von dem Index B–W in Vorwärtsrichtung zum Index B–1 ausgeführt. Sofern dies nicht die erste Turbo-Iteration ist, beginnt der Initialisierungsdurchlauf „warmup0” mit einer Gruppe an Zustandsmaßen, die so initialisiert werden, dass sie gleich dem entsprechenden gespeicherten Schnappschuss S3 aus der vorhergehenden Turbo-Iteration sind. Es ist somit anzumerken, dass der Rest K nicht am Ende des Blockes wie in dem Rückwärts-Initialisierungsdecodierer 115 behandelt wird, so dass die Fenster des Vorwärts-Initialisierungsdecodierers 115' nicht zu den Fenstern des Rückwärts-Initialisierungsdecodierers 115 ausgerichtet sind. Aufgrund der Art, wie die Position der Schnappschüsse bestimmt ist, bedeutet dies, dass die Schnappschüsse von der vorhergehenden Turbo-Iteration tatsächlich jeweils zu dem Beginn einer entsprechenden Phase der Initialisierungsphasen der nächsten Turbo-Iteration ausgerichtet sind, so dass der Beginn des Initialisierungsdurchlaufs aus Rekursionen initialisiert werden kann, in dem die Startgruppe aus Zustandsmaßen gleichgesetzt wird zu den Schnappschüssen. Dies funktioniert für alle Schnappschüsse und ihre entsprechende Fenster und sowohl für die Änderung von dem Rückwärts- zu dem Vorwärts-Initialisierungsdecodierer 115 und 115' und umgekehrt von dem Vorwärts- zu dem Rückwärts-Initialisierungsdecodierer 115' und 115.
  • Zu einer nachfolgenden Zeit wird ein Rückwärtsdurchlauf aus Trellis-Rekursionen („revers0”) über das Fenster vom Index B–1 zum Index B–1–W ausgeführt. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Rückwärtsdurchlauf bestimmt werden, werden in einem Speicher für weitere Rekursionen in einem Vorwärtsdurchlauf („forwrds0”) gespeichert.
  • Während des Rückwärtsdurchlaufs „revers0” über das Fenster B–1 zu B–W wird ein Schnappschuss s3 einer der Gruppen aus Zustandsmaßen genommen und wird in dem Zustandsmaß-Schnappschuss-Speicher (der erste Schnappschuss-Speicher0 für die nicht-verschachtelte Iteration in dem ersten SISO-Dekodierer 117a' und in dem zweiten Schnappschuss-Speicher1 für die verschachtelte Iteration in dem zweiten SISO-Dekodierer 117b') gespeichert. Die Position des Schnappschusses s3 ist die Position, an der die Entfernung rückwärts in das Fenster hinein in der Rückwärtsrichtung gleich ist zum dem Rest K (d. h., n(B–1-Index) MOD W=K), was für s3 bei B-1-K der Fall ist. Wie zuvor erläutert ist, bedeutet dies, dass der Schnappschuss s3 zu dem Start des Rückwärts-Initialisierungsdurchlaufs „warmup2” in der nächsten Turbo-Decodierer-Iteration ausgerichtet ist.
  • Ein weitere Initialisierungsdurchlauf („warmup1”) wird ebenfalls in der Vorwärtsrichtung vom Index B–2W zum Index B–1–W ausgeführt. Der Initialisierungsdurchlauf „warmup1” beginnt mit einer Gruppe aus Zustandsmaßen, die so initialisiert werden, dass sie gleich dem entsprechenden gespeicherten Schnappschuss s2 aus der vorhergehenden Turbo-Iteration sind.
  • Zu einer nachfolgenden Zeit wird ein Vorwärtsdurchlauf aus Trellis-Rekursionen („forwrd0”) über das Fenster hinweg vom Index B–W zum Index B–1 ausgeführt, beginnend von der Gruppe aus Zustandsmaßen vom Index B–1–W, wie er durch den benachbarten vorhergehenden Vorwärts-Initialisierungsdurchlauf „warmup1” bestimmt ist. Während dieses Vorwärtsdurchlaufes „forwrd0” werden Ausgangs-LLR-Werte zum gleichen Zeitpunkt wie jede der entsprechenden Trellis-Rekursionen zur Ausgabe an die nächste Turbo-Iteration oder an das Hartentscheidungsmodul 125 berechnet.
  • Es wird ein weitere Rückwärtsdurchlauf aus Trellis-Rekursionen („revers1”) ebenfalls über das nächste Fenster zurück vom Index B–1–W zum Index B–2W durchgeführt, beginnend von der Gruppe aus Zustandsmaßen von dem Index B–W, wie er in dem benachbarten Rückwärtsdurchlauf „revers0” bestimmt ist. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Rückwärtsdurchlauf bestimmt werden, werden in dem Speicher für weitere Rekursionen für einen Vorwärtsdurchlauf („forwrds1”) gespeichert. Während des Rückwärtsdurchlaufs „revers1” über das Fenster B–1–W zurück zu B–2W wird ein weiterer Schnappschuss s2 in einer der Gruppen aus Zustandsmaßen genommen und in dem zugehörigen Zustandsmaß-Schnappschuss-Speicher (Speicher0 für die nicht-verschachtelte Iteration und Speicher1 für die verschachtelte Iteration) gespeichert. Die Position dieses nächsten Schnappschusses s2 ist wiederum die Position, an der die Entfernung zurück in das Fenster in der Rückwärtsrichtung gleich ist zu dem Rest K (d. h., wenn (B-1-Index) MOD W=K), was für s2 bei B-1-K-W der Fall ist. Dies bedeutet, dass der Schnappschuss s2 zu dem Start des entsprechenden Rückwärts-Initialisierungsdurchlaufs „warmup1” in der nächsten Turbo-Decodier-Iteration ausgerichtet ist.
  • Es wird ein noch weiterer Initialisierungsdurchlauf („warmup2”) in der Vorwärtsrichtung von dem Index B–3W zum Index B–1–2W durchgeführt. Der Initialisierungsdurchlauf „warmup2” beginnt mit einer Gruppe aus Zustandsmaßen, die so initialisiert sind, dass sie gleich einem entsprechenden gespeicherten Schnappschuss s1 aus der vorhergehenden Turbo-Iteration sind.
  • Während einer späteren Zeit wird ein Vorwärtsdurchlauf aus Trellis-Rekursionen („forwrds1”) über das Fenster hinweg von dem Index B–2W zum Index B–1–W durchgeführt, beginnend von der Gruppe aus Zustandsmaßen vom Index B–1–2W, wie er durch den benachbarten vorhergehenden Varwärts-Initialisierungsdurchlauf „warmup2” bestimmt ist. Während dieses Vorwärtsdurchlaufes „forwrds1” werden Ausgangs-LLR-Werte zur gleichen Zeit wie für die jeweilige entsprechende Trelles-Rekursion für die Ausgabe zu der nächsten Turbo-Iteration oder zu dem Hartenscheidungsmodul 125 berechnet.
  • Es wird ein weiterer Rückwärtsdurchlauf an Trellis-Rekursionen („revers2”) ebenfalls über das nächste Fenster zurück vom Index B–1–2W zurück zum Index B–3W durchgeführt, beginnend von der Gruppe aus Zustandsmaßen von dem Index B–2W, wie er in dem benachbarten Rückwärtsdurchlauf „revers1” bestimmt ist. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Rückwärtsdurchlauf bestimmt werden, werden im Speicher für weitere Rekursionen in einem Vorwärtsdurchlauf („forwrds2”) gespeichert. Während des Rückwärtsdurchlaufes „revers2” über das Fenster B–1–2W zurück zu B–3W wird ein weiterer Schnappschuss s1 einer der Gruppen aus Zustandsmaßen genommen und in dem zugehörigen Zustandsmaß-Schnappschuss-Speicher (Speicher0 für die nicht-verschachtelte Iteration und Speicher1 für die verschachtelte Iteration) gespeichert. Die Position dieses nächsten Schnappschusses s1 ist wiederum die Position, an der die Entfernung zurück in das Fenster in der Rückwärtsrichtung gleich ist zu dem Rest K (d. h., wenn (B–1-Index) MOD W=K), was für S1 bei B–1–K–2W der Fall ist. Dies bedeutet, dass der Schnappschuss s3 ausgerichtet ist zu dem Start eines entsprechenden Initialisierungsdurchlaufs in der nächsten Turbo-Decodierer-Iteraiton.
  • Es wird ferner ein weiterer Initialisierungsdurchlauf („warmup3”) in der Vorwärtsrichtung vom Index 0 bis zum Index B–1–3W ausgeführt (so dass dies ein kürzerer Durchlauf über den Rest K des Blockes ist, nachdem die größtmögliche Ganzzahl n aus Fenstern W rückwärts vom Ende des Blockes aus abgedeckt ist). Ein Schnappschuss ist für diese Initialisierung nicht erforderlich. Wiederum sollte für 3GPP „warmup3” auf dem bekannten Null-Zustand beim Index B–1 initialisiert werden.
  • Während einer späteren Zeit wird ein weiterer Vorwärtsdurchlauf aus Trellis-Rekursionen („forwrds2”) über das Fenster hinweg vom Index B–3W zum Index B–1–2W ausgeführt, beginnend von der Gruppe aus Zustandsmaßen vom Index B–1–3W, wie er durch den vorhergehenden benachbarten Vorwärts-Initialisierungsdurchlauf „warmup3” bestimmt ist. Während dieses Vorwärtsdurchlaufes „forwrd2” werden die Ausgangs-LLR-Werte gleichzeitig mit jeweils der entsprechenden Trellis-Rekursion für die Ausgabe an die nächste Turbo-Iteration oder an das Hartentscheidungsmodul 125 berechnet.
  • Es wird ein weiterer Rückwärtsdurchlauf aus Trellis-Rekursion („revers3”) ebenfalls über das nächste Fenster zurück vom Index B–1–3W zurück zum Index 0 beginnend von der Gruppe aus Zustandsmaßen vom Index B–3W ausgeführt, wie er durch den benachbarten Rückwärtsdurchlauf „revers2” bestimmt ist. Somit erfasst dieser letzte Rückwärtsdurchlauf „revers3” den letzten Rest K am Beginn des Blockes B. Die aktualisierten Gruppen aus Zustandsmaßen, die in diesem Rückwärtsdurchlauf bestimmt werden, werden im Speicher für weitere Rekursionen in einem Vorwärtsdurchlauf („forwrds3”) gespeichert. Es wird kein Schnappschuss in diesem letzten Rückwärtsdurchlauf „revers3” genommen.
  • Schließlich wird zu einem späteren Zeitpunkt ein letzter Vorwärtsdurchlauf aus Trellis-Rekursionen („forwrds3”) über das Fenster hinweg vom Index 0 bis zum Index B–1–3W ausgeführt. Während dieses Vorwärtsdurchlaufs „forwrds3” werden Ausgangs-LLR-Werte zur gleichen Zeit wie eine jeweilige entsprechende Trellis-Rekursion zur Ausgabe an die nächste Turbo-Iteration berechnet.
  • Um somit die Funktionsweise des Vorwärts-Initialisierungsdecodierers 115' zusammenzufassen, wird angemerkt, dass der Block aus Symbolen Fenster für Fenster decodiert wird, beginnend von dem Ende des Blockes, der rückwärts abgearbeitet wird, wobei der Rest K am Beginn des Blockes liegt. Dies bedeutet, dass rückwärts die Richtung der kontinuierlichen Rekursionen ist. Anders ausgedrückt, in diesem Falle können die Rückwärtsdurchläufe in jedem nachfolgenden Fenster rückwärts Richtung von den Zustandsmaßen des benachbarten Fensters weiter in Vorwärtsrichtung in dem Block beginnen, aber die Vorwärtsdurchläufe fordern andererseits die Initialisierungsdurchläufe aufgrund der diskontinuierlichen Position der nachfolgenden Durchlaufe aus Trellis-Rekursionen (beispielsweise Durchlauf Vorwärtsrichtung vom Index B–W zu B–1, dann Zurückspringen zu B–2W, und dann Durchlauf bis hinauf zu B–1–W, etc.). Die Zustandsmaße werden während der Rückwärtsgruppen von Rekursionen gespeichert, und Ausgangs-LLR-Werte werden zur gleichen Zeit wie die Vorwärts-Rekursionen berechnet. Es werden Schnappschüsse genommen und während der Rückwärtsdurchläufe auf dem Weg nach hinten auf dem Block gespeichert, und Initialisierungen werden in der Vorwärtsrichtung durchgeführt.
  • Auf die Schnappschüsse wird in der folgenden Reihenfolge zugegriffen:
    • – s3 von der vorhergehenden Turbo-Iteration wird verwendet, um warmup0 in der aktuellen Turbo-Iteration zu initialisieren
    • – s2 aus der vorhergehenden Turbo-Iteration wird verwendet, um warmup1 in der aktuellen Turbo-Iteration zu initialisieren
    • – s3 wird während revers0 in der aktuellen Turbo-Iteration zur Verwendung in der nächsten Turbo-Iteration geschrieben
    • – s1 aus der vorhergehenden Turbo-Iteration wird verwendet, um warmup2 in der aktuellen Turbo-Iteration zu initialisieren
    • – s2 wird während revers1 in der aktuellen Turbo-Iteration zur Verwendung in der nächsten Turbo-Iteration geschrieben
    • – s1 wird während revere2 in der aktuellen Turbo-Iteration zur Verwendung in der nächsten Turbo-Iteration geschrieben
  • 8 ist eine Kurve einer Blockfehlerrate (BIER), wobei beispielhaftes Verhalten gemäß den Simulationen von Ausführungsformen der vorliegenden Erfindung gezeigt ist (mit „vorgeschlagenen Technik” bezeichnet) für ein HSDPA UE für einen Fall mit sehr hoher Punktierung der Rate 1/3 der Turbocodierung (zur Orientierung zeigt die äußerst linke Kurve eine Dekodierung ohne Fenster und die äußerst rechte Kurve zeigt eine Dekodierung mit Fenster, wobei die vorliegende Erfindung nicht angewendet ist).
  • Die vorliegende Erfindung besitzt eine bevorzugte Anwendung in einem Softmodem. in diesem Fall Ist jede der Komponenten 115, 115' und 125 vorzugsweise in Software implementiert, die in einem Speicher abgelegt ist und von einem Prozessor ausgeführt wird. Der Speicher und der Prozessor können in einem Empfänger eingerichtet sein, beispielsweise einer Nutzeranlage oder einer Basisstation (Knoten B). Jedoch sind Lösungen, in denen einige oder alle Komponenten in spezieller Hardware eingerichtet sind, hiermit nicht ausgeschlossen.
  • Zu beachten ist, dass die obigen Ausführungsformen lediglich beispielhaft beschrieben sind. Die Reihenfolge der Arbeitsblöcke, die in der bevorzugten Ausführungsform beschrieben ist, kann auf eine beliebige Weise geändert werden, die dennoch die Verfügbarkeit der Zustandsinformation für eine geeignete Initialisierung der Zustandsmaße zu Beginn des Initialisierungsfensters in der nächsten Turbo-Iteration oder dergleichen geeignet ist. Die vorliegende Erfindung ist nicht auf die Verwendung eines Turbo-Decodierers oder auf MAP-Decodierer beschränkt, die gemäß einem speziellen Standard definiert sind, sondern das Prinzip der Erfindung kann allgemein auf einem beliebigen Decodierer mit Fenster angewendet werden, in welchem Vorwärts- und Rückwärtsdurchlaufe aus Rekursionen über Sequenzen von Zustandsmaße hinweg verwerdet werden. Ferner ist die Erfindung nicht speziell für 3GPP-Standards oder andere spezielle kabellose Kommunikationsstandards vorgesehen, sondern kann generell auf eine beliebige Art der Übertragung über einen verrauschten Kanal angewendet werden. Andere Anwendungen und Konfigurationen ergeben sich für den Fachmann nach dem Studium dieser Offenbarung. Die vorliegende Erfindung ist nicht auf die beschriebenen Ausführungsformen, sondern durch die angefügten Patentansprüche beschränkt.
  • 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 Patentliteratur
    • US 5933462 [0002]
    • US 2006/0067229 [0002]
  • Zitierte Nicht-Patentliteratur
    • „Fehler korrigierende Codierung und Decodierung an der Shannon-Grenze: Turbo-Codes” von „C. Berrou, A. Glavieux, P. Thitimaishima. Mitteilungen, 1993. ICC 93. Genf. Technisches Programm, Konferenzaufzeichnung, IEEE Internationale Konferenz, Band 2 (1993), Seiten 1064–1070, Teil 2 [0002]
    • 3GPP TS 25.212 (Multiplexverfahren und Kanalkodierung) Abschnitt 4.2.3.2 (Turbocodierung) und 4.2.7 (Ratenanpassung) [0002]
    • Turbocodierung und Einfügung von Interaktionen auf HS-DSCH in R5 HSDPA. Dokument Nr. R1-030444 zur Diskussion 3GPP TSG-RANArbeitstreffen 1, in Treffen Nr. 32, Paris, Frankreich, 19.–23. Mai 2003 [0002]
    • Intuitive Rechtfertigung und vereinfachte Implementierung des MAP-Decodierers für einhüllende Codierungen, von A. J. Viterbi. IEEE J. Sel. Areas Commun., Band 16, Nr. 2, Seiten 260–264, Februar 1998 [0002]
    • Optimale Decodierung von linearen Codes für die Minimierung der Symbolfehlerrate, von L. R. Bahl, J. Cocke, F. Jelinek, J. Raviv. IEEE Transaktionen über Informationstheorie, IT-20, Seiten 284–287, März 1974 [0002]

Claims (20)

  1. Verfahren mit: Empfangen eines Signals, das eine Sequenz aus kodierten Symbolen enthält, wovon jedes einem von mehreren möglichen Zuständen entspricht; Bestimmen für jedes Symbol in der Sequenz einer Gruppe aus Zustandsmaßen, die jeweils eine Wahrscheinlichkeit repräsentieren, dass das entsprechende Symbol einem jeweiligen der mehreren Zustände entspricht; Decodieren des Signals durch Verarbeiten und Durchläufen aus Rekursionen, Verwenden von Durchläufen von Vorwärts-Rekursionen, wodurch ein späteres Zustandsmaß in der Sequenz aktualisiert wird auf der Grundlage eines vorhergehenden Zustandsmaßes, und Verwenden von Durchläufen aus Rückwärts-Rekursionen, wodurch ein vorhergehendes Zustandsmaß in der Sequenz auf der Grundlage eines späteren Zustandsmaßes aktualisiert wird; und Ausgeben des decodierten Signals an eine Einrichtung; wobei das Decodieren umfasst: Ausführen mehrerer wiederholter Iterationen über die Sequenz hinweg und für jede Iteration: Unterteilen der Sequenz in mehrere kleinere Fenster, Verarbeiten der Fenster unter Anwendung separater Durchläufe aus Rekursionen und Ausführen eines zugehörigen Initialisierungsdurchlaufs aus Rekursionen für jedes Fenster; und wobei das Decodieren ferner umfasst für jede wiederholte Rekursion: Abwechseln der Richtung der Initialisierungsdurchläufe zwischen einer Vorwärtsrichtung und einer Rückwärtsrichtung bei jeder sukzessiven Iteration über die Sequenz hinweg, Speichern einer der Gruppen aus Zustandsmaßen für jedes Fenster, und Initialisieren des Initialisierungsdurchlaufs für jedes Fenster unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen aus einer vorhergehenden Iteration.
  2. Verfahren nach Anspruch 1, wobei die Sequenz empfangener Symbole einen variablen Anteil an nicht-verfügbarer reduntanter Information umfasst, und wobei das Verfahren das Wiedereinführen von Bits anstelle der nicht-verfügbaren reduntanten Information umfasst.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Verarbeiten jedes Fensters sowohl einen Vorwärtsdurchlauf als auch einen Rückwärtsdurchlauf aus Rekursionen umfasst.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Decodieren ferner umfasst: Abwechseln einer Richtung der Verarbeitung jeder sukzessiven Iteration über die Sequenz hinweg, um in eine Richtung die Sequenz Fenster für Fenster vom Beginn bis zum Ende der Sequenz zu verarbeiten, und um in der anderen Richtung die Sequenz Fenster für Fenster vom Ende zum Start zu verarbeiten.
  5. Verfahren nach Anspruch 3 und 4, derart, dass die Richtung, in der die Durchläufe aus Rekursionen zwischen benachbarten Fenstern zusammenhängend sind, mit jeder sukzessiven Iteration über die Sequenz hinweg wechselt und entgegengesetzt zur Richtung der Initialisierungsrekursionen ist.
  6. Verfahren nach Anspruch 4 oder 5, wobei: alle bis auf das letzte Fenster der Iteration die gleiche Fensterlänge besitzen, und die Sequenz einen Block mit einer Länge aufweist, die kein ganzzahliges Vielfaches der Fensterlänge ist, wodurch ein letztes Fenster mit einer kleineren verbleibenden Anzahl an Symbolen verbleibt; und die gespeicherte Gruppe aus Zustandsmaßen aus jedem Fenster an einer Position innerhalb jedes Fensters genommen wird, die gleich ist zu der verbleibenden Anzahl an Symbolen in dieses Fenster in der Richtung der Verarbeitung der Iteration.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Signal über einen kabellosen Kanal empfangen wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei jede der Iterationen eine Turbo-Iteration ist und wobei jede der Rekursionen eine Trellis-Iteration ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Decodieren durch eine maximum-a-posteriori-Wahrscheinlichkeitsdecodierung erfolgt.
  10. Vorrichtung mit: einem Empfänger, der angeordnet ist, ein Signal mit einer Sequenz aus codierten Symbolen zu empfangen, wovon jedes Symbol einem von mehreren Zuständen entspricht; und einem Decodierer, der ausgebildet ist, für jedes Symbol in der Sequenz eine Gruppe aus Zustandsmaßen zu bestimmen, wovon jedes eine Wahrscheinlichkeit repräsentiert, dass das jeweilige Symbol einem jedem der mehreren Zustände entspricht; wobei der Decodierer ausgebildet ist, das Signal zu decodieren durch Verarbeiten von Durchläufen aus Rekursionen, Verwenden von Durchläufen von Vorwärts-Rekursionen, wodurch ein späteres Zustandsmaß in der Sequenz auf der Grundlage eines vorhergehenden Zustandsmaßes aktualisiert wird und Verwenden von Durchläufen aus Rückwärts-Rekursionen, wodurch ein vorhergehendes Zustandsmaß in der Sequenz auf der Grundlage eines späteren Zustandsmaßes aktualisiert wird; und Ausgeben des decodierten Signals an eine Einrichtung; wobei der Decodierer ausgebildet ist, mehrere wiederholte Iterationen über die Sequenz hinweg auszuführen und für jede Iteration: die Sequenz in mehrere kleinere Fenster zu unterteilen, die Fenster unter Anwendung separater Durchlaufe aus Rekursionen zu verarbeiten, und einen zugehörigen Initialisierungsdurchlauf aus Rekursionen für jedes Fenster auszuführen; und wobei der Decodierer ferner ausgebildet ist, um für jede wiederholte Iteration: die Richtung der Initialisierungsdurchläufe zwischen einer Vorwärtsrichtung und einer Rückwärtsrichtung bei jeder sukzessiven Iteration über die Sequenz hinweg zu ändern, eine der Gruppen aus Zustandsmaßen für jedes Fenster zu speichern, und den Initialisierungsdurchlauf jedes Fensters unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen aus einer vorhergehenden Iteration zu initialisieren.
  11. Vorrichtung nach Anspruch 10, wobei die Sequenz aus empfangenen Symbolen einen variablen Anteil an nicht-verfügbarer redundanter Information enthält und wobei das Verfahren das Wiedereinführen von Bits anstelle der nicht-verfügbaren redundanten Information umfasst.
  12. Vorrichtung nach Anspruch 10 oder 11, wobei der Decodierer ausgebildet ist, jedes eines Vorwärts- und Rückwärtsdurchlaufes aus Rekursionen zu verarbeiten.
  13. Vorrichtung nach einem der Ansprüche 10 bis 11, wobei der Decodierer ferner ausgebildet ist, eine Richtung der Verarbeitung jeder sukzessiven Iteration über die Sequenz hinweg zu ändern, so dass in einer Richtung die Sequenz Fenster für Fenster vom Start zum Ende der Sequenz verarbeitet wird, und in der anderen Richtung die Sequenz Fenster für Fenster vom Ende zum Start verarbeitet wird.
  14. Vorrichtung nach Anspruch 12 und 13, derart, dass die Richtung, in der die Durchläufe als Rekursionen zwischen benachbarten Fenstern zusammenhängend sind, für jede sukzessive Iteration über die Sequenz wechselt und entgegengesetzt ist zu der Richtung der Initialisierungsrekursionen.
  15. Vorrichtung nach Anspruch 13 oder 14, wobei: alle bis auf das letzte Fenster der Iteration die gleiche Fensterlänge besitzen und die Sequenz einen Block mit einer Länge aufweist, die kein ganzzahliges Vielfaches der Fensterlänge ist, wodurch ein letztes Fenster verbleibt mit einer kleineren verbleibenden Anzahl an Symbolen; und der Decodierer ausgebildet ist, die gespeicherte Gruppe aus Zustandsmaßen von einer Position innerhalb jedes Fensters zu nehmen, die gleich ist zu der verbleibenden Anzahl an Symbolen in das Fenster in Richtung der Verarbeitung der Iteration.
  16. Vorrichtung nach einem der Ansprüche 10 bis 15, wobei der Empfänger angeordnet ist, das Signal über einen kabellosen Kanal zu empfangen.
  17. Vorrichtung nach einem der Ansprüche 10 bis 16, wobei der Decodierer ein Turbo-Decodierer ist, der mehrere einzelne Trellis-Decodierer aufweist, derart, dass jede der Iterationen eine Turbo-Iteration und jede der Rekursionen eine Trellis-Iteration ist.
  18. Vorrichtung nach einem der Ansprüche 10 bis 17, wobei der Decodierer ein maximum-a-posteriori-Wahrscheinlichkeitsdecodierer ist.
  19. Computerprogrammprodukt mit einer Codierung, die auf einem Computer lesbaren Medium ausgebildet und so gestaltet ist, dass, wenn sie von einem Prozessor ausgebildet wird, bewirkt, dass: ein Signal mit einer Sequenz aus codierten Symbolen empfangen wird, wovon jedes einem von mehreren möglichen Zuständen entspricht; für jedes Symbol in der Sequenz eine Gruppe aus Zustandsmaßen bestimmt wird, wovon jedes eine Wahrscheinlichkeit repräsentiert, dass das jeweilige Symbol jeweils einem der mehreren Zustände entspricht; das Signal decodiert wird, indem Durchläufe aus Rekursionen verarbeitet werden, Durchläufe aus Vorwärts-Rekursionen verwendet werden, wodurch ein späteres Zustandsmaß in der Sequenz auf der Grundlage eines vorhergehenden Zustandsmaßes aktualisiert wird, und Durchläufe aus Rückwärts-Rekursionen verwendet werden, wodurch ein vorhergehendes Zustandsmaß in der Sequenz auf der Grundlage eines späteren Zustandsmaßes aktualisiert wird; und das decodierte Signal an eine Einrichtung ausgegeben wird; wobei das Decodieren umfasst: Ausführen mehrere wiederholter Iterationen über die Sequenz hinweg und für jede Iteration: Unterteilen der Sequenz in mehrere kleinere Fenster, Verarbeiten der Fenster unter Anwendung separater Durchläufe aus Rekursionen, und Ausführen eines zugehörigen Initialisierungsdurchlaufes aus Rekursionen für jedes Fenster; und wobei das Decodieren ferner umfasst für jede wiederholte Iteration: Wechseln der Richtung der Initialisierungsdurchläufe zwischen Vorwärtsrichtung und Rückwärtsrichtung mit jeder sukzessiven Iteration über die Sequenz hinweg, Speichern einer der Gruppen aus Zustandsmaßen von jedem Fenster, und Initialisieren des Initialisierungsdurchlaufs jedes Fensters unter Anwendung einer entsprechenden gespeicherten Gruppe aus Zustandsmaßen aus einer vorhergehenden Iteration.
  20. Computerprogrammprodukt nach Anspruch 19, wobei der Code ferner so gestaltet ist, dass, wenn er ausgeführt wird, die Schritte von einem der Ansprüche 1 bis 9 ausgeführt werden.
DE112010003449.4T 2009-08-28 2010-08-26 Iterative Decodierung von Signalen, die über einen verrauschten Kanal empfangen werden, unter Verwendung von Vorwärts- und Rückwärts-Rekursionen mit einer Hochfahrinitialisierung Active DE112010003449B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0915135.8 2009-08-28
GB0915135A GB0915135D0 (en) 2009-08-28 2009-08-28 Decoding signals received over a noisy channel
PCT/EP2010/062515 WO2011023782A1 (en) 2009-08-28 2010-08-26 Iterative decoding of signals received over a noisy channel using forward and backward recursions with warm-up initialization

Publications (3)

Publication Number Publication Date
DE112010003449T5 true DE112010003449T5 (de) 2012-10-25
DE112010003449T9 DE112010003449T9 (de) 2013-02-28
DE112010003449B4 DE112010003449B4 (de) 2014-02-13

Family

ID=41202921

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010003449.4T Active DE112010003449B4 (de) 2009-08-28 2010-08-26 Iterative Decodierung von Signalen, die über einen verrauschten Kanal empfangen werden, unter Verwendung von Vorwärts- und Rückwärts-Rekursionen mit einer Hochfahrinitialisierung

Country Status (4)

Country Link
US (1) US8793561B2 (de)
DE (1) DE112010003449B4 (de)
GB (2) GB0915135D0 (de)
WO (1) WO2011023782A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0915135D0 (en) 2009-08-28 2009-10-07 Icera Inc Decoding signals received over a noisy channel
US20130142057A1 (en) * 2011-12-01 2013-06-06 Broadcom Corporation Control Channel Acquisition
US9325351B2 (en) * 2013-03-13 2016-04-26 Mediatek Singapore Pte. Ltd. Adaptive multi-core, multi-direction turbo decoder and related decoding method thereof
US20150033094A1 (en) * 2013-07-23 2015-01-29 Yuan Ze University Window-stopped method for applying to turbo decoding
TWI555339B (zh) * 2015-04-21 2016-10-21 國立清華大學 疊代式解碼裝置、疊代式訊號檢驗裝置與資訊更新方法
US10090860B2 (en) 2016-01-22 2018-10-02 Toshiba Memory Corporation Memory system using integrated parallel interleaved concatenation
CN114567411B (zh) * 2022-01-19 2024-03-15 北京理工大学 译码方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933462A (en) 1996-11-06 1999-08-03 Qualcomm Incorporated Soft decision output decoder for decoding convolutionally encoded codewords
US20060067229A1 (en) 2004-09-29 2006-03-30 Nokia Corporation Transmitting data in a wireless network

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563877B1 (en) * 1998-04-01 2003-05-13 L-3 Communications Corporation Simplified block sliding window implementation of a map decoder
US6856657B1 (en) * 2000-02-10 2005-02-15 Motorola, Inc. Soft output decoder for convolutional codes
US6901117B1 (en) * 2000-02-10 2005-05-31 Motorola, Inc. Soft output decoder for convolutional codes
US6868132B1 (en) * 2000-02-10 2005-03-15 Motorola, Inc. Soft output decoder for convolutional codes
DE10012874A1 (de) * 2000-03-16 2001-09-27 Infineon Technologies Ag Turbo-Decodierer und Turbo-Decodierverfahren
US20010044919A1 (en) * 2000-05-05 2001-11-22 Edmonston Brian S. Method and apparatus for improved perormance sliding window decoding
US6829313B1 (en) * 2000-07-17 2004-12-07 Motorola, Inc. Sliding window turbo decoder
US6671852B1 (en) * 2000-09-06 2003-12-30 Motorola, Inc. Syndrome assisted iterative decoder for turbo codes
US6952457B2 (en) * 2000-12-29 2005-10-04 Motorola, Inc. Method and system for adapting a training period in a turbo decoding device
US7647547B2 (en) * 2001-08-03 2010-01-12 Alcatel-Lucent Usa Inc. Turbo decoder with reduced-size branch metric cache
US6996765B2 (en) * 2001-11-14 2006-02-07 Texas Instruments Incorporated Turbo decoder prolog reduction
US7246295B2 (en) * 2003-04-14 2007-07-17 Agere Systems Inc. Turbo decoder employing simplified log-map decoding
EP1471677A1 (de) * 2003-04-23 2004-10-27 STMicroelectronics N.V. Methode der Blinddetektion des Transportformats eines faltungskodierten Signals, und zugehöriger Faltungsdekodierer
JP2005167513A (ja) * 2003-12-01 2005-06-23 Matsushita Electric Ind Co Ltd 復号装置及び復号方法
US7441174B2 (en) * 2005-09-07 2008-10-21 The University Of Hong Kong Embedded state metric storage for MAP decoder of turbo codes
US7810018B2 (en) * 2006-10-27 2010-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Sliding window method and apparatus for soft input/soft output processing
GB0915135D0 (en) 2009-08-28 2009-10-07 Icera Inc Decoding signals received over a noisy channel

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933462A (en) 1996-11-06 1999-08-03 Qualcomm Incorporated Soft decision output decoder for decoding convolutionally encoded codewords
US20060067229A1 (en) 2004-09-29 2006-03-30 Nokia Corporation Transmitting data in a wireless network

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"Fehler korrigierende Codierung und Decodierung an der Shannon-Grenze: Turbo-Codes" von "C. Berrou, A. Glavieux, P. Thitimaishima. Mitteilungen, 1993. ICC 93. Genf. Technisches Programm, Konferenzaufzeichnung, IEEE Internationale Konferenz, Band 2 (1993), Seiten 1064-1070, Teil 2
3GPP TS 25.212 (Multiplexverfahren und Kanalkodierung) Abschnitt 4.2.3.2 (Turbocodierung) und 4.2.7 (Ratenanpassung)
Intuitive Rechtfertigung und vereinfachte Implementierung des MAP-Decodierers für einhüllende Codierungen, von A. J. Viterbi. IEEE J. Sel. Areas Commun., Band 16, Nr. 2, Seiten 260-264, Februar 1998
Optimale Decodierung von linearen Codes für die Minimierung der Symbolfehlerrate, von L. R. Bahl, J. Cocke, F. Jelinek, J. Raviv. IEEE Transaktionen über Informationstheorie, IT-20, Seiten 284-287, März 1974
Turbocodierung und Einfügung von Interaktionen auf HS-DSCH in R5 HSDPA. Dokument Nr. R1-030444 zur Diskussion 3GPP TSG-RANArbeitstreffen 1, in Treffen Nr. 32, Paris, Frankreich, 19.-23. Mai 2003

Also Published As

Publication number Publication date
GB2485322A (en) 2012-05-09
US8793561B2 (en) 2014-07-29
DE112010003449B4 (de) 2014-02-13
US20120192028A1 (en) 2012-07-26
GB201203335D0 (en) 2012-04-11
GB0915135D0 (en) 2009-10-07
DE112010003449T9 (de) 2013-02-28
GB2485322B (en) 2015-08-12
WO2011023782A1 (en) 2011-03-03

Similar Documents

Publication Publication Date Title
DE112010003449T9 (de) Iterative Decodierung von Signalen, die über einen verrauschten Kanal empfangen werden, unter Verwendung von Vorwärts- und Rückwärts-Rekursionen mit einer Hochfahrinitialisierung
DE69736881T2 (de) Parallel verketteter tail-biting-faltungskode und dekoder dafür
EP0391354B1 (de) Verfahren zum Verallgemeinern des Viterbi-Algorithmus und Einrichtungen zur Durchführung des Verfahrens
DE60113053T2 (de) Vor-Dekoder für Turbodekoder, zur Rückgewinnung von punktierten Paritätssymbolen, sowie ein Verfahren zur Rückgewinnung eines Turbokodes
DE60001988T2 (de) Turbo Dekodierung mit variabler Anzahl von Iterationen
DE60120723T2 (de) Iterationsabbruch für Turbodecodierer
DE69923970T2 (de) Kanaldecodiereinrichtung und Verfahren zum Kanaldecodieren
DE102012100945A1 (de) Iterativer Decodierer
Robertson Improving decoder and code structure of parallel concatenated recursive systematic (turbo) codes
DE112004002008B4 (de) Vereinheitlichter Viterbi/Turbo-Decoder für mobile Telekommunikationssysteme
DE102005010006A1 (de) Verfahren und Vorrichtung zum Terminieren einer iterativen Turbo-Dekodierung
DE102018206132B4 (de) Decodergestützte iterative Kanalschätzung
DE60003071T2 (de) Verfahren zur dekodierung von mit einem entropie-code kodierten daten, entsprechende dekodierungsvorrichtung und übertragungssystem
DE60111974T2 (de) Abbruchkriterium für einen Turbodekoder
DE10196688B3 (de) Ein Decodierer für eine trellis-basierte Kanalcodierung
DE10310812B4 (de) Dekodiervorrichtung, Trellis-Prozessor und Verfahren
EP1269633B1 (de) Optimierter turbo-decodierer
EP1249074B1 (de) Verfahren zur decodierung eines datensignals
EP1826911A1 (de) Codierung und Decodierung mit Trellis-codierter Modulation
WO2001069788A2 (de) Turbo-decodierer und turbo-decodierverfahren
DE102010054228A1 (de) Verfahren zum Übertragen von Daten
DE102019216557A1 (de) MAßNAHMEN ZUR ERMÖGLICHUNG EINER KANALNACHFÜHRUNG BEI DIGITALER ÜBERTRAGUNG
DE10213882B4 (de) Verfahren zur Decodierung einer mit Hilfe eines binären Faltungscodes verschlüsselten Datenfolge
WO2013182544A1 (de) Serielle verkettung eines nicht-binären turbo-codes über gf (q) und eines q-ären hadamard-codes
DE102010043610A1 (de) Verfahren sowie eine Vorrichtung zur Dekodierung von in Rahmen empfangenen Daten

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE

R081 Change of applicant/patentee

Owner name: NVIDIA TECHNOLOGY UK LIMITED, GB

Free format text: FORMER OWNER: ICERA INC., WILMINGTON, DEL., US

Effective date: 20130220

Owner name: NVIDIA TECHNOLOGY UK LIMITED, GB

Free format text: FORMER OWNER: ICERA INC., WILMINGTON, US

Effective date: 20130220

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

Effective date: 20130220

Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE

Effective date: 20130220

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R020 Patent grant now final

Effective date: 20141114

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE