(57)【要約】【課題】ＲＡ符号の復号処理のスループットを向上させる。【解決手段】尤度情報を格納する複数の第一メモリと、事前情報を格納する複数の第二メモリと、第一メモリ及び第二メモリから順方向に読み出したデータに対して、順方向復号処理を実行する複数の第一処理部と、第一メモリ及び第二メモリから逆方向に読み出したデータに対して、逆方向復号処理を実行する複数の第二処理部と、第一処理部の処理結果及び第二処理部の処理結果を格納する複数の第三メモリ及び複数の第四メモリと、複数の第三メモリ及び複数の第四メモリから読み出されたデータを用いて合算演算を実行する複数の演算部と、複数の演算部から出力されるデータを選択する複数の第一選択部と、複数の第一選択部から出力されたデータを用いて復号処理を実行する複数の第三処理部と、複数の第三処理部から出力されたデータを選択する複数の第二選択部と、を有する。【選択図】  図２
2018007159.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡ符号によって符号化されたデータを復号する復号器であって、
前記符号化されたデータに対応する尤度情報を格納する複数の第一メモリと、
繰り返し復号処理によって算出される事前情報を格納する複数の第二メモリと、
一つの前記第一メモリ及び一つの前記第二メモリから順方向に読み出したデータに対して、前記ＲＡ符号の符号化処理において実行される累算処理に対する順方向復号処理を実行する複数の第一処理部と、
一つの前記第一メモリ及び一つの前記第二メモリから逆方向に読み出したデータに対して、前記累算処理に対する逆方向復号処理を実行する複数の第二処理部と、
一つの前記第一処理部の処理結果を格納する複数の第三メモリと、
一つの前記第二処理部の処理結果を格納する複数の第四メモリと、
前記複数の第三メモリの各々から読み出されたデータ及び前記複数の第四メモリの各々から読み出されたデータを用いて合算演算を実行する複数の演算部と、
前記複数の演算部から出力されるデータの中から少なくとも一つのデータを選択する複数の第一選択部と、
前記複数の第一選択部の各々から出力されたデータを用いて、前記ＲＡ符号の符号化処理における複製処理に対する復号処理を実行する複数の第三処理部と、
前記複数の第三処理部の各々から出力されたデータの中から少なくとも一つのデータを選択する複数の第二選択部と、を有することを特徴とする復号器。
【請求項２】
請求項１に記載の復号器であって、
前記第三メモリ及び前記第四メモリからのデータの読み出し順序を規定するインタリーブパタン生成部を有し、
前記第二メモリには、前記複数の第二選択部の各々から出力されたデータが所定の順番で書き込まれることを特徴とする復号器。
【請求項３】
請求項２に記載の復号器であって、
前記複数の第三処理部の各々は、ｄｖ個のビット毎に前記複製処理に対する復号処理を実行し、
前記複数の第三処理部の数はＭ個であり、
前記第一メモリ、前記第二メモリ、前記第一処理部、前記第二処理部、前記第三メモリ、前記第四メモリ、前記演算部、前記第一選択部、及び前記第二選択部の数は、前記ｄｖと前記Ｍとを乗算したＮ個であることを特徴とする復号器。
【請求項４】
請求項３に記載の復号器であって、
前記複数の第一選択部と前記複数の第三処理部との間に設けられ、少なくとも一つの第一選択部から出力されるデータの値を反転させる第四処理部と、
前記複数の第三処理部と前記複数の第二選択部との間に設けられ、少なくとも一つの第二選択部から出力されるデータの値を反転させる第五処理部と、を有することを特徴とする復号器。
【請求項５】
請求項３に記載の復号器であって、
前記複数の第一処理部の少なくとも一つの第一処理部は、他の第一処理部がデータを読み出す前記一つの第一メモリ及び前記一つの第二メモリから一部のデータを読み出し、当該データを用いて前記累算処理に対する順方向復号処理を実行し、
前記複数の第二処理部の少なくとも一つの第二処理部は、他の第二処理部がデータを読み出す前記一つの第一メモリ及び前記一つの第二メモリから一部のデータを読み出し、当該データを用いて前記累算処理に対する逆方向復号処理を実行することを特徴とする復号器。
【請求項６】
ＲＡ符号によって符号化されたデータを復号する復号器の復号方法であって、
前記復号器は、演算装置及びメモリを有し、
前記復号方法は、
前記復号器が、尤度情報を前記メモリに書き込むステップと、
前記復号器が、前記尤度情報を用いた繰り返し復号処理を実行するステップと、
前記復号器が、前記繰り返し復号処理を所定の回数実行することによって復号されたデータを出力するステップと、を含み、
前記繰り返し復号処理は、
前記メモリから順方向に前記尤度情報を読み出し、前記ＲＡ符号の符号化処理において実行される累算処理に対する順方向復号処理を実行し、前記メモリに処理結果を格納する第一処理と、
前記メモリから順方向に前記尤度情報を読み出し、前記累算処理に対する逆方向復号処理を実行し、前記メモリに処理結果を格納する第二処理と、
前記メモリに格納される処理結果を読み出し、前記読み出された処理結果を用いて合算演算を実行し、前記合算演算の結果を用いて前記ＲＡ符号の符号化処理における複製処理に対する復号処理を実行し、前記ＲＡ符号の符号化処理における複製処理に対する復号処理の結果を前記メモリに書き込む第三処理と、を含み、
前記第一処理及び前記第二処理が同時に並列実行された後、前記第三処理が実行されることを特徴とする復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡ（Ｒｅｐｅａｔ  Ａｃｃｕｍｕｌａｔｅ）符号の復号処理のスループットを向上させる技術に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、誤り訂正符号であるＲＡ（Ｒｅｐｅａｔ  Ａｃｃｕｍｕｌａｔｅ）符号が知られている。ＲＡ符号は、符号器が情報ビットを複製し、ランダムにインタリーブし、累算するという単純な処理で符号化する（例えば、非特許文献１参照）。
【０００３】
ＲＡ符号は、ターボ符号のように繰り返し復号処理を行うことによって、ターボ符号と同程度の誤り訂正能力を発揮できることが知られている。復号器は、非特許文献１のＦｉｇ．２に示すように、累算処理に対応したデコーダ（ＡＣＣ）及び繰り返し処理に対応したデコーダ（ＶＮＤ）をインタリーバ／デインタリーバを介して接続し、交互に処理を繰り返すことで復号を行う。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】S. ten Brink, “Design of Repeat-Accumulate Codes for Iterative Detection and Decoding,” IEEE Trans. on signal processing, Vol. 51, No. 11, Nov. 2003.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１に記載される従来の技術においては、累算処理に対する復号処理（ＡＣＣ）、デインタリーブ処理（Π−１）、インタリーブ処理（Π）がそれぞれ逐次処理となっている。図１０に従来技術の復号器の構成の概略を示す。
【０００６】
累算処理に対する復号処理は、順方向（Ｆｏｒｗａｒｄ）処理、逆方向（Ｂａｃｋｗａｒｄ）処理、及び合算（ボックス和:Ｂｏｘ  ｓｕｍ）処理から構成される。順方向処理及び逆方向処理は、互いの処理結果に依存しないため並列実行が可能である。一方、合算処理は順方向処理及び逆方向処理が終了した後に実行する必要がある。
【０００７】
ここで、符号器が、サイズが４０９６ビットである情報ビットを４回複製し、得られた１６３８４ビットをインタリーブし、累算することによって符号化が行われる場合を想定する。
【０００８】
復号処理を行う場合、ＡＣＣ処理には（１６３８４×２）クロック（順方向処理／逆方向処理：１６３８４クロック、合算処理：１６３８４クロック）、デインタリーブ処理には１６３８４クロック、インタリーブ処理には１６３８４クロックが必要となる。したがって、繰り返し復号処理を１回行うためには、最低でも６５５３６クロックが必要となる。この構成で繰り返し復号処理を２０回行う場合、復号処理全体で１３１０７２０クロックが必要になる。すなわち、復号処理に要するレイテンシは１３１０７２０クロックとなる。
【０００９】
例えば、復号器の処理クロック周波数を２００ＭＨｚと仮定した場合、復号処理のスループットは式（１）のように０．６２５Ｍｂｉｔ／秒となり、クロック速度に対して大きく低下した値となる。
【００１０】
【数１】
2018007159.tif 000003
【００１１】
本発明は、ＲＡ符号の復号処理のレイテンシを削減し、スループットを向上させることを目的とする。
【課題を解決するための手段】
【００１２】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ＲＡ符号によって符号化されたデータを復号する復号器であって、前記符号化されたデータに対応する尤度情報を格納する複数の第一メモリと、繰り返し復号処理によって算出される事前情報を格納する複数の第二メモリと、一つの前記第一メモリ及び一つの前記第二メモリから順方向に読み出したデータに対して、前記ＲＡ符号の符号化処理において実行される累算処理に対する順方向復号処理を実行する複数の第一処理部と、一つの前記第一メモリ及び一つの前記第二メモリから逆方向に読み出したデータに対して、前記累算処理に対する逆方向復号処理を実行する複数の第二処理部と、一つの前記第一処理部の処理結果を格納する複数の第三メモリと、一つの前記第二処理部の処理結果を格納する複数の第四メモリと、前記複数の第三メモリの各々から読み出されたデータ及び前記複数の第四メモリの各々から読み出されたデータを用いて合算演算を実行する複数の演算部と、前記複数の演算部から出力されるデータの中から少なくとも一つのデータを選択する複数の第一選択部と、前記複数の第一選択部の各々から出力されたデータを用いて、前記ＲＡ符号の符号化処理における複製処理に対する復号処理を実行する複数の第三処理部と、前記複数の第三処理部の各々から出力されたデータの中から少なくとも一つのデータを選択する複数の第二選択部と、を有することを特徴とする。
【発明の効果】
【００１３】
本願発明によれば、ＲＡ符号の復号処理が並列化されるため、復号処理のレイテンシを削減し、スループットを向上させることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】実施例１のＲＡ符号の符号化器の構成を示す図である。
【図２】実施例１のＲＡ符号の復号器の構成を示す図である。
【図３】実施例１のデインタリーブ側選択部が使用する選択パタンの一例を示す図である。
【図４】実施例１のデインタリーブ側選択部の内部構成の一例を示す図である。
【図５】実施例１のインタリーブ側選択部の内部構成の一例を示す図である。
【図６】実施例１の複製処理復号部の内部構成の一例を示す図である。
【図７】実施例１の復号器の各構成の動作タイミングを示す図である。
【図８】実施例２の符号化器の機能構成を示す図である。
【図９】実施例２の復号器の構成を示す図である。
【図１０】従来のＲＡ符号の復号器の構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下、実施例を図面を用いて説明する。
【実施例１】
【００１６】
図１は、実施例１のＲＡ符号の符号化器の構成を示す図である。
【００１７】
符号化器１は、パラレル／シリアル変換器１１、インタリーバ１２、累算器（Ａｃｃｕｍｕｌａｔｏｒ）１３、及びパンクチャ１４を含む。また、符号化器１は、複製手段１０を有する。
【００１８】
符号化器１は、符号化対象の情報（データ）が入力された場合、複製手段１０を用いて１ビットの入力を３ビットに複製（Ｒｅｐｅｔｉｔｉｏｎ）する複製処理を実行し、複製された情報をパラレル／シリアル変換器１１に出力する。パラレル／シリアル変換器１１は、複製された情報をシリアルデータ（ビット列）に変換し、インタリーバ１２に出力する。
【００１９】
インタリーバ１２は、入力されたビット列のビットの順序をランダムに入れ替えた後、累算器１３にビット列を出力する。累算器１３は、インタリーバ１２から入力されたビット列を累算（Ａｃｃｕｍｕｌａｔｏｒ）し、累算結果をパンクチャ１４に出力する。累算は２を法とする剰余環上の演算となり、すなわち、加算は排他的論理和と同義である。
【００２０】
パンクチャ１４は、累算結果の一部のビットを選択的に破棄し、一部のビットが破棄されたビット列を出力する。ビットの破棄方法は、例えば、３ビット中１ビットを周期的に破棄する方法でもよいし、また、ランダムに破棄するビットを決める方法でもよい。
【００２１】
例えば、符号化単位が５１２ビットのデータである場合、複製処理によって１５３６（５１２×３）ビットのビット列に変換される。３ビット中１ビットを破棄する場合、パンクチャ１４は、１５３６ビットのビット列を、１０２４ビットに削減されたビット列として出力する。前述のように、入力ビット数が５１２ビットである場合、符号化ビット数は１０２４ビットとなるので、符号化率Ｒが１／２の符号となる。
【００２２】
図１では、複製手段１０における複製数は３であるが、複製数は４以上でもよいし、また、ビットに応じて異なる複製数でもよい。ビットによって異なる複製数とした場合、特にＩＲＡ（Ｉｒｒｅｇｕｌａｒ  Ｒｅｐｅａｔ  Ａｃｃｕｍｕｌａｔｅ）符号と呼ばれる。
【００２３】
ここで、図１０を用いて、従来技術におけるＲＡ符号の復号器について説明する。
【００２４】
復号器は、各受信ビットについての尤度情報、すなわち、対数尤度比（ＬＬＲ：Ｌｏｇ  Ｌｉｋｅｌｉｈｏｏｄ  Ｒａｔｉｏ）を入力として動作する。パンクチャ１４によって破棄されたビットのＬＬＲは０で補って入力するものとする。
【００２５】
従来の復号器では、累算処理に対する復号処理を行うＡＣＣデコーダ１５が、入力されたＬＬＲ及び事前ＬＬＲをメモリから読み出す。
【００２６】
ＡＣＣデコーダ１５は、ＬＬＲ及び事前ＬＬＲに対して復号処理を実行し、復号結果をデインタリーバ１６に出力する。デインタリーバ１６は、インタリーバ１２によるビット順序の入れ替えと逆の操作を行うことによって、ビットの順番を元に戻す。デインタリーバ１６は、メモリへの書込順序と読出順序とが異なるようにすることによって実現できる。
【００２７】
シリアル／パラレル変換器１７は、デインタリーバ１６から出力されたデータを３つの並列信号に変換し、複製処理復号部１８に出力する。複製処理復号部１８は、複製されたビットに対するＬＬＲを加算することによって復号処理を実行する。複製処理復号部１８は、復号結果から入力されたそれぞれビットを減算することによって外部ＬＬＲを算出し、パラレル／シリアル変換器１９に外部ＬＬＲを出力する。パラレル／シリアル変換器１９は、入力された外部ＬＬＲをシリアルデータに変換し、インタリーバ２０に出力する。インタリーバ２０は、シリアルデータのビット順序を入れ替える。順序の入れ替え方法は、符号化器１のインタリーバ１２と同一のものとする。インタリーバ２０によってインタリーブされた外部ＬＬＲは、事前ＬＬＲとしてＡＣＣデコーダ１５に入力される。
【００２８】
所定の回数、前述した繰り返し復号処理を実行することによって、データの誤りが訂正され、最終的なデータが複製処理復号部１８から出力される。
【００２９】
図２は、実施例１のＲＡ符号の復号器１００の構成を示す図である。
【００３０】
まず、実施例１の復号器１００の概要について説明する。本実施例では、逐次処理となる累算処理に対する復号処理を分割する。分割された復号処理に含まれる順方向処理及び逆方向処理は、本来、隣接する復号処理の結果を参照し、逐次処理される必要があるため、このままでは分割した復号処理は同時に並列して実行できない。そこで、分割された復号処理は、他の復号処理の結果を参照することなく、独立に実行されるように構成する。これによって、本実施例の復号器１００では、分割された複数の復号処理を同時に並列実行できる。また、デインタリーバ及びインタリーバを複数の部分に分割し、それぞれの部分が別々にデインタリーブ処理及びインタリーブ処理を実行する。さらに、分割されたデインタリーブ処理とインタリーブ処理との間でデータをランダムに入れ替えるために、複数の選択手段（セレクタ）を介して複製処理に対する復号処理を実行する復号器に接続する。
【００３１】
上記の特性を実現する復号器１００は、複数のチャネル情報メモリ１０１、複数の事前（ａ  ｐｒｉｏｒｉ）情報メモリ１０２、複数の順方向（Ｆｏｒｗａｒｄ）復号演算部１０３、複数の逆方向（Ｂａｃｋｗａｒｄ）復号演算部１０４、複数の順方向復号結果メモリ１０６、複数の逆方向復号結果メモリ１０７、複数のボックス和（Ｂｏｘ  ｓｕｍ）演算部１０８、デインタリーブ側選択部１０９、複製処理復号部１１０、及びインタリーブ側選択部１１１を含む。
【００３２】
なお、順方向復号演算部１０３、逆方向復号演算部１０４、ボックス和演算部１０８、複製処理復号部１１０は、プロセッサ等の演算装置で実現してもよいし、専用の回路で実現してもよい。
【００３３】
図２は、累算処理に対する復号処理を６つに分割した場合における復号器１００の構成を示す。復号器１００内の情報の流れに沿って各構成について説明する。
【００３４】
復号器１００は、各受信ビットについての尤度情報、すなわち、ＬＬＲを入力として動作する。
【００３５】
復号器１００に入力されたビットに対するＬＬＲは、チャネル情報メモリ１０１−１、１０１−２、１０１−３、１０１−４、１０１−５、１０１−６の数にしたがって分割され、各チャネル情報メモリ１０１に書き込まれる。なお、符号化器１のパンクチャ１４によって破棄されたビットに対するＬＬＲは、０を補って入力される。
【００３６】
繰り返し復号処理の初回では、事前情報メモリ１０２が初期化される。
【００３７】
順方向復号演算部（ａｌｐｈａ  ｐｒｏｃｅｓｓｏｒ）１０３は、一つのチャネル情報メモリ１０１及び一つの事前情報メモリ１０２から、受信ビットの順方向に、順次、ＬＬＲを読み出し、読み出されたＬＬＲを用いて順方向復号処理を実行する。また、各順方向復号演算部１０３は、一つの順方向復号結果メモリ１０６に、順方向に復号結果を格納する。例えば、順方向復号演算部１０３−１は、チャネル情報メモリ１０１−１及び事前情報メモリ１０２−１からＬＬＲを読み出し、順方向復号結果メモリ１０６−１に復号結果を格納する。
【００３８】
逆方向復号演算部（ｂｅｔａ  ｐｒｏｃｅｓｓｏｒ）１０４は、チャネル情報メモリ１０１及び事前情報メモリ１０２から、受信ビットの逆方向に、順次、ＬＬＲを読み出し、読み出されたＬＬＲを用いて逆方向復号処理を実行する。また、逆方向復号演算部１０４は、逆方向復号結果メモリ１０７に対して、逆方向に復号結果を格納する。例えば、逆方向復号演算部１０４−１は、チャネル情報メモリ１０１−１及び事前情報メモリ１０２−１からＬＬＲを読み出し、逆方向復号結果メモリ１０７−１に復号結果を格納する。
【００３９】
順方向と逆方向にＬＬＲを同時に読み出すために、チャネル情報メモリ１０１及び事前情報メモリ１０２は、デュアルポートメモリ、又は、二重構成であるものとする。なお、チャネル情報メモリ１０１、事前情報メモリ１０２、順方向復号結果メモリ１０６、及び複数の逆方向復号結果メモリ１０７は、それぞれ、物理的なメモリモジュールを用いて実現してもよいし、復号器１００が有するメモリを複数の空間に分割し、それぞれのメモリ空間を用いて各メモリを実現してもよい。
【００４０】
累算処理に対する復号処理は、順方向復号処理、逆方向復号処理、及び合算（ボックス和:Ｂｏｘ  ｓｕｍ）処理から構成される。本実施例では、合算処理をデインタリーブ処理と順序を入れ替えることによって、復号処理の所要クロック数を削減する。
【００４１】
このため、ボックス和演算部１０８は、合算処理に先立ち、順方向復号結果メモリ１０６及び逆方向復号結果メモリ１０７からデータをランダムな順番で読み出す。これによって、インタリーブ処理の前半処理を行う。
【００４２】
この際、読み出し順序は、送信側のインタリーバ１２における順序の入れ替えに対応したものである。例えば、復号器１００がインタリーブパタン生成部を別途備え、インタリーブパタン生成部にしたがって読み出し順序を決定する。
【００４３】
ボックス和演算部１０８は、ランダムな順番で読み出された順方向復号結果及び逆方向復号結果を合算するボックス和演算処理を実行し、デインタリーブ側選択部１０９に演算結果を出力する。
【００４４】
デインタリーブ側選択部１０９は、並列化された複数のビット内で順序を入れ替えた演算結果を複製処理復号部１１０に出力する。このとき、デインタリーブ側選択部１０９からの出力は、各複製処理復号部１１０−１、１０１−２に３ｂｉｔ分ずつ入力される。
【００４５】
複製処理復号部１１０は、複製処理に対応した復号処理を実行する。複製処理復号部１１０は、復号結果から算出された外部（Ｅｘｔｒｉｎｓｉｃ）ＬＬＲをインタリーブ側選択部１１１に出力する。
【００４６】
インタリーブ側選択部１１１は、並列化された複数のビット内で順序を入れ替えた演算結果を、事前情報メモリ１０２に格納する。なお、インタリーブ側選択部１１１は、事前情報メモリ１０２にランダムな順番でデータを書き込む。
【００４７】
以上が繰り返し復号処理の一回分の処理の流れの説明である。
【００４８】
次の繰り返し復号処理では、順方向復号演算部１０３及び逆方向復号演算部１０４は、チャネル情報メモリ１０１及び事前情報メモリ１０２からそれぞれＬＬＲを読み出し、２回目の復号処理を実行する。
【００４９】
以降、上記繰り返し復号処理は、規定回数だけ繰り返し実行される。規定回数目の繰り返し復号処理において、複製処理復号部１１０−１、１１０−２は、事後（ａ  ｐｏｓｔｅｒｉｏｒｉ）情報を復号結果として出力する。
【００５０】
次に、順方向復号演算部１０３の動作の詳細を説明する。順方向復号演算部１０３は、式（２）にしたがってαiを算出する。なお、ｂｏｘ＿ｓｕｍはボックス和演算を表し、式（３）で定義される。なお、ボックス和演算は、式（３）を近似する演算に置き換えてもよい。
【００５１】
【数２】
2018007159.tif 000004
【００５２】
【数３】
2018007159.tif 000005
【００５３】
ａｐｉは事前情報メモリ１０２から読み出されたＬＬＲである。ｃｈｉはチャネル情報メモリ１０１から読み出されたＬＬＲである。初期値α０は０とする。順方向復号演算部１０３は、ｉを１ずつ加算して、「１」から「２５５」まで式（１）にしたがってαｉを算出する。
【００５４】
次に、逆方向復号演算部１０４の動作の詳細を説明する。逆方向復号演算部１０４は、式（４）にしたがってβｉを算出する。なお、ボックス和演算は式（３）で定義される。
【００５５】
【数４】
2018007159.tif 000006
【００５６】
ａｐｉは事前情報メモリ１０２から読み出されたＬＬＲである。ｃｈｉはチャネル情報メモリ１０１から読み出されたＬＬＲである。初期値β２５５はｃｈ２５５とする。逆方向復号演算部１０４は、ｉを１ずつ減算して、「２５４」から「０」まで式（４）にしたがってβｉを算出する。
【００５７】
次に、ボックス和演算部１０８の動作の詳細を説明する。ボックス和演算部１０８は、順方向復号結果メモリ１０６及び逆方向復号結果メモリ１０７からＬＬＲ（αｉ及びβｉ）をランダムな順番で読み出し、式（５）にしたがってｅｘｉを算出する。なお、ボックス和演算は式（３）で定義される。
【００５８】
【数５】
2018007159.tif 000007
【００５９】
次に、デインタリーブ側選択部１０９の動作の詳細を説明する。図３は、実施例１のデインタリーブ側選択部１０９が使用する選択パタンの一例を示す図である。図４は、実施例１のデインタリーブ側選択部１０９の内部構成の一例を示す図である。
【００６０】
図３の例では、選択パタンが４種類存在する。デインタリーブ側選択部１０９は、エントリ順に、又はランダムな順番で使用する選択パタンを切り替える。
【００６１】
デインタリーブ側選択部１０９は、複数のセレクタ１１２を含む。図４に示すデインタリーブ側選択部１０９は、図３に示した選択パタンに対応した構成となっている。
【００６２】
図３の１番目の選択パタン（Ｎｏ．が１の選択パタン）が使用される場合、セレクタ１１２−１は６番目の入力を、セレクタ１１２−２は１番目の入力を、セレクタ１１２−３は４番目の入力を、セレクタ１１２−４は５番目の入力を、セレクタ１１２−５は３番目の入力を、セレクタ１１２−６は２番目の入力をそれぞれ選択し、出力する。
【００６３】
図３の２番目の選択パタン（Ｎｏ．が２の選択パタン）が使用される場合、セレクタ１１２−１は３番目の入力を、セレクタ１１２−２は２番目の入力を、セレクタ１１２−３は５番目の入力を、セレクタ１１２−４は４番目の入力を、セレクタ１１２−５は１番目の入力を、セレクタ１１２−６は６番目の入力をそれぞれ選択し、出力する。
【００６４】
図３の３番目の選択パタン及び４番目の選択パタンが使用される場合も同様である。
【００６５】
次に、インタリーブ側選択部１１１の動作の詳細を説明する。図５は、実施例１のインタリーブ側選択部１１１の内部構成の一例を示す図である。
【００６６】
インタリーブ側選択部１１１は、複数のセレクタ１１３を含む。インタリーブ側選択部１１１は、デインタリーブ側選択部１０９の逆作用として動作する。図５に示すインタリーブ側選択部１１１は、図３に示した選択パタンに対応した構成となっている。
【００６７】
図３の１番目の選択パタンが使用される場合、セレクタ１１３−６は１番目の入力を、セレクタ１１３−１は２番目の入力を、セレクタ１１３−４は３番目の入力を、セレクタ１１３−５は４番目の入力を、セレクタ１１３−３は５番目の入力を、セレクタ１１３−２は６番目の入力を、それぞれ選択し、出力する。
【００６８】
図３の２番目の選択パタンが使用される場合、セレクタ１１３−３は１番目の入力を、セレクタ１１３−２は２番目の入力を、セレクタ１１３−５は３番目の入力を、セレクタ１１３−４は４番目の入力を、セレクタ１１３−１は５番目の入力を、セレクタ１１３−６は６番目の入力をそれぞれ選択し、出力する。
【００６９】
図３の３番目の選択パタン及び４番目の選択パタンが使用される場合も同様である。
【００７０】
次に、複製処理復号部１１０の動作の詳細を説明する。図６は、実施例１の複製処理復号部１１０の内部構成の一例を示す図である。
【００７１】
複製処理復号部１１０は、複数の加算器１１４、１１５を含む。加算器１１４は、複製処理復号部１１０に入力された３つのＬＬＲを加算することによって、事後（ａ  ｐｏｓｔｅｒｉｏｒｉ）ＬＬＲを算出する。算出された事後ＬＬＲは、各加算器１１５に出力される。また、３つのＬＬＲは、それぞれ、加算器１１５に出力される。各加算器１１５は、事後ＬＬＲから入力されたＬＬＲを減算することによって外部ＬＬＲを算出し、当該外部ＬＬＲを出力する。
【００７２】
規定回数目の繰り返し復号処理において、事後ＬＬＲが復号結果として出力される。
【００７３】
本実施例において、図１に示した通り、符号化器１は、１ビットを３ビットに複製する複製処理を実行するため、複製処理復号部１１０−１、１１０−２は、それぞれ、３つの入力（ＬＬＲ）を加算する。加算するＬＬＲの数は複製処理において複製されたビット数に対応したものとなる。
【００７４】
ここで、図７を用いて、復号器１００全体の動作タイミングについて説明する。図７は、実施例１の復号器１００の各構成の動作タイミングを示す図である。復号器１００は、復号を開始するに当たり、以下のような処理が実行される。
【００７５】
まず、チャネル情報メモリ１０１に分割されたＬＬＲが書き込まれる（Ｗｒｉｔｅ）。なお、符号化器１のパンクチャ１４によって破棄されたビットに対応するＬＬＲは０を補って書き込まれる。また、復号器１００は、事前情報メモリ１０２の全ての領域に０を書き込むことによって初期化を行う（Ｗｒｉｔｅ  ａｌｌ０）。
【００７６】
次に、繰り返し復号処理の前半処理が実行される。
【００７７】
順方向復号演算部１０３は、チャネル情報メモリ１０１及び事前情報メモリ１０２から順方向にデータを読み出し（Ｒｅａｄ（Ｆ））、順方向復号処理を実行する（Ｏｐ．）。順方向復号演算部１０３は、順次、順方向復号結果メモリ１０６に順方向に復号結果を書き込む（Ｗｒｉｔｅ（Ｆ））。
【００７８】
また、逆方向復号演算部１０４は、チャネル情報メモリ１０１及び事前情報メモリ１０２から逆方向にデータを読み出し（Ｒｅａｄ（Ｂ））、逆方向復号処理を実行する（Ｏｐ．）。逆方向復号演算部１０４は、順次、逆方向復号結果メモリ１０７に逆方向に復号結果を書き込む（Ｗｒｉｔｅ（Ｂ））。
【００７９】
順方向復号演算部１０３及び逆方向復号演算部１０４が実行する処理は並列的に実行される。
【００８０】
次に、繰り返し復号処理の後半処理が実行される。
【００８１】
ボックス和演算部１０８は、順方向復号結果メモリ１０６及び逆方向復号結果メモリ１０７からランダムな順番でデータを読み出し（Ｒｅａｄ（Ｒ））、読み出されたデータを用いてボックス和演算処理を実行する（Ｏｐ．）。ボックス和演算結果は、デインタリーブ側選択部１０９を介して、複製処理復号部１１０に出力される。
【００８２】
複製処理復号部１１０は、ボックス和演算結果に対して復号処理を実行することによって、外部ＬＬＲを算出する（Ｏｐ．）。外部ＬＬＲは、ランダムな順序で事前情報メモリ１０２に書き込まれる（Ｗｒｉｔｅ（Ｒ））。
【００８３】
以上で説明したように、本実施例では、２サイクルで繰り返し復号処理が完了する。
【００８４】
規定回数目の繰り返し復号処理が実行された場合（図７ではＬ回）、複製処理復号部１１０は、事後情報を復号結果として出力する（Ｏｕｔｐｕｔ）。
【００８５】
次に、従来の復号器と実施例１の復号器１００との違いについて説明する。以下では、復号器に入力される情報ビット（尤度情報）のサイズは５１２ビットとする。
【００８６】
従来の復号器は、情報ビットを３つに複製して、１５３６ビットの情報ビットをＡＣＣデコーダ１５に出力する。このとき、ＡＣＣデコーダ１５の処理には（１５３６×２）クロック要し、デインタリーバ１６の処理には１５３６クロック要し、また、インタリーバ２０の処理には１５３６クロック要する。したがって、１回の繰り返し復号処理を実行するためには６１４４クロック要する。
【００８７】
なお、複製処理に対応する復号処理では、デインタリーブメモリからのデータの読出処理、及びインタリーブメモリへのデータの書込処理は並列に実行できることから、所要のクロック数からは除外している。
【００８８】
繰り返し復号処理の実行回数を２０回とした場合、復号器が最終的なデータを出力するまでに要する全処理クロック数、すなわち、レイテンシは、１２２８８０クロックとなる。したがって、処理クロック周波数が２００ＭＨｚの復号器を用いた場合、スループットは、式（６）に示すように０．８３３Ｍｂｉｔ／秒となる。
【００８９】
【数６】
2018007159.tif 000008
【００９０】
一方、本実施例の復号器１００は、情報ビットを３つに複製して、１５３６ビットの情報ビットを処理する場合、それぞれの入力が６つ分割され、各入力に対して繰り返し復号処理が並列実行される。したがって、繰り返し復号処理の前半処理には式（７）に示すように２５６クロック要し、繰り返し復号処理の後半処理には式（８）に示すように２５６クロック要する。
【００９１】
【数７】
2018007159.tif 000009
【００９２】
【数８】
2018007159.tif 000010
【００９３】
複製処理に対する復号処理では、順方向復号結果メモリ１０６及び逆方向復号結果メモリ１０７（デインタリーブメモリ）からのデータの読み出し、事前情報メモリ１０２（インタリーブメモリ）へのデータの書込を並列的に実行することができるため、所要の処理クロック数から除いている。
【００９４】
繰り返し復号処理の実行回数を２０回とした場合、復号器１００が最終的なデータを出力するまでに要する全処理クロック数、すなわち、レイテンシは、式（９）に示すように１０２４０クロックとなる。これは、従来の復号器の所要処理クロック数の１２分の１のクロック数（レイテンシ）であることから、本実施例の復号器１００は、従来の復号器より１２倍のスループットを得ることができる。
【００９５】
【数９】
2018007159.tif 000011
【００９６】
例えば、処理クロック周波数が２００ＭＨｚの復号器１００を用いた場合、スループットは式（１０）に示すように１０Ｍｂｉｔ／秒となる。
【００９７】
【数１０】
2018007159.tif 000012
【００９８】
本実施例では、ＡＣＣデコーダ１５が実行する処理が、順方向復号処理及び逆方向復号処理と、ボックス和演算処理とに分け、それぞれがデインタリーブ処理及びインタリーブ処理を同時に並列して実行できるようにしたことからスループットを向上させることができる。
【００９９】
実施例１では、入力されたＬＬＲを６つに分け、６つの繰り返し復号処理を並列実行する構成であったが、必要に応じて分割数及び並列実行数を変更してもよい。分割数及び並列実行数を大きくすることによって、レイテンシを小さくし、また、スループットを向上させることができる。
【０１００】
また、実施例１では、複製処理の複製数を３、並列数を６（＝３×２）としたため、チャネル情報メモリ１０１、事前情報メモリ１０２、順方向復号演算部１０３、逆方向復号演算部１０４、順方向復号結果メモリ１０６、逆方向復号結果メモリ１０７、ボックス和演算部１０８、デインタリーブ側選択部１０９内のセレクタ１１２、インタリーブ側選択部１１１内のセレクタ１１３の数はそれぞれ６個であり、複製処理復号部１１０の数は２個である。
【０１０１】
より一般的には、複製処理の複製数をｄｖ、並列数をＮ（＝Ｍ×ｄｖ）とした場合、チャネル情報メモリ１０１、事前情報メモリ１０２、順方向復号演算部１０３、逆方向復号演算部１０４、順方向復号結果メモリ１０６、逆方向復号結果メモリ１０７、ボックス和演算部１０８、デインタリーブ側選択部１０９内のセレクタ１１２、インタリーブ側選択部１１１内のセレクタ１１３の数はそれぞれＮ個であり、複製処理復号部１１０の数はＭ個である。
【０１０２】
従来の復号器の一回の繰り返し復号処理は、メモリからの順方向及び逆方向のデータの読み出し、ボックス和及びデインタリーバへの書き込み、並びに、デインタリーバからの読み出し、複製処理に対する復号処理、及びインタリーバへの書き込みの３回のサイクルで終了する。一方、本実施例の復号器１００の一回の繰り返し復号処理は、図７に示すように２回のサイクルで終了する。すなわち、実施例１の復号器１００は、繰り返し復号処理を並列化させるだけではなく、繰り返し復号処理内の処理に含まれる処理の並列度を高めている。これによって、さらに、スループットを向上させることができる。
【実施例２】
【０１０３】
実施例２では、復号器１００がスクランブラを含む点が実施例１と異なる。以下、実施例１との差異を中心に、実施例２について説明する。
【０１０４】
図８は、実施例２の符号化器１の構成を示す図である。
【０１０５】
実施例２では、符号化器１は、新たに、シリアル／パラレル変換器２１及びスクランブラ２２を含む。
【０１０６】
シリアル／パラレル変換器２１は、２ビット分のデータを並列化し、それぞれを複製手段１０−１、１０−２を用いて複製し、合計６ビットのデータをスクランブラ２２に出力する。
【０１０７】
スクランブラ２２は、複製手段１０によって得られたビット列のうち、所定の数のビットを反転させる。これによって、ビット列の全てのビットが０である場合等、特殊な入力に対して符号語内のビットが０又は１のいずれかに偏ることを防止できる。本実施例では、ビット列の半数のビット（３ビット）を反転している。
【０１０８】
他の構成は、実施例１と同一であるため説明を省略する。
【０１０９】
図９は、実施例２の復号器１００の構成を示す図である。
【０１１０】
実施例２の復号器は、新たに、デスクランブラ１１６及びスクランブラ１１７を含む。
【０１１１】
デスクランブラ１１６及びスクランブラ１１７は、符号化器１のスクランブラ２２と同様ものであり、スクランブラ２２によって反転されたビットに対応するＬＬＲの符号を反転させる。
【０１１２】
実施例２によれば、０又は１に偏った情報ビットが入力された場合でも、０又は１に偏った符号語が生成されることを防ぐことができる。したがって、例えばＯＦＤＭ（Ｏｒｔｈｏｇｏｎａｌ  Ｆｒｅｑｕｅｎｃｙ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘ）変調を行った場合に、スペクトルに偏りが発生することを防止できる。また、１６ＱＡＭ（Ｑｕａｄｒａｔｕｒｅ  Ａｍｐｌｉｔｕｄｅ  Ｍｏｄｕｌａｔｉｏｎ）等の多値変調を行った場合に、変調シンボルの電力が偏ることを防止できる。
【０１１３】
情報ビットに対してスクランブルを実行して同様の効果を期待する構成が知られているが、スクランブルパタンと同じ情報ビット列が入力された場合には全てのビットが０となってしまう。これに対して、実施例２の復号器１００は、どのような情報ビットが入力された場合でも全てのビットが０又は１になることがない。
【実施例３】
【０１１４】
実施例３では、順方向復号演算部１０３及び逆方向復号演算部１０４が実行する処理が一部異なる。以下、実施例１との差異を中心に、実施例３について説明する。
【０１１５】
実施例３の復号器１００の構成は実施例１と同一であるため説明を省略する。
【０１１６】
実施例３では、順方向復号演算部１０３−１は、０から２５５までαｉを算出するが、順方向復号演算部１０３−２、１０３−３、１０３−４、１０３−５、１０３−６が、所定の数だけ遡った点から２５５までのαｉを算出する。ここでは、−１６まで遡るものとする。この場合、順方向復号演算部１０３−２、１０３−３、１０３−４、１０３−５、１０３−６は、−１６から２５５までのαｉを算出する。なお、初期値α−１６は０とする。
【０１１７】
順方向復号演算部１０３−２は、事前情報メモリ１０２−１から読み出されるａｐ２４０からａｐ２５５、及び、チャネル情報メモリ１０１−１から読み出されるｃｈ２４０からｃｈ２５５を用いて、α−１５からα０を算出するために必要なａｐ−１６からａｐ−１、及び、ｃｈ−１６からｃｈ−１を算出する。
【０１１８】
また、順方向復号演算部１０３−３は、事前情報メモリ１０２−２から読み出されるａｐ２４０からａｐ２５５、及び、チャネル情報メモリ１０１−２から読み出されるｃｈ２４０からｃｈ２５５を用いて、α−１５からα０を算出するために必要なａｐ−１６からａｐ−１、及び、ｃｈ−１６からｃｈ−１を算出する。
【０１１９】
このように、順方向復号演算部１０３−２、１０３−３、１０３−４、１０３−５、１０３−６は、隣接する事前情報メモリ１０２−１、１０２−２、１０２−３、１０２−４、１０２−５から読み出されるａｐ２４０からａｐ２５５、及び、隣接するチャネル情報メモリ１０１−１、１０１−２、１０１−３、１０１−４、１０１−５から読み出されるｃｈ２４０からｃｈ２５５を用いて、α−１５からα０を算出するために必要なａｐ−１６からａｐ−１、及び、ｃｈ−１６からｃｈ−１を算出する。なお、順方向復号演算部１０３−２、１０３−３、１０３−４、１０３−５、１０３−６は、順方向復号結果メモリ１０６−２、１０６−３、１０６−４、１０６−５、１０６−６には、復号結果α−１５からα−１を書き込まずに破棄する。
【０１２０】
また、実施例３では、逆方向復号演算部１０４−６は、２５５から０までβｉを算出するが、逆方向復号演算部１０４−１、１０４−２、１０４−３、１０４−４、１０４−５が、所定の数だけ遡った点から０までのβｉを算出する。ここでは、２７１まで遡るものとする。この場合、逆方向復号演算部１０４−１、１０４−２、１０４−３、１０４−４、１０４−５は、２７１から０までのβｉを算出する。なお、初期値β２７１はｃｈ２７１とする。
【０１２１】
逆方向復号演算部１０４−５は、事前情報メモリ１０２−６から読み出されるａｐ１５からａｐ０、及び、チャネル情報メモリ１０１−６から読み出されるｃｈ１５からｃｈ０を用いて、β２７１からβ２５６を算出するために必要なａｐ２７１からａｐ２５６、及び、ｃｈ２７１からｃｈ２５６を算出する。
【０１２２】
また、逆方向復号演算部１０４−４は、事前情報メモリ１０２−５から読み出されるａｐ１５からａｐ０、及び、チャネル情報メモリ１０１−５から読み出されるｃｈ１５からｃｈ０を用いて、β２７１からβ２５６を算出するために必要なａｐ２７１からａｐ２５６、及び、ｃｈ２７１からｃｈ２５６を算出する。
【０１２３】
このように、逆方向復号演算部１０４−１、１０４−２、１０４−３、１０４−４、１０４−５は、隣接する事前情報メモリ１０２−２、１０２−３、１０２−４、１０２−５、１０２−６から読み出されるａｐ１５からａｐ０、及び、隣接するチャネル情報メモリ１０１−２、１０１−３、１０１−４、１０１−５、１０１−６から読み出されるｃｈ１５からｃｈ０を用いて、β２７１からβ２５６を算出するために必要なａｐ２７１からａｐ２５６、及び、ｃｈ２７１からｃｈ２５６を算出する。なお、逆方向復号演算部１０４−１、１０４−２、１０４−３、１０４−４、１０４−５は、逆方向復号結果メモリ１０７−１、１０７−２、１０７−３、１０７−４、１０７−５には、復号結果β２７１からβ２５６を書き込まずに破棄する。
【０１２４】
本来、符号語全体に対して逐次処理となる累算処理に対する復号処理を複数に分割することによる劣化が発生する。しかし、所定の順方向復号演算部１０３及び所定の逆方向復号演算部１０４が、所定の数だけ遡った点から復号結果を算出することによって、前述した劣化を抑えることができる。
【０１２５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１２６】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１２７】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１２８】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１２９】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１３０】
１  符号化器
１０  複製手段
１１、１９  パラレル／シリアル変換器
１２、２０  インタリーバ
１３  累算器
１４  パンクチャ
１５  ＡＣＣデコーダ
１６  デインタリーバ
１７、２１  シリアル／パラレル変換器
１８  複製処理復号部
２２  スクランブラ
１００  復号器
１０１  チャネル情報メモリ
１０２  事前情報メモリ
１０３  順方向復号演算部
１０４  逆方向復号演算部
１０６  順方向復号結果メモリ
１０７  逆方向復号結果メモリ
１０８  ボックス和演算部
１０９  デインタリーブ側選択部
１１０  複製処理復号部
１１１  インタリーブ側選択部
１１２、１１３  セレクタ
１１４、１１５  加算器
１１６  デスクランブラ
１１７  スクランブラ
【図１】
2018007159.tif 000013
【図２】
2018007159.tif 000014
【図３】
2018007159.tif 000015
【図４】
2018007159.tif 000016
【図５】
2018007159.tif 000017
【図６】
2018007159.tif 000018
【図７】
2018007159.tif 000019
【図８】
2018007159.tif 000020
【図９】
2018007159.tif 000021
【図１０】
2018007159.tif 000022