(57)【特許請求の範囲】
【請求項１】
符号化された受信データに対して加算比較選択演算を実行するＡＣＳ演算器と、
実行した前記加算比較選択演算に基づき算出された復号データが誤りであるか否かを検出する誤り検出部と、を有し、
前記ＡＣＳ演算器は、前記復号データが誤りである場合、トレリス線図に含まれる各時点の内、前記加算比較選択演算により算出された復号パスの最終状態が属する時点、に含まれる各状態のパスメトリックを使用して、再度、前記受信データに対して前記加算比較選択演算を実行することを特徴とする復号装置。
【請求項２】
前記誤り検出部は、前記復号データに含まれる誤り検出符号に基づき前記復号データが誤りであるか否かを検出することを特徴とする請求項１に記載の復号装置。
【請求項３】
前記誤り検出部の検出結果に基づき、前記ＡＣＳ演算器が前記受信データに対する前記加算比較選択演算を再度実行するか否かを判断するデコードコントローラをさらに有することを特徴とする請求項２に記載の復号装置。
【請求項４】
実行された前記加算比較選択演算に基づき算出された第１復号データと、再度実行された前記加算比較選択演算に基づき算出された第２復号データと、を比較して前記第１復号データと前記第２復号データが同一であるか否かを判定するデータ比較器をさらに有し、
前記デコードコントローラは、前記誤り検出部が前記第２復号データの誤りを検出し、かつ、前記データ比較器が前記第１復号データと前記第２復号データが同一であると判定した場合、前記受信データの復号の終了を決定することを特徴とする請求項３に記載の復号装置。
【請求項５】
前記デコードコントローラは、前記誤り検出部が前記第２復号データの誤りを検出し、かつ、前記データ比較器が前記第１復号データと前記第２復号データは同一でないと判定した場合、前記受信データに対する前記加算比較選択演算の実行回数が所定数以下であるか否かを判定することを特徴とする請求項４に記載の復号装置。
【請求項６】
前記実行回数が所定数以下である場合、前記デコードコントローラは前記受信データに対する前記加算比較選択演算をさらに実行することを決定する請求項５に記載の復号装置。
【請求項７】
前記実行回数が所定数以上である場合、前記デコードコントローラは前記受信データの復号の終了を決定することを特徴とする請求項５に記載の復号装置。
【請求項８】
前記符号化は、データ送信側で行われるテイルバイティング方式の畳み込み符号化であることを特徴とする請求項１に記載の復号装置。
【請求項９】
前記誤り検出符号は、ＣＲＣであることを特徴とする請求項２に記載の復号装置。
【請求項１０】
符号化された受信データに対して実行した加算比較選択演算に基づき算出された復号データが誤りである場合、トレリス線図に含まれる各時点の内、前記加算比較選択演算により算出された復号パスの最終状態が属する時点、に含まれる各状態のパスメトリックを使用して、再度、前記受信データに対して前記加算比較選択演算を実行することを特徴とする復号方法。
【請求項１１】
前記復号データが誤りであるか否かを、前記復号データに含まれる誤り検出符号に基づき判定することを特徴とする請求項１０に記載の復号方法。
【請求項１２】
再度、加算比較選択演算を実行して得た第２復号データが誤りである場合、前記第２復号データを算出する前に実行した加算比較選択演算に基づき算出された第１復号データと、前記第２復号データと、を比較し、前記第１復号データと前記第２復号データとが同一である場合には前記受信データの復号を終了することを特徴とする請求項１０に記載の復号方法。
【請求項１３】
前記第１復号データと前記第２復号データとが同一でない場合、前記受信データに対する加算比較選択演算の実行回数を判定し、前記実行回数が所定回数以上である場合には前記受信データの復号を終了することを特徴とする請求項１２に記載の復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明にかかる復号装置及び復号方法は、特にテイルバイティング方式の畳み込み符号データをビタビアルゴリズムに従って復号する復号装置及び復号方法に関する。
【背景技術】
【０００２】
移動体通信システム等の無線通信システムでは、無線信号により通信されるデータの誤り訂正能力の向上を実現するために符号化したデータを用いて通信を行う。この符号化方法として畳み込み符号が多く用いられる。また、この畳み込み符号方法には、ターミネーティング（Terminating）方式とテイルバイティング（Tail Biting）方式とがある。
【０００３】
ターミネーティング方式では、符号器の初期状態と送受信するデータ列の末尾に予め定められた値を有するターミネーションビットを設定し、符号化データを生成する。また、復号器側では、符号器の初期状態の値が分かっているため、その符号器の初期状態の値を復号開始時点の復号器の初期状態として復号を行う。
【０００４】
一方、テイルバイティング方式では、ターミネーションビットを用いずにデータの符号処理及び復号処理を行う。テイルバイティング方式では、符号化するデータ列の最終Ｋ−１（Ｋは拘束長）を符号化器の初期値として設定して符号化処理を行う。つまり、テイルバイティング方式で符号化されたデータを復号した場合、復号処理を行う復号器の初期状態と最終状態とが同じ状態になる。従って、テイルバイティング方式で符号化されたデータを復号する復号器では、初期状態不明のまま復号処理を開始し、初期状態と最終状態が一致するデータの特性を利用して復号処理の停止条件を判断する。このテイルバイティング方式の復号化処理の詳細が非特許文献１に開示されている。また、テイルバイティング方式で符号化されたデータを復号するビタビ復号方法及びビタビ復号回路が特許文献１に開示されている。
【０００５】
ここで、特許文献１に開示されているビタビ復号方法について説明する。特許文献１に記載のビタビ復号回路では、受信した符号化データに対して加算比較選択演算（Add, Compare, Select演算、以下ＡＣＳ演算と称す）を行い、復号処理を行う。このＡＣＳ演算では、符号化データを復号して得られる復号データの開始状態から最終状態までの状態遷移を示すパストレースの最尤状態のパスを求める。最尤状態は、符号化前のデータを符号器において符号化した場合における符号器の状態遷移に最も確からしい（尤度が高い）と思われる復号データの状態遷移である。
【０００６】
図１０に特許文献１に記載のビタビ復号方法のフローチャートを示す。図１０に示すように、特許文献１に記載のビタビ復号方法では、まず、ＡＣＳ演算処理を繰り返し実行し、各時刻でのパスの選択やパスメトリックの更新を行う（ステップＳ１０１、Ｓ１０２）。このＡＣＳ演算処理毎に、各状態について、その状態に達するどのパスを選択したかという情報（パス選択信号）をパスメモリに記憶する。
【０００７】
全ての受信ビット列に対して、上記ＡＣＳ演算処理の繰り返し実行が終了すると、その時点で最も尤度が大きいパスメトリックを保持する最尤状態Ｓｓを認識する（ステップＳ１０３）。そして、この最尤状態Ｓｓを開始状態とし、パスメモリに記憶されたパス選択信号に基づき、パスのトレースバックを行い、トレースされる各時刻の状態から復号ビットを算出し、復号ビット列Ａを得る（ステップＳ１０４）。また、トレースバックが終了したときに到達した状態Ｓｒを認識する（ステップＳ１０５）。その後、復号ビット列Ａのエラーチェックを行い、エラーの有無の判定を実行する（ステップＳ１０６、Ｓ１０７）。
【０００８】
この判定により、復号ビット列Ａにエラーが存在するという結果が得られると、最尤状態Ｓｓとトレースバックで到達した状態Ｓｒとを比較する（ステップＳ１０８）。両状態Ｓｓ及びＳｒが一致すれば、後述するステップＳ１１１に進む。一方、両状態Ｓｓ及びＳｒが不一致であれば、状態Ｓｒを開始状態とし、パスメモリに記憶されたパス選択信号に基づき、パスのトレースバックを行い、トレースされる各時刻の状態から復号ビットを算出し、復号ビット列Ｂを得（ステップＳ１０９）、その後、復号ビット列Ｂのエラーチェックを行い、エラーの有無の判定を実行する（ステップＳ１１０）。
【０００９】
ステップＳ１０７の判定の結果が復号ビット列Ａにエラーがないという結果のとき、ステップＳ１０８の判定の結果が最尤状態Ｓｓとトレース最終到達状態Ｓｒとが一致したという結果のとき、又は、復号ビット列Ｂに対するエラーチェックが終了したときには、出力ビット列として、得られた復号ビット列Ａ又はＢを使用するか、使用しないかや、得られた復号ビット列Ａ又はＢをエラー訂正して使用するか等を決定し、出力ビット列を送出する（ステップＳ１１１）。例えば、復号ビット列Ａにエラーがないときにはこの復号ビット列Ａを出力ビット列とし、復号ビット列Ａにエラーがあり、復号ビット列Ｂにエラーがないときにはこの復号ビット列Ｂを出力ビット列とし、復号ビット列Ａ及びＢに共にエラーがあるときには所定ルールに従って出力ビット列を決定する。
【００１０】
ここで、特許文献１に記載のビタビ復号方法によるパストレースバックの具体例を説明するための状態遷移図を図１１に示す。図１１に示す例において、最終時刻の状態である最尤状態として、正しくない状態２が選択されたとする。このとき、特許文献１に記載のビタビ復号方法では、状態２からステップＳ１０４のパストレースバックを実行する。この状態２（１０）からのトレースバックでは復号ビット「１」が得られる。復号ビット（入力ビット）が「１」であって状態２に遷移するので、前の時刻ｔ＝６での状態は状態１（０１）である。従って、次の復号ビットとして、状態を規定する２ビット中の上位ビットの「０」が得られる。
【００１１】
以下、同様にして、次々と復号ビットが得られ、時刻ｔ＝０までトレースバックしたときには、復号ビット列として「１０１１０１０」（トレースバック順で並べている）が得られる。このように、本来の状態ではない状態２を最尤状態としてパストレースバックして得た復号ビット列「０１０１１０１」に対してエラーチェックを実行すると、エラーという結果が得られる（ステップＳ１０６、Ｓ１０７）。
【００１２】
そのため、１回目のパストレースバック（ステップＳ１０４）での最終到達状態（この場合、状態０）を、最終時刻ｔ＝７の状態としたパストレースバックが実行される（ステップＳ１０９）。パストレースバックの開始状態が状態０（００）であるので、まず、復号ビットとして「０」が得られる。時刻ｔ＝７の状態が状態０であって、その状態０へ遷移させるビット（復号ビット）が「０」であるので、時刻ｔ＝６の状態は状態１（０１）である。従って、次の復号ビットとして「０」が得られる。以下、同様にして、次々と復号ビットが得られ、時刻ｔ＝０までトレースバックしたときには、復号ビット列として「００１１０１０」（トレースバック順で並べている）が得られる。復号ビット列の順番を元に戻すと符号器への入力ビット列に等しい復号ビット列が得られる。
【００１３】
以上のように、特許文献１に記載のビタビ復号方法では、ある状態からのパストレースによって得られた復号信号にエラーがあり、そのパストレースでの最終的な到達状態とその開始時の状態とが異なるときに、最終的な到達状態を開始状態としたパストレースを実行し、この実行による復号信号をも候補として最終的に出力する復号信号を決定する。これにより、処理時間の増加、構成の複雑化を防止しながら、最終的に出力された復号信号の精度（誤り率）を向上させることができる。
【非特許文献１】"On Tail Biting Convolutional Codes", HOWARD H. MA et al., IEEE TRANSACTIONS ON COMMUNICATIONS, Vol COM-34, No.2, FEBRURY 1986
【特許文献１】特開平９−２３２９７１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、特許文献１に記載のビタビ復号方法では、最尤パスについてトレースバックを行って得た復号結果が誤りである場合、トレースバックを行うパスを変更して再度トレースバックを行うが、再度のトレースバックを行って得た復号結果も誤りである場合には復号を終了してしまうため、誤り訂正能力が低いという問題点がある。
【課題を解決するための手段】
【００１５】
本発明の一態様にかかる復号装置は、符号化された受信データに対して加算比較選択演算を実行するＡＣＳ演算器と、実行した前記加算比較選択演算に基づき算出された復号データが誤りであるか否かを検出する誤り検出部と、を有し、前記ＡＣＳ演算器は、復号データが誤りである場合に再度、受信データに対して前記加算比較選択演算を実行することを特徴とする。
【００１６】
また、本発明に関する復号方法は、符号化された受信データに対して実行した加算比較選択演算に基づき算出された復号データが誤りである場合、受信データに対して再度、前記加算比較選択演算を実行することを特徴とする。
【発明の効果】
【００１７】
本発明にかかる復号装置及び復号方法によれば、誤り訂正能力を向上させることができる。
【発明を実施するための最良の形態】
【００１８】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１に本実施の形態にかかるビタビ復号装置１のブロック図を示す。図１に示すように、ビタビ復号装置１は、復号器１０、入力メモリ２０、出力メモリ２１、誤り検出部２２、コントローラ２３を有している。以下の説明では、ビタビ復号装置１に送信機側の符号器が畳み込み符号アルゴリズムに基づき符号化したデータが入力され、ビタビ復号装置１がその入力データをビタビ復号アルゴリズムに基づき復号する例について説明する。また、ビタビ復号装置１が受信する入力データは、送受信対象のデータ列に符号化された誤り検出符号（例えば、ＣＲＣ（Cyclic Redundancy Check）コード）が付加されているものとする。本実施の形態で用いる符号化前データの概略図を図２に示す。
【００１９】
復号器１０は、ＡＣＳ演算器１１、内部メモリ１２、トレースバック演算器１３、データ比較器１４、デコードコントローラ１５、デコードカウンタ１６を有している。ＡＣＳ演算器１１は、送信機側の復号器の符号化処理における符号器の状態遷移を入力メモリから読み出した入力データに基づき再現することで、入力データの復号を行う。より具体的には、ＡＣＳ演算器１１は、ある時点における全ての状態に至る遷移パスを候補パスとして保持しておき、入力データを手がかりとして送信機の符号器の状態遷移として最も確からしい遷移パスを選択（最尤選択）することにより、符号器の状態遷移を推定しながら復号を行う。ここで確からしさを具体的に表す量として尤度を用いる。また、本実施の形態では、復号方法としてテイルバイティング方式のビタビ復号アルゴリズムを用いる。ＡＣＳ演算器１１における復号演算処理として加算比較選択演算（Add, Compare, Select演算、以下ＡＣＳ演算と称す）が用いられる。
【００２０】
ここで、ＡＣＳ演算について説明する。ビタビ復号を実行するにあたっては、トレリス線図上のある状態から他の状態に至る遷移の尤度を示すブランチメトリックをトレリス線図上の各パス毎に加算して、パスの尤度を示すパスメトリックを求める。ここで、畳み込み符号化器を構成するシフトレジスタの状態遷移から明らかなように、トレリス線図における各時点の各状態に至る遷移枝は２本となる。そうすると、トレリス線図の各時点に属する各状態に至るパスの数も２つとなる。パスメトリックは、ある時点のある状態に至るパスを構成する各ブランチのブランチメトリックを積算することで求めることができる。ここで、トレリス線図上の各状態に至るパスは上述したように二つである。ビタビ復号アルゴリズムでは、ある状態に至る二つのパスのパスメトリックを比較し、尤度が高いパスを生き残りパスとして選択する（パスメトリックの値と尤度の関係は、パスメトリックをどのように定義するかによって変化する）。他方のパスはその状態に至る確からしいパスではないと判断し、捨てる。つまり、ブランチメトリックを積算し（Ａｄｄ）、算出されたパスメトリックを各状態で比較し（Ｃｏｍｐａｒｅ）、各状態でひとつの生き残りパスを選択する（Ｓｅｌｅｃｔ）。これがＡＣＳ演算である。ビタビ復号のアルゴリズムではトレリス線図上の初期時点から最終時点まで、このＡＣＳ演算を繰り返す。そしてトレリス線図上の最終時点に属する各状態が有するパスメトリックを比較して、最も尤度が高い一の状態を選択する。選択された一の状態に至るパスに基づき復号データを取得する（トレースバック）。ＡＣＳ演算器１１は、上記のＡＣＳ演算を実行する演算部である。
【００２１】
内部メモリ１２は、ＡＣＳ演算器１１におけるパス情報（例えば、パスの尤度情報、生き残りパス情報等）が格納される。トレースバック演算器１３は、内部メモリ１２に格納されているパス情報を参照して最終的に用いられる復号データを生成する。より具体的には、トレースバック演算器１３は、トレースバック処理を行う。トレースバック処理は、最尤パス上のデータを最尤パスの最終状態から初期状態に向かってデータの回収を行うことで復号データを生成する。つまり、復号器１０では、ＡＣＳ演算器１１によって復号データ候補選定を行い、トレースバック演算器１３でデータの復号を行うことで復号データを生成する。
【００２２】
データ比較器１４は、トレースバック演算器１３から出力される現サイクルにおける復号データと、出力メモリ２１に格納されている前サイクルにおける復号データとを比較し、その比較結果をデコードコントローラ１５に出力する。デコードコントローラ１５は、データ比較器１４から出力される比較結果、誤り検出部２２が出力する誤り検出結果、又は、デコードカウンタ１６が出力するカウント値に基づき復号器１０で行われている復号処理の終了判断を行う。そして、デコードコントローラ１５は、終了判断結果をコントローラ２３に出力する。デコードカウンタ１６は、ＡＣＳ演算器１１においてＡＣＳ演算が何サイクル行われたかをカウントし、そのカウント値を出力する。
【００２３】
入力メモリ２０は、受信データ（以下、入力データと称す）を格納する。入力メモリ２０に格納される入力データは、例えば、アンテナを介して受信した無線信号に対してベースバンド処理を施して得られるデータである。出力メモリ２１は、トレースバック演算器１３が出力する復号データを復号器１０の諸リサイクル毎に格納する。誤り検出部２２は、復号データに含まれる誤り検出符号（例えば、第１のＣＲＣ）と復号データ内のデータ列から生成される誤り検出符号（例えば、第２のＣＲＣ）とを比較して誤りを復号データの誤りを検出し、その検出結果を誤り検出結果として出力する。コントローラ２３は、出力メモリ２１に格納される復号データ、誤り検出部２２が出力する誤り検出結果、及び、デコードコントローラ１５が出力する終了判断結果を受けて復号器１０の動作を制御する。
【００２４】
ここで、テイルバイティング方式の畳み込み符号化の処理について説明する。図３に畳み込み符号化器３０のブロック図を示す。畳み込み符号化器３０は、シフトレジスタＤ０、Ｄ１、排他的論理和回路（ＸＯＲ回路）３１〜３３を有する。シフトレジスタＤ０には入力データ（図中のｉｎｐｕｔ）が入力される。シフトレジスタＤ１には、シフトレジスタＤ０の出力信号が入力される。ＸＯＲ回路３１は入力データとシフトレジスタＤ０の出力信号が入力され、これら入力の排他的論理和演算結果を出力する。ＸＯＲ３２は、ＸＯＲ回路３１の出力信号とシフトレジスタＤ１の出力信号とが入力され、これら入力の排他的論理和演算結果を第１の出力信号（図中のｏｕｔｐｕｔ０）として出力する。ＸＯＲ３３は、入力データとシフトレジスタＤ１の出力信号とが入力され、これら入力の排他的論理和演算結果を第２の出力信号（図中のｏｕｔｐｕｔ１）として出力する。
【００２５】
畳み込み符号化器３０においてテイルバイティング方式で符号化処理を行う場合、シフトレジスタＤ０、Ｄ１の初期状態として入力データの末尾の２ビットを設定する。そして、その初期値に続けて入力データを入力し、符号データを生成する。なお、初期値は、符号化処理の開始前に設定される。
【００２６】
畳み込み符号化器３０を用いた符号化処理の一例を図４に示す入力データと出力データの関係を参照して説明する。図４に示す例では、入力データとして「１００１００１」を用いる。そのため、畳み込み符号化器３０のシフトレジスタＤ０には初期値として「１」が設定され、シフトレジスタＤ１には初期値として「０」が設定される。そして、入力データの先頭ビットが畳み込み符号化器３０に入力されることで符号化処理が開始される。
【００２７】
まず、入力データの先頭ビットの「１」が入力されると第１の出力信号は「０」となり、第２の出力信号は「１」となる。そして、後続の入力データを入力することで、入力データに対応した第１の出力信号として「００１１１１１」が出力され、第２の出力信号として「１１１１０１１」が出力される。また、この符号化処理におけるシフトレジスタＤ０、Ｄ１の状態遷移図（以下、トレリス線図と称す）を図５に示す。
【００２８】
図５に示すように、シフトレジスタＤ１、Ｄ０の状態は、（Ｄ１、Ｄ０）＝「０１」を初期状態として、「１１」、「１０」、「００」、「０１」、「１０」、「００」の順に進み、最終状態は「０１」となる。つまり、テイルバイティング方式では、初期状態と最終状態が同じになる。そして、復号器１０では、畳み込み符号化器３０におけるこの状態遷移を受信した入力データに基づき推定することで復号化を行う。
【００２９】
次に、復号器１０における復号処理について説明する。まず、復号器１０において、入力メモリ２０から読み出した入力データに基づき推定可能な状態を示すトレリス線図を図６に示す。図６に示すように、トレリス線図上のそれぞれの状態に遷移する枝は２つある。そして、テイルバイティング方式では、このようなトレリス線図において、初期状態と最終状態が確定していない。そのため、本実施の形態にかかるビタビ復号装置１では、同じ入力データに対して繰り返しＡＣＳ演算を行うことで１つの最尤パスを選択する。
【００３０】
繰り返しＡＣＳ演算を行う理由は以下の通りである。ビタビ復号では、ＡＣＳ演算を行う際、トレリス線図上の初期時点の各状態に対してパスメトリックの初期値を設定する。ここで、例えばターミネーティング方式のビタビ復号を行う場合、データ送信側の畳み込み符号化器の初期状態と最終状態が確定している。図３に示す畳み込み符号化器の場合、例えば初期状態と最終状態が共に状態（Ｄ１、Ｄ０）＝（０、０）であるとすることができる。この場合、トレリス線図の状態遷移は状態（Ｄ１，Ｄ０）＝（０、０）から開始する確率が最も高く、トレリス線図上の状態遷移が（Ｄ１，Ｄ０）＝（０、０）で終了する確率がもっとも高い。そのため、ターミネーティング方式のようにトレリス線図上の状態遷移の開始状態がわかっている場合、トレリス線図上の初期時点に属する各状態のパスメトリックに対して重み付けを行うことが行われる。
【００３１】
例えばパスメトリックに受信データと状態遷移に対応するデータとのハミング距離を用いる場合、パスメトリックが小さいほど、その状態の尤度は高くなる。上記の例の場合、初期時点の状態（Ｄ１，Ｄ０）＝（０、０）のパスメトリックを０とし、初期時点のそれ以外の状態のパスメトリックを０よりも充分大きな値とすることで、各状態に尤度の差をつけておくことができる。そして状態遷移の終了状態は最終時点の状態（Ｄ１，Ｄ０）＝（０、０）が最も確からしいため、復号データを求めるトレースバックも最終時点に属する（Ｄ１，Ｄ０）＝（０、０）から開始することで復号の成功率を高めることができる。
【００３２】
しかし、テイルバイティング方式のように、状態遷移の初期状態が確定していない場合、上記のようなパスメトリックの重み付けを行うことができない。この場合、状態遷移がトレリス線図の初期時点に属する各状態のうち、どの状態から開始するかは不明である。従ってパスメトリックの重み付けを行うことはせず、各状態に等しいパスメトリックを与える。例えばパスメトリックとして上述のハミング距離を用いた場合、初期時点に属する各状態のパスメトリックを全て０で統一することが考えられる。そして、一度、トレリス線図上の初期時点から最終時点まで、ＡＣＳ演算を行う。すなわち、最終時点に属する各状態のパスメトリックが確定する。最終時点に属する各状態のパスメトリックは全て０ではなく、値はそれぞれの状態で異なる。最も確からしい状態からトレースバックを行えば、復号データを得ることができる。しかし、得られた復号データが誤りである場合がある。
【００３３】
本実施の形態では、復号データが誤りである場合、この最終時点の各状態のパスメトリックを初期値として、同じ受信データに対して再度ＡＣＳ演算を行う。そして再度のＡＣＳ演算に基づきトレースバックを行い再度復号結果を得る。再度ＡＣＳ演算を行えば、前回のＡＣＳ演算と受信データは同一でも、初期時点の各状態のパスメトリックが前回のＡＣＳ演算を実行したときとは異なるため、再度のＡＣＳ演算の結果は前回のＡＣＳ演算の結果とは異なる。繰り返しＡＣＳ演算を行う理由はこの点にあり、本実施の形態では、同じ受信データに対して、前回のＡＣＳ演算の情報を利用して再度ＡＣＳ演算を行う。すなわち、ＡＣＳ演算を繰り返し実行することで、復号装置の誤り訂正能力が向上する。
【００３４】
図７に２サイクルのＡＣＳ演算を行った場合のトレリス線図を示す。なお、以下の説明では、ＡＣＳ演算の各サイクルを処理の実行順序に応じてファーストラップ、セカンドラップ、サードラップと称す。図７は、ファーストラップにおいて復号器１０で得られるシフトレジスタＤ１、Ｄ０の初期状態が「０１」であった場合に、図４に示す入力データｉｎｐｕｔを入力する例を示す。図７に示すように、入力データとして「１００１００１」が入力されると、復号器１０で得られる状態遷移は、「０１」を初期状態として、「１１」、「１０」、「００」、「０１」、「１０」、「００」の順に進み、ファーストラップの最終状態として「０１」が得られる。
【００３５】
そして、ファーストラップの最終状態をセカンドラップの初期状態として再度同じ入力データを入力する。つまり、ＡＣＳ演算を繰り返すことで、セカンドラップでは、入力データの末尾のビットを初期状態としてＡＣＳ演算が進むことになる。図７に示す例では、ファーストラップにおける初期状態と最終状態とが同じ状態であるため、セカンドラップはファーストラップと同じ状態遷移となる。
【００３６】
このように、テイルバイティング方式では、同じデータに対して繰り返しＡＣＳ演算を行うことで、２回目以降の初期状態を確定できるため、演算を繰り返す毎に誤り訂正能力が向上する。図８にテイルバイティング方式の復号処理における演算の繰り返し回数（Ｌａｐ）とデータのエラー率（ＢＬＥＲ）の関係を示す。図８に示すように、テイルバイティング方式の復号処理では、１回目の演算に対して２回目の演算で大きくエラー率が低下する。また、２回目以降では、演算の繰り返し回数が増加する毎にエラー率は低下するが、ある程度のエラー率でエラー率の低下はほとんどなくなる。つまり、演算の繰り返し回数がある程度の回数に達すると、それ以上演算を繰り返してもエラー率はそれほど変わらない。そのため、演算を繰り返してもエラーが訂正されない場合、その後に演算を続けてもエラーが訂正される可能性は低い。
【００３７】
ここで、本実施の形態におけるビタビ復号装置１における復号処理について説明する。ビタビ復号装置１における復号処理のフローチャートを図９に示す。図９に示すように、復号処理では、まず、ＡＣＳ演算器１１が入力メモリ２０から一時点の入力データを読み出す（ステップＳ１）。続いて、ＡＣＳ演算器１１は、読み出した入力データに対してＡＣＳ演算を行う（ステップＳ２）。ＡＣＳ演算によって得られた復号データは、内部メモリ１２に格納される。そして、ＡＣＳ演算済みの入力データが打ち切り長に達しているか否かを判断する（ステップＳ３）。打ち切り長は、どれだけの長さの演算結果をトレースバック処理するか否かで決定される。
【００３８】
ステップＳ３において、打ち切り長に達していない場合（ステップＳ３：Ｎｏ）、ステップＳ１に戻り、次の時点の入力データに対してＡＣＳ演算を行う。一方、ステップＳ３において打ち切り長に達していた場合（ステップＳ３：Ｙｅｓ）、トレースバック演算器１３によってトレースバック処理を行い復号結果の取得を行う（ステップＳ４）。この復号結果は、復号データとして出力メモリ２１に格納される。そして、１フレーム分（例えば、入力メモリ２０に格納されている１サイクル分の入力データ）の全結果を取得したか否かを判断する（ステップＳ５）。ステップＳ５において、１フレーム分の全結果を取得していないと判断した場合（ステップＳ５：Ｎｏ）、再度ステップＳ１に戻り、続きの入力データに対するＡＣＳ演算を行う。一方、ステップＳ５において、１フレーム分の全結果を取得できている判断した場合（ステップＳ５：Ｙｅｓ）、ステップＳ５までで得られた復号データの誤りを確認する（ステップＳ６）。
【００３９】
ここで、復号データが誤りである場合には再度ＡＣＳ演算を行い、復号データが正しければ復号を終了することが基本的な思想である。しかし、ＡＣＳ演算を一定回数以上、繰り返した後は復号データのエラーレートがさほど変化しないこと、ＡＣＳ演算を無限に繰り返すことは実施の形態としてふさわしくないこと、に基づき、本実施の形態では、復号データが誤りである場合に再度ＡＣＳ演算を行うかどうかを以下のように判断する。以下の実施の形態のステップによって、無駄なデコードの繰り返しを回避することができ、デコード時間を短縮することができる。さらには電子回路で構成した場合の消費電力の削減にも寄与する。
【００４０】
ステップＳ６の確認処理は、誤り検出部２２によって行われる。より具体的には、誤り検出部２２は、復号データに含まれる第１のＣＲＣと、復号データに含まれるデータ列から算出される第２のＣＲＣとの一致比較演算を行う。そして、第１のＣＲＣと第２のＣＲＣとが一致していれば、復号データに誤りがないと判断して、復号データが正しいことを示す検出結果を出力する（ステップＳ６：Ｙｅｓ）。一方、第１のＣＲＣと第２のＣＲＣとが不一致の場合、復号データに誤りがあると判断して、復号データが誤りであることを示す検出結果を出力する（ステップＳ６：Ｎｏ）。そして、デコードコントローラ１５は、この検出結果に基づきコントローラ２３に復号結果の状態を示す制御信号を出力する。
【００４１】
ステップＳ６でＹｅｓの枝に進む場合、デコードコントローラ１５はコントローラ２３に対して復号が正しく行われたことを示す制御信号を出力する。そして、コントローラ２３は復号器１０に復号処理の終了を指示する。一方、ステップＳ６でＮｏの枝に進む場合、デコードコントローラ１５はコントローラ２３に未だ復号処理が完了していないことを示す制御信号を出力する。次に、データ比較器１４では、現サイクル（現ラップ）の復号データ（第２復号データ）と前サイクル（前ラップ）の復号データ（第１復号データ）の一致比較演算を行う。そして、デコードコントローラ１５は、データ比較器１４による比較結果を参照し、復号データが前回のラップと今回のラップで同じであるか否かを判断する（ステップＳ７）。
【００４２】
ステップＳ７において、比較結果が一致を示している場合（ステップＳ７：Ｙｅｓ）、デコードコントローラ１５はコントローラ２３に対して復号を続けても復号データに変化がないことを示す制御信号を出力する。すなわち、デコードコントローラは、復号の終了を決定する。そして、コントローラ２３は復号器１０に復号処理の終了を指示する。一方、ステップＳ７において、比較結果が不一致を示している場合（ステップＳ７：Ｎｏ）、デコードコントローラ１５はコントローラ２３に未だ復号処理が完了していないことを示す制御信号を出力する。次に、デコードコントローラ１５はデコードカウンタ１６が出力するカウント値を参照し、同じ入力データに対して行われたＡＣＳ演算が規定回数に達したか否かを判断する（ステップＳ８）。
【００４３】
ステップＳ８においてカウント値が規定回数以上であった場合（ステップＳ８：Ｙｅｓ）、デコードコントローラ１５はコントローラ２３に対して復号が完了したことを示す制御信号を出力する。すなわち、デコードコントローラ１５は、復号の終了を決定する。このステップ８は、本発明者が発見した図８の性質に基づき設けられているものである。そして、コントローラ２３は復号器１０に復号処理の終了を指示する。一方、ステップＳ８においてカウント値が規定回数よりも小さい場合（ステップＳ８：Ｎｏ）、デコードコントローラ１５は、再度ＡＣＳ演算を実行することが可能であることを示す制御信号をコントローラ２３に出力し、デコードカウンタ１６のカウント値を１増加させる。そして、コントローラ２３は、復号器１０に同じ入力データに対して再度復号処理を行うことを指示する。
【００４４】
再度、復号を行う場合、入力メモリに記憶された受信データについて、再度ＡＣＳ演算器がＡＣＳ演算を行う。このとき、ＡＣＳ演算器１１は、内部メモリ１２から前回のＡＣＳ演算で算出したパスメトリックのうち、復号パスの最終時点に属する各状態のパスメトリックを読み出す。そして読み出したパスメトリックを再度のＡＣＳ演算に使用する。具体的にはＡＣＳ演算器１１は、内部メモリ１２から読み出した各状態のパスメトリックを初期値としてＡＣＳ演算を行う。以降の処理は上述した通りである。
【００４５】
上記説明より、本実施の形態にかかるビタビ復号装置１では、復号データに対してＣＲＣによるエラーチェックを行った結果、復号データにエラーが含まれている場合に再度同じ入力データに対して復号処理を行う。これにより、ビタビ復号装置１は、ビタビ復号アルゴリズムに基づいて符号データのエラー訂正を繰り返し行うことができる。つまり、ビタビ復号装置１は、繰り返し演算によって誤り訂正能力を向上させることができる。
【００４６】
また、ビタビ復号装置１では、前ラップの復号データと現ラップの復号データとが一致していた場合に復号処理を終了する。ビタビ復号アルゴリズムは、繰り返し演算を行っても復号データに変化がない場合、その後繰り返し演算を続けても結果に変更が生じない可能性が高い。そのため、このような復号データの変化によって、復号処理の終了判断をすることで、ビタビ復号装置１は、無駄な復号処理を繰り返すことなく処理を高速化することができる。
【００４７】
またビタビ復号に時間制約がある場合、繰り返し何度も演算を行えない場合がある。そこで、ビタビ復号装置１では、繰り返し演算の繰り返し回数による終了判断を行う。
【００４８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、誤り検出符号はＣＲＣに限らず、データの仕様あるいは通信システムの使用に応じて適宜変更することが可能である。
【図面の簡単な説明】
【００４９】
【図１】実施の形態１にかかるビタビ復号装置のブロック図である。
【図２】実施の形態１にかかるビタビ復号装置に入力される入力データの符号化前の状態を示す概念図である。
【図３】畳み込み符号化器の一例を示すブロック図である。
【図４】図３の畳み込み符号化器においてテイルバイティング方式の符号化処理を行った場合の入力データと出力データの関係を示す表である。
【図５】図３の畳み込み符号化器におけるトレリス線図である。
【図６】実施の形態１にかかるビタビ復号装置のトレリス線図である。
【図７】実施の形態１にかかるビタビ復号装置において図４のデータを用いた場合のトレリス線図の一例である。
【図８】実施の形態１にかかるビタビ復号装置における演算の繰り返し回数とエラー率との関係を示すグラフである。
【図９】実施の形態１にかかるビタビ復号装置における復号処理のフローチャートである。
【図１０】従来のビタビ復号方法のフローチャートである。
【図１１】従来のビタビ復号回路における状態遷移図である。
【符号の説明】
【００５０】
１    ビタビ復号装置
１０    復号器
１１    ＡＣＳ演算器
１２    内部メモリ
１３    トレースバック演算器
１４    データ比較器
１５    デコードコントローラ
１６    デコードカウンタ
２０    入力メモリ
２１    出力メモリ
２２    誤り検出部
２３    コントローラ
３０    符号化器
３１〜３３    ＸＯＲ回路
Ｄ０、Ｄ１    シフトレジスタ
【図１】
0004806673.tif 000002
【図２】
0004806673.tif 000003
【図３】
0004806673.tif 000004
【図４】
0004806673.tif 000005
【図５】
0004806673.tif 000006
【図６】
0004806673.tif 000007
【図７】
0004806673.tif 000008
【図８】
0004806673.tif 000009
【図９】
0004806673.tif 000010
【図１０】
0004806673.tif 000011
【図１１】
0004806673.tif 000012