(57)【特許請求の範囲】
【請求項１】
プログラム可能集積回路のプログラマブルロジック構造を構成する方法であって、前記プログラム可能集積回路は、プログラマブルロジック構造と、複数個の端子と、プロセッサと、複数個の構成プログラムを記憶するメモリとを含み、前記方法は、
（ａ）  前記プロセッサが複数個の端子から複数個の構成モードコードの１つを読み出すステップを備え、前記複数個の構成モードコードの前記１つは、前記複数個の構成プログラムの１つを示し、前記複数個の構成プログラムは、直列フォーマットで構成データを読み出すための第１の構成プログラムと、並列フォーマットで構成データを読み出すための第２の構成プログラムとを備え、
（ｂ）  前記プロセッサ上で、前記プロセッサによって読出された構成モードコードによって決定される複数個の構成プログラムの前記１つを実行し、前記複数個の構成プログラムの前記１つの実行により、構成データが前記複数の構成プログラムの前記１つに関連付けられたフォーマットに従って前記プログラム可能集積回路に読出されて前記プログラマブルロジック構造を構成するステップとを含む、方法。
【請求項２】
前記複数個の構成プログラムの前記１つおよび前記プロセッサは合わせて、前記直列フォーマットの構成データが前記プログラム可能集積回路に読出されるようにするための手段であり、前記複数個の構成プログラムの別のものおよび前記プロセッサは合わせて、前記並列フォーマットの構成データが前記プログラム可能集積回路に読出されるようにするための手段である、請求項１に記載の方法。
【請求項３】
前記複数個の構成プログラムの前記１つおよび前記プロセッサは合わせて、構成データが前記直列フォーマットに従って前記プログラム可能集積回路の単一の端子を介して直列の態様で前記プログラム可能集積回路に読出されるようにするための手段であり、前記複数個の構成プログラムの別のものおよび前記プロセッサは合わせて、構成データが前記並列フォーマットに従って前記プログラム可能集積回路の複数個の端子を介して並列の態様で前記プログラム可能集積回路に読出されるようにするための手段である、請求項１に記載の方法。
【請求項４】
前記複数個の構成プログラムの前記１つおよび前記プロセッサは合わせて、構成データが前記直列フォーマットに従って前記プログラム可能集積回路の単一の端子を介して直列の態様で前記プログラム可能集積回路に読出され、かつ構成メモリセルに与えるための直列データストリームに変換されるようにするための手段である、請求項１に記載の方法。
【請求項５】
前記複数個の構成プログラムの前記１つおよび前記プロセッサは合せて、構成データが前記直列フォーマットに従ってシフトレジスタの直列入力端子に与えられかつシフトレジスタの並列出力端子に読出されるようにする、請求項４に記載の方法。
【請求項６】
前記複数個の構成プログラムの前記１つの実行中に、前記プロセッサは、前記プログラム可能集積回路の端子が入力端子としてまたは出力端子として構成されるかを制御する、請求項１に記載の方法。
【請求項７】
前記プロセッサによる前記構成モードコードの前記読出は、前記プログラム可能集積回路の電力投入後自動的に起こる、請求項１に記載の方法。
【請求項８】
プログラム可能集積回路を構成する方法であって、前記プログラム可能集積回路は、プログラマブルロジック構造と、プロセッサと、第１のプログラムおよび第２のプログラムを含むメモリとを含み、前記方法は、
構成モードコードを前記プログラム可能集積回路で受けるステップと、
前記構成モードコードが第１の値を有するならば、前記第１のプログラムを前記プロセッサ上で実行して第１のフォーマットの第１の構成データを前記プログラム可能集積回路に読出すステップを備え、前記第１のフォーマットは直列フォーマットであり、
前記構成モードコードが前記第１の値を有するならば、前記第１の構成データを用いて前記プログラマブルロジック構造を構成するステップと、
前記構成モードコードが第２の値を有するならば、前記第２のプログラムを前記プロセッサ上で実行して第２のフォーマットの第２の構成データを前記プログラム可能集積回路に読出すステップとを備え、前記第２のフォーマットは並列フォーマットであり、
前記構成モードコードが前記第２の値を有するならば、前記第２の構成データを用いて前記プログラマブルロジック構造を構成するステップとを含む、方法。
【請求項９】
プログラマブルロジック構造と、
少なくとも１つのコード端子と、
第１の構成プログラムおよび第２の構成プログラムを記憶するメモリと、
プロセッサとを含み、前記プロセッサは、前記少なくとも１つのコード端子を読出し、前記コード端子上の構成モードコードに基づいて、前記第１の構成プログラムを実行すべきかまたは前記第２の構成プログラムを実行すべきかを判断し、前記第１の構成プログラムの実行により、第１の構成データが前記プログラム可能集積回路に読出されて前記プログラマブルロジック構造を構成し、前記第２の構成プログラムの実行により、第２の構成データが前記プログラム可能集積回路に読出されて前記プログラマブルロジック構造を構成し、
前記第１の構成プログラムを用いて前記プログラム可能集積回路に読出される前記第１の構成データは、前記プログラム可能集積回路の単一の端子を介して直列の態様で前記プログラム可能集積回路で受取られ、前記第２の構成プログラムを用いて前記プログラム可能集積回路に読出される前記第２の構成データは、前記プログラム可能集積回路の複数個の端子を介して並列の態様で前記プログラム可能集積回路で受取られる、プログラム可能集積回路。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は、メモリベースのプログラマブルロジックデバイスを構成することに関する。より特定的には、この発明は、メモリベースのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を構成することに関する。
【０００２】
【背景情報】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、エンドユーザが所望のユーザ専用回路を実現するためにカスタマイズ可能である汎用のプログラマブルデバイスである。基本的なデバイスアーキテクチャは、構成可能配線構造に埋込まれかつ構成可能なＩ／Ｃブロック（ＩＯＢ）によって取囲まれるコンフィギュラブルロジックブロック（ＣＬＢ）のアレイを含む。各ＩＯＢは、出力バッファ、入力バッファまたは双方向バッファとなるよう構成可能である。ＩＯＢは、入力データを登録し、出力データを登録し、かつ／またはトライステート出力を与えるよう構成可能である。ＣＬＢは、多くのロジック機能の１つを行なうよう構成可能である。たとえば、ＣＬＢは、組合せ論理素子、順次論理素子、ルックアップテーブル、および／または制御マルチプレクサの組合せを実現するよう構成されてもよい。所望のユーザ専用の回路を実現するために、エンドユーザは、複数の構成されたＣＬＢおよび複数の構成されたＩＯＢの回路構成を互いに接続することにより結果としてできた回路が所望のユーザ専用の回路となるよう構成可能配線構造を構成する。
【０００３】
メモリベースのＦＰＧＡと呼ばれるＦＰＧＡのあるタイプにおいては、ＦＰＧＡのＩＯＢ、ＣＬＢおよびプログラム可能配線構造は、構成データを関連付けられた構成メモリセルにロードすることにより構成される。各ＩＯＢおよびＣＬＢは、関連付けられた構成メモリセルを有し、その内容が、ＩＯＢまたはＣＬＢがどのように構成されるかを決定する。同様に、プログラム可能配線構造は、構成メモリセルを含む。プログラム可能配線構造は、プログラム可能配線構造においてワイヤリングセグメントの接続を制御するプログラム可能点を含む。各プログラム可能配線点は、関連付けられた構成メモリセルによって制御されるパストランジスタであり得る。パストランジスタの各側のワイヤセグメントは、トランジスタが関連付けられた構成メモリセルによってオンにされるかどうかに依存して接続されたり接続されなかったりする。ＦＰＧＡに関するさらなる情報は、９５１２４  カリフォルニア州、サン・ノゼ、ロジック・ドライブ、２１００（2100 Logic Drive, San Jose, California 95124）のザイリンクス・インコーポレイテッド（Xilinx, Inc.）から入手可能であって、ザイリンクス・インコーポレイテッドによる著作権１９９９年、「プログラマブルロジックデータブック１９９９」（“The Programmable Logic Data Book 1999”）に見られる（このデータブックの主題はここに引用により援用される）。
【０００４】
構成は、プログラム可能配線構造、ＩＯＢおよびＣＬＢを制御する構成メモリセルに構成データをロードするプロセスである。ザイリンクス・インコーポレイテッドから入手可能なＦＰＧＡは、一般的に２つ以上の構成モードをサポートする。「マスタシリアルモード」と呼ばれる第１の構成モードにおいて、構成データは典型的には外部ＲＯＭなどの外部メモリに記憶される。ＦＰＧＡは、オンチップの発振器を用いて、構成データの連続ビットが外部メモリのデータ端子に読出されるようにするクロック信号を放出する。外部メモリのデータ端子は、構成データの連続ビットが直列の態様で一度に１ビットずつＦＰＧＡに読出されるように、ＦＰＧＡの入力端子（入力端子となるよう構成されるＩＯＢ）に結合される。それぞれの構成データビットの各々が書込まれる構成メモリセルは、構成データビットの直列ストリームにおける構成データビットの場所によって決定される。あるモードでは、構成データは、フレームと呼ばれるデータのパケットに分割される。各フレームが受けられると、それはフレームレジスタが一杯になるまでフレームレジスタにシフトされる。フレームレジスタ中の構成データは次に、構成メモリセルの１行に並列にロードされる。この場合には、構成メモリセルは、２次元アレイとしてロードする目的で編成される。第１のフレームのロードに続いて、構成データの後続フレームがＦＰＧＡにシフトされ、構成メモリセルの別の行がロードされる。このようにして、構成データは、一度に１ビットずつ直列の態様でＦＰＧＡにロードされるが、構成メモリセルの２次元アレイは並列に一度に１フレームずつロードされる。
【０００５】
構成データをＦＰＧＡへ直列の態様でロードすることは、時間がかかり望ましくないことがある。したがって、ザイリンクスのＦＰＧＡは典型的には、「マスタパラレルモード」と呼ばれる第２の構成モードをサポートする。この第２のモードでは、構成データは、並列の態様で一度に８ビットずつ外部メモリ（たとえばＲＯＭ）からＦＰＧＡにロードされる。ＦＰＧＡは、２２ビットアドレスをＦＰＧＡの２２個のアドレス端子（出力端子として用いられる２２個のＩＯＢ）に出力する。ＦＰＧＡのこれらの２２個のアドレス端子は、外部ＲＯＭの対応の２２個のアドレス端子に結合される。ＦＰＧＡがアドレスをインクリメントすることにより、連続した８ビット構成データ値が外部ＲＯＭから８個のデータ入力端子（入力端子として用いられる８個のＩＯＢ）でＦＰＧＡに読出される。構成データビットの複数のそのような８ビット値は、構成データのフレームを形成するよう組立てられる。次に、このフレームの構成データビットは、構成メモリセルの２次元アレイの行に並列に書込まれる。次に、構成ビットの第２のフレームがＦＰＧＡに読出され、構成メモリセルの２次元アレイの第２の行に並列の形で書込まれる。このように、構成データビットは、一連の８ビット値としてＦＰＧＡにロードされ、構成メモリセルの２次元アレイには一度に１フレームずつロードされる。
【０００６】
後方互換性のために、一般的には、連続したＦＰＧＡファミリーの各々が、先行のファミリーによってサポートされる（「レガシーな構成モード」と呼ばれる）構成モードをサポートすることが望ましい。新しい構成モードが時々新しいＦＰＧＡファミリーに追加されてもよい。したがって、ますます増えていく「レガシーな構成モード」をサポートするためにますます多くのハードウェアが一般的には必要とされてきている。複数の構成モードをサポートするために必要とされるハードウェアの量を低減する解決が所望される。
【０００７】
【概要】
複数の構成モードをサポートするために専用のハードワイヤードロジックを用いるのではなく、この目的のためにＦＰＧＡ上にプロセッサが設けられる。電力投入後、プロセッサは、ＦＰＧＡの予め定められた端子上にある構成モードコードを読出す。これらの端子から読出された構成モードコードは、構成データをＦＰＧＡにロードするために用いられる構成モードを決定する。
【０００８】
構成モードコードが第１の値を有するならば、プロセッサは第１のプログラムを実行する。第１のプログラムの実行により、プロセッサは、第１の構成モードに従って構成データをＦＰＧＡ上におよび構成メモリセルにロードするようにＦＰＧＡのＩＯＢおよび他のハードウェアを制御する。一方で、構成モードコードが第２の値を有するならば、プロセッサは第２のプログラムを実行する。第２のプログラムの実行により、プロセッサは、第２の構成モードに従って構成データをＦＰＧＡ上におよび構成メモリセルにロードするようにＦＰＧＡのＩＯＢおよび他のハードウェアを制御する。プロセッサによって実行される第１および第２のプログラムは、オンチップのメタルマスク・リードオンリメモリ（ＲＯＭ）に記憶され得るので、ＦＰＧＡの残りの部分を再配置することなしに、かつ多くのコストを招くことなしに、プログラムを変更することができる。同じプロセッサ上で実行可能な複数の構成プログラムを設けることにより、ＦＰＧＡは同じプロセッサのハードウェアを用いて複数の構成モードをサポートすることができる。
【０００９】
ある実施例では、新しくユーザが設けた構成モードがサポートされる。電力投入後に読出された構成モードコードが特定の値を有するならば、プロセッサはローダプログラムを実行する。ローダプログラムの実行により、プロセッサは、ユーザ供給構成プログラムがＦＰＧＡに読出され、かつプロセッサによって使用されるプログラムメモリにロードされるように、ＦＰＧＡのＩＯＢを制御する。そのようなユーザ供給構成プログラムは、たとえば、一度に８ビットバイトずつＦＰＧＡに読出されてもよい。ユーザ供給構成プログラムがＦＰＧＡに読出された後、ローダプログラムは終了し、プロセッサは新しくロードされた構成プログラムを実行する。新しくロードされた構成プログラムの実行により、構成データはユーザ定義の構成モードに従ってＦＰＧＡにロードされ構成メモリセルにロードされる。このようにして、ＦＰＧＡはユーザ定義の構成モードをサポートするようプログラムされる。
【００１０】
他の構造および方法が以下の詳細な説明に記載される。この概要は、この発明を定義することを意図するものでない。この発明は、特許請求の範囲によって定義される。
【００１１】
【詳細な説明】
図１は、この発明の実施例に従うフィールドプログラマブルゲートアレイ（ＦＰＧＡ）集積回路１の簡素化されたトップダウンの図である。ＦＰＧＡ１は、Ｉ／Ｏブロック（ＩＯＢ）２のリングと、４個のコーナブロック（ＣＢ）３〜６と、コンフィギュラブルロジックブロック（ＣＬＢ）７の、内側２次元アレイと、プログラム可能配線構造８とを含む。ＩＯＢ、ＣＬＢおよびプログラム可能配線構造は、構成メモリセルを含み、その内容が、ＩＯＢ、ＣＬＢおよびプログラム可能配線構造がどのように構成されるかを決定する。これらの構成メモリセルは、概念上のおよびロードする目的のために、２次元のアレイに編成される。
【００１２】
各ＩＯＢは、ＩＯＢが、ＦＰＧＡ集積回路１に接続がなされる場所を提供するという意味で端子を含む。この場所は、通常はＩＯＢのボンディングパッドであり、ボンディングパッドへの接続は、通常は、ボンディングパッドからＦＰＧＡ集積回路１を含む集積回路パッケージへの電気的接続を形成するボンディングワイヤである。ＩＯＢ２、ＣＬＢ７およびプログラム可能配線構造８の構造および動作を含む、一般的なＦＰＧＡ１の構造に関するさらなる情報については、９５１２４  カリフォルニア州、サン・ノゼ、ロジック・ドライブ、２１００のザイリンクス・インコーポレイテッドから入手可能な、ザイリンクス・インコーポレイテッドによる著作権１９９９年の「プログラマブルロジックデータブック１９９９」、「ＸＣ４０００ＥおよびＸＣ４０００Ｘシリーズフィールドプログラマブルゲートアレイ」（"XC4000E and XC4000X Series Field Programmable Gate Arrays"）第６−５から６−６８頁、を参照されたい（これらのデータブックの頁の主題はここに引用により援用される）。
【００１３】
図１の下部の拡大部に示されるように、コーナブロック５は、プロセッサ９と、オンチップ発振器１０と、いくらかの不揮発性メモリ１１（たとえばＲＯＭまたはＦＬＡＳＨメモリ）と、いくらかのランダムアクセスメモリ（ＲＡＭ）１２と、デコーディング回路１３と、構成中に選択されたＩＯＢ端子とインターフェイスするためのインターフェイスロジック１４と、残りのＩＯＢ２、ＣＬＢ７およびプログラム可能配線構造８の構成メモリセルとの書込および読出のためのインターフェイスロジック１５とを含む。
【００１４】
図２は、この発明の実施例に従う方法のフローチャートである。電力投入後、不揮発性メモリ１１に記憶されたプログラムがＲＡＭ１２にロードされる。プロセッサ９がＲＡＭ１２の予め定められた場所から第１の命令をフェッチしそこに記憶されたプログラムの実行を開始するように、プロセッサ９はオンチップ発振器１０からのクロック信号によってクロック動作する。このプログラムの実行により、プロセッサ９はロジック１４を用いてＩＯＢ１６〜１８の端子に３ビットの「構成モードコード」を読出す（ステップ２００）。これらの端子は、それぞれＭ０、Ｍ１およびＭ２と指定される。構成モードコードは、ＦＰＧＡ１の外部の手段によってユーザにより端子Ｍ０、Ｍ１およびＭ２上に置かれる。
【００１５】
構成モードコードが第１の値であるならば、プロセッサ９はＲＡＭ１２中の第１の構成モードプログラムを実行し始める（ステップ２０１）。この構成モードプログラムは、第１の構成モードをサポートするために適切に構成されるよう複数のＩＯＢを制御する。これらの特定のＩＯＢは、以下に記載するようにインターフェイスロジック１４を用いてプロセッサ９によってこの態様で構成される。
【００１６】
ある例では、＜Ｍ２：Ｍ１：Ｍ０＞のための第１の構成モードコードは＜０：０：０＞であり、第１の構成モードは、ザイリンクスの「プログラマブルロジックデータブック１９９９」の第６−６１頁に述べられる「マスタシリアルモード」である。したがって、ＩＯＢ１９は、入力直列データのための入力端子ＤＩＮとして用いられ、ＩＯＢ２０は、ＦＰＧＡ１からクロック信号ＣＣＬＫを出力するための出力端子として使用される。クロック信号ＣＣＬＫは、オンチップ発振器１０から生成され、ＩＯＢ２０の端子ＣＣＬＫを介して直列外部ＰＲＯＭ（図示せず）のクロック入力端子に供給される。ＦＰＧＡによって出力されたＣＣＬＫ信号の連続したクロックパルスの各々により、別の構成データビットが外部ＰＲＯＭのデータ出力端子から読出される。このデータ出力端子は、連続した構成データビットが直列の態様で端子ＤＩＮ上で受けられるようにＦＰＧＡの外部の接続によりＩＯＢ１９のＤＩＮ端子に結合される。プロセッサ９は、構成データのこの入力直列ビットストリームを端子ＤＩＮから読出し、インターフェイスロジック１５を用いて構成データを構成メモリセルに書込む。
【００１７】
代替的に、構成データビットは並列に８個のピンに与えられ、フレームの８連続ビットに並列にロードされる。別の代替として、構成データビットは１個のピンに直列に与えられるが、フレームレジスタにロードするために８ビットの並列シーケンスに内部で変換される。
【００１８】
いずれの場合にも、第１のプログラムにより、プロセッサ９は、入力ビットストリームのさまざまな構成データビットを構成ビットのフレームに組立てる。次に、第１のプログラムにより、フレームのビットは、ＦＰＧＡ１の構成メモリセルの第１の行に並列に書込まれる。次に、プロセッサ９は、端子ＤＩＮから次の構成データビットを読出し、これらの構成データビットを別のフレームに組立て、そしてこの次のフレームをＦＰＧＡ１の構成メモリセルの第２の行に書込む。このように、構成データビットは、ソフトウェアの制御下で入力端子ＤＩＮから直列の態様でＦＰＧＡ１にロードされ、第１の構成モードに従って一度に１フレームずつ並列にＦＰＧＡの構成メモリセルに書込まれる。
【００１９】
一方で、構成モードコードが第２の値であるならば、プロセッサ９は、ＲＡＭ１２中の第２の構成モードプログラムを実行し始める（ステップ２０２）。この構成モードプログラムは、第２の構成モードをサポートするよう複数のＩＯＢを制御する。ある例では、＜Ｍ２：Ｍ１：Ｍ０＞のための第２の構成モードコードは＜１：０：０＞であり、第２の構成モードは、「プログラマブルロジックデータブック１９９９」の第６−６２頁に述べられる「マスタパラレルアップモード」である。８個のＩＯＢ（ＩＯＢ１９および７個の他のＩＯＢ）が、構成データの８ビットバイトを受けるためのデータ入力端子ＤＩ０〜ＤＩ７として用いられる。ＩＯＢ２１は、ＦＰＧＡからクロック信号ＲＣＬＫを出力するための出力端子ＲＣＬＫとして使用される。２２個の他のＩＯＢ（図示せず）が、２２ビットアドレスＡ０〜Ａ２１を出力するために使用される。
【００２０】
第２のプログラムの実行により、プロセッサ９は２２個のアドレス出力端子Ａ０〜Ａ２１から２２ビットアドレスを出力する。このアドレスは、ＦＰＧＡのＲＣＬＫ端子から供給されるクロック信号ＲＣＬＫの立上がりエッジにおいて有効である。２２ビットアドレスおよびクロック信号ＲＣＬＫは、アドレスに供給され、構成データの第１の８ビットバイトが外部ＰＲＯＭの８個のデータ出力端子に出力されるように外部ＰＲＯＭ（図示せず）の端子を可能化する。これらの８個のデータ出力端子は、ＦＰＧＡ１の８個のデータ入力端子ＤＩ０〜ＤＩ７に結合される。プロセッサ９は、インターフェイスロジック１４を用いて、データ入力端子ＤＩ０〜ＤＩ７から構成データのこのバイトを読出す。次に、プロセッサ９は２２ビットアドレスをインクリメントして、外部ＰＲＯＭ中の構成データの次のバイトをアドレスし、クロック信号ＲＣＬＫのパルスを取り、ＦＰＧＡ１のデータ入力端子ＤＩ０〜ＤＩ７から構成データの次のバイトを読出す。このように、プロセッサ９は、２２ビットアドレスをインクリメントすることにより外部ＰＲＯＭから構成データの連続８ビットバイトを読出す。プロセッサ９は、構成データのこれらのバイトを組立てて構成データのフレームを形成し、そしてＦＰＧＡ１の構成メモリセルの第１の行に並列にフレームのビットを書込む。次に、プロセッサ９は、２２ビットアドレスをインクリメントし、構成データの次のバイトを受け、その構成データを第２のフレームに組立て、そしてこの第２のフレームをＦＰＧＡ１の構成メモリセルの第２の行に書込む。このように、構成データビットは、ソフトウェアの制御下で一度に１バイトずつＦＰＧＡ１にロードされ、第２の構成モードに従って一度に１フレームずつ並列にＦＰＧＡの構成メモリセルに書込まれる。第１および第２の構成モードのこの例では、構成データは同じ態様で構成メモリセルに書込まれる。この例では、構成データビットストリームはプロセッサ命令を含まない。
【００２１】
構成メモリセルにロードされた後、構成プログラムが実行されることにより、いわゆる「スタートアップ」シーケンスが生じ、ＦＰＧＡ動作は構成プロセスから意図されたユーザ動作に遷移する。構成データをロードするために用いられたいずれのＩＯＢも、ユーザ専用回路での使用が可能となり、すべての構成データがこれらのＩＯＢによりロードされてしまった構成プロセスの終わりに、その使用のために構成され得る。そして、ＩＯＢ２２の端子ＤＯＮＥ上の信号は、ローからハイに遷移し、構成プロセスの完了およびスタートアップシーケンスを示す。スタートアップシーケンスの一例のさらなる情報については、「プログラマブルロジックデータブック１９９９」の第６−５１から６−５４頁を参照されたい。
【００２２】
図３および図４は、プロセッサ９ならびにその関連付けられたインターフェイス回路１４および１５のある可能な実現化例のさらなる詳細を示す簡素化された回路図である。破線の長方形１００は、ある構成メモリセルを表わす。この場合には、構成メモリセルは、プログラム可能配線構造８の構成メモリセルである。交差結合されたラッチ１０１が、デジタルの１がパストランジスタ１０２のゲートに存在するようにロードされるならば、構成メモリセルは、ワイヤセグメント１０３および１０４が接続されるように構成される。ラッチ１０１が、デジタルの０がパストランジスタ１０２のゲートに存在するようにロードされるならば、構成メモリセルは、ワイヤセグメント１０３および１０４が接続されないように構成される。
【００２３】
１つのみのそのような構成メモリセル１００が図３に示されるが、各々上述の構成メモリセルの２次元アレイを形成するＹ行×Ｘの構成メモリセルがある。構成メモリセルのいくつかはＩＯＢのためのものであり、いくつかはＣＬＢのためのものであり、いくつかはプログラム可能配線構造のためのものである。
【００２４】
構成メモリセルの各行は、関連付けられるＹアドレス線を有する。図３の線１０５は、構成メモリセル１００の行と関連付けられるＹアドレス線である。各列は、関連付けられるＸアドレス線を有する。図３の線１０６は、構成メモリセル１００の列と関連付けられるＸアドレス線である。デジタルハイが構成メモリセルのＸアドレス線上に存在し、かつデジタルハイが構成メモリセルのＹアドレス線上に存在し、かつグローバルイネーブル線１０７がハイパルスでパルスされるならば、構成メモリセルのＡＮＤゲート１０８が、デジタルハイパルスを出力し、アクセストランジスタ１０９を可能化する。フレームバッファ１１０がデジタル値を構成メモリセルのデータ線１１１に出力するならば、このデジタル値は、構成メモリセルにロードされ、ラッチにより記憶される。フレームバッファ１１０が出力可能化されなければ、ラッチ１０１は、記憶された構成データを可能化されたアクセストランジスタ１０９を介してデータライン１１１に出力する。次に、このデータは、リードバックバッファ１１２を介してプロセッサ９によって読出可能となる。
【００２５】
メモリセル１００は、単一のアクセストランジスタ１０９を備える５トランジスタメモリセルとして図３に示される。他の実施例では、メモリセル１００の等価が６個のトランジスタを使用する、すなわちあるアクセストランジスタがビット線からラッチ１０１の一方の端子に接続し、別のアクセストランジスタが横ビット線からラッチ１０１の相補の端子に接続する。そのような６トランジスタメモリセルは周知であるので、ここには説明されない。
【００２６】
プロセッサ９は、Ｙレジスタ１１３に値を書込むことにより構成メモリセルの特定の行をアドレスする。この値は、Ｙアドレス線に出力される複数ビット値にデコーダ１１４によりデコードされる。ある実施例では、プロセッサ９は、１行のみが一度にアドレスされるように、Ｙレジスタに値を書込む。
【００２７】
プロセッサ９は、１つの特定の列、すべての列、または列の任意の組合せを、適切な値をＸレジスタ１１５に書込むことによりアドレスすることができる。Ｘレジスタ１１５中の値が、デコーダ１１６によってデコードされ、Ｘアドレス線に出力される複数ビット値を生成する。構成メモリセルのフレーム全体（１行）が書込まれるべきならば、すべてのＸアドレス線がデジタル１で駆動されるようにデコードされる値がＸレジスタ１１５に書込まれる。したがって、１行のうちのすべてのメモリセルがアドレスされる。（「フレームバッファ」は実際には、１つが連続８列の各々と関連付けられる、複数の８ビットＤＩＮレジスタを含み得る。同様に、「リードバックバッファ」は実際には、１つが連続８列の各々と関連付けられる、複数の８ビットＤＯＵＴバッファを含み得る。）
Ｙレジスタ１１３、Ｘレジスタ１１５、フレームバッファ１１０およびリードバックバッファ１１２は、対応するアドレスから読出し対応するアドレスに書込むことにより、プロセッサ９によりアクセスされる。ＤＯＲＤＢは、データ出力（リードバック）バッファ読出ストローブバー（アクティブロー）である。ＤＩＷＲＢは、データ入力（フレームバッファ）バッファ書込ストローブバー（アクティブロー）である。ＸＷＲＢは、Ｘレジスタ書込ストローブバー（アクティブロー）である。ＹＷＲＢは、Ｙレジスタ書込ストローブバー（アクティブロー）である。ＧＥは、すべての構成メモリセルに供給されるグローバルイネーブルストローブである。プロセッサ９は、メモリ読出ストローブバーＭＲＤＢ（アクティブロー）およびメモリ書込ストローブバーＭＷＲＢ（アクティブロー）を用いてＲＡＭ１２にアクセスする。アドレスデコーダ１３は、アドレスバス線Ａ０〜Ａ１５上のアドレス、プロセッサ９によって出力される書込ストローブＷＲＢ、プロセッサ９によって出力される読出ストローブＲＤＢ、およびプロセッサ９によって出力されるプログラムメモリ読出ストローブＰＳＥＮＢを含むアドレス信号および制御信号を用いてこれらのストローブ信号を生成する。アドレスラッチ１１８が、アドレス／データ線ＡＤ０〜ＡＤ７から下位アドレスをラッチするために設けられる。
【００２８】
図４Ａは、プロセッサ９が構成プロセス中にＩＯＢから読出し、かつ／またはＩＯＢに書込む、インターフェイスロジック１４の簡素化された図である。プロセス９は、端子Ｍ０、Ｍ１およびＭ２から入力バッファ１１９および読出ストローブ信号ＭＰＲＤＢ（アクティブロー）により構成モードコードを読出す。プロセッサ９は、レジスタ１２０およびストローブ信号ＣＬＫＣＢ（アクティブロー）により、端子ＣＣＬＫがクロック信号を出力するかまたはクロック信号を受けるか、および内部発振器１０が可能化されるかを制御する。プロセッサ９は、出力バッファ１２２〜１２４ならびにアドレス出力書込ストローブＡ０ＷＲＢ、Ａ１ＷＲＢおよびＡ２ＷＲＢ（アクティブロー信号）により端子Ａ０〜Ａ２１に２２ビットアドレスを出力する。プロセッサ９は、入力バッファ１２１およびデータ読出バッファストローブＤＲＤＢ（アクティブロー）によりデータ入力端子Ｄ０〜Ｄ７を読出す。
【００２９】
インターフェイスロジック１４は、専用のハードウェア（小さく高速であるがそれほど柔軟でない）を用いるか、またはプログラマブルハードウェア（柔軟であるが遅くなる）を用いて実現することができる。専用ハードウェアの実施例では、図４Ａおよび図４Ｂに示すような回路が、ＦＰＧＡに専用ハードウェアとして設けられる。
【００３０】
プログラム可能な実施例では、図４ａおよび図４ｂの回路は、例示されるパッドのそれぞれのＩＯＢにメモリセルをロードして、ＦＰＧＡの残りの部分の構成を管理するためにそれらのＩＯＢを構成することにより実現される。モードが、図４Ｂのシフトレジスタ４４などのより複雑な特徴を使用するならば、配線およびＣＬＢもプログラムする必要があるかもしれない。
【００３１】
（固定ハードウェアまたはＦＰＧＡに構成される構造のいずれかを用いる）直列入力直列出力インターフェイスについては、図４Ｂに示すように、回路４１は、データ入力ピンＤＩＮから直列ビットストリームを受け、直列出力信号をラインＤ０に与える。直列入力並列出力インターフェイスについては、第２の回路４２が、直列ビットストリームを受け、直列ビットストリームはシフトレジスタ４４を通過し、８個の並列出力信号としてラインＤ０からＤ７に周期的に出力される。バイト幅転送インターフェイスについては、第３の回路４３が、ラインＤＩＮ０からＤＩＮ７の８個の並列入力信号を受け、ラインＤ０からＤ７に８個の並列出力信号を与える。
【００３２】
図４Ａの回路は、外部装置がＦＰＧＡ内に記憶されたデータをリードバックすることを可能にする。図４Ａに示す第２の実施例では、端子Ｍ０〜Ｍ２、ＣＣＬＫ、Ｄ０〜Ｄ７およびＡ０〜Ａ２１のＩＯＢが適切に初期化される。第２の実施例では、この初期化は、構成動作中にそのそれぞれの構成メモリセルデータをＦＰＧＡ内の一時記憶装置にロードすることによりソフトウェアの制御下で行なわれ、すべての構成データがこれらのＩＯＢによりロードされてしまうと、ＩＯＢは、一時記憶装置からＩＯＢ構成メモリセルにデータをロードすることにより、ＦＰＧＡの動作中に使用されるように構成される。
【００３３】
入力レジスタおよび出力レジスタならびにバッファ１１９〜１２４と、これらのレジスタおよびバッファからプロセッサ９のデータバスおよびデコーダ１３への接続とは、構成プログラムの開始時にプログラム可能配線構造のある構成メモリセルをプログラムすることにより実現される。図３のＸレジスタ１１５、Ｙレジスタ１１３、デコーダ１１４および１１６、フレームバッファ（フレームレジスタ）１１０ならびにリードバックバッファ１１２は、専用のハードワイヤードロジックを用いて実現されるのに対し、図４Ａのレジスタおよびバッファ１１９〜１２４は、この実施例においては、適切に構成されたＣＬＢの構成可能回路を用いて実現される。ＩＯＢ接続のために必要とされる構成ビットを上書きすることを回避するために、プロセッサ９へのＩＯＢ接続のために使用されるすべての構成ビットは最終フレームにおいて構成されなければならないか、または、ＩＯＢ接続のための構成ビットは、すべての構成データがこれらのＩＯＢを介してロードされてしまうまで内部ＦＰＧＡメモリに記憶されなければならない。
【００３４】
図５は、別の実施例に従う方法のフローチャートである。電力投入後、プロセッサ９は、端子Ｍ０、Ｍ１およびＭ２から構成モードコードを読出す（ステップ３００）。構成モードコードが特定の値を有するならば、プロセッサ９はＲＡＭ１２中のローダプログラムを実行する（ステップ３０１）。このローダプログラムの実行により、プロセッサ９は、構成プログラムがＦＰＧＡ１に読出されＲＡＭ１２にロードされるようにＩＯＢを構成する。構成プログラムは、いくとおりの態様でＦＰＧＡにロードされてもよい。ある態様は、上述の「マスタパラレルモード」においてなされるように、一度に１バイトずつ外部ＰＲＯＭから構成プログラムを読出すことである。
【００３５】
ローダプログラムが構成プログラムをＲＡＭ１２にロードした後、プロセッサ９は、新しくロードされた構成プログラムを実行する（ステップ３０２）。この構成プログラムの実行により、プロセッサ９は、ＦＰＧＡに構成データを読出し、その構成データをＦＰＧＡの構成メモリセルにロードして、所望のユーザ専用回路として使用されるＦＰＧＡを構成する。したがって、ユーザは、カスタマイズされた構成プログラムをＦＰＧＡにロードし、そしてプロセッサ９にそのカスタマイズされた構成プログラムを実行させることにより、カスタマイズされた構成モードを設けることができる。
【００３６】
この発明は、教示の目的のためにある種の特定の実施例と関連付けて記載されるが、この発明はこれに限られるものでない。プロセッサをＩＯＢおよび構成メモリセルにインターフェイスするインターフェイスロジック１４および１５のアーキテクチャはある可能な実現化例にすぎない。プロセッサを他のＩＯＢ、ＣＬＢおよびプログラム可能配線構造のアーキテクチャにインターフェイスするために、標準のプロセッサ設計技術を用いて他のタイプのインターフェイスロジックを提供することができる。ある実施例では、そのようなインターフェイス回路は、「構成ビットストリームにプログラミング命令を有するフィールドプログラマブルゲートアレイ」（“A Field Programmable Gate Array Having Programming Instructions in the Configuration Bitstream”）と題する米国特許番号５，８９２，９６１号にトリムバーガー（Trimberger）によって述べられるものなどの行ポインタを含む。この行ポインタは、構成メモリセルの行を指す。行ポインタはプロセッサ９の制御下でインクリメント可能である。そのような行ポインタは、ある実施例では、シフトレジスタの１ビットが構成メモリセルの１行を特定するためにデジタルの１を含むシフトレジスタとして実現される。行ポインタは、シフトレジスタを１ビットシフトすることによりインクリメントされる。
【００３７】
構成データをプログラマブルロジックデバイス回路に読出すオンチッププロセッサが、ＳＲＡＭベースのＦＰＧＡアーキテクチャと関連付けて記載されるが、オンチッププロセッサは、ＦＬＡＳＨベースのＰＬＤおよびＦＰＧＡを含む他のメモリベースのプログラマブルロジックデバイスにおいて使用可能である。
【００３８】
プロセッサは、上述のような構成プロセスに専用のものとされてもよく、または代替的に、プロセッサは、ＦＰＧＡに構成されるユーザ専用回路において使用可能である。命令が入力構成データビットストリームに含まれてもよい。これらの命令は、プロセッサ９のための命令であってもよく、代替的に、実際のプロセッサ命令自体ではないが一連のプロセッサ命令としてプロセッサ９によって行なわれる高次の機能を示す高次の命令であってもよい。したがって、特許請求の範囲に述べられるこの発明の範囲から逸脱することなしに、さまざまな変形、改造および記載された実施例のさまざまな特徴の組合せを実施することができる。
【図面の簡単な説明】
【図１】  この発明の実施例に従うフィールドプログラマブルゲートアレイ（ＦＰＧＡ）の簡素化されたトップダウンの図である。
【図２】  この発明の実施例に従う方法の流れ図である。
【図３】  図１のプロセッサおよびインターフェイス回路の可能な実現化例の簡素化された回路図である。
【図４Ａ】  図１のプロセッサおよびインターフェイス回路の可能な実現化例の簡素化された回路図である。
【図４Ｂ】  図１のプロセッサおよびインターフェイス回路の可能な実現化例の簡素化された回路図である。
【図５】  プロセッサが外部ソースからＦＰＧＡに構成プログラムをロードして構成プログラムを実行する、この発明の別の実施例に従う方法の流れ図である。
【図１】
0005183845.tif 000002
【図２】
0005183845.tif 000003
【図３】
0005183845.tif 000004
【図４Ａ】
0005183845.tif 000005
【図４Ｂ】
0005183845.tif 000006
【図５】
0005183845.tif 000007