JP4366867B2 - Map復号装置 - Google Patents
Map復号装置 Download PDFInfo
- Publication number
- JP4366867B2 JP4366867B2 JP2001013546A JP2001013546A JP4366867B2 JP 4366867 B2 JP4366867 B2 JP 4366867B2 JP 2001013546 A JP2001013546 A JP 2001013546A JP 2001013546 A JP2001013546 A JP 2001013546A JP 4366867 B2 JP4366867 B2 JP 4366867B2
- Authority
- JP
- Japan
- Prior art keywords
- probability
- calculation
- trellis
- backward
- calculation result
- 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)
- Detection And Prevention Of Errors In Transmission (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、ターボデコーダ等に用いることができるMAP復号装置に関する。
【0002】
【従来の技術】
従来、畳込み符号とインタリーブとを組合せたターボ符号に変換して送信された符号化データを受信し、その誤りを訂正して復号を行うターボデコーダが提案されている。
【0003】
このターボデコーダに用いられる復号方式としては、MAP(最大事後確率:Maximum A Posteriori Probabi1ity)復号方式が知られている。図16に従来のMAP復号装置の構成を示す。
【0004】
受信データ(ターボ符号化されているデータ)をメモリ(図示せず)に記憶したデータが入力データとしてMAP復号装置に入力される。前方確率演算器51は、メモリに記憶された入力データについて、トレリスを用いて先頭ビットから最終ビットに向け順に前方確率を演算する。その演算結果は、第1のメモリ54に記憶される。トレリスとは、送信側でターボ符号化する際にどのような畳み込みをしたかによって形が決まるもので、状態(例えば3つのシフトレジスタを用いて畳み込みを行っていれば8つの状態となる)とその状態間を結ぶ枝で構成されている。また、後方確率演算器52は、メモリに記憶された入力データについて、最終ビットから先頭ビットに向け順に後方確率を演算する。その演算結果は、第2のメモリ55に記憶される。
【0005】
前方確率演算器51、後方確率演算器52が全ての演算を終了すると、結合確率演算器53は、第1、第2のメモリ54、55に記憶された前方確率演算器51の演算結果、後方確率演算器52の演算結果から結合確率の演算を行う。その演算結果は、復号結果として出力される。なお、結合確率演算器53の演算結果は、元のデータが“1”である確率と、“0”である確率をアナログ的に示すものである。この演算結果を基に、図示しない硬判定(元のデータが“1”である確率と、“0”である確率のどちらが大きいかの判定)を行って、元のデータを示す情報(例えば、“1”である確率が大きい場合は+の符号のデータ、“0”である確率が大きい場合は−の符号のデータ)が順に得られる。
【0006】
上記した従来のMAP復号装置では、前方確率演算器51、後方確率演算器52の演算結果を記憶するメモリ容量が大きくなるという問題がある。そこで、メモリ容量を少なくするために、99年6月の信学技報に記載された“Turbo符号におけるSub-log-MAPの回路規模削減方式”が提案されている。このものによれば、以下のようなMAP復号が行われる。
【0007】
図17にその原理説明図、図18にタイムチャートを示す。情報長(トレリス長)NをLずつのブロックに分割し、Lを基本単位として復号を行う。ここでは、情報の先頭ビットを0、最終ビットをNとし、その間をL毎にL1、L2、L3…とする。
▲1▼ Nから0へ後方確率演算を行う。このときLごとに…、L3、L2の各状態の後方確率の演算結果をメモリに書き込み、L1から0までの全ての時間及び各状態の後方確率演算結果をメモリに書き込む。
▲2▼ 0からL1まで前方確率演算を行う。これと同時に後方確率演算結果を読み出し両者により結合確率演算を行う。
▲3▼ ▲2▼と同時にL2の後方確率演算結果を読み出し、これを初期値としてL2からL1まで後方確率演算を行う。▲2▼と▲3▼は別々の演算回路で同時に行う。
▲4▼ L1からL2まで前方確率演算を行う。これと同時に後方確率演算結果を読み出し両者により結合確率演算を行う。
▲5▼ ▲4▼と同時にL3の後方確率演算結果を読み出し、これを初期値としてL3からL2まで後方確率演算を行う。▲4▼と▲5▼も別々の演算回路で同時に行う。
以後、上記と同様の演算を繰り返し、Nまで復号結果を出力する。
【0008】
このようなMAP復号を行うことにより、図16に示すMAP復号装置に比べて、前方確率演算器51の演算結果を記憶するメモリを無くし、後方確率演算器52の演算結果を記憶するメモリ55の容量を削減することができる。
【0009】
【発明が解決しようとする課題】
しかしながら、図16に示すMAP復号装置および上記した論文に記載されたMAP復号装置のいずれにおいても、トレリスを片側(先頭ビットから最終ビットまであるいは最終ビットから先頭ビットまで)演算する時間を1としたとき、2の演算時間が必要となる。これは、先に後方確率演算をトレリス全体に対して行い、その演算結果をメモリに格納し、次に前方確率演算と統合確率演算をトレリス全体にするためである。このことにより、データが入力されてから初めて復号結果が出力されるまでにディレイ時間が生じる。このディレイ時間は、ターボデコーダを内包するシステムにおいては、データ処理に付加される遅延時間に相当する。
【0010】
本発明は上記問題に鑑みたもので、MAP復号に要する時間を短くすることを目的とする。また、MAP復号に要する時間を短くするとともに、演算結果の記憶容量を少なくすることを目的とする。
【0011】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、入力データについてその先頭から終端に向けトレリスを用いて前方確率の演算を行う前方確率演算手段(11)と、
前記前方確率の演算と並行して、前記入力データについてその終端から先頭に向けトレリスを用いて後方確率の演算を行う後方確率演算手段(12)と、
前記後方確率の演算結果を記憶する記憶手段(14)と、
前記前方確率の演算結果と前記記憶手段(14)に記憶された後方確率の演算結果から結合確率の演算を行う結合確率演算手段(13)とを備え、
前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われると、前記結合確率演算手段(13)は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、
前記前方確率の演算と前記結合確率の演算が前記トレリスの終端まで行われると、前記トレリスの先端から前記トレリスの中間まで、前記前方確率演算手段(11)は前記前方確率の演算を行い、前記結合確率手段は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行うことを特徴としている。
【0012】
この発明によれば、トレリスの片側演算時間を1としたとき、1.5の演算時間でMAP復号が終了することになるため、MAP復号に要する時間を短くすることができる。
【0013】
この場合、請求項2に記載の発明のように、前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われた後に、前記後方確率の演算結果が、前記記憶手段(14)において前記結合確率の演算のために読み出された前記後方確率の演算結果の記憶位置に書き込むようにすれば、演算結果の記憶容量を少なくすることができる。
【0014】
請求項3に記載の発明では、入力データについてその先頭から終端に向けトレリスを用いて前方確率の演算を行う前方確率演算手段(11)と、
前記前方確率の演算と並行して、前記入力データについてその終端から先頭に向けトレリスを用いて後方確率の演算を行う第1の後方確率演算手段(12a)と、
トレリス長を複数に分割しその分割したトレリス位置の前記後方確率の演算結果を記憶する記憶手段(14)と、
前記前方確率の演算結果と前記記憶手段(14)に記憶された後方確率の演算結果から結合確率の演算を行う結合確率演算手段(13)と、
前記分割した区間について前記後方確率の演算を行う第2の後方確率演算手段(12b)とを備え、
前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われると、前記結合確率演算手段(13)は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、これと並行して、前記第2の後方確率演算手段(12b)は、前記結合確率演算手段(13)が前記結合確率の演算を行っている分割区間の次の分割区間について前記後方確率の演算を行いその演算結果を前記記憶手段(14)記憶手段(14)の所定の記憶領域に上書きして書き込むようにし、
前記前方確率の演算と前記結合確率の演算が前記トレリスの終端まで行われると、前記トレリスの先端から前記トレリスの中間まで、前記前方確率演算手段(11)は前記前方確率の演算を行い、前記結合確率手段は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、これと並行して、前記第2の後方確率演算手段(12b)は、前記結合確率演算手段(13)が前記結合確率の演算を行っている分割区間の次の分割区間について前記後方確率の演算を行いその演算結果を前記記憶手段(14)の所定の記憶領域に上書きして書き込むことを特徴としている。
【0015】
この発明によれば、請求項1に記載の発明と同様、MAP復号に要する時間を短くすることができるとともに、トレリス長を複数に分割しその分割したトレリス位置の後方確率の演算結果を記憶するようにしているから、後方確率の演算結果を全て記憶するものに比べて記憶容量を少なくすることができる。
【0016】
この場合、請求項4に記載の発明のように、前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われた後に、それまでに前記第1の後方確率演算手段(12a)の演算結果を記憶していた前記記憶手段(14)の記憶位置に、前記第1、第2の後方確率演算手段(12a、12b)のそれぞれの演算結果を上書きして書き込むようにすれば、演算結果の記憶容量をさらに少なくすることができる。
【0017】
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【0018】
【発明の実施の形態】
(第1実施形態)
図1に本発明の第1実施形態に係るMAP復号装置の構成を示し、図2にその復号原理を示す。
【0019】
このMAP復号装置には、受信データ(ターボ符号化されているデータ)をメモリ(図示せず)に記憶したデータが入力データとして入力される。前方確率演算器11は、入力データについて、トレリスを用い、前方確率演算(演算αという)を行う。これと同時に(並行して)、後方確率演算器12は、後方確率演算(演算βという)を行う。後方確率演算器12の演算結果Dat#bは、メモリ14に記憶される。この場合、後方確率演算器12は、最終ビットから先頭ビットに向けて演算βを行うので、その演算結果Dat#bは、例えば図3に示すようにアドレスの若い順に記憶される。
【0020】
前方確率演算器11の演算αと後方確率演算器12の演算βがトレリスの中間まで行われると、この後、前方確率演算器11は演算αを行い、また結合確率演算器13は、メモリ14から、前方確率演算器11が演算αを行っている位置に相当するビット位置(一般には1ビット後方の位置)における後方確率演算器12の演算結果Dat#bを読み出し、結合確率演算(演算λという)を行う。また、これと同時に、後方確率演算器12は演算βを継続し、その演算結果Dat#bを、先に演算λをする際にメモリ14から読み出した後方確率演算器12の演算結果Dat#bの記憶位置(アドレス位置)に上書きして格納する。
【0021】
前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの終端まで行われると、トレリスの先端へ戻り、前方確率演算器11は演算αを行い、また結合確率演算器13は、メモリ14から、前方確率演算器11が演算αを行っている位置に相当するビット位置における後方確率演算器12の演算結果Dat#bを読み出し、演算λを行って復号結果を出力する。そして、前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの中間まで行われると、全てのビットについて演算λが行われたことになるため、MAP復号を終了する。
【0022】
この実施形態によれば、前方確率演算器11の演算αトレリスの中間をすぎてから、結合確率演算器13の演算λと復号結果の出力が開始される。また、トレリスの片側演算時間を1としたとき、1.5の演算時間でMAP復号が終了することになる。従って、従来のMAP復号装置では2の演算時間が必要であったのに対し、この実施形態ではその3/4の演算時間で済むことになる。
【0023】
また、メモリ14は、トレリスの中間までの後方確率演算器12の演算結果Dat#bを記憶するだけでよいため、図16に示すMAP復号装置に比べて、前方確率演算器11の演算結果を記憶するメモリを無くし、後方確率演算器12の演算結果Dat#bを記憶するメモリの容量をその半分に削減することができる。なお、メモリ14の容量に余裕があれば、トレリスの全てに対して後方確率演算器12の演算結果Dat#bを順に記憶させていくようにしてもよい。
【0024】
上記した前方確率演算器11、後方確率演算器12において、演算を行う際のトレリスのビット位置は、ビット位置制御部15で決定される。図4に、ビット位置制御部15の一例を示す。
【0025】
ビット位置制御部15は、インクリメンタ151、減算器152、およびトレリス終端検知回路153で構成されている。インクリメンタ151は、初期値0からインクリメントを行って前方確率演算器11が演算αを行う際のトレリスのビット位置Pos#aを出力する。減算器152は、トレリス長からPos#aを減じて後方確率演算器12が演算βを行う際のトレリスのビット位置Pos#bを出力する。トレリス終端検知回路153は、Pos#bの値から、演算αと演算λの演算がトレリスの終端まで達したことを検知し、インクリメンタ151をリセットして、初期値0からインクリメントを行わせるようにする。
【0026】
このことにより、Pos#aは、その初期値から順次増大していく値となり、Pos#bは、その初期値から順次減少していく値となる。また、トレリス長だけ演算αと演算λの演算が行われると、Pos#a、Pos#bをそれぞれの初期値から増大、減少させていく。従って、前方確率演算器11は、Pos#aを用いて、先頭ビットから最終ビットに向けて演算αを行い、トレリス長分の演算が終了すると、再度先頭ビットから演算αを行うことになる。また、後方確率演算器12は、Pos#bを用いて、最終ビットから先頭ビットに向けて演算βを行い、トレリス長分の演算が終了すると、再度最終ビットから演算βを行うことになる。なお、トレリス長分の演算が終了した後の演算βの結果は、演算λには必要ないので、トレリス長分の演算が終了した後は、演算βを行わないようにしてもよい。
【0027】
また、上記したメモリ14の書き込みおよび読み出しを行うためのアドレスは、メモリアドレスデコーダ16で決定される。図5に、メモリアドレスデコーダ16の一例を示す。このメモリアドレスデコーダ16は、比較・選択器161で構成され、入力されるPos#aの値に基づいてアドレスAdr#bを出力する。すなわち、Pos#aがトレリス長の1/2以下のときは、Pos#aをアドレスAdr#bとして出力し、Pos#aがトレリス長の1/2より大きいときは、(トレリス長−Pos#a)をアドレスAdr#bとして出力する。
【0028】
従って、Pos#aがトレリス長の1/2以下のときは、Pos#aをアドレスAdr#bとして、演算結果Dat#bがメモリ14に記憶され、Pos#aがトレリス長の1/2より大きいときは、(トレリス長−Pos#a)をアドレスAdr#bとして、メモリ14に記憶された後方確率演算器12の演算結果Dat#bが読み出され、後方確率演算器12の新たな演算結果Dat#bがメモリ14に書き込まれる。また、トレリスの終端までの演算が終了し、Pos#aがリセットされた後は、Pos#aがトレリス長の1/2以下であるため、そのPos#aをアドレスAdr#bとして、メモリ14に記憶された後方確率演算器12の演算結果Dat#bが読み出され、後方確率演算器12の新たな演算結果Dat#bがメモリ14に書き込まれる。
【0029】
なお、上記したMAP復号装置は、コンピュータを用いたソフトウエアで実現することもできる。この場合の処理を図6に示す。
【0030】
まず、第1の処理として、トレリスのビット位置を演算し(ステップ101)、そのビット位置において演算αを行い(ステップ102)、トレリス長からビット位置を減算したビット位置の演算βを行い(ステップ103、104)、演算結果を演算αのビット位置をアドレスとするメモリ14の記憶領域に書き込み(ステップ105)、ビット位置の判定を行う(ステップ106)。ビット位置がトレリス長の1/2より小さければ、上記した第1の処理を繰り返す。
【0031】
また、ビット位置がトレリス長の1/2になっていると、第2の処理として、まずトレリスの次のビット位置を演算し(ステップ107)、そのビット位置において演算αを行い(ステップ108)、同ビット位置をアドレスとするメモリ14の記憶領域から演算βの結果を読み出し(ステップ109)、先の演算αの演算結果と読み出した演算βの結果から演算λを行い(ステップ110)、復号結果として出力する。また、演算αに並行して、トレリス長からビット位置を減算したビット位置の演算βを行い(ステップ111、112)、演算結果を、トレリス長からビット位置を減算したビット位置をアドレスとするメモリ14の記憶領域に書き込み(ステップ113)、ビット位置の判定を行う(ステップ114)。ビット位置がトレリス長より小さければ、上記した第2の処理を繰り返す。
【0032】
また、ビット位置がトレリス長になっていると、第3の処理として、まずビット位置をリセットし(ステップ115)、トレリスの次のビット位置を演算し(ステップ116)、そのビット位置において演算αを行い(ステップ117)、同ビット位置をアドレスとするメモリ14から演算βの結果を読み出し(ステップ118)、先の演算αの演算結果と読み出した演算βの結果から演算λを行い(ステップ119)、復号結果として出力する。その後、ビット位置の判定を行う(ステップ120)。ビット位置がトレリス長の1/2より小さければ、上記した第3の処理を繰り返す。そして、ビット位置がトレリス長の1/2になっていると、処理を終了する。
【0033】
なお、上記した実施形態では、結合確率演算器13で演算λを行うためにメモリ14から後方確率演算器12の演算結果Dat#bを読み出し、その読み出したアドレス位置に、後方確率演算器12の新たな演算結果Dat#bを書き込むようにしている。この場合、その読み出しと書き込みを、タイミングをずらして対応することになるが、図7に示すように、デュアルポートRAM141を使用すれば、読み書きのアクセスを同時に行うことができる。この場合、書き込み用のアドレスAdr#b#wを用いて後方確率演算器12の演算結果Dat#bがデュアルポートRAMに書き込まれ、読み出し用のアドレスAdr#b#rを用いてデュアルポートRAMから後方確率演算器12の演算結果Dat#bが読み出される。
(第2実施形態)
図8に本発明の第2実施形態に係るMAP復号装置の構成を示し、図9にその復号原理を示す。この実施形態は、上記した第1実施形態のMAP復号装置に、図17、図18に示すLビット間隔で後方確率演算器12の演算結果を記憶してMAP復号を行うように構成したものである。
【0034】
すなわち、この実施形態では、トレリス長をLずつのブロック(区間)に分割し、Lを基本単位として復号を行う。 前方確率演算器11は、入力データについて、トレリスを用い、演算αを行う。これと同時に、第1の後方確率演算器12aは、後方確率演算(演算βAという)を行う。第1の後方確率演算器12aは、その演算結果Dat#bを、LN、LN-1、…(図9参照)のようにLビット間隔でメモリ14に書き込む。この場合、第1の後方確率演算器12aは、最終ビットから先頭ビットに向けて演算を行うので、その演算結果Dat#bは、例えば図10に示すようにアドレスの若い順にLビットごとに記憶される。但し、トレリスの中間の手前Lビット(図9のLN/2〜LN/2+1−1)については、第1の後方確率演算器12aは、演算結果Dat#bの全てをメモリ14に書き込む。また、第1の後方確率演算器12aは、トレリスの先頭の手前Lビット(図9の0〜L1)についても、演算結果Dat#bの全てをメモリ14に書き込むようにする。
【0035】
前方確率演算器11の演算αと第1の後方確率演算器12aの演算βAがトレリスの中間まで行われると、前方確率演算器11は演算αを行い、また結合確率演算器13は、メモリ14から、前方確率演算器11が演算αを行っているビット位置に対応したビット位置の後方確率の演算結果Dat#bを読み出し、演算λを行う。
【0036】
また、演算αと演算λと並行して、第2の後方確率演算器12bは、結合確率演算器13が次のL区間において演算λをするに必要な演算結果Dat#bを用意するため、後方確率演算(演算βBという)を行い、その演算結果Dat#bをメモリに書き込む。すなわち、第2の後方確率演算器12bは、前方確率演算器11が図9のLN/2〜LN/2+1−1について演算αを行うときには、LN/2+2の演算結果Dat#bを読み出し、これを初期値としてLN/2+2−1からLN/2+1まで演算βBを行い、その演算結果Dat#bをメモリ14に書き込み、また前方確率演算器11が図9のLN/2+1〜LN/2+2−1について演算αを行うときには、LN/2+3の演算結果Dat#bを読み出し、これを初期値としてLN/2+3−1からLN/2+2まで演算βBを行い、その演算結果Dat#bをメモリ14に書き込む。以後、このような処理を、トレリスの終端まで行う。
【0037】
また、演算α、演算λ、演算βBと並行して、第1の後方確率演算器12aはその演算βAを継続し、その演算結果Dat#bをメモリ14に書き込む。
【0038】
前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの終端まで行われると、トレリスの先端へ戻り、上記したトレリスの中間からトレリスの終端までにおける処理と同様の処理を、トレリスの中間まで行う。
【0039】
すなわち、前方確率演算器11は演算αを行い、また結合確率演算器13は、前方確率演算器11が演算αを行っているビット位置に対応したビット位置の後方確率の演算結果Dat#bを読み出し、演算λを行う。また、これと同時に、第2の後方確率演算器12bは、結合確率演算器13が次のL区間において演算λをするに必要な演算結果Dat#bを用意するため、演算βBを行ってその結果をメモリ14に書き込む。また、これらと同時に、第1の後方確率演算器12aはその演算βAを継続し、その演算結果Dat#bを、Lビット間隔でメモリ14に書き込む。なお、トレリスの先端へ戻った後の演算βAは、演算λには必要ないので、なくてもよい。
【0040】
そして、前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの中間まで行われると、全てのビットについて演算λが行われたことになるため、MAP復号を終了する。
【0041】
このようにトレリス長をLずつのブロックに分割し、Lを基本単位として復号を行うことにより、第1実施形態よりも、メモリ14の容量を少なくすることができる。
【0042】
ここで、演算βA、演算βBの演算結果Dat#bをメモリ14に書き込む方法について説明する。演算α、演算βAがトレリスの中間まで行われると、演算βAの演算結果Dat#bは、図10に示すようにLビットごとにメモリ14に書き込まれ、トレリスの中間の手前Lビット(LN/2〜LN/2+1−1)についてはメモリ14のm1、m2…の記憶領域に書き込まれる。そして、演算α、演算βAがトレリスの中間を超えた最初の時点においては、m1、m2…の記憶領域に記憶されたDat#bを用いて演算λが順に行われ、また演算βBをするために次のL区間(LN/2+2〜LN/2+1)の最初のビット位置の演算結果Dat#bがM1の記憶領域から読み出され、それを初期値として演算βBが行われ、その演算結果が演算λを行うために先に読み出されたm1、m2…の記憶領域に順に書き込まれる。また、演算βAの演算結果Dat#bはM1の記憶領域に書き込まれる。以後、同様の処理を繰り返すことにより、演算βA、演算βBの演算結果Dat#bがメモリ14に順に書き込まれる。なお、トレリスの先頭の手前Lビットについては、演算βAの演算結果Dat#bがLビットの記憶領域m1、m2…にそのまま記憶される。このような書き込みを行うようにすれば、メモリ14の容量を第1実施形態のものより、1/L+Lビット分とすることができ、メモリ容量を大幅に削減することができる。
【0043】
図11に、この実施形態におけるビット位置制御部15の構成を示す。ビット位置制御部15は、インクリメンタ151、減算器152、トレリス終端検知回路153、加算器154、およびデクリメンタ155で構成されている。インクリメンタ151は、初期値0からインクリメントを行って前方確率演算器11が演算を行う際のトレリスのビット位置Pos#aを出力する。減算器152は、トレリス長からPos#aを減じて第1の後方確率演算器12aが演算を行う際のトレリスのビット位置Pos#bを出力する。トレリス終端検知回路153は、Pos#bの値から、演算αと演算λの演算がトレリスの終端まで達したことを検知し、インクリメンタ151をリセットし、初期値0からインクリメントを行わせるようにする。加算器154は、Pos#aの値がトレリスの中間になった以後において、Lビット毎にPos#aに2Lビットを加算した値(演算βBをする次の分割区間の最初の位置を示す値)を出力する処理を行い、Lビット毎に更新された(Pos#a+2Lビット)の値を出力する。デクリメンタ155は、加算器154の出力をデクリメントして第2の後方確率演算器12bのビット位置Pos#bbを出力する。
【0044】
このようにすれば、Pos#bbに基づき、第2の後方確率演算器12bは、結合確率演算器13が次のL区間において演算λをするに必要なDat#bを順次演算することができる。
【0045】
なお、上記したMAP復号装置は、コンピュータを用いたソフトウエアで実現することもできる。この場合の処理を図12、図13に示す。
【0046】
まず、第1の処理として、トレリスのビット位置を演算し(ステップ201)、そのビット位置において演算αを行い(ステップ202)、トレリス長からビット位置を減算したビット位置の演算βAを行い(ステップ203、204)、書き込み判定を行う(ステップ205)。書き込み可の場合は、演算結果を、図10に示すように、初期値ゼロから順にインクリメントした値をアドレスとするメモリ14の記憶領域に書き込む(ステップ206)。上記した書き込み判定は、Lビット毎に1回初めに書き込み可となり、また、ビット位置がトレリス長の1/2よりL小さい値になった以後は、常に書き込み可になるように判定する。この後、ビット位置の判定を行う(ステップ207)。ビット位置がトレリス長の1/2より小さければ、上記した第1の処理を繰り返す。
【0047】
また、ビット位置がトレリス長の1/2になっていると、第2の処理として、トレリスの次のビット位置を演算し(ステップ208)、そのビット位置において演算αを行い(ステップ209)、同ビット位置に対応する演算βA(もしくは演算βB)の結果をメモリ14から読み出し(ステップ210)、先の演算αの演算結果と読み出した演算βA(もしくは演算βB)の結果から演算λを行い(ステップ211)、復号結果として出力する。
【0048】
また、演算αに並行して、演算βBのビット位置を演算して求める、すなわちLビット毎にそのときのトレリスのビット位置を初期値として、それに2Lビット加算した値からビット位置を減算(デクリメント)して求める(ステップ212)。そして、上記の初期値とされたビット位置の後方確率βAの演算結果Dat#bをメモリ14から読み出し、これを初期値としてそれぞれのビット位置において演算βBを行い(ステップ213)、その演算結果をメモリ14に書き込む(ステップ214)。
【0049】
また、演算αと演算βBに並行して、トレリス長からビット位置を減算したビット位置の演算βを行い(ステップ215、216)、書き込み判定を行う(ステップ217)。書き込み可の場合は、演算結果をメモリ14に書き込む(ステップ218)。上記した書き込み判定は、Lビット毎に1回初めに書き込み可となり、また、ビット位置がトレリス長よりL小さい値になった以後は、常に書き込み可になるように判定する。なお、演算βBと演算βAの書き込みが同時に発生した場合は、タイミングをずらしてそれぞれをメモリ14に書き込むようにする。次に、ビット位置の判定を行う(ステップ219)。ビット位置がトレリス長より小さければ、上記した第2の処理を繰り返す。
【0050】
また、ビット位置がトレリス長になっていると、第3の処理として、まずビット位置をリセットし(ステップ220)、トレリスの次のビット位置を演算し(ステップ221)、このビット位置に対応する演算βA(もしくは演算βB)の結果をメモリ14から読み出し(ステップ223)、先の演算αの演算結果と読み出した演算βA(もしくは演算βB)の結果から演算λを行い(ステップ224)、復号結果として出力する。
【0051】
また、演算αに並行して、演算βBのビット位置を求め(ステップ225)、ステップ213と同様にそのビット位置において演算βBを行い(ステップ226)、その演算結果をメモリ14に書き込む(ステップ227)。その後、ビット位置の判定を行う(ステップ228)。ビット位置がトレリス長の1/2より小さければ、上記した第3の処理を繰り返す。そして、ビット位置がトレリス長の1/2になっていると、処理を終了する。
【0052】
なお、この第2実施形態においても、メモリ14としては、図7と同様、図14に示すようにデュアルポートRAM141を使用し、第1、第2の後方確率演算器12a、12bの演算結果の書き込み用のアドレスAdr#b#w、Adr#bb#wと、第1、第2の後方確率演算器12a、12bの演算結果の読み出し用のアドレスAdr#b#r、Adr#bb#rを用いて、読み書きのアクセスを同時に行うようにしてもよい。
【0053】
また、この第2実施形態において、Lビット間隔で後方確率演算器12の演算結果を記憶してMAP復号を行うものを示したが、Lを2とすれば、演算部βAの書き込み判定および演算βBのビット位置の特定を容易に行うことができる。この場合の復号原理を図15に示す。図に示すように、演算βAの演算結果は、2ビット毎に1回書き込みを行うように書き込み判定されて、メモリ14に書き込まれる。また、演算βAも2ビット毎に1回演算されてメモリ14に書き込まれる。従って、デジタル処理する場合にそれらの処理を容易に行うことができる。
【0054】
なお、上記した各実施形態において、図1、図8に示される演算器等の各構成要素、および図6、図12、図13における各ステップの処理は、それぞれの機能を実現するための手段として把握され、またメモリ14、デュアルポートRAM141は、記憶手段として把握される。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係るMAP復号装置の構成を示す図である。
【図2】本発明の第1実施形態におけるMAP復号の原理を示す図である。
【図3】本発明の第1実施形態においてメモリに後方確率の演算結果を記憶する状態を説明するための図である。
【図4】図1中のビット位置制御部の構成を示す図である。
【図5】図1中のメモリアドレスデコーダの構成を示す図である。
【図6】本発明の第1実施形態に係るMAP復号装置をソフトウエアで実現した場合の処理を示すフローチャートである。
【図7】本発明の第1実施形態においてメモリとしてデュアルポートRAMを使用した場合のMAP復号装置の構成を示す図である。
【図8】本発明の第2実施形態に係るMAP復号装置の構成を示す図である。
【図9】本発明の第2実施形態におけるMAP復号の原理を示す図である。
【図10】本発明の第2実施形態においてメモリに後方確率の演算結果を記憶する状態を説明するための図である。
【図11】図8中のビット位置制御部の構成を示す図である。
【図12】本発明の第2実施形態に係るMAP復号装置をソフトウエアで実現した場合の処理を示すフローチャートである。
【図13】図12に続く処理を示すフローチャートである。
【図14】本発明の第2実施形態においてメモリとしてデュアルポートRAMを使用した場合のMAP復号装置の構成を示す図である。
【図15】本発明の第2実施形態の変形例におけるMAP復号の原理を示す図である。
【図16】従来のMAP復号装置の構成を示す図である。
【図17】従来の他のMAP復号の原理を説明するための図である。
【図18】図17に示すMAP復号のタイムチャートである。
【符号の説明】
11…前方確率演算器、12…後方確率演算器、13…結合確率演算器、
14…メモリ、15…ビット位置制御部、16…メモリアドレスデコーダ、
12a…第1の後方確率演算器、12b…第2の後方確率演算器。
【発明の属する技術分野】
本発明は、ターボデコーダ等に用いることができるMAP復号装置に関する。
【0002】
【従来の技術】
従来、畳込み符号とインタリーブとを組合せたターボ符号に変換して送信された符号化データを受信し、その誤りを訂正して復号を行うターボデコーダが提案されている。
【0003】
このターボデコーダに用いられる復号方式としては、MAP(最大事後確率:Maximum A Posteriori Probabi1ity)復号方式が知られている。図16に従来のMAP復号装置の構成を示す。
【0004】
受信データ(ターボ符号化されているデータ)をメモリ(図示せず)に記憶したデータが入力データとしてMAP復号装置に入力される。前方確率演算器51は、メモリに記憶された入力データについて、トレリスを用いて先頭ビットから最終ビットに向け順に前方確率を演算する。その演算結果は、第1のメモリ54に記憶される。トレリスとは、送信側でターボ符号化する際にどのような畳み込みをしたかによって形が決まるもので、状態(例えば3つのシフトレジスタを用いて畳み込みを行っていれば8つの状態となる)とその状態間を結ぶ枝で構成されている。また、後方確率演算器52は、メモリに記憶された入力データについて、最終ビットから先頭ビットに向け順に後方確率を演算する。その演算結果は、第2のメモリ55に記憶される。
【0005】
前方確率演算器51、後方確率演算器52が全ての演算を終了すると、結合確率演算器53は、第1、第2のメモリ54、55に記憶された前方確率演算器51の演算結果、後方確率演算器52の演算結果から結合確率の演算を行う。その演算結果は、復号結果として出力される。なお、結合確率演算器53の演算結果は、元のデータが“1”である確率と、“0”である確率をアナログ的に示すものである。この演算結果を基に、図示しない硬判定(元のデータが“1”である確率と、“0”である確率のどちらが大きいかの判定)を行って、元のデータを示す情報(例えば、“1”である確率が大きい場合は+の符号のデータ、“0”である確率が大きい場合は−の符号のデータ)が順に得られる。
【0006】
上記した従来のMAP復号装置では、前方確率演算器51、後方確率演算器52の演算結果を記憶するメモリ容量が大きくなるという問題がある。そこで、メモリ容量を少なくするために、99年6月の信学技報に記載された“Turbo符号におけるSub-log-MAPの回路規模削減方式”が提案されている。このものによれば、以下のようなMAP復号が行われる。
【0007】
図17にその原理説明図、図18にタイムチャートを示す。情報長(トレリス長)NをLずつのブロックに分割し、Lを基本単位として復号を行う。ここでは、情報の先頭ビットを0、最終ビットをNとし、その間をL毎にL1、L2、L3…とする。
▲1▼ Nから0へ後方確率演算を行う。このときLごとに…、L3、L2の各状態の後方確率の演算結果をメモリに書き込み、L1から0までの全ての時間及び各状態の後方確率演算結果をメモリに書き込む。
▲2▼ 0からL1まで前方確率演算を行う。これと同時に後方確率演算結果を読み出し両者により結合確率演算を行う。
▲3▼ ▲2▼と同時にL2の後方確率演算結果を読み出し、これを初期値としてL2からL1まで後方確率演算を行う。▲2▼と▲3▼は別々の演算回路で同時に行う。
▲4▼ L1からL2まで前方確率演算を行う。これと同時に後方確率演算結果を読み出し両者により結合確率演算を行う。
▲5▼ ▲4▼と同時にL3の後方確率演算結果を読み出し、これを初期値としてL3からL2まで後方確率演算を行う。▲4▼と▲5▼も別々の演算回路で同時に行う。
以後、上記と同様の演算を繰り返し、Nまで復号結果を出力する。
【0008】
このようなMAP復号を行うことにより、図16に示すMAP復号装置に比べて、前方確率演算器51の演算結果を記憶するメモリを無くし、後方確率演算器52の演算結果を記憶するメモリ55の容量を削減することができる。
【0009】
【発明が解決しようとする課題】
しかしながら、図16に示すMAP復号装置および上記した論文に記載されたMAP復号装置のいずれにおいても、トレリスを片側(先頭ビットから最終ビットまであるいは最終ビットから先頭ビットまで)演算する時間を1としたとき、2の演算時間が必要となる。これは、先に後方確率演算をトレリス全体に対して行い、その演算結果をメモリに格納し、次に前方確率演算と統合確率演算をトレリス全体にするためである。このことにより、データが入力されてから初めて復号結果が出力されるまでにディレイ時間が生じる。このディレイ時間は、ターボデコーダを内包するシステムにおいては、データ処理に付加される遅延時間に相当する。
【0010】
本発明は上記問題に鑑みたもので、MAP復号に要する時間を短くすることを目的とする。また、MAP復号に要する時間を短くするとともに、演算結果の記憶容量を少なくすることを目的とする。
【0011】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、入力データについてその先頭から終端に向けトレリスを用いて前方確率の演算を行う前方確率演算手段(11)と、
前記前方確率の演算と並行して、前記入力データについてその終端から先頭に向けトレリスを用いて後方確率の演算を行う後方確率演算手段(12)と、
前記後方確率の演算結果を記憶する記憶手段(14)と、
前記前方確率の演算結果と前記記憶手段(14)に記憶された後方確率の演算結果から結合確率の演算を行う結合確率演算手段(13)とを備え、
前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われると、前記結合確率演算手段(13)は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、
前記前方確率の演算と前記結合確率の演算が前記トレリスの終端まで行われると、前記トレリスの先端から前記トレリスの中間まで、前記前方確率演算手段(11)は前記前方確率の演算を行い、前記結合確率手段は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行うことを特徴としている。
【0012】
この発明によれば、トレリスの片側演算時間を1としたとき、1.5の演算時間でMAP復号が終了することになるため、MAP復号に要する時間を短くすることができる。
【0013】
この場合、請求項2に記載の発明のように、前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われた後に、前記後方確率の演算結果が、前記記憶手段(14)において前記結合確率の演算のために読み出された前記後方確率の演算結果の記憶位置に書き込むようにすれば、演算結果の記憶容量を少なくすることができる。
【0014】
請求項3に記載の発明では、入力データについてその先頭から終端に向けトレリスを用いて前方確率の演算を行う前方確率演算手段(11)と、
前記前方確率の演算と並行して、前記入力データについてその終端から先頭に向けトレリスを用いて後方確率の演算を行う第1の後方確率演算手段(12a)と、
トレリス長を複数に分割しその分割したトレリス位置の前記後方確率の演算結果を記憶する記憶手段(14)と、
前記前方確率の演算結果と前記記憶手段(14)に記憶された後方確率の演算結果から結合確率の演算を行う結合確率演算手段(13)と、
前記分割した区間について前記後方確率の演算を行う第2の後方確率演算手段(12b)とを備え、
前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われると、前記結合確率演算手段(13)は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、これと並行して、前記第2の後方確率演算手段(12b)は、前記結合確率演算手段(13)が前記結合確率の演算を行っている分割区間の次の分割区間について前記後方確率の演算を行いその演算結果を前記記憶手段(14)記憶手段(14)の所定の記憶領域に上書きして書き込むようにし、
前記前方確率の演算と前記結合確率の演算が前記トレリスの終端まで行われると、前記トレリスの先端から前記トレリスの中間まで、前記前方確率演算手段(11)は前記前方確率の演算を行い、前記結合確率手段は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、これと並行して、前記第2の後方確率演算手段(12b)は、前記結合確率演算手段(13)が前記結合確率の演算を行っている分割区間の次の分割区間について前記後方確率の演算を行いその演算結果を前記記憶手段(14)の所定の記憶領域に上書きして書き込むことを特徴としている。
【0015】
この発明によれば、請求項1に記載の発明と同様、MAP復号に要する時間を短くすることができるとともに、トレリス長を複数に分割しその分割したトレリス位置の後方確率の演算結果を記憶するようにしているから、後方確率の演算結果を全て記憶するものに比べて記憶容量を少なくすることができる。
【0016】
この場合、請求項4に記載の発明のように、前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われた後に、それまでに前記第1の後方確率演算手段(12a)の演算結果を記憶していた前記記憶手段(14)の記憶位置に、前記第1、第2の後方確率演算手段(12a、12b)のそれぞれの演算結果を上書きして書き込むようにすれば、演算結果の記憶容量をさらに少なくすることができる。
【0017】
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【0018】
【発明の実施の形態】
(第1実施形態)
図1に本発明の第1実施形態に係るMAP復号装置の構成を示し、図2にその復号原理を示す。
【0019】
このMAP復号装置には、受信データ(ターボ符号化されているデータ)をメモリ(図示せず)に記憶したデータが入力データとして入力される。前方確率演算器11は、入力データについて、トレリスを用い、前方確率演算(演算αという)を行う。これと同時に(並行して)、後方確率演算器12は、後方確率演算(演算βという)を行う。後方確率演算器12の演算結果Dat#bは、メモリ14に記憶される。この場合、後方確率演算器12は、最終ビットから先頭ビットに向けて演算βを行うので、その演算結果Dat#bは、例えば図3に示すようにアドレスの若い順に記憶される。
【0020】
前方確率演算器11の演算αと後方確率演算器12の演算βがトレリスの中間まで行われると、この後、前方確率演算器11は演算αを行い、また結合確率演算器13は、メモリ14から、前方確率演算器11が演算αを行っている位置に相当するビット位置(一般には1ビット後方の位置)における後方確率演算器12の演算結果Dat#bを読み出し、結合確率演算(演算λという)を行う。また、これと同時に、後方確率演算器12は演算βを継続し、その演算結果Dat#bを、先に演算λをする際にメモリ14から読み出した後方確率演算器12の演算結果Dat#bの記憶位置(アドレス位置)に上書きして格納する。
【0021】
前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの終端まで行われると、トレリスの先端へ戻り、前方確率演算器11は演算αを行い、また結合確率演算器13は、メモリ14から、前方確率演算器11が演算αを行っている位置に相当するビット位置における後方確率演算器12の演算結果Dat#bを読み出し、演算λを行って復号結果を出力する。そして、前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの中間まで行われると、全てのビットについて演算λが行われたことになるため、MAP復号を終了する。
【0022】
この実施形態によれば、前方確率演算器11の演算αトレリスの中間をすぎてから、結合確率演算器13の演算λと復号結果の出力が開始される。また、トレリスの片側演算時間を1としたとき、1.5の演算時間でMAP復号が終了することになる。従って、従来のMAP復号装置では2の演算時間が必要であったのに対し、この実施形態ではその3/4の演算時間で済むことになる。
【0023】
また、メモリ14は、トレリスの中間までの後方確率演算器12の演算結果Dat#bを記憶するだけでよいため、図16に示すMAP復号装置に比べて、前方確率演算器11の演算結果を記憶するメモリを無くし、後方確率演算器12の演算結果Dat#bを記憶するメモリの容量をその半分に削減することができる。なお、メモリ14の容量に余裕があれば、トレリスの全てに対して後方確率演算器12の演算結果Dat#bを順に記憶させていくようにしてもよい。
【0024】
上記した前方確率演算器11、後方確率演算器12において、演算を行う際のトレリスのビット位置は、ビット位置制御部15で決定される。図4に、ビット位置制御部15の一例を示す。
【0025】
ビット位置制御部15は、インクリメンタ151、減算器152、およびトレリス終端検知回路153で構成されている。インクリメンタ151は、初期値0からインクリメントを行って前方確率演算器11が演算αを行う際のトレリスのビット位置Pos#aを出力する。減算器152は、トレリス長からPos#aを減じて後方確率演算器12が演算βを行う際のトレリスのビット位置Pos#bを出力する。トレリス終端検知回路153は、Pos#bの値から、演算αと演算λの演算がトレリスの終端まで達したことを検知し、インクリメンタ151をリセットして、初期値0からインクリメントを行わせるようにする。
【0026】
このことにより、Pos#aは、その初期値から順次増大していく値となり、Pos#bは、その初期値から順次減少していく値となる。また、トレリス長だけ演算αと演算λの演算が行われると、Pos#a、Pos#bをそれぞれの初期値から増大、減少させていく。従って、前方確率演算器11は、Pos#aを用いて、先頭ビットから最終ビットに向けて演算αを行い、トレリス長分の演算が終了すると、再度先頭ビットから演算αを行うことになる。また、後方確率演算器12は、Pos#bを用いて、最終ビットから先頭ビットに向けて演算βを行い、トレリス長分の演算が終了すると、再度最終ビットから演算βを行うことになる。なお、トレリス長分の演算が終了した後の演算βの結果は、演算λには必要ないので、トレリス長分の演算が終了した後は、演算βを行わないようにしてもよい。
【0027】
また、上記したメモリ14の書き込みおよび読み出しを行うためのアドレスは、メモリアドレスデコーダ16で決定される。図5に、メモリアドレスデコーダ16の一例を示す。このメモリアドレスデコーダ16は、比較・選択器161で構成され、入力されるPos#aの値に基づいてアドレスAdr#bを出力する。すなわち、Pos#aがトレリス長の1/2以下のときは、Pos#aをアドレスAdr#bとして出力し、Pos#aがトレリス長の1/2より大きいときは、(トレリス長−Pos#a)をアドレスAdr#bとして出力する。
【0028】
従って、Pos#aがトレリス長の1/2以下のときは、Pos#aをアドレスAdr#bとして、演算結果Dat#bがメモリ14に記憶され、Pos#aがトレリス長の1/2より大きいときは、(トレリス長−Pos#a)をアドレスAdr#bとして、メモリ14に記憶された後方確率演算器12の演算結果Dat#bが読み出され、後方確率演算器12の新たな演算結果Dat#bがメモリ14に書き込まれる。また、トレリスの終端までの演算が終了し、Pos#aがリセットされた後は、Pos#aがトレリス長の1/2以下であるため、そのPos#aをアドレスAdr#bとして、メモリ14に記憶された後方確率演算器12の演算結果Dat#bが読み出され、後方確率演算器12の新たな演算結果Dat#bがメモリ14に書き込まれる。
【0029】
なお、上記したMAP復号装置は、コンピュータを用いたソフトウエアで実現することもできる。この場合の処理を図6に示す。
【0030】
まず、第1の処理として、トレリスのビット位置を演算し(ステップ101)、そのビット位置において演算αを行い(ステップ102)、トレリス長からビット位置を減算したビット位置の演算βを行い(ステップ103、104)、演算結果を演算αのビット位置をアドレスとするメモリ14の記憶領域に書き込み(ステップ105)、ビット位置の判定を行う(ステップ106)。ビット位置がトレリス長の1/2より小さければ、上記した第1の処理を繰り返す。
【0031】
また、ビット位置がトレリス長の1/2になっていると、第2の処理として、まずトレリスの次のビット位置を演算し(ステップ107)、そのビット位置において演算αを行い(ステップ108)、同ビット位置をアドレスとするメモリ14の記憶領域から演算βの結果を読み出し(ステップ109)、先の演算αの演算結果と読み出した演算βの結果から演算λを行い(ステップ110)、復号結果として出力する。また、演算αに並行して、トレリス長からビット位置を減算したビット位置の演算βを行い(ステップ111、112)、演算結果を、トレリス長からビット位置を減算したビット位置をアドレスとするメモリ14の記憶領域に書き込み(ステップ113)、ビット位置の判定を行う(ステップ114)。ビット位置がトレリス長より小さければ、上記した第2の処理を繰り返す。
【0032】
また、ビット位置がトレリス長になっていると、第3の処理として、まずビット位置をリセットし(ステップ115)、トレリスの次のビット位置を演算し(ステップ116)、そのビット位置において演算αを行い(ステップ117)、同ビット位置をアドレスとするメモリ14から演算βの結果を読み出し(ステップ118)、先の演算αの演算結果と読み出した演算βの結果から演算λを行い(ステップ119)、復号結果として出力する。その後、ビット位置の判定を行う(ステップ120)。ビット位置がトレリス長の1/2より小さければ、上記した第3の処理を繰り返す。そして、ビット位置がトレリス長の1/2になっていると、処理を終了する。
【0033】
なお、上記した実施形態では、結合確率演算器13で演算λを行うためにメモリ14から後方確率演算器12の演算結果Dat#bを読み出し、その読み出したアドレス位置に、後方確率演算器12の新たな演算結果Dat#bを書き込むようにしている。この場合、その読み出しと書き込みを、タイミングをずらして対応することになるが、図7に示すように、デュアルポートRAM141を使用すれば、読み書きのアクセスを同時に行うことができる。この場合、書き込み用のアドレスAdr#b#wを用いて後方確率演算器12の演算結果Dat#bがデュアルポートRAMに書き込まれ、読み出し用のアドレスAdr#b#rを用いてデュアルポートRAMから後方確率演算器12の演算結果Dat#bが読み出される。
(第2実施形態)
図8に本発明の第2実施形態に係るMAP復号装置の構成を示し、図9にその復号原理を示す。この実施形態は、上記した第1実施形態のMAP復号装置に、図17、図18に示すLビット間隔で後方確率演算器12の演算結果を記憶してMAP復号を行うように構成したものである。
【0034】
すなわち、この実施形態では、トレリス長をLずつのブロック(区間)に分割し、Lを基本単位として復号を行う。 前方確率演算器11は、入力データについて、トレリスを用い、演算αを行う。これと同時に、第1の後方確率演算器12aは、後方確率演算(演算βAという)を行う。第1の後方確率演算器12aは、その演算結果Dat#bを、LN、LN-1、…(図9参照)のようにLビット間隔でメモリ14に書き込む。この場合、第1の後方確率演算器12aは、最終ビットから先頭ビットに向けて演算を行うので、その演算結果Dat#bは、例えば図10に示すようにアドレスの若い順にLビットごとに記憶される。但し、トレリスの中間の手前Lビット(図9のLN/2〜LN/2+1−1)については、第1の後方確率演算器12aは、演算結果Dat#bの全てをメモリ14に書き込む。また、第1の後方確率演算器12aは、トレリスの先頭の手前Lビット(図9の0〜L1)についても、演算結果Dat#bの全てをメモリ14に書き込むようにする。
【0035】
前方確率演算器11の演算αと第1の後方確率演算器12aの演算βAがトレリスの中間まで行われると、前方確率演算器11は演算αを行い、また結合確率演算器13は、メモリ14から、前方確率演算器11が演算αを行っているビット位置に対応したビット位置の後方確率の演算結果Dat#bを読み出し、演算λを行う。
【0036】
また、演算αと演算λと並行して、第2の後方確率演算器12bは、結合確率演算器13が次のL区間において演算λをするに必要な演算結果Dat#bを用意するため、後方確率演算(演算βBという)を行い、その演算結果Dat#bをメモリに書き込む。すなわち、第2の後方確率演算器12bは、前方確率演算器11が図9のLN/2〜LN/2+1−1について演算αを行うときには、LN/2+2の演算結果Dat#bを読み出し、これを初期値としてLN/2+2−1からLN/2+1まで演算βBを行い、その演算結果Dat#bをメモリ14に書き込み、また前方確率演算器11が図9のLN/2+1〜LN/2+2−1について演算αを行うときには、LN/2+3の演算結果Dat#bを読み出し、これを初期値としてLN/2+3−1からLN/2+2まで演算βBを行い、その演算結果Dat#bをメモリ14に書き込む。以後、このような処理を、トレリスの終端まで行う。
【0037】
また、演算α、演算λ、演算βBと並行して、第1の後方確率演算器12aはその演算βAを継続し、その演算結果Dat#bをメモリ14に書き込む。
【0038】
前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの終端まで行われると、トレリスの先端へ戻り、上記したトレリスの中間からトレリスの終端までにおける処理と同様の処理を、トレリスの中間まで行う。
【0039】
すなわち、前方確率演算器11は演算αを行い、また結合確率演算器13は、前方確率演算器11が演算αを行っているビット位置に対応したビット位置の後方確率の演算結果Dat#bを読み出し、演算λを行う。また、これと同時に、第2の後方確率演算器12bは、結合確率演算器13が次のL区間において演算λをするに必要な演算結果Dat#bを用意するため、演算βBを行ってその結果をメモリ14に書き込む。また、これらと同時に、第1の後方確率演算器12aはその演算βAを継続し、その演算結果Dat#bを、Lビット間隔でメモリ14に書き込む。なお、トレリスの先端へ戻った後の演算βAは、演算λには必要ないので、なくてもよい。
【0040】
そして、前方確率演算器11の演算αと結合確率演算器13の演算λがトレリスの中間まで行われると、全てのビットについて演算λが行われたことになるため、MAP復号を終了する。
【0041】
このようにトレリス長をLずつのブロックに分割し、Lを基本単位として復号を行うことにより、第1実施形態よりも、メモリ14の容量を少なくすることができる。
【0042】
ここで、演算βA、演算βBの演算結果Dat#bをメモリ14に書き込む方法について説明する。演算α、演算βAがトレリスの中間まで行われると、演算βAの演算結果Dat#bは、図10に示すようにLビットごとにメモリ14に書き込まれ、トレリスの中間の手前Lビット(LN/2〜LN/2+1−1)についてはメモリ14のm1、m2…の記憶領域に書き込まれる。そして、演算α、演算βAがトレリスの中間を超えた最初の時点においては、m1、m2…の記憶領域に記憶されたDat#bを用いて演算λが順に行われ、また演算βBをするために次のL区間(LN/2+2〜LN/2+1)の最初のビット位置の演算結果Dat#bがM1の記憶領域から読み出され、それを初期値として演算βBが行われ、その演算結果が演算λを行うために先に読み出されたm1、m2…の記憶領域に順に書き込まれる。また、演算βAの演算結果Dat#bはM1の記憶領域に書き込まれる。以後、同様の処理を繰り返すことにより、演算βA、演算βBの演算結果Dat#bがメモリ14に順に書き込まれる。なお、トレリスの先頭の手前Lビットについては、演算βAの演算結果Dat#bがLビットの記憶領域m1、m2…にそのまま記憶される。このような書き込みを行うようにすれば、メモリ14の容量を第1実施形態のものより、1/L+Lビット分とすることができ、メモリ容量を大幅に削減することができる。
【0043】
図11に、この実施形態におけるビット位置制御部15の構成を示す。ビット位置制御部15は、インクリメンタ151、減算器152、トレリス終端検知回路153、加算器154、およびデクリメンタ155で構成されている。インクリメンタ151は、初期値0からインクリメントを行って前方確率演算器11が演算を行う際のトレリスのビット位置Pos#aを出力する。減算器152は、トレリス長からPos#aを減じて第1の後方確率演算器12aが演算を行う際のトレリスのビット位置Pos#bを出力する。トレリス終端検知回路153は、Pos#bの値から、演算αと演算λの演算がトレリスの終端まで達したことを検知し、インクリメンタ151をリセットし、初期値0からインクリメントを行わせるようにする。加算器154は、Pos#aの値がトレリスの中間になった以後において、Lビット毎にPos#aに2Lビットを加算した値(演算βBをする次の分割区間の最初の位置を示す値)を出力する処理を行い、Lビット毎に更新された(Pos#a+2Lビット)の値を出力する。デクリメンタ155は、加算器154の出力をデクリメントして第2の後方確率演算器12bのビット位置Pos#bbを出力する。
【0044】
このようにすれば、Pos#bbに基づき、第2の後方確率演算器12bは、結合確率演算器13が次のL区間において演算λをするに必要なDat#bを順次演算することができる。
【0045】
なお、上記したMAP復号装置は、コンピュータを用いたソフトウエアで実現することもできる。この場合の処理を図12、図13に示す。
【0046】
まず、第1の処理として、トレリスのビット位置を演算し(ステップ201)、そのビット位置において演算αを行い(ステップ202)、トレリス長からビット位置を減算したビット位置の演算βAを行い(ステップ203、204)、書き込み判定を行う(ステップ205)。書き込み可の場合は、演算結果を、図10に示すように、初期値ゼロから順にインクリメントした値をアドレスとするメモリ14の記憶領域に書き込む(ステップ206)。上記した書き込み判定は、Lビット毎に1回初めに書き込み可となり、また、ビット位置がトレリス長の1/2よりL小さい値になった以後は、常に書き込み可になるように判定する。この後、ビット位置の判定を行う(ステップ207)。ビット位置がトレリス長の1/2より小さければ、上記した第1の処理を繰り返す。
【0047】
また、ビット位置がトレリス長の1/2になっていると、第2の処理として、トレリスの次のビット位置を演算し(ステップ208)、そのビット位置において演算αを行い(ステップ209)、同ビット位置に対応する演算βA(もしくは演算βB)の結果をメモリ14から読み出し(ステップ210)、先の演算αの演算結果と読み出した演算βA(もしくは演算βB)の結果から演算λを行い(ステップ211)、復号結果として出力する。
【0048】
また、演算αに並行して、演算βBのビット位置を演算して求める、すなわちLビット毎にそのときのトレリスのビット位置を初期値として、それに2Lビット加算した値からビット位置を減算(デクリメント)して求める(ステップ212)。そして、上記の初期値とされたビット位置の後方確率βAの演算結果Dat#bをメモリ14から読み出し、これを初期値としてそれぞれのビット位置において演算βBを行い(ステップ213)、その演算結果をメモリ14に書き込む(ステップ214)。
【0049】
また、演算αと演算βBに並行して、トレリス長からビット位置を減算したビット位置の演算βを行い(ステップ215、216)、書き込み判定を行う(ステップ217)。書き込み可の場合は、演算結果をメモリ14に書き込む(ステップ218)。上記した書き込み判定は、Lビット毎に1回初めに書き込み可となり、また、ビット位置がトレリス長よりL小さい値になった以後は、常に書き込み可になるように判定する。なお、演算βBと演算βAの書き込みが同時に発生した場合は、タイミングをずらしてそれぞれをメモリ14に書き込むようにする。次に、ビット位置の判定を行う(ステップ219)。ビット位置がトレリス長より小さければ、上記した第2の処理を繰り返す。
【0050】
また、ビット位置がトレリス長になっていると、第3の処理として、まずビット位置をリセットし(ステップ220)、トレリスの次のビット位置を演算し(ステップ221)、このビット位置に対応する演算βA(もしくは演算βB)の結果をメモリ14から読み出し(ステップ223)、先の演算αの演算結果と読み出した演算βA(もしくは演算βB)の結果から演算λを行い(ステップ224)、復号結果として出力する。
【0051】
また、演算αに並行して、演算βBのビット位置を求め(ステップ225)、ステップ213と同様にそのビット位置において演算βBを行い(ステップ226)、その演算結果をメモリ14に書き込む(ステップ227)。その後、ビット位置の判定を行う(ステップ228)。ビット位置がトレリス長の1/2より小さければ、上記した第3の処理を繰り返す。そして、ビット位置がトレリス長の1/2になっていると、処理を終了する。
【0052】
なお、この第2実施形態においても、メモリ14としては、図7と同様、図14に示すようにデュアルポートRAM141を使用し、第1、第2の後方確率演算器12a、12bの演算結果の書き込み用のアドレスAdr#b#w、Adr#bb#wと、第1、第2の後方確率演算器12a、12bの演算結果の読み出し用のアドレスAdr#b#r、Adr#bb#rを用いて、読み書きのアクセスを同時に行うようにしてもよい。
【0053】
また、この第2実施形態において、Lビット間隔で後方確率演算器12の演算結果を記憶してMAP復号を行うものを示したが、Lを2とすれば、演算部βAの書き込み判定および演算βBのビット位置の特定を容易に行うことができる。この場合の復号原理を図15に示す。図に示すように、演算βAの演算結果は、2ビット毎に1回書き込みを行うように書き込み判定されて、メモリ14に書き込まれる。また、演算βAも2ビット毎に1回演算されてメモリ14に書き込まれる。従って、デジタル処理する場合にそれらの処理を容易に行うことができる。
【0054】
なお、上記した各実施形態において、図1、図8に示される演算器等の各構成要素、および図6、図12、図13における各ステップの処理は、それぞれの機能を実現するための手段として把握され、またメモリ14、デュアルポートRAM141は、記憶手段として把握される。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係るMAP復号装置の構成を示す図である。
【図2】本発明の第1実施形態におけるMAP復号の原理を示す図である。
【図3】本発明の第1実施形態においてメモリに後方確率の演算結果を記憶する状態を説明するための図である。
【図4】図1中のビット位置制御部の構成を示す図である。
【図5】図1中のメモリアドレスデコーダの構成を示す図である。
【図6】本発明の第1実施形態に係るMAP復号装置をソフトウエアで実現した場合の処理を示すフローチャートである。
【図7】本発明の第1実施形態においてメモリとしてデュアルポートRAMを使用した場合のMAP復号装置の構成を示す図である。
【図8】本発明の第2実施形態に係るMAP復号装置の構成を示す図である。
【図9】本発明の第2実施形態におけるMAP復号の原理を示す図である。
【図10】本発明の第2実施形態においてメモリに後方確率の演算結果を記憶する状態を説明するための図である。
【図11】図8中のビット位置制御部の構成を示す図である。
【図12】本発明の第2実施形態に係るMAP復号装置をソフトウエアで実現した場合の処理を示すフローチャートである。
【図13】図12に続く処理を示すフローチャートである。
【図14】本発明の第2実施形態においてメモリとしてデュアルポートRAMを使用した場合のMAP復号装置の構成を示す図である。
【図15】本発明の第2実施形態の変形例におけるMAP復号の原理を示す図である。
【図16】従来のMAP復号装置の構成を示す図である。
【図17】従来の他のMAP復号の原理を説明するための図である。
【図18】図17に示すMAP復号のタイムチャートである。
【符号の説明】
11…前方確率演算器、12…後方確率演算器、13…結合確率演算器、
14…メモリ、15…ビット位置制御部、16…メモリアドレスデコーダ、
12a…第1の後方確率演算器、12b…第2の後方確率演算器。
Claims (4)
- 入力データについてその先頭から終端に向けトレリスを用いて前方確率の演算を行う前方確率演算手段(11)と、
前記前方確率の演算と並行して、前記入力データについてその終端から先頭に向けトレリスを用いて後方確率の演算を行う後方確率演算手段(12)と、
前記後方確率の演算結果を記憶する記憶手段(14)と、
前記前方確率の演算結果と前記記憶手段(14)に記憶された後方確率の演算結果から結合確率の演算を行う結合確率演算手段(13)とを備え、
前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われると、前記結合確率演算手段(13)は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、
前記前方確率の演算と前記結合確率の演算が前記トレリスの終端まで行われると、前記トレリスの先端から前記トレリスの中間まで、前記前方確率演算手段(11)は前記前方確率の演算を行い、前記結合確率手段は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行うことを特徴とするMAP復号装置。 - 前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われた後は、前記後方確率の演算結果が、前記記憶手段(14)において前記結合確率の演算のために読み出された前記後方確率の演算結果の記憶位置に書き込まれることを特徴とする請求項1に記載のMAP復号装置。
- 入力データについてその先頭から終端に向けトレリスを用いて前方確率の演算を行う前方確率演算手段(11)と、
前記前方確率の演算と並行して、前記入力データについてその終端から先頭に向けトレリスを用いて後方確率の演算を行う第1の後方確率演算手段(12a)と、
トレリス長を複数に分割しその分割したトレリス位置の前記後方確率の演算結果を記憶する記憶手段(14)と、
前記前方確率の演算結果と前記記憶手段(14)に記憶された後方確率の演算結果から結合確率の演算を行う結合確率演算手段(13)と、
前記分割した区間について前記後方確率の演算を行う第2の後方確率演算手段(12b)とを備え、
前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われると、前記結合確率演算手段(13)は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、これと並行して、前記第2の後方確率演算手段(12b)は、前記結合確率演算手段(13)が前記結合確率の演算を行っている分割区間の次の分割区間について前記後方確率の演算を行いその演算結果を前記記憶手段(14)の所定の記憶領域に上書きして書き込むようにし、
前記前方確率の演算と前記結合確率の演算が前記トレリスの終端まで行われると、前記トレリスの先端から前記トレリスの中間まで、前記前方確率演算手段(11)は前記前方確率の演算を行い、前記結合確率手段は、前記記憶手段(14)から前記前方確率の演算を行っている位置に相当するトレリス位置における後方確率の演算結果を読み出し、読み出した後方確率の演算結果と前記前方確率の演算結果から結合確率の演算を行い、これと並行して、前記第2の後方確率演算手段(12b)は、前記結合確率演算手段(13)が前記結合確率の演算を行っている分割区間の次の分割区間について前記後方確率の演算を行いその演算結果を前記記憶手段(14)の所定領域に上書きして書き込むことを特徴とするMAP復号装置。 - 前記前方確率の演算と前記後方確率の演算が前記トレリスの中間まで行われた後は、それまでに前記第1の後方確率演算手段(12a)の演算結果を記憶していた前記記憶手段(14)の記憶位置に、前記第1、第2の後方確率演算手段(12a、12b)のそれぞれの演算結果が上書きして書き込まれることを特徴とする請求項3に記載のMAP復号装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001013546A JP4366867B2 (ja) | 2001-01-22 | 2001-01-22 | Map復号装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001013546A JP4366867B2 (ja) | 2001-01-22 | 2001-01-22 | Map復号装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002217745A JP2002217745A (ja) | 2002-08-02 |
JP4366867B2 true JP4366867B2 (ja) | 2009-11-18 |
Family
ID=18880383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001013546A Expired - Fee Related JP4366867B2 (ja) | 2001-01-22 | 2001-01-22 | Map復号装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4366867B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004080508A (ja) | 2002-08-20 | 2004-03-11 | Nec Electronics Corp | 誤り訂正符号の復号方法、そのプログラム及びその装置 |
-
2001
- 2001-01-22 JP JP2001013546A patent/JP4366867B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002217745A (ja) | 2002-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3935471B2 (ja) | 最大事後確率(map)復号器のためのパイプラインアーキテクチャ | |
EP1049001B1 (en) | Arithmetic apparatus | |
JP3358996B2 (ja) | 自動ビタビトレースバックビット格納機能を有する並列算術論理プロセッサ | |
US6651215B2 (en) | Viterbi decoding apparatus and viterbi decoding method | |
JPH10107651A (ja) | ビタビ復号装置 | |
IL149248A (en) | High-speed ACS unit for working with the Vetrabi cipher | |
JPH09153822A (ja) | データ処理システムにおける加算比較選択バタフライ演算およびその命令を実行する方法 | |
US7958437B2 (en) | MAP detector with a single state metric engine | |
EP1739843B1 (en) | Power efficient Viterbi decoder | |
JP4366867B2 (ja) | Map復号装置 | |
JP4520861B2 (ja) | ターボ復号器及びターボ復号方法 | |
EP1058392A1 (en) | Method for implementing a plurality of add-compare-select butterfly operations in parallel, in a data processing system | |
JP4422867B2 (ja) | ビタビデコーダ | |
JP3269845B2 (ja) | ヴィタビ復号器 | |
JP3193830B2 (ja) | 演算回路 | |
JPH0722969A (ja) | 演算装置 | |
JP4595238B2 (ja) | 消失のみ訂正方法、消失のみ訂正方法のプログラム、消失のみ訂正方法のプログラムを記録した記録媒体及び消失訂正専用回路 | |
JP3548949B2 (ja) | ビタビ復号器 | |
JP2009060455A (ja) | スライディングウィンドウターボ復号処理装置とその方法 | |
JPH08167858A (ja) | ビタビ復号器 | |
JPH11330989A (ja) | インデックスを識別する方法 | |
JP2001223597A (ja) | インターリーブ装置 | |
JP2002111518A (ja) | ビタビ復号方法及びその装置 | |
WO2001029973A1 (en) | Trellis backtrace decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070322 |
|
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: 20090804 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090817 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120904 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |