(57)【特許請求の範囲】
【請求項１】
通信システムにおいて受信シンボルを復号するための畳込み復号装置であって、
該シンボルを生成するのに用いられる畳込み符号を表わすトレリスにおける遷移についての枝メトリックを計算するための枝メトリック計算器と、
該トレリスの少なくとも一部分を通る選択されたパスを決定するよう、該枝メトリックから生成されるパスメトリックを処理するよう動作し、各々が複数の状態メトリックを格納する少なくとも４つの別個のメモリを含み、クロックサイクル毎に２つのバタフライ計算を実行するよう動作する加算−比較−選択エンジンであって、与えられたクロックサイクルについて該メモリの２つが以前の状態メトリックを読み出すのに用いられ、これら２つのメモリが新たなメトリックを書き込むのに用いられ、そしてさらに２つの読出しアドレスが該以前の状態メトリックを読み出す際に用いるための与えられたクロックサイクルに対して発生され、これにより、該与えられたクロックサイクルについて、処理の結果として該２つの読出しアドレスを用いて該２つのメモリの特定の部分から読み出された該以前の状態メトリックが他の該２つのメモリの指定された部分に書き込まれるよう動作する加算−比較−選択エンジンと、
該選択されたパスから復号化されたビットの系列を生成するためのトレースバックユニットとを含むことを特徴とする畳込み復号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル通信システムに関し、特に、このようなシステムで用いられるビタビ復号器などの畳込み復号器に関する。
【０００２】
【従来の技術】
チャネル（通信路）符号化は、ディジタル通信システムのロバスト性（頑強さ）を増大させるために一般的に用いられる従来技術である。チャネル符号化の基礎となる原理は、復号器での誤りの検出および訂正が容易になるように送信ビットストリームに冗長性および記憶を導入することである。チャネル符号の２つの一般的なクラスは、ブロック符号とトレリス符号である。ブロック符号は、ブロックごとに作用し、出力符号語は、現在の入力ブロックメッセージのみに依存する。これに対して、トレリス符号は、ブロック構造は仮定されず、ある任意長のビットストリームを別のビットストリームに写像するものとみなされる。広く用いられているあるクラスの線形のトレリス符号は畳込み符号として知られている。この符号では、入力メッセージストリームと、出力符号語は、ｖ段のシフトレジスタを有する符号器のインパルス応答との畳込みから得られる。ｎビットの符号語は、ｍ個の入力ビットと、シフトレジスタに記憶されているｖビットとの関数として生成される。符号器の拘束長Ｋはｍ＋ｖとして定義され、符号のレートはｍ／ｎで与えられる。ただし、ｎ＞ｍである。
【０００３】
畳込み符号器は、最大でＮ＝２ｖ＝２Ｋ−ｍ個の可能な状態を有する有限状態マシンとして動作する。ｍ個の入力ビットは、ｖビットによって定義される現状態から、次状態への遷移を引き起こし、生成される出力ビット（すなわち符号ビット）の数は、符号のレートに依存する。ある状態から別の状態への遷移を時間の関数としてみると、一般に「トレリス」として知られるグラフが得られる。図１は、拘束長Ｋ＝４でレート１／２の畳込み符号のトレリス図である。この符号は、Ｎ＝２Ｋ−ｍ＝８個の可能な状態を有し、各状態はｖ＝３ビットに対応し、それぞれ、「旧状態」および「新状態」の列の８個の点のうちの１つで表されている。この図は、ある旧状態と、その旧状態から到達可能な新状態との間のすべての可能な遷移を示している。この例ではｍ＝１であるため、符号化プロセスでは、１つの状態から可能な遷移は２個だけであり、また、１つの状態への可能な遷移は２個だけである。一般に、ｍ個の入力ビットに対しては、１つの状態から、および、１つの状態へ、２ｍ個の遷移がある。ｍ＝２の符号の場合、４個のこのような遷移があることになる。
【０００４】
注意すべき点であるが、図１に示した状態割当てはある程度の任意性がある。この例で採用した約束は、入力ビットはシフトレジスタの最下位ビット（ＬＳＢ）にシフトインし、最上位ビット（ＭＳＢ）がレジスタからシフトアウトするというものである。この約束によれば、ＭＳＢにおいて異なる２個の状態は、１個の入力がＬＳＢにシフトインすると、同じ状態に集まる。例えば、０および４の状態は、０がレジスタにシフトインすると、いずれも０状態に集まる。一般的に、状態割当てにおいてＮ／２だけ異なる２個の状態は、同じ入力条件下で同じ状態に集まる。さらに、０がレジスタのＬＳＢにシフトインした場合、新状態は偶状態となり、逆に１がＬＳＢにシフトインした場合、奇状態となる。シフトアップ（左シフト）演算は２の乗算と等価であるため、このプロセスは次のような遷移によって一般化される。
・入力０により状態ｊは状態２ｊに移り、入力１により状態ｊは２ｊ＋１に移る。
・同様に、入力０により状態ｊ＋Ｎ／２は２ｊに移り、入力１により状態ｊ＋Ｎ／２は２ｊ＋１に移る。
これらの遷移を、レート１／２符号の場合に図２に例示する。結果として得られる計算構造は一般に「バタフライ」として知られている。
【０００５】
畳込み符号化プロセスは、トレリス図を通るパスをたどることとみなすことができる。図３に、時間の関数として８状態トレリスを通ってたどったそのような１つのパスを示す。縦軸は、状態番号を昇順に示し、横軸は時間を表す。トレリスの各段は時間Ｔを表す。一般に、シフトレジスタは、０状態からスタートするように初期化される。図３に示す各遷移ごとにｎ個の符号ビットが生成される。従って、対応する復号プロセスの目的は、受信した符号シンボルに基づいてトレリスを通るこのパスを逆にたどることである。図４に、８段トレリスに対して７Ｔの期間にわたるすべての可能なパスを示す。時刻Ｔにおいて８個の可能なパスがあり、時刻２Ｔにおいて１６個、などとなる。従って、可能なパス数は時間とともに指数関数的に増大する。注意すべき点であるが、各パスは、あるトレリス段から次のトレリス段への遷移の特定の系列である。そこで、１つのパスに対する「パスメトリック」は、個々の遷移メトリック（すなわち「枝メトリック」）の総和によって与えられる。従って、復号プロセスは一般に次のようなステップを含む。
（１）受信した符号シンボルに基づいて枝メトリックを計算する。
（２）枝メトリックを総和することによってパスメトリックを計算する。
（３）ある時間後の最適なパスを選択する。
（４）最適パスに沿った「トレースバック」操作を実行して対応する入力ビットを抽出する。
ビタビ復号では、パス数の指数関数的増大の問題は、各時間ステップで、集まる２つのパスのうちの一方を選択することによって解決される。その結果、考慮するパス数は時間とともに一定に留まる。各時間ステップ（すなわち、各トレリス段）におけるこのようなパスの消去を、加算比較選択（ＡＣＳ：add-compare-select）演算という。
【０００６】
図５に、従来のビタビ復号器１０の一般的構造を示す。復号器１０は、枝メトリック計算器１２、再帰ＡＣＳエンジン１４、およびトレースバックユニット１６を有する。軟（ソフト）シンボルが、入力バッファ１８を通じて計算器１２に入力される。計算器１２は、与えられたトレリス段に対するすべての可能な遷移に対応する枝メトリックを計算する。トレリス内の状態の数にかかわらず、レート１／ｎ畳込み符号に対する相異なる枝メトリックの数は２nによって与えられる。その理由は、レート１／ｎ符号の場合、相異なる符号ｎタプル(n-tuple)は２ｎのみであるからである。トレリスには２ｍ・Ｎ個の枝があり、各枝ごとに特定の符号ビットのｎタプルが対応するが、ｎタプルと同数の相異なる枝メトリックしか存在しない。ＡＣＳエンジン１４は再帰的である。その理由は、新しいパスメトリックは、前の段に対して計算されたパスメトリックと、前の段から次の段への遷移に対応する枝メトリックとに依存するからである。ＡＣＳエンジン１４の出力はトレースバックユニット１６に供給され、その結果の出力は出力バッファ２０にバッファリングされる。有限状態マシンコントローラ２２は、ビタビ復号器１０のさまざまな要素の動作を制御する。
【０００７】
図６のＡに、例示的な加算比較選択演算を詳細に示す。Ｎ／２だけ離れた２つの初期状態ｊおよびＪが状態２ｊに集まる。ｊに対する累積パスメトリックはΓｊで与えられ、Ｊに対する累積パスメトリックはΓＪで与えられる。それぞれの枝メトリックλｊ０およびλＪ０（ただし、０は０入力によって引き起こされる遷移を表す。）がパスメトリックΓｊおよびΓＪにそれぞれ加算され、枝メトリック計算プロセスに依存して、メトリックが最小または最大のいずれかのパスが選択される。例えば、枝メトリックが、受信シンボルと、対応する符号シンボルとの間の内積に比例する場合、最大値が選択される。逆に、枝メトリックが、受信シンボルと符号シンボルの間のユークリッド距離に比例する場合、最小値が選択される。図６のＢに、この加算比較選択演算を実現する回路を示す。この回路は、加算器３０、比較ユニット３２および選択ユニット３４を有する。
【０００８】
図７および図１１に、図５のＡＣＳエンジンに対する従来のさまざまなアーキテクチャを例示する。図７のＡは、ＡＣＳユニット４０および状態メトリック（すなわちパスメトリック）ランダムアクセスメモリ（ＲＡＭ）４２を有する状態シリアル（直列）アーキテクチャを示す。このアーキテクチャを有するＡＣＳエンジン１４は、トレリス段を通る際に、ＲＡＭ４２から古いパスメトリックを取得し、新しいパスメトリックをＲＡＭ４２に書き戻す。このようなアーキテクチャは非常に面積効率が良いが、非常に遅く、一般に、音声処理のような非常に低いデータレートのアプリケーションでしか用いることができない。図７のＢは、与えられたトレリス段内のすべてのパスメトリックを同時に更新しようとする状態パラレル（並列）アーキテクチャを示す。このアーキテクチャは、トレリスのＮ個の状態のそれぞれに対して、ＡＣＳユニット４０−ｉ（ｉ＝１，２，...，Ｎ）と、第１および第２のメモリユニット４４−ｉおよび４８−ｉとを有する。ルーティングネットワーク４６は、必要に応じてさまざまなＡＣＳユニット４０−ｉに適当なメトリックを供給するために用いられる。このアーキテクチャは高いスループットを実現するが、ルーティングネットワークは非常に大きな面積をとることがある。このようなアーキテクチャは一般的に、畳込み符号の拘束長が大きい場合には実現可能でない。その理由は、必要な面積は拘束長とともに指数関数的に増大するからである。図１１は、空間および時間の両方の並列性を利用したいわゆる「シャフル交換（ＳＥ：shuffle-exchange）」アーキテクチャを示す。図１１のＳＥアーキテクチャは、図示のように配置された複数のバタフライ構造５０を有し、各バタフライ構造５０は、１対のＡＣＳユニット４０Ａおよび４０Ｂを有する。１つのトレリス段のみを計算する代わりに、ＳＥアーキテクチャは、出力を入力へフィードバックする前に、数個のトレリス段を計算することができる。しかし、ＳＥアーキテクチャは、拘束長の大きい符号に対して実装するのが極めて困難であるという点で、状態並列アプローチと同じ欠点を有する。
【０００９】
【発明が解決しようとする課題】
従って、ワイヤレス基地局受信器などの、大きい拘束長の符号を利用するアプリケーションを含むさまざまなアプリケーションで、面積効率が良く、少ない複雑さおよびコストで実装可能な復号器を提供するために、ビタビ復号法におけるさらなる改良が必要とされている。
【００１０】
【課題を解決するための手段】
本発明は、畳込み復号法の、面積効率の良い実装のための装置および方法を実現する。通信システムにおいて受信シンボルを復号する実施例は、枝メトリック計算器、ＡＣＳエンジンおよびトレースバックユニットを有する。枝メトリック計算器は、シンボルを生成するのに用いられた畳込み符号を表すトレリス内の遷移に対する枝メトリックを計算する。本発明の１つの特徴によれば、与えられた受信シンボルと、畳込み符号の可能な符号語との間の一致が良い場合には枝メトリックが小さくなり、与えられた受信シンボルと、畳込み符号の可能な符号語との間の一致が悪い場合には枝メトリックが大きくなるような逆尤度関数を用いて、枝メトリックはシンボルのオフセットバイナリ表現から計算される。従って、対応するパスメトリックの増大する速度は小さくなり、必要とするメモリは少なくなり、必要なワード幅が少なくなり、再正規化の頻度が少なくなる。このオフセットバイナリ方式によれば、対応する従来の２の補数による実装よりも約２５％も面積効率の良い実装が得られる。
【００１１】
ＡＣＳエンジンは、トレリスの少なくとも一部を通る選択パスを決定するように、枝メトリックから生成されるパスメトリックを処理する。本発明のもう１つの特徴によれば、ＡＣＳエンジンは状態直列アーキテクチャを利用することが可能である。このアーキテクチャは、枝メトリック計算器内のｋ個のレジスタセットから得られる枝メトリックを用いて、クロックサイクルごとに、与えられたトレリス段のｋ個の状態に対するパスメトリックを計算する。また、ＡＣＳエンジンは、あるトレリス段の間は、パスメトリックを第１のメモリから読み出し第２のメモリに書き込み、次のトレリス段の間は、パスメトリックを第２のメモリから読み出し第１のメモリに書き込むという「ピンポン」方式で動作する複数のメモリを有することも可能である。メモリ構成は、例えばｋ＝２からｋ＝４になっても不変である。ｋ＝４の場合のＡＣＳエンジンの実施例は、４個のメモリを使用し、クロックサイクルごとに２つのバタフライ計算を実行する。しかし、ｋ＞４の場合、追加のメモリが必要となることがある。このように、本発明は、ｋ＝４の実施例において、最適なメモリ構成と、約２倍のＡＣＳ計算の速度向上を実現する。例えば、ｋ＝４の場合、状態数Ｎ＝２５６、拘束長Ｋ＝９、およびトレースバック長＝６４の実装において、最大のスループットが最小のメモリ面積で得られる。
【００１２】
トレースバックユニットは、選択パスから復号ビット列を生成する。本発明のさらにもう１つの特徴によれば、トレースバックユニットは、ステージングレジスタおよびトレースバックメモリを有するように構成することが可能である。ステージングレジスタは、ＡＣＳエンジンから選択パス情報を受け取る。与えられたトレリス段に対するステージングレジスタの内容は、ステージングレジスタがフルになると、トレースバックメモリ内の、所定のトレースバック長を法とするステージの番号によって与えられる位置にロードされる。トレースバックメモリがフルになると、トレースバックが開始される。トレースバック中に、トレースバックユニットは、トレースバックメモリの与えられた部分から復号ビットを生成し、その与えられた部分は続いて、ステージングレジスタからの追加の選択パス情報で満たされる。ステージングレジスタは一般に、連続しないデータをトレースバックメモリに書き込み、１対の直列接続されたマルチプレクサを用いて、トレースバックメモリ内の与えられたビットセットから関連するビットを抽出することが可能である。本発明のこのトレースバックの特徴により、復号器に必要なトレースバックメモリの量は、従来の構成に比べて約５０％以上削減することができる。
【００１３】
本発明は、ＩＳ−９５（北米狭帯域ＣＤＭＡ）基地局受信器用の面積効率の良いビタビ復号器の超大規模集積（ＶＬＳＩ）実装のようなアプリケーションに特に適しているが、他のさまざまなアプリケーションにも同様の効果を奏する。
【００１４】
【発明の実施の形態】
以下で、本発明について、ＩＳ−９５（北米狭帯域ＣＤＭＡ）基地局受信器内のＶＬＳＩ回路における実装用に設計された例示的なビタビ復号器を用いて説明する。理解されるべき点であるが、これは本発明のある特定の応用の単なる例示であり、本発明は、一般的に、実装のコストおよび複雑さを低減することから利益を得る可能性のある任意の従来の復号プロセスに適用可能である。「面積効率の良い」復号器という用語は、本明細書では一般に、チップ面積が貴重であるようなＶＬＳＩ回路などの実施例における実装の場合に、対応する従来の実装よりも小さいチップ面積しか占有しない復号器のことをいう。「畳込み復号器」という用語は、本明細書では、任意のタイプのビタビ復号器、および、その他のタイプの畳込み復号器を含むものと理解されるべきである。
【００１５】
直接拡散符号分割多元接続（ＤＳ／ＣＤＭＡ）のＩＳ−９５無線インタフェースは、移動局送信器において、拘束長Ｋ＝９で、レート１／３およびレート１／２の畳込み符号化を規定している。ＩＳ−９５逆方向（リバース）リンクチャネルは、アクセスチャネルおよびトラフィックチャネルの両方を含む。トラフィックチャネルには、１４．４ｋｂｐｓおよび９．６ｋｂｐｓという２つのレートセットがある。１４．４ｋｂｐｓチャネルはレート１／２で符号化され、９．６ｋｂｐｓチャネルはレート１／３で符号化される。これらのレートセットはそれぞれ、フルレート、ハーフ（２分の１）レート、４分の１レートおよび８分の１レートという可変データレートで動作する。これに対して、アクセスチャネルは４．８ｋｂｐｓという固定データレートで動作する。これらのそれぞれのチャネルに対して、符号化プロセスの拘束長はＫ＝９であり、対応するトレリスにはＮ＝２Ｋ−ｍ＝２５６個の状態がある。比較のために、ＩＳ−１３６（ＴＤＭＡ）およびＧＳＭ標準における拘束長はそれぞれ６および５である。明らかに、ＩＳ−１３６およびＧＳＭに比べてＩＳ−９５プロトコルを費用効率良く実装するには、ビタビ復号器の面積効率の良い設計が必須である。
【００１６】
図８に、本発明による面積効率の良いビタビ復号器を実装可能なＩＳ−９５基地局受信器６０を示す。受信信号ｒ（ｔ）は、ミキサ６２、６３とチップ整合フィルタ６４、６５を用いて直角復調された後、拡散符号の同相（Ｉ）および直交（Ｑ）バージョンを用いて素子６６および６７で逆拡散される。結果として得られる逆拡散信号は、６４個の非コヒーレントウォルシュ相関器からなる相関器バンク６８に入力される。これらの相関器は、特定のウォルシュシンボルが受信された確率Ｚ０，Ｚ１，...，Ｚ６３を評価する。相関器バンクの出力において硬判定をするのではなく、複数の確率Ｚ０，Ｚ１，...，Ｚ６３は軟シンボル生成器（ＳＳＧ：soft symbol generator）７０に送られる。各ウォルシュシンボルは６個の符号化ビットを表すので、ＳＳＧ７０の目的は、Ｚｉに基づいてこの６ビットの各ビットに軟（ソフト）値を割り当てることである。この軟判定プロセスによりさらに複雑さが増大するが、硬判定復号よりも符号化利得が約１．５〜２．０ｄＢ増大する。ＳＳＧ７０の出力はデインタリーバ７２に送られる。デインタリーバ７２は、バースト誤りをランダム化するように作用する。デインタリーバ７２の出力は、本発明に従って構成される面積効率の良いビタビ復号器７５に供給される。
【００１７】
図９は、図８のビタビ復号器７５の実施例のブロック図である。アクセスチャネルの場合、情報データレートは４．８ｋｂｐｓであり、これはレート１／３で符号化され、２回反復された後、インタリーブされる。そのため、基地局受信器では、デインタリーバ７２でのデインタリーブの後、レジスタ８１Ａおよび８１Ｂからの反復ビットが加算器８２で足し合わされて５ビットの軟シンボル値となり、４ビットにスケールダウンされた後にマルチプレクサ８４に入力される。トラフィックチャネルの場合、反復ビットはＩＳ−９５標準に記述されたデータバーストランダム化（ＤＢＲ：data-burst randomization）アルゴリズムに基づいて消去され、デインタリーバ７２から読み出された軟シンボル値は直接マルチプレクサに送られる。チャネルがＡＷＧＮチャネルの場合、枝メトリックの最適な計算は、内積またはユークリッド距離に基づくものである。マルチプレクサ８４の４ビット出力は、バイナリ判定スライサ８７および枝メトリック計算器８８に送られる。バイナリスライサ８７は硬判定を行い、その結果を比較正規化ユニット１００に送る。この硬判定値は後でシンボル誤り率を計算するために使用される。
【００１８】
与えられたトレリス段に対して、枝メトリック計算器８８は、相異なるすべての枝メトリックを計算してそれらをレジスタファイルに格納する。その後、これらの枝メトリックは、ＡＣＳエンジン９０がパスメトリックを更新する際にＡＣＳエンジン９０によって取り出される。本実施例におけるＡＣＳエンジン９０は、１ビットのトレースバックポインタを出力し、これはトレースバックユニット９２に供給され、対応するトレースバックメモリに格納される。また、ＡＣＳエンジン９０はいわゆる「Yamamotoビット」を生成する。これは、トレリスの最終段における０状態に対してのみ復号器ステータスレジスタ９４にラッチされる。Yamamotoビットは、ＡＣＳエンジン９０におけるパス消去プロセスのロバスト性を示す作用をする。
【００１９】
このＩＳ−９５アプリケーションにおけるデータ伝送は可変であるため、ビタビ復号器７５は４つのレート、すなわち、フル、ハーフ、４分の１および８分の１のすべてを計算し、その結果を、シフトレジスタ９６を通じて出力バッファ９７に送る。代替実施例では、フル、ハーフ、４分の１および８分の１のそれぞれのレートの出力を格納するために、出力バッファ９７の代わりに、図１７に示すように、別個のシフトレジスタ１７７−１、１７７−２、１７７−３および１７７−４を用いることが可能である。出力ビットは、６４サイクル（これは、トレースバックメモリの長さに対応する。）ごとにトレースバックユニット９２によって生成される。シフトレジスタ９６からの出力ビットは、再符号器９８で再符号化され、比較正規化ユニット１００で、バイナリスライサ８７からの硬判定値と比較される。その結果は、シンボル誤り率（ＳＥＲ：symbol error rate）レジスタのセットＳＥＲ＿１、ＳＥＲ＿２、ＳＥＲ＿４およびＳＥＲ＿８に格納される。巡回冗長符号（ＣＲＣ）検査が、ＣＲＣユニット１０２で、１４．４ｋｂｐｓレートセットのすべてのレートと、９．６ｋｂｐｓレートセットのフルレートおよびハーフレートに対して実行され、その結果であるＣＲＣ＿１、ＣＲＣ＿２、ＣＲＣ＿４およびＣＲＣ＿８はレジスタ１０４に格納される。ＣＲＣ、ＳＥＲおよびYamamotoビットの情報を用いて、復号器７５は、与えられたフレームでいずれのレートが送信されたかを判断することができる。
【００２０】
図１０および表１に、本発明による枝メトリック計算のさまざまな点について図示する。図１０に示すように、ノイズの存在により、受信シンボルは、実際の送信値ａおよび−ａからずれることがある。ノイズがガウシアンであると仮定すると、図１０の確率分布関数ｐ（ｚ｜ａ）は次のように書くことができる。
【数１】
0003677257.tif 000002
レート１／ｎ符号の場合、ｌｏｇｅｐ（ｚ｜ａ）として定義される尤度関数、従って枝メトリック（ＢＭ：ｂｒａｎｃｈ  ｍｅｔｒｉｃ）は、次式で与えられることを示すことができる。
【数２】
0003677257.tif 000003
これは、ａｎ＝±１の場合、加算および減算に帰着する（Andrew J. Viterbi, "CDMA: Principles of Spread Spectrum Communication", Addison-Wesley, 1995、参照）。こうして、枝メトリックは、ｎ個の距離にわたる総和によって得られる。従来の方式では、受信シンボルｚは一般に、図１０に示したように２の補数表示によって表現される。線形変換は尤度関数を変えないため、＋８のような定数をすべての２の補数値に加えた場合、その結果は図示のようなオフセットバイナリ表現となる。注意すべき点であるが、従来の２の補数方式では、一致が良い場合に枝メトリックは大きくなる。例えば、受信シンボルｚ＝＋７の場合、＋１と比較すると、結果は７となる。同様に、ｚ＝−７の場合、−１と比較すると、結果はやはり７となる。別の可能性は、同じく図１０に示した符号付き絶対値表現を用いるものである。しかし、符号付き絶対値表現では一般に枝メトリックは大きくなる。
【表１】
0003677257.tif 000004
【００２１】
本発明によるオフセットバイナリ表現では、尤度を計算する代わりに、尤度の逆数を計算する。ここで、尤度は、受信シンボルと符号後の間の距離に比例する。例えば、受信シンボルｚ＝００００の場合、その０からの距離は０であり、１からの距離は１１１１である。従って、一致が良い場合、枝メトリックは０になり、一致が悪い場合、メトリックは非常に大きくなる。図１１に、すべての可能な４ビット軟シンボル値に対する距離の値を示す。オフセットバイナリ表現では、距離は、ビットに対する単純な排他的論理和（ＸＯＲ）演算によって得られる。上記のように、全枝メトリックは、ｎ個の距離にわたる総和により得られる。本発明のオフセットバイナリ方式を用いる利点は、パスメトリックが、従来の２の補数による実装の場合ほどに速くは増大しないことである。その結果、従来のパスメトリックの再正規化は、オフセットバイナリ方式を用いると実行する頻度が少なくなる。再正規化とは、一般に、連続する固定小数点計算を可能にするために、計算値が指定レベルに到達したときに計算値のセットを調整するプロセスのことである。ハードウェア要求条件を比較すると、本発明のオフセットバイナリ方式はＸＯＲおよび加算器を用いて実装することができるのに対して、従来の２の補数方式は加算器および減算器を必要とする。代替実施例では、本発明のオフセットバイナリ方式の使用により、枝メトリック計算器に必要な面積が約２５％縮小する。
【００２２】
図１２に、図９の復号器の枝メトリック計算器８８の実施例を詳細に示す。４ビット軟シンボル値はマルチプレクサ８４からレジスタ１２０−１、１２０−２および１２０−３にロードされる。符号レートが１／３の場合、３個のシンボルがロードされ、符号レートが１／２の場合、２個のシンボルがロードされる。仮説ベクトルＨ＿０、Ｈ＿１およびＨ＿２が、対応するＸＯＲゲート１２４−１、１２４−２および１２４−３にロードされる。仮説ベクトルは、レート１／３の場合は０００から１１１までであり、レート１／２の場合は００から１１までである。ＸＯＲゲート１２４−１および１２４−２の出力は加算器１２５に入力され、加算器１２５の出力は、ＸＯＲゲート１２４−３の出力とともに加算器１２６に入力される。加算器１２５および１２６の出力において結果として得られる枝メトリックは、マルチプレクサ１２７に入力される。マルチプレクサ１２７は、これらのメトリックをレジスタファイル１２８−１、１２８−２、１２８−３および１２８−４に格納する。本実施例では、４個のレジスタファイルを用いることにより、ＡＣＳエンジン９０によって要求される４個の同時の読み出しを可能にしている。
【００２３】
図１３に、復号器７５のＡＣＳエンジン９０に実装されたＡＣＳ演算を示し、図１４に、計算のメモリ編成を示す。シミュレーション結果に基づいて、実施例では、トレースバック長を６４に選択した。これは、トレースバック演算が６４クロックサイクルを必要とすることを意味する。例示したトレリスには２５６個の状態があるため、ＡＣＳ演算をトレースバック演算と完全に重ね合わせるためには、各クロックサイクルで４個の状態メトリックを更新する（すなわち、各クロックサイクルで２個の「バタフライ」構造を計算する）必要がある。従って、１個のトレリス段は６４クロックサイクルで計算される。各クロックサイクルで計算される２個のバタフライ構造を図１３に示す。図１４のメモリ編成は、４個のデュアルポートランダムアクセスメモリ（ＲＡＭ）１４０、１４２、１４４および１４６を含む。注意すべき点であるが、各クロックサイクルごとに１個のバタフライを計算する場合でも、本実施例では一般に４個のＲＡＭが必要である。しかし、３個以上のバタフライを各クロックサイクルごとに計算する場合、一般に４個より多くのＲＡＭが必要となる。従って、クロックサイクルあたり２個のバタフライは、最小のメモリでの最大の計算であり、それゆえ、最適な構成である。
【００２４】
デュアルポートＲＡＭ１４０、１４２、１４４および１４６はそれぞれ１２８個の１０ビットワードを格納し、各ワードの９ビットは状態メトリックに対応し、１ビットはYamamotoビットに対応する。各ＲＡＭ１４０、１４２、１４４および１４６は、２つの読み出し(READ)または２つの書き込み(WRITE)のうちのいずれかをサポートすることができるため、図１４に例示した方式は、利用可能なメモリの最適な使用である。この方式では、ＲＡＭ１４０のロケーション０〜６３と、ＲＡＭ１５５のロケーション１２８〜１９１とから読み出した状態は、ＲＡＭ１４２のロケーション０〜１２７にのみ書き込まれる。従って、下側の書き込みＲＡＭ１４６は、これらの書き込み動作では空いている。４個のすべてのＲＡＭの最大限の利用は、ＲＡＭ１４０のロケーション６４〜１２７から読み出した状態と、ＲＡＭ１４４のロケーション１９２〜２５５から読み出した状態を、ＲＡＭ１４６のロケーション１２８〜２５５に書き込めるようにすることによって実現される。
【００２５】
図１５に、ＡＣＳエンジン９０の実施例を詳細に示す。ＲＡＭ１４０、１４２、１４４および１４６は「ピンポン」方式で動作する。すなわち、あるトレリス段の間、状態メトリックはＲＡＭ１４０、１４４から読み出されてＲＡＭ１４２、１４６に書き込まれ、次の段ではこれらの役割が逆転する。換言すれば、時刻２Ｔにおいて「現状態」が読み出されることになるＲＡＭに、時刻Ｔにおいて「次状態」が書き込まれる。前述のように、状態メトリックＲＡＭはそれぞれ幅１０ビットであり、９ビットは状態メトリックに対応し、１ビットはYamamotoビットに対応する。マルチプレクサ１５０−１および１５０−２は、ＲＡＭ１４０、１４２、１４４および１４６に書き込むデータを選択し、マルチプレクサ１５２−１および１５２−２は、取得したデータをＡＣＳ回路１５５に送る。ＡＣＳ回路１５５は、図示のように接続された加算器(adder)１５６、比較ユニット１５７およびマルチプレクサ１５８を有する。ＲＡＭに送られる読み出しアドレスは、打切り畳込み符号器１５４−１および１５４−２にも送られる。打切り畳込み符号器１５４−１および１５４−２は、対応する枝メトリックを取得するための正しいアドレスを生成する。前述のように、本実施例は、４個の枝メトリックレジスタファイルを用いて、４個のＡＣＳ判定を行うのに必要な４個の異なる枝メトリックを供給する。また、ＡＣＳエンジン９０はトレースバック演算のための１ビットを生成する。生き残りパスがｊである場合、０がトレースバックビットとして格納され、生き残りパスがｊ＋１２８である場合、１が格納される。このようにして、トレースバックビットがアドレス２ｊのＭＳＢにシフトインされると、生き残りパスに連結した状態に到達する。ＡＣＳ回路１５５は、４個の生き残り状態メトリックを比較して、最小のものを判定する。その後、最小のメトリックは、再正規化、および、トレースバックの初期化に用いられる。
【００２６】
図１６に、本発明によるトレースバックユニット９２に実装されるトレースバックメモリの動作を示す。上記のＩＳ−９５基地局受信器のように拘束長の大きい符号のアプリケーションでは、トレースバックメモリのサイズは、実装のコストおよび同一のチップ上に他の機能とともに集積することの実現可能性を判断する際の重要なファクタである。定数Ｌを２５６×６４と定義すると、従来のビタビ復号器チップは一般にサイズ３Ｌのトレースバックメモリで設計されたが、サイズ１．５Ｌのトレースバックメモリも提案されている。本発明による面積効率の良い復号器は、Ｌのオーダーのサイズのトレースバックメモリを用いて実装することができる。この改良は、実施例では、４個の６４段シフトレジスタ（ＳＲ）１６０−ｉ（ｉ＝１，２，３および４）の形式のステージングレジスタ１６０と、機能的な６４ワード×２５６ビットトレースバックＲＡＭ１６２とを用いて提供される。
【００２７】
図１６のＡに、時刻Ｔ＝０におけるステージングレジスタ１６０およびトレースバックＲＡＭ１６２を示す。６４×２５６ビットトレースバックＲＡＭは、８個の６４×３２ＲＡＭを用いて実装することが可能である。これは、６４クロックサイクルで、ステージングレジスタ１６０を書き込む。６４サイクル後、ステージングレジスタ１６０はトレースバックＲＡＭ１６２に書き込まれる。トレースバックＲＡＭは、図１６のＢ〜Ｇに示すような、本発明による巡回バッファ読み出し／書き込み実装方式を利用する。図１６のＢに、時刻０＜Ｔ＜６４の間にデータで満たされるステージングレジスタ１６０を示す。時刻Ｔ＝６４に、ステージングレジスタ１６０がフルになると、図１６のＣに示すように、その内容がトレースバックＲＡＭ１６２に転送され、このプロセスは、図１６のＤおよびＥに示すように、時刻Ｔ＝６４×６４まで継続し、その時点で、トレースバックＲＡＭ１６２はフルになる。この時点で、トレースバックが開始される。トレースバックは、段６３から開始し、段０のビットを押し出す（プッシュアウト）。このプロセスは６４クロックサイクルかかる。この間に、ＡＣＳエンジンは再びステージングレジスタ１６０を満たす。図１６のＦに示すように、６４サイクルの終了時、すなわち、時刻Ｔ＝６４×（６４＋１）に、トレースバックＲＡＭ１６２のアドレス０に対応する段０が空になり、段６４がアドレス０に書き込まれる。注意すべき点であるが、６４  ｍｏｄ  ６４は０である。すなわち、次のトレースバックは段６４（アドレス０）から開始し、段１の１ビットを押し出す。図１６のＧに示すように、６４サイクルの終了時、すなわち、時刻Ｔ＝６４×（６４＋２）に、トレースバックＲＡＭ１６２のアドレス１に対応する段１が空になり、段６５がアドレス１に書き込まれる。こうして、段アドレスとトレースバックＲＡＭアドレスの間のマッピングはｍｏｄ６４で行われる。
【００２８】
図１７に、トレースバックユニット９２の実施例を詳細に示す。トレースバックユニット９２は、４個の６４段シフトレジスタ１６０−１、１６０−２、１６０−３および１６０−４として実装された上記のステージングレジスタ１６０を有する。これらのシフトレジスタは、６４×２５６トレースバックＲＡＭ１６２に接続される。トレースバックＲＡＭ１６２は、本実施例では、シングルポートＲＡＭとして実装される。注意すべき点であるが、４個のシフトレジスタは、トレースバックＲＡＭ１６２における連続するポインタを書き込まない。データを並べ替えようとする（これは、複雑な配線の大規模なネットワークを要する）代わりに、トレースバックＲＡＭへのアドレスを分割し、４：１マルチプレクサ１７３と６４：１マルチプレクサ１７４を用いて並べ替える。マルチプレクサ１７３、１７４は、トレースバックＲＡＭ１６２内の与えられた２５６ビットセットから関連するトレースバックポインタを抽出し、このポインタは、８段シフトレジスタ１７５（これにはあらかじめ初期アドレス１７６がロードされている。）のＭＳＢ入力にプッシュされる。シフトレジスタ１７５からのＬＳＢビットは出力ビットであり、これは、トレースバック演算の終了時に、関連する出力シフトレジスタ１７７−１、１７７−２、１７７−３または１７７−４にラッチされる。前述のように、シフトレジスタ１７７−１、１７７−２、１７７−３および１７７−４は、図９の出力バッファ９７の代替物と見ることも可能である。本発明の改良されたトレースバック方式は、従来の構成に比べて、復号器に必要なトレースバックメモリの量を５０％以上縮小することができる。従来のトレースバックメモリ構成に関してさらに詳細には、例えば、R. Cypher and C. B. Shung, "Generalized Traceback Techniques for Survivor Memory Management in the Viterbi Algorithm", IEEE Globecom, pp.1318-1322, December 1990、に記載されている。
【００２９】
図１８は、上記のＩＳ−９５基地局受信器アプリケーションにおける例示的な２０ｍｓデータフレームに対する、図９の例示的なビタビ復号器７５のタイミング図である。復調プロセスの終了時に、ＤＩ＿ＲＤＹ信号が復号プロセスを開始する。受信チャネルがトラフィックチャネルである場合、前述のように、４個のレートをすべて復号する必要がある。フルレートを最初に復号し、その後、ハーフレートを復号し、その後、４分の１レートを復号し、最後に、８分の１レートを復号する。アクセスチャネルの場合、データ伝送は固定レートで行われるため、復号は一度だけ実行される。レート１／３符号の場合、ビタビ復号器７５は、デインタリーバ７２から順次３個の軟シンボルをフェッチし、それらを枝メトリック計算器８８のレジスタ１２０−１、１２０−２および１２０−３にロードする。その後、８個の仮説を実行し、対応する枝メトリックを枝メトリック計算器８８のレジスタファイル１２８−１、１２８−２、１２８−３および１２８−４に格納する。このプロセスは１１クロックサイクルかかる。レート１／２符号の場合、このプロセスは７クロックサイクルかかる。
【００３０】
次に、制御はＡＣＳエンジン９０に移る。ＡＣＳエンジン９０は、１段を完了するのに６４クロックサイクルかかる。このプロセス中に、トレースバックポインタがトレースバックユニット９２の４個のシフトレジスタ１６０−１、１６０−２、１６０−３および１６０−４に書き込まれる。ＡＣＳ計算の終了時に、これらのシフトレジスタの内容がトレースバック（ＴＢ）ＲＡＭ１６２に書き込まれる。並行して、枝メトリック計算器８８は、次の３個の符号シンボルをフェッチし、次の枝メトリックのセットを計算（ＢＭＣ）している。このサイクルは、トレースバックＲＡＭ１６２が満たされるまで反復される。満たされた時点で、トレースバックユニット９２はトレースバックを開始し、トレースバックは、ＡＣＳ演算と平行して行われる。６４サイクルの終了時に、トレースバックユニット９２は１個の復号ビットをプッシュアウトし、シフトレジスタ１６０−１、１６０−２、１６０−３および１６０−４は、自己の内容を、トレースバックＲＡＭ１６２内で解放されているスロットにダンプする。このプロセスは、最後のトレリス段がＲＡＭ１６２に書き込まれるまで継続する。その後、枝メトリック計算器８８およびＡＣＳエンジン９０はアイドルモードに移り、トレースバックユニットは最後のビットセットをプッシュアウトする。このレートが終了すると、４個のレートのすべてが完了するまで、制御は次のレートに移る。その後、プロセス全体が、次のデータフレームに対して繰り返される。本発明の面積効率の良いビタビ復号器のスループットは、２０ＭＨｚのクロックレートで、レート１／２符号の場合は０．３２Ｍｂｐｓであり、レート１／２符号の場合は０．２６Ｍｂｐｓである。この実装は、リアルタイムで、すなわち、１個の２０ｍｓフレームにおいて、１０個までのＣＤＭＡチャネルを復号することができる。
【００３１】
強調されるべき点であるが、上記で例示したビタビ復号器は本発明の動作を説明するためのものであって、特定の実施例に本発明を限定するものと解釈してはならない。例えば、本発明は、ＩＳ−９５方式の基地局受信器における実装に適してはいるが、畳込み符号を利用する他のアプリケーションにおける面積効率の良い復号器を実現するために使用することも可能である。さらに、符号レート、拘束長、トレリス内の状態数、トレースバック長などがさまざまに異なる実施例も、個々のアプリケーションの必要に応じて実装可能である。
【００３２】
【発明の効果】
以上述べたごとく、本発明によれば、ワイヤレス基地局受信器などの、大きい拘束長の符号を利用するアプリケーションを含むさまざまなアプリケーションで、面積効率が良く、少ない複雑さおよびコストで実装可能なビタビ復号器が実現される。
【図面の簡単な説明】
【図１】従来の、拘束長Ｋ＝４でレート１／２の畳込み符号のトレリス図である。
【図２】従来の、レート１／２符号の場合のバタフライ構造の図である。
【図３】従来の、８状態トレリスにおける畳込み符号化プロセスの図である。
【図４】従来の、８段トレリスに対して７Ｔの期間にわたるすべての可能なパスの図である。
【図５】従来のビタビ復号器のブロック図である。
【図６】図５の復号器における加算比較選択（ＡＣＳ）演算の図である。
【図７】図５のビタビ復号器内のＡＣＳエンジンに対する従来の実装の図である。
【図８】本発明による面積効率の良いビタビ復号器が実装されるＩＳ−９５基地局受信器の図である。
【図９】本発明による面積効率の良いビタビ復号器の実施例のブロック図である。
【図１０】本発明によるビタビ復号器における枝メトリック計算で用いられるバイナリオフセット表現の図である。
【図１１】図５のビタビ復号器内のＡＣＳエンジンに対する従来の実装の図である。
【図１２】図９のビタビ復号器で用いられる枝メトリック計算器の実施例の図である。
【図１３】図９のビタビ復号器で用いられるＡＣＳエンジンにおけるＡＣＳ計算の説明図である。
【図１４】図９のビタビ復号器で用いられるＡＣＳエンジンにおけるメモリ編成の説明図である。
【図１５】図９のビタビ復号器で用いるのに適したＡＣＳエンジンの実施例の左半分の図である。
【図１６】本発明による巡回バッファトレースバックメモリ方式の動作の説明図である。
【図１７】図１６のトレースバックメモリ方式を含み、図９のビタビ復号器で用いるのに適した、トレースバックユニットの実施例の図である。
【図１８】例示的なデータフレームに対する図９のビタビ復号器のさまざまな動作のタイミングを示すタイミング図である。
【図１９】図９のビタビ復号器で用いるのに適したＡＣＳエンジンの実施例の左半分の図である。
【符号の説明】
１０  ビタビ復号器
１２  枝メトリック計算器
１４  再帰ＡＣＳエンジン
１６  トレースバックユニット
１８  入力バッファ
２０  出力バッファ
２２  有限状態マシンコントローラ
３０  加算器
３２  比較ユニット
３４  選択ユニット
４０  ＡＣＳユニット
４２  状態メトリックＲＡＭ
４４  第１メモリユニット
４６  ルーティングネットワーク
４８  第２メモリユニット
５０  バタフライ構造
６０  ＩＳ−９５基地局受信器
６２  ミキサ
６３  ミキサ
６４  チップ整合フィルタ
６５  チップ整合フィルタ
６８  非コヒーレントウォルシュ相関器バンク
７０  軟シンボル生成器（ＳＳＧ）
７２  デインタリーバ
７５  ビタビ復号器
８１  レジスタ
８２  加算器
８４  マルチプレクサ
８７  バイナリ判定スライサ
８８  枝メトリック計算器
９０  ＡＣＳエンジン
９２  トレースバックユニット
９４  復号器ステータスレジスタ
９６  シフトレジスタ
９７  出力バッファ
９８  再符号器
１００  比較正規化ユニット
１０２  ＣＲＣユニット
１０４  レジスタ
１２０  レジスタ
１２４  ＸＯＲゲート
１２５  加算器
１２６  加算器
１２７  マルチプレクサ
１２８  レジスタファイル
１４０  デュアルポートＲＡＭ
１４２  デュアルポートＲＡＭ
１４４  デュアルポートＲＡＭ
１４６  デュアルポートＲＡＭ
１５０  マルチプレクサ
１５２  マルチプレクサ
１５４  打切り畳込み符号器
１５５  ＡＣＳ回路
１５６  加算器
１５７  比較ユニット
１５８  マルチプレクサ
１６０  ステージングレジスタ（シフトレジスタ）
１６２  トレースバックＲＡＭ
１７３  ４：１マルチプレクサ
１７４  ６４：１マルチプレクサ
１７５  ８段シフトレジスタ
１７６  初期アドレス
１７７  シフトレジスタ
【図１】
0003677257.tif 000005
【図２】
0003677257.tif 000006
【図３】
0003677257.tif 000007
【図４】
0003677257.tif 000008
【図５】
0003677257.tif 000009
【図６】
0003677257.tif 000010
【図７】
0003677257.tif 000011
【図８】
0003677257.tif 000012
【図９】
0003677257.tif 000013
【図１０】
0003677257.tif 000014
【図１１】
0003677257.tif 000015
【図１２】
0003677257.tif 000016
【図１３】
0003677257.tif 000017
【図１４】
0003677257.tif 000018
【図１５】
0003677257.tif 000019
【図１６】
0003677257.tif 000020
【図１７】
0003677257.tif 000021
【図１８】
0003677257.tif 000022
【図１９】
0003677257.tif 000023