(57)【特許請求の範囲】
【請求項１】
ＬＤＰＣ符号の復号装置であって、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部と、を備え、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号装置。
【請求項２】
前記第１閾値は、前記第１演算部による行処理の出力値を決定するテーブルの出力値の最大値よりも大きい、
請求項１に記載の復号装置。
【請求項３】
ＬＤＰＣ符号の復号装置であって、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部と、を備え、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号装置。
【請求項４】
前記第２閾値は、前記第１演算部による行処理の出力値を決定するテーブルの出力値の最大値よりも大きい、
請求項３に記載の復号装置。
【請求項５】
ＬＤＰＣ符号の復号装置であって、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部と、を備え、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号装置。
【請求項６】
ＬＤＰＣ符号の復号装置であって、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部と、を備え、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上、かつ、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号装置。
【請求項７】
ＬＤＰＣ符号の復号装置であって、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部と、を備え、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上、かつ、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号装置。
【請求項８】
前記第２の復号アルゴリズムは、前記第２演算部に入力される入力値の絶対値のうち、最小値と２番目に小さい値とを用いて行処理の出力値を計算するアルゴリズムである、
請求項１乃至７のいずれか１項に記載の復号装置。
【請求項９】
ＬＤＰＣ符号の復号装置の復号方法であって、
第１演算部が、第１の復号アルゴリズムに基づく行処理を行うステップと、
第２演算部が、前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行うステップと、
選択部が、所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択するステップと、を含み、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号方法。
【請求項１０】
ＬＤＰＣ符号の復号装置の復号方法であって、
第１演算部が、第１の復号アルゴリズムに基づく行処理を行うステップと、
第２演算部が、前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行うステップと、
選択部が、所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択するステップと、を含み、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号方法。
【請求項１１】
ＬＤＰＣ符号の復号装置の復号方法であって、
第１演算部が、第１の復号アルゴリズムに基づく行処理を行うステップと、
第２演算部が、前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行うステップと、
選択部が、所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択するステップと、を含み、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号方法。
【請求項１２】
ＬＤＰＣ符号の復号装置の復号方法であって、
第１演算部が、第１の復号アルゴリズムに基づく行処理を行うステップと、
第２演算部が、前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行うステップと、
選択部が、所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択するステップと、を含み、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上、かつ、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号方法。
【請求項１３】
ＬＤＰＣ符号の復号装置の復号方法であって、
第１演算部が、第１の復号アルゴリズムに基づく行処理を行うステップと、
第２演算部が、前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行うステップと、
選択部が、所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択するステップと、を含み、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上、かつ、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
復号方法。
【請求項１４】
ＬＤＰＣ符号の復号装置を、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部、として機能させ、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
プログラム。
【請求項１５】
ＬＤＰＣ符号の復号装置を、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部、として機能させ、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
プログラム。
【請求項１６】
ＬＤＰＣ符号の復号装置を、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部、として機能させ、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
プログラム。
【請求項１７】
ＬＤＰＣ符号の復号装置を、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部、として機能させ、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上、かつ、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
プログラム。
【請求項１８】
ＬＤＰＣ符号の復号装置を、
第１の復号アルゴリズムに基づく行処理を行う第１演算部と、
前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う第２演算部と、
所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する選択部、として機能させ、
前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）であり、
前記所定の判定条件は、行処理の反復復号回数が第３閾値以上、かつ、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値が２番目に小さい入力値が第２閾値以上の場合、前記第２演算部による行処理の出力値を選択し、行処理の反復復号回数が第３閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は復号装置、復号方法及びプログラムに関する。
【背景技術】
【０００２】
ＬＤＰＣ（Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−Ｃｈｅｃｋ）符号は、情報伝送レートの理論上の限界値であるシャノン限界に非常に近い誤り訂正能力を持つ誤り訂正符号として注目を集めている。例えばＬＤＰＣ符号の復号処理をハードウェアにより実現し、通信システム及びストレージシステム等に適用する試みが盛んに行われている。ＬＤＰＣ符号の様々な復号アルゴリズムが提案されてきたが、最も一般的な復号アルゴリズムは、ＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）である。ＳＰＡは誤り訂正能力が最も高い復号アルゴリズムとして知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４９２９３４２号公報
【特許文献２】特許第５０１８８０７号公報
【特許文献３】特開２０１４−１４０１１１号公報
【非特許文献】
【０００４】
【非特許文献１】Ａ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｄｅｃｏｄｅｒ  ＶＬＳＩ  ｆｏｒ  Ｓｔｒｕｃｔｕｒｅｄ  ＬＤＰＣ  Ｃｏｄｅｓ，  ＩＳＣＩＴ  ２００６
【非特許文献２】Ｏｎ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｍｉｎ−ｓｕｍ  ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ｄｅｃｏｄｉｎｇ  ｌｏｗ−ｄｅｎｓｉｔｙ  ｐａｒｉｔｙ−ｃｈｅｃｋ  （ＬＤＰＣ）  ｃｏｄｅｓ，Ｇｌｏｂａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｃｏｎｆｅｒｅｎｃｅ，  ２００２．  ＧＬＯＢＥＣＯＭ  ０２．ＩＥＥＥ  （Ｖｏｌｕｍｅ：２）Ｐ１３４９−１３５３
【非特許文献３】ＬＤＰＣ符号の簡易復号法とその離散化密度発展法―δ−Ｍｉｎ復号法の離散化密度発展法による特性評価―，信学技報ＲＤＣ２００５−４２
【非特許文献４】ＩＥＥＥ  Ｃｏｍｍｕｎ．  Ｌｅｔｔ．，  ｖｏｌ．６，  ｐｐ．２０８−２１０  ２００２，  “Ｄｅｎｓｉｔｙ  ｅｖｏｌｕｔｉｏｎ  ｆｏｒ  ｔｗｏ  ｉｍｐｒｏｖｅｄ  ｂｐ−ｂａｓｅｄ  ｄｅｃｏｄｉｎｇ  ａｌｇｏｒｉｔｈｍｓ  ｏｆ  ＬＤＰＣ  ｃｏｄｅｓ”
【非特許文献５】ＩＥＥＥ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ  ＬＥＴＴＥＲＳ，  ＶＯＬ．１０，ＮＯ．６，ＪＵＮＥ  ２００６，Ｐ．４８３−４８５，“Ａｄａｐｔｉｖｅ  Ｏｆｆｓｅｔ  Ｍｉｎ−Ｓｕｍ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｃｏｄｅｓ”
【非特許文献６】ＩＣＳＰ２００８  Ｐｒｏｃｅｅｄｉｎｇｓ，  “Ｍｏｄｉｆｉｅｄ  Ｎｏｒｍａｌｉｚｅｄ  Ｍｉｎ−Ｓｕｍ  Ｄｅｃｏｄｉｎｇ  ｏｆ  ＬＤＰＣ  Ｃｏｄｅｓ”
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながらＬＤＰＣ符号の復号処理を行う回路の規模、及び、ＬＤＰＣ符号の復号処理を行うプログラムに使用できるメモリ等の復号装置のリソースに制限がある場合、ＬＤＰＣ符号の復号処理を精度良く行うことが難しかった。
【課題を解決するための手段】
【０００６】
実施形態の復号装置は、ＬＤＰＣ符号の復号装置であって、第１演算部と、第２演算部と、選択部と、を備える。第１演算部は、第１の復号アルゴリズムに基づく行処理を行う。第２演算部は、前記第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズムに基づく行処理を行う。選択部は、所定の判定条件に基づいて、前記第１演算部による行処理の出力値か、前記第２演算部による行処理の出力値かを選択する。前記第１の復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡ（Ｓｕｍ−Ｐｒｏｄｕｃｔ−Ａｌｇｏｒｉｔｈｍ）である。前記所定の判定条件は、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値以上の場合、前記第２演算部による行処理の出力値を選択し、前記第１演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第１閾値未満の場合、前記第１演算部による行処理の出力値を選択する判定条件である。
【図面の簡単な説明】
【０００７】
【図１】実施形態の通信システムの構成の例を示す図。
【図２】実施形態の復号装置の構成の例を示す図。
【図３】実施形態の行処理演算部の構成の例を示す図。
【図４】実施形態の第１演算部の構成の例を示す図。
【図５】実施形態のΦ１テーブルの設定値の例を示す図。
【図６】実施形態のΦ２テーブルの設定値の例を示す図。
【図７】実施形態の第２演算部の構成の例を示す図。
【図８】Ｇａｌｌａｇｅｒの関数ｆ（ｘ）を示す図。
【図９】実施形態の復号装置の動作例を示すフローチャート。
【図１０】実施形態の行処理演算部の動作例を示すフローチャート。
【図１１】実施形態の変形例の通信システムの構成の例を示す図。
【図１２Ａ】実施形態の変形例の検査行列の例１を示す図。
【図１２Ｂ】実施形態の変形例の検査行列の例２を示す図。
【図１２Ｃ】実施形態の変形例の検査行列の例３を示す図。
【図１３Ａ】例１の検査行列を使用した場合のシミュレーション結果の値を示す図。
【図１３Ｂ】例２の検査行列を使用した場合のシミュレーション結果の値を示す図。
【図１３Ｃ】例３の検査行列を使用した場合のシミュレーション結果の値を示す図。
【図１４Ａ】例１の検査行列を使用した場合のシミュレーション結果のグラフを示す図。
【図１４Ｂ】例２の検査行列を使用した場合のシミュレーション結果のグラフを示す図。
【図１４Ｃ】例３の検査行列を使用した場合のシミュレーション結果のグラフを示す図。
【図１５】実施形態の復号装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、復号装置、復号方法及びプログラムの実施形態を詳細に説明する。
【０００９】
図１は実施形態の通信システムの構成の例を示す図である。実施形態の通信システム１０は、符号化装置２０、通信路３０及び復号装置４０を備える。符号化装置２０は、通信路３０を介して送信される送信データに生成行列Ｇを掛けることにより、ＬＤＰＣ符号データを生成する。通信路３０は、ＬＤＰＣ符号データの伝送に使用される媒体である。通信路３０は、無線方式でも有線方式でもよく、また無線方式及び有線方式が組み合わされていてもよい。
【００１０】
復号装置４０は、通信路３０から受信データを受信すると、検査行列Ｈを使用して当該受信データの誤りを訂正することにより、復号データ（ＬＤＰＣ符号データ）を生成する。検査行列Ｈの各成分の値は０又は１である。ＬＤＰＣ符号の検査行列Ｈは、１の数が少ない疎行列である。また生成行列Ｇ及び検査行列Ｈは、ＧＨＴ＝０の関係を満たす。ここでＨＴは、Ｈの転置行列を表す。
【００１１】
次に実施形態の復号装置４０の構成例を示し、下記式（１）の検査行列Ｈを用いて復号した時の復号動作について説明する。
【００１２】
【数１】
0006605839.tif 000002
【００１３】
式（１）の検査行列Ｈは、３行６列の場合の例である。式（１）の検査行列Ｈの行重みは３であり、列重みは１又は２である。ここで行重みとは、行に含まれる１を示す成分の数である。また列重みとは、列に含まれる１を示す成分の数である。実施形態の説明では、式（１）の検査行列Ｈが使用される場合について説明する。なお検査行列Ｈは式（１）の検査行列に限られず任意でよい。
【００１４】
図２は実施形態の復号装置４０の構成の例を示す図である。実施形態の復号装置４０は、受信部４１、復号データメモリ４２、行処理演算部４３、検査行列データメモリ４４、行処理メモリ４５、二値化部４６及び検査部４７を備える。
【００１５】
受信部４１は、符号化装置２０から通信路３０を介して受信データＲを受信すると、通信路３０のモデルと受信データＲから、アナログの復号データＤ’ｎの初期値Ｄ’ｎ（ｉｎｉｔ）を計算し、復号データメモリ４２に記憶する。ここで、ｎは、検査行列の列番号（データ番号）であり、ｎは１〜６となる。アナログの復号データＤ’ｎは下記式（２）により表される。
【００１６】
【数２】
0006605839.tif 000003
【００１７】
ここでＰ（Ｄｎ＝０）は、バイナリ復号データＤｎが０である確率を表し、Ｐ（Ｄｎ＝１）は、Ｄｎが１である確率を表している。Ｐ（Ｄｎ＝０）＞Ｐ（Ｄｎ＝１）の場合、復号データＤ’ｎは正の数となり、値が大きいほどＤｎが０である確率が大きいことを示す。Ｐ（Ｄｎ＝０）＜Ｐ（Ｄｎ＝１）の場合、復号データＤ’ｎは負の数となり、値が小さいほどＲｎが１である確率が大きいことを示す。Ｐ（Ｄｎ＝０）＝Ｐ（Ｄｎ＝１）の場合、復号データＤ’ｎは０となり、Ｒｎが０である確率と、Ｒｎが１である確率と、が等しいことを示す。
【００１８】
そして、Ｄ’ｎの初期値Ｄ’ｎ（ｉｎｉｔ）は、受信データと通信路モデルから計算され、下記式（３）となっている。
【数３】
0006605839.tif 000004
【００１９】
受信データＲの１データあたりのビット数は任意でよい。実施形態の説明では、受信データＲのデータ長が６であり、受信データＲ（＝（Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５，Ｒ６））から計算されたＤ’１（ｉｎｉｔ）〜Ｄ’６（ｉｎｉｔ）が、復号データメモリ４２に格納される場合を例にして説明する。
【００２０】
受信部４１が、Ｄ’ｎ（ｉｎｉｔ）を復号データメモリ４２に記憶した後、行処理演算部４３が、行処理メモリ４５を初期化する。行処理メモリ４５には、行処理演算の確率値αｍ＝（αｍ１，αｍ２，αｍ３，αｍ４，αｍ５，αｍ６）が格納されている。ここで、ｍは検査行列の行番号を示しており、ｍは、１〜３となる。行処理演算の確率値は、ｍ行の行処理演算に着目した時の、復号データＤｎの対数確率比となっており、下記式（４）となっている。
【００２１】
【数４】
0006605839.tif 000005
【００２２】
数式（４）の分母及び分子の意味は、ｍ行の行処理演算に着目している点以外は、数式（２）の分母及び分子の意味と同じなので、説明を割愛する。復号装置４０が復号を実施する前は、行処理演算部４３により行処理演算が実施されていないため、復号データが０か１かは全く分からない。よって、行処理演算部４３は全てのαの値を０に初期化する。
【００２３】
復号データメモリ４２と行処理メモリ４５の初期化が行われた後、行処理演算部４３が行処理を行う。行処理演算部４３は、検査行列Ｈの行毎に行処理を繰り返すことにより、アナログの受信データＲの誤りを訂正する。行処理は、復号データＤ’ｎ、及び、行処理演算の確率値αｍｎを更新する処理である。
【００２４】
具体的には、まず行処理演算部４３は、検査行列データメモリ４４から検査行列Ｈを読み出す。
【００２５】
次に、行処理演算部４３は、復号データメモリ４２からアナログの復号データＤ’ｎを読み出し、行処理メモリ４５から行処理演算の確率値αｍｎを読み出す。ここでｍは検査行列Ｈの行番号で、ｎは行処理対象の行に含まれる１を示す成分の列番号である。
【００２６】
行処理演算部４３は、行処理演算の確率値αｍｎと復号データＤ’ｎを読み出した後、検査行列Ｈの行毎に行処理を行う。検査行列Ｈの各行の行処理では、復号データＤ’ｎが更新され、行処理演算の確率値αｍｎが更新される。
【００２７】
例えば式（１）の検査行列Ｈの１行目の行処理の場合、１を示す成分の列番号は２，３，４なので、復号データＤ’２，Ｄ’３及びＤ’４が更新される。行処理演算部４３は、１行目の行処理を行う場合、復号データメモリ４２から復号データＤ’ｎ（ｎ＝２，３，４）を読み出す。行処理演算部４３は、１行目の行処理により得られた復号データＤ’ｎ（ｎ＝２，３，４）により、復号データメモリ４２の復号データＤ’ｎ（ｎ＝２，３，４）を更新する。そして、行処理演算の確率値の場合、１を示す成分の列番号は２，３，４なので、行処理演算の確率値α１２，α１３及びα１４が読み出され、更新される。行処理演算部４３の行処理の詳細な説明については後述する。
【００２８】
行処理演算部４３は、行処理が終了すると、アナログの復号データＤ’＝（Ｄ’１，Ｄ’２，Ｄ’３，Ｄ’４，Ｄ’５，Ｄ’６）の読出し要求を、二値化部４６に入力する。例えば式（１）の検査行列Ｈの行処理の場合、行処理演算部４３は、検査行列Ｈの３行目の行処理が終了すると、読出し要求を二値化部４６に入力する。
【００２９】
二値化部４６は、行処理演算部４３から読み出し要求を受け付けると、復号データメモリ４２からアナログの復号データＤ’＝（Ｄ’１，Ｄ’２，Ｄ’３，Ｄ’４，Ｄ’５，Ｄ’６）を読み出す。二値化部４６は、アナログの復号データＤ’＝（Ｄ’１，Ｄ’２，Ｄ’３，Ｄ’４，Ｄ’５，Ｄ’６）を、閾値判定によってバイナリの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）に変換する。すなわち各Ｄｎは０又は１である。二値化部４６はバイナリの復号データＤを検査部４７に入力する。
【００３０】
検査部４７は、二値化部４６からバイナリの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）を受け付けると、当該復号データＤをパリティ検査する。具体的には、検査部４７は、検査行列データメモリ４３から検査行列Ｈを読み出し、Ｓ＝Ｄ×ＨＴ＝（Ｓ１，Ｓ２，Ｓ３）によりシンドロームＳを算出する。
【００３１】
そして検査部４７は、Ｓ≠（０，０，０）の場合、行処理の再実行通知を行処理演算部４３に入力する。行処理演算部４３は、検査部４７から再実行通知を受け付けると、１回目の行処理により更新されたアナログの復号データＤ’＝（Ｄ’１，Ｄ’２，Ｄ’３，Ｄ’４，Ｄ’５，Ｄ’６）、及び、行処理演算の確率値αｍｎを使用して、２回目の行処理を検査行列Ｈの１行目から再び行う。
【００３２】
なお行処理演算部４３の行処理は、Ｓ＝（０，０，０）又は所定の反復復号回数（第４閾値）に達するまで繰り返し行われる。Ｎ回目の行処理に使用されるアナログの復号データＤ’、及び、行処理演算の確率値αｍｎの初期値には、Ｎ−１回目の行処理により得られた値が使用される。所定の反復復号回数（第４閾値）に達するまでに、Ｓ＝（０，０，０）にならない場合、受信データＲから復号データＤが得られず、復号に失敗する。
【００３３】
検査部４７は、Ｓ＝（０，０，０）の場合、復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）を出力する。また検査部４７は、Ｓ≠（０，０，０）、かつ、所定の反復復号回数に達した場合、受信データＲ＝（Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５，Ｒ６）からデジタルの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）が得られないことを示すエラーを出力する。
【００３４】
次に行処理演算部４３の行処理について具体的に説明する。
【００３５】
図３は実施形態の行処理演算部４３の構成の例を示す図である。実施形態の行処理演算部４３は、減算部４０１、第１演算部４０２、第２演算部４０３、選択部４０４、符号値演算部４０５、乗算部４０６及び加算部４０７を備える。
【００３６】
減算部４０１は、復号データメモリ４２からアナログの復号データＤ’ｎを読み出し、行処理メモリ４５から行処理演算の確率値αｍｎを読み出すと、Ｄ’ｎ−αｍｎを算出する。減算部４０１は、Ｄ’ｎ−αｍｎを第１演算部４０２、第２演算部４０３、選択部４０４及び加算部４０７に入力する。
【００３７】
第１演算部４０２は、減算部４０１からＤ’ｎ−αｍｎを受け付けると、第２演算部４０３で使用される復号アルゴリズムよりも誤り訂正能力が高い復号アルゴリズムに基づく行処理により、αｍｎの絶対値｜αｍｎ｜を算出する。実施形態の説明では、第１演算部４０２で使用される復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡである。
【００３８】
第１演算部４０２の行処理の詳細について説明する。
【００３９】
図４は実施形態の第１演算部４０２の構成の例を示す図である。実施形態の第１演算部４０２は、ＡＢＳ（Ａｂｓｏｌｕｔｅ  ｖａｌｕｅ）部４２１、ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）部４２２、１／２部４２３、Φ１部４２４、ＦＦ部４２５、加算部４２６、ＦＦ部４２７、ＦＦ部４２８、ＦＦ部４２９、Ｑ−Ｒ部４３０、１／２部４３１、Φ２部４３２及びＦＦ部４３３を備える。
【００４０】
第１演算部４０２は下記式（５）の演算を行う。
【００４１】
【数５】
0006605839.tif 000006
【００４２】
ここでｍは検査行列Ｈの行番号である。ｎは検査行列Ｈの列番号である。
【００４３】
Ａ（ｍ）は行処理対象の行に含まれる１を示す成分の列番号の集合である。例えば上述の式（１）の検査行列Ｈの場合、Ａ（１）＝｛２，３，４｝、Ａ（２）＝｛１，４，５｝、Ａ（３）＝｛３，５，６｝である。
【００４４】
Ａ（ｍ）＼ｎは差集合である。例えば上述の式（１）の検査行列Ｈの場合、Ａ（１）＼２＝｛３，４｝、Ａ（１）＼３＝｛２，４｝、Ａ（１）＼４＝｛２，３｝である。
【００４５】
Φ１及びΦ２はＧａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ｛ｔａｎｈ（ｘ／２）｝を計算するためのテーブルである。実施形態では、Φ１＝Φ２＝−ｌｏｇ｛ｔａｎｈ（ｘ）｝の入力値ｘと出力値Φ１（ｘ）（Φ２（ｘ））との対応が記憶されている。
【００４６】
図５は実施形態のΦ１テーブルの設定値の例を示す図である。図５の例は、入力値ｘのビット数が７ビット（整数３ビット、小数４ビット）であり、出力値Φ１（ｘ）のビット数が１０ビット（整数４ビット、小数６ビット）である場合を示す。例えば入力値ｘが１の場合、７ビットの２進数では００００００１である。下位４ビットが小数ビットなので、入力値ｘが１の場合、浮動小数点形式では、１／１６＝０．０６２５となる。また例えば入力値ｘが１の場合、出力値Φ１（１）は１７８である。１７８は、１０ビットの２進数では００１０１１００１０である。上位４ビットが整数ビットであり、下位６ビットが小数ビットなので、出力値Φ１（ｘ）が１７８の場合、浮動小数点形式では、２＋１／２＋１／４＋１／３２＝２．７８１２５となる。
【００４７】
図６は実施形態のΦ２テーブルの設定値の例を示す図である。図６の例は、入力値ｘのビット数が１０ビット（整数３ビット、小数７ビット）であり、出力値Φ２（ｘ）のビット数が７ビット（整数４ビット、小数３ビット）である場合を示す。図６のΦ２テーブルの説明は、図５のΦ１テーブルの説明と同様なので省略する。
【００４８】
第１演算部４０２が、上述のΦ１テーブル及びΦ２テーブルを利用して、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ｛ｔａｎｈ（ｘ／２）｝の演算を行うことにより、ＬＤＰＣ符号の復号処理に必要なリソースを抑えることができる。
【００４９】
図４に戻り、第１演算部４０２の処理について、上述の式（１）の検査行列Ｈの１行目の行処理の場合を例にして具体的に説明する。ｍ＝１、Ａ（１）＝｛２，３，４｝なので、ＡＢＳ部４２１は、減算器４０１からＤ’２−α１２、Ｄ’３−α１３及びＤ’４−α１４を順に受け付ける。ＡＢＳ部４２１は、それぞれの絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜を順に算出し、当該絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜を順にＦＦ部４２２に入力する。
【００５０】
１／２部４２３は、ＦＦ部４２２から絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜を順に読み出すと、それぞれを２で除算する。１／２部４２３は、絶対値｜Ｄ’２−α１２｜／２、｜Ｄ’３−α１３｜／２及び｜Ｄ’４−α１４｜／２を順にΦ１部４２４に入力する。
【００５１】
Φ１部４２４は、１／２部４２３から絶対値｜Ｄ’２−α１２｜／２、｜Ｄ’３−α１３｜／２及び｜Ｄ’４−α１４｜／２を順に受け付けると、Φ１テーブル（図５参照）を参照して、Φ１（｜Ｄ’２−α１２｜／２）、Φ１（｜Ｄ’３−α１３｜／２）及びΦ１（｜Ｄ’４−α１４｜／２）を順に算出する。Φ１部４２４は、Φ１（｜Ｄ’２−α１２｜／２）、Φ１（｜Ｄ’３−α１３｜／２）及びΦ１（｜Ｄ’４−α１４｜／２）を順に、ＦＦ部４２５に入力する。またΦ１部４２４は、Φ１（｜Ｄ’２−α１２｜／２）、Φ１（｜Ｄ’３−α１３｜／２）及びΦ１（｜Ｄ’４−α１４｜／２）を順に、ＦＦ部４２８に入力する。
【００５２】
ＦＦ部４２５、加算部４２６及びＦＦ部４２７は、下記式（６）により演算値Ｑを算出する。
【００５３】
【数６】
0006605839.tif 000007
【００５４】
上述の式（１）の検査行列Ｈの一行目の行処理の場合、式（６）により、Ｑ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’３−α１３｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）が算出される。
【００５５】
一方、ＦＦ部４２８及びＦＦ部４２９は、下記式（７）の演算値Ｒを保持する。
【００５６】
【数７】
0006605839.tif 000008
【００５７】
上述の式（１）の検査行列Ｈの一行目の行処理の場合、式（７）の演算値Ｒは、Φ１（｜Ｄ’２−α１２｜／２）、Φ１（｜Ｄ’３−α１３｜／２）及びΦ１（｜Ｄ’４−α１４｜／２）である。
【００５８】
Ｑ−Ｒ部４３０は、ＦＦ部４２７から演算値Ｑを読み出し、ＦＦ部４２９から演算値Ｒを読み出すと、Ｑ−Ｒを算出する。上述の式（１）の検査行列Ｈの一行目の行処理の場合、Ｑ−Ｒ＝Φ１（｜Ｄ’３−α１３｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）、Ｑ−Ｒ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）、及び、Ｑ−Ｒ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’３−α１３｜／２）が算出される。Ｑ−Ｒ部４３０は、Ｑ−Ｒ＝Φ１（｜Ｄ’３−α１３｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）、Ｑ−Ｒ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）、及び、Ｑ−Ｒ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’３−α１３｜／２）を順に１／２部４３１に入力する。
【００５９】
１／２部４３１は、Ｑ−Ｒ部４３０からＱ−Ｒ＝Φ１（｜Ｄ’３−α１３｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）、Ｑ−Ｒ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）、及び、Ｑ−Ｒ＝Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’３−α１３｜／２）を順に受け付けると、それぞれを２で除算する。１／２部４３１は、（Ｑ−Ｒ）／２＝｛Φ１（｜Ｄ’３−α１３｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）｝／２、（Ｑ−Ｒ）／２＝｛Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’４−α１４｜／２））／２、及び、（Ｑ−Ｒ）／２＝｛Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’３−α１３｜／２））｝／２を順にΦ２部４３２に入力する。
【００６０】
Φ２部４３２は、１／２部４３１から（Ｑ−Ｒ）／２＝｛Φ１（｜Ｄ’３−α１３｜／２）＋Φ１（｜Ｄ’４−α１４｜／２）｝／２、（Ｑ−Ｒ）／２＝｛Φ１（｜Ｄ’２−α１２｜／２＋Φ１（｜Ｄ’４−α１４｜／２））／２、及び、（Ｑ−Ｒ）／２＝｛Φ１（｜Ｄ’２−α１２｜／２）＋Φ１（｜Ｄ’３−α１３｜／２））｝／２を順に受け付けると、Φ２テーブル（図６参照）を参照して、上述の式（５）の絶対値｜α１２｜、｜α１３｜及び｜α１４｜を順に算出する。Φ２部４３２は、絶対値｜α１２｜、｜α１３｜及び｜α１４｜を順に、ＦＦ部４３３に入力する。なおＦＦ部４３３の絶対値｜α１２｜、｜α１３｜及び｜α１４｜は、後述の選択部４０４により読み出される。
【００６１】
図３に戻り、第２演算部４０３は、減算部４０１からＤ’ｎ−αｍｎを受け付けると、第１演算部４０２で使用される復号アルゴリズムよりも誤り訂正能力が低い復号アルゴリズムに基づく行処理により、αｍｎの絶対値｜αｍｎ｜を算出する。実施形態の説明では、第２演算部４０３で使用される復号アルゴリズムはＭＳＡ（Ｍｉｎ−Ｓｕｍ−Ａｌｇｏｒｉｔｈｍ）である。
【００６２】
次に第２演算部４０３の行処理について説明する。
【００６３】
図７は実施形態の第２演算部４０３の構成の例を示す図である。実施形態の第２演算部４０３は、ＡＢＳ部４４１、ＦＦ部４４２、比較部４４３、メモリ４４４、選択部４４５及びＦＦ部４４６を備える。
【００６４】
第２演算部４０３は下記式（８）の演算を行う。
【００６５】
【数８】
0006605839.tif 000009
【００６６】
ｍ、ｎ、Ａ（ｍ）、及びＡ（ｍ）＼ｎの説明は、上述の式（５）の場合と同じなので省略する。
【００６７】
第２演算部４０３の処理について、上述の式（１）の検査行列Ｈの１行目の行処理の場合を例にして具体的に説明する。ｍ＝１、Ａ（１）＝｛２，３，４｝なので、ＡＢＳ部４４１は、減算部４０１からＤ’２−α１２、Ｄ’３−α１３及びＤ’４−α１４を順に受け付ける。ＡＢＳ部４４１は、それぞれの絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜を順に算出し、当該絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜を順にＦＦ部４４２に入力する。
【００６８】
比較部４４３は、絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜のうち、最小値と２番目に小さい値とを選択部４４５に入力する。メモリ４４４は、比較部４４３の比較処理に使用される。メモリ４４４は、最小値及び２番目に小さい値を記憶する。具体的には、比較部４４３は、ＦＦ部４４２から絶対値｜Ｄ’２−α１２｜を受け付けると、当該絶対値｜Ｄ’２−α１２｜をメモリ４４４に記憶する。次に、比較部４４３は、ＦＦ部４４２から絶対値｜Ｄ’３−α１３｜を受け付けると、当該絶対値｜Ｄ’３−α１３｜をメモリ４４４に記憶する。次に、比較部４４３は、ＦＦ部４４２から絶対値｜Ｄ’４−α１４｜を受け付けると、当該絶対値｜Ｄ’４−α１４｜と、メモリ４４４に記憶されている絶対値｜Ｄ’２−α１２｜及び｜Ｄ’３−α１３｜と、を比較する。比較部４４３は、絶対値｜Ｄ’２−α１２｜、｜Ｄ’３−α１３｜及び｜Ｄ’４−α１４｜のうち、最小値と２番目に小さい値とを選択部４４５に入力する。
【００６９】
以下、実施形態の説明では、｜Ｄ’２−α１２｜＜｜Ｄ’３−α１３｜＜｜Ｄ’４−α１４｜とし、比較部４４３が、｜Ｄ’２−α１２｜及び｜Ｄ’３−α１３｜を選択部４４５に入力する場合について説明する。
【００７０】
選択部４４５は、比較部４４３から｜Ｄ’２−α１２｜及び｜Ｄ’３−α１３｜を受け付けると、上述の式（８）に基づいて｜Ｄ’２−α１２｜又は｜Ｄ’３−α１３｜を選択することにより、絶対値｜α１２｜、｜α１３｜及び｜α１４｜を順に、ＦＦ部４４６に入力する。具体的には、最小値が｜Ｄ’２−α１２｜であり、２番目に小さい値が｜Ｄ’３−α１３｜であるため、｜α１２｜＝｜Ｄ’３−α１３｜、｜α１３｜＝｜Ｄ’２−α１２｜、｜α１４｜＝｜Ｄ’２−α１２｜となる。なおＦＦ部４４６の絶対値｜α１２｜、｜α１３｜及び｜α１４｜は、後述の選択部４０４により読み出される。
【００７１】
図３に戻り、選択部４０４は、第１演算部４０２から受け付けた｜αｍｎ｜、及び、第２演算部４０３から受け付けた｜αｍｎ｜のうち、演算誤差の少ない方の｜αｍｎ｜を判定条件に基づいて選択し、当該｜αｍｎ｜を乗算部４０６に入力する。
【００７２】
ここで第１演算部４０２の演算誤差について説明する。第１演算部４０２の演算では、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）の演算が、Φ１テーブル（図５参照）及びΦ２テーブル（図６参照）を利用して行われている。
【００７３】
図８はＧａｌｌａｇｅｒの関数ｆ（ｘ）を示す図である。なお横軸のｘは、Φ１テーブル及びΦ２テーブルの入力値ｘの浮動小数点形式で表されている。図８に示されるように、ｘ→０のとき、ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））→∞となる。しかしながらΦ１テーブル及びΦ２テーブルでは、ｘ＝０の場合に、浮動小数点形式で表した場合の出力値ｆ（ｘ）が約５．５になるように上限値が設定されているので、ｘが０に近づくほど、出力値ｆ（ｘ）の演算誤差が大きくなる。
【００７４】
Ｄ’ｎは、各行の行処理が行われるたびに更新されているが、行処理による誤り訂正が正常に行われている場合、Ｄ’ｎの信頼度は上昇し、Ｄ’ｎの絶対値が上昇する。反復復号が１回（つまり、全行の行処理）実施されると、Ｄ’ｎはｎ番目の列の列重みの数だけ、更新される。従って、行処理の反復復号回数が増加すると、Ｄ’ｎの絶対値は、非常に大きくなる。従って、Φ１テーブルの入力値ｘ（＝｜Ｄ’ｎ−αｍｎ｜）は大きく、Φ２テーブルの入力値ｘは小さくなる傾向になり、Φ２（ｘ）の誤差が大きくなる。よって、第１演算部４０２により行われるＳＰＡに基づく行処理は、誤り訂正能力が大きいが、反復復号回数が増加すると出力値Φ２（ｘ）の誤差が大きくなる。
【００７５】
例えば検査行列Ｈの行重みが３であり、Φ１テーブルの入力値ｘが１３、１０、９の場合、Φ２テーブルの出力値Φ２（ｘ）＝｜α｜は全て上限値５．５（浮動小数点形式）となる。それに対し、実際にＧａｌｌａｇｅｒの関数を用いた場合の出力値｜α｜はそれぞれ約８．６８、８．９８、９．９５（浮動小数点形式）となる。よって、このような場合に、復号装置４０がΦ１テーブル及びΦ２テーブルを利用したＳＰＡに基づく行処理を行うと、実際にＧａｌｌａｇｅｒの関数を用いた場合に対する演算誤差が発生する。よって、復号に失敗する確率が上がる。
【００７６】
一方、第２演算部４０３の行処理では、入力値ｘが１３、１０、９の場合、上述の式（８）により、｜α｜は９，９，１０となる。したがって第１演算部４０２の行処理よりも第２演算部４０３の行処理の方が、実際にＧａｌｌａｇｅｒの関数を用いた場合に対する演算誤差が小さい。
【００７７】
つまり、Φ１テーブル及びΦ２テーブルを利用したＳＰＡに基づく行処理を行うと、演算誤差が発生する必要条件は、Φ１テーブルの入力値ｘの全てが、Φ２テーブルの出力最大値５．５（浮動小数点方式）よりも大きくなることであると言える。
【００７８】
選択部４０４は、判定条件に基づいて、第１演算部４０２から受け付けた｜αｍｎ｜、又は、第２演算部４０３から受け付けた｜αｍｎ｜を選択し、当該｜αｍｎ｜を乗算部４０６に入力する。ここで判定条件の例について説明する。
【００７９】
＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合１＞
Φ２テーブルの出力値Φ２（ｘ）は入力値ｘが０に近づくとき増加するが、入力値ｘが０に近づくほど出力値Φ２（ｘ）の演算誤差が大きくなる。選択部４０４は、第１演算部４０２に入力された複数のＤ’ｎ−αｍｎの絶対値｜Ｄ’ｎ−αｍｎ｜のうち、最小値の｜Ｄ’ｎ−αｍｎ｜が閾値（第１閾値）以上の場合、第２演算部４０３から受け付けた｜αｍｎ｜を選択し、第１演算部４０２に入力された最小値の｜Ｄ’ｎ−αｍｎ｜が閾値未満の場合、第１演算部４０２から受け付けた｜αｍｎ｜を選択してもよい。
【００８０】
これにより第１演算部４０２の演算誤差が小さい場合には、第１演算部４０２による行処理の出力値｜αｍｎ｜を利用し、第１演算部４０２の演算誤差が大きい場合には、第２演算部４０３による行処理の出力値｜αｍｎ｜を利用することができる。
【００８１】
上述の＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合１＞は、後述の実施形態の変形例で説明するシミュレーション結果のＦｉｒｓｔＭｉｎ（図１３Ａ乃至図１４Ｃ参照）に対応する。
【００８２】
＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合２＞
第１演算部４０２に入力される入力値Ｄ’ｎ−αｍｎは、その絶対値｜Ｄ’ｎ−αｍｎ｜が小さいほど信頼性が低い。すなわち絶対値｜Ｄ’ｎ−αｍｎ｜が最小になるＤ’ｎ−αｍｎは最も信頼性が低い。最小の絶対値｜Ｄ’ｎ−αｍｎ｜の行処理では、２番目に信頼性の低い｜Ｄ’ｎ−αｍｎ｜から、１番信頼性の高い｜Ｄ’ｎ−αｍｎ｜が使用される。そのため２番目に信頼性の低い｜Ｄ’ｎ−αｍｎ｜が閾値（第２閾値）以上の場合、最も信頼性の低い｜Ｄ’ｎ−αｍｎ｜の行処理の演算誤差が大きくなる。
【００８３】
選択部４０４は、第１演算部４０２に入力された複数のＤ’ｎ−αｍｎのうち、２番目に絶対値が小さいＤ’ｎ−αｍｎが閾値（第２閾値）以上の場合、第２演算部４０３から受け付けた｜αｍｎ｜を選択し、第１演算部４０２に入力された複数のＤ’ｎ−αｍｎのうち、２番目に絶対値が小さいＤ’ｎ−αｍｎが閾値以上でない場合、第１演算部４０２から受け付けた｜αｍｎ｜を選択してもよい。
【００８４】
これにより第１演算部４０２に入力された複数のＤ’ｎ−αｍｎのうち、絶対値が最小のＤ’ｎ−αｍｎの出力値｜αｍｎ｜の閾値を判定する場合よりも、１番信頼性の低いＤ’ｎ−αｍｎの行処理の演算誤差を抑えることができる。したがって高い誤り訂正効果が期待できる。
【００８５】
上述の＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合２＞は、後述の実施形態の変形例で説明するシミュレーション結果のＳｅｃｏｎｄＭｉｎ（図１３Ａ乃至図１４Ｃ参照）に対応する。
【００８６】
なお複数の｜Ｄ’ｎ−αｍｎ｜の最小値及び２番目に小さい値は、第２演算部４０３による行処理により得られる。したがって選択部４０４は、閾値判定を行うときに、第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜の替わりに、第２演算部４０３による行処理の結果を利用しても良い。
【００８７】
＜行処理の反復復号回数を参照する場合＞
行処理の反復復号回数が増加すると、Φ２テーブルの入力値ｘが小さくなり、出力値Φ２（ｘ）が大きくなる傾向がある。選択部４０４は、第１演算部４０２の行処理演算の反復復号回数を閾値（第３閾値）判定してもよい。すなわち選択部４０４は、反復復号回数が閾値以下の場合、第１演算部４０２から受け付けた｜αｍｎ｜を選択し、反復復号回数が閾値より大きい場合、第２演算部４０３から受け付けた｜αｍｎ｜を選択してもよい。これにより第１演算部４０２の演算誤差が小さい場合には、第１演算部４０２による行処理の出力値を利用し、第１演算部４０２の演算誤差が大きい場合には、第２演算部４０３による行処理の出力値を利用することができる。
【００８８】
なお選択部４０４による上述の判定に使用される閾値は、実施環境に応じて任意に定めてよい。ただし、Φ１テーブル及びΦ２テーブルを利用したＳＰＡに基づく行処理の演算誤差が発生する必要条件は、第１演算部４０２、第２演算部４０３への入力値｜Ｄ’ｎ−αｍｎ｜が全て、Φ２テーブルの出力値の最大値５．５（浮動小数点方式）よりも大きくなることなので、第１閾値と第２閾値は、Φ２テーブルの出力値の最大値Ｔよりも大きくなければならない。
【００８９】
上述の＜行処理の反復復号回数を参照する場合＞は、後述の実施形態の変形例で説明するシミュレーション結果のＣｎｔ（図１３Ａ乃至図１４Ｃ参照）に対応する。
【００９０】
また選択部４０４は、第１演算部４０２、第２演算部４０３への入力値の絶対値の閾値判定、及び、第１演算部４０２による行処理の反復復号回数の閾値判定を組み合わせてもよい。
【００９１】
例えば選択部４０４は、第１演算部４０２による反復復号回数が閾値より大きい場合に、第１演算部４０２に入力される複数の入力値の絶対値のうち、最小値又は２番目に小さい値の閾値判定を行うようにしてもよい。すなわち選択部４０４は、第１演算部４０２による反復復号回数が閾値以下の場合、第１演算部４０２による行処理の出力値を選択する。そして選択部４０４は、第１演算部４０２による反復復号回数が閾値より大きくなった場合、第１演算部４０２に入力される複数の入力値の絶対値のうち、最小値又は２番目に小さい値に応じて、第１演算部４０２による行処理の出力値、又は、第２演算部４０３による行処理の出力値を選択するようにしてもよい。
【００９２】
上述の＜第１演算部４０２、第２演算部４０３への入力値｜αｍｎ｜を参照する場合２＞と、上述の＜行処理の反復復号回数を参照する場合＞と、を組み合わせた場合は、後述の実施形態の変形例で説明するシミュレーション結果のＳｅｃｏｎｄＭｉｎ＆Ｃｎｔ（図１３Ａ乃至図１３Ｃ参照）に対応する。
【００９３】
一方、符号値演算部４０５は、行処理メモリ４５から行処理演算の確率値αｍｎを読み出すと、下記式（９）により、ｓｉｇｎ（αｍｎ）を算出する。
【００９４】
【数９】
0006605839.tif 000010
【００９５】
ｍ、ｎ、Ａ（ｍ）、及びＡ（ｍ）＼ｎの説明は、上述の式（５）の場合と同じなので省略する。ｓｉｇｎ（αｍｎ）はαｍｎの符号値（１又は−１）を示す。符号値演算部４０５は、ｓｉｇｎ（αｍｎ）を乗算部４０６に入力する。
【００９６】
乗算部４０６は、選択部４０４から｜αｍｎ｜を受け付け、符号値演算部４０５からｓｉｇｎ（αｍｎ）を受け付けると、αｍｎ（ｏｕｔ）＝ｓｉｇｎ（αｍｎ）×｜αｍｎ｜によりαｍｎ（ｏｕｔ）を算出する。乗算部４０６は当該αｍｎ（ｏｕｔ）を行処理メモリ４５に記憶する。また乗算部４０６は当該αｍｎ（ｏｕｔ）を加算部４０７に入力する。
【００９７】
加算部４０７は、減算部４０１からＤ’ｎ−αｍｎを受け付け、乗算部４０６からαｍｎ（ｏｕｔ）を受け付けると、Ｄ’ｎ（ｏｕｔ）＝Ｄ’ｎ−αｍｎ＋αｍｎ（ｏｕｔ）によりＤ’ｎ（ｏｕｔ）を算出する。そして加算部４０７は当該Ｄ’ｎ（ｏｕｔ）を復号データメモリ４２に記憶する。
【００９８】
次に実施形態の復号方法について説明する。実施形態の説明では、受信データＲのデータ長が６である場合を例にして説明する。また受信データＲをＲ＝（Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５，Ｒ６）と表す。
【００９９】
図９は実施形態の復号装置の動作例を示すフローチャートである。はじめに、受信部４１が、符号化装置２０から通信路３０を介してアナログの受信データＲ＝（Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５，Ｒ６）を受信する（ステップＳ１）。次に、受信部４１は、アナログの受信データＲ＝（Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５，Ｒ６）から、アナログの復号データＤ’＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）の初期値を計算し、復号データメモリ４２に記憶する（ステップＳ２）。
【０１００】
次に、行処理演算部４３が、復号データメモリ４２からアナログの復号データＤ’ｎ（ｎは行処理対象の行に含まれる１を示す成分の列番号）を読み出す（ステップＳ３）。次に、行処理演算部４３は、検査行列Ｈの行毎に行処理を行うことにより、アナログの受信データＲの誤りを訂正する（ステップＳ４）。なおステップＳ４の詳細な説明は、図１０を参照して後述する。ステップＳ４の処理により、復号データメモリ４２に記憶されたアナログの復号データＤ’ｎ、及び、行処理メモリ４５に記憶された行処理演算の確率値αｍｎが更新される。
【０１０１】
次に、二値化部４６が、アナログの復号データＤ’＝（Ｄ’１，Ｄ’２，Ｄ’３，Ｄ’４，Ｄ’５，Ｄ’６）を、閾値判定によってバイナリの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）に変換する（ステップＳ５）。
【０１０２】
次に、検査部４７が、バイナリの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）のパリティ検査がＯＫであるか否かを判定する（ステップＳ６）。具体的には、検査部４７は、Ｓ＝Ｄ×ＨＴ＝（Ｓ１，Ｓ２，Ｓ３）により算出されたシンドロームＳ＝（０，０，０）である場合、パリティ検査がＯＫであると判定する。
【０１０３】
パリティ検査がＯＫである場合（ステップＳ６、Ｙｅｓ）、検査部４７は、デジタルの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）を出力する（ステップＳ１０）。
【０１０４】
パリティ検査がＮＧである場合（ステップＳ６、Ｎｏ）、検査部４７は、第１演算部による行処理の反復復号回数が閾値（第４閾値）以上であるか否かを判定する（ステップＳ７）。
【０１０５】
反復復号回数が閾値未満の場合（ステップＳ７、Ｙｅｓ）、検査部４７が、反復復号回数をインクリメントし（ステップＳ８）、復号処理はステップＳ４に戻る。
【０１０６】
反復復号回数が閾値以上の場合（ステップＳ７、Ｎｏ）、検査部４７は、アナログの受信データＲ＝（Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５，Ｒ６）からデジタルの復号データＤ＝（Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６）が得られないことを示すエラーを出力する（ステップＳ９）。
【０１０７】
次に、ステップＳ４の検査行列Ｈに基づく行処理の詳細について説明する。
【０１０８】
図１０は実施形態の行処理演算部４３の動作例を示すフローチャートである。はじめに、減算部４０１が、復号データメモリ４２からアナログの復号データＤ’ｎを読み出し、行処理メモリ４５から行処理演算の確率値αｍｎを読み出して、Ｄ’ｎ−αｍｎを算出する（ステップＳ２１）。
【０１０９】
次に、第１演算部４０２が、第２演算部４０３で使用される復号アルゴリズムよりも誤り訂正能力が高い復号アルゴリズムに基づく行処理を行う（ステップＳ２２−１）。実施形態の説明では、第１演算部４０２で使用される復号アルゴリズムは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、入力値ｘと出力値ｆ（ｘ）との組を記憶するテーブルを利用した演算に置き換えたＳＰＡである。
【０１１０】
また、第２演算部４０３が、第１演算部４０２で使用される復号アルゴリズムよりも誤り訂正能力が低い復号アルゴリズムに基づく行処理を行う（ステップＳ２２−２）。実施形態の説明では、第２演算部４０３で使用される復号アルゴリズムはＭＳＡである。
【０１１１】
次に、選択部４０４が、ステップＳ２２−１による行処理の出力値｜αｍｎ｜、又は、ステップＳ２２−２による行処理の出力値｜αｍｎ｜のうち、いずれか一方の行処理の出力値｜αｍｎ｜を、上述の判定条件に基づいて選択する（ステップＳ２３）。
【０１１２】
次に、符号値演算部４０５が、上述の式（９）により、符号値ｓｉｇｎ（αｍｎ）を算出する（ステップＳ２４）。次に、乗算部４０６が、αｍｎ（ｏｕｔ）＝ｓｉｇｎ（αｍｎ）×｜αｍｎ｜によりαｍｎ（ｏｕｔ）を算出する（ステップＳ２５）。次に、乗算部４０６は当該αｍｎ（ｏｕｔ）を行処理メモリ４５に記憶する（ステップＳ２６）。
【０１１３】
次に、加算部４０７が、Ｄ’ｎ（ｏｕｔ）＝Ｄ’ｎ−αｍｎ＋αｍｎ（ｏｕｔ）によりＤ’ｎ（ｏｕｔ）を算出する（ステップＳ２７）。次に、加算部４０７は当該Ｄ’ｎ（ｏｕｔ）を復号データメモリ４２に記憶する（ステップＳ２８）。
【０１１４】
以上説明したように、実施形態の復号装置４０では、第１演算部４０２が、第１の復号アルゴリズム（実施形態の説明では、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）を、テーブルを利用した演算により実現するＳＰＡ）に基づく行処理を行う。また第２演算部４０３が、第１の復号アルゴリズムよりも誤り訂正能力の低い第２の復号アルゴリズム（実施形態の説明ではＭＳＡ）に基づく行処理を行う。そして選択部４０４は、第１演算部４０２による行処理の出力値の誤差が、第２演算部４０３による行処理の出力値の誤差よりも大きい場合、第２演算部４０３による行処理の出力値を選択する。これにより実施形態の復号装置４０によれば、復号装置４０のリソースに制限がある場合でも、ＬＤＰＣ符号の復号処理をより高い精度で行うことができる。
【０１１５】
なお上述の第２演算部４０３の第２の復号アルゴリズムは、Ｏｆｆｓｅｔ−ＭｉｎＳｕｍ−Ａｌｇｏｒｉｔｈｍ、及び、Ａｄａｐｔｉｖｅ−Ｏｆｆｓｅｔ−ＭｉｎＳｕｍ−Ａｌｇｏｒｉｔｈｍ等でもよい。
【０１１６】
（実施形態の変形例）
次に実施形態の変形例について説明する。実施形態の変形例では、通信システム１０の構成が上述の実施形態と異なる。実施形態の変形例の説明では、上述の実施形態と異なる箇所について説明し、上述の実施形態と同様の説明については省略する。また実施形態の変形例の説明では、実施形態の変形例の通信システム１０で、復号装置４０が行処理を行った場合のシミュレーションの結果についても説明する。
【０１１７】
図１１は実施形態の変形例の通信システム１０の構成の例を示す図である。実施形態の通信システム１０は、復号装置４０、参照シンドローム演算装置５０及び送信装置６０を備える。復号装置４０及び参照シンドローム演算装置５０は、第１通信路３０ａを介して接続されている。第１通信路３０ａは、参照シンドロームの伝送に使用される媒体である。参照シンドロームは参照シンドローム演算装置５０により生成される。具体的には、参照シンドローム演算装置５０は、送信データに検査行列Ｈの転置行列を掛けることにより、参照シンドロームを生成する。参照シンドローム演算装置５０は参照シンドロームを、第１通信路３０ａを介して復号装置４０に送信する。
【０１１８】
また復号装置４０及び送信装置６０は、第２通信路３０ｂを介して接続されている。第２通信路３０ｂは、送信データの伝送に使用される媒体である。送信装置６０は送信データを、第２通信路３０ｂを介して復号装置４０に送信する。
【０１１９】
復号装置４０は、参照シンドローム演算装置５０から第１通信路３０ａを介して参照シンドロームを受信し、送信装置６０から第２通信路３０ｂを介して受信データを受信すると、参照シンドロームに基づいて受信データの誤りを訂正することにより、復号データ（送信データ）を生成する。具体的には、復号装置４０は、受信データに検査行列Ｈの転置行列を掛けることにより生成されたシンドロームが、参照シンドロームに一致するまで、受信データを行処理することにより、復号データを生成する。
【０１２０】
なお第１通信路３０ａ及び第２通信路３０ｂは、無線方式でも有線方式でもよく、また無線方式及び有線方式が組み合わされていてもよい。また第１通信路３０ａ及び第２通信路３０ｂを同一の通信路３０にしてもよい。ただし復号装置４０が、シンドロームを誤りがない状態で受信できるようにする必要がある。
【０１２１】
次に実施形態の変形例の通信システム１０で、復号装置４０が行処理を行った場合のシミュレーション結果について説明する。
【０１２２】
まず第２通信路３０ｂの通信路モデルについて説明する。通信路モデルには、例えば加法性白色ガウス雑音モデル（ＡＷＧＮ：Ａｄｄｉｔｉｖｅ  Ｗｈｉｔｅ  Ｇａｕｓｓｉａｎ  Ｎｏｉｓｅ）、及び、二元対象通信路（ＢＳＣ：Ｂｉｎａｒｙ  Ｓｙｍｍｅｔｒｉｃ  Ｃｈａｎｎｅｌ）等がある。通信路モデルがＢＳＣの場合、復号装置４０のアナログの復号データＤ’ｎの初期値ａは、ｂＥＲに基づいて決定される。具体的には、受信データＲｎが０の場合、ａ＝ｌｏｇ｛（１−ｂＥＲ）／ｂＥＲ｝となり、受信データＲｎが１の場合、ａ＝−ｌｏｇ｛（１−ｂＥＲ）／ｂＥＲ｝となる。ここでｂＥＲは、ＢＳＣの誤り率である。実施形態の変形例のシミュレーション結果の説明では、第２通信路３０ｂの通信路モデルはＢＳＣとする。
【０１２３】
図１２Ａは実施形態の変形例の検査行列Ｈの例１を示す図である。図１２Ａは、検査行列Ｈの行重みが１９〜２３であり、列重みが３又は１１である場合を示す。検査行列の行サイズは１９７１２ビット、列サイズは７５３９２ビットである。すなわち例１の検査行列Ｈは、１９７１２行、７５３９２列の行列である。割合は、検査行列Ｈの行数（列数）に対する当該行重み（列重み）を有する行の数（列の数）の割合を示す。例えば行重みが２１である行の割合は、検査行列Ｈの行数の２９．８７０１％である。
【０１２４】
図１２Ｂは実施形態の変形例の検査行列の例２を示す図である。検査行列の行サイズは２４５７６ビットで、列サイズは８６０１６ビットである。すなわち例２の検査行列Ｈは、２４５７６行、８６０１６列の行列である。図１２Ｃは実施形態の変形例の検査行列の例３を示す図である。検査行列の行サイズは３１４８８ビット、列サイズは８４６０８ビットである。すなわち例３の検査行列Ｈは、３１４８８行、８４６０８列の行列である。図１２Ｂ及び図１２Ｃの説明は、図１２Ａと同様なので省略する。
【０１２５】
次に図１３Ａ乃至図１４Ｃを参照して、図１２Ａ乃至図１２Ｃの検査行列Ｈを使用した場合のシミュレーション結果について説明する。
【０１２６】
図１３Ａは例１の検査行列を使用した場合のシミュレーション結果の値を示す図である。図１３Ｂは例２の検査行列を使用した場合のシミュレーション結果の値を示す図である。図１３Ｃは例３の検査行列を使用した場合のシミュレーション結果の値を示す図である。ｂＥＲは、第２通信路３０ｂの誤り率を示す。Ｄｅｃｏｄｉｎｇ  Ｆａｉｌｕｒｅ  Ｒａｔｅは、受信データＲから復号データＤを得られない場合の確率を示す。
【０１２７】
また図１４Ａは例１の検査行列を使用した場合のシミュレーション結果のグラフを示す図である。図１４Ｂは例２の検査行列を使用した場合のシミュレーション結果のグラフを示す図である。図１４Ｃは例３の検査行列を使用した場合のシミュレーション結果のグラフを示す図である。横軸はｂＥＲである。縦軸はＤｅｃｏｄｉｎｇ  Ｆａｉｌｕｒｅ  Ｒａｔｅである。
【０１２８】
ＳＰＡ（Ｆｌｏ）は、ＳＰＡを浮動小数点形式の演算で行う復号方法を示す。すなわちＳＰＡ（Ｆｌｏ）は、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、上述のΦ１テーブル及びΦ２テーブルを利用した演算に置き換えない場合のＳＰＡを示す。
【０１２９】
Ｄｅｌｔａ−ＭＳＡ（Ｆｌｏ）は、δ−ＭＳＡ（非特許文献３参照）を浮動小数点形式の演算で行う復号方法を示す。
【０１３０】
Ｔａｂｌｅ−ＳＰＡは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算を、上述のΦ１テーブル及びΦ２テーブルを利用した固定小数点形式の演算で行うＳＰＡによる復号方法を示す。すなわちＴａｂｌｅ−ＳＰＡは、上述の第１演算部４０２による行処理に対応する。
【０１３１】
ＳｅｃｏｎｄＭｉｎは、上述の実施形態で説明した＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合２＞の復号方法を示す。
【０１３２】
ＦｉｒｓｔＭｉｎは、上述の実施形態で説明した＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合１＞の復号方法を示す。
【０１３３】
ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔは、上述の実施形態で説明した＜第１演算部４０２、第２演算部４０３への入力値の絶対値｜Ｄ’ｎ−αｍｎ｜を参照する場合２＞と、上述の実施形態で説明した＜行処理の反復復号回数を参照する場合＞と、を組み合わせた復号方法を示す。
【０１３４】
Ｃｎｔは、上述の実施形態で説明した＜行処理の反復復号回数を参照する場合＞の復号方法を示す。
【０１３５】
上述の復号方法のうち、ＳｅｃｏｎｄＭｉｎ、ＦｉｒｓｔＭｉｎ、ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔ、及び、Ｃｎｔが、実施形態の変形例の復号装置４０の復号方法である。
【０１３６】
次にシミュレーションの条件について説明する。
【０１３７】
シミュレーションでは、固定小数点形式の演算で復号した場合、復号データＤの１データ辺りのビット幅は、整数６ビット及び小数３ビットを含む９ビットである。行処理の確率値αｍｎのビット幅は、整数４ビット及び小数３ビットを含む７ビットである。Ｔａｂｌｅ−ＳＰＡ、ＳｅｃｏｎｄＭｉｎ、ＦｉｒｓｔＭｉｎ、ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔ、及び、Ｃｎｔが、固定小数点形式の演算で復号を実施している。
【０１３８】
Φ１テーブル及びΦ２テーブルの構成は、上述の実施形態で説明した図５及び図６と同じである。ＦｉｒｓｔＭｉｎの閾値（第１閾値）、及び、ＳｅｃｏｎｄＭｉｎの閾値（第２閾値）は、Φ２テーブルの出力値の最大値５．５（浮動小数点形式）を小数点で四捨五入した６である。Ｃｎｔの反復復号回数による閾値（第３閾値）は３０である。ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔの閾値は、反復復号回数が１０回以上（第３閾値）で、かつ、第１演算部４０２に入力された複数の入力値の絶対値のうち、絶対値が２番目に小さい値が６以上（第２閾値）である。実際に復号する場合、上記閾値を、行処理の確率値αｍｎのビット幅と同じビット幅の固定小数点形式に変換して、判定に利用する。
【０１３９】
次にシミュレーションの結果について説明する。
【０１４０】
ＳＰＡ（Ｆｌｏ）は、全ての検査行列Ｈのシミュレーション結果において、最も性能が高い。しかしながらＳＰＡ（Ｆｌｏ）を、例えばハードウェアにより実現する場合、他の復号方法よりも回路規模が増大する可能性がある。
【０１４１】
Ｄｅｌｔａ−ＭＳＡ（Ｆｌｏ）は、図１２Ａに示す検査行列Ｈを使用したシミュレーション結果（図１３Ａ及び図１４Ａ参照）では、最も性能が低い。また図１２Ｂに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｂ及び図１４Ｂ参照）では、Ｄｅｌｔａ−ＭＳＡ（Ｆｌｏ）は、他の復号方法と比べて性能は低めである。しかしながらｂＥＲが０．０３９から０．０４付近の値の場合、Ｄｅｌｔａ−ＭＳＡ（Ｆｌｏ）は、Ｔａｂｌｅ−ＳＰＡ及びＦｉｒｓｔＭｉｎよりも性能がよい。また図１２Ｃに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｃ及び図１４Ｃ参照）でも、Ｄｅｌｔａ−ＭＳＡ（Ｆｌｏ）は、他の復号方法と比べて性能は低めである。しかしながらｂＥＲが０．０５８から０．０５８５付近の値の場合、Ｄｅｌｔａ−ＭＳＡ（Ｆｌｏ）は、Ｔａｂｌｅ−ＳＰＡ及びＦｉｒｓｔＭｉｎよりも性能がよい。
【０１４２】
Ｔａｂｌｅ−ＳＰＡは、図１２Ａに示す検査行列Ｈを使用したシミュレーション結果（図１３Ａ及び図１４Ａ参照）では、Ｃｎｔと同等の性能を有する。また図１２Ｂに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｂ及び図１４Ｂ参照）では、Ｔａｂｌｅ−ＳＰＡは、ＦｉｒｓｔＭｉｎと同等の性能を有する。この場合、Ｔａｂｌｅ−ＳＰＡは、ｂＥＲが０．０４０５付近よりも小さい値で性能が劣化している。また図１２Ｃに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｃ及び図１４Ｃ参照）でも、Ｔａｂｌｅ−ＳＰＡは、ｂＥＲが０．０５９付近よりも小さい値で性能が劣化している。
【０１４３】
ここで図１２Ｂ及び図１２Ｃの検査行列Ｈを使用した場合のＴａｂｌｅ−ＳＰＡの性能劣化の原因について説明する。図１２Ａ、図１２Ｂ及び図１２Ｃの検査行列Ｈの行重みの最小値は、それぞれ１９、１３、１１である。
【０１４４】
一般に、行処理による誤り訂正が正常に動作している場合、行処理演算の出力値αｍｎ（ｏｕｔ）の絶対値は、上昇する傾向にあるが、行重みが小さいほど上昇幅が大きい。例えば行重みが８であり、ＳＰＡによる演算装置に入力される複数のＤ’ｎ−αｍｎの絶対値が全て５である場合、｜αｍｎ（ｏｕｔ）｜は約２．９２となる。一方、行重みが４であり、ＳＰＡによる演算装置に入力される複数のＤ’ｎ−αｍｎの絶対値が全て５である場合、｜αｍｎ（ｏｕｔ）｜は約３．６１となる。Ｔａｂｌｅ−ＳＰＡも、ＳＰＡと同じく、行重みが小さいほど上昇幅が大きい。
【０１４５】
よって、行処理演算が終了した後に、行処理演算部４３がＤ’ｎを更新する時、Ｄ’ｎ（ｏｕｔ）はＤ’ｎ−αｍｎ＋αｍｎ（ｏｕｔ）により計算されるため、行重みが小さいほど、Ｄ’ｎの絶対値の上昇幅が大きくなる。反復復号が１回（つまり、全ての行に対する行処理）実施されると、Ｄ’ｎはｎ番目の列の列重みの数だけ、更新される。αｍｎのビット幅に基づく最大値をαｍｎ（ｍａｘ）とすると、受信データＲｎの誤り訂正がうまくいっている場合、Ｄ’ｎは、列重み×αｍｎ（ｍａｘ）に近づく。よって、Ｔａｂｌｅ−ＳＰＡによる演算装置に入力される絶対値｜Ｄ’ｎ−αｍｎ｜が増加し、Ｔａｂｌｅ−ＳＰＡは演算誤差が発生する可能性が高くなる。
【０１４６】
したがって図１２Ａの検査行列Ｈよりも行重みの最小値がより小さい図１２Ｂ及び図１２Ｃの検査行列の場合、Ｔａｂｌｅ−ＳＰＡは性能の劣化が発生する。特に行重みの最小値が最も小さい図１２Ｃの検査行列Ｈを使用した場合、Ｔａｂｌｅ−ＳＰＡの復号に失敗する確率（Ｄｅｃｏｄｉｎｇ  Ｆａｉｌｕｒｅ  Ｒａｔｅ）がより大きいことがわかる。
【０１４７】
ＳｅｃｏｎｄＭｉｎは、図１２Ａに示す検査行列Ｈを使用したシミュレーション結果（図１３Ａ及び図１４Ａ参照）では、ＳＰＡ（Ｆｌｏ）、ＦｉｒｓｔＭｉｎ、及び、ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔと同等の性能を有する。また図１２Ｂに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｂ及び図１４Ｂ参照）では、ＳｅｃｏｎｄＭｉｎは、ＳＰＡ（Ｆｌｏ）、及び、ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔと同等の性能を有する。また図１２Ｃに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｃ及び図１４Ｃ参照）では、ＳｅｃｏｎｄＭｉｎは２番目に性能が高い。
【０１４８】
ＦｉｒｓｔＭｉｎは、図１２Ａに示す検査行列Ｈを使用したシミュレーション結果（図１３Ａ及び図１４Ａ参照）では、ＳＰＡ（Ｆｌｏ）、ＳｅｃｏｎｄＭｉｎ、及び、ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔと同等の性能を有する。また図１２Ｂに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｂ及び図１４Ｂ参照）では、ＦｉｒｓｔＭｉｎは、Ｔａｂｌｅ−ＳＰＡと同等の性能を有する。また図１２Ｃに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｃ及び図１４Ｃ参照）では、ＦｉｒｓｔＭｉｎは、他の復号方法に比べて性能は低めである。
【０１４９】
Ｆｉｒｓｔ−ＭｉｎとＳｅｃｏｎｄ−Ｍｉｎとを比べると、Ｓｅｃｏｎｄ−Ｍｉｎの方が性能がよい。これは、Ｆｉｒｓｔ−Ｍｉｎでは、信頼性が最も低いデータを訂正する際の演算誤差がＳｅｃｏｎｄ−Ｍｉｎの場合よりも大きいことが原因である。
【０１５０】
ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔは、全ての検査行列Ｈのシミュレーション結果において、ＳＰＡ（Ｆｌｏ）と同等の性能を有する。すなわちＳｅｃｏｎｄＭｉｎ＆Ｃｎｔは、全ての検査行列Ｈのシミュレーション結果において、最も性能が高い。ＳｅｃｏｎｄＭｉｎ＆Ｃｎｔは、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算が、上述のΦ１テーブル及びΦ２テーブルを利用した演算に置き換えられている。そのためＳｅｃｏｎｄＭｉｎ＆Ｃｎｔをハードウェアにより実現する場合、ＳＰＡ（Ｆｌｏ）をハードウェアにより実現する場合よりも回路規模を抑えることができる。またＳｅｃｏｎｄＭｉｎ＆Ｃｎｔをソフトウェアにより実現する場合であっても、上述のΦ１テーブル及びΦ２テーブルを利用することにより、Ｇａｌｌａｇｅｒの関数ｆ（ｘ）＝−ｌｏｇ（ｔａｎｈ（ｘ／２））の演算をテーブルで実現する場合のテーブルサイズを抑えることができる。
【０１５１】
Ｃｎｔは、図１２Ａに示す検査行列Ｈを使用したシミュレーション結果（図１３Ａ及び図１４Ａ参照）では、Ｔａｂｌｅ−ＳＰＡと同等の性能を有する。また図１２Ｂに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｂ及び図１４Ｂ参照）では、Ｃｎｔは、他の復号方法に比べて標準的な性能を有する。また図１２Ｃに示す検査行列Ｈを使用したシミュレーション結果（図１３Ｃ及び図１４Ｃ参照）でも、Ｃｎｔは、他の復号方法に比べて標準的な性能を有する。
【０１５２】
なお実施形態の変形例では、第２通信路３０ｂの通信路モデルをＢＳＣとして説明したが、第２通信路３０ｂがＡＷＧＮの場合でも同様である。
【０１５３】
また、第２演算部４０３のアルゴリズムとしてＭＳＡを利用したが、行処理演算の出力結果が、行処理演算部４３への入力値Ｄ’ｎ及びαｍｎから算出される｜Ｄ’ｎ−αｍｎ｜の最小値と２番目に小さい値から求められるアルゴリズムであれば、何でもよい。例えば、非特許文献４のＯｆｆｓｅｔ−ＭｉｎＳｕｍ−Ａｌｇｏｒｉｔｈｍ（Ｏ−ＭＳＡ）や非特許文献５のＡｄａｐｔｉｖｅ−Ｏｆｆｓｅｔ−Ｍｉｎｓｕｍ−Ａｌｇｏｒｉｔｈｍ（ＡＯ−ＭＳＡ）、非特許文献６のＮｏｒｍａｌｉｚｅｄ−ＭｉｎＳｕｍ−Ａｌｇｏｒｉｔｈｍ（Ｎ−ＭＳＡ）が挙げられる。非特許文献にある復号計算式を見ると、Ｏ−ＭＳＡやＡＯ−ＭＳＡは、ＭＳＡの｜αｍｎ｜の更新結果から、一定量のオフセット値を引いた値となっている。また、Ｎ−ＭＳＡは、ＭＳＡの更新結果を一定量の割合で変化させている。
【０１５４】
よって、Ｔａｂｌｅ−ＳＰＡの演算誤差が発生する｜Ｄ’ｎ−αｍｎ｜が入力された場合でも、Ｔａｂｌｅ−ＳＰＡに比べて、演算誤差が抑えることができるため、第２演算部４０３のアルゴリズムとして、Ｏ−ＭＳＡ、ＡＯ−ＭＳＡ又はＮ−ＭＳＡ等を利用しても良い。
【０１５５】
なお上述の実施形態の復号装置４０の機能は、プログラムにより実現してもよい。最後に、実施形態の復号装置４０をプログラムにより実現する場合のハードウェア構成の例について説明する。
【０１５６】
図１５は実施形態の復号装置４０のハードウェア構成の例を示す図である。実施形態の復号装置４０は、制御装置１０１、主記憶装置１０２、補助記憶装置１０３、表示装置１０４、入力装置１０５及び通信装置１０６を備える。制御装置１０１、主記憶装置１０２、補助記憶装置１０３、表示装置１０４、入力装置１０５及び通信装置１０６は、バス１１０を介して接続されている。復号装置４０は、例えばスマートデバイス及びパーソナルコンピュータ等である。
【０１５７】
制御装置１０１は補助記憶装置１０３から主記憶装置１０２に読み出されたプログラムを実行する。主記憶装置１０２はＲＯＭ及びＲＡＭ等のメモリである。補助記憶装置１０３はメモリカード及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。
【０１５８】
表示装置１０４は情報を表示する。表示装置１０４は、例えば液晶ディスプレイである。入力装置１０５は、情報の入力を受け付ける。入力装置１０５は、例えばキーボード等である。なお表示装置１０４及び入力装置１０５は、表示機能と入力機能とを有する液晶タッチパネル等でもよい。通信装置１０６は他の装置と通信する。
【０１５９】
復号装置４０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【０１６０】
また復号装置４０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また復号装置４０が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１６１】
また復号装置４０のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１６２】
復号装置４０で実行されるプログラムは、上述の実施形態の復号装置４０の構成（機能ブロック）のうち、プログラムにより実現可能な機能ブロックを含むモジュール構成となっている。プログラムにより実現可能な機能ブロックは、例えば受信部４１、行処理演算部４３、二値化部４６及び検査部４７等である。
【０１６３】
プログラムにより実現される機能ブロックは、制御装置１０１が補助記憶装置１０３等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能ブロックが主記憶装置１０２にロードされる。すなわちプログラムにより実現される機能ブロックは、主記憶装置１０２上に生成される。
【０１６４】
なお実施形態の復号装置４０の機能ブロックを、プログラムと、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアと、を組み合わせることにより実現してもよい。
【０１６５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６６】
１０  通信システム
２０  符号化装置
３０  通信路
３０ａ  第１通信路
３０ｂ  第２通信路
４０  復号装置
４１  受信部
４２  復号データメモリ
４３  行処理演算部
４４  検査行列データメモリ
４５  行処理メモリ
４６  二値化部
４７  検査部
５０  参照シンドローム演算装置
６０  送信装置
４０１  減算部
４０２  第１演算部
４０３  第２演算部
４０４  選択部
４０５  符号値演算部
４０６  乗算部
４０７  加算部
４２１  ＡＢＳ（Ａｂｓｏｌｕｔｅ  ｖａｌｕｅ）部
４２２  ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）部
４２３  １／２部
４２４  Φ１部
４２５  ＦＦ部
４２６  加算部
４２７  ＦＦ部
４２８  ＦＦ部
４２９  ＦＦ部
４３０  Ｑ−Ｒ部
４３１  １／２部
４３２  Φ２部
４３３  ＦＦ部
【図１】
0006605839.tif 000011
【図２】
0006605839.tif 000012
【図３】
0006605839.tif 000013
【図４】
0006605839.tif 000014
【図５】
0006605839.tif 000015
【図６】
0006605839.tif 000016
【図７】
0006605839.tif 000017
【図８】
0006605839.tif 000018
【図９】
0006605839.tif 000019
【図１０】
0006605839.tif 000020
【図１１】
0006605839.tif 000021
【図１２Ａ】
0006605839.tif 000022
【図１２Ｂ】
0006605839.tif 000023
【図１２Ｃ】
0006605839.tif 000024
【図１３Ａ】
0006605839.tif 000025
【図１３Ｂ】
0006605839.tif 000026
【図１３Ｃ】
0006605839.tif 000027
【図１４Ａ】
0006605839.tif 000028
【図１４Ｂ】
0006605839.tif 000029
【図１４Ｃ】
0006605839.tif 000030
【図１５】
0006605839.tif 000031