(57)【特許請求の範囲】
【請求項１】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）であって、
１列以上の多機能タイルを含み、各々の多機能タイルは、
多機能タイルの他のものへのプログラム可能な相互接続をもたらすためのプログラム可能スイッチを含み、前記プログラム可能スイッチは入力マルチプレクサ（ＩＭＵＸ）および出力マルチプレクサ（ＯＭＵＸ）を含み、前記多機能タイルはさらに、
前記ＩＭＵＸに結合された入力データバスと、
前記ＯＭＵＸに結合された出力データバスと、
前記入力データバスに結合された入力ポート、および前記出力データバスに結合された出力ポートを有する、メモリ（ＲＡＭ）と、
前記入力データバスに結合された入力ポート、および前記出力データバスに結合された出力ポートを有する、乗算器とを含み、ＲＡＭおよび前記乗算器は前記多機能タイルのルーティングリソースを共有する、ＦＰＧＡ。
【請求項２】
前記入力データバスは、第１のデータ信号を運ぶための第１のバスと、第２のデータ信号を運ぶための第２のバスとを含み、
ＲＡＭは、前記第１のバスに結合された第１の入力ポートと、前記第２のバスに結合された第２の入力ポートとを含み、
前記乗算器は、前記第１のバスに結合された第１のオペランドポートと、前記第２のバスに結合された第２のオペランドポートとを含む、請求項１に記載のＦＰＧＡ。
【請求項３】
前記ＲＡＭが第１の構成にある、前記ＲＡＭへの書込動作中に、前記ＲＡＭは、前記第１のデータ信号および前記第２のデータ信号からの或る数の最下位ビット（ＬＳＢ）を、前記ＲＡＭ内の選択されたアドレスに書込み、同時に前記乗算器は、前記第１のデータ信号からの或る数の最上位ビット（ＭＳＢ）を前記第２のデータ信号からの或る数のＭＳＢで乗じて積を生成する、請求項２に記載のＦＰＧＡ。
【請求項４】
前記ＲＡＭが第２の構成態様にある、前記ＲＡＭへの書込動作中に、前記ＲＡＭは、前記第１および第２のデータ信号を前記ＲＡＭ内の選択されたアドレスに書込む、請求項３に記載のＦＰＧＡ。
【請求項５】
前記出力データバスは、前記ＯＭＵＸと、前記ＲＡＭの第１および第２の出力ポートとの間にそれぞれ結合された、第１の出力バスおよび第２の出力バスを含む、請求項１に記載のＦＰＧＡ。
【請求項６】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の多機能ブロック内で乗算器とメモリとの間でルーティングリソースを共有する方法であって、
第１および第２のデータ信号を前記多機能ブロックに与えるステップと、
前記第１のデータ信号からの或る数のビットを第１のデータワードとして前記メモリに与えるステップと、
前記第１のデータ信号からの或る数のビットを第１のオペランドとして前記乗算器に与えるステップと、
前記第２のデータ信号からの或る数のビットを第２のデータワードとして前記メモリに与えるステップと、
前記第２のデータ信号からの或る数のビットを第２のオペランドとして前記乗算器に与えるステップと、
前記第１および第２のデータワードを前記メモリに書込むステップと、
同時に前記乗算器にある前記第１のオペランドと第２のオペランドとを乗じることで積を生成するステップとを含む、方法。
【請求項７】
さらに、
第１および第２の出力ワードを、前記メモリのそれぞれ第１および第２の出力ポートから読出すステップと、
前記積の最上位桁を前記第１の出力ワードと選択的に連結し、かつ前記積の最下位桁を前記第２の出力ワードと連結することによって、前記メモリからのデータ、および前記乗算器からの積情報を、同時に読出すことを容易にするステップとを含む、請求項６に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は一般的にプログラム可能ロジックデバイスに関し、特定的には、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）における乗算機能に関する。
【０００２】
【発明の背景】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、１つ以上の選択された機能を行なうように一般使用者がプログラムすることができる汎用デバイスである。ＦＰＧＡは典型的に、個々に構成可能なロジックブロック（ＣＬＢ）のアレイを含み、これらブロックの各々は、プログラム可能なルーティング構造を介し他のＣＬＢおよび入出力（Ｉ／Ｏ）ピンとプログラム可能に相互接続されて、選択された機能を提供する。タバナ（Tavana）他に対し１９９９年３月１６日に発行された米国特許第５，８８３，５２５号は、Ｉ／Ｏタイルに囲まれた複数の繰返され得るコアタイルを有するＦＰＧＡアーキテクチャを開示している。コアタイルは各々がＣＬＢおよびプログラム可能ルーティングマトリックスを有する。タイルは、プログラム可能ルーティングマトリックスを介し互いにプログラム可能に相互接続される。ヤング（Young）に対し１９９９年８月３日に発行された米国特許第５，９３３，０２３号は、ランダムアクセスメモリ（ＲＡＭ）のブロックの列をコアタイルの列の間に置くことでＦＰＧＡにＲＡＭ機能を与えるＦＰＧＡアーキテクチャを開示している。ＲＡＭブロックは各々がコアタイルにある種類のプログラム可能ルーティングマトリックスを含み、ＣＬＢは汎用の配線構造の代わりに専用の接続線を用いてこれにアクセスできる。ヤング他に対する米国特許第５，９１４，６１６号には、入出力マルチプレクサを通じてロジックブロックがスイッチマトリックスに接続されるＦＰＧＡアーキテクチャが記載されている。この他の好適なＦＰＧＡアーキテクチャが、カリフォルニア州、９５１２４  サン・ノゼ、ロジック・ドライブ、２１００の、ザイリンクス・インコーポレイテッド（Xilinx, Inc.）から入手可能である「プログラム可能ロジックデータブック（The Programmable Logic Data Book）」と題された、ザイリンクス１９９９年度データブックに記載されている。
【０００３】
当該技術で公知のように、ＦＰＧＡの各ＣＬＢは、加算などのさまざまな論理機能を実行するように個々にプログラムすることができる。簡単な乗算器からより複雑なマイクロプロセッサにわたるより複雑な論理機能を実現するために、多くのＣＬＢを合わせて構成することもできる。たとえば、テリケパリ（Telikepalli）に対し１９９８年５月１９日に発行された米国特許第５，７５４，３５９号は、ＦＰＧＡアーキテクチャで或る数のＣＬＢを用いて乗算器回路を実現することを教示している。しかしながらＦＰＧＡアーキテクチャのＣＬＢを用いて乗算器を実現するにはかなりの数のＣＬＢが必要となるであろう。たとえば、ザイリンクス・インコーポレイテッドから入手可能であるＦＰＧＡのバーテックス（Virtex）ファミリーでは、１６×１６乗算器を実現するには少なくとも６０個のＣＬＢが必要となる。この手法で乗算器を実現すると、貴重なＣＬＢリソースが消費されるばかりでなく、貴重な汎用配線リソースもまた消費され、このためＦＰＧＡデバイスの性能が遅くなるおそれがある。
【０００４】
１つの解決法は、ＦＰＧＡ内に専用の乗算器を設けて貴重なＣＬＢリソースを他の機能のために解放することである。しかしながら、乗算器にはかなりの量の入出力ルーティングリソースが必要であるため、ＦＰＧＡのシリコン面積が望ましくないほどに増加する。ＦＰＧＡでは乗算機能を実行することがしばしば必要となるため、貴重なＣＬＢリソースを消費すること、およびシリコン面積を大幅に増加させることなく、ＦＰＧＡで乗算器を実現することが望ましいであろう。
【０００５】
【発明の概要】
この発明は、可変幅を有するプログラム可能な構造とルーティングリソースを共有する交替構造を提供する。プログラム可能構造が部分的にのみ用いられているときには、プログラム可能構造の残りの部分のためのルーティングリソースは交替構造により用いられ得るが、それでも交替構造はルーティングリソースのための追加のシリコン面積をほとんど必要としない。この発明の一実施例に従うと、１列以上の多機能タイルがＦＰＧＡアレイのＣＬＢタイル間に位置づけられる。各々の多機能タイルは、Ｉ／Ｏルーティングリソースを共有する多数の機能要素を含む。一実施例で多機能タイルは、多機能タイルのＩ／Ｏリソースを共有する構成可能なデュアルポートＲＡＭおよび乗算器を含む。ＲＡＭはそれぞれ第１および第２の入力データバスに結合された第１および第２の入力ポートを含み、さらにそれぞれ第１および第２の出力データバスに結合された第１および第２の出力ポートを含む。乗算器は第１および第２のオペランドポートを含み、これらオペランドポートは第１および第２の入力データバスからオペランドを受取るように結合され、乗算器はこれに応答して積をもたらす。一実施例で積の最上位ビット（ＭＳＢ）は第１の出力データバスに選択的に与えられ、積の最下位ビット（ＬＳＢ）は第２の出力データバスに選択的に与えられる。
【０００６】
この乗算器の実施例について、乗算器を用いる構成態様では、乗算器はＲＡＭへの読み書きと同時にアクセスされ得るか、またはＲＡＭへの読み書きなしにアクセスされ得る。ＲＡＭへの書込動作中、ＲＡＭは第１および第２の入力データバスから或る数のＬＳＢを入力データとして受取り、乗算器は第１および第２の入力データバスから或る数のＭＳＢをオペランドとして受取る。ＲＡＭからの読出動作中、ＲＡＭからの第１のデータワードと乗算器からの積のＭＳＢとは連結されて第１の出力バス上に与えられ、ＲＡＭからの第２のデータワードと乗算器からの積のＬＳＢとは連結されて第２の出力データバス上に与えられる。こうしてＲＡＭアクセスと乗算演算とを同時に実行できる。
【０００７】
【詳細な説明】
図面では、同様の構成要素に同様の名称を付す。
【０００８】
明瞭にするために、この発明の実施例を専らＦＰＧＡとの関連で以下に説明するが、この発明の実施例は、使用者が必要とするであろうさまざまなＦＰＧＡアーキテクチャ、サイズ、構成、および環境で実現され得ることが理解されるべきである。したがってこの発明は、ここに記載の特定の例へと限定されるものと解釈すべきでなく、前掲の特許請求の範囲で定められたすべての実施例をその範囲内に含む。
【０００９】
図１は、エッジタイル１０３−１０６およびコーナータイル１１３−１１６に囲まれた同一のＣＬＢタイル１０１のアレイを有するＦＰＧＡ１００を示す。多機能タイル１０２の列が２列のＣＬＢタイル１０１間に位置づけられる。エッジタイル１０３−１０６およびコーナータイル１１３−１１６は、ＦＰＧＡ１００のタイル１０１−１０２と、入出力（Ｉ／Ｏ）ピン（明瞭にするため図示せず）との間にプログラム可能な相互接続をもたらす。ＦＰＧＡ１００は任意の数のＣＬＢタイル列を含むことができ、各タイル列は任意の数のＣＬＢタイル１０１を含むことができる。図１には多機能タイル１０２のうち１列のみを示すが、実施例によっては２列以上の多機能タイルがあることもある。図２も参照して、各ＣＬＢタイル１０１はスイッチマトリックス２０１およびＣＬＢ２０２を含む。ＣＬＢ２０２は１９９９年度ザイリンクスデータブックに記載のものなど周知の個々にプログラム可能なＣＬＢである。各スイッチマトリックス２０１は、タバナ他による米国特許第５，８８３，５２５号に開示の種類のプログラム可能ルーティングマトリックスであっても、またはヤング他による米国特許第５，９１４，６１６号に開示のものであってもよく、周知の手法で信号線２０５を介し他のタイル１０１および１０２へのプログラム可能な相互接続をもたらす。ＣＬＢタイル１０１にあるスイッチマトリックス２０１は、信号バス２０４を通じ対応するＣＬＢ２０２へのプログラム可能な相互接続をもたらすためのインターフェイス２０３を含む。実施例によっては、ＣＬＢ２０２は、たとえば米国特許第５，８８３，５２５号に記載のように、隣接するタイルにあるＣＬＢ２０２と直接接続されていてもよい。明瞭にするために、ＦＰＧＡ１００の他の周知の要素を図１から省く。
【００１０】
図２には、各々の多機能タイル１０２はＦＰＧＡ１００の４行のタイルにわたり延びるものとして示され、４個のスイッチマトリックス２０６および多機能ブロック２０７を含む。４個のスイッチマトリックス２０６は信号バス２０５を通じて、互いとの、および対応する行のＣＬＢタイル１０１との、プログラム可能な相互接続をもたらす。多機能タイル１０２の各スイッチマトリックス２０６は、信号バス２０９を通じ多機能ブロック２０７へのプログラム可能な相互接続をもたらすためのインターフェイス２０８を含む。こうして各々の多機能タイル１０２について多機能ブロック２０７は、４つの群の信号を４個の対応するスイッチマトリックス２０６から受取る。他の実施例では、多機能ブロック２０７は任意の数のタイル行にわたって延びることができ、こうして隣接するＣＬＢタイル１０１とのインターフェイスのために任意の数のスイッチマトリックス２０６を含むことができる。後に説明するように多機能ブロック２０７は、対応するスイッチマトリックス２０６のルーティングリソースを共有する多数の回路または論理素子を含むことがあり、こうしてルーティングリソースを節約しつつ追加のＦＰＧＡ機能を可能にする。
【００１１】
図３は図２のタイル１０２の一実施例であるタイル３００を示す。タイル３００は、スイッチマトリックス３０１、可変幅構造３０２、および交替構造３０３を含む。スイッチマトリックス３０１は図２のタイル１０２内に示される４個のスイッチマトリックス２０６を含むことができ、図３では、間に信号バス３０６が結合された入力マルチプレクサ（ＩＭＵＸ）３０４および出力マルチプレクサ（ＯＭＵＸ）３０５を含むものとして示される。入力データバスＤＢＵＳ＿ＩＮがＩＭＵＸ３０４を可変幅構造３０２および交替構造３０３に接続する。出力データバスＤＢＵＳ＿ＯＵＴは、ＯＭＵＸ３０５を可変幅構造３０２および交替構造３０３に接続する。可変幅構造３０２は、ＲＡＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、およびレジスタなど、どの好適な装置であってもよい。交替構造３０３は当該技術で公知のどの好適な専用回路であってもよい。一実施例では、交替構造３０３は周知の符号付き乗算器である。他の実施例では、交替構造３０３は符号なし乗算器、除算器、加算器、コード変換器、またはＦＰＧＡアーキテクチャ設計者により選択されるその他の構造であることもある。
【００１２】
動作中、データはプログラム可能幅機能のために可変幅構造３０２へ、専用の機能のために交替構造３０３へ、またはその両方へＩＭＵＸ３０４を用いて選択的に経路付けられ得る。同様にデータは、マルチプレクサ３１１が選択するとおりに、読出動作のために可変幅構造３０２から、または交替構造３０３からＯＭＵＸ３０５を用いて選択的に読出され得る。交替構造３０３は可変幅構造３０２とルーティングリソースＤＢＵＳ＿ＩＮ、ＤＢＵＳ＿ＯＵＴおよびスイッチマトリックス３０１を共有するため、ＣＬＢリソースを用いずに専用の機能を有利に提供する交替構造３０３を追加してもそれ自身のＩ／Ｏ構造が必要とはならず、こうして貴重なシリコン面積が節約される。交替構造３０３のサイズは典型的にスイッチ３０１のサイズよりも小さく、こうしてシリコン面積の増加が最小限になる。
【００１３】
図３の例示は、交替構造３０３が入力値ＩＮ１およびＩＮ２を入力データバスＤＢＵＳ＿ＩＮから受取ることを示しているが、これは多くの所望の交替機能が２個の入力値から関数を算出することによる。しかしながらこの発明では、交替構造３０３が２個の入力値を受取る必要はない。たとえば交替構造３０３が交替クロックにより駆動されるレジスタであれば、入力値は図３に示すように分割されないであろう。機能によっては３個以上の入力値が必要になることもある。
【００１４】
図４は、この発明の一実施例に従う例示の多機能ブロック４００を示す。多機能ブロック４００は、スイッチマトリックス３０１、構成可能デュアルポートＲＡＭ４０１、および１８×１８符号付き乗算器４０２を含む。
【００１５】
ＩＭＵＸ３０４は第１のアドレスＡＤＤＲ＿Ａおよびこれに関連する制御信号を、バス４０３を通じてＲＡＭ４０１の第１のアドレス／制御ポートに与え、対応する第１の３６ビットデータ信号Ａ［３５：０］を、３６ビットバス４０５（ａ）を通じＲＡＭ４０１の第１のデータ入力ポートに与える。ＩＭＵＸ３０４は、第２のアドレスＡＤＤＲ＿Ｂおよびこれに関連する制御信号を、バス４０４を通じＲＡＭ４０１の第２のアドレス／制御ポートに与え、対応する３６ビットデータ信号Ｂ［３５：０］を、３６ビットバス４０６（ａ）を通じＲＡＭ４０１の第２のデータ入力ポートに与える。データ信号Ａ、Ａ［３５：１８］の１８個のＭＳＢが１８ビットバス４０５（ｂ）を通じ乗算器４０２の第１のオペランドポートに与えられ、データ信号Ｂ、Ｂ［３５：１８］の１８個のＭＳＢが１８ビットバス４０６（ｂ）を通じて乗算器４０２の第２のオペランドポートに与えられる。
【００１６】
ＯＭＵＸ３０５は、２本の３６ビットデータ出力バス４０７（ａ）および４０８（ａ）に結合される。ＲＡＭ４０１の第１のデータ出力ポートは、３６ビット出力データワードＣ［３５：０］を３６ビットバス４０７（ｂ）に与えるが、これはマルチプレクサ４０９を通じてバス４０７（ａ）に結合される。ＲＡＭ４０１の第２のデータ出力ポートは３６ビット出力データワードＤ［３５：０］を３６ビットバス４０８（ｂ）に与えるが、これはマルチプレクサ４１０を通じバス４０８（ａ）に結合される。乗算器４０２はその積Ｐ［１７：０］の１８個のＬＳＢを１８ビットバス４０７（ｃ）上のマルチプレクサ４０９に与え、さらに積Ｐ［３５：１８］の１８個のＭＳＢを１８ビットバス４０８（ｃ）上のマルチプレクサ４１０に与える。バス４０７および４０８は図３のＤＢＵＳ＿ＯＵＴに対応する。
【００１７】
マルチプレクサ４０９は、ＲＡＭ４０１からの出力データ信号Ｃの１８個のＬＳＢを、信号Ｃの１８個のＭＳＢ、または乗算器４０２からの１８個のＬＳＢ  Ｐ［１７：０］と選択的に連結して、３６ビット信号をバス４０７（ａ）を通じＯＭＵＸ３０５に与える（図５を参照、後に説明する）。同様にマルチプレクサ４１０は、ＲＡＭ４０１からの出力データ信号Ｄの１８個のＬＳＢを、信号Ｄの１８個のＭＳＢ、または乗算器４０２からの１８個のＭＳＢ  Ｐ［３５：１８］と選択的に連結して、３６ビット信号をバス４０８（ａ）を通じＯＭＵＸ３０５に与える。後に説明するように、マルチプレクサ４０９および４１０は、ＲＡＭ４０１およびマルチプレクサ４０２がＯＭＵＸ３０５の出力リソースを共有することを可能にする。
【００１８】
図５は、マルチプレクサ４０９および４１０の一実施例であるバスロジック５００を示す。明瞭にするために、マルチプレクサ４０９を参照してバスロジック５００を説明するが、これはマルチプレクサ４１０にも等しく適用可能である。バスロジック５００はマルチプレクサ５０１を含み、これは第１の１８ビット入力ポート「０」、第２の１８ビット入力ポート「１」、１８ビット出力ポート、およびモード信号Ｍを受信するための接続端子を有する。モード信号Ｍは、構成メモリセルに記憶される静的ビットであっても、または他のタイル１０１および／または１０２が与える活性信号であってもよい。バス４０７（ｂ）を通じＲＡＭ４０１から与えられる３６ビット信号Ｃ［３５：０］はノード５０２で分割される。ＭＳＢ  Ｃ［３５：１８］は１８ビットバス５０３を通じてＭＵＸ５０１の「０」入力ポートに与えられ、ＬＳＢ  Ｃ［１７：０］は１８ビットバス５０４を通じてノード５０５に与えられる。ＬＳＢ  Ｐ［１７：０］はバス４０７（ｃ）を通じてＭＵＸ５０１の「１」入力ポートに与えられる。ＭＵＸ５０１は、モード信号Ｍに応答して１８ビットバス５０６上にＣ［３５：０］またはＰ［１７：０］を与え、これはノード５０５でＣ［１７：０］と連結され、次に、結果として生じた３６ビット信号がバス４０７（ａ）を通じＯＭＵＸ３０５に与えられる。
【００１９】
ＲＡＭ４０１はいくつかの異なった態様で動作するよう構成され得るが、これらの態様はたとえば５１２×３６アレイまたは１０２８×１８アレイを含み、その他の望ましい構成もまた用いられ得る。第１の構成態様では、ＲＡＭ４０１は１０２８×１８アレイとして動作するよう構成され、後に説明するようにＲＡＭ４０１での同時読み書き動作、および乗算器４０２での乗算機能を可能にする。実施例によっては、ＲＡＭ４０１の構成態様は使用者により選択可能である。
【００２０】
第１の態様では、ＲＡＭ４０１は３６ビット入力バス４０５（ａ）および４０６（ａ）のうち１８ビットのみを用いる。ここではデータ信号Ａ［３５：０］は第１の１８ビットオペランドＡ［３５：１８］および第１の１８ビットデータワードＡ［１７：０］を含み、データ信号Ｂ［３５：０］は第２の１８ビットオペランドＢ［３５：１８］および第２の１８ビットデータワードＢ［１７：０］を含み得る。たとえば、ＲＡＭ４０１への書込動作中、Ａ［３５：０］およびＢ［３５：０］がそれぞれバス４０５（ａ）および４０６（ａ）に与えられ、アドレスＡＤＤＲ＿ＡおよびＡＤＤＲ＿Ｂがそれぞれバス４０３および４０４に与えられる。Ａ［１７：０］はＲＡＭ４０１の第１のデータポート内にラッチされ、それからＡＤＤＲ＿Ａにより選択された位置に書込まれ、Ｂ［１７：０］はＲＡＭ４０１の第２のデータポート内にラッチされ、それからＡＤＤＲ＿Ｂにより選択された位置に書込まれる。このＲＡＭ書込動作は独立して用いられることがあり、これと同時にＡ［３５：１８］およびＢ［３５：１８］はそれぞれバス４０５（ｂ）および４０６（ｂ）を通じ乗算器４０２にオペランドとして与えられ、掛け合わせられて積Ｐ［３５：０］を生成する。ここで、ＲＡＭ４０１と乗算器４０２との間の入力リソースの共有により、これら実施例は同時にＲＡＭ４０１へデータを書込みかつ乗算器４０２でオペランドを乗じることを有利に可能にする。
【００２１】
マルチプレクサ４０９および４１０は、乗算器４０２がその積Ｐ［３５：０］をＯＭＵＸ３０５に与えるのと同時にＲＡＭ４０１が２個の１８ビットデータワードをＯＭＵＸ３０５に読出すことを可能にする。たとえば、第１の構成態様での読出動作中、ＲＡＭ４０１は、ＡＤＤＲ＿Ａに応答してバス４０７（ｂ）を通じ１８ビットデータワードＣ［１７：０］をマルチプレクサ４０９に読出し、同時にＡＤＤＲ＿Ｂに応答してバス４０８（ｂ）を通じ１８ビットデータワードＤ［１７：０］をバスロジック４１０に読出すことができる。同時に乗算器４０２はバス４０７（ｃ）を通じてＰ［１７：０］をバスロジック４０９に与え、バス４０８（ｃ）を通じてＰ［３５：１８］をバスロジック４１０に与える。ここでモード信号Ｍが「１」に等しくセットされ、バスロジック４０９はＰ［１７：０］とＣ［１７：０］とを連結して、結果として生じた信号をバス４０７（ａ）を通じてＯＭＵＸ３０５に与える。同様にマルチプレクサ４１０はＰ［３５：１８］とＤ［１７：０］とを連結して、結果として生じた信号をバス４０７（ａ）を通じＯＭＵＸ３０５に与える。
【００２２】
ＯＭＵＸ３０５は、バス４０７（ａ）および４０８（ａ）からの信号の１８個のＭＳＢを、それぞれＣ［１７：０］およびＤ［１７：０］として、ＦＰＧＡアーキテクチャの他のタイル１０１および／または１０２に経路付けるようプログラムされ得る。同時にＯＭＵＸ３０５はまた、バス４０７（ａ）および４０８（ａ）からの信号の１８個のＬＳＢを、それぞれＰ［１７：０］およびＰ［３５：１８］として、他の異なったタイル１０１および／または１０２へ選択的に経路付けることができる。こうして、ＲＡＭ４０１からのデータワードと、乗算器４０２からの積情報とを、多機能ブロック４００から同時に読出して、スイッチ３０１を介し他のタイル１０１および／または１０２に与えることができる。多機能ブロック４００の乗算演算と並行して読み書き動作を実行できるため、ＲＡＭ４０１でのアクセス待ち時間を乗算器４０２でのゲート遅延と有利に重ねることができ、こうして性能が改良される。
【００２３】
さらにＯＭＵＸ３０５は、データ出力端子４０７ｂおよび／または４０８ｂからのＲＡＭ出力信号Ｃ［１７：０］および／またはＤ［１７：０］を、バス３０６を通じて乗算器４０２に経路付けることができ、積Ｐ［１７：０］およびＰ［３５：１８］がここで生成される。こうして、多機能ブロック４００の外部のルーティングリソースを消費することなく、ＲＡＭ４０１に記憶された値を用いて積を生成できる。これに代えて、後のＲＡＭ４０１への書込動作のためにＯＭＵＸ３０５は、Ｐ［１７：０］およびＰ［３５：１８］を、それぞれのバス４０７（ａ）および４０８（ａ）からバス３０６およびＩＭＵＸ３０４を通じ直接ＲＡＭ４０１に経路付けることもできる。こうして、乗算器４０２により生成された積Ｐ［３５：０］は、多機能ブロック４００から去ることなく、かつ多機能ブロック４００の外部の貴重なルーティングリソースを消費することなく直接ＲＡＭ４０１に記憶され得る。
【００２４】
第２の構成態様では、ＲＡＭ４０１は５１２×３６アレイとして動作するよう構成され、入力バス４０５（ａ）および４０６（ｂ）の全幅を用いる。第２の態様での書込動作中、２個の３６ビットデータワードＡ［３５：０］およびＢ［３５：０］は、対応するバス４０５（ａ）および４０５（ｂ）を通じてＲＡＭ４０１に与えられ、この後にそれぞれＡＤＤＲ＿ＡおよびＡＤＤＲ＿Ｂにより選択された位置に書込まれる。ここでやはりＭＳＢ信号Ａ［３５：１８］およびＢ［３５：１８］が乗算器４０２に与えられ、これに応答して乗算器はＰ［３５：０］を生成する。読出動作中、ＲＡＭ４０１はＡＤＤＲ＿Ａに応答して第１の３６ビットデータワードＣ［３５：０］をバスロジック４０９に与え、ＡＤＤＲ＿Ｂに応答して第２の３６ビットデータワードＤ［３５：０］をバスロジック４１０に与える。モード信号Ｍが「０」にセットされると、バスロジック４０９および４１０はそれぞれＣ［３５：０］およびＤ［３５：０］をＯＭＵＸ３０５に経路付ける。このように、図５も参照すると、Ｍ＝０に応答してＭＵＸ５０１はバス５０６を通じてＣ［３５：１８］をノード５０５に経路付け、Ｃ［３５：１８］とＣ［１７：０］とがノード５０５で連結され、こうしてＣ［３５：０］がバス４０７（ａ）を通じてＯＭＵＸ３０５に与えられる。マルチプレクサ４１０も同様の手法でＲＡＭ４０１からバス４０８（ａ）を通じＯＭＵＸ３０５へＤ［３５：０］を経路付ける。
【００２５】
上述のように、ＲＡＭ４０１が第２の構成態様で動作する場合、乗算器４０２はＡ［３５：１８］とＢ［３５：１８］とを乗じてＰ［３５：０］を生成するが、ＲＡＭ４０１がデータをＯＭＵＸ３０５に出力している間はＰ［３５：０］をＯＭＵＸ３０５に与えることはできない。
【００２６】
他の実施例でＯＭＵＸ３０５は、積情報Ｐ［３５：０］を直接乗算器４０２から受取るための２個の追加の１８ビットポートを含むように拡張されることもある。たとえば図６は、図４の多機能ブロック４００の変形例である多機能ブロック６００を示し、ここでバスロジック４０９および４１０の機能は、拡張されたＯＭＵＸ６０１内に実現される。図６に示すように、３６ビットデータワードＣ［３５：０］およびＤ［３５：０］は、それぞれ３６ビットバス６０２および６０３を通じて、ＲＡＭ４０１から直接ＯＭＵＸ３０５に与えられ、一方でＰ［３５：１８］およびＰ［１７：０］は、それぞれ１８ビットバス６０４および６０５を通じ、乗算器４０２から直接ＯＭＵＸ６０１に与えられる。この実施例でＯＭＵＸ６０１は、バス６０２−６０５上のどの信号を、他のタイル１０１および／または１０２へ、またはバス３０６およびＩＭＵＸ３０４を通じＲＡＭ４０１へ、経路付けるべきかを判断する。
【００２７】
図４および図６に示す実施例のいずれにおいても、１８×１８符号付き乗算器４０２を１７×１７符号なし乗算の実行に用いることができる。周知のように、符号付き乗算は最上位ビットを用いて符号を示すが、符号なし乗算は符号を示すのにビットを用いない。乗算器４０２は符号付き乗算用に設計されているため、乗算器４０２は最上位ビットを符号ビットとして扱う。このビットでの０は正の数を示し、１は負の数を示す。乗算器４０２を１７×１７符号なし乗算に用いるためには、最上位（１８番目の）ビットを０で埋める必要があり、これはこのようなＦＰＧＡにおいて、論理０を、スイッチマトリックス３０１を通じ、マルチプレクサ３０４により供給される最上位ビット線へ経路付けることによって有利に実行される。論理０を経路付けて乗算器内の使用されていない全てのビットを埋めることによって、より小さい符号なしの数の乗算も可能となる。さらに、符号ビットの複製を使用されていない最上位ビットに経路付けることにより、より小さい符号付きの数の乗算も可能となる。
【００２８】
他の実施例では、乗算器４０２は或る他の回路、たとえば論理演算装置（ＡＬＵ）であってもよく、これがＩ／ＯリソースをＲＡＭ４０１と共有して上述の利点を実現する。さらに他の実施例では、ＲＡＭ４０１は或る他の回路、たとえば乗算器、ＡＬＵ、またはその他の論理回路であってもよい。
【図面の簡単な説明】
【図１】  この発明に従う多機能タイルを含むＦＰＧＡアーキテクチャを示す図である。
【図２】  この発明の一実施例で複数のＣＬＢタイル列間に位置づけられた多機能タイルの列を示す図である。
【図３】  この発明に従うスイッチルーティングマトリックス、可変幅構造および交替構造を含む、多機能タイルを示す図である。
【図４】  図３の多機能タイルの一実施例を示す図である。
【図５】  図４の多機能タイルの一実施例で用いられるバス論理の回路図である。
【図６】  図３の多機能タイルのさらなる実施例を示す図である。
【図１】
0004593866.tif 000002
【図２】
0004593866.tif 000003
【図３】
0004593866.tif 000004
【図４】
0004593866.tif 000005
【図５】
0004593866.tif 000006
【図６】
0004593866.tif 000007