(57)【要約】【課題】  本発明の課題は、種々の無線規格に対応可能であって、かつ高速処理を可能とする軟判定ビタビアルゴリズムにおける復号方法を提供することを目的とする。【解決手段】  上記課題は、畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、時間Ｔｉの現ステージと時間Ｔi＋１の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、を実行する復号方法により達成される。【選択図】  図１
2011135163.tif 000002
【特許請求の範囲】
【請求項１】
畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、
時間Ｔｉの現ステージと時間Ｔi＋１の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、
同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、
を実行する復号方法。
【請求項２】
前記演算手順は、前最尤状態と一致する状態が現ステージのグループ内に存在する場合、該前最尤状態を１ビット左シフトし、パスメトリックの極性を示す符号を最下位ビットに設定することによって、該現ステージでの最尤状態を特定し、評価値を持たないことを示す値を最尤状態の評価値として前記記憶領域に格納することを特徴とする請求項１記載の復号方法。
【請求項３】
前記演算手順は、同一グループ内において、現ステージの非最尤状態に対して、前ステージの各状態のパスメトリックの極性の組み合わせに応じて、何れか一状態の評価値又はパスメトリックを選択して、該非最尤状態の評価値として前記記憶領域に格納することを特徴とする請求項１又は２記載の復号方法。
【請求項４】
前記演算手順は、前状態が前ステージで最尤状態である場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と異なる極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該パスメトリックの値を入力することを特徴とする請求項３記載の復号方法。
【請求項５】
前記演算手順は、前状態が前ステージで最尤状態でない場合、前ステージの最尤状態の評価値が該パスメトリックの極性と同じ極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該評価値を入力することを特徴とする請求項３記載の復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種々の無線規格に対応可能であって、かつ高速処理を可能とする軟判定ビタビアルゴリズムにおけるバックトレースによる復号方法に関する。
【背景技術】
【０００２】
従来より、無線通信では、通信路のノイズなどへの対策のために複雑な復号処理が必要であり、その手法の一つにＳＯＶＡ（Soft Output Viterbi Algorism）と呼ばれる方法がある。ＳＯＶＡ復号処理には大きな計算量が必要であり、ソフトウェアによりプロセッサによって処理させる場合には、その計算量が大きな課題となっている。
【０００３】
入力される符号ビットに対し、取りうる状態ビットのパスメトリックに応じて最尤の遷移元状態ビットを選択し、遷移元状態ビットそのものをサバイバルパスメモリ内に記憶することで、ソフトウェアによるバックトレース処理を簡素化することなどが提案されている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７４５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では無線規格に応じて状態数を変更することができないと言った問題があった。例えば、特許文献１では４状態数によるバックトレース処理が示されており、状態数を無線規格に応じて変更することはできない。また、ソフトウェアによる演算をハードウェアで構成して高速処理とする場合であっても、無線規格毎に異なるハードウェアが必要となり、種々の無線規格に対応するためには柔軟性に欠けるといった問題があった。
【課題を解決するための手段】
【０００６】
開示の技術は、畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、時間Ｔｉの現ステージと時間Ｔｉ＋１の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、を実行するように構成される。
【発明の効果】
【０００７】
開示の復号方法では、種々の無線規格に対応可能であって、かつ高速処理を可能とする軟判定ビタビアルゴリズムにおけるバックトレース処理を実現できる。
【図面の簡単な説明】
【０００８】
【図１】トレリス線図の特徴を利用した状態のグループ化を説明するための図である。
【図２】４状態を有する畳み込み符号におけるトレリス線図を示す図である。
【図３】バックトレース処理の全体処理を説明するための図である。
【図４】４状態の場合のコスト演算の処理過程を例示する図である。
【図５】バックトレース処理の開始時を例示する図である。
【図６】バックトレース処理を行うプロセッサコアの回路構成例を示す図である。
【図７】演算器の回路構成例を示す図である。
【図８】アドレス生成部による同一グループ内の４状態を特定する方法を説明するための図である。
【図９】バックトレース演算部による最尤状態の設定処理を説明するためのフローチャート図である。
【図１０】バックトレース演算部による評価値算出処理を説明するためのフローチャート図である。
【図１１】図１０のステップＳ４３での第一の評価値算出処理を説明するための図である。
【図１２】図１０のステップＳ４４での第二の評価値算出処理を説明するための図である。
【図１３】バックトレース演算部による尤度更新処理を説明するための図（その１）である。
【図１４】バックトレース演算部による尤度更新処理を説明するための図（その２）である。
【図１５】尤度選択部による尤度出力処理を説明するためのフローチャート図である。
【図１６】４並列とした場合のグループ化の例を示す図である。
【図１７】バックトレース処理を行うためのソフトウェアとプロセッサとの対応を説明するための図である。
【図１８】ステップ１に対する動作を示す図である。
【図１９】ステップ２に対する動作を示す図である。
【図２０】ステップ３に対する動作を示す図である。
【図２１】ステップ４に対する動作を示す図である。
【図２２】ステップ５に対する動作を示す図である。
【図２３】ステップ６に対する動作を示す図である。
【図２４】ステップ７に対する動作を示す図である。
【図２５】ステップ８に対する動作を示す図である。
【図２６】ステップ９に対する動作を示す図である。
【図２７】ステップ１０に対する動作を示す図である。
【図２８】４つの状態を有する無線規格のトレリス線図の例を示す図である。
【図２９】ステージ８とステージ９のノードのグループにおけるバックトレース処理を説明するための図（その１）である。
【図３０】ステージ８とステージ９のノードのグループにおけるバックトレース処理を説明するための図（その２）である。
【図３１】ステージ８とステージ９のノードのグループにおけるバックトレース処理を説明するための図（その３）である。
【図３２】ステージ７とステージ８のノードのグループにおけるバックトレース処理を説明するための図（その１）である。
【図３３】ステージ７とステージ８のノードのグループにおけるバックトレース処理を説明するための図（その２）である。
【図３４】ステージ７とステージ８のノードのグループにおけるバックトレース処理を説明するための図（その３）である。
【図３５】ステージ７とステージ８のノードのグループにおけるバックトレース処理を説明するための図（その４）である。
【図３６】ステージ７とステージ８のノードのグループにおけるバックトレース処理を説明するための図（その５）である。
【図３７】ステージ６とステージ７のノードのグループにおけるバックトレース処理を説明するための図（その１）である。
【図３８】ステージ６とステージ７のノードのグループにおけるバックトレース処理を説明するための図（その２）である。
【図３９】ステージ６とステージ７のノードのグループにおけるバックトレース処理を説明するための図（その３）である。
【図４０】ステージ６とステージ７のノードのグループにおけるバックトレース処理を説明するための図（その４）である。
【図４１】ステージ６とステージ７のノードのグループにおけるバックトレース処理を説明するための図（その５）である。
【図４２】送信側の畳み込み符号器の例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を図面に基づいて説明する。軟判定ビタビアルゴリズムに基づくＳＯＶＡ復号処理は、通常、受信信号からパスメトリック（Path Metric）と呼ばれる評価値を計算して最大となる経路を選択する処理部（ＡＣＳ：Add, Compare and Select）と、選択された経路をバックトレースして送信信号の「０」又は「１」の確からしさを示す尤度を出力するバックトレース処理部とを有する。
【００１０】
本実施例では、ＳＯＶＡ復号処理のうちバックトレース処理部に関し、送信側での畳み込み符号におけるトレリス線図の特徴を利用して、状態数の異なる無線規格に柔軟に対応可能とし汎用性を高めると共に高速処理を実現する。
【００１１】
図１は、トレリス線図の特徴を利用した状態のグループ化を説明するための図である。本実施例では、トレリス線図にける時間Ｔｉと時間Ｔｉ＋１との間で、２状態（以下、ノードとも言う）毎にグループ化を行う。発明者は、トレリス線図では時間Ｔｉの２つの状態が時間Ｔｉ＋１の２つの状態を決めていることに着目し、このトレリス線図の特徴を用いて状態をグループ化するものである。図１中及び以降のトレリス線図において、入力ビットが「０」の時の状態遷移を実線で示し、入力ビットが「１」の時の状態遷移を波線で示す。
【００１２】
例えば携帯電話での通信などの８状態を有する無線通信の場合について図１（Ａ）で説明する。図１（Ａ）では、状態「０００」、状態「００１」、状態「０１０」、状態「０１１」、状態「１００」、状態「１０１」、状態「１１０」、状態「１１１」の順に８状態が示され、以下に説明するように、グループＧａ１からＧａ４の４組のグループに分けられる。
【００１３】
時間Ｔｉの状態「０００」及び状態「００１」の２状態から時間Ｔｉ＋１の状態「０００」及び状態「１００」の２状態が決まるため、これらの状態を１つのグループＧａ１とする。時間Ｔｉの状態「０１０」及び状態「０１１」の２状態から時間Ｔｉ＋１の状態「００１」及び状態「１０１」の２状態が決まるため、これらの状態を１つのグループＧａ２とする。
【００１４】
時間Ｔｉの状態「１００」及び状態「１０１」の２状態から時間Ｔｉ＋１の状態「０１０」及び状態「１１０」の２状態が決まるため、これらの状態を１つのグループＧａ３とする。時間Ｔｉの状態「１１０」及び状態「１１１」の２状態から時間Ｔｉ＋１の状態「０１１」及び状態「１１１」の２状態が決まるため、これらの状態を１つのグループＧａ４とする。
【００１５】
また、例えば無線ＬＡＮによる通信などの４状態を有する無線通信の場合について図１（Ｂ）で説明する。図１（Ｂ）では、状態「０００」、状態「００１」、状態「０１０」、状態「０１１」の順に４状態が示され、以下に説明するように、グループＧｂ１からＧｂ２の２組のグループに分けられる。
【００１６】
時間Ｔｉの状態「０００」及び状態「００１」の２状態から時間Ｔｉ＋１の状態「０００」及び状態「０１０」の２状態が決まるため、これらの状態を１つのグループＧｂ１とする。時間Ｔｉの状態「０１０」及び状態「０１１」の２状態から時間Ｔｉ＋１の状態「００１」及び状態「０１１」の２状態が決まるため、これらの状態を１つのグループＧｂ２とする。
【００１７】
図２は、４状態を有する畳み込み符号におけるトレリス線図を示す図である。図２において、状態「００」を初期状態として開示し、例えば連続するゼロのデータ「０００」を送信側と受信側とで既知となるテールビットによって状態「００」を終了状態とするトレリス線図が示されている。
【００１８】
このトレリス線図では、初期状態「００」において、情報源として「０」が入力された場合は「００」を出力し、状態は「００」のままとなる。一方、情報源として「１」が入力された場合は「１１」を出力し、状態は「１０」に遷移する。遷移した先の状態毎で同様の状態遷移を行う。各状態にて、「０」入力に応じた出力を実線側（ノードの右上）に（  ）内に示し、「１」入力に応じた出力を波線側（ノードの右下）の（  ）内に示している。
【００１９】
図１（Ｂ）で説明したグループ分けは、図２のトレリス線図の時間Ｔｉと時間Ｔｉ＋１においてグループＧｂ１及びＧｂ２で示される。各時間Ｔにおいて同様にグループ分けが可能である。このようにグループ化したノードに対する評価値を示すコストを演算するバックトレース処理を行う。
【００２０】
図３は、バックトレース処理の全体処理を説明するための図である。図３において、バックトレース処理は、時間Ｔｉのステージにおいて、データメモリ２から時間Ｔｉ＋１のパスメトリックＰＭｉ＋１と、時間Ｔｉ＋１のコストＣｉ＋１とを読み出して、パスメトリックＰＭｉ＋１とコストＣｉ＋１とを用いて時間ＴｉのコストＣｉを演算し、演算して得られたコストＣｉをデータメモリ２に格納し（ステップＳ１１）、全グループについてコストＣｉを演算したか否かを判断する（ステップＳ１２）。ステージ毎に、図１（Ａ）に示す８状態の場合は４回繰り返し、図１（Ｂ）に示す４状態の場合は２回繰り返すことになる。
【００２１】
全グループについて終了していない場合、ステップＳ１１に戻り、次のグループについてコストＣｉを演算する。一方、全グループについてコストＣｉの演算が終了している場合、演算したコストＣｉを用いて尤度を出力する（ステップＳ１３）。
【００２２】
時間Ｔｉのステージを終了する処理を行い（ステップＳ１４）、時間Ｔｉから１ステージ前の時間Ｔｉ−１に遡り、時間Ｔｉ−１のステージの有無より全ステージを終了したか否かを判断する（ステップＳ１５）。時間Ｔｉ−１のステージが存在する場合、ステップＳ１１へ戻り、時間Ｔｉ−１のステージの各グループについてコストＣｉを演算する処理を繰り返す。一方、全ステージを終了している場合、バックトレース処理を終了する。
【００２３】
図４は、４状態の場合のコスト演算の処理過程を例示する図である。図４（Ａ）では、時間ＴｉのステージにおけるグループＧｂ１では、状態０に対しては、時間Ｔｉ＋１のステージにおける状態０のコストＣｉ＋１とパスメトリックＰＭｉ＋１とが用いられ、状態１に対しては、時間Ｔｉ＋１のステージにおける状態２のコストＣｉ＋１とパスメトリックＰＭｉ＋１とが用いられる。
【００２４】
次に、図４（Ｂ）に示されるように、時間Ｔｉのステージにおける次のグループＧｂ２では、状態２に対しては、時間Ｔｉ＋１のステージにおける状態１のコストＣｉ＋１とパスメトリックＰＭｉ＋１が用いられ、状態３に対しては、時間Ｔｉ＋１のステージにおける状態３のコストＣｉ＋１とパスメトリックＰＭｉ＋１とが用いられる。
【００２５】
このように時間Ｔｉのステージにおける全グループが終了すると、図４（Ｃ）に示されるように、時間Ｔｉ−１のステージにて同様にグループＧｂ１から開始され、時間Ｔｉ−１のステージにおけるグループＧｂ１において、状態０に対しては、時間Ｔｉのステージにおける状態０のコストＣｉとパスメトリックＰＭｉとが用いられ、状態１に対しては、時間Ｔｉのステージにおける状態２のコストＣｉとパスメトリックＰＭｉとが用いられる。
【００２６】
一方で、バックトレース処理の開始時は、図２に示すように、終了状態から処理を開始するに際し、状態数が少なくパスメトリックが存在しない場合がある。図５は、バックトレース処理の開始時を例示する図である。図５において、図２の例において、時間Ｔｉ＋１のステージが終了状態である場合、時間Ｔｉ＋１のステージで存在しない状態１、２、３、及び時間Ｔｉのステージで存在しない状態２、３に対して、入力「１」を推定するコストとパスメトリックとを無限大（∞）に設定することによって、他と同様の処理が可能となる。
【００２７】
ＳＯＶＡ復号処理において、上述したような無線規格の状態数に依存しないバックトレース処理を行うプロセッサコアの回路構成について説明する。
【００２８】
図６は、バックトレース処理を行うプロセッサコアの回路構成例を示す図である。図６において、バックトレース処理を行うプロセッサコア１０は、命令コードをプログラムメモリ１から取り出してデコードするＦＥ／ＤＣ部３と、バックトレース処理を実行する実行部４と、汎用レジスタ７とを有する。実行部４は、更に演算器５とＡＬＵ６とを有する。
【００２９】
ＦＥ／ＤＣ部３にて順次取り込まれデコードされた命令コードに従って、実行部４の演算器５は、バックトレース処理を行う。汎用レジスタ７には、実行部４での処理に必要なデータやアドレス等が格納される。
【００３０】
図７は、演算器の回路構成例を示す図である。図７に示す演算器５は、アドレス生成部５１と、バックトレース演算部５２と、尤度選択部５３と、状態数レジスタ２２と、現コスト記憶部３０と、前コスト記憶部３１と、現ＰＭ記憶部４０と、前ＰＭ記憶部４１と、現最尤状態レジスタ６０と、前最尤状態レジスタ６１と、尤度記憶部７０とを有する。
【００３１】
アドレス生成部５１は、状態数レジスタ２２に格納されている無線規格に応じた状態数と、上位プログラムから入力される状態番号を示す状態ＩＤとを用いて、バックトレース演算部５２がアクセスするデータメモリ２の読み出しアドレスと書き込みアドレスとを生成して、バックトレース演算部５２に供給する。
【００３２】
状態ＩＤとは、処理中の現在のステージにおける各グループ内の最も若い状態番号を言う。つまり、時間Ｔｉを現在のステージ（以下、現ステージという）とし、時間Ｔｉ+１を前ステージとすると、図１（Ａ）の８状態では、グループＧａ１を指定する場合は状態ＩＤとして状態「０００」を示す「０」が指定され、グループＧａ２を指定する場合は状態ＩＤとして状態「０１０」を示す「２」が指定され、グループＧａ３を指定する場合は状態ＩＤとして状態「１００」を示す「４」が指定され、グループＧａ４を指定する場合は状態ＩＤとして状態「１１０」を示す「６」が指定される。
【００３３】
また、状態ＩＤ「０」の場合、読み出しアドレスは、前ステージの状態「０００」と状態「１００」に係るアドレスであり、書き込みアドレスは、現ステージの状態「０００」と状態「００１」に係るアドレスとなる。他状態ＩＤ「２」、「４」、及び「６」についても、同様に図１（Ａ）に示すグループ分けに従って、読み出しアドレスと書き込みアドレスとが、各々のステージにおける同一グループ内の２状態に係るアドレスとなる。
【００３４】
一方、図１（Ｂ）の４状態では、時間Ｔｉを現在のステージとすると、グループＧｂ１を指定する場合は状態ＩＤとして状態「００」を示す「０」が指定され、グループＧｂ２を指定する場合は状態ＩＤとして状態「１０」を示す「２」が指定される。８状態の場合と同様に、図１（Ｂ）に示すグループ分けに従って、読み出しアドレスと書き込みアドレスとが、各々のステージにおける同一グループ内の２状態に係るアドレスとなる。
【００３５】
バックトレース演算部５２は、状態数レジスタ２２から得られる無線規格に応じた状態数に基づいて、時間Ｔｉを現ステージとして、上位から通知される状態ＩＤ毎に、同一クループ内の時間Ｔｉ+１の前ステージの２状態の「０」と「１」の各々の評価値とパスメトリックとを用いて、同一グループ内の時間Ｔｉの現ステージの２状態の「０」と「１」の各々の評価値とパスメトリックとを演算し、前最尤状態から「０」と「１」の各々の確からしさと最尤状態とを、現ステージの２状態に対して演算する。
【００３６】
状態数レジスタ２２は、１ステージ当たりの全状態数を示し、例えば、４、８、又は１６状態を示す。状態数の指定に応じたバックトレース処理となるため、あらゆる無線規格に対応することができる。
【００３７】
前コスト記憶部３１は、状態ＩＤで指定される同一グループ内の前ステージにおける２状態に関して、各状態の「０」の評価値と「１」の評価値とを記憶する記憶部であり、アドレス生成部５１によって生成された読み出しアドレスによってデータメモリ２から読み出された、時間Ｔｉ+１の「０」の評価値を格納する前ｃｏｓｔ＿０レジスタ３１ａと、時間Ｔｉ+１の「１」の評価値を格納する前ｃｏｓｔ＿１レジスタ３１ｂとを有する。前ｃｏｓｔ＿０レジスタ３１ａの評価値と、前ｃｏｓｔ＿１レジスタ３１ｂの評価値とは、バックトレース演算部５２へ供給される。
【００３８】
前ＰＭ記憶部４１は、状態ＩＤで指定される同一グループ内の前ステージにおける２状態に関して、各状態の「０」のパスメトリックと「１」のパスメトリックとを記憶する記憶部であり、データメモリ２からアドレス生成部５１によって生成された読み出しアドレスから読み出された、時間Ｔｉ+１の「０」のパスメトリックを格納するＰＭ＿０レジスタ４１ａと、時間Ｔｉ+１の「１」のパスメトリックを格納するＰＭ＿１レジスタ４１ｂとを有する。ＰＭ＿０レジスタ４１ａのパスメトリックと、ＰＭ＿１レジスタ４１ｂのパスメトリックとは、バックトレース演算部５２へ供給される。
【００３９】
前最尤状態レジスタ６１は、時間Ｔｉを現ステージに対して、時間Ｔｉ+１の前ステージにおいて全ノード中で最尤状態であった状態番号が格納されているレジスタである。
【００４０】
現コスト記憶部３０は、状態ＩＤで指定される同一グループ内の現ステージにおける２状態に関して、各状態の「０」の評価値と「１」の評価値とを記憶する記憶部であり、時間Ｔｉを現ステージとしてバックトレース演算部５２によって得られた時間Ｔｉの「０」の２状態の評価値を格納する現ｃｏｓｔ＿０レジスタ３０ａと、時間Ｔｉの「１」の２状態の評価値を格納する現ｃｏｓｔ＿１レジスタ３０ｂとを有する。現ｃｏｓｔ＿０レジスタ３０ａの評価値と、現ｃｏｓｔ＿１レジスタ３０ｂの評価値とは、アドレス生成部５１によって生成されたデータメモリ２の書き込みアドレスへと書き込まれる。
【００４１】
現最尤状態レジスタ６０は、バックトレース演算部５２によって得られた、時間Ｔｉの現ステージの同一グループ内の２状態の最尤状態を格納するレジスタである。
【００４２】
尤度記憶部７０は、時間Ｔｉの現ステージにおける同一グループ内の２状態に関して、各状態の「０」と「１」の確からしさを示す尤度を記憶する記憶部であり、バックトレース演算部５２によって得られた、時間Ｔｉの２状態の「１」の尤度を記憶する尤度（＋）レジスタ７０ａと、時間Ｔｉの２状態の「０」の尤度を記憶する尤度（−）レジスタ７０ｂとを有する。
【００４３】
尤度選択部５３は、前最尤状態レジスタ６１に格納されている時間Ｔｉ+１の前ステージの同一グループ内の２状態の尤度と、尤度記憶部７０に格納されている時間Ｔｉの現ステージの同一グループ内の２状態の「０」の尤度及び「１」の尤度とを用いて、現ステージの２状態の尤度を各々選択して、データメモリ２へ記憶する。
【００４４】
アドレス生成部５１による状態数と状態ＩＤとを用いたアドレス生成の方法について説明する。アドレス生成部５１は、状態数と状態ＩＤとに基づいて、評価値演算の対象となる時間Ｔｉの現ステージでの２状態の状態番号を特定し、評価値演算に必要な同一グループ内の時間Ｔｉ＋１の前ステージにおける２状態の状態番号を特定し、特定した４つの状態番号から夫々読み出す評価値のアドレス及び評価値を書き込むアドレスを演算して求める。
【００４５】
図８は、アドレス生成部による同一グループ内の４状態を特定する方法を説明するための図である。図８において、８状態を有する無線規格において状態ＩＤ「２」が指定された場合が示されている。
【００４６】
先ず、アドレス生成部５１は、時間Ｔｉにおける現ステージにおける２つのノード２ａ及び２ｂを特定する。ノード２ａを上位ノード、及び、ノード２ｂを下位ノードと言う。アドレス生成部５１は、状態ＩＤ「２」そのものから上位ノード２ａは状態「０１０」であると特定する（ステップＳ２１）。そして、状態ＩＤ「２」（＝状態「０１０」）のＬＳＢ（Least Significant Bit：最下位ビット）を反転させて得た値「０１１」を上位ノード２ｂの状態として特定する（ステップＳ２２）。
【００４７】
次に、アドレス生成部５１は、時間Ｔｉ＋１における前ステージにおける２つのノード２ｃ及び２ｄを特定する。ノード２ｃを上位ノード、及び、ノード２ｄを下位ノードと言う。アドレス生成部５１は、状態ＩＤ「２」（＝状態「０１０」）を１ビット右シフトして、更にＭＳＢ（Most Significant Bit：最上位ビット）に「０」をセットして得た値「００１」を上位ノード２ｃの状態として特定する（ステップＳ２３）。そして、状態ＩＤ「２」（＝状態「０１０」）を１ビット右シフトして、更にＭＳＢに「１」をセットして得た値「１０１」を下位ノード２ｄの状態として特定する（ステップＳ２４）。
【００４８】
ＭＳＢは、状態数で決められる。８状態であればＭＳＢはビット２、一方、４状態であればＭＳＢはビット１となる。
【００４９】
このようにして求めた同一グループ内の４つのノードの状態番号から、ノード２ｃ及び２ｄから評価値とパスメトリックをデータメモリ２から読み出すためのメモリアドレスと、ノード２ａ及び２ｂから新たに算出した評価値をデータメモリ２に格納するためのメモリアドレスとを求める。
【００５０】
バックトレース演算部５２での処理概要について説明する。図２を参照し、先ず、バックトレース演算部５２への入力について説明する。バックトレース演算部５２は、状態数レジスタ２２で指定される１ステージ当たりの全状態数に応じたバックトレース処理を実行し、あらゆる無線規格に対応する。バックトレース演算部５２は、状態数レジスタ２２から入力される状態数と、上位から入力される状態ＩＤとを用いて、アドレス生成部５１と同様な方法によって、同一グループ内の４つのノードの状態番号を算出する。或いは、アドレス生成部５１から供給されるようにしてもよい。
【００５１】
また、前最尤状態レジスタ６１から入力される前最尤状態から前ステージでの全ノード中で最尤状態であった状態番号を参照することによって、現ステージの２つのノードの一方が最尤状態であるか否かを判断する。
【００５２】
前コスト記憶部３１から入力される前ステージでの２つのノードの「０」の評価値（前ｃｏｓｔ＿０）と「１」の評価値（前ｃｏｓｔ＿１）とを用いて、現ステージの２つのノードの「０」及び「１」の評価値を算出する。ここで、前ステージでの２つのノードは、状態ＩＤで指定される同一グループ内のノードである。
【００５３】
前ＰＭ記憶部４１から入力されるＡＣＳで算出された前ステージでの「０」のパスメトリック（ＰＭ＿０）と「１」のパスメトリック（ＰＭ＿１）とを用いて、選択する評価値を決定する。ここで、前ステージでの２つのノードは、状態ＩＤで指定される同一グループ内のノードである。
【００５４】
次に、図２を参照し、バックトレース演算部５２からの出力について説明する。バックトレース演算部５２は、現ステージにおける全ノード中の最尤状態を現最尤状態レジスタ６０に出力する。現ステージの処理中は候補値として格納され、現ステージにおける全グループについて処理が終了すると、現最尤状態レジスタ６０に格納されている最尤状態が前最尤状態レジスタ６１にコピーされる。
【００５５】
バックトレース演算部５２は、処理中の２つのノードに関する「０」の評価値（現ｃｏｓｔ＿０）と「１」の評価値（現ｃｏｓｔ＿１）とを現コスト記憶部３０に出力する。現コスト記憶部３０に格納された評価値（現ｃｏｓｔ＿０及び現ｃｏｓｔ＿１）は、一旦データメモリ２に格納された後、時間Ｔｉ−１の次ステージでは入力される評価値（前ｃｏｓｔ＿０及び前ｃｏｓｔ＿１）として使用される。
【００５６】
バックトレース演算部５２は、ステージ毎に「１」の確からしさ（尤度（＋））と「０」の確からしさ（尤度（−））とを尤度記憶部７０に出力する。
【００５７】
図９は、バックトレース演算部による最尤状態の設定処理を説明するためのフローチャート図である。図９において、バックトレース演算部５２は、前最尤状態と現在処理中の状態番号が一致するか否かを判断する（ステップＳ３１）。一致しない場合、バックトレース演算部５２は、現最尤状態レジスタ６０を更新することなくこの処理を終了する。
【００５８】
一方、一致する場合、バックトレース演算部５２は、現最尤状態レジスタ６０に前最尤状態を1ビット左シフトしたものを入力し（ステップＳ３２）、ステップＳ３１にて状態番号が一致したノードのパスメトリックの符号（極性（＋）を示す「０」又は極性（−）を示す「１」）を、状態のＬＳＢにセットして（ステップＳ３３）、この処理を終了する。前最尤状態と現在処理中の状態番号が一致するノードを最尤パスであるという。
【００５９】
続けて、バックトレース演算部５２は、処理中のノードの評価値を算出する評価値算出処理を行う。図１０は、バックトレース演算部による評価値算出処理を説明するためのフローチャート図である。図１０において、バックトレース演算部５２は、時間Ｔｉの現ステージの２つのノードのうち、１つのノードが最尤パスであったか否かを判断する（ステップＳ４１）。１つのノードが最尤パスであった場合、バックトレース演算部５２は、図１１に示す第一の評価値算出処理を行う（ステップＳ４３）。
【００６０】
一方、ステップＳ４１にて２つのノードとも非最尤パスであると判断した場合、又は、前最尤ノードが状態０、かつ、現最尤ノードが状態１である条件を満たさない場合、バックトレース演算部５２は、図１２に示す第二の評価値算出処理を行い（ステップＳ４４）、この処理を終了する。
【００６１】
以下、４状態の場合で図示し説明する。図１１は、図１０のステップＳ４３での第一の評価値算出処理を説明するための図である。図１１中、ノード１ａから１ｄが同一グループである。図１１に示す第一の評価値算出処理では、前最尤ノードが状態０、かつ、現最尤ノードが状態１である場合を例として説明する。
【００６２】
時間Ｔｉの現ステージにおいて、最尤パスのノードでない場合に、ノード１ａが評価値ｃｏｓｔ＿０を持つ上位ノードであり、ノード１ｂが評価値ｃｏｓｔ＿１を持つ下位ノードである。また、時間Ｔｉ＋１の前ステージにおいて、ノード１ｃがパスメトリックＰＭ＿０を持つ上位ノードあり、ノード１ｄがパスメトリックＰＭ＿１を持つ下位ノードである。
【００６３】
図１１では、前最尤ノードが状態０、かつ、現最尤ノードが状態１である条件を満たす場合を例示している。時間Ｔｉ＋１の前ステージにおけるノード１ｃ及び１ｄのうち状態０のノード１ｃが前最尤ノードであり、時間Ｔｉの現ステージにおけるノード１ａ及び１ｂのうち状態１のノード１ｂが現最尤ノードである。
【００６４】
バックトレース演算部５２は、時間Ｔｉ＋１の前ステージにおける最尤ノード（前最尤ノード）のパスメトリックの極性によって、現ステージにおいてどのノードから遷移したかを判別する。前ステージのノード１ｃは、現ステージのノード１ａから入力「０」で遷移した場合、極性はマイナス（−）を示し、現ステージのノード１ｂから入力「１」で遷移した場合、極性はプラス（＋）を示す。前ステージにおいて最尤ノードであったノード１ｃのパスメトリックの極性がプラス（＋）である場合に、図１０のステップＳ４２の条件が成立することになる。
【００６５】
バックトレース演算部５２は、現最尤ノード１ｂに対しては、評価値（コスト）を持たないことを示すｎｕｌｌ「∞」を設定する（ステップＳ４３−１）。次に、バックトレース演算部５２は、非最尤ノードであるノード１ａの評価値を決定する（ステップＳ４３−２）。バックトレース演算部５２は、前ステージのノード１ｃのパスメトリックＰＭ＿０とノード１ｄのＰＭ＿１の極性が異なる場合は、前ステージのノード１ｃとノード１ｄのうち小さい方の評価値を現ステージのノード１ａの評価値とする。一方、前ステージのノード１ｃのパスメトリックＰＭ＿０とノード１ｄのＰＭ＿１の極性が同じ場合は、ノード１ｃのＰＭ＿０をノード１ａの評価値とする。
【００６６】
図１２は、図１０のステップＳ４４での第二の評価値算出処理を説明するための図である。図１２において、現在処理中の同一グループにおいて前最尤ノード及び現最尤ノードが存在しない場合を例示している。現ステージのノード３ａ、３ｂ、及び前ステージのノード３ｃ、３ｄが同一グループである。
【００６７】
バックトレース演算部５２は、「０」の評価値を決定するための第一の対応表３４と「１」の評価値を決定するための第二の対応表３５とを所定の記憶領域又は処理手順のロジックとして有する。
【００６８】
第一の対応表３４は、前ステージのパスメトリックＰＭ＿０の極性と前ステージのパスメトリックＰＭ＿１の極性との４つの組み合わせによって、ノード３ａの評価値（ｃｏｓｔ＿０）を決定するための対応表である。バックトレース演算部５２は、以下のように評価値を決定する。
（１）ノード３ｃのＰＭ＿０の極性が「＋」、かつ、ノード３ｄのＰＭ＿１の極性が「＋」の場合、ノード３ｃの評価値（前ｃｏｓｔ＿０）とする。
（２）ノード３ｃのＰＭ＿０の極性が「＋」、かつ、ノード３ｄのＰＭ＿１の極性が「−」の場合、ノード３ｃ、３ｄのうち小さい方の評価値とする（ｍｉｎ（前ｃｏｓｔ＿０、前ｃｏｓｔ＿１））。
（３）ノード３ｃのＰＭ＿０の極性が「−」、かつ、ノード３ｄのＰＭ＿１の極性が「＋」の場合、ノード３ａへのパスが存在しないため、ｎｕｌｌ（∞）とする。
（４）ノード３ｃのＰＭ＿０の極性が「−」、かつ、ノード３ｄのＰＭ＿１の極性が「−」の場合、ノード３ｄの評価値とする（前ｃｏｓｔ＿１）。
【００６９】
第二の対応表３５は、前ステージのパスメトリックＰＭ＿０の極性と前ステージのパスメトリックＰＭ＿１の極性との４つの組み合わせによって、ノード３ｂの評価値（ｃｏｓｔ＿１）を決定するための対応表である。バックトレース演算部５２は、以下のように評価値を決定する。
（１）ノード３ｃのＰＭ＿０の極性が「＋」、かつ、ノード３ｄのＰＭ＿１の極性が「＋」の場合、ノード３ｄの評価値（前ｃｏｓｔ＿１）とする。
（２）ノード３ｃのＰＭ＿０の極性が「＋」、かつ、ノード３ｄのＰＭ＿１の極性が「−」の場合、ノード３ｂへのパスが存在しないため、ｎｕｌｌ（∞）とする。
（３）ノード３ｃのＰＭ＿０の極性が「−」、かつ、ノード３ｄのＰＭ＿１の極性が「＋」の場合、ノード３ｃ、３ｄのうち小さい方の評価値とする（ｍｉｎ（前ｃｏｓｔ＿０、前ｃｏｓｔ＿１））。
（４）ノード３ｃのＰＭ＿０の極性が「−」、かつ、ノード３ｄのＰＭ＿１の極性が「−」の場合、ノード３ｃの評価値とする（前ｃｏｓｔ＿０）。
【００７０】
続けて、バックトレース演算部５２は、尤度を更新する尤度更新処理を行う。図１３及び図１４は、バックトレース演算部による尤度更新処理を説明するためのフ図である。図１３では、前状態が前最尤状態である場合について説明する。図１３（Ａ）に示すフローチャートにおいて、バックトレース演算部５２は、時間Ｔｉ＋１の前状態が前最尤状態であるか否かについて判断する（ステップＳ５１）。例えば、図１３（Ｂ）の４状態の例における同一グループとするノード１ａから１ｄにおいて、ノード１ｃ（前状態）が前最尤ノード（前最尤状態）である。前状態が前最尤状態である場合、バックトレース演算部５２は、ステップＳ５２又はＳ５３のいずれか一方の処理を行う。
【００７１】
前最尤状態のパスメトリックＰＭの極性が＋、かつ、尤度（−）の値よりパスメトリックＰＭが小さい場合に、バックトレース演算部５２は、尤度（−）に前最尤状態のパスメトリックＰＭを入力して更新する（ステップＳ５２）。つまり、図１３（Ｂ）の４状態の例において、同一グループとするノード１ａから１ｄのうち、前最尤ノードであるノード１ｃのパスメトリックＰＭ＿０の極性が＋、かつ、尤度（−）レジスタ７０ｂの値より前ＰＭ記憶部４１のＰＭ＿０レジスタ４１ａに格納されているノード１ｃのパスメトリックＰＭ＿０が小さい場合に、尤度（−）レジスタ７０ｂにパスメトリックＰＭ＿０を入力して更新する。
【００７２】
又は、前最尤状態のパスメトリックＰＭの極性が−、かつ、尤度（＋）の値よりパスメトリックＰＭが小さい場合に、バックトレース演算部５２は、尤度（＋）に前最尤状態のパスメトリックＰＭを入力して更新する（ステップＳ５３）。つまり、図１３（Ｂ）の４状態の例において、前最尤ノードであるノード１ｃのパスメトリックＰＭ＿０の極性が−、かつ、尤度（＋）レジスタ７０ａの値より前ＰＭ記憶部４１のＰＭ＿１レジスタ４１ｂに格納されているノード１ｃのパスメトリックＰＭ＿０が小さい場合に、尤度（＋）レジスタ７０ａにパスメトリックＰＭ＿０を入力して更新する。
【００７３】
バックトレース演算部５２は、ステップＳ５２又はＳ５３のいずれか一方の処理を行った後、この処理を終了する。
【００７４】
一方、ステップＳ５１にて、前状態が前最尤状態でない場合、図１４に示すフローチャートへと進む。図１４では、前状態が前最尤状態でない場合について説明する。図１４（Ａ）に示すフローチャートにおいて、バックトレース演算部５２は、ステップＳ５４又はＳ５５のいずれか一方の処理を行う。
【００７５】
前状態のパスメトリックＰＭの極性が＋、かつ、尤度（＋）の値より前状態の評価値が小さい場合に、バックトレース演算部５２は、尤度（＋）に前状態の評価値を入力して更新する（ステップＳ５４）。つまり、図１４（Ｂ）の４状態の例において、同一グループとするノード１ａから１ｄのうち、前ステージで最尤ノードではないノード１ｄのパスメトリックＰＭ＿１の極性が＋、かつ、尤度（＋）レジスタ７０ａの値よりノード１ｄの評価値ｃｏｓｔ＿１が小さい場合に、尤度（＋）レジスタ７０ａに評価値ｃｏｓｔ＿１を入力して更新することになる。しかしながら、ノード１ｄの評価値ｃｏｓｔ＿１が尤度（＋）レジスタ７０ａの値以上である場合は、尤度（＋）レジスタ７０ａは更新されない。
【００７６】
又は、前状態のパスメトリックＰＭの極性が−、かつ、尤度（−）の値より前状態の評価値が小さい場合に、バックトレース演算部５２は、尤度（−）に前状態の評価値を入力して更新する（ステップＳ５５）。つまり、図１４（Ｂ）の４状態の例において、ステップＳ５４の説明と同様に、前ステージで最尤ノードではないノード１ｄのパスメトリックＰＭ＿１の極性が−、かつ、尤度（−）レジスタ７０ｂの値よりノード１ｄの評価値ｃｏｓｔ＿１が小さい場合に、尤度（−）レジスタ７０ｂに評価値ｃｏｓｔ＿１を入力して更新することになる。しかしながら、ノード１ｄの評価値ｃｏｓｔ＿１が尤度（−）レジスタ７０ｂの値以上である場合は、尤度（−）レジスタ７０ｂは更新されない。
【００７７】
また、図１４（Ｃ）に示す例では、同一グループとするノード３ａから３ｄでは最尤パスは存在しないため、現ステージ及び前ステージにおいても最尤ノードはない。従って、バックトレース演算部５２は、前ステージにおいて上位ノードのノード３ｃのパスメトリックＰＭ＿０の極性に応じて、尤度（＋）レジスタ７０ａ又は尤度（−）レジスタ７０ｂの値よりノード３ｃの評価値ｃｏｓｔ＿０が小さい場合に、ノード３ｃのパスメトリックＰＭ＿０の極性に対応する尤度（＋）レジスタ７０ａ又は尤度（−）レジスタ７０ｂにノード３ｃの評価値ｃｏｓｔ＿０を入力して更新する。
【００７８】
同様に、バックトレース演算部５２は、前ステージにおいて下位ノードのノード３ｄのパスメトリックＰＭ＿１の極性に応じて、尤度（＋）レジスタ７０ａ又は尤度（−）レジスタ７０ｂの値より評価値ｃｏｓｔ＿１が小さい場合に、ノード３ｄのパスメトリックＰＭ＿１の極性と対応する尤度（＋）レジスタ７０ａ又は尤度（−）レジスタ７０ｂにノード３ｄの評価値ｃｏｓｔ＿１を入力して更新する。
【００７９】
バックトレース演算部５２によって全グループに対する上述した処理が終了すると、尤度選択部５３による尤度出力処理（図３のステップＳ１３）が行われる。図１５は、尤度選択部による尤度出力処理を説明するためのフローチャート図である。図１５において、尤度選択部５３は、前最尤状態のＭＳＢが「０」であるか否かを判断する（ステップＳ６１）。前最尤状態のＭＳＢが「０」の場合、尤度選択部５３は、尤度（−）レジスタ７０ｂの値を軟判定結果としてデータメモリ２へ出力する（ステップＳ６２）。一方、前最尤状態のＭＳＢが「１」の場合、尤度選択部５３は、尤度（＋）レジスタ７０ａの値を軟判定結果としてデータメモリ２へ出力する（ステップＳ６３）。
【００８０】
上述した例では、現ステージと前ステージとで２ノードずつを１グループとした２並列で説明したが、グループを更に束ねることで、現ステージと前ステージとで４ノードずつを１グループとした４並列、８ノードずつを１グループとした８並列なども同様に実現可能である。
【００８１】
図１６は、４並列とした場合のグループ化の例を示す図である。図１６に示す例では、時間Ｔｉの現ステージにおいて、状態「０００」のノード５ａ、状態「００１」のノード５ｂ、状態「０１０」のノード５ｃ、及び状態「０１１」のノード５ｄと、時間Ｔｉ＋１の前ステージとにおいて、状態「０００」のノード５ｅ、状態「００１」のノード５ｆ、状態「１００」のノード５ｆ、及び状態「１０１」のノード５ｇと、をグループＧｃ１とする。
【００８２】
また、時間Ｔｉの現ステージにおいて、状態「１００」のノード６ａ、状態「１０１」のノード６ｂ、状態「１１０」のノード６ｃ、及び状態「１１１」のノード６ｄと、時間Ｔｉ＋１の前ステージとにおいて、状態「０１０」のノード６ｅ、状態「０１１」のノード６ｆ、状態「１１０」のノード６ｆ、及び状態「１１１」のノード６ｇと、をグループＧｃ１とする。
【００８３】
この４並列の例では、バックトレース演算部５２へ入力に関し、前コスト記憶部３１、及び前ＰＭ記憶部４１は、各々、４つのレジスタを有し、また、バックトレース演算部５２からの出力に関し、現コスト記憶部３０は、４つのレジスタを有するように構成される。状態ＩＤによるグループの指定は、状態番号０と、状態番号４で指定されることとなる。
【００８４】
同様なグループ化と、グループ化に対応した入力及び出力のレジスタ個数とすることによって、更に、８並列、１６並列への対応を可能とすることができる。一方で、１６並列可能なバックトレース演算部を実装し、４状態しかない無線規格に対応させた場合には、１２個分のレジスタが無駄になってしまうため、無線規格の現状に対応させた実装にすることが好ましい。例えば、４状態及び８状態の無線規格が主流であれば、２並列又は４並列に対応したバックトレース演算部を実装すればよい。
【００８５】
次に、プロセッサコア１０にバックトレース処理を行わせるための命令コードを有するソフトウェアと、命令コードに従って処理するプロセッサコア１０内部の動作とについて図１７から図２７で説明する。
【００８６】
図１７は、バックトレース処理を行うためのソフトウェアとプロセッサとの対応を説明するための図である。図１７において、プロセッサコア１０を動作させるソフトウェアとしてプログラム１ｐが例示されている。このプログラム１ｐはプログラムメモリ１に格納され、１ステップずつ命令コードがプロセッサコア１０に読み込まれて、ＦＥ／ＤＣ部３解釈され、演算器５に供給されることにより、アドレス生成部５１と、バックトレース演算部５２とによって、上述したようなバックトレース処理が実行される。
【００８７】
図１７では、バックトレース処理に係る主なハードウェア構成を示し、他を省略している。また、上記で既に説明した構成部については説明を省略し、アドレス生成部５１の構成について説明する。アドレス生成部５１は、プログラム１ｐとのインターフェースとして、状態ＩＤレジスタ８０と、状態数レジスタ８１と、ＰＭｉ＋１レジスタ８２と、Ｃｉ＋１レジスタ８３と、Ｃｉレジスタ８４と、出力レジスタ８５とを有する。
【００８８】
状態ＩＤレジスタ８０には、グループ内の現ステージにおける最も若い状態番号が格納される。例えば、各ステージにおいて、グループ毎に、０、２、４、６が指定される。状態数レジスタ８１には、無線規格に対応する状態数が格納され、全ステージに対する処理が終了するまで保持される。図７の状態数レジスタ２２から入力するようにしても良い。
【００８９】
ＰＭｉ＋１レジスタ８２は、時間Ｔｉ＋１の前ステージにおけるパスメトリックＰＭｉ＋１の格納領域の基準アドレスを格納する。例えば、前ステージにおけるパスメトリックＰＭｉ＋１の格納領域の先頭アドレスなどである。現ステージでのバックトレース処理終了時に、次ステージで参照される現ステージのパスメトリックＰＭｉの格納領域の先頭が示されるようにアドレスがインクリメントされる。
【００９０】
Ｃｉ＋１レジスタ８３は、時間Ｔｉ＋１の前ステージにおける評価値Ｃｉ＋１の格納領域の基準アドレスを格納する。例えば、前ステージにおける評価値Ｃｉ＋１の格納領域の先頭アドレスなどである。現ステージでのバックトレース処理終了時に、次ステージで参照される現ステージの評価値Ｃｉの格納領域の先頭が示されるようにアドレスがインクリメントされる。
【００９１】
Ｃｉレジスタ８４は、時間Ｔｉの現ステージにおける評価値Ｃｉの格納領域の基準アドレスを格納する。例えば、現ステージにおける評価値Ｃｉの格納領域の先頭アドレスなどである。現ステージでのバックトレース処理終了時に、次ステージで算出される評価値Ｃｉ−１の格納領域の先頭が示されるようにアドレスがインクリメントされる。
【００９２】
出力レジスタ８５は、ステージ毎のバックトレース処理終了時に得られる尤度を出力する格納領域の基準アドレスを格納する。尤度を出力後、次ステージでのバックトレース処理終了時に得られる尤度を出力する格納領域が示されるようにアドレスがインクリメントされる。
【００９３】
アドレス生成部５１は、これらレジスタ８０から８４を用いて、バックトレース演算部５２が必要とするデータの読み出しアドレスをデータメモリ２へ指示し、また、バックトレース演算部５２が出力する尤度を格納するための書き込みアドレスをデータメモリ２へ指示する。
【００９４】
プロセッサコア１０にバックトレース処理を行わせるためのプログラム１ｐは、初期値設定８ａと、演算ループ８ｂとを有する。初期値設定８ａでは、アドレス生成部５１のレジスタ８１から８５に設定されるアドレスの初期値が指定されている。演算ループ８ｂでは、信号長Ｎに基づいて、ステージ毎に状態ＩＤレジスタ８０に格納される状態ＩＤが指示され、出力レジスタ８５に格納される尤度を出力するアドレスの初期値が指定されている。
【００９５】
次に、プログラム１ｐのステップ毎のプロセッサコア１０の動作について説明する。図１８から図２７中、ステップ毎の命令コードに応じたプロセッサコア１０内の情報の流れを二重線で示してある。
【００９６】
図１８は、ステップ１に対する動作を示す図である。図１８において、プログラム１ｐが実行開始されると、ステップ１にて「tb_set_state_number 8」が実行され、アドレス生成部５１内の状態数８１に無線規格に応じた状態数が設定される。
【００９７】
図１９は、ステップ２に対する動作を示す図である。図１９において、プログラム１ｐのステップ２にて「tb_set_base_PM 0x10001000」が実行され、アドレス生成部５１内のＰＭｉ＋１レジスタ８２に前ステージのパスメトリックＰＭｉ＋１の基準アドレスが設定される。
【００９８】
図２０は、ステップ３に対する動作を示す図である。図２０において、プログラム１ｐのステップ３にて「tb_set_base_oldcost 0x10002000」が実行され、アドレス生成部５１内のＣｉ＋１レジスタ８３に前ステージの評価値Ｃｉ＋１の基準アドレスが設定される。
【００９９】
図２１は、ステップ４に対する動作を示す図である。図２１において、プログラム１ｐのステップ４にて「tb_set_base_cost 0x10003000」が実行され、アドレス生成部５１内のＣｉレジスタ８４に現ステージの評価値Ｃｉを格納するための基準アドレスが設定される。
【０１００】
図２２は、ステップ５に対する動作を示す図である。図２２において、プログラム１ｐのステップ５にて「tb_set_base_output 0x10004000」が実行され、アドレス生成部５１内の出力レジスタ８５に尤度を出力するための基準アドレスが設定される。
【０１０１】
図２３は、ステップ６に対する動作を示す図である。図２３において、プログラム１ｐのステップ６にて「tb_traceback 0」が実行され、現ステージにおいて状態０で決定されるグループで参照するパスメトリックＰＭｉ＋１と評価値Ｃｉ＋１とを読み出すためのアドレスと、評価値Ｃｉを書き込むためのアドレスとが、アドレス生成部５１からデータメモリ２へ送出される。
【０１０２】
一方、データメモリ２からは、読み出しアドレスによって読み出されたデータが、ＰＭ＿０レジスタ４１ａと、ＰＭ＿１レジスタ４１ｂと、前ｃｏｓｔ＿０レジスタ３１ａと、前ｃｏｓｔ＿１レジスタ３１ｂとに格納され、バックトレース演算部５２に入力される。そしてバックトレース処理による結果として、現ステージの指定されたグループにおける「０」の評価値と「１」の評価値とが対応する現ｃｏｓｔ＿０レジスタ３０ａと現ｃｏｓｔ＿１レジスタ３０ｂとからデータメモリ２へと書き込みアドレスに格納される。
【０１０３】
同時に、バックトレース演算部５２によって、現最尤ノードの状態番号が現最尤状態レジスタ６０に格納され、尤度（＋）レジスタ７０ａ及び尤度（−）レジスタ７０ｂは必要に応じて更新される。
【０１０４】
図２４は、ステップ７に対する動作を示す図である。図２４において、プログラム１ｐのステップ７にて「tb_traceback 2」が実行され、アドレス生成部５１に係る動作及びバックトレース演算部５２に係る動作は、ステップ６と同様である。
【０１０５】
図２５は、ステップ８に対する動作を示す図である。図２５において、プログラム１ｐのステップ８にて「tb_traceback 3」が実行され、アドレス生成部５１に係る動作及びバックトレース演算部５２に係る動作は、ステップ６と同様である。
【０１０６】
図２６は、ステップ９に対する動作を示す図である。図２６において、プログラム１ｐのステップ９にて「tb_traceback 4」が実行され、アドレス生成部５１に係る動作及びバックトレース演算部５２に係る動作は、ステップ６と同様である。
【０１０７】
図２７は、ステップ１０に対する動作を示す図である。図２７において、プログラム１ｐのステップ１０にて「tb_output」が実行され、尤度を出力するための出力アドレスが、アドレス生成部５１からデータメモリ２へ送出される。アドレス生成部５１は、次のステージのためにレジスタ８１から８５のアドレスをインクリメントする。一方、尤度選択部５３は、尤度（＋）レジスタ７０ａ又は尤度（−）レジスタ７０ｂから尤度を選択してデータメモリ２へ出力する。
【０１０８】
以降、ステップ６からステップ１０が、信号長Ｎによるステージ数分繰り返される。信号長Ｎが９（ステージ）の例で、上述したバックトレース処理によって最尤パスが決定される様子について図２８から図４１で説明する。
【０１０９】
図２８は、４つの状態を有する無線規格のトレリス線図の例を示す図である。図２８において、４つの状態がＳ００、Ｓ０１、Ｓ１０、及びＳ１１で示され、ステージ０からステージ９で示される信号長Ｎが「１０」の場合を例示している。このトレリス線図において、以下の図では、各ノードの下にパスメトリックの値を示し、最尤ノード及び最尤パスを太線で示す。
【０１１０】
ステージ９のパスメトリックを用いてステージ８の評価値を算出し、尤度を出力する仕組みについて図２９から図３１で説明する。図２９、図３０、及び図３１は、ステージ８とステージ９のノードのグループにおけるバックトレース処理を説明するための図である。図２９において、ステージ８の状態Ｓ００及び状態Ｓ１０のノードと、ステージ９の状態Ｓ００及び状態Ｓ１０のノードとがグループＧ８０でグループ化され処理対象となる。ステージ９の状態Ｓ００は最尤ノードであるため、パスメトリック「４．４」を持つが、評価値は存在しない（前ｃｏｓｔ＿０＝∞）。また、ステージ９の状態Ｓ１０は、バックトレース開始時には存在しないノードであるので、パスメトリック及び評価値は共に存在しない（ＰＭ＝∞及び前ｃｏｓｔ＿１＝∞）。
【０１１１】
図３０において、ステージ８の状態Ｓ００のノードが、ステージ９の最尤ノードである状態Ｓ００をビットシフトした値「０００」と、パスメトリック「４．４」の極性（＋）とによって、次最尤ノードとして設定される。また、最尤ノードは評価値を持たないため、評価値ｃｏｓｔ＿０には「∞」が設定される。一方、ステージ８の状態Ｓ０１のノードに対しては、ステージ９の最尤ノードのパスメトリック「４．４」が評価値ｃｏｓｔ＿１となる。そして、図３１に示されるように、ステージ８の全てのノードのうち最小の評価値「４．４」が、ステージ８の尤度とし出力されることが示される。
【０１１２】
ステージ８のパスメトリックを用いてステージ７の評価値を算出し、尤度を出力する仕組みについて図３２から図３６で説明する。図３２、図３３、図３４、図３５、及び図３６は、ステージ７とステージ８のノードのグループにおけるバックトレース処理を説明するための図である。図３２において、ステージ７の状態Ｓ００及び状態Ｓ１０のノードと、ステージ８の状態Ｓ００及び状態Ｓ１０のノードとがグループＧ７０でグループ化され処理対象となる。ステージ８の状態Ｓ００は最尤ノードであるため、パスメトリック「４．０」を持つが、評価値は存在しない（前ｃｏｓｔ＿０＝∞）。また、ステージ８の状態Ｓ１０は、バックトレース開始時には存在しないノードであるので、パスメトリック及び評価値は共に存在しない（ＰＭ＝∞及び前ｃｏｓｔ＿１＝∞）。
【０１１３】
図３３において、ステージ７の状態Ｓ００のノードが、ステージ８の最尤ノードである状態Ｓ００をビットシフトした値「０００」と、パスメトリック「４．０」の極性（＋）とによって、次最尤ノードとして設定される。また、最尤ノードは評価値を持たないため、評価値ｃｏｓｔ＿０には「∞」が設定される。一方、ステージ７の状態Ｓ０１のノードに対しては、ステージ８の最尤ノードのパスメトリック「４．０」が評価値ｃｏｓｔ＿１となる。
【０１１４】
図３４において、ステージ７の状態Ｓ１０及び状態Ｓ１１のノードと、ステージ８の状態Ｓ０１及び状態Ｓ１１のノードとがグループＧ７１でグループ化され処理対象となる。このグループＧ７１内の全ノードが非最尤ノードであり、グループＧ７１内に最尤パスは存在しない。従って、ステージ８の状態Ｓ０１のパスメトリックＰＭ＿０の極性と状態Ｓ１１のパスメトリックＰＭ＿１の極性との組み合わせによって、ステージ７の状態Ｓ１０及び状態Ｓ１１の評価値を算出する。
【０１１５】
従って、図３５に示すように、ステージ７における状態Ｓ１０の評価値ｃｏｓｔ＿０には「∞」が設定され、状態Ｓ１１の評価値ｃｏｓｔ＿１には「４．４」が設定される。そして、図３６に示されるように、ステージ７の全てのノードのうち最小の評価値「４．０」が、ステージ７の尤度として出力されることが示される。
【０１１６】
ステージ７のパスメトリックを用いてステージ６の評価値を算出し、尤度を出力する仕組みについて図３７から図４１で説明する。図３７、図３８、図３９、図４０、及び図４１は、ステージ６とステージ７のノードのグループにおけるバックトレース処理を説明するための図である。図３７において、ステージ６の状態Ｓ００及び状態Ｓ１０のノードと、ステージ７の状態Ｓ００及び状態Ｓ１０のノードとがグループＧ６０でグループ化され処理対象となる。ステージ７の状態Ｓ００は最尤ノードであるため、パスメトリック「４．６」を持つが、評価値は存在しない（前ｃｏｓｔ＿０＝∞）。ステージ７では、状態Ｓ１０のノードが存在し、パスメトリック「１．４」及び評価値は「∞」（前ｃｏｓｔ＿１＝∞）である。
【０１１７】
図３８において、ステージ６の状態Ｓ００のノードが、ステージ７の最尤ノードである状態Ｓ００をビットシフトした値「０００」と、パスメトリック「４．６」の極性（＋）とによって、次最尤ノードとして設定される。また、最尤ノードは評価値を持たないため、評価値ｃｏｓｔ＿０には「∞」が設定される。一方、ステージ６の状態Ｓ０１のノードに対しては、ステージ７の最尤ノードのパスメトリック「４．６」が評価値ｃｏｓｔ＿１となる。
【０１１８】
図３９において、ステージ６の状態Ｓ１０及び状態Ｓ１１のノードと、ステージ７の状態Ｓ０１及び状態Ｓ１１のノードとがグループＧ６１でグループ化され処理対象となる。このグループＧ６１内の全ノードが非最尤ノードであり、グループＧ６１内に最尤パスは存在しない。従って、ステージ７の状態Ｓ０１のパスメトリックＰＭ＿０の極性（−）と状態Ｓ１１のパスメトリックＰＭ＿１の極性（＋）との組み合わせによって、ステージ７の状態Ｓ１０及び状態Ｓ１１の評価値を算出する。
【０１１９】
従って、図４０に示すように、ステージ６における状態Ｓ１０の評価値ｃｏｓｔ＿０には「４．０」が設定され、状態Ｓ１１の評価値ｃｏｓｔ＿１には「∞」が設定される。そして、図４１に示されるように、ステージ６の全てのノードのうち最小の評価値「４．０」が、ステージ６の尤度として出力されることが示される。
【０１２０】
図４２は、送信側の畳み込み符号器の例を示す図である。図４２において、畳み込み符号器９は、例えば、３ＧＰＰ（3rd Generation Partnership Project）のＬＴＥ（Long Term Evolution）の無線規格に準拠した符号器であって、情報源の入力Ｃｋに対して、入力ビットの並び替えを行うターボ符号内部インターリーバー９０と、第一の要素符号化部９１と、第二の要素符号化部９２とを有する。
【０１２１】
第一及び第二の要素符号化部９１及び９２は、遅延素子Ｄ及び加算器で構成される畳み込み符号化部であり、入力データが順次シフトされ、それにより出力が生成され、一つの入力ストリームから複数の出力ストリームを生成して出力する。
【０１２２】
第一の要素符号化部９１において、スイッチＳＷ１は、入力が情報ビット（「０」又は「１」）の場合に、Ｃｋに接続して情報ビットを第一の要素符号化部９１に取り込む。第二の要素符号化部９２において、スイッチＳＷ２も同様に、入力が情報ビット（「０」又は「１」）の場合に、ターボ符号内部インターリーバー９０によってインターリーブされた（並べ替えられた）入力Ｃｋ’に接続して情報ビットを第二の要素符号化部９２に取り込む。
【０１２３】
第一の要素符号化部９１からのＸｋ及びＺｋによる２つの出力系列と、第二の要素符号化部９２からのＸ’ｋ及びＺ’ｋによる２つの出力系列とは、所定のアルゴリズムによって多重化され伝送路に出力される。本実施例に係るバックトレース処理は、このような図４２に示されるような送信側の符号器から送出される信号を復号する際に適用可能である。
【０１２４】
上述したように、本実施例に係る演算器５は、ＳＯＶＡ復号におけるバックトレース処理を高速、かつ、無線規格に柔軟に対応することができる。
【０１２５】
以上の説明に関し、更に以下の項を開示する。
（付記１）
畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、
時間Ｔｉの現ステージと時間Ｔｉ＋１の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、
同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、
を実行する復号方法。
（付記２）
前記演算手順は、前最尤状態と一致する状態が現ステージのグループ内に存在する場合、該前最尤状態を１ビット左シフトし、パスメトリックの極性を示す符号を最下位ビットに設定することによって、該現ステージでの最尤状態を特定し、評価値を持たないことを示す値を最尤状態の評価値として前記記憶領域に格納することを特徴とする付記１記載の復号方法。
（付記３）
前記演算手順は、同一グループ内において、現ステージの非最尤状態に対して、前ステージの各状態のパスメトリックの極性の組み合わせに応じて、何れか一状態の評価値又はパスメトリックを選択して、該非最尤状態の評価値として前記記憶領域に格納することを特徴とする付記１又は２記載の復号方法。
（付記４）
前記バックトレースの開始時に存在しない状態には、評価値が存在しないことを示す値を予め該記憶領域に格納しておくことを特徴とする付記１乃至３のいずれか一項記載の復号方法。
（付記５）
前記演算手順は、前状態が前ステージで最尤状態である場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と異なる極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該パスメトリックの値を入力することを特徴とする付記３又は４記載の復号方法。
（付記６）
前記演算手順は、前状態が前ステージで最尤状態でない場合、前ステージの最尤状態の評価値が該パスメトリックの極性と同じ極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該評価値を入力することを特徴とする付記３又は４記載の復号方法。
（付記７）
前ステージにおける最尤状態の最上位ビットが０の場合には負の極性の尤度のレジスタを選択し、一方、最上位ビットが１の場合には正の極性の尤度のレジスタを選択して出力する尤度選択手順を更に有することを特徴とする付記５又は６記載の復号方法。
（付記８）
前記状態特定手順は、前記状態識別情報を状態番号そのものとする状態と、該状態識別情報の最下位ビットを反転して状態番号とする状態と、を現ステージにおける２つの状態とし、該状態識別情報を１ビット右シフトして最上位ビットに０をセットした状態番号とする状態と、該状態識別情報を１ビット右シフトして最上位ビットに１をセットした状態番号とする状態と、を前ステージにおける２つの状態として、同一グループ内の４つの状態を特定し、前記最上位ビットは無線規格の状態数で定められることを特徴とする付記１乃至７のいずれか一項記載の復号方法。
（付記９）
畳み込み符号によるトレリス線図を用いたバックトレースにおいて、時間Ｔｉの現ステージにおいて順次グループ毎に指定する状態識別情報から、同一グループ内の現ステージ及び時間Ｔｉ＋１の前ステージの状態番号を特定して、同一グループ内の前ステージの状態のパスメトリックと評価値とを記憶領域から読み出すための読み出しアドレスと、同一グループ内の現ステージの状態の評価値の該記憶領域への書き込みアドレスとを算出するアドレス算出手段と、
同一グループ内において、前記読み出しアドレスから読み出された前ステージの状態のパスメトリック及び評価値を用いて現ステージの評価値を演算し、前記書き込みアドレスに該演算した評価値を書き込む演算手段と、
を有する演算器。
（付記１０）
前記演算手段は、同一グループ内において、現ステージの最尤状態以外の非最尤状態に対して、前ステージの各状態のパスメトリックの極性の組み合わせに応じて、何れか一状態の評価値又はパスメトリックを選択して、該非最尤状態の評価値として設定することを特徴とする付記９記載の演算器。
（付記１１）
前記演算手段は、現ステージの状態に遷移する前状態が前ステージで最尤状態である場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と異なる極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度に該パスメトリックの値を入力し、現ステージの状態に遷移する前状態が前ステージで最尤状態でない場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と同じ極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度に該パスメトリックの値を入力することを特徴とする付記１０記載の演算器。
（付記１２）
前ステージにおける最尤状態の最上位ビットが０の場合には負の極性の尤度を選択し、一方、最上位ビットが１の場合には正の極性の尤度を選択して出力する尤度選択手段を更に有することを特徴とする付記１１記載の復号方法。
【０１２６】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１２７】
１          プログラムメモリ
２          データメモリ
３          ＦＥ／ＤＣ部
４          実行部
５          演算器
６          ＡＬＵ
７          汎用レジスタ
１０        プロセッサ
２２        状態数
３０        現コスト記憶部
３１        前コスト記憶部
４１        前ＰＭ記憶部
５１        アドレス生成部
５２        バックトレース演算部
５３        尤度選択部
６０        現最尤状態レジスタ
６１        前最尤状態レジスタ
７０        尤度記憶部
８０        状態ＩＤ
８１        状態数レジスタ
８２        ＰＭｉ＋１レジスタ
８３        Ｃｉ＋１レジスタ
８４        Ｃｉレジスタ
８５        出力レジスタ
【図１】
2011135163.tif 000003
【図２】
2011135163.tif 000004
【図３】
2011135163.tif 000005
【図４】
2011135163.tif 000006
【図５】
2011135163.tif 000007
【図６】
2011135163.tif 000008
【図７】
2011135163.tif 000009
【図８】
2011135163.tif 000010
【図９】
2011135163.tif 000011
【図１０】
2011135163.tif 000012
【図１１】
2011135163.tif 000013
【図１２】
2011135163.tif 000014
【図１３】
2011135163.tif 000015
【図１４】
2011135163.tif 000016
【図１５】
2011135163.tif 000017
【図１６】
2011135163.tif 000018
【図１７】
2011135163.tif 000019
【図１８】
2011135163.tif 000020
【図１９】
2011135163.tif 000021
【図２０】
2011135163.tif 000022
【図２１】
2011135163.tif 000023
【図２２】
2011135163.tif 000024
【図２３】
2011135163.tif 000025
【図２４】
2011135163.tif 000026
【図２５】
2011135163.tif 000027
【図２６】
2011135163.tif 000028
【図２７】
2011135163.tif 000029
【図２８】
2011135163.tif 000030
【図２９】
2011135163.tif 000031
【図３０】
2011135163.tif 000032
【図３１】
2011135163.tif 000033
【図３２】
2011135163.tif 000034
【図３３】
2011135163.tif 000035
【図３４】
2011135163.tif 000036
【図３５】
2011135163.tif 000037
【図３６】
2011135163.tif 000038
【図３７】
2011135163.tif 000039
【図３８】
2011135163.tif 000040
【図３９】
2011135163.tif 000041
【図４０】
2011135163.tif 000042
【図４１】
2011135163.tif 000043
【図４２】
2011135163.tif 000044