JP4193989B2 - デジタル信号プロセッサにおける高性能ターボチャンネル復号およびViterbi(ビタビ)チャンネル復号 - Google Patents

デジタル信号プロセッサにおける高性能ターボチャンネル復号およびViterbi(ビタビ)チャンネル復号 Download PDF

Info

Publication number
JP4193989B2
JP4193989B2 JP2003520088A JP2003520088A JP4193989B2 JP 4193989 B2 JP4193989 B2 JP 4193989B2 JP 2003520088 A JP2003520088 A JP 2003520088A JP 2003520088 A JP2003520088 A JP 2003520088A JP 4193989 B2 JP4193989 B2 JP 4193989B2
Authority
JP
Japan
Prior art keywords
trellis
metric
time
value
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003520088A
Other languages
English (en)
Other versions
JP2004538704A5 (ja
JP2004538704A (ja
Inventor
プランテ,ステフェン,ジェイ.
グリーンフィールド,ズヴィ
Original Assignee
アナログ・デバイシズ・インコーポレーテッド
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 アナログ・デバイシズ・インコーポレーテッド filed Critical アナログ・デバイシズ・インコーポレーテッド
Publication of JP2004538704A publication Critical patent/JP2004538704A/ja
Publication of JP2004538704A5 publication Critical patent/JP2004538704A5/ja
Application granted granted Critical
Publication of JP4193989B2 publication Critical patent/JP4193989B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3911Correction factor, e.g. approximations of the exp(1+x) function
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6511Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6569Implementation on processors, e.g. DSPs, or software implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Error Detection And Correction (AREA)

Description

発明の詳細な説明
発明の属する分野
本発明は、ワイヤレスモバイルおよび基地局において応用されるデジタル信号プロセッサに関し、さらに具体的には、ワイヤレス基地局において、ターボチャンネル復号およびViterbiチャンネル復号を行うためのデジタル信号プロセッサの使用に関する。
発明の背景
第2世代および第3世代のワイヤレスシステムは、伝送信頼度を高めるために、チャンネル符号およびチャンネル復号アルゴリズム、ならびにスペクトル拡散技術を必要とする。第三世代のワイヤレスシステムにおいて、畳み込み符号スキームが音声伝送のために指定され、および並列連接畳み込み符号(PCCC)がデータ伝送のために指定される。畳み込み符号化されたデータは、Viterbi復号アルゴリズムを使用して復号化され、PCCC符号化されたデータは、ターボ復号アルゴリズムを使用して復号化される。ターボ復号およびViterbi復号スキームは、トレリスに基づくアルゴリズムである。
Viterbi復号器アルゴリズムおよびターボ復号器アルゴリズムは、極度にコンピュータに負担をかける。ワイヤレス基地局における前方誤り訂正(forward error correction)ブロック、つまりチャンネル復号ブロックは、ソフトウェア無線でのシンボルレート処理の80%に達し得る。割り当てられた制限時間内でこれらのアルゴリズムを実行するために提案される方法は、ASICの使用およびデジタル信号プロセッサにおいて最も基本的なコンポーネントを有する、ハードウェアブロックの使用を含む。
デジタル信号プロセッサは、ソフトウェアのプログラムが可能な能力のために、ASICよりも望ましい解決法である。しかしながら、現在利用可能なデジタル信号プロセッサでは、ソフトウェア無線で必要とされる完全なチップレート処理およびシンボルレート処理を扱うことができない。従ってシステム設計者は、シンボルレート処理を扱うために、デジタル信号プロセッサおよびASICを使用する解決法、もしくはASICのみを使用する解決法について研究を行っている。最低でも、ASICは前方誤り訂正を実行するようになるだろう。
デュアル演算ユニットおよびワイドメモリバスを有し、並列して複数のタスクを扱うための能力を有するデジタル信号プロセッサが、1999年4月20日にGarde(ガード)に対して発行された米国特許第5,896,543号に開示されている。開示されたデジタル信号プロセッサは、非常に高い性能を実現するが、現在構成されているものでは、ワイヤレス基地局の前方誤り訂正を割り当てられた制限時間内に効果的に実行することができない。
従って、ワイヤレスシステムにおいて使用される、ターボチャンネル復号アルゴリズムおよびViterbiチャンネル復号アルゴリズムの改良された実行方法が必要とされている。
発明の概要
本発明の第1の側面に従って、デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算するための方法が提供される。トレリス命令によって指定される、ある時間tでのトレリス状態メトリックおよび時間tから時間tへの遷移メトリック(transition metric)に応答して、選択されるトレリス状態におけるトレリス関数のメトリックが計算される。それぞれの選択されるトレリス状態における計算は、遷移メトリックを時間tにおける第1状態メトリックに加算して、第1の値を提供すること、遷移メトリックを時間tにおける第2状態メトリックから減算して、第2の値を提供すること、対応する第1の値および第2の値を比較すること、および対応する第1の値および第2の値のうち最大値を選択して、時間tにおけるトレリス状態メトリックを提供すること、を含む。
また、デジタル信号プロセッサにおいて、信号値を処理する方法が提供される。この方法は、選択されるトレリス状態において、信号値に基づいて、時間t でのトレリス状態メトリック、および時間t から時間t への遷移メトリックを指定する単一のトレリス命令に応答して、時間t での第1状態メトリックに遷移メトリックを加算し、第1の値を提供するステップ;時間t での第2状態メトリックから遷移メトリックを減算し、第2の値を提供するステップ;それぞれの選択される状態メトリックにおいて、前記第1の値と前記第2の値とを比較するステップ;およびそれぞれの選択されるトレリス状態において、第1の値と第2の値のうち最大値を選択して、時間t でのトレリス状態メトリックを提供するステップを含む。前記単一のトレリス命令の前記加算、減算、比較、および選択するオペレーションは、前記デジタル信号プロセッサによって、その単一のクロックサイクルで実行される。
前記方法は、それぞれの選択されるトレリス状態において、対応する第1の値および第2の値の関数である訂正ファクタ(correction factor)を前記最大値に加算するというステップをさらに含んでもよい。訂正ファクタを加算するステップは、訂正ファクタを含有するルックアップテーブルにアクセスすることを含んでもよい。
1つの態様において、トレリス命令は、前方トレリス関数(forward trellis function)を実行して、αトレリス状態メトリックを計算する。別の態様において、トレリス命令は、逆方向トレリス関数(reverse trellis function)を実行して、βトレリス状態メトリックを計算する。さらに別の態様において、トレリス命令は、単一の命令、複数のデータアプローチを使用して、αトレリス状態メトリックを計算するための前方トレリス関数、およびβトレリス状態メトリックを計算するための逆方向トレリス関数を同時に実行する。
本発明の別の側面にしたがって、デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算するための方法が提供される。ある時間tでのαメトリックおよびトレリス命令によって指定される時間tから時間tへの遷移メトリックに応答して、選択されるトレリス状態における時間tでのαメトリックが計算される。トレリス命令によって指定される、ある時間tでのβメトリックおよび時間tから時間tへの遷移メトリックに応答して、選択されるトレリス状態における時間tでのβメトリックが計算される。
選択されるトレリス状態におけるαメトリックを計算するステップは、それぞれの選択されるトレリス状態において、遷移メトリックを時間tでの第1のαメトリックに加算して、第1の値を提供すること、遷移メトリックを時間tでの第2のαメトリックから減算して、第2の値を提供すること、それぞれの選択されるトレリス状態において、対応する第1の値および第2の値を比較すること、それぞれの選択されるトレリス状態において、対応する第1の値と第2の値のうち最大値を選択して、時間tでのαメトリックを提供すること、を含んでもよい。
選択されるトレリス状態におけるβメトリックを計算するためのステップは、それぞれの選択されるトレリス状態において、遷移メトリックを時間tでの第1のβメトリックに加算して第1の値を提供すること、遷移メトリックを時間tでの第2のβメトリックから減算して、第2の値を提供すること、それぞれの選択されるトレリス状態において、対応する第1の値および第2の値を比較すること、それぞれの選択されるトレリス状態において、対応する第1の値と第2の値のうち最大値を選択して、時間tでのβメトリックを提供すること、を含んでもよい。
それぞれの選択されるトレリス状態において、αメトリックを計算するステップおよびβメトリックを計算するステップは、それぞれ対応する第1の値および第2の値の関数である訂正ファクタを前記最大値に加算するというステップをさらに含んでもよい。αメトリックを計算するステップおよびβメトリックを計算するステップは、同時に行われてもよい。
本発明のさらなる側面にしたがって、デジタル信号プロセッサにおいて、log MAP命令を計算するための方法が提供される。log MAP命令は、第1、第2、第3および第4のパラメータ位置を指定する。第1パラメータと第2パラメータの和もしくは差を計算して、第1の値を提供し、第3パラメータと第4パラメータの和もしくは差を計算して、第2の値を提供する。第1の値と第2の値のうち最大値が選択される。そして、第1の値および第2の値の関数である訂正ファクタを前記最大値に加算して、log MAP結果を提供する。訂正ファクタを加算するステップは、訂正ファクタを含有するルックアップテーブルにアクセスすることを含んでもよい。
デジタル信号プロセッサは、デジタル信号演算のための命令およびオペランドを記憶するメモリと、選択される1つの命令を前記メモリからフェッチする命令アドレスを生成するためのプログラムシーケンサと、演算ブロックであって、オペランドおよび結果を一時的に記憶するためのレジスタファイルと、前記のオペレーションを独立して、もしくはいずれかの組み合わせで実行するためのアクセラレータ、を含む前記演算ブロックを含んでもよい。ある好適な態様において、デジタル信号プロセッサは、複数のオペレーションを並列して実行するための2以上の演算ブロックを含む。
信号値を処理するためのプロセッサが提供される。このプロセッサは、デジタル信号演算のための命令およびオペランドを記憶するメモリ;前記命令のうち選択されるものを前記メモリからフェッチする命令アドレスを生成するためのプログラムシーケンサ;および演算ブロックを含む。この演算ブロックは、オペランドおよび結果を一時的に記憶するためのレジスタファイルと、時間t でのトレリス状態メトリックの位置、および時間t から時間t への遷移メトリックの位置を指定するトレリス命令を実行するためのアクセラレータであって、前記トレリス状態メトリックが信号値に基づくものであり、遷移メトリックを時間t での第1状態メトリックに加算して、第1の値を提供する加算器と、時間t での第2状態メトリックから前記遷移メトリックを減算して、第2の値を提供する加算器と、それぞれのトレリス状態において第1の値および第2の値のうち、最大値を決定するための比較器と、選択されるトレリス状態において第1の値および第2の値のうち、最大値を選択するためのデータセレクタとを含む、前記アクセラレータとを含む。この演算ブロックにおいて、アクセラレータの加算器、比較器およびデータセレクタは、プロセッサの単一のクロックサイクルで、トレリス命令の加算、減算、比較、および選択のオペレーションを実行するように構成されている。
ここで、アクセラレータは、第1および第2の値の関数である訂正ファクタを、第1の値および第2の値のうちの最大値に加算するための追加の加算器を含んでもよい。
また、アクセラレータは、訂正ファクタを含有するルックアップテーブルを含んでもよい。
本発明のさらなる側面にしたがって、デジタル信号プロセッサ演算に使用されるアクセラレータが提供される。アクセラレータは、アクセラレータへの入力を受信する第1キャリーセーブ加算器(carry save adder)と、第1キャリーセーブ加算器のサム出力とキャリー出力とを組み合わせる第1全加算器(full adder)と、第1全加算器の出力に応答して、訂正ファクタを生成するルックアップテーブルと、第1全加算器の出力サインに応答して、1または2以上のアクセラレータへの入力を選択するためのマルチプレクサと、1または2以上のマルチプレクサの出力とルックアップテーブルの出力を加算するための第2キャリーセーブ加算器と、第2キャリーセーブ加算器のサム出力とキャリー出力とを組み合わせる第2全加算器、を含む。
前記第1キャリーセーブ加算器および前記第1全加算器は、第1パイプラインステージ、前記ルックアップテーブルおよび前記マルチプレクサを含んでもよく、前記第2キャリーセーブ加算器は、第2パイプラインステージを含んでもよく、前記第2全加算器は、第3パイプラインステージを含んでもよい。好適なある態様において、アクセラレータは、第2キャリーセーブ加算器のサム出力およびキャリー出力を第1キャリーセーブ加算器に供給するためのデータセレクタをさらに含んでもよい。
発明の詳細な記述
ワイヤレス基地局信号チェーンの例のブロック線図を図1に示す。信号チェーンは、シンボルレート処理10およびチップレート処理12を含む。シンボルレート処理10は、デジタル信号プロセッサに組み入れられることが望ましい。伝送側において、シンボルレート処理10は、CRCアタッチメントブロック20、チャンネル符号ブロック22、レートマッチングブロック24およびインターリービングブロック26を含む。受信側において、シンボルレート処理10は、デインターリーブブロック30、レート決定ブロック32、チャンネル復号ブロック34,CRCアタッチメントブロック36を含む。上述した通り、前方誤り訂正(FEC)、つまりチャンネル復号は、シンボルレート処理の80%に達し得る。
本発明の側面は、デジタル信号プロセッサにおけるチャンネル復号ブロック34の実行に関する。チャンネル符号ブロック22は、音声またはローデータレート伝送のための畳み込み符号を利用してもよく、ハイデータレート伝送のためのPCCCスキームを利用してもよい。チャンネル復号ブロック34は、音声用のViterbi復号アルゴリズムおよびデータ用のターボ復号を利用してもよい。
ターボ複合器の例の単純化されたブロック線図を図2に示す。ターボ複合器は、MAP(最大事後確率)復号器40および42、インターリーバ44およびデインターリーバ46を含む。ターボ符号は、例えばM. Valenti (Dept. of Elect. Eng., Virginia Polytechnic Inst.) の“An Introduction to Turbo Codes”、W. Ryan (New Mexico State University)の“A Turbo Code Tutorial”に説明されている。シングルMAP復号器は、Viterbi復号器を実行するために使用されてもよい。Viterbiアルゴリズムは、H. Louの“Implementing the Viterbi Algorithm” (IEEE Signal Processing Magazine、1995年9月、42−52ページ)に説明されている。
ターボチャンネル復号およびViterbiチャンネル復号は、受信されるデータのブロック上で行われる、トレリスに基づくアルゴリズムである。ワイヤレスシステムにおいて典型として使用される8状態トレリスの例を図3に示す。トレリスは、それぞれの複数の時点t=0、t=1、…t=Nに関連して状態S0、S1、S2、…S7を含む。それぞれのトレリス状態に関連するのは、アルファ(α)メトリックで、計算の開始点から現在の状態にある確率に関する。同様にそれぞれのトレリス状態に関連するのは、ベータ(β)メトリックで、現在の状態から正しい状態で終了する確率に関する。したがって、8個のαメトリックおよび8個のβメトリックが、トレリスのそれぞれの時点に関連する。
またトレリスは、ガンマ(γ)遷移メトリックによって特徴づけられ、第1の時点における1つの状態から次の時点における別の状態に移動する可能性に関する。したがって、例えば図3のトレリスにおいて、アルファメトリックαおよびαは、それぞれ時間t=1での状態S0およびS1に関連する。遷移メトリックγは、時間t=0での状態S0から時間t=1でのS0への遷移に関連し、遷移メトリック−γは、時間t=0での状態S1から時間t=1での状態S1への遷移に関連する。一般に、アルファメトリックα、α、…αは、それぞれトレリス状態S0、S1、…S7に関連する。同様に、ベータメトリックβ、β、…βは、それぞれトレリス状態S0、S1、…S7に関連する。加えて、遷移メトリックγは、状態S0、S1、S2およびS3からの遷移に関連し、遷移メトリックγは、状態S4、S5、S6およびS7からの遷移に関連する。
それぞれのトレリス状態におけるアルファメトリックを計算するための式が図4に示され、ここでkはトレリス状態を、sは時点を表す。図4の式の最後の項は、アルファメトリックの関数である訂正ファクタである。それぞれのトレリス状態におけるベータメトリックを計算するための式を図5に示す。図5の式の最後の項は、ベータメトリックの関数である訂正ファクタである。
図4の式を図3のトレリスに応用したものをここで説明する。状態S0およびS1における時間t=1でのアルファメトリックα’およびα’は、それぞれ以下の式で計算されてよい。

α’=MAX[α+γ,α−γ]+C’ (1)

α’=MAX[α−γ,α+γ]+C’ (2)

ここで、C’およびC’は、図4に示すようにαおよびαの値に依存する訂正ファクタである。
したがって、それぞれの状態におけるアルファメトリックは、現在の状態への遷移が可能な2つの以前の状態それぞれにおいて、以前の状態のアルファメトリックと、2つの値を与えるための以前の状態から現在の状態への遷移に対する遷移メトリックとを代数的に合計(サム, sum)することによって計算される。そして、2つの値のうち最大値が選択される。訂正ファクタは、選択された最大値に加算される。以下に記述されるように、訂正ファクタは、ルックアップテーブルから得られてもよい。アルファメトリックは、トレリスのそれぞれの状態において、同類の様式で計算されてもよい。同様に、トレリスのそれぞれの状態におけるベータメトリックを計算するために、図5の式は、同類の様式で応用されてもよい。それぞれ2つの以前の状態のメトリックに基づく2つの状態のメトリックの計算は、通例“バタフライ”計算と呼ばれる。
また対数尤度率は、チャンネル復号と関連して計算される。対数尤度率は、状態1である確率と状態0である確率の比の対数である。対数尤度率を計算する式を図6に示す。以下に、対数尤度率の計算について詳細に議論する。
本発明の特性を実行するに適するデジタル信号プロセッサ(DSP)110の例のブロック線図を図7に示す。DSP110の主要なコンポーネントは、演算ブロック112および114、メモリ116、制御ブロック124、リンクポートバッファ126、外部ポート128,DRAMコントローラ130、命令整列バッファ(instruction alignment buffer)(IAB)132およびプライマリ命令復号器(primary instruction decoder)134である。演算ブロック112および114、命令整列バッファ132、プライマリ命令復号器13および制御ブロック124は、DSPの主な演算機能およびデータ処理機能を実行するコアプロセッサを成す。外部ポート128は、外部アドレスバス158および外部データバス168を介する外部との伝達を制御する。リンクポートバッファ126は、コミュニケーションポート136を介する外部との伝達を制御する。DSPは、好ましくは単一のモノリシック集積回路として構成される。
メモリ116は、3つの独立した大容量メモリバンク140、142および144を含んでもよい。好適な態様において、メモリバンク140、142および144はそれぞれ、1ワードを32ビットとして、64Kワードの容量を有する。以下に議論されるように、それぞれのメモリバンク140、142および144は、好ましくは128ビットデータバスを有する。32ビットごとに整列された、最大4つの連続したデータワードが、1クロックサイクルにおいて、それぞれのメモリバンクから転送され得る、もしくはメモリバンクに転送され得る。
DSP110の要素は、効率的で高速のオペレーションのために、バスによって相互に接続される。それぞれのバスは、バイナリ情報を並列転送するための複数のラインを含む。第1のアドレスバス150(MA0)は、メモリバンク140(M0)と制御ブロック124とを相互に接続する。第2のアドレスバス152(MA1)は、メモリバンク142(M1)と制御ブロック124とを相互に接続する。第3のアドレスバス154(MA2)は、メモリバンク144(M2)と制御ブロック124とを相互に接続する。アドレスバス150、152および154は、それぞれ好ましくは16ビット幅である。外部アドレスバス156は、外部ポート128を通じて外部アドレスバス158に相互に接続される。外部アドレスバス156および158は、それぞれ好ましくは32ビット幅である。
第1のデータバス160(MD0)は、メモリバンク140、演算ブロック112および114、制御ブロック124、リンクポートバッファ126、IAB132および外部ポート128を相互に接続する。第2のデータバス162(MD1)は、メモリバンク142、演算ブロック112および114、制御ブロック124、リンクポートバッファ126、IAB132および外部ポート128を相互に接続する。第3のデータバス164(MD2)は、メモリバンク144、演算ブロック112および114、制御ブロック124、リンクポートバッファ126、IAB132および外部ポート128を相互に接続する。データバス160、162および164は、外部ポート128を通じて外部データバス168に接続される。データバス160、162および164は、それぞれ好ましくは128ビット幅であり、外部データバス168は、好ましくは64ビット幅である。
第1のアドレスバス150および第1のデータバス160は、データをメモリバンク140に転送するため、およびデータをメモリバンク140から転送するためのバスを含む。第2のアドレスバス152および第1のデータバス162は、データをメモリバンク142に転送するため、およびデータをメモリバンク142から転送するための第2のバスを含む。第3のアドレスバス154および第1のデータバス164は、データをメモリバンク144に転送するため、およびデータをメモリバンク144から転送するための第3のバスを含む。メモリバンク140、142および144は、それぞれ個々のバスを有するので、メモリバンク140、142および144は、同時にアクセスされてもよい。ここで使用される、“データ”は、バイナリワードを参照し、これは、DSP110のオペレーションに関連する命令もしくはオペランドのいずれかを表してもよい。
典型的な動作モードにおいて、プログラム命令は、前記メモリバンクの1つに記憶され、またオペランドは、その他の2つのメモリバンクに記憶される。したがって、1クロックサイクルにおいて、少なくとも1つの命令および2つのオペランドが、演算ブロック112および114に提供され得る。メモリバンク140、142および144は、1クロックサイクルにおいて、複数のデータワードの読み出しおよび書き込みを可能にするようにそれぞれ構成されてもよい。1クロックサイクルにおいて、それぞれのメモリバンクから同時に複数のデータワードを転送することは、命令キャッシュもしくはデータキャッシュを必要とせずに達成される。
以上に示したように、メモリバンク140、142および144は、それぞれ好ましくは、1ワードを32ビットとして、64Kワードの容量を有する。それぞれのメモリバンクは、128ビット幅であるデータバスに接続されてよい。代替の態様において、データバスは、それぞれ64ビット幅でよく、そして64ビットは、クロック位相1およびクロック位相2上で転送される、即ち128ビット幅の効果的なバスを提供する。複数のデータワードは、1クロックサイクルにおいて、それぞれのメモリバンク内でアクセスされ得る。特にデータは、各々32ビットのシングルワード、もしくはデュアルワード、またはクアドワードとしてアクセスされ得る。
クアドワード転送を使用して、それぞれ32ビットである4つの命令および8つのオペランドが、演算ブロック112および114に、1回のクロックサイクルで供給され得る。転送されるデータワードの数およびデータワードの転送先となる演算ブロックは、命令中の制御ビットによって選択される。シングルワードもしくはデュアルワードまたはクアドワードは、演算ブロック112もしくは演算ブロック114、またはこれらの両方に転送され得る。デュアルワードまたはクアドワードは、多くの応用において、いくつかのオペランドを1クロックサイクルで演算ブロック112または114に転送することを可能にすることによって、DSP110の性能を向上させる。各クロックサイクルで複数の命令にアクセスする能力は、複数のオペレーションを各クロックサイクルで実行することを可能にし、即ち性能を向上させる。
演算ブロック112および114のそれぞれの態様のブロック線図を図8に示す。マルチポートレジスタファイル200は、オペランドおよび結果の一時的な記憶を提供する。好適な態様において、レジスタファイル200は、1ワードを32ビットとして、32ワードの容量を有し、1列を128ビットとして8列で組織される。レジスタファイル200は、マルチプレクサおよびラッチ(図示なし)を通じて、それぞれのデータバス160、162および164(図7)に接続される。オペランドは、メモリ116からフェッチされ、3つのデータバスのうち2つが選択され、選択されたバス上のオペランドが、レジスタファイル200に供給される。
図8に示される演算ブロックは、乗算/累算器210、演算論理ユニット(ALU)212、シフタ214およびアクセラレータ216を含む。乗算/累算器210、ALU212、シフタ214およびアクセラレータ216は、十分な命令およびオペランドが演算ブロックに供給され得るまで、命令の同時実行が可能である。オペランドは、オペランドバス220上を、レジスタファイル200から乗算/累算器210、ALU212、シフタ214およびアクセラレータ216に供給される。乗算/累算器210、ALU212、シフタ214およびアクセラレータ216の結果は、結果バス222上を戻る。演算ブロックのコンポーネントは、セカンダリ命令復号器224からの、復号化された命令に応答する信号によって制御される。演算ブロックは、性能を向上するために、好ましくはパイプライン構造を有する。
DSPにおける演算ブロック112および114は、ワイヤレス基地局での性能を高めるために、それぞれアクセラレータ216を含む。アクセラレータは、一時的にデータおよび制御値を記憶するためのレジスタ、および指定の命令を実行するためのアクセラレータ回路を含む。以下に、アクセラレータ216の機構およびオペレーションを詳細に説明する。
このDSP110は、例示の目的のためだけに説明されると理解される。本発明の特性は、異なるデジタル信号プロセッサ構造において実行されてもよい。
ACS命令、つまりトレリス命令に応答して、それぞれのアクセラレータによって実行されるオペレーションのデータフロー線図を図9に示す。レジスタペアTRmdのアルファメトリックもしくはベータメトリックなどのハイデータワードは、減算ユニット250および加算ユニット252に供給される。レジスタペアTRmdのローデータワードは、減算ユニット254および加算ユニット256に供給される。レジスタペアTRndのハイデータワードは、加算ユニット258および減算ユニット260に供給される。レジスタペアTRndのローデータワードは、加算ユニット262および減算264ユニットに供給される。
レジスタRmのハイデータワードは、ガンマ遷移メトリックであってもよく、減算ユニット250、加算ユニット252、加算ユニット258および減算ユニット260に供給される。レジスタRmのローデータワードは、減算ユニット254および加算ユニット256、加算ユニット262および減算ユニット264に供給される。減算ユニット250および加算ユニット258の出力は、MAX/TMAXユニット270に供給される。加算ユニット252および減算ユニット260の出力は、MAX/TMAXユニット272に供給される。減算ユニット254および加算ユニット262の出力は、MAX/TMAXユニット274に供給される。加算ユニット256および減算ユニット264の出力は、MAX/TMAXユニット276に供給される。MAX/TMAXユニット270、272、274および276の出力は、クアドレジスタTRsqに記憶される。
MAX/TMAXユニット270、272、274および276は、それぞれトレリス命令を指定してもよい1または2以上の関数を実行する。MAX関数において、2つの入力の最大値が選択され、クアドレジスタTRsqに記憶される。TMAX関数において、2つの入力の最大値が選択され、訂正値が選択される最大値に加算される。その和がクアドレジスタTRsqに記憶される。訂正ファクタは、MAX/TMAXユニットへの2つの入力の関数である。以下に説明されるように、訂正ファクタは、ルックアップテーブルから決定され得る。MAX/TMAXユニット270、272、274および276は、それぞれ出力ビットをビット選択レジスタペアTHRsに提供する。それぞれの出力ビットは、最大値として選択された入力を指し示す。
図9の態様において、アルファメトリックもしくはベータメトリックのようなレジスタペアTRmdおよびTRndのデータ値は、32ビット値であり、遷移メトリックのようなレジスタRmのデータ値は、16ビット値である。クアドレジスタTRsqに記憶される出力値は、32ビット値である。図9の態様において、それぞれのアクセラレータは、単一のトレリス命令に応答して、トレリスの2つの32ビットバタフライ演算を実行する。
図10に示されるトレリス命令の別の態様において、それぞれのアクセラレータは、単一のトレリス命令に応答して、4つの16ビットバタフライ演算を実行する。図10において、レジスタペアTRmdおよびレジスタぺアTRndは、それぞれアルファメトリックもしくはベータメトリックのような4つの16ビットデータ値を含有し、レジスタRmは、遷移メトリックのような4つの8ビット値を含有する。データ値は、8つの減算ユニット(290他)に、および8つの加算ユニット(292他)に供給され、減算ユニットおよび加算ユニットの出力は、8つのMAXユニット(294他)に供給される。
例えば、減算ユニット290は、データワードS3をレジスタペアTRmdから受信し、データワードB3をレジスタRmから受信する。加算ユニット292は、データワードS3をレジスタペアTRndから受信し、データワードB3をレジスタRmから受信する。減算ユニット290および加算ユニット292の出力は、MAXユニット294に供給される。MAXユニット294は、2つの入力の最大値を選択し、その最大値をクアドレジスタTRsqに記憶する。TMAXオプションは、図10の態様には含まれていない。また、MAXユニットは、どの入力が選択されたかを指し示すために、出力ビットをレジスタペアTHRsに供給する。図10中の残りのユニットは、単一のトレリス命令に応答して、トレリスの4つの16ビットバタフライ演算を提供するために、同様の様式で動作する。
トレリス関数のアルファメトリックおよびベータメトリックを計算するためのソフトウェアコードの例を図11に示す。図9によって図示され、以上で説明したオペレーションを実行するACS命令を使用して、このコードは実行される。図11において、それぞれのACS命令は、図9に示されるような2つのトレリスバタフライ演算のための計算を指定する。ACS命令は、4つのバタフライ演算の総計を提供するために、演算ブロック112および114(図7参照)において実行される。この命令は、図11に示されるように、与えられた時点での最初の4つのトレリスのステージにおけるアルファメトリックおよびベータメトリックを計算する第1命令と、ならびに与えられた時点での最後の4つのトレリスのステージにおけるアルファメトリックおよびベータメトリックを計算する第2命令とのペアにグループ化される。
したがって、ターボチャンネル復号器のための計算は、トレリスの1時点毎に2つの命令を使用して実行される。図11のソフトウェアコードは、トレリスの4つの時点におけるメトリックを計算するためのオペレーションを含有するループを説明する。図11のそれぞれの命令ラインにおけるオペレーションは、デジタル信号プロセッサによって、同時的に実行される。その他の実行において、第1命令は、与えられた時点でのトレリスの8つのステージにおけるアルファメトリックを計算してもよく、第2命令は、与えられた時点でのトレリスの8つのステージにおけるベータメトリックを計算してもよい。
図11の第1命令ラインにおいて、TR11:8は、図9のクアドレジスタTRsqに対応する。また、第1命令ラインのTR5:4およびTR1:0は、それぞれレジスタペアTRmdおよびレジスタペアTRndに対応する。レジスタsR24は、図9のレジスタRmに対応する。この命令は、単一のACS命令もしくはトレリス命令に応答して、4つのバタフライ演算を実行するために、両方の演算ユニットにおいて、異なるデータ値を伴って実行されてもよいと理解されるであろう。図11の第1命令ラインはさらに、レジスタTR7:4のデータが、レジスタファイル200(図8)のレジスタR7:4に移動すること明確にしている。加えて、第1命令ラインは、演算ユニット112のレジスタxR3:0および演算ユニット114のレジスタyR3:0に対するメモリロードオペレーションを指定する。
図11のソフトウェアコードにおける最初の2つの命令ラインの実行は、図12および図13を参照して説明される。図12は、DSP110の第1サイクルでのトレリス状態S0〜S3におけるアルファメトリックおよびベータメトリックの計算を説明し、図13は、DSP110の第2サイクルでのトレリス状態S4〜S7におけるアルファメトリックおよびベータメトリックの計算を説明する。図12に示されるように、演算ブロック112のアクセラレータ回路300は、レジスタペアTR5:4、レジスタペアTR1:0およびレジスタsR24からデータ値を受信し、出力データをクアドレジスタTR11:8に供給する。同様に、演算ブロック114のアクセラレータ回路302は、レジスタペアTR5:4、レジスタペアTR1:0およびレジスタsR24からデータ値を受信し、出力データをクアドレジスタTR11:8に供給する。図12に図示されるレジスタは、図11の最初の命令ラインの中のACS命令によって指定されるレジスタに対応する。
好適な態様において、TRレジスタは、それぞれのアクセラレータ216(図8)に配置され、Rレジスタは、それぞれのレジスタファイル200に配置される。図12のレジスタペアTR5:4は、図9のレジスタペアTRmdに対応し、レジスタペアTR1:0は、レジスタペアTRndに対応する。同様に、図12のレジスタsR24は、図9のレジスタRmに対応し、クアドレジスタTR11:8は、図9のクアドレジスタTRsqに対応する。図12は、SIMDオペレーションを説明し、ここでは単一の命令は、異なるデータを伴って、アクセラレータ回路300および302などの2以上の実行ユニットによって実行される。
図12に示されるように、図11の最初の命令ラインは、トレリス状態S0〜S3におけるアルファメトリックおよびベータメトリックを計算する。特に、アクセラレータ回路300は、レジスタペアTR5:4に含有されるαおよびαの値と、レジスタペアTR1:0に含有されるαおよびαの値と、レジスタsR24に含有されるγおよびγとの値に基づいて、アルファメトリックα’、α’、α’およびα’を計算する。同様に、アクセラレータ回路302は、レジスタペアTR5:4に含有されるβおよびβの値と、レジスタペアTR1:0に含有されるβおよびβの値と、レジスタsR24に含有されるγおよびγとの値に基づいて、ベータメトリックβ’、β’、β ’およびβ’を計算する。
ここで、図13を参照すると、第2のデジタル信号プロセッササイクルの間のトレリス状態S4〜S8におけるアルファメトリックおよびベータメトリックの計算が示されている。図13のオペレーションは、図11の第2の命令ラインに対応する。アクセラレータ回路300は、レジスタペアTR7:6に含有されるαおよびαの値と、レジスタペアTR3:2に含有されるαおよびαの値と、レジスタsR25に含有されるγおよびγとの値に基づいて、アルファメトリックα’、α’、α’およびα’を計算する。同様に、アクセラレータ回路302は、レジスタペアTR7:6に含有されるβおよびβの値と、レジスタペアTR3:2に含有されるβおよびβの値と、レジスタsR25に含有されるγおよびγとの値に基づいて、アルファメトリックβ’、β’、β’およびβ’を計算する。
アクセラレータ300および302は、図12に示されるように、第1DSPサイクルにおいて4つのバタフライ演算を実行し、また図13に示されるように、第2のDSPサイクルにおいて4つのバタフライ演算を実行し、それによってデジタル信号プロセッサの2回のサイクルでの8個のトレリス状態における完全なアルファメトリックおよびベータメトリックを計算する。したがって、図11のソフトウェアコードは、トレリスの4つの時点におけるアルファメトリックおよびベータメトリックを計算する。図11〜13の態様において、演算ブロック112のアクセラレータレジスタTR0:7は、第1の時点でのトレリス状態S0〜S7におけるアルファメトリックを含有し、アクセラレータレジスタTR8:15は、第2の時点でのトレリス状態S0〜S7におけるアルファメトリックを含有する。同様に、演算ブロック114のアクセラレータレジスタTR0:7は、第1の時点でのトレリス状態S0〜S7におけるベータメトリックを含有し、アクセラレータレジスタTR8:15は、第2の時点でのトレリス状態S0〜S7におけるベータメトリックを含有する。
第1のタイプのlog MAP命令に応答して、実行されるオペレーションを説明するデータフロー線図が、図14に図示される。データ値は、レジスタペアTRmdおよびTRndならびにクアドレジスタRmqに保持される。それぞれのデータ値は、図14の例において、32ビットである。データ値は、アルファメトリックもしくはベータメトリックまたは遷移メトリックを表してもよい。加算ユニット330は、レジスタペアTRmdからハイデータワードを受信し、第1データワードをクアドレジスタRmqから受信する。加算ユニット332は、レジスタペアTRmdからローデータワードを受信し、第2データワードをクアドレジスタRmqから受信する。加算ユニット334は、レジスタペアTRndからハイデータワードを受信し、第3データワードをクアドレジスタRmqから受信する。加算ユニット336は、レジスタペアTRndからローデータワードを受信し、第4データワードをクアドレジスタRmqから受信する。TMAXユニット340は、加算ユニット330および334の出力を受信する。TMAXユニット342は、加算ユニット332および336の出力を受信する。
それぞれTMAXユニット340および342は、2つの入力の最大値を選択し、訂正ファクタを選択された最大値に加算する。上記の通り、訂正ファクタは、2つの入力値の関数であり、ルックアップテーブルとして実行されてもよい。TMAXユニット340および342の出力は、クアドレジスタTRsdに記憶される。図14に説明される命令は、クアドレジスタRmqに含有されるデータ値を、レジスタペアTRmdおよびTRndに含有されるそれぞれのデータ値に加算し、2つの加算ユニットの出力の最大値を選択し、そして選択された最大値に訂正ファクタを加算する。
第2のタイプのlog MAP命令に応答して、実行されるオペレーションを説明するデータフロー線図が、図15に図示される。図14および図15において同等の要素は、同一の参照符号を有する。図14の加算ユニット330、332、334および336が、減算ユニット350、352、354および356にそれぞれ置換されていることを除いて、図15に図示されるオペレーションは、図14に図示されるものと類似している。したがって、TMAXユニット340は、減算ユニット350および354の出力を受信し、TMAXユニット342は、減算ユニット352および356の出力を受信する。図15で説明される命令は、クアドレジスタRmqに含有されるデータ値をレジスタペアTRmdおよびTRndに含有されるデータ値から減算し、2つの減算ユニットの出力の最大値を選択し、そして選択された最大値に訂正ファクタを加算する。
トレリス関数の対数尤度率を計算するためのソフトウェアコードの例が、図16に示される。このコードは、TMAX命令を使用して実行され、これは図14および図15で図示され、以上で説明されたオペレーションを実行する。図16において、TMAX命令は、図14または図15に示されるように、それぞれ2つのlog MAP計算のための計算を指定する。TMAX命令は、4つのlog MAP計算の総計を提供するために、演算ブロック112および114(図7)において実行される。
図16の第1命令ラインにおいて、TR1:0およびTR3:2は、レジスタペアTRmdおよびレジスタペアTRndにそれぞれ対応する。また、第1命令ラインにおいて、R9:8およびR11:10は、図14のクアドレジスタRmqに対応する。指定されたレジスタに含有されるデータ値は、図14もしくは図15に示されるように、そして以上で説明されたように処理される。この命令は、単一のTMAX命令に応答して、4つのlog MAP計算を実行するために、両方の演算ユニットにおいて、異なるデータ値を伴って実行されてもよいと理解されるであろう。
図16のソフトウェアコードの第1命令ラインの実行が、図17を参照して説明される。図17に示されるように、演算ブロック112のアクセラレータ回路300は、レジスタペアTR1:0、R9:8、TR3:2およびR11:10からデータ値を受信し、出力データ値をレジスタペアTR9:8に供給する。同様に、演算ブロック114のアクセラレータ回路302は、レジスタペアTR1:0、R9:8、TR3:2およびR11:10からデータ値を受信し、出力データ値をレジスタペアTR9:8に供給する。それぞれアクセラレータ回路300および302は、図14または図15に示されるオペレーションを、該命令が指定するように実行する。
それぞれアクセラレータ回路300および302(図12、図13、および図17)の態様が、図18に示される。アクセラレータ回路は、第1パイプラインステージ400、第2パイプラインステージ402および第3パイプラインステージ404を含むパイプライン構造を有する。第1パイプラインステージ400と第2パイプラインステージ402は、ステージレジスタ410および412を通じて接続され、第2パイプラインステージ402と第3パイプラインステージ404は、ステージレジスタ414を通じて接続される。第1ステージ400は、EXORゲート(exclusive OR gate)、4入力キャリーセーブ加算器424および32ビット加算器426を含む。第2ステージ402は、マルチプレクサ430、ルックアップテーブル432および3入力キャリーセーブ加算器434を含む。第3ステージ404は、32ビット加算器440を含む。レジスタ414のバイパス結果出力は、2つのパイプライン位相を以下に説明されるように実行するために、マルチプレクサ442を通じて、入力OP1および入力OP2につながれる。
図18に示されるアクセラレータ回路は、ACS命令を実行するために使用されてもよい。図9を参照して、ACS命令は、以下のオペレーションを実行する。

MAX(TRmd+Rm,TRnd−Rm)+C (3)

ここで、Cは任意の訂正ファクタである。MAXオペレーションは、下記を得るための、係る括弧の2つの値の減算に相当する。

TRmd−TRnd+2Rm (4)
そして、該回路は、数式(4)の値が正であるか負であるかを決定する。数式(4)の値が正である場合、数式(3)の括弧内の第1項が最大値であり、前記値が負である場合、数式(3)の括弧内の第2項が最大値である。
ACS命令の実行されているとき、レジスタTRmdのデータ値は、入力OP1および入力OP2に供給され、レジスタTRndのデータ値は、入力OP3に供給され、またデータ値2Rmは、入力OP4に供給される。32ビット加算器426の出力は、上記数式の値を表す。この値は、ルックアップテーブル432の訂正ファクタにアクセスするために使用される。32ビット加算器426の出力のサインは、マルチプレクサ430のための制御信号として使用され、それにより、TRmdとRm、あるいはTRndとRmを選択する。選択される値およびルックアップテーブル432の出力は、キャリーセーブ加算器434の入力に供給される。32ビット加算器440の出力は、選択される最大値とルックアップテーブル432によって提供される訂正ファクタCとの合計を表す。
2つのパイプラインサイクルへのACS命令の実行時間を減少させるために、キャリーセーブ加算器434の出力は、キャリーセーブ加算器424の入力OP1および入力OP2に供給されてもよい。以前のACS命令の結果が使用されているとき、加算器424のキャリー出力は、マルチプレクサ442を通じて、入力OP1に供給されてもよく、加算器424のサム(sum)出力は、マルチプレクサ442を通じて、入力OP2に供給されてもよい。アクセラレータへの入力は、レジスタから提供され、そしてバイパス関数は利用されず、レジスタ入力は、マルチプレクサ442を通じて、入力OP1に供給される。もし訂正ファクタが、ACS命令において利用されないような場合ならば、ルックアップテーブル432の出力は、ゼロである。
図18に示されるアクセラレータ回路は、TMAX命令を実行するために使用されてもよい。図14を参照して、TMAX命令は、以下のオペレーションを実行する。

MAX(TRmd+Rm3,TRnd+Rm1)+C (5)

数式(5)のMAXオペレーションは、以下のような2つの値の減算に相当する。

TRmd+Rm3−TRnd−Rm1 (6)

そして、該回路は、数式(6)の値が正であるか負であるかを決定する。数式(6)の値が正である場合、数式(5)の括弧内の第1項が最大値であり、前記値が負である場合、数式(5)の括弧内の第2項が最大値である。
図18を参照して、TMAX命令を実行するために、レジスタTRmdの値が入力OP1に供給され、レジスタRm1の値が入力OP2に供給され、またレジスタTRndの値がOP3に供給され、レジスタRm2の値が入力OP4に供給される。ACSに類似の様式で、32ビット加算器426は、ルックアップテーブル432にアクセスするために使用され、加算器426の出力のサインは、マルチプレクサ430を制御するために使用される。マルチプレクサ430は、最大値を選択し、最大値をキャリーセーブ加算器434に供給する。加算器434は、出力結果を提供するために、選択される最大値とルックアップテーブル432からの訂正値を加算する。
現時点における本発明の好適な態様として考慮されるものについて、以上に示され、説明されたが、付記の特許請求の範囲に係る発明の範囲を離れない各種の変種および改変は、当業者にとって容易に想到し得るものとみなされるであろう。
ワイヤレス基地局の信号チェーンのブロック線図である。 ターボ復号アルゴリズムのブロック線図である。 8状態トレリスの概要の説明図である。 トレリスのαメトリックの計算式の説明図である。 トレリスのβメトリックの計算式の説明図である。 トレリスの対数尤度率の計算式の説明図である。 本発明の側面に従うチャンネル復号を実行するために適するデジタル信号プロセッサのブロック線図である。 図7のデジタル信号プロセッサ中に示されるそれぞれの演算ブロックの態様のブロック線図である。 トレリス命令に応答して実行され得る演算の第1の態様を説明するデータフロー線図である。
トレリス命令に応答して実行され得る演算の第2の態様を説明するデータフロー線図である。 本発明の側面にしたがって、ターボチャンネル復号を実行するソフトウェアコードの説明図である。 第1デジタル信号プロセッササイクルにおけるトレリス状態S0―S3でのαメトリックおよびβメトリックの計算を説明する概要のブロック線図である。 第2デジタル信号プロセッササイクルにおけるトレリス状態S4―S7でのαメトリックおよびβメトリックの計算を説明する概要のブロック線図である。 第1log MAP命令に応答して実行されるオペレーションを説明するデータフロー図である。 第2log MAP命令に応答して実行されるオペレーションを説明するデータフロー図である。 log MAP命令を使用するトレリスの対数尤度率を計算するためのソフトウェアコードの説明図である。 図16のソフトウェアコードにおける第1命令ラインの実行に使用されるハードウェアのコンポーネントを説明するブロック線図である。 図8のアクセラレータの態様を説明するブロック線図である。

Claims (24)

  1. デジタル信号プロセッサにおいて、信号値を処理する方法であって:
    選択されるトレリス状態において、信号値に基づいて、時間tでのトレリス状態メトリック、および時間tから時間tへの遷移メトリックを指定する単一のトレリス命令に応答して:
    時間tでの第1状態メトリックに遷移メトリックを加算し、第1の値を提供するステップ;
    時間tでの第2状態メトリックから遷移メトリックを減算し、第2の値を提供するステップ;
    それぞれの選択される状態メトリックにおいて、前記第1の値と前記第2の値とを比較するステップ;および
    それぞれの選択されるトレリス状態において、第1の値と第2の値のうち最大値を選択して、時間tでのトレリス状態メトリックを提供するステップを含み、
    前記単一のトレリス命令の前記加算、減算、比較、および選択するオペレーションは、前記デジタル信号プロセッサによって、前記単一のトレリス命令に応答して実行される、前記方法。
  2. それぞれの選択されるトレリス状態において、第1の値および第2の値の関数である訂正ファクタを前記最大値に加算するステップをさらに含む、請求項1に記載の方法。
  3. 訂正ファクタを加算するステップが、訂正ファクタを含有するルックアップテーブルにアクセスすることを含む、請求項2に記載の方法。
  4. 前記トレリス命令が、αトレリス状態メトリックを計算するための前方トレリス関数を実行する、請求項1に記載の方法。
  5. 前記トレリス命令が、βトレリス状態メトリックを計算するための逆方向トレリス関数を実行する、請求項1に記載の方法。
  6. 前記トレリス命令が、単一の命令、複数のデータアプローチを使用して、αトレリス状態メトリックを計算するための前方トレリス関数、およびβトレリス状態メトリックを計算するための逆方向トレリス関数を同時に実行する、請求項1に記載の方法。
  7. デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算するための方法であって:
    時間tでのαメトリックおよびトレリス命令によって指定される時間tから時間tへの遷移メトリックに応答して、選択されるトレリス状態における時間tでのαメトリックを計算するステップ;および
    時間tでのβメトリック、およびトレリス命令によって指定される時間tから時間tへの遷移メトリックに応答して、選択されるトレリス状態における時間tでのβメトリックを計算するステップを含み、
    選択されるトレリス状態におけるαメトリックを計算するステップが:
    それぞれの選択されるトレリス状態において、遷移メトリックを時間t での第1のαメトリックに加算して、第1の値を提供するステップ、前記遷移メトリックを時間t での第2のαメトリックから減算して、第2の値を提供するステップ;
    それぞれの選択されるトレリス状態において、対応する第1の値および第2の値を比較するステップ;および
    それぞれの選択されるトレリス状態において、対応する第1の値と第2の値のうち最大値を選択して、時間t でのαメトリックを提供するステップ、を含む、前記方法。
  8. 選択されるトレリス状態におけるαメトリックを計算するステップが、それぞれの選択されるトレリス状態において、対応する第1の値および第2の値の関数である訂正ファクタを前記最大値に加算するというステップをさらに含む、請求項に記載の方法。
  9. デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算する ための方法であって:
    時間t でのαメトリックおよびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのαメトリックを計算するステップ;および
    時間t でのβメトリック、およびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのβメトリックを計算するステップを含み、
    選択されるトレリス状態におけるβメトリックを計算するステップが:
    それぞれの選択されるトレリス状態において、遷移メトリックを時間tでの第1のβメトリックに加算して、第1の値を提供するステップ、遷移メトリックを時間tでの第2のβメトリックから減算して、第2の値を提供するステップ;
    それぞれの選択されるトレリス状態において、対応する第1の値および第2の値を比較するステップ;および
    それぞれの選択されるトレリス状態において、対応する第1の値と第2の値のうち最大値を選択して、時間tでのβメトリックを与えるステップ、を含む、前記方法。
  10. 選択されるトレリス状態におけるβメトリックを計算するステップが、それぞれの選択されるトレリス状態において、対応する第1の値および第2の値の関数である訂正ファクタを前記最大値に加算するというステップをさらに含む、請求項に記載の方法。
  11. デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算するための方法であって:
    時間t でのαメトリックおよびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのαメトリックを計算するステップ;および
    時間t でのβメトリック、およびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのβメトリックを計算するステップを含み、
    選択されるトレリス状態におけるαメトリックを計算するステップが、単一のトレリス命令に応答して、複数のトレリス状態におけるαメトリックを計算するステップを含む、前記方法。
  12. デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算するための方法であって:
    時間t でのαメトリックおよびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのαメトリックを計算するステップ;および
    時間t でのβメトリック、およびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのβメトリックを計算するステップを含み、
    選択されるトレリス状態におけるβメトリックを計算するステップが、単一のトレリス命令に応答して、複数のトレリス状態におけるβメトリックを計算するステップを含む、前記方法。
  13. デジタル信号プロセッサにおいて、トレリス関数のメトリックを計算するための方法であって:
    時間t でのαメトリックおよびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのαメトリックを計算するステップ;および
    時間t でのβメトリック、およびトレリス命令によって指定される時間t から時間t への遷移メトリックに応答して、選択されるトレリス状態における時間t でのβメトリックを計算するステップを含み、
    αメトリックを計算するステップとβメトリックを計算するステップとが、同時に行われる、前記方法。
  14. デジタル信号プロセッサにおいて、log MAP関数を計算する方法であって:
    第1、第2、第3、および第4のパラメータの位置を指定するlog MAP命令に応答して、第1パラメータと第2パラメータの和もしくは差を計算し、第1の値を提供するステップ、第3パラメータと第4パラメータの和もしくは差を計算して、第2の値を提供するステップ;
    第1の値と第2の値のうち最大値を選択するステップ;および
    第1の値および第2の値の関数である訂正ファクタを前記最大値に加算して、log MAP結果を提供するステップ、を含む、前記方法。
  15. 訂正ファクタを加算するステップが、訂正ファクタを含有するルックアップテーブルにアクセスすることを含む、請求項14に記載の方法。
  16. 単一のlog MAP命令に応答して、2以上のlog MAP結果が計算される、請求項14に記載の方法。
  17. 信号値を処理するためのプロセッサであって:
    デジタル信号演算のための命令およびオペランドを記憶するメモリ;
    前記命令のうち選択されるものを前記メモリからフェッチする命令アドレスを生成するためのプログラムシーケンサ;および
    演算ブロックであって、オペランドおよび結果を一時的に記憶するためのレジスタファイルと、時間tでのトレリス状態メトリックの位置、および時間tから時間tへの遷移メトリックの位置を指定するトレリス命令を実行するためのアクセラレータであって、前記トレリス状態メトリックが信号値に基づくものであり、遷移メトリックを時間tでの第1状態メトリックに加算して、第1の値を提供する加算器と、時間tでの第2状態メトリックから前記遷移メトリックを減算して、第2の値を提供する加算器と、それぞれのトレリス状態において第1の値および第2の値のうち、最大値を決定するための比較器と、選択されるトレリス状態において第1の値および第2の値のうち、最大値を選択するためのデータセレクタとを含む、前記アクセラレータとを含み、前記アクセラレータの加算器、比較器およびデータセレクタは、プロセッサの単一のクロックサイクルで、単一のトレリス命令に応答してトレリス命令の加算、減算、比較、および選択のオペレーションを実行するように構成されている、前記演算ブロック、を含む、前記プロセッサ。
  18. デジタル信号演算のための命令およびオペランドを記憶するメモリと;
    前記命令のうち選択されるものを前記メモリからフェッチする命令アドレスを生成するためのプログラムシーケンサと;
    演算ブロックであって、オペランドおよび結果を一時的に記憶するためのレジスタファイルと、第1、第2、第3、および第4のパラメータの位置を指定するlog MAP命令を実行するためのアクセラレータであって、第1パラメータと第2パラメータの和もしくは差を計算して、第1の値を提供する第1加算器、および第3パラメータと第4パラメータの和もしくは差を計算して、第2の値を提供する第2加算機を含む前記アクセラレータと、第1の値および第2の値のうち、最大値を選択するためのデータセレクタと、第1の値および第2の値の関数である訂正ファクタを生成するためのルックアップテーブルと、訂正ファクタを前記最大値に加算して、log MAPの結果を提供するための第3加算器、を含む前記演算ブロック、とを含むプロセッサ。
  19. 請求項17に記載されたデジタル信号プロセッサにおいて使用されるアクセラレータであって:
    アクセラレータへの入力を受信する第1キャリーセーブ加算器と;
    前記第1キャリーセーブ加算器のサム出力とキャリー出力とを組み合わせる第1全加算器と;
    前記第1全加算器の出力に応答して、訂正ファクタを生成するルックアップテーブルと;
    前記第1全加算器の出力サインに応答して、1または2以上のアクセラレータへの入力を選択するためのマルチプレクサと;
    1または2以上のマルチプレクサの出力とルックアップテーブルの出力を加算するための第2キャリーセーブ加算器と;
    前記第2キャリーセーブ加算器のサム出力とキャリー出力とを組み合わせる第2全加算器、
    とを含む、前記アクセラレータ。
  20. 第1キャリーセーブ加算器が4個の入力を有し、マルチプレクサが4個の出力のうち2個を選択し、第2キャリーセーブ加算器が3個の入力を有する、請求項19に記載のアクセラレータ。
  21. 前記第2キャリーセーブ加算器のサム出力とキャリー出力とを第1キャリーセーブ加算器の出力に供給するためのデータセレクタをさらに含む、請求項20に記載のアクセラレータ。
  22. 前記第1キャリーセーブ加算器および前記第1全加算器が、第1パイプラインステージを含み、前記ルックアップテーブル、前記マルチプレクサ、および前記第2キャリーセーブ加算器が、第2パイプラインステージを含み、前記第2全加算器が第3パイプラインステージを含む、請求項19に記載のアクセラレータ。
  23. アクセラレータが、第1および第2の値の関数である訂正ファクタを、第1の値および第2の値のうちの最大値に加算するための追加の加算器を含む、請求項17に記載のプロセッサ。
  24. アクセラレータが、訂正ファクタを含有するルックアップテーブルを含む、請求項23に記載のプロセッサ。
JP2003520088A 2001-08-06 2002-08-06 デジタル信号プロセッサにおける高性能ターボチャンネル復号およびViterbi(ビタビ)チャンネル復号 Expired - Fee Related JP4193989B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/923,225 US7661059B2 (en) 2001-08-06 2001-08-06 High performance turbo and Viterbi channel decoding in digital signal processors
PCT/US2002/024703 WO2003015286A1 (en) 2001-08-06 2002-08-06 High performance turbo and virterbi channel decoding in digital signal processors

Publications (3)

Publication Number Publication Date
JP2004538704A JP2004538704A (ja) 2004-12-24
JP2004538704A5 JP2004538704A5 (ja) 2006-01-05
JP4193989B2 true JP4193989B2 (ja) 2008-12-10

Family

ID=25448337

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003520088A Expired - Fee Related JP4193989B2 (ja) 2001-08-06 2002-08-06 デジタル信号プロセッサにおける高性能ターボチャンネル復号およびViterbi(ビタビ)チャンネル復号

Country Status (5)

Country Link
US (1) US7661059B2 (ja)
EP (1) EP1417768B1 (ja)
JP (1) JP4193989B2 (ja)
CN (1) CN100336305C (ja)
WO (1) WO2003015286A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6906978B2 (en) * 2002-03-19 2005-06-14 Intel Corporation Flexible integrated memory
US7246298B2 (en) 2003-11-24 2007-07-17 Via Technologies, Inc. Unified viterbi/turbo decoder for mobile communication systems
WO2009053490A2 (en) 2007-10-26 2009-04-30 Qualcomm Incorporated Optimized viterbi decoder and gnss receiver
US8271858B2 (en) * 2009-09-03 2012-09-18 Telefonaktiebolget L M Ericsson (Publ) Efficient soft value generation for coded bits in a turbo decoder
US9389854B2 (en) * 2013-03-15 2016-07-12 Qualcomm Incorporated Add-compare-select instruction
US11451840B2 (en) * 2018-06-18 2022-09-20 Qualcomm Incorporated Trellis coded quantization coefficient coding

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823346A (en) * 1986-04-16 1989-04-18 Hitachi, Ltd. Maximum likelihood decoder
US5295142A (en) * 1989-07-18 1994-03-15 Sony Corporation Viterbi decoder
US5220570A (en) * 1990-11-30 1993-06-15 The Board Of Trustees Of The Leland Stanford Junior University Programmable viterbi signal processor
US5291499A (en) * 1992-03-16 1994-03-01 Cirrus Logic, Inc. Method and apparatus for reduced-complexity viterbi-type sequence detectors
DE4224214C2 (de) * 1992-07-22 1995-02-09 Deutsche Forsch Luft Raumfahrt Verfahren zur quellengesteuerten Kanaldecodierung durch Erweiterung des Viterbi-Algorithmus
US5490178A (en) * 1993-11-16 1996-02-06 At&T Corp. Power and time saving initial tracebacks
US5412669A (en) * 1993-12-09 1995-05-02 Cirrus Logic, Inc. Add, compare and select circuit
US6307868B1 (en) 1995-08-25 2001-10-23 Terayon Communication Systems, Inc. Apparatus and method for SCDMA digital data transmission using orthogonal codes and a head end modem with no tracking loops
US6028899A (en) * 1995-10-24 2000-02-22 U.S. Philips Corporation Soft-output decoding transmission system with reduced memory requirement
US5742621A (en) * 1995-11-02 1998-04-21 Motorola Inc. Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor
US5933462A (en) * 1996-11-06 1999-08-03 Qualcomm Incorporated Soft decision output decoder for decoding convolutionally encoded codewords
US5987490A (en) * 1997-11-14 1999-11-16 Lucent Technologies Inc. Mac processor with efficient Viterbi ACS operation and automatic traceback store
JP4178752B2 (ja) * 1998-05-28 2008-11-12 ソニー株式会社 畳み込み符号の軟出力復号装置及び軟出力復号方法
US6343368B1 (en) * 1998-12-18 2002-01-29 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for fast maximum a posteriori decoding
DE60007956T2 (de) 2000-02-21 2004-07-15 Motorola, Inc., Schaumburg Vorrichtung und Verfahren zur SISO Dekodierung
US6865710B2 (en) 2000-09-18 2005-03-08 Lucent Technologies Inc. Butterfly processor for telecommunications
US6393076B1 (en) * 2000-10-11 2002-05-21 Motorola, Inc. Decoding of turbo codes using data scaling
JP3540224B2 (ja) * 2001-03-06 2004-07-07 シャープ株式会社 ターボ復号器とターボ復号方法及びその方法を記憶した記憶媒体
US6848074B2 (en) * 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system

Also Published As

Publication number Publication date
CN1554152A (zh) 2004-12-08
CN100336305C (zh) 2007-09-05
WO2003015286A1 (en) 2003-02-20
US20030028845A1 (en) 2003-02-06
EP1417768A1 (en) 2004-05-12
EP1417768B1 (en) 2013-05-29
EP1417768A4 (en) 2006-10-18
US7661059B2 (en) 2010-02-09
JP2004538704A (ja) 2004-12-24

Similar Documents

Publication Publication Date Title
JP3358996B2 (ja) 自動ビタビトレースバックビット格納機能を有する並列算術論理プロセッサ
US5946361A (en) Viterbi decoding method and circuit with accelerated back-tracing and efficient path metric calculation
US7139968B2 (en) Processing unit and processing method
US8495119B2 (en) Efficient check node message transform approximation for LDPC decoder
US6848074B2 (en) Method and apparatus for implementing a single cycle operation in a data processing system
US20040225949A1 (en) Method and apparatus for implementing a data processor adapted for turbo decoding
JP4907802B2 (ja) 通信の復号化の際に用いられるバタフライプロセッサ装置
US5517439A (en) Arithmetic unit for executing division
US6754870B2 (en) CRC operation unit and CRC operation method
JP4193989B2 (ja) デジタル信号プロセッサにおける高性能ターボチャンネル復号およびViterbi(ビタビ)チャンネル復号
JP2002152057A (ja) トレリス処理装置の適切なパスメトリックアドレスを計算する装置と方法。
JPH09153822A (ja) データ処理システムにおける加算比較選択バタフライ演算およびその命令を実行する方法
US7958437B2 (en) MAP detector with a single state metric engine
US8171265B2 (en) Accelerating traceback on a signal processor
EP1058392A1 (en) Method for implementing a plurality of add-compare-select butterfly operations in parallel, in a data processing system
JP3454393B2 (ja) データ処理装置
KR100414152B1 (ko) 프로그래머블 프로세서에서의 비터비 디코딩 연산방법 및그 연산방법을 실행하기 위한 연산회로
US7171609B2 (en) Processor and method for convolutional decoding
JP3338371B2 (ja) ビタビ復号器
JPH07336239A (ja) ビタビ復号器
JP3996858B2 (ja) 演算処理装置
JP2000252840A (ja) 誤り訂正復号器
JPH0816363A (ja) 演算回路
SC140 How to Implement a Viterbi Decoder on the
JPH10242871A (ja) データ処理装置及びデータ処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050726

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050726

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080826

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080917

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111003

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121003

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131003

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees