(57)【要約】  プログラマブル・デバイス（１４）のフォールト・トレラントなプログラミングを、最初にバウンダリ・スキャン・インタフェース（１８）を介して当該プログラマブル・デバイスに問合せを行って当該デバイスを識別するホスト・コントローラ（２０）によって有利に行う。その後、ホスト・コントローラは、当該デバイスの識別に応じてプログラム・ファイルを選択し、その後バウンダリ・スキャン・インタフェースを介してダウンロードして、当該デバイスのプログラミングを行う。その後、ホスト・コントローラは、プログラミングがうまく行われたことを検証する。
2010507227.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプログラマブル・デバイスをプログラミングする方法であって、
（ａ）バウンダリ・スキャン・インタフェースを介して少なくとも１つのプログラマブル・デバイスに問合せを行ってデバイス識別を確認するステップと、
（ｂ）前記デバイス識別に対応する少なくとも１つのプログラムで、前記バウンダリ・スキャン・インタフェースを介して前記デバイスをプログラミングするステップと、
（ｃ）前記プログラマブル・デバイスがうまくプログラミングされていることを検証するステップと、
を含む、前記方法。
【請求項２】
問合せを行う前記ステップが、
（ｄ）前記バウンダリ・スキャン・インタフェースを介して前記プログラマブル・デバイスに信号を入力して前記デバイスに応答を起こさせるステップと、
（ｅ）前記応答を分析して前記デバイスを識別するステップと、
を含む、請求項１に記載の方法。
【請求項３】
デバイスがうまく識別されるまで前記ステップ（ｄ）および（ｅ）が繰り返される、請求項２に記載の方法。
【請求項４】
デバイスのプログラミングがうまく検証されるまでステップ（ａ）および（ｂ）が繰り返される、請求項１に記載の方法。
【請求項５】
デバイスの再プログラミングを行うためにプログラマブル・デバイスを動作させる方法であって、
（ａ）デバイス識別の確認のために前記デバイスに入力された信号を受信したときに、前記デバイスと関連するバウンダリ・スキャン・インタフェースを介して応答信号を生成するステップと、
（ｂ）前記デバイス識別に対応する少なくとも１つのプログラムとともに前記バウンダリ・スキャン・インタフェースを介してプログラム・ファイルを受信するステップと、
（ｃ）前記プログラマブル・デバイスがうまくプログラミングされていることを示す検証結果を提供するステップと、
を含む、前記方法。
【請求項６】
少なくとも１つのＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）チェーンを介してホスト・コントローラと結合されたプログラマブル・デバイスをプログラミングする方法であって、
（ａ）前記ＪＴＡＧチェーン内のバウンダリ・スキャン・インタフェースのみを介して少なくとも１つのプログラマブル・デバイスに問合せを行ってデバイス識別を確認するステップと、
（ｂ）前記デバイス識別に対応する少なくとも１つのプログラムで、前記バウンダリ・スキャン・インタフェースを介して前記デバイスをプログラミングするステップと、
（ｃ）前記プログラマブル・デバイスがうまくプログラミングされていることを検証するステップと、
を含む、前記方法。
【請求項７】
プログラマブル・デバイスをプログラミングする装置であって、
前記プログラマブル・デバイスに結合されたバウンダリ・スキャン・インタフェースと、
前記バウンダリ・スキャン・インタフェースを介して前記プログラマブル・デバイスに問合せを行ってデバイス識別を確認する手段と、
前記デバイス識別に対応する少なくとも１つのプログラムで、前記バウンダリ・スキャン・インタフェースを介して前記デバイスをプログラミングする手段と、
前記プログラマブル・デバイスがうまくプログラミングされていることを検証する手段と、
を含む、前記装置。
【請求項８】
前記問合せ手段および前記検証手段が集合的に中央処理装置を構成する、請求項７に記載の装置。
【請求項９】
前記プログラミング手段がプログラマブル・デバイスを含む、請求項７に記載の装置。
【請求項１０】
前記プログラマブル・デバイスがフィールド・プログラマブル・ゲート・アレイを含む、請求項８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、米国特許法１１９条（ｅ）に基づき、２００６年１０月１６日出願の米国仮特許出願第６０／８５１９５４号に対する優先権を主張するものである。
【０００２】
本発明は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのプログラマブル・デバイスをプログラミングする技術に関する。
【背景技術】
【０００３】
電子システムの中には、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのプログラマブル・デバイスを１つまたは複数含むものがある。通常のＦＰＧＡは、様々な論理関係を生じるように設定することができる構成可能な論理ブロックで構成された複数のプログラマブル（プログラム可能な）回路を有する半導体デバイスを含む。電子システム内でＦＰＧＡを使用することにより、１つまたは複数の論理ブロックを再構成してＦＰＧＡを変更し、従って電子システムの動作を変更する機能を得ることができる。例えば、ＦＰＧＡを再構成する機能によって、電子システムの製造後および配布後に発見された欠陥（例えば「バグ」）を修正する可能性が得られる。さらに、ＦＰＧＡが再構成可能な性質であることにより、新しい機構および機能を電子システムに付加する再プログラミングも可能になる。
【０００４】
ＦＰＧＡを再プログラミングするフォールト・トレラント（耐障害性）な方法は現在でも存在するが、それらの方法は簡潔性に欠け、追加の外部構成要素が必要となる。例えば、１つの技術では、複数の外部メモリ記憶要素を使用し、検証プロセスが成功した場合のみその１つを使用に備えて選択的にプログラミングする必要がある。別の技術は、プログラミング・データを受信して検証した後でそのデータをＦＰＧＡまたはそれと関連付けられたメモリ記憶要素に転送することができるローカルなＣＰＵを実装する役割を果たす。フィールド・プログラマブル・デバイスのコード更新を行うために一般に使用される別の方法では、フィールド置換可能なメモリ要素を使用する必要がある。これらのデバイスの動作コードを更新するためには、機器の運用を停止してメモリ要素を交換しなければならない。さらに別の技術では、フィールド・プログラマブル・メモリ要素を更新するために、外部プログラミング機器と物理的に接続する必要がある。この手作業による方法では、プログラミング・プロセスの途中で電力が遮断されるとプログラマブル・デバイスがメモリ記憶要素から不正確なデータを読み取ることになるので、監視が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、上記のような従来技術の欠点を克服する、システム内部でプログラマブル・デバイスのフォールト・トレラントなプログラミングを行う技術が必要とされている。
【課題を解決するための手段】
【０００６】
簡潔に述べると、本発明の原理の好ましい実施例によれば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）など（ただしこれに限定されない）のプログラマブル・デバイスをプログラミングする技術が提供される。この技術は、バウンダリ・スキャン・インタフェースを介してプログラマブル・デバイスに問合せを行って、当該デバイスを識別することから開始される。その後、そのデバイスは、そのデバイスの識別に対応する少なくとも１つのプログラムによってプログラミングされる。その後、プログラミングの検証を行う。
【図面の簡単な説明】
【０００７】
【図１】本発明の原理の例示的な実施例による、ホスト・コントローラを介してプログラミングされるプログラマブル・デバイスを含むシステムを示す概略ブロック図である。
【図２】本発明の原理による図１に示すプログラマブル・デバイスをプログラミングする方法の各ステップを示す流れ図である。
【発明を実施するための形態】
【０００８】
以下で詳細に述べるように、本発明の原理によれば、バウンダリ・スキャン・インタフェースを通じてフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのプログラマブル・デバイスのフォールト・トレラントなプログラミングを自動的に行う技術が提供される。実際には、ＦＰＧＡの再プログラミングには２つの方法がある。１つは一時的方法、もう１つは永久的方法である。本明細書で述べる本発明の原理による技術は、一時的プログラミング、永久的プログラミングの両方に適用することができるが、以下ではＦＰＧＡの永久的プログラミングに注目して説明する。一般に、ＦＰＧＡは、その動作を記述したカスタム・プログラムを記憶する記憶要素を含む。この記憶要素は、ＦＰＧＡ内部に存在していても良いし、外部に存在していても良い。以下で述べるように、本発明の原理による技術は、ＦＰＧＡが後の電源投入状態のときにこのメモリ記憶要素に記憶された新しいプログラムを読み取ることができるように、この記憶要素を永久的にプログラミングすることができる。
【０００９】
本発明の原理によるプログラミング技術は、図１を参照すると最もよく理解することができる。図１は、様々な信号処理機能を実行する少なくとも１つ、好ましくは複数のモジュール１２１〜１２ｎを含むシステム１０を示す。例えば、これらのモジュールのうち１つまたは複数は、映像情報、音声情報、時刻コード情報および補助的情報の１つまたは複数を処理することもできる。少なくとも１つのモジュール、例えばモジュール１２１は、少なくとも１つのプログラマブル・デバイス、例えばＦＰＧＡ１４を有し、且つ例えばメモリ要素１６など、上述のように本発明の原理によるプログラミングを受けることができるその他のデバイスを含むこともできる。動作中には、ＦＰＧＡ１４は、メモリ要素１６を読み取ってＦＰＧＡの動作を変更することができる。
【００１０】
実際には、ＦＰＧＡ１４は、一度設定した後でＦＰＧＡのプログラミングに応答してインタフェースを介してリセットすることができる、構成可能な論理ブロック（図示せず）を１つまたは複数有する。従来は、モジュール１２１上のＦＰＧＡ１４のフォールト・トレラントなプログラミングを行うには、通常は、技術者がシステム１０のところまで出向いて当該モジュールに物理的にアクセスする必要があった。そして、その作業のために特殊な機器が必要となり、再プログラミングがコスト高で時間のかかる作業になることも多かった。
【００１１】
電子システム１０とホスト・コントローラ２０の間でバウンダリ・スキャン・インタフェース１８を使用する本発明の原理による技術を用いることで、ＦＰＧＡ１４のフォールト・トレラントなプログラミングは、手作業を介在させずに行うことができる。バウンダリ・スキャン・インタフェース１８の性質の理解のために、バウンダリ・スキャン・テスト技術について簡単に説明しておく。ＩＥＥＥ１１４９．１  Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）標準に定義されるバウンダリ・スキャン技術は、必ずしも各回路の個々のピンにアクセスしなくても大規模集積回路（ＬＳＩ）（または集積回路（ＩＣ）を組み合わせたもの）を試験できる機構を提供するものである。その代わりに、集積回路の１つまたは複数のピン（または２つ以上の回路のピン）は、信号を外部ソースからこれらの回路のピンに接続する機構を提供するバウンダリ・スキャン・インタフェースに結合される。バウンダリ・スキャン・インタフェースに結合された（１つまたは複数の）集積回路のピンは、（１つまたは複数の）集積回路それぞれの内部のバウンダリ・スキャン・セルと関連付けられ、それらのバウンダリ・スキャン・セルはシリアル・チェーン状に結合され、１つのピンに入力された信号が当該チェーン内をシリアルにシフトして別のピンから出力されるようになっている。バウンダリ・スキャン・インタフェースを介して特定の集積回路または相互接続された回路の組合せに入力された所与の信号は、その回路または回路の組合せを示す信号を生じることになる。
【００１２】
ホスト・コントローラ２０は、中央処理装置（ＣＰＵ）２２の制御下で、モジュール１２１のＦＰＧＡ１４のプログラミング（ならびに適切な場合にはその他のモジュールのその他のプログラマブル・デバイスのプログラミング）を行う。ホスト・コントローラ２０のＣＰＵ２２は、ネットワーク・インタフェース２４を介してコマンドおよびプログラム情報の両方を受信することができる。プログラミングの開始を求めるコマンドに応答して、ＣＰＵ２２は、最初にモジュールを識別し、その後当該識別に対応するモジュール１２１にプログラミングを供給し、これがＦＰＧＡ１４または当該モジュール上のメモリ要素１６で受信される。例えば、ＣＰＵ２２は、モジュールを識別した後で、最初にホスト・コントローラ２０と関連するＦＰＧＡ２６をプログラミングし、その後にこのプログラムをモジュール１２１上のＦＰＧＡ１４またはメモリ要素１６に複製することによって、このプログラミングを実施することもできる。その他のモジュールのその他のプログラマブル・デバイスも、同様にプログラミングすることができる。ホスト・コントローラ２０においてＦＰＧＡ２６を使用してプログラミング情報を記憶し、後にモジュール１２１などのモジュール上のＦＰＧＡ１４などのプログラマブル・デバイスに転送する代わりに、ホスト・コントローラにおいて別のタイプのメモリをこの目的のために利用することもできる。
【００１３】
ホスト・コントローラ２０によるＦＰＧＡ１４の識別では、製造時にＦＰＧＡ１４に割り当てられたＪＴＡＧ識別コードを利用する。ホスト・コントローラ２０は、ＪＴＡＧ識別コードおよびＦＰＧＡの割当てＩ／Ｏピンを使用して、モジュールの目標プログラムを一意に識別する。この方法では、同じタイプのＦＰＧＡ（同じ識別コードを有するＦＰＧＡ）を使用する複数のモジュールが、ＦＰＧＡの割当てＩ／Ｏピンという追加構成に基づいて異なるプログラムを有することが可能になる。識別コードおよびＦＰＧＡの割当てＩ／Ｏピンの両方を使用することにより、ホスト・コントローラ２０は、目標プログラムを適切に識別することができ、それにより同じタイプまたは異なるタイプのＦＰＧＡを用いる複数のモジュールが単一のホスト・コントローラと通信して正しい目標プログラム・コードを取得できるようにすることができる。複数のモジュールの場合には、それらのモジュールは、通常はそれぞれのバウンダリ・スキャン・インタフェースを介して一本または複数本のＪＴＡＧチェーンで互いに接続されている。
【００１４】
図２は、図１に示すホスト・コントローラ２０で利用される、図１に示すモジュール１２１〜１２ｎのうち１つまたは複数のプログラマブル・デバイス（例えばＦＰＧＡ１４）をプログラミングする例示的な方法の各ステップを流れ図の形態で示している。この方法は、ホスト・コントローラ２０がバウンダリ・スキャンに基づくモジュール識別を開始する図２のステップ１００から始まる。この目的のために、ホスト・コントローラ２０は、通常は複数の既知の値を含むベクトルの形態をした信号を図１に示すバウンダリ・スキャン・インタフェース１８に入力し、図１に示すモジュール１２１に、当該モジュールの性質に基づく特定の応答を起こさせる。次いで、ホスト・コントローラ２０は、前述のようにＪＴＡＧ識別コードおよびＦＰＧＡのＩ／Ｏピン割当てを考慮しながら、その応答を分析する。モジュールに信号を入力し、その後その応答を分析することによって、ホスト・コントローラ２０は、当該モジュールに問合せを行ってその識別を確認する働きをする。ステップ１００の後、ホスト・コントローラ２０は、図２に示すステップ１０２で、モジュールから受信した応答に基づいて当該モジュールを識別することができるかどうかを判定する。図１に示すホスト・コントローラ２０がモジュールをうまく識別することができない場合には、モジュールの識別に成功するまでステップ１００を繰り返す。なお、モジュール１２１などのモジュールは、ＦＰＧＡ１４などのプログラマブル・デバイスを１つしか含んでいなくても良いことに留意されたい。従って、ステップ１００でモジュール１２１の問合せを開始することにより、ホスト・コントローラは、効果的にプログラマブル・デバイスの問合せを行う。
【００１５】
モジュールの識別に成功すると、ステップ１０４で、ホスト・コントローラ２０は、対応する識別されたモジュールのための１つまたは複数の特定のプログラム・ファイルを取り出す。実際には、図１に示すホスト・コントローラ２０は、通常は、図１に示すネットワーク・インタフェース２４を介して外部ソース（図示せず）から（１つまたは複数の）対応するモジュール特定プログラム・ファイルを取り出す。あるいは、ホスト・コントローラ２０は、対応するモジュール特定プログラム・ファイルをローカル・メモリ（図示せず）から取り出すこともできる。
【００１６】
ステップ１０４で（１つまたは複数の）対応するモジュール特定プログラム・ファイルを取り出した後、ステップ１０６で、ホスト・コントローラは、バウンダリ・スキャンに基づくモジュール・プログラミングを開始する。この目的のために、ホスト・コントローラ２０は、図１に示すバウンダリ・スキャン・インタフェース１８を介して（１つまたは複数の）モジュール特定プログラム・ファイルをダウンロードし、所与のモジュールのＦＰＧＡ１４内のプログラマブル論理ブロックをプログラミングする。（当該モジュールのプログラマブル・デバイスが異なる動作をする場合には、ホスト・コントローラ２０は、当該デバイスを再プログラミングするように（１つまたは複数の）モジュール特定プログラム・ファイルをダウンロードする。）
【００１７】
ステップ１０８で、ホスト・コントローラ２０は、プログラミングが完了しているかどうかを確認する。完了していない場合には、プログラミングの実行はステップ１００に戻り、そこからその後のステップを繰り返す。ステップ１０６を繰り返すのではなく、プログラミング・プロセスの最初のステップ（ステップ１００）に戻ることは、このプログラミング・プロセスをフォールト・トレラントにする助けとなる。ステップ１０８でプログラミングが完了していないと判定されたとき、単にステップ１０６を繰り返すだけでは、最終的に実行されたプログラミングに欠陥が生じる危険性が生じる恐れがある。それに対して、ステップ１０８でプログラミングが完了していないと判定されたときにステップ１００に戻ってプログラミング・プロセスを再開すると、プログラミングに欠陥が生じる可能性が大幅に低下する。
【００１８】
図２に示すステップ１０８を実行した後、次にステップ１１０が行われ、図１に示すホスト・コントローラ２０が、バウンダリ・スキャンに基づくプログラミングの検証を開始する。ステップ１１２で、ホスト・コントローラ２０は、プログラミングの検証がうまく行われたかどうかを判定する。うまく行われていない場合には、上記と同様に、ステップ１００およびその後続のステップを再実行して、フォールト・トレラント性を保証する。ステップ１１２でプログラミングの検証がうまく行われたと判定されたときには、ステップ１１４で、図１に示すホスト・コントローラ２０は、バウンダリ・スキャンに基づくモジュール識別およびプログラミング・プロセスを終了する。
【００１９】
以上、手作業の介在を必要としない、プログラマブル要素のフォールト・トレラントなプログラミングを行う技術について述べた。
【図１】
2010507227.tif 000003
【図２】
2010507227.tif 000004
【手続補正書】
【提出日】平成21年10月28日(2009.10.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプログラマブル・デバイスをプログラミングする方法であって、
（ａ）バウンダリ・スキャン・インタフェースを介して少なくとも１つのプログラマブル・デバイスに問合せを行ってデバイス識別を確認するステップと、
（ｂ）前記デバイス識別に対応する少なくとも１つのプログラムで、前記バウンダリ・スキャン・インタフェースを介して前記デバイスをプログラミングするステップと、
（ｃ）前記プログラマブル・デバイスがうまくプログラミングされていることを検証するステップと、
を含む、前記方法。
【請求項２】
前記ステップ（ａ）が、
（ｄ）前記バウンダリ・スキャン・インタフェースを介して前記プログラマブル・デバイスに信号を入力して前記デバイスに応答を起こさせるステップと、
（ｅ）前記応答を分析して前記デバイスを識別するステップと、
を含む、請求項１に記載の方法。
【請求項３】
デバイスがうまく識別されるまで前記ステップ（ｄ）および（ｅ）が繰り返される、請求項２に記載の方法。
【請求項４】
デバイスのプログラミングがうまく検証されるまでステップ（ａ）および（ｂ）が繰り返される、請求項１に記載の方法。
【請求項５】
デバイスの再プログラミングを行うためにプログラマブル・デバイスを動作させる方法であって、
（ａ）デバイス識別の確認のために前記デバイスに入力された信号を受信したときに、前記デバイスと関連するバウンダリ・スキャン・インタフェースを介して応答信号を生成するステップと、
（ｂ）前記デバイス識別に対応する少なくとも１つのプログラムとともに前記バウンダリ・スキャン・インタフェースを介してプログラム・ファイルを受信するステップと、
（ｃ）前記プログラマブル・デバイスがうまくプログラミングされていることを示す検証結果を提供するステップと、
を含む、前記方法。
【請求項６】
少なくとも１つのＪＴＡＧチェーンを介してホスト・コントローラと結合されたプログラマブル・デバイスをプログラミングする方法であって、
（ａ）前記ＪＴＡＧチェーン内のバウンダリ・スキャン・インタフェースのみを介して少なくとも１つのプログラマブル・デバイスに問合せを行ってデバイス識別を確認するステップと、
（ｂ）前記デバイス識別に対応する少なくとも１つのプログラムで、前記バウンダリ・スキャン・インタフェースを介して前記デバイスをプログラミングするステップと、
（ｃ）前記プログラマブル・デバイスがうまくプログラミングされていることを検証するステップと、
を含む、前記方法。
【請求項７】
プログラマブル・デバイスをプログラミングする装置であって、
（ａ）前記プログラマブル・デバイスに結合されたバウンダリ・スキャン・インタフェースと、
（ｂ）前記バウンダリ・スキャン・インタフェースを介して前記プログラマブル・デバイスに問合せを行ってデバイス識別を確認する手段と、
（ｃ）前記デバイス識別に対応する少なくとも１つのプログラムで、前記バウンダリ・スキャン・インタフェースを介して前記デバイスをプログラミングする手段と、
（ｄ）前記プログラマブル・デバイスがうまくプログラミングされていることを検証する手段と、
を含む、前記装置。
【請求項８】
前記手段（ｂ）および前記手段（ｄ）が集合的に中央処理装置を構成する、請求項７に記載の装置。
【請求項９】
前記手段（ｃ）がプログラマブル・デバイスを含む、請求項７に記載の装置。
【請求項１０】
前記プログラマブル・デバイスがフィールド・プログラマブル・ゲート・アレイを含む、請求項８に記載の装置。
【国際調査報告】
2010507227.tif 000005
2010507227.tif 000006
2010507227.tif 000007