デジタル通信システムでは、伝送路において生じる誤りを訂正する誤り訂正符号が用いられている。特に移動通信システムでは、フェージングの影響により電波強度が激しく変動して誤りが生じ易いため、誤り訂正符号には高い訂正能力が要求される。誤り訂正符号の一例であるターボ符号は、シャノン限界に近い誤り訂正能力を有する符号として注目されている。このターボ符号は、例えば、第3世代の移動通信方式であるW−CDMA(Wideband Code Division Multiple Access)やCDMA−2000で使用されている。このようなターボ符号を復号する装置は、例えば特許文献1に示されている。
図12のブロック図は、ターボ符号を生成するための一般的な符号化装置の構成を示している。この符号化装置101は、例えば、通信システムの送信側に設けられ、符号化前データである情報ビット(Systematic Bits:組織部)Uを、並列連接畳み込み符号(PCCCs:Parallel Concatenated Convolutional Codes)のターボ符号に符号化し、伝送路等の外部へ出力する。なお、ターボ符号は、並列連接符号に限らず、直列連接畳み込み符号など、ターボ復号が可能であればよい。
符号化装置101は、図12に示すように、組織的畳み込み符号化器(Systematic Convolutional Coder)である第1の符号化器102及び第2の符号化器103と、データをインタリーブする(並び替える)インタリーバ(Interleaving)104とを備えている。
第1の符号化器102は、入力された組織部Uを符号化して冗長ビット(パリティビット:Parity Bits)Pを生成し、この冗長ビットPを外部へ出力する。インタリーバ104は、入力された組織部Uの各ビットを所定のインタリーブパターンに並べ替えて組織部Ubを生成し、この組織部Ubを第2の符号化器103へ出力する。第2の符号化器103は、組織部Ubを符号化して冗長ビットPbを生成し、この冗長ビットPbを外部へ出力する。
符号化装置101では、組織部U、冗長ビットP、組織部Ub、冗長ビットPbが生成される。組織部Uと冗長ビットPの組(U,P)を第1の要素符号(Elemental Code)E1といい、組織部Ubと冗長ビットPbの組(Ub,Pb)を第2の要素符号E2という。
ターボ符号の特徴は次の2点にある。
1)比較的簡易で小さい構成の組織符号化器を複数個使用する
2)それぞれの符号化器は、符号化器入力である情報ビットに対して、インターリーバ(並べ替え器)を介して連接されている。
上記において、2)の目的は、情報ビットの順番を入れ換えて符号化器に入力することで、符号化器間において異なる符号語系列を生成することにある。これは、復号側にて、それぞれの符号語の復号結果を、互いの符号語間で補完しあうことにより、誤り訂正能力を向上させるためである。
1)の目的は、符号語間における復号結果の相互補完を、情報ビットを用いて行うためである。例えば3GPP(3rd Generation Partnership Project)では、1)に、8状態の組織的畳み込み符号化器(8 states Systematic Convolutional Coder)を2個用いている。この3GPPでは、W−CDMAなどの第3世代の移動体通信システムの標準化が行なわれている。
図12における符号化器102の出力{U,P}の組を第1の要素符号(Elemental Code 1)、他方の出力{Ub,Pb}の組を第2の要素符号(Elemental Code 2)と呼んでいる。ただし、Ubは、実際は出力されずU、P、Pbの3つが後段に出力される。なお、実際はターミネーションビット(Termination bits)も出力されるが、ここでは、説明簡易化のため省略する。このため、3GPP規定のターボ符号の符号化率(Coding Rate)は1/3ということになる。
このように符号化されたターボ符号を復号することをターボ復号という。ターボ復号では、第1の要素符号E1を復号する1番目の復号部と第2の要素符号E2を復号する2番目の復号部との間で外部情報を交換しながら繰り返し復号が行われる。
図13に代表的なターボ復号の復号装置を示す。ターボ復号の特徴は次の1点にある。
1)複数の要素符号間にて外部情報(Extrinsic Information)を交換しながら、複数回処理を繰り返す。
図13に示すように、代表的な復号装置201は、第1の復号部202、第2の復号部203、インタリーブメモリ204、デインタリーブメモリ205及び硬判定・CRC判定部206を有する。第1の復号部202、第2の復号部203には、それぞれ複数の復号器(ターボデコーダ)A〜Dが含まれている。この複数のターボデコーダは、ターボ符号を複数のサブブロックに分け、並列処理を行う為に用いられる。ここではまず、ターボ符号を復号する時の復号装置の動作について説明し、並列処理に関しては、後述する。
このような復号装置201におけるターボ復号は以下の工程からなる。
A)第2の復号部203の外部情報をデインタリーブメモリ205から読み出し、第1の要素符号と共に第1の復号部202に入力する。第1の復号部202から外部情報を出力し、インタリーブメモリ204に書き込む。
B)第1の復号部202の外部情報をインタリーブメモリ204から読出し、第2の要素符号と共に第2の復号部203に入力する。第2の復号部203から外部情報を出力し、デインタリーブメモリ205に書き込む。
C)復号の最終繰り返しでは、第2の復号部203の対数尤度比LLRをデインタリーブメモリ205から読出し、硬判定・CRC判定部206にて硬判定を行なった後、CRCによりエラーチェックを行なっている。
先ず、A)を実行する。このときの第2の復号部203からの外部情報は初期値(=0)とする。次に、B)を実行する。そして、再びA)を実行し、任意の回数だけB)とA)とを繰り返す。そして、最終繰り返しにおいて、B)を実行したときに、第2の復号部203は、外部情報ではなく対数尤度比を出力する。最後にC)を実行する。
ターボ符号は組織符号であるため、受信系列には情報ビットUが含まれている。外部情報とはこの情報ビットUに対して復号の前に分かっている、"0"らしさ("1"らしさと同義)を表す値(事前値)である。つまりターボ復号とは、第1、第2の要素符号間の復号において、それぞれの情報ビットが"0"である確率を交換(相互補完)しながら、その確率の確度を上げ、誤り訂正能力を強化する処理である。
上記の復号動作において、インタリーブ、デインタリーブの動作は、以下のように行われる。図14及び図15は、インタリーブ、デインタリーブの動作を説明する為の図である。図14は、第1の復号部(正確には第1の復号部内の各復号器)及び第2の復号部(第2の復号部内の各復号器)が、インタリーブメモリ及びデインタリーブメモリに対しどのようにアクセスするかを説明する為の図である。また、図15は、インタリーブメモリあるいはデインタリーブメモリのメモリ空間に対して、第1、第2の復号部202、203がアクセスする方向を示す図である。
第1の復号部202は、上記したように外部情報をインタリーブメモリ204に出力する。この時、第1の復号部202は、インタリーブメモリ204に対しシーケンシャルなアクセスを行う(図14、15参照)。ここで言うシーケンシャルなアクセスとは、行列状に構成されたメモリ空間に対し、行方向に沿って順次書き込みを行うアクセスである(図15参照)。
第2の復号部203では、インタリーブメモリ204に書き込まれた外部情報に対してインタリーブしたアクセスを行う(図15参照)。ここで言うインタリーブしたアクセスと言うのは、メモリ空間に対して列方向に読み出しを行うアクセスのことである(図14参照)。なお、ここでは、列方向に図面下側から読み出すことによってインタリーブしたアクセスを行うものとする。
このインタリーブしたアクセスによってインタリーブメモリ204の外部情報はインタリーブされた外部情報として第2の復号部203で処理される。
第2の復号部203は、外部情報をデインタリーブメモリ205に出力する。この時、第2の復号部203はインタリーブしたパタンのアクセス、つまりメモリ空間に対して列方向に書き込みを行う(図15参照)。この書き込みによって、インタリーブメモリ204から読み出したアドレスに対応して、デインタリーブメモリ205に書き込みが行われる。
その後の繰り返し動作において、第1の復号部202は、デインタリーブメモリ205から、外部情報をシーケンシャルに読み出す(図15参照)。この時、第2の復号部203がインタリーブしたパタンのアクセスで書き込みを行っている為、シーケンシャルな読み出しで、デインタリーブされた外部情報を読み出すこととなる。
なお、実際のインタリーブ動作では、上記した行、列による入れ替えの他に、行内の入れ替え、行間の入れ替えなども行われるが、説明の簡略化のため、ここでは省略する。
ここで、上記した並列して復号を行う処理について説明する。ターボ復号においては入力されたコードブロックを複数のサブブロックに分割し、複数の復号器(ターボデコーダ)を用いてサブブロックごとに並列にデコード処理を行うことが行われている。なお、詳細にはこのサブブロックは、各復号器内では、さらにウィンドウと言う単位で分割して処理されるが、その点については後述する。
ここで、サブブロックごとに並列にアクセスを行う場合、図15に示したようにインタリーブメモリに対してサブブロックに対応する列ごとに第2の復号部203内の複数のデコーダがアクセスする。ここでは、図16に示したように1、2列目のメモリ空間に対してデコーダA、3、4列目にデコーダB、5、6列目にデコーダC、7、8列目にデコーダDがアクセスするとする。この場合、図17に示したように時刻T1において、複数のデコーダが同時に、図面4行目のメモリにアクセスしようとする。ここで、メモリは行方向でバンクが分けられているため、時刻T1で、同一バンクにアクセスしようとする問題が生じる(図18参照)。ここで仮に図16で示す31〜37のデータが空のデータであり、空データを飛ばしてデコーダがアクセスするものとしても、図19乃至21に示すように同一バンク(図19で言う3行目)に対するアクセスの競合は生じてしまう。
特開2004-15285号公報
以下、図面を参照して本発明の実施の形態1について説明する。本実施の形態ではターボ復号を行う復号装置としては、図13に示したターボ復号装置と同様の構成であるため、その詳細な説明は割愛する。本実施の形態では、第1の復号部202、第2の復号部203は、それぞれ4つのターボデコーダA〜Dを有している。また、インタリーブメモリ204、デインタリーブメモリ205は、それぞれ行方向でバンクに分割されているとする。なお、実際は行方向で20バンクに分割されたメモリを用いるが、図面の簡略化のため図13では4バンクのみ示している。
本実施の形態では符号列(コードブロック)を4つのサブブロックに分け、4つのターボデコーダを用いて並列にターボ復号を行う。図1に示すように、第1の復号部202に含まれるターボデコーダは、インタリーブメモリ204、デインタリーブメモリ205に対してシーケンシャルにアクセス(図面の行方向のアクセス)を行う。また図2に示すように第2の復号部203に含まれるターボデコーダは、インタリーブしたアクセス(図面列方向下からのアクセス)を行う。
本実施の形態では、この列方向でアクセスを行う第2の復号部203のターボデコーダにおいて、4つのターボデコーダのアクセスするタイミングを制御している。図3は、4つのターボデコーダがアクセスするタイミングを示す図である。図3に示すように第2の復号部203のターボデコーダAは、タイミングT1において、サブブロック1に対するデコードを開始する。この時ターボデコーダAは、インタリーブメモリ204のバンク20に対してアクセスを開始する。その後、基準クロックで1クロックずらしたタイミングT2において、第2の復号部203のターボデコーダBがサブブロック2に対してのアクセスを開始する。この時、ターボデコーダAは、既にバンク20に対するアクセスを終え、バンク19に対するアクセスとなっているため、タイミングT2で、ターボデコーダBがバンク20にアクセスを行っても、同一バンクに対するアクセスの競合は発生しない。その後、更に1クロックずれたタイミングT3においてターボデコーダCがサブブロック3に対してアクセスを開始する。同様にタイミングT4において、ターボデコーダDがサブブロック4に対するアクセスを開始する。本実施の形態では、ターボデコーダの起動のタイミングをずらすことによってこのアクセス制御を実行している。つまり、ターボデコーダAを起動した1クロック後にターボデコーダBが起動し、その後クロックに応じて順次ターボデコーダが起動していく。なお、1クロックごとに起動させるのではなく必要な数クロックごとにターボデコーダを起動させることも可能である。なお、本実施の形態では空データの部分があった場合でも空データを飛ばしたことによってメモリへのアクセスが競合してしまうことを回避する為、空データを飛ばしてターボデコーダがアクセスすることはないものとする。
このように本実施の形態では行方向に書き込まれたデータに対して列方向にアクセスしてインタリーブ動作を行う場合に、並列に動作するターボデコーダのインタリーブメモリに対するアクセスのタイミングをずらすことで、同一バンクに対して複数のターボデコーダが同時にアクセスすることを防止している。
ここで、第1の復号部202、第2の復号部203で行われるデコード動作の詳細について説明する。図4はトレリス線図を示している。ターボ復号では、トレリス線図上の始点から終点の方向にビタビ復号を行ってパスメトリック値を算出する処理をフォワード処理という。このフォワード処理で算出されるパスメトリック値をαパスメトリック値(第1のパスメトリック値)と呼ぶ。一方、フォワード処理とは逆方向に終点からビタビ復号を行ってパスメトリック値を算出する処理をバックワード処理という。このバックワード処理で算出されるパスメトリック値をβパスメトリック値(第2のパスメトリック値)と呼ぶ。
図5は、本実施の形態で行うバックワード処理、フォワード処理の様子を模式的に示した図である。本実施の形態のターボ符号の復号装置では、各ターボデコーダがサブブロックをさらにウィンドウという単位で処理している。ウィンドウ単位で処理することにより局所的な復号を行い、上記したパスメトリック値を保持するためのメモリの記憶容量を削減している。この場合、トレリス線図の始点から復号を開始する通常の復号シーケンスにおいては、ウィンドウのバックワード処理におけるパスメトリック値の初期値は、ウィンドウ先のすべての状態を等確率(初期値=0)としてバックワード処理を行う。以下、図5を参照して、本実施の形態の復号装置の処理について説明する。
まず、第1の復号部202のデコーダで、それぞれのサブブロックに対して図5に示すウィンドウWin1のバックワード処理を行う。このときの初期値は上記のゼロであるとする。
その後、ウィンドウWin1に関するフォワード処理を行う。また同時に、ウィンドウWin2に関するバックワード処理を行う。第1の復号部202、第2の復号部203による外部情報の計算が繰り返されておらず、繰り返して行う処理の1回目であれば、このバックワード処理におけるウィンドウWin2、Win3の境界の初期値も、上記した場合と同様にゼロとする。ただし、ここでバックワード処理したウィンドウ境界のパスメトリック値は、繰り返しの2回目以降の初期値として利用するために一時保持される。
その後、ウィンドウWin2に関するフォワード処理を行う。このフォワード処理の初期値は、その前にウィンドウWin1に関するフォワード処理を行っているので、その結果に基づいた初期値とする。また同時に、ウィンドウWin3に関するバックワード処理を行う。以降は、サブブロックに含まれるウィンドウの数に基づいてフォワード処理、バックワード処理が繰り返される。
ここで1つのサブブロックに5つのウィンドウが含まれるとした場合、サブブロック1内のWin5のバックワード処理を行う場合の初期値として、サブブロック1のウィンドウWin5に続くウィンドウであるサブブロック2のWin1のバックワード処理をしたときのパスメトリック値が利用される。
その後、第2の復号部203内でインタリーブされたデータに対して同様の計算が行われ、繰り返し処理により再び第1の復号部でパスメトリック値の計算が行われる。この場合はバックワード処理の初期値として、図5に示した通り、前回のバックワード処理の結果が利用される。このように本実施の形態ではコードブロックを複数のサブブロックに分けて並列に処理を行う場合に、各サブブロックにアクセスするデコーダのタイミングをずらすことによって、メモリの同一バンクに対するアクセスの競合を防止する。各サブブロックでは、ウィンドウ単位でフォワード処理、バックワード処理が行われ、一回目のバックワード処理では、初期値としてゼロが設定され、2回目以降の繰り返しでは、前回のバックワード処理の結果が初期値に利用される。
実施の形態2
図6、7は、実施の形態2のコードブロックと。サブブロック、メモリの関係を示す図である。また、図8は、実施の形態2におけるターボデコーダのアクセスを説明する図である。図6、7に示すように実施の形態2では、コードブロックがメモリ空間に対して小さく、図7に示すようにサブブロック3の途中の領域までで、コードブロックが終了するような場合である。この場合、第2の復号部203内のターボデコーダA、B,Cは、実施の形態1と同様に1クロックずらしたタイミングで、メモリに対してアクセスを行う(図8参照)。一方、図8に示すように第2の復号部203内のターボデコーダDは、メモリに対してアクセスを行わず復号の動作を行わないものとする。この場合、並列に処理できるサブブロックは減ってしまうが、コードブロックのサイズ自体が大きいものではないため、大きな問題とはならず、コードブロックを処理することが可能である。
実施の形態3
図9は、実施の形態3に関わるバックワード処理、フォワード処理の様子を模式的に示した図である。図5に示した実施の形態1のフォワード処理、バックワード処理では、各サブブロックの最後のウィンドウWin5をフォワード処理している場合にウィンドウWin5のフォワード処理のみが行われている。そこで本実施の形態では、第1の復号部202が各サブブロックの最後のウィンドウWin5のフォワード処理を行っている間に、第2の復号部203で、ウィンドウWin1に対するバックワード処理を開始する。このように第1の復号部202で、サブブロックの最後のウィンドウWin5の処理と平行して、第2の復号部203でサブブロック1のウィンドウWin1の処理を開始することで、全体として処理が高速化され、デコード処理を速やかに終了することが可能となる。
実施の形態4
図10は、実施の形態4に関わる復号装置を示す模式図である。本実施の形態では、通信経路からデータを受けて保持する通信経路メモリ(RAM)207に対して、第2の要素符号のパリティビットPbを書き込む際に、インタリーブしたパタンで書き込むものである。つまり通信経路メモリには情報ビットおよび第1の要素符号のパリティビットPは、シーケンシャルに書き込まれる。第2の要素符号のパリティビットPbはインタリーブされているパリティビットをインタリーブしたパタンで書き込むため、シーケンシャルな順番となって書き込まれる。第2の復号部203は、元々インタリーブメモリ204からインタリーブ読み出しを行う復号部であるため、通信経路メモリから第2の要素符号のパリティを読み出す際にも同様にインタリーブリードを行えば第2の復号部203に入力される第2の要素符号のパリティはインタリーブされたデータとして読み出すことが可能である。このように構成することで、情報ビット、第1の要素符号のパリティ、第2の要素符号のパリティを格納するメモリを一つのシーケンシャルなメモリで構成することが可能となり、必要なメモリの個数を削減することが可能となる。
変形例
上記に説明してきた実施の形態では、インタリーブの動作は、インタリーブするパタンをインタリーブパタンメモリに保持しておき、そのインタリーブパタンメモリの保持するアドレスの対応関係から、インタリーバがインタリーブメモリにアクセスする際のアドレスを制御することによって実施している。インタリーブパタンメモリはアドレスを記憶するためインタリーブメモリとほぼ同等の大きさとなってしまう。そこで、インタリーブパタンメモリが大きくなってしまう場合には並列に処理するターボデコーダごとにインタリーバを設ける構成としても良い。
図11は、本発明の他の変形例を説明するための図である。上記したように本発明の実施の形態では複数のターボデコーダを用いてコードブロックを並列に処理している。そのため、第1の復号部に含まれるターボデコーダと第2の復号部に含まれるターボデコーダで、サブブロック単位で硬判定を行う為には、上記の繰り返し処理が行われる回数はすべてのターボデコーダが同じでなくてもよく、例えばサブブロックごとに繰り返しの回数が異なる制御をしても良い。
また、処理をさらに高速に行うためにターボ符号化されたデータに含まれるテイルビットを前もって処理しテイルビットを処理した値はメモリなどに保持しておく構成としても良い。以下に、このテイルビットを前もって処理する場合について詳細に説明する。
デジタル通信システムでは、伝送路において生じる誤りを訂正する誤り訂正符号が用いられている。特に移動通信システムでは、フェージングの影響により電波強度が激しく変動して誤りが生じ易いため、誤り訂正符号には高い訂正能力が要求される。
この誤り訂正符号としてよく用いられるものに畳み込み符号がある。図22は一般的な畳み込み符号化器の構成例である。シフトレジスタ221と、排他的論理和222により構成される。遅延素子であるシフトレジスタ221の2ビット(D1とD2)と、畳み込み符号化器への入力の1ビット(情報ビット系列Uの各ビット)から、拘束長は3ということになる。シフトレジスタ221の初段のレジスタD1と情報ビット系列Uからの各入力1ビットとの排他的論理和の結果から冗長ビット系列P1が、シフトレジスタ221の後段のレジスタD2と情報ビット系列Uからの各入力1ビットの排他的論理和の結果から冗長ビット系列P2が、各々出力される。この冗長ビット系列P1と冗長ビット系列P2を合わせて符号語と呼ぶ。入力1ビットに対して出力が2ビットある為、符号化率は1/2ということになる。動作例としては、シフトレジスタ231を構成するレジスタD1とD2が共に0の場合、情報ビット系列Uから0が入力されると、冗長ビット系列P1には入力の0とD1の0との排他的論理和である0が出力され、冗長ビット系列P2には入力の0とD2の0との排他的論理和である0が出力される。そして、D1には入力の0が、D2にはD1の0が格納される。また、1が入力される場合は、冗長ビット系列P1には入力の1とD1の0との排他的論理和である1が出力され、冗長ビット系列P2には入力の1とD2の0との排他的論理和である1が出力される。そしてD1には入力の1が、D2にはD1の0が格納される。
図22の「入力に対するシフトレジスタ231の変化」は、シフトレジスタ231のD1とD2の値の組を状態に見立てることにより、状態遷移図で表すことができる。図23は図23の畳み込み符号化器の状態遷移図である。左に4つある円がそれぞれ1個の状態を表している。拘束長が3、つまり図22のシフトレジスタ221を構成するレジスタ数が2ビット(D1とD2)である為、取り得る状態は00,01,10,11の4つとなる。各円内にある2桁の数字は左からそれぞれD1とD2の値を示している。円と円(状態と状態)を結ぶ矢印は状態間の遷移を表している。また、実線は入力が0、破線は入力が1の場合の遷移となる。矢印近傍に添えている文字列"A/BB"は、Aが情報ビット系列Uを、BBがそれぞれ冗長ビット系列P1と冗長ビット系列P2を示している。
図23の状態遷移図を時間軸(横軸)に展開したものを図24に示す。4つの状態を縦一列に並べて1時点とする。隣の列の4状態は次あるいは前の時点での各状態を示す。これはトレリスと呼び、一般に畳み込み符号の復号処理にて利用される。畳み込み符号の復号は大きくビタビ復号(最尤復号)とMAP復号(最大事後確率復号)とに分けられる。以降はMAP復号について説明する。
図25に、畳み込み符号におけるトレリス上のMAP復号処理例を示す。状態401は初期状態であり、始点(0時点)での状態が00であることを示している。MAP復号は、始点から終点方向に処理を進めるフォワード処理402と、その逆(終点から始点)方向に処理を進めるバックワード処理403とに分けられる。ここで、フォワード処理402は始点での状態401から処理を開始すれば良いが、バックワード処理403は終点のどの状態から処理を開始すれば良いか分からず、適当な状態から開始すると誤り訂正能力が劣化するという問題がある。この問題を解決する手法としてトレリス終結がある。
図26にトレリス終結処理の例を示す。上段はトレリス終結時のタイミング図、下段がその時のトレリスの遷移を表している。トレリス終結とはトレリスを任意の状態に終結させる処理となる。通常は状態00に終結させる。ここでトレリス上の状態とは畳み込み符号化器のシフトレジスタ101の値の組である。通常の畳み込み符号ではシフトレジスタ101には情報ビット系列が直接接続されている。図26では状態00に終結させているが、この場合はシフトレジスタ101の個数(=拘束長3−1)だけ、畳み込み符号化器に0を入力する処理となる。この時の入力をテイルビット(Tail bits)、また、この時に出力される符号語(冗長ビット系列P1と冗長ビット系列2)をターミネイションビット(Termination bits)と呼ぶ。
図27にトレリス終結時の復号処理例を示す。トレリスの始点の状態601は通常00である。フォワード処理602はこの状態601から開始し、終点まで処理を進める。続いてテイルビット処理605を、トレリス終結状態である状態604から開始する。状態604は通常00である。そして、テイルビット処理605に続けてバックワード処理603を行うことにより、バックワード処理603の開始状態の問題を解決する。このようにすることで誤り訂正能力の劣化が防止できる。
図28に基本的な畳み込み符号の復号シーケンスを示す。701はフォワード処理、702はテイルビット処理、703はバックワード処理の動作状態を示す。基本的には、まずフォワード処理701を開始し、その後にテイルビット処理702を行う。そして最後にバックワード処理703を行う。ただし、この場合、フォワード処理701の結果を全て保持しておく必要があり、その為に大容量のメモリが必要となる問題がある。この問題を解決する為、一般的にはトレリスを複数のブロックに区切り、ブロック毎に処理を進める手法が取られる。
図29に一般的な畳み込み符号の復号シーケンスを示す。トレリスは804で示す時点分の長さにブロック分けされている。801はブロック分けされたフォワード処理、803はブロック分けされたバックワード処理である。802はテイルビット処理である。この時、フォワード処理の各ブロックは後段のブロックの続きからトレリス上の処理を進めればよいが、バックワード処理803については、トレリスの始点と終点を除く、各ブロック境界のトレリス上の状態が不明となる。このため、バックワード処理803の前に、バックワード処理開始状態をあらかじめ学習して求めておくという技術が、S.Benedetto et al., "Soft-Output Decoding Algorithms for Continuous Decoding of Parallel Concatenated Convolutional Codes", (Proceeding of IEEE International Conference on Communications, pp.112-117, 1996)に記載されている。これはスライディングウィンドウ方式と呼ぶ。図29はバックワード処理の開始状態を学習する処理が無い場合の図である。以降、学習処理は省略する。
ここで、図29ではバックワード処理803の各ブロックの処理において、最後のブロックの前にテイルビット処理802を行う必要がある為、バックワード処理803が途中で停止してしまう期間が現れる。この停止期間の為、バックワード処理803の制御が複雑になるという問題がある。また、バックワード処理803は逆方向の処理であり、復号結果も逆順に出力される。これは処理がバックワード処理803で終わっている為である。これを、フォワード処理801とバックワード処理803の開始する順番を入れ替え、フォワード処理で完了するシーケンスにすることにより、復号結果を順列に出力することができる。この場合、図30に示すように、フォワード処理901が出力する復号結果について、そのままCRC等の誤り検出を行うことができる。誤りを訂正する復号処理と、誤り検出処理の並列動作が可能となり、処理時間が短縮される。
図30にバックワード先行方式におけるMAP復号シーケンス例を示す。904が処理単位のブロック長を示す。フォワード処理901、バックワード処理902およびCRC処理906はこのブロック長904を基準に処理を進める。はじめにバックワード処理903が処理を開始する。1ブロック分の処理が終わると、バックワード処理が次のブロックの処理を開始すると共に、バックワード処理が完了したブロックについてフォワード処理901とCRC処理906が開始する。以降、バックワード処理903が1ブロック分先行して処理を行い、それをフォワード処理901とCRC処理906が追いかける形となる。ただし、バックワード処理903の最後のブロックの前にテイルビット処理902を行う必要がある為、バックワード処理902はその間、停止する。この為、フォワード処理901とCRC処理906の最後のブロックの処理開始が遅れる場合があり、その期間905はフォワード処理901およびCRC処理906も待機するよう、制御を行う必要がある。
また、誤り訂正符号の一つにターボ符号がある。シャノン限界に近い誤り訂正能力を有する符号として注目されており、例えば、第3世代の移動通信方式であるW−CDMA(Wideband Code Division Multiple Access)やCDMA−2000で使用されている。
図31のブロック図は、ターボ符号を生成するための一般的な符号化装置の構成を示している。この符号化装置1001は、例えば、通信システムの送信側に設けられ、符号化前のデータである情報ビット系列(Systematic Bits:組織部)U1を、並列連接畳み込み符号(PCCCs:Parallel Concatenated Convolutional Codes)のターボ符号に符号化し、伝送路等の外部へ出力する。なお、ターボ符号は、並列連接符号に限らず、直列連接畳み込み符号など、ターボ復号が可能であればよい。
図31に示す符号化装置1001は、組織的畳み込み符号化器(Systematic Convolutional Coder)である第1の符号化器1002及び第2の符号化器1003と、組織部Uをインタリーブする(並び替える)インタリーバ(Interleaving)1004とを備えている。
第1の符号化器1002は、入力された組織部U1を符号化して冗長ビット系列(Parity Bits:冗長部)P1を生成し、組織部U1と共にこの冗長部P1を出力する。インタリーバ1004は、入力された組織部U1の各ビットを所定のインタリーブパターンにより並べ替えて組織部U2を生成し、この組織部U2を第2の符号化器1003へ出力する。第2の符号化器1003は、組織部U2を符号化して冗長部P2を生成し、組織部U2と共にこの冗長部P2を出力する。
符号化装置1001では、組織部U1、冗長部P1、組織部U2、冗長部P2が生成される。組織部U1と冗長部P1の組(U1,P1)を第1の要素符号(Elemental Code)E1と呼び、組織部U2と冗長部P2の組(U2,P2)を第2の要素符号E2と呼ぶ。ただしU2については、受信側で組織部U1に、図 10のインタリーバ1004と同様の並び替えを施す事により生成できるため出力はせず、U1、P1、P2の3つを後段に出力する。加えて、全ての組織部U1とU2を符号化した後は、各符号化器にテイルビット(Tail bits)が追加で入力され、各符号化器からはターミネイションビット(Termination bits)が出力される。
ターボ符号の特徴は次の2点にある。
1)比較的簡易で小さい構成の組織符号化器を複数個使用する
2)それぞれの符号化器は、符号化器入力である情報ビット系列に対して、インタリーバ(並べ替え器)を介して連接されている。
上記において、2)の目的は、情報ビット系列の順番を入れ換えて符号化器に入力することで、符号化器間において異なる要素符号を生成することにある。これは復号側にて、要素符号間で復号結果を補完しあうことにより、誤り訂正能力を向上させるためである。
1)にて組織符号化器を用いる目的は、要素符号間における復号結果の補完を、情報ビット系列を用いて行うためである。例えば3GPP(3rd Generation Partnership Project)では、1)に、8状態の組織的畳み込み符号化器(8 states Systematic Convolutional Coder)を2個用いている。3GPPでは、W−CDMAなどの第3世代の移動体通信システムの標準化が行なわれている。
このように符号化されたターボ符号を復号することをターボ復号という。図32にターボ復号を行うための一般的な復号化装置の例を示す。ターボ復号の特徴は次の1点にある。
1)複数の要素符号間にて復号結果のひとつである外部情報(Extrinsic Information)を交換しながら、複数回処理を繰り返す。
図34に示すように、復号化装置1101は、第1の復号化器1102、第2の復号化器1103、インタリーブメモリ1104、デインタリーブメモリ1105及び硬判定・CRC判定器1106を有する。第1の復号化器1102、第2の復号化器1103はそれぞれ軟出力復号方法としてMAP復号がよく用いられる。
このような復号化装置1101におけるターボ復号は以下の工程からなる。
A)第2の復号化器1103の外部情報Le2をデインタリーブメモリ1105から読み出し、第1の要素符号E1と共に第1の復号化器1102に入力する。この時、デインタリーブメモリ1105から読み出した外部情報Le2は、デインタリーブされて要素符号E1と同じ順番に並べ替えられているものとする。第1の復号化器1102は外部情報Le1を出力し、インタリーブメモリ1104に書き込む。
B)第1の復号化器1102の外部情報Le1をインタリーブメモリ1104から読出し、第2の要素符号と共に第2の復号化器1103に入力する。この時、インタリーブメモリ1104から読み出した外部情報Le1は、インタリーブされて要素符号E2と同じ順番に並べ替えられているものとする。第2の復号化器1103は外部情報Le2を出力し、デインタリーブメモリ1105に書き込む。
C)第2の復号化器1103の対数尤度比LLRをデインタリーブメモリ1105から読出し、硬判定・CRC判定器1106に入力する。硬判定・CRC判定器1106は対数尤度比LLRについて硬判定を行なった後、CRCによりエラーチェックを行なう。
先ず、A)を実行する。このときの第2の復号化器1103からの外部情報は初期値としてゼロ(±0)とする。次に、B)を実行する。そして、再びA)を実行し、任意の回数だけB)とA)とを繰り返す。工程A)とB)をあわせて繰り返し1回と数える。そして、最後の繰り返しにおいては、B)を実行したときに、第2の復号化器1103は、外部情報Le2ではなく対数尤度比LLRを出力する。最後にC)を実行する。
ターボ符号は組織符号であるため、受信したターボ符号には情報ビットとして組織部U1が含まれている。外部情報とはこの情報ビットに対して復号の前に分かっている、"0"らしさ("1"らしさと同義)を表す値(事前値)である。つまりターボ復号とは、第1、第2の要素符号間の復号において、それぞれの情報ビットが"0"である確率を交換(相互補完)しながら、その確率の確度を上げ、誤り訂正能力を強化する処理である。
図33に一般的なターボ復号におけるMAP復号シーケンスを示す。フォワード処理1201およびバックワード処理1203は、トレリスを複数個に区分けしたときのブロック長1204毎に処理を進める。また、最後のブロックのバックワード処理1203の前には、テイルビット処理1202が行なわれる。これは、バックワード処理1203に停止期間が発生することにより、バックワード処理1203の制御が複雑になるというMAP復号の問題である。さらにターボ復号では、このMAP復号を複数回繰り返すため、テイルビット処理1202も同様に繰り返し処理することになる。
図34に、バックワード先行方式によるターボ復号のMAP復号シーケンスを示す。第2の復号化器が復号する要素符号E2は順番がインタリーバにより並び替えられているため、もともとCRCまで並列に処理することはできない。よって、バックワード先行方式は第1の復号化器の処理にのみ適用される。フォワード処理1301とバックワード処理1303は、トレリスを複数個に区分けしたブロック長1304のブロック毎に処理を進める。第2の復号化器の処理は通常のMAP復号と同様である。最後のブロックにおけるバックワード処理1303の前にテイルビット処理1302を行なう必要がある。第1の復号化器ではバックワード処理1303が初めに開始する。フォワード処理1301は1ブロック分遅れて処理を開始する。また、フォワード処理1301と並列にCRC処理1306も開始する。CRC処理1306では第1の復号化器にてフォワード処理1301が出力する軟出力のうち対数尤度比について、硬判定とCRCによる誤り検出を行なう。なお、第2の復号化器における軟出力はバックワード処理1303にて出力される。図36を見ると、第1の復号化器におけるMAP復号ではテイルビット処理1302の為、バックワード処理1303が途中で停止するだけでなく、フォワード処理1301とCRC処理1306にも一時停止が必要となる。また、ターボ復号特有の繰り返し処理のため、テイルビット処理1302も同様に、何度も繰り返すことになる。
以上の通り、テイルビット処理について、特にMAP復号にバックワード先行方式を用いる場合、あるいは何度もMAP復号を繰り返すターボ復号の場合において、その処理、あるいは制御を低減する事が求められている。
特開2002−271209に、ターミネイションビットの格納場所を工夫することにより、ターボ復号中にテイルビット処理にかかる負荷を低減する技術が記載されている。これは 3GPP TS25.212に記載されているターボ符号およびターボ符号の送信順が前提となっている。
図35に、3GPP TS25.212に記載のターボ符号化器の構成を示す。図35のターボ符号化器は再帰的な組織的畳み込み符号化器を2つ(1401と1402)、インタリーバ1403(並び替え器)を介して接続した構成を取る。ここで、再帰的とはシフトレジスタの入力に排他的論理和を取る形で出力を関係付ける事である。この場合、トレリス終結は単純に"0"をテイルビットとして入力するだけでは達成できず、工夫が必要となる。図35ではトレリス終結時、シフトレジスタの入力を"0"にする為、シフトレジスタ前段の排他的論理和の前にスイッチ1404を設け、入力を両方ともシフトレジスタの出力に切り替える構成を取っている。
ターボ符号化器の出力のうち、Xkが情報ビット系列U1を、Zkが冗長ビット系列P1を、Z'kが冗長ビット系列P2を、X'kが情報ビット系列U2をそれぞれ表している。なお、X'kは冗長ビット系列P2に対応した情報ビット系列U2(インタリーバにより順番を並び替えた情報ビット系列U1)となるが、図37の構成ではトレリス終結時(スイッチ1404が下側に切り替った時)にしか出力されない。このトレリス終結時を除き、符号化器出力であるXk、Zk、Z'kは図36に記載の順にシリアル出力される。符号ブロック長(Code Block Size)をKとする(1〜KまでのK個)。白色の背景に黒色の斑点のセルが情報ビット系列U1、白色の背景に斑点無しのセルが情報ビット系列P1、左下がり斜線のセルが冗長ビット系列P2ということになる。
X'kはXkの並び替えられたものである。受信側ではXkを並び替える事で作り出せるため、トレリス終結時を除いて出力はしない。この為、3GPPのターボ符号は符号化率(Coding Rate)が1/3となる(入力1ビットに対して出力が3ビットとなり、分子が入力、分母が出力に対応している)。
トレリス終結時は前述の通り、図35のスイッチ1404が下側に切り替わる。その際の出力は図39に示す順にシリアルに行われる。つまり{Xk, Zk}系列を出力した後で、{X'k, Z'k}系列を出力する事になる。ここで、追加された黒色の背景に白色の斑点のセルが情報ビット系列U2となる。
ただし、このトレリス終結時の出力はその後の処理(Bit SeparateやBit Collection)において、図36と順番と同じ対応で扱われる。対応関係は図38の通りになる。右下がり斜線のセルで示した情報ビット系列U2が扱いとして削除される為、XK+2以降の対応がずれている。
これをそのまま(新しい対応)の順で情報ビット系列U1、冗長ビット系列P1、冗長ビット系列P2のメモリに格納すると、図39のようになる。ターミネイションビット部分のセルは元の対応のままとする。
メモリ1801が情報ビット系列U1用、メモリ1802が冗長ビット系列P1用、メモリ1803が冗長ビット系列P2用になる。特に冗長ビット系列P2の順序をデインタリーブ(インタリーブによる並び換えの逆の操作)により元に戻して格納する事で、U1、P1、P2を1個のメモリに格納し、メモリ個数の削減を行う時、アドレスの生成、制御が複雑になり、また処理時間が増加する場合がある。
例えば図40のように1個のメモリ1901に格納する場合、XK+2とZK+2のペアは異なるアドレスに格納される為、読み出しを2回行う必要が発生する。これは要素符号E1を構成する(Xk、Zk)がペアで使用され、要素符号E2を構成する(X'k、Z'k)もペアで使用される必要があるためである。
以上のように、ターミネイションビットの順序、扱いによってはテイルビット処理にかかる負担が増大する。この負担について、メモリへの格納方法を工夫して軽減するという技術が特開2002-271209に公開されている。上記文献によれば、ターミネイションビットについて図41のように格納する方法が記載されている。メモリ2001は情報ビット系列U1用、メモリ2002は冗長ビット系列P2用、メモリ2003は冗長ビット系列P2用になる。これによりXkとZkが格納されているメモリとアドレスがペアとなり、ターボ復号中のテイルビット処理時、ターミネイションビットを読み出す際の制御や処理にかかる負担を軽減することができる。また、X'kとZ'kが格納されているメモリとアドレスも同様にペアとなり、同様にテイルビット処理時の負担が軽減される。
しかしながら、従来の方法ではバックワード処理が途中で一時停止するという問題について、負担を軽減できるだけで、完全に解消するものにはなっていない。さらに、バックワード先行方式のMAP復号におけるフォワード処理、CRC処理の一時停止制御に関しても解決していない。加えて、ターボ復号の繰り返し処理において、テイルビット処理についても毎回繰り返してしまう問題も解消されていない。
図42に従来のターボ復号におけるMAP復号回路の構成を示す。入力メモリ2101から各要素符号を読出し、また、インタリーブメモリあるいはデインタリーブメモリ2106から外部情報を読出し、MAP復号処理を進める。読み出したデータはフォワード処理に入力され、1ウィンドウ分の処理をする。ここでいうウィンドウとは、トレリスを複数個のブロックに区分けしたときの1ブロックを意味する。また同時に、その際の要素符号と外部情報はバックワード処理とテイルビット処理2105に受け渡すため、メモリ2103に格納する。バックワード処理とテイルビット処理は処理内容が同じため、回路は共有される。メモリ2103は入力メモリ2101からのデータの書込みと、バックワード処理とテイルビット処理2105からの読出しを同時に行なえる必要がある。フォワード処理の出力はメモリ2104に格納する。このメモリ2104はフォワード処理2102からの書込みと、バックワード処理とテイルビット処理2105からの読出しが同時に行なえる必要がある。フォワード処理2102が1ウィンドウ分の処理を完了すると、次のウィンドウの処理に移ると共に、バックワード処理とテイルビット処理2105がバックワード処理を開始する。バックワード処理とテイルビット処理2105はスイッチ2107により、メモリ2103から先にフォワード処理2102が使用したデータを読出し、また、メモリ2104から先にフォワード処理2102が出力したデータを読出して処理する。バックワード処理では軟出力として対数尤度比あるいは外部情報が出力される。これらはデインタリーブメモリあるいはインタリーブメモリ2106に格納される。以降は同様に、フォワード処理2102と、バックワード処理とテイルビット処理2105の並列動作を繰り返す。フォワード処理2102が最後のウィンドウの処理を完了すると、テイルビット処理を行うため、スイッチ2107により入力メモリからターミネイションビットを読み出されてバックワード処理とテイルビット処理2105に入力される。バックワード処理とテイルビット処理2105はテイルビット処理を行う。バックワード処理とテイルビット処理2105はテイルビット処理が完了すると、今度はその続きからバックワード処理を開始する。この時、入力はスイッチ2107によりメモリ2103側に切り替えられる。バックワード処理とテイルビット処理2105が最後のウィンドウの処理を完了し、その際の軟出力である対数尤度比あるいは外部情報をデインタリーブメモリあるいはインタリーブメモリ2106に格納するとMAP復号処理は完了する。
図43に従来のターボ復号におけるバックワード処理のフローチャートを示す。図33に示すバックワード処理のフローチャートになる。まず繰り返し回数カウント用カウンタ「cnt」を0に初期化する(2101)。続いてターボ復号の繰り返し処理に移る。まずは第1の復号化器の処理から始める。最初に、ウィンドウ毎に処理を進める為、処理ウィンドウ数カウント用カウンタ「win」を0に初期化する(2102)。また、ここでフォワード処理が1ウィンドウ分の処理を完了するまで待機する(2102)。フォワード処理が1ウィンドウ分の処理を完了したら、第1の復号化器におけるバックワード処理に進み、1ウィンドウ分だけ処理を行う(2103)。次に処理ウィンドウ数「win」が所定の回数「maxwin - 1」になったかどうか判定する(2104)。maxwinはトレリスを区分けした際のブロックの数であり、ウィンドウの数である。「No」であればカウンタ「win」を1インクリメントし、次の1ウィンドウ分を処理する(2105)。「Yes」であれば第1の復号化器のテイルビット処理を行う(2106)。続いて最終ウィンドウの処理を行う(2107)。最終ウィンドウの処理が終われば第1の復号化器の処理を抜ける。続いて、同様に第2の復号化器の処理を行う。第2の復号化器の処理が終われば、繰返し回数カウンタ「cnt」が所定の回数「maxcnt」になったかどうか判定する(2108)。「No」であればカウンタ「cnt」を1インクリメントして第1の復号化器の処理に戻る(2109)。「Yes」であれば繰返し復号処理を抜ける。
このように、各復号化器の処理にて、バックワード処理が最後のウィンドウの処理を開始する前に、必ずテイルビット処理を行っていることが、フォワード処理、バックワード処理、あるいはCRC処理に一時停止が必要となる問題、あるいはターボ復号でテイルビット処理を繰り返してしまう問題の原因である。
この問題を解決するため、テイルビット処理をターボ復号の開始前に行うこととした。処理の結果はメモリに格納しておき、ターボ復号中に必要になれば、メモリから読み出して使用するという動作を行なう。このようにすることで、バックワード処理の途中にテイルビット処理を行う必要がなくなり、バックワード処理、フォワード処理およびCRC処理における一時停止の制御および処理が不要となる。また、ターボ復号の繰り返し処理にて、テイルビット処理を毎回繰り返す問題も解消できる。
図44に従来のターボ復号におけるMAP復号回路の構成を示す。まず最初に、バックワード処理とテイルビット処理2305はテイルビットを処理する。スイッチ2307を切り替えて、入力メモリ2301からターミネイションビットを読み出す。テイルビット処理の結果はメモリ2308に格納する。続いてターボ復号処理に移る。入力メモリ2301から各要素符号を読出し、また、インタリーブメモリあるいはデインタリーブメモリ2306から外部情報を読出し、MAP復号処理を進める。読み出したデータはフォワード処理2302に入力され、1ウィンドウ分の処理をする。また同時に、その際の要素符号と外部情報はバックワード処理とテイルビット処理2305に受け渡すため、メモリ2303に格納する。バックワード処理とテイルビット処理は処理内容が同じため、回路は共有される。メモリ2303は入力メモリ2301からのデータの書込みと、バックワード処理とテイルビット処理2305からの読出しを同時に行なえる必要がある。フォワード処理2302の出力はメモリ2304に格納する。このメモリ2304はフォワード処理2302からの書込みと、バックワード処理とテイルビット処理2305からの読出しが同時に行なえる必要がある。フォワード処理2302が1ウィンドウ分の処理を完了すると、次のウィンドウの処理に移ると共に、バックワード処理とテイルビット処理2305がバックワード処理を開始する。バックワード処理とテイルビット処理2305はスイッチ2307により、メモリ2303から先にフォワード処理2302が使用したデータを読出し、また、メモリ2304から先にフォワード処理2302が出力したデータを読出して処理する。バックワード処理では軟出力として対数尤度比あるいは外部情報が出力される。これらはデインタリーブメモリあるいはインタリーブメモリ2306に格納される。以降は同様に、フォワード処理2302と、バックワード処理とテイルビット処理2305の並列動作を繰り返す。フォワード処理2302が最後のウィンドウの処理を完了すると、バックワード処理とテイルビット処理2305は最後のウィンドウにおけるバックワード処理を開始する。この時、メモリ2308からテイルビット処理の結果を読出して、その続きからバックワード処理を行う。入力はスイッチ2307によりメモリ2303側に切り替えられる。バックワード処理とテイルビット処理2305が最後のウィンドウの処理を完了し、その際の軟出力である対数尤度比あるいは外部情報をデインタリーブメモリあるいはインタリーブメモリ2306に格納するとMAP復号処理は完了する。
図45に従来のターボ復号におけるバックワード処理のフローチャートを示す。図33に示すバックワード処理のフローチャートになる。まず繰り返し回数カウント用カウンタ「cnt」を0に初期化する(2401)。続いてテイルビット処理を行う(2406)。この時、テイルビット処理の結果はメモリに格納しておく。続いてターボ復号の繰り返し処理に移る。まずは第1の復号化器の処理から始める。最初に、ウィンドウ毎に処理を進める為、処理ウィンドウ数カウント用カウンタ「win」を0に初期化する(2402)。また、ここでフォワード処理が1ウィンドウ分の処理を完了するまで待機する(2402)。フォワード処理が1ウィンドウ分の処理を完了したら、第1の復号化器におけるバックワード処理に進み、1ウィンドウ分だけ処理を行う(2403)。次に処理ウィンドウ数「win」が所定の回数「maxwin - 1」になったかどうか判定する(2404)。maxwinはトレリスを区分けした際のブロックの数であり、ウィンドウの数である。「No」であればカウンタ「win」を1インクリメントし、次の1ウィンドウ分を処理する(2405)。「Yes」であれば最終ウィンドウの処理を行う(2407)。ここで、先にメモリに格納しておいたテイルビット処理の結果を読み出してその続きから処理を開始する。最終ウィンドウの処理が終われば第1の復号化器の処理を抜ける。続いて、同様に第2の復号化器の処理を行う。第2の復号化器の処理が終われば、繰返し回数カウンタ「cnt」が所定の回数「maxcnt」になったかどうか判定する(2408)。「No」であればカウンタ「cnt」を1インクリメントして第1の復号化器の処理に戻る(2409)。「Yes」であれば繰返し復号処理を抜ける。
図46に発明のターボ復号のMAP復号シーケンスを示す。ターボ復号の繰り返し処理を開始する前に、テイルビット処理2502を行なう。テイルビット処理2502の結果はメモリに格納しておく。それが終わるとターボ復号の繰り返し処理を開始する。ターボ復号中、バックワード処理2503では最後のウィンドウ開始時にテイルビット処理2502の結果をメモリから読み出して使用することで、一時停止することなく前のウィンドウに続けて処理を行える。
図47に、発明のバックワード先行方式によるターボ復号のMAP復号シーケンスを示す。テイルビット処理以外はトレリスを複数個に区分けしたときの1ブロック長2604毎に処理を進める。ターボ復号の繰り返し処理を行う前にテイルビット処理2602を行なう。テイルビット処理の結果はメモリに格納しておく。それが終わるとターボ復号の繰り返し処理を開始する。ターボ復号中、バックワード処理2603では最後のウィンドウ開始時にテイルビット処理2602の結果をメモリから読み出して使用する。これにより、バックワード処理2603の他、フォワード処理2601およびCRC処理2605についても一時停止することなく前のウィンドウに続けて処理を行える。
テイルビット処理をMAP復号前に実施し、結果をメモリに保存する。MAP復号中、テイルビット処理が必要な箇所にて、テイルビット処理の結果を前記メモリから読み出して使用することで、MAP復号中のテイルビット処理が不要になる。
テイルビット処理をターボ復号の繰り返し処理を開始する前に実施し、結果をメモリに保存する。繰り返し処理の各MAP復号では、テイルビット処理が必要な箇所にて、テイルビット処理の結果を前記メモリから読み出して使用することで、ターボ復号中の繰り返し処理中のテイルビット処理が不要になる。
MAP復号においてバックワード処理を一時停止させる処理および制御が不要となる。また、バックワード先行方式にてフォワード処理と並列にCRC処理を行う場合、フォワード処理およびCRC処理を一時停止させる処理および制御が不要となる。ターボ復号においては、特徴である繰り返し処理の中で、テイルビット処理についても複数回、通常は8回程度繰り返していたものが、ターボ復号前に1回だけ処理すれば十分となり、テイルビット処理にかかる処理時間、演算量を削減できる。通常は1/8に削減できる。
なお、上記実施の形態では、インタリーブメモリ及びデインタリーブメモリとしてシングルポートメモリを2個使用した。これによって、片方を書き込み、他方を読み出し専用とし、これを切り替える事で、メモリへの外部情報の書き込みと読み出しのアクセスを図っていた。しかしながら、デコーダ側で書き込むアドレスは、それより以前にデータを読み出したアドレスである為、ターボデコーダの2倍の動作周波数でメモリを動作させ、前半のクロックで読み出し、後半のクロックで書き込むアクセスをすることで、シングルポートメモリで構成したインタリーブメモリ及びデインタリーブメモリを擬似的に2ポートメモリとすることが可能である。これによって、インタリーブメモリ及びデインタリーブメモリの回路規模を削減することが可能である。また、デコーダ内部にもつメモリについても、最も新しく読み出したアドレスに対して順次書き込みを行うようなアクセスをする事で、同様にシングルポートメモリを擬似的に2ポートメモリとすることが可能である。
また、上記実施の形態では、シーケンシャルリード/ライトの方向(行方向)に対してメモリのバンクを分割していた。これに対して、インタリーブリーブ/ライトの方向(列方向)に対してもメモリバンクを分割することが可能である。例えば、第2の復号部のサブブロック毎にメモリバンクを分割しても良い。これによって、並列処理数を増やすことが可能となる。
以上、実施の形態に基づいて、本発明について詳細に説明したが、本発明は上記した実施の形態に限らず、種々の変形を行うことが可能である。