(57)【特許請求の範囲】
【請求項１】
ＲＡＭを備えた、
ＲＡＭ機能のための専用のものであり、かつ列に沿って配置された複数のＲＡＭブロック（５３１−５から５３１−８）を含み、前記ＲＡＭブロックはアドレスポート（ＡＤＢ１１−ＡＤＢ０）およびデータポート（ＤＩＢ７−ＤＩＢ０）を有し、さらに
前記複数のＲＡＭブロックの各々に対応付けて配置された、複数の論理ブロック（２５−３３から２５−３６）と、
前記複数の論理ブロックに対応付けて、行（Ｌ０からＬ３、ＨＬ０からＨＬ３）に沿って配置された複数の導電性ラインを含む相互接続構造と、
前記論理ブロックを対応する前記相互接続構造に接続するための手段（ＤＡＴＡ  ＯＵＴ）と、
アドレス信号のみを伝えるための専用の１組の垂直ライン（ＡＤＤＲ）とを含み、前記１組の垂直ラインの各ラインは、前記複数のＲＡＭブロックに対応する列にわたって延びており、さらに
データ信号のみを伝えるための専用の垂直データライン（ＤＡＴＡ  ＩＮ）のグループを含み、前記各グループは、前記複数のＲＡＭブロックに対応する列にわたって延びており、さらに
前記相互接続構造のうち前記論理ブロックからアドレス信号が与えられる導電性ラインと前記垂直ラインとをプログラム可能に接続するための手段（ＰＩＰ）と、
前記垂直ラインと前記アドレスポートとをプログラム可能に接続するための手段（ＰＩＰ）と、
前記データポートと前記垂直データラインとをプログラム可能に接続するための手段（ＰＩＰ）と、
前記垂直データラインと前記相互接続構造のうち前記論理ブロックのデータ入出力に用いられる導電性ラインとをプログラム可能に接続するための手段（ＰＩＰ）と、
前記垂直ラインを前記複数のＲＡＭブロックの各々に対応する区間に分割するための手段（ＡＣ−２３）と、
前記垂直データラインを前記複数のＲＡＭブロックの各々に対応する区間に分割するための手段（ＤＩＣ３１）とを含み、
前記分割するための手段は、前記論理ブロックから対応する行に配置されるＲＡＭブロックへアクセスされる際に、前記垂直ラインおよび前記垂直データラインを対応する区間に分割し、前記論理ブロックから対応する行に配置されるＲＡＭブロックと垂直方向に隣接するＲＡＭブロックへアクセスされる際に、前記垂直ラインおよび前記垂直データラインの隣接する区間を相互接続状態にする、ＲＡＭを備えたＦＰＧＡ。
【請求項２】
前記分割するための手段のうちいくつかが双方向バッファである、請求項１に記載のＲＡＭを備えたＦＰＧＡ。
【請求項３】
前記分割するための手段のうちいくつかがパストランジスタである、請求項１に記載のＲＡＭを備えたＦＰＧＡ。
【請求項４】
前記双方向バッファが対応するラインをラインセグメントに分割し、前記各セグメントはＲＡＭブロックに隣接する、請求項３に記載のＲＡＭを備えたＦＰＧＡ。
【請求項５】
前記ＲＡＭブロックのうちいくつかが、２つのアドレスポート（ＡＤＡ１１−ＡＤＡ０，ＡＤＢ１１−ＡＤＢ０）と少なくとも２つのデータポート（ＤＩＡ７−ＤＩＡ０，ＤＩＢ７−ＤＩＢ０）とを有するデュアルポートＲＡＭ（５３１）を含み、前記アドレスポートはすべて前記垂直ラインによってアクセス可能である、請求項１に記載のＲＡＭを備えたＦＰＧＡ。
【請求項６】
前記ＲＡＭブロックの各々が、複数の、長さ対幅の比を有するよう再構成可能である、請求項１に記載のＲＡＭを備えたＦＰＧＡ。
【請求項７】
前記ＲＡＭブロック（５３１−７）が４つの論理ブロック（２５−３３から２５−３６）にわたって延びる、請求項１に記載のＲＡＭを備えたＦＰＧＡ。
【請求項８】
前記複数のＲＡＭブロックのうち第１のＲＡＭブロックを駆動するデータラインの前記グループのうちの第１のもの（ＤＩ３１）が、前記複数のＲＡＭブロックのうち第２のＲＡＭブロックを駆動するデータラインの前記グループのうちの異なったもの（ＤＩ１６′）に、前記相互接続構造を用いることなく接続することができ、それにより、前記第１のＲＡＭブロックの所与のデータポート（ＤＩＢ３）を駆動する信号が、前記第２のＲＡＭブロックの、同じ所与のデータポートを駆動する信号と衝突しない、請求項１に記載のＲＡＭを備えたＦＰＧＡ。
【発明の詳細な説明】
関連の特許出願
本出願は下記の特許出願に関連し、これらはいずれも上記出願の譲渡人であるザイリンクス社（Xilinx，Inc）に譲渡され、引用によって援用される。
１．１９９４年４月１日付のダネッシュ・タバナ（Danesh Tavana）、ウィルソン・ケイ・イー（Wilson K．Yee）およびビクター・エイ・ホーレン（Victor A．Holen）によって出願され、引用によって援用される、「ＦＰＧＡのためのタイルベースのアーキテクチャ（Tile Based Architecture for FPGA）」と題された係属中の米国特許出願連続番号第０８／２２２，１３８号［Ｍ−２２５７−１Ｎ］。
２．スティーブン・ピィ・ヤング（Steven P．Young）によって１９９５年７月２６日に出願され、１９９６年５月１４日に発行された「デフォルト入力を有する双方向トライステートバッファ（Bidirectional Tristate Buffer with Default Input）」と題された米国特許第５，５１７，１３５号［Ｘ−１９５］。
発明の分野
この発明は集積回路に形成されたプログラマブル論理デバイスに関し、特にフィールドプログラマブル論理デバイスまたはフィールドプログラマブルゲートアレイに関する。
発明の背景
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、ユーザが希望する論理機能をもたらすようにプログラム可能に相互接続され得るプログラマブル論理ブロックのアレイを含む。ロス・フリーマン（Ross Freeman）に対して米国特許第Ｒｅ３４，３６３号として再発行された米国特許第４，８７０，３０２号には最初のＦＰＧＡが記載されており、これを引用によって援用する。エルガマル（Elgamal）の米国特許第４，７５８，７４５号、キーン（Kean）の第５，２４３，２３８号およびファーテック（Furtek）によって発明されかつコンカレントロジック社（Concurrent Logic，Inc.）が所有する公開されている出願ＷＯ  ９３／０５５７７などの後の特許には、他のＦＰＧＡアーキテクチャが記載されている。これらの特許および出願もまた引用によって援用される。ザイリンクス社（2100 Logic Drive，San Jose，California 95124）から入手可能な「プログラマブル論理データブック（The programmable Logic Data Book）」と題された１９９４年度のザイリンクス社のデータブックにはいくつかのＦＰＧＡ製品が記載されている。ザイリンクス社のデータブックのたとえば第２頁から第１１４頁に示されるように、典型的にＦＰＧＡ製品は不規則な論理ブロックのアレイを含み、この論理ブロックの数は製品によって異なる。
ＦＰＧＡアーキテクチャはプログラムルーチング構造と、再構成可能な（configurable）論理ブロックのアレイとを含む。プログラマブルルーチングマトリックスは論理ブロックを互いに接続するための手段を含む。これにより、ＦＰＧＡは一般的なルーチング構造にプログラム論理とプログラム可能な接続との組合せをもたらす。
典型的なＦＰＧＡの用途において、ＰＩＰは、ＰＩＰに関連した構成（configuration）メモリセルに適切な値をロードすることにより意外に早くオンになり、これにより経路をもたらし、再構成可能な論理ブロックによって行なわれる論理を確立する。動作時には、フリップフロップから値が書込まれたり読出されたりする際に経路上の信号が大きく変化する。
たとえば、ＦＰＧＡチップの１つの部分において生成される複素関数が、チップの別の部分において生成される複素論理と同期するようにするために、ユーザの中にはランダムアクセスメモリ（ＲＡＭ）のブロックを必要とするものもいる。別の例では、高速データをチップに対してバッファリングするためのＦＩＦＯ（先入れ先出し方式のレジスタ）を設けるか、またはチップの他の論理によって使用するためのレジスタバンクを設けることを希望するユーザもいる。ディー・バースキィ（D．Bursky）は、米国オハイオ州クリーブランド（Cleveland，Ohio，U.S.）における１９９６年１月２２日付のElectronic Design第４４巻第２号の第５３、５４、５８、６０および６２頁に記載されている「効率の高いＲＡＭベースのＦＰＧＡの容易なシステム設計（“Efficient RAM-Based FPGAs Ease System Design”）」と題された論文において、アルテラ社によるＦＬＥＸ  １０Ｋ（商標）ファミリーおよびアクテル社（Actel）による３２００ＤＸファミリーの２つのこのようなアーキテクチャを記載している（「ＦＬＥＸ  １０Ｋ」はアルテラ社の商標である）。クリフ他（Cliff et al.）もまた、「プログラマブル論理アレイ集積回路（“Programmable Logic Array Integrated Circuits”）」と題された米国特許第５，５５０，７８２号においてこのようなアーキテクチャを記載している。クリフ他によって記載されているアーキテクチャにおいて、プログラマブルＲＡＭブロックは列に含まれ、これらの列は多数のＲＡＭブロックにわたってプログラム可能に延びる多くの目的のための垂直方向の信号ラインによってアクセスされる。
従来のＦＰＧＡチップにおいては、ＲＡＭのこれらのブロックはＦＰＧＡのうちプログラム可能な部分が再構成されるため、ＦＰＧＡのこれらの部分は他の用途に利用できない。ＲＡＭなどの共通の機能が多数のユーザによって希望される場合、チップの一部分をこの目的のための専用のものにすると経済的になり、特定の機能を高密度で実現することができ、ＦＰＧＡの他の部分をあまり予想できない用途に自由に用いることができるようになる。
Ａｌｔｅｒａ  ＦＬＥＸ  １０Ｋチップは、チップの論理ブロックによってアクセスされ得るＲＡＭのブロックを含む。Ａｌｔｅｒａ  ＦＬＥＸ  １０Ｋの構造は「ＦＬＥＸ  １０Ｋデバイスの埋込ＲＡＭによる利益（Benefits of Embedded RAM in FLEX 10K）」と題された１９９６年１月付のアルテラ社（Altera Corp.）による製品情報会報に簡単に記載されている。この出版物のブロック図にはいくつかの構成を有するＲＡＭ／ＲＯＭブロックが示されている。ＲＡＭ／ＲＯＭブロックは、入力フリップフロップと、書込パルス回路と、データ、アドレス、書込イネーブルおよび入力クロック信号からデータ、アドレスおよび書込イネーブル信号を生成するための入力マルチプレクサとを含むＥＡＢ（埋込アレイブロック）の形態である。ＥＡＢは、データ出力フリップフロップと、データ出力信号を発生するためのマルチプレクサとをさらに含む。アルテラ社の出版物には、大きなＲＡＭが望まれる場合には、大きなＲＡＭを実現するためにＥＡＢを縦続接続することができると示されている。
しかしながら、これらの専用ＲＡＭブロックは汎用相互接続ラインを介してアクセスされ、ＲＡＭにアクセスするために汎用制御接続ラインを用いる場合、他の論理信号を経路付けるための汎用相互接続ラインの利用度が低下する。
発明の概要
この発明によると、ＦＰＧＡ再構成可能な論理ブロックと一体化された、ランダムアクセスメモリまたはＲＡＭのブロックは、専用ルーチングラインを含む。再構成可能な論理ブロックにアクセスする汎用ルーチングラインもまた、専用ルーチングラインを介してＲＡＭブロックのアドレス、データおよびコントロールラインにアクセスする。別個の専用アドレスおよびデータルーチングラインが設けられ、専用ルーチングラインは１つより多いＲＡＭブロックにプログラム可能に接続される。このため、ＦＰＧＡの論理ブロックはＲＡＭの部分にアクセスするためにこれらの汎用および専用ルーチングラインを用いることができる。これらの専用ルーチングラインにより、ＲＡＭブロックの構成が長いか、幅が広いか、小型であるか大型であるかにかかわらず、ＲＡＭブロックおよびＲＡＭブロックのアレイが効率よく接続されるようになる。さらに、専用ルーチングラインにより、論理ブロックがチップのリモート部分にあるＲＡＭブロックに好都合にアクセスできるようになる。ＲＡＭブロックへのアクセスはいかなるＲＡＭ構成においても効率がよい。双方向バッファまたはパスデバイスは各ＲＡＭブロックにおけるアドレスおよびデータラインを分けるため、選択可能な数のＲＡＭブロックをＲＡＭとして合わせて動作することができる。
発明の１つの実施例において、隣接するＲＡＭブロックはトライステート双方向バッファを介して結合される。これらのバッファはデフォルト入力を含むため、双方向バッファに接続されたラインのうちの１本に与えれた信号が常にバッファエレメントの入力端子に与えられ、かつバッファエレメントの出力端子によって、バッファ出力端子に接続され得る任意の負荷に与えられるようになる。このためバッファがフローティング状態にされることはなく、バッファの出力端子に接続された負荷は、対称な双方向バッファを用いる場合のように別のパストランジスタに信号が流れる必要がある場合よりも、より迅速に切換わる。好ましい実施例において、デフォルト入力を有するトライステート双方向バッファには、４つのルーチングトランジスタと、メモリセルおよびバッファエレメントを含むトランジスタしか必要でない。さらに、バッファエレメントの出力端子に負荷を取付ける場合には、バッファリングされた信号を伝えるラインに負荷を直接取付ける場合よりも同じ切換速度に対して方向制御トランジスタを小さくすることができる。このバッファは米国特許第５，５１７，１３５号［Ｘ−１９５］にさらに記載されている。
この発明のさらに別の局面によると、専用ＲＡＭを能動化するデコーダは、種々の多くのやり方でデコーダ入力信号に応答するよう再構成することができる。デコーダはデコーダ入力信号の組合せがいかなるものであっても能動化できるようにプログラミングすることができ、かつ任意の数のデコーダ入力信号を無視するようにプログラミングすることができる。入力信号を無視する能力はＦＰＧＡにおいては重要である。なぜなら、不能化信号を未使用のデコーダ入力端子に経路付ける必要がなくなるからである。デコーダはまた、デコーダ入力信号にかかわらず不能化されるようにプログラミングすることができる。１組の入力信号をアドレスとして扱うようにプログラミングすることができる。それはアドレスを反転したりしなかったりすることができる。
１つの実施例において、１つのＲＡＭブロックのデータバスラインセグメントは、交互に配置されたまたは回転する態様で別のＲＡＭブロックのラインセグメントに結合される。たとえば、１つのＲＡＭブロックのライン８が次のＲＡＭブロックのライン７に結合される。これは、いくつかのＲＡＭが高さ方向に大きいが幅は大きくなく構成することができ、このため１つのＲＡＭブロックのＲＡＭはそれ自体のデータラインのすべてを使用せず、隣接したＲＡＭブロックがそれらのラインのうちのいくつかを使用することができ、これらの隣接したＲＡＭブロックのデータを、それが競合しないデータラインに好都合にアクセスすることができることを意味する。
【図面の簡単な説明】
図１Ａは、この発明によるＲＡＭブロックを含むＦＰＧＡチップを示す図である。
図１Ｂおよび図１Ｃは、外部接続のみを示す、図１ＡのＲＡＭブロック１３の２つの実施例を示す図である。
図２は、ＲＡＭを含む、図１ＢのＲＡＭブロックの内部接続を示す図である。
図３Ａから図３Ｄは、図２および図７Ａに使用される記号のうちのいくつかを示す図である。
図４Ａおよび図４Ｂは、図１Ｂ、図１Ｃおよび図２に用いられる双方向バッファの記号と、この発明に用いることができる関連した双方向バッファとを示す図である。
図５は、図２のＲＡＭブロックに用いられ得るこの発明によるデコーダの１つの実施例を示す図である。
図６Ａから図６Ｃは、種々のワード長を有するＲＡＭを形成するように、可能な３つの構成において構成された図２の実施例の４つの隣接したＲＡＭブロックを示す図である。
図７Ａは、図１ＣのＲＡＭブロックの内部接続を示す図である。
図７Ｂおよび図７Ｃは、図７ＡにおけるＲＡＭ５３１付近の部分を拡大して示す図である。
図８Ａから図８Ｃは、図７Ａから図７Ｃの実施例の４つの隣接したＲＡＭブロックによって構成されたＲＡＭを示す図である。
詳細な説明
図１Ａは、この発明によるＦＰＧＡチップを示す。チップの中央部分には複数の論理ブロック１が配置され、これらはＲＡＭブロック１３の列によって定期的に隔てられる。各ＲＡＭブロックは４つの論理ブロック１の縦方向の長さにわたって延びる。（別の実施例では、ＲＡＭブロックはより少ない数のまたはより多い数の論理ブロックにわたって延びてもよく、ＲＡＭブロックの列はＦＰＧＡの縦方向の長さ全体にわたって延びる必要はない。）チップの４つのエッジに沿って、入力／出力ブロックを含むエッジブロック２が配置される。チップにはさらに、チップを保持するパッケージの外部ピンに接続するためのパッド（図示せず）が配置される。パッドはエッジブロック２に接続され、各エッジブロックは少なくとも１つの論理ブロック１に接続される。さらに、ＲＡＭブロック１３に接続されるＲＡＭエッジブロック４と、エッジブロック２に接続され、かつ典型的にはグローバルクロック信号および境界走査信号などのいくつかのグローバル信号を与えるコーナブロック５とが配置される。エッジブロック２、コーナブロック５および論理ブロック１は出願連続番号第０８／２２２，１３８号［Ｍ−２２５７−１Ｎ］に詳細に説明され、引用によって援用され、ここでは再度説明しない。
ＲＡＭブロックのグループ１０１は図６Ａから図６Ｃに関して後に説明する。
図１Ｂは図１ＡのＲＡＭブロック１３の第１の実施例を示し、かつＲＡＭブロック１３に接続される外部信号ラインまたはバスを示す。このＲＡＭブロックは２５６×９ＲＡＭとして構成された２３０４個のメモリセルを含む。ＲＡＭブロック１３は論理ブロック１の４つ分の縦方向の長さである。典型的に、論理ブロック１はそれ自体の位置の上または下にあるＲＡＭブロック１３にアクセスする必要がある。ＲＡＭブロック１３には、隣接した論理ブロックから４組のルーチングラインＬ０からＬ３が延び、１組のラインは隣接した論理ブロックの各行に関連する。これらの水平ラインより上または下にあるＲＡＭブロックへのアクセスを容易にするために、専用の垂直ラインはアドレスおよびデータ信号をＲＡＭブロックに伝える。アドレスバスＡＤＤＲ、データ入力バスＤＩＮおよびデータ出力バスＤＯＵＴはＲＡＭブロック中を垂直に延び、隣接した次のＲＡＭブロックにプログラム可能に接続される。さらに、ＲＡＭブロック１３には、グローバルおよびローカルクロックラインＧＣＬＫおよびＬＣＬＫ、書込イネーブルラインＷＥ、ならびにブロックイネーブルラインＥＮが垂直に延びる。グローバルクロックラインＧＣＬＫはチップ全体にわたるＲＡＭブロックに永久的に接続され、他のラインは上のＲＡＭブロックにプログラム可能に接続され得る。
図１Ｃは、図１ＡのＲＡＭブロック１３の第２の実施例を示す。図１ＣではイネーブルラインＥＮは設けられない。その代わりに、データ入力およびデータ出力ラインを経路付けることによりイネーブルラインが必要でなくなる。書込イネーブルラインの代わりに、図１Ｃの実施例は、ある実施例では４本分のラインの幅である書込イネーブルバス３３を含む。図１Ｂおよび図１Ｃではいずれも、別個のデータ入力およびデータ出力バスが設けられる。
図１Ｂの実施例では、いくつかのＲＡＭブロックのデータ出力バスが互いに接続され得り、この場合いくつかのＲＡＭブロックからのデータ出力信号を同じラインで受ける。共通に接続された１つだけのＲＡＭブロックに対するイネーブル信号を一度に活性化することにより競合がなくなる。図１Ｃでは、いくつかのＲＡＭブロックを互いに接続することができ、データライン接続を交互にしまたは回転させ、いくつかのＲＡＭブロックに対する信号が同じライン上に現れないようにすることにより、競合が回避される。図１ＣのＲＡＭブロックは４０９６個のメモリセルを含み、これは異なった４つの内部構成４０９６×１、２０４８×２、１０２４×４および５１２×８を有し得り、図１ＢのＲＡＭブロックは１つの内部構成２５６×９を有する。他の構成も可能である。効率をよくするために、図３における幅の選択は２の累乗であるべきであり、図１Ｂではいかなる幅が用いられてもよい。図１Ｂの詳細を以下に図２に関して説明する。図１Ｃの詳細は図７Ａから図７Ｃに関して後に説明する。
第１の実施例、図２
図２は、図１ＢのデュアルポートＲＡＭブロック１３を詳細に示す。このＲＡＭブロックはデュアルポートＲＡＭ１３１を含む。デュアルポートＲＡＭにより、同じメモリ場所にアクセスするための独立した２組のアドレス、データおよびコントロールラインが提供される。デュアルポートＲＡＭは、同じメモリにおける２つのアドレスに対してユーザが同時に読出または書込を希望する場合に有用である。たとえば、外部ソースからデータのバーストを受け、かつデータを記憶して内部処理するＦＩＦＯは、一方のポートを外部ソースからの書込のために用い、他方のポートを内部論理による読出のために用いることによりデュアルポートを有益に利用する。
図２では、図１Ｂにおけるように、隣接した論理ブロックに接続される４組のローカル相互接続ラインＬ０からＬ３がデュアルポートＲＡＭブロック１３において水平方向に延びる。デュアルポートＲＡＭブロック１３ではＲＡＭブロックのアドレス、データおよびコントロールラインが垂直に延びる。４本のグローバルクロックラインＧＣＬＫは図示されるＲＡＭブロック１３の上下のＲＡＭブロックに永久的に接続される。２本のローカルクロックラインＬＣＬＫは上下のＲＡＭブロックにプログラム可能に接続される。クロックラインＧＣＬＫおよびＬＣＬＫはいずれもＲＡＭ１３１にプログラム可能に接続される。図１Ｂの上エッジに示されるプログラム可能な接続は、ＲＡＭ１３１の左側の五角形の記号によって表わされる。五角形の記号は後に図４Ａに関して説明する。書込イネーブルラインＷＥＡおよびＷＥＢならびにアドレスイネーブルバスＥＮＢおよびＥＮＡは、アドレスバスＡＤＤＲＢおよびＡＤＤＲＡと同様に上下のＲＡＭブロックにプログラム可能に接続される。
別個のデータ入力およびデータ出力ラインを用いると、多くの構成のＦＰＧＡが好都合に実現される。なぜなら、相互接続ラインは単一ソースによって駆動される必要があり、ＲＡＭがすべてのデータ出力ドライバに対してトライステート制御を行なう必要がある場合には、ＲＡＭに対してトライステート制御をもたらすために信号を経路付けることが困難であるからである。このため、データ入力およびデータ出力信号が同じ信号を共有しないことが好ましい。したがって、デュアルポートＲＡＭブロック１３は、ＲＡＭ１３１への書込のためのデータ入力バスＤＩＮＢおよびＤＩＮＡならびにＲＡＭ１３１からの読出のためのデータ出力バスＤＯＵＴＢおよびＤＯＵＴＡの両方を含む。これらのデータバスは示されるものの上下のＲＡＭに対して接続可能である。１つの実施例において、ＬＣＬＫ、ＷＥＡ、ＷＥＢ、ＥＮＡ．およびＥＮＢラインならびにＡＤＤＲＡ、ＡＤＤＲＢ、ＤＩＮＡおよびＤＩＮＢバスは（五角形で示されかつ後に説明する）バッファリングされた接続を用い、ＤＯＵＴＡおよびＤＯＵＴＢバスは（白い丸で示される）バッファリングされていない接続を用いる。
図３Ａは、２本のラインの交差部を囲む丸が、２本のラインを接続するためのメモリセルＭによって制御されるパストランジスタを表わすことを示す。図３Ｂは、２つのラインセグメントを結合する白丸がさらに、２つのラインセグメントを接続するためのメモリセルによって制御されるパストランジスタを表わすことを示す。
図３Ｃは、１つのラインセグメントの方向を指す三角形が、三角形の平らなエッジ上のラインから、三角形が指すラインに信号を与える、プログラム可能な接続を表わすことを示す。（もちろんこの信号は後にラインの全長上に存在する。反対方向を指す三角形は同じワイヤを示し得るため同じ意味を持つ。）。信号の流れが常に同じ方向である場合、三角形の記号は信号の流れに続くことによりリーダを補助する。図３Ｃに示されるように簡単なパストランジスタにより接続をもたらすことができる。
１本のラインがいくつかのプログラム可能な接続によってアクセスされる場合、それらはマルチプレクサとして実現されることが多い。図３Ｄには、各々が信号を水平ラインＨに送ることができる４本の垂直ラインＶ１からＶ４が示される。図３Ｄの右側に示されるように、２つのメモリセルＭ１およびＭ２は、垂直ラインＶ１からＶ４のうちバッファＢを介して水平ラインＨに接続されるものを選択する。
双方向バッファ
図４Ａは、ラインセグメントＡによって部分的に覆われたラインセグメントＡおよびＢ間の五角形が双方向バッファであり、かつバッファがトライステートモードにあるときにはラインセグメント間の双方向バッファ接続がラインＡからバッファまでのデフォルト入力を含む、というバッファの別の局面を示す。
図４Ａに示されるように、双方向バッファは１つのバッファエレメント４１を含む。２つのメモリセルＭ１およびＭ２は信号の流れの方向と、バッファがトライステートモードにあるかどうかを制御する。Ｍ１およびＭ２がいずれも論理０を保持する場合、バッファはトライステートモードにあり、ラインセグメントＡまたはＢのいずれも駆動しない。しかしＰチャネルトランジスタＴ４３がオンであるため、ラインセグメントＡ上の信号がバッファ４１の入力端子に与えられる。このバッファはヤングによって米国特許第５，５１７、１３５号にさらに記載されており、引用によって援用される。
ＲＡＭブロック
再度図２を参照して、デュアルポートＲＡＭブロック１３およびデュアルポートＲＡＭメモリ１３１への接続を以下に説明する。デュアルポートＲＡＭブロック１３は、ＲＡＭブロック１３が位置付けられる４行の論理ブロックに接続され得る。ローカル相互接続ラインＬ０−Ｌ３の組により、ＲＡＭブロック１３にわたって延びる４つのそれぞれの行にある論理ブロックに対してプログラム可能な接続が形成される。さらに、示されるものの上または下にあるＲＡＭブロックのラインＬ０−Ｌ３にＲＡＭ１３１が接続され得る。
図４Ａの五角形の記号で示されるようなプログラム可能な接続が図２に示される。五角形で示されるように、図２のＲＡＭ１３１への入力信号の各々はバッファエレメント４１（図４Ａ）によってバッファリングされ、このバッファエレメント４１はＲＡＭブロック１３（図２）の水平および垂直ラインの交差部に位置付けられる。このため、ＲＡＭ１３１の左エッジまで延びる水平ラインは、水平ラインが接続される図２の垂直ライン上の信号の、バッファリングされたものである。信号駆動ＲＡＭ１３１のソースが水平ラインの上または下にあるかは、メモリセルＭ１（図４）にある値に依存する。ＲＡＭ１３１への入力端子の駆動する信号は水平ラインＬ０からＬ３から引出されるか、図２に示されるものの上または下にあるＲＡＭブロックから引出すことができる。
たとえば、図２では、ラインＬ３によってアクセスされる論理ブロックの行において、ラインＬ３−０はデータ入力ラインとしての役割を果たし、かつＤＩＮＡバスラインＤＩＡ２にプログラム可能に接続され得る。これに代えて、ラインＬ３−０はアドレスラインとしての役割を果たし、かつラインＬ３−０とラインＡＤＤＲＢ２との交差部に丸で示されるようにＡＤＤＲＢラインＡＤＤＲＢ２にプログラム可能に接続され得る。ラインＡＤＤＲＢ２は、ラインＡＤＢ２を駆動するよう双方向バッファによってバッファリングされる。五角形で示されるプログラム可能な接続は図４Ａに示され、後に説明される。
同様に、ラインＬ１−１５はラインＬ１によってアクセスされる行の論理ブロックによって駆動されるローカルクロックラインとしての役割を果たし、かつローカルクロックラインＬＣＬＫ１にプログラム可能に接続され得り、このＬＣＬＫ１は双方向バッファによってラインＬＣＫ１に接続される。ラインＬＣＫ１はＲＡＭ１３１のＢまたはＡポートのいずれかのクロック入力端子ＣＫＢまたはＣＫＡに接続され得る。ラインＣＬＫ１とＲＡＭ１３１への２本のクロック入力ラインＣＫＡおよびＣＫＢとの交差部において三角形で表わされるプログラム可能な接続は図３Ｃに示され、先に説明した。
これに代えて、ラインＬ１−１５はデータ出力ラインとしての役割を果たし、ＤＯＵＴＢラインＤＯＢ７にプログラム可能に接続され得る。
これらおよび他のプログラム可能な接続は、それぞれの交差部において丸、三角形および五角形で示される。
パイピュレーション
ＰＩＰという用語はプログラム可能な交差点を意味する。パイピュレーション（pipulation）という用語はＰＩＰ集合を意味する。多くの構成のパイピュレーションが可能である。チップ領域を最小にすることが望まれる場合、少ない数のＰＩＰが設けられ（まばらなパイピュレーション）、ＰＩＰの場所は共通の用途の構造に対して最高の柔軟性と速度をもたらすように選択される。ＰＩＰがＥＰＲＯＭセルまたはアンチヒューズなどの非常に小型なデバイスによって形成される場合、柔軟性を高めるために多くの交差部にＰＩＰが設けられ得る。一般に、パイピュレーションは十分でなければならず、ローカル相互接続ラインの本数は、構成に用いられるアドレス、データおよびコントロールラインのすべてにユーザがアクセスできるよう十分でなければならない。幅の広いメモリでは、データラインが共有されるため、図６Ａから図６Ｃに関して説明するように、各データトラックに対してアクセス点がなければならない。垂直方向に隣接したＲＡＭブロックによってデータラインが用いられる場合、それらは垂直に接続されてはならず、同じＲＡＭブロックにおいて垂直なデータラインを水平な相互接続ラインに接続するためには十分なパイピュレーションを設ける必要がある。
デコーダブロック
図２のデコーダブロック１３２および１３３は図５に示されるように形成され得る。図５において、デコーダブロック１３２は４つの２入力マルチプレクサＭＵＸ０−ＭＵＸ３を含む。各マルチプレクサはイネーブルラインＥＮＢ０−ＥＮＢ３によって制御され、これらは水平ラインＬ０からＬ３のうち２本のラインによってアクセスされ得る。図５に示される実施例では、８個のメモリセルＭ１−Ｍ８により４つの２入力マルチプレクサＭＵＸ０−ＭＵＸ３が提供される。（図示しない別の実施例では、図２に示される４つのマルチプレクサ制御入力信号と同様に、隣接する論理ブロックから８つのマルチプレクサ入力が経路付けられる。）ＲＡＭ１３１（図２）を制御するデコーダ出力信号ＥＮＢは４つのマルチプレクサＭＵＸ０からＭＵＸ３からの出力信号に応答してＮＯＲゲートＮＯＲ１（図５）によって発生される。
デコーダブロック１３２および１３３はバスＥＮＢおよびＥＮＡのイネーブルラインが付加的なアドレスラインとして用いられるようにするか、または無視されるようにする。これらのブロックはまた、ＲＡＭポート全体を不能化するために用いることもできる。図５の構成はＦＰＧＡのユーザに高いレベルの自由を与える。ポートＢに関し、ユーザは垂直方向に隣接した２つのＲＡＭブロック１３を対にし、それらの２つの間で選択を行なうよう各ブロックにおいてデコーダ１３２を用いる。このような構成にはデコーダブロック１３２への４本の入力ラインのうち１本しか必要ではない。たとえば、隣接した２つのＲＡＭブロックにおいて、マルチプレクサＭＵＸ１からＭＵＸ３は、論理０をメモリセルＭ３からＭ８にロードすることによりそれらのそれぞれのコントロール信号を無視するようにされる。２つのＲＡＭブロックの一方においては、メモリセルＭ１およびＭ２には０１がロードされ、他方においてはメモリセルＭ１およびＭ２に１０がロードされる。この構成において、ラインＥＮＢ０に与えられた論理０により、０１で構成されたＲＡＭブロックが選択され、論理１により、１０で構成されたＲＡＭブロックが選択される。
たとえばＭ１およびＭ２である任意の対のマルチプレクサ入力に１１を入れると、ＮＯＲゲートＮＯＲ１が論理０の出力信号を与えるようになり、これによりＢ  ＲＡＭブロックポートが不能化される。これにより４本のイネーブルラインが、図示されるブロックの上または下の場所に対して信号を経路付けるようになる。
任意の対のマルチプレクサ入力に００を入れると、マルチプレクサがドントケアにされ、デコーダ１３２がそのマルチプレクサのコントロール入力上の信号を無視するようにされる。たとえば、メモリセルＭ１およびＭ２に００を入れると、マルチプレクサＭＵＸ０がドントケアになり、どこかに信号を経路付けるためにラインＥＮＢ０が用いられるようになり、デコーダ１３２が他のイネーブル信号に応答するようになる。
この状況において、３対のメモリセルＭ３−Ｍ８に０１  ０１  ０１を入れると、イネーブルラインＥＮＢ１−ＥＮＢ３上のアドレス０００に応答してデコーダ１３２が能動化される。対に０１の値があると、それぞれのマルチプレクサがコントロール信号を出力に送るようにされる。対に１０の値があると、マルチプレクサがコントロール信号の補数を出力に送るようにされる。８つのＲＡＭブロック１３は、８つのＲＡＭブロック１３のメモリセルＭ３−Ｍ８の３対のマルチプレクサ入力に０および１の、異なった順列を入れ、ラインＥＮＢ１−ＥＮＢ３にアドレスを入れることにより、別々にアドレス指定され得る。もちろん、１６個のＲＡＭブロックは４本のイネーブルラインすべてを用いてアドレス指定されてもよい。
８つのメモリセルＭ１−Ｍ８に１１  １１  １１  １１のデフォルト値がロードされるとＲＡＭが不能化されるため、電力が消費されず、ＲＡＭブロック１３の他の部分の任意の構成に応じた競合がなくなる。
図５にはコントロール出力信号ＥＮＢを発生するためのＮＯＲゲートが示されるが、所望の目的を達成するメモリセルＭ１−Ｍ８に異なった値を用いることによっても同様に、ＯＲ、ＮＡＮＤまたはＡＮＤゲートを用いることができる。たとえば、ＡＮＤゲートが用いられる場合、デフォルト値は００  ００  ００  ００となるであろう。イネーブルラインＥＮＢ１−ＥＮＢ３上に異なった値を用いることによっても所望の結果がもたらされる。
１つの実施例において、（たとえばＮＯＲゲートＮＯＲ１からの論理０である）不能化デコーダ出力信号もまた、（たとえばＤＯＵＴＢバスラインＤＯＢ０−ＤＯＢ８を駆動するＲＡＭ１３１からのすべての信号である）そのポートからのすべての出力信号がトライステートになるようにする。これによりラインＤＯＢ０−ＤＯＢ８が、示されるものの上または下にある別のＲＡＭ１３１によって駆動されるようになる。しかしながら、トライステートはまた、ＲＡＭ出力信号がラインを駆動していないときにラインＤＯＢ０−ＤＯＢ８（および他のデータ出力ライン）がフローティング状態にされることを可能にする。このため、これらのラインには小さなキーパー回路またはプルアップ抵抗器が装着される。
図４Ｂ
図１Ｂまたは図２に示されるもののいくつかの複製品が互いに隣接して垂直方向に置かれると、１つの複製品の上にある線または円により、別の複製品の下にある直線が結合されることとなる。図４Ｂの記号のラインＢは上複製品（またはブロック）にあり、図４Ｂの記号のラインＡおよび円は下の複製品にある。図４Ｂの左側に示される三角形および白丸およびその中心へのラインの組合せにより、図４Ｂの右側に示されるデフォルト入力を有する双方向バッファが示される。これは図４Ａに示されるものと同じ回路であるため再度説明しない。後に説明するように、図４Ｂの記号の部分は図６Ａ−６Ｃに示される。図４Ｂの記号もまた、後に説明する図７Ａ−図７Ｃに示される。
ＲＡＭブロックのグループ分けおよびメモリ長／幅の制御
図６Ａは隣接した４つのＲＡＭブロック１３−５から１３−８を含むＲＡＭブロックグループ１０１を示し、各々は図２に示されるように構成される。他の数のＲＡＭブロックをともに用いてもよい。ＲＡＭブロックグループ１０１は図１Ａにも示される。各ＲＡＭブロックは４つの論理ブロックにわたって延びるため、グループ１０１の４つのＲＡＭブロックは１６個の論理ブロックにわたって延びる。隣接した４つのブロックは１０２４×９ＲＡＭ、５１２×１８ＲＡＭまたは２５６×３６ＲＡＭとして構成され得る。各ＲＡＭブロックはＲＡＭ２５６×９を含み、すなわちＲＡＭは２５６ワードの大きさを有し、各ワードは９ビットの幅を有する。この実施例では８ビットワードの代わりに９ビットワードが用いられる。なぜなら、多くのユーザはパリティビットを希望し、８ビットワードのみでパリティビットを得ることは矛盾しているからである。未使用である場合に９番目のビットを与えることはさほど費用が掛かることではない。なぜなら、９番目のビットは他の８ビットのデコード論理を共有し、メモリ面積が１２％増加すると面積の合計がわずかに増加するからである。この実施例において、幅（ワード長）および長さ（アドレス数）は、双方向バッファおよび隣接したＲＡＭブロック１３の間のパスゲートがいかにしてオンにされるかに依存する。図６Ｂおよび図６ＣにはＲＡＭブロックグループ１０１の代替的な構成が示される。
図６Ａにおいて、４つのＲＡＭブロック１３−５から１３−８は１０２４×９メモリとして構成される。１０２４×９の場合、１０個のアドレスビットがなければならない。ＡＤＤＲバス（図２のバスＡＤＤＲＡおよびＡＤＤＲＢ）は８ビットを有する。図６Ａに示されるように、隣接した４つのＲＡＭブロック１３−５から１３−８の４つの隣接したＡＤＤＲバスは互いに接続される。ＡＤＤＲバスの８つのアドレスビット（または図２のデュアルアドレスバスＡＤＤＲＡおよびＡＤＤＲＢ上の１６個のもの）によりＲＡＭ１３１の内部の２５６ワード（２8）がアドレス指定される。各々が各ＲＡＭ１３１にある４つの場所は、ＢＵＳＡＤＤＲ上の同じ８ビットアドレスによってアドレス指定されるため、２本のイネーブルラインＥＮ（図２のＥＮＡまたはＥＮＢ）をアドレスビットとして用い、図５に関して先に説明したように９番目および１０番目のアドレスビットをもたらすために互いに接続してもよい。１つのＲＡＭブロックのデータ入力およびデータ出力ラインは隣接するＲＡＭブロックの、対応するデータ入力およびデータ出力ラインに接続される。これは、４つのＲＡＭブロックのうちの１つのＲＡＭしか一度にアドレス指定されないからである。データ出力ラインに入れられたデータは４つのＲＡＭブロック（または１６個の論理ブロック）に沿ったいくつかの場所でローカル水平ラインにおいて拾い上げることができる。書込イネーブルＷＥおよびローカルクロックＬＣＬＫラインもまた、４つのＲＡＭブロックをともにグループ分けするために互いに接続される。黒丸は双方向バッファまたはパスゲートを介して接続された隣接したブロックにラインを有するバスを示し、白丸は、双方向バッファまたはパスゲートを介して接続されていないラインを示す。図６Ａの上下の部分において、双方向バッファおよびパスゲートは上にある次のＲＡＭブロックからの切断されたラインを示し、４つのグループの内部では、隣接したＲＡＭブロックのラインのすべての対は接続されていることに注目されたい。
図６Ｂに示されるように、５１２×１８メモリを形成するために、４つのＲＡＭブロックのデータラインは白丸ＰＩＮ２およびＰＯＵＴ２で示されるように２つのグループに分割され、アドレス、イネーブル、書込イネーブルおよびローカルクロックラインは一緒にされる。イネーブルラインのうち１つだけがアドレスラインとして用いられ、その他のものは図５に関して先に述べたデコーダの構成がドントケアであるため無視される。したがって、たとえばＲＡＭブロック１３−５の１つのＲＡＭセルおよびＲＡＭブロック１３−７の１つのＲＡＭセルである２つのＲＡＭセルが１つの９ビットアドレスに応答してアクセスされる。読出時には、アドレス指定された２つのＲＡＭセルの各々がそれらの９ビットのデータをデータ出力バスＤＯＵＴに同時に送る。書込時には、アドレス指定された２つのＲＡＭセルの各々が、それらの９ビットデータをデータ入力バスＤＩＮから同時に取出す。データ入力およびデータ出力ラインはＰＩＮ２およびＰＯＵＴ２の中間で２つのグループに分割される。上および下グループの各々にある水平データラインによりデータの読出および書込が行なわれ、データラインは分割されるため競合はない。上の２つのＲＡＭブロックに記憶されたデータビットは上の２つのＲＡＭブロック１３−５および１３−６に接続された水平ライン上で検出される必要があり、下位ビットはＲＡＭブロック１３−７および１３−８に接続された下ライン上で検出される必要がある。この例では、アドレスは４つのＲＡＭブロックのうちのいずれかに隣接した論理ブロック場所からか、または示される水平ラインに接続され得るより遠くにある場所から入来し得る。別の例では、ＲＡＭブロック１３−５のバスＡＤＤＲは上のアドレスバス（図示せず）に接続されてもよく、この場合アドレスは、アドレス指定されたＲＡＭブロックよりさらに遠くの論理ブロックから引出されてもよい。このように、１つの９ビットアドレスに応答して、１８個のデータビットの書込または読出が行なわれる。９ビットアドレスによって５１２個の別個の場所がアドレス指定されるため、メモリは５１２×１８である。
図６Ｃに示されるように、２５６×３６メモリの場合、４つのＲＡＭブロックのデータ入力および出力ラインは４つのグループに分けられ、アドレスラインＡＤＤＲは互いに接続される。この構成では８本のアドレスラインしか用いられない。イネーブルラインはアドレス指定のためには用いられない。このため、４つのＲＡＭブロックにより、単一アドレスに応答してデータワードがデータ出力バス上に入れられるか、またはデータ入力バスからデータワードが読出される。その後、４組のデータが検出されるか、またはそれぞれのＲＡＭブロックの領域にある論理ブロックによって与えられなければならない。
デュアルポートＲＡＭ構成
各２５６×９ＲＡＭはデュアルポートＲＡＭであるため、２つの別個の単一ポート１２８×９ＲＡＭか、または１つの単一ポート１２８×１８ＲＡＭとして構成され得る。２５６×９＝２３０４個のＲＡＭビットのすべてが両方のアドレスバスからアドレス指定可能であることを思い出されたい。
２つの１２８×９ＲＡＭを形成するために、８個のアドレスビットのうちの１つ、たとえば最上位アドレスビットが、一方のポートのアドレスバス上では一方の状態に、かつ他方のポートに関しては他方の状態に永久的に設定される。これにより、一方のアドレスバス上の残りの７つのビットによってＲＡＭの半分が、かつ他方のアドレスバス上の７つのビットによってもう半分がアドレス指定されるようになる。一方のアドレスポートの最下位の７本のアドレスラインは１組の７本の垂直アドレスラインに接続され、他方のアドレスポートの最下位の７本のアドレスラインは別の組の７本の垂直アドレスラインに接続される。データ入力ポートは別個のデータ入力ラインに接続され、データ出力ポートは別個のデータ出力ラインに接続される。
１つの単一ポート１２８×１８ＲＡＭを形成するために、一方のアドレスポートの最上位ビットは、たとえば論理１である能動化電圧源に接続され、他方のアドレスポートの最上位ビットは接地に接続される。２つのポートの残りの７本のアドレスラインは同じ７本の垂直アドレスラインに接続される。このため、７本の垂直アドレスライン上の任意のアドレスによって２組のＲＡＭセルがアドレス指定される。１８本の垂直データ出力ラインは２つのポートの１８本のデータ出力ラインに接続されるため、アドレス指定された２組のＲＡＭセルの内容を受け、これは単一の１８ビットワードを含む。
第２の実施例、図７Ａ−図７Ｃ
この発明のＲＡＭブロックの第２の実施例が図７Ａ−図７Ｃに示される。図７ＡのＲＡＭブロックは、ＲＡＭ５３１と、チップの他の部分にＲＡＭ５３１を接続するためのラインとを含む。ＲＡＭ５３１は異なった４つの構成、すなわち４０９６×１、２０４８×２、１０２４×４および５１２×８に構成することができる。水平ラインはＲＡＭ５３１から左方向に延びる。これらによりアドレス、データ入力およびコントロール信号がＲＡＭ５３１に与えられる。ＲＡＭ５３１から右方向に延びる水平ラインはＲＡＭ５３１からのデータ出力信号を受ける。図２に示されるように、図７ＡのＲＡＭブロックを通って延びる専用の垂直ラインにより、ＦＰＧＡチップの論理ブロックとチップのＲＡＭブロックのＲＡＭ５３１との間にインターフェイスが提供される。図２に示されるように、図面の上方にあるプログラマブルコネクタにより、図７ＡのＲＡＭブロックが、上にある同一のＲＡＭブロックに接続されるようになる。ＲＡＭ５３１の内部構成は周知の方法または１９９６年７月２９日に出願された同時係属中の出願連続番号第０８／６８７，９０２号［Ｘ−２６４−１Ｎ］においてナンス他（Nance et al.）によって説明されている新規な構造によって、図６Ａ−６Ｃに関して先に述べたものに類似した態様で制御され得る。
図２と同様に、組にされた４つのグループの水平ラインＬ０からＬ３が図７ＡのＲＡＭブロックを通って延びる。これらのラインはＦＰＧＡチップの論理ブロックのための汎用相互接続構造の部分である。プログラマブルコネクタにより、これらの水平ラインが、垂直方向に延びるアドレス、データ入力、データ出力およびコントロールラインに接続されるようになる。図７Ａの実施例では、より長い水平ラインＨＬ０からＨＬ３によりデータ出力信号がさらに遠くの論理ブロックまで伝えられる。水平ラインおよび垂直ラインの、選択された交差部における明示されていない三角形により、交差部におけるプログラム可能な接続が可能になる。図４Ｂに関して説明したように、三角形およびその中心へのラインを有する白丸の組合せにより、デフォルト入力を有する双方向バッファが示される。図４Ｂまたは図７Ａから図７Ｃでは、丸は、図面の上方または下方にあるＲＡＭブロックに対するバッファリングされたプログラム可能な接続であると考えることができる。（上方に丸を有する）三角形はＲＡＭ５３１へのバッファリングされたプログラム可能な接続であると考えることができる。
実施例の相違点
図２および図７Ａから図７Ｃに示される実施例の間には基本的な相違点がある。図２では、いくつかのＲＡＭからのデータ出力ラインは同じ垂直データ出力ラインに接続され、（たとえば図６Ａに示される１０２４×９である）大きな構成ではいくつかのＲＡＭブロックは同じラインに接続され得る。１つより多い信号を一度にデータ出力ラインに送ることを回避するようイネーブルラインを用いることによって競合が避けられる。
図７Ａから図７Ｃの実施例ではイネーブルラインは設けられない。データ入力およびデータ出力ラインを交互に配置することにより競合が避けられる。図７Ａから図７Ｃの上方には、図７Ｂにおいて明示されたＤＩＣ３１およびＤＩＣ３０などのプログラマブルコネクタが、上のＲＡＭブロックに延びるラインに接続される。図７Ｂを参照して、データ入力ラインＤＩ３０はプログラムデータ入力コネクタＤＩＣ３０を介してデータ入力ラインＤＩ３１′に接続され、これは上のＲＡＭブロックのラインＤＩ３１として続く。最も左のラインＤＩ３１はプログラマブルデータ入力コネクタＤＩＣ３１を介してラインＤＩ１６′に接続され、これは上のＲＡＭブロックのラインＤＩ１６として続く。他のラインは、上のＲＡＭブロックにおいて左の方向に移動するようそれらのそれぞれのプログラマブルコネクタの上のラインと交互に配置される。ＲＡＭ５３１の右にあるデータ出力ラインの場合にも同じ交互の配置がもたらされる。図７Ａおよび図７Ｂの両方を見ると、ラインＬ３の上ラインＬ３−２３（図７Ａ）が垂直ラインＤＩ３１にプログラム可能に接続され、かつデータ入力ＰＩＰ  ＤＩＰ３１（図７Ｂ）を介してＲＡＭ５３１のデータ入力ラインＤＩＢ３にプログラム可能に接続され得ることがわかるだろう。これに代えて、または付加的に、上向きに信号を伝えるようにプログラマブルコネクタＤＩＣ３１を設定することによりＲＡＭ５３１上のＲＡＭを用い、上のＲＡＭブロックのラインＤＩ１６として続くラインＤＩ１６′にラインＤＩ３１を接続するようにしてもよい。ラインＤＩ１６は図７ＢにおいてＰＩＰ  ＤＩＰ１６を介してデータ入力ラインＤＩＢ７に接続されることがわかる。このように、ラインＤＩ３１は図示されたＲＡＭブロックのデータ入力ラインＤＩＢ３に、または上のＲＡＭブロックのラインＤＩＢ７に接続され得る。
すべてのＲＡＭ構成において柔軟性を最大にするための、交互配置されたラインの分離
図７Ｂおよび図７Ｃのデータ入力およびデータ出力ラインの数に注目されたい。ＲＡＭ５３１のデータ入力およびデータ出力ラインはどのビットが最上位であるかに従って番号が付されており、ここでビット７は最上位であり、ビット０は最下位である。数は連続していない。（もちろん図面では連続した数が付され、ＲＡＭ５３１の外部にあるＰＩＰのパターンはこれに対応して異なって示される。）ＰＩＰおよび交互配置された垂直ラインは、×１、×２、×４および×８ＲＡＭメモリのすべてが、設けられた垂直データラインの数に関して垂直方向に隣接したＲＡＭブロックの、可能な最も大きな長さにわたって競合が生じないようにアクセスすることができる。×１ＲＡＭの場合、すなわちＲＡＭ５３１がデータワードの１ビットによって構成されている場合、（たとえばラインＤＩＡ０、ＤＩＢ０、ＤＯＡ０およびＤＯＢ０である）Ｄ０ラインしか用いられず、特定の水平Ｄ０ラインに接続される垂直ラインは１６個のＲＡＭブロックを通るまで同じ垂直ラインに接続されない。×２ＲＡＭの場合、すなわちＲＡＭ５３１がデータワードの２ビットで構成されている場合、ラインＤ０およびＤ１しか用いられない。それらは図７Ａから図７Ｃの上に示される交互配置構造によって互いに隔てられるため、Ｄ０ラインは８個のＲＡＭブロックを通るまでＤ１ラインと衝突しない。同様に、×４ＲＡＭの場合、ラインＤ０、Ｄ１、Ｄ２およびＤ３が用いられ、４つのＲＡＭブロックを通るまで衝突は生じない。最後に、×８構成の場合、すべての水平データラインが用いられる。８本の水平データラインおよび１６本の垂直データラインがあるため、８本のデータラインが用いられても、２個のＲＡＭブロックを通るまで衝突が生じない構成にすることができる。
図７Ａの実施例では、×１のメモリは０番目のデータポートしか用いないと仮定している。しかしながら、別の実施例では、×１のメモリ構成のＲＡＭブロックにより単一信号がいくつかのまたはすべてのデータポート上に送られ、それにより、パイピュレーションに必要なスペースを増加させることなく経路付けの柔軟性を高めることができる。同様に、×２構成は２つより多いデータポートを用い、×４構成は４つより多いデータポートを用い得る。
パイピュレーション
図７Ａを参照して、ＰＩＰの規則正しいパターンにより、相互接続ラインＬ０からＬ３がＲＡＭブロック５３１および図面の上下にある他のＲＡＭブロックにアクセスするようになる。Ｌ０からＬ３までの組のラインはアドレスラインまたはデータラインとしての役割を果たし得る。たとえば組Ｌ３のラインＬ３−２３はラインＬ３−２３と垂直アドレスラインＡ２３との交差部にあるＰＩＰをオンにすることによりアドレスラインとして用いられ得る。垂直アドレスラインＡ２３はそれらの２本のラインの交差部にあるＰＩＰをオンにすることにより、水平ＡポートアドレスラインＡＤＡ１１または水平ＢポートアドレスラインＡＤＢ１１にアクセスし得る。垂直アドレスラインＡ２３は、図面の上の部分にあるコネクタＡＣ２３をオンにすることにより図面の上のＲＡＭブロックの別の垂直アドレスラインＡ２３に接続され得り、この垂直アドレスラインは図７Ａに示されるように水平アドレスラインに接続され得る。これにより、ラインＬ３−２３は多くの異なったＲＡＭブロックにおける多くの異なった水平アドレスラインにアクセスすることができる。組Ｌ３のラインＬ３−０からＬ３−２３の各々は、ＲＡＭ５３１に至る水平アドレスラインのうちの１つにアクセスし得る。
組Ｌ２を垂直アドレスバスＡＤＤＲに接続するためのＰＩＰは、組Ｌ３に関する対応するＰＩＰからオフセットして配置される。組Ｌ１およびＬ０のＰＩＰも同様にオフセットされる。４つの組Ｌ０からＬ３の各々はＡポートのすべての水平アドレスラインＡＤＡ１１−ＡＤＡ０およびＢポートのすべての水平アドレスラインＡＤＢ１１−ＡＤＢ０に垂直アドレスバスＡＤＤＲを介してアクセスし得るが、ＰＩＰのオフセットは４組のラインＬ０−Ｌ３について異なるため、４組のラインＬ０−Ｌ３には異なった垂直アドレスラインが用いられる。たとえば、組Ｌ３ではラインＬ３−２３は水平アドレスラインＡＤＡ１１、ＡＤＡ１０、ＡＤＢ４およびＡＤＢ５にアクセスし得る。組Ｌ２では、ラインＬ２−２３はラインＬ３−２３と同じ水平アドレスラインにアクセスし得るが、垂直アドレスラインＡ２２を介してアクセスする。ラインＬ２−２３およびＬ１−２３は垂直アドレスラインＡ２１およびＡ２０をそれぞれ介して水平アドレスラインＡＤＡ１０、ＡＤＡ９、ＡＤＢ４およびＡＤＢ３にアクセスする。
組Ｌ０−Ｌ３のラインはデータ入力またはデータ出力ラインとしての役割も果たし得る。たとえば、組Ｌ３のラインＬ３−２３はラインＬ３−２３と垂直データ入力ラインＤＩ３１との交差部にあるＰＩＰをオンにし、かつ垂直データ入力ラインＤＩ３１と水平データ入力ラインＤＩＢ３およびＤＩＡ３（図７Ｂの表示を参照）との交差部にある１つまたはそれ以上のＰＩＰをオンにすることにより、データ入力ラインとして用いられる。
ラインＬ３−２３は図７ＡのＲＡＭ５３１のＢポートからのデータ出力ラインとしての役割を果たさないことに留意されたい。ＰＩＰはラインＬ３−２３と垂直データ出力ラインＤＯ２７との交差部にあるが、垂直データ出力ラインＤＯ２７とＲＡＭ５３１のＢポートからの任意の水平データ出力ラインとの間の交差部にはＰＩＰはない。しかしながら、ラインＬ３−２３は図７Ａの上の、対応するＲＡＭ５３１のＢポートからのデータ出力ラインとしての役割を果たし得る。コネクタＤＯＣ３１（図７Ｃを参照）をオンにすると垂直データ出力ラインＤＯ３１がデータ出力ラインＤＯ１６′に接続され、これは図の上にあるＲＡＭブロックのデータ出力ラインＤＯ１６として続く。図７Ｃに示されるように、垂直データ出力ラインＤＯ１６はその交差部にあるＰＩＰをオンにすることにより水平データ出力ラインＤＯＢ０からのデータを受けることができる。他のパターンのＰＩＰを用いることにより他の選択肢が可能となる。上述のとおり、パイピュレーションの密度を高めるとより多くの選択肢がもたらされるが、実現するために必要なチップ面積が増加する。
デュアルポートＲＡＭの特徴
別個のデータ入力およびデータ出力ラインを用いると、いくつかの論理ブロックによりポートＢを介してＲＡＭ５３１に対する読出を行なうことができ、他の論理ブロックによりポートＡを介してＲＡＭ５３１に対する書込を行なうことができる。２４本の垂直アドレスラインＡ０−Ａ２３が設けられ、４０９６の大きさの構成において１２本のアドレスラインが用いられることに留意されたい。たとえば、アドレスラインＡ０−Ａ２３のうちの奇数のものがデータ入力ポートＡに対する書込を行なうために用いられるならば、データ出力ポートＢからの読出のためには偶数のアドレスラインが用いられ得る。（十分なラインおよび十分なＰＩＰがあるならばいかなるラインの組合せをポートＡおよびＢに用いてもよい。）
４０９６×４ＲＡＭにおいてポートＡに対する書込およびポートＢからの読出を行なうために、４対のＰＩＰをオンにすることにより４つのデータビットが垂直データ入力ラインＤＩ０からＤＩ３に書込まれる。水平ラインＬ３−２０と垂直データ入力ラインＤＩ１９との交差部において１つのＰＩＰが、水平ラインＬ２−２０と垂直データ入力ラインＤＩ１８との交差部において第２のＰＩＰが、水平ラインＬ１−２０と垂直データ入力ラインＤＩ１７との交差部において第３のものが、かつ水平ラインＬ０−２０と垂直データ入力ラインＤＩ１６との交差部において第４のものがオンになる。
経路を完成するために、ＲＡＭ５３１のＰＩＰ  ＤＩＰ１９がラインＬ３−２０をデータ入力ポートＤＩＢ０に接続するためにオンになる。このため、ラインＬ３−２０上の信号がＲＡＭ５３１のラインＤＩＡ０上に受けられ、周知の手段によって、ＲＡＭ５３１の、アドレス指定されたメモリセルに書込まれる。ＰＩＰ  ＤＩＰ１８はオンにならない。したがって、ラインＬ２−２０上の信号はＲＡＭ５３１のラインＤＩＡ０には接続されない。しかしながら、上にある同一のＲＡＭブロックにおいては、ＰＩＰ  ＤＩＰ１９がオンになるため、ラインＬ２−１２上の信号がＲＡＭ５３１の上にあるＲＡＭのラインＤＩＡ０上に受けられる。垂直データ入力ラインＤＩ１７上にあるラインＬＩ−２０上の信号は、コネクタＤＩＣ１７によって、図７Ａの上にあるＲＡＭブロックの垂直データ入力ラインＤＩ１８に接続され、図７Ａの上にあるＲＡＭブロックのコネクタＤＩＣ１８を介して図７Ａの２つ上にあるＲＡＭブロックの垂直データ入力ラインＤＩ１９にさらに接続される。そこからそれは、ＰＩＰ  ＤＩＰ１９を介して水平データ入力ラインＤＩＡ０に、かつ図７Ａの２つ上にあるＲＡＭに接続される。同様に、図７ＡのラインＤＩ１６にあるラインＬ０−２０上の信号は、図７Ａより３つ上のＲＡＭブロックの水平データ入力ラインＤＩＡ０に接続される。
これにより、図７ＡのＲＡＭブロックに隣接した論理ブロックによってラインＬ３−２０、Ｌ２−２０、Ｌ１−２０およびＬ０−２０上に送られた、データワードのうちの４ビットが、異なった４つのＲＡＭブロックのメモリセルの中に書込まれ、これらのうちの３つは図７Ａより上にある。
４つのＲＡＭブロックの各々では、水平データ出力ラインＤＯＢ０しか用いられない。この結果、４つのデータ出力信号が図７Ｃまたは図７Ａの垂直データ出力ラインＤＯ１６からＤＯ１９上に送られることとなる。ＰＩＰはこれらの４本のラインと水平ラインＬ３−２０、Ｌ２−２０、Ｌ１−２０およびＬ０−２０との交差部にはないが、これらの４本の水平ラインは読出のために用いることができない。なぜなら、それらは上述の書込動作のために既に用いられているからである。しかしながら、ラインＬ３−１４、Ｌ２−１４、Ｌ１−１４およびＬ０−１４との交差部にもＰＩＰはあり、これらのラインはそれぞれのＰＩＰをオンにすることにより書込のために用いることができる。
図７Ａから図７ＣのＲＡＭブロックの例示的な用途
ＲＡＭ５３１は４つの構成を有するデュアルポートＲＡＭである。ＲＡＭ５３１は４０９６個のメモリセルを含み、これらは周知の内部構造によって４０９６×１ＲＡＭ、２０４８×２ＲＡＭ、１０２４×４ＲＡＭまたは５１２×８ＲＡＭとして構成され得る。図７Ａの実施例では各ポートに対して１２本ずつ、２４本の水平アドレスラインがある。
４０９６×１構成では、１２本の水平アドレスラインにより各ポート（２12＝４０９６）がアドレス指定される。４０９６×１構成では、水平データ入力ラインＤＩＡ０およびＤＩＢ０ならびに水平データ出力ラインＤＯＡ０およびＤＯＢ０しか用いられない。
２０４８×２ＲＡＭ構成では、１１本の水平アドレスラインにより各ポート（２11＝２０４８）がアドレス指定され、各ポートの最上位アドレスビットは未使用のままとされる。ポートＤＩＡ０、ＤＩＡ１、ＤＩＢ０およびＤＩＢ１の各々に関する２本のデータ入力ラインならびにポートＤＯＡ０、ＤＯＡ１、ＤＯＢ０およびＤＯＢ１の各々に関する２本のデータ出力ラインが用いられる。
５１２×８ＲＡＭでは、アドレス指定のために各ポートに対して９本のアドレスライン、すなわちラインＡＤＢ８−ＡＤＢ０およびＡＤＡ８−ＡＤＡ０が用いられる。３つの最上位アドレスラインは無視される。５１２×８構成では、各ポートに関する８本のデータラインのすべてが用いられる。
図８Ａは、ＲＡＭブロックが５１２×８構成である場合の、図７Ａから図７Ｃの実施例の例示的な用途を示す。４つのＲＡＭブロックが関連して用いられる。それらは５１２×３２ＲＡＭとして構成される。４つの隣接したＲＡＭブロックのメモリセルにアクセスする論理は各論理ブロックにより隣接したＲＡＭブロックがアクセスされるように配置されているため、１つのＲＡＭブロックから次のものへの垂直方向の接続は必要ないか、または使用されない。図８Ａは、ＲＡＭブロック出力ポートから論理ブロック入力ポートに信号を伝えるために用いられる１つのＲＡＭブロック内の垂直方向のデータ出力ルーチングラインを示す。
ＲＡＭブロック５３１−８のメモリセルにより３２ビットワードの各々の最下位ビット０から７が記憶される。ＲＡＭブロック５３１−８の出力ポートＤＯＢ０からＤＯＢ７は、垂直データ出力ラインへのＰＩＰをオンにすることにより、ＲＡＭブロック５３１−８に隣接した４つの行の論理ブロックに接続される。簡略化のために、垂直データ出力ラインＤＯ−１６と水平ラインのうちの１本との交差部におけるＰＩＰしか例示しない。図示した例では、ＲＡＭブロック５３１−８のデータ出力ポートＤＯＢ０はこれら２本のラインの交差部のＰＩＰをオンにすることにより垂直データ出力ラインＤＯ−１６に接続される。垂直ラインＤＯ−１６と水平ラインＬＯ−５との交差部のＰＩＰをオンにすることにより、データ出力ポートＤＯＢ０がラインＬ０−５に接続され、０のデータビットを論理ブロック２５−４０に与える。同様に、データ出力ポートＤＯＢ１は垂直ラインＤＯ−２２に接続され、これは論理ブロック２５−４０のラインＬ０−７に接続される。３２ビットワードの他の３０個のデータビットは示されるように接続される。図８Ａには示されない付加的な接続により論理ブロックが垂直アドレスラインおよびデータ入力ラインにアクセスするようになり、かつ所望のメモリ機能を実現するようにクロックおよび他の必要な信号を与えるようになる。
垂直ライン間の接続を用いる大きなＲＡＭ
示される専用の垂直ラインおよびＰＩＰパターンを用いると、垂直アドレス、データ、およびコントロールラインを互いに接続することにより大きなＲＡＭが好都合に形成される。図８Ｂは隣接した４つのＲＡＭブロックの２０４８×８ＲＡＭメモリを実現する、隣接したＲＡＭブロックの垂直データ出力ライン間のプログラム可能な相互接続の用途を示す。図８Ｂはまた、この構成の論理ブロックにいかにしてデータ出力ラインが接続されるかを示す。論理ブロック２５−３３から２５−３６はデータワードの８個のビット０から７を受ける。これらの４つの論理ブロックはＲＡＭブロック５３１−７に隣接する。しかし、論理ブロック２５−３３から２５−３６に隣接しないＲＡＭブロックにいくつかのデータが記憶される。このため、好都合に転送を行なうために垂直ラインが用いられる。たとえば、論理ブロック２５−３５に与えられたメモリビット２はＲＡＭブロック５３１−８に記憶され、ポートＤＯＢ０を介してアクセスされる。ＲＡＭブロック５３１−８に隣接するＤＯＢ０およびＤＯ−１６の交差部のＰＩＰをオンにし、ＲＡＭブロック５３１−７に隣接するＤＯ−１７およびＬ１−５の交差部のＰＩＰをオンにし、トライステートバッファＴＢ−１をオンにし、これにより、ＲＡＭブロック５３１−８に隣接した垂直ラインＤＯ−１６をＲＡＭブロック５３１−７に隣接した垂直ラインＤＯ−１７に接続することにより、ルーチングが接続される。ビット２、３、６および７を与えるためには１つのトライステートバッファが各ビットに対してオンになる必要がある。ビット４および５を与えるためには２つのトライステートバッファが各ビットに対してオンになる必要がある。たとえば、ＲＡＭブロック５３１−５の出力ポートＤＯＢ１に与えられるビットは、トライステートバッファＴＢ２およびＴＢ３ならびにＲＡＭブロック５３１−５に隣接したＤＯＢ１およびＤＯ−２４の交差部のＰＩＰおよびＲＡＭブロック５３１−７に隣接したＤＯ−２２およびラインＬ２−６の交差部のＰＩＰをオンにすることにより、論理ブロック２５−３４におけるその宛先に経路付けられる。
ＲＡＭブロックおよび論理を用いるＲＡＭ
特に大きなＲＡＭであるＲＡＭを形成するためのさらなる柔軟性は、ＦＰＧＡの論理およびルーチング構造とＲＡＭブロックとを組合せることによって達成される。
図８Ｃは、信号を多重化するための２つの論理ブロックと、信号を経路付けるための２つの付加的な論理ブロックとを用いて形成された８１９２×２ＲＡＭを示す。図８Ｃは、アドレスおよびデータ入力ラインならびに図８Ａおよび図８Ｂに示されるデータ出力ラインを示す。
図７Ａの実施例はＲＡＭブロックにおいて４０９６個のメモリセルを用いるため、すべてのワードの１ビットを記憶するために２個のＲＡＭブロックを要する。図８Ｃでは、ＲＡＭブロック５３１−７および５３１−８にはビット０が記憶され、ＲＡＭブロック５３１−５および５３１−６にはビット１が記憶される。読出および書込の両方のために、メモリにアクセスするためにポートＢが選択されている。書込はポートＤＩＢ０に対して行なわれ、読出はポートＤＯＢ０から行なわれる。メモリが８１９２個のセルの大きさの場合１３本のアドレスラインが必要である。ポートＢは１２本のアドレスラインしか有さない。したがって、１２個のアドレス信号Ａ０からＡ１１が１２個のアドレスポートに与えられる。１２個のアドレス信号のうちの１０個は、論理ブロックと垂直アドレスラインとの間のひとつのＰＩＰおよび垂直アドレスラインとアドレスポートとの間の１つのＰＩＰをオンにすることによって与えられる。２つのアドレス信号Ａ８およびＡ１１は、隣接した論理ブロックにアドレス信号を経路付け、そこから垂直アドレスラインに、かつアドレスポートに経路付けることにより、対応するアドレスポートに与えられる。たとえば、アドレス信号Ａ１１はローカル相互接続ラインＩ１に与えられ、かつＰＩＰ９をオンにすることにより水平ラインＬ２−１５に与えられ、これはＰＩＰ１０をオンにすることにより垂直相互接続ラインＡＤＤＲ１４に接続される。その後ＰＩＰはこの垂直相互接続ラインをＲＡＭブロック５３１−５から５３１−８の各々のアドレスポートＡＤＢ１１に接続する。
アドレス指定されたメモリセルだけが書込まれるようにするために、１３番目のアドレス信号Ａ１２は書込イネーブル信号ＤＷＥと論理結合される。この論理結合はいくつかのやり方で行なうことができる。図８Ｃでは、論理ブロック２４−３１および２４−３２は書込イネーブルおよびアドレス信号の論理結合を行なう。論理ブロック２４−３１はＤＷＥおよびＡ１２のＡＮＤ関数をもたらす。ＡＮＤ関数出力はＲＡＭブロック５３１−５および５３１−７の書込イネーブルポートＷＥＢに与えられるため、ＤＷＥがハイ（データが書込まれる）であり、Ａ１２がハイ（その範囲の上半分にアドレスがある）場合、書込イネーブル信号はＲＡＭブロック５３１−５および５３１−７に与えられることとなる。論理ブロック２４−３２はＤＷＥのＡＮＤ関数およびＡ１２の反転をもたらすため、その範囲の下半分にあるアドレスが書込まれる場合には、ＲＡＭブロック５３１−６および５３１−８が能動化される。
データ出力側では、アドレス信号Ａ１２との論理結合が論理ブロック２５−３５および２５−３６において行なわれ、これらの各々はマルチプレクサとして構成される。データビットＤＯ１は論理ブロック２５−３５において発生する。論理ブロック２５−３５はＲＡＭブロック５３１−６および５３１−８からのＤＯＢ０出力信号を受ける。Ａ１２がハイのとき、論理ブロック２５−３５のマルチプレクサはＲＡＭブロック５３１−６からのデータビットを選択し、Ａ１２がローのとき、論理ブロック２５−３５のマルチプレクサはＲＡＭブロック５３１−８からデータビットを選択する。論理ブロック２５−３６における状況も似ている。このため、論理ブロック２５−３５および２５−３６からのマルチプレクサ出力は、８１９２の大きさのメモリにおけるアドレス指定されたワードの２つのビットＤＯ０およびＤＯ１である。
ＲＡＭブロックの垂直ラインのＰＩＰがＲＡＭブロック５３１−５からの出力信号を論理ブロック２５−３５に接続するために利用できない場合には、典型的にはＦＢＧＡ論理ブロックに設けられるローカル相互接続により信号が伝えられる。この例では、ＲＡＭブロック５３１−５のデータ出力ポートＤＯＢ０はＰＩＰ１、ＴＢ５、ＴＢ４、ＰＩＰ２、ＰＩＰ３およびＰＩＰ４をオンにすることにより論理ブロック２５−３５に接続される。これらのうちＰＩＰ３およびＰＩＰ４は従来のＦＰＧＡに見られるような論理ブロックローカル相互接続構造の部分である。
アドレスラインＡ１２はＰＩＰ５からＰＩＰ８をオンにすることにより汎用相互接続構造を介して論理ブロック２５−３５および２５−３６のマルチプレクサコントロールラインに経路付けられる。
図８Ｃには示されないが先行技術においては周知である多くのルーチンラインおよび相互接続構造ももちろん、ＦＰＧＡの商用の実施例において提供されるであろう。このような構造を示すとこの発明の理解が不明瞭になると確信されるため、それらはここでは示されない。
大きなＲＡＭ
垂直アドレス、データ入力およびデータ出力ラインに競合が生ずる前に垂直の列にある１６個のＲＡＭブロックを互いに結合することにより４０９６×１６ＲＡＭを形成することが可能である。同じ垂直方向の列のＲＡＭブロックを分割するか、１つより多い列からのＲＡＭブロックを用いるか、またはＲＡＭの部分を相互接続するかまたはそれにアクセスするための垂直方向の一般的な相互接続（ＦＰＧＡアーキテクチャにおいて周知である）を用いることにより、大きなメモリを形成することができる。図１Ａに示されるように、ＦＰＧＡチップは典型的に多数の列のＲＡＭブロックのを含む。Ｌ０からＬ３などの水平ラインは、１つより多い、ＲＡＭブロックの列にアクセスするために用いられ得る。垂直方向の列にあるより多くのＲＡＭブロックを互いに接続すると、より幅の広いＲＡＭが形成される。
他の実施例
図７Ａの実施例では、各ポートに対して２４本のアドレスラインと、１６本のデータ入力およびデータ出力ラインとが示される。したがって１６個の垂直方向に隣接するＲＡＭブロックを好都合に組合せることができ、すなわちデータ出力ライン間での競合または入力ラインに対する暖昧さをもたらすことなく組合せて用いることができる。もちろん、他の数のライン、他のパターンのＰＩＰおよび他のサイズのＲＡＭを用いてもよい。
【図１Ａ】
0004410853.tif 000002
【図１Ｂ】
0004410853.tif 000003
【図１Ｃ】
0004410853.tif 000004
【図２】
0004410853.tif 000005
【図３Ａ】
0004410853.tif 000006
【図３Ｂ】
0004410853.tif 000007
【図３Ｃ】
0004410853.tif 000008
【図３Ｄ】
0004410853.tif 000009
【図４Ａ】
0004410853.tif 000010
【図４Ｂ】
0004410853.tif 000011
【図５】
0004410853.tif 000012
【図６Ａ】
0004410853.tif 000013
【図６Ｂ】
0004410853.tif 000014
【図６Ｃ】
0004410853.tif 000015
【図７Ａ】
0004410853.tif 000016
【図７Ｂ】
0004410853.tif 000017
【図７Ｃ】
0004410853.tif 000018
【図８Ａ】
0004410853.tif 000019
【図８Ｂ】
0004410853.tif 000020
【図８Ｃ】
0004410853.tif 000021