(57)【要約】【課題】非同期回路間で、確実にデータ転送する。【解決手段】ＮＡＮＤからは、転送データ数分のＤＱＳ２２と、ＤＱ２１とが順次出力される。Ｉ／Ｏブロック１０は、データ保持回路１１を介して転送データをＦＩＦＯ３０に書き込む。ＦＩＦＯ３０に書き込まれたデータは、データ転送先のクロック信号に同期して読み出され、マルチプレクサ４２を介して転送先内部に取り込まれる。最終データは、データ保持回路１１には保持されるが、ＦＩＦＯ３０には転送されない。マルチプレクサ４２は、データ保持回路１１に直接接続する経路を用いて、データ保持回路１１に保持される最終データをシステムクロックに同期して取得する。【選択図】図１
2010278798.tif 000002
【特許請求の範囲】
【請求項１】
非同期回路間でデータを転送する非同期インタフェース回路において、
データ転送元の第１のクロック信号に同期して転送データを所定の単位で順次入力し、次の転送データが入力されるまでの間保持するデータ保持回路と、
前記データ保持回路に接続し、前記データ保持回路に保持される前記転送データを前記第１のクロック信号に同期して順次記憶するとともに、記憶された前記転送データをデータ転送先の第２のクロック信号に同期して記憶された順に読み出す非同期バッファと、
前記非同期バッファと、前記データ保持回路とに接続するとともに、前記第２のクロック信号に同期して前記非同期バッファの動作状態を監視し、前記非同期バッファの動作状態として前記転送データの転送処理中が検出されたときは前記非同期バッファを選択して前記転送データを読み出し、前記転送データの転送処理停止が検出されたときは前記データ保持回路を選択して保持される転送データを読み出し、読み出した前記転送データを前記データ転送先に出力する選択回路と、
を有することを特徴とする非同期インタフェース回路。
【請求項２】
前記非同期バッファに前記転送データを書き込む領域を指示する書き込みポインタと、前記非同期バッファから前記転送データを読み出す領域を指示する読み出しポインタとを比較し、前記書き込みポインタと前記読み出しポインタとが一致している時間を計時するカウンタを有し、
前記選択回路は、前記カウンタの値が所定の値を超えたとき、前記非同期バッファを介した前記転送データの転送処理が停止したと判断する、
ことを特徴とする請求項１記載の非同期インタフェース回路。
【請求項３】
前記第１のクロック信号に同期する前記転送データの前記非同期バッファへの書き込み許可信号を監視し、前記書き込み許可信号が所定の期間許可状態にあるときは、前記書き込み許可信号を同期信号として検出する同期回路を、さらに有し、
前記選択回路は、前記非同期バッファに対する前記転送データの転送処理停止が検出され、かつ、前記書き込みデータ有が検出されたときは、前記データ保持回路から読み出した転送データを選択出力する、
ことを特徴とする請求項１または２記載の非同期インタフェース回路。
【請求項４】
非同期回路間でのデータ転送を制御する非同期データ転送方法において、
データ保持回路が、データ転送元の第１のクロック信号に同期して転送データを所定の単位で順次入力し、次の転送データが入力されるまでの間保持し、
非同期バッファが、前記データ保持回路に接続し、前記データ保持回路に保持される前記転送データを前記第１のクロック信号に同期して順次記憶するとともに、記憶された前記転送データをデータ転送先の第２のクロック信号に同期して記憶された順に読み出し、
選択回路が、前記非同期バッファと、前記データ保持回路とに接続するとともに、前記第２のクロック信号に同期して前記非同期バッファの動作状態を監視し、前記非同期バッファの動作状態として前記転送データの転送処理中が検出されたときは前記非同期バッファを選択して前記転送データを読み出し、前記転送データの転送処理停止が検出されたときは前記データ保持回路を選択して保持される転送データを読み出し、読み出した前記転送データを前記データ転送先に出力する、
ことを特徴とする非同期データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
非同期インタフェース回路及び非同期データ転送方法に関し、特に、非同期回路間で非同期バッファを経由してデータを転送する非同期インタフェース回路及び非同期データ転送方法に関する。
【背景技術】
【０００２】
非同期回路間でデータを転送するための非同期インタフェース回路では、転送元のクロック信号に同期して転送先回路から出力されるデータを、転送先のクロックに同期して転送先回路に入力させるクロック乗換が行われる。
【０００３】
そのためのクロック乗換回路として、転送元（送信側）と、転送先（受信側）とで同期をとる必要のない非同期バッファを介したデータ転送手法がある。例えば、非同期バッファとして、送信側のデータ伝送経路と受信側のデータ伝送経路との間に先入れ先出しバッファ（以下、ＦＩＦＯ（First In First Out）とする）を備えたクロック乗換回路がある（例えば、特許文献１参照）。送信側から送られる書き込みクロックでＦＩＦＯ内に書き込まれたデータは、受信側の読み出しクロックによって、書き込まれた順に読み出すことができる。
【０００４】
また、非同期インタフェース回路は、データの転送元と転送先との製造元が異なることも多く、予めインタフェース仕様が決められている場合も多い。例えば、ＮＡＮＤ型フラッシュメモリのインタフェース仕様であるＯＮＦＩ（Open NAND Flash Interface）は、ＤＤＲ（Double Data Rate）インタフェースをベースにしたフラッシュメモリ・インタフェースを規定している。ＯＮＦＩでは、コントローラからのデータ読み出し要求に対し、フラッシュメモリは要求データの出力に必要なクロック数の出力クロック信号を生成し、この出力クロック信号に同期してデータを出力する。そのインタフェース仕様の詳細は、業界標準団体のひとつであるＯＮＦＩによって規定され、仕様書が公表されている（ＵＲＬ；http://onfi.org/）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１１５４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の非同期インタフェース回路では、仕様に準拠していてもデータ転送が正常にできないケースがあった。
例えば、上記のＯＮＦＩは、ＤＤＲインタフェースをベースとしているが、対象となるフラッシュメモリは、内部動作について一般的なＤＤＲ−ＲＡＭ（Random Access Memory）と同等であるとは限らない場合がある。このため、フラッシュメモリのデータ読み書きを制御する制御装置（以下、コントローラとする）をＯＮＦＩ仕様通りに設計した場合でも、ＯＮＦＩ仕様準拠のすべてのフラッシュメモリと接続できない場合があった。例を挙げて説明する。
【０００７】
図６は、ＯＮＦＩ仕様のＤＤＲ−ＤＡＴＡリードのタイミング例を示した図である。ＤＤＲ−ＤＡＴＡリードは、フラッシュメモリからコントローラへのデータ転送になる。
ここで、図のＣＬＫは、転送先のコントローラの発生させるクロック信号であり、例えば、クロック・サイクルを１２ナノ秒（以下、ｎｓｅｃとする）とする。ＡＬＥ（Address Latch Enable）／ＣＬＥ（Command Latch Enable）は、コントローラが発生させる信号で、フラッシュメモリから読み出したいデータ数に応じたクロック・サイクル数の間アサートされる。図の例では、５ワード分のデータ読み出しのため、クロックＣＬＫの５クロック・サイクルの間ＡＬＥ／ＣＬＥがＨｉｇｈレベルになる。以下、この区間をアサートサイクルと呼ぶ。
【０００８】
フラッシュメモリ側では、ＡＬＥ／ＣＬＥのアサートサイクルの間のクロックＣＬＫ数をカウントし、発行するＤＱＳの数を決める。ＤＱＳは、出力データ（コントローラ側からは読み出しデータになる）を転送するための出力クロック信号になる。図の例では、ＡＬＥ／ＣＬＥのアサートサイクル９０の間に検出されたクロックＣＬＫ数は「５」であり、ＤＱＳの発行数は、「５」になる。しかし、フラッシュメモリが、コントローラのクロックＣＬＫを検出してから、実際にＤＱＳを発行するまでには、遅延ｔＤＱＳＤ９１が生じる。ＯＮＦＩの仕様では、ｔＤＱＳＤ９１の最大値は２０ナノ秒と決められている。フラッシュメモリの個体差などもあり、ｔＤＱＳＤ９１は０〜２０ｎｓｅｃの幅を持つ。この値は、コントローラ側のクロック・サイクル（１２ナノ秒）よりも大きく、コントローラ側でデータを取り込む際のタイミングを定義することができない。このため、コントローラ側でタイミングを合わせてデータを取り込むことができないという問題点がある。
【０００９】
また、ＦＩＦＯを用いたデータ転送を行う場合、少なくともデータ（ＤＱ）の取り込みと、ＦＩＦＯへの書き込みという２段以上のデータ伝送が行われる。ＤＱＳはコントローラの要求サイズ分しか発行されないため、コントローラ側がリードデータをＤＱＳ同期で２段以上伝送する場合、最終データ９２が転送不可になるという問題点もある。すなわち、最終のＤＱＳでは、最終データ９２が取り込まれる（１段目）。しかし、次のＤＱＳが発生しないため、最終データがＦＩＦＯに書き込むという２段目の処理が実行されない。
【００１０】
上記課題を解決するために、確実にデータ転送が可能な非同期インタフェース回路及び非同期データ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、データ保持回路、非同期バッファ及び選択回路を有し、非同期回路間でデータを転送する非同期インタフェース回路が提供される。
データ保持回路は、データ転送元の第１のクロック信号に同期して転送データを所定の単位で順次入力し、次の転送データが入力されるまでの間保持する。非同期バッファは、このデータ保持回路に接続し、データ保持回路に保持される転送データを第１のクロック信号に同期して順次記憶する。また、記憶された転送データは、データ転送先の第２のクロック信号に同期して記憶された順に読み出す。選択回路は、非同期バッファと、データ保持回路とに接続し、第２のクロック信号に同期して、非同期バッファの動作状態を監視する。そして、非同期バッファの動作状態として、転送データの転送処理中が検出されたときは、この非同期バッファを選択して転送データを読み出す。また、転送データの転送処理停止が検出されたときは、データ保持回路を選択して保持される転送データを読み出す。読み出した転送データは、データ転送先に出力する。
【００１２】
また、上記課題を解決するために、上記の非同期インタフェース回路の処理手順を実行する非同期データ転送方法が提供される。
【発明の効果】
【００１３】
開示の非同期インタフェース回路及び非同期データ転送方法によれば、非同期バッファをデータ転送経路とする経路を用いてデータを転送するとともに、最終データは、別の経路によりデータを転送する。これにより、転送元のクロック消失で転送できない最終データを別の経路を介して転送することができ、非同期回路間で確実にデータ転送を行うことが可能となる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の非同期インタフェース回路の構成例を示したブロック図である。
【図２】図１の非同期インタフェース回路におけるデータ転送（バッファへの書き込み）動作のタイミング例を示した図である。
【図３】図１の非同期インタフェース回路におけるデータ転送（バッファからの読み出し）動作のタイミング例を示した図である。
【図４】第２の実施の形態の非同期インタフェース回路の構成例を示したブロック図である。
【図５】図４の非同期インタフェース回路におけるデータ転送動作のタイミング例を示した図である。
【図６】ＯＮＦＩ仕様のＤＤＲ−ＤＡＴＡリードのタイミング例を示した図である。
【発明を実施するための形態】
【００１５】
以下、実施の形態を、図面を参照して説明する。
図１は、第１の実施の形態の非同期インタフェース回路の構成例を示したブロック図である。
【００１６】
この非同期インタフェース回路は、例えば、ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤとする）にデータの読み書きを行うメモリコントローラに実装される。また、図は、ＮＡＮＤに記憶されるデータをコントローラ側に転送する読み出し回路を示している。
【００１７】
非同期インタフェース回路内は、システムクロックで動作するシステム部（Ｓｙｓｔｅｍ−ＣＬＫ  Ｄｏｍａｉｎ）と、ＤＱＳで動作するＤＱＳ部（ＤＱＳ−ＣＬＫ  Ｄｏｍａｉｎ）とに分かれる。図の１点鎖線は、システム部とＤＱＳ部との境界を示している。また、非同期バッファ（ここでは、ＦＩＦＯ）３０は、ＤＱＳ部とシステム部の境界線上に配置され、ＤＱＳと、システムクロックのどちらでも動作する。
【００１８】
ここで、ＮＡＮＤから入力されるＤＱ２１及びＤＱＳ２２と、ＮＡＮＤに出力されるＡＬＥ／ＣＬＥ（信号）２３について説明する。
ＤＱ２１は、データ信号であり、ＮＡＮＤからは、１ワードを単位とするデータが８ビット幅で入力される。例えば、上位側（ｂｉｔ８−１５）と、下位側（ｂｉｔ０−７）が交互に入力される。ＤＱＳ２２は、ＤＱ２１を転送するため、ＮＡＮＤが発行するデータストローブ信号であり、Ｉ／Ｏブロック１０を動作させるクロック信号になる。後述するＡＬＥ／ＣＬＥ２３のアサートサイクルの間に計測されたシステムクロック数に相当するクロック数のクロック信号が発行される。ＡＬＥ／ＣＬＥ２３は、アクセス制御を行うアクセス制御ブロックが、要求するデータ数に応じたアサートサイクルの間、Ｈｉｇｈレベルになるイネーブル信号であり、システム側が設定する。
【００１９】
ＮＡＮＤは、ＡＬＥ／ＣＬＥ２３がアサートサイクルの間に検出されたシステムクロック数に応じたＤＱＳ２２を、アサートサイクル開始の検出からｔＤＱＳＤ遅延後に発行開始する。このとき、ＤＱＳ２２に同期させて、ＤＱ２１も出力する。
【００２０】
ＤＱＳ部は、データ保持回路１１、ライトイネーブル（以下、ＷＥとする）設定回路１２、ＣＬＫバッファ１３及びシフト回路１４を有し、ＮＡＮＤとの間の信号伝達処理を行うＩ／Ｏブロック１０として動作する。ＤＱＳ部内において、システム部から読み出し要求されたリードデータに相当するＤＱ２１は、データ保持回路１１、ＦＩＦＯ３０と経由する２段のデータ転送が行われる。
【００２１】
データ保持回路１１は、入力側はＤＱ２１、出力側はＦＩＦＯ３０と、システム部のマルチプレクサ４２に接続され、ＮＡＮＤからＤＱ２１を入力し、入力したデータを、次のデータが入力されるまでの間保持する。クロック信号の立ち上がりエッジに同期して、入力されたＤＱ２１を保持する第１のフリップフロップ回路（ＦＦ１）と、クロック信号の立ち下がりエッジに同期して入力されたＤＱ２１を保持する第２のフリップフロップ回路（ＦＦ２）と、を有する。なお、クロック信号は、シフト回路１４が生成するＤＱＳシフト信号を用いる。ＤＱＳシフト信号については後述する。
【００２２】
ＷＥ設定回路１２は、入力側がＣＬＫバッファ１３、出力側がＦＩＦＯ３０に接続され、例えば、ＦＦで構成される。ＣＬＫバッファ１３を介して入力されるＤＱＳシフト信号が検出されたときは、ＦＩＦＯ３０のライトイネーブル信号ＷＥの状態を「書き込み許可」にする。一旦セットした「書き込み許可」は、アクセス制御ブロックからの指示でリセットする。
【００２３】
シフト回路１４は、ＤＱＳ２２を入力し、ＤＱＳ２２の位相を９０度シフトしたＤＱＳシフト信号を生成し、データ保持回路１１及びＣＬＫバッファ１３に出力する。
ＦＩＦＯ３０は、入力側がＤＱＳ部のデータ保持回路１１、出力側がシステム部のＦＦ４４を介してマルチプレクサ４２に接続し、ＤＱＳ部からシステム部へのデータ転送を行う。データ転送処理は、書き込み処理部３１ａと、読み出し処理部３１ｂとを有する転送処理部３１によって制御される。書き込み処理部３１ａでは、ＤＱＳシフト信号を書き込みクロックＷＣＬＫとして、データ保持回路１１に保持されている転送データをＦＩＦＯ３０に書き込む。書き込みが行われている領域は、書き込みポインタＷＰによって指示される。読み出し処理部３１ｂでは、システムクロックを読み出しクロックＲＣＬＫとしてＦＩＦＯ３０に書き込まれたデータを読み出し、システム部内部に出力する。読み出し処理部３１ｂでは、システムクロックで動作するが、書き込みポインタＷＰをシステムクロックで同期化して、システムクロック同期の読み出しポインタＲＰと比較することで、ＦＩＦＯ３０にデータがセットされたことを認識する。そして、データがセットされていれば、ＦＩＦＯ３０から読み出す。すなわち、ＦＩＦＯ３０を介してデータが転送されているときは、書き込みポインタＷＰの指示が、読み出しポインタＲＰの指示に先行する。したがって、不一致のときは、ＦＩＦＯ３０へのデータ転送処理中であると判断できる。データ転送が停止すると、ポインタは一致する。
【００２４】
以上のＩ／Ｏブロック１０に含まれる各回路は、ＤＱＳ２２が入力しているときのみ、動作する。
システム部は、メモリコントローラのシステムクロック４１で動作する。マルチプレクサ４２、ＦＩＦＯ３０の状態を監視する監視部４３及びＦＦ４４を有する。
【００２５】
マルチプレクサ４２は、ＦＦ４４を介してＦＩＦＯ３０に接続するとともに、ＤＱＳ部のデータ保持回路１１に接続し、ＦＩＦＯ３０またはデータ保持回路１１からの入力信号（リードデータ）をメモリコントローラに選択出力する選択回路として機能する。監視部４３の指示するＦＩＦＯ３０の動作状態に基づいて、ＤＱＳ部によってＦＩＦＯ３０への転送データ書き込みが処理中と判断されるときは、ＦＩＦＯ３０から入力する転送データを選択出力する。ＤＱＳ部によるＦＩＦＯ３０への転送データ書き込みが終了していると判断されるときは、データ保持回路１１に保持されるデータを選択出力する。
【００２６】
監視部４３は、ＦＩＦＯ３０の動作状態をチェックするためのカウンタ４３ａと、動作状態をステートとして表すステートマシン４３ｂとを有する。カウンタ４３ａは、ＦＩＦＯ３０のデータ転送が停止してからの経過時間をカウントする。通常状態、すなわち、ＦＩＦＯ３０を介してデータが転送されているときは、書き込みポインタＷＰが、読み出しポインタＲＰに先行する。したがって、不一致のときは、ＦＩＦＯ３０へのデータ書き込みが処理中であると判断できる。データ転送が停止すると、ポインタは一致する。そこで、書き込みポインタＷＰと、読み出しポインタＲＰと、を比較し、一致しているときはカウント値を増加させ、不一致のときはカウント値を減じる動作を行う。これにより、データ転送が行われている間は、カウント値は増加せず、データ転送が停止するとカウント値が増加を始める。ステートマシン４３ｂは、カウンタ４３ａのカウント値を監視し、カウント値が所定の値を超えたとき、データ転送が停止したと判断する。そして、マシンステートを設定する。以下の説明では、ステートは、データ転送が行われていない初期状態を示す「ｉｄｌｅ」、データ転送中の「ｓｔａｔｅ−１」、データ転送の停止が検出された「ｓｔａｔｅ−２」のいずれかの状態にあるとする。
【００２７】
この非同期インタフェース回路の動作について図２と図３を用いて説明する。
図２は、図１の非同期インタフェース回路におけるデータ転送（バッファへの書き込み）動作のタイミング例を示した図である。
【００２８】
図の「Ｓｙｓ」は、システムクロック及びシステムクロックで動作する部分の入出力信号を示している。「ＤＱＳ」は、ＤＱＳ及びＤＱＳで動作する部分の入出力信号を示している。
【００２９】
図２の“Ｓｙｓ．ＣＬＫ”は、システムクロック信号を示している。“Ｓｙｓ．ＡＬＥ／ＣＬＥ”は、システム部が、読み出しを要求するデータ数に応じて決められたアサートサイクルの間Ｈｉｇｈレベルに維持する。図２の例では、Ｓｙｓ．ＣＬＫ（０）からＳｙｓ．ＣＬＫ（７）の間の８データ分のアサートサイクルで、ＡＬＥ／ＣＬＥがＨｉｇｈレベルになっている。また、データ転送の方向を決める“Ｓｙｓ．Ｗ／Ｒ”は、ＮＡＮＤからコントローラへのデータ転送を行うことを示している。以上の“Ｓｙｓ．ＣＬＫ”、“Ｓｙｓ．ＡＬＥ／ＣＬＥ”及び“Ｓｙｓ．Ｗ／Ｒ”は、システム部が発生させる信号で、ＮＡＮＤに伝達される。
【００３０】
上記の信号を受け、ＮＡＮＤは、ＡＬＥ／ＣＬＥのアサートサイクル間のクロック・サイクル数分のＤＱＳ２２及びＤＱ２１をＩ／Ｏブロック１０に出力する。図の例では、アサートサイクル間のクロック・サイクル数「８」分のＤＱ２１と、ＤＱＳ２２が出力される［ａ］。ＤＱ２１は、１ワード単位のデータが８ビットずつに分割され、ＤＱＳ２２に同期して出力される。各８ビット単位のデータをｄ１，ｄ２，・・・，ｄ１６（図２では、ｄ１０以降のｄは省略）とする。図２では、ＤＱＳ２２は、“ＤＱＳ  ＤＱＳ”、ＤＱは“ＤＱＳ  ＤＱ［７：０］”によって表されている。
【００３１】
続いて、ＤＱＳ部内のＩ／Ｏブロック１０の動作について説明する。ＤＱＳ２２が入力されるとともに、Ｉ／Ｏブロック１０の各回路は動作を開始する。
Ｉ／Ｏブロック１０では、シフト回路１４が入力されたＤＱＳからＤＱＳシフト信号を生成する（図２では、“ＤＱＳ  ｓｈｉｆｔ  ＤＱＳ”）。ＤＱＳシフト信号の入力が開始されると、ＷＥ設定回路１２はＦＩＦＯ３０のライトイネーブル信号ＷＥ（図２では、“ＤＱＳ  Ｂｕｆ．／ＷＥ”）をセットする。また、データ保持回路１１では、ＤＱＳシフト信号の立ち上がりでＦＦ１に、立ち下がりでＦＦ２にＤＱ２１の値をセットする。ＦＦ１のＤＱ２１セットは、図２では“ＤＱＳ  Ｕｐｅｄｇｅ−ｃａｐｔｕｒｅ  ＦＦ”で表されている。同様に、ＦＦ２のＤＱ２１セットは、図２では“ＤＱＳ  Ｄｏｗｎｅｄｇｅ−ｃａｐｔｕｒｅ  ＦＦ”で表されている。また、ＦＦ１及びＦＦ２に保持されているデータは、ＤＱＳシフト信号をクロックとして、ＦＩＦＯ３０に転送される。例えば、最初のＤＱＳシフト信号の立ち上がりで、ＦＩＦＯ３０のライトイネーブル信号ＷＥがセットされるとともに、ＤＱ２１がＦＦ１にセットされる。
【００３２】
また、ＦＦ１にセットされたデータ“ＤＱＳ  Ｕｐｅｄｇｅ−ｃａｐｔｕｒｅ  ＦＦ”は、ＦＩＦＯ３０に伝搬できる状態になる（図２では、“ＤＱＳ  Ｂｕｆ／Ｗｔ．Ｄａｔａ−Ｈｉ”）。同様に、ＦＦ２にセットされたデータ“ＤＱＳ  Ｄｏｗｎｅｄｇｅ−ｃａｐｔｕｒｅ  ＦＦ”は、ＦＩＦＯ３０に伝搬できる状態になる（図２では、“ＤＱＳ  Ｂｕｆ／Ｗｔ．Ｄａｔａ−Ｌｏ”）。そして、ＤＱＳシフト信号をクロックとして、次のＤＱＳクロック（“ＤＱＳ  Ｂｕｆ．／ＷＰ（ｂｉｎ．）”と同じ）のタイミングで、１ワード単位でＦＩＦＯ３０にデータが書き込まれる。このときの書き込みポインタの値は、図２の“ＤＱＳ  Ｂｕｆ．／ＷＰ（ｇｒｅｙ）”のように変化する。“ＤＱＳ  Ｂｕｆ．／ＷＰ（ｇｒｅｙ）”は、ＦＩＦＯ３０のライトイネーブル信号ＷＥがセットされている間、更新される。
【００３３】
上記の動作により、ＤＱＳ部のＩ／Ｏブロック１０では、ＤＱＳ２２に基づくクロック信号でＤＱ２１をＦＩＦＯ３０にセットする。なお、図２から明らかなように、最後のデータｄ１５，ｄ１６は、それぞれデータ保持回路１１のＦＦ１とＦＦ２にセットされる。しかし、ＤＱＳシフト信号が消滅しているので、ＦＩＦＯ３０へのデータ転送は行われない。
【００３４】
次に、システム部の読み出し処理について説明する。
図３は、図１の非同期インタフェース回路におけるデータ転送（バッファからの読み出し）動作のタイミング例を示した図である。“Ｓｙｓ．ＣＬＫ”から“Ｓｙｓ．Ｂｕｆ．／ＷＰ（ｇｒｅｙ）”は、図２と同じであるので説明は省略する。
【００３５】
読み出し処理部３１ｂでは、システムクロックで同期化した書き込みポインタ（図３では、“Ｓｙｓ．Ｂｕｆ．／ＷＰ（ｂｉｎ．）”）と、読み出しポインタ（図３では“Ｓｙｓ．Ｂｕｆ．／ＲＰ（ｂｉｎ．）”）とを比較し、一致していないときは、ＦＩＦＯ３０からデータを読み出し、読み出しポインタＲＰを進める。“Ｓｙｓ．Ｂｕｆ．／Ｒｄ．Ｄａｔａ”は、ＦＩＦＯ３０に書き込まれているデータ、すなわち、読み出し処理部３１ｂで読み出し可能なデータを示している。図３に示したように、最後のデータｄ１５，１６は、ＦＩＦＯ３０には書き込まれていない。読み出し処理部３１ｂでは、システムクロックに同期し、書き込みポインタＷＰが進むごとにデータの読み出しを行う。図３の“Ｓｙｓ．Ｒｄ．Ｄａｔａ  Ｂｕｆ．”に示したように、ＦＩＦＯ３０に書き込まれている読み出し可能なデータ（ｄ１，・・・，ｄ１４）は、ワード単位で順次読み込まれる。
【００３６】
また、ステートマシン４３ｂは、書き込みポインタ（図３では、“Ｓｙｓ．Ｂｕｆ．／ＲＰ（ｂｉｎ．）”）が「０」から「１」に変化したとき、次のシステムクロックでステートを「ｉｄｌｅ」から「ｓｔａｔｅ−１」に変更する［ｂ］。同時に、ＦＩＦＯ３０からのデータ読み出しも開始される。なお、「ｓｔａｔｅ−１」のとき、マルチプレクサ４２は、ＦＦ４４を介して入力するＦＩＦＯ３０からの読み出しデータを選択出力する。したがって、図３の“Ｓｙｓ．Ｒｄ．Ｄａｔａ  Ｂｕｆ．”は、マルチプレクサ４２の出力信号に相当する。また、ステートが「ｓｔａｔｅ−１」となったことで、カウンタ４３ａも動作を開始する。カウンタ４３ａは、システムクロックに同期し、読み出しポインタと書き込みポインタとを比較する。図３では、カウンタ４３ａの動作は、“Ｓｙｓ．Ｂｕｆ．／Ｃｏｕｎｔｅｒ”で示している。カウンタ４３ａのカウント値は、ＦＩＦＯ３０を介したデータ転送が行われている間は、「１」と「０」を繰り返している。そして、読み出しポインタと書き込みポインタとが一致した状態が継続されると、カウンタの値は、増加していく。カウンタの値が一定値（図３の例では、「４」）に到達すると、ステートマシン４３ｂは、ステートを「ｓｔａｔｅ−２」に遷移させる［ｃ］。ステート「ｓｔａｔｅ−２」は、システムクロック“Ｓｙｓ．ＣＬＫ”の１サイクルで初期状態に遷移するステートである。
【００３７】
ステートが「ｓｔａｔｅ−２」となったことで、マルチプレクサ４２は、システムクロックに同期して、Ｉ／Ｏブロック１０のデータ保持回路１１に保持されるデータ（ｄ１５，ｄ１６）を読み出す［ｄ］。こうして、最後のデータ（ｄ１５，ｄ１６）がシステム部内に取り込まれる。すべてのデータが読み出されたことを検出したアクセス制御ブロックは、読み出し処理を終了し、ＦＦ１２にライトイネーブル信号ＷＥのリセット指示を行う。そして、ＦＩＦＯ３０のライトイネーブル信号ＷＥがリセットされる。ステートは、初期状態「ｉｄｌｅ」に遷移する。
【００３８】
以上のように、２段以上のデータ転送を行うＯＮＦＩ準拠のシステムにおいて、非同期バッファに書き込まれない最終データを、最終データを保持するデータ保持回路と直接接続する経路を用いて取り込むことが可能となる。これにより、最終データを転送することができるようになり、非同期回路間で確実にデータ転送を行うことが可能となる。
【００３９】
なお、上記の構成では、書き込みポインタと、読み出しポインタとを比較してデータ転送の終了時点を検出し、最終データをデータ保持回路より直接取得していた。一般に、データ転送は、複数ワードをまとめて処理する場合が多く、この場合には確実にデータ転送を行うことができる。
【００４０】
しかし、読み出しデータが最小単位の１ワードであるとき、ＤＱＳは１しか発生しない。このため、データ保持回路１１のＦＦ１，ＦＦ２まではＤＱ２１が転送されるが、ＦＩＦＯ３０には書き込まれない。このため、書き込みポインタと読み出しポインタが不一致となることはなく、データ転送の停止を検出する指標とはならない。もちろん、アクセス制御ブロックは、読み出し要求データが１ワードであるか否かを知っているので、データ保持回路１１にデータが取り込まれたころを見計らってデータをシステム内部に入力することはできる。
【００４１】
第２の実施の形態では、１ワードのデータ転送を検出し、より確実にシステム内部にデータを転送する。
図４は、第２の実施の形態の非同期インタフェース回路の構成例を示したブロック図である。図１と同じものには同じ番号を付し、説明は省略する。
【００４２】
第２の実施の形態の非同期インタフェース回路は、図１に示した非同期インタフェース回路に、同期回路４６を付加した構成である。
同期回路４６は、ＦＦ３及びＦＦ４を有し、ＦＩＦＯ３０のライトイネーブル信号ＷＥを生成するＦＦ１２の出力信号を入力し、ライトイネーブル信号ＷＥの変化を検出する。そして、検出されたライトイネーブル信号ＷＥをシステム部へのデータ取り込みを実行する同期信号としてステートマシン４３ｂに通知する。図４の例では、アクセス制御ブロック４７を介してステートマシン４３ｂに通知している。どちらの構成でもよい。
【００４３】
こうして通知された同期信号に基づき、ステートマシン４３ｂは、ステートを「ｓｔａｔｅ−２」に遷移させる。マルチプレクサ４２は、「ｓｔａｔｅ−２」を受け、データ保持回路１１のＦＦ１及びＦＦ２に保持されるデータを選択出力する。
【００４４】
第２の実施の形態の非同期インタフェース回路において、１ワードをリードする場合の動作について説明する。
図５は、図４の非同期インタフェース回路におけるデータ転送動作のタイミング例を示した図である。各信号は、図２，３に示した同名の信号名と同様である。
【００４５】
アクセス制御ブロック４７からは、１ワード分のリードデータを要求するＡＬＥ／ＣＬＥ信号が出力される。図５の“Ｓｙｓ．ＡＬＥ／ＣＬＥ”で表されたアサートサイクルの間に検出されるシステムクロック“Ｓｙｓ．ＣＬＫ”は、「１」である。ＮＡＮＤは、クロック・サイクル分のＤＱ２１とＤＱＳ２２とを出力する［ｅ］。図５の“ＤＱＳ  ＤＱＳ”で表されたＤＱＳ２２と同期して、リードデータであるＤＱ２１が８ビット単位で出力される。図５では、“ＤＱＳ  ＤＱ［７：０］”のｄ１，ｄ２がＤＱ２１を表している。
【００４６】
ＤＱ２１であるｄ１，ｄ２は、ＤＱＳシフト信号に同期して、データ保持回路１１のＦＦ１とＦＦ２とにそれぞれ取り込まれる（図５の“ＤＱＳ  Ｕｐｅｄｇｅ−ｃａｐｔｕｒｅ  ＦＦ”と“ＤＱＳ  Ｄｏｗｎｅｄｇｅ−ｃａｐｔｕｒｅ  ＦＦ”）。なお、ＤＱＳシフト信号は、ＦＦ１，ＦＦ２に保持されるデータをＦＩＦＯ３０に書き込む際のクロック信号としても用いられる。しかし、今回のＤＱＳは１クロックであるので、ＦＦ１，ＦＦ２に保持されるデータをＦＩＦＯ３０に転送することはできない。
【００４７】
しかし、ＤＱＳシフト信号の入力が開始されると、ＷＥ設定回路１２はＦＩＦＯ３０のライトイネーブル信号ＷＥ（図５では、“ＤＱＳ  Ｂｕｆ．／ＷＥ”）をセットする。
また、ＦＩＦＯ３０には書き込みが行われないので、書き込みポインタＷＰ及び読み出しポインタＲＰとも変化はない。しかし、同期回路を構成するＦＦ３（図５の“Ｓｙｓ．Ｂｕｆ．／Ｓｙｎｃ−ＦＦ３”）は、ＦＦ１２（図５の“ＤＱＳ  Ｂｕｆ．／ＷＥ”）がＨｉｇｈレベルに変化したことを検出した次のシステムクロックでＨｉｇｈレベルに変化する。次のシステムクロック・サイクルでは、ＦＦ４（図５の“Ｓｙｓ．Ｂｕｆ．／Ｓｙｎｃ−ＦＦ４”）が、ＦＦ３の入力を受け、Ｈｉｇｈレベルに変化する［ｆ］。
【００４８】
ＦＦ４がＨｉｇｈレベルに変化したことを直接またはアクセス制御ブロック４７経由で検知したステートマシン４３ｂは、ステートを「ｓｔａｔｅ−２」に切り替える。これにより、マルチプレクサ４２は、Ｉ／Ｏブロック１０のデータ保持回路１１を選択し、ＦＦ１，ＦＦ２に保持されるリードデータｄ１，ｄ２を出力する（図５では、“Ｓｙｓ．Ｒｄ．Ｄａｔａ  Ｂｕｆ”）。その後、初期状態「ｉｄｌｅ」に戻り、処理を終了する。
【００４９】
「ｓｔａｔｅ−２」のときは、１Ｓｙｓ．ＣＬＫサイクルで初期状態「ｉｄｌｅ」に遷移することは、図２，３の場合と同様である。
このように、転送データサイズが最小単位の１ワードであるときは、ライトイネーブル信号ＷＥに基づいてデータの書き込みを検出し、要求データを読み出すことができる。
【００５０】
なお、上記の実施の形態の説明では、ＯＮＦＩに準拠した非同期インタフェース回路について説明したが、本発明はこれに限定されない。開示の非同期インタフェース回路によれば、転送データ分のクロックのみが発行され、このクロックに基づいて２段以上のデータ伝送を行う非同期インタフェース回路に対し、確実にデータ転送を行うことができる。
【００５１】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  非同期回路間でデータを転送する非同期インタフェース回路において、
データ転送元の第１のクロック信号に同期して転送データを所定の単位で順次入力し、次の転送データが入力されるまでの間保持するデータ保持回路と、
前記データ保持回路に接続し、前記データ保持回路に保持される前記転送データを前記第１のクロック信号に同期して順次記憶するとともに、記憶された前記転送データをデータ転送先の第２のクロック信号に同期して記憶された順に読み出す非同期バッファと、
前記非同期バッファと、前記データ保持回路とに接続するとともに、前記第２のクロック信号に同期して前記非同期バッファの動作状態を監視し、前記非同期バッファの動作状態として前記転送データの転送処理中が検出されたときは前記非同期バッファを選択して前記転送データを読み出し、前記転送データの転送処理停止が検出されたときは前記データ保持回路を選択して保持される転送データを読み出し、読み出した前記転送データを前記データ転送先に出力する選択回路と、
を有することを特徴とする非同期インタフェース回路。
【００５２】
（付記２）  前記データ転送元の第１のクロック信号は、前記転送データの読み出し要求を取得したときに、読み出し対象の前記転送データの転送に必要なクロック数分の信号のみが生成されるクロック信号であり、前記データ転送先の第２のクロック信号は装置全体を動作させるシステムクロックである、ことを特徴とする付記１記載の非同期インタフェース回路。
【００５３】
（付記３）  前記データ保持回路は、前記第１のクロック信号に同期して入力されるデータを保持するフリップフロップ回路であることを特徴とする付記１または２記載の非同期インタフェース回路。
【００５４】
（付記４）  前記非同期バッファに前記転送データを書き込む領域を指示する書き込みポインタと、前記非同期バッファから前記転送データを読み出す領域を指示する読み出しポインタとを比較し、前記書き込みポインタと前記読み出しポインタとが一致している時間を計時するカウンタを有し、
前記選択回路は、前記カウンタの値が所定の値を超えたとき、前記非同期バッファを介した前記転送データの転送処理が停止したと判断する、
ことを特徴とする付記１〜３記載の非同期インタフェース回路。
【００５５】
（付記５）  前記第１のクロック信号に同期する前記転送データの前記非同期バッファへの書き込み許可信号を監視し、前記書き込み許可信号が所定の期間許可状態にあるときは、前記書き込み許可信号を同期信号として検出する同期回路を、さらに有し、
前記選択回路は、前記非同期バッファに対する前記転送データの転送処理停止が検出され、かつ、前記書き込みデータ有が検出されたときは、前記データ保持回路から読み出した転送データを選択出力する、
ことを特徴とする付記１〜４記載の非同期インタフェース回路。
【００５６】
（付記６）  非同期回路間でのデータ転送を制御する非同期データ転送方法において、
データ保持回路が、データ転送元の第１のクロック信号に同期して転送データを所定の単位で順次入力し、次の転送データが入力されるまでの間保持し、
非同期バッファが、前記データ保持回路に接続し、前記データ保持回路に保持される前記転送データを前記第１のクロック信号に同期して順次記憶するとともに、記憶された前記転送データをデータ転送先の第２のクロック信号に同期して記憶された順に読み出し、
選択回路が、前記非同期バッファと、前記データ保持回路とに接続するとともに、前記第２のクロック信号に同期して前記非同期バッファの動作状態を監視し、前記非同期バッファの動作状態として前記転送データの転送処理中が検出されたときは前記非同期バッファを選択して前記転送データを読み出し、前記転送データの転送処理停止が検出されたときは前記データ保持回路を選択して保持される転送データを読み出し、読み出した前記転送データを前記データ転送先に出力する、
ことを特徴とする非同期データ転送方法。
【符号の説明】
【００５７】
１０  Ｉ／Ｏブロック
１１  データ保持回路
１２  ＷＥ設定回路
２１  ＤＱ
２２  ＤＱＳ
２３  ＡＬＥ／ＣＬＥ
３０  非同期バッファ（ＦＩＦＯ）
３１  転送処理部
４１  システムクロック
４２  マルチプレクサ
４３  監視部
【図１】
2010278798.tif 000003
【図２】
2010278798.tif 000004
【図３】
2010278798.tif 000005
【図４】
2010278798.tif 000006
【図５】
2010278798.tif 000007
【図６】
2010278798.tif 000008