(57)【特許請求の範囲】
【請求項１】
書込許可信号が与えられている間、クロック信号に従って、データの書き込みを行うとともに、読出許可信号が与えられている間、書込データを、前記クロック信号に従って、書き込み順序通りに読み出して出力する、先入れ先出し型のメモリ（２０）と、
前記メモリに与えられる書込許可信号の時間長さを、前記クロック信号に基づいて計測する計測手段（３２）と、
読み出し開始が指示されると、前記計測手段によって計測された書込許可信号の時間長さに相当する時間長さの前記読出許可信号を前記メモリに出力する読出許可信号出力手段（３４）と、を備えることを特徴とするメモリ装置。
【請求項２】
前記計測手段は、前記書込許可信号の時間長さの計測が完了すると、計測が完了したことを示す計測時間有効信号を前記読出許可信号出力手段に出力することを特徴とする請求項１に記載のメモリ装置。
【請求項３】
前記書込許可信号が与えられ始めた時点から、所定の時間が経過したときに、前記読出許可信号出力手段へ読み出し開始を指示する指示信号を出力する指示信号出力手段（３６）を備えることを特徴とする請求項１又は２に記載のメモリ装置。
【請求項４】
前記指示信号出力手段が、前記指示信号を出力するまでの前記所定の時間は、利用者によって設定可能であることを特徴とする請求項３に記載のメモリ装置。
【請求項５】
前記指示信号出力手段が出力する指示信号と、外部から与えられる指示信号との一方を選択して、前記読出許可信号出力手段に出力する選択手段（３８）を備えることを特徴とする請求項３又は４に記載のメモリ装置。
【請求項６】
前記読出許可信号出力手段は、前記メモリから前記書込データが読み出されて出力されている間、前記メモリから前記書込データが出力されていることを示すデータ有効信号を出力することを特徴とする請求項１乃至５のいずれか１項に記載のメモリ装置。
【請求項７】
前記読出許可信号出力手段は、外部からの読出停止指令を受け付けることが可能なものであり、前記読出停止指令を受領している間、前記読出許可信号の出力を停止し、前記読出停止指令の受領が終了すると、まだ出力していない時間長さ分の前記読出許可信号の出力を再開することを特徴とする請求項１乃至６のいずれか１項に記載のメモリ装置。
【請求項８】
前記読出許可信号出力手段は、外部からの読出停止指令を受け付けることが可能なものであり、前記読出停止指令を受領している間、前記読出許可信号の出力を停止し、前記読出停止指令の受領が終了すると、まだ出力していない時間長さ分の前記読出許可信号の出力を再開するものであり、前記読出停止指令を受領している間、前記データ有効信号の出力を停止することを特徴とする請求項６に記載のメモリ装置。
【請求項９】
前記読出許可信号出力手段は、前記計測手段によって計測された書き込み許可信号の時間長さに相当する時間長さの前記読み出し許可信号の出力を終了して、前記メモリからすべての前記書込データが読み出されて出力されるときに、読出完了信号を出力することを特徴とする請求項１乃至８のいずれか１項に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、先入れ先出し型のメモリを備えたメモリ装置に関するものである。
【背景技術】
【０００２】
例えば、特許文献１には、ＦＩＦＯ（First In First Out）メモリを制御する制御回路が開示されている。この制御回路は、ＦＩＦＯメモリの記憶データ量をカウントする計数回路を有する。そして、カウントされたＦＩＦＯメモリの記憶データ量と、ＦＩＦＯメモリから読み出したデータを受信する受信装置によってセットされた読み出しデータ要求数とを比較回路にて比較する。この比較の結果、ＦＩＦＯメモリの記憶データ量が読み出しデータ要求数以上となると、比較回路は、ＯＵＴＰＵＴ  ＲＥＡＤＹ信号をアクティブにする。
【０００３】
また、計数回路は、ＦＩＦＯメモリの空き量もカウントする。制御回路は、カウントされたＦＩＦＯメモリの空き量と、ＦＩＦＯメモリに書き込みデータを送信する送信装置によってセットされた書き込みデータ要求数とを比較する比較回路も備えている。この比較回路における比較の結果、ＦＩＦＯメモリの空き量が書き込みデータ以上となると、比較回路は、ＩＮＰＵＴ  ＲＥＡＤＹ信号をアクティブにする。
【０００４】
このようなＯＵＴＰＵＴ  ＲＥＡＤＹ信号やＩＮＰＵＴ  ＲＥＡＤＹ信号に基づくことで、特許文献１の制御回路によれば、受信装置や送信装置は、任意のデータ量で読み出しや書き込みを行うことが容易となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−１６５５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の制御回路は、送信装置が書き込もうとしているデータ量以上の空き量がＦＩＦＯメモリに生じたことや、受信装置が読み出そうとしているデータ量以上のデータがＦＩＦＯメモリに蓄積されたことを、上述したＲＥＡＤＹ信号を用いて外部装置（送信装置、受信装置）に報知しているだけのものにすぎない。
【０００７】
ここで、送信装置や受信装置の設計者は、通常、ＦＩＦＯメモリに対する書き込みデータと読み出しデータの数を同数とし、書き込み頻度と読み出し頻度とが同程度となるように設計を行うことが考えられる。このようにすれば、ＦＩＦＯメモリが空になってデータを読み出せないといった状況や、ＦＩＦＯメモリが一杯になってデータを書き込めないといった状況の発生を防止できるためである。
【０００８】
しかし、書き込みデータ数と読み出しデータ数の不一致などの設計ミスが生じた場合、データの書き込みと読み出しのバランスが崩れて、データを正しく読み出せなくなったり、データを書き込むことができなくなったりといった不具合が発生する可能性がある。このような不具合に起因して、システム全体に悪影響を及ぼすような場合、設計者は、その原因究明に多大な労力を費やす虞が生じる。
【０００９】
本発明は、上述した点に鑑みてなされたものであり、先入れ先出しメモリにおいて、設計ミスなどに起因して、書き込みデータ数と読み出しデータ数との不均衡が発生することを防止することが可能なメモリ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明によるメモリ装置は、
書込許可信号が与えられている間、クロック信号に従って、データの書き込みを行うとともに、読出許可信号が与えられている間、書込データを、クロック信号に従って、書き込み順序通りに読み出して出力する、先入れ先出し型のメモリ（２０）と、
メモリに与えられる書込許可信号の時間長さを、クロック信号に基づいて計測する計測手段（３２）と、
読み出し開始が指示されると、計測手段によって計測された書込許可信号の時間長さに相当する時間長さの読出許可信号をメモリに出力する読出許可信号出力手段（３４）と、を備えることを特徴とする。
【００１１】
上記のように、本発明によるメモリ装置では、計測手段が、書込許可信号の時間長さを計測する。そして、読出許可信号出力手段が、読み出し開始の指示に応じて、計測された書込許可信号の時間長さに相当する時間長さの読出許可信号をメモリに出力する。そのため、本発明によるメモリ装置では、読み出し開始の指示に応じて、自動的に、書込データのデータ量と同じデータ量の読出データの読み出しが行われる。従って、本発明によるメモリ装置を利用した回路を設計する際に、その設計者は、メモリ装置へのデータ書き込み数とデータ読み出し数との管理についてなんら考慮する必要がなく、設計ミスの発生の未然防止、設計負荷の軽減、設計回路の規模の減少など、種々のメリットを享受することが可能となる。
【００１２】
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
【００１３】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１４】
【図１】実施形態によるメモリ装置の構成を示す構成図である。
【図２】ＦＩＦＯメモリの通常の書き込み処理と読み出し処理について説明するための説明図である。
【図３】読出調整回路が備える機能をブロック図として示した機能ブロック図である。
【図４】外部回路から直接入力される外部入力読出開始信号と、読出許可信号生成ブロックの読出開始信号生成部によって生成される内部生成読出開始信号とを選択的に使用するための構成の一例を示した構成図である。
【図５】書込時間計測ブロックにおける処理内容を示すフローチャートである。
【図６】読出許可信号生成ブロックにおける処理内容を示すフローチャートである。
【図７】読出許可信号生成ブロックにおいて、読出開始信号を内部生成するための処理を示すフローチャートである。
【図８】読出調整回路の動作の一例を説明するためのタイミングチャートである。
【図９】図８の動作例よりも複雑な動作例を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態によるメモリ装置について、図面に基づいて詳細に説明する。図１は、本実施形態によるメモリ装置の構成を示す構成図である。図１に示すように、本実施形態によるメモリ装置１０は、ＦＩＦＯメモリ２０と、読出調整回路３０とを有している。
【００１６】
本実施形態では、ＦＩＦＯメモリ２０として、一般的に使用されている公知のＦＩＦＯメモリを用いる。図１には、ＦＩＦＯメモリ２０の基本的な入出力ポートが示されている。すなわち、図１に示すＦＩＦＯメモリ２０は、デュアルポート型のメモリであり、書込データが入力される入力ポートと、読出データが出力される出力ポートとを有する。さらに、ＦＩＦＯメモリ２０は、その他の入出力ポートとして、クロック（ＣＬＫ）信号ポート、書込許可信号ポート、ＦＵＬＬ信号ポート、読出許可信号ポート、ＥＭＰＴＹ信号ポート、ＲＥＳＥＴ信号ポートを有する。このＦＩＦＯメモリ２０の入出力信号および内部処理信号は、全てＣＬＫ信号ポートに入力されるＣＬＫ信号に同期して処理される。
【００１７】
例えば、ＦＩＦＯメモリ２０において、書込許可信号ポートに有効な書込許可信号（通常、ハイレベル）が入力されている間、ＣＬＫ信号に同期して、入力ポートに入力された複数ビットからなる書込データが、順に内部記憶素子（通常、ＲＡＭ）に書き込まれる。このように、内部記憶素子への書き込みはＣＬＫ信号に同期して行われ、あるＣＬＫ信号での書込データは、アドレスポインタが指し示すあるアドレスの内部記憶素子に書き込まれ、次のＣＬＫ信号での書込データは、その次のアドレスの内部記憶素子に書き込まれる。この書き込み処理は書込許可信号が有効になっている間はずっと継続される。
【００１８】
データの書き込みによりＦＩＦＯメモリ２０の内部記憶素子が一杯となり、それ以上のデータ書き込みができない状態となると、ＦＩＦＯメモリ２０は、ＦＵＬＬ信号ポートから、有効なＦＵＬＬ信号（通常、ハイレベル）を出力して、外部に書き込み不能状態を知らせる。本メモリ装置１０を利用する利用者（ユーザ）は、ＦＵＬＬ信号が有効になった場合、それ以上のデータの書き込みが行われないように、外部回路を設計する必要がある。例えば、ユーザは、書込許可信号を無効にして、ＦＩＦＯメモリ２０への書き込みができないようにするとともに、書込データの発生を一時中断するように、外部回路を設計する必要がある。
【００１９】
また、ＦＩＦＯメモリ２０において、読出許可信号ポートに有効な読出許可信号（通常、ハイレベル）が入力されている間、ＣＬＫ信号に同期して、複数ビットからなる読出データが出力ポートから出力される。この際、読出データは、内部記憶素子に書込データが書き込まれた順番で内部記憶素子から読み出されて、出力ポートから出力される。この読出処理により、内部記憶素子に記憶されている書込データが全て読み出されると、ＦＩＦＯメモリ２０は、ＥＭＰＴＹ信号ポートから、有効なＥＭＰＴＹ信号（通常、ハイレベル）を出力して、外部に読出不能状態を知らせる。なお、有効なＥＭＰＴＹ信号が出力されているにも係わらず、データの読出を行った場合、どのようなデータが読み出されるかは保障されない。
【００２０】
ＦＩＦＯメモリ２０は、さらに、ＲＥＳＥＴ信号ポートを備えている。このＲＥＳＥＴ信号ポートに有効なＲＥＳＥＴ信号が入力されると、内部記憶素子の書込データが全て消去され、ＦＩＦＯメモリ２０は初期状態に戻る。この際、データを書き込むべきアドレスや、データを読み出すべきアドレスを指定するアドレスポインタも初期位置に戻る。
【００２１】
次に、図２を参照して、ＦＩＦＯメモリ２０における、通常の書き込み処理と読み出し処理について説明する。なお、図２は、ＲＥＳＥＴ信号によりリセットされた直後の状態から、ＦＩＦＯメモリ２０が動作を開始した場合のタイミングチャートを示している。
【００２２】
リセット直後は、ＦＩＦＯメモリ２０の内部記憶素子にデータは書き込まれていない。そのため、図２のタイミングチャートの左端には、有効なＥＭＰＴＹ信号（ハイレベル）が出力されることが示されている。そして、タイミングＡにおいて、有効な書込許可信号の入力が開始されると、入力ポートに入力されている書込データの内部記憶素子への書き込みが開始される。最初のデータＤ１が書き込まれることにより、ＦＩＦＯメモリ２０は空の状態ではなくなるので、有効なＥＭＰＴＹ信号の出力が終了する。そして、書込許可信号が有効である間、ＣＬＫ信号に同期して書き込み処理が継続して実行される。図２には、８クロック分のデータＤ１〜Ｄ８が書き込まれる例が示されている。内部記憶素子には、この書込データＤ１〜Ｄ８の番号順に、各書込データＤ１〜Ｄ８が書き込まれる。そして、有効な書込許可信号の入力が終了すると、書き込み処理は終了する。なお、図２における、書き込み処理を行うデータ数に特に意味はない。
【００２３】
その後、タイミングＢにおいて、有効な読出許可信号の入力が開始されると、内部記憶素子に書き込まれたデータが書込順に読み出されて、出力ポートから読出データとして出力される。ただし、ＦＩＦＯメモリ２０には、内部記憶素子から書込データを読み出して出力ポートから出力するまでに遅延時間が存在する。図２では、この遅延時間をＣＬＫ信号の１クロック分に相当する時間として示しているが、この遅延時間は、ＦＩＦＯメモリ２０のハード構成に依存して変化する。
【００２４】
図２に示す例では、読出許可信号は５クロック分の長さであるため、５個のデータ（Ｄ１〜Ｄ５）が読み出され、読出許可信号から１クロック分遅延して出力ポートから出力されている。この場合、有効な読出許可信号が終了した時点で、ＦＩＦＯメモリ２０には、３個の書込データＤ６〜Ｄ８が残っていることになる。なお、図２には、５クロック分の間、読出許可信号を有効にした例を示しているが、単なる一例にすぎない。また、読出処理を開始するタイミングＢに関しても、書込処理終了後のある時点という程度の意味に過ぎない。
【００２５】
ここで、書込データＤ１〜Ｄ８が書き込まれた順序は、Ｄ１→Ｄ２→・・・→Ｄ８であるので、読み出されて出力される読出データは、Ｄ１→Ｄ２→Ｄ３→Ｄ４→Ｄ５の順となる。そして、読み出されたデータはＦＩＦＯメモリ２０の内部記憶素子から消去される。正確には、読み出し対象となる書込データのアドレスが、アドレスポインタを用いて特定されるが、あるアドレスの書込データが読み出されると、アドレスポインタは、次回読み出す予定の書込データのアドレスに変わるので、既に読み出した書込データはもはや読み出すことができなくなる。よって、結果的に書込データを消去したことと同じ状態となる。このように、ＦＩＦＯメモリ２０では、通常のＲＡＭのように同一アドレスに何度もアクセスすることはできず、アクセスは１回のみであるという特徴がある。
【００２６】
また、図２のタイミングチャートにおいて、例えばタイミングＣの後に、所定数のデータの書き込みを許可する書込許可信号が入力され、それら所定数のデータの書込が行われた結果、ＦＩＦＯメモリ２０の内部記憶素子が一杯になると、図２に点線で描かれているように、有効なＦＵＬＬ信号が出力されることになる。
【００２７】
上述したように、ＦＩＦＯメモリ２０は、内部記憶素子にデータを書き込むとともに、その書き込まれたデータを読み出して出力するものである。そのため、書き込みデータ数と読み出しデータ数の不一致などの設計ミスが生じた場合、データの書き込みと読み出しのバランスが崩れることになる。この際、データ書き込みが過多となる場合には、データの書き込みが不能となり、データ読み出しが過多となる場合には、正しくデータを読み出せなくなる不具合が発生する。
【００２８】
このような不具合の発生を防止するため、本実施形態によるメモリ装置１０は、読出調整回路３０を備えている。この読出調整回路３０は、有効な書込許可信号の時間長さを、ＣＬＫ信号に基づいて計測し、読出開始タイミングとなったときに、その計測した時間長さに相当する時間長さの読出許可信号を出力するものである。つまり、読出調整回路３０は、書込許可信号と同じ長さの読出許可信号を生成することにより、自動的に、書き込みデータと同じ量のデータを読み出すことを可能とするものである。以下、読出調整回路３０について詳しく説明する。
【００２９】
図３は、読出調整回路３０が備える機能を機能ブロック図として示したものである。図３に示すように、読出調整回路３０は、書込時間計測ブロック３２と、読出許可信号生成ブロック３４とを有する。
【００３０】
書込時間計測ブロック３２は、ＦＩＦＯメモリ２０に入力されるのと同じ書込許可信号及びＣＬＫ信号を入力する。そして、入力した書込許可信号のレベルがローレベルからハイレベルに変化したとき、有効な書込許可信号の入力が開始されたことを示す書込許可立上り信号を、読出許可信号生成ブロック３４に対して出力する。
【００３１】
また、書込時間計測ブロック３２は、有効な書込許可信号の入力が開始されると、書込許可信号が有効となっている間の時間を、入力されたＣＬＫ信号に基づいて計測する。具体的には、書込許可信号がハイレベルとなっている間のＣＬＫ信号の数をカウントし、そのカウント値を書込時間計測値として読出許可信号生成ブロック３４に出力する。
【００３２】
さらに、書込時間計測ブロック３２は、有効な書込許可信号の入力が終了して、書込許可信号の時間計測が完了すると、書込時間計測値が有効であることを示す計測時間有効信号を出力する。
【００３３】
読出許可信号生成ブロック３４は、図３に示すように、図示しない外部回路から、読出開始信号、読出遅延時間信号、及び読出停止信号を入力可能となっている。また、読出許可信号生成ブロック３４は、読出許可信号をＦＩＦＯメモリ２０に出力することに加え、読出データ有効信号、読出完了信号を出力する。
【００３４】
読出開始信号は、ＦＩＦＯメモリ２０からデータを読み出すタイミングとなったときに、外部回路から読出許可信号生成ブロック３４に入力されるものである。この読出開始信号は、例えば１クロック分のパルス信号からなる。読出許可信号生成ブロック３４は、読出開始信号が入力されると、後述するように、書込時間計測値に応じた長さの読出許可信号の出力を開始する。つまり、本実施形態では、従来のように、ＦＩＦＯメモリ２０に対してデータの読出し処理を行う期間の間、有効となる読出許可信号を与える必要はなく、データの読出しを開始するタイミングに合わせて、読出開始信号を与えるだけで良い。
【００３５】
読出遅延時間信号は、読出許可信号生成ブロック３４において、書込許可立上り信号を基準として、本実施形態によるメモリ装置１０の利用者が設定した所望の遅延時間が経過したときに、自動的に読出開始信号を生成するために利用されるものである。つまり、読出遅延時間信号は、利用者が望む所定の遅延時間を示すためのもので、外部回路から、読出許可信号生成ブロック３４に入力される。読出許可信号生成ブロック３４は、読出遅延時間信号が与えられると、書込許可立上り信号が入力された時点から、読出遅延時間信号が示す所望の遅延時間が経過したことを判定する。そして、遅延時間が経過したときに、自動的に読出開始信号を生成する。そして、生成された読出開始信号に応じて、ＦＩＦＯメモリ２０への読出許可信号の出力が開始される。
【００３６】
このように、読出調整回路３０は、書き込み処理が開始された時点を基準として、利用者が設定する所望の遅延時間経過後に、読出開始信号を自動的に生成する機能を備えている。このため、利用者は、用途により、外部回路から直接、読出開始信号をメモリ装置１０に入力することも可能であるし、読出調整回路３０による読出許可信号の自動生成機能を利用することも可能である。
【００３７】
図４は、外部回路から直接入力される外部入力読出開始信号と、読出許可信号生成ブロック３４の読出開始信号生成部３６によって生成される内部生成読出開始信号とを選択的に使用するための構成の一例を示している。図４に示す例では、外部入力読出開始信号と内部生成読出開始信号とが入力され、選択指定信号に従って、いずれか一方の信号を選択して出力する選択回路３８が設けられている。選択指定信号は、外部回路から入力されても良い。また、メモリ装置１０内部において、選択指定信号を固定し、どちらか一方しか選択されないように構成しても良い。そして、図４に示すように、選択回路３８から出力された読出開始信号は、読出許可信号生成ブロック３４の読出許可信号生成部４０に与えられる。読出許可信号生成部４０は、読出開始信号が入力されると、読出許可信号の出力を開始する。
【００３８】
読出停止信号は、ＦＩＦＯメモリ２０からデータの読出を一時中断する必要が生じたときに、外部回路から読出調整回路３０に入力されるものである。この読出停止信号を受けると、読出許可信号生成ブロック３４の読出許可信号生成部４０は、有効な読出許可信号の出力を一時的に停止する。そして、読出停止信号が終了したとき、読出許可信号生成部４０は、まだ出力していない残りの時間分の読出許可信号の出力を再開する。
【００３９】
例えば、本実施形態のメモリ装置１０の用途として、有線もしくは無線通信を行う際、データを一時的に保存するバッファとして使用することが考えられる。このような用途に使用された場合、通信チャネルの状況によっては、データの通信を一時的に中断させることが必要となる場合がある。本実施形態によるメモリ装置１０は、読出停止信号によってデータの読出の一時停止が可能であるため、そのような用途においても適切に対応することが可能となる。
【００４０】
読出データ有効信号は、ＦＩＦＯメモリ２０の出力ポートから、読出データが出力されているときに、有効（例えば、ハイレベル）となる信号である。利用者は、この読出データ有効信号により、ＦＩＦＯメモリ２０から読出データが出力されていることを認識することができる。従って、利用者は、例えばメモリ装置１０の後段に、読出データ有効信号が有効となっているときに読出データの取り込みを行う外部回路を設けることにより、確実に読出データの取り込みを行うことが可能となる。
【００４１】
また、読出完了信号は、書込許可信号と同じ時間長さの読出許可信号により、すべての読出データの出力が完了したときに出力される信号である。利用者は、この読出完了信号に基づき、すべての読出データの出力が完了したことを把握することができる。従って、例えば、データの読出が一時停止された場合であっても、読出停止信号により、データの出力の停止が、一時中断によるものか、全データの出力完了によるものかを正確に識別することができる。
【００４２】
次に、書込時間計測ブロック３２及び読出許可信号生成ブロック３４におけるより詳細な処理内容を図５〜図７のフローチャートを参照して説明する。図５のフローチャートは書込時間計測ブロック３２における処理内容を示し、図６及び図７のフローチャートは読出許可信号生成ブロック３４の処理内容を示している。
【００４３】
まず、図５のフローチャートに示す処理について説明する。図５のフローチャートのステップＳ１００では、初期化処理として、計測時間有効信号をクリアして無効化する。続くステップＳ１１０では、書込許可信号の立上りが検出されたか否か、すなわち、有効な書込許可信号の入力が検出されたか否かを判定する。書込許可信号の立上りが検出されたと判定されるとステップＳ１２０の処理に進む。一方、立上りが検出されない場合には、その検出まで待機する。
【００４４】
ステップＳ１２０では、書き込み処理が開始されたことを知らせるために、読出許可信号生成ブロック３４に向けて書込許可立上り信号を出力する。ステップＳ１３０では、書込許可信号の時間長さの計測開始に備えて、あらためて計測時間有効信号をクリアする。つまり、計測時間有効信号は、書込許可信号の時間長さの計測が完了としたときに有効化される信号であり、計測が完了するまでは無効化された状態に維持される。そして、ステップＳ１４０において、書込許可信号の時間長さの計測を開始する。具体的には、書込許可信号が有効となっている間に、ＣＬＫ信号の入力数をカウントする書込時間計測カウンタによるカウント動作を開始する。
【００４５】
続くステップＳ１５０では、書込許可信号の立下りが検出されたか否か、すなわち、有効な書込許可信号の入力が終了したか否かを判定する。書込許可信号の立下りが検出されたと判定されるとステップＳ１６０の処理に進む。一方、立下りが検出されない場合には、その検出まで待機する。なお、この待機中も、上述した書込時間計測カウンタによるＣＬＫ信号のカウント動作は継続して行われている。
【００４６】
ステップＳ１６０では、有効な書込許可信号の入力が終了したため、書込許可信号の時間長さの計測を終了する。具体的には、上述した書込時間計測カウンタによるＣＬＫ信号のカウント動作を停止させる。そして、ステップＳ１７０において、書込時間レジスタに書込時間計測値（書込時間計測カウンタのカウント値）をセットして、読出許可信号生成ブロック３４に対して、書込時間計測値を出力できる状態にする。続くステップＳ１８０では、書込許可信号の時間長さの計測が完了し、書込時間計測値が確定したため、計測時間有効信号を有効化する。すなわち、計測時間有効信号のレベルをローレベルからハイレベルに変化させる。
【００４７】
次に、図６のフローチャートに示す処理について説明する。まず、ステップＳ２００では、外部入力読出開始信号と内部生成読出開始信号とから選択された一方の読出開始信号の立上りが検出されたか否か、すなわち、有効な読出開始信号の入力が検出されたか否かを判定する。読出開始信号の立上りが検出されたと判定されるとステップＳ２１０の処理に進む。一方、立上りが検出されない場合には、その検出まで待機する。
【００４８】
ステップＳ２１０では、ＦＩＦＯメモリ２０に対して、読出許可信号の出力を開始する。これにより、ＦＩＦＯメモリ２０において、内部記憶素子に書き込まれたデータの読出処理が開始される。続くステップＳ２２０では、読出許可信号を出力している時間の計測を開始する。具体的には、読出時間計測カウンタにより、読出許可信号の出力を開始してから読出調整回路３０に入力されるＣＬＫ信号の数のカウントを開始する。
【００４９】
ステップＳ２３０では、読出停止信号は無効のままであるか、それとも有効化されたかどうかを判定する。無効のままであると判定されると、ステップＳ２６０の処理に進み、有効化されたと判定されると、ステップＳ２４０の処理に進む。
【００５０】
ステップＳ２４０では、読出許可信号を出力している時間の計測を一時停止する。具体的には、上述した読出時間計測カウンタによるＣＬＫ信号のカウント動作を一時中断する。続くステップＳ２５０では、読出許可信号をクリアし、無効化する。これにより、ＦＩＦＯメモリ２０におけるデータの読出処理が一時的に中断される。この後、ステップＳ２３０の処理に進み、ステップＳ２３０における判定結果が、読出停止信号は無効となると、ステップＳ２６０の処理に進む。
【００５１】
ステップＳ２６０では、読出許可信号を出力している時間の計測が一時停止中であるか否かを判定する。つまり、以前にステップＳ２５０の処理が実行され、読出許可信号がクリアされているどうかを判定する。一時停止中、つまり読出許可信号がクリアされていると判定された場合にはステップＳ２７０の処理に進み、一時停止中ではないと判定された場合にはステップＳ２９０の処理に進む。
【００５２】
ステップＳ２７０では、読出許可信号の出力を開始する。さらに、ステップＳ２８０において、読出許可信号を出力している時間の計測を再開させる。つまり、読出時間計測カウンタによるカウント動作を再開させる。この場合、読出時間計測カウンタは、一時停止前にカウントしたカウント値を保持しており、その保持したカウント値に上積みするように、ＣＬＫ信号のカウント動作を行う。
【００５３】
ステップＳ２９０では、後述するステップＳ３２０にてセットされる書込時間確定フラグがセット済みであるか否かを判定する。書込時間確定フラグがセット済みであると判定した場合ステップＳ３３０の処理に進み、セット済みではないと判定した場合ステップＳ３００の処理に進む。
【００５４】
ステップＳ３００では、書込時間計測ブロック３２から有効な計測時間有効信号を受信したか否かを判定する。まだ有効な計測時間有効信号を受信していないと判定した場合ステップＳ２３０の処理に戻る。一方、有効な計測時間有効信号を受信したと判定した場合ステップＳ３１０の処理に進む。
【００５５】
ステップＳ３１０では、書込時間計測ブロック３２から出力されている書込時間計測値を取り込み、計測値レジスタに保存する。つまり、書込時間計測ブロック３２から有効な計測時間有効信号を受信したのであるから、書込時間計測ブロック３２において、書込許可信号の時間長さの計測が完了し、書込時間計測値が確定した状態である。そのため、書込時間計測ブロック３２からの書込時間計測値を取り込んで保存する。これにより、読出許可信号生成ブロック３４は、書込時間計測ブロック３２における確定した書込時間計測値を取得することができる。そして、ステップＳ３２０において、書込時間確定フラグをセットする。すなわち、書込時間確定フラグは、読出許可信号生成ブロック３４が、書込時間計測ブロック３２の確定した書込時間計測値を取得したことを示すフラグである。
【００５６】
続くステップＳ３３０では、読出時間計測カウンタによって計測されている読出時間計測値と、ステップＳ３２０において計測値レジスタに保存された書込時間計測値とを比較する。この比較処理において、読出時間計測値が書込時間計測値以上であると判定されると、書込時間計測値に等しい時間分だけ読出許可信号が出力されたことを意味するので、ステップＳ３４０の処理に進み、読出許可信号をクリアして無効化する。一方、読出時間計測値が書込時間計測値未満であると判定されると、まだ、読出許可信号の出力時間は、書込時間計測値が示す時間に達していないので、ステップＳ２３０の処理に戻って、読出許可信号の出力を継続する。
【００５７】
ステップＳ３４０の処理の後に実行されるステップＳ３５０においては、読出許可信号の出力時間の計測を終了する。すなわち、読出時間計測カウンタによるカウント動作を停止し、そのカウント値をクリアする。続くステップＳ３６０では、ＦＩＦＯメモリ２０における出力遅延時間経過後に、読出完了信号を出力する。最後に、ステップＳ３７０において、書込時間確定フラグをクリアする。
【００５８】
なお、読出データ有効信号の出力処理は、上述した図６のフローチャートに示されていないが、読出データ有効信号は、読出許可信号をＦＩＦＯメモリ２０の出力遅延時間分だけ遅らせたものであるため、シフトレジスタ等を用いて、読出許可信号を遅延させる回路を読出調整回路３０内に設ければ良い。
【００５９】
次に、図７のフローチャートに示す処理について説明する。図７は、読出調整回路３０の読出許可信号生成ブロック３４が、内部生成読出開始信号を出力するための処理を示すフローチャートである。このため、利用者が、外部回路から直接、読出開始信号を入力する場合には、図７のフローチャートに示す処理による結果は無視される。
【００６０】
まず、ステップＳ４００において、初期化処理として、読出開始信号をクリアして無効化する。続くステップＳ４１０では、書込時間計測ブロック３２から書込許可立上り信号が入力されたか否かを判定する。書込許可立上り信号が入力されたと判定した場合、ステップＳ４２０に進み、入力されないと判定した場合、入力されたと判定するまで待機する。
【００６１】
ステップＳ４２０では、書込許可立上り信号が入力されてからの経過時間である遅延時間の計測を開始する。続くステップＳ４３０では、ステップＳ４２０において計測が開始された遅延時間計測値が、読出遅延時間信号によって設定された設定遅延時間以上であるか否かを判定する。遅延時間計測値が設定遅延時間未満であると判定すると、設定遅延時間以上となるまで待機する。一方、遅延時間計測値が設定遅延時間以上であると判定すると、ステップＳ４４０の処理に進む。
【００６２】
ステップＳ４４０では、書込許可信号の立上りから設定遅延時間が経過したので、読出開始信号を出力する。そして、ステップＳ４５０では、遅延時間の計測を終了する。
【００６３】
上述した図５〜図７のフローチャートに示す処理による、読出調整回路３０の動作の一例を図８のタイミングチャートを用いて説明する。なお、図８において、書込許可信号は、外部回路からメモリ装置１０に入力される信号であり、読出開始信号は、外部回路によって入力される場合もあれば、読出調整回路３０において内部生成される場合もある信号である。
【００６４】
外部回路から入力される書込許可信号が有効の間、書込データがＣＬＫ信号に同期してＦＩＦＯメモリ２０の内部記憶素子に書込まれる。この書込許可信号が有効になっている時間（パルス幅）が、読出調整回路３０の書込時間計測ブロック３２によって計測される。計測された書込時間は、読出調整回路３０の読出許可信号生成ブロック３４内に記録され、後にＦＩＦＯメモリ２０からデータの読出し処理を実施するときに使用される。
【００６５】
外部回路から直接、読出開始信号を入力する場合、読出開始信号をどのタイミングで有効にするかに関しては、利用者の判断に委ねられる。例えば、書き込んだ全データを一定の時間だけ遅延させたい用途で本メモリ装置１０を使用する場合、書込許可信号が立ち上がった時点から、（狙いとする遅延時間―ＦＩＦＯメモリ２０の出力遅延時間）後に読出開始信号を有効にするようにすれば良い。なお、ＦＩＦＯメモリ２０の出力遅延時間とは、上述した通り、読出許可信号がＦＩＦＯメモリ２０に入力されてから、読出データの出力が開始されるまでの遅延時間のことである。ただし、このような使い方であれば、読出遅延時間信号によって遅延時間を指定する方が便利である。また、すべてのデータの書き込みが終了した時点から一定時間後にデータを読み出す用途で本メモリ装置１０を使用する場合には、書込許可信号が立ち下った時点から、（狙いとする一定時間―ＦＩＦＯメモリ２０の出力遅延時間）後に、読出開始信号を有効にすれば良い。
【００６６】
ここで、外部回路から入力される読出開始信号は、読み出し処理を開始するためのトリガーとなる入力信号であり、この信号のパルス幅自体は意味を持たない。本実施形態では、読出開始信号の立ち上がりを読出調整回路３０で検出して、ＦＩＦＯメモリ２０に与える読出許可信号の生成を開始する。そのため、読出開始信号は、最低１クロック信号分のパルス幅を持っていれば良い。
【００６７】
なお、図８には、書込許可信号が有効となっている間に、読出開始信号が出力されて、データの読み出し処理を開始した例を示している。本実施形態では、上述したように、デュアルポート型のＦＩＦＯメモリ２０を使用しているため、書き込み処理と読み出し処理を並行して行うことができる。
【００６８】
読出開始信号によって出力開始される読出許可信号は、計測された書込時間の時間長さ分だけ、読出調整回路３０から自動的に出力される。また、読出調整回路３０は、図８に示すように、読出許可信号に対して、ＦＩＦＯメモリ２０の出力遅延時間分だけ遅延した読出データ有効信号も出力する。
【００６９】
有効な読出許可信号が読出調整回路３０から出力されることにより、ＦＩＦＯメモリ２０から読出データが出力される。この読出データは、出力遅延時間分だけ読出許可信号よりも遅れる。このため、読出データ有効信号が示すデータ有効区間と、ＦＩＦＯメモリ２０からの読出データの出力区間とが一致する。従って、利用者は、読出データ有効信号を使って、読出データが出力されていることを認識することができる。
【００７０】
全ての読出データの出力が完了するときに、読出調整回路３０は読出完了信号を出力する。この読出完了信号は、全ての読出データの出力が完了したことを外部回路に通知するためのものであり、この信号のパルス幅は最後のデータの１クロック分である。この読出完了信号により、外部回路において、ＦＩＦＯメモリ２０に書込んだデータの全読出しが完了したことを認識することができる。
【００７１】
次に、図８のタイミングチャートに示した動作よりも複雑な動作例を、図９のタイミングチャートを用いて説明する。図９のタイミングチャートに示す動作例は、読出停止指令信号により、ＦＩＦＯメモリ２０からの読出データの出力が一時中断される点が、図８のタイミングチャートに示す動作例と異なる。
【００７２】
読出停止指令信号は、上述したように、例えば、本メモリ装置１０の後段に接続された通信処理回路から、通信チャネルの混雑状況に応じて出力される。読出停止指令信号が有効になると、図９に示すように、読出許可信号が無効化され、ＦＩＦＯメモリ２０の出力遅延時間分だけ遅れて読出データ有効信号も無効化される。これにより、ＦＩＦＯメモリ２０から、読出データの出力が一時中断される。
【００７３】
読出停止指令信号の状態が有効から無効に変化すると、図９に示すように、読出許可信号が有効化され、ＦＩＦＯメモリ２０の出力遅延時間分だけ遅れて読出データ有効信号も有効化される。これにより、ＦＩＦＯメモリ２０から、読出データの出力が再開される。
【００７４】
このように読出データの出力の一時中断を行った場合、読出調整回路３０では、一時中断する前の読出許可信号の出力時間と、一時中断後の読出許可信号の出力時間との合計時間が、書込時間計測値と等しくなるように、一時中断後の読出許可信号の出力時間を制御する。従って、一時中断があっても、書き込まれたデータと同じ量のデータを読み出すことができる。なお、図９には、読み出し処理中に読出停止指令信号が１回出力された例を示しているが、読出停止指令信号は、読み出し処理中に複数回出力されることもあり得る。この場合、複数回の読み出し停止指令信号によって３箇所以上に分断された読出許可信号の出力時間の合計値が書込時間計測値に一致するように制御される。
【００７５】
また、図９に示すように、読出停止指令信号によって読出データの出力が一時中断された場合、読出データ有効信号だけでは、読出データの出力の停止が、一時中断によるものか、全データの出力完了によるかを判別することはできない。しかし、本実施形態では、すべての読出データの出力が完了したとき、読出調整回路３０が読出完了信号を出力するように構成している。このため、図９に示すような状況であっても、読出完了信号の有無に基づき、データの出力の停止が、一時中断によるものか、全データの出力完了によるものかを正確に識別することができる。
【００７６】
以上、本発明の好ましい実施形態について説明したが、本発明は、上述した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【００７７】
例えば、上述した実施形態のメモリ装置１０の読出調整回路３０は、ハードウエア（例えば、ＦＰＧＡや専用ＩＣ）によって実現されても良いし、クロック信号に従った処理が間に合うならば、ＣＰＵ等によって実行されるソフトウエアによって実現されても良い。
【００７８】
また、上述した実施形態では、読出調整回路３０が、外部からの読出開始信号と、内部で読出開始信号を生成するための遅延時間を示す読出遅延時間信号との入力を受け付けるとともに、いずれかの読出開始信号を選択する構成を示した。しかしながら、読出調整回路３０は、外部からの読出開始信号のみを受け付ける構成としても良いし、読出遅延時間信号のみを受け付けて、読出開始信号を内部で生成するようにしても良い。このようにすれば、いずれの場合であっても、一方の読出開始信号を選択するための構成を省略することができる。
【符号の説明】
【００７９】
１０  メモリ装置
２０  ＦＩＦＯメモリ
３０  読出調整回路
３２  書込時間計測ブロック
３４  読出許可信号生成ブロック
３６  読出開始信号生成部
３８  選択回路
４０  読出許可信号生成部
【図１】
0006337730.tif 000002
【図２】
0006337730.tif 000003
【図３】
0006337730.tif 000004
【図４】
0006337730.tif 000005
【図５】
0006337730.tif 000006
【図６】
0006337730.tif 000007
【図７】
0006337730.tif 000008
【図８】
0006337730.tif 000009
【図９】
0006337730.tif 000010