(57)【要約】【課題】データ転送数が様々に変化する場合にも、ソフトウェアへの負荷を少なくデータ転送を行えるデータ転送装置を提供する。【解決手段】転送元デバイス（１１）は、転送先デバイス（１２）のメモリ（１３）へのデータ転送が終了する時に転送終了割込信号（ＳＩｅ）を転送先デバイス（１２）に対して出力する。転送先デバイス（１２）では、転送元デバイス（１１）からの転送終了割込信号（ＳＩｅ）を、バイスインターフェース（１２１）で転送先デバイス（１２）でのデータ転送遅延時間分（Ｄｅｌａｙ）遅延させた遅延転送終了割込信号（ＳＩｅｄ）をＣＰＵ（１２３）に出力する。【選択図】図１
2008217507.tif 000002
【特許請求の範囲】
【請求項１】
第１のデバイスと、
前記第１のデバイスにデータとアドレスが多重されたバスで接続される第２のデバイスと、
前記第２のデバイスに接続されて前記第１のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第１のデバイスは、前記第メモリ対する前記データの転送が完了した時に、当該第２のデバイスに対して転送終了割込信号を出力し、
前記第２のデバイスは前記転送終了割込信号を第１の所定時間だけ遅延させることを特徴とするデータ転送装置。
【請求項２】
前記第２のデバイスは、
前記第１のデバイスとの間の信号交換を制御すると共に当該第１のデバイスから出力された転送終了割込信号ＳＩｅを前記第１の所定時間だけ遅延させて遅延転送終了割込信号を生成するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第１のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記遅延転送終了割込信号に基づいて、データ転送の終了を認識する制御用ＣＰＵとを備える請求項１に記載のデータ転送装置。
【請求項３】
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス／データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスとコマンドとを抽出してバッファリングする制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド／バイトイネーブル多重信号をバッファリングするＣＭＤ／ＢＥ＃バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス／データ多重信号からアドレスとデータを分離するＡＤ分離回路と、
前記ＣＭＤ／ＢＥ＃バッファに接続されて、当該ＣＭＤ／ＢＥ＃バッファから出力されるコマンド／バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するＣＭＤ／ＢＥ＃分離回路と、
前記ＡＤ分離回路に接続されて、当該ＡＤ分離回路から出力される前記データをバッファリングするＤＭＡ用バッファと、
前記ＡＤ分離回路から出力されるアドレスと、前記ＣＭＤ／ＢＥ＃分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記第１のデバイス１１から出力される転送終了割込信号を、前記制御用ＣＰＵによって設定される第１の遅延量だけ遅延させて前記遅延転送終了割込信号を生成する転送終了割込遅延回路とを備える請求項２に記載のデータ転送装置。
【請求項４】
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェース回路と、
前記バスインターフェース回路に接続されて、前記バスから出力されるアドレス／データ多重信号をバッファリングする受信バッファと、
前記バスインターフェース回路に接続されて、前記バスから出力されるアドレスとコマンドとを抽出してバッファリングする制御バッファと、
前記バスインターフェース回路に接続されて、前記バスから出力されるコマンド／バイトイネーブル信号をバッファリングするＣＭＤ／ＢＥ＃バッファと、
前記受信バッファから出力される前記アドレス／データ多重信号からアドレスとデータを分離するＡＤ分離回路と、
前記ＣＭＤ／ＢＥ＃バッファから出力される前記コマンド／バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するＣＭＤ／ＢＥ＃分離回路と、
前記ＡＤ分離回路に接続されて、当該ＡＤ分離回路から出力される前記データをバッファリングするＤＭＡ用バッファと、
前記ＡＤ分離回路から出力されるアドレスと、前記ＣＭＤ／ＢＥ＃分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記バスから前記制御バッファに入力されるアドレスとコマンドを抽出する信号を用いて転送されてくるアドレスの数をカウントし、前記制御バッファの出力においてもアドレス数をカウントし、前記転送終了割込信号がアクティブになった時の当該２つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数を抽出して、前記転送終了割込信号を遅延させる遅延値を算出する遅延値設定回路と、
前記算出された遅延値に基づいて、前記転送終了割込信号を遅延させて遅延転送終了割込信号を生成する転送終了割込遅延回路とを備える請求項２に記載のデータ転送装置。
【請求項５】
前記デバイスインターフェースは、前記バスよりアドレスが転送されてくることをトリガとして、ＤＭＡを起動して前記受信バッファから前記ＤＭＡ用バッファまでデータ転送を行うことを特徴とする請求項４に記載のデータ転送装置。
【請求項６】
前記遅延値設定回路は、ＤＭＡ転送の開始から終了までの時間と前記抽出された前記受信バッファに滞留されているアドレス数とに基づいて、前記転送終了割込信号発生後に前記第１のデバイス１１からの最終転送データが前記メモリに転送されるまでの時間を算出し、当該算出された時間を前記転送終了割込信号を遅延させる遅延量として前記転送終了割込遅延回路に設定することを特徴とする請求項４に記載のデータ転送装置。
【請求項７】
前記バスはＰＣＩバスであることを特徴とする請求項１に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間のデータ転送時のソフトウェアへの負荷が軽減されるデータ転送装置に関する。
【背景技術】
【０００２】
他の装置から受信したデータをＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）方式でメモリに転送する際に、転送するデータの転送数を予め設定する事で、ＣＰＵ上のソフトウェアへの負担が少なく、データ転送終了を速やかにソフトウェアに通知する技術（特許文献１）が提案されている。
【特許文献１】特開２００５−１８２５０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述の技術では、転送するデータ転送数を設定し、転送データ数が予め設定したデータ転送数より少ない場合には、最終転送と判断しデータ転送割り込みを発生させている。しかし、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）デバイスやＥｔｈｅｒデバイスがＰＣＩバス２００のバスマスターとして他デバイスにデータ転送する場合には、不定長バーストでデータ転送されることがある。さらに、ＰＣＩバス２００がＢｕｓｙ状態、もしくは他デバイスがデータを受信できない状況（受信バッファがフル状態）に陥った場合には、バースト長がさまざまに変化することがある。このようにして、データ転送途中に予め設定したデータ転送数より少ないデータ転送が生じた場合には、誤ったデータ転送終了割り込みが発生させてしまう問題がある。
【０００４】
また、デジタル機器のシステムＬＳＩでは高機能化によりデジタル機器のシステムＬＳＩ用メモリを複数機能でシェアリングして使用する。そのため、デジタル機器のシステムＬＳＩ用メモリとのデータ転送においては、データ転送許可信号の待ち時間が増えることによりデータ転送の遅延が増大する。さらに外部デバイスとデジタル機器のシステムＬＳＩ間のデータ転送も高速化の傾向にあり受信バッファがフルになるケースが増大する。
【０００５】
上述の問題を鑑みて、本発明は、外部デバイスからのデータ転送において、データ転送数が様々に変化する場合にも、ソフトウェアへの負荷を少なくデータ転送を行えるデータ転送装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために本発明は、
第１のデバイスと、
前記第１のデバイスにデータとアドレスが多重されたバスで接続される第２のデバイスと、
前記第２のデバイスに接続されて前記第１のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第１のデバイスは、前記第メモリ対する前記データの転送が完了した時に、当該第２のデバイスに対して転送終了割込信号を出力し、
前記第２のデバイスは前記転送終了割込信号を第１の所定時間だけ遅延させることを特徴とする。
【０００７】
前記第２のデバイスは、
前記第１のデバイスとの間の信号交換を制御すると共に当該第１のデバイスから出力された転送終了割込信号ＳＩｅを前記第１の所定時間だけ遅延させて遅延転送終了割込信号を生成するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第１のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記遅延転送終了割込信号に基づいて、データ転送の終了を認識する制御用ＣＰＵとを備えることが望ましい。
【０００８】
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス／データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスとコマンドとを抽出してバッファリングする制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド／バイトイネーブル多重信号をバッファリングするＣＭＤ／ＢＥ＃バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス／データ多重信号からアドレスとデータを分離するＡＤ分離回路と、
前記ＣＭＤ／ＢＥ＃バッファに接続されて、当該ＣＭＤ／ＢＥ＃バッファから出力されるコマンド／バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するＣＭＤ／ＢＥ＃分離回路と、
前記ＡＤ分離回路に接続されて、当該ＡＤ分離回路から出力される前記データをバッファリングするＤＭＡ用バッファと、
前記ＡＤ分離回路から出力されるアドレスと、前記ＣＭＤ／ＢＥ＃分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記第１のデバイス１１から出力される転送終了割込信号を、前記制御用ＣＰＵによって設定される第１の遅延量だけ遅延させて前記遅延転送終了割込信号を生成する転送終了割込遅延回路とを備えることが望ましい。
【０００９】
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェース回路と、
前記バスインターフェース回路に接続されて、前記バスから出力されるアドレス／データ多重信号をバッファリングする受信バッファと、
前記バスインターフェース回路に接続されて、前記バスから出力されるアドレスとコマンドとを抽出してバッファリングする制御バッファと、
前記バスインターフェース回路に接続されて、前記バスから出力されるコマンド／バイトイネーブル信号をバッファリングするＣＭＤ／ＢＥ＃バッファと、
前記受信バッファから出力される前記アドレス／データ多重信号からアドレスとデータを分離するＡＤ分離回路と、
前記ＣＭＤ／ＢＥ＃バッファから出力される前記コマンド／バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するＣＭＤ／ＢＥ＃分離回路と、
前記ＡＤ分離回路に接続されて、当該ＡＤ分離回路から出力される前記データをバッファリングするＤＭＡ用バッファと、
前記ＡＤ分離回路から出力されるアドレスと、前記ＣＭＤ／ＢＥ＃分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記バスから前記制御バッファに入力されるアドレスとコマンドを抽出する信号を用いて転送されてくるアドレスの数をカウントし、前記制御バッファの出力においてもアドレス数をカウントし、前記転送終了割込信号がアクティブになった時の当該２つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数を抽出して、前記転送終了割込信号を遅延させる遅延値を算出する遅延値設定回路と、
前記算出された遅延値に基づいて、前記転送終了割込信号を遅延させて遅延転送終了割込信号を生成する転送終了割込遅延回路とを備えることが望ましい。
【００１０】
前記デバイスインターフェースは、前記バスよりアドレスが転送されてくることをトリガとして、ＤＭＡを起動して前記受信バッファから前記ＤＭＡ用バッファまでデータ転送を行うことが望ましい。
【００１１】
前記遅延値設定回路は、ＤＭＡ転送の開始から終了までの時間と前記抽出された前記受信バッファに滞留されているアドレス数とに基づいて、前記転送終了割込信号発生後に前記第１のデバイス１１からの最終転送データが前記メモリに転送されるまでの時間を算出し、当該算出された時間を前記転送終了割込信号を遅延させる遅延量として前記転送終了割込遅延回路に設定することが望ましい。
【００１２】
前記バスはＰＣＩバスであることが望ましい。
【発明の効果】
【００１３】
本発明では、外部デバイスからのデータ転送において、転送数が様々に変化した場合においても、ソフトウェアへの負荷を少なくデータ転送を行うことができる。
【発明を実施するための最良の形態】
【００１４】
（第１の実施形態）
以下に、図１、図２、図３、図４、および図５を参照して、本発明の第1の実施の形態にかかるデータ転送装置について説明する。図１に示すように、データ転送装置１０００ａは、データ転送元であるデバイス（以降、「転送元デバイス」）１１、データ転送先であるデバイス（以降、「転送先デバイス」）１２ａ、およびメモリ１３を含む。
【００１５】
転送先デバイス１２ａは、デバイスインターフェース（図１においては、「デバイスＩ／Ｆ」と表示）１２１ａ、メモリインターフェース（図１においては、「メモリＩ／Ｆ」と表示）１２２、およびＣＰＵ１２３を含む。デバイスインターフェース１２１ａは、ＰＣＩバス２００によって転送元デバイス１１に接続されて、転送元デバイス１１と転送先デバイス１２ａとの間の信号交換を制御する。なお、デバイスインターフェース１２１ａは、第１のメモリインターフェースバス２０１を介してメモリインターフェース１２２と信号を交換する。メモリインターフェース１２２は、メモリバス２０４によってメモリ１３に接続されて、メモリ１３と転送先デバイス１２ａとの間の信号交換を制御する。
【００１６】
ＣＰＵ１２３は、ＣＰＵバス２０２によってデバイスインターフェース１２１ａおよびメモリインターフェース１２２と接続される。ＣＰＵ１２３はさらに第２のメモリインターフェースバス２０３によってメモリインターフェース１２２と接続されて、転送先デバイス１２ａの制御を行う。
【００１７】
転送元デバイス１１から転送先デバイス１２ａに転送されるデータは、ＰＣＩバス２００を介して、デバイスインターフェース１２１ａに入力される。そして、デバイスインターフェース１２１ａは、転送元デバイス１１から入力されたデータをメモリ１３に転送するために、転送元デバイス１１から入力されるＰＣＩバスプロトコル信号を第１のメモリインターフェースバス信号Ｓ２０１に変換する。第１のメモリインターフェースバス信号Ｓ２０１は、第１のメモリインターフェースバス２０１を介してメモリインターフェース１２２に入力される。
【００１８】
ＣＰＵ１２３は、ＣＰＵバス２０２を介してデバイスインターフェース１２１ａ（転送元デバイス１１）から入力されるＰＣＩバスプロトコル信号を第２のメモリインターフェースバス信号Ｓ２０３に変換する。第２のメモリインターフェースバス信号Ｓ２０３は、第２のメモリインターフェースバス２０３を介してメモリインターフェース１２２に入力される。
【００１９】
メモリインターフェース１２２は、デバイスインターフェース１２１ａおよびＣＰＵ１２３のそれぞれから入力される第１のメモリインターフェースバス信号Ｓ２０１および第２のメモリインターフェースバス信号Ｓ２０３に基づいて、メモリバス２０４をメモリ１３のインターフェースプロトコルに適合させて、転送元デバイス１１から転送されたデータをメモリ１３に転送する。
【００２０】
転送元デバイス１１からの転送先デバイス１２ａに対するデータ転送（送出）が終了した際に、転送元デバイス１１は転送先デバイス１２ａに対して転送終了割込信号ＳＩｅを出力する。転送先デバイス１２ａは、転送終了割込信号ＳＩｅをデバイスインターフェース１２１ａで遅延させて遅延転送終了割込信号ＳＩｅｄを生成する。遅延転送終了割込信号ＳＩｅｄはＣＰＵバス２０２を介してＣＰＵ１２３に入力される。
【００２１】
ＣＰＵ１２３おいては、遅延転送終了割込信号ＳＩｅｄに基づいて、転送元デバイス１１から転送先デバイス１２ａへのデータ転送の終了が認識される。そして、ＣＰＵ１２３は、転送元デバイス１１から入力された転送終了割込信号ＳＩｅおよび遅延転送終了割込信号ＳＩｅｄをクリアする。なお、転送元デバイス１１による転送終了割込クリアは、ＣＰＵバス２０２、デバイスインターフェース１２１ａ、およびＰＣＩバス２００を経由して行われる。
【００２２】
次に、図２および図３を参照して、デバイスインターフェース１２１ａについて説明する。デバイスインターフェース１２１ａは、ＰＣＩバスインターフェース回路（図では、「ＰＣＩバスＩ／Ｆ」と表示）２１、受信バッファ２２、制御バッファ２３、ＣＭＤ／ＢＥ＃バッファ２４、ＡＤ分離回路２５、ＣＭＤ／ＢＥ＃分離回路２６、ＤＭＡ用バッファ２７、メモリインターフェース制御回路２８（図では、「メモリＩ／Ｆ制御回路」と表示）、転送終了割込遅延回路２９、および遅延値レジスタ３０を含む。
【００２３】
ＰＣＩバスインターフェース回路２１は、ＰＣＩバス２００に対するインターフェースである。受信バッファ２２は、ＰＣＩバスインターフェース回路２１のアドレス／データ多重信号ＡＤをバッファリングする。制御バッファ２３は、ＰＣＩバスインターフェース回路２１から出力されるＡＣフェーズ信号ＡＣとＥＮＤフェーズ信号ＥＮＤのバッファリングを制御する。なお、ＡＣフェーズ信号ＡＣは、ＰＣＩバス２００のアドレス／データ多重部のアドレス情報の部分を示すものである。
【００２４】
ＣＭＤ／ＢＥ＃バッファ２４は、ＰＣＩバスインターフェース回路２１から出力されるコマンド／バイトイネーブル多重信号Ｃ／ＢＥをバッファリングする。ＡＤ分離回路２５は、受信バッファ２２から出力されるアドレス／データ多重信号ＡＤをアドレス信号Ａとデータ信号Ｄとに分離する。
【００２５】
ＣＭＤ／ＢＥ＃分離回路２６は、ＣＭＤ／ＢＥ＃バッファ２４から出力されるコマンド／バイトイネーブル多重信号Ｃ／ＢＥをコマンド信号ＣＭＤとバイトイネーブル信号ＢＥ＃とに分離する。ＤＭＡ用バッファ２７は、ＡＤ分離回路２５から出力されるデータ信号Ｄをメモリインターフェース１２２に転送する際にバッファリングする。メモリインターフェース制御回路２８はＤＭＡ制御信号を生成して、ＤＭＡ用バッファ２７のメモリインターフェース１２２に対する動作を制御する、
【００２６】
転送終了割込遅延回路２９は、転送元デバイス１１から入力された転送終了割込信号ＳＩｅを所定時間（以降、「遅延量Ｄｅｌａｙ」）だけ遅延させて遅延転送終了割込信号ＳＩｅｄを生成する。遅延量Ｄｅｌａｙは、ＣＰＵバス２０２に接続された遅延値レジスタ３０を介して、ＣＰＵ１２３によって制御される。
【００２７】
図３を参照して、ＰＣＩバスインターフェース回路２１によるＡＣフェーズ信号ＡＣおよびＥＮＤフェーズ信号ＥＮＤの生成について説明する。同図に示す「ＣＬＫ」、「ＲＥＱ＃」、「ＧＮＴ＃」、「ＦＬＡＭＥ＃」、「ＩＲＤＹ＃」、「ＴＲＤＹ＃」、「ＤＥＶＳＥＬ＃」、「ＡＤ」、および「Ｃ／ＢＥ＃」はＰＣＩバスの規格に準ずる信号であるので、詳しい説明は割愛する。
【００２８】
ＡＣフェーズ信号ＡＣは、ＰＣＩバス２００のアドレス／データ多重信号ＡＤとコマンド／バイトイネーブル多重信号Ｃ／ＢＥ＃から、アドレスＡとコマンドＣＭＤのポジションを示す信号である。ＡＣフェーズ信号ＡＣは、ＦＬＡＭＥ＃、ＩＲＤＹ＃、ＴＲＤＹ＃、ＤＥＶＳＥＬ＃に基づいて生成される（ＦＬＡＭＥ＃＝"０"、ＩＲＤＹ＃＝"１"、
ＴＲＤＹ＃＝"１"、ＤＥＶＳＥＬ＃＝"１"）。
【００２９】
ＥＮＤフェーズ信号ＥＮＤもＡＣフェーズ信号ＡＣと同様に、ＦＬＡＭＥ＃、ＩＲＤＹ＃、ＴＲＤＹ＃、およびＤＥＶＳＥＬ＃に基づいて生成される（ＦＬＡＭＥ＃、ＩＲＤＹ＃、ＴＲＤＹ＃、ＤＥＶＳＥＬ＃の全ての信号が立ち上がったことを検出）。また、ＰＣＩバスインターフェース回路２１におけるバッファ制御信号は、ＦＬＡＭＥ＃＝"０"、
ＩＲＤＹ＃＝"０"、ＴＲＤＹ＃＝"０"およびＤＥＶＳＥＬ＃＝"０"で、それぞれの
バッファへの書き込みをアクティブにする。
【００３０】
メモリインターフェース制御回路２８は、デバイスインターフェース１２１ａとメモリインターフェース１２２との間の信号交換を制御する。具体的には、メモリインターフェース制御回路２８がメモリインターフェース１２２に対してデータ転送要求信号Ｒｄを出力する。データ転送要求信号Ｒｄに応答して、メモリインターフェース１２２はデータ転送許可信号がアクティブになればデータＤを転送する。つまり、ＤＭＡ用バッファ２７に格納されたデータＤがメモリインターフェース１２２に出力される。
【００３１】
なお、メモリインターフェース１２２に対して、メモリインターフェース制御回路２８からアドレスＡ、コマンドＣＭＤ、バイトイネーブルＥＮｂが出力される。アドレスＡはメモリ１３のどの領域にアクセスするかを指示し、コマンドＣＭＤはメモリ１３にライトするかリードするかを指示し、バイトイネーブルＥＮｂはメモリ１３にライトする際にバイト単位でのアクセスを指示する。よって、本実施の形態においては、転送元デバイス１１からアドレスＡが送付されてくることをトリガとして、メモリインターフェース１２２へのＤＭＡ転送が行われる。
【００３２】
次に、図４および図５を参照して、上述のデータ転送装置１０００ａにおけるデータ転送について説明する。図４において、縦軸は、データ転送装置１０００ａの各構成要素から出力される信号を表しており、横軸は時間の経過を表している。同図においては、時間は左から右に向かって経過する。
【００３３】
具体体には、第１段目のＡＤは、受信バッファ２２からの出力されるアドレス／データ多重信号ＡＤを表している。なお、１１個の□はそれぞれ、アドレス／データ多重信号ＡＤの内容を表している。なお、表現の都合上、１１個の□の中に表示されている文字で、それぞれを識別するものとする。つまり、２つの「Ａ」はアドレス信号Ａを表しており、「１」、「２」、「３」、「４」、「５」、「６」、「７」、および「８」はデータ信号Ｄを表している。これらの８つのデータを、データ信号Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、およびＤ８と識別する。また、「Ｅ」はデータ終了転送フラグＥを表している。
【００３４】
時間的に最初のアドレス信号Ａは、データＤ１〜Ｄ８のデータ転送開始のためのトリガとして転送元デバイス１１から入力されたものである。後のアドレス信号Ａは、データ終了転送フラグＥのデータ転送開始のためのトリガとして転送元デバイス１１から入力されたものである。
【００３５】
第２段目は、受信バッファ２２から出力されるアドレス／データ多重信号ＡＤを表している。この段に表されている２つのアドレス信号Ａおよびデータ信号Ｄ１〜Ｄ８は、上述した第１段に表されている２つのアドレス信号Ａおよびデータ信号Ｄ１〜Ｄ８にそれぞれ対応している。
【００３６】
第３段目は、受信ＡＤ分離回路２５から出力されるデータ信号Ｄを表している。第４段目は、ＡＤ分離回路２５から出力されるアドレス信号Ａを表している。第５段目は、ＣＭＤ／ＢＥ＃分離回路２６から出力されるコマンド信号ＣＭＤ（なお、紙面の都合上、図においてはＣと表示）を表している。第６段目はＤＭＡ用バッファ２７に入力されるデータ信号Ｄを表している。
【００３７】
第７段目はデータ転送要求信号Ｒｄを表し、第８段目はデータ転送許可信号Ｐｄを表している。第９段目はＤＭＡ用バッファ２７からの出力を表し、第１０段目はメモリデータ入力を表している。そして、第１１段目は転送終了割込信号ＳＩｅを表し、第１２段目はデータ終了転送フラグＥのリードを表し、第１３段目は遅延転送終了割込信号ＳＩｅｄを表している。
【００３８】
上述の図４においては、転送元デバイス１１からアドレスＡとデータＤ（１、２、３、４、５、６、７、８）が転送先デバイス１２ａに転送されてきた場合の動作が表されている。転送元デバイス１１は、データ転送終了後に、データ転送終了フラグをメモリ１３の予め設定された所定のアドレスに書き込む。そして、転送先デバイス１２ａのＣＰＵ１２３は、メモリ１３の所定のアドレスにデータ転送終了フラグが書き込まれていることを確認することで、転送元デバイス１１からメモリ１３へのデータ転送が終了したことを確認する。
【００３９】
この際、転送元デバイス１１からデータ転送終了フラグが転送先デバイス１２ａに対して書き込まれた後に、転送元デバイス１１から転送終了割込信号ＳＩｅが出力される。つまり、この時点では、データ転送フラグはメモリ１３には書き込まれていない。これは転送先デバイス１２ａでは、受信バッファ２２やＤＭＡ用バッファ２７でのデータ転送遅延があり、更にメモリインターフェース制御回路２８ではデータ転送要求信号Ｒｄに対するデータ転送許可信号Ｐｄの応答時間があるからである。この転送先デバイス１２ａからメモリ１３へのデータ転送に関する遅延を、転送終了割込遅延回路２９が吸収している。
【００４０】
図４において、転送元デバイス１１からはアドレスＡとデータＤ１〜Ｄ８が転送された後に、データ終了転送フラグＥが予め決められたデータ転送終了フラグ書き込みアドレスに転送される。上述のように、転送元デバイス１１からアドレスＡが送られてくることをトリガに、ＤＭＡ転送が起動される。図４では、データＤ１〜Ｄ８とデータＥ（データ終了転送フラグＥ）の２回のＤＭＡ転送が発生する（メモリインターフェース１２２に対して、データ転送要求信号Ｒｄが２回発生する）。
【００４１】
つまり、一回目のデータ転送でデータＤ１〜Ｄ８がメモリ１３に書き込まれ、２回目の転送でデータＥがメモリ１３に書き込まれる。なお、転送元デバイス１１からは、ＡＤでデータ終了転送フラグＥが出力された後に、転送終了割込信号ＳＩｅが転送先デバイス１２ａに対して出力される。しかしメモリ１３にデータ終了転送フラグＥが書き込まれるまでには転送先デバイス１２ａで遅延が発生して、ＣＰＵ１２３が転送元デバイス１１からのデータ転送終了割込信号ＳＩｅを認識した時点ではメモリ１３にデータ終了転送フラグＥがまだ書き込まれていない可能性がある。
【００４２】
この可能性を考慮して、データ終了転送フラグＥがメモリ１３に書き込まれることをソフトウェアによるポーリングで待つ必要がある。この待ち時間の間、ソフトウェアで別の処理が実行できないので、データ転送におけるソフトウェアへの負荷が大きくなってしまう。よって、本発明においては、ソフトウェアでポーリングする時間分、転送元デバイス１１からのデータ転送終了割り込みをハードウェアで遅延させることでデータ転送におけるソフトウェア負荷の増大を抑える。なおハードウェアで遅延させる時間、つまり遅延量Ｄｅｌａｙは、アプリケーションで変わる可能性がある。それゆえに、ハードウェアによる遅延量は、ソフトウェアを利用してＣＰＵ１２３より制御できるように構成される。
【００４３】
次に、図５を参照して、データ転送装置１０００ａによるデータ転送動作について説明する。データ転送装置１０００ａが起動すると、先ず、ステップＳ２０において、上述の遅延量Ｄｅｌａｙが設定される。そして、制御は次のステップＳ２１に進む。
【００４４】
ステップＳ２１において、制御バッファ２３から出力されるＡＣフェーズＤ信号ＡＣＤによって、ＤＭＡ用バッファ２７へのデータ転送が開始する。そして、制御は次のステップＳ２２に進む。なお、ＡＣフェーズＤ信号ＡＣＤは、ＡＣフェーズ信号ＡＣを制御バッファ２３で遅延させたものである。
【００４５】
ステップＳ２２において、データ転送の判断がなされる。具体的には、図３を参照して説明したように、ＦＬＡＭＥ＃＝ＴＲＡＤＹ＃＝ＴＲＥＡＤＹ＃＝ＤＥＶＳＥＬ＃＝０が成立しているか否かが判断される。成立している場合には、実際にデータが転送される。そして、制御は次のＳ２３に進む。
【００４６】
ステップＳ２３において、メモリ１３に当該ＤＭＡのデータが全て転送されたか否かが判断される。具体的には、制御バッファ２３からＥＮＤフェーズＤ信号ＥＮＤＤが出力されることによって、ＤＭＡ転送よって行われる。なお、ＥＮＤフェーズＤ信号ＥＮＤＤは、ＥＮＤフェーズ信号ＥＮＤを制御バッファ２３で遅延されたものである。このように、ＤＭＡ転送開始から、ＤＭＡ転送終了までは、ソフトウェアの介在を必要としない。そして、制御は次のステップＳ２４に進む。
【００４７】
ステップＳ２４において、ＣＰＵ１２３が遅延転送終了割込信号ＳＩｅｄを認識したか否かが判断される。遅延転送終了割込信号ＳＩｅｄが認識されない場合、制御はステップＳ２５に進む。
【００４８】
ステップＳ２５において、上述のステップＳ２１におけるのと同様に、ＡＣフェーズＤ信号ＡＣＤのアサートの有無が判断される。Ｙｅｓと判断される場合は、上述のステップＳ２２、Ｓ２３。およびＳ２４の処理を繰り返す。一方、Ｎｏと判断される場合は、ステップＳ２４に戻る。
【００４９】
つまり、ステップＳ２４でＹｅｓ、つまり転送終了割込信号ＳＩｅが認識された時点で、制御はステップＳ２６に進む。このように、ＤＭＡ転送は、ＣＰＵ１２３が遅延転送終了割込信号ＳＩｅｄを認識する（Ｓ２５）まで行われる。つまり、現行のＤＭＡ転送が終了するまでは、次のＤＭＡ転送は開始しない。そして、ＣＰＵ１２３が遅延転送終了割込信号ＳＩｅｄを認識（Ｓ２４）した時点で、ＣＰＵ１２３で転送終了割込信号ＳＩｅと遅延転送終了割込信号ＳＩｅｄとがネゲートされる（ソフトウェア処理：Ｓ２５）。
【００５０】
図６を参照して、遅延量Ｄｅｌａｙの最大値について説明する。図６は上述の図４におけるとの同様に、転送元デバイス１１からアドレスＡとデータＤが転送先デバイス１２ａに転送されてきた場合の動作が表されている。
【００５１】
転送元デバイス１１からのデータ転送終了割り込みが発生した時に、受信バッファ２２がフルの状態で、しかも受信バッファ２２にアドレスが多く格納された場合に遅延量Ｄｅｌａｙの最大値になる。本実施の形態においては、受信バッファ２２にアドレスが格納された数だけ、ＤＭＡ転送が発生する。従って、アドレスの後にデータが１つ転送される転送が連続して受信バッファ２２に格納された場合に、受信バッファの容量により遅延量Ｄｅｌａｙの最大値が決まる。具体的には、受信バッファ２２の格納データ数の１／２にアドレスが格納された場合に、遅延量Ｄｅｌａｙは最大値になる。
【００５２】
図６には、受信バッファ２２の格納データ数を８とした場合が例示されている。同図に示すように、４回のＤＭＡ転送が発生している。よって、遅延量Ｄｅｌａｙの最大値は、ＤＭＡ転送の一回分の時間×４となる。なお、ＤＭＡ転送の一回分の時間は、転送元デバイス１１と転送先デバイス１２ａとのデータ転送においてリアルタイム性を保証することを前提に算出できる。
【００５３】
例えば、１００Ｍｂｐｓのデータ転送においては、メモリインターフェース制御回路２８からメモリインターフェース１２２に対して、１００Ｍｂｐｓのレートでデータ転送要求（信号Ｒｄ）が発生する。よって、メモリインターフェース１２２ではデータ転送許可（信号Ｐｄ）を必ず１００Ｍｂｐｓのレートを満たすようにリプライする。従って、リアルタイム性を保証する場合には、ＤＭＡ転送の１回分の時間が決まるので、上記の遅延量Ｄｅｌａｙの最大値を算出でき、算出値を前記遅延値レジスタ３０に設定すればよい。なお本実施の形態においては、転送先デバイス１２ａ側に転送終了割込遅延回路２９を実装して構成しているが、転送元デバイス１１側で転送終了割込信号ＳＩｅを遅延させる回路を実装しても同様な効果を有する。
【００５４】
（第２の実施の形態）
以下に、図７および図８を参照して、本発明の第２の実施の形態にかかるデータ転送装置について説明する。なお、本実施の形態にかかるデータ転送装置１０００ｂは、図１に示したデータ転送装置１０００ａにおいて、転送先デバイス１２ａが転送先デバイス１２ｂに交換されて構成されている。転送先デバイス１２ｂは、転送先デバイス１２ａにおいて、デバイスインターフェース１２１ａがデバイスインターフェース１２１ｂに交換されて構成されている。なお、データ転送装置１０００ｂは、データ転送装置１０００ａに比べて、データ転送のリアルタイム性のパフォーマンスの改善が図られている。
【００５５】
図７を参照して、デバイスインターフェース１２１ｂについて説明する。デバイスインターフェース１２１ｂは図２の示したデバイスインターフェース１２１ａにおいて、遅延値レジスタ３０が取り除かれると共に、遅延値設定回路３１および遅延値設定用遅延回路３２が追加されて構成されている。遅延値設定回路３１は、ＡＣフェーズ信号ＡＣ、ＡＣフェーズＤ信号ＡＣＤ、および転送終了割込信号ＳＩｅに基づいて、遅延量Ｄｅｌａｙを設定し、当該遅延量Ｄｅｌａｙを表す信号を転送終了割込遅延回路２９に入力する。遅延値設定用遅延回路３２は、遅延値設定回路３１が遅延量Ｄｅｌａｙを算出し終えるまでＰＣＩバスインターフェース回路２１から出力される転送終了割込信号ＳＩｅを遅延させる。
【００５６】
本実施の形態においては、遅延量Ｄｅｌａｙは、遅延値設定回路３１によってＡＣフェーズ信号ＡＣ、ＡＣフェーズ信号ＡＣＤ、および転送終了割込信号ＳＩｅに基づいて設定される。なお、第１の実施の形態においては、遅延量ＤｅｌａｙはＣＰＵ１２３によって決定される。
【００５７】
以下に図８を参照して、遅延値設定回路３１による遅延量Ｄｅｌａｙ設定動作について説明する。
先ず、ステップＳ３１において、遅延値設定回路３１が初期化される。つまり、ＡＣフェーズ信号ＡＣのカウンタＡＣ＿Ｎｕｍ、ＡＣフェーズＤ信号ＡＣＤのカウンタＡＣＤ＿Ｎｕｍ、および受信バッファ２２に滞留するアドレス信号ＡのカウンタＡ＿Ｎｕｍがそれぞれ０にセットされる。そして、制御はステップＳ３２およびステップＳ４２に進む。
【００５８】
ステップＳ３２において、ＡＣフェーズ信号ＡＣが１（Ｈｉｇｈ）であるか否かが判断される。Ｙｅｓの場合にのみ制御は次のステップＳ３３に進む。
【００５９】
ステップＳ３３において、カウンタＡＣ＿Ｎｕｍが１だけインクリメントされる。そして、制御は次のステップＳ３４に進む。
【００６０】
ステップＳ３４において、転送終了割込信号ＳＩｅが１（Ｈｉｇｈ）であるか否かが判断される。Ｎｏの場合、制御は上述のステップＳ３２およびＳ３３における処理を繰り返す。そして、Ｙｅｓの場合にのみ、制御は次のステップＳ３５に進む。
【００６１】
ステップＳ４２において、ＡＣフェーズＤ信号ＡＣＤが１（Ｈｉｇｈ）であるか否かが判断される。Ｙｅｓの場合にのみ制御は次のステップＳ４３に進む。
【００６２】
ステップＳ４３において、カウンタＡＣＤ＿Ｎｕｍが１だけインクリメントされる。そして、制御は次のステップＳ４４に進む。
【００６３】
ステップＳ４４において、転送終了割込信号ＳＩｅが１（Ｈｉｇｈ）であるか否かが判断される。Ｎｏの場合、制御は上述のステップＳ４２およびＳ４３における処理を繰り返す。そして、Ｙｅｓの場合にのみ、制御は次のステップＳ３５に進む。
【００６４】
ステップＳ３５において、転送終了割込時における受信バッファ２２に滞留するアドレス数が算出される。アドレス数（カウンタＡ＿Ｎｕｍ）は、カウンタＡＣ＿ＮｕｍからカウンタＡＣＤ＿Ｎｕｍを減算することによって求められる。そして、制御は次のステップＳ３６に進む。
【００６５】
ステップＳ３６において、遅延量Ｄｅｌａｙが算出される。遅延量Ｄｅｌａｙは、ステップＳ３５で算出されたカウンタＡ＿Ｎｕｍに、ＤＭＡ転送一回分の時間を乗算することによって求められる。そして、制御は次のステップＳ３７に進む。
【００６６】
ステップＳ３７において、転送終了割込遅延回路２９にステップＳ３６で算出された遅延量Ｄｅｌａｙが設定される。その後、転送終了割込遅延回路２９が起動される。そして、制御は次のステップＳ３８に進む。
【００６７】
ステップＳ３８において、遅延転送終了割込信号ＳＩｅｄが１（Ｈｉｇｈ）であるか否かが判断される。Ｙｅｓの場合にのみ、制御は次のステップＳ３９に進む。
【００６８】
ステップＳ３９において、カウンタＡＣ＿Ｎｕｍ、カウンタＡＣＤ＿Ｎｕｍ、およびカウンタＡ＿Ｎｕｍがそれぞれ０にリセットされる。さらに、転送終了割込信号ＳＩｅおよび遅延転送終了割込信号ＳＩｅｄがＣＰＵ１２３によってネゲートされる。そして、制御は、上述のステップＳ３２およびステップＳ４３に戻る。
【００６９】
上述のように、遅延値設定回路３１においては、ＰＣＩバス２００のアドレス／データ多重部のアドレス情報の部分を示すＡＣフェーズ信号ＡＣが"Ｈｉｇｈ"となる回数がカ
ウントされて、受信バッファ２２に格納されるアドレスＡの数が算出される（ステップＳ３２、Ｓ３３、およびＳ３４）。同様に、ＡＣフェーズ信号ＡＣを遅延させて生成されたＡＣフェーズＤ信号ＡＣＤが"Ｈｉｇｈ"となる回数がカウントされて、受信バッファ２
２により読み出されたアドレスＡの数が算出される（ステップＳ４２、Ｓ４３、およびＳ４４）。
【００７０】
転送終了割り込みが転送元デバイス１１から出力された時のＡＣとＡＣＤの差分（Ａ＿Ｎｕｍ）が算出される（ステップＳ３５）。この差分（Ａ＿Ｎｕｍ）は受信バッファ２２に滞留するアドレスの数で、以後、Ａ＿Ｎｕｍ個のＤＭＡ転送が行われることが分かる。従って遅延量ＤｅｌａｙはＤＭＡ転送１回分の時間×Ａ＿Ｎｕｍと算出される（ステップＳ３６）。
【００７１】
算出された遅延量Ｄｅｌａｙが転送終了割込遅延回路２９に設定されて、転送終了割込信号ＳＩｅが遅延される（ステップＳ３７）。具体的には、ＰＣＩバスインターフェース回路２１から出力された転送終了割込信号ＳＩｅが、遅延量Ｄｅｌａｙが設定された後に転送終了割込遅延回路２９に入力するように、遅延値設定用遅延回路３２によって所定の時間だけ遅延される。この遅延された転送終了割込信号ＳＩｅを転送終了割込信号ＳＩｅ‘と識別する。
【００７２】
遅延量Ｄｅｌａｙが設定された転送終了割込遅延回路２９に、転送終了割込信号ＳＩｅ‘が入力される。そして、転送終了割込信号ＳＩｅ’は、メモリインターフェース制御回路２８によって遅延量Ｄｅｌａｙだけ遅延されて遅延転送終了割込信号ＳＩｅｄが生成される。
【００７３】
ＣＰＵ１２３が遅延転送終了割込信号ＳＩｅｄを認識した時点で、ＣＰＵ１２３によるソフトウェア処理でカウンタＡＣ＿Ｎｕｍ、ＡＣＤ＿Ｎｕｍ、およびＡ＿Ｎｕｍ＝０がそれぞれリセットされる。さらに、転送終了割込信号ＳＩｅと遅延転送終了割込信号ＳＩｅｄとがネゲートされる（ステップＳ３８およびＳ３９）。
【００７４】
上述のように、第１の実施の形態においては受信バッファ２２の半分にアドレスが滞留すると見なして遅延量Ｄｅｌａｙが算出されている。これに対して、第２の実施の形態においては、は実データでの受信バッファ２２に滞留するアドレスの個数に基づいて遅延量Ｄｅｌａｙが算出されるので、遅延量Ｄｅｌａｙがより正確に求めることができる。なお、アドレス数を見なす場合（第１の実施の形態）は、安全を見てアドレス数は実際（第２の実施の形態）より多めに設定されるので、遅延量Ｄｅｌａｙも大きめに設定される。よって、第２の実施の形態においては第１の実施の形態におけるのに比べて、データ転送のパフォーマンスが改善される。
【００７５】
上述のように、本発明にかかるデータ転送装置においては、ＰＣＩバスで接続されたデバイス間のデータ転送において、ソフトウェアの負担を軽減し、かつシステムとしてのパフォーマンスを改善できる。また複数機能でシェアリングして使用されるシステムＬＳＩ用メモリと外部デバイスとのデータ転送においては、外部デバイスからのデータ転送終了割り込みを本発明のように遅延させることは非常に有用である。なお、上述の実施の形態においては、ＰＣＩバスでデバイス間の接続を行っているが、データとアドレスが多重されたバスであれば本発明は有用に適応できる。
【産業上の利用可能性】
【００７６】
本発明は、デジタル機器における、デジタル放送機器のシステムＬＳＩとＵＳＢやＥｔｈｅｒなどのデバイス間でのデータ転送システム等に応用することができる。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態にかかるデータ転送装置の構成を示すブロック図
【図２】図１のデバイスインターフェースの構成を示すブロック図
【図３】図１のＰＣＩバスインターフェース回路の動作を表すタイミングチャート
【図４】図１のデータ転送装置におけるデータ転送の説明図
【図５】図１のデータ転送装置によるデータ転送動作を表すフローチャート
【図６】図１のデータ転送装置による遅延転送終了割込信号生成の説明図
【図７】本発明の第２の実施の形態にかかるデータ転送装置のデバイスインターフェースの構成を示すブロック図
【図８】図７の遅延値設定回路による遅延量設定動作を表すフローチャート
【符号の説明】
【００７８】
１１    転送元デバイス
１２ａ、１２ｂ    転送先デバイス
１２１ａ、１２１ｂ    転送元デバイスインターフェース
１２２    メモリインターフェース
１２３    ＣＰＵ
１３    メモリ
２１    ＰＣＩバスインターフェース回路
２２    受信バッファ
２３    制御バッファ
２４    ＣＭＤ／ＢＥ＃バッファ
２５    ＡＤ分離回路
２６    ＣＭＤ／ＢＥ＃分離回路
２７    ＤＭＡ用バッファ
２８    メモリインターフェース制御回路
２９    転送終了割り込み遅延回路
３０    遅延値レジスタ
３１    遅延値設定回路
３２    遅延値設定用遅延回路
１０００  データ転送装置
【図１】
2008217507.tif 000003
【図２】
2008217507.tif 000004
【図３】
2008217507.tif 000005
【図４】
2008217507.tif 000006
【図５】
2008217507.tif 000007
【図６】
2008217507.tif 000008
【図７】
2008217507.tif 000009
【図８】
2008217507.tif 000010