JP2004508617A - ソフトウェアが設計されたインターネット再構成可能ハードウェアのシステム、方法、及び製造物 - Google Patents

ソフトウェアが設計されたインターネット再構成可能ハードウェアのシステム、方法、及び製造物 Download PDF

Info

Publication number
JP2004508617A
JP2004508617A JP2002514570A JP2002514570A JP2004508617A JP 2004508617 A JP2004508617 A JP 2004508617A JP 2002514570 A JP2002514570 A JP 2002514570A JP 2002514570 A JP2002514570 A JP 2002514570A JP 2004508617 A JP2004508617 A JP 2004508617A
Authority
JP
Japan
Prior art keywords
fpga
logic device
configuration data
application
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002514570A
Other languages
English (en)
Inventor
ウィルソン, アレックス
アプリービー‐アリス, ジョン, ドミニク, オリバー
Original Assignee
セロキシカ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by セロキシカ リミテッド filed Critical セロキシカ リミテッド
Publication of JP2004508617A publication Critical patent/JP2004508617A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Telephonic Communication Services (AREA)
  • Digital Computer Display Output (AREA)
  • Computer And Data Communications (AREA)

Abstract

プログラマブルロジックデバイスをネットワーク・ベースで構成するシステム、方法、及び製造物が提供される。デフォルトのアプリケーションがプログラマブルロジックデバイス上でイニシエートされる。構成データのファイル要求が、ロジックデバイスから、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバへ送られる。構成データは、ネットワーク・サーバから受け取られる。構成データは、ロジックデバイスを構成して第2のアプリケーションを走らせるために使用される。第2のアプリケーションはロジックデバイス上で走る。
【選択図】図1

Description

【0001】
【発明の分野】
本発明は、再構成可能なロジックデバイスに関しており、更に具体的には、ロジックデバイスをネットワーク・ベースで構成することに関する。
【0002】
【発明の背景】
ソフトウェア制御のマシンは、適切なソフトウェアを使用することによって多くの異なった所望の目的に適合化される点で大きな柔軟性を提供することがよく知られている。ソフトウェア制御のプロセッサは、周知の汎用コンピュータで使用されるだけでなく、現在では、多くの製品、例えば、自動車、電話、及び他の家庭製品で使用される。その場合、そのようなプロセッサは組み込みシステムとして知られている。
【0003】
しかし、所与の機能については、ソフトウェア制御プロセッサは、通常、その機能に専用のハードウェアよりも遅い。この問題を克服する1つの方法は、特別のソフトウェア制御プロセッサ、例えば、RISCプロセッサを使用することである。RISCプロセッサは、そのパラメータ(例えば、サイズ、命令セットなど)を所望の機能へ調整することによって、限定された目的へ、より早く機能するように作ることができる。
【0004】
しかし、ハードウェアが使用される場合、それは操作のスピードを増大させても柔軟性を欠いている。例えば、ハードウェアは、それが設計されたタスクには適しているかも知れないが、後でそのタスクの修正バージョンが所望されたときには適していないかも知れない。現在では、再構成可能なロジック回路、例えば、フィールドプログラマブルゲートアレイ(FPGA)上で、ハードウェアを形成することができる。FPGAは、異なった様式で反復的に再構成されることのできるロジック回路である。従って、再構成可能ロジック回路は、専用ハードウェアのスピードの利点を提供し、また後の更新又は多数の機能に適した或る程度の柔軟性を提供する。
【0005】
しかし、一般的に、設計者はスピードと汎用性を正しくバランスさせる問題に直面することが分かるであろう。設計者は、ソフトウェアで制御されて多くの異なった機能を比較的遅く実行する汎用チップを製作するか、タスクの限定されたセットのみを早く実行するアプリケーション専用チップを案出することができる。
【0006】
これらの問題の妥協的解決法は、専用ハードウェアとソフトウェアを結合するシステムで見出すことができる。ハードウェアは、特定の機能、例えば、スピードを要求する機能で専用に使用され、ソフトウェアは残りの機能を実行することができる。そのようなシステムの設計は、ハードウェア・ソフトウェアの共設計(codesign)として知られる。
【0007】
設計プロセスにおいて、設計者は、所望の機能を有する目標システムのために、どの機能をハードウェアで実行させ、どの機能をソフトウェアで実行させるかを決定しなければならない。これは設計の区分化として知られる。そのようなシステムは高度に効率的であるが、設計者はソフトウェア設計及びハードウェア設計の双方に精通していなければならない。もしソフトウェアだけに精通し、構成可能なロジック・リソースの柔軟性を利用できる人々が、そのようなシステムを設計できるならば有利であろう。更に、構成データを選択及び転送するための直観的で人間工学的なインタフェースを、そのようなシステムの中へ実現することは有利であろう。
【0008】
【発明の概要】
プログラマブルロジックデバイスをネットワーク・ベースで構成するシステム、方法、及び製造物が提供される。デフォルトのアプリケーションがプログラマブルロジックデバイス上でイニシエートされる。構成データのファイル要求が、ロジックデバイスから、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバへ送られる。構成データは、ネットワーク・サーバから受け取られ、ビットファイルの形式であることができる。構成データは、ロジックデバイスを構成して第2のアプリケーションを走らせるために使用される。第2のアプリケーションはロジックデバイス上で走る。
【0009】
本発明の1つの実施形態によると、ロジックデバイスは1つ又は複数のフィールドプログラマブルゲートアレイ(FPGA)を含む。好ましくは、第1のFPGAは、構成データを受け取り、第2のFPGAを構成するためにそのデータを使用する。第1及び第2のFPGAは、異なったスピードで刻時されることができる。
【0010】
本発明の他の実施形態によると、デフォルトのアプリケーション及び第2のアプリケーションの双方が、ロジックデバイス上で同時に走ることができる。ロジックデバイスは、更に、ディスプレイスクリーン、タッチスクリーン、オーディオ・チップ、イーサネット・デバイス、パラレルポート、シリアルポート、RAMバンク、不揮発性メモリ、及び/又は他のハードウェア・コンポーネントを含むことができる。
【0011】
本発明は、方法を実行するプログラム・コード手段を含むコンピュータ・プログラムへ拡張される。
【0012】
本発明は、実施形態の以下の詳細な説明が考察されるとき、より良好に理解されるであろう。そのような説明は、添付の図面を参照する。
【0013】
【好適な実施形態の詳細な説明】
本発明によるシステムの好適な実施形態は、好ましくは、パーソナル・コンピュータ、例えば、IBM互換パーソナル・コンピュータ、アップル・マッキントッシュ・コンピュータ、又はUNIXベース・ワークステーションの環境で実施される。代表的ハードウェア環境は、図1に示される。図1は好適な実施形態によるワークステーションの典型的なハードウェア構成を示し、中央処理装置110、例えば、マイクロプロセッサ、及びシステム・バス112を介して接続された多数の他の装置を有する。図1に示されるワークステーションは、ランダム・アクセス・メモリ(RAM)114、読み出し専用メモリ(ROM)116、周辺装置、例えばディスク記憶装置120をバス112へ接続するI/Oアダプタ118、キーボード124、マウス126、スピーカ128、マイクロフォン132、及び/又は他のユーザ・インタフェース装置、例えばタッチスクリーン(図示されていない)をバス112へ接続するユーザ・インタフェース・アダプタ122、ワークステーションを通信ネットワーク(例えば、データ処理ネットワーク)へ接続する通信アダプタ134、及びバス112をディスプレイ装置138へ接続するディスプレイ・アダプタ136を含む。ワークステーションは、更に、フィールドプログラマブルゲートアレイ(FPGA)140、及びその上の完全又は部分的オペレーティング・システム、例えば、Microsoft Windows NT又はWindows/98オペレーティング・システム(OS)、IBM OS/2オペレーティング・システム、MAC OS、又はUNIXオペレーティング・システムを含む。当業者は、本発明が前記のプラットフォーム及びオペレーティング・システムとは異なったもので実施されてよいことを理解するであろう。
【0014】
好適な実施形態は、JAVA、C、及びC++言語を使用して書かれ、オブジェクト指向プログラミング方法を利用する。オブジェクト指向プログラミング(OOP)は、複雑なアプリケーションを開発するために使用されることが多くなってきた。OOPがソフトウェア設計及び開発の主流となるにつれて、様々なソフトウェア解決法は、OOPの利点を利用するための適合化を必要とする。OOPのこの原理を電子メッセージング・システムのメッセージング・インタフェースへ適用して、メッセージング・インタフェースのための一組のOOPクラス及びオブジェクトを提供できるようにする必要がある。
【0015】
OOPは、オブジェクトを使用してコンピュータ・ソフトウェアを開発するプロセスであり、問題を分析し、システムを設計し、プログラムを構造化するステップを含む。オブジェクトとは、データ及び関連の構造及び手順の集合を含むソフトウェア・パッケージである。オブジェクトは、データ及び構造並びに手順の集合を含むので、その特別のタスクを実行するために他の追加の構造、手順、又はデータを必要としない自給自足のコンポーネントとして考えることができる。従って、OOPは、コンピュータ・プログラムを、オブジェクトと呼ばれる非常に自立的なコンポーネントの集合として考える。オブジェクトの各々は特定のタスクに責任を有する。このように、データ、構造、及び手順を1つのコンポーネント又はモジュールへ一緒にパッケージする概念は、カプセル化と呼ばれる。
【0016】
一般的に、OOPコンポーネントは、再使用可能なソフトウェア・モジュールである。このモジュールは、オブジェクト・モデルに合致したインタフェースを与え、コンポーネント統合アーキテクチャによって実行時にアクセスされる。コンポーネント統合アーキテクチャは、異なった処理空間にあるソフトウェア・モジュールが相互の能力又は機能を利用できるようにする一組のアーキテクチャ・メカニズムである。これは、一般的に、アーキテクチャを構築する共通のコンポーネント・オブジェクト・モデルを想定することによって行なわれる。この時点で、オブジェクトと、オブジェクトのクラスとを区別しておくことが必要である。オブジェクトとは、オブジェクトのクラスの1つのインスタンスである。オブジェクトのクラスは、多くの場合、単にクラスと呼ばれる。オブジェクトのクラスは、青写真と考えることができる。1つの青写真から多くのオブジェクトを形成することができる。
【0017】
OOPは、プログラマが他のオブジェクトの一部分であるオブジェクトを作り出すことを可能にする。例えば、ピストンエンジンを表すオブジェクトは、ピストンを表すオブジェクトと組成関係を有すると言われる。現実には、ピストンエンジンはピストン、バルブ、及び他の多くのコンポーネントを含む。ピストンがピストンエンジンの1つの要素である事実は、2つのオブジェクトによって、OOPの中で論理的及び意味的に表されることができる。
【0018】
OOPは、更に、他のオブジェクト「から垂れ下がる(depends from)」オブジェクトの作成を可能にする。2つのオブジェクトが存在し、1つのオブジェクトはピストンエンジンを表し、他のオブジェクトはピストンがセラミックから作られたピストンエンジンを表す場合、2つのオブジェクトの関係は組成の関係ではない。セラミック・ピストンエンジンは、ピストンエンジンを作り上げていない。むしろ、それは単に、ピストンエンジンよりも1つだけ多い限定、即ち、そのピストンはセラミックから作られているという限定を有する一種のピストンエンジンである。この場合、セラミック・ピストンエンジンを表すオブジェクトは、導出オブジェクトと呼ばれる。それはピストンエンジンを表すオブジェクトの様相の全てを継承し、更なる限定又はディテールをそれに加えている。セラミック・ピストンエンジンを表すオブジェクトは、ピストンエンジンを表すオブジェクト「から垂れ下がって」いる。これらのオブジェクトの関係は継承と呼ばれる。
【0019】
セラミック・ピストンエンジンを表すオブジェクト又はクラスが、ピストンエンジンを表すオブジェクトの様相の全てを継承するとき、それはピストンエンジン・クラスの中で定義された標準ピストンの熱特性を継承する。しかし、セラミック・ピストンエンジンのオブジェクトは、金属ピストンに関連した熱特性とは典型的に異なっているセラミック特殊熱特性をオーバーライドする。それはオリジナルを飛び越えて、セラミック・ピストンに関連した新しい機能を使用する。異なった種類のピストンエンジンは、異なった特性を有するが、それに関連した同じ根本的機能(例えば、エンジンの中のピストンの数、点火シーケンス、注油など)を有するかも知れない。ピストンエンジン・オブジェクトにおけるこれらの機能の各々にアクセスするため、プログラマは、同じ機能を同じ名前で呼ぶが、ピストンエンジンの各々のタイプは、同じ名前の背後にある機能の異種/オーバーライド実現形態を有するかも知れない。機能の異なった実現形態を同じ名前の背後に隠す能力はポリモーフィズムと呼ばれ、オブジェクトの間の通信を非常に簡単にする。
【0020】
組成関係、カプセル化、継承、及びポリモーフィズムの概念を使用すると、オブジェクトは、現実世界の事物を正確に表現することができる。実際に、人の論理的現実認識は、オブジェクト指向ソフトウェアのオブジェクトとなることができる事物の種類を決定する場合の唯一の制約である。幾つかの典型的なカテゴリーは、次の通りである:
・オブジェクトは物理オブジェクト、例えば、交通量シミュレーションにおける自動車、回路設計プログラムにおける電気コンポーネント、経済モデルにおける国、又は航空管制システムにおける飛行機を表すことができる;
・オブジェクトは、コンピュータ・ユーザ環境の要素、例えば、ウィンドウ、メニュー、又はグラフィックス・オブジェクトを表すことができる;
・オブジェクトは、インベントリ、例えば、個人ファイル、又は都市の経度と緯度の表を表すことができる;
・オブジェクトは、ユーザ定義のデータ・タイプ、例えば、時間、角度、及び複素数、又は平面上の点を表すことができる。
【0021】
論理的に区分できる事物を正確に表現できるオブジェクトの巨大な能力を使用して、OOPは、現実が物理的実体、プロセス、システム、又は事物の組成であっても、ソフトウェアの開発者が、事物の或る様相のモデルであるコンピュータ・プログラムを設計及び実現することができるようにする。オブジェクトは任意の事物を表すことができるから、ソフトウェアの開発者は、将来大きなソフトウェア・プロジェクトのコンポーネントとして使用されることができるオブジェクトを作り出すことができる。
【0022】
新しいOOPソフトウェア・プログラムの90%が、既存の再使用可能なオブジェクトから作られた証明済みの既存のコンポーネントから構成された場合、新しいソフトウェア・プロジェクトの残りの10%のみが、スクラッチから書かれてテストされる必要がある。90%は、広範囲にテストされた再使用可能なオブジェクトの在庫から既に来ているので、誤りが生じる可能性がある領域は、プログラムの10%である。その結果、OOPは、ソフトウェアの開発者が、前に構築された他のオブジェクトからオブジェクトを構築することを可能にする。
【0023】
このプロセスは、アセンブリ及びサブアセンブリから組み立てられる複雑な機械装置と非常に良く似ている。従って、OOP技術は、オブジェクトとして開発者が利用可能な既存のコンポーネントからソフトウェアが構築される点で、ソフトウェア・エンジニアリングをハードウェア・エンジニアリングと似たものにする。これらの全ては、ソフトウェアの改善された品質及び開発速度に寄与する。
【0024】
プログラミング言語は、OOPの原理、例えば、カプセル化、継承、ポリモーフィズム、及び組成関係を完全にサポートし始めている。C++言語の出現によって、多くの商用ソフトウェア開発者がOOPを採用した。C++は、高速でマシンを実行できるコードを提供するOOP言語である。更に、C++は、商用アプリケーション及びシステム・プログラミングのプロジェクトに適している。現在のところ、C++は多くのOOPプログラマの間で最も人気のある言語のように見えるが、多数の他のOOP言語、例えば、Smalltalk、Common Lisp Object System(CLOS)、及びEiffelが存在する。更に、OOP能力は、更に伝統的で人気のあるコンピュータ・プログラミング言語、例えば、Pascalへ付け加えられている。
【0025】
オブジェクト・クラスの利点を要約すると、次のようになる:
・オブジェクト及びそれらの対応するクラスは、複雑なプログラミング問題を多くの小さな単純問題へ分解する;
・カプセル化は、相互に通信することのできる小さな独立オブジェクトへデータを組織することによって、データの抽象化を実効的にする。カプセル化は、オブジェクト内のデータを不測の損害から保護するが、オブジェクトのメンバー関数及び構造を呼び出すことによって、他のオブジェクトがそのデータと交信することを可能にする;
・サブクラス化と継承は、システムで利用可能な標準のクラスから新しい種類のオブジェクトを導出することによって、オブジェクトの拡張及び修正を可能にする。従って、スクラッチから出発することなく、新しい能力が作り出される;
・ポリモーフィズム及び多重継承は、異なったプログラマが、多くの異なったクラスの特性を混合及び調和させ、予測可能な様式で関連オブジェクトと一緒に働くことのできる専門オブジェクトを作り出すことを可能にする;
・クラス階層及びコンテナ階層は、現実世界のオブジェクト、及びそれらの間の関係をモデル化する柔軟なメカニズムを提供する;
・再使用可能なクラスのライブラリを多くの場合に使用できるが、それらは或る制約を有する。例えば:
・複雑性:複雑なシステムでは、関連クラスのためのクラス階層は、何十何百というクラスによって、極端な混乱を起こす可能性がある;
・制御のフロー:クラスライブラリの助けを借りて書かれたプログラムは、依然として制御のフローに責任を有する(即ち、それは、特定のライブラリから作り出された全てのオブジェクトの間の交信を制御しなければならない)。プログラマは、どのような種類のオブジェクトのために、いつ、どのような関数を呼び出すかを決定しなければならない;
・労力の重複:クラスライブラリは、プログラマが多くの小さなコード部分を使用及び再使用することを可能にするが、各々のプログラマは、それらのコード部分を異なった様式で組み合わせる。2人の異なったプログラマは、クラスライブラリの同じセットを使用して、全く同じことを行なう2つのプログラムを書くことができる。しかし、それらのプログラムの内部構造(即ち、設計)は、各々のプログラマが途中で行なう何百という小さな決定に依存して、全く違ってもよい。必然的に、類似のコード部分は、少しだけ異なった様式で類似のことを行なう結果となるが、共に機能する場合とは異なって機能する。
【0026】
クラスライブラリは非常に柔軟性に富む。プログラムが益々複雑になるにつれて、益々多くのプログラマが、基本問題の基本的解決法を何度も繰り返して再発明するように強制される。クラスライブラリ概念の比較的新しい拡張は、クラスライブラリのフレームワークを有することである。このフレームワークは、より複雑であり、小型のパターン及び大きなメカニズムの双方を捕獲する協働クラスのかなりの集合から構成される。小型パターン及び大きなメカニズムは、特定のアプリケーション領域で共通の要件及び設計を実現する。それらは、最初、メニュー、ウィンドウ、ダイアログボックス、及びパーソナル・コンピュータの他の標準ユーザ・インタフェース要素の表示に関連する雑用からアプリケーション・プログラマを解放するために開発された。
【0027】
フレームワークは、更に、プログラマが書いたコードと、他のプログラマが書いたコードとの交信に関するプログラマの考え方の変化を表す。手続き的プログラミングの早期において、プログラマはオペレーティング・システムによって提供されたライブラリを呼び出して或るタスクを実行したが、基本的には、プログラムはページを最初から最後まで実行し、プログラマは、制御のフローに単独で責任を有した。これは、ただ1つの方法で実行されるプログラムを使用して給料の小切手を印刷し、数表を計算し、又は他の問題を解決するのに適切であった。
【0028】
グラフィカル・ユーザ・インタフェースの開発は、この手続き的プログラミング配列を裏返しにし始めた。これらのインタフェースは、プログラム・ロジックではなくユーザが、プログラムを駆動して、或るアクションをいつ実行すべきかを決定することを可能にする。今日では、パーソナル・コンピュータの大部分のソフトウェアが、イベント・ループによってこれを達成する。イベント・ループは、マウス、キーボード、及び外部イベントの他のソースを監視し、ユーザが実行するアクションに従ってプログラマのコードの適切な部分を呼び出す。プログラマは、もはや、イベントが起こる順序を決定しない。その代わりに、プログラムは別々の部分へ分割され、この別々の部分が、予測不可能な時間に予測不可能な順序で呼び出される。このようにして制御をユーザへ譲ることによって、開発者は使用するのに非常に容易なプログラムを作り出す。しかし、開発者によって書かれた個々のプログラム部分は、依然として、或るタスクを達成するためオペレーティング・システムによって提供されるライブラリを呼び出し、プログラマは、各々のプログラム部分がイベント・ループによって呼び出された後、依然として、各々のプログラム部分の中で制御のフローを決定しなければならない。アプリケーション・コードは、依然として、システムの「最上部に座っている」。
【0029】
イベント・ループ・プログラムも、プログラマが大量のコードを書くことを要求するが、そのようなコードは全てのアプリケーションのために別々に書かれる必要はない。アプリケーション・フレームワークの概念は、イベント・ループの概念を更に推し進める。基本的メニュー、ウィンドウ、及びダイアログボックスを組み立てる基礎的処理を行い、次に、これらのものが全て一緒に働くようにする代わりに、アプリケーション・フレームワークを使用するプログラマは、アプリケーション・コード及び基本的ユーザ・インタフェース要素を働かせることからスタートする。次に、プログラマは、フレームワークの一般的能力の幾つかを、意図されたアプリケーションの特別の能力で置換することによって構築していく。
【0030】
アプリケーション・フレームワークは、プログラマがスクラッチから書かなければならないコードの総量を減少させる。しかし、フレームワークは、実際には、ウィンドウを表示しコピー・アンド・ペーストをサポートするなどの一般的アプリケーションであるから、プログラマは、イベント・ループ・プログラムが許す以上に、大きく制御を譲ることができる。フレームワーク・コードは、殆ど全てのイベント処理及び制御のフローを取り扱い、プログラマのコードは、フレームワークがそれを必要とするときにのみ呼び出される(例えば、専有のデータ構造を作り出すか処理するため)。
【0031】
フレームワーク・プログラムを書いているプログラマは、制御をユーザへ譲るだけでなく(イベント・ループ・プログラムの場合もそうであるように)、プログラム内部の詳細な制御フローをフレームワークへ譲る。このアプローチは、カスタム・コードを有する孤立したプログラムが、類似の問題に対して何度も繰り返して作成されることとは反対に、興味ある様式で働く更に複雑なシステムの作成を可能にする。
【0032】
従って、前述したように、フレームワークは、基本的には、所与の問題領域のために再使用可能な設計解決法を作り上げる協力クラスの集合である。それは、典型的には、デフォルトの行動を提供するオブジェクトを含み(例えば、メニュー及びウィンドウのために)、プログラマは、フレームワークが適切なときにアプリケーション・コードを呼び出すように、そのデフォルトの行動の幾つかを継承し、他の行動をオーバーライドすることによって、それを使用する。
【0033】
フレームワークとクラスライブラリとの間には、3つの主な差異がある:
・行動に対するプロトコル。
クラスライブラリは、本質的に、プログラムの中で個々の行動を希望するとき呼び出すことのできる行動の集合である。他方、フレームワークは、行動を提供するだけでなく、行動を組み合わせることのできる方法を支配するプロトコル又は規則の集合をも提供する。規則の集合は、フレームワークが何を提供するかに対抗して、プログラマが何を提供するかの規則を含む;
・呼び出しに対するオーバーライド。
クラスライブラリ、即ち、コードを使用する場合、プログラマはオブジェクトを具体化し、それらのメンバー関数を呼び出す。フレームワークを使用して、同じようにオブジェクトを具体化して呼び出すことができるが(即ち、クラスライブラリのようにフレームワークを処理する)、フレームワークの再使用設計を十分に利用するため、プログラマは、典型的には、オーバーライドしてフレームワークによって呼び出されるコードを書く。フレームワークは、そのオブジェクトの間で制御フローを管理する。プログラムを書くことは、フレームワークによって呼び出されるソフトウェアの様々な部分の間で責任を分割することを含み、異なった部分がどのように働くかを指定することを含まない;
・実現形態に対する設計。
クラスライブラリを使用する場合、プログラマは、実現形態のみを再使用するが、フレームワークを使用する場合、プログラマは設計を再使用する。フレームワークは、関連プログラムのファミリー又はソフトウェアの部分が働く方法を具体化する。それは、所与の領域における多様な特別問題へ適合化されることができる一般的な設計解決法を表す。例えば、1つのフレームワークは、ユーザ・インタフェースが働く方法を具体化することができる。もっとも、同じフレームワークで作り出された2つの異なったユーザ・インタフェースは、全く異なったインタフェース問題を解決してもよい。
【0034】
従って、多様な問題及びプログラミング・タスクを解決するフレームワークを開発することによって、ソフトウェアの設計及び開発努力をかなり減らすことができる。本発明の好適な実施形態は、インターネット上でドキュメントを実現するハイパーテキスト・マークアップ言語(HTML)、及びクライアントとニューコ(Newco)との間のトランスポート媒体として汎用安全通信プロトコルを利用する。HTTP又は他のプロトコルは、不当な実験なしに容易にHTMLと置換されることができる。これらの製品に関する情報は、T. Berners−Lee, D. Connoly, “RFC 1866:Hypertext Markup Language−2.0”(Nov.1995)、及びR. Fielding, H, Frystyk, T. Berners−Lee, J. Gettys and J. C. Mogul, “Hypertext Transfer Protocol−HTTP/l.l; HTTP Working Group Internet Draft”(May 2, 1996)から得られる。
【0035】
HTMLは、1つのプラットフォームから他のプラットフォームへ持ち運び可能なハイパーテキスト・ドキュメントを作り出すために使用される簡単なデータ・フォーマットである。HTMLドキュメントは、広範囲なドメインからの情報を表すのに適した一般的意味を有するSGMLドキュメントである。HTMLは、1990年からワールド・ワイド・ウェブ世界情報イニシアチヴによって使用される。HTMLは、ISO標準8879;1986情報処理テキスト及びオフィス・システム;標準汎用マークアップ言語(SGML)のアプリケーションである。
【0036】
今日まで、ウェブ開発ツールは、ダイナミックなウェブ・アプリケーションを作り出す能力において制限されてきた。このようなアプリケーションは、クライアントからサーバまでを包含し、既存のコンピューティング・リソースと相互に運用される。最近まで、HTMLは、ウェブ・ベースの解決法を開発ときに使用される支配的な技術であった。しかし、HTMLは、次の分野で適切でないことが証明された:
・貧弱なパフォーマンス;
・制限されたユーザ・インタフェース能力;
・静的ウェブ・ベージの生成に限られた能力;
・既存のアプリケーション及びデータとの相互運用性の欠乏;
・スケーリング能力の欠乏。
【0037】
サン・マクロシステムズのJava言語は、次のようにしてクライアント側の問題の多くを解決する:
・クライアント側のパフォーマンスを改善することによって;
・ダイナミックでリアルタイムのウェブ・アプリケーションの作成を可能にすることによって;
・多様なユーザ・インタフェース・コンポーネントの作成能力を提供することによって。
【0038】
Javaを使用すると、開発者は、ロバストなユーザ・インタフェース(UI)コンポーネントを作成することができる。カスタム「ウィジェット」(例えば、リアルタイム株式相場表示器、アニメ化アイコンなど)を作成することができ、クライアント側のパフォーマンスが改善される。HTMLとは異なり、Javaはクライアント側における妥当性検証の概念をサポートし、適切な処理をクライアントへアンロードしてパフォーマンスを改善する。ダイナミックでリアルタイムのウェブ・ページを作成することができる。前述したカスタムUIコンポーネントを使用して、ダイナミックなウェブ・ページを作成することができる。
【0039】
サンのJava言語は、「インターネットをプログラミングする」企業認識言語として現れた。サンは、Javaを「簡単、オブジェクト指向、分散性、解釈的、ロバスト、安全、アーキテクチャ中立、ポータブル、高パフォーマンス、マルチスレッド、ダイナミック、専門語に従順な汎用プログラミング言語」として定義する。「Javaは、プラットフォーム独立Javaアプレットの形式で、インターネットのプログラミングをサポートする。」Javaアプレットは、サンのJavaアプリケーション・プログラミング・インタフェース(API)と合致する小さな専門アプリケーションであり、開発者は「インタラクティブ・コンテンツ」をウェブ・ドキュメントへ追加することができる(例えば、簡単なアニメーション、ページ飾り、基本ゲームなど)。アプレットは、サーバからクライアントへコードをコピーすることによって、Java互換ブラウザ(例えば、ネットスケープ・ナビゲータ)の中で実行する。言語の観点からは、Javaの中心的関数セットは、C++に基づいている。サンのJava説明書は、Javaが、基本的に、「よりダイナミックな方法の解決法を目的としたオブジェクティブ・シーからの拡張を有するC++である」と述べている。
【0040】
JAVAと類似の機能を提供する他の技術は、マイクロソフトのActiveX技術によって提供される。この技術は、インターネット及びパーソナル・コンピュータのためにダイナミックなコンテンツを構築する必要手段を開発者及びウェブ設計者に与える。ActiveXは、アニメーション、3D仮想現実、ビデオ、及び他のマルチメディア・コンテンツを開発するツールを含む。ツールは、インターネット標準を使用し、多数のプラットフォーム上で働き、100を超える会社によってサポートされる。グループのビルディング・ブロックは、ActiveXコントロールと呼ばれ、開発者がソフトウェアの部分をハイパーテキスト・マークアップ言語(HTML)ページの中に埋め込むことを可能にする小さくて高速のコンポーネントである。ActiveXコントロールは、多様なプログラミング言語と一緒に働く。そのようなプログラミング言語は、マイクロソフトのVisual C++、ボーランドのDelphi、マイクロソフトのVisual Basicプログラミング・システム、及び将来には、マイクロソフトのJava開発ツールであるコード名「Jakarta」を含む。ActiveX技術は、更に、ActiveXサーバ・フレームワークを含む。これは、開発者がサーバ・アプリケーションを作成することを可能にする。本発明を実施するため、不当な実験をすることなくJAVAをActiveXで置換できることは、当業者によって容易に理解される。
【0041】
好適な実施形態は、ヘンデルによって開発されたプログラミング言語であるHandel−Cを使用して書かれる。Handelは、カスタム同期ハードウェアへコンパイルするために設計されたプログラミング言語であった。この言語は、「“Compiling occam into FPGAs”, Ian Page and Wayne Luk in “FPGAs” Eds. Will Moore and Wayne Luk, pp271−283, Abingdon EE & CS Books, 1991」で始めて説明された。この文献は、参照してここに組み込まれる。Handelは、Handel−Cの多様なバージョンを作成するため、後にC類似のシンタックスを与えられた(「“Advanced Silicon Prototyping in a Reconfigurable Environment”, M. Aubury, I. Page, D. Plunkett, M. Sauer and J. Saul, Proceedings of WoTUG 98, 1998」に説明される。この文献も、参照してここに組み込まれる)。
【0042】
Handel−Cは、Celoxica社(Celoxica Limited, 7−8 Milton Park, Abingdon, Oxfordshire, OX14 4RT, United Kingdom)によって販売されたプログラミング言語である。それは、ソフトウェア又はハードウェア・エンジニアが、ハードウェア記述言語に頼ることなく、古典的なマイクロプロセッサ・クロスコンパイラ開発ツールと同じ方法でFPGA(フィールドプログラマブルゲートアレイ)を直接標的にすることを可能にし、従って、設計者は、FPGAの生のリアルタイム・コンピューティング能力を直接実現することができる。
【0043】
Handel−Cは、同期ハードウェアへプログラムをコンパイルできるように設計される。それは、高レベルのアルゴリズムをゲート・レベルのハードウェアへ直接コンパイルすることを目的とする。
【0044】
Handel−Cのシンタックスは、通常のCのシンタックスに基礎を置いている。従って、通常のCに慣れたプログラマは、Handel−C言語の殆ど全ての構文を理解するであろう。この技術分野に知識を有しない業者のために、Handel−Cのプログラミングに関する詳細情報は、「Handel−C User manual」、「Handel−C Language Reference Manual:version 3」、「Handel−C Interfacing to other language code blocks」、及び「Handel−C Preprocessor Reference Manual」と題する文献で提供される。これらの各々は、Celoxica社(Celoxica Limited, 7−8 Milton Park, Abingdon, Oxfordshire, OX14 4RT, United Kingdom)から入手可能である。これらの文献は、全ての目的のために、参照してその全体をここに組み込まれる。
【0045】
シーケンシャル・プログラムは、通常のCのようにHandel−Cで書かれることができるが、目標のハードウェアから最良のパフォーマンスを得るためには、その固有のパラレリズムを利用しなければならない。
【0046】
Handel−Cは、プログラマが、この利点をアプリケーションで利用する手段を提供する並行構文を含む。コンパイラは、Handel−Cソース・コードを、シミュレーションに適したファイルへ、又は配置されて現実のFPGAへ回送されることのできるネットリストへ、コンパイル及び最適化する。
【0047】
注意すべきは、他のプログラミング及びハードウェア記述言語、例えばVHDLも利用できることである。
【0048】
ネットワーク構成可能ハードウェア
このセクションでは、ネットワーク接続を介して再構成されることができ、シリコンの中に直接構築されたソフトウェア・アプリケーションを走らせるハードウェアを使用して、本発明の例示的実施形態に従った柔軟なマルチメディア・デバイスの開発を詳細に説明する。
【0049】
この目的のために開発された例示的プラットフォームは、マルチメディア端末(MMT)と呼ばれる。その特徴は、専用の蓄積プログラム及び中央処理装置(CPU)を有しないことである。その代わりに、プログラムはフィールドプログラマブルゲートアレイ(FPGA)の中に実現される。FPGAは、周辺装置を制御してデータを処理するために使用され、再構成可能なロジック及びソフトウェア設計方法のみを使用してCPU類似の柔軟性を作り出す。
【0050】
FPGAは、マイクロプロセッサ及びオペレーティング・システムに関連するオーバーヘッドなしにアプリケーションを走らせるソフトなハードウェアを作り出すために使用されることができる。そのようなハードウェアは、ネットワーク接続を介して全面的に再構成可能であり、改良、修理、又は完全に新しいアプリケーションを提供する。再構成可能であることは、ハードウェアが設計されたとき想像することのできなかった標準及びアプリケーションの発展を柔軟にサポートすることによって、廃棄を無用にする。これは、更に、製造業者が、インターネット再構成可能ロジックを使用して、装置がどこに存在していても、任意の時点でハードウェア設計を遠隔からアクセスして変更することを可能にする。
【0051】
本発明の1つの例示的実施形態に従ったMMTは、2つの独立した百万ゲートXilinx XCV1000 Virtex FPGAを使用することによって、柔軟な再構成可能性を達成する。FPGAの1つは、デバイスがスイッチオンにされたとき、ネットワーク機能を静的に構成されたままに残される。他のFPGAは、マスターによって提供されたデータで再構成される。2つのFPGAは、共通の譲受人へ譲渡された「SYSTEM, METHOD, AND ARTICLE OF MANUFACTURE FOR DATA TRANSFER ACROSS CLOCK DOMAIN」と題する米国特許出願で説明されるように、4ビットがハンドシェーキングに予約された36ビット・バス、及び2つの16ビット単方向チャネルを介して直接通信する。この米国特許出願は、全ての目的のために、参照してここに組み込まれる。2つのFPGAが異なったスピードで刻時されるときでも、プロトコルは信頼性のある通信の使用を保証する。
【0052】
MMTの他のコンポーネントは、LCDタッチスクリーン、オーディオ・チップ、10Mbpsイーサネット、パラレルポート、シリアルポート、3つのRAMバンク、及び1つの不揮発性フラッシュ・メモリ・チップである。
【0053】
FPGAの再構成は、2つの方法の1つを使用して実行されることができる。第1の方法は、静的FPGA上でXilinxセレクトマップ・プログラミング・プロトコルを実現する。この静的FPGAは他のFPGAをプログラムすることができる。第2の方法は、ネットワーク・インタフェース又はフラッシュ・メモリからMMT上に再構成データを供給する。フラッシュ・メモリからの再構成は、アプリケーションが終了したとき、又はネットワークを介する構成が失敗したとき、パワーアップ時にインターネット・プロトコル経由音声(VoIP)電話のGUIをスレーブFPGAへロードするためにだけ使用される。ネットワーク・ベースの再構成は、サーバへのTCP接続を介するハイパーテキスト転送プロトコル(HTTP)を使用する。ファイル要求を含むテキスト・ストリングが、MMTによってサーバへ送られ、次に、サーバは、再構成データ(ビットファイル)を送り返す。
【0054】
以上のように、選択されたアプリケーションをFPGAの中で走らせることのできる柔軟なアーキテクチャが呈示された。これから、それら全てのアプリケーションを書く方法、及びそれを合理的な時間内で行なう方法を説明する。ハードウェア記述言語(HDL)は、インタフェース・ロジックを作成し、低レベルの時間問題を有するハードウェア設計を定義するためには適している。しかし、HDLは、ネットワーキング、VoIP、MP3、及びビデオゲームには適していないであろう。
【0055】
前述したシステムのチャレンジに応じるため、Handel−Cを使用してMMT設計を行うことができる。それは、ANSI−Cに基づいており、Cソフトウェア開発を行なった人によって早く習得される。パラレリズム、任意の幅の変数、及びハードウェア設計でよく知られた他の特徴をサポートする拡張が行なわれたが、それはソフトウェア設計の方法論にかなり目標を置いている。CをHDLへ変換する従来技術のCベース解決法とは異なり、Handel−CコンパイラはEDIFネットリストを直接合成する。このネットリストは、即時に配置、回送、及びFPGAへ組み込まれることができる。
【0056】
パワーアップ時にMMTの例示的実施形態上で走るデフォルトのアプリケーションは、GUIを完備したインターネット・プロトコル経由音声(VoIP)電話である。インターネット・プロトコル経由音声は、呼び出し状態マシン、呼び出し交渉メカニズム、及びサウンド処理リアルタイム・プロトコル(RTP)モジュールを含む。GUIからのメッセージと呼び出し交渉装置の組み合わせは、状態マシンを駆動するために使用される。
【0057】
呼び出し交渉装置によって実現されたプロトコルは、H.323Faststartのサブセットである(H225及びQ931を含む)。このプロトコルは、2つのIP電話の間でストリーム・ベースの接続を確立するためTCPを使用する。RTPモジュールは、入サウンド・パケットを処理し、UDPを介して送られる出パケットを生成することに責任を有する。
【0058】
プロトコル、例えば、RTP、TCP、IP、及びUDPのためのアルゴリズムは、既存のパブリック・ドメインのCソースから引き出されることができる。ソース・コードは、Handel−Cで利用可能な特徴、例えば、パラレリズムを使用するため最適化されることができる。一般的に、パケット・ヘッダ内のフィールドが連続的に読み込まれることを必要とし、通常、ステージが並行に走っているパイプラインによって実行されることのできるネットワーク・プロトコルにとって、パラレリズムは有用である。各々のステージは、1つのHandel−C環境の中でテスト及びシミュレートされ、EDIFネットリストを生成することによって直接組み込まれることができる。更なる最適化及び同調は、単に、ネットワークを介して最新のバージョンをMMTへダウンロードすることによって迅速に実行されることができる。
【0059】
アーキテクチャに柔軟性があるため、及びインターネット再構成可能性を利用するため、アプリケーションの混合バッグを開発することができる。アプリケーションの全ては、MMT上のハードウェアの中で走る。アプリケーションの中には、GUIを有する完全機能MP3プレーヤ、幾つかのビデオゲーム、及び幾つかの印象的グラフィックス・デモンストレーションが存在する。これらは全てHandel−Cを使用して開発された。これらのアプリケーションは、サーバ上でビットファイルとしてホストされる。サーバは、ネットワーク接続を介して、これらのファイル、MMTのユーザからの要求に応じて供給する。
【0060】
インタフェース
本発明によると、構成ファイルを定義して、コンピュータから再構成可能ロジックデバイスへ転送する直観的インタフェースが提供される。図2は、再構成可能ロジックデバイス、例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、又はコンプレックスプログラマブルロジックデバイス(CPLD)へ構成データを転送するインタフェースを提供するプロセス200の流れ図である。操作202において、再構成可能ロジックデバイスへ接続されたディスプレイ上に画像が呈示される。操作204において、ユーザは、1つ又は複数の画像を選択することによって、再構成可能ロジックデバイスを構成するコマンドを入力することができる。操作206で、構成データは、コンピュータから再構成可能ロジックデバイスへ転送される。構成データは、操作208で再構成可能ロジックデバイスを再構成するために使用される。
【0061】
他の実施形態は、タッチ敏感液晶(LCD)、ユーザをガイドするビットマップ画像として呈示されるボタンを含む。ボタンは、ユーザがデバイス及びそのコンポーネントをインタラクティブに構成するようにガイドし、インターネット及びワイヤレス・ネットワークを介してダウンロードを提供する。
【0062】
好適な実施形態において、再構成可能ロジックデバイスは、後の使用のために構成データを保存することができる。他の実施形態において、再構成可能ロジックデバイスの操作を制御するコマンドを入力するため、ディスプレイを操作することができる。
【0063】
例1
図3は、本発明の1つの実施形態に従ったディスプレイ300を示す。ディスプレイは、再構成可能ロジックデバイス、例えば、図9〜図15を参照して後で説明されるデバイスへ接続される。オプションとして、ディスプレイはデバイスと一体化されてよい。
【0064】
デバイスをイニシエートする例示的手順400が図4に示される。操作402でデバイスはネットワークへ接続され、操作404で電源へ接続される。ディスプレイは、操作406で較正される。操作408で、電源を接続されたデバイスはデフォルトのプログラミングでブートする。この例において、デバイスはIP電話としてブートし、呼び出しを受け入れ/受信する準備を整える。
【0065】
再び図3を参照すると、ディスプレイは幾つかのビットマップ・ボタンを含む。ユーザは、ビットマップ・ボタンを使用して、インターネット電話のセッションで使用されるコマンドを入力することができる。キーパッド・ボタン302は、電話を入れるIPアドレスを入力するために使用される。ステータス・ウィンドウ304は、デバイスの状態を表示する。
【0066】
本発明によると、ハードウェア・ベースの再構成可能インターネット電話システムを提供することができる。システムは、ネットワーキング機能を使用して構成される第1のフィールドプログラマブルゲートアレイ(FPGA)を含む。ユーザ・インタフェースは、ユーザへ情報を与えユーザからコマンドを受け取るために、第1のFPGAと通信する。第1のFPGAと通信するマイクロフォンは、ユーザから音声データを受け取る。通信ポートは、第1のFPGA及びインターネットと通信する。第1のFPGAは、呼び出し状態マシン、呼び出し交渉メカニズム、及びサウンドを処理するリアルタイム・プロトコル(RTP)モジュールを提供するために構成される。呼び出しを入れる方法の更なる詳細は、図5〜図7に関連する説明を参照されたい。
【0067】
本発明の1つの実施形態によると、システムと他のインターネット電話システムとの間に、ストリーム・ベースの接続が生成される。本発明の他の実施形態において、第2のアプリケーションを走らせるため第2のFPGAが構成される。そのような実施形態において、第1のFPGAは、好ましくは、第2のFPGAを構成することができる。
【0068】
本発明の実施形態において、RTPモジュールは、入サウンド・パケットを処理し、出サウンド・パケットを生成する。好適な実施形態において、ユーザ・インタフェースはタッチスクリーンを含む。
【0069】
図5は、デバイスを使用して電話を入れるプロセス500を示す。(プロセス・フローは、上から下へ進む。)ナンバー・キーが押され、次に、呼び出されるIPアドレスが入力される。ナンバーが押されるにつれて、それらのナンバーはステータス・ウィンドウに現れる。一度、ナンバーが入力されると、接続を行なうため受け入れボタン306が押される。「呼び出し中」の語句がステータス・ウィンドウに現れて、接続が係属中であることを示す。接続が行なわれると、「接続済み」がステータス・ウィンドウに現れる。呼び出しを終了するには、終了ボタン308が押される。
【0070】
図6は、呼び出しに応答するプロセス600を示す。ステータス・ウィンドウは「着信」を表示し、デバイスはトーンを出してよい。ユーザは、呼び出しに応答するため受け入れボタンを選択する。終了ボタンの選択は呼び出しを終了させる。
【0071】
図7は、電話機能の様々なパラメータを設定する構成スクリーン700を示す。プラス及びマイナス符号を有するボタン702及び704は、スピーカの音量、マイクロフォンの音量などを増加及び減少させるために使用される。ミュート・ボタン706及びディスプレイ輝度ボタン708が設けられる。
【0072】
当業者は、デバイスが従来の電話のように動作し、従って、デバイスは、そのような電話で見出される特徴の多くを含むことを理解するであろう。
【0073】
図3に示されるスクリーンは、前述したボタンのほかに幾つかのボタンを含む。mp3ボタン310を選択すると、ダウンロード・シーケンスがイニシエートされる。このダウンロード・シーケンスは、デバイスを再構成してmp3フォーマットでオーディオを再生するための構成情報を要求するように、デバイスに命令する。一度、構成情報が受け取られると、デバイスはそれ自身を再構成してmp3オーディオを再生する。
【0074】
再構成するとき、ディスプレイは、図8Aに示されるスクリーン800を呈示する。表示される様々なボタンは、再生ボタン802、停止ボタン804、逆方向追跡及び順方向追跡ボタン806及び808、休止ボタン810、ミュート・ボタン812、音量アップ及び音量ダウン・ボタン814及び816、及びデフォルトのプログラム、この場合はIP電話プログラムへ戻る出口ボタン818を含む。
【0075】
保存ボタン820を選択すると、もしデバイスが十分な情報記憶装置へのアクセスを有するならば、ダウンロードを必要としないでデバイスを再構成するための構成情報が記憶される。
【0076】
再び図3を参照すると、ゲーム・ボタン312の選択は、ダウンロード・シーケンスをイニシエートする。このシーケンスは、デバイスを再構成してゲームをプレーさせる構成情報の要求をデバイスに命令する。
【0077】
マルチメディア・デバイス
図8Bは、ハードウェア・ベースの再構成可能マルチメディア・デバイスを提供するプロセス850を示す。操作852において、デフォルトのマルチメディア・アプリケーションが、再構成可能マルチメディアロジックデバイス上でイニシエートされる。マルチメディアロジックデバイスは、図9から図15に関して説明されるデバイスと類似のデバイスであってよい。操作854で、第2のマルチメディア・アプリケーションに対する要求がユーザから受け取られる。構成データは、操作856でデータ・ソースから検索され、操作858でロジックデバイスを構成して第2のマルチメディア・アプリケーションを走らせるために使用される。操作860で、第2のマルチメディア・アプリケーションがロジックデバイス上で走る。
【0078】
本発明によると、マルチメディア・アプリケーションは、オーディオ・アプリケーション、ビデオ・アプリケーション、音声ベース・アプリケーション、ビデオゲーム・アプリケーション、及び/又は他の任意タイプのマルチメディア・アプリケーションを含むことができる。
【0079】
本発明の1つの実施形態において、構成データは、ネットワーク、例えば、インターネットを利用して、ロジックデバイスから遠隔に置かれたサーバから検索される。
【0080】
本発明の他の実施形態において、ロジックデバイスは1つ又は複数のフィールドプログラマブルゲートアレイ(FPGA)を含む。理想的には、第1のFPGAは、構成データを受け取り、第2のFPGAを構成するために構成データを使用する。本発明の他の実施形態は、異なったスピードで刻時される第1及び第2のFPGAを含む。好適な実施形態において、デフォルトのマルチメディア・アプリケーション及び第2のマルチメディア・アプリケーションの双方は、FPGAの数に関係なくロジックデバイス上で同時に走ることができる。
【0081】
例示的再構成可能ロジックデバイス
本発明の好適な実施形態に従った再構成可能ロジックデバイスは、2つのFPGAが相互に話すことを可能にする双方向16ビット通信ドライバを含む。1つのFPGAから他のFPGAへの全てのメッセージは、16ビットIDを前に置かれる。16ビットIDの8つの高ビットはメッセージのタイプ(オーディオ、フラッシュ、再構成など)を識別し、低ビットはそのハードウェアに対する特定の要求(フラッシュ読み出しなど)を識別する。IDコードはヘッダ・ファイルfp0server.hで処理され、メッセージの各々のタイプに対して適切なマクロ手順が呼び出される(例えば、オーディオに対してはAudioRequestが呼び出される)。次に、マクロ手順は通信のメイン・ボディーを受け取って処理する。
【0082】
好ましくは、FPGAは外部メモリにアクセス可能にされる。更に好ましくは、FPGAが同じリソースにアクセスするときFPGAの間の衝突を避けるため、アービトレーションが備えられる。更に、1つのFPGAから他のFPGAへパスするとき、ドライバ及びハードウェアを停止及び再イニシエートする必要性が除かれる。
【0083】
オプションとして、通信が進行している間、共用リソースを他のプロセスからロックすることができる。この通信は、FPGA相互間の通信、及び/又はFPGAとリソースとの間の通信を含むことができる。
【0084】
本発明の1つの実施形態において、FPGAの1つの上のアプリケーションは、FPGAの他の1つへコマンドを送るようにされる。本発明の他の実施形態において、1つ又は複数のFPGAが、リソースにアクセスできるように再構成される。
【0085】
使用されるとき、サーバ・プロセスは、多数のパラメータが渡されることを必要とする。次のようなパラメータがある:
・PID:通信の進行中に、他のプロセスから共用リソース(例えば、フラッシュ)をロックするために使用される;
・usendCommand、uSendLock:FP0上のアプリケーションがFP1上のアプリケーションへコマンドを送るようにするチャネル、及びデータがサーバ送信データとインタリーブしないことを確実にする1ビット・ロック変数;
・uSoundOut、uSoundIn:オーディオ・ドライバの機能をミラーリングする2つのチャネル。uSoundOutへ送られたデータは、MMT2000スピーカから再生され(正しいコードがFP1にあるものと仮定する)、uSoundInから読み出されたデータはMMT2000マイクロフォンへの入力となる。チャネルは、サウンド・ドライバがブロックしたとき、FPGA間の通信チャネルが停止しないように実現される;
・MP3Run:MP3 GUIを制御する1ビット変数。サーバは、FP1からコマンドを受け取ったとき、MP3 GUIを活性化又は非活性化する;
・ConfigAddr:再構成プロセスを制御する23ビット・チャネル。有効なFPGAビットファイルのフラッシュ・アドレスがこのチャネルへ送られたとき、サーバは、指定されたビットマップでFP1を再構成する。
【0086】
異なったクロック・レートで走っているFPGAの間で通信するため、双方の方向における2つのFPGAの間のデータ転送レートは、好ましくは、約16ビット/5クロック・サイクルである(最も遅いFPGAのクロック領域で)。
【0087】
本発明の様々な実現形態で使用するため生成される幾つかのHandel−Cマクロは、表1に記載される。前記の参照によって組み込まれた文献「Handel−C Language Reference Manual:version 3」は、Handel−Cでマクロを生成するときの詳細情報を提供する。
【表1】
Figure 2004508617
【0088】
例示的デバイス開発プラットフォーム\
図9は、本発明の例示的実施形態に従ったリソース管理デバイスのボード900を示す略図である。注意すべきは、以下の説明が本発明の例示的実施形態を説明するためのものであり、本発明の様々な実施形態は、この説明によって限定されないことである。図示されるように、ボードは、2つのXilinx Virtex(商標)2000e FPGA 902及び904、Intel StrongARM SA1110 プロセッサ903、大容量メモリ908及び910、並びに多数のI/Oポート912を含むことができる。その主な特徴が、次にリストされる:
2つのXCV 2000e FPGA。その各々は次のデバイスへの単独アクセスを有する:
SRAM(256Kx32ビット幅)の2つのバンク(各々は1MB);
パラレルポート;
シリアルポート;
ATAポート;
FPGAは次のデバイスを共用する:
VGAモニタポート;
8つのLED;
共用SRAM(更に、CPUと共用される)の2つのバンク;
USBインタフェース(更に、CPUと共用される)。
【0089】
FPGAは、汎用I/O(GPIO)バス、32ビット選択リンク・バス、及び外部装置がFPGAへ接続されることを可能にするコネクタを有する32ビット拡張バスを介して、相互に接続される。FPGAは、可変待ち時間I/O装置として、StrongARMプロセッサのメモリへマップされる:
Intel StrongARM SA1110プロセッサは、次のものへのアクセスを有する:
64MバイトのSDRAM;
16Mバイトのフラッシュ・メモリ;
LCDポート;
IRDAポート;
シリアルポート;
それは、USBポート及び共用SRAMをFPGAと共用する。
【0090】
更に、ボードはXilinx XC95288XL CPLDを有する。このCPLDは、多数のグルー(glue)論理関数を実現し、共用RAMアービタ、可変レート・クロック・ジェネレータ、及びFPGA構成のためのJTAG並びにMultiLinx SelectMAPサポートとして働く。
【0091】
ARMプロセッサとFPGAとの間で、多数の通信メカニズムが可能である。FPGAはARMメモリの中へマップされる。これは、FPGAが、RAMデバイスであるかのようにARMからアクセスされるようにする。FPGAは、更に、SRAMの2つの1MBバンクをプロセッサと共用する。これは、DMA転送が実行されることを可能にする。更に、FPGAとARMとの間には、ARMの汎用I/O(GPIO)レジスタを介する多数の直接接続が存在する。
【0092】
ボードは、4つのクロック及び2つの固定周波数の、2つのPLLを組み込まれる。PLLはARMプロセッサによってプログラム可能である。
【0093】
ARMは、パワーアップのとき、ARMオンボード・デバッギング・モニタであるエンゼル(Angel)へブートされる。このモニタは、シリアルリンクを介してホストPC上のARMデバッガへ接続されることができる。これによって、アプリケーションは、ホスト上で容易に開発され、ボード上で走ることができる。
【0094】
FPGAを構成する方法は多様である。それらの方法は、次の通りである:
・JTAG又はMultiLinx SelectMAPを使用する外部ホストによって;
・フラッシュRAMのいずれかに記憶されたデータ、又はシリアルポート(USB、IRDA、又はRS232)の1つを介して獲得されたデータを使用するARMプロセッサによって;
・FPGAフラッシュRAMの特定のロケーションに記憶されたデータを使用してパワーアップするCPLDによって;
・他のFPGAの1つによって。
【0095】
StrongARM
ボードは、Intel SA1110 StrongARMプロセッサを組み込まれる。このプロセッサは、ローカルに接続された64MバイトのSDRAM、及び16MバイトのIntel StrataFLASH(商標)を有する。プロセッサはIntel StrataFLASH(商標)からブートしてよい。プロセッサはFPGAへの直接接続を有する。FPGAは、SRAM類似の可変待ち時間I/O装置として、そのメモリ・マップへマップされ、USB、IRDA、LCDスクリーン・コネクタ、及びシリアルポートを含む様々なI/O装置へアクセスする。それは、更に、プロセッサとFPGAとの間で共用される2MBのSRAMへのアクセスを有する。
【0096】
メモリ・マップ
表2で示されるように、様々なデバイスがStrongARMメモリ・ロケーションへマップされた。
【表2】
Figure 2004508617
【0097】
StrongARMの内部メモリ構成レジスタのために提案される設定は、表3に示される。
【表3】
Figure 2004508617
ここで、頭字語は次のように定義される:
MDCNFG −DRAM構成レジスタ;
MSC0,1,2 −バンク0、1、2のための静的メモリ制御レジスタ;
MDREF −DRAMのリフレッシュ制御レジスタ;
MDCAS −DRAMバンクのためのCAS回転制御レジスタ;
【0098】
CPUクロックは、191.7MHz(CCF=9)に設定されなければならない。これらのレジスタにアクセスする方法の詳細は、インテル社から入手可能なStrongARM Developers Manual を参照されたい。
【0099】
フラッシュ・メモリ
フラッシュRAMは、SRAM又はSDRAMと比較して非常に遅い。それは、ブートにだけ使用されるべきである。コードは、フラッシュRAMから実行のためにSDRAMへコピーされることが推奨される。もしフラッシュRAMの内容を更新するためにStrongARMが使用されるならば、フラッシュからコードを走らせてはならない。そうでないと、フラッシュの中のプログラミング命令が破壊されるであろう。
【0100】
SDRAM
標準の64MB SDRAM SODIMMがボードに組み込まれる。これはStrongARMのために大容量メモリを提供する。組み込まれたモジュールに依存して、SDRAMはメモリ内で連続して現れないかも知れない。
【0101】
共用RAMバンク
これらのRAMバンクは、双方のFPGAと共用される。このリソースは、CPLDによってアービトレーションされ、CPLDがARM許可を与えたときだけアクセスされてよい。RAMをアクセスする許可の要求及び受信は、CPLDレジスタ0x10を介して実行される。ARMプロセッサからCPLD及びその内部レジスタへのアクセスについては、本明細書のCPLDのセクションを参照されたい。
【0102】
FPGAアクセス
FPGAはARMのメモリへマップされ、StrongARMは、指定されたロケーションを使用してFPGAへ直接アクセスすることができる。これらのロケーションは可変長アクセスをサポートし、従って、FPGAがデータの受信又は送信の準備を完了するまで、FPGAはARMがアクセスを完了するのを防止することができる。StrongARMにとって、FPGAは静的メモリ・デバイスとして現れる。FPGAは、RAMのデータ、アドレス、及びチップ制御信号へのアクセスを有するであろう。
【0103】
FPGAは、更に、SAIOバスを介してプロセッサのGPIOブロックへ接続される。SAIOバスへのGPIOピン・マップは、表4に示される。
【表4】
Figure 2004508617
これらの中で、SAIO[0:10]はFPGAへ接続し、SAIO[0:14]はボード上のコネクタCN25へ接続する。FPGA及びARMは、更に、共用メモリの2MBへアクセスすることができる。これは、DMA転送がデバイスの間で実行されることを可能にする。
【0104】
I/O装置
次のコネクタが提供される:
・バックライト・コネクタを有するLCDインタフェース・コネクタ;
・IRDAコネクタ(5V許容ではない);
・GPIOピン(5V許容ではない);
・シリアルポート;
・StrongARMを再ブートするリセット・ボタン。
【0105】
これらとARMプロセッサとの間の接続は、次の表5〜表8で定義される。
【表5】
Figure 2004508617
【表6】
Figure 2004508617
【表7】
Figure 2004508617
【表8】
Figure 2004508617
シリアルポートは、もしハンドシェーキングが必要でなければ、1つの特別のリード線で2つのポートを利用できるように配線される。
【0106】
エンゼル
エンゼルは、ARMプロセッサのためのオンボード・デバッグ・モニタである。それは、シリアルポート(ヌル・モデム・シリアルケーブルが必要となる)を介してホストPCと通信する。ARMは、スタートアップ時にエンゼルへ自動的にブートするようにセットアップされる。これが必要でない場合には、ARMのフラッシュRAMの中のスタートアップ・コードを変更する必要がある。
【0107】
エンゼルが使用されるとき、SDRAMの32MBがメモリの中で0X00000000へマップされ、キャッシュ可能及びバッファ可能としてマークされる(トップの1MBを除いて)。フラッシュ・メモリは0X40000000へ再マップされ、読み出し専用及びキャッシュ可能である。メモリの残りは、1対1にマップされ、キャッシュ可能又はバッファ可能ではない。
【0108】
エンゼルのもとでは、FPGAプログラマ・ソフトウェアを走らせることが可能である。このソフトウェアは、ホスト・マシンからビットファイルを取り、それを使用してFPGAをプログラムする。ビットファイルは1MBを超えるサイズであり、シリアルリンクがデータ転送に使用されるから、これはFPGAを構成する方法としては非常に遅い方法である。
【0109】
Virtex FPGA
更に、2つのVirtex 2000e FPGAがボードに組み込まれる。それらは、パワーアップ時のフラッシュ・メモリを含めて、多様なソースからプログラムされてよい。双方のデバイスは同じコンポーネントを含むが、異なったピンの定義を有する。2つのFPGAのために、Handel−Cヘッダ・ファイルが提供される。
【0110】
デバイスの1つは「マスター」として割り当てられ、他の1つは「スレーブ」として割り当てられる。これは、基本的にFPGAを識別する手段であり、共用メモリへの要求がCPLDによって処理されるとき、マスターはスレーブよりも優先権を有する。
【0111】
FPGAの各々の上の1つのピンは、マスター/スレーブ定義ピンとして定義される。このピンは、マスターFPGA上ではGNDへプルされ、スレーブ上では高に保持される。ピンは次の通りである:
マスターFPGA:C9;
スレーブFPGA:D33。
【0112】
これらのチップのためにHandel−Cをコンパイルするとき、次のpart及びfamilyパラメータを使用しなければならない:
set family = Xilinx4000E;
set part = “XV2000e−6−fg680”。
【0113】
クロック
2つのソケット・クロック発振器モジュールが、ボードへ組み込まれてよい。CLKAは応急的に50MHz発振器を組み込まれ、CLKBソケットは、他の倍数周波数が必要であるときユーザによって組み込まれるように残される。+5V発振器モジュールが、CLKBのために使用されるべきである。
【0114】
2つのオンボードPLL、VCLK、及びMCLKが、8MHzから100MHz(125MHzも可能である)までのクロック源を提供する。これらはARMプロセッサによってプログラム可能である。VLCKは、ARMによってシングルステップにされてよい。
【0115】
このクロック源の多様性は、FPGAが異なったレートで刻時されることを可能にするか、1つのFPGAが多数のクロック領域を有することを可能にする。
【0116】
表9及び付録A及び付録Bに示されるように、クロックはFPGAへ接続される。
【表9】
Figure 2004508617
【0117】
FPGAのプログラミング
FPGAは多様なソースからプログラムされてよい:
・パラレルIIIケーブルJTAG;
・MultiLinx JTAG;
・MultiLinx SelectMAP;
・ARMプロセッサ;
・他のFPGAから;
・パワーアップ時のフラッシュ・メモリから(FPGAフラッシュ・メモリのセクション)。
【0118】
JTAG方法でFPGAをプログラムするとき、Bitgenコマンドが確実にオプション“−g startupclk:jtagclk”を渡されるようにしなければならない。更に、CPLDのために.jedファイル又は.bsdファイルを必要とするであろう。.bsdファイルは、”Xilinx\xc9500xl\data\xc95288XL_tq144.bsd”で見出される。更に、StrongARMは.bsdファイルを必要とする。この.bsdファイルは、Intelウェブサイトhttp://developer.intel.com/design/strong/bsdl/sa1110 b1.bsdで見出される。ダウンロードされたとき、このファイルは、HTMLヘッダ及びフッタを含む。これらは最初に除去される必要がある。代替的に、必要な.bsdファイルのコピーは、供給されるディスク上に含まれる。
【0119】
ボードのためのJTAGチェーン1000は、図10に示される。
【0120】
XilinxパラレルIIIケーブル及び「JTAGプログラマ」を使用するときの接続は、表10に示される。
【表10】
Figure 2004508617
Xilinxケーブルを使用する場合、浮動端をXilinxポッドへ差し込むことが容易であり、多数のケーブルが一度にボードへ接続されるであろう。
【0121】
MultiLinx JTAG
ボードは、MultiLinxを使用してプログラムするときのサポートを有する。CN3は、MultiLinxを使用するJTAGプログラミングに必要な唯一のコネクタであり、表11に示されるように配線される。(注意すべきは、使用されない信号は、もし必要であれば、MultiLinxへ接続されてよいことである。)
【表11】
Figure 2004508617
【0122】
MultiLinx SelectMAP
MultiLinx SelectMAPを使用してFPGAを再構成するとき、JP3を調整しなければならない。このリンクは、バスの競合を防止するため、CPLDがFPGAデータ・バスにアクセスしないように防止する。更に、これは、ARMがFPGAフラッシュ・メモリにアクセスすることを防止し、パワーアップからFPGAプログラミングを試みることを防止する。コネクタCN3及びCN4はマスターFPGAのプログラミングに使用すべきであり、CN10及びCN11はスレーブFPGAのプログラミングに使用すべきである。表12及び表13を参照されたい。
【表12】
Figure 2004508617
【表13】
Figure 2004508617
【0123】
実際には、MultiLinx SelectMapは、多数の浮動リード線が含まれるためFPGAをプログラムするには非常に退屈な方法であることが分かった。マルチFPGAシステムに対するサポートが存在しないことは、FPGAの各々を構成するためリード線を異なったコネクタへ接続しなければならないことを意味する。
【0124】
ARMプロセッサ
ARMは、CPLDを介して各々のFPGAをプログラムすることができる。FPGAは、SelectMapモードで構成されるようにセットアップされる。FPGAのプログラミング・ピンにアクセスする方法、及び実際の構成プロセスに関しては、本明細書のCPLDのセクション及びVirtex構成に関するXilinxデータシートを参照されたい。エンゼルのもとでホストPCからの.bitファイルを使用してFPGAを構成するARMプログラムが提供される。しかし、これは非常に遅いプロセスである。なぜなら、ファイルがシリアルリンクを介して転送されるからである。更に、データは、USB、IRDA、又はオンボード・フラッシュRAMを含む多様な他のソースから獲得されることができる。これは、FPGAを0.5秒内で構成できなければならない。
【0125】
1つのFPGAの他のFPGAからの構成
ARMがFPGAを構成する場合と同じようにして、1つのFPGAが、CPLDを介して他のFPGAを構成することができる。詳細については、再び、本明細書のCPLDのセクション及びXilinxデータシートを参照されたい。
【0126】
パワーアップ時のフラッシュ・メモリからの構成
ボードは、パワーアップ時に、このメモリに記憶された構成データを使用してFPGAをブートするように設定されることができる。もしフラッシュRAMからボードをブートする必要があれば、次のジャンパを設定しなければならない:
・マスターFPGAがパワーアップからプログラムされた場合、JP1を調整する必要がある;
・スレーブFPGAがパワーアップからプログラムされた場合、JP2を調整する必要がある。
【0127】
これらのジャンパが使用された場合、フラッシュRAMは、表14のように組織される必要がある。
【表14】
Figure 2004508617
【0128】
構成データは、.bitファイルの全体ではなく、構成ビット・スリームだけでなければならない。.bitファイルはヘッダ情報を含む。ヘッダ情報は、最初に除去される必要があり、.bitファイルの中に記憶された構成ストリームのバイトは、ミラーリングされる必要がある。即ち、ビット・ファイルの中で00110001として記憶された構成バイトは、10001100としてFPGA構成データ・ピンへ適用される必要がある。
【0129】
Xilinx FPGAの構成及び.bitフォーマットに関する詳細情報については、適切なXilinxデータシートを参照されたい。
【0130】
FPGA フラッシュ・メモリ
Intel StrataFLASH(商標)フラッシュ・メモリの16MBをFPGAに使用することができる。これは、2つのFPGA及びLCPDの間で共用され、それらへ直接接続される。フラッシュRAMは、ボード上のSRAMよりも非常に遅く、120nsの読み出しサイクル及び約80nsの書き込みサイクルを有する。
【0131】
FPGAは、メモリに対して読み出し及び書き込みを直接行なうことができる。しかし、ARMプロセッサは、CPLDを介してメモリへアクセスする。簡単なコマンドをフラッシュRAMの内部状態マシンから読み出し及び書き込むマクロ(例えば、RAMのためにID及びステータス情報を検索する)が、klib.hマクロライブラリの中に提供されるが、これらを改良して、より複雑な手順、例えば、ブロック・プログラミング及びロッキングを実現することは開発者に任されている。提供されたマクロは、フラッシュRAMにアクセスする基本的メカニズムを例示することが意図されている。
【0132】
FPGAがフラッシュRAMにアクセスする必要があるとき、フラッシュ・バス・マスター信号を低に設定することによってCLPDへ通知する必要がある。これによって、CPLDは、そのフラッシュRAMピンをトライステートにし、バスの競合を避けることができる。同様に、双方のFPGAは共用バスを介してフラッシュRAMへのアクセスを有するので、それらが同時にメモリへのアクセスを試みないように注意する必要がある(2つのFPGAが相互に対して駆動された場合、その1つ又は双方が損傷を受けるかも知れない)。このRAMの共用が双方のFPGA間で必要な場合には、適切なアービトレーション・システムを実現することは開発者に任されている。
【0133】
このRAMとFPGAとの間の接続は、表15に示される。
【表15】
Figure 2004508617
【0134】
ローカルSRAM
各々のFPGAは、ローカルSRAMの2つのバンクを有する。これらのバンクは256Kワードx32ビットとして配列される。それらは15nsのアクセスタイムを有する。
【0135】
これらのRAMへ単一サイクルでアクセスできるように、外部クロック・レートは、Handel−Cクロック・レートのために2又は3によって分割されることが推奨される。即ち、次の行をコードの中に含ませる:
set clock=external_divide“A20”2;//又は、それより高い。
【0136】
external_divide 2 クロック・レートのために、RAMは次のように定義される必要がある:
【数1】
Figure 2004508617
クロックが2を超える数によって分割された場合、wegateパラメータを次の行で置換する。
westart=2,
welength=1.
【0137】
これらのRAMへの接続は、次の通りである。
【表16】
Figure 2004508617
【0138】
【0139】
共用SRAM
各々のFPGAは、共用SRAMの2つのバンクへのアクセスを有する。これらのバンクは、再び256Kワードx32ビットとして配列される。これらのバンクは16nsのアクセスタイムを有する。これらのRAMをFPGAの間で切り替えるため、一連のクイック・スイッチが使用される。これらのスイッチは、アービタとして働くCPLDによって制御される。特定のSRAMバンクへのアクセスを要求するためには、要求ピンを低へプルする必要がある。そうすれば、コードは、応答するCPLDによって許可信号が低くプルされるまで待つ。
【0140】
これを実現するHandel−Cコードは、以下に示される:
【数2】
Figure 2004508617
RAMは、ローカルRAMと同じような方法で定義されなければならない(前述)。
【0141】
共用RAMへの接続は表17に示される。
【表17】
Figure 2004508617
【0142】
StrongARMプロセッサへの接続
FPGAは、可変待ち時間I/O装置としてStrongARMメモリへマップされ、1024エントリーx32ビットRAMデバイスのように、ARMによって取り扱われる。これらのRAMに関連したアドレス、データ、及び制御信号は、FPGAへ直接アタッチされる。FPGAが、これらの信号を使用してARMと交信する方法は、開発者に任されている。
【0143】
接続は、表18に示される通りである。
【表18】
Figure 2004508617
【0144】
更に、ARMの汎用I/Oピンの幾つかがFPGAへ接続される。これらはボード上でコネクタCN25を通り、外部装置がそれらに接続されることを可能にする(ARMのセクションを参照)。表19を参照されたい。
【表19】
Figure 2004508617
【0145】
CPLDインタフェース
表20には、フラッシュ・バス・マスター信号及びFP_COMを設定するために使用されるピンがリストされる。その詳細は、CPLDのセクションを参照されたい。
【表20】
Figure 2004508617
【0146】
各々のFPGAへ利用可能なローカルI/O装置
ATAポート
33本のFPGA I/Oピンは、ATAポートへ直接接続する。これらのピンは、100Ω直列成端抵抗器を有する。これらの抵抗器はポートを5V I/O許容にする。もしATAポートが必要とされなければ、これらのピンはI/Oとしても使用されてよい。表21を参照されたい。
【表21】
Figure 2004508617
【0147】
パラレルポート
このポートにアクセスするため、通常の25ピンD型コネクタ及び26ウエイ・ボックス・ヘッダが提供される。I/Oピンは100Ω直列成端抵抗器を有する。この抵抗器もポートを5V I/O許容にする。もしパラレルポートが必要とされなければ、これらのピンもI/Oとして使用されてよい。表22を参照されたい。
【表22】
Figure 2004508617
【0148】
シリアルポート
RS232レベル・シフタを有する標準9ピンD型コネクタが提供される。このポートは、ヌル・モデム・ケーブルでPCへ直接接続されてよい。5V許容I/Oを有するボックス・ヘッダも提供される。これらの信号は、外部レベル・シフタを有しない標準RS232インタフェースへ接続されてはならない。なぜなら、FPGAが損傷を受けるかも知れないからである。表23を参照されたい。
【表23】
Figure 2004508617
【0149】
シリアルヘッダ
各々のFPGAも10ピン・ヘッダへ接続する(CN9/CN16)。接続は表24に示される。
【表24】
Figure 2004508617
【0150】
共用I/O装置
これらの装置は、2つのFPGAの間で直接共用される。どのFPGAが、所与の時点で、どのデバイスにアクセスするかに関して、十分に注意しなければならない。
【0151】
VGAモニタ
各々のカラー(赤、緑、青)のためにオンボード4ビットDACを有する標準15ピン高密度コネクタが提供される。これは、表25に示されるように、FPGAへ接続される。
【表25】
Figure 2004508617
【0152】
LED
ボード上の12のLEDの中の8つは、FPGAへ直接接続される。表26を参照されたい。
【表26】
Figure 2004508617
【0153】
GPIOコネクタ
5V許容I/Oを有する50ウエイ・ボックス・ヘッダが提供される。32のデータ・ビット(「E」バス)及び2つのクロック信号が利用可能である。コネクタは、SelectLinkを他のFPGAへ実現するために使用されてよい。+3V3及び+5V電源がヒューズを介して提供される。表27を参照されたい。
【表27】
Figure 2004508617
【0154】
SelectLinkインタフェース
2つのFPGAを接続する他の32ビット汎用バスが存在する。このバスは、SelectLinkインタフェースを実現して、2つのデバイスの間で、より大きな帯域幅を提供するために使用されてよい。接続は表28に示される。
【表28】
Figure 2004508617
【0155】
USB
FPGAは、ボード上のUSBチップへ共用アクセスを有する。フラッシュRAMの場合と同じように、FPGAは、チップにアクセスする前に、USBマスターピンを低に設定することによって、USBチップの制御を取ったことをCPLDへ通知することが必要である。USBチップの詳細については、本明細書のUSBのセクションを参照されたい。
【表29】
Figure 2004508617
【0156】
CPLD
ボードは、Xilinx XC95288XL CPLDを組み込まれる。このCPLDは、共用RAMアービトレーション、ARMとFPGAとの間のインタフェース、及びFPGAの構成のために、多数のグルー論理関数を提供する。CPLDは、パワーアップからFPGAを構成するか、1つのFPGAが他のFPGAを再構成するとき使用されることができる(「FPGAのプログラミング」のセクションを参照)。
【0157】
共用SRAMバンク・コントローラ
CPLDは、共用RAMバンクを管理するコントローラを実現する。各々のSRAMバンクが3つのデバイスの1つによってアクセスされるようにするため、要求許可システムが実現された。もし複数のデバイスが同時にSRAMバンクを要求するのであれば、優先順位システムが使用される:
最高優先順位:ARM;
マスターFPGA;
最低優先順位:スレーブFPGA。
【0158】
FPGAは、対応する要求信号を低へプルし、それに応答するCPLDが許可信号を低へプルするのを待つことによって、共用SRAMへのアクセスを要求する。制御は、要求信号を再び高に設定することによって譲渡される。ARMプロセッサは、CPLD内の幾つかのレジスタを介して共用SRAMバンクへのアクセスを要求することができる。次のセクションを参照されたい。
【0159】
ARMのためのCPLDレジスタ
ARMは、表30で示されるように、CPLD内の多数のレジスタにアクセスすることができる。
【表30】
Figure 2004508617
【0160】
FPGAのためのCPLDレジスタ
FPGAは、FPCOMピン上にコマンドを設定することによって、CPLDにアクセスすることができる。データはFPGA(フラッシュRAM)データバス上を転送される。表31を参照されたい。
【表31】
Figure 2004508617
これらのコマンドは、主として、1つのFPGAが他のFPGAを再構成するとき使用される。詳細については、FPGA構成のセクション及び適切なXilinxデータシートを参照されたい。
【0161】
CPLD LED
4つのLEDが、CPLDへ直接接続される。これらのLEDは、次のことを示すために使用される:
D0 プログラミングの間のマスターFPGAフラッシュのための終了LED;
D1 プログラミングの間のスレーブFPGAフラッシュのための終了LED;
D2 使用されない;
D3 FPGAがプログラムされるまでのフラッシュ。
【0162】
他のデバイス
USB
ボードは、フルスピード12Mビット/秒で伝送することのできるSCANロジックSL11H USBインタフェース・チップを有する。チップは、FPGAへ直接接続され、ARMプロセッサによって、CLPDを介してアクセスされることができる(詳細な情報は、本明細書のCPLDのセクションを参照されたい)。
【0163】
このチップのデータシートは、http://www.scanlogic.com/pdf/slllh/slllhspec.pdfから入手可能である。
【0164】
PSU
このボードは、2.1mmDCジャックを介して、外部12V DC電源から給電されてよい。電源は、少なくとも2.4Aを供給できなければならない。
【0165】
Handel−Cのライブラリ
前書き
このセクションは、ボードのために書かれたHandel−Cライブラリを説明する。klib.hライブラリは、ボード上の様々なデバイスへ容易にアクセスさせる多数のマクロ手順を提供する。前記のデバイスは、共用メモリ、フラッシュRAM、CPLD、及びLEDを含む。2つの他のライブラリ、即ち、parallel_port.h及びserial_port.hも提供される。これらは、パラレル及びシリアルポートへアクセスし、これらを介して外部装置、例えば、ホストCPと通信するための一般的Handel−Cライブラリである。
【0166】
更に、例示的プログラムが説明される。このプログラムは、これらの様々なライブラリを使用して、パラレル及びシリアルポートのためにエコー・サーバを実現する。
【0167】
更に、ここでは、ESLパラレルポート・データ転送プロトコルのホスト側実現形態が説明される。このプロトコルは、parallel_port.h内のデータ転送マクロと一緒に使用される。
【0168】
klib.hライブラリ
共用RAMアービトレーション
2つのFPGAとARMプロセッサとの間で共用RAMをアービトレーションするため、要求・許可メカニズムが実現される。個々のRAMバンクの要求及び解放の処理を容易にするため、4つのマクロが提供される:
KRequestMemoryBank0();
KRequestMemoryBank1();
KReleaseMemoryBank0();
KReleaseMemoryBank1();
引き数:
なし;
返却値:
なし;
実行時間:
KRequestMemoryBank#()は、少なくとも1つのクロック・サイクルを必要とする;
KReleaseMemoryBank#()は、1つのクロック・サイクルを必要とする;
説明:
これらのマクロ手順は、それぞれのメモリ・バンクのオーナーシップを要求及び譲渡する。メモリ・バンクの要求が行なわれたとき、手順は、要求されたバンクへのアクセスが許可されるまで、スレッドをブロックする;
注意:異なったバンクに対する要求及び解放関数は、同じサイクルで双方のバンクへのアクセスを獲得するか解放するため、相互に並行して呼び出されてよい。
【0169】
フラッシュRAMマクロ
これらのマクロは、フラッシュRAMへのインタフェースを実行するベースとして提供される。マクロは、どのように読み出し/書き込みサイクルが働くべきかを示すため、RAMからモデル及びステータス情報を検索する。実際のデータをフラッシュRAMへ書き込むことは、より複雑であり、この実現は開発者に任されている。
KSetFPGAFBM();
KReleaseFPGAFBM();
引き数:
なし;
返却値:
なし;
実行時間:
双方のマクロは1クロック・サイクルを必要とする;
説明:
フラッシュRAMとの通信が実行される前に、FPGAは、フラッシュRAMの制御を取りつつあることを、CPLDへ知らせる必要がある。これによって、CPLDは、フラッシュ・バス・ピンをトライステートにし、リソースの競合を避ける。KSetFPGAFBM()はフラッシュ・バス・マスター(FBM)信号をセットし、KReleaseFPGAFBM()はそれを解放する。このマクロは、一般的に、より高いレベルのマクロ、例えば、KReadFlash()又はKWriteFlash()によって呼び出される;
注意:これらの2つの手順は、同じ信号にアクセスし、相互に並行して呼び出されてはならない。
【0170】
KEnableFlash();
KDisableFlash();
引き数:
なし;
返却値:
なし;
実行時間:
双方のマクロは1クロック・サイクルを必要とする;
説明:
これらのマクロは、フラッシュRAMのチップ選択信号を上昇及び下降させ、FPGAフラッシュRAMライン(データ・バス、アドレス・バス、及び制御信号)をトライステートにする。これは、もしフラッシュRAMが2つのFPGAの間で共用されるならば必要である。なぜなら、1つのチップだけが、所与の時点でフラッシュを制御できるからである。フラッシュRAMへ同時にアクセスを試みている双方のFPGAは、FPGAを「ラッチアップ」するか、FPGA又はフラッシュRAMチップに重大な損傷を与える原因となる。このマクロは、一般的に、より高いレベルのマクロ、例えば、KReadFlash()又はKWriteFlash()によって呼び出される;
注意:これらのマクロは、同じ信号にアクセスし、相互に並行して呼び出されてはならない。
【0171】
KWriteFlash(address, data);
KReadFlash(address, data);
引き数:
書き込むか読み出される24ビット・アドレス;
8ビット・データ・バイト;
返却値:
KReadFlash()は、addressによって指定されたロケーションの値を、dataパラメータの中に返す;
実行時間:
双方の手順は4サイクルを取る;
手順は、フラッシュRAMデバイスのタイミング特性によって制限される。読み出しサイクルは少なくとも120nsを取り、書き込みサイクルは100nsを取る。手順は25MHzのHandel−Cクロックのためにセットアップされた;
説明:
マクロは、アドレス・パラメータの中に指定されたアドレス・ロケーションからデータを読み出し、そこへデータを書き込む;
注意:これらのマクロは、同じ信号にアクセスし、相互に並行して呼び出されてはならない。
【0172】
KSetFlashAddress(address);
引き数:
24ビット・アドレス値;
返却値:
なし;
実行時間:
このマクロは1クロック・サイクルを必要とする;
説明:
マクロは、フラッシュ・アドレス・バスを、アドレス・パラメータで渡された値へ設定する。このマクロは、1つのFPGAが、フラッシュRAMからのデータを使用して他のFPGAを構成しているときのように、指定されたロケーションにおけるデータの返却値が必要でないときに使用される。なぜなら、FPGAの構成ピンは、フラッシュRAMの下位8データ・ラインへ直接接続されるからある。
【0173】
KReadFlashID(flash_component_ID,manufacturer_ID);
KReadFlashStatus(status);
引き数:
製造者、コンポーネント、及びステータス情報を保持する8ビット・パラメータ;
返却値:
マクロは、要求された値を、渡されたパラメータの中に返す;
実行時間:
KReadFlashStatus()は10サイクルを必要とする;
KReadFlashID()は14サイクルを必要とする;
説明:
マクロは、フラッシュRAMからコンポーネント及びステータス情報を検索する。これは、内部フラッシュRAM状態マシンへ一連の書き込み及び読み出しを実行することによって行なわれる;
再び、これらのマクロは、フラッシュRAMのアクセスタイムによって制限され、必要なサイクル数は、設計時のクロック・レートに依存する。これらのマクロは、25MHz以下のHandel−Cクロック・レートで使用されるように設計される;
システムは、フラッシュRAMが使用されていることをCPLDへ示すように設定されるが(KSetFPGAFBM()及びKReleaseFPGAFBM()マクロを使用することによって)、2つのFPGAの間でアービトレーションの方法を案出することは開発者に任されている。全てのフラッシュRAMラインはFPGAの間で共用され、共用RAMの場合のような切り替えメカニズムは存在しないから、もし双方のFPGAがフラッシュRAMへの同時アクセスを試みるならば、問題が起こるであろう;
注意:これらのマクロは、同じ信号にアクセスし、相互に並行して呼び出されてはならない。更に、注意すべきことは、これらのマクロは、フラッシュRAMとの通信の基本的インタフェースを提供することである。詳細な情報は、フラッシュRAMデータシートを参照されたい。
【0174】
CPLDインタフェース
次のマクロは、CPLDステータス及び制御レジスタを読み出し、及び書き込むマクロである:
KReadCPLDStatus(status);
KWriteCPLDControl(control);
引き数:
8ビット・ワード;
返却値:
KReadStatus()は、CPLDステータス・レジスタのビットを含む8ビット・ワードを返す。(詳細な情報は、CPLDのセクションを参照されたい);
実行時間:
双方のマクロは、25MHz以下のHandel−Cクロック・レートで、6クロック・サイクルを必要とする;
説明:
これらのマクロは、CPLDのステータス・レジスタを読み出して制御レジスタへ書き込む。
【0175】
KSetFPCOM(fp_command);
引き数:
3ビット・ワード;
返却値:
なし;
実行時間:
このマクロは、25MHz以下のHandel−Cクロック・レートで、3クロック・サイクルを必要とする;
説明:
このマクロは、FP_COMMANDをCPLDへ容易に送るために提供される。FP_COMMANDは、1つのFPGAを他のFPGAから再構成したいときに使用される(詳細な情報は、CPLDのセクションを参照されたい);
異なった可能なfp_commandが、表32に示される:
【表32】
Figure 2004508617
注意:これらのマクロは、同じ信号にアクセスし、相互に並行して呼び出されてはならない。
【0176】
LED
KSetLEDs(maskByte);
引き数:
8ビット・ワード;
返却値:
なし;
実行時間:
1クロック・サイクル;
説明:
このマクロ手順は、ボード上のLEDを制御するために提供された。maskByteパラメータはボード上のLEDへ適用され、1はライトをオンにすることを示し、0はライトをオフにすることを示す。maskByteのMSBはボード上でD12に対応し、LSBはD5に対応する;
注意:FPGAの1つだけが、この機能にアクセスしてよい。双方がアクセスを試みた場合、FPGAは相互に駆動して「ラッチアップ」し、損傷を与える可能性がある。
【0177】
パラレルポートの使用
前書き
ライブラリのparallel_port.hは、パラレルポートにアクセスするルーチンを含む。これは、パラレルポート・コントローラを独立プロセスとして実現する。このプロセスは、IBM PCに見出されるパラレルポート・インタフェースを忠実なモデルにしている。コントローラによって、パラレル・インタフェースの制御、ステータス、及びデータ・ポート(IBM PC上で定義される)へ同時にアクセスすることができる。これらのポートは、コントローラ・プロセスへのチャネルを読み出し、又は書き込むことによってアクセスされる。これらのチャネルの読み出し及び書き込みは、直観的APIを提供するため、他のマクロ手順の中にカプセル化される。
【0178】
図11は、本発明の実施形態に従ったパラレルポート・データ伝送システム1100の構造を示す。ESLのパラレル・データ転送プロトコルの実現形態も提供された。このプロトコルは、ホスト・コンピュータ1102との間で、パラレルポートを介するデータ転送を可能にする。これは、パラレルポート・コントローラ層を利用してプロトコルを実現する別個のプロセスとして実現される。データは、このプロセスのためにチャネルへ書き込み及び読み出しを行なうことによって、ホストの間で転送されることができる。APIを更に直観的にするため、再び、マクロ手順の抽象化が提供される。
【0179】
Windows95/98及びNTにおけるデータ転送のホスト側アプリケーションが提供される。約100Kバイト/秒のデータ転送スピードが、このインタフェース上で達成されるが、パラレルポートのスピードによって制限される。
【0180】
パラレルポートへの直接アクセス
ポートで使用される17のピンは、IBM PCパラレルポート仕様で定義されるようにデータ、制御、及びステータス・ポートへ分割された。表33を参照されたい。
【表33】
Figure 2004508617
パラレルポート・コントローラ・プロセスは、パラレルポートのアクセスを望むプログラム部分と並行して走る必要がある。これは、main()手順の中でpar{}を使用して行なわれることが推奨される。
【0181】
コントローラ手順は:
parallel_−port(pp_data_send_channel,
pp_data_read_channel,
pp_control_port_read,
pp_status_port_read,
pp_status_port_write);
ここで、パラメータは、全て、様々なポートがアクセスされることのできるチャネルである。
【0182】
パラレルポート・マクロ
チャネルへ直接書き込むよりも、次のマクロを使用して、パラレルポートへアクセスすることが推奨される。
PpWriteData(byte);
PpReadData(byte);
引き数:
符号なしの8ビット・ワード;
返却値:
PpReadData()は、引き数バイトの中にデータ・ピンの値を返す;
実行時間:
双方のマクロは1クロック・サイクルを必要とする;
説明:
これらは、ポートのデータ・ピンを制御しているレジスタへ引き数バイトを書き込むか、引き数バイトの中にデータ・ポートの値を返す。引き数のMSBはデータ[7]に対応する。値が実際にデータ・ピン上に置かれるかどうかは、ステータス・レジスタのビット6によって制御されるデータ・ピンの方向設定に依存する。
【0183】
PpReadControl(control_port);
引き数:
符号なしの4ビット・ワード;
返却値:
PpReadControl()は、引き数バイトの中に制御ポート・ピンの値を返す;
実行時間:
このマクロは1クロック・サイクルを必要とする;
説明:
この手順は、制御ポートの値を返す。4ビット・ニブルは[nSelect_in@Init@nAutofeed@nStrobe]から構成される。ここで、nSelect_inはMSBである。
PpReadStatus(status_port);
PpSetStatus(status_port);
引き数:
符号なしの6ビット・ワードである;
返却値:
PpReadStatus()は、ステータス・ポート・レジスタの値を引き数バイトの中に返す;
実行時間:
このマクロは1クロック・サイクルを必要とする;
説明:
これらは、ステータス・ポートの読み出し及び書き込みを行なう。マクロへ渡される6ビット・ワードは、[pp_direction@busy@nAck@PE@Select@nError]から構成される。ここで、pp_directionは、データ・ピンの方向(即ち、それらが送信[1]モードであるか、受信[0]モードであるか)を示す。PpWriteData()又はPpReadData()を使用してポートへデータを書き込むか読み出そうとする前に、このビットを正しく設定することが重要である;
注意:ポートの全てが同時にアクセスされてよいが、所与の時点では、各々のポート上で、ただ1つの操作が実行されてよい。特定のポートを処理する呼び出しは、相互に並行して行なわれてはならない。
【0184】
ホストPCとの間のデータ転送
ライブラリparallel_port.hも、ESLのデータ転送プロトコルを使用してホストPCとの間でデータを転送するルーチンを含む。転送プロトコルを実現するデータ転送プロセスpp_coms()は、再び、好ましくは、main par{}ステートメントの中で、パラレルポート・コントローラ・プロセスと並行して走る必要がある。プロトコルのホスト側実現形態ksend.exeも提供される:
pp_coms(pp_send_chan, −送信のときデータを書き込むチャネル
pp_recv_chan, −受信のときデータを読み出すチャネル
pp_command,   −コマンドを書き込むチャネル
pp_error)     −エラー・メッセージを受け取るチャネル。
【0185】
次のマクロは、データ転送プロセスへインタフェースを提供する:
OpenPP(error) −データ転送のためにパラレルポートを開く;
ClosePP(error) −ポートを閉じる;
注意:ホスト側のアプリケーションksend.exeが走っていることを確認する。マクロは、試行してホストとハンドシェーキングを行ない、応答が受け取られるまでブロック(又はタイムアウト)するであろう。更に、注意すべきは、後続のマクロの全てが、同じプロセスにアクセスすることであり、相互に並行して呼び出されてはならないことである;
引き数:
符号なしの2ビット・ワード;
返却値:
引き数は、コマンドの成功又は失敗を示すエラー・コードを返却するであろう;
実行時間:
このマクロは1クロック・サイクルを必要とする;
説明:
これらの2つのマクロは、データを受信又は送信するためポートを開いて閉じる。それらは、ホスト・コンピュータと通信を開始するためハンドシェーキング手順をイニシエートする。
【0186】
SetSendMode(error) −ポートを送信モードに設定する;
SetRecvMode(error) −ポートを受信モードに設定する;
引き数:
符号なしの2ビット・ワード;
返却値:
引き数は、コマンドの成功又は失敗を示すエラー・コードを返却するであろう;
実行時間:
このマクロは1クロック・サイクルを必要とする;
説明:
これらはデータ転送の方向を設定する。ポートを介するデータの送信又は受信を試みる前に、適切なモードを設定すべきである。
【0187】
SendPP(byte, error) −ポートを介してバイトを送る;
ReadPP(byte, error) −ポートからバイトを読み出す;
引き数:
符号なしの8ビット・ワード及び符号なしの2ビット・ワード;
返却値:
ReadPP()は、ホストから読み出された8ビット・データ値をbyteパラメータの中へ返す。双方のマクロは、コマンドの成功又は失敗を示すエラー・コードを返すであろう;
実行時間:
これらのマクロが、どれほど早く実行されるかは、ホストに依存する。各々のバイトに対するハンドシェーキング動作の全体のシーケンスは、次のバイトを読み出すか書き込む前に完了される必要がある;
説明:
一度、パラレルポートが初期化されて正しいモードに置かれると、これらの2つのマクロは、パラレルポートを介してバイトを送信及び受信するであろう;
手順は、操作の結果を示す2ビットのエラー・コードを返す。これらのコードは、次のように定義される:
#definePP_NO_ERROR                0;
#definePP_HOST_BUFFER_NOT_FINISHED 1;
#definePP_OPEN_TIMEOUT            2;
注意:SendPP及びReadPPは、バイトが送信されるかタイムアウト値に達するまで、スレッドをブロックするであろう。もし通信を待っている間に何らかの処理を行なう必要があれば、「prialt」ステートメントを使用して、グローバルのpp_recv_chanチャネルから読み出すかpp_send_chanチャネルへ書き込む。
【0188】
読み出し/書き込みの間の典型的なマクロ手順呼び出し
図12は、データを受信するときの、典型的な一連の手順呼び出し1200を示すフローチャートである。図13は、データを送信するときの、典型的な一連の手順呼び出し1300を示すフローチャートである。
【0189】
Ksendアプリケーション
Ksend.exeアプリケーションは、パラレルポートを介してボードFPGAとの間でデータを転送するように設計される。それはESLデータ転送プロトコルを実現する。それは、FPGA上で走っているpp_coms()プロセスと通信するように設計される。このアプリケーションは、なお開発段階にあり、その中に多数のバグを有するかも知れない。
【0190】
プログラムの2つのバージョンが存在する。1つはWindows95/98用であり、他の1つはWindowsNT用である。NTバージョンは、GenPortドライバがインストールされることを必要とする。その方法の詳細については、GenPortの文献を参照されたい。
【0191】
現在のところ、ksendアプリケーションは、主として、esl_boardtestプログラムのようにデータをボードへ送ることを意図されている。しかし、それはボードから出力を受け取ることもできる。再び、詳細は、アプリケーション・ノート又はksendのヘルプ(パラメータなしでksendを呼び出すことによって起動する)を参照されたい。
【0192】
シリアルポート
前書き
各々のFPGAはRS232ポートへのアクセスを有する。これはRS232ポートをホストPCへ接続することを可能にする。シリアルポートを介してFPGAとの間でデータを転送するドライバは、ファイルserial_port.hに含まれる。
【0193】
RS232Aインタフェース
ホスト及びデバイスの能力、及び使用されるケーブルに依存して、RS232インタフェースを実現する多くの方法が存在する。このインタフェースは、ハードウェア・ハンドシェーキングを必要としないクロスワイヤ・ヌル・モデム・ケーブルのために実現される。ソフトウェア・フロー制御のオプションが提供されるが、FPGAはホストPCよりも非常に早いレートでデータを処理できるので、前記のオプションは多分不必要であろう。ソフトウェア・フロー制御が使用されるとき、ホストは、XON及びXOFFトークンを送ることによってFPGAのデータ送信をストップ及びスタートできる。これが必要になるのは、満杯になるバッファを処理しているとき、及び、いずれかの側が通知を必要とするときだけである。
【0194】
シリアルポート・マクロ
シリアルポート通信は、データの送信/受信を望むプロセスと並行して走る別個のプロセスとして実現された。図14は、並行に走っている幾つかのプロセス1402及び1404を示す流れ図である。
【0195】
シリアルポート・コントローラ・プロセスは、次の通りである:
serial_port(sp_input, sp_output);
ここで、sp_input及びsp_outputは、ポートからデータを読み出すか書き込むことのできるnビット・チャネルである。これらの読み出し及び書き込みは、より直観的なAPIをユーザに提供するため、再び、別個のマクロ手順の中にカプセル化される。
SpReadData(byte)  −ポートからデータ・バイトを読み出す;
SpWriteData(byte) −ポートへバイトを書き込む;
引き数:
nビット・ワード。ここで、nは指定されたデータ・ビットの数である;
返却値:
SpReadData()は、送信されたバイトに対応するnビット値を引き数の中に返す;
実行時間:
実行時間は、プロトコル及び使用されるボーレートに依存する;
説明:
これらの手順は、RS232を使用して、シリアルポートを介してデータを送信及び受信する。serial_port.hライブラリを含める前に、一連の#defineを使用して、正しい通信プロトコルをセットアップしなければならない。ヌル・モデム・ケーブル上で115200ボーの8データ・ビット、1スタート・ビット、及び1ストップ・ビット・プロトコルを、フロー制御なしで使用する場合、設定は次のようになるであろう:
#define BAUD_RATE     115200;
#define START_BIT     ((符号なしの1)0);
#define STOP_BIT      ((符号なしの1)1);
#define NUM_DATA_BIT  8;
他のオプションは、次の通りである:
ソフトフロー制御の場合:
#define SOFTFLOW;
#define XON        <ASCII文字コード>;
#define XOFF       <ASCII文字コード>;
RTS/CTSフロー制御の場合:
#define HARDFLOW;
デフォルトの設定は次の通りである:
ボーレート       9600;
スタート・ビット    0;
ストップ・ビット    1;
データ・ビットの数   8;
XON         17;
XOFF        19;
フロー制御       オフ;
Handel−Cクロック・レートが、ボーレートよりも少なくとも8倍高ければ、任意の標準ボーレートの設定が働く。更に、マクロCLOCK_RATEが定義されていることを確認する。これは、一般的に、各々のFPGAのピン定義ヘッダの中に発見される;
例えば、
#define CLOCK_RATE 25000000 //クロック・レートを定義する。
【0196】
例示的プログラム
以下に示すものは、例示的なHandel−Cプログラムである。このプログラムは、serial_port.h及びparallel_port.hライブラリで見出されるパラレルポート及びシリアルポート・ルーチンの使用方法を例示する。プログラムは、シリアルポート及びパラレルポート上で簡単なエコー・サーバを実現する。シリアルポートを介して受け取られたASCII値をLED上にバイナリーで表示するため、klib.hライブラリからのSetLEDs()関数が使用される:
【数3】
Figure 2004508617
Figure 2004508617
Figure 2004508617
Figure 2004508617
コードは、MASTERマクロを単純に定義するか、定義しないことによって、いずれのFPGAのためにもコンパイルすることができる(行1から5)。
【0197】
更なる情報
本明細書の主題に関する有用な情報は、次の文献から得ることができる。The Programmable Logic Data Book, Xilinx 1996; Handel−C Preprocessor Reference Manual, Handel−C Compiler Reference Manual, 及びHandel−C Language Reference Manual, Embedded Solutions Limited 1998; 及びXilinx Datasheets and Application notes。これらは、Xilinxウェブサイトhttp://www.xilinx.comから入手可能であり、参照してここに組み込まれる。
【0198】
例示的実施形態
本発明の実施形態によると、デバイスはFPGAデバイスの中にCreative MP3エンコーダ・エンジンをカプセル化する。図15は、本発明の例示的実施形態に従ったFPGAデバイス1500のブロック図である。デバイスの目的は、CD1502又はCDRWからFPGAの中へオーディオ・データを直接ストリームし、データを圧縮し、データをUSBホスト1504へプッシュすることである。USBホスト1504は、それをOASIS(Nomad2)デコーダへ引き渡す。このデバイスの動作の全てはPCから独立している。
【0199】
FPGAの設計は、前述したように、Embedded Solutions Limited(ESL)社からの「Handel−C」コンパイラを使用する。ESLによって提供されるEDAツールは、シリコンを再開発する必要なしに、FPGAを使用してソフトウェア・アルゴリズムを迅速に展開及び修正することを意図している。従って、ESLツールは、シリコン開発の代替として利用されることができ、より広い範囲の製品で使用されることができる。
【0200】
特徴の概観
FPGAは、好ましくは、次のものに必要なロジックを含む:
−MP3エンコーダ1506
−ユーザ・コマンド・ルックアップ・テーブル
−再生;
−休止;
−イジェクト;
−停止;
−スキップソング(順方向/逆方向);
−スキャンソング(順方向/逆方向);
−記録(MP3へのリップ)−>OASIS装置;
−ATAPI
−コマンド及び制御;
−コマンドFIFO;
−データ・バス;
−コマンド・バス;
−(2)64サンプルFIFO(16ビット*44.100kHz)
−シリアルポート(16550UART)、オプションとしてEEPROMインタフェース(I2C&I2S)
−ホスト・コントローラへのUSBインタフェース
−SDRAMコントローラ
−32ビットARM又はRISCプロセッサ。
【0201】
FPGAに加えて、好ましくは、次のものが提供される:
−USBホスト/ハブ・コントローラ(2USBポート)
−4MB SDRAM
−128K EEPROM
−9ピン・シリアルポート
−6つの制御ボタン
−CD又はCDRWのための40ピンIDEインタフェース。
【0202】
インタフェース
ATAPI(IDE)インタフェース;
ユーザ・インタフェース;
USBインタフェース。
【0203】
ネットワーク・ベース構成
図16は、プログラマブルロジックデバイスをネットワーク・ベースで構成するプロセス1600を示す。操作1602では、デフォルトのアプリケーションがプログラマブルロジックデバイス上でイニシエートされる。操作1604では、構成データのファイル要求が、ロジックデバイスから、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバへ送られる。操作1606で、構成データがネットワーク・サーバから受け取られる。構成データは、例えば、ビットファイル形式であってよい。操作1608で、構成データは、ロジックデバイスを構成して第2のアプリケーションを走らせるために使用される。操作1610で、第2のアプリケーションがロジックデバイス上で走る。
【0204】
本発明の1つの実施形態によると、ロジックデバイスは、1つ又は複数のフィールドプログラマブルゲートアレイ(FPGA)を含む。好ましくは、第1のFPGAは、構成データを受け取り、そのデータを使用して第2のFPGAを構成する。第1及び第2のFPGAは、異なったスピードで刻時されることができる。
【0205】
本発明の他の実施形態によると、デフォルトのアプリケーション及び第2のアプリケーションの双方が、ロジックデバイス上で同時に走ることができる。ロジックデバイスは、更に、ディスプレイスクリーン、タッチスクリーン、オーディオ・チップ、イーサネット・デバイス、パラレルポート、シリアルポート、RAMバンク、不揮発性メモリ、及び/又は他のハードウェア・コンポーネントを含むことができる。
【0206】
図17は、ハードウェア・デバイスの構成を遠隔から変更するプロセス1700を示す。操作1702で、ハードウェア・デバイスが、ネットワーク、例えば、インターネットを利用してアクセスされる。ここで、ハードウェア・デバイスは再構成可能ロジックで構成されている。1704では、ハードウェア・デバイスの現在の構成が、再構成情報を選択する前に検出される。操作1706で再構成情報が選択され、操作1708でハードウェア・デバイスへ送られる。操作1710では、ハードウェア・デバイスの再構成ロジックを再プログラムしてハードウェア・デバイスの構成を変更するため、再構成情報が使用される。
【0207】
ハードウェア・デバイスの再構成は、ハードウェア・デバイスから受け取られた要求に応答して実行されることができる。本発明の実施形態において、ハードウェア・デバイスは、ハードウェア・デバイスの製造者、ハードウェア・デバイスのベンダー、及び/又はハードウェア・デバイスのアドミニストレータのシステムによってアクセスされる。
【0208】
本発明の他の実施形態において、ロジックデバイスは、少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)を含む。好ましくは、第1のFPGAは、再構成情報を受け取り、第2のFPGAを構成するため再構成情報を使用する。
【0209】
例示的実施形態
図18は、データを処理し、周辺ハードウェアを制御するプロセス1800を示す。操作1802では、再構成可能ロジックデバイスの第1のフィールドプログラマブルゲートアレイ(FPGA)がイニシエートされる。第1のFPGAは、再構成データに従って、ロジックデバイスの第2のFPGAをプログラムするプログラミング機能で構成される。第2のFPGAを構成する再構成データは、操作1804で検索される。操作1806では、第1のFPGAが、第2のFPGAをプログラムしてアプリケーションを走らせるため、再構成データを利用するように命令される。操作1808では、第1のFPGAが、第2のFPGAをプログラムし、アプリケーションの実行に付随して周辺ハードウェアを制御するため、構成データを使用するように命令される。
【0210】
本発明の1つの実施形態において、不揮発性メモリに記憶されたデータは、第1のFPGAがイニシエートされたとき、プログラミング機能で第1のFPGAを構成するために利用される。本発明の他の実施形態において、構成データは、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバから検索される。構成データは、ビットファイルの形式で受け取られることができる。
【0211】
第1及び第2のFPGAは、異なったスピードで刻時されることができる。好ましくは、ロジックデバイスは、更に、ディスプレイスクリーン、タッチスクリーン、オーディオ・チップ、イーサネット・デバイス、パラレルポート、シリアルポート、RAMバンク、及び/又は不揮発性メモリを含む。
【0212】
更なる実施形態及び同等物
これまで、様々な実施形態が説明されたが、理解すべきは、それらの実施形態が、単に例として呈示され、限定として呈示されていないことである。従って、好適な実施形態の広さ及び範囲は、前述した例示的実施形態によって限定されるのではなく、以下のクレイム及び同等物に従ってのみ定義されるべきである。
【図面の簡単な説明】
【図1】
本発明の1つの実施形態をハードウェアで実現した略図である。
【図2】
構成データを再構成可能ロジックデバイスへ転送するインタフェースを提供するプロセスのフローチャートである。
【図3】
本発明の例示的実施形態に従ったディスプレイを示す図である。
【図4】
図3の例示的実施形態に従って再構成可能ロジックデバイスをイニシエートする例示的手順を示す図である。
【図5】
図3の例示的実施形態に従ってインターネットを介して電話を入れるため、再構成可能ロジックデバイスを使用するプロセスを示す図である。
【図6】
インターネットを介する呼び出しに答えるプロセスを示す図である。
【図7】
図3の例示的実施形態に従って電話機能の様々なパラメータを設定する構成スクリーンを示す図である。
【図8A】
図3の例示的実施形態に従って再構成可能ロジックデバイスを再構成したときに表示される例示的スクリーンを示す図である。
【図8B】
ハードウェア・ベースの再構成可能マルチメディア・デバイスを提供するプロセスを示す図である。
【図9】
本発明の例示的実施形態に従ったリソース管理デバイスのボードを示す略図である。
【図10】
図9のボードのJTAGチェーンを示す図である。
【図11】
本発明の実施形態に従ったパラレルポート・データ伝送システムの構造を示す図である。
【図12】
データを受け取るときの、典型的な一連の手順呼び出しを示すフローチャートである。
【図13】
データを送るときの、典型的な一連の手順呼び出しを示すフローチャートである。
【図14】
並行して走っている幾つかのプロセスを示す流れ図である。
【図15】
本発明の例示的実施形態に従ったFPGAデバイスのブロック図である。
【図16】
プログラマブルロジックデバイスをネットワーク・ベースで構成するプロセスのフローチャートである。
【図17】
ハードウェア・デバイスの構成を遠隔から変更するプロセスを示す図である。
【図18】
データを処理し、周辺ハードウェアを制御するプロセスを示す図である。
【符号の説明】
110 中央処理装置
112 システム・バス
114 ランダム・アクセス・メモリ(RAM)
116 読み出し専用メモリ(ROM)
118 I/Oアダプタ
120 ディスク記憶装置
122 ユーザ・インタフェース・アダプタ
124 キーボード
126 マウス
128 スピーカ
132 マイクロフォン
134 通信アダプタ
136 ディスプレイ・アダプタ
138 ディスプレイ装置
140 フィールドプログラマブルゲートアレイ(FPGA)
300 ディスプレイ
302 キーパッド・ボタン
304 ステータス・ウィンドウ
306 受け入れボタン
308 終了ボタン
310 mp3ボタン
312 ゲーム・ボタン
700 構成スクリーン
702、704 ボタン
706 ミュート・ボタン
708 ディスプレイ輝度ボタン
800 スクリーン
802 再生ボタン
804 停止ボタン
806 逆方向追跡ボタン
808 順方向追跡ボタン
810 休止ボタン
812 ミュート・ボタン
814 音量アップ・ボタン
816 音量ダウン・ボタン
818 出口ボタン
820 保存ボタン
900 ボード
902、904 Xilinx Virtex(商標)2000e FPGA
906 Intel StrongARM SA1110プロセッサ
908、910 大容量メモリ
912 I/Oポート
1000 JTAGチェーン
1100 パラレルポート・データ伝送システム
1102 ホスト・コンピュータ
1500 FPGAデバイス
1502 CD又はCDRW
1504 USBホスト
1506 MP3エンコーダ

Claims (21)

  1. プログラマブルロジックデバイスをネットワーク・ベースで構成する方法であって、前記方法は、
    (a)プログラマブルロジックデバイス上でデフォルトのアプリケーションをイニシエートするステップと、
    (b)ロジックデバイスから、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバへ、構成データのファイル要求を送るステップと、
    (c)ネットワーク・サーバから構成データを受け取るステップと、
    (d)ロジックデバイスが構成されるよう構成データを利用して、第2のアプリケーションを走らせるステップと、
    (e)ロジックデバイス上で第2のアプリケーションを走らせるステップと、を備える方法。
  2. 構成データがビットファイル形式で受け取られる、請求項1に記載の方法。
  3. ロジックデバイスが少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)を含む、請求項1または2に記載の方法。
  4. 第1のFPGAが構成データを受け取り、前記第1のFPGAが、構成データを利用して第2のFPGAを構成する、請求項3に記載の方法。
  5. ロジックデバイスが、異なったスピードで刻時される第1及び第2のFPGAを含む、請求項3または4に記載の方法。
  6. デフォルトのアプリケーション及び第2のアプリケーションの双方が、ロジックデバイス上で同時に走ることができる、請求項1、2、3、4または5に記載の方法。
  7. ロジックデバイスが、ディスプレイスクリーン、タッチスクリーン、オーディオ・チップ、イーサネット・デバイス、パラレルポート、シリアルポート、RAMバンク、及び不揮発性メモリのうちの少なくとも1つを更に含む、請求項1、2、3、4、5または6に記載の方法。
  8. プログラマブルロジックデバイスをネットワーク・ベースで構成するコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
    (a)プログラマブルロジックデバイス上でデフォルトのアプリケーションをイニシエートするコンピュータ・コードと、
    (b)ロジックデバイスから、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバへ、構成データのファイル要求を送るコンピュータ・コードと、
    (c)ネットワーク・サーバから構成データを受け取るコンピュータ・コードと、
    (d)ロジックデバイスが構成されるよう構成データを利用して、第2のアプリケーションを走らせるコンピュータ・コードと、
    (e)ロジックデバイス上で第2のアプリケーションを走らせるコンピュータ・コードと、
    を備える、コンピュータ・プログラム製品。
  9. 構成データがビットファイル形式で受け取られる、請求項8に記載のコンピュータ・プログラム製品。
  10. ロジックデバイスが少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)を含む、請求項8又は9に記載のコンピュータ・プログラム製品。
  11. 第1のFPGAが構成データを受け取り、前記第1のFPGAが、構成データを利用して第2のFPGAを構成する、請求項10に記載のコンピュータ・プログラム製品。
  12. ロジックデバイスが、異なったスピードで刻時される第1及び第2のFPGAを含む、請求項10又は11に記載のコンピュータ・プログラム製品。
  13. デフォルトのアプリケーション及び第2のアプリケーションの双方が、ロジックデバイス上で同時に走ることができる、請求項8、9、10、11または12に記載のコンピュータ・プログラム製品。
  14. ロジックデバイスが、ディスプレイスクリーン、タッチスクリーン、オーディオ・チップ、イーサネット・デバイス、パラレルポート、シリアルポート、RAMバンク、及び不揮発性メモリのうちの少なくとも1つを更に含む、請求項8、9、10、11、12または13に記載のコンピュータ・プログラム製品。
  15. プログラマブルロジックデバイスをネットワーク・ベースで構成するシステムであって、前記システムは、
    (a)プログラマブルロジックデバイス上でデフォルトのアプリケーションをイニシエートするロジックと、
    (b)ロジックデバイスから、ネットワークを利用して、ロジックデバイスから遠隔に置かれたサーバへ、構成データのファイル要求を送るロジックと、
    (c)ネットワーク・サーバから構成データを受け取るロジックと、
    (d)ロジックデバイスが構成されるよう構成データを利用して、第2のアプリケーションを走らせるロジックと、
    (e)ロジックデバイス上で第2のアプリケーションを走らせるロジックと、
    を備えるシステム。
  16. 構成データがビットファイル形式で受け取られる、請求項15に記載のシステム。
  17. ロジックデバイスが少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)を含む、請求項15又は16に記載のシステム。
  18. 第1のFPGAが構成データを受け取り、前記第1のFPGAが構成データを利用して第2のFPGAを構成する、請求項17に記載のシステム。
  19. ロジックデバイスが、異なったスピードで刻時される第1及び第2のFPGAを含む、請求項17又は18に記載のシステム。
  20. デフォルトのアプリケーション及び第2のアプリケーションの双方が、ロジックデバイス上で同時に走ることができる、請求項15、16、17、18または19に記載のシステム。
  21. ロジックデバイスが、ディスプレイスクリーン、タッチスクリーン、オーディオ・チップ、イーサネット・デバイス、パラレルポート、シリアルポート、RAMバンク、及び不揮発性メモリのうちの少なくとも1つを更に含む、請求項15、16、17、18、19または20に記載のシステム。
JP2002514570A 2000-07-20 2001-07-19 ソフトウェアが設計されたインターネット再構成可能ハードウェアのシステム、方法、及び製造物 Pending JP2004508617A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US21975300P 2000-07-20 2000-07-20
PCT/GB2001/003248 WO2002008936A2 (en) 2000-07-20 2001-07-19 System, method and article of manufacture for software-designed internet reconfigurable hardware

Publications (1)

Publication Number Publication Date
JP2004508617A true JP2004508617A (ja) 2004-03-18

Family

ID=22820633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002514570A Pending JP2004508617A (ja) 2000-07-20 2001-07-19 ソフトウェアが設計されたインターネット再構成可能ハードウェアのシステム、方法、及び製造物

Country Status (5)

Country Link
US (5) US20030041129A1 (ja)
EP (2) EP1374042A2 (ja)
JP (1) JP2004508617A (ja)
AU (6) AU2001270880A1 (ja)
WO (6) WO2002009403A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151763A (ja) * 2003-04-04 2009-07-09 Telechips Inc メディア処理装置
US10725984B2 (en) 2012-03-16 2020-07-28 Nec Corporation Time series data device, time series data processing method and time series data processing program storage medium
JP2021157801A (ja) * 2020-03-27 2021-10-07 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 分散コンピュータシステムにおける少なくとも1つのプログラマブルゲート装置をプログラミングする方法

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US7139743B2 (en) 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
GB0028079D0 (en) * 2000-11-17 2001-01-03 Imperial College System and method
US6691301B2 (en) * 2001-01-29 2004-02-10 Celoxica Ltd. System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures
JP4742429B2 (ja) * 2001-02-19 2011-08-10 住友電気工業株式会社 ガラス微粒子堆積体の製造方法
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US6892256B1 (en) * 2001-05-01 2005-05-10 Cisco Technology, Inc. Automated system for storing revision information from slave programmable devices in a master programmable device
US10031733B2 (en) * 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US7050923B2 (en) * 2001-08-15 2006-05-23 National Instruments Corporation Network-based system for configuring a measurement system using configuration information generated based on a user specification
US20030097510A1 (en) * 2001-11-20 2003-05-22 Francis Joseph System-On-Chip architecture that utilizes FeRAM and re-configurable hardware
JP3763466B2 (ja) * 2001-12-11 2006-04-05 キヤノン株式会社 プリンタコマンド制御装置、方法、及びシステム、並びに該装置に接続するプリンタ、並びにプログラム及び記憶媒体
JP3548829B2 (ja) * 2002-01-10 2004-07-28 オムロン株式会社 ユニット及びplc並びにユーザプログラムの処理方法
US6754882B1 (en) 2002-02-22 2004-06-22 Xilinx, Inc. Method and system for creating a customized support package for an FPGA-based system-on-chip (SoC)
US6941538B2 (en) * 2002-02-22 2005-09-06 Xilinx, Inc. Method and system for integrating cores in FPGA-based system-on-chip (SoC)
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7711844B2 (en) * 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
EP2528000B1 (en) 2003-05-23 2017-07-26 IP Reservoir, LLC Intelligent data storage and processing using FPGA devices
CA2530228A1 (en) * 2003-06-27 2005-01-06 Dr. Reddy's Research Foundation Compositions comprising balaglitazone and further antidiabetic compounds
KR100542436B1 (ko) * 2003-12-22 2006-01-11 한국전자통신연구원 유무선 인터넷 전화용 시스템온칩 개발 장치
WO2005124552A1 (en) * 2004-06-15 2005-12-29 Tania Sheree Farrugia Method and system for management of one or more remote computing systems
US8747226B2 (en) * 2004-07-07 2014-06-10 Nintendo Of America, Inc. Car-based entertainment system with video gaming
US7689726B1 (en) * 2004-10-01 2010-03-30 Xilinx, Inc. Bootable integrated circuit device for readback encoding of configuration data
US8499337B1 (en) 2004-10-06 2013-07-30 Mcafee, Inc. Systems and methods for delegation and notification of administration of internet access
KR100626663B1 (ko) * 2004-12-14 2006-09-25 한국전자통신연구원 인터넷 전화용 시스템온칩 개발 및 검증 장치
WO2006096324A2 (en) 2005-03-03 2006-09-14 Washington University Method and apparatus for performing biosequence similarity searching
GB2412461B (en) * 2005-05-05 2006-03-29 Business Serve Plc Method for the remote configuration of voice over IP telephones and voice over IP telephone adapters
CN100426233C (zh) * 2005-12-09 2008-10-15 中兴通讯股份有限公司 一种由嵌入式cpu自动配置可编程器件的方法
US7539967B1 (en) * 2006-05-05 2009-05-26 Altera Corporation Self-configuring components on a device
US7840482B2 (en) * 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7921046B2 (en) * 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7809936B2 (en) 2006-08-02 2010-10-05 Freescale Semiconductor, Inc. Method and apparatus for reconfiguring a remote device
US8326819B2 (en) * 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8407658B2 (en) 2007-02-01 2013-03-26 International Business Machines Corporation Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device
US8054631B2 (en) * 2007-03-13 2011-11-08 International Business Machines Corporation Computer packaging system
US20080243299A1 (en) * 2007-03-27 2008-10-02 Haas Automation, Inc. Machine tool control system
US8144702B1 (en) * 2007-06-14 2012-03-27 Xilinx, Inc. Generation of a pipeline for processing a type of network packets
US8092251B2 (en) * 2007-12-29 2012-01-10 Apple Inc. Active electronic media device packaging
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
CA3059606C (en) 2008-12-15 2023-01-17 Ip Reservoir, Llc Method and apparatus for high-speed processing of financial market depth data
US20130232328A1 (en) * 2010-11-18 2013-09-05 Thomson Licensing Method to safely reprogram an fpga
EP2649580A4 (en) 2010-12-09 2014-05-07 Ip Reservoir Llc METHOD AND DEVICE FOR THE MANAGEMENT OF CONTRACTS IN FINANCIAL MARKETS
CN102130951B (zh) * 2011-03-14 2014-12-17 浪潮(北京)电子信息产业有限公司 一种服务器及其可编程逻辑器件的远程升级方法
US9047243B2 (en) 2011-12-14 2015-06-02 Ip Reservoir, Llc Method and apparatus for low latency data distribution
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10599404B1 (en) * 2012-06-01 2020-03-24 Altera Corporation M/A for compiling parallel program having barrier synchronization for programmable hardware
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US9563972B2 (en) * 2012-10-22 2017-02-07 FifthyThree, Inc. Methods and apparatus for providing color palette management within a graphical user interface
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9819542B2 (en) 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
CN106897097A (zh) * 2017-02-27 2017-06-27 深圳市风云实业有限公司 一种用epld加载多片fpga的方法及系统
CN106952650B (zh) * 2017-02-28 2019-10-11 大连理工大学 一种基于arm+fpga架构的列车语音放大单元
CN109976267B (zh) * 2018-11-29 2022-06-21 贵州航天电子科技有限公司 一种智能教育管家装置
CN112162794B (zh) * 2020-09-30 2023-03-28 新华三大数据技术有限公司 一种单板启动方法、装置、单板以及网络设备
US11323325B1 (en) 2021-04-26 2022-05-03 At&T Intellectual Property I, L.P. System and method for remote configuration of scalable datacenter

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321840A (en) * 1988-05-05 1994-06-14 Transaction Technology, Inc. Distributed-intelligence computer system including remotely reconfigurable, telephone-type user terminal
US5572572A (en) * 1988-05-05 1996-11-05 Transaction Technology, Inc. Computer and telephone apparatus with user friendly interface and enhanced integrity features
US5367209A (en) * 1992-01-07 1994-11-22 Hauck Scott A Field programmable gate array for synchronous and asynchronous operation
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
US5802290A (en) * 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US5596742A (en) * 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5537607A (en) * 1993-04-28 1996-07-16 International Business Machines Corporation Field programmable general purpose interface adapter for connecting peripheral devices within a computer system
JPH07271697A (ja) * 1994-03-30 1995-10-20 Sony Corp 情報端末装置およびその情報伝送方法
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
JP3736855B2 (ja) * 1995-07-10 2006-01-18 ジーリンクス インコーポレイテッド フィールドプログラマブル・ゲートアレイ及びインテリジェント・メモリを含んでいるシステム
US5737766A (en) * 1996-02-14 1998-04-07 Hewlett Packard Company Programmable gate array configuration memory which allows sharing with user memory
US6237029B1 (en) * 1996-02-26 2001-05-22 Argosystems, Inc. Method and apparatus for adaptable digital protocol processing
DE19610840C2 (de) * 1996-03-19 2000-04-13 Siemens Ag Verfahren zum Laden von elektronischen Spielen auf ein mobiles Kommunikationsendgerät eines Mobil-Kommunikationsnetzes
US6023565A (en) * 1996-03-29 2000-02-08 Xilinx, Inc. Method for configuring circuits over a data communications link
US5887165A (en) * 1996-06-21 1999-03-23 Mirage Technologies, Inc. Dynamically reconfigurable hardware system for real-time control of processes
US5968161A (en) * 1996-08-29 1999-10-19 Altera Corporation FPGA based configurable CPU additionally including second programmable section for implementation of custom hardware support
US5940438A (en) * 1997-02-18 1999-08-17 Mitsubishi Electric Information Technology Center America, Inc (Ita) Universal modem for digital video, audio and data communications
US6028463A (en) * 1997-10-15 2000-02-22 Lucent Technologies Inc. Programmable clock manager for a programmable logic device that can generate at least two different output clocks
US5995744A (en) * 1997-11-24 1999-11-30 Xilinx, Inc. Network configuration of programmable circuits
US6279045B1 (en) * 1997-12-29 2001-08-21 Kawasaki Steel Corporation Multimedia interface having a multimedia processor and a field programmable gate array
US6230307B1 (en) * 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
US5999025A (en) * 1998-03-27 1999-12-07 Xilinx, Inc. Phase-locked loop architecture for a programmable logic device
JPH11284680A (ja) * 1998-03-30 1999-10-15 Yamaha Corp 電子機器、電子機器の回路構成変更方法およびカラオケ装置
US6088785A (en) * 1998-04-15 2000-07-11 Diamond Multimedia Systems, Inc. Method of configuring a functionally redefinable signal processing system
US5999990A (en) * 1998-05-18 1999-12-07 Motorola, Inc. Communicator having reconfigurable resources
DE69932252T2 (de) * 1998-10-30 2007-06-06 Avocent Huntsville Corp., Huntsville Geteilter rechner
US6311316B1 (en) * 1998-12-14 2001-10-30 Clear Logic, Inc. Designing integrated circuit gate arrays using programmable logic device bitstreams
GB2344905A (en) * 1998-12-17 2000-06-21 Canon Kk Hand held electronic device with back entry touch pad
US6539438B1 (en) * 1999-01-15 2003-03-25 Quickflex Inc. Reconfigurable computing system and method and apparatus employing same
US6425077B1 (en) * 1999-05-14 2002-07-23 Xilinx, Inc. System and method for reading data from a programmable logic device
US6625787B1 (en) * 1999-08-13 2003-09-23 Xilinx, Inc. Method and apparatus for timing management in a converted design
US6501389B1 (en) * 1999-09-27 2002-12-31 Niles Audio Corporation Audio, video, or multimedia system keypad controller having multiple vector control paths and associated methods
CA2327061A1 (en) * 1999-12-02 2001-06-02 Effi Shiri Customizable scripting based telephone system and telephone devices
US6640275B1 (en) * 1999-12-22 2003-10-28 Nortel Networks Limited System and method for data transfer between buses having different speeds
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6772212B1 (en) * 2000-03-08 2004-08-03 Phatnoise, Inc. Audio/Visual server
US6721489B1 (en) * 2000-03-08 2004-04-13 Phatnoise, Inc. Play list manager
US6326806B1 (en) * 2000-03-29 2001-12-04 Xilinx, Inc. FPGA-based communications access point and system for reconfiguration
DE10018374A1 (de) * 2000-04-13 2001-10-18 Siemens Ag Mobiles Endgerät
US6381733B1 (en) * 2000-05-10 2002-04-30 Lucent Technologies Inc. System and method for instantiating logic blocks within an FPGA
US6614267B2 (en) * 2000-12-01 2003-09-02 Kabushiki Kaisha Toshiba Electronic circuit device and hybrid integrated circuit with an ASIC and an FPGA

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151763A (ja) * 2003-04-04 2009-07-09 Telechips Inc メディア処理装置
US10725984B2 (en) 2012-03-16 2020-07-28 Nec Corporation Time series data device, time series data processing method and time series data processing program storage medium
JP2021157801A (ja) * 2020-03-27 2021-10-07 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 分散コンピュータシステムにおける少なくとも1つのプログラマブルゲート装置をプログラミングする方法
JP7359798B2 (ja) 2020-03-27 2023-10-11 ディスペース ゲー・エム・ベー・ハー 分散コンピュータシステムにおける少なくとも1つのプログラマブルゲート装置をプログラミングする方法

Also Published As

Publication number Publication date
WO2002008889A3 (en) 2003-05-30
US20030036895A1 (en) 2003-02-20
AU2001270873A1 (en) 2002-02-05
EP1374042A2 (en) 2004-01-02
US20030041129A1 (en) 2003-02-27
US20030033514A1 (en) 2003-02-13
WO2002008937A3 (en) 2003-10-09
WO2002008936A2 (en) 2002-01-31
AU2001272646A1 (en) 2002-02-05
WO2002009286A2 (en) 2002-01-31
AU2001270878A1 (en) 2002-02-05
AU2001270881A1 (en) 2002-02-05
WO2002008937A2 (en) 2002-01-31
WO2002008889A2 (en) 2002-01-31
US20030033450A1 (en) 2003-02-13
WO2002008936A3 (en) 2003-10-09
WO2002009403A2 (en) 2002-01-31
WO2002008888A3 (en) 2004-02-26
WO2002009286A3 (en) 2003-05-30
EP1334437A2 (en) 2003-08-13
WO2002009403A3 (en) 2002-10-17
AU2001270880A1 (en) 2002-02-05
US20030028690A1 (en) 2003-02-06
WO2002008888A2 (en) 2002-01-31
AU2001272648A1 (en) 2002-02-05

Similar Documents

Publication Publication Date Title
JP2004508617A (ja) ソフトウェアが設計されたインターネット再構成可能ハードウェアのシステム、方法、及び製造物
US6173438B1 (en) Embedded graphical programming system
KR100952549B1 (ko) 응용 프로그래밍 인터페이스의 설계
US20030187662A1 (en) System, method, and article of manufacture for a reconfigurable hardware-based audio decoder
US20030184593A1 (en) System, method and article of manufacture for a user interface for an MP3 audio player
US6105119A (en) Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
US6038590A (en) Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6179489B1 (en) Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
JP3587095B2 (ja) 情報処理装置
US20020100029A1 (en) System, method and article of manufacture for compiling and invoking C functions in hardware
US20030066057A1 (en) System, method and article of manufacture for collaborative hardware design
EP0844576A2 (en) Computer system and method for performing design automation in a distributed computing environment
US20030055658A1 (en) System, method and article of manufacture for dynamic, automated fulfillment of an order for a hardware product
US20030055770A1 (en) System, method and article of manufacture for an auction-based system for hardware development
US20030055769A1 (en) System, method and article of manufacture for a library-based hardware configuration service
Parashar et al. LEAP: A virtual platform architecture for FPGAs
Gay Advanced raspberry pi: raspbian linux and GPIO integration
US20030079060A1 (en) Universal download program for establishing communication with a gate array
Kirchgessner et al. Reconfigurable computing middleware for application portability and productivity
WO2002009285A2 (en) System, method and article of manufacture for dynamic programming of one reconfigurable logic device from another reconfigurable logic device
WO2002008886A2 (en) System, method and article of manufacture for controlling the use of resources
Gay et al. Usb
Takizawa et al. clMPI: An OpenCL extension for interoperation with the message passing interface
Willenberg Heterogeneous Runtime Support for Partitioned Global Address Space Programming on FPGAs
Wu et al. Design and implementation of a distributed real-time image processing system