(57)【要約】【課題】システム全体の性能を維持しながらデータのオーバーフロー及びアンダーフローの発生を確実に防止することのできるＦＩＦＯメモリを提供すること。【解決手段】満杯フラグ発生／解除回路１８は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡが一致する状態で、満杯フラグＦＦにより制御された書き込み制御クロックが入力されると満杯フラグＦＦを生成する。また、空フラグ発生／解除回路１９は、次の読み出しポインタＲＱＣと現在の書き込みポインタＷＱＡが一致する状態で、空フラグＥＦにより制御された読み出し制御クロックが入力されると空フラグＥＦを生成する。これにより、メモリ１２が満杯状態或いは空状態となった場合の満杯フラグＦＦ或いは空フラグＥＦの発生が高速化される。【選択図】　　　図１
2004062630.tif 000002
【特許請求の範囲】
【請求項１】
書き込みクロックに従って書き込みポインタを更新する書き込みカウンタと、読み出しクロックに従って読み出しポインタを更新する読み出しカウンタと、前記書き込みポインタに対応するメモリセルにデータを書き込む書き込み動作及び前記読み出しポインタに対応するメモリセルのデータを読み出す読み出し動作を行うメモリと、を備えるＦＩＦＯメモリであって、
現在の読み出しポインタと次の書き込みポインタが一致する状態で与えられる書き込みクロックに同期して満杯フラグを発生させる満杯フラグ制御手段と、
現在の書き込みポインタと次の読み出しポインタが一致する状態で与えられる読み出しクロックに同期して空フラグを発生させる空フラグ制御手段と
を備えることを特徴とするＦＩＦＯメモリ。
【請求項２】
書き込みクロックに従って書き込みポインタを更新する書き込みカウンタと、読み出しクロックに従って読み出しポインタを更新する読み出しカウンタと、前記書き込みポインタに対応するメモリセルにデータを書き込む書き込み動作及び前記読み出しポインタに対応するメモリセルのデータを読み出す読み出し動作を行うメモリと、を備えるＦＩＦＯメモリであって、
現在の読み出しポインタと次の書き込みポインタが一致する状態で与えられる書き込みクロックに同期して満杯フラグを発生させ、現在の読み出しポインタと現在の書き込みポインタが一致していない状態で与えられる書き込みクロックに同期して前記満杯フラグを解除する満杯フラグ制御手段と、
現在の書き込みポインタと次の読み出しポインタが一致する状態で与えられる読み出しクロックに同期して空フラグを発生させ、現在の読み出しポインタと現在の書き込みポインタが一致していない状態で与えられる読み出しクロックに同期して前記空フラグを解除する空フラグ制御手段と
を備えることを特徴とするＦＩＦＯメモリ。
【請求項３】
現在の読み出しポインタと次の書き込みポインタを比較し、該２つのポインタが一致する場合に前記満杯フラグを発生させるための信号を出力する第１の比較手段と、
現在の書き込みポインタと次の読み出しポインタを比較し、該２つのポインタが一致する場合に前記空フラグを発生させるための信号を出力する第２の比較手段と
を備えることを特徴とする請求項１又は２記載のＦＩＦＯメモリ。
【請求項４】
現在の読み出しポインタと現在の書き込みポインタとを比較し、該２つのポインタが不一致である場合に前記満杯フラグ或いは前記空フラグを解除させるための信号を出力する第３の比較手段を備えることを特徴とする請求項１乃至３の何れか一項記載のＦＩＦＯメモリ。
【請求項５】
前記満杯フラグ制御手段は、前記第１の比較手段から出力される信号を前記満杯フラグにより制御された書き込みクロックに同期して取り込む比較結果判定手段を備え、
前記空フラグ制御手段は、前記第２の比較手段から出力される信号を前記空フラグにより制御された読み出しクロックに同期して取り込む比較結果判定手段を備える、ことを特徴とする請求項３又は４記載のＦＩＦＯメモリ。
【請求項６】
前記満杯フラグ制御手段は、前記第３の比較手段から出力される信号を書き込みクロックに同期して取り込む比較結果判定手段を備え、
前記空フラグ制御手段は、前記第３の比較手段から出力される信号を読み出しクロックに同期して取り込む比較結果判定手段を備える、ことを特徴とする請求項４又は５記載のＦＩＦＯメモリ。
【請求項７】
前記メモリは、前記書き込みカウンタから出力される現在の書き込みポインタに応答して書き込み動作を行い、前記読み出しカウンタから出力される現在の読み出しポインタに応答して読み出し動作を行うことを特徴とする請求項１乃至６の何れか一項記載のＦＩＦＯメモリ。
【請求項８】
前記メモリは、前記書き込みカウンタから出力される次の書き込みポインタを予め入力して前記満杯フラグにより制御された書き込みクロックに同期して書き込み動作を行い、前記読み出しカウンタから出力される次の読み出しポインタを予め入力して前記空フラグにより制御された読み出しクロックに同期して読み出し動作を行うことを特徴とする請求項１乃至６の何れか一項記載のＦＩＦＯメモリ。
【請求項９】
前記メモリは、
複数のメモリセルと、
前記満杯フラグにより制御された書き込みクロックに同期して前記メモリセルを順次選択する第１シフトレジスタと、
該第１シフトレジスタにより選択されたメモリセルにデータを書き込む書き込み回路と、
前記空フラグにより制御された読み出しクロックに同期して前記メモリセルを順次選択する第２シフトレジスタと、
該第２シフトレジスタにより選択されたメモリセルのデータを読み出す読み出し回路と
を備えることを特徴とする請求項１乃至６の何れか一項記載のＦＩＦＯメモリ。
【請求項１０】
請求項１乃至９の何れか一項記載のＦＩＦＯメモリを備えたことを特徴とする半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＦＩＦＯメモリ及び半導体装置に係り、詳しくは高速動作するシステムと低速動作するシステム間のデータ転送を行う際に使用して好適なＦＩＦＯメモリに関する。
【０００２】
一般に、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ　Ｆｉｒｓｔ−Ｏｕｔ）メモリは、２つのシステム間のデータ転送に多く用いられる。ＦＩＦＯメモリはデータの書き込みと読み出しを非同期で行うことが可能であり、データ転送を行う双方のシステムは互いに非同期（異なる動作周波数）で動作することが可能である。このような動作周波数の異なるシステム間のデータ転送を行う際には、ＦＩＦＯメモリにおけるデータの満杯状態や空状態を監視し、オーバーフローやアンダーフローを確実に防止する必要がある。
【０００３】
【従来の技術】
図１５は、従来のＦＩＦＯメモリの構成を示すブロック回路図である。
このＦＩＦＯメモリ１１１は、例えばデータ転送を行う図示しない２つのシステム間に設けられている。尚、ＦＩＦＯメモリ１１１に接続される各システム（データ送信側のシステムとデータ受信側のシステム）の動作周波数は互いに異なり、双方のシステムはそれぞれ非同期で動作する。
【０００４】
ＦＩＦＯメモリ１１１は、双方のシステム間で転送するデータを保持するメモリ１１２と、書き込みカウンタ１１３と、読み出しカウンタ１１４と、比較回路１１５と、フラグ発生／解除回路１１６とを備えている。
【０００５】
メモリ１１２は、一方（データ送信側）のシステムが出力するデータを書き込むための書き込みポートと、該メモリ１１２に格納されているデータを読み出して他方（データ受信側）のシステムに供給するための読み出しポートとを備える２ポートメモリである。このメモリ１１２は、該メモリ１１２に格納されているデータをそれが書き込まれた順に読み出す。
【０００６】
書き込みカウンタ１１３は、データ送信側のシステムの動作周波数を持つ書き込みクロックＷＣＫを入力し、データ書き込み時のメモリ１１２のアドレスを示す書き込みポインタＷＱを生成する。詳しくは、書き込みカウンタ１１３は、書き込みクロックＷＣＫの入力毎に書き込みポインタＷＱをインクリメントしてメモリ１１２に出力し、メモリ１１２は、その書き込みポインタＷＱに対応するアドレスのメモリセル（図示略）にデータを書き込む。
【０００７】
同様に、読み出しカウンタ１１４は、データ受信側のシステムの動作周波数を持つ読み出しクロックＲＣＫを入力し、データ読み出し時のメモリ１１２のアドレスを示す読み出しポインタＲＱを生成する。詳しくは、読み出しカウンタ１１４は、読み出しクロックＲＣＫの入力毎に読み出しポインタＲＱをインクリメントしてメモリ１１２に出力し、メモリ１１２は、その読み出しポインタＲＱに対応するアドレスのメモリセル（図示略）からデータを読み出す。
【０００８】
尚、上記した各カウンタ１１３，１１４は、それぞれ所定数ずつのポインタＷＱ，ＲＱを出力した後、再び最初のポインタＷＱ，ＲＱを出力するように構成されるリングカウンタである（但し、各カウンタ１１３，１１４でのカウント数は同じ）。
【０００９】
比較回路１１５は、データの書き込み時に書き込みカウンタ１１３から出力される書き込みポインタＷＱとその時の読み出しポインタＲＱとを比較し、各ポインタＷＱ，ＲＱが一致するか否かを判断する。また、比較回路１１５は、データの読み出し時に読み出しカウンタ１１４から出力される読み出しポインタＲＱとその時の書き込みポインタＷＱとを比較し、各ポインタＲＱ，ＷＱが一致するか否かを判断する。
【００１０】
フラグ発生／解除回路１１６は、比較回路１１５から出力される検出信号に応答して、メモリ１１２に格納されているデータが満杯状態であることを示す満杯フラグＦＦ、或いはメモリ１１２内のデータが空状態であることを示す空フラグＥＦを生成する。
【００１１】
詳述すると、フラグ発生／解除回路１１６は、書き込み動作時に書き込みポインタＷＱと読み出しポインタＲＱとが互いに一致する場合に、それを検出する比較回路１１５からの検出信号に応答して満杯フラグＦＦを生成する。この満杯フラグＦＦに応答して書き込みカウンタ１１３は動作を停止する。逆に、フラグ発生／解除回路１１６は、読み出し動作時に読み出しポインタＲＱと書き込みポインタＷＱとが互いに一致する場合に、それを検出する比較回路１１５からの検出信号に応答して空フラグＥＦを生成する。この空フラグＥＦに応答して読み出しカウンタ１１４は動作を停止する。
【００１２】
このようなＦＩＦＯメモリ１１１と接続される２つのシステムにおいて、例えば、データ送信側のシステムの動作周波数がデータ受信側のシステムの動作周波数よりも高い場合は、書き込み動作が読み出し動作よりも多くなる。
【００１３】
その結果、メモリ１１２に書き込まれたが、まだ読み出されていないデータが次第に増加し、遂にはメモリ１１２内に新たなデータを書き込み可能とするアドレスがなくなって、メモリ１１２は満杯状態となる。そして、この状態では、書き込みカウンタ１１３から出力される書き込みポインタＷＱが読み出しポインタＲＱと一致し、フラグ発生／解除回路１１６は満杯フラグＦＦを出力する。これにより、書き込みカウンタ１１３は動作を停止し、メモリ１１２への書き込み動作が禁止される。このメモリ１１２の満杯状態は、その後、データの読み出し動作が行われ、新たにデータを書き込み可能（具体的には既存のデータに上書き可能）とするアドレスがメモリ１１２内に確保されるまで続く。
【００１４】
一方、これとは逆に、データ受信側のシステムの動作周波数がデータ送信側のシステムの動作周波数よりも高い場合は、読み出し動作が書き込み動作よりも多くなる。
【００１５】
その結果、メモリ１１２に書き込まれたが、まだ読み出されていないデータが次第に減少し、遂にはメモリ１１２内から読み出すべきデータがなくなって、メモリ１１２は空状態となる。そして、この状態では、読み出しカウンタ１１４から出力される読み出しポインタＲＱが書き込みポインタＷＱと一致し、フラグ発生／解除回路１１６は空フラグＥＦを出力する。これにより、読み出しカウンタ１１４は動作を停止し、メモリ１１２からの読み出し動作が禁止される。このメモリ１１２の空状態は、その後、データの書き込み動作が行われ、新たにデータを読み出し可能とするアドレスがメモリ１１２内に発生するまで続く。
【００１６】
【発明が解決しようとする課題】
上記のようなＦＩＦＯメモリ１１１において、メモリ１１２が満杯状態であるにも関わらず、書き込み動作が継続して行われる場合には、まだ読み出されていないデータが上書きされることによりデータの欠落が生じ、メモリ１１２はオーバーフローの状態となる。逆に、メモリ１１２が空状態であるにも関わらず、読み出し動作が継続して行われる場合には、既に読み出されたデータが再度読み出されることになり、メモリ１１２はアンダーフローの状態となる。
【００１７】
これらのオーバーフローやアンダーフローが発生する場合、データ転送が正常に行われず、転送エラーとなる。このため、ＦＩＦＯメモリ１１１は、データ転送時にメモリ１１２の状態を監視し、データの満杯状態や空状態を検出することで、上記のようなオーバーフローやアンダーフローの発生を事前に防止するようにしている。
【００１８】
ところで、従来のＦＩＦＯメモリ１１１において、メモリ１１２の満杯状態を示す満杯フラグＦＦや空状態を示す空フラグＥＦがフラグ発生／解除回路１１６から実際に出力されるまでの遅延時間は、上記各カウンタ１１３，１１４、比較回路１１５及びフラグ発生／解除回路１１６での遅延時間に依存している。このため、満杯フラグＦＦや空フラグＥＦの出力遅延が大きくなっていた。
【００１９】
満杯フラグＦＦや空フラグＥＦは、次のサイクルの動作の判断基準となる。従って、各フラグＦＦ，ＥＦの出力遅延が大きくなると、次のサイクルで書き込み動作や読み出し動作を行うか否かの判断が遅れることにより、オーバーフローやアンダーフローを発生させてしまう場合があった。このため、これらのオーバーフローやアンダーフローの発生を回避するために、高速動作するシステム側の動作周波数を低下させる必要が生じ、結果的にシステム全体の動作速度を低下させてしまうという問題があった。
【００２０】
本発明は上記問題点を解決するためになされたものであって、その目的はシステム全体の性能を維持しながらデータのオーバーフロー及びアンダーフローの発生を確実に防止することのできるＦＩＦＯメモリ及びそのＦＩＦＯメモリを備えた半導体装置を提供することにある。
【００２１】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明によれば、満杯フラグ制御手段は、現在の読み出しポインタと次の書き込みポインタが一致する状態で与えられる書き込みクロックに同期して満杯フラグを発生させる。これにより、メモリが満杯状態となった場合の満杯フラグの発生を高速化させることが可能であり、書き込みクロックが高い周波数である場合にも、その周波数を維持したままオーバーフローの発生を確実に防止することができる。また、空フラグ制御手段は、現在の書き込みポインタと次の読み出しポインタが一致する状態で与えられる読み出しクロックに同期して空フラグを発生させる。これにより、メモリが空状態となった場合の空フラグの発生を高速化させることが可能であり、読み出しクロックが高い周波数である場合にも、その周波数を維持したままアンダーフローの発生を確実に防止することができる。
【００２２】
請求項２に記載の発明によれば、満杯フラグ制御手段は、現在の読み出しポインタと次の書き込みポインタが一致する状態で与えられる書き込みクロックに同期して満杯フラグを発生させ、現在の読み出しポインタと現在の書き込みポインタが一致していない状態で与えられる書き込みクロックに同期して満杯フラグを解除する。これにより、満杯フラグの発生／解除を迅速に行うことができる。また、空フラグ制御手段は、現在の書き込みポインタと次の読み出しポインタが一致する状態で与えられる読み出しクロックに同期して空フラグを発生させ、現在の読み出しポインタと現在の書き込みポインタが一致していない状態で与えられる読み出しクロックに同期して空フラグを解除する。これにより、空フラグの発生／解除を迅速に行うことができる。
【００２３】
請求項３に記載の発明によれば、第１の比較手段は、現在の読み出しポインタと次の書き込みポインタを比較して、次の書き込みクロックでメモリが満杯状態になることを予め検出する。これにより、満杯フラグ制御手段は、第１の比較手段の出力信号を参照して満杯フラグを発生させる。また、第２の比較手段は、現在の書き込みポインタと次の読み出しポインタを比較して、次の読み出しクロックでメモリが空状態になることを予め検出する。これにより、空フラグ制御手段は、第２の比較手段の出力信号を参照して空フラグを発生させる。
【００２４】
請求項４に記載の発明によれば、第３の比較手段は、現在の書き込みポインタと現在の読み出しポインタを比較して、それら２つのポインタが不一致である場合を検出する。これにより、満杯フラグ制御手段及び空フラグ制御手段は、第３の比較手段の出力信号を参照して満杯フラグ，空フラグをそれぞれ解除する。
【００２５】
請求項５に記載の発明によれば、満杯フラグ制御手段は、第１の比較手段から出力される信号を満杯フラグにより制御された書き込みクロックに同期して取り込むための比較結果判定手段を備えている。また、空フラグ制御手段は、第２の比較手段から出力される信号を前記空フラグにより制御された読み出しクロックに同期して取り込むための比較結果判定手段を備えている。
【００２６】
請求項６に記載の発明によれば、満杯フラグ制御手段は、第３の比較手段から出力される信号を書き込みクロックに同期して取り込むための比較結果判定手段をさらに備えている。また、空フラグ制御手段は、第３の比較手段から出力される信号を読み出しクロックに同期して取り込むための比較結果判定手段をさらに備えている。
【００２７】
請求項７に記載の発明によれば、メモリは、書き込みカウンタから出力される現在の書き込みポインタに応答して書き込み動作を行い、読み出しカウンタから出力される現在の読み出しポインタに応答して読み出し動作を行う。
【００２８】
請求項８に記載の発明によれば、メモリには、書き込みカウンタから出力される次の書き込みポインタと読み出しカウンタから出力される次の読み出しポインタとが入力される。そして、メモリは、満杯フラグにより制御された書き込みクロックに同期して、予め入力された書き込みポインタに対応するメモリセルにデータを書き込み、空フラグにより制御された読み出しクロックに同期して、予め入力された読み出しポインタに対応するメモリセルのデータを読み出す。これにより、書き込み動作及び読み出し動作がより高速化される。
【００２９】
請求項９に記載の発明によれば、メモリは、複数のメモリセルと、満杯フラグにより制御された書き込みクロックに同期してメモリセルを順次選択する第１シフトレジスタと、該選択されたメモリセルにデータを書き込む書き込み回路と、空フラグにより制御された読み出しクロックに同期してメモリセルを順次選択する第２シフトレジスタと、該選択されたメモリセルのデータを読み出す読み出し回路とを備えている。これにより、書き込み動作及び読み出し動作が高速化されるとともに、ＦＩＦＯメモリの回路規模を小さくすることが可能である。
【００３０】
請求項１０に記載の発明によれば、請求項１乃至９の何れか一項記載のＦＩＦＯメモリを備えた半導体装置では、システムの性能を維持したまま、且つ、データのオーバーフロー及びアンダーフローを確実に防止しながらデータ転送を行うことが可能である。
【００３１】
【発明の実施の形態】
（第一実施形態）
以下、本発明を具体化した第一実施形態を図１〜図１２に従って説明する。
【００３２】
図１は、本実施形態のＦＩＦＯメモリの構成を示すブロック回路図である。
このＦＩＦＯメモリ１１は、例えばデータ転送を行う図示しない２つのシステム間に設けられている。尚、ＦＩＦＯメモリ１１に接続される各システム（データ送信側のシステムとデータ受信側のシステム）の動作周波数は互いに異なり、双方のシステムはそれぞれ非同期で動作する。
【００３３】
ＦＩＦＯメモリ１１は、メモリ１２と、書き込みカウンタ１３と、読み出しカウンタ１４と、第１〜第３の比較手段としての第１〜第３の比較回路１５〜１７と、満杯フラグ制御手段としての満杯フラグ発生／解除回路１８と、空フラグ制御手段としての空フラグ発生／解除回路１９とを備える。尚、同図では、ＦＩＦＯメモリ１１の初期設定を行うための初期化回路と初期化信号（リセット信号）は省略されている。
【００３４】
メモリ１２は、書き込みポートと読み出しポート（何れも図示略）を持つ２ポートメモリである。このメモリ１２は、一方（データ送信側）のシステムが出力するデータを書き込みポートを介して書き込み、該メモリ１２に格納されているデータをそれが書き込まれた順に読み出して読み出しポートから他方（データ受信側）のシステムに供給する。
【００３５】
書き込みカウンタ１３は、データ送信側のシステムの動作周波数を持つ書き込みクロックＷＣＫを入力し、データ書き込み時のメモリ１２のアドレスを示す現在の書き込みポインタＷＱＡと、次のデータ書き込み時のメモリ１２のアドレスを示す次の書き込みポインタＷＱＣを生成する。
【００３６】
詳しくは、書き込みカウンタ１３は、書き込みクロックＷＣＫの入力毎に現在の書き込みポインタＷＱＡと次の書き込みポインタＷＱＣをそれぞれインクリメントし、現在の書き込みポインタＷＱＡをメモリ１２に供給する。これにより、メモリ１２は、現在の書き込みポインタＷＱＡに対応するアドレスのメモリセル（図示略）にデータを書き込む。
【００３７】
同様に、読み出しカウンタ１４は、データ受信側のシステムの動作周波数を持つ読み出しクロックＲＣＫを入力し、データ読み出し時のメモリ１２のアドレスを示す現在の読み出しポインタＲＱＡと、次のデータ読み出し時のメモリ１２のアドレスを示す次の読み出しポインタＲＱＣを生成する。
【００３８】
詳しくは、読み出しカウンタ１４は、読み出しクロックＲＣＫの入力毎に現在の読み出しポインタＲＱＡと次の読み出しポインタＲＱＣをそれぞれインクリメントし、現在の読み出しポインタＲＱＡをメモリ１２に供給する。これにより、メモリ１２は、現在の読み出しポインタＲＱＡに対応するアドレスのメモリセル（図示略）からデータを読み出す。
【００３９】
ここで、上記書き込みカウンタ１３は、所定数の書き込みポインタＷＱＡを出力した後、再び最初の書き込みポインタＷＱＡを出力するリングカウンタである。同様に、読み出しカウンタ１４は、所定数の読み出しポインタＲＱＡを出力した後、再び最初の読み出しポインタＲＱＡを出力するリングカウンタである。（但し、各カウンタ１３，１４でのカウント数は同じ）。
【００４０】
第１の比較手段としての第１の比較回路１５は、書き込みカウンタ１３から出力される次の書き込みポインタＷＱＣと読み出しカウンタ１４から出力される現在の読み出しポインタＲＱＡとを比較し、各ポインタＷＱＣ，ＲＱＡが互いに一致する状態を検出する。
【００４１】
第２の比較回路１６は、書き込みカウンタ１３から出力される現在の書き込みポインタＷＱＡと読み出しカウンタ１４から出力される次の読み出しポインタＲＱＣとを比較し、各ポインタＷＱＡ，ＲＱＣが互いに一致する状態を検出する。
【００４２】
第３の比較回路１７は、書き込みカウンタ１３から出力される現在の書き込みポインタＷＱＡと読み出しカウンタ１４から出力される現在の読み出しポインタＲＱＡとを比較し、各ポインタＷＱＡ，ＲＱＡが互いに一致しない状態を検出する。
【００４３】
満杯フラグ発生／解除回路１８は、第１及び第３の比較回路１５，１７から出力される信号に基づいて、メモリ１２に格納されているデータが満杯状態であることを示す満杯フラグＦＦの発生／解除を行う。
【００４４】
詳しくは、満杯フラグ発生／解除回路１８は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡとの一致状態を示す信号が第１の比較回路１５から出力されている状態で書き込みクロックＷＣＫが入力されると、それに応答して満杯フラグＦＦを生成する。また、満杯フラグ発生／解除回路１８は、現在の書き込みポインタＷＱＡと現在の読み出しポインタＲＱＡとの不一致状態を示す信号が第３の比較回路１７から出力されている状態で書き込みクロックＷＣＫが入力されると、それに応答して満杯フラグＦＦを解除する（即ち満杯フラグＦＦの出力を停止する）。
【００４５】
空フラグ発生／解除回路１９は、第２及び第３の比較回路１６，１７から出力される信号に基づいて、メモリ１２に格納されているデータが空状態であることを示す空フラグＥＦの発生／解除を行う。
【００４６】
詳述すると、空フラグ発生／解除回路１９は、次の読み出しポインタＲＱＣと現在の書き込みポインタＷＱＡとの一致状態を示す信号が第２の比較回路１６から出力されている状態で読み出しクロックＲＣＫが入力されると、それに応答して空フラグＥＦを生成する。また、空フラグ発生／解除回路１９は、現在の書き込みポインタＷＱＡと現在の読み出しポインタＲＱＡとの不一致状態を示す信号が第３の比較回路１７から出力されている状態で読み出しクロックＲＣＫが入力されると、それに応答して空フラグＥＦを解除する（即ち空フラグＥＦの出力を停止する）。
【００４７】
以下、ＦＩＦＯメモリ１１を構成する各回路について詳述する。
図２は、書き込みカウンタ１３の一構成例を示すブロック回路図である。尚、読み出しカウンタ１４は、書き込みカウンタ１３と同様な構成であるため、ここでは詳細な説明は省略する。
【００４８】
本実施形態において、書き込みカウンタ１３は、例えば４ビットのアドレスを示す各ポインタ（現在の書き込みポインタＷＱＡ及び次の書き込みポインタＷＱＣ）を生成する。この書き込みカウンタ１３は、クロック制御回路２１と、第１〜第４フリップフロップ回路２２〜２５と、カウントアップ論理回路２６とを含む。
【００４９】
クロック制御回路２１は、書き込みクロックＷＣＫ及び満杯フラグ発生／解除回路１８から出力される満杯フラグＦＦを入力し、該満杯フラグＦＦにより書き込みクロックＷＣＫを制御した書き込み制御クロックＷＣＫ２を生成する。尚、本実施形態において、書き込みクロックＷＣＫは、自走式クロック（ｆｒｅｅ　ｒｕｎｎｉｎｇ　ｃｌｏｃｋ）であって（読み出しクロックＲＣＫも同様である）、クロック制御回路２１は、満杯フラグＦＦが発生している間は書き込みクロックＷＣＫを停止するように書き込み制御クロックＷＣＫ２を生成する。
【００５０】
第１〜第４フリップフロップ回路２２〜２５は、クロック入力端子ＣＬＫに書き込み制御クロックＷＣＫ２を入力し、リセット入力端子ＲＥＳにＦＩＦＯリセット信号ＲＳを入力し、データ入力端子Ｄにカウントアップ論理回路２６の出力信号を入力する。各フリップフロップ回路２２〜２５は、書き込み制御クロックＷＣＫ２に応答してカウントアップ論理回路２６から出力されるポインタ信号ＱＣを取り込み、データ出力端子Ｑからポインタ信号ＱＡを出力する。そして、書き込みカウンタ１３は、これらのポインタ信号ＱＡからなる４ビットのアドレスを現在の書き込みポインタＷＱＡとして出力する。
【００５１】
カウントアップ論理回路２６は、フリップフロップ回路２２〜２５から出力される各ポインタ信号ＱＡを入力し、現在の書き込みポインタＷＱＡ（即ちアドレス）をインクリメントするように生成した各ポインタ信号ＱＣを出力する。そして、書き込みカウンタ１３は、これらのポインタ信号ＱＣからなる４ビットのアドレスを次の書き込みポインタＷＱＣとして出力する。
【００５２】
この書き込みカウンタ１３は、各フリップフロップ回路２２〜２５にＦＩＦＯリセット信号ＲＳが入力されることで初期化される。また、上記したように、この書き込みカウンタ１３はリングカウンタとして構成され、所定数の書き込みポインタＷＱＡを出力した後、再び先頭の書き込みポインタＷＱＡを出力する。
【００５３】
次に、第１〜第３の比較回路１５〜１７の構成について説明する。
図３は、第１の比較回路１５の一構成例を示す回路図である。この第１の比較回路１５は、第１〜第４イー・オア（Ｅｘｃｌｕｓｉｖｅ　ＯＲ）回路３１〜３４と、ノア回路３５とを含む。
【００５４】
各イー・オア回路３１〜３４には、書き込みカウンタ１３から出力される次の書き込みポインタＷＱＣと読み出しカウンタ１４から出力される現在の読み出しポインタＲＱＡの各対応するビット位置のポインタ信号ＷＱＣ［０］〜［３］，ＲＱＡ［０］〜［３］がそれぞれ入力される。そして、各イー・オア回路３１〜３４は、互いのポインタ信号ＷＱＣ［０］〜［３］，ＲＱＡ［０］〜［３］が一致する場合にＬレベルの信号を出力し、逆に一致しない場合にＨレベルの信号を出力する。
【００５５】
ノア回路３５は、各イー・オア回路３１〜３４から出力される信号が全てＬレベルの信号である場合にＨレベルの信号を出力する。即ち、第１の比較回路１５は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡが一致する場合にＨレベルの信号を出力する。逆に、ノア回路３５は、各イー・オア回路３１〜３４から出力される信号のうち少なくとも何れか１つがＨレベルの信号である場合にＬレベルの信号を出力する。即ち、第１の比較回路１５は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡが不一致である場合にＬレベルの信号を出力する。
【００５６】
第２の比較回路１６は、第１の比較回路１５と同様な構成である。即ち、第２の比較回路１６は、現在の書き込みポインタＷＱＡと次の読み出しポインタＲＱＣが一致する場合にＨレベルの信号を出力し、逆に、それら２つのポインタＷＱＡ，ＲＱＣが一致しない場合にＬレベルの信号を出力する。
【００５７】
第３の比較回路１７は、第１の比較回路１５を構成するノア回路３５に替えてオア回路（図示略）を備えた構成である。即ち、第３の比較回路１７は、現在の書き込みポインタＷＱＡと現在の読み出しポインタＲＱＡが不一致である場合にＨレベルの信号を出力し、逆に、それら２つのポインタＷＱＡ，ＲＱＡが一致する場合にＬレベルの信号を出力する。
【００５８】
図４は、満杯フラグ発生／解除回路１８の一構成例を示すブロック回路図である。この満杯フラグ発生／解除回路１８は、クロック制御回路４１と、比較結果判定手段としての第１及び第２比較結果判定回路４２，４３と、フラグ制御回路４４と、フラグ出力回路４５とを含む。
【００５９】
クロック制御回路４１は、上記書き込みカウンタ１３が備えるクロック制御回路２１と同様な構成であり、満杯フラグＦＦが発生している間は書き込みクロックＷＣＫを停止するように書き込み制御クロックＷＣＫ２を生成する。
【００６０】
第１比較結果判定回路４２は、書き込み制御クロックＷＣＫ２に同期して第１の比較回路１５からの出力信号を取り込む。詳しくは、第１比較結果判定回路４２は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡの一致を示す信号（具体的には第１の比較回路１５から出力されるＨレベルの信号）が入力される状態で書き込み制御クロックＷＣＫ２が入力されると、フラグセット信号ＦＳを出力する。
【００６１】
第２比較結果判定回路４３は、書き込みクロックＷＣＫに同期して第３の比較回路１７からの出力信号を取り込む。詳しくは、第２比較結果判定回路４３は、現在の書き込みポインタＷＱＡと現在の読み出しポインタＲＱＡの不一致を示す信号（具体的には第３の比較回路１７から出力されるＨレベルの信号）が入力される状態で書き込みクロックＷＣＫが入力されると、フラグリセット信号ＦＲを出力する。
【００６２】
フラグ制御回路４４は、フラグセット信号ＦＳ及びフラグリセット信号ＦＲをフラグ出力回路４５に出力する。このフラグ制御回路４４は、ＦＩＦＯリセット信号ＲＳによって初期化される。また、フラグ制御回路４４は、空フラグ発生／解除回路１９から出力される空フラグＥＦによってフラグセット信号ＦＳ及びフラグリセット信号ＦＲの出力を停止する。即ち、フラグ制御回路４４は、空フラグ発生／解除回路１９から空フラグＥＦが出力される場合に、満杯フラグ発生／解除回路１８から満杯フラグＦＦが出力されないようにする。
【００６３】
フラグ出力回路４５は、フラグ制御回路４４から出力されるフラグセット信号ＦＳに応答して満杯フラグＦＦを出力する。そして、この状態において、フラグ出力回路４５は、フラグ制御回路４４からフラグリセット信号ＦＲが出力されると、それに応答して満杯フラグＦＦの出力を停止する。
【００６４】
図５は、第１比較結果判定回路４２の具体的構成を示すブロック回路図である。尚、第２比較結果判定回路４３は、第１比較結果判定回路４２と同様な構成であるため、ここでは詳細な説明は省略する。
【００６５】
第１比較結果判定回路４２は、フリップフロップ回路５１と、遅延回路５２とを含む。フリップフロップ回路５１は、クロック入力端子ＣＬＫに書き込み制御クロックＷＣＫ２を入力し、データ入力端子Ｄに第１の比較回路１５からの出力信号を入力する。また、リセット入力端子ＲＥＳには、データ出力端子Ｑから出力される信号が遅延回路５２を介して入力される。従って、第１比較結果判定回路４２は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡの一致信号が入力される状態で書き込み制御クロックＷＣＫ２が入力されると、遅延回路５２の遅延時間に対応したパルス幅を持つＨレベルのフラグセット信号ＦＳを比較結果判定信号として出力する。
【００６６】
図６は、フラグ出力回路４５の具体的構成を示すブロック回路図である。
フラグ出力回路４５は、セット入力端子ＳＥＴ及びリセット入力端子ＲＥＳを持つ一般的なフリップフロップ回路で構成され、セット入力端子ＳＥＴにフラグセット信号ＦＳを入力し、リセット入力端子ＲＥＳにフラグリセット信号ＦＲを入力する。このフリップフロップ回路のクロック入力端子ＣＬＫ及びデータ入力端子Ｄには、例えばＬレベルの信号が入力される。従って、フラグ出力回路４５は、Ｈレベルのフラグセット信号ＦＳに応答して満杯フラグＦＦを出力する（フリップフロップ回路からＨレベルの信号が出力される）。そして、この状態において、フラグ出力回路４５は、Ｈレベルのフラグリセット信号ＦＲに応答して満杯フラグＦＦを解除する（フリップフロップ回路からＬレベルの信号が出力される）。
【００６７】
図７は、空フラグ発生／解除回路１９の一構成例を示すブロック回路図である。この空フラグ発生／解除回路１９は、クロック制御回路６１と、比較結果判定手段としての第１及び第２比較結果判定回路６２，６３と、フラグ制御回路６４と、フラグ出力回路６５とを含む。尚、空フラグ発生／解除回路１９の動作は上述した満杯フラグ発生／解除回路１８の動作と同様であるため、ここでは詳細な説明を一部省略する。
【００６８】
即ち、空フラグ発生／解除回路１９は、次の読み出しポインタＲＱＣと現在の書き込みポインタＷＱＡの一致を示す信号（具体的には第２の比較回路１６から出力されるＨレベルの信号）が入力される状態で読み出し制御クロックＲＣＫ２が入力されると、空フラグＥＦを出力する。逆に、空フラグ発生／解除回路１９は、現在の読み出しポインタＲＱＡと現在の書き込みポインタＷＱＡの不一致を示す信号（具体的には第３の比較回路１７から出力されるＨレベルの信号）が入力される状態で読み出しクロックＲＣＫが入力されると、空フラグＥＦの出力を停止する。
【００６９】
次に、このＦＩＦＯメモリ１１の作用について説明する。
図９は、満杯フラグ発生／解除回路１８の動作波形図である。尚、この動作波形図は、空フラグＥＦが発生されない場合について示したものである。
【００７０】
今、タイミングｔａの書き込みクロックＷＣＫの立ち上がりに応答して、書き込み制御クロックＷＣＫ２が立ち上がる。この書き込み制御クロックＷＣＫ２の立ち上がりに応答して、書き込みカウンタ１３は、現在の書き込みポインタＷＱＡ及び次の書き込みポインタＷＱＣをインクリメントし、値“Ｄ”を持つ現在の書き込みポインタＷＱＡ及び値“Ｅ”を持つ次の書き込みポインタＷＱＣをそれぞれ出力する。これにより、メモリ１２は、値“Ｄ”を持つ現在の書き込みポインタＷＱＡに対応するアドレスのメモリセルにデータを書き込む。
【００７１】
また、その際、現在の読み出しポインタＲＱＡは値“Ｅ”であり、メモリ１２は、それに対応するアドレスのメモリセルからデータを読み出している。従って、次の書き込みポインタＷＱＣ（“Ｅ”）と現在の読み出しポインタＲＱＡ（“Ｅ”）が一致し、第１の比較回路１５は、それらの一致状態（ＷＱＣ＝ＲＱＡ）を検出してＨレベルの信号を出力する。
【００７２】
次いで、タイミングｔｂの書き込みクロックＷＣＫの立ち上がりに応答して、書き込み制御クロックＷＣＫ２が立ち上がる。この書き込み制御クロックＷＣＫ２の立ち上がりに応答して、満杯フラグ発生／解除回路１８の第１比較結果判定回路４２は所定のパルス幅を持つフラグセット信号ＦＳを出力し、フラグ制御回路４４はそのフラグセット信号ＦＳをフラグ出力回路４５のセット入力端子ＳＥＴに出力する。従って、フラグ出力回路４５は満杯フラグＦＦを出力する（即ちフラグ出力回路４５はＨレベルの信号を出力する）。
【００７３】
また、この書き込み制御クロックＷＣＫ２の立ち上がりに応答して、書き込みカウンタ１３は、現在の書き込みポインタＷＱＡ及び次の書き込みポインタＷＱＣをインクリメントし、値“Ｅ”を持つ現在の書き込みポインタＷＱＡ及び値“Ｆ”を持つ次の書き込みポインタＷＱＣをそれぞれ出力する。これにより、メモリ１２は、値“Ｅ”を持つ現在の書き込みポインタＷＱＡに対応するアドレスのメモリセルにデータを書き込む。
【００７４】
その後、読み出しクロックＲＣＫの立ち上がりに応答して、読み出し制御クロックＲＣＫ２が立ち上がる。この読み出し制御クロックＲＣＫ２に応答して、読み出しカウンタ１４は、現在の読み出しポインタＲＱＡ及び次の読み出しポインタＲＱＣをインクリメントし、値“Ｆ”を持つ現在の読み出しポインタＲＱＡと値“Ｇ”を持つ次の読み出しポインタＲＱＣをそれぞれ出力する。これにより、メモリ１２は、値“Ｆ”を持つ現在の読み出しポインタＲＱＡに対応するアドレスのメモリセルからデータを読み出す。
【００７５】
次いで、タイミングｔｃにおいて、満杯フラグＦＦが発生している状態（即ちフラグ出力回路４５からＨレベルの信号が出力されている状態）で書き込みクロックＷＣＫが入力される。このとき、書き込みカウンタ１３のクロック制御回路２１は、書き込み制御クロックＷＣＫ２の出力を停止する。従って、現在の書き込みポインタＷＱＡ（“Ｅ”）及び次の書き込みポインタＷＱＣ（“Ｆ”）は更新されず、書き込み動作は行われない。
【００７６】
また、このタイミングｔｃにおいて、現在の書き込みポインタＷＱＡ（“Ｅ”）と現在の読み出しポインタＲＱＡ（“Ｆ”）は一致していない。このとき、第３の比較回路１７は、それらの不一致状態（ＷＱＡ≠ＲＱＡ）を検出してＨレベルの信号を出力している。従って、満杯フラグ発生／解除回路１８の第２比較結果判定回路４３は、書き込みクロックＷＣＫの立ち上がりに応答して所定のパルス幅を持つフラグリセット信号ＦＲを出力し、フラグ制御回路４４はそのフラグリセット信号ＦＲをフラグ出力回路４５のリセット入力端子ＲＥＳに出力する。従って、フラグ出力回路４５は満杯フラグＦＦを解除する（即ちフラグ出力回路４５はＬレベルの信号を出力する）。
【００７７】
このように、満杯フラグＦＦは、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡが一致する状態で書き込み制御クロックＷＣＫ２が入力されると発生する。そして、発生した満杯フラグＦＦは、現在の書き込みポインタＷＱＡと現在の読み出しポインタＲＱＡが不一致の状態で書き込みクロックＷＣＫが入力されると解除される。従って、満杯フラグＦＦの出力遅延は満杯フラグ発生／解除回路１８での遅延のみによって決定される。
【００７８】
図１０は、満杯フラグ発生／解除回路１８の別の動作波形図である。尚、この動作波形図は、読み出しクロックＲＣＫの周波数が上述した図９に示す読み出しクロックＲＣＫの周波数よりも低い場合を示すものであり、この場合には、満杯フラグＦＦの発生時間が長くなる（即ち書き込み動作が禁止される時間が長くなる）。このような場合にも、前記と同様に、満杯フラグＦＦの出力遅延は満杯フラグ発生／解除回路１８での遅延のみによって決定される。
【００７９】
図１１は、空フラグ発生／解除回路１９の動作波形図である。尚、この動作波形図は、満杯フラグＦＦが発生されない場合について示したものである。
本実施形態において、空フラグ発生／解除回路１９の動作は上述した図９に示す満杯フラグ発生／解除回路１８の動作と同様である。従って、ここでは詳細な説明を一部省略する。
【００８０】
即ち、図１１に示すように、空フラグＥＦは、次の読み出しポインタＲＱＣと現在の書き込みポインタＷＱＡが一致する状態で読み出し制御クロックＲＣＫ２が入力されると発生する（図中、例えばタイミングｔｆにおける読み出しクロックＲＣＫの入力時）。そして、発生した空フラグＥＦは、現在の書き込みポインタＷＱＡと現在の読み出しポインタＲＱＡが不一致の状態で読み出しクロックＲＣＫが入力されると解除される（図中、例えばタイミングｔｇにおける読み出しクロックＲＣＫの入力時）。従って、空フラグＥＦの出力遅延は空フラグ発生／解除回路１９での遅延のみによって決定される。
【００８１】
図１２は、空フラグ発生／解除回路１９の別の動作波形図である。尚、この動作波形図は、書き込みクロックＷＣＫの周波数が上述した図１１に示す書き込みクロックＷＣＫの周波数よりも低い場合を示すものであり、この場合には、空フラグＥＦの発生時間が長くなる（即ち読み出し動作が禁止される時間が長くなる）。このような場合にも、前記と同様に、空フラグＥＦの出力遅延は空フラグ発生／解除回路１９での遅延のみによって決定される。
【００８２】
尚、本実施形態のＦＩＦＯメモリ１１において、満杯フラグ発生／解除回路１８に備えられる第１比較結果判定回路４２は、図８に示すように変更して構成してもよい。また、ここでは詳細な説明を省略するが、その他の第２比較結果判定回路４３及び空フラグ発生／解除回路１９に備えられる第１及び第２比較結果判定回路６２，６３の構成を同様にして変更してもよい。
【００８３】
図８に示すように、この比較結果判定回路４２ａは、フリップフロップ回路５１と、遅延回路５２と、初期化手段としてのクロック立下り検出回路７１と、オア回路７２とで構成される。
【００８４】
クロック立下り検出回路７１は、書き込み制御クロックＷＣＫ２の立ち下がりを検出してパルス信号を発生させる。オア回路７２は、このクロック立下り検出回路７１からパルス信号が出力されると、遅延回路５２から出力される信号に依らず、フリップフロップ回路５１を強制的にリセットさせるための信号をリセット入力端子ＲＥＳに出力する。
【００８５】
このような比較結果判定回路４２ａでは、フリップフロップ回路５１が仮にメタステーブル状態（出力が発振或いは中間電位で固定する等の不安定になる状態）となる場合にも、その状態が次のクロック（書き込み制御クロックＷＣＫ２）の立ち上がりまで続くことが防止される。これにより、比較結果判定回路４２ａの動作を安定させることができ、ＦＩＦＯメモリ１１の誤動作を確実に防止することができる。
【００８６】
詳述すると、フリップフロップ回路５１が書き込み制御クロックＷＣＫ２の立ち上がりに同期して第１の比較回路１５の出力信号（次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡの一致状態を示す信号）を取り込む際には、その第１の比較回路１５から出力される信号が変化中である可能性がある。
【００８７】
即ち、高速動作するシステムと低速動作するシステム間で行われるデータ転送では、上記したように、データの書き込み動作と読み出し動作とが非同期で行われる。このため、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡは、書き込みクロックＷＣＫあるいは読み出しクロックＲＣＫの何れによっても一致する状態となり得る。従って、フリップフロップ回路５１が書き込み制御クロックＷＣＫ２の立ち上がりに同期して第１の比較回路１５の出力信号を取り込む際には、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡが一致する状態、或いはその逆の状態に変化中である可能性がある。このような状態の信号をフリップフロップ回路５１が取り込む場合、フリップフロップ回路５１は出力が不安定となりメタステーブル状態となる。
【００８８】
上述した図８に示す比較結果判定回路４２ａでは、こうしたメタステーブル状態になった場合にも、次の書き込み制御クロックＷＣＫ２の立ち下がりでフリップフロップ回路５１が強制的にリセットされる。これにより、フリップフロップ回路５１は、その後の書き込み制御クロックＷＣＫ２の立ち上がりでは安定して動作することができる。
【００８９】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）満杯フラグ発生／解除回路１８は、次の書き込みポインタＷＱＣと現在の読み出しポインタＲＱＡが一致する状態で書き込み制御クロックＷＣＫ２が入力されると、それに応答して満杯フラグＦＦを生成する。これにより、満杯フラグＦＦの出力遅延は、満杯フラグ発生／解除回路１８での遅延のみとなるため、メモリ１２が満杯状態となった場合には満杯フラグＦＦを迅速に発生させることができる。従って、書き込みクロックＷＣＫの周波数（即ちデータ送信側のシステムの動作周波数）を高い周波数に維持しながら、オーバーフローの発生を確実に防止することができる。
【００９０】
（２）満杯フラグ発生／解除回路１８は、現在の読み出しポインタＲＱＡと現在の書き込みポインタＷＱＡとが一致していない状態で書き込みクロックＷＣＫが入力されると、それに応答して満杯フラグＦＦを解除する。従って、満杯フラグＦＦの解除も迅速に行うことができる。
【００９１】
（３）空フラグ発生／解除回路１９は、次の読み出しポインタＲＱＣと現在の書き込みポインタＷＱＡが一致する状態で読み出し制御クロックＲＣＫ２が入力されると、それに応答して空フラグＥＦを生成する。これにより、空フラグＥＦの出力遅延は、空フラグ発生／解除回路１９での遅延のみとなるため、メモリ１２が空状態となった場合には空フラグＥＦを迅速に発生させることができる。従って、読み出しクロックＲＣＫの周波数（即ちデータ受信側のシステムの動作周波数）を高い周波数に維持しながら、アンダーフローの発生を確実に防止することができる。
【００９２】
（４）空フラグ発生／解除回路１９は、現在の読み出しポインタＲＱＡと現在の書き込みポインタＷＱＡとが一致していない状態で読み出しクロックＲＣＫが入力されると、それに応答して空フラグＥＦを解除する。従って、空フラグＥＦの解除も迅速に行うことができる。
【００９３】
（第二実施形態）
以下、本発明を具体化した第二実施形態を図１３に従って説明する。
図１３は、第二実施形態のＦＩＦＯメモリを示すブロック回路図である。尚、本実施形態のＦＩＦＯメモリ８１は、第一実施形態のＦＩＦＯメモリ１１におけるメモリ１２をクロック同期型のメモリ８２に変更して構成し、クロック制御回路８３，８４を追加した構成である。従って、同様な構成部分には同一符号を付してそれらの詳細な説明を省略する。
【００９４】
クロック制御回路８３は、満杯フラグＦＦに基づいて生成した書き込み制御クロックＷＣＫ２をメモリ８２内部に設けられた図示しない第１アドレスデコーダに供給する。第１アドレスデコーダは、その書き込み制御クロックＷＣＫ２に応答してデータの書き込みを行うアドレス（メモリセル）を選択する。
【００９５】
同様に、クロック制御回路８４は、空フラグＥＦに基づいて生成した読み出し制御クロックＲＣＫ２をメモリ８２内部に設けられた図示しない第２アドレスデコーダに供給する。第２アドレスデコーダは、その読み出し制御クロックＲＣＫ２に応答してデータの読み出しを行うアドレス（メモリセル）を選択する。
【００９６】
メモリ８２の書き込みポート（図示略）には、書き込みカウンタ１３により生成される次の書き込みポインタＷＱＣが入力され、読み出しポート（図示略）には、読み出しカウンタ１４により生成される次の読み出しポインタＲＱＣが入力される。
【００９７】
詳述すると、書き込みカウンタ１３は、書き込み制御クロックＷＣＫ２の入力に応答して現在の書き込みポインタＷＱＡと次の書き込みポインタＷＱＣを生成し、該生成した次の書き込みポインタＷＱＣをメモリ８２の第１アドレスデコーダに出力する。即ち、書き込みカウンタ１３は、現在の書き込み動作のサイクル中に、あらかじめメモリ８２に次の書き込みポインタＷＱＣを通知する。これにより、メモリ８２は、該通知された次の書き込みポインタＷＱＣに対応するアドレスのメモリセルにその次のサイクルでデータを書き込むための準備をする。
【００９８】
その後、書き込み制御クロックＷＣＫ２が入力されると、メモリ８２は、予め通知された前記ポインタＷＱＣに対応するアドレスのメモリセルにデータを書き込み、それと同時に書き込みカウンタ１３は、同様にして次の書き込みポインタＷＱＣをメモリ８２に出力する。尚、ここでは、書き込み動作について説明したが、読み出し動作についても同様である。
【００９９】
従って、本実施形態によれば、以下の効果を奏する。
（１）書き込み動作の遅延時間（メモリ８２へのデータの書き込みが完了するまでの時間）を、第１アドレスデコーダにより予め選択したアドレスのメモリセルにデータを書き込む際の時間のみとすることができる。即ち、本実施形態では、書き込み動作は、書き込みカウンタ１３での遅延時間及び第１アドレスデコーダでの遅延時間に影響されない。従って、書き込み動作を高速に行うことができる。
【０１００】
（２）読み出し動作時の遅延時間（メモリ８２からのデータの読み出しが完了するまでの時間）を、第２アドレスデコーダにより予め選択したアドレスのメモリセルからデータを読み出す際の時間のみとすることができる。即ち、本実施形態では、読み出し動作が、読み出しカウンタ１４での遅延時間及び第２アドレスデコーダでの遅延時間に影響されない。従って、読み出し動作を高速に行うことができる。
【０１０１】
（第三実施形態）
以下、本発明を具体化した第三実施形態を図１４に従って説明する。
図１４は、第三実施形態のＦＩＦＯメモリを示すブロック回路図である。尚、本実施形態のＦＩＦＯメモリ９１は、第２実施形態のＦＩＦＯメモリ８１におけるメモリ８２の構成を一部変更したものである。従って、同様な構成部分には同一符号を付してそれらの詳細な説明を省略する。
【０１０２】
同図に示すように、本実施形態のメモリ９２は、複数のメモリセル１０１と、書き込み回路１０２と、読み出し回路１０３と、第１及び第２シフトレジスタ１０４，１０５とを含む。
【０１０３】
このようなメモリ９２では、書き込み動作において、第１シフトレジスタ１０４は、書き込み制御クロックＷＣＫ２に同期してメモリセル１０１を順次選択し、書き込み回路１０２は、選択されたメモリセル１０１にデータを書き込む。一方、読み出し動作において、第２シフトレジスタ１０５は、読み出し制御クロックＲＣＫ２に同期してメモリセル１０１を順次選択し、読み出し回路１０３は、選択されたメモリセル１０１からデータを読み出す。
【０１０４】
従って、本実施形態によれば、以下の効果を奏する。
（１）本実施形態では、データの書き込み及び読み出しを行う際にメモリ９２のアドレスを選択するためのアドレスデコーダを該メモリ９２から省略することができる。このため、書き込み動作及び読み出し動作を高速に行うことが可能である。また、シフトレジスタ１０４，１０５は、一般にアドレスデコーダに比べて回路面積が小さいため、ＦＩＦＯメモリ１１の回路規模を小さくすることができる。
【０１０５】
尚、上記各実施形態は、以下の態様で実施してもよい。
・各実施形態では、書き込み制御クロックＷＣＫ２や読み出し制御クロックＲＣＫ２の立ち上がりに同期して満杯フラグＦＦや空フラグＥＦを発生させる構成としたが、各クロックＷＣＫ２，ＲＣＫ２の立ち下がりに同期して満杯フラグＦＦや空フラグＥＦを発生させる構成としてもよい。
【０１０６】
・満杯フラグＦＦや空フラグＥＦを各クロックＷＣＫ２，ＲＣＫ２の立ち下がりに同期して発生させる場合には、それらのクロックＷＣＫ２，ＲＣＫ２の次の立ち上がりエッジを検出するクロック立上り検出回路をクロック立下り検出回路７１の替わりに備える構成とすればよい。
【０１０７】
・書き込みカウンタ１３，読出しカウンタ１４の構成は各実施形態の構成のみに限定されない。
・また、第１〜第３の比較回路１５〜１７の構成は各実施形態の構成に限定されるものではない。即ち、各比較回路１５〜１７は各々入力される２つのポインタ（アドレス）が一致するか否かを検出することのできる構成であればよい。
【０１０８】
上記各実施形態の特徴をまとめると以下のようになる。
（付記１）　書き込みクロックに従って書き込みポインタを更新する書き込みカウンタと、読み出しクロックに従って読み出しポインタを更新する読み出しカウンタと、前記書き込みポインタに対応するメモリセルにデータを書き込む書き込み動作及び前記読み出しポインタに対応するメモリセルのデータを読み出す読み出し動作を行うメモリと、を備えるＦＩＦＯメモリであって、
現在の読み出しポインタと次の書き込みポインタが一致する状態で与えられる書き込みクロックに同期して満杯フラグを発生させる満杯フラグ制御手段と、
現在の書き込みポインタと次の読み出しポインタが一致する状態で与えられる読み出しクロックに同期して空フラグを発生させる空フラグ制御手段と
を備えることを特徴とするＦＩＦＯメモリ。（１）
（付記２）　書き込みクロックに従って書き込みポインタを更新する書き込みカウンタと、読み出しクロックに従って読み出しポインタを更新する読み出しカウンタと、前記書き込みポインタに対応するメモリセルにデータを書き込む書き込み動作及び前記読み出しポインタに対応するメモリセルのデータを読み出す読み出し動作を行うメモリと、を備えるＦＩＦＯメモリであって、
現在の読み出しポインタと次の書き込みポインタが一致する状態で与えられる書き込みクロックに同期して満杯フラグを発生させ、現在の読み出しポインタと現在の書き込みポインタが一致していない状態で与えられる書き込みクロックに同期して前記満杯フラグを解除する満杯フラグ制御手段と、
現在の書き込みポインタと次の読み出しポインタが一致する状態で与えられる読み出しクロックに同期して空フラグを発生させ、現在の読み出しポインタと現在の書き込みポインタが一致していない状態で与えられる読み出しクロックに同期して前記空フラグを解除する空フラグ制御手段と
を備えることを特徴とするＦＩＦＯメモリ。（２）
（付記３）　現在の読み出しポインタと次の書き込みポインタを比較し、該２つのポインタが一致する場合に前記満杯フラグを発生させるための信号を出力する第１の比較手段と、
現在の書き込みポインタと次の読み出しポインタを比較し、該２つのポインタが一致する場合に前記空フラグを発生させるための信号を出力する第２の比較手段と
を備えることを特徴とする付記１又は２記載のＦＩＦＯメモリ。（３）
（付記４）　現在の読み出しポインタと現在の書き込みポインタとを比較し、該２つのポインタが不一致である場合に前記満杯フラグ或いは前記空フラグを解除させるための信号を出力する第３の比較手段を備えることを特徴とする付記１乃至３の何れか一記載のＦＩＦＯメモリ。（４）
（付記５）　前記満杯フラグ制御手段は、前記第１の比較手段から出力される信号を前記満杯フラグにより制御された書き込みクロックに同期して取り込むための比較結果判定手段を備え、
前記空フラグ制御手段は、前記第２の比較手段から出力される信号を前記空フラグにより制御された読み出しクロックに同期して取り込むための比較結果判定手段を備える、ことを特徴とする付記３又は４記載のＦＩＦＯメモリ。（５）
（付記６）　前記満杯フラグ制御手段は、前記第３の比較手段から出力される信号を書き込みクロックに同期して取り込むための比較結果判定手段を備え、
前記空フラグ制御手段は、前記第３の比較手段から出力される信号を読み出しクロックに同期して取り込むための比較結果判定手段を備える、ことを特徴とする付記４又は５記載のＦＩＦＯメモリ。（６）
（付記７）　前記比較結果判定手段は、データ出力端子から出力される信号がリセット入力端子に帰還され所定の遅延時間に対応したパルス幅を持つようにパルス信号を生成するフリップフロップ回路を含むことを特徴とする付記５又は６記載のＦＩＦＯメモリ。
（付記８）　前記比較結果判定手段は、前記フリップフロップ回路が信号を取り込むときの書き込みクロック又は読み出しクロックのエッジと逆のエッジを検出して該フリップフロップ回路をリセットさせるための信号を生成する初期化手段を備えることを特徴とする付記７記載のＦＩＦＯメモリ。
（付記９）　前記書き込みカウンタは、
前記満杯フラグにより制御された書き込みクロックに同期して現在の書き込みポインタを生成する複数のフリップフロップ回路と、
前記複数のフリップフロップ回路から出力される信号に基づいて該現在の書き込みポインタをインクリメントした次の書き込みポインタを生成するカウントアップ論理回路と
を含むことを特徴とする付記１乃至８の何れか一記載のＦＩＦＯメモリ。
（付記１０）　前記読み出しカウンタは、
前記空フラグにより制御された読み出しクロックに同期して現在の読み出しポインタを生成する複数のフリップフロップ回路と、
前記複数のフリップフロップ回路から出力される信号に基づいて該現在の読み出しポインタをインクリメントした次の読み出しポインタを生成するカウントアップ論理回路と
を含むことを特徴とする付記１乃至８の何れか一記載のＦＩＦＯメモリ。
（付記１１）　前記メモリは、前記書き込みカウンタから出力される現在の書き込みポインタに応答して書き込み動作を行い、前記読み出しカウンタから出力される現在の読み出しポインタに応答して読み出し動作を行うことを特徴とする付記１乃至１０の何れか一記載のＦＩＦＯメモリ。（７）
（付記１２）　前記メモリは、前記書き込みカウンタから出力される次の書き込みポインタを予め入力して前記満杯フラグにより制御された書き込みクロックに同期して書き込み動作を行い、前記読み出しカウンタから出力される次の読み出しポインタを予め入力して前記空フラグにより制御された読み出しクロックに同期して読み出し動作を行うことを特徴とする付記１乃至１０の何れか一記載のＦＩＦＯメモリ。（８）
（付記１３）　前記メモリは、
複数のメモリセルと、
前記満杯フラグにより制御された書き込みクロックに同期して前記メモリセルを順次選択する第１シフトレジスタと、
該第１シフトレジスタにより選択されたメモリセルにデータを書き込む書き込み回路と、
前記空フラグにより制御された読み出しクロックに同期して前記メモリセルを順次選択する第２シフトレジスタと、
該第２シフトレジスタにより選択されたメモリセルのデータを読み出す読み出し回路と
を備えることを特徴とする付記１乃至１０の何れか一記載のＦＩＦＯメモリ。（９）
（付記１４）　付記１乃至１３の何れか一記載のＦＩＦＯメモリを備えたことを特徴とする半導体装置。（１０）
【０１０９】
【発明の効果】
以上詳述したように、本発明によれば、システム全体の性能を維持しながらデータのオーバーフロー及びアンダーフローの発生を確実に防止することのできるＦＩＦＯメモリ及びそのＦＩＦＯメモリを備えた半導体装置を提供することができる。
【図面の簡単な説明】
【図１】第一実施形態のＦＩＦＯメモリを示すブロック回路図である。
【図２】カウンタを示すブロック回路図である。
【図３】比較回路を示す回路図である。
【図４】満杯フラグ発生／解除回路を示すブロック回路図である。
【図５】比較結果判定回路を示すブロック回路図である。
【図６】フラグ出力回路を示すブロック回路図である。
【図７】空フラグ発生／解除回路を示すブロック回路図である。
【図８】別の比較結果判定回路を示すブロック回路図である。
【図９】満杯フラグ発生／解除回路の動作波形図である。
【図１０】満杯フラグ発生／解除回路の動作波形図である。
【図１１】空フラグ発生／解除回路の動作波形図である。
【図１２】空フラグ発生／解除回路の動作波形図である。
【図１３】第二実施形態のＦＩＦＯメモリを示すブロック回路図である。
【図１４】第三実施形態のＦＩＦＯメモリを示すブロック回路図である。
【図１５】従来のＦＩＦＯメモリを示すブロック回路図である。
【符号の説明】
１２，８２，９２　メモリ
１３　書き込みカウンタ
１４　読み出しカウンタ
１５　第１の比較手段としての第１の比較回路
１６　第２の比較手段としての第２の比較回路
１７　第３の比較手段としての第３の比較回路
１８　満杯フラグ制御手段としての満杯フラグ発生／解除回路
１９　空フラグ制御手段としての空フラグ発生／解除回路
ＥＦ　空フラグ
ＦＦ　満杯フラグ
ＲＣＫ　読み出しクロック
ＲＣＫ２　空フラグにより制御された読み出しクロックとしての読み出し制御クロック
ＲＱＡ　現在の読み出しポインタ
ＲＱＣ　次の読み出しポインタ
ＷＣＫ　書き込みクロック
ＷＣＫ２　満杯フラグにより制御された書き込みクロックとしての書き込み制御クロック
ＷＱＡ　現在の書き込みポインタ
ＷＱＣ　次の書き込みポインタ
【図１】
2004062630.tif 000003
【図２】
2004062630.tif 000004
【図３】
2004062630.tif 000005
【図４】
2004062630.tif 000006
【図５】
2004062630.tif 000007
【図６】
2004062630.tif 000008
【図７】
2004062630.tif 000009
【図８】
2004062630.tif 000010
【図９】
2004062630.tif 000011
【図１０】
2004062630.tif 000012
【図１１】
2004062630.tif 000013
【図１２】
2004062630.tif 000014
【図１３】
2004062630.tif 000015
【図１４】
2004062630.tif 000016
【図１５】
2004062630.tif 000017