(57)【要約】  復号化装置は、信号ビット列を分割したデータブロックを複数組み合わせて、それぞれの組に含まれるデータブロック間で生成された冗長ビットとデータブロックを誤り訂正符号化したコードブロックとを入力し、コードブロック内のビット列を入力とする。そして、信号ビットの信頼度情報を算出し、さらに、算出された信頼度情報を入力として、コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの新たな信頼度情報を算出する処理を繰り返す。さらに、それぞれの組に含まれるデータブロック間で生成された冗長ビットとブロック内反復演算部で繰り返し算出される信頼度情報を基に、冗長ビットの生成に寄与した信号ビットの信頼度を示すブロック間信頼度情報を算出し、ブロック間信頼度情報を該当する信号ビットの信頼度情報としてブロック内反復演算部に入力する処理を繰り返す。
2011024260.tif 000002
【特許請求の範囲】
【請求項１】
入力された信号ビット列をデータブロックに分割する分割部と、
前記データブロックをそれぞれ誤り訂正符号化し、信号ビットの信頼度を推定する演算を複数回実行する繰り返し復号演算によって復号可能なコードブロックをそれぞれ生成する符号化部と、
前記分割されたデータブロックを複数組み合わせた、それぞれの組のデータブロック間でビット演算を行うことにより冗長ビットを生成する生成部と、
前記生成されたコードブロックと冗長ビットとを出力する出力部と、
を備える符号化装置。
【請求項２】
前記冗長ビットのうちの幾つかを送信対象として選別するとともに、選別された冗長ビットの数に応じて前記コードブロックからビットを間引く出力ビット数調整部をさらに備える請求項１に記載の符号化装置。
【請求項３】
前記出力部は、前記コードブロックの符号化率に応じて決定されるビット数で前記コードブロックの組に含まれるビットを、前記冗長ビットに置換する請求項１または２に記載の符号化装置。
【請求項４】
入力された信号ビット列をデータブロックに分割する分割部と、
前記データブロックをそれぞれ誤り訂正符号化し、信号ビットの信頼度を推定する演算を複数回実行する繰り返し復号演算によって復号可能なコードブロックをそれぞれ生成する符号化部と、
前記分割されたデータブロックを複数組み合わせた、それぞれの組のデータブロック間でビット演算を行うことにより冗長ビットを生成する生成部と、
前記生成されたコードブロックと冗長ビットとを受信機に送信する送信部と、
を備える送信機。
【請求項５】
信号ビット列を分割したデータブロックを複数組み合わせて、それぞれの組に含まれるデータブロック間で生成された冗長ビットと前記データブロックを誤り訂正符号化したコードブロックとを入力する入力部と、
前記コードブロック内のビット列を入力として、前記コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの信頼度情報を算出し、さらに、算出された信頼度情報を入力として、前記コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの新たな信頼度情報を算出する処理を繰り返すブロック内反復演算部と、
前記それぞれの組に含まれるデータブロック間で生成された冗長ビットと前記ブロック内反復演算部で繰り返し算出されるデータブロック内の信号ビットの信頼度情報を基に、前記それぞれの組含まれるデータブロック内の前記冗長ビットの生成に寄与した信号ビットの信頼度を示すブロック間信頼度情報を算出し、前記ブロック間信頼度情報を該当する信号ビットの信頼度情報として前記ブロック内反復演算部に入力する処理を繰り返すブロック間反復演算部と、を備える復号化装置。
【請求項６】
前記ブロック内反復演算部および前記ブロック間反復演算部による信頼度情報の算出を所定の限度まで繰り返す制御部と、
前記所定の限度まで信頼度情報の算出が繰り返された後、前記ブロック内反復演算部または前記ブロック間反復演算部で算出された信頼度情報を基に、前記データブロックのそれぞれの信号ビットの推定値を算出する出力部と、をさらに備える請求項５に記載の復号化装置。
【請求項７】
前記コードブロックは、信号ビット列と前記情報ビット列から生成された第１検査ビット列と前記第１検査ビット列に所定の入れ替え操作を行った第２検査ビット列とを含み、
前記ブロック内反復演算部は、第１復号化部と第２復号化部とを有し、
前記第１復号化部は、前記信号ビット列の値を基にしたそれぞれのビットの信頼度情報および前記信頼度情報の前回演算結果に基づく信頼度情報の増分値を含む第１の事前推定値と前記第１検査ビット列とを基に、前記データブロックのそれぞれの信号ビットの信頼度情報の第１の増分値を算出して前記第２復号化部に入力し、
前記第２復号化部は、前記信号ビット列の値を基にしたそれぞれのビットの信頼度情報、前記信頼度情報の前回演算結果に基づく信頼度情報の増分値、および前記第１の増分値を含む第２の事前推定値と前記第２検査ビット列とを基に、前記データブロックのそれぞれのビットの信頼度情報の第２の増分値を算出して前記第１復号化部に入力するとともに、前記第２の事前推定値に前記第２の増分値を加算して前記データブロックのそれぞれの信号ビットの信頼度情報として前記ブロック間反復演算に入力する請求項５または６に記載の復号化装置。
【請求項８】
前記コードブロックは、ターボ符号化されたコードブロックであり、
前記ブロック内反復演算部は、複数の要素復号化器が互いに、信号ビットの信頼度情報の増分値を供給しながら軟判定復号による信号ビットの信頼度情報の生成を繰り返すことにより、ターボ符号化されたコードブロックをターボ復号化する複数のターボ復号化部を有し、
前記ターボ復号化部に含まれる複数の要素復号化器のうち、少なくとも１つの要素復号化器が、他の全てのターボ復号化部による信号ビットの信頼度情報と前記冗長ビットとに基づいて、当該ターボ復号化部が処理するコードブロックに誤り訂正符号化されているデータブロックの信号ビットに対する信頼度情報の増分値を生成する請求項５から７のいずれか１項に記載の復号化装置。
【請求項９】
前記複数のコードブロックは、ＣＲＣ符号を含み、
前記所定の限度まで信頼度情報の算出が繰り返されるまでの間、前記信頼度情報に基づく前記データブロックのそれぞれのビットの推定値に対するＣＲＣを行い、符号誤りがないと判定した場合には、前記信頼度情報を最大に変更して前記ブロック内反復演算部に入力するＣＲＣ演算部をさらに備える請求項５から８のいずれか１項に記載の復号化装置。
【請求項１０】
前記コードブロックは、所定の検査行列による検査式を満たす低密度パリティ符号で符号化され、
前記ブロック内反復演算部は、前記検査行列の行に対応するチェック演算部と、前記コードブロックのそれぞれの信号ビットに対応する情報ビット演算部とを含み、
前記チェック演算部は、前記検査行列の行に対応して設けられ、前記行の要素が１の列に対応する前記コードブロックの信号ビットの組み合わせが前記行の検査式を満足する条件にしたがって、当該組み合わせ中のそれぞれの信号ビットの信頼度情報を、当該組み合わせ中の他の信号ビットから算出し、
前記情報ビット演算部は、コードブロック内の信号ビットに対応して設けられ、複数のチェック演算部で算出された当該信号ビットに対する部分信頼度情報を加算して前記コードブロックのそれぞれのビットに対応する信頼度情報を算出し、
前記ブロック間反復演算部は、前記情報ビット演算部によって算出される前記データブロックのそれぞれのビットの信頼度情報と前記データブロック間の冗長ビットとから前記それぞれのビットの新たな信頼度情報を算出し、前記情報ビット演算部を通じて前記チェック演算部に入力する請求項５に記載の復号化装置。
【請求項１１】
信号ビット列を分割したデータブロックを複数組み合わせて、それぞれの組に含まれるデータブロック間で生成された冗長ビットと前記データブロックを誤り訂正符号化したコードブロックとを受信する受信部と、
前記コードブロック内のビット列を入力として、前記コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの信頼度情報を算出し、さらに、算出された信頼度情報を入力として、前記コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの新たな信頼度情報を算出する処理を繰り返すブロック内反復演算部と、
前記それぞれの組に含まれるデータブロック間で生成された冗長ビットと前記ブロック内反復演算部で繰り返し算出されるデータブロック内の信号ビットの信頼度情報を基に、前記それぞれの組含まれるデータブロック内の前記冗長ビットの生成に寄与した信号ビットの信頼度を示すブロック間信頼度情報を算出し、前記ブロック間信頼度情報を該当する信号ビットの信頼度情報として前記ブロック内反復演算部に入力する処理を繰り返すブロック間反復演算部と、を備える受信機。
【発明の詳細な説明】
【技術分野】
【０００１】
本書でなされる開示は、誤り訂正の技術に関する。
【背景技術】
【０００２】
周知のように、デジタル通信においては、送信機から送信されたビット列のうちの何れかのビットの符号が、その送信中に入れ替わってしまうことがある。この現象は、符号誤り（ビットエラー）と称されている。符号誤りを生じさせる種々の要因は、通信路上から完全に排除することができない。そこで、デジタル通信の信頼性の向上のため、送信機と受信機には、それぞれ、誤り訂正符号化器と誤り訂正復号化器が、備えられている。誤り訂正符号化器は、符号誤りを検出して訂正できるようにするための誤り訂正符号を生成する。これにより、誤り訂正復号器では、誤り訂正符号化されたビット列に符号誤りが生じていた場合にこの符号誤りを訂正する可能性を高めることができる。なお、誤り訂正符号は、送信機・受信機間のデジタル通信に限られず、様々なデジタル情報処理装置、例えば、デジタルデータの記録装置・再生装置などにも利用可能である。【０００３】
誤り訂正符号化器の一つに、ターボ符号化器がある。ターボ符号化では、組織ビット列と、第１の検査ビット列と、第２の検査ビット列とを含む組織的符号を生成する。ここで、組織ビット列とは、入力されたビット列そのものを言う。また、第１の検査ビット列は、例えば、入力されたビット列に対し、過去に入力されたビット列を加算することにより生成される再帰的畳み込み符号である。また、第２の検査ビット列は、例えば、入力されたビット列をインターリーブして得られるビット列に対し、過去にインターリーブして得られたビット列を加算することにより生成される再帰的畳み込み符号である。また、インターリーブとは、データレートを保持したままビット列を所定の手順でシャッフルすることを言う。【０００４】
また、誤り訂正復号化器の一つに、ターボ復号化器がある。ターボ復号化では、組織ビット列内の各ビットについて、ビットが「１」又は「０」であることについての高い信頼度をターボ処理によって獲得することにより、符号誤りのない組織ビット列を確定させる。ターボ処理では、例えば、２個の要素復号化器が外部値、すなわち、信頼性の増分を互いに供給しながら軟判定復号を繰り返す。なお、軟判定復号を繰り返すことで受信ビット列から送信ビット列を推定する手順を採用する符号化・復号化方式としては、例えば低密度パリティ符号の復号方式が知られている。低密度パリティ符号は、ＬＤＰＣとも称される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１４１７５６号公報
【特許文献２】特開２００５−２９５１９２号公報
【特許文献３】特表２００６−５２８８４８号公報
【特許文献４】特表２００７−５２５１０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＬＴＥ［Long Term Evolution］は、平成２２年（西暦２０１０年）頃からの世界中でのサービス開始に向けて、３ＧＰＰ［Third Generation Partnership Project］の参加団体により策定された移動体通信の国際標準規格である。なお、ＬＴＥは、Ｅ−ＵＴＲＡ［Evolved Universal Terrestrial Radio Access］、Ｅ−ＵＴＲＡＮ［Evolved Universal Terrestrial Radio Access Network］、又は、Ｓｕｐｅｒ３Ｇとも称されている。【０００７】
このＬＴＥの技術仕様書ＳＴ３６．２１２の８．５．０版には、誤り訂正符号化処理の一つとして、コードブロック分割が規定されている。コードブロック分割では、送信データは、同一のサイズを持つ複数のコードブロックに分割される。コードブロックには、それぞれ、例えば、符号誤りの検出に利用されるＣＲＣ［Cyclic Redundancy Check］符号が付加され、その後、ターボ符号化が行われる。受信機では、ターボ復号化されたコードブロックに付加されているＣＲＣ符号が確認される。受信機は、何れか１つのコードブロックにでも符号誤りが検出されれば、全てのコードブロックの再送、すなわち、送信データの再送を送信側に要求する。【０００８】
一般に誤り訂正符号の復号処理は、コードブロック全体で、一番もっともらしいbit系列を選ぶことにより行われる。理論的には符号長が長いほど特性がよくなる。【０００９】
しかしながら、送信データをコードブロックに分割しないとなると、誤り訂正復号化器の回路規模をかなり大きくせねばならない。また、受信機における誤り訂正復号化という複雑な処理が、ＴＴＩ［Transmission Time Interval］以内で終わらなくなってしまう可能性もある。なお、ＴＴＩは、移動端末に割り当てられる最小の送信時間間隔である。したがって、現実的な符号では符号長に限界がある。そのため、ＬＴＥなどの標準化仕様では、この符号長の限界に十分近いサイズでコードブロックが分割されるようになっている。【００１０】
ところが、コードブロックに分割した場合、分割しない場合と比較して誤り率が低下し、特性が劣化する。これは、コードブロックへの分割によって誤り訂正に寄与する情報の範囲が限定され、誤り訂正能力が劣ってしまうためである。【００１１】
本発明の一態様は、前述した従来技術の有する問題点に鑑みてなされたものであり、その課題は、コードブロック分割処理が行われるデジタル通信の信頼性を向上させることにある。
【課題を解決するための手段】
【００１２】
本発明の一態様である符号化装置は、入力された信号ビット列をデータブロックに分割する分割部と、データブロックをそれぞれ誤り訂正符号化し、信号ビットの信頼度を推定する演算を複数回実行する繰り返し復号演算によって復号可能なコードブロックをそれぞれ生成する符号化部と、分割されたデータブロックを複数組み合わせた、それぞれの組のデータブロック間でビット演算を行うことにより冗長ビットを生成する生成部と、生成されたコードブロックと冗長ビットとを出力する出力部と、を備える。【００１３】
また、本発明の一態様である復号化装置は、前述した課題を解決するため、以下の複数の要素を含むことを特徴としている。本復号化装置は、信号ビット列を分割したデータブロックを複数組み合わせて、それぞれの組に含まれるデータブロック間で生成された冗長ビットとデータブロックを誤り訂正符号化したコードブロックとを入力する入力部を有する。また、本復号化装置は、コードブロック内のビット列を入力として、コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの信頼度情報を算出し、さらに、算出された信頼度情報を入力として、コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの新たな信頼度情報を算出する処理を繰り返すブロック内反復演算部を有する。また、本復号化装置は、それぞれの組に含まれるデータブロック間で生成された冗長ビットとブロック内反復演算部で繰り返し算出されるデータブロック内の信号ビットの信頼度情報を基に、それぞれの組含まれるデータブロック内の冗長ビットの生成に寄与した信号ビットの信頼度を示すブロック間信頼度情報を算出し、ブロック間信頼度情報を該当する信号ビットの信頼度情報としてブロック内反復演算部に入力する処理を繰り返すブロック間反復演算部と、を有する。
【発明の効果】
【００１４】
従って、本発明の一態様によれば、ビット列をブロックに分割する分割処理が行われるデジタル信号の信頼性が、向上することとなる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態である無線通信システムの構成を示す図
【図２】送信機の構成を示す図
【図３】誤り訂正符号化ユニットの構成を示す図
【図４】第１のターボ符号化回路の構成を示す図
【図５】ＲＳＣ符号化部の構成を示す図
【図６】ビット列の分割とターボ符号化とを模式的に示す図
【図７】冗長ビット列の生成を模式的に示す図
【図８】ターボ符号化されたコードブロックと冗長ビット列との関係を示す図
【図９】組織的符号に対する冗長ビット列の挿入率とパケット誤り率との関係をグラフとして示す図
【図１０】受信機の構成を示す図
【図１１】誤り訂正復号化ユニットの構成を示す図
【図１２】第１のターボ復号化回路の構成を示す図
【図１３】第１のＳＩＳＯ復号化部の構成を示す図
【図１４】相補復号化部の構成を示す図
【図１５】ブロック誤り率とシンボル当たりのエネルギー対ノイズ密度の比との関係をグラフとして示す図
【図１６】第１のターボ復号化回路２１で実行されるターボ復号処理を示すフローチャート
【図１７】実施例２に係る送信機の構成を例示する図
【図１８】実施例２に係る受信機の構成を例示する図
【図１９】ＬＤＰＣユニットの詳細構成を例示する図
【図２０】タナーグラフの例
【図２１】実施例２に係る誤り訂正復号化ユニットの処理手順を示す図
【図２２】実施例３に係る復号化装置の構成例示する図
【発明を実施するための形態】
【００１６】
以下、本実施形態である無線通信システムについて、添付図面を参照しながら、説明する。
【００１７】
なお、以下に説明する無線通信システムは、あくまでも実施形態であり、本発明の一態様である送信機、他の一態様である受信機、及び、その他の態様が、以下に説明する具体的な技術事項に限定されるものではない。
【実施例１】
【００１８】
《構成》
図１は、本実施形態である無線通信システムの構成を示す図である。【００１９】
無線通信システムは、送信機１０と受信機２０とを含んでいる。送信機１０は、高周波の電気信号を生成し、電気信号を電波に変換して放射する。受信機２０は、感受した電波を電気信号に変換して取得する。なお、電波は、送信機１０と受信機２０との間においては、中継器により中継されてもよい。中継器としては、例えば、携帯電話中継器（回線補償器）、ＰＨＳ［Personal Handyphone System］用電波中継器（レピータ）、無線ＬＡＮ［Local Area Network］ルータ、無線ハブがある。【００２０】
〈送信機〉
図２は、送信機１０の構成を示す図である。【００２１】
送信機１０は、バイナリソース１０ａ、コードブロック分割ユニット１０ｂ、誤り訂正符号化ユニット１０ｃ、レートマッチングユニット１０ｄ、変調ユニット１０ｅ、周波数アップコンバータ１０ｆ、アンテナ１０ｇ、及び、通信制御ユニット１０ｈを、含んでいる。【００２２】
バイナリソース１０ａは、各種の処理の結果であるデジタル情報をビット列として出力する。なお、バイナリソース１０ａとしては、例えば、ＣＰＵ［Central Processing Unit］、記憶ユニット、記録ユニットを含むコンピュータがある。記憶ユニットとしては、例えば、ＤＲＡＭ［Dynamic Random Access Memory］、及び、ＳＲＡＭ［Static Random Access Memory］がある。記録ユニットとしては、例えば、ＳＳＤ［Solid State Drive］装置、ＨＤＤ［Hard Disk Drive］装置、ＢＤ［Blu-ray Disk］ドライブ装置、ＤＶＤ［Digital Versatile Disk］ドライブ装置、＋Ｒ／＋ＲＷドライブ装置、ＣＤ［Compact Disk］ドライブ装置、メモリーカードドライブ装置、及び、フレキシブルディスクドライブ装置がある。コンピュータとしては、例えば、パーソナルコンピュータ、携帯電話機、及び、ＰＤＡ［Personal Digital Assistant］がある。パーソナルコンピュータとしては、例えば、デスクトップ型ＰＣ［Personal Computer］、ノートブック型ＰＣ、ラップトップ型ＰＣ、ペンコンピュータ、ネットブック、及び、ウェアラブルコンピュータがある。【００２３】
コードブロック分割ユニット１０ｂは、バイナリソース１０ａから入力されたビット列を、Ｎ個のビット数を持つコードブロックに分割する。例えば、ＬＴＥ［Long Term Evolution］では、ビット数Ｎの最大値は、６１４４ビットとなっている。また、本実施形態では、ビット列は、２個のコードブロックに分割されているが、３個以上に分割されてもよい。コードブロック分割ユニット１０ｂは、入力されたビット列を、互いに同じビット数を持つ複数のコードブロックに分割する。入力されたビット列が、分割数で割り切れない場合、コードブロック分割ユニット１０ｂは、入力されたビット列に数ビットを補完して、割り切れるようにする。この補完については、例えば、特開２００１−３０８７２０号公報に記載されている。コードブロック分割ユニット１０ｂが、分割部に相当する。【００２４】
なお、実施例１以下の実施例において、誤り訂正符号化されていないビット列が分割されたデータをデータブロックと呼ぶ場合がある。データブロックは、コードブロックがまだ誤り訂正符号化される前の状態であることを明示するための名称である。したがって、コードブロックという場合には、データブロックおよびデータブロックが誤り訂正符号化されたデータとしてのコードブロックの両方を含むものとする。【００２５】
誤り訂正符号化ユニット１０ｃは、コードブロック分割ユニット１０ｂから出力された２個のコードブロックの誤り訂正符号化を行う。誤り訂正符号化ユニット１０ｃが、符号化部に相当する。誤り訂正符号化ユニット１０ｃの具体的な構成については、後述する。【００２６】
レートマッチングユニット１０ｄは、誤り訂正符号化ユニット１０ｃから出力されたビット列の中から実際に送信するビットを選別する。当然、選別されなかったビットは送信されないことになる。なお、選別されるビットの位置、すなわち、間引かれるビットの位置は、通信制御ユニット１０ｈから与えられる符号化率（コーディングレート）に応じて変えられる。ここで、符号化率は、例えば、ｍビットの情報を符号化したときの符号語のビットが数Ｍであるとき、符号化率＝ｍ／Ｍによって定義できる。【００２７】
本無線通信システムでは、符号化率の値に応じてどのビットが選別されるかが、予め決められている。従って、受信機２０は、送信機１０から符号化率が通知されるだけで、間引かれたビットがどこに存在するかが分かるようになっている。選別されるビットの選別方法の具体例については、後述する。【００２８】
変調ユニット１０ｅは、レートマッチングユニット１０ｄから出力されるビット列をベースバンド信号としてキャリア信号に乗せる変調を行う。なお、変調方式は、通信制御ユニット１０ｈからの指示に応じて変えられる。変調方式としては、例えば、ＱＰＳＫ［Quadrature Phase Shift Keying］、１６ＱＡＭ［Quadrature Amplitude Modulation］、及び、６４ＱＡＭがある。【００２９】
周波数アップコンバータ１０ｆは、変調ユニット１０ｅから出力される変調されたキャリア信号の周波数を無線周波数にアップコンバートする。アップコンバートされたキャリア信号は、アンテナ１０ｇにおいて電波に変換されて放射される。【００３０】
通信制御ユニット１０ｈは、通信路の状況、送信データ量、データの優先度などに応じて、符号化率と変調方式とを決定する。また、通信制御ユニット１０ｈは、制御用のチャンネルを通じて、受信機２０に、符号化率と変調方式を示す情報とを送信するようになっている。また、物理ビット数が物理リソースにより変化するため、通信制御ユニット１０ｈは、物理ビット数を確定するための情報も、制御用のチャンネルを通じて受信機２０に送信する。ここで、物理ビット数は、例えば、送信機１０がアンテナ１０ｇからＴＴＩ［Transmission Time Interval］当たりに送信できるビット数で示される。また、物理リソースは、例えば、ＬＴＥ（ＯＦＤＭ［Orthogonal Frequency Division Multiplexing］）では、サブキャリア数であり、ＨＳＤＰＡ［High Speed Downlink Packet Access］（ＣＤＭＡ［Code Division Multiple Access］）では、コード数である。レートマッチングユニット１０ｄが、出力部に相当する。ただし、レートマッチングユニット１０ｄからアンテナ１０ｇに至る送信機の構成が出力部に相当すると考えることもできる。【００３１】
図３は、誤り訂正符号化ユニット１０ｃの構成を示す図である。【００３２】
誤り訂正符号化ユニット１０ｃは、第１のＣＲＣ［Cyclic Redundancy Check］符号付加回路１１、第２のＣＲＣ符号付加回路１２、第１のターボ符号化回路１３、第２のターボ符号化回路１４、及び、冗長ビット生成回路１５を、含んでいる。なお、本実施形態では、コードブロック分割ユニット１０ｂから２個のコードブロックが並列に出力される。並列に出力される２個のコードブロックを並列に処理するため、誤り訂正符号化ユニット１０ｃには、ＣＲＣ符号付加回路とターボ符号化回路とが、それぞれ２個ずつ備えられている。但し、コードブロック分割ユニット１０ｂから３個以上のコードブロックが並列出力される場合、誤り訂正符号化ユニット１０ｃは、ＣＲＣ符号付加回路とターボ符号化回路とを、それぞれ、並列に出力されるコードブロックと同数備えるようにしてもよい。【００３３】
第１及び第２のＣＲＣ符号付加回路１１、１２は、入力されたコードブロックにＣＲＣ符号を付加する。ここで、コードブロックに付加されるＣＲＣ符号は、ｎ個のビット列を（ｎ−１）次の多項式で表現した場合には、その（ｎ−１）次の多項式を所定の生成多項式で割って得られる剰余の式を基に作成される。生成多項式は、送信機１０と受信機２０とで同じものが用いられるよう、予め取り決められている。受信機２０では、受信したコードブロックを基に多項式を作成する。そして、受信語から得られた多項式が、所定の生成多項式で除算される。そして、除算による余りがＣＲＣ符号と一致すれば、受信機２０は、受信したコードブロックには符号誤りがないと、判断する。逆に、除算による余りがＣＲＣ符号と一致しなければ、受信機２０は、受信したコードブロックに符号誤りがあると、判断する。このように、ＣＲＣ符号は、コードブロックにおける符号誤りを検出するために用いられる。【００３４】
第１及び第２のターボ符号化回路１３、１４は、第１及び第２のＣＲＣ符号付加回路１１、１２によってＣＲＣ符号が付加されたコードブロックのターボ符号化を行う。ここで、ターボ符号化では、例えば、組織ビット列と、第１の検査ビット列と、第２の検査ビット列とが作成される。ここで、組織ビット列は、入力されたコードブロック内のビット列そのものである。また、第１の検査ビット列は、例えば、入力されたコードブロックに対し、過去に入力されたコードブロックを加算することにより生成される再帰的畳み込み符号によって作成される。また、第２の検査ビット列は、入力されたコードブロックをインターリーブして得られるビット列に対し、過去にインターリーブして得られたビット列を加算することにより生成される再帰的畳み込み符号により作成される。また、インターリーブでは、データレートを保持したままコードブロック内のビット列が所定の手順でシャッフルされる。なお、逆インターリーブでは、コードブロック内のビット列が上記所定の手順と逆の手順でシャッフルされる。【００３５】
図４は、第１のターボ符号化回路１３の構成を示す図である。【００３６】
第１のターボ符号化回路１３は、入力されたコードブロックを、そのまま、組織ビット列として出力する。また、第１のターボ符号化回路１３は、第１のＲＳＣ［Recursive systematic convolutional］符号化部１３ａと、インターリーブ部１３ｂと、第２のＲＳＣ符号化部１３ｃとを、含んでいる。第１のＲＳＣ符号化部１３ａは、入力されたビット列に対し、過去に入力されたビット列を再帰的に加算し、加算されたビット列を第１の検査ビット列として出力する。具体的には、第１のＲＳＣ符号化部１３ａは、例えば、数個のｍビットシフトレジスタと、２を法とする数個のｍビット加算器とを含んでいる。図５に例示する第１のＲＳＣ符号化部１３ａでは、入力側から順に、２を法とする第１のｍビット加算器１３１と、３個のｍビットシフトレジスタ１３２〜１３４と、２を法とする第２のｍビット加算器１３５とが、直列に接続されている。第１のｍビット加算器１３１は、ビット列の入力があると、入力されたビット列に、第１及び第２のｍビットシフトレジスタ１３２、１３３の出力ビット列を加算して、第１のｍビットシフトレジスタ１３２に出力する。第１のｍビットシフトレジスタ１３２は、第１のｍビット加算器１３１からビット列の入力があると、内部に保持しているビット列を、第１及び第２のｍビット加算器１３１、１３５と第２のｍビットシフトレジスタ１３３へ出力する。第２のｍビットシフトレジスタ１３３は、第１のｍビットシフトレジスタ１３２からビット列の入力があると、内部に保持しているビット列を、第１のｍビット加算器１３１と第３のｍビットシフトレジスタ１３４へ出力する。第３のｍビットシフトレジスタ１３４は、第２のｍビットシフトレジスタ１３３からビット列の入力があると、内部に保持しているビット列を第２のｍビット加算器１３５へ出力する。第２のｍビット加算器１３５は、第１及び第３のｍビットシフトレジスタ１３２、１３４から出力されたビット列を加算して出力する。このように、図５に例示される第１のＲＳＣ符号化部１３ａは、入力されたビット列に対し、過去に入力されたビット列を再帰的に加算して、第１の検査ビット列として出力する。本実施形態では、図４に示す第２のＲＳＣ符号化部１３ｃも、第１のＲＳＣ符号化部１３ａと同様に、図５に例示されるような構成を有する。但し、第２のＲＳＣ符号化部１３ｃには、インターリーブ部１３ｂによりインターリーブされたビット列が、入力される。このため、第２のＲＳＣ符号化部１３ｃは、インターリーブされたビット列に対し、過去にインターリーブされたビット列を再帰的に加算して出力する。従って、第２のＲＳＣ符号化部１３ｃは、第２の検査ビット列を出力することとなる。【００３７】
本実施形態では、図３に示す第２のターボ符号化回路１４も、図４に示した構成と同じ構成を有している。従って、第２のターボ符号化回路１４は、入力されたコードブロックをそのまま組織ビット列として出力し、第１のＲＳＣ符号化部から第１の検査ビット列を出力し、第２のＲＳＣ符号化部から第２の検査ビット列を出力する。【００３８】
図６は、ビット列の分割とターボ符号化とを模式的に示す図である。【００３９】
図６に、並列にターボ符号化される２つのコードブロックを示す。図６に示すように、本実施形態では、バイナリソース１０ａから出力されたビット列は、所定ビット数を持つ第１及び第２のコードブロックに分割される。すでに述べたように、ターボ符号化前のコードブロックは、符号化前であることを明確にする場合には、データブロックとも称される。なお、この分割は、前述したように、コードブロック分割ユニット１０ｂにおいて行われる。また、情報ビット数とＣＲＣ符号とを含むビット数がコードブロックサイズ２個よりも小さい場合には、２個目のコードブロックの空き領域には、固定値、例えば、ビット０が充当された後にＣＲＣ符号が付加される。第１のコードブロックは、図３に示す第１のＣＲＣ符号付加回路１１によりＣＲＣ符号が付加された後、第１のターボ符号化回路１３によりターボ符号化されて、組織的符号に変換される。この組織的符号は、組織ビット列と、第１の検査ビット列と、第２の検査ビット列を有する。また、第２のコードブロックは、図３に示す第２のＣＲＣ符号付加回路１２によりＣＲＣ符号が付加された後、第２のターボ符号化回路１４によりターボ符号化されて、組織的符号に変換される。この組織的符号も、組織ビット列と、第１の検査ビット列と、第２の検査ビット列を有する。なお、第１及び第２のコードブロックは、それぞれターボ符号化されて組織的符号に変換された後、図２に示すように、レートマッチングユニット１０ｄへ出力される。【００４０】
図３に示す冗長ビット生成回路１５は、図７の模式図に示すように、第１及び第２のコードブロックから、冗長ビット列を生成する。冗長ビット生成回路１５が、生成部に相当する。冗長ビット列は、データブロック間のパリティビットとも呼ぶことができる情報である。例えば、冗長ビット生成回路１５は、第１及び第２のコードブロックにおける先頭から末尾までの各位置について、ビット同士の排他的論理和（Exclusive OR）をとって冗長ビットを生成する。従って、冗長ビット生成回路１５は、第１及び第２のコードブロックと同じビット数の冗長ビット列を出力することとなる。また、各冗長ビットは、ターボ符号化された第１及び第２のコードブロックに対し、図８に示すような関係を有することとなる。すなわち、第１及び第２のコードブロックは、冗長ビット列を通じて互いに相関を持つこととなる。なお、本実施形態では、コードブロック分割ユニット１０ｂから２個のコードブロックが出力されるため、冗長ビット生成回路１５は、第１及び第２のコードブロックにおける先頭から同一番目のビット同士の排他的論理和をとっている。但し、コードブロック分割ユニット１０ｂから３個以上のコードブロックが出力される場合、冗長ビット生成回路１５は、３個以上のコードブロックにおける先頭から同一番目のビット同士の排他的論理和をとることとなる。何れにしても、冗長ビット列は、図２に示すように、レートマッチングユニット１０ｄへ出力される。なお、本実施形態では、冗長ビットは、各コードブロックから１ビットずつ取り出して、排他的論理和を取ることによって、生成しているが、本発明の各態様は、これに限定されない。例えば、冗長ビットは、各コードブロックから２ビット以上の所定ビット数ずつ取り出して、排他的論理和を取ることによって、生成されてもよい。【００４１】
また、第２のコードブロックを所定ビット巡回シフトした後に、第１のコードブロックと第２のコードブロックとの間で排他的論理和を取るようにしてもよい。【００４２】
また、冗長ビットの作成手順は、同一番目のビット同士の排他的論理和には限定されない。例えば、ブロック符号として知られているどのような符号化方法を採用してもよい。例えば、コードブロックから選択されたビットを含むビット列に対して、ＣＲＣ符号化を行ってよい。また、コードブロックから選択されたビットを含むビット列に対して、所定の手順によってハッシュ値を得るようにしてもよい。したがって、冗長ビットは、第１のコードブロックと第２のコードブロックに対する様々なビット演算から生成できる。【００４３】
レートマッチングユニット１０ｄでは、前述したように、誤り訂正符号化ユニット１０ｃから出力されたビット列の中から、実際に送信するビットが選別される。ビットの選別方法としては、例えば、Ｎビットの中から（Ｎ−Ｍ）ビットを選別する場合、すなわち、Ｍビットを間引く場合、間引きパラメータｅを使用する方法がある。間引きパラメータｅの初期値をＮとし、その間引きパラメータｅから、Ｍのａ倍の値を繰り返し減算する。そして、ｎ回目の減算を行った結果、間引きパラメータｅがゼロ以下となったときに、ｎ番目のビットを間引き対象として決定する。その後、間引きパラメータｅに、Ｎのａ倍の値を加算して、Ｍのａ倍の値を繰り返し減算する処理を再開する。このような間引き対象の決定をＮ回繰り返すことにより、Ｍビットの間引き対象が決定され、すなわち、（Ｎ−Ｍ）ビットが選別されることとなる。例えば、１０ビットから３ビットを間引く場合において、ａを１としたときには、Ｎが１０であり、Ｍが３であるから、初期値１０からＭのａ倍の値を繰り返し減算すると、４回目で間引きパラメータｅは、−２となる。その後、間引きパラメータｅに、Ｎのａ倍の値である１０を加算して、減算を再開すると、７回目で、間引きパラメータは、−１となる。その後、間引きパラメータｅに、Ｎのａ倍の値である１０を加算して、減算を再開すると、１０回目で、間引きパラメータは、０となる。この事例では、１０ビット中、４番目、７番目、１０番目のビットが間引かれることとなる。なお、レートマッチングユニット１０ｄは、組織ビット列と、第１の検査ビット列と、第２の検査ビット列とで、ａの値を変えるものであってもよい。本実施形態では、組織ビット列と、第１の検査ビット列と、第２の検査ビット列は、互いに同じビット数であるため、ａの値を変えることにより、異なる位置のビットが間引かれることとなる。なお、第１の検査ビット列に対するａの値と、第２の検査ビット列に対するａの値は、送信機１０と受信機２０とにおいて、予め決められている。【００４４】
本実施形態の誤り訂正符号化ユニット１０ｃは、図３に示すように、冗長ビット生成回路１５を備えている。このため、従来の誤り訂正符号化ユニットに比べると、より多くのビット列が送信対象として出力されることとなる。しかしながら、前述したように、物理ビット数は決まっているため、誤り訂正符号化ユニット１０ｃがレートマッチングユニット１０ｄに出力するビット数が、物理ビット数を超えてしまう場合がある。この場合、レートマッチングユニット１０ｄは、冗長ビット列が存在しないときに比べて、第１及び第２の検査ビット列を多く間引くようになっている。このため、出力ビット数が物理ビット数を超えることがない。なお、レートマッチングユニット１０ｄは、組織ビット列を間引くこともできるが、組織ビット列におけるビットの欠落は、第１及び第２の検査ビット列におけるビットの欠落に比べて、デジタル通信の信頼性に大きな影響を及ぼすため、本実施形態では、第１及び第２の検査ビット列が間引かれるようになっている。【００４５】
図９は、組織的符号に対する冗長ビット列の挿入率とパケット誤り率との関係をグラフとして示す図である。【００４６】
図９に示すグラフは、シミュレーション結果である。図９において、縦軸は、パケット誤り率（ＰＥＲ［Packet Error Rate］）を示し、横軸は、組織的符号に対する冗長ビット列の挿入率を示している。ここで、挿入率とは、冗長ビット列のうち、組織的符号に組み込まれたビット数の割合を言う。例えば、組織ビット列と第１の検査ビット列と第２の検査ビット列と冗長ビット列のビット数がそれぞれ５０００ビットである場合において、挿入率が０．３である場合の例としては、冗長ビット列のうち１５００ビットが選別されるとともに、組織的符号のうち１５００ビットが間引かれて１３５００ビットが選別される場合が相当する。このとき、組織ビット列５０００ビットに対して、冗長ビット列のうち１５００ビットが挿入され、挿入率＝１５００／５０００＝０．３となる。図９には、符号化率（コーディングレート）がそれぞれ１／３、１／２、３／４であるときのグラフが、示されている。図９に示されるように、符号化率が１／３である場合、冗長ビット列の挿入率が０．６であるときに、パケット誤り率が最も低くなる。また、符号化率が１／２である場合、冗長ビット列の挿入率が０．５であるときに、パケット誤り率が最も低くなる。また、符号化率が３／４である場合、冗長ビット列の挿入率が０．８であるときに、パケット誤り率が最も低くなる。従って、パケット誤り率を低減させるためには、冗長ビット列の挿入率は、符号化率に応じて変えられるとよい。本実施形態のレートマッチングユニット１０ｄは、符号化率に応じて、冗長ビット列の挿入率を変えている。なお、冗長ビット列の挿入率と符号化率との対応関係は、送信機１０と受信機２０とにおいて、予め決められていてもよい。この場合、受信機２０は、符号化率が送信機１０から通知されるだけで、冗長ビット列の挿入率を把握することができる。また、冗長ビット列の挿入率は、通信制御ユニット１０ｈによって制御用のチャンネルを通じて受信機２０に通知されてもよい。【００４７】
また、本実施形態は、ビット列を、並列に処理する２つのコードブロックの組、例えば、第１及び第２のコードブロックに分割する。これに対し、ビット列が３個以上のコードブロックに分割し、並列に処理される形態を考える。例えば、Ｎ個のコードブロックの組について、各組に属するＮ個のコードブロック間で冗長ビットを作成する場合、１つの組織的符号についてみると、冗長ビット列の挿入のために間引かれるビットの数は、本実施形態よりも少なくなる。従って、冗長ビットを作成するコードブロックの組に含まれるコードブロック数が増えれば増えるほど、冗長ビット列の挿入率を上げることができる。【００４８】
〈受信機〉
図１０は、受信機２０の構成を示す図である。【００４９】
受信機２０は、アンテナ２０ａ、周波数ダウンコンバータ２０ｂ、復調ユニット２０ｃ、レートデマッチングユニット２０ｄ、誤り訂正復号化ユニット２０ｅ、コードブロック結合ユニット２０ｆ、バイナリシンク２０ｇ、及び、通信制御ユニット２０ｈを、含んでいる。【００５０】
アンテナ２０ａは、電波を感受すると、その電波を電気信号に変換する。周波数ダウンコンバータ２０ｂは、アンテナ２０ａから入力される被変調キャリア信号の周波数を、ダウンコンバートする。【００５１】
復調ユニット２０ｃは、ダウンコンバートされた被変調キャリア信号からベースバンド信号としてビット列を取り出す復調を行う。なお、復調方式は、通信制御ユニット２０ｈからの指示に応じて変えられる。【００５２】
レートデマッチングユニット２０ｄは、通信制御ユニット２０ｈから通知される符号化率と挿入率とに基づいて、復調ユニット２０ｃから入力されるビット列から、第１及び第２のコードブロックに対応する組織的符号と、冗長ビット列とを分離する。前述したように、符号化率と挿入率の値に応じてどのビットが選別されるかが、予め決められている。このため、レートデマッチングユニット２０ｄは、符号化率と挿入率とに基づいて、入力されたビット列から、組織的符号と冗長ビット列とを分離することができる。また、レートデマッチングユニット２０ｄは、分離した組織的符号と冗長ビット列のビット数の調整を行う。具体的には、レートデマッチングユニット２０ｄは、組織的符号においてビットが間引かれている位置に、ビット０を補完して、ビット数を調整する。0は情報が何もないことを意味する。正の値で絶対値が大きいほど送信bitが0である確率が高くなり、負の値で絶対値が大きいほど送信bitが1である確率が高くなるからである。同様に、レートデマッチングユニット２０ｄは、冗長ビット列においてビットが間引かれている位置にも、ビット０を補完して、ビット数を調整する。レートデマッチングユニット２０ｄは、ビット数を調整した組織的符号と冗長ビット列とを、それぞれ、誤り訂正復号化ユニット２０ｅへ出力する。【００５３】
誤り訂正復号化ユニット２０ｅは、第１及び第２のコードブロックに対応する組織的符号を用いて、第１及び第２のコードブロックの誤り訂正復号化を行う。すなわち、誤り訂正復号化ユニット２０ｅは、第１及び第２のコードブロックにおいて符号誤りが存在していた場合にその符号誤りを訂正する。誤り訂正復号化ユニット２０ｅの具体的な構成については、後述する。【００５４】
コードブロック結合ユニット２０ｆは、誤り訂正復号化ユニット２０ｅから出力される第１及び第２のコードブロックを結合して、ビット列を生成する。【００５５】
バイナリシンク２０ｇは、コードブロック結合ユニット２０ｆから出力されるビット列をデジタル情報として受け取り、受け取ったデジタル情報を利用して各種の処理を行う。なお、バイナリシンク２０ｇとしては、例えば、ＣＰＵ、記憶ユニット、記録ユニットを含むコンピュータがある。記憶ユニットとしては、例えば、ＤＲＡＭ、及び、ＳＲＡＭがある。記録ユニットとしては、例えば、ＳＳＤ装置、ＨＤＤ装置、ＢＤドライブ装置、ＤＶＤドライブ装置、＋Ｒ／＋ＲＷドライブ装置、ＣＤドライブ装置、メモリーカードドライブ装置、及び、フレキシブルディスクドライブ装置がある。コンピュータとしては、例えば、パーソナルコンピュータ、携帯電話機、及び、ＰＤＡがある。パーソナルコンピュータとしては、例えば、デスクトップ型ＰＣ、ノートブック型ＰＣ、ラップトップ型ＰＣ、ペンコンピュータ、ネットブック、及び、ウェアラブルコンピュータがある。【００５６】
通信制御ユニット２０ｈは、送信機１０から制御用のチャンネルを通じて符号化率と変調方式を示す情報とを受信する。また、通信制御ユニット２０ｈは、受信した情報が示す変調方式に対応する復調方式を決定して、復調ユニット２０ｃに対し、決定した復調方式を利用した復調を指示する。また、通信制御ユニット２０ｈは、受信した符号化率を、レートデマッチングユニット２０ｄへ通知する。なお、冗長ビット列の挿入率と符号化率との対応関係が、送信機１０と受信機２０とにおいて、予め決められている形態である場合、通信制御ユニット２０ｈは、符号化率に対応する挿入率を特定し、レートデマッチングユニット２０ｄへ通知する。また、冗長ビット列の挿入率が、送信機１０の通信制御ユニット１０ｈによって制御用のチャンネルを通じて受信機２０に通知される形態である場合、通信制御ユニット２０ｈは、受信した挿入率を、レートデマッチングユニット２０ｄへ通知する。【００５７】
図１１は、誤り訂正復号化ユニット２０ｅの構成を示す図である。【００５８】
誤り訂正復号化ユニット２０ｅは、第１のターボ復号化回路２１、及び、第２のターボ復号化回路２２を、備えている。第１のターボ復号化回路２１が、第１復号化部に相当する。また、第２のターボ復号化回路２２が、第２復号化部に相当する。第１及び第２のターボ復号化回路２１、２２は、レートデマッチングユニット２０ｄから入力される組織的符号に対してターボ復号化を行う。ここで、第１及び第２のターボ復号化回路２１、２２は、組織ビット列内の各ビットについて、ビットが「１」又は「０」であることの信頼性を、後述のターボ処理によって獲得することにより、組織ビット列を確定させる。また、従来のターボ復号化回路は、自回路に入力される組織的符号を利用して、符号誤りのない組織ビット列を生成するものとなっている。すなわち、ターボ符号化された個々のデータブロックごとに復号化を行っている。これに対し、本実施形態では、第１及び第２のターボ復号化回路２１、２２は、それぞれに入力されたターボ符号のデータブロックの反復符号の過程で、後述のターボ処理による結果を互いに引き渡す。そして、第１及び第２のターボ復号化回路２１、２２は、１回の反復復号ごとに、相互に受け取った相手の復号結果と送信機１０から受信した冗長ビット列とによって、さらに、次の反復復号を繰り返し、ビットの状態（「１」又は「０」）の信頼性を更に高める処理を行うようになっている。【００５９】
図１２は、第１のターボ復号化回路２１の構成を示す図である。【００６０】
第１のターボ復号化回路２１は、３個の対数尤度比演算器２１ａと、３個のレジスタ２１ｂとを、備えている。レートデマッチングユニット２０ｄから組織的符号が入力されると、その組織的符号に含まれる組織ビット列と、第１の検査ビット列と、第２の検査ビット列とにおける各ビットの対数尤度比（ＬＬＲ［Log-likelihood ratio］）が、３個の対数尤度比演算器２１ａによって算出される。算出された対数尤度比は、３個のレジスタ２１ｂにそれぞれ記録される。また、第１のターボ復号化回路２１は、１個の対数尤度比演算器２１ｃと、１個のレジスタ２１ｄとを、備えている。レートデマッチングユニット２０ｄから冗長ビット列が入力されると、その冗長ビット列における各ビットの対数尤度比が、対数尤度比演算器２１ｃによって算出される。算出された対数尤度比は、レジスタ２１ｄに記録される。ここで、対数尤度比とは、ビットが「１」である確率と「０」である確率の比の自然対数を取ったものを言う。【００６１】
また、第１のターボ復号化回路２１は、図４に示す第１のターボ符号化回路１３が２個のＲＳＣ符号化部１３ａ、１３ｃを備えていることに対応し、２個のＳＩＳＯ［soft-input soft-output］復号化部２１ｆ、２１ｊを備えている。【００６２】
第１のＳＩＳＯ復号化部（SISO Decoder）２１ｆは、入力値に基づいて演算を行い、外部値（Extrinsic Information）Ａを出力する。入力値としては、各ビットの事前対数尤度比（Priori LLR）と、第１の検査ビット列用のレジスタ２１ｂ内の各ビットの対数尤度比とがある。事前対数尤度比は、組織ビット列用のレジスタ２１ｂ内の対数尤度比と、第２のＳＩＳＯ復号化部２１ｊから出力される後述の外部値Ｂと、後述の相補復号化部２１ｐから出力される外部値Ｃとを加算したものである。第１のＳＩＳＯ復号化部２１ｆは、これら入力値を事前対数尤度比として用いて、事後対数尤度比（Posterior LLR）を算出する。ここで、事前対数尤度比とは、ビットが「１」である事前確率と「０」である事前確率との比の自然対数を取ったものを言う。事後対数尤度比とは、ビットが「１」である事後確率と「０」である事後確率との比の自然対数を取ったものを言う。また、事前確率とは、例えば、ある事象Ｂに対して、事象Ｂが発生したという情報が得られる前の、事象Ａが発生する確率をいう。本実施形態では、或る状態のビットが送信される確率を言うことにする。あるいは、事前確率は、受信されたデータのあるビットが１、あるいは、０である確率として例示できる。また、事後確率とは、一般には、ある事象Ｂが発生したという情報が得られた後の、事象Ａが発生する確率をいう。本実施形態では、或る状態のビットが受信されたという条件の下でその状態のビットが送信される確率をいうことにする。第１のＳＩＳＯ復号化部２１ｆは、軟判定復号の結果として事後対数尤度比を算出した後、算出した事後対数尤度比の事前対数尤度比に対する増分を、外部値Ａとして出力する。つまり、第１のＳＩＳＯ復号化部２１ｆは、前述した要素復号器として作用する。【００６３】
第１のＳＩＳＯ復号化部２１ｆは、具体的には、図１３に例示されるように、γ演算器２１１、α演算器２１２ａ、β演算器２１２ｂ、λ演算器２１３、及び、ｍビット加算器２１４を含んでいる。γ演算器２１１は、各ビットの事前対数尤度比と、第１の検査ビット列用のレジスタ２１ｂ内の各ビットの対数尤度比とに基づいて、各ビットの移行確率γを算出する。α演算器２１２ａは、γ演算器２１１から出力される各ビットの移行確率γに基づいて、各ビットの前方確率αを算出する。β演算器２１２ｂは、γ演算器２１１から出力される各ビットの移行確率γに基づいて、各ビットの後方確率βを算出する。λ演算器２１４は、γ演算器２１１、α演算器２１２ａ、及び、β演算器２１２ｂから出力される移行確率γ、前方確率α、及び、後方確率βに基づいて、事後対数尤度比を算出する。ｍビット加算器２１５は、λ演算器２１４から出力される各ビットの事後対数尤度比から、γ演算器２１４に入力される各ビットの事前対数尤度比を減算して、外部値を生成する。従って、図１３に例示される第１のＳＩＳＯ復号化部２１ｆは、ＭＡＰ［Maximum A Posteriori］演算を行うものとなっている。なお、図１３に例示した構成は、例えば、特開２００５−１０８３３２号公報にも開示されている。また、第１のＳＩＳＯ復号化部２１ｆは、ＳＯＶＡ［Soft-Output Viterbi Algorithm］演算を行うものであってもよい。【００６４】
本実施形態では、図１２に示す第２のＳＩＳＯ復号化部（SISO Decoder）２１ｊも、図１３に例示されるような構成を有し、第１のＳＩＳＯ復号化部２１ｆと同様の演算を行う。すなわち、第２のＳＩＳＯ復号化部２１ｊは、入力値に基づいて演算を行い、事後対数尤度比の事前対数尤度比に対する増分として、外部値Ｂを出力する。従って、第２のＳＩＳＯ復号化部２１ｊも、前述した要素復号器として作用する。入力値としては、各ビットの事前対数尤度比と、第２の検査ビット列用のレジスタ２１ｂ内の各ビットの対数尤度比とがある。事前対数尤度比は、組織ビット列用のレジスタ２１ｂ内の各ビットの対数尤度比と、第１のＳＩＳＯ復号化部２１ｆから出力される各ビットの外部値Ａと、後述の相補復号化部２１ｐから出力される各ビットの外部値Ｃとを加算したものである。【００６５】
第１のターボ復号化回路２１では、制御ユニット２１ｔの制御にしたがって、第１及び第２のＳＩＳＯ復号化部２１ｆ、２１ｊが外部値の遣り取りを所定回数繰り返すようになっている。このような外部値の遣り取りにより、事後対数尤度比が徐々に高まることとなる。このような外部値の遣り取りによって事後対数尤度比を高める処理は、ターボ処理と称される。第１及び第２のＳＩＳＯ復号化部２１ｆ、２１ｊが外部値の遣り取りを所定回数繰り返した後、ＣＲＣ部２１ｑは、事後対数尤度比を基に、硬判定処理によって組織ビット列の各ビットの値を確定する。そして、制御ユニット２１ｔは、出力信号制御スイッチ２１ｓに対するイネーブル信号をアサートする。その結果、ＣＲＣ出力信号制御スイッチ２１ｓを通じて、ＣＲＣ部２１ｑが確定した組織ビット列が出力される。【００６６】
また、第１のターボ復号化回路２１は、インターリーブ部（Π）２１ｈとデインターリーブ部（Π−１）２１ｋとを備えている。インターリーブ部２１ｈは、第２のＳＩＳＯ復号化部２１ｊに入力される各ビットの事前対数尤度比の並び順を、第２のＳＩＳＯ復号化部２１ｊに入力される第２の検査ビット列の各ビットの並び順と一致させる。なお、インターリーブ部２１ｈによる各ビットの並び順の変更方法、すなわち、シャッフル方法は、送信機１０と受信機２０とで同じものとなるよう、予め決められている。デインターリーブ部２１ｋは、第２のＳＩＳＯ復号化部２１ｊから出力される各ビットの外部値の並び順を、第１のＳＩＳＯ復号化部２１ｆに入力される各ビットの事前対数尤度比の並び順に戻す。【００６７】
また、第１のターボ復号化回路２１は、４個のｍビット加算器２１ｅ、２１ｇ、２１ｍ、２１ｒを、備えている。第１のｍビット加算器２１ｅは、組織ビット列用のレジスタ２１ｂ内の各ビットの対数尤度比に対し、外部値Ｂと後述の外部値Ｃとを加算して、第１のＳＩＳＯ復号化部２１ｆの事前対数尤度比を生成する。第２のｍビット加算器２１ｇは、第１のＳＩＳＯ復号化部２１ｆから出力される各ビットの外部値Ａに対し、組織ビット列用のレジスタ２１ｂ内の対数尤度比Ｓと後述の外部値Ｃとを加算して、第２のＳＩＳＯ復号化部２１ｊの事前対数尤度比を生成する。第３のｍビット加算器２１ｍは、第２のＳＩＳＯ復号化部２１ｊから出力されてデインターリーブ部２１ｋにてデインターリーブされた各ビットの外部値Ｂに対し、組織ビット列用のレジスタ２１ｂ内の対数尤度比Ｓと外部値Ａとを加算する。第４のｍビット加算器２１ｒは、後述のＣＲＣ部２１ｑから出力される各ビットの対数尤度比から、第３のｍビット加算器２１ｍから出力される各ビットの対数尤度比を減算して、外部値Ｃを出力する。なお、外部値Ｃは、後述の相補復号化部２１ｐにおける事後対数尤度比の事前対数尤度比に対する増分となっている。このため、後述の相補復号化部２１ｐと後述のＣＲＣ部２１ｑと第４のｍビット加算器２１ｒは、全体的には、外部値Ｃを出力する１つの要素復号器として作用する。また、この要素復号器の事前対数尤度比は、第３のｍビット加算器２１ｍにより生成されることとなる。【００６８】
また、第１のターボ復号化回路２１は、シフトレジスタ（Shift Register）２１ｎを備えている。シフトレジスタ２１ｎには、第１のＳＩＳＯ復号化部２１ｆから出力される外部値Ａが記録される。シフトレジスタ２１ｎは、第２のＳＩＳＯ復号化部２１ｊから外部値Ｂが出力されてデインターリーブ部２１ｋにてデインターリーブされるまで、外部値Ａの出力を待機し、その後、外部値Ａを出力する。換言すると、シフトレジスタ２１ｎは、第２のＳＩＳＯ復号化部２１ｊに入力される外部値Ａと同じ値が、第３のｍビット加算器２１ｍに入力されるようにする。【００６９】
また、第１のターボ復号化回路２１は、相補復号化部（Complementary Decoder）２１ｐを備えている。相補復号化部２１ｐは、入力値に基づいて演算を行い、事後対数尤度比を出力する。入力値としては、第３のｍビット加算器２１ｍから出力された各ビットの事後対数尤度比と、第２のターボ復号化回路２２の第３のｍビット加算器から出力された各ビットの事後対数尤度比と、冗長ビット列用のレジスタ２１ｄ内の各ビットの対数尤度比とがある。相補復号化部２１ｐは、具体的には、図１４に例示されるように、第１のｍビット加算器２１５、４個の指数化演算器２１６ａ〜２１６ｄ、第２及び第３のｍビット加算器２１７ａ、２１７ｂ、２個の対数化演算器２１８ａ、２１８ｂ、及び、第４のｍビット加算器２１９を含んでいる。第１のｍビット加算器２１５は、入力値を加算して、第２の指数化演算器２１６ｂへ出力する。第１の指数化演算器２１６ａには、図１２の第３のｍビット加算器２１ｍから出力される各ビットの事後対数尤度比（Ａ＋Ｂ＋Ｓ）が、入力される。以下、図１２の第３のｍビット加算器２１ｍから出力される各ビットの事後対数尤度比Ａ＋Ｂ＋Ｓ＝ｘ１とする。第３の指数化演算器２１６ｃには、冗長ビット列用のレジスタ２１ｄ内の各ビットの対数尤度比が、入力される。第４の指数化演算器２１６ｄは、第２のターボ復号化回路２２の第３のｍビット加算器から出力された各ビットの事後対数尤度比（Ａ＋Ｂ＋Ｓ）が、入力される。以下、第２のターボ復号化回路２２の第３のｍビット加算器から出力された各ビットの事後対数尤度比Ａ＋Ｂ＋Ｓ＝ｘ２とする。第１乃至第４の指数化演算器２１６ａ〜２１６ｄは、入力された各ビットの対数尤度比を指数化し、ネイピア数ｅの羃乗となる数値、すなわち、尤度比に変換する。第２のｍビット加算器２１７ａは、第１及び第２の指数化演算器２１６ａ、２１６ｂからそれぞれ出力された尤度比を加算して、第１の対数化演算器２１８ａへ出力する。第３のｍビット加算器２１７ｂは、第３及び第４の指数化演算器２１６ｃ、２１６ｄからそれぞれ出力された尤度比を加算して、第２の対数化演算器２１８ｂへ出力する。第１及び第２の対数化演算器２１８ａ、２１８ｂは、入力された各ビットの尤度比の自然対数を取って、対数尤度比に変換する。第４のｍビット加算器２１９は、第１の対数化演算器２１８ａから出力された対数尤度比から、第２の対数化演算器２１８ａ、２１８ｂから出力された対数尤度比を減算して、出力する。【００７０】
なお、図１４に例示される相補復号化部２１ｐによる演算の内容は、以下の式（１）で表現される。【００７１】
［数１］
2011024260.tif 000003
この式（１）において、ｘ１は、図１２の第３のｍビット加算器２１ｍから出力される事後対数尤度比である。また、ｘ２は、第２のターボ復号化回路２２の第３のｍビット加算器から出力される事後対数尤度比である。ｙは、冗長ビットの対数尤度比である。【００７２】
ここで、前述した式（１）の導出について説明する。まず、１つのビットの状態が「０」である確率をＰ（０）とし、その状態が「１」である確率をＰ（１）としたとき、対数尤度比は、ｌｎ｛Ｐ（０）／Ｐ（１）｝と表現される。対数尤度比は、対象とするビットが０の場合に、正の無限大となり、ビットｘ１が１の場合に、負の無限大となり、ビットｘ１が０か１かで確率５０％のとき、０となる。【００７３】
また、ビットの状態は「１」と「０」の２つしかないので、Ｐ（１）＝１−Ｐ（０）である。これらの式を使うと、対数尤度比ｘは、ｘ＝ｌｎ［Ｐ（０）／｛１−Ｐ（０）｝］と表現できる。ここで、対数尤度比がＸとして、両辺の指数を取ると、以下の式（２）の通りとなる。
ｅｘｐ（Ｘ）＝［Ｐ（０）／｛１−Ｐ（０）｝］  …（２）
この式（２）をＰ（０）について解くと、以下の式（３）の通りとなる。
Ｐ（０）＝ｅｘｐ（Ｘ）／｛１＋ｅｘｐ（Ｘ）｝  …（３）
また、Ｐ（１）＝１−Ｐ（０）であるから、Ｐ（１）は、以下の式（４）の通りとなる。
Ｐ（１）＝１／｛１＋ｅｘｐ（Ｘ）｝  …（４）
ここで、Ｐ（０）／Ｐ（１）は、尤度比であるが、この尤度比の算出においては、「１」の状態の尤度と「０」の状態の尤度との相対関係が判明すればよい。このため、いま、式（３）と式（４）の分母が同じであることを利用して、「０」の状態の尤度を、ｅｘｐ（Ｘ）と看做し、「１」の状態の尤度を、１と看做して、議論を進める。【００７４】
以下の説明では、対数尤度比ｘ１、ｘ２で推定されるビットそのものを、単にビットｘ１、ｘ２のように呼ぶ。本実施形態においては、冗長ビットは、第１及び第２のコードブロックにおける先頭から同一番目のビットの排他的論理和を取ることによって、生成されている。これを考慮すると、第１のコードブロックのビットｘ１が「０」の状態であるときの（ｘ１，ｘ２，ｙ）の組み合わせには、（０，０，０），（０，１，１）があり、ビットｘ１が「１」の状態であるときの（ｘ１，ｘ２，ｙ）の組み合わせには、（１，１，０），（１，０，１）がある。従って、ビットｘ１が「０」の状態となる尤度は、（０，０，０）となる尤度と、（０，１，１）となる尤度とを加算したものとなり、ビットｘ１が「１」の状態となる尤度は、（１，１，０）となる尤度と（１，０，１）となる尤度とを加算したものとなる。ここで、例えば、（０，１，１）となる尤度は、ビットｘ１が「０」の状態となる尤度であるｅｘｐ（ｘ１）と、ビットｘ２が「１」の状態となる尤度である１と、ビットｙが「１」の状態となる尤度である１とを、合成したものとなる。合成尤度は、尤度同士の乗算により表現されることから、（０，１，１）となる尤度は、ｅｘｐ（ｘ１）と表現される。このことから、ビットｘ１が「０」の状態となる尤度は、ｅｘｐ（ｘ１＋ｘ２＋ｙ）＋ｅｘｐ（ｘ１）となり、ビットｘ１が「１」の状態となる尤度は、ｅｘｐ（ｙ）＋ｅｘｐ（ｘ２）となる。従って、（ｘ１，ｘ２，ｙ）の組み合わせが事前対数尤度比として与えられたときのビットｘ１の事後対数尤度比は、式（１）で表される。【００７５】
なお、ここでは、冗長ビットが第１及び第２のコードブロックにおける先頭から同一番目のビットの排他的論理和で作成される場合の相補復号化部２１ｐの処理を例示した。しかし、冗長ビットが、他のビット演算によって生成される場合には、冗長ビットを生成するビット演算に応じて、相補復号化部２１ｐの演算手順を作成すればよい。要するに、第１のターボ復号化回路２１において第１のコードブロックの事後対数尤度比ｘ１＝Ａ＋Ｂ＋Ｃが得られ、第２のターボ復号化回路２２において第２のコードブロックの事後対数尤度比ｘ２＝Ａ＋Ｂ＋Ｃが得られた場合に、対数尤度ｘ１を事前値として、対数尤度ｘ２と、冗長ビットとによって、事後対数尤度を算出すればよい。【００７６】
第１のターボ復号化回路２１のデータブロックの各ビットに対する事後対数尤度比算出処理は、第１のコードブロックの全ビットを用いた処理である。第２のターボ復号化回路２２のデータブロックの各ビットに対する事後対数尤度比算出処理も同様である。【００７７】
一方、相補復号化部２１ｐは、冗長ビットの作成に関与したデータブロックのそれぞれのビットと、冗長ビットとによって、データブロックのそれぞれのビットの事後対数尤度比を算出する。したがって、例えば、第１のターボ復号化回路２１は、従来のターボ復号処理ではえられなかった第２のターボ復号化回路２２での第２のコードブロックの処理結果、すなわち、事後対数尤度ｘ２を得て、第１のコードブロックの各ビットの事後対数尤度ｘ１の精度をさらに高めることができる。同様に、第２のターボ復号化回路２２は、従来のターボ復号処理ではえられなかった第１のターボ復号化回路２１での第１のコードブロックの処理結果、すなわち、事後対数尤度ｘ１を得て、第２のコードブロックの各ビットの事後対数尤度ｘ２の精度をさらに高めることができる。【００７８】
また、第１のターボ復号化回路２１は、図１２に示すように、ＣＲＣ部２１ｑを備えている。ＣＲＣ部２１ｑがＣＲＣ演算部に相当する。ＣＲＣ部２１ｑは、相補復号化部２１ｐから出力される事後対数尤度比により状態が推定されるビット列についてＣＲＣを行う。すなわち、ＣＲＣ部２１ｑは、ビット列を表現した多項式を所定の生成多項式で除算し、除算による余りがＣＲＣ符号と一致するか否かを、判別する。そして、除算による余りがＣＲＣ符号と一致していなかった場合、すなわち、符号誤りが検出された場合、ＣＲＣ部２１ｑは、相補復号化部２１ｐから出力された各ビットの事後対数尤度比を、そのまま、第４のｍビット加算器２１ｒへ出力する。一方、除算による余りがＣＲＣ符号と一致していた場合、すなわち、符号誤りが検出されなかった場合、ＣＲＣ部２１ｑは、各ビットの事後対数尤度比の絶対値を最大に変更して、第４のｍビット加算器２１ｒへ出力する。事後対数尤度比の絶対値を最大に変更に変更するのは、ＣＲＣ部２１ｑにて得られたＣＲＣによる判定結果、すなわち硬判定結果を対数尤度比として反映するためのである。【００７９】
なお、ビットの状態の信頼度が「１」と「０」とで半々であると、事後対数尤度比は、ゼロになり、ビットが「０」又は「１」であることについての信頼度が高いほど、事後対数尤度比は、理論的には、正又は負の無限大に近づく。但し、処理上の制限やハードウェア上の制限があるため、現実的には、事後対数尤度比の最大値は、６４や１２８といった値となる。ＣＲＣ部２１ｑは、制御ユニット２１ｔの制御にしたがって、４個のレジスタ２１ｂ、２１ｄに対数尤度比が記録された後、相補復号化部２１ｐからの事後対数尤度比の入力回数が所定回数、例えば８回に到達するまでは、以上の判定処理及び出力処理を行う。要するに、制御ユニット２１ｔは、相補復号化部２１ｐからの事後対数尤度比の入力回数を計数するカウントとして作用する。そして、４個のレジスタ２１ｂ、２１ｄに対数尤度比が記録された後、制御ユニット２１ｔの制御にしたがって、相補復号化部２１ｐからの事後対数尤度比の入力回数が所定回数に到達した場合、ＣＲＣ部２１ｑは、各ビットの事前対数尤度比について硬判定を行う。すなわち、ＣＲＣ部２１ｑは、事前対数尤度比が所定の閾値、例えばゼロを超えているか否かに応じて、各ビットの状態（「１」又は「０」）を決定する。その後、制御ユニット２１ｔが、ＣＲＣ出力信号制御スイッチ２１ｓをイネーブルにアサートし、ＣＲＣ部２１ｑは、各ビットの状態が決定されたビット列を、符号誤りのない第１のコードブロックとして、図１０に示すコードブロック結合ユニット２０ｆへ出力する。ＣＲＣ部２１ｑが、出力部に相当する。【００８０】
図１６は、第１のターボ復号化回路２１で実行されるターボ復号処理を示すフローチャートである。この処理では、まず、制御ユニット２１ｔが、繰り返し数ｎとして所定の値を設定する（Ｆ１）。所定の値は、例えば、外部からユーザが設定するパラメータ値であってもよい。また、制御ユニット２１ｔが、実行回数カウンタｉ、メモリＡ，メモリＢ、メモリＣの値を０に初期化する（Ｆ２）。なお、制御ユニット２１ｔは、メモリ上に実行可能に展開されたコンピュータプログラムを実行することによって、機能するものでもよい。また、制御ユニット２１ｔは、Ｆ１、Ｆ２の初期設定および実行回数を計数し、所定値に達したか否かを判定する制御回路であってもよい。なお、メモリＡの値は、第１のＳＩＳＯ復号化部２１ｆが、出力する事後対数尤度比の増分値、すなわち、外部値に相当する。また、メモリＢの値は、第２のＳＩＳＯ復号化部２１ｆが、出力する事後対数尤度比の増分値、すなわち、外部値に相当する。また、メモリＣの値は、相補復号化部２１ｐが、出力する事後対数尤度比の増分値、すなわち、外部値に相当する。そして、対数尤度比演算器２１ａが組織ビット列中の現在処理中のビットから対数対数尤度比Ｓを算出する。【００８１】
次に、第１のＳＩＳＯ復号化部２１ｆが、組織ビット列の現在処理中のビットから算出された対数対数尤度比Ｓ、第１の検査ビット列、メモリＢ、およびメモリＣの値を入力し、ＳＩＳＯ復号結果ａを得る（Ｆ３）。ＳＩＳＯ復号結果ａは、入力された組織ビット中の当該ビットに対する事後対数尤度比に相当する。以下、入力された組織ビット中の当該ビットに対する事後対数尤度比を情報ビットＬＬＲと呼ぶ。そして、第１のＳＩＳＯ復号化部２１ｆが、情報ビットＬＬＲから、対数対数尤度比Ｓ、メモリＢ、およびメモリＣの値を減算し、新たな増分値としてメモリＡに格納する（Ｆ４）。なお、対数対数尤度比Ｓ、メモリＢ、およびメモリＣの合計値は、事前対数尤度比に相当する。【００８２】
次に、第２のＳＩＳＯ復号化部２１ｊが、対数対数尤度比Ｓ、メモリＢ、およびメモリＣの値をインターリーブしたものと、第２の検査ビット列を入力し、ＳＩＳＯ復号結果ｂを得る（Ｆ５）。そして、第２のＳＩＳＯ復号化部２１ｊが、復号結果ｂをデインターリーブし、情報ビットＬＬＲ  Ｓ、メモリＡ、メモリＣの値を減算し、新たな増分値としてメモリＢに格納する（Ｆ６）。【００８３】
次に、相補復号化部２１ｐが、冗長ビットに基づく対数対数尤度比と、すべてのコードブロックからのメモリＡ、メモリＢ、および情報ビットＬＬＲ  Ｓ相当のデータを入力し、演算結果ｃを得る。演算結果ｃは、コードブロック間の検査ビットである冗長ビットを反映した、情報ビットの対数対数尤度比である。【００８４】
次に、ＣＲＣ部２１ｐは、演算結果ｃのＣＲＣを実行する。ＣＲＣ結果がエラーなしの場合、ＣＲＣ部２１ｐは、ｃの絶対値を最大値として、メモリｃ１に格納する。一方、ＣＲＣ結果がエラーの場合、ＣＲＣ部２１ｐは、ｃの値をそのまま、メモリｃ１に格納する（Ｆ８）。【００８５】
次に、ｍビット加算器２１ｒは、メモリｃ１から情報ビットＬＬＲ  Ｓ、メモリＡ、メモリＢの値を減算し、新たな増分値としてメモリＣに格納する（Ｆ９）。そして、制御ユニット２１ｔは、カウンタｉを１インクリメントする（Ｆ１０）。そして、制御ユニット２１ｔは、カウンタｉが繰り返し数ｎを超えたか否かを判定する（Ｆ１１）。カウンタｉが繰り返し数ｎを超えていない場合、制御ユニット２１ｔは、第１のターボ復号化回路２１を処理Ｆ３に制御する。一方、カウンタｉが繰り返し数ｎを超えた場合、制御ユニット２１ｔは、ＣＲＣ出力信号制御スイッチ２１ｓをイネーブルにアサートし、ＣＲＣ部２１ｑによる硬判定結果を出力する。以上の処理は、第２のターボ復号化回路２２等、他のコードブロックに対する復号化回路でも同様に実行される。【００８６】
実施例１では、図１６の処理は、図１２から図１４のハードウェア回路で実行される処理として説明した。しかし、例えば、図１６の処理をＣＰＵ、ＤＳＰ（Digital signal processor）等のプロセッサがメモリ上に実行可能に展開されたコンピュータプログラムを実行することで、行ってもよい。【００８７】
《効果》
本実施形態の送信機１０によれば、第１及び第２のターボ符号化回路１３、１４が、第１及び第２のコードブロックをそれぞれターボ符号化するとともに、冗長ビット生成回路１５が、第１及び第２のコードブロックに相関を与える冗長ビット列を生成する。このため、第１及び第２のコードブロックは、ターボ符号化された際、冗長ビットによって互いに相関を持つようになる。【００８８】
本実施形態の受信機２０内の第１及び第２のターボ復号化回路２１、２２によれば、第１及び第２のＳＩＳＯ復号化部が、互いに外部値を供給するのではなく、第１及び第２のＳＩＳＯ復号化部と相補復号化部とが、互いに外部値を供給する。而も、相補復号化部は、第３のｍビット加算器から出力される対数尤度比と、他のターボ復号化回路の第３のｍビット加算器から出力される対数尤度比と、冗長ビット列の対数尤度比とを、事前対数尤度比ととして、事後対数尤度比を生成する。このように、ターボ符号化されたコードブロックの軟判定復号は、自コードブロックに係る情報によってのみ行われるだけではなく、他の全てのコードブロックの軟判定復号の結果と、全てのコードブロックについて相関を持つ冗長ビットとによっても、行われることとなる。このため、第１及び第２のコードブロックの何れかから符号誤りが検出される確率は、第１及び第２のコードブロックが個別にターボ復号化される場合に比べて、低くなる。【００８９】
図１５は、ブロック誤り率とシンボル当たりのエネルギー対ノイズ密度の比との関係をグラフとして示す図である。【００９０】
図１５に示すグラフは、ＡＷＧＮ［Additive White Gaussian Noise］環境において、コードブロック数を８とし、符号化率を１／３としたときのシミュレーション結果である。図１５において、縦軸は、ブロック誤り率を示し、横軸は、シンボル当たりのエネルギー対ノイズ密度の比を示している。図１５には、２本のグラフが示されている。右側のグラフは、第１及び第２のＳＩＳＯ復号化部を持ち相補復号化部を持たない従来のターボ復号化回路における測定結果を示す。左側のグラフは、第１及び第２のＳＩＳＯ復号化部を持つとともに相補復号化部をも持つ本実施形態のターボ復号化回路における測定結果を示す。図１５に示されるように、本実施形態のブロック誤り率は、横軸の値、すなわち、シンボル当たりのエネルギー対ノイズ密度の比が１以上の時に、従来例のブロック誤り率の１／１０以下になっている。【００９１】
このように、本実施形態によれば、誤り訂正について高い特性が得られるため、コードブロック分割処理が行われるデジタル通信の信頼性が、向上することとなる。【００９２】
また、本実施形態によれば、冗長ビット生成回路１５は、第１及び第２のコードブロックにおける先頭から同一番目のビット同士の排他的論理和を取る。このため、簡単な回路構成により冗長ビットを生成することができる。従って、回路規模や処理時間は、従来のターボ符号化回路に比べて殆ど増えることがない。【００９３】
また、本実施形態によれば、ＣＲＣ部２１ｑは、事後対数尤度比を生成する度にＣＲＣを行う。そして、事後対数尤度比の生成回数が所定回数に到達する前に、符号誤りが検出されなくなると、事後対数尤度比の絶対値を最大にして第４のｍビット加算器２１ｒへ出力する。これにより、他のターボ復号化回路の相補復号化部には、絶対値が最大の対数尤度比が供給されることとなる。このため、この他のターボ復号化回路の相補復号化部は、事後対数尤度比の生成回数が所定回数に到達する前に、信頼度の高い対数尤度比を用いて軟判定復号を行うことができる。この結果、誤り訂正復号化ユニット２０ｅは、誤り訂正について高い特性を得ることができる。【００９４】
すなわち、実施例１の受信機によれば、ターボ符号化されたコードブロックの軟判定復号は、自コードブロックに係る情報によってのみ行われるだけではなく、他の全てのコードブロックの軟判定復号の結果と、他のコードブロックについて相関を持つ冗長ビットとによっても、行われることとなる。このため、複数のコードブロックの何れかから符号誤りが検出される確率は、コードブロックが個別にターボ復号化される場合に比べて、低くなる。【００９５】
また、本実施例の送信機１０および受信機２０では、情報ビット列を複数のコードブロックに分割して、授受する。このような分割を行わない場合には、送信機１０および受信機２０は、誤り訂正符号におけるbit数を物理チャネルのbit数に合わせるために、同じbitを繰り返し、あるbitを省く処理を実行する。誤り訂正符号のbit数が増えると、誤り訂正符号におけるbit数を物理チャネルのbit数に合わせる処理のパラメータ計算の負荷が重くなる。本実施例の送信機１０および受信機２０では、情報ビット列を複数のコードブロックに分割するので、１つのコードブロックのbit数を使ってパラメータを計算し、計算したパラメータを各コードブロックで流用することができる。本実施例の送信機１０および受信機２０では、誤り訂正符号におけるbit数を物理チャネルのbit数に合わせる処理の負荷を抑制した上で、誤り訂正の信頼性を高めることができる。【００９６】
《第１の変形形態》
先に説明した本実施形態では、送信機１０のコードブロック分割ユニット１０ｂは、ビット列を２個のコードブロックに分割しているため、受信機２０の誤り訂正復号化ユニット２０ｅには、２個のターボ復号化回路が備えられている。送信機１０のコードブロック分割ユニット１０ｂが、ビット列を３個以上に分割するものである場合、受信機２０の誤り訂正復号化ユニット２０ｅには、分割数と同数のターボ復号化回路が備えられる。このような形態においては、ターボ復号化回路内の相補復号化部には、他の全てのターボ復号化回路から、対数尤度比が入力されることとなる。【００９７】
例えば、分割数が３である場合、冗長ビットは、第１乃至第３のコードブロックにおける先頭から同一番目のビットの排他的論理和を取ることにより、生成される。ここで、第３のコードブロックのビットの対数尤度比を、ｘ３と表すと、第１のコードブロックのビットｘ１が「０」の状態であるときの（ｘ１，ｘ２，ｘ３，ｙ）の組み合わせには、（０，０，０，０），（０，０，１，１），（０，１，０，１），（０，１，１，０）がある。また、第１のコードブロックのビットｘ１が「１」の状態であるときの（ｘ１，ｘ２，ｘ３，ｙ）の組み合わせには、（１，０，０，１），（１，０，１，０），（１，１，０，０），（１，１，１，１）がある。このため、「０」の状態の尤度を、ｅｘｐ（Ｘ）と看做し、「１」の状態の尤度を、１と看做すと、ビットｘ１が「０」の状態となる尤度は、先の議論と同様に、ｅｘｐ（ｘ１＋ｘ２＋ｘ３＋ｙ）＋ｅｘｐ（ｘ１＋ｘ２）＋ｅｘｐ（ｘ１＋ｘ３）＋ｅｘｐ（ｘ１＋ｙ）となる。また、ビットｘ１が「１」の状態となる尤度は、ｅｘｐ（ｘ２＋ｘ３）＋ｅｘｐ（ｘ２＋ｙ）＋ｅｘｐ（ｘ３＋ｙ）＋１となる。従って、分割数が３である場合、各ターボ復号化回路内の相補復号化部は、以下の式（５）の演算を行うものとなる。【００９８】
［数２］
2011024260.tif 000004
【００９９】
《第２の変形形態》
先に説明した本実施形態及び第１の変形形態では、相補復号化部は、式（１）又は式（|５）の演算を行うものとなっている。しかしながら、式（１）又は式（５）の演算は、例えば図１４に示されるように、対数と指数とを変換する演算が必要であるため、演算量が多い。そこで、相補復号化部は、ｍａｘ−ｌｏｇ−ＭＡＰと同様の議論により、式（１）又は式（５）の演算を行うものであってもよい。例えば、式（１）は、以下の式（６）のように展開できる。【０１００】
［数３］
2011024260.tif 000005
ここで、ｍａｘ（ａ，ｂ，ｃ，…）は、集合（ａ，ｂ，ｃ，…）の中の最大値を示す。そして、ｌｎ｛１＋ｅｘｐ（−｜Ｊ｜）｝におけるＪが十分に大きい場合、ｌｎ｛１＋ｅｘｐ（−｜Ｊ｜）｝は、１に近似できるため、これを用いて式（６）を変形すると、以下の式（７）の通りとなる。【０１０１】
［数４］
2011024260.tif 000006
この式（７）は、以下の式（８）に展開できる。【０１０２】
［数５］
2011024260.tif 000007
ここで、ｓｇｎ（Ｚ）は、Ｚの符号（＋又は−）を示す。また、ｍｉｎ（ａ，ｂ，ｃ，…）は、集合（ａ，ｂ，ｃ，…）の中の最小値を示す。【０１０３】
各ターボ復号化回路の相補復号化部が、以上の式（８）の演算を行うものとなっていれば、より演算量が減ることとなる。【０１０４】
《第３の変形形態》
上記実施例１では、第１のターボ復号化回路２１には、ＣＲＣ部２１ｑを用いる処理例を示した。しかし、本実施例の第１のターボ復号化回路２１において、ＣＲＣ部２１ｑの代わりに他のブロック符号による誤り検出部を用いてもよい。【０１０５】
上記実施例１では、第１のターボ復号化回路２１と第２のターボ復号化回路２２とが、コードブロックに対する復号化を並列して実行する処理を説明した。しかし、例えば、回路規模を小さくするため、ターボ復号化回路を１つだけけ備えるようにしてもよい。そして、１つのターボ復号化回路が、複数のコードブロックを逐次処理し、複数のコードブロックに対する情報ビットＬＬＲ  Ｓｉ、メモリＡｉ、メモリＢｉ（ｉ＝１，２、．．．）を得た後、相補復号化部２１ｐが、それぞれのコードブロックに対して、冗長ビットに基づく演算を行い、ＣＲＣ部２１ｑによるＣＲＣ２１ｐを行ってもよい。すなわち、複数のコードブロックを記憶するメモリ、情報ビットＬＬＲ  Ｓｉ、メモリＡｉ、メモリＢｉを保持することで、処理は逐次処理となるが、復号回路の回路規模を小さくできる。
【実施例２】
【０１０６】
図１７から図２１の図面を参照して、実施例２に係る符号化装置５０および復号化装置６０を説明する。本実施例では、コードブロック間の検査ビットによる対数尤度比を求める相補復号化部を低密度パリティ検査符号（以下、ＬＤＰＣ）による誤り訂正符号化ユニットおよび誤り訂正復号化ユニットに適用する。また、実施例２においても、実施例１と同様、誤り訂正符号化ユニットは、送信機の一部として、また、誤り訂正復号化ユニットは、受信機の一部として説明する。実施例２の送信機および受信機の構成のうち、低密度パリティ検査符号による誤り訂正符号化ユニットおよび誤り訂正復号化ユニット以外の構成は、実施例１と同様である。そこで、実施例２の構成要素のうち、実施例１と同様の構成要素については、同一の符号を付してその説明を省略する。【０１０７】
ＬＤＰＣの符号化は、生成行列Ｇを用いて行う。生成行列Ｇは、列数が情報bit数、行数が情報bit数+Parity bit数の行列である。情報bitを列ベクトルｓ＝（ｓ１，ｓ２，．．．，ｓｍ）として、左から生成行列Ｇに乗算することにより、Ｚ＝ｓＧによって、送信系列Ｚ（情報bit+Parity bit）が得られる。ただし、生成行列Ｇが、検査行Ｈに対して、ＧＨt＝０を満たす。ここで、Ｈtは、検査行列Ｈの転置行列である。したがって、ＴＺt＝ＺＴt＝ｓＧＴt＝０となり、送信系列Ｚは、検査行列による検査式を満たす。【０１０８】
図１７に、実施例２に係る送信機５０を示す。なお、図１７では、送信機５０の構成のうち、誤り訂正符号化ユニット５０ｃと、レートマッチングユニット１０ｄとが明示されている。したがって、図１７では、誤り訂正符号化ユニット５０ｃに、コードブロックを入力するコードブロック分割ユニット１０ｂからバイナリソース側の構成が省略されている。また、レートマッチングユニット１０ｄから送信アンテナ側の構成が省略されている。また、レートマッチングユニット１０ｄの構成および作用は、実施例１の場合と同様である。【０１０９】
また、誤り訂正符号化ユニット５０ｃは、２つのＬＤＰＣ符号化ユニット５３、５４、および冗長ビット生成回路１５を含む。このうち、冗長ビット生成回路１５は、コードブロック間の検査ビットを生成する。冗長ビット生成回路１５の構成および作用は、実施例１の場合と同様である。【０１１０】
ＬＤＰＣ符号化ユニット５３、５４は、それぞれ、例えば、図２に示したコードブロック分割ユニット１０ｂから、情報ビット列を分割したコードブロックを受け取り、並列にＬＤＰＣに符号化する。すなわち、ＬＤＰＣ符号化ユニット５３、５４は、それぞれ、受け取ったコードブロックに生成行列Ｇを乗算する。ＬＤＰＣ符号化ユニット５３、５４は、例えば、積和回路を含む電子回路で構成できる。ただし、ＣＰＵ、ＤＳＰ等がメモリ上に実行可能に展開されたコンピュータプログラムを実行することによって、符号化処理を行うようにしてもよい。【０１１１】
レートマッチングユニット１０ｄは、ＬＤＰＣ符号化ユニット５３、５４で生成されたコードブロックのＬＤＰＣと、冗長ビット生成回路１５で生成されたコードブロック間の検査ビットである、冗長ビットを後段の回路、例えば、図２に示した変調ユニット１０ｅ、周波数アップコンバータ１０ｆ等に引き渡す。【０１１２】
図１８に、実施例２に係る受信機６０の構成を例示する。実施例２の受信機６０の構成は、誤り訂正復号化ユニット２０ｅに代えて誤り訂正復号化ユニット６０ｅを用いる点以外は、図１０に示した実施例１の受信機２０と同様である。ただし、図１８では、レートデマッチングユニット２０ｄと、レートデマッチングユニット２０ｄのから受信ビット列を入力される誤り訂正復号化ユニット２０ｅと、コードブロック結合ユニット２０ｆが例示されている。【０１１３】
図１８に示すように、誤り訂正復号化ユニット６０ｅは、ＬＬＲ生成ユニット６６と、ＬＤＰＣユニット６４と、硬判定ユニット６７と、制御ユニット６５とを有する。ＬＬＲ生成ユニット６６は、受信ビットをＬＬＲに変換する。受信ビットをＬＬＲに変換した値は、各ビットに対応するＬＬＲの初期値ということができる。ＬＬＲ生成ユニット６６の処理は、実施例１の対数尤度比演算器２１ａあるいは対数尤度比演算器２１ｃと同様である。ＬＬＲ生成ユニット６６は、生成したＬＬＲをＬＤＰＣユニット６４に入力する（矢印ｓ）。また、ＬＬＲ生成ユニット６６は、コードブロック間パリティである冗長ビットをＬＬＲに変換して、ＬＤＰＣユニット６４に入力する（矢印ｐ）。【０１１４】
また、硬判定ユニット６７は、ＬＤＰＣユニット６４によって、復号処理がなされた後の事後対数尤度比を基に、硬判定を行い、ビット０または１を確定する。例えば、事後対数尤度比が正ならばビット０として、負ならばビット１とする。さらに、硬判定ユニット６７は、得られたコードブロックのビット列Ｚに対して、検査行列Ｔを乗算し、パリティ検査を実行する。パリティ検査は、ＴＺt＝０か否かを判定する。硬判定ユニット６７が、出力部に相当する。【０１１５】
制御ユニット６５は、ＬＬＲ生成ユニット６６、ＬＤＰＣユニット６４および硬判定ユニット６７のデータフローを制御するとともに、ＬＤＰＣユニット６４での復号処理の反復回数を制御する。【０１１６】
図１９に、ＬＤＰＣユニット６４の詳細構成を例示する。図１９に示すように、実施例２のＬＤＰＣユニット６４は、複数のメッセージノード処理部６１−１、６１−２等と、複数のチェックノード処理部６２−１、６２−２等と、相補復号化部６３とを有する。以下、複数のメッセージノード処理部６１−１、６１−２等を総称する場合には、単に、メッセージノード処理部６１という。また、複数のチェックノード処理部６２−１、６２−２等を総称する場合には、単に、チェックノード処理部６２という。メッセージノード処理部６１が、情報ビット演算部に相当する。また、チェックノード処理部６２がチェック演算部に相当する。【０１１７】
このうち、チェックノード処理部６２は、ＬＤＰＣ復号における行処理を実行する。ＬＤＰＣ復号における行処理では、チェックノード処理部６２は、検査行列Ｈの要素Ｈｍｎ＝１を満たす（ｍ，ｎ）について、行ｍごとに、検査行ｍに参加するビット列の集合に対して、情報ビットのｎ番目のビットの対数尤度比ＬＬＲを算出する。ただし、行ｍごとに算出されるｎ番目のビットの対数尤度比ＬＬＲは、部分対数尤度比と呼ばれる。さらに、チェックノード処理部６２は、算出した部分対数尤度比から前回算出した部分対数尤度比を減算することにより、部分対数尤度比の増分値、すなわち、検査行列の行ごとの外部値を算出する。【０１１８】
一方、メッセージノード処理部６１は、ＬＤＰＣ復号における列処理を実行する。列処理では、メッセージノード処理部６１は、検査行列Ｈの要素Ｈｍｎ＝１を満たす（ｍ，ｎ）について、列ごとに、情報ビットのｎ番目のビットの部分対数尤度比の増分値を加算することで、事後の対数尤度比ＬＬＲを算出する。なお、事後の対数尤度比ＬＬＲは、反復処理における次回の処理では、事前の対数尤度比ＬＬＲとなる。【０１１９】
図１９に示すメッセージノード処理部６１、およびチェックノード処理部６２は、検査行列に基づくタナーグラフに対応する構成としてしてもよい。すなわち、ＬＤＰＣの符号語のビット数だけメッセージノードを設けてもよい。また、検査行列の行処理、すなわち、パリティ検査式に対応して、検査行列の行数分のチェックノード処理部６２を設けてもよい。また、メッセージノード処理部６１あるいはチェックノード処理部６２は、ハードウェア回路で構成してもよい。また、メッセージノード処理部６１あるいはチェックノード処理部６２のハードウェア回路は、処理能力と要求される処理速度との関係から、集約してもよい。例えば、複数のメッセージノード処理部６１として、複数のビットを処理するハードウェア回路を設けてもよい。また、複数のチェックノード処理部６２として、検査行列の複数行の処理を実行するハードウェア回路を設けてもよい。【０１２０】
また、ＣＰＵ、ＤＳＰ等のプロセッサが、メッセージノード処理部６１あるいはチェックノード処理部６２として、メモリ上に展開されたコンピュータプログラムを実行するようにしてもよい。ＣＰＵ、ＤＳＰ等のプロセッサが、メッセージノード処理部６１あるいはチェックノード処理部６２として機能する場合に、プロセッサの数は、要求される処理速度から決定すればよい。例えば、単一のＣＰＵあるいはＤＳＰが、すべてのメッセージノード処理部６１あるいはチェックノード処理部６２の処理を実行するようにしてもよい。また、個々のメッセージノード処理部６１あるいはチェックノード処理部６２ごとにＣＰＵあるいはＤＳＰを設けてもよい。【０１２１】
図２０に、検査行列に対応するタナーグラフの例を示す。タナーグラフにおいて、メッセージノードは、符号語のビットに対応し、チェックノードは、検査行列の行に対応する。また、メッセージノードと、チェックノードとを接続する線は、検査行列（Ｈｍｎ）（ｍ＝１，．．．Ｍ，ｎ＝１，．．．Ｎ）において、要素Ｈｍｎ＝１によって、検査行列の第ｍ行で検査される符号語の第ｎ番目のビットと検査行列の第ｍ行との関係を示している。【０１２２】
図２０のように、各チェックノードに接続されるメッセージノードが３個である場合を考える。各チェックノードに接続されるメッセージノードが３個である場合とは、検査行列（Ｈｍｎ）において、各行に値１の要素が３個含まれる場合に相当する。この場合に、パリティ検査式＝０となる符号語の場合、３つのメッセージノードＭＮ０，ＭＮ１，ＭＮ２の値を（ＭＮ０の値  ＭＮ１の値  ＭＮ２の値）で表すと、以下の場合が考えられる。（０００）、（０１１）、（１０１）、（１１０）。【０１２３】
したがって、３つのメッセージノードのうちの１つが０となる確率は、他の２つのメッセージノードの値として、１が偶数個含まれる場合に高くなる。すなわち、３つのメッセージノードのうちの１つのメッセージノードが０となる対数尤度比のうち、検査行列の１つの行に対応する部分対数尤度比は次のように求めることができる。すなわち、部分対数尤度比は、部分対数尤度比を求めるメッセージノードを除く、他の２つのメッセージノードの値を（０，０）または（１，１）にする確率を反映したものとなる。【０１２４】
そこで、部分対数尤度比を生成されるメッセージノードをＭＮ２とし、他の２つのメッセージノードＭＮ０およびＭＮ１の値をｘ（０）およびｘ（１）とすると、メッセージノードをＭＮ２に送信すべき部分対数尤度比ｙ（ｉ）は、以下の数６で表すことができる。なお、数６では、メッセージのノードｘ（０）、ｘ（１）のＬＬＲをｘ（０）、ｘ（１）としている。【０１２５】
［数６］
2011024260.tif 000008
数６の分子は、２つのメッセージノードのうち、偶数個がビット１である確率に相当し、分母は、２つのメッセージノードのうち、奇数個がビット１である確率に相当する。【０１２６】
図２０に示したタナーグラフでは、それぞれのチェックノードに接続される３つのメッセージのうち、２つのメッセージノードを選択し、それぞれのＬＬＲ値から、数６にしたがって、ＬＬＲであるｙ（ｉ）を算出し、算出された部分対数尤度比の増分をメッセージノードｘｉに送信する。部分対数尤度比の増分は、数６で算出されたｙ（ｉ）から、前回算出された部分対数尤度比を減算した値である。【０１２７】
さらに、数６の部分対数尤度比をメッセージノードの組み合わせＭＮ０とＭＮ２についても算出し、算出された部分対数尤度比の増分をメッセージノードＭＮ１に送る。また、数６の部分対数尤度比をメッセージノードの組み合わせＭＮ１とＭＮ２についても算出し、算出された部分対数尤度比の増分をメッセージノードＭＮ０に送る。以上の処理によって、チェックノードによる１回の処理とする。【０１２８】
なお、チェックノードに接続されるメッセージノードが４個存在する場合、４個のチェックノードを、部分対数尤度比ｙ（ｉ）を算出するための３つのチェックノードと、部分対数尤度比の増分を受けるメッセージノードＭＮｉに分け、以下の数７による部分対数尤度比ｙ（ｉ）を算出する。【０１２９】
［数７］
2011024260.tif 000009
【０１３０】
数７の分子は、３つのメッセージノードのうち、偶数個がビット１である確率に相当し、分母は、３つのメッセージノードのうち、奇数個がビット１である確率に相当する。【０１３１】
数６あるいは数７を一般化すると、以下の数８で示すことができる。【０１３２】
［数８］
ｙ(i)=ｌｎ（チェックノードに接続されるメッセージノードのうち、ビットが１であるメッセージノードが偶数個である確率／チェックノードに接続されるメッセージノードのうち、ビットが１であるメッセージノードが奇数個である確率）；【０１３３】
一方、それぞれのメッセージノードでは、チェックノードから送られたＬＬＲ（部分対数尤度比）の増分値をｘ（ｉ）とすると、以下の数７によって、更新後のＬＬＲであるｚを算出する。【０１３４】
［数９］
ｚ＝ｙ＋Σｘ（ｉ）【０１３５】
ここで、Σは、メッセージノードに接続されるチェックノードについての加算である。また、Σは、検査行列（Ｈｍｎ）のうち、Ｈｍｎ＝１となる列ｎでの符号語ｎ（Ｎ＝１，．．．，Ｎ）についての部分対数尤度比の加算ということができる。また、ｙは、前回のｚの値である。【０１３６】
図２１に、実施例２に係る誤り訂正復号化ユニット６０ｅの処理手順を示す。図２１の処理は、図１９に示したメッセージノード演算部６１とチェックノード演算部６２との協働処理によって実行される。ただし、例えば、ＣＰＵあるいはＤＳＰ（Data Signal Processor）が、コンピュータプログラムを実行することによって、図２１の処理を実行してもよい。【０１３７】
この処理では、まず、相補復号化部６３に、受信コードブロック間パリティ、すなわち、冗長ビットのＬＬＲが入力される（Ｆ２２）。例えば、図１８に示したＬＬＲ生成ユニット６６が、受信データから分離した冗長ビットをＬＬＲに変換して相補復号化部６３に入力する。【０１３８】
次に、メッセージノード処理部６１に１つずつ、受信情報ビットまたはパリティビットが入力される（Ｆ２３）。例えば、図１８に示したＬＬＲ生成ユニット６６が、受信データから分離した受信情報ビットおよびパリティビットをＬＬＲに変換し、それぞれの受信情報ビットおよびパリティビットを処理するメッセージノード処理部６１に入力する。【０１３９】
次に、制御ユニット６５が、繰り返し回数ｎを設定する（Ｆ２４）。繰り返し回数は、相補復号化部６３、メッセージノード処理部６１、およびチェックノード処理部６２による一連の処理を繰り返す回数である。そして、制御ユニット６５が、繰り返し回数のカウンタ値ｉを０に初期化する（Ｆ２５）。そして、以下の復号処理が繰り返して実行される。【０１４０】
まず、メッセージノード処理部６１は、タナーグラフで接続されるチェックノード処理部６２に送信するＬＬＲを算出する。メッセージノード処理部６１は、検査行列の各行の検査式を担当するチェックノードに、自メッセージノードでのＬＬＲを、いわゆる事前値として送信する（Ｆ２６）。【０１４１】
ただし、タナーグラフで接続されるチェックノード処理部６２から前回送られてきたＬＬＲを、自メッセージノードでのＬＬＲから減算しておく。以下、タナーグラフで接続されるチェックノード処理部６２から前回送られてきたＬＬＲを部分対数尤度比の前回値と呼ぶことにする。【０１４２】
自メッセージノードでのＬＬＲから部分対数尤度比の前回値を減算する理由は、次の通りである。部分対数尤度比は、タナーグラフで接続されるチェックノード処理部６２が、自メッセージノード以外の他のメッセージノードのＬＬＲを基に、検査行列の行に相当する検査式にしたがって算出した値である。チェックノードでの次の部分対数尤度比を算出ときには、部分対数尤度比の前回値に相当する情報は、チェックノードに接続される他のメッセージノードにおいてさらに更新された後に、他のメッセージノードからチェックノードに送信されることになる。したがって、自メッセージノードでのＬＬＲから部分対数尤度比の前回値を減算するのである。そして、メッセージノード処理部６１は、タナーグラフで接続されるチェックノード処理部６２に、部分対数尤度比の前回値を減算したＬＬＲを送信する。ただし、Ｆ２６の処理が第１回目の繰り返しでなされる場合には、受信情報ビットから算出されたＬＬＲの初期値をそのままチェックノードに送信すればよい。【０１４３】
なお、タナーグラフで接続されるチェックノード処理部６２と、メッセージノード処理部６１は、検査行列（Ｈｎｍ）の各行で、Ｈｎｍ＝１となる列と、各行とによって規定される。すなわち、Ｈｎｍ＝１となる列に該当する受信ビットを処理するメッセージノード処理部６１と、当該行に相当するチェックノード処理部６２とによって、タナーグラフが形成される。したがって、Ｆ２６の処理は、検査行列（Ｈｎｍ）の各行で、Ｈｎｍ＝１となる列に該当するメッセージノード処理部６１から、それぞれの行に相当するチェックノード処理部６２へのＬＬＲの事前値を送信する処理ということができる。【０１４４】
次に、チェックノード処理部６２は、タナーグラフの各線ごとに、その線以外の線から送信されたＬＬＲを用いて、ＬＬＲを算出する。ＬＬＲは、数６から数８で例示される。数６は、チェックノードに接続されるメッセージノードが３個の例であり、検査行列（Ｈｍｎ）ので、Ｈｍｎ＝１となる要素を３個含む行に対応する検査式の場合である。また、数７は、チェックノードに接続されるメッセージノードが４個の例であり、検査行列（Ｈｍｎ）ので、Ｈｍｎ＝１となる要素を４個含む行に対応する検査式の場合である。なお、検査行列の行に含まれるＨｍｎ＝１となる要素の個数が、３個あるいは４個以外の場合も同様に算出できる。以下、各線用に求めたＬＬＲを部分対数尤度比と呼ぶ。各線用に求めたＬＬＲを部分対数尤度比と呼ぶ理由は、部分対数尤度比が検査行列の１つの行に対応する検査式から得られる情報に相当するからである。メッセージノード側では、複数の行に相当する複数のチェックノードからの部分対数尤度比を基に、次のＬＬＲを算出することになる。【０１４５】
そして、チェックノード処理部６２は、各線用に求めたＬＬＲ（部分対数尤度比）から、前回のＬＬＲを減算することで、各線用のＬＬＲ（部分対数尤度比）の増分を求める（Ｆ２７）。【０１４６】
そして、チェックノード処理部６２は、各線用に求めたＬＬＲ（部分対数尤度比）の増分をチェックノード処理部６１に送信する（Ｆ２８）。【０１４７】
そして、メッセージノード処理部６１で、タナーグラフで接続されるチェックノード処理部６２から送られてきたＬＬＲ（部分対数尤度比）の増分に基づき、メッセージノードのＬＬＲを更新する（Ｆ２９）。メッセージノードのＬＬＲは、例えば、数９によって算出される。Ｆ２９の処理は、検査行列の列方向に対するＬＬＲ（部分対数尤度比）の増分の加算処理ということができる。このメッセージノードのＬＬＲは、当該メッセージノードが担当するビットの現在の信頼度情報ということができる。【０１４８】
次に、メッセージノード処理部６１は、相補復号化部６３に、メッセージノードのＬＬＲを送信する（Ｆ３０）。【０１４９】
次に、相補復号化部６３は、各コードブロックのビットに対応するメッセージノードから送信されたＬＬＲと冗長ビットを基に、ＬＬＲを更新する（Ｆ３１）。Ｆ３１の処理は、実施例１の相補復号化部２１ｐの処理と同様である。Ｆ３１の処理は、コードブロック間のパリティを用いて、メッセージノードのＬＬＲの信頼度をさらに高める処理ということができる。【０１５０】
そして、相補復号化部６３は、Ｆ３１の処理でのＬＬＲ送信元のメッセージノードに、更新後のＬＬＲを送信する（Ｆ３２）。
そして、メッセージノード処理部６１は、相補復号化部６３から送信されたＬＬＲを更新後のＬＬＲとする（Ｆ３３）。すなわち、Ｆ３３の処理は、相補復号化部６３から送信されたＬＬＲで、メッセージノード処理部６１のＬＬＲを置き換える処理である。【０１５１】
そして、Ｆ３３の処理後に、カウンタｉが１インクリメントされる（Ｆ３４）。カウンタｉは、例えば、相補復号化部６３からのデータ送信をトリガにして、インクリメントする回路とすればよい。ただし、図２０の処理がコンピュータプログラムを実行するＣＰＵあるいはＤＳＰで実行される場合には、Ｆ３４は、プログラム中の変数のインクリメントである。【０１５２】
そして、図示しない比較器によって、カウンタｉと、繰り返し回数ｎが比較される（Ｆ３５）。そして、カウンタｉが繰り返し数ｎより小さい場合には、Ｆ２６の処理に制御が移される。Ｆ２６の処理では、各メッセージノードは、タナーグラフで接続されるチェックノード処理部６２から前回送られてきたＬＬＲを、自メッセージノードでの現在のＬＬＲから減算する。そして、各メッセージノードは、タナーノードで接続されるチェックノードにＬＬＲ（事前値）を送信する。【０１５３】
一方、Ｆ３５の判定で、カウンタｉが繰り返し数ｎ以上となった場合には、制御部３５が、硬判定処理およびパリティ検査を実行する（Ｆ３６）。すなわち、硬判定処理によって、ＬＬＲから符号語（推定語）のビットが生成される。そして、符号語と検査行列が乗算されてパリティ検査が実行される。符号語と検査行列との乗算結果＝０、すなわち、パリティ検査結果が正常であると、符号語が出力される。なお、符号語と検査行列との乗算結果！＝０、すなわち、パリティ検査結果が正常でない場合、エラーが報告される。【０１５４】
なお、硬判定処理およびパリティ検査は、専用の演算回路、例えば、コンパレータ、あるいは、積和演算を実行する演算回路等が実行するようにしてもよい。【０１５５】
以上述べたように、本実施例の符号化装置５０、復号化装置６０によれば、データブロックごとに、低密度パリティ符号で符号化してコードブロックを生成し、それぞれのコードブロックに対して、メッセージノード処理部６１でのＬＬＲ（事前値）の生成と、チェックノード処理部６２でのＬＬＲ（部分対数尤度比）の生成を繰り返して実行する。さらに、各繰り返しにおいて、データブロック間で生成したパリティを基に、それぞれのデータブロックのビットのＬＬＲを生成する。したがって、従来のように、個々のデータブロック内のデータを誤り訂正符号化したコードブロックに対して低密度パリティ符号の復号を実行する場合と比較して、複数データブロックにまたがる情報から、符号語の推定ができる。したがって、例えば、１つのデータブロックに、雑音等の障害原因が集中したような場合でも、他のデータブロックの情報を基に、誤り訂正できる可能性を高めることができる。【０１５６】
なお、図２０の処理では、メッセージノード処理部６１，チェックノード処理部６２、および相補復号化部６３が、固定の回数ｎ分の処理を繰り返す例を示した。図２０の処理に代えて、各回数の処理の最後、例えば、相補復号化部６３からメッセージノード処理部６１にＬＬＲが戻されたときに、一旦硬判定を行い、コードブロックのビット列ｓを求めるようにして良い。そして、検査行列Ｔによるパリティ検査、すなわち、Ｔｓt＝０か否かのチェック処理を実行するようにしてもよい。そして、処理回数ｎの完了前であっても、検査行列Ｔによる検査式Ｔｓt＝０が満たされたときに、復号処理を終了するようにしてもよい。【０１５７】
また、図１９−図２１では、タナーグラフにしたがってＬＤＰＣの復号処理を説明した。しかし、タナーグラフ自体は、ＬＤＰＣの復号処理を説明するための概念であって、復号化装置６０がタナーグラフによって限定を受ける訳ではない。すなわち、図１８に示したＬＤＰＣユニット６４は、検査行列にしたがって、行方向の演算、すなわち、数６から数８の式にしたがって、ＬＬＲ（部分対数尤度比）を求めればよい。また、ＬＤＰＣユニット６４は、検査行列にしたがって、列方向の演算、すなわち、数９にしたがって、それぞれのビットのＬＬＲを算出すればよい。したがって、ＬＤＰＣユニット６４のハードウェア構成が、タナーグラフに厳密に対応する必要はない。ただし、例えば、ＣＰＵ、ＤＳＰが実行するコンピュータプログラムのモジュールの分割をタナーグラフのメッセージノードと、チェックノードにしたがって行ってもよい。すなわち、メッセージノードごと、チェックノードごとにモジュールを構成し、互いに通信しつつ、反復復号する構成としてもよい。
【実施例３】
【０１５８】
図２２に、実施例３に係る復号化装置の構成を例示する。図２２の復号化装置は、例えば、送信機で符号化され、送信機から送信されたデータを受信する受信機、例えば、携帯電話、データ通信端末、あるいは、テレビジョン放送の受信機に内蔵される。また、例えば、音、音声、映像、テキスト、グラフィックス等が符号化されたデータを格納した記憶媒体、あるいは、記憶装置のデータを再生装置に内蔵することができる。【０１５９】
図２２のそれぞれの構成要素は、それぞれのデジタル信号処理を実行するハードウェア回路として例示できる。ただし、図２２に示したそれぞれの構成要素として、ＣＰＵ、ＤＳＰ等のプロセッサがメモリ上に実行可能に展開にされたコンピュータプログラムを実行してもよい。また、図２２の復号化装置が、ＣＰＵ、ＤＳＰ等と、ハードウェア回路の両方を含むものでもよい。【０１６０】
図２２のように、実施例３の復号化装置は、制御部８１、入力部８２、ブロック内反復演算部８３−１、８３−２、ブロック間反復演算部８４−１、８４−２、および出力部８５を有する。以下、ブロック内反復演算部８３−１、８３−２を総称して、ブロック内反復演算部８３と称する。また、ブロック間反復演算部８４−１、８４−２を総称して、ブロック間反復演算部８４と称する。【０１６１】
制御部８１は、復号化装置全体の処理を制御する。例えば、復号化装置の起動、ブロック内反復演算部８３、ブロック間反復演算部８４の反復制御等を実行する。反復制御は、例えば、ブロック内反復演算部８３、ブロック間反復演算部８４を固定回数ｎ回反復して実行させる処理である。ただし、例えば、ブロック内反復演算部８３、ブロック間反復演算部８４によって復号されるデータが所定の基準、例えば、復号されるデータの硬判定結果が、所定の検査条件を満足したときに、ブロック内反復演算部８３、ブロック間反復演算部８４による反復される処理を停止し、出力部８５から硬判定結果を出力させてもよい。【０１６２】
入力部８２は、入力されるビット列を、コードブロックと冗長ビットに分離する。入力部８２は、例えば、実施例１のレートデマッチングユニット２０である。ただし、例えば、アンテナ２１ｇからレートデマッチングユニット２０に至る構成が、入力８２に相当する考えることもできる。また、例えば、音、音声、映像、テキスト、グラフィックスを記録した記録媒体、あるいは、音、音声、映像、テキスト、グラフィックスを記憶する記憶装置から、音、音声、映像、テキスト、グラフィックスを再生する再生装置では、図示しないデータ読み出し部が入力８２に相当する考えることもできる。すでに述べたように、冗長ビットは、コードブロックに復号されているデータブロック間で、ビットの論理演算した結果である。冗長ビットを生成するための論理演算に寄与したデータブロックに対応するコードブロックの組と、冗長ビットとの関係は、予め、送信機と受信機との間、あるいは、記録媒体へデータを記録する記録装置と再生装置の間、記憶装置と再生装置の間で取り決めておけばよい。以下、実施例３では、２つのデータブロックから冗長ビットを生成する場合を想定して説明する。ただし、冗長ビットの生成に寄与するデータブロックの数は、２個に限定されることはなく、３以上のデータブロックから冗長ビットを生成してもよい。【０１６３】
例えば、２つのデータブロックから冗長ビットを生成したデータを復号する場合には、図２２のように、２つのブロック内反復演算部８３−１、８３−２を設けることが好ましい。また、３以上のデータブロックから冗長ビットを生成する場合には、冗長ビットの生成に関与するデータブロック分のブロック内反復演算部８３を設けることが好ましい。複数のコードブロックを並列に処理できるからである。ただし、ブロック内反復演算部８３の処理が要求される復号速度を十分に達成できる場合には、ブロック内反復演算部８３が１個設けられてもよい。すなわち、１つのブロック内反復演算部８３がシーケンシャルに複数のコードブロックを復号していけゆけばよい。その場合には、反復処理途中のコードブロックを保持するバッファメモリを設ければよい。【０１６４】
ブロック内反復演算部８３は、コードブロック内のビット列を入力として、コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの信頼度情報を算出し、さらに、算出された信頼度情報を入力として、前記コードブロックに誤り訂正符号化されているデータブロック内の信号ビットの新たな信頼度情報を算出する処理を繰り返す。ただし、新たな信頼度情報を算出するごとに、ブロック内反復演算部８３は、算出した信頼度情報をブロック間反復演算部８４に引き渡す。ブロック内反復演算部８３は、例えば、図１２の第１のターボ復号回路２１から、相補復号化器２１ｐを除いた構成として例示できる。また、ブロック内反復演算部８３は、例えば、図１２の第２のターボ復号回路２１から、相補復号化器２１ｐを除いた構成として例示できる。また、ブロック内反復演算部８３は、例えば、図１９のＬＤＰＣユニットから、相補復号化器６３を除いた構成として例示できる。【０１６５】
ブロック間反復演算部６４は、それぞれの組に含まれるデータブロック間で生成された冗長ビットのＬＬＲを入力部８２から受け取る。また、ブロック内反復演算部８３にて新たな信頼度情報が算出されるごとに、算出された信頼度情報をブロック内反復演算部８３―１、８３−２から受け取る。そして、ブロック内反復演算部８３―１、８３−２から受け取った信頼度情報を基に、データブロックの組において、冗長ビット生成に寄与したビット間で、さらに、ＬＬＲを作成し、作成したＬＬＲをブロック内反復演算部８３―１、８３−２に戻す。【０１６６】
ブロック間反復演算部６４は、図１２の相補復号化器２１ｐ、図１９の相補復号化器６３と同様である。すなわち、ブロック間反復演算部６４は、ブロック内反復演算部６３で繰り返し算出されるデータブロック内の信号ビットの信頼度情報を基に、それぞれの組含まれるデータブロック内の冗長ビットの生成に寄与した信号ビットの信頼度を示すブロック間信頼度情報を算出する。そして、ブロック間反復演算部６４は、ブロック間信頼度情報を該当する信号ビットの信頼度情報としてブロック内反復演算部６３に入力する。ブロック間反復演算部６４は、ブロック内反復演算部６３の処理と連動して、コードブロック間でのＬＬＲ作成処理を繰り返す。【０１６７】
図２２では、ブロック間反復演算部８４は、複数設けられている。ただし、１つのブロック間反復演算部８４は１つであってもよい。すなわち、例えば、ブロック間反復演算部８４は冗長ビットの生成に関与した複数のデータブロックに対応するコードブロックの組について、冗長ビットに関与したコードブロックのビットに対するＬＬＲが出そろうまで待つ制御を行う。そして、各コードブロックで、冗長ビットに関与したビットのＬＬＲが出そろったときに、ブロック間反復演算部８４は、そのビットのＬＬＲを算出するようにしてもよい。また、複数のコードブロックの組に含まれるいずれか１つのコードブロックについて、冗長ビットに関与したビットのＬＬＲが更新されたとき、他のコードブロックについては、すでに生成済みのＬＬＲを用いて、冗長ビットによるコード間ＬＬＲの作成を実行してもよい。いずれにしても、反復処理途中のコードブロックを保持するバッファメモリを設ければよい。【０１６８】
以上述べたように、実施例３の復号化装置によれば、信号ビット列が分割されたデータブロックが誤り訂正符号化されたコードブロックからデータブロックを復号する場合に、コードブロック間の冗長ビットによってコードブロック間で、冗長ビットの生成に寄与したビット間でＬＬＲを作成する。冗長ビットの生成に寄与したビット間でＬＬＲは、例えば、実施例１の数１の式（１）で示される。したがって、信号ビット列がデータブロックに分割され、コードブロックに誤り訂正符号化されている場合、コードブロックごとの反復処理によって、軟性判定復号を行う場合でも、他のコードブロックからの情報を取り込むことができる。すなわち、実効的にコードブロックの範囲、すなわち、信号ビット列を分割されたデータブロックの範囲に制限されることなく、広範囲の情報ビット列から、対象とするコードブロックを復号し、データブロックを得ることができる。【０１６９】
《その他》
以上に説明した本実施形態並びに第１及び第２の変形形態では、ターボ符号化回路及びターボ復号化回路は、ハードウェア要素を含む。ハードウェア要素としては、例えば、ＦＰＧＡ［Field Programmable Gate Array］、ＡＳＩＣ［Application Specific Integrated Circuit］、ＬＳＩ［Large Scale Integration］、ＩＣ［Integrated Circuit］、ゲートアレイ、論理ゲートがある。論理ゲートとしては、例えば、ＡＮＤ、ＯＲ、ＮＯＴ、ＮＡＮＤ、ＮＯＲ、フリップフロップ、カウンタがある。【０１７０】
また、ターボ符号化回路及びターボ復号化回路は、ハードウェア要素とソフトウエア要素とを含むものであってもよい。ソフトウエア要素としては、例えば、インターフェースプログラム、ドライバプログラム、モジュールプログラム、コンポーネントプログラム、ファームウエア、オブジェクト、クラス、タスク、プロセス、関数、属性、プロシジャ、サブルーチン、プログラムコード、マイクロコード、コードセグメント、エクストラセグメント、スタックセグメント、テーブル、データ、プログラム領域、データ領域、データ、データベース、データ構造、フィールド、レコード、マトリックス、配列、変数、パラメータがある。【０１７１】
また、以上に例示したソフトウエア要素は、何れも、Ｃ言語、Ｃ＋＋、Ｊａｖａ（米国サンマイクロシステムズ社の商標）、ビジュアルベーシック（米国マイクロソフト社の商標）、Ｐｅｒｌ、Ｒｕｂｙ、その他多くのプログラミング言語により記述されたものであってもよい。【０１７２】
また、実施例１、実施例２で説明した符号化装置、および復号化装置は、送信機と受信機とに適用できる他、例えば、音声、音、音楽、映像、各種データを格納する記録装置にも適用できる。また、実施例１、実施例２で説明した符号化装置、および復号化装置は、上記記録装置に記録されたデータから、音声、音、音楽、映像、各種データを再生する再生装置にも適用できる。
【符号の説明】
【０１７３】
１０    送信機
１０ａ  バイナリソース
１０ｂ  コードブロック分割ユニット
１０ｃ  誤り訂正符号化ユニット
１０ｄ  レートマッチングユニット
１０ｅ  変調ユニット
１０ｆ  周波数アップコンバータ
１０ｇ  アンテナ
１０ｈ  通信制御ユニット
１１    第１のＣＲＣ符号付加回路
１２    第２のＣＲＣ符号付加回路
１３    第１のターボ符号化回路
１３ａ  第１のＲＳＣ符号化部
１３ｂ  インターリーブ部
１３ｃ  第２のＲＳＣ符号化部
１４    第２のターボ符号化回路
１５    冗長ビット生成回路
２０    受信機
２０ａ  アンテナ
２０ｂ  周波数ダウンコンバータ
２０ｃ  復調ユニット
２０ｄ  レートデマッチングユニット
２０ｅ  誤り訂正復号化ユニット
２０ｆ  コードブロック結合ユニット
２０ｇ  バイナリシンク
２０ｈ  通信制御ユニット
２１    第１のターボ復号化回路
２１ａ  対数尤度比演算器
２１ｂ  レジスタ
２１ｃ  対数尤度比演算器
２１ｄ  レジスタ
２１ｅ  第１のｍビット加算器
２１ｆ  第１のＳＩＳＯ復号化部
２１ｇ  第２のｍビット加算器
２１ｈ  インターリーブ部
２１ｊ  第２のＳＩＳＯ復号化部
２１ｋ  デインターリーブ部
２１ｍ  第３のｍビット加算器
２１ｎ  シフトレジスタ
２１ｐ  相補復号化部
２１ｑ  ＣＲＣ部
２１ｒ  第４のｍビット加算器
２２    第２のターボ復号化回路
５０    送信機
５３，５４  ＬＤＰＣ符号化ユニット
６０    受信機
６１    メッセージノード処理部
６２    チェックノード処理部
６３    相補復号化部
６４    ＬＤＰＣユニット
６５    制御ユニット
６６    ＬＬＲ生成ユニット
６７    硬判定ユニット
【図１】
2011024260.tif 000010
【図２】
2011024260.tif 000011
【図３】
2011024260.tif 000012
【図４】
2011024260.tif 000013
【図５】
2011024260.tif 000014
【図６】
2011024260.tif 000015
【図７】
2011024260.tif 000016
【図８】
2011024260.tif 000017
【図９】
2011024260.tif 000018
【図１０】
2011024260.tif 000019
【図１１】
2011024260.tif 000020
【図１２】
2011024260.tif 000021
【図１３】
2011024260.tif 000022
【図１４】
2011024260.tif 000023
【図１５】
2011024260.tif 000024
【図１６】
2011024260.tif 000025
【図１７】
2011024260.tif 000026
【図１８】
2011024260.tif 000027
【図１９】
2011024260.tif 000028
【図２０】
2011024260.tif 000029
【図２１】
2011024260.tif 000030
【図２２】
2011024260.tif 000031
【国際調査報告】
2011024260.tif 000032
2011024260.tif 000033
2011024260.tif 000034
2011024260.tif 000035