JP2011135163A - 復号方法 - Google Patents

復号方法 Download PDF

Info

Publication number
JP2011135163A
JP2011135163A JP2009290648A JP2009290648A JP2011135163A JP 2011135163 A JP2011135163 A JP 2011135163A JP 2009290648 A JP2009290648 A JP 2009290648A JP 2009290648 A JP2009290648 A JP 2009290648A JP 2011135163 A JP2011135163 A JP 2011135163A
Authority
JP
Japan
Prior art keywords
state
stage
previous
node
evaluation value
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.)
Pending
Application number
JP2009290648A
Other languages
English (en)
Inventor
Masatoshi Mori
真寿 毛利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009290648A priority Critical patent/JP2011135163A/ja
Publication of JP2011135163A publication Critical patent/JP2011135163A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

【課題】 本発明の課題は、種々の無線規格に対応可能であって、かつ高速処理を可能とする軟判定ビタビアルゴリズムにおける復号方法を提供することを目的とする。
【解決手段】 上記課題は、畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、時間Tiの現ステージと時間Ti+1の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、を実行する復号方法により達成される。
【選択図】 図1

Description

本発明は、種々の無線規格に対応可能であって、かつ高速処理を可能とする軟判定ビタビアルゴリズムにおけるバックトレースによる復号方法に関する。
従来より、無線通信では、通信路のノイズなどへの対策のために複雑な復号処理が必要であり、その手法の一つにSOVA(Soft Output Viterbi Algorism)と呼ばれる方法がある。SOVA復号処理には大きな計算量が必要であり、ソフトウェアによりプロセッサによって処理させる場合には、その計算量が大きな課題となっている。
入力される符号ビットに対し、取りうる状態ビットのパスメトリックに応じて最尤の遷移元状態ビットを選択し、遷移元状態ビットそのものをサバイバルパスメモリ内に記憶することで、ソフトウェアによるバックトレース処理を簡素化することなどが提案されている(例えば、特許文献1を参照)。
特開2007−174561号公報
しかしながら、従来技術では無線規格に応じて状態数を変更することができないと言った問題があった。例えば、特許文献1では4状態数によるバックトレース処理が示されており、状態数を無線規格に応じて変更することはできない。また、ソフトウェアによる演算をハードウェアで構成して高速処理とする場合であっても、無線規格毎に異なるハードウェアが必要となり、種々の無線規格に対応するためには柔軟性に欠けるといった問題があった。
開示の技術は、畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、時間Tiの現ステージと時間Ti+1の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、を実行するように構成される。
開示の復号方法では、種々の無線規格に対応可能であって、かつ高速処理を可能とする軟判定ビタビアルゴリズムにおけるバックトレース処理を実現できる。
トレリス線図の特徴を利用した状態のグループ化を説明するための図である。 4状態を有する畳み込み符号におけるトレリス線図を示す図である。 バックトレース処理の全体処理を説明するための図である。 4状態の場合のコスト演算の処理過程を例示する図である。 バックトレース処理の開始時を例示する図である。 バックトレース処理を行うプロセッサコアの回路構成例を示す図である。 演算器の回路構成例を示す図である。 アドレス生成部による同一グループ内の4状態を特定する方法を説明するための図である。 バックトレース演算部による最尤状態の設定処理を説明するためのフローチャート図である。 バックトレース演算部による評価値算出処理を説明するためのフローチャート図である。 図10のステップS43での第一の評価値算出処理を説明するための図である。 図10のステップS44での第二の評価値算出処理を説明するための図である。 バックトレース演算部による尤度更新処理を説明するための図(その1)である。 バックトレース演算部による尤度更新処理を説明するための図(その2)である。 尤度選択部による尤度出力処理を説明するためのフローチャート図である。 4並列とした場合のグループ化の例を示す図である。 バックトレース処理を行うためのソフトウェアとプロセッサとの対応を説明するための図である。 ステップ1に対する動作を示す図である。 ステップ2に対する動作を示す図である。 ステップ3に対する動作を示す図である。 ステップ4に対する動作を示す図である。 ステップ5に対する動作を示す図である。 ステップ6に対する動作を示す図である。 ステップ7に対する動作を示す図である。 ステップ8に対する動作を示す図である。 ステップ9に対する動作を示す図である。 ステップ10に対する動作を示す図である。 4つの状態を有する無線規格のトレリス線図の例を示す図である。 ステージ8とステージ9のノードのグループにおけるバックトレース処理を説明するための図(その1)である。 ステージ8とステージ9のノードのグループにおけるバックトレース処理を説明するための図(その2)である。 ステージ8とステージ9のノードのグループにおけるバックトレース処理を説明するための図(その3)である。 ステージ7とステージ8のノードのグループにおけるバックトレース処理を説明するための図(その1)である。 ステージ7とステージ8のノードのグループにおけるバックトレース処理を説明するための図(その2)である。 ステージ7とステージ8のノードのグループにおけるバックトレース処理を説明するための図(その3)である。 ステージ7とステージ8のノードのグループにおけるバックトレース処理を説明するための図(その4)である。 ステージ7とステージ8のノードのグループにおけるバックトレース処理を説明するための図(その5)である。 ステージ6とステージ7のノードのグループにおけるバックトレース処理を説明するための図(その1)である。 ステージ6とステージ7のノードのグループにおけるバックトレース処理を説明するための図(その2)である。 ステージ6とステージ7のノードのグループにおけるバックトレース処理を説明するための図(その3)である。 ステージ6とステージ7のノードのグループにおけるバックトレース処理を説明するための図(その4)である。 ステージ6とステージ7のノードのグループにおけるバックトレース処理を説明するための図(その5)である。 送信側の畳み込み符号器の例を示す図である。
以下、本発明の実施の形態を図面に基づいて説明する。軟判定ビタビアルゴリズムに基づくSOVA復号処理は、通常、受信信号からパスメトリック(Path Metric)と呼ばれる評価値を計算して最大となる経路を選択する処理部(ACS:Add, Compare and Select)と、選択された経路をバックトレースして送信信号の「0」又は「1」の確からしさを示す尤度を出力するバックトレース処理部とを有する。
本実施例では、SOVA復号処理のうちバックトレース処理部に関し、送信側での畳み込み符号におけるトレリス線図の特徴を利用して、状態数の異なる無線規格に柔軟に対応可能とし汎用性を高めると共に高速処理を実現する。
図1は、トレリス線図の特徴を利用した状態のグループ化を説明するための図である。本実施例では、トレリス線図にける時間Tiと時間Ti+1との間で、2状態(以下、ノードとも言う)毎にグループ化を行う。発明者は、トレリス線図では時間Tiの2つの状態が時間Ti+1の2つの状態を決めていることに着目し、このトレリス線図の特徴を用いて状態をグループ化するものである。図1中及び以降のトレリス線図において、入力ビットが「0」の時の状態遷移を実線で示し、入力ビットが「1」の時の状態遷移を波線で示す。
例えば携帯電話での通信などの8状態を有する無線通信の場合について図1(A)で説明する。図1(A)では、状態「000」、状態「001」、状態「010」、状態「011」、状態「100」、状態「101」、状態「110」、状態「111」の順に8状態が示され、以下に説明するように、グループGa1からGa4の4組のグループに分けられる。
時間Tiの状態「000」及び状態「001」の2状態から時間Ti+1の状態「000」及び状態「100」の2状態が決まるため、これらの状態を1つのグループGa1とする。時間Tiの状態「010」及び状態「011」の2状態から時間Ti+1の状態「001」及び状態「101」の2状態が決まるため、これらの状態を1つのグループGa2とする。
時間Tiの状態「100」及び状態「101」の2状態から時間Ti+1の状態「010」及び状態「110」の2状態が決まるため、これらの状態を1つのグループGa3とする。時間Tiの状態「110」及び状態「111」の2状態から時間Ti+1の状態「011」及び状態「111」の2状態が決まるため、これらの状態を1つのグループGa4とする。
また、例えば無線LANによる通信などの4状態を有する無線通信の場合について図1(B)で説明する。図1(B)では、状態「000」、状態「001」、状態「010」、状態「011」の順に4状態が示され、以下に説明するように、グループGb1からGb2の2組のグループに分けられる。
時間Tiの状態「000」及び状態「001」の2状態から時間Ti+1の状態「000」及び状態「010」の2状態が決まるため、これらの状態を1つのグループGb1とする。時間Tiの状態「010」及び状態「011」の2状態から時間Ti+1の状態「001」及び状態「011」の2状態が決まるため、これらの状態を1つのグループGb2とする。
図2は、4状態を有する畳み込み符号におけるトレリス線図を示す図である。図2において、状態「00」を初期状態として開示し、例えば連続するゼロのデータ「000」を送信側と受信側とで既知となるテールビットによって状態「00」を終了状態とするトレリス線図が示されている。
このトレリス線図では、初期状態「00」において、情報源として「0」が入力された場合は「00」を出力し、状態は「00」のままとなる。一方、情報源として「1」が入力された場合は「11」を出力し、状態は「10」に遷移する。遷移した先の状態毎で同様の状態遷移を行う。各状態にて、「0」入力に応じた出力を実線側(ノードの右上)に( )内に示し、「1」入力に応じた出力を波線側(ノードの右下)の( )内に示している。
図1(B)で説明したグループ分けは、図2のトレリス線図の時間Tiと時間Ti+1においてグループGb1及びGb2で示される。各時間Tにおいて同様にグループ分けが可能である。このようにグループ化したノードに対する評価値を示すコストを演算するバックトレース処理を行う。
図3は、バックトレース処理の全体処理を説明するための図である。図3において、バックトレース処理は、時間Tiのステージにおいて、データメモリ2から時間Ti+1のパスメトリックPMi+1と、時間Ti+1のコストCi+1とを読み出して、パスメトリックPMi+1とコストCi+1とを用いて時間TiのコストCiを演算し、演算して得られたコストCiをデータメモリ2に格納し(ステップS11)、全グループについてコストCiを演算したか否かを判断する(ステップS12)。ステージ毎に、図1(A)に示す8状態の場合は4回繰り返し、図1(B)に示す4状態の場合は2回繰り返すことになる。
全グループについて終了していない場合、ステップS11に戻り、次のグループについてコストCiを演算する。一方、全グループについてコストCiの演算が終了している場合、演算したコストCiを用いて尤度を出力する(ステップS13)。
時間Tiのステージを終了する処理を行い(ステップS14)、時間Tiから1ステージ前の時間Ti−1に遡り、時間Ti−1のステージの有無より全ステージを終了したか否かを判断する(ステップS15)。時間Ti−1のステージが存在する場合、ステップS11へ戻り、時間Ti−1のステージの各グループについてコストCiを演算する処理を繰り返す。一方、全ステージを終了している場合、バックトレース処理を終了する。
図4は、4状態の場合のコスト演算の処理過程を例示する図である。図4(A)では、時間TiのステージにおけるグループGb1では、状態0に対しては、時間Ti+1のステージにおける状態0のコストCi+1とパスメトリックPMi+1とが用いられ、状態1に対しては、時間Ti+1のステージにおける状態2のコストCi+1とパスメトリックPMi+1とが用いられる。
次に、図4(B)に示されるように、時間Tiのステージにおける次のグループGb2では、状態2に対しては、時間Ti+1のステージにおける状態1のコストCi+1とパスメトリックPMi+1が用いられ、状態3に対しては、時間Ti+1のステージにおける状態3のコストCi+1とパスメトリックPMi+1とが用いられる。
このように時間Tiのステージにおける全グループが終了すると、図4(C)に示されるように、時間Ti−1のステージにて同様にグループGb1から開始され、時間Ti−1のステージにおけるグループGb1において、状態0に対しては、時間Tiのステージにおける状態0のコストCiとパスメトリックPMiとが用いられ、状態1に対しては、時間Tiのステージにおける状態2のコストCiとパスメトリックPMiとが用いられる。
一方で、バックトレース処理の開始時は、図2に示すように、終了状態から処理を開始するに際し、状態数が少なくパスメトリックが存在しない場合がある。図5は、バックトレース処理の開始時を例示する図である。図5において、図2の例において、時間Ti+1のステージが終了状態である場合、時間Ti+1のステージで存在しない状態1、2、3、及び時間Tiのステージで存在しない状態2、3に対して、入力「1」を推定するコストとパスメトリックとを無限大(∞)に設定することによって、他と同様の処理が可能となる。
SOVA復号処理において、上述したような無線規格の状態数に依存しないバックトレース処理を行うプロセッサコアの回路構成について説明する。
図6は、バックトレース処理を行うプロセッサコアの回路構成例を示す図である。図6において、バックトレース処理を行うプロセッサコア10は、命令コードをプログラムメモリ1から取り出してデコードするFE/DC部3と、バックトレース処理を実行する実行部4と、汎用レジスタ7とを有する。実行部4は、更に演算器5とALU6とを有する。
FE/DC部3にて順次取り込まれデコードされた命令コードに従って、実行部4の演算器5は、バックトレース処理を行う。汎用レジスタ7には、実行部4での処理に必要なデータやアドレス等が格納される。
図7は、演算器の回路構成例を示す図である。図7に示す演算器5は、アドレス生成部51と、バックトレース演算部52と、尤度選択部53と、状態数レジスタ22と、現コスト記憶部30と、前コスト記憶部31と、現PM記憶部40と、前PM記憶部41と、現最尤状態レジスタ60と、前最尤状態レジスタ61と、尤度記憶部70とを有する。
アドレス生成部51は、状態数レジスタ22に格納されている無線規格に応じた状態数と、上位プログラムから入力される状態番号を示す状態IDとを用いて、バックトレース演算部52がアクセスするデータメモリ2の読み出しアドレスと書き込みアドレスとを生成して、バックトレース演算部52に供給する。
状態IDとは、処理中の現在のステージにおける各グループ内の最も若い状態番号を言う。つまり、時間Tiを現在のステージ(以下、現ステージという)とし、時間Ti+1を前ステージとすると、図1(A)の8状態では、グループGa1を指定する場合は状態IDとして状態「000」を示す「0」が指定され、グループGa2を指定する場合は状態IDとして状態「010」を示す「2」が指定され、グループGa3を指定する場合は状態IDとして状態「100」を示す「4」が指定され、グループGa4を指定する場合は状態IDとして状態「110」を示す「6」が指定される。
また、状態ID「0」の場合、読み出しアドレスは、前ステージの状態「000」と状態「100」に係るアドレスであり、書き込みアドレスは、現ステージの状態「000」と状態「001」に係るアドレスとなる。他状態ID「2」、「4」、及び「6」についても、同様に図1(A)に示すグループ分けに従って、読み出しアドレスと書き込みアドレスとが、各々のステージにおける同一グループ内の2状態に係るアドレスとなる。
一方、図1(B)の4状態では、時間Tiを現在のステージとすると、グループGb1を指定する場合は状態IDとして状態「00」を示す「0」が指定され、グループGb2を指定する場合は状態IDとして状態「10」を示す「2」が指定される。8状態の場合と同様に、図1(B)に示すグループ分けに従って、読み出しアドレスと書き込みアドレスとが、各々のステージにおける同一グループ内の2状態に係るアドレスとなる。
バックトレース演算部52は、状態数レジスタ22から得られる無線規格に応じた状態数に基づいて、時間Tiを現ステージとして、上位から通知される状態ID毎に、同一クループ内の時間Ti+1の前ステージの2状態の「0」と「1」の各々の評価値とパスメトリックとを用いて、同一グループ内の時間Tiの現ステージの2状態の「0」と「1」の各々の評価値とパスメトリックとを演算し、前最尤状態から「0」と「1」の各々の確からしさと最尤状態とを、現ステージの2状態に対して演算する。
状態数レジスタ22は、1ステージ当たりの全状態数を示し、例えば、4、8、又は16状態を示す。状態数の指定に応じたバックトレース処理となるため、あらゆる無線規格に対応することができる。
前コスト記憶部31は、状態IDで指定される同一グループ内の前ステージにおける2状態に関して、各状態の「0」の評価値と「1」の評価値とを記憶する記憶部であり、アドレス生成部51によって生成された読み出しアドレスによってデータメモリ2から読み出された、時間Ti+1の「0」の評価値を格納する前cost_0レジスタ31aと、時間Ti+1の「1」の評価値を格納する前cost_1レジスタ31bとを有する。前cost_0レジスタ31aの評価値と、前cost_1レジスタ31bの評価値とは、バックトレース演算部52へ供給される。
前PM記憶部41は、状態IDで指定される同一グループ内の前ステージにおける2状態に関して、各状態の「0」のパスメトリックと「1」のパスメトリックとを記憶する記憶部であり、データメモリ2からアドレス生成部51によって生成された読み出しアドレスから読み出された、時間Ti+1の「0」のパスメトリックを格納するPM_0レジスタ41aと、時間Ti+1の「1」のパスメトリックを格納するPM_1レジスタ41bとを有する。PM_0レジスタ41aのパスメトリックと、PM_1レジスタ41bのパスメトリックとは、バックトレース演算部52へ供給される。
前最尤状態レジスタ61は、時間Tiを現ステージに対して、時間Ti+1の前ステージにおいて全ノード中で最尤状態であった状態番号が格納されているレジスタである。
現コスト記憶部30は、状態IDで指定される同一グループ内の現ステージにおける2状態に関して、各状態の「0」の評価値と「1」の評価値とを記憶する記憶部であり、時間Tiを現ステージとしてバックトレース演算部52によって得られた時間Tiの「0」の2状態の評価値を格納する現cost_0レジスタ30aと、時間Tiの「1」の2状態の評価値を格納する現cost_1レジスタ30bとを有する。現cost_0レジスタ30aの評価値と、現cost_1レジスタ30bの評価値とは、アドレス生成部51によって生成されたデータメモリ2の書き込みアドレスへと書き込まれる。
現最尤状態レジスタ60は、バックトレース演算部52によって得られた、時間Tiの現ステージの同一グループ内の2状態の最尤状態を格納するレジスタである。
尤度記憶部70は、時間Tiの現ステージにおける同一グループ内の2状態に関して、各状態の「0」と「1」の確からしさを示す尤度を記憶する記憶部であり、バックトレース演算部52によって得られた、時間Tiの2状態の「1」の尤度を記憶する尤度(+)レジスタ70aと、時間Tiの2状態の「0」の尤度を記憶する尤度(−)レジスタ70bとを有する。
尤度選択部53は、前最尤状態レジスタ61に格納されている時間Ti+1の前ステージの同一グループ内の2状態の尤度と、尤度記憶部70に格納されている時間Tiの現ステージの同一グループ内の2状態の「0」の尤度及び「1」の尤度とを用いて、現ステージの2状態の尤度を各々選択して、データメモリ2へ記憶する。
アドレス生成部51による状態数と状態IDとを用いたアドレス生成の方法について説明する。アドレス生成部51は、状態数と状態IDとに基づいて、評価値演算の対象となる時間Tiの現ステージでの2状態の状態番号を特定し、評価値演算に必要な同一グループ内の時間Ti+1の前ステージにおける2状態の状態番号を特定し、特定した4つの状態番号から夫々読み出す評価値のアドレス及び評価値を書き込むアドレスを演算して求める。
図8は、アドレス生成部による同一グループ内の4状態を特定する方法を説明するための図である。図8において、8状態を有する無線規格において状態ID「2」が指定された場合が示されている。
先ず、アドレス生成部51は、時間Tiにおける現ステージにおける2つのノード2a及び2bを特定する。ノード2aを上位ノード、及び、ノード2bを下位ノードと言う。アドレス生成部51は、状態ID「2」そのものから上位ノード2aは状態「010」であると特定する(ステップS21)。そして、状態ID「2」(=状態「010」)のLSB(Least Significant Bit:最下位ビット)を反転させて得た値「011」を上位ノード2bの状態として特定する(ステップS22)。
次に、アドレス生成部51は、時間Ti+1における前ステージにおける2つのノード2c及び2dを特定する。ノード2cを上位ノード、及び、ノード2dを下位ノードと言う。アドレス生成部51は、状態ID「2」(=状態「010」)を1ビット右シフトして、更にMSB(Most Significant Bit:最上位ビット)に「0」をセットして得た値「001」を上位ノード2cの状態として特定する(ステップS23)。そして、状態ID「2」(=状態「010」)を1ビット右シフトして、更にMSBに「1」をセットして得た値「101」を下位ノード2dの状態として特定する(ステップS24)。
MSBは、状態数で決められる。8状態であればMSBはビット2、一方、4状態であればMSBはビット1となる。
このようにして求めた同一グループ内の4つのノードの状態番号から、ノード2c及び2dから評価値とパスメトリックをデータメモリ2から読み出すためのメモリアドレスと、ノード2a及び2bから新たに算出した評価値をデータメモリ2に格納するためのメモリアドレスとを求める。
バックトレース演算部52での処理概要について説明する。図2を参照し、先ず、バックトレース演算部52への入力について説明する。バックトレース演算部52は、状態数レジスタ22で指定される1ステージ当たりの全状態数に応じたバックトレース処理を実行し、あらゆる無線規格に対応する。バックトレース演算部52は、状態数レジスタ22から入力される状態数と、上位から入力される状態IDとを用いて、アドレス生成部51と同様な方法によって、同一グループ内の4つのノードの状態番号を算出する。或いは、アドレス生成部51から供給されるようにしてもよい。
また、前最尤状態レジスタ61から入力される前最尤状態から前ステージでの全ノード中で最尤状態であった状態番号を参照することによって、現ステージの2つのノードの一方が最尤状態であるか否かを判断する。
前コスト記憶部31から入力される前ステージでの2つのノードの「0」の評価値(前cost_0)と「1」の評価値(前cost_1)とを用いて、現ステージの2つのノードの「0」及び「1」の評価値を算出する。ここで、前ステージでの2つのノードは、状態IDで指定される同一グループ内のノードである。
前PM記憶部41から入力されるACSで算出された前ステージでの「0」のパスメトリック(PM_0)と「1」のパスメトリック(PM_1)とを用いて、選択する評価値を決定する。ここで、前ステージでの2つのノードは、状態IDで指定される同一グループ内のノードである。
次に、図2を参照し、バックトレース演算部52からの出力について説明する。バックトレース演算部52は、現ステージにおける全ノード中の最尤状態を現最尤状態レジスタ60に出力する。現ステージの処理中は候補値として格納され、現ステージにおける全グループについて処理が終了すると、現最尤状態レジスタ60に格納されている最尤状態が前最尤状態レジスタ61にコピーされる。
バックトレース演算部52は、処理中の2つのノードに関する「0」の評価値(現cost_0)と「1」の評価値(現cost_1)とを現コスト記憶部30に出力する。現コスト記憶部30に格納された評価値(現cost_0及び現cost_1)は、一旦データメモリ2に格納された後、時間Ti−1の次ステージでは入力される評価値(前cost_0及び前cost_1)として使用される。
バックトレース演算部52は、ステージ毎に「1」の確からしさ(尤度(+))と「0」の確からしさ(尤度(−))とを尤度記憶部70に出力する。
図9は、バックトレース演算部による最尤状態の設定処理を説明するためのフローチャート図である。図9において、バックトレース演算部52は、前最尤状態と現在処理中の状態番号が一致するか否かを判断する(ステップS31)。一致しない場合、バックトレース演算部52は、現最尤状態レジスタ60を更新することなくこの処理を終了する。
一方、一致する場合、バックトレース演算部52は、現最尤状態レジスタ60に前最尤状態を1ビット左シフトしたものを入力し(ステップS32)、ステップS31にて状態番号が一致したノードのパスメトリックの符号(極性(+)を示す「0」又は極性(−)を示す「1」)を、状態のLSBにセットして(ステップS33)、この処理を終了する。前最尤状態と現在処理中の状態番号が一致するノードを最尤パスであるという。
続けて、バックトレース演算部52は、処理中のノードの評価値を算出する評価値算出処理を行う。図10は、バックトレース演算部による評価値算出処理を説明するためのフローチャート図である。図10において、バックトレース演算部52は、時間Tiの現ステージの2つのノードのうち、1つのノードが最尤パスであったか否かを判断する(ステップS41)。1つのノードが最尤パスであった場合、バックトレース演算部52は、図11に示す第一の評価値算出処理を行う(ステップS43)。
一方、ステップS41にて2つのノードとも非最尤パスであると判断した場合、又は、前最尤ノードが状態0、かつ、現最尤ノードが状態1である条件を満たさない場合、バックトレース演算部52は、図12に示す第二の評価値算出処理を行い(ステップS44)、この処理を終了する。
以下、4状態の場合で図示し説明する。図11は、図10のステップS43での第一の評価値算出処理を説明するための図である。図11中、ノード1aから1dが同一グループである。図11に示す第一の評価値算出処理では、前最尤ノードが状態0、かつ、現最尤ノードが状態1である場合を例として説明する。
時間Tiの現ステージにおいて、最尤パスのノードでない場合に、ノード1aが評価値cost_0を持つ上位ノードであり、ノード1bが評価値cost_1を持つ下位ノードである。また、時間Ti+1の前ステージにおいて、ノード1cがパスメトリックPM_0を持つ上位ノードあり、ノード1dがパスメトリックPM_1を持つ下位ノードである。
図11では、前最尤ノードが状態0、かつ、現最尤ノードが状態1である条件を満たす場合を例示している。時間Ti+1の前ステージにおけるノード1c及び1dのうち状態0のノード1cが前最尤ノードであり、時間Tiの現ステージにおけるノード1a及び1bのうち状態1のノード1bが現最尤ノードである。
バックトレース演算部52は、時間Ti+1の前ステージにおける最尤ノード(前最尤ノード)のパスメトリックの極性によって、現ステージにおいてどのノードから遷移したかを判別する。前ステージのノード1cは、現ステージのノード1aから入力「0」で遷移した場合、極性はマイナス(−)を示し、現ステージのノード1bから入力「1」で遷移した場合、極性はプラス(+)を示す。前ステージにおいて最尤ノードであったノード1cのパスメトリックの極性がプラス(+)である場合に、図10のステップS42の条件が成立することになる。
バックトレース演算部52は、現最尤ノード1bに対しては、評価値(コスト)を持たないことを示すnull「∞」を設定する(ステップS43−1)。次に、バックトレース演算部52は、非最尤ノードであるノード1aの評価値を決定する(ステップS43−2)。バックトレース演算部52は、前ステージのノード1cのパスメトリックPM_0とノード1dのPM_1の極性が異なる場合は、前ステージのノード1cとノード1dのうち小さい方の評価値を現ステージのノード1aの評価値とする。一方、前ステージのノード1cのパスメトリックPM_0とノード1dのPM_1の極性が同じ場合は、ノード1cのPM_0をノード1aの評価値とする。
図12は、図10のステップS44での第二の評価値算出処理を説明するための図である。図12において、現在処理中の同一グループにおいて前最尤ノード及び現最尤ノードが存在しない場合を例示している。現ステージのノード3a、3b、及び前ステージのノード3c、3dが同一グループである。
バックトレース演算部52は、「0」の評価値を決定するための第一の対応表34と「1」の評価値を決定するための第二の対応表35とを所定の記憶領域又は処理手順のロジックとして有する。
第一の対応表34は、前ステージのパスメトリックPM_0の極性と前ステージのパスメトリックPM_1の極性との4つの組み合わせによって、ノード3aの評価値(cost_0)を決定するための対応表である。バックトレース演算部52は、以下のように評価値を決定する。
(1)ノード3cのPM_0の極性が「+」、かつ、ノード3dのPM_1の極性が「+」の場合、ノード3cの評価値(前cost_0)とする。
(2)ノード3cのPM_0の極性が「+」、かつ、ノード3dのPM_1の極性が「−」の場合、ノード3c、3dのうち小さい方の評価値とする(min(前cost_0、前cost_1))。
(3)ノード3cのPM_0の極性が「−」、かつ、ノード3dのPM_1の極性が「+」の場合、ノード3aへのパスが存在しないため、null(∞)とする。
(4)ノード3cのPM_0の極性が「−」、かつ、ノード3dのPM_1の極性が「−」の場合、ノード3dの評価値とする(前cost_1)。
第二の対応表35は、前ステージのパスメトリックPM_0の極性と前ステージのパスメトリックPM_1の極性との4つの組み合わせによって、ノード3bの評価値(cost_1)を決定するための対応表である。バックトレース演算部52は、以下のように評価値を決定する。
(1)ノード3cのPM_0の極性が「+」、かつ、ノード3dのPM_1の極性が「+」の場合、ノード3dの評価値(前cost_1)とする。
(2)ノード3cのPM_0の極性が「+」、かつ、ノード3dのPM_1の極性が「−」の場合、ノード3bへのパスが存在しないため、null(∞)とする。
(3)ノード3cのPM_0の極性が「−」、かつ、ノード3dのPM_1の極性が「+」の場合、ノード3c、3dのうち小さい方の評価値とする(min(前cost_0、前cost_1))。
(4)ノード3cのPM_0の極性が「−」、かつ、ノード3dのPM_1の極性が「−」の場合、ノード3cの評価値とする(前cost_0)。
続けて、バックトレース演算部52は、尤度を更新する尤度更新処理を行う。図13及び図14は、バックトレース演算部による尤度更新処理を説明するためのフ図である。図13では、前状態が前最尤状態である場合について説明する。図13(A)に示すフローチャートにおいて、バックトレース演算部52は、時間Ti+1の前状態が前最尤状態であるか否かについて判断する(ステップS51)。例えば、図13(B)の4状態の例における同一グループとするノード1aから1dにおいて、ノード1c(前状態)が前最尤ノード(前最尤状態)である。前状態が前最尤状態である場合、バックトレース演算部52は、ステップS52又はS53のいずれか一方の処理を行う。
前最尤状態のパスメトリックPMの極性が+、かつ、尤度(−)の値よりパスメトリックPMが小さい場合に、バックトレース演算部52は、尤度(−)に前最尤状態のパスメトリックPMを入力して更新する(ステップS52)。つまり、図13(B)の4状態の例において、同一グループとするノード1aから1dのうち、前最尤ノードであるノード1cのパスメトリックPM_0の極性が+、かつ、尤度(−)レジスタ70bの値より前PM記憶部41のPM_0レジスタ41aに格納されているノード1cのパスメトリックPM_0が小さい場合に、尤度(−)レジスタ70bにパスメトリックPM_0を入力して更新する。
又は、前最尤状態のパスメトリックPMの極性が−、かつ、尤度(+)の値よりパスメトリックPMが小さい場合に、バックトレース演算部52は、尤度(+)に前最尤状態のパスメトリックPMを入力して更新する(ステップS53)。つまり、図13(B)の4状態の例において、前最尤ノードであるノード1cのパスメトリックPM_0の極性が−、かつ、尤度(+)レジスタ70aの値より前PM記憶部41のPM_1レジスタ41bに格納されているノード1cのパスメトリックPM_0が小さい場合に、尤度(+)レジスタ70aにパスメトリックPM_0を入力して更新する。
バックトレース演算部52は、ステップS52又はS53のいずれか一方の処理を行った後、この処理を終了する。
一方、ステップS51にて、前状態が前最尤状態でない場合、図14に示すフローチャートへと進む。図14では、前状態が前最尤状態でない場合について説明する。図14(A)に示すフローチャートにおいて、バックトレース演算部52は、ステップS54又はS55のいずれか一方の処理を行う。
前状態のパスメトリックPMの極性が+、かつ、尤度(+)の値より前状態の評価値が小さい場合に、バックトレース演算部52は、尤度(+)に前状態の評価値を入力して更新する(ステップS54)。つまり、図14(B)の4状態の例において、同一グループとするノード1aから1dのうち、前ステージで最尤ノードではないノード1dのパスメトリックPM_1の極性が+、かつ、尤度(+)レジスタ70aの値よりノード1dの評価値cost_1が小さい場合に、尤度(+)レジスタ70aに評価値cost_1を入力して更新することになる。しかしながら、ノード1dの評価値cost_1が尤度(+)レジスタ70aの値以上である場合は、尤度(+)レジスタ70aは更新されない。
又は、前状態のパスメトリックPMの極性が−、かつ、尤度(−)の値より前状態の評価値が小さい場合に、バックトレース演算部52は、尤度(−)に前状態の評価値を入力して更新する(ステップS55)。つまり、図14(B)の4状態の例において、ステップS54の説明と同様に、前ステージで最尤ノードではないノード1dのパスメトリックPM_1の極性が−、かつ、尤度(−)レジスタ70bの値よりノード1dの評価値cost_1が小さい場合に、尤度(−)レジスタ70bに評価値cost_1を入力して更新することになる。しかしながら、ノード1dの評価値cost_1が尤度(−)レジスタ70bの値以上である場合は、尤度(−)レジスタ70bは更新されない。
また、図14(C)に示す例では、同一グループとするノード3aから3dでは最尤パスは存在しないため、現ステージ及び前ステージにおいても最尤ノードはない。従って、バックトレース演算部52は、前ステージにおいて上位ノードのノード3cのパスメトリックPM_0の極性に応じて、尤度(+)レジスタ70a又は尤度(−)レジスタ70bの値よりノード3cの評価値cost_0が小さい場合に、ノード3cのパスメトリックPM_0の極性に対応する尤度(+)レジスタ70a又は尤度(−)レジスタ70bにノード3cの評価値cost_0を入力して更新する。
同様に、バックトレース演算部52は、前ステージにおいて下位ノードのノード3dのパスメトリックPM_1の極性に応じて、尤度(+)レジスタ70a又は尤度(−)レジスタ70bの値より評価値cost_1が小さい場合に、ノード3dのパスメトリックPM_1の極性と対応する尤度(+)レジスタ70a又は尤度(−)レジスタ70bにノード3dの評価値cost_1を入力して更新する。
バックトレース演算部52によって全グループに対する上述した処理が終了すると、尤度選択部53による尤度出力処理(図3のステップS13)が行われる。図15は、尤度選択部による尤度出力処理を説明するためのフローチャート図である。図15において、尤度選択部53は、前最尤状態のMSBが「0」であるか否かを判断する(ステップS61)。前最尤状態のMSBが「0」の場合、尤度選択部53は、尤度(−)レジスタ70bの値を軟判定結果としてデータメモリ2へ出力する(ステップS62)。一方、前最尤状態のMSBが「1」の場合、尤度選択部53は、尤度(+)レジスタ70aの値を軟判定結果としてデータメモリ2へ出力する(ステップS63)。
上述した例では、現ステージと前ステージとで2ノードずつを1グループとした2並列で説明したが、グループを更に束ねることで、現ステージと前ステージとで4ノードずつを1グループとした4並列、8ノードずつを1グループとした8並列なども同様に実現可能である。
図16は、4並列とした場合のグループ化の例を示す図である。図16に示す例では、時間Tiの現ステージにおいて、状態「000」のノード5a、状態「001」のノード5b、状態「010」のノード5c、及び状態「011」のノード5dと、時間Ti+1の前ステージとにおいて、状態「000」のノード5e、状態「001」のノード5f、状態「100」のノード5f、及び状態「101」のノード5gと、をグループGc1とする。
また、時間Tiの現ステージにおいて、状態「100」のノード6a、状態「101」のノード6b、状態「110」のノード6c、及び状態「111」のノード6dと、時間Ti+1の前ステージとにおいて、状態「010」のノード6e、状態「011」のノード6f、状態「110」のノード6f、及び状態「111」のノード6gと、をグループGc1とする。
この4並列の例では、バックトレース演算部52へ入力に関し、前コスト記憶部31、及び前PM記憶部41は、各々、4つのレジスタを有し、また、バックトレース演算部52からの出力に関し、現コスト記憶部30は、4つのレジスタを有するように構成される。状態IDによるグループの指定は、状態番号0と、状態番号4で指定されることとなる。
同様なグループ化と、グループ化に対応した入力及び出力のレジスタ個数とすることによって、更に、8並列、16並列への対応を可能とすることができる。一方で、16並列可能なバックトレース演算部を実装し、4状態しかない無線規格に対応させた場合には、12個分のレジスタが無駄になってしまうため、無線規格の現状に対応させた実装にすることが好ましい。例えば、4状態及び8状態の無線規格が主流であれば、2並列又は4並列に対応したバックトレース演算部を実装すればよい。
次に、プロセッサコア10にバックトレース処理を行わせるための命令コードを有するソフトウェアと、命令コードに従って処理するプロセッサコア10内部の動作とについて図17から図27で説明する。
図17は、バックトレース処理を行うためのソフトウェアとプロセッサとの対応を説明するための図である。図17において、プロセッサコア10を動作させるソフトウェアとしてプログラム1pが例示されている。このプログラム1pはプログラムメモリ1に格納され、1ステップずつ命令コードがプロセッサコア10に読み込まれて、FE/DC部3解釈され、演算器5に供給されることにより、アドレス生成部51と、バックトレース演算部52とによって、上述したようなバックトレース処理が実行される。
図17では、バックトレース処理に係る主なハードウェア構成を示し、他を省略している。また、上記で既に説明した構成部については説明を省略し、アドレス生成部51の構成について説明する。アドレス生成部51は、プログラム1pとのインターフェースとして、状態IDレジスタ80と、状態数レジスタ81と、PMi+1レジスタ82と、Ci+1レジスタ83と、Ciレジスタ84と、出力レジスタ85とを有する。
状態IDレジスタ80には、グループ内の現ステージにおける最も若い状態番号が格納される。例えば、各ステージにおいて、グループ毎に、0、2、4、6が指定される。状態数レジスタ81には、無線規格に対応する状態数が格納され、全ステージに対する処理が終了するまで保持される。図7の状態数レジスタ22から入力するようにしても良い。
PMi+1レジスタ82は、時間Ti+1の前ステージにおけるパスメトリックPMi+1の格納領域の基準アドレスを格納する。例えば、前ステージにおけるパスメトリックPMi+1の格納領域の先頭アドレスなどである。現ステージでのバックトレース処理終了時に、次ステージで参照される現ステージのパスメトリックPMiの格納領域の先頭が示されるようにアドレスがインクリメントされる。
Ci+1レジスタ83は、時間Ti+1の前ステージにおける評価値Ci+1の格納領域の基準アドレスを格納する。例えば、前ステージにおける評価値Ci+1の格納領域の先頭アドレスなどである。現ステージでのバックトレース処理終了時に、次ステージで参照される現ステージの評価値Ciの格納領域の先頭が示されるようにアドレスがインクリメントされる。
Ciレジスタ84は、時間Tiの現ステージにおける評価値Ciの格納領域の基準アドレスを格納する。例えば、現ステージにおける評価値Ciの格納領域の先頭アドレスなどである。現ステージでのバックトレース処理終了時に、次ステージで算出される評価値Ci−1の格納領域の先頭が示されるようにアドレスがインクリメントされる。
出力レジスタ85は、ステージ毎のバックトレース処理終了時に得られる尤度を出力する格納領域の基準アドレスを格納する。尤度を出力後、次ステージでのバックトレース処理終了時に得られる尤度を出力する格納領域が示されるようにアドレスがインクリメントされる。
アドレス生成部51は、これらレジスタ80から84を用いて、バックトレース演算部52が必要とするデータの読み出しアドレスをデータメモリ2へ指示し、また、バックトレース演算部52が出力する尤度を格納するための書き込みアドレスをデータメモリ2へ指示する。
プロセッサコア10にバックトレース処理を行わせるためのプログラム1pは、初期値設定8aと、演算ループ8bとを有する。初期値設定8aでは、アドレス生成部51のレジスタ81から85に設定されるアドレスの初期値が指定されている。演算ループ8bでは、信号長Nに基づいて、ステージ毎に状態IDレジスタ80に格納される状態IDが指示され、出力レジスタ85に格納される尤度を出力するアドレスの初期値が指定されている。
次に、プログラム1pのステップ毎のプロセッサコア10の動作について説明する。図18から図27中、ステップ毎の命令コードに応じたプロセッサコア10内の情報の流れを二重線で示してある。
図18は、ステップ1に対する動作を示す図である。図18において、プログラム1pが実行開始されると、ステップ1にて「tb_set_state_number 8」が実行され、アドレス生成部51内の状態数81に無線規格に応じた状態数が設定される。
図19は、ステップ2に対する動作を示す図である。図19において、プログラム1pのステップ2にて「tb_set_base_PM 0x10001000」が実行され、アドレス生成部51内のPMi+1レジスタ82に前ステージのパスメトリックPMi+1の基準アドレスが設定される。
図20は、ステップ3に対する動作を示す図である。図20において、プログラム1pのステップ3にて「tb_set_base_oldcost 0x10002000」が実行され、アドレス生成部51内のCi+1レジスタ83に前ステージの評価値Ci+1の基準アドレスが設定される。
図21は、ステップ4に対する動作を示す図である。図21において、プログラム1pのステップ4にて「tb_set_base_cost 0x10003000」が実行され、アドレス生成部51内のCiレジスタ84に現ステージの評価値Ciを格納するための基準アドレスが設定される。
図22は、ステップ5に対する動作を示す図である。図22において、プログラム1pのステップ5にて「tb_set_base_output 0x10004000」が実行され、アドレス生成部51内の出力レジスタ85に尤度を出力するための基準アドレスが設定される。
図23は、ステップ6に対する動作を示す図である。図23において、プログラム1pのステップ6にて「tb_traceback 0」が実行され、現ステージにおいて状態0で決定されるグループで参照するパスメトリックPMi+1と評価値Ci+1とを読み出すためのアドレスと、評価値Ciを書き込むためのアドレスとが、アドレス生成部51からデータメモリ2へ送出される。
一方、データメモリ2からは、読み出しアドレスによって読み出されたデータが、PM_0レジスタ41aと、PM_1レジスタ41bと、前cost_0レジスタ31aと、前cost_1レジスタ31bとに格納され、バックトレース演算部52に入力される。そしてバックトレース処理による結果として、現ステージの指定されたグループにおける「0」の評価値と「1」の評価値とが対応する現cost_0レジスタ30aと現cost_1レジスタ30bとからデータメモリ2へと書き込みアドレスに格納される。
同時に、バックトレース演算部52によって、現最尤ノードの状態番号が現最尤状態レジスタ60に格納され、尤度(+)レジスタ70a及び尤度(−)レジスタ70bは必要に応じて更新される。
図24は、ステップ7に対する動作を示す図である。図24において、プログラム1pのステップ7にて「tb_traceback 2」が実行され、アドレス生成部51に係る動作及びバックトレース演算部52に係る動作は、ステップ6と同様である。
図25は、ステップ8に対する動作を示す図である。図25において、プログラム1pのステップ8にて「tb_traceback 3」が実行され、アドレス生成部51に係る動作及びバックトレース演算部52に係る動作は、ステップ6と同様である。
図26は、ステップ9に対する動作を示す図である。図26において、プログラム1pのステップ9にて「tb_traceback 4」が実行され、アドレス生成部51に係る動作及びバックトレース演算部52に係る動作は、ステップ6と同様である。
図27は、ステップ10に対する動作を示す図である。図27において、プログラム1pのステップ10にて「tb_output」が実行され、尤度を出力するための出力アドレスが、アドレス生成部51からデータメモリ2へ送出される。アドレス生成部51は、次のステージのためにレジスタ81から85のアドレスをインクリメントする。一方、尤度選択部53は、尤度(+)レジスタ70a又は尤度(−)レジスタ70bから尤度を選択してデータメモリ2へ出力する。
以降、ステップ6からステップ10が、信号長Nによるステージ数分繰り返される。信号長Nが9(ステージ)の例で、上述したバックトレース処理によって最尤パスが決定される様子について図28から図41で説明する。
図28は、4つの状態を有する無線規格のトレリス線図の例を示す図である。図28において、4つの状態がS00、S01、S10、及びS11で示され、ステージ0からステージ9で示される信号長Nが「10」の場合を例示している。このトレリス線図において、以下の図では、各ノードの下にパスメトリックの値を示し、最尤ノード及び最尤パスを太線で示す。
ステージ9のパスメトリックを用いてステージ8の評価値を算出し、尤度を出力する仕組みについて図29から図31で説明する。図29、図30、及び図31は、ステージ8とステージ9のノードのグループにおけるバックトレース処理を説明するための図である。図29において、ステージ8の状態S00及び状態S10のノードと、ステージ9の状態S00及び状態S10のノードとがグループG80でグループ化され処理対象となる。ステージ9の状態S00は最尤ノードであるため、パスメトリック「4.4」を持つが、評価値は存在しない(前cost_0=∞)。また、ステージ9の状態S10は、バックトレース開始時には存在しないノードであるので、パスメトリック及び評価値は共に存在しない(PM=∞及び前cost_1=∞)。
図30において、ステージ8の状態S00のノードが、ステージ9の最尤ノードである状態S00をビットシフトした値「000」と、パスメトリック「4.4」の極性(+)とによって、次最尤ノードとして設定される。また、最尤ノードは評価値を持たないため、評価値cost_0には「∞」が設定される。一方、ステージ8の状態S01のノードに対しては、ステージ9の最尤ノードのパスメトリック「4.4」が評価値cost_1となる。そして、図31に示されるように、ステージ8の全てのノードのうち最小の評価値「4.4」が、ステージ8の尤度とし出力されることが示される。
ステージ8のパスメトリックを用いてステージ7の評価値を算出し、尤度を出力する仕組みについて図32から図36で説明する。図32、図33、図34、図35、及び図36は、ステージ7とステージ8のノードのグループにおけるバックトレース処理を説明するための図である。図32において、ステージ7の状態S00及び状態S10のノードと、ステージ8の状態S00及び状態S10のノードとがグループG70でグループ化され処理対象となる。ステージ8の状態S00は最尤ノードであるため、パスメトリック「4.0」を持つが、評価値は存在しない(前cost_0=∞)。また、ステージ8の状態S10は、バックトレース開始時には存在しないノードであるので、パスメトリック及び評価値は共に存在しない(PM=∞及び前cost_1=∞)。
図33において、ステージ7の状態S00のノードが、ステージ8の最尤ノードである状態S00をビットシフトした値「000」と、パスメトリック「4.0」の極性(+)とによって、次最尤ノードとして設定される。また、最尤ノードは評価値を持たないため、評価値cost_0には「∞」が設定される。一方、ステージ7の状態S01のノードに対しては、ステージ8の最尤ノードのパスメトリック「4.0」が評価値cost_1となる。
図34において、ステージ7の状態S10及び状態S11のノードと、ステージ8の状態S01及び状態S11のノードとがグループG71でグループ化され処理対象となる。このグループG71内の全ノードが非最尤ノードであり、グループG71内に最尤パスは存在しない。従って、ステージ8の状態S01のパスメトリックPM_0の極性と状態S11のパスメトリックPM_1の極性との組み合わせによって、ステージ7の状態S10及び状態S11の評価値を算出する。
従って、図35に示すように、ステージ7における状態S10の評価値cost_0には「∞」が設定され、状態S11の評価値cost_1には「4.4」が設定される。そして、図36に示されるように、ステージ7の全てのノードのうち最小の評価値「4.0」が、ステージ7の尤度として出力されることが示される。
ステージ7のパスメトリックを用いてステージ6の評価値を算出し、尤度を出力する仕組みについて図37から図41で説明する。図37、図38、図39、図40、及び図41は、ステージ6とステージ7のノードのグループにおけるバックトレース処理を説明するための図である。図37において、ステージ6の状態S00及び状態S10のノードと、ステージ7の状態S00及び状態S10のノードとがグループG60でグループ化され処理対象となる。ステージ7の状態S00は最尤ノードであるため、パスメトリック「4.6」を持つが、評価値は存在しない(前cost_0=∞)。ステージ7では、状態S10のノードが存在し、パスメトリック「1.4」及び評価値は「∞」(前cost_1=∞)である。
図38において、ステージ6の状態S00のノードが、ステージ7の最尤ノードである状態S00をビットシフトした値「000」と、パスメトリック「4.6」の極性(+)とによって、次最尤ノードとして設定される。また、最尤ノードは評価値を持たないため、評価値cost_0には「∞」が設定される。一方、ステージ6の状態S01のノードに対しては、ステージ7の最尤ノードのパスメトリック「4.6」が評価値cost_1となる。
図39において、ステージ6の状態S10及び状態S11のノードと、ステージ7の状態S01及び状態S11のノードとがグループG61でグループ化され処理対象となる。このグループG61内の全ノードが非最尤ノードであり、グループG61内に最尤パスは存在しない。従って、ステージ7の状態S01のパスメトリックPM_0の極性(−)と状態S11のパスメトリックPM_1の極性(+)との組み合わせによって、ステージ7の状態S10及び状態S11の評価値を算出する。
従って、図40に示すように、ステージ6における状態S10の評価値cost_0には「4.0」が設定され、状態S11の評価値cost_1には「∞」が設定される。そして、図41に示されるように、ステージ6の全てのノードのうち最小の評価値「4.0」が、ステージ6の尤度として出力されることが示される。
図42は、送信側の畳み込み符号器の例を示す図である。図42において、畳み込み符号器9は、例えば、3GPP(3rd Generation Partnership Project)のLTE(Long Term Evolution)の無線規格に準拠した符号器であって、情報源の入力Ckに対して、入力ビットの並び替えを行うターボ符号内部インターリーバー90と、第一の要素符号化部91と、第二の要素符号化部92とを有する。
第一及び第二の要素符号化部91及び92は、遅延素子D及び加算器で構成される畳み込み符号化部であり、入力データが順次シフトされ、それにより出力が生成され、一つの入力ストリームから複数の出力ストリームを生成して出力する。
第一の要素符号化部91において、スイッチSW1は、入力が情報ビット(「0」又は「1」)の場合に、Ckに接続して情報ビットを第一の要素符号化部91に取り込む。第二の要素符号化部92において、スイッチSW2も同様に、入力が情報ビット(「0」又は「1」)の場合に、ターボ符号内部インターリーバー90によってインターリーブされた(並べ替えられた)入力Ck’に接続して情報ビットを第二の要素符号化部92に取り込む。
第一の要素符号化部91からのXk及びZkによる2つの出力系列と、第二の要素符号化部92からのX’k及びZ’kによる2つの出力系列とは、所定のアルゴリズムによって多重化され伝送路に出力される。本実施例に係るバックトレース処理は、このような図42に示されるような送信側の符号器から送出される信号を復号する際に適用可能である。
上述したように、本実施例に係る演算器5は、SOVA復号におけるバックトレース処理を高速、かつ、無線規格に柔軟に対応することができる。
以上の説明に関し、更に以下の項を開示する。
(付記1)
畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、
時間Tiの現ステージと時間Ti+1の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、
同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、
を実行する復号方法。
(付記2)
前記演算手順は、前最尤状態と一致する状態が現ステージのグループ内に存在する場合、該前最尤状態を1ビット左シフトし、パスメトリックの極性を示す符号を最下位ビットに設定することによって、該現ステージでの最尤状態を特定し、評価値を持たないことを示す値を最尤状態の評価値として前記記憶領域に格納することを特徴とする付記1記載の復号方法。
(付記3)
前記演算手順は、同一グループ内において、現ステージの非最尤状態に対して、前ステージの各状態のパスメトリックの極性の組み合わせに応じて、何れか一状態の評価値又はパスメトリックを選択して、該非最尤状態の評価値として前記記憶領域に格納することを特徴とする付記1又は2記載の復号方法。
(付記4)
前記バックトレースの開始時に存在しない状態には、評価値が存在しないことを示す値を予め該記憶領域に格納しておくことを特徴とする付記1乃至3のいずれか一項記載の復号方法。
(付記5)
前記演算手順は、前状態が前ステージで最尤状態である場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と異なる極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該パスメトリックの値を入力することを特徴とする付記3又は4記載の復号方法。
(付記6)
前記演算手順は、前状態が前ステージで最尤状態でない場合、前ステージの最尤状態の評価値が該パスメトリックの極性と同じ極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該評価値を入力することを特徴とする付記3又は4記載の復号方法。
(付記7)
前ステージにおける最尤状態の最上位ビットが0の場合には負の極性の尤度のレジスタを選択し、一方、最上位ビットが1の場合には正の極性の尤度のレジスタを選択して出力する尤度選択手順を更に有することを特徴とする付記5又は6記載の復号方法。
(付記8)
前記状態特定手順は、前記状態識別情報を状態番号そのものとする状態と、該状態識別情報の最下位ビットを反転して状態番号とする状態と、を現ステージにおける2つの状態とし、該状態識別情報を1ビット右シフトして最上位ビットに0をセットした状態番号とする状態と、該状態識別情報を1ビット右シフトして最上位ビットに1をセットした状態番号とする状態と、を前ステージにおける2つの状態として、同一グループ内の4つの状態を特定し、前記最上位ビットは無線規格の状態数で定められることを特徴とする付記1乃至7のいずれか一項記載の復号方法。
(付記9)
畳み込み符号によるトレリス線図を用いたバックトレースにおいて、時間Tiの現ステージにおいて順次グループ毎に指定する状態識別情報から、同一グループ内の現ステージ及び時間Ti+1の前ステージの状態番号を特定して、同一グループ内の前ステージの状態のパスメトリックと評価値とを記憶領域から読み出すための読み出しアドレスと、同一グループ内の現ステージの状態の評価値の該記憶領域への書き込みアドレスとを算出するアドレス算出手段と、
同一グループ内において、前記読み出しアドレスから読み出された前ステージの状態のパスメトリック及び評価値を用いて現ステージの評価値を演算し、前記書き込みアドレスに該演算した評価値を書き込む演算手段と、
を有する演算器。
(付記10)
前記演算手段は、同一グループ内において、現ステージの最尤状態以外の非最尤状態に対して、前ステージの各状態のパスメトリックの極性の組み合わせに応じて、何れか一状態の評価値又はパスメトリックを選択して、該非最尤状態の評価値として設定することを特徴とする付記9記載の演算器。
(付記11)
前記演算手段は、現ステージの状態に遷移する前状態が前ステージで最尤状態である場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と異なる極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度に該パスメトリックの値を入力し、現ステージの状態に遷移する前状態が前ステージで最尤状態でない場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と同じ極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度に該パスメトリックの値を入力することを特徴とする付記10記載の演算器。
(付記12)
前ステージにおける最尤状態の最上位ビットが0の場合には負の極性の尤度を選択し、一方、最上位ビットが1の場合には正の極性の尤度を選択して出力する尤度選択手段を更に有することを特徴とする付記11記載の復号方法。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
1 プログラムメモリ
2 データメモリ
3 FE/DC部
4 実行部
5 演算器
6 ALU
7 汎用レジスタ
10 プロセッサ
22 状態数
30 現コスト記憶部
31 前コスト記憶部
41 前PM記憶部
51 アドレス生成部
52 バックトレース演算部
53 尤度選択部
60 現最尤状態レジスタ
61 前最尤状態レジスタ
70 尤度記憶部
80 状態ID
81 状態数レジスタ
82 PMi+1レジスタ
83 Ci+1レジスタ
84 Ciレジスタ
85 出力レジスタ

Claims (5)

  1. 畳み込み符号によるトレリス線図を用いたバックトレースによる復号方法であって、プロセッサが、
    時間Tiの現ステージと時間Ti+1の前ステージとの状態遷移に基づいてグループ化された各グループを指定する状態識別情報をレジスタから読み出して、同一グループ内の現ステージ及び前ステージの状態を特定する状態特定手順と、
    同一グループ内において、記憶領域から読み出した前ステージの状態のパスメトリック及び評価値を用いて現ステージの状態の評価値を演算して該記憶領域に格納する演算手順と、
    を実行する復号方法。
  2. 前記演算手順は、前最尤状態と一致する状態が現ステージのグループ内に存在する場合、該前最尤状態を1ビット左シフトし、パスメトリックの極性を示す符号を最下位ビットに設定することによって、該現ステージでの最尤状態を特定し、評価値を持たないことを示す値を最尤状態の評価値として前記記憶領域に格納することを特徴とする請求項1記載の復号方法。
  3. 前記演算手順は、同一グループ内において、現ステージの非最尤状態に対して、前ステージの各状態のパスメトリックの極性の組み合わせに応じて、何れか一状態の評価値又はパスメトリックを選択して、該非最尤状態の評価値として前記記憶領域に格納することを特徴とする請求項1又は2記載の復号方法。
  4. 前記演算手順は、前状態が前ステージで最尤状態である場合、前ステージの最尤状態のパスメトリックの値が該パスメトリックの極性と異なる極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該パスメトリックの値を入力することを特徴とする請求項3記載の復号方法。
  5. 前記演算手順は、前状態が前ステージで最尤状態でない場合、前ステージの最尤状態の評価値が該パスメトリックの極性と同じ極性を持つ現在の尤度より小さい場合に、該極性を持つ尤度を格納するレジスタに該評価値を入力することを特徴とする請求項3記載の復号方法。
JP2009290648A 2009-12-22 2009-12-22 復号方法 Pending JP2011135163A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009290648A JP2011135163A (ja) 2009-12-22 2009-12-22 復号方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009290648A JP2011135163A (ja) 2009-12-22 2009-12-22 復号方法

Publications (1)

Publication Number Publication Date
JP2011135163A true JP2011135163A (ja) 2011-07-07

Family

ID=44347469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009290648A Pending JP2011135163A (ja) 2009-12-22 2009-12-22 復号方法

Country Status (1)

Country Link
JP (1) JP2011135163A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11186914A (ja) * 1997-12-22 1999-07-09 Matsushita Electric Ind Co Ltd データ処理方法
JP2000341137A (ja) * 1999-05-28 2000-12-08 Sony Corp 復号装置
JP2006197422A (ja) * 2005-01-17 2006-07-27 Hitachi Communication Technologies Ltd 誤り訂正復号器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11186914A (ja) * 1997-12-22 1999-07-09 Matsushita Electric Ind Co Ltd データ処理方法
JP2000341137A (ja) * 1999-05-28 2000-12-08 Sony Corp 復号装置
JP2006197422A (ja) * 2005-01-17 2006-07-27 Hitachi Communication Technologies Ltd 誤り訂正復号器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013046698; 平 明徳 外2名: 'ターボ符号の復号におけるSOVA計算法に関する検討' 電子情報通信学会技術研究報告 Vol.100, No.192, 20000711, pp.75-82 *

Similar Documents

Publication Publication Date Title
US7765459B2 (en) Viterbi decoder and viterbi decoding method
JP2013141300A (ja) 複数ステップ・トレリスを使用するソフト出力ビタビ検出の方法および装置
JP2003512756A (ja) ビタビデコーダ用の高速acsユニット
US8009773B1 (en) Low complexity implementation of a Viterbi decoder with near optimal performance
JP4580927B2 (ja) ビタビ復号装置、およびビタビ復号方法
EP1089441A2 (en) Viterbi decoder and Viterbi decoding method
JP2003526988A (ja) ビット−スライスの順に実施したパス計量更新におけるビタービ復号化
JP2011135163A (ja) 復号方法
US7225393B2 (en) Viterbi decoder and Viterbi decoding method
JP2010130271A (ja) 復号器および復号方法
KR100262303B1 (ko) 비터비알고리즘을적용하는복호과정에서의생존경로역추적방법및그장치
JP3753822B2 (ja) ビタビ復号方法および装置
Engin et al. Viterbi decoding on a coprocessor architecture with vector parallelism
US11108415B2 (en) Method of Viterbi algorithm and receiving device
JP2000278145A (ja) ビタビ復号器
JP4633759B2 (ja) ビタビ復号器
KR100359805B1 (ko) 비터비 디코더 및 비터비 디코더의 디코딩 방법
JP3383661B2 (ja) 演算処理装置
JP3351414B2 (ja) ビタビ復号装置
JP5338506B2 (ja) 復号装置及び信号処理システム
JPH0722969A (ja) 演算装置
JP2006229376A (ja) ビタビ復号器及びそれを用いる移動体通信装置、基地局装置、移動体通信端末
JP2001024526A (ja) ビタビ復号装置
JP3996858B2 (ja) 演算処理装置
JP3288328B2 (ja) ビタビ復号器のトレースバック処理の高速化装置およびその高速化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140212