(57)【要約】【課題】非同期クロック信号を用いてデータの書き込みおよび読み出しを行う場合において、書き込み許可信号および読み出し許可信号にスパイクが発生することを防止できるデータバッファ装置を提供する。【解決手段】データ保持装置１＿０〜１＿７に対する書き込みおよび読み出しの許可／不許可は、ロック信号Ｌ［ｉ］およびアンロック信号Ｕ［ｉ］の状態に応じて制御される。このロック信号Ｌ［ｉ］およびアンロック信号Ｕ［ｉ］は、異なるクロック信号（ＣＫ１，ＣＫ２）で動作する回路ブロック間を跨って伝送されるが、他方のクロック系に入力される際に同期化回路３および５を経由することによって、メタステーブル状態の異常な信号を含まない、他方のクロック信号に同期化された信号（同期化ロック信号ＬＳ［ｉ］および同期化アンロック信号ＵＳ［ｉ］）へ変換される。【選択図】      図１
2004236016.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号に同期して入力データを保持し、保持したデータを第２のクロック信号に同期して出力するデータバッファ装置であって、
データ保持手段と、
上記データ保持手段へのデータの書き込みを禁止する第１の信号を保持する第１の信号保持手段と、
上記第１の信号を上記第２のクロック信号に同期した第１の同期化信号へ変換する第１の同期化手段と、
上記書き込み禁止の解除を要求する第２の信号を保持する第２の信号保持手段と、
上記第２の信号を上記第２のクロック信号に同期した第２の同期化信号へ変換する第２の同期化手段と、
上記第１の信号において上記書き込みが禁止されておらず、かつ、上記第２の同期化信号において上記書き込み禁止の解除が要求されていない場合、上記第１のクロック信号に同期して、書き込み許可信号を出力するとともに、上記データ保持手段に上記入力データを書き込む書き込み手段と、
上記第１の同期化信号において上記書き込みが禁止され、かつ、上記第２の信号において上記書き込み禁止の解除が要求されていない場合、上記第２のクロック信号に同期して、読み出し許可信号を出力するとともに、上記データ保持手段からデータを読み出す読み出し手段と、
上記第１の信号保持手段に保持された第１の信号を上記第１のクロック信号に同期して更新する第１の信号更新手段であって、上記書き込み手段においてデータの書き込みが行われた場合は上記書き込みを禁止する信号へ、上記第２の同期化信号において上記書き込み禁止の解除が要求された場合は上記書き込みを禁止しない信号へ、上記第１の信号を更新する第１の信号更新手段と、
上記第２の信号保持手段に保持された第２の信号を上記第２のクロック信号に同期して更新する第２の信号更新手段であって、上記データ保持手段においてデータの読み出しが行われた場合は上記書き込み禁止の解除を要求する信号へ、上記第１の同期化信号において上記書き込みが禁止されていない場合は上記書き込み禁止の解除を要求しない信号へ、上記第２の信号を更新する第２の信号更新手段と、
を有するデータバッファ装置。
【請求項２】
上記データ保持手段を複数有するとともに、
上記複数のデータ保持手段の中から、書き込み対象のデータ保持手段を指示する書き込み指示手段と、
上記複数のデータ保持手段の中から、読み出し対象のデータ保持手段を指示する読み出し指示手段とを有し、
上記第１の信号保持手段は、上記複数のデータ保持手段に対応する複数の上記第１の信号を保持し、
上記第１の信号同期化手段は、上記複数の第１の信号を複数の第１の同期化信号へ変換し、
上記第２の信号保持手段は、上記複数のデータ保持手段に対応する複数の上記第２の信号を保持し、
上記第２の信号同期化手段は、上記複数の第２の信号を複数の第２の同期化信号へ変換し、
上記書き込み手段は、上記書き込み指示手段に指示されたデータ保持手段に対応する上記第１の信号において上記書き込みが禁止されておらず、かつ、当該指示されたデータ保持手段に対応する上記第２の同期化信号において上記書き込み禁止の解除が要求されていない場合、上記第１のクロック信号に同期して、上記書き込み許可信号を出力するとともに、当該指示されたデータ保持手段に上記入力データを書き込み、
上記読み出し手段は、上記読み出し指示手段に指示されたデータ保持手段に対応する上記第１の同期化信号において上記書き込みが禁止され、かつ、当該指示されたデータ保持手段に対応する上記第２の信号において上記書き込み禁止の解除が要求されていない場合、上記第２のクロック信号に同期して、上記読み出し許可信号を出力するとともに、当該指示されたデータ保持手段に保持されたデータを読み出し、
上記第１の信号更新手段は、上記書き込み手段において書き込みが行われた場合、当該書き込みが行われたデータ保持手段に対応する上記第１の信号を、上記書き込みを禁止する信号へ更新し、上記第２の同期化信号において上記書き込み禁止の解除が要求されている場合、当該第２の同期化信号と同一のデータ保持手段に対応する上記第１の信号を、上記書き込みを禁止しない信号へ更新し、
上記第２の信号更新手段は、上記読み出し手段において読み出しが行われた場合、当該読み出しが行われたデータ保持手段に対応する上記第２の信号を、上記書き込み禁止の解除を要求する信号へ更新し、上記第１の同期化信号において上記書き込みが禁止されていない場合、当該第１の同期化信号と同一のデータ保持手段に対応する上記第２の信号を、上記書き込み禁止の解除を要求しない信号へ更新する、
請求項１に記載のデータバッファ装置。
【請求項３】
上記書き込み指示手段は、初期状態において所定のデータ保持手段を書き込み対象として指示し、上記書き込み手段において書き込みが行われるたびに、上記複数のデータ保持手段に設定された所定の順序にしたがって、書き込み対象を変更し、上記所定の順序における末尾のデータ保持手段に対して書き込みが行われた場合は、上記所定の順序における先頭のデータ保持手段へ書き込み対象を変更し、
上記読み出し指示手段は、上記初期状態において上記所定のデータ保持手段を読み出し対象として指示し、上記読み出し手段において読み出しが行われるたびに、上記所定の順序にしたがって読み出し対象を変更し、上記所定の順序における末尾のデータ保持手段に対して読み出しが行われた場合は、上記所定の順序における先頭のデータ保持手段へ読み出し対象を変更する、
請求項２に記載のデータバッファ装置。
【請求項４】
上記書き込み指示手段は、初期状態において所定のデータ保持手段を書き込み対象として指示し、上記書き込み手段において書き込みが行われるたびに、上記複数のデータ保持手段に設定された所定の順序にしたがって、書き込み対象を変更し、上記読み出し手段において読み出しが行われるたびに、上記所定の順序と逆の順序にしたがって、書き込み対象を変更し、
上記読み出し指示手段は、上記初期状態において上記所定のデータ保持手段を読み出し対象として指示し、上記書き込み手段において書き込みが行われるたびに、上記所定の順序にしたがって読み出し対象を変更し、上記読み出し手段において読み出しが行われるたびに、上記所定の順序と逆の順序にしたがって読み出し対象を変更する、
請求項２に記載のデータバッファ装置。
【請求項５】
上記書き込み手段は、上記書き込み許可信号を出力し、かつ、書き込み要求信号が入力される場合に、データの書き込みを行い、
上記読み出し手段は、上記読み出し許可信号を出力し、かつ、読み出し要求信号が入力される場合に、データの読み出しを行う、
請求項２に記載のデータバッファ装置。
【請求項６】
上記第１の同期化手段は、
初段に入力される上記第１の信号を、上記第２のクロック信号に同期して順次後段にシフトさせ、終段から上記第１の同期化信号を出力する、複数の縦続接続された信号保持手段を含み、
上記第２の同期化手段は、
初段に入力される上記第２の信号を、上記第１のクロック信号に同期して順次後段にシフトさせ、終段から上記第２の同期化信号を出力する、複数の縦続接続された信号保持手段を含む、
請求項１に記載のデータバッファ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行うことができるデータバッファ装置に関し、たとえば、非同期のＦＩＦＯ型データバッファ装置や、非同期のＦＩＬＯ型データバッファ装置に関するものである。
【０００２】
【従来の技術】
一般に、ＦＩＦＯ型のデータバッファ装置（以降、ＦＩＦＯと表記する）は、内部の状態を外部回路に知らせるための２つのフラグ信号を出力する。１つはフル・フラグ（ｆｕｌｌ  ｆｌａｇ）と呼ばれ、書き込みデータによって記憶領域が満杯になっている状態（以降、フル状態と表記する）を示す。他の１つはエンプティ・フラグ（ｅｍｐｔｙ  ｆｌａｇ）と呼ばれ、記憶領域の書き込みデータが全て読み出された状態（以降、エンプティ状態と表記する）を示す。
【０００３】
フル・フラグが有効な場合、データの上書きを防止するため、ＦＩＦＯに対するデータの書き込みは許可されず、フル・フラグが無効の場合に書き込みは許可される。また、エンプティ・フラグが有効の場合、読み出すべきデータが記憶領域に存在しないため、ＦＩＦＯからのデータの読み出しは許可されず、エンプティ・フラグが無効の場合に読み出しは許可される。
このように、外部回路からＦＩＦＯを見た場合、ＦＩＦＯが生成するフル／エンプティ・フラグはその状態を知るための唯一の情報であることから、ＦＩＦＯの正常な動作においてフル／エンプティ・フラグの働きは重要である。
【０００４】
通常、ＦＩＦＯの先入れ先だし動作は、データの書き込みアドレスを指す書き込みポインタＷＰ（ｗｒｉｔｅ  ｐｏｉｎｔｅｒ）と、データの書き込みアドレスを指す読み出しポインタＲＰ（ｒｅａｄ  ｐｏｉｎｔｅｒ）とを用いて制御される。上述のフル／エンプティ・フラグは、この書き込みポインタＷＰと読み出しポインタＲＰとを用いて生成される。
【０００５】
書き込みと読み出しが共通のクロック信号に同期して行われる同期ＦＩＦＯの場合、書き込みポインタＷＰおよび読み出しポインタＲＰは共通のクロック信号に同期して更新されるため、フル／エンプティ・フラグもこの共通のクロック信号に同期して生成される。
【０００６】
これに対し、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行うことができる非同期ＦＩＦＯの場合、書き込みポインタＷＰおよび読み出しポインタＲＰは異なるクロック信号に同期して更新される。すなわち、書き込みポインタＷＰおよび読み出しポインタＲＰはそれぞれ任意のタイミングで独立に更新される。このため、これらのフラグに応じて生成されるフル／エンプティ・フラグには、時間幅の狭いパルス（スパイク）が含まれる可能性がある。外部回路は、フル／エンプティ・フラグの状態を見ながらＦＩＦＯとデータの受け渡しを行うので、これらのフラグにスパイクが含まれると、データの授受に誤動作を生じる可能性がある。
【０００７】
たとえば、残り１ワードのデータでＦＩＦＯがフル状態になる場合において読み出しと書き込みが同時に実行されると、フル・フラグにスパイクが乗る可能性がある。また、有効データが１ワードだけ存在する場合において読み出しと書き込みが同時に実行されると、エンプティ・フラグにスパイクが乗る可能性がある。
【０００８】
このような非同期ＦＩＦＯにおけるフル／エンプティ・フラグのスパイクを防止する手法として、特許文献１に記載された従来技術が存在する。
特許文献１に記載された非同期ＦＩＦＯでは、ＦＩＦＯ内の有効データの有無がトークン信号によって表されており、フル／エンプティ・フラグはこのトークン信号を用いて生成される。
【０００９】
【特許文献１】
特許第３０１３８００号
【００１０】
【発明が解決しようとする課題】
しかしながら、特許文献１に記載された非同期ＦＩＦＯでは、トークン信号を伝播するための回路として、ＦＩＦＯの記憶容量（図１の例では４ワード）に相当する段数のユニット（１−１９〜１−２２）を設ける必要がある。特許文献１の図２に示すように、このユニット内を伝播するトークン信号は複数のゲート回路を通過するため、ＦＩＦＯの記憶容量に比例してユニット数が増えると、トークン信号の伝播遅延が増大する。
【００１１】
すなわち、特許文献１に記載された手法では、エンプティ状態でデータが書き込まれてから読み出し可能になるまでの遅延時間や、フル状態でデータが読み出されてから書き込み可能になるまでの遅延時間が、ＦＩＦＯの記憶容量に比例して長くなってしまう不利益が生じる。特に記憶容量の大きなＦＩＦＯでは、レイテンシの面において性能の劣化が著しくなる。
【００１２】
本発明はかかる事情に鑑みてなされたものであり、その目的は、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行う場合において、書き込み許可信号および読み出し許可信号にスパイクが発生することを防止でき、また、書き込み許可信号および読み出し許可信号の生成に要する遅延時間が記憶容量の増加にともなって長くなることを防止できるデータバッファ装置を提供することにある。
【００１３】
【課題を解決するための手段】
上記の目的を達成するため、本発明のデータバッファ装置は、第１のクロック信号に同期して入力データを保持し、保持したデータを第２のクロック信号に同期して出力するデータバッファ装置であって、データ保持手段と、上記データ保持手段へのデータの書き込みを禁止する第１の信号を保持する第１の信号保持手段と、上記第１の信号を上記第２のクロック信号に同期した第１の同期化信号へ変換する第１の同期化手段と、上記書き込み禁止の解除を要求する第２の信号を保持する第２の信号保持手段と、上記第２の信号を上記第２のクロック信号に同期した第２の同期化信号へ変換する第２の同期化手段と、上記第１の信号において上記書き込みが禁止されておらず、かつ、上記第２の同期化信号において上記書き込み禁止の解除が要求されていない場合、上記第１のクロック信号に同期して、書き込み許可信号を出力するとともに、上記データ保持手段に上記入力データを書き込む書き込み手段と、上記第１の同期化信号において上記書き込みが禁止され、かつ、上記第２の信号において上記書き込み禁止の解除が要求されていない場合、上記第２のクロック信号に同期して、読み出し許可信号を出力するとともに、上記データ保持手段からデータを読み出す読み出し手段と、上記第１の信号保持手段に保持された第１の信号を上記第１のクロック信号に同期して更新する第１の信号更新手段であって、上記書き込み手段においてデータの書き込みが行われた場合は上記書き込みを禁止する信号へ、上記第２の同期化信号において上記書き込み禁止の解除が要求された場合は上記書き込みを禁止しない信号へ、上記第１の信号を更新する第１の信号更新手段と、上記第２の信号保持手段に保持された第２の信号を上記第２のクロック信号に同期して更新する第２の信号更新手段であって、上記データ保持手段においてデータの読み出しが行われた場合は上記書き込み禁止の解除を要求する信号へ、上記第１の同期化信号において上記書き込みが禁止されていない場合は上記書き込み禁止の解除を要求しない信号へ、上記第２の信号を更新する第２の信号更新手段とを有する。
【００１４】
本発明のデータバッファ装置によれば、上記第１の信号保持手段において、上記データ保持手段へのデータの書き込みを禁止する第１の信号が保持され、この第１の信号は、上記第１の同期化手段において、上記第２のクロック信号に同期した第１の同期化信号へ変換される。また、上記第２の信号保持手段において、上記書き込み禁止の解除を要求する第２の信号が保持され、この第２の信号は、上記第２の同期化手段において、上記第２のクロック信号に同期した第２の同期化信号へ変換される。
上記第１の信号において上記書き込みが禁止されておらず、かつ、上記第２の同期化信号において上記書き込み禁止の解除が要求されていない場合、上記書き込み手段において、上記第１のクロック信号に同期して、上記書き込み許可信号が出力されるとともに、上記データ保持手段に上記入力データが書き込まれる。上記第１の同期化信号において上記書き込みが禁止され、かつ、上記第２の信号において上記書き込み禁止の解除が要求されていない場合、上記データ読み出し手段において、上記第２のクロック信号に同期して、上記読み出し許可信号が出力されるとともに、上記データ保持手段からデータが読み出される。
上記第１の信号更新手段では、上記第１の信号保持手段に保持された第１の信号が上記第１のクロック信号に同期して更新される。すなわち、上記書き込み手段においてデータの書き込みが行われた場合は上記書き込みを禁止する信号へ、上記第２の同期化信号において上記書き込み禁止の解除が要求された場合は上記書き込みを禁止しない信号へ、上記第１のクロック信号に同期して、上記第１の信号が更新される。
上記第２の信号更新手段では、上記第２の信号保持手段に保持された第２の信号が上記第２のクロック信号に同期して更新される。すなわち、上記データ保持手段においてデータの読み出しが行われた場合は上記書き込み禁止の解除を要求する信号へ、上記第１の同期化信号において上記書き込みが禁止されていない場合は上記書き込み禁止の解除を要求しない信号へ、上記第２のクロック信号に同期して、上記第２の信号が更新される。
【００１５】
【発明の実施の形態】
図１は、本発明の実施形態に係るデータバッファ装置の構成の一例を示すブロック図である。
図１に示すデータバッファ装置は、データ保持部１＿０〜１＿７と、ロック信号保持部２と、ロック信号同期化部３と、アンロック信号保持部４と、アンロック信号同期化部５と、書き込み指示部６と、書き込みイネーブル信号生成部７と、制御部８と、読み出し指示部９と、読み出しセレクタ１０と、制御部１１とを有する。
データ保持部１＿０〜１＿７は、本発明のデータ保持手段の一実施形態である。
ロック信号保持部２は、本発明の第１の信号保持手段の一実施形態である。
ロック信号同期化部３は、本発明の第１の同期化手段の一実施形態である。
アンロック信号保持部４は、本発明の第２の信号保持手段の一実施形態である。
アンロック信号同期化部５は、本発明の第２の同期化手段の一実施形態である。
書き込み指示部６は、本発明の書き込み指示手段の一実施形態である。
読み出し指示部９は、本発明の読み出し指示手段の一実施形態である。
【００１６】
なお、図１において、斜線が描かれていない構成要素（データ保持部１＿０〜１＿７、ロック信号保持部２、アンロック信号同期化部５、書き込み指示部６、書き込みイネーブル信号生成部７、制御部８）は、第１のクロック信号ＣＫ１に同期して動作する。
斜線が描かれた構成要素（ロック信号同期化部３、アンロック信号保持部４、読み出し指示部９、読み出しセレクタ１０、制御部１１）は、第２のクロック信号ＣＫ２に同期して動作する。
【００１７】
（データ保持部１＿０〜１＿７）
データ保持部１＿ｉ（ｉは０〜７の整数を示す）は、書き込みイネーブル信号ＷＥ［ｉ］が‘１’の場合に、第１のクロック信号ＣＫ１に同期して、１ワード分の入力データＤＩＮを保持する。
図１の例では、データ保持部１＿０〜１＿７によって最大で８ワードのデータを保持することができる。
【００１８】
（ロック信号保持部２）
ロック信号保持部２は、データ保持部１＿０〜１＿７に対するデータの書き込みを禁止するロック（ｌｏｃｋ）信号Ｌ［０］〜Ｌ［７］を保持する。
ロック信号Ｌ［ｉ］が‘１’の場合、データ保持部１＿ｉに対する書き込みが禁止され、保持されたデータの上書きが防止される。
【００１９】
（ロック信号同期化部３）
ロック信号同期化部３は、ロック信号保持部２に保持されたロック信号Ｌ［０］〜Ｌ［７］を、第２のクロック信号ＣＫ２に同期した同期化ロック信号ＬＳ［０］〜ＬＳ［７］へ変換する。
後述するように、ロック信号Ｌ［０］〜Ｌ［７］は、ロック信号更新部８１において第１のクロック信号ＣＫ１に同期して更新される。このため、ロック信号Ｌ［０］〜Ｌ［７］は、第２のクロック信号ＣＫ２に同期していない可能性がある。第２のクロック信号ＣＫ２に同期して動作する制御部１１では、こうしたロック信号Ｌ［０］〜Ｌ［７］の代わりに、ロック信号同期化部３において第２のクロック信号ＣＫ２に同期化された信号ＬＳ［０］〜ＬＳ［７］が用いられる。
【００２０】
図２は、ロック信号同期化部３に含まれる同期化回路の構成の一例を示すブロック図である。
図２示す同期化回路は、縦続接続された２段のフリップフロップＦＦ１およびＦＦ２を有する。フリップフロップＦＦ１およびＦＦ２は、第２のクロック信号ＣＫ２の立ち上がりに同期して、入力信号を保持する。フリップフロップＦＦ１に入力された信号は、第２のクロック信号ＣＫ２の２サイクル分の遅延を経て、フリップフロップＦＦ２から出力される。
ロック信号同期化部３は、たとえば図２示すような同期化回路を、８つのロック信号に対応してそれぞれ備える。８つの同期化回路における初段のフリップフロップＦＦ１にはロック信号Ｌ［０］〜Ｌ［７］が入力され、終段のフリップフロップＦＦ２からは同期化ロック信号ＬＳ［０］〜ＬＳ［７］が出力される。
【００２１】
図２に示す同期化回路は、一般にダブルラッチ回路と呼ばれており、フリップフロップのメタステーブル状態における異常な信号が出力へ伝播することを防止する目的で、さまざまな回路に広く用いられている。メタステーブル状態は、入力信号のラッチのタイミングと入力信号のレベル変化のタイミングとが近接した場合において、フリップフロップの出力信号レベルが一時的に  ‘０’と‘１’の中間的なレベルになる状態を指す。
【００２２】
フリップフロップＦＦ１の入力信号変化とクロック信号の立ち上がりとが近接し、フリップフロップＦＦ１がメタステーブル状態になると、フリップフロップＦＦ２の入力信号は  ‘０’と‘１’の中間的なレベルになる。しかしながら、このメタステーブル状態の持続期間がクロック信号の１周期よりも十分短ければ、次のサイクルにおけるクロック信号の立ち上がり時点においてフリップフロップＦＦ２の入力信号は安定状態となり、フリップフロップＦＦ２はメタステーブル状態にならない。
このように、図２に示す同期化回路を用いることによって、任意の入力信号を所望のクロック信号に同期した信号へ変換することができるとともに、変換後の信号にメタステーブル状態が生じることを防止できる。
【００２３】
（アンロック信号保持部４）
アンロック信号保持部４は、ロック信号Ｌ［０］〜Ｌ［７］による書き込み禁止の解除を要求するアンロック（ｕｎｌｏｃｋ）信号Ｕ［０］〜Ｕ［７］を保持する。アンロック信号Ｕ［ｉ］が‘１’の場合、ロック信号Ｌ［ｉ］によるデータ保持部１＿ｉの書き込み禁止の解除が要求される。この解除要求が発せられている間は、データ保持部１＿ｉに対するデータの書き込みおよび読み出しがともに禁止される。
【００２４】
（アンロック信号同期化部５）
アンロック信号同期化部５は、アンロック信号保持部４に保持されたアンロック信号Ｕ［０］〜Ｕ［７］を、第１のクロック信号ＣＫ１に同期した同期化アンロック信号ＵＳ［０］〜ＵＳ［７］へ変換する。
後述するように、アンロック信号Ｕ［０］〜Ｕ［７］は、アンロック信号更新部１１１において第２のクロック信号ＣＫ２に同期して更新される。このため、アンロック信号Ｕ［０］〜Ｕ［７］は、第１のクロック信号ＣＫ１に同期していない可能性がある。第１のクロック信号ＣＫ１に同期して動作する制御部８においては、こうしたアンロック信号Ｕ［０］〜Ｕ［７］の代わりに、アンロック信号同期化部５において第１のクロック信号ＣＫ１と同期化された信号ＵＳ［０］〜ＵＳ［７］が用いられる。
【００２５】
なお、アンロック信号同期化部５についても、ロック信号同期化部３と同様に、図２示すような同期化回路を８つ用いて実現することができる。この場合、８つの同期化回路における初段のフリップフロップＦＦ１にはアンロック信号Ｕ［０］〜Ｕ［７］が入力され、終段のフリップフロップＦＦ２からは同期化アンロック信号ＵＳ［０］〜ＵＳ［７］が出力される。また、フリップフロップＦＦ１およびＦＦ２には、クロック信号として、第１のクロック信号ＣＫ１が入力される。
【００２６】
（書き込み指示部６、読み出し指示部９）
書き込み指示部６は、８つのデータ保持部１＿０〜１＿７の中から、書き込み対象のデータ保持部を指示する書き込みポインタＷＰを出力する。書き込みポインタＷＰの値は、データ保持部１＿ｉを指示する場合において、‘ｉ’になる。読み出し指示部９は、８つのデータ保持部１＿０〜１＿７の中から、読み出し対象のデータ保持部を指示する読み出しポインタＲＰを出力する。読み出しポインタＲＰの値は、データ保持部１＿ｉを指示する場合において、‘ｉ’になる。
【００２７】
書き込み指示部６における書き込み対象の指示動作、ならびに、読み出し指示部９における読み出し対象の指示動作は、データバッファ装置におけるバッファリング方式に応じて異なる。ここでは一例として、図１に示すデータバッファ装置がＦＩＦＯとして動作するものとする。
【００２８】
この場合、書き込み指示部６および読み出し指示部９は、初期状態において、所定のデータ保持部を書き込み対象および読み出し対象として共通に指示する。書き込み指示部６は、データ保持部１＿０〜１＿７の何れかに入力データが書き込まれると、そのたびに、データ保持部１＿０〜１＿７に設定された所定の順序にしたがって、書き込み対象を変更する。ただし、この順序における末尾のデータ保持部に対して書き込みが行われた場合は、この順序における先頭のデータ保持部へ読み出し対象を変更する。
同様に、読み出し指示部９は、データ保持部１＿０〜１＿７の何れかからデータが読み出されると、そのたびに、書き込み指示部６と同じ順序にしたがって、読み出し対象を変更する。この順序における末尾のデータ保持部に対して読み出しが行われた場合は、この順序における先頭のデータ保持部へ読み出し対象を変更する。
【００２９】
たとえば、初期状態において、書き込み指示部６および読み出し指示部９は、書き込みポインタＷＰおよび読み出しポインタＲＰを‘０’に設定する。これにより、書き込み対象および読み出し対象として、データ保持部１＿０を共通に指示する。
データ保持部１＿０〜１＿７の何れかに入力データが書き込まれると、そのたびに、書き込み指示部６は、書き込みポインタＷＰの値をたとえば‘０’，‘１’，…，‘７’の順序にしたがって変更する。これにより、データ保持部１＿０，１＿１，…，１＿７の順序で書き込み対象が変更される。書き込みポインタＷＰがこの順序の末尾、すなわち‘７’になり、データ保持部１＿７に対する書き込みが行われると、書き込み指示部６は、書き込みポインタＷＰの値をこの順序の先頭、すなわち‘０’に再び戻し、次の書き込み対象としてデータ保持部１＿０を指示する。
同様に、データ保持部１＿０〜１＿７の何れかからデータが読み出されると、そのたびに、読み出し指示部９は読み出しポインタＲＰの値を‘０’，‘１’，…，‘７’の順序にしたがって変更する。これにより、データ保持部１＿０，１＿１，…，１＿７の順序で読み出し対象が変更される。読み出しポインタＲＰが‘７’になり、データ保持部１＿７に対する読み出しが行われると、読み出し指示部９は、読み出しポインタＲＰを‘０’に再び戻し、次の読み出し対象としてデータ保持部１＿０を指示する。
【００３０】
上述した書き込みポインタＷＰおよび読み出しポインタＲＰは、書き込み指示部６および読み出し指示部９に３ビットのカウンタを用いることによって、その計数値として容易に生成することができる。
たとえば、初期状態においてカウンタにリセット信号を与えて、書き込み指示部６および読み出し指示部９におけるカウンタの計数値を何れも‘０’に初期化する。書き込み指示部６のカウンタはデータ保持部１＿０〜１＿７に対する書き込みが行われるたびに、読み出し指示部９のカウンタはデータ保持部１＿０〜１＿７に対する読み出しが行われるたびに、計数値を‘１’ずつインクリメントする。これらのカウンタは、計数値が‘７’に達したところで、これを再び‘０’に戻し、同様なインクリメントを繰り返す。
【００３１】
なお、書き込み指示部６は、データ保持部１＿０〜１＿７に対する書き込み処理の有無を、後述する書き込み要求信号ＷＩおよび書き込み許可信号ＷＯの状態に基づいて検出する。すなわち、書き込み要求信号ＷＩおよび書き込み許可信号ＷＯがともに‘１’の場合、第１のクロック信号ＣＫ１に同期してデータ保持部１＿０〜１＿７に対する書き込みが行われる。書き込み指示部６は、たとえばこの書き込みと同じタイミングで、書き込みポインタＷＰの値を変更する。
【００３２】
同様に、読み出し指示部９は、データ保持部１＿０〜１＿７に対する読み出し処理の有無を、後述する読み出し要求信号ＲＩおよび読み出し許可信号ＲＯの状態に基づいて検出する。すなわち、読み出し要求信号ＲＩおよび読み出し許可信号ＲＯがともに‘１’の場合、第２のクロック信号ＣＫ２に同期してデータ保持部１＿０〜１＿７に対する読み出しが行われる。読み出し指示部９は、たとえばこの読み出しと同じタイミングで、読み出しポインタＲＰの値を変更する。
【００３３】
（書き込みイネーブル信号生成部７）
書き込みイネーブル信号生成部７は、書き込み要求信号ＷＩおよび書き込み許可信号ＷＯがともに‘１’の場合、書き込みポインタＷＰが指示するデータ保持部に対して‘１’の書き込みイネーブル信号ＷＥ［ＷＰ］を生成する。これにより、書き込みポインタＷＰが指示するデータ保持部に、第１のクロック信号ＣＫ１に同期して、入力データＤＩＮを書き込む。
【００３４】
なお、書き込み要求信号ＷＩは、データバッファ装置に対してデータの書き込みを要求する信号である。
書き込み許可信号ＷＯは、データバッファ装置に対する書き込みの許可／不許可を示す信号であり、後述する書き込み許可信号生成部８２において生成される。
書き込み要求信号ＷＩおよび書き込み許可信号ＷＯがともに‘１’の場合に、第１のクロック信号ＣＫ１に同期して、書き込みポインタＷＰが指示するデータ保持部に対する入力データＤＩＮの書き込みが行われる。
【００３５】
図３は、書き込みイネーブル信号生成部７の構成の一例を示すブロック図である。
図３の例に示す書き込みイネーブル信号生成部７は、コンパレータ７１＿０〜７１＿７と、ＡＮＤ回路７２＿０〜７２＿７と、ＡＮＤ回路７３とを有する。
ＡＮＤ回路７３は、書き込み要求信号ＷＩおよび書き込み許可信号ＷＯを入力し、その論理積を出力する。
コンパレータ７１＿ｉは、書き込みポインタＷＰと値‘ｉ’とを比較し、両者が一致する場合に‘１’、不一致の場合に‘０’の信号を出力する。
ＡＮＤ回路７２＿ｉは、コンパレータ７１＿ｉの出力信号とＡＮＤ回路７３の出力信号とを入力し、その論理積を書き込みイネーブル信号ＷＥ［ｉ］として出力する。
【００３６】
図３に示すイネーブル信号生成部７によれば、コンパレータ７１＿０〜７１＿７のうち、書き込みポインタＷＰに対応した１つのコンパレータの出力信号が‘１’となり、他のコンパレータの出力信号は‘０’になる。これにより、書き込み要求信号ＷＩおよび書き込み許可信号ＷＯがともに‘１’の場合、書き込みポインタＷＰに対応したイネーブル信号ＷＥ［ＷＰ］が‘１’になり、他のイネーブル信号が‘０’になる。
【００３７】
（制御部８）
制御部８は、データ保持部１＿０〜１＿７へのデータの書き込みに関する制御、および、ロック信号保持部２に保持されたロック信号の制御を行うユニットであり、次に述べるロック信号更新部８１および書き込み許可信号生成部８２を含む。
なお、ロック信号更新部８１は、本発明の第１の信号更新手段の一実施形態である。
書き込み許可信号生成部８２と、上述した書き込みイネーブル信号生成部７とを含むユニットは、本発明の書き込み手段の一実施形態である。
【００３８】
（ロック信号更新部８１）
ロック信号更新部８１は、ロック信号保持部２に保持されたロック信号を、第１のクロック信号ＣＫ１に同期して‘１’または‘０’に更新する処理を行う。
【００３９】
／／ロック信号：‘１’への更新／／
データ保持部１＿ｉに対する書き込みが行われた場合、この書き込みが行われたデータ保持部１＿ｉに対応するロック信号Ｌ［ｉ］を、第１のクロック信号ＣＫ１に同期して、‘１’（書き込み禁止状態）に更新する。
【００４０】
／／ロック信号：‘０’への更新／／
同期化アンロック信号ＵＳ［ｉ］が‘１’（書き込み禁止の解除を要求する状態）の場合、この同期化アンロック信号ＵＳ［ｉ］と同一のデータ保持手段１＿ｉに対応するロック信号Ｌ［ｉ］を、第１のクロック信号ＣＫ１に同期して、‘０’（書き込み禁止を解除した状態）に更新する。
【００４１】
図４は、ロック信号更新部８１の構成の一例を示すブロック図である。
図４の例に示すロック信号更新部８１は、セレクタ８１＿０＿１〜８１＿７＿１と、セレクタ８１＿０＿２〜８１＿７＿２とを有する。
【００４２】
セレクタ８１＿ｉ＿１は、選択対象として、ロック信号Ｌ［ｉ］と、値‘０’の信号ＶＬとを入力し、制御信号として、同期化アンロック信号ＵＳ［ｉ］を入力する。同期化アンロック信号ＵＳ［ｉ］が‘０’の場合、ロック信号Ｌ［ｉ］を選択して出力し、同期化アンロック信号ＵＳ［ｉ］が‘１’の場合、‘０’の信号ＶＬを選択して出力する。
セレクタ８１＿ｉ＿２は、選択対象として、セレクタ８１＿ｉ＿１の出力信号と、値‘１’の信号ＶＨとを入力し、制御信号として、書き込みイネーブル信号ＷＥ［ｉ］を入力する。書き込みイネーブル信号ＷＥ［ｉ］が‘０’の場合、セレクタ８１＿ｉ＿１の出力信号を選択して出力し、書き込みイネーブル信号ＷＥ［ｉ］が‘１’の場合、‘１’の信号ＶＨを選択して出力する。
【００４３】
セレクタ８１＿ｉ＿２の出力信号ｎＬ［ｉ］は、ロック信号保持部２に入力される。この信号ｎＬ［ｉ］を、第１のクロック信号ＣＫ１に同期してロック信号保持部２に保持させた結果が、ロック信号Ｌ［ｉ］に相当する。
【００４４】
図４に示すロック信号更新部８１によれば、書き込みイネーブル信号ＷＥ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が‘０’の場合、ロック信号Ｌ［ｉ］がそのまま信号ｎＬ［ｉ］としてロック信号保持部２に入力される。したがって、ロック信号Ｌ［ｉ］は同一値に保持される。
書き込みイネーブル信号ＷＥ［ｉ］が‘１’の場合、‘１’の信号ＶＨがロック信号保持部２に入力される。したがって、ロック信号Ｌ［ｉ］は‘１’に更新される。
書き込みイネーブル信号ＷＥ［ｉ］が‘０’で同期化アンロック信号ＵＳ［ｉ］が‘１’の場合、‘０’の信号ＶＬがロック信号保持部２に入力される。したがって、ロック信号Ｌ［ｉ］は‘０’に更新される。
【００４５】
（書き込み許可信号生成部８２）
書き込み許可信号生成部８２は、書き込みポインタＷＰにおいて指示されたデータ保持部に対応するロック信号Ｌ［ＷＰ］が‘０’（書き込みが禁止されていない状態）であり、かつ、この書き込みポインタＷＰにおいて指示されたデータ保持部に対応する同期化アンロック信号Ｌ［ＷＰ］が‘０’（書き込み禁止の解除要求を発していない状態）の場合、第１のクロック信号ＣＫ１に同期して、書き込み許可信号ＷＯを‘１’に設定する。その他の場合は、書き込み許可信号ＷＯを‘０’に設定する。
【００４６】
図５は、書き込み許可信号生成部８２の構成の一例を示すブロック図である。図５の例に示す書き込み許可信号生成部８２は、セレクタ８２＿１と、インバータ８２＿２および８２＿３と、ＡＮＤ回路８２＿４とを有する。
【００４７】
セレクタ８２＿１は、選択対象として同期化アンロック信号ＵＳ［０］〜ＵＳ［７］を入力し、これらの信号の中から、書き込みポインタＷＰに応じた１つの同期化アンロック信号ＵＳ［ＷＰ］を選択する。また、選択対象としてロック信号Ｌ［０］〜Ｌ［７］を入力し、これらの信号の中から、書き込みポインタＷＰに応じた１つのロック信号Ｌ［ＷＰ］を選択する。
インバータ８２＿２は、セレクタ８２＿１において選択された同期化アンロック信号ＵＳ［ＷＰ］の論理を反転する。
インバータ８２＿３は、セレクタ８２＿１において選択されたロック信号Ｌ［ＷＰ］の論理を反転する。
ＡＮＤ回路８２＿２は、インバータ８２＿２および８２＿３の出力信号の論理積を書き込み許可信号ＷＯとして出力する。
【００４８】
図５に示す書き込み許可信号生成部８２によれば、セレクタ８２＿１において、書き込みポインタＷＰに応じたロック信号Ｌ［ＷＰ］および同期化アンロック信号ＵＳ［ＷＰ］が選択される。これらの信号がともに‘０’の場合、書き込み許可信号ＷＯは‘１’となり、その他の場合は‘０’となる。
【００４９】
なお、ロック信号Ｌ［０］〜Ｌ［７］、同期化アンロック信号ＵＳ［０］〜ＵＳ［７］および書き込みポインタＷＰは何れも第１のクロック信号ＣＫ１に同期した信号であるため、これらの信号から生成される書き込み許可信号ＷＯも、第１のクロック信号ＣＫ１に同期した信号となる。
【００５０】
（読み出しセレクタ１０）
読み出しセレクタ１０は、選択対象としてデータ保持部１＿０〜１＿７に保持されたデータＲＤ［０］〜ＲＤ［７］を入力し、これらのデータの中から読み出しポインタＲＰに応じて１つのデータを選択し、読み出しデータＤＯＵＴとして出力する。
【００５１】
図６は、読み出しセレクタ１０の構成の一例を示すブロック図である。
図６の例に示す読み出しセレクタ１０は、セレクタ１０＿１〜１０＿７を有する。
【００５２】
セレクタ１０＿１は、選択対象として保持データＲＤ［０］およびＲＤ［１］を入力する。
セレクタ１０＿２は、選択対象として保持データＲＤ［２］およびＲＤ［３］を入力する。
セレクタ１０＿３は、選択対象として保持データＲＤ［４］およびＲＤ［５］を入力する。
セレクタ１０＿４は、選択対象として保持データＲＤ［６］およびＲＤ［７］を入力する。
さらに、セレクタ１０＿１〜１０＿４は、制御信号として、読み出しポインタＲＰの最下位ビット信号を入力する。
最下位ビット信号が‘０’の場合、セレクタ１０＿１〜１０＿４は、保持データＲＤ［０］，ＲＤ［２］，ＲＤ［４］、ＲＤ［６］を選択して出力し、最下位ビット信号が‘１’の場合、保持データＲＤ［１］，ＲＤ［３］，ＲＤ［５］およびＲＤ［７］を選択して出力する。
【００５３】
セレクタ１０＿５は、選択対象として、セレクタ１０＿１および１０＿２の出力信号を入力する。
セレクタ１０＿６は、選択対象として、セレクタ１０＿３および１０＿４の出力信号を入力する。
さらに、セレクタ１０＿５および１０＿６は、制御信号として、読み出しポインタＲＰの最下位から２番目のビット信号を入力する。
第２ビット信号が‘０’の場合、セレクタ１０＿５および１０＿６は、セレクタ１０＿１および１０＿３の出力信号を選択して出力し、第２ビット信号が‘１’の場合、セレクタ１０＿２および１０＿４の出力信号を選択して出力する。
【００５４】
セレクタ１０＿７は、選択対象として、セレクタ１０＿５および１０＿６の出力信号を入力し、制御信号として、読み出しポインタＲＰの最上位ビット信号を入力する。最上位ビット信号が‘０’の場合、セレクタ１０＿５の出力信号を選択して出力し、最上位ビット信号が‘１’の場合、セレクタ１０＿６の出力信号を選択して出力する。
【００５５】
図６に示す読み出しセレクタ１０によれば、セレクタ１０＿１〜１０＿４において、現在の読み出しポインタＲＰと等しい最下位ビットを有した読み出しポインタで指示されるデータ保持部の保持データが選択される。セレクタ１０＿５および１０＿６では、セレクタ１０＿１〜１０＿４で選択された保持データの中から、現在の読み出しポインタＲＰと等しい第２ビットを有した読み出しポインタで指示されるデータ保持部の保持データが選択される。さらにセレクタ１０＿７では、セレクタ１０＿５および１０＿６で選択された保持データの中から、現在の読み出しポインタＲＰと等しい最上位ビットを有した読み出しポインタで指示されるデータ保持部の保持データが選択される。
結果として、現在の読み出しポインタＲＰと全ビットが等しい読み出しポインタで指示されるデータ保持部の保持データが、読み出しデータＤＯＵＴとして選択される。
【００５６】
なお、読み出しポインタＲＰが第２のクロック信号ＣＫ２に同期していることから、読み出しセレクタ１０における読み出しデータＤＯＵＴの選択と出力も、第２のクロック信号ＣＫ２に同期して行われる。
【００５７】
（制御部１１）
制御部１１は、データ保持部１＿０〜１＿７からのデータの読み出しに関する制御、および、アンロック信号保持部４に保持されたアンロック信号の制御を行うユニットであり、次に述べるアンロック信号更新部１１１および読み出し許可信号生成部１１２を含む。
なお、アンロック信号更新部１１１は、本発明の第２の信号更新手段の一実施形態である。
読み出し許可信号生成部１１２と、上述した読み出しセレクタ１０とを含むユニットは、本発明の読み出し手段の一実施形態である。
【００５８】
（アンロック信号更新部１１１）
アンロック信号更新部１１１は、アンロック信号保持部４に保持されたアンロック信号を、第２のクロック信号ＣＫ２に同期して‘１’または‘０’に更新する処理を行う。
【００５９】
／／アンロック信号：‘１’への更新／／
読み出し要求信号ＲＩおよび読み出し許可信号ＲＯがともに‘１’の場合、アンロック信号更新部１１１は、第２のクロック信号ＣＫ２に同期して、読み出しポインタＲＰが指示するデータ保持部１＿ｉに対応したアンロック信号Ｕ［ｉ］を‘１’（書き込み禁止の解除を要求する状態）に更新する。
【００６０】
なお、読み出し要求信号ＲＩは、データバッファ装置に対してデータの読み出しを要求する信号である。
読み出し許可信号ＲＯは、データバッファ装置に対する読み出しの許可／不許可を示す信号であり、読み出し許可信号生成部１１２において生成される。
この読み出し要求信号ＲＩおよび読み出し許可信号ＲＯがともに‘１’の場合、読み出し要求に応じたデータが読み出しデータＤＯＵＴとして出力される。
【００６１】
したがって、アンロック信号更新部１１１は、データの読み出しが行われた場合に、第２のクロック信号ＣＫ２に同期して、読み出しポインタＲＰが指示するデータ保持部１＿ｉに対応したアンロック信号Ｕ［ｉ］を‘１’（書き込み禁止の解除を要求する状態）に更新する。
【００６２】
／／アンロック信号：‘０’への更新／／
同期化ロック信号ＬＳ［ｉ］が‘０’（書き込み禁止を解除した状態）の場合、アンロック更新部１１１は、この同期化ロック信号ＬＳ［ｉ］と同一のデータ保持手段１＿ｉに対応するアンロック信号Ｕ［ｉ］を、第２のクロック信号ＣＫ２に同期して、‘０’（書き込み禁止の解除要求を発していない状態）に更新する。
【００６３】
図７は、アンロック信号更新部１１１の構成の一例を示すブロック図である。図７の例に示すロック信号更新部１１１は、コンパレータ１１１＿０＿１〜１１＿７＿１と、ＡＮＤ回路１１１＿０＿２〜１１１＿７＿２と、セレクタ１１１＿０＿３〜１１１＿７＿３と、セレクタ１１１＿０＿４〜１１１＿７＿４と、インバータ１１１＿０＿５〜１１１＿７＿５と、ＡＮＤ回路１１１＿５とを有する。
【００６４】
ＡＮＤ回路１１１＿５は、読み出し要求信号ＲＩおよび読み出し許可信号ＷＯを入力し、その論理積を出力する。
コンパレータ１１１＿ｉ＿１は、読み出しポインタＲＰと値‘ｉ’とを比較し、両者が一致する場合に‘１’、不一致の場合に‘０’の信号を出力する。
ＡＮＤ回路１１１＿ｉ＿２は、コンパレータ１１１＿ｉ＿１の出力信号とＡＮＤ回路１１１＿５の出力信号とを入力し、その論理積を出力する。
【００６５】
インバータ１１１＿ｉ＿５は、同期化ロック信号ＬＳ［ｉ］を入力し、その論理を反転する。
セレクタ１１１＿ｉ＿３は、選択対象として、アンロック信号Ｕ［ｉ］と、値‘０’の信号ＶＬとを入力し、制御信号として、インバータ１１１＿ｉ＿５で論理反転された同期化ロック信号ＬＳ［ｉ］を入力する。同期化ロック信号ＬＳ［ｉ］が‘１’の場合、アンロック信号Ｌ［ｉ］を選択して出力し、同期化ロック信号ＬＳ［ｉ］が‘０’の場合、‘０’の信号ＶＬを選択して出力する。
セレクタ１１１＿ｉ＿４は、選択対象として、セレクタ１１１＿ｉ＿３の出力信号と、値‘１’の信号ＶＨとを入力し、制御信号として、ＡＮＤ回路１１１＿ｉ＿２の出力信号を入力する。ＡＮＤ回路１１１＿ｉ＿２の出力信号が‘０’の場合、セレクタ１１１＿ｉ＿３の出力信号を選択して出力し、ＡＮＤ回路１１１＿ｉ＿２の出力信号が‘１’の場合、‘１’の信号ＶＨを選択して出力する。
【００６６】
セレクタ１１１＿ｉ＿４の出力信号ｎＵ［ｉ］は、アンロック信号保持部４に入力される。この信号ｎＵ［ｉ］を、第２のクロック信号ＣＫ２に同期してアンロック信号保持部４に保持させた結果が、アンロック信号Ｌ［ｉ］に相当する。
【００６７】
図７に示すアンロック信号更新部１１１によれば、コンパレータ１１１＿０＿１〜１１１＿７＿１のうち、読み出しポインタＲＰに対応した１つのコンパレータの出力信号が‘１’となり、他のコンパレータの出力信号は‘０’になる。
【００６８】
読み出し要求信号ＲＩおよび読み出し許可信号ＲＯがともに‘１’になると、読み出しポインタＲＰに対応したＡＮＤ回路１１１＿ｉ＿２（ｉ＝ＲＰ）の出力信号が‘１’になり、この出力信号を受けて、セレクタ１１１＿ｉ＿４から‘１’の信号ｎＵ［ｉ］が出力される。これにより、第２のクロック信号ＣＫ２に同期して、読み出しポインタＲＰに対応したアンロック信号Ｕ［ＲＰ］が‘１’に更新される。
【００６９】
読み出し要求信号ＲＩおよび読み出し許可信号ＲＯの何れか‘０’になると、ＡＮＤ回路１１１＿０＿２〜１１１＿０＿２の出力信号は全て‘０’になり、セレクタ１１１＿０＿４〜１１１＿７＿４はセレクタ１１１＿０＿３〜１１１＿７＿３の出力信号を選択する。
この状態で、同期化ロック信号ＬＳ［ｉ］が‘０’になると、セレクタ１１１＿ｉ＿３において‘０’の信号ＶＬが選択される。これにより、アンロック信号Ｕ［ｉ］が‘０’に更新される。
またこの状態で、同期化ロック信号ＬＳ［ｉ］が‘１’になると、セレクタ１１１＿ｉ＿３においてアンロック信号Ｕ［ｉ］が選択され、これがそのまま信号ｎＵ［ｉ］としてアンロック信号保持部４に入力される。これにより、アンロック信号Ｕ［ｉ］は同一値に保持される。
【００７０】
（読み出し信号生成部１１２）
読み出し信号生成部１１２は、読み出しポインタＲＰにおいて指示されたデータ保持部に対応する同期化ロック信号ＬＳ［ＲＰ］が‘１’（書き込み禁止状態）であり、かつ、この読み出しポインタＲＰにおいて指示されたデータ保持部に対応するアンロック信号Ｕ［ＲＰ］が‘０’（書き込み禁止の解除要求が発せられていない状態）の場合、第２のクロック信号ＣＫ２に同期して、読み出し許可信号ＲＯを‘１’に設定する。その他の場合は、読み出し許可信号ＲＯを‘０’に設定する。
【００７１】
図８は、読み出し許可信号生成部１１２の構成の一例を示すブロック図である。
図８の例に示す読み出し許可信号生成部１１２は、セレクタ１１２＿１と、インバータ１１２＿２と、ＡＮＤ回路１１２＿３とを有する。
【００７２】
セレクタ１１２＿１は、選択対象として同期化ロック信号ＬＳ［０］〜ＬＳ［７］を入力し、これらの信号の中から、読み出しポインタＲＰに応じた１つの同期化ロック信号ＬＳ［ＲＰ］を選択する。また、選択対象としてアンロック信号Ｕ［０］〜Ｕ［７］を入力し、これらの信号の中から、読み出しポインタＲＰに応じた１つのアンロック信号Ｕ［ＲＰ］を選択する。
インバータ１１２＿２は、セレクタ１１２＿１において選択されたアンロック信号Ｕ［ＲＰ］の論理を反転する。
ＡＮＤ回路１１２＿３は、セレクタ１１２＿１において選択された同期化ロック信号ＬＳ［ＲＰ］と、インバータ１１２＿２において論理反転されたアンロック信号Ｕ［ＲＰ］とを入力し、これらの論理積を読み出し許可信号ＲＯとして出力する。
【００７３】
図８に示す読み出し許可信号生成部１１２によれば、セレクタ１１２＿１において、読み出しポインタＲＰに応じた同期化ロック信号ＬＳ［ＲＰ］およびアンロック信号Ｕ［ＲＰ］が選択される。同期化ロック信号ＬＳ［ＲＰ］が‘１’でアンロック信号Ｕ［ＲＰ］が‘０’の場合、読み出し許可信号ＲＯは‘１’となり、その他の場合は‘０’となる。
【００７４】
なお、同期化ロック信号ＬＳ［０］〜ＬＳ［７］、アンロック信号Ｕ［０］〜Ｕ［７］および読み出しポインタＲＰは何れも第２のクロック信号ＣＫ２に同期した信号であるため、これらの信号から生成される読み出し許可信号ＲＯも、第２のクロック信号ＣＫ２に同期した信号となる。
【００７５】
ここで、上述した構成を有する図１のデータバッファ装置の動作を説明する。図９は、データ保持部１＿ｉに対応するロック信号Ｌ［ｉ］、同期化ロック信号ＬＳ［ｉ］、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］の状態遷移を示す図である。
なお、図９に関する以下の説明では、理解を容易にするため、何れの状態においても、書き込みポインタＲＰおよび読み出しポインタＲＰはデータ保持部１＿ｉを指示しているものとする。
【００７６】
状態ＳＴ１：
ロック信号Ｌ［ｉ］、同期化ロック信号ＬＳ［ｉ］、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が全て‘０’になる。
状態ＳＴ１では、データ保持部１＿ｉに対する書き込み禁止が解除されており、また、書き込み禁止の解除要求も発せられていないので、書き込み許可信号ＷＯは‘１’になる。また、書き込み禁止が解除されており、未読のデータがデータ保持部１＿ｉに保持されていないので、読み出し許可信号ＲＯは‘０’になる。
【００７７】
この状態ＳＴ１において、書き込み要求信号ＷＩが‘１’になると、第１のクロック信号ＣＫ１に同期して、データ保持部１＿ｉに対する入力データＤＩＮの書き込みが行われる。また、これとともに、ロック信号更新部８１においてロック信号Ｌ［ＷＰ］が‘１’に更新され、状態ＳＴ１から状態ＳＴ２へ状態遷移が生じる。
【００７８】
状態ＳＴ２：
ロック信号Ｌ［ｉ］が‘１’、同期化ロック信号ＬＳ［ｉ］、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が‘０’になる。ロック信号Ｌ［ｉ］が‘１’になることから、書き込み許可信号ＷＯは‘０’になる。読み出し許可信号ＲＯは‘０’のまま保持される。
【００７９】
この状態ＳＴ２において、第２のクロック信号ＣＫ２が２サイクル分入力されると、‘１’のロック信号Ｌ［ｉ］が図２に示すダブルラッチ回路を通過し、同期化ロック信号ＬＳ［ｉ］が‘１’へ変化する。これにより状態ＳＴ２から状態ＳＴ３へ状態遷移が生じる。
【００８０】
状態ＳＴ３：
ロック信号Ｌ［ｉ］および同期化ロック信号ＬＳ［ｉ］が‘１’、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が‘０’になる。
状態ＳＴ３では、データ保持部１＿ｉに対する書き込みの禁止を示す情報（ＬＳ［ｉ］＝１）が、制御部１１に伝達される。この情報と、書き込み禁止の解除要求が発せられていないことから、読み出し許可信号生成部１１２において読み出し許可信号ＲＯが‘１’に変化する。書き込み許可信号ＷＯは‘０’のまま保持される。
【００８１】
この状態ＳＴ３において、読み出し要求信号ＲＩが‘１’となり、さらに、読み出しポインタＲＰが‘ｉ’になると、第２のクロック信号ＣＫ２に同期して、データ保持部１＿ｉからデータが読み出される。また、これとともに、アンロック信号更新部１１１においてアンロック信号Ｕ［ＲＰ］が‘１’に更新され、状態ＳＴ３から状態ＳＴ４へ状態遷移が生じる。
【００８２】
状態ＳＴ４：
ロック信号Ｌ［ｉ］、同期化ロック信号ＬＳ［ｉ］およびアンロック信号Ｕ［ｉ］が‘１’、同期化アンロック信号ＵＳ［ｉ］が‘０’になる。アンロック信号Ｕ［ＲＰ］が‘１’になることから、読み出し許可信号ＲＯは‘０’になる。書き込み許可信号ＷＯは‘０’のまま保持される。
【００８３】
この状態ＳＴ４において、第１のクロック信号ＣＫ１が２サイクル分入力されると、‘１’のアンロック信号Ｕ［ｉ］が図２に示すダブルラッチ回路を通過し、同期化アンロック信号ＵＳ［ｉ］が‘１’へ変化する。これにより状態ＳＴ４から状態ＳＴ５へ状態遷移が生じる。
【００８４】
状態ＳＴ５：
ロック信号Ｌ［ｉ］、同期化ロック信号ＬＳ［ｉ］、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が全て‘１’になる。読み出し許可信号ＲＯおよび書き込み許可信号ＷＯは‘０’のまま保持される。
状態ＳＴ５では、データ保持部１＿ｉに対する書き込み禁止の解除要求が発せられたことを示す情報（ＵＳ［ｉ］＝１）が、制御部８に伝達される。
【００８５】
この解除要求の情報（ＵＳ［ｉ］＝１）を受けて、ロック信号更新部８１では、ロック信号Ｌ［ｉ］を‘０’へ更新する処理が、第１のクロック信号ＣＫ１に同期して行われる。この更新により、状態ＳＴ５から状態ＳＴ６へ状態遷移が生じる。
【００８６】
状態ＳＴ６：
ロック信号Ｌ［ｉ］が‘０’、同期化ロック信号ＬＳ［ｉ］、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が‘１’になる。読み出し許可信号ＲＯおよび書き込み許可信号ＷＯは‘０’のまま保持される。
この状態ＳＴ６では、データの読み出し完了に伴う書き込み禁止の解除要求の発生を示す情報（ＵＳ［ｉ］＝１）を受けて、ロック信号更新部８１では、データ保持部１＿ｉに対する書き込み禁止の解除が行われる（Ｌ［ｉ］＝０）。ただし、データ保持部１＿ｉに対する書き込み禁止の解除要求（Ｕ［ｉ］＝１）は依然として発せられたままなので、書き込み許可信号ＷＯは‘０’のまま保持される。
【００８７】
この状態ＳＴ６において、第２のクロック信号ＣＫ２が２サイクル分入力されると、‘０’のロック信号Ｌ［ｉ］が図２に示すダブルラッチ回路を通過し、同期化ロック信号ＬＳ［ｉ］が‘０’へ変化する。これにより状態ＳＴ６から状態ＳＴ７へ状態遷移が生じる。
【００８８】
状態ＳＴ７：
ロック信号Ｌ［ｉ］および同期化ロック信号ＬＳ［ｉ］が‘０’、アンロック信号Ｕ［ｉ］および同期化アンロック信号ＵＳ［ｉ］が‘１’になる。読み出し許可信号ＲＯおよび書き込み許可信号ＷＯは‘０’のまま保持される。
この状態ＳＴ７では、状態ＳＴ４において発っせられた書き込み禁止の解除要求を受けて制御部８により解除が実行されたことを示す情報（ＬＳ［ｉ］＝０）が、制御部１１に伝達される。
【００８９】
解除処理の完了を示す情報（ＬＳ［ｉ］＝０）を受けて、アンロック信号更新部１１１では、アンロック信号Ｕ［ｉ］を‘０’へ更新する処理が、第２のクロック信号ＣＫ２に同期して行われる。この更新により、状態ＳＴ７から状態ＳＴ８へ状態遷移が生じる。
【００９０】
状態ＳＴ８：
ロック信号Ｌ［ｉ］、同期化ロック信号ＬＳ［ｉ］およびアンロック信号Ｕ［ｉ］が‘０’、同期化アンロック信号ＵＳ［ｉ］が‘１’になる。読み出し許可信号ＲＯおよび書き込み許可信号ＷＯは‘０’のまま保持される。
状態ＳＴ８では、解除処理の完了を示す情報（ＬＳ［ｉ］＝０）を受けて、書き込み禁止の解除要求を終息させる処理が実行される（Ｕ［ｉ］＝０）。
【００９１】
この状態ＳＴ８において、第２のクロック信号ＣＫ２が２サイクル分入力されると、‘０’のアンロック信号Ｌ［ｉ］が図２に示すダブルラッチ回路を通過し、同期化アンロック信号ＵＳ［ｉ］が‘０’へ変化する。これにより状態ＳＴ８から再び状態ＳＴ１へ戻る。
【００９２】
状態ＳＴ１では、状態ＳＴ６における書き込み禁止の解除（Ｌ［ｉ］＝０）に応じて書き込み禁止の解除要求が終息したことを示す情報（ＵＳ［ｉ］＝０）が、制御部８に伝達される。これにより、書き込み許可信号が再び‘１’に設定される。
【００９３】
このように、データ保持部１＿ｉに対する書き込みおよび読み出しの許可／不許可は、４つの信号（Ｌ［ｉ］、ＬＳ［ｉ］、Ｕ［ｉ］、ＵＳ［ｉ］）に応じて決定され、この４つの信号の状態は、８つの状態（ＳＴ１〜ＳＴ８）の間を巡回的に遷移する。
【００９４】
状態遷移の発生と停止は、４つの制御信号（書き込みポインタＷＰ、読み出しポインタＲＰ、書き込み要求信号ＷＩ、読み出し要求信号ＲＩ）に応じて制御される。
たとえば、データ保持部１＿ｉに関する状態ＳＴ１から状態ＳＴ２への遷移は、状態ＳＴ１において‘ＷＩ＝１’かつ‘ＷＰ＝ｉ’が成立する書き込み時に発生し、他の場合は停止される。状態ＳＴ３から状態ＳＴ４への遷移は、状態ＳＴ３において‘ＲＩ＝１’かつ‘ＲＰ＝ｉ’が成立する読み出し時に発生し、他の場合は停止される。他の状態間の遷移は、第１のクロック信号ＣＫ１または第２のクロック信号の入力に応じて自動的に発生する。
【００９５】
同一のデータ保持部に対する書き込みと読み出しは異なる状態（状態ＳＴ１、状態ＳＴ３）において許可されるため、同一のデータ保持部に対して書き込みと読み出しが同時に要求されても（‘ＷＩ＝ＲＩ＝１’かつ‘ＷＰ＝ＲＰ＝ｉ’）、これらが同時に実行される不具合は発生しない。
【００９６】
また、図９に示すように、８つの状態間の遷移には分岐が存在しないため、状態遷移の順序は一定に保たれる。制御信号の値や、第１のクロック信号ＣＫ１と第２のクロック信号ＣＫ２との位相関係に応じて、状態遷移の順序が変更されることはない。
【００９７】
したがって、個々のデータ保持部に対する書き込みおよび読み出しの許可／不許可は、何れも図９に示す８つの状態の遷移に基づいて決定され、制御信号の値やクロック信号の位相関係に応じて、同一のデータ保持部に対する書き込みと読み出しが同時に実行されるような不具合は発生しない。
また、書き込み許可信号ＷＯおよび読み出し許可信号ＲＯの値は、各ポインタ（ＷＰ，ＲＰ）で指示されるデータ保持部が上述した８つの状態の何れにあるかに応じて決定され、これ以外の不安定な状態によって不適切な値に設定される不具合は発生しない。
【００９８】
一方、書き込みポインタＷＰおよび読み出しポインタＲＰは、初期状態において同一のデータ保持部を指示し、書き込みポインタＷＰは書き込みが行われるたびに、読み出しポインタＲＰは読み出しが行われるたびに、それぞれ‘１’ずつインクリメントされる。ポインタの値が‘７’に達した場合は、次の書き込み／読み出しによってポインタ値は‘０’に戻る。
【００９９】
図９に示すように、データ保持部からの読み出しは状態ＳＴ３において許可される。このため、初期状態において、全てのデータ保持部が書き込み許可状態すなわち状態ＳＴ１にあるものとすると、読み出しポインタＲＰは常に書き込みポインタＷＰより遅れてインクリメントされることになる。すなわち、書き込まれたデータが書き込み順に読み出されることになり、ＦＩＦＯとしての動作が実現される。
【０１００】
データ保持部に対するデータの書き込みが進み、その結果、全てのデータ保持部が書き込み禁止状態、すなわち状態ＳＴ１以外の状態になった場合、たとえ書き込み要求信号ＷＩが‘１’に設定されても状態ＳＴ１以外において書き込みは実行されず、書き込みポインタＷＰのインクリメントは停止される。この時、書き込み許可信号ＷＯは‘０’に保持され、この信号により、データバッファ装置がフル状態にあることが外部へ通知される。
【０１０１】
このフル状態は、書き込みポインタＷＰが指示するデータ保持部においてデータの読み出しが行われることにより解消される。
すなわち、データの読み出しによって状態ＳＴ３から状態ＳＴ４への遷移が起こると、状態ＳＴ４から状態ＳＴ１へはクロック信号ＣＫ１およびＣＫ２の入力によって自動的に遷移が発生する。状態ＳＴ１において書き込み許可信号ＷＯは‘１’になり、フル状態が解消される。
【０１０２】
また、データ保持部からのデータの読み出しが進み、その結果、全てのデータ保持部が読み出し禁止状態、すなわち状態ＳＴ３以外の状態になった場合、たとえ読み出し要求信号ＲＩが‘１’に設定されても状態ＳＴ３以外において読み出しは実行されず、読み出しポインタＲＰのインクリメントは停止される。この時、読み出し許可信号ＲＯは‘０’に保持され、この信号により、データバッファ装置がエンプティ状態にあることが外部へ通知される。
【０１０３】
このエンプティ状態は、読み出しポインタＲＰが指示するデータ保持部においてデータの書き込みが行われることにより解消される。
すなわち、データの書き込みによって状態ＳＴ１から状態ＳＴ２への遷移が起こると、状態ＳＴ２から状態ＳＴ３へは第２のクロック信号ＣＫ２の入力によって自動的に遷移が発生する。状態ＳＴ３において読み出し許可信号ＲＯは‘１’になり、フル状態が解消される。
【０１０４】
次に、上述したデータバッファ装置の動作について、タイミングチャートの具体例を示しながら説明する。
図１０および図１１は、図１に示すデータバッファ装置の各信号のタイミング関係の一例を示すタイミングチャートである。図１０は、第１のクロック信号ＣＫ１の周波数が第２のクロック信号ＣＫ２の周波数より大きい場合の例を示し、図１１は、その逆の場合の例を示す。
【０１０５】
また、図１０において、時刻ｔ１０１〜ｔ１２９は第１のクロック信号ＣＫ１（図１０（Ａ））の立ち上がり時刻を示し、時刻ｔ２０１〜ｔ２１４は第２のクロック信号ＣＫ２（図１０（Ｆ））の立ち上がり時刻を示す。
図１１において、時刻ｔ３０１〜ｔ３１５は第１のクロック信号ＣＫ１（図１１（Ａ））の立ち上がり時刻を示し、、時刻ｔ４０１〜ｔ４２８は第２のクロック信号ＣＫ２（図１１（Ｆ））の立ち上がり時刻を示す。
図１０および図１１の例において、データバッファ装置の各構成要素は、クロック信号の立ち上がりに同期して動作する。
【０１０６】
（図１０：ＣＫ１の周波数＞ＣＫ２の周波数）
図１０に示すように、書き込み要求信号ＷＩ（図１０（Ｃ））は‘１’のまま保持されているため、データ保持部に対する書き込みは、書き込み許可信号ＷＯ（図１０（Ｄ））が‘１’の期間において連続的に実行される。
【０１０７】
初期状態において、書き込みポインタＷＰは‘０’に設定されており、（図１０（Ｂ））、‘Ｌ［０］＝ＵＳ［０］＝０’（図１０（Ｋ０），図１０（Ｎ０））が成立している。このため、書き込み許可信号ＷＯは‘１’になっており、第１のクロック信号ＣＫ１の立ち上がり時刻ｔ１０１において、データ保持部１＿０に対する書き込みが行われる。このとき、書き込みポインタＷＰはインクリメントされて‘１’になる（図１０（Ｂ））。
同様に、時刻ｔ１０２〜ｔ１０８においても、‘Ｌ［ＷＰ］＝ＵＳ［ＷＰ］＝０’（図１０（Ｋ１）〜（Ｋ７），図１０（Ｎ１）〜（Ｎ７））が成立するため、書き込み許可信号ＷＯは‘１’になり、データ保持部１＿１〜１＿７に対する書き込みが順次実行される（図１０（Ｅ））。書き込みポインタＷＰは‘１’，‘２’，…‘７’と変化し、時刻ｔ１０８において‘０’に戻る（図１０（Ｂ））。
時刻ｔ１０８において、‘ＵＳ［０］＝１’となり、書き込み許可信号ＷＯは‘０’になる。この‘ＷＯ＝０’の期間において、書き込みポインタＷＰは‘０’のまま保持される。
【０１０８】
データ保持部１＿０の状態は、
時刻ｔ１０１〜ｔ２０２  …  状態ＳＴ２；
時刻ｔ２０２〜ｔ２０３  …  状態ＳＴ３；
時刻ｔ２０３〜ｔ１０７  …  状態ＳＴ４；
時刻ｔ１０７〜ｔ１０８  …  状態ＳＴ５；
時刻ｔ１０８〜ｔ２０６  …  状態ＳＴ６；
時刻ｔ２０６〜ｔ２０７  …  状態ＳＴ７；
時刻ｔ２０７〜ｔ１１５  …  状態ＳＴ８；
時刻ｔ１１５〜ｔ１１６  …  状態ＳＴ１；
のように遷移する。時刻ｔ１０８において‘０’になった書き込み許可信号ＷＯは、時刻ｔ１１５において再び‘１’へ変化する。以降、書き込み許可信号ＷＯは、第１のクロック信号ＣＫ１の１サイクルおきに‘１’と‘０’を繰り返す（図１０（Ｄ））。時刻ｔ１１６，ｔ１１８，ｔ１２０，…において書き込み許可信号ＷＯは‘１’になり、データ保持部１＿０，１＿１，１＿２，…の順で書き込みが実行される（図１０（Ｅ））。
【０１０９】
一方、図１０の例では、読み出し要求信号ＲＩ（図１０（Ｈ））も‘１’のまま保持されているため、データ保持部に対する読み出しは、読み出し許可信号ＲＯ（図１０（Ｉ））が‘１’の期間において連続的に実行される。
【０１１０】
初期状態において、読み出しポインタＲＰは‘０’に設定されており（図１０（Ｇ））、データ保持部１＿０が状態ＳＴ３となる時刻ｔ２０２において、‘ＬＳ［０］＝１’（図１０（Ｌ０））および‘Ｕ［０］＝０’（図１０（Ｍ０））が成立する。これにより、時刻ｔ２０２において読み出し許可信号ＲＯは‘１’になり、第２のクロック信号ＣＫ２の立ち上がり時刻ｔ２０３において、データ保持部１＿０からの読み出しが行われる（図１０（Ｊ））。このとき、読み出しポインタＲＰはインクリメントされて‘１’になる（図１０（Ｇ））。
同様に、時刻ｔ２０４，ｔ２０５，…においても‘ＬＳ［ＷＰ］＝１’（図１０（Ｌ０）〜（Ｌ７））および‘Ｕ［ＷＰ］＝０’（図１０（Ｍ０）〜（Ｍ７））が成立するため、読み出し許可信号ＲＯは‘１’になり、データ保持部１＿１，１＿２，…の順で読み出しが実行される（図１０（Ｊ））。
【０１１１】
図１０（Ｅ）および図１０（Ｊ）に示すように、書き込まれたデータが書き込み順に読み出されており、ＦＩＦＯとしての動作が成立する。
また、書き込み許可信号ＷＯ（図１０（Ｄ））は第１のクロック信号ＣＫ１に、読み出し許可信号ＲＯ（図１０（Ｉ））は第２のクロック信号ＣＫ２にそれぞれ同期しており、これらのクロック信号が互いに非同期でありながら、何れもスパイクを生じていない。
【０１１２】
（図１１：ＣＫ１の周波数＜ＣＫ２の周波数）
図１１に示すように、書き込み要求信号ＷＩ（図１１（Ｃ））は‘１’のまま保持されているため、データ保持部に対する書き込みは、書き込み許可信号ＷＯ（図１１（Ｄ））が‘１’の期間において連続的に実行される。
【０１１３】
初期状態において、書き込みポインタＷＰは‘０’に設定されており、（図１１（Ｂ））、‘Ｌ［０］＝ＵＳ［０］＝０’（図１１（Ｋ０），図１１（Ｎ０））が成立している。このため、書き込み許可信号ＷＯは‘１’になっており、第１のクロック信号ＣＫ１の立ち上がり時刻ｔ３０１において、データ保持部１＿０に対する書き込みが行われる。このとき、書き込みポインタＷＰはインクリメントされて‘１’になる（図１１（Ｂ））。
同様に、時刻ｔ３０２，ｔ３０３，…においても、‘Ｌ［ＷＰ］＝ＵＳ［ＷＰ］＝０’（図１１（Ｋ０）〜（Ｋ７），図１１（Ｎ０）〜（Ｎ７））が成立するため、書き込み許可信号ＷＯは‘１’になり、データ保持部１＿１，１＿２，…に対する書き込みが順次実行される（図１１（Ｅ））。
【０１１４】
一方、図１１の例では、読み出し要求信号ＲＩ（図１１（Ｈ））も‘１’のまま保持されているため、データ保持部に対する読み出しは、読み出し許可信号ＲＯ（図１１（Ｉ））が‘１’の期間において連続的に実行される。
【０１１５】
初期状態において、読み出しポインタＲＰは‘０’に設定されており（図１１（Ｇ））、時刻ｔ４０２において‘ＬＳ［０］＝１’（図１１（Ｌ０））および‘Ｕ［０］＝０’（図１１（Ｍ０））が成立する。これにより、時刻ｔ４０２において読み出し許可信号ＲＯは‘１’になり、第２のクロック信号ＣＫ２の立ち上がり時刻ｔ４０３において、データ保持部１＿０からの読み出しが行われる（図１１（Ｊ））。このとき、読み出しポインタＲＰはインクリメントされて‘１’になる（図１１（Ｇ））。
読み出し後の時刻ｔ４０３〜ｔ４０４において‘ＬＳ［１］＝０’となるため、読み出し許可信号ＲＯは一旦‘０’になるが、時刻ｔ４０４において‘ＬＳ［１］＝１’となると、再び読み出し許可信号ＲＯは‘１’になる。
【０１１６】
以降同様に、読み出し許可信号ＲＯは、第２のクロック信号ＣＫ２の１サイクルおきに‘０’と‘１’を繰り返す（図１１（Ｉ））。時刻ｔ４０５，ｔ４０７，ｔ４０９，…において読み出し許可信号ＲＯは‘１’となり、データ保持部１＿１，１＿２，…からの読み出しが順次実行される。
【０１１７】
図１１の例においても、図１０の例と同様に、書き込まれたデータが書き込み順に読み出されており（図１１（Ｅ），図１１（Ｊ））、ＦＩＦＯとしての動作が成立する。また、書き込み許可信号ＷＯおよび読み出し許可信号ＲＯには、何れもスパイクを生じていない。
【０１１８】
以上説明したように、図１に示すデータバッファ装置によれば、各データ保持装置に対する書き込みおよび読み出しの許可／不許可が、ロック信号およびアンロック信号の状態に応じて制御される。このロック信号およびアンロック信号は、異なるクロック信号（ＣＫ１，ＣＫ２）で動作する回路ブロック間を跨って伝送されるが、他方のクロック系に入力される際に、図２に示すような同期化回路を経由することによって、メタステーブル状態の異常な信号を含まない、他方のクロック信号に同期化された信号（同期化ロック信号および同期化アンロック信号）に変換される。
したがって、第１のクロック信号ＣＫ１と第２のクロック信号ＣＫ２とを任意の位相関係、周波数に設定しても、書き込み許可信号ＷＯおよび読み出し許可信号ＲＯにスパイクが発生することを防止でき、正常な書き込みおよび読み出しを行うことができる。
【０１１９】
また、図１０および図１１に示した例からも明らかなように、１つのデータが書き込まれてから読み出されるまでの遅延時間は、第１のクロック信号ＣＫ１および第２のクロック信号ＣＫ２のうちの何れか低速なクロック信号に応じて決定される。この遅延時間は、図９に示す状態ＳＴ１から状態ＳＴ４までの遷移時間に相当し、第１のクロック信号ＣＫ１の１サイクル分と、第２のクロック信号ＣＫ２の３サイクル分との和に概ね等しくなる。すなわち、データバッファ装置の記憶容量に応じて、データの書き込みから読み出しまでの遅延時間が長くなることを防止できる。このため、遅延時間の性能を劣化させることなく、データバッファ装置の記憶容量を大きくすることができる。
【０１２０】
また、クロック信号の同期化を行うロック信号同期化部３およびアンロック信号同期化部５は、図２に示すダブルラッチ回路のように簡易な回路を用いて実現することができるので、ＨＤＬ（ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）を用いた一般的な手法を用いて設計することが可能である。また、一般的な回路設計ツールを用いて回路記述の検証を自動化することも可能である。
【０１２１】
なお、本発明は上述した実施形態に限定されない。
たとえば、データ保持部の数やデータ長、書き込みポインタＷＰおよび読み出しポインタＲＰの値、各信号の論理値など、上述した実施形態において示した定数値は何れも説明上の一例に過ぎず、任意に設定可能である。
データ保持部が１つの場合は、書き込みポインタＷＰおよび読み出しポインタＲＰが固定値になるため、書き込み指示部６および読み出し指示部９を省略することができる。
【０１２２】
ロック信号同期化部３およびアンロック信号同期化部５において用いられる同期化回路の段数は、図２に示すように２段でも良いが、さらに段数を多くしても良い。
【０１２３】
上述した実施形態では、データバッファ装置がＦＩＦＯとして動作する例を説明したが、本発明はこれに限定されず、たとえばＦＩＬＯ（ｆｉｒｓｔ−ｉｎ  ｌａｓｔ−ｏｕｔ）として動作させることも可能である。
【０１２４】
すなわち、書き込み指示部６および読み出し指示部９は、初期状態において共通のデータ保持部を書き込み対象または読み出し対象として指示する。
書き込み指示部６は、データ保持部に対する書き込みが行われるたびに、複数のデータ保持部に設定された所定の順序にしたがって、たとえばデータ保持部１＿０，１＿１，…の順序で、書き込み対象を変更する。また、データ保持部からの読み出しが行われるたびに、この所定の順序と逆の順序にしたがって、書き込み対象を変更する。
読み出し指示部９は、データ保持部に対する書き込みが行われるたびに、書き込み指示部６と同じ所定の順序にしたがって、読み出し対象を変更する。データ保持部からの読み出しが行われるたびに、この所定の順序と逆の順序にしたがって読み出し対象を変更する。
書き込み指示部６および読み出し指示部９においてこのような指示動作を行わせることによって、図１に示すデータバッファ装置をＦＩＬＯとして動作させることも可能である。この場合も、ＦＩＦＯの場合と同様の効果を奏することができる。
【０１２５】
【発明の効果】
本発明によれば、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行う場合において、書き込み許可信号および読み出し許可信号にスパイクが発生することを防止できる。また、書き込み許可信号および読み出し許可信号の生成に要する遅延時間が記憶容量の増加にともなって長くなることを防止できる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るデータバッファ装置の構成の一例を示すブロック図である。
【図２】ロック信号同期化部に含まれる同期化回路の構成の一例を示すブロック図である。
【図３】書き込みイネーブル信号生成部の構成の一例を示すブロック図である。
【図４】ロック信号更新部の構成の一例を示すブロック図である。
【図５】書き込み許可信号生成部の構成の一例を示すブロック図である。
【図６】読み出しセレクタの構成の一例を示すブロック図である。
【図７】アンロック信号更新部の構成の一例を示すブロック図である。
【図８】読み出し許可信号生成部の構成の一例を示すブロック図である。
【図９】ロック信号、同期化ロック信号、アンロック信号および同期化アンロック信号の状態遷移を示した図である。
【図１０】図１に示すデータバッファ装置の各信号のタイミング関係を示す第１のタイミングチャートである。
【図１１】図１に示すデータバッファ装置の各信号のタイミング関係を示す第２のタイミングチャートである。
【符号の説明】
１＿０〜１＿７…データ保持部、２…ロック信号保持部、３…ロック信号同期化部、４…アンロック信号保持部、５…アンロック信号同期化部、６…書き込み指示部、７…書き込みイネーブル信号生成部、８…制御部、９…読み出し指示部、１０…読み出しセレクタ、１１…制御部、８１…ロック信号更新部、８２…書き込み許可信号生成部、１１１…アンロック信号更新部、１１２…読み出し許可信号生成部
【図１】
2004236016.tif 000003
【図２】
2004236016.tif 000004
【図３】
2004236016.tif 000005
【図４】
2004236016.tif 000006
【図５】
2004236016.tif 000007
【図６】
2004236016.tif 000008
【図７】
2004236016.tif 000009
【図８】
2004236016.tif 000010
【図９】
2004236016.tif 000011
【図１０】
2004236016.tif 000012
【図１１】
2004236016.tif 000013