JP5242796B2 - アドレス発生 - Google Patents

アドレス発生 Download PDF

Info

Publication number
JP5242796B2
JP5242796B2 JP2011527850A JP2011527850A JP5242796B2 JP 5242796 B2 JP5242796 B2 JP 5242796B2 JP 2011527850 A JP2011527850 A JP 2011527850A JP 2011527850 A JP2011527850 A JP 2011527850A JP 5242796 B2 JP5242796 B2 JP 5242796B2
Authority
JP
Japan
Prior art keywords
sum
address
processing unit
adder
output
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.)
Active
Application number
JP2011527850A
Other languages
English (en)
Other versions
JP2012503248A (ja
Inventor
スターリング,コリン
ローリー,デイビッド・アイ
アンドルーズ,デイビッド
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2012503248A publication Critical patent/JP2012503248A/ja
Application granted granted Critical
Publication of JP5242796B2 publication Critical patent/JP5242796B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2739Permutation polynomial interleaver, e.g. quadratic permutation polynomial [QPP] interleaver and quadratic congruence interleaver

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Error Detection And Correction (AREA)
  • Logic Circuits (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Executing Machine-Instructions (AREA)

Description

発明の分野
本発明は、集積回路デバイス(IC)に関する。より特定的には、本発明はICによるアドレス発生に関する。
発明の背景
プログラマブルロジックデバイス(PLD)は、特定の論理機能を実行するようにプログラム可能な周知の種類の集積回路である。PLDの一種であるフィールドプログラマブルゲートアレイ(FPGA)は、典型的にはプログラマブルタイルの列を含む。これらのプログラマブルタイルは、たとえば、入力/出力ブロック(IOB)と、コンフィギュラブルロジックブロック(CLB)と、専用のランダムアクセスメモリブロック(BRAM)と、乗算器と、デジタル信号処理ブロック(DSP)と、プロセッサと、クロックマネージャと、ディレイロックループ(DLL)などを含みうる。本明細書で用いられるように「含む(include)」および「含む(including)」との用語は、制限なしに含むことを意味する。
各プログラマブルタイルは、典型的には、プログラマブルインターコネクトおよびプログラマブルロジックの両方を含む。プログラマブルインターコネクトは、典型的には、プログラマブルインターコネクトポイント(PIP)によって相互接続される、長さを変化させる多数のインターコネクトラインを含む。プログラマブルロジックは、プログラマブル要素を用いてユーザ設計のロジックを実現し、当該プログラマブル要素は、たとえばファンクションジェネレータ、レジスタ、数値演算ロジックなどを含み得る。
プログラマブルインターコネクトおよびプログラマブルロジックは、典型的には、プログラマブル要素がどのようにして構成されるかを定義するインターナルコンフィギュレーションメモリセルに、コンフィギュレーションデータのストリームをロードすることによってプログラムされる。コンフィギュレーションデータは、メモリ(たとえば外部のPROM)から読出されることができ、あるいは外部装置によってFPGAに書込まれることができる。そして個々のメモリセルの集合的なステータスがFPGAの機能を決定する。
別の種類のPLDは、コンプレックスプログラマブルロジックデバイスあるいはCPLDと呼ばれるものである。CPLDは、2以上の「機能ブロック」を含み、それらの機能ブロックは、インターコネクトスイッチマトリクスによって、ともに接続されるとともに入出力(I/O)リソースに接続される。CPLDの各機能ブロックは、2レベルAND/OR構造を含み、その構造は、プログラマブルロジックアレイ(PLA)およびプログラマブルアレイロジック(PAL)デバイスにおいて用いられる構造と同様である。CPLDにおいては、設定データ(configuration data)は典型的には不揮発性メモリに内蔵されており、初期設定(プログラミング)シーケンスの一部として揮発性メモリにダウンロードされる。
これらプログラマブルロジックデバイス(PLD)の全ての場合、デバイスの機能性は、その目的のために当該デバイスに与えられるデータビットによって制御される。データビットは揮発性メモリ(たとえばFPGAおよびいくつかのCPLDではスタティックメモリセル)、あるいは不揮発性メモリ(たとえばいくつかのCPLDにおいては、フラッシュメモリ)、あるいは、他の種類のメモリセルに記憶されうる。
他のPLDは、金属層のような、デバイスの様々な素子をプログラム可能に接続する処理層を利用することによってプログラムされる。これらのPLDは、マスクプログラマブルデバイスとして知られている。PLDは、たとえばフューズまたはアンチフーズ技術を用いるといった、他の方法でも実現されうる。「PLD」および「プログラマブルロジックデバイス」との用語は、部分的にのみプログラム可能な包括的なデバイスと同じく、これらの例示的デバイスも含むが、それらに限定されるものではない。たとえば一種のPLDは、ハードコードされた(hard-coded)トランジスタロジックと、ハードコードされたトランジスタロジックをプログラム可能に相互接続する、プログラム可能なスイッチファブリックとの組み合わせを含む。
ターボチャネル符号は、従来、データを符号化するために用いられる。ターボ符号は、データが受信された順番およびインターリーブされた(interleaved)順番でデータを使用する。従って、元のデータは2回用いられる。ターボチャネル符号により、それは、畳み込まれた符号を意味する。データはインターリーバ(interleaver)を用いてシャッフルされ、そのようなインターリーバはエンコーダ、デコーダ、またはエンコーダ/デコーダ(コーデック)の一部でありうる。
データは符号化に先立ってインターリーブされ、そして、復号のためにデインターリーブ(deinterleaved)されうる。あるコーディングでは、符号化と復号とのいずれか一方または両方を含むが、システムは、並行処理を通じて高スループットを達成する。データは一般にエンコーダによってインターリーブされ、デコーダによってデインターリーブされる。復号は符号化よりも計算での労力を要し、システム全体の高スループットを達成するためには、デコーダで並列にデインターリーブを実現可能としなければならない。
第3世代パートナーシッププロジェクト(3GPP)において、2次置換多項式(quadratic permutation polynomial;QPP)インターリーバは、提案されるロングタームエボリューション(LTE)3GPP仕様書中に付記されて、競合のないアドレス指定を容易にする。3GPP LTEに関する追加の詳細は、htttp://www.3gpp.orgにおいて見つかりうる。特に、3GPP TS 36.212 バージョン8.3.0 技術仕様書(2008年5月)は、チャネルコーディングと、多重化と、インターリーブとを、そのセクション5、特にチャネルインターリーバを記述するサブセクション5.1.3,5.1.4.1.1および5.2.2.8において開示する。
QPPインターリーバの使用は、データの個々のブロックを複数のスレッドに分解して並列に処理することを可能にする。複数の独立したデータのブロックの各々が、その処理されたスレッドを有するならば、すべてのそのようなデータブロックのそのようなスレッドを並列に処理することは、QPPインターリーバを複製することを含む。したがって、QPPインターリーバを実現するために用いられるインターリーバ回路のサイズおよび性能は、ターボチャネル符号の符号化および復号の両方の効率に影響を与えるということが理解されるべきである。
発明の概要
アドレス発生器の実施形態は、第1の処理ユニットと、第1の処理ユニットからのステージ出力を受けるために結合されて、アドレス出力を提供するように構成された第2の処理ユニットとを備える。ステージ出力は、ブロックサイズがKの場合に−Kから−1までの第1の範囲内にあり、アドレス出力は0からK−1までの第2の範囲内である。
この実施形態において、アドレス発生器は、エンコーダ、デコーダおよびコーデックからなるグループから選択された符号化デバイスの一部であり得るが、その場合において、アドレス発生器は、2次置換多項式インターリービングのためのアドレス出力を提供する。アドレス出力は複数のアドレスシーケンスを含み得る。第1の処理ユニットと第2の処理ユニットとは、それぞれ、第1の初期化値または第2の初期化値で初期化され得る。第1の初期化値は複数のアドレスシーケンスのうちの第1のシーケンスのためのものであり得るとともに、第2の初期化値は複数のアドレスシーケンスのうちの第2のシーケンスのためのものであり得る。アドレス出力は、0からK−1までのアドレスシーケンスの少なくとも一部のためのものであり得る。第1の処理ユニットは、第1の初期化値および第2の初期化値で初期化され得る。第2の処理ユニットは、第3の初期化値および第4の初期化値で初期化され得る。
この実施形態において、第1の処理ユニットは、第1の加算器と、第1の加算器に結合された第1のレジスタと、第1のレジスタに結合された第1のマルチプレクサと、第1のマルチプレクサおよび第1のレジスタに結合された第1の減算器と、その減算器に結合されてステージ出力を出力する第2のレジスタとを備え得るが、ステージ出力は、第1の加算器へフィードバックされる。第1のレジスタは第1のシーケンスを処理可能であり、第2のレジスタは第2のシーケンスを同時に処理可能である。第2の処理ユニットは、ステージ出力を受けるための第2の加算器と、第2の加算器に結合された第3のレジスタと、第3のレジスタに結合された第2のマルチプレクサと、第2のマルチプレクサおよび第3のレジスタに結合された第3の加算器と、第3の加算器に結合されてアドレス出力を出力する第4のレジスタとを備え得るが、アドレス出力は第2の加算器の入力にフィードバックされ得る。
アドレスを発生させるための方法の実施形態は、ステップサイズとブロックサイズとを取得するステップと、第1の初期化値および第2の初期化値を取得するステップと、ステップサイズを差分に加算して第1の和を提供するステップと、第1の和の符号ビットに応答して、第1の和からヌル値またはブロックサイズのいずれかを減算して、他の差分を提供するステップとを備え、他の差分は、ブロックサイズがKの場合に−Kから−1までの範囲内にあり、方法は、第1の和または他の差分を登録するステップと、他の差分をステップサイズに加算するために他の差分をフィードバックするステップとをさらに備える。
この実施形態において、方法は、他の差分を第3の和に加算することによって第2の和を生成するステップと、第2の和の符号ビットに応答してヌル値またはブロックサイズのいずれかを第2の和に加算して、他の第3の和を提供するステップとをさらに備え得るが、他の第3の和は0からK−1までの範囲内にある。方法は第2の和または他の第3の和を登録するステップと、加算するステップの別の繰返しのための他の第3の和をフィードバックして第2の和を提供するステップとをさらに備える。第1の和または他の差分を登録することは、パイプライン動作のためのそれぞれのフィードバックループ内の他の差分を登録するステップを含み得るが、第2の和または他の第3の和を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の他の第3の和を登録するステップを含み得る。第1の和または他の差分を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の第1の和を登録するステップを含み得るが、第2の和または他の第3の和を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の第2の和を登録するステップを含み得る。ステップサイズを差分に加算して第1の和を提供するステップは、他の差分の第3の和の加算によって第2の和を提供するための加算するステップと同時に実行され得る。方法は、さらに2次置換多項式インターリービングのための他の第3の和を提供するステップを備え得る。
添付の図面は、本発明の1以上の局面に従う例示的実施形態を示す。しかしながら、添付の図面は示された実施形態に本発明を限定するものと捉えられるべきではなく、単に説明と理解とのためのものである。
本発明の1以上の局面において実現され得る、コラムナ(columnar)フィールドプログラマブルゲートアレイ(FPGA)アーキテクチャの例示的実施形態を示す単純化したブロック図である。 インターリーバの例示的実施形態を示すブロック図である。 図2のインターリーバのアドレス発生器の例示的実施形態を示す回路図である。 図3のアドレス発生器のアドレス発生フローの例示的実施形態を示すフロー図である。 アドレス発生フローの例示的実施形態を示す擬似コードリストの図である。
詳細な説明
以下の説明において、多数の具体的な詳細が説明されて、本発明の具体的実施形態のより完全な説明が提供される。しかしながら当業者は、以下に示される具体的詳細のすべてがなくても本発明が実施され得ることを理解すべきである。他の例においては、周知の特徴が詳細に記述されていないが、それによって発明が不明瞭とはならない。図示を容易にするため、異なる図において用いられる同一の参照符号は、同じ要素を参照する。しかしながら代替的な実施形態において要素は異なり得る。
上記のように、アドバンスドFPGAは、アレイ中にいくつかの異なる種類のプログラマブルロジックブロックを含みうる。たとえば図1は、FPGAアーキテクチャ100を示し、FPGAアーキテクチャ100は、マルチギガビットトランシーバ(MGT)101と、コンフィギュラブルロジックブロック(CLB)102と、ランダムアクセスメモリブロック(BRAM)103と、入力/出力ブロック(IOB)104と、コンフィギュレーションおよびクロックロジック(CONFIG/CLOCKS)105と、デジタル信号処理ブロック(DSP)106と、特殊入力/出力ブロック(I/O)107(たとえばコンフィギュレーションポートおよびクロックポート)と、デジタルクロックマネージャ、アナログデジタル変換器、システム監視ロジックなどといった、その他のプログラマブルロジック108を含む、多数の異なるプログラマブルタイルを含む。いくつかのFPGAはまた、専用のプロセッサブロック(PROC)110を含む。
いくつかのFPGAにおいて、各プログラマブルタイルは、プログラマブルインターコネクト要素(INT)111を含み、そのプログラマブルインターコネクト要素は、各隣り合うタイル中の対応するインターコネクト要素への、およびそのインターコネクト要素からの標準化された接続を有する。したがって、集められたプログラマブルインターコネクト要素は、図示されたFPGAに対するプログラマブルインターコネクト構造を実現する。プログラマブルインターコネクト要素111はまた、図1の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジック要素へのそのプログラマブルロジック要素からの接続を含む。
たとえば、CLB102は、単一のプログラマブルインターコネクト要素(INT)111を加えたユーザロジックを実現するためにプログラムされることが可能なコンフィギュラブルロジック要素(CLE)112を含みうる。BRAM103は、1以上のプログラマブルインターコネクト要素に加えてBRAMロジック要素(BRL)113を含みうる。典型的には、タイルに含まれるインターコネクト要素の数はタイルの高さに依存する。図示された実施の形態においては、BRAMタイルは5つのCLBと同じ高さを有するが、他の数(たとえば4)もまた用いられることができる。DSPタイル106は適切な数のプログラマブルインターコネクト要素に加えてDSPロジック要素(DSPL)114を含むことができる。IOB104は、プログラマブルインターコネクト要素(INT)111の1つのインスタンスに加えて入力/出力ロジック要素(IOL)115の2つのインスタンスを含むことができる。当業者にとっては明らかであるように、たとえばI/Oロジック要素115に接続される実際のI/Oパッドは、入力/出力ロジック要素115の領域に限定されない。
図示された実施の形態において、ダイの中心近くの縦領域(図1に示す)は、コンフィギュレーション、クロックおよび他の制御ロジックのために用いられる。この列から延びる水平領域309は、FPGAの幅を横切るクロックおよびコンフィギュレーション信号を分配するために用いられる。
図1に示されたアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を形成する規則的な列構造を満たす、付加的なロジックブロックを含む。その付加的なロジックブロックは、プログラマブルブロックおよび/または専用ロジックとされうる。たとえば、図1に示されたプロセッサブロック110は、CLBおよびBRAMの複数の列に及ぶ。
図1は、単に例示的なFPGAアーキテクチャを示すことを意図していることに注意すべきである。たとえば、1列中のロジックブロックの数、列の相対的な幅、列の数および順序、列に含まれるロジックブロックの種類、ロジックブロックの相対的なサイズ、図1の上部に含まれる相互接続/ロジック構成は、純粋に例示的なものである。たとえば、実際のFPGAにおいては、ユーザロジックの効率的な実現を容易にするために、CLBが現れるところではどこでも、CLBの1以上の隣り合う列が典型的に含まれる。
上記のように、QPPインターリーバはLTE 3GPP仕様書において規定されて、そのようなQPPインターリーバはブロックサイズKの2次方程式モジュロ(quadratic equation modulo)として策定され得る。具体的なQPPインターリーブ処理の直接的な実現は、複雑な乗算と複雑なモジュロ演算とを含むが、それらはハードウェアで実現するには極端に非効率的である。より効率的なハードウェアでの実現は、2008年3月31日に出願された出願番号12/059,731(代理人整理番号 X−2726US)である、ベン・J・ジョーンズ(Ben J. Jones)らによる「2次置換多項式インターリーブのためのアドレス発生("Address Generation for Quadratic Permutation Polynomial Interleaving")」と題された同時係属の米国出願(以下、「ジョーンズ」)に記述される。ジョーンズは、加算器、減算器およびマルチプレクサのような選択回路を用いて実現され得る回路を作成するために、2次方程式の解(quadratic formula)がどのようにして削減され得るかということを示すとともに説明している。以下においてさらに詳細に説明するように、インターリーブのためのアドレス発生のためのより一層単純化した回路は、ジョーンズに関連する選択動作を削除して、ジョーンズの多数の加算器および減算器を削減することによって得られ得る。さらに、ジョーンズと比較して、そのような回路の削減は、結果としてレジスタの数(count)を削減するが、以下の説明から、そのような単純化したアドレス発生器はジョーンズのそれと同じまたは匹敵する性能を有しているということが理解されるべきである。ジョーンズと比較される別の削減は、以下において詳細に説明されるように、初期化値が同時に適用され得るにつれて、制御ロジックがより一層単純化されることを可能にする、第1および第2のステージの間でのレジスタの削減である。
以下の説明はLTE 3GPP QPPインターリーバおよびそのためのアドレスシーケンスに関するものであるが、他のアドレスシーケンスが用いられ得るということが理解されるべきである。LTE 3GPP QPPインターリーバは以下のように定義されるアドレスシーケンスを有する。
Figure 0005242796
ここでf1およびf2は多項式の係数であり、xは0からK−1までのリニアシーケンスにおけるインクリメントであり、Kはブロックサイズである。x番目のインターリーブドアドレスは式(1)を用いて得ることができるが、この場合、f1およびf2は任意の整数ブロックサイズKに対する一定の係数である。したがって、インクリメントxのためのアドレスのシーケンスは、xに対して並び替えられた順序における0からK−1までである。シーケンスが0からK−1まで進むように説明されているが、シーケンスは、0から始まる必要がなく、K−1までのすべてを通る必要もない。すなわちシーケンスは、すべてのKインクリメントに対するシーケンスの各リニアインクリメントを通って進む必要がないということを理解すべきである。さらに、シーケンスを生成するためのリニアインクリメントをスキップするためのスキップ値も存在し得る。再度、以下に詳細に説明されるように、データのブロックは並列処理のための複数のスレッドまたはストリームに分解され得るということを理解すべきである。
ジョーンズに示されるように、式(1)の1次微分は、
Figure 0005242796
であり、式(1)の2次微分は、
Figure 0005242796
である。式(2)および式(3)において、nは、0よりも大きい任意の整数値となり得るスキップ値である。すなわち、たとえばnが1に等しいならば、スキップはなく、シーケンス0,1,2,…,ある数(K−1と同じ大きさであり得る)の各リニアインクリメントは、そのようなシーケンスのための最大Kのインターリーブドアドレスを提供するために処理される。すなわち、スキップ値nは、生成されたインターリーブドアドレスシーケンスにおけるストライドまたはジャンプを決定するために用いられ得る。
さらに、nが1に設定された場合、Kのアドレスの完全なシーケンスが生成され得る。しかしながら、nが1よりも大きい整数値に設定されたならば、シーケンスのアドレスの部分集合が生成され得る。たとえば、nが2に等しく設定されたならば、シーケンスにおけるあらゆる他のアドレスは0から始まるように生成され得る。すなわち0,2,4,…,K−2となる。式(2)および式(3)における連続項同士(successive terms)の間の差分は、それぞれ線形関数および定数であるので、回路はシーケンスのアドレスを生成するために、以下に詳細に説明されるように加算、減算および選択動作のみを用いて実現可能である。さらに、複数のシーケンス、すなわち複数のスレッドまたは、次々と処理される複数のストリームのパイプラインのため、登録動作(registering operation)のような一時的な記憶動作が追加され得る。すなわち、以下の説明から理解されるべきであるが、インターリーブドアドレスを発生させるためのスループットをより高めるために、複数のフェーズまたはシーケンスがアドレス発生器の回路での実現においてパイプライン処理されうる。代わりに、ターボ符号化処理ブロックの並列的な性質に依存して、パイプライン処理は、データの単一または複数のブロックの異なるスレッドのためのインターリーブドアドレスシーケンスを、代わりの方式で生成するために用いられ得る。すなわち、多くの異なるシーケンス開始点、すなわち、xおよび/またはスキップ値nのための多くの異なる開始点が、さまざまなデータブロックのためにサポートされ得る。シーケンスのためのアドレス発生の初期化のために、初期化値は予め決定されてメモリに記憶され得る。
図2は、インターリーバ200の例示的な実施形態を示すブロック図である。インターリーバ200は、デコーダ、エンコーダまたはコーデックの一部であり得る。より特定的には、インターリーバ200は、QPPインターリービングのためのターボチャネル符号のような畳み込み符号と関連付けられ得る。ブロックサイズ201はストレージ210に入力され得るが、ストレージ210はインターリーバ200の一部であり得るか、またはインターリーバ200とは分離され得る。ストレージ210は、ルックアップテーブル、ランダムアクセスメモリまたは他の形態のストレージであり得る。さらに、ブロックサイズ201は、アドレス発生器220に入力され得る。ストレージ210への他の入力はスキップ値202であり得る。ブロックサイズ201およびスキップ値202により、初期化値203およびステップサイズ204が、アドレス発生器220への提供のために、ストレージ210から取得され得る。アドレス発生器220は、アドレス221を生成して、アドレスの1以上のシーケンスを提供する。
図3は、図2のアドレス発生器220の実施形態を示す回路図である。アドレス発生器220は、第1ステージのアドレスエンジン310と第2ステージのアドレスエンジン320とを含む。第1ステージのアドレスエンジン310は、アドレス発生のための最初のステージでありステージ出力302を生成する。ステージ出力302はアドレス221の少なくとも1つのシーケンスを発生させるために第2ステージのアドレスエンジン320に提供される。
第1ステージのアドレスエンジン310は、加算器311と、減算器312と、マルチプレクサ313のような選択回路とを含む。この例示的実施形態において、第1ステージのアドレスエンジン310はレジスタ314,315を含む。単一のストリーム/シーケンスの場合、ただ1つのレジスタ、すなわちレジスタ314または315のいずれかが第1ステージのアドレスエンジン310のフィードバックループ内で実現され得る。第1ステージのエンジン310におけるレジスタの設定は、第2ステージのエンジン320のレジスタの設定を反映して、繰返しでの時間的に同じ点において、特定のストリーム/シーケンスに対する値が、ステージ出力302からの加算器321への入力と一致することを確保する。しかしながら、パイプラインがスループットを高めるために用いられ得る。さらに少なくとも1つの各々のレジスタ314,315を有することによって、アドレスの2つのシーケンス、すなわち2つのスレッドまたはストリームがともに生成され得る。さらに、レジスタ314,315の各々の1つのみが図に表されているが、レジスタ314,315の各々が、1つよりも多く実装され得る。たとえば、レジスタ314,315の各々が2つ存在するならば、パイプラインでの同時並行によって、シーケンスの4つのスレッドまたはストリームと同数が生成され得る。ストリームは交互のクロック周期において生成されるということが理解されるべきである。さらに、エッジトリガフリップフロップが、交互のエッジにおいてストリームを生成するために用いられ得る。例示による明確化および制限しない目的のため、レジスタ314,315の各々の一方のみが存在するとされてもよい。
既に説明したように、初期化値203はストレージ210から取得され得る。これらの初期化値は初期化値I(x)203−1および初期化値A(x)203−2として示される。
第2ステージのアドレスエンジン320は、加算器321と、加算器322と、マルチプレクサ323のような選択回路とを含む。さらに、パイプラインが用いられるならば、第2ステージのアドレスエンジン320は、少なくとも1つのレジスタ324と、少なくとも1つのレジスタ325とを含み得る。さらに、レジスタ314,315を参照して既に説明されたように、レジスタ324,325の少なくとも1つ、またはレジスタ324,325の各々の複数が存在し得る。さらに、例示による明確化および制限しない目的のため、レジスタ324,325の各々の1つが存在するとされてもよい。この点において、アドレスエンジン310,320は、3つの加算器、1つの減算器および2つの選択回路で実現され得るということが理解されるべきである。
初期化値I(x)203−1は、ロード可能な加算器311へのロード可能な入力として提供される。レジスタ314,315,324,325の各々のクロック部に提供されるクロック信号301の最初のクロックサイクルにおいて、加算器311の出力は、シーケンスのための初期の妥当な出力として初期化値I(x)203−1を用いる。同様に、シーケンスの最初のサイクルのため、ロード可能な加算器321へのロード可能な入力として与えられる初期化値A(x)203−2は、そこからの初期の妥当な出力として用いられる。
ステップサイズ204は、加算器311へのデータ入力として与えられる。加算器311への他のデータ入力はフィードバック入力として与えられるステージ出力302である。したがって、ステップサイズ204は、初期化値I(x)203−1がそのような加算器から出力された後に、出力のために初期ステージ出力302と加算され得る。より特定的に図3の例示的実施形態の場合には、レジスタ314,315が存在するので、ステップ値204がそれに加算されるべき2クロックサイクル後(すなわち3番目のサイクル)までは、加算器311に適用される第1の初期化値は加算器311へのフィードバック302としてフィードバックされない。2番目のサイクルにおいて、フィードバックループ内に2つのレジスタ/パイプステージが存在する場合には、サポートされるものとしての第2のシーケンス/ストリームに、さらなる初期化値が適用され得る。
加算器311の出力はレジスタ314のデータ入力ポートに与えられる。レジスタ314の出力は、減算器312のプラスポートに与えられる。さらに、最上位ビット(MSB)のような符号ビット316が、マルチプレクサ313の制御選択信号としてレジスタ314の出力から取得される。レジスタ314からのMSB出力は減算器312のプラスポートにも与えられるということが理解されるべきである。
マルチプレクサ313の論理0ポートは、ブロックサイズ201を受けるために結合されて、マルチプレクサ313の論理1ポートは、論理0(330)を受けるために結合される。MSBビット316が、負の値を示す論理1ならば、マルチプレクサ313は論理0(330)、すなわちヌル値を出力する。しかしながら、もし、MSBビット316が、レジスタ314の出力が正の値であることを示す論理0であるならば、マルチプレクサ313はブロックサイズ201を出力する。
マルチプレクサ313の出力は、減算器312のプラスポートに入力されたデータからの減算のための、減算器312のマイナスポートに与えられる。代わりに、マルチプレクサ313と減算器312との組合せは、ロード可能な加算器としてみなされてもよく、その場合にはロードされるべき値は、減算される(すなわちプラス入力ポートに接続される)候補であり、ロード制御ビットは、この値のMSBである。したがって、もしレジスタ314からの出力が正であるならば、ブロックサイズ201の減算すなわち−Kは、減算器312の出力を負、すなわち−Kから−1までの範囲内とさせる。もしレジスタ314の出力が既に負であるならば、そのような出力への論理0(330)の加算は、なんら影響を及ぼさず、したがって減算器312の出力はレジスタ314の負の出力となる。したがって、減算器312の出力は、レジスタ315のデータポートへの入力のための−Kから−1までの範囲内にある。レジスタ315の出力はステージ出力302である。すなわち、ステージ出力302は−Kから−1までの範囲内にあり、この場合、Kはブロックサイズ201である。すなわち、第1ステージのアドレスエンジン310は、その範囲を負の値、すなわち−Kの移動分だけシフトさせる。
第1ステージのアドレスエンジン310からのステージ出力302は、アドレス221との加算のために加算器321のデータポートに与えられる。アドレス221は、レジスタ325からのアドレス出力であり、フィードバックアドレスとして与えられる。アドレス221のシーケンスは動作の間の複数のクロックサイクルから生成されるということが理解されるべきである。アドレス発生器220から妥当なデータが出力されるクロックサイクルにおいて、アドレス221はアドレスシーケンスのアドレス出力形成部を構成する。
初期化値A(x)203−2を出力したの地に、ロード可能な加算器321は、フィードバックアドレス221とステージ出力302との和を出力し得る。次のサイクルにおいて、ロード可能な加算器311を参照してこれまでに説明したように、そしてここでは明確さの目的のために繰返さないが、他のシーケンスのための他の初期化値となる。ロード可能な加算器321からの出力は、レジスタ324のデータポートに与えられる。レジスタ324の出力は加算器322のデータポートに与えられて、たとえばMSBビット326のような、レジスタ324から出力された符号ビットが加算器322のデータポートに与えられるのと同様に、制御選択信号としてマルチプレクサ323に与えられる。
マルチプレクサ323の論理0ポートは、論理0(330)を受けるために結合され、マルチプレクサ323の論理1ポートは、ブロックサイズ201を受けるために結合される。MSBビット326が論理0である場合、すなわちレジスタ324の出力が正を示す場合、マルチプレクサ323は出力のために論理0(330)を選択する。しかしながら、MSBビット326が、レジスタ324の出力が負の値であることを示す論理1であるならば、マルチプレクサ323は出力のためにブロックサイズ201を選択する。
マルチプレクサ323の出力は加算器322のデータ入力ポートに与えられる。加算器322は、レジスタ324からの出力をマルチプレクサ323の出力と加算する。したがって、加算器322の出力は正の範囲、すなわち0からK−1までの範囲内にあるということが理解されるべきである。言い換えれば、アドレスエンジン320においてKを除外することにより、アドレスエンジン310において−Kだけ値をシフトまたは移動させることが効果的に中和され、すなわち計算上に正味の影響が生じなくなる。
加算器322の出力は、0からK−1までの範囲内にあるが、レジスタ325のデータ入力ポートに与えられる。レジスタ325の出力は、加算器321にフィードバックされて、アドレスシーケンスの一部として用いられる、アドレス221である。
第1ステージのアドレスエンジン310と、第2ステージのアドレスエンジン320とは図1のFPGA100のDSP106とCLB102とのそれぞれで実現可能である。代わりに、CLB102のみがエンジン310および320を実現するために用いられ得る。CLBとDSPとの各々の1つで実現されたアドレスエンジンステージを有することによって、並列に動作する複数のアドレスエンジンを実現することが容易となり、各々のアドレスエンジンステージによって消費されるリソースがとても少なくなる。言い換えれば、アドレス発生器220を提供するために、とても少ない回路要素が用いられ得るため、FPGA内で複数のアドレス発生器を実現するためのより多くの機会が与えられる。
図3の例示的実施形態において、アドレスエンジン310,320は直列に結合されて、したがってシーケンシャルな動作を有する。しかしながら、アドレスエンジン310,320はシーケンスを処理するために同時並行的に動作されるということが理解されるべきである。すなわち、レジスタ314,315,324,325を有する例示的実施形態の場合には、妥当なアドレス221の前にアドレスシーケンス321の一部として出力される4サイクルの待ち時間(latency)を有するよりも、むしろ2サイクルの待ち時間しか存在しない。これは、図4を参照してさらに詳細に説明されるが、図4では、図3のアドレス発生器220のアドレス発生の例示的実施形態を示すフロー図が示される。フロー400は図3および図4を同時に参照してさらに説明される。
401において、ブロックサイズ201とスキップサイズ202とのようなブロックサイズおよびスキップサイズが取得される。402において、初期化値I(x)203−1とA(x)203−2のような初期化サイズおよびステップサイズ204のようなステップサイズが、401で取得された値に応じてストレージから取得される。
403において、既に説明したように、たとえば加算器311によって和が生成される。404において、既に説明したように、加算器321によって和が生成される。403および404で生成された和は、同時並行的すなわち並列に生成される。
405において、403で生成された和が、たとえば減算器312によって差分を生成するために用いられる。さらに、この差分は−Kから−1までの範囲内にある。405において生成された差分は、次のサイクルにおいて、404での別の和を生成するために与えられる。
406において、たとえば加算器322によって、404で生成された和を用いて和が生成される。ここで、405での差分の生成および406での和の生成は、図3を参照して既に説明されたものであり、ここでは明確さのために繰返さない。さらに、406で生成された和の範囲は0からK−1までの範囲である。さらに406で、アドレスが、たとえばアドレス221として出力され得る。
シーケンスが完了していない場合、406でのアドレス出力はフィードバックされて404での別の和を生成する。さらに、シーケンスが完了していない場合には、405で生成された差分がフィードバックされて、403において別の和を生成する。
406での出力から、407においてシーケンスがインクリメントされるべきかどうかが判断され得る。ハードウェアでの実現の場合、クロック信号301を受信するために結合されたカウンタ(図示せず)が、ステップサイズ204および/またはブロックサイズ201に応答して、リニアシーケンスのためにプリセットされ得る。しかしながら、ファームウェアを含むソフトウェアでの実現の場合、決定がなされ得る。シーケンスがインクリメントされるべき場合には、408においてシーケンスがインクリメントされる。すなわち、次のクロックサイクルでの403および404において別の和を生成するために、xまたは後に説明するiがインクリメントされる。したがって、動作のシーケンスは、ハードウェア、ソフトウェアまたはそれらの組合せであり得る。
407において、シーケンスがインクリメントされるべきでないということが決定されたならば、409において、別のシーケンスが処理されるべきかどうかが判断され得る。409において別のシーケンスが処理されるべきであると判断された場合、フロー400は、そのような他のシーケンスのためのブロックサイズおよびスキップサイズを取得するために401に戻る。もし処理されるべきさらなるシーケンスが存在しない場合、フロー400は499において終了する。
図5は、アドレス発生フロー500の例示的実施形態を示す擬似コードリストである。501において概して示されるように、ループ502のために値が設定されるとともに初期化される。
図5の場合、ターボ符号のためブロックサイズKは256に等しく、スキップ値nは2に等しいものとする。すなわち、503でブロックサイズおよびスキップサイズを設定するために、2つのフレーズまたは2つのシーケンスが同時に処理される。この例示的実施形態の場合には、シーケンスは奇数シーケンス(odd sequence)と偶数シーケンス(even sequence)である。偶数シーケンスの場合、xは0で始まり、奇数シーケンスの場合、xは1で始まる。したがって、偶数シーケンスの場合、初期化値(A_cand[x])203−2(偶数)は、x=0での式(1)である。さらに、偶数シーケンスの場合、初期化値(I_cand[x])203−1(偶数)は、x=0での式(2)である。偶数シーケンスのための初期化値203−1および203−2の両方は、それぞれの定数を少なくするが、それは係数f1およびf2が定数であるためである。
奇数シーケンスの場合、xは1で始まる。したがってx=1を式(1)に代入することは、初期化値203−2(奇数)を生成することであり、x=1を式(2)に代入することは初期化値203−1(奇数)を生成することである。同様に、奇数シーケンスのための初期化値203−1および203−2の各々は、定数を少なくすることが理解されるべきである。
ステップサイズ204は式(3)に示されるようにxには依存せず、したがってステップサイズ(s)204は一定値である。ステップサイズ204と同様に、奇数シーケンスおよび偶数シーケンスのための初期化値203−1および203−2に関する一定値によって、これらがデータブロックの1以上のシーケンスに対する定数であることが理解されるべきである。この例において、2つのスレッドまたはストリームが存在するが、2よりも大きいスレッドも実現可能である。xはリニアシーケンスの一部としてインクリメントされるが、初期化アドレス候補(A_cand[x])およびインクリメント候補(I_cand[x])は、xの増加ごとに進む。したがって、第1フェーズの場合、すなわち、この例では偶数シーケンスの場合、xは、シーケンス0,2,4,…,K−2であり、第2フェーズでは、xは、この例示的実施の形態において1,3,5,…,K−1の数列を有する。
アドレス候補はシーケンスのための第1の繰返しにおいて正であり、したがってそれは直接に出力され得る。さらに、インクリメント候補はシーケンスのための第1の繰返しにおいて正であり、したがってそこから減算されるブロックサイズを有する。すなわち、x=0の場合、偶数シーケンスのための第1のアドレス値の出力は、初期化値203−2(偶数)すなわち0であり、そのような第1の繰返しのための初期ステージ出力は初期化値203−1(偶数)からKを減じたものである。既に説明されたような、あるサイクル待ち時間が存在し得て、したがって第1の繰返しが第1の妥当な出力を意味するということが、第1の繰返しによって理解されるべきである。第2の繰返しの場合、すなわち第2の妥当な出力であるが奇数シーケンスにとって第1の妥当な出力である場合、アドレス候補は正であり、したがって、それは直接的、すなわちKを加えることなしに出力され得る。インクリメント候補は第2の繰返しにおいて正であり、したがってそれは、そこから減算されるブロックサイズを有する。すなわち、第2の繰返しにおいて、初期化値203−2(奇数)は図3のアドレス221として出力され、初期化値203−1(奇数)からKを減じたものはステージ出力302として出力される。さらに、ステップサイズ204は、それが奇数フェーズおよび偶数フェーズの両方の場合にスキップ値nにのみ依存するので、初期化され得る定数である。すなわち、奇数フェーズおよび偶数フェーズの両方が同じステップサイズを有する。
スキップ値をn=2に設定する必要はない。すなわち、より大きなスキップ値が用いられ得る、あるいは、スキップ値nは1に等しく設定され得る。さらに、ブロックサイズK=256が、例示による明確化および制限しない目的のために説明されているが、256よりも大きい、または256未満のブロックサイズが用いられ得るということが理解されるべきである。さらに、明確さの目的のため、この例においては固定されたブロックサイズが用いられているが、可変のブロックサイズが用いられ得るということが理解されるべきである。すなわち、奇数シーケンスまたは偶数シーケンスを用いる必要がなく、あるいはスキップ値を用いて複数のシーケンスの間で変更する必要がない。たとえば、スキップ値は、ブロックサイズのいくつかの部分に設定され得る。リニアシーケンスが0からK−1までのすべてを通る必要はないが、シーケンスのある部分が処理され得る。しかしながら、例示による明確化および制限しない目的のため、0からK−1までのシーケンス全体がループ502において処理されるものとされている。
xは、スキップ値に対応する初期化値を有する必要はない。たとえば、xはブロックサイズの部分で再初期化され得る。K=256の場合の上記の例に続き、x=K/2において再初期化されるならば、そのような処理のために初期化値203−2および203−1をそれぞれ生成するために、x=128が式(1)および(2)に代入される。しかしながら、第1の値、すなわちこのシーケンスではx=0であることは、既に説明したとおりである。
511において、ループ502で、0からK−1まで進むに従い、インクリメントiが、設定される。アドレス候補が負である場合、ブロックサイズKは、512において示されるように、アドレス候補に加算される。インクリメント候補が正である場合、ブロックサイズKは513において示されるように、減算される。
514において、現在のフェーズの次のフェーズのための次のアドレス候補が計算される。515において、現在のフェーズの次のフェーズのための次のインクリメント候補が計算される。516において、現在のフェーズのためのアドレスが出力される。この例におけるループ502は、0からK−1まで1ずつインクリメントするインクリメントiの場合であり、516の後にiがK−1に等しい場合、ループ502は517において終了する。
アドレス生成フロー500は複数のスレッドまたはシーケンスのために説明されたが、そのようなフローが単一のシーケンスのために削減され得るということが理解されるべきであり、単一のシーケンスでは、アドレスおよびインクリメント候補の1つの組のみが取得される。さらに、2つの組よりも多い、アドレスおよびインクリメント候補の組が、2よりも多いスレッドまたはフェーズに対してインクリメントされ得るということが理解されるべきである。
本発明の1以上の局面に従って以上のように例示的実施形態を記載したが、本発明の1以上の局面に従う他の実施形態、および、さらなる実施形態が、続くクレームおよびその均等物によって決定される本発明の範囲から逸脱することなく考え出され得る。たとえば、上記の説明では、初期化は各エンジンの初期レジスタの前あるいは直前に位置するロジックを用いるものとされているが、初期化は各エンジンにおける任意のレジスタの前で実行され得る。すなわち、例示的実施形態は、ただ単に図3のレジスタ314,324のそれぞれの前のロード可能な加算器311,321における初期化を示しているにすぎない。初期化は、加算器311,321においてなされるものとされるが、その理由は、それらがそれぞれのマルチプレクサを含まないので、これらの加算器がより複雑とならないためである。しかしながら、初期化はロード可能な減算器312およびロード可能な加算器322によって起こり得る。あるいは、両方のストリームが順次というよりも、むしろ1度で初期化され得る。したがって、減算器312からの差分と加算器322からの和は、加算器311からの和として同時に第1のシーケンスのために初期化され、加算器312からの和は第2のシーケンスのために初期化される。また、1以上の外部ストリームを可能とするために外部のレジスタが挿入されるならば、そのようなレジスタの前にはロジックは存在せず、したがってそのようなレジスタは初期化のために用いられ得る。
さらに、第1のストリーム/シーケンスが第1および第3の初期化値に用いられて、第2のストリーム/シーケンスが第2および第4の初期化値に用いられるならば、そのような第1および第2のストリーム/シーケンスは、完全に互いに独立であり、各々はブロック中の任意の点において開始可能であるが、両者は同じ開始点を有していなくてもよい。しかしながら、第1のストリーム/シーケンスは、第2のストリーム/シーケンスの前後で初期化されなければならないという必要はない。さらに、第3の初期化値が第1の初期化値と同じストリーム/シーケンスに対応し、第3の初期化値が第2の処理エンジンを初期化する場合、第1の初期化値は、0とK−1(含む)との間の特定の開始位置で同じストリーム/シーケンスのための第1の処理エンジンを初期化するために用いられ得る。同様に、第2の初期化値および第4の初期化値は同じストリーム/シーケンスに対応する。
本発明は、その特定の実施形態を参照して説明されたが、当業者にとっては、説明された実施形態の変形が本発明の精神から逸脱することなくなされるということが明らかであるだろう。すなわち、発明の範囲は添付のクレームによって定義され、上記の詳細な説明によって定義されるものではない。クレームで挙げたステップはそれらステップのいかなる順序も含まず、商標はそのそれぞれの所有者の財産である。

Claims (15)

  1. アドレス発生器であって、
    第1の加算器と減算器とを備える第1の処理ユニットを備え、前記第1の加算器の出力は前記減算器の第1の入力に結合され、ヌル値またはブロックサイズKのいずれかは、符号ビットに応答して前記減算器の第2の入力に結合され、
    前記第1の処理ユニットからのステージ出力を受けるために結合されて、アドレス出力を提供するように構成された第2の処理ユニットとを備え、
    前記第2の処理ユニットは、ブロックサイズKを受けて負の値を加えるように結合され、
    前記ステージ出力は、前記ブロックサイズがKの場合に、−Kから−1までの第1の範囲内にあり、前記アドレス出力は、0からK−1までの第2の範囲内にある、アドレス発生器。
  2. 前記アドレス発生器は、エンコーダ、デコーダおよびコーデックからなるグループから選択された符号化デバイスの一部であり、前記アドレス発生器は、2次置換多項式インターリービングのための前記アドレス出力を提供する、請求項1に記載のアドレス発生器。
  3. 前記アドレス出力は複数のアドレスシーケンスを含む、請求項2に記載のアドレス発生器。
  4. 前記第1の処理ユニットおよび前記第2の処理ユニットは、それぞれ、第1の初期化値または第2の初期化値で初期化される、請求項3に記載のアドレス発生器。
  5. 前記第1の初期化値は、前記複数のアドレスシーケンスのうちの第1のシーケンスのためのものであり、前記第2の初期化値は、前記複数のアドレスシーケンスのうちの第2のシーケンスのためのものである、請求項4に記載のアドレス発生器。
  6. 前記アドレス出力は、0からK−1までのアドレスシーケンスの少なくとも一部のためのものであり、
    前記第1の処理ユニットは、第1の初期化値および第2の初期化値で初期化され、
    前記第2の処理ユニットは、第3の初期化値および第4の初期化値で初期化される、請求項2に記載のアドレス発生器。
  7. 前記第1の処理ユニットは、
    前記第1の加算器と、
    前記第1の加算器に結合された第1のレジスタと、
    前記第1のレジスタに結合された第1のマルチプレクサと、
    前記第1のマルチプレクサおよび前記第1のレジスタに結合された前記減算器と、
    前記減算器と結合されて前記ステージ出力を出力する第2のレジスタとを備え、
    前記ステージ出力は、前記第1の加算器にフィードバックされる、請求項1に記載のアドレス発生器。
  8. 前記第1のレジスタは第1のシーケンスを処理し、前記第2のレジスタは第2のシーケンスを同時に処理する、請求項7に記載のアドレス発生器。
  9. 前記第2の処理ユニットは、
    前記ステージ出力を受けるための第2の加算器と、
    前記第2の加算器に結合された第3のレジスタと、
    前記第3のレジスタに結合されて前記ブロックサイズKを受けるように結合された第2のマルチプレクサと、
    前記第2のマルチプレクサおよび前記第3のレジスタに結合された第3の加算器と、
    前記第3の加算器に結合されて前記アドレス出力を出力する第4のレジスタとを備え、
    前記ブロックサイズKは前記第2の処理ユニットの前記第3の加算器に結合されて負の値を加え、
    前記アドレス出力は前記第2の加算器の入力にフィードバックされる、請求項8に記載のアドレス発生器。
  10. アドレスを発生させるための方法であって、
    第1の処理ユニットによってステップサイズとブロックサイズとを取得するステップと、
    第2の処理ユニットによってブロックサイズを取得するステップと、
    前記第1の処理ユニットによって第1の初期化値を取得するとともに前記第2の処理ユニットによって第2の初期化値を取得するステップと、
    前記第1の処理ユニットの第1の加算器によって前記ステップサイズを差分に加算して第1の和を提供するステップと、
    前記第1の和の第1の符号ビットに応答して、前記第1の処理ユニットの減算器により、前記第1の和からヌル値または前記ブロックサイズのいずれかを減算して、他の差分を提供するステップとを備え、前記他の差分はブロックサイズがKの場合に−Kから−1までの範囲内にあり、
    前記第1の処理ユニットの第1のレジスタにより、前記第1の和または前記他の差分を登録して第1のステージの出力を生成するステップをさらに備え、
    前記第1のステージは前記第1の処理ユニットによって与えられ
    前記他の差分を前記ステップサイズに加算するために前記他の差分を前記第1の加算器にフィードバックするステップと、
    前記第2の処理ユニットの第2の加算器によって、前記第1のステージの前記出力を第3の和に加算することによって第2の和を生成するステップと、
    前記第2の処理ユニットの第3の加算器によって、前記第2の和の第2の符号ビットに応答して前記ヌル値または前記ブロックサイズのいずれかを前記第2の和に加算して、他の第3の和を提供するステップとをさらに備え、前記他の第3の和は0からK−1までの範囲内にある、方法。
  11. 前記第2の処理ユニットの第2のレジスタによって、前記第2の和または前記他の第3の和を登録するステップと、
    前記加算するステップの別の繰返しのための前記他の第3の和を前記第2の加算器にフィードバックして前記第2の和を提供するステップとをさらに備える、請求項10に記載の方法。
  12. 前記第1の和または前記他の差分を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の他の差分を登録するステップを含み、前記第2の和または前記他の第3の和を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の前記他の第3の和を登録するステップを含む、請求項11に記載の方法。
  13. 前記第1の和または前記他の差分を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の前記第1の和を登録するステップを含み、前記第2の和または前記他の第3の和を登録するステップは、パイプライン動作のためのそれぞれのフィードバックループ内の前記第2の和を登録するステップを含む、請求項11に記載の方法。
  14. 前記ステップサイズを前記差分に加算して前記第1の和を提供するステップは、前記他の差分の前記第3の和の加算によって前記第2の和を提供するための前記加算するステップと同時に実行される、請求項11に記載の方法。
  15. 2次置換多項式インターリービングのための前記別の第3の和を提供するステップをさらに備える、請求項11に記載の方法。
JP2011527850A 2008-09-18 2009-07-21 アドレス発生 Active JP5242796B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/233,320 US8219782B2 (en) 2008-09-18 2008-09-18 Address generation
US12/233,320 2008-09-18
PCT/US2009/051224 WO2010033298A1 (en) 2008-09-18 2009-07-21 Address generation

Publications (2)

Publication Number Publication Date
JP2012503248A JP2012503248A (ja) 2012-02-02
JP5242796B2 true JP5242796B2 (ja) 2013-07-24

Family

ID=41278507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011527850A Active JP5242796B2 (ja) 2008-09-18 2009-07-21 アドレス発生

Country Status (6)

Country Link
US (1) US8219782B2 (ja)
EP (1) EP2329362B1 (ja)
JP (1) JP5242796B2 (ja)
KR (1) KR101263152B1 (ja)
CN (1) CN102160032B (ja)
WO (1) WO2010033298A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959403B2 (en) * 2006-11-10 2015-02-17 Optis Wireless Technology, Llc QPP interleaver/de-interleaver for turbo codes
US9014296B2 (en) * 2009-10-09 2015-04-21 Lg Electronics Inc. Method and apparatus for transmitting encoded signals with frequency hopping environment
TW201209711A (en) * 2010-08-19 2012-03-01 Ind Tech Res Inst Address generation apparatus and method for quadratic permutation polynomial interleaver
US8848842B2 (en) 2012-08-16 2014-09-30 Xilinx, Inc. Recursion unit scheduling
US9965278B1 (en) * 2016-12-20 2018-05-08 Texas Instruments Incorporated Streaming engine with compressed encoding for loop circular buffer sizes
US10621132B1 (en) 2017-05-05 2020-04-14 Xilinx, Inc. Auto address generation for switch network
TWI709046B (zh) * 2019-09-09 2020-11-01 英業達股份有限公司 多地址響應的複雜可程式邏輯裝置及運作方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3883852A (en) * 1973-04-20 1975-05-13 Corning Glass Works Image scanning converter for automated slide analyzer
US4370732A (en) * 1980-09-15 1983-01-25 Ibm Corporation Skewed matrix address generator
EP0115097B1 (fr) * 1982-12-20 1987-06-03 La Radiotechnique Portenseigne Générateur de séquences numériques pseudoaléatoires
SE465393B (sv) * 1990-01-16 1991-09-02 Ericsson Telefon Ab L M Adressprocessor foer en signalprocessor
US5687342A (en) * 1991-09-18 1997-11-11 Ncr Corporation Memory range detector and translator
JPH07253922A (ja) * 1994-03-14 1995-10-03 Texas Instr Japan Ltd アドレス生成回路
KR970011794B1 (ko) * 1994-11-23 1997-07-16 한국전자통신연구원 메모리 소자를 이용한 하다마드 변환기
KR100189539B1 (ko) 1996-09-06 1999-06-01 윤종용 인터리빙 및 디인터리빙 어드레스 생성기
KR100193846B1 (ko) * 1996-10-02 1999-06-15 윤종용 인터리브 리드 어드레스 생성기
KR100236536B1 (ko) * 1997-01-10 1999-12-15 윤종용 모듈로 주소발생기 및 그 방법
EP2173036B1 (en) * 1998-08-17 2014-05-14 Dtvg Licensing, Inc Turbo code interleaver with near optimal performance
US6871303B2 (en) * 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
KR100306282B1 (ko) * 1998-12-10 2001-11-02 윤종용 통신시스템의인터리빙/디인터리빙장치및방법
US6314534B1 (en) * 1999-03-31 2001-11-06 Qualcomm Incorporated Generalized address generation for bit reversed random interleaving
KR100480286B1 (ko) * 1999-04-02 2005-04-06 삼성전자주식회사 터보 인터리빙 어드레스 발생 장치 및 방법
US6782447B2 (en) * 1999-12-17 2004-08-24 Koninklijke Philips Electronics N.V. Circular address register
KR100393608B1 (ko) * 2000-09-29 2003-08-09 삼성전자주식회사 유.엠.티.에스시스템내 터보부호화기의 내부 인터리버 및인터리빙 수행 방법
AUPR679401A0 (en) * 2001-08-03 2001-08-30 Lucent Technologies Inc. High speed add-compare-select processing
JP2003091923A (ja) * 2001-09-18 2003-03-28 Sony Corp 再標本化アドレスジェネレータ回路
US7058874B2 (en) * 2002-05-24 2006-06-06 Lucent Technologies Inc. Interleaver address generator and method of generating an interleaver address
US6865660B2 (en) * 2002-06-28 2005-03-08 Micron Technology, Inc. Method and apparatus for generating deterministic, non-repeating, pseudo-random addresses
US6851039B2 (en) * 2002-09-30 2005-02-01 Lucent Technologies Inc. Method and apparatus for generating an interleaved address
US7262716B2 (en) * 2002-12-20 2007-08-28 Texas Instruments Incoporated Asynchronous sample rate converter and method
US20050044119A1 (en) * 2003-08-21 2005-02-24 Langin-Hooper Jerry Joe Pseudo-random number generator
US7552156B2 (en) * 2004-08-30 2009-06-23 Nunes Ryan J Random number generator
DE602005021094D1 (de) * 2005-07-19 2010-06-17 Emma Mixed Signal Cv Arithmetisches Modul
US7502909B2 (en) * 2005-10-11 2009-03-10 Motorola, Inc. Memory address generation with non-harmonic indexing
EP1840734A1 (en) * 2006-03-24 2007-10-03 Telefonaktiebolaget LM Ericsson (publ) Processor with address generator
US8065588B2 (en) * 2007-01-17 2011-11-22 Broadcom Corporation Formulaic flexible collision-free memory accessing for parallel turbo decoding with quadratic polynomial permutation (QPP) interleave
US7873893B2 (en) * 2007-02-28 2011-01-18 Motorola Mobility, Inc. Method and apparatus for encoding and decoding data
US8296627B2 (en) * 2007-07-20 2012-10-23 Electronics And Telecommunications Research Institute Address generation apparatus and method of data interleaver/deinterleaver
US8140932B2 (en) * 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder

Also Published As

Publication number Publication date
JP2012503248A (ja) 2012-02-02
US8219782B2 (en) 2012-07-10
CN102160032A (zh) 2011-08-17
KR101263152B1 (ko) 2013-05-15
WO2010033298A1 (en) 2010-03-25
CN102160032B (zh) 2016-08-31
EP2329362A1 (en) 2011-06-08
KR20110069108A (ko) 2011-06-22
EP2329362B1 (en) 2019-10-02
US20100070737A1 (en) 2010-03-18

Similar Documents

Publication Publication Date Title
JP5242796B2 (ja) アドレス発生
US8145877B2 (en) Address generation for quadratic permutation polynomial interleaving
US7559007B1 (en) Encoding and decoding with puncturing
US9413390B1 (en) High throughput low-density parity-check (LDPC) decoder via rescheduling
KR100855018B1 (ko) 길쌈부호들을 복호화하기 위한 siso 회로 생성 모듈과 관련 방법 및 회로
CN110719111A (zh) 用于低密度奇偶校验码的改善的解码器
CN108008932B (zh) 除法合成
US10727873B1 (en) System and method for successive cancellation list decoding of polar codes
US10101969B1 (en) Montgomery multiplication devices
KR100648178B1 (ko) 프로그램가능한 프로세서에서의 비트조작 연산회로 및 방법
Guzel et al. Using high-level synthesis for rapid design of video processing pipes
US6925479B2 (en) General finite-field multiplier and method of the same
US10474390B1 (en) Systems and method for buffering data using a delayed write data signal and a memory receiving write addresses in a first order and read addresses in a second order
US10484021B1 (en) Log-likelihood ratio processing for linear block code decoding
US7007059B1 (en) Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization
Mihajloska Trpcheska et al. Programmable processing element for crypto-systems on FPGAs
Sasao et al. Realization of sequential circuits by look-up table rings
JP4436830B2 (ja) 構成可能なマルチステップ線形フィードバックシフトレジスタ
GB2538102B (en) Performing constant modulo arithmetic
Mamidi et al. Instruction set extensions for software defined radio
Venkatesh et al. High speed and low complexity XOR-free technique based data encoder architecture
US9317253B1 (en) Shift register having multiple processing stages
KR19980015799A (ko) 조합 논리 회로에 의한 갈로아체 곱셈기
Wang et al. Soft-core stream processor for sliding window applications
MADHUPAVANI et al. Design of Random Number Generation Using 256 Bit LFSR in FPGA

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130227

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: 20130326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130403

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

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5242796

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250