(57)【要約】【課題】参照側でポインタの全ビットを同期化することなく参照元のポインタの値を参照する。【解決手段】更新周期設定レジスタ16,26の設定周期毎に参照先のポインタ10,21の下位ビットを下位ビット保持レジスタ13,23に保持する。更新信号同期化回路22，12は、下位ビット保持レジスタを更新したことを参照側に通知する更新通知信号47,57を参照側のクロックに同期化して、参照側のポインタ20，11を更新する更新信号54,44を生成する。FIFOステータス25，15は更新信号のタイミングで参照側のポインタ21，10の内容と参照先の下位ビット保持レジスタ13，23の内容からFIFOステータスフラグ58、48を生成する。【選択図】図１
2007310600.tif 000002
【特許請求の範囲】
【請求項１】
書込み側と読出し側のクロック周波数が異なる非同期FIFO回路において、
書込みと読出しを並行して行えるデュアルポートメモリと、
前記デュアルポートメモリの書込みアドレスを指定する書込み側ライトポインタと、
前記デュアルポートメモリの読出しアドレスを指定する読出し側リードポインタと、
前記読出し側リードポインタの内容を書込み側クロックに同期させた書込み側リードポインタと、
前記書込み側リードポインタを一定周期毎に読出し側リードポインタの値に更新するためのタイミング信号を制御するRP更新周期制御回路と、
前記RP更新周期制御回路の生成するタイミング信号に基づいて読出し側リードポインタの下位ビットを保持するRP下位ビット保持レジスタと、
前記RP更新周期制御回路の生成するタイミング信号を書込み側のクロックに同期化して、前記RP下位ビット保持レジスタの値と前記書込み側リードポインタの現在値より、読出し側リードポインタ値に更新するためのタイミング信号を生成するRP更新信号同期化回路と、
前記書込み側ライトポインタと前記書込み側リードポインタの各値を比較して、当該非同期FIFO回路の空き状態を示す書込み側FIFOステータスフラグを生成する書込み側FIFOステータスフラグ生成回路を有することを特徴とする非同期FIFO回路。
【請求項２】
読出し側と書込み側のクロック周波数が異なる非同期FIFO回路において、
読出しと書込みを並行して行えるデュアルポートメモリと、
前記デュアルポートメモリの読出しアドレスを指定する読出し側リードポインタと、
前記デュアルポートメモリの書込みアドレスを指定する書込み側ライトポインタと、
前記書込み側ライトポインタの内容を読出し側クロックに同期させた読出し側ライトポインタと、
前記読出し側ライトポインタを一定周期毎に書込み側ライトポインタの値に更新するためのタイミング信号を制御するWP更新周期制御回路と、
前記WP更新周期制御回路の生成するタイミング信号に基づいて書込み側ライトポインタの下位ビットを保持するWP下位ビット保持レジスタと、
前記WP更新周期制御回路の生成するタイミング信号を読出し側のクロックに同期化して、前記WP下位ビット保持レジスタの値と前記読出し側ライトポインタの現在値より、書込み側ライトポインタ値に更新するためのタイミング信号を生成するWP更新信号同期化回路と、
前記読出し側ライトポインタと前記読出し側リードポインタの各値を比較して、当該非同期FIFO回路の占有状態を示す読出し側FIFOステータスフラグを生成する読出し側FIFOステータスフラグ生成回路を有することを特徴とする非同期FIFO回路。
【請求項３】
書込み側と読出し側のクロック周波数が異なる非同期FIFO回路において、
書込みと読出しを並行して行えるデュアルポートメモリと、
前記デュアルポートメモリの書込みアドレスを指定する書込み側ライトポインタと、
前記デュアルポートメモリの読出しアドレスを指定する読出し側リードポインタと、
前記読出し側リードポインタの内容を書込み側クロックに同期させた書込み側リードポインタと、
前記書込み側リードポインタを一定周期毎に読出し側リードポインタの値に更新するためのタイミング信号を制御するRP更新周期制御回路と、
前記RP更新周期制御回路の生成するタイミング信号に基づいて読出し側リードポインタの下位ビットを保持するRP下位ビット保持レジスタと、
前記RP更新周期制御回路の生成するタイミング信号を書込み側のクロックに同期化して、前記RP下位ビット保持レジスタの値と前記書込み側リードポインタの現在値より、読出し側リードポインタ値に更新するためのタイミング信号を生成するRP更新信号同期化回路と、
前記書込み側ライトポインタと前記書込み側リードポインタの各値を比較して、当該非同期FIFO回路の空き状態を示す書込み側FIFOステータスフラグを生成する書込み側FIFOステータスフラグ生成回路と、
前記書込み側ライトポインタの内容を読出し側クロックに同期させた読出し側ライトポインタと、
前記読出し側ライトポインタを一定周期毎に書込み側ライトポインタの値に更新するためのタイミング信号を制御するWP更新周期制御回路と、
前記WP更新周期制御回路の生成するタイミング信号に基づいて書込み側ライトポインタの下位ビットを保持するWP下位ビット保持レジスタと、
前記WP更新周期制御回路の生成するタイミング信号を読出し側のクロックに同期化して、前記WP下位ビット保持レジスタの値と前記読出し側ライトポインタの現在値より、書込み側ライトポインタ値に更新するためのタイミング信号を生成するWP更新信号同期化回路と、
前記読出し側ライトポインタと前記読出し側リードポインタの各値を比較して、当該非同期FIFO回路の占有状態を示す読出し側FIFOステータスフラグを生成する読出し側FIFOステータスフラグ生成回路を有することを特徴とする非同期FIFO回路。
【請求項４】
前記RP更新周期制御回路におけるリードポインタの更新周期をプログラマブルに設定するためのRP更新周期設定レジスタを設けたことを特徴とする請求項１または請求項３に記載の非同期FIFO回路。
【請求項５】
前記WP更新周期制御回路におけるライトポインタの更新周期をプログラマブルに設定するためのWP更新周期設定レジスタを設けたことを特徴とする請求項２または請求項３に記載非同期FIFO回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期FIFO回路に関し、特に異なるクロックドメイン間のポインタの参照に関する。
【背景技術】
【０００２】
書込み側のクロックと読出し側のクロックが異なる非同期FIFO回路において、読出し側では非同期FIFOの占有状態のステータスフラグを見て読出しを行い、書込み側では非同期FIFOの空き状態のステータスフラグを見て書込みを行う。このとき、非同期FIFOのステータスフラグの生成には、読出し側のリードポインタの情報と、書込み側のライトポインタの情報を必要とする。
【０００３】
しかしながら、読出し側と書込み側では使用しているクロックが異なるので、直接にポインタの情報を参照することはできない。ポインタを参照するには、ポインタを参照する側のクロックで参照される側のポインタの情報を同期化する必要がある。しかし、ポインタは複数ビット幅であるため、単純にポインタの同期化を行うと、各ビット間のデータスキューあるいはクロックスキューの影響のために、また同期化の際に発生するメタステーブル状態の影響のために、そのままでは正しくポインタの値を参照できない。
【０００４】
このような問題に対処するために、従来は、ポインタにグレイコードカウンタを使用したり（文献公知発明に係るものではない）、１クロック間に複数ビットが変化しないジョンソンカウンタをポインタに用いることによって、同期化の際に生じる誤動作を回避している（例えば、特許文献１参照）。また、読出しイネーブルを参照側のクロックで同期化した信号で参照側のポインタを動作させ、参照先のポインタと同期化する技術も知られている（例えば、特許文献２参照）。
【０００５】
【特許文献１】特開２００１−２２３６７９号公報（第３頁−第５頁、図１）
【特許文献２】特開２００１−２８５３４６号公報（第３頁−第５頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献３記載の技術では、ジョンソンカウンタは同期化のために２段分のレジスタを必要とするため、ポインタを同期化すると最低でもポインタの倍のレジスタが必要となり、FIFOの容量が大きくなればなるほど回路規模が大きくなってしまい、ひいては定常的に複数ビットのポインタを同期化しているので、動作しているレジスタが多くなり電力消費が大きくなるという第１の問題点がある。
【０００７】
更に、ジョンソンカウンタやグレイコードカウンタは、バイナリカウンタと異なり、カウンタの値が直前の値のインクリメント値ではないので、演算を行う場合には一度バイナリ値に変換して演算しなければならないので、演算を行うことが難しいという第２の問題点もある。
【０００８】
また、特許文献２記載の技術では、メモリ制御信号を同期化するために、メモリ制御信号はロウレベル期間、ハイレベル期間を同期化のために十分な時間を確保する必要があるため、FIFOへのアクセス性能を上げ難いので、同期化する側と同期化される側のクロック周波数に制約があり、性能上好ましくないという問題点がある。
【０００９】
また、ポインタにグレイコードカウンタを使用した場合、グレイコードカウンタの最下位ビットは２クロック周期毎にトグルするので、同期化する側のクロック周波数が同期化される信号側のクロック周波数より小さくなければ同期化できないという制約が発生するという問題点がある。
【００１０】
そこで、本発明の目的は、ポインタの参照に際し、参照側でポインタの全ビットを同期化することなく、参照元のポインタの値を参照するという構成を採用することにより、回路規模削減，省電力化および幅広い周波数への対応と高いアクセス性能を達成した非同期FIFO回路を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の非同期FIFO回路は、書込み側と読出し側のクロック周波数が異なる非同期FIFO回路において、書込みと読出しを並行して行えるデュアルポートメモリ（図１の30）と、デュアルポートメモリの書込みアドレスを指定する書込み側ライトポインタ（図１の10）と、デュアルポートメモリの読出しアドレスを指定する読出し側リードポインタ（図１の21）と、読出し側リードポインタの内容を書込み側クロックに同期させた書込み側リードポインタ（図１の11）と、書込み側リードポインタを一定周期毎に読出し側リードポインタの値に更新するためのタイミング信号を制御するRP更新周期制御回路（図１の24）と、RP更新周期制御回路の生成するタイミング信号に基づいて読出し側リードポインタの下位ビットを保持するRP下位ビット保持レジスタ（図１の23）と、RP更新周期制御回路の生成するタイミング信号を書込み側のクロックに同期化して、RP下位ビット保持レジスタの値と書込み側リードポインタの現在の値により、書込み側リードポインタの値を読出し側リードポインタ値に更新するためのタイミング信号を生成するRP更新信号同期化回路（図１の12）と、書込み側ライトポインタと書込み側リードポインタの各値を比較して、当該非同期FIFO回路の空き状態を示す書込み側FIFOステータスフラグを生成する書込み側FIFOステータスフラグ生成回路（図１の15）を有することを特徴とする。
【００１２】
本発明の第２の非同期FIFO回路は、読出し側と書込み側のクロック周波数が異なる非同期FIFO回路において、読出しと書込みを並行して行えるデュアルポートメモリ（図１の30）と、デュアルポートメモリの読出しアドレスを指定する読出し側リードポインタ（図１の21）と、デュアルポートメモリの書込みアドレスを指定する書込み側ライトポインタ（図１の10）と、書込み側ライトポインタの内容を読出し側クロックに同期させた読出し側ライトポインタ（図１の20）と、読出し側ライトポインタを一定周期毎に書込み側ライトポインタの値に更新するためのタイミング信号を制御するWP更新周期制御回路（図１の14）と、WP更新周期制御回路の生成するタイミング信号に基づいて書込み側ライトポインタの下位ビットを保持するWP下位ビット保持レジスタ（図１の13）と、WP更新周期制御回路の生成するタイミング信号を読出し側のクロックに同期化して、WP下位ビット保持レジスタの値と読出し側ライトポインタの現在の値により、読出し側ライトポインタの値を書込み側ライトポインタ値に更新するためのタイミング信号を生成するWP更新信号同期化回路（図１の22）と、読出し側ライトポインタと読出し側リードポインタの各値を比較して、当該非同期FIFO回路の占有状態を示す読出し側FIFOステータスフラグを生成する読出し側FIFOステータスフラグ生成回路（図１の25）を有することを特徴とする。
【００１３】
本発明の第３の非同期FIFO回路は、読出し側と書込み側のクロック周波数が異なる非同期FIFO回路において、デュアルポートメモリ（図１の30），書込み側ライトポインタ（図１の10），読出し側リードポインタ（図１の21），書込み側リードポインタ（図１の11），RP更新周期制御回路（図１の24），RP下位ビット保持レジスタ（図１の23），RP更新信号同期化回路（図１の12），書込み側FIFOステータスフラグ生成回路（図１の15），読出し側ライトポインタ（図１の20），WP更新周期制御回路（図１の14），WP下位ビット保持レジスタ（図１の13），WP更新信号同期化回路（図１の22）および読出し側FIFOステータスフラグ生成回路（図１の25）を有することを特徴とする。
【００１４】
なお、RP更新周期制御回路（図１の24）におけるリードポインタの更新周期をプログラマブルに設定するためのRP更新周期設定レジスタ（図１の26）、またWP更新周期制御回路（図１の15）におけるライトポインタの更新周期をプログラマブルに設定するためのWP更新周期設定レジスタ（図１の16）を設けるようにしてもよい。
【００１５】
本発明では、書込み側において読出し側リードポインタの参照するときは、RP更新周期制御回路で計測する一定周期毎に読出し側リードポインタの下位ビットをRP下位ビット保持レジスタに保持し、その周期をRP更新通知信号がRP更新信号同期化回路で同期化される時間と、書込み側リードポインタが自身の内容とRP下位ビット保持レジスタの内容を加算するまでの合計時間より長い時間を確保することにより、読出し側リードポインタの値を書込み側リードポインタに渡すことがきる。更に、RP更新周期制御回路の周期をRP更新周期設定レジスタの設定値により可変とすることにより、幅広い周波数に対応することが可能である。
【００１６】
同様に、読出し側において書込み側ライトポインタの参照するときは、WP更新周期制御回路で計測する一定周期毎に書込み側ライトポインタの下位ビットをWP下位ビット保持レジスタに保持し、その一定周期をWP更新通知信号がWP更新信号同期化回路で同期化される時間と、読出し側ライトポインタが自身の内容とWP下位ビット保持レジスタの内容を加算するまでの合計時間より長い時間を確保することで、書込み側ライトポインタの値を読出し側ライトポインタに渡すことがきる。更に、WP更新周期制御回路の周期を、WP更新周期設定レジスタの設定値により可変とすることにより、幅広い周波数に対応することが可能である。
【発明の効果】
【００１７】
本発明の第１の効果は、多ビット幅のポインタを同期化する必要がないので、ポインタを全ビットについて同期化する場合に比べて回路規模を小さくでき、ひいては消費電力を小さくできることである。
【００１８】
本発明の第２の効果は、更新周期制御回路の周期を更新周期設定レジスタの設定値により可変とすることにより、ポインタを参照する周期を任意に設定可能となり幅広い周波数に対応できるということである。
【００１９】
本発明の第３の効果は、クロックドメイン間で受け渡す情報はポインタの情報のみであるため、非同期FIFO回路本来のアクセス性能に影響しないため高い性能を維持できるということである。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２１】
[構成の説明]
図１は本発明の非同期FIFO回路の一実施例を示すブロック図である。図１を参照すると、この非同期FIFO回路は、中央のデュアルポートメモリ30の左側が書込み側クロックドメイン、右側が読出し側クロックドメインであり、両クロックドメインは同構成となっている。書込み側クロックドメインから読出し側クロックドメインに向けて、WP下位ビット45とWP更新通知信号47を出力し、読出し側クロックドメインから書込み側クロックドメインに向けて、RP下位ビット55とRP更新通知信号57を出力する。このような交信により、書込み側と読出し側それぞれにおいて、ポインタの内の少ビットを同期化するだけでデュアルポートメモリ30への書込みと読出しを小規模の回路構成で齟齬をきたすことなく行なうことができる。
【００２２】
デュアルポートメモリ30は、書込み側クロックによる書込みデータ40の書込みと、読出し側クロックによる読出しデータ50の読み出しを非同期に行うことができる。書込みは、書込みイネーブル信号41がアクティブ状態のときに、書込み側ライトポインタ42で指定されるアドレスに対し行なわれ、読出しは、読出しイネーブル信号51がアクティブ状態のときに、読出し側ライトポインタ52で指定されるアドレスに対し行なわれる。
【００２３】
書込み側クロックドメインは、書込み側ライトポインタ10，書込み側リードポインタ11，RP更新信号同期化回路12，WP下位ビット保持レジスタ13，WP更新周期制御回路14，書込み側FIFOステータス生成回路15およびWP更新周期設定レジスタ16で構成されている。
【００２４】
書込み側ライトポインタ10は書込みイネーブル信号41によって１つずつインクリメントして書込み側ライトポインタ42をデュアルポートメモリ30と書込み側FIFOステータス生成回路15へ出力する。RP更新信号同期化回路12は、RP更新通知信号57を書込み側のクロックで同期化してRP更新信号44を生成し書込み側リードポインタ11に渡す。
【００２５】
書込み側リードポインタ11は、RP更新信号44を受けると、RP下位ビット55の内の最上位ビットと、その出力である書込み側リードポインタ43の内の対応するビットを比較する。その結果、不一致かつ書込み側リードポインタ43の内の対応するビットが“１”を示している場合は桁上がりが発生していることを示しているので、RP下位ビット55を書込み側リードポインタ43の内の対応する下位ビットに上書きし、書込み側リードポインタ43の内のそれより上位のビットには“１”を加算する。一方、比較結果が上記以外の場合は桁上がりが発生していないことを示しているので、RP下位ビット55の内容を書込み側リードポインタ43の内の対応する下位ビットに上書きする。
【００２６】
書込み側FIFOステータス生成回路15は、書込み側ライトポインタ42と書込み側リードポインタ43を比較することにより、書込み側のクロックに同期したFIFOの空き状態を示す書込み側FIFOステータスフラグ48の生成を行う。
【００２７】
WP下位ビット保持レジスタ13は、書込み側ライトポインタ42のWP下位ビット45をWP下位ビットラッチ信号46によってラッチして読出し側ライトポインタ20へ出力する。ここで、WP下位ビット保持レジスタ13のビット幅はWP更新周期制御回路14が生成する周期に必要なビット幅を１ビットだけ拡張したビット幅があればよい。
【００２８】
WP更新周期制御回路14は、WP下位ビットラッチ信号46の生成と、WP下位ビット保持レジスタ13が更新されたことを通知するWP更新通知信号47を生成する。WP更新周期設定レジスタ16は、WP下位ビットラッチ信号46およびWP更新通知信号47の周期をプログラマブルに設定する。これにより、読出し側のクロックに対して書込み側のクロックの方が遅いようなケースに対応できる。
【００２９】
読出し側クロックドメインの構成は、上述した書込み側クロックドメインの構成と同様であり、「書込み」と「読出し」の違いによる読替えを参照番号と共に行なえばよい。しかし、読出し側クロックドメインの構成についても念のため以下に記載しておく。
【００３０】
読出し側クロックドメインは、読出し側ライトポインタ20，読出し側リードポインタ21，WP更新信号同期化回路22，RP下位ビット保持レジスタ23，RP更新周期制御回路24，読出し側FIFOステータス生成回路25およびRP更新周期設定レジスタ26で構成されている。
【００３１】
読出し側リードポインタ21は読出しイネーブル信号51によって１つずつインクリメントして読出し側リードポインタ52をデュアルポートメモリ30と読出し側FIFOステータス生成回路25へ出力する。WP更新信号同期化回路22は、WP更新通知信号47を読出し側のクロックで同期化してWP更新信号54を生成し読出し側ライトポインタ20に渡す。
【００３２】
読出し側ライトポインタ20は、WP更新信号54を受けると、WP下位ビット45の内の最上位ビットと、読出し側ライトポインタ53の内の対応するビットを比較する。その結果、不一致かつ読出し側ライトポインタ53の内の対応するビットが“１”を示している場合は桁上がりが発生していることを示しているので、WP下位ビット45を読出し側ライトポインタ53の内の対応する下位ビットに上書きし、読出し側ライトポインタ53の内のそれより上位のビットには“１”を加算する。一方、比較結果が上記以外の場合は桁上がりが発生していないことを示しているので、WP下位ビット45の内容を読出し側ライトポインタ53の内の対応する下位ビットに上書きする。
【００３３】
読出し側FIFOステータス生成回路25は、読出し側リードポインタ52と読出し側ライトポインタ53を比較することにより、読出し側のクロックに同期したFIFOの占有状態を示す読出し側FIFOステータスフラグ58の生成を行う。
【００３４】
RP下位ビット保持レジスタ23は、読出しリードポインタ52のRP下位ビット55をRP下位ビットラッチ信号56によってラッチして書込み側リードポインタ11へ出力する。ここで、RP下位ビット保持レジスタ23のビット幅はRP更新周期制御回路24が生成する周期に必要なビット幅を１ビットだけ拡張したビット幅があればよい。
【００３５】
RP更新周期制御回路24は、RP下位ビットラッチ信号56の生成と、RP下位ビット保持レジスタ53が更新されたことを通知するRP更新通知信号57を生成する。RP更新周期設定レジスタ26は、RP下位ビットラッチ信号56およびRP更新通知信号57の周期をプログラマブルに設定する。これにより、書込み側のクロックに対して読出し側のクロックの方が遅いようなケースに対応できる。
【００３６】
[動作の説明]
書込み側FIFOステータスフラグ48の生成は、書込み側ライトポインタ10，書込み側リードポインタ11，RP更新信号同期化回路12，書込み側FIFOステータス生成回路15，RP下位ビット保持レジスタ23，RP更新周期制御回路24およびRP更新周期設定レジスタ26により行なわれる。
【００３７】
すなわち、読出し側リードポインタ52を書込み側から参照するには次のように行う。先ず、RP更新周期制御回路24は一定周期毎にRP下位ビットラッチ信号56を生成する。RP下位ビット保持レジスタ23は、RP下位ビットラッチ信号56のタイミングで読出しリードポインタ52の下位ビットをラッチする。
【００３８】
次に、RP更新周期制御回路24は、書込み側へRP下位ビット保持レジスタ23が更新されたことを通知するRP更新通知信号57を生成する。RP更新信号同期化回路12は、RP更新通知信号57を書込み側のクロックで同期化してRP更新信号44を生成し、書込み側リードポインタ11に渡す。
【００３９】
RP更新信号44を受けた書込み側リードポインタ11は、RP下位ビット保持レジスタ23の最上位ビットと対応する自身のビットを比較して、結果が不一致で、かつ自身のビットが“１”を示している場合は桁上がりが発生していることを示しているので、書込み側リードポインタ11にRP下位ビット保持レジスタ23の内容を下位ビットに上書きして、それより上位のビットは自身の内容に“１”を加算する。それ以外の場合は桁上がりが発生していないことを示しているので、RP下位ビット保持レジスタ23の内容を下位ビットに上書きする。
【００４０】
これにより、読出し側リードポインタ21の内容を書込み側リードポインタ11に渡すことができるので、書込み側FIFOステータス生成回路15で、書込み側ライトポインタ10と書込み側リードポインタ11の内容を比較することにより、書込み側のクロックに同期したFIFOの空き状態を示す書込み側FIFOステータスフラグ48の生成を行える。
【００４１】
ここで、読出し側のクロック周波数と比較して書込み側のクロック周波数が遅い場合、つまりRP更新周期制御回路24が計測する一定周期の時間の間隔がRP更新通知信号57を同期化して、書込み側リードポインタ11の内容を更新する時間より短い場合、RP更新周期設定レジスタ26からRP更新周期制御回路24が計測する周期間隔を変更できるようにすることで、様々なクロック周波数比に対応することができる。
【００４２】
図２は、本発明の非同期FIFO回路の読出し側リードポインタを書込み側リードポインタへ変換するタイミングチャートである。ここでは例として、非同期FIFOの深さ１０ビット、書込み側リードポインタ11の更新周期を４クロックとしたときの書込み側における読出し側リードポインタ52の参照方法を説明する。RP更新周期設定レジスタ26の更新周期を４クロックと設定すると、RP更新周期制御回路24は４クロック毎にRP下位ビットラッチ信号56を生成する。RP下位ビット保持レジスタ23はRP下位ビットラッチ信号56がアサートされると、読出し側リードポインタ21の下位ビットをラッチする。
【００４３】
RP下位ビット保持レジスタ23は書込み側リードポインタ11の更新周期の４クロック分を計測するのに必要な２ビットに１ビットを付加して合計３ビットである。同時に、RP下位ビットラッチ信号56のタイミングで、RP更新通知信号57をトグルさせる。RP更新通知信号57は、RP更新信号同期化回路12に導かれ、RP更新通知信号57が変化すると同期化を行い、RP更新信号44を生成する。
【００４４】
RP更新信号44を受けた書込み側リードポインタ11は、RP下位ビット保持レジスタ23の最上位ビットである３ビット目と自身の３ビット目を比較して、結果が不一致でかつ自身の３ビット目が“１”を示している場合、桁上がりが発生していることを示していることから、下位３ビットをRP下位ビット保持レジスタ23の値に上書きし、４ビット目から１０ビットの上位ビットには“１”を加算する。それ以外の場合、桁上がりが発生していないことを示しているので、下位３ビットをRP下位ビット保持レジスタ23の値に上書きする。
【００４５】
これにより、書込み側において読出しリードポインタ52を書込み側リードポインタ11を通して参照可能になる。従って、書込み側ライトポインタ10と書込み側リードポインタ11の内容を書込み側FIFOステータス生成回路15で比較することで、書込み側のクロックに同期したFIFOステータスを生成可能となる。
【００４６】
一方、読出し側FIFOステータスフラグ58の生成は、読出し側ライトポインタ20，読出し側リードポインタ21，WP更新信号同期化回路22，読出し側FIFOステータス生成回路25，WP下位ビット保持レジスタ13，WP更新周期制御回路14およびWP更新周期設定レジスタ16により行なわれる。
【００４７】
すなわち、書込み側ライトポインタ42を読出し側から参照するには次のように行う。先ず、WP更新周期制御回路14は一定周期毎にWP下位ビットラッチ信号46を生成する。WP下位ビット保持レジスタ13は、WP下位ビットラッチ信号46のタイミングで、書込み側ライトポインタ42の下位ビットをラッチする。
【００４８】
次に、WP更新周期制御回路14は、読出し側へWP下位ビット保持レジスタ13が更新されたことを通知するWP更新通知信号47を生成する。WP更新信号同期化回路22は、WP更新通知信号47を読出し側のクロックで同期化してWP更新信号54を生成し、読出し側ライトポインタ20に渡す。
【００４９】
WP更新信号54を受けた読出し側ライトポインタ20は、WP下位ビット保持レジスタ13の最上位ビットと対応する自身のビットを比較して、結果が不一致で、かつ自身のビットが“１”を示している場合は桁上がりが発生していることを示しているので、読出し側ライトポインタ20にWP下位ビット保持レジスタ13の内容を下位ビットに上書きして、それより上位のビットは自身の内容に“１”を加算する。それ以外の場合は桁上がりが発生していないことを示しているので、WP下位ビット保持レジスタ13の内容を下位ビットに上書きする。
【００５０】
これにより、書込み側ライトポインタ10の内容を読出し側ライトポインタ20に渡すことができるので、読出し側FIFOステータス生成回路25で、読出し側ライトポインタ20と読出し側リードポインタの内容を比較することにより、読出し側のクロックに同期したFIFOの占有状態を示す読出し側FIFOステータスフラグ58を生成する。
【００５１】
ここで、書込み側のクロック周波数と比較して読出し側のクロック周波数が遅い場合、つまりWP更新周期制御回路14が計測する一定周期の時間の間隔がWP更新通知信号47を同期化して、読出し側ライトポインタ20の内容を更新する時間より短い場合、WP更新周期設定レジスタ16からWP更新周期制御回路14が計測する周期間隔を変更できるようにすることで、様々なクロック周波数比に対応することができる。
【００５２】
図３は、本発明の非同期FIFO回路の書込み側ライトポインタを読出し側リードポインタへ変換するタイミングチャートである。同様に、読出し側ライトポインタ20の更新周期を４クロックとしたときの読出し側における書込み側ライトポインタ42の参照方法を説明する。WP更新周期設定レジスタ16の更新周期を４クロックと設定すると、WP更新周期制御回路14は４クロック毎にWP下位ビットラッチ信号46を生成する。WP下位ビット保持レジスタ13はWP下位ビットラッチ信号46がアサートされると、書込み側ライトポインタ42の下位ビットをラッチする。
【００５３】
ここで、WP下位ビット保持レジスタ13は読出し側ライトポインタ20の更新周期の４クロック分を計測するのに必要な２ビットに１ビットを付加して合計３ビットである。同時に、WP下位ビットラッチ信号46のタイミングで、WP更新通知信号47をトグルさせる。WP更新通知信号47は、WP更新信号同期化回路22に導かれ、WP更新通知信号47が変化すると同期化を行い、WP更新信号54を生成する。
【００５４】
WP更新信号54を受けた読出し側ライトポインタ20は、WP下位ビット保持レジスタ13の最上位ビットである３ビット目と自身の３ビット目を比較して、結果が不一致で、かつ自身の３ビット目が“１”を示している場合、桁上がりが発生していることを示していることから、下位３ビットはWP下位ビット保持レジスタ13の値に上書きし、４ビット目から１０ビットの上位ビットには“１”を加算する。それ以外の場合は桁上がりが発生していないことを示しているので、下位３ビットにWP下位ビット保持レジスタ13の値に上書きする。  このようにすることで、読出し側において、書込み側ライトポインタ42を読出し側ライトポインタ20を通して参照可能になる。従って、読出し側ライトポインタ20と読み出し側リードポインタ21の内容を読出し側FIFOステータス生成回路25で比較することで、読出し側のクロックに同期したFIFOステータスを生成可能となる。
【図面の簡単な説明】
【００５５】
【図１】本発明の非同期FIFO回路を示すブロック図
【図２】本発明の非同期FIFO回路における読出し側リードポインタを書込み側リードポインタへ変換するタイミングチャート
【図３】本発明の非同期FIFO回路における書込み側ライトポインタを読出し側リードポインタへ変換するタイミングチャート
【符号の説明】
【００５６】
10      書込み側ライトポインタ
11      書込み側リードポインタ
12      RP更新信号同期化回路
13      WP下位ビット保持レジスタ
14      WP更新周期制御回路
15      書込み側FIFOステータス生成回路
16      WP更新周期設定レジスタ
20      読出し側ライトポインタ
21      読出し側リードポインタ
22      WP更新信号同期化回路
23      RP下位ビット保持レジスタ
24      RP更新周期制御回路
25      読出し側FIFOステータス生成回路
26      RP更新周期設定レジスタ
30      デュアルポートメモリ
40      書込みデータ
41      書込みイネーブル信号
42      書込み側ライトポインタ
43      書込み側リードポインタ
44      RP更新信号
45      WP下位ビット
46      WP下位ビットラッチ信号
47      WP更新通知信号
48      書込み側FIFOステータスフラグ
50      読出しデータ
51      読出しイネーブル信号
52      読出し側リードポインタ
53      読出し側ライトポインタ
55      RP下位ビット
54      WP更新信号
56      RP下位ビットラッチ信号
57      RP更新通知信号
58      読出し側FIFOステータスフラグ
【図１】
2007310600.tif 000003
【図２】
2007310600.tif 000004
【図３】
2007310600.tif 000005