(57)【特許請求の範囲】
【請求項１】
状態［２ｎ］及び状態［２ｎ＋１］が、それぞれ状態［ｎ］又は状態［ｎ＋２K-2］（ｎ＝０，１，…２K-2−１）に遷移するよう設定された２K-1 個の内部状態を有し、拘束長ｋの畳み込み符号からなる符号系列を復号するビタビ復号器であって、
前記内部状態間の状態遷移を表すブランチ毎に、該ブランチを経由する際に入力されるべき既知の符号と実際に入力された符号との距離を表すブランチメトリックを算出するブランチメトリック算出手段と、
前記内部状態毎に、該内部状態に到るまでに選択されたブランチの経路であるパスを記憶するパス記憶手段と、
前記内部状態毎に、前記パス記憶手段に記憶されたパスについての前記ブランチメトリックの積算値であるパスメトリックを記憶するパスメトリック記憶手段と、
同一の内部状態に遷移する一対の内部状態についての各パスメトリックに、遷移先の内部状態に到るブランチのブランチメトリックをそれぞれ加算することにより、遷移先の内部状態に到る一対のパスのパスメトリックを算出し、該算出されたパスメトリックの小さい方のパスを、遷移先の内部状態についての新たなパスとして前記パス記憶手段及び前記パスメトリック記憶手段の内容を更新する２M （Ｍ≧１）個のＡＣＳ計算手段と、
前記パス記憶手段及び前記パスメトリック記憶手段に対するデータの読み書きを制御するメモリ制御手段と、
を備え、
前記パス記憶手段及び前記パスメトリック記憶手段のうち少なくともいずれか一方が、それぞれを独立に制御可能な２M 個のメモリブロックＢＫ０，ＢＫ１，…ＢＫｘ（ｘ＝２M−１ ）からなり、
前記メモリ制御手段に、
前記各メモリブロックから読み出した記憶内容が、該メモリブロックに予め１対１に対応付けられた前記ＡＣＳ計算手段のいずれかにそれぞれ供給され、且つ半数の各メモリブロックＢＫｉ（ｉ＝０，１，…２M-1−１ ）には、
状態［(２・ｉ)＋２M+1・ｊ］，［(２・ｉ＋１)＋２M+1・ｊ］
（但し、ｊ＝０，１，…２K-M-3−１）
状態［(２・ｉ)＋２M+1・ｊ＋２M］，［(２・ｉ＋１)＋２M+1・ｊ＋２M］
（但し、ｊ＝２K-M-3，２K-M-3＋１，…２K-M-2−１）
残り半数の各メモリブロックＢＫｉ（ｉ＝２M-1，２M-1＋１，…２M−１ ）には、
状態［(２・ｉ)＋２M+1・ｊ］，［(２・ｉ)＋２M+1・ｊ］
（但し、ｊ＝０，１，…２K-M-3−１）
状態［(２・ｉ)＋２M+1・ｊ−２M］，［(２・ｉ＋１)＋２M+1・ｊ−２M］
（但し、ｊ＝２K-M-3，２K-M-3＋１，…２K-M-2−１）
についてのデータがそれぞれ格納されるよう、前記ＡＣＳ計算手段での処理結果を分配するデータ分配手段と、
前記各メモリブロックから、連続した２M+1 個の状態［０＋２M+1・ｊ］［１＋２M+1・ｊ］…［２M+1−１＋２M+1・ｊ］についてのデータが並列に読み出され、該データが読み出されたアドレスに前記ＡＣＳ計算手段での処理結果が書き込まれるよう前記各メモリブロックのアドレスを制御するアドレス制御手段と、
を設けたことを特徴とするビタビ復号器。
【請求項２】
前記メモリブロックには、同一状態に遷移する一対の状態［２ｎ］，［２ｎ＋１］ についてのデータが、同一アドレスにて同時に読み書きが可能なように格納されていることを特徴とする請求項１に記載のビタビ復号器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、畳み込み符号を復号するビタビ復号器に関し、特にＡＣＳ（Adder-Comparator-Selector） 計算を並列に実行するビタビ復号器に関する。
【０００２】
【従来の技術】
ビタビ復号器は、畳み込み符号の最尤復号法に使用されるものであり、既知の符号系列の中から受信符号系列に最も近い符号距離を有するものを選択し、この選択された既知の符号系列から復号データを得るものであり、訂正能力が高いことから衛星通信方式などにおける復号器として使用されている。
【０００３】
ここで、畳み込み符号とは、符号器に入力されるビット毎に、先行するいくつかのビットとのｍｏｄ２での加算結果を出力ビットとした符号であり、同時にｋビットが入力されｎビットが出力される場合、ｋ／ｎを符号化率Ｒ、また出力ビットに影響を与えるビット数Ｋを拘束長と言う。
【０００４】
例えば、図８は、拘束長Ｋ＝３，符号化率Ｒ＝１／２の畳み込み符号器１３０であり、３ビットのシフトレジスタ１３２と、２つの排他的論理和回路１３４，１３６からなる。なお、排他的論理和回路１３４，１３６の入力は、図示したものに限らず任意に設定可能である。
【０００５】
この符号器１３０において、次の時刻に出力される符号は、過去Ｋ−１ビット（図８では２ビット）の入力により表される２K-1 個の内部状態と、入力ビットとにより確定するため、符号系列は、この入力ビットに従った内部状態の状態遷移により一意に表すことができる。
【０００６】
そして、過去Ｋ−１ビットのビット列を、最も古いビットを最下位ビット（ＬＳＢ）とした数値として、この数値をそのまま内部状態を表すものとすれば、新たな入力ビットを受信した時の内部状態の遷移は、このＫ−１ビットのビット列を、ＬＳＢ側に１ビットシフトし、且つ最上位ビット（ＭＳＢ）として入力ビットを付加したものとなる。
【０００７】
例えば、状態［０］（ビット列で表現すれば‘００’）又は［１］（‘０１’）にある場合、入力ビットが０であれば状態［０］（‘００’）に遷移し、一方、入力ビットが１であれば状態［２］（‘１０’）に遷移する。つまり、状態［２ｎ］及び状態［２ｎ＋１］（ｎ＝０，１，…２K-2−１） が、それぞれ状態［ｎ］又は状態［ｎ＋２K-2 ］に遷移するのである。
【０００８】
なお、内部状態を、上記説明とは反対に、最も古いビットをＭＳＢとした数値で表すように定義した場合には、状態［ｎ］及び状態［ｎ＋２K-2 ］が、状態［２ｎ］又は状態［２ｎ＋１］に遷移することになるが、以下の説明では、前者の場合を用いるものとする。
【０００９】
また以下では、ある状態から他の状態に遷移する経路をブランチ、状態遷移に従ってブランチを連結したものをパスと呼ぶ。更に、あるブランチについて、そのブランチに対応する状態遷移が行われた時に生成されるべき既知の符号と、実際に入力された符号との距離（ハミング距離など）をブランチメトリック、パスを構成する全てのブランチのブランチメトリックを積算したものをパスメトリックと呼ぶ。
【００１０】
つまり、パスメトリックは、パスに従って状態遷移が行われた場合に生成されるべき既知の符号系列と、実際に入力された符号系列との距離を表しており、この距離が小さい（即ち、尤度が大きい）パスほど、そのパスが表す状態遷移の過程は、入力された符号系列を生成する際に実際に辿った状態遷移の過程に近いということになる。
【００１１】
なお、上述したように、ある状態に合流するブランチ（即ちパス）は、必ず２つずつ存在する。このため、新たな符号が入力される毎に、各内部状態に到る各一対のパスのパスメトリックをそれぞれ算出し、算出されたパスメトリックの小さい方を、その内部状態についての生き残りパスとして選択する手順を繰り返すことにより、各時刻毎に各内部状態についての生き残りパスを順次定め、最終的に各内部状態の生き残りパスの中から、尤度が最大であるパスを最尤パスとして選択すれば、この最尤パスから入力された符号系列を特定することができ、ひいては復号データを生成することができるのである。
【００１２】
ここで、図９は、このような処理を実現するビタビ復号器の一般的な構成を表すブロック図である。
図９に示すように、このビタビ復号器１０２では、内部状態毎に該内部状態に到るパスを記憶するパスメモリ１０６と、同じく内部状態毎に、パスメモリ１０６に記憶されたパスのパスメトリックを記憶するパスメトリック（ＰＭ）メモリ１０８と、ＰＭメモリ１０８から同一状態に遷移する一対の内部状態についてのパスメトリックを読み込んで、ブランチメトリックとの加算を行うことにより、新たなブランチが追加された一対のパスのパスメトリックを算出し、この算出されたパスメトリックの小さい方を生き残りパスとして選択するＡＣＳ計算を実行し、その処理結果をパスメモリ１０６及びＰＭメモリ１０８に書き込むＡＣＳ回路１１０と、ＡＣＳ回路１１０での処理に従って、パスメモリ１０６及びＰＭメモリ１０８のアドレスを制御するアドレス制御回路１２２ａ，１２２ｂと、決められた長さの符号系列についての処理を終了する毎に、ＰＭメモリ１０８の記憶内容に基づいてパスメトリックの最も小さい内部状態を検出する最尤パス検出器１２４と、この最尤パス検出器１２４にて検出された内部状態に対応するパスを、パスメモリ１０６から読み出して、データを復元し誤り訂正後のデータとして出力する最尤復号器１２６とを備えている。
【００１３】
また、パスメモリ１０６は、それぞれが全ての内部状態についてのデータを格納できるように構成された一対のメモリブロック１０６ａ，１０６ｂからなり、一方が読み込みに使用されている時には、他方が書き込みに使用されるように、セレクタ１２０ａ，１２０ｂを介して制御され、また、ＰＭメモリ１０８も同様に一対のメモリブロック１０８ａ，１０８ｂからなり、セレクタ１１６ａ，１１６ｂを介して制御されるように構成されている。
【００１４】
このように構成されたビタビ復号器１０２の動作を、拘束長Ｋ＝６として具体的に説明する。即ち、このビタビ復号器１０２では、３２（２5 ）個（状態［０］，［１］，…［３１］と表記する）の状態を有しており、また、各メモリブロック１０６ａ，１０６ｂ，１０８ａ，１０８ｂでは、状態［ｉ］のデータはｉ番地といったように、各状態毎に決められたアドレスにデータを格納するようにされている。
【００１５】
まず、ＰＭメモリ１０８の一方のメモリブロックを読込用，他方のメモリブロックを書込用に設定し、読込用に設定されたメモリブロックから、遷移先の状態が等しくなる一対の状態（例えば［０］，［１］）についてのパスメトリックを読み込んで、予め計算されたブランチメトリックとのＡＣＳ計算を行い、その処理結果を、書込用に設定されたメモリブロックに書き込む。このとき、各処理結果は、遷移先の状態（［０］，［１６］）に対応したアドレスに書き込まれる。以下、同様に、読込用に設定されたメモリブロックから状態［２ｎ］，［２ｎ＋１］（ｎ＝０，１，…１５）についてのパスメトリックを読み込んで、ＡＣＳ計算を行い、その処理結果を、書込用に設定されたメモリブロックの、遷移先の状態［ｎ］，［ｎ＋１６］に対応したアドレスに書き込む処理を順次繰り返すことにより、全ての状態［０］〜［３１］についてパスメトリックの更新が一通り終了すると、メモリブロック１０８ａ，１０８ｂの設定を読込用と書込用とで入れ替えて、同様の処理を繰り返す。
【００１６】
即ち、このようにＰＭメモリ１０８が一対のメモリブロック１０８ａ，１０８ｂを必要とするのは、読み込んだデータが格納されていたアドレスと、処理後に格納すべきデータのアドレスとが異なっているため、メモリブロックが一つしかない場合、読み出されていない未処理のデータに新たなデータが上書きされてしまい、正しく処理をすることができなくなってしまうからである。
【００１７】
なお、パスメモリ１０６についても、選択されたパスに従って、一つ前の内部状態のパスを読み込んで、その内容を、新たに追加されたブランチを表すデータを加えたものに更新し、遷移先の状態に対応したアドレスに書き込むといった、ＰＭメモリ１０８とほぼ同様の手順により内容の更新が行われている。
【００１８】
このようなビタビ復号器１０２では、一つの符号を受信する毎に、２K-1 個の各内部状態毎に同様の処理を行わねばならない。従って、ＡＣＳ回路１１０では、符号が入力される早さの２K-1 倍以上のクロックを使用して、ＡＣＳ計算を行わなければならず、回路設計が難しいだけでなく、高速に動作する部品を用いて装置を構成しなければならないため、装置が非常に高価なものとなってしまう。
【００１９】
そこで、通常は、特開平８−３４０２６２号に開示されているように、ＡＣＳ回路での動作速度を抑えるために、上述のＡＣＳ回路１１０を多重化することが行われている。
そして、このようにＡＣＳ回路を多重化した場合、各ＡＣＳ回路を並列動作させるために、パスメモリ１０６やＰＭメモリ１０８も、各ＡＣＳ回路に対応して、独立に制御可能な複数の部分に分割する必要があり、分割された部分毎に、一対のメモリブロックが設けられていた。
【００２０】
【発明が解決しようとする課題】
ところで、パスメモリ１０６及びＰＭメモリ１０８では、全データの格納に必要なワード数（アドレス数）が符号化時の拘束長Ｋにより決定され、各ワード毎のビット数が、パスメモリ１０６では、最尤復号器からデータ出力を行うまでに蓄積される符号数（以下、フレーム数という）により、ＰＭメモリ１０８では１符号当たりのビット数とフレーム数とにより決定される。
【００２１】
そして、このようなビタビ復号器１０２を移動体通信機などにて使用するには、小型で且つできるだけ高い誤り訂正能力を有することが要求される。
しかし、誤り訂正能力を高くするには、拘束長Ｋやフレーム数を大きくしたり、符号化率Ｒを小さく（即ち、１符号当たりのビット数を大きく）する必要があり、従って、パスメモリ１０６やＰＭメモリ１０８の容量を増大させなければならない。しかも、上述の装置では、同じ容量のものを各一対ずつ用意しなければならないため、パスメモリ１０６やＰＭメモリ１０８が大型化してしまい、装置を小型化する要求に反してしまうという問題があった。
【００２２】
本発明は、パスメモリやパスメトリックメモリの削減して装置の小型化を図ることが可能なビタビ復号器を提供することを目的とする。
【００２３】
【課題を解決するための手段】
上記目的を達成するためになされた本発明のビタビ復号器では、ブランチメトリック算出手段が、内部状態間の状態遷移を表すブランチ毎に、ブランチを経由する際に入力されるべき設定符号と実際に入力された実符号との距離を表すブランチメトリックをそれぞれ算出する。そして、パス記憶手段に記憶された、各内部状態に到るまでに選択されたブランチの経路であるパスと、パスメトリック記憶手段に記憶された、パス記憶手段に記憶されたパスについてのブランチメトリックの積算値であるパスメトリックとに基づき、ＡＣＳ計算手段が、同一の内部状態に遷移する一対の内部状態についての各パスメトリックに、遷移先の内部状態に到るブランチのブランチメトリックをそれぞれ加算することにより、遷移先の内部状態に到る一対のパスのパスメトリックを算出し、該算出されたパスメトリックの小さい方のパスを、遷移先の内部状態についての新たなパスとしてパス記憶手段及びパスメトリック記憶手段の内容を更新する。
【００２４】
なお、本発明では、ＡＣＳ計算手段が２M 個並列に設けられていると共に、パス記憶手段及びパスメトリック記憶手段のうち少なくともいずれか一方が、それぞれを独立に制御可能な２M 個のメモリブロックＢＫ０，ＢＫ１，…ＢＫｘ（ｘ＝２M−１ ）からなるように構成されている。
【００２５】
そして、アドレス制御手段により、各メモリブロックから連続した２M+1 個の状態［０＋ｊ・２M+1］［１＋ｊ・２M+1］…［２M+1−１＋ｊ・２M+1］についてのデータが並列に読み出され、この読み出されたデータは、データ分配手段により、格納されていたメモリブロックと予め１対１に対応付けられたＡＣＳ計算手段にそれぞれ供給され処理される。このＡＣＳ計算手段での処理結果は、データ分配手段により、半数の各メモリブロックＢＫｉ（ｉ＝０，１，…２M-1 −１）には、
状態［(２・ｉ)＋２M+1・ｊ］，［(２・ｉ＋１)＋２M+1・ｊ］
（但し、ｊ＝０，１，…２K-M-3−１）
状態［(２・ｉ)＋２M+1・ｊ＋２M］，［(２・ｉ＋１)＋２M+1・ｊ＋２M］
（但し、ｊ＝２K-M-3，２K-M-3＋１，…２K-M-2−１）
残り半数の各メモリブロックＢＫｉ（ｉ＝２M-1，２M-1＋１，…２M−１ ）には、
状態［(２・ｉ)＋２M+1・ｊ］，［(２・ｉ)＋２M+1・ｊ］
（但し、ｊ＝０，１，…２K-M-3−１）
状態［(２・ｉ)＋２M+1・ｊ−２M］，［(２・ｉ＋１)＋２M+1・ｊ−２M］
（但し、ｊ＝２K-M-3，２K-M-3＋１，…２K-M-2−１）
についてのデータがそれぞれ格納されるよう分配され、この分配されたデータが、アドレス制御手段により、先にデータが読み出された同じアドレスに書き込まれる。
【００２６】
このように、本発明のビタビ復号器においては、同一状態に遷移する一対の状態［２ｎ］及び［２ｎ＋１］（ｎ＝０，１，…２K-2−１） についてのデータを、同じメモリブロックから読み出して同じＡＣＳ計算手段にて処理し、各ＡＣＳ計算手段での処理結果を、従来装置のように内部状態毎に決められたアドレスに書き込むのではなく、内部状態毎に決められたメモリブロック、且つ処理のために先にデータが読み出されたアドレスに書き込むようにされている。
【００２７】
つまり、全内部状態についてデータの更新が一通り終了すると、各データが格納されているアドレスは、処理前とは異なったものとなる。しかし、各メモリブロックには、それぞれ処理前と同じ内部状態のデータが格納されているため、各メモリブロック毎に、アクセスする順番を変更しさえすれば、各ＡＣＳ計算手段は、各内部状態についてのデータが、常に同じ組み合わせで供給され、同様の処理を繰り返すことができるのである。
【００２８】
従って、本発明のビタビ復号器によれば、各ＡＣＳ計算手段毎に、２重にメモリブロックを設けなくても、全ての内部状態についてのデータを、未処理のデータに処理結果を上書きしてしまうことなく処理することができる。
その結果、パス記憶手段及びパスメトリック記憶手段の全体としての記憶容量を半分に削減できるため装置を小型化でき、また、従来と同じ記憶容量を用いるのであれば、より、誤り訂正能力の高い復号を行うことが可能となる。
【００２９】
なお、メモリブロックには、同一状態に遷移する一対の状態［２ｎ］，［２ｎ＋１］ についてのデータが、同一番地にて同時に読み書きが可能なように格納されていてもよい。
この場合、メモリブロックからの読込時、及びメモリブロックへの書込時に、一回の操作で実行することができるため、処理の高速化を図ることができる。
【００３０】
【発明の実施の形態】
以下に本発明の実施例を図面と共に説明する。
図１は、符号化率Ｒが１／２，拘束長Ｋが６である畳み込み符号を復号する本実施例のビタビ復号器２の全体構成を表すブロック図である。
【００３１】
即ち、本実施例のビタビ復号器２は、入力信号１ビット当たり２ビットの符号に符号化された符号系列を復号するものであり、３２（＝２5 ）個の内部状態（状態［０］，［１］，…［３１］）を有する。但し、内部状態を識別する数値は、符号化時に次の符号を決める過去５ビットのビット列を、最も古いビットを最下位ビット（ＬＳＢ）として数値表現したものであり、各内部状態は、図２に示すように、右側の状態から矢印の先に示された左側の状態、例えば、状態［１０］であれば、状態［５］又は［２１］に遷移するものとする。
【００３２】
図１に示すように、本実施例のビタビ復号器２は、各内部状態に到る各一対のブランチについて、そのブランチに対応する状態遷移が行われた時に生成されるべき既知の符号と実際に当該復号器２に入力された符号との距離、即ちブランチメトリックを算出するブランチメトリック（ＢＭ）計算回路４と、内部状態毎にその内部状態に到る選択された唯一のパスを記憶するパスメモリ６（６ａ〜６ｄ）と、同じく内部状態毎にパスメモリ６に記憶されたパスのパスメトリックを記憶するパスメトリック（ＰＭ）メモリ８（８ａ〜８ｄ）と、ＰＭメモリ８から同一状態に遷移する一対の内部状態についてのパスメトリックを読み込んで、ブランチメトリックとの加算を行うことにより、新たなブランチが追加された同一の内部状態に到る一対のパスのパスメトリックを算出し、この算出されたパスメトリックの小さい方を生き残りパスとして選択するＡＣＳ計算を実行し、その処理結果によりＰＭメモリ８の記憶内容を更新する４個のＡＣＳ回路１０（１０ａ〜１０ｄ）と、ＡＣＳ回路１０での処理結果に基づきパスメモリ６の記憶内容を更新する４個のパス更新回路１２（１２ａ〜１２ｄ）とを備えている。
【００３３】
なお、パスメモリ６は、独立に制御可能な４つのメモリブロック６ａ〜６ｄからなり、各メモリブロック６ａ〜６ｄから読み出されたデータは、それぞれ決められたパス更新回路１２ａ〜１２ｄに入力されるように構成されている。
また、ＰＭメモリ８も、独立に制御可能な４つのメモリブロック８ａ〜８ｄからなり、メモリブロック８ａ，８ｂから読み出されたデータは、それぞれ決めれたＡＣＳ回路１０ａ，１０ｂに入力され、また、メモリブロック８ｃ，８ｄから読み出されたデータは、それぞれバッファ９ａ，９ｂを介して決められたＡＣＳ回路１０ｃ，１０ｄに入力されるように構成されている。
【００３４】
また、本実施例のビタビ復号器２は、ＡＣＳ回路１０ａから出力されるデータを上位ビット、ＡＣＳ回路１０ｂから出力されるデータを下位ビットとして合成し、ＰＭメモリ８への書込データを生成する合成回路１４ａと、ＡＣＳ回路１０ｃから出力されるデータを上位ビット、ＡＣＳ回路１０ｄから出力されるデータを下位ビットとして合成し、ＰＭメモリ８への書込データを生成する合成回路１４ｂと、ＰＭメモリ８のメモリブロック８ａ〜８ｄ毎に設けられ、選択信号に従って、合成回路１４ａ，１４ｂのいずれかからの書込データをメモリブロック８ａ〜８ｄにそれぞれ供給するセレクタ１６ａ〜１６ｄと、パス更新回路１２ａから出力されるデータを上位ビット、パス更新回路１２ｂから出力されるデータを下位ビットとして合成し、パスメモリ６への書込データを生成する合成回路１８ａと、パス更新回路１２ｃから出力されるデータを上位ビット、パス更新回路１２ｄから出力されるデータを下位ビットとして合成し、パスメモリ６への書込データを生成する合成回路１８ｂと、パスメモリ６のメモリブロック６ａ〜６ｄ毎に設けられ、選択信号に従って、合成回路１８ａ，１８ｂのいずれかからの書込データを各メモリブロック６ａ〜６ｄにそれぞれ供給するセレクタ２０ａ〜２０ｄと、パスメモリ６，ＰＭメモリ８のアドレス信号，セレクタ１６ａ〜１６ｄ，２０ａ〜２０ｄの選択信号や、回路全体を同期して動作させるためのタイミング信号等を生成するアドレス制御回路２２とを備えている。
【００３５】
つまり、各ＡＣＳ回路１０ａ〜１０ｄは、それぞれＰＭメモリ８の決められたメモリブロック８ａ〜８ｄからデータを読み込んで、任意のメモリブロック８ａ〜８ｄに処理結果を書き込むことができるように構成されており、また、同様にパス更新回路１２ａ〜１２ｄは、それぞれパスメモリ６の決められたメモリブロック６ａ〜６ｄからデータを読み込んで、任意のメモリブロック６ａ〜６ｄに処理結果を書き込むことができるように構成されている。
【００３６】
更に、本実施例のビタビ復号器２は、決められた長さの符号系列（本実施例では１６符号分，以下、蓄積符号長という）についての処理を終了する毎に、ＰＭメモリ８の記憶内容に基づいてパスメトリックの最も小さい内部状態を検出する最尤パス検出器２４と、この最尤パス検出器にて検出された内部状態に対応するパスをパスメモリ６から読み出し、この読み出されたパスに基づいて特定される符号系列に従って復号を行うことにより誤り訂正された復号データを生成する最尤復号器２６とを備えている。
【００３７】
ここで、図３は、パスメモリ６及びＰＭメモリ８の構成を表す説明図であり、図３（ａ）に示すように、パスメモリ６は、蓄積符号長の２倍のビット幅（本実施例では３２ビット幅）でデータが読み書きされ、このうち半分（本実施例では１６ビット）ずつに分割された上位ワードと下位ワードとで、異なる内部状態のパスを格納するようにされている。
【００３８】
また、パスメモリ６の各メモリブロック６ａ〜６ｄには、内部状態の総数２K-1 （本実施例では３２（Ｋ＝６））を、メモリブロック数２M （本実施例では４（Ｍ＝２））で割った２K-1／２M（本実施例では８）個分のデータ（パス）がそれぞれ格納され、しかも、各アドレスには２つの内部状態についてのデータが格納されるため、各メモリブロック６ａ〜６ｄは、格納されるデータ数の半分（本実施例では４）のアドレスにより制御される。
【００３９】
なお、パスメモリ６に格納されたデータの各ビットは、同じ内部状態に到る一対のブランチの一方を０，他方を１として各内部状態毎に定義された１ビットのデータを表しており、このデータを、ＡＣＳ計算を繰り返すことにより順次選択されるブランチに対応して、順番に並べることによりパスを表している。
【００４０】
つまり、本実施例においてパスメモリ６の各メモリブロック６ａ〜６ｄは、最大１６個のブランチからなるパスを８個ずつ格納し、この８個のパスを、４つのアドレス（０〜３番地）にて一度に２つずつ読み書きできるように構成されている。
【００４１】
一方、ＰＭメモリ８は、図３（ｂ）に示すように、蓄積符号長をＮｂ（本実施例では１６）ビット，１符号当たりのビット数をＮｃ（本実施例では２）ビットとすると、２・｛（ｌｏｇ2 Ｎｂ・Ｎｃ）＋１｝ビット幅（本実施例では１２ビット幅）でデータが読み書きされ、このうち半分（本実施例では６ビット）ずつに分割された上位ワードと下位ワードとで、異なる内部状態のデータ（パスメトリック）を格納するようにされている。
【００４２】
即ち、Ｎｂ個のブランチからなるパスのパスメトリックは、最大Ｎｂ・Ｎｃ（本実施例では３２）の値をとるため、これを２進数で表すには、一つの内部状態当たり｛（ｌｏｇ2 Ｎｂ・Ｎｃ）＋１｝ビット幅が必要となるのである。
また、ＰＭメモリ８の各メモリブロック８ａ〜８ｄには、パスメモリ６のメモリブロック６ａ〜６ｄと全く同様に、２K-1／２M（本実施例では８）個分のデータ（パスメトリック）がそれぞれ格納され、しかも、各アドレスには各一対のデータが格納されるため、各メモリブロック８ａ〜８ｄは、それぞれ格納されるデータ数の半分（本実施例では４）のアドレスにより制御される。
【００４３】
つまり、本実施例においてＰＭメモリ８の各メモリブロック８ａ〜８ｄは、数値０〜３２で表されるパスメトリックを８個ずつ格納し、この８個のパスメトリックを、４つのアドレス（０〜３番地）にて一度に２つずつ読み書きできるように構成されている。
【００４４】
次に、アドレス制御回路２２は、パスメモリ６及びＰＭメモリ８を制御するために、２種類のアドレス生成回路３０，４０を備えている。このうち、メモリブロック６ａ，６ｂ，８ａ，８ｂを制御するためのアドレスを生成する第１アドレス生成回路３０は、図４に示すように、３ビット出力（Ｑ０〜Ｑ２）のアドレスカウンタ３２と、最上位ビットＱ２がLow レベルの時に出力Ｑ０、Highレベルの時に出力Ｑ１を下位アドレスＡ０として出力するセレクタ３４と、ビットＱ２がLow レベルの時に出力Ｑ１、Highレベルの時に出力Ｑ０を上位アドレスＡ１として出力するセレクタ３６とからなる。つまり、この第１アドレス生成回路３０は、図４中の表Ｈ１に示すように、０→１→２→３→０→２→１→３の順序で変化するアドレスを生成するように構成されている。
【００４５】
一方、メモリブロック６ｃ，６ｄ，８ｃ，８ｄを制御するためのアドレスを生成する第２アドレス生成回路４０は、図５に示すように、４ビット出力（Ｑ０〜Ｑ３）のアドレスカウンタ４２と、出力Ｑ０，Ｑ１を反転させた反転出力＊Ｑ０，＊Ｑ１をそれぞれ生成する反転回路４７，４８と、アドレスカウンタ４２の出力Ｑ２，Ｑ３に従って、（Ｑ３，Ｑ２）が（０，０）ならばＱ０，（０，１）ならば＊Ｑ１，（１，０）ならば＊Ｑ０，（１，１）ならばＱ１を選択して、下位アドレスＡ０として出力するセレクタ４４と、（Ｑ３，Ｑ２）が、（０，０）ならばＱ１，（０，１）ならばＱ０，（１，０）ならば＊Ｑ１，（１，１）ならば＊Ｑ０を選択して、上位アドレスＡ１として出力するセレクタ４６とからなる。つまり、この第２アドレス生成回路４０は、図５中の表Ｈ２に示すように、０→１→２→３→１→３→０→２→３→２→１→０→２→０→３→１の順序で変化するアドレスを生成するように構成されている。
【００４６】
なお、アドレス制御回路２２には、第２アドレス生成回路４０が生成するアドレスを、一時的に記憶するアドレスバッファ（図示せず）も設けられている。
また、本実施例では、各メモリブロックを制御するアドレスの数Ｎｍが４の場合を説明しているが、アドレスを変化させる順番は、このアドレスの数Ｎｍによって異なり、一般的に、第１アドレス生成回路は、ｌｏｇ2Ｎｍ ビットのカウンタの出力表に従ってアドレスを変化させ、一通りの変化（即ち、Ｎｍ個のアドレスの出力）を終了する毎に、出力表の各値を上位ビット側にシフトさせ、キャリーアウトした最上位ビットの値を最下位ビットの値として付加することにより作成される出力表に順次切り換え、この切り換えた出力表に従ってアドレスを出力するように構成すればよい。
【００４７】
また、第２アドレス生成回路は、同様に一通りの変化を終了する毎に、出力表の各値を上位ビット側にシフトさせ、キャリーアウトした最上位ビットの値を反転させて最下位ビットに付加することにより作成される出力表に順次切り換え、この切り換えた出力表に従ってアドレスを出力するように構成すればよい。
【００４８】
次に、以上のように構成された本実施例のビタビ復号器２の動作を、ＰＭメモリ８へのデータの読み書きを中心にして説明する。
ここで、図６は、ＰＭメモリ８の各メモリブロック８ａ〜８ｄでのデータの格納状態を表す説明図であり、図７は、本実施例のビタビ復号器２の各部の動作を表すタイミング図である。なお、以下では、状態［Ｘ］についてのデータを、データ｛Ｘ｝と表記するものとする。
【００４９】
図６に示すように、初期状態（更新回数０）の時、ＰＭメモリ８のメモリブロック８ａには、０番地にデータ｛０｝｛１｝，１番地にデータ｛８｝｛９｝，２番地にデータ｛２０｝｛２１｝，３番地にデータ｛２８｝｛２９｝が格納され、メモリブロック８ｂには、０番地にデータ｛２｝｛３｝，１番地にデータ｛１０｝｛１１｝，２番地にデータ｛２２｝｛２３｝，３番地にデータ｛３０｝｛３１｝が格納され、メモリブロック８ｃには、０番地にデータ｛４｝｛５｝，１番地にデータ｛１２｝｛１３｝，２番地にデータ｛１６｝｛１７｝，３番地にデータ｛２４｝｛２５｝が格納され、メモリブロック８ｄには、０番地にデータ｛６｝｛７｝，１番地にデータ｛１４｝｛１５｝，２番地にデータ｛１８｝｛１９｝，３番地にデータ｛２６｝｛２７｝が格納されている。
【００５０】
また、この時、第１及び第２アドレス生成回路３０，４０のアドレスカウンタ３２，４２はゼロクリアされており、第１アドレス生成回路３０が生成するアドレス（以下、第１アドレスという），第２アドレス生成回路４０が生成するアドレス（以下、第２読出アドレスという），及びアドレスバッファに格納されたアドレス（以下、第２書込アドレスという）は、いずれも０番地に設定されているものとする。
【００５１】
この状態から、図７に示すように、まず時刻ｔ１では、第２読出アドレス（ここでは０番地）に従って、メモリブロック８ｃ，８ｄからデータ｛４｝｛５｝及び｛６｝｛７｝を読み出して、バッファ９ａ，９ｂに格納する。
続く時刻ｔ２では、第１アドレス（ここでは０番地）に従って、メモリブロック８ａ，８ｂからデータ｛０｝｛１｝及び｛２｝｛３｝を読み出してＡＣＳ回路１０ａ，１０ｂに供給すると共に、先にバッファ９ａ，９ｂに格納されているデータ｛４｝｛５｝及び｛６｝｛７｝を読み出してＡＣＳ回路１０ｃ，１０ｄに供給する。
【００５２】
この時、ＡＣＳ回路１０ａは、供給された一対のデータ｛０｝｛１｝に基づきＡＣＳ計算を行って一対のデータ｛０｝｛１６｝を生成し（図２参照）、この一対のデータのうち一方のデータ｛０｝のみ出力する。同様に他のＡＣＳ回路１０ｂ〜１０ｄでも、それぞれ供給された各一対のデータ｛２｝｛３｝，｛４｝｛５｝，｛６｝｛７｝に基づいて、各一対のデータ｛１｝｛１７｝，｛２｝｛１８｝，｛３｝｛１９｝を生成し、このうち各一方のデータ｛１｝｛２｝｛３｝のみ出力する。
【００５３】
続く時刻ｔ３では、ＡＣＳ回路１０ａ，１０ｂから出力され合成回路１４ａにて合成されたデータ｛０｝｛１｝がメモリブロック８ａに供給され、ＡＣＳ回路１０ｃ，１０ｄから出力され合成回路１４ｂにて合成されたデータ｛２｝｛３｝がメモリブロック８ｂに供給されるようにセレクタ１６ａ，１６ｂを設定し、第１アドレス（ここでは０番地）に従って、これらデータ｛０｝｛１｝及び｛２｝｛３｝をメモリブロック８ａ，８ｂに書き込む。これと共に、各ＡＣＳ回路１０ａ〜１０ｄから、データ｛０｝〜｛７｝に対するＡＣＳ計算結果のうち残り半分のデータ｛１６｝〜｛１９｝を出力する。
【００５４】
更に、アドレス制御回路２２では、第２読出アドレスをアドレスバッファに格納することで第２書込アドレスを更新すると共に、第２アドレス生成回路４０のアドレスカウンタ４２をインクリメントすることにより第２読出アドレスを更新し、この更新された第２アドレス（ここでは１番地）に従って、メモリブロック８ｃ，８ｄからデータ｛１２｝｛１３｝及び｛１４｝｛１５｝を読み出してバッファ９ａ，９ｂに格納する。
【００５５】
続く時刻ｔ４では、合成回路１４ａにて合成されたデータ｛１６｝｛１７｝がメモリブロック８ｃに供給され、合成回路１４ｂにて合成されたデータ｛１８｝｛１９｝がメモリブロック８ｄに供給されるようにセレクタ１６ｃ，１６ｄを設定し、第２書込アドレス（ここでは０番地）に従って、これらデータ｛１６｝｛１７｝及び｛１８｝｛１９｝をメモリブロック８ｃ，８ｄに書き込む。
【００５６】
これと共に、アドレス制御回路２２では、第１アドレス生成回路３０のアドレスカウンタ３２をインクリメントすることにより第１アドレスを更新し、以下、先の時刻ｔ２の場合と全く同様に動作して、更新された第１アドレス（ここでは１番地）に従ってメモリブロック８ａ，８ｂからデータ｛８｝｛９｝及び｛１０｝｛１１｝の読込、メモリブロック８ａ，８ｂ及びバッファ９ａ，９ｂから読み込んだデータ｛８｝〜｛１５｝に対するＡＣＳ計算、各ＡＣＳ回路１０ａ〜１０ｄからＡＣＳ計算結果のうち半分のデータ｛２０｝〜｛２３｝の出力が行われる。
【００５７】
続く時刻ｔ５では、先の時刻ｔ３の場合と全く同様に動作して、第１アドレス（ここでは１番地）に従ってメモリブロック８ａ，８ｂへのデータ｛２０｝｛２１｝及び｛２２｝｛２３｝の書込、各ＡＣＳ回路１０ａ〜１０ｄからデータ｛８｝〜｛１５｝に対するＡＣＳ計算結果のうち残り半分のデータ｛４｝〜｛７｝の出力、第２書込アドレス及び第２読出アドレスの更新、更新された第２読出アドレス（ここでは２番地）に従ってメモリブロック８ｃ，８ｄから読み出したデータ｛１６｝｛１７｝及び｛１８｝｛１９｝のバッファ９ａ，９ｂへの格納が行われる。
【００５８】
続く時刻ｔ６では、先の時刻ｔ４の場合と同様に動作して、第２書込アドレス（ここでは１番地）に従って、データ｛４｝｛５｝及び｛６｝｛７｝のメモリブロックの８ｃ，８ｄへの書込、第１アドレスの更新、更新された第１アドレス（ここでは２番地）に従ってメモリブロック８ａ，８ｂからデータ｛２０｝｛２１｝及び｛２２｝｛２３｝の読込、メモリブロック８ａ，８ｂ及びバッファ９ａ，９ｂから読み込んだデータ｛１６｝〜｛２３｝に対するＡＣＳ計算、各ＡＣＳ回路１０ａ〜１０ｄからＡＣＳ計算結果のうち半分のデータ｛１０｝｛１１｝｛８｝｛９｝の出力が行われる。
【００５９】
続く時刻ｔ７では、合成回路１４ａにて合成されたデータがメモリブロック８ｂに供給され、合成回路１４ｂにて合成された書込データがメモリブロック８ａに供給されるようにセレクタ１６ａ，１６ｂが設定される以外は、先の時刻ｔ３，ｔ５の場合と全く同様に動作する。
【００６０】
つまり、第１アドレス（ここでは２番地）に従って、メモリブロック８ａ，８ｂへのデータ｛８｝｛９｝及び｛１０｝｛１１｝の書込、各ＡＣＳ回路１０ａ〜１０ｄからデータ｛１６｝〜｛２３｝に対するＡＣＳ計算結果のうち残り半分のデータ｛２６｝｛２７｝｛２４｝｛２５｝の出力、第２書込アドレス及び第２読出アドレスの更新、更新された第２読出アドレス（ここでは３番地）に従ってメモリブロック８ｃ，８ｄから読み出したデータ｛２４｝｛２５｝及び｛２６｝｛２７｝のバッファ９ａ，９ｂへの格納が行われる。
【００６１】
続く時刻ｔ８では、合成回路１４ａにて合成されたデータ｛２４｝｛２５｝がメモリブロック８ｃに供給され、合成回路１４ｂにて合成されたデータ｛２６｝｛２７｝がメモリブロック８ｄに供給されるようにセレクタ１６ａ，１６ｂが設定される以外は、先の時刻ｔ４，ｔ６の場合と全く同様に動作する。
つまり、第２書込アドレス（ここでは２番地）に従ってメモリブロックの８ｃ，８ｄへのデータ｛２４｝｛２５｝及び｛２６｝｛２７｝の書込、第１アドレスの更新、更新された第１アドレス（ここでは３番地）に従ってメモリブロック８ａ，８ｂからデータ｛２８｝｛２９｝及び｛３０｝｛３１｝の読込、メモリブロック８ａ，８ｂ及びバッファ９ａ，９ｂから読み込んだデータ｛２４｝〜｛３１｝に対するＡＣＳ計算、各ＡＣＳ回路１０ａ〜１０ｄからＡＣＳ計算結果のうち半分のデータ｛３０｝｛３１｝｛２８｝｛２９｝の出力が行われる。
【００６２】
続く時刻ｔ９では先の時刻ｔ７の場合と全く同様に動作して、第１アドレス（ここでは３番地）に従ってメモリブロック８ａ，８ｂへのデータ｛２８｝｛２９｝及び｛３０｝｛３１｝の書込、各ＡＣＳ回路１０ａ〜１０ｄからデータ｛２４｝〜｛３１｝に対するＡＣＳ計算結果のうち残り半分のデータ｛１４｝｛１５｝｛１２｝｛１３｝の出力、第２書込アドレス及び第２読出アドレスの更新、更新された第２アドレス（ここでは１番地）に従ってメモリブロック８ｃ，８ｄから読み込んだデータ｛４｝｛５｝及び｛６｝｛７｝のバッファ９ａ，９ｂへの格納が行われる。
【００６３】
続く時刻ｔ１０では先の時刻ｔ８の場合と全く同様に動作して、第２書込アドレス（ここでは３番地）に従ってメモリブロックの８ｃ，８ｄへのデータ｛１２｝｛１３｝及び｛１４｝｛１５｝の書込、第１アドレスの更新、更新された第１アドレス（ここでは０番地）に従ってメモリブロック８ａ，８ｂからデータ｛０｝｛１｝及び｛２｝｛３｝の読込、メモリブロック８ａ，８ｂ及びバッファ９ａ，９ｂから読み込んだデータ｛０｝〜｛７｝に対するＡＣＳ計算、各ＡＣＳ回路１０ａ〜１０ｄからＡＣＳ計算結果のうち半分のデータ｛０｝｛１｝及び｛２｝｛３｝の出力が行われる。
【００６４】
この時刻ｔ１０の時点で、ＰＭメモリ８に格納された全てのデータについての更新が一通り終了することになり、以後、第１アドレス，第２読出アドレス，第２書込アドレスに従って、上述した時刻ｔ３〜ｔ１０についての処理が繰り返し実行される。
【００６５】
つまり、１回目のデータ更新時には、第１アドレス生成回路３０からの第１アドレスにより制御されるメモリブロック８ａ，８ｂ、及び第２アドレス生成回路４０からの第２読出アドレス／第２書込アドレスにより制御されるメモリブロック８ｃ，８ｄは、いずれも０→１→２→３の順番で各番地のデータが読み書きされる。即ち、まず各メモリブロック８ａ〜８ｄの０番地からデータ｛０｝〜｛７｝が読み出され、ＡＣＳ計算の結果として、ＡＣＳ回路１０ａ〜１０ｄから出力される各一対のデータ｛０｝｛１６｝，｛１｝｛１７｝，｛２｝｛１８｝，｛３｝｛１９｝が、データ｛０｝｛１｝，｛２｝｛３｝，｛１６｝｛１７｝，｛１８｝｛１９｝の対に組み替えられ、これら組み替えられたデータが、各メモリブロック８ａ〜８ｄに、初期状態の時に割り当てられた状態についてのデータがそれぞれ格納されるように分配され、先にデータが読み出された０番地に書き込まれる。
【００６６】
以下、同様に、各メモリブロック８ａ〜８ｄの１番地からデータ｛８｝〜｛１５｝が読み出され、ＡＣＳ計算の結果を組み替えたデータ｛２０｝｛２１｝，｛２２｝｛２３｝，｛４｝｛５｝，｛６｝｛７｝が、各メモリブロック８ａ〜８ｄに分配され同じ１番地に書き込まれる。
【００６７】
続けて、各メモリブロック８ａ〜８ｄの２番地からデータ｛１６｝〜｛２３｝が読み出され、ＡＣＳ計算の結果を組み替えたデータ｛８｝｛９｝，｛１０｝｛１１｝，｛２４｝｛２５｝，｛２６｝｛２７｝が、各メモリブロック８ａ〜８ｄに分配され同じ２番地に書き込まれる。
【００６８】
更に、各メモリブロック８ａ〜８ｄの３番地からデータ｛２４｝〜｛３１｝が読み出され、ＡＣＳ計算の結果を組み替えたデータ｛２８｝｛２９｝，｛３０｝｛３１｝，｛１２｝｛１３｝，｛１４｝｛１５｝が、各メモリブロック８ａ〜８ｄに分配され同じ３番地に書き込まれる。
【００６９】
このようにして、全データについての１回目のデータ更新が終了した時に、各メモリブロック８ａ〜８ｄのデータ格納状態は、図６中の更新回数１の欄に示すようなものとなる。
そして、２回目のデータ更新の時には、メモリブロック８ａ，８ｂでは、０→２→１→３の順番で、一方、メモリブロック８ｃ，８ｄでは、１→３→０→２の順番で各番地のデータが読み書きされる。
【００７０】
図６中の更新回数１の欄に示された各メモリブロック８ａ〜８ｄのデータ格納状態から明らかなように、各回毎に、並列に処理されるデータの組み合わせ（即ち、データ｛０｝〜｛７｝，｛８｝〜｛１５｝，｛１６｝〜｛２３｝，｛２４｝〜｛３１｝）は常に同じであり、上述と同様に、ＡＣＳ計算の結果の組み替え、組み替えたデータの分配、読み出したアドレスへの書込が順次行われることにより、２回目のデータ更新が終了した時に、各メモリブロック８ａ〜８ｄのデータ格納状態は、図６中の更新回数２の欄に示すようなものとなる。
【００７１】
この時、メモリブロック８ａ，８ｂのデータ格納状態は、初期状態に戻っている。
以下同様に、３回目のデータ更新時には、メモリブロック８ａ，８ｂは、１回目のデータ更新時と同様に０→１→２→３番地の順番で、一方、メモリブロック８ｃ，８ｄでは、３→２→１→０の順番で各番地のデータが読み書きされることにより、３回目のデータ更新終了時には図６中の更新回数３の欄にに示すようなものとなり、更に、４回目のデータ更新時には、メモリブロック８ａ，８ｂは、２回目のデータ更新時と同様に０→２→１→３の順番で、一方、メモリブロック８ｃ，８ｄは、２→０→３→１の順番で各番地のデータが読み書きされることにより、４回目のデータ更新終了時には図６中の更新回数４の欄に示すようになものとなる。この時、メモリブロック８ａ，８ｂだけでなく、メモリブロック８ｃ，８ｄのデータ格納状態も初期状態に戻っている。
【００７２】
つまり、データ更新毎に、メモリブロック８ａ，８ｂは２つのデータ格納状態を、メモリブロック８ｃ，８ｄは４つのデータ格納状態を繰り返すことになる。なお、ここでは、ＰＭメモリ８について説明したが、パスメモリ６についてもほぼ同様の手順でデータの更新が行われる。
【００７３】
そして本実施例のビタビ復号器２では、このような処理を符号蓄積数（本実施例では１６）回だけ繰り返す毎に、最尤パス検出器２４が起動され、ＰＭメモリ８に格納されたデータ、即ち各内部状態のパスメトリックを比較して、最小のパスメトリックとなる内部状態を検出する。すると、最尤復号器２６では、最尤パス検出器２４にて検出された内部状態に従って、これに対応するパスをパスメモリ６から読み出し復号データを生成する。
【００７４】
即ち、最後の内部状態とこの内部状態に到るパスとがわかっていれば、パスを構成するブランチに従って、内部状態を逆方向に辿っていくことにより、入力された符号を特定することができ、ひいてはこの符号を復号したデータを得ることができるのである。
【００７５】
以上、説明したように、本実施例のビタビ復号器２においては、パスメモリ６及びＰＭメモリ８が、２つの内部状態についてのデータを同一番地にて同時に読み書きできるように構成されていると共に、各ＡＣＳ回路１０及びパス更新回路１２から出力されるデータを、同一状態に遷移する一対の状態についてのデータ｛２ｎ｝｛２ｎ＋１｝（ｎ＝０，１，…２K-2−１） が一緒になるよう組み替えて合成し、パスメモリ６及びＰＭメモリ８への書込データとするようにされている。
【００７６】
従って、本実施例のビタビ復号器２によれば、パスメモリ６及びＰＭメモリ８の各番地には、常に、同一状態に遷移する一対の状態についてのデータ｛２ｎ｝｛２ｎ＋１｝が格納され、これら一対のデータ｛２ｎ｝｛２ｎ＋１｝を、それぞれ一回の操作で読み書きできるので、処理の高速化を図ることができる。
【００７７】
また、本実施例のビタビ復号器２においては、各メモリブロックには、常に、初期状態の時に割り当てられた状態についてのデータがそれぞれ格納されるように、ＡＣＳ回路１０及びパス更新回路１２での処理結果からなる書込データが分配され、且つこの書込データは、処理のために先に読み出されたデータと同じ番地に書き込まれるようにされていると共に、データ更新が一通り終了する毎に変化するデータの格納状態に応じて、メモリブロック毎にデータを読み出す順番を変化させ、各内部状態についてのデータが、常に同じ組み合わせで読み出されるようにされている。
【００７８】
従って、本発明のビタビ復号器によれば、パスメモリ６やＰＭメモリ８を２重に設けたり、ＡＣＳ回路１０やパス更新回路１２での処理を複雑にすることなく、パスメモリ６やＰＭメモリに格納されたデータの更新を繰り返し実行することができる。
【００７９】
その結果、パスメモリ６及びＰＭメモリ８が２重化されている従来装置に比べて、全体の記憶容量を半分に削減できるため、装置を小型化でき、また、従来と同じ記憶容量を用いるのであれば、より、誤り訂正能力の高い復号を行うことが可能な装置を構成することができる。
【００８０】
なお、本実施例において、ブランチメトリック計算回路４がブランチメトリック算出手段に相当し、また、パスメモリ６がパス記憶手段、ＰＭメモリ８がパスメトリック記憶手段、ＡＣＳ回路１０及びパス更新回路１２がＡＣＳ計算手段、合成回路１４ａ，１４ｂ，１８ａ，１８ｂ及びセレクタ１６ａ〜１６ｄ，２０ａ〜２０ｄがデータ分配手段、アドレス制御回路２２がアドレス制御手段にそれぞれ相当する。
【図面の簡単な説明】
【図１】  実施例のビタビ復号器の全体構成を表すブロック図である。
【図２】  状態遷移の様子を表す説明図である。
【図３】  メモリブロックの構成を表す説明図である。
【図４】  第１アドレス生成回路の構成及び動作を表す説明図である。
【図５】  第２アドレス生成回路の構成及び動作を表す説明図である。
【図６】  メモリブロックのデータの格納状態が変化する様子を表す説明図である。
【図７】  実施例のビタビ復号器の各部の動作を表すタイミング図である。
【図８】  畳み込み符号を生成する符号器の構成図である。
【図９】  従来のビタビ復号器の構成を表すブロック図である。
【符号の説明】
２…ビタビ復号器    ４…ブランチメトリック計算回路
６（６ａ〜６ｄ）…パスメモリ      ９ａ，９ｂ…バッファ
８（８ａ〜８ｄ）…パスメトリック（ＰＭ）メモリ
１０（１０ａ〜１０ｄ）…ＡＣＳ回路
１２（１２ａ〜１２ｄ）…パス更新回路
１４ａ，１４ｂ，１８ａ，１８ｂ…合成回路
１６ａ〜１６ｄ，２０ａ〜２０ｄ…セレクタ
２２…アドレス制御回路    ２４…最尤パス検出器    ２６…最尤復号器
３０…第１アドレス生成回路    ３２，４２…アドレスカウンタ
３４，３６，４４，４６…セレクタ    ４０…第２アドレス生成回路
４７，４８…反転回路
【図１】
0003837913.tif 000002
【図２】
0003837913.tif 000003
【図３】
0003837913.tif 000004
【図４】
0003837913.tif 000005
【図５】
0003837913.tif 000006
【図６】
0003837913.tif 000007
【図７】
0003837913.tif 000008
【図８】
0003837913.tif 000009
【図９】
0003837913.tif 000010