説明

リングバッファ回路及びその制御回路

【課題】読み出しと書き込みが同期しているか、非同期であるかに係わりなく、データが満杯であるか空であるかを正しく検出できるリングバッファ回路及びリングバッファ回路の制御回路を提供する。
【解決手段】Nビットで指定されるアドレスを有するリードライトメモリと、N+1ビットのグレイコードをカウントするリードライトメモリの書き込みアドレスカウンタポインタ及び読み出しアドレスカウンタポインタと、書き込み、読み出しアドレスカウンタポインタの出力するN+1ビットのグレイコードをリードライトメモリの書き込み、読み出しアドレスとして直接指定可能なNビットのアドレスに変換する書き込み、読み出しアドレス変換回路と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一定のアドレス範囲を循環してリードライトすることのできるリングバッファ回路及びその制御回路に関する。特に、デュアルポートメモリを用い、リードとライトを非同期に行うことも可能なリングバッファ回路及びその制御回路に関する。
【背景技術】
【0002】
一般に、FIFO(ファーストイン・ファーストアウト)型のデータバッファ装置(以降、FIFOと表記する)は、内部の状態を外部回路に知らせるための信号(以降内部状態信号と表記する)を出力する事によって記憶領域が満杯になっている状態(以降、フル状態と表記する)での書き込みや、記憶領域の書き込みデータが全て読み出された空の状態(以降、エンプティ状態と表記する)での読み出しを防ぐ事が重要である。内部状態信号は、フル状態、エンプティ状態だけでなく、FIFOバッファの残量状態などを出力される場合もある。
【0003】
一般的なFIFOの先入れ先だし動作は、一定のアドレス範囲を有するリードライトメモリを、データの書き込みアドレスを指す書き込みポインタWP(write pointer)と、データの書き込みアドレスを指す読み出しポインタRP(read pointer)を用いて制御される。この書き込みポインタWPと読み出しポインタRPを用いてリードライトメモリの一定のアドレス範囲が循環してアクセスされ、リードライトメモリをいわゆるリングバッファとして用い、FIFOの機能が実現される。書き込みポインタWPと読み出しポインタRPは、書き込み、読み出しを行う毎にアドレスを更新し、最終アドレスまで書き込み、読み出しを行ったら、最初のアドレスに戻って書き込み、読み出しを継続する。
【0004】
通常、書き込みと読み出しが共通のクロック信号に同期して行われる同期式のリングバッファ回路の場合、書き込みポインタWP、読み出しポインタRPは共通のクロック信号に同期して更新されるため、内部状態信号もこの共通のクロック信号に同期して生成される。
【0005】
これに対し、データの書き込みとデータの読み出しで互いに独立したクロック信号を用いてアクセスする非同期式のリングバッファ回路の場合、書き込みポインタWP及び読み出しポインタRPは異なるクロック信号に同期して更新される。この場合、読出し側と書込み側では使用しているクロックが異なるので、それぞれのポインタを直接参照することはできず、参照する側のクロックで同期化する必要がある。
【0006】
しかし、ポインタは複数ビット幅であるため、単純にポインタの同期化を行うと、参照元のポインタが変化途中のメタステーブル状態のときに、参照先のクロックで同期化すると、正しいポインタの値を参照できない。
【0007】
一般的には、このような問題に対処するために、1クロック間に複数ビット幅が同時に変化しない、すなわちハミング距離が1であるカウンタを使用することによって、同期化の際に生じる誤動作を回避することが考えられる。特にバッファがnビットのアドレス空間(2のn乗のアドレス空間)を持つ場合、nビットで構成可能なグレイコードカウンタが使用される。書き込みポインタWP又は読み出しポインタRPをグレイコードカウンタにすれば、通常のバイナリカウンタより多少素子は増えるが、グレイコードカウンタの出力の値はそのままリードライトメモリのアドレスとして使用することができる。
【0008】
また、上述したように、リングバッファの内部の状態を外部へ知らせる内部状態信号を生成する必要がある。例えば、満杯(フル)と、空(エンプティ)では、共に書き込みポインタWPと読み出しポインタRPの値は等しくなるので、書き込みポインタWPと読み出しポインタRPとを比較しただけでは、満杯(フル)と、空(エンプティ)の区別がつかない。そこで、それぞれのポインタが最終アドレスから0に戻るときに反転させる付加ビット(以降付加ビットと表記する)を設け、満杯(フル)と、空(エンプティ)を区別する内部状態信号を生成する方法がある。
【0009】
この方法が特許文献1の図2に記載されている。特許文献1の図2では、10ビットの書きこみポインタと読み出しポインタについてそれぞれ1ビットの付加ビットを設けて11ビットの情報として内部状態の生成に使用し、下位10ビットをポインタして使用している。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2005−148904号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
以下の分析は本発明において与えられる。上記特許文献1の付加ビットを設けて、満杯(フル)と、空(エンプティ)を区別する方法を上述した非同期式のリングバッファに適用しようとすると、以下の問題がある。書き込みポインタWPと読み出しポインタRPが変化するときに同時に付加ビットも変化することになる。したがって、書き込みポインタWP及び読み出しポインタRPをグレイコード化したとしても、付加ビットまで含めれば、同時に複数ビットが変化することになり、誤動作を回避できない。
【0012】
また、仮に、書き込みポインタ又は読み出しポインタに付加ビットまで含め、全体をグレイコード化すると、リードライトメモリのアドレスの指定に必要なビット数よりグレイコードのビット数が増えてしまうので、そのままでは、リードライトメモリのアドレスを指定することができない。
【課題を解決するための手段】
【0013】
本発明の1つの側面によるリングバッファ回路は、Nビット(Nは2以上の整数)で指定されるアドレスを有するリードライトメモリと、前記リードライトメモリに対して書き込みを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってN+1ビットのグレイコードをカウントする書き込みアドレスカウンタポインタと、前記リードライトメモリに対して読み出しを行う毎にアドレスを更新し前記最終アドレスまでカウントすると前記最初のアドレスに戻ってカウントを継続するカウンタポインタであってN+1ビットのグレイコードをカウントする読み出しアドレスカウンタポインタと、前記書き込みアドレスカウンタポインタの出力するN+1ビットのグレイコードを前記リードライトメモリの書き込みアドレスとして直接指定可能なNビットのアドレスに変換する書き込みアドレス変換回路と、前記読み出しアドレスカウンタポインタの出力するN+1ビットのグレイコードを前記リードライトメモリの読み出しアドレスとして直接指定可能なNビットのアドレスに変換する読み出しアドレス変換回路と、を有する。
【0014】
また、本発明の他の側面によるリングバッファの制御回路は、N(Nは2以上の整数)ビットで表されるアドレスを有するリングバッファの制御回路であって、前記リングバッファの読み出しアドレスを指定する読み出しアドレスカウンタポインタと、前記リングバッファの書き込みアドレスを指定する書き込みアドレスカウンタポインタと、前記読み出しアドレスと前記書き込みアドレスとを比較し前記リングバッファが空又は満杯であるか否かを検出するための比較演算部と、を備え、前記読み出しアドレスカウンタポインタと書き込みアドレスカウンタポインタがそれぞれN+1ビット構成のグレイコードカウンタポインタで構成され、さらに、前記読み出しアドレスカウンタポインタ及び書き込みアドレスカウンタポインタがそれぞれ出力するN+1ビットのグレイコードをNビットの前記リングバッファのアドレスに変換するアドレス変換回路を備える。
【発明の効果】
【0015】
本発明によれば、読み出しと書き込みが同期しているか非同期であるかに係わりなく、データが満杯であるか空であるかを正しく検出できるリングバッファ回路及びリングバッファの制御回路が得られる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施例によるリングバッファ回路全体のブロック図である。
【図2】本発明の一実施例における書き込みポインタ同期化部及び読み出しポインタ同期化部の回路図である。
【図3】本発明の一実施例における書き込みアドレスカウンタポインタ及び読み出しアドレスカウンタポインタの状態遷移を示す図面である。
【図4】(a)は本発明の一実施例における書き込みアドレス変換回路及び読み出しアドレス変換回路の回路図、(b)は書き込みアドレス変換回路及び読み出しアドレス変換回路の変換前後のアドレスを示す図面である。
【図5】(a)は本発明の一実施例における別な書き込みアドレス変換回路及び読み出しアドレス変換回路のブロック図、(b)は別な書き込みアドレス変換回路及び読み出しアドレス変換回路の変換前後のアドレスを示す図面である。
【図6】本発明の別な実施例によるリングバッファ回路全体のブロック図である。
【図7】本発明のさらに別な実施例によるリングバッファ回路全体のブロック図である。
【図8】図5(a)におけるN+1ビットグレイバイナリ変換回路の回路図である。
【発明を実施するための形態】
【0017】
本発明の実施形態について、必要に応じて図面を参照して説明する。なお、実施形態の説明において引用する図面及び図面の符号は実施形態の一例として示すものであり、それにより本発明による実施形態のバリエーションを制限するものではない。
【0018】
本発明の一実施形態のリングバッファ回路(100、100A、100B)は、例えば、図1、図6、図7に示すように、Nビット(Nは2以上の整数)で指定されるアドレスを有するリードライトメモリ104と、リードライトメモリ104に対して書き込みを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってN+1ビットのグレイコードをカウントする書き込みアドレスカウンタポインタ101と、リードライトメモリに対して読み出しを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってN+1ビットのグレイコードをカウントする読み出しアドレスカウンタポインタ102と、書き込みアドレスカウンタポインタ101の出力するN+1ビットのグレイコードをリードライトメモリ104の書き込みアドレスとして直接指定可能なNビットのアドレスに変換する書き込みアドレス変換回路103と、読み出しアドレスカウンタポインタ102の出力するN+1ビットのグレイコードをリードライトメモリ104の読み出しアドレスとして直接指定可能なNビットのアドレスに変換する読み出しアドレス変換回路105と、を有する。書き込みアドレスカウンタポインタと読み出しアドレスカウンタポインタがグレイコードをカウントするようにしているので、書き込みと読み出しが同期しているか非同期であるかに係わらず、任意のタイミングでカウンタポインタの値を参照しても誤った値が参照されることはない。さらに、アドレスカウンタのビット数が実際のリードライトメモリのビット数より1ビット多いのでリードライトメモリが満杯(フル)であるか、空(エンプティ)であるか容易に区別することができる。さらに、実際のリードライトメモリのビット数より1ビット多い書き込みアドレスカウンタポインタと読み出しアドレスカウンタポインタとの出力するグレイコードをリードライトメモリのアドレスとして直接指定可能なアドレスに変換する書き込みアドレス変換回路と読み出しアドレス変換回路を設けているので、正しいアドレスのリードライトメモリにアクセスできる。
【0019】
さらに、本発明の一実施形態のリングバッファ回路(100、100B)は、例えば、図1、図7に示すように、リードライトメモリ104が書き込みクロックCWに同期して書き込みを行い、読み出しクロックCRに同期して読み出しを行うメモリであって、読み出しアドレスカウンタポインタ102のグレイコードを書き込みクロックCWに同期して出力する読み出しポインタ同期化部107と、書き込みアドレスカウンタポインタ101のグレイコードを読み出しポインタ同期化部107が出力するグレイコードと比較演算する書き込み同期比較演算部108と、をさらに有する。読み出しポインタ同期化部は、読み出しアドレスカウンタポインタのグレイコードを書き込みクロックに同期して出力するので、書き込みクロックと読み出しクロックが非同期の場合であっても、書き込みクロックに同期して読み出しアドレスと書き込みアドレスとを比較することができる。
【0020】
さらに、本発明の一実施形態のリングバッファ回路(100、100B)は、例えば、図1、図7に示すように、書き込み同期比較演算部108が、書き込みアドレスカウンタポインタ101のグレイコードと読み出しポインタ同期化部107が出力するグレイコードとを比較し、両者の上位2ビットがいずれも不一致であり、かつ、上位2ビット以外の両者の下位ビットがすべて一致であるときに、前記リードライトメモリ104が満杯であることを検出する。すなわち、リードライトメモリが満杯であるときは、リードライトメモリのアドレスの数を2のN乗とすると、書き込みアドレスカウンタポインタのグレイコードと読み出しアドレスカウンタポインタのグレイコードが、2のN乗だけ状態がずれることになる。従って、グレイコードの性質より、N+1ビットのグレイコードは、N+1ビットとNビットが不一致、N−1ビット以下の各ビットは一致する。リングバッファ回路が満杯(フル)になるのは、データの書き込みに同期して発生するので、満杯(フル)は、書き込みクロックに同期して検出することが好ましい。
【0021】
さらに、本発明の一実施形態のリングバッファ回路(100、100B)は、例えば、図1、図7に示すように、リードライトメモリ104が書き込みクロックCWに同期して書き込みを行い、読み出しクロックCRに同期して読み出しを行うメモリであって、書き込みアドレスカウンタポインタ101のグレイコードを読み出しクロックCRに同期して出力する書き込みポインタ同期化部106と、読み出しアドレスカウンタポインタ102のグレイコードを書き込みポインタ同期化部106が出力するグレイコードと比較演算する読み出し同期比較演算部109と、をさらに有する。書き込みポインタ同期化部は、書き込みアドレスカウンタポインタのグレイコードを読み出しクロックに同期して出力するので、書き込みクロックと読み出しクロックが非同期の場合であっても、読み出しクロックに同期して読み出しアドレスと書き込みアドレスとを比較することができる。
【0022】
さらに、本発明の一実施形態のリングバッファ回路(100、100B)は、例えば、図1、図7に示すように、読み出し同期比較演算部109が、読み出しアドレスカウンタポインタ102のグレイコードと書き込みポインタ同期化部106が出力するグレイコードとを比較し、N+1ビットの全ビットが一致していた場合に、リードライトメモリ104が空であることを検出する。リードライトメモリ104が空(エンプティ)であるときには、読み出しアドレスカウンタポインタと書き込みアドレスカウンタポインタの出力するグレイコードは一致する。従って、グレイコードが全ビット一致していることを検出すればよい。なお、リードライトメモリ104が空(エンプティ)になるのはデータの読み出しによって発生するので、空であるか否かは、読み出しクロックに同期して検出することが望ましい。
【0023】
さらに、本発明の一実施形態のリングバッファ回路(100、100B)は、例えば、図1、図7に示すように、リードライトメモリ104が、書き込みポート110と、読み出しポート111と、を有するデュアルポートメモリ104であり、書き込みクロックCWと読み出しクロックCRが非同期のクロックである。書き込みクロックと読み出しクロックが非同期である場合には、リードライトメモリが、書き込みポートと読み出しポートを有するデュアルポートメモリとして、書き込みと読み出しとをそれぞれ独立してできるようにすることが好ましい。
【0024】
さらに、本発明の一実施形態のリングバッファ回路100Bは、例えば、図7に示すように、リードライトメモリ104が、書き込みポート110と、読み出しポート111と、を有し、書き込みクロックCWに同期して書き込みポート110から書き込みを行い、読み出しクロックCRに同期して読み出しポート111から読み出しを行うデュアルポートメモリ104であり、読み出しアドレスカウンタポインタ102のグレイコードを書き込みクロックCWに同期して出力する読み出しポインタ同期化部107と、書き込みアドレスカウンタポインタ101のグレイコードを読み出しクロックCRに同期して出力する書き込みポインタ同期化部106と、書き込みクロックCWと読み出しクロックCRが互いに同期したクロックであるか否かを示す同期非同期選択信号115に基づいて、書き込みアドレスカウンタポインタ101が出力するグレイコード又は書き込みポインタ同期化部106の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部113と、同期非同期選択信号115に基づいて、読み出しアドレスカウンタポインタ102が出力するグレイコード又は読み出しポインタ同期化部107の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部114と、書き込みアドレスカウンタポインタ101のグレイコードを読み出しポインタ選択部114が出力するグレイコードと比較演算する書き込み同期比較演算部と、読み出しアドレスカウンタポインタ102のグレイコードを書き込みポインタ選択部113が出力するグレイコードと比較演算する読み出し同期比較演算部109と、を有する。上記構成によれば、書き込みクロックと読み出しクロックが同期しているか非同期であるかに係わらず、動作するリングバッファ回路が得られる。さらに、同期非同期選択信号により、書き込みクロックと読み出しクロックが同期している場合には、書き込みポインタ同期化部、読み出しポインタ同期化部をスキップできるので、リードライトメモリのフル及び/又はエンプティを高速に検出できる。
【0025】
さらに、本発明の一実施形態のリングバッファ(100、100A、100B)の制御回路は、図1、図6、図7に示すように、N(Nは2以上の整数)ビットで表されるアドレスを有するリングバッファ(100、100A、100B)の制御回路であって、リングバッファ(100、100A、100B)の読み出しアドレスを指定する読み出しアドレスカウンタポインタ102と、リングバッファ(100、100A、100B)の書き込みアドレスを指定する書き込みアドレスカウンタポインタ101と、読み出しアドレスと書き込みアドレスとを比較しリングバッファ(100、100A、100B)が空又は満杯であるか否かを検出するための比較演算部(108、109、112)と、を備え、読み出しアドレスカウンタポインタ102と書き込みアドレスカウンタポインタ101がそれぞれN+1ビット構成のグレイコードカウンタポインタで構成され、さらに、読み出しアドレスカウンタポインタ102及び書き込みアドレスカウンタポインタ101がそれぞれ出力するN+1ビットのグレイコードをNビットのリングバッファ(100、100A、100B)のアドレスに変換するアドレス変換回路(103、105)を備える。上記制御回路をリードライトメモリと組み合わせれば、リングバッファを構成することができる。比較演算部は、書き込み用と読み出し用に分けて設けてもよいし、共用してもよい。
【0026】
さらに、本発明の一実施形態のリングバッファ(100、100A、100B)の制御回路は、図1、図6、図7に示すように、アドレス変換回路(103、105)が、読み出しアドレスカウンタポインタ102が出力するN+1ビットのグレイコードをNビットの読み出しアドレスに変換する読み出しアドレス変換回路105と、書き込みアドレスカウンタポインタ101が出力するN+1ビットのグレイコードをNビットの書き込みアドレスに変換する書き込みアドレス変換回路103と、を備える。アドレス変換回路を読み出し用と書き込み用に分けて設けることにより、読み出しアドレスと書き込みアドレスとを同時に並行して変換することができる。また、アドレス変換回路の変換結果をレジスタ等に保持しなくとも、アドレス変換回路の出力により直接読み出しアドレス、書き込みアドレスをリードライトメモリに対して出力することができる。
【0027】
さらに、本発明の一実施形態のリングバッファ(100、100A、100B)の制御回路は、読み出しアドレス変換回路105、書き込みアドレス変換回路103が、共に、初期状態のグレイコードアドレスを0番目のアドレスとしたとき、入力するN+1ビットのグレイコードアドレスの値が2のN乗番目以降のアドレスであった場合には、2のN乗番前のアドレスに変換して出力する。たとえば、Nが3の場合は、図3に示すように、N+1=4ビットのグレイコードアドレスが8番目以降のアドレス(図3の状態8以上の場合)であった場合は、8番前のアドレス(状態番号が8小さい状態)に変換して出力する。最上位ビットは切り捨ててよい。図3には、Nが3の場合について示すが、グレイコードの性質により、Nが2以上であれば、任意のNに対して適用できる。
【0028】
さらに、本発明の一実施形態のリングバッファ(100、100A、100B)の制御回路は、図4に示すように、読み出しアドレス変換回路105、書き込みアドレス変換回路103が、入力されたN+1ビットのグレイコードについて、最下位ビットからN−1ビット目までの入力ビットデータをそのまま出力ビットとし、Nビット目とN+1ビット目の最上位2ビットの入力ビットデータについて排他的論理和を取ってNビット目の出力ビットデータとすることにより、N+1ビットのグレイコードアドレスをNビットのグレイコードアドレスに変換して出力する。図4には、Nが3の場合について、示すが、グレイコードの性質により、Nが2以上であれば、任意のNに対して、適用できる。
【0029】
さらに、本発明の一実施形態のリングバッファ(100、100A、100B)の制御回路は、図5、図8に示すように、読み出しアドレス変換回路105、書き込みアドレス変換回路103が、それぞれ、入力されたN+1ビットのグレイコードアドレスをN+1ビットのバイナリコードに変換し、前記N+1ビットのバイナリコードのうち、下位Nビットのバイナリコードを出力することにより、N+1ビットのグレイコードアドレスをNビットのバイナリコードアドレスに変換する回路である。図5、図8に示すように、グレイコードの性質により、2以上の任意のNについて上記構成を適用できる。
【0030】
さらに、本発明の一実施形態のリングバッファ(100、100B)の制御回路は、図1、図7に示すように、書き込みクロックCWに同期してデータを書き込み、書き込みクロックとは非同期の読み出しクロックCRに同期してデータを読み出すリングバッファ(100、100B)を制御することのできるリングバッファの制御回路であって、読み出しアドレスカウンタポインタ102のグレイコードを書き込みクロックCWに同期して出力する読み出しポインタ同期化部107と、書き込みアドレスカウンタポインタ101のグレイコードを読み出しクロックCRに同期して出力する書き込みポインタ同期化部106と、をさらに備え、比較演算部(108、109)が、書き込みアドレスカウンタポインタ101のグレイコードを読み出しポインタ同期化部107が出力するグレイコードと書き込みクロックCWに同期して比較演算する書き込み同期比較演算部108と、読み出しアドレスカウンタポインタ102のグレイコードを書き込みポインタ同期化部106が出力するグレイコードと読み出しクロックCRに同期して比較演算する読み出し同期比較演算部109と、を有する。上記構成により、書き込み同期比較演算部を、書き込みクロックに同期して動作させ、読み出し同期比較演算部を、読み出しクロックに同期して動作させることができる。
【0031】
さらに、本発明の一実施形態のリングバッファ(100、100B)の制御回路は、図1、図7に示すように、書き込み同期比較演算部108が、書き込みアドレスカウンタポインタ101のグレイコードと読み出しポインタ同期化部107が出力するグレイコードの上位2ビットがいずれも不一致であり、かつ、前記上位2ビット以外の下位各ビットがいずれも一致であるときに前記リングバッファが満杯であることを検出する。例えば、図5には、N=3の場合について示すが、書き込みアドレスカウンタポインタと読み出しアドレスカウンタポインタの値が「2のN乗=8」だけ状態の番号が異なるとき、リングバッファは満杯(フル)になる。状態の番号が8つだけ異なるグレイコードカウンタの値は、上記のとおり、上位2ビットがいずれも不一致であり、上位2ビット以外の下位各ビットはいずれも一致である。上記関係は、グレイコードの性質により、Nが2以上であれば、任意のNに対して成立する。
【0032】
さらに、本発明の一実施形態のリングバッファ(100、100B)の制御回路は、図1、図7に示すように、読み出し同期比較演算部109が、読み出しアドレスカウンタポインタ102のグレイコードと書き込みポインタ同期化部106が出力するグレイコードのN+1ビットの値がいずれも一致するときに前記リングバッファが空であることを検出する。すなわち、読み出しアドレスカウンタポインタのグレイコードと、書き込みアドレスカウンタポインタのグレイコードと、が一致するとき、リングバッファのデータは空(エンプティ)である。
【0033】
さらに、本発明の一実施形態のリングバッファ100Bの制御回路は、例えば、図7に示すように、書き込みクロックCWと読み出しクロックCRとが互いに同期したクロックであるか否かを示す同期非同期選択信号115に基づいて、書き込みアドレスカウンタポインタ101が出力するグレイコード又は前記書き込みポインタ同期化部106の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部113と、同期非同期選択信号115に基づいて、読み出しアドレスカウンタポインタ102が出力するグレイコード又は読み出しポインタ同期化部107の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部114と、をさらに備え、書き込み同期比較演算部108が、書き込みアドレスカウンタポインタ101のグレイコードを書き込みポインタ選択部113が出力するグレイコードと比較演算し、読み出し同期比較演算部109が、読み出しアドレスカウンタポインタ102のグレイコードを書き込みポインタ選択部113が出力するグレイコードと比較演算する。上記構成によれば、書き込みクロックと読み出しクロックが同期しているか非同期であるかに係わらず、動作するリングバッファ回路が得られる。さらに、同期非同期選択信号により、書き込みクロックと読み出しクロックが同期している場合には、書き込みポインタ同期化部、読み出しポインタ同期化部をスキップできるので、リードライトメモリのフル及び/又はエンプティを高速に検出できる。
【0034】
さらに、本発明の一実施形態のリングバッファ(100、100A、100B)の制御回路は、図1、図6、図7に示すように、比較演算部(108、109、112)が、読み出しアドレスカウンタポインタ102のグレイコードと、書き込みアドレスカウンタポインタ101のグレイコードとを比較し、両者の上位2ビットがいずれも不一致であり、上位2ビット以外の下位ビットがすべて一致である場合に前記リングバッファが満杯であることを検出し、両者のN+1ビットの全ビットが一致である場合に前記リングバッファが空であることを検出する。すなわち、上記リングバッファの制御回路によれば、書き込みクロックと読み出しクロックが同期していようと非同期であろうと、リングバッファが満杯(フル)があるか否か、空(エンプティ)であるか否か検出することができる。以下、実施例に即し、図面を参照してさらに詳しく説明する。
【実施例1】
【0035】
図1は、実施例1のリングバッファ回路の構成を示すブロック図である。図1において、リングバッファ回路は、リードライトメモリ104の書き込みポートとなる書き込み選択部110と読み出しポートとなる読み出し選択部111とを備えたデュアルポートメモリと、上記デュアルポートメモリをリングバッファとして機能させる制御回路から構成される。リングバッファの制御回路は、主に、書き込みアドレスカウンタポインタ101と、読み出しアドレスカウンタポインタ102と、書き込みアドレス変換回路103と読み出しアドレス変換回路105と、書き込みポインタ同期化部106と、読み出しポインタ同期化部107と、書き込み同期比較演算部108、読み出し同期比較演算部109を含んで構成される。
【0036】
書き込み選択部110は、書き込みイネーブル信号がハイレベルの時に書き込みアドレス変換回路103によって示されるリードライトメモリ104のアドレスに対してデータを書き込む。
【0037】
読み出し選択部111は、読み出しイネーブル信号がハイレベルの時にリードライトメモリ104の読み出しアドレス変換回路105によって示されるアドレスからデータを出力する。
【0038】
書き込みアドレスカウンタポインタ101は、書き込みアドレスを指定するためのカウンタポインタで、データの書き込みが行われるたびにポインタ値が更新される。また、読み出しアドレスカウンタポインタ102は、読み出しアドレスを指定するためのカウンタポインタで、データの読み出しが行われるたびにポインタ値が更新される。
【0039】
書き込みポインタ同期化部106及び、読み出しポインタ同期化部107は、それぞれ、書き込みアドレスカウンタポインタ101及び読み出しアドレスカウンタポインタ102のビット出力の同期化を行う。書き込みポインタ同期化部106及び読み出しポインタ同期化部107の構成の一例を示す回路図を図2に示す。図2の201及び202は、Dフリップフロップであり、多ビットの同期前データ203を同期先クロック206で2回ラッチして同期済みデータ205を生成している。
【0040】
書き込み同期比較演算部108では、書き込みクロックに同期してFIFOバッファがフルであることを示す内部状態信号を生成し、読み出し同期比較演算部109では、FIFOバッファがエンプティであることを示す内部状態信号を生成する。
【0041】
ここで、書き込みアドレスカウンタポインタ101と読み出しアドレスカウンタポインタ102の回路構成及び動作を説明する。なお、書き込みアドレスカウンタポインタ101と読み出しアドレスカウンタポインタ102の回路構成及び動作は同一のため、書き込みアドレスカウンタポインタ101を代表して説明する。
【0042】
書き込みアドレスカウンタポインタ101は、リードライトメモリ104がNビットで指定されるアドレスを備える場合、N+1ビットのグレイコードカウンタとして構成する。グレイコードカウンタの構成は周知のものを用いることができる。
【0043】
図3は、書き込みアドレスカウンタポインタ101の状態遷移を示す図である。図3はN=3の場合である。N=3の時、書き込みアドレスカウンタポインタは4ビットで構成され、書き込みが行われる毎に状態の欄の状態0から状態1、状態2へと順次遷移し、状態15において書き込みが行われた場合には、状態0へ戻る。書き込みアドレスカウンタポインタ101はグレイコードカウンタであるので、図3のカウンタ値の欄を見れば理解できるとおり、状態の更新によって変化するカウンタ値のビット数が常に1である。また、N=3の時、状態0から状態15までの計16状態(2のN+1乗の状態)を順に遷移しているため、16の状態と1対1対応では8つのアドレスを有するリードライトメモリのアドレスを指定することができない。そこで、図3の「補正した状態」のように16の状態によって順繰りに8つのアドレスを指定できるようにアドレス変換する必要がある。このようにグレイコードの「2のN+1乗」個のアドレス値を「2のN乗」個のアドレス値に変換するように書き込みアドレス変換回路103が必要となる。なお、書き込みアドレスカウンタポインタ101について説明したが、図3の状態遷移を示す図は、読み出しアドレスカウンタポインタ102についてもそのまま適用できる。読み出しアドレスカウンタポインタ102についても「2のN+1乗」個のアドレス値を「2のN乗」個のアドレス値に変換するように読み出しアドレス変換回路105が必要となる。
【0044】
次に、実施例1における書き込みアドレス変換回路103及び読み出しアドレス変換回路105について説明する。図4(a)は書き込みアドレス変換回路103及び読み出しアドレス変換回路105の第1の構成例による回路図、(b)はその変換前後のアドレスを示す図面である。アドレス変換回路の第1の構成例では、N+1ビットのグレイコードカウンタから、Nビットのグレイコードカウンタ値にアドレス変換することでリードライトメモリ104の2のN乗個のアドレスを選択できるようにする。図4(b)はN=3の時の4ビットグレイコードカウンタ値と、アドレス変換後の状態とアドレス変換後の3ビットグレイコードカウンタ値を示す。アドレス変換後の8状態(2のN乗状態)を示す3ビット(Nビット)のグレイコード値は、4ビット(N+1ビット)のグレイコード値の上位2ビットをEXORした値を最上位ビットとし、4ビット(N+1ビット)グレイコード値の下位2ビット(N−1ビット)をそのままアドレス変換後のグレイコードアドレスの下位2ビット(N−1ビット)とする3ビット(Nビット)値が、3ビット(Nビット)グレイコードカウンタ値である事がわかる。そのため、図4(a)のように、EXOR回路404によってグレイコードカウンタN+1ビット目403とNビット目402のEXORをとり、最下位ビットからN―1ビット目までとを合わせたNビット信号405を形成する事でアドレス変換する事ができる。
【0045】
図5、図8を参照して、N+1ビットのグレイコードをNビットのバイナリコードに変換する書き込みアドレス変換回路103及び読み出しアドレス変換回路105の第2の構成例について説明する。図5(a)は第2の構成例のブロック図、図5(b)はそのアドレス変換前後のアドレスカウンタ値の関係を示す図、図8はアドレス変換回路の回路図である。
【0046】
アドレス変換回路の第2の構成例では、N+1ビットのグレイコードカウンタから、N+1ビットバイナリ値に変換し、さらにバイナリ変換後のN+1ビットのアドレス値からNビットバイナリ値を取り出す事で2のN乗のアドレスを指定できるようにする。図5(a)において、500から503はアドレスカウンタポインタ(101、102)の出力段のデータフリップフロップである。データフリップフロップ500〜503はN+1ビットのグレイコードを保持している。それをN+1ビットグレイバイナリ変換回路505によってバイナリコードを取り出し、そのうちの下位Nビットの信号506によってリードライトメモリ104の2のN乗個のアドレスを直接指定できる。N+1ビットグレイバイナリ変換回路505の具体的な回路構成を、図8に示す。バイナリコードの第N+1ビット目はグレイコードと同じであり、それ以外のビットについては、該当するグレイコードのビットと、ひとつ上位のバイナリコードのビットの排他的論理和によって算出できる。一度バイナリコードに変換してしまえば、N+1ビットのバイナリコードをNビットのバイナリコードに変換するのは容易である。すなわち、N+1ビットのバイナリコードのうち、最上位のビットを無視して、最下位ビットからNビット目までを取り出せば、Nビットのバイナリコードに変換でき、2のN乗個のアドレスを指定できる。図5(b)は、N=3の場合のN+1ビットグレイコードカウンタ値及び、N+1ビットバイナリカウンタ値及び、Nビットバイナリカウンタ値の関係を示している。Nビットバイナリカウンタ値が、N+1ビットバイナリカウンタの下位Nビットの値と等しく、かつ2のN乗状態を示している事は明らかである。
【0047】
これらの第1、第2の構成例に代表させるアドレス変換回路によって、N+1ビットのグレイコードカウンタから2のN乗個のアドレスに変換できる。アドレス変換回路によって変換されたアドレスは、書き込み選択部110及び読み出し選択部111に入力され、リードライトメモリ104の書き込み先や読み出し元のアドレスが選択される。
【0048】
次に、次に書き込み同期比較演算部108及び、読み出し同期比較演算部109の構成について説明する。
【0049】
書き込み同期比較演算部108は、書き込みアドレスカウンタポインタ101から出力されるN+1ビットのグレイコードと、読み出しアドレスカウンタポインタ102から出力され読み出しポインタ同期化部107によって書き込みクロックCWに同期化されたN+1ビットのグレイコードと、を比較演算し、リングバッファがフルになったか否かを検出する。具体的には、各ビット同士のEXORをとり上位2ビットの値がそれぞれ1を示し、下位n―1ビットの値がすべて0を示す場合にフルと判断することができる。例えば図3において、書き込みアドレスカウンタポインタのグレイコードが0110であり、読み出しアドレスカウンタポインタのグレイコードが1010であった場合のEXORは1100でありフルと判断される。
【0050】
すなわち、リングバッファとして用いるリードライトメモリのアドレスの数は2のN乗であるので、図3を参照して、書き込みアドレスカウンタポインタ101と読み出しアドレスカウンタポインタ102の状態の数が2のN乗(図3の例では、2の3乗=8)ずれているときは、リングバッファはフルとなる。図3を参照しても理解できるように、グレイコードの性質より、N+1ビットで表される2のN+1乗個のグレイコードのうち、順番が2のN乗ずれているグレイコード同士は、最上位2ビットがいずれも不一致、N−1ビット目から最下位ビットまでの各ビットはいずれも一致するグレイコードになるからである。
【0051】
次に、読み出し同期比較演算部109は、読み出しアドレスカウンタポインタ102から出力されるN+1ビットのグレイコードと、書き込みアドレスカウンタポインタ101から出力され書き込みポインタ同期化部106によって読み出しクロックCRに同期化されたN+1ビットのグレイコードと、を比較演算し、リングバッファがエンプティになったか否かを検出する。具体的には、各ビット同士のEXORをとり全ビットが1を示す場合にエンプティと判断することができる。
【0052】
すなわち、リングバッファにデータがエンプティになったときは、書き込みアドレスカウンタポインタ101と読み出しアドレスカウンタポインタ102の出力するグレイコードが等しいときであり、この場合、グレイコードの全ビットは同一の値になるからである。
【0053】
図1において、比較演算部108、109が出力するフル、エンプティ信号は内部状態信号として、一般的には、図示されていない書き込みデータ送信元に対してはフル信号を、図示されていない読み出しデータ受信先に対してはエンプティ信号を出力する。また、フル信号やエンプティ信号以外にもフル及びエンプティの1つ前の状態や有効データ数、無効データ数などを内部状態信号として出力してもよい。実施例1では、比較演算部(108、109)が、書き込みアドレスカウンタポインタ101の状態及び読み出しアドレスカウンタポインタ102の状態を比較しているので、その表現される状態の差を取ることによって、これらの状態も出力することが可能である。
【0054】
なお、リードライトメモリ104は、書き込み選択部110と、読み出し選択部111によって選択可能な複数のメモリセルで構成される。好ましくは、書き込みと読み出しを同時に選択できるセルであることが好ましい。このようなメモリセルは、例えば、デュアルポートのRAMセルやデータフリップフロップ回路が良く知られている。すなわち、好ましくは、リードライトメモリ104は、書き込み選択部110からの書き込みと、読み出し選択部111からの読み出しが非同期で同時に実施できる複数のデュアルポートRAMセルやデータフリップフロップ回路で構成される。
【実施例2】
【0055】
上記実施例1は、書き込みクロックCWと読み出しクロックCRに同じクロックを用いれば、書き込み動作と読み出し動作が同期しているリングバッファに用いることも可能である。しかし、最初から書き込み動作と読み出し動作が同期しているとわかっている場合には、実施例1の回路をもっと簡素化できる。
【0056】
図6は、実施例2によるリングバッファ回路全体のブロック図である。図6において、実施例1と異なる点は、クロックが書き込み、読み出しが共通である点及び、書き込みポインタ同期化部、読み出しポインタ同期化部が無い点、内部状態信号を生成する比較演算部112が1つである点が異なっている。その他の部分は実施例1と構成、動作がおおよそ同一であるので実施例1と同一の符号を付し、詳しい説明は省略する。
【0057】
書き込みクロックと読み出しクロックが同期している場合には、同期化が必要ないために、書き込みポインタ同期化部及び、読み出しポインタ同期化部は不要である。
【0058】
また、比較演算部も共用できる。実施例1で説明したフル及びエンプティの生成手段において、WP及びRPの値のEXORをとるという手段が等しいため、回路の共用が可能であり、その分回路面積を小さくする事ができる。さらに、実施例2においては、実施例1と回路の基本的な構成を同一にしているので、非同期にも使用されるリングバッファ回路と同期してしか用いられることのないリングバッファ回路で基本な設計を共通化できる。
【0059】
なお、実施例2においては、書き込みと読み出しのクロックが共通であるので、書き込みと読み出しを同時に行わなければ、リードライトメモリ104をシングルポートのSRAMやDRAMの全部又は一部のアドレスを使って構成することもできる。その場合には、書き込み選択部110と読み出し選択部111、及び書き込みアドレス変換回路103と読み出しアドレス変換回路105についても共有化することも可能である。
【実施例3】
【0060】
上記した実施例1のリングバッファ回路は、書き込みクロックCWと読み出しクロックCRとに同期したクロックを用いれば、書き込み動作と読み出し動作が同期したリングバッファ回路に用いることも可能である。しかし、書き込みクロックと読み出しクロックとが同期している場合には、書き込みポインタ同期化部106や読み出しポインタ同期化部107をバイパスすればリングバッファ回路をより高速に動作させることが可能となる場合がある。
【0061】
図7は、実施例3によるリングバッファ回路全体のブロック図である。実施例3では、図1に示す実施例1のリングバッファ回路に対して、書き込みポインタ選択部113と読み出しポインタ選択部114が新たに設けられ、この書き込みポインタ選択部113と読み出しポインタ選択部114とを同期・非同期選択信号115を用いて制御している点が実施例1と異なっている。その他の各部分については、実施例1と構成動作がほぼ同一であるので、図面には、同一の符号を付し詳細な説明は省略する。
【0062】
図7において、書き込みポインタ選択部113は、読み出し同期比較演算部109に対して、書き込みポインタ同期化部106によって読み出しクロックに同期した書き込みアドレスカウンタポインタ101の値を出力するか、書き込みポインタ同期化部106を経由しないで書き込みアドレスカウンタポインタ101の値を直接出力するか、選択する選択回路である。書き込みポインタ選択部113には、選択信号として同期・非同期選択信号115が入力される。この同期・非同期選択信号は、書き込みクロックCWと読み出しクロックCRが同期しているか非同期であるかを示す信号である。この同期・非同期選択信号115を受けて書き込みポインタ選択部113は、書き込みクロックと読み出しクロックが同期していて書き込みポインタ同期化部106による同期化が不要であるときは、書き込みアドレスカウンタポインタ101の出力を書き込みポインタ同期化部106を経由せずに直接読み出し同期比較演算部109へ出力する。一方、書き込みクロックCWと読み出しクロックCRが非同期である場合には、書き込みポインタ同期化部106により読み出しクロックCRに同期化された書き込みアドレスカウンタポインタ101の値を読み出し同期比較演算部109へ出力する。
【0063】
また、読み出しポインタ選択部114は、書き込み同期比較演算部108に対して、読み出しポインタ同期化部107によって書き込みクロックに同期した読み出しアドレスカウンタポインタ102の値を出力するか、読み出しポインタ同期化部107を経由しない読み出しアドレスカウンタポインタ102の値を直接出力するか、選択する選択回路である。読み出しポインタ選択部114には、選択信号として同期・非同期選択信号115が入力される。この同期・非同期選択信号115を受けて読み出しポインタ選択部114は、書き込みクロックと読み出しクロックが同期している場合には、書き込みアドレスカウンタポインタ101の出力を直接読み出し同期比較演算部109へ出力し、書き込みクロックCWと読み出しクロックCRが非同期である場合には、読み出しポインタ同期化部107が出力する値を書き込み同期比較演算部108へ出力する。
【0064】
上記実施例3のリングバッファ回路によれば、書き込みクロックCWと読み出しクロックCRが同期している場合には、同期・非同期選択信号115によって、書き込みポインタ同期化部106と読み出しポインタ同期化部107をバイバスするか否か、選択することができる。書き込みクロックCWと読み出しクロックCRが同期している場合には、書き込みポインタ同期化部106と読み出しポインタ同期化部107をスキップすることができるので、同期化回路(106、107)で同期化する時間を短縮することができ、リングバッファ回路をより高速に動作させることができる。
【0065】
なお、実施例3において、リングバッファ回路の同期・非同期を動的に変更させる必要が無いときは、同期・非同期選択信号115を固定する事で今日の回路の論理合成技術により、冗長な回路は自動的に削除することが可能である。例えば同期・非同期選択信号115を同期側に固定した場合は、書き込みポインタ選択部113、読み出しポインタ選択部114及び、書き込みポインタ同期化部106、読み出しポインタ同期化部107が削除される事となる。さらには、書き込み同期比較演算部108と読み出し同期比較演算部109を共有化し、図6に示す実施例2のリングバッフア回路100Aと同一構成のリングバッファ回路を合成することもできる。また、同期・非同期選択信号115を非同期側に固定した場合は、書き込みポインタ選択部113、読み出しポインタ選択部114を削除し、図1に示す実施例1と同一構成のリングバッファ回路を合成することもできる。
【0066】
上記、実施例1、実施例2、実施例3に例示して特に詳しく説明したように本発明によれば、2のN乗のアドレス空間を持つFIFOバッファ(リングバッファ)についてN+1ビットのグレイコードカウンタを使用して書き込みポインタ及び読み出しポインタを構成し、アドレスの選択には、アドレス変換回路によってリードライトメモリのアドレスを直接指定可能なアドレスに変換する事によって正しいアドレスを選択することが可能である。また、グレイコードを用いることによって、カウンタのカウント値が更新される瞬間のメタステーブル状態においても異常なコードが出力されることがないので、書き込みクロックと読み出しクロックが同期しているか非同期であるか否かにかかわらず、用いることができる。さらに、リングバッファ回路におけるリードライトメモリのアドレス指定に必要なNビットより1ビット多いN+1ビットのグレイコードを用いてアドレスカウンタポインタを構成しているので、容易にバッファが満杯(フル)であるか、空(エンプティ)であるのかを区別することができる。また、多ビットの同期化が可能であるために、書き込みポインタ及び読み出しポインタが異なるクロックで動作していても比較する事ができるので、同期FIFOのみならず、非同期FIFOにも適用する事ができ、かつnビットで表現されるアドレス空間nに対してn+1ビットを用いて表現することにより正確にフルまたはエンプティを出力する事ができる。
【0067】
以上、本発明を実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0068】
100、100A、100B:リングバッファ回路
101:書き込みアドレスカウンタポインタ
102:読み出しアドレスカウンタポインタ
103:書き込みアドレス変換回路
105:読み出しアドレス変換回路
106:書き込みポインタ同期化部
107:読み出しポインタ同期化部
108:書き込み同期比較演算部
109:読み出し同期比較演算部
110:書き込み選択部
111:読み出し選択部
112:比較演算部
113:書き込みポインタ選択部
114:読み出しポインタ選択部
115:同期非同期選択信号
201、202、400〜403、500〜503:データフリップフロップ
203:同期前データ
205:同期済データ
206:同期先クロック
404、X1、X2、Xn−1、Xn:エクスクルーシブオア(EXOR)回路
405、506:変換済Nビットアドレス信号
505:N+1ビットグレイバイナリ変換回路
CW:書き込みクロック
RW:読み出しクロック

【特許請求の範囲】
【請求項1】
Nビット(Nは2以上の整数)で指定されるアドレスを有するリードライトメモリと、
前記リードライトメモリに対して書き込みを行う毎にアドレスを更新し最終アドレスまでカウントすると最初のアドレスに戻ってカウントを継続するカウンタポインタであってN+1ビットのグレイコードをカウントする書き込みアドレスカウンタポインタと、
前記リードライトメモリに対して読み出しを行う毎にアドレスを更新し前記最終アドレスまでカウントすると前記最初のアドレスに戻ってカウントを継続するカウンタポインタであってN+1ビットのグレイコードをカウントする読み出しアドレスカウンタポインタと、
前記書き込みアドレスカウンタポインタの出力するN+1ビットのグレイコードを前記リードライトメモリの書き込みアドレスとして直接指定可能なNビットのアドレスに変換する書き込みアドレス変換回路と、
前記読み出しアドレスカウンタポインタの出力するN+1ビットのグレイコードを前記リードライトメモリの読み出しアドレスとして直接指定可能なNビットのアドレスに変換する読み出しアドレス変換回路と、
を有することを特徴とするリングバッファ回路。
【請求項2】
前記リードライトメモリが書き込みクロックに同期して前記書き込みを行い、読み出しクロックに同期して前記読み出しを行うメモリであって、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みクロックに同期して出力する読み出しポインタ同期化部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しポインタ同期化部が出力するグレイコードと比較演算する書き込み同期比較演算部と、
をさらに有することを特徴とする請求項1記載のリングバッファ回路。
【請求項3】
前記書き込み同期比較演算部が、前記書き込みアドレスカウンタポインタのグレイコードと前記読み出しポインタ同期化部が出力するグレイコードとを比較し、両者の上位2ビットがいずれも不一致であり、かつ、前記上位2ビット以外の両者の下位ビットがすべて一致であるときに、前記リードライトメモリが満杯であることを検出することを特徴とする請求項2記載のリングバッファ回路。
【請求項4】
前記リードライトメモリが書き込みクロックに同期して書き込みを行い、読み出しクロックに同期して読み出しを行うメモリであって、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しクロックに同期して出力する書き込みポインタ同期化部と、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ同期化部が出力するグレイコードと比較演算する読み出し同期比較演算部と、
をさらに有することを特徴とする請求項1乃至3いずれか1項記載のリングバッファ回路。
【請求項5】
前記読み出し同期比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードと前記書き込みポインタ同期化部が出力するグレイコードとを比較し、N+1ビットの全ビットが一致していた場合に、前記リードライトメモリが空であることを検出することを特徴とする請求項4記載のリングバッファ回路。
【請求項6】
前記リードライトメモリが、書き込みポートと、読み出しポートと、を有するデュアルポートメモリであり、
前記書き込みクロックと前記読み出しクロックが非同期のクロックであることを特徴とする請求項2乃至5いずれか1項記載のリングバッファ回路。
【請求項7】
前記リードライトメモリが、書き込みポートと、読み出しポートと、を有し、書き込みクロックに同期して前記書き込みポートから前記書き込みを行い、読み出しクロックに同期して前記読み出しポートから前記読み出しを行うデュアルポートメモリであり、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みクロックに同期して出力する読み出しポインタ同期化部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しクロックに同期して出力する書き込みポインタ同期化部と、
前記書き込みクロックと前記読み出しクロックが互いに同期したクロックであるか否かを示す同期非同期選択信号に基づいて、前記書き込みアドレスカウンタポインタが出力するグレイコード又は前記書き込みポインタ同期化部の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部と、
前記同期非同期選択信号に基づいて、前記読み出しアドレスカウンタポインタが出力するグレイコード又は前記読み出しポインタ同期化部の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しポインタ選択部が出力するグレイコードと比較演算する書き込み同期比較演算部と、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ選択部が出力するグレイコードと比較演算する読み出し同期比較演算部と、
を有することを特徴とする請求項1記載のリングバッファ回路。
【請求項8】
N(Nは2以上の整数)ビットで表されるアドレスを有するリングバッファの制御回路であって、
前記リングバッファの読み出しアドレスを指定する読み出しアドレスカウンタポインタと、
前記リングバッファの書き込みアドレスを指定する書き込みアドレスカウンタポインタと、
前記読み出しアドレスと前記書き込みアドレスとを比較し前記リングバッファが空又は満杯であるか否かを検出するための比較演算部と、を備え、
前記読み出しアドレスカウンタポインタと書き込みアドレスカウンタポインタがそれぞれN+1ビット構成のグレイコードカウンタポインタで構成され、
さらに、前記読み出しアドレスカウンタポインタ及び書き込みアドレスカウンタポインタがそれぞれ出力するN+1ビットのグレイコードをNビットの前記リングバッファのアドレスに変換するアドレス変換回路を備えたことを特徴とするリングバッファの制御回路。
【請求項9】
前記アドレス変換回路が、
前記読み出しアドレスカウンタポインタが出力するN+1ビットのグレイコードをNビットの読み出しアドレスに変換する読み出しアドレス変換回路と、
前記書き込みアドレスカウンタポインタが出力するN+1ビットのグレイコードをNビットの書き込みアドレスに変換する書き込みアドレス変換回路と、
を備えたことを特徴とする請求項8記載のリングバッファの制御回路。
【請求項10】
前記読み出しアドレス変換回路、書き込みアドレス変換回路が、共に、初期状態のグレイコードアドレスを0番目のアドレスとしたとき、入力するN+1ビットのグレイコードアドレスの値が2のN乗番目以降のアドレスであった場合には、2のN乗番前のアドレスに変換して出力することを特徴とする請求項9記載のリングバッファの制御回路。
【請求項11】
前記読み出しアドレス変換回路、書き込みアドレス変換回路が、入力されたN+1ビットのグレイコードについて、最下位ビットからN−1ビット目までの入力ビットデータをそのまま出力ビットとし、Nビット目とN+1ビット目の最上位2ビットの入力ビットデータについて排他的論理和を取ってNビット目の出力ビットデータとすることにより、N+1ビットのグレイコードアドレスをNビットのグレイコードアドレスに変換して出力することを特徴とする請求項9又は10記載のリングバッファの制御回路。
【請求項12】
前記読み出しアドレス変換回路、書き込みアドレス変換回路が、それぞれ、入力されたN+1ビットのグレイコードアドレスをN+1ビットのバイナリコードに変換し、前記N+1ビットのバイナリコードのうち、下位Nビットのバイナリコードを出力することにより、N+1ビットのグレイコードアドレスをNビットのバイナリコードアドレスに変換する回路であることを特徴とする請求項9又は10記載のリングバッファの制御回路。
【請求項13】
書き込みクロックに同期してデータを書き込み、前記書き込みクロックとは非同期の読み出しクロックに同期してデータを読み出すリングバッファを制御することのできるリングバッファの制御回路であって、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みクロックに同期して出力する読み出しポインタ同期化部と、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しクロックに同期して出力する書き込みポインタ同期化部と、をさらに備え、
前記比較演算部が、
前記書き込みアドレスカウンタポインタのグレイコードを前記読み出しポインタ同期化部が出力するグレイコードと前記書き込みクロックに同期して比較演算する書き込み同期比較演算部と、
前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ同期化部が出力するグレイコードと前記読み出しクロックに同期して比較演算する読み出し同期比較演算部と、
を有することを特徴とする請求項8乃至12いずれか1項記載のリングバッファの制御回路。
【請求項14】
前記書き込み同期比較演算部が、前記書き込みアドレスカウンタポインタのグレイコードと前記読み出しポインタ同期化部が出力するグレイコードの上位2ビットがいずれも不一致であり、かつ、前記上位2ビット以外の下位各ビットがいずれも一致であるときに前記リングバッファが満杯であることを検出することを特徴とする請求項13記載のリングバッファの制御回路。
【請求項15】
前記読み出し同期比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードと前記書き込みポインタ同期化部が出力するグレイコードのN+1ビットの値がいずれも一致するときに前記リングバッファが空であることを検出することを特徴とする請求項13又は14記載のリングバッファの制御回路。
【請求項16】
前記書き込みクロックと前記読み出しクロックとが互いに同期したクロックであるか否かを示す同期非同期選択信号に基づいて、前記書き込みアドレスカウンタポインタが出力するグレイコード又は前記書き込みポインタ同期化部の出力するグレイコードのいずれかを選択して出力する書き込みポインタ選択部と、
前記同期非同期選択信号に基づいて、前記読み出しアドレスカウンタポインタが出力するグレイコード又は前記読み出しポインタ同期化部の出力するグレイコードのいずれかを選択して出力する読み出しポインタ選択部と、
をさらに備え、
前記書き込み同期比較演算部が、前記書き込みアドレスカウンタポインタのグレイコードを前記書き込みポインタ選択部が出力するグレイコードと比較演算し、
前記読み出し同期比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードを前記書き込みポインタ選択部が出力するグレイコードと比較演算する
ことを特徴とする請求項13乃至15いずれか1項記載のリングバッファの制御回路。
【請求項17】
前記比較演算部が、前記読み出しアドレスカウンタポインタのグレイコードと、前記書き込みアドレスカウンタポインタのグレイコードとを比較し、両者の上位2ビットがいずれも不一致であり、前記上位2ビット以外の下位ビットがすべて一致である場合に前記リングバッファが満杯であることを検出し、両者のN+1ビットの全ビットが一致である場合に前記リングバッファが空であることを検出することを特徴とする請求項8乃至12いずれか1項記載のリングバッファの制御回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−160653(P2010−160653A)
【公開日】平成22年7月22日(2010.7.22)
【国際特許分類】
【出願番号】特願2009−1965(P2009−1965)
【出願日】平成21年1月7日(2009.1.7)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】