(57)【特許請求の範囲】
【請求項１】
プログラマブルアレイにおいて、
第一組のコンフィギュレーションデータを格納するための第一格納手段と、第二組のコンフィギュレーションデータを格納するための第二格納手段と、前記第一組及び第二組のコンフィギュレーションデータのうちの一つを出力すべく結合されているスイッチング手段とを具備するコンフィギュレーションメモリ、
コンフィギュレーションデータに応答して選択的に導電性ラインを結合させ、前記スイッチング手段へ結合したコンフィギュレーション入力を具備するコンフィギャラブルルーチングマトリクス、
を有することを特徴とするプログラマブルアレイ。
【請求項２】
請求項１において、更に、少なくとも１個のコンフィギュレーション入力と、少なくとも１個のデータ入力と、前記第一組及び第二組のコンフィギュレーションデータに応答して入力データに関して論理演算を実行するための少なくとも１個のデータ出力とを具備するコンフィギャラブル論理ブロックが設けられており、前記コンフィギャラブル論理ブロックのコンフィギュレーション入力は前記スイッチング手段の出力へ結合されていることを特徴とするプログラマブルアレイ。
【請求項３】
請求項２において、前記コンフィギュレーションメモリが、更に、第三組のコンフィギュレーションデータを格納するための第三格納手段を有することを特徴とするプログラマブルアレイ。
【請求項４】
請求項２において、前記スイッチング手段が、ユーザクロックサイクルの第一部分の期間中に、前記第一格納手段を前記コンフィギャラブル論理ブロック及び前記コンフィギャラブルルーチングマトリクスへ結合させ、且つ前記スイッチング手段が、前記ユーザクロックサイクルの第二部分期間中に、前記第二格納手段を前記コンフィギャラブル論理ブロック及び前記コンフィギャラブルルーチングマトリクスへ結合させることを特徴とするプログラマブルアレイ。
【請求項５】
請求項２において、前記コンフィギュレーションメモリが二つを超えた数の格納手段を有しており、且つ前記スイッチング手段が、ユーザクロックサイクルのそれぞれの部分の期間中に、各格納手段を前記コンフィギャラブル論理ブロック及び前記コンフィギャラブルルーチングマトリクスへ選択的に結合させることを特徴とするプログラマブルアレイ。
【請求項６】
請求項２において、前記スイッチング手段が、第一時間期間中に、前記第一格納手段を前記コンフィギャラブル論理ブロック及び前記コンフィギャラブルルーチングマトリクスへ、且つ第二時間期間中に前記第二格納手段を前記コンフィギャラブル論理ブロック及び前記コンフィギャラブルルーチングマトリクスヘ選択的に結合させ、前記第一及び第二時間期間が連続的であることを特徴とするプログラマブルアレイ。
【請求項７】
請求項６において、前記連続する時間期間の各々が少なくともユーザクロックサイクルの長さであることを特徴とするプログラマブルアレイ。
【請求項８】
請求項１において、
前記第一格納手段が複数個のメモリセルを有しており、各メモリセルが入力と出力とを具備しており、各メモリセルが前記第一組のコンフィギュレーションデータの１個のビットを格納し、
前記第二格納手段が複数個のメモリセルを有しており、各メモリセルが入力と出力とを具備しており、各メモリセルが前記第二組のコンフィギュレーションデータの１個のビットを格納する、
ことを特徴とするプログラマブルアレイ。
【請求項９】
請求項８において、前記メモリセルがスタチックランダムアクセスメモリセルであることを特徴とするプログラマブルアレイ。
【請求項１０】
請求項８において、前記メモリセルがヒューズであることを特徴とするプログラマブルアレイ。
【請求項１１】
請求項８において、前記メモリセルがアンチヒューズであることを特徴とするプログラマブルアレイ。
【請求項１２】
請求項８において、前記メモリセルがＥＰＲＯＭセルであることを特徴とするプログラマブルアレイ。
【請求項１３】
請求項８において、前記メモリセルがＥＥＰＲＯＭセルであることを特徴とするプログラマブルアレイ。
【請求項１４】
請求項８において、前記第一格納手段における各メモリセルが前記第二格納手段において対応するメモリセルを有することを特徴とするプログラマブルアレイ。
【請求項１５】
請求項８において、前記コンフィギュレーションメモリが、更に、前記第一格納手段及び前記第二格納手段に加えて複数個のメモリセルを有しており、前記複数個のメモリセルが、更に、前記ルーチングマトリクスのコンフィギュレーションを行うことを特徴とするプログラマブルアレイ。
【請求項１６】
請求項１において、前記スイッチング手段がマルチプレクサであることを特徴とするプログラマブルアレイ。
【請求項１７】
請求項１において、前記スイッチング手段が１個のセンスアンプと複数個のアドレスラインとを有していることを特徴とするプログラマブルアレイ。
【請求項１８】
請求項１において、前記スイッチング手段が複数個のスイッチを有しており、各スイッチは前記第一格納手段におけるコンフィギュレーションメモリセルへ結合した第一データ入力と、前記第二格納手段における対応するコンフィギュレーションメモリセルへ結合した第二データ入力と、前記コンフィギュレーションメモリの出力を形成する出力とを具備していることを特徴とするプログラマブルアレイ。
【請求項１９】
請求項１８において、前記複数個のスイッチが複数個の２対１マルチプレクサを有することを特徴とするプログラマブルアレイ。
【請求項２０】
請求項２において、前記コンフィギャラブル論理ブロックが、
コンフィギュレーションデータによって特定された論理関数を実施するための関数発生器であって、前記スイッチング手段へ結合した少なくとも１個のコンフィギュレーション入力と、前記コンフィギャラブルルーチングマトリクスへ結合した少なくとも１個のデータ入力と、少なくとも１個のデータ出力とを具備する関数発生器、
第一期間からの前記関数発生器の出力を格納する第一出力装置であって、前記関数発生器の出力へ結合したデータ入力と、データ出力とを具備する第一出力装置、
第二期間からの前記関数発生器の出力を格納する第二出力装置であって、前記関数発生器の出力へ結合したデータ入力と、データ出力とを具備する第二出力装置、
を有することを特徴とするプログラマブルアレイ。
【請求項２１】
請求項２０において、前記第一出力装置が、更に、前記コンフィギュレーションメモリへ結合したコンフィギュレーション入力を有しており、且つ前記第二出力装置が、更に、前記コンフィギュレーションメモリへ結合したコンフィギュレーション入力を有していることを特徴とするプログラマブルアレイ。
【請求項２２】
請求項２０において、前記第一及び第二出力装置の出力が前記コンフィギャラブルルーチングマトリクスへ結合されていることを特徴とするプログラマブルアレイ。
【請求項２３】
請求項２０において、前記第一出力装置が、前記コンフィギュレーションメモリの第一格納手段内に格納された前記第一組のデータでコンフィギュレーションが行われた前記関数発生器の出力を選択的に格納し且つ出力し、且つ前記第二出力装置が、前記コンフィギュレーションメモリの第二格納手段内に格納された第二組のデータでコンフィギュレーションされた前記関数発生器の出力を選択的に格納及び出力することを特徴とするプログラマブルアレイ。
【請求項２４】
請求項２０において、前記第一出力装置が、ラッチイネーブル入力における信号に応答してデータを格納及び通過させるラッチであって、前記関数発生器の出力へ結合したデータ入力と、ラッチイネーブル入力と、データ出力とを具備するラッチ、
前記ラッチのデータ出力へ結合したデータ入力と、クロック信号を受取るべく結合されたクロック入力と、データ出力とを具備しており、前記クロック入力におけるクロック信号に応答してデータを格納するレジスタと、
複数個のデータ入力と、コンフィギュレーション入力と、データ出力とを具備しており、複数個の信号のうちの一つを出力させる出力スイッチ、
を有することを特徴とするプログラマブルアレイ。
【請求項２５】
請求項２４において、前記出力スイッチの第一データ入力が前記ラッチの出力へ結合しており、且つ前記出力スイッチの第二データ入力が前記レジスタの出力へ結合しており、前記出力スイッチのコンフィギュレーション入力が前記コンフィギュレーションメモリへ結合しており、且つ前記出力スイッチの出力が前記コンフィギャラブルルーチングマトリクスへ結合していることを特徴とするプログラマブルアレイ。
【請求項２６】
請求項２５において、前記出力スイッチの第三データ入力が前記関数発生器の出力へ結合していることを特徴とするプログラマブルアレイ。
【請求項２７】
請求項２４において、前記第二出力装置が、
ラッチイネーブル入力における信号に応答してデータを格納及び通過させるラッチであって、前記関数発生器の出力へ結合したデータ入力と、ラッチイネーブル入力と、データ出力とを具備するラッチ、
前記ラッチのデータ出力へ結合したデータ入力と、クロック信号を受取るべく結合されたクロック入力と、データ出力とを具備しており、前記クロック入力におけるクロック信号に応答してデータを格納するレジスタ、
複数個のデータ入力と、コンフィギュレーション入力と、データ出力とを具備しており、複数個の信号のうちの一つを出力させる出力スイッチ、
を有しており、前記出力スイッチの第一データ入力が前記関数発生器の出力へ結合しており、前記出力スイッチの第二データ入力が前記ラッチの出力へ結合しており、且つ前記出力スイッチの第三入力が前記レジスタの出力へ結合しており、前記出力スイッチのコンフィギュレーション入力が前記コンフィギュレーションメモリへ結合しており、且つ前記出力スイッチの出力が前記コンフィギャラブルルーチングマトリクスへ結合していることを特徴とするプログラマブルアレイ。
【請求項２８】
請求項２４において、前記出力スイッチがマルチプレクサであることを特徴とするプログラマブルアレイ。
【請求項２９】
プログラマブルアレイにおいて、
第一組のコンフィギュレーションデータを格納するための第一格納手段、第二組のコンフィギュレーションデータを格納するための第二格納手段、前記第一組及び第二組のコンフィギュレーションデータのうちの一つを出力すべく結合されたスイッチング手段とを具備するコンフィギュレーションメモリ、
前記スイッチング手段の出力へ結合したコンフィギュレーション入力と、データ入力と、前記第一組及び第二組のコンフィギュレーションデータに応答して入力データに関し論理関数を実行するためのコンフィギャラブル論理ブロック、
を有することを特徴とするプログラマブルアレイ。
【請求項３０】
プログラマブルアレイにおいて、
論理信号を供給する手段、
前記論理信号を受取る第一格納手段、
前記論理信号を受取る第二格納手段、
第一時間期間中に前記第一格納手段を介して前記論理信号を通過させ且つ第二時間期間中に前記第二格納手段を介して前記論理信号を通過させる手段、
第一時間期間及び第二時間期間中に前記第一及び第二格納手段の出力を異なるラインへ結合させる手段、
を有することを特徴とするプログラマブルアレイ。
【請求項３１】
請求項３０において、前記異なるラインが第一ラインと、第二ラインと、第三ラインと、第四ラインとを有しており、前記結合させる手段が、前記第一格納手段の出力を、前記第一時間期間中に前記第一ラインへ及び前記第二時間期間中に前記第三ラインへ結合させ、且つ前記結合させる手段が、前記第二格納手段の出力を、前記第一時間期間中に前記第二ラインへ及び前記第二時間期間中に前記第四ラインへ結合させることを特徴とするプログラマブルアレイ。
【請求項３２】
請求項３０において、前記第一格納手段が第一ラッチであり且つ前記第二格納手段が第二ラッチであることを特徴とするプログラマブルアレイ。
【請求項３３】
請求項３２において、前記第一ラッチが第一期間中にルーチングマトリクス内の１本のラインへ接続され、且つ前記第二ラッチが第二期間中に前記ルーチングマトリクス内の前記ラインへ接続されることを特徴とするプログラマブルアレイ。
【請求項３４】
プログラマブルアレイにおいて、
論理信号を供給する手段、
前記論理信号を受取る第一格納手段、
前記論理信号を受取る第二格納手段、
第一時間期間中に前記第一格納手段を介して前記論理信号を通過させ且つ第二時間期間中に前記第二格納手段を介して前記論理信号を通過させる手段、
第一時間期間中に前記第一格納手段の出力を少なくとも１個のルーチングラインへ結合させ且つ第二時間期間中に前記第二格納手段の出力を同一の少なくとも１個のルーチングラインへ結合させる手段、
を有することを特徴とするプログラマブルアレイ。
【請求項３５】
請求項３４において、前記第一格納手段が第一ラッチであり且つ前記第二格納手段が第二ラッチであることを特徴とするプログラマブルアレイ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、大略、プログラマブル即ちプログラム可能（書込み可能）な論理装置に関するものであって、更に詳細には、コンフィギャラブル即ちコンフィギュレーション（形態）を構成可能な論理ブロック及びプログラマブル即ちプログラム可能（書込み可能）なルーチング（経路付け）マトリクス又はフィールドプログラマブルゲートアレイを再度コンフィギュレーション（即ち形態を特定）するための技術に関するものである。
【０００２】
【従来の技術】
フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）などのプログラマブル（プログラム可能、即ち書込み可能）論理装置を使用することが益々広く行われるようになっている。なぜならば、その再書込み可能特性によって与えられる柔軟性のためである。ＦＰＧＡは、典型的に、ユーザが所望する論理関数を与えるために、プログラミング即ち書込みを行うことによって互いに相互接続させることの可能なコンフィギャラブル即ち形態を特定可能な論理ブロック（「ＣＬＢ」）からなるアレイを有している。アメリカ合衆国、９５１２４、カリフォルニア州、サンノゼ、ロジックドライブ、２１００に住所を有するザイリンクス、インコーポレイテッドから入手可能な「プログラマブル論理データブック（ＴｈｅＰｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄａｔａ  Ｂｏｏｋ）」という名称のザイリンクスの１９９３年データブックには、本願の出願人であるザイリンクス、インコーポレイテッドによって製造されている幾つかのＦＰＧＡ製品について記載されている。このデータブックは、引用により本明細書に組込むこととする。ＦＰＧＡは、典型的に、同一の構成を有するＣＬＢからなる通常のアレイを有している。これらＣＬＢの各々は、多数の異なる論理関数のうちの何れか一つを実施するために個別的にプログラムすることが可能である。ＦＰＧＡは、所望のコンフィギュレーション即ち形態に基づいてこれらのＣＬＢを結合させるためにコンフィギャラブル即ち形態を特定することの可能なルーチング（経路付け）マトリクスを有している。ＦＰＧＡは、更に、多数のコンフィギュレーションメモリセルを有している。これらのコンフィギュレーションメモリセルは、各ＣＬＢによって実行される関数を特定するためにＣＬＢへ結合されると共に、ＣＬＢの入力及び出力の結合を特定するためのコンフィギャラブル即ち形態を特定することの可能なルーチングマトリクスへ結合されている。ＦＰＧＡは、更に、典型的に、ＦＰＧＡの動作期間中にユーザへアクセスすることの可能なデータ格納メモリセルを有しているが、本明細書におけるメモリセルの説明はコンフィギュレーションメモリセルに関してのものである。各ＣＬＢが、該ＣＬＢが実施する関数を特定する幾つかのメモリセルへ結合されており、且つその他のＣＬＢはそれが結合されるものへ結合している。従って、メモリセル内に異なる値を格納することによって、各ＣＬＢはその関数及び結合に関して個別的にプログラムさせることが可能である。
【０００３】
ＣＬＢ及びコンフィギャラブルルーチングマトリクスに対するコンフィギュレーションデータはコンフィギュレーションメモリセル内に格納される。コンフィギュレーションデータは、コンフィギュレーションメモリセル内にロードされると、ＣＬＢによって実行される関数を選択し且つコンフィギャラブルルーチングマトリクスを接続させる。
【０００４】
最近、多様な適用例において使用される論理回路の複雑性及び寸法が著しく増加している。単一の集積回路チップ上に製造可能なＣＬＢの数は制限されているので、この様な回路要素の数の増加は単一のＦＰＧＡで実現することは不可能である。従って、ＣＬＢが論理関数を実行する効率を改善することが必要である。
既存のＦＰＧＡのこの欠点を解消するための従来の一つのアプローチは、複数個のＦＰＧＡを外部的に接続させることであった。しかしながら、このアプローチは部分的な解決方法にしか過ぎないものである。ＦＰＧＡ間の入力／出力接続の数が制限されているので、このアプローチによって全ての回路を実現させることは不可能である。更に、１個を超えた数のＦＰＧＡを使用することは、その回路を実現するために必要とされる電力消費、コスト及び空間を増加させることとなる。
【０００５】
別の解決方法は、ＦＰＧＡ内のＣＬＢ及び相互接続構成体の数を増加させることであった。何れかの与えられた製造技術に対し、単一の集積回路チップ上に製造することの可能なＣＬＢの数には制限がある。従って、アーキテクチャの観点から、ＦＰＧＡに対しての論理ゲート及びＣＬＢ密度を増加させることの必要性が継続して存在している。
【０００６】
従来のＦＰＧＡは異なる時間において異なる論理関数を実行するために再度コンフィギュレーション即ち形態を特定させることが可能であるが、その場合にビットストリームを再度ロードさせることが必要であり、そのことは時間がかかる。ＦＰＧＡを再度コンフィギュレーションさせることは、論理関数の実行を中止させ、ＦＰＧＡ外部のメモリ装置内にその論理関数の現在の状態を格納させ、メモリコンフィギュレーションセルからなるアレイを再度ロードさせ、且つ論理関数の状態、及び何らかのその他の入力を入力させることが必要である。コンフィギュレーションメモリセルを再度ロードさせること自身、再度コンフィギュレーションを行うことが多くの回路を実現するのに有用なものでないような長時間を必要とする。速度及び空間を犠牲にすることなしに、ＦＰＧＡ内において実行される論理関数の数を増加させることがより有益的である。
【０００７】
【発明が解決しようとする課題】
本発明は以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、複数個の論理関数を実行するために内部的にＣＬＢ及びコンフィギャラブルルーチングマトリクスを再度コンフィギュレーション即ち再び形態を構成させることによって、ＦＰＧＡ内において実現することの可能な論理関数の数を増加させることを目的とする。
【０００８】
【課題を解決するための手段】
本発明は、コンフィギュレーションメモリセルからなる１個を超えた数のアレイ及び該アレイの各々から交互にコンフィギュレーションデータを出力させるためのスイッチ、特別格納装置を具備するＣＬＢ、コンフィギャラブルルーチングマトリクスを有している。第一アレイは一組のコンフィギュレーションデータを格納し、第二アレイは第二組のコンフィギュレーションデータを格納し、以下同様である。各ＣＬＢは、第一アレイ内に格納されたデータに基づいてＣＬＢのコンフィギュレーション、即ち形態の特定が行われる場合にＣＬＢの入力又は出力を格納するための第一データラッチと、第二アレイ内に格納されたデータに基づいてＣＬＢのコンフィギュレーションが行われる場合にＣＬＢの入力又は出力を格納するための第二データラッチ、以下同様のものを具備する格納装置へアクセスする。各格納装置は、更に、第一データラッチからデータをクロック出力又はクロック入力させるための第一レジスタ、及び第二データラッチからデータをクロック出力させるか又はクロック入力させるための第二レジスタを有することが可能である。
【０００９】
ＦＰＧＡのユーザは、ＦＰＧＡが動作するクロック信号を入力させる。本発明の一実施例では、ユーザのクロックサイクルを二つの部分に分割し、且つ格納装置がＣＬＢの出力を受取る。
【００１０】
第一部分期間中に、これらのスイッチは第一アレイ内に格納されているコンフィギュレーションデータを出力し、且つＣＬＢ及びコンフィギャラブルルーチングマトリクスは第一アレイ内に格納されているコンフィギュレーションデータに基づいてコンフィギュレーション即ち形態の特定が行われる。この第一部分において、ＦＰＧＡは、ＣＬＢへ入力された信号の第一組の論理関数を実行する。第二データラッチ及び第二レジスタの出力は、ＣＬＢへの入力信号として使用することが可能である。全てのＣＬＢが該入力のそれらの論理関数を実行した後に、各ＣＬＢの出力がＣＬＢの出力装置の第一データラッチ内に格納される。
【００１１】
第二部分期間中に、これらのスイッチは第二アレイ内に格納されているコンフィギュレーションデータを出力し、且つＣＬＢ及びコンフィギャラブルルーチングマトリクスは第二アレイ内に格納されたコンフィギュレーションデータに基づいてコンフィギュレーション即ち形態特定が行われる。次いで、ＦＰＧＡはＣＬＢへの入力の論理関数を実行する。ＣＬＢが該入力のそれらの論理関数を実行した後に、各ＣＬＢの出力がＣＬＢの第二データラッチ内に格納される。ユーザクロックサイクルのこの第二部分期間中に、第一データラッチ及び第一レジスタの出力はＣＬＢへの入力として使用することが可能である。
【００１２】
ユーザクロックサイクルの終了時に、第一及び第二ラッチ内に格納されているデータを第一及び第二レジスタ内へそれぞれ転送させることが可能である。次いで、ＦＰＧＡはその関数の結果を出力させる。ユーザクロックの１サイクル期間中に、従来技術の各ＣＬＢは各論理関数を実行することが可能であるが、二つのアレイのコンフィギュレーションデータを有する実施例に基づいて、各ＣＬＢはユーザクロックの１サイクル期間中に二つの論理関数を実行することが可能である。従って、上述した実施形態はＦＰＧＡが従来技術と比較して実施することの可能な論理関数の数を２倍としている。より一般的に説明すると、ＦＰＧＡが各ＣＬＢに対して５個又は１０個のラッチ及びレジスタ及び５個又は１０個のアレイのコンフィギュレーションデータを有している場合には、ＦＰＧＡは従来のＦＰＧＡの論理の５倍又は１０倍のものを実行することが可能である。
【００１３】
【実施例】
図１を参照すると、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）１０のブロック図が示されている。ＦＰＧＡ１０は複数個の区画部分１２を有しており、その各々はコンフィギャラブル論理ブロック（「ＣＬＢ」）１４と、コンフィギュレーションメモリ１６と、コンフィギャラブルルーチングマトリクス１８とを有している。ルーチングマトリクス即ち経路付け用のマトリクス１８は、ＣＬＢを互いに接続させ、従って相互接続を行う。このルーチングマトリクスは、更に、ライン４４を介して外部ピンへの接続も行う。典型的に、ルーチングマトリクス１８は、クロック信号などの信号を担持するためのグローバルラインと、ＣＬＢを相互接続するためのローカルライン又はラインセグメントの両方を有している。ＦＰＧＡ１０のユーザは、ＦＰＧＡ１０がそれに基づいて動作するクロック信号、即ちユーザのクロックを入力させる。ユーザのクロック信号（又は１個以上の信号）はライン４４の一つ（又はそれ以上）を介してＦＰＧＡ１０の全ての部分へ担持される。
【００１４】
各区画部分１２はユーザの回路の一部を実現するものである。各区画部分１２の論理関数はそれのそれぞれのＣＬＢ１４によって実行される。各ＣＬＢ１４、従って各区画部分１２は、多数の異なる論理関数を実行することが可能である。ＣＬＢ１４によって実行される論理関数は、ＣＬＢ１４に対応するコンフィギュレーションメモリ１６内に格納されたデータによって決定される。ＣＬＢ１４は、論理関数データ及びコンフィギュレーションデータ用の入力を有しており、且つ論理関数データ用の出力を有している。
【００１５】
各ＣＬＢ１４はＦＰＧＡ１０の他のＣＬＢ１４及びＦＰＧＡ１０の入力及び出力へ、コンフィギャラブルルーチングマトリクス１８を介して結合されている。コンフィギャラブルルーチングマトリクス１８は、コンフィギュレーションデータを受取るためのコンフィギュレーション入力を有しており、且つそれに応答してＣＬＢ１４のデータ入力及び出力の結合状態を制御する。コンフィギュレーションメモリ１６内に格納されたデータに従って、コンフィギャラブルルーチングマトリクス１８は、ＣＬＢ１４の出力及びＦＰＧＡ１０の入力をＣＬＢ１４のデータ入力へ選択的に接続させる。コンフィギャラブルルーチングマトリクス１８は、更に、ＣＬＢ１４の出力をＦＰＧＡ１０の出力へ指向させる。
【００１６】
別々のサイクルに対して関数発生器出力を別々にラッチする実施例においては、コンフィギャラブルルーチングマトリクス１８及びＣＬＢ１４は従来技術に基づいて構成された同等の装置よりも大きい。ＣＬＢ１４の出力数は従来技術におけるよりも多く、従ってコンフィギャラブルルーチングマトリクス１８も、ＣＬＢ１４の付加的な出力を受付けるためにより大きい。コンフィギャラブルルーチングマトリクス１８は対応するＣＬＢ１４及びその他のルーチングマトリクス１８へ結合される。
【００１７】
区画部分１２の各ＣＬＢ１４及び各コンフィギャラブルルーチングマトリクス１８に対するコンフィギュレーションデータは対応するコンフィギュレーションメモリ１６内に格納される。コンフィギュレーションデータはＦＰＧＡ１０外側からコンフィギュレーションメモリ１６内へロードされ、且つ少なくとも１個の外部ピンを有するシフトレジスタを介してロードさせることが可能である。この様なロード手段は、本願明細書に引用により組込んだ米国再発行特許第３４，３６３号（Ｆｒｅｅｍａｎ）に記載されている。各コンフィギュレーションメモリ１６の出力はそれのそれぞれのＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へ結合される。
【００１８】
コンフィギュレーションメモリ
次に、図２を参照すると、従来のコンフィギュレーションメモリ１５の一部を示したブロック図が示されている。この従来のコンフィギュレーションメモリ１５はアレイ形態に配列された複数個のメモリセル２０−１乃至２０−ｎを有している。図２は該アレイの一つの列２２を示している。実際のアレイは多数の列を有している。
【００１９】
各メモリセル２０−１乃至２０−ｎは二進データからなる単一ビットを格納する。各メモリセル２０−１乃至２０−ｎはデータ入力と、データ出力と、アドレス入力とを有している。アドレス信号に応答してデータがメモリセル２０−１乃至２０−ｎ内に格納される。データは、一度に一つの列毎にアレイ内に格納される。アドレス信号は各メモリセル２０−１乃至２０−ｎのアドレス入力へ結合されているアドレスバス２４を介してメモリセル２０−１乃至２０−ｎへ供給される。従って、同一の列２２におけるメモリセル２０−１乃至２０−ｎのアドレス入力は共通結合されている。メモリセル２０−１乃至２０−ｎのデータ入力はコンフィギュレーションデータを受取るために従来のデータバスへ結合されている。メモリセル２０−１乃至２０−ｎの出力はＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へ結合、即ち供給される。アドレスライン２４はアドレス手段へ結合されている従来のバスの一部である。これらのアドレス手段及びコンフィギュレーション手段を構成することは当業者にとって自明である。
【００２０】
次に、図３を参照すると、本発明に基づいて構成されたコンフィギュレーションメモリ１６の一部のブロック図が示されている。本発明のコンフィギュレーションメモリ１６は第一組のメモリセル２１−１乃至２１−ｎ、第二組のメモリセル２３−１乃至２３−ｎ、及び複数個のスイッチ２８−１乃至２８−ｎを具備するスイッチング手段を有している。第一組のメモリセル２１−１乃至２１−ｎを第一アレイとし、且つ第二組のメモリセル２３−１乃至２３−ｎを第二アレイとして説明するが、当業者にとって明らかな如く、２個以上のアレイを設けることも可能である。一方、第一アレイ及び第二アレイは単一アレイの一部とすることが可能であり、且つコンフィギュレーションメモリセルの一つの列における交互のセルとすることも可能である。図３は第一アレイの一つの列２６−ａ及び第二アレイの一つの列２６−ｂを示している。実際の装置においては、各アレイは図１の多数の区画部分１２のコンフィギュレーションを行うために多数の列を有している。第一アレイと第二アレイの両方はＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８に対し完全な組のコンフィギュレーションデータを格納する。従って、本発明に基づくコンフィギュレーションメモリ１６は、従来のコンフィギュレーションメモリ１５内に設けられているものよりも一層多くのメモリセル２１−１乃至２１−ｎ、２３−１乃至２３−ｎを有している。本発明に基づいて、各ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８は、第一アレイ内に格納されているコンフィギュレーションデータ又は第二アレイ内に格納されているコンフィギュレーションデータの何れかを使用してコンフィギュレーション即ち形態の特定を行うことが可能である。
【００２１】
再度のコンフィギュレーションによってスイッチすることがなく長い間一定のコンフィギュレーションを保持する付加的なメモリセル３１を設けることが可能である。メモリセル３１の出力は、更に、区画部分１２のコンフィギュレーションを行うためのデータを供給する。
【００２２】
従来のコンフィギュレーションメモリ１５の場合における如く、メモリセル２１−１乃至２１−ｎ、２３−１乃至２３−ｎ及び３１−１乃至３１−ｍのアドレス入力はアドレスライン２４によって共通結合されている。第一アレイの各列は第二アレイの一つの列に対応している。図３において、列２６−ａは列２６−ｂに対応している。第一アレイの一つの列は第二アレイの対応する列と同一のアドレスを有している。第三アレイの一つの列もこのアドレスを共用することが可能である。従って、列２６−ａ、２６−ｂ及び３１に対応するアドレス信号がアドレスライン２４上においてアサート即ち活性化されると、列２６−ａ、列２６−ｂ、列３１はコンフィギュレーション手段からのデータを受取るべく結合される。メモリセル２１−１乃至２１−ｎ、２３−１乃至２３−ｎ、３１−１乃至３１−ｍからのデータは、常に、Ｑ出力において使用可能な状態である。コンフィギュレーションメモリセル２１−１乃至２１−ｎ及び２３−１乃至２３−ｎの最初の二つのアレイの出力はそれぞれのスイッチ２８−１乃至２８−ｎへ結合される。通常、第二アレイ内におけるコンフィギュレーションメモリセル２３と同数のコンフィギュレーションメモリセル２１が第一アレイ内に存在している。更に、通常、第一アレイ又は第二アレイ内のコンフィギュレーションメモリセル２１，２３と同数のスイッチ２８−１乃至２８−ｎがスイッチ手段２８内に存在している。
【００２３】
各スイッチ２８−１乃至２８−ｎは二つのデータ入力と一つのセレクト（選択）入力とを有している。各スイッチ２８−１乃至２８−ｎの第一データ入力は、列２６−ａのメモリセル２１−１乃至２１−ｎのそれぞれの一つへ結合即ち供給され、且つ第二データ入力は列２６−ｂのメモリセル２３−１乃至２３−ｎのそれぞれの一つへ結合即ち供給される。図３における如く、列２６−ａのメモリセル２１−１の出力及び列２６−ｂのメモリセル２３−１の出力は、スイッチ２８−１の第一入力及び第二入力へそれぞれ結合即ち供給される。同様に、列２６−ａのメモリセル２１−２の出力及び列２６−ｂのメモリセル２３−２の出力はスイッチ２８−２の第一入力及び第二入力へそれぞれ結合即ち供給される。図３に示した実施例においては、スイッチ２８−１乃至２８−ｎは２：１マルチプレクサである。各スイッチ２８−１乃至２８−ｎは、セレクト入力へ印加される信号に応答して、第一データ入力における信号又は第二データ入力における信号をパス即ち通過させる。各スイッチ２８−１乃至２８−ｎのセレクト入力は、Ａ／Ｂセレクト信号を受取るために、Ａ／Ｂライン３０へ結合即ち供給される。Ａ／Ｂセレクト信号が「高」状態であると、スイッチ２８−１乃至２８−ｎは列２６−ａのメモリセル２１−１乃至２１−ｎからの入力をパス即ち通過させる。Ａ／Ｂセレクト信号が「低」状態であると、スイッチ２８−１乃至２８−ｎは、列２６−ｂのコンフィギュレーションメモリセル２３−１乃至２３−ｎからの入力をパス即ち通過させる。スイッチ２８−１乃至２８−ｎの出力はＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へ結合即ち供給される。Ａ／Ｂライン３０上のＡ／Ｂセレクト信号をアサート（活性化）し且つアサートしないことにより、第一アレイ内に格納されたコンフィギュレーションデータ及び第二アレイ内に格納されたコンフィギュレーションデータは、選択的に、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へパスされる。従って、二つの択一的な組のコンフィギュレーションデータに従ってＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８を再度コンフィギュレーション即ち形態特定を行うことが可能である。スイッチ２８−１乃至２８−ｎは非常に迅速にスイッチすることが可能であるので、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へ供給されるコンフィギュレーションデータは第一アレイ内に格納されている第一組のコンフィギュレーションデータと第二アレイ内に格納されている第二組のコンフィギュレーションデータとの間で迅速にスイッチすることが可能である。本実施例においては、このスイッチング動作は、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８がユーザクロックの単一サイクル内において実効的に二度再コンフィギュレーションを行うことが可能であるような速さのものである。
【００２４】
スイッチング手段２８を複数個の２：１マルチプレクサとして記載してあるが、当業者にとって明らかな如く、ｎ個の２：１マルチプレクサは２ｘ個の入力を受取り且つｘ個の出力を送給する多様なその他のマルチプレクサ形態で置換させることが可能である。例えば、ｎ個の２：１マルチプレクサはｎ／４個の８：４マルチプレクサで置換させることが可能である。
【００２５】
上述した実施例のコンフィギュレーションメモリ１６は第一組のメモリセルと、第二組のメモリセルと、二つの入力の間でスイッチするスイッチング手段とを具備するものとして記載してあるが、当業者にとって明らかな如く、付加的な組のメモリセルを設けることが可能であり、且つスイッチング手段２８は第一組、第二組又は付加的な組のメモリセルのうちの何れか一つからのデータを出力させることが可能である。この様な付加的な組のメモリセルを有する実施例は、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８をユーザクロックの単一サイクル内において３回、４回又はそれ以上の回数再コンフィギュレーションさせることが可能である。
【００２６】
次に、図４を参照すると、コンフィギュレーションメモリ１６の別の実施例が示されている。この実施例においては、マルチプレクサ２８−１乃至２８−ｎ、メモリセル２１−１乃至２１−ｎ、メモリセル２３−１乃至２３−ｎは列センスアンプ７２−１乃至７２−ｎ、スタチックランダムアクセスメモリ（ＳＲＡＭ）セル７４−１乃至７４−ｎ及び７６−１乃至７６−ｎでそれぞれ置換されている。この実施例においては、列２６−ａ及び２６−ｂは行７８ａ及び７８ｂでそれぞれ置換されており、それらは従来の書込み回路４６−１乃至４６−ｎによってロードされる。マルチプレクサ２８−１乃至２８−ｎは使用されていない。その代わりに、行出力信号は列センスアンプ７２−１乃至７２−ｎによってバッファされる。Ａ／Ｂライン３０はＡアドレスライン８０及びＢアドレスライン８２で置換されている。Ａアドレスライン８０上の信号が「高」であり且つＢアドレスライン８２上の信号が「低」である場合には、ＳＲＡＭセル行７８−ａ内のデータはセンスアンプ７２−１乃至７２−ｎへ供給され、次いでＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へ供給される。Ａアドレスライン８０上の信号が「低」であり且つＢアドレスライン８２上の信号が「高」である場合には、ＳＲＡＭセル行７８−ｂ内のデータはセンスアンプ７２−１乃至７２−ｎへ供給され、それは、次いでＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８へ供給される。当業者はＡアドレスライン８０上の信号及びＢアドレスライン８２上の信号を交互に「高」に設定する手段を発生させることが可能である。当業者にとって明らかな如く、より多くのＳＲＡＭセル行７８を付加して、二組を超えた組のコンフィギュレーションデータを与え、従って、ユーザのクロックサイクル期間中にＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８を再コンフィギュレーションさせることの可能な回数を増加させることが可能である。
【００２７】
コンフィギャラブル論理ブロック
次に、図５を参照すると、従来のＣＬＢ１３のブロック図が示されている。従来のＣＬＢ１３は、関数発生器３４と、レジスタ３６と、出力スイッチ３８とを有している。関数発生器３４はコンフィギュレーションメモリ１５内に格納したデータに従って幾つかの入力の論理関数を実現する。特定の論理関数はコンフィギュレーションデータによって選択される。入力は従来のルーチングマトリクスへ結合される。コンフィギュレーションデータはＣＬＢ１３と関連したコンフィギュレーションメモリ１５からやってくる。
【００２８】
関数発生器３４の出力は直接的に又はレジスタ３６を介して出力スイッチ３８へ供給される。レジスタ３６は例えばＤフリップフロップなどの従来のデータ格納レジスタである。レジスタ３６は関数発生器３４の出力へ結合したデータ入力と、ライン４４のうちの１本のライン４４−ｃを介してユーザのクロック信号を受取るべく結合されたクロック入力を有している。レジスタ３６はデータ出力Ｑを有している。
【００２９】
出力スイッチ３８は２個のデータ入力と、１個のデータ出力と、１個の選択入力とを有しており、且つ２：１マルチプレクサとすることが可能である。典型的に、コンフィギュレーションメモリはスイッチ３８のセレクト入力を制御する。次に、図６Ａを参照すると、本発明に基づいて構成されたＣＬＢ１４の一実施例のブロック図が示されている。この実施例に基づくＣＬＢ１４は、関数発生器３４と、第一データラッチ４２ａと、第二データラッチ４２ｂと、第一レジスタ３６ａと、第二レジスタ３６ｂと、第一出力スイッチ３９ａと、第二出力スイッチ３９ｂとを有している。好適には、第一データラッチ４２ａ、第一レジスタ３６ａ、第一出力スイッチ３９ａが、関数発生器３４が第一組のメモリセル２１の出力でコンフィギュレーションが行われた場合（図３）に、関数発生器３４の出力を与える。従って、第一データラッチ４２ａ又はレジスタ３６ａによって格納されているデータは、メモリセル２３からの第二組のコンフィギュレーションデータに基づいてＣＬＢ１４のコンフィギュレーションが行われた場合に、ユーザクロックサイクルの後半において使用することが可能である。第二データラッチ４２ｂ、第二レジスタ３６ｂ、第二スイッチ３９ｂは、メモリセル２３の第二組のコンフィギュレーションデータに基づいてコンフィギュレーションが行われる場合に、関数発生器３４の出力を格納し且つルーチング即ち経路付けを行うために同様に使用される。
【００３０】
関数発生器３４は上述した図５のものと均等である。関数発生器３４のデータ入力はコンフィギャラブルルーチングマトリクス１８へ結合されており、且つ制御入力は本発明のコンフィギュレーションメモリ１６へ供給される。従って、関数発生器３４は、ＣＬＢ１４の他の部分が再度コンフィギュレーションされる場合に、制御信号によって再度コンフィギュレーションさせることが可能である。第一データラッチ４２ａは二進ビットのデータを格納するための従来のデータラッチである。第一データラッチ４２ａはデータ入力（Ｄ）と、データ出力（Ｑ）と、ラッチイネーブル入力（クロック入力）とを有している。第一データラッチ４２ａのデータ入力は関数発生器３４の出力へ結合している。ラッチイネーブル入力はＡ／Ｂライン３０へ供給されてＡ／Ｂ信号を受取る。第一データラッチ４２ａは、ラッチイネーブル入力へ印加される信号に応答して、データをラッチするか又はパス即ち通過させる。第一データラッチ４２ａは、ユーザクロックサイクルの第一部分期間中にデータをパス即ち通過させ、且つユーザのクロックサイクルの第二部分期間中にデータをラッチさせる。本実施例においては、ラッチイネーブル信号が低状態へアサート即ち活性化され、従ってデータは「高」Ａ／Ｂ信号によってパスされ且つ「低」Ａ／Ｂ信号によってラッチされる。第二データラッチ４２ｂは第一データラッチ４２ａと同一の機能性及び構成を有している。第二データラッチ４２ｂのデータ入力は関数発生器３４の出力へ結合している。しかしながら、第二データラッチ４２ｂのラッチイネーブル入力はＡ／Ｂ＿信号を受取るためにライン６８へ結合している。尚、本明細書において、英文字記号の後にアンダーラインを付したものはその英文字記号の反転信号であることを表わしている。第二データラッチ４２ｂがそのラッチイネーブル入力において、第一データラッチ４２ａへ印加した信号の反転した信号を受取るので、データラッチ４２ａ，４２ｂはユーザのクロックサイクル期間中の反対の時間においてデータをパス及びラッチする。
【００３１】
当業者にとって明らかな如く、ラッチ４２ｂのラッチイネーブル入力を駆動するためにＡ／Ｂライン３０から駆動されるインバータを使用することが可能であり、従ってＡ／Ｂ＿ライン６８の必要性を取除いている。
【００３２】
第一レジスタ３６ａは上述した図５に関連して説明したタイプのデータレジスタである。例えば、第一レジスタ３６ａはＤフリップフロップとすることが可能である。レジスタ３６ｂのデータ入力は第一データラッチ４２ａのデータ出力へ結合されている。第一レジスタ３６ａのクロック入力はユーザのクロック信号を受取るためにライン４４−ｃへ結合している。同様に、第二データレジスタはＤフリップフロップとすることが可能である。第二レジスタ３６ｂのデータ入力は第二データラッチ４２ｂのデータ出力へ結合しており、且つクロック入力はユーザのクロック信号を受取るためにライン４４−ｃへ供給される。
【００３３】
第一出力スイッチ３９ａは例えば３：１マルチプレクサなどの従来のスイッチング装置である。出力スイッチ３９ａ，３９ｂは三つのデータ入力と、一つのデータ出力と、一つのコマンド入力とを有している。出力スイッチ３９ａの第一データ入力はレジスタ３６ａの出力へ結合している。出力スイッチ３９ａの第二データ入力はデータラッチ４２ａのデータ出力へ結合している。本実施例においては、関数発生器３４の出力は出力スイッチ３９ａの第三データ入力へ結合している。出力スイッチ３９ａは、出力スイッチ３９ａの制御入力への信号に応答して三つの入力上へ印加される信号のうちの一つを出力する。これらの制御入力は関連するメモリセル２１，２３又はより一般的には本発明のコンフィギュレーションメモリ１６における３１へ供給され、且つ典型的に、Ａ／Ｂライン３０がスイッチする場合に不変のまま止まる。
【００３４】
第二出力スイッチ３９ｂも３：１マルチプレクサである。第二出力スイッチ３９ｂは第一、第二、第三データ入力と、１個のデータ出力と、一対の制御入力とを有している。第一データ入力は第二レジスタ３６ｂの出力へ結合しており、第二データ入力は第二データラッチ４２ｂの出力へ結合している。出力スイッチ３９ｂの第三入力は関数発生器３４の出力へ結合している。これらの制御入力は、これらの入力信号のうちの何れが第二出力スイッチ３９ｂから出力されるかを制御するために、関連するメモリセル２１，２３又はコンフィギュレーションメモリ１６内の３１へ供給される。第二出力スイッチ３９ｂの出力はＣＬＢ１４の出力のうちの一つを形成する。
【００３５】
本発明のこの実施例は、ユーザのクロックの１サイクル期間中にＣＬＢ１４が１個を超えた数の論理関数を実行するように、ＣＬＢ１４を再度コンフィギュレーション即ち形態特定させることによってＦＰＧＡ１０により実現される論理関数の数を増加させている。本発明の２期間実施例は、ユーザのクロックの１サイクルを二つの期間、即ちＡ期間とＢ期間とに分割している。Ａ期間及びＢ期間は、等しいものとさせることが可能であるが、その様にすることは必ずしも必要ではない。Ａ期間の期間中に、本発明の２期間実施例は、コンフィギュレーションメモリ１６の第一アレイ内に格納されているコンフィギュレーションデータを使用して、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８のコンフィギュレーション即ち形態特定を行う。次いで、ＣＬＢ１４はそれらの論理関数を実行し、Ａ期間が終了する。Ｂ期間の期間中、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８は、コンフィギュレーションメモリ１６の第二アレイ内に格納されているコンフィギュレーションデータを印加することによって再度コンフィギュレーションが行われる。次いで、ＣＬＢ１４はそれらの論理関数を実行し、且つＢ期間及びユーザクロックのサイクルが終了する。従って、本実施例においては、ＦＰＧＡ１０がユーザのクロックの１サイクル期間中に実行することの可能な論理関数の数を２倍とさせている。
【００３６】
図６Ａは、本発明が二組のコンフィギュレーションデータを有する場合のＣＬＢ１４を示している。本発明は任意の数の組のコンフィギュレーションデータを有することが可能である。各組のコンフィギュレーションデータに対して、各ＣＬＢ１４は、出力信号を発生するために、データラッチ４２と、レジスタ３６と、スイッチ３９とを包含する付加的な出力経路を有している。
【００３７】
別の実施例においては、データラッチは、それらの出力が関数発生器３４の出力ではなく入力へ指向されるように配設させることが可能である。この様な実施例を図６Ｂに示してある。図６Ｂにおいては、ラッチ６２ａ−６２ｄがＣＬＢ１７の入力に設けられており、且つ二つの異なる動作期間の期間中にルーチングマトリクス１８内に存在する信号を格納する。ラッチ６２ａ及び６２ｂは、Ａ／Ｂ信号が高状態である場合にそれらのそれぞれのＤ入力端子上に存在する信号をパス即ち通過させ、且つＡ／Ｂ信号が低状態へ移行する場合に存在するデータを捕獲する。ラッチ６２ｃ及び６２ｄは、Ａ／Ｂ信号が低状態にある場合にそれらのＤ入力端子上に存在するデータをパス即ち通過させ、且つＡ／Ｂが高状態へ移行する場合に存在するデータを捕獲する。任意の時刻においてラッチ６２ａ−６２ｄのうちの二つがルーチングマトリクス１８からのデータをパスさせており且つ二つがルーチングマトリクス１８から先に受取ったデータを格納している場合であっても、ラッチ６２ａ−６２ｄの四つの全ての出力は常に関数発生器３４の端子Ｉ１−Ｉ４へ供給される。従って、Ａ／Ｂクロック信号の二つのフェーズにおいて、ルーチングマトリクス１８におけるラインは異なる目的のために使用することが可能である。例えば、同一のルーチングマトリクスラインセグメント、即ちラインセグメントのストリングをＡ／Ｂクロック信号の第一フェーズ期間中にラッチ６２ａへの信号及びＡ／Ｂクロック信号の第二フェーズ期間中にラッチ６２ｃへの信号を供給するために使用することが可能である。両方の信号は関数発生器３４によって使用される。ラッチ６２ａ乃至６２ｄはルーチングマトリクス１８がこれら二つのフェーズ期間中に便利に再使用することを可能としている。勿論、二つを超えた数のクロック信号でラッチ６２ａ−６２ｄを別々にクロック動作させることにより二つを超えた数のフェーズを与えることが可能である。
【００３８】
ルーチングマトリクス
図６Ｃは本発明と共に使用することの可能なルーチングマトリクス即ち経路付けマトリクス１８の一実施例を示している。更に、図６Ｃの周辺には４個のＣＬＢ１４ａ，１４ｂ，１４ｃ，１４ｄの一部が示されている。ルーチングマトリクス１８におけるトランジスタはそれらが接続させることの可能なラインの間に延在する短いラインによって表わされている。例えば、トランジスタＴ６１は、ＣＬＢ１４ｂにおける入力ラインＩ４とルーチングラインＲ６１との間に延在している。トランジスタＴ６２はＣＬＢ１４ａにおけるマルチプレクサ３９ｂの出力をルーチングラインＲ６１へ接続させることが可能である。トランジスタＴ６３は、ルーチングラインＲ６１をルーチングラインＲ６３へ接続させることが可能であり、且つトランジスタＴ６４はルーチングラインＲ６１をルーチングラインＲ６４へ接続させることが可能である。各トランジスタの制御は、コンフィギュレーションメモリ１６から該トランジスタのゲートへのラインによって与えられる。図面において簡単化のために、ほとんどのトランジスタには記号が付けられておらず、且つコンフィギュレーションメモリ１６から各ゲートへの接続はスイッチボックスＳ６１，Ｓ６２，Ｓ６３，Ｓ６４の各々への単一のラインによって表わされている。その他のルーチングマトリクスは引用により本明細書に導入した１９９３年のザイリンクスのデータブックに示されている。図６Ｃの目的は、ルーチングマトリクス１８と、ＣＬＢ１４と、コンフィギュレーションメモリ１６からのコンフィギュレーションラインとの間の関係を例示することである。図６Ｃの新規な側面は、コンフィギュレーションメモリ１６からの信号がＣＬＢ１４を再度コンフィギュレーションすることに関連してルーチングマトリクス１８を再度コンフィギュレーションすることが可能であり、その際に上述した如く一つを超えた接続に対してルーチングマトリクス１８内の同一のルーチングラインを使用することを可能としているという点である。
【００３９】
動作モード
本発明はＣＬＢ１４の三つの動作モードを与える。ＣＬＢ１４はシンプルで、高速で、非同期な組合わせ論理機能を実現するために使用することが可能である。この第一モードは、第一アレイ内に格納されているコンフィギュレーションデータが第二アレイ内に格納されているコンフィギュレーションデータと同一である場合に存在する。このモードにおいては、第一及び第二出力スイッチ３９ａ，３９ｂは、関数発生器３４によって出力されるデータを直接的に受取り且つパスするようにコンフィギュレーションがなされる。Ｂ出力経路は、使用されることがないか、又はスイッチ３９ａ，３９ｂの出力が共通結合されて単一の出力経路を形成する。ライン３０上のＡ／Ｂ信号及びライン４４上のユーザのクロック信号をアサート即ち活性化させることが可能であるが、この第一モードはデータラッチ４２ａ，４２ｂ及びレジスタ３６ａ，３６ｂを使用するものではない。従って、Ａ／Ｂ信号及びユーザのクロック信号は無視される。このモードはＦＰＧＡ１０によって実現される論理関数の数を増加させるという本発明の能力を使用するものではない。
【００４０】
第二動作モードは高速レジスタ型モードである。このモードは同期的である。高速非同期モードの場合における如く、この第二モードは、第一及び第二アレイ内に格納されているコンフィギュレーションデータが同一である場合に存在する。Ａ／Ｂ信号はアサート即ち活性化されることはなく（高状態に保持される）、従って第一データラッチ４２ａは、ユーザのクロックサイクルのＡ期間及びＢ期間の両方の期間中に第一レジスタ３６ａへデータをパス即ち通過させる。次いで、ユーザクロックの次の上昇エッジにおいて、第一データラッチ４２ａを介してパスされたデータが第一レジスタ３６ａ内へクロック入力される。このモードにおいては、ＣＬＢ１４の出力は、ユーザのクロックの次のサイクルの開始まで変化することはない。このモードはＢ出力経路を使用することはなく、且つ本発明のＦＰＧＡ１０によって実現される論理関数の数を増加させるための本発明の能力を利用するものではない。
【００４１】
次に、図７を参照して第三モードについて説明する。図７は、本発明のＦＰＧＡ１０における再コンフィギュレーション制御信号を示したタイミング線図である。図７は、例示的なユーザクロックの二つのサイクル、例示的なＡ／Ｂ信号の二つのサイクル、例示的なＡ／Ｂ′信号の二つのサイクル、ラッチ４２ａの四つの例示的な状態、ラッチ４２ｂの四つの例示的な状態、レジスタ３６ａの二つの例示的な出力、及びレジスタ３６ｂの二つの例示的な出力を示している。Ａ／Ｂ及びＡ／Ｂ′信号がユーザのクロックのサイクルにおける中間点Ｔ２における遷移に対して示されているが、この様な分割は必ずしも必要なものではない。Ａ／Ｂ信号は、ユーザのクロックの１サイクルを多数の中間点において分割することが可能である。この分割に関する制限は、Ａ期間及びＢ期間の両方が十分に長いものであって、ＦＰＧＡ１０における全ての信号がＣＬＢ１４を介して伝搬し且つ問題なく格納が行われるのに十分に長い間ラッチ及びレジスタの入力において信号がセットアップされるように安定化するものでなければならないということである。
【００４２】
図７はＣＬＢ１４の第三動作モードを説明するのに有用である。この第三動作モードはＦＰＧＡ１０によって実行される論理関数の数を増加させる本発明の能力を利用するものである。この第三モードにおいては、Ａ期間中のＣＬＢ１４のコンフィギュレーション及びコンフィギャラブルルーチングマトリクス１８のコンフィギュレーションはＢ期間中のコンフィギュレーションとは異なるものである。この第三モードは本明細書においてはパイプラインモードと呼称する。
【００４３】
ユーザクロックサイクルの開始時Ｔ１において、Ａ／Ｂ信号がサイクルを開始する。Ａ期間において、Ａ／Ｂ信号は高状態であり、従ってＣＬＢ１４及びルーチングマトリクス１８は第一組のコンフィギュレーションデータでコンフィギュレーションが行われる。Ａ期間の期間中においては、第一データラッチ４２ａがデータをパス即ち通過させ、且つデータラッチ４２ｂがデータをラッチする。
【００４４】
Ａ／Ｂ信号の遷移時即ちＴ２において、Ａ／Ｂ信号がメモリ１６からの第二組のコンフィギュレーションデータを選択し、従ってＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８の再コンフィギュレーションを行う。第一データラッチ４２ａはその入力においてデータをラッチし、且つ第二データラッチ４２ｂはその入力においてデータをパスさせる。
【００４５】
ユーザのクロックの次のサイクルの開始時Ｔ３において、Ａ／Ｂ信号は再度遷移を行う。再度、ＣＬＢ１４及びコンフィギャラブルルーチングマトリクス１８は、第一組のコンフィギュレーションデータに従って再コンフィギュレーションが行われる。第一データラッチ４２ａがデータをパスし、且つ第二データラッチ４２ｂがデータをラッチする。ユーザのクロック及びＡ／Ｂ信号の上昇エッジにおいて、第一及び第二レジスタ３６ａ，３６ｂがデータをクロック入力させる。レジスタ３６ａはデータラッチ４２ａからラッチされたデータをクロック入力し、且つレジスタ３６ｂはデータラッチ４２ｂからのパスデータをクロック入力させる。従って、第一レジスタ３６ａは、第一組のコンフィギュレーションデータに従ってユーザのクロックの最初の部分の期間中にコンフィギュレーションが行われた場合に関数発生器３４の出力を格納する。第二レジスタ３６ｂは第二組のコンフィギュレーションデータに従ってユーザのクロックの後の部分の期間中にコンフィギュレーションがされた場合に関数発生器３４の出力を格納する。
【００４６】
Ａ／Ｂ信号の各遷移上において、第一及び第二出力スイッチ３９ａ，３９ｂは再度コンフィギュレーションが行われる。多くの適用場面において、出力スイッチ３９ａ及び３９ｂはユーザクロックサイクル期間中に再度コンフィギュレーションが行われることはない。しかしながら、図６Ａの実施例においては、その構造が出力スイッチの再コンフィギュレーションを行うことを可能としており、且つ幾つかの適用例においてはそのことが望ましい場合がある。例えば、スイッチ３９ａは、Ａ期間中に関数発生器３４からのデータをパスし且つＢ期間中にレジスタ３６ａからのデータをパスさせる場合がある。一方、スイッチ３９ｂは両方の期間中にラッチ４２ｂからのデータをパスさせる場合がある。
【００４７】
ルーチングマトリクス１８もＡ／Ｂ信号の各遷移において再コンフィギュレーションされる。ＣＬＢ１４の場合における如く、Ａ期間中に、ＣＬＢ１４への入力はＢ期間中におけるものと異なる供給源から来ることが可能である。Ａ／Ｂ信号の各遷移において、ルーチングマトリクスは再コンフィギュレーションが行われて、正しい入力を各ＣＬＢ１４へ供給し且つＣＬＢ１４の出力を正確にルーチング即ち経路付けさせる。
【００４８】
本発明のＦＰＧＡ１０の全ての区画部分１２が同一のモードでコンフィギュレーションが行われることが必要なものではない。幾つかの区画部分１２は高速非同期モードでコンフィギュレーションさせ、他のものを高速レジスタ型モードでコンフィギュレーションさせ、更に他のものをパイプラインモードでコンフィギュレーションさせることが可能である。従って、ＣＬＢ１４は従来のＦＰＧＡ１０において実現される論理関数の数よりもＦＰＧＡ１０において実現される論理関数の数を著しく増加させることを可能としている。本発明は従来技術と比較してＦＰＧＡ１０のシリコン面積を著しく増加させることなしにこの様な論理関数の数を増加させている。
【００４９】
図７はユーザのクロックの１サイクルにおいて発生するＡ／Ｂ信号の完全なサイクルを示している。しかしながら、Ａ／Ｂ信号はユーザのクロックの１サイクルよりも長い期間を有することが可能である。次に、図８を参照すると、第一変形Ａ／Ｂ信号Ａ／Ｂ−１及びその反転信号Ａ／Ｂ−１＿、及び第二変形Ａ／Ｂ信号Ａ／Ｂ−２及びその反転信号Ａ／Ｂ−２＿と比較して、ユーザクロックの四つのサイクルを示したタイミング線図が示されている。図８において、Ａ／Ｂ−１信号の第一部分はユーザのクロックの二つのサイクルである。同様に、Ａ／Ｂ−１信号の第二の部分はユーザのクロックの二つのサイクルである。Ａ／Ｂ−２信号の第一部分はユーザのクロックの１サイクルである。Ａ／Ｂ−２信号の第二部分もユーザのクロックの１サイクルである。図７に関して説明した如く、Ａ／Ｂ信号の第一部分はＡ／Ｂ信号の第二部分と長さが等しいものである必要はない。図８は、一般的に、Ａ／Ｂ信号は任意の長さとすることが可能であり、ユーザのクロックの期間よりも大きいか、等しいか、短いかの何れかとすることが可能であることを示している。
【００５０】
具体例
次に、図９を参照すると、ＦＰＧＡ１０において実現することの可能な３ビットカウンタのブロック図が示されている。このカウンタは三つの出力Ａ，Ｂ，Ｃと１個のクロック入力とを有している。この３ビットカウンタは、第一２入力ＡＮＤゲート５０と、第二２入力ＡＮＤゲート５２と、３入力ＡＮＤゲート５４と、３入力ＯＲゲート５６と、２入力ＸＯＲゲート５８と、第一レジスタ６０と、第二レジスタ６２と、第三レジスタ６４とを有しており、それらの構成要素の全ては図示した如くに接続されている。
【００５１】
図９，１０，１１の場合には、その具体例はＣＬＢの出力としてＱ＿を示している。このことは、ルーチングマトリクスの再コンフィギュレーションを行うことの利点をより明確に例示する目的のためになされている。ＦＰＧＡの場合には、Ｑはプログラマブルルックアップテーブルを駆動することが可能であり、その場合にそれはＱ＿へ反転させることが可能であるので、一つの出力が必要であるに過ぎない。従って、図４及び５はＣＬＢの出力としてＱ＿は示していない。
【００５２】
次に、図１０を参照すると、従来のＦＰＧＡを使用して３ビットカウンタを実現する場合のブロック図が示されている。この具体例は、従来の区画部分１１−１，１１−２，１１−３，１１−４を有している。コンフィギャラブルルーチングマトリクス７０−１，７０−２，７０−３，７０−４はこれらの区画部分を相互接続している。区画部分１１−１，１１−２，１１−３，１１−４の出力の接続は、各区画部分１１のコンフィギャラブルルーチングマトリクス７０を介して行われる。各ドット即ち黒点はそれらの関連するコンフィギュレーションメモリ内にデータを格納することによって接続されたルーチングマトリクス７０の一部を表わしている。簡単化のために、出力スイッチ、コンフィギュレーションメモリ、制御ライン、及びクロックラインは図示していない。
【００５３】
第一の従来のＣＬＢ１３−１は、関数発生器３４−１が２入力ＸＯＲ関数を実現し且つ出力スイッチ３８−１（不図示）がレジスタ３６−１の出力をパスさせるようにコンフィギュレーションが行われている。第二の従来のＣＬＢ１３−２は、関数発生器３４−２がＤ＝ＡＢ＿＋ＡＣ＿＋Ａ＿ＢＣの方程式、尚Ａ＿ＢＣは関数発生器３４−４の出力であり且つＤは関数発生器３４−２の出力である方程式の３入力２レベルレジタル関数を関数発生器３４−２が実現するようにコンフィギュレーションが行われている。第二の従来のＣＬＢ１３−２の出力スイッチ（図５の出力スイッチ３８参照）は、レジスタ３６−２の出力をパスさせるようにコンフィギュレーションがなされている。第三の従来のＣＬＢ１３−３は、関数発生器３４−３が該信号を出力Ｃ＿へ反転させ、且つ出力スイッチ３８−３（不図示）がレジスタ３６−３の出力をパスさせるようにコンフィギュレーションがなされている。従来のＣＬＢ１３−４は３入力ＡＮＤ関数Ａ＿ＢＣを実現するためにコンフィギュレーションがなされている。従来のＣＬＢ１３−４の出力スイッチは、関数発生器３４−４の出力をパスするようにコンフィギュレーションがなされている。コンフィギャラブルルーチングマトリクス７０−１，７０−２，７０−３，７０−４は図９のカウンタを形成するために黒点によって表わされているように接続されている。
【００５４】
次に、図１１を参照すると、本発明のＦＰＧＡ１０を使用した３ビットカウンタの実現例のブロック図を示している。コンフィギャラブルルーチングマトリクス１８はそれによって形成される接続部の周りに点線として示してある。これらの接続部は中実のコネクタ又は中空のコネクタの何れかで示してある。ルーチングマトリクス１８はＡ期間中にコンフィギュレーションが行われて中実の接続部によって表わされる接続部を構成させる。Ｂ期間において、コンフィギャラブルルーチングマトリクス１８は中空接続部によって表わされる接続を形成するためにコンフィギュレーションが行われる。ルーチングマトリクス１８は、Ａ期間及びＢ期間の両方において中実の接続部の周りの中空の接続部によって表わされる接続部を実現するためにコンフィギュレーションが行われる。このことはメモリセル２１−ｘ内に格納されているデータがメモリセル２３−ｘ内に格納されているデータ（尚、ｘは図３の１とｎとの間）と同一である場合に対応している。コンフィギャラブルルーチングマトリクス１８は従来のコンフィギャラブルルーチングマトリクスよりも一層大きいが、従来のコンフィギャラブルルーチングマトリクスの寸法の２倍であることは必ずしも必要ではない。簡単化のために、図６Ａのものに対応する出力スイッチ３９ａ−１，３９ｂ−１，３９ａ−２，３９ｂ−２、コンフィギュレーションメモリ、制御ライン、クロックラインは図示していない。
【００５５】
図１１において、この３ビットカウンタはＦＰＧＡ１０の二つの区画部分１２−１及び１２−２を使用している。各区画部分は二つの論理関数を実行し、即ちＡ期間中に一つとＢ期間中に別の一つとを実行する。図１１において、参照番号３４−１−ａ及び３４−１−ｂは二つの期間において異なる関数発生器論理を実現する同一の物理的装置を表わしている。Ａ期間中において、区画部分１２−１の第一のＣＬＢ１４−１−ａは、関数発生器論理３４−１−ａが３入力ＡＮＤゲートであり且つ出力スイッチ３９−１（不図示）が第一のデータラッチ４２−１−ａからのデータをパスさせるようにコンフィギュレーションが行われる。区画部分１２−１はＢ期間において再コンフィギュレーションが行われると、関数発生器論理３４−１−ｂはＤ＝ＡＢ＿＋ＡＣ＿＋Ａ＿ＢＣの方程式で、尚Ｄは関数発生器論理３４−１−ｂの出力である方程式を有する３入力論理関数である。注意すべきことであるが、関数発生器論理３４−１−ａの出力はＡ期間の終了時にデータラッチ４２−１−ａ内にラッチされる。データラッチコンフィギュレーション４２−１−ａの出力は次のＢ期間における関数発生器論理３４−１−ｂに対して使用可能であり且つそれによって使用される。図６Ａのスイッチ３９ｂと均等なＣＬＢ１４−１の出力スイッチはレジスタ３６−１−ｂからのデータをパスするようにコンフィギュレーションされているが図示していない。
【００５６】
区画部分１２−２は、関数発生器論理３４−２−ａが入力Ｃ＿を単純にパスさせるようにＡ期間中にコンフィギュレーションが行われる。出力スイッチは、レジスタ３６−２−ａからのデータをパスするようにコンフィギュレーションが行われる。Ｂ期間において、関数発生器論理３４−２−ｂは２入力ＸＯＲ関数を実行し、且つ出力スイッチ（図６Ａの３９ｂと均等）はレジスタコンフィギュレーション３６−２−ｂからのデータを出力するようにコンフィギュレーションされる。
【００５７】
図１０と１１との比較により、本発明の２コンフィギュレーション実施例は従来のＦＰＧＡと比較してＦＰＧＡ１０が実現可能な論理関数の数を２倍としている。この３ビットカウンタを実現するために四つの従来の区画部分が必要とされているが、本発明では二つの区画部分１２が必要とされるに過ぎない。本発明のこの実施例は、シリコン面積を多少増加することを必要とする。なぜならば、コンフィギュレーションデータを格納するための付加的なメモリを設けることが必要であり且つコンフィギャラブルルーチングマトリクス１８及びＣＬＢ１４の寸法が増加するためである。しかしながら、二つのコンフィギュレーションを提供する一つの区画部分は１個のコンフィギュレーション区画部分の面積の２倍よりも著しく小さい。
【００５８】
ユーザのクロックの１サイクル以内において再コンフィギュレーションを行うことが可能である。ほとんどのユーザは二つの区画部分の遅延よりも大きな１個のクロックサイクルを必要とするので、ユーザが該論理をＡ上でランするものとＢ上でランするものとの間に注意深く区別する場合には、唯一の速度に関するペナルティは、データ経路内の要素がコンフィギュレーションをスイッチするのにかかる時間である。これらの要素はルーチングマトリクス１８におけるゲート、関数発生器３４におけるパスゲート乃至はその他の装置、及び出力スイッチ３９を包含しており、各経路要素はマルチプレクサ２８−ｘによって制御され、尚ｘは図３の１とｎとの間である。このマルチプレクサは高速要素であり、データ経路内の要素は高速であり、且つこれらの要素は並列的にスイッチし、従ってペナルティは小さい。
【００５９】
ユーザにとって明白な最小の速度損失が存在する場合がある。ユーザにとって明白な速度のペナルティを更に最小とさせるために、スイッチ２８−１乃至２８−ｎの幾つかは他のものよりも一層クリチカル即ち臨界的である。図６Ａの実施例においては、ラッチ及びレジスタ内に格納される信号は、それらが経路内の下流側の次のＣＬＢの関数発生器３４へ到達する前に、スイッチ３９ａ及び３９ｂへ到達し次いでルーチングマトリクス１８におけるゲートをパスするので、再コンフィギュレーション期間中に、関数発生器３４がスイッチするよりも速くスイッチ３９ａ及び３９ｂ及びルーチングマトリクス１８におけるパストランジスタがスイッチすること（データ信号の到達前に）がより一層重要である。従って、スイッチ２８−１乃至２８−ｎの中でスイッチ３９ａ，３９ｂを制御するスイッチ及びルーチングマトリクス１８のパストランジスタからの出力信号の速度を最大とすべきである。この目的のために、スイッチ２８−１乃至２８−ｎからの最もクリチカルな出力信号をメタルライン上に配置すべきである。スイッチ２８−１乃至２８−ｎの寸法を制御するなどの付加的な手段を採用して最もクリチカルな速度を最大とさせると共に速度がそれほどクリチカルでない場合に面積を最小とさせることが可能である。勿論、例えば、図６Ｂなどのその他の実施例においては、速度の臨界性は異なっている。
【００６０】
従って、本発明は、性能に影響を与えることなしに、同一の処理技術の従来の区画部分よりも、面積当たりに実現可能な論理関数の数を著しく増加させている。
【００６１】
本発明を幾つかの好適実施例を参照して説明したが、当業者にとって明らかな如く、種々の変形を行うことが可能であることは勿論である。例えば、本発明のＣＬＢ１４は多様なコンフィギュレーション即ち形態で従来のＣＬＢと共にＦＰＧＡ上において使用することが可能である。従って、この様なＦＰＧＡは、パイプラインモードで動作可能な区画部分と共に、レジスタ型モード及び非同期モード（従来技術）で動作可能な幾つかの区画部分を有するものである。別の実施例では、本発明のプログラマブル論理アレイは単一のシリコンチップに制限されることが必要なものではなく、複数個のチップで実現することも可能である。更に別の実施例としては、本発明をＦＰＧＡアーキテクチャに関連して説明したが、フィールドプログラマブルであり且つ再度コンフィギュレーションを行うことの可能なその他のアーキテクチャに使用することも可能である。本発明は論理ブロックを有することはなく単にスイッチング・ルーチングマトリクスを有する装置において使用することが可能である。更に、本発明は例えば、単一のプログラマブル論理装置のみを有するＰＬＡにおいて使用することも可能である。
【００６２】
上述した詳細な説明ではＳＲＡＭコンフィギュレーションメモリセルを使用してコンフィギュレーションを行った実施例に焦点を合わせている。本発明においてはコンフィギュレーションメモリを変化させることなしにコンフィギュレーションの変化を達成することが可能であるので、コンフィギュレーションメモリを例えばヒューズ又はアンチヒューズなどの一度だけプログラム可能な技術、又は例えばＥＰＲＯＭやＥＥＰＲＯＭなどの再度プログラムを行うことが一層困難な技術を使用してコンフィギュレーションメモリを形成することが可能である。
【００６３】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【図１】本発明を使用可能なＦＰＧＡの一実施例を示したブロック図。
【図２】従来のＦＰＧＡのコンフィギュレーションメモリセルからなるアレイの一つの列を示したブロック図。
【図３】本発明に基づく第一アレイのコンフィギュレーションメモリセルの一つの列、第二アレイのコンフィギュレーションメモリセルの一つの列、複数個のメモリセルからなる第三の列、及び第一列と第二列とを交互に結合させるスイッチとを有する構造を示したブロック図。
【図４】本発明のコンフィギュレーションメモリの別の実施例を示したブロック図。
【図５】ＦＰＧＡの従来のコンフィギャラブル論理ブロックを示したブロック図。
【図６Ａ】本発明の一実施例に基づくコンフィギャラブル論理ブロックを示したブロック図。
【図６Ｂ】本発明の別の実施例に基づくコンフィギャラブル論理ブロックを示したブロック図。
【図６Ｃ】本発明を使用することの可能なコンフィギャラブルルーチングマトリクスを示した概略図。
【図７】動作期間中におけるＡ／Ｂ制御信号、ラッチング信号、レジスタクロック動作信号を示したタイミング線図。
【図８】レジスタクロック動作信号、第一変形Ａ／Ｂ制御信号Ａ／Ｂ−１、第二変形Ａ／Ｂ制御信号Ａ／Ｂ−２を示したタイミング線図。
【図９】ＦＰＧＡによって実現することの可能な例示的な論理回路を示した回路図。
【図１０】従来のＦＰＧＡを使用した図９の例示的な論理回路の実現例を示したブロック図。
【図１１】本発明のＦＰＧＡを使用した図９の例示的な論理回路の実現例を示したブロック図。
【符号の説明】
１０  ＦＰＧＡ
１２  区画部分
１４  コンフィギャラブル論理ブロック（ＣＬＢ）
１６  コンフィギュレーションメモリ
１８  コンフィギャラブルルーチングマトリクス
２１，２３  メモリセル
２４  アドレスライン
２６  列
２８  スイッチ
【図１】
0003626239.tif 000002
【図２】
0003626239.tif 000003
【図３】
0003626239.tif 000004
【図４】
0003626239.tif 000005
【図５】
0003626239.tif 000006
【図６Ａ】
0003626239.tif 000007
【図６Ｂ】
0003626239.tif 000008
【図６Ｃ】
0003626239.tif 000009
【図７】
0003626239.tif 000010
【図８】
0003626239.tif 000011
【図９】
0003626239.tif 000012
【図１０】
0003626239.tif 000013
【図１１】
0003626239.tif 000014