JP2004295819A - Data buffer device - Google Patents
Data buffer device Download PDFInfo
- Publication number
- JP2004295819A JP2004295819A JP2003090698A JP2003090698A JP2004295819A JP 2004295819 A JP2004295819 A JP 2004295819A JP 2003090698 A JP2003090698 A JP 2003090698A JP 2003090698 A JP2003090698 A JP 2003090698A JP 2004295819 A JP2004295819 A JP 2004295819A
- Authority
- JP
- Japan
- Prior art keywords
- signal
- unit
- synchronization
- data
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
本発明は、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行うことができるデータバッファ装置に関し、たとえば、非同期のFIFO型データバッファ装置や、非同期のFILO型データバッファ装置に関するものである。
【0002】
【従来の技術】
一般に、FIFO型のデータバッファ装置(以降、FIFOと表記する)は、内部の状態を外部回路に知らせるための2つのフラグ信号を出力する。1つはフル・フラグ(full flag)と呼ばれ、書き込みデータによって記憶領域が満杯になっている状態(以降、フル状態と表記する)を示す。他の1つはエンプティ・フラグ(empty flag)と呼ばれ、記憶領域に未読の書き込みデータが存在しない状態(以降、エンプティ状態と表記する)を示す。
【0003】
フル・フラグが有効な場合、データの上書きを防止するため、FIFOに対するデータの書き込みは許可されず、フル・フラグが無効の場合に書き込みは許可される。また、エンプティ・フラグが有効の場合、読み出すべきデータが記憶領域に存在しないため、FIFOからのデータの読み出しは許可されず、エンプティ・フラグが無効の場合に読み出しは許可される。
このように、外部回路からFIFOを見た場合、FIFOが生成するフル/エンプティ・フラグはその状態を知るための唯一の情報であることから、FIFOの正常な動作においてフル/エンプティ・フラグの働きは重要である。
【0004】
通常、FIFOの先入れ先だし動作は、データの書き込みアドレスを指す書き込みポインタWP(write pointer)と、データの読み出しアドレスを指す読み出しポインタRP(read pointer)とを用いて制御される。上述のフル/エンプティ・フラグは、この書き込みポインタWPと読み出しポインタRPとを用いて生成される。
【0005】
書き込みと読み出しが共通のクロック信号に同期して行われる同期FIFOの場合、書き込みポインタWPおよび読み出しポインタRPは共通のクロック信号に同期して更新されるため、フル/エンプティ・フラグもこの共通のクロック信号に同期して生成される。
【0006】
これに対し、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行うことができる非同期FIFOの場合、書き込みポインタWPおよび読み出しポインタRPは異なるクロック信号に同期して更新される。すなわち、書き込みポインタWPおよび読み出しポインタRPはそれぞれ任意のタイミングで独立に更新される。このため、これらのフラグに応じて生成されるフル/エンプティ・フラグには、時間幅の狭いパルス(スパイク)が含まれる可能性がある。外部回路は、フル/エンプティ・フラグの状態を見ながらFIFOとデータの受渡しを行うので、これらのフラグにスパイクが含まれると、データの授受に誤動作を生じる可能性がある。
【0007】
たとえば、残り1ワードのデータでFIFOがフル状態になる場合において読み出しと書き込みが同時に実行されると、フル・フラグにスパイクが乗る可能性がある。また、有効データが1ワードだけ存在する場合において読み出しと書き込みが同時に実行されると、エンプティ・フラグにスパイクが乗る可能性がある。
【0008】
このような非同期FIFOにおけるフル/エンプティ・フラグのスパイクを防止する手法として、特許文献1に記載された従来技術が存在する。
特許文献1に記載された非同期FIFOでは、FIFO内の有効データの有無がトークン信号によって表されており、フル/エンプティ・フラグはこのトークン信号を用いて生成される。
【0009】
【特許文献1】
特許第3013800号
【0010】
【発明が解決しようとする課題】
しかしながら、特許文献1に記載された非同期FIFOでは、トークン信号を伝播するための回路として、FIFOの記憶容量(図1の例では4ワード)に相当する段数のユニット(1−19〜1−22)を設ける必要がある。特許文献1の図2に示すように、このユニット内を伝播するトークン信号は複数のゲート回路を通過するため、FIFOの記憶容量に比例してユニット数が増えると、トークン信号の伝播遅延が増大する。
【0011】
すなわち、特許文献1に記載された手法では、エンプティ状態でデータが書き込まれてから読み出し可能になるまでの遅延時間や、フル状態でデータが読み出されてから書き込み可能になるまでの遅延時間が、FIFOの記憶容量に比例して長くなってしまう不利益が生じる。特に記憶容量の大きなFIFOでは、レイテンシの面において性能の劣化が著しくなる。
【0012】
本発明はかかる事情に鑑みてなされたものであり、その目的は、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行う場合において、書き込み許可信号および読み出し許可信号にスパイクが発生することを防止でき、また、書き込み許可信号および読み出し許可信号の生成に要する遅延時間が記憶容量の増加にともなって長くなることを防止できるデータバッファ装置を提供することにある。
【0013】
【課題を解決するための手段】
上記の目的を達成するため、本発明のデータバッファ装置は、入力されるデータを第1のクロック信号に同期して記憶する記憶手段と、第1のフラグ信号を保持する第1のフラグ信号保持手段と、第2のフラグ信号を保持する第2のフラグ信号保持手段と、記憶手段において上記データ書き込みが行われる場合、第1のフラグ信号保持手段に保持される第1のフラグ信号を変更する第1の信号変更手段と、第1のフラグ信号保持手段に保持される第1のフラグ信号を、第2のクロック信号に同期化した第1の同期化フラグ信号に変換する第1の同期化手段と、第1の同期化フラグ信号の変更を検出した場合、読み出し許可信号を出力し、この読み出し許可信号の出力中に第2のクロック信号に同期して記憶手段からデータが読み出される場合、読み出し許可信号の出力を停止する読み出し許可信号出力手段と、記憶手段において上記データ読み出しが行われる場合、第2のフラグ信号保持手段に保持される第2のフラグ信号を変更する第2の信号変更手段と、第2のフラグ信号保持手段に保持される第2のフラグ信号を、第1のクロック信号に同期化した第2の同期化フラグ信号に変換する第2の同期化手段と、第2の同期化フラグ信号の変更を検出した場合、書き込み許可信号を出力し、記憶手段において上記データ書き込みが行われる場合、書き込み許可信号の出力を停止する書き込み許可信号出力手段とを有する。記憶手段は、書き込み許可信号出力手段から書き込み許可信号が出力される場合に、上記データ書き込みを行う。
【0014】
本発明のデータバッファ装置によれば、書き込み許可信号が記憶手段に入力されると、第1のクロック信号に同期して、入力データが記憶手段に記憶される。記憶手段において上記データ書き込みが行われると、第1の信号変更手段において、第1のフラグ信号保持手段に保持される第1のフラグ信号が変更される。変更された第1のフラグ信号は、第1の同期化手段において、第2のクロック信号に同期化した第1の同期化フラグ信号に変換される。第1の同期化フラグ信号の変更が読み出し許可信号出力手段において検出されると、読み出し許可信号出力手段から読み出し許可信号が出力される。読み出し許可信号の出力中に、第2のクロック信号に同期して記憶手段からデータが読み出されると、読み出し許可信号出力手段からの読み出し許可信号の出力が停止される。
記憶手段において上記データ読み出しが行われると、第2の信号変更手段において、第2のフラグ信号保持手段に保持される第2のフラグ信号が変更される。変更された第2のフラグ信号は、第2の同期化手段において、第1のクロック信号に同期化した第2の同期化フラグ信号に変換される。第2の同期化フラグ信号の変更が書き込み許可信号出力手段において検出されると、書き込み許可信号出力手段から書き込み許可信号が出力される。記憶手段において上記データ書き込みが行われると、書き込み許可手段からの書き込み許可信号の出力は停止される。
【0015】
また、第1の観点のデータバッファ装置において、第1の信号変更手段および上記第2の信号変更手段は、変更対象のフラグ信号を、異なる2種類の信号の一方から他方へ変更しても良い。この場合、読み出し許可信号出力手段は、第2のフラグ信号保持手段に保持される第2のフラグ信号と、第1の同期化手段から出力される第1の同期化フラグ信号とを比較する第1の比較手段を含み、書き込み許可信号出力手段は、第1のフラグ信号保持手段に保持される第1のフラグ信号と、第2の同期化手段から出力される第2の同期化フラグ信号とを比較する第2の比較手段を含む。
【0016】
【発明の実施の形態】
<第1の実施形態>
図1は、本発明の第1の実施形態に係るデータバッファ装置の構成の一例を示すブロック図である。
図1に示すデータバッファ装置は、バッファユニット1−0〜1−7と、書き込み指示部2と、読み出し指示部3と、デコード部4および5と、選択部6〜8と、AND回路9および10とを有する。
バッファユニット1−0〜1−7は、本発明のバッファユニットの一実施形態である。
書き込み指示部2は、本発明の書き込み指示手段の一実施形態である。
読み出し指示部3は、本発明の読み出し指示手段の一実施形態である。
選択部6は、本発明の第1の選択手段の一実施形態である。
選択部7は、本発明の第2の選択手段の一実施形態である。
選択部8は、本発明の第3の選択手段の一実施形態である。
【0017】
(バッファユニット1−n)
バッファユニット1−n(nは0から7までの整数を示す)は、入力データDIを記憶するための記憶部を有しており、この記憶部に未読のデータが記憶されていない場合、クロック信号CK1に同期して、データの書き込みが可能であることを示すハイレベルの書き込み許可信号WO[n]を出力する。ハイレベルの書き込み許可信号WO[n]を出力している期間において、入力される書き込み要求信号WIおよび書き込みイネーブル信号WE[n]が共にハイレベルの場合、バッファユニット1−nは、クロック信号CK1に同期して入力データDIを記憶部に書き込む。また、このデータ書き込み時において、書き込み許可信号WO[n]をローレベルに変化させる。
【0018】
一方、記憶部に未読のデータが書き込まれている場合、バッファユニット1−nは、クロック信号CK2に同期して、データの読み出しが可能であることを示すハイレベルの読み出し許可信号RO[n]を出力する。ハイレベルの読み出し許可信号RO[n]を出力している期間において、入力される読み出し要求信号RIおよび読み出しイネーブル信号RE[n]が共にハイレベルの場合、クロック信号CK2に同期して、記憶部に記憶されたデータの読み出しが行われる。このデータ読み出し時において、バッファユニット1−nは、読み出し許可信号RO[n]をローレベルに変化させる。
【0019】
図2は、バッファユニット1−nの構成の一例を示す回路図である。
図2に示すバッファユニット1−nは、フリップフロップ101〜107と、AND回路110〜113と、インバータ120および121と、排他的NOR回路130と、排他的OR回路131とを有する。
フリップフロップ101は、本発明の第1のフラグ信号保持手段の一実施形態である。
フリップフロップ104は、本発明の第2のフラグ信号保持手段の一実施形態である。
AND回路110、111およびインバータ120を含むユニットは、本発明の第1の信号変更手段の一実施形態である。
フリップフロップ102および103は、本発明の第1の同期化手段の一実施形態である。
排他的OR回路131は、本発明の読み出し許可信号出力手段の一実施形態であるとともに、本発明の第1の比較手段の一実施形態である。
AND回路112、113およびインバータ121を含むユニットは、本発明の第2の信号変更手段の一実施形態である。
フリップフロップ105および106は、本発明の第2の同期化手段の一実施形態である。
排他的NOR回路130は、本発明の書き込み許可信号出力手段の一実施形態であるとともに、本発明の第2の比較手段の一実施形態である。
【0020】
AND回路110は、書き込み許可信号WO[n]、書き込みイネーブル信号WE[n]および書き込み要求信号WIを入力し、この3つの入力信号の論理積を演算する。
AND回路111は、AND回路110の演算結果とクロック信号CK1とを入力し、この2つの入力信号の論理積を演算する。
【0021】
フリップフロップ101は、自らの保持するフラグ信号F1がインバータ120において論理反転された信号を入力する。そして、この入力信号を、AND回路111を介して入力されるクロック信号CK1に同期して保持し、フラグ信号F1として出力する。
【0022】
フリップフロップ102は、フリップフロップ101から出力されるフラグ信号F1を、クロック信号CK2に同期して保持する。
フリップフロップ103は、フリップフロップ102に保持された信号を、クロック信号CK2に同期して保持し、同期化フラグ信号UF1として出力する。
【0023】
AND回路112は、読み出し許可信号RO[n]、読み出しイネーブル信号RE[n]および読み出し要求信号RIを入力し、この3つの入力信号の論理積を演算する。
AND回路113は、AND回路112の演算結果とクロック信号CK2とを入力し、この2つの入力信号の論理積を演算する。
【0024】
フリップフロップ104は、自らの保持するフラグ信号F2がインバータ121において論理反転された信号を入力する。そして、この入力信号を、AND回路113を介して入力されるクロック信号CK2に同期して保持し、フラグ信号F2として出力する。
【0025】
フリップフロップ105は、フリップフロップ104から出力されるフラグ信号F2を、クロック信号CK1に同期して保持する。
フリップフロップ106は、フリップフロップ105に保持された信号を、クロック信号CK1に同期して保持し、同期化フラグ信号UF2として出力する。
【0026】
排他的NOR回路130は、フラグ信号F1と同期化フラグ信号UF2との排他的反転論理和を演算し、その演算結果を書き込み許可信号WO[n]として出力する。
排他的OR回路131は、フラグ信号F2と同期化フラグ信号UF1との排他的論理和を演算し、その演算結果を読み出し許可信号RO[n]として出力する。
【0027】
フリップフロップ107は、AND回路111を介して入力されるクロック信号CK1に同期して、入力データDIを保持し、保持したデータを記憶データDO[n]として出力する。
【0028】
(書き込み指示部2)
書き込み指示部2は、バッファユニット1−0〜1−7の中から、書き込み対象のバッファユニットを指示するための書き込みポインタWPを出力する。
選択部6から出力される書き込み許可信号WOと書き込み要求信号WIとがハイレベルとなり、この2つの信号の論理積としてAND回路9から出力される信号WXがハイレベルになる場合、書き込みポインタWPに指示されたバッファユニットに対し、クロック信号CK1に同期して入力データDIの書き込みが行われる。書き込み指示部2は、このデータの書き込みが行われるたびに、バッファユニット1−0,1−1,…,1−7の順序に従って、書き込みポインタWPの指示対象を変更する。この順序における末尾のバッファユニット1−7に対してデータの書き込みが行われる場合は、この順序における先頭のバッファユニット1−0へ指示対象を変更する。
【0029】
図3は、書き込み指示部2の構成の一例を示す回路図である。
図3に示す書き込み指示部2は、AND回路201と、フリップフロップ202と、加算部203とを有する。
AND回路201は、AND回路9の出力信号WXおよびクロック信号CK1を入力し、この2つの信号の論理積を演算する。
フリップフロップ202は、AND回路203を介して入力されるクロック信号CK1に同期して、加算部203の加算結果を保持し、保持した信号を書き込みポインタWPとして出力する。
加算部203は、フリップフロップ202に保持された書き込みポインタWPに値‘1’を加算する。加算部203は、たとえば3ビットの加算結果を出力する加算器であり、加算結果が2進数で‘111’の場合は、これに値‘1’を加算した結果として‘000’を出力する。
【0030】
上述した構成を有する書き込み指示部2によれば、AND回路9の出力信号WXがローレベルの場合、AND回路201が遮断状態となり、フリップフロップ202に保持された書き込みポインタWPは変化しない。AND回路9の出力信号WXがハイレベルになると、AND回路201が透過状態となり、フリップフロップ202に対してクロック信号CK1が供給される。これにより、クロック信号CK1に同期して、加算部203の加算結果がフリップフロップ202に保持され、書き込みポインタWPが更新される。更新後の書き込みポインタWPは、更新前の書き込みポインタWPに値‘1’が加算された値を有する。
【0031】
(読み出し指示部3)
読み出し指示部3は、バッファユニット1−0〜1−7の中から、読み出し対象のバッファユニットを指示するための読み出しポインタRPを出力する。
選択部7から出力される読み出し許可信号ROと読み出し要求信号RIとがハイレベルとなり、この2つの信号の論理積としてAND回路10から出力される信号RXがハイレベルになる場合、読み出しポインタRPに指示されたバッファユニットから、クロック信号CK2に同期してデータの読み出しが行われる。読み出し指示部3は、このデータの読み出しが行われるたびに、バッファユニット1−0,1−1,…,1−7の順序に従って、読み出しポインタRPの指示対象を変更する。この順序における末尾のバッファユニット1−7からデータの読み出しが行われる場合は、この順序における先頭のバッファユニット1−0へ指示対象を変更する。
【0032】
読み出し指示部3は、たとえば図3に示す書き込み指示部2と同様な構成によって実現可能である。すなわち、AND回路201に対してAND回路10の出力信号RXとクロック信号CK2とを入力することにより、フリップフロップ202の保持信号として読み出しポインタRPを得ることができる。
【0033】
(デコード部4)
デコード部4は、書き込み指示部2において生成される書き込みポインタWPを、8ビットの書き込みイネーブル信号WE[7:0]へ変換する。
書き込みイネーブル信号WE[7:0]の各ビットの信号(WE[0]〜WE[7])は、バッファユニット1−0〜1−7のそれぞれに対応しており、デコード部4は、これら8ビットの信号のうち、書き込みポインタWPに応じた1ビットの信号をハイレベル、残りの信号をローレベルに設定する。
【0034】
(デコード部5)
デコード部5は、読み出し指示部3において生成される読み出しポインタRPを、8ビットの読み出しイネーブル信号RE[7:0]へ変換する。
読み出しイネーブル信号RE[7:0]の各ビットの信号(RE[0]〜RE[7])は、バッファユニット1−0〜1−7のそれぞれに対応しており、デコード部5は、これら8ビットの信号のうち、読み出しポインタRPに応じた1ビットの信号をハイレベル、残りの信号をローレベルに設定する。
【0035】
(選択部6)
選択部6は、バッファユニット1−0〜1−7から出力される書き込み許可信号WO[0]〜WO[7]のうち、書き込みイネーブル信号WE[7:0]に応じた1つの書き込み許可信号を選択して出力する。すなわち、8ビットの信号(WE[0]〜WE[7])のうち、ハイレベルのビット信号に対応するバッファユニットからの書き込み許可信号を選択して出力する。
【0036】
(選択部7)
選択部7は、バッファユニット1−0〜1−7から出力される読み出し許可信号RO[0]〜RO[7]のうち、読み出しイネーブル信号RE[7:0]に応じた1つの書き込み許可信号を選択して出力する。すなわち、8ビットの信号(RE[0]〜RE[7])のうち、ハイレベルのビット信号に対応するバッファユニットからの読み出し許可信号を選択して出力する。
【0037】
(選択部8)
選択部8は、バッファユニット1−0〜1−7に記憶されたデータDO[0]〜DO[7]のうち、読み出しイネーブル信号RE[7:0]に応じた1つのデータを選択して出力する。すなわち、8ビットの信号(RE[0]〜RE[7])のうち、ハイレベルのビット信号に対応するバッファユニットの記憶データを選択して出力する。
【0038】
ここで、上述した構成を有する図1に示すデータバッファ装置の動作を説明する。
例として、初期状態における書き込みポインタWPおよび読み出しポインタRPの指示対象は、共にバッファユニット1−0に設定されるものとする。また、この初期状態において、全てのバッファユニット(1−0〜1−7)は書き込み許可状態にあるとともに、読み出し禁止状態にあるものとする。すなわち、書き込み許可信号WO[0]〜WO[7]は、書き込み許可を示すハイレベルになり、読み出し許可信号RO[0]〜RO[7]は、書き込み禁止を示すローレベルになるものとする。
【0039】
この場合、デコード部4の出力において、書き込みイネーブル信号WE[0]がハイレベル、他の書き込みイネーブル信号WE[1]〜WE[7]がローレベルになり、選択部6ではバッファユニット1−0の書き込み許可信号WO[0]が選択されて出力される。このため、選択部6から出力される書き込み許可信号WOはハイレベルになり、データバッファ装置に対するデータの書き込みが許可された状態となる。
また、デコード部5の出力において、読み出しイネーブル信号RE[0]がハイレベル、他の読み出し許可信号RO[1]〜RO[7]がローレベルになり、選択部7ではバッファユニット1−0の読み出し許可信号RO[0]が選択されて出力される。このため、選択部7から出力される読み出し許可信号ROはローレベルになり、データバッファ装置は、データ読み出しが禁止されたエンプティ状態になる。
【0040】
この初期状態において、ハイレベルの書き込み要求信号WIが入力されると、クロック信号CK1に同期して、バッファユニット1−0に入力データDIが書き込まれるとともに、書き込み許可信号WO[0]がローレベルへ変化する。
また、このデータ書き込み時において、書き込みポインタWPの値がインクリメントされ、指示対象がバッファユニット1−1へ変更される。これにより、書き込みイネーブル信号WE[1]がハイレベル、他の書き込みイネーブル信号WE[0],WE[2]〜WE[7]がローレベルになり、選択部6ではバッファユニット1−1の書き込み許可信号WO[1]が選択されて出力される。書き込み許可信号WO[1]はハイレベルであるため、データバッファ装置に対するデータの書き込みは引き続き許可された状態になる。
【0041】
また、バッファユニット1−0に未読のデータDO[0]が保持されることから、クロック信号CK2に同期して、読み出し許可信号RO[0]がハイレベルに変化する。これにより、選択部7から出力される読み出し許可信号ROがハイレベルになり、データバッファ装置は読み出し許可状態になる。
【0042】
バッファユニット1−0にデータが書き込まれた後、さらにハイレベルの書き込み要求信号WIが入力されると、上述と同様に、クロック信号CK1に同期して、バッファユニット1−1,1−0,…1−7に入力データDIが順次書き込まれ、書き込み許可信号WO[1]〜WO[7]が順次ローレベルになる。また、クロック信号CK2に同期して、読み出し許可信号RO[1]〜RO[7]が順次ハイレベルになる。
【0043】
仮に、データ読み出しが全く行われないままバッファユニット1−0〜1−7に対するデータ書き込みが行われると、書き込みポインタWPおよび読み出しポインタRPの指示対象が共にバッファユニット1−0になり、両者の指示対象が一致する。このとき、選択部6ではバッファユニット1−0の書き込み許可信号WO[0]が選択されて出力されるが、バッファユニット1−0ではデータ書き込みの後に読み出しが行われておらず、書き込み許可信号WO[0]がローレベルのままであるため、選択部6から出力される書き込み許可信号WOはローレベルになる。すなわち、データバッファ装置は、データ書き込みが禁止されたフル状態になる。
フル状態になると、ハイレベルの書き込み要求信号WIが入力されても書き込みポインタWPの指示対象に対してデータの書き込みが行われなくなり、書き込み指示対象の変更も行われなくなる。
【0044】
こうしたフル状態は、書き込みポインタWPおよび読み出しポインタRPの指示対象であるバッファユニット1−0に対してデータ読み出しが行われることにより解消される。
すなわち、ハイレベルの読み出し許可信号RO[0]が選択部7において選択された状態で、ハイレベルの読み出し要求信号RIが入力されると、クロック信号CK2に同期して、選択部8の出力データDOが図示しない後段の装置において読み出される。選択部8では、読み出しポインタRPで指示対象であるバッファユニット1−0の記憶データDO[0]が選択されるため、後段の装置には、記憶データDO[0]が読み込まれる。データ読み出しが行われると、クロック信号CK1に同期して、ローレベルの書き込み許可信号WO[0]が再びハイレベルに変化する。これにより、選択部6から出力される書き込み許可信号WOがハイレベルになり、データバッファ装置のフル状態が解消されて、データ書き込みが可能になる。
【0045】
また、仮に、バッファユニット1−0〜1−7に対するデータ書き込みが行われたあと、書き込みが停止されたまま、バッファユニット1−0〜1−7からのデータ読み出しが行われると、書き込みポインタWPおよび読み出しポインタRPの指示対象が共にバッファユニット1−0になり、両者の指示対象が一致する。このとき、選択部7ではバッファユニット1−0の読み出し許可信号RO[0]が選択されて出力されるが、バッファユニット1−0ではデータの読み出しの後に書き込みが行われておらず、読み出し許可信号RO[0]がローレベルのままであるため、選択部7から出力される読み出し許可信号RO[0]はローレベルになる。すなわち、データバッファ装置は、データ読み出しが禁止されたエンプティ状態になる。
エンプティ状態になると、ハイレベルの読み出し要求信号RIが入力されても読み出しポインタRPの指示対象に対してデータの読み出しが行われなくなり、読み出し指示対象の変更も行われなくなる。
【0046】
こうしたエンプティ状態は、書き込みポインタWPおよび読み出しポインタRPの指示対象であるバッファユニット1−0に対してデータ書き込みが行われることにより解消される。
すなわち、ハイレベルの書き込み許可信号WO[0]が選択部6において選択された状態で、ハイレベルの書き込み要求信号WIが入力されると、クロック信号CK1に同期して、入力データDIがバッファユニット1−0に書き込まれる。データ書き込みが行われると、クロック信号CK2に同期して、ローレベルの読み出し許可信号RO[0]が再びハイレベルに変化する。これにより、選択部7から出力される読み出し許可信号ROがハイレベルになり、データバッファ装置のエンプティ状態が解消されて、データ読み出しが可能になる。
【0047】
このように、書き込みポインタWPによって指示されたバッファユニットに対しデータ書き込みが行われるたびに、書き込みポインタWPの指示対象は、バッファユニット1−0,1−1,…,1−7,1−0,1−1,…の順序で変更される。また、読み出しポインタRPによって指示されたバッファユニットに対しデータ読み出しが行われるたびに、読み出しポインタWPの指示対象は、書き込みポインタWPと同じ順序で変更される。
初期状態において、書き込みポインタWPおよび読み出しポインタRPが同一のバッファユニットを指示するものとすると、各バッファユニットに書き込まれるデータは、この書き込み順序と同一の順序で読み出される。すなわち、図1に示すデータバッファ装置においては、先に書き込まれたデータから順に読み出される、FIFO型のデータバッファ装置としての機能が実現される。
【0048】
次に、各バッファユニットの動作について、図4の状態遷移図を参照しながら更に詳しく説明する。
図4は、図2に示すバッファユニット1−nにおけるフラグ信号(F1、F2)および同期化フラグ信号(UF1、UF2)の状態遷移の一例を示す図である。
【0049】
状態ST1:
各バッファユニットは、初期状態において、この状態ST1に設定される。状態ST1では、図5(A)に示すように、フリップフロップ101〜106の保持信号が全て値‘0’、すなわちローレベルに初期化される。
この場合、フラグ信号F1および同期化フラグ信号UF2の値が一致するため、排他的NOR回路130から出力される書き込み許可信号WO[n]は値‘1’、すなわちハイレベルになる。この状態ST1において、書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、選択部6から出力される書き込み許可信号WOはハイレベルになり、データバッファ装置は書き込み許可状態となる。
また、フラグ信号F2および同期化フラグ信号UF1の値が一致するため、排他的OR回路131から出力される読み出し許可信号RO[n]は値‘0’、すなわちローレベルになる。この状態ST2において、読み出しポインタRPの指示対象がバッファユニット1−nに設定されると、選択部7から出力される読み出し許可信号ROはローレベルになり、データバッファ装置は読み出し禁止状態になる。
書き込みポインタWPの指示対象がバッファユニット1−nに設定された状態で、ハイレベルの書き込み要求信号WIが入力されると、クロック信号CK1に同期して、フリップフロップ107に入力データDIが保持される。また、このとき、フリップフロップ101に保持されたフラグ信号F1がローレベルからハイレベルに反転し、状態ST1から状態ST2への遷移が起こる。
【0050】
状態ST2:
状態ST2においては、図5(B)に示すように、フリップフロップ101の保持信号がハイレベル、フリップフロップ102〜106の保持信号がローレベルになる。
この場合、フラグ信号F1がハイレベル、同期化フラグ信号UF2がローレベルになり、両者の値が一致しないため、書き込み許可信号WO[n]はローレベルになる。したがって、状態ST2において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み禁止状態になる。
また、フラグ信号F2および同期化フラグ信号UF1の値が一致するため、読み出し許可信号RO[n]はローレベルになる。したがって、状態ST2において読み出しポインタRPがバッファユニット1−nに設定されると、データバッファ装置は読み出し禁止状態になる。
状態ST2への遷移が起こったあと、2サイクル分のクロック信号CK2が入力されると、フリップフロップ103に保持された同期化フラグ信号UF1がハイレベルに変化し、状態ST2から状態ST3への遷移が起こる。
【0051】
状態ST3:
状態ST3においては、図5(C)に示すように、フリップフロップ101〜103の保持信号がハイレベル、フリップフロップ104〜106の保持信号がローレベルになる。
この場合、フラグ信号F1および同期化フラグ信号UF2の値が一致しないため、書き込み許可信号WO[n]はローレベルになる。したがって、状態ST3において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み禁止状態になる。
また、フラグ信号F2がローレベル、同期化フラグ信号UF1がハイレベルになり、両者の値が一致しないため、読み出し許可信号RO[n]はハイレベルになる。したがって、状態ST3において読み出しポインタRPがバッファユニット1−nに設定されると、データバッファ装置は読み出し許可状態になる。
読み出しポインタRPの指示対象がバッファユニット1−nに設定された状態で、ハイレベルの読み出し要求信号RIが入力されると、フリップフロップ107に保持されたデータDIは、クロック信号CK2に同期して、後段の装置に読み込まれる。このとき、フリップフロップ104に保持されたフラグ信号F2はローレベルからハイレベルに反転し、状態ST3から状態ST4への遷移が起こる。
【0052】
状態ST4:
状態ST4においては、図5(D)に示すように、フリップフロップ101〜104の保持信号がハイレベル、フリップフロップ105および106の保持信号がローレベルになる。
この場合、フラグ信号F1および同期化フラグ信号UF2の値が一致しないため、書き込み許可信号WO[n]はローレベルになる。したがって、状態ST4において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み禁止状態になる。
また、フラグ信号F2および同期化フラグ信号UF1がハイレベルになり、両者の値が一致するため、読み出し許可信号RO[n]はローレベルになる。したがって、状態ST4において読み出しポインタRPがバッファユニット1−nに設定されると、データバッファ装置は読み出し禁止状態になる。
状態ST4への遷移が起こったあと、2サイクル分のクロック信号CK1が入力されると、フリップフロップ106に保持された同期化フラグ信号UF2がハイレベルに変化し、状態ST4から状態ST5への遷移が起こる。
【0053】
状態ST5:
状態ST5では、図6(A)に示すように、フリップフロップ101〜106の保持信号が全てハイレベルになる。
この場合、フラグ信号F1および同期化フラグ信号UF2の値が一致するため、排他的NOR回路130から出力される書き込み許可信号WO[n]はハイレベルになる。したがって、状態ST5において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み許可状態となる。
また、フラグ信号F2および同期化フラグ信号UF1の値が一致するため、排他的OR回路131から出力される読み出し許可信号RO[n]はローレベルになる。したがって、状態ST5において、読み出しポインタRPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は読み出し禁止状態になる。
書き込みポインタWPの指示対象がバッファユニット1−nに設定された状態で、ハイレベルの書き込み要求信号WIが入力されると、クロック信号CK1に同期して、フリップフロップ107に新たな入力データDIが保持される。また、このとき、フリップフロップ101に保持されたフラグ信号F1がハイレベルからローレベルに反転し、状態ST5から状態ST6への遷移が起こる。
【0054】
状態ST6:
状態ST6においては、図6(B)に示すように、フリップフロップ101の保持信号がローレベル、フリップフロップ102〜106の保持信号がハイレベルになる。
この場合、フラグ信号F1がローレベル、同期化フラグ信号UF2がハイレベルになり、両者の値が一致しないため、書き込み許可信号WO[n]はローレベルになる。したがって、状態ST6において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み禁止状態になる。
また、フラグ信号F2および同期化フラグ信号UF1の値が一致するため、読み出し許可信号RO[n]はローレベルになる。したがって、状態ST6において読み出しポインタRPがバッファユニット1−nに設定されると、データバッファ装置は読み出し禁止状態になる。
状態ST6への遷移が起こったあと、2サイクル分のクロック信号CK2が入力されると、フリップフロップ103に保持された同期化フラグ信号UF1がローレベルに変化し、状態ST6から状態ST7への遷移が起こる。
【0055】
状態ST7:
状態ST7においては、図6(C)に示すように、フリップフロップ101〜103の保持信号がローレベル、フリップフロップ104〜106の保持信号がハイレベルになる。
この場合、フラグ信号F1および同期化フラグ信号UF2の値が一致しないため、書き込み許可信号WO[n]はローレベルになる。したがって、状態ST7において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み禁止状態になる。
また、フラグ信号F2がハイレベル、同期化フラグ信号UF1がローレベルになり、両者の値が一致しないため、読み出し許可信号RO[n]はハイレベルになる。したがって、状態ST7において読み出しポインタRPがバッファユニット1−nに設定されると、データバッファ装置は読み出し許可状態になる。
読み出しポインタRPの指示対象がバッファユニット1−nに設定された状態で、ハイレベルの読み出し要求信号RIが入力されると、フリップフロップ107に保持されたデータDIは、クロック信号CK2に同期して、後段の装置に読み込まれる。このとき、フリップフロップ104に保持されたフラグ信号F2はハイレベルからローレベルに反転し、状態ST7から状態ST8への遷移が起こる。
【0056】
状態ST8:
状態ST8においては、図6(D)に示すように、フリップフロップ101〜104の保持信号がローレベル、フリップフロップ105および106の保持信号がハイレベルになる。
この場合、フラグ信号F1および同期化フラグ信号UF2の値が一致しないため、書き込み許可信号WO[n]はローレベルになる。したがって、状態ST8において書き込みポインタWPの指示対象がバッファユニット1−nに設定されると、データバッファ装置は書き込み禁止状態になる。
また、フラグ信号F2および同期化フラグ信号UF1がローレベルになり、両者の値が一致するため、読み出し許可信号RO[n]はローレベルになる。したがって、状態ST8において読み出しポインタRPがバッファユニット1−nに設定されると、データバッファ装置は読み出し禁止状態になる。
状態ST8への遷移が起こったあと、2サイクル分のクロック信号CK1が入力されると、フリップフロップ106に保持された同期化フラグ信号UF2がローレベルに変化する。これにより、状態ST8から上述した状態ST1へ再び状態が戻る。
【0057】
このように、バッファユニット1−nに対する書き込みおよび読み出しの許可/不許可は、4つの信号(F1、UF1、F2、UF2)に応じて決定され、この信号状態は、8つの状態(ST1〜ST8)の間を巡回的に遷移する。
【0058】
状態遷移の発生と停止は、4つの制御信号(書き込みポインタWP、読み出しポインタRP、書き込み要求信号WI、読み出し要求信号RI)とクロック信号CK1およびCK2に応じて制御される。
すなわち、状態ST1から状態ST2への遷移および状態ST5から状態ST6への遷移は、書き込みポインタWPにおいてバッファユニット1−nが指示されることにより書き込みイネーブル信号WE[n]がハイレベルとなり、かつ、ハイレベルの書き込み要求信号WIが入力されることを条件に、クロック信号CK1に同期して発生する。この状態遷移は、バッファユニット1−nに対するデータの書き込みとともに発生し、上述した条件が満たされない場合、データ書き込みは行われず、状態遷移も発生しない。
状態ST3から状態ST4への遷移および状態ST7から状態ST8への遷移は、読み出しポインタRPにおいてバッファユニット1−nが指示されることにより読み出しイネーブル信号RE[n]がハイレベルとなり、かつ、ハイレベルの読み出し要求信号RIが入力されることを条件に、クロック信号CK2に同期して発生する。この状態遷移は、バッファユニット1−nに対するデータの読み出しとともに発生し、上述した条件が満たされない場合、データ読み出しは行われず、状態遷移も発生しない。
他の状態遷移(ST2−ST3、ST4−ST5、ST6−ST7、ST8−ST1)は、クロック信号CK1またはクロック信号CK2の入力に応じて自動的に発生する。
【0059】
図4に示す状態遷移図から明らかなように、データの書き込みと読み出しは異なる状態において許可される。このため、たとえ同一のバッファユニットに対して書き込みと読み出しが同時に要求されても、これらが同時に実行される不具合は発生しない。
更に、図4に示すように、8つの状態間の遷移には分岐が存在しないため、状態遷移の順序は一定に保たれる。制御信号の値や、クロック信号CK1とクロック信号CK2との位相関係に応じて、状態遷移の順序が変更されることはない。
したがって、個々のバッファユニットに対する書き込みおよび読み出しの許可/不許可は、何れも図4に示す8つの状態の遷移に基づいて決定され、制御信号の値やクロック信号の位相関係に応じて、同一のバッファユニットに対する書き込みと読み出しが同時に実行される不具合は発生しない。加えて、書き込み許可信号WOおよび読み出し許可信号ROの値は、各ポインタ(WP,RP)で指示されるデータ保持部が上述した8つの状態の何れにあるかに応じて決定され、これ以外の不安定な状態によって不適切な値に設定される不具合は発生しない。
【0060】
また、クロック信号CK1に同期したフラグ信号F1がクロック信号CK2に同期した同期化フラグ信号UF1に変換される場合、ならびに、クロック信号CK2に同期したフラグ信号F2がクロック信号CK1に同期した同期化フラグ信号UF1に変換される場合、変換元のフラグ信号は、何れも直列接続された2段のフリップフロップにおいて、変換先のクロック信号に同期して保持し直される。
【0061】
一般に、クロック信号に対して非同期の信号がフリップフロップに保持される場合、クロック信号の保持タイミングに近い時点で非同期信号にレベル変化が生じると、フリップフロップのセットアップ時間やホールド時間といったタイミング条件に違反し、保持された信号がハイレベルとローレベルの中間的なレベルになるメタステーブルと呼ばれる状態を起こす可能性がある。
したがって、図2に示すバッファユニットにおいて、フリップフロップ102やフリップフロップ105はこのようなメタステーブルを起こす可能性がある。しかしながら、こうしたメタステーブルの持続期間がクロック信号の1周期よりも十分短いものであれば、メタステーブルが発生した次のクロック・サイクルにおいてフリップフロップ102、フリップフロップ105の出力信号はハイレベルまたはローレベルの安定状態になるため、メタステーブル状態が次段のフリップフロップ103、フリップフロップ106に伝播することはない。
【0062】
このように、一方のクロック信号に同期したフラグ信号F1、F2が、2段のフリップフロップにおいて他方のクロック信号に同期して保持し直されることにより同期化フラグ信号UF1,UF2が得られるため、クロック信号CK1およびクロック信号CK2が非同期の場合であっても、同期化フラグ信号UF1,UF2に対するメタステーブルの影響は効果的に除去される。
【0063】
なお、メタステーブルの持続期間がクロック信号CK1、CK2の1周期よりも長い場合は、2段のフリップフロップを3段またはそれ以上の段数に変更することによって、同期化フラグ信号UF1,UF2に対するメタステーブルの影響は容易に除去可能である。
【0064】
次に、上述したバッファユニットに対するデータの書き込み動作および読み出し動作について、タイミングチャートを参照しながら説明する。
図7は、書き込みポインタWPおよび読み出しポインタRPが特定のバッファユニットに固定されるものとした場合における、各制御信号のタイミング関係の一例を示すタイミングチャートである。
図7(A)〜(H)は、それぞれ、クロック信号CK1、書き込み要求信号WI、書き込み許可信号WO、入力データDI、クロック信号CK2、読み出し要求信号RI、読み出し許可信号RO、および、バッファユニットの記憶データDOを示す。
図7の例においては、書き込み要求信号WIおよび読み出し要求信号RIがハイレベルで一定に保持されている。
【0065】
時刻T1:
バッファユニットが状態ST1または状態ST5の状態にあると、書き込み許可信号WOはハイレベルになる。この状態でクロック信号CK1の立ち上がり変化が生じると、この立ち上がりに同期して、入力データDIがフリップフロップ107に保持される。図7の例では、値‘1’の入力データDIがフリップフロップ107に保持される。また、このとき、状態ST2または状態ST6への状態遷移が起こるため、書き込み許可信号WOはハイレベルからローレベルへ変化する。
【0066】
時刻T2、T3:
状態ST2または状態ST6において、クロック信号CK2の立ち上がり変化が2回起こると、状態ST3または状態ST7への状態遷移が生じる。この状態遷移によって、読み出し許可信号ROがローレベルからハイレベルに変化する。
【0067】
時刻T4:
読み出し許可信号ROがハイレベルの状態で、クロック信号CK2の立ち上がり変化が生じると、この立ち上がりに同期して、フリップフロップ107に保持されたデータが後段の装置に読み込まれるとともに、状態ST4または状態ST8への状態遷移が生じる。この状態遷移に応じて、読み出し許可信号ROはハイレベルからローレベルに変化する。
【0068】
時刻T5、T6:
状態ST4または状態ST8において、クロック信号CK1の立ち上がり変化が2回起こると、状態ST5または状態ST1への状態遷移が生じる。この状態遷移によって、書き込み許可信号WOがローレベルからハイレベルに変化する。
【0069】
時刻T7:
書き込み許可信号WOがハイレベルの状態でクロック信号CK1の立ち上がり変化が生じると、この立ち上がりに同期して、新たな入力データDIがフリップフロップ107に保持される。図7の例では、値‘2’の入力データDIが新たにフリップフロップ107に保持される。また、このとき、状態ST2または状態ST6への状態遷移が起こるため、書き込み許可信号WOはハイレベルからローレベルへ変化する。
以降、時刻T9、T10において時刻T3、T4と同様な状態遷移が起こり、フリップフロップ107に保持された値‘2’のデータが後段の装置に読み込まれる。
【0070】
以上説明したように、図1に示すデータバッファ装置によれば、フラグ信号F1、フラグ信号F2、同期化フラグ信号UF1および同期化フラグ信号UF2の値が一致し、書き込み許可信号WO[n]がハイレベル、読み出し許可信号RO[n]がローレベルになる状態(状態ST1または状態ST5)において、書き込み要求信号WIおよび書き込みイネーブル信号WE[n]が共にハイレベルになると、クロック信号CK1に同期して、バッファユニットにデータが書き込まれる。このデータ書き込み時において、フリップフロップ101に保持されるフラグ信号F1が論理反転され、書き込み許可信号WO[n]はローレベルに変化する(状態ST2または状態ST6)。
論理反転されたフラグ信号F1は、2段のフリップフロップ102および103において、クロック信号CK2に同期化した同期化フラグ信号F2に変換される。フラグ信号F1の論理反転に応じて同期化フラグ信号F1に論理反転が生じると、フラグ信号F2および同期化フラグ信号UF1の値が不一致となり、読み出し許可信号RO[n]がハイレベルに変化する(状態ST3または状態ST7)。読み出し許可信号RO[n]がハイレベルの期間に、読み出し要求信号RIおよび読み出しイネーブル信号RE[n]がハイレベルになると、クロック信号CK2に同期して、バッファユニットの記憶データが後段の装置に読み出される。このデータ読み出し時において、フリップフロップ104に保持されたフラグ信号F2が論理反転され、読み出し許可信号RO[n]はローレベルに変化する(状態ST4または状態ST8)。
論理反転されたフラグ信号F2は、2段のフリップフロップ105および106において、クロック信号CK1に同期化した同期化フラグ信号UF2に変換される。フラグ信号F2の論理反転に応じて同期化フラグ信号UF2に論理反転が生じると、フラグ信号F1および同期化フラグ信号UF2の値が一致し、書き込み許可信号WO[n]がハイレベルに変化する(状態ST5または状態ST1)。この状態において、書き込み要求信号WIおよび書き込みイネーブル信号WE[n]が共にハイレベルになると、クロック信号CK1に同期して、バッファユニットに再びデータが書き込まれる。
【0071】
すなわち、バッファユニットに対する書き込みの許可/禁止、および、読み出しの許可/禁止は、各バッファユニットが持つ4つのフラグ信号(F1、F2、UF1、UF2)の状態に応じてそれぞれ決定されており、データの書き込み動作と読み出し動作は異なる信号状態において許可される。したがって、同一のバッファユニットが同時に書き込みポインタWPおよび読み出しポインタRPの指示対象になり、更に書き込み要求信号WIおよび読み出し要求信号RIが同時にハイレベルになる場合においても、バッファユニットは書き込みの許可/読み出し禁止の状態か、書き込みの禁止/読み出し許可の状態か、または、書き込みの禁止/読み出し禁止の状態の何れかになる。
加えて、信号状態の遷移先が、制御信号(WE[n]、RE[n]、WI、RI)の値や、クロック信号CK1およびCK2の位相関係に応じて変化することはなく、図4に示す8つの状態の遷移順序は一定に保たれる。
したがって、図1に示すデータバッファ装置によれば、データの書き込みと読み出しとが同時に実行される不具合を確実に防止することができる。
【0072】
また、同期化フラグ信号UF1は、2段のフリップフロップ(102、103)においてメタステーブルの影響を除去しつつクロック信号CK2に同期化された信号であり、フラグ信号F2は、フリップフロップ104においてクロック信号CK2に同期して論理反転される信号である。このため、同期化フラグ信号UF1およびフラグ信号F2に応じて生成される読み出し許可信号RO[n]も、クロック信号CK2に同期化した信号になり、メタステーブルの影響を持たない。したがって、図1に示すデータバッファ装置によれば、読み出し許可信号RO[n]のスパイクを効果的に防止することが可能であり、これに起因したデータ読み出しの誤動作を防止することができる。
同様に、同期化フラグ信号UF2およびフラグ信号F1は、クロック信号CK1に同期した信号であり、メタステーブルの影響を持たないため、これに応じて生成される書き込み許可信号WO[n]も、クロック信号CK1に同期化した信号になり、メタステーブルの影響を持たない。したがって、図1に示すデータバッファ装置によれば、書き込み許可信号WO[n]のスパイクを効果的に防止することが可能であり、これに起因したデータ書き込みの誤動作を防止することができる。
【0073】
また、図7のタイミングチャートに示すように、1つのデータがバッファユニットに書き込まれてから、この書き込まれたデータが読み出されるまでの遅延時間(T1〜T4)は、クロック信号CK1の1サイクル分と、クロック信号CK2の3サイクル分との和に概ね等しくなる。すなわち、データバッファ装置の記憶容量に応じて、データの書き込みから読み出しまでの遅延時間が長くなる不利益は生じない。したがって、遅延時間の性能を劣化させることなく、データバッファ装置の記憶容量を大きくすることができる。
【0074】
また、フラグ信号F1から同期化フラグ信号UF1への変換、フラグ信号F2から同期化フラグ信号UF2への変換は、2段のフリップフロップを用いた簡易な回路で実現可能であるため、図1に示すデータバッファ装置は、HDL(hardware description language)を用いた一般的な手法を用いて設計することが可能である。このため、一般的な回路設計ツールを用いて回路記述の検証を自動化することも可能である。
【0075】
<第2の実施形態>
次に、本発明の第2の実施形態について述べる。
第2の実施形態に係るデータバッファ装置においては、たとえば、図1に示すデータバッファ装置におけるバッファユニット1−0〜1−7が、次に述べるバッファユニット1A−0〜1A−7に置き換えられる。
【0076】
図8は、本発明の第2の実施形態に係るデータバッファ装置における、バッファユニット1A−nの構成の一例を示す回路図であり、図2と図8の同一符号は同一の構成要素を示す。
図8に示すバッファユニット1A−nは、図2に示すバッファユニット1−nにおける排他的NOR回路130および排他的OR回路131を除いた構成を有するとともに、フリップフロップ108および109と、インバータ122と、排他的OR回路132および133とを有する。
フリップフロップ108は、本発明の第1の信号保持手段の一実施形態である。
排他的OR回路133は、本発明の第3の比較手段の一実施形態である。
フリップフロップ109は、本発明の第2の信号保持手段の一実施形態である。
排他的OR回路134は、本発明の第4の比較手段の一実施形態である。
【0077】
フリップフロップ108は、フリップフロップ103から出力される同期化フラグ信号UF1を、AND回路113の出力信号に同期して保持し、保持信号Z1として出力する。
フリップフロップ109は、フリップフロップ106から出力される同期化フラグ信号UF2がインバータ122において論理反転された信号/UF2を、AND回路111の出力信号に同期して保持し、保持信号Z2として出力する。
【0078】
排他的OR回路132は、反転同期化フラグ信号/UF2および保持信号Z2の排他的論理和を演算し、その演算結果を書き込み許可信号WO[n]として出力する。
排他的OR回路133は、同期化フラグ信号UF1および保持信号Z1の排他的論理和を演算し、その演算結果を読み出し許可信号RO[n]として出力する。
【0079】
ここで、上述した構成を有する図8に示すバッファユニット1A−nの動作を説明する。
図2と図8を比較して分かるように、バッファユニット1A−nのフリップフロップ101〜106に対する入力信号は、既に述べたバッファユニット1−nの各フリップフロップに対する入力信号と同じであるため、フラグ信号(F1、F2、UF1、UF2)の状態遷移も同じになる。したがって、ここでは、各状態(ST1〜ST8)における保持信号Z1、Z2、書き込み許可信号WO[n]、読み出し許可信号RO[n]の値を示しながら、図8に示すバッファユニット1A−nの動作を説明する。
【0080】
状態ST1:
状態ST1において、フリップフロップ101〜109の保持信号は全てローレベルになるものとする。
この場合、反転同期化フラグ信号/UF2がハイレベル、保持信号Z2がローレベルになるため、書き込み許可信号WO[n]はハイレベルになる。
また、同期化フラグ信号UF1および保持信号Z1がともローレベルになるため、読み出し許可信号RO[n]はローレベルになる。
【0081】
状態ST2:
状態ST1から状態ST2への遷移時において、AND回路111からクロック信号CK1のパルスが出力されると、ハイレベルの反転同期化フラグ信号/UF2がフリップフロップ109に保持される。これにより、反転同期化フラグ信号/UF2および保持信号Z2が共にハイレベルになるため、書き込み許可信号WO[n]はローレベルになる。
また、同期化フラグ信号UF1および保持信号Z1がローレベルのままであるため、読み出し許可信号RO[n]は引き続きローレベルになる。
【0082】
状態ST3:
反転同期化フラグ信号/UF2および保持信号Z2がハイレベルのままであるため、書き込み許可信号WO[n]は引き続きローレベルになる。
また、状態ST2から状態ST3への遷移によって、同期化フラグ信号UF1がハイレベルに変化すると、保持信号Z1がローレベルであるため、読み出し許可信号RO[n]はハイレベルになる。
【0083】
状態ST4:
反転同期化フラグ信号/UF2および保持信号Z2がハイレベルのままであるため、書き込み許可信号WO[n]は引き続きローレベルになる。
また、状態ST3から状態ST4への遷移時において、AND回路113からクロック信号CK2のパルスが出力されると、ハイレベルの同期化フラグ信号UF1がフリップフロップ109に保持される。これにより、同期化フラグ信号UF1および保持信号Z1が共にハイレベルになるため、読み出し許可信号RO[n]はローレベルになる。
【0084】
状態ST5:
状態ST4から状態ST5への遷移によって、同期化フラグ信号UF2がハイレベルに変化すると、これに応じて反転同期化フラグ信号/UF2がローレベルになる。これにより、反転同期化フラグ信号/UF2がローレベル、保持信号Z2がハイレベルになるため、書き込み許可信号WO[n]はハイレベルになる。
また、同期化フラグ信号UF1および保持信号Z1がハイレベルのままであるため、読み出し許可信号RO[n]は引き続きローレベルになる。
【0085】
状態ST6:
状態ST5から状態ST6への遷移時において、AND回路111からクロック信号CK1のパルスが出力されると、ローレベルの反転同期化フラグ信号/UF2がフリップフロップ109に保持される。これにより、反転同期化フラグ信号/UF2および保持信号Z2が共にローレベルになるため、書き込み許可信号WO[n]はローレベルになる。
また、同期化フラグ信号UF1および保持信号Z1がハイレベルのままであるため、読み出し許可信号RO[n]は引き続きローレベルになる。
【0086】
状態ST7:
反転同期化フラグ信号/UF2および保持信号Z2がローレベルのままであるため、書き込み許可信号WO[n]は引き続きローレベルになる。
また、状態ST6から状態ST7への遷移によって、同期化フラグ信号UF1がローレベルに変化すると、保持信号Z1がハイレベルであるため、読み出し許可信号RO[n]はハイレベルになる。
【0087】
状態ST8:
反転同期化フラグ信号/UF2および保持信号Z2がローレベルのままであるため、書き込み許可信号WO[n]は引き続きローレベルになる。
また、状態ST7から状態ST8への遷移時において、AND回路113からクロック信号CK2のパルスが出力されると、ローレベルの同期化フラグ信号UF1がフリップフロップ109に保持される。これにより、同期化フラグ信号UF1および保持信号Z1が共にローレベルになるため、読み出し許可信号RO[n]はローレベルになる。
【0088】
以上説明したように、バッファユニット1A−nの各状態(ST1〜ST8)における書き込み許可信号WO[n]および読み出し許可信号RO[n]の値は、バッファユニット1−nと全く同じになるため、バッファユニット1A−nにおいても、バッファユニット1−nと同様な動作が実現される。
したがって、バッファユニット1−nの替わりにバッファユニット1A−nを設けたデータバッファ装置においても、データの書き込みと読み出しとが同時に実行される不具合を確実に防止することができる。
また、バッファユニット1A−nにおいても、2段のフリップフロップによって同期化フラグ信号UF1および同期化フラグ信号UF2からメタステーブルの影響が除去されるため、読み出し許可信号RO[n]および書き込み許可信号WO[n]のスパイクを効果的に防止することができる。
また、データバッファ装置の記憶容量に応じて、データの書き込みから読み出しまでの遅延時間が長くなる不利益は生じないため、遅延時間の性能を劣化させることなく、データバッファ装置の記憶容量を大きくすることができる。
【0089】
なお、本発明は上述した実施形態に限定されない。
たとえば、バッファユニットの数や入力データのデータ長、書き込みポインタWPおよび読み出しポインタRPの値、各信号の論理値など、上述した実施形態において示した種々の定数値は何れも説明上で与えた一例に過ぎず、任意に設定可能である。
バッファユニットが1つの場合は、書き込みポインタWPおよび読み出しポインタRPが固定値になるため、書き込み指示部2および読み出し指示部3を省略することができる。
【0090】
上述した実施形態では、データバッファ装置がFIFOとして動作する例を説明したが、本発明はこれに限定されず、たとえばFILO(first−in last−out)として動作させることも可能である。
【0091】
すなわち、書き込み指示部2は、指示したユニットに対してデータの書き込みが行われるたびに、複数のバッファユニットに設定された所定の順序、たとえばバッファユニット1−0,1−1,…,1−7といった順序に従って指示対象を変更する。また、指示したバッファユニットに対してデータの読み出しが行われるたびに、当該読み出しが行われたバッファユニットへ指示対象を変更する。
読み出し指示部3は、指示したユニットに対してデータの書き込みが行われるたびに、当該書き込みが行われたバッファユニットへ指示対象を変更する。また、指示したユニットに対してデータの読み出しが行われるたびに、上記所定の順序とは逆の順序に従って指示対象を変更する。
書き込み指示部2および読み出し指示部3においてこのような指示動作を行わせることにより、図1に示すデータバッファ装置をFILOとして動作させることも可能である。この場合も、FIFOの場合と同様の効果を奏することができる。
【0092】
【発明の効果】
本発明によれば、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行う場合において、書き込み許可信号および読み出し許可信号にスパイクが発生することを防止できる。また、書き込み許可信号および読み出し許可信号の生成に要する遅延時間が記憶容量の増加にともなって長くなることを防止できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係るデータバッファ装置の構成の一例を示すブロック図である。
【図2】本発明の第1の実施形態に係るバッファユニットの構成の一例を示す回路図である。
【図3】書き込み指示部の構成の一例を示す回路図である。
【図4】図2に示すバッファユニットおけるフラグ信号および同期化フラグ信号の状態遷移の一例を示す図である。
【図5】各状態におけるフリップフロップの保持信号の値を図解した第1の図である。
【図6】各状態におけるフリップフロップの保持信号の値を図解した第2の図である。
【図7】書き込みポインタおよび読み出しポインタが特定のバッファユニットに固定されるものとした場合における、各制御信号のタイミング関係の一例を示すタイミングチャートである。
【図8】本発明の第2の実施形態に係るバッファユニットの構成の一例を示す回路図である。
【符号の説明】
1−0〜1−7,1A−0〜1A−7…バッファユニット、2…書き込み指示部、3…読み出し指示部、4,5…デコード部、6〜8…選択部、9,10,110〜113,201…AND回路、107〜109,202…フリップフロップ、120〜122…インバータ、130〜133…排他的NOR回路、131…排他的OR回路、203…加算部[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a data buffer device capable of writing and reading data using independent clock signals, and for example, relates to an asynchronous FIFO data buffer device and an asynchronous FILO data buffer device.
[0002]
[Prior art]
Generally, a FIFO type data buffer device (hereinafter, referred to as FIFO) outputs two flag signals for notifying an internal circuit to an external circuit. One is called a full flag, and indicates a state in which the storage area is full of write data (hereinafter, referred to as a full state). The other one is called an empty flag, and indicates a state in which unread write data does not exist in the storage area (hereinafter, referred to as an empty state).
[0003]
When the full flag is valid, writing of data to the FIFO is not permitted to prevent overwriting of data, and writing is permitted when the full flag is invalid. Further, when the empty flag is valid, data to be read does not exist in the storage area, so that reading of data from the FIFO is not permitted. When the empty flag is invalid, reading is permitted.
As described above, when the FIFO is viewed from an external circuit, the full / empty flag generated by the FIFO is the only information for knowing the state, and therefore the function of the full / empty flag in the normal operation of the FIFO is considered. Is important.
[0004]
Normally, FIFO FIFO operation is controlled using a write pointer WP (write pointer) indicating a data write address and a read pointer RP (read pointer) indicating a data read address. The above-mentioned full / empty flag is generated using the write pointer WP and the read pointer RP.
[0005]
In the case of a synchronous FIFO in which writing and reading are performed in synchronization with a common clock signal, since the write pointer WP and the reading pointer RP are updated in synchronization with the common clock signal, the full / empty flag is also set to this common clock signal. Generated in synchronization with the signal.
[0006]
On the other hand, in the case of an asynchronous FIFO in which data can be written and read using independent clock signals, the write pointer WP and the read pointer RP are updated in synchronization with different clock signals. That is, the write pointer WP and the read pointer RP are each independently updated at an arbitrary timing. Therefore, the full / empty flag generated according to these flags may include a pulse (spike) having a narrow time width. The external circuit exchanges data with the FIFO while checking the state of the full / empty flag. Therefore, if spikes are included in these flags, a malfunction may occur in data exchange.
[0007]
For example, if reading and writing are performed simultaneously when the FIFO is full with the remaining one word of data, the full flag may be spiked. If reading and writing are performed simultaneously when only one word of valid data exists, there is a possibility that the empty flag will be spiked.
[0008]
As a technique for preventing the spike of the full / empty flag in such an asynchronous FIFO, there is a conventional technique described in
In the asynchronous FIFO described in
[0009]
[Patent Document 1]
Patent No. 3013800
[0010]
[Problems to be solved by the invention]
However, in the asynchronous FIFO described in
[0011]
That is, in the method described in
[0012]
The present invention has been made in view of such circumstances, and an object of the present invention is to prevent a spike in a write enable signal and a read enable signal when data is written and read using clock signals independent of each other. It is another object of the present invention to provide a data buffer device that can prevent the delay time required for generating the write enable signal and the read enable signal from increasing with an increase in storage capacity.
[0013]
[Means for Solving the Problems]
In order to achieve the above object, a data buffer device according to the present invention includes a storage unit that stores input data in synchronization with a first clock signal, and a first flag signal holding unit that holds a first flag signal. Means, a second flag signal holding means for holding a second flag signal, and when the data writing is performed in the storage means, the first flag signal held in the first flag signal holding means is changed. A first signal changing unit, and a first synchronization for converting the first flag signal held in the first flag signal holding unit into a first synchronization flag signal synchronized with the second clock signal. Means for outputting a read enable signal when the change of the first synchronization flag signal is detected, and reading data from the storage means in synchronization with the second clock signal during output of the read enable signal Read permission signal output means for stopping the output of the read permission signal; and a second signal change means for changing the second flag signal held in the second flag signal holding means when the data is read in the storage means. Means for converting the second flag signal held in the second flag signal holding means into a second synchronization flag signal synchronized with the first clock signal; And a write enable signal output means for outputting a write enable signal when the change of the synchronization flag signal is detected and stopping the output of the write enable signal when the data writing is performed in the storage means. The storage means performs the data writing when the write permission signal is output from the write permission signal output means.
[0014]
According to the data buffer device of the present invention, when the write enable signal is input to the storage unit, the input data is stored in the storage unit in synchronization with the first clock signal. When the data writing is performed in the storage unit, the first signal changing unit changes the first flag signal held in the first flag signal holding unit. The changed first flag signal is converted into a first synchronization flag signal synchronized with the second clock signal by the first synchronization means. When the change of the first synchronization flag signal is detected by the read permission signal output means, the read permission signal is output from the read permission signal output means. When the data is read from the storage unit in synchronization with the second clock signal while the read permission signal is being output, the output of the read permission signal from the read permission signal output unit is stopped.
When the data reading is performed in the storage unit, the second signal changing unit changes the second flag signal held in the second flag signal holding unit. The changed second flag signal is converted to a second synchronization flag signal synchronized with the first clock signal by the second synchronization means. When the change of the second synchronization flag signal is detected by the write enable signal output means, a write enable signal is output from the write enable signal output means. When the data writing is performed in the storage unit, the output of the write enable signal from the write enable unit is stopped.
[0015]
In the data buffer device according to the first aspect, the first signal changing unit and the second signal changing unit may change the flag signal to be changed from one of two different types of signals to the other. . In this case, the read permission signal output means compares the second flag signal held in the second flag signal holding means with the first synchronization flag signal output from the first synchronization means. A first flag signal held by the first flag signal holding means; a second synchronization flag signal output from the second synchronization means; Is included.
[0016]
BEST MODE FOR CARRYING OUT THE INVENTION
<First embodiment>
FIG. 1 is a block diagram illustrating an example of a configuration of the data buffer device according to the first embodiment of the present invention.
The data buffer device shown in FIG. 1 includes a buffer unit 1-0 to 1-7, a
The buffer units 1-0 to 1-7 are one embodiment of the buffer unit of the present invention.
The writing
The read instruction unit 3 is an embodiment of the read instruction unit of the present invention.
The selector 6 is an embodiment of the first selector of the present invention.
The
The
[0017]
(Buffer unit 1-n)
The buffer unit 1-n (n indicates an integer from 0 to 7) has a storage unit for storing the input data DI, and when no unread data is stored in this storage unit, the clock unit A high-level write enable signal WO [n] indicating that data can be written is output in synchronization with the signal CK1. If the input write request signal WI and the write enable signal WE [n] are both at the high level during the period when the high-level write enable signal WO [n] is being output, the buffer unit 1-n outputs the clock signal CK1. And the input data DI is written to the storage unit in synchronization with. At the time of this data writing, the write enable signal WO [n] is changed to a low level.
[0018]
On the other hand, when unread data has been written to the storage unit, the buffer unit 1-n synchronizes with the clock signal CK2 to output a high-level read permission signal RO [n] indicating that data can be read. Is output. When the input read request signal RI and read enable signal RE [n] are both at the high level during the period when the high-level read enable signal RO [n] is being output, the storage unit is synchronized with the clock signal CK2. Is read from the data stored in. At the time of data reading, the buffer unit 1-n changes the read permission signal RO [n] to low level.
[0019]
FIG. 2 is a circuit diagram showing an example of the configuration of the buffer unit 1-n.
The buffer unit 1-n illustrated in FIG. 2 includes flip-
The flip-
The flip-
The unit including the AND
Flip-
The exclusive OR
A unit including the AND
Flip-
The exclusive NOR
[0020]
The AND
The AND
[0021]
The flip-
[0022]
The flip-
The flip-
[0023]
The AND
The AND
[0024]
The flip-
[0025]
The flip-
The flip-
[0026]
The exclusive NOR
The exclusive OR
[0027]
The flip-
[0028]
(Write instruction unit 2)
The
When the write enable signal WO and the write request signal WI output from the selector 6 go to a high level, and the signal WX output from the AND circuit 9 goes to a high level as the logical product of these two signals, the write pointer WP The input data DI is written to the designated buffer unit in synchronization with the clock signal CK1. Each time the data is written, the
[0029]
FIG. 3 is a circuit diagram showing an example of the configuration of the
The
The AND
The flip-
The adding
[0030]
According to the
[0031]
(Read instruction section 3)
The read instructing unit 3 outputs a read pointer RP for indicating a buffer unit to be read from among the buffer units 1-0 to 1-7.
When the read permission signal RO and the read request signal RI output from the
[0032]
The read instruction unit 3 can be realized by, for example, the same configuration as the
[0033]
(Decoding unit 4)
The decoding unit 4 converts the write pointer WP generated by the
The signals (WE [0] to WE [7]) of the respective bits of the write enable signal WE [7: 0] correspond to the buffer units 1-0 to 1-7, respectively. Among the 8-bit signals, a 1-bit signal corresponding to the write pointer WP is set to a high level, and the remaining signals are set to a low level.
[0034]
(Decoding unit 5)
The decoding unit 5 converts the read pointer RP generated by the read instruction unit 3 into an 8-bit read enable signal RE [7: 0].
The signal (RE [0] to RE [7]) of each bit of the read enable signal RE [7: 0] corresponds to each of the buffer units 1-0 to 1-7, and the decoding unit 5 Among the 8-bit signals, a 1-bit signal corresponding to the read pointer RP is set to a high level, and the remaining signals are set to a low level.
[0035]
(Selection unit 6)
The selection unit 6 outputs one write enable signal corresponding to the write enable signal WE [7: 0] among the write enable signals WO [0] to WO [7] output from the buffer units 1-0 to 1-7. Select and output. That is, of the 8-bit signals (WE [0] to WE [7]), the write enable signal from the buffer unit corresponding to the high-level bit signal is selected and output.
[0036]
(Selection unit 7)
The
[0037]
(Selection unit 8)
The selecting
[0038]
Here, the operation of the data buffer device shown in FIG. 1 having the above configuration will be described.
For example, it is assumed that both the write pointer WP and the read pointer RP in the initial state are set in the buffer unit 1-0. In this initial state, all the buffer units (1-0 to 1-7) are in a write-enabled state and are in a read-inhibited state. That is, the write enable signals WO [0] to WO [7] are at a high level indicating write permission, and the read enable signals RO [0] to RO [7] are at a low level indicating write disable. .
[0039]
In this case, in the output of the decoding unit 4, the write enable signal WE [0] becomes high level and the other write enable signals WE [1] to WE [7] become low level. Is selected and output. Therefore, the write permission signal WO output from the selection unit 6 becomes high level, and a state in which data writing to the data buffer device is permitted.
In the output of the decoding unit 5, the read enable signal RE [0] goes high and the other read enable signals RO [1] to RO [7] go low. The read enable signal RO [0] is selected and output. Therefore, the read permission signal RO output from the
[0040]
In this initial state, when a high-level write request signal WI is input, the input data DI is written to the buffer unit 1-0 in synchronization with the clock signal CK1, and the write enable signal WO [0] becomes low-level. Changes to
At the time of writing the data, the value of the write pointer WP is incremented, and the instruction target is changed to the buffer unit 1-1. As a result, the write enable signal WE [1] goes high and the other write enable signals WE [0], WE [2] to WE [7] go low, and the selector 6 writes data in the buffer unit 1-1. The permission signal WO [1] is selected and output. Since the write enable signal WO [1] is at a high level, data writing to the data buffer device continues to be enabled.
[0041]
Since the unread data DO [0] is held in the buffer unit 1-0, the read enable signal RO [0] changes to a high level in synchronization with the clock signal CK2. As a result, the read permission signal RO output from the
[0042]
After the data is written into the buffer unit 1-0, when a high-level write request signal WI is input, the buffer units 1-1, 1-0,. .., The input data DI is sequentially written into 1-7, and the write enable signals WO [1] to WO [7] sequentially go low. Further, the read enable signals RO [1] to RO [7] sequentially become high level in synchronization with the clock signal CK2.
[0043]
If data is written to the buffer units 1-0 to 1-7 without performing any data reading, both the write pointer WP and the read pointer RP point to the buffer unit 1-0, and both of the pointers are designated. Target matches. At this time, the selection unit 6 selects and outputs the write enable signal WO [0] of the buffer unit 1-0. However, the buffer unit 1-0 does not read after writing the data, and Since WO [0] remains at low level, the write enable signal WO output from the selection unit 6 goes to low level. That is, the data buffer device enters a full state in which data writing is prohibited.
In the full state, even when the high-level write request signal WI is input, data is not written to the target indicated by the write pointer WP, and the write target is not changed.
[0044]
Such a full state is resolved by reading data from the buffer unit 1-0 to which the write pointer WP and the read pointer RP indicate.
That is, when the high-level read request signal RI is input in a state where the high-level read permission signal RO [0] is selected by the
[0045]
Further, if data is read from the buffer units 1-0 to 1-7 while writing is stopped after data writing to the buffer units 1-0 to 1-7 is performed, the write pointer WP Also, the pointing target of the read pointer RP becomes the buffer unit 1-0, and the pointing targets of both match. At this time, the
In the empty state, even when the high-level read request signal RI is input, data is not read from the target indicated by the read pointer RP, and the read target is not changed.
[0046]
Such an empty state is resolved by performing data writing to the buffer unit 1-0 to which the write pointer WP and the read pointer RP indicate.
That is, when the high-level write request signal WI is input in a state where the high-level write enable signal WO [0] is selected by the selection unit 6, the input data DI is synchronized with the clock signal CK1. 1-0 is written. When data writing is performed, the low-level read permission signal RO [0] changes to the high level again in synchronization with the clock signal CK2. As a result, the read permission signal RO output from the
[0047]
Thus, every time data is written to the buffer unit pointed to by the write pointer WP, the target pointed to by the write pointer WP is the buffer unit 1-0, 1-1,..., 1-7, 1-0. , 1-1,... Each time data is read from the buffer unit specified by the read pointer RP, the target pointed to by the read pointer WP is changed in the same order as the write pointer WP.
In the initial state, assuming that the write pointer WP and the read pointer RP point to the same buffer unit, the data written to each buffer unit is read in the same order as the write order. That is, the data buffer device shown in FIG. 1 realizes a function as a FIFO type data buffer device in which data written in advance is read out in order.
[0048]
Next, the operation of each buffer unit will be described in more detail with reference to the state transition diagram of FIG.
FIG. 4 is a diagram showing an example of the state transition of the flag signals (F1, F2) and the synchronization flag signals (UF1, UF2) in the buffer unit 1-n shown in FIG.
[0049]
State ST1:
Each buffer unit is set to this state ST1 in the initial state. In the state ST1, as shown in FIG. 5A, all the holding signals of the flip-
In this case, since the values of the flag signal F1 and the synchronization flag signal UF2 match, the write enable signal WO [n] output from the exclusive NOR
Further, since the values of the flag signal F2 and the synchronization flag signal UF1 match, the read enable signal RO [n] output from the exclusive OR
When a high-level write request signal WI is input in a state where the target pointed to by the write pointer WP is set to the buffer unit 1-n, the input data DI is held in the flip-
[0050]
State ST2:
In the state ST2, as shown in FIG. 5B, the holding signal of the flip-
In this case, the flag signal F1 is at the high level, the synchronization flag signal UF2 is at the low level, and the values do not match, so that the write enable signal WO [n] is at the low level. Therefore, when the target pointed to by the write pointer WP is set to the buffer unit 1-n in the state ST2, the data buffer device enters the write-inhibited state.
Also, since the values of the flag signal F2 and the synchronization flag signal UF1 match, the read enable signal RO [n] goes low. Therefore, when the read pointer RP is set in the buffer unit 1-n in the state ST2, the data buffer device is in a read-prohibited state.
When the clock signal CK2 for two cycles is input after the transition to the state ST2, the synchronization flag signal UF1 held in the flip-
[0051]
State ST3:
In the state ST3, as shown in FIG. 5C, the holding signals of the flip-
In this case, since the values of the flag signal F1 and the synchronization flag signal UF2 do not match, the write enable signal WO [n] goes low. Therefore, when the target pointed to by the write pointer WP is set to the buffer unit 1-n in the state ST3, the data buffer device enters the write-inhibited state.
Further, the flag signal F2 goes low and the synchronization flag signal UF1 goes high, and the values do not match, so that the read enable signal RO [n] goes high. Therefore, when the read pointer RP is set to the buffer unit 1-n in the state ST3, the data buffer device enters the read permission state.
When a high-level read request signal RI is input in a state where the target of the read pointer RP is set in the buffer unit 1-n, the data DI held in the flip-
[0052]
State ST4:
In the state ST4, as illustrated in FIG. 5D, the holding signals of the flip-
In this case, since the values of the flag signal F1 and the synchronization flag signal UF2 do not match, the write enable signal WO [n] goes low. Therefore, when the pointing target of the write pointer WP is set to the buffer unit 1-n in the state ST4, the data buffer device enters the write-inhibited state.
Further, since the flag signal F2 and the synchronization flag signal UF1 are at the high level and their values match, the read enable signal RO [n] is at the low level. Therefore, when the read pointer RP is set to the buffer unit 1-n in the state ST4, the data buffer device enters the read-prohibited state.
When the clock signal CK1 for two cycles is input after the transition to the state ST4, the synchronization flag signal UF2 held in the flip-
[0053]
State ST5:
In the state ST5, as shown in FIG. 6A, all the holding signals of the flip-
In this case, since the values of the flag signal F1 and the synchronization flag signal UF2 match, the write enable signal WO [n] output from the exclusive NOR
Further, since the values of the flag signal F2 and the synchronization flag signal UF1 match, the read permission signal RO [n] output from the exclusive OR
When a high-level write request signal WI is input in a state where the target of the write pointer WP is set to the buffer unit 1-n, new input data DI is input to the flip-
[0054]
State ST6:
In the state ST6, as shown in FIG. 6B, the holding signal of the flip-
In this case, the flag signal F1 goes low and the synchronization flag signal UF2 goes high, and the values of the two do not match, so that the write enable signal WO [n] goes low. Therefore, when the target pointed by the write pointer WP is set to the buffer unit 1-n in the state ST6, the data buffer device enters the write-inhibited state.
Also, since the values of the flag signal F2 and the synchronization flag signal UF1 match, the read enable signal RO [n] goes low. Therefore, when the read pointer RP is set to the buffer unit 1-n in the state ST6, the data buffer device is in a read prohibited state.
When the clock signal CK2 for two cycles is input after the transition to the state ST6, the synchronization flag signal UF1 held in the flip-
[0055]
State ST7:
In the state ST7, as shown in FIG. 6C, the holding signals of the flip-
In this case, since the values of the flag signal F1 and the synchronization flag signal UF2 do not match, the write enable signal WO [n] goes low. Therefore, when the pointing target of the write pointer WP is set to the buffer unit 1-n in the state ST7, the data buffer device enters the write-inhibited state.
Further, the flag signal F2 becomes high level and the synchronization flag signal UF1 becomes low level, and the values thereof do not match, so that the read enable signal RO [n] becomes high level. Therefore, when the read pointer RP is set to the buffer unit 1-n in the state ST7, the data buffer device enters the read permission state.
When a high-level read request signal RI is input in a state where the target of the read pointer RP is set in the buffer unit 1-n, the data DI held in the flip-
[0056]
State ST8:
In the state ST8, as shown in FIG. 6D, the holding signals of the flip-
In this case, since the values of the flag signal F1 and the synchronization flag signal UF2 do not match, the write enable signal WO [n] goes low. Therefore, when the target pointed to by the write pointer WP is set to the buffer unit 1-n in the state ST8, the data buffer device enters the write-inhibited state.
Further, the flag signal F2 and the synchronization flag signal UF1 go to low level, and their values match, so that the read enable signal RO [n] goes to low level. Therefore, when the read pointer RP is set to the buffer unit 1-n in the state ST8, the data buffer device enters a read-prohibited state.
When the clock signal CK1 for two cycles is input after the transition to the state ST8, the synchronization flag signal UF2 held in the flip-
[0057]
As described above, the permission / non-permission of writing and reading with respect to the buffer unit 1-n is determined according to the four signals (F1, UF1, F2, UF2), and the signal states are divided into eight states (ST1 to ST8). ).
[0058]
The occurrence and stop of the state transition are controlled according to four control signals (write pointer WP, read pointer RP, write request signal WI, read request signal RI) and clock signals CK1 and CK2.
That is, the transition from the state ST1 to the state ST2 and the transition from the state ST5 to the state ST6 are performed when the buffer unit 1-n is instructed by the write pointer WP, so that the write enable signal WE [n] becomes high level, and It is generated in synchronization with the clock signal CK1 on condition that a high-level write request signal WI is input. This state transition occurs together with the writing of data to the buffer unit 1-n. If the above condition is not satisfied, no data writing is performed and no state transition occurs.
The transition from the state ST3 to the state ST4 and the transition from the state ST7 to the state ST8 are performed when the read pointer RP indicates the buffer unit 1-n, so that the read enable signal RE [n] becomes high and high. Is generated in synchronization with the clock signal CK2 on condition that the read request signal RI is input. This state transition occurs together with the reading of data from the buffer unit 1-n. If the above condition is not satisfied, no data reading is performed and no state transition occurs.
Other state transitions (ST2-ST3, ST4-ST5, ST6-ST7, ST8-ST1) are automatically generated in response to the input of the clock signal CK1 or the clock signal CK2.
[0059]
As is clear from the state transition diagram shown in FIG. 4, writing and reading of data are permitted in different states. Therefore, even if writing and reading are simultaneously requested for the same buffer unit, there is no problem that these are executed simultaneously.
Furthermore, as shown in FIG. 4, since there is no branch in the transition between the eight states, the order of the state transition is kept constant. The order of the state transition is not changed according to the value of the control signal or the phase relationship between the clock signal CK1 and the clock signal CK2.
Accordingly, the permission / non-permission of writing and reading for each buffer unit is determined based on the eight state transitions shown in FIG. 4, and the same is determined according to the value of the control signal and the phase relationship of the clock signal. The problem that writing and reading to the buffer unit are performed simultaneously does not occur. In addition, the values of the write enable signal WO and the read enable signal RO are determined according to which of the above-mentioned eight states the data holding unit indicated by each pointer (WP, RP) is in. The problem of being set to an inappropriate value by an unstable state does not occur.
[0060]
When the flag signal F1 synchronized with the clock signal CK1 is converted into the synchronization flag signal UF1 synchronized with the clock signal CK2, and when the flag signal F2 synchronized with the clock signal CK2 is synchronized with the clock signal CK1 When the signal is converted into the signal UF1, the conversion source flag signal is held again in synchronization with the conversion destination clock signal in the two-stage flip-flops connected in series.
[0061]
In general, when a signal that is asynchronous with respect to a clock signal is held in a flip-flop, if a level change occurs in the asynchronous signal at a point near the clock signal holding timing, timing conditions such as the setup time and hold time of the flip-flop are violated. However, there is a possibility that a state called metastable occurs in which the held signal becomes an intermediate level between the high level and the low level.
Therefore, in the buffer unit shown in FIG. 2, the flip-
[0062]
As described above, since the flag signals F1 and F2 synchronized with one clock signal are held again in synchronization with the other clock signal in the two-stage flip-flop, the synchronization flag signals UF1 and UF2 are obtained. Even when the clock signals CK1 and CK2 are asynchronous, the metastable effect on the synchronization flag signals UF1 and UF2 is effectively eliminated.
[0063]
If the duration of the metastable is longer than one cycle of the clock signals CK1 and CK2, the metastable for the synchronization flag signals UF1 and UF2 is changed by changing the number of flip-flops of two stages to three or more. The effects of the table can be easily removed.
[0064]
Next, an operation of writing and reading data to and from the buffer unit will be described with reference to a timing chart.
FIG. 7 is a timing chart showing an example of the timing relationship of each control signal when the write pointer WP and the read pointer RP are fixed to a specific buffer unit.
FIGS. 7A to 7H respectively show a clock signal CK1, a write request signal WI, a write enable signal WO, input data DI, a clock signal CK2, a read request signal RI, a read enable signal RO, and a buffer unit. The storage data DO is shown.
In the example of FIG. 7, the write request signal WI and the read request signal RI are kept constant at a high level.
[0065]
Time T1:
When the buffer unit is in the state ST1 or the state ST5, the write enable signal WO goes high. When the rising of the clock signal CK1 changes in this state, the input data DI is held in the flip-
[0066]
Time T2, T3:
If the rising of the clock signal CK2 occurs twice in the state ST2 or the state ST6, a state transition to the state ST3 or the state ST7 occurs. With this state transition, the read permission signal RO changes from low level to high level.
[0067]
Time T4:
When the rising of the clock signal CK2 changes while the read enable signal RO is at the high level, the data held in the flip-
[0068]
Time T5, T6:
In the state ST4 or the state ST8, when the rising change of the clock signal CK1 occurs twice, a state transition to the state ST5 or the state ST1 occurs. With this state transition, the write enable signal WO changes from low level to high level.
[0069]
Time T7:
When the rising edge of the clock signal CK1 changes while the write enable signal WO is at the high level, new input data DI is held in the flip-
Thereafter, at times T9 and T10, a state transition similar to that at times T3 and T4 occurs, and the data of the value “2” held in the flip-
[0070]
As described above, according to the data buffer device shown in FIG. 1, the values of the flag signal F1, the flag signal F2, the synchronization flag signal UF1, and the synchronization flag signal UF2 match, and the write enable signal WO [n] When the write request signal WI and the write enable signal WE [n] both become high in a state where the read enable signal RO [n] is at a low level (state ST1 or state ST5), the clock signal CK1 is synchronized. Thus, data is written to the buffer unit. At the time of data writing, the flag signal F1 held in the flip-
The logic-inverted flag signal F1 is converted into a synchronization flag signal F2 synchronized with the clock signal CK2 in the two-stage flip-
The flag signal F2 whose logic has been inverted is converted into a synchronization flag signal UF2 synchronized with the clock signal CK1 in the two-stage flip-
[0071]
That is, the permission / prohibition of writing to the buffer unit and the permission / prohibition of reading are determined according to the states of the four flag signals (F1, F2, UF1, UF2) of each buffer unit. Are allowed in different signal states. Therefore, even when the same buffer unit is simultaneously instructed by the write pointer WP and the read pointer RP, and the write request signal WI and the read request signal RI are simultaneously at the high level, the buffer unit permits writing / reading is prohibited. , A write-inhibited / read-enabled state, or a write-inhibited / read-inhibited state.
In addition, the transition destination of the signal state does not change according to the values of the control signals (WE [n], RE [n], WI, RI) and the phase relationship between the clock signals CK1 and CK2. Are kept constant.
Therefore, according to the data buffer device shown in FIG. 1, it is possible to reliably prevent a problem that data writing and reading are simultaneously performed.
[0072]
The synchronization flag signal UF1 is a signal synchronized with the clock signal CK2 while removing the influence of metastable in the two-stage flip-flops (102, 103). This signal is logically inverted in synchronization with the signal CK2. Therefore, the read permission signal RO [n] generated according to the synchronization flag signal UF1 and the flag signal F2 is also a signal synchronized with the clock signal CK2, and has no metastable effect. Therefore, according to the data buffer device shown in FIG. 1, it is possible to effectively prevent a spike in the read permission signal RO [n], and to prevent a data read malfunction due to the spike.
Similarly, the synchronization flag signal UF2 and the flag signal F1 are signals synchronized with the clock signal CK1 and have no metastable effect. Therefore, the write enable signal WO [n] generated in response to the clock signal CK1 is also a clock signal. The signal is synchronized with the signal CK1, and has no metastable effect. Therefore, according to the data buffer device shown in FIG. 1, spikes in the write enable signal WO [n] can be effectively prevented, and a malfunction in data writing due to the spike can be prevented.
[0073]
As shown in the timing chart of FIG. 7, the delay time (T1 to T4) from when one data is written to the buffer unit to when the written data is read is equal to one cycle of the clock signal CK1. And three cycles of the clock signal CK2. That is, there is no disadvantage that the delay time from writing to reading of data is increased according to the storage capacity of the data buffer device. Therefore, the storage capacity of the data buffer device can be increased without deteriorating the performance of the delay time.
[0074]
The conversion from the flag signal F1 to the synchronization flag signal UF1 and the conversion from the flag signal F2 to the synchronization flag signal UF2 can be realized by a simple circuit using two-stage flip-flops. The illustrated data buffer device can be designed by using a general method using HDL (hardware description language). Therefore, it is possible to automate the verification of the circuit description using a general circuit design tool.
[0075]
<Second embodiment>
Next, a second embodiment of the present invention will be described.
In the data buffer device according to the second embodiment, for example, buffer units 1-0 to 1-7 in the data buffer device shown in FIG. 1 are replaced with buffer units 1A-0 to 1A-7 described below.
[0076]
FIG. 8 is a circuit diagram showing an example of the configuration of the buffer units 1A-n in the data buffer device according to the second embodiment of the present invention. The same reference numerals in FIGS. 2 and 8 indicate the same components. .
The buffer unit 1A-n shown in FIG. 8 has a configuration in which the exclusive NOR
The flip-
The exclusive OR
The flip-
The exclusive OR circuit 134 is an embodiment of the fourth comparing means of the present invention.
[0077]
The flip-
The flip-
[0078]
The exclusive OR
The exclusive OR
[0079]
Here, the operation of the buffer unit 1A-n shown in FIG. 8 having the above-described configuration will be described.
As can be seen by comparing FIGS. 2 and 8, the input signals to the flip-
[0080]
State ST1:
In the state ST1, all the holding signals of the flip-
In this case, the write enable signal WO [n] goes high because the inverted synchronization flag signal / UF2 goes high and the holding signal Z2 goes low.
Further, since both the synchronization flag signal UF1 and the holding signal Z1 are at low level, the read enable signal RO [n] is at low level.
[0081]
State ST2:
When the pulse of the clock signal CK1 is output from the AND
Further, since the synchronization flag signal UF1 and the holding signal Z1 remain at the low level, the read enable signal RO [n] remains at the low level.
[0082]
State ST3:
Since the inversion synchronization flag signal / UF2 and the holding signal Z2 remain at the high level, the write enable signal WO [n] remains at the low level.
When the synchronization flag signal UF1 changes to the high level due to the transition from the state ST2 to the state ST3, the read enable signal RO [n] changes to the high level because the holding signal Z1 is at the low level.
[0083]
State ST4:
Since the inversion synchronization flag signal / UF2 and the holding signal Z2 remain at the high level, the write enable signal WO [n] remains at the low level.
In addition, when the pulse of the clock signal CK2 is output from the AND
[0084]
State ST5:
When the synchronization flag signal UF2 changes to the high level due to the transition from the state ST4 to the state ST5, the inverted synchronization flag signal / UF2 changes to the low level in response. As a result, the inverted synchronization flag signal / UF2 goes low and the holding signal Z2 goes high, so that the write enable signal WO [n] goes high.
Further, since the synchronization flag signal UF1 and the holding signal Z1 remain at the high level, the read enable signal RO [n] remains at the low level.
[0085]
State ST6:
When a pulse of the clock signal CK1 is output from the AND
Further, since the synchronization flag signal UF1 and the holding signal Z1 remain at the high level, the read enable signal RO [n] remains at the low level.
[0086]
State ST7:
Since the inverted synchronization flag signal / UF2 and the holding signal Z2 remain at the low level, the write enable signal WO [n] remains at the low level.
When the synchronization flag signal UF1 changes to low level due to the transition from the state ST6 to the state ST7, the read enable signal RO [n] changes to high level because the holding signal Z1 is at high level.
[0087]
State ST8:
Since the inversion synchronization flag signal / UF2 and the holding signal Z2 remain at the low level, the write enable signal WO [n] remains at the low level.
In addition, when the pulse of the clock signal CK2 is output from the AND
[0088]
As described above, the values of the write enable signal WO [n] and the read enable signal RO [n] in each state (ST1 to ST8) of the buffer unit 1A-n are exactly the same as those of the buffer unit 1-n. , Buffer unit 1A-n also realizes the same operation as buffer unit 1-n.
Therefore, even in the data buffer device provided with the buffer units 1A-n instead of the buffer units 1-n, it is possible to reliably prevent a problem that data writing and reading are simultaneously performed.
Also in the buffer units 1A-n, since the influence of metastable is removed from the synchronization flag signal UF1 and the synchronization flag signal UF2 by the two-stage flip-flops, the read enable signal RO [n] and the write enable signal WO The spike of [n] can be effectively prevented.
In addition, since there is no disadvantage that the delay time from writing to reading of data increases according to the storage capacity of the data buffer device, the storage capacity of the data buffer device is increased without deteriorating the performance of the delay time. be able to.
[0089]
Note that the present invention is not limited to the embodiment described above.
For example, the various constant values shown in the above embodiments, such as the number of buffer units, the data length of input data, the values of the write pointer WP and the read pointer RP, and the logical values of each signal, are examples given in the description. And can be set arbitrarily.
When there is one buffer unit, the write pointer WP and the read pointer RP have fixed values, so that the
[0090]
In the above-described embodiment, an example in which the data buffer device operates as a FIFO has been described. However, the present invention is not limited to this. For example, the data buffer device may operate as a FILO (first-in last-out).
[0091]
That is, each time data is written to the instructed unit, the
Each time data is written to the instructed unit, the read instructing unit 3 changes the instruction target to the buffer unit in which the writing has been performed. Further, each time data is read from the designated unit, the designation target is changed in an order reverse to the above-described predetermined order.
By causing the
[0092]
【The invention's effect】
According to the present invention, when writing and reading data using independent clock signals, it is possible to prevent spikes from occurring in the write enable signal and the read enable signal. Further, it is possible to prevent the delay time required for generating the write permission signal and the read permission signal from increasing with an increase in storage capacity.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating an example of a configuration of a data buffer device according to a first embodiment of the present invention.
FIG. 2 is a circuit diagram illustrating an example of a configuration of a buffer unit according to the first embodiment of the present invention.
FIG. 3 is a circuit diagram illustrating an example of a configuration of a write instruction unit.
FIG. 4 is a diagram illustrating an example of a state transition of a flag signal and a synchronization flag signal in the buffer unit illustrated in FIG. 2;
FIG. 5 is a first diagram illustrating values of a holding signal of a flip-flop in each state.
FIG. 6 is a second diagram illustrating the value of the holding signal of the flip-flop in each state.
FIG. 7 is a timing chart showing an example of a timing relationship between control signals when a write pointer and a read pointer are fixed to a specific buffer unit.
FIG. 8 is a circuit diagram illustrating an example of a configuration of a buffer unit according to a second embodiment of the present invention.
[Explanation of symbols]
1-0 to 1-7, 1A-0 to 1A-7 Buffer unit, 2 Write instruction unit, 3 Read instruction unit, 4, 5 Decode unit, 6-8 Select unit, 9, 10, 110 ... 113,201 ... AND circuit, 107-109,202 ... Flip-flop, 120-122 ... Inverter, 130-133 ... Exclusive NOR circuit, 131 ... Exclusive OR circuit, 203 ... Addition unit
Claims (7)
第1のフラグ信号を保持する第1のフラグ信号保持手段と、
第2のフラグ信号を保持する第2のフラグ信号保持手段と、
上記記憶手段において上記データ書き込みが行われる場合、上記第1のフラグ信号保持手段に保持される第1のフラグ信号を変更する第1の信号変更手段と、
上記第1のフラグ信号保持手段に保持される第1のフラグ信号を、第2のクロック信号に同期化した第1の同期化フラグ信号に変換する第1の同期化手段と、
上記第1の同期化フラグ信号の変更を検出した場合、上記読み出し許可信号を出力し、当該読み出し許可信号の出力中に上記第2のクロック信号に同期して上記記憶手段からデータが読み出される場合、当該読み出し許可信号の出力を停止する読み出し許可信号出力手段と、
上記記憶手段において上記データ読み出しが行われる場合、上記第2のフラグ信号保持手段に保持される第2のフラグ信号を変更する第2の信号変更手段と、
上記第2のフラグ信号保持手段に保持される第2のフラグ信号を、上記第1のクロック信号に同期化した第2の同期化フラグ信号に変換する第2の同期化手段と、
上記第2の同期化フラグ信号の変更を検出した場合、上記書き込み許可信号を出力し、上記記憶手段において上記データ書き込みが行われる場合、当該書き込み許可信号の出力を停止する書き込み許可信号出力手段とを有し、
上記記憶手段は、上記書き込み許可信号出力手段から書き込み許可信号が出力される場合に上記データ書き込みを行う、
データバッファ装置。Storage means for storing input data in synchronization with the first clock signal;
First flag signal holding means for holding a first flag signal;
Second flag signal holding means for holding a second flag signal;
A first signal changing unit that changes a first flag signal held in the first flag signal holding unit when the data writing is performed in the storage unit;
First synchronizing means for converting the first flag signal held in the first flag signal holding means into a first synchronization flag signal synchronized with a second clock signal;
When detecting a change in the first synchronization flag signal, outputting the read permission signal, and reading data from the storage means in synchronization with the second clock signal during output of the read permission signal. Read permission signal output means for stopping the output of the read permission signal,
A second signal changing unit that changes a second flag signal held in the second flag signal holding unit when the data reading is performed in the storage unit;
Second synchronization means for converting the second flag signal held in the second flag signal holding means into a second synchronization flag signal synchronized with the first clock signal;
A write enable signal output unit configured to output the write enable signal when the change of the second synchronization flag signal is detected, and to stop the output of the write enable signal when the data writing is performed in the storage unit; Has,
The storage means performs the data writing when a write enable signal is output from the write enable signal output means,
Data buffer device.
上記読み出し許可信号出力手段は、上記第2のフラグ信号保持手段に保持される第2のフラグ信号と、上記第1の同期化手段から出力される第1の同期化フラグ信号とを比較する第1の比較手段を含み、
上記書き込み許可信号出力手段は、上記第1のフラグ信号保持手段に保持される第1のフラグ信号と、上記第2の同期化手段から出力される第2の同期化フラグ信号とを比較する第2の比較手段を含む、
請求項1に記載のデータバッファ装置。The first signal changing means and the second signal changing means change a flag signal to be changed from one of two different types of signals to the other,
The read permission signal output means compares a second flag signal held in the second flag signal holding means with a first synchronization flag signal output from the first synchronization means. One comparing means,
The write enable signal output means compares a first flag signal held in the first flag signal holding means with a second synchronization flag signal output from the second synchronization means. Including two comparison means,
The data buffer device according to claim 1.
上記記憶手段からデータが読み出される場合、上記第2のクロック信号に同期して、上記第1の同期化手段から出力される第1の同期化フラグ信号を保持する第1の信号保持手段と、
上記第1の信号保持手段に保持される第1の同期化フラグ信号と、上記第1の同期化手段から出力される第1の同期化フラグ信号とを比較する第3の比較手段とを含み、
上記書き込み許可信号出力手段は、
上記記憶手段からデータが読み出される場合、上記第1のクロック信号に同期して、上記第2の同期化手段から出力される第2の同期化フラグ信号を保持する第2の信号保持手段と、
上記第2の信号保持手段に保持される第2の同期化フラグ信号と、上記第2の同期化手段から出力される第2の同期化フラグ信号とを比較する第4の比較手段とを含む、
請求項1に記載のデータバッファ装置。The read permission signal output means includes:
When data is read from the storage unit, a first signal holding unit that holds a first synchronization flag signal output from the first synchronization unit in synchronization with the second clock signal;
And a third comparing means for comparing the first synchronization flag signal held by the first signal holding means with the first synchronization flag signal output from the first synchronization means. ,
The write enable signal output means includes:
When data is read from the storage unit, a second signal holding unit that holds a second synchronization flag signal output from the second synchronization unit in synchronization with the first clock signal;
And a fourth comparing means for comparing the second synchronization flag signal held by the second signal holding means with the second synchronization flag signal output from the second synchronization means. ,
The data buffer device according to claim 1.
上記複数のバッファユニットの中から、書き込み対象のバッファユニットを指示する書き込み指示手段と、
上記複数のバッファユニットの中から、読み出し対象のバッファユニットを指示する読み出し指示手段と、
上記書き込み指示手段において指示されたバッファユニットから出力される書き込み許可信号を選択して出力する第1の選択手段と、
上記読み出し指示手段において指示されたバッファユニットから出力される読み出し許可信号を選択して出力する第2の選択手段と、
上記読み出し指示手段において指示されたバッファユニットの記憶装置に記憶されたデータを選択して出力する第3の選択手段とを有し、
上記記憶手段は、所属するバッファユニットが上記書き込み指示手段において指示されない場合にデータの書き込みを禁止し、
上記第2の信号変更手段は、所属するバッファユニットの記憶装置に記憶されたデータが上記第3の選択手段において選択されない場合に、上記第2のフラグ信号の変更を禁止する、
請求項1に記載のデータバッファ装置。The storage unit, the first flag signal holding unit, the second flag signal holding unit, the first synchronization unit, the second synchronization unit, the first signal change unit, the read permission signal A plurality of buffer units each including an output unit, the second signal change detection unit, and the write enable signal output unit;
From among the plurality of buffer units, write instructing means for instructing a buffer unit to be written,
Read instruction means for instructing a buffer unit to be read from among the plurality of buffer units;
First selecting means for selecting and outputting a write enable signal output from the buffer unit instructed by the write instructing means;
Second selecting means for selecting and outputting a read permission signal output from the buffer unit instructed by the read instructing means;
Third selection means for selecting and outputting data stored in the storage device of the buffer unit instructed by the read instruction means,
The storage means prohibits data writing when a buffer unit to which the storage unit belongs is not instructed by the write instruction means,
The second signal change means prohibits the change of the second flag signal when data stored in the storage device of the associated buffer unit is not selected by the third selection means.
The data buffer device according to claim 1.
上記読み出し指示手段は、上記初期状態において上記所定のユニットを指示し、指示したユニットの記憶手段において上記データの読み出しが行われるたびに、上記所定の順序に従って指示対象を変更し、上記所定の順序における末尾のユニットの記憶手段において上記データの読み出しが行われる場合は、上記所定の順序における先頭のユニットへ指示対象を変更する、
請求項4に記載のデータバッファ装置。The write instructing unit instructs a predetermined unit in an initial state, and changes an instruction target in accordance with a predetermined order set in the plurality of units each time the data is written in the storage unit of the instructed unit. If the data is written in the storage unit of the last unit in the predetermined order, the instruction target is changed to the first unit in the predetermined order,
The read instructing means instructs the predetermined unit in the initial state, and changes the instruction target in accordance with the predetermined order each time the data is read in the storage means of the designated unit. When the data is read out in the storage unit of the last unit in the above, the instruction target is changed to the first unit in the predetermined order,
The data buffer device according to claim 4.
上記読み出し指示手段は、指示したユニットの記憶手段において上記データの書き込みが行われるたびに、当該書き込みが行われたユニットへ指示対象を変更し、指示したユニットの記憶手段において上記データの読み出しが行われるたびに、上記所定の順序とは逆の順序に従って指示対象を変更する、
請求項4に記載のデータバッファ装置。The writing instruction means changes the instruction target in accordance with a predetermined order set in the plurality of units each time the data is written in the storage means of the instructed unit, and stores the data in the storage means of the instructed unit. Every time the reading is performed, the instruction target is changed to the unit from which the reading was performed,
Each time the data is written in the storage means of the designated unit, the read instructing means changes the instruction target to the unit in which the data was written, and the reading of the data is performed in the storage means of the designated unit. Each time the instruction target is changed according to the reverse of the above-described order,
The data buffer device according to claim 4.
初段に入力される上記第1のフラグ信号を、上記第2のクロック信号に同期して順次後段にシフトさせ、終段から上記第1の同期化信号を出力する、複数の縦続接続された信号保持手段を含み、
上記第2の同期化手段は、
初段に入力される上記第2のフラグ信号を、上記第1のクロック信号に同期して順次後段にシフトさせ、終段から上記第2の同期化信号を出力する、複数の縦続接続された信号保持手段を含む、
請求項4に記載のデータバッファ装置。The first synchronization means includes:
A plurality of cascaded signals for shifting the first flag signal input to the first stage to the subsequent stage sequentially in synchronization with the second clock signal and outputting the first synchronization signal from the last stage Including holding means,
The second synchronization means includes:
A plurality of cascade-connected signals for sequentially shifting the second flag signal input to the first stage to the subsequent stage in synchronization with the first clock signal and outputting the second synchronization signal from the last stage Including holding means,
The data buffer device according to claim 4.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003090698A JP4389459B2 (en) | 2003-03-28 | 2003-03-28 | Data buffer device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003090698A JP4389459B2 (en) | 2003-03-28 | 2003-03-28 | Data buffer device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004295819A true JP2004295819A (en) | 2004-10-21 |
JP4389459B2 JP4389459B2 (en) | 2009-12-24 |
Family
ID=33404251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003090698A Expired - Fee Related JP4389459B2 (en) | 2003-03-28 | 2003-03-28 | Data buffer device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4389459B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007108966A (en) * | 2005-10-13 | 2007-04-26 | Nec Corp | Semiconductor digital circuit, fifo buffer circuit, and data delivery method used therefor |
US7821850B2 (en) | 2005-10-13 | 2010-10-26 | Nec Corporation | Semiconductor digital circuit, FIFO buffer circuit, and data transferring method |
JP2012199656A (en) * | 2011-03-18 | 2012-10-18 | Fujitsu Semiconductor Ltd | Data transfer system, data transfer device, and data transfer method |
JP2014045423A (en) * | 2012-08-28 | 2014-03-13 | Nec Engineering Ltd | Data transfer device, data transfer method and program |
JP2021168064A (en) * | 2020-04-13 | 2021-10-21 | 富士通株式会社 | Semiconductor device and synchronization method |
-
2003
- 2003-03-28 JP JP2003090698A patent/JP4389459B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007108966A (en) * | 2005-10-13 | 2007-04-26 | Nec Corp | Semiconductor digital circuit, fifo buffer circuit, and data delivery method used therefor |
US7821850B2 (en) | 2005-10-13 | 2010-10-26 | Nec Corporation | Semiconductor digital circuit, FIFO buffer circuit, and data transferring method |
JP2012199656A (en) * | 2011-03-18 | 2012-10-18 | Fujitsu Semiconductor Ltd | Data transfer system, data transfer device, and data transfer method |
JP2014045423A (en) * | 2012-08-28 | 2014-03-13 | Nec Engineering Ltd | Data transfer device, data transfer method and program |
JP2021168064A (en) * | 2020-04-13 | 2021-10-21 | 富士通株式会社 | Semiconductor device and synchronization method |
JP7419944B2 (en) | 2020-04-13 | 2024-01-23 | 富士通株式会社 | Semiconductor device and synchronization method |
Also Published As
Publication number | Publication date |
---|---|
JP4389459B2 (en) | 2009-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6963220B2 (en) | Methods and circuitry for implementing first-in first-out structure | |
US8773928B2 (en) | Command latency systems and methods | |
US5627797A (en) | Full and empty flag generator for synchronous FIFOS | |
US6622198B2 (en) | Look-ahead, wrap-around first-in, first-out integrated (FIFO) circuit device architecture | |
KR100498473B1 (en) | Control signal generation circuit and data transmission circuit having the same | |
KR20020097145A (en) | A method and apparatus to perform a round robin and locking cache replacement scheme | |
JP2004062630A (en) | Fifo memory and semiconductor device | |
JP4389459B2 (en) | Data buffer device | |
US7609800B1 (en) | Counter of semiconductor device | |
US20090033385A1 (en) | Glitch Reduced Delay Lock Loop Circuits and Methods for Using Such | |
JP2002175687A (en) | Non-synchronous fifo circuit | |
CN111540392A (en) | Clock generation circuit and memory device including the same | |
US8363766B2 (en) | Device and method of synchronizing signals | |
US20070177698A1 (en) | Signal Transfer Across Circuits Operating in Different Clock Domains | |
Huemer et al. | Timing domain crossing using Muller pipelines | |
JP4419633B2 (en) | Logic circuit design system, logic circuit design method and program thereof | |
JP4502696B2 (en) | Clock synchronizer | |
JP4211412B2 (en) | Data buffer device | |
US7085147B2 (en) | Systems and methods for preventing malfunction of content addressable memory resulting from concurrent write and lookup operations | |
US6680990B1 (en) | Elastic integrated circuit | |
JPH10214174A (en) | Asynchronous fifo circuit | |
JP3592169B2 (en) | Asynchronous data transfer control device and asynchronous data transfer control method | |
JP2012079075A (en) | Cpu interface circuit | |
JP2001176262A (en) | Asynchronous fifo circuit | |
JP2004069961A (en) | Semiconductor integrated circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060217 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090220 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090915 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090928 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121016 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121016 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |