(57)【特許請求の範囲】
【請求項１】
プログラマブル相互接続構造（図１６、線および斜線）と、
前記相互接続構造によって相互接続される複数の構成可能な論理素子（図１６、４０−１から４０−９）とを含むＦＰＧＡ（図１５）であって、
前記構成可能な論理素子（図８）の少なくとも１つがシフトレジスタ（７１４1が７７０2等に入る）およびルックアップテーブル（７１４1等が２００に入る）の両方として動作するよう構成可能であることを特徴とする、ＦＰＧＡ。
【請求項２】
前記少なくとも１つの前記構成可能な論理素子は、
少なくとも第１メモリセル（７７０1）および後続のメモリセル（７７０2）を含む複数のメモリセル（図９、７７０1−７７０4）を含み、複数のメモリセルの各々がメモリセル入力端子（７３０1−７３０4）およびメモリセル出力端子（下のＱ）を有し、さらに、
第１のメモリセル（７１４1）のメモリセル出力端子を後続のメモリセルの入力端子（７３０2）にプログラム可能に接続するためのシフト手段（９００、ＰＨＩ１、７２０1−７２０4、ＰＨＩ２、７０８1−７０８4、７１４1−７１４4）を含む、請求項１に記載のＦＰＧＡ。
【請求項３】
構成可能な論理素子データ入力端子（Ｄｉｎ）と、
構成可能な論理素子データ出力端子（Ｘ）と、
メモリセル出力端子の選択された１つを構成可能な論理素子データ出力端子に接続するためのマルチプレクサ（２００）と、
構成可能な論理素子データ入力端子（Ｄｉｎ）を少なくとも第１のメモリセルの入力端子（７３０1）に接続するための入力手段（図９、ＰＨＩ２、７０８1）とをさらに含む、請求項２に記載のＦＰＧＡ。
【請求項４】
前記構成可能な論理素子の前記少なくとも１つにおいてランダムアクセスメモリを実現するための手段（図１２、ＷＳ、５００、７０７1−７０７4）をさらに含む、請求項１に記載のＦＰＧＡ。
【請求項５】
構成可能な論理素子データ入力端子（Ｄｉｎ）を複数のメモリセルの選択された１つに選択的に結合するためのデマルチプレクサ（図１２、５００）をさらに含む、請求項３に記載のＦＰＧＡ。
【請求項６】
構成可能な論理素子がいつシフトレジスタとして構成されるかを制御するための制御論理（図９、９００）をさらに含む、請求項１に記載のＦＰＧＡ。
【請求項７】
論理素子がシフトレジスタとして構成されるかどうかを前記制御論理に選択させるための構成メモリ構造（図９、「Ｓｈｉｆｔ」を供給するメモリセル）をさらに含む、請求項６に記載のＦＰＧＡ。
【請求項８】
制御論理は、シフト手段に与えられるべき２つの非重複クロック信号（図７Ａ、７Ｂ）を発生するための論理を含む、請求項６に記載のＦＰＧＡ。
【請求項９】
シフト手段は、
第１のメモリセルから構成可能な論理素子データ入力端子を分離するための第２のパストランジスタ（図９、７０８1）と、
第１のメモリセル（７７０1の中の箱）のメモリセル出力端子（下のＱ）に選択的に結合されるインバータ（図９、下の７２０1）とを含み、インバータはインバータ入力端子およびインバータ出力端子を含み、さらに、
インバータ入力端子から第１のメモリセルのメモリセル出力端子を分離するための第３のパストランジスタ（７２０1）と、
インバータ出力端子から後続のメモリセルのメモリセル入力端子を分離するための第４のパストランジスタ（７７０2の上のトランジスタ７０８2）とを含む、請求項６に記載のＦＰＧＡ。
【発明の詳細な説明】
発明の分野
この発明は集積回路の論理回路における再プログラム可能な論理機能をカスタム化する手段および方法に関する。
発明の背景
この出願の譲受人であるXilinx, Inc.は複雑化し続けるＦＰＧＡを製造している。元の米国特許第４，８７０，３０２号の再発行である米国再発行特許第３４，３６３号において、Freemanは最初のＦＰＧＡを説明している。ＦＰＧＡは、複数のプログラマブル入力／出力パッドと、複数の構成可能な論理素子と、複数の論理素子とパッドとを相互接続するためのプログラマブル相互接続とを含む集積回路チップである。各論理素子は、論理素子がいかに構成されているかに従って論理素子へのｎ個の入力の論理関数を実現する。論理関数は論理素子へのｎ個の入力全部を用いてもよく、そのサブセットのみを用いてもよい。論理素子が実現のために構成され得る可能な論理関数のうちのいくつかは、ＡＮＤ、ＯＲ、ＸＯＲ、ＮＡＮＤ、ＮＯＲ、ＸＮＯＲ、およびこれらの関数の組合せである。
論理素子の１つの開示された実現例には、論理素子の内部にあり、２n個の個々のメモリセルを含む構成可能なルックアップテーブルが含まれる。構成時に、このアーキテクチャでは、ビットストリームが所望の関数を有するルックアップテーブルの個々のメモリセルを、所望の関数の真理値表を個々のメモリセルの書込むことによってプログラムする。プログラミングは直列に行なわれるものとして説明されるが、並列プログラミングのための他の技術も公知である。
ルックアップテーブルにおいて用いるのに適したあるメモリセルアーキテクチャが図１に示され、米国特許第４，８２１，２３３号においてHsiehにより説明される。このアーキテクチャのメモリセルは書込まれるべき値をデータ入力線「Ｄａｔａ」上のメモリセルに与え、対応のアドレス線「ＡＤＤＲ」をストローブすることによってプログラムされる。さらに、このアーキテクチャは５つのトランジスタを用いるが、他の公知の構成、たとえば６トランジスタのスタティックメモリセルもルックアップテーブルのメモリセルを実現するために適切な選択である。図１に示すように、インバータ７２６がメモリセル７００の駆動を高めるために含まれ得る。
構成後、ルックアップテーブルを用いるために、構成された論理素子の入力線がルックアップテーブルにおける対応のメモリセルを選択するアドレス線として作用する。たとえば、２入力ＮＡＮＤゲートを実現するよう構成された論理素子は、現入力対｛００、０１、１０、１１｝に対応する４つのメモリセルの１つに含まれる対応の値｛１、１、１または０｝を出力するであろう。
この選択は、入力線の論理レベルに基づいてルックアップテーブルからメモリセルを選択する復号化マルチプレクサによって行なわれる。１６個のメモリセル７００1から７００16と復号化マルチプレクサ２００とからなる例示的な４入力ルックアップテーブルのブロック図を図２に示す。マルチプレクサは、４つの入力信号Ｆ０−Ｆ３によって選択されるように、ルックアップテーブルのメモリセル７００1−７００16の１つに記憶される値をルックアップテーブルの出力Ｘに伝搬する。
図３はルックアップテーブルの別の実施例の概略図である。この実現例では、ルックアップテーブルは、４つのメモリセル７００1−７００4と、２つの入力信号Ｆ０およびＦ１を有する２入力復号化マルチプレクサ２００とを用いて実現される。２入力復号化マルチプレクサ２００は、選択されたメモリセルに記憶されている値を論理素子の出力Ｘに伝搬するパストランジスタの階層によって実現されるものとして詳細に説明される。図３では、メモリセルは図１に示すように実現され得る。
上のアーキテクチャはルックアップテーブルの機能性を高めるために後に増強された。Freeman他の米国特許第５，３４３，４０６号は、論理回路の構成後に読出および書込され得るランダムアクセスメモリ（ＲＡＭ）としてルックアップテーブルが作用することを付加的な回路がいかに可能にできるかを説明する。ユーザにデータをメモリセルに書込ませる選択が有効である場合、ユーザのデータをこれらのメモリセルに入力し、メモリセルから読出すための方策がなければならない。この性能は、各二重機能メモリセルにアクセスするための２つの手段、すなわち、チップからの構成ビットストリームを供給するために用いられるものと、ＦＰＧＡの相互接続線から送られる信号を記憶するために動作中に用いられるものとを含めることによって与えられる。図４は、メモリセル７５０が構成中および構成後にプログラムされることを可能とする、米国特許第５，３４３，４０６号に説明されるメモリセルアーキテクチャを示す。構成中、メモリセル７５０は図１のメモリセルをプログラムするためのものと同じプロセスを用いてプログラムされる。
構成後、メモリセル７５０は異なるようにプログラムされる。メモリセル７５０に書込まれるべき値はＦＰＧＡの相互接続構造を介して第２のデータ線７０５に与えられ、次にメモリセルのための対応の書込−ストローブ線ＷＳがパルス化される。このパルスは線７０５上の値をメモリセル７５０へとラッチする。図１からの一連のメモリセルを用いる図２のルックアップテーブルのように、図４からの一連のメモリセルはルックアップテーブルへと組合せ可能である。
図５は同期書込能力を有する４入力ルックアップテーブルを示すブロック図である。クロック信号ＣＫを受取り、イネーブル信号ＷＥを書込み、単一の書込ストローブ信号ＷＳをルックアップテーブルのために作る書込ストローブ発生器５０４がある。値を所望のメモリセル、たとえば７５０5に書込むためには、その値が線Ｄin上に与えらえ、所望のメモリセル７５０5のアドレスがデマルチプレクサ５００の入力線Ｆ０−Ｆ３に与えられる。この値は次に書込ストローブをパルス化することによって所望のメモリセル７５０5へとラッチされる。逆に、異なる所望のメモリセル７５０3に記憶されている値を読出すためには、メモリセル７５０3のアドレスが図２および図３を参照して説明されたように（書込ストローブをパルス化せずに）復号化マルチプレクサ２００の入力線Ｆ０−Ｆ３に与えられる。
図６は同期書込能力を有する２入力ルックアップテーブルの概略図である。図６は４つのメモリセル７５０1から７５０4を含む。デマルチプレクサ５００およびマルチプレクサ２００の詳細が図６に示される。
他の論理アレイ装置の実現例および動作は、Xilinx, Inc., ２１００ Logic Drive, San Jose, California ９５１２４から入手可能か「プログラマブル論理データブック」（″The Programmable Logic Data Book″）、第４−１頁から第４−３７４頁、著作権１９９６年Xilinxに説明される。論理アレイ装置においてシフトレジスタを設けることも公知である。米国特許第５，２９１，０７９号において、Goettingは図１８Ａで、ＦＰＧＡを構成するために構成メモリビットをＦＰＧＡのメモリセルへとシフトさせるためのシフトレジスタ構成を示す。さらに、Kaplinskyの米国特許第４，９６７，１０７号から、１つ以上の論理エキスパンダモジュールのための入力信号を与えるライン間の接続を制御するためにシフトレジスタを用いることも公知である。また、Freemanの米国再発行特許第３４，３６３号によって説明されるように、シフトレジスタを介してルックアップテーブルのメモリセルをロードすることも公知である。特にFreemanの図５の説明を参照されたい。
発明の概要
この発明は、論理素子がシフトレジスタおよび組合せ論理関数の任意の１つをルックアップテーブルを用いて実現できるように、構成可能な論理素子をプログラムするための手段および方法を提供する。ある実施例では、この発明はこの同じ論理素子におけるランダムアクセスメモリの実現にさらに備える。ルックアップテーブルは、第１のメモリセルの出力が同じルックアップテーブルの第２のメモリセルの入力として構成可能であるように直列に接続される複数のメモリセルを含む。さらに、複数の論理素子のシフトレジスタを直列に接続することによって、より小さいシフトレジスタからより大きいシフトレジスタを作ることができる。これまでのアーキテクチャは直列に接続されたｎ個のフリップフロップからｎビットのシフトレジスタを作るものであり、それによって、得られる性能は平凡でありながら相互配線資源および論理が浪費される。
あるモードでは、ルックアップテーブル値を記憶するメモリセルがシフトチェーンにおけるレジスタとして用いられる。論理素子がシフトレジスタモードであるとき、データイン値が第１のセルへとシフトされ、各メモリセルにおける値が次のセルにシフトされる。論理素子がランダムアクセスメモリモードであるとき、データイン値は上述のようにＦ３−Ｆ０によってアドレス指定されるセルに書込まれる。論理素子が純粋なルックアップテーブルモードであるとき、構成後には値を書込むことができず、論理素子は構成中にロードされた関数を発生し続ける。
【図面の簡単な説明】
図１は、メモリセルの値が構成中に記憶される、ＦＰＧＡ内のルックアップテーブルにおいて用いられる第１の先行技術のメモリセルアーキテクチャの概略図である。
図２は、１６対１復号化マルチプレクサと一連の１６個のメモリセルとによって実現される先行技術のプログラマブル４入力ルックアップテーブルのブロック図である。
図３は、パスゲートの階層によって実現される先行技術の２入力ルックアップテーブルおよび復号化マルチプレクサの拡大概略図である。
図４は、メモリセルの値が構成時に記憶され、構成後に動的に読出可能および書込可能であり続ける、ルックアップテーブルにおいて用いられる第２の先行技術のメモリセルアーキテクチャの概略図である。
図５は、１６×１ランダムアクセスメモリまたは４入力ルックアップテーブルのいずれかを実現するよう構成可能な先行技術の論理素子のブロック図である。
図６は、４ビットランダムアクセスメモリまたは２入力ルックアップテーブルのいずれかを実現するよう構成可能な先行技術の論理素子の概略図である。
図７は、シフトレジスタまたはルックアップテーブルとして代替的に構成され得る、この発明に従うメモリセルアーキテクチャの概略図である。
図７Ａおよび図７Ｂは、Ｐｈｉ２がアサートされるときにビット値を先行するメモリセルから現メモリセルへとシフトさせる非重複信号Ｐｈｉ１およびＰｈｉ２を示す波形図である。
図８は、４入力ルックアップテーブルまたは１６ビットシフトレジスタのいずれかを実現できる、この発明に従う論理素子のブロック図である。
図９は、２入力ルックアップテーブルまたは４ビットシフトレジスタのいずれかを実現できる、この発明に従う論理素子の回路図であって、論理素子のモードは制御論理の動作を制御し、構成メモリに記憶され得る。
図１０は、ルックアップテーブル、シフトレジスタまたはＲＡＭの任意のものを実現するためのメモリセルの概略図である。
図１１は、４入力ルックアップテーブル、１６ビットシフトレジスタおよび１６ビットランダムアクセスメモリの任意のものを実現するよう構成可能な論理素子のブロック図である。
図１２は、２入力ルックアップテーブル、４ビットシフトレジスタおよび４ビットランダムアクセスメモリの任意のものを実現するよう構成可能な、この発明に従う論理素子の概略図である。
図１３Ａ−図１３Ｈからなる図１３は、シフトレジスタモードで構成されたときの論理素子の動作の波形図を示す。
図１４は、シフトレジスタおよびフリップフロップの両方を含む論理素子のブロック図である。
図１５は、ＦＰＧＡのブロック図である。
図１６は、ＦＰＧＡ相互接続構造を示す。
詳細な説明
論理ゲート密度の増加により、シフトレジスタは今やユーザによって構成可能なより大きい集積回路論理アレイの１素子として実現可能である。この発明の第１の実施例では、論理素子はｎビットシフトレジスタおよび（ｌｏｇ2ｎ）入力ルックアップテーブルの両方を実現するよう構成可能である。図７はこの発明に従う論理素子アーキテクチャのメモリセル７７０2の概略図を示し、このアーキテクチャは、シフトレジスタモードに構成されると、有利なことに値を先行するメモリセル７７０1からメモリセル７７０2へとシフトできるようにする。メモリセル７７０2はパストランジスタ７０６を含む。構成値は、構成値をデータ線７０４に与えながらトランジスタ７０６の構成制御線７０２をパルス化することによってメモリセル７７０2へと書込まれる。
メモリセル７７０2の出力は、パストランジスタ７２０2、インバータ７２６2、および図７には示されない次のパストランジスタ７０８3によって次のメモリセル７７０3の入力にプログラム可能に接続される。図７Ａおよび図７Ｂのタイミング図で示すように、各サイクルのほとんどの間、出力制御線７２４上のクロック信号Ｐｈｉ１はハイであり続け、したがってメモリセル７７０2の出力信号７３４2は、インバータ７２６2を介して、次のメモリセル７７０3につながるシフト入力線７１４2に与えられる。Ｐｈｉ１が時刻ｔ１でローになるとパストランジスタ７２０2はターンオフされる。インバータ７２６2はメモリセル７７０2によってこれまでにアサートされた論理レベルを出力信号として保持することを短期間にわたって続ける。このように、トランジスタ７２０2およびインバータ７２６2の組合せが一時的なラッチとなる。第２のクロック信号Ｐｈｉ２が時刻ｔ２で入力制御線７１６上にアサートされると、インバータ７０１はメモリセル７７０2のインバータ７０３の出力と前のメモリセル７７０1のインバータ７２６1の出力との両方を受ける。各インバータ７２６は値が隣接するメモリセル間をシフトされ得るようにインバータ７０３のパワーを上まわるように設計される。したがって、メモリセル７７０2に記憶されている現在の値が前のメモリセル７７０1の出力によって重ね書きされる。Ｐｈｉ２が時刻ｔ３でローに戻ると、メモリセル７７０2は再びラッチされ、その現在の値をシフト入力線７１４1における変化と無関係に保持する。時刻ｔ４で、Ｐｈｉ１がハイとなり、したがって、新しい値をインバータ７２６2に与える。このように、１クロックサイクルでビットが１セルをシフトさせる。対照的に、Ｐｈｉ１およびＰｈｉ２が誤って重複すれば、各メモリセル７７０の出力７３４の値が先行するメモリセル７７０1からメモリセル７７０2を介して次のメモリセル７７０3に伝搬するであろう。これによって望ましい単一ビットシフトが起こらないであろう。しかしながら、図７Ａおよび図７Ｂに示すように重複しない２位相のクロックを用いることによって、メモリセルはＰｈｉ１およびＰｈｉ２の１サイクルにつき１ビットをシフトさせる。
図８はこの発明の第１の実施例に従う１６ビットシフトレジスタおよび４入力ルックアップテーブルを実現する論理素子を示す。簡略化のため、図８においては図７のメモリセル７７０内の構造が明確には描かれていない。
図８では、シフトレジスタモードにあると、メモリの第１のメモリセル７７０1が初期値でプログラムされる。メモリセルの値は、第１のメモリセル７７０1のＤｉｎ端子に新しい値を与え、クロック線ＣＫをストローブすることによって新しい値を重ね書きされ得る。ＣＫのストロービングは次に図７Ａおよび図７Ｂの２位相クロックサイクルにたよる。データが同期してシフトレジスタ内で左から右へと、すなわち、最初のメモリセル７００1から最後のメモリセル７００16まで移動させられるにつれ、論理素子は各クロックサイクルでごとに関数が変化するがルックアップテーブルとして作用し続けることができる。先行技術のルックアップテーブルにおけるように、復号化マルチプレクサ２００はユーザ入力、すなわち、Ｆ０−Ｆ３によって選択されるメモリセルの内容を出力線Ｘ上に出力する。
図９は２入力ルックアップテーブルまたは４ビットシフトレジスタを実現するための構造を示し、マルチプレクサ２００およびメモリセル７７０1から７７０4の内部構造を示す。図９は紙面上で図８と同じ方向に向けられ、こうしてルックアップテーブル／シフトレジスタ実施例を構成する素子間の関係を理解するのに役立つ。
この発明の第２の実施例では、論理素子がｎビットシフトレジスタ、ｎビットランダムアクセスメモリおよび（ｌｏｇ2ｎ）入力ルックアップテーブルを実現するよう構成可能である。図１０−１２はこの実施例を示す。図１０はメモリセルを示す。図１０のメモリセルは３つの異なるソースからロードされ得る。構成中、メモリセル７９０2は、構成データを線７０４に与え、トランジスタ７０６の制御線７０２をストローブすることによってロードされる。メモリセル７９０2はシフトレジスタモードにあると上述のようにトランジスタ７０８を介してロードされる。メモリセル７９０2はＲＡＭモードにあると線７０５2上のデマルチプレクサ５００を介してロードされる。書込ストローブ線ＷＳはパルス化され、トランジスタ７０７をターンオンし、こうしてデータ信号をノード７３０に与える。
図１１は、この発明の第２の実施例に従う、１６ビットシフトレジスタ、１６ビットランダムアクセスメモリおよび４入力ルックアップテーブルの任意の１つを実現する論理素子を示す。この実施例では、ルックアップテーブルのメモリセル、たとえば７９０5が上述のように構成中に初期値でプログラムされる。その後、初期値は論理素子のモードであるシフトまたはＲＡＭに依存して２つの方法のいずれかで交換され得る。
メモリセル７９０を含むルックアップテーブルがＲＡＭモードで用いられていると、各メモリセル７９０はそのデータ入力をＲＡＭ入力線７０５で受ける。いずれかのメモリセル７９０に書込むため、書込ストローブ線ＷＳがパルス化し、それによってＤｉｎの値をデマルチプレクサ５００を介してアドレス指定されたメモリセルへと入力線７３０により与える。
これらのモードの各々における論理素子の動作は制御論理１０００によって制御される。論理素子がＲＡＭモード、シフトモードまたはそれ以外であることを特定する制御ビットが制御論理ユニット１０００に入力される。制御論理ユニット１０００はまたユーザクロック信号および書込イネーブル信号を受ける。これらの入力から、制御論理ユニット１０００はＰｈｉ１、Ｐｈｉ２および書込ストローブ信号ＷＳを出力して、メモリセル間でデータをシフトさせるか、特定のメモリセルに書込を行なうか、またはメモリセルデータに手をつけないでおく。図８におけるようにシフトレジスタモードにあると、データは同期してシフトレジスタ内の左から右に、すなわち、最初のメモリセル７９０1から最後のメモリセル７９０16へと上述のように、ＣＫがストローブされるときの２位相クロックサイクルにたよることによって移動される。他方、論理素子がランダムアクセスメモリ（ＲＡＭ）として構成されると、アドレス線Ｆ０−Ｆ３は、それぞれデマルチプレクサ５００および復号化マルチプレクサ２００を用いることによって、書込および読出されるべきメモリセル（７９０1から７９０16）の１つを選択する。シフトレジスタモードにあると、最初のメモリセル７９０1は線Ｄｉｎに与えられた信号をその入力として受ける。ＲＡＭモードにあると、メモリセル７９０1はデマルチプレクサ５００から線７０５1上の入力信号をで受ける。
ＲＡＭモードでは、所与のメモリセル、たとえば７００5に書込むためには書込イネーブル線ＷＥが活性状態でなければならない。ユーザクロック信号ＣＫが活性状態のＷＥ信号と関連してアサートされると、制御論理ユニット１０００が書込ストローブＷＳを発生する。書込ストローブＷＳがハイであると、デマルチプレクサ５００のアドレス線Ｆ０−Ｆ３によってアドレス指定されたメモリセル７００5がデータ入力線Ｄｉｎから値を受ける。この値はメモリセル７００5の前の内容に重ね書きする。他のどのメモリセルもＤｉｎに与えられた値を受けない。なぜなら、それらはアドレス指定されておらず、したがってデマルチプレクサ５００からの高インピーダンス接続によってＤｉｎから分離されているためである。
図１２はこの発明の第２の実施例に従う論理素子をより詳細に示す概略図である。集合的に、デマルチプレクサ５５０、復号化マルチプレクサ２００、パストランジスタ７０８および７２０、インバータ７２６、ならびにＲＡＭモードパストランジスタ７０７が相互接続ネットワークを形成し、メモリセル（７９０1から７９０4）および制御論理ユニット１０００と組合せられて第２の実施例に従う論理素子を実現する。第２の実施例の論理素子がシフトレジスタとして構成されなければ、論理素子はランダムアクセスメモリまたはルックアップテーブルとして作用する。いずれかの非シフトレジスタモードでは、Ｐｈｉ２はローレベルに保たれてパストランジスタ７０８を不活性化し、それによってあるメモリセル７９０iからのデータが次のメモリセル７９０i+1に影響を及ぼさないようにする。また、非シフトレジスタモードでは、Ｐｈｉ１がハイ論理レベルに保たれ、それによってメモリセル（７９０1から７９０4）の出力を復号化マルチプレクサ２００に与える。これまでどおり、論理素子の出力はユーザ入力Ｆ０およびＦ１に従って復号化マルチプレクサ２００により選択される。
図１２の論理素子がシフトレジスタとして構成されると、ＲＡＭモードパストランジスタ７０７はターンオフされる。なぜなら、ＷＳがローに保持され、メモリセルをデマルチプレクサ５００の出力から分離するためである。メモリセル７９０1はＤｉｎにトランジスタ７０８1を介してプログラム可能に接続される。値をシフトさせるために、制御論理ユニット１０００は制御信号Ｐｈｉ１およびＰｈｉ２を生成し、これのトリガは、書込イネーブル信号が活性状態である間に、制御論理ユニット１０００に与えられるユーザクロック信号ＣＫの立上がり端縁によって、値があるメモリセルから次のメモリセルに、すなわち、メモリセル７９０i-1からメモリセル７９０iに、またメモリセル７９０iからメモリセル７９０i+1にシフトされるように行われる。制御論理ユニット１００がユーザクロック信号の立上がり端縁を受けると、制御論理ユニット１００は初めにＰｈｉ１をローにし、次にＰｈｉ２をメモリセル（７９０1から７９０4）の内容を重ね書きするのに十分であるほど長くパルス化し、最後にＰｈｉ２が立下がった後にＰｈｉ１を再びアサートする。極めて低いクロック周波数のためにはＰｈｉ２がパルスだけであることが重要であり、これはＰｈｉ２がオンである間はＰｈｉ１がオフでなければならないからである。これを達成するために、制御論理は、Ｐｈｉ１およびＰｈｉ２がユーザクロック信号１００８の立下がり端縁に頼らず、独自に時間を定められるように設計される。
図１３Ａ−図１３Ｈからなる図１３は図１２の論理素子の動作の波形図である。図１２の論理素子がシフトレジスタモードに構成されると、Ｆ１を１に、またＦ０を０に設定することによってこれは３ビットシフトレジスタとして機能する。図１３Ｅに示すように、３ビットシフトレジスタへの入力Ｄｉｎががこの例の間中ハイ論理レベルに連続して保たれる。最初のユーザクロックパルス１１０８の立上がり端縁１１０４を受けると、制御論理ユニット１０００は図１３Ｇに示すようにＰｈｉ１をロー論理レベルに引下げてパストランジスタ７２０（図１２）を不活性化する。メモリセル（７９０1から７９０4）の出力７３４1から７３４4をインバータ７２６1から７２６4の入力から一時的に切り離させた後、制御論理ユニット１０００はＰｈｉ２をアサートし、これはインバータ７２６1から７２６4の出力をその対応の次のメモリセル、すなわち、メモリセル７９０2から７９０4に伝搬する。Ｐｈｉ２がアサートされると、Ｄｉｎ上の値が最初のメモリセル７９０1に書込まれる。非重複Ｐｈｉ２パルスは図１３Ｆに示すとおりである。図１３Ｄに示すように、（７３４1に対応する）最初のメモリセル７９０1に記憶された値がＰｈｉ２のアサートのすぐ後に変化する。この変化は参照番号１１１２によって示される。最初のメモリセル７９０1の出力７３４1の新しい値はＰｈｉ１が一時的に不活性化されるために（７３４2に対応する）２番目のメモリセル７９０2に影響を与えない。メモリセル（７９０1から７９０4）がその新しい状態に達するのに十分であるほど長くＰｈｉ２をアサートした後、Ｐｈｉ２は立下げられ、それによってデータ値がラッチされる。Ｐｈｉ２が立下げられた後にのみ制御論理ユニット１０００がＰｈｉ１を立上げる。
Ｐｈｉ１の立上がり端縁を受けると、出力７３４1から７３４4の値は再びパストランジスタ７２０1から７２０4を通過する。参照番号１１１６は、３ビットシフトレジスタの出力Ｘにおける変化がＰｈｉ１の立上がり端縁と同期していることを示す。図１３Ｇおよび図１３Ｈに示すように、Ｐｈｉ１の再アサートとユーザクロックの立下げとは無関係であり、したがって、論理設計者はこれら２つの端縁間の正確なタイミングの関係に依存する必要はない。もちろん、Ｐｈｉ１はインバータ７２６1から７２６4の入力が無効な電圧に浮動するまでに再アサートされなければならない。
図１４は論理素子１２００およびフリップフロップ１２０４の両方を含む論理素子のブロック図である。フリップフロップの目的は論理素子１２００の出力のクロックから出力までの遅延を向上させることである。これは、関数発生器がXilinxの論理素子ではフリップフロップと伝統的に対にされてきたのでXilinxのＦＰＧＡでは簡単で効率的である。さらに、ｎビットの同期シフトレジスタが必要とされる場合、論理素子は、シフトレジスタ１２００が（ｎ−１）ビットシフトレジスタであり、かつフリップフロップ１２０４がｎビットシフトレジスタの最後のレジスタであるように構成され得る。この代替的な態様で構成されると、最終ビットのＸＱはＰｈｉ１の立上がり端縁１１１６ではなくユーザクロックパルス１１０８の立上がり端縁１１０４で有効である。これは全体のｎビットシフトレジスタのためにより速いクロックから出力までの時間を与える。
ＸＱをＤｉｎに戻すように論理素子を構成することによって、この発明は循環シフトを行なうこともできる。
上述のように（図１３Ａ−１３Ｈ）、ルックアップテーブルにおけるメモリセル数よりも少ない段を有するシフトレジスタが最終ビット以外のビットを出力端子Ｘに向けることによって形成され得る。ルックアップテーブルも同様に、単一のルックアップテーブルが支えるよりも大きいサイズのシフトレジスタを生むために縦続接続され得る。たとえば、２つの論理素子を縦続接続することによって１６ビットルックアップテーブルからなる論理アレイにおいて２０ビットシフトレジスタを生じることが可能である。第１の完全な１６ビットシフトレジスタ１２００と第２の完全な１６ビットシフトレジスタ１２００とが組合わさって３２ビットシフトレジスタを生む。このように、２０ビットシフトレジスタを得るためには、第１の論理素子のユーザ入力線Ｆ０−Ｆ３は１１１１に設定され、第２の論理素子のユーザ入力線Ｆ０−Ｆ３は００１１に設定され、すなわち、第２の１６ビットシフトレジスタ１２００は、２０ビットシフトレジスタの最後の出力である、第４のメモリセル７９０4出力を渡すようにプログラムされる。さらに、縦続接続されたシフトレジスタのクロックから出力までの遅延を向上させるために、代替的な実施例は１１１１にアドレス指定された第１の完全な１６ビットシフトレジスタ１２００と、００１０にアドレス指定された第２の完全な１６ビットシフトレジスタ１２００と、フリップフロップ１２０４とを用いる。第２のシフトレジスタの出力Ｘは第２のシフトレジスタのフリップフロップ１２０４の入力を与える。望ましければ、フリップフロップ１２０４は論理素子内でシフトされ得る数ビットを拡大させるために用いられてもよい。両方の１６ビットシフトレジスタ１２００とそれらのフリップフロップ１２０４を十分に利用することによって、１７ビット、３４ビット、５１ビット等の縦続接続されたシフトレジスタが構成可能である。
新規なシフトレジスタ論理素子は一般に、各々相互接続構造および論理素子の一部を含む論理ブロック１０１を有する図１５のＦＰＧＡのようなＦＰＧＡにおいて実現される。図１５のＦＰＧＡについては、Tavana他の出願連続番号第０８／６１８，４４５号においてさらに説明される。図１６は米国再発行特許３４，３６３号に例示される相互接続構造を示す。（９つの論理素子として示される）複数の構成可能な論理素子が、論理素子と入力／出力パッドとからのリードを含むリードのアレイと、所望の論理関数を生じるために選択されたリード間に形成されるプログラマブル相互接続とともに、集積回路チップ上に形成される。
図７および図１０はラッチのわずか１つのノードから制御されるメモリセルを示すが、この発明は、いくつかの制御信号が反転されてラッチの両方のノードに与えられるか、異なる制御信号がラッチの異なるノードに与えられるメモリセルでも用いられ得る。さらに、図１０では３つのトランジスタ７０６、７０８および７０７が線７０４、７１４および７０５上の入力信号を受けるマルチプレクサとして実現され得る。そしてトランジスタ７０６、７０８、７０７および７２０は伝送ゲートによって交換され得る。特定のマルチプレクサおよびデマルチプレクサの実現例が示されるが、この発明は他の実現例も使用可能である。もちろん、Ｐｈｉ１、Ｐｈｉ２およびＷＳのような信号を発生するための種々の構造および方法がこの発明で用いられ得る。また、上の実施例は複数のメモリセルから１つの信号を選択するための単一の出力端子を有する単一のマルチプレクサを示すが、他の実施例はそこから出力信号を与えるための２つ以上のメモリセルを選択してもよい。
この発明の数多くの変更および変化が上の教示を考慮して可能である。したがって、この発明は特に上述したものと異なるように実行され得ることが添付の請求の範囲の範疇内で理解されるべきである。
【図１】
0003871718.tif 000002
【図３】
0003871718.tif 000003
【図２】
0003871718.tif 000004
【図４】
0003871718.tif 000005
【図６】
0003871718.tif 000006
【図５】
0003871718.tif 000007
【図７】
0003871718.tif 000008
【図９】
0003871718.tif 000009
【図７Ａ−Ｂ】
0003871718.tif 000010
【図８】
0003871718.tif 000011
【図１０】
0003871718.tif 000012
【図１１】
0003871718.tif 000013
【図１２】
0003871718.tif 000014
【図１３】
0003871718.tif 000015
【図１４】
0003871718.tif 000016
【図１５】
0003871718.tif 000017
【図１６】
0003871718.tif 000018