JP4389459B2 - データバッファ装置 - Google Patents
データバッファ装置 Download PDFInfo
- Publication number
- JP4389459B2 JP4389459B2 JP2003090698A JP2003090698A JP4389459B2 JP 4389459 B2 JP4389459 B2 JP 4389459B2 JP 2003090698 A JP2003090698 A JP 2003090698A JP 2003090698 A JP2003090698 A JP 2003090698A JP 4389459 B2 JP4389459 B2 JP 4389459B2
- Authority
- JP
- Japan
- Prior art keywords
- signal
- read
- write
- data
- synchronization
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Description
【発明の属する技術分野】
本発明は、互いに独立したクロック信号を用いてデータの書き込みおよび読み出しを行うことができるデータバッファ装置に関し、たとえば、非同期の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のフラグ信号を生成する第2のフラグ信号保持手段と、前記第1のフラグ信号を前記第2のクロック信号に同期させて第1の同期化フラグ信号を生成する第1の同期化手段と、前記第2のフラグ信号を前記第1のクロック信号に同期させて第2の同期化フラグ信号を生成する第2の同期化手段と、前記第1のフラグ信号および前記第2の同期化フラグ信号が、ともに有意を示しているとき、または、ともに無位を示しているときに書き込み許可信号を出力する書き込み許可信号出力手段と、前記第2のフラグ信号および前記第1の同期化フラグ信号の、いずれか一方のみが有意を示しているときに読み出し許可信号を出力する読み出し許可信号出力手段と、前記書き込み要求信号および第1のクロック信号の論理積に応じて外部から入力されるデータを記憶する記憶手段とを有し、前記第1の同期化手段は、前記書き込み許可信号出力手段が前記書き込み許可信号を出力して、外部から前記データが前記記憶手段へ入力されているときには、前記読み出し許可信号出力手段に前記読み出し許可信号を出力させない前記第1の同期化フラグ信号を生成し、前記第2の同期化手段は、前記読み出し許可信号出力手段が前記読み出し許可信号を出力して、前記記憶手段に記憶されているデータが外部へ読み出されているときには、前記書き込み許可信号出力手段に前記書き込み許可信号を出力させない前記第2の同期化フラグ信号を生成する。
【0015】
また、本発明のデータバッファ装置は、外部から入力するデータを同期させる第1のクロック信号と外部からの書き込み要求信号との論理積により第1のフラグ信号を生成する第1のフラグ信号保持手段と、外部へ出力するデータを同期させる第2のクロック信号と外部からの読み出し要求信号との論理積により第2のフラグ信号を生成する第2のフラグ信号保持手段と、前記第1のフラグ信号を前記第2のクロック信号に同期させて第1の同期化フラグ信号を生成する第1の同期化手段と、前記第2のフラグ信号を前記第1のクロック信号に同期させて第2の同期化フラグ信号を生成する第2の同期化手段と、前記第1のフラグ信号および前記第2の同期化フラグ信号が、ともに有意を示しているとき、または、ともに無位を示しているときに書き込み許可信号を出力する書き込み許可信号出力手段と、前記第2のフラグ信号および前記第1の同期化フラグ信号の、いずれか一方のみが有意を示しているときに読み出し許可信号を出力する読み出し許可信号出力手段と、前記書き込み要求信号および第1のクロック信号の論理積に応じて外部から入力されるデータを記憶する記憶手段とを有し、前記第1の同期化手段は、前記書き込み許可信号出力手段が前記書き込み許可信号を出力して、外部から前記データが前記記憶手段へ入力されているときには、前記読み出し許可信号出力手段に前記読み出し許可信号を出力させない前記第1の同期化フラグ信号を生成し、前記第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…加算部
Claims (2)
- 外部から入力するデータを同期させる第1のクロック信号と外部からの書き込み要求信号との論理積により第1のフラグ信号を生成する第1のフラグ信号保持手段と、
外部へ出力するデータを同期させる第2のクロック信号と外部からの読み出し要求信号との論理積により第2のフラグ信号を生成する第2のフラグ信号保持手段と、
前記第1のフラグ信号を前記第2のクロック信号に同期させて第1の同期化フラグ信号を生成する第1の同期化手段と、
前記第2のフラグ信号を前記第1のクロック信号に同期させて第2の同期化フラグ信号を生成する第2の同期化手段と、
前記第1のフラグ信号および前記第2の同期化フラグ信号が、ともに有意を示しているとき、または、ともに無位を示しているときに書き込み許可信号を出力する書き込み許可信号出力手段と、
前記第2のフラグ信号および前記第1の同期化フラグ信号の、いずれか一方のみが有意を示しているときに読み出し許可信号を出力する読み出し許可信号出力手段と、
前記書き込み要求信号および第1のクロック信号の論理積に応じて外部から入力されるデータを記憶する記憶手段と、
を有し、
前記第1の同期化手段は、
前記書き込み許可信号出力手段が前記書き込み許可信号を出力して、外部から前記データが前記記憶手段へ入力されているときには、前記読み出し許可信号出力手段に前記読み出し許可信号を出力させない前記第1の同期化フラグ信号を生成し、
前記第2の同期化手段は、
前記読み出し許可信号出力手段が前記読み出し許可信号を出力して、前記記憶手段に記憶されているデータが外部へ読み出されているときには、前記書き込み許可信号出力手段に前記書き込み許可信号を出力させない前記第2の同期化フラグ信号を生成する、
データバッファ装置。 - 外部から入力するデータを同期させる第1のクロック信号と外部からの書き込み要求信号との論理積により第1のフラグ信号を生成する第1のフラグ信号保持手段と、
外部へ出力するデータを同期させる第2のクロック信号と外部からの読み出し要求信号との論理積により第2のフラグ信号を生成する第2のフラグ信号保持手段と、
前記第1のフラグ信号を前記第2のクロック信号に同期させて第1の同期化フラグ信号を生成する第1の同期化手段と、
前記第2のフラグ信号を前記第1のクロック信号に同期させて第2の同期化フラグ信号を生成する第2の同期化手段と、
前記第1のフラグ信号および前記第2の同期化フラグ信号が、ともに有意を示しているとき、または、ともに無位を示しているときに書き込み許可信号を出力する書き込み許可信号出力手段と、
前記第2のフラグ信号および前記第1の同期化フラグ信号の、いずれか一方のみが有意を示しているときに読み出し許可信号を出力する読み出し許可信号出力手段と、
前記書き込み要求信号および第1のクロック信号の論理積に応じて外部から入力されるデータを記憶する記憶手段と、
を有し、
前記第1の同期化手段は、
前記書き込み許可信号出力手段が前記書き込み許可信号を出力して、外部から前記データが前記記憶手段へ入力されているときには、前記読み出し許可信号出力手段に前記読み出し許可信号を出力させない前記第1の同期化フラグ信号を生成し、
前記第2の同期化手段は、
前記読み出し許可信号出力手段が前記読み出し許可信号を出力して、前記記憶手段に記憶されているデータが外部へ読み出されているときには、前記書き込み許可信号出力手段に前記書き込み許可信号を出力させない前記第2の同期化フラグ信号を生成する、
複数のバッファユニットと、
前記書き込み要求信号および前記複数のバッファユニットから各々出力される書き込み許可信号を用いて、データ書き込みを行うバッファユニットの順番を示す書き込みポインタ信号を生成し、前記書き込みポインタ信号が示す順に各バッファユニットへ前記外部からのデータを入力させる書き込み指示部と、
前記読み出し要求信号および前記複数のバッファユニットから各々出力される読み出し許可信号を用いて、データ読み出しを行うバッファユニットの順番を示す読み出しポインタ信号を生成し、前記読み出しポインタ信号が示す順に各バッファユニットから記憶データを出力させる読み出し指示部と、
を有する、
データバッファ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003090698A JP4389459B2 (ja) | 2003-03-28 | 2003-03-28 | データバッファ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003090698A JP4389459B2 (ja) | 2003-03-28 | 2003-03-28 | データバッファ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004295819A JP2004295819A (ja) | 2004-10-21 |
JP4389459B2 true JP4389459B2 (ja) | 2009-12-24 |
Family
ID=33404251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003090698A Expired - Fee Related JP4389459B2 (ja) | 2003-03-28 | 2003-03-28 | データバッファ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4389459B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4858445B2 (ja) | 2005-10-13 | 2012-01-18 | 日本電気株式会社 | 半導体ディジタル回路、fifoバッファ回路及びデータ受け渡し方法 |
JP4730051B2 (ja) * | 2005-10-13 | 2011-07-20 | 日本電気株式会社 | 半導体ディジタル回路、fifoバッファ回路及びそれらに用いるデータ受け渡し方法 |
JP5742334B2 (ja) * | 2011-03-18 | 2015-07-01 | 富士通セミコンダクター株式会社 | データ転送システム、データ転送装置及びデータ転送方法 |
JP2014045423A (ja) * | 2012-08-28 | 2014-03-13 | Nec Engineering Ltd | データ転送装置、データ転送方法およびプログラム |
JP7419944B2 (ja) * | 2020-04-13 | 2024-01-23 | 富士通株式会社 | 半導体装置及び同期化方法 |
-
2003
- 2003-03-28 JP JP2003090698A patent/JP4389459B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004295819A (ja) | 2004-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3088180B2 (ja) | シリアル入力インタフェース回路 | |
US7269754B2 (en) | Method and apparatus for flexible and programmable clock crossing control with dynamic compensation | |
US7154327B2 (en) | Self-timed multiple blanking for noise suppression during flag generation in a multi-queue first-in first-out memory system | |
JPH098143A (ja) | 遅延最適化方法 | |
JP3645584B2 (ja) | データ転送同期装置 | |
US9330740B1 (en) | First-in first-out circuits and methods | |
US8773928B2 (en) | Command latency systems and methods | |
US5627797A (en) | Full and empty flag generator for synchronous FIFOS | |
JP4389459B2 (ja) | データバッファ装置 | |
JP2004062630A (ja) | Fifoメモリ及び半導体装置 | |
JP3191302B2 (ja) | メモリ回路 | |
Huemer et al. | Timing domain crossing using Muller pipelines | |
US20070177698A1 (en) | Signal Transfer Across Circuits Operating in Different Clock Domains | |
US20090304134A1 (en) | Device and method of synchronizing signals | |
US7813217B2 (en) | Semiconductor memory device and method for operating the same | |
US5844423A (en) | Half-full flag generator for synchronous FIFOs | |
JP4696003B2 (ja) | データ転送回路 | |
JP6512640B1 (ja) | 非同期fifo回路 | |
JP4211412B2 (ja) | データバッファ装置 | |
US6175518B1 (en) | Remote register hierarchy accessible using a serial data line | |
JP2005277909A (ja) | 論理回路設計システム、論理回路、論理回路設計方法およびそのプログラム | |
US6680990B1 (en) | Elastic integrated circuit | |
JP3592169B2 (ja) | 非同期データ転送制御装置および非同期データ転送制御方法 | |
JP2007272562A (ja) | Fifoメモリ | |
JP6828961B2 (ja) | データ転送装置、及びデータ転送方法 |
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 |