(57)【要約】【課題】畳み込み符号を用いて符号化されたデータをビタビ復号によって復号する場合に、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化する。【解決手段】ビタビ復号装置２０は、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、複数のブランチメトリック値及びパスメトリック値に関するＡＣＳ演算を、並列あるいは擬似並列に行なうＡＣＳ演算部２１と、ＡＣＳ演算部２１によって求められたブランチメトリック値、及び、パスメトリック値を記憶する記憶部２２と、パスメトリック値に対するトレースバックにおいて、記憶部２２からパスメトリック値を読み出す読み出しアドレスを、読み出しアドレスを示すバレルシフタ２３０に対して、前回読み出したパスメトリック値をシフト入力することにより生成するトレースバック部２３と、を備える。【選択図】      図９
2018207248.tif 000002
【特許請求の範囲】
【請求項１】
畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ（Addition、Compare、Select）演算を、並列あるいは擬似並列に行なうＡＣＳ演算手段と、
前記ＡＣＳ演算手段によって求められた前記ブランチメトリック値、及び、前記パスメトリック値を記憶する記憶手段と、
前記パスメトリック値に対するトレースバックにおいて、前記記憶手段から前記パスメトリック値を読み出す読み出しアドレスを、前記読み出しアドレスを示すバレルシフタに対して、前回読み出した前記パスメトリック値をシフト入力することにより生成するトレースバック手段と、
を備えるビタビ復号装置。
【請求項２】
前記記憶手段は、前記ＡＣＳ演算の並列実行数以上に分割された記憶領域であって、他の前記記憶領域との間において、アクセス制御に関する競合が発生しないように構成された複数の前記記憶領域を含み、
前記ＡＣＳ演算手段は、前記記憶領域毎に、前記ブランチメトリック値あるいは前記パスメトリック値を読み出す前記ＡＣＳ演算がいずれか１つになるように、前記ＡＣＳ演算により求められた前記ブランチメトリック値あるいは前記パスメトリック値を前記記憶手段に格納する、
請求項１に記載のビタビ復号装置。
【請求項３】
前記トレースバックにおける起点となる最尤アドレスを生成する際に、前記ＡＣＳ演算手段から入力された前記ブランチメトリック値の最大値を閾値と比較して、前記最大値が閾値以上である場合に、前記ＡＣＳ演算において、前記記憶手段から読み出した前記ブランチメトリック値に対して特定の値を減算するように、前記ＡＣＳ演算手段を制御する最尤アドレス生成手段をさらに備える、
請求項１または２に記載のビタビ復号装置。
【請求項４】
入力された、軟判定情報を含む前記入力データから、生成多項式に基づいて相関値を生成し、生成した前記相関値を前記ＡＣＳ演算手段に入力する相関値生成手段をさらに備え、
前記ＡＣＳ演算手段は、入力された前記相関値を使用して、前記複数のＡＣＳ演算を行う、
請求項１乃至３のいずれか一項に記載のビタビ復号装置。
【請求項５】
前記相関値生成手段は、前記入力データに含まれるシンボルデータが示す、「１」である確からしさの度合い、及び「０」である確からしさの度合いに基づいて、前記相関値に対する重み付けを行う、
請求項４に記載のビタビ復号装置。
【請求項６】
前記相関値生成手段は、前記ビタビ復号を行う際の動作クロック毎に、前記相関値を生成し、
前記ＡＣＳ演算手段は、前記動作クロック毎に、連続して前記記憶手段から読み出した２つの前記ブランチメトリック値を保持する期間を、前記動作クロックのクロック幅の２倍に伸長したのち、前記２つのブランチメトリック値と、前記動作クロック毎に生成された前記相関値とを使用することによって、前記ＡＣＳ演算を行う、
請求項４または５に記載のビタビ復号装置。
【請求項７】
ＡＣＳ演算手段によって、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ演算を、並列あるいは擬似並列に行い、
記憶手段によって、前記ＡＣＳ演算によって求められた前記ブランチメトリック値、及び、前記パスメトリック値を記憶し、
トレースバック手段によって、前記パスメトリック値に対するトレースバックにおいて、前記記憶手段から前記パスメトリック値を読み出す読み出しアドレスを、前記読み出しアドレスを示すバレルシフタに対して、前回読み出した前記パスメトリック値をシフト入力することにより生成する、
ビタビ復号方法。
【請求項８】
前記記憶手段が、前記ＡＣＳ演算の並列実行数以上に分割された記憶領域であって、他の前記記憶領域との間において、アクセス制御に関する競合が発生しないように構成された複数の前記記憶領域を含む場合に、
前記ＡＣＳ演算手段によって、前記記憶領域毎に、前記ブランチメトリック値あるいは前記パスメトリック値を読み出す前記ＡＣＳ演算がいずれか１つになるように、前記ＡＣＳ演算により求められた前記ブランチメトリック値あるいは前記パスメトリック値を前記記憶手段に格納する、
請求項７に記載のビタビ復号方法。
【請求項９】
最尤アドレス生成手段によって、前記トレースバックにおける起点となる最尤アドレスを生成する際に、前記ＡＣＳ演算によって求められた前記ブランチメトリック値の最大値を閾値と比較して、前記最大値が閾値以上である場合に、前記ＡＣＳ演算において、前記記憶手段から読み出した前記ブランチメトリック値に対して特定の値を減算するように制御する、
請求項７または８に記載のビタビ復号方法。
【請求項１０】
相関値生成手段によって、入力された、軟判定情報を含む前記入力データから、生成多項式に基づいて相関値を生成し、
前記ＡＣＳ演算手段によって、生成した前記相関値を使用して、前記複数のＡＣＳ演算を行う、
請求項７乃至９のいずれか一項に記載のビタビ復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、畳み込み符号を用いて符号化された情報を、ビタビ復号によって復号する技術に関する。
【背景技術】
【０００２】
マイクロ波通信システム、あるいは、基地局間を通信するシステム等におけるディジタル変調方式を用いた無線通信システム等では、情報を符号化する方式として、畳み込み符号を用いる場合がある。そして、この畳み込み符号によって符号化された情報を復号する方式の一つとして、ビタビ復号が知られている。ビタビ復号の概要について、以下に説明する。
【０００３】
図１０は、一般的なビタビ復号の概要を説明する図である。ビタビ復号は、畳み込み符号により符号化された１つの受信データ（シンボルデータ）に対する、ＡＣＳ（Addition, Compare, Select）演算処理、トレースバック処理、その他リタイミング等の処理を含んでいる。
【０００４】
ビタビ復号では、受信したシンボルデータに対して、拘束長Ｋ（Ｋはビタビ復号において規定された特定の整数）に応じた状態数２Ｋ−１のブランチメトリック値およびパスメトリック値を、ＡＣＳ演算処理により求める。但し、拘束長Ｋは、過去の複数のビットを用いて現時点での符号化ビットを得る畳み込み符号において、過去のビットに対する依存長を表す。ブランチメトリック値、パスメトリック値、及び、ＡＣＳ演算については、ビタビ復号の技術領域において周知であるので、本願ではその詳細な説明を省略する。
【０００５】
ＡＣＳ演算処理で求めたブランチメトリック値は、次に受信するシンボルデータに関する新しいブランチメトリック値を求めるために保持される。ビタビ復号は、次のシンボルデータの受信時に、保持している前のシンボルデータのブランチメトリック値を読み出し、読み出したブランチメトリック値を用いて、新しいブランチメトリック値を求める演算を行う。ビタビ復号では、同様にＡＣＳ演算処理で求められたパスメトリック値も保持され、保持されたパスメトリック値は、トレースバック処理において読み出される。ビタビ復号は、このようにして、受信したシンボルデータ毎に求められる２Ｋ−１個のブランチメトリック値のうちの最大値に基づいて、拘束長Ｋの例えば４倍（４Ｋ）分のシンボルデータに関するパスメトリック値を遡るトレースバック処理を行うことによって、畳み込み符号によって符号化されたデータを復号する。
【０００６】
このような畳み込み符号とビタビ復号とを用いた通信方式において、誤り訂正能力を向上する手段の一つとして、拘束長Ｋを大きくすることが知られている。しかしながら、拘束長Ｋを大きくした場合、必要となる演算量が増大することによって、受信データに関するシンボルレート(変調速度)が低下するので、通信速度が低下するという問題がある。
【０００７】
このビタビ復号の拘束長Ｋを大きくした場合における演算量が増大する原因は、ビタビ復号を行うために用いる状態値を表すブランチメトリック値、及び、最尤アドレスに基づいて過去の状態を遡るトレースバック処理に関する状態段数が拘束長Ｋにより決定することにある。ビタビ復号では、ブランチメトリック値に関する必要とされる状態数は2Ｋ−１であり、またトレースバック処理を行う際の状態段数は、拘束長Ｋの４倍以上が必要とされる。したがって、拘束長Ｋを大きくしたビタビ復号は、受信したシンボルデータに関する１クロック分の期間において、状態数が2Ｋ−１であるブランチメトリック値を求めるＡＣＳ演算処理と４Ｋ個の状態段数を遡るトレースバック処理とを行うことによって演算量が増大するので、受信データに関するシンボルレートの低下を招く問題がある。
【０００８】
次に、上述の問題について具体例を用いて説明する。
【０００９】
図１１は、拘束長Ｋを、一般的なビタビ復号において用いられている「７」の２倍である「１４」とした場合における一般的なビタビ復号におけるＡＣＳ演算処理の一例を説明する図である。拘束長Ｋを「１４」としたビタビ復号におけるＡＣＳ演算処理では、図１１に示す通り、メモリＡに格納されている、前回に受信したシンボルデータに関する２Ｋ−１(即ち２１３＝８１９２)通りのブランチメトリック値（ｍ０〜ｍ８１９１)と、新たに受信したシンボルデータから生成される２Ｋ(即ち２１４＝１６３８４)個の相関値（ｃ０〜ｃ１６３８３)とに基づいて、新たに受信したシンボルデータに関するブランチメトリック値（Ｍ０〜Ｍ８１９１)を求める。
【００１０】
このＡＣＳ演算では、まず、前回に受信したシンボルデータに関する先頭のブランチメトリック値ｍ０と相関値ｃ０とを加算した値をｚ０として算出する。ＡＣＳ演算では、次に、前回に受信したシンボルデータに関する８１９２個のブランチメトリック値を図１１に示すように、前半部分と後半部分とに２分割したと仮定して、その後半部分における先頭のブランチメトリック値ｍ４０９６と、相関値ｃ１とを加算したｚ１を算出する。そして、算出したｚ０及びｚ１のうち、大きい方を新たなブランチメトリック値Ｍ０として算出する。尚、以下の本願の説明（図面を含む）においても、ブランチメトリックの値域に関して、同様に、その値域の「前半部分（部）」及び「後半部分（部）」なる表現を採用することとする。
【００１１】
ＡＣＳ演算では、同様に、ブランチメトリック値ｍ０と相関値ｃ２とを加算したｚ２と、ブランチメトリック値ｍ４０９６と相関値ｃ３とを加算したｚ３とを算出し、算出したｚ２及びｚ３のうち、大きい方を新たなブランチメトリック値Ｍ１として算出する。
【００１２】
ＡＣＳ演算では、新たに受信したシンボルデータに関して、このような演算を繰り返し実行し、最後に、ブランチメトリック値ｍ４０９５と相関値ｃ１６３８２とを加算したｚ１６３８２と、ブランチメトリック値ｍ８１９１と相関値ｃ１６３８３とを加算したｚ１６３８３とを算出し、算出したｚ１６３８２及びｚ１６３８３のうち、大きい方を新たなブランチメトリック値Ｍ８１９１として算出する。
【００１３】
図１２は、拘束長Ｋを「１４」とした場合における一般的なビタビ復号におけるトレースバック処理の一例を説明する図である。そして、このビタビ復号では、得られたブランチメトリック値の最大値に基づく最尤アドレスを起点として、４Ｋ（即ち、４ｘ１４＝５６）個（「ｘ」は乗算を表す演算子）の、時間（ｔ−１）乃至（ｔ−５６）に受信したシンボルデータに関するパスメトリック値を遡るトレースバック処理を行なう。このトレースバック処理では、パスメトリック値を格納したメモリからパスメトリック値を読み出し、そのパスメトリック値に基づいて、次の読み出しアドレスを生成することを繰り返し行なう。そして、ビタビ復号では、ＡＣＳ演算の処理時間ｔａとトレースバック処理の処理時間ｔｂとを合計した処理時間「ｔａ＋ｔｂ」が、受信したシンボルデータに関する１クロック分の期間(Ｔｄａｔａ)内になることが要求される。
【００１４】
拘束長Ｋが「７」である一般的なビタビ復号の場合、状態数は、２（７−１）(即ち６４)であり、トレースバック処理を行う対照とする状態の段数は、「７ｘ４」（即ち２８）段となる。これに対し、誤り訂正能力を向上させるために拘束長Ｋを「１４」としたビダビ復号の場合、状態数は、２（１４−１）(即ち８１９２)であり、トレースバック処理を行う際の状態段数は、「１４ｘ４」（即ち５６）段となる。このようにビタビ復号の誤り訂正能力を向上させるために拘束長Ｋを大きくした場合、演算が複雑化して演算量が増大すると共に、ビタビ復号に要する時間が長くなり、受信データに関するシンボルレートが低下する。したがって、ビタビ復号において、誤り訂正能力を向上すると共に、復号処理を高速化する技術への期待が高まってきている。
【００１５】
このような技術に関連する技術として、特許文献１には、ＡＣＳ計算回路を並列に設けて、ＡＣＳ算出処理を並列に行うビタビ復号器が開示されている。このビタビ復号器は、各ＡＣＳ計算回路に対して、夫々２つのパスメトリックメモリを備え、リード／ライト動作を交互に時分割に処理する。  
【００１６】
また、特許文献２には、回路のレイテンシを増加することなくパスメトリックの溢れを防止するビタビ復号回路が開示されている。このビタビ復号回路は、ＡＣＳ回路内に減算回路を設け、主の比較回路において、各パスメトリックが予め定めた閾値以上である場合に警告信号を出力する。そして、各ＡＣＳ回路は、警告信号を基にパスメトリックから予め定めた減算値を減じることによって、同じＡＣＳ処理のクロック内において、減算処理を行う。
【００１７】
また、特許文献３には、演算精度を犠牲にすることなく、実現可能な回路規模で、ＡＣＳ演算の処理効率を向上させるビタビ復号装置が開示されている。このビタビ復号装置におけるパスメトリック記憶装置は、読み出しと書き込みとをＡＣＳ処理のステージ毎に交互に切り替えるので、２バンク構成のパスメトリック記憶回路を有する。このビタビ復号装置では、パスメトリック記憶回路を２個の記憶装置に分割し、パスメトリックをパイプライン処理の順に記憶することにより、連続的にパイプライン処理を行う。
【００１８】
また、特許文献４には、トレースバック処理時に溯るべき状態遷移履歴の数を削減することにより、トレースバック処理を高速化したビタビ復号器が開示されている。このビタビ復号器におけるブランチメトリック処理部は、前時刻の状態から現状態に至るすべてのパスについてブランチメトリック値を算出する。このビタビ復号器におけるＡＣＳ処理部は、ブランチメトリックおよびパスメトリックにより現時刻の各状態へ至るパスの中から最尤パスを選択し、そのパスが選択された場合における復号データ候補、復号データの格納位置、及び、更新されたパスメトリックを出力して、状態遷移履歴を追加する。このビタビ復号器におけるトレースバック処理部は、パスメトリックメモリに記憶されているパスメトリックから、現在の時刻における最尤パスを推定し、復号データ格納位置メモリを参照することにより得られるパスメモリ中のエントリノードから、パスメモリ中の状態遷移履歴を遡る。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開平08-340262号公報
【特許文献２】特開2002-009636号公報
【特許文献３】特開平10-107651号公報
【特許文献４】特開2000-261330号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
本願発明の主たる目的は、ビタビ復号において、誤り訂正能力を向上すると共に、復号処理を高速化することを、上述した特許文献等により開示された技術よりも、さらに高度に実現するビタビ復号装置等を提供することである。
【課題を解決するための手段】
【００２１】
本願発明の一態様に係るビタビ復号装置は、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ（Addition、Compare、Select）演算を、並列あるいは擬似並列に行なうＡＣＳ演算手段と、前記ＡＣＳ演算手段によって求められた前記ブランチメトリック値、及び、前記パスメトリック値を記憶する記憶手段と、前記パスメトリック値に対するトレースバックにおいて、前記記憶手段から前記パスメトリック値を読み出す読み出しアドレスを、前記読み出しアドレスを示すバレルシフタに対して、前回読み出した前記パスメトリック値をシフト入力することにより生成するトレースバック手段と、を備える。
【００２２】
上記目的を達成する他の見地において、本願発明の一態様に係るビタビ復号方法は、ＡＣＳ演算手段によって、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ演算を、並列あるいは擬似並列に行い、記憶手段によって、前記ＡＣＳ演算によって求められた前記ブランチメトリック値、及び、前記パスメトリック値を記憶し、トレースバック手段によって、前記パスメトリック値に対するトレースバックにおいて、前記記憶手段から前記パスメトリック値を読み出す読み出しアドレスを、前記読み出しアドレスを示すバレルシフタに対して、前回読み出した前記パスメトリック値をシフト入力することにより生成する。
【発明の効果】
【００２３】
本願発明は、畳み込み符号を用いて符号化されたデータをビタビ復号によって復号する場合に、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することを可能とする。
【図面の簡単な説明】
【００２４】
【図１】本願発明の第１の実施形態に係るビタビ復号装置１０の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係る相関値生成部１１０に含まれる相関値生成カウンタ１１１の構成を示すブロック図である。
【図３】本願発明の第１の実施形態に係る相関値生成部１１０が、生成した相関値に対して行なう重み付けの一例を示す図である。
【図４】本願発明の第１の実施形態に係るＡＣＳ演算部１２１乃至１２４が並列に行うＡＣＳ演算における、データを読み出してから処理結果を書き込むまでの流れを表す図である。
【図５】本願発明の第１の実施形態に係るＡＣＳ演算部１２１乃至１２４が、ＡＣＳ演算によってブランチメトリック値あるいはパスメトリック値を算出する順番を表す図である。
【図６】本願発明の第１の実施形態に係るＡＣＳ演算部１２１によるブランチメトリック値を算出する処理を説明する図である。
【図７】本願発明の第１の実施形態に係るパスメトリックメモリ制御部１５０によるトレースバック処理を行う構成を例示する図である。
【図８】本願発明の第１の実施形態に係るビタビ復号装置１０の動作を示すフローチャートである。
【図９】本願発明の第２の実施形態に係るビタビ復号装置２０の構成を示すブロック図である。
【図１０】一般的なビタビ復号の概要を説明する図である。
【図１１】一般的なビタビ復号におけるＡＣＳ演算処理の一例を説明する図である。
【図１２】一般的なビタビ復号におけるトレースバック処理の一例を説明する図である。
【図１３】複数のＡＣＳ演算によるブランチメトリックメモリに対する読み出し制御に競合が発生する場合を例示する図である。
【発明を実施するための形態】
【００２５】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００２６】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係るビタビ復号装置１０の構成を概念的に示すブロック図である。図1（その他の図面も同様）において、各構成要素間におけるデータの入出力の方向は、各構成要素を接続する矢印の方向に限定されないこととする。本実施形態に係るビタビ復号装置１０は、畳み込み符号を用いて符号化された受信データを、ビタビ復号によって復号する装置である。本実施形態に係るビタビ復号装置１０が行なうビタビ復号の拘束長Ｋは「１４」とするが、拘束長Ｋは「１４」に限定されない。ビタビ復号には、軟判定復号を用いる場合と硬判定復号を用いる場合とがあるが、本実施形態に係るビタビ復号装置１０は、一例として軟判定復号を用いることとする。軟判定復号及び硬判定復号については周知であるので、その詳細な説明は省略する。
【００２７】
本実施形態に係るビタビ復号装置１０は、相関値生成部１１０、４個のＡＣＳ演算部１２１乃至１２４、最尤アドレス生成部１３０、ブランチメトリックメモリ制御部１４０、ブランチメトリックメモリ１４１Ａ及び１４１Ｂ、パスメトリックメモリ制御部１５０、及び、パスメトリックメモリ１５１を備えている。以下、これら各構成の動作（機能）について、順番に説明する。
【００２８】
＜相関値生成部１１０＞
相関値生成部１１０には、畳み込み符号を用いて符号化された受信データ（入力情報）として、Ｐｃｈ（Ｐチャネル）軟判定データ（軟判定情報）とＱｃｈ（Ｑチャネル）軟判定データ（軟判定情報）とが入力される。本実施形態では、拘束長Ｋを「１４」とするので、相関値生成部１１０は、１４ビットの相関値生成カウンタのカウント値から、生成多項式「（Ｐｃｈ，Ｑｃｈ）＝（２１６７５ｏｃｔ，２７１２３ｏｃｔ）」（但しｏｃｔは８進数を表す）に従って、２Ｋ（即ち１６３８４）通りの相関値を生成する。生成多項式については、本願の技術領域において周知であるので、その詳細な説明は省略する。
【００２９】
図２は、本実施形態に係る相関値生成部１１０が含む相関値生成カウンタ１１１（図１には不図示）の構成を概念的に示すブロック図である。相関値生成部１１０は、１４ビット（第０ビット乃至第１３ビット）の相関値生成カウンタ１１１によって生成される後半（即ち８１９２〜１６３８３カウント目）の相関値を、図２に例示する通り、０〜８１９１カウントにおいて生成する相関値を反転することによって生成可能である。したがって、相関値生成部１１０は、図２に例示する通り、相関値生成に用いる相関値生成カウンタ１１１のＭＳＢ（Most Significant Bit）（即ち第１３ビット）を使用せずに、第０ビットから第１２ビットまでの相関値生成カウンタ１１１による０〜８１９１カウント値より、前述した生成多項式に従って、Ｐｃｈの相関値（Ｐ）及びＱｃｈの相関値（Ｑ）を生成する。そして、相関値生成部１１０は、０〜８１９１カウントにおける相関値（Ｐ）及び相関値（Ｑ）を反転した値を、８１９２〜１６３８３カウントにおける相関値として生成する。
【００３０】
相関値生成部１１０は、また、後述する４つのＡＣＳ演算部１２１乃至１２４によるＡＣＳ演算の並列処理化に応じて、並列処理数が「４」であることから、相関値生成カウンタ１１１のＭＳＢに続く上位２ビットを使用しなくてもよい。相関値生成部１１０は、使用しないビットによって省略されるカウントにおける相関値に関しては、前述した生成多項式に従い、使用するビットにより生成する相関値に対して、正転、反転制御することによって、その値を生成する。即ち、相関値生成部１１０は、ＡＣＳ演算が４並列に処理される場合、図２に示す通り相関値生成カウンタ１１１におけるＭＳＢ、第１２ビット，及び、第１１ビットを使用せずに、相関値生成カウンタ１１１による０〜２０４７カウント値により、４つのＡＣＳ演算部１２１乃至１２４に入力する相関値を生成する。
【００３１】
本実施形態に係るビタビ復号装置１０が例えば８個のＡＣＳ演算部を備えることによって、ＡＣＳ演算を８並列処理する場合、図２に示す通り、相関値生成部１１０は、相関値生成カウンタにおけるＭＳＢから第１０ビットまでの上位４ビットを使用しなくてもよい。同様に、ビタビ復号装置１０が例えば１６個のＡＣＳ演算部を備えることによって、ＡＣＳ演算を１６並列処理する場合、相関値生成部１１０は、相関値生成カウンタにおけるＭＳＢから第９ビットまでの上位５ビットを使用しなくてもよい。
【００３２】
相関値生成部１１０は、例えば図３に示す通りに、受信したシンボルデータが示す、「１」である確からしさの度合い、及び「０」である確からしさの度合いに基づいて、生成した相関値に対して、重み付けを行う。相関値生成部１１０は、例えば、受信したシンボルデータが「１１１」を表す場合、相関値「１」に対する重み付けを最大とし、相関値「０」に対する重み付けを最小とするように重み付けを行なう。相関値生成部１１０は、その逆に、受信したシンボルデータが「０００」を表す場合、相関値「０」に対する重み付けを最大とし、相関値「１」に対する重み付けを最小とするように重み付けを行なう。相関値生成部１１０は、重み付けした相関値を、ＡＣＳ演算部１２１乃至１２４に入力する。
【００３３】
＜ＡＣＳ演算部１２１乃至１２４＞
図１に示すＡＣＳ演算部１２１乃至１２４は、ＡＣＳ演算を４並列処理することによって、受信したシンボルデータに関する２Ｋ−１(＝８１９２)個のブランチメトリック値を算出する。図４は、本実施形態に係るＡＣＳ演算部１２１乃至１２４が並列に行うＡＣＳ演算における、処理に必要となるデータを読み出してから処理結果を書き込むまでの流れを表す図である。図４は、ＡＣＳ演算によるブランチメトリック値を算出する場合を示すが、ＡＣＳ演算によるパスメトリック値を算出する場合も同様である。
【００３４】
図４に示す通り、ＡＣＳ演算部１２１は、前回のシンボルデータに関するブランチメトリック値ｍ０（以降「ブランチメトリック値」を省略して記載する場合がある）とｍ４０９６とを用いて、新たに受信したシンボルデータに関するブランチメトリック値Ｍ０（以降「ブランチメトリック値」を省略して記載する場合がある）とＭ１とを、ＡＣＳ演算を行なうことによって算出する。ＡＣＳ演算部１２１は、ｍ０〜ｍ１０２３、及び、ｍ４０９６〜ｍ５１１９を用いて、Ｍ０〜Ｍ２０４７（即ち、Ｍ０〜Ｍ８１９１のうちの先頭から１／４の部分）を算出する。ＡＣＳ演算部１２１は、算出したＭ０〜Ｍ１０２３を、ブランチメトリックメモリ１４１Ｂ−１に格納し、算出したＭ１０２４〜Ｍ２０４７を、ブランチメトリックメモリ１４１Ｂ−２に格納する。そして、Ｍ０〜Ｍ２０４７の算出に用いられるｍ０〜ｍ１０２３、及び、ｍ４０９６〜ｍ５１１９は、前回のシンボルデータに関してＡＣＳ演算部１２１乃至１２４がＡＣＳ演算を行なった結果として、ブランチメトリックメモリ１４１Ａ−１に格納されている。この場合、ブランチメモリックメモリ１４１Ａ−１から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ＡＣＳ演算部１２１乃至１２４のうちのＡＣＳ演算部１２１のみである。即ち、ＡＣＳ演算部１２１とブランチメトリックメモリ１４１Ａ−１とは、ブランチメトリック値の読み出しに関して、１対１に紐付けされた状態にある。
【００３５】
同様に、ＡＣＳ演算部１２２は、ブランチメトリックメモリ１４１Ａ−２に格納されているｍ１０２４〜ｍ２０４７、及び、ｍ５１２０〜ｍ６１４３を使用して、Ｍ２０４８〜Ｍ４０９５を算出する。ＡＣＳ演算部１２２は、算出したＭ２０４８〜Ｍ３０７１を、ブランチメトリックメモリ１４１Ｂ−３に格納し、算出したＭ３０７２〜Ｍ４０９５を、ブランチメトリックメモリ１４１Ｂ−４に格納する。ブランチメモリックメモリ１４１Ａ−２から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ＡＣＳ演算部１２１乃至１２４のうちのＡＣＳ演算部１２２のみであるので、ＡＣＳ演算部１２２とブランチメトリックメモリ１４１Ａ−２とは、ブランチメトリック値の読み出しに関して、１対１に紐付けされた状態にある。
【００３６】
同様に、ＡＣＳ演算部１２３は、ブランチメトリックメモリ１４１Ａ−３に格納されているｍ２０４８〜ｍ３０７１、及び、ｍ６１４４〜ｍ７１６７を使用して、Ｍ４０９６〜Ｍ６１４３を算出する。ＡＣＳ演算部１２３は、算出したＭ４０９６〜Ｍ５１１９を、ブランチメトリックメモリ１４１Ｂ−１に格納し、算出したＭ５１２０〜Ｍ６１４３を、ブランチメトリックメモリ１４１Ｂ−２に格納する。ブランチメモリックメモリ１４１Ａ−３から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ＡＣＳ演算部１２１乃至１２４のうちのＡＣＳ演算部１２３のみであるので、ＡＣＳ演算部１２３とブランチメトリックメモリ１４１Ａ−３とは、ブランチメトリック値の読み出しに関して、１対１に紐付けされた状態にある。
【００３７】
同様に、ＡＣＳ演算部１２４は、ブランチメトリックメモリ１４１Ａ−４に格納されているｍ３０７２〜ｍ４０９５、及び、ｍ７１６８〜ｍ８１９１を使用して、Ｍ６１４４〜Ｍ８１９１を算出する。ＡＣＳ演算部１２４は、算出したＭ６１４４〜Ｍ７１６７を、ブランチメトリックメモリ１４１Ｂ−３に格納し、算出したＭ５１２０〜Ｍ６１４３を、ブランチメトリックメモリ１４１Ｂ−４に格納する。ブランチメモリックメモリ１４１Ａ−４から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ＡＣＳ演算部１２１乃至１２４のうちのＡＣＳ演算部１２４のみであるので、ＡＣＳ演算部１２４とブランチメトリックメモリ１４１Ａ−４とは、ブランチメトリック値の読み出しに関して、紐付けされた状態にある。
【００３８】
図５は、本実施形態に係るＡＣＳ演算部１２１乃至１２４が、ＡＣＳ演算によって２Ｋ−１(＝８１９２)個のブランチメトリック値あるいはパスメトリック値を算出する（算出結果をブランチメトリックメモリ１４１Ａ及び１４１Ｂ、あるいはパスメトリックメモリ１５１に書き込む）順番を表す図である。尚、図５において、「２＾（Ｋ−１）」における「＾」は、べき乗を表す演算子である（以降の図面においても同様）。
【００３９】
図５に示す通り、ＡＣＳ演算部１２１は、Ｍ０〜Ｍ２０４７を求めるＡＣＳ演算を、Ｍ０から順番に行なう。ＡＣＳ演算部１２２は、Ｍ２０４８〜Ｍ４０９５を求めるＡＣＳ演算を、Ｍ２０４８から順番に行なう。ＡＣＳ演算部１２３は、Ｍ４０９６〜Ｍ６１４３を求めるＡＣＳ演算を、Ｍ５１２０からＭ６１４３まで順番に行なったのち、Ｍ４０９６からＭ５１１９まで順番に行なう。ＡＣＳ演算部１２４は、Ｍ７１６８〜Ｍ８１９１を求めるＡＣＳ演算を、Ｍ７１６８からＭ８１９１まで順番に行なったのち、Ｍ６１４４からＭ７１６７まで順番に行なう。
【００４０】
このように、ＡＣＳ演算部１２１及び１２２は、算出対象とするブランチメトリック値について、先頭から順番に算出するのに対して、ＡＣＳ演算部１２３及び１２４は、算出対象とする２０４８個のブランチメトリック値について、後半部の１０２４個のブランチメトリック値に対するＡＣＳ演算を前半に行なったあとに、前半部の１０２４個のブランチメトリック値に対するＡＣＳ演算を後半に行なう。ＡＣＳ演算部１２１乃至１２４がこのような順番でＡＣＳ演算を行なうのは、ＡＣＳ演算部１２１及び１２４による、ブランチメトリックメモリ１４１Ｂ−１乃至１４１Ｂ−４への書き込み制御において、競合が発生することを回避することを目的とする。
【００４１】
即ち、例えば、ＡＣＳ演算部１２１により算出されたＭ０とＡＣＳ演算部１２３により算出されたＭ４０９６の格納先は、図４に示す通り、いずれもブランチメトリックメモリ１４１Ｂ−１である。したがって、ＡＣＳ演算部１２３がＭ４０９６から順番にＡＣＳ演算を行なった場合、ブランチメトリックメモリ１４１Ｂ−１への書き込みに関して、ＡＣＳ演算部１２１とＡＣＳ演算部１２３との間において競合が発生する。本実施形態に係るＡＣＳ演算部１２３が最初に算出するＭ５１２０の格納先は、図４に示す通り、ブランチメトリックメモリ１４１Ｂ−２であるので、この場合は、ＡＣＳ演算部１２１との間で書き込みに関する競合は発生しない。
【００４２】
このように、ＡＣＳ演算部１２１乃至１２４は、図４及び図５に示す通りにＡＣＳ演算を行なうことによって、ＡＣＳ演算の並列処理を効率よく行なうことができる。
【００４３】
図６は、本実施形態に係るＡＣＳ演算部１２１が、ＡＣＳ演算によってブランチメトリック値Ｍ０乃至Ｍ３を算出する処理の詳細を説明する図である。ＡＣＳ演算部１２２乃至１２４がブランチメトリック値も算出する処理も以下に説明するＡＣＳ演算部１２１の手順と同様である。
【００４４】
ＡＣＳ演算部１２１は、図６に示す通り、後述するブランチメトリックメモリ制御部１４０による制御動作を介して、ブランチメトリックメモリ１４１Ａからビタビ復号動作クロック毎に連続して読み出した、２つのブランチメトリック値を保持する期間を、２値一組でビタビ復号動作クロックの２倍のクロック幅（期間）に伸長する。ＡＣＳ演算部１２１は、例えば、図４に例示する通り、ブランチメトリックメモリ１４１Ａ−１におけるアドレス０からブランチメトリック値ｍ０を読み出し、ブランチメトリックメモリ１４１Ａ−１におけるアドレス「２（Ｋ−１）／４」（＝１０２４）からブランチメトリック値ｍ４０９６を読み出す。そして、ＡＣＳ演算部１２１は、読み出したｍ０及びｍ４０９６を２値一組で、例えば、ビタビ復号動作クロックの２倍のクロック幅を有するクロックに同期して動作する、内包するレジスタ（図１等には不図示）に保持する。ＡＣＳ演算部１２１は、次にブランチメトリックメモリ１４１Ａ−１から読み出すｍ１及びｍ４０９７についても、同様に、その保持期間を２値一組で、ビタビ復号動作クロックの２倍のクロック幅に伸長する。
【００４５】
ＡＣＳ演算部１２１（ＡＣＳ１２２乃至１２４も同様）は、保持期間を伸長した２値により表される、前回に受信したシンボルデータのブランチメトリック値と、相関値生成部１１０によってビタビ復号動作クロック毎に生成されてＡＣＳ演算部１２１に入力される、重み付けされた相関値を加算することによって、２値の新しいブランチメトリック値を求める。ＡＣＳ演算部１２１は、求めた２値の新しいブランチメトリック値を比較し、大きい方の値の新しいブランチメトリック値を新たなブランチメトリック値として、ブランチメトリックメモリ制御部１４０による制御動作を介し、ブランチメトリックメモリ１４１Ｂに格納する。
【００４６】
より具体的には、図６に示す通り、ＡＣＳ演算部１２１は、相関値Ｐ０及びＱ０を用いて新たなブランチメトリック値を算出する際に、計算式「Ｍ０＿１＝ｍ０＋Ｐ０」、及び、「Ｍ０＿２＝ｍ４０９６＋Ｑ０」に従い、「Ｍ０＿１」及び「Ｍ０＿２」を算出する。ＡＣＳ演算部１２１は、算出した「Ｍ０＿１」及び「Ｍ０＿２」のうち、大きい方を新たなブランチメトリック値Ｍ０として求める。ＡＣＳ演算部１２１は、相関値Ｐ１及びＱ１を用いて新たなブランチメトリック値を算出する際に、計算式「Ｍ１＿１＝ｍ０＋Ｐ１」、「Ｍ１＿２＝ｍ４０９６＋Ｑ１」により、「Ｍ１＿１」及び「Ｍ１＿２」を算出する。ＡＣＳ演算部１２１は、算出した「Ｍ１＿１」及び「Ｍ１＿２」のうち、大きい方を新たなブランチメトリック値Ｍ１として求める。ＡＣＳ演算部１２１は、同様に、ｍ１、ｍ４０９７、Ｐ２、Ｑ２、Ｐ３、Ｑ３を用いて、Ｍ２及びＭ３を求める。ＡＣＳ演算部１２１は、Ｍ４以降のブランチメトリック値についても、同様に求める。
【００４７】
ＡＣＳ演算部１２１乃至１２４は、また、ブランチメトリック値に関する比較結果をパスメトリック値として、後述するパスメトリックメモリ制御部１５０による制御動作を介し、パスメトリックメモリ１５１に格納する。ＡＣＳ演算部１２１乃至１２４による、パスメトリック値を求める演算順は、上述したブランチメトリックのときと同様である。
【００４８】
ＡＣＳ演算部１２１乃至１２４は、後述する最尤アドレス生成部１３０から減算制御情報を入力された場合、ブランチメトリックメモリ１４１Ａ及び１４１Ｂから読み出された前回に受信したシンボルデータに関するブランチメトリック値に対して、特定の値を減算する減算制御を行うことにより、新しいブランチメトリック値を生成する。ＡＣＳ演算部１２１乃至１２４は、これにより、ブランチメトリック値に関するオーバーフローの発生を回避する。
【００４９】
＜ブランチメトリックメモリ１４１Ａ及び１４１Ｂ＞
本実施形態に係るビタビ復号装置１０は、図１に示す通り、ＡＣＳ演算部１２１乃至１２４によって求められたブランチメトリック値を格納するメモリとして、ブランチメトリックメモリ１４１Ａ及び１４１Ｂを備える。ブランチメトリックメモリ１４１Ａ及び１４１Ｂは、少なくともＡＣＳ演算の並列処理数に分割され、図４を用いて上述した通り、ブランチメトリック値の書き込み及び読み出し制御において、ＡＣＳ演算部１２１乃至１２４の個々と、１対１に紐付けられた構成を有する。即ち、ブランチメトリックメモリ１４１Ａは、ブランチメトリックメモリ１４１Ａ−１乃至１４１Ａ−４を構成し、ブランチメトリックメモリ１４１Ｂは、ブランチメトリックメモリ１４１Ｂ−１乃至１４１Ｂ−４を構成する。そして、ブランチメトリックメモリ１４１Ａ−１乃至１４１Ａ−４の各々は、ブランチメトリック値の読み出しに関して、順に、ＡＣＳ演算部１２１乃至１２４に紐付けられている。
【００５０】
ＡＣＳ演算部１２１乃至１２４により求められたブランチメトリック値のビット数がｍビット（ｍは任意の自然数）である場合、ブランチメトリックメモリ１４１Ａ及び１４１Ｂは、それぞれ、ｍビットのワードを２０４８個分格納可能な容量を有するメモリを４個含むメモリである。ブランチメトリックメモリ１４１Ａ及び１４１Ｂは、ブランチメトリックメモリ制御部１４０による制御動作を介してＡＣＳ演算部１２１乃至１２４により並列処理される、前回に受信したシンボルデータのブランチメトリック値に関する読み出し制御が競合しないように、上述した様なＡＣＳ演算部１２１乃至１２４と紐付けされた関係を構成し、受信したシンボルデータに関する新たな２Ｋ−１個のブランチメトリック値を格納する。
【００５１】
ブランチメトリックメモリ１４１Ａ及び１４１Ｂは、ブランチメトリックメモリ制御部１４０による制御により、受信するシンボルデータ毎に、書き込み/読み出し制御が交互に切り替わる。即ち、受信したあるシンボルデータに関して、ＡＣＳ演算部１２１乃至１２４により求められた新しいブランチメトリック値をブランチメトリックメモリ１４１Ｂが格納する場合、ブランチメトリックメモリ１４１Ａは、その新しいブランチメトリック値を求めるために必要となる、前回に受信したシンボルデータに関するブランチメトリック値を、ＡＣＳ演算部１２１乃至１２４に出力する。そして、その次に受信したシンボルデータに関するＡＣＳ演算では、ブランチメトリックメモリ１４１Ｂが、前回に受信したシンボルデータに関するブランチメトリック値をＡＣＳ演算部１２１乃至１２４に出力し、ブランチメトリックメモリ１４１Ａが新しいブランチメトリック値を格納する。
【００５２】
尚、ブランチメトリックメモリ１４１Ａ及び１４１Ｂのビット数およびワード数は可変であり、ビタビ復号装置１０を搭載するデバイスの状況などに応じて変更可能である。
【００５３】
＜ブランチメトリックメモリ制御部１４０＞
図１に示すブランチメトリックメモリ制御部１４０は、ＡＣＳ演算部１２１乃至１２４により求められた、受信したシンボルデータに関する新しいブランチメトリック値が入力される。ブランチメトリックメモリ制御部１４０は、ブランチメトリックメモリ１４１Ａ及び１４１Ｂのうちの一方に、受信したシンボルデータに関する新しいブランチメトリック値を書き込む。ブランチメトリックメモリ制御部１４０は、ブランチメトリックメモリ１４１Ａ及び１４１Ｂのうちのもう一方に、ＡＣＳ演算部１２１乃至１２４において受信したシンボルデータに関する新しいブランチメトリック値を求める際に必要となる、前回に受信したシンボルデータに関するブランチメトリック値を読み出す。即ち、ブランチメトリックメモリ制御部１４０は、上述した通り、ブランチメトリックメモリ１４１Ａ及び１４１Ｂに対する書き込み制御と読み出し制御とを、シンボルデータが入力される毎に、交互に切り替える制御を行う。
【００５４】
ブランチメトリックメモリ制御部１４０は、図４及び図５に示す通り、ＡＣＳ演算部１２１乃至１２４が並列処理することにより求められる２Ｋ−１（＝８１９２）個のブランチメトリック値のうちの前半部分（即ちＭ０〜Ｍ４０９５）と後半部分（即ちＭ４０９６〜Ｍ８１９１）とで異なるＡＣＳ演算の順序に従って、ブランチメトリックメモリ１４１Ａ及び１４１Ｂに対する書き込み制御を行う。即ち、ブランチメトリックメモリ制御部１４０は、図４に示す通り、２Ｋ−１個のブランチメトリック値の前半部分を求めるＡＣＳ演算を行うＡＣＳ１２１及び１２２から入力されたブランチメトリック値を、それぞれ２Ｋ−１／４（＝２０４８）個（「／」は除算を表す演算子）のブランチメトリック値を格納するブランチメトリックメモリ１４１Ｂ−１及び１４１Ｂ−３における先頭のアドレス（即ちアドレス０）から書き込み制御を行う。
【００５５】
そして、ブランチメトリックメモリ制御部１４０は、２Ｋ−１個のブランチメトリック値の後半部分を求めるＡＣＳ演算を行うＡＣＳ１２３及び１２４から入力されたブランチメトリック値を、それぞれ２Ｋ−１／４（＝２０４８）個のブランチメトリック値を格納するブランチメトリックメモリ１４１Ｂ−２及び１４１Ｂ−４における各メモリ領域の後半部分の先頭に位置するアドレス（即ちアドレス１０２４）から書き込み制御を行う。
【００５６】
ブランチメトリックメモリ制御部１４０は、図４に示すように、ＡＣＳ演算部１２１乃至１２４の個々における（２Ｋ−１／（４ｘ２））／２（＝５１２）個のブランチメトリック値に関するＡＣＳ演算が経過した時点で、ＡＣＳ１２１及びＡＣＳ１２２により入力されたブランチメトリック値の格納先を、ブランチメトリックメモリ１４１Ｂ−２および１４１Ｂ−４における先頭のアドレス（即ちアドレス０）に切り替える。そして、ブランチメトリックメモリ制御部１４０は、その格納先に、ＡＣＳ１２１及びＡＣＳ１２２から入力されたブランチメトリック値を格納する。
【００５７】
ブランチメトリックメモリ制御部１４０は、図４に示すように、ＡＣＳ演算部１２１乃至１２４の個々における（２Ｋ−１／（４ｘ２））／２（＝５１２）個のブランチメトリック値に関するＡＣＳ演算が経過した時点で、ＡＣＳ１２３及びＡＣＳ１２４からのブランチメトリック値の格納先を、ブランチメトリックメモリ１４１Ｂ−１および１４１Ｂ−３が有する、各メモリ領域における後半部分の先頭のアドレス（即ちアドレス１０２４）に切り替える。そして、ブランチメトリックメモリ制御部１４０は、その格納先に、ＡＣＳ１２３及びＡＣＳ１２４から入力されたブランチメトリック値を格納する。
【００５８】
＜パスメトリックメモリ１５１＞
図１に示すパスメトリックメモリ１５１は、受信したシンボルデータ毎に２Ｋ−１個のパスメトリック値を、これまでに受信した５６（＝１４ｘ４）個のシンボルデータに関して格納する容量を持つメモリである。これは、ビタビ復号において、パスメトリック値を遡る受信シンボルの数は、通常、拘束長Ｋの４倍であり、本実施形態に係る拘束長Ｋが「１４」であることに基づく。即ち、パスメトリックメモリ１５１は、個々に２Ｋ−１個のパスメトリック値を格納可能なパスメトリックメモリ１５１−１乃至１５１−５６を構成する。
【００５９】
また、パスメトリックメモリ１５１は、上述したブランチメトリックメモリ１４１Ａ及び１４１Ｂと同様に、ＡＣＳ演算部１２１乃至１２４による並列処理に応じた構成を有する。即ち、パスメトリックメモリ１５１は、２Ｋ−１個のパスメトリック値を格納するパスメトリックメモリ１５１−１乃至１５１−５６の個々が、並列処理数（例えば「４」）に分割され、分割された個々のメモリ領域（図１には不図示）が、パスメトリック値の書き込み制御において、並列処理するＡＣＳ演算部１２１乃至１２４と１対１に紐付けられた構成を有する。
【００６０】
パスメトリックメモリ１５１は、後述するパスメトリックメモリ制御部１５０により、ＡＣＳ演算部１２１乃至１２４から出力されるパスメトリック値に関する書き込み及び読み出しを制御される。パスメトリックメモリ１５１に対するパスメトリック値の書き込み制御及び読み出し制御は、受信した１つのシンボルデータに関する期間（クロック）内で切り替わる。ＡＣＳ演算部１２１乃至１２４によって生成された２Ｋ−１個のパスメトリック値は、パスメトリックメモリ１５１−１乃至１５１−５６のいずれかに書き込まれる。
【００６１】
パスメトリックメモリ１５１−１乃至１５１−５６は、リングバッファとして機能する。即ち、パスメトリックメモリ１５１−ｉ（ｉは１乃至５６のいずれかの整数）が、受信したシンボルデータに関する２Ｋ−１個のパスメトリック値を格納した後、パスメトリックメモリ１５１−（ｉ＋１）は、次に受信したシンボルデータに関する２Ｋ−１個のパスメトリック値を格納する。
【００６２】
パスメトリックメモリ１５１に格納されたパスメトリック値に対する読み出し制御は、当該パスメトリック値に対する書き込み制御が完了した後、最尤アドレス生成部１３０により生成される最尤アドレス（トレースバック処理における起点となるアドレス）に基づいて、パスメトリックメモリ制御部１５０がトレースバック処理を行う際に行われる。このトレースバック処理におけるパスメトリック値に対する読み出し制御は、受信したシンボルデータ当たり２Ｋ−１個あるパスメトリック値の内から1つのパスメトリック値を選択して読み出される制御である。この1つのパスメトリック値を選択して読み出される制御は、パスメトリックメモリ１５１−１乃至１５１−５６の全てに対して、順次行なわれる。
【００６３】
＜パスメトリックメモリ制御部１５０＞
図１に示すパスメトリックメモリ制御部１５０には、ＡＣＳ演算部１２１乃至１２４により生成されたパスメトリック値と、最尤アドレス生成部１３０により生成された最尤アドレスとが入力される。パスメトリックメモリ制御部１５０は、パスメトリックメモリ１５１に対するパスメトリック値の書き込み制御を行う。
【００６４】
パスメトリックメモリ制御部１５０は、また、ビタビ復号におけるトレースバック処理を行うトレースバック処理部としての機能を備える。パスメトリックメモリ制御部１５０は、入力された最尤アドレスを用いたトレースバック処理を行う際に、パスメトリックメモリ１５１に格納されたパスメトリック値を読み出す読み出し制御を行う。そして、パスメトリックメモリ制御部１５０は、トレースバック処理を完了した時に、５６個のシンボルデータに関するパスメトリック値を遡った結果として、ビタビ復号データを生成して出力する。
【００６５】
パスメトリックメモリ制御部１５０は、各々２Ｋ−１個のパスメトリック値を格納するパスメトリックメモリ１５１−１乃至１５１−５６のいずれかを、受信したシンボルデータ毎に選択し、選択したパスメトリックメモリ１５１−ｉに、ＡＣＳ演算部１２１乃至１２４により生成された２Ｋ−１個のパスメトリック値を格納する。パスメトリックメモリ制御部１５０は、次に受信したシンボルデータに関する２Ｋ−１個のパスメトリック値を、パスメトリックメモリ１５１−（ｉ＋１）に格納する。
【００６６】
パスメトリックメモリ制御部１５０によるパスメトリックメモリ１５１に対する書き込み制御は、図４に示すブランチメトリックメモリ１４１Ａ及び１４１Ｂに対する書き込み制御と同様である。即ち、パスメトリックメモリ制御部１５０は、ＡＣＳ１２１及び１２２により求められた２Ｋ−１個の前半部分のパスメトリック値を、並列処理数に分割された記憶領域を有するパスメトリックメモリ１５１−ｉにおけるいずれか２つの記憶領域に対して、先頭のアドレス（図４に示す例における、ブランチメトリックメモリ１４１Ｂ−１あるいは１４１Ｂ−３におけるアドレス０に相当）から書き込む。そして、パスメトリックメモリ制御部１５０は、ＡＣＳ１２３及び１２４により求められた２Ｋ−１個の後半部分のパスメトリック値を、書き込み先のパスメトリックメモリ１５１−ｉにおける各メモリ領域の後半部分の先頭に位置するアドレス（図４に示す例における、ブランチメトリックメモリ１４１Ｂ−２あるいは１４１Ｂ−４におけるアドレス１０２４に相当）から書き込み制御を行う。
【００６７】
パスメトリックメモリ制御部１５０は、最も確からしいパスを遡るトレースバック処理において、パスメトリックメモリ１５１からパスメトリック値を読み出す。図７は、パスメトリックメモリ制御部１５０によるトレースバック処理を行う構成（即ち、トレースバック処理部としての構成）を例示する図である。パスメトリックメモリ制御部１５０は、トレースバック処理部として、読み出しアドレス生成部１５２、及び、選択部１５３を備えている。
【００６８】
読み出しアドレス生成部１５２は、トレースバック処理におけるパスメトリックメモリ１５１に対する読み出しアドレスを生成し、図７に例示する通り、バレルシフタを構成する。但しバレルシフタは、ワードデータを、ある特定のビット数分、シフトすることが可能な論理回路である。本実施形態に係る読み出しアドレス生成部１５２は、セレクタ（マルチプレクサ）を表す「ＳＥＬ」と、シフトレジスタを表す「Ｄ−ＦＦ  Ｓｈｉｆｔ」とを、図７に示す通りに接続することによって、バレルシフタを構成する。但し、バレルシフタの構成は、図７に示す構成に限定されない。
【００６９】
パスメトリックメモリ制御部１５０は、トレースバック処理を開始する際に、最尤アドレス生成部１３０により生成された最尤アドレスを、開始アドレスとして読み出しアドレス生成部１５２にセットする。パスメトリックメモリ制御部１５０は、読み出しアドレス生成部１５２が示す読み出しアドレスに基づいて、パスメトリックメモリ１５１−１乃至１５１−５６のいずれかから、パスメトリック値を読み出す。
【００７０】
パスメトリックメモリ制御部１５０における選択部１５３は、最尤アドレスに基づいて、読み出したパスメトリック値のうちの１つを選択し、選択したパスメトリック値を、読み出しアドレス生成部１５２にシフト入力する。パスメトリックメモリ制御部１５０は、これにより、次（２番目）に遡る（読み出す）読み出しアドレスを生成し、当該読み出しアドレスが示す、パスメトリックメモリ１５１−１乃至１５１−５６のいずれかから、パスメトリック値を読み出す。選択部１５３は、２番目の読み出しアドレスに基づいて、読み出したパスメトリック値のうちの１つを選択し、選択したパスメトリック値を、読み出しアドレス生成部１５２にシフト入力する。パスメトリックメモリ制御部１５０は、これにより、その次（３番目）に遡る（読み出す）読み出しアドレスを生成し、当該読み出しアドレスが示す、パスメトリックメモリ１５１−１乃至１５１−５６のいずれかから、パスメトリック値を読み出す。
【００７１】
パスメトリックメモリ制御部１５０は、このような読み出し制御と選択制御とにより得られるパスメトリック値に基づいて、次々とパスメトリック値を遡る。パスメトリックメモリ制御部１５０は、上述した読み出し制御と選択制御とを５６回実行し、パスメトリックメモリ１５１−１乃至１５１−５６の個々に対して、１回ずつの読み出し制御を行うことによって、トレースバック処理を実行する。
【００７２】
パスメトリックメモリ制御部１５０は、トレースバック処理を完了したのち、５６個のシンボルデータに関するパスメトリック値を遡ったトレースバック処理の最終結果である、読み出しアドレス生成部１５２にシフト入力したパスメトリック値を、ビタビ復号データとして出力する。
【００７３】
＜最尤アドレス生成部１３０＞
図１に示す最尤アドレス生成部１３０は、ＡＣＳ演算部１２１乃至１２４により求められた、新しいブランチメトリック値の最大値に関する選択情報（最大値選択情報）が入力される。最尤アドレス生成部１３０はまた、ブランチメトリックメモリ制御部１４０が、受信したシンボルデータに関する新しいブランチメトリック値を、ブランチメトリックメモリ１４１Ａあるいは１４１Ｂへ書き込む際の書き込みアドレスが入力される。
【００７４】
最尤アドレス生成部１３０は、ＡＣＳ演算部１２１乃至１２４から入力された４つのブランチメトリック値の最大値から、さらに１つのブランチメトリック値の最大値を、ＡＣＳ演算処理におけるブランチメトリック最大値として求める。最尤アドレス生成部１３０は、これにより、ＡＣＳ演算部１２１乃至１２４から入力された最大値選択情報と、ブランチメトリックメモリ１４１Ａ及び１４１Ｂに対する書き込みアドレスとから、ブランチメトリック最大値が書き込まれたブランチメトリックメモリ１４１Ａあるいは１４１Ｂのアドレス情報を求める。但し当該アドレス情報は、ブランチメトリック最大値に関するパスメトリック値が書き込まれたパスメトリックメモリ１５１のアドレス情報と等しい。
【００７５】
最尤アドレス生成部１３０は、ブランチメトリック最大値を求めることにより得られた最大値選択情報と、ブランチメトリック最大値が書き込まれたブランチメトリックメモリ１４１Ａあるいは１４１Ｂのアドレス情報とに基づいて、パスメトリックメモリ制御部１５０によるレースバック処理において用いられる最尤アドレスを生成し、生成した最尤アドレスをパスメトリックメモリ制御部１５０へ入力する。
【００７６】
最尤アドレス生成部１３０は、また、ＡＣＳ演算部１２１乃至１２４から入力されたブランチメトリック値の最大値と閾値とを比較し、その最大値が閾値以上である場合、ＡＣＳ演算部１２１乃至１２４に対して、減算制御情報を入力する。但し、減算制御情報は、ブランチメトリック値に関するオーバーフローの発生を回避するようにＡＣＳ演算部１２１乃至１２４を制御する情報である。
【００７７】
次に図８のフローチャートを参照して、本実施形態に係るビタビ復号装置１０の動作について詳細に説明する。
【００７８】
相関値生成部１１０は、受信した、畳み込み符号を用いて符号化されたシンボルデータと、相関値生成部１１０の説明において前述した生成多項式と基づいて相関値を生成し、生成した相関値をＡＣＳ演算部１２１乃至１２４へ入力する（ステップＳ１０１）。ＡＣＳ演算部１２１乃至１２４は、入力された相関値と、前回受信したシンボルデータに関するブランチメトリック値及びパスメトリック値とに基づいて、ＡＣＳ演算を並列に実行することによって、ブランチメトリック値、パスメトリック値、ブランチメトリック値の最大値、及び、最大値選択情報を生成する（ステップＳ１０２）。
【００７９】
ＡＣＳ演算部１２１乃至１２４は、生成したブランチメトリック値を、ブランチメトリックメモリ１４１Ａあるいは１４１Ｂへ格納し、生成したパスメトリック値を、パスメトリックメモリ１５１へ格納する（ステップＳ１０３）。最尤アドレス生成部１３０は、ＡＣＳ演算部１２１乃至１２４により生成された最大値選択情報と、ブランチメトリック最大値が書き込まれたアドレス情報とに基づいて最尤アドレスを生成し、最尤アドレスをパスメトリックメモリ制御部１５０へ入力する（ステップＳ１０４）。
【００８０】
パスメトリックメモリ制御部１５０は、トレースバック処理部として、入力された最尤アドレスを、開始アドレスとして読み出しアドレス生成部１５２にセットする（ステップＳ１０５）。パスメトリックメモリ制御部１５０は、ステップＳ１０７の処理を４Ｋ（Ｋは拘束長）回繰り返し実行する（ステップＳ１０６）。ｉ（ｉは１乃至４Ｋのいずれかの整数）回目のトレースバック処理として、読み出しアドレス生成部１５２が示す読み出すアドレスに基づいて、読み出したパスメトリック値の１つを選択し、選択したパスメトリック値を、読み出しアドレス生成部１５２にシフト入力する（ステップＳ１０７）。
【００８１】
ｉが４Ｋ未満の場合、パスメトリックメモリ制御部１５０は、ｉに１を加算してステップＳ１０７の処理を行い、ｉが４Ｋである場合は、処理はステップＳ１０９へ進む（ステップＳ１０８）。パスメトリックメモリ制御部１５０は、読み出しアドレス生成部１５２にシフト入力したパスメトリック値を、ビタビ復号データとして出力し（ステップＳ１０９）、全体の処理は終了する。
【００８２】
本実施形態に係るビタビ復号装置１０は、畳み込み符号を用いて符号化されたデータをビタビ復号によって復号する場合に、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することを可能とする。その理由は、ビタビ復号装置１０は、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ演算を並列に行なうとともに、トレースバック処理において、パスメトリック値を読み出す読み出しアドレスを、その読み出しアドレスを示すバレルシフタに対して、前回読み出したパスメトリック値をシフト入力することにより生成するからである。
【００８３】
以下に、本実施形態に係るビタビ復号装置１０によって実現される効果について、詳細に説明する。
【００８４】
畳み込み符号とビタビ復号とを用いた通信方式では、拘束長Ｋを大きくすることによって、誤り訂正能力を向上することができる。しかしながら、拘束長Ｋを大きくした場合、必要な演算量が増大することにより、受信データに関するシンボルレートが低下するので、通信速度が低下するという問題がある。したがって、ビタビ復号において、誤り訂正能力を向上すると共に、復号処理を高速化することが課題である。
【００８５】
このような問題に対して、本実施形態に係るビタビ復号装置１０は、ＡＣＳ演算部１２１乃至１２４、記憶部としてのブランチメトリックメモリ１４１Ａ及び１４１Ｂ、記憶部としてのパスメトリックメモリ１５１、及び、トレースバック部としてのパスメトリックメモリ制御部１５０を備え、例えば、図１乃至図８を参照して上述する通り動作する。即ち、ＡＣＳ演算部１２１乃至１２４は、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ演算を、並列あるいは擬似並列に行なう。記憶部（ブランチメトリックメモリ１４１Ａ及び１４１Ｂ、及び、パスメトリックメモリ１５１）は、ＡＣＳ演算部１２１乃至１２４によって求められたブランチメトリック値、及び、パスメトリック値を記憶する。トレースバック部（パスメトリックメモリ制御部１５０）は、パスメトリック値に対するトレースバックにおいて、記憶部からパスメトリック値を読み出す読み出しアドレスを、読み出しアドレスを示すバレルシフタに対して、読み出したパスメトリック値をシフト入力することにより生成する。
【００８６】
このように、本実施形態に係るビタビ復号装置１０は、２Ｋ−１回（Ｋが「１４」の場合は８１９２回）のＡＣＳ演算を並列に行なうことによって、ＡＣＳ演算に要する処理時間ｔａを大幅に短縮する。尚、ビタビ復号装置１０は、ＡＣＳ演算部を複数備える代わりに、例えば、ＡＣＳ演算を擬似並列に行なう１つのＡＣＳ演算部を備えてもよい。但し、擬似並列は、例えば時分割等による並列処理のことである。
【００８７】
また、ビタビ復号装置１０は、トレースバックにおいて、パスメトリックメモリ１５１に対する読み出しアドレス（最尤アドレス）を生成する論理回路として、バレルシフタを備える。これにより、本実施形態に係るビタビ復号装置１０は、受信したシンボルデータに関するパスメトリック値を遡る処理において、その処理に要するビタビ復号動作クロックを削減することができる。即ち、トレースバックにおいて、一般的なシフトレジスタを用いて読み出しアドレスを生成する場合、トレースバック処理時間ｔｂは、４Ｋ回（Ｋが「１４」の場合は５６回）のパスメトリックメモリ１５１へのアクセスに要するビタビ復号動作クロック数分の時間と、４Ｋ回の最尤アドレスによるシフト処理に要するビタビ復号動作クロック数分の時間とを合計した値となる。これに対して、バレルシフタを用いて読み出しアドレスを生成する場合、トレースバック処理時間ｔｂは、４Ｋ回のパスメトリックメモリへのアクセスに要するビタビ復号動作クロック数分の時間に短縮される。
【００８８】
このように本実施形態に係るビタビ復号装置１０は、拘束長Ｋが大きいビタビ復号において、ＡＣＳ演算に要する処理時間ｔａと、トレースバック処理時間ｔｂとを短縮することができるので、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することができる。
【００８９】
また、一般的なビタビ復号においては、ブランチメトリック値に関するオーバーフローが発生することによって、ビタビ復号データに誤りが発生する問題がある。一般的なビタビ復号におけるＡＣＳ演算では、受信したシンボルデータに関する２Ｋ個の相関値と、前回のシンボルデータに関する２Ｋ−１個のブランチメトリック値とを加算（Addition）することによって、受信したシンボルデータに関する２Ｋ−１個のブランチメトリック値を生成する。そして、ＡＣＳ演算では、生成した２Ｋ−１個のブランチメトリック値を比較（Compare）したのち、２Ｋ−１個のブランチメトリック値の最小値を検出して、その最小値を最尤値として選択（Select）する。この場合、ブランチメトリック値は加算により求められるので、求めたブランチメトリック値が、ブランチメトリック値を表す有効ビット幅を超えた場合に、オーバーフローが発生する。
【００９０】
このような問題に対して、本実施形態に係る最尤アドレス生成部１３０は、ＡＣＳ演算部１２１乃至１２４から入力されたブランチメトリック値の最大値を閾値と比較して、その最大値が閾値以上である場合に、ＡＣＳ演算において、ブランチメトリックメモリ１４１Ａあるいは１４１Ｂから読み出したブランチメトリック値に対して特定の値を減算するように、ＡＣＳ演算部１２１乃至１２４を制御する。これにより、本実施形態に係るビタビ復号装置１０は、ブランチメトリック値に関するオーバーフローが発生することを回避することができる。
【００９１】
また、本実施形態に係る相関値生成部１１０は、例えば図３に示す通り、受信したシンボルデータが示す、「１」である確からしさの度合い、及び「０」である確からしさの度合いに基づいて、相関値に対する重み付けを行う。即ち、相関値生成部１１０は、受信したシンボルデータが「１」あるいは「０」であることが確からしい場合に、その重み付けを大きくし、シンボルデータが「１」あるいは「０」であることが不確かである場合に、その重み付けを小さくすることによって、最尤値となる値が最大値なるような相関値を、ＡＣＳ演算部１２１乃至１２４へ入力する。したがって、本実施形態に係るビタビ復号装置１０は、最大値を最尤値とすることにより、上述した最大値と閾値との比較に基づくオーバーフローを回避する制御を行うことができる。
【００９２】
また、ＡＣＳ演算を並列に行なう場合、ブランチメトリック値に関するメモリへの配置を工夫しないと、複数のＡＣＳ演算によるメモリアクセスが競合することによって、演算効率が低下する問題がある。図１３は、複数のＡＣＳ演算によるブランチメトリックメモリに対する読み出し制御に競合が発生する場合を例示する図である。図１３に示す例では、例えば、ＡＣＳ演算部１が使用するブランチメトリック値ｍ０と、ＡＣＳ演算部２が使用するブランチメトリック値ｍ１０２４とが、いずれもブランチメトリックメモリＡ−１に配置されているので、ブランチメトリックメモリＡ−１に対する読み出し制御の競合が発生している。
【００９３】
これに対して、本実施形態に係るビタビ復号装置１０では、図４を参照して例示的に説明した通り、複数のＡＣＳ演算によるメモリアクセスが競合しないように、ブランチメトリック値に関するメモリへの配置を工夫している。即ち、例えば、ＡＣＳ演算部１２１が使用するブランチメトリック値は全てブランチメトリックメモリ１４１Ａ−１に、ＡＣＳ演算部１２１が使用するブランチメトリック値は全てブランチメトリックメモリ１４１Ａ−２に配置されている。即ち、本実施形態に係るブランチメトリックメモリ１４１Ａ及び１４１Ｂは、ＡＣＳ演算の並列実行数（例えば「４」）以上に分割された記憶領域であって、他の前記記憶領域との間において、アクセス制御に関する競合が発生しないように構成された複数の記憶領域を含んでいる。そして、ＡＣＳ演算部１２１乃至１２４は、これら記憶領域毎に、ブランチメトリック値（パスメトリック値についても同様）を読み出すＡＣＳ演算がいずれか１つになるように、ＡＣＳ演算により求められたブランチメトリック値（パスメトリック値についても同様）を、ブランチメトリックメモリ１４１Ａあるいは１４１Ｂに格納する。これにより、本実施形態に係るビタビ復号装置１０は、複数のＡＣＳ演算によるメモリアクセスが競合することによって、演算効率が低下することを回避することができる。
【００９４】
また、本実施形態に係るＡＣＳ演算では、図６を参照して例示的に説明した通り、例えば、１回目の演算（新たなブランチメトリック値Ｍ０を求める演算）と、２回目の演算（新たなブランチメトリック値Ｍ１を求める演算）において、いずれも前回のブランチメトリック値ｍ０及びｍ４０９６を使用する。即ち、本実施形態に係るＡＣＳ演算では、連続する２回の演算において、同じ前回のブランチメトリック値を使用する特徴がある。本実施形態に係るＡＣＳ演算部１２１乃至１２４は、このような特徴をふまえて、ビタビ復号動作クロック毎に、連続してブランチメトリックメモリ１４１Ａあるいは１４１Ｂから読み出した２つのブランチメトリック値を使用（保持）する期間を、ビタビ復号動作クロックのクロック幅の２倍の期間に伸長する。そして、ＡＣＳ演算部１２１乃至１２４は、当該２つのブランチメトリック値と、ビタビ復号動作クロック毎に生成された相関値とを使用したＡＣＳ演算を行う。これにより、本実施形態に係るビタビ復号装置１０は、ＡＣＳ演算を効率的に行なうことができる。
【００９５】
＜第２の実施形態＞
図９は、本願発明の第２の実施形態に係るビタビ復号装置２０の構成を概念的に示すブロック図である。
【００９６】
本実施形態に係るビタビ復号装置２０は、ＡＣＳ演算部２１、記憶部２２、及び、トレースバック部２３を備えている。
【００９７】
ＡＣＳ演算部２１は、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、複数のブランチメトリック値２２１及びパスメトリック値２２２に関するＡＣＳ演算を、並列あるいは擬似並列に行なう。
【００９８】
記憶部２２は、ＡＣＳ演算部２１によって求められたブランチメトリック値２２１、及び、パスメトリック値２２２を記憶する。
【００９９】
トレースバック部２３は、パスメトリック値２２２に対するトレースバックにおいて、記憶部２２からパスメトリック値２２２を読み出す読み出しアドレス２３１を、読み出しアドレス２３１を示すバレルシフタ２３０に対して、前回読み出したパスメトリック値２２２をシフト入力することにより生成する。
【０１００】
本実施形態に係るビタビ復号装置１０は、畳み込み符号を用いて符号化されたデータをビタビ復号によって復号する場合に、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することを可能とする。その理由は、ビタビ復号装置２０は、ブランチメトリック値及びパスメトリック値に関する複数のＡＣＳ演算を並列に行なうとともに、トレースバックにおいて、パスメトリック値を読み出す読み出しアドレスを、その読み出しアドレスを示すバレルシフタに対して、前回読み出したパスメトリック値をシフト入力することにより生成するからである。
【０１０１】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【０１０２】
１０    ビタビ復号装置
１１０    相関値生成部
１１１    相関値生成カウンタ
１２１乃至１２４    ＡＣＳ演算部
１３０    最尤アドレス生成部
１４０    ブランチメトリックメモリ制御部
１４１Ａ及び１４１Ｂ    ブランチメトリックメモリ
１５０    パスメトリックメモリ制御部
１５１    パスメトリックメモリ
１５２    読み出しアドレス生成部
２０    ビタビ復号装置
２１    ＡＣＳ演算部
２２    記憶部
２２１    ブランチメトリック値
２２２    パスメトリック値
２３    トレースバック部
２３０    バレルシフタ
２３１    読み出しアドレス
【図１】
2018207248.tif 000003
【図２】
2018207248.tif 000004
【図３】
2018207248.tif 000005
【図４】
2018207248.tif 000006
【図５】
2018207248.tif 000007
【図６】
2018207248.tif 000008
【図７】
2018207248.tif 000009
【図８】
2018207248.tif 000010
【図９】
2018207248.tif 000011
【図１０】
2018207248.tif 000012
【図１１】
2018207248.tif 000013
【図１２】
2018207248.tif 000014
【図１３】
2018207248.tif 000015