(58)【調査した分野】(Int.Cl.,DB名)
前記調停制御部は、前記書き込み要求信号が入力された場合、前記第1同期化信号が前記第1同期化部において出力されていないことを条件として、前記書き込み要求信号を前記第1クロック信号に同期して保持するとともに、当該保持した書き込み要求信号を前記第2同期化部へ入力し、前記書き込み要求信号を保持しているときは、前記書き込み待ち信号の出力を抑止し、前記書き込み要求信号の入力が終了すると、前記書き込み要求信号の保持を解除し、前記書き込み要求信号を保持していないときは、前記第1同期化部の前記第1同期化信号に応じた前記書き込み待ち信号を出力する
ことを特徴とする請求項2に記載のメモリ装置。
前記調停制御部は、前記読み出し要求信号が入力された場合、前記第2同期化信号が前記第2同期化部において出力されていないことを条件として、前記読み出し要求信号を前記第2クロック信号に同期して保持するとともに、当該保持した読み出し要求信号を前記第1同期化部へ入力し、前記読み出し要求信号を保持しているときは、前記読み出し待ち信号の出力を抑止し、前記読み出し要求信号の入力が終了すると、前記読み出し要求信号の保持を解除し、前記読み出し要求信号を保持していないときは、前記第2同期化部の前記第2同期化信号に応じた前記読み出し待ち信号を出力する
ことを特徴とする請求項2に記載のメモリ装置。
前記調停制御部は、前記第2同期化部から前記第2同期化信号が出力された場合、前記読み出し要求信号が入力されていないことを条件として、前記第2同期化信号を前記第2クロック信号に同期して保持するとともに、当該保持した第2同期化信号を前記読み出し待ち信号として出力し、前記第2同期化信号を保持しているときは、前記第1同期化部への前記読み出し要求信号の入力を抑止し、前記第2同期化部からの前記第2同期化信号の出力が終了すると、前記第2同期化信号の保持を解除するとともに前記読み出し待ち信号の出力を終了し、前記第2同期化信号を保持していないときは、入力される前記読み出し要求信号に応じた信号を前記第1同期化部に入力する
ことを特徴とする請求項2に記載のメモリ装置。
前記調停制御部は、前記第1同期化部から前記第1同期化信号が出力された場合、前記書き込み要求信号が入力されていないことを条件として、前記第1同期化信号を前記第1クロック信号に同期して保持するとともに、当該保持した第1同期化信号を前記書き込み待ち信号として出力し、前記第1同期化信号を保持しているときは、前記第2同期化部への前記書き込み要求信号の入力を抑止し、前記第1同期化部からの前記第1同期化信号の出力が終了すると、前記第1同期化信号の保持を解除するとともに前記書き込み待ち信号の出力を終了し、前記第1同期化信号を保持していないときは、入力される前記書き込み要求信号に応じた信号を前記第2同期化部に入力する
ことを特徴とする請求項2に記載のメモリ装置。
前記クロック選択部において選択されたクロック信号に同期してそれぞれ動作し、スキャンテストを実施する場合においてシリアルデータを転送するシフトレジスタを構成するように縦続接続される複数のフリップフロップを含んでおり、
前記クロック選択部は、
前記複数のフリップフロップが前記シフトレジスタを構成する第1の動作モードにおいては、前記第1クロック信号又は前記第2クロック信号の何れか一方を選択して出力し、
前記複数のフリップフロップにそれぞれデータを保持させる第2の動作モードにおいては、前記書き込みイネーブル信号が入力される場合に前記第1クロック信号を選択して出力し、前記読み出しイネーブル信号が入力される場合に前記第2クロック信号を選択して出力する
ことを特徴とする請求項1乃至6のいずれか一項に記載のメモリ装置。
【発明を実施するための形態】
【0024】
<第1の実施形態>
本発明の第1の実施形態として、本発明が適用された非同期FIFOメモリ装置について説明する。
【0025】
図1は、第1の実施形態に係る非同期FIFOメモリ装置1の入出力信号の一例を示す図である。
非同期FIFOメモリ装置1において入出力される信号は、書き込みクロック信号WCLKに同期したものと、読み出しクロック信号RCLKに同期したものとに分かれている。書き込み要求信号WREQ、書き込みイネーブル信号WEN、書き込みデータWD及び書き込み待ち機能有効信号W_WAIT_ENは、書き込みクロック信号WCLKに同期した入力信号であり、書き込み待ち信号W_WAIT及び書き込み状態信号W_NUM/FULLは、書き込みクロック信号WCLKに同期した出力信号である。他方、読み出し要求信号RREQ、読み出しイネーブル信号REN及び読み出し待ち機能有効信号R_WAIT_ENは、読み出しクロック信号RCLKに同期した入力信号であり、読み出しデータRD、読み出し待ち信号R_WAIT及び読み出し状態信号R_NUM/FULLは、読み出しクロック信号RCLKに同期した出力信号である。
【0026】
非同期FIFOメモリ装置1にデータWDを書き込む場合、書き込み側の装置は、書き込み要求信号WREQを非同期FIFOメモリ装置1へ事前に入力する。非同期FIFOメモリ装置1は、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化し、後述する読み出し待ち信号R_WAITとして読み出し側の装置に出力する。
【0027】
書き込み側の装置は、非同期FIFOメモリ装置1に書き込み要求信号WREQを入力してから一定時間が経過した後、非同期FIFOメモリ装置1から書き込み待ち信号W_WAITが出力されているか否か確認する。書き込み待ち信号W_WAITが出力されていない場合、書き込み側の装置は、非同期FIFOメモリ装置1に書き込みイネーブル信号WENを入力する。非同期FIFOメモリ装置1は、書き込みイネーブル信号WENが入力されると、書き込みクロック信号WCLKに同期してデータWDを取り込み、記憶領域に格納する。非同期FIFOメモリ装置1から書き込み待ち信号W_WAITが出力されている場合、書き込み側の装置は、書き込み待ち信号W_WAITの出力が終わる(ネゲートする)まで、非同期FIFOメモリ装置1への書き込みイネーブル信号WENの入力を待機させる。
【0028】
一方、非同期FIFOメモリ装置1からデータRDを読み出す場合、読み出し側の装置は、読み出し要求信号RREQを非同期FIFOメモリ装置1へ事前に入力する。非同期FIFOメモリ装置1は、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化し、上述した書き込み待ち信号W_WAITとして書き込み側の装置に出力する。
【0029】
読み出し側の装置は、非同期FIFOメモリ装置1に読み出し要求信号RREQを入力してから一定時間が経過した後、非同期FIFOメモリ装置1から読み出し待ち信号R_WAITが出力されているか否かを確認する。読み出し待ち信号R_WAITが出力されていない場合、読み出し側の装置は、非同期FIFOメモリ装置1に読み出しイネーブル信号RENを入力する。非同期FIFOメモリ装置1は、読み出しイネーブル信号RENが入力されると、読み出しクロック信号RCLKに同期して記憶領域からデータRDを読み出す。非同期FIFOメモリ装置1から読み出し待ち信号R_WAITが出力されている場合、読み出し側の装置は、読み出し待ち信号R_WAITの出力が終わる(ネゲートする)まで、非同期FIFOメモリ装置1への読み出しイネーブル信号RENの入力を待機させる。
【0030】
書き込み動作を待機させる書き込み待ち信号W_WAITは、上述したように、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化した信号である。読み出し側の装置は、非同期FIFOメモリ装置1において読み出し要求信号RREQを書き込み待ち信号W_WAITへ同期化する時間が充分に確保されるように、読み出し要求信号RREQを読み出しイネーブル信号RENよりも充分前に非同期FIFOメモリ装置1へ入力する。また、読み出し側の装置は、イネーブル信号RENの入力が終了するまで、読み出し要求信号RREQの入力を保持する。これにより、読み出しイネーブル信号RENの入力時には書き込み待ち信号W_WAITが書き込み側の装置へ出力されるため、読み出し時に書き込みが行われることを防止できる。
書き込み待ち機能有効信号W_WAIT_ENは、この書き込み待ち信号W_WAITの出力を有効又は無効に設定する信号である。書き込み待ち機能有効信号W_WAIT_ENが無効状態の場合、非同期FIFOメモリ装置1は書き込み待ち信号W_WAITの出力を停止する。
【0031】
読み出し動作を待機させる読み出し待ち信号R_WAITは、上述したように、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化した信号である。書き込み側の装置は、非同期FIFOメモリ装置1おいて書き込み要求信号WREQを読み出し待ち信号R_WAITへ同期化する時間が充分に確保されるように、書き込み要求信号WREQを書き込みイネーブル信号WENよりも充分前に非同期FIFOメモリ装置1へ入力する。また、書き込み側の装置は、書き込みイネーブル信号WENの入力が終了するまで、書き込み要求信号WREQの入力を保持する。これにより、書き込みイネーブル信号WENの入力時には読み出し待ち信号R_WAITが読み出し側の装置へ出力されるため、書き込み時に読み出しが行われることを防止できる。
読み出し待ち機能有効信号R_WAIT_ENは、この読み出し待ち信号R_WAITの出力を有効又は無効に設定する信号である。読み出し待ち機能有効信号R_WAIT_ENが無効状態の場合、非同期FIFOメモリ装置1は読み出し待ち信号R_WAITの出力を停止する。
【0032】
書き込み状態信号W_NUM/FULL及び読み出し状態信号R_NUM/FULLは、非同期FIFOメモリ装置1に蓄積されるデータの数に関わる状態を示す信号である。書き込み状態信号W_NUM/FULLは、メモリ部30に蓄積された(或いは書き込み可能な)データの数や、メモリ部30に書き込み可能なデータ数の上限(満状態)に達しているか否かなどを示す。読み出し状態信号R_NUM/FULLは、メモリ部30に蓄積された(或いは読み出し可能な)データの数や、メモリ部30から読み出し可能なデータ数の下限(空状態)に達しているか否かなどを示す。書き込み側の装置や読み出し側の装置は、これらの信号に基づいて、非同期FIFOメモリ装置1におけるデータの書き込みと読み出しを制御する。
【0033】
図2は、第1の実施形態に係る非同期FIFOメモリ装置1の構成の一例を示す図である。
非同期FIFOメモリ装置1は、例えば
図2に示すように、要求調停部10と、クロック選択部20と、メモリ部30と、書き込みポインタ更新部40と、読み出しポインタ更新部50と、状態信号生成部60を有する。
【0034】
要求調停部10は、書き込み動作と読み出し動作の競合が防止されるように調停を行う回路であり、書き込み側の装置から入力される書き込み要求信号WREQと読み出し側の装置から入力される読み出し要求信号RREQとに応じて、書き込み時には読み出し処理を待機させる書き込み要求信号WREQを出力し、読み出し時には書き込み処理を待機させる書き込み待ち信号W_WAITを出力する。
【0035】
すなわち、要求調停部10は、書き込みクロック信号WCLKに同期した書き込み要求信号WREQが書き込み側の装置によって入力されると、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化し、読み出し待ち信号R_WAITとして読み出し側の装置に出力する。また、要求調停部10は、読み出しクロック信号RCLKに同期した読み出し要求信号RREQが読み出し側の装置によって入力されると、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化し、書き込み待ち信号W_WAITとして書き込み側の装置に出力する。
【0036】
要求調停部10は、読み出し待ち信号R_WAITと書き込み待ち信号W_WAITの両方が同時に出力されることによって読み出しと書き込みの両方が待機状態となることを防止するため、読み出し待ち信号R_WAIT又は書き込み待ち信号W_WAITの何れか一方を他方よりも優先して出力する。例えば、要求調停部10は、一方の信号を出力する場合に他方の信号の出力を抑止する。
【0037】
図3は、第1の実施形態に係る非同期FIFOメモリ装置1における要求調停部10の構成の一例を示す図である。
図3に示す要求調停部10は、第1同期化部11と、第2同期化部12と、調停制御部15を有する。
【0038】
第1同期化部11は、読み出し側の装置から入力される読み出し要求信号RREQを書き込みクロック信号WCLKに同期化し、書き込み待ち信号W_WAITとして出力する。
第2同期化部12は、書き込み側の装置から調停制御部15を介して入力される書き込み要求信号WREQを読み出しクロック信号RCLKに同期化し、読み出し待ち信号R_WAITとして出力する。
【0039】
調停制御部15は、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化した信号が第1同期化部11において出力される場合に、第2同期化部12への書き込み要求信号WREQの入力を抑止する。
図3の例において、調停制御部15は論理積の演算を行うゲート回路であり、第1同期化部11の出力値を論理反転した信号と書き込み要求信号WREQとの論理積を第2同期化部12に入力する。第1同期化部11の出力値が「0」の場合、書き込み要求信号WREQはそのまま第2同期化部12に入力されるが、第1同期化部11の出力値が「1」になると(書き込み待ち信号W_WAITが出力されると)、書き込み要求信号WREQの入力の有無にかかわらず第2同期化部12の入力信号は「0」となる。これにより、読み出し要求信号RREQと書き込み要求信号WREQが共に入力された場合は、書き込み待ち信号W_WAITの出力が優先されて、書き込み処理が待機状態となる。
【0040】
なお、
図3に示す要求調停部10では、読み出し要求信号RREQを書き込み要求信号WREQに優先させるように調停制御部15が設けられているが、本実施形態の他の例では、書き込み要求信号WREQを読み出し要求信号RREQに優先させるように調停制御部15を設けてもよい。例えば、
図3と同様なゲート回路を第1同期化部11の入力側に設けて、第2同期化部12から読み出し待ち信号R_WAITが出力される場合に、第1同期化部11への読み出し要求信号RREQの入力を抑止するようにしてもよい。
以上が、要求調停部10の説明である。
【0041】
図2の説明に戻る。
クロック選択部20は、書き込みクロック信号WCLK又は読み出しクロック信号RCLKの何れか一方を選択し、選択クロック信号MUX_CLKとして出力する回路である。すなわち、クロック選択部20は、書き込み側の装置から書き込みクロック信号WCLKに同期して書き込みイネーブル信号WENが入力されると、書き込みクロック信号WCLKを選択して出力し、読み出し側の装置から読み出しクロック信号RCLKに同期して読み出しイネーブル信号RENが入力されると、読み出しクロック信号RCLKを選択して出力する。
【0042】
メモリ部30は、書き込み側の装置から書き込みイネーブル信号WENが入力されると、選択クロック信号MUX_CLKに同期して、書き込みポインタWPに応じたアドレスにデータWDを書き込む。また、メモリ部30は、読み出し側の装置から読み出しイネーブル信号RENが入力されると、選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスからデータRDを読み出す。
【0043】
書き込みポインタ更新部40は、メモリ部30におけるデータWDの書き込み先のアドレスを指定する書き込みポインタWPを生成する回路であり、メモリ部30においてデータWDの書き込みが行われる度に書き込みポインタWPを更新する。すなわち、書き込みポインタ更新部40は、書き込み側の装置から書き込みイネーブル信号WENが入力されると、選択クロック信号MUX_CLKに同期して書き込みポインタWPを更新する。
【0044】
読み出しポインタ更新部50は、メモリ部30におけるデータRDの読み出し元のアドレスを指定する読み出しポインタRPを生成する回路であり、メモリ部30においてデータRDの読み出しが行われる度に読み出しポインタRPを更新する。すなわち、読み出しポインタ更新部50は、読み出し側の装置から読み出しイネーブル信号RENが入力されると、選択クロック信号MUX_CLKに同期して読み出しポインタRPを更新する。
【0045】
書き込みポインタ更新部40及び読み出しポインタ更新部50は、例えばバイナリコードを生成するカウンタを用いて構成される。
【0046】
状態信号生成部60は、書き込みポインタWP及び読み出しポインタRPに基づいて、メモリ部30に蓄積されるデータの数に関わる状態信号(書き込み状態信号W_NUM/FULL,読み出し状態信号R_NUM/FULL)を生成する。
【0047】
状態信号生成部60は、データの書き込みが行われる場合(要求調停部10から読み出し待ち信号R_WAITが出力される場合)、書き込みクロック信号WCLKに同期した状態信号を出力し、データの読み出しが行われる場合(要求調停部10から書き込み待ち信号W_WAITが出力される場合)は、読み出しクロック信号RCLKに同期した状態信号を出力する。
従って、書き込み側の装置は、書き込み待ち信号W_WAITが出力される期間を除いて、書き込みクロック信号WCLKに同期した(若しくは静的に変化しない)書き込み状態信号W_NUM/FULLを状態信号生成部60から取得できる。
また、読み出し側の装置は、読み出し待ち信号R_WAITが出力される期間を除いて、読み出しクロック信号RCLKに同期した(若しくは静的に変化しない)読み出し状態信号R_NUM/FULLを状態信号生成部60から取得できる。
【0048】
ここで、上述した構成を有する第1の実施形態に係る非同期FIFOメモリ装置1の動作について、
図4〜
図6のタイミング図を参照して説明する。
【0049】
まず、
図4のタイミング図を参照して、書き込み処理及び読み出し処理がそれぞれ待たされずに実行される場合の動作を説明する。
【0050】
書き込み側の装置は、書き込みを行う場合、まず書き込みクロック信号WCLKの供給を開始し、次いで、書き込み要求信号WREQ(
図4(B))と書き込み用のデータWD(
図4(D))を非同期FIFOメモリ装置1に入力する(t11)。要求調停部10は書き込み要求信号WREQを入力するが、このとき読み出し側の装置から読み出しクロック信号RCLKが供給されていないため、読み出し待ち信号R_WAIT(
図4(J))を出力しない。
【0051】
書き込み要求信号WREQの入力を開始してから一定時間が経過すると(t12)、書き込み側の装置は、書き込み待ち信号W_WAIT(
図4(E))が出力されているか否かを判定する。書き込み待ち信号W_WAITが出力されていないため、書き込み側の装置は、書き込みイネーブル信号WEN(
図4(C))を非同期FIFOメモリ装置1に入力する。
【0052】
書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図4(L))として出力する(t13)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、書き込み側の装置から供給された書き込み用のデータWDを書き込みポインタWPに応じたアドレスに格納する。また、このとき、書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図4(K))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N」から「N+1」へ増える。
【0053】
書き込み側の装置は、データの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートするとともに、非同期FIFOメモリ装置1への書き込みクロック信号WCLKの供給を停止する。
【0054】
読み出し側の装置は、読み出しを行う場合、まず非同期FIFOメモリ装置1へ読み出しクロック信号RCLKの供給を開始し、次いで、読み出し要求信号RREQ(
図4(G))を非同期FIFOメモリ装置1に入力する(t14)。要求調停部10は読み出し要求信号RREQを入力するが、このとき書き込み側の装置から書き込みクロック信号WCLKが供給されていないため、書き込み待ち信号W_WAIT(
図4(E))を出力しない。
【0055】
読み出し要求信号RREQの入力を開始してから一定時間が経過すると(t15)、読み出し側の装置は、読み出し待ち信号R_WAIT(
図4(J))が出力されているか否かを判定する。読み出し待ち信号R_WAITは出力されていないため、読み出し側の装置は、読み出しイネーブル信号RENを非同期FIFOメモリ装置1に入力する。
【0056】
読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図4(L))として出力する(t16)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスからデータRDを読み出し、読み出し側の装置へ出力する。また、このとき、読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図4(K))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N+1」から「N」へ減る。
【0057】
読み出し側の装置は、データの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、非同期FIFOメモリ装置1への読み出しクロック信号RCLKの供給を停止する。
【0058】
次に、
図5のタイミング図を参照して、先行する読み出し処理のために書き込み処理が待たされる場合の動作を説明する。
【0059】
図5の例では、先に読み出し側の装置から読み出し要求信号RREQ(
図5(G))が発生する(t21)。読み出し要求信号RREQが発生した後、書き込み側の装置が書き込みクロック信号WCLKの供給を開始する(t22)。非同期FIFOメモリ装置1の要求調停部10は、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化し、書き込み待ち信号W_WAIT(
図5(E))として書き込み側の装置に出力する(t23)。要求調停部10は、例えば2クロック周期で読み出し要求信号RREQの同期化を行う(t22,t23)。
【0060】
書き込み側の装置は、書き込みクロック信号WCLKの供給を開始した後、書き込み要求信号WREQ(
図5(B))を発生する(t24)。ただし、要求調停部10から書き込み待ち信号W_WAIT(
図5(E))が出力されている間、書き込み側の装置は、非同期FIFOメモリ装置1への書き込みイネーブル信号WEN(
図5(C))の入力を待機させる。
【0061】
書き込み側の装置から書き込み要求信号WREQが入力されたとき、要求調停部10は既に書き込み待ち信号W_WAITを出力している。そのため、要求調停部10は、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化せず、読み出し待ち信号R_WAIT(
図5(J))を出力しない(t25,t26)。すなわち、第2同期化部12への書き込み要求信号WREQの入力が調停制御部15によって抑止されるため(
図3)、第2同期化部12は読み出し待ち信号R_WAITを出力しない。
【0062】
読み出し側の装置は、読み出し要求信号RREQの入力を開始してから一定時間経過後、読み出しイネーブル信号REN(
図5(H))を非同期FIFOメモリ装置1に入力する(t27)。読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図5(L))として出力する(t28)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスからデータRDを読み出し、読み出し側の装置に出力する。読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図5(K))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N」から「N−1」へ減る。読み出し側の装置は、データRDの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、非同期FIFOメモリ装置1への読み出しクロック信号RCLKの供給を停止する。
【0063】
要求調停部10は、読み出し側の装置からの読み出し要求信号RREQの入力が終了すると(t28)、書き込みクロック信号WCLKの2クロック周期後に、書き込み待ち信号W_WAITの出力を終了する(t210)。書き込み待ち信号W_WAITの出力が終了すると、書き込み側の装置は、書き込みイネーブル信号WENを非同期FIFOメモリ装置1に入力する(t211)。書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図5(L))として出力する(t212)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、書き込み側の装置から供給された書き込み用のデータWDを書き込みポインタWPに応じたアドレスに格納する。書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図5(K))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N−1」から「N」へ増える。書き込み側の装置は、データの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートするとともに、非同期FIFOメモリ装置1への書き込みクロック信号WCLKの供給を停止する。
【0064】
次に、
図6のタイミング図を参照して、先行する書き込み処理のために読み出し処理が待たされる場合の動作を説明する。
【0065】
図6の例では、先に書き込み側の装置から書き込み要求信号WREQ(
図6(B))が発生する(t31)。書き込み要求信号WREQが発生した後、読み出し側の装置が読み出しクロック信号RCLKの供給を開始する(t32)。非同期FIFOメモリ装置1の要求調停部10は、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化し、読み出し待ち信号R_WAIT(
図6(J))として読み出し側の装置に出力する(t33)。要求調停部10は、読み出し要求信号RREQと同様に、例えば2クロック周期で書き込み要求信号WREQの同期化を行う(t32,t33)。
【0066】
読み出し側の装置は、読み出しクロック信号RCLKの供給を開始した後、読み出し要求信号RREQ(
図6(G))を発生する(t36)。ただし、要求調停部10から読み出し待ち信号R_WAITが出力されているため、読み出し側の装置は、非同期FIFOメモリ装置1への読み出しイネーブル信号RENの入力を待機させる。
【0067】
書き込み側の装置は、書き込み要求信号WREQの入力を開始してから一定時間経過後、書き込みイネーブル信号WEN(
図6(C))を非同期FIFOメモリ装置1に入力する(t34)。書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図6(L))として出力する(t35)。メモリ部30は、この選択クロック信号MUX_CLKに同期して書き込み側の装置からデータWDを取り込み、書き込みポインタWPに応じたアドレスにデータWDを格納する。書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図6(K))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N」から「N+1」へ増える。書き込み側の装置は、データWDの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートするとともに、非同期FIFOメモリ装置1への書き込みクロック信号WCLKの供給を停止する。
【0068】
要求調停部10は、書き込み側の装置からの書き込み要求信号WREQの入力が終了すると(t35)、読み出しクロック信号RCLKの2クロック周期後に、読み出し待ち信号R_WAITの出力を終了する(t38)。読み出し待ち信号R_WAITの出力が終了すると、読み出し側の装置は、読み出しイネーブル信号RENを非同期FIFOメモリ装置1に入力する(t39)。読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図6(L))として出力する(t310)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスに格納されたデータRDを読み出し、読み出し側の装置に出力する。読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図6(K))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N+1」から「N」へ減る。読み出し側の装置は、データの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、非同期FIFOメモリ装置1への読み出しクロック信号RCLKの供給を停止する。
【0069】
以上説明したように、本実施形態に係る非同期FIFOメモリ装置1によれば、書き込みクロック信号WCLKに同期した書き込み要求信号WREQが書き込み側の装置から入力されると、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化した読み出し待ち信号R_WAITが要求調停部10から読み出し側の装置へ出力され、この読み出し待ち信号R_WAITが出力される間は、読み出し側の装置において読み出しイネーブル信号RENの生成が待機される。また、読み出しクロック信号RCLKに同期した読み出し要求信号RREQが読み出し側の装置から入力されると、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化した書き込み待ち信号W_WAITが要求調停部10から書き込み側の装置へ出力され、この書き込み待ち信号W_WAITが出力される間は、書き込み側の装置において書き込みイネーブル信号WENの生成が待機される。書き込み側の装置から書き込みイネーブル信号WENが入力されると、書き込みクロック信号WCLKがクロック選択部20において選択クロック信号MUX_CLKとして選択され、読み出し側の装置から読み出しイネーブル信号RENが入力されると、読み出しクロック信号RCLKがクロック選択部20において選択クロック信号MUX_CLKとして選択される。
このように、本実施形態に係る非同期FIFOメモリ装置1によれば、書き込み動作を有効にする書き込みイネーブル信号WENと、読み出し動作を有効にする読み出しイネーブル信号RENとが競合しないように、両者の入力タイミングが調停されることから、クロック選択部20においては、グリッチのない単一の選択クロック信号MUX_CLKが生成される。
そして、本実施形態に係る非同期FIFOメモリ装置1では、メモリ部30,書き込みポインタ更新部40,読み出しポインタ更新部50及び状態信号生成部60が、クロック選択部20において生成された単一の選択クロック信号MUX_CLKに同期して動作する。
そのため、従来の非同期FIFOメモリ装置(
図16)のように、書き込みポインタを読み出しクロック信号に同期化する回路や、読み出しポインタを書き込みクロック信号に同期化する回路が不要であり、また、ポインタの同期化に伴う誤変換を防止する対策としてグレイコード等を用いなくてもよいことから、グレイコード等からバイナリコードへ変換を行うための回路が不要である。更に、状態信号(データ蓄積数,満状態,空状態等を示す信号)を生成する回路を、書き込み側と読み出し側にそれぞれ設けなくてもよい。
従って、本実施形態に係る非同期FIFOメモリ装置1は、従来の装置に比べて回路規模を大幅に小さくすることができるとともに、構成がシンプルになり、設計が容易となる。
【0070】
また、従来の非同期FIFOメモリ装置は、書き込み側のクロックドメインと読み出し側のクロックドメインにそれぞれ状態信号(データ蓄積数,満状態,空状態等を示す信号)を生成する回路が設けられている。各クロックドメインにおいて状態信号を生成するためには、他方のクロックドメインで生成されたポインタを同期化する必要がある。ところが、消費電力やノイズの発生を抑えるためにクロック信号を一時的に停止するような制御を行うと、そのクロックドメインでは他方のクロックドメインのポインタを同期化して取得できないため、正しい状態信号が得られないという問題が生じる。例えば、FIFOの蓄積状態に応じたイベント発生又は解除を読み出し側や書き込み側に通知するようなシステムの場合、それぞれのクロックドメインで常に正しい状態信号を生成する必要があるため、両方のクロック信号を常に供給しなくてはならない。
これに対し、本実施形態に係る非同期FIFOメモリ装置1では、書き込みクロック信号WCLKに同期して動作する書き込みポインタ更新部40が生成した書き込みポインタWPと、読み出しクロック信号RCLKに同期して動作する読み出しポインタ更新部50が生成した読み出しポインタRPとが、状態信号生成部60において状態信号の生成にそのまま使用される(同期化せずに使用される)。そのため、書き込みクロック信号WCLKと読み出しクロック信号RCLKの一方が一時的に停止した状態でも、正しい状態信号を生成することができる。従って、FIFOの蓄積状態を常時監視するようなシステムにおいても、クロック信号を一時的に停止する制御が可能である。
【0071】
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。
上述した第1の実施形態に係る非同期FIFOメモリ装置1では、要求調停部10において読み出し要求信号RREQ又は書き込み要求信号WREQの一方が他方に対して優先するように制御が行われている。そのため、例えば読み出し要求信号RREQが優先されている場合には、先に書き込み要求信号WREQが発生した場合でも、後から発生した読み出し要求信号RREQによって書き込み待ち信号W_WAITが出力され、書き込み処理が待たされてしまう可能性がある。
これに対し、本実施形態に係る非同期FIFOメモリ装置1では、常に一方の要求(読み出し要求,書き込み要求)のみが優先されるのではなく、時間的に早く発生した要求の方が優先され易くなる。
【0072】
第2の実施形態に係る非同期FIFOメモリ装置1は、
図2に示す非同期FIFOメモリ装置1と同様の構成を有しているが、要求調停部10の内部構成は
図3に示すものと異なっている。
【0073】
図7は、第2の実施形態に係る非同期FIFOメモリ装置における要求調停部10の構成の一例を示す図である。
図7に示す要求調停部10は、
図3に示す要求調停部10と同様な第1同期化部11及び12を有するとともに、調停制御部13を有する。
【0074】
調停制御部13は、書き込み側の装置から書き込み要求信号WREQが入力された場合、読み出し要求信号RREQを書き込みクロック信号WCLKに同期化した信号S11(以下、同期化信号S11と記す場合がある。)が第1同期化部11において出力されていないことを条件として、書き込み要求信号WREQを書き込みクロック信号WCLKに同期して保持するとともに、当該保持した書き込み要求信号WREQ(S13)を第2同期化部12へ入力する。これにより、書き込み要求信号WREQを同期化した読み出し待ち信号R_WAITが読み出し側の装置に出力されるため、読み出し側の装置において読み出し処理が待機される状態となる。
【0075】
調停制御部13は、書き込み要求信号WREQを保持している場合、書き込み側の装置への書き込み待ち信号W_WAITの出力を抑止する。書き込み要求信号WREQの保持後に読み出し要求信号RREQの同期化信号S11が第1同期化部11から出力されても、調停制御部13が書き込み待ち信号W_WAITの出力を抑止するため、書き込み処理が進行する。
【0076】
調停制御部13は、書き込み要求信号WREQの入力が終了すると、書き込み要求信号WREQの保持を解除する。これにより、第2同期化部12からの読み出し待ち信号R_WAITの出力が終了するため、読み出し側の装置において読み出し処理が可能となる。
【0077】
調停制御部13は、書き込み要求信号WREQを保持していないときは、第1同期化部11の同期化信号S11に応じた書き込み待ち信号W_WAITを書き込み側の装置に出力する。読み出し要求信号RREQを同期化した同期化信号S11が出力されているときに後から書き込み要求信号WREQが入力されても、調停制御部13は書き込み要求信号WREQを保持しないため、第2同期化部12から読み出し待ち信号R_WAITが出力されず、読み出し処理が進行する。
【0078】
調停制御部13は、例えば
図7において示すように、論理ゲート回路131,132,133,135とフリップフロップ134を有する。
論理ゲート回路131は、第1同期化部11の出力信号を論理反転した信号と書き込み要求信号WREQとの論理積を出力する。
論理ゲート回路132は、論理ゲート回路131の出力信号とフリップフロップ134に保持された信号との論理和を出力する。
論理ゲート回路133は、論理ゲート回路132の出力信号と書き込み要求信号WREQとの論理積を出力する。
フリップフロップ134は、論理ゲート回路133の出力信号を書き込みクロック信号WCLKに同期して保持する。フリップフロップ134が保持する信号は、第2同期化部12に入力される。
論理ゲート回路135は、フリップフロップ134に保持された信号を論理反転した信号と第1同期化部11の出力信号との論理積を、書き込み待ち信号W_WAITとして出力する。
【0079】
ここで、上述した調停制御部13を有する第2の実施形態に係る非同期FIFOメモリ装置1の動作について、
図8,
図9のタイミング図を参照して説明する。
【0080】
まず、
図8のタイミング図を参照して、先行する書き込み処理のために読み出し処理が待たされる場合の動作を説明する。
【0081】
図8の例では、先に読み出し側の装置から読み出し要求信号RREQ(
図8(I))が発生し(t41)、その後に書き込み側の装置から書き込み要求信号WREQ(
図8(B))が発生する(t42)。書き込み要求信号WREQが調停制御部13に入力されたとき、読み出し要求信号RREQは未だ同期化されておらず、同期化信号S11(
図8(F))として第1同期化部11から出力されていない。そのため、調停制御部13は、次の書き込みクロック信号WCLKの立ち上がり(t43)に同期して書き込み要求信号WREQを保持し、信号S13(
図8(C))として第2同期化部12に入力する。
【0082】
書き込み要求信号WREQを保持した信号S13が出力された後(t43)、第1同期化部11は、読み出し要求信号RREQの同期化信号S11(
図8(F))を出力する。調停制御部13は、このとき既に書き込み要求信号WREQを保持しているため、同期化信号S11を書き込み待ち信号W_WAITとして書き込み側の装置に出力しない。
【0083】
第2同期化部12は、調停制御部13に信号S13として保持された書き込み要求信号WREQ(
図8(C))を、2クロック周期(t44,t45)で読み出しクロック信号RCLKに同期化し、読み出し待ち信号R_WAIT(
図8(L))として読み出し側の装置に出力する。これにより、読み出し側の装置において読み出しイネーブル信号RENの入力が待機される。
【0084】
書き込み要求信号WREQ(
図8(B))の入力から一定時間が経過したとき(t46)、調停制御部13から書き込み待ち信号W_WAIT(
図8(G))が出力されていないため、書き込み側の装置は書き込みイネーブル信号WEN(
図8(D))を発生する。書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図8(N))として出力する(t47)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、書き込み側の装置から供給された書き込み用のデータWDを書き込みポインタWPに応じたアドレスに格納する。また、書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図8(M))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N」から「N+1」へ増える。
【0085】
書き込み側の装置は、データの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートする(t47)。調停制御部13は、書き込み要求信号WREQの入力が終了すると、次の書き込みクロック信号WCLKの立ち上がり(t48)において、書き込み要求信号WREQの保持を解除する(信号S13を「0」にする)。書き込み側の装置は、調停制御部13において書き込み要求信号WREQの保持が解除された後、書き込みクロック信号WCLKの供給を停止する。調停制御部13は、書き込み要求信号WREQの保持を解除すると、第1同期化部11から出力される同期化信号S11(
図8(F))を書き込み待ち信号W_WAIT(
図8(G))として書き込み側の装置に出力する。
【0086】
第2同期化部12は、書き込み要求信号WREQを保持した信号S13(
図8(C))がネゲートされると、2クロック周期後(t49,t410)に、読み出し待ち信号R_WAIT(
図8(L))をネゲートする。読み出し待ち信号R_WAITの出力が終了すると、読み出し側の装置は、読み出しイネーブル信号REN(
図8(J))を非同期FIFOメモリ装置1に入力する(t411)。読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図8(N))として出力する(t412)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスに格納されたデータRDを読み出し、読み出し側の装置に出力する。読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図8(M))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N+1」から「N」へ減る。読み出し側の装置は、データの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、非同期FIFOメモリ装置1への読み出しクロック信号RCLKの供給を停止する。
【0087】
次に、
図9のタイミング図を参照して、先行する読み出し処理のために書き込み処理が待たされる場合の動作を説明する。
【0088】
図9の例においても、先に読み出し側の装置から読み出し要求信号RREQ(
図9(I))が発生し(t51)、その後に書き込み側の装置から書き込み要求信号WREQ(
図9(B))が発生する(t53)。ただし、
図9の例では、書き込み要求信号WREQの発生と同じタイミング(t53)で、第1同期化部11が読み出し要求信号RREQの同期化信号S11(
図9(F))を出力する。読み出し要求信号RREQの同期化信号S11が出力されているため、調停制御部13は次のクロック周期(t54)で書き込み要求信号WREQを保持せず、信号S13を「0」のままとする。すなわち、調停制御部13は、書き込み要求信号WREQを第2同期化部12へ伝えない。他方、調停制御部13は、書き込み要求信号WREQを保持していないため、読み出し要求信号RREQの同期化信号S11をそのまま書き込み待ち信号W_WAITとして書き込み側の装置に出力する。これにより、書き込み側の装置において書き込みイネーブル信号WENの入力が待機される。
【0089】
読み出し要求信号RREQ(
図9(I))の入力から一定時間が経過したとき(t55)、調停制御部13から読み出し待ち信号R_WAITが出力されていないため、読み出し側の装置は読み出しイネーブル信号REN(
図9(J))を発生する。読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図9(N))として出力する(t56)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスからデータRDを読み出し、読み出し側の装置に出力する。読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図9(M))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N」から「N−1」へ減る。読み出し側の装置は、データRDの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、読み出しクロック信号RCLKの供給を停止する。
【0090】
第1同期化部11は、読み出し側の装置からの読み出し要求信号RREQの入力が終了すると(t56)、読み出しクロック信号RCLKの2クロック周期後(t57,t58)に、同期化信号S11の出力を終了する。このとき、調停制御部13は書き込み要求信号WREQを保持していないため(信号S13が「0」のため)、同期化信号S11をそのまま書き込み待ち信号W_WAIT(
図9(G))として出力している。従って、同期化信号S11の出力が終了すると、書き込み待ち信号W_WAITの出力も終了する。
【0091】
書き込み待ち信号W_WAITの出力が終了すると、書き込み側の装置は書き込みイネーブル信号WEN(
図9(C))を発生する(t59)。書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図9(N))として出力する(t510)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、書き込み側の装置から供給された書き込み用のデータWDを書き込みポインタWPに応じたアドレスに格納する。書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図9(M))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N−1」から「N」へ増える。書き込み側の装置は、データの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートする。
【0092】
読み出し要求信号RREQの同期化信号S11の出力が終了すると(t58)、調停制御部13は書き込み要求信号WREQを保持する(t59)。ただし、このとき既に読み出しクロック信号RCLKが停止しているため、第2同期化部12において同期化は行われず、読み出し待ち信号R_WAITは出力されない。書き込み要求信号WREQがネゲートされると(t510)、調停制御部13は書き込み要求信号WREQの保持を解除する(t511)。書き込み側の装置は、調停制御部13において書き込み要求信号WREQの保持が解除された後、書き込みクロック信号WCLKの供給を停止する。
【0093】
以上説明したように、本実施形態に係る非同期FIFOメモリ装置1によれば、書き込み側の装置から書き込み要求信号WREQが入力された場合、読み出し要求信号RREQの同期化信号S11が第1同期化部11において出力されていないことを条件として、書き込み要求信号WREQが書き込みクロック信号WCLKに同期して調停制御部13に保持され、当該保持された書き込み要求信号WREQが第2同期化部12へ入力され、第2同期化部12から読み出し側の装置へ読み出し待ち信号R_WAITが出力される。調停制御部13において書き込み要求信号WREQが保持されているときは、書き込み側の装置への書き込み待ち信号W_WAITの出力が抑止される。書き込み側装置からの書き込み要求信号WREQの入力が終了すると、調停制御部13において書き込み要求信号WREQの保持が解除され、第2同期化部12から読み出し側装置への読み出し待ち信号R_WAITの出力が終了する。調停制御部13において書き込み要求信号WREQが保持されていないときは、第1同期化部11の同期化信号S11に応じた書き込み待ち信号W_WAITが書き込み側の装置へ出力される。
すなわち、書き込み側装置からの書き込み要求信号WREQの入力が、第1同期化部11における読み出し要求信号RREQの同期化信号S11の出力よりも早い場合は、書き込み要求が読み出し要求に優先され、読み出し要求は書き込み処理が終わるまで待たされる。逆に、第1同期化部11における読み出し要求信号RREQの同期化信号S11の出力が、書き込み側装置からの書き込み要求信号WREQの入力よりも早い場合は、読み出し要求が書き込み要求に優先され、書き込み要求は読み出し処理が終わるまで待たされる。
従って、書き込み又は読み出しの一方が常に優先される方式に比べて、書き込み処理と読み出し処理の各々を発生頻度に応じてバランスよく実行することができる。
【0094】
なお、
図7に例示する調停制御部13では、書き込み要求信号WREQを保持して第2同期化部12に入力しているが、本実施形態はこの例に限定されない。
本実施形態の他の例では、調停制御部13が書き込み要求信号WREQの代わりに読み出し要求信号RREQを入力し、第1同期化部11の出力信号(S13)の代わりに第2同期化部12の出力信号を入力し、書き込み待ち信号W_WAITの代わりに読み出し待ち信号R_WAITを出力してもよい。
この例において、調停制御部13は、読み出し側の装置から読み出し要求信号RREQが入力された場合、書き込み要求信号WREQを同期化した信号が第2同期化部12において出力されていないことを条件として、読み出し要求信号RREQを読み出しクロック信号RCLKに同期して保持するとともに、当該保持した読み出し要求信号RREQを第1同期化部11へ入力し、読み出し要求信号RREQを保持しているときは、読み出し待ち信号R_WAITの出力を抑止し、読み出し要求信号RREQの入力が終了すると、読み出し要求信号RREQの保持を解除し、読み出し要求信号RREQを保持していないときは、第2同期化部12の出力信号に応じた読み出し待ち信号R_WAITを出力する。
読み出し側の装置からの読み出し要求信号RREQの入力が、第2同期化部12における書き込み要求信号WREQの同期化信号の出力よりも早い場合は、読み出し要求が書き込み要求に優先され、書き込み要求は読み出しみ処理が終わるまで待たされる。逆に、第2同期化部12における書き込み要求信号WREQの同期化信号の出力が、読み出し側装置からの読み出し要求信号RREQの入力よりも早い場合は、書き込み要求が読み出し要求に優先され、読み出し要求は書き込み処理が終わるまで待たされる。
従って、この場合も、書き込み又は読み出しの一方が常に優先される方式に比べて、書き込み処理と読み出し処理の各々を発生頻度に応じてバランスよく実行することができる。
【0095】
<第3の実施形態>
次に、本発明の第3の実施形態について説明する。
上述した第2の実施形態に係る非同期FIFOメモリ装置1では、書き込み要求と読み出し要求を調停するために要求信号(書き込み要求信号WREQ,読み出し要求信号RREQ)を保持し、保持した要求信号を同期化部(第1同期化部11,第2同期化部12)へ入力しているが、本実施形態に係る非同期FIFOメモリ装置1では、同期化部(第1同期化部11,第2同期化部12)から出力される同期化信号(S11,S12)を保持し、保持した同期化信号を待ち信号(書き込み待ち信号W_WAIT,読み出し待ち信号R_WAIT)として出力する。
【0096】
第3の実施形態に係る非同期FIFOメモリ装置1は、
図2に示す非同期FIFOメモリ装置1と同様の構成を有しているが、要求調停部10の内部構成については、
図3,
図7に示すものと異なっている。
【0097】
図10は、第3の実施形態に係る非同期FIFOメモリ装置における要求調停部10の構成の一例を示す図である。
図10に示す要求調停部10は、
図3に示す要求調停部10と同様な第1同期化部11及び12を有するとともに、調停制御部14を有する。
【0098】
調停制御部14は、書き込み要求信号WREQを読み出しクロック信号RCLKに同期化した信号S12(以下、同期化信号S12と記す場合がある。)が第2同期化部12から出力された場合、読み出し側の装置から読み出し要求信号RREQが入力されていないことを条件として、同期化信号S12を読み出しクロック信号RCLKに同期して保持するとともに、当該保持した同期化信号S12を読み出し待ち信号R_WAITとして読み出し側の装置に出力する。これにより、読み出し側の装置において読み出し処理が待機される状態となる。
【0099】
調停制御部14は、書き込み要求信号WREQの同期化信号S12を保持しているときは、第1同期化部11への読み出し要求信号RREQの入力を抑止する。同期化信号S1の保持後に読み出し要求信号RREQが入力されても、調停制御部14によって第1同期化部11への読み出し要求信号RREQの入力が抑止されるため、書き込み待ち信号W_WAITは出力されず、書き込み処理が進行する。
【0100】
調停制御部14は、書き込み側の装置からの書き込み要求信号WREQの出力が終了することによって第2同期化部12からの同期化信号S12が終了すると、同期化信号S12の保持を解除し、読み出し待ち信号R_WAITの出力を終了する。これにより、読み出し側の装置において読み出し処理が可能となる。
【0101】
調停制御部14は、書き込み要求信号WREQの同期化信号S12を保持していないときは、読み出し側の装置から入力される読み出し要求信号RREQに応じた信号S14を第1同期化部11に入力する。読み出し要求信号RREQが入力されているときに後から書き込み要求信号WREQの同期化信号S12が第2同期化部12において出力されても、調停制御部14はその同期化信号S12を保持しないため、読み出し待ち信号R_WAITは出力されず、読み出し処理が進行する。
【0102】
調停制御部13は、例えば
図10において示すように、論理ゲート回路141,142,143,145とフリップフロップ144を有する。
論理ゲート回路141は、読み出し要求信号RREQを論理反転した信号と第2同期化部12の出力信号との論理積を出力する。
論理ゲート回路142は、論理ゲート回路141の出力信号とフリップフロップ144に保持された信号との論理和を出力する。
論理ゲート回路143は、論理ゲート回路142の出力信号と第2同期化部12の出力信号との論理積を出力する。
フリップフロップ144は、論理ゲート回路143の出力信号を読み出しクロック信号RCLKに同期して保持する。フリップフロップ144が保持する信号は、読み出し待ち信号R_WAITとして読み出し側の装置に出力される。
論理ゲート回路145は、フリップフロップ144に保持された信号を論理反転した信号と読み出し要求信号RREQとの論理積を第1同期化部11に入力する。
【0103】
ここで、上述した調停制御部14を有する第3の実施形態に係る非同期FIFOメモリ装置1の動作について、
図11,
図12のタイミング図を参照して説明する。
【0104】
まず
図11のタイミング図を参照して、先行する書き込み処理のために読み出し処理が待たされる場合の動作を説明する。
【0105】
書き込み側の装置から書き込み要求信号WREQ(
図11(B))が入力されると(t61)、読み出しクロック信号RCLKの2クロック周期を経て(t62,t63)、第2同期化部12は書き込み要求信号WREQの同期化信号S12(
図11(K))を出力する。書き込み要求信号WREQの同期化信号S12が出力されたとき、読み出し側の装置からは未だ読み出し要求信号RREQ(
図11(G))が入力されていないため、調停制御部14は、次の書き込みクロック信号WCLKの立ち上がり(t64)において書き込み要求信号WREQの同期化信号S12を保持し、これを読み出し待ち信号R_WAIT(
図11(L))として読み出し側の装置に出力する。これにより、読み出し側の装置において読み出しイネーブル信号RENの入力が待機される。
【0106】
調停制御部14が読み出し待ち信号R_WAITを出力したとき(t64)、読み出し側の装置は読み出し要求信号RREQ(
図11(G))を発生する。このとき、調停制御部14は書き込み要求信号WREQの同期化信号S12を保持しているため、読み出し要求信号RREQを第1同期化部11へ入力しない。これにより、書き込み待ち信号W_WAITが出力されないため、書き込み側の装置において書き込み処理が進行する。
【0107】
書き込み要求信号WREQ(
図11(B))の入力から一定時間が経過したとき(t65)、調停制御部14から書き込み待ち信号W_WAIT(
図11(E))が出力されていないため、書き込み側の装置は書き込みイネーブル信号WEN(
図11(C))を発生する。書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図11(N))として出力する(t66)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、書き込み側の装置から供給された書き込み用のデータWDを書き込みポインタWPに応じたアドレスに格納する。また、書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図11(M))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N」から「N+1」へ増える。書き込み側の装置は、データの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートするとともに、書き込みクロック信号WCLKの供給を停止する。
【0108】
第2同期化部12は、書き込み側の装置からの書き込み要求信号WREQ(
図11(B))の入力が終了すると(t66)、読み出しクロック信号RCLKの2クロック周期後(t67,t68)に、書き込み要求信号WREQの同期化信号S12(
図11(K))の出力を終了する。第2同期化部12からの同期化信号S12の出力が終了すると、調停制御部14は、読み出しクロック信号RCLKの次のクロック周期(t69)において同期化信号S12の保持を解除し、読み出し待ち信号R_WAIT(
図11(L))の出力を終了する。読み出し待ち信号R_WAITの出力が終了すると、読み出し側の装置は読み出しイネーブル信号RENを発生する(t610)。読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図11(N))として出力する(t611)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスに格納されたデータRDを読み出し、読み出し側の装置に出力する。読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図11(M))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N+1」から「N」へ減る。読み出し側の装置は、データの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、読み出しクロック信号RCLKの供給を停止する。
【0109】
次に、
図12のタイミング図を参照して、先行する読み出し処理のために書き込み処理が待たされる場合の動作を説明する。
【0110】
書き込み側の装置から書き込み要求信号WREQ(
図12(B))が入力されると(t71)、読み出しクロック信号RCLKの2クロック周期を経て(t72,t73)、第2同期化部12は書き込み要求信号WREQの同期化信号S12(
図12(K))を出力する。書き込み要求信号WREQの同期化信号S12が出力されたとき、読み出し側の装置から既に読み出し要求信号RREQ(
図12(G))が入力されているため、調停制御部14は同期化信号S12を保持せず、読み出し待ち信号R_WAIT(11(L))を出力しない。これにより、読み出し側の装置において読み出し処理が進行する。
【0111】
他方、調停制御部14は、書き込み要求信号WREQの同期化信号S12を保持していないことから、読み出し側の装置から入力した読み出し要求信号RREQを信号S14(12(H))として第1同期化部11に入力する。信号S14を入力した第1同期化部11は、書き込みクロック信号WCLKの2クロック周期後(t74,t75)に書き込み待ち信号W_WAITを出力する。これにより、書き込み側の装置において書き込みイネーブル信号WENの入力が待機される。
【0112】
読み出し要求信号RREQ(
図12(G))の入力から一定時間が経過したとき(t76)、調停制御部14から読み出し待ち信号R_WAITが出力されていないため、読み出し側の装置は読み出しイネーブル信号REN(
図12(I))を発生する。読み出しイネーブル信号RENを入力したクロック選択部20は、読み出しクロック信号RCLKを選択クロック信号MUX_CLK(
図12(N))として出力する(t77)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、読み出しポインタRPに応じたアドレスからデータRDを読み出し、読み出し側の装置に出力する。読み出しポインタ更新部50は、選択クロック信号MUX_CLK(読み出しクロック信号RCLK)に同期して読み出しポインタRPを更新する。読み出しポインタRPが更新されると、状態信号生成部60は、新たな読み出しポインタRPに応じた状態信号(
図12(M))を生成する。データの読み出しが行われたため、状態信号が示すデータ蓄積数は「N」から「N−1」へ減る。読み出し側の装置は、データRDの読み出しが終わると、読み出し要求信号RREQ及び読み出しイネーブル信号RENをネゲートするとともに、読み出しクロック信号RCLKの供給を停止する。
【0113】
第1同期化部11は、読み出し要求信号RREQのネゲートに伴って信号S14がネゲートすると、書き込みクロック信号WCLKの2クロック周期後(t78,t79)に書き込み待ち信号W_WAIT(
図12(E))をネゲートする。調停制御部14からの書き込み待ち信号W_WAITの出力が終了すると、書き込み側の装置は書き込みイネーブル信号WEN(
図12(C))を発生する(t710)。書き込みイネーブル信号WENを入力したクロック選択部20は、書き込みクロック信号WCLKを選択クロック信号MUX_CLK(
図12(N))として出力する(t711)。メモリ部30は、この選択クロック信号MUX_CLKに同期して、書き込み側の装置から供給された書き込み用のデータWDを書き込みポインタWPに応じたアドレスに格納する。書き込みポインタ更新部40は、選択クロック信号MUX_CLK(書き込みクロック信号WCLK)に同期して書き込みポインタWPを更新する。書き込みポインタWPが更新されると、状態信号生成部60は、新たな書き込みポインタWPに応じた状態信号(
図12(M))を生成する。データの書き込みが行われたため、状態信号が示すデータ蓄積数は「N−1」から「N」へ増える。書き込み側の装置は、データの書き込みが終わると、書き込み要求信号WREQ及び書き込みイネーブル信号WENをネゲートするとともに、書き込みクロック信号WCLKの供給を停止する。
【0114】
以上説明したように、本実施形態に係る非同期FIFOメモリ装置1によれば、第2同期化部12から書き込み要求信号WREQを同期化した同期化信号S12が出力された場合、読み出し側の装置から読み出し要求信号RREQが入力されていないことを条件として、書き込み要求信号WREQの同期化信号S12が読み出しクロック信号RCLKに同期して調停制御部14に保持され、当該保持された同期化信号S12が読み出し待ち信号R_WAITとして読み出し側の装置に出力される。調停制御部14において書き込み要求信号WREQの同期化信号S12が保持されているときは、第1同期化部11への読み出し要求信号RREQの入力が抑止される。書き込み側の装置からの書き込み要求信号WREQの入力が終了することにより、第2同期化部12における同期化信号S12の出力が終了すると、調停制御部14において、書き込み要求信号WREQの同期化信号S12の保持が解除されるとともに、読み出し側の装置への読み出し待ち信号R_WAITの出力が終了する。調停制御部14において書き込み要求信号WREQの同期化信号S12が保持されていないときは、読み出し側の装置から入力される読み出し要求信号RREQに応じた信号S14が第1同期化部11に入力され、これに応じた書き込み待ち信号W_WAITが書き込み側の装置に出力される。
すなわち、読み出し側の装置からの読み出し要求信号RREQの入力が、第2同期化部12における書き込み要求信号WREQの同期化信号S12の出力よりも早い場合は、読み出し要求が書き込み要求に優先され、書き込み要求は読み出し処理が終わるまで待たされる。逆に、第2同期化部12における書き込み要求信号WREQの同期化信号S12の出力が、読み出し側の装置からの読み出し要求信号RREQの入力よりも早い場合は、書き込み要求が読み出し要求に優先され、読み出し要求は書き込み処理が終わるまで待たされる。
従って、本実施形態においても、書き込み又は読み出しの一方が常に優先される方式に比べて、書き込み処理と読み出し処理の各々を発生頻度に応じてバランスよく実行することができる。
【0115】
なお、
図10に例示する調停制御部14では、第2同期化部12の同期化信号S12を保持し、読み出し待ち信号R_WAITとして出力しているが、本実施形態はこの例に限定されない。
本実施形態の他の例では、調停制御部14が読み出し要求信号RREQの代わりに書き込み要求信号WREQを入力し、第2同期化部12の出力信号(S12)の代わりに第1同期化部11の出力信号(S11)を入力し、読み出し待ち信号R_WAITの代わりに書き込み待ち信号W_WAITを出力してもよい。
この例において、調停制御部14は、第1同期化部11から読み出し要求信号RREQを同期化した同期化信号S11が出力された場合、書き込み側の装置から書き込み要求信号WREQが入力されていないことを条件として、読み出し要求信号RREQの同期化信号S11を書き込みクロック信号WCLKに同期して保持し、これを書き込み待ち信号W_WAITとして書き込み側の装置に出力する。読み出し要求信号RREQの同期化信号S11を保持している場合、調停制御部14は、第2同期化部12への書き込み要求信号WREQの入力を抑止し、これにより、読み出し側の装置への読み出し待ち信号R_WAITの出力を抑止する。第1同期化部11において読み出し要求信号RREQの同期化信号S11の出力が終了すると、調停制御部14は、読み出し要求信号RREQの同期化信号S11の保持を解除するとともに、書き込み側装置への書き込み待ち信号W_WAITの出力を終了する。読み出し要求信号RREQの同期化信号S11を保持していない場合、調停制御部14は、書き込み側の装置から入力される書き込み要求信号WREQに応じた信号S14を第2同期化部12に入力する。
すなわち、書き込み側の装置からの書き込み要求信号WREQの入力が、第1同期化部11における読み出し要求信号RREQの同期化信号S11の出力よりも早い場合は、書き込み要求が読み出し要求に優先され、読み出し要求は書き込み処理が終わるまで待たされる。逆に、第1同期化部11における読み出し要求信号RREQの同期化信号S11の出力が、書き込み側の装置からの書き込み要求信号WREQの入力よりも早い場合は、読み出し要求が書き込み要求に優先され、書き込み要求は読み出し処理が終わるまで待たされる。
従って、この場合も、書き込み又は読み出しの一方が常に優先される方式に比べて、書き込み処理と読み出し処理の各々を発生頻度に応じてバランスよく実行することができる。
【0116】
<第4の実施形態>
次に、本発明の第4の実施形態について説明する。
本実施形態に係る非同期FIFOメモリ装置は、上述した各実施形態に係る非同期FIFOメモリ装置にスキャンテスト用の構成を加えたものである。
【0117】
図13は、第4の実施形態に係る非同期FIFOメモリ装置1の構成の一例を示す図である。本実施形態に係る非同期FIFOメモリ装置1は、例えば
図2に示す非同期FIFOメモリ装置1と同様な構成を有しており、その回路は複数の組み合わせ回路75と複数のスキャンテスト用のフリップフロップ80を用いて構成されている。回路を構成する複数のフリップフロップ80は、スキャンテストを実施する場合においては、シリアルデータを転送するシフトレジスタを構成するように縦続接続される。
【0118】
図13の例において、非同期FIFOメモリ装置1は、スキャンテスト時にクロック選択部20へ入力するクロック信号を切り替えるためのマルチプレクサ回路90を含んでいる。通常の動作を行う場合、マルチプレクサ回路90は、それぞれ所定のクロック信号(CK1,CK2)を書き込みクロック信号WCLK,読み出しクロック信号RCLKとしてクロック選択部20に入力するが、スキャンテストを行う場合には(端子SCAN_MODEの入力信号がアサートされた場合には)、所定のテスト装置から供給されるクロック信号SCAN_CLK1,SCAN_CLK2を書き込みクロック信号WCLK,読み出しクロック信号RCLKとしてクロック選択部20に入力する。これにより、スキャンテスト時においては、テスト装置が発生するクロック信号SCAN_CLK1,SCAN_CLK2に基づいて検査が行われる。
【0119】
図14は、本実施形態におけるクロック選択部20の構成の一例を示す図である。また、
図15は、
図14に示すクロック選択部20に含まれるクロック・ゲーティング回路21−1,21−2の構成の一例を示す図である。
図14に示すクロック選択部20は、クロック・ゲーティング回路21−1,21−2と、マルチプレクサ回路22と、フリップフロップ23と、OR回路24を有する。クロック・ゲーティング回路21−1,21−2は、OR回路25と、ラッチ回路26と、AND回路27をそれぞれ含む。
【0120】
クロック・ゲーティング回路21−1,21−2において、OR回路25は、端子SCAN_ENからの入力信号(信号SCAN_EN)と、イネーブル信号(書き込みイネーブル信号WEN,読み出しイネーブル信号REN)との論理和を出力する。ラッチ回路26は、入力されるクロック信号(書き込みクロック信号WCLK,読み出しクロック信号RCLK)が「0」から「1」へ立ち上がったときにOR回路25の出力信号を保持し、AND回路27に出力する。AND回路27は、ラッチ回路26の出力信号と入力されるクロック信号との論理積を出力する。
【0121】
クロック・ゲーティング回路21−1は、信号SCAN_EN又は書き込みイネーブル信号WENが「1」の場合、入力される書き込みクロック信号WCLKを出力し、信号SCAN_ENと書き込みイネーブル信号WENが両方「0」の場合、出力を「0」に固定する。
【0122】
クロック・ゲーティング回路21−2は、信号SCAN_EN又は読み出しイネーブル信号RENが「1」の場合、入力される読み出しクロック信号RCLKを出力し、信号SCAN_ENと読み出しイネーブル信号RENが両方「0」の場合、出力を「0」に固定する。
【0123】
フリップフロップ23は、読み出しクロック信号RCLKの立ち下がりに同期して、読み出しイネーブル信号RENを保持する。
OR回路24は、信号SCAN_ENとフリップフロップ23に保持された信号との論理和を出力する。
マルチプレクサ回路22は、OR回路24の出力信号が「0」の場合、クロック・ゲーティング回路21−1の出力を選択し、OR回路24の出力信号が「1」の場合、クロック・ゲーティング回路21−2の出力を選択する。マルチプレクサ回路22において選択された信号が、選択クロック信号MUX_CLKとして出力される。
【0124】
ここで、上述した構成を有する非同期FIFOメモリ装置1において、スキャンテストを実施する場合の動作について説明する。
【0125】
スキャンテストを実施する場合、マルチプレクサ回路90に入力される端子SCAN_MODEの信号がアサートされる。これにより、所定のテスト装置から供給されるクロック信号SCAN_CLK1,SCAN_CLK2は、それぞれ書き込みクロック信号WCLK,読み出しクロック信号RCLKとしてクロック選択部20に入力される。
【0126】
信号SCAN_ENが「1」に設定されると、テスト装置から供給されるシリアルデータは、シフトレジスタを構成するように縦続接続された複数のフリップフロップ80(スキャン・チェーン)において順次にシフトする(シフトモード)。
信号SCAN_ENが「1」に設定された場合、マルチプレクサ回路22ではクロック・ゲーティング回路21−2の出力が選択され、クロック・ゲーティング回路21−2では読み出しクロック信号RCLKがそのまま出力されることから、クロック選択部20においては、読み出しクロック信号RCLKが選択クロック信号MUX_CLKとして出力される。この選択クロック信号MUX_CLKは、一部のフリップフロップ群95に供給される。
従って、スキャン・チェーンにおいてデータをシフトさせるシフトモードにおいては、読み出しクロック信号RCLKに基づいて、フリップフロップ群95のシリアルデータがシフトされる。
【0127】
データのシフトが完了すると、信号SCAN_ENは「0」に設定される。これにより、各フリップフロップ80の入力と出力は、通常動作と同じデータパスに接続された状態となる。各フリップフロップ80には、組み合わせ回路75からの入力信号が保持される(キャプチャモード)。
信号SCAN_ENが「0」の場合において読み出しイネーブル信号RENが「1」になると、フリップフロップ23において遅延された読み出しイネーブル信号RENが「1」となる期間において、クロック・ゲーティング回路21−2から出力される読み出しクロック信号RCLKがマルチプレクサ回路22により選択され、フリップフロップ群95の各フリップフロップ80に入力される。
信号SCAN_ENが「0」の場合において読み出しイネーブル信号RENが「0」かつ書き込みイネーブル信号WENが「1」になると、クロック・ゲーティング回路21−1から出力される書き込みクロック信号WCLKがマルチプレクサ回路22により選択され、フリップフロップ群95の各フリップフロップ80に入力される。
信号SCAN_ENが「0」の場合において読み出しイネーブル信号RENが「0」かつ書き込みイネーブル信号WENが「0」になると、マルチプレクサ回路22により選択されるクロック・ゲーティング回路21−1の出力が「0」に固定されるため、選択クロック信号MUX_CLKは「0」に固定される。
このように、組み合わせ回路75からの信号が各フリップフロップ80に保持されるキャプチャモードにおいては、イネーブル信号(書き込みイネーブル信号WEN,読み出しイネーブル信号REN)に応じたクロック信号(書き込みクロック信号WCLK,読み出しクロック信号RCLK)がクロック選択部20において選択され、フリップフロップ群95の各フリップフロップ80に入力される。
【0128】
以上説明したように、本実施形態に係る非同期FIFOメモリ装置1によれば、スキャンテストのシフトモードにおいて、スキャン・チェーンを構成する各フリップフロップ80に読み出しクロック信号RCLKが供給され、スキャンテストのキャプチャモードにおいては、イネーブル信号(書き込みイネーブル信号WEN,読み出しイネーブル信号REN)に応じたクロック信号(書き込みクロック信号WCLK,読み出しクロック信号RCLK)が各フリップフロップ80に供給される。これにより、非同期FIFOメモリ装置1の書き込み動作と読み出し動作を、スキャンテストにおいて正しく検査することができる。
【0129】
なお、上述した実施形態では、シフトモードにおいて読み出しクロック信号RCLKが選択されているが、本実施形態の他の例では、書き込みクロック信号WCLKが選択されるようにしてもよい。
【0130】
以上、本発明の幾つかの実施形態について説明したが、本発明は上記の形態にのみ限定されるものではなく、他の種々のバリエーションを含んでいる。
【0131】
例えば上述した実施形態における回路構成は一例であり、同等な機能を有する他の回路構成に変更してもよい。
【0132】
また、上述した実施形態ではFIFOメモリ装置を例に挙げているが、本発明はこれに限定されるものではなく、例えばLIFOやリングバッファなどのメモリ装置にも本発明は適用可能である。