(57)【要約】【課題】複数のターボデコーダでメモリの同一バンクに対するアクセスが競合してしまう場合があった。【解決手段】誤り訂正符号復号回路は、マトリクス状のメモリ空間を有する第１のメモリと、第１のメモリに対し、行方向または列方向の一方の方向に沿って第１の情報を書き込む第１の復号部と、第１のメモリから行方向または列方向の他方の方向に沿って第１の情報を読み出す第２の復号部と、第２の復号部内に配置され、第１のメモリのメモリ空間における同一行または同一列に対するアクセスタイミングがそれぞれ異なる複数のターボデコーダを有する。【選択図】  図３
2008118628.tif 000002
【特許請求の範囲】
【請求項１】
マトリクス状のメモリ空間を有する第１のメモリと、
前記第１のメモリに対し、行方向または列方向の一方の方向に沿って第１の情報を書き込む第１の復号部と、
前記第１のメモリから行方向または列方向の他方の方向に沿って前記第１の情報を読み出す第２の復号部と、
前記第２の復号部内に配置され、前記第１のメモリのメモリ空間における同一行または同一列に対するアクセスタイミングがそれぞれ異なる複数のターボデコーダを有する誤り訂正符号復号回路。
【請求項２】
前記第１のメモリのメモリ空間は複数に分割され、前記複数のターボデコーダは前記分割されたメモリ空間に対してアクセスを行うことを特徴とする請求項１に記載の誤り訂正符号復号回路。
【請求項３】
前記第２の復号器は、前記第１の復号部が前記第１の情報を書き込む順番とは異なる順番で当該第１の情報を読み出すことを特徴とする請求項１あるいは２に記載の誤り訂正符号復号回路。
【請求項４】
前記誤り訂正符号復号回路は、前記第２の復号部が前記第１のメモリから前記第１の情報を読み出す順番を記憶するインタリーブパタンメモリを有することを特徴とすることを特徴とする請求項１乃至３のいずれか１項に記載の誤り訂正符号復号回路。
【請求項５】
前記誤り訂正符号復号回路は、さらに、前記複数に分割されたメモリ空間に対応するアクセス順を前記複数のターボデコーダのそれぞれに設定する複数のインタリーブパタン生成器を有することを特徴とする請求項１乃至３のいずれか１項に記載の誤り訂正符号復号回路。
【請求項６】
前記誤り訂正符号復号回路は、さらに、第２のメモリを有し、
前記第２の復号部は前記第１のメモリから前記第１の情報を読み出した順番に基づいて前記第２のメモリに第２の情報を書き込むことを特徴とする請求項１乃至５のいずれか１項に記載の誤り訂正符号復号回路。
【請求項７】
前記複数のターボデコーダは、前記第１のメモリの分割されたメモリ空間から読み出した前記第１の情報を、ウィンドウ単位で処理することを特徴とする請求項２乃至６のいずれか１項に記載の誤り訂正符号復号回路。
【請求項８】
前記第２の復号部は前記第１の復号部が出力する前記第１の情報を用いて復号処理を行い、前記第１の復号部は前記第２の復号部が出力する前記第２の情報を用いて復号処理を行うことを特徴とする請求項１乃至７のいずれか１項に記載の誤り訂正符号復号回路。
【請求項９】
前記第１の復号部フォワード処理と前記第２の復号部によるバックワード処理を同時に行うことを特徴とする請求項１乃至８のいずれか１項に記載の誤り訂正符号復号回路。
【請求項１０】
前記誤り訂正符号復号回路は、入力される誤り訂正符号に含まれるテイルビットの処理を行い、その結果を保持することを特徴とする請求項１乃至９のいずれか１項に記載の誤り訂正符号復号回路。
【請求項１１】
前記誤り訂正符号復号回路は、入力される誤り訂正符号のデータ量に基づいて、前記複数のターボデコーダのうち起動させるターボデコーダ数が決定されることを特徴とする請求項１乃至１１のいずれか１項に記載の誤り訂正符号復号回路。
【請求項１２】
終結処理が成された誤り訂正符号の復号を行う誤り訂正符号復号回路であって、
前記終結処理に関わる処理の結果を格納するメモリと、
軟出力復号を開始する前に前記終結処理に関わる処理を行い、当該処理結果を前記メモリに格納し、前記終結処理に関わる処理が必要な箇所において、前記メモリから前記終結処理に関わる処理の結果を読み出して軟出力復号を行なう回路とを有する誤り訂正符号復号回路。
【請求項１３】
前記誤り訂正符号は、ターボ符号であることを特徴とする請求項１２に記載の誤り訂正符号復号回路。
【請求項１４】
前記誤り訂正符号の復号は、バックワード処理を行った後のフォワード処理に基づく軟判定結果に基づいて硬判定を行うことを特徴とする請求項１２あるいは１３に記載の誤り訂正符号復号回路。
【請求項１５】
前記誤り訂正符号の復号は、前記誤り訂正符号を複数のブロックに分け、ブロック単位で軟判定が行われることを特徴とする請求項１２乃至１４のいずれか１項に記載の誤り訂正符号復号回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は誤り訂正符号を復号する復号回路に関し、特にターボ符号を復号する復号回路に関する。
【背景技術】
【０００２】
デジタル通信システムでは、伝送路において生じる誤りを訂正する誤り訂正符号が用いられている。特に移動通信システムでは、フェージングの影響により電波強度が激しく変動して誤りが生じ易いため、誤り訂正符号には高い訂正能力が要求される。誤り訂正符号の一例であるターボ符号は、シャノン限界に近い誤り訂正能力を有する符号として注目されている。このターボ符号は、例えば、第３世代の移動通信方式であるＷ−ＣＤＭＡ（Ｗｉｄｅｂａｎｄ  Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）やＣＤＭＡ−２０００で使用されている。このようなターボ符号を復号する装置は、例えば特許文献１に示されている。
【０００３】
図１２のブロック図は、ターボ符号を生成するための一般的な符号化装置の構成を示している。この符号化装置１０１は、例えば、通信システムの送信側に設けられ、符号化前データである情報ビット（Ｓｙｓｔｅｍａｔｉｃ  Ｂｉｔｓ：組織部）Ｕを、並列連接畳み込み符号（ＰＣＣＣｓ：Ｐａｒａｌｌｅｌ  Ｃｏｎｃａｔｅｎａｔｅｄ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｃｏｄｅｓ）のターボ符号に符号化し、伝送路等の外部へ出力する。なお、ターボ符号は、並列連接符号に限らず、直列連接畳み込み符号など、ターボ復号が可能であればよい。
【０００４】
符号化装置１０１は、図１２に示すように、組織的畳み込み符号化器（Ｓｙｓｔｅｍａｔｉｃ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｃｏｄｅｒ）である第１の符号化器１０２及び第２の符号化器１０３と、データをインタリーブする（並び替える）インタリーバ（Ｉｎｔｅｒｌｅａｖｉｎｇ）１０４とを備えている。
【０００５】
第１の符号化器１０２は、入力された組織部Ｕを符号化して冗長ビット（パリティビット：Ｐａｒｉｔｙ  Ｂｉｔｓ）Ｐを生成し、この冗長ビットＰを外部へ出力する。インタリーバ１０４は、入力された組織部Ｕの各ビットを所定のインタリーブパターンに並べ替えて組織部Ｕｂを生成し、この組織部Ｕｂを第２の符号化器１０３へ出力する。第２の符号化器１０３は、組織部Ｕｂを符号化して冗長ビットＰｂを生成し、この冗長ビットＰｂを外部へ出力する。
【０００６】
符号化装置１０１では、組織部Ｕ、冗長ビットＰ、組織部Ｕｂ、冗長ビットＰｂが生成される。組織部Ｕと冗長ビットＰの組（Ｕ，Ｐ）を第１の要素符号（Ｅｌｅｍｅｎｔａｌ  Ｃｏｄｅ）Ｅ１といい、組織部Ｕｂと冗長ビットＰｂの組（Ｕｂ，Ｐｂ）を第２の要素符号Ｅ２という。
【０００７】
ターボ符号の特徴は次の２点にある。
１）比較的簡易で小さい構成の組織符号化器を複数個使用する
２）それぞれの符号化器は、符号化器入力である情報ビットに対して、インターリーバ（並べ替え器）を介して連接されている。
【０００８】
上記において、２）の目的は、情報ビットの順番を入れ換えて符号化器に入力することで、符号化器間において異なる符号語系列を生成することにある。これは、復号側にて、それぞれの符号語の復号結果を、互いの符号語間で補完しあうことにより、誤り訂正能力を向上させるためである。
【０００９】
１）の目的は、符号語間における復号結果の相互補完を、情報ビットを用いて行うためである。例えば３ＧＰＰ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ）では、１）に、８状態の組織的畳み込み符号化器（８  ｓｔａｔｅｓ  Ｓｙｓｔｅｍａｔｉｃ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｃｏｄｅｒ)を２個用いている。この３ＧＰＰでは、Ｗ−ＣＤＭＡなどの第３世代の移動体通信システムの標準化が行なわれている。
【００１０】
図１２における符号化器１０２の出力{Ｕ，Ｐ}の組を第１の要素符号（Ｅｌｅｍｅｎｔａｌ  Ｃｏｄｅ  １）、他方の出力{Ｕｂ，Ｐｂ}の組を第２の要素符号（Ｅｌｅｍｅｎｔａｌ  Ｃｏｄｅ  ２）と呼んでいる。ただし、Ｕｂは、実際は出力されずＵ、Ｐ、Ｐｂの３つが後段に出力される。なお、実際はターミネーションビット（Ｔｅｒｍｉｎａｔｉｏｎ  ｂｉｔｓ）も出力されるが、ここでは、説明簡易化のため省略する。このため、３ＧＰＰ規定のターボ符号の符号化率（Ｃｏｄｉｎｇ  Ｒａｔｅ）は１／３ということになる。
【００１１】
このように符号化されたターボ符号を復号することをターボ復号という。ターボ復号では、第１の要素符号Ｅ１を復号する１番目の復号部と第２の要素符号Ｅ２を復号する２番目の復号部との間で外部情報を交換しながら繰り返し復号が行われる。
【００１２】
図１３に代表的なターボ復号の復号装置を示す。ターボ復号の特徴は次の１点にある。
１）複数の要素符号間にて外部情報（Ｅｘｔｒｉｎｓｉｃ  Ｉｎｆｏｒｍａｔｉｏｎ）を交換しながら、複数回処理を繰り返す。
【００１３】
図１３に示すように、代表的な復号装置２０１は、第１の復号部２０２、第２の復号部２０３、インタリーブメモリ２０４、デインタリーブメモリ２０５及び硬判定・ＣＲＣ判定部２０６を有する。第１の復号部２０２、第２の復号部２０３には、それぞれ複数の復号器（ターボデコーダ）Ａ〜Ｄが含まれている。この複数のターボデコーダは、ターボ符号を複数のサブブロックに分け、並列処理を行う為に用いられる。ここではまず、ターボ符号を復号する時の復号装置の動作について説明し、並列処理に関しては、後述する。
【００１４】
このような復号装置２０１におけるターボ復号は以下の工程からなる。
Ａ）第２の復号部２０３の外部情報をデインタリーブメモリ２０５から読み出し、第１の要素符号と共に第１の復号部２０２に入力する。第１の復号部２０２から外部情報を出力し、インタリーブメモリ２０４に書き込む。
Ｂ）第１の復号部２０２の外部情報をインタリーブメモリ２０４から読出し、第２の要素符号と共に第２の復号部２０３に入力する。第２の復号部２０３から外部情報を出力し、デインタリーブメモリ２０５に書き込む。
Ｃ）復号の最終繰り返しでは、第２の復号部２０３の対数尤度比ＬＬＲをデインタリーブメモリ２０５から読出し、硬判定・ＣＲＣ判定部２０６にて硬判定を行なった後、ＣＲＣによりエラーチェックを行なっている。
【００１５】
先ず、Ａ）を実行する。このときの第２の復号部２０３からの外部情報は初期値（＝０）とする。次に、Ｂ）を実行する。そして、再びＡ）を実行し、任意の回数だけＢ）とＡ）とを繰り返す。そして、最終繰り返しにおいて、Ｂ）を実行したときに、第２の復号部２０３は、外部情報ではなく対数尤度比を出力する。最後にＣ）を実行する。
【００１６】
ターボ符号は組織符号であるため、受信系列には情報ビットＵが含まれている。外部情報とはこの情報ビットＵに対して復号の前に分かっている、"０"らしさ（"１"らしさと同義）を表す値（事前値）である。つまりターボ復号とは、第１、第２の要素符号間の復号において、それぞれの情報ビットが"０"である確率を交換（相互補完）しながら、その確率の確度を上げ、誤り訂正能力を強化する処理である。
【００１７】
上記の復号動作において、インタリーブ、デインタリーブの動作は、以下のように行われる。図１４及び図１５は、インタリーブ、デインタリーブの動作を説明する為の図である。図１４は、第１の復号部（正確には第１の復号部内の各復号器）及び第２の復号部（第２の復号部内の各復号器）が、インタリーブメモリ及びデインタリーブメモリに対しどのようにアクセスするかを説明する為の図である。また、図１５は、インタリーブメモリあるいはデインタリーブメモリのメモリ空間に対して、第１、第２の復号部２０２、２０３がアクセスする方向を示す図である。
【００１８】
第１の復号部２０２は、上記したように外部情報をインタリーブメモリ２０４に出力する。この時、第１の復号部２０２は、インタリーブメモリ２０４に対しシーケンシャルなアクセスを行う（図１４、１５参照）。ここで言うシーケンシャルなアクセスとは、行列状に構成されたメモリ空間に対し、行方向に沿って順次書き込みを行うアクセスである（図１５参照）。
【００１９】
第２の復号部２０３では、インタリーブメモリ２０４に書き込まれた外部情報に対してインタリーブしたアクセスを行う（図１５参照）。ここで言うインタリーブしたアクセスと言うのは、メモリ空間に対して列方向に読み出しを行うアクセスのことである（図１４参照）。なお、ここでは、列方向に図面下側から読み出すことによってインタリーブしたアクセスを行うものとする。
【００２０】
このインタリーブしたアクセスによってインタリーブメモリ２０４の外部情報はインタリーブされた外部情報として第２の復号部２０３で処理される。
【００２１】
第２の復号部２０３は、外部情報をデインタリーブメモリ２０５に出力する。この時、第２の復号部２０３はインタリーブしたパタンのアクセス、つまりメモリ空間に対して列方向に書き込みを行う（図１５参照）。この書き込みによって、インタリーブメモリ２０４から読み出したアドレスに対応して、デインタリーブメモリ２０５に書き込みが行われる。
【００２２】
その後の繰り返し動作において、第１の復号部２０２は、デインタリーブメモリ２０５から、外部情報をシーケンシャルに読み出す（図１５参照）。この時、第２の復号部２０３がインタリーブしたパタンのアクセスで書き込みを行っている為、シーケンシャルな読み出しで、デインタリーブされた外部情報を読み出すこととなる。
【００２３】
なお、実際のインタリーブ動作では、上記した行、列による入れ替えの他に、行内の入れ替え、行間の入れ替えなども行われるが、説明の簡略化のため、ここでは省略する。
【００２４】
ここで、上記した並列して復号を行う処理について説明する。ターボ復号においては入力されたコードブロックを複数のサブブロックに分割し、複数の復号器（ターボデコーダ）を用いてサブブロックごとに並列にデコード処理を行うことが行われている。なお、詳細にはこのサブブロックは、各復号器内では、さらにウィンドウと言う単位で分割して処理されるが、その点については後述する。
【００２５】
ここで、サブブロックごとに並列にアクセスを行う場合、図１５に示したようにインタリーブメモリに対してサブブロックに対応する列ごとに第２の復号部２０３内の複数のデコーダがアクセスする。ここでは、図１６に示したように１、２列目のメモリ空間に対してデコーダＡ、３、４列目にデコーダＢ、５、６列目にデコーダＣ、７、８列目にデコーダＤがアクセスするとする。この場合、図１７に示したように時刻Ｔ１において、複数のデコーダが同時に、図面４行目のメモリにアクセスしようとする。ここで、メモリは行方向でバンクが分けられているため、時刻Ｔ１で、同一バンクにアクセスしようとする問題が生じる（図１８参照）。ここで仮に図１６で示す３１〜３７のデータが空のデータであり、空データを飛ばしてデコーダがアクセスするものとしても、図１９乃至２１に示すように同一バンク（図１９で言う３行目）に対するアクセスの競合は生じてしまう。
【特許文献１】特開２００４-１５２８５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
従来のデコーダにおいて、サブブロックごとに並列に復号処理を行う場合、複数のデコーダが同時に同一バンクにアクセスし、アクセスが競合して処理速度を低下させてしまう場合があった。
【課題を解決するための手段】
【００２７】
本発明の１態様による誤り訂正符号復号回路は、マトリクス状のメモリ空間を有する第１のメモリと、第１のメモリに対し、行方向または列方向の一方の方向に沿って第１の情報を書き込む第１の復号部と、第１のメモリから行方向または列方向の他方の方向に沿って第１の情報を読み出す第２の復号部と、第２の復号部内に配置され、第１のメモリのメモリ空間における同一行または同一列に対するアクセスタイミングがそれぞれ異なる複数のターボデコーダを有する。
【００２８】
また、本発明の他の態様の誤り訂正符号復号回路は、終結処理に関わる処理を行う誤り訂正符号復号回路であって、終結処理に関わる処理の結果を格納するメモリと、軟出力復号を開始する前に終結処理に関わる処理を行い、処理結果をメモリに格納し、終結処理に関わる処理が必要な箇所において、メモリから終結処理に関わる処理の結果を読み出して用いる軟出力復号回路とを有する。
【発明の効果】
【００２９】
並列に処理を行う複数のターボデコーダのアクセスが、同一バンクのメモリに競合してしまうことを防止することが可能である。
【発明を実施するための最良の形態】
【００３０】
以下、図面を参照して本発明の実施の形態１について説明する。本実施の形態ではターボ復号を行う復号装置としては、図１３に示したターボ復号装置と同様の構成であるため、その詳細な説明は割愛する。本実施の形態では、第１の復号部２０２、第２の復号部２０３は、それぞれ４つのターボデコーダＡ〜Ｄを有している。また、インタリーブメモリ２０４、デインタリーブメモリ２０５は、それぞれ行方向でバンクに分割されているとする。なお、実際は行方向で２０バンクに分割されたメモリを用いるが、図面の簡略化のため図１３では４バンクのみ示している。
【００３１】
本実施の形態では符号列（コードブロック）を４つのサブブロックに分け、４つのターボデコーダを用いて並列にターボ復号を行う。図１に示すように、第１の復号部２０２に含まれるターボデコーダは、インタリーブメモリ２０４、デインタリーブメモリ２０５に対してシーケンシャルにアクセス（図面の行方向のアクセス）を行う。また図２に示すように第２の復号部２０３に含まれるターボデコーダは、インタリーブしたアクセス（図面列方向下からのアクセス）を行う。
【００３２】
本実施の形態では、この列方向でアクセスを行う第２の復号部２０３のターボデコーダにおいて、４つのターボデコーダのアクセスするタイミングを制御している。図３は、４つのターボデコーダがアクセスするタイミングを示す図である。図３に示すように第２の復号部２０３のターボデコーダＡは、タイミングＴ１において、サブブロック１に対するデコードを開始する。この時ターボデコーダＡは、インタリーブメモリ２０４のバンク２０に対してアクセスを開始する。その後、基準クロックで１クロックずらしたタイミングＴ２において、第２の復号部２０３のターボデコーダＢがサブブロック２に対してのアクセスを開始する。この時、ターボデコーダＡは、既にバンク２０に対するアクセスを終え、バンク１９に対するアクセスとなっているため、タイミングＴ２で、ターボデコーダＢがバンク２０にアクセスを行っても、同一バンクに対するアクセスの競合は発生しない。その後、更に１クロックずれたタイミングＴ３においてターボデコーダＣがサブブロック３に対してアクセスを開始する。同様にタイミングＴ４において、ターボデコーダＤがサブブロック４に対するアクセスを開始する。本実施の形態では、ターボデコーダの起動のタイミングをずらすことによってこのアクセス制御を実行している。つまり、ターボデコーダＡを起動した１クロック後にターボデコーダＢが起動し、その後クロックに応じて順次ターボデコーダが起動していく。なお、１クロックごとに起動させるのではなく必要な数クロックごとにターボデコーダを起動させることも可能である。なお、本実施の形態では空データの部分があった場合でも空データを飛ばしたことによってメモリへのアクセスが競合してしまうことを回避する為、空データを飛ばしてターボデコーダがアクセスすることはないものとする。
【００３３】
このように本実施の形態では行方向に書き込まれたデータに対して列方向にアクセスしてインタリーブ動作を行う場合に、並列に動作するターボデコーダのインタリーブメモリに対するアクセスのタイミングをずらすことで、同一バンクに対して複数のターボデコーダが同時にアクセスすることを防止している。
【００３４】
ここで、第１の復号部２０２、第２の復号部２０３で行われるデコード動作の詳細について説明する。図４はトレリス線図を示している。ターボ復号では、トレリス線図上の始点から終点の方向にビタビ復号を行ってパスメトリック値を算出する処理をフォワード処理という。このフォワード処理で算出されるパスメトリック値をαパスメトリック値（第１のパスメトリック値）と呼ぶ。一方、フォワード処理とは逆方向に終点からビタビ復号を行ってパスメトリック値を算出する処理をバックワード処理という。このバックワード処理で算出されるパスメトリック値をβパスメトリック値（第２のパスメトリック値）と呼ぶ。
【００３５】
図５は、本実施の形態で行うバックワード処理、フォワード処理の様子を模式的に示した図である。本実施の形態のターボ符号の復号装置では、各ターボデコーダがサブブロックをさらにウィンドウという単位で処理している。ウィンドウ単位で処理することにより局所的な復号を行い、上記したパスメトリック値を保持するためのメモリの記憶容量を削減している。この場合、トレリス線図の始点から復号を開始する通常の復号シーケンスにおいては、ウィンドウのバックワード処理におけるパスメトリック値の初期値は、ウィンドウ先のすべての状態を等確率（初期値＝０）としてバックワード処理を行う。以下、図５を参照して、本実施の形態の復号装置の処理について説明する。
【００３６】
まず、第１の復号部２０２のデコーダで、それぞれのサブブロックに対して図５に示すウィンドウＷｉｎ１のバックワード処理を行う。このときの初期値は上記のゼロであるとする。
【００３７】
その後、ウィンドウＷｉｎ１に関するフォワード処理を行う。また同時に、ウィンドウＷｉｎ２に関するバックワード処理を行う。第１の復号部２０２、第２の復号部２０３による外部情報の計算が繰り返されておらず、繰り返して行う処理の１回目であれば、このバックワード処理におけるウィンドウＷｉｎ２、Ｗｉｎ３の境界の初期値も、上記した場合と同様にゼロとする。ただし、ここでバックワード処理したウィンドウ境界のパスメトリック値は、繰り返しの２回目以降の初期値として利用するために一時保持される。
【００３８】
その後、ウィンドウＷｉｎ２に関するフォワード処理を行う。このフォワード処理の初期値は、その前にウィンドウＷｉｎ１に関するフォワード処理を行っているので、その結果に基づいた初期値とする。また同時に、ウィンドウＷｉｎ３に関するバックワード処理を行う。以降は、サブブロックに含まれるウィンドウの数に基づいてフォワード処理、バックワード処理が繰り返される。
【００３９】
ここで１つのサブブロックに５つのウィンドウが含まれるとした場合、サブブロック１内のＷｉｎ５のバックワード処理を行う場合の初期値として、サブブロック１のウィンドウＷｉｎ５に続くウィンドウであるサブブロック２のＷｉｎ１のバックワード処理をしたときのパスメトリック値が利用される。
【００４０】
その後、第２の復号部２０３内でインタリーブされたデータに対して同様の計算が行われ、繰り返し処理により再び第１の復号部でパスメトリック値の計算が行われる。この場合はバックワード処理の初期値として、図５に示した通り、前回のバックワード処理の結果が利用される。このように本実施の形態ではコードブロックを複数のサブブロックに分けて並列に処理を行う場合に、各サブブロックにアクセスするデコーダのタイミングをずらすことによって、メモリの同一バンクに対するアクセスの競合を防止する。各サブブロックでは、ウィンドウ単位でフォワード処理、バックワード処理が行われ、一回目のバックワード処理では、初期値としてゼロが設定され、２回目以降の繰り返しでは、前回のバックワード処理の結果が初期値に利用される。
【００４１】
実施の形態２
【００４２】
図６、７は、実施の形態２のコードブロックと。サブブロック、メモリの関係を示す図である。また、図８は、実施の形態２におけるターボデコーダのアクセスを説明する図である。図６、７に示すように実施の形態２では、コードブロックがメモリ空間に対して小さく、図７に示すようにサブブロック３の途中の領域までで、コードブロックが終了するような場合である。この場合、第２の復号部２０３内のターボデコーダＡ、Ｂ，Ｃは、実施の形態１と同様に１クロックずらしたタイミングで、メモリに対してアクセスを行う（図８参照）。一方、図８に示すように第２の復号部２０３内のターボデコーダＤは、メモリに対してアクセスを行わず復号の動作を行わないものとする。この場合、並列に処理できるサブブロックは減ってしまうが、コードブロックのサイズ自体が大きいものではないため、大きな問題とはならず、コードブロックを処理することが可能である。
【００４３】
実施の形態３
【００４４】
図９は、実施の形態３に関わるバックワード処理、フォワード処理の様子を模式的に示した図である。図５に示した実施の形態１のフォワード処理、バックワード処理では、各サブブロックの最後のウィンドウＷｉｎ５をフォワード処理している場合にウィンドウＷｉｎ５のフォワード処理のみが行われている。そこで本実施の形態では、第１の復号部２０２が各サブブロックの最後のウィンドウＷｉｎ５のフォワード処理を行っている間に、第２の復号部２０３で、ウィンドウＷｉｎ１に対するバックワード処理を開始する。このように第１の復号部２０２で、サブブロックの最後のウィンドウＷｉｎ５の処理と平行して、第２の復号部２０３でサブブロック１のウィンドウＷｉｎ１の処理を開始することで、全体として処理が高速化され、デコード処理を速やかに終了することが可能となる。
【００４５】
実施の形態４
【００４６】
図１０は、実施の形態４に関わる復号装置を示す模式図である。本実施の形態では、通信経路からデータを受けて保持する通信経路メモリ（ＲＡＭ）２０７に対して、第２の要素符号のパリティビットＰｂを書き込む際に、インタリーブしたパタンで書き込むものである。つまり通信経路メモリには情報ビットおよび第１の要素符号のパリティビットＰは、シーケンシャルに書き込まれる。第２の要素符号のパリティビットＰｂはインタリーブされているパリティビットをインタリーブしたパタンで書き込むため、シーケンシャルな順番となって書き込まれる。第２の復号部２０３は、元々インタリーブメモリ２０４からインタリーブ読み出しを行う復号部であるため、通信経路メモリから第２の要素符号のパリティを読み出す際にも同様にインタリーブリードを行えば第２の復号部２０３に入力される第２の要素符号のパリティはインタリーブされたデータとして読み出すことが可能である。このように構成することで、情報ビット、第１の要素符号のパリティ、第２の要素符号のパリティを格納するメモリを一つのシーケンシャルなメモリで構成することが可能となり、必要なメモリの個数を削減することが可能となる。
【００４７】
変形例
【００４８】
上記に説明してきた実施の形態では、インタリーブの動作は、インタリーブするパタンをインタリーブパタンメモリに保持しておき、そのインタリーブパタンメモリの保持するアドレスの対応関係から、インタリーバがインタリーブメモリにアクセスする際のアドレスを制御することによって実施している。インタリーブパタンメモリはアドレスを記憶するためインタリーブメモリとほぼ同等の大きさとなってしまう。そこで、インタリーブパタンメモリが大きくなってしまう場合には並列に処理するターボデコーダごとにインタリーバを設ける構成としても良い。
【００４９】
図１１は、本発明の他の変形例を説明するための図である。上記したように本発明の実施の形態では複数のターボデコーダを用いてコードブロックを並列に処理している。そのため、第１の復号部に含まれるターボデコーダと第２の復号部に含まれるターボデコーダで、サブブロック単位で硬判定を行う為には、上記の繰り返し処理が行われる回数はすべてのターボデコーダが同じでなくてもよく、例えばサブブロックごとに繰り返しの回数が異なる制御をしても良い。
【００５０】
また、処理をさらに高速に行うためにターボ符号化されたデータに含まれるテイルビットを前もって処理しテイルビットを処理した値はメモリなどに保持しておく構成としても良い。以下に、このテイルビットを前もって処理する場合について詳細に説明する。
【００５１】
デジタル通信システムでは、伝送路において生じる誤りを訂正する誤り訂正符号が用いられている。特に移動通信システムでは、フェージングの影響により電波強度が激しく変動して誤りが生じ易いため、誤り訂正符号には高い訂正能力が要求される。
【００５２】
この誤り訂正符号としてよく用いられるものに畳み込み符号がある。図２２は一般的な畳み込み符号化器の構成例である。シフトレジスタ２２１と、排他的論理和２２２により構成される。遅延素子であるシフトレジスタ２２１の2ビット（Ｄ１とＤ２）と、畳み込み符号化器への入力の１ビット（情報ビット系列Ｕの各ビット）から、拘束長は３ということになる。シフトレジスタ２２１の初段のレジスタＤ１と情報ビット系列Ｕからの各入力1ビットとの排他的論理和の結果から冗長ビット系列Ｐ１が、シフトレジスタ２２１の後段のレジスタＤ２と情報ビット系列Ｕからの各入力1ビットの排他的論理和の結果から冗長ビット系列Ｐ２が、各々出力される。この冗長ビット系列Ｐ１と冗長ビット系列Ｐ２を合わせて符号語と呼ぶ。入力1ビットに対して出力が2ビットある為、符号化率は１／２ということになる。動作例としては、シフトレジスタ２３１を構成するレジスタＤ１とＤ２が共に０の場合、情報ビット系列Ｕから０が入力されると、冗長ビット系列Ｐ１には入力の０とＤ１の０との排他的論理和である０が出力され、冗長ビット系列Ｐ２には入力の０とＤ２の０との排他的論理和である０が出力される。そして、Ｄ１には入力の０が、Ｄ２にはＤ１の０が格納される。また、１が入力される場合は、冗長ビット系列Ｐ１には入力の１とＤ１の０との排他的論理和である１が出力され、冗長ビット系列Ｐ２には入力の１とＤ２の０との排他的論理和である１が出力される。そしてＤ１には入力の１が、Ｄ２にはＤ１の０が格納される。
【００５３】
図２２の「入力に対するシフトレジスタ２３１の変化」は、シフトレジスタ２３１のＤ１とＤ２の値の組を状態に見立てることにより、状態遷移図で表すことができる。図２３は図２３の畳み込み符号化器の状態遷移図である。左に４つある円がそれぞれ1個の状態を表している。拘束長が３、つまり図２２のシフトレジスタ２２１を構成するレジスタ数が2ビット（Ｄ１とＤ２）である為、取り得る状態は００，０１，１０，１１の４つとなる。各円内にある2桁の数字は左からそれぞれＤ１とＤ２の値を示している。円と円（状態と状態）を結ぶ矢印は状態間の遷移を表している。また、実線は入力が０、破線は入力が１の場合の遷移となる。矢印近傍に添えている文字列"Ａ／ＢＢ"は、Ａが情報ビット系列Ｕを、ＢＢがそれぞれ冗長ビット系列Ｐ１と冗長ビット系列Ｐ２を示している。
【００５４】
図２３の状態遷移図を時間軸（横軸）に展開したものを図２４に示す。４つの状態を縦一列に並べて1時点とする。隣の列の4状態は次あるいは前の時点での各状態を示す。これはトレリスと呼び、一般に畳み込み符号の復号処理にて利用される。畳み込み符号の復号は大きくビタビ復号（最尤復号）とＭＡＰ復号（最大事後確率復号）とに分けられる。以降はＭＡＰ復号について説明する。
【００５５】
図２５に、畳み込み符号におけるトレリス上のＭＡＰ復号処理例を示す。状態４０１は初期状態であり、始点（0時点）での状態が００であることを示している。ＭＡＰ復号は、始点から終点方向に処理を進めるフォワード処理４０２と、その逆（終点から始点）方向に処理を進めるバックワード処理４０３とに分けられる。ここで、フォワード処理４０２は始点での状態４０１から処理を開始すれば良いが、バックワード処理４０３は終点のどの状態から処理を開始すれば良いか分からず、適当な状態から開始すると誤り訂正能力が劣化するという問題がある。この問題を解決する手法としてトレリス終結がある。
【００５６】
図２６にトレリス終結処理の例を示す。上段はトレリス終結時のタイミング図、下段がその時のトレリスの遷移を表している。トレリス終結とはトレリスを任意の状態に終結させる処理となる。通常は状態００に終結させる。ここでトレリス上の状態とは畳み込み符号化器のシフトレジスタ１０１の値の組である。通常の畳み込み符号ではシフトレジスタ１０１には情報ビット系列が直接接続されている。図２６では状態００に終結させているが、この場合はシフトレジスタ１０１の個数（＝拘束長３−１）だけ、畳み込み符号化器に０を入力する処理となる。この時の入力をテイルビット（Ｔａｉｌ  ｂｉｔｓ）、また、この時に出力される符号語(冗長ビット系列Ｐ１と冗長ビット系列２)をターミネイションビット（Ｔｅｒｍｉｎａｔｉｏｎ  ｂｉｔｓ）と呼ぶ。
【００５７】
図２７にトレリス終結時の復号処理例を示す。トレリスの始点の状態６０１は通常００である。フォワード処理６０２はこの状態６０１から開始し、終点まで処理を進める。続いてテイルビット処理６０５を、トレリス終結状態である状態６０４から開始する。状態６０４は通常００である。そして、テイルビット処理６０５に続けてバックワード処理６０３を行うことにより、バックワード処理６０３の開始状態の問題を解決する。このようにすることで誤り訂正能力の劣化が防止できる。
【００５８】
図２８に基本的な畳み込み符号の復号シーケンスを示す。７０１はフォワード処理、７０２はテイルビット処理、７０３はバックワード処理の動作状態を示す。基本的には、まずフォワード処理７０１を開始し、その後にテイルビット処理７０２を行う。そして最後にバックワード処理７０３を行う。ただし、この場合、フォワード処理７０１の結果を全て保持しておく必要があり、その為に大容量のメモリが必要となる問題がある。この問題を解決する為、一般的にはトレリスを複数のブロックに区切り、ブロック毎に処理を進める手法が取られる。
【００５９】
図２９に一般的な畳み込み符号の復号シーケンスを示す。トレリスは８０４で示す時点分の長さにブロック分けされている。８０１はブロック分けされたフォワード処理、８０３はブロック分けされたバックワード処理である。８０２はテイルビット処理である。この時、フォワード処理の各ブロックは後段のブロックの続きからトレリス上の処理を進めればよいが、バックワード処理８０３については、トレリスの始点と終点を除く、各ブロック境界のトレリス上の状態が不明となる。このため、バックワード処理８０３の前に、バックワード処理開始状態をあらかじめ学習して求めておくという技術が、S.Benedetto et al., "Soft-Output Decoding Algorithms for Continuous Decoding of Parallel Concatenated Convolutional Codes", (Proceeding of IEEE International Conference on Communications, pp.112-117, 1996)に記載されている。これはスライディングウィンドウ方式と呼ぶ。図２９はバックワード処理の開始状態を学習する処理が無い場合の図である。以降、学習処理は省略する。
【００６０】
ここで、図２９ではバックワード処理８０３の各ブロックの処理において、最後のブロックの前にテイルビット処理８０２を行う必要がある為、バックワード処理８０３が途中で停止してしまう期間が現れる。この停止期間の為、バックワード処理８０３の制御が複雑になるという問題がある。また、バックワード処理８０３は逆方向の処理であり、復号結果も逆順に出力される。これは処理がバックワード処理８０３で終わっている為である。これを、フォワード処理８０１とバックワード処理８０３の開始する順番を入れ替え、フォワード処理で完了するシーケンスにすることにより、復号結果を順列に出力することができる。この場合、図３０に示すように、フォワード処理９０１が出力する復号結果について、そのままＣＲＣ等の誤り検出を行うことができる。誤りを訂正する復号処理と、誤り検出処理の並列動作が可能となり、処理時間が短縮される。
【００６１】
図３０にバックワード先行方式におけるＭＡＰ復号シーケンス例を示す。９０４が処理単位のブロック長を示す。フォワード処理９０１、バックワード処理９０２およびＣＲＣ処理９０６はこのブロック長９０４を基準に処理を進める。はじめにバックワード処理９０３が処理を開始する。1ブロック分の処理が終わると、バックワード処理が次のブロックの処理を開始すると共に、バックワード処理が完了したブロックについてフォワード処理９０１とＣＲＣ処理９０６が開始する。以降、バックワード処理９０３が1ブロック分先行して処理を行い、それをフォワード処理９０１とＣＲＣ処理９０６が追いかける形となる。ただし、バックワード処理９０３の最後のブロックの前にテイルビット処理９０２を行う必要がある為、バックワード処理９０２はその間、停止する。この為、フォワード処理９０１とＣＲＣ処理９０６の最後のブロックの処理開始が遅れる場合があり、その期間９０５はフォワード処理９０１およびＣＲＣ処理９０６も待機するよう、制御を行う必要がある。
【００６２】
また、誤り訂正符号の一つにターボ符号がある。シャノン限界に近い誤り訂正能力を有する符号として注目されており、例えば、第３世代の移動通信方式であるＷ−ＣＤＭＡ（Ｗｉｄｅｂａｎｄ  Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）やＣＤＭＡ−２０００で使用されている。
【００６３】
図３１のブロック図は、ターボ符号を生成するための一般的な符号化装置の構成を示している。この符号化装置１００１は、例えば、通信システムの送信側に設けられ、符号化前のデータである情報ビット系列（Ｓｙｓｔｅｍａｔｉｃ  Ｂｉｔｓ：組織部）Ｕ１を、並列連接畳み込み符号（ＰＣＣＣｓ：Ｐａｒａｌｌｅｌ  Ｃｏｎｃａｔｅｎａｔｅｄ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｃｏｄｅｓ）のターボ符号に符号化し、伝送路等の外部へ出力する。なお、ターボ符号は、並列連接符号に限らず、直列連接畳み込み符号など、ターボ復号が可能であればよい。
【００６４】
図３１に示す符号化装置１００１は、組織的畳み込み符号化器（Ｓｙｓｔｅｍａｔｉｃ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｃｏｄｅｒ）である第１の符号化器１００２及び第２の符号化器１００３と、組織部Ｕをインタリーブする（並び替える）インタリーバ（Ｉｎｔｅｒｌｅａｖｉｎｇ）１００４とを備えている。
【００６５】
第１の符号化器１００２は、入力された組織部Ｕ１を符号化して冗長ビット系列（Ｐａｒｉｔｙ  Ｂｉｔｓ：冗長部）Ｐ１を生成し、組織部Ｕ１と共にこの冗長部Ｐ１を出力する。インタリーバ１００４は、入力された組織部Ｕ１の各ビットを所定のインタリーブパターンにより並べ替えて組織部Ｕ２を生成し、この組織部Ｕ２を第２の符号化器１００３へ出力する。第２の符号化器１００３は、組織部Ｕ２を符号化して冗長部Ｐ２を生成し、組織部Ｕ２と共にこの冗長部Ｐ２を出力する。
【００６６】
符号化装置１００１では、組織部Ｕ１、冗長部Ｐ１、組織部Ｕ２、冗長部Ｐ２が生成される。組織部Ｕ１と冗長部Ｐ１の組（Ｕ１，Ｐ１）を第１の要素符号（Ｅｌｅｍｅｎｔａｌ  Ｃｏｄｅ）Ｅ１と呼び、組織部Ｕ２と冗長部Ｐ２の組（Ｕ２，Ｐ２）を第２の要素符号Ｅ２と呼ぶ。ただしＵ２については、受信側で組織部Ｕ１に、図 10のインタリーバ１００４と同様の並び替えを施す事により生成できるため出力はせず、Ｕ１、Ｐ１、Ｐ２の３つを後段に出力する。加えて、全ての組織部U１とＵ２を符号化した後は、各符号化器にテイルビット（Ｔａｉｌ  ｂｉｔｓ）が追加で入力され、各符号化器からはターミネイションビット（Ｔｅｒｍｉｎａｔｉｏｎ  ｂｉｔｓ）が出力される。
【００６７】
ターボ符号の特徴は次の２点にある。
１）比較的簡易で小さい構成の組織符号化器を複数個使用する
２）それぞれの符号化器は、符号化器入力である情報ビット系列に対して、インタリーバ（並べ替え器）を介して連接されている。
【００６８】
上記において、２）の目的は、情報ビット系列の順番を入れ換えて符号化器に入力することで、符号化器間において異なる要素符号を生成することにある。これは復号側にて、要素符号間で復号結果を補完しあうことにより、誤り訂正能力を向上させるためである。
【００６９】
１）にて組織符号化器を用いる目的は、要素符号間における復号結果の補完を、情報ビット系列を用いて行うためである。例えば３ＧＰＰ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ）では、１）に、８状態の組織的畳み込み符号化器（８  ｓｔａｔｅｓ  Ｓｙｓｔｅｍａｔｉｃ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｃｏｄｅｒ)を２個用いている。３ＧＰＰでは、Ｗ−ＣＤＭＡなどの第３世代の移動体通信システムの標準化が行なわれている。
【００７０】
このように符号化されたターボ符号を復号することをターボ復号という。図３２にターボ復号を行うための一般的な復号化装置の例を示す。ターボ復号の特徴は次の１点にある。
１）複数の要素符号間にて復号結果のひとつである外部情報（Ｅｘｔｒｉｎｓｉｃ  Ｉｎｆｏｒｍａｔｉｏｎ）を交換しながら、複数回処理を繰り返す。
【００７１】
図３４に示すように、復号化装置１１０１は、第１の復号化器１１０２、第２の復号化器１１０３、インタリーブメモリ１１０４、デインタリーブメモリ１１０５及び硬判定・ＣＲＣ判定器１１０６を有する。第１の復号化器１１０２、第２の復号化器１１０３はそれぞれ軟出力復号方法としてＭＡＰ復号がよく用いられる。
【００７２】
このような復号化装置１１０１におけるターボ復号は以下の工程からなる。
Ａ）第２の復号化器１１０３の外部情報Ｌｅ２をデインタリーブメモリ１１０５から読み出し、第１の要素符号Ｅ１と共に第１の復号化器１１０２に入力する。この時、デインタリーブメモリ１１０５から読み出した外部情報Ｌｅ２は、デインタリーブされて要素符号Ｅ１と同じ順番に並べ替えられているものとする。第１の復号化器１１０２は外部情報Ｌｅ１を出力し、インタリーブメモリ１１０４に書き込む。
Ｂ）第１の復号化器１１０２の外部情報Ｌｅ１をインタリーブメモリ１１０４から読出し、第２の要素符号と共に第２の復号化器１１０３に入力する。この時、インタリーブメモリ１１０４から読み出した外部情報Ｌｅ１は、インタリーブされて要素符号Ｅ２と同じ順番に並べ替えられているものとする。第２の復号化器１１０３は外部情報Ｌｅ２を出力し、デインタリーブメモリ１１０５に書き込む。
Ｃ）第２の復号化器１１０３の対数尤度比ＬＬＲをデインタリーブメモリ１１０５から読出し、硬判定・ＣＲＣ判定器１１０６に入力する。硬判定・ＣＲＣ判定器１１０６は対数尤度比ＬＬＲについて硬判定を行なった後、ＣＲＣによりエラーチェックを行なう。
【００７３】
先ず、Ａ）を実行する。このときの第２の復号化器１１０３からの外部情報は初期値としてゼロ（±０）とする。次に、Ｂ）を実行する。そして、再びＡ）を実行し、任意の回数だけＢ）とＡ）とを繰り返す。工程Ａ）とＢ）をあわせて繰り返し1回と数える。そして、最後の繰り返しにおいては、Ｂ）を実行したときに、第２の復号化器１１０３は、外部情報Ｌｅ２ではなく対数尤度比ＬＬＲを出力する。最後にＣ）を実行する。
【００７４】
ターボ符号は組織符号であるため、受信したターボ符号には情報ビットとして組織部Ｕ１が含まれている。外部情報とはこの情報ビットに対して復号の前に分かっている、"０"らしさ（"１"らしさと同義）を表す値（事前値）である。つまりターボ復号とは、第１、第２の要素符号間の復号において、それぞれの情報ビットが"０"である確率を交換（相互補完）しながら、その確率の確度を上げ、誤り訂正能力を強化する処理である。
【００７５】
図３３に一般的なターボ復号におけるＭＡＰ復号シーケンスを示す。フォワード処理１２０１およびバックワード処理１２０３は、トレリスを複数個に区分けしたときのブロック長１２０４毎に処理を進める。また、最後のブロックのバックワード処理１２０３の前には、テイルビット処理１２０２が行なわれる。これは、バックワード処理１２０３に停止期間が発生することにより、バックワード処理１２０３の制御が複雑になるというＭＡＰ復号の問題である。さらにターボ復号では、このＭＡＰ復号を複数回繰り返すため、テイルビット処理１２０２も同様に繰り返し処理することになる。
【００７６】
図３４に、バックワード先行方式によるターボ復号のＭＡＰ復号シーケンスを示す。第2の復号化器が復号する要素符号Ｅ２は順番がインタリーバにより並び替えられているため、もともとＣＲＣまで並列に処理することはできない。よって、バックワード先行方式は第1の復号化器の処理にのみ適用される。フォワード処理１３０１とバックワード処理１３０３は、トレリスを複数個に区分けしたブロック長１３０４のブロック毎に処理を進める。第2の復号化器の処理は通常のＭＡＰ復号と同様である。最後のブロックにおけるバックワード処理１３０３の前にテイルビット処理１３０２を行なう必要がある。第1の復号化器ではバックワード処理１３０３が初めに開始する。フォワード処理１３０１は1ブロック分遅れて処理を開始する。また、フォワード処理１３０１と並列にＣＲＣ処理１３０６も開始する。ＣＲＣ処理１３０６では第1の復号化器にてフォワード処理１３０１が出力する軟出力のうち対数尤度比について、硬判定とＣＲＣによる誤り検出を行なう。なお、第2の復号化器における軟出力はバックワード処理１３０３にて出力される。図３６を見ると、第1の復号化器におけるＭＡＰ復号ではテイルビット処理１３０２の為、バックワード処理１３０３が途中で停止するだけでなく、フォワード処理１３０１とＣＲＣ処理１３０６にも一時停止が必要となる。また、ターボ復号特有の繰り返し処理のため、テイルビット処理１３０２も同様に、何度も繰り返すことになる。
【００７７】
以上の通り、テイルビット処理について、特にＭＡＰ復号にバックワード先行方式を用いる場合、あるいは何度もＭＡＰ復号を繰り返すターボ復号の場合において、その処理、あるいは制御を低減する事が求められている。
特開２００２−２７１２０９に、ターミネイションビットの格納場所を工夫することにより、ターボ復号中にテイルビット処理にかかる負荷を低減する技術が記載されている。これは  ３ＧＰＰ  ＴＳ２５．２１２に記載されているターボ符号およびターボ符号の送信順が前提となっている。
【００７８】
図３５に、３ＧＰＰ  ＴＳ２５．２１２に記載のターボ符号化器の構成を示す。図３５のターボ符号化器は再帰的な組織的畳み込み符号化器を２つ（１４０１と１４０２）、インタリーバ１４０３(並び替え器)を介して接続した構成を取る。ここで、再帰的とはシフトレジスタの入力に排他的論理和を取る形で出力を関係付ける事である。この場合、トレリス終結は単純に"0"をテイルビットとして入力するだけでは達成できず、工夫が必要となる。図３５ではトレリス終結時、シフトレジスタの入力を"0"にする為、シフトレジスタ前段の排他的論理和の前にスイッチ１４０４を設け、入力を両方ともシフトレジスタの出力に切り替える構成を取っている。
【００７９】
ターボ符号化器の出力のうち、Ｘｋが情報ビット系列Ｕ１を、Ｚｋが冗長ビット系列Ｐ１を、Ｚ'ｋが冗長ビット系列Ｐ２を、Ｘ'ｋが情報ビット系列Ｕ２をそれぞれ表している。なお、X'kは冗長ビット系列Ｐ2に対応した情報ビット系列Ｕ２（インタリーバにより順番を並び替えた情報ビット系列Ｕ１）となるが、図３７の構成ではトレリス終結時(スイッチ１４０４が下側に切り替った時)にしか出力されない。このトレリス終結時を除き、符号化器出力であるＸｋ、Ｚｋ、Ｚ'ｋは図３６に記載の順にシリアル出力される。符号ブロック長(Code Block Size)をKとする(1〜KまでのK個)。白色の背景に黒色の斑点のセルが情報ビット系列Ｕ１、白色の背景に斑点無しのセルが情報ビット系列Ｐ１、左下がり斜線のセルが冗長ビット系列Ｐ２ということになる。
【００８０】
X'kはXkの並び替えられたものである。受信側ではXkを並び替える事で作り出せるため、トレリス終結時を除いて出力はしない。この為、3GPPのターボ符号は符号化率(Coding Rate)が1/3となる(入力1ビットに対して出力が3ビットとなり、分子が入力、分母が出力に対応している)。
【００８１】
トレリス終結時は前述の通り、図３５のスイッチ１４０４が下側に切り替わる。その際の出力は図３９に示す順にシリアルに行われる。つまり{Xk, Zk}系列を出力した後で、{X'k, Z'k}系列を出力する事になる。ここで、追加された黒色の背景に白色の斑点のセルが情報ビット系列Ｕ２となる。
【００８２】
ただし、このトレリス終結時の出力はその後の処理（Ｂｉｔ  ＳｅｐａｒａｔｅやＢｉｔ  Ｃｏｌｌｅｃｔｉｏｎ）において、図３６と順番と同じ対応で扱われる。対応関係は図３８の通りになる。右下がり斜線のセルで示した情報ビット系列Ｕ２が扱いとして削除される為、XK+2以降の対応がずれている。
【００８３】
これをそのまま（新しい対応）の順で情報ビット系列Ｕ１、冗長ビット系列Ｐ1、冗長ビット系列Ｐ2のメモリに格納すると、図３９のようになる。ターミネイションビット部分のセルは元の対応のままとする。
メモリ１８０１が情報ビット系列Ｕ１用、メモリ１８０２が冗長ビット系列Ｐ１用、メモリ１８０３が冗長ビット系列Ｐ２用になる。特に冗長ビット系列Ｐ２の順序をデインタリーブ(インタリーブによる並び換えの逆の操作)により元に戻して格納する事で、Ｕ１、Ｐ１、Ｐ２を１個のメモリに格納し、メモリ個数の削減を行う時、アドレスの生成、制御が複雑になり、また処理時間が増加する場合がある。
【００８４】
例えば図４０のように１個のメモリ１９０１に格納する場合、XK+2とZK+2のペアは異なるアドレスに格納される為、読み出しを２回行う必要が発生する。これは要素符号Ｅ１を構成する（Xk、Zk）がペアで使用され、要素符号Ｅ２を構成する（X'k、Z'k）もペアで使用される必要があるためである。
【００８５】
以上のように、ターミネイションビットの順序、扱いによってはテイルビット処理にかかる負担が増大する。この負担について、メモリへの格納方法を工夫して軽減するという技術が特開2002-271209に公開されている。上記文献によれば、ターミネイションビットについて図４１のように格納する方法が記載されている。メモリ２００１は情報ビット系列Ｕ１用、メモリ２００２は冗長ビット系列Ｐ２用、メモリ２００３は冗長ビット系列Ｐ２用になる。これによりXkとZkが格納されているメモリとアドレスがペアとなり、ターボ復号中のテイルビット処理時、ターミネイションビットを読み出す際の制御や処理にかかる負担を軽減することができる。また、X'kとZ'kが格納されているメモリとアドレスも同様にペアとなり、同様にテイルビット処理時の負担が軽減される。
【００８６】
しかしながら、従来の方法ではバックワード処理が途中で一時停止するという問題について、負担を軽減できるだけで、完全に解消するものにはなっていない。さらに、バックワード先行方式のＭＡＰ復号におけるフォワード処理、ＣＲＣ処理の一時停止制御に関しても解決していない。加えて、ターボ復号の繰り返し処理において、テイルビット処理についても毎回繰り返してしまう問題も解消されていない。
【００８７】
図４２に従来のターボ復号におけるＭＡＰ復号回路の構成を示す。入力メモリ２１０１から各要素符号を読出し、また、インタリーブメモリあるいはデインタリーブメモリ２１０６から外部情報を読出し、ＭＡＰ復号処理を進める。読み出したデータはフォワード処理に入力され、1ウィンドウ分の処理をする。ここでいうウィンドウとは、トレリスを複数個のブロックに区分けしたときの1ブロックを意味する。また同時に、その際の要素符号と外部情報はバックワード処理とテイルビット処理２１０５に受け渡すため、メモリ２１０３に格納する。バックワード処理とテイルビット処理は処理内容が同じため、回路は共有される。メモリ２１０３は入力メモリ２１０１からのデータの書込みと、バックワード処理とテイルビット処理２１０５からの読出しを同時に行なえる必要がある。フォワード処理の出力はメモリ２１０４に格納する。このメモリ２１０４はフォワード処理２１０２からの書込みと、バックワード処理とテイルビット処理２１０５からの読出しが同時に行なえる必要がある。フォワード処理２１０２が1ウィンドウ分の処理を完了すると、次のウィンドウの処理に移ると共に、バックワード処理とテイルビット処理２１０５がバックワード処理を開始する。バックワード処理とテイルビット処理２１０５はスイッチ２１０７により、メモリ２１０３から先にフォワード処理２１０２が使用したデータを読出し、また、メモリ２１０４から先にフォワード処理２１０２が出力したデータを読出して処理する。バックワード処理では軟出力として対数尤度比あるいは外部情報が出力される。これらはデインタリーブメモリあるいはインタリーブメモリ２１０６に格納される。以降は同様に、フォワード処理２１０２と、バックワード処理とテイルビット処理２１０５の並列動作を繰り返す。フォワード処理２１０２が最後のウィンドウの処理を完了すると、テイルビット処理を行うため、スイッチ２１０７により入力メモリからターミネイションビットを読み出されてバックワード処理とテイルビット処理２１０５に入力される。バックワード処理とテイルビット処理２１０５はテイルビット処理を行う。バックワード処理とテイルビット処理２１０５はテイルビット処理が完了すると、今度はその続きからバックワード処理を開始する。この時、入力はスイッチ２１０７によりメモリ２１０３側に切り替えられる。バックワード処理とテイルビット処理２１０５が最後のウィンドウの処理を完了し、その際の軟出力である対数尤度比あるいは外部情報をデインタリーブメモリあるいはインタリーブメモリ２１０６に格納するとＭＡＰ復号処理は完了する。
【００８８】
図４３に従来のターボ復号におけるバックワード処理のフローチャートを示す。図３３に示すバックワード処理のフローチャートになる。まず繰り返し回数カウント用カウンタ「cnt」を0に初期化する（２１０１）。続いてターボ復号の繰り返し処理に移る。まずは第1の復号化器の処理から始める。最初に、ウィンドウ毎に処理を進める為、処理ウィンドウ数カウント用カウンタ「win」を0に初期化する（２１０２）。また、ここでフォワード処理が1ウィンドウ分の処理を完了するまで待機する（２１０２）。フォワード処理が1ウィンドウ分の処理を完了したら、第1の復号化器におけるバックワード処理に進み、1ウィンドウ分だけ処理を行う（２１０３）。次に処理ウィンドウ数「win」が所定の回数「maxwin - 1」になったかどうか判定する（２１０４）。maxwinはトレリスを区分けした際のブロックの数であり、ウィンドウの数である。「No」であればカウンタ「win」を1インクリメントし、次の1ウィンドウ分を処理する（２１０５）。「Yes」であれば第1の復号化器のテイルビット処理を行う（２１０６）。続いて最終ウィンドウの処理を行う（２１０７）。最終ウィンドウの処理が終われば第1の復号化器の処理を抜ける。続いて、同様に第2の復号化器の処理を行う。第2の復号化器の処理が終われば、繰返し回数カウンタ「cnt」が所定の回数「maxcnt」になったかどうか判定する（２１０８）。「No」であればカウンタ「cnt」を1インクリメントして第1の復号化器の処理に戻る（２１０９）。「Yes」であれば繰返し復号処理を抜ける。
【００８９】
このように、各復号化器の処理にて、バックワード処理が最後のウィンドウの処理を開始する前に、必ずテイルビット処理を行っていることが、フォワード処理、バックワード処理、あるいはＣＲＣ処理に一時停止が必要となる問題、あるいはターボ復号でテイルビット処理を繰り返してしまう問題の原因である。
【００９０】
この問題を解決するため、テイルビット処理をターボ復号の開始前に行うこととした。処理の結果はメモリに格納しておき、ターボ復号中に必要になれば、メモリから読み出して使用するという動作を行なう。このようにすることで、バックワード処理の途中にテイルビット処理を行う必要がなくなり、バックワード処理、フォワード処理およびＣＲＣ処理における一時停止の制御および処理が不要となる。また、ターボ復号の繰り返し処理にて、テイルビット処理を毎回繰り返す問題も解消できる。
【００９１】
図４４に従来のターボ復号におけるＭＡＰ復号回路の構成を示す。まず最初に、バックワード処理とテイルビット処理２３０５はテイルビットを処理する。スイッチ２３０７を切り替えて、入力メモリ２３０１からターミネイションビットを読み出す。テイルビット処理の結果はメモリ２３０８に格納する。続いてターボ復号処理に移る。入力メモリ２３０１から各要素符号を読出し、また、インタリーブメモリあるいはデインタリーブメモリ２３０６から外部情報を読出し、ＭＡＰ復号処理を進める。読み出したデータはフォワード処理２３０２に入力され、1ウィンドウ分の処理をする。また同時に、その際の要素符号と外部情報はバックワード処理とテイルビット処理２３０５に受け渡すため、メモリ２３０３に格納する。バックワード処理とテイルビット処理は処理内容が同じため、回路は共有される。メモリ２３０３は入力メモリ２３０１からのデータの書込みと、バックワード処理とテイルビット処理２３０５からの読出しを同時に行なえる必要がある。フォワード処理２３０２の出力はメモリ２３０４に格納する。このメモリ２３０４はフォワード処理２３０２からの書込みと、バックワード処理とテイルビット処理２３０５からの読出しが同時に行なえる必要がある。フォワード処理２３０２が1ウィンドウ分の処理を完了すると、次のウィンドウの処理に移ると共に、バックワード処理とテイルビット処理２３０５がバックワード処理を開始する。バックワード処理とテイルビット処理２３０５はスイッチ２３０７により、メモリ２３０３から先にフォワード処理２３０２が使用したデータを読出し、また、メモリ２３０４から先にフォワード処理２３０２が出力したデータを読出して処理する。バックワード処理では軟出力として対数尤度比あるいは外部情報が出力される。これらはデインタリーブメモリあるいはインタリーブメモリ２３０６に格納される。以降は同様に、フォワード処理２３０２と、バックワード処理とテイルビット処理２３０５の並列動作を繰り返す。フォワード処理２３０２が最後のウィンドウの処理を完了すると、バックワード処理とテイルビット処理２３０５は最後のウィンドウにおけるバックワード処理を開始する。この時、メモリ２３０８からテイルビット処理の結果を読出して、その続きからバックワード処理を行う。入力はスイッチ２３０７によりメモリ２３０３側に切り替えられる。バックワード処理とテイルビット処理２３０５が最後のウィンドウの処理を完了し、その際の軟出力である対数尤度比あるいは外部情報をデインタリーブメモリあるいはインタリーブメモリ２３０６に格納するとＭＡＰ復号処理は完了する。
【００９２】
図４５に従来のターボ復号におけるバックワード処理のフローチャートを示す。図３３に示すバックワード処理のフローチャートになる。まず繰り返し回数カウント用カウンタ「cnt」を0に初期化する（２４０１）。続いてテイルビット処理を行う（２４０６）。この時、テイルビット処理の結果はメモリに格納しておく。続いてターボ復号の繰り返し処理に移る。まずは第1の復号化器の処理から始める。最初に、ウィンドウ毎に処理を進める為、処理ウィンドウ数カウント用カウンタ「win」を0に初期化する（２４０２）。また、ここでフォワード処理が1ウィンドウ分の処理を完了するまで待機する（２４０２）。フォワード処理が1ウィンドウ分の処理を完了したら、第1の復号化器におけるバックワード処理に進み、1ウィンドウ分だけ処理を行う（２４０３）。次に処理ウィンドウ数「win」が所定の回数「maxwin - 1」になったかどうか判定する（２４０４）。maxwinはトレリスを区分けした際のブロックの数であり、ウィンドウの数である。「No」であればカウンタ「win」を1インクリメントし、次の1ウィンドウ分を処理する（２４０５）。「Yes」であれば最終ウィンドウの処理を行う（２４０７）。ここで、先にメモリに格納しておいたテイルビット処理の結果を読み出してその続きから処理を開始する。最終ウィンドウの処理が終われば第1の復号化器の処理を抜ける。続いて、同様に第2の復号化器の処理を行う。第2の復号化器の処理が終われば、繰返し回数カウンタ「cnt」が所定の回数「maxcnt」になったかどうか判定する（２４０８）。「No」であればカウンタ「cnt」を1インクリメントして第1の復号化器の処理に戻る（２４０９）。「Yes」であれば繰返し復号処理を抜ける。
【００９３】
図４６に発明のターボ復号のＭＡＰ復号シーケンスを示す。ターボ復号の繰り返し処理を開始する前に、テイルビット処理２５０２を行なう。テイルビット処理２５０２の結果はメモリに格納しておく。それが終わるとターボ復号の繰り返し処理を開始する。ターボ復号中、バックワード処理２５０３では最後のウィンドウ開始時にテイルビット処理２５０２の結果をメモリから読み出して使用することで、一時停止することなく前のウィンドウに続けて処理を行える。
【００９４】
図４７に、発明のバックワード先行方式によるターボ復号のＭＡＰ復号シーケンスを示す。テイルビット処理以外はトレリスを複数個に区分けしたときの1ブロック長２６０４毎に処理を進める。ターボ復号の繰り返し処理を行う前にテイルビット処理２６０２を行なう。テイルビット処理の結果はメモリに格納しておく。それが終わるとターボ復号の繰り返し処理を開始する。ターボ復号中、バックワード処理２６０３では最後のウィンドウ開始時にテイルビット処理２６０２の結果をメモリから読み出して使用する。これにより、バックワード処理２６０３の他、フォワード処理２６０１およびＣＲＣ処理２６０５についても一時停止することなく前のウィンドウに続けて処理を行える。
【００９５】
テイルビット処理をＭＡＰ復号前に実施し、結果をメモリに保存する。ＭＡＰ復号中、テイルビット処理が必要な箇所にて、テイルビット処理の結果を前記メモリから読み出して使用することで、ＭＡＰ復号中のテイルビット処理が不要になる。
【００９６】
テイルビット処理をターボ復号の繰り返し処理を開始する前に実施し、結果をメモリに保存する。繰り返し処理の各ＭＡＰ復号では、テイルビット処理が必要な箇所にて、テイルビット処理の結果を前記メモリから読み出して使用することで、ターボ復号中の繰り返し処理中のテイルビット処理が不要になる。
【００９７】
ＭＡＰ復号においてバックワード処理を一時停止させる処理および制御が不要となる。また、バックワード先行方式にてフォワード処理と並列にＣＲＣ処理を行う場合、フォワード処理およびＣＲＣ処理を一時停止させる処理および制御が不要となる。ターボ復号においては、特徴である繰り返し処理の中で、テイルビット処理についても複数回、通常は8回程度繰り返していたものが、ターボ復号前に1回だけ処理すれば十分となり、テイルビット処理にかかる処理時間、演算量を削減できる。通常は１／８に削減できる。
【００９８】
なお、上記実施の形態では、インタリーブメモリ及びデインタリーブメモリとしてシングルポートメモリを２個使用した。これによって、片方を書き込み、他方を読み出し専用とし、これを切り替える事で、メモリへの外部情報の書き込みと読み出しのアクセスを図っていた。しかしながら、デコーダ側で書き込むアドレスは、それより以前にデータを読み出したアドレスである為、ターボデコーダの２倍の動作周波数でメモリを動作させ、前半のクロックで読み出し、後半のクロックで書き込むアクセスをすることで、シングルポートメモリで構成したインタリーブメモリ及びデインタリーブメモリを擬似的に２ポートメモリとすることが可能である。これによって、インタリーブメモリ及びデインタリーブメモリの回路規模を削減することが可能である。また、デコーダ内部にもつメモリについても、最も新しく読み出したアドレスに対して順次書き込みを行うようなアクセスをする事で、同様にシングルポートメモリを擬似的に２ポートメモリとすることが可能である。
【００９９】
また、上記実施の形態では、シーケンシャルリード／ライトの方向（行方向）に対してメモリのバンクを分割していた。これに対して、インタリーブリーブ／ライトの方向（列方向）に対してもメモリバンクを分割することが可能である。例えば、第２の復号部のサブブロック毎にメモリバンクを分割しても良い。これによって、並列処理数を増やすことが可能となる。
【０１００】
以上、実施の形態に基づいて、本発明について詳細に説明したが、本発明は上記した実施の形態に限らず、種々の変形を行うことが可能である。
【図面の簡単な説明】
【０１０１】
【図１】インタリーブメモリへの書き込みを示す模式図である。
【図２】インタリーブメモリからの読み出しを示す模式図である。
【図３】ターボデコーダのアクセスの競合を防止する為のアクセスタイミングを示す図である。
【図４】トレリス線図を示す。
【図５】バックワード処理、フォワード処理の様子を模式的に示した図である。
【図６】実施の形態２のコードブロックと。サブブロック、メモリの関係を示す図である。
【図７】実施の形態２のコードブロックと。サブブロック、メモリの関係を示す図である。
【図８】ターボデコーダのアクセスの競合を防止する為のアクセスタイミングを示す図である。
【図９】実施の形態３に関わるバックワード処理、フォワード処理の様子を模式的に示した図である。
【図１０】実施の形態４に関わる復号装置を示す模式図である。
【図１１】本発明の他の変形例を説明するための図である。
【図１２】ターボ符号を生成するための一般的な符号化装置を示している。
【図１３】一般的なターボ復号の復号装置を示す。
【図１４】第１の復号部及び第２の復号部が、インタリーブメモリ及びデインタリーブメモリに対しどのようにアクセスするかを説明する為の図である。
【図１５】インタリーブメモリあるいはデインタリーブメモリのメモリ空間に対して、第１、第２の復号部がアクセスする方向を示す図である。
【図１６】ターボデコーダのアクセスを説明する図である。
【図１７】アクセスの競合が起こる場合のタイミングを示す図である
【図１８】アクセスの競合を示す模式図である。
【図１９】ターボデコーダのアクセスを説明する図である。
【図２０】アクセスの競合が起こる場合のタイミングを示す図である
【図２１】アクセスの競合を示す模式図である。
【図２２】一般的な畳み込み符号化器の構成を示す図である。
【図２３】畳み込み符号化器の状態遷移図を示す。
【図２４】トレリス千図の一部を示す。
【図２５】トレリス上のＭＡＰ復号処理例を示す。
【図２６】トレリス終結処理を示す。
【図２７】トレリス終結時のＭＡＰ復号処理例を示す。
【図２８】基本的な畳み込み符号の復号シーケンスを示す。
【図２９】一般的な畳み込み符号の復号シーケンスを示す。
【図３０】バックワード先行方式による畳み込み符号のＭＡＰ復号シーケンスを示す。
【図３１】ターボエンコーダを示す図である。
【図３２】ターボデコーダを示す図である。
【図３３】一般的なターボ復号のＭＡＰ復号シーケンスを示す。
【図３４】バックワード先行方式によるターボ復号のＭＡＰ復号シーケンスを示す図である。
【図３５】3GPP TS25.212に記載のターボ符号化器の構成を示す。
【図３６】3GPP TS25.212に記載のターボ符号化器の出力順を示す。
【図３７】３GPP TS25.212に記載のターボ符号化器のターミネイションビット出力順を示す。
【図３８】3GPP TS25.212に記載のターミネイションビットの対応関係を示す。
【図３９】ターミネイションビットのメモリ格納例を示す。
【図４０】ターミネイションビットのメモリ格納例を示す。
【図４１】ターミネイションビットのメモリ格納例を示す。
【図４２】ターボ復号におけるＭＡＰ復号回路の構成を示す。
【図４３】ターボ復号におけるバックワード処理のフローチャートを示す。
【図４４】本発明のターボ復号におけるＭＡＰ復号回路の構成を示す。
【図４５】本発明のターボ復号におけるバックワード処理のフローチャートを示す。
【図４６】本発明のターボ復号のＭＡＰ復号シーケンスを示す。
【図４７】本発明のバックワード先行方式によるターボ復号のＭＡＰ復号シーケンスを示す。
【符号の説明】
【０１０２】
１０１    符号化装置
１０２、１００２、１４０１、１４９２    符号化器
１０３、１００３    符号化器
１０４、１００４、１４０３    インタリーバ
２０１    復号装置
２０２、２０３、１１０２、１１０３    復号部
２０４、１１０４    インタリーブメモリ
２０５、１１０５    デインタリーブメモリ
２０６、１１０６    判定部
２２１    シフトレジスタ
２２２    排他的論理和
４０２、６０２、７０１、８０１、９０１、２５０１、２６０１    フォワード処理
４０３、６０３、７０３、８０３、９０３、２５０３、２６０３    バックワード処理
６０５、７０２、８０２、９０２、２５０２、２６０２    テイルビット処理
Ｅ１    要素符号
Ｅ２    要素符号
Ｐ、Ｐｂ    パリティビット
Ｕ、Ｕｂ    情報ビット
Ｗｉｎ１〜Ｗｉｎ５    ウィンドウ
【図１】
2008118628.tif 000003
【図２】
2008118628.tif 000004
【図３】
2008118628.tif 000005
【図４】
2008118628.tif 000006
【図５】
2008118628.tif 000007
【図６】
2008118628.tif 000008
【図７】
2008118628.tif 000009
【図８】
2008118628.tif 000010
【図９】
2008118628.tif 000011
【図１０】
2008118628.tif 000012
【図１１】
2008118628.tif 000013
【図１２】
2008118628.tif 000014
【図１３】
2008118628.tif 000015
【図１４】
2008118628.tif 000016
【図１５】
2008118628.tif 000017
【図１６】
2008118628.tif 000018
【図１７】
2008118628.tif 000019
【図１８】
2008118628.tif 000020
【図１９】
2008118628.tif 000021
【図２０】
2008118628.tif 000022
【図２１】
2008118628.tif 000023
【図２２】
2008118628.tif 000024
【図２３】
2008118628.tif 000025
【図２４】
2008118628.tif 000026
【図２５】
2008118628.tif 000027
【図２６】
2008118628.tif 000028
【図２７】
2008118628.tif 000029
【図２８】
2008118628.tif 000030
【図２９】
2008118628.tif 000031
【図３０】
2008118628.tif 000032
【図３１】
2008118628.tif 000033
【図３２】
2008118628.tif 000034
【図３３】
2008118628.tif 000035
【図３４】
2008118628.tif 000036
【図３５】
2008118628.tif 000037
【図３６】
2008118628.tif 000038
【図３７】
2008118628.tif 000039
【図３８】
2008118628.tif 000040
【図３９】
2008118628.tif 000041
【図４０】
2008118628.tif 000042
【図４１】
2008118628.tif 000043
【図４２】
2008118628.tif 000044
【図４３】
2008118628.tif 000045
【図４４】
2008118628.tif 000046
【図４５】
2008118628.tif 000047
【図４６】
2008118628.tif 000048
【図４７】
2008118628.tif 000049