(57)【特許請求の範囲】
【請求項１】
データを記憶するメモリと、データ書込側の第１のクロック信号によりメモリの書込アドレスを生成する書込カウンタと、データ読出側の第２のクロック信号によりメモリの読出アドレスを生成する読出カウンタとを備え、メモリに書き込んだデータを遅れ位相で読み出すＦＩＦＯメモリにおいて、
書込アドレスの小さい値に対応する第１のウィンドウと、大きい値に対応する第２のウィンドウとを生成する書込ウィンドウ生成手段と、
読出アドレスの小さい値に対応する第３のウィンドウを生成する読出ウィンドウ生成手段と、
前記第１又は第２のウィンドウと第３のウィンドウとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行う容量監視手段とを備えることを特徴とするＦＩＦＯメモリ。
【請求項２】
前記第１のウィンドウと第３のウィンドウとが重なったことによりエンプティーフラグをセットし、その後のデータ読出制御を一時的に休止させることを特徴とする請求項１のＦＩＦＯメモリ。
【請求項３】
書込アドレスが所定値に達したことによりエンプティーフラグをリセットし、これに伴いデータ読出制御を開始することを特徴とする請求項２のＦＩＦＯメモリ。
【請求項４】
エンプティーフラグのリセットに伴い読出カウンタに任意の読出アドレスをセットすることを特徴とする請求項３のＦＩＦＯメモリ。
【請求項５】
前記第２のウィンドウと第３のウィンドウとが重なったことによりフルフラグをセットし、その後のデータ書込制御を一時的に休止させることを特徴とする請求項１のＦＩＦＯメモリ。
【請求項６】
読出アドレスが所定値に達したことによりフルフラグをリセットし、これに伴いデータ書込制御を開始することを特徴とする請求項５のＦＩＦＯメモリ。
【請求項７】
フルフラグのリセットに伴い書込カウンタに任意の書込アドレスをセットすることを特徴とする請求項６のＦＩＦＯメモリ。
【請求項８】
外部よりエンプティーフラグを強制セット可能であることを特徴とする請求項２のＦＩＦＯメモリ。
【請求項９】
書込側及び読出側の各生成信号は夫々第１，第２のクロック信号に同期して生成されると共に、書込側と読出側との間にまたがる制御信号は１又は２以上のクロックラッチ回路を介して相手側のクロック信号に乗り換える様に構成されていることを特徴とする請求項１のＦＩＦＯメモリ。
【請求項１０】
データを記憶するメモリと、データ書込側の第１のクロック信号によりメモリの書込アドレスを生成する書込カウンタと、データ読出側の第２のクロック信号によりメモリの読出アドレスを生成する読出カウンタとを備え、メモリに書き込んだデータを遅れ位相で読み出すＦＩＦＯメモリにおいて、
読出アドレスの小さい値に対応する第１のウィンドウと、大きい値に対応する第２のウィンドウとを生成する読出ウィンドウ生成手段と、
書込アドレスの小さい値に対応する第３のウィンドウを生成する書込ウィンドウ生成手段と、
前記第１又は第２のウィンドウと第３のウィンドウとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行う容量監視手段とを備えることを特徴とするＦＩＦＯメモリ。
【請求項１１】
データ書込位相に対してデータ読出位相が所定以上の遅れとなった後、前記第２のウィンドウと第３のウィンドウとが重なったことによりエンプティーフラグをセットし、その後のデータ読出制御を一時的に休止させることを特徴とする請求項１０のＦＩＦＯメモリ。
【請求項１２】
データ書込位相に対してデータ読出位相が所定以上の遅れとなった後、前記第１のウィンドウと第３のウィンドウとが重なったことによりフルフラグをセットし、その後のデータ書込制御を一時的に休止させることを特徴とする請求項１０のＦＩＦＯメモリ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はＦＩＦＯメモリに関し、更に詳しくはデータを記憶するメモリと、データ書込側の第１のクロック信号によりメモリの書込アドレスを生成する書込カウンタと、データ読出側の第２のクロック信号によりメモリの読出アドレスを生成する読出カウンタとを備え、メモリに書き込んだデータを遅れ位相で読み出すＦＩＦＯメモリに関する。
この種のＦＩＦＯメモリはデータ書込側の第１のクロック信号によりデータを書き込み、かつこれをデータ読出側の第２のクロック信号により任意の位相で読み出すような用途（例えばデータ伝送装置等）に広く利用されている。
【０００２】
【従来の技術】
図９は従来のＦＩＦＯメモリのブロック図で、図において１はデュアルポートＲＡＭ（ＤＰ−ＲＡＭ）、２は書込カウンタ（ＣＴＲ）、３は読出カウンタ（ＣＴＲ）、１１，１２はＡＮＤゲート回路（Ａ）、３０は容量監視部、３１はアップダウンカウンタ（Ｕ／ＤＣＴＲ）、３２，３３はデコーダ（ＤＥＣ）、４１はシリアル・パラレル変換部（Ｓ／Ｐ）、４２はパラレル・シリアル変換部（Ｐ／Ｓ）である。
【０００３】
シリアル・パラレル変換部４１は入力のシリアルデ−タＳＤＩをデータ書込側のクロック信号ＣＫＡにより所定ビット数（１ワード）毎のパラレルデータＤＩＮに変換し、これを１ワード毎に発生する書込クロック信号ＷＣＫ（＝書込パルス信号ＷＰ）によりデュアルポートＲＡＭ１に書き込むと共に、該書込パルス信号ＷＰは書込カウンタ２及びアップダウンカウンタ３１に夫々＋１する。
【０００４】
パラレル・シリアル変換部４２はデュアルポートＲＡＭ１の記憶データを読出クロック信号ＲＣＫ（＝読出パルス信号ＲＥ）により読み出し、これをデータ読出側のクロック信号ＣＫＢによりシリアルデータＳＤＯに変換すると共に、前記読出パルス信号ＲＥは読出カウンタ３に＋１し、かつアップダウンカウンタ３１から−１する。
【０００５】
容量監視部３０において、デコーダ３２はアップダウンカウンタ３１のカウント値ＣＤに基づきＲＡＭ１のバッファフル状態を監視しており、ＣＤ＝Ｎ（但し、ＮはＲＡＭ１の記憶容量）になるとバッファフル信号ＦＬを生成し、ＡＮＤゲート回路１１を介してそれ以上のデータ書込を阻止する。一方、デコーダ３３は同カウント値ＣＤに基づきＲＡＭ１のバッファエンプティー状態を監視しており、ＣＤ＝０になるとバッファエンプティー信号ＥＰを生成し、ＡＮＤゲート回路１２を介してそれ以上のデータ読出を阻止する。従って、上記容量監視の下では、データ書込位相がデータ読出位相を追い越すこともないし、またデータ読出位相がデータ書込位相を追い越すこともない。
【０００６】
図１０は従来のＦＩＦＯメモリのタイミングチャートである。
始めの方では読出パルス信号ＲＥは書込パルス信号ＷＰよりも十分に遅れた位相で発生しており、アップダウンカウンタ３１のカウント値ＣＤはＣＤ＝２→１→２→１の状態を繰り返す。しかるに、この例では、クロック信号ＣＫＢが途中で断又は擾乱により途切れており、このために書込パルス信号ＷＰと読出パルス信号ＲＥとは新たな位相関係（この例では極めて接近した位相関係）に遷移する。このようなケースの発生は実際上少なくない。かかる場合でも、もしアップダウンカウンタ３１が互いに接近した書込パルス信号ＷＰ及び読出パルス信号ＲＥにより正常なアップ／ダウン動作を継続できれば、その後のカウント値ＣＤはＣＤ＝３→２→３→２となり、データの記憶数を正確に指し示す。
【０００７】
【発明が解決しようとする課題】
しかし、一般には、書込パルス信号ＷＰと読出パルス信号ＲＥの位相が接近すると、例えば読出パルス信号ＲＥによる−１動作をミスする場合があり、もし矢印↑の位置で−１動作をミスしてしまうと、その後のカウント値ＣＤはＣＤ＝３→４→３→４となり、もはやデータの記憶数を正確に指し示さなくなる。その結果、実際にデータ書込の行われていない記憶データが有ることになりシステムに重大な悪影響を及ぼす。しかも、このような誤監視の状態を検出する他の適当な手段もないので、従来のＦＩＦＯメモリは動作信頼性を欠くものであった。
【０００８】
なお、アップダウンカウンタ３１のアップ／ダウン動作を何れか一方のクロック信号ＣＫＡ又はＣＫＢにより行う方法もあるが、該クロック信号ＣＫＡ又はＣＫＢが断又は擾乱により一時的に途切れてしまえば、上記と同じ誤動作状態になることは避けられない。
本発明の目的は、簡単な構成で信頼性の高い容量監視を行えるＦＩＦＯメモリを提供することにある。
【０００９】
【課題を解決するための手段】
上記の課題は図１の構成により解決される。即ち、本発明（１）のＦＩＦＯメモリは、データを記憶するメモリと、データ書込側の第１のクロック信号によりメモリの書込アドレスを生成する書込カウンタと、データ読出側の第２のクロック信号によりメモリの読出アドレスを生成する読出カウンタとを備え、メモリに書き込んだデータを遅れ位相で読み出すＦＩＦＯメモリにおいて、書込アドレスの小さい値に対応する第１のウィンドウと、大きい値に対応する第２のウィンドウとを生成する書込ウィンドウ生成手段と、読出アドレスの小さい値に対応する第３のウィンドウを生成する読出ウィンドウ生成手段と、前記第１又は第２のウィンドウと第３のウィンドウとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行う容量監視手段とを備えるものである。
【００１０】
また本発明（１０）のＦＩＦＯメモリは、データを記憶するメモリと、データ書込側の第１のクロック信号によりメモリの書込アドレスを生成する書込カウンタと、データ読出側の第２のクロック信号によりメモリの読出アドレスを生成する読出カウンタとを備え、メモリに書き込んだデータを遅れ位相で読み出すＦＩＦＯメモリにおいて、読出アドレスの小さい値に対応する第１のウィンドウと、大きい値に対応する第２のウィンドウとを生成する読出ウィンドウ生成手段と、書込アドレスの小さい値に対応する第３のウィンドウを生成する書込ウィンドウ生成手段と、前記第１又は第２のウィンドウと第３のウィンドウとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行う容量監視手段とを備えるものである。
【００１１】
【作用】
本発明（１）においては、例えばＲＡＤ＝０の第３のウィンドウ信号ＳをＷＡＤ＝０，１の第１のウィンドウ信号ＷＩＮＥとＷＡＤ＝Ｎ−１，Ｎの第２のウィンドウ信号ＷＩＮＦとで挟み込むと共に、該信号ＷＩＮＥ又は信号ＷＩＮＦと信号Ｓとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行う。
【００１２】
本発明（１）によれば、メモリ１の容量監視を実際のアドレス信号（制御）に基づき一体不可分に行うので、データ読書制御と容量監視制御とは遊離せず、簡単な構成により常に信頼性の高い容量監視を行える。
好ましくは、図３に示す如く、書込アドレス信号ＷＡＤの小さい値（例えばＷＡＤ＝０，１）に対応する第１のウィンドウ信号ＷＩＮＥと読出アドレス信号ＲＡＤの所定値（例えばＲＡＤ＝０）に対応する第３のウィンドウ信号Ｓとが重なったことによりエンプティーフラグ信号ＥＦＬＧをセットし、その後のデータ読出制御を一時的に休止させる。従って、データ読書位相がバッファエンプティーの側に移相しても、データ読出位相が自動的に遅らされ、新たな好ましいデータ読書位相に遷移する。
【００１３】
また好ましくは、書込アドレス信号ＷＡＤが所定値（例えばＷＡＤ＝４）に達したことによりエンプティーフラグ信号ＥＦＬＧをリセットし、これに伴いデータ読出制御を開始する。従って、データ読書位相がバッファエンプティーの側に移相しても、データ読出位相がデータ書込位相に対して一定遅れとなるまで自動的に遅らされ、所望のデータ読書位相が保たれる。
【００１４】
また好ましくは、図４に示す如く、エンプティーフラグ信号ＥＦＬＧのリセットに伴い読出カウンタ３に任意の読出アドレス信号ＲＡＤをセットする。従って、データ読書位相がバッファエンプティーの側に移相しても、データ読出位相を自動的に遅らせると共に、データ読出制御を所望の位相から再開できる。
また好ましくは、図５に示す如く、書込アドレス信号ＷＡＤの大きい値（例えばＷＡＤ＝Ｎ−１，Ｎ）に対応する第２のウィンドウ信号ＷＩＮＦと読出アドレス信号ＲＡＤの所定値（例えばＲＡＤ＝０）に対応する第３のウィンドウ信号Ｓとが重なったことによりフルフラグ信号ＦＦＬＧをセットし、その後のデータ書込制御を一時的に休止させる。従って、データ読書位相がバッファフルの側に移相しても、データ書込位相が自動的に遅らされ、新たな好ましいデータ読書位相に遷移する。
【００１５】
また好ましくは、読出アドレス信号ＲＡＤが所定値（例えばＲＡＤ＝３）に達したことによりフルフラグ信号ＦＦＬＧをリセットし、これに伴いデータ書込制御を開始する。従って、データ読書位相がバッファフルの側に移相しても、データ書込位相がデータ読出位相に対して一定進みとなるまで自動的に遅らされ、所望のデータ読書位相が保たれる。
【００１６】
また好ましくは、図６に示す如く、フルフラグ信号ＦＦＬＧのリセットに伴い書込カウンタ２に任意の書込アドレス信号ＷＡＤをセットする。従って、データ読書位相がバッファフルの側に移相しても、データ書込位相を自動的に遅らせると共に、データ書込制御を所望の位相から再開できる。
また好ましくは、図２に示す如く、外部よりエンプティーフラグ信号ＥＦＬＧを強制セット可能である。従って、データ読出制御を任意の時点に任意の位相から開始（再開）できる。
【００１７】
また好ましくは、図７，図８に示す如く、書込側及び読出側の各生成信号は夫々第１，第２のクロック信号ＣＫＡ／ＣＫＢに同期して生成されると共に、書込側と読出側との間にまたがる制御信号ＷＩＮＥ，ＷＩＮＦ，Ｓ等は１又は２以上のクロックラッチ回路を介して相手側のクロック信号ＣＫＢ／ＣＫＡに乗り換える様に構成されている。従って、書込側及び読出側の各論理動作が確実なものとなる。
【００１８】
ところで、上記本発明（１）では、読出カウンタの所定の読出アドレス（第３のウィンドウ）を書込カウンタの互いに異なる第１，第２の書込アドレス（第１，第２のウィンドウ）で挟み込み、これらのアドレスの一部重なりを検出することでメモリの容量監視を行った。この容量監視方式の対称性に着目すれば、逆に書込カウンタの所定の書込アドレス（第３のウィンドウ）を読出カウンタの互いに異なる第１，第２の読出アドレス（第１，第２のウィンドウ）で挟み込み、これらのアドレスの一部重なりを検出することでも同様の容量監視が行えることは明らかである。
【００１９】
そこで、図示しないが、本発明（１０）においては、例えばＷＡＤ＝０の第３のウィンドウ信号ＳをＲＡＤ＝０，１の第１のウィンドウ信号ＷＩＮＥとＲＡＤ＝Ｎ−１，Ｎの第２のウィンドウ信号ＷＩＮＦとで挟み込むと共に、該信号ＷＩＮＥ又は信号ＷＩＮＦと信号Ｓとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行う。
【００２０】
好ましくは、データ書込位相に対してデータ読出位相が所定以上の遅れとなった後、読出アドレス信号ＲＡＤの大きい値（例えばＲＡＤ＝Ｎ−１，Ｎ）に対応する第２のウィンドウと書込アドレス信号ＷＡＤ（例えばＷＡＤ＝０）の第３のウィンドウとが重なったことによりエンプティーフラグをセットし、その後のデータ読出制御を一時的に休止させる。従って、データ読書位相がバッファエンプティーの側に移相しても、データ読出位相が自動的に遅らされ、新たな好ましいデータ読書位相に遷移する。
【００２１】
また好ましくは、データ書込位相に対してデータ読出位相が所定以上の遅れとなった後、読出アドレス信号ＲＡＤの小さい値（例えばＲＡＤ＝Ｏ，１）に対応する第１のウィンドウと書込アドレス信号ＷＡＤ（例えばＷＡＤ＝０）の第３のウィンドウとが重なったことによりフルフラグをセットし、その後のデータ書込制御を一時的に休止させる。従って、データ読書位相がバッファフルの側に移相しても、データ書込位相が自動的に遅らされ、新たな好ましいデータ読書位相に遷移する。
【００２２】
【実施例】
以下、添付図面に従って本発明による実施例を詳細に説明する。なお、全図を通して同一符号は同一又は相当部分を示すものとする。
図２は実施例のＦＩＦＯメモリのブロック図で、図において１はデュアルポートＲＡＭ（ＤＰ−ＲＡＭ）、２は書込カウンタ（ＣＴＲ）、３は読出カウンタ（ＣＴＲ）、４〜８はタイミング信号生成部（ＴＳＧ）、９，１０はＤタイプのフリップフロップ（Ｆ−Ｆ）、１１〜１８はＡＮＤゲート回路（Ａ）、１９，２０はＯＲゲート回路（Ｏ）である。
【００２３】
入力のパラレルデータＤＩＮをクロック信号ＣＫＡに同期した書込クロック信号ＷＣＫ（＝書込パルス信号ＷＰ）によりデュアルポートＲＡＭ１に書き込むと共に、該書込パルス信号ＷＰは書込カウンタ２に＋１する。一方、デュアルポートＲＡＭ１の記憶データをクロック信号ＣＫＢに同期した読出クロック信号ＲＣＫ（＝読出パルス信号ＲＥ）により読み出すと共に、該読出パルス信号ＲＥは読出カウンタ３に＋１する。
【００２４】
タイミング信号生成部４は書込カウンタ２の書込アドレス信号ＷＡＤに基づき、ＷＡＤ＝０，１のタイミングに書込開始側のウィンドウ信号ＷＩＮＥを生成する。またタイミング信号生成部６は同書込アドレス信号ＷＡＤに基づき、ＷＡＤ＝Ｎ−１，Ｎのタイミングに書込終了側のウィンドウ信号ＷＩＮＦを生成する。一方、タイミング信号生成部７は読出カウンタ３の読出アドレス信号ＲＡＤに基づき、ＲＡＤ＝０のタイミングに読出開始側の基準信号Ｓを生成する。更に、タイミング信号生成部５はＷＡＤ＝４のタイミングにエンプティーフラグクリア信号ＥＦＣＬＲを生成し、またタイミング信号生成部８はＲＡＤ＝３のタイミングにフルフラブクリア信号ＦＦＣＬＲを生成する。
【００２５】
クロック信号ＣＫＡ，ＣＫＢは夫々フリーランしており、互いに位相同期していない。クロック周波数ＣＫＡ，ＣＫＢは基本的には略同一であるが、周波数の誤差、ジッタ又はワンダにより継続的又は一時的にＣＫＡ＜ＣＫＢ又はＣＫＡ＞ＣＫＢの関係となる。これに伴いデュアルポートＲＡＭ１に対するデータ読書位相も様々に変動する。即ち、ＣＫＡ＜ＣＫＢの場合はデータ読出制御が速いためにバッファエンプティーの側に移相し、またＣＫＡ＞ＣＫＢの場合はデータ書込制御が速いためにバッファフルの側に移相する。
【００２６】
以下に、データ読書位相がバッファエンプティーの側又はバッファフルの側に移相した場合の容量監視制御及びこれに伴う読書移相制御を図３〜図６のタイミングチャート（１）〜（４）を参照して説明する。
図３は実施例のＦＩＦＯメモリのタイミングチャート（１）であり、データ読書位相がバッファエンプティーの側に移相した場合の動作を示している。
【００２７】
なお、図示しないが、最初はシステムリセット信号ＳＲの発生によりＷＡＤ＝０，ＲＡＤ＝０である。この場合は始めからウィンドウ信号ＷＩＮＥ＝１，基準信号Ｓ＝１となりＡＮＤゲート回路１５を満足する。ＡＮＤゲート回路１５の出力はＯＲゲート回路１９，ＡＮＤゲート回路１５を介して最初のクロック信号ＣＫＢによりフリップフロップ１０をセットし、エンプティーフラグ信号ＥＦＬＧ＝１となる。フリップフロップ１０がＤタイプの場合は該ＥＦＬＧ＝１の状態はＯＲゲート回路１９，ＡＮＤゲート回路１６を介して保持される。ＡＮＤゲート回路１２はＥＦＬＧ＝１により読出パルス信号ＲＥの発生を阻止し、これによりデータ読出制御は待たされる。
【００２８】
やがて、書込アドレス信号ＷＡＤ＝４となると、タイミング信号生成部５からはエンプティーフラグクリア信号ＥＦＣＬが発生し、これがＡＮＤゲート回路１６を介してフリップフロップ１０をリセットする。これによりエンプティーフラグ信号ＥＦＬＧ＝０となり、上記待たされていたデータ読出制御は所定の遅れ位相で開始される。この場合に、タイミング信号生成部５のデコード値を「４」よりも十分に大きい値に選べば、データ読出制御の開始位相を十分に遅らせることが可能である。なお、タイミング信号生成部５のデコード値は外部より設定可能に構成しても良い。
【００２９】
しかる後、例えばクロック周波数ＣＫＡ＜ＣＫＢの関係によりデータ読書位相がバッファエンプティーの側に移相すると、ウィンドウ信号ＷＩＮＥ（ＷＡＤ＝１）と基準信号Ｓ（ＲＡＤ＝０）とが重なり、ＡＮＤゲート回路１５を満足する。ＡＮＤゲート回路１５の出力はＯＲゲート回路１９，ＡＮＤゲート回路１６を介してフリップフロップ１０をセットし、エンプティーフラグ信号ＥＦＬＧ＝１となる。フリップフロップ１０がＤタイプの場合はＥＦＬＧ＝１の状態はＯＲゲート回路１９，ＡＮＤゲート回路１６を介して保持される。ＡＮＤゲート回路１２はＥＦＬＧ＝１によりその後の読出パルス信号ＲＥの発生を阻止し、これによりデータ読出制御は待たされる。
【００３０】
やがて、書込アドレス信号ＷＡＤ＝４となると、エンプティーフラグクリア信号ＥＦＣＬが発生し、これがＡＮＤゲート回路１６を介してフリップフロップ１０をリセットする。これによりエンプティーフラグ信号ＥＦＬＧ＝０となり、上記待たされていたデータ読出制御は続きのデータ読出制御を再開する。
なお、更にクロック周波数ＣＫＡ＜ＣＫＢの状態が続くと、データ読書位相はまもなくバッファエンプティーの側に再度移相する。しかし、例えばタイミング信号生成部５のデコード値を「４」よりも十分に大きい値にすれば、データ読出制御の再開位相を十分に遅らせることが可能である。
【００３１】
また、図２のタイミング信号生成部５を設ける代わりに、タイマ（ＴＭ）２１を設けても良い。この例のタイマ２１はＥＦＬＧ＝１となった後の所定数のクロック信号ＣＫＢを計数することによりタイムアウトし、エンプティーフラグクリア信号ＥＦＣＬを発生する。かかる構成とすれば、データ読書位相がバッファエンプティーとなる度にデータ読出位相を所定時間だけ遅らせるような簡単な制御が行える。
【００３２】
図４は実施例のＦＩＦＯメモリのタイミングチャート（２）であり、データ読書位相がバッファエンプティーの側に移相した場合の他の動作を示している。
この例では、図２に示す如く、ＡＮＤゲート回路１４を設け、ＥＦＬＧ＝１＊ＥＦＣＬ＝１の条件で読出カウンタ３に所定値（この例では「０」）をロード可能としている。こうすれば、データ読出位相は図３のような続きのＲＡＤ＝２からではなく、図４のＲＡＤ＝０から再開される。従って、データ読出位相は更に遅れる。この読出フレームでは一部データが二重読出となってしまうが、次フレームからの読出は正常となる。また、読出カウンタ３にロードする所定値は「０」以外の任意の値で良く、更にこの値は外部から設定可能に構成しても良い。こうすれば、データ読出位相を任意に設定できる。
【００３３】
なお、図２に示す如く、外部からのセット信号ＰＧＳによりフリップフロップ１０を任意のタイミングに強制セットしても良い。こうすれば、任意のタイミングに任意のデータ読出アドレスからのデータ読出制御を再開できる。
図５は実施例のＦＩＦＯメモリのタイミングチャート（３）であり、データ読書位相がバッファフルの側に移相した場合の動作を示している。
【００３４】
クロック周波数ＣＫＡ＞ＣＫＢの関係によりデータ読書位相がバッファフルの側に移相すると、ウィンドウ信号ＷＩＮＦ（ＷＡＤ＝Ｎ−１）と基準信号Ｓ（ＲＡＤ＝０）とが重なり、ＡＮＤゲート回路１７を満足する。ＡＮＤゲート回路１７の出力はＯＲゲート回路２０，ＡＮＤゲート回路１８を介してフリップフロップ９をセットし、フルフラグ信号ＦＦＬＧ＝１となる。フリップフロップ９がＤタイプの場合はＦＦＬＧ＝１の状態はＯＲゲート回路２０，ＡＮＤゲート回路１８を介して保持される。ＡＮＤゲート回路１３はＦＦＬＧ＝１によりその後の書込パルス信号ＷＰの発生を阻止し、これによりデータ書込制御は待たされる。
【００３５】
やがて、読出アドレス信号ＲＡＤ＝３となると、フルフラグクリア信号ＦＦＣＬが発生し、これがＡＮＤゲート回路１８を介してフリップフロップ９をリセットする。これによりフルフラグ信号ＦＦＬＧ＝０となり、上記待たされていたデータ書込制御は続きのデータ書込制御を再開する。
なお、更にクロック周波数ＣＫＡ＞ＣＫＢの状態が続くと、データ読書位相はまもなくバッファフルの側に再度移相する。しかし、例えばタイミング信号生成部８のデコード値を「３」よりも十分に大きい値にすれば、データ書込制御の再開位相を十分に遅らせることが可能である。
【００３６】
また、図示しないが、図２のタイミング信号生成部８を設ける代わりに、上記同様にしてタイマを設けても良い。この場合のタイマはＦＦＬＧ＝１となった後の所定数のクロック信号ＣＫＡを計数することによりタイムアウトし、フルフラグクリア信号ＦＦＣＬを発生する。かかる構成とすれば、データ読書位相がバッファフルとなる度にデータ書込位相を所定時間だけ遅らせるような簡単な制御が行える。
【００３７】
図６は実施例のＦＩＦＯメモリのタイミングチャート（４）であり、データ読書位相がバッファフルの側に移相した場合の他の動作を示している。
この例では、図２に示す如くＡＮＤゲート回路１３を設け、ＦＦＬＧ＝１＊ＦＦＣＬ＝１の条件で書込カウンタ２に所定値（この例では「０」）をロード可能にしている。この場合のデータ読書位相は図５の場合と略同等となるが、例えば書込カウンタ２に「０」以外の任意の値をロードすれば、任意の書込アドレスＷＡＤからデータ書込制御を再開できる。このフレームのデータ書込は正常ではないが、次フレームからのデータ書込は正常となる。
【００３８】
かくして、上記本実施例の容量監視・制御の下では、データ書込位相はデータ読出位相に重ならないし、かつ追い越すこともない。またデータ読出位相はデータ書込位相に重ならないし、かつ追い越すこともない。
また、ウィンドウ信号ＷＩＮＥ，ＷＩＮＦの信号幅を更に大きく選べば、一層の余裕をもったデータ読書位相制御が行える。
【００３９】
図７は実施例のタイミング信号生成部のブロック図である。
図７の（Ａ）は、一例として４つのデコーダＤＥＣ０〜ＤＥＣ３により夫々に書込アドレス信号ＷＡＤ＝０〜３又はＷＡＤ＝Ｎ−３〜Ｎをデコードし、各デコード出力の論理和をとる構成を示している。この構成は出力信号ＷＩＮＥ，ＷＩＮＦ等の時間幅が短い場合に有効である。
【００４０】
図７の（Ｂ）は、デコーダＤＥＣ０のデコード出力によりＲＳフリップフロップＦＦを強制セットし、かつＤＥＣ３のデコード出力により同フリップフロップＦＦを強制リセットする構成を示している。この構成は出力信号ＷＩＮＥ，ＷＩＮＦ等の時間幅が長い場合に有効である。
図７の（Ｃ）は、デコーダＤＥＣ０のデコード出力によりＤフリップフロップＦＦをクロック信号ＣＫＡのタイミングにセットし、かつＤＥＣ３のデコード出力により同フリップフロップＦＦをクロック信号ＣＫＡのタイミングにリセット構成を示している。この構成は出力信号ＷＩＮＥ，ＷＩＮＦ等の時間幅が長い場合に有効である。
【００４１】
図８は実施例の制御信号のクロック乗換方式のブロック図である。
図８の（Ａ）は、クロック信号ＣＫＡに同期した制御信号を２つのＤフリップフロップＦＦを使用してクロック信号ＣＫＢに同期した制御信号に乗り換える構成を示している。なお、ＤフリップフロップＦＦは１つでも良い。
図８の（Ｂ）では、まず上段の２つのＤフリップフロップＦＦ及びＡＮＤゲート回路Ａによりクロック信号ＣＫＡに同期した制御信号の立ち上がりエッジをクロック信号ＣＫＢのタイミングで捕らえ、これにより出力のＤフリップフロップＦＦをセットする。次に下段の２つのＤフリップフロップＦＦ及びＡＮＤゲート回路Ａによりクロック信号ＣＫＡに同期した制御信号の立ち下がりエッジをクロック信号ＣＫＢのタイミングで捕らえ、これにより出力のＤフリップフロップＦＦをリセットする。
【００４２】
なお、上記制御信号のクロック乗換を行う場合には、クロック信号ＣＫＡに同期した側の制御信号の時間幅は少なくともクロック信号ＣＫＢの１周期分あることが必要である。
かくして、上記何れかのクロック乗換回路を使用することにより、動作安定なＦＩＦＯメモリを構成できる。
【００４３】
なお、上記実施例ではデータメモリをデュアルポートＲＡＭ１で構成したが、他にエラスティックメモリ又は通常のＲＡＭを使用して構成しても良い。
また、上記実施例では基準信号ＳはＲＡＤ＝０のタイミングに１個生成したがこれに限らない。基準信号Ｓは任意のＲＡＤ＝ａ〜ｂ（但し、０＜ａ＜ｂ＜Ｎ）について連続して生成しても良いし、又はＲＡＤ＝ａ，ｂ（但し、０＜ａ＜ｂ＜Ｎ）の２点で夫々生成しても良い。
【００４４】
また、上記実施例では読出カウンタ３の基準信号Ｓを書込カウンタ２の異なるウィンドウ信号ＷＩＮＥ，ＷＩＮＦで挟み込み、これらの信号の一部重なりを検出することでメモリ１の容量監視を行った。しかし、この容量監視方式の対称性に着目すれば、逆に書込カウンタ２の基準信号Ｓ（例えばＷＡＤ＝０）を読出カウンタ３の異なるウィンドウ信号ＷＩＮＥ（例えばＲＡＤ＝０，１），ＷＩＮＦ（例えばＲＡＤ＝Ｎ−１，Ｎ）で挟み込み、これらの信号の一部重なりを検出することでも同様の容量監視が行えることは明らかである。
【００４５】
この場合は、図示しないが、データ書込位相に対してデータ読出位相が所定以上の遅れとなった後、読出カウンタ３のウィンドウ信号ＷＩＮＦと書込カウンタ２の基準信号Ｓとが重なったことによりエンプティーフラグ信号ＥＦＬＧをセットし、その後のデータ読出制御を一時的に休止させる。また、データ書込位相に対してデータ読出位相が所定以上の遅れとなった後、読出カウンタ３のウィンドウ信号ＷＩＮＥと書込カウンタ２の基準信号Ｓとが重なったことによりフルフラグ信号ＦＦＬＧをセットし、その後のデータ書込制御を一時的に休止させる。
【００４６】
また、上記本発明に好適なる実施例を述べたが、本発明思想を逸脱しない範囲内で、構成及び組合せの様々な変更が行えることは言うまでも無い。
【００４７】
【発明の効果】
以上述べた如く本発明によれば、書込カウンタの書込アドレスに基づき互いに異なる第１，第２のウィンドウを生成すると共に、該第１，第２のウィンドウと読出カウンタの所定の読出アドレスに基づき生成した第３のウィンドウとの間の少なくとも一部重なりを検出することによりメモリの容量監視を行うので、データ読書制御とメモリ容量監視制御とが遊離せず、もってクロック信号の断や擾乱等が生じても、常に信頼性の高いＦＩＦＯメモリ動作が保証される。
【図面の簡単な説明】
【図１】図１は本発明の原理を説明する図である。
【図２】図２は実施例のＦＩＦＯメモリのブロック図である。
【図３】図３は実施例のＦＩＦＯメモリのタイミングチャート（１）である。
【図４】図４は実施例のＦＩＦＯメモリのタイミングチャート（２）である。
【図５】図５は実施例のＦＩＦＯメモリのタイミングチャート（３）である。
【図６】図６は実施例のＦＩＦＯメモリのタイミングチャート（４）である。
【図７】図７は実施例のタイミング信号生成部のブロック図である。
【図８】図８は実施例の制御信号のクロック乗換方式のブロック図である。
【図９】図９は従来のＦＩＦＯメモリのブロック図である。
【図１０】図１０は従来のＦＩＦＯメモリのタイミングチャートである。
【符号の説明】
１  メモリ
２  書込カウンタ
３  読出カウンタ
４  第１のウィンドウ生成部
６  第２のウィンドウ生成部
７  第３のウィンドウ生成部
【図１】
0003669591.tif 000002
【図２】
0003669591.tif 000003
【図３】
0003669591.tif 000004
【図４】
0003669591.tif 000005
【図５】
0003669591.tif 000006
【図６】
0003669591.tif 000007
【図７】
0003669591.tif 000008
【図８】
0003669591.tif 000009
【図９】
0003669591.tif 000010
【図１０】
0003669591.tif 000011