(57)【要約】【課題】読み出しと書き込みが同期しているか、非同期であるかに係わりなく、データが満杯であるか空であるかを正しく検出できるリングバッファ回路及びリングバッファ回路の制御回路を提供する。【解決手段】Ｎビットで指定されるアドレスを有するリードライトメモリと、Ｎ＋１ビットのグレイコードをカウントするリードライトメモリの書き込みアドレスカウンタポインタ及び読み出しアドレスカウンタポインタと、書き込み、読み出しアドレスカウンタポインタの出力するＮ＋１ビットのグレイコードをリードライトメモリの書き込み、読み出しアドレスとして直接指定可能なＮビットのアドレスに変換する書き込み、読み出しアドレス変換回路と、を有する。【選択図】図１
2010160653.tif 000002
【特許請求の範囲】
【請求項１】
Ｎビット（Ｎは２以上の整数）で指定されるアドレスを有するリードライトメモリと、
前記リードライトメモリに対して書き込みを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってＮ＋１ビットのグレイコードをカウントする書き込みアドレスカウンタポインタと、
前記リードライトメモリに対して読み出しを行う毎にアドレスを更新し前記最終アドレスまでカウントすると前記最初のアドレスに戻ってカウントを継続するカウンタポインタであってＮ＋１ビットのグレイコードをカウントする読み出しアドレスカウンタポインタと、
前記書き込みアドレスカウンタポインタの出力するＮ＋１ビットのグレイコードを前記リードライトメモリの書き込みアドレスとして直接指定可能なＮビットのアドレスに変換する書き込みアドレス変換回路と、
前記読み出しアドレスカウンタポインタの出力するＮ＋１ビットのグレイコードを前記リードライトメモリの読み出しアドレスとして直接指定可能なＮビットのアドレスに変換する読み出しアドレス変換回路と、
を有することを特徴とするリングバッファ回路。
【請求項２】
前記リードライトメモリが書き込みクロックに同期して前記書き込みを行い、読み出しクロックに同期して前記読み出しを行うメモリであって、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みクロックに同期して出力する読み出しポインタ同期化部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しポインタ同期化部が出力するグレイコードと比較演算する書き込み同期比較演算部と、
をさらに有することを特徴とする請求項１記載のリングバッファ回路。
【請求項３】
前記書き込み同期比較演算部が、前記書き込みアドレスカウンタポインタのグレイコードと前記読み出しポインタ同期化部が出力するグレイコードとを比較し、両者の上位２ビットがいずれも不一致であり、かつ、前記上位２ビット以外の両者の下位ビットがすべて一致であるときに、前記リードライトメモリが満杯であることを検出することを特徴とする請求項２記載のリングバッファ回路。
【請求項４】
前記リードライトメモリが書き込みクロックに同期して書き込みを行い、読み出しクロックに同期して読み出しを行うメモリであって、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しクロックに同期して出力する書き込みポインタ同期化部と、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ同期化部が出力するグレイコードと比較演算する読み出し同期比較演算部と、
をさらに有することを特徴とする請求項１乃至３いずれか１項記載のリングバッファ回路。
【請求項５】
前記読み出し同期比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードと前記書き込みポインタ同期化部が出力するグレイコードとを比較し、Ｎ＋１ビットの全ビットが一致していた場合に、前記リードライトメモリが空であることを検出することを特徴とする請求項４記載のリングバッファ回路。
【請求項６】
前記リードライトメモリが、書き込みポートと、読み出しポートと、を有するデュアルポートメモリであり、
前記書き込みクロックと前記読み出しクロックが非同期のクロックであることを特徴とする請求項２乃至５いずれか１項記載のリングバッファ回路。
【請求項７】
前記リードライトメモリが、書き込みポートと、読み出しポートと、を有し、書き込みクロックに同期して前記書き込みポートから前記書き込みを行い、読み出しクロックに同期して前記読み出しポートから前記読み出しを行うデュアルポートメモリであり、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みクロックに同期して出力する読み出しポインタ同期化部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しクロックに同期して出力する書き込みポインタ同期化部と、
前記書き込みクロックと前記読み出しクロックが互いに同期したクロックであるか否かを示す同期非同期選択信号に基づいて、前記書き込みアドレスカウンタポインタが出力するグレイコード又は前記書き込みポインタ同期化部の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部と、
前記同期非同期選択信号に基づいて、前記読み出しアドレスカウンタポインタが出力するグレイコード又は前記読み出しポインタ同期化部の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しポインタ選択部が出力するグレイコードと比較演算する書き込み同期比較演算部と、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ選択部が出力するグレイコードと比較演算する読み出し同期比較演算部と、
を有することを特徴とする請求項１記載のリングバッファ回路。
【請求項８】
Ｎ（Ｎは２以上の整数）ビットで表されるアドレスを有するリングバッファの制御回路であって、
前記リングバッファの読み出しアドレスを指定する読み出しアドレスカウンタポインタと、
前記リングバッファの書き込みアドレスを指定する書き込みアドレスカウンタポインタと、
前記読み出しアドレスと前記書き込みアドレスとを比較し前記リングバッファが空又は満杯であるか否かを検出するための比較演算部と、を備え、
前記読み出しアドレスカウンタポインタと書き込みアドレスカウンタポインタがそれぞれＮ＋１ビット構成のグレイコードカウンタポインタで構成され、
さらに、前記読み出しアドレスカウンタポインタ及び書き込みアドレスカウンタポインタがそれぞれ出力するＮ＋１ビットのグレイコードをＮビットの前記リングバッファのアドレスに変換するアドレス変換回路を備えたことを特徴とするリングバッファの制御回路。
【請求項９】
前記アドレス変換回路が、
前記読み出しアドレスカウンタポインタが出力するＮ＋１ビットのグレイコードをＮビットの読み出しアドレスに変換する読み出しアドレス変換回路と、
前記書き込みアドレスカウンタポインタが出力するＮ＋１ビットのグレイコードをＮビットの書き込みアドレスに変換する書き込みアドレス変換回路と、
を備えたことを特徴とする請求項８記載のリングバッファの制御回路。
【請求項１０】
前記読み出しアドレス変換回路、書き込みアドレス変換回路が、共に、初期状態のグレイコードアドレスを０番目のアドレスとしたとき、入力するＮ＋１ビットのグレイコードアドレスの値が２のＮ乗番目以降のアドレスであった場合には、２のＮ乗番前のアドレスに変換して出力することを特徴とする請求項９記載のリングバッファの制御回路。
【請求項１１】
前記読み出しアドレス変換回路、書き込みアドレス変換回路が、入力されたＮ＋１ビットのグレイコードについて、最下位ビットからＮ−１ビット目までの入力ビットデータをそのまま出力ビットとし、Ｎビット目とＮ＋１ビット目の最上位２ビットの入力ビットデータについて排他的論理和を取ってＮビット目の出力ビットデータとすることにより、Ｎ＋１ビットのグレイコードアドレスをＮビットのグレイコードアドレスに変換して出力することを特徴とする請求項９又は１０記載のリングバッファの制御回路。
【請求項１２】
前記読み出しアドレス変換回路、書き込みアドレス変換回路が、それぞれ、入力されたＮ＋１ビットのグレイコードアドレスをＮ＋１ビットのバイナリコードに変換し、前記Ｎ＋１ビットのバイナリコードのうち、下位Ｎビットのバイナリコードを出力することにより、Ｎ＋１ビットのグレイコードアドレスをＮビットのバイナリコードアドレスに変換する回路であることを特徴とする請求項９又は１０記載のリングバッファの制御回路。
【請求項１３】
書き込みクロックに同期してデータを書き込み、前記書き込みクロックとは非同期の読み出しクロックに同期してデータを読み出すリングバッファを制御することのできるリングバッファの制御回路であって、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みクロックに同期して出力する読み出しポインタ同期化部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しクロックに同期して出力する書き込みポインタ同期化部と、をさらに備え、
前記比較演算部が、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しポインタ同期化部が出力するグレイコードと前記書き込みクロックに同期して比較演算する書き込み同期比較演算部と、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ同期化部が出力するグレイコードと前記読み出しクロックに同期して比較演算する読み出し同期比較演算部と、
を有することを特徴とする請求項８乃至１２いずれか１項記載のリングバッファの制御回路。
【請求項１４】
前記書き込み同期比較演算部が、前記書き込みアドレスカウンタポインタのグレイコードと前記読み出しポインタ同期化部が出力するグレイコードの上位２ビットがいずれも不一致であり、かつ、前記上位２ビット以外の下位各ビットがいずれも一致であるときに前記リングバッファが満杯であることを検出することを特徴とする請求項１３記載のリングバッファの制御回路。
【請求項１５】
前記読み出し同期比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードと前記書き込みポインタ同期化部が出力するグレイコードのＮ＋１ビットの値がいずれも一致するときに前記リングバッファが空であることを検出することを特徴とする請求項１３又は１４記載のリングバッファの制御回路。
【請求項１６】
前記書き込みクロックと前記読み出しクロックとが互いに同期したクロックであるか否かを示す同期非同期選択信号に基づいて、前記書き込みアドレスカウンタポインタが出力するグレイコード又は前記書き込みポインタ同期化部の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部と、
前記同期非同期選択信号に基づいて、前記読み出しアドレスカウンタポインタが出力するグレイコード又は前記読み出しポインタ同期化部の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部と、
をさらに備え、
前記書き込み同期比較演算部が、前記書き込みアドレスカウンタポインタのグレイコードを前記書き込みポインタ選択部が出力するグレイコードと比較演算し、
前記読み出し同期比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ選択部が出力するグレイコードと比較演算する
ことを特徴とする請求項１３乃至１５いずれか１項記載のリングバッファの制御回路。
【請求項１７】
前記比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードと、前記書き込みアドレスカウンタポインタのグレイコードとを比較し、両者の上位２ビットがいずれも不一致であり、前記上位２ビット以外の下位ビットがすべて一致である場合に前記リングバッファが満杯であることを検出し、両者のＮ＋１ビットの全ビットが一致である場合に前記リングバッファが空であることを検出することを特徴とする請求項８乃至１２いずれか１項記載のリングバッファの制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一定のアドレス範囲を循環してリードライトすることのできるリングバッファ回路及びその制御回路に関する。特に、デュアルポートメモリを用い、リードとライトを非同期に行うことも可能なリングバッファ回路及びその制御回路に関する。
【背景技術】
【０００２】
一般に、ＦＩＦＯ（ファーストイン・ファーストアウト）型のデータバッファ装置（以降、ＦＩＦＯと表記する）は、内部の状態を外部回路に知らせるための信号（以降内部状態信号と表記する）を出力する事によって記憶領域が満杯になっている状態（以降、フル状態と表記する）での書き込みや、記憶領域の書き込みデータが全て読み出された空の状態（以降、エンプティ状態と表記する）での読み出しを防ぐ事が重要である。内部状態信号は、フル状態、エンプティ状態だけでなく、ＦＩＦＯバッファの残量状態などを出力される場合もある。
【０００３】
一般的なＦＩＦＯの先入れ先だし動作は、一定のアドレス範囲を有するリードライトメモリを、データの書き込みアドレスを指す書き込みポインタＷＰ（ｗｒｉｔｅ  ｐｏｉｎｔｅｒ）と、データの書き込みアドレスを指す読み出しポインタＲＰ（ｒｅａｄ  ｐｏｉｎｔｅｒ）を用いて制御される。この書き込みポインタＷＰと読み出しポインタＲＰを用いてリードライトメモリの一定のアドレス範囲が循環してアクセスされ、リードライトメモリをいわゆるリングバッファとして用い、ＦＩＦＯの機能が実現される。書き込みポインタＷＰと読み出しポインタＲＰは、書き込み、読み出しを行う毎にアドレスを更新し、最終アドレスまで書き込み、読み出しを行ったら、最初のアドレスに戻って書き込み、読み出しを継続する。
【０００４】
通常、書き込みと読み出しが共通のクロック信号に同期して行われる同期式のリングバッファ回路の場合、書き込みポインタＷＰ、読み出しポインタＲＰは共通のクロック信号に同期して更新されるため、内部状態信号もこの共通のクロック信号に同期して生成される。
【０００５】
これに対し、データの書き込みとデータの読み出しで互いに独立したクロック信号を用いてアクセスする非同期式のリングバッファ回路の場合、書き込みポインタＷＰ及び読み出しポインタＲＰは異なるクロック信号に同期して更新される。この場合、読出し側と書込み側では使用しているクロックが異なるので、それぞれのポインタを直接参照することはできず、参照する側のクロックで同期化する必要がある。
【０００６】
しかし、ポインタは複数ビット幅であるため、単純にポインタの同期化を行うと、参照元のポインタが変化途中のメタステーブル状態のときに、参照先のクロックで同期化すると、正しいポインタの値を参照できない。
【０００７】
一般的には、このような問題に対処するために、１クロック間に複数ビット幅が同時に変化しない、すなわちハミング距離が１であるカウンタを使用することによって、同期化の際に生じる誤動作を回避することが考えられる。特にバッファがｎビットのアドレス空間（２のｎ乗のアドレス空間）を持つ場合、ｎビットで構成可能なグレイコードカウンタが使用される。書き込みポインタＷＰ又は読み出しポインタＲＰをグレイコードカウンタにすれば、通常のバイナリカウンタより多少素子は増えるが、グレイコードカウンタの出力の値はそのままリードライトメモリのアドレスとして使用することができる。
【０００８】
また、上述したように、リングバッファの内部の状態を外部へ知らせる内部状態信号を生成する必要がある。例えば、満杯（フル）と、空（エンプティ）では、共に書き込みポインタＷＰと読み出しポインタＲＰの値は等しくなるので、書き込みポインタＷＰと読み出しポインタＲＰとを比較しただけでは、満杯（フル）と、空（エンプティ）の区別がつかない。そこで、それぞれのポインタが最終アドレスから０に戻るときに反転させる付加ビット（以降付加ビットと表記する）を設け、満杯（フル）と、空（エンプティ）を区別する内部状態信号を生成する方法がある。
【０００９】
この方法が特許文献１の図２に記載されている。特許文献１の図２では、１０ビットの書きこみポインタと読み出しポインタについてそれぞれ１ビットの付加ビットを設けて１１ビットの情報として内部状態の生成に使用し、下位１０ビットをポインタして使用している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−１４８９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以下の分析は本発明において与えられる。上記特許文献１の付加ビットを設けて、満杯（フル）と、空（エンプティ）を区別する方法を上述した非同期式のリングバッファに適用しようとすると、以下の問題がある。書き込みポインタＷＰと読み出しポインタＲＰが変化するときに同時に付加ビットも変化することになる。したがって、書き込みポインタＷＰ及び読み出しポインタＲＰをグレイコード化したとしても、付加ビットまで含めれば、同時に複数ビットが変化することになり、誤動作を回避できない。
【００１２】
また、仮に、書き込みポインタ又は読み出しポインタに付加ビットまで含め、全体をグレイコード化すると、リードライトメモリのアドレスの指定に必要なビット数よりグレイコードのビット数が増えてしまうので、そのままでは、リードライトメモリのアドレスを指定することができない。
【課題を解決するための手段】
【００１３】
本発明の１つの側面によるリングバッファ回路は、Ｎビット（Ｎは２以上の整数）で指定されるアドレスを有するリードライトメモリと、前記リードライトメモリに対して書き込みを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってＮ＋１ビットのグレイコードをカウントする書き込みアドレスカウンタポインタと、前記リードライトメモリに対して読み出しを行う毎にアドレスを更新し前記最終アドレスまでカウントすると前記最初のアドレスに戻ってカウントを継続するカウンタポインタであってＮ＋１ビットのグレイコードをカウントする読み出しアドレスカウンタポインタと、前記書き込みアドレスカウンタポインタの出力するＮ＋１ビットのグレイコードを前記リードライトメモリの書き込みアドレスとして直接指定可能なＮビットのアドレスに変換する書き込みアドレス変換回路と、前記読み出しアドレスカウンタポインタの出力するＮ＋１ビットのグレイコードを前記リードライトメモリの読み出しアドレスとして直接指定可能なＮビットのアドレスに変換する読み出しアドレス変換回路と、を有する。
【００１４】
また、本発明の他の側面によるリングバッファの制御回路は、Ｎ（Ｎは２以上の整数）ビットで表されるアドレスを有するリングバッファの制御回路であって、前記リングバッファの読み出しアドレスを指定する読み出しアドレスカウンタポインタと、前記リングバッファの書き込みアドレスを指定する書き込みアドレスカウンタポインタと、前記読み出しアドレスと前記書き込みアドレスとを比較し前記リングバッファが空又は満杯であるか否かを検出するための比較演算部と、を備え、前記読み出しアドレスカウンタポインタと書き込みアドレスカウンタポインタがそれぞれＮ＋１ビット構成のグレイコードカウンタポインタで構成され、さらに、前記読み出しアドレスカウンタポインタ及び書き込みアドレスカウンタポインタがそれぞれ出力するＮ＋１ビットのグレイコードをＮビットの前記リングバッファのアドレスに変換するアドレス変換回路を備える。
【発明の効果】
【００１５】
本発明によれば、読み出しと書き込みが同期しているか非同期であるかに係わりなく、データが満杯であるか空であるかを正しく検出できるリングバッファ回路及びリングバッファの制御回路が得られる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施例によるリングバッファ回路全体のブロック図である。
【図２】本発明の一実施例における書き込みポインタ同期化部及び読み出しポインタ同期化部の回路図である。
【図３】本発明の一実施例における書き込みアドレスカウンタポインタ及び読み出しアドレスカウンタポインタの状態遷移を示す図面である。
【図４】（ａ）は本発明の一実施例における書き込みアドレス変換回路及び読み出しアドレス変換回路の回路図、（ｂ）は書き込みアドレス変換回路及び読み出しアドレス変換回路の変換前後のアドレスを示す図面である。
【図５】（ａ）は本発明の一実施例における別な書き込みアドレス変換回路及び読み出しアドレス変換回路のブロック図、（ｂ）は別な書き込みアドレス変換回路及び読み出しアドレス変換回路の変換前後のアドレスを示す図面である。
【図６】本発明の別な実施例によるリングバッファ回路全体のブロック図である。
【図７】本発明のさらに別な実施例によるリングバッファ回路全体のブロック図である。
【図８】図５（ａ）におけるＮ＋１ビットグレイバイナリ変換回路の回路図である。
【発明を実施するための形態】
【００１７】
本発明の実施形態について、必要に応じて図面を参照して説明する。なお、実施形態の説明において引用する図面及び図面の符号は実施形態の一例として示すものであり、それにより本発明による実施形態のバリエーションを制限するものではない。
【００１８】
本発明の一実施形態のリングバッファ回路（１００、１００Ａ、１００Ｂ）は、例えば、図１、図６、図７に示すように、Ｎビット（Ｎは２以上の整数）で指定されるアドレスを有するリードライトメモリ１０４と、リードライトメモリ１０４に対して書き込みを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってＮ＋１ビットのグレイコードをカウントする書き込みアドレスカウンタポインタ１０１と、リードライトメモリに対して読み出しを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってＮ＋１ビットのグレイコードをカウントする読み出しアドレスカウンタポインタ１０２と、書き込みアドレスカウンタポインタ１０１の出力するＮ＋１ビットのグレイコードをリードライトメモリ１０４の書き込みアドレスとして直接指定可能なＮビットのアドレスに変換する書き込みアドレス変換回路１０３と、読み出しアドレスカウンタポインタ１０２の出力するＮ＋１ビットのグレイコードをリードライトメモリ１０４の読み出しアドレスとして直接指定可能なＮビットのアドレスに変換する読み出しアドレス変換回路１０５と、を有する。書き込みアドレスカウンタポインタと読み出しアドレスカウンタポインタがグレイコードをカウントするようにしているので、書き込みと読み出しが同期しているか非同期であるかに係わらず、任意のタイミングでカウンタポインタの値を参照しても誤った値が参照されることはない。さらに、アドレスカウンタのビット数が実際のリードライトメモリのビット数より１ビット多いのでリードライトメモリが満杯（フル）であるか、空（エンプティ）であるか容易に区別することができる。さらに、実際のリードライトメモリのビット数より１ビット多い書き込みアドレスカウンタポインタと読み出しアドレスカウンタポインタとの出力するグレイコードをリードライトメモリのアドレスとして直接指定可能なアドレスに変換する書き込みアドレス変換回路と読み出しアドレス変換回路を設けているので、正しいアドレスのリードライトメモリにアクセスできる。
【００１９】
さらに、本発明の一実施形態のリングバッファ回路（１００、１００Ｂ）は、例えば、図１、図７に示すように、リードライトメモリ１０４が書き込みクロックＣＷに同期して書き込みを行い、読み出しクロックＣＲに同期して読み出しを行うメモリであって、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みクロックＣＷに同期して出力する読み出しポインタ同期化部１０７と、書き込みアドレスカウンタポインタ１０１のグレイコードを読み出しポインタ同期化部１０７が出力するグレイコードと比較演算する書き込み同期比較演算部１０８と、をさらに有する。読み出しポインタ同期化部は、読み出しアドレスカウンタポインタのグレイコードを書き込みクロックに同期して出力するので、書き込みクロックと読み出しクロックが非同期の場合であっても、書き込みクロックに同期して読み出しアドレスと書き込みアドレスとを比較することができる。
【００２０】
さらに、本発明の一実施形態のリングバッファ回路（１００、１００Ｂ）は、例えば、図１、図７に示すように、書き込み同期比較演算部１０８が、書き込みアドレスカウンタポインタ１０１のグレイコードと読み出しポインタ同期化部１０７が出力するグレイコードとを比較し、両者の上位２ビットがいずれも不一致であり、かつ、上位２ビット以外の両者の下位ビットがすべて一致であるときに、前記リードライトメモリ１０４が満杯であることを検出する。すなわち、リードライトメモリが満杯であるときは、リードライトメモリのアドレスの数を２のＮ乗とすると、書き込みアドレスカウンタポインタのグレイコードと読み出しアドレスカウンタポインタのグレイコードが、２のＮ乗だけ状態がずれることになる。従って、グレイコードの性質より、Ｎ＋１ビットのグレイコードは、Ｎ＋１ビットとＮビットが不一致、Ｎ−１ビット以下の各ビットは一致する。リングバッファ回路が満杯（フル）になるのは、データの書き込みに同期して発生するので、満杯（フル）は、書き込みクロックに同期して検出することが好ましい。
【００２１】
さらに、本発明の一実施形態のリングバッファ回路（１００、１００Ｂ）は、例えば、図１、図７に示すように、リードライトメモリ１０４が書き込みクロックＣＷに同期して書き込みを行い、読み出しクロックＣＲに同期して読み出しを行うメモリであって、書き込みアドレスカウンタポインタ１０１のグレイコードを読み出しクロックＣＲに同期して出力する書き込みポインタ同期化部１０６と、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みポインタ同期化部１０６が出力するグレイコードと比較演算する読み出し同期比較演算部１０９と、をさらに有する。書き込みポインタ同期化部は、書き込みアドレスカウンタポインタのグレイコードを読み出しクロックに同期して出力するので、書き込みクロックと読み出しクロックが非同期の場合であっても、読み出しクロックに同期して読み出しアドレスと書き込みアドレスとを比較することができる。
【００２２】
さらに、本発明の一実施形態のリングバッファ回路（１００、１００Ｂ）は、例えば、図１、図７に示すように、読み出し同期比較演算部１０９が、読み出しアドレスカウンタポインタ１０２のグレイコードと書き込みポインタ同期化部１０６が出力するグレイコードとを比較し、Ｎ＋１ビットの全ビットが一致していた場合に、リードライトメモリ１０４が空であることを検出する。リードライトメモリ１０４が空（エンプティ）であるときには、読み出しアドレスカウンタポインタと書き込みアドレスカウンタポインタの出力するグレイコードは一致する。従って、グレイコードが全ビット一致していることを検出すればよい。なお、リードライトメモリ１０４が空（エンプティ）になるのはデータの読み出しによって発生するので、空であるか否かは、読み出しクロックに同期して検出することが望ましい。
【００２３】
さらに、本発明の一実施形態のリングバッファ回路（１００、１００Ｂ）は、例えば、図１、図７に示すように、リードライトメモリ１０４が、書き込みポート１１０と、読み出しポート１１１と、を有するデュアルポートメモリ１０４であり、書き込みクロックＣＷと読み出しクロックＣＲが非同期のクロックである。書き込みクロックと読み出しクロックが非同期である場合には、リードライトメモリが、書き込みポートと読み出しポートを有するデュアルポートメモリとして、書き込みと読み出しとをそれぞれ独立してできるようにすることが好ましい。
【００２４】
さらに、本発明の一実施形態のリングバッファ回路１００Ｂは、例えば、図７に示すように、リードライトメモリ１０４が、書き込みポート１１０と、読み出しポート１１１と、を有し、書き込みクロックＣＷに同期して書き込みポート１１０から書き込みを行い、読み出しクロックＣＲに同期して読み出しポート１１１から読み出しを行うデュアルポートメモリ１０４であり、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みクロックＣＷに同期して出力する読み出しポインタ同期化部１０７と、書き込みアドレスカウンタポインタ１０１のグレイコードを読み出しクロックＣＲに同期して出力する書き込みポインタ同期化部１０６と、書き込みクロックＣＷと読み出しクロックＣＲが互いに同期したクロックであるか否かを示す同期非同期選択信号１１５に基づいて、書き込みアドレスカウンタポインタ１０１が出力するグレイコード又は書き込みポインタ同期化部１０６の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部１１３と、同期非同期選択信号１１５に基づいて、読み出しアドレスカウンタポインタ１０２が出力するグレイコード又は読み出しポインタ同期化部１０７の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部１１４と、書き込みアドレスカウンタポインタ１０１のグレイコードを読み出しポインタ選択部１１４が出力するグレイコードと比較演算する書き込み同期比較演算部と、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みポインタ選択部１１３が出力するグレイコードと比較演算する読み出し同期比較演算部１０９と、を有する。上記構成によれば、書き込みクロックと読み出しクロックが同期しているか非同期であるかに係わらず、動作するリングバッファ回路が得られる。さらに、同期非同期選択信号により、書き込みクロックと読み出しクロックが同期している場合には、書き込みポインタ同期化部、読み出しポインタ同期化部をスキップできるので、リードライトメモリのフル及び／又はエンプティを高速に検出できる。
【００２５】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路は、図１、図６、図７に示すように、Ｎ（Ｎは２以上の整数）ビットで表されるアドレスを有するリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路であって、リングバッファ（１００、１００Ａ、１００Ｂ）の読み出しアドレスを指定する読み出しアドレスカウンタポインタ１０２と、リングバッファ（１００、１００Ａ、１００Ｂ）の書き込みアドレスを指定する書き込みアドレスカウンタポインタ１０１と、読み出しアドレスと書き込みアドレスとを比較しリングバッファ（１００、１００Ａ、１００Ｂ）が空又は満杯であるか否かを検出するための比較演算部（１０８、１０９、１１２）と、を備え、読み出しアドレスカウンタポインタ１０２と書き込みアドレスカウンタポインタ１０１がそれぞれＮ＋１ビット構成のグレイコードカウンタポインタで構成され、さらに、読み出しアドレスカウンタポインタ１０２及び書き込みアドレスカウンタポインタ１０１がそれぞれ出力するＮ＋１ビットのグレイコードをＮビットのリングバッファ（１００、１００Ａ、１００Ｂ）のアドレスに変換するアドレス変換回路（１０３、１０５）を備える。上記制御回路をリードライトメモリと組み合わせれば、リングバッファを構成することができる。比較演算部は、書き込み用と読み出し用に分けて設けてもよいし、共用してもよい。
【００２６】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路は、図１、図６、図７に示すように、アドレス変換回路（１０３、１０５）が、読み出しアドレスカウンタポインタ１０２が出力するＮ＋１ビットのグレイコードをＮビットの読み出しアドレスに変換する読み出しアドレス変換回路１０５と、書き込みアドレスカウンタポインタ１０１が出力するＮ＋１ビットのグレイコードをＮビットの書き込みアドレスに変換する書き込みアドレス変換回路１０３と、を備える。アドレス変換回路を読み出し用と書き込み用に分けて設けることにより、読み出しアドレスと書き込みアドレスとを同時に並行して変換することができる。また、アドレス変換回路の変換結果をレジスタ等に保持しなくとも、アドレス変換回路の出力により直接読み出しアドレス、書き込みアドレスをリードライトメモリに対して出力することができる。
【００２７】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路は、読み出しアドレス変換回路１０５、書き込みアドレス変換回路１０３が、共に、初期状態のグレイコードアドレスを０番目のアドレスとしたとき、入力するＮ＋１ビットのグレイコードアドレスの値が２のＮ乗番目以降のアドレスであった場合には、２のＮ乗番前のアドレスに変換して出力する。たとえば、Ｎが３の場合は、図３に示すように、Ｎ＋１＝４ビットのグレイコードアドレスが８番目以降のアドレス（図３の状態８以上の場合）であった場合は、８番前のアドレス（状態番号が８小さい状態）に変換して出力する。最上位ビットは切り捨ててよい。図３には、Ｎが３の場合について示すが、グレイコードの性質により、Ｎが２以上であれば、任意のＮに対して適用できる。
【００２８】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路は、図４に示すように、読み出しアドレス変換回路１０５、書き込みアドレス変換回路１０３が、入力されたＮ＋１ビットのグレイコードについて、最下位ビットからＮ−１ビット目までの入力ビットデータをそのまま出力ビットとし、Ｎビット目とＮ＋１ビット目の最上位２ビットの入力ビットデータについて排他的論理和を取ってＮビット目の出力ビットデータとすることにより、Ｎ＋１ビットのグレイコードアドレスをＮビットのグレイコードアドレスに変換して出力する。図４には、Ｎが３の場合について、示すが、グレイコードの性質により、Ｎが２以上であれば、任意のＮに対して、適用できる。
【００２９】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路は、図５、図８に示すように、読み出しアドレス変換回路１０５、書き込みアドレス変換回路１０３が、それぞれ、入力されたＮ＋１ビットのグレイコードアドレスをＮ＋１ビットのバイナリコードに変換し、前記Ｎ＋１ビットのバイナリコードのうち、下位Ｎビットのバイナリコードを出力することにより、Ｎ＋１ビットのグレイコードアドレスをＮビットのバイナリコードアドレスに変換する回路である。図５、図８に示すように、グレイコードの性質により、２以上の任意のＮについて上記構成を適用できる。
【００３０】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ｂ）の制御回路は、図１、図７に示すように、書き込みクロックＣＷに同期してデータを書き込み、書き込みクロックとは非同期の読み出しクロックＣＲに同期してデータを読み出すリングバッファ（１００、１００Ｂ）を制御することのできるリングバッファの制御回路であって、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みクロックＣＷに同期して出力する読み出しポインタ同期化部１０７と、書き込みアドレスカウンタポインタ１０１のグレイコードを読み出しクロックＣＲに同期して出力する書き込みポインタ同期化部１０６と、をさらに備え、比較演算部（１０８、１０９）が、書き込みアドレスカウンタポインタ１０１のグレイコードを読み出しポインタ同期化部１０７が出力するグレイコードと書き込みクロックＣＷに同期して比較演算する書き込み同期比較演算部１０８と、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みポインタ同期化部１０６が出力するグレイコードと読み出しクロックＣＲに同期して比較演算する読み出し同期比較演算部１０９と、を有する。上記構成により、書き込み同期比較演算部を、書き込みクロックに同期して動作させ、読み出し同期比較演算部を、読み出しクロックに同期して動作させることができる。
【００３１】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ｂ）の制御回路は、図１、図７に示すように、書き込み同期比較演算部１０８が、書き込みアドレスカウンタポインタ１０１のグレイコードと読み出しポインタ同期化部１０７が出力するグレイコードの上位２ビットがいずれも不一致であり、かつ、前記上位２ビット以外の下位各ビットがいずれも一致であるときに前記リングバッファが満杯であることを検出する。例えば、図５には、Ｎ＝３の場合について示すが、書き込みアドレスカウンタポインタと読み出しアドレスカウンタポインタの値が「２のＮ乗＝８」だけ状態の番号が異なるとき、リングバッファは満杯（フル）になる。状態の番号が８つだけ異なるグレイコードカウンタの値は、上記のとおり、上位２ビットがいずれも不一致であり、上位２ビット以外の下位各ビットはいずれも一致である。上記関係は、グレイコードの性質により、Ｎが２以上であれば、任意のＮに対して成立する。
【００３２】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ｂ）の制御回路は、図１、図７に示すように、読み出し同期比較演算部１０９が、読み出しアドレスカウンタポインタ１０２のグレイコードと書き込みポインタ同期化部１０６が出力するグレイコードのＮ＋１ビットの値がいずれも一致するときに前記リングバッファが空であることを検出する。すなわち、読み出しアドレスカウンタポインタのグレイコードと、書き込みアドレスカウンタポインタのグレイコードと、が一致するとき、リングバッファのデータは空（エンプティ）である。
【００３３】
さらに、本発明の一実施形態のリングバッファ１００Ｂの制御回路は、例えば、図７に示すように、書き込みクロックＣＷと読み出しクロックＣＲとが互いに同期したクロックであるか否かを示す同期非同期選択信号１１５に基づいて、書き込みアドレスカウンタポインタ１０１が出力するグレイコード又は前記書き込みポインタ同期化部１０６の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部１１３と、同期非同期選択信号１１５に基づいて、読み出しアドレスカウンタポインタ１０２が出力するグレイコード又は読み出しポインタ同期化部１０７の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部１１４と、をさらに備え、書き込み同期比較演算部１０８が、書き込みアドレスカウンタポインタ１０１のグレイコードを書き込みポインタ選択部１１３が出力するグレイコードと比較演算し、読み出し同期比較演算部１０９が、読み出しアドレスカウンタポインタ１０２のグレイコードを書き込みポインタ選択部１１３が出力するグレイコードと比較演算する。上記構成によれば、書き込みクロックと読み出しクロックが同期しているか非同期であるかに係わらず、動作するリングバッファ回路が得られる。さらに、同期非同期選択信号により、書き込みクロックと読み出しクロックが同期している場合には、書き込みポインタ同期化部、読み出しポインタ同期化部をスキップできるので、リードライトメモリのフル及び／又はエンプティを高速に検出できる。
【００３４】
さらに、本発明の一実施形態のリングバッファ（１００、１００Ａ、１００Ｂ）の制御回路は、図１、図６、図７に示すように、比較演算部（１０８、１０９、１１２）が、読み出しアドレスカウンタポインタ１０２のグレイコードと、書き込みアドレスカウンタポインタ１０１のグレイコードとを比較し、両者の上位２ビットがいずれも不一致であり、上位２ビット以外の下位ビットがすべて一致である場合に前記リングバッファが満杯であることを検出し、両者のＮ＋１ビットの全ビットが一致である場合に前記リングバッファが空であることを検出する。すなわち、上記リングバッファの制御回路によれば、書き込みクロックと読み出しクロックが同期していようと非同期であろうと、リングバッファが満杯（フル）があるか否か、空（エンプティ）であるか否か検出することができる。以下、実施例に即し、図面を参照してさらに詳しく説明する。
【実施例１】
【００３５】
図１は、実施例１のリングバッファ回路の構成を示すブロック図である。図１において、リングバッファ回路は、リードライトメモリ１０４の書き込みポートとなる書き込み選択部１１０と読み出しポートとなる読み出し選択部１１１とを備えたデュアルポートメモリと、上記デュアルポートメモリをリングバッファとして機能させる制御回路から構成される。リングバッファの制御回路は、主に、書き込みアドレスカウンタポインタ１０１と、読み出しアドレスカウンタポインタ１０２と、書き込みアドレス変換回路１０３と読み出しアドレス変換回路１０５と、書き込みポインタ同期化部１０６と、読み出しポインタ同期化部１０７と、書き込み同期比較演算部１０８、読み出し同期比較演算部１０９を含んで構成される。
【００３６】
書き込み選択部１１０は、書き込みイネーブル信号がハイレベルの時に書き込みアドレス変換回路１０３によって示されるリードライトメモリ１０４のアドレスに対してデータを書き込む。
【００３７】
読み出し選択部１１１は、読み出しイネーブル信号がハイレベルの時にリードライトメモリ１０４の読み出しアドレス変換回路１０５によって示されるアドレスからデータを出力する。
【００３８】
書き込みアドレスカウンタポインタ１０１は、書き込みアドレスを指定するためのカウンタポインタで、データの書き込みが行われるたびにポインタ値が更新される。また、読み出しアドレスカウンタポインタ１０２は、読み出しアドレスを指定するためのカウンタポインタで、データの読み出しが行われるたびにポインタ値が更新される。
【００３９】
書き込みポインタ同期化部１０６及び、読み出しポインタ同期化部１０７は、それぞれ、書き込みアドレスカウンタポインタ１０１及び読み出しアドレスカウンタポインタ１０２のビット出力の同期化を行う。書き込みポインタ同期化部１０６及び読み出しポインタ同期化部１０７の構成の一例を示す回路図を図２に示す。図２の２０１及び２０２は、Ｄフリップフロップであり、多ビットの同期前データ２０３を同期先クロック２０６で２回ラッチして同期済みデータ２０５を生成している。
【００４０】
書き込み同期比較演算部１０８では、書き込みクロックに同期してＦＩＦＯバッファがフルであることを示す内部状態信号を生成し、読み出し同期比較演算部１０９では、ＦＩＦＯバッファがエンプティであることを示す内部状態信号を生成する。
【００４１】
ここで、書き込みアドレスカウンタポインタ１０１と読み出しアドレスカウンタポインタ１０２の回路構成及び動作を説明する。なお、書き込みアドレスカウンタポインタ１０１と読み出しアドレスカウンタポインタ１０２の回路構成及び動作は同一のため、書き込みアドレスカウンタポインタ１０１を代表して説明する。
【００４２】
書き込みアドレスカウンタポインタ１０１は、リードライトメモリ１０４がＮビットで指定されるアドレスを備える場合、Ｎ＋１ビットのグレイコードカウンタとして構成する。グレイコードカウンタの構成は周知のものを用いることができる。
【００４３】
図３は、書き込みアドレスカウンタポインタ１０１の状態遷移を示す図である。図３はＮ＝３の場合である。Ｎ＝３の時、書き込みアドレスカウンタポインタは４ビットで構成され、書き込みが行われる毎に状態の欄の状態０から状態１、状態２へと順次遷移し、状態１５において書き込みが行われた場合には、状態０へ戻る。書き込みアドレスカウンタポインタ１０１はグレイコードカウンタであるので、図３のカウンタ値の欄を見れば理解できるとおり、状態の更新によって変化するカウンタ値のビット数が常に１である。また、Ｎ＝３の時、状態０から状態１５までの計１６状態（２のＮ＋１乗の状態）を順に遷移しているため、１６の状態と１対１対応では８つのアドレスを有するリードライトメモリのアドレスを指定することができない。そこで、図３の「補正した状態」のように１６の状態によって順繰りに８つのアドレスを指定できるようにアドレス変換する必要がある。このようにグレイコードの「２のＮ＋１乗」個のアドレス値を「２のＮ乗」個のアドレス値に変換するように書き込みアドレス変換回路１０３が必要となる。なお、書き込みアドレスカウンタポインタ１０１について説明したが、図３の状態遷移を示す図は、読み出しアドレスカウンタポインタ１０２についてもそのまま適用できる。読み出しアドレスカウンタポインタ１０２についても「２のＮ＋１乗」個のアドレス値を「２のＮ乗」個のアドレス値に変換するように読み出しアドレス変換回路１０５が必要となる。
【００４４】
次に、実施例１における書き込みアドレス変換回路１０３及び読み出しアドレス変換回路１０５について説明する。図４（ａ）は書き込みアドレス変換回路１０３及び読み出しアドレス変換回路１０５の第１の構成例による回路図、（ｂ）はその変換前後のアドレスを示す図面である。アドレス変換回路の第１の構成例では、Ｎ＋１ビットのグレイコードカウンタから、Ｎビットのグレイコードカウンタ値にアドレス変換することでリードライトメモリ１０４の２のＮ乗個のアドレスを選択できるようにする。図４（ｂ）はＮ＝３の時の４ビットグレイコードカウンタ値と、アドレス変換後の状態とアドレス変換後の３ビットグレイコードカウンタ値を示す。アドレス変換後の８状態（２のＮ乗状態）を示す３ビット（Ｎビット）のグレイコード値は、４ビット（Ｎ＋１ビット）のグレイコード値の上位２ビットをＥＸＯＲした値を最上位ビットとし、４ビット（Ｎ＋１ビット）グレイコード値の下位２ビット（Ｎ−１ビット）をそのままアドレス変換後のグレイコードアドレスの下位２ビット（Ｎ−１ビット）とする３ビット（Ｎビット）値が、３ビット（Ｎビット）グレイコードカウンタ値である事がわかる。そのため、図４（ａ）のように、ＥＸＯＲ回路４０４によってグレイコードカウンタＮ＋１ビット目４０３とＮビット目４０２のＥＸＯＲをとり、最下位ビットからＮ―１ビット目までとを合わせたＮビット信号４０５を形成する事でアドレス変換する事ができる。
【００４５】
図５、図８を参照して、Ｎ＋１ビットのグレイコードをＮビットのバイナリコードに変換する書き込みアドレス変換回路１０３及び読み出しアドレス変換回路１０５の第２の構成例について説明する。図５（ａ）は第２の構成例のブロック図、図５（ｂ）はそのアドレス変換前後のアドレスカウンタ値の関係を示す図、図８はアドレス変換回路の回路図である。
【００４６】
アドレス変換回路の第２の構成例では、Ｎ＋１ビットのグレイコードカウンタから、Ｎ＋１ビットバイナリ値に変換し、さらにバイナリ変換後のＮ＋１ビットのアドレス値からＮビットバイナリ値を取り出す事で２のＮ乗のアドレスを指定できるようにする。図５（ａ）において、５００から５０３はアドレスカウンタポインタ（１０１、１０２）の出力段のデータフリップフロップである。データフリップフロップ５００〜５０３はＮ＋１ビットのグレイコードを保持している。それをＮ＋１ビットグレイバイナリ変換回路５０５によってバイナリコードを取り出し、そのうちの下位Ｎビットの信号５０６によってリードライトメモリ１０４の２のＮ乗個のアドレスを直接指定できる。Ｎ＋１ビットグレイバイナリ変換回路５０５の具体的な回路構成を、図８に示す。バイナリコードの第Ｎ＋１ビット目はグレイコードと同じであり、それ以外のビットについては、該当するグレイコードのビットと、ひとつ上位のバイナリコードのビットの排他的論理和によって算出できる。一度バイナリコードに変換してしまえば、Ｎ＋１ビットのバイナリコードをＮビットのバイナリコードに変換するのは容易である。すなわち、Ｎ＋１ビットのバイナリコードのうち、最上位のビットを無視して、最下位ビットからＮビット目までを取り出せば、Ｎビットのバイナリコードに変換でき、２のＮ乗個のアドレスを指定できる。図５（ｂ）は、Ｎ＝３の場合のＮ＋１ビットグレイコードカウンタ値及び、Ｎ＋１ビットバイナリカウンタ値及び、Ｎビットバイナリカウンタ値の関係を示している。Ｎビットバイナリカウンタ値が、Ｎ＋１ビットバイナリカウンタの下位Ｎビットの値と等しく、かつ２のＮ乗状態を示している事は明らかである。
【００４７】
これらの第１、第２の構成例に代表させるアドレス変換回路によって、Ｎ＋１ビットのグレイコードカウンタから２のＮ乗個のアドレスに変換できる。アドレス変換回路によって変換されたアドレスは、書き込み選択部１１０及び読み出し選択部１１１に入力され、リードライトメモリ１０４の書き込み先や読み出し元のアドレスが選択される。
【００４８】
次に、次に書き込み同期比較演算部１０８及び、読み出し同期比較演算部１０９の構成について説明する。
【００４９】
書き込み同期比較演算部１０８は、書き込みアドレスカウンタポインタ１０１から出力されるＮ＋１ビットのグレイコードと、読み出しアドレスカウンタポインタ１０２から出力され読み出しポインタ同期化部１０７によって書き込みクロックＣＷに同期化されたＮ＋１ビットのグレイコードと、を比較演算し、リングバッファがフルになったか否かを検出する。具体的には、各ビット同士のＥＸＯＲをとり上位２ビットの値がそれぞれ１を示し、下位ｎ―１ビットの値がすべて０を示す場合にフルと判断することができる。例えば図３において、書き込みアドレスカウンタポインタのグレイコードが０１１０であり、読み出しアドレスカウンタポインタのグレイコードが１０１０であった場合のＥＸＯＲは１１００でありフルと判断される。
【００５０】
すなわち、リングバッファとして用いるリードライトメモリのアドレスの数は２のＮ乗であるので、図３を参照して、書き込みアドレスカウンタポインタ１０１と読み出しアドレスカウンタポインタ１０２の状態の数が２のＮ乗（図３の例では、２の３乗＝８）ずれているときは、リングバッファはフルとなる。図３を参照しても理解できるように、グレイコードの性質より、Ｎ＋１ビットで表される２のＮ＋１乗個のグレイコードのうち、順番が２のＮ乗ずれているグレイコード同士は、最上位２ビットがいずれも不一致、Ｎ−１ビット目から最下位ビットまでの各ビットはいずれも一致するグレイコードになるからである。
【００５１】
次に、読み出し同期比較演算部１０９は、読み出しアドレスカウンタポインタ１０２から出力されるＮ＋１ビットのグレイコードと、書き込みアドレスカウンタポインタ１０１から出力され書き込みポインタ同期化部１０６によって読み出しクロックＣＲに同期化されたＮ＋１ビットのグレイコードと、を比較演算し、リングバッファがエンプティになったか否かを検出する。具体的には、各ビット同士のＥＸＯＲをとり全ビットが１を示す場合にエンプティと判断することができる。
【００５２】
すなわち、リングバッファにデータがエンプティになったときは、書き込みアドレスカウンタポインタ１０１と読み出しアドレスカウンタポインタ１０２の出力するグレイコードが等しいときであり、この場合、グレイコードの全ビットは同一の値になるからである。
【００５３】
図１において、比較演算部１０８、１０９が出力するフル、エンプティ信号は内部状態信号として、一般的には、図示されていない書き込みデータ送信元に対してはフル信号を、図示されていない読み出しデータ受信先に対してはエンプティ信号を出力する。また、フル信号やエンプティ信号以外にもフル及びエンプティの１つ前の状態や有効データ数、無効データ数などを内部状態信号として出力してもよい。実施例１では、比較演算部（１０８、１０９）が、書き込みアドレスカウンタポインタ１０１の状態及び読み出しアドレスカウンタポインタ１０２の状態を比較しているので、その表現される状態の差を取ることによって、これらの状態も出力することが可能である。
【００５４】
なお、リードライトメモリ１０４は、書き込み選択部１１０と、読み出し選択部１１１によって選択可能な複数のメモリセルで構成される。好ましくは、書き込みと読み出しを同時に選択できるセルであることが好ましい。このようなメモリセルは、例えば、デュアルポートのＲＡＭセルやデータフリップフロップ回路が良く知られている。すなわち、好ましくは、リードライトメモリ１０４は、書き込み選択部１１０からの書き込みと、読み出し選択部１１１からの読み出しが非同期で同時に実施できる複数のデュアルポートＲＡＭセルやデータフリップフロップ回路で構成される。
【実施例２】
【００５５】
上記実施例１は、書き込みクロックＣＷと読み出しクロックＣＲに同じクロックを用いれば、書き込み動作と読み出し動作が同期しているリングバッファに用いることも可能である。しかし、最初から書き込み動作と読み出し動作が同期しているとわかっている場合には、実施例１の回路をもっと簡素化できる。
【００５６】
図６は、実施例２によるリングバッファ回路全体のブロック図である。図６において、実施例１と異なる点は、クロックが書き込み、読み出しが共通である点及び、書き込みポインタ同期化部、読み出しポインタ同期化部が無い点、内部状態信号を生成する比較演算部１１２が１つである点が異なっている。その他の部分は実施例１と構成、動作がおおよそ同一であるので実施例１と同一の符号を付し、詳しい説明は省略する。
【００５７】
書き込みクロックと読み出しクロックが同期している場合には、同期化が必要ないために、書き込みポインタ同期化部及び、読み出しポインタ同期化部は不要である。
【００５８】
また、比較演算部も共用できる。実施例１で説明したフル及びエンプティの生成手段において、ＷＰ及びＲＰの値のＥＸＯＲをとるという手段が等しいため、回路の共用が可能であり、その分回路面積を小さくする事ができる。さらに、実施例２においては、実施例１と回路の基本的な構成を同一にしているので、非同期にも使用されるリングバッファ回路と同期してしか用いられることのないリングバッファ回路で基本な設計を共通化できる。
【００５９】
なお、実施例２においては、書き込みと読み出しのクロックが共通であるので、書き込みと読み出しを同時に行わなければ、リードライトメモリ１０４をシングルポートのＳＲＡＭやＤＲＡＭの全部又は一部のアドレスを使って構成することもできる。その場合には、書き込み選択部１１０と読み出し選択部１１１、及び書き込みアドレス変換回路１０３と読み出しアドレス変換回路１０５についても共有化することも可能である。
【実施例３】
【００６０】
上記した実施例１のリングバッファ回路は、書き込みクロックＣＷと読み出しクロックＣＲとに同期したクロックを用いれば、書き込み動作と読み出し動作が同期したリングバッファ回路に用いることも可能である。しかし、書き込みクロックと読み出しクロックとが同期している場合には、書き込みポインタ同期化部１０６や読み出しポインタ同期化部１０７をバイパスすればリングバッファ回路をより高速に動作させることが可能となる場合がある。
【００６１】
図７は、実施例３によるリングバッファ回路全体のブロック図である。実施例３では、図１に示す実施例１のリングバッファ回路に対して、書き込みポインタ選択部１１３と読み出しポインタ選択部１１４が新たに設けられ、この書き込みポインタ選択部１１３と読み出しポインタ選択部１１４とを同期・非同期選択信号１１５を用いて制御している点が実施例１と異なっている。その他の各部分については、実施例１と構成動作がほぼ同一であるので、図面には、同一の符号を付し詳細な説明は省略する。
【００６２】
図７において、書き込みポインタ選択部１１３は、読み出し同期比較演算部１０９に対して、書き込みポインタ同期化部１０６によって読み出しクロックに同期した書き込みアドレスカウンタポインタ１０１の値を出力するか、書き込みポインタ同期化部１０６を経由しないで書き込みアドレスカウンタポインタ１０１の値を直接出力するか、選択する選択回路である。書き込みポインタ選択部１１３には、選択信号として同期・非同期選択信号１１５が入力される。この同期・非同期選択信号は、書き込みクロックＣＷと読み出しクロックＣＲが同期しているか非同期であるかを示す信号である。この同期・非同期選択信号１１５を受けて書き込みポインタ選択部１１３は、書き込みクロックと読み出しクロックが同期していて書き込みポインタ同期化部１０６による同期化が不要であるときは、書き込みアドレスカウンタポインタ１０１の出力を書き込みポインタ同期化部１０６を経由せずに直接読み出し同期比較演算部１０９へ出力する。一方、書き込みクロックＣＷと読み出しクロックＣＲが非同期である場合には、書き込みポインタ同期化部１０６により読み出しクロックＣＲに同期化された書き込みアドレスカウンタポインタ１０１の値を読み出し同期比較演算部１０９へ出力する。
【００６３】
また、読み出しポインタ選択部１１４は、書き込み同期比較演算部１０８に対して、読み出しポインタ同期化部１０７によって書き込みクロックに同期した読み出しアドレスカウンタポインタ１０２の値を出力するか、読み出しポインタ同期化部１０７を経由しない読み出しアドレスカウンタポインタ１０２の値を直接出力するか、選択する選択回路である。読み出しポインタ選択部１１４には、選択信号として同期・非同期選択信号１１５が入力される。この同期・非同期選択信号１１５を受けて読み出しポインタ選択部１１４は、書き込みクロックと読み出しクロックが同期している場合には、書き込みアドレスカウンタポインタ１０１の出力を直接読み出し同期比較演算部１０９へ出力し、書き込みクロックＣＷと読み出しクロックＣＲが非同期である場合には、読み出しポインタ同期化部１０７が出力する値を書き込み同期比較演算部１０８へ出力する。
【００６４】
上記実施例３のリングバッファ回路によれば、書き込みクロックＣＷと読み出しクロックＣＲが同期している場合には、同期・非同期選択信号１１５によって、書き込みポインタ同期化部１０６と読み出しポインタ同期化部１０７をバイバスするか否か、選択することができる。書き込みクロックＣＷと読み出しクロックＣＲが同期している場合には、書き込みポインタ同期化部１０６と読み出しポインタ同期化部１０７をスキップすることができるので、同期化回路（１０６、１０７）で同期化する時間を短縮することができ、リングバッファ回路をより高速に動作させることができる。
【００６５】
なお、実施例３において、リングバッファ回路の同期・非同期を動的に変更させる必要が無いときは、同期・非同期選択信号１１５を固定する事で今日の回路の論理合成技術により、冗長な回路は自動的に削除することが可能である。例えば同期・非同期選択信号１１５を同期側に固定した場合は、書き込みポインタ選択部１１３、読み出しポインタ選択部１１４及び、書き込みポインタ同期化部１０６、読み出しポインタ同期化部１０７が削除される事となる。さらには、書き込み同期比較演算部１０８と読み出し同期比較演算部１０９を共有化し、図６に示す実施例２のリングバッフア回路１００Ａと同一構成のリングバッファ回路を合成することもできる。また、同期・非同期選択信号１１５を非同期側に固定した場合は、書き込みポインタ選択部１１３、読み出しポインタ選択部１１４を削除し、図１に示す実施例１と同一構成のリングバッファ回路を合成することもできる。
【００６６】
上記、実施例１、実施例２、実施例３に例示して特に詳しく説明したように本発明によれば、２のＮ乗のアドレス空間を持つＦＩＦＯバッファ（リングバッファ）についてＮ＋１ビットのグレイコードカウンタを使用して書き込みポインタ及び読み出しポインタを構成し、アドレスの選択には、アドレス変換回路によってリードライトメモリのアドレスを直接指定可能なアドレスに変換する事によって正しいアドレスを選択することが可能である。また、グレイコードを用いることによって、カウンタのカウント値が更新される瞬間のメタステーブル状態においても異常なコードが出力されることがないので、書き込みクロックと読み出しクロックが同期しているか非同期であるか否かにかかわらず、用いることができる。さらに、リングバッファ回路におけるリードライトメモリのアドレス指定に必要なＮビットより１ビット多いＮ＋１ビットのグレイコードを用いてアドレスカウンタポインタを構成しているので、容易にバッファが満杯（フル）であるか、空（エンプティ）であるのかを区別することができる。また、多ビットの同期化が可能であるために、書き込みポインタ及び読み出しポインタが異なるクロックで動作していても比較する事ができるので、同期ＦＩＦＯのみならず、非同期ＦＩＦＯにも適用する事ができ、かつｎビットで表現されるアドレス空間ｎに対してｎ＋１ビットを用いて表現することにより正確にフルまたはエンプティを出力する事ができる。
【００６７】
以上、本発明を実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００６８】
１００、１００Ａ、１００Ｂ：リングバッファ回路
１０１：書き込みアドレスカウンタポインタ
１０２：読み出しアドレスカウンタポインタ
１０３：書き込みアドレス変換回路
１０５：読み出しアドレス変換回路
１０６：書き込みポインタ同期化部
１０７：読み出しポインタ同期化部
１０８：書き込み同期比較演算部
１０９：読み出し同期比較演算部
１１０：書き込み選択部
１１１：読み出し選択部
１１２：比較演算部
１１３：書き込みポインタ選択部
１１４：読み出しポインタ選択部
１１５：同期非同期選択信号
２０１、２０２、４００〜４０３、５００〜５０３：データフリップフロップ
２０３：同期前データ
２０５：同期済データ
２０６：同期先クロック
４０４、Ｘ１、Ｘ２、Ｘｎ−１、Ｘｎ：エクスクルーシブオア（ＥＸＯＲ）回路
４０５、５０６：変換済Ｎビットアドレス信号
５０５：Ｎ＋１ビットグレイバイナリ変換回路
ＣＷ：書き込みクロック
ＲＷ：読み出しクロック
【図１】
2010160653.tif 000003
【図２】
2010160653.tif 000004
【図３】
2010160653.tif 000005
【図４】
2010160653.tif 000006
【図５】
2010160653.tif 000007
【図６】
2010160653.tif 000008
【図７】
2010160653.tif 000009
【図８】
2010160653.tif 000010