(57)【特許請求の範囲】
【請求項１】
プログラマブル論理デバイスの中の回路配置融通性ある論理ブロックであって、
前記プログラマブル論理デバイスの中で第１の関数を生ずるための第１の組のメモリセルを含む第１の関数発生器と、
前記プログラマブル論理デバイスの中で第２の関数を生ずるための第２の組のメモリセルを含む第２の関数発生器と、
前記第１の関数発生器および前記第２の関数発生器に結合した書込みストローブ論理回路と
を含み、
前記書込みストローブ論理回路が前記第１の組のメモリセルのプログラミングをエミュレートする第１のダミーメモリセル対と、前記第２の組のメモリセルのプログラミングをエミュレートする第２のダミーメモリセル対とを含む
回路配置融通性ある論理ブロック。
【請求項２】
前記書込みストローブ論理回路が前記第１の組のメモリセルにおける信号遅延をエミュレートする第１の組のトランジスタと、第２の組のメモリセルにおける信号遅延をエミュレートする第２の組のトランジスタとを含む請求項１記載の回路配置融通性ある論理ブロック。
【請求項３】
前記書込みストローブ論理回路が前記第１の関数発生器に結合されたインバータ内のｎチャンネルトランジスタをエミュレートするための第１のｎチャンネルトランジスタを含む請求項２記載の回路配置融通性ある論理ブロック。
【請求項４】
前記書込みストローブ論理回路が前記第１の関数発生器に結合されたインバータ内のｐチャンネルトランジスタをエミュレートするための第１のｐチャンネルトランジスタを含む請求項２記載の回路配置融通性ある論理ブロック。
【請求項５】
前記書込みストローブ論理回路が、システムクロック信号を受けるとともにそのシステムクロック信号の前縁および後縁のどちらで前記書込みストローブ論理回路がトリガされたかを判定するクロック回路を含む請求項２記載の回路配置融通性ある論理ブロック。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はランダムアクセスメモリ（ＲＡＭ）として用いられる関数発生器に関し、とくに、同期デュアルポートＲＡＭ機能を有する関数発生器に関する。
【０００２】
【発明が解決しようとする課題】
スタティックランダムアクセスメモリ（以下ＲＡＭという）は当業者に周知である。ＲＡＭは二つの基本的動作モード、すなわち読出しモードおよび書込みモードを有する。読出しモードでは、書込みイネーブル入力信号は不活性であって、ＲＡＭは固定記憶装置（ＲＯＭ）として動作し、ＲＡＭに記憶されたデータは変更できない。そのモードでは、アドレス入力の特定したＲＡＭセル位置に記憶されていたデータが出力信号としてとり出される。
【０００３】
書込みモードでは、書込みイネーブル入力信号は活性であって、アドレス線で指定されたＲＡＭセル位置へのデータの書込みを可能にする。しかし、この動作では、データの書込みを特定のＲＡＭセル位置のみに限って行いそれ以外のセル位置には影響が及ばないようにするためにタイミングが重要である。図１を参照してより詳しく述べると、書込みサイクル１０５はシステムクロック信号１０１の後縁で始動する。活性（すなわち論理「１」）の書込みイネーブル（ＷＥ）信号１０４はアドレス信号１０２の安定化から少し経過するまで送出しない。活性のＷＥ信号１０４は少なくとも所定の最小時間長１０６の期間のあいだは持続しなければならない。また、アドレス信号１０２は活性のＷＥ信号１０４の後縁までのあいだ、できればその後縁から所定の保持時間が経過するまでのあいだは一定値を持続しなければならない。データ信号１０３も、活性のＷＥ信号１０４の後縁の前の特定の期間、および活性のＷＥ信号１０４後縁の後の所定の期間にわたり一定でなければならない。これらの要件のいずれかが満たされない場合は、データが所望のＲＡＭセル位置に正しく書き込まれなかったり、望ましくない位置に書き込まれたりする。
【０００４】
図２は二つの関数発生器２０１および２０２（通常それぞれＦおよびＧ関数発生器ともいう）を含む回路配置融通性ある論理ブロック（ＣＬＢ）の一部を示す。関数発生器は通常複数のＲＡＭセルから成る参照用テーブル（ＬＵＴ）を用いて通常実動化される。関数発生器にＲＡＭを用いることは１９９３年８月３１日付の米国再発行特許第ＲＥ３４，３６３号により詳細に説明してあるので、同特許番号をここに引用して同特許明細書全部をこの明細書に組み入れる。図２に示した実施例において、各関数発生器は１６×１  ＬＵＴを含む。１６個の記憶されたＲＡＭ値のどれを出力線Ｆ′に送出するかを四つのＣＬＢ入力信号Ｆ１−Ｆ４で定める。同様に、１６個の記憶されたＲＡＭ値のどれを出力線Ｇ′に送出するかを四つのＣＬＢ入力信号Ｇ１−Ｇ４で定める。
【０００５】
制御信号Ｃ１−Ｃ４の各々は四つの論理信号の任意の一つを発生できる。図２において、これら四つの論理信号はイネーブルクロック（ＥＣ）、書込みイネーブル（ＷＥ）、第１のデータ信号（ＤＩＮ）、および第２のデータ信号（Ｈ１）を含む。ＷＥ信号はＡＮＤゲート２０９および２１１に供給される。ＷＥ信号がロウ（すなわち不活性）であれば、関数発生器２０１および２０２は通常の関数発生器（すなわちＲＯＭ機能だけを有する）として動作する。しかし、ＷＥ信号がハイ（すなわち活性）になると、関数発生器２０１および２０２は他の前提条件を満たすものとして書込みを受ける。例えば、メモリセル２０３および２０４は関数発生器２０１および２０２の片方または両方が活性のＷＥ信号を受けなかったかどうかを判定する。例えば、メモリセル２０４がロウの論理の信号を記憶している場合は、関数発生器２０１は書込みアクセスをディスエーブルされ、単なる固定記憶装置として動作する。すなわち、メモリセル２０３および２０４はＲＡＭ書込み解除のための付加的手段となる。しかし、上述の一つのイネーブル条件が両方とも満たされても、メモリセル２０５およびデータ信号Ｈ１が関数発生器２０１および２０２の一方のＲＡＭ書込み機能をディスエーブルし得る。
【０００６】
メモリセル２０５は二つの機能を発揮する。第１に、メモリセル２０５に記憶された所定の論理状態がマルチプレクサ２０７を制御して、関数発生器２０１および２０２を二つのデータ入力および二つのデータ出力付きの二つの１６×１ＲＡＭ（すなわち関数発生器２０２がデータ信号Ｈ１を受け、関数発生器２０１がデータ信号ＤＩＮを受ける）に回路配置するか、一つのデータ入力付きの一つの３２×１  ＲＡＭ（すなわち関数発生器２０１および２０２の両方がデータ信号ＤＩＮを受ける）に回路配置するかを決定する。なお、その３２×１  ＲＡＭの出力信号をどの出力線（線Ｆ′またはＧ′）から供給するかを定めるために、付加回路、すなわちマルチプレクサ（図示してない）を用いる。
【０００７】
第２に、上記所定の論理状態はＯＲゲート２０８および２１０にも供給する。その所定の論理状態がハイの場合（信号ＷＥがハイであり、メモリセル２０３／２０４が論理ハイの信号を記憶しているものとする）、関数発生器２０１および２０２のＲＡＭ書込み機能がイネーブルされる。この回路配置において、関数発生器２０２はデータＨ１で書き込まれ、関数発生器２０１はデータ信号ＤＩＮで書き込まれる（１６×２回路配置）。一方、メモリセル２０５の上記論理状態がロウの場合は、データ信号Ｈ１は関数発生器２０１および２０２のどちらにＲＡＭ書込み機能を生じさせるかを定める。すなわち、データ信号Ｈ１は３２×１
ＲＡＭへのもう一つのアドレス信号として作用する。
【０００８】
図１および２を参照すると、システムクロック信号１０１のハイの部分を書込みイネーブル信号ＷＥの発生に用いた場合であってシステムクロック信号１０１がロウになった場合、書込みイネーブル信号ＷＥも必らずロウになる。また、次のサイクルのための新しいアドレスおよびデータ信号も発生しなければならない。しかし、これらの動作に係わる動作速度は変動する。例えば、新しいアドレスの発生の速度が書込みイネーブル信号ＷＥをオフにする速度よりも大きい場合はシステムのタイミング要件が満たされなくなる。前述のとおり、タイミング要件のいずれかが満たされない場合は、データが所望のＲＡＭ位置に正しく書き込まれなかったり、誤まった位置に書き込まれたりする。
【０００９】
データ信号の書込みを特定のセル位置だけに絞って行いそれ以外のセル位置への悪影響を防ぐために、通常は次の書込みサイクル１０５の開始、すなわち次のアドレスの発生まで１クロックサイクルだけ待たなければならない。ここに参照してこの明細書に組み入れる１９９４年版ジリンクス・データブック（Ｘｉｌｉｎｘ  Ｄａｔａ  Ｂｏｏｋ）の第８−１３９頁乃至第８−１４７頁には上記問題への一つの解決方法が記載してある。その解決方法においては、大域クロックを書込みイネーブル信号として用いる。しかし、その手法においては、各サイクルはいずれも書込みサイクルであるので、書込みサイクルが不要な場合に古いデータの書込みを行うには読出し出力信号（例えば、関数発生器がＲＯＭとして動作する場合の関数発生器２０１または２０２の出力信号）をデータ入力端子に帰還しなければならない。この帰還動作のために、フリップフロップおよびマルチプレクサが必要となり、所要論理が大幅に増加する。また、アドレスがクロック後縁で生ずるので、アドレスの発生および経路付与、およびデータセットアップ時間の受入れに使える時間はクロックロウの期間だけである。すなわち、上記解決方法は動作の信頼性を確保するために集積密度と動作速度とを犠牲にしている。したがって、所要論理の形成のためのコストの上昇を伴うことなく上述の時間遅延を解消する論理回路が必要とされている。
【００１０】
【課題を解決するための手段】
この発明の同期ＲＡＭ機能によると、書込みストローブ論理によりクロック後縁直後の全自動書込み動作を生じさせ、従来技術における書込みイネーブル信号の発生および分配の際の信号経路遅延に起因する望ましくない保持時間の必要性を解消する。すなわち、この発明の一つの実施例においては、クロック信号の一つの縁部で複数の関数発生器に係わるアドレス信号およびデータ信号のラッチ動作をトリガする。また、同じ縁部でユーザ供給の書込みイネーブル信号のサンプリングをトリガする。
【００１１】
書込みイネーブル信号が活性の場合、書込みストローブ論理は関数発生器の各々へのワンショット書込みストローブ信号を発生し、上記ラッチしたアドレスの指定するメモリセル（ＲＡＭ）に上記ラッチしたデータをストローブ信号によって書き込む。書込みストローブ論理は各書込みストローブ信号につき一対ずつの複数のダミーメモリセルをモニタすることにより、書込みストローブ信号の幅がメモリセルへの書込みに十分な大きさに保たれるようにする。書込みストローブ信号が活性でない場合は、上記対の一方のダミーメモリセルを０に初期設定し、その対の他方のダミーメモリセルを１に初期設定する。書込みストローブ信号が活性になったあと、これらダミーメモリセルへの書込みを上記設定とそれぞれ逆の状態になるように行う。ダミーメモリセル内のデータが逆の状態に変わると書込みストローブ信号は終了する。新たな書込み動作が次のクロック縁部でトリガされる。この発明の書込みストローブ論理は、動作速度の大幅な上昇を達成する一方、アドレス信号および出力信号のレジスタのための付加的フリップフロップまたはマルチプレクサの必要性を解消することによって所要の論理の形成のための費用を低下させる。
【００１２】
また、この発明はデュアルポート回路配置、すなわち第１の関数発生器へのアドレスを第１の関数発生器の読出し書込みアドレス端子と第２の関数発生器の書込みアドレス端子とに供給したデュアルポート回路配置を提供する。第２の関数発生器へのアドレスは第２の関数発生器の読出しアドレスである。この回路配置によって、第２の関数発生器における同時的で独立の読出し書込み動作が可能になる。
【００１３】
【発明の実施の形態】
図３はデュアルポートＲＡＭを有する関数発生器３０１を含む回路配置融通性ある論理ブロック（ＣＬＢ）の一部を示す。この図において、アドレスデコーダ３０５Ａは関数発生器３０１の読出しアドレス端子およびマルチプレクサ３０６Ａに信号を供給する。同様に、アドレスデコーダ３０５Ｂは関数発生器３０２の読出しアドレス端子およびマルチプレクサ３０６Ａに信号を供給する。マルチプレクサ３０６Ａは出力信号をラッチ３０４Ａ、すなわち透過状態（通常は論理１ラッチイネーブル（ＬＥ）信号を受けてその状態に入る）で上記信号を関数発生器３０１の書込みアドレス端子に供給するラッチ３０４ＡのＤ入力端子に供給する。
【００１４】
図６Ａおよび図６Ｂはマルチプレクサ３０６Ａ、アドレスデコーダ３０５Ａ、ラッチ３０４Ａ、および関数発生器３０１をより詳細に示す。この実施例においては、ラッチ３０４Ａはパストランジスタ、すなわち信号をインバータ３１２のゲート容量に一時記憶する（ただしロウのラッチイネーブル信号ＬＥが送出されている）パストランジスタを用いて形成する。なお、ラッチ３０４Ａには多数の変形が可能である。例えば一つの実施例では、ラッチはスタティックラッチとして実動化する。
【００１５】
関数発生器３０１は書込み動作中メモリセルのバーＱ端子がアクセスされるように回路配置される。しかし、標準的な読出し動作の期間中はメモリセルのＱ端子に記憶に記憶された信号がアクセスされる。したがって、バーＱ出力信号を確実にするためインバータ３１３が備えてある。
図３に戻ると、デュアルポートモードは、論理１制御信号をマルチプレクサ３０６Ａに供給しそれによってアドレスデコーダ３０５Ａのアドレス信号でなくアドレスデコーダ３０５Ｂのアドレス信号をラッチ３０４Ａに転送するメモリセル３０８によってイネーブルされる。なお、同期ＲＡＭモード（以下に詳述）が選択されなければ、ラッチイネーブル信号ＬＥはハイとなり、ラッチ３０４は確実に透過状態になる。
【００１６】
デュアルポートモードが選択された場合は、関数発生器３０１の書込み位置が入力信号Ｆ１−Ｆ４からデコードされ、読出し位置が入力信号Ｇ１−Ｇ４からデコードされる。したがって、関数発生器３０１は互いに独立で非同期の読出しおよび書込みアドレスを有する。このように、入力信号Ｇ１−Ｇ４の指定する所定のＲＡＭセルを同時に読み出すことも、入力信号Ｆ１−Ｆ４の指定するもう一つの所定のＲＡＭセルに書き込むこともユーザには可能である。
【００１７】
メモリセル３０８はデュアルポートモードでは論理１を記憶しているので、ＡＮＤゲート３０７の入力端子の一方には論理０の信号が供給され、このゲートから論理０の出力が供給されるようにする。この論理０の出力信号はマルチプレクサ３０６Ｂを活性化し、データ信号ＤＩＮをラッチ３０４Ｂに転送し、このラッチ３０４Ｂはハイのラッチイネーブル信号ＬＥを受けると（すなわち、透過状態を活性化する）データ信号ＤＩＮを関数発生器３０１のデータ入力端子に転送する。なお、データ信号ＤＩＮはラッチ３０４Ｄにも送られ、このラッチ３０４Ｄはラッチ３０４Ｂと同じラッチイネーブル信号ＬＥでイネーブルされるとデータ信号ＤＩＮを関数発生器３０２のデータ入力端子に転送する。したがって、デュアルポートモードではデータ信号ＤＩＮは関数発生器３０１および３０２の両方に書き込まれる。書込みサイクルではこれら関数発生器の両方にアドレスするのに入力信号Ｆ１−Ｆ４を用いるので、関数発生器３０１のＲＡＭセルは関数発生器３０２のＲＡＭセルの正確なコピーを含む。関数発生器３０２および３０１の読出しは入力信号Ｆ１−Ｆ４およびＧ１−Ｇ４により互いに独立にそれぞれアドレスされる。
【００１８】
非デュアルポートモードではメモリセル３０８は論理０の信号を記憶している。マルチプレクサ３０６Ａの制御入力端子に供給された信号は入力信号Ｇ１−Ｇ４の特定するアドレスをラッチ３０４Ａに転送し、このラッチ３０４Ａの透過状態で、このアドレスはさらに関数発生器３０１の書込みアドレス端子に供給される。なお、このモードでは論理１の信号がＡＮＤゲート３０７に供給されている。すなわち、関数発生器３０１へのデータ信号はメモリセル３０９の記憶している信号に左右される。より詳細に述べると、メモリセル３０９の記憶している信号が論理１の場合はＡＮＤゲート３０７は論理１の制御信号をマルチプレクサ３０６Ｂに出力する。この論理１の信号はマルチプレクサ３０６Ｂを活性化してデータ信号Ｈ１をラッチ３０４Ｂに転送する。この信号も、ハイのラッチイネーブル信号ＬＥが印加されている場合は、関数発生器３０１のデータ端子に供給される。
【００１９】
一方、メモリセル３０９の記憶している信号が論理０であればＡＮＤゲート３０７は論理０の制御信号をマルチプレクサ３０６Ｂに出力する。この論理０の信号はマルチプレクサ３０６Ｂを活性化してデータ信号ＤＩＮをラッチ３０４Ｂに転送する。信号ＤＩＮは関数発生器３０１がハイのラッチイネーブル信号ＬＥを受けると発生器３０１のデータ端子に供給される。すなわち、非デュアルポートモードでは、関数発生器３０１および３０２のＲＡＭセルを二つの１６×１アレーの形に形成するか単一の３２×アレーの形に形成するかをメモリセル３０９が定める。
【００２０】
図４を参照すると、この発明によって書込み動作をシステムクロックのちょうど一つの同期期間内に完結させる。すなわち、システムクロック４０１の予め選んだ縁部をアドレスおよびデータ入力信号４０２および４０３のロックおよび書込みストローブ信号４０６の発生に用いる。アドレス信号４０２およびデータ信号４０３は活性の書込みストローブ信号４０６の期間にわたりラッチする。図５を参照して詳述するとおり、この発明の書込みストローブ信号は自己同期となっており、したがって従来技術においてとくに必要であった活性の書込みイネーブル信号ＷＥ４０４の長さ、活性の書込みイネーブル信号４０４の期間中のアドレス信号４０２およびデータ信号４０３の安定度についての考慮も、保持期間の要件についての考慮も不要になる。また、書込みストローブ信号を自己同期とし、この信号の幅をメモリセル書込み動作を終了させるのに十分な大きさにしてある。メモリセル書込み動作の終了ののち、書込みストローブ信号をリセットする。新たな書込みサイクルを次のシステムクロック縁部（図５について述べるとおりユーザが選択した）で始動させる。
【００２１】
図５は同期機能をもたらす書込みストローブ論理５００の一つの実施例を示す。回路５０１は書込み動作をクロック信号の前縁および後縁のどちらでトリガするかを定める。この実施例ではメモリセル５０１Ａに論理０の信号を記憶させることによって前縁を選択してある（図４にも示した）。この論理０の信号はトランジスタ５４１をオフにするが、インバータ５４０で反転されているのでトランジスタ５４２はオンにする。クロック信号ＣＬＫはインバータ５４３およびトランジスタ５４２経由で送られ、トランジスタ５４１経由では送られない。このようにしてクロック信号ＣＬＫの前縁がインバータ５４３および５４４により反転され、ＮＡＮＤゲート５０３に供給される。ＮＡＮＤゲート５０３の出力信号、すなわちラッチイネーブル信号ＬＥはＮＡＮＤゲート５０３への他の入力信号で定まる。
【００２２】
メモリセル回路配置の期間中は信号バーＤＯＮＥはハイになっている。このハイの信号はインバータ５３８で反転される。これによってロウのＤＯＮＥ信号がＮＡＮＤゲート５０３に供給され、ＲＡＭ初期化中にラッチイネーブル信号ＬＥがロウになるのを防ぐ。なお、このロウのＤＯＮＥ信号はＮＡＮＤゲート５３３にも供給され、ハイの出力信号ＲＥＳＥＴを生じさせる。このようにしてフリップフロップ５０５はリセット状態に初期化される（すなわちＱ出力端子が０）。
【００２３】
しかし、ＲＡＭ初期化のあとでは信号バーＤＯＮＥは論理０に変わる。したがって、論理１の信号がＮＡＮＤゲート５０３および５３３に供給される。このようにして、ＮＡＮＤゲート５０３および５３３の出力信号がそれらゲートへの他の入力信号の状態によって定まる。
ＮＡＮＤゲート５０３へのもう一つの入力信号はメモリセル５０２の供給する信号である。同期ＲＡＭ機能をディスエーブルするためにメモリセル５０２は論理ロウの信号を記憶している。この論理ロウの信号により、ＮＡＮＤゲート５０３がハイのラッチイネーブル信号ＬＥを出力しそれによってラッチ３０４Ａ−３０４Ｄ（図３）を強制的に透過状態にすることを確実にする。すなわち、関数発生器３０１および３０２のメモリセルをスタンダードＲＡＭ（すなわち同期機能なしの）として回路配置する。一方、同期ＲＡＭ機能をイネーブルするためにメモリセル５０２にはハイの信号を記憶させる。すなわち、同期ＲＡＭイネーブル回路配置では、ＮＡＮＤゲート５０３はメモリセル５０２からのハイの信号とハイのＤＯＮＥ信号とを受ける。
【００２４】
クロック前縁のあと、回路５０１は論理１の信号を出力する。したがって、ＮＡＮＤゲート５０３はロウの出力信号を生じる。このロウのラッチイネーブル信号ＬＥは、ラッチ３０４を「閉じた」状態に留め、ラッチ３０４Ａ−３０４Ｄがラッチイネーブル信号ＬＥのロウ状態の期間中はＤ入力信号と無関係に前の値を保持することを確実にする。このラッチ動作は、システムクロック４０１のサイクルのハイの部分（図４）におけるラッチされたアドレス信号４０２Ａ、ラッチされたデータ信号４０３Ａ、およびラッチされた書込みイネーブル信号４０４Ａで示してある。
Ｄフリップフロップ５０４は回路５０１の出力信号をクロック信号として受ける。フリップフロップ５０４のＤ入力端子は書込みイネーブル信号ＷＥを受ける。フリップフロップ５０４のＱ出力端子はノード５０５で示してある。二つの慣用のラッチを含むフリップフロップ５０４の動作は当業者に周知であるので詳述しない。
【００２５】
トランジスタ５０６および５０７は書込みイネーブル信号ＷＥまたはノード５０５の信号を転送する２×１マルチプレクサ５０８を形成する。同期ＲＡＭをイネーブルしたモードではメモリセル５０２は論理１を生ずるから、トランジスタ５０６はオンに、トランジスタ５０７はオフになり、ノード５０５の信号をインバータ５０９に供給する。ノード５０５の信号の状態はフリップフロップ５０４の状態で定まる。すなわち、この時点において、フリップフロップ５０４はＲＡＭ初期化の期間中のハイのバーＤＯＮＥ信号により強制的にリセット状態にされている（すなわち、ＮＯＲゲート５４５はＮＡＮＤゲート５３３からの論理１の信号を受けている）。したがって、ノード５０５には論理０の信号が生じている。このロウの信号は導通状態のトランジスタ５０６で転送され、インバータ５０９により反転され、ＮＯＲゲート５１０および５１１に供給され、それらゲートが書込みストローブ信号ＷＳＧおよびＷＳＦをそれぞれ確実に抑止するようにする。
【００２６】
ＲＡＭ初期化の完了後であって活性の書込みストローブ信号の発生後には、上記の動作により、書込みストローブ信号ＷＳＧおよびＷＳＦはロウになる。これらロウの信号はダミーメモリセル５２３、５２４、５５０、および５５１（以下に詳述）を初期化する。なお、セル同期回路５２１および５２２の動作は同じであり、したがってセル同期回路５２１について次に述べる。ロウの書込みストローブ信号ＷＳＧはインバータ５２７で反転し、それによってトランジスタ５２５Ａおよび５２５Ｂをオンにする。トランジスタ５２５Ａの転送したハイの信号とトランジスタ５２５Ｂの転送したロウの信号をダミーメモリセル５２３および５２４のバーＱ端子にそれぞれ供給する。このようにして、ダミーメモリセル５２３および５２４を初期化し、これらセルのＱ端子には論理０の信号および論理１の信号がそれぞれ現われるようにする。インバータ５２９は論理０の信号を反転する。すなわち、ＮＯＲゲート５３０はインバータ５２９から論理１の信号を、ダミーメモリセル５２４から論理１の信号をそれぞれ受けて、論理０の信号をＮＯＲゲート５３１に出力する。したがって、ＮＯＲゲート５３１の出力信号は他の入力信号に左右される。
【００２７】
システムクロック４０１（図４）の周期のハイの部分の期間中には書込みストローブ信号４０６が送出される。より詳細に述べると、このストローブ信号の発生はシステムクロック信号４０１の前縁とラッチされた書込みイネーブル信号４０４Ａのハイ状態との組合せでイネーブルされる。図５を参照すると、ハイのクロック信号ＣＬＫはロウのラッチイネーブル信号ＬＥで発生し、同時にフリップフロップ５０４をトリガする。したがってフリップフロップ５０４のＤ入力端子に供給された論理１の書込みイネーブル信号ＷＥはＱ出力端子（すなわちノード５０５）に転送される。マルチプレクサ５０８の論理１の出力信号はインバータ５０９で反転され、ＮＯＲゲート５１０および５１１に送られる。したがって、書込みストローブ信号ＷＳＧおよびＷＳＦの状態はＮＯＲゲート５１０および５１１への他の信号で定まる。より詳細に述べると、書込みストローブ信号ＷＳＧの状態は、メモリセル５１９、ＤＯＮＥ信号、１６×２信号および入力信号Ｈ１によって定まる。同様に、書込みストローブ信号ＷＳＦの状態は、メモリセル５２０、ＤＯＮＥ信号、１６×２信号および入力信号Ｈ１によって定まる。
【００２８】
メモリセル５１９および５２０は関数発生器３０１および３０２をユーザの書込み可能なＲＡＭとしてそれぞれ用いるか否かを定める。この実施例において、メモリセル５１９および５２０に記憶してある論理０の信号は関数発生器３０１および３０２のユーザＲＡＭ機能をディスエーブルする。例えば、メモリセル５１９の論理０の信号はＮＡＮＤゲート５１７によるＮＯＲゲート５１０への論理１の信号の供給を確実にする。一方、その論理１の信号はＮＯＲゲート５１０によるロウの（ディスエーブルする）書込みストローブ信号ＷＳＧの発生を確実にする。同様に、メモリセル５２０の論理０の信号はＮＡＮＤゲート５１８によるＮＯＲゲート５１１への論理１の信号の送出を確実にする。一方、その論理１の信号はＮＯＲゲート５１１によるロウの（ディスエーブルする）書込みストローブ信号ＷＳＦの発生を確実にする。
【００２９】
一方、メモリセル５１９および５２０が論理１の信号を記憶している場合は、ＮＡＮＤゲート５１７および５１８の両方が二つの論理１の信号を受ける（ＤＯＮＥ再現の信号はＲＡＭ初期化後の論理１の信号である）。したがって、ＮＡＮＤゲート５１７および５１８は論理０の信号をＮＯＲゲート５１０および５１１にそれぞれ出力する。したがって、この場合は書込みストローブ信号ＷＳＧおよびＷＳＦはＮＯＲゲート５１２および５１３からの信号にそれぞれ左右される。上記１６×２信号がロウであってデータ信号ＤＩＮの関数発生器の一つへの書込みを表示している場合は、入力信号Ｈ１は書込みストローブＷＳＧおよびＷＳＦのどちらがハイになるかを決める。一方、１６×２ハイの場合は、信号Ｈ１の状態とは無関係に、書込みストローブ信号ＷＳＧおよびＷＳＦがともにハイになる。説明の便宜のために１６×２信号がハイであると仮定してある。このようにして、ストローブ信号ＷＳＧおよびＷＳＦがともにハイになり、書込み動作が進行中であることを示す。なお、この発明の他の実施例ではメモリセル５１９および５２０は互いに異なる論理信号を記憶している。
【００３０】
回路５２１および５２２は書込み動作期間中にセルタイミング信号を生ずる。これら回路の各々は二つのダミーメモリセルを含む。例えば、回路５２１はダミーメモリセル５２３および５２４を含む。これらメモリセルのバーＱ端子は、関数発生器３０１および３０２内のメモリセルの書込みデータパスをエミュレートするように設計された複数のトランジスタに結合してある。より詳細に述べると、トランジスタ５６０−５６３はインバータ６００のｎ−チャンネルトランジスタおよび図示トランジスタ６０１−６０３（図６Ｂ）をそれぞれエミュレートする。なお、適当なタイミング許容幅をもたせるために、トランジスタ５６０の大きさはインバータ６００のｎチャンネルトランジスタよりも小さくしてある。また、回路５２６Ｂのｐチャンネルトランジスタの大きさはインバータ６００のｐチャンネルトランジスタよりも小さくしてある。ダミーメモリセル５２３のバーＱ端子には、トランジスタ５２５Ａからの論理１の信号または複数のトランジスタ５２６Ａからの論理０の信号を加える。逆に、ダミーメモリセル５２４のバーＱ端子にはトランジスタ５２５Ｂからの論理０の信号または複数のトランジスタ５２６Ｂからの論理１の信号を加える。
【００３１】
例えば書込みストローブ信号ＷＳＧがハイになると、トランジスタ５２５Ａおよび５２５Ｂ（インバータ５２７経由）はオフになり、複数のトランジスタ５２６Ａはオンになる。このようにして、ダミーメモリセル５２３はＱ端子に論理１の信号を生ずるように書込みを受け、ダミーセル５２４はＱ端子に論理０の信号を生ずるように書込みを受ける。すなわち、活性の書込みイネーブルストローブ信号の期間に、ダミーメモリセル５２３および５２４はそれぞれ逆の状態になるように書込みを受ける。したがって、ＮＯＲゲート５３０は論理０の信号をインバータ５２９およびダミーメモリセル５２４の両方から受ける。この論理１の信号はダミーメモリセル５２３および５２４の両方が所期どおり書込みを受けたことを示す。この発明によると、関数発生器３０１内のＲＡＭセル（図３）の書込みのための時間は（論理１の場合も０の場合も）ダミーメモリセル５２３および５２４と同じである。したがって、ＮＯＲゲート５３０が論理１の信号を出力した場合は、関数発生器３０１内のＲＡＭセルも書込み動作をすでに完了している。
【００３２】
回路５２０も回路５２１について上に述べたものと同じ動作を行うので、関数発生器３０１および３０２内のＲＡＭセルの書込みが完了すると、ＮＯＲゲート５５３も論理１の出力信号を生ずる。ＮＡＮＤゲート５３０および５３３からの論理１の信号により、ＮＯＲゲート５３１および５３４の両方からＯＲゲート５３２への論理０の信号の供給が確実になる。したがって、ＯＲゲート５３２は論理０の信号をＮＡＮＤゲート５３３に出力する。ＯＲゲート５３２は関数発生器３０１および３０２の両方に係わる書込み動作の完了を確実にするために設けてある。ＯＲゲート５３２の論理０の出力信号はＮＡＮＤゲート５３３に論理１（活性）のリセット信号ＲＥＳＥＴを生じさせ、それによってフリップフロップ５０４をリセットする。ハイのリセット信号ＲＥＳＥＴにより書込みイネーブル信号ＷＥＢはハイになる。ハイのＷＥＢ信号を受けるＮＯＲゲート５１０および５１１はロウ（ディスエーブルする）の書込みストローブ信号ＷＳＧおよびＷＳＦを出力する。
【００３３】
メモリセル５１９および５２０が論理１の信号（関数発生器３０１および３０２の両方のＲＡＭ機能がイネーブルされたことを示す）を記憶している場合は、論理０の信号がＮＯＲゲート５３１および５３４に送られる。したがって、関数発生器３０１および３０２にそれぞれ係わるリセット信号ＲＧＢおよびＲＦＢはＮＯＲゲート５３１および５３４への他の信号に左右される。例えば、ＮＯＲゲート５１２は入力信号Ｈ１および１６×２信号がロウのときだけ論理１の信号をＮＯＲゲート５３１に送る（それによってリセット動作を始動する）。同様に、ＮＯＲゲート５１３は入力信号バーＨ１および１６×２信号がロウのときだけ論理１の信号をＮＯＲゲート５３４に送る。上記１６×２信号がロウの場合は、関数発生器３０１および３０２の一方がデータ信号ＤＩＮによる書込みを受ける。したがって、リセット信号ＲＧＢおよびＲＦＢのどちらがハイになるかは入力信号Ｈ１で決める。すなわち、このリセット動作はＮＯＲゲート５３１および５３４への他の信号（すなわち、メモリセル５１９およびＮＯＲゲート５３０からＮＯＲゲート５３１への信号、メモリセル５２０およびＮＯＲゲート５５３からＮＯＲゲート５３４への信号）によって生ずる。メモリセル５１９および５２０内の論理０の信号は関数発生器３０１および３０２（それぞれＧ関数発生器およびＦ関数発生器である）が読出し動作専用（ＲＯＭ）として使われていることを示す。したがって、ＮＯＲゲート５３１および５３４への他の信号、すなわちタイミング回路５２１および５２２からの信号など（上に詳述した）は無視される。ＮＯＲゲート５３１および５３４が両方とも論理１の信号を受ける場合は、これらゲートは論理０の信号をＯＲゲート５３２に出力し、ＮＡＮＤゲート５５３が論理１のフリップフロップリセット信号ＲＥＳＥＴを確実に生ずるようにする。このハイの信号はＮＯＲゲート５４５に送られて、ノード５０５へのロウの信号の供給を確保する。したがって、活性の書込みストローブ信号ＷＳＧおよびＷＳＦは生じない。
【００３４】
関数発生器リセット信号の一方だけ、すなわちリセット信号ＲＧＢまたはＲＦＢだけがロウである場合はＯＲゲート５３２は論理１を生ずる。ＮＡＮＤゲート５３３の出力信号はＤＯＮＥ信号の状態に左右される。上述のとおり、ＲＡＭ所期化のあとバーＤＯＮＥ信号は論理０になる。したがって、ＮＡＮＤゲート５５３は二つの論理１の信号を受け、論理０のリセット信号ＲＥＳＥＴ（すなわち、フリップフロップ５０４をリセットしない）を受ける。
【００３５】
種々の回路配置の同期ＲＡＭ（例えば１６×２、３２×１など）へのデータ入力はジリンクス社製ＸＣ４０００型ＲＡＭにおける対応の回路配置の場合と同じであるので詳述しない。
上述の実施例は例示的であって限定的なものではない。添付の特許請求の範囲に記載した他の実施の態様や変形が本発明に可能であることは当業者には明らかであろう。
【図面の簡単な説明】
【図１】周知のプログラマブルロジックデバイス内でＲＡＭとして動作する関数発生器の動作説明用タイミング図。
【図２】ＲＡＭとして回路配置可能な二つの関数発生器を含む回路配置融通性ある論理ブロック（ＣＬＢ）の一部のブロック図。
【図３】この発明による同期デュアルポートＲＡＭを含むＣＬＢ回路配置。
【図４】図３に示したＣＬＢのタイミング図。
【図５】この発明の一つの実施例における書込みストローブ論理回路の回路図。
【図６】ＡおよびＢはこの発明のデュアルポート機能およびラッチの一例の説明のためのアドレスデコーダ、マルチプレクサおよび関数発生器の回路図。
【符号の説明】
１０１，４０１    システムクロック
１０２，４０２    アドレス
１０３，４０３    データ
１０４，４０４    書込みイネーブル
１０５，４０５    書込みサイクル
２０１，２０２，３０１，３０２    関数発生器
２０３，２０４，２０５，３０８，３０９    メモリセル
２０９，２１１，３０７    ＡＮＤゲート
２０８，２１０    ＯＲゲート
２０７，３０６Ａ−Ｂ    マルチプレクサ
３０３    書込みストローブロジック
３０４Ａ−Ｄ    ラッチ
３０５Ａ−Ｂ    アドレスデコーダ
４０２Ａ    ラッチしたアドレス
４０３Ａ    ラッチしたデータ
４０４Ａ    ラッチした書込みイネーブル
４０６    書込みストローブ
５０１Ａ，５０２，５１９，５２０    メモリセル
５０３    ＮＡＮＤゲート
５０４    フリップフロップ
５２１，５２２    セルタイミング回路
５２３，５２４，５５０，５５１    ダミーメモリセル
【図１】
0003868531.tif 000002
【図２】
0003868531.tif 000003
【図３】
0003868531.tif 000004
【図４】
0003868531.tif 000005
【図５】
0003868531.tif 000006
【図６Ａ】
0003868531.tif 000007
【図６Ｂ】
0003868531.tif 000008