DE60007956T2 - Vorrichtung und Verfahren zur SISO Dekodierung - Google Patents

Vorrichtung und Verfahren zur SISO Dekodierung Download PDF

Info

Publication number
DE60007956T2
DE60007956T2 DE60007956T DE60007956T DE60007956T2 DE 60007956 T2 DE60007956 T2 DE 60007956T2 DE 60007956 T DE60007956 T DE 60007956T DE 60007956 T DE60007956 T DE 60007956T DE 60007956 T2 DE60007956 T2 DE 60007956T2
Authority
DE
Germany
Prior art keywords
metrics
window
trellis
backward
lambdas
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60007956T
Other languages
English (en)
Other versions
DE60007956D1 (de
Inventor
Moshe Tarrab
Mark Elnekave
Jacob Tokar
Eran Pisek
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.)
NXP USA Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of DE60007956D1 publication Critical patent/DE60007956D1/de
Publication of DE60007956T2 publication Critical patent/DE60007956T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Description

  • Gebiet der Erfindung
  • Vorrichtung und Verfahren zur Durchführung von Soft-Input-Soft-Output-Decodierung und insbesondere eine Vorrichtung und ein Verfahren zur Durchführung von Log-MAP- und Max-Log-MAP-Algorithmen.
  • Hintergrund der Erfindung
  • Die Turbocodierung (d. h. TC) wird zur Fehlersteuerungscodierung in der digitalen Kommunikations- und Signalverarbeitung verwendet. Die folgenden Referenzen geben einige Beispiele von verschiedenen Implementationen der TC: "Near Shannon limit error correcting coding and decoding: turbo-codes", von Berrou, Glavieux, Thitimajshima, IEEE International Conference of Communication. Genf, Schweiz, Seiten 1064–1070, May 1993; "Implementation and Performance of a Turbo/MAP Decoder", Pietrobon, International Journal of Satellite Communication; "Turbo Coding", Heegard und Wicker, Kluwer Academic Publishers 1999.
  • Der MAP-Algorithmus und der Soft-Output-Viterbi-Algorithmus (SOVA) sind Soft-Input-Soft-Output (d. h. SISO)-Decodierungsalgorithmen, die weite Akzeptanz auf dem Gebiet der Kommunikation erzielt haben. Beide Algorithmen werden in dem US-Patent 5,933,462 von Viterbi et al. erwähnt.
  • Die TC hat weite Akzeptanz auf dem Gebiet der Kommunikation erzielt, wie zum Beispiel in zellularen Netzen, Modems und der Satellitenkommunikation. Einige Turbocodierer bestehen aus zwei parallel-verketteten systematischen Faltungscodierern, die durch einen Zufallsverschachteler ("random interleaver") getrennt werden. Ein Turbodecodierer hat zwei Soft-In-Soft-Out (SISO)-Decodierer. Die Ausgabe des ersten SISO ist an die Eingabe des zweiten SISO über einen ersten Verschachteler gekoppelt, während die Ausgabe des zweiten SISO an einer Eingabe des ersten SISO über eine Rückkopplungsschleife, die einen Entschachteler ("deinterleaver") einschließt, gekoppelt ist.
  • Ein gängiger SISO-Decodierer verwendet entweder einen Maximum-A-Posteriori (d. h. MAP ("maximum aposteriori"))-Decodieralgorithmus oder einen Log-MAP-Decodieralgorithmus. Der letztere Algorithmus ist analog zu dem ersteren Algorithmus, aber wird in der logarithmischen Domäne durchgeführt. Ein anderer gängiger Decodierungsalgorithmus ist der Max-Log-MAP-Algorithmus. Der Log-MAP ist analog zu dem Log-Map, aber die Implementation des ersteren schließt einen zusätzlichen Korrekturfaktor ein. Kurz gefasst findet der MAP das wahrscheinlichste Informationsbit, das in einer codierten Sequenz übertragen worden ist.
  • Die Ausgabesignale eines Faltungscodierers werden über einen Kanal übertragen und werden von einem Empfänger empfangen, der über einen Turbodecodierer verfügt. Der Kanal fügt normalerweise ein Rauschen zu dem übertragenen Signal hinzu.
  • Während des Decodierungsvorganges wird ein Trellis ("trellis") von möglichen Zuständen der Codierung definiert. Das Trellis schließt eine Vielzahl von in T Stufen organisierten Knoten (Zuständen) ein, wobei jede Stufe N = 2 sup(K – 1) Knoten aufweist, während T die Anzahl der empfangenen Proben, die zur Bewertung, welcher Bit von einem den Faltungscodierer aufweisenden Transmitter übertragen wurde, berücksichtigt wird und K die Einflusstiefe des zur Codierung verwendeten Codes ist. Jede Stufe umfasst Zustände, die eine gegebene Zeit darstellen. Jeder Zustand wird durch eine Vorwärtszustandsmetrik, auf die sich gewöhnlich mit Alpha (α oder a) bezogen wird, und durch eine Rückwärtszustandsmetrik, auf die sich gewöhnlich als Beta (β oder b) bezogen wird, charakterisiert. Jeder Übergang von einem Zustand zu einem anderen Zustand wird durch eine Zweigmetrik charakterisiert, auf die sich gewöhnlich mit Gamma (γ) bezogen wird.
  • Alphas, Betas und Gammas werden verwendet, um einen Wahrscheinlichkeitsfaktor auszuwerten, der anzeigt, welches Signal übertragen wurde. Dieser Wahrscheinlichkeitsfaktor ist allgemein als Lambda (λ) bekannt. Ein Übergang von einer Stufe zu einer benachbarten Stufe wird durch ein einziges Lambda wiedergegeben.
  • Die oben genannten Artikel beschreiben Verfahren des Standes der Technik zur Durchführung des MAP-Algorithmuses, diese Verfahren des Standes der Technik umfassen drei Schritte. Während des ersten Schrittes werden die Alphas berechnet, die mit allen Trelliszuständen verbunden sind, wobei mit den Zuständen des ersten Tiefeniveaus begonnen wird und vorwärts gegangen wird. Während des zweiten Schrittes werden die Betas berechnet, die mit allen Trelliszuständen verbunden sind, wobei mit den Zuständen des L-ten von Tiefeniveaus begonnen wird und rückwärts gegangen wird. Normalerweise können die Lambdas auch berechnet werden, während die Betas berechnet werden. Normalerweise werden die Gammas während oder sogar vor dem ersten Schritt berechnet.
  • Die TC kann in der Hardware oder in der Software implementiert werden. In der Hardware implementiert läuft die TC allgemein sehr viel schneller als die in der Software implementierte TC. Das Implementieren der TC in der Hardware ist jedoch aufwendiger im Hinblick auf das Halbleiteroberflächengebiet, die Komplexität und die Kosten.
  • Die Berechnung der Lambdas des gesamten Trellis ist sehr speicherintensiv. Eine sehr große Anzahl von Alphas, Betas und Gammas müssen gespeichert werden.
  • Ein weiteres Verfahren des Standes der Technik ist in dem US-Patent 5,933,462 von Viterbi beschrieben. Dieses Patent beschreibt einen Soft-Decision-Output-Decodierer zum Decodieren von faltungscodierten Codewörtern. Der Decodierer basiert auf den "verallgemeinerten" Viterbi-Decodierern und einem Dual-Maxima-Prozessor. Der Decodierer hat verschiedene Nachteile, wie zum Beispiel, jedoch nicht ausschließlich, die folgenden Nachteile: Der Decodierer hat entweder einen einzigen Rückwärtsdecodierer oder zwei Rückwärtsdecodierer. In beiden Fällen und besonders in dem Fall eines Decodierers mit einem Rückwärtsdecodierer, benötigt der Decodierer relativ viel Zeit. In beiden Fällen ist eine Lernperiode L gleich einem Fenster W, in dem gültige Resultate durch den Rückwärtsdecodierer und den Vorwärtsdecodierer bereitgestellt werden. Gewöhnlich ist L < W, und der in dem US-Patent 5,933,462 beschriebene Decodierer ist nicht effizient. Weiterhin werden an dem Ende der Lernperiode eine Einschätzung von entweder einer Vorwärtsmetrik oder einer Rückwärtsmetrik bereitgestellt. Die Berechnungen, die auf diesen Schätzungen beruhen, wie zum Beispiel die Berechnungen von Vorwärtsmetriken, Rückwärtsmetriken und Lambdas, sind weniger genau als Berechnungen, die auf den genauen Berechnungen dieser Variabeln beruhen.
  • Der in dem US-Patent 5,933,462 beschriebene Decodierer ist auf die Berechnung von Zustandsmetriken von Knoten über ein Fenster der Länge 2L beschränkt, wo L die Anzahl der Constraintlängen ist und 2L kleiner als die Blocklänge T des Trellis ist.
  • Es besteht die Notwendigkeit, eine verbesserte Vorrichtung und ein verbessertes Verfahren zur Durchführung von hochgenauer SISO-Decodierung zur Verfügung zu stellen, das nicht speicherintensiv ist. Es besteht die Notwendigkeit, ein schnelles Verfahren zur Durchführung von SISO-Decodierung zur Verfügung zu stellen und ein Beschleunigungssystem zur Anhebung der Leistungen von eingebetteten Systemen zur Verfügung zu stellen.
  • Kurze Beschreibung der Zeichnungen
  • Während die Erfindung in den beigefügten Ansprüchen dargestellt ist, werden andere Eigenschaften der Erfindung durch die folgende detaillierte Beschreibung, zusammenge nommen mit den begleitenden Abbildungen, offenbart, in denen:
  • 12 zwei Methoden zur Durchführung von SISO-Decodierung in Übereinstimmung mit einer bevorzugten Ausführung der vorliegenden Erfindung in Flussdiagrammform darstellen;
  • 34 schematische Beschreibungen von Systemen zur Implementierung der in 1 und 2 gezeigten Verfahren sind;
  • 5 eine schematische Beschreibung eines Systems zur Decodierung einer Sequenz von Signalen in Übereinstimmung mit einer bevorzugten Ausführung der Erfindung ist, die durch einen Faltungscodierer ausgegeben und über einen Kanal übertragen worden sind;
  • 6 eine detaillierte Beschreibung eines Systems zur Decodierung einer Sequenz von Signalen in Übereinstimmung mit einer bevorzugten Ausführungsform der Erfindung ist, die durch einen Faltungscodierer ausgegeben und über einen Kanal übertragen worden sind.
  • Beschreibung der bevorzugten Ausführungsform
  • Die Erfindung stellt eine verbesserte Vorrichtung und ein verbessertes Verfahren zur Durchführung von hochgenauer SISO-Decodierung bereit, das nicht speicheraufwendig ist. Das Trellis ist in eine Vielzahl von Fenstern unterteilt. Genaue Alphas (Betas) und Gammas werden während eines ersten Schrittes berechnet, indem die Alphas eines gesamten Trellis berechnet werden. Während dieses Schrittes werden eine Vielzahl von Alphas von Knoten von Beginnstufen der Fenster (Betas von Knoten von Endstufen der Fenster) ge speichert. Während weiterer Schritte werden die Alphas (Betas), Betas (Alphas) und Gammas berechnet und in einem schnellen internen Speicherbaustein gespeichert. Diese berechneten Werte werden in einem weiteren Schritt der Berechnung von genauen Betas (Alphas) und genauen Lambdas eines Fensters und der Bereitstellung der Lambdas an einen externen Speicher verwendet. Der interne Speicher speichert einen Vielzahl von Variablen, die benötigt werden, um die Alphas, Betas, Gammas und Lambdas eines Fensters zu berechnen, das viel kleiner als das gesamte Trellis ist.
  • Die Erfindung stellt ein beschleunigendes System zum Vergrößern der Leistungen von eingebetteten Systemen zur Verfügung. Das System hat einen internen Speicher und Prozessoren, die auf einen externen Speicher zugreifen und Informationen von einem Hostprozessor oder einem anderen eingebetteten System austauschen und Lambdas selber berechnen können.
  • 1 ist ein vereinfachtes Flussdiagramm, das das erfindungsgemäße Verfahren 30 darstellt. Vorzugsweise umfasst das Verfahren 30 die Schritte 32, 34, 36 und 40, wobei der Schritt 40 weiterhin die Schritte 42, 44 und 46 umfasst, wobei alle Schritte durch Blöcke dargestellt werden. Die die Schritte verbindenden durchgezogenen Linien 33, 35, 37, 41, 43 und 45 zeigen einen bevorzugten Verfahrensfluss an. Das Verfahren 30 erfordert, dass nur ein Teil der mit den Lambda-Berechnungen verbundenen Variablen in einem internen Speicher gespeichert werden. Das Verfahren ist schnell und benötigt keine Lernperiode.
  • Das Verfahren 30 beginnt mit dem Schritt 32 des Bereitstellens eines Trellis, das repräsentativ für eine Ausgabe für einen Faltungscodierer ist, der Faltungscodierer weist eine Codierrate von R auf, wobei das Trellis eine Blocklänge T hat. Das Trellis ist in eine Vielzahl von Fenstern eingeteilt. Die Bereitstellung des Trellis schließt den Empfang und die Speicherung einer Vielzahl von Signalen ein, wie zum Beispiel die Paritätsbits Yp1, k Yp2, k, die T übertragene Symbole repräsentieren.
  • Auf den Schritt 32 folgt der Schritt 34 des Zuweisens von Anfangsbedingungen zu jedem Knoten der Beginnstufe und der Endstufe des Trellis.
  • Auf den Schritt 34 folgt der Schritt 36 des Berechnens einer Vorwärtsmetrik für jeden Knoten, wobei an dem Beginn des Trellis begonnen wird und durch das Trellis fortgeschritten wird und Vorwärtsmetriken von Knoten einer Vielzahl von Beginnstufen der Fenster gespeichert werden. Vorzugsweise werden die Vorwärtsmetriken der Knoten der Beginnstufen der Fenster in einem externen Speicherbaustein gespeichert.
  • Auf den Schritt 36 folgt der Schritt 40 des Berechnens der Lambdas. Der Schritt 40 umfasst günstigerweise die Schritte 42, 44 und 46. Die Schritte 42 bis 46 werden wiederholt, bis alle mit dem Trellis verbundenen Lambdas berechnet sind.
  • Während des Schrittes 42 werden die Vorwärtsmetriken von Knoten einer Beginnstufe eines Fensters erhalten, wobei die erhaltenen Vorwärtsmetriken während des Schrittes 36 berechnet und gespeichert werden. Günstigerweise werden die Fenster so ausgewählt, dass die Rückwärtsmetriken der Knoten der Endstufe auf schnelle und exakte Weise berechnet werden können. Normalerweise geht der Berechnung von Rückwärtsmetriken von Knoten von Endstufen eines Fensters, das kein letztes Fenster in dem Trellis bildet, eine Berechnung einer Rückwärtsmetrik eines folgenden Fensters voraus, wobei die Beginnstufe des folgenden Fensters auf die Endstufe des Fensters folgt. Vorzugsweise werden während einer ersten Iteration der Schritte 42–46 die Lambdas des letzten Fensters des Trellis berechnet, und weitere Iterationen werden verwendet, um die Lambdas von vorausgehenden Fenstern zu berechnen.
  • Auf den Schritt 42 folgt der Schritt 44 des Berechnens und Speicherns von Vorwärtsmetriken für jeden Knoten, wobei von einer zweiten Stufe des Fensters gestartet und an der Endstufe des Fensters aufgehört wird. Vorzugsweise werden die Vorwärtsmetriken in einem internen Speicherbaustein gespeichert.
  • Auf den Schritt 44 folgt der Schritt 46 des Berechnens von Rückwärtsmetriken für jeden Knoten, wobei von der Endstufe des Fensters gestartet und an der Beginnstufe des Fensters aufgehört wird, wobei, wenn die Rückwärtsmetriken von Knoten von einer Stufe berechnet werden und die Vorwärtsmetriken des Knotens von einer benachbarten Stufe zuvor berechnet wurden, die Berechnung der Rückwärtsmetriken in die Berechnung von Lambda von der Stufe zu der benachbarten Stufe integriert wird. Nachdem ein Lambda berechnet ist, wird es gespeichert. Vorzugsweise wird es in einem externen Speicherbaustein gespeichert. Wie durch den Pfad 41 angezeigt, wird der Schritt 46 von dem Schritt 42 gefolgt, bis alle Lambdas des Trellis berechnet und gespeichert sind.
  • Günstigerweise verfügen alle Fenster über dieselbe Länge WN, wobei WN sehr viel kleiner als T ist. Die Fenster überlappen nicht. Vorzugsweise beginnt der Schritt 40, in dem die Lambdas des letzten Fensters des Trellis berechnet werden, und schreitet rückwärts durch das Trellis fort.
  • Vorzugsweise wird das Verfahren 40 verwendet, um die Log-MAP-Algorithmen zu implementieren. Günstigerweise werden die Gammas während der Schritte 34 und 44 berechnet.
  • 2 ist ein vereinfachtes Flussdiagramm, das das erfindungsgemäße Verfahren 50 darstellt. Vorzugsweise umfasst das Verfahren 50 die Schritte 52, 54, 56 und 60, wobei der Schritt 60 weiterhin die Schritte 62, 64 und 66 umfasst, wobei alle Schritte durch Blöcke dargestellt werden. Die die Schritte verbindenden durchgehenden Linien 53, 55, 57, 61, 63 und 65 weisen auf einen bevorzugten Verfahrensschluss hin. Das Verfahren 50 erfordert, dass nur ein Anteil des Trellis in einem internen Speicherbaustein gespeichert wird. Es ist schnell und benötigt keine Lernperiode.
  • Das Verfahren 50 beginnt mit dem Schritt 52 des Bereitstellens eines Trellis, das repräsentativ für eine Ausgabe von einem Faltungscodierer ist, der Faltungscodierer weist eine Codierrate von R auf, wobei das Trellis eine Blocklänge T hat und in Fenster eingeteilt ist.
  • Auf den Schritt 52 folgt der Schritt 54 des Zuweisens von Anfangsbedingungen zu jedem Knoten der Endstufe und der Beginnstufe des Trellis.
  • Auf den Schritt 54 folgt der Schritt 56 des Berechnens einer Rückwärtsmetrik für jeden Knoten, wobei mit dem Ende des Trellis begonnen wird, und rückwärts durch das Trellis fortgeschritten wird und wobei Rückwärtsmetriken von Knoten einer Vielzahl von Endstufen der Fenster gespeichert werden. Vorzugsweise werden die Rückwärtsmetriken der Knoten der Endstufen von Fenstern in einem externen Speichermodul gespeichert.
  • Auf den Schritt 56 folgt der Schritt 60 des Berechnens der Lambdas. Der Schritt 60 umfasst günstigerweise die Schritte 62, 64 und 66. Die Schritte 62–66 werden wiederholt, bis alle Lambdas des Trellis berechnet sind.
  • Während des Schrittes 62 werden Rückwärtsmetriken von Knoten einer Beginnstufe eines Fensters erhalten, wobei die erhaltenen Rückwärtsmetriken während des Schrittes 66 berechnet und gespeichert wurden. Günstigerweise werden die Fenster so ausgewählt, dass die Vorwärtsmetriken der Knoten der Beginnstufe auf schnelle und genaue Weise berechnet werden können. Normalerweise geht der Berechnung von Vorwärtsmetriken von Knoten einer Beginnstufe eines Fensters, das kein erstes Fenster in dem Trellis bildet, eine Berechnung einer Vorwärtsmetrik eines vorausgehenden Fensters voraus, wobei auf die Endstufe des vorausgehenden Fensters die Beginnstufe des Fensters folgt. Vorzugsweise werden die Lambdas des ersten Fensters des Trellis während einer ersten Iteration der Schritte 62 bis 66 berechnet und weitere Iterationen zur Berechnung der Lambdas von folgenden Fenstern verwendet.
  • Auf den Schritt 62 folgt der Schritt 64 des Berechnens und Speicherns von Rückwärtsmetriken für jeden Knoten, wobei von der Stufe, die der letzten Stufe des Fensters vorausgeht, angefangen wird und an der Beginnstufe des Fensters aufgehört wird. Vorzugsweise werden die Rückwärtsmetriken in einem internen Speicherbaustein gespeichert.
  • Auf den Schritt 64 folgt der Schritt 66 des Berechnens der Vorwärtsmetriken für jeden Knoten, wobei mit der Beginnstufe des Fensters begonnen wird und an der Endstufe des Fensters aufgehört wird, wobei, wenn Vorwärtsmetriken von Knoten einer Stufe berechnet werden, und die Rückwärts metriken der Knoten einer benachbarten Stufe zuvor berechnet wurden, die Berechnung von Vorwärtsmetriken in die Berechnung von Lambda von der Stufe zu der benachbarten Stufe integriert wird. Nachdem ein Lambda berechnet ist, wird es gespeichert. Vorzugsweise wird es in einem externen Speicherbaustein gespeichert. Wie durch den Pfad 61 angezeigt, folgt auf den Schritt 66 der Schritt 62, bis alle Lambdas des Trellis berechnet und gespeichert sind.
  • Günstigerweise haben alle Fenster dieselbe Länge WN, wobei WN viel kleiner als T ist. Die Fenster überlappen nicht. Vorzugsweise beginnt der Schritt 60, indem die Lambdas des ersten Fensters des Trellis berechnet werden, und schreitet vorwärts durch das Trellis fort.
  • Vorzugsweise wird das Verfahren 50 verwendet, um den Log-MAP-Algorithmus zu implementieren. Günstigerweise werden die Gammas während der Schritte 54 und 64 berechnet.
  • 3 bis 4 sind schematische Beschreibungen des Systems 70 und 80 zum Implementieren der Verfahren 30 und 50. Das System 70 umfasst den externen Speicherbaustein 71, den Prozessor 72, der an den externen Speicher 71 über den Datenbus 712 und den Steuer/Regel- und Adressbus 711 gekoppelt ist, den internen Speicherbaustein 75, der an den Prozessor 72 über den Bus 751 gekoppelt ist. Das System 80 ist analog zu dem System 70, hat aber anstelle des Prozessors 72 den Vorwärtsprozessor 73, den Gammaprozessor 76, den Rückwärtsprozessor 74, den Soft-Entscheidungsprozessor 77 ("soft decision processor"), den Hostprozessor 79 und die optionale Steuer- bzw. Regeleinheit 78. Günstigerweise weist das System 80 weiterhin die Steuer bzw.- Regeleinheit 78 zur Koordination der Berechnungen verschiedener Variablen und des Zugriffes auf die internen und externen Spei cherbausteine 71 und 75 auf. Ein Fachmann wird verstehen, dass die Berechnungen der Alphas, Betas, Gammas und Lambdas von verschiedenen Prozessoren und verschiedenen Konfigurationen von Prozessoren durchgeführt werden können.
  • Der Hostprozessor 79 ist an den externen Speicherbaustein 71 über den Adress- und den Steuer/Regelbus 711 und den Datenbus 712 gekoppelt und über den Steuer/Regelbus 791 an die Controlleinheit 78 gekoppelt. Der interne Speicherbaustein 75 ist an die Steuer- bzw. Regeleinheit 78 über den Bus 781 und an den Soft-Entscheidungsprozessor 77, den Gammaprozessor 76, an den Rückwärtsprozessor und den Vorwärtsprozessor 73 über die internen Busse 751 gekoppelt. Der Vorwärtsprozessor 73 und der Rückwärtsprozessor 74 sind auch an den Bus 712 gekoppelt.
  • Der interne Speicherbaustein 75 ist dazu ausgelegt, Variablen zu speichern, die während der Schritte 40 oder 60 benötigt werden, wie zum Beispiel die Vorwärtsmetriken von Knoten eines Fensters, die Rückwärtsmetriken von Knoten eines Fensters, die Gammas eines Fensters. Der externe Speicherbaustein 71 ist dafür ausgelegt, die Information, die mit dem gesamten Trellis verbunden ist, zu speichern. Die Information kann ein Satz von systematischen Eingabesignalen Ys, zwei Sätze von entweder den Paritätseingabesignalen Yp1, Yp2 oder Paritätseingabesignalen Yp3, Yp4 und einen Satz von a-priori-Lambdas L umfassen.
  • Der Vorwärtsprozessor 73 ist dazu ausgelegt, Informationen zu holen, wie z. B. eine Vielzahl von Eingabesignalen von dem externen Speicherbaustein 75, und Vorwärtsmetriken (Alphas) zu berechnen. Der Rückwärtsprozessor ist dazu ausgelegt, die Informationen, wie z. B. eine Vielzahl von emp fangenen Signalen von dem externen Speicherbaustein 75, und Rückwärtsmetriken (Betas) zu berechnen.
  • Die Steuer/Regeleinheit 78 erlaubt es dem Vorwärtsprozessor 73, auf den externen Speicherbaustein 71 während des Schrittes 36 und dem internen Speicherbaustein 75 während des Schrittes 44 zuzugreifen und dem Rückwärtsprozessor 74, auf den externen Speicherbaustein 75 während des Schrittes 56 und dem internen Speicherbaustein 75 während der Schritte 64 zuzugreifen.
  • Der Soft-Entscheidungsprozessor 77 ist dazu ausgelegt, auf den internen Speicherbaustein 75, den Gammaprozessor 76, den Rückwärtsprozessor 74 und den Vorwärtsprozessor 73 zum Empfangen von Vorwärtsmetriken, Rückwärtsmetriken und Gammas zuzugreifen und Lambdas während der Schritte 46 und 66 zu berechnen. Diese Lambdas werden weiterhin während der Schritte 46 und 66 zu der Einheit des externen Speicherbausteins gesendet.
  • 5 ist eine schematische Beschreibung des Systems 90 zur Decodierung einer Sequenz von Signalen, die entsprechend einer bevorzugten Ausführung der Erfindung durch einen Faltungscodierer ausgegeben und über einen Kanal übertragen werden.
  • Das System 90 ist an den Hostprozessor 79 und an den externen Speicherbaustein 71 über die Busses 791, 711 und 712 gekoppelt.
  • Das System 90 umfasst den Gammaprozessor 76, die Gammaregisterdatei 82, den internen Speicherbaustein 75, den abc-Prozessor 722 und die Prozessorregisterdatei 721. Der abc-Prozessor 722 ist an die Gammaregisterdatei 82, die Prozessorregisterdatei 721 und den internen Speicherbaustein über die Busse 821, 791 und 751 gekoppelt. Der Gamma prozessor 76 ist an die Gammaregisterdatei 82 über den Bus 822 und an den internen Speicherbaustein 75 über den Bus 761 gekoppelt.
  • Der Gammaprozessor 76 und die Prozessorregisterdatei 721 sind an den Bus 712 zum Empfangen von Anfangsbedingungen und Eingabesignalen und zum Bereitstellen von Alphas während des Schrittes 36 oder Betas während des Schrittes 56 gekoppelt.
  • Die Gammaregisterdatei 82 wird zur Speicherung der Gammas verwendet. Die Prozessorregisterdatei 79 wird verwendet, um die Alphas und Betas zu speichern, die durch den abc-Prozessor 722 berechnet werden, und um die Zwischenvariablen und -resultate zu speichern, die zur Berechnung der Alphas, Betas und Lambdas benötigt werden. Eine beispielhafte Implementierung des Systems 90 (als Systems 100 bezeichnet) wird in 6 genauer dargestellt.
  • 6 ist eine detaillierte Beschreibung des Systems 100 zum Decodieren einer Sequenz von Signalen, die in Übereinstimmung mit einer bevorzugten Ausführungsform der Erfindung durch einen Faltungscodierer ausgegeben und über einen Kanal übertragen werden.
  • Die Systeme 60, 70, 80, 90 und 100 können als ein dedizierter Hardware-Beschleuniger innerhalb eines eingebetteten Systems zur Anhebung der Leistungen des eingebetteten Systems implementiert werden.
  • Das System 100 ist dazu ausgelegt, Lambdas entsprechend der Verfahren 30 und 50 zu berechnen, wenn R ½, 1/3, ¼, 1/5 oder 1/6 gleicht, wobei jede Stufe 8 Knoten umfasst, und die Länge aller Fenster 64 Stufen mit Ausnahme eines letzten Fensters des Trellis umfasst. Das System 100 ist dazu ausgelegt, um 8 ACS-Butterflies-Berechnungen in einem einzigen Taktungszyklus durchzuführen.
  • Zur vereinfachten Erklärung wird angenommen, dass das System 100 das Verfahren 30 implementiert. Wenn das System 100 das Verfahren 50 implementiert, dann wird der Alphaspeicher 190 verwendet, um die Betas eines Fensters zu speichern, und der Bus 360 wird verwendet, um die Betaregister 160 bis 167 an den Bus 712 zu koppeln.
  • Es wird angenommen, dass das System 100 das λk berechnet, das mit einem Übergang von einer (k – 1)-ten Stufe des Trellis zu der k-ten Stufe verbunden ist. Die (k – 1)-te Stufe umfasst 8 Knoten No, k – 1; N1, k – 1; N2, k – 1; N3, k – 1; N4, k – 1; N5, k – 1; N6, k – 1; N7, k – 1; und die k-te Stufe weist 8 Knoten N0, k; N1, k; N2, k; N3, k; N4, k; N5, k; N6, k; N7, k auf. Die Vorwärtsmetriken der N0, k – 1 bis N7, k – 1 werden bezeichnet mit α(0, k – 1), α(1, k – 1), α(2, k – 1), α(3, k – 1), α(4, k – 1), α(5, k – 1), α(6, k – 1) und α(7, k – 1). Die Rückwärtsmetriken der Knoten N0, k bis N7, k werden bezeichnet mit β(0, k), β(1, k), β(2, k) , β(3, k) , β(4, k) , β(5, k) , β(6, k) und β(7, k) . Die Zweigmetriken γ0, k sind mit einem Übergang von dem (zu dem) N0, k – 1 zu dem (von dem) N4, k und von dem (zu dem) N1, k – 1 zu dem (von dem) N0, k assoziiert. Die Zweigmetriken –γ0, k stehen in Verbindung mit einem Übergang von (zu) N0, k – 1 zu (von) N0, k und von (zu) N1, k – 1 zu (von) N4, k. Die Zweigmetriken γ1, k stehen in Verbindung mit einem Übergang von (zu) N2, k – 1 zu (von) N1, k und von (zu) N3, k – 1 zu (von) N5, k. Die Zweigmetriken –γ1, k stehen in Verbindung mit einem Übergang von (zu) N2, k – 1 zu (von) N5, k und von (zu) N3, k – 1 zu (von) N1, k. Die Zweigmetriken γ2, k stehen in Verbindung mit einem Übergang von (zu) N5, k – 1 zu (von) N2, k und von (zu) N4, k – 1 zu (von) N6, k. Die Zweigmetriken –γ2, k stehen in Verbindung mit einem Übergang von (zu) N4, k – 1 zu (von) N2, k und von (zu) N5, k – 1 zu (von) N6, k. Die Zweigmetriken γ3, k stehen in Verbindung mit einem Übergang von (zu) N6, k – 1 zu (von) N3, k und von (zu) N7, k – 1 zu (von) N7, k. Die Zweigmetriken –γ3, k stehen in Verbindung mit einem Übergang von (zu) N6, k – 1 zu (von) N7, k und von (zu) N7, k – 1 zu (von) N3, k.
  • Die Zweigmetriken γ0, k bis γ3, k sind durch die folgenden Gleichungen gegeben: (1) γ0, k = –(Lk + Yp1, k + Yp2, k) (2) γ1, k = –(Lk – Yp1, k + Yp2, k) (3) γ2, k = –(Lk – Yp1, k – Yp2, k) (4) γ3, k = –(Lk + Yp1, k – Yp2, k)
  • Die Vorwärtsmetriken sind durch die folgenden Gleichungen gegeben: (5) α(0, k) = MAX[(α(1, k – 1) + γ0, k), (α(0, k – 1) – γ0, k)] (6) α(1, k) = MAX[(α(2, k – 1) + γ1, k), (α(3, k – 1) – γ1, k)] (7) α(2, k) = MAX[(α(5, k – 1) + γ2, k), (α(4, k – 1) – γ2, k)] (8) α(3, k) = MAX[(α(6, k – 1) + γ3, k), (α(7, k – 1) – γ3, k)] (9) α(4, k) = MAX[(α(0, k – 1) + γ0, k), (α(1, k – 1) – γ0, k)] (10) α(5, k) = MAX[(α(3, k – 1) + γ1, k), (α(2, k – 1) – γ1, k)] (11) α(6, k) = MAX[(α(4, k – 1) + γ2, k), (α(5, k – 1) – γ2, k)] (12) α(7, k) = MAX[(α(7, k – 1) + γ3, k), (α(6, k – 1) – γ3, k)]
  • Die Rückwärtsmetriken sind durch die folgenden Gleichungen gegeben: (13) β(0, k – 1) = MAX[(β(4, k) + γ0, k), (β(0, k) – γ0, k)] (14) β(1, k – 1) = MAX[(β(0, k) + γ0, k), (β(4, k) – γ0, k)] (15) β(2, k – 1) = MAX[(β(1, k) + γ1, k), (β(5, k) – γ1, k)] (16) β(3, k – 1) = MAX[(β(5, k) + γ1, k), (β(1, k) – γ1, k)] (17) β(4, k – 1) = MAX[(β(6, k) + γ2, k), (β(2, k) – γ2, k)] (18) β(5, k – 1) = MAX[(β(2, k) + γ2, k), (β(6, k) – γ2, k)] (19) β(6, k – 1) = MAX[(β(3, k) + γ3, k), (β(7, k) – γ3, k)] (20) β(7, k – 1) = MAX[(β(7, k) + γ3, k), (β(3, k) – γ3, k)]
  • Lambda wird durch die folgenden Gleichungen gegeben: (21) Λk = (Max(0) – Max (1))/2 – Lk (22) Max(0) = Max[α((4, k – 1) + β(2, k) – γ2, k), (α(0, k – 1) + β(0, k) – γ0, k), (α(5, k – 1) + β(6, k) – γ2, k), (α(1, k – 1) + β(4, k) – γ0, k), (α(2, k – 1) + β(3, k) – γ3, k), (α(3, k – 1) + β(1, k) – γ1, k), (α(6, k – 1) + β(7, k) – γ3, k), (α(2, k – 1) + β(5, k) – γ1, k)] (23) Max(1) = MAX[(α(4, k – 1) + β(6, k) + γ2, k), (α(0, k – 1) + β(4, k) + γ0, k), (α(5, k – 1) + (β(2, k) – γ2, k), α(1,k – 1) + β(0, k) + γ0, k), (α(6, k – 1) + β(3, k) + γ3, k), α(2,k – 1) + β(1, k) + γ1, k), (α(7, k – 1) + β(7, k) + γ3, k), (α(3,k – 1) + β(5, k) + γ1, k)].
  • Wenn ein Log-MAP-Algorithmus implementiert wird, schließt die Kalkulation die Addition eines Korrekturfaktors ein, der vorzugsweise in einer Nachschlagetabelle gespeichert wird. Der Korrekturfaktor wird nicht benötigt, wenn ein Max-Log-MAP-Algorithmus implementiert wird. Solch eine Nachschlagetabelle (nicht abgebildet) wird an die ALU0–ALU7 140147, MAX0 -und MAX1-Einheiten 210 und 211 gekoppelt oder bildet einen Anteil jeder der genannten Einheiten.
  • Das System 100 ist zum Austauschen von Informationen mit dem externen Speicherbaustein 71 an den Bus 712 gekoppelt, es ist zum Empfangen von Steuersignalen von dem Hostprozessor 79 an den Bus 791 gekoppelt und es ist zur Bereitstellung von Steuersignalen und Adressen an den externen Speicherbaustein 71 an den Bus 711 gekoppelt. Das System 100 hat einen Adressenerzeugungs- und Steuereinheit 230 (d. h. Steuereinheit), die andere Einheiten des Systems 100 und den Austausch von Informationen mit dem externen Speicherbaustein steuert. Die Steuereinheit 230 ist an die anderen Einheiten des Systems 230 durch einen Bus 330 gekoppelt und nur zur Vereinfachung der Erklärung werden die verschiedenen Verbindungen nicht gezeigt.
  • Das System 100 umfasst die Register 103, 102 und 101 zum Speichern von Yp1, k, Yp2, k und einem α-priori-Lambda Lk. Der Gammaprozessor 104 ist zum Empfangen des Inhalts der Register 101103, zum Berechnen von γ0, k, γ1, k, γ2, k und γ3, k entsprechend den Gleichungen (1)–(4) und zu deren Bereitstellung an die Register 110113. Der Gammaspeicher 120 ist zum Speichern der Gammas eines Fensters. Der α-priori-Lambdaspeicher 130 ist zum Speichern von a-priori-Lambdas eines Fensters. Acht Alpharegister 150157 dienen dem Speichern von acht Alphas. Acht Betaregister 160167 dienen dem Speichern von acht Betas. Acht Lambdaregister 170177 dienen dem Speichern von acht Zwischenresultaten, die zur Lambda-Berechnung verwendet werden. Acht Auswahleinheiten 180187, die an die Register 150157 gekoppelt sind, der Alphaspeicher 190, die Register 110113 und der Gammaspeicher 120 dienen dem Bereitstellen von Alphas, Betas und Gammas für die acht arithmetischen Steuereinheiten ALU0–ALU7 140147. ALU0–ALU7 140-147 dienen dem Imple mentieren der Gleichungen (5)–(20) und dem Bereitstellen der Resultate ihrer Berechnungen für die Alpharegister 150157, die Betaregister 160167 und die Lambdaregister 170177. Während der Schritte 46 und 66 versorgen die ALU0– ALU7 140147 die Lambdaregister 160-167 mit acht Zwischenresultaten. Diese Resultate sind in den Gleichungen (22) und (23) in Klammern gezeigt. Die Alphas werden für die Register 150157 bereitgestellt, die Betas werden für die Register 160167 bereitgestellt. Die acht Zwischenresultate werden für die Register 170177 bereitgestellt. Die MAX-0-Einheit 210 implementiert die Gleichung (22) und stellt max(0) dem Addierer 220 zur Verfügung. Die MAX-1-Einheit 211 implementiert die Gleichung (23) und stellt max(1) dem Addierer 220 zur Verfügung. Der Addierer 220 verschiebt max(0) und max(1) nach rechts, subtrahiert max(1) von max(0), subtrahiert Lk von dem Produkt und stellt Λk zur Verfügung. Die Selektionseinheiten 180187 wählen aus, welche Variablen für die ALU0–ALU7 140147 bereitgestellt werden. Zum Beispiel stellt die Auswahleinheit 180 ALU 140 α(0, k – 1) von dem Register 150, α(1, k – 1) von dem Register 151 und γ0, k von dem Register 110 während einer Berechnung von α(0, k) in dem Schritt 36 bereit, so dass ALU0 140 die Gleichung (5) implementieren kann. Während einer Berechnung von Gamma im Schritt 46 stellt die Auswahleinheit 180 ALU0 140 α(4, k – 1) von dem Alphaspeicher 190, β(2, k) von dem Register 162 und γ2, k von dem Gammaspeicher 120 bereit.
  • Die Register 101103 werden an den Datenbus 712 gekoppelt und werden an den Gammaprozessor 104 über die Busse 301303 gekoppelt. Die Register 110113 sind an den Gammaprozessor 104 über den Bus 304 und an die Auswahleinheiten 180187 über den Bus 311 gekoppelt. Der Gammaspeicher 120 ist an den Gammaprozessor über den Bus 304 und an die Auswahleinheiten 180187 über den Bus 311 gekoppelt. Der a-priori-Lambdaspeicher ist an den Register 101 über den Bus 301 und an den Addierer 220 über den Bus 330 gekoppelt. Die Auswahleinheiten 180187 sind an die Alpharegister 150157 und Betaregister 160167 über die Busse 350 und 360 und an den Gammaspeicher 120 über den Bus 120 gekoppelt. Vorzugsweise werden Teile der Busse 350, 360, 322 und 311 an jede Auswahleinheit gekoppelt. Zum Beispiel wird die Auswahleinheit 180 an Teile des Busses 350 gekoppelt, um den Inhalt der Alpharegister 150 und 151 zu empfangen. Die Busse 350 und 360 sind an den Bus 712 und an den Alphaspeicher 190 gekoppelt. ALU0–ALU7 140147 sind an die Auswahleinheiten 180187 über die Busse 380387, an die Alpharegister 150157, Betaregister 160167 und intermediären Lambdaregister 170177 über die Busse 340347 gekoppelt. Die MAX 0- und MAX 1-Einheiten 210 und 211 sind über die Busse 370 und 371 an die intermediären Lambdaregister 170177 und über die Busse 310 und 311 an den Addierer 220 gekoppelt. Der Addierer 220 ist an den Bus 712 gekoppelt.
  • Während des Schrittes 34 wird die Anfangsbedingung von Knoten für die Alpharegister 150157 und die Betaregister 160167 von dem externen Speicherbaustein 71 über die Busse 350 und 360 bereitgestellt.
  • Während des Schrittes 36 berechnet das System 100 die Gammas und Alphas des gesamten Trellis. Zum Beispiel wird angenommen, dass α(0, k)–α(7, k) und γ0, k–γ3, k berechnet werden.
  • Die Berechnung von γ0, k–γ3, k wird durchgeführt, indem Yp1, k, Yp2, k und Lk von den Registern 101103 für den Gammaprozessor 104 bereitgestellt werden, wobei die Glei chungen (1)–(4) implementiert werden und das Resultat in den Registern 110113 gespeichert wird.
  • Die Berechnung der Alphas α(0, k – 1)–α(7, k – 1) wird durchgeführt, indem für die ALU0–ALU7 140147 Gammas von den Registern 110113, vorhergehende Alphas (α(0, k – 1)– α(7, k – 1)) von den Alpharegistern 150157 bereitgestellt werden, wobei die Gleichungen (5)–(12) implementiert werden und die Alphas α(0, k)–α(7, k) in den Alpharegistern 150157 gespeichert werden. Die Alphas von Knoten von Startstufen von Fenstern werden über die Busse 350 und 712 an den externen Speicherbaustein 71 bereitgestellt. Während des Schrittes 42 werden die Alphas von Knoten einer Beginnstufe eines Fensters über die Busse 350 und 712 von dem externen Speicherbaustein 71 für die Alpharegister 150157 bereitgestellt. vorzugsweise stellt der Hostprozessor 79 die Steuer- und Adresssignale zur Verfügung und wählt das zu verarbeitende Fenster aus.
  • Während des Schrittes 44 werden die Alphas und Gammas eines Fensters berechnet, die Gleichungen (1)–(4) und (5)– (12) implementiert, indem die Register 101103 der Gammaprozessor 104, die Gammaregister 110113, die Auswahleinheiten 180187, ALU0–ALU7 140147 und die Alpharegister 150157 wie in dem Schritt 36 aktiviert werden, aber die Alphas und Gammas der Knoten des Fensters werden in dem Alphaspeicher 190 und in dem Gammaspeicher 120 gespeichert, so dass, wenn der Schritt 44 endet, der Gammaspeicher 120 alle Gammas des Fensters und der Alphaspeicher 190 alle Alphas des Fensters speichert.
  • Während des Schrittes 46 werden die Gammas eines Fensters berechnet.
  • Die Gammas von dem Gammaspeicher 120 und die Betas von den Betaregistern 160167 werden verwendet, um die Gleichungen (13)–(20) und (21)–(23) zu implementieren, so dass die Betas und Lambdas des Fensters berechnet werden. Die Gleichungen (13)–(20) werden implementiert, indem die vorhergehenden Betas von den Betaregistern 160167 und die Gammas von dem Gammaspeicher 120 für die Auswahleinheiten 180187 bereitgestellt und die Betas berechnet werden. Die Lambdas werden berechnet, indem die Betas von den Betaregistern 160167, die Alphas von dem Alphaspeicher 190 und die Gammas von dem Gammaspeicher 120 für die Selektionseinheiten 180187 und für die ALU0–ALU7 140147 bereitgestellt werden. Die ALU0–ALU7 140147 stellen acht Zwischenresultate für die Lambdaregister 170177 bereit, vier Zwischenresultate werden für die MAX 0-Einheit 210 und vier Zwischenresultate werden für die MAX1-Einheit 211 zur Implementierung der Gleichungen (22) und (23) und zur Bereitstellung von max(0) und max(1) für den Addierer 220 bereitgestellt. Der Addierer 220 verschiebt max(0) und max(1) nach rechts, subtrahiert max(1)/2 von max(1)/2 und subtrahiert von dem Resultat ein a-priori-Lambda von dem Speicher 130 und stellt die Lambdas über den Bus 712 dem externen Speicher bereit.

Claims (44)

  1. Verfahren (30) zur Durchführung einer SISO-Decodierung, wobei das Verfahren die Schritte umfasst: (a) Bereitstellen (30) eines Trellis, das eine Ausgabe eines Faltungscodierers darstellt, wobei der Faltungscodierer eine Codierrate von R aufweist, wobei das Trellis eine Blocklänge T aufweist und in Fenster eingeteilt ist; (b) Zuweisen (34) von Anfangsbedingungen zu jedem Knoten einer Beginnstufe und einer Endstufe des Trellis; (c) Berechnen (36) einer Vorwärtsmetrik für jeden Knoten, wobei mit der Beginnstufe des Trellis begonnen und durch das Trellis vorwärts fortgeschritten wird, und Speichern von Vorwärtsmetriken von Knoten einer Mehrzahl von Beginnstufen von Fenstern; (d) Wiederholen der Stufen d(1)–d(3) bis alle Lambdas des Trellis berechnet worden sind: (1) Erhalten (42) von Vorwärtsmetriken von Knoten einer Beginnstufe eines Fensters, wobei diese erhaltenen Vorwärtsmetriken während des Schrittes 1(c) berechnet und gespeichert wurden, (2) Berechnen und Speichern (44) von Vorwärtsmetriken für jeden Knoten, wobei an einer zweiten Stufe des Fensters begonnen wird und an der Endstufe des Fensters aufgehört wird; (3) Berechnen (46) von Rückwärtsmetriken für jeden Knoten, wobei an der Endstufe des Fensters begonnen wird und an der Beginnstufe des Fensters aufgehört wird; dadurch gekennzeichnet, dass, wenn Rückwärtsmetriken von Knoten einer Stufe berechnet werden und die Vorwärtsmetriken der Knoten einer benachbarten Stufe zuvor berechnet wurden, die Berechnung der Rückwärtsmetriken in die Berechnung von Lambda von der Stufe zu der benachbarten Stufe und die Speicherung der berechneten Lambdas integriert wird.
  2. Verfahren nach Anspruch 1, wobei das Verfahren das Beginnen, die Lambdas eines letzten Fensters des Trellis zu berechnen aufweist, und das rückwärts Fortschreiten durch das Trellis aufweist.
  3. Verfahren nach Anspruch 1, wobei Gammas während der Stufe d(2) berechnet werden.
  4. Verfahren nach Anspruch 1, wobei alle Fenster mit Ausnahme eines letzten Fensters des Trellis eine Länge von WN mit WN << T aufweisen.
  5. Verfahren nach Anspruch 1, wobei die Fenster nicht überlappen.
  6. Verfahren nach Anspruch 1, wobei einer Berechnung Rückwärtsmetriken von Knoten einer Endstufe eines Fensters, das kein letztes Fenster in dem Trellis ist, eine Berech nung einer Rückwärtsmetrik eines folgenden Fensters vorausgeht, wobei die Beginnstufe des folgenden Fensters auf der Endstufe des Fensters folgt.
  7. Verfahren nach Anspruch 1, wobei der Schritt (c) das Speichern der Vorwärtsmetriken von Knoten der Beginnstufe von Fenstern in einem externen Speicherbaustein (71) einschließt.
  8. Verfahren nach Anspruch 1, wobei der Schritt d(3) das Speichern der Lambdas in einem externen Speicherbaustein (71) einschließt.
  9. Verfahren nach Anspruch 1, wobei der Schritt d(2) das Speichern der Vorwärtsmetriken in einem internen Speicherbaustein (75) einschließt.
  10. Verfahren nach Anspruch 1, wobei das Verfahren zur Implementierung einer der Log-MAP-Algorithmen verwendet wird.
  11. Verfahren (50) zur Durchführung einer SISO-Decodierung, wobei das Verfahren die Schritte umfasst: (a) Bereitstellen (52) eines Trellis, das eine Ausgabe eines Faltungscodierers darstellt, wobei der Faltungscodierer eine Codierrate von R aufweist, wobei das Trellis eine Blocklänge T aufweist und in Fenster eingeteilt ist; (b) Zuweisen (54) von Anfangsbedingungen zu jedem Knoten einer Endstufe und einer Beginnstufe des Trellis; (c) Berechnen (56) einer Rückwärtsmetrik für jeden Knoten, wobei bei Knoten der Endstufe des Trellis begonnen wird und rückwärts durch das Trellis fortgeschritten wird, und Speichern von Rückwärtsmetriken von Knoten einer Mehrzahl von Endstufen von Fenstern; (d) Wiederholen der Stufen d(1)–d(3) bis alle Lambdas des Trellis berechnet sind: (1) Erhalten (62) von Rückwärtsmetriken von Knoten einer Endstufe eines Fensters, wobei die erhaltenen Rückwärtsmetriken während des Schrittes 1(c) berechnet und gespeichert wurden, (2) Berechnen und Speichern (64) von Rückwärtsmetriken für jeden Knoten, wobei an einer Stufe, die der Endstufe des Fensters vorausgeht, begonnen wird und mit der ersten Stufe des Fensters aufgehört wird; (3) Berechnen (66) von Vorwärtsmetriken für jeden Knoten, wobei an der Beginnstufe des Fensters begonnen wird und an der Endstufe des Fensters aufgehört wird; dadurch gekennzeichnet, dass, wenn die Vorwärtsmetriken von Knoten einer Stufe berechnet werden und die Rückwärtsmetriken der Knoten einer benachbarten Stufe zuvor berechnet wurden, die Berechnung der Vorwärtsmetriken in die Berechnung von Lambda von der Stufe zu der benachbarten Stufe und eine Speicherung der berechneten Lambdas integriert wird.
  12. Verfahren nach Anspruch 11, wobei das Verfahren das Berechnen der Lambdas eines ersten Fensters des Trellis und das vorwärts Fortschreiten durch das Trellis aufweist.
  13. Verfahren nach Anspruch 11, wobei Gammas während der Stufe d(2) berechnet werden.
  14. Verfahren nach Anspruch 11, wobei alle Fenster mit Ausnahme eines letzten Fensters des Trellis eine Länge von WN mit WN < T aufweisen.
  15. Verfahren nach Anspruch 11, wobei die Fenster nicht überlappen.
  16. Verfahren nach Anspruch 11, wobei einer Berechnung von Vorwärtsmetriken von Knoten einer Beginnstufe eines Fensters, das kein erstes Fenster in dem Trellis ist, eine Berechnung einer Vorwärtsmetrik eines vorausgehenden Fensters vorausgeht, wobei auf der Endstufe des vorausgehenden Fensters der Beginnstufe des Fensters folgt.
  17. Verfahren nach Anspruch 11, wobei der Schritt (c) die Speicherung der Rückwärtsmetriken von Knoten der Endstufen von Fenstern in einem externen Speicherbauteil (71) einschließt.
  18. Verfahren nach Anspruch 11, wobei der Schritt d(3) das Speichern der Lambdas in einem externen Speicherbaustein (71) einschließt.
  19. Verfahren nach Anspruch 11, wobei der Schritt d(2) das Speichern der Rückwärtsmetriken in einem internen Speicherbaustein (75) einschließt.
  20. Verfahren nach Anspruch 11, wobei das Verfahren zur Implementierung einer der Log-MAP-Algorithmen verwendet wird.
  21. System (70; 80; 90; 100) zum Decodieren einer Sequenz von Signalen, die durch einen Faltungscodierer ausgegeben und über einen Kanal übertragen werden, wobei die Codiererausgabe durch ein Trellis mit einer Blocklänge T dargestellt wird und das System aufweist: einen internen Speicher (75) zur Speicherung einer Vielzahl von Variablen, die zur Berechnung der Lambdas eines Fensters benötigt werden; einen externen Speicherbaustein (71), der zur Speicherung einer Vielzahl von Variablen ausgelegt ist, die zur Berechnung von Lambda des Trellis benötigt werden; einen an den externen Speicher und den internen Speicher gekoppelten Prozessor (72) zur Berechnung von Vorwärtsmetriken, Rückwärtsmetriken, Zweigmetriken und Lambdas und zum Zugreifen auf den externen und den internen Speicherbaustein; dadurch gekennzeichnet, dass das System dafür ausgelegt ist, die Vorwärtsmetriken von allen Trellis zu berechnen, Vorwärtsmetriken von Knoten von Beginnstufen von Fenstern zu speichern, Vorwärtsmetriken und Zweigmetriken eines Fensters zu berechnen, die Vorwärtsmetriken und Zweigmetriken in dem internen Speicherbauteil zu speichern, die Vorwärtsmetriken und Zweigmetriken innerhalb des internen Speicherbausteins zu verwenden, um Lambdas des Fensters zu berechnen, während das System die Lambdas von verschiedenen Fenstern berechnet, bis alle Lambdas des Trellis berechnet sind, und, wenn Rückwärtsmetriken von Knoten einer Stufe berechnet werden und die Vorwärtsmetriken des Knotens einer benachbarten Stufe zuvor berechnet wurden, die Berechnung der Rückwärtsmetriken in die Berechnung von Lambda von der Stufe zu der benachbarten Stufe und die Speicherung der berechneten Lambdas integriert ist.
  22. System nach Anspruch 22, wobei das System beginnt, die Lambdas eines letzten Fensters des Trellis zu berechnen, und rückwärts durch das Trellis fortschreitet.
  23. System nach Anspruch 22, wobei alle Fenster bis auf ein letztes Fenster des Trellis eine Länge von WN mit WN << T aufweisen.
  24. System nach Anspruch 22, wobei die Fenster nicht überlappen.
  25. System nach Anspruch 22, wobei das System Rückwärtsmetriken von Knoten einer Endstufe eines Fensters berechnet, das kein letztes Fenster in dem Trellis ist, nachdem das System eine Rückwärtsmetrik eines folgenden Fensters berechnet, wobei die Beginnstufe des folgenden Fenster auf der Endstufe des Fensters folgt.
  26. System nach Anspruch 22, wobei das System die Vorwärtsmetriken von Knoten einer Beginnstufe von Fenstern in dem externen Speicherbaustein (71) speichert.
  27. System nach Anspruch 22, wobei das System die Lambdas, die es berechnet, in dem externen Speicherbaustein (71) speichert.
  28. System nach Anspruch 22, wobei das System die Vorwärtsmetriken und die Zweigmetriken eines Fensters in dem internen Speicherbauteil (75) speichert.
  29. System nach Anspruch 22, wobei das System zur Implementierung einer der Log-MAP-Algorithmen verwendet wird.
  30. System nach Anspruch 22, wobei der Prozessor und der interne Speicher weiterhin aufweisen: einen Gammarechner (76), der an den externen Speicherbaustein und den internen Speicherbaustein zum Empfangen empfangener Signale und eines a-priori-Lambdas sowie zum Berechnen von Zweigmetriken gekoppelt ist; eine Gammaregisterdatei (82), die an den Gammaprozessor zum Speichern von Zweigmetriken gekoppelt ist, die durch das Gammaregister berechnet worden sind; eine Prozessorregisterdatei (721), die an einen abc-Prozessor (722) und an den externen Speicherbaustein zum Speichern von Vorwärtsmetriken, Rückwärtsmetriken und von an den abc-Prozessor oder den externen Speicherbaustein bereitzustellenden Zwischenresultaten gekoppelt ist; und einen abc-Prozessor (722), der an die Gammaregisterdatei, den internen Speicherbaustein und den externen Speicherbaustein zum Empfangen von Gammas und entweder der Vorwärtsmetriken oder der Rückwärtsmetriken, die innerhalb der Prozessorregisterdatei gespeichert worden sind, und zum Berechnen von entweder Vorwärtsmetriken, Rückwärtsmetriken oder Lambdas gekoppelt ist.
  31. System nach Anspruch 22, wobei der abc-Prozessor (722) weiter aufweist: eine Vielzahl von Auswahleinheiten, die an die Prozessorregisterdatei, an die Gammaregisterdatei und an eine Vielzahl von arithmetischen Registerdateien zum Auswählen der an die arithmetischen Logikeinheiten einzugebenden Eingabesignale gekoppelt sind; eine Vielzahl von arithmetischen Steuer-/Regeleinheiten zum Empfangen von Eingaben von der Vielzahl von Auswahleinheiten, zum Berechnen von Vorwärtsmetriken, Rückwärtsmetriken und Zwischenresultaten und zu deren Speichern in der Prozessorregisterdatei; eine Vielzahl von MAX-Einheiten, zum Auffinden von zwei maximalen Zwischenresultaten, während das erste maximale Zwischenresultat mit Übergängen in dem Trellis verbunden ist, die durch eine Übertragung von "1" hervorgerufen sind, und ein zweites maximales Zwischenresultat mit den Übergängen in dem Trellis verbunden ist, die durch eine Übertragung von "0" hervorgerufen sind; einen Addierer zum Erzeugen von Lambda durch Abziehen eines a-priori-Lambdas und einer Hälfte des ersten maximalen Resultates von einer Hälfte des zweiten maximalen Resultates.
  32. System nach Anspruch 31, wobei die Prozessorregisterdatei (721) eine Vielzahl von Alpharegistern zum Speichern von Vorwärtsmetriken, eine Vielzahl von Betaregisterdateien zum Speichern von Rückwärtsmetriken und eine Vielzahl von Lambdaregistern zum Speichern von Zwischenresultaten umfasst.
  33. System (70; 80; 90; 100) zum Decodieren einer Sequenz von Signalen, die durch einen Faltungscodierer ausgegeben werden und über einen Kanal übertragen werden, wobei die Codierausgabe durch ein Trellis mit einer Blocklänge T dargestellt wird, wobei das System aufweist: einen internen Speicher (75) zum Speichern einer Vielzahl von Variablen, die zur Berechnung von Lambdas eines Fensters benötigt werden; einen externen Speicherbaustein (71) der dafür ausgelegt ist, eine Vielzahl von Variablen zu speichern, die zur Berechnung des Lambdas des Trellis benötigt werden; und einen Prozessor (72), der an den externen Speicher und den internen Speicher zum Berechnen von Vorwärtsmetriken, Rückwärtsmetriken, Zweigmatriken und Lambdas und zum Zugreifen auf den externen und den internen Speicherbaustein gekoppelt ist; dadurch gekennzeichnet, dass das System dafür ausgelegt ist, die Rückwärtsmetriken von allen Trellis zu berechnen, Rückwärtsmetriken von Knoten von Endstufen von Fenstern zu speichern, Rückwärtsmetriken und Zweigmetriken eines Fensters zu berechnen, die Rückwärtsmetriken und die Zweigmetriken in dem internen Speichermodul zu speichern, die Rückwärtsmetriken und Zweigmetriken innerhalb des internen Speichermoduls zu verwenden, um Lambdas der Fenster zu berechnen, während das System die Lambdas von verschiedenen Fenstern berechnet, bis alle Lambdas des Trellis berechnet sind, und, wenn Rückwärtsmetriken von Knoten von einer Stufe berechnet werden und die Vorwärtsmetriken der Knoten einer benachbarten Stufe zuvor berechnet wurden, die Berechnung der Rückwärtsmetriken in die Berechnung von Lambda von der Stufe zu der nächsten Stufe und die Speicherung der berechneten Lambdas integriert ist.
  34. System nach Anspruch 33, wobei das System beginnt, die Lambdas eines ersten Fensters des Trellis zu berechnen, und vorwärts durch das Trellis fortschreitet.
  35. System nach Anspruch 33, wobei alle Fenster mit Ausnahme eines ersten Fensters des Trellis eine Länge von WN mit WN << T aufweisen.
  36. System nach Anspruch 33, wobei die Fenster nicht überlappen.
  37. System nach Anspruch 33, wobei das System Vorwärtsmetriken von Knoten einer Beginnstufe eines Fensters, das kein erstes Fenster in dem Trellis ist, berechnet, nachdem das System eine Vorwärtsmetrik eines vorhergehenden Fensters berechnet, wobei die Endstufe des vorhergehenden Fensters der Beginnstufe des Fensters vorausgeht.
  38. System nach Anspruch 33, wobei das System die Rückwärtsmetriken der Knoten der Beginnstufen der Fenster in dem externen Speicherbaustein (71) speichert.
  39. System nach Anspruch 33, wobei das System die Lambdas, die es berechnet, in dem externen Speicherbaustein (71) speichert.
  40. System nach Anspruch 33, wobei das System die Rückwärtsmetriken und die Zweigmetriken eines Fensters in dem internen Speicherbaustein (75) speichert.
  41. System nach Anspruch 33, wobei das System verwendet wird, um einen der Log-MAP-Algorithmen zu implementieren.
  42. System nach Anspruch 33, wobei der Prozessor und der interne Speicher weiterhin aufweisen: einen Gammarechner, der an den externen Speicherbaustein und an den internen Speicherbaustein zum Empfangen empfangener Signale und eines a-priori-Lambdas und zum Berechnen von Zweigmetriken gekoppelt ist; eine Gammaregisterdatei (82), die an den Gammaprozessor zum Speichern von durch das Gammaregister berechneten Zweigmetriken gekoppelt ist; eine Prozessorregisterdatei (721), die an einen abc-Prozessor (722) und an den externen Speicherbaustein zum Speichern von Vorwärtsmetriken, Rückwärtsmetriken und Zwischenresultaten, die an den abc-Prozessor oder an den externen Speicherbaustein bereitzustellen sind, gekoppelt ist; und einen abc-Prozessor (722), der an die Gammaregisterdatei, den internen Speicherbaustein und den externen Speicherbaustein zum Empfangen von Gammas und entweder einer der Vorwärtsmetriken oder einer der Rückwärtsmetriken, die in der Prozessorregisterdatei gespeichert sind, und zum Berechnen von entweder Vorwärtsmetriken, Rückwärtsmetriken oder Lambdas gekoppelt ist.
  43. System nach Anspruch 42, wobei der abc-Prozessor (722) weiterhin aufweist: eine Vielzahl von Auswahleinheiten, die an die Prozessorregisterdatei, an die Gammaregisterdatei und an eine Vielzahl von arithmetischen Registerdateien zum Auswählen der an die arithmetischen Logikeinheiten einzugebenden Eingabesignale gekoppelt sind; eine Vielzahl von arithmetischen Steuer/Regeleinheiten zum Empfangen von Eingaben der Vielzahl von Auswahleinheiten, zum Berechnen von Vorwärtsmetriken, Rückwärtsmetriken und Zwischenresultaten und zu deren Speicherung in der Prozessorregister Datei; eine Vielzahl von MAX-Einheiten, zum Auffinden von zwei maximalen Zwischenresultaten, wobei das erste maximale Zwischenresultat mit Übergängen in dem Trellis verbunden ist, die durch eine Übertragung von "1" hervorgerufen sind, und ein zweites maximales Zwischenresultat mit den Übergängen in dem Trellis verbunden ist, das durch eine Übertragung von "0" verursacht sind; einen Addierer, zum Erzeugen von Lambda, indem von der Hälfte des zweiten maximalen Resultats ein a-priori-Lambda und eine erste Hälfte des ersten maximalen Resultat abgezogen wird.
  44. System nach Anspruch 43, wobei die Prozessorregisterdatei (721) eine Vielzahl von Alpharegister zum Speichern von Vorwärtsmetriken, eine Vielzahl von Betaregisterdateien zum Speichern von Rückwärtsmetriken und eine Vielzahl von Lambdaregistern zum Speichern von Zwischenresultaten aufweist.
DE60007956T 2000-02-21 2000-02-21 Vorrichtung und Verfahren zur SISO Dekodierung Expired - Fee Related DE60007956T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP00103624A EP1128560B1 (de) 2000-02-21 2000-02-21 Vorrichtung und Verfahren zur SISO Dekodierung

Publications (2)

Publication Number Publication Date
DE60007956D1 DE60007956D1 (de) 2004-03-04
DE60007956T2 true DE60007956T2 (de) 2004-07-15

Family

ID=8167913

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60007956T Expired - Fee Related DE60007956T2 (de) 2000-02-21 2000-02-21 Vorrichtung und Verfahren zur SISO Dekodierung

Country Status (3)

Country Link
US (1) US6950476B2 (de)
EP (1) EP1128560B1 (de)
DE (1) DE60007956T2 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1136661C (zh) * 2000-02-10 2004-01-28 摩托罗拉公司 用于卷积码的软输出解码方法及其装置
US7661059B2 (en) * 2001-08-06 2010-02-09 Analog Devices, Inc. High performance turbo and Viterbi channel decoding in digital signal processors
US6961921B2 (en) * 2001-09-06 2005-11-01 Interdigital Technology Corporation Pipeline architecture for maximum a posteriori (MAP) decoders
FI20020108A0 (fi) 2002-01-21 2002-01-21 Nokia Corp Menetelmõ ja laite polkumetriikoiden muodostamiseksi trelliksessõ
AU2003215670A1 (en) * 2002-03-27 2003-10-08 Siemens Aktiengesellschaft Method for decoding a data sequence that has been encoded with the help of a binary convolution code
AU2003247030A1 (en) * 2002-07-31 2004-02-23 Koninklijke Philips Electronics N.V. Dynamic detection of blocking artefacts
JP2005210238A (ja) * 2004-01-21 2005-08-04 Nec Corp ターボ復号装置及びその方法並びにその動作プログラム
CN1954503A (zh) * 2004-05-18 2007-04-25 皇家飞利浦电子股份有限公司 Turbo解码器输入重新排序
US20060206697A1 (en) * 2005-02-17 2006-09-14 Samsung Electronics Co., Ltd. System and method for trellis-based decoding
GB0504483D0 (en) * 2005-03-03 2005-04-13 Ttp Communications Ltd Trellis calculations
US7978793B2 (en) 2008-02-06 2011-07-12 Freescale Semiconductor, Inc. Method for generating soft decision signal from hard decision signal in a receiver system
CN103916141B (zh) * 2012-12-31 2017-04-05 华为技术有限公司 Turbo码译码方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6028899A (en) * 1995-10-24 2000-02-22 U.S. Philips Corporation Soft-output decoding transmission system with reduced memory requirement
US5933462A (en) * 1996-11-06 1999-08-03 Qualcomm Incorporated Soft decision output decoder for decoding convolutionally encoded codewords
US6477679B1 (en) * 2000-02-07 2002-11-05 Motorola, Inc. Methods for decoding data in digital communication systems
US6516437B1 (en) * 2000-03-07 2003-02-04 General Electric Company Turbo decoder control for use with a programmable interleaver, variable block length, and multiple code rates

Also Published As

Publication number Publication date
DE60007956D1 (de) 2004-03-04
US6950476B2 (en) 2005-09-27
US20010016932A1 (en) 2001-08-23
EP1128560A1 (de) 2001-08-29
EP1128560B1 (de) 2004-01-28

Similar Documents

Publication Publication Date Title
DE60037963T2 (de) Turbo-Dekodierung mit Soft-Output Viterbi Dekoder
DE60107527T2 (de) Einrichtung und Verfahren zum Anhalten einer iterativen Dekodierung in einem CDMA Mobilkommunikationssystem
DE60007956T2 (de) Vorrichtung und Verfahren zur SISO Dekodierung
DE60120723T2 (de) Iterationsabbruch für Turbodecodierer
DE69736881T2 (de) Parallel verketteter tail-biting-faltungskode und dekoder dafür
DE69925151T2 (de) Effiziente normalisierung vom trelliszustandsmetrischem wert
DE69936908T2 (de) Iterative dekodierung von produktkoden
DE102012100945A1 (de) Iterativer Decodierer
DE602004012417T2 (de) Dekodierungsvorrichtung und dekodierungsverfahren
WO2003071689A2 (de) Kombinierter ver- und entschachteler sowie turbo-decodierer mit kombiniertem ver- und entschachteler
DE3910739A1 (de) Verfahren zur verallgemeinerung des viterbi-algorithmus
DE112004002008B4 (de) Vereinheitlichter Viterbi/Turbo-Decoder für mobile Telekommunikationssysteme
DE102007035210A1 (de) Verfahren und Vorrichtung zur LDPC-Dekodierung mit gemeinsamer Hardwarenutzung und serieller Summe-Produkt-Architektur
EP0737389B1 (de) Übertragungssystem mit soft-output-dekodierung bei reduziertem speicherbedarf
DE112010003449B4 (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
DE60104338T2 (de) Vorrichtung und verfahren zur turbo decodierung mit signaturdatenvergleich als abbruchkriterium
DE10196688B3 (de) Ein Decodierer für eine trellis-basierte Kanalcodierung
DE60111974T2 (de) Abbruchkriterium für einen Turbodekoder
EP1269633B1 (de) Optimierter turbo-decodierer
DE602004013186T2 (de) Linear-approximation der max*-operation für log-map-decodierung
DE60006108T2 (de) Lineare Approximation des LOG-MAP Algorithmus für Turbodekodierung
DE69908629T2 (de) Hybrid verschachteler für turbo-kodierer
DE60118716T2 (de) Log-MAP Dekodierung
EP1130788A2 (de) Verfahren zum Speichern von Pfadmetriken in einem Viterbi-Decodierer
DE60116923T2 (de) Verbesserte Hochschnellheitsarchitektur &#34;maximal a posteriori&#34; (MAP) mit optimisierter Speichergrösse und Leistungsverbrauch

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: FREESCALE SEMICONDUCTOR, INC., AUSTIN, TEX., US

8339 Ceased/non-payment of the annual fee