マイクロ波通信システム、あるいは、基地局間を通信するシステム等におけるディジタル変調方式を用いた無線通信システム等では、情報を符号化する方式として、畳み込み符号を用いる場合がある。そして、この畳み込み符号によって符号化された情報を復号する方式の一つとして、ビタビ復号が知られている。ビタビ復号の概要について、以下に説明する。
図10は、一般的なビタビ復号の概要を説明する図である。ビタビ復号は、畳み込み符号により符号化された1つの受信データ(シンボルデータ)に対する、ACS(Addition, Compare, Select)演算処理、トレースバック処理、その他リタイミング等の処理を含んでいる。
ビタビ復号では、受信したシンボルデータに対して、拘束長K(Kはビタビ復号において規定された特定の整数)に応じた状態数2K-1のブランチメトリック値およびパスメトリック値を、ACS演算処理により求める。但し、拘束長Kは、過去の複数のビットを用いて現時点での符号化ビットを得る畳み込み符号において、過去のビットに対する依存長を表す。ブランチメトリック値、パスメトリック値、及び、ACS演算については、ビタビ復号の技術領域において周知であるので、本願ではその詳細な説明を省略する。
ACS演算処理で求めたブランチメトリック値は、次に受信するシンボルデータに関する新しいブランチメトリック値を求めるために保持される。ビタビ復号は、次のシンボルデータの受信時に、保持している前のシンボルデータのブランチメトリック値を読み出し、読み出したブランチメトリック値を用いて、新しいブランチメトリック値を求める演算を行う。ビタビ復号では、同様にACS演算処理で求められたパスメトリック値も保持され、保持されたパスメトリック値は、トレースバック処理において読み出される。ビタビ復号は、このようにして、受信したシンボルデータ毎に求められる2K-1個のブランチメトリック値のうちの最大値に基づいて、拘束長Kの例えば4倍(4K)分のシンボルデータに関するパスメトリック値を遡るトレースバック処理を行うことによって、畳み込み符号によって符号化されたデータを復号する。
このような畳み込み符号とビタビ復号とを用いた通信方式において、誤り訂正能力を向上する手段の一つとして、拘束長Kを大きくすることが知られている。しかしながら、拘束長Kを大きくした場合、必要となる演算量が増大することによって、受信データに関するシンボルレート(変調速度)が低下するので、通信速度が低下するという問題がある。
このビタビ復号の拘束長Kを大きくした場合における演算量が増大する原因は、ビタビ復号を行うために用いる状態値を表すブランチメトリック値、及び、最尤アドレスに基づいて過去の状態を遡るトレースバック処理に関する状態段数が拘束長Kにより決定することにある。ビタビ復号では、ブランチメトリック値に関する必要とされる状態数は2K-1であり、またトレースバック処理を行う際の状態段数は、拘束長Kの4倍以上が必要とされる。したがって、拘束長Kを大きくしたビタビ復号は、受信したシンボルデータに関する1クロック分の期間において、状態数が2K-1であるブランチメトリック値を求めるACS演算処理と4K個の状態段数を遡るトレースバック処理とを行うことによって演算量が増大するので、受信データに関するシンボルレートの低下を招く問題がある。
次に、上述の問題について具体例を用いて説明する。
図11は、拘束長Kを、一般的なビタビ復号において用いられている「7」の2倍である「14」とした場合における一般的なビタビ復号におけるACS演算処理の一例を説明する図である。拘束長Kを「14」としたビタビ復号におけるACS演算処理では、図11に示す通り、メモリAに格納されている、前回に受信したシンボルデータに関する2K-1(即ち213=8192)通りのブランチメトリック値(m0~m8191)と、新たに受信したシンボルデータから生成される2K(即ち214=16384)個の相関値(c0~c16383)とに基づいて、新たに受信したシンボルデータに関するブランチメトリック値(M0~M8191)を求める。
このACS演算では、まず、前回に受信したシンボルデータに関する先頭のブランチメトリック値m0と相関値c0とを加算した値をz0として算出する。ACS演算では、次に、前回に受信したシンボルデータに関する8192個のブランチメトリック値を図11に示すように、前半部分と後半部分とに2分割したと仮定して、その後半部分における先頭のブランチメトリック値m4096と、相関値c1とを加算したz1を算出する。そして、算出したz0及びz1のうち、大きい方を新たなブランチメトリック値M0として算出する。尚、以下の本願の説明(図面を含む)においても、ブランチメトリックの値域に関して、同様に、その値域の「前半部分(部)」及び「後半部分(部)」なる表現を採用することとする。
ACS演算では、同様に、ブランチメトリック値m0と相関値c2とを加算したz2と、ブランチメトリック値m4096と相関値c3とを加算したz3とを算出し、算出したz2及びz3のうち、大きい方を新たなブランチメトリック値M1として算出する。
ACS演算では、新たに受信したシンボルデータに関して、このような演算を繰り返し実行し、最後に、ブランチメトリック値m4095と相関値c16382とを加算したz16382と、ブランチメトリック値m8191と相関値c16383とを加算したz16383とを算出し、算出したz16382及びz16383のうち、大きい方を新たなブランチメトリック値M8191として算出する。
図12は、拘束長Kを「14」とした場合における一般的なビタビ復号におけるトレースバック処理の一例を説明する図である。そして、このビタビ復号では、得られたブランチメトリック値の最大値に基づく最尤アドレスを起点として、4K(即ち、4x14=56)個(「x」は乗算を表す演算子)の、時間(t-1)乃至(t-56)に受信したシンボルデータに関するパスメトリック値を遡るトレースバック処理を行なう。このトレースバック処理では、パスメトリック値を格納したメモリからパスメトリック値を読み出し、そのパスメトリック値に基づいて、次の読み出しアドレスを生成することを繰り返し行なう。そして、ビタビ復号では、ACS演算の処理時間taとトレースバック処理の処理時間tbとを合計した処理時間「ta+tb」が、受信したシンボルデータに関する1クロック分の期間(Tdata)内になることが要求される。
拘束長Kが「7」である一般的なビタビ復号の場合、状態数は、2(7-1)(即ち64)であり、トレースバック処理を行う対照とする状態の段数は、「7x4」(即ち28)段となる。これに対し、誤り訂正能力を向上させるために拘束長Kを「14」としたビダビ復号の場合、状態数は、2(14-1)(即ち8192)であり、トレースバック処理を行う際の状態段数は、「14x4」(即ち56)段となる。このようにビタビ復号の誤り訂正能力を向上させるために拘束長Kを大きくした場合、演算が複雑化して演算量が増大すると共に、ビタビ復号に要する時間が長くなり、受信データに関するシンボルレートが低下する。したがって、ビタビ復号において、誤り訂正能力を向上すると共に、復号処理を高速化する技術への期待が高まってきている。
このような技術に関連する技術として、特許文献1には、ACS計算回路を並列に設けて、ACS算出処理を並列に行うビタビ復号器が開示されている。このビタビ復号器は、各ACS計算回路に対して、夫々2つのパスメトリックメモリを備え、リード/ライト動作を交互に時分割に処理する。
また、特許文献2には、回路のレイテンシを増加することなくパスメトリックの溢れを防止するビタビ復号回路が開示されている。このビタビ復号回路は、ACS回路内に減算回路を設け、主の比較回路において、各パスメトリックが予め定めた閾値以上である場合に警告信号を出力する。そして、各ACS回路は、警告信号を基にパスメトリックから予め定めた減算値を減じることによって、同じACS処理のクロック内において、減算処理を行う。
また、特許文献3には、演算精度を犠牲にすることなく、実現可能な回路規模で、ACS演算の処理効率を向上させるビタビ復号装置が開示されている。このビタビ復号装置におけるパスメトリック記憶装置は、読み出しと書き込みとをACS処理のステージ毎に交互に切り替えるので、2バンク構成のパスメトリック記憶回路を有する。このビタビ復号装置では、パスメトリック記憶回路を2個の記憶装置に分割し、パスメトリックをパイプライン処理の順に記憶することにより、連続的にパイプライン処理を行う。
また、特許文献4には、トレースバック処理時に溯るべき状態遷移履歴の数を削減することにより、トレースバック処理を高速化したビタビ復号器が開示されている。このビタビ復号器におけるブランチメトリック処理部は、前時刻の状態から現状態に至るすべてのパスについてブランチメトリック値を算出する。このビタビ復号器におけるACS処理部は、ブランチメトリックおよびパスメトリックにより現時刻の各状態へ至るパスの中から最尤パスを選択し、そのパスが選択された場合における復号データ候補、復号データの格納位置、及び、更新されたパスメトリックを出力して、状態遷移履歴を追加する。このビタビ復号器におけるトレースバック処理部は、パスメトリックメモリに記憶されているパスメトリックから、現在の時刻における最尤パスを推定し、復号データ格納位置メモリを参照することにより得られるパスメモリ中のエントリノードから、パスメモリ中の状態遷移履歴を遡る。
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
<第1の実施形態>
図1は、本願発明の第1の実施の形態に係るビタビ復号装置10の構成を概念的に示すブロック図である。図1(その他の図面も同様)において、各構成要素間におけるデータの入出力の方向は、各構成要素を接続する矢印の方向に限定されないこととする。本実施形態に係るビタビ復号装置10は、畳み込み符号を用いて符号化された受信データを、ビタビ復号によって復号する装置である。本実施形態に係るビタビ復号装置10が行なうビタビ復号の拘束長Kは「14」とするが、拘束長Kは「14」に限定されない。ビタビ復号には、軟判定復号を用いる場合と硬判定復号を用いる場合とがあるが、本実施形態に係るビタビ復号装置10は、一例として軟判定復号を用いることとする。軟判定復号及び硬判定復号については周知であるので、その詳細な説明は省略する。
本実施形態に係るビタビ復号装置10は、相関値生成部110、4個のACS演算部121乃至124、最尤アドレス生成部130、ブランチメトリックメモリ制御部140、ブランチメトリックメモリ141A及び141B、パスメトリックメモリ制御部150、及び、パスメトリックメモリ151を備えている。以下、これら各構成の動作(機能)について、順番に説明する。
<相関値生成部110>
相関値生成部110には、畳み込み符号を用いて符号化された受信データ(入力情報)として、Pch(Pチャネル)軟判定データ(軟判定情報)とQch(Qチャネル)軟判定データ(軟判定情報)とが入力される。本実施形態では、拘束長Kを「14」とするので、相関値生成部110は、14ビットの相関値生成カウンタのカウント値から、生成多項式「(Pch,Qch)=(21675oct,27123oct)」(但しoctは8進数を表す)に従って、2K(即ち16384)通りの相関値を生成する。生成多項式については、本願の技術領域において周知であるので、その詳細な説明は省略する。
図2は、本実施形態に係る相関値生成部110が含む相関値生成カウンタ111(図1には不図示)の構成を概念的に示すブロック図である。相関値生成部110は、14ビット(第0ビット乃至第13ビット)の相関値生成カウンタ111によって生成される後半(即ち8192~16383カウント目)の相関値を、図2に例示する通り、0~8191カウントにおいて生成する相関値を反転することによって生成可能である。したがって、相関値生成部110は、図2に例示する通り、相関値生成に用いる相関値生成カウンタ111のMSB(Most Significant Bit)(即ち第13ビット)を使用せずに、第0ビットから第12ビットまでの相関値生成カウンタ111による0~8191カウント値より、前述した生成多項式に従って、Pchの相関値(P)及びQchの相関値(Q)を生成する。そして、相関値生成部110は、0~8191カウントにおける相関値(P)及び相関値(Q)を反転した値を、8192~16383カウントにおける相関値として生成する。
相関値生成部110は、また、後述する4つのACS演算部121乃至124によるACS演算の並列処理化に応じて、並列処理数が「4」であることから、相関値生成カウンタ111のMSBに続く上位2ビットを使用しなくてもよい。相関値生成部110は、使用しないビットによって省略されるカウントにおける相関値に関しては、前述した生成多項式に従い、使用するビットにより生成する相関値に対して、正転、反転制御することによって、その値を生成する。即ち、相関値生成部110は、ACS演算が4並列に処理される場合、図2に示す通り相関値生成カウンタ111におけるMSB、第12ビット,及び、第11ビットを使用せずに、相関値生成カウンタ111による0~2047カウント値により、4つのACS演算部121乃至124に入力する相関値を生成する。
本実施形態に係るビタビ復号装置10が例えば8個のACS演算部を備えることによって、ACS演算を8並列処理する場合、図2に示す通り、相関値生成部110は、相関値生成カウンタにおけるMSBから第10ビットまでの上位4ビットを使用しなくてもよい。同様に、ビタビ復号装置10が例えば16個のACS演算部を備えることによって、ACS演算を16並列処理する場合、相関値生成部110は、相関値生成カウンタにおけるMSBから第9ビットまでの上位5ビットを使用しなくてもよい。
相関値生成部110は、例えば図3に示す通りに、受信したシンボルデータが示す、「1」である確からしさの度合い、及び「0」である確からしさの度合いに基づいて、生成した相関値に対して、重み付けを行う。相関値生成部110は、例えば、受信したシンボルデータが「111」を表す場合、相関値「1」に対する重み付けを最大とし、相関値「0」に対する重み付けを最小とするように重み付けを行なう。相関値生成部110は、その逆に、受信したシンボルデータが「000」を表す場合、相関値「0」に対する重み付けを最大とし、相関値「1」に対する重み付けを最小とするように重み付けを行なう。相関値生成部110は、重み付けした相関値を、ACS演算部121乃至124に入力する。
<ACS演算部121乃至124>
図1に示すACS演算部121乃至124は、ACS演算を4並列処理することによって、受信したシンボルデータに関する2K-1(=8192)個のブランチメトリック値を算出する。図4は、本実施形態に係るACS演算部121乃至124が並列に行うACS演算における、処理に必要となるデータを読み出してから処理結果を書き込むまでの流れを表す図である。図4は、ACS演算によるブランチメトリック値を算出する場合を示すが、ACS演算によるパスメトリック値を算出する場合も同様である。
図4に示す通り、ACS演算部121は、前回のシンボルデータに関するブランチメトリック値m0(以降「ブランチメトリック値」を省略して記載する場合がある)とm4096とを用いて、新たに受信したシンボルデータに関するブランチメトリック値M0(以降「ブランチメトリック値」を省略して記載する場合がある)とM1とを、ACS演算を行なうことによって算出する。ACS演算部121は、m0~m1023、及び、m4096~m5119を用いて、M0~M2047(即ち、M0~M8191のうちの先頭から1/4の部分)を算出する。ACS演算部121は、算出したM0~M1023を、ブランチメトリックメモリ141B-1に格納し、算出したM1024~M2047を、ブランチメトリックメモリ141B-2に格納する。そして、M0~M2047の算出に用いられるm0~m1023、及び、m4096~m5119は、前回のシンボルデータに関してACS演算部121乃至124がACS演算を行なった結果として、ブランチメトリックメモリ141A-1に格納されている。この場合、ブランチメモリックメモリ141A-1から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ACS演算部121乃至124のうちのACS演算部121のみである。即ち、ACS演算部121とブランチメトリックメモリ141A-1とは、ブランチメトリック値の読み出しに関して、1対1に紐付けされた状態にある。
同様に、ACS演算部122は、ブランチメトリックメモリ141A-2に格納されているm1024~m2047、及び、m5120~m6143を使用して、M2048~M4095を算出する。ACS演算部122は、算出したM2048~M3071を、ブランチメトリックメモリ141B-3に格納し、算出したM3072~M4095を、ブランチメトリックメモリ141B-4に格納する。ブランチメモリックメモリ141A-2から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ACS演算部121乃至124のうちのACS演算部122のみであるので、ACS演算部122とブランチメトリックメモリ141A-2とは、ブランチメトリック値の読み出しに関して、1対1に紐付けされた状態にある。
同様に、ACS演算部123は、ブランチメトリックメモリ141A-3に格納されているm2048~m3071、及び、m6144~m7167を使用して、M4096~M6143を算出する。ACS演算部123は、算出したM4096~M5119を、ブランチメトリックメモリ141B-1に格納し、算出したM5120~M6143を、ブランチメトリックメモリ141B-2に格納する。ブランチメモリックメモリ141A-3から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ACS演算部121乃至124のうちのACS演算部123のみであるので、ACS演算部123とブランチメトリックメモリ141A-3とは、ブランチメトリック値の読み出しに関して、1対1に紐付けされた状態にある。
同様に、ACS演算部124は、ブランチメトリックメモリ141A-4に格納されているm3072~m4095、及び、m7168~m8191を使用して、M6144~M8191を算出する。ACS演算部124は、算出したM6144~M7167を、ブランチメトリックメモリ141B-3に格納し、算出したM5120~M6143を、ブランチメトリックメモリ141B-4に格納する。ブランチメモリックメモリ141A-4から前回のシンボルデータに関するブランチメトリック値を読み出すのは、ACS演算部121乃至124のうちのACS演算部124のみであるので、ACS演算部124とブランチメトリックメモリ141A-4とは、ブランチメトリック値の読み出しに関して、紐付けされた状態にある。
図5は、本実施形態に係るACS演算部121乃至124が、ACS演算によって2K-1(=8192)個のブランチメトリック値あるいはパスメトリック値を算出する(算出結果をブランチメトリックメモリ141A及び141B、あるいはパスメトリックメモリ151に書き込む)順番を表す図である。尚、図5において、「2^(K-1)」における「^」は、べき乗を表す演算子である(以降の図面においても同様)。
図5に示す通り、ACS演算部121は、M0~M2047を求めるACS演算を、M0から順番に行なう。ACS演算部122は、M2048~M4095を求めるACS演算を、M2048から順番に行なう。ACS演算部123は、M4096~M6143を求めるACS演算を、M5120からM6143まで順番に行なったのち、M4096からM5119まで順番に行なう。ACS演算部124は、M7168~M8191を求めるACS演算を、M7168からM8191まで順番に行なったのち、M6144からM7167まで順番に行なう。
このように、ACS演算部121及び122は、算出対象とするブランチメトリック値について、先頭から順番に算出するのに対して、ACS演算部123及び124は、算出対象とする2048個のブランチメトリック値について、後半部の1024個のブランチメトリック値に対するACS演算を前半に行なったあとに、前半部の1024個のブランチメトリック値に対するACS演算を後半に行なう。ACS演算部121乃至124がこのような順番でACS演算を行なうのは、ACS演算部121及び124による、ブランチメトリックメモリ141B-1乃至141B-4への書き込み制御において、競合が発生することを回避することを目的とする。
即ち、例えば、ACS演算部121により算出されたM0とACS演算部123により算出されたM4096の格納先は、図4に示す通り、いずれもブランチメトリックメモリ141B-1である。したがって、ACS演算部123がM4096から順番にACS演算を行なった場合、ブランチメトリックメモリ141B-1への書き込みに関して、ACS演算部121とACS演算部123との間において競合が発生する。本実施形態に係るACS演算部123が最初に算出するM5120の格納先は、図4に示す通り、ブランチメトリックメモリ141B-2であるので、この場合は、ACS演算部121との間で書き込みに関する競合は発生しない。
このように、ACS演算部121乃至124は、図4及び図5に示す通りにACS演算を行なうことによって、ACS演算の並列処理を効率よく行なうことができる。
図6は、本実施形態に係るACS演算部121が、ACS演算によってブランチメトリック値M0乃至M3を算出する処理の詳細を説明する図である。ACS演算部122乃至124がブランチメトリック値も算出する処理も以下に説明するACS演算部121の手順と同様である。
ACS演算部121は、図6に示す通り、後述するブランチメトリックメモリ制御部140による制御動作を介して、ブランチメトリックメモリ141Aからビタビ復号動作クロック毎に連続して読み出した、2つのブランチメトリック値を保持する期間を、2値一組でビタビ復号動作クロックの2倍のクロック幅(期間)に伸長する。ACS演算部121は、例えば、図4に例示する通り、ブランチメトリックメモリ141A-1におけるアドレス0からブランチメトリック値m0を読み出し、ブランチメトリックメモリ141A-1におけるアドレス「2(K-1)/4」(=1024)からブランチメトリック値m4096を読み出す。そして、ACS演算部121は、読み出したm0及びm4096を2値一組で、例えば、ビタビ復号動作クロックの2倍のクロック幅を有するクロックに同期して動作する、内包するレジスタ(図1等には不図示)に保持する。ACS演算部121は、次にブランチメトリックメモリ141A-1から読み出すm1及びm4097についても、同様に、その保持期間を2値一組で、ビタビ復号動作クロックの2倍のクロック幅に伸長する。
ACS演算部121(ACS122乃至124も同様)は、保持期間を伸長した2値により表される、前回に受信したシンボルデータのブランチメトリック値と、相関値生成部110によってビタビ復号動作クロック毎に生成されてACS演算部121に入力される、重み付けされた相関値を加算することによって、2値の新しいブランチメトリック値を求める。ACS演算部121は、求めた2値の新しいブランチメトリック値を比較し、大きい方の値の新しいブランチメトリック値を新たなブランチメトリック値として、ブランチメトリックメモリ制御部140による制御動作を介し、ブランチメトリックメモリ141Bに格納する。
より具体的には、図6に示す通り、ACS演算部121は、相関値P0及びQ0を用いて新たなブランチメトリック値を算出する際に、計算式「M0_1=m0+P0」、及び、「M0_2=m4096+Q0」に従い、「M0_1」及び「M0_2」を算出する。ACS演算部121は、算出した「M0_1」及び「M0_2」のうち、大きい方を新たなブランチメトリック値M0として求める。ACS演算部121は、相関値P1及びQ1を用いて新たなブランチメトリック値を算出する際に、計算式「M1_1=m0+P1」、「M1_2=m4096+Q1」により、「M1_1」及び「M1_2」を算出する。ACS演算部121は、算出した「M1_1」及び「M1_2」のうち、大きい方を新たなブランチメトリック値M1として求める。ACS演算部121は、同様に、m1、m4097、P2、Q2、P3、Q3を用いて、M2及びM3を求める。ACS演算部121は、M4以降のブランチメトリック値についても、同様に求める。
ACS演算部121乃至124は、また、ブランチメトリック値に関する比較結果をパスメトリック値として、後述するパスメトリックメモリ制御部150による制御動作を介し、パスメトリックメモリ151に格納する。ACS演算部121乃至124による、パスメトリック値を求める演算順は、上述したブランチメトリックのときと同様である。
ACS演算部121乃至124は、後述する最尤アドレス生成部130から減算制御情報を入力された場合、ブランチメトリックメモリ141A及び141Bから読み出された前回に受信したシンボルデータに関するブランチメトリック値に対して、特定の値を減算する減算制御を行うことにより、新しいブランチメトリック値を生成する。ACS演算部121乃至124は、これにより、ブランチメトリック値に関するオーバーフローの発生を回避する。
<ブランチメトリックメモリ141A及び141B>
本実施形態に係るビタビ復号装置10は、図1に示す通り、ACS演算部121乃至124によって求められたブランチメトリック値を格納するメモリとして、ブランチメトリックメモリ141A及び141Bを備える。ブランチメトリックメモリ141A及び141Bは、少なくともACS演算の並列処理数に分割され、図4を用いて上述した通り、ブランチメトリック値の書き込み及び読み出し制御において、ACS演算部121乃至124の個々と、1対1に紐付けられた構成を有する。即ち、ブランチメトリックメモリ141Aは、ブランチメトリックメモリ141A-1乃至141A-4を構成し、ブランチメトリックメモリ141Bは、ブランチメトリックメモリ141B-1乃至141B-4を構成する。そして、ブランチメトリックメモリ141A-1乃至141A-4の各々は、ブランチメトリック値の読み出しに関して、順に、ACS演算部121乃至124に紐付けられている。
ACS演算部121乃至124により求められたブランチメトリック値のビット数がmビット(mは任意の自然数)である場合、ブランチメトリックメモリ141A及び141Bは、それぞれ、mビットのワードを2048個分格納可能な容量を有するメモリを4個含むメモリである。ブランチメトリックメモリ141A及び141Bは、ブランチメトリックメモリ制御部140による制御動作を介してACS演算部121乃至124により並列処理される、前回に受信したシンボルデータのブランチメトリック値に関する読み出し制御が競合しないように、上述した様なACS演算部121乃至124と紐付けされた関係を構成し、受信したシンボルデータに関する新たな2K-1個のブランチメトリック値を格納する。
ブランチメトリックメモリ141A及び141Bは、ブランチメトリックメモリ制御部140による制御により、受信するシンボルデータ毎に、書き込み/読み出し制御が交互に切り替わる。即ち、受信したあるシンボルデータに関して、ACS演算部121乃至124により求められた新しいブランチメトリック値をブランチメトリックメモリ141Bが格納する場合、ブランチメトリックメモリ141Aは、その新しいブランチメトリック値を求めるために必要となる、前回に受信したシンボルデータに関するブランチメトリック値を、ACS演算部121乃至124に出力する。そして、その次に受信したシンボルデータに関するACS演算では、ブランチメトリックメモリ141Bが、前回に受信したシンボルデータに関するブランチメトリック値をACS演算部121乃至124に出力し、ブランチメトリックメモリ141Aが新しいブランチメトリック値を格納する。
尚、ブランチメトリックメモリ141A及び141Bのビット数およびワード数は可変であり、ビタビ復号装置10を搭載するデバイスの状況などに応じて変更可能である。
<ブランチメトリックメモリ制御部140>
図1に示すブランチメトリックメモリ制御部140は、ACS演算部121乃至124により求められた、受信したシンボルデータに関する新しいブランチメトリック値が入力される。ブランチメトリックメモリ制御部140は、ブランチメトリックメモリ141A及び141Bのうちの一方に、受信したシンボルデータに関する新しいブランチメトリック値を書き込む。ブランチメトリックメモリ制御部140は、ブランチメトリックメモリ141A及び141Bのうちのもう一方に、ACS演算部121乃至124において受信したシンボルデータに関する新しいブランチメトリック値を求める際に必要となる、前回に受信したシンボルデータに関するブランチメトリック値を読み出す。即ち、ブランチメトリックメモリ制御部140は、上述した通り、ブランチメトリックメモリ141A及び141Bに対する書き込み制御と読み出し制御とを、シンボルデータが入力される毎に、交互に切り替える制御を行う。
ブランチメトリックメモリ制御部140は、図4及び図5に示す通り、ACS演算部121乃至124が並列処理することにより求められる2K-1(=8192)個のブランチメトリック値のうちの前半部分(即ちM0~M4095)と後半部分(即ちM4096~M8191)とで異なるACS演算の順序に従って、ブランチメトリックメモリ141A及び141Bに対する書き込み制御を行う。即ち、ブランチメトリックメモリ制御部140は、図4に示す通り、2K-1個のブランチメトリック値の前半部分を求めるACS演算を行うACS121及び122から入力されたブランチメトリック値を、それぞれ2K-1/4(=2048)個(「/」は除算を表す演算子)のブランチメトリック値を格納するブランチメトリックメモリ141B-1及び141B-3における先頭のアドレス(即ちアドレス0)から書き込み制御を行う。
そして、ブランチメトリックメモリ制御部140は、2K-1個のブランチメトリック値の後半部分を求めるACS演算を行うACS123及び124から入力されたブランチメトリック値を、それぞれ2K-1/4(=2048)個のブランチメトリック値を格納するブランチメトリックメモリ141B-2及び141B-4における各メモリ領域の後半部分の先頭に位置するアドレス(即ちアドレス1024)から書き込み制御を行う。
ブランチメトリックメモリ制御部140は、図4に示すように、ACS演算部121乃至124の個々における(2K-1/(4x2))/2(=512)個のブランチメトリック値に関するACS演算が経過した時点で、ACS121及びACS122により入力されたブランチメトリック値の格納先を、ブランチメトリックメモリ141B-2および141B-4における先頭のアドレス(即ちアドレス0)に切り替える。そして、ブランチメトリックメモリ制御部140は、その格納先に、ACS121及びACS122から入力されたブランチメトリック値を格納する。
ブランチメトリックメモリ制御部140は、図4に示すように、ACS演算部121乃至124の個々における(2K-1/(4x2))/2(=512)個のブランチメトリック値に関するACS演算が経過した時点で、ACS123及びACS124からのブランチメトリック値の格納先を、ブランチメトリックメモリ141B-1および141B-3が有する、各メモリ領域における後半部分の先頭のアドレス(即ちアドレス1024)に切り替える。そして、ブランチメトリックメモリ制御部140は、その格納先に、ACS123及びACS124から入力されたブランチメトリック値を格納する。
<パスメトリックメモリ151>
図1に示すパスメトリックメモリ151は、受信したシンボルデータ毎に2K-1個のパスメトリック値を、これまでに受信した56(=14x4)個のシンボルデータに関して格納する容量を持つメモリである。これは、ビタビ復号において、パスメトリック値を遡る受信シンボルの数は、通常、拘束長Kの4倍であり、本実施形態に係る拘束長Kが「14」であることに基づく。即ち、パスメトリックメモリ151は、個々に2K-1個のパスメトリック値を格納可能なパスメトリックメモリ151-1乃至151-56を構成する。
また、パスメトリックメモリ151は、上述したブランチメトリックメモリ141A及び141Bと同様に、ACS演算部121乃至124による並列処理に応じた構成を有する。即ち、パスメトリックメモリ151は、2K-1個のパスメトリック値を格納するパスメトリックメモリ151-1乃至151-56の個々が、並列処理数(例えば「4」)に分割され、分割された個々のメモリ領域(図1には不図示)が、パスメトリック値の書き込み制御において、並列処理するACS演算部121乃至124と1対1に紐付けられた構成を有する。
パスメトリックメモリ151は、後述するパスメトリックメモリ制御部150により、ACS演算部121乃至124から出力されるパスメトリック値に関する書き込み及び読み出しを制御される。パスメトリックメモリ151に対するパスメトリック値の書き込み制御及び読み出し制御は、受信した1つのシンボルデータに関する期間(クロック)内で切り替わる。ACS演算部121乃至124によって生成された2K-1個のパスメトリック値は、パスメトリックメモリ151-1乃至151-56のいずれかに書き込まれる。
パスメトリックメモリ151-1乃至151-56は、リングバッファとして機能する。即ち、パスメトリックメモリ151-i(iは1乃至56のいずれかの整数)が、受信したシンボルデータに関する2K-1個のパスメトリック値を格納した後、パスメトリックメモリ151-(i+1)は、次に受信したシンボルデータに関する2K-1個のパスメトリック値を格納する。
パスメトリックメモリ151に格納されたパスメトリック値に対する読み出し制御は、当該パスメトリック値に対する書き込み制御が完了した後、最尤アドレス生成部130により生成される最尤アドレス(トレースバック処理における起点となるアドレス)に基づいて、パスメトリックメモリ制御部150がトレースバック処理を行う際に行われる。このトレースバック処理におけるパスメトリック値に対する読み出し制御は、受信したシンボルデータ当たり2K-1個あるパスメトリック値の内から1つのパスメトリック値を選択して読み出される制御である。この1つのパスメトリック値を選択して読み出される制御は、パスメトリックメモリ151-1乃至151-56の全てに対して、順次行なわれる。
<パスメトリックメモリ制御部150>
図1に示すパスメトリックメモリ制御部150には、ACS演算部121乃至124により生成されたパスメトリック値と、最尤アドレス生成部130により生成された最尤アドレスとが入力される。パスメトリックメモリ制御部150は、パスメトリックメモリ151に対するパスメトリック値の書き込み制御を行う。
パスメトリックメモリ制御部150は、また、ビタビ復号におけるトレースバック処理を行うトレースバック処理部としての機能を備える。パスメトリックメモリ制御部150は、入力された最尤アドレスを用いたトレースバック処理を行う際に、パスメトリックメモリ151に格納されたパスメトリック値を読み出す読み出し制御を行う。そして、パスメトリックメモリ制御部150は、トレースバック処理を完了した時に、56個のシンボルデータに関するパスメトリック値を遡った結果として、ビタビ復号データを生成して出力する。
パスメトリックメモリ制御部150は、各々2K-1個のパスメトリック値を格納するパスメトリックメモリ151-1乃至151-56のいずれかを、受信したシンボルデータ毎に選択し、選択したパスメトリックメモリ151-iに、ACS演算部121乃至124により生成された2K-1個のパスメトリック値を格納する。パスメトリックメモリ制御部150は、次に受信したシンボルデータに関する2K-1個のパスメトリック値を、パスメトリックメモリ151-(i+1)に格納する。
パスメトリックメモリ制御部150によるパスメトリックメモリ151に対する書き込み制御は、図4に示すブランチメトリックメモリ141A及び141Bに対する書き込み制御と同様である。即ち、パスメトリックメモリ制御部150は、ACS121及び122により求められた2K-1個の前半部分のパスメトリック値を、並列処理数に分割された記憶領域を有するパスメトリックメモリ151-iにおけるいずれか2つの記憶領域に対して、先頭のアドレス(図4に示す例における、ブランチメトリックメモリ141B-1あるいは141B-3におけるアドレス0に相当)から書き込む。そして、パスメトリックメモリ制御部150は、ACS123及び124により求められた2K-1個の後半部分のパスメトリック値を、書き込み先のパスメトリックメモリ151-iにおける各メモリ領域の後半部分の先頭に位置するアドレス(図4に示す例における、ブランチメトリックメモリ141B-2あるいは141B-4におけるアドレス1024に相当)から書き込み制御を行う。
パスメトリックメモリ制御部150は、最も確からしいパスを遡るトレースバック処理において、パスメトリックメモリ151からパスメトリック値を読み出す。図7は、パスメトリックメモリ制御部150によるトレースバック処理を行う構成(即ち、トレースバック処理部としての構成)を例示する図である。パスメトリックメモリ制御部150は、トレースバック処理部として、読み出しアドレス生成部152、及び、選択部153を備えている。
読み出しアドレス生成部152は、トレースバック処理におけるパスメトリックメモリ151に対する読み出しアドレスを生成し、図7に例示する通り、バレルシフタを構成する。但しバレルシフタは、ワードデータを、ある特定のビット数分、シフトすることが可能な論理回路である。本実施形態に係る読み出しアドレス生成部152は、セレクタ(マルチプレクサ)を表す「SEL」と、シフトレジスタを表す「D-FF Shift」とを、図7に示す通りに接続することによって、バレルシフタを構成する。但し、バレルシフタの構成は、図7に示す構成に限定されない。
パスメトリックメモリ制御部150は、トレースバック処理を開始する際に、最尤アドレス生成部130により生成された最尤アドレスを、開始アドレスとして読み出しアドレス生成部152にセットする。パスメトリックメモリ制御部150は、読み出しアドレス生成部152が示す読み出しアドレスに基づいて、パスメトリックメモリ151-1乃至151-56のいずれかから、パスメトリック値を読み出す。
パスメトリックメモリ制御部150における選択部153は、最尤アドレスに基づいて、読み出したパスメトリック値のうちの1つを選択し、選択したパスメトリック値を、読み出しアドレス生成部152にシフト入力する。パスメトリックメモリ制御部150は、これにより、次(2番目)に遡る(読み出す)読み出しアドレスを生成し、当該読み出しアドレスが示す、パスメトリックメモリ151-1乃至151-56のいずれかから、パスメトリック値を読み出す。選択部153は、2番目の読み出しアドレスに基づいて、読み出したパスメトリック値のうちの1つを選択し、選択したパスメトリック値を、読み出しアドレス生成部152にシフト入力する。パスメトリックメモリ制御部150は、これにより、その次(3番目)に遡る(読み出す)読み出しアドレスを生成し、当該読み出しアドレスが示す、パスメトリックメモリ151-1乃至151-56のいずれかから、パスメトリック値を読み出す。
パスメトリックメモリ制御部150は、このような読み出し制御と選択制御とにより得られるパスメトリック値に基づいて、次々とパスメトリック値を遡る。パスメトリックメモリ制御部150は、上述した読み出し制御と選択制御とを56回実行し、パスメトリックメモリ151-1乃至151-56の個々に対して、1回ずつの読み出し制御を行うことによって、トレースバック処理を実行する。
パスメトリックメモリ制御部150は、トレースバック処理を完了したのち、56個のシンボルデータに関するパスメトリック値を遡ったトレースバック処理の最終結果である、読み出しアドレス生成部152にシフト入力したパスメトリック値を、ビタビ復号データとして出力する。
<最尤アドレス生成部130>
図1に示す最尤アドレス生成部130は、ACS演算部121乃至124により求められた、新しいブランチメトリック値の最大値に関する選択情報(最大値選択情報)が入力される。最尤アドレス生成部130はまた、ブランチメトリックメモリ制御部140が、受信したシンボルデータに関する新しいブランチメトリック値を、ブランチメトリックメモリ141Aあるいは141Bへ書き込む際の書き込みアドレスが入力される。
最尤アドレス生成部130は、ACS演算部121乃至124から入力された4つのブランチメトリック値の最大値から、さらに1つのブランチメトリック値の最大値を、ACS演算処理におけるブランチメトリック最大値として求める。最尤アドレス生成部130は、これにより、ACS演算部121乃至124から入力された最大値選択情報と、ブランチメトリックメモリ141A及び141Bに対する書き込みアドレスとから、ブランチメトリック最大値が書き込まれたブランチメトリックメモリ141Aあるいは141Bのアドレス情報を求める。但し当該アドレス情報は、ブランチメトリック最大値に関するパスメトリック値が書き込まれたパスメトリックメモリ151のアドレス情報と等しい。
最尤アドレス生成部130は、ブランチメトリック最大値を求めることにより得られた最大値選択情報と、ブランチメトリック最大値が書き込まれたブランチメトリックメモリ141Aあるいは141Bのアドレス情報とに基づいて、パスメトリックメモリ制御部150によるレースバック処理において用いられる最尤アドレスを生成し、生成した最尤アドレスをパスメトリックメモリ制御部150へ入力する。
最尤アドレス生成部130は、また、ACS演算部121乃至124から入力されたブランチメトリック値の最大値と閾値とを比較し、その最大値が閾値以上である場合、ACS演算部121乃至124に対して、減算制御情報を入力する。但し、減算制御情報は、ブランチメトリック値に関するオーバーフローの発生を回避するようにACS演算部121乃至124を制御する情報である。
次に図8のフローチャートを参照して、本実施形態に係るビタビ復号装置10の動作について詳細に説明する。
相関値生成部110は、受信した、畳み込み符号を用いて符号化されたシンボルデータと、相関値生成部110の説明において前述した生成多項式と基づいて相関値を生成し、生成した相関値をACS演算部121乃至124へ入力する(ステップS101)。ACS演算部121乃至124は、入力された相関値と、前回受信したシンボルデータに関するブランチメトリック値及びパスメトリック値とに基づいて、ACS演算を並列に実行することによって、ブランチメトリック値、パスメトリック値、ブランチメトリック値の最大値、及び、最大値選択情報を生成する(ステップS102)。
ACS演算部121乃至124は、生成したブランチメトリック値を、ブランチメトリックメモリ141Aあるいは141Bへ格納し、生成したパスメトリック値を、パスメトリックメモリ151へ格納する(ステップS103)。最尤アドレス生成部130は、ACS演算部121乃至124により生成された最大値選択情報と、ブランチメトリック最大値が書き込まれたアドレス情報とに基づいて最尤アドレスを生成し、最尤アドレスをパスメトリックメモリ制御部150へ入力する(ステップS104)。
パスメトリックメモリ制御部150は、トレースバック処理部として、入力された最尤アドレスを、開始アドレスとして読み出しアドレス生成部152にセットする(ステップS105)。パスメトリックメモリ制御部150は、ステップS107の処理を4K(Kは拘束長)回繰り返し実行する(ステップS106)。i(iは1乃至4Kのいずれかの整数)回目のトレースバック処理として、読み出しアドレス生成部152が示す読み出すアドレスに基づいて、読み出したパスメトリック値の1つを選択し、選択したパスメトリック値を、読み出しアドレス生成部152にシフト入力する(ステップS107)。
iが4K未満の場合、パスメトリックメモリ制御部150は、iに1を加算してステップS107の処理を行い、iが4Kである場合は、処理はステップS109へ進む(ステップS108)。パスメトリックメモリ制御部150は、読み出しアドレス生成部152にシフト入力したパスメトリック値を、ビタビ復号データとして出力し(ステップS109)、全体の処理は終了する。
本実施形態に係るビタビ復号装置10は、畳み込み符号を用いて符号化されたデータをビタビ復号によって復号する場合に、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することを可能とする。その理由は、ビタビ復号装置10は、ブランチメトリック値及びパスメトリック値に関する複数のACS演算を並列に行なうとともに、トレースバック処理において、パスメトリック値を読み出す読み出しアドレスを、その読み出しアドレスを示すバレルシフタに対して、前回読み出したパスメトリック値をシフト入力することにより生成するからである。
以下に、本実施形態に係るビタビ復号装置10によって実現される効果について、詳細に説明する。
畳み込み符号とビタビ復号とを用いた通信方式では、拘束長Kを大きくすることによって、誤り訂正能力を向上することができる。しかしながら、拘束長Kを大きくした場合、必要な演算量が増大することにより、受信データに関するシンボルレートが低下するので、通信速度が低下するという問題がある。したがって、ビタビ復号において、誤り訂正能力を向上すると共に、復号処理を高速化することが課題である。
このような問題に対して、本実施形態に係るビタビ復号装置10は、ACS演算部121乃至124、記憶部としてのブランチメトリックメモリ141A及び141B、記憶部としてのパスメトリックメモリ151、及び、トレースバック部としてのパスメトリックメモリ制御部150を備え、例えば、図1乃至図8を参照して上述する通り動作する。即ち、ACS演算部121乃至124は、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、ブランチメトリック値及びパスメトリック値に関する複数のACS演算を、並列あるいは擬似並列に行なう。記憶部(ブランチメトリックメモリ141A及び141B、及び、パスメトリックメモリ151)は、ACS演算部121乃至124によって求められたブランチメトリック値、及び、パスメトリック値を記憶する。トレースバック部(パスメトリックメモリ制御部150)は、パスメトリック値に対するトレースバックにおいて、記憶部からパスメトリック値を読み出す読み出しアドレスを、読み出しアドレスを示すバレルシフタに対して、読み出したパスメトリック値をシフト入力することにより生成する。
このように、本実施形態に係るビタビ復号装置10は、2K-1回(Kが「14」の場合は8192回)のACS演算を並列に行なうことによって、ACS演算に要する処理時間taを大幅に短縮する。尚、ビタビ復号装置10は、ACS演算部を複数備える代わりに、例えば、ACS演算を擬似並列に行なう1つのACS演算部を備えてもよい。但し、擬似並列は、例えば時分割等による並列処理のことである。
また、ビタビ復号装置10は、トレースバックにおいて、パスメトリックメモリ151に対する読み出しアドレス(最尤アドレス)を生成する論理回路として、バレルシフタを備える。これにより、本実施形態に係るビタビ復号装置10は、受信したシンボルデータに関するパスメトリック値を遡る処理において、その処理に要するビタビ復号動作クロックを削減することができる。即ち、トレースバックにおいて、一般的なシフトレジスタを用いて読み出しアドレスを生成する場合、トレースバック処理時間tbは、4K回(Kが「14」の場合は56回)のパスメトリックメモリ151へのアクセスに要するビタビ復号動作クロック数分の時間と、4K回の最尤アドレスによるシフト処理に要するビタビ復号動作クロック数分の時間とを合計した値となる。これに対して、バレルシフタを用いて読み出しアドレスを生成する場合、トレースバック処理時間tbは、4K回のパスメトリックメモリへのアクセスに要するビタビ復号動作クロック数分の時間に短縮される。
このように本実施形態に係るビタビ復号装置10は、拘束長Kが大きいビタビ復号において、ACS演算に要する処理時間taと、トレースバック処理時間tbとを短縮することができるので、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することができる。
また、一般的なビタビ復号においては、ブランチメトリック値に関するオーバーフローが発生することによって、ビタビ復号データに誤りが発生する問題がある。一般的なビタビ復号におけるACS演算では、受信したシンボルデータに関する2K個の相関値と、前回のシンボルデータに関する2K-1個のブランチメトリック値とを加算(Addition)することによって、受信したシンボルデータに関する2K-1個のブランチメトリック値を生成する。そして、ACS演算では、生成した2K-1個のブランチメトリック値を比較(Compare)したのち、2K-1個のブランチメトリック値の最小値を検出して、その最小値を最尤値として選択(Select)する。この場合、ブランチメトリック値は加算により求められるので、求めたブランチメトリック値が、ブランチメトリック値を表す有効ビット幅を超えた場合に、オーバーフローが発生する。
このような問題に対して、本実施形態に係る最尤アドレス生成部130は、ACS演算部121乃至124から入力されたブランチメトリック値の最大値を閾値と比較して、その最大値が閾値以上である場合に、ACS演算において、ブランチメトリックメモリ141Aあるいは141Bから読み出したブランチメトリック値に対して特定の値を減算するように、ACS演算部121乃至124を制御する。これにより、本実施形態に係るビタビ復号装置10は、ブランチメトリック値に関するオーバーフローが発生することを回避することができる。
また、本実施形態に係る相関値生成部110は、例えば図3に示す通り、受信したシンボルデータが示す、「1」である確からしさの度合い、及び「0」である確からしさの度合いに基づいて、相関値に対する重み付けを行う。即ち、相関値生成部110は、受信したシンボルデータが「1」あるいは「0」であることが確からしい場合に、その重み付けを大きくし、シンボルデータが「1」あるいは「0」であることが不確かである場合に、その重み付けを小さくすることによって、最尤値となる値が最大値なるような相関値を、ACS演算部121乃至124へ入力する。したがって、本実施形態に係るビタビ復号装置10は、最大値を最尤値とすることにより、上述した最大値と閾値との比較に基づくオーバーフローを回避する制御を行うことができる。
また、ACS演算を並列に行なう場合、ブランチメトリック値に関するメモリへの配置を工夫しないと、複数のACS演算によるメモリアクセスが競合することによって、演算効率が低下する問題がある。図13は、複数のACS演算によるブランチメトリックメモリに対する読み出し制御に競合が発生する場合を例示する図である。図13に示す例では、例えば、ACS演算部1が使用するブランチメトリック値m0と、ACS演算部2が使用するブランチメトリック値m1024とが、いずれもブランチメトリックメモリA-1に配置されているので、ブランチメトリックメモリA-1に対する読み出し制御の競合が発生している。
これに対して、本実施形態に係るビタビ復号装置10では、図4を参照して例示的に説明した通り、複数のACS演算によるメモリアクセスが競合しないように、ブランチメトリック値に関するメモリへの配置を工夫している。即ち、例えば、ACS演算部121が使用するブランチメトリック値は全てブランチメトリックメモリ141A-1に、ACS演算部121が使用するブランチメトリック値は全てブランチメトリックメモリ141A-2に配置されている。即ち、本実施形態に係るブランチメトリックメモリ141A及び141Bは、ACS演算の並列実行数(例えば「4」)以上に分割された記憶領域であって、他の前記記憶領域との間において、アクセス制御に関する競合が発生しないように構成された複数の記憶領域を含んでいる。そして、ACS演算部121乃至124は、これら記憶領域毎に、ブランチメトリック値(パスメトリック値についても同様)を読み出すACS演算がいずれか1つになるように、ACS演算により求められたブランチメトリック値(パスメトリック値についても同様)を、ブランチメトリックメモリ141Aあるいは141Bに格納する。これにより、本実施形態に係るビタビ復号装置10は、複数のACS演算によるメモリアクセスが競合することによって、演算効率が低下することを回避することができる。
また、本実施形態に係るACS演算では、図6を参照して例示的に説明した通り、例えば、1回目の演算(新たなブランチメトリック値M0を求める演算)と、2回目の演算(新たなブランチメトリック値M1を求める演算)において、いずれも前回のブランチメトリック値m0及びm4096を使用する。即ち、本実施形態に係るACS演算では、連続する2回の演算において、同じ前回のブランチメトリック値を使用する特徴がある。本実施形態に係るACS演算部121乃至124は、このような特徴をふまえて、ビタビ復号動作クロック毎に、連続してブランチメトリックメモリ141Aあるいは141Bから読み出した2つのブランチメトリック値を使用(保持)する期間を、ビタビ復号動作クロックのクロック幅の2倍の期間に伸長する。そして、ACS演算部121乃至124は、当該2つのブランチメトリック値と、ビタビ復号動作クロック毎に生成された相関値とを使用したACS演算を行う。これにより、本実施形態に係るビタビ復号装置10は、ACS演算を効率的に行なうことができる。
<第2の実施形態>
図9は、本願発明の第2の実施形態に係るビタビ復号装置20の構成を概念的に示すブロック図である。
本実施形態に係るビタビ復号装置20は、ACS演算部21、記憶部22、及び、トレースバック部23を備えている。
ACS演算部21は、畳み込み符号を用いて符号化された入力データに対するビタビ復号を行なう場合に、複数のブランチメトリック値221及びパスメトリック値222に関するACS演算を、並列あるいは擬似並列に行なう。
記憶部22は、ACS演算部21によって求められたブランチメトリック値221、及び、パスメトリック値222を記憶する。
トレースバック部23は、パスメトリック値222に対するトレースバックにおいて、記憶部22からパスメトリック値222を読み出す読み出しアドレス231を、読み出しアドレス231を示すバレルシフタ230に対して、前回読み出したパスメトリック値222をシフト入力することにより生成する。
本実施形態に係るビタビ復号装置10は、畳み込み符号を用いて符号化されたデータをビタビ復号によって復号する場合に、誤り訂正能力を向上すると共に、ビタビ復号処理を高速化することを可能とする。その理由は、ビタビ復号装置20は、ブランチメトリック値及びパスメトリック値に関する複数のACS演算を並列に行なうとともに、トレースバックにおいて、パスメトリック値を読み出す読み出しアドレスを、その読み出しアドレスを示すバレルシフタに対して、前回読み出したパスメトリック値をシフト入力することにより生成するからである。
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。