(57)【要約】プログラマブルロジックデバイス（ＰＬＤ）は、中央処理装置（ＣＰＵ）と、ＣＰＵに結合されるプログラマブルインターフェイスとを含み、プログラマブルインターフェイスは、ユーザによって指定されるコアを含む。プログラマブルインターフェイスコアによって、オンチップとオフチップとの両方のデバイスがＣＰＵと通信することが可能になる。一実施例では、プログラマブルインターフェイスコアは、複数のデバイスおよびＣＰＵを結合するためのクロスポイントスイッチを含む。ＰＬＤの再プログラマビリティは、ユーザのニーズおよび／または関連の設計に基づいてパラメータ表示され得る機能を提供することにおいてかなりの柔軟性を提供する。具体的には、これらのパラメータ表示される機能は、ＰＬＤ上のプログラマブルリソース内で実現され得、これらの機能がいつでも修正されることが可能となる。さらに、実際にプログラマブルインターフェイスコアのために必要とされるリソースのみが実現される必要があり、したがって、ユーザがＰＬＤの残りの部分の用途を最適化することが可能となる。最後に、プロセッサローカルバスの機能は、効率的に制約され得、したがって、ＰＬＤがＡＳＩＣの性能レベルに近づくことができる。
2004529581.tif 000002
【特許請求の範囲】
【請求項１】
組込用マイクロプロセッサを有するプログラマブルロジックデバイスを含むシステムであって、前記プログラマブルロジックデバイスは、
前記マイクロプロセッサに結合されるプログラマブルインターフェイスを含み、前記プログラマブルインターフェイスは、ユーザによって指定されるコアを含み、前記プログラマブルロジックデバイスはさらに、
前記プログラマブルインターフェイスを介して情報を前記マイクロプロセッサへ提供すること、および前記プログラマブルインターフェイスを介して情報を前記マイクロプロセッサから受取ることのうちの一方のための第１のデバイスを含む、システム。
【請求項２】
複数のデバイスをさらに含み、各デバイスは、前記プログラマブルインターフェイスを介して情報を前記マイクロプロセッサに提供すること、前記プログラマブルインターフェイスを介して前記マイクロプロセッサから情報を受取ること、および前記プログラマブルインターフェイスを介して別のデバイスと通信することのうちの１つのためにある、請求項１に記載のシステム。
【請求項３】
前記プログラマブルインターフェイスは、前記複数のデバイスを結合するためのクロスポイントスイッチを含む、請求項２に記載のシステム。
【請求項４】
前記クロスポイントスイッチは、アドレス／制御経路およびデータ経路を含む、請求項３に記載のシステム。
【請求項５】
前記アドレス／制御経路は、第１のプログラマブルリソースセットから形成され、前記データ経路は、第２のプログラマブルリソースセットから形成される、請求項４に記載のシステム。
【請求項６】
前記第１のプログラマブルリソースセットおよび前記第２のプログラマブルリソースセットは、別個である、請求項５に記載のシステム。
【請求項７】
前記第１のプログラマブルリソースセットおよび前記第２のプログラマブルリソースセットは、前記プログラマブルロジックデバイス上でオーバーラップする、請求項５に記載のシステム。
【請求項８】
前記アドレス／制御経路は、トリミング可能である、請求項４に記載のシステム。
【請求項９】
前記データ経路は、トリミング可能である、請求項４に記載のシステム。
【請求項１０】
前記クロスポイントスイッチは、パラメータ表示可能である、請求項３に記載のシステム。
【請求項１１】
前記プログラマブルインターフェイスに結合される周辺バスをさらに含む、請求項２に記載のシステム。
【請求項１２】
ブリッジモジュールが、前記周辺バスを前記プログラマブルインターフェイスに結合する、請求項１１に記載のシステム。
【請求項１３】
前記複数のデバイスからの第１のデバイスグループが、前記周辺バスに結合され、前記ブリッジモジュールを介して前記プログラマブルインターフェイスに結合される、請求項１２に記載のシステム。
【請求項１４】
前記複数のデバイスからの第２のデバイスグループは、前記ブリッジモジュールを介して前記プログラマブルインターフェイスに接続されない、請求項１３に記載のシステム。
【請求項１５】
前記第１のデバイスグループは、ユーザによって指定される複数のコアを含む、請求項１３に記載のシステム。
【請求項１６】
少なくとも１つのコアがマスタ／スレーブ機能を提供する、請求項１５に記載のシステム。
【請求項１７】
少なくとも１つのコアがマスタ機能を提供する、請求項１５に記載のシステム。
【請求項１８】
少なくとも１つのコアがスレーブ機能を提供する、請求項１５に記載のシステム。
【請求項１９】
少なくとも１つのメモリデバイスをさらに含み、前記少なくとも１つのメモリデバイスは、前記第２のデバイスグループの一部である、請求項１４に記載のシステム。
【請求項２０】
前記少なくとも１つのメモリデバイスは、前記プログラマブルロジックデバイス上に提供される、請求項１９に記載のシステム。
【請求項２１】
集積回路をさらに含み、前記集積回路は、前記第２のデバイスグループの一部である、請求項１４に記載のシステム。
【請求項２２】
前記集積回路は、ダブルデータレートデバイスを含む、請求項２１に記載のシステム。
【請求項２３】
前記集積回路は、メモリデバイスを含む、請求項２１に記載のシステム。
【請求項２４】
前記プログラマブルインターフェイスおよび前記周辺バスに結合される高速バスインターフェイスをさらに含み、前記高速バスインターフェイスは、オフチップデバイスに対して通信を提供する、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、プログラマブルロジックデバイスに関し、具体的には、インターフェイスコアおよび中央処理装置を含むプログラマブルロジックデバイスに関する。
【背景技術】
【０００２】
関連技術の説明
マイクロプロセッサは、コンピュータを制御する周知の集積回路である。マイクロプロセッサがコンピュータを制御する様態によって、コンピュータの速度およびパワーが決定される。コンピュータを制御するために、マイクロプロセッサは、無数の命令を処理し、その各々が、マイクロプロセッサに対してある特定の動作を実行するように伝える。典型的なマイクロプロセッサは、所望の演算および論理機能を実行する中央処理装置（ＣＰＵ）およびＣＰＵが入力を受取ってこれらの機能を実行し、および／または、その結果をコンピュータの構成要素の残りの部分と通信することを可能にする入力／出力ユニットを含む。
【０００３】
図１は、ＣＰＵ１０１および２つの拡張バス１０２および１０３を含む公知のマイクロプロセッサ１００を例示する。拡張バスによって、ＣＰＵ１０１が他のデバイスと通信することが可能となり、マイクロプロセッサの動作が拡張される。プロセッサローカルバス（ＰＬＢ）とも称される拡張バス１０２は、ＣＰＵ１０１を高速デバイス１０４に接続する。これらの高速デバイス１０４は、メモリおよび高性能の周辺装置を含み得る。ＰＬＢ１０２を制御してそれ自体の転送を扱うデバイスが、「マスタ」と呼ばれ、マスタからコマンドを受取ってデータを送るデバイスが、「スレーブ」と呼ばれる。
【０００４】
オンチップ周辺バス（ＯＰＢ）とも称される拡張バス１０３が、低速デバイス１０５へのアクセスをＣＰＵ１０１に提供する。これらの低速デバイス１０５は、ＵＡＲＴおよびイーサネット（Ｒ）接続を含み得る。なお、低速デバイス１０５は、高速デバイス１０４のように、マスタとスレーブとの両方を含み得る。しかしながら、これらの低速デバイス１０５がＣＰＵ１０１の性能に影響を及ぼすことを防ぐために、ＯＰＢ１０３は、ＣＰＵ１０１に直接接続されない。代わりに、ＯＰＢ１０３は、ＯＰＢブリッジ１０６を介してＰＬＢ１０２に結合される。低速デバイスにメインバス上の貴重な帯域幅を消費させないように、大部分のシステムで、バスのセグメンテーションが行なわれることが検討されることが注目されるべきである。しかしながら、メインバスにほとんど影響を及ぼさずに、より高速の周辺装置の有利な動作を可能にする、メインバスと並列なバスとして、セグメンテーション部を扱うことが、多くの場合に有利である。ＯＰＢブリッジ１０６は、データを１つのバスから別のものへと移動させるように設計されるシステムビルディングブロックである。ＯＰＢブリッジ１０６は、自動的にデータフォーマットおよびプロトコルを変換し得、ＯＰＢ１０３とＰＬＢ１０２との間の情報転送を容易にする。
【０００５】
特定用途向け集積回路（ＡＳＩＣ）も、集積回路技術において周知である。ＡＳＩＣは、予め定められたアプリケーション用に設計されるチップである。ＡＳＩＣを構築するために、複数の基本的な回路セルが相互接続される。通例、これらの回路セルは、ＡＳＩＣのメーカによって提供されるライブラリ内で見つけられる。現在、いくつかのメーカは、ＡＳＩＣ上での集積のためのマイクロプロセッサセルを提供している。これらの種類のマイクロプロセッサは、「組込用(embedded)」マイクロプロセッサと呼ばれる。
【０００６】
プログラマブルロジックデバイス（ＰＬＤ）も、集積回路技術において周知である。ＰＬＤは、論理設計を実現するフィールドでユーザによってプログラムされ得る。１つの種類のＰＬＤは、書替え可能ゲートアレイ（ＦＰＧＡ）である。通例のアーキテクチャでは、ＦＰＧＡは、プログラマブル入力／出力ブロック（ＩＯＢ）によって囲まれるコンフィギャラブルロジックブロック（ＣＬＢ）のアレイを含む。ＩＯＢは、パッケージピンとＣＬＢとの間でインターフェイスを提供し、ＣＬＢは、ＦＰＧＡ上でロジックを構成するための機能的要素を提供する。ＣＬＢおよびＩＯＢは、プログラマブルルーティングリソースの階層によって相互接続される。これらのＣＬＢ、ＩＯＢ、およびプログラマブルルーティングリソースは、コンフィギュレーションビットストリームをＦＰＧＡにロードすることによって、カスタマイズされる。このコンフィギュレーションビットストリームは、ソフトウェアツールを用いて生成される。
【０００７】
図２は、ザイリンクス社（Xilinx, Inc.）が販売するバーテックス（Virtex）（商標）ＦＰＧＡ内のＣＬＢ２００を示す簡素化されたブロック図を例示する。ＣＬＢ２００は、２つの「スライス」２０１Ａおよび２０１Ｂを含む。各スライス２０１は、プログラマブルインターコネクトから第１の複数の入力信号Ｇ１−Ｇ４を受けるための第１のＬＵＴ２０２と、同様にプログラマブルインターコネクトから第２の複数の入力信号Ｆ１−Ｆ４を受けるための第２のＬＵＴ２０３とを含む。各スライス２０１は、ＬＵＴ２０２からの出力信号Ｙを（そのＤ端子上で）受け、さらには信号ＹＱを（そのＱ端子上で）出力するためのフリップフロップ２０４をさらに含む。同様の様態で、各スライス２０１は、ＬＵＴ２０３からの出力信号Ｘを（そのＤ端子上で）受け、さらには信号ＸＱを（そのＱ端子上で）出力するためのフリップフロップ２０５をさらに含む。バーテックス（商標）ＦＰＧＡについてのこれ以外の詳細は、ザイリンクス社によって出版される「プログラマブルロジックデータブック２０００」（“The Programmable Logic Data Book 2000”）の第３−７頁から第３−１７頁、および第３−７６頁から第３−８７頁上に開示される。
【０００８】
バーテックスＦＰＧＡのようないくつかのＦＰＧＡは、「コア」と呼ばれる予め設計された機能を備えたブロックを組込むようにプログラムされ得る。一実施例では、コアは、１つ以上の機能を実行するようにＦＰＧＡをプログラムする予め定められたコンフィギュレーションビットセットを含み得る。別の実施例では、コアは、設計の接続性および論理を示す回路図(schematics)またはソースコードを含み得る。典型的なコアは、デジタル信号処理（ＤＳＰ）機能、メモリ、記憶素子、および数学的機能を提供し得るが、これらに限定されているわけではない。コアには、特定のＦＰＧＡのための、最適に構成されたレイアウトが提供され得る。コアはさらに、パラメータ表示可能であり得、つまり、ユーザがパラメータを入力して特定のコア機能を活性化または変更することを可能にする。
【０００９】
図３は、ＦＰＧＡ内で１つ以上のコアを用いるための１つのＩＰプロセスレイアウト３００を例示する。ここで、ＩＰとは、ＦＰＧＡのための論理設計等の一般的な知的財産を指す。この発明の譲受人または他によって開発された、ユーザおよびコアによって提供される両方の論理設計が、ＩＰとみなされる。レイアウト３００では、システムレベルツール３０１によって活性化されるコアジェネレータ３０４が、サードパーティが提供する１つ以上のプラグインコア３０２を受取り得る。代替的には、コアジェネレータ３０４は、ライブラリセット３０３内で提供されるコアを用い得、これらのライブラリ３０３は、コアジェネレータ３０４の一部を形成する。一旦コアが選択されると、それは、ＦＰＧＡソフトウェアツール３０６に提供され得る。例示的なＦＰＧＡソフトウェアは、アライアンス（Alliance）（商標）、ファンデーション（Foundation）（商標）、またはファンデーションＩＳＥ（商標）ソフトウェアを含み得、すべてが、この発明の譲受人によってライセンス供与されている。このソフトウェアは、ユーザが提供するトップレベル設計３０５を受取ることもできる。このトップレベル設計は、コアに加えてＦＰＧＡ上で実現される論理設計を示す。一実施例では、ＦＰＧＡソフトウェアツール３０６は、ＶＨＤＬ、Ｖｅｒｉｌｏｇ、または標準の概略的な形で、トップレベル設計３０５を受取り得る。ＦＰＧＡソフトウェアツール３０６は、ＦＰＧＡ３０７をプログラムするコンフィギュレーションビットストリームを生成して、コアおよびトップレベル設計によって指定される機能を提供する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
技術の向上が実現されるにつれて、ＦＰＧＡは、以前はＡＳＩＣ専用であったアプリケーションへとますます移行しつつある。しかしながら、物理的なリソースは、ＡＳＩＣ上よりもＦＰＧＡ上においてより制約される。したがって、ＦＰＧＡ上でマイクロプロセッサ構成要素を提供することは、特別な配慮を必要とする重要な作業となる。
【課題を解決するための手段】
【００１１】
発明の概要
この発明に従うと、プログラマブルロジックデバイス（ＰＬＤ）は、中央処理装置（ＣＰＵ）およびＣＰＵに結合されるプログラマブルインターフェイスを含み、プログラマブルインターフェイスは、ユーザによって指定されるコアにより作成される。通例、ＰＬＤは、複数のデバイスをさらに含み、各デバイスは、プログラマブルインターフェイスを介してＣＰＵに情報を提供するか、プログラマブルインターフェイスを介してＣＰＵから情報を受取るか、またはプログラマブルインターフェイスを介して別のデバイスと通信するかのいずれかである。
【００１２】
一実施例では、プログラマブルインターフェイスは、複数のデバイスを結合するためのクロスポイントスイッチを含む。クロスポイントスイッチは、アドレス／制御経路とデータ経路との両方を含む。アドレス／制御経路は、ＰＬＤ上の第１のプログラマブルリソースセットから形成され得、データ経路は、ＰＬＤ上の第２のプログラマブルリソースセットから形成され得る。第１および第２のプログラマブルリソースセットは、別々であり得るか、またはＰＬＤ上でオーバーラップし得る。
【００１３】
一実施例では、ＰＬＤは、プログラマブルインターフェイスに結合されるオンチップ周辺バス（ＯＰＢ）をさらに含む。ブリッジモジュールが、ＯＰＢをプログラマブルインターフェイスに結合する。マスタとスレーブとの両方を含む、ＰＬＤ上の第１のデバイスグループが、ＯＰＢに結合され得る。したがって、この第１のマスタおよびスレーブグループは、ブリッジモジュールを用いてプログラマブルインターフェイスと通信し得る。第１のマスタおよびスレーブグループは、低速デバイスとして通例特徴づけられる周辺デバイスを含み得る。一実施例では、これらのマスタおよびスレーブのうちの少なくとも１つが、コアを用いるＰＬＤ上で作成される。別の実施例では、これらのマスタおよびスレーブのうちの少なくとも１つが、チップ外に置かれる。さらに別の実施例では、コアを用いて、マスタ機能とスレーブ機能との両方を有するデバイス（第１のグループのうちの１つ）が作成され得る。第１のデバイスグループは、ＰＬＤ上またはチップ外に存在し得る。
【００１４】
同様にマスタおよびスレーブを含む、ＰＬＤ上の第２のデバイスグループは、プログラマブルインターフェイスに結合され得る。第２のデバイスグループは、メモリデバイスまたはダブルデータレートデバイス等の高速デバイスを含み得る。第２のデバイスグループは、ＰＬＤ上またはチップ外に存在し得る。一実施例では、第２のデバイスグループ内のマスタのうちの１つは、プログラマブルインターフェイスおよびＯＰＢに結合される高速バスインターフェイスを含み、高速バスインターフェイスは、チップ外のデバイスに通信を提供する。この発明のＰＬＤは、他の構成要素を含むシステムに容易に組込まれ得、プログラマブルインターフェイスおよび高速バスインターフェイスは、有利なことには、これらの構成要素に対して、ＣＰＵ関連の機能への効率的なアクセスを提供する。
【００１５】
この発明の一実施例では、プログラマブルインターフェイスは、クロスポイントスイッチを含む。アドレス／制御論理では、クロスポイントスイッチは、アドレスをマスタから受取るための複数のアドレスデコーダと、デコードされたアドレスをアドレスデコーダから受取り、さらにはマスタとスレーブとの間でトランザクションをアービトレートするための複数のアクセスアービタとを含み得る。クロスポイントスイッチは、アドレスデコーダとアクセスアービタとの間で、十分な、またはそれ未満の接続性を提供し得る。
【００１６】
データ論理では、クロスポイントスイッチは、マスタから書込データを受取るための複数の書込マルチプレクサを含み得、各書込マルチプレクサは、書込データを１つのスレーブに対して選択的に提供し、クロスポイントスイッチは、スレーブから読出データを受取るための複数の読出マルチプレクサを含み得、各読出マルチプレクサは、読出データを１つのマスタに選択的に提供する。書込マルチプレクサおよび読出マルチプレクサは、複数のアクセスアービタによって制御され得る。クロスポイントスイッチは、各書込マルチプレクサと複数のマスタデバイスとの間で、十分な、またはそれ未満の接続性を提供し得る。クロスポイントスイッチはまた、各読出マルチプレクサと複数のスレーブデバイスとの間で、十分な、またはそれ未満の接続性を提供し得る。一実施例では、アドレス／制御および／またはデータ論理は、マスタとスレーブとの間のトランザクションをパイプライン化するためのレジスタをさらに含む。
【００１７】
この発明の別の実施例に従うと、組込用中央処理装置（ＣＰＵ）を有する書替え可能ゲートアレイ（ＦＰＧＡ）は、コアによって作られるハイブリッドスイッチを含み、ハイブリッドスイッチは、ＦＰＧＡ上で実現されるユーザ論理とＣＰＵとの間で通信を提供する。この実施例では、ＣＰＵは、マスタデバイスを含み、論理は、複数のスレーブデバイスおよび複数のマスタデバイスを含む。このハイブリッドスイッチは、クロスポイントおよび共有バス構成の両方を含んで、マスタデバイスとスレーブデバイスとの間に経路を提供する。
【００１８】
具体的には、ハイブリッドスイッチは、マスタからアドレスを受取るための複数のアドレスデコーダと、デコードされたアドレスをアドレスデコーダから受取り、さらにはマスタとスレーブとの間でトランザクションをアービトレートするための複数のアクセスアービタとを含み得る。少なくとも１つのアクセスアービタが、１つよりも多くのスレーブに対してアービトレーションを提供し、少なくとも１つのアクセスアービタが、１つのスレーブに対してのみアービトレーションを提供する。クロスポイントスイッチはまた、書込データをマスタから受取り、さらには書込データをスレーブに提供するための複数の書込マルチプレクサを含み得る。一実施例では、少なくとも１つの書込マルチプレクサが、その書込データを１つよりも多くのスレーブに提供し、少なくとも１つの書込マルチプレクサが、その書込データを１つのスレーブに対してのみ提供する。クロスポイントスイッチは、読出データをスレーブから受取り、さらには読出データをマスタに選択的に提供するための複数の読出マルチプレクサも含み得る。一実施例では、少なくとも１つの読出マルチプレクサが、その読出データを１つよりも多くのマスタに提供し、少なくとも１つの読出マルチプレクサが、その読出データを１つのマスタに対してのみ提供する。書込マルチプレクサおよび読出マルチプレクサは、複数のアクセスアービタによって制御され得る。ハイブリッドスイッチは、この発明のクロスポイントスイッチのように、マスタとスレーブとの間のトランザクションのためのパイプライン方式を含み得る。
【００１９】
この発明の一実施例に従うと、書替え可能ゲートアレイ（ＦＰＧＡ）は、複数のマスタデバイスを含み、組込用マイクロプロセッサは、少なくとも１つのこのようなマスタデバイスであり、書替え可能ゲートアレイ（ＦＰＧＡ）はさらに、複数のスレーブデバイス、および複数のマスタデバイスと複数のスレーブデバイスとの間で接続性を選択的に提供するための手段を含む。接続性を選択的に提供するための手段は、コアによって生成され得る。
【００２０】
アドレス／制御論理では、十分な接続性を選択的に提供するための手段は、マスタデバイスからのアドレスをデコードするための手段と、デコードされたアドレスに基づいて、複数のマスタデバイスと複数のスレーブデバイスとの間でトランザクションをアービトレートするための手段とを含み得る。一実施例では、接続性を選択的に提供するための手段は、デコードするための手段とアービトレートするための手段との間で、十分な接続性を提供し、他の実施例では、接続性を選択的に提供するための手段は、デコードするための手段とアービトレートするための手段との間で、十分には満たない接続性を提供する。
【００２１】
データ論理では、接続性を選択的に提供するための手段は、書込データを複数のマスタデバイスから受取り、さらには指定されるスレーブデバイスに書込データを選択的に提供するための手段と、読出データを複数のスレーブデバイスから受取り、さらには指定されるマスタデバイスに読出データを選択的に提供するための手段とを含み得る。一実施例では、書込データを受取るための手段と読出データを受取るための手段とは、アービトレートするための手段によって制御される。
【００２２】
接続性を選択的に提供するための手段は、書込データを受取るための手段と複数のマスタデバイスとの間で、十分な、またはそれ未満の接続性を提供し得る。加えて、接続性を選択的に提供するための手段は、読出データを受取るための手段と複数のスレーブデバイスとの間で、十分な、またはそれ未満の接続性を提供し得る。
【００２３】
有利なことには、この発明は、公知のＰＬＤソフトウェアツールに含まれ得る。一実施例では、システムレベルツールによって活性化されるコアジェネレータは、サードパーティによって提供される、この発明のプログラマブルインターフェイスコアを受取り得る。代替的には、コアジェネレータは、コアジェネレータの一部を形成するライブラリセット内で提供されるプログラマブルインターフェイスコアを用い得る。一旦プログラマブルインターフェイスコアが選択されると、それは、ＰＬＤソフトウェアツールに提供され得る。このソフトウェアは、ユーザが提供するトップレベル設計も受取り得る。このＰＬＤソフトウェアツールは、ＰＬＤをプログラムするコンフィギュレーションビットストリームを生成して、プログラマブルインターフェイスコアおよびトップレベル設計が指定する機能を提供する。
【００２４】
重要なことには、この発明のプログラマブルインターフェイスコアは、複数のコンプライアンスレベルを有し得る。たとえば、コアは、特定の機能だけがＰＬＤ上で提供されることを許容し得る。たとえば、一実施例では、プロセッサローカルバス（ＰＬＢ）機能のサブセットが許容される。既存のＩＰまたはパラメータ表示されないＩＰを含む実施例等の他の実施例では、この発明は、サブセットを、そのＩＰによって必要とされる機能に（または、そのＩＰに基づいた、予め定められたコンプライアンスレベルに）調整し得る。
【００２５】
この発明に従うと、プログラマブルロジックデバイス（ＰＬＤ）上の中央処理装置（ＣＰＵ）とユーザによって実現されるＰＬＤ上の論理との間でインターフェイスを提供するための方法が提供される。この方法は、論理が提供する複数のマスタデバイスと論理が提供する複数のスレーブデバイスとの間で接続性を選択的に提供するステップを含み、ＣＰＵは、少なくとも１つのマスタデバイスを含む。アドレス／制御論理中に接続性を選択的に提供するステップは、アドレスデコーダを用いてマスタデバイスからのアドレスをデコードし、さらにはアクセスアービタおよびデコードされたアドレスを用いて複数のスレーブデバイスと複数のマスタデバイスとの間でトランザクションをアービトレートするステップを含む。一実施例では、接続性を選択的に提供するステップは、アドレスデコーダとアクセスアービタとの間の十分な接続性を提供する。別の実施例では、接続性を選択的に提供するステップは、アドレスデコーダとアクセスアービタとの間の十分には満たない接続性を提供する。
【００２６】
この発明の方法では、データ論理内で接続性を選択的に提供するステップは、複数のマスタデバイスから書込データを受取り、さらには第１のマルチプレクサセットを用いて書込データを指定されるスレーブデバイスに選択的に提供するステップと、複数のスレーブデバイスから読出データを受取り、さらには第２のマルチプレクサセットを用いて読出データを指定されるマスタデバイスに選択的に提供するステップとを含む。接続性を選択的に提供するステップは、第１のマルチプレクサセットと複数のマスタデバイスとの間で、十分な、またはそれ未満の接続性を提供し得る。接続性を選択的に提供するステップは、第２のマルチプレクサセットと複数のスレーブデバイスとの間で、十分な、またはそれ未満の接続性も提供し得る。
【００２７】
この発明の方法では、接続性を選択的に提供するステップは、複数のマスタデバイスと複数のスレーブデバイスとの間でトランザクションをパイプライン化するステップを含む。有利なことには、このパイプライン化は、アドレス／制御論理およびデータ論理内で提供され得、したがって、両方において性能が向上する。
【００２８】
この発明に従うと、プログラマブルロジックデバイス（ＰＬＤ）上の中央処理装置（ＣＰＵ）とユーザによって実現されるＰＬＤ上の論理との間のインターフェイスを提供するための方法が与えられる。この方法は、ライブラリからコアを選択するステップを含み、コアは、論理が提供する複数のマスタデバイスと論理が提供する複数のスレーブデバイスとの間の接続性を選択的に提供し、ＣＰＵは、少なくとも１つのマスタデバイスを含む。この方法は、コア内で少なくとも１つのパラメータをセットするステップをさらに含み、したがって、接続性に影響を及ぼす。
【００２９】
別の実施例では、システムを構築するために必要とされる各コアからの情報内容が、データ分析のために、集中型機構に集められる。このデータは、コアをインスタンス生成する上で、またはパラメータ表示において、ユーザが代替的な選択を行なうことができるようにするために、ユーザにとって利用可能である。たとえば、コアのパラメータ表示における特定の選択によって、結果として、システム全体に関して異なる性能が得られ得る。
【発明の効果】
【００３０】
この発明は、ＡＳＩＣ環境での標準的な組込ＣＰＵと比較して、いくつかの重要な利点を提供する。第１に、この発明は、ユーザのニーズおよび／または関連の設計に基づいてパラメータ表示され得る機能の提供において、かなりの柔軟性を提供する。これらのパラメータ表示される機能は、ＰＬＤ上のプログラマブルリソース内で実現され得、これらの機能がいつでも修正されることが可能になる。第２に、これらのプログラマブルリソースのため、プログラマブルインターフェイス用に実際に必要とされるリソースのみが実現され得、ユーザがＰＬＤの残りの部分の使用を最適化することが可能となる。たとえば、アドレス／制御論理とデータ論理との両方が、「トリミング」され得る。言い換えると、ユーザの設計によって必要とされていない経路（および、それらの関連論理）が除去され得、信号速度を上昇させ、シリコン面積が縮小され得る。別の例では、追加的な領域が利用可能となるため、マスタまたはスレーブデバイスの数が増加し得る。第３に、この発明は、プロセッサローカルバスの機能を効率的に制限することができ、したがって、ＰＬＤがＡＳＩＣの性能レベルに近づくか、それどころか、それを超えることを可能にする。
【発明を実施するための最良の形態】
【００３１】
図の詳細な説明
以下の目次は、主題構成の概要を読者に伝えるために提供される。
【００３２】
目次
Ｉ．用語および規定
Ａ．定義
Ｂ．信号の名称および番号付け規定
Ｃ．タイミング規定
II．リソース区別の認識
III．制約的バス機能
Ａ．ＰＬＢサブセット機能
１．アービトレーション制御機能
２．データ転送機能
Ｂ．ＰＬＢスーパーセット機能
Ｃ．信号：ＰＬＢからＰＩＣへのマッピング
IV．ＦＰＧＡ実現例：概要
Ａ．中央処理装置
Ｂ．プログラマブルインターフェイスコア（ＰＩＣ）
Ｃ．マスタおよびスレーブデバイス
Ｄ．オンチップ周辺バス（ＯＰＢ）
Ｅ．高速バスインターフェイス
Ｖ．ＦＰＧＡ実現例：詳細
Ａ．マスタ／スレーブデバイス：ポートおよびタイミング
１．マスタデバイスとＰＩＣとの間の通信
ａ．マスタのためのアドレスポート
ｂ．マスタのための書込ポート
ｃ．マスタのための読出ポート
２．マスタデバイスのタイミング
３．スレーブデバイスとＰＩＣとの間の通信
ａ．スレーブのためのアドレスポート
ｂ．スレーブのための書込ポート
ｃ．スレーブのための読出ポート
４．スレーブデバイスのタイミング
Ｂ．プログラマブルインターフェイスコア
Ｃ．ＤＣＵ／ＩＣＵ：ＰＬＢに対するインターフェイス
Ｄ．ＢＲＡＭ：ＰＬＢに対するインターフェイス
Ｅ．ＯＰＢブリッジモジュール
１．ブリッジアウトモジュール
２．ブリッジインモジュール
Ｆ．ハイブリッドプログラマブルインターフェイスコア
Ｇ．ソフトウェアツール。
【００３３】
Ｉ．用語および規定
この発明は、当業者にとって馴染みのあり得る、または馴染みのない場合もある、特定の用語および規定を用いて説明される。したがって、以下の定義、信号および番号付け規定、およびタイミング規定は、読者がこの発明を理解するときの助けとなるように、さらに詳細に説明される。
【００３４】
Ａ．定義
この説明で用いられる頭文字、略記、および技術用語は、この段落の後で、アルファベット順に定義される。なお、いくつかの頭文字、略記、および技術用語は、詳細な説明で定義され得る。
【００３５】
ＢＥＡＲ：バスエラーアドレスレジスタ
ＢＥＳＲ：バスエラーシンドロームレジスタ
ＢＲＡＭ：プログラマブルロジックデバイス上で提供されるブロックランダムアクセスメモリ（ＲＡＭ）
バースト：１つよりも多くのデータ単位が転送されるトランザクションであり、通例、マスタとスレーブとの間で迅速にデータブロックを移動させるために用いられる
キャッシュ：命令および／またはデータを含む、最近アクセスされたデータ内容を記憶するためのＣＰＵ内部の小さく、かつ速いメモリ
コア：ある特定の機能を提供するための、予め設計されたプログラマブルロジックデバイス部分であって、この部分は、通例、プログラマブルロジックデバイス上の予め定められた量の物理的リソースを用いて実現される
ＣＰＵ：通例、制御ユニットおよび算術演算装置（ＡＬＵ）を含む中央処理装置
ＤＣＵ：データキャッシュユニット
ＤＤＲ：ダブルデータレート
ＨＳＢＩ：ＰＩＣ上の高速マスタポートを有するデバイスとして、ここで包括的に言及される高速バスインターフェイス
ＩＣＵ：命令キャッシュユニット
ＩＰ：集積回路、特に、ＦＰＧＡに組込むための設計
リトルエンディアン：１６ビットまたは３２ビットワードを仮定した場合、より低いアドレスでのバイトがより低い有効性を有するアーキテクチャ
ＩＳＡ：命令セットアーキテクチャ
ＯＰＢ：オンチップ周辺バス
ＰＩＣ：この発明に従って、ＣＰＵとプログラマブルロジックデバイスリソースとの間に提供されるプログラマブルインターフェイスコア
パイプライン方式：第１のバスサイクルが完了する前に、マスタデバイスが第２のバスサイクルを実行し始め得るプロセス、つまり、いくつかのバスサイクルを、各々、異なるステージで同時に処理すること
ＰＬＢ：プロセッサローカルバス
パワーＰＣ：ＩＢＭ、モトローラ、およびアップルコンピュータによって共同で設計された規格を満たすＲＩＳＣマイクロプロセッサであって、規格は、共通の命令セットアーキテクチャ（ＩＳＡ）を特定する
レジスタ：ＦＰＧＡ上で提供される高速記憶領域
ＳＤＲＡＭ：従来のメモリよりも高いクロック速度で動作することができ、さらにはそれ自体をいくつかのＣＰＵのバスと同期させることのできる同期ダイナミックランダムアクセスメモリ（ＤＲＡＭ）
シングルデータビート：非バースト転送、つまり、バスにおけるシングルクロックサイクル内のシングルデータ
ワード：３２ビットのデータ量を示す。
【００３６】
Ｂ．信号の名称および番号付け規定
この発明の特徴を説明するために、さまざまな信号が参照される。ここで用いられる規定に従うと、図６および図８の信号名は、信号の流れの方向、どのデバイスがその信号を送っているのか、どのデバイスがその信号を受取るのかを表す接頭部で始まる。他の図の信号名は、送信を行なうデバイスのみを表す接頭部で開始し得る。デバイス名は、参照しやすくするために、略されている。接頭部の後に下線（＿）が続き、次に、信号自体の名前が続く。接尾部「＿ｎ」は、アクティブロー信号を表す。たとえば、信号名ＰＩＣ２Ｍ＿ｆｏｏは、プログラマブルインターフェイスコア（ＰＩＣ）によって駆動され、かつマスタデバイスによって受取られる信号“ｆｏｏ”を示す。
【００３７】
Ｎビットバスビットは、右側の０から左側のＮ−１にまで番号が付けられる。なお、この番号付け規定は、さまざまなプロプラエタリＣＰＵとの互換性の問題にかかわらず、ＰＩＣ  ＩＳＡを変更せず、またはＣＰＵソフトウェア互換性に影響を及ぼさない。
【００３８】
Ｃ．タイミング規定
高性能を達成するために、タイミングが考慮されるべきである。当業者に知られているように、タイミングは、多くの場合、ある特定の設計実現例に特有である。したがって、例示的なタイミング参照を含むことは、この発明のパイプライン方式をここでサポートするが、すべての設計のためのタイミングをカバーすることは意図されない。
【００３９】
タイミング情報に関して、用語「早い」、「中位」、および「遅い」が用いられ得る。ここで用いられる規定では、早いタイミングが最善であり、遅いタイミングが最も望ましくない。
【００４０】
入力信号が早いタイミングを有する場合、ユーザは、データを、それをラッチする前に処理するためにフルクロックサイクルを有する。早い入力信号タイミングは、信号がレジスタ出力部から駆動されることを暗示する。出力信号が早いタイミングを有する場合、ユーザは、データを送り出す前に、フルクロックサイクルを用い得る。早い出力信号タイミングは、信号がレジスタの入力を駆動することを暗示する。
【００４１】
入力信号が中位のタイミングを有する場合、ユーザは、データを、それをラッチする前に処理するために、約半分のクロックサイクルを有する。中位の入力信号タイミングは、信号が、少量の論理またはユーザへのルーティングを通して、レジスタ出力部から駆動されることを暗示する。出力信号が中位のタイミングを有する場合、ユーザは、データを送り出す前に約半分のクロックサイクルを用い得る。中位の出力信号タイミングは、信号が、レジスタの入力部に到達する前に、少量の論理またはルーティングを駆動することを暗示する。
【００４２】
入力信号が遅いタイミングを有する場合、ユーザは、データを、それをラッチする前に処理するために、クロックサイクルのごく一部を有する。遅い入力信号タイミングは、信号が、多量の論理およびルーティングを通してレジスタ出力部から駆動されることを暗示する。したがって、ユーザは、データを、それを用いる前にラッチするための小さなウィンドウを有する。出力信号が遅いタイミングを有する場合、ユーザは、データを送り出す前に、クロックサイクルのごく一部を用い得る。遅い出力信号タイミングは、信号が、多量の論理またはルーティングを通してレジスタ入力部を駆動することを暗示する。したがって、ユーザは、レジスタから直接この出力を駆動すべきである。
【００４３】
上記の点を考慮すると、特定の実現例が、各信号が提供する手段を説明し得る。いくつかの信号は、より多くの時間を必要とし（たとえば、遅い信号）、これは、システムの動作時の周波数に悪影響を及ぼし得る。これらの問題点に対処するために、パイプライン方式が実現されて、信号のタイミングを緩和し得る。これらのパイプラインレジスタは、たとえレイテンシがあったとしても、クロック周期内のより早い部分に信号を再同期させる機会を提供する。
【００４４】
II．リソース区別の認識
ＡＳＩＣ内ではなく、プログラマブルロジックデバイス（たとえば、ＦＰＧＡ）内に中央処理装置（ＣＰＵ）を組込むためには、これらの２種類のデバイスの区別が理解され、対処されなければならない。
【００４５】
性能に影響を及ぼし得る、ＦＰＧＡとＡＳＩＣとの間の１つの重要な違いは、論理リソースである。具体的には、上述のように、ＦＰＧＡ内の論理ジェネレータは、通例、ＣＬＢ内のルックアップテーブルを用いて構築される。したがって、高いファンインまたは複雑な組合せの論理機能が、一般に、いくつかのルックアップテーブルレベルを必要とし、したがって、かなりの遅延が作られる。対照的に、ＡＳＩＣは、特定の論理機能を実行するために設計されるカスタム構造を提供し得、したがって、多数の論理レベルを除去する。
【００４６】
性能に影響を及ぼし得る、ＦＰＧＡとＡＳＩＣとの間の別の重要な違いは、ルーティングリソースである。具体的には、ＦＰＧＡは、プログラマブルおよび専用の（たとえば、キャリーチェーンロジック）ルーティングチャネル両方の上で信号をルーティングする。対照的に、ＡＳＩＣは、カスタマイズされた信号経路を提供し、したがって、プログラマビリティのオーバーヘッドを解消する。したがって、ＡＳＩＣ相応の速度に近づくために、ＦＰＧＡは、通例ＦＰＧＡ上で提供されるよりも厚いトレースおよびより大きなバッファを含む必要があり得る。これらのルーティングリソースのアップサイジングは、ＦＰＧＡのシリコン領域の増大を必要とし得、したがって、その製造コストを望ましくないほど上昇させる。
【００４７】
上述の区別に関して、ＣＰＵとインターフェイスをとるＦＰＧＡリソースは、高速設計で性能と帯域幅との両方を達成することを著しく妨害し得る。しかしながら、この発明に従うと、さらには以下で詳細に説明されるように、ＦＰＧＡファブリックを有利に活用して、ＣＰＵを含む、向上されたトランザクションと標準のトランザクションとの両方が提供され得る。結果として得られるシステムは、現在のＡＳＩＣシステムに近づくことができ、さらにはそれを超えることさえもできる。なぜならば、システムは、この問題に対処するために、ＩＣ技術ではなくアーキテクチャを用いるためである。
【００４８】
III．制約的ＰＬＢ機能
通例のＣＰＵは、ＰＬＢプロトコルセットとともに動作して、他のデバイスと通信する。ＦＰＧＡ上で完全なＰＬＢプロトコルセットを提供することは、かなりの論理を必要とし得、したがって、性能と面積との両方に悪影響を及ぼす。したがって、この発明の１つの特徴に従うと、ＦＰＧＡ性能に大きな影響を及ぼすことなく、標準のＰＬＢプロトコルのうちのいくつかが、有利に除去され得る。
【００４９】
総括では、この発明は、複雑なデータ経路操作を必要とするＰＬＢプロトコルを解消する。複雑なデータ経路操作は、広いバスおよび長距離に広がる多量の論理を用いる。したがって、ＦＰＧＡ内での複雑なデータ経路操作は、ＩＰユーザに対して制約のある機能だけを追加しながら、かなりのリソースを独占し得る。
【００５０】
この発明は、非同期ハンドシェーキングを必要とするＰＬＢプロトコルも解消する。非同期ハンドシェーキングでは、信号は、通例、長い距離（つまり、マスタからスレーブまで、さらにはマスタに戻るまでの経路）を伝わり、有効な論理を通り、これらのすべては、単一のクロックサイクル内にある。したがって、非同期ハンドシェーキングは、複雑なデータ経路操作のように、このタイミング目標を達成するために、かなりのリソースを独占しなければならない。
【００５１】
さまざまな標準ＰＬＢプロトコルをサポートしないことによって、いくつかの利点が実現され得る。第１に、この発明は、データ論理内のクリティカルパスをかなり簡素化することができる。データ経路論理を簡素化することは、重要である。なぜならば、これらの広いバスは、ＦＰＧＡにおいて長距離に及ぶためである。言換えると、データ経路内の論理を減じることによって、有利なことには、信号速度が上がる。第２に、この発明は、制御論理内のクリティカルパスをかなり簡素化することができ、したがって、信号速度をさらに上げる。第３に、これらのＰＬＢプロトコルを除去することによって、トランザクションがより確定的となり得る。たとえば、マスタが所与のトランザクションに対してスレーブからより小さなセットの応答を予測できる場合、論理は、通例、簡素化され得る。明らかに、マスタまたはスレーブが有し得る応答またはアクションの種類が多ければ多いほど、論理は、これらの応答またはアクションに対応するために、より複雑にならなければならない。
【００５２】
なお、ＰＬＢプロトコルの除去は、ＣＰＵとともに実行され得るＰＬＢ機能の数に直接的な影響を及ぼす。しかしながら、以下で詳細に説明されるように、この発明は、この問題に対処する。
【００５３】
Ａ．ＰＬＢサブセット機能
この発明に従うと、ＦＰＧＡ内で実現されるＰＬＢ機能のサブセットは、ＣＰＵが通例実行するトランザクションの種類に焦点を置き、このクリティカルコンポーネントの性能を最適化する。具体的には、ＰＬＢ上の大部分のデータ転送は、デバイス‐メモリ間、またはメモリーデバイス間であり、デバイス間では行われない。したがって、メモリ性能は、ＰＬＢにおいて貴重である。重要なことには、大部分のＦＰＧＡユーザメモリインターフェイスが、ＣＰＵのそれらと同様のトランザクションを実行する。したがって、ＰＬＢ機能のサブセットは、ＦＰＧＡ上で起こる可能性が最も高いさまざまな種類のトランザクションを有利にサポートし得る。さまざまなＰＬＢ機能をＦＰＧＡに組込むことに関する分析が、以下に提供される。
【００５４】
１．アービトレーション制御機能
アドレスデコード機能：標準的なＰＬＢ内のスレーブ内でアドレスデコードを実現することは、現在、共有バスを用いて行われている。共有バスでは、マスタが要求するアドレスが、バス上のすべてのスレーブに提供される。スレーブは、アドレスをデコードし、選択されたスレーブは、次に、アドレス肯定応答をルーティングして、要求をしているマスタに戻す。残念ながら、このプロセスによって、かなりの遅延が起こる。したがって、この発明に従うと、アドレスデコーディングは、（図５Ａ−図５Ｅで説明される）プログラマブルインターフェイスコア（ＰＩＣ）内で分散されて実行される。このコアのトランザクションフォワードの性質のために、スレーブには、トランザクションがそれに対して呈示される場合、アドレスヒットが保証される。この様態で、この発明は、現在スレーブ内で提供されるアドレスデコード論理を大きく減じ、より容易なスレーブの開発および構築が促進される。なお、ハイブリッドシステムでは、多数のスレーブがバスを共有する場合、追加的なアドレスデコーダがスレーブ内に提供され得る。このハイブリッドシステムでは、バスを共有するスレーブの数は、比較的小さく、したがって、アドレスデコード論理が簡素化される。
【００５５】
バスエラー（アドレスまたはデータエラー）機能：バスエラー機能は、この発明のＰＩＣコアと標準のＰＬＢとの両方によってサポートされる。
【００５６】
アボート機能：アボート機能をサポートすることは、トランザクションフォワードシステム内では困難である。なぜならば、トランザクションは、アボート信号がアサートされる機会を持つ前に、スレーブに渡され得るためである。なお、標準のＰＬＢでは、トランザクションは、スレーブが要求を肯定応答した後は、アボートされ得ない。さらに、アボートをＰＩＣコアへと渡すためには、追加的な論理が必要とされ得、システムのタイミングにマイナスの影響を与える。したがって、この発明では、一般的なルールとして、マスタは、アボート信号を生成しない。
【００５７】
マスタがアボート信号を生成する場合、マスタは、インターフェイスモジュールを用い得、これは、要求を迅速に認識し、要求を肯定応答し、さらには要求を直接関連のスレーブに送る。このインターフェイスモジュールは、ＰＩＣに対するポートとマスタとの間の経路内に置かれる。したがって、マスタはアボート信号を生成しないという一般的なルールは、維持される。
【００５８】
なお、パイプライン化されたシステム内でアボート信号をサポートすることによって、結果として、ユーザのコードが分岐する、または割込む場合に性能の向上がいくらか得られ得る。具体的には、アボートがサポートされ、マスタが、アボートをアサートする時間を許容されている場合、不必要なトランザクションは、早くに中止され得、データ論理の使用が有利に減じられる。分岐する、または割込むコードは、現在マスタが要求する情報の必要性をなくす。データは必要とされていないことを発見した後に、マスタがトランザクションをアボートできる場合、性能が向上する。しかしながら、この利点は、システムの残りの部分のより低いクロック周波数および複雑性によって相殺され得る。
【００５９】
優先されるアービトレーション機能：動的プライオリティに基づいてマスタ間でアービトレートするための組合せ論理を構築することによって、ＦＰＧＡ内の性能を著しく落とすおそれのある多くの論理レベルが必要とされ得る。したがって、この発明の一実施例では、ラウンドロビンまたは固定プライオリティアービトレーションが提供される。他の実施例では、ユーザが選択するアービトレーションが提供され得る。
【００６０】
再試行機能：（時として、再アービトレート機能とも呼ばれる）再試行機能が、通例、複数のマスタ間のデッドロックを防止するために、共有バスアーキテクチャ内で必要とされる。しかしながら、この発明のＰＩＣコアに従うと、多数のトランザクションが並列に進行し得、再試行の必要性を著しく減じるか、または単に減じる。なお、トランザクションフォワードシステム内で再試行機能を実現することによって、スレーブからマスタへと信号を渡すことが必要とされ得、アービタ内の論理の複雑性が望ましくないほど増す。
【００６１】
なお、再試行機能は、共有バスを用いるハイブリッドシステム内で提供され得る。ハイブリッドシステムでは、アクセスアービタが修正されて再試行機能が活性化され得、再試行信号がマスタに戻される必要がなくなる。
【００６２】
バスロック機能：バスロック機能によって、ある特定のスレーブが１つのマスタによってのみアクセス可能であることが保証される。しかしながら、バスロック機能は、クリティカルタイミングパス内にある、ＰＩＣコア内のアービトレーション論理に影響を及ぼし得る。したがって、バスロック機能がイネーブルされ得るが、おそらくは、いくらかの性能損失を伴う。
【００６３】
アドレスパイプライン機能：アドレスパイプライン機能が、標準のＰＬＢと、この発明のＰＩＣコアとの両方においてサポートされる。パイプライン方式は、多数のトランザクションが並列に進行することを可能にすることによって、システム性能を著しく向上させ得る。なお、コード分岐は、パイプライン方式の利点を衰えさせ得る。
【００６４】
転送タイプ機能：標準のＰＬＢ内の転送タイプ機能は、たとえば、ダイレクトメモリアクセス（ＤＭＡ）およびフライバイ(fly-by)を含み得る。一般に、各転送タイプは、異なるプロトコルの組合せを必要とする。したがって、複数の転送タイプを提供することによって、かなりの複雑性がＦＰＧＡシステムに追加され得る。この発明に従うと、転送は、基本的なメモリ転送に限定されており、したがって、ＦＰＧＡの複雑性および論理が簡素化される。
【００６５】
２．データ転送機能
シングルデータビート転送機能：シングルデータビート転送機能、つまり、単一データ単位転送は、ＣＰＵの基本的な動作であり、したがって、この発明によってサポートされる。なお、この転送機能は、書込動作または読出動作のいずれかであり得、いずれかのバイトイネーブルパターンを含み得る。各トランザクションは、データにおいて最大バス幅のサイズを転送するのみである。なお、この機能は、バーストとは異なる。
【００６６】
不確定な長さのバースト機能：この発明によって提供されるように、パイプライン化されたアドレスおよびデータ経路内で不確定な長さのバースト機能を提供することによって、重大な性能問題がもたらされる。たとえば、マスタは、バーストの終りを、要求されるスレーブに伝達するために、１つ以上のサイクルを必要とし得る。しかしながら、その間、スレーブは、あまりに多すぎるデータを送るおそれがある。さらに、アドレスデコーディング論理は、不確定な長さのバーストが、割当てられた時間内にアドレス境界をオーバーランするかを判断することを計算的に困難と認識し得る。したがって、この発明では、不確定な長さのバーストは、サポートされない。
【００６７】
バースト終了機能：標準のＰＬＢによって、スレーブがいつでも固定長のバーストを終了させることが可能となる。しかしながら、再度、マスタは、終了信号をスレーブに伝達するために、１つ以上のサイクルを必要とし得る。この時間期間、スレーブは、あまりに多すぎるデータを送るおそれがある。したがって、一実施例では、この発明は、バースト終了機能をサポートしない。代わりに、この発明は、確定的な挙動を、つまり、スレーブが読出肯定応答（ＲｄＡｃｋ）信号および書込肯定応答（ＷｒＡｃｋ）信号の正確な数を戻すことを必要とする。別の実施例では、バースト終了信号を用いてデータの流れが制御される場合、スレーブは、ＲｄＡｃｋ信号とＷｒＡｃｋ信号との間に待ち状態を挿入して、より多くの時間を提供し得る。代替的には、問題が生じた場合、スレーブは、読出エラーを示すか、または割込を生成し得る。
【００６８】
確定した長さのバースト機能：確定した長さのバーストを、つまり、２から１６の転送を提供することによって、マスタの設計が簡素化されるが、代わりに、アドレス境界またはページ境界交差を検出するために論理をスレーブに追加することが必要とされる。したがって、一実施例では、この機能は、この発明においてサポートされず、代わりに、キャッシュラインアライメントが提供される。この実施例では、ＰＩＣコアは、そのサイズにアラインされる２のベキ乗の固定長バーストを実行し得る（すなわち、キャッシュライン転送）。別の実施例では、確定した長さのバースト機能がサポートされ、ユーザは、アドレス修飾子を定義し、これらの修飾子をサポートするようにマスタ／スレーブＩＰを設計する。別の実施例では、確定した長さのバースト機能が、バースト長サイズに対するアラインされた転送として強制的に実現され、アドレス境界チェックを有する必要性をなくす。
【００６９】
バーストサイズ機能：バーストサイズを変化させることによって、スレーブ内の設計経路の複雑性が増す。具体的には、スレーブは、いずれかの数のデータ幅を扱うために、データ経路を実現する必要があり得る。一実施例では、バーストサイズは、データ経路幅にセットされ得る。
【００７０】
キャッシュライン転送機能：キャッシュライン転送、つまり、特定の長さおよびアライメントのアトミックデータバーストが、アドレスまたはページ境界アライメントに関してスレーブの設計を簡素化する。この発明に従うと、キャッシュライン転送がサポートされる。この発明の実施例では、２、４、８、１６、および３２ワードのキャッシュライン転送が提供される。なお、これらのサイズは、ＤＤＲ  ＳＤＲＡＭを有利にサポートする。
【００７１】
ダイナミックバスサイジング機能：ダイナミックバスサイジングは、ＦＰＧＡの複雑性を著しく増すおそれのあるデータミラーリングおよびステアリングロジックを必要とする。さらに、マスタとスレーブとの両方は、それらの内部論理をデータ転送サイクルの正確な数に調整できるように、転送幅を把握しなければならない。したがって、この発明に従うと、ＰＩＣコアは、異なる幅のマスタおよびスレーブをサポートしない。代わりに、転送幅は、システムを通して固定されており、したがって、ＦＰＧＡ内の複雑性が減じられる。一実施例では、パラメータ表示されるＩＰは、３２ビットまたは６４ビット転送にセットされ得る。ダイナミックバスサイジングの効果は、バイトイネーブル信号およびソフトウェア制御の使用を通して適応され得る。
【００７２】
Ｂ．ＰＬＢスーパーセット機能
この発明に従うと、いくつかの実現される機能は、標準のＰＬＢ機能のスーパーセットである。たとえば、この発明は、ダブルデータレート（ＤＤＲ）データ経路のためのサポートを提供し、データ経路は、アドレス経路のクロック周波数の２倍で動作し得る。加えて、この発明は、ダイナミック書込バイトイネーブルメカニズムを含んで、書込トランザクションが接続ファブリックにおいて最適化されることが可能になる。具体的には、転送される書込データの各バイトに対して、この発明は、追加的なビットを提供し得、データの各バイトが選択的にスキップされることが可能となる。この様態で、ダイナミック書込バイトイネーブルメカニズムは、効率的にバイトパターンを書込むことができ、非連続的なメモリ書込動作中のシステム性能が強化される。これは、ＤＭＡを用いるシステムにおいて特に有利である。具体的には、ＤＭＡエンジンは、ミスアラインされたデータを順に実行する(sequence through)ための複雑な論理をもはや必要としない。代わりに、ＤＭＡエンジンは、転送内容に適応するために適切なバイトイネーブルパターンを示すのみでよい。さらに、ＤＭＡエンジンは、そのデータを転送するために多くのバスサイクルをもはや消費せず、追加的な利用可能な性能がシステムに加えられる。最後に、この発明のＰＩＣコアは、トランザクションフォワードアーキテクチャを用いてパイプライン方式をサポートし、より高い全システム性能を可能にする。これらのスーパーセット機能は、ＦＰＧＡ内のＩＰ性能を飛躍的に高める。
【００７３】
Ｃ．信号：ＰＬＢからＰＩＣへのマッピング
上述のＰＬＢ機能を提供するために、さまざまな信号が、システムのマスタ／スレーブとＰＬＢとの間で転送される。これらのＰＬＢ信号は、以下に列挙されており、この発明に対するマッピングを示す。たとえば、表１は、マスタの観点からさまざまなＰＬＢ信号を、これらの信号が基本的なＣＰＵ内で必要とされるか、および、これらの信号が妥当な性能でもってＦＰＧＡ内で実現され得るかを列挙する。
【００７４】
【表１】
2004529581.tif 000003
【００７５】
表２は、スレーブの観点からさまざまなＰＬＢ信号を、これらの信号が基本的なＣＰＵ内で必要とされるか、および、これらの信号が妥当な性能でもってＦＰＧＡ内で実現され得るかを列挙する。
【００７６】
【表２】
2004529581.tif 000004
【００７７】
【表３】
2004529581.tif 000005
【００７８】
ＩＶ．ＦＰＧＡ実現例
この発明の一実施例に従うと、プログラマブルインターフェイスコア（ＰＩＣ）は、ＦＰＧＡ上およびＦＰＧＡ外の両方にある他の装置と中央処理装置（ＣＰＵ）との間で通信を提供する。この発明によって指定される上述のＰＬＢ機能サブセットのために、ＰＩＣコアは、標準のＦＰＧＡリソース、つまり、ルックアップテーブル、マルチプレクサ、およびフリップフロップを有利に用いて、これらの機能を効率的に実現し得る。この発明は、これらのリソースにうまくマッピングされる論理機能およびパイプライン方式を活用する。
【００７９】
Ａ．中央処理装置（ＣＰＵ）
図４は、ＦＰＧＡ４００上の非プログラマブルリソースから形成される中央処理装置（ＣＰＵ）４０１を含むＦＰＧＡ４００を例示する。一実施例では、ＣＰＵ４０１は、ＩＢＭのパワーＰＣ４０５  ＣＰＵを含む。しかしながら、この発明は、いずれのＣＰＵにも同様に適用可能である。さらに、この発明は、いくつの数のＣＰＵとともに用いられてもよい。具体的には、図４に例示されるアーキテクチャが、ＦＰＧＡ上の各ＣＰＵに対して繰返され得る。
【００８０】
この実施例では、ＣＰＵ４０１は、ブロックランダムアクセスメモリ（ＢＲＡＭ）４０８Ａおよび４０８Ｂ等の複数の「オンチップ」メモリと直接通信し得る。各ＣＰＵは、このようなオンチップメモリに対するプロプラエタリ接続およびそれ自体のポートを規定するため、これらの詳細は、ここで提供されない。
【００８１】
ＣＰＵ４０１は、任意の数の周辺モジュール、つまり、マスタモジュール４０６またはスレーブモジュール４０４によってＣＰＵ４０１に送られる「フラグ」を妨害および優先する割込コントローラ（ＩＮＴＣ）４０９にも結合される。したがって、いずれかのスレーブモジュール４０４またはマスタモジュール４０６が、割込コントローラ４０９に結合され得る（線は図示せず）。これらのフラグは、ＣＰＵ４０１からの即時アテンションを要求する周辺モジュールに関連した「イベント」を表す。この様態で、ＣＰＵ４０１は、周辺モジュールの連続的なチェックを行なうことから解放され、ＣＰＵ４０１が可能な限り効率的に動作し得ることが確実となる。たとえば、周辺モジュールからの１つのフラグは、ＣＰＵ４０１に対して、ユーザがキーボード上の「入力」キーを押したことを知らせ得る。これらのフラグの生成は、当業者には周知であるため、ここで詳細に説明されない。周辺モジュールによって生成される割込に応答するために、ＣＰＵ４０１は、ＰＩＣ４０２およびＯＰＢ４０３を用いる（両方が以下で詳細に説明される）。
【００８２】
なお、ＣＰＵ４０１は、ＦＰＧＡファブリックに対するＣＰＵ４０１の専用ピンアウトの結合を容易にする構造を含み得る。この発明は、異なる構造を有するさまざまなＣＰＵとともに機能し得る。
【００８３】
ＦＰＧＡ４００は、複数の高速デバイス４１０およびマスタ／スレーブモジュール４０４／４０６からＣＰＵ４０１までのデータ転送を可能にする複数のデータ経路（図示せず）をさらに含む。したがって、図４に示される経路は、この発明に従ったトランザクション経路を示すことが意図される。
【００８４】
Ｂ．プログラマブルインターフェイスコア（ＰＩＣ）
この発明に従うと、（ＦＰＧＡ４００上およびチップ外の両方にある）他のデバイスとの高性能通信を提供するために、ＣＰＵ４０１は、プログラマブルインターフェイスコア（ＰＩＣ）４０２を用いる。プログラマブルインターフェイスコア４０２は、名前が示すように、ＦＰＧＡソフトウェアツール（図３のＦＰＧＡソフトウェアツール３０６参照）によって生成されるコンフィギュレーションビットを用いてＦＰＧＡ４００上で実現される。１つの最適な実施例では、プログラマブルインターフェイスコア４０２は、クロスポイントスイッチを含み、クロスポイントスイッチは、（ＣＰＵ４０１または高速バスインターフェイス（ＨＳＢＩ）４０７等の）いずれかのマスタデバイスがいずれかのスレーブデバイス４１０と通信することを選択的に可能にする。さらに、クロスポイントスイッチでは、第１のトランザクションが進行している間に、別のマスタデバイスが、同時に別のスレーブデバイスと通信することができる。この様態で、この発明は、ＦＰＧＡ４００上およびチップ外の両方における、スレーブデバイスとマスタデバイスとの間の高性能インターフェイスを提供し得る。
【００８５】
図４に示される実施例では、プログラマブルインターフェイスコア４０２は、４入力（マスタ）×４出力（スレーブ）（４×４）クロスポイントスイッチを用いて、マスタデバイスをスレーブデバイスに接続し得る。具体的には、マスタデバイスは、ＣＰＵ４０１の命令キャッシュユニット（ＩＣＵ）と、ＣＰＵ４０１のデータキャッシュユニット（ＤＣＵ）と、高速バスインターフェイス（ＨＳＢＩ）４０７と、ＯＰＢブリッジインモジュール（ＯＰＢ／ＢＩ）とを含み得、スレーブデバイスは、ＤＤＲ  ＳＤＲＡＭコントローラデバイス４１０Ａと、オフチップメモリ４１０Ｂ−４１０Ｄのうちの１つと、オンチップメモリ４１０Ｅ（一実施例では、ＢＲＡＭ）と、ＯＰＢブリッジアウトモジュール（ＯＰＢ／ＢＯ）とを含み得る。ＮのマスタデバイスとＭのスレーブデバイスとを有する他の実施例では、プログラマブルインターフェイスコア４０２は、Ｎ×Ｍクロスポイントスイッチとして構成され得る。しかしながら、重要なことには、他の種類のスイッチと比較して増大するクロスポイントスイッチ接続性のために、クロスポイントスイッチの実現は、ＦＰＧＡ４００上の利用可能なリソースを最適化するように慎重に評価されなければならない。この評価は、以下で詳細に説明される。
【００８６】
図５Ａは、プログラマブルインターフェイスコアの一部として提供される、簡素化された４×４クロスポイントスイッチ５００を例示し、クロスポイントスイッチ５００は、４つのマスタデバイス５０１Ａ−５０１Ｄおよび４つのスレーブデバイス５０２Ａ−５０２Ｄを選択的に結合する。一実施例では、クロスポイントスイッチ４００のサイズは、１６×１６スイッチにまで拡大され得る。なお、論理リソースによって、通例、クロスポイントスイッチのサイズが制限されるが、ルーティングリソースも制限的であり得る。したがって、クロスポイントスイッチの最大サイズは、ＦＰＧＡに左右される。一実施例では、最大サイズは、ＰＩＣを生成するために用いられるパラメータおよびＮ×Ｍサイズを考慮に入れて計算され得る。クロスポイントスイッチ５００は、トランザクションのアドレスおよびデータ経路のための２つの別個の構造を含む。実際のＦＰＧＡでは、図５Ｂ（５００Ａ）および図５Ｃ（５００Ｂ）を参照して説明されるこれらの構造は、オーバーラップするプログラマブルリソース上に置かれ得る。他の実施例では、トランザクションのアドレスおよびデータ論理内で用いられる構造は、オーバーラップしないプログラマブルリソースから形成される。
【００８７】
図５Ｂは、アドレス論理内のクロスポイントスイッチ（以下では、クロスポイントスイッチ５００Ａ）の一実現例のより詳細な図を示す。この実現例では、クロスポイントスイッチ５００Ａは、Ｎのアドレスデコーダ５１１（Ｎは、マスタデバイス５０１の数に等しい）と、Ｍのアクセスアービタ５１２（Ｍは、スレーブデバイス５０２の数に等しい）とを含む。マスタデバイス５０１Ａ−５０１Ｄは、データキャッシュユニット（ＤＣＵ）、命令キャッシュユニット（ＩＣＵ）、高速バスインターフェイス（ＨＳＢＩ）、およびオンチップ周辺バスブリッジインモジュールＯＰＢ／ＢＩを含む。スレーブデバイス５０２Ａ−５０２Ｄは、ＤＤＲデバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ブロックＲＡＭ（ＢＲＡＭ）、およびＯＰＢブリッジアウトマスタＯＰＢ／ＢＯを含む。
【００８８】
ＯＰＢ／ＢＩおよびＯＰＢ／ＢＯモジュールに関して、ＣＰＵ４０１（図４）がスレーブモジュール４０４またはマスタ／スレーブモジュール４０５と通信する必要がある場合（以下で説明）、プログラマブルインターフェイスコア（ＰＩＣ）４０２内のＯＰＢブリッジアウトモジュールＯＰＢ／ＢＯが、ＣＰＵのコマンドをＯＰＢ４０３に対して駆動することが注目される。しかしながら、ＰＩＣ４０２の観点からは、このＯＢＰ／ＢＯモジュールは、スレーブデバイスとして機能する。対照的に、マスタモジュール４０６またはマスタ／スレーブモジュール４０５がデバイス４１０に対してコマンドを発行する場合、その要求は、プログラマブルインターフェイスコア４０２内のブリッジインモジュールＯＰＢ／ＢＩによって受取られる。したがって、ＰＩＣ４０２の観点からは、ＯＰＢ／ＢＩは、マスタとして機能するように見える。したがって、ＯＰＢ／ＢＯおよびＯＰＢ／ＢＩは、マスタ機能とスレーブ機能との両方を有するプログラマブルインターフェイスコア５０２内のブリッジモジュールとして特徴付けられ得る。ＯＰＢ／ＢＯＭおよびＯＰＢ／ＢＩは、図１６および図１７を参照しながらより詳細に説明される。
【００８９】
クロスポイントスイッチ５００Ａ内では、アクセスデコーダ５１１は、そのそれぞれのマスタデバイス５０１からアドレスを受取り、次に、アドレスをデコードして、マスタデバイスがどのスレーブデバイス５０２にアクセスすることを望むかを判断する。デコーディングの後、アドレスデコーダ５１１は、要求されたスレーブデバイス５０２に関連したアクセスアービタ５１２にアドレスを送る。多数のマスタデバイス５０１が１つのスレーブデバイス５０２にアクセスすることを望み得ることが思い出されたい。したがって、アクセスアービタ５１２を用いて、要求を行なうマスタデバイス間でプライオリティを決定する。アクセスアービタ５１２によって用いられ得るいくつかの公知のアルゴリズムは、シングルレベルラウンドロビン、マルチレベルラウンドロビン、最長時間未使用法、およびプライオリティベースのアプローチ（ＯＰＢバスアービタ５０３Ａを参照しながら以下でより詳細に説明）を含む。なお、トランザクションは読出動作であるのか、または書込動作であるかということ、およびデータ転送サイズを含む、マスタデバイス５０１からの追加的な情報が、デコードされたアドレスとともにスレーブデバイス５０２に転送される。
【００９０】
クロスポイントスイッチ５００Ａ内でアドレスデコーダ５１１およびアクセスアービタ５１２を用いることによって、前のトランザクションが完了する前に、マスタデバイス５０１が別のトランザクションを開始することが可能になる。言い換えると、デコードされたアドレスがアクセスアービタ５１２に一旦提供されると、アドレスデコーダ５１１は、次のアドレスをデコードし始め得る。この種のプロセスは、「トランザクションフォワード」と呼ばれる。この発明は、トランザクションフォワードを有利に用いて、クロスポイントスイッチの性能を高める。
【００９１】
この発明の一実施例では、このトランザクションフォワード特徴は、（簡素化のために１つしか示されていない）多数のレジスタ５１３をアドレス論理内に含むことによって、さらに強化され得る。図５Ｂでは、これらのレジスタは、アドレスデコーダ５１１の前に、アドレスデコーダ５１１の後およびアクセスアービタ５１２の前に、および／または、アクセスアービタ５１２の後およびスレーブデバイス５０２の前に、置かれ得る。なお、追加的なレジスタが、アドレス論理内のいずれかのポイントに置かれ得る（しかしながら、各アドレス経路は、アドレス／制御経路において一貫したタイミングを保証するために、同じ場所にレジスタを有するべきである）。この発明では、これらのレジスタ５１３は、アドレスおよび制御情報のためにパイプライン方式を提供し得、したがって、他のトランザクションが処理されている間に、要求を行なうマスタが別のトランザクションを開始することが可能になる。したがって、この様態で、この発明のパイプライン方式は、システムの全アドレス／制御帯域幅を増大させることができ、多数のトランザクションのためのアドレス論理の速度を上げる。
【００９２】
ある特定のスレーブデバイス５０２が、トランザクションに対して解放されているとアクセスアービタ５１２によって判断された後、そのアクセスアービタ５１２は、データ論理内で提供される構造と通信して、図５Ｃを参照しながら説明されるような適切な接続を生成する。図５Ｃは、データ論理のためのクロスポイントスイッチ（以下では、クロスポイントスイッチ５００Ｂ）の一実現例のより詳細な図を示す。この実現例では、クロスポイントスイッチ５００Ｂは、Ｎの書込マルチプレクサ５１４（Ｎは、書込動作において書込され得るスレーブデバイス５０２の数に等しい）と、Ｍの読出マルチプレクサ５１５（Ｍは、読出動作においてデータを受取り得るマスタデバイス５０１の数に等しい）とを含む。マルチプレクサ５１４Ａ−５１４Ｄおよび５１５Ａ−５１５Ｄは、アクセスアービタ５１２Ａ−５１２Ｄ（図５Ｂ）によって制御される。
【００９３】
アドレス論理と同様に、クロスポイントスイッチ５００Ｂは、レジスタ５１３によって提供されるパイプライン方式を含み得る。一実施例では、これらのレジスタ５１３は、マスタデバイス５０１と書込マルチプレクサ５１４との間に、および、スレーブデバイス５０２と読出マルチプレクサ５１５との間に置かれる。なお、追加的なレジスタがデータ論理内のいずれかのポイントに置かれ得る。しかしながら、各データ経路は、データ経路において一貫したタイミングを保証するために、同じ場所にレジスタを有するべきである。この発明では、これらのレジスタ５１３は、転送されるデータに対してパイプライン方式を提供し得、別の読出または書込トランザクションが処理されている間に、要求を行なうマスタまたはアクセスされるスレーブのいずれかが、別の読出または書込トランザクションを開始することが可能になる。したがって、この様態で、この発明のパイプライン方式は、システムの全データ帯域幅も増大させることができ、多数のトランザクションのデータ論理のスループットを上げる。
【００９４】
上述のように、この発明は、アドレスおよびデータ論理の両方においてトランザクションフォワードを有利に用い得る。パイプライン方式によって、トランザクションフォワードの最適化が可能になる。具体的には、マスタデバイスは、スレーブデバイスと直接通信しないため、パイプラインレジスタが、アドレス／データ論理内の多数の場所で提供され得る。したがって、一旦マスタデバイスがアドレスを送り出し、スレーブから肯定応答を受取ると、マスタデバイスは、そのトランザクションに関連した情報の残り（制御とデータとの両方）をパイプライン処理し得る。一旦スレーブデータ肯定応答信号がマスタに到達すると、マスタは、スレーブが実際にデータを受取るのを待たずにデータを供給できる点において、パイプライン方式は役立つ。この時点で、マスタデバイスは、別のトランザクションを開始できる。パイプライン化の量によって、同時にアクティブになり得るトランザクションの数が決定される。
【００９５】
なお、全システム性能に関して、レイテンシ（つまり、このパイプライン方式に関連した遅延）も考慮されなければならない。たとえば、一実施例では、レジスタは、クロック信号を必要とするフリップフロップを用いて実現され得る。このクロック信号は、アドレスデコーダおよびアドレスアービタがそれらのそれぞれの機能を実行するために必要な時間に基づいてセットされ得る。なお、パイプライン方式は、周波数と直接相関関係がある。したがって、パイプライン化すればするほど、より高い周波数が提供される。しかしながら、周波数を増大させることは、また、レイテンシを望ましくないほど増大させる。したがって、以下にさらに詳細に説明されるように、この発明は、（パイプライン方式によって提供されるような）帯域幅とレイテンシとの間でバランスを確立する。
【００９６】
別の利点として、この発明は、各スレーブデバイス内で提供される論理を大きく減じることができる。具体的には、この発明に関連するマスタデバイスと通信するスレーブデバイスは、アドレスデコードするために必要とされる複雑な回路をなくすことができる。したがって、この発明は、スレーブデバイスの設計、実現、および製造の作業を簡素化する。
【００９７】
対照的に、共有バスシステムでは、マスタデバイスは、アドレスをすべてのスレーブデバイスに一斉送信し得る。したがって、このシステムでは、各スレーブデバイスは、アドレスをデコードし、アドレスがそのスレーブデバイスに関係するかを判断するための論理を含み得る。アドレスがデコードされた後、適切なスレーブデバイスが信号をマスタデバイスに送り返し、これが、次に、トランザクションに関する情報の残りを、識別されたスレーブデバイスに送り得る。
【００９８】
上の説明から理解され得るように、共有バスシステムは、システム内に含まれ得るパイプラインの量を大きく制限し得る。たとえば、一旦マスタデバイスがアドレスを送り出すと、すべてのスレーブデバイスがアドレスをデコードしなければならず、他の指定されていないスレーブデバイスが、他のマスタデバイスとの他のトランザクションを進めることが妨げられる。したがって、先行技術の共有バスシステムは、本質的に、この発明のクロスポイントスイッチよりも低い性能を提供する。なお、（以下で説明される）ハイブリッドシステムでは、共有バス上のスレーブの数が制限され得る。この様態で、アドレスを一斉送信し、さらにはスレーブからの応答を待つ時間が、最小限にされ得る。言い換えると、高い帯域幅を必要とするデバイスは、共有バス構成に内在する余分なレイテンシを支え得るものと釣り合わされ得、ある特定のシステムが最適化される。
【００９９】
この発明のスイッチファブリックとしてＦＰＧＡ内のクロスポイントスイッチを構成することによって、いくつかの利点が提供される。第１に、クロスポイントスイッチは、「非閉塞的」であり、入力は、出力に対する非輻輳経路が保証されることが確実である。この局面は、この発明のパイプライン化されたアーキテクチャにおいて特に有利である。第２に、ＦＰＧＡリソースを用いて実現されるクロスポイントスイッチによって、接続が迅速に、選択的に変更されることが可能となる。なお、このような接続の変更は、したがって、経路の変更も、他のいずれの経路の接続にも影響を及ぼさない。第３に、クロスポイントスイッチは、プログラマブルに「トリミング」されて、ＦＰＧＡ上で用いられるリソースを最小にし得る。
【０１００】
たとえば、図５Ｄは、アドレス／制御論理がトリミングされるクロスポイントスイッチ５００Ａの一実施例を示す。この実施例では、ユーザは、あるアドレス／制御論理が用いられないことを決定した。なお、ソフトウェアは、どの論理がトリミングされ得るかをユーザが特定する助けとはなり得るが、このような決定をするためには、ユーザが通例、ソフトウェアに基本的なパラメータを提供しなければならない。この発明は、用いられない論理を除去し、その論理に関連するリソースがユーザの設計の他のコンポーネントのために用いられることを可能にする。代替的には、たとえユーザの設計の他のコンポーネントが、トリミングされた論理を用いない場合でも、ユーザの設計は縮小され得、おそらくは、より小さなＦＰＧＡが用いられるか、またはより多くのマスタまたはスレーブが同じサイズのＦＰＧＡ内で実現されることさえも可能となる。図５Ｄでは、以下のアドレス／制御論理が除去される。すなわち、ＩＣＵからＯＰＢ／ＢＯ、ＨＳＢＩからＢＲＡＭ、ＨＳＢＩからＯＰＢ／ＢＯ、ＯＰＢ／ＢＩからＢＲＡＭ、およびＯＰＢ／ＢＩからＯＰＢ／ＢＯである。
【０１０１】
別の例として、図５Ｅは、データ論理がトリミングされるクロスポイントスイッチ５００Ｂの一実施例を示す。この実施例では、ユーザは、あるデータ論理が用いられないことを決定した。この発明は、用いられない論理を有利に除去し得る。図５Ｅでは、以下の書込データ論理が除去される。すなわち、ＨＳＢＩからＢＲＡＭおよびＯＰＢ／ＢＯ、ＩＣＵからいずれかのスレーブデバイス（つまり、ＩＣＵはリードオンリデバイス）、ＯＰＢ／ＢＩからＢＲＡＭおよびＯＰＢ／ＢＯである。加えて、この実施例では、以下の読出論理も除去される。すなわち、ＢＲＡＭからＨＳＢＩおよびＯＰＢ／ＢＩ、およびＯＰＢ／ＢＯからＨＳＢＩおよびＯＰＢ／ＢＩである。
【０１０２】
この発明に従うと、いずれかの経路（および、関連の論理）のトリミングによって、残りの回路が簡素化され得る。たとえば、図５Ｅでは、書込マルチプレクサ５１４Ｃおよび５１４Ｄの各々は、１つの入力のみを有する。したがって、これらのマルチプレクサは、たとえば、簡素なパストランジスタとして実現され得る。読出マルチプレクサ５１５Ｃおよび５１５Ｄ等の他のマルチプレクサも簡素化され得る。論理を簡素化することによって、システムの速度および他の性能パラメータが改善され得る。したがって、この発明に従ったプログラマブルリソースをトリミングする能力によって、ＦＰＧＡの性能および面積において、著しい改善が提供され得る。
【０１０３】
この発明の一実施例では、クロスポイントスイッチ５００Ａ／５００Ｂは、アドレス／制御論理がＣＬＫで動作し、さらにはデータ論理がＣＬＫ２Ｘで動作するように、設計される。具体的には、スレーブデバイス５０２がトランザクションに利用可能であることが、アクセスアービタ５１２によって一旦判断されると、そのアクセスアービタ５１２は、適切な書込マルチプレクサ５１４または読出マルチプレクサ５１５を制御することによって、そのトランザクションのための必要な論理を生成し得る。したがって、この時点では、追加的な論理または経路変更が必要とされないため、書込または読出動作は、さらなる遅延を伴わずに進行することができる。したがって、一実施例では、アドレス／制御論理は、１３３ＭＨｚで動作し得、データ論理は、２６６ＭＨｚで動作し得る。
【０１０４】
重要なことには、デュアルクロックシステムでは、制御経路は、公称データクロックレートの１／２で動作して、そのタスクを達成するための優先的な時間をこの経路に提供する。さらに、１／２対１比が存在するため、データレイテンシは、実質的に減じられ、データ転送周波数が上昇し得る。
【０１０５】
なお、クロスポイントスイッチ５００Ａ／５００Ｂは、１つ以上の特定の信号をマスタデバイス５０１に転送するための専用の追加的なラインを含み得る。これらの追加的なラインは、肯定応答信号を転送し得るが、転送に限定されているわけではない。たとえば、一実施例では、トランザクションフォワードは、要求を行なうマスタデバイス５０１に対してアクセスアービタ５１２により提供される肯定応答信号によって、トリガされ得る。具体的には、制御信号およびデータのパイプライン処理は、要求を行なうマスタデバイス５０１が肯定応答信号を受け取った後に、開始される。
【０１０６】
Ｃ．マスタおよびスレーブモジュール
この発明に従うと、通例、先行技術のシステム内では周辺デバイスとして提供される、マスタモジュール４０６とスレーブモジュール４０４との両方が、ユーザのトップレベル設計の一部として、またはコアとして、ＦＰＧＡ上に置かれ得る。この発明の一実施例では、ＦＰＧＡ４００は、マスタとスレーブとの両方として働くハイブリッドモジュール４０５を含み得る。具体的には、ハイブリッドマスタ／スレーブモジュール４０５は、特定の時間期間中にトランザクションを開始し、オンチップ周辺バス（ＯＰＢ）４０３を制御することができ、他の期間中は、トランザクションを受入れ、データをＯＰＢバス４０３に提供し得る。たとえば、ネットワーキングアプリケーションでは、データパケットが、スレーブとしてのハイブリッドモジュール４０５によって受取られると、ハイブリッドモジュール４０５は、ＤＭＡを用いるマスタとしてパケットをメモリに送り得る。別の実施例では、マスタ機能は、スレーブモジュール内に組込まれる。
【０１０７】
有利なことには、この発明によって、パラメータ表示が容易にされるため、マスタおよびスレーブモジュールの数は、動的にさえも、変更され得る。したがって、この発明は、ユーザの設計を実現するために必要とされるＦＰＧＡ上のリソースのみを用いる。
【０１０８】
Ｄ．ＯＰＢバス
この発明に従うと、オンチップ周辺バス（ＯＰＢ）４０３は、プログラマブルインターフェイスコア４０２とモジュール４０４／４０６との間の通信を容易にする接続インフラストラクチャを含む。ＯＰＢ４０３は、複数のより低い性能の周辺デバイス、つまり、モジュール４０４／４０６をサポートする共有バスアーキテクチャを用いる。これらのモジュール４０４／４０６は、たとえば、シリアルポートおよびイーサネット（Ｒ）接続を用い得る。一実施例では、モジュール４０４／４０６は、ＩＢＭのコアコネクト（CoreConnect）（商標）ＯＰＢ仕様に従い得る。
【０１０９】
重要なことには、ＯＰＢ４０３は、ＦＰＧＡ４００上に提供されるプログラマブルルーティングリソースから形成され得る。具体的には、バスのラインがプログラマブルルーティングリソースから形成され得、スイッチング論理は、ＣＬＢ内のプログラマブルリソースから形成され得る。この様態で、ＯＰＢ４０３は、ＦＰＧＡ４００上のどこに位置付けられてもよい。さらに、ＯＰＢ４０３は、いかなる数のモジュール４０４／４０６にも対応するように構成され得る。言い換えると、３つのマスタモジュール４０６および１つのスレーブモジュール４０４のみが、ユーザによってＦＰＧＡ４００上に置かれる場合、この発明は、これらの４つのモジュールのみのためのポートが作成されることを保証する。したがって、この発明に従うと、ＯＰＢ４０３は、完全にパラメータ表示可能である。
【０１１０】
ＯＰＢ４０３は、単一のマスタモジュール４０６がスレーブモジュール４０４またはマスタ／スレーブ４０５と通信することを可能にするスイッチング論理を含む。具体的には、共有バスアーキテクチャのために、他のマスタモジュール４０６またはマスタ／スレーブ４０５は、各アクティブトランザクション中に、それらのそれぞれのスレーブモジュール４０４とのそれらのトランザクションを開始することを待たなければならない。これらのトランザクションにプライオリティを割当てるために、ＯＰＢアービタ４０３Ａが提供される。
【０１１１】
この発明の一実施例に従うと、ＯＰＢアービタ４０３Ａは、いずれかの種類のアービトレーション方式を提供するように構成され得、さらにはＦＰＧＡ４００が動作しているときに動的に変化するようにさえも構成され得るコアである。なお、ＯＰＢ４０３のように、ＯＰＢアービタ４０３Ａは、完全にパラメータ表示可能である。したがって、ＯＰＢアービタ４０３Ａは、ユーザによって指定された数のマスタモジュール４０６をアービトレートするために必要なＦＰＧＡ４００上のプログラマブルリソースのみを用いる。一般に、ＯＰＢアービタ４０３Ａは、予め構築されたアルゴリズムを用いて、どのマスタモジュール４０６がＯＰＢ４０３を制御し得るかということと、その制御の時間期間とを決定する。
【０１１２】
アービトレーションは、公平性とプライオリティという相反する目標を解決しなければならない。公平性は、１つのマスタモジュール４０６がＯＰＢ４０３を独占することを許可されるべきではないことを要求する。しかしながら、プライオリティは、特定の状況下では、予め定められたマスタモジュール４０６がより頻繁にＯＰＢ４０３を用いてタイムクリティカルな目標を達成すべきであることを要求する。ＯＰＢアービタ４０３Ａによって用いられ得るいくつかの典型的なアルゴリズムは、シングルレベルラウンドロビン、マルチレベルラウンドロビン、最長時間未使用法、およびプライオリティベースのアプローチである。
【０１１３】
シングルレベルラウンドロビンアプローチでは、小さな時間単位、つまり、量子が定義される。（特定のマスタ３０６に関連する）すべてのトランザクションが、巡回待ち行列内に置かれる。ＯＰＢアービタ４０３Ａは、待ち行列に従い、マスタモジュールによるＯＰＢ４０３の使用を割当てて、１量子の時間間隔のためのトランザクションを達成し得る。待ち行列内の最後のトランザクションの後に、いずれかの新しいトランザクションが加えられ得る。
【０１１４】
量子の終わりの前にトランザクションが終了すると、マスタモジュール４０６は、自発的にＯＰＢ４０３を解除し得る。しかしながら、トランザクションが量子の終わりにおいても依然として動作している場合、マスタモジュール４０６は、プリエンプトされ得、トランザクションは、待ち行列の終わりの部分に加えられ得る。なお、別の実施例では、マスタモジュール４０６は、そのトランザクションを完了することができる。このとき、ＯＰＢアービタ４０３Ａは、ＯＰＢ４０３を待ち行列内の次のトランザクションに割当て得る。
【０１１５】
マルチレベルラウンドロビンアプローチでは、少なくとも２つの巡回待ち行列が形成される。たとえば、第１の待ち行列と第２の待ち行列とが形成されると仮定すると、ＯＰＢ４０３を頻繁に用いるトランザクションが、第１の待ち行列内に置かれ得、ＯＰＢ４０３をそれほどは頻繁に用いないトランザクションが、第２の待ち行列内に置かれ得る。第２の待ち行列内のトランザクションは、同じ待ち行列内に存在するならば、ＯＰＢ４０３に対して等しいアクセスを有し得る。しかしながら、第２の待ち行列内のトランザクションは、グループとして、第１の待ち行列内の各トランザクションと同等の、ＯＰＢ４０３に対するアクセスを有し得る。言い換えると、第２の待ち行列のトランザクションは、「スーパートランザクション」を効率的に形成し、スーパートランザクションは、第１の待ち行列内のトランザクションのうちの１つであると考えられる。したがって、第１の待ち行列トランザクションのラウンドごとに、第２の待ち行列の１つのトランザクションが実行され得る。このアプローチでは、量子の終わりの前にトランザクションが終了すると、マスタモジュール４０６は、自発的にＯＰＢ４０３を解除し得る。しかしながら、トランザクションが量子の終わりにおいても依然として動作している場合は、マスタモジュール４０６は、プリエンプトされ得、トランザクションは、適切な待ち行列の終わりの部分に加えられ得る。
【０１１６】
最長時間未使用法では、任意の待ち行列が形成される。ＯＰＢアービタ４０３Ａは、最初は待ち行列に従い、待ち行列内の次のマスタモジュール４０６がＯＰＢ４０３の制御権を得ることを可能にする前に、各トランザクションを終了させ得る。しかしながら、ＯＰＢアービタ４０３Ａが、待ち行列内において次ではないマスタモジュール４０６からバス制御の要求を受取った場合、ＯＰＢアービタ４０３Ａは、最長時間未使用のＯＰＢ４０３を有したマスタモジュール４０６に対して（実行されているトランザクションの完了後に）ＯＰＢ４０３の制御権を与え得る。
【０１１７】
最後に、プライオリティベースのアプローチでは、ＯＰＢアービタ４０３Ａは、マスタモジュール４０６によって実行される関連のトランザクションのプライオリティにのみ基づいて、バス制御を決定し得る。このアプローチでは、より高いプライオリティの各トランザクションが、より低いプライオリティのトランザクションが開始許可され得る前に、完了し得る。一実施例では、プライオリティベースのアプローチは、ＦＰＧＡ内の性能に最も大きな影響を及ぼすマスタに対してプライオリティを許可することを含む。
【０１１８】
Ｅ．高速バスインターフェイス
この発明の一実施例に従うと、ＦＰＧＡ４００は、バス４０７Ａおよび４０７Ｂを介して、プログラマブルインターフェイスコア４０２とオフチップデバイス（図示せず）との間で多くの量のデータを転送することのできる高速バスインターフェイス（ＨＳＢＩ）４０７を含む。例示的なオフチップデバイスは、ギガビットＩ／Ｏ、高速Ｉ／Ｏ、ＰＣＩ-Ｘ、または他の公知の高性能プロトコルを用いて、インターフェイス４０７と通信し得る。このインターフェイス４０７は、コアの形で提供され得る。なお、転送されるデータは、（フラッシュメモリ、ＳＲＡＭメモリ、および／または別の種類のメモリ等の）オフチップメモリまたは（ＢＲＡＭ等の）オンチップメモリから、またはそこへと、転送され得る。
【０１１９】
一実施例では、ＨＳＢＩ４０７は、バス４０７Ｃを通って非データ移動のためにアドレス指定され得る。これらのバスは、ＣＰＵ４０１または他のバスマスタが、ＨＳＢＩ４０７の内部レジスタセットに対する局所的なアクセスを有することを可能にする。たとえば、ＨＳＢＩ４０７は、ＩＮＴＣ４０９に対する割込を生成して、それがデータパケットを受取り、さらにはそれを外部のＤＤＲメモリデバイスに転送することを完了したことを示し得た。ＣＰＵ４０１は、割込に応答するとき、バス４０７Ａを用いてＨＳＢＩ４０７と対話(talk)して、サービスに対するその要求が何についてであるかを把握し得る。しかしながら、バス４０７Ａを用いる行為は、いずれの進行中のデータ移動動作も割込まれる必要があり得ることを意味する。したがって、一実施例では、テリアリ（teriary）バス４０７Ｃセットが、ＯＰＢ４０３に対するマスタおよびスレーブ動作の両方のために存在する。バス４０７Ｃを用いることにより、ＣＰＵ４０１は、バス４０７Ａ上のデータ移動に影響を与えずにＨＳＢＩ４０７と対話できる。さらに、ＨＳＢＩ４０７がデータをデバイス４０４Ｃに移動させたい場合、それは、まずＰＩＣ４０２にアクセスする必要なしに、および／または、それをメモリに記憶することなく、それを行ない得る。むしろ、ＨＳＢＩ４０７は、ＯＰＢ４０３上でトランザクションを開始し、データを直接転送することができ、データをダブルバッファする必要性をなくし、システム全体の著しい性能向上に貢献する。
【０１２０】
Ｖ．ＦＰＧＡ実現例：詳細
Ａ．ＰＩＣおよびデバイス：ポート、タイミング、および実施例
マスタデバイスおよびスレーブデバイスは、よりモジュラな設計を可能にする包括的インターフェイスを用いる。具体的には、これらのモジュールは、プログラマブルインターフェイスコアに「プラグイン」され得る包括的なポート（以下で詳細に説明）を用いる。ここでの説明では、用語「ポート」は、マスタ／スレーブデバイスとプログラマブルインターフェイスコアとの間に提供される信号セットを含み得る。これらの包括的ポートのため、いかなる数のマスタデバイスおよびスレーブデバイスが、いずれの組合せで、この発明に含まれてもよい。一実施例では、ＮのマスタデバイスとＭのスレーブデバイスとが、プログラマブルインターフェイスコアに結合され、ＮおよびＭは、１以上の整数である（いくつかの事例では、同じ整数である）。
【０１２１】
なお、この発明では、より多くの機能を提供する複雑なプロトコルとより速く実行され得る簡潔なプロトコルとの間で、正しいバランスを選ぶことの重要性が認識される。ここで詳細に説明される実施例では、比較的簡素なプロトコルが用いられ、依然として大部分のタスクを達成しながらも、非常に速く実行される。
【０１２２】
１．マスタデバイスとＰＩＣとの間の通信
図６は、いずれかのマスタデバイスとプログラマブルインターフェイスコアとの間で転送され得る典型的な信号を例示する。この転送を容易にするために、マスタデバイスは、アドレスポート６０１Ａ、書込データポート６０２Ａ、および読出データポート６０３Ａを有するインターフェイス６００Ａを含む。同様の構成で、プログラマブルインターフェイスコアは、アドレスポート６０１Ｂ、書込データポート６０２Ｂ、および読出データポート６０３Ｂを有するＰＩＣインターフェイス６００Ｂを含む。一実施例では、ポート間で転送される各信号（または、信号セット）は、関連のライン／バスを有し、その信号の効率的な転送を容易にする。なお、ここでの説明では、信号の名称は、関連のライン／バスも指し得る。以下に説明される実施例に従うと、標準のＰＬＢプロトコルが制限され、より少ない機能が提供されるが、ＦＰＧＡがずっと速く動作することが可能になる。
【０１２３】
ａ．マスタのためのアドレスポート
アドレスポート６０１Ａは、以下の信号を出力し得る。
【０１２４】
Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑ
このステータス信号は、マスタがデータ転送を要求することを望むことを表す。なお、Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑがアクティブである場合、他の信号、具体的には、Ｍ２ＰＩＣ＿Ａｄｄｒ［３１：０］、Ｍ２ＰＩＣ＿ＡｄｄｒＱｕａｌ、およびＭ２ＰＩＣ＿ＲｄＷｒ＿ｎも有効でなければならない。この発明の一実施例では、論理１信号（１）が、要求はペンディングであることを表し、論理０（０）信号が、１つの要求もペンディングでないことを表す。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１２５】
Ｍ２ＰＩＣ＿Ａｄｄｒ［０：３１］
この３２ビット信号は、アドレス、つまり、要求される転送の、メモリスペース内の特定のバイトを表す。上述のように、この信号は、Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑが有効である同じサイクル上で有効でなければならない。このバスは、クリティカルパス上にある。なぜならば、それは、プログラマブルインターフェイスコアのためのアドレスデコーダ（たとえば、図５Ｂのアドレスデコーダ５１１参照）に信号を与えるためである。したがって、一実施例では、上位ビットのみが実際には比較され、下位のビットは、中位のタイミングを有するとして扱われ得る。具体的には、上位ビットは、スレーブのアドレスを識別し、下位ビットは、スレーブ内の目標メモリを識別する。したがって、スレーブの識別が本発明のアービトレーションに先行し（たとえば、図５Ｂのアクセスアービタ５１２を参照）、いずれかの１つの時間期間中に、１つのトランザクションのみがスレーブ内でアクティブになり得るため、上位ビットの読出しは、遅いタイミングとして特徴づけられるべきであり、スレーブ内の実際の記憶場所は、中位のタイミングとして特徴づけられ得る。
【０１２６】
なお、要求されるデータ転送は、好ましくは、転送サイズに対してアドレスアラインされる。たとえば、８ワード転送では、アドレスは８ワード境界上にあるべきである。言い換えると、２ワード転送は、論理アドレス０、２、４等で始まり得、４ワード転送は、論理アドレス０、４、８等で始まり得、８ワード転送は、論理アドレス０、８、１６等で始まり得る（例外として、目標ワード第１転送(target word first transfer)を特定する場合、アラインされていないアドレスが与えられ得る）。アライメントは、ＤＤＲ  ＳＲＡＭのようなデバイスのために必要とされる。なぜならば、これらのデバイスは、アラインされたブロック転送を実行するように設計されているためである。この信号は、ＣＬＫのクロックドメインを有する。
【０１２７】
Ｍ２ＰＩＣ＿ＲｄＷｒ＿ｎ
この信号は、アドレス要求信号（Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑ）に付随するための読出または書込フラグを提供する。上述のように、この信号は、Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑが有効である同じサイクル上で有効でなければならない。一実施例では、論理１信号（１）が、読出動作が要求されることを表し、論理０（０）信号が、書込動作が要求されることを表す。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１２８】
Ｍ２ＰＩＣ＿ＡｄｄｒＱｕａｌ［１６：０］
このアドレス転送修飾子信号は、プロプラエタリＣＰＵ、一実施例では、ＩＢＭのパワーＰＣ４０５に特有である。上述のように、この信号は、Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑが有効である同じサイクル上で有効でなければならない。これらの信号は、プログラマブルインターフェイスコアによってデコードまたは処理されず、適切なスレーブデバイスへとルーティングされるだけである。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。この信号のためのビット定義は、以下のとおりである。
【０１２９】
【表４】
2004529581.tif 000006
【０１３０】
なお、３２ビットシステムでは、ユーザは、３２ワードバーストモードをサポートすることを望まない場合もある。なぜならば、これは、ＦＰＧＡプリミティブに効率的にマッピングしない構造を必要とし得るためである。
【０１３１】
バイトイネーブルがシングルビート（つまり、１または２ワード）転送に提供されて、ＣＰＵのようなデバイスが、バイトおよびハーフワード読出のようなより小さなサイズの読出を実行することを可能にする。この機能は、たとえば、（図１６および図１７を参照しながら詳細に説明される）ＯＰＢブリッジ内で特に重要である。なぜならば、いくつかのＯＰＢデバイス（特に、スレーブ）は、バイト長レジスタのみを有し得るためである。ＤＲＡＭまたはＳＲＡＭ等のメモリデバイスにとっては、たとえバイトのみが必要とされている場合でも、ワードまたはダブルワードで読出すことに問題はなく、これらのデバイスは、シングルビート転送バイトイネーブルを無視し得る。これらのバイトイネーブルビットは、情報がデータ経路バイトイネーブルに対して冗長ではあるが、書込に対しても有効である。
【０１３２】
アドレスポート６０１Ａは、以下の信号を受取ることもできる。
【０１３３】
ＰＩＣ２Ｍ＿ＡｄｄｒＡｃｋ
（プログラマブルインターフェイスコアからの）このストローブ信号は、現在のアドレスを肯定応答し、もしあれば、次のアドレス要求をフェッチする。ＰＩＣ２Ｍ＿ＡｄｄｒＡｃｋがアサートされた後のサイクル上で、Ｍ２ＰＩＣ＿ＡｄｄｒＲｅｑ、Ｍ２ＰＩＣ＿Ａｄｄｒ、Ｍ２ＰＩＣ＿ＲｄＷｒ＿ｎ、およびＭ２ＰＩＣ＿ＡｄｄｒＱｕａｌが更新される。この信号は、アドレス要求当たり、１ＣＬＫサイクルだけアサートされる。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１３４】
ＰＩＣ２Ｍ＿Ｂｕｓｙ
この信号は、要求しているマスタに対して、そのトランザクションのうちの１つがスレーブ内で進行していることを伝える。この信号は、プログラマブルインターフェイスコアがそのＰＩＣ２Ｍ＿ＡｄｄｒＡｃｋを発行した後に、ハイとなり、スレーブが（以下で詳細に説明される）そのＳ２ＰＩＣ＿ＲｄＸｆｅｒＤｏｎｅまたはＳ２ＰＩＣ＿ＷｒＸｆｅｒＤｏｎｅ信号をアサートしたときにローに戻って、データ転送がスレーブによって完了したことを表す。一実施例では、ＰＩＣ２Ｍ＿Ｂｕｓｙ信号およびマスタのＭ２ＰＩＣ＿ＡｄｄｒＲｅｑ信号が、ＯＲゲートに提供される。この様態で、マスタは、それがプログラマブルインターフェイスコア上のすべてのそのトランザクションをいつ完了したかを判断し得る。この信号は、“Ｓｙｎｃ”または“ＥＩＥＩＯ”（エンフォース命令実行インオーダ（Enforce Instruction Execution In Order））命令をＣＰＵ内でサポートする。一実施例では、論理１は、プログラマブルインターフェイスコアがデータ転送でビジーであることを示し、論理０は、進行中のトランザクションが存在しないことを示す。なお、スレーブは、それがトランザクションを内部で完了していない場合、それがＳ２ＰＩＣ＿ＲｄＸｆｅｒＤｏｎｅ／Ｓ２ＰＩＣ＿ＷｒＸｆｅｒＤｏｎｅをアサートした後、信号ＰＩＣ２Ｍ＿Ｂｕｓｙをアクティブに保持することが許可されている。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１３５】
ＰＩＣ２Ｍ＿Ｅｒｒ
この信号は、マスタに対して、その進行中のトランザクションのうちの１つがエラーを生じさせたことを伝える。読出エラーに対しては、この信号は、（以下で説明される）ＰＩＣ２Ｍ＿ＲｄＤａｔａＡｃｋとともにアクティブになり得る。書込エラーに対しては、この信号は、プログラマブルインターフェイスコア上のトランザクション中またはその後に、アサートされ得る。より具体的には、ＰＩＣ２Ｍ＿Ｂｕｓｙ信号がアクティブなままである限り、書込トランザクションがプログラマブルインターフェイスコア上で完了した後に、エラー信号がアサートされ得るのみである。この時点で、要求を行なっているマスタは、エラーレジスタ、つまり、スレーブのＢＥＡＲおよびＢＥＳＲを調べて、エラーは何であったのかを判断し得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１３６】
ｂ．マスタのための書込ポート
この発明に従うと、マスタは、それが転送要求している全書込データを、それが供給できることを確信していなければならない。データフロー制御信号は存在しないため、マスタは、転送されているデータの流れを遅くする、または中断することはできない。しかしながら、スレーブデバイスは、データ肯定応答信号（つまり、ＰＩＣ２Ｍ＿ＷｒＤａｔａ  Ａｃｋ）を遅らせる(hold off)ことによって、データ転送間で待機状態を強制することができる。これらの制約の観点から、マスタ書込ポート６０２Ａは、以下の信号を出力し得る。
【０１３７】
Ｍ２ＰＩＣ＿Ｄａｔａ
この信号は、書込転送データを提供する。一般に、転送されるべき書込データの第１の部分は、対応のアドレス要求がスレーブに到達する機会を持つときまでに、利用可能である。一実施例では、アドレスデータがプログラマブルインターフェイスコアをパイプライン方式で通る(pipeline through)ために２つのＣＬＫ（または、４つのＣＬＫＸ２）サイクルのレイテンシが存在する。したがって、アドレス要求が発行された後、書込データは、２つのＣＬＫサイクルに対して準備ができているべきである。なお、スレーブが書込に対して所与の最小応答時間を有するカスタムシステムでは、書込データのアベイラビリティは、この量だけ遅延され得る。
【０１３８】
一実施例では、書込転送データは、６４ビットを含む。しかしながら、他の実施例では、より少ない、またはより多くのビットが用いられ得る。いずれの場合も、書込転送データを運ぶバスは、最適な幅にまでスケールダウン／アップされ得る。なお、このバスは、プログラマブルインターフェイスコアにおいて長い距離に及び得るため、そのタイミングが重要である。したがって、この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１３９】
Ｍ２ＰＩＣ＿ＤａｔａＢＥ［７：０］
この書込転送データバイトイネーブル信号は、Ｍ２ＰＩＣ＿Ｄａｔａ信号と同じタイミングを有し、バイトイネーブル修飾子として書込データに付随する。一実施例では、インターリーブドビットまたはオールビットオフを含むいずれかのバイトイネーブルパターンが許容される。たとえば、高速マスタは、１６ワードバースト転送を開始し、第１のデータ転送上ですべてのバイトイネーブルをオフにして、３動作ではなく１動作で１４ワードバーストを効率的に実行し得る（８ワードバースト＋４ワードバースト＋１ダブルワード）。この信号は、３２ビットＰＩＣシステム内では４ビット幅であり得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１４０】
Ｍ２ＰＩＣ＿ＤａｔａＱｕａｌ［Ｎ：０］
この信号は、追加的な情報が書込データおよび／または書込バイトイネーブルとともに転送されることを可能にする。たとえば、一実施例では、パリティまたはエラー訂正コードビットが、書込データとともに転送され得る。なお、各Ｍ２ＰＩＣ＿ＤａｔａＱｕａｌ信号は、各データとともに変化し得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１４１】
ＰＩＣ２Ｍ＿ＷｒＤａｔａＡｃｋ［７：０］
このストローブは、書込データを肯定応答し、次のデータ部分が転送されることを可能にする。ＰＩＣ２Ｍ＿ＷｒＤａｔａＡｃｋ信号がアサートされた後のサイクル上では、もしあれば、次のデータが駆動されなければならない。各ＰＩＣ２Ｍ＿ＷｒＤａｔａＡｃｋビット（この実施例では、合計８ビット）は、その対応のバイトレーンのデータを肯定応答する。この様態で、より小さな幅またはより遅いスレーブが、一度にいくつかのバイトレーンを肯定応答できる。しかしながら、たとえバイトイネーブルビットがそのバイトレーンのためにセットされていなくても、トランザクションは、すべてのバイトレーンに対して肯定応答される。この様態で、マスタは、データが適切に書込まれたことを知る。ＰＩＣ２Ｍ＿ＷｒＤａｔａＡｃｋ信号の動的な性質は有利である。なぜならば、それによって、データが転送において連続しないことが可能となるためである。一実施例では、ＰＩＣ２Ｍ＿ＷｒＤａｔａＡｃｋビットは、増加するバイトアドレスの順序で（つまり、システムに応じて、ビット［７］から［０］、または［０］から［７］で）サイクルする。３２ビットシステムでは、この信号は、４ビット幅であり得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１４２】
ｃ．マスタのための読出ポート
読出動作では、マスタデバイスは、それが転送要求している全データを、それが受取ることができることを確信していなければならない。データフロー制御信号は存在しないため、マスタデバイスは、転送されているデータの流れを遅くする、または中断することはできない。しかしながら、スレーブデバイスは、データ肯定応答信号（つまり、ＰＩＣ２Ｍ＿ＲｄＤａｔａＡｃｋ）を遅らせる(hold off)ことによって、データ転送間で待機状態を強制することができる。
【０１４３】
読出ポート６０３Ａは、以下の信号を受取り得る。
【０１４４】
ＰＩＣ２Ｍ＿Ｄａｔａ
この信号は、転送されるべき読出データを含む。一実施例では、これは、６４ビットのデータを含む。別の実施例では、より少ない、またはより多くのビットが転送され得る。いずれの場合にも、この信号バスを転送しているバスは、適切なサイズにスケールダウン／アップされ得る。このバスは、プログラマブルインターフェイスコアにおいて長い距離に及び得るため、そのタイミングは、重要である。したがって、この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１４５】
ＰＩＣ２Ｍ＿ＤａｔａＱｕａｌ
この信号は、読出データ転送修飾子を指す。一実施例では、ビット定義は、以下のとおりである。
【０１４６】
【表５】
2004529581.tif 000007
【０１４７】
なお、一実施例では、ＣＰＵは、サイズにおいて最大３２ワードの転送を要求し得る。したがって、５ビットの「読出ワードアドレス」が、ＣＰＵをサポートするために必要とされる（論理的に、この信号は、３２ワードよりも大きな転送を定義できない）。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１４８】
ＰＩＣ２Ｍ＿ＲｄＤａｔａＡｃｋ［７：０］
この読出ストローブ信号は、読出データが受取られることを許可する。各ＰＩＣ２Ｍ＿ＲｄＤａｔａＡｃｋビットは、その対応のバイトレーンのためのデータを個別に肯定応答し、より小さな幅またはより遅いスレーブが一度に数個のバイトレーンを肯定応答することを可能にする。スレーブは、たとえバイトイネーブルビットがそのバイトレーンに対してセットされていなくても、すべてのバイトレーンが肯定応答されることを保証する。加えて、増加するバイトアドレスの順序で（これは、システムがビッグエンディアンまたはリトルエンディアンであるかに応じて、ビット［７］から［０］、または［０］から［７］になり得る）、スレーブは、ＰＩＣ２Ｍ＿ＲｄＤａｔａＡｃｋビットをサイクルし得る。結果として、３２ビットＰＩＣシステムでは、この信号は、４ビット幅になり得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１４９】
２．マスタデバイスのタイミング
図７は、マスタデバイスが、８ワード書込動作を生成し、次に８ワード読出動作を生成するタイミング図を示す。書込動作では、マスタは、時間ｔ１においてアドレス要求（ｍ＿ａｄｄｒ＿ｒｅｑ）をアサートする。同時に、マスタは、トランザクションが書込動作であることを示し（ｍ＿ａｄｄｒ＿ｒ＿ｗｎがローに遷移する）、書込アドレス（ｍ＿ａｄｄｒ［３１：０］）および転送サイズならびに他のいずれかの修飾子（ｍ＿ａｄｄｒ＿ｑｕａｌ［］）を送る。
【０１５０】
１クロック（ｃｌｋ）サイクルのレイテンシ後（レイテンシは、他の実施例では異なり得る）、マスタは、時間ｔ３においてプログラマブルインターフェイスコアからアドレス肯定応答（ｍ＿ａｄｄｒ＿ａｃｋ）を受取り、マスタが時間ｔ５において別のトランザクションを開始することを可能にする。なお、時間ｔ１において、マスタは、書込データ（Ｄ１ｗ）を送るが、時間ｔ３においてのアドレス肯定応答（ｍ＿ａｄｄｒ＿ａｃｋ）の受取り後まで待機してから、時間ｔ３、ｔ４、およびｔ５において書込データの残り（Ｄ２ｗ、Ｄ３ｗ、およびＤ４ｗ）を引き続き送る（１ＤＤＲクロック（ｃｌｋ２ｘ）サイクルのレイテンシ）。（この実施例では、ワードは、３２ビットに等しい。したがって、６４ビットデータ経路では、４つの６４ビット転送のみが必要とされる。）
図７では、読出動作が書込動作の直後に続く。したがって、アドレス要求（ｍ＿ａｄｄｒ＿ｒｅｑ）は、論理１のままである。しかしながら、マスタは、トランザクションが読出動作であることを示さなければならない。したがって、ｍ＿ａｄｄｒ＿ｒ＿ｗｎは、時間ｔ５においてハイに遷移する。この発明の一実施例のパイプライン方式に従うと、時間ｔ５において、つまり、書込動作が時間ｔ７で完了する前に、マスタは、読出アドレス（ｍ＿ａｄｄｒ［３１：０］）およびアドレス修飾子（ｍ＿ａｄｄｒ＿ｑｕａｌ［］）を送り得る。マスタデバイスは、時間ｔ８で開始し、かつ時間ｔ１２で終了する読出修飾子（Ｑ１ｒ、Ｑ２ｒ、Ｑ３ｒ、およびＱ４ｒ）および読出データ（Ｄ１ｒ、Ｄ２ｒ、Ｄ３ｒ、およびＤ４ｒ）を受取る。
【０１５１】
３．スレーブデバイスとＰＩＣとの間の通信
スレーブデバイスは、データを転送するためのコマンドを受取り、マスタデバイスが要求する読出動作または書込動作を実行する。図８は、スレーブデバイスとプログラマブルインターフェイスコアとの間で転送され得る典型的な信号を示す。この転送を容易にするために、スレーブデバイスは、アドレスポート８０１Ａ、書込データポート８０２Ａ、および読出データポート８０３Ａを有するインターフェイス８００Ａを含む。同様の構成で、プログラマブルインターフェイスコアは、アドレスポート８０１Ｂ、書込データポート８０２Ｂ、および読出データポート８０３Ｂを有するＰＩＣインターフェイス８００Ｂを含む。なお、いくつかの信号は、マスタポートのためのそれら（図６）と類似しており、それらの信号の方向が逆になっている。
【０１５２】
ａ．スレーブのためのアドレスポート
アドレスポート８０１Ａは、以下の信号を受取り得る。
【０１５３】
ＰＩＣ２Ｓ＿ＡｄｄｒＲｅｑ
このステータス信号は、マスタからのペンディングアドレス要求が存在するかを示す。ＰＩＣ２Ｓ＿ＡｄｄｒＲｅｑがアクティブであるとき、アドレス（ＰＩＣ２Ｓ＿Ａｄｄｒ）およびアドレス修飾子（ＰＩＣ２Ｓ＿ＡｄｄｒＱｕａｌ、ＰＩＣ２Ｓ＿ＲｄＷｒ＿ｎ）も有効でなければならない。一実施例では、論理１は、要求がペンディングであることを示し、論理０は、要求がペンディングでないことを示す。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１５４】
ＰＩＣ２Ｓ＿ＲｄＷｒ＿ｎ
アドレス要求信号に付随するこの信号は、要求が読出動作であるか、または書込動作であるかを識別する。この信号は、ＰＩＣ２Ｓ＿ＡｄｄｒＲｅｑが有効である同じサイクル上で有効でなければならない。一実施例では、論理１は、ＲＥＡＤ動作を示し、論理０は、ＷＲＩＴＥ動作を示す。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１５５】
ＰＩＣ２Ｓ＿Ａｄｄｒ［３１：０］
この信号は、要求される転送のアドレスを提供する。具体的には、アドレス値は、メモリスペース内の特定のバイトを示し、ＰＩＣ２Ｓ＿ＡｄｄｒＲｅｑが有効である同じサイクル上で有効でなければならない。なお、マスタは、データ転送のサイズに関してアラインされたアドレス値を提供する。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１５６】
ＰＩＣ２Ｓ＿ＡｄｄｒＱｕａｌ［２０：０］
このアドレス転送修飾子信号は、プロプラエタリＣＰＵ、一実施例では、ＩＢＭのパワーＰＣ４０５に特有である。上述のように、このアドレス修飾子情報は、ＰＩＣ２Ｓ＿ＡｄｄｒＲｅｑ信号が有効である同じサイクル上で有効でなければならない。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。ビット定義は、以下のとおりである。
【０１５７】
【表６】
2004529581.tif 000008
【０１５８】
バイトイネーブルがシングルビート転送のために提供されて、ＣＰＵのようなデバイスが、バイトおよびハーフワード読出のようなより小さなサイズの読出を実行することを可能にする。これは、たとえば、ＯＰＢブリッジにおいて特に重要である。なぜならば、いくつかのＯＰＢデバイスは、バイト長レジスタのみを有し得るためである。ＤＲＡＭまたはＳＲＡＭ等のメモリデバイスにとっては、たとえバイトのみが必要とされている場合でも、ワードまたはダブルワードで読出すことに問題はなく、これらのデバイスは、シングルビート転送バイトイネーブルを無視し得る。これらのバイトイネーブルビットは、たとえ情報がデータ経路バイトイネーブルに対して冗長であっても、書込に対して有効である。
【０１５９】
アドレスポート８０１Ａは、以下の信号を出力することもできる。
【０１６０】
Ｓ２ＰＩＣ＿ＡｄｄｒＡｃｋ
このストローブ信号は、アドレスを肯定応答し、もしあれば、次のアドレス要求を取出す。Ｓ２ＰＩＣ＿ＡｄｄｒＡｃｋ信号がアサートされた後のサイクル上では、ＰＩＣ２Ｓ＿ＡｄｄｒＲｅｑ信号、ＰＩＣ２Ｓ＿Ａｄｄｒ信号、ＰＩＣ２Ｓ＿ＲｄＷｒ＿ｎ信号、およびＰＩＣ２Ｓ＿ＡｄｄｒＱｕａｌ信号が、もしあれば、次のアドレス要求に更新される。このストローブ信号は、アドレス要求当り１ＣＬＫサイクルに対してアサートされるのみである。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１６１】
アドレスパイプライン方式をサポートすることを望むスレーブは、この発明のコアが次のアドレスを取出すことができるように、アドレス情報を迅速に肯定応答し得る。第１の要求に関連するデータ転送をスレーブが完了するまでは、スレーブは、第２のアドレス要求を肯定応答することはできない。言い換えると、スレーブは、パイプラインアドレス要求を用いて次の転送をセットアップすることはできるが、スレーブは、時期尚早に第２のアドレスを肯定応答してはならない。
【０１６２】
この一般的なルールに対する１つの例外は、第２の要求が異なるデータポートを用いる場合、スレーブは、迅速に第２の要求を肯定応答してもよいことである。たとえば、スレーブは、読出転送を肯定応答し、次に、書込転送を肯定応答し、次に、第３のアドレスを見ることができる。
【０１６３】
Ｓ２ＰＩＣ＿Ｂｕｓｙ［１５：０］
この信号は、マスタに対して、そのトランザクションのうちの１つがスレーブ内で進行中であることを伝える。具体的には、スレーブは、トランザクションを開始した対応のマスタまでビジー信号を駆動して戻すことを担う。この発明の相互接続コアは、スレーブが（以下で説明される）Ｓ２ＰＩＣ＿ＲｄＸｆｅｒＤｏｎｅまたはＳ２ＰＩＣ＿ＷｒＸｆｅｒＤｏｎｅ信号を発行する時まで、マスタに対してこのビジー信号を自動的にアサートし得る。代替的には、スレーブは、Ｓ２ＰＩＣ＿Ｗｒ／ＲｄＸｆｅｒＤｏｎｅ信号の後にビジー信号を駆動し続けて、トランザクションがスレーブ内で完了していないこと（つまり、トランザクションが依然として別のバス上でペンディングであるか、または依然としてスレーブ内で待ち行列を作っていること）をマスタに対して伝え得る。この信号は、“Ｓｙｎｃ”または“ＥＩＥＩＯ”（エンフォース命令実行インオーダ）命令をＣＰＵ内でサポートする。一実施例では、論理１は、スレーブが依然としてデータ転送にビジーであることを示し、論理０は、スレーブが進行中のトランザクションを有さないことを示す。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１６４】
Ｓ２ＰＩＣ＿Ｅｒｒ［１５：０］
この信号は、マスタに対して、その進行中のトランザクションのうちの１つがエラーを引起こしたことを伝える。具体的には、スレーブは、トランザクションを開始した対応のマスタに対してＥｒｒ信号を駆動して戻すことを担う。読出エラーでは、この信号は、Ｓ２ＰＩＣ＿ＲｄＤａｔａＡｃｋ信号とともにアクティブになり得る。書込エラーでは、この信号は、（Ｓ２ＰＩＣ＿Ｂｕｓｙ信号がアクティブのままであるならば）コア上でのトランザクション中または後の任意のときにアサートされ得る。エラーを生成し得るスレーブは、（ＢＥＡＲおよびＢＥＳＲ等の）エラーレジスタを含み得、マスタがエラーの原因を見つけ出すことを可能にする。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１６５】
ｂ．スレーブのための書込ポート
書込データポート８０２Ａは、以下の信号を受取り得る。
【０１６６】
ＰＩＣ２Ｓ＿ＷｒＤａｔａＲｅｑ
スレーブは、書込データがマスタから転送されることを要求し始める前に、この信号がアクティブになるのを待つ。マスタは、マスタが書込むことを望む全データをそれが供給できることを保証しなければならないため、この信号は、データ転送の途中で変更されることはない。この信号がアクティブになった後、それは、スレーブがＳ２ＰＩＣ＿ＷｒＸｆｅｒＤｏｎｅ信号をアサートするまで、ハイのままである。スレーブは、Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ信号をアサートし、ＰＩＣ２Ｓ＿ＷｒＤａｔａＲｅｑ信号がアクティブになる同じサイクル上でデータを転送し始め得る。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１６７】
ＰＩＣ２Ｓ＿Ｄａｔａ［６３：０］
この信号は、書込転送データを含む。なお、６４ビットが示されているが、このバスは、３２ビット幅にまでスケールダウンされて、３２ビットシステム内で用いられ得る。このバスは、コアにおいて長い距離に及び得るため、そのタイミングが重要である。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１６８】
ＰＩＣ２Ｓ＿ＤａｔａＢＥ［７：０］
この信号は、ＰＩＣ２Ｓ＿Ｄａｔａ信号と同じタイミングを有し、バイトイネーブル修飾子として書込データに付随する。「インターリーブド」ビットまたは「オールビットオフ」を含むすべてのバイトイネーブルパターンが許容される。なお、３２ビットシステムでは、このバスは、４ビット幅にまでスケールダウンされ得る。書込データのように、このバスも、コアにおいて長い距離に及び得るため、そのタイミングも重要である。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１６９】
ＰＩＣ２Ｓ＿ＤａｔａＱｕａｌ［Ｎ：０］
この信号は、通例はＣＰＵによって必要とされないが、ＰＩＣのために提供され得る。たとえば、別のＣＰＵまたはシステムが、書込データおよび／または書込バイトイネーブル信号とともに転送される追加的な情報から利益を得ることができ得る。一実施例では、この追加的な情報は、パリティビットまたはエラー訂正コードを含み得る。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１７０】
書込データポート８０２Ａは、以下の信号を出力することもできる。
【０１７１】
出力：Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ［７：０］
このストローブ信号は、書込データを肯定応答し、次のデータ部分が転送されることを可能にする。Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ信号とＰＩＣ２Ｓ＿Ｄａｔａ信号上で利用可能な次のデータワードとの間のレイテンシは、システムに左右される。一実施例では、デフォルトは、Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ信号とアサートされている次のデータとの間の３ＣＬＫ２Ｘサイクル遅延であり得る。Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ信号の各ビットは、その対応のバイトレーンのためのデータを個別に肯定応答し、より小さな幅またはより遅いスレーブが一度にいくつかのバイトレーンを肯定応答することを可能にする。なお、スレーブは、たとえバイトイネーブルビットがそのバイトレーンのためにセットされていなくても、すべてのバイトレーンを肯定応答しなければならない。加えて、スレーブは、増加するバイトアドレスの順序で（これは、システムがビッグエンディアンまたはリトルエンディアンであるかに応じて、ビット［７］から［０］、または［０］から［７］になり得る）Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋビットをアサートしなければならない。遅いスレーブデバイスはまた、Ｓ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ信号のアサート間にギャップを挿入して、スレーブがデータを転送するレートを制御することが許可される。結果として、３２ビットシステムでは、この信号は、４ビット幅であり得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１７２】
Ｓ２ＰＩＣ＿ＷｒＸｆｅｒＤｏｎｅ
スレーブは、この信号をアサートして、スレーブが書込データバスの使用を終え、さらには全データを転送したことを示す。この信号は、スレーブが送る必要のあるＳ２ＰＩＣ＿ＷｒＤａｔａＡｃｋ信号の最後のサイクル上でアサートされ得る。なお、Ｓ２ＰＩＣ＿ＷｒＸｆｅｒＤｏｎｅ信号は、対応の書込データがＰＩＣ２Ｓ＿Ｄａｔａ信号およびＰＩＣ２Ｓ＿ＤａｔａＢＥ信号を介して到着する前に、アサートされ得る。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１７３】
ｃ．スレーブのための読出ポート
読出ポート８０３Ａは、以下の信号を受取り得る。
【０１７４】
ＰＩＣ２Ｓ＿ＲｄＤａｔａＲｅｑ
スレーブは、マスタが要求する読出データを転送し始め得る前に、この信号がアクティブになることを待たなければならない。マスタは、それが読出すことを望むすべてのデータをそれが受取り得ることを保証しなければならないため、この信号は、データ転送の途中で変化することはない。この信号がアクティブになった後、それは、スレーブがＳ２ＰＩＣ＿ＲｄＸｆｅｒＤｏｎｅ信号をアサートするまで、ハイのままである。スレーブは、Ｓ２ＰＩＣ＿ＲｄＤａｔａＡｃｋ信号をアサートし、ＰＩＣ２Ｓ＿ＲｄＤａｔａＲｅｑ信号がアクティブになる同じサイクル上でデータを転送し始めることができる。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１７５】
読出データポート８０３Ａは、以下の信号を出力することもできる。
【０１７６】
Ｓ２ＰＩＣ＿Ｄａｔａ［６３：０］（ＣＬＫ２Ｘ、中位）
この信号は、転送される読出データを含む。この信号は、３２ビットシステム内の３２ビットにまでスケールダウンされ得る。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１７７】
Ｓ２ＰＩＣ＿ＤａｔａＱｕａｌ［２：０］
この信号は、読出データ転送修飾子を含む。一実施例では、ビット定義は、以下のとおりである。
【０１７８】
【表７】
2004529581.tif 000009
【０１７９】
一実施例では、ＣＰＵは、サイズにおいて最大３２ワードまでの転送を要求し得る。したがって、５ビットの「読出ワードアドレス」が、このＣＰＵをサポートするために必要とされる。論理的には、したがって、「読出ワードアドレス」フィールドは、３２ワードよりも大きな転送に対して定義されないことになる。目標ワード第１転送（つまり、任意の順序でワードを転送する能力）をサポートしないスレーブは、通常のシーケンシャルな順序でデータを転送し、応じて「読出ワードアドレス」ビットをセットするだけでよい。この信号は、中位のタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１８０】
Ｓ２ＰＩＣ＿ＲｄＤａｔａＡｃｋ［７：０］
この読出ストローブ信号は、読出データが受取られることを許可する。各Ｓ２ＰＩＣ＿ＲｄＤａｔａＡｃｋビットは、その対応のバイトレーンのためのデータを肯定応答し、より小さな幅またはより遅いスレーブが一度にいくつかのバイトレーンを肯定応答することを可能にする。スレーブは、たとえバイトイネーブルビットがそのバイトレーンに対してセットされていなくても、すべてのバイトレーンを肯定応答しなければならない。加えて、スレーブは、増加するバイトアドレスの順序で（これは、システムがビッグエンディアンまたはリトルエンディアンであるかに応じて、ビット［７］から［０］、または［０］から［７］にまでなり得る）、Ｓ２ＰＩＣ＿ＲｄＤａｔａＡｃｋビットをアサートしなければならない。結果として、３２ビットシステムでは、この信号は、４ビット幅であり得る。この信号は、遅いタイミングの信号として特徴づけられ、ＣＬＫ２Ｘのクロックドメインを有する。
【０１８１】
Ｓ２ＰＩＣ＿ＲｄＸｆｅｒＤｏｎｅ（ＣＬＫ、中位）
この信号は、スレーブによってアサートされて、それが、読出データバスの使用を終え、すべての要求されるデータを転送したことを示す。この信号は、早いタイミングの信号として特徴づけられ、ＣＬＫのクロックドメインを有する。
【０１８２】
４．スレーブデバイスのタイミング
図９は、８ワード書込動作中のスレーブのタイミング図を示す。時間ｔ１において、スレーブは、アドレス要求（ｓ＿ａｄｄｒ＿ｒｅｑ）、アドレス（ｓ＿ａｄｄｒ［３１：０］）、およびアドレス修飾子（ｓ＿ａｄｄｒ＿ｑｕａｌ［］）を受取る。時間ｔ３では、スレーブは、アドレス肯定応答（ｓ＿ａｄｄｒ＿ａｃｋ）を生成し、マスタが別のトランザクションを進めることを可能にし、時間ｔ３では、データＤ１ｗの書込動作を始める。なお、この実施例では、時間ｔ７においてスレーブがデータＤ２ｗを書込む前に、２クロック（ｃｌｋ）サイクルのレイテンシが提供される。このレイテンシは、パイプライン方式に基づき、他の実施例では異なり得る。
【０１８３】
一旦スレーブが時間ｔ３において書込動作を開始すると、スレーブは、データを書込むために必要とされる時間（つまり、２クロック（ｃｌｋ）サイクル）の間、書込肯定応答（ｓ＿ｗｄａｔａ＿ａｃｋ［０］）をアサートする。言い換えると、スレーブは、すべてのデータを求め、それが実際にデータを受取る前に、書込トランザクションのサイズを肯定応答する。この様態で、一旦データの残り（つまり、データＤ２ｗ−Ｄ４ｗ）が受取られると、スレーブは、３ＤＤＲサイクルで、つまり、時間ｔ７−ｔ９で、このデータを書込み得る。スレーブが、時間ｔ９（１クロック（ｃｌｋ）サイクルのレイテンシ）でトランザクションのためのデータを受取ったことを確認した後、スレーブは、書込転送終了信号（ｓ＿ｗｘｆｅｒ＿ｄｏｎｅ）をマスタに戻す。なお、ＰＩＣは、書込データ要求を時間ｔ３−ｔ１１の間、アサートし、これは、スレーブに対するアクティブ書込期間を示す。
【０１８４】
図１０は、８ワード読出動作中のスレーブのタイミング図を示す。時間ｔ１において、スレーブは、アドレス要求（ｓ＿ａｄｄｒ＿ｒｅｑ）、アドレス（ｓ＿ａｄｄｒ［３１：０］）、およびアドレス修飾子（ｓ＿ａｄｄｒ＿ｑｕａｌ［］）を受取る。時間ｔ３において、スレーブは、アドレス肯定応答（ｓ＿ａｄｄｒ＿ａｃｋ）を生成し、マスタが別のトランザクションを進めることを可能にする。なお、スレーブは、マスタからの書込データを待っていないため、スレーブは、１クロック（ｃｌｋ）サイクルのレイテンシの後、時間ｔ５において、その読出動作をすぐに開始できる。
【０１８５】
一旦、時間ｔ５においてスレーブが読出動作を開始すると、スレーブは、データを読出すために必要とされる時間（つまり、２クロック（ｃｌｋ）サイクル）の間、読出肯定応答（ｓ＿ｒｄａｔａ＿ａｃｋ［０］）をアサートする。１クロック（ｃｌｋ）サイクルのレイテンシ後、スレーブは、読出転送終了信号（ｓ＿ｒｘｆｅｒ＿ｄｏｎｅ）をマスタに戻す。なお、スレーブは、読出データ要求を時間ｔ３−ｔ９の間、アサートし、これは、スレーブのためのアクティブ読出期間を示す。
【０１８６】
Ｂ．プログラマブルインターフェイスコア
図１１Ａおよび図１１Ｂは、ＰＩＣに関連するさまざまなアドレス／制御信号を含むプログラマブルインターフェイスコア（ＰＩＣ）内のアドレス／制御経路の一実施例を示す。図１１Ａおよび図１１Ｂでは、４つのマスタデバイスが示される。すなわち、ＤＣＵ  １１０１Ａ（ＣＰＵのデータキャッシュユニット）、ＩＣＵ  １１０１Ｂ（ＣＰＵの命令キャッシュユニット）、ＯＰＢスレーブ（ブリッジイン）１１０１Ｃ、および高速バスインターフェイス（ＨＳＢＩ）１１０１Ｄを示す。この実施例では、各マスタ１１０１は、その要求をファーストインファーストアウト（ＦＩＦＯ）レジスタ１１０４に提供する。したがって、マスタ１１０１からの要求は、ＦＩＦＯ１１０４内で待ち行列に入れられる。
【０１８７】
マスタデバイス１１０１Ａ内に示されるレジスタへの書込および活性化のための回路１１０２が、マスタデバイス１１０１Ｂ−１１０１Ｄにおいて繰返され得る。具体的には、各マスタデバイス１１０１は、論理ゲート１１０２、たとえば、（簡素化のために、１つのフリップフロップとして図示される）複数のフリップフロップ１１０３を活性化するためのＡＮＤゲートを含み得る。論理ゲート１１０２が受取る制御信号に基づいて、適切な制御信号が、レジスタ１１０４の書込イネーブル（ＷＥＮ）端子に提供される。レジスタ１１０４は、一杯のときは、そのＦＵＬＬ端子上で適切な論理信号をアサートし、これが次に論理ゲート１１０２に提供されて、レジスタ１１０４のＷＥＮを不活性化する。
【０１８８】
フリップフロップ１１０３も、トランザクションのためのアドレス修飾子およびアドレスを受取る。なお、フリップフロップ１１０３は、ＤＤＲ、つまり、ｃｌｋ２ｘで、この情報を受取り得、ＦＩＦＯ１１０４は、標準のＦＰＧＡクロック、つまり、ｃｌｋで、この情報を受取る。ＦＩＦＯ１１０４Ａ−１１０４Ｄは、それらのそれぞれのアドレスをＰＩＣ１１００内の複数のアドレスコンパレータ１１０５Ａ−１１０５Ｄに提供する。各アドレスコンパレータ１１０５は、その入来アドレスをデコードし、デコードされたアドレスをＦＰＧＡ内のスレーブデバイスの、その記憶されたアドレスと比較する。
【０１８９】
上述のように、一実施例では、アドレスの上位ビットのみが、スレーブデバイスを識別し、下位ビットは、スレーブデバイス内のメモリアドレスを識別する。この様態で、アドレスコンパレータ１１０５は、どのスレーブデバイスが要求されているのかを迅速に判断することができる。一旦「ヒット」が判断されると、つまり、要求されるスレーブが、トランザクションに対して識別されると、スレーブ識別情報が、複数のレジスタ１１０６に提供され、これらが、次に、情報をアービトレーション論理１１０８に転送する。なお、アドレスに関連するアドレス修飾子は、エンコードされず、したがって、アドレスコンパレータ１１０５を通過しない。一実施例では、アドレス修飾子は、ＦＩＦＯ１１０４からレジスタ１１０６へと直接転送され、次に、マルチプレクサ１１０７に転送される。
【０１９０】
マルチプレクサ１１０７は、どのアドレス修飾子が別のレジスタ１１０９セットに出力されるのかを選択的に選ぶ。なお、レジスタ１１０９は、レジスタ１１０６のように、この発明のパイプライン方式を提供し得る。この発明の他の実施例は、より少ない、またはより多くのレジスタを含み得る。マルチプレクサ１１０７は、ステートマシン１１１０によって制御され、これは、循環アービトレーション論理１１０８およびマルチプレクサ１１０７から入力を受取る（なお、一旦ステートマシン１１１０が適切なマスタを選択すると、ステートマシン１１１０は、選択されたマスタが読出または書込トランザクションを要求しているのかを知る必要がある）。最初、ステートマシン１１１０は、アイドル状態にあり、それは、（レジスタ１１０９を介して）スレーブデバイスに対し、１つの要求もペンディングでないことを伝える。アービトレーション論理１１０８によって提供される、選択されるアドレス要求を受けた後、ステートマシン１１１０は、「チャネル」がセットされるアドレス送信状態に入る。言換えると、ステートマシン１１１０は、トランザクションのための選択されたマスタデバイスを肯定応答し、アドレス要求およびアドレス修飾子を適切なスレーブデバイスに送り始める。一旦、スレーブデバイスがアドレス要求を受取ると、スレーブは、受取りを肯定応答し、ステートマシン１１１０をアイドル状態に再セットし得る。この様態で、ステートマシン１１１０は、次のトランザクションを見ることができる。なお、次のトランザクションが、現在のトランザクションに現在関与しているスレーブに対するものであるならば、現在のトランザクションが完了するまで、スレーブは、その肯定応答を送らない。
【０１９１】
図１２Ａおよび図１２Ｂは、この発明に従った書込データ経路に関連する回路の一実施例を示す。図１２Ａは、図１１Ａに示される同じ４つのマスタデバイスを示す。すなわち、ＤＣＵ  １１０１Ａ、ＩＣＵ  １１０１Ｂ、ＯＰＢスレーブ１１０１Ｃ、および高速バスインターフェイス（ＨＳＢＩ）１１０１Ｄを示す。この実施例では、各マスタ１１０１は、そのデータをファーストインファーストアウト（ＦＩＦＯ）レジスタ１２０４に提供する。したがって、マスタ１１０１からの要求は、ＦＩＦＯ１２０４内で待ち行列に入れられる。
【０１９２】
マスタデバイス１１０１Ａ内で示されるＦＩＦＯ１２０４にデータを転送するための回路が、マスタデバイス１１０１Ｂ−１１０１Ｄにおいて繰返され得る。具体的には、各マスタデバイス１１０１は、論理ゲート１２０２、たとえば、（簡素化のために、１つのフリップフロップとして図示される）複数のフリップフロップ１２０３を活性化するためのＡＮＤゲートを含み得る。論理ゲート１２０２が受取る制御信号に基づいて、適切な制御信号が、ＦＩＦＯ１２０４の書込イネーブル（ＷＥＮ）端子に提供される。
【０１９３】
フリップフロップ１２０３も、トランザクションのためのデータを受取る。なお、フリップフロップ１２０３は、この情報をＤＤＲ、つまり、ｃｌｋ２ｘで受取り得、ＦＩＦＯ１２０４は、この情報を標準のＦＰＧＡクロック、つまり、ｃｌｋで受取る。ＦＩＦＯ１２０４Ａ−１２０４Ｄは、それらのそれぞれのデータをパイプライン方式のために複数のレジスタ１２０５に提供し、次に、マルチプレクサ１２０６に提供する。なお、フリップフロップ対ＦＩＦＯの実現は、アプリケーションに依存し得る。たとえば、マスタが書込データの全ＤＤＲレートについていくことができる場合、フリップフロップが用いられ得る。しかしながら、マスタが全ＤＤＲレートについていくことができない場合、書込データはＦＩＦＯに送られ、マスタがそれ自体のペースで書込データを処理することが可能となり得る。
【０１９４】
マルチプレクサ１２０６は、どのデータがデータ経路に沿って別のパイプラインレジスタ１２１０に出力されるのかを選択的に選ぶ。なお、ＰＩＣ１２００のフルクロスポイント実現例では、ステートマシン１２０８、マルチプレクサ１２０６、およびパイプラインレジスタ１２１０が、各スレーブデバイスごとに繰返され得る。マルチプレクサ１２０６は、（フリップフロップ１２０９を介して）ステートマシン１２０８によって制御され、これは、このデータ経路が現在用いられているかを示すスレーブから入力を受取る。経路が用いられている場合（この場合には、論理１信号がアサートされる）、データ経路は、「ビジー」であり、ステートマシン１２０８は、別のマスタがその同じデータ経路上で書込動作を開始することを可能にしない。
【０１９５】
最初は、ステートマシン１２０８は、アイドル状態にあり、それは、スレーブデバイスに対して、１つの書込要求もペンディングでないことを伝える。なお、別のスレーブがそれを用いているために、書込データリソースがビジーである場合には、ステートマシン１２０８は、ＩＤＬＥでとどまらなければならない。書込要求を受けた後、ステートマシン１２０８は、転送状態に入り、（１つのスレーブデバイスに対するデータ経路に関連した）マルチプレクサ１２０６を活性化してデータを送る。一旦スレーブデバイスがデータを受取ると、スレーブは、適切な論理信号を論理（ＡＮＤ）ゲート１２１１に提供することによって、受取りを肯定応答し得る。なお、論理ゲート１２１１およびパイプラインレジスタ１２１２は、スレーブデバイスの数だけ繰返される。論理ゲート１２１１もマルチプレクサ選択信号を受ける。言換えると、論理ゲート１２１１のうちの１つのみが、マルチプレクサ選択信号と書込肯定応答との両方のためのアクティブ信号を受取る。次に、レジスタ１２１２の出力が、ＯＲゲート１２１３に提供され、これは、次に、書込肯定応答信号をマスタ１１０１のうちの１つ（この場合、マスタデバイス１１０１Ａ）に提供する。書込トランザクションが完了した後、スレーブは、書込転送終了信号をステートマシン１２０８に送り、ステートマシン１２０８がそのアイドル状態に再び入ることを可能にする。
【０１９６】
図１３Ａおよび図１３Ｂは、この発明に従った読出データ経路に関連する回路の一実施例を示す。図１３Ａでは、図１１Ａと同じ４つのマスタデバイスが示される。すなわち、ＤＣＵ  １１０１Ａ、ＩＣＵ  １１０１Ｂ、ＯＰＢスレーブ１１０１Ｃ、および高速バスインターフェイス（ＨＳＢＩ）１１０１Ｄが示される。この実施例では、マスタデバイス１１０１Ａおよび１１０１Ｂは、それぞれ、それらの読出データを受取るためのフリップフロップ１３０１Ａおよび１３０１Ｂを含み、マスタデバイス１１０１Ｃおよび１１０１Ｄは、それぞれ、それらの読出データを受取るためのファーストインファーストアウト（ＦＩＦＯ）レジスタ１３０２Ｃおよび１３０２Ｄを含む。なお、フリップフロップ対ＦＩＦＯの実現は、アプリケーションに依存し得る。たとえば、マスタが、読出データの全ＤＤＲレートについていくことができる場合には、フリップフロップが用いられ得る。しかしながら、マスタが全ＤＤＲレートについていくことができない場合には、データはＦＩＦＯに送られ得、マスタがそれ自体のペースで読出データを処理することが可能になる。
【０１９７】
最初は、ステートマシン１３０３は、アイドル状態にあり、それは、スレーブデバイスに対して、１つの読出要求もペンディングでないことを伝える。この状態は、ＯＲゲート１３０４に提供される複数の読出マルチプレクサ選択信号によって決定される。これらのマルチプレクサ選択信号のうちのいずれか１つがアクティブハイであって、読出データ経路がアクティブであることを示す場合、ステートマシン１３０３は、アイドル状態にとどまる。読出要求を受取り、かつ読出データ経路がインアクティブであることを確認した後、ステートマシン１３０３は、転送状態に入り、（１つのマスタデバイスに対するデータ経路に関連した）マルチプレクサ１３０７を活性化してデータを送る。なお、フリップフロップ１３０６は、読出データ経路内でパイプライン方式を提供する。したがって、スレーブデバイス（図示せず）とフリップフロップ１３０６との間、およびステートマシン１３０３とフリップフロップ１３０６との間で実質的に等しい遅延を保証するために、フリップフロップ１３０５が、フリップフロップ１３０６への制御経路内に加えられる。
【０１９８】
一旦スレーブデバイスが要求を受取ると、スレーブは、適切な論理信号を論理（ＡＮＤ）ゲート１３０８に提供することによって、要求を肯定応答し得る。なお、論理ゲート１３０８およびパイプラインレジスタ１３０９は、スレーブデバイスの数だけ繰返される。論理ゲート１３０８も、マルチプレクサ選択信号を受ける。言換えると、論理ゲート１３０８のうちの１つのみが、マルチプレクサ選択信号と読出肯定応答との両方のためのアクティブ信号を受ける。次に、レジスタ１３０９の出力がＯＲゲート１３１０に提供され、これは、次に、読出肯定応答信号をマスタ１１０１のうちの１つ（この場合、マスタデバイス１１０１Ａ）に提供する。書込トランザクションが完了した後、スレーブは、書込転送終了信号をステートマシン１２０８に送り、ステートマシン１２０８がそのアイドル状態に再び入ることを可能にする。
【０１９９】
重要なことには、図１１Ａ／１１Ｂ、図１２Ａ／１２Ｂ、および図１３Ａ／１３Ｂに示される回路によって例示されるように、この発明は、パイプラインレジスタ間の論理の量を最小にする。この様態で、アドレス／制御経路とデータ経路との両方が、「バランスをとる」。言換えると、両方の経路に沿った論理およびパイプラインレジスタは、均一に分配され、レジスタ（または、論理）間の遅延が実質的に同じになることが保証される。次に、このセットされたタイミングによって、経路の論理が簡素化され得る。
【０２００】
Ｃ．ＤＣＵ／ＩＣＵ：ＰＬＢに対するインターフェイス
図１４は、ＰＬＢに対するデータキャッシュユニット（ＤＣＵ）（または、命令キャッシュユニット（ＩＣＵ））インターフェイスの一実施例を示す。この種のインターフェイスは、当該技術分野では公知であり、設計内で用いられているＣＰＵに対してプロプラエタリである。なお、この発明は、いずれのＣＰＵにも適用可能であるため、インターフェイス１４００は、使用されるＣＰＵに基づいて変わり得る。図１４では、インターフェイス１４００は、ＩＢＭのパワーＰＣ  ４０５  ＣＰＵ用として示される。
【０２０１】
Ｄ．ブロックＲＡＭ：ＰＩＣに対するインターフェイス
図１５は、２つのポートＡおよびＢを有するブロックＲＡＭ（ＢＲＡＭ）１５０１を示し、各ポートは、それ自体のクロッキング、制御、アドレス、読出／書込機能、およびデータ幅を有し、独立した読出／書込能力を可能にする。この実施例では、ポートＢは、ＦＰＧＡ上のユーザ論理に結合され、ポートＡは、インターフェイス１５０２に結合される。インターフェイス１５０２は、有限ステートマシン（ＦＳＭ）１５０３を介して、ＰＩＣから信号を受け、ＰＩＣにさまざまな信号を提供する。次に、ＦＳＭ１５０３は、ＢＲＡＭ１５０１内のポートＡの書込イネーブルを制御する。インターフェイス１５０２は、カウンタ１５０４をさらに含み、ＰＩＣから複数のアドレスを受け取り、さらにはそのカウンタに基づいて、ある特定のアドレスを提供する。なお、このカウンタのロードおよびイネーブル機能も、ＦＳＭ１５０３によって制御される。この様態で、さまざまなアドレスがロードされ得るが、ＦＳＭ１５０３が、いつそれらがＢＲＡＭ１５０１に提供されるのかを決定する。ポートＡの書込および読出データ端子は、ＰＩＣに結合される。
【０２０２】
ＢＲＡＭ１５０１は、ポートＡとポートＢとの両方からの同じメモリセルの同時アクセスを可能にする。したがって、一方のポートが、所与のメモリセルに書込む場合、他方のポートは、その書込動作中は、同じメモリセルをアドレス指定できない。なお、競合の解消に取組むために、ユーザは、データコヒーレンシおよび同期の問題に対処するようにユーザ論理およびソフトウェアを設計し得る。
【０２０３】
Ｅ．ＯＰＢブリッジモジュール
１．ＯＰＢブリッジアウトモジュール
ＯＰＢ／ＢＯは、プログラマブルインターフェイスコア（ＰＩＣ）に対するスレーブデバイスおよびＯＰＢに対するマスタデバイスとして働くブリッジアウトモジュールである。図１６は、ブリッジアウトモジュール１６００の一実施例のハイレベル図を示し、これは、パイプラインアーキテクチャを用いて、それが高クロック周波数でＯＰＢマスタインターフェイス上で動作することを可能にする。一実施例では、ＯＰＢ／ＢＯは、ＰＩＣ側で６４ビットＤＤＲデータ経路をサポートし、ＯＰＢ側で３２ビットバイトイネーブル転送をサポートする。ブリッジアウトモジュール１６００は、論理１６０１を含んでＰＩＣ転送要求をデコードし、ＦＩＦＯ１６０２および１６０３を含んでトランザクションを待ち行列に入れる。具体的には、ダイナミックバイトイネーブルを備えた書込トランザクションは、ＦＩＦＯ１６０２および１６０３内で待ち行列に入れられて、ＯＰＢ転送が完了することを待たずに、ＰＩＣマスタ（図示せず）からデータをオフロードすることができる。ブリッジアウトモジュール１６００は、ＯＰＢマスタ１６０５の制御およびデータ経路論理の一部として含まれる複数のステータスレジスタも含む。これらのステータスレジスタは、ＰＩＣマスタによって開始されるトランザクションから結果として得られるいずれかのＯＰＢエラーを記録し得る。ＯＰＢマスタ１６０５は、エラーおよびビジー信号を適切に生成して各ＰＩＣマスタに戻す論理をさらに含む。
【０２０４】
ブリッジアウトモジュール１６００を含む書込動作では、プログラマブルインターフェイスコア（ＰＩＣ）は、論理１６０１によってデコードされる書込コマンド（スレーブ制御信号１６０６のうちの１つ）を発行する。ブリッジアウトモジュール１６００が別のトランザクションの実行にビジーではないと、デコード論理１６０１が判断すると、デコード論理１６０１は、データを書込データＦＩＦＯ１６０３に転送し始める。デコード論理１６０１は、アドレスおよび転送修飾子をアドレスＦＩＦＯ１６０２にもロードする。ブリッジアウトモジュール１６００は、ＦＩＦＯ１６０２／１６０３が一杯になったとき、さらなるいずれのデータ転送も停止する。一実施例では、書込データＦＩＦＯ１６０３は、６４ビット幅であるが、転送サイズに応じて、３２ビットまたは６４ビット幅の量のデータで書込まれ得る。
【０２０５】
ＯＰＢマスタ１６０５のポートに接続される別個の論理グループが、ペンディングトランザクションを求めてアドレスＦＩＦＯ１６０２をポーリングする。アドレスＦＩＦＯ１６０２が空でない場合、トランザクション要求がそこから読出される。アドレス、転送サイズ、および読出／書込情報が、ＯＰＢデータ転送プロセスを開始するＯＰＢマスタ１６０５内のステートマシンに送られる。ＯＰＢマスタ１６０５内のＯＰＢ転送論理は、ＯＰＢに対するバスアクセスを要求し、ＯＰＢマスタ１６０５にＯＰＢバスが許可された場合に書込転送を開始する。転送がバースト（つまり、１つよりも多いフルワード）である場合、（バスロックおよびシーケンシャルアドレス信号等の）適切な信号がアサートされてＯＰＢ書込バーストが実行される。書込データが、書込データＦＩＦＯ１６０３から転送されてデータをＯＰＢに供給する。転送が完了すると、アドレスＦＩＦＯ１６０２は、追加的な転送要求を求めて再びポーリングされる。いずれかの肯定応答またはタイムアウト状態が、ＢＥＡＲ／ＢＥＳＲ（図示せず）が更新された状態で、対応のＰＩＣマスタにシグナルバックされる。
【０２０６】
ブリッジアウトモジュール１６００を含む読出動作では、読出転送要求は、論理１６０１によってデコードされ、アドレスＦＩＦＯ１６０２内で、それが一杯でないと仮定して、待ち行列に入れられる。アドレスＦＩＦＯ１６０２をポーリングするＯＰＢマスタ１６０５内の論理は、ペンディング読出要求を認識し、ＯＰＢ上において読出転送を実行する。１つよりも多くのフルワードが読出されるべき場合、バースト読出動作が実行される。読出データは、フリップフロップ１６０４を介してＰＩＣマスタに戻される。再び、いずれかの肯定応答またはタイムアウト状態が、ＢＥＡＲ／ＢＥＳＲが更新された状態で、対応のＰＩＣマスタにシグナルバックされる。
【０２０７】
ＯＰＢとインターフェイスをとるＯＰＢマスタ１６０５内の論理は、好ましくは、設計のＯＰＢ性能目標を満たすように設計される。具体的には、ＯＰＢは、シングルサイクルハンドシェーキングプロトコルを用いるため、ＯＰＢマスタ１６０５の出力がフリップフロップから直接駆動されることが重要である。言換えると、最悪の事態の分析では、すべての信号は、遅いタイミングを有すると仮定されるべきであり、したがって、レジスタ駆動されてＯＰＢにおける最大伝搬時間を提供すべきである。加えて、一実施例では、ＯＰＢマスタ１６０５によって受取られている信号は、再びレジスタされる前に、１つ以下の論理レベルをトラバースし、信号がＯＰＢを通ってスレーブモジュールへと伝搬し、ブリッジアウトモジュール１６００に戻る時間量を最大にする。
【０２０８】
ブリッジアウトモジュール１６００では、アドレスおよび書込データＦＩＦＯ１６０２／１６０３は、高いクロックレートで実行するように設計され得る。一実施例では、ＦＩＦＯ設計は、シフトレジスタルックアップテーブル（ＳＲＬ）ＦＰＧＡプリミティブに基づいており、読出ポートと書込ポートとの間で同期的関係を必要とする。なお、ＳＲＬベースのＦＩＦＯの実現は、どのシフトレジスタタップがアクセスされるかを制御するアップ／ダウンカウンタを通例含む。カウンタは、ＦＩＦＯが書込まれるが、読出されない場合にカウントアップし、ＦＩＦＯが読出されるが、書込まれない場合に、カウントダウンする。他の様態では、カウンタは、変更されない。それらの簡素性のため、ＳＲＬベースのＦＩＦＯは、通例、いずれの保護メカニズムもサポートしない。したがって、空のときにＦＩＦＯが読出される場合、または一杯の状態でＦＩＦＯが書込まれる場合、回復不能なエラーが生じ得る。これを防ぐために、論理１６０１は、ＦＩＦＯ１６０２／１６０３が適切に用いられることを保証するように設計されるべきである。
【０２０９】
上述のように、ブリッジアウトモジュール１６００は、フルワードバイトイネーブル転送を用い得る。より高い性能およびより少ない面積を提供するために、ブリッジアウトモジュール１６００は、従来のＯＰＢデバイスによって用いられる「ダイナミックバスサイジング」機能を取除き得る。したがって、この実施例では、ブリッジアウトモジュール１６００に接続されるＯＰＢモジュールは、フルワードバイトイネーブル転送プロトコルを用い得る。
【０２１０】
しかしながら、ＦＰＧＡファブリックの観点では、ブリッジアウトモジュール１６００は、性能と論理使用との間で異なるトレードオフを提供するように、容易にカスタマイズされ得る。たとえば、ポストされる書込動作がサポートされない場合、アドレスＦＩＦＯ１６０２は除去され、書込データＦＩＦＯ１６０３は簡素化され得る。エラーおよびビジー信号を扱うＯＰＢマスタ１６０５内の論理を簡素化することによって、さらなる論理減少がなされ得る。なお、トランザクションをブリッジアウトモジュール１６００内で待ち行列に入れることはできないため、これらの変形例は、性能を低下させ得るが、面積を著しく減少させ得る。
【０２１１】
この発明の別の実施例に従うと、アドレスＦＩＦＯ１６０２および書込データＦＩＦＯ１６０３は、ＳＲＬ  ＦＩＦＯとともに設計される代わりに、ブロックＲＡＭ（ＢＲＡＭ）ベースのＦＩＦＯに変えられて、論理使用を減じる。さらに、ＢＲＡＭ  ＦＩＦＯは、より高いクロック対出力遅延を有し、達成され得る最大ＯＰＢクロックレートを潜在的に減じる。ＢＲＡＭ  ＦＩＦＯは、非同期ＦＩＦＯを実現するためにも用いられ得、ＯＰＢクロックがブリッジアウトモジュール１６００のクロックからデカップルされることを有利なことには可能にする。
【０２１２】
デカップリングが望まれる場合、最高の性能が必要とされないことを仮定して、ＯＰＢマスタ１６０５内の論理は、簡素で、容易な態様で設計され得る。具体的には、（ブリッジアウトモジュール１６００のクロックレートの半分等の）より遅いＯＰＢクロックレートでは、論理のうちの多くは、マルチサイクル経路を含むかまたはより多くの論理レベルが用いられることを可能にするように、設計され得、設計の論理使用を著しく減じる。
【０２１３】
２．ＯＰＢブリッジインモジュール
ＯＰＢ／ＢＩモジュールは、スレーブとしてＯＰＢトランザクション要求を受取り、マスタとして、それらの要求をＰＩＣ転送に変換する。図１７は、この発明に従ったブリッジインモジュール１７００の一実施例のハイレベル図を示す。ブリッジインモジュール１７００内では、ＯＰＢからトランザクションをオフロードするためにデータをバッファリングする書込データＦＩＦＯ１７０４にＯＰＢ書込データが記憶される。可変長バーストがＰＩＣスレーブモジュールによってサポートされない一実施例では、ＯＰＢバースト書込は、ＰＩＣ上で一連のシングルビートまたはキャッシュライン転送に変換され得る。ＯＰＢ読出の結果として、ＰＩＣスレーブモジュールに対して発行されるデータフェッチが得られる。バースト読出要求は、ブリッジインモジュール１７００に最大８ワードのデータプリフェッチを実行させる。ブリッジインモジュール１７００は、必要なクロックドメインおよびバス幅変換も実行して、ＰＩＣ６４ビットＤＤＲ読出／書込データ経路とＯＰＢ３２ビット非ＤＤＲ共有データ経路との間でデータを移動させ得る。
【０２１４】
書込動作では、ＯＰＢブリッジインモジュール１７００によって受取られるＯＰＢ上のトランザクションは、書込データＦＩＦＯ１７０４へとバッファリングされる。書込データＦＩＦＯ１７０４は、書込ポスティングをサポートして、トランザクションがＰＩＣ上で実行されている間にＯＰＢが停滞する(tied up)ことを防ぐ。書込トランザクションの行先アドレスおよび書込バーストの長さが、別個の書込要求ＦＩＦＯ１７０５に記録される。書込要求がブリッジインモジュール１７００内で完全に待ち行列に入れられた後、ＯＰＢトランザクションは完了し、ＯＰＢは、他のトランザクションに利用可能となる。書込データＦＩＦＯ１７０３または書込要求ＦＩＦＯ１７０５が一杯である場合、いずれかの追加の書込要求が、再試行信号が論理１７０１によりアサートされるようにする。
【０２１５】
アドレスポート制御論理１７０６内のステートマシンは、ペンディング書込トランザクションを求めて書込要求ＦＩＦＯ１７０５を連続的にポーリングする。書込要求ＦＩＦＯ１７０５が空ではないことを、制御論理１７０６が認識すると、待ち行列に入れられた書込トランザクションが取出され、処理される。ＯＰＢからの書込トランザクションは、いずれかのワード境界で開始し、最大３２ワード長になり得る。したがって、書込トランザクションは、ＰＩＣによってサポートされる一連のワードまたはキャッシュラインアラインド転送に変換され得る。この変換は、開始アドレスおよびバースト長を見て、用いられ得る最大のＰＩＣ転送サイズを計算する、制御論理１７０６内でも提供される要求アライメント論理の助けを用いて実行される。ＰＩＣ転送は、アドレスＦＩＦＯ１７１０へと入れられ、ここで、トランザクションは、ＰＩＣ（マスタ）ポート上で呈示され得る。完全なトランザクションセットがアドレスＦＩＦＯ１７１０にロードされるまで、元の書込バーストの任意の残りの部分は、反復的に制御論理１７０６を通して送られる。なお、この時点では、書込データは、待ち行列に入れられ、ＰＩＣにとって利用可能である。
【０２１６】
読出トランザクションは、ＰＩＣスレーブからの読出フェッチを制御し、さらにはデータをＯＰＢを通して戻す制御論理１７０６内の別個のステートマシンを通して扱われる。ＯＰＢ読出要求が非バーストである場合、シングルワード読出要求が、アドレスＦＩＦＯ１７１０にロードされる。ＯＰＢ読出要求がバースト動作である場合、ブリッジインモジュール１７００は、必要な最小のサイズの読出要求をアドレスＦＩＦＯ１７１０にロードすることによって、次の８ワードキャッシュライン境界までのデータをフェッチする。
【０２１７】
読出要求から戻されるデータは、ＰＩＣ６４ビットＤＤＲ読出データ経路をサポートするシフトレジスタ１７０９に記憶される。シフトレジスタ１７０９内のデータは、次に、（上で詳細に説明される）適切な３２ビットＯＰＢデータ経路へと多重伝送され、対応の転送肯定応答信号がアサートされる。８ワード境界を超えて続く読出バーストについては、新しい８ワードキャッシュライン要求が、ＰＩＣを介して次の記憶場所に対して作成されてバーストを続ける。ブリッジインモジュール１７００がデータをキャッシュしない一実施例では、たとえデータが前のトランザクションから利用可能であったとしても、各読出は、新しいＰＩＣトランザクション要求を必要とする。なお、ＰＩＣからのいずれかの読出エラーにより、ＯＰＢエラー肯定応答信号がアサートされ得る（図示されないが、シフトレジスタ１７０９の論理によってキャプチャされ得る）。一実施例では、論理１７０１は、それが読出データが戻されるのを待つ間、タイムアウト抑制をアサートし得る。この機能は、ＰＩＣトランザクションが完了するために不確定な量の時間がかかり得るため、有益である。
【０２１８】
書込制御論理１７０３および１７０７の一部を形成するアドレスデコーダ論理は、ＰＩＣから複製され、ブリッジインモジュール１７００は、ＰＩＣ側に存在することが知られているアドレスのためのトランザクションのみを受入れる。この様態で、ブリッジインモジュール１７００は、アドレスエラーを生成することを妨げられ、さらにはブリッジアウトモジュール（図１６参照）を備えたフィードバックループを引起こすことを妨げられる。さらに、この複製によって、ブリッジインモジュールとブリッジアウトモジュールとの間のＰＩＣ接続経路が取除かれることも可能となり、貴重な論理リソースが節約される。
【０２１９】
アドレスＦＩＦＯ  １７１０、書込要求ＦＩＦＯ  １７０５、および書込データＦＩＦＯ  １７０４は、高いクロックレートで実行されるように設計され得る。具体的には、一実施例では、これらのＦＩＦＯは、読出ポートと書込ポートとの間で同期的な関係を必要とするシフトレジスタルックアップテーブル（ＳＲＬ）ＦＰＧＡプリミティブに基づき得る。上述のように、それらの簡素化のために、ＳＲＬベースのＦＩＦＯは、通例、いずれの保護メカニズムもサポートしない。したがって、空のときにＦＩＦＯが読出される場合、または一杯であるときにＦＩＦＯが書込まれる場合、回復不能なエラーが生じ得る。これを防ぐために、論理１７０６／１７０３／１７０７は、ＦＩＦＯ１７１０／１７０５／１７０４が適切に用いられることを保証するように設計されるべきである。
【０２２０】
ブリッジインモジュール１７００内のＰＩＣマスタポートの高クロック周波数は、設計のタイミング要件を満たすことを困難にし得る。したがって、２Ｘクロックドメインで動作するか、または１Ｘクロックの経路に敏感な(sensitive)論理は、フリップフロップ間に最大１論理レベルが存在するように、慎重に設計されなければならない。この設計制約によって、タイミングを改善する助けとなり得る特定のＦＰＧＡプリミティブおよび／または効率的な論理構造の使用が促進される。
【０２２１】
この発明の一実施例では、読出プリフェッチサイズは、８ワードから１６（または、３２）ワードへと増大し、長いＯＰＢ読出バーストが一般的である場合に、ブリッジインモジュール１７００の効率を改善する。なお、短いＯＰＢバースト読出は、より高いレイテンシを経験し得る。したがって、設計者は、何が最適なプリフェッチサイズであるかを決定しなければならない。有利なことには、この発明は、追加的な論理をほとんど用いることなく１６または３２ワードプリフェッチを用いるように変更され得る。具体的には、上述のように、ＰＩＣからの読出データは、６４ビット幅ＳＲＬアレイに記憶され得る。各ＳＲＬは、本質的には１６のレジスタの深さ(deep)であるため、３２ワードの読出データのための十分な記憶部分が既に存在する。したがって、この場合、ユーザは、読出データ多重論理を変更し、読出ステートマシン論理を修正して、より長い読出要求をアドレスＦＩＦＯ１７１０にロードし得る。
【０２２２】
この発明の別の実施例では、書込要求ＦＩＦＯ１７０５が除去されて、設計内で用いられる論理の量が減じられ得る。しかしながら、このＦＩＦＯの除去は、書込ポスティング機能をディセーブルにし得る。書込ポスティング機能をディセーブルにすることは、ＰＩＣ上のペンディングトランザクションにより停止される書込トランザクションのために、ＯＰＢ性能を減じるおそれがある。
【０２２３】
書込データＦＩＦＯ１７０４内の制御論理は、多量の冗長論理を用いる。この冗長性は、ファンアウトを減じ、ＦＩＦＯ１７０４が所望のＤＤＲクロックレートまでランすることを可能にする。より低いクロック速度では、この冗長制御論理のうちの多くが除去され得る。加えて、タイミング制約が緩和されている場合には、図１７のレジスタ１７１１、１７０２、および１７０８等のいくつかの読出データ経路パイプラインレジスタも取出されて、レイテンシおよびリソース使用が減じられ得る。
【０２２４】
Ｆ．ハイブリッドプログラマブルインターフェイスコア
この発明の別の実施例では、プログラマブルインターフェイスコア（ＰＩＣ）は、上で詳細に説明されたクロスポイントスイッチに加えて、共有バスの要素を含む。読者の便宜を図って、図１８Ａおよび図１８Ｂは、それぞれ、共有バスアーキテクチャのアドレス／制御経路およびデータ経路を示す。図１８Ａに示されるように、アドレス／制御経路のための共有バス１８００Ａは、マスタデバイス１８０１のアドレス／制御信号を受取るアービタ１８０３を提供することによって、実現され得る。一旦、アクセスアービタ１８０３が、どのマスタデバイス１８０１が選択されてそのトランザクションを進めるべきかを決定すると、要求は、すべてのスレーブデバイス１８０２に送られる。各スレーブデバイス１８０２は、アドレス／制御情報をデコードし、それがそのトランザクションのための要求されるスレーブであるかを判断する。図１８Ｂを参照して、データ経路用の共有バス１８００Ｂは、マスタデバイス１８０１から書込データを受取る単一の書込マルチプレクサ１８０４を提供することによって、実現され得る。共有バス内では、すべてのスレーブデバイス１８０２が、選択される書込データを受取るが、１つのスレーブデバイス１８０２しか、実際にはデータを書込まない。読出動作では、スレーブデバイス１８０２は、そのスレーブデバイスが読出トランザクションにおいてアクティブでない限りは、論理０信号を出力し得る。この様態で、ＯＲゲート１８０５は、読出情報を読出マルチプレクサ１８０６に転送する。制御回路は、図示されていないが、書込動作を完了するために、どの書込データが書込マルチプレクサ１８０４によって選択されるのかを決定し、さらには、読出動作を完了するために、どの読出マルチプレクサ１８０６が選択されるのかを決定する。
【０２２５】
図１９Ａおよび図１９Ｂは、それぞれ、この発明の別の実施例に従ったハイブリッドクロスポイント／共有バスアーキテクチャのアドレス／制御経路およびデータ経路を示す。図１９Ａに示されるように、アドレス／制御経路用のハイブリッドスイッチ１９００Ａは、それぞれ、マスタデバイス１９０１Ａ−１９０１Ｄからアドレス／制御情報を受取るための複数のアドレスデコーダ１９１１Ａ−１９１１Ｄを含む。ハイブリッドスイッチ１９００Ａ内では、３つのアクセスアービタ１９１２Ａ−１９１２Ｃが、アドレスデコーダ１９１１Ａ−１９１１Ｄから、デコードされたアドレスを受取り得る。アクセスアービタ１９１２Ｃは、２つのスレーブデバイス１９２２Ａおよび１９２２Ｂのためのアービトレーションを決定する。この実施例では、アクセスアービタ１９１２Ｃに結合される共有バスのために、スレーブデバイス１９２２Ａおよび１９２２Ｂのうちの１つのみが、トランザクション内でアクティブになり得る。スレーブデバイス１９０２Ａおよび１９０２Ｂとは異なり、スレーブデバイス１９２２Ａおよび１９２２Ｂは、デコーディング論理を含んで、それらのうちのどれがトランザクションのために選択されたのかを判断しなければならない。なお、ハイブリッドスイッチ１９００Ａの共有バス部分では、パイプラインレジスタが除去された。
【０２２６】
図１９Ｂに示されるように、データ経路用のハイブリッドスイッチ１９００Ｂは、複数の読出マルチプレクサ１９１９を含み、その１つ１つは、各マスタデバイス１９０１用である。なお、スレーブデバイス１９０２Ｃおよび１９０２Ｄは、クロスポイントスイッチ（図５Ｃ参照）内でのように読出マルチプレクサ１９０１に直接出力を提供する代わりに、論理（ＯＲ）ゲート１９３０に出力を提供する。したがって、ハイブリッドスイッチ１９００Ｂ内では、任意の時点において、１つのスレーブデバイス１９０２Ｃまたは１９０２Ｄしか、読出情報をマスタデバイス１９０１に提供し得ない。この実施例では、スレーブデバイス１９０２Ｃおよび１９０２Ｄのうちのインアクティブスレーブデバイスが、論理０を出力し得る。ハイブリッドスイッチ１９００Ｂは、スレーブデバイス１９０２の数に満たない、複数の書込マルチプレクサ１９１４Ａ−１９１４Ｃも含む。したがって、スレーブデバイス１９０２Ｃと１９０２Ｄとの両方が、書込マルチプレクサ１９１４Ｃによって提供される書込データを受取る。（アクセスアービタ１９１２Ｃによって提供されるアドレスにより決定されるような（図１９Ａ参照））選択されるスレーブデバイス１９０２は、データを書込み、選択されていないスレーブデバイス１９０２は、データを無視する。
【０２２７】
重要なことには、ハイブリッドスイッチ１９００Ａ／１９００Ｂ内のマスタプロトコルおよびスレーブプロトコルの両方が、クロスポイントスイッチ５００Ａ／５００Ｂに関して上で詳細に説明されたように同じままであり得る。しかしながら、一実施例では、再アービトレートポートが追加されて、ハイブリッドスイッチの共有バス部分上のデッドロックが防がれ得る。なお、ハイブリッドスイッチ１９００Ａ／１９００Ｂは、クロスポイントスイッチのように、不必要な経路をなくすためにトリミングされ得る。したがって、たとえば、マスタデバイス１９０１Ｂ（つまり、ＩＣＵ）に関連する書込経路が、トリミングされ得る。
【０２２８】
ハイブリッドスイッチ１９００Ａ／１９００Ｂは、フルクロスポイントスイッチと比較して、用いられるリソースの数を減じ得る。具体的には、ハイブリッドスイッチ内で用いられる論理ゲートは、クロスポイントスイッチのマルチプレクサよりも、より少ないリソースを用いる。しかしながら、この利点は、潜在的な性能低下とバランスをとらなければならない。一実施例では、この発明は、第２のスレーブデバイスセットよりも遅い第１のスレーブデバイスセットが、ハイブリッドスイッチの共有バス部分を用いるように構成され得、第２のスレーブデバイスセットがハイブリッドスイッチのクロスポイント部分を用いるように構成され得ることを決定し得る。ＦＰＧＡ環境では、システム設計者は、共有バス／クロスポイントスイッチリソースの適切な混合を容易に決定して性能を最大にし、面積を最小にすることができる。
【０２２９】
Ｇ．ソフトウェアツール
この発明に従うと、プログラマブルロジックデバイス（ＰＬＤ）のためのコンフィギュレーションビットストリームを生成するための方法が提供される。この方法は、図３を参照しながら説明されるシステムに容易に組込まれ得る。具体的には、この発明の方法は、コアジェネレータを活性化することと、コアジェネレータを用いてプログラマブルインターフェイスコアを選択することと、コンフィギュレーションビットストリームを生成するＰＬＤソフトウェアツールにプログラマブルインターフェイスコアを提供することとを含む。ＰＬＤソフトウェアは、この発明のプログラマブルインターフェイスを受取ることに加えて、ユーザが提供するトップレベル設計を受取ることができる。重要なことには、プログラマブルインターフェイスコアは、複数のコンプライアンスレベルを選択的に提供することができる。たとえば、プログラマブルインターフェイスコアは、上で詳細に説明されたように、プロセッサローカルバス（ＰＬＢ）機能のサブセットを提供し得る。一実施例では、プログラマブルインターフェイスコアは、トップレベル設計が必要とする機能にサブセットを調整することができる。
【０２３０】
ここで提供されるこの発明の説明は、例示にすぎず、限定ではない。具体的には、この発明のさまざまな実施例が、上で詳細に説明された。これらの実施例の変形例は、当業者には明らかであろう。したがって、この発明の範囲は、添付の請求項によってのみ規定され得る。
【図面の簡単な説明】
【０２３１】
【図１】中央処理装置、プロセッサローカルバス、およびオンチップ周辺バスを含むマイクロプロセッサを示す、簡素化された図である。
【図２】この発明の譲受人が販売するバーテックスＦＰＧＡ内のコンフィギャラブルロジックブロックを示す、簡素化されたブロック図である。
【図３】ＦＰＧＡ内の１つ以上のコアを用いるための１つのＩＰプロセスレイアウトを示す図である。
【図４】この発明に従った基本的な組込用プロセッサＦＰＧＡシステムを示す図である。
【図５Ａ】この発明に従った４×４クロスポイントスイッチを示す簡素化された図である。
【図５Ｂ】アドレス論理内での図５Ａのクロスポイントスイッチの一実現例を示すより詳細な図である。
【図５Ｃ】データ論理内での図５Ａのクロスポイントスイッチの一実現例を示すより詳細な図である。
【図５Ｄ】アドレス／制御論理がトリミングされる図５Ｂのクロスポイントスイッチの一実施例を示す図である。
【図５Ｅ】データ論理がトリミングされる図５Ｃのクロスポイントスイッチの一実施例を示す図である。
【図６】本発明のプログラマブルインターフェイスコアおよびマスタデバイスのために提供されるポートと、このようなポート間で転送され得る信号との全体像を示す図である。
【図７】８ワード書込動作およびその後に続く８ワード読出動作中のマスタのタイミング図である。
【図８】本発明のプログラマブルインターフェイスコアおよびスレーブデバイスのために提供されるポートと、このようなポート間で転送され得る信号との全体像を示す図である。
【図９】８ワード書込動作中のスレーブのタイミング図である。
【図１０】８ワード読出動作中のスレーブのタイミング図である。
【図１１Ａ】この発明に従ったプログラマブルインターフェイスコア内のアドレス／制御論理の一実施例であって、経路が、コアに関連するさまざまなアドレス／制御信号を含む、一実施例を示す図である。
【図１１Ｂ】この発明に従ったプログラマブルインターフェイスコア内のアドレス／制御論理の一実施例であって、経路が、コアに関連するさまざまなアドレス／制御信号を含む、一実施例を示す図である。
【図１２Ａ】この発明に従った書込データ論理に関連する回路の一実施例であって、論理は、コアに関連するさまざまな書込信号を含む、一実施例を示す図である。
【図１２Ｂ】この発明に従った書込データ論理に関連する回路の一実施例であって、論理は、コアに関連するさまざまな書込信号を含む、一実施例を示す図である。
【図１３Ａ】この発明に従った読出データ論理に関連する回路の一実施例であって、論理は、コアに関連するさまざまな読出信号を含む、一実施例を示す図である。
【図１３Ｂ】この発明に従った読出データ論理に関連する回路の一実施例であって、論理は、コアに関連するさまざまな読出信号を含む、一実施例を示す図である。
【図１４】プロセッサローカルバスに対する命令キャッシュユニットまたはデータキャッシュユニットのインターフェイスの一実施例を示す図である。
【図１５】この発明のプログラマブルインターフェイスコアに対するデュアルポート機能を有するブロックＲＡＭ（ＢＲＡＭ）のインターフェイスを示す図である。
【図１６】この発明に従ったプログラマブルインターフェイスコア内のブリッジアウトモジュールの一実施例を示すハイレベル図である。
【図１７】この発明に従ったプログラマブルインターフェイスコア内のブリッジインモジュールの一実施例を示すハイレベル図である。
【図１８Ａ】共有バスアーキテクチャのアドレス／制御論理を示す図である。
【図１８Ｂ】共有バスアーキテクチャのデータ論理を示す図である。
【図１９Ａ】この発明の一実施例に従ったハイブリッドクロスポイント／共有バスアーキテクチャのアドレス／制御論理を示す図である。
【図１９Ｂ】この発明の一実施例に従ったハイブリッドクロスポイント／共有バスアーキテクチャのデータ論理を示す図である。
【図１】
2004529581.tif 000010
【図２】
2004529581.tif 000011
【図３】
2004529581.tif 000012
【図４】
2004529581.tif 000013
【図５Ｂ】
2004529581.tif 000014
【図５Ｄ】
2004529581.tif 000015
【図６】
2004529581.tif 000016
【図７】
2004529581.tif 000017
【図８】
2004529581.tif 000018
【図９】
2004529581.tif 000019
【図１０】
2004529581.tif 000020
【図１１Ａ】
2004529581.tif 000021
【図１１Ｂ】
2004529581.tif 000022
【図１２Ａ】
2004529581.tif 000023
【図１２Ｂ】
2004529581.tif 000024
【図１３Ａ】
2004529581.tif 000025
【図１３Ｂ】
2004529581.tif 000026
【図１４】
2004529581.tif 000027
【図１５】
2004529581.tif 000028
【図１６】
2004529581.tif 000029
【図１７】
2004529581.tif 000030
【図１８Ａ】
2004529581.tif 000031
【図１９Ａ】
2004529581.tif 000032
【国際公開パンフレット】
2004529581.tif 000033
2004529581.tif 000034
2004529581.tif 000035
2004529581.tif 000036
2004529581.tif 000037
2004529581.tif 000038
2004529581.tif 000039
2004529581.tif 000040
2004529581.tif 000041
2004529581.tif 000042
2004529581.tif 000043
2004529581.tif 000044
2004529581.tif 000045
2004529581.tif 000046
2004529581.tif 000047
2004529581.tif 000048
2004529581.tif 000049
2004529581.tif 000050
2004529581.tif 000051
2004529581.tif 000052
2004529581.tif 000053
2004529581.tif 000054
2004529581.tif 000055
2004529581.tif 000056
2004529581.tif 000057
2004529581.tif 000058
2004529581.tif 000059
2004529581.tif 000060
2004529581.tif 000061
2004529581.tif 000062
2004529581.tif 000063
2004529581.tif 000064
2004529581.tif 000065
2004529581.tif 000066
2004529581.tif 000067
2004529581.tif 000068
2004529581.tif 000069
2004529581.tif 000070
2004529581.tif 000071
2004529581.tif 000072
2004529581.tif 000073
2004529581.tif 000074
2004529581.tif 000075
2004529581.tif 000076
2004529581.tif 000077
2004529581.tif 000078
2004529581.tif 000079
2004529581.tif 000080
2004529581.tif 000081
2004529581.tif 000082
2004529581.tif 000083
2004529581.tif 000084
2004529581.tif 000085
2004529581.tif 000086
2004529581.tif 000087
2004529581.tif 000088
2004529581.tif 000089
2004529581.tif 000090
2004529581.tif 000091
2004529581.tif 000092
2004529581.tif 000093
2004529581.tif 000094
2004529581.tif 000095
2004529581.tif 000096
2004529581.tif 000097
2004529581.tif 000098
2004529581.tif 000099
2004529581.tif 000100
2004529581.tif 000101
2004529581.tif 000102
2004529581.tif 000103
2004529581.tif 000104
2004529581.tif 000105
2004529581.tif 000106
2004529581.tif 000107
2004529581.tif 000108
2004529581.tif 000109
2004529581.tif 000110
2004529581.tif 000111
2004529581.tif 000112
2004529581.tif 000113
2004529581.tif 000114
2004529581.tif 000115
2004529581.tif 000116
2004529581.tif 000117
2004529581.tif 000118
2004529581.tif 000119
2004529581.tif 000120
2004529581.tif 000121
2004529581.tif 000122
2004529581.tif 000123
2004529581.tif 000124
2004529581.tif 000125
2004529581.tif 000126
2004529581.tif 000127
2004529581.tif 000128
2004529581.tif 000129
2004529581.tif 000130
2004529581.tif 000131
2004529581.tif 000132
2004529581.tif 000133
2004529581.tif 000134
2004529581.tif 000135
2004529581.tif 000136
2004529581.tif 000137
2004529581.tif 000138
2004529581.tif 000139
2004529581.tif 000140
【国際調査報告】
2004529581.tif 000141
2004529581.tif 000142
2004529581.tif 000143