JP2006519560A - マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置 - Google Patents

マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置 Download PDF

Info

Publication number
JP2006519560A
JP2006519560A JP2006503888A JP2006503888A JP2006519560A JP 2006519560 A JP2006519560 A JP 2006519560A JP 2006503888 A JP2006503888 A JP 2006503888A JP 2006503888 A JP2006503888 A JP 2006503888A JP 2006519560 A JP2006519560 A JP 2006519560A
Authority
JP
Japan
Prior art keywords
vector
reordering
ldpc
elements
processing
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
JP2006503888A
Other languages
English (en)
Other versions
JP4339886B2 (ja
Inventor
トム リチャードソン
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.)
Qualcomm Flarion Technologies Inc
Original Assignee
Flarion Technologies 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 Flarion Technologies Inc filed Critical Flarion Technologies Inc
Publication of JP2006519560A publication Critical patent/JP2006519560A/ja
Application granted granted Critical
Publication of JP4339886B2 publication Critical patent/JP4339886B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/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
    • H03M13/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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
    • H03M13/11Error 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 using multiple parity 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/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
    • H03M13/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • 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/27Coding, 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 using interleaving techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • 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/6356Error control coding in combination with rate matching by repetition or insertion of dummy data, i.e. rate reduction
    • 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

Landscapes

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

Abstract

本発明の方法および装置を用いて、同一のLDPC符号を使用する互いに異なる装置を互いに異なる並行処理度を使用して実施できる通信システムを実施することができる。新種のLDPC符号を使用することで、並行処理におけるそのような違いを可能にできる。因数分解置換器を本発明の様々な実施形態において使用することによって、エンコーダおよびデコーダにおける互いに異なる並行処理度のLDPC装置を、本明細書において説明するクラスのLDPC符号を使用して比較的容易に実施できる。因数分解置換器は、制御可能な多段階切り換え装置として実施されてもよく、当該装置は、メモリと、Z要素ベクトルプロセッサとの間で渡されるZ要素ベクトルに対して、無し、1つ、または複数の連続的な再順序付け動作を行い、各個々のベクトルの切り換えは、実施される符号のグラフ構造に従って制御される。

Description

本発明は、2003年2月26日出願の米国特許仮出願第60/450245号および2003年3月3日出願の米国特許仮出願第60/451555号の利益を主張するものであって、各出願は、参照により、本明細書に明示的に引用されるものとする。
電子通信および記憶システムのほとんどすべての形式は、誤り訂正符号を使用する。誤り訂正符号は、これらのシステムにおける情報伝達固有の信頼性の欠如を、データストリームに冗長性を導入して補償している。誤り訂正の数学的基礎は、シャノンによって確立された。シャノンは、通信システムにおける信号の歪みをランダムな処理としてモデル化するという、チャネルの数学的考え方を発展させた。シャノンの最も基本的な成果は、雑音のあるチャネル法則であり、チャネルを通じて情報を確実に送ることができる最大レートである容量を、チャネルについて規定する。容量に近いレートでの確実な送信には、誤り訂正符号の使用を要する。よって、誤り訂正符号はできるだけ容量に近づけつつ、充分な確実性を達成するように設計される。誤り訂正符号を実施する上での複雑性は、誤り訂正符号の実際の応用の際に作用するさらなる要因である。ターボ符号の発明とその後の再発見から生じた誤り訂正符号化システムにおけるの近年の進歩および低密度パリティチェック(LDPC)符号の開発により、シャノンの容量に非常に近づくことのできる実施可能な複雑さの符号化システムが提供されている。
LDPC符号は、しばしばタナーグラフと呼ばれる2部グラフによって、適切に表される。図1の図100を参照すると、1組のノードである変数ノード102が、符号語および他の組のノードである制約ノード106と対応しており、これは時にはチェックノードとも呼ばれ、符号を規定するパリティチェック制約の組と対応している。グラフ内のエッジ104は、変数ノードを制約ノードに結合する。変数ノードと制約ノードは、グラフ内のエッジで結合されていれば、隣接していると称される。典型的には、1対のノードがせいぜい1本のエッジによって接続されると仮定される。LDPC符号は、パリティチェック行列を使用して、同様に表すことができる。図2が示す例では、H202がパリティチェック行列で、もしHx=0である場合、図示のベクトルx204が符号語である。
各変数ノードには、1ビットの符号語が関連付けられる。ある場合には、これらのビットのいくつかはパンクチャまたは既知である場合がある。パンクチャされたビットは、ある符号構造によっては望ましいことがあり、リフティング(後記参照)においては、パンクチャされたビットおよび既知のビットの双方を用いて、リフティングの倍数でないブロック長を実現する。パンクチャされたビットおよび既知のビットは、送信された符号語から除外される。
変数ノードシーケンスと1対1に関連付けられたビットシーケンスは、もし、各制約ノードについて、(変数ノードとの関連を通じて)制約に近いビットが合計して0モジュロ2、すなわち、それらの偶数を含むだけで、符号の符号語である。
LDPC符号を復号化するのに使用されるデコーダおよび復号化アルゴリズムは、エッジに沿ったグラフ内でメッセージをやり取りすること、および入力メッセージに基づいてノードにおいて計算を行なってメッセージを更新することによって動作する。そのようなアルゴリズムは、一般的にメッセージパッシングアルゴリズムと称される。グラフ内の各変数ノードは、まず受信値と称されるソフトビットが与えられ、これは、例えば通信チャネルからの観察によって決定されるような関連ビットの値の推定値を示す。理想的には、別個のビットに対する推定値は統計的に互いに無関係である。実際には、この理想は破られうるし、またしばしば破られる。
ノード、すなわち変数ノードまたは制約ノードに付されたエッジの数は、ノードの度数と称される。規則的なグラフまたは符号については、すべての変数ノードが同一の度数、例えばjを有し、すべての制約ノードが同一の度数、例えばkを有する。この場合、符号は(j,k)規則符号と称する。これらは、元来ガラジャー(1961年)によって検討された符号である。「規則的な」符号とは対照的に、不規則的な符号は、異なる度数の制約ノードおよび/または異なる度数の変数ノードを有する。例えば、ある変数ノードは度数4であり、他のノードは度数3であり、また他のノードは度数2であってもよい。
不規則な符号を表すおよび/または実施するのは複雑な場合もあるが、不規則なLDPC符号は、規則的なLDPC符号に比較して、優れた誤り訂正/検出性能を提供できることがわかっている。
複数の並行処理要素を使用してLDPCエンコーダおよびデコーダを実施して、符号化または復号化動作の一部としてデータの組を処理することは、有用性および信頼性の両方を有することがわかっているものの、既知の実施において、デコーダにおいて使用される並行処理要素の数は、エンコーダにおいて使用される並行処理要素の数と通常同一である。よって、例えば基地局および/または衛星などの中央装置が複数の移動体装置とやり取りを行うなどの、複数の装置が存在するシステムにおいては、システム内の各装置のLDPCエンコーダおよびデコーダは、通常同一の並行処理度を有する。
中央装置が複数の移動体装置を処理する場合には、エンコーダ/デコーダ内のリアルタイムの動作および同一の並行処理度を仮定すると、中央装置は、処理される様々な移動体装置に関連した符号化/復号化に追従するために、個々の装置よりも何倍も速い速度で動作しなければならないだろう。
実施という観点からすると、システムにおける互いに異なるLDPCエンコーダ/デコーダの並行処理度は異なっていれば有利であろう。そのような取り組みにより、特定の装置におけるエンコーダおよび/またはデコーダの並行処理度が、当該装置によって送信/受信されるべきデータ量に合致できるようになるだろう。特定の装置における並行処理量を最小限にすることによって、実施コストを最小限にできる。
例えば大きなグラフ構造に対応する数多くのノードを含むような大きな符号を使用すると、例えばほんの少しだけのノードを含むようなより小さな符号よりも、誤り回復力の点で多くの利点がある。より小さなグラフを使用して大きなグラフ構造を実施するためには、様々な置換をより小さなグラフ構造のコピーに対して適用することがあり、当該コピーを互いに連結して、より大きなグラフ構造を生成できる。符号化/復号化動作において、そのような置換動作は、切り換え装置によって実施されてもよく、本明細書においては、要素に対して置換動作を適用する置換器と称する。当該要素は、例えば、符号化動作の場合には、符号化すべきビットであり、復号化動作の場合には、メッセージであって、これらはメモリと、LDPC処理を並行して行うベクトル処理装置との間を渡される。
残念ながら、多くのLDPC符号は、エンコーダおよびデコーダにおいて複数の互いに異なる並行処理度を許容するような実施には適していない。加えて、サイクリックシフトなどの単一の単純な置換動作は、より小さなグラフから生成された大きなグラフを使用して表すことができる多くのLDPC符号と共に用いるのに適した置換器を実施するには適しているものの、そのような単一の置換動作は、互いに異なる並行処理度を使用して実施可能なLDPC符号を実施するには適していない。
上記説明に鑑み、例えばLDPCグラフ構造のような同一の符号を使用する互いに異なる装置において互いに異なる並行処理度を許可するようなやり方でLDPCエンコーダ/デコーダを実施して、LDPC符号化および/またはLDPC復号化動作を行うための符号、方法、および装置に対する必要性があることが理解されるべきである。加えて、例えば、より小さなグラフから導出できる比較的大きな符号を装置が使用できるようにするだけでなく、互いに異なる装置において実施されるべき互いに異なる並行処理度を可能にする新規かつ改良された置換器を通じて、そのようなエンコーダ/デコーダを実施するための実際的な方法に対する必要性がある。
本発明の方法は、通信システムを実施するために用いることができ、同一のLDPC符号を使用する互いに異なる装置が、互いに異なる並行処理度を実施できる。高い誤り回復度を得るために、比較的長い符号語がしばしば使用される。例えば、本発明のLDPC符号を使用して符号化動作を行うことによって生成された単一の符号語は、総ビット数Tを含んでもよく、Tは数百ビットまたは数千ビットでさえあってもよい。本発明を説明する目的で、符号化すべきビットおよび/または受信された符号語に対応するビットは、LZ要素ベクトルに配列されてもよいことが理解されるべきである。Zは、1より大きい正の整数である。各Z要素ベクトルは、Z要素を含み、メモリから読み出されてもよい。メモリから読み出されたベクトルは、その後、Z処理部を使用して並行的に処理されうる。特定のLDPC符号(グラフ構造)を使用して符号語を符号化するエンコーダにおいて、同一のLDPC符号を実施するデコーダにおいて使用するのと同数のZ処理要素を並行的に用いる既存のシステムとは対照的に、本発明は、同一の符号を用いるエンコーダおよびデコーダにおける互いに異なる並行処理度を許容する。ある実施形態においては、特定の符号を使用する装置におけるエンコーダは、同一の符号を実施するデコーダにおいて使用されるのとは異なる数の並行処理部を使用して実施される。符号化は、通常、復号化よりもプロセッサに集中しておらず、よって、ある実施形態においては、単一の装置内において、並行的に動作する処理要素が通常少ないエンコーダにおけるのとは異なる数の処理要素を、デコーダにおいては並行的に使用される。
システム内において、互いに異なる装置が、互いに異なる量のデータをリアルタイムで符号化しなければならない場合がある。基地局が4つの無線端末を処理する場合を考える。各無線端末が同一の量のデータを送受信すると仮定すると、基地局は、いずれの無線端末よりも4倍のデータを符号化および復号化しなければならないだろう。ある実施形態においては、複数のノードを処理する基地局または衛星は、基地局または衛星によって処理される個々の無線端末よりも多くの処理部を並行して使用して実施される。本発明に従って実施されるいくつかのシステムでは、システム内の同一の符号を用いる互いに異なる無線端末は、各装置が符号化および復号化しなければならないであろう互いに異なるデータ量を反映して、異なる数の並行処理要素で実施される。以下に説明する新規なLDPC符号を使用すれば、並行処理におけるそのような違いが可能となる。本発明の様々な実施形態における因数分解置換器を使用することにより、エンコーダおよびデコーダにおいて互いに異なる並行処理度を有するLDPC装置を、本明細書において説明する種類のLDPC符号における符号を使用して比較的容易に実施できる。
図6は、通信システム例600を示し、基地局602と、第1の無線端末632と、第2の無線端末662とを含む。第1、第2の無線端末632、662は、基地局602と無線リンク630、660を介して通信する。装置602、632、662は、それぞれ、本発明に従って実施されるエンコーダ604、634、664と、デコーダ606、636、666を含む。各装置のエンコーダおよびデコーダは、無線送受信器(送信器/受信器)608、638、668に結合されて、それを通じて、装置は互いに通信する。装置602、632、662は、それぞれ、CPU613、643、673と、メモリに記憶された制御ルーチンの組615、645、675とを含む。制御ルーチンは、CPU613、643、673によって実行されると、装置を制御して、様々な通信動作を行う。ある実施形態においては、ルーチン615、645、675は、本発明に係る1つまたはそれ以上の符号を使用して、因数分解置換動作を含む符号化動作および/または復号化動作を行うエンコーダルーチンおよび/またはデコーダルーチンを含む。図6に示す特定の例において、様々な符号化および復号化動作がハードウェアにおいて実施される。本発明の新規のLPDC符号化および復号化方法によれば、同一の一般的な構造を有する装置を、符号化または復号化動作のいずれかに用いることができる。基地局エンコーダ604およびデコーダ606の場合には、これらの装置の基本構成は、因数分解置換器612、622を含み、これらはそれぞれ、要素のベクトルを記憶するために使用されるメモリ610、620に接続されて使用される。当該ベクトルは、並行LDPC処理モジュール614、624によって処理されることになっており、当該モジュールは、パリティチェック動作を並行的に行う数多くの処理要素(616、618)(624、628)を含む。並行LDPC処理モジュール614は、メモリ610から読み出されるであろうベクトルの各要素について1つの処理要素を含む。したがって、Z個の要素ベクトル(Z個の要素を有するベクトル)を処理する場合には、モジュール614は、Z個の処理要素616、618を含む。エンコーダ604の場合には、Z=Meである。
エンコーダモジュール614における処理要素数Meは、デコーダ処理モジュール624における処理要素数Mdと異なっていてもよい。言い換えれば、エンコーダおよびデコーダは、たとえ同一の符号を実施しても、異なる数のZ要素を有するベクトル、したがって異なる並行処理度を使用してもよい。エンコーダ604は、エンコーダによって読み出しかつ処理されるベクトルが単一ビット要素、例えば符号化すべき情報値を通常含むという点で、デコーダ606と異なる。メモリに記憶されて処理モジュール624に渡されるベクトルのデコーダ要素の場合には、復号化されている受信符号語の部分に対応するマルチビット、例えばメッセージをそれぞれ含む要素を通常含む。
エンコーダ604およびデコーダ606は、処理要素(616、618)(626、628)によって実行される処理動作において異なる。エンコーダ604の場合は、各プロセッサは、通常、記憶された値で論理XORを行い、その後、記憶された値をXOR動作の結果に置き換える。よって、処理要素616、618は、XOR回路と、アキュムレータとして動作する記憶要素とを使用して実施してもよい。図12は、XOR回路と例えばアキュムレータなどの記憶装置とを含む処理要素を示し、本発明に係る並行LDPCプロセッサモジュールにおいて使用できる。
符号(グラフ構造)によって決定された処理が実施される点で、エンコーダのプロセッサ616、618に保持される結果をメモリ610に記憶させる。処理要素626、628は、変数ノード処理動作および/またはチェックノード処理動作を行う。これらの動作はしばしばXORおよびアキュムレイト動作を要するものの、これらは、各処理要素626、628によって処理されているマルチビットメッセージに伴う補足的な処理である傾向にあり、復号化動作を符号化動作よりも複雑なものにしている。
参照により本明細書に引用された特許出願のいくつかは、並行LDPC処理モジュール要素616、618、626、628を実施可能な様々な方策を詳細に説明している。
本発明によれば、因数分解置換器612、622は、置換器612、622によって処理される少なくともいくつかのベクトルに対して、単一置換動作(変化なし)または2つの置換動作の積である置換動作を行う。よって、因数分解置換器は、ベクトル内の要素を再順序付けせずにベクトルを渡してもよく、または、例えば2つの連続する置換動作を再順序付けされた要素のベクトルを出力として行うことによって、ベクトル内の要素を再順序付けしてもよい。前記再順序付けは、2つの置換動作から成り立っている。置換動作の例を、添付の図面に関連して詳細に説明する。
ある実施形態においては、因数分解置換が、マルチレベルの切り換え動作として行われる。第1のレベルの切り換えにおいて、例えばn個の同一の大きさの部分、すなわち要素のサブセットをベクトル内で第1のサイクリックシフトを使用してシフトすることによって、処理されているベクトル内で要素が再順序付けされる。処理されたベクトルの要素は、その後、n個の同一の大きさの部分内ではあるがその間ではない要素を置換する第2の置換によってさらに置換される。同一の第2の置換が、n個の同一の大きさの部分に対して行われて、各部分の要素位置が同じく変化する。同等の説明は、以下の通りである。Z個の要素のベクトルは、第1の区分けを使用してZ/n個の同一の大きさの部分に区分けされ、また、第2の区分けを使用して、n個の同一の大きさの部分に区分けされる。これは、第1の区分けにおけるZ/n個の同一の大きさの各部分が、第2の区分けにおけるn個の各部分と共有する正確に1つの要素を含むようにして行われる。その後、上記の第1の置換によって、第1の区分けによって規定されたZ/n個の部分内の要素をそれぞれ等しく再順序付けするが、第1の区分けは変更しない。第2の置換によって、第2の区分けによって規定されたn個の部分内の要素をそれぞれ等しく再順序付けするが、第2の区分けは変更しない。
本発明のある実施形態においては、因数分解置換器612は、サイクリックシフトとして知られる2つのサイクリック置換の積を行う。単一のサイクリックシフトでは因数分解可能ではないが、2つのサイクリックシフトの積は因数分解可能である。なぜならば、積を生じさせる2つのサイクリックシフトに因数分解可能だからである。具体的な例を与えるために、Z=4とする。サイクリックシフトにおいては、ベクトル(v,v,v,v)は、(v0+k,v1+k,v2+k,v3+k)のように再順序付けされ、kは[0,3]上の整数であり、加算はモジュロ4とする。大きさ2の2つのサイクリックシフトの積では、ベクトル(v,v,v,v)は、(v0+2k+j,v1+2k−j,v2+2k+j,v3+2k−j)のように再順序付けされ、kは[0,1]における整数であり、jは[0,1]における整数であり、すべての演算はモジュロ4とする。2つのサイクリックシフトの積の場合は、第1の区分けは{v,v}{v,v}であり、第2の区分けは{v,v}{v,v}である。第1の置換は、jを選択することによって決定され、第2の置換は、kを選択することによって決定される。以下に説明するように、実行される特定の再順序付けは、事実上グラフにおける様々なノードを結合させるために再順序付けを用いて実施されている符号の機能であって、処理されるべきベクトル要素を、実施されている符号を規定するグラフにおける特定のノードに対応する処理要素に対して向けることによって行われる。
無線端末のエンコーダおよびデコーダは、それぞれ、基地局エンコーダ604およびデコーダ606に関して説明したものと同様であるが、互いに異なる並行処理を実施してもよい。エンコーダ634、664ならびにデコーダ636、666は、それぞれ、メモリ640、670、650、680を含み、それぞれは、因数分解置換器642、672、652、682によって並行LDPC処理モジュール644、674、654、684に対して結合されている。
本発明の方法および装置は、様々な他のLDPC符号化の特許および出願との関連でよりよく理解することができる。本明細書に含まれる出願に記載されている、例えばLDPC動作を行う処理要素などの様々な要素を用いて、システム例において説明されている並行ベクトルプロセッサを実施してもよい。また、本明細書に含まれる様々な出願には、置換を行うために用いるメモリアクセスおよび切り換え動作を、LDPC符号(グラフ)情報を提供する記憶された情報に基づいてどのように実施できるかについて説明されている。説明されている符号および置換動作は、本願において説明されるものとは異なるものの、メモリアクセスおよび切り換え制御動作は、記憶されたLPDC符号情報に基づいて、同一または同様のやり方で制御可能である。したがって、そのような制御手法を本明細書で詳細に説明する。加えて、そのような処理要素、例えばとりわけ、変数ノードおよびチェックノード処理要素は、引用された出願に詳細に説明されており、その実施および機能は、本願ではごく簡単に説明する。
以下の(4件の)関連出願は、参照により明示的に引用され、本願の一部とみなすものとする。2001年10月10日出願の米国特許出願第09/975331号であって、2003年10月14日に米国特許第6633856号として発行された「LDPC符号を復号化するための方法および装置(METHOD AND APPARATUS FOR DECODING LDPC CODES)」、2002年4月4日出願の米国特許出願第10/117264号であって、2003年1月30日に米国特許出願公開第2003−0023917号として公開された「パリティチェックデコーダにおいて使用されるノードプロセッサ(NODE PROCESSORS FOR USE IN PARITY CHECK DECODERS)」、2002年12月18日出願の国際出願PCT/US02/40573号の「LDPC符号を符号化するための方法および装置(METHODS AND APPARATUS FOR ENCODING LDPC CODES)」、および2001年6月15日出願の米国特許仮出願第60/298480号の「LDPC符号の符号化および復号化を行うための方法および装置(METHODS AND APPARATUS FOR PERFORMING LDPC CODE ENCODING AND DECODING)」。
図7および図8は、使用されて本発明に係るLDPC動作を実施可能なシステム例700、800を示し、例えば受信された符号語(復号化動作を示唆)、または符号語に生成されるべき情報(符号化動作を示唆)などの処理すべきデータのようなものによって、符号化または復号化LDPC動作のいずれかを行う。
システム700、800は、それぞれ、メモリ702、802と、アドレスジェネレータ716、816と、アドレスジェネレータ兼置換器コントローラ718、818と、記憶されたLDPC符号(グラフ)情報720、820と、Z要素並行LDPC処理モジュール710、810と、因数分解置換器706、806とを含む。処理されるべき情報は、メモリ702、802に、処理用のメモリ入力を介して記憶される。符号化の場合には、処理が終了すると、結果がメモリ702、802から読み出される。処理が進行中に、アドレスジェネレータ兼置換器コントローラ718、818の制御の下、Z要素ベクトルは、メモリから読み出しおよびメモリに対して書き込みが行う。アドレスジェネレータ兼置換器コントローラ718、818とは、LDPC符号(グラフ)情報720、820と、実施された並行処理度についての情報、例えば並行処理される要素の数Zとを使用して、アドレスジェネレータ716、816を制御して、読み出しおよび/または書き込み動作に使用されるアドレスを生成し、その間に、因数分解置換器706、806を制御して、実施されている符号に対応する特定の実施されたグラフ構造を達成するのに使用される切り換え動作、ベクトル要素の再順序付けを行う。また、アドレスジェネレータ兼置換器コントローラ718、818は、制御信号を生成し、この制御信号は、アドレスジェネレータ716、718を通ってメモリ702、802へ渡されて、任意の所定の時間において読み出しまたは書き込みが行われるかを示す。よって、アドレスジェネレータ兼置換器コントローラ718、818は、因数分解置換器706、806によって行われる切り換えだけでなく、処理すべきベクトルがメモリ702、802から読み出された場合、およびモジュール710、810によって生成された処理結果がメモリ702、802に書き込まれた場合にも制御を行う。
図7および図8の実施形態間の主要な相違点は、システム700における因数分解置換器706が入力ベクトル704に対して再順序付け動作を行って、並行LDPC処理モジュール710に含まれる処理要素712、714によってベクトル要素の処理が行われる前に、再順序付けされたベクトル708を生成することにある。処理の結果である、例えばZ要素ベクトルは、メモリ702に記憶される。図8の実施形態の場合は、因数分解置換器806による再順序付けが、処理要素812、814によって生成されたZ要素ベクトル804に対して行われる。再順序付けがモジュール710、810による処理の前または後のいずれかに行われるかは、主に設計上の選択の問題である。
本発明の様々な実施形態において使用される新規の符号と、そのようなLDPC符号の使用から生じる新規の符号語とを理解するために、「リフティング」について説明する。一般的に、LDPC符号の「リフティング」またはベクトル化を以下に説明する。図1および図2のような、小さなLDPC符号のタナーグラフまたはパリティチェック行列表現から始める。まず、リフティングをパリティチェック行列の観点から説明する。Zリフティングにおいて、パリティチェック行列の各入力を、Z×Z行列に置換する。Hへの0の入力は、0のZ×Z行列となり、Hへの1は、置換行列となり、通常ある群に属する。図5は、行列502を示し、これは、Z=3であって使用された置換がサイクリック置換である場合の図2の行列のリフトされたものである。リフティングは、以下のように、タナーグラフ上で説明される。タナーグラフにおける各ノードは、Z個の等価ノードによって置換され、1束のノードを形成し、各エッジは、Z個のエッジの束となる。束の各要素に、0,...,Z−1における指標を与えると仮定する。Z個のエッジの束は、変数ノードの束を制約ノードの束に結合する。結合が、同様の指標のノードとエッジとを結合するようになされている場合には、構成は、実質上、元のグラフのZ個の並行コピーである。そのような構成を図3の図300に示し、これは、図1および図2の基本例に対応する。図3のグラフに対応するパリティチェック行列を、図4の図400に示す。例えば制約側の結合が置換される場合は、すなわち、指標jの付いたエッジが指標π(j)の付いた制約ノードに結合される場合であって、πは0,...,Z−1に対する例えばサイクリック置換などの置換を表す場合は、結果生じるグラフを完全に結合されたものにすることができ、リフトされたグラフとして見られる。なお、投影されたグラフは、ノードの対間に複数のエッジを有してもよいが、リフトされたグラフはその必要はない。もし例えば、複数のエッジにおけるエッジに関連する置換がすべて別個のものである場合には、リフトされたグラフは、対応する複数のエッジを有しないだろう。
ベクトル化された(またはリフトされた)LDPC符号を支援するアーキテクチャは、参照により引用されている米国特許出願第09/975331号の「LDPC符号を復号化するための方法および装置(METHOD AND APPARATUS FOR DECODING LDPC CODES)」に説明されている。このアーキテクチャは、大きな種類のLDPC型の符号を効率的かつ高速に復号化することを支援している。支援されている符号は、リフトまたはベクトル化されたLDPC符号である。米国特許出願第09/975331号において、サイクリック置換は、使用するのが簡単で望ましい種類の置換であることが指摘された。これらの置換を使用すると、群構造が符号に生じ、並行処理がリフティングの大きさの規模、例えばサイクリック構造程度となる、効率的な並行符号化および復号化となる。
単に1つの大きさではなく、2つまたはそれ以上の大きさのリフティングとして見ることができる所定の符号を有して、それによって、同一の符号を使用するエンコーダ/デコーダにおける互いに異なる並行処理度の可能性を促進することが望ましい場合があることがわかった。本発明のこの理解および結果生じた符号構造によって、同一のLDPC符号を使用する互いに異なる並行処理度を有しうる、効率的なエンコーダおよび/またはデコーダを実施できる。本発明の符号構造を使用するかまたはそれを用いて作成されたエンコーダ、デコーダ、符号語、および符号化されたデータも、本発明の特徴であると考えられる。
本発明を説明するために、以下の例を考える。デジタル信号プロセッサ(DSP)内で符号化を行いたいので、16倍の並行処理(リフティング)が望ましいが、幅4の並行処理という小さなデコーダにしたい。16倍の並行処理のDSPは、4つの移動体装置であって、各移動体装置が、基地局のエンコーダが動作するデータ速度の約4分の1でデータを受信する移動体装置を処理する基地局において使用されてもよい。そのようなシステムにおける各移動体装置は、エンコーダと同一の符号を使用してもよいが、本発明にしたがって、移動体装置は同一のデータ量を処理するのに約4倍の時間がかかるという事実を反映して幅4の並行処理のデコーダとともに実施されてなければならない。例えばエンコーダの約4分の1の速度で動作する第1および第2の移動体と、エンコーダの約2分の1のデータ速度で動作する第3の移動体という3つの移動体を基地局が処理すると仮定すると、最初の2つの移動体において4倍の並行処理を使用するデコーダを使用してもよく、エンコーダの2分の1の速度の復号化を支援する第3の移動体には、8倍の並行処理を使用してもよい。
互いに異なるエンコーダおよびデコーダ並行処理度を支援する本発明の方法は、幅広い他の応用においても有用である。別の例は、以下の通りである。大きな並行処理を必要とする非常に高速のアプリケーションのための符号を設計したいとする。ASICでの実施に先立って、当該符号を浮動点ゲートアレイ(FPGA)上でシミュレートしたいとする。FPGAは、アプリケーションに必要とされる並行処理を支援していないので、最終のアプリケーションで意図された正確な符号をシミュレートできない。第1の場合、4リフティングおよび16リフティングとしてみることができる符号を有することが望ましい。第2の場合、同時に64リフティングおよび256リフティングである符号が欲しいことがある。第3の場合は、ハードウェアエンコーダが必要な高速アプリケーションの場合である。ハードウェアエンコーダは、一般的にデコーダよりも高速に動作するので、エンコーダにおける並行処理(ゲートカウント)を減少させて、より遅い速度で動作させて、デコーダの速度により近く一致させることができればよい。第4の場合は、互いに異なるスループット、例えば互いに異なる速度での実施を要求する標準化された符号の場合である。第5の場合は、ソフトウェアによる実施であり、符号の構造を、典型的なマイクロプロセッサにおける固有の並行処理に一致させることができる。本発明は、サイクリック置換に必要な置換複雑度に近い置換複雑度を維持しつつ、上記を可能にする。さらに、符号の記述に関して複雑度の節減の可能性もある。(積に他のファクタを持たせることにより)符号が実施よりも多くの並行処理を有する場合には、当該余分な構造を使用して、符号のよりコンパクトな記述を生じさせることができる。これにより、簡素なメッセージパッシング制御が可能となる。そのようなマルチレベルまたは積のリフティングの利益が実現できるのは、主にベクトル−LDPCアーキテクチャの場合である。
出願人は、本発明の様々な実施形態において使用される、単一の符号についての互いに異なる並行処理度を支援するLDPC符号構造は、入手可能なLDPCの文献に示唆されていないと考える。本発明の様々な実施形態において使用される種類のLDPC符号は、特に、本発明の基礎のうちの1つを形成するV−LDPC(ベクトル−LDPC)アーキテクチャの場合に、他のLDPC符号よりも実施利益を提供するというのが、発明者の理解である。
一致リフティング
積のリフティングを説明する前に、その説明を容易にするため、追加の数学的構造を有する一般的な種類のリフティングをまず説明する。なお、サイクリック群によるリフティングは、この類に当てはまる。
リフティングに用いられる群における次数(群における要素の数)がリフティングの大きさZと同一である場合、有利に活用できる数学的構造が生じる。そのようなリフティングを、一致リフティングと呼ぶ。一致リフティングでは、リフティングに使用されるZ×Zの置換行列のGF[2]に対する和と、長さZのバイナリベクトルは、環の要素で同時に識別可能である。環の要素は、長さZのバイナリベクトルとして都合よく表すことができ、加算は、ビット単位のモジュロ2とする加算であり、乗算は群構造から生じる。その結果、投影されたパリティチェック行列の各要素を環の要素に置換すると、リフトされたパリティチェック行列を形成する。各ビットを環の要素で置換すると、投影されたグラフのバイナリ符号語をリフトする。符号全体はまだバイナリだが、環に対してZ倍小さい符号として表される。完全にリフトされたパリティチェック行列上のバイナリ行列演算は、環での演算として模倣することができる。これにより、エンコーダの抽出を劇的に簡素化する。さらに、数学的構造は、符号化が環内で行われてもよいことを保証する。
今度は、一致するリフティングの数学的構造を提示する。
要素g,...gを有する次数Zの群g仮定し、従来、gは恒等元である。群は、置換p,...,pを使用して、g=gの場合にのみπ(k)=jを設定することによって表すことができる。対応して、群をZ×Zの順序行列G,...,Gを使用して表すことができ、式中、k=1,...,Zについて
Figure 2006519560

=1であり、すべての他の入力は0である。
そのような群を仮定して、要素が長さZのバイナリベクトルである環を規定する。バイナリベクトルu=(u,...,u)は、Gのサブセットで識別でき、換言すれば、形式的な和
Figure 2006519560

で識別できる。ここで、u=1は、gがサブセットの要素であることを示し、u=0は、gがサブセットの要素でないことを示す。gのGに対する対応関係によって、合計を行列合計
Figure 2006519560

とみなすことができ、式中、加算はモジュロ2とする、すなわちGF[2]に対する。式中、それゆえに、M(u)は、GF[2]に対する行列である。注意すべきなのは、この合計は可逆的であり、すなわち、
Figure 2006519560

はuを一意に決定する。
2つのバイナリベクトルuおよびvを仮定すると、それらの積であるw:=uvは、M(w)=M(u)M(v)によって一意に与えられる。さらに注意したいのは、vをGF[2]に対する列ベクトルとすれば、w=M(u)vである。
バイナリベクトルについての乗算を規定したので、Rによって表す環を規定したことになる。単項要素Rは、バイナリベクトルの表現が正確に1つの1と、Z−1個の0とを有する要素である。
図5に示すリフティングを再び考える。今、図の右側の行列は、R内の要素の行列とみなされ、単項要素Rは、大きさK(本例では=3)のサイクリック置換によって導出された環である。符号は、いまだパリティチェック式Hx=0に対する解の組であるが、要素Hと、要素xとは、Rに属する。よって、符号語は、Rに対して長さKのベクトルである。各要素は、長さZのバイナリベクトルとみなされてもよいので、符号語は、長さZKのバイナリベクトルである。J×Kのパリティチェック行列は、環の要素を含むが、大きさZJ×ZKのバイナリ行列とみなしてもよい。
一致したリフトされた符号の符号語を認識
符号語x=(x,...,x)は、もし各ベクトルxu=(xu,...,xu)が各要素u∈Rについての符号語である場合のみ、Rに対する符号語である。この条件は、一致リフティングの符号語を特徴付けるものである。よって、積のリフティング(下記参照)に基づくLDPCシステムは、適切には区切りを設けた符号が要素毎に積の環の要素で乗算されても変化しないという事実によって識別されうる。
一致リフティングの符号化
一致リフティングの符号化の形式により、LDPCなどの符号を符号化することについての我々の理解を簡単なものにし、簡単な符号化処理に繋がることができる。
一般的なLDPC符号についてのエンコーダを構築するには、第1のステップは、行および列の置換Hを見つけ、再順序付けまでは、
[数1]
Figure 2006519560

と書けるようにし、式中、Tは、テキスト上部3角、Eはg×t、Aは
t×g、Cはg×g、Bはt×(n−m)、Dはg×(n−m)、およびt+g=mである。さらに、g×g行列φ:=ET−1A+Cは可逆性がある(ここでは、Hは、完全行ランクであるとする)。
符号化は以下のように進む。情報ビットをxとすると、
[T A B][y 0 x=0
を、yについて後方置換を用いて解く。次に、
φxP2=[E C D][y 0 x
をxP2について解く。このステップでは、行列φ−1を事前に計算する。最後に、
[T A B][xP1P2=0
をxp1について後方置換を用いて解く。ベクトル[xP1P2は、符号語を構成する。
リフトされたグラフを符号化するという考え方は、投影されたパリティチェック行列に対して近似上部3角分割を行うことであるが、その後、Rに対する行列演算を解釈することによって符号化を行う。実際の設定では、リフティングの大きさが充分に大きければ、性能上認識可能な損失なくg=1を実現できる。この場合、行列ET−1A+Cおよびその逆は、要素Rである。ET−1A+Cの可逆性を、リフティングにおいて、すなわち、Rに対してチェックする必要がある。これは、リフトされたバイナリ行列としての可逆性に一致するが、必ずしも投影された行列の可逆性とは一致しない。複数のエッジのある対角行列Tを形成する場合、対角入力は、複数のエッジでないことが望ましく、リフティングにおいて単項要素を生じさせる。
環の単項要素(ベクトル表現において唯一1つの零でない入力を伴う要素)による環における乗算は、ハードウェアにおいてスイッチとして直接実施できる。米国特許出願第09/975331号および米国特許仮出願第60/404810号に説明されているスイッチルーティング機構は、単項乗算を実施するのに使用できる機構の例である。単項でない要素による乗算は、スイッチを多様に使用して、結果を(環において)加算する。これは、任意の要素Rの乗算を単項乗算の和に分解することに対応する。このような取り組みは、本発明の様々な実施形態において使用される因数分解置換を可能にする。
積のリフティング
積のリフティングは、リフティングのために積の群を選択することによって実現される。積のリフティングは、多次元のリフティングとして同様の意味合いで見ることができる。対応して、リフティングが合致すると仮定すると、環Rは積の環である。大きさが64のリフティングが望ましい場合を考える。予想された符号が大きさP、すなわち、P個の変数ノードを有すると仮定する。リフティングのために、大きさ64のサイクリック群を選択できる。代わりのものとしては、本発明によれば、大きさ16のサイクリック群と大きさ4のサイクリック群との積であろう。この群は、以下のように表すことができる。対(a,b)を用いた索引付けL=0,...,63であって、a=0,...,15であり、b=0,...,3であり、可逆マップL=4a+bの場合を考える。この積の群の要素は、対(c,d)であって、c=0,...,15であり、d=0,...,3である。(c,d)の(a,b)に対して行うことは、対(a,b)を(a+c mod 16,d+b mod 4)に置換することである。また、この群は、次数64を有する。しかしながら、結果生じたリフトされたグラフは、16による大きさ4Pの符号、4による大きさ16Pの符号、または64による大きさPの符号のリフティングとみなされうる。よって、並行処理度4、16、または64の実施は、本発明に従ってすべて同時にサポートされる。これは、並行処理度64の高速復号化が必要な場合に、実施上望ましいであろうが、より単純である符号化は、デジタル信号プロセッサ上で行われることになっており、Z=16の表示がより便利である。積のリフティングによって提供される利点は、エンコーダとハードウェアとによる実施の場合に実現される。積のリフティングを使用することによって加算される価値が、本発明の特徴である。積ではなく、群毎、例えばサイクリック群によるリフティングにより、任意の大きさのリフティングが可能となるが、積のリフティングの柔軟性を与えるものではない。
本発明が向けられている符号の組は、リフティング群gが積の群である場合に向けられており、その場合に、結果生じる環は積の環である。本願の構成における並行処理は、環上での並行処理となる。積の環がある場合には、部分環があり、これらの環を並行化できるので、所定の符号についての並行処理の選択ができる。
本明細書に現れる事例は、すでに、gがサイクリック群または有限フィールドの乗法群である場合である。これらの場合は、積の群ではないので、本願の構成は予期されていない。さらに、その利点は、開示したような並行処理アーキテクチャに照らしてのみ明らかである。
使用例
今度は、本発明の符号と上述の積のリフティングの特徴とによって可能となる因数分解置換器706の使用について、図9を参照して説明する。図9は、システム700の一部を示し、メモリ702と、因数分解置換器706と、並行Z要素LDPCプロセッサモジュール710とを含む。メモリ702は、LZ要素ベクトルを含む。各Z要素ベクトルは、1からZまでの要素を含む。本発明の説明の目的で、メモリ702内の各Z要素ベクトルの上部はAとし、下部はBとした。符号化動作の場合に、各要素Zは、通常、1ビットであり、例えば符号化すべき情報のビットであろう。受信された符号語は、総計Tビットを含んでもよく、T/L=Zである。符号語における実際のビット数は増加されるか、または例えばパンクチャされた符号化の場合には、あるビットを落として、T/Lおよび整数値とすることができる。復号化動作の場合には、各Z要素ベクトルの要素は、通常、マルチビットのメッセージであろう。
ステップ903において、コントローラ718の指示の下に動作するアドレスジェネレータによって決定されたシーケンスで、Z要素ベクトルがメモリ702から読み出されて、情報720によって識別された符号を実施する。ステップ904は、読み出されたZ要素のベクトル704のうちの1つを表す。このZ要素のベクトル704はコントローラ718の指示の下に置換動作(ベクトル要素の再順序付け)を行う因数分解置換器706の入力に与えられる。因数分解置換器706は、2段の切り換え装置、第1および第2の切り換え装置902、904として実施され、本明細書において同じく参照符号902、904を使用して参照される第1および第2の切り換えステップを行う。第1段階は、完全ベクトル704に対して動作する第1の切り換え回路902を含む。本例において、スイッチ902は、第1のサイクリック循環Rを行い、それにより、要素入力ベクトル704がS1=Z/n(ここで、この例では、n=2)またはS1=0だけ、ベクトル704とともに位置がシフトされる。よって、S1=Z/2の場合か、そうでなければ、S1=0の場合に、部分AおよびBが入れ替わる。図9、図10、および図11の例では、n=2である。矢印911は、第1の置換(再順序付け動作)の結果を整数値nで均等部分に割るステップを表し、Z>n>1であって、Rによって変化しない。第1の均等部分913と、第2の均等部分906は、ステップ907、909において同一の置換Qを受ける。この第2の置換動作により、各均等部分904、906における要素が、当該部分において再順序付けされる。再順序付けRおよびQは、単位再順序付け(例えば、0またはZのシフト)であってもよく、または要素の順序が実際に変更されることとなる何らかの量のシフトであってもよい。第1の再順序付け動作を第2の再順序付けQの適用と組み合わせると、因数分解可能な入力ベクトルZに対する置換を生じさせる。Qがn個の等しい大きさの部分に適用される場合の置換動作Rおよび置換動作Qの順序は、どうあってもよい。なぜなら、再順序付け動作の組み合わせは、動作が行われる順番に関係なく、同一の結果を生じさせるであろうからである。
各部分913、906に対してQを適用したことによって生じた再順序付けされたZ要素ベクトルの各要素は、並行Z要素LDPCプロセッサモジュール710の互いに異なる対応する処理要素712、711、713または714に与えられる。Z要素ベクトルを読み出す順番を決定するために使用されたアドレス化の制御と組み合わせて因数分解置換器706の動作を行った結果、符号情報720によって識別された符号は、比較的単純なやり方で実施できる。
因数分解置換器706を使用することにより、単一の単純なサイクリックシフトの使用では支援できなかった符号構造が支援される。上述のように、そのような符号は、同一の符号について互いに異なるデコーダおよびエンコーダ並行処理度を許容するという利点を有する。
図10は、置換器706によって行われる第1の置換動作が、単位(I)置換またはベクトル704の上部分Aおよび下部分Bのフリップ(F)のいずれかでありうる場合の例を示す。矢印1002は、Z要素ベクトル704を読み出して、それを置換器706によって処理するステップを表す。ステップ切り換えステップ902において、第1の置換が単位置換である場合には、第1の処理パス1004が続く。なお、これは、ベクトル904はベクトル704と同じとなることに留意されたい。ステップ1007は、ベクトル904の上のA部分に対する置換Qの適用を表し、ステップ1009は、ベクトル904の下のB部分に対するQ置換の適用を表す。
ステップ902において、Rがフリップ動作であった場合には、処理はパス1005に沿って進み、Z要素ベクトル906は、Bを上部に含み、Aを下部に含むこととなる。その後、第2の置換Qが、ステップ1007’および1009’において各部分に対して適用される。
図11は、因数分解置換器706を使用して、どのようにZ要素ベクトル704に対して2つの連続置換動作RおよびQを行うかについてのより詳細な別の例である。図11の例において、メモリ702から読み出されたZ要素ベクトル704は、位置1にある要素Y 1102を有する第1のz/2部分A1101を含む。また、ベクトル704は、ベクトル位置Z/2+1における部分Bの最初に位置する要素X 1106を含む第2の部分B 1105を含む。ステップ902は、第1の置換Rをベクトル704に適用してZ要素ベクトル704’を生成することを表わす。この例において、Rは、ベクトル704に対して適用されるフリップ、すなわち、Z/2による第1のサイクリックシフトである。この第1のサイクリック循環により、部分B 1105は、Z要素ベクトル704’の上部にシフトされ、部分A 1101は、Z要素ベクトル704’の下部にシフトされる。これは、今では要素X 1106が第1の位置にあり、要素Y1102が(Z/2+1)の位置にあるように、ベクトルの要素の順番を変更するという結果を有する。中間ベクトル704のn(この例では、n=2)個の均等の大きさの部分である、部分1105および1101には、Z要素ベクトル704’が第2の置換の適用を受けるために分割して入れられており、その後、これらの部分は、ステップ904および906において、個別に第2の置換Qを受ける。この例において、Qは1つの位置のサイクリックシフトである。これにより、要素X 1106は、Z要素出力ベクトル704’’’の第1の部分1105’内のZ/2の位置にシフトされることとなる。また、要素Y 1102は、ベクトル704’’の最後の要素かつ第2の部分1101’’の最後の要素となるZ位置にシフトされることとなる。なお、因数分解置換器706によって行われるマルチステップ再順序付け処理は、Z要素入力ベクトル704に対する単一のサイクリックシフトの使用では可能ではない再順序付けとなる。この新規の再順序付けの取り組みにより、単一のサイクリックシフトを行うだけが可能であった置換器を使用するのでは実施ができなかった符号を実施することができるようになる。
置換されたベクトル704’’の各第1〜Z要素は、モジュール710の互いに異なる第1〜Zの並行処理要素712、711、713、714のうちの1つに与えられる。並行処理要素によって生成された処理の結果は、メモリ702に書き戻されてもよく、ある実施形態においてはそうなっており、または、代わりに、例えばコントローラ718の制御の下、さらなる処理のために他のメモリに書き込むこともできる。
706の動作を詳細に説明してきたが、図8に示す置換器806は、入力ベクトルがメモリではなく並行LDPC処理のプロセッサから受信されて、その結果がメモリに802に書き込まれること以外は、同様に動作することが理解されるべきである。
図10の例は、積のリフティングを2つの因数G=G×GZ/2と共に使用する。群Gは、2つの要素F(フリップ)およびI(単位)からなり、{0,1}上で以下のように規定される。
F(0)=1,F(1)=0;
I(0)=0,I(1)=1;
図10に示す処理における長さLの周期を仮定する。
本発明は、とりわけ、例えば符号語などの新規のデータ構造に向けられており、当該データ構造は、メモリ702などの機械読み取り可能な媒体に記憶され、当該媒体は、ある実施形態においては、本発明の符号のうちの1つを用いるエンコーダと、本発明の符号化方法を実施するエンコーダとによって、入力データから生成される1つまたはそれ以上の符号語を記憶するために使用される。
特に、本発明のある実施形態は以下のものに向けられている。
通信装置内の機械読み取り可能な記憶媒体であって、
N×Zビットのアレイyの形式のデータ構造であって、式中、NおよびZは正の整数であり、前記データ構造の生成は、
エンコーダ回路を動作させて、Kが正の整数であるK×Zビットのアレイである入力uを受信することと、
前記エンコーダ回路を動作させて、yを式
y=uG
に従って計算することによって行われており、
式中、
yはN×Zビットのアレイであって、NおよびZは正の整数であり、
uはK×Zビットのアレイであって、Kは正の整数であり、
GはK×Nの要素行列のアレイであって、各要素GはZビットのベクトルであり、式中、
y=(y,y,...,y)であって、iが[1,N]内の整数とするとyはZビットベクトルであり、
u=(u,u,...,u)であって、iが[1,K]内の整数とするとuはZビットベクトルであり、
[数2]
Figure 2006519560

式中、iが[1,K]内の整数でありjが[1,N]内の整数であるときGi,jはZビットベクトルであって、式中、
[数3]
Figure 2006519560

であって、
i,j=ui,j
が、[1,N]内の各整数iと、[1,K]内の各整数jについてのZビットベクトルであり、
Figure 2006519560

が、Zビットベクトルvi,1,vi,2,…,vi,Kの要素的なXORを表して、Zビットベクトルyを形成し、
式中、
i,j
は、2つのZビットベクトルuおよびGi,jの積を表し、2つのZビットベクトルの積は以下のように規定される。
任意のZビットベクトルa=(a,a,...,a)および任意のZビットベクトルb=(b,b,...,b)について、その積abはZビットベクトルd=(d,d,...,d)であり、これは、
[数4]
Figure 2006519560

によって規定され、式中、すべての演算は、バイナリ演算であり、これは、aがビットaおよびbの論理和であることを意味し、加算は論理XORを表し、
式中、
g={g,g,…g},*
は、次数Zの因数分解群であり、式中、次数Zの群gは、Z個の別個の要素{g,g,…g}の組およびg×gのgへのマッピングである群演算*であり、これは各対(i,j)について、iおよびjを[1,Z]内の整数として規定することによって与えられ、[1,Z]内の固有の整数kは、g*g=gのようであり、さらに、このマッピングは結合的であり、すなわち
(g*g)*g=g*(g*g
であり、[1,Z]内のすべての整数i,j,kについて、群内に恒等元が存在し、すなわち、[1,Z]内の整数iについて、
*g=g*gi*=g
であり、[1,Z]内のすべてのjについて、各要素は逆数を有し、すなわち、[1,Z]内の各整数jについて、[1,Z]内の整数kが、
*g=g*g=gi*
であって、gi*は上述の恒等元であり、
次数Zの因数分解群は、群
g={g,g,…g},*
であって次数Zであり、因数分解されて2つの群、
A={A,A,…AzA},*
B={B,B,…BzB},*
となり、次数はそれぞれZおよびZであって、それぞれ1<Z,Z<ZおよびZ=Zを満たし、それぞれ群演算*および*であり、前記因数分解は、[1,Z]内の各整数iを、整数の固有の順序対(i,i)であって、iは[1,Z]内の整数であり、iは[1,Z]内の整数である順序対で識別することを含み、
*g=gは、
jA*AjA=kA
かつ
jB*BjB=kB
の場合にのみ満たされ、式中、iは対(i,i),jは対(j,j)で識別され、上記の識別においてはkは対(k,k)で識別され、式中、i,j,およびkは、[1,N]内の整数であり、(i,i),(j,j),(k,k)は、それぞれ、[1,Z]内の第1の要素と、[1,Z]内の第2の要素とを有する整数の順序対である。
上記の方法は、共に接続されるメモリ、CPU、および1つまたはそれ以上の入力および/または出力装置を含むコンピュータシステムにおいて実施されてもよい。メモリは、本発明に従って実施されるルーチンを含む。実行された場合に、ルーチンは、CPUに対して、本発明に従ってデータを受信、処理、および出力させる。
代わりに、本発明のステップは、専用のハードウェア、例えば、回路および/またはハードウェアとソフトウェアとの組み合わせを使用して実現されてもよい。
LPDC符号を2部(タナー)グラフとして表す図である。 パリティチェック行列を使用するLPDC符号を表す図である。 タナーグラフにおけるリフティング例を表す図である。 図3のタナーグラフによる表現に対応するパリティチェック行列である。 図2の行列のリフティングされたものの例を示し、Zリフティング値=3であり、使用された置換は、サイクリック置換である。 本発明に従って実施され、本発明に従った方法を用いる通信システム例の図である。 本発明に係るLDPC動作を実施するために使用することができるシステム例の図である。 本発明に係るLDPC動作を実施するために使用することができる他のシステム例の図である。 因数分解置換部を使用してLDPC動作を行う本発明の様々な方法例のステップを説明するために使用される本発明の方法を、図7に示すシステムなどのシステムの部分において使用する例である。 因数分解置換部を使用してLDPC動作を行う本発明の様々な方法例のステップを説明するために使用される本発明の方法を、図7に示すシステムなどのシステムの部分において使用する例である。 因数分解置換部を使用してLDPC動作を行う本発明の様々な方法例のステップを説明するために使用される本発明の方法を、図7に示すシステムなどのシステムの部分において使用する例である。 本発明に係る並行LDPCプロセッサモジュールにおいて使用できる、XOR回路と、例えばアキュムレータなどの記憶装置とを含む処理要素を示す。
符号の説明
102 変数ノード
104 エッジ
106 制約ノード

Claims (16)

  1. LDPC処理動作を行うための装置であって、
    複数のZ要素ベクトルを記憶するためのメモリであって、各Z要素ベクトルは、Z要素を含み、各要素は、処理すべき少なくとも1つのビットを含む、メモリと、
    並行的に動作するように配列されたZ処理要素を含む並行LDPC処理モジュールと、
    前記メモリを前記並行LDPC処理モジュールに結合するための制御可能な因数分解置換器とを備え、前記制御可能な因数分解置換器は、切り換え回路を含み、前記切り換え回路は、制御信号に応答して、因数分解置換動作を前記因数分解置換器を介して渡されたZ要素ベクトルに対して因数分解置換動作を行い、前記因数分解置換動作は、ベクトル要素の第1および第2の再順序付けを生じさせる第1および第2の置換動作を含み、前記第1および第2の置換動作は、大きさZ/nであるn個の均等な大きさのベクトル部分に対して行われ、前記第1の置換動作は、少なくとも2つの均等な大きさのベクトル部分の順序を変更させ、前記第2の置換動作は、Z/nの大きさの各部分に対して行われて、前記Z/nの大きさの各部分内において要素の順序を変更させ、nは1より大きくZより小さい整数である、装置。
  2. 前記因数分解置換器は、前記第1の再順序付けを行うための第1の切り換え回路と、前記第2の再順序付けを行うための第2の切り換え回路とを含み、前記第1および第2の切り換え回路は、直列に配列される、請求項1に記載の装置。
  3. 前記数値nは、2の整数倍である、請求項1に記載の装置。
  4. 第1の置換演算を前記第2の置換動作の後に実行でき、または前記第2の置換動作を前記第1の置換動作の後に実行できる、請求項1に記載の装置。
  5. 実施されるべきLDPC符号の少なくとも一部を規定する記憶されたLDPC符号情報の組と、
    置換器コントローラであって、前記記憶されたLDPC符号情報に応答して、前記因数分解置換器を制御して、実行されるべきLDPC符号の少なくとも一部に従って、ベクトル要素の再順序付けを実施する置換器コントローラとをさらに備える、請求項2に記載の装置。
  6. 前記メモリに結合されたアドレスジェネレータをさらに備え、
    置換器コントローラは、アドレスジェネレータコントローラとしても動作し、前記置換器コントローラは、前記アドレスジェネレータによって供給されたアドレスの選択を互いに異なる時点において制御して、メモリアクセス動作を因数分解置換器の再順序付け動作と調和させる、請求項2に記載の装置。
  7. 前記第1および第2の再順序付け動作は、サイクリックシフト動作である、請求項1に記載の装置。
  8. 前記並行LDPC処理モジュールにおける各Z処理要素は、XOR回路とアキュムレータとを含む、請求項2に記載の装置。
  9. 前記並行LDPC処理モジュールにおける各Z処理要素は、変数ノードおよびチェックノードプロセッサのうちの1つである、請求項2に記載の装置。
  10. LDPC処理動作を実施するための方法であって、前記処理動作は、符号化および復号化動作のうちの1つであり、当該方法は、
    複数の各Z要素ベクトルを、前記複数のZ要素ベクトルを記憶するために使用されるメモリと、Z処理要素を含むZ要素ベクトルプロセッサ部との間に配置された置換器に連続的に通過させることであって、各Z要素ベクトルは、Zが2よりも大きな整数値であるZ個の要素を有し、
    前記置換器を制御して、前記メモリと、前記ベクトルプロセッサ部との間を通過したZ要素ベクトルのうちの少なくとも1つに対して、因数分解置換動作を行って、前記少なくとも1つのZ要素ベクトル内の要素を再順序付けすることとを含み、因数分解置換動作を行う前記ステップは、
    前記少なくとも1つのZ要素ベクトル内の第1の均等な大きさの複数のサブセットに対して、第1の再順序付け動作を行って、前記Z要素ベクトル内において前記少なくとも1つのZ要素ベクトル内の第1の均等な大きさのサブセットの順序を変更することと、
    前記少なくとも1つのZ要素ベクトル内の第1の均等な大きさの複数の各サブセットの内容に対して、第2の再順序付け動作を行って、前記第1の均等な大きさの複数の各サブセット内の要素の少なくともいくつかの要素の順序を変更することとを含み、同一の第2の再順序付け動作を前記第1の均等な大きさの各サブセットに対して行って、前記第1の均等な大きさの各サブセット内の要素の順番に同一の変更を生じさせる、方法。
  11. 前記第1の再順序付け動作は、前記Z要素ベクトル内のサブセットのサイクリックシフトである、請求項10に記載の方法。
  12. 前記第1および第2の再順序付け動作は、連続的に行われ、前記第2の再順序付け動作は、前記第1の再順序付け動作の前に行われる、請求項10に記載の方法。
  13. 均等な大きさの前記複数の各サブセットは、n個のサブセットを含み、前記各サブセットは、Z/n個の要素を含み、nは正の整数であり、Z/nは正の整数であり、Z>n>1である、請求項11に記載の方法。
  14. 前記置換器を動作させて、前記ベクトルの内容を再順序付けせずに少なくともいくつかのZビットベクトルを通過させる、請求項11に記載の方法。
  15. 前記置換器を動作させて、第1のサイクリック再順序付けを行って、いくつかの要素の順番を少なくともいくつかのベクトル内で、前記少なくともいくつかのベクトルに対する第2の再順序付けを行うことなく、再配列することをさらに含む、請求項14に記載の方法。
  16. コントローラを動作させて、使用されている符号化されたLDPCの少なくとも一部を規定する情報から、前記置換器を通過しているZベクトルに特定の再順序付けを適用することを決定することをさらに含む、請求項15に記載の方法。
JP2006503888A 2003-02-26 2004-02-26 マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置 Expired - Lifetime JP4339886B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US45024503P 2003-02-26 2003-02-26
PCT/US2004/005783 WO2004077733A2 (en) 2003-02-26 2004-02-26 Method and apparatus for performing low-density parity-check (ldpc) code operations using a multi-level permutation

Publications (2)

Publication Number Publication Date
JP2006519560A true JP2006519560A (ja) 2006-08-24
JP4339886B2 JP4339886B2 (ja) 2009-10-07

Family

ID=32927623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006503888A Expired - Lifetime JP4339886B2 (ja) 2003-02-26 2004-02-26 マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置

Country Status (6)

Country Link
EP (1) EP1597828B1 (ja)
JP (1) JP4339886B2 (ja)
KR (1) KR101058324B1 (ja)
CN (1) CN1781254B (ja)
CA (1) CA2516716C (ja)
WO (1) WO2004077733A2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008510377A (ja) * 2004-08-13 2008-04-03 ザ・ディレクティービー・グループ・インコーポレイテッド 多元入力多元出力チャネルのための低密度パリティ・チェック・コードのコード設計及びインプリメンテーション改善
JP2010521128A (ja) * 2007-03-09 2010-06-17 クゥアルコム・インコーポレイテッド 低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置
JP2010279013A (ja) * 2008-10-17 2010-12-09 Intel Corp Ldpc符号の符号化
JP4822452B2 (ja) * 2004-09-17 2011-11-24 エルジー エレクトロニクス インコーポレイティド Ldpcコードを用いた符号化または復号化方法及びその装置
JP2012231473A (ja) * 2007-01-24 2012-11-22 Qualcomm Inc 可変サイズのパケットのldpc符号化及び復号化
KR101824227B1 (ko) 2009-08-07 2018-02-05 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7020829B2 (en) 2002-07-03 2006-03-28 Hughes Electronics Corporation Method and system for decoding low density parity check (LDPC) codes
US7864869B2 (en) 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US20040019845A1 (en) 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
KR100922956B1 (ko) 2003-10-14 2009-10-22 삼성전자주식회사 저밀도 패리티 검사 코드의 부호화 방법
CN101341659B (zh) 2004-08-13 2012-12-12 Dtvg许可公司 用于多输入多输出通道的低密度奇偶校验码的码设计与实现的改进
IE20050277A1 (en) * 2005-05-04 2006-11-29 Nat Univ Ireland Method and apparatus for generating error-correcting and error-detecting codes using zero-divisors and units in group rings
WO2007064325A1 (en) * 2005-12-01 2007-06-07 Thomson Licensing Apparatus and method for decoding low density parity check coded signals
CN100583649C (zh) 2007-07-23 2010-01-20 华为技术有限公司 矢量编/解码方法、装置及流媒体播放器
KR101660554B1 (ko) * 2009-11-13 2016-09-27 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 방법, 복호 방법, 부호화기 및 복호기
KR101840252B1 (ko) * 2012-03-12 2018-03-20 에스케이하이닉스 주식회사 저밀도 패리티 검사 부호용 장치
US10572342B2 (en) * 2016-10-24 2020-02-25 SK Hynix Inc. Memory system with LDPC decoder and operating method thereof
EP3496277A1 (en) 2017-12-07 2019-06-12 Xieon Networks S.à r.l. Parallel encoding method and system for protograph-based ldpc codes with hierarchical lifting stages
CN109379087B (zh) * 2018-10-24 2022-03-29 江苏华存电子科技有限公司 Ldpc根据闪存组件错误率调变核编译码速率的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295218A (en) * 1979-06-25 1981-10-13 Regents Of The University Of California Error-correcting coding system
US6073250A (en) * 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
US6339834B1 (en) * 1998-05-28 2002-01-15 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry Through The Communication Research Centre Interleaving with golden section increments
FR2799592B1 (fr) 1999-10-12 2003-09-26 Thomson Csf Procede de construction et de codage simple et systematique de codes ldpc
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
JP4062435B2 (ja) * 2002-12-03 2008-03-19 日本電気株式会社 誤り訂正符号復号装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008510377A (ja) * 2004-08-13 2008-04-03 ザ・ディレクティービー・グループ・インコーポレイテッド 多元入力多元出力チャネルのための低密度パリティ・チェック・コードのコード設計及びインプリメンテーション改善
JP4822452B2 (ja) * 2004-09-17 2011-11-24 エルジー エレクトロニクス インコーポレイティド Ldpcコードを用いた符号化または復号化方法及びその装置
JP2012231473A (ja) * 2007-01-24 2012-11-22 Qualcomm Inc 可変サイズのパケットのldpc符号化及び復号化
JP2010521128A (ja) * 2007-03-09 2010-06-17 クゥアルコム・インコーポレイテッド 低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置
US8261155B2 (en) 2007-03-09 2012-09-04 Qualcomm Incorporated Methods and apparatus for encoding and decoding low density parity check (LDPC) codes
JP2010279013A (ja) * 2008-10-17 2010-12-09 Intel Corp Ldpc符号の符号化
US8612823B2 (en) 2008-10-17 2013-12-17 Intel Corporation Encoding of LDPC codes using sub-matrices of a low density parity check matrix
KR101824227B1 (ko) 2009-08-07 2018-02-05 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법

Also Published As

Publication number Publication date
EP1597828B1 (en) 2020-10-07
EP1597828A2 (en) 2005-11-23
KR20060008864A (ko) 2006-01-27
WO2004077733A2 (en) 2004-09-10
CA2516716A1 (en) 2004-09-10
EP1597828A4 (en) 2006-05-24
CN1781254B (zh) 2012-03-14
CN1781254A (zh) 2006-05-31
JP4339886B2 (ja) 2009-10-07
KR101058324B1 (ko) 2011-08-22
WO2004077733A3 (en) 2004-10-21
CA2516716C (en) 2012-08-14

Similar Documents

Publication Publication Date Title
JP4339886B2 (ja) マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置
US7627801B2 (en) Methods and apparatus for encoding LDPC codes
US6957375B2 (en) Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
CN101632230B (zh) 低密度奇偶校验(ldpc)码的编码和解码
KR100905814B1 (ko) Ldpc 인코딩 방법
US8347170B2 (en) Method and apparatus for performing decoding using LDPC code
CA2536259C (en) Methods and apparatus for encoding ldpc codes
CN101895300B (zh) Ldpc解码方法
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
WO2008069231A1 (ja) 復号装置、復号方法
Nguyen et al. Using one redundant bit to construct two-dimensional almost-balanced codes

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20060608

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070126

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20081121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090602

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090702

R150 Certificate of patent or registration of utility model

Ref document number: 4339886

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130710

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term