JP3837913B2 - ビタビ復号器 - Google Patents
ビタビ復号器 Download PDFInfo
- Publication number
- JP3837913B2 JP3837913B2 JP15288998A JP15288998A JP3837913B2 JP 3837913 B2 JP3837913 B2 JP 3837913B2 JP 15288998 A JP15288998 A JP 15288998A JP 15288998 A JP15288998 A JP 15288998A JP 3837913 B2 JP3837913 B2 JP 3837913B2
- Authority
- JP
- Japan
- Prior art keywords
- path
- data
- address
- state
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、畳み込み符号を復号するビタビ復号器に関し、特にACS(Adder-Comparator-Selector) 計算を並列に実行するビタビ復号器に関する。
【0002】
【従来の技術】
ビタビ復号器は、畳み込み符号の最尤復号法に使用されるものであり、既知の符号系列の中から受信符号系列に最も近い符号距離を有するものを選択し、この選択された既知の符号系列から復号データを得るものであり、訂正能力が高いことから衛星通信方式などにおける復号器として使用されている。
【0003】
ここで、畳み込み符号とは、符号器に入力されるビット毎に、先行するいくつかのビットとのmod2での加算結果を出力ビットとした符号であり、同時にkビットが入力されnビットが出力される場合、k/nを符号化率R、また出力ビットに影響を与えるビット数Kを拘束長と言う。
【0004】
例えば、図8は、拘束長K=3,符号化率R=1/2の畳み込み符号器130であり、3ビットのシフトレジスタ132と、2つの排他的論理和回路134,136からなる。なお、排他的論理和回路134,136の入力は、図示したものに限らず任意に設定可能である。
【0005】
この符号器130において、次の時刻に出力される符号は、過去K−1ビット(図8では2ビット)の入力により表される2K-1 個の内部状態と、入力ビットとにより確定するため、符号系列は、この入力ビットに従った内部状態の状態遷移により一意に表すことができる。
【0006】
そして、過去K−1ビットのビット列を、最も古いビットを最下位ビット(LSB)とした数値として、この数値をそのまま内部状態を表すものとすれば、新たな入力ビットを受信した時の内部状態の遷移は、このK−1ビットのビット列を、LSB側に1ビットシフトし、且つ最上位ビット(MSB)として入力ビットを付加したものとなる。
【0007】
例えば、状態[0](ビット列で表現すれば‘00’)又は[1](‘01’)にある場合、入力ビットが0であれば状態[0](‘00’)に遷移し、一方、入力ビットが1であれば状態[2](‘10’)に遷移する。つまり、状態[2n]及び状態[2n+1](n=0,1,…2K-2−1) が、それぞれ状態[n]又は状態[n+2K-2 ]に遷移するのである。
【0008】
なお、内部状態を、上記説明とは反対に、最も古いビットをMSBとした数値で表すように定義した場合には、状態[n]及び状態[n+2K-2 ]が、状態[2n]又は状態[2n+1]に遷移することになるが、以下の説明では、前者の場合を用いるものとする。
【0009】
また以下では、ある状態から他の状態に遷移する経路をブランチ、状態遷移に従ってブランチを連結したものをパスと呼ぶ。更に、あるブランチについて、そのブランチに対応する状態遷移が行われた時に生成されるべき既知の符号と、実際に入力された符号との距離(ハミング距離など)をブランチメトリック、パスを構成する全てのブランチのブランチメトリックを積算したものをパスメトリックと呼ぶ。
【0010】
つまり、パスメトリックは、パスに従って状態遷移が行われた場合に生成されるべき既知の符号系列と、実際に入力された符号系列との距離を表しており、この距離が小さい(即ち、尤度が大きい)パスほど、そのパスが表す状態遷移の過程は、入力された符号系列を生成する際に実際に辿った状態遷移の過程に近いということになる。
【0011】
なお、上述したように、ある状態に合流するブランチ(即ちパス)は、必ず2つずつ存在する。このため、新たな符号が入力される毎に、各内部状態に到る各一対のパスのパスメトリックをそれぞれ算出し、算出されたパスメトリックの小さい方を、その内部状態についての生き残りパスとして選択する手順を繰り返すことにより、各時刻毎に各内部状態についての生き残りパスを順次定め、最終的に各内部状態の生き残りパスの中から、尤度が最大であるパスを最尤パスとして選択すれば、この最尤パスから入力された符号系列を特定することができ、ひいては復号データを生成することができるのである。
【0012】
ここで、図9は、このような処理を実現するビタビ復号器の一般的な構成を表すブロック図である。
図9に示すように、このビタビ復号器102では、内部状態毎に該内部状態に到るパスを記憶するパスメモリ106と、同じく内部状態毎に、パスメモリ106に記憶されたパスのパスメトリックを記憶するパスメトリック(PM)メモリ108と、PMメモリ108から同一状態に遷移する一対の内部状態についてのパスメトリックを読み込んで、ブランチメトリックとの加算を行うことにより、新たなブランチが追加された一対のパスのパスメトリックを算出し、この算出されたパスメトリックの小さい方を生き残りパスとして選択するACS計算を実行し、その処理結果をパスメモリ106及びPMメモリ108に書き込むACS回路110と、ACS回路110での処理に従って、パスメモリ106及びPMメモリ108のアドレスを制御するアドレス制御回路122a,122bと、決められた長さの符号系列についての処理を終了する毎に、PMメモリ108の記憶内容に基づいてパスメトリックの最も小さい内部状態を検出する最尤パス検出器124と、この最尤パス検出器124にて検出された内部状態に対応するパスを、パスメモリ106から読み出して、データを復元し誤り訂正後のデータとして出力する最尤復号器126とを備えている。
【0013】
また、パスメモリ106は、それぞれが全ての内部状態についてのデータを格納できるように構成された一対のメモリブロック106a,106bからなり、一方が読み込みに使用されている時には、他方が書き込みに使用されるように、セレクタ120a,120bを介して制御され、また、PMメモリ108も同様に一対のメモリブロック108a,108bからなり、セレクタ116a,116bを介して制御されるように構成されている。
【0014】
このように構成されたビタビ復号器102の動作を、拘束長K=6として具体的に説明する。即ち、このビタビ復号器102では、32(25 )個(状態[0],[1],…[31]と表記する)の状態を有しており、また、各メモリブロック106a,106b,108a,108bでは、状態[i]のデータはi番地といったように、各状態毎に決められたアドレスにデータを格納するようにされている。
【0015】
まず、PMメモリ108の一方のメモリブロックを読込用,他方のメモリブロックを書込用に設定し、読込用に設定されたメモリブロックから、遷移先の状態が等しくなる一対の状態(例えば[0],[1])についてのパスメトリックを読み込んで、予め計算されたブランチメトリックとのACS計算を行い、その処理結果を、書込用に設定されたメモリブロックに書き込む。このとき、各処理結果は、遷移先の状態([0],[16])に対応したアドレスに書き込まれる。以下、同様に、読込用に設定されたメモリブロックから状態[2n],[2n+1](n=0,1,…15)についてのパスメトリックを読み込んで、ACS計算を行い、その処理結果を、書込用に設定されたメモリブロックの、遷移先の状態[n],[n+16]に対応したアドレスに書き込む処理を順次繰り返すことにより、全ての状態[0]〜[31]についてパスメトリックの更新が一通り終了すると、メモリブロック108a,108bの設定を読込用と書込用とで入れ替えて、同様の処理を繰り返す。
【0016】
即ち、このようにPMメモリ108が一対のメモリブロック108a,108bを必要とするのは、読み込んだデータが格納されていたアドレスと、処理後に格納すべきデータのアドレスとが異なっているため、メモリブロックが一つしかない場合、読み出されていない未処理のデータに新たなデータが上書きされてしまい、正しく処理をすることができなくなってしまうからである。
【0017】
なお、パスメモリ106についても、選択されたパスに従って、一つ前の内部状態のパスを読み込んで、その内容を、新たに追加されたブランチを表すデータを加えたものに更新し、遷移先の状態に対応したアドレスに書き込むといった、PMメモリ108とほぼ同様の手順により内容の更新が行われている。
【0018】
このようなビタビ復号器102では、一つの符号を受信する毎に、2K-1 個の各内部状態毎に同様の処理を行わねばならない。従って、ACS回路110では、符号が入力される早さの2K-1 倍以上のクロックを使用して、ACS計算を行わなければならず、回路設計が難しいだけでなく、高速に動作する部品を用いて装置を構成しなければならないため、装置が非常に高価なものとなってしまう。
【0019】
そこで、通常は、特開平8−340262号に開示されているように、ACS回路での動作速度を抑えるために、上述のACS回路110を多重化することが行われている。
そして、このようにACS回路を多重化した場合、各ACS回路を並列動作させるために、パスメモリ106やPMメモリ108も、各ACS回路に対応して、独立に制御可能な複数の部分に分割する必要があり、分割された部分毎に、一対のメモリブロックが設けられていた。
【0020】
【発明が解決しようとする課題】
ところで、パスメモリ106及びPMメモリ108では、全データの格納に必要なワード数(アドレス数)が符号化時の拘束長Kにより決定され、各ワード毎のビット数が、パスメモリ106では、最尤復号器からデータ出力を行うまでに蓄積される符号数(以下、フレーム数という)により、PMメモリ108では1符号当たりのビット数とフレーム数とにより決定される。
【0021】
そして、このようなビタビ復号器102を移動体通信機などにて使用するには、小型で且つできるだけ高い誤り訂正能力を有することが要求される。
しかし、誤り訂正能力を高くするには、拘束長Kやフレーム数を大きくしたり、符号化率Rを小さく(即ち、1符号当たりのビット数を大きく)する必要があり、従って、パスメモリ106やPMメモリ108の容量を増大させなければならない。しかも、上述の装置では、同じ容量のものを各一対ずつ用意しなければならないため、パスメモリ106やPMメモリ108が大型化してしまい、装置を小型化する要求に反してしまうという問題があった。
【0022】
本発明は、パスメモリやパスメトリックメモリの削減して装置の小型化を図ることが可能なビタビ復号器を提供することを目的とする。
【0023】
【課題を解決するための手段】
上記目的を達成するためになされた本発明のビタビ復号器では、ブランチメトリック算出手段が、内部状態間の状態遷移を表すブランチ毎に、ブランチを経由する際に入力されるべき設定符号と実際に入力された実符号との距離を表すブランチメトリックをそれぞれ算出する。そして、パス記憶手段に記憶された、各内部状態に到るまでに選択されたブランチの経路であるパスと、パスメトリック記憶手段に記憶された、パス記憶手段に記憶されたパスについてのブランチメトリックの積算値であるパスメトリックとに基づき、ACS計算手段が、同一の内部状態に遷移する一対の内部状態についての各パスメトリックに、遷移先の内部状態に到るブランチのブランチメトリックをそれぞれ加算することにより、遷移先の内部状態に到る一対のパスのパスメトリックを算出し、該算出されたパスメトリックの小さい方のパスを、遷移先の内部状態についての新たなパスとしてパス記憶手段及びパスメトリック記憶手段の内容を更新する。
【0024】
なお、本発明では、ACS計算手段が2M 個並列に設けられていると共に、パス記憶手段及びパスメトリック記憶手段のうち少なくともいずれか一方が、それぞれを独立に制御可能な2M 個のメモリブロックBK0,BK1,…BKx(x=2M−1 )からなるように構成されている。
【0025】
そして、アドレス制御手段により、各メモリブロックから連続した2M+1 個の状態[0+j・2M+1][1+j・2M+1]…[2M+1−1+j・2M+1]についてのデータが並列に読み出され、この読み出されたデータは、データ分配手段により、格納されていたメモリブロックと予め1対1に対応付けられたACS計算手段にそれぞれ供給され処理される。このACS計算手段での処理結果は、データ分配手段により、半数の各メモリブロックBKi(i=0,1,…2M-1 −1)には、
状態[(2・i)+2M+1・j],[(2・i+1)+2M+1・j]
(但し、j=0,1,…2K-M-3−1)
状態[(2・i)+2M+1・j+2M],[(2・i+1)+2M+1・j+2M]
(但し、j=2K-M-3,2K-M-3+1,…2K-M-2−1)
残り半数の各メモリブロックBKi(i=2M-1,2M-1+1,…2M−1 )には、
状態[(2・i)+2M+1・j],[(2・i)+2M+1・j]
(但し、j=0,1,…2K-M-3−1)
状態[(2・i)+2M+1・j−2M],[(2・i+1)+2M+1・j−2M]
(但し、j=2K-M-3,2K-M-3+1,…2K-M-2−1)
についてのデータがそれぞれ格納されるよう分配され、この分配されたデータが、アドレス制御手段により、先にデータが読み出された同じアドレスに書き込まれる。
【0026】
このように、本発明のビタビ復号器においては、同一状態に遷移する一対の状態[2n]及び[2n+1](n=0,1,…2K-2−1) についてのデータを、同じメモリブロックから読み出して同じACS計算手段にて処理し、各ACS計算手段での処理結果を、従来装置のように内部状態毎に決められたアドレスに書き込むのではなく、内部状態毎に決められたメモリブロック、且つ処理のために先にデータが読み出されたアドレスに書き込むようにされている。
【0027】
つまり、全内部状態についてデータの更新が一通り終了すると、各データが格納されているアドレスは、処理前とは異なったものとなる。しかし、各メモリブロックには、それぞれ処理前と同じ内部状態のデータが格納されているため、各メモリブロック毎に、アクセスする順番を変更しさえすれば、各ACS計算手段は、各内部状態についてのデータが、常に同じ組み合わせで供給され、同様の処理を繰り返すことができるのである。
【0028】
従って、本発明のビタビ復号器によれば、各ACS計算手段毎に、2重にメモリブロックを設けなくても、全ての内部状態についてのデータを、未処理のデータに処理結果を上書きしてしまうことなく処理することができる。
その結果、パス記憶手段及びパスメトリック記憶手段の全体としての記憶容量を半分に削減できるため装置を小型化でき、また、従来と同じ記憶容量を用いるのであれば、より、誤り訂正能力の高い復号を行うことが可能となる。
【0029】
なお、メモリブロックには、同一状態に遷移する一対の状態[2n],[2n+1] についてのデータが、同一番地にて同時に読み書きが可能なように格納されていてもよい。
この場合、メモリブロックからの読込時、及びメモリブロックへの書込時に、一回の操作で実行することができるため、処理の高速化を図ることができる。
【0030】
【発明の実施の形態】
以下に本発明の実施例を図面と共に説明する。
図1は、符号化率Rが1/2,拘束長Kが6である畳み込み符号を復号する本実施例のビタビ復号器2の全体構成を表すブロック図である。
【0031】
即ち、本実施例のビタビ復号器2は、入力信号1ビット当たり2ビットの符号に符号化された符号系列を復号するものであり、32(=25 )個の内部状態(状態[0],[1],…[31])を有する。但し、内部状態を識別する数値は、符号化時に次の符号を決める過去5ビットのビット列を、最も古いビットを最下位ビット(LSB)として数値表現したものであり、各内部状態は、図2に示すように、右側の状態から矢印の先に示された左側の状態、例えば、状態[10]であれば、状態[5]又は[21]に遷移するものとする。
【0032】
図1に示すように、本実施例のビタビ復号器2は、各内部状態に到る各一対のブランチについて、そのブランチに対応する状態遷移が行われた時に生成されるべき既知の符号と実際に当該復号器2に入力された符号との距離、即ちブランチメトリックを算出するブランチメトリック(BM)計算回路4と、内部状態毎にその内部状態に到る選択された唯一のパスを記憶するパスメモリ6(6a〜6d)と、同じく内部状態毎にパスメモリ6に記憶されたパスのパスメトリックを記憶するパスメトリック(PM)メモリ8(8a〜8d)と、PMメモリ8から同一状態に遷移する一対の内部状態についてのパスメトリックを読み込んで、ブランチメトリックとの加算を行うことにより、新たなブランチが追加された同一の内部状態に到る一対のパスのパスメトリックを算出し、この算出されたパスメトリックの小さい方を生き残りパスとして選択するACS計算を実行し、その処理結果によりPMメモリ8の記憶内容を更新する4個のACS回路10(10a〜10d)と、ACS回路10での処理結果に基づきパスメモリ6の記憶内容を更新する4個のパス更新回路12(12a〜12d)とを備えている。
【0033】
なお、パスメモリ6は、独立に制御可能な4つのメモリブロック6a〜6dからなり、各メモリブロック6a〜6dから読み出されたデータは、それぞれ決められたパス更新回路12a〜12dに入力されるように構成されている。
また、PMメモリ8も、独立に制御可能な4つのメモリブロック8a〜8dからなり、メモリブロック8a,8bから読み出されたデータは、それぞれ決めれたACS回路10a,10bに入力され、また、メモリブロック8c,8dから読み出されたデータは、それぞれバッファ9a,9bを介して決められたACS回路10c,10dに入力されるように構成されている。
【0034】
また、本実施例のビタビ復号器2は、ACS回路10aから出力されるデータを上位ビット、ACS回路10bから出力されるデータを下位ビットとして合成し、PMメモリ8への書込データを生成する合成回路14aと、ACS回路10cから出力されるデータを上位ビット、ACS回路10dから出力されるデータを下位ビットとして合成し、PMメモリ8への書込データを生成する合成回路14bと、PMメモリ8のメモリブロック8a〜8d毎に設けられ、選択信号に従って、合成回路14a,14bのいずれかからの書込データをメモリブロック8a〜8dにそれぞれ供給するセレクタ16a〜16dと、パス更新回路12aから出力されるデータを上位ビット、パス更新回路12bから出力されるデータを下位ビットとして合成し、パスメモリ6への書込データを生成する合成回路18aと、パス更新回路12cから出力されるデータを上位ビット、パス更新回路12dから出力されるデータを下位ビットとして合成し、パスメモリ6への書込データを生成する合成回路18bと、パスメモリ6のメモリブロック6a〜6d毎に設けられ、選択信号に従って、合成回路18a,18bのいずれかからの書込データを各メモリブロック6a〜6dにそれぞれ供給するセレクタ20a〜20dと、パスメモリ6,PMメモリ8のアドレス信号,セレクタ16a〜16d,20a〜20dの選択信号や、回路全体を同期して動作させるためのタイミング信号等を生成するアドレス制御回路22とを備えている。
【0035】
つまり、各ACS回路10a〜10dは、それぞれPMメモリ8の決められたメモリブロック8a〜8dからデータを読み込んで、任意のメモリブロック8a〜8dに処理結果を書き込むことができるように構成されており、また、同様にパス更新回路12a〜12dは、それぞれパスメモリ6の決められたメモリブロック6a〜6dからデータを読み込んで、任意のメモリブロック6a〜6dに処理結果を書き込むことができるように構成されている。
【0036】
更に、本実施例のビタビ復号器2は、決められた長さの符号系列(本実施例では16符号分,以下、蓄積符号長という)についての処理を終了する毎に、PMメモリ8の記憶内容に基づいてパスメトリックの最も小さい内部状態を検出する最尤パス検出器24と、この最尤パス検出器にて検出された内部状態に対応するパスをパスメモリ6から読み出し、この読み出されたパスに基づいて特定される符号系列に従って復号を行うことにより誤り訂正された復号データを生成する最尤復号器26とを備えている。
【0037】
ここで、図3は、パスメモリ6及びPMメモリ8の構成を表す説明図であり、図3(a)に示すように、パスメモリ6は、蓄積符号長の2倍のビット幅(本実施例では32ビット幅)でデータが読み書きされ、このうち半分(本実施例では16ビット)ずつに分割された上位ワードと下位ワードとで、異なる内部状態のパスを格納するようにされている。
【0038】
また、パスメモリ6の各メモリブロック6a〜6dには、内部状態の総数2K-1 (本実施例では32(K=6))を、メモリブロック数2M (本実施例では4(M=2))で割った2K-1/2M(本実施例では8)個分のデータ(パス)がそれぞれ格納され、しかも、各アドレスには2つの内部状態についてのデータが格納されるため、各メモリブロック6a〜6dは、格納されるデータ数の半分(本実施例では4)のアドレスにより制御される。
【0039】
なお、パスメモリ6に格納されたデータの各ビットは、同じ内部状態に到る一対のブランチの一方を0,他方を1として各内部状態毎に定義された1ビットのデータを表しており、このデータを、ACS計算を繰り返すことにより順次選択されるブランチに対応して、順番に並べることによりパスを表している。
【0040】
つまり、本実施例においてパスメモリ6の各メモリブロック6a〜6dは、最大16個のブランチからなるパスを8個ずつ格納し、この8個のパスを、4つのアドレス(0〜3番地)にて一度に2つずつ読み書きできるように構成されている。
【0041】
一方、PMメモリ8は、図3(b)に示すように、蓄積符号長をNb(本実施例では16)ビット,1符号当たりのビット数をNc(本実施例では2)ビットとすると、2・{(log2 Nb・Nc)+1}ビット幅(本実施例では12ビット幅)でデータが読み書きされ、このうち半分(本実施例では6ビット)ずつに分割された上位ワードと下位ワードとで、異なる内部状態のデータ(パスメトリック)を格納するようにされている。
【0042】
即ち、Nb個のブランチからなるパスのパスメトリックは、最大Nb・Nc(本実施例では32)の値をとるため、これを2進数で表すには、一つの内部状態当たり{(log2 Nb・Nc)+1}ビット幅が必要となるのである。
また、PMメモリ8の各メモリブロック8a〜8dには、パスメモリ6のメモリブロック6a〜6dと全く同様に、2K-1/2M(本実施例では8)個分のデータ(パスメトリック)がそれぞれ格納され、しかも、各アドレスには各一対のデータが格納されるため、各メモリブロック8a〜8dは、それぞれ格納されるデータ数の半分(本実施例では4)のアドレスにより制御される。
【0043】
つまり、本実施例においてPMメモリ8の各メモリブロック8a〜8dは、数値0〜32で表されるパスメトリックを8個ずつ格納し、この8個のパスメトリックを、4つのアドレス(0〜3番地)にて一度に2つずつ読み書きできるように構成されている。
【0044】
次に、アドレス制御回路22は、パスメモリ6及びPMメモリ8を制御するために、2種類のアドレス生成回路30,40を備えている。このうち、メモリブロック6a,6b,8a,8bを制御するためのアドレスを生成する第1アドレス生成回路30は、図4に示すように、3ビット出力(Q0〜Q2)のアドレスカウンタ32と、最上位ビットQ2がLow レベルの時に出力Q0、Highレベルの時に出力Q1を下位アドレスA0として出力するセレクタ34と、ビットQ2がLow レベルの時に出力Q1、Highレベルの時に出力Q0を上位アドレスA1として出力するセレクタ36とからなる。つまり、この第1アドレス生成回路30は、図4中の表H1に示すように、0→1→2→3→0→2→1→3の順序で変化するアドレスを生成するように構成されている。
【0045】
一方、メモリブロック6c,6d,8c,8dを制御するためのアドレスを生成する第2アドレス生成回路40は、図5に示すように、4ビット出力(Q0〜Q3)のアドレスカウンタ42と、出力Q0,Q1を反転させた反転出力*Q0,*Q1をそれぞれ生成する反転回路47,48と、アドレスカウンタ42の出力Q2,Q3に従って、(Q3,Q2)が(0,0)ならばQ0,(0,1)ならば*Q1,(1,0)ならば*Q0,(1,1)ならばQ1を選択して、下位アドレスA0として出力するセレクタ44と、(Q3,Q2)が、(0,0)ならばQ1,(0,1)ならばQ0,(1,0)ならば*Q1,(1,1)ならば*Q0を選択して、上位アドレスA1として出力するセレクタ46とからなる。つまり、この第2アドレス生成回路40は、図5中の表H2に示すように、0→1→2→3→1→3→0→2→3→2→1→0→2→0→3→1の順序で変化するアドレスを生成するように構成されている。
【0046】
なお、アドレス制御回路22には、第2アドレス生成回路40が生成するアドレスを、一時的に記憶するアドレスバッファ(図示せず)も設けられている。
また、本実施例では、各メモリブロックを制御するアドレスの数Nmが4の場合を説明しているが、アドレスを変化させる順番は、このアドレスの数Nmによって異なり、一般的に、第1アドレス生成回路は、log2Nm ビットのカウンタの出力表に従ってアドレスを変化させ、一通りの変化(即ち、Nm個のアドレスの出力)を終了する毎に、出力表の各値を上位ビット側にシフトさせ、キャリーアウトした最上位ビットの値を最下位ビットの値として付加することにより作成される出力表に順次切り換え、この切り換えた出力表に従ってアドレスを出力するように構成すればよい。
【0047】
また、第2アドレス生成回路は、同様に一通りの変化を終了する毎に、出力表の各値を上位ビット側にシフトさせ、キャリーアウトした最上位ビットの値を反転させて最下位ビットに付加することにより作成される出力表に順次切り換え、この切り換えた出力表に従ってアドレスを出力するように構成すればよい。
【0048】
次に、以上のように構成された本実施例のビタビ復号器2の動作を、PMメモリ8へのデータの読み書きを中心にして説明する。
ここで、図6は、PMメモリ8の各メモリブロック8a〜8dでのデータの格納状態を表す説明図であり、図7は、本実施例のビタビ復号器2の各部の動作を表すタイミング図である。なお、以下では、状態[X]についてのデータを、データ{X}と表記するものとする。
【0049】
図6に示すように、初期状態(更新回数0)の時、PMメモリ8のメモリブロック8aには、0番地にデータ{0}{1},1番地にデータ{8}{9},2番地にデータ{20}{21},3番地にデータ{28}{29}が格納され、メモリブロック8bには、0番地にデータ{2}{3},1番地にデータ{10}{11},2番地にデータ{22}{23},3番地にデータ{30}{31}が格納され、メモリブロック8cには、0番地にデータ{4}{5},1番地にデータ{12}{13},2番地にデータ{16}{17},3番地にデータ{24}{25}が格納され、メモリブロック8dには、0番地にデータ{6}{7},1番地にデータ{14}{15},2番地にデータ{18}{19},3番地にデータ{26}{27}が格納されている。
【0050】
また、この時、第1及び第2アドレス生成回路30,40のアドレスカウンタ32,42はゼロクリアされており、第1アドレス生成回路30が生成するアドレス(以下、第1アドレスという),第2アドレス生成回路40が生成するアドレス(以下、第2読出アドレスという),及びアドレスバッファに格納されたアドレス(以下、第2書込アドレスという)は、いずれも0番地に設定されているものとする。
【0051】
この状態から、図7に示すように、まず時刻t1では、第2読出アドレス(ここでは0番地)に従って、メモリブロック8c,8dからデータ{4}{5}及び{6}{7}を読み出して、バッファ9a,9bに格納する。
続く時刻t2では、第1アドレス(ここでは0番地)に従って、メモリブロック8a,8bからデータ{0}{1}及び{2}{3}を読み出してACS回路10a,10bに供給すると共に、先にバッファ9a,9bに格納されているデータ{4}{5}及び{6}{7}を読み出してACS回路10c,10dに供給する。
【0052】
この時、ACS回路10aは、供給された一対のデータ{0}{1}に基づきACS計算を行って一対のデータ{0}{16}を生成し(図2参照)、この一対のデータのうち一方のデータ{0}のみ出力する。同様に他のACS回路10b〜10dでも、それぞれ供給された各一対のデータ{2}{3},{4}{5},{6}{7}に基づいて、各一対のデータ{1}{17},{2}{18},{3}{19}を生成し、このうち各一方のデータ{1}{2}{3}のみ出力する。
【0053】
続く時刻t3では、ACS回路10a,10bから出力され合成回路14aにて合成されたデータ{0}{1}がメモリブロック8aに供給され、ACS回路10c,10dから出力され合成回路14bにて合成されたデータ{2}{3}がメモリブロック8bに供給されるようにセレクタ16a,16bを設定し、第1アドレス(ここでは0番地)に従って、これらデータ{0}{1}及び{2}{3}をメモリブロック8a,8bに書き込む。これと共に、各ACS回路10a〜10dから、データ{0}〜{7}に対するACS計算結果のうち残り半分のデータ{16}〜{19}を出力する。
【0054】
更に、アドレス制御回路22では、第2読出アドレスをアドレスバッファに格納することで第2書込アドレスを更新すると共に、第2アドレス生成回路40のアドレスカウンタ42をインクリメントすることにより第2読出アドレスを更新し、この更新された第2アドレス(ここでは1番地)に従って、メモリブロック8c,8dからデータ{12}{13}及び{14}{15}を読み出してバッファ9a,9bに格納する。
【0055】
続く時刻t4では、合成回路14aにて合成されたデータ{16}{17}がメモリブロック8cに供給され、合成回路14bにて合成されたデータ{18}{19}がメモリブロック8dに供給されるようにセレクタ16c,16dを設定し、第2書込アドレス(ここでは0番地)に従って、これらデータ{16}{17}及び{18}{19}をメモリブロック8c,8dに書き込む。
【0056】
これと共に、アドレス制御回路22では、第1アドレス生成回路30のアドレスカウンタ32をインクリメントすることにより第1アドレスを更新し、以下、先の時刻t2の場合と全く同様に動作して、更新された第1アドレス(ここでは1番地)に従ってメモリブロック8a,8bからデータ{8}{9}及び{10}{11}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{8}〜{15}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{20}〜{23}の出力が行われる。
【0057】
続く時刻t5では、先の時刻t3の場合と全く同様に動作して、第1アドレス(ここでは1番地)に従ってメモリブロック8a,8bへのデータ{20}{21}及び{22}{23}の書込、各ACS回路10a〜10dからデータ{8}〜{15}に対するACS計算結果のうち残り半分のデータ{4}〜{7}の出力、第2書込アドレス及び第2読出アドレスの更新、更新された第2読出アドレス(ここでは2番地)に従ってメモリブロック8c,8dから読み出したデータ{16}{17}及び{18}{19}のバッファ9a,9bへの格納が行われる。
【0058】
続く時刻t6では、先の時刻t4の場合と同様に動作して、第2書込アドレス(ここでは1番地)に従って、データ{4}{5}及び{6}{7}のメモリブロックの8c,8dへの書込、第1アドレスの更新、更新された第1アドレス(ここでは2番地)に従ってメモリブロック8a,8bからデータ{20}{21}及び{22}{23}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{16}〜{23}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{10}{11}{8}{9}の出力が行われる。
【0059】
続く時刻t7では、合成回路14aにて合成されたデータがメモリブロック8bに供給され、合成回路14bにて合成された書込データがメモリブロック8aに供給されるようにセレクタ16a,16bが設定される以外は、先の時刻t3,t5の場合と全く同様に動作する。
【0060】
つまり、第1アドレス(ここでは2番地)に従って、メモリブロック8a,8bへのデータ{8}{9}及び{10}{11}の書込、各ACS回路10a〜10dからデータ{16}〜{23}に対するACS計算結果のうち残り半分のデータ{26}{27}{24}{25}の出力、第2書込アドレス及び第2読出アドレスの更新、更新された第2読出アドレス(ここでは3番地)に従ってメモリブロック8c,8dから読み出したデータ{24}{25}及び{26}{27}のバッファ9a,9bへの格納が行われる。
【0061】
続く時刻t8では、合成回路14aにて合成されたデータ{24}{25}がメモリブロック8cに供給され、合成回路14bにて合成されたデータ{26}{27}がメモリブロック8dに供給されるようにセレクタ16a,16bが設定される以外は、先の時刻t4,t6の場合と全く同様に動作する。
つまり、第2書込アドレス(ここでは2番地)に従ってメモリブロックの8c,8dへのデータ{24}{25}及び{26}{27}の書込、第1アドレスの更新、更新された第1アドレス(ここでは3番地)に従ってメモリブロック8a,8bからデータ{28}{29}及び{30}{31}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{24}〜{31}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{30}{31}{28}{29}の出力が行われる。
【0062】
続く時刻t9では先の時刻t7の場合と全く同様に動作して、第1アドレス(ここでは3番地)に従ってメモリブロック8a,8bへのデータ{28}{29}及び{30}{31}の書込、各ACS回路10a〜10dからデータ{24}〜{31}に対するACS計算結果のうち残り半分のデータ{14}{15}{12}{13}の出力、第2書込アドレス及び第2読出アドレスの更新、更新された第2アドレス(ここでは1番地)に従ってメモリブロック8c,8dから読み込んだデータ{4}{5}及び{6}{7}のバッファ9a,9bへの格納が行われる。
【0063】
続く時刻t10では先の時刻t8の場合と全く同様に動作して、第2書込アドレス(ここでは3番地)に従ってメモリブロックの8c,8dへのデータ{12}{13}及び{14}{15}の書込、第1アドレスの更新、更新された第1アドレス(ここでは0番地)に従ってメモリブロック8a,8bからデータ{0}{1}及び{2}{3}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{0}〜{7}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{0}{1}及び{2}{3}の出力が行われる。
【0064】
この時刻t10の時点で、PMメモリ8に格納された全てのデータについての更新が一通り終了することになり、以後、第1アドレス,第2読出アドレス,第2書込アドレスに従って、上述した時刻t3〜t10についての処理が繰り返し実行される。
【0065】
つまり、1回目のデータ更新時には、第1アドレス生成回路30からの第1アドレスにより制御されるメモリブロック8a,8b、及び第2アドレス生成回路40からの第2読出アドレス/第2書込アドレスにより制御されるメモリブロック8c,8dは、いずれも0→1→2→3の順番で各番地のデータが読み書きされる。即ち、まず各メモリブロック8a〜8dの0番地からデータ{0}〜{7}が読み出され、ACS計算の結果として、ACS回路10a〜10dから出力される各一対のデータ{0}{16},{1}{17},{2}{18},{3}{19}が、データ{0}{1},{2}{3},{16}{17},{18}{19}の対に組み替えられ、これら組み替えられたデータが、各メモリブロック8a〜8dに、初期状態の時に割り当てられた状態についてのデータがそれぞれ格納されるように分配され、先にデータが読み出された0番地に書き込まれる。
【0066】
以下、同様に、各メモリブロック8a〜8dの1番地からデータ{8}〜{15}が読み出され、ACS計算の結果を組み替えたデータ{20}{21},{22}{23},{4}{5},{6}{7}が、各メモリブロック8a〜8dに分配され同じ1番地に書き込まれる。
【0067】
続けて、各メモリブロック8a〜8dの2番地からデータ{16}〜{23}が読み出され、ACS計算の結果を組み替えたデータ{8}{9},{10}{11},{24}{25},{26}{27}が、各メモリブロック8a〜8dに分配され同じ2番地に書き込まれる。
【0068】
更に、各メモリブロック8a〜8dの3番地からデータ{24}〜{31}が読み出され、ACS計算の結果を組み替えたデータ{28}{29},{30}{31},{12}{13},{14}{15}が、各メモリブロック8a〜8dに分配され同じ3番地に書き込まれる。
【0069】
このようにして、全データについての1回目のデータ更新が終了した時に、各メモリブロック8a〜8dのデータ格納状態は、図6中の更新回数1の欄に示すようなものとなる。
そして、2回目のデータ更新の時には、メモリブロック8a,8bでは、0→2→1→3の順番で、一方、メモリブロック8c,8dでは、1→3→0→2の順番で各番地のデータが読み書きされる。
【0070】
図6中の更新回数1の欄に示された各メモリブロック8a〜8dのデータ格納状態から明らかなように、各回毎に、並列に処理されるデータの組み合わせ(即ち、データ{0}〜{7},{8}〜{15},{16}〜{23},{24}〜{31})は常に同じであり、上述と同様に、ACS計算の結果の組み替え、組み替えたデータの分配、読み出したアドレスへの書込が順次行われることにより、2回目のデータ更新が終了した時に、各メモリブロック8a〜8dのデータ格納状態は、図6中の更新回数2の欄に示すようなものとなる。
【0071】
この時、メモリブロック8a,8bのデータ格納状態は、初期状態に戻っている。
以下同様に、3回目のデータ更新時には、メモリブロック8a,8bは、1回目のデータ更新時と同様に0→1→2→3番地の順番で、一方、メモリブロック8c,8dでは、3→2→1→0の順番で各番地のデータが読み書きされることにより、3回目のデータ更新終了時には図6中の更新回数3の欄にに示すようなものとなり、更に、4回目のデータ更新時には、メモリブロック8a,8bは、2回目のデータ更新時と同様に0→2→1→3の順番で、一方、メモリブロック8c,8dは、2→0→3→1の順番で各番地のデータが読み書きされることにより、4回目のデータ更新終了時には図6中の更新回数4の欄に示すようになものとなる。この時、メモリブロック8a,8bだけでなく、メモリブロック8c,8dのデータ格納状態も初期状態に戻っている。
【0072】
つまり、データ更新毎に、メモリブロック8a,8bは2つのデータ格納状態を、メモリブロック8c,8dは4つのデータ格納状態を繰り返すことになる。なお、ここでは、PMメモリ8について説明したが、パスメモリ6についてもほぼ同様の手順でデータの更新が行われる。
【0073】
そして本実施例のビタビ復号器2では、このような処理を符号蓄積数(本実施例では16)回だけ繰り返す毎に、最尤パス検出器24が起動され、PMメモリ8に格納されたデータ、即ち各内部状態のパスメトリックを比較して、最小のパスメトリックとなる内部状態を検出する。すると、最尤復号器26では、最尤パス検出器24にて検出された内部状態に従って、これに対応するパスをパスメモリ6から読み出し復号データを生成する。
【0074】
即ち、最後の内部状態とこの内部状態に到るパスとがわかっていれば、パスを構成するブランチに従って、内部状態を逆方向に辿っていくことにより、入力された符号を特定することができ、ひいてはこの符号を復号したデータを得ることができるのである。
【0075】
以上、説明したように、本実施例のビタビ復号器2においては、パスメモリ6及びPMメモリ8が、2つの内部状態についてのデータを同一番地にて同時に読み書きできるように構成されていると共に、各ACS回路10及びパス更新回路12から出力されるデータを、同一状態に遷移する一対の状態についてのデータ{2n}{2n+1}(n=0,1,…2K-2−1) が一緒になるよう組み替えて合成し、パスメモリ6及びPMメモリ8への書込データとするようにされている。
【0076】
従って、本実施例のビタビ復号器2によれば、パスメモリ6及びPMメモリ8の各番地には、常に、同一状態に遷移する一対の状態についてのデータ{2n}{2n+1}が格納され、これら一対のデータ{2n}{2n+1}を、それぞれ一回の操作で読み書きできるので、処理の高速化を図ることができる。
【0077】
また、本実施例のビタビ復号器2においては、各メモリブロックには、常に、初期状態の時に割り当てられた状態についてのデータがそれぞれ格納されるように、ACS回路10及びパス更新回路12での処理結果からなる書込データが分配され、且つこの書込データは、処理のために先に読み出されたデータと同じ番地に書き込まれるようにされていると共に、データ更新が一通り終了する毎に変化するデータの格納状態に応じて、メモリブロック毎にデータを読み出す順番を変化させ、各内部状態についてのデータが、常に同じ組み合わせで読み出されるようにされている。
【0078】
従って、本発明のビタビ復号器によれば、パスメモリ6やPMメモリ8を2重に設けたり、ACS回路10やパス更新回路12での処理を複雑にすることなく、パスメモリ6やPMメモリに格納されたデータの更新を繰り返し実行することができる。
【0079】
その結果、パスメモリ6及びPMメモリ8が2重化されている従来装置に比べて、全体の記憶容量を半分に削減できるため、装置を小型化でき、また、従来と同じ記憶容量を用いるのであれば、より、誤り訂正能力の高い復号を行うことが可能な装置を構成することができる。
【0080】
なお、本実施例において、ブランチメトリック計算回路4がブランチメトリック算出手段に相当し、また、パスメモリ6がパス記憶手段、PMメモリ8がパスメトリック記憶手段、ACS回路10及びパス更新回路12がACS計算手段、合成回路14a,14b,18a,18b及びセレクタ16a〜16d,20a〜20dがデータ分配手段、アドレス制御回路22がアドレス制御手段にそれぞれ相当する。
【図面の簡単な説明】
【図1】 実施例のビタビ復号器の全体構成を表すブロック図である。
【図2】 状態遷移の様子を表す説明図である。
【図3】 メモリブロックの構成を表す説明図である。
【図4】 第1アドレス生成回路の構成及び動作を表す説明図である。
【図5】 第2アドレス生成回路の構成及び動作を表す説明図である。
【図6】 メモリブロックのデータの格納状態が変化する様子を表す説明図である。
【図7】 実施例のビタビ復号器の各部の動作を表すタイミング図である。
【図8】 畳み込み符号を生成する符号器の構成図である。
【図9】 従来のビタビ復号器の構成を表すブロック図である。
【符号の説明】
2…ビタビ復号器 4…ブランチメトリック計算回路
6(6a〜6d)…パスメモリ 9a,9b…バッファ
8(8a〜8d)…パスメトリック(PM)メモリ
10(10a〜10d)…ACS回路
12(12a〜12d)…パス更新回路
14a,14b,18a,18b…合成回路
16a〜16d,20a〜20d…セレクタ
22…アドレス制御回路 24…最尤パス検出器 26…最尤復号器
30…第1アドレス生成回路 32,42…アドレスカウンタ
34,36,44,46…セレクタ 40…第2アドレス生成回路
47,48…反転回路
【発明の属する技術分野】
本発明は、畳み込み符号を復号するビタビ復号器に関し、特にACS(Adder-Comparator-Selector) 計算を並列に実行するビタビ復号器に関する。
【0002】
【従来の技術】
ビタビ復号器は、畳み込み符号の最尤復号法に使用されるものであり、既知の符号系列の中から受信符号系列に最も近い符号距離を有するものを選択し、この選択された既知の符号系列から復号データを得るものであり、訂正能力が高いことから衛星通信方式などにおける復号器として使用されている。
【0003】
ここで、畳み込み符号とは、符号器に入力されるビット毎に、先行するいくつかのビットとのmod2での加算結果を出力ビットとした符号であり、同時にkビットが入力されnビットが出力される場合、k/nを符号化率R、また出力ビットに影響を与えるビット数Kを拘束長と言う。
【0004】
例えば、図8は、拘束長K=3,符号化率R=1/2の畳み込み符号器130であり、3ビットのシフトレジスタ132と、2つの排他的論理和回路134,136からなる。なお、排他的論理和回路134,136の入力は、図示したものに限らず任意に設定可能である。
【0005】
この符号器130において、次の時刻に出力される符号は、過去K−1ビット(図8では2ビット)の入力により表される2K-1 個の内部状態と、入力ビットとにより確定するため、符号系列は、この入力ビットに従った内部状態の状態遷移により一意に表すことができる。
【0006】
そして、過去K−1ビットのビット列を、最も古いビットを最下位ビット(LSB)とした数値として、この数値をそのまま内部状態を表すものとすれば、新たな入力ビットを受信した時の内部状態の遷移は、このK−1ビットのビット列を、LSB側に1ビットシフトし、且つ最上位ビット(MSB)として入力ビットを付加したものとなる。
【0007】
例えば、状態[0](ビット列で表現すれば‘00’)又は[1](‘01’)にある場合、入力ビットが0であれば状態[0](‘00’)に遷移し、一方、入力ビットが1であれば状態[2](‘10’)に遷移する。つまり、状態[2n]及び状態[2n+1](n=0,1,…2K-2−1) が、それぞれ状態[n]又は状態[n+2K-2 ]に遷移するのである。
【0008】
なお、内部状態を、上記説明とは反対に、最も古いビットをMSBとした数値で表すように定義した場合には、状態[n]及び状態[n+2K-2 ]が、状態[2n]又は状態[2n+1]に遷移することになるが、以下の説明では、前者の場合を用いるものとする。
【0009】
また以下では、ある状態から他の状態に遷移する経路をブランチ、状態遷移に従ってブランチを連結したものをパスと呼ぶ。更に、あるブランチについて、そのブランチに対応する状態遷移が行われた時に生成されるべき既知の符号と、実際に入力された符号との距離(ハミング距離など)をブランチメトリック、パスを構成する全てのブランチのブランチメトリックを積算したものをパスメトリックと呼ぶ。
【0010】
つまり、パスメトリックは、パスに従って状態遷移が行われた場合に生成されるべき既知の符号系列と、実際に入力された符号系列との距離を表しており、この距離が小さい(即ち、尤度が大きい)パスほど、そのパスが表す状態遷移の過程は、入力された符号系列を生成する際に実際に辿った状態遷移の過程に近いということになる。
【0011】
なお、上述したように、ある状態に合流するブランチ(即ちパス)は、必ず2つずつ存在する。このため、新たな符号が入力される毎に、各内部状態に到る各一対のパスのパスメトリックをそれぞれ算出し、算出されたパスメトリックの小さい方を、その内部状態についての生き残りパスとして選択する手順を繰り返すことにより、各時刻毎に各内部状態についての生き残りパスを順次定め、最終的に各内部状態の生き残りパスの中から、尤度が最大であるパスを最尤パスとして選択すれば、この最尤パスから入力された符号系列を特定することができ、ひいては復号データを生成することができるのである。
【0012】
ここで、図9は、このような処理を実現するビタビ復号器の一般的な構成を表すブロック図である。
図9に示すように、このビタビ復号器102では、内部状態毎に該内部状態に到るパスを記憶するパスメモリ106と、同じく内部状態毎に、パスメモリ106に記憶されたパスのパスメトリックを記憶するパスメトリック(PM)メモリ108と、PMメモリ108から同一状態に遷移する一対の内部状態についてのパスメトリックを読み込んで、ブランチメトリックとの加算を行うことにより、新たなブランチが追加された一対のパスのパスメトリックを算出し、この算出されたパスメトリックの小さい方を生き残りパスとして選択するACS計算を実行し、その処理結果をパスメモリ106及びPMメモリ108に書き込むACS回路110と、ACS回路110での処理に従って、パスメモリ106及びPMメモリ108のアドレスを制御するアドレス制御回路122a,122bと、決められた長さの符号系列についての処理を終了する毎に、PMメモリ108の記憶内容に基づいてパスメトリックの最も小さい内部状態を検出する最尤パス検出器124と、この最尤パス検出器124にて検出された内部状態に対応するパスを、パスメモリ106から読み出して、データを復元し誤り訂正後のデータとして出力する最尤復号器126とを備えている。
【0013】
また、パスメモリ106は、それぞれが全ての内部状態についてのデータを格納できるように構成された一対のメモリブロック106a,106bからなり、一方が読み込みに使用されている時には、他方が書き込みに使用されるように、セレクタ120a,120bを介して制御され、また、PMメモリ108も同様に一対のメモリブロック108a,108bからなり、セレクタ116a,116bを介して制御されるように構成されている。
【0014】
このように構成されたビタビ復号器102の動作を、拘束長K=6として具体的に説明する。即ち、このビタビ復号器102では、32(25 )個(状態[0],[1],…[31]と表記する)の状態を有しており、また、各メモリブロック106a,106b,108a,108bでは、状態[i]のデータはi番地といったように、各状態毎に決められたアドレスにデータを格納するようにされている。
【0015】
まず、PMメモリ108の一方のメモリブロックを読込用,他方のメモリブロックを書込用に設定し、読込用に設定されたメモリブロックから、遷移先の状態が等しくなる一対の状態(例えば[0],[1])についてのパスメトリックを読み込んで、予め計算されたブランチメトリックとのACS計算を行い、その処理結果を、書込用に設定されたメモリブロックに書き込む。このとき、各処理結果は、遷移先の状態([0],[16])に対応したアドレスに書き込まれる。以下、同様に、読込用に設定されたメモリブロックから状態[2n],[2n+1](n=0,1,…15)についてのパスメトリックを読み込んで、ACS計算を行い、その処理結果を、書込用に設定されたメモリブロックの、遷移先の状態[n],[n+16]に対応したアドレスに書き込む処理を順次繰り返すことにより、全ての状態[0]〜[31]についてパスメトリックの更新が一通り終了すると、メモリブロック108a,108bの設定を読込用と書込用とで入れ替えて、同様の処理を繰り返す。
【0016】
即ち、このようにPMメモリ108が一対のメモリブロック108a,108bを必要とするのは、読み込んだデータが格納されていたアドレスと、処理後に格納すべきデータのアドレスとが異なっているため、メモリブロックが一つしかない場合、読み出されていない未処理のデータに新たなデータが上書きされてしまい、正しく処理をすることができなくなってしまうからである。
【0017】
なお、パスメモリ106についても、選択されたパスに従って、一つ前の内部状態のパスを読み込んで、その内容を、新たに追加されたブランチを表すデータを加えたものに更新し、遷移先の状態に対応したアドレスに書き込むといった、PMメモリ108とほぼ同様の手順により内容の更新が行われている。
【0018】
このようなビタビ復号器102では、一つの符号を受信する毎に、2K-1 個の各内部状態毎に同様の処理を行わねばならない。従って、ACS回路110では、符号が入力される早さの2K-1 倍以上のクロックを使用して、ACS計算を行わなければならず、回路設計が難しいだけでなく、高速に動作する部品を用いて装置を構成しなければならないため、装置が非常に高価なものとなってしまう。
【0019】
そこで、通常は、特開平8−340262号に開示されているように、ACS回路での動作速度を抑えるために、上述のACS回路110を多重化することが行われている。
そして、このようにACS回路を多重化した場合、各ACS回路を並列動作させるために、パスメモリ106やPMメモリ108も、各ACS回路に対応して、独立に制御可能な複数の部分に分割する必要があり、分割された部分毎に、一対のメモリブロックが設けられていた。
【0020】
【発明が解決しようとする課題】
ところで、パスメモリ106及びPMメモリ108では、全データの格納に必要なワード数(アドレス数)が符号化時の拘束長Kにより決定され、各ワード毎のビット数が、パスメモリ106では、最尤復号器からデータ出力を行うまでに蓄積される符号数(以下、フレーム数という)により、PMメモリ108では1符号当たりのビット数とフレーム数とにより決定される。
【0021】
そして、このようなビタビ復号器102を移動体通信機などにて使用するには、小型で且つできるだけ高い誤り訂正能力を有することが要求される。
しかし、誤り訂正能力を高くするには、拘束長Kやフレーム数を大きくしたり、符号化率Rを小さく(即ち、1符号当たりのビット数を大きく)する必要があり、従って、パスメモリ106やPMメモリ108の容量を増大させなければならない。しかも、上述の装置では、同じ容量のものを各一対ずつ用意しなければならないため、パスメモリ106やPMメモリ108が大型化してしまい、装置を小型化する要求に反してしまうという問題があった。
【0022】
本発明は、パスメモリやパスメトリックメモリの削減して装置の小型化を図ることが可能なビタビ復号器を提供することを目的とする。
【0023】
【課題を解決するための手段】
上記目的を達成するためになされた本発明のビタビ復号器では、ブランチメトリック算出手段が、内部状態間の状態遷移を表すブランチ毎に、ブランチを経由する際に入力されるべき設定符号と実際に入力された実符号との距離を表すブランチメトリックをそれぞれ算出する。そして、パス記憶手段に記憶された、各内部状態に到るまでに選択されたブランチの経路であるパスと、パスメトリック記憶手段に記憶された、パス記憶手段に記憶されたパスについてのブランチメトリックの積算値であるパスメトリックとに基づき、ACS計算手段が、同一の内部状態に遷移する一対の内部状態についての各パスメトリックに、遷移先の内部状態に到るブランチのブランチメトリックをそれぞれ加算することにより、遷移先の内部状態に到る一対のパスのパスメトリックを算出し、該算出されたパスメトリックの小さい方のパスを、遷移先の内部状態についての新たなパスとしてパス記憶手段及びパスメトリック記憶手段の内容を更新する。
【0024】
なお、本発明では、ACS計算手段が2M 個並列に設けられていると共に、パス記憶手段及びパスメトリック記憶手段のうち少なくともいずれか一方が、それぞれを独立に制御可能な2M 個のメモリブロックBK0,BK1,…BKx(x=2M−1 )からなるように構成されている。
【0025】
そして、アドレス制御手段により、各メモリブロックから連続した2M+1 個の状態[0+j・2M+1][1+j・2M+1]…[2M+1−1+j・2M+1]についてのデータが並列に読み出され、この読み出されたデータは、データ分配手段により、格納されていたメモリブロックと予め1対1に対応付けられたACS計算手段にそれぞれ供給され処理される。このACS計算手段での処理結果は、データ分配手段により、半数の各メモリブロックBKi(i=0,1,…2M-1 −1)には、
状態[(2・i)+2M+1・j],[(2・i+1)+2M+1・j]
(但し、j=0,1,…2K-M-3−1)
状態[(2・i)+2M+1・j+2M],[(2・i+1)+2M+1・j+2M]
(但し、j=2K-M-3,2K-M-3+1,…2K-M-2−1)
残り半数の各メモリブロックBKi(i=2M-1,2M-1+1,…2M−1 )には、
状態[(2・i)+2M+1・j],[(2・i)+2M+1・j]
(但し、j=0,1,…2K-M-3−1)
状態[(2・i)+2M+1・j−2M],[(2・i+1)+2M+1・j−2M]
(但し、j=2K-M-3,2K-M-3+1,…2K-M-2−1)
についてのデータがそれぞれ格納されるよう分配され、この分配されたデータが、アドレス制御手段により、先にデータが読み出された同じアドレスに書き込まれる。
【0026】
このように、本発明のビタビ復号器においては、同一状態に遷移する一対の状態[2n]及び[2n+1](n=0,1,…2K-2−1) についてのデータを、同じメモリブロックから読み出して同じACS計算手段にて処理し、各ACS計算手段での処理結果を、従来装置のように内部状態毎に決められたアドレスに書き込むのではなく、内部状態毎に決められたメモリブロック、且つ処理のために先にデータが読み出されたアドレスに書き込むようにされている。
【0027】
つまり、全内部状態についてデータの更新が一通り終了すると、各データが格納されているアドレスは、処理前とは異なったものとなる。しかし、各メモリブロックには、それぞれ処理前と同じ内部状態のデータが格納されているため、各メモリブロック毎に、アクセスする順番を変更しさえすれば、各ACS計算手段は、各内部状態についてのデータが、常に同じ組み合わせで供給され、同様の処理を繰り返すことができるのである。
【0028】
従って、本発明のビタビ復号器によれば、各ACS計算手段毎に、2重にメモリブロックを設けなくても、全ての内部状態についてのデータを、未処理のデータに処理結果を上書きしてしまうことなく処理することができる。
その結果、パス記憶手段及びパスメトリック記憶手段の全体としての記憶容量を半分に削減できるため装置を小型化でき、また、従来と同じ記憶容量を用いるのであれば、より、誤り訂正能力の高い復号を行うことが可能となる。
【0029】
なお、メモリブロックには、同一状態に遷移する一対の状態[2n],[2n+1] についてのデータが、同一番地にて同時に読み書きが可能なように格納されていてもよい。
この場合、メモリブロックからの読込時、及びメモリブロックへの書込時に、一回の操作で実行することができるため、処理の高速化を図ることができる。
【0030】
【発明の実施の形態】
以下に本発明の実施例を図面と共に説明する。
図1は、符号化率Rが1/2,拘束長Kが6である畳み込み符号を復号する本実施例のビタビ復号器2の全体構成を表すブロック図である。
【0031】
即ち、本実施例のビタビ復号器2は、入力信号1ビット当たり2ビットの符号に符号化された符号系列を復号するものであり、32(=25 )個の内部状態(状態[0],[1],…[31])を有する。但し、内部状態を識別する数値は、符号化時に次の符号を決める過去5ビットのビット列を、最も古いビットを最下位ビット(LSB)として数値表現したものであり、各内部状態は、図2に示すように、右側の状態から矢印の先に示された左側の状態、例えば、状態[10]であれば、状態[5]又は[21]に遷移するものとする。
【0032】
図1に示すように、本実施例のビタビ復号器2は、各内部状態に到る各一対のブランチについて、そのブランチに対応する状態遷移が行われた時に生成されるべき既知の符号と実際に当該復号器2に入力された符号との距離、即ちブランチメトリックを算出するブランチメトリック(BM)計算回路4と、内部状態毎にその内部状態に到る選択された唯一のパスを記憶するパスメモリ6(6a〜6d)と、同じく内部状態毎にパスメモリ6に記憶されたパスのパスメトリックを記憶するパスメトリック(PM)メモリ8(8a〜8d)と、PMメモリ8から同一状態に遷移する一対の内部状態についてのパスメトリックを読み込んで、ブランチメトリックとの加算を行うことにより、新たなブランチが追加された同一の内部状態に到る一対のパスのパスメトリックを算出し、この算出されたパスメトリックの小さい方を生き残りパスとして選択するACS計算を実行し、その処理結果によりPMメモリ8の記憶内容を更新する4個のACS回路10(10a〜10d)と、ACS回路10での処理結果に基づきパスメモリ6の記憶内容を更新する4個のパス更新回路12(12a〜12d)とを備えている。
【0033】
なお、パスメモリ6は、独立に制御可能な4つのメモリブロック6a〜6dからなり、各メモリブロック6a〜6dから読み出されたデータは、それぞれ決められたパス更新回路12a〜12dに入力されるように構成されている。
また、PMメモリ8も、独立に制御可能な4つのメモリブロック8a〜8dからなり、メモリブロック8a,8bから読み出されたデータは、それぞれ決めれたACS回路10a,10bに入力され、また、メモリブロック8c,8dから読み出されたデータは、それぞれバッファ9a,9bを介して決められたACS回路10c,10dに入力されるように構成されている。
【0034】
また、本実施例のビタビ復号器2は、ACS回路10aから出力されるデータを上位ビット、ACS回路10bから出力されるデータを下位ビットとして合成し、PMメモリ8への書込データを生成する合成回路14aと、ACS回路10cから出力されるデータを上位ビット、ACS回路10dから出力されるデータを下位ビットとして合成し、PMメモリ8への書込データを生成する合成回路14bと、PMメモリ8のメモリブロック8a〜8d毎に設けられ、選択信号に従って、合成回路14a,14bのいずれかからの書込データをメモリブロック8a〜8dにそれぞれ供給するセレクタ16a〜16dと、パス更新回路12aから出力されるデータを上位ビット、パス更新回路12bから出力されるデータを下位ビットとして合成し、パスメモリ6への書込データを生成する合成回路18aと、パス更新回路12cから出力されるデータを上位ビット、パス更新回路12dから出力されるデータを下位ビットとして合成し、パスメモリ6への書込データを生成する合成回路18bと、パスメモリ6のメモリブロック6a〜6d毎に設けられ、選択信号に従って、合成回路18a,18bのいずれかからの書込データを各メモリブロック6a〜6dにそれぞれ供給するセレクタ20a〜20dと、パスメモリ6,PMメモリ8のアドレス信号,セレクタ16a〜16d,20a〜20dの選択信号や、回路全体を同期して動作させるためのタイミング信号等を生成するアドレス制御回路22とを備えている。
【0035】
つまり、各ACS回路10a〜10dは、それぞれPMメモリ8の決められたメモリブロック8a〜8dからデータを読み込んで、任意のメモリブロック8a〜8dに処理結果を書き込むことができるように構成されており、また、同様にパス更新回路12a〜12dは、それぞれパスメモリ6の決められたメモリブロック6a〜6dからデータを読み込んで、任意のメモリブロック6a〜6dに処理結果を書き込むことができるように構成されている。
【0036】
更に、本実施例のビタビ復号器2は、決められた長さの符号系列(本実施例では16符号分,以下、蓄積符号長という)についての処理を終了する毎に、PMメモリ8の記憶内容に基づいてパスメトリックの最も小さい内部状態を検出する最尤パス検出器24と、この最尤パス検出器にて検出された内部状態に対応するパスをパスメモリ6から読み出し、この読み出されたパスに基づいて特定される符号系列に従って復号を行うことにより誤り訂正された復号データを生成する最尤復号器26とを備えている。
【0037】
ここで、図3は、パスメモリ6及びPMメモリ8の構成を表す説明図であり、図3(a)に示すように、パスメモリ6は、蓄積符号長の2倍のビット幅(本実施例では32ビット幅)でデータが読み書きされ、このうち半分(本実施例では16ビット)ずつに分割された上位ワードと下位ワードとで、異なる内部状態のパスを格納するようにされている。
【0038】
また、パスメモリ6の各メモリブロック6a〜6dには、内部状態の総数2K-1 (本実施例では32(K=6))を、メモリブロック数2M (本実施例では4(M=2))で割った2K-1/2M(本実施例では8)個分のデータ(パス)がそれぞれ格納され、しかも、各アドレスには2つの内部状態についてのデータが格納されるため、各メモリブロック6a〜6dは、格納されるデータ数の半分(本実施例では4)のアドレスにより制御される。
【0039】
なお、パスメモリ6に格納されたデータの各ビットは、同じ内部状態に到る一対のブランチの一方を0,他方を1として各内部状態毎に定義された1ビットのデータを表しており、このデータを、ACS計算を繰り返すことにより順次選択されるブランチに対応して、順番に並べることによりパスを表している。
【0040】
つまり、本実施例においてパスメモリ6の各メモリブロック6a〜6dは、最大16個のブランチからなるパスを8個ずつ格納し、この8個のパスを、4つのアドレス(0〜3番地)にて一度に2つずつ読み書きできるように構成されている。
【0041】
一方、PMメモリ8は、図3(b)に示すように、蓄積符号長をNb(本実施例では16)ビット,1符号当たりのビット数をNc(本実施例では2)ビットとすると、2・{(log2 Nb・Nc)+1}ビット幅(本実施例では12ビット幅)でデータが読み書きされ、このうち半分(本実施例では6ビット)ずつに分割された上位ワードと下位ワードとで、異なる内部状態のデータ(パスメトリック)を格納するようにされている。
【0042】
即ち、Nb個のブランチからなるパスのパスメトリックは、最大Nb・Nc(本実施例では32)の値をとるため、これを2進数で表すには、一つの内部状態当たり{(log2 Nb・Nc)+1}ビット幅が必要となるのである。
また、PMメモリ8の各メモリブロック8a〜8dには、パスメモリ6のメモリブロック6a〜6dと全く同様に、2K-1/2M(本実施例では8)個分のデータ(パスメトリック)がそれぞれ格納され、しかも、各アドレスには各一対のデータが格納されるため、各メモリブロック8a〜8dは、それぞれ格納されるデータ数の半分(本実施例では4)のアドレスにより制御される。
【0043】
つまり、本実施例においてPMメモリ8の各メモリブロック8a〜8dは、数値0〜32で表されるパスメトリックを8個ずつ格納し、この8個のパスメトリックを、4つのアドレス(0〜3番地)にて一度に2つずつ読み書きできるように構成されている。
【0044】
次に、アドレス制御回路22は、パスメモリ6及びPMメモリ8を制御するために、2種類のアドレス生成回路30,40を備えている。このうち、メモリブロック6a,6b,8a,8bを制御するためのアドレスを生成する第1アドレス生成回路30は、図4に示すように、3ビット出力(Q0〜Q2)のアドレスカウンタ32と、最上位ビットQ2がLow レベルの時に出力Q0、Highレベルの時に出力Q1を下位アドレスA0として出力するセレクタ34と、ビットQ2がLow レベルの時に出力Q1、Highレベルの時に出力Q0を上位アドレスA1として出力するセレクタ36とからなる。つまり、この第1アドレス生成回路30は、図4中の表H1に示すように、0→1→2→3→0→2→1→3の順序で変化するアドレスを生成するように構成されている。
【0045】
一方、メモリブロック6c,6d,8c,8dを制御するためのアドレスを生成する第2アドレス生成回路40は、図5に示すように、4ビット出力(Q0〜Q3)のアドレスカウンタ42と、出力Q0,Q1を反転させた反転出力*Q0,*Q1をそれぞれ生成する反転回路47,48と、アドレスカウンタ42の出力Q2,Q3に従って、(Q3,Q2)が(0,0)ならばQ0,(0,1)ならば*Q1,(1,0)ならば*Q0,(1,1)ならばQ1を選択して、下位アドレスA0として出力するセレクタ44と、(Q3,Q2)が、(0,0)ならばQ1,(0,1)ならばQ0,(1,0)ならば*Q1,(1,1)ならば*Q0を選択して、上位アドレスA1として出力するセレクタ46とからなる。つまり、この第2アドレス生成回路40は、図5中の表H2に示すように、0→1→2→3→1→3→0→2→3→2→1→0→2→0→3→1の順序で変化するアドレスを生成するように構成されている。
【0046】
なお、アドレス制御回路22には、第2アドレス生成回路40が生成するアドレスを、一時的に記憶するアドレスバッファ(図示せず)も設けられている。
また、本実施例では、各メモリブロックを制御するアドレスの数Nmが4の場合を説明しているが、アドレスを変化させる順番は、このアドレスの数Nmによって異なり、一般的に、第1アドレス生成回路は、log2Nm ビットのカウンタの出力表に従ってアドレスを変化させ、一通りの変化(即ち、Nm個のアドレスの出力)を終了する毎に、出力表の各値を上位ビット側にシフトさせ、キャリーアウトした最上位ビットの値を最下位ビットの値として付加することにより作成される出力表に順次切り換え、この切り換えた出力表に従ってアドレスを出力するように構成すればよい。
【0047】
また、第2アドレス生成回路は、同様に一通りの変化を終了する毎に、出力表の各値を上位ビット側にシフトさせ、キャリーアウトした最上位ビットの値を反転させて最下位ビットに付加することにより作成される出力表に順次切り換え、この切り換えた出力表に従ってアドレスを出力するように構成すればよい。
【0048】
次に、以上のように構成された本実施例のビタビ復号器2の動作を、PMメモリ8へのデータの読み書きを中心にして説明する。
ここで、図6は、PMメモリ8の各メモリブロック8a〜8dでのデータの格納状態を表す説明図であり、図7は、本実施例のビタビ復号器2の各部の動作を表すタイミング図である。なお、以下では、状態[X]についてのデータを、データ{X}と表記するものとする。
【0049】
図6に示すように、初期状態(更新回数0)の時、PMメモリ8のメモリブロック8aには、0番地にデータ{0}{1},1番地にデータ{8}{9},2番地にデータ{20}{21},3番地にデータ{28}{29}が格納され、メモリブロック8bには、0番地にデータ{2}{3},1番地にデータ{10}{11},2番地にデータ{22}{23},3番地にデータ{30}{31}が格納され、メモリブロック8cには、0番地にデータ{4}{5},1番地にデータ{12}{13},2番地にデータ{16}{17},3番地にデータ{24}{25}が格納され、メモリブロック8dには、0番地にデータ{6}{7},1番地にデータ{14}{15},2番地にデータ{18}{19},3番地にデータ{26}{27}が格納されている。
【0050】
また、この時、第1及び第2アドレス生成回路30,40のアドレスカウンタ32,42はゼロクリアされており、第1アドレス生成回路30が生成するアドレス(以下、第1アドレスという),第2アドレス生成回路40が生成するアドレス(以下、第2読出アドレスという),及びアドレスバッファに格納されたアドレス(以下、第2書込アドレスという)は、いずれも0番地に設定されているものとする。
【0051】
この状態から、図7に示すように、まず時刻t1では、第2読出アドレス(ここでは0番地)に従って、メモリブロック8c,8dからデータ{4}{5}及び{6}{7}を読み出して、バッファ9a,9bに格納する。
続く時刻t2では、第1アドレス(ここでは0番地)に従って、メモリブロック8a,8bからデータ{0}{1}及び{2}{3}を読み出してACS回路10a,10bに供給すると共に、先にバッファ9a,9bに格納されているデータ{4}{5}及び{6}{7}を読み出してACS回路10c,10dに供給する。
【0052】
この時、ACS回路10aは、供給された一対のデータ{0}{1}に基づきACS計算を行って一対のデータ{0}{16}を生成し(図2参照)、この一対のデータのうち一方のデータ{0}のみ出力する。同様に他のACS回路10b〜10dでも、それぞれ供給された各一対のデータ{2}{3},{4}{5},{6}{7}に基づいて、各一対のデータ{1}{17},{2}{18},{3}{19}を生成し、このうち各一方のデータ{1}{2}{3}のみ出力する。
【0053】
続く時刻t3では、ACS回路10a,10bから出力され合成回路14aにて合成されたデータ{0}{1}がメモリブロック8aに供給され、ACS回路10c,10dから出力され合成回路14bにて合成されたデータ{2}{3}がメモリブロック8bに供給されるようにセレクタ16a,16bを設定し、第1アドレス(ここでは0番地)に従って、これらデータ{0}{1}及び{2}{3}をメモリブロック8a,8bに書き込む。これと共に、各ACS回路10a〜10dから、データ{0}〜{7}に対するACS計算結果のうち残り半分のデータ{16}〜{19}を出力する。
【0054】
更に、アドレス制御回路22では、第2読出アドレスをアドレスバッファに格納することで第2書込アドレスを更新すると共に、第2アドレス生成回路40のアドレスカウンタ42をインクリメントすることにより第2読出アドレスを更新し、この更新された第2アドレス(ここでは1番地)に従って、メモリブロック8c,8dからデータ{12}{13}及び{14}{15}を読み出してバッファ9a,9bに格納する。
【0055】
続く時刻t4では、合成回路14aにて合成されたデータ{16}{17}がメモリブロック8cに供給され、合成回路14bにて合成されたデータ{18}{19}がメモリブロック8dに供給されるようにセレクタ16c,16dを設定し、第2書込アドレス(ここでは0番地)に従って、これらデータ{16}{17}及び{18}{19}をメモリブロック8c,8dに書き込む。
【0056】
これと共に、アドレス制御回路22では、第1アドレス生成回路30のアドレスカウンタ32をインクリメントすることにより第1アドレスを更新し、以下、先の時刻t2の場合と全く同様に動作して、更新された第1アドレス(ここでは1番地)に従ってメモリブロック8a,8bからデータ{8}{9}及び{10}{11}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{8}〜{15}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{20}〜{23}の出力が行われる。
【0057】
続く時刻t5では、先の時刻t3の場合と全く同様に動作して、第1アドレス(ここでは1番地)に従ってメモリブロック8a,8bへのデータ{20}{21}及び{22}{23}の書込、各ACS回路10a〜10dからデータ{8}〜{15}に対するACS計算結果のうち残り半分のデータ{4}〜{7}の出力、第2書込アドレス及び第2読出アドレスの更新、更新された第2読出アドレス(ここでは2番地)に従ってメモリブロック8c,8dから読み出したデータ{16}{17}及び{18}{19}のバッファ9a,9bへの格納が行われる。
【0058】
続く時刻t6では、先の時刻t4の場合と同様に動作して、第2書込アドレス(ここでは1番地)に従って、データ{4}{5}及び{6}{7}のメモリブロックの8c,8dへの書込、第1アドレスの更新、更新された第1アドレス(ここでは2番地)に従ってメモリブロック8a,8bからデータ{20}{21}及び{22}{23}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{16}〜{23}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{10}{11}{8}{9}の出力が行われる。
【0059】
続く時刻t7では、合成回路14aにて合成されたデータがメモリブロック8bに供給され、合成回路14bにて合成された書込データがメモリブロック8aに供給されるようにセレクタ16a,16bが設定される以外は、先の時刻t3,t5の場合と全く同様に動作する。
【0060】
つまり、第1アドレス(ここでは2番地)に従って、メモリブロック8a,8bへのデータ{8}{9}及び{10}{11}の書込、各ACS回路10a〜10dからデータ{16}〜{23}に対するACS計算結果のうち残り半分のデータ{26}{27}{24}{25}の出力、第2書込アドレス及び第2読出アドレスの更新、更新された第2読出アドレス(ここでは3番地)に従ってメモリブロック8c,8dから読み出したデータ{24}{25}及び{26}{27}のバッファ9a,9bへの格納が行われる。
【0061】
続く時刻t8では、合成回路14aにて合成されたデータ{24}{25}がメモリブロック8cに供給され、合成回路14bにて合成されたデータ{26}{27}がメモリブロック8dに供給されるようにセレクタ16a,16bが設定される以外は、先の時刻t4,t6の場合と全く同様に動作する。
つまり、第2書込アドレス(ここでは2番地)に従ってメモリブロックの8c,8dへのデータ{24}{25}及び{26}{27}の書込、第1アドレスの更新、更新された第1アドレス(ここでは3番地)に従ってメモリブロック8a,8bからデータ{28}{29}及び{30}{31}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{24}〜{31}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{30}{31}{28}{29}の出力が行われる。
【0062】
続く時刻t9では先の時刻t7の場合と全く同様に動作して、第1アドレス(ここでは3番地)に従ってメモリブロック8a,8bへのデータ{28}{29}及び{30}{31}の書込、各ACS回路10a〜10dからデータ{24}〜{31}に対するACS計算結果のうち残り半分のデータ{14}{15}{12}{13}の出力、第2書込アドレス及び第2読出アドレスの更新、更新された第2アドレス(ここでは1番地)に従ってメモリブロック8c,8dから読み込んだデータ{4}{5}及び{6}{7}のバッファ9a,9bへの格納が行われる。
【0063】
続く時刻t10では先の時刻t8の場合と全く同様に動作して、第2書込アドレス(ここでは3番地)に従ってメモリブロックの8c,8dへのデータ{12}{13}及び{14}{15}の書込、第1アドレスの更新、更新された第1アドレス(ここでは0番地)に従ってメモリブロック8a,8bからデータ{0}{1}及び{2}{3}の読込、メモリブロック8a,8b及びバッファ9a,9bから読み込んだデータ{0}〜{7}に対するACS計算、各ACS回路10a〜10dからACS計算結果のうち半分のデータ{0}{1}及び{2}{3}の出力が行われる。
【0064】
この時刻t10の時点で、PMメモリ8に格納された全てのデータについての更新が一通り終了することになり、以後、第1アドレス,第2読出アドレス,第2書込アドレスに従って、上述した時刻t3〜t10についての処理が繰り返し実行される。
【0065】
つまり、1回目のデータ更新時には、第1アドレス生成回路30からの第1アドレスにより制御されるメモリブロック8a,8b、及び第2アドレス生成回路40からの第2読出アドレス/第2書込アドレスにより制御されるメモリブロック8c,8dは、いずれも0→1→2→3の順番で各番地のデータが読み書きされる。即ち、まず各メモリブロック8a〜8dの0番地からデータ{0}〜{7}が読み出され、ACS計算の結果として、ACS回路10a〜10dから出力される各一対のデータ{0}{16},{1}{17},{2}{18},{3}{19}が、データ{0}{1},{2}{3},{16}{17},{18}{19}の対に組み替えられ、これら組み替えられたデータが、各メモリブロック8a〜8dに、初期状態の時に割り当てられた状態についてのデータがそれぞれ格納されるように分配され、先にデータが読み出された0番地に書き込まれる。
【0066】
以下、同様に、各メモリブロック8a〜8dの1番地からデータ{8}〜{15}が読み出され、ACS計算の結果を組み替えたデータ{20}{21},{22}{23},{4}{5},{6}{7}が、各メモリブロック8a〜8dに分配され同じ1番地に書き込まれる。
【0067】
続けて、各メモリブロック8a〜8dの2番地からデータ{16}〜{23}が読み出され、ACS計算の結果を組み替えたデータ{8}{9},{10}{11},{24}{25},{26}{27}が、各メモリブロック8a〜8dに分配され同じ2番地に書き込まれる。
【0068】
更に、各メモリブロック8a〜8dの3番地からデータ{24}〜{31}が読み出され、ACS計算の結果を組み替えたデータ{28}{29},{30}{31},{12}{13},{14}{15}が、各メモリブロック8a〜8dに分配され同じ3番地に書き込まれる。
【0069】
このようにして、全データについての1回目のデータ更新が終了した時に、各メモリブロック8a〜8dのデータ格納状態は、図6中の更新回数1の欄に示すようなものとなる。
そして、2回目のデータ更新の時には、メモリブロック8a,8bでは、0→2→1→3の順番で、一方、メモリブロック8c,8dでは、1→3→0→2の順番で各番地のデータが読み書きされる。
【0070】
図6中の更新回数1の欄に示された各メモリブロック8a〜8dのデータ格納状態から明らかなように、各回毎に、並列に処理されるデータの組み合わせ(即ち、データ{0}〜{7},{8}〜{15},{16}〜{23},{24}〜{31})は常に同じであり、上述と同様に、ACS計算の結果の組み替え、組み替えたデータの分配、読み出したアドレスへの書込が順次行われることにより、2回目のデータ更新が終了した時に、各メモリブロック8a〜8dのデータ格納状態は、図6中の更新回数2の欄に示すようなものとなる。
【0071】
この時、メモリブロック8a,8bのデータ格納状態は、初期状態に戻っている。
以下同様に、3回目のデータ更新時には、メモリブロック8a,8bは、1回目のデータ更新時と同様に0→1→2→3番地の順番で、一方、メモリブロック8c,8dでは、3→2→1→0の順番で各番地のデータが読み書きされることにより、3回目のデータ更新終了時には図6中の更新回数3の欄にに示すようなものとなり、更に、4回目のデータ更新時には、メモリブロック8a,8bは、2回目のデータ更新時と同様に0→2→1→3の順番で、一方、メモリブロック8c,8dは、2→0→3→1の順番で各番地のデータが読み書きされることにより、4回目のデータ更新終了時には図6中の更新回数4の欄に示すようになものとなる。この時、メモリブロック8a,8bだけでなく、メモリブロック8c,8dのデータ格納状態も初期状態に戻っている。
【0072】
つまり、データ更新毎に、メモリブロック8a,8bは2つのデータ格納状態を、メモリブロック8c,8dは4つのデータ格納状態を繰り返すことになる。なお、ここでは、PMメモリ8について説明したが、パスメモリ6についてもほぼ同様の手順でデータの更新が行われる。
【0073】
そして本実施例のビタビ復号器2では、このような処理を符号蓄積数(本実施例では16)回だけ繰り返す毎に、最尤パス検出器24が起動され、PMメモリ8に格納されたデータ、即ち各内部状態のパスメトリックを比較して、最小のパスメトリックとなる内部状態を検出する。すると、最尤復号器26では、最尤パス検出器24にて検出された内部状態に従って、これに対応するパスをパスメモリ6から読み出し復号データを生成する。
【0074】
即ち、最後の内部状態とこの内部状態に到るパスとがわかっていれば、パスを構成するブランチに従って、内部状態を逆方向に辿っていくことにより、入力された符号を特定することができ、ひいてはこの符号を復号したデータを得ることができるのである。
【0075】
以上、説明したように、本実施例のビタビ復号器2においては、パスメモリ6及びPMメモリ8が、2つの内部状態についてのデータを同一番地にて同時に読み書きできるように構成されていると共に、各ACS回路10及びパス更新回路12から出力されるデータを、同一状態に遷移する一対の状態についてのデータ{2n}{2n+1}(n=0,1,…2K-2−1) が一緒になるよう組み替えて合成し、パスメモリ6及びPMメモリ8への書込データとするようにされている。
【0076】
従って、本実施例のビタビ復号器2によれば、パスメモリ6及びPMメモリ8の各番地には、常に、同一状態に遷移する一対の状態についてのデータ{2n}{2n+1}が格納され、これら一対のデータ{2n}{2n+1}を、それぞれ一回の操作で読み書きできるので、処理の高速化を図ることができる。
【0077】
また、本実施例のビタビ復号器2においては、各メモリブロックには、常に、初期状態の時に割り当てられた状態についてのデータがそれぞれ格納されるように、ACS回路10及びパス更新回路12での処理結果からなる書込データが分配され、且つこの書込データは、処理のために先に読み出されたデータと同じ番地に書き込まれるようにされていると共に、データ更新が一通り終了する毎に変化するデータの格納状態に応じて、メモリブロック毎にデータを読み出す順番を変化させ、各内部状態についてのデータが、常に同じ組み合わせで読み出されるようにされている。
【0078】
従って、本発明のビタビ復号器によれば、パスメモリ6やPMメモリ8を2重に設けたり、ACS回路10やパス更新回路12での処理を複雑にすることなく、パスメモリ6やPMメモリに格納されたデータの更新を繰り返し実行することができる。
【0079】
その結果、パスメモリ6及びPMメモリ8が2重化されている従来装置に比べて、全体の記憶容量を半分に削減できるため、装置を小型化でき、また、従来と同じ記憶容量を用いるのであれば、より、誤り訂正能力の高い復号を行うことが可能な装置を構成することができる。
【0080】
なお、本実施例において、ブランチメトリック計算回路4がブランチメトリック算出手段に相当し、また、パスメモリ6がパス記憶手段、PMメモリ8がパスメトリック記憶手段、ACS回路10及びパス更新回路12がACS計算手段、合成回路14a,14b,18a,18b及びセレクタ16a〜16d,20a〜20dがデータ分配手段、アドレス制御回路22がアドレス制御手段にそれぞれ相当する。
【図面の簡単な説明】
【図1】 実施例のビタビ復号器の全体構成を表すブロック図である。
【図2】 状態遷移の様子を表す説明図である。
【図3】 メモリブロックの構成を表す説明図である。
【図4】 第1アドレス生成回路の構成及び動作を表す説明図である。
【図5】 第2アドレス生成回路の構成及び動作を表す説明図である。
【図6】 メモリブロックのデータの格納状態が変化する様子を表す説明図である。
【図7】 実施例のビタビ復号器の各部の動作を表すタイミング図である。
【図8】 畳み込み符号を生成する符号器の構成図である。
【図9】 従来のビタビ復号器の構成を表すブロック図である。
【符号の説明】
2…ビタビ復号器 4…ブランチメトリック計算回路
6(6a〜6d)…パスメモリ 9a,9b…バッファ
8(8a〜8d)…パスメトリック(PM)メモリ
10(10a〜10d)…ACS回路
12(12a〜12d)…パス更新回路
14a,14b,18a,18b…合成回路
16a〜16d,20a〜20d…セレクタ
22…アドレス制御回路 24…最尤パス検出器 26…最尤復号器
30…第1アドレス生成回路 32,42…アドレスカウンタ
34,36,44,46…セレクタ 40…第2アドレス生成回路
47,48…反転回路
Claims (2)
- 状態[2n]及び状態[2n+1]が、それぞれ状態[n]又は状態[n+2K-2](n=0,1,…2K-2−1)に遷移するよう設定された2K-1 個の内部状態を有し、拘束長kの畳み込み符号からなる符号系列を復号するビタビ復号器であって、
前記内部状態間の状態遷移を表すブランチ毎に、該ブランチを経由する際に入力されるべき既知の符号と実際に入力された符号との距離を表すブランチメトリックを算出するブランチメトリック算出手段と、
前記内部状態毎に、該内部状態に到るまでに選択されたブランチの経路であるパスを記憶するパス記憶手段と、
前記内部状態毎に、前記パス記憶手段に記憶されたパスについての前記ブランチメトリックの積算値であるパスメトリックを記憶するパスメトリック記憶手段と、
同一の内部状態に遷移する一対の内部状態についての各パスメトリックに、遷移先の内部状態に到るブランチのブランチメトリックをそれぞれ加算することにより、遷移先の内部状態に到る一対のパスのパスメトリックを算出し、該算出されたパスメトリックの小さい方のパスを、遷移先の内部状態についての新たなパスとして前記パス記憶手段及び前記パスメトリック記憶手段の内容を更新する2M (M≧1)個のACS計算手段と、
前記パス記憶手段及び前記パスメトリック記憶手段に対するデータの読み書きを制御するメモリ制御手段と、
を備え、
前記パス記憶手段及び前記パスメトリック記憶手段のうち少なくともいずれか一方が、それぞれを独立に制御可能な2M 個のメモリブロックBK0,BK1,…BKx(x=2M−1 )からなり、
前記メモリ制御手段に、
前記各メモリブロックから読み出した記憶内容が、該メモリブロックに予め1対1に対応付けられた前記ACS計算手段のいずれかにそれぞれ供給され、且つ半数の各メモリブロックBKi(i=0,1,…2M-1−1 )には、
状態[(2・i)+2M+1・j],[(2・i+1)+2M+1・j]
(但し、j=0,1,…2K-M-3−1)
状態[(2・i)+2M+1・j+2M],[(2・i+1)+2M+1・j+2M]
(但し、j=2K-M-3,2K-M-3+1,…2K-M-2−1)
残り半数の各メモリブロックBKi(i=2M-1,2M-1+1,…2M−1 )には、
状態[(2・i)+2M+1・j],[(2・i)+2M+1・j]
(但し、j=0,1,…2K-M-3−1)
状態[(2・i)+2M+1・j−2M],[(2・i+1)+2M+1・j−2M]
(但し、j=2K-M-3,2K-M-3+1,…2K-M-2−1)
についてのデータがそれぞれ格納されるよう、前記ACS計算手段での処理結果を分配するデータ分配手段と、
前記各メモリブロックから、連続した2M+1 個の状態[0+2M+1・j][1+2M+1・j]…[2M+1−1+2M+1・j]についてのデータが並列に読み出され、該データが読み出されたアドレスに前記ACS計算手段での処理結果が書き込まれるよう前記各メモリブロックのアドレスを制御するアドレス制御手段と、
を設けたことを特徴とするビタビ復号器。 - 前記メモリブロックには、同一状態に遷移する一対の状態[2n],[2n+1] についてのデータが、同一アドレスにて同時に読み書きが可能なように格納されていることを特徴とする請求項1に記載のビタビ復号器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15288998A JP3837913B2 (ja) | 1998-06-02 | 1998-06-02 | ビタビ復号器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15288998A JP3837913B2 (ja) | 1998-06-02 | 1998-06-02 | ビタビ復号器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11346160A JPH11346160A (ja) | 1999-12-14 |
JP3837913B2 true JP3837913B2 (ja) | 2006-10-25 |
Family
ID=15550350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15288998A Expired - Fee Related JP3837913B2 (ja) | 1998-06-02 | 1998-06-02 | ビタビ復号器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3837913B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6551534B2 (ja) * | 2015-03-23 | 2019-07-31 | 日本電気株式会社 | 情報処理装置、情報処理方法、及びプログラム |
-
1998
- 1998-06-02 JP JP15288998A patent/JP3837913B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11346160A (ja) | 1999-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6324226B1 (en) | Viterbi decoder | |
JP2996615B2 (ja) | ビタビ復号装置及びその方法 | |
KR100779782B1 (ko) | 비터비 디코더 용 고속 acs 유닛 | |
US20060209995A1 (en) | Viterbi decoder | |
JP3784896B2 (ja) | ビタビデコーダの論理ブロック | |
JP3550369B2 (ja) | Viterbiデコーダにおけるパス・メトリックの記憶方法 | |
KR100311504B1 (ko) | 비터비디코더의스태이트메트릭메모리및이를이용한복호화방법 | |
JP3837913B2 (ja) | ビタビ復号器 | |
JP2798123B2 (ja) | ビタビ復号装置 | |
JP4047697B2 (ja) | ビタビ復号装置 | |
EP1192719A1 (en) | Viterbi decoder | |
JP2010206570A (ja) | 復号装置、復号方法 | |
JP4702721B2 (ja) | ビタビ・メトリック計算のためのアドレッシング方法 | |
JP4729938B2 (ja) | ビタビ復号器及びそれを用いる移動体通信装置、基地局装置、移動体通信端末 | |
JPH0730438A (ja) | ビタビ復号方法 | |
KR20040031323A (ko) | 비터비 복호기의 경로 메트릭 저장 장치 및 방법 | |
JP3235333B2 (ja) | ビタビ復号方法およびビタビ復号化装置 | |
JP2591332B2 (ja) | 誤り訂正復号装置 | |
KR100332408B1 (ko) | 비터비 디코더의 생존경로 메트릭 메모리 장치 | |
JP2002198827A (ja) | 最尤復号方法及び最尤復号器 | |
KR100205547B1 (ko) | 비터비 디코더의 트레이스 백 장치 | |
KR20010054996A (ko) | 비터비 디코더의 어드레스 발생기 | |
JP2002076924A (ja) | ビタビ復号器 | |
KR950010772B1 (ko) | 비터비 복호기의 집적화 실현에 적합한 트레이스백 회로 | |
KR0148060B1 (ko) | Viterbi 복호기의 ACS를 위한 메모리 최적 구조 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040713 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060711 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060724 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |