(57)【特許請求の範囲】
【請求項１】
複数の書き込みワードのそれぞれのビットに対する読み出しアドレスを並列に生成する複数のプロセッサと、
前記プロセッサからそれぞれ受け取った前記読み出しアドレスを待ち行列として格納し、それぞれがそのステータスを出力する複数のアドレス・キューと、
前記複数のアドレス・キューの中から、各アドレス・キューの前記ステータスに基づいて空でないアドレス・キューを選択し、選択されたアドレス・キューからのアドレスを出力するとともに前記選択されたアドレス・キューのアドレス・キューＩＤを出力する第１のアービタと、
前記選択されたアドレス・キューのからの前記アドレスをワード・アドレスとビット・アドレスとにデコードするデコーダと、
インタリーブされるべきデータを格納し、前記ワード・アドレスに基づいて読み出しワードを出力する入力記憶装置と、
前記ビット・アドレスに基づき、前記読み出しワードから読み出しビットを選択する第１のセレクタと、
前記アドレス・キューＩＤに基づいて、個別の書き込みビットを前記書き込みワードの１つに調停し、それぞれの書き込みワードに対する書き込みアドレスを生成する書き込みコントローラと、
前記書き込みアドレスに基づいて前記書き込みワードを格納する出力記憶装置と、
を有するインタリーバ。
【請求項２】
前記プロセッサはプログラマブル・プロセッサである、請求項１に記載のインタリーバ。
【請求項３】
前記プロセッサは、異なる複数のインタリーブ・パターンに対するアドレスを生成するようにプログラム可能である、請求項１に記載のインタリーバ。
【請求項４】
前記第１のアービタは、
前記アドレス・キューからステータス信号を受信して、空でないステータスを有する任意のアドレス・キューのＩＤを出力するコントローラと、
前記ＩＤに基づいて、それぞれのアドレス・キューから受信した前記読み出しアドレスの中からアドレスを選択し、選択されたアドレスを出力するアドレス・セレクタと、
を有する、請求項１乃至３のいずれか１項に記載のインタリーバ。
【請求項５】
前記書き込みコントローラは、
各々が、受信した書き込みビットを書き込みワードにパックし、前記書き込みワードと前記書き込みワードの出力のステータスとを出力する、複数のパッカーと、
前記第１のアービタからの前記アドレス・キューＩＤに基づいて、前記第１のセレクタから書き込みビットが送信されるいずれかの前記パッカーを選択する第２のセレクタと、
前記複数のパッカー内の前記書き込みワードに対する書き込みアドレスをそれぞれ発生する複数のアドレス生成器と、
前記複数のパッカーから受け取った前記ステータスに基づいて、前記複数のパッカーのうちの書き込みワードで満たされているパッカーを選択し、選択されたパッカーの前記書き込みワードを書き込みデータとして出力し、さらに、前記選択されたパッカーに対応するアドレス生成器を選択して選択されたアドレス生成器で生成された書き込みアドレスを出力する第２のアービタと、を有する、請求項１乃至４のいずれか１項に記載のインタリーバ。
【請求項６】
前記第１のセレクタの出力のデータ幅は、前記読み出しワードから選択される隣接ビットの数と同じである、請求項５に記載のインタリーバ。
【請求項７】
前記書き込みコントローラは、
それぞれシフトされた書き込みビットを書き込みワードにパックする複数のシフタなしパッカーと、
前記第１のアービタからの前記アドレス・キューＩＤに基づいて、前記複数のシフタなしパッカーのうちの１つに対するクロック信号を有効にするクロック・コントローラと、
前記アドレス・キューＩＤに基づいて、前記複数のシフタなしパッカーからのパックされたビットの数を選択する第２のセレクタと、
前記第２のセレクタからの出力に基づいて、前記シフタなしパッカー内の書き込みレジスタの目標書き込みビット位置に書き込みビットをシフトさせ、シフトされた書き込みビットを前記シフタなしパッカーに出力するバレル・シフタと、
前記複数のシフタなしパッカー内での前記書き込みワードに対する書き込みアドレスをそれぞれ発生する複数のアドレス生成器と、
前記複数のシフタなしパッカーのうちの書き込みワードで満たされているシフタなしパッカーを選択して選択されたシフタなしパッカーの前記書き込みワードを書き込みデータとして出力し、前記選択されたシフタなしパッカーに対応するアドレス生成器を選択して選択されたアドレス生成器で生成された書き込みアドレスを出力する第２のアービタと、を有する、請求項１乃至４のいずれか１項に記載のインタリーバ。
【請求項８】
前記シフタなしパッカーの各々は、
前記シフタなしパッカー内のパックされた書き込みビットの数を計数するカウンタと、
前記パックされた書き込みビットを前記書き込みワードとして格納する書き込みワードレジスタと、
前記バレル・シフタの出力と前記書き込みワードレジスタの出力との間でＯＲ演算を行うＯＲ回路と、
を有し、前記カウンタは前記書き込みワードレジスタのステータスを出力する、請求項７に記載のインタリーバ。
【請求項９】
前記書き込みビットは単一ビットからなる請求項１に記載のインタリーバ。
【請求項１０】
前記書き込みビットは複数のビットからなる請求項１に記載のインタリーバ。
【請求項１１】
複数の書き込みワードのそれぞれのビットに対応して、複数の読み出しアドレスを生成することと、
複数のアドレス・キュー内に、前記複数の読み出しアドレスを並列に待ち行列として格納することと、
各アドレス・キューのステータスに基づいて、前記複数のアドレス・キューのうちから空でないアドレス・キューを選択することと、
選択されたアドレス・キューからのアドレスを読み出しアドレスとビット・アドレスとにデコードすることと、
前記読み出しアドレスに基づいて、インタリーブされるべきデータから読み出しワードを抽出することと、
前記ビット・アドレスに基づいて、前記読み出しワードから書き込みビットを選択することと、
前記選択されたアドレス・キューのアドレス・キューＩＤに基づいて、個別の書き込みビットを前記書き込みワードの１つに調停することと、
それぞれの書き込みワードに対する書き込みアドレスを生成することと、
を有する、インタリーブ方法。
【請求項１２】
前記書き込みビットは単一のビットからなる、請求項１１に記載のインタリーブ方法。
【請求項１３】
前記書き込みビットは複数のビットからなる、請求項１１の記載のインタリーブ方法。
【請求項１４】
インタリーブされるべきデータから読み出しワードを抽出する際に用いられる読み出しアドレスを生成する方法であって、
（ａ）複数のアドレスを生成することと、
（ｂ）複数のアドレス・キューに並列に、前記複数のアドレスを待ち行列として格納することと、
（ｃ）各アドレス・キューのステータスに基づいて、前記複数のアドレス・キューのうちから空でないアドレス・キューを選択することと、
（ｄ）選択されたアドレス・キューに格納されたアドレスと前記選択されたアドレス・キューのアドレス・キューＩＤとを出力することと、
（ｅ）生成されたアドレスの全てが処理されるまで、前記待ち行列として格納することと前記選択することと前記出力することとを繰り返すことと、
を有する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばデジタル信号処理において使用されるインタリーバ(interleaver)及びインタリーブ(interleaving)方法の技術分野に関し、特に、例えば種々の無線通信標準を対象とするベースバンドＬＳＩ（大規模集積回路）によって要求されるような種々のインタリーブ・パターン(interleave pattern)にインタリーバが適合しているデジタル信号処理において使用される、インタリーバ及びインタリーブ方法の技術分野に関する。
【背景技術】
【０００２】
無線通信システムは、無線チャネル上を送信されているデータにおいて発生するバースト・エラーにしばしば遭遇する。データのインタリーブ及びデインタリーブ(deinterleaving)は、バースト・エラーの影響を軽減するための核となる技術である。無線通信システムは、効果的なエラー訂正のためにインタリーバを必要とする。インタリーバの１つとして、異なるアドレスでメモリに格納されているビットの順序を並べ替えるビット・インタリーバがある。それらのアドレスは、複数の異なる無線通信標準または仕様の間で異なっているインタリーブ・パターンに基づいている。したがって、異なる無線通信標準を対象とするインタリーバ用のアドレス生成には、フレキシブルな（柔軟性を有する）アドレス生成器を必要とする。無線通信においては、アドレス生成器は、インタリーブ・パターンに基づいて膨大な数の複雑なアドレスを継続的に生成する必要がある。
【０００３】
本発明の関連技術において、任意のインタリーブ・パターンに基づいてこのような複雑なアドレスを生成する、フレキシブルなアドレス生成器は、ＣＰＵ（中央処理ユニット；Central Processing Unit）あるいはマイクロプロセッサなどの典型的なプロセッサを用いて実現されている。このようなプロセッサは、ＣＰＵ上で実行されるソフトウェアによって実装されていてもよい。典型的なプロセッサは、低いスループットという代償のもとで、複雑なアドレスの生成における柔軟さを与える。典型的なプロセッサにおいてはアドレス生成のために利用可能な１サイクル命令が存在しないので、複雑なアドレスの各々は、複数の通常の命令からなるシーケンスを用いて生成される。このシーケンスは、複数の命令サイクルを用いて実行される。さらに、１つのアドレスを生成するための命令サイクルの数は、生成されるべき各アドレスに応じて変化する。これらのことは、典型的なプロセッサを用いて実装されたアドレス生成器のスループットを低下させる。
【０００４】
なお、あるインタリーブ・パタンを用いてインタリーブされているデータに対するデインタリーバ(deinterleaver)は、当該あるインタリーブ・パターンの逆となるインタリーブ・パターンを有するインタリーバを用いて実現することができる。したがって、フレキシブルなアドレス生成器を備えるインタリーバは、種々のインタリーブ・パターンによってインタリーブされたデータに対するデインタリーバとして機能する。
【０００５】
本発明の関連技術において、さまざまな種類のインタリーバとアドレス生成器とが提案されている。
【０００６】
国際公開第０３／０５８８２３号（特許文献１）は、単一のアルゴリズムにより種々のインタリーバ・サイズに用いられるアドレスを生成するフレキシブルなアドレス生成器を備えたインタリーブ装置を開示している。しかしながらこのアドレス生成器は、典型的なプロセッサあるいはＣＰＵによって実装されており、低いスループットに苦しめられる。
【０００７】
欧州特許出願公開１８５０４８６号明細書（特許文献２）は、高速・低遅延のインタリーブ処理を実現するために複数のインタリーバ回路が並列に配置された、並列インタリーバを開示している。並列インタリーバは、インタリーブ・パターンの修正に柔軟に対応することができる。しかしながら、並列インタリーバの回路規模は非常に大きく、そこで用いられるアドレス生成器も、同じく複雑な構成を有する。
【０００８】
米国特許第７３４３５３０号明細書（特許文献３）は、ＳＩＭＤ（単一命令複数データ：single-instruction and multiple-data）プロセッサに基づくアドレス生成器を開示している。このアドレス生成器は、複数のアドレスを並列に生成して、アドレス生成サイクルの数を低減している。しかしながら、各サイクルごとに１つのアドレスを生成するために、カスタマイズされたアドレス生成命令が必要とされる。カスタマイズされた命令のための命令オプコード（opcode；命令コード(operation code)）が限られていることから、全てのインタリーブ・パターンから求められる全てのカスタマイズされた命令を用意することは現実的でない。したがって特許文献３は、全てのインタリーブ・パターンに対してフレキシブルな高スループット・インタリーバを教示しているわけではない。
【０００９】
米国特許第６５７４７６６号明細書（特許文献４）は、アドレス生成に要するサイクル数を削減するカスタマイズされたアドレス生成器を有するインタリーブ−デインタリーブ装置を開示している。カスタマイズされた各アドレス生成器は、カウンタと、カウンタの出力が供給されるルックアップ・テーブルとを含んでいる。メモリは、カスタマイズされたアドレス生成器の複数の出力のいずれを選択するかに応じて、インタリーバ及びデインタリーバとして機能することができる。カスタマイズされたアドレス生成器の柔軟性に限りがあることにより、特許文献４は、全てのインタリーブ・パターンに対してフレキシブルな高スループット・インタリーバを教示しているわけではない。
【００１０】
特開平７−２５４８６２号公報（特許文献５）は、複数のインタリーブ・フォーマットに対応したインタリーブ−デインタリーブ回路を開示している。この回路は、メモリと、複数のカウンタと、カウンタの出力を組み合わせることによってメモリアドレスを生成するマルチプレクサと、カウンタがリップル・キャリー（桁上がり伝搬；ripple-carry）信号を出力したときに、選択されているインタリーブ・フォーマットに対応する値にカウンタを初期化するモード・コントローラと、を含んでいる。しかしながら、計数された値に基づいてアドレスが生成されるので、このインタリーバは、任意のインタリーブ・パターンの全てに対応する柔軟性を有しているわけではない。
【００１１】
国際公開第２００５／０９１５０９号（特許文献６）は、インタリーバ・メモリをアドレス指定するためのアドレス値を生成する、複数プロセッサ・ベース(multiple-processor-based)のアドレス生成器を開示している。このアドレス生成器では、ＭＳＢ（最上位ビット；Most Significant Bit）が付加されるべき連続したアドレス・フラグメントが生成される。アドレス生成器では、潜在的に最大許容値を超える可能性がある、生成されたアドレス・フラグメントの一部分のみが、最大許容値と比較される。
【００１２】
図１は、特許文献６のアドレス生成器を示している。このアドレス生成器８００は、所定の数のレジスタ８１０ａ〜８１０ｄと、それぞれレジスタ８１０ａ〜８１０ｄの入力に接続されたマルチプレクサ８２０ａ〜８２０ｄと、レジスタ８１０ａ〜８１０ｄの出力が供給される第１の並べ替え部(permutation unit)８３０ａと、レジスタ８１０ａ〜８１０ｄの出力が供給される第１のアドレス・フラグメント計算部８４０ａと、第１のアドレス・フラグメント計算部８４０ａの複数の出力が供給される第２の並べ替え部８３０ｂと、第１のアドレス・フラグメント計算部８４０ａの複数の出力が供給される第２のアドレス・フラグメント計算部８４０ｂと、第１及び第２の並べ替え部８３０ａ，８３０ｂの出力のうちの１つを選択するアービタ（調停器；arbiter）（またはセレクタ（選択器））８５０と、制御信号Ｅ，Ｍをレジスタ８１０ａ〜８１０ｄ及びアービタ８５０にそれぞれ供給するコンパレータ（比較器）８６０と、アービタ８５０の出力に１またはいくつかのＭＳＢを連結あるいは付加するように適合させられたトグル(toggle)部８７０と、を含んでいる。
【００１３】
図２は、図１に示されるアドレス発生器の動作を示している。まず、ステップ９００において処理手順が初期化され、そののち、ステップ９０１において、奇数アドレス・フラグメントがレジスタにロードされ、ステップ９０２において、次のアドレス・フラグメントと次の次のアドレス・フラグメントとが生成され、ステップ９０３において、奇数アドレス・フラグメントと次のアドレス・フラグメントとが並べ替えられる（順序置換(permutation)される）。並べ替えののち、ステップ９０４において、並べ替え後の奇数アドレス・フラグメントは範囲内にあるかどうかが判断される。範囲内にあれば（「はい」の場合であれば）、ステップ９０５において、並べ替え後の奇数アドレス・フラグメントにＭＳＢが付加され、ステップ９０６において、レジスタの値が差し引かれ、ステップ９０７において、生成されたアドレス値が出力され、その後、処理手順はステップ９０８に進む。ステップ９０４において範囲内にない場合（「いいえ」の場合）には、処理手順は、直接、ステップ９０８に進む。
【００１４】
ステップ９０８において、並べ替え後の次のアドレス・フラグメントに対してＭＳＢが付加され、その後、ステップ９０９において、次のアドレス値が出力される。ステップ９１０において、可能なすべてのアドレス値が生成されたかどうかが判断される。生成されていなければ、処理はステップ９０１に戻り、生成されていれば、処理は終了する。
【００１５】
特許文献６のアドレス生成器は、２つの並べ替え部８３０ａ，８３０ｂとアービタ８５０とを備える点で特徴づけられる。第１の並べ替え部８３０ａの出力は、Ａoddと表記される奇数アドレス・フラグメントであり、第２の並べ替え部８３０ｂの出力は、Ａevenと表記される偶数アドレス・フラグメントである。図２のステップ９０４に示されるようにＡoddが所望の範囲内にあれば、アービタ８５０は、Ａoddを現在の出力として選択する。そしてアービタ８５０は、Ａevenを次の出力として選択する。このことは、もしＡoddがノット・レディ（動作不可能）であるがＡevenがレディ（準備完了）であるとすると、現在のサイクルにおいて、アービタ８５０が現在のサイクルの出力としてＡevenを選択できないことを意味する。その結果、現在のサイクルでの出力がなくなり、アドレス生成器のスループットが低下する。言い換えれば、並べ替え部８３０ａまたは並べ替え部８３０ｂからのアドレスがノット・レディであれば、ウェイト（待ち）サイクルが必要となる。したがって特許文献６は、全てのインタリーブ・パターンに対してフレキシブルな高スループット・インタリーバを教示しているわけではない。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】国際公開第０３／０５８８２３号
【特許文献２】欧州特許出願公開１８５０４８６号明細書
【特許文献３】米国特許第７３４３５３０号明細書
【特許文献４】米国特許第６５７４７６６号明細書
【特許文献５】特開平７−２５４８６２号公報
【特許文献６】国際公開第２００５／０９１５０９号
【発明の概要】
【発明が解決しようとする課題】
【００１７】
上述したように、全てのインタリーブ・パターンに対する柔軟性を有する既知のインタリーバあるいはアドレス生成器は、高いスループットを有していない。
【００１８】
本発明の例示的な目的は、いくつかの無線通信標準において使用されている複雑なパターンを含む全てのインタリーブ・パターンに対する柔軟性を有する高スループットのインタリーバを提供することにある。
【００１９】
本発明の別の例示的な目的は、いくつかの無線通信標準において使用されている複雑なパターンを含む全てのインタリーブ・パターンに対する柔軟性を有し、高いスループットを有するインタリーブ方法を提供することにある。
【課題を解決するための手段】
【００２０】
本発明の例示的な態様によれば、インタリーバは、複数の書き込みワードのそれぞれのビットに対する読み出しアドレスを並列に生成する複数のプロセッサと、プロセッサからそれぞれ受け取った読み出しアドレスを待ち行列として格納し、それぞれがそのステータスを出力する複数のアドレス・キューと、複数のアドレス・キューの中から、各アドレス・キューのステータスに基づいて空でないアドレス・キューを選択し、選択されたアドレス・キューからのアドレスを出力するとともに選択されたアドレス・キューのアドレス・キューＩＤを出力する第１のアービタと、選択されたアドレス・キューのからのアドレスをワード・アドレスとビット・アドレスとにデコードするデコーダと、インタリーブされるべきデータを格納し、ワード・アドレスに基づいて読み出しワードを出力する入力記憶装置と、ビット・アドレスに基づき、読み出しワードから読み出しビットを選択する第１のセレクタと、アドレス・キューＩＤに基づいて、個別の書き込みビットを書き込みワードの１つに調停し、それぞれの書き込みワードに対する書き込みアドレスを生成する書き込みコントローラと、書き込みアドレスに基づいて書き込みワードを格納する出力記憶装置と、を有する。
【００２１】
本発明の別の例示的な態様によれば、インタリーブ方法は、複数の書き込みワードのそれぞれのビットに対応して、複数の読み出しアドレスを生成することと、複数のアドレス・キュー内に、複数の読み出しアドレスを並列に待ち行列として格納することと、各アドレス・キューのステータスに基づいて、複数のアドレス・キューのうちから空でないアドレス・キューを選択することと、選択されたアドレス・キューからのアドレスを読み出しアドレスとビット・アドレスとにデコードすることと、読み出しアドレスに基づいて、インタリーブされるべきデータから読み出しワードを抽出することと、ビット・アドレスに基づいて、読み出しワードから書き込みビットを選択することと、選択されたアドレス・キューのアドレス・キューＩＤに基づいて、個別の書き込みビットを書き込みワードの１つに調停することと、それぞれの書き込みワードに対する書き込みアドレスを生成することと、を有する。
【００２２】
本発明のこれらの例示的な態様によれば、空でないアドレス・キューが存在するときは、常に、読み出しアドレスを与えることが可能である。これは、空であるアドレス・キューのいずれかからのアドレスを待つためのサイクルを削減する。本発明の例示的な態様は、例えば、高スループットのインタリーバを実現できるという利点を有する。
【００２３】
本発明のこれらの利点及び他の利点は、以下の詳細な説明及び添附の図面を参照して、当業者には明らかになるであろう。
【図面の簡単な説明】
【００２４】
【図１】関連技術における、複数プロセッサ・ベースのアドレス発生器のブロック図である。
【図２】図１に示したアドレス発生器の動作を示すフローチャートである。
【図３】本発明の例示実施形態に基づくインタリーバのブロック図である。
【図４】図３に示したインタリーバにおいて用いられるアービタの例示的な構成を示すブロック図である。
【図５】図４に示したアービタの例示的な動作を示すフローチャートである。
【図６】インタリーバの別の例のブロック図である。
【図７】例示的なバイト・インタリーバのブロック図である。
【図８】図７に示したインタリーバの動作を示すタイミング図である。
【図９】本発明の別の例示実施形態に基づくインタリーバのブロック図である。
【発明を実施するための形態】
【００２５】
次に、本発明の例示実施形態の構成図が示されている添付の図面を参照して、本発明をさらに詳しく説明する。
【００２６】
図３に示すように、本発明の例示実施形態に基づくインタリーバ１００は、Ｎが１を超える整数であるとして、Ｎ個のプロセッサ１０１−１〜１０１−Ｎと、それぞれプロセッサ１０１−１〜１０１−Ｎに対して配置されているＮ個のアドレス・キュー１０２−１〜１０２−Ｎと、アドレス・キュー１０２−１〜１０２−Ｎに対して共通に設けられているアドレス・アービタ１０３と、デコーダ１０４と、入力記憶装置１０５と、セレクタ１０６と、書き込みコントローラ１０７と、出力記憶装置１０８と、を有している。なお、プロセッサ１０１−１〜１０１−Ｎとアドレス・キュー１０２−１〜１０２−Ｎとアービタ１０３は、このインタリーバの読み出しアドレス生成部１００ａを構成している。インタリーバ１００は、データをビットごとにインタリーブするビット・インタリーバとして構成されている。
【００２７】
この構成において、プロセッサ１０１−１〜１０１−Ｎの各々は、複数の書き込みワードの対応するビットに対する読み出しアドレスを生成して出力するように構成されている。複数のプロセッサ１０１−１〜１０１−Ｎが相互に並列に配置されているので、プロセッサは、全体として、複数の書き込みワードのそれぞれのビットに対する読み出しアドレスを並列に生成する。後述するように、プロセッサ１０１−１〜１０１−Ｎは、好ましくは、任意の可能なインタリーブ・パターンに対するアドレスを生成できるように、プログラマブル（プログラム可能）である。例えば、プロセッサ１０１−１〜１０１−Ｎは、プログラマブル・プロセッサである。複数のアドレス・キュー１０２−１〜１０２−Ｎは、それぞれプロセッサ１０１−１〜１０１−Ｎから供給されたアドレスを待ち行列に入れて格納し、出力するように構成されている。アドレス・キュー１０２−１〜１０２−Ｎの各々は、当該アドレス・キューのステータス（状態）を示しているステータス信号を出力する。アドレス・アービタ１０３は、アドレス・キュー１０１−１〜１０１−Ｎのうちの１つを選択して、選択されたアドレスとアドレス・キューＩＤとを出力するように構成されている。この例示実施形態において、アドレス・キュー１０２−１〜１０２−Ｎの各々は、異なるＩＤ（識別番号）が付与されており、アドレス・アービタ１０３は、選択されたアドレス・キューのＩＤをアドレス・キューＩＤとして出力する。選択されるアドレス・キューは、「空でない(not empty)」というステータスを有するアドレス・キューのいずれか１つである。空かどうかのステータスは、アービタ１０３に供給されるステータス信号によって示される。
【００２８】
デコーダ１０４は、選択されたアドレスをアービタ１０３から受け取り、受け取ったアドレスを、ワード・アドレスである読み出しアドレスと、ビット・アドレスとにデコードするように構成されている。読み出しアドレスは入力記憶装置に供給され、一方、ビット・アドレスはセレクタ１０６に供給される。入力記憶装置１０５は、インタリーブされるべきデータを受け取って格納し、格納されているデータから読み出しアドレスに基づいて読み出しワードを選択し、その読み出しワードを出力するように構成されている。セレクタ１０６は、入力記憶装置１０５から読み出しワードを受け取り、ビット・アドレスに基づいて、受け取った読み出しワードから書き込みビットを選択するように構成されている。選択された書き込みビットは、書き込みコントローラ１０７に供給される。
【００２９】
書き込みコントローラ１０７は、アービタ１０３から受け取ったアドレス・キューＩＤに基づき、受け取った書き込みビットを対応する書き込みワードにパック(pack)するように構成されている。書き込みワードは、生成された書き込みアドレスとともに、出力記憶装置１０８に送られる。出力記憶装置１０８は、書き込みアドレスに基づいて書き込みワードを格納するように構成されている。インタリーブされたデータは、出力記憶装置１０８から読み出すことができる。
【００３０】
図４は、アービタ１０３の構成の一例を示している。アービタ１０３は、コントローラ７０１とセレクタ７０２とを有している。Ｎが１を超える自然数であるとしてインタリーバがＮ個のプロセッサ１０１−１〜１０１−Ｎを有するとき、アービタ１０３は、アドレス（アドレス−１〜アドレス−Ｎ）とステータス（ステータス−１〜ステータス−Ｎ）とのＮ対の組み合わせを入力として受け取る。コントローラ７０１は、ステータス入力（ステータス−１〜ステータス−Ｎ）を調べて、アドレス・キュー１０２−１〜１０２−Ｎのうちの「空でない」ステータスを有するいずれかのアドレス・キューのＩＤを出力する。このＩＤはアドレス・キューＩＤとしてセレクタ７０２及び書き込みコントローラに送られる。コントローラ７０１からのＩＤに基づき、セレクタ７０２は、入力アドレス（アドレス−１〜アドレス−Ｎ）の１つを出力アドレス、すなわち選択されたアドレスとして選択する。アービタ１０３は、典型的には、外部ＣＰＵ（不図示）によって初期化される。
【００３１】
図５は、アービタ１０３の動作の一例を示すフローチャート６００を示している。まず、アービタ１０３は、ステップ６０１において、外部ＣＰＵ（不図示）によって初期化される。次にステップ６０２において、アービタ１０３は、全てのアドレス・キュー１０２−１〜１０２−Ｎからステータスを受け取る。ステップ６０３において、コントローラ７０１は、いずれかのステータスが、その対応するアドレス・キューがアドレス・データを含んでいることを示してるかどうかを判断する。言い換えれば、コントローラ７０１は、空でないアドレス・キューを検索する。どのアドレス・キューもアドレスを含んでいない場合、ステップ６０２で示された処理が繰り返される。いずれかのアドレス・キューがアドレスを含んでいる場合には、ステップ６０４において、コントローラ７０１は、アドレス・キュー１０２−１〜１０２−Ｎのうちのデータを含んでいるいずれかのアドレス・キューのＩＤを出力し、セレクタ７０２は、コントローラ７０１からのＩＤに基づいて、アドレス・キュー１０２−１〜１０２−Ｎの出力を選択する。次にステップ６０５において、コントローラ７０１は、プロセッサ１０１−１〜１０１−Ｎからの全てのアドレスが選択されたかどうかを判断する。全てのアドレスが選択されている場合、アービタ１０３の動作を終了し、そうでない場合、処理はステップ６０２に戻る。
【００３２】
この例示実施形態において、アービタ１０３は、アドレスの出力のために、空でない任意のアドレス・キューを選択することができる。空でないアドレス・キューが存在する限り、空のアドレス・キューからのデータを待ち合わせるサイクルは存在しない。したがって、本例示実施形態では、待ち合わせのサイクル数を削減することができ、この削減された待ち合わせサイクルは、全てのアドレスが準備完了（レディ）となるまで待ち合わせるインタリーバにおけるスループットよりも高い、インタリーバにおけるスループットをもたらす。
【００３３】
アービタ１０３は、選択されたアドレス・キューのアドレス・キューＩＤを出力することができる。書き込みコントローラ１０７は、アービタ１０３からのアドレス・キューＩＤに基づいて、それぞれの書き込みワードに対して書き込みビットを調停する。
【００３４】
図６は、本例示実施形態に基づくインタリーバの別の例を示している。図６に示すインタリーバ２００は、以下に説明するように書き込みコントローラ２０７の構成の点を除いて、図３に示したインタリーバ１００と同じである。図６において、図３における構成要素と対応する構成要素は、その下２桁が図３におけるものと同じである符号を用いて示されている。したがって、インタリーバは、複数のプロセッサ２０１−１〜２０１−Ｎと、複数のアドレス・キュー２０２−１〜２０２−Ｎと、アドレス・アービタ２０３と、デコーダ２０４と、入力記憶装置２０５と、セレクタ２０６と、書き込みコントローラ２０７と、出力記憶装置２０８とを有している。ここでＮは、１を超える整数である。プロセッサ２０１−１〜２０１−Ｎとアドレス・キュー２０２−１〜２０２−Ｎとアービタ２０３とは、このインタリーバの読み出しアドレス生成部２００ａを構成する。
【００３５】
インタリーバ２００において、書き込みコントローラ２０７は、セレクタ２０９とＮ個のパッカー(packer)２１０−１〜２１０−ＮとＮ個のアドレス生成器２１１−１〜２１１−Ｎとアービタ２１２とを有している。セレクタ２０９は、セレクタ２０６の書き込みビット出力に接続し、アービタ２０３から受け取ったアドレス・キューＩＤに基づいて、パッカー２１０−１〜２１０−Ｎのうちの１つを選択する。セレクタ２０９は、受け取った書き込みビットを選択されたパッカーに送る。
【００３６】
パッカー２１０−１〜２１０−Ｎの各々は、バレル・シフタ(barrel shifter)を有するよく知られた在来のパッカーであってよい。パッカー２１０−１〜２１０−Ｎは、上述した受け取った書き込みビットを、それぞれの書き込みワードとしてパック(pack)し、データとしてその書き込みワードを出力する。パッカー２１０−１〜２１０−Ｎは、それぞれが対応する書き込みワードのステータスを示すステータス信号も出力する。アドレス生成器２１１−１〜２１１−Ｎは、それぞれのパッカー２１０−１〜２１０−Ｎ内の書き込みワードに対する書き込みアドレスを生成するように構成されている。
【００３７】
アービタ２１２は、パッカー２１０−１〜２１０−Ｎのうち、書き込みワードで満たされているいずれかのパッカーを選択して書き込みデータを出力するように構成されている。この場合、「満たされている」ステータスとは、３２ビットすなわち４バイトが書き込みワードにパックされていることを意味する。満たされた書き込みワードは、個別のアドレス・パッカー２１０−１〜２１０−Ｎの各々からのステータス信号によってアービタ２１２に示される。ステータス信号に基づき、アービタ２１２は、アドレス生成器２１１−１〜２１１−Ｎの１つも選択し、書き込みアドレスを出力する。アドレス生成器２１１−１〜２１１−Ｎは、また、個別のアドレス・パッカー２１０−１〜２１０−Ｎからのステータス信号に基づいて、それらのアドレスを更新する。アービタ２１２の構成は、図４に示したアービタ１０３と同じであり、図４での「アドレス−１」〜「アドレス−Ｎ」が、それぞれ、パッカー２１０−１〜２１０−Ｎからの書き込みデータに対応する。
【００３８】
以下に、インタリーバ２００の動作を説明する。
【００３９】
まず、インタリーバは初期化される。プロセッサ２０１−１〜２０１−Ｎは外部ＣＰＵ（不図示）によってプログラムされ、それぞれの書き込みワードの隣接する書き込みビットに対するアドレスを生成する。パッカー２１０−１〜２１０−Ｎ中の書き込みワードのステータスは、外部ＣＰＵ（不図示）によって「空」として初期化される。アドレス生成器２１１−１〜２１１−Ｎも、それぞれの書き込みワードに対する書き込みアドレスの初期値を生成するように、外部ＣＰＵ（不図示）によって初期化される。
【００４０】
初期化の後、インタリーブ動作が開始するであろう。Ｎは１を超える自然数であるとして、１からＮまでの範囲内にある整数ｋごとに対し、プロセッサ２０１−ｋで生成されたアドレスが、アドレス・キュー２０２−ｋに出力される。アービタ２０３は、アドレス・キュー２０２−１〜２０２−Ｎのうち、「空でない」というステータスを有するいずれかのアドレス・キューを選択する。選択されたアドレス・キューは、デコーダ２０４の入力として、アドレスを出力する。アービタ２０３は、書き込みコントローラ２０７に対し、選択されたアドレス・キューのアドレス・キューＩＤも出力する。
【００４１】
デコーダ２０４は、アドレスを受け取って、そのアドレスを、入力記憶装置２０５に出力される読み出しアドレス（すなわちワード・アドレス）と、セレクタ２０６に出力されるビットアドレスとにデコードする。読み出しアドレスに基づいて、入力記憶装置２０５は、読み出しワードをセレクタ２０６に出力する。ビット・アドレスに基づいて、セレクタ２０６は、書き込みコントローラ２０７に送られる書き込みビットとして、読み出しワードから１ビットを選択する。
【００４２】
書き込みコントローラ２０７において、アービタ２０３からのアドレス・キューＩＤに基づき、セレクタ２０９は、セレクタ２０６からの書き込みビットを受け取るべき１つのパッカーをパッカー２１０−１〜２１０−Ｎの中から選択する。選択されたパッカーは、そのパッカー内に配置された書き込みワード・レジスタ内に、受け取った書き込みビットをパックする。
【００４３】
パッカー２１０−１〜２１０−Ｎのいずれかが書き込みワードで満たされるまで上記の動作を繰り返すと、アービタ２１２は、出力されるべき書き込みワードとしてそのパッカー内の書き込みワードを選択し、出力すべき書き込みアドレスとして、アドレス生成器２１１−１〜２１１−Ｎからのアドレスを選択する。選択された書き込みワードと選択された書き込みアドレスとは、出力記憶装置２０８に出力される。書き込みアドレスに基づいてひとたび出力記憶装置２０８が書き込みワードを格納すると、選択されたパッカーは、その書き込みワードを「空」に設定し、選択されたアドレス生成器はその書き込みアドレスを更新する。全ての書き込みワードが出力記憶装置２０８に格納されるまで、上記のインタリーブ動作は繰り返される。
【００４４】
図６に示した構成によれば、アドレスを出力するためにアドレス・キュー２０２−１〜２０２−Ｎの中から「空でない」いずれかのアドレス・キューを選択するアドレス・アービタ２０３を用いることにより、高スループットのインタリーバを実現することができる。アドレス・アービタ２０３は、選択されたアドレス・キューのＩＤも書き込みコントローラ２０７に対して出力する。書き込みコントローラ２０７は、アドレス・キューＩＤに基づいて、対応する書き込みワードに書き込みビットをパックする。このインタリーバの有利な効果は、空でないアドレス・キューがある限り、いつでも読み出しアドレスを与えることができることである。このようにして、空であるアドレス・キューからのアドレスを待ち合わせるサイクルが削減される。したがって、インタリーバ２００は、図３に示したインタリーバと同様に、高いスループットを有する。
【００４５】
セレクタ２０６の出力データ幅が１ビットであるビット・インタリーバに関して例示実施形態を説明したが、Ｄが１とセレクタ２０６の読み出しワードにおけるビット数との間の整数であるとして、この例示実施形態は、セレクタ２０６の出力に対してＤビットのデータ幅を有するインタリーバにも適用可能である。これは、デコーダ２０４からのビット・アドレスに基づいて読み出しワードからＤビットの隣接ビットを選択するためにセレクタ２０６を使用し、セレクタ２０６の出力データ幅をＤビットに設計することで、可能である。例えば、デコーダ２０４からのビット・アドレスに基づいて、セレクタ２０６を用いて読み出しワードから１バイト（すなわち８ビット）を選択し、セレクタ２０６の出力の出力データ幅を１バイトに設計することで、本例示実施形態をバイト・インタリーバに適用可能である。図７は、本例示実施形態に基づくバイト・インタリーバの一例を示している。
【００４６】
図７に示すインタリーバ３００は、上述したインタリーバにおけるアドレス生成器内のプロセッサの数が２、すなわちＮ＝２の場合に対応するものである。図７において、図３における構成要素と対応する構成要素は、その下２桁が図６におけるものと同じである符号を用いて示されている。したがって、インタリーバ３００は、２つのプロセッサ３０１−１，３０１−２と、２つのアドレス・キュー３０２−１，３０２−２と、アドレス・アービタ３０３と、デコーダ３０４と、入力記憶装置３０５と、セレクタ３０６と、書き込みコントローラ３０７と、出力記憶装置３０８とを有している。書き込みコントローラ３０７は、セレクタ３０９と、２つのパッカー３１０−１，３１０−２と、２つの書き込みアドレス生成器３１１−１，３１１−２と、アービタ３１２とを有している。プロセッサ３０１−１，３０１−２とアドレス・キュー３０２−１，３０２−２とアドレス・アービタ３０３は、インタリーバ３００の読み込みアドレス生成部３００ａを構成する。
【００４７】
図８に示す例示的なタイミング図に基づき、インタリーバ３００の動作について説明する。タイミング図では、入力記憶装置３０５から１６個の読み出しワードを読出すために、１６個のアドレス（Ａ０〜Ａ３，Ｂ０〜Ｂ３，Ｃ０〜Ｃ３，Ｄ０〜Ｄ３）が生成されている。タイミング図の最初の行に表されているクロック信号Ｃｌｋは、インタリーバ３００の動作サイクルを規定し、各動作サイクルは、立ち上がりエッジごとに開始する。図８には、全部で１８のサイクル＃０〜＃１７が描かれており、データを含んでいることを“１”で、空であることを“０”で、ステータスが表現されている。それぞれの読み出しワードからの８ビットのブロックが、書き込みバイト（ａ０〜ａ３，ｂ０〜ｂ３，ｃ０〜ｃ３，ｄ０〜ｄ３）として選択される。４個の書き込みバイトが、出力記憶装置３０８に格納されるべき書き込みワードとしてパックされる。アドレスＡ０，Ａ２，Ｃ０，Ｃ２の生成には各々１サイクルを必要とし、アドレスＡ１，Ａ３，Ｃ１，Ｃ３の生成には各々３サイクルを必要とするものとする。
【００４８】
まず、外部ＣＰＵ（不図示）がプロセッサ３０１−１，３０１−２を初期化する。外部ＣＰＵは、書き込みアドレス生成器３１１−１，３１１−２も初期化する。次に、プロセッサ３０１−１は、アドレスＡ０〜Ａ３，Ｃ０〜Ｃ３を順次生成し、プロセッサ３０１−２は、アドレスＢ０〜Ｂ３，Ｄ０〜Ｄ３を順次生成する。両方のプロセッサ３０１−１，３０１−２は並列に動作する。
【００４９】
サイクル＃０において、アドレス・キュー３０２−１はアドレスＡ０を含んでいる。アドレス・キュー３０２−１のステータスは、（“１”によって示されて）「空でない」である。したがって、アービタ３０３は、アドレスＡ０とアドレス・キュー３０２−１のＩＤとを出力する。次にアドレスＡ０は、読み出しワードにアクセスするために、デコードされる。セレクタ３０９は、次に、書き込みバイトａ０として、読み出しワードから１バイトを選択する。アービタ３０３からのアドレス・キューＩＤに基づいて、セレクタ３０９は、次に、書き込みバイトａ０をパックするためにパッカー３１０−１を選択する。なお、書き込みバイトａ０は、１サイクル後に、すなわちサイクル＃１において、パッカー３１０−１内の書き込みワードレジスタにラッチされるであろう。
【００５０】
サイクル＃１において、アドレス・キュー３０２−１にはアドレスが存在しない。これは、サイクル＃０においてアドレスＡ０が出力されており、アドレスＡ１はサイクル＃３において入力されるだろうからである。したがって、アドレス・キュー３０２−１のステータスは、（“０”によって示されて）「空」である。アドレス・キュー３０２−２は、アドレスＢ０を有している。アドレス・キュー３０２−２のステータスは、「空でない」である。アドレス・キュー３０２−１からのアドレスＡ１を待つ代わりに、アービタ３０３は、アドレス・キュー３０２−２からのアドレスＢ０を選択する。データを有する任意のアドレス・キューを選択するというこの機能は、例えば特許文献６に記載されている関連技術におけるインタリーバでは、利用することができない。
【００５１】
サイクル＃２〜＃７において、サイクル＃０〜＃１の動作が、アドレスＡ１〜Ａ３，Ｂ１〜Ｂ３及びそれぞれの書き込みバイト（ａ１〜ａ３，ｂ１〜ｂ３）に対して繰り返される。
【００５２】
サイクル＃８において、書き込みバイトａ０〜ａ３を格納したのち、パッカー３１０−１内の書き込みワード・レジスタが満たされていっぱいになる。したがって、アービタ３１２は、書き込みバイトａ０〜ａ３を書き込みデータとして選択し、アドレス生成器３１１−１の出力を書き込みアドレスとして選択する。なお、アービタ３１２及びアドレス生成器３１１の動作は、図６に関連して先に説明したアービタ２１２及びアドレス生成器２１１の動作と同じであり、ここでは、それらの動作の詳細を繰り返しては説明しない。
【００５３】
サイクル＃８〜＃１６において、サイクル＃０〜＃７での動作が、アドレスＣ０〜Ｃ３，Ｄ０〜Ｄ３及びそれぞれの書き込みバイト（ｃ０〜ｃ３，ｄ０〜ｄ３）に対して繰り返される。サイクル＃９，＃１６，＃１７の各々において、書き込みワード・レジスタは満たされていっぱいとなっており、アービタ３１２は、それに応じて書き込みデータとアドレスとを選択する。
【００５４】
図９は、本発明の別の例示実施形態に基づくインタリーバを示している。図９に示すインタリーバ５００は、いくつかの新しい要素が書き込みコントローラに追加されている点を除いて、図６に示したインタリーバ２００と同じである。したがってインタリーバ５００は、図６に示したインタリーバ２００に関連して上述した有利な効果を示すことができる。図９において、図６における構成要素と対応する構成要素は、その下２桁が図６におけるものと同じである符号を用いて示されている。
【００５５】
書き込みコントローラ５０７に対して新たに加えられ要素は、バレル・シフタ５１３と、セレクタ５０９と、クロック信号を生成するクロック・コントローラ５１４と、シフタなし(shifter-less)パッカー５１０−１〜５１０−Ｎである。バレル・シフタが独立して設けられているので、書き込みコントローラ５０７内の各パッカーは、バレル・シフタを有していない。したがって、書き込みコントローラ５０７は、バレル・シフタ５１３と、セレクタ５０９と、Ｎ個のシフタなしパッカー５１０−１〜５１０−Ｎと、クロック信号を生成するクロック・コントローラ５１４と、Ｎ個のアドレス生成器５１１−１〜５１１−Ｎと、アービタ５１２とを有する。
【００５６】
インタリーバ５００の説明に関し、図６に示したインタリーバ２００からは異なっている構造及び動作についてのみ、以下に説明する。
【００５７】
バレル・シフタ５１３は、セレクタ５０９からの制御信号に基づいて、セレクタ５０６からの書き込みビットをシフトするように構成されている。セレクタ５０９は、アービタ５０３からのアドレス・キューＩＤに基づいて、シフタなしパッカー５１０−１〜５１０−Ｎのうちの１つのからのパックされた書き込みビットの数を選択するように構成されている。セレクタ５０９の選択された出力は、バレル・シフタ５１３に対する制御信号である。
【００５８】
シフタなしパッカー５１０−１〜５１０−Ｎは、バレル・シフタ５１３の出力を書き込みワードとしてパックするように構成されている。このパック動作は、クロック・コントローラ５１４がシフタなしパッカー５１０−１〜５１０−Ｎのうちの１つに対するクロック信号を有効（イネーブル）にしたときに実行される。クロック・コントローラ５１４は、アービタ５０３からのアドレス・キューＩＤに基づいて、シフタなしパッカー５１０−１〜５１０−Ｎの１つに供給されるクロック信号を有効にするように構成されている。例えば、アドレス・キュー５０２−ｋのＩＤがアービタ５０３によって出力されたとき、クロック・コントローラ５１４は、シフタなしパッカー５１０−ｋに対するクロック信号を有効にする。アドレス生成器５１１−１〜５１１−Ｎは、シフタなしパッカー５１０−１〜５１０−Ｎのそれぞれの書き込みワードに対する書き込みアドレスを生成するように構成されている。アービタ５１２は、シフタなしパッカー５１０−１〜５１０−Ｎのうち、ステータス・フル(status full)」である書き込みワードを有するいずれかのシフタなしパッカーを選択するように構成されている。この場合、ステータス・フルは、３２ビットすなわち４バイトがその書き込みワードにパックされていることを意味する。アービタ５１２は、対応するステータス・フルの書き込みワードへの書き込みアドレスを出力するためのアドレス生成器も選択する。
【００５９】
シフタなしパッカー５１０−１〜５１０−Ｎは同一の構成を有するので、シフタなしパッカー５１０−１を例として用いてこれらのシフタなしパッカーを説明する。シフタなしパッカー５１０−１は、カウンタ５２１−１と書き込みワード・レジスタ５２２−１とＯＲ回路５２３−１とを有している。カウンタ５２１−１は、シフタなしパッカー５１０−１内のパックされた書き込みビットの数を出力し、書き込みワード・レジスタ５２２−１のステータスを出力するように構成されている。書き込みワード・レジスタ５２２−１は、書き込みワードとして、パックされた書き込みビットを格納するように構成されている。ＯＲ回路５２３−１は、バレル・シフタ５１３の出力と書き込みワード・レジスタ５２２−１の出力との間で論理ＯＲ演算（論理和演算）を行うように構成されている。
【００６０】
インタリーバ５００の初期化は、以下の２つの手順が付加されていることを除いて、図６に示したインタリーバ２００の初期化と同じ形態で実行される：
（１）シフタなしパッカー５１０−１〜５１０−Ｎ内のレジスタ５２２−１〜５２２−Ｎは、外部ＣＰＵ（不図示）によってゼロとして初期化される；
（２）カウンタ５２１−１〜５２１−Ｎはゼロとして初期化される。
【００６１】
次に、図６に示したインタリーバの動作から異なる点に関して、インタリーバ５００の動作を説明する。
【００６２】
書き込みコントローラ５０７において、アービタ５０３からのアドレス・キューＩＤに基づいて、クロック・コントローラ５１４は、シフタなしパッカー５１０−１〜５１０−Ｎのうちの１つのクロックを有効にする。同時にセレクタ５０９は、アドレス・キューＩＤに基づいて、パックされた書き込みビットの数の１つを選択する。パックされた書き込みビットの数は、シフタなしパッカー５１０−１〜５１０−Ｎの出力である。
【００６３】
シフタなしパッカー５１０−１〜５１０−Ｎの各々において、バレル・シフタ５１３の出力は、書き込みワード・レジスタの出力に対して、ＯＲされる、すなわち論理ＯＲ演算される。ＯＲ演算の出力は、書き込みワード・レジスタに格納される。書き込みワード・レジスタ５２２−１〜５２２−Ｎの出力は、アービタ５１２に供給される。アービタ５１２は、シフタなしパッカー５１０−１〜５１０−Ｎのうち書き込みワードで満たされていっぱいになっているいずれかのシフタなしパッカーを選択し、アドレス生成器５１１−１〜５１１−Ｎの１つを選択して、選択されたシフタなしパッカーの書き込みワードに対する書き込みアドレスを出力する。
【００６４】
アドレス・キューＩＤを使用して、パックされたビットの数の１つを選択し、シフタなしパッカー５１０−１〜５１０−Ｎに共通に設けられているバレル・シフタ５１３を制御することにより、インタリーバ５００の面積を縮減することが可能になる。これは、個々のシフタなしパッカー５１０−１〜５１０−Ｎにはバレル・シフタが存在しないからである。
【００６５】
本発明の例示的な態様に従えば、アドレスを出力するために「空でない」いずれかのアドレス・キューを選択するアドレス・アービタを用いることによって、高スループットのインタリーバを実現することができる。アドレス・アービタは、選択されたアドレス・キューのＩＤも書き込みコントローラに出力する。次に書き込みコントローラは、アドレス・キューＩＤに基づいて、書き込みビットを対応する書き込みワードにパックする。これは、空であるアドレス・キューからのデータを待ち合わせるサイクルを低減することにより、インタリーバのスループットを増加させる。
【００６６】
本発明の別の例示的な態様によれば、インタリーブ・パターンに対する異なる要求に適合する低コストなインタリーバが実現できる。これは、いずれもアドレス生成器内に設けられるプロセッサの数とアドレス・キューの数とを変化させることで達成される。
【００６７】
以上の発明の詳細な説明は、あらゆる点で説明及び例示のためのものであって、制限的なものではないと理解される。また、ここで開示した発明の範囲は、発明の詳細な説明から決定されるものではなく、特許法上許される最大の範囲にしたがって解釈される特許請求の範囲から定められるものである。ここに示され説明される実施形態は、本発明の原理を説明するためのみのものであり、本発明の範囲と精神から逸脱することなく、当業者は種々の変更を行うことができることが理解される。本発明の範囲と精神から逸脱することなく、当業者は、種々の他の特徴の組み合わせを実施することができよう。
【図１】
0005477465.tif 000002
【図２】
0005477465.tif 000003
【図３】
0005477465.tif 000004
【図４】
0005477465.tif 000005
【図５】
0005477465.tif 000006
【図６】
0005477465.tif 000007
【図７】
0005477465.tif 000008
【図８】
0005477465.tif 000009
【図９】
0005477465.tif 000010