(57)【要約】【課題】パラレルＡＴＡとシリアルＡＴＡのバスブリッジ機能を実現しながらハードリセット後のデバイスの非存在検知についても適正に実現する。【解決手段】データ転送制御装置は、ＰＡＴＡバスに接続されるＰＡＴＡＩ／Ｆ１０と、ＳＡＴＡバスに接続されるＳＡＴＡＩ／Ｆ５０と、転送シーケンス制御を行うシーケンスコントローラ３０を含む。ＰＡＴＡＩ／Ｆ１０はタスクファイル・レジスタＴＦＲ１２を有する。シーケンスコントローラ３０は、ハードリセット後、ＴＦＲ１２のステータスレジスタのビジービットをセットして、ＳＡＴＡバス側でのデバイス存在検知期間ＴＡの経過をウェイトし、期間ＴＡが経過した後に、ＳＡＴＡデバイス４が非存在であることが検知された場合に、ＴＦＲ１２のステータスレジスタにデバイス非存在コードを設定する。【選択図】図１
2009037474.tif 000002
【特許請求の範囲】
【請求項１】
パラレルＡＴＡとシリアルＡＴＡのバスブリッジ機能を有するデータ転送制御装置であって、
パラレルＡＴＡバスに接続され、ホストとの間のインターフェースを行うパラレルＡＴＡインターフェースと、
シリアルＡＴＡバスに接続され、シリアルＡＴＡのデバイスとの間のインターフェースを行うシリアルＡＴＡインターフェースと、
転送シーケンス制御を行うシーケンスコントローラを含み、
前記パラレルＡＴＡインターフェースは、タスクファイル・レジスタを有し、
前記シーケンスコントローラは、
ハードリセット後、前記タスクファイル・レジスタのステータスレジスタのビジービットをセットして、前記シリアルＡＴＡバス側でのデバイス存在検知期間の経過をウェイトし、前記デバイス存在検知期間が経過した後に、前記シリアルＡＴＡの前記デバイスが非存在であることが検知された場合には、前記タスクファイル・レジスタの前記ステータスレジスタにデバイス非存在コードを設定することを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記シーケンスコントローラは、
前記デバイス存在検知期間において、前記シリアルＡＴＡインターフェスから出力されるデバイス検知信号をモニタし、前記デバイス存在検知期間内に前記デバイス検知信号がアクティブにならなかった場合に、前記タスクファイル・レジスタの前記ステータスレジスタに前記デバイス非存在コードを設定することを特徴とするデータ転送制御装置。
【請求項３】
請求項１又は２において、
前記シリアルＡＴＡインターフェースは、
前記タスクファイル・レジスタとの間でレジスタ値が転送されるシャドウ・タスクファイル・レジスタを含み、
前記シーケンスコントローラは、
前記タスクファイル・レジスタと前記シャドウ・タスクファイル・レジスタとの間でレジスタ値の転送処理を行うことを特徴とするデータ転送制御装置。
【請求項４】
請求項３において、
前記シーケンスコントローラは、
前記タスクファイル・レジスタのステータスレジスタに前記デバイス非存在コードが設定された場合には、ホストによりＡＴＡコマンドが発行された場合にも、前記タスクファイル・レジスタから前記シャドウ・タスクファイル・レジスタへのレジスタ値の転送処理を非実行にすることを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
初期化シーケンス管理機能を有しない前記シリアルＡＴＡの前記デバイスに代わって初期化シーケンス管理を代行する初期化シーケンス管理部を含み、
前記初期化シーケンス管理部は、
前記デバイス存在検知期間内に前記デバイスの存在が検知された場合に、初期化シーケンス処理を実行することを特徴とするデータ転送制御装置。
【請求項６】
請求項５において、
前記初期化シーケンス管理部は、
マスタ・スレーブ設定端子によりデータ転送制御装置がマスタ側に設定された場合には、ハードリセット後にスレーブ検知処理と自己診断処理を行い、前記マスタ・スレーブ設定端子によりデータ転送制御装置がスレーブ側に設定された場合には、ハードリセット後にスレーブ検知信号、自己診断信号の制御を行うことを特徴とするデータ転送制御装置。
【請求項７】
請求項６において、
前記シリアルＡＴＡインターフェースは、
前記タスクファイル・レジスタとの間でレジスタ値が転送されるシャドウ・タスクファイル・レジスタを含み、
前記シーケンスコントローラは、
データ転送制御装置がマスタ側に設定されているときに、前記ホストがマスタへのＡＴＡコマンドを発行した場合には、前記タスクファイル・レジスタのレジスタ値をそのまま前記シャドウ・タスクファイル・レジスタに転送し、
データ転送制御装置がスレーブ側に設定されているときに、前記ホストがスレーブへのＡＴＡコマンドを発行した場合には、前記タスクファイル・レジスタのデバイス／ヘッドレジスタのＤＥＶビットをマスタ設定に書き換えて前記タスクファイル・レジスタのレジスタ値を前記シャドウ・タスクファイル・レジスタに転送することを特徴とするデータ転送制御装置。
【請求項８】
請求項７において、
前記シーケンスコントローラは、
データ転送制御装置がマスタ側に設定されているときに、前記ホストからのＡＴＡコマンドに対応するＦＩＳを前記シリアルＡＴＡインターフェースが前記デバイスから受信した場合には、前記シャドウ・タスクファイル・レジスタのレジスタ値を前記タスクファイル・レジスタにそのままに転送し、
データ転送制御装置がスレーブ側に設定されているときに、前記ホストからのＡＴＡコマンドに対応するＦＩＳを前記シリアルＡＴＡインターフェースが前記デバイスから受信した場合には、前記シャドウ・タスクファイル・レジスタのデバイス／ヘッドレジスタのＤＥＶビットをスレーブ設定に書き換えて前記シャドウ・タスクファイル・レジスタのレジスタ値を前記タスクファイル・レジスタに転送することを特徴とするデータ転送制御装置。
【請求項９】
請求項１乃至８のいずれかに記載のデータ転送制御装置と、
前記データ転送制御装置に接続される前記ホストと、
前記データ転送制御装置に接続される前記デバイスと、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置及び電子機器に関する。
【背景技術】
【０００２】
近年、ストレージデバイス等のシリアルインターフェースとして、シリアルＡＴＡ（Serial AT Attachment）と呼ばれる規格が脚光を浴びている。このシリアルＡＴＡは、パラレルＡＴＡ（ＩＤＥ）との間のソフトウェアレベルでの互換性を備えた規格である。そして最初の規格であるシリアルＡＴＡ Iのデータ転送速度は１．５Ｇｂｐｓであったが、次の規格であるシリアルＡＴＡ II  Ｇｅｎ２ではデータ転送速度が３．０Ｇｂｐｓに高速化している。このシリアルＡＴＡを用いれば、電子機器が内蔵する回路基板間の配線本数を減らすことができ、電子機器のコンパクト化を図れる。
【０００３】
ところが、電子機器のホスト（ホストデバイス、ホスト基板）は、パラレルＡＴＡ（以下、適宜、ＰＡＴＡと呼ぶ）のインターフェース（以下、適宜、Ｉ／Ｆと呼ぶ）は備えているが、シリアルＡＴＡ（以下、適宜、ＳＡＴＡと呼ぶ）のＩ／Ｆについては備えていないものが多い。このため、ＰＡＴＡＩ／Ｆのみを備えた既存のホストに対しては、ＳＡＴＡのデバイスを接続できないという問題がある。従って、ＰＡＴＡとＳＡＴＡのブリッジ機能を有するデータ転送制御装置の提供が望まれる。
【０００４】
しかしながら、このようなブリッジ機能を有するデータ転送制御装置では、ハードリセット（ハードウェアリセット）後のデバイス存在検知において、以下のような問題点があることが判明した。
【０００５】
即ちＰＡＴＡのシステムでは、ハードリセット後のデバイスの非存在検知については、ＰＡＴＡのタスクファイル・レジスタのステータスレジスタを用いて直ぐにホストに通知する。
【０００６】
一方、ＳＡＴＡでは、ハードリセット後、少なくとも１０ｍｓのデバイス存在検知期間の間、デバイスの存在検知を行っている。従って、ＰＡＴＡとＳＡＴＡのブリッジ機能を有するデータ転送制御装置において、ＰＡＴＡシステムのようにハードリセット後に直ちにデバイスの非存在検知をホストに知らせてしまうと、ホスト上で動作するドライバソフトウェアが、その時点でデバイスが存在していないと判断してしまう。従って、それ以降の１０ｍｓ以内に、ブリッジ機能を有するデータ転送制御装置のＳＡＴＡバス側において、ＳＡＴＡデバイスの存在が検知されたとしても、ホストのドライバソフトウェアがＳＡＴＡデバイスの存在を認識できなくなるおそれがある。
【０００７】
なお特許文献１、２には、ＳＡＴＡとＰＡＴＡのブリッジＩＣが開示されている。しかしながらこの特許文献１、２は、ブリッジＩＣを使用した回路基板などに関する発明であり、ブリッジＩＣの具体的な構成に関する発明ではない。
【０００８】
また特許文献３には、ＳＡＴＡブリッジを内蔵するＨＤＤが開示されている。しかしながら、この特許文献３のＳＡＴＡブリッジは、ＳＡＴＡ側にホストが接続されＰＡＴＡ側にデバイスが接続されるブリッジであり、ＰＡＴＡ側にホストが接続されＳＡＴＡ側にデバイスが接続されるブリッジに関する発明ではない。また特許文献３は、ファームウェアによるプロトコル制御に特徴がある発明であり、回路構成に特徴がある発明ではない。
【特許文献１】特開２００５−３４６１２３号公報
【特許文献２】特開２００６−１２１６２１号公報
【特許文献３】特開２００６−１８４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、以上のような課題に鑑みてなされたものであり、本発明に係る幾つかの態様によれば、パラレルＡＴＡとシリアルＡＴＡのバスブリッジ機能を実現しながらハードリセット後のデバイスの非存在検知についても適正に実現できる。
【課題を解決するための手段】
【００１０】
本発明は、パラレルＡＴＡとシリアルＡＴＡのバスブリッジ機能を有するデータ転送制御装置であって、パラレルＡＴＡバスに接続され、ホストとの間のインターフェースを行うパラレルＡＴＡインターフェースと、シリアルＡＴＡバスに接続され、シリアルＡＴＡのデバイスとの間のインターフェースを行うシリアルＡＴＡインターフェースと、転送シーケンス制御を行うシーケンスコントローラを含み、前記パラレルＡＴＡインターフェースは、タスクファイル・レジスタを有し、前記シーケンスコントローラは、ハードリセット後、前記タスクファイル・レジスタのステータスレジスタのビジービットをセットして、前記シリアルＡＴＡバス側でのデバイス存在検知期間の経過をウェイトし、前記デバイス存在検知期間が経過した後に、前記シリアルＡＴＡの前記デバイスが非存在であることが検知された場合には、前記タスクファイル・レジスタの前記ステータスレジスタにデバイス非存在コードを設定するデータ転送制御装置に関係する。
【００１１】
本発明によれば、ハードリセット後に、タスクファイル・レジスタのステータスレジスタのビジービットがセットされて、ビジー状態であることがホストに知らさせる。そしてデバイス存在検知期間の経過後にシリアルＡＴＡのデバイスが非存在であることが検知されると、タスクファイル・レジスタのステータスレジスタにデバイス非存在コードが設定されて、デバイスが非存在であることがホストに知らされる。このようにすれば、パラレルＡＴＡとシリアルＡＴＡのブリッジ機能をデータ転送制御装置に持たせた場合に、シリアルＡＴＡバスでのデバイスの非存在検知についての誤動作の発生を防止できる。
【００１２】
また本発明では、前記シーケンスコントローラは、前記デバイス存在検知期間において、前記シリアルＡＴＡインターフェスから出力されるデバイス検知信号をモニタし、前記デバイス存在検知期間内に前記デバイス検知信号がアクティブにならなかった場合に、前記タスクファイル・レジスタの前記ステータスレジスタに前記デバイス非存在コードを設定してもよい。
【００１３】
このようにすれば、デバイス検知信号を有効活用して、デバイス非存在コードの設定処理を実現できる。
【００１４】
また本発明では、前記シリアルＡＴＡインターフェースは、前記タスクファイル・レジスタとの間でレジスタ値が転送されるシャドウ・タスクファイル・レジスタを含み、前記シーケンスコントローラは、前記タスクファイル・レジスタと前記シャドウ・タスクファイル・レジスタとの間でレジスタ値の転送処理を行ってもよい。
【００１５】
このようにすれば、ホストからデバイスへのコマンド、パラメータ等の転送や、デバイスからホストへのステータス等の転送を、簡素な処理、構成で実現できる。
【００１６】
また本発明では、前記シーケンスコントローラは、前記タスクファイル・レジスタのステータスレジスタに前記デバイス非存在コードが設定された場合には、ホストによりＡＴＡコマンドが発行された場合にも、前記タスクファイル・レジスタから前記シャドウ・タスクファイル・レジスタへのレジスタ値の転送処理を非実行にしてもよい。
【００１７】
このようにすれば、タスクファイル・レジスタにデバイス非存在コードが設定された後に予期せぬ誤動作が発生する事態を防止できる。
【００１８】
また本発明では、初期化シーケンス管理機能を有しない前記シリアルＡＴＡの前記デバイスに代わって初期化シーケンス管理を代行する初期化シーケンス管理部を含み、前記初期化シーケンス管理部は、前記デバイス存在検知期間内に前記デバイスの存在が検知された場合に、初期化シーケンス処理を実行してもよい。
【００１９】
このようにすれば、シリアルＡＴＡデバイスが初期化シーケンス管理機能を有しない場合にも、この初期化シーケンス管理を代行して、スレーブ検知等の初期化シーケンス処理を実行できるようになる。
【００２０】
また本発明では、前記初期化シーケンス管理部は、マスタ・スレーブ設定端子によりデータ転送制御装置がマスタ側に設定された場合には、ハードリセット後にスレーブ検知処理と自己診断処理を行い、前記マスタ・スレーブ設定端子によりデータ転送制御装置がスレーブ側に設定された場合には、ハードリセット後にスレーブ検知信号、自己診断信号の制御を行ってもよい。
【００２１】
このようにシリアルＡＴＡのデバイスに代わって初期化シーケンス処理を代行すれば、マスタ、スレーブの区別の概念の無いシリアルＡＴＡのデバイスを、マスタ、スレーブの区別が可能なパラレルＡＴＡのデバイスのように扱うことが可能になると共に、パラレルＡＴＡに準拠した適正な初期化シーケンス処理を実現できる。
【００２２】
また本発明では、前記シリアルＡＴＡインターフェースは、前記タスクファイル・レジスタとの間でレジスタ値が転送されるシャドウ・タスクファイル・レジスタを含み、前記シーケンスコントローラは、データ転送制御装置がマスタ側に設定されているときに、前記ホストがマスタへのＡＴＡコマンドを発行した場合には、前記タスクファイル・レジスタのレジスタ値をそのまま前記シャドウ・タスクファイル・レジスタに転送し、データ転送制御装置がスレーブ側に設定されているときに、前記ホストがスレーブへのＡＴＡコマンドを発行した場合には、前記タスクファイル・レジスタのデバイス／ヘッドレジスタのＤＥＶビットをマスタ設定に書き換えて前記タスクファイル・レジスタのレジスタ値を前記シャドウ・タスクファイル・レジスタに転送してもよい。
【００２３】
このようにすれば、マスタ・スレーブ設定端子の状態に応じた適正な値に、デバイス／ヘッドレジスタのＤＥＶビットが書き換えられるため、データ転送制御装置が例えばスレーブ側に設定された場合にも、ホストから、自身をマスタと認識しているシリアルＡＴＡデバイスに対して、コマンド、パラメータ等の適正な転送処理を実現できる。
【００２４】
また本発明では、前記シーケンスコントローラは、データ転送制御装置がマスタ側に設定されているときに、前記ホストからのＡＴＡコマンドに対応するＦＩＳを前記シリアルＡＴＡインターフェースが前記デバイスから受信した場合には、前記シャドウ・タスクファイル・レジスタのレジスタ値を前記タスクファイル・レジスタにそのままに転送し、データ転送制御装置がスレーブ側に設定されているときに、前記ホストからのＡＴＡコマンドに対応するＦＩＳを前記シリアルＡＴＡインターフェースが前記デバイスから受信した場合には、前記シャドウ・タスクファイル・レジスタのデバイス／ヘッドレジスタのＤＥＶビットをスレーブ設定に書き換えて前記シャドウ・タスクファイル・レジスタのレジスタ値を前記タスクファイル・レジスタに転送してもよい。
【００２５】
このようにすれば、マスタ・スレーブ設定端子の状態に応じた適正な値に、デバイス／ヘッドレジスタのＤＥＶビットが書き換えられるため、データ転送制御装置が例えばスレーブ側に設定された場合にも、自身をマスタと認識しているシリアルＡＴＡデバイスから、ホストに対して、ステータス等の適正な転送処理を実現できる。
【００２６】
また本発明は、上記のいずれかに記載のデータ転送制御装置と、前記データ転送制御装置に接続される前記ホストと、前記データ転送制御装置に接続される前記デバイスとを含む電子機器に関係する。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２８】
１．データ転送制御装置の構成
図１に本実施形態のデータ転送制御装置の構成例を示す。このデータ転送制御装置はＰＡＴＡ（Parallel AT Attachment）とＳＡＴＡ（Serial AT Attachment）のバスブリッジ機能を有する。
【００２９】
なお本実施形態のデータ転送制御装置は図１の構成に限定されず、その構成要素の一部（例えばデータバッファ）を省略したり、他の構成要素（例えば外部Ｉ／Ｆ回路、ＣＰＵ、タイマ）を追加するなどの種々の変形実施が可能である。例えば本実施形態のデータ転送制御装置は、ＰＡＴＡとＳＡＴＡのバスブリッジ機能以外にも、ＰＡＴＡとＵＳＢ、ＰＡＴＡとＳＤ（Secure Digital）カードインターフェス、ＰＡＴＡとＣＥ−ＡＴＡのバスブリッジ機能を実現できるようにしてもよい。
【００３０】
ＰＡＴＡＩ／Ｆ１０（パラレルＡＴＡインターフェース）は、ＰＡＴＡバス（ＡＴＡバス、ＩＤＥバス）に接続され、ホスト２（ホストデバイス）との間のインターフェースを行う。具体的にはＰＡＴＡＩ／Ｆ１０は、ホスト２が有するホスト側のＰＡＴＡＩ／ＦにＰＡＴＡバスを介して接続される。そしてＡＴＡで規格化された後述する各種信号によりやり取りを行い、ＰＡＴＡ（ＩＤＥ）のデータ転送を実現する。またＰＡＴＡＩ／Ｆ１０は、データバッファ７０を介したＳＡＴＡＩ／Ｆ５０との間のデータ転送制御も行う。このＰＡＴＡＩ／Ｆ１０は、ＰＡＴＡとＳＡＴＡのブリッジ用に擬似的（仮想的）に設けられたタスクファイル・レジスタ１２（以下、適宜、ＴＦＲと呼ぶ）を含むことができる。
【００３１】
なおホスト２としては、例えばＣＰＵ、ＭＰＵ、ＤＳＰなどのプロセッサや、専用制御ＩＣや、これらのプロセッサ又は専用制御ＩＣが実装されたホスト回路基板などが考えられる。またデバイス４としては、ハードディスクドライブ（ＨＤＤ）、光ディスクドライブ（ＣＤ、ＤＶＤ）、磁気ディスクドライブなどのＳＡＴＡＩ／Ｆを備える各種デバイスが考えられる。
【００３２】
ＳＡＴＡＩ／Ｆ５０（シリアルＡＴＡインターフェース）は、ＳＡＴＡバス（高速シリアルバス）に接続され、ＳＡＴＡのデバイス４との間のインターフェースを行う。具体的にはＳＡＴＡＩ／Ｆ５０は、デバイス４が有するデバイス側のＳＡＴＡＩ／Ｆに接続され、小振幅の差動信号によりやり取りを行い、ＳＡＴＡのデータ転送を実現する。またＳＡＴＡＩ／Ｆ５０は、データバッファ７０を介したＰＡＴＡＩ／Ｆ１０との間のデータ転送制御も行う。このＳＡＴＡＩ／Ｆ５０は、ＳＡＴＡ規格のシャドウ・タスクファイル・レジスタ５２（以下、適宜ＳＦＲと呼ぶ）を含むことができる。
【００３３】
シーケンスコントローラ３０は転送のシーケンス制御を行う。具体的には、ＰＡＴＡとＳＡＴＡのブリッジ機能を実現するために、ＰＡＴＡＩ／Ｆ１０、ＳＡＴＡＩ／Ｆ５０、データバッファ７０の間のデータ転送のシーケンス制御を行ったり、レジスタ値の転送シーケンス制御を行う。
【００３４】
データバッファ７０は、ホスト２（ＰＡＴＡＩ／Ｆ）、デバイス４（ＳＡＴＡＩ／Ｆ）の間で転送されるデータのバッファリングを行う。そしてＰＡＴＡ側とＳＡＴＡ側のクロック周波数の差を吸収するための緩衝用のバッファ（ＦＩＦＯ）として機能する。即ちＰＡＴＡ側のクロック周波数が例えば５０ＭＨｚ（或いは６０ＭＨｚ）で、ＳＡＴＡ側のクロック周波数が例えば３７．５ＭＨｚである場合に、データバッファ７０を設けることでこのクロック周波数の差を吸収できる。このデータバッファ７０は、例えば５０ＭＨｚ（第１の周波数）でデータが入出力されるＰＡＴＡＩ／Ｆ１０側の第１のポートと、例えば３７．５ＭＨｚ（第２の周波数）でデータが入出力されるＳＡＴＡＩ／Ｆ５０側の第２のポートとを有するデュアルポートのメモリ（ＲＡＭ）などにより実現できる。
【００３５】
図１の構成によれば、ホスト２がＰＡＴＡＩ／Ｆしか備えていない場合にも、ＳＡＴＡＩ／Ｆを有するデバイス４をデータ転送制御装置を介してホスト２に接続できる。従って、ホスト２のファームウェア、ソフトウェアとして、既存のＰＡＴＡ（ＩＤＥ）用のファームウェア、ソフトウェアを使用できる。これにより電子機器の開発期間の短縮化や低コスト化を図れる。またデバイス４として、市場供給量が多い大容量のＨＤＤをホスト２に接続できるようになり、電子機器の内蔵ＨＤＤの大容量化を図れる。
【００３６】
またホスト２が搭載される回路基板とデバイス４が搭載される回路基板の間を、シリアルバスであるＳＡＴＡバスで接続できるため、回路基板間の配線本数を減らすことができ、電子機器のコンパクト化を図れる。
【００３７】
そして実施形態では図１に示すように、ハードリセット（ハードウェアリセット）後、シーケンスコントローラ３０は、タスクファイル・レジスタＴＦＲ１２のステータスレジスタのビジービットをセットして、ビジー状態であることをホスト２に知らせ、ＳＡＴＡバス側でのデバイス存在検知期間ＴＡ（例えば１０ｍｓ）の経過をウェイトする。そしてデバイス存在検知期間ＴＡが経過した後に、ＳＡＴＡのデバイス４が非存在であることが検知された場合には、ＴＦＲ１２のステータスレジスタにデバイス非存在コードである７Ｆｈを設定する。
【００３８】
例えばＰＡＴＡ（ＩＤＥ）のシステムにおいては、ハードリセット後のデバイスの非存在検知については、直ちにホスト側に知らせていた。
【００３９】
一方、ＳＡＴＡ規格においては、ハードリセット後、デバイス存在検知期間ＴＡである１０ｍｓの間、ＳＡＴＡのデバイスの存在検知を行うことが規定されている。従って、ＰＡＴＡシステムの場合と同様にハードリセット後に直ちにデバイスの非存在検知をホスト側に通知してしまうと、ホスト上で動作するドライバソフトウェアが、その時点でデバイスが存在していないと判断してしまう。従って、それ以降の１０ｍｓ以内において、ＳＡＴＡバス側においてＳＡＴＡのデバイスの存在が検知されたとしても、ドライバソフトウェアがＳＡＴＡのデバイスの存在を認識できなくなってしまうおそれがある。
【００４０】
この点、本実施形態では、ハードリセット後、直ぐにはＴＦＲ１２のステータスレジスタにデバイス非存在コード７Ｆｈを設定せずに、ＢＵＳＹビットを１にセットして、ビジー状態であることをホスト２に知らせる。そしてデバイス存在検知期間ＴＡである１０ｍｓ以上が経過してもＳＡＴＡのデバイス４が存在しない場合に、初めて、ＴＦＲ１２のステータスレジスタにデバイス非存在検知７Ｆｈを設定して、デバイス４が存在しないことをホスト２に対して通知する。このようにすることで、ＰＡＴＡとＳＡＴＡのブリッジ機能をデータ転送制御装置に持たせた場合に、デバイスの非存在検知についての誤動作が発生するのを防止できる。
【００４１】
また本実施形態では、シーケンスコントローラ３０が、初期化シーケンス管理機能を有しないＳＡＴＡのデバイス４に代わって初期化シーケンス管理を代行する初期化シーケンス管理部３４を含む。そして初期化シーケンス管理部３４は、デバイス存在検知期間ＴＡ内にデバイス４の存在が検知された場合に、初期化シーケンス処理を実行する。
【００４２】
例えばＳＡＴＡのデバイス４にはマスタ、スレーブの区別の概念が無いため、ＳＡＴＡのデバイス４はスレーブ検知等の初期化シーケンス管理機能を有しない。従って、ＰＡＴＡとＳＡＴＡのブリッジ機能を有するデータ転送制御装置のＳＡＴＡバスにＳＡＴＡのデバイス４を接続する場合に、初期化シーケンス管理を行う処理主体が無くなってしまう。
【００４３】
この点、図１では初期化シーケンス管理部３４が、初期化シーケンス管理機能を有しないＳＡＴＡのデバイス４に代わって初期化シーケンス管理を代行し、デバイス存在検知期間ＴＡ内にデバイス４の存在が検知された場合に、初期化シーケンス処理を実行する。従って、ホスト２上で動作するドライバソフトウェアは、マスタ、スレーブの区別の概念の無いＳＡＴＡのデバイス４を、マスタ、スレーブの区別が可能なＰＡＴＡのデバイスのように扱うことが可能になり、利便性を向上できる。
【００４４】
２．詳細な構成例
図２にデータ転送制御装置の詳細な構成例を示す。ＰＡＴＡＩ／Ｆ１０はタスクファイル・レジスタＴＦＲ１２、転送コントローラ１４を含む。ここでＴＦＲ１２は、ＰＡＴＡとＳＡＴＡのバスブリッジ用に擬似的に設けられたレジスタである。このＴＦＲ１２を設けることで、ホスト２は、ＳＡＴＡのデバイス４を、あたかもＰＡＴＡのデバイスのように扱ってデータのリードやライトを行うことが可能になる。即ちホスト２は、既存のＰＡＴＡ用のファームウェアやソフトウェアを使用して、ＳＡＴＡのデバイス４を制御できるようになる。
【００４５】
転送コントローラ１４は、ＰＡＴＡ用の信号ＸＣＳ〜ＸＰＤＩＡＧを用いてＰＡＴＡ（ＩＤＥ）のインターフェースを実現したり、データ転送用の制御信号を用いて、データバッファ７０との間のデータ転送を制御する。
【００４６】
データバッファ７０は、メモリコントローラ７２、ＦＩＦＯメモリ（ＦＩＦＯＲＡＭ）７４を含む。メモリコントローラ７２は、ＦＩＦＯメモリ７４のデータの書き込み制御や読み出し制御を行う。またＰＡＴＡＩ／Ｆ１０やＳＡＴＡＩ／Ｆ５０との間で、例えばＲＥＱ信号やＡＣＫ信号などの制御信号を用いたデータ転送制御を行う。
【００４７】
ＳＡＴＡＩ／Ｆ５０は、シャドウ・タスクファイル・レジスタＳＦＲ５２、トランスポートコントローラ１１０、リンクコントローラ１５０、物理層回路２００を含む。
【００４８】
トランスポートコントローラ１１０、リンクコントローラ１５０、物理層回路２００は、各々、ＳＡＴＡ規格のトランスポート層、リンク層、物理層の処理を行う回路である。
【００４９】
シャドウ・タスクファイル・レジスタＳＦＲ５２はＳＡＴＡで規格化されているレジスタである。即ちＳＡＴＡでは、従来のＰＡＴＡ（ＩＤＥ）との間でソフトウェアレベルでの互換性が維持されており、タスクファイル・レジスタが２つ存在することが特徴になっている。即ちホスト（ＨＢＡ）側のシャドウ・タスクファイル・レジスタとデバイス側の本来のタスクファイル・レジスタである。
【００５０】
一方、ＰＡＴＡＩ／Ｆ１０に設けられたＴＦＲ１２はＳＡＴＡで規格化されるレジスタではなく、ＰＡＴＡとＳＡＴＡのブリッジ用に設けられた擬似的なレジスタである。ホスト２は、ＴＦＲ１２をＰＡＴＡのタスクファイル・レジスタとして認識してアクセスし、レジスタ値を書き込んだり、レジスタ値を読み出す。すると本実施形態のデータ転送制御装置が、ＴＦＲ１２のレジスタ値をＳＦＲ５２に転送したり、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送するなどの処理を行う。
【００５１】
このようにすれば、ホスト２が、ＰＡＴＡのＴＦＲ１２にレジスタ値を書き込むと、そのレジスタ値がＳＡＴＡのＳＦＲ５２に転送されて書き込まれ、ＳＡＴＡバスを介してＦＩＳ(Frame Information Structure)によりデバイス４に転送されるようになる。またデバイス４からのＦＩＳによりＳＦＲ５２に書き込まれたレジスタ値が、ＴＦＲ１２に転送されてホスト２に読み出されるようになる。従ってホスト２は、ＳＡＴＡのデバイス４を、あたかもＰＡＴＡのデバイスのように扱ってデータのリードやライトを行うことが可能になり、ＰＡＴＡとＳＡＴＡのブリッジ機能を効率良く実現できる。
【００５２】
なおＴＦＲ１２とＳＦＲ５２の間のレジスタ値の転送は次のような手法により実現できる。即ちＴＦＲ１２のレジスタ群のビット（全ビット）とＳＦＲ５２のレジスタ群のビット（全ビット）を、シーケンスコントローラ３０を介して信号線により接続しておく。そしてレジスタ値の転送を行う場合には、シーケンスコントローラ３０が転送トリガ信号を生成し、この転送トリガ信号に基づいて、ＴＦＲ１２のレジスタ値をＳＦＲ５２に転送したり、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送すればよい。
【００５３】
３．ＰＡＴＡＩ／Ｆ
次に、ＰＡＴＡＩ／Ｆ１０のデータ転送処理について、図２の構成及び図３（Ａ）〜図４（Ｂ）の信号波形を用いて説明する。
【００５４】
ＸＣＳ［１：０］は、ＰＡＴＡの各レジスタにアクセスするために使用するチップセレクト信号である。ＤＡ［２：０］は、データ又はデータポートにアクセスするためのアドレス信号である。ＤＭＡＲＱ、ＸＤＭＡＣＫは、ＤＭＡ転送に使用される信号である。データ転送の準備が整った時にデバイス側がＤＭＡＲＱをアクティブ（アサート）にし、これに応答して、ホスト側がＸＤＭＡＣＫをアクティブにする。
【００５５】
ＸＤＩＯＷは、レジスタ又はデータポートの書き込み時に使用するライト信号である。ＸＤＩＯＲは、レジスタ又はデータポートの読み出し時に使用するリード信号である。ＩＯＲＤＹは、デバイス側のデータ転送の準備が整っていない時のウェイト信号等に使用される。
【００５６】
ＩＮＴＲＱは、デバイス側が、ホスト側に対して割り込みを要求するために使用される信号である。このＩＮＴＲＱがアクティブになった後、ホスト側がデバイス側のＴＦＲ１２のステータスレジスタの内容を読むと、所定時間後にデバイス側はＩＮＴＲＱを非アクティブ（ネゲート）にする。このＩＮＴＲＱを用いることで、デバイス側は、コマンド処理の終了をホスト側に通知できる。
【００５７】
図３（Ａ）、図３（Ｂ）は、ＰＩＯ（Programmed I/O）リード、ＰＩＯライトの信号波形例である。ＰＡＴＡのＴＦＲ１２のステータスレジスタのリードは図３（Ａ）のＰＩＯリードにより行い、コマンドレジスタへのライトは図３（Ｂ）のＰＩＯライトにより行う。例えばホスト２によるＡＴＡコマンドの発行は、ＰＩＯライトにより実現できる。
【００５８】
図４（Ａ）、図４（Ｂ）は、ＤＭＡリード、ＤＭＡライトの信号波形例である。データ転送の準備ができると、デバイス側（データ転送制御装置）が、ＤＭＡＲＱをアクティブにする。そして、それを受けて、ホスト側が、ＸＤＭＡＣＫをアクティブにして、ＤＭＡ転送を開始する。その後、ＸＤＩＯＲ（リード時）又はＸＤＩＯＷ（ライト時）を使用して、データＤＤ［１５：０］のＤＭＡ転送を行う。
【００５９】
４．ＳＡＴＡＩ／Ｆ
次にＳＡＴＡＩ／Ｆ５０のデータ転送処理について説明する。図５はＳＡＴＡの送信側のデータ転送処理の流れを示し、図６は受信側のデータ転送処理の流れを示している。
【００６０】
図５に示すように送信側のトランスポートコントローラ（トランスポート層）では、シャドウ・タスクファイル・レジスタに書き込まれたコマンドやデータポートに入力されたデータによりＦＩＳ(Frame Information Structure)が生成される。ここでＦＩＳは、フレームのペイロード部であり、Ｄｗｏｒｄ（３２ビット）単位で構成される。またフレームは、ホストとデバイスの間で交換される情報ユニットであり、ＳＯＦ（Start Of Frame）プリミティブと、ＦＩＳと、ＦＩＳに対して計算されたＣＲＣ（Cyclic Redundancy Check）と、ＥＯＦ（End Of Frame）プリミティブにより構成される。
【００６１】
送信側のリンクコントローラでは、ＦＩＳに対するＣＲＣが演算されてＦＩＳの最後尾に付加される。そしてＦＩＳ及びＣＲＣとスクランブルデータとの排他的論理和（ＸＯＲ）をとるスクランブル処理が行われる。このようにスクランブルされたＦＩＳ及びＣＲＣに対して、８ｂ／１０ｂのエンコードが行われる。ここで８ｂ／１０ｂエンコードは、８ビットのデータを１０ビットの伝送キャラクタに変換するデータ伝送符号化のアルゴリズムであり、符号列内の１と０の数を揃え、連続的な伝送を保証する。そして８ｂ／１０ｂエンコード後のＦＩＳ及びＣＲＣに対してＳＯＦ、ＥＯＦなどのプリミティブが付加される。
【００６２】
送信側の物理層回路では、リンクコントローラからのパラレルデータがシリアルデータに変換され、小振幅の差動信号としてＳＡＴＡバスに送信される。
【００６３】
図６に示すように受信側の物理層回路では、ＳＡＴＡバスを介して受信したシリアルデータがパラレルデータに変換される。
【００６４】
受信側のリンクコントローラでは、ＦＩＳ及びＣＲＣに付加されたプリミティブに対するデコードが行われる。またＦＩＳ及びＣＲＣに対する８ｂ／１０ｂのデコードが行われる。即ち１０ビットの伝送キャラクタが８ビットのデータに変換される。次に、スクランブルされたＦＩＳ及びＣＲＣとスクランブルデータとの排他的論理和をとるデスクランブル処理が行われる。そしてＦＩＳの最後尾に付加されたＣＲＣがチェックされる。
【００６５】
受信側のトランスポートコントローラでは、ＦＩＳのコマンドがシャドウ・タスクファイル・レジスタに書き込まれ、ステータスや割り込みが出力されると共に、データがデータポートを介して出力される。
【００６６】
なお図７にＡＴＡのタスクファイル・レジスタのフォーマット例を示す。タスクファイル・レジスタはコントロールブロックレジスタとコマンドブロックレジスタを有し、チップセレクト信号ＸＣＳ０、ＸＣＳ１が、Ｈレベル（ネゲート）、Ｌレベル（アサート）である場合にはコントロールブロックレジスタが選択され、Ｌレベル、Ｈレベルである場合にはコマンドブロックレジスタが選択される。またコマンドブロックレジスタには、ステータスレジスタ（Status）やＡＴＡコマンドレジスタ（ATA Command）が設けられる。
【００６７】
また図８（Ａ）〜図８（Ｄ）に、ＳＡＴＡＩ／Ｆ５０により送受信されるＦＩＳのフォーマット例を示す。図８（Ａ）はホストからデバイスへのレジスタＦＩＳ、図８（Ｂ）はデバイスからホストへのレジスタＦＩＳ、図８（Ｃ）はＰＩＯセットアップＦＩＳ、図８（Ｄ）はＤＭＡアクティベートＦＩＳのフォーマットである。
【００６８】
５．ＯＯＢシーケンス
次にＳＡＴＡのＯＯＢ（Out Of Band）シーケンスについて説明する。ＳＡＴＡＩ／Ｆ５０（ＯＯＢ検出回路）はＯＯＢ信号の検出処理を行う。このＯＯＢ信号は、ＳＡＴＡのリセット／初期化、通信の確立や、スピード・ネゴシエーションをつかさどる信号である。
【００６９】
図９（Ａ）に示すようにＯＯＢ信号には、ＣＯＭＲＥＳＥＴ／ＣＯＭＩＮＩＴとＣＯＭＷＡＫＥがある。ＣＯＭＲＥＳＥＴとＣＯＭＩＮＩＴとしては同じ信号が使用されるが、ホストが出力する信号がＣＯＭＲＥＳＥＴであり、デバイスが出力する信号がＣＯＭＩＮＩＴである。ＣＯＭＲＥＳＥＴ／ＣＯＭＩＮＩＴとＣＯＭＷＡＫＥとの違いは、図９（Ａ）に示すようにバースト信号間のアイドル間隔である。なお各バースト信号は４つのＡＬＩＧＮプリミティブにより構成される。
【００７０】
図９（Ｂ）にＳＡＴＡの初期化時の信号波形を示す。まずホストがＣＯＭＲＥＳＥＴを発行する（Ａ１）。デバイスはＣＯＭＲＥＳＥＴを検出するとＣＯＭＩＮＩＴを発行する（Ａ２）。するとホストは伝送路を最適化してＣＯＭＷＡＫＥを発行する（Ａ３）。デバイスはホストからのＣＯＭＷＡＫＥを検出すると伝送路を最適化してＣＯＭＷＡＫＥを発行する（Ａ４）。
【００７１】
その後、デバイスはＡＬＩＧＮを連続送信する（Ａ５）。この際にホストとのスピード・ネゴシエーションを行う。またホストはデバイスからのＣＯＭＷＡＫＥを検出すると、Ｄ１０．２のキャラクタを送信する（Ａ６）。そしてデバイスからのＡＬＩＧＮによって受信用ＰＬＬ（Phase-Locked Loop）をロックする。ロックが完了すると、同じ転送レートでＡＬＩＧＮをデバイスに送信する（Ａ７）。
【００７２】
デバイスは、ホストからのＡＬＩＧＮにより受信用ＰＬＬをロックし、ＳＹＮＣプリミティブを送信する。ホストはデバイスからのＳＹＮＣプリミティブを検出すると、ＳＹＮＣを送信する。これによりログインが完了し、通信が確立する。
【００７３】
６．デバイス非存在通知
次に本実施形態のデバイス非存在通知手法について具体的に説明する。ＳＡＴＡでは、ハードリセット後のＯＯＢシーケンス時に、図９（Ｂ）のＡ１に示すようにホストはＣＯＭＲＥＳＥＴを発行する。そしてホストは、デバイス存在検知期間である１０ｍｓ以内にＡ２に示すようにデバイスからのＣＯＭＩＮＩＴを検知した場合には、ＳＡＴＡバス上にデバイスが存在すると判断し、１０ｍｓ以内にＣＯＭＩＮＩＴを検知しなかった場合には、ＳＡＴＡバス上にデバイスが非存在であると判断する。
【００７４】
一方、ＰＡＴＡには、ＳＡＴＡのようなデバイス存在検知期間の概念は無く、デバイスが存在しない場合には、ハードリセット後に直ちにホストに対してデバイスの非存在が知らされる。
【００７５】
従って、ＰＡＴＡとＳＡＴＡのブリッジ機能を有するデータ転送制御装置において、このようなＳＡＴＡのデバイス存在検知期間について何ら考慮しないと、ホストが、存在するはずのデバイスを非存在であると誤判定してしまう問題が生じる。
【００７６】
本実施形態ではこのような問題を防止するために以下のようなデバイス非存在通知手法を採用している。
【００７７】
例えば図１０（Ａ）に示すように、データ転送制御装置のハードリセット端子がアサートされて、ハードリセットが行われると、シーケンスコントローラ３０はタスクファイル・レジスタＴＦＲ１２のステータスレジスタ（図７のＳｔａｔｕｓ）のＢＵＳＹビットを１にセットし（８０ｈに設定し）、デバイス側がビジー状態であることをホスト２に知らせる。
【００７８】
次に図１０（Ｂ）に示すようにシーケンスコントローラ３０は、例えばタイマを起動して、デバイス存在検知期間ＴＡ（１０ｍｓ）の経過をウェイトする。即ち図９（Ｂ）のＡ１に示すように、ＳＡＴＡＩ／Ｆ５０によるＣＯＭＲＥＳＥＴの発行に対して、Ａ２に示すように、デバイス存在検知期間ＴＡ内にデバイス４からのＣＯＭＩＮＩＴがＳＡＴＡＩ／Ｆ５０において検出されるのをウェイトする。
【００７９】
そして図１０（Ｃ）に示すようにシーケンスコントローラ３０は、デバイス存在検知期間ＴＡが経過した後に、ＳＡＴＡのデバイス４がＳＡＴＡバス上に非存在（非接続）であることが検知されると、ＴＦＲ１２のステータスレジスタに対してデバイス非存在コード（７Ｆｈ）を設定して、デバイス４が非存在であることをホスト２に知らせる。
【００８０】
具体的にはＳＡＴＡＩ／Ｆ５０（ＯＯＢ検出回路）は、発行したＣＯＭＲＥＳＥＴに対してデバイス４からＣＯＭＩＮＩＴが出力されるのを検出する。そしてデバイス４からのＣＯＭＩＮＩＴが検出されない場合には、デバイス検知信号ＤＥＶＤＥＴをＬレベル（非アクティブ）のままにする。一方、ＣＯＭＩＮＩＴが検出された場合には、デバイス検知信号ＤＥＶＤＥＴをＨレベル（アクティブ）にする。
【００８１】
そして図１０（Ｃ）に示すように、シーケンスコントローラ３０は、デバイス存在検知期間ＴＡが経過するまで、ＳＡＴＡＩ／Ｆ５０から出力されるデバイス検知信号ＤＥＶＤＥＴをモニタする。そして期間ＴＡにおいてデバイス検知信号ＤＥＶＤＥＴがアクティブ（アサート状態）にならずにＬレベルのままであり、ＳＡＴＡバス側にデバイス４が非存在であると判断される場合には、ＴＦＲ１２のステータスレジスタにデバイス非存在コード（７Ｆｈ）を設定する。このようにすれば、ＳＡＴＡＩ／Ｆ５０（ＯＯＢ検出回路）からのデバイス検知信号ＤＥＶＤＥＴを有効活用して、デバイス非存在コードの設定処理を実現できる。
【００８２】
一方、図１１（Ａ）に示すように、期間ＴＡ内にＳＡＴＡＩ／Ｆ５０からのデバイス検知信号ＤＥＶＤＥＴがＨレベル（アクティブ）になった場合には、ＳＡＴＡバス側にデバイス４が存在すると判断して、デバイス非存在コードの設定処理を行わない。そして図１１（Ｂ）に示すように、初期化シーケンス管理部３４が、スレーブ検知や自己診断のための初期化シーケンス処理を実行する。即ち初期化シーケンス管理機能を有しないＳＡＴＡのデバイス４に代わって初期化シーケンス管理を代行する。そして図１１（Ｃ）に示すように、初期化シーケンス処理が完了すると、ＴＦＲ１２のステータスレジスタのＢＵＳＹビットを０にクリアして（５０ｈに設定して）、ビジー状態の解除をホスト２に知らせる。
【００８３】
以上のように本実施形態によれば、ＳＡＴＡ側のデバイス存在検知期間ＴＡが経過するまでは、ホスト２に対してビジー状態であることが知らされる。そして期間ＴＡの経過後にデバイス４が非存在であることが検知された場合に、初めて、デバイス非存在コードがホストに知らさせる。従って、ＰＡＴＡとＳＡＴＡのブリッジ機能をデータ転送制御装置に持たせた場合に、デバイスの非存在検知についての誤動作が発生するのを効果的に防止できる。
【００８４】
また本実施形態では、デバイス存在検知期間ＴＡ内にデバイス４の存在が検知されると、スレーブ検知や自己診断のための初期化シーケンスの代行処理が、デバイス４に代わって実行される。従って、マスタ、スレーブの区別の概念が無いＳＡＴＡデバイス４を、マスタ、スレーブの区別が可能なＰＡＴＡデバイスのように取り扱って、デバイス存在検知後の初期化シーケンスを実現できるようになる。
【００８５】
７．レジスタ値の転送
前述のように本実施形態では、ＰＡＴＡＩ／Ｆ１０に、擬似的なタスクファイル・レジスタであるＴＦＲ１２を設けると共に、ＳＡＴＡＩ／Ｆ５０に、シャドウ・タスクファイル・レジスタＳＦＲ５２を設けている。そしてシーケンスコントローラ３０は、ＴＦＲ１２とＳＦＲ５２との間でレジスタ値の転送処理を行う。
【００８６】
具体的には図１２（Ａ）に示すようにホスト２がＡＴＡコマンドを発行すると、そのコマンドやパラメータがレジスタ値としてＴＦＲ１２からＳＦＲ５２に転送される。するとＳＡＴＡＩ／Ｆ５０は、発行されたＡＴＡコマンドを含むレジスタＦＩＳ（図８（Ａ）参照）をデバイス４に送信する。そして例えば発行されたＡＴＡコマンドがＰＩＯリードである場合には、デバイス４がＰＩＯセットアップＦＩＳとそれに続くデータＦＩＳを送信し、ＳＡＴＡＩ／Ｆ５０が受信する。すると、そのステータスなどのパラメータがレジスタ値としてＳＦＲ５２からＴＦＲ１２に転送される。
【００８７】
またＡＴＡコマンドがＰＩＯライトである場合には、ＳＡＴＡＩ／Ｆ５０はＰＩＯセットアップＦＩＳをデバイス４から受信し、データＦＩＳをデバイス４に送信する。またＡＴＡコマンドがＤＭＡリードである場合には、ＳＡＴＡＩ／Ｆ５０はデバイス４からデータＦＩＳを受信する。一方、ＤＭＡライトである場合には、デバイス４からＤＭＡアクティベートＦＩＳを受信して、デバイス４にデータＦＩＳを送信する。
【００８８】
このとき、本実施形態では、シーケンスコントローラ３０は、デバイス４に対して送信したレジスタＦＩＳに対応するＦＩＳをＳＡＴＡＩ／Ｆ５０がデバイス４から受信した場合に、ホスト２から発行されたＡＴＡコマンドの転送シーケンス制御として、受信したＦＩＳの種類に応じた転送シーケンス制御を行う。即ちホスト２から発行されたＡＴＡコマンドをデコードせずに、そのコマンドやパラメータをそのままデバイス４側に転送する。このために、ＴＦＲ１２のレジスタ値をＳＦＲ５２にそのまま転送する。そしてシーケンスコントローラ３０は、デバイス４から受信したＦＩＳに基づいて、その後の転送シーケンスを制御する。例えばデバイス４から受信したＦＩＳがＰＩＯセットアップＦＩＳであり、ＰＩＯセットアップＦＩＳにより指定される転送方向がリード方向である場合には、ＰＩＯリードの転送シーケンス制御を行う。またＰＩＯセットアップＦＩＳにより指定される転送方向がライト方向である場合には、ＰＩＯライトの転送シーケンス制御を行う。またデバイス４から受信したＦＩＳがデータＦＩＳである場合には、ＤＭＡリードの転送シーケンス制御を行い、デバイス４から受信したＦＩＳがＤＭＡアクティベートＦＩＳである場合には、ＤＭＡライトの転送シーケンス制御を行う。
【００８９】
このようにすれば、データ転送制御装置は、ホスト２が発行したＡＴＡコマンドの詳細な内容をデコードすることなく、そのままデバイス４に送信できるため、ＡＴＡコマンドのデコーダ回路を節約でき、データ転送制御装置の小規模化を図れる。また、新規コマンドの追加が発生しても、これに容易に対応できるようになる。
【００９０】
このような手法を実現するために図１２（Ａ）では、ホスト２がＡＴＡコマンドを発行した場合に、ＴＦＲ１２のレジスタ値をＳＦＲ５２にそのまま転送している。
【００９１】
しかしながら、シーケンスコントローラ３０が図１０（Ｃ）のようにＴＦＲ１２のステータスレジスタにデバイス非存在コード（７Ｆｈ）を設定した後に、ホスト２によるＴＦＲ１２に対する何らかの書き込みにより、ＴＦＲ１２からＳＦＲ５２にレジスタ値が転送されてしまうと、ＳＡＴＡ側にはデバイス４が存在していないため、予期しない誤動作が生じるおそれがある。
【００９２】
そこで図１２（Ｂ）では、ＴＦＲ１２のステータスレジスタにデバイス非存在コード（７Ｆｈ）が設定された場合には、ホスト２によりＡＴＡコマンドが発行された場合にも、ＴＦＲ１２からＳＦＲ５２へのレジスタ値の転送処理を行わず、非実行にしている。
【００９３】
例えばＰＡＴＡＩ／Ｆ１０は、図１２（Ａ）のようにホスト２が発行したＡＴＡコマンドがＴＦＲ１２に書き込まれた場合に、コマンドライト検出信号をアクティブにする。そしてシーケンスコントローラ３０は、コマンドライト検出信号がアクティブになった場合に、ＴＦＲ１２からＳＦＲ５２へのレジスタ値の転送を行う。
【００９４】
そして本実施形態では、図１２（Ｂ）に示すように、ＴＦＲ１２にデバイス非存在コード（７Ｆｈ）が設定されている場合には、コマンドライト検出信号がアクティブになっても、ＴＦＲ１２からＳＦＲ５２へのレジスタ値の転送を行わないようにする。
【００９５】
このようにすれば、ＴＦＲ１２にデバイス非存在コード（７Ｆｈ）が設定された後に予期せぬ誤動作が発生する事態を防止できる。
【００９６】
８．動作
次に本実施形態の詳細な動作について図１３のフローチャートを用いて説明する。
【００９７】
シーケンスコントローラ３０は、ハードリセット（ＸＨＲＳＥＴ）を検知すると（ステップＳ１）、図１０（Ａ）で説明したようにＴＦＲ１２のステータスレジスタのＢＵＳＹビットを１（８０ｈ）にセットし（ステップＳ２）、ホスト２に対してビジー状態であることを知らせる。そして図１０（Ｂ）で説明したように、デバイス存在検知期間ＴＡ（１０ｍｓ）のタイマのカウントを開始し（ステップＳ３）、期間ＴＡが経過するのをウェイトする。このとき、図９（Ｂ）のＡ１に示すようにＳＡＴＡＩ／Ｆ５０がＳＡＴＡデバイス４に対してＣＯＭＲＥＳＥＴを発行する（ステップＳ４）。
【００９８】
次に、シーケンスコントローラ３０は、タイマでのカウント結果に基づいてデバイス存在検知期間ＴＡが経過したか否かを判断する（ステップＳ５）。そして経過していない場合には、図９（Ｂ）のＡ２で説明してＳＡＴＡデバイス４からのＣＯＭＩＮＩＴが検知されたか否かを判断する（ステップ６）。具体的には、ＳＡＴＡＩ／Ｆ５０からのデバイス検知信号ＤＥＶＤＥＴがＨレベルになったか否かを判断する。そしてＣＯＭＩＮＩＴが検知されていない場合にはステップＳ５に戻る。
【００９９】
期間ＴＡ内にＣＯＭＩＮＩＴが検知されて、ＳＡＴＡデバイス４０が存在することが検知されると、図１１（Ｂ）で説明したようにＸＤＡＳＰ／ＸＰＤＩＡＧの初期化シーケンス処理を実行する（ステップＳ７）。そして初期化シーケンス処理が完了すると、図１１（Ｃ）で説明したようにＴＦＲ１２のステータスレジスタのＢＵＳＹビットを０にクリア（５０ｈ）する（ステップＳ８）。そしてＡＴＡコマンドの待ち受け状態に移行する（ステップＳ９）。
【０１００】
一方、ステップＳ５において、ＳＡＴＡデバイス４からのＣＯＭＩＮＩＴが検知されないまま期間ＴＡが経過した場合には、図１０（Ｃ）で説明したようにＴＦＲ１２のステータスレジスタにデバイス非存在コード（７Ｆｈ）をセットし（ステップＳ１０）、ＳＡＴＡデバイス４が非存在（非接続）であることをホスト２に知らせる。そしてＡＴＡコマンドの非実行状態に移行する（ステップＳ１１）。
【０１０１】
９．初期化シーケンス
次に、ハードリセット後の初期化シーケンスについて具体的に説明する。
【０１０２】
９．１  ＣＳＥＬ端子
ＰＡＴＡデバイスのシステムでは、ＰＡＴＡバスに対して最大で２台のデバイスを接続でき、これらの２台のデバイスのうちの一方がマスタになり、他方がスレーブになる。そして各デバイスは、自身がマスタなのかスレーブなのかを、ジャンパピンの設定又はケーブルセレクトの設定により判断する。またＰＡＴＡバスに対して２台のデバイスを接続した場合にも、同じアドレスが２台のデバイスで共有して使用される。従って、ＡＴＡレジスタ（タスクファイル・レジスタ）に対してホストから書き込み動作があった場合には、マスタ及びスレーブの両方のデバイスが、ＰＡＴＡのデータＤＤ［１５：０］（図２参照）のバスからそのデータを受け取り、各デバイスは、ＤＥＶビット等に基づいて、そのデータが自身に宛てたデータなのか否かを判断する。またＡＴＡレジスタに対するホストからの読み出し動作があった場合には、マスタ、スレーブの各デバイスは、その時点でのＤＥＶビットの状態と自身のデバイス番号を比較し、一致した場合にのみ、アクセスされたＡＴＡレジスタの内容をデータＤＤ［１５：０］のバスに出力する。
【０１０３】
このようにＰＡＴＡデバイスにおいては、マスタ、スレーブの区別の概念があり、例えばＡＴＡのマスタ側にＨＤＤ等のデバイスを接続し、スレーブ側にＣＤ、ＤＶＤ等の光ディスクドライブのデバイスを接続するなどのシステム構成が可能になる。
【０１０４】
ところが、ＳＡＴＡデバイスにはマスタ、スレーブの区別の概念が無く、ＳＡＴＡデバイスはマスタとして取り扱われる。従って、データ転送制御装置にＰＡＴＡとＳＡＴＡのブリッジ機能を持たせた場合に、何ら工夫をしないと、例えばＳＡＴＡデバイスをマスタとしてのみ取り扱うことができるマスタ専用のデータ転送制御装置になってしまう。従って、例えば光ディスクドライブなどのＳＡＴＡデバイスを、スレーブとして、本実施形態のデータ転送制御装置を介してＰＡＴＡバスにブリッジ接続するようなシステム構成等を実現できないという問題がある。
【０１０５】
そこで本実施形態では、マスタ・スレーブの設定端子（決定端子）であるＣＳＥＬ端子をデータ転送制御装置に設けている。そしてデータ転送制御装置は、このＣＳＥＬ端子の状態（電圧設定状態）により、自身がマスタ側なのかスレーブ側なのかを判断するようにしている。
【０１０６】
例えば図１４（Ａ）では、ＣＳＥＬ端子がＬレベル（ＧＮＤレベル）に設定されており、この場合には本実施形態のデータ転送制御装置３は、自身がマスタ側に設定されたと判断する。そしてデータ転送制御装置３とそれに接続されるＳＡＴＡデバイス４により、ＰＡＴＡのマスタ側が構成される。これにより、本実施形態のデータ転送制御装置３を含むＰＡＴＡのマスタ側と、ＰＡＴＡのスレーブ側とが、ＰＡＴＡバスに接続されるシステム構成を実現できる。
【０１０７】
一方、図１４（Ｂ）では、ＣＳＥＬ端子がＨレベル（ＶＤＤレベル）に設定されており、この場合には本実施形態のデータ転送制御装置３は、自身がスレーブ側に設定されたと判断する。そしてデータ転送制御装置３とそれに接続されるＳＡＴＡデバイス４により、ＰＡＴＡのスレーブ側が構成される。これにより、ＰＡＴＡのマスタ側と、本実施形態のデータ転送制御装置３を含むＰＡＴＡのスレーブ側とが、ＰＡＴＡバスに接続されるシステム構成を実現できる。
【０１０８】
以上のように本実施形態では、ＰＡＴＡとＳＡＴＡのブリッジ機能を有するデータ転送制御装置３に対して、マスタ・スレーブの設定端子であるＣＳＥＬ端子を設けているため、例えば本来はマスタ、スレーブの区別の概念が無く、マスタとしてのみ取り扱われるＳＡＴＡデバイス４を、データ転送制御装置３を介してＰＡＴＡバスにブリッジ接続して、ＰＡＴＡのスレーブ側を構成することが可能になる。この結果、例えばＳＡＴＡインターフェースを有する光ディスクドライブなどを、スレーブとして、ＰＡＴＡバスにブリッジ接続するシステム構成等を実現でき、利便性を大幅に向上できる。
【０１０９】
９．２  初期化シーケンス管理の代行
前述のように、ＳＡＴＡデバイスにはマスタ、スレーブの区別の概念が無く、ＳＡＴＡデバイスはマスタとしてのみ取り扱われる。従って、ＳＡＴＡデバイスは、マスタ、スレーブを区別するための初期化シーケンス管理機能を有しない。従って、このようなＳＡＴＡデバイスを、ＰＡＴＡとＳＡＴＡのブリッジ機能を有するデータ転送制御装置を介してＰＡＴＡバスにブリッジ接続した場合に、初期化シーケンスの処理を行う処理主体が存在しなくなってしまうという問題がある。
【０１１０】
そこで本実施形態では、図１の初期化シーケンス管理部３４が、ＰＡＴＡにおける初期化シーケンス管理機能を有しないＳＡＴＡデバイス４に代わって初期化シーケンス管理を代行する。そして図１１（Ｂ）に示すように初期化シーケンス管理部３４は、デバイス存在検知期間ＴＡ内にＳＡＴＡデバイス４の存在が検知された場合に、初期化シーケンス処理を実行する。
【０１１１】
具体的には初期化シーケンス管理部３４は、図１４（Ａ）のようにＣＳＥＬ端子（マスタ・スレーブ設定端子）によりデータ転送制御装置３がマスタ側に設定された場合には、ハードリセット後にスレーブ検知処理と自己診断処理を行う。一方、図１４（Ｂ）のようにＣＳＥＬ端子によりデータ転送制御装置３がスレーブ側に設定された場合には、ハードリセット後にスレーブ検知信号の制御と自己診断信号の制御を行う。
【０１１２】
このようにすれば、ＳＡＴＡデバイス４が初期化シーケンス管理機能を有しない場合にも、データ転送制御装置３が、この初期化シーケンス管理を代行して、スレーブ検知等のＰＡＴＡにおける初期化シーケンス処理を実行できる。従って、マスタとしてのみ取り扱われるＳＡＴＡデバイス４を、例えばデータ転送制御装置３を介してＰＡＴＡバスにブリッジ接続して、ＰＡＴＡのスレーブ側を構成した場合に、ＰＡＴＡ規格に準拠した適正な初期化シーケンス処理を実行できるようになる。
【０１１３】
次に初期化シーケンス処理の詳細について図１５、図１６を用いて説明する。図１５はホスト側の動作を説明するためのフローチャートであり、図１６はデバイス側の動作を説明するためのフローチャートである。
【０１１４】
図１５に示すようにホスト側は、ハードリセット信号をアクティブ（アサート状態）にした後、非アクティブ（ネゲート状態）にする（ステップＳ２１、Ｓ２２）。そしてステータスレジスタのＢＵＳＹビットが１から０にクリアされるのをウェイトし、０にクリアされるとホストアイドル状態に移行する（ステップＳ２３、Ｓ２４）。
【０１１５】
一方、図１６に示すようにデバイス側は、ハードリセットが行われると、リリースバスステートに移行し、ＣＳＥＬ（ＣＳＥＬ端子、ＣＳＥＬ信号）がＬレベルか否かを判断する（ステップＳ３１、Ｓ３２、Ｓ３３）。即ち自身がマスタ側に設定されているか、スレーブ側に設定されているかを判断する。
【０１１６】
そしてＣＳＥＬがＬレベルに設定され、自身がマスタ側に設定されていると判断した場合には、ＸＤＡＳＰウェイトステートに移行した後、サンプルＸＤＡＳＰステートに移行する（ステップＳ３４、Ｓ３５）。このサンプルＸＤＡＳＰステートでは、自身の初期化及び自己診断処理を行うと共に、スレーブ側からのスレーブ検知信号ＸＤＡＳＰをサンプルしてモニタする。
【０１１７】
そして信号ＸＤＡＳＰがＬレベル（アクティブ）であると判断した場合には、スレーブの存在が検知されたと判断して、サンプルＸＰＤＩＡＧステートに移行する（ステップＳ３６、Ｓ３７）。このサンプルＸＰＤＩＡＧステートでは、スレーブ側からの自己診断信号ＸＰＤＩＡＧ（スレーブの自己診断結果の通知信号）をサンプルしてモニタする。
【０１１８】
そして信号ＸＰＤＩＡＧがＬレベル（アクティブ）であると判断した場合には、スレーブ側の自己診断がパスしたと判断し、タスクファイル・レジスタのエラーレジスタのビット７を０に設定する（ステップＳ３８、Ｓ３９）。一方、信号ＸＰＤＩＡＧがＨレベル（非アクティブ）であると判断した場合には、スレーブ側の自己診断がフェイルしたと判断し、エラーレジスタのビット７を１に設定する（ステップＳ４０）。なおステップＳ３６で、信号ＸＤＡＳＰがＨレベルであると判断された場合には、スレーブが非存在であると判断すると共に、エラーレジスタのビット７を０に設定する（ステップＳ４１）。そしてセットステータスステートに移行し（ステップＳ４２）、自己診断処理を完了すると共に、タスクファイル・レジスタのステータスレジスタのＢＵＳＹビットを０にクリアする。そしてデバイスアイドル状態に移行する（ステップＳ４３）。
【０１１９】
一方、ステップＳ３３でＣＳＥＬがＨレベルに設定され、自身がスレーブ側に設定されていると判断した場合には、セットＸＤＡＳＰステートに移行する（ステップＳ４４）。このセットＸＤＡＳＰステートでは、スレーブ検知信号ＸＤＡＳＰをＬレベル（アクティブ）にすると共に、自身の初期化及び自己診断処理を行う。このようにスレーブ側がスレーブ検知信号ＸＤＡＳＰをＬレベルにすることで、ステップＳ３６に示すようにマスタ側はスレーブの存在を検知できる。
【０１２０】
次に、セットステータスステートに移行する（ステップＳ４５）。そして自己診断信号ＸＰＤＩＡＧをＬレベル（アクティブ）又はＨレベル（非アクティブ）にすると共に、タスクファイル・レジスタのステータスレジスタのＢＵＳＹビットを０にクリアし、デバイスアイドル状態に移行する（ステップＳ４６）。このようにスレーブ側が信号ＸＰＤＩＡＧをＬレベルにすることで、ステップＳ３９に示すようにマスタ側はスレーブ側の自己診断がパスしたと判断できる。またスレーブ側が信号ＸＰＤＩＡＧをＨレベルにすることで、ステップＳ４０に示すようにマスタ側はスレーブ側の自己診断がフェイルしたと判断できる。
【０１２１】
そして本実施形態では、初期化シーケンス管理部３４は、ＣＳＥＬ端子がＬレベルに設定され、自身がマスタ側に設定されたと判断した場合には、図１６のステップＳ３４〜Ｓ４３に示すように、スレーブ検知処理と自己診断処理を行う。即ち、信号ＸＤＡＳＰに基づいてスレーブが検知されたか否かを判断すると共に、マスタ側の自己診断処理や信号ＸＰＤＩＡＧに基づくスレーブ側の自己診断結果の確認処理を行う。
【０１２２】
また初期化シーケンス管理部３４は、ＣＳＥＬ端子がＨレベルに設定され、自身がスレーブ側に設定されたと判断した場合には、図１６のステップＳ４４〜Ｓ４６に示すように、スレーブ検知信号ＸＤＡＳＰ、自己診断信号ＸＰＤＩＡＧの制御を行う。即ち、スレーブ検知信号ＸＤＡＳＰをＬレベルにして、スレーブの存在をマスタ側に通知する。また自己診断信号ＸＰＤＩＡＧをＬレベルにしたり、Ｈレベルにして、スレーブ側の自己診断結果をホスト側に通知する。
【０１２３】
以上のような初期化シーケンス処理を初期化シーケンス管理部３４に代行させることで、マスタとしてのみ取り扱われるＳＡＴＡデバイスに、マスタ、スレーブの区別の概念を導入できると共に、ＰＡＴＡの規格にしたがった適正な初期化シーケンス処理を実現できる。
【０１２４】
９．３  ＤＥＶビットの設定
前述したようにＰＡＴＡでは、データＤＤ［１５：０］やアドレスＤＡ［２：０］のバスは、マスタとスレーブで共用される。従って、マスタ及びスレーブの両方が、データＤＤ［１５：０］のバスからのコマンド、パラメータをタスクファイル・レジスタを介して受け取ることになる。そして、マスタへ宛てたものであるか、スレーブへ宛てたものであるかは、デバイス／ヘッドレジスタのＤＥＶビットにより判断する。具体的にはＤＥＶビットが０である場合にはマスタに宛てたものであると判断し、ＤＥＶビットが１である場合にはスレーブに宛てたものであると判断する。
【０１２５】
一方、ＳＡＴＡデバイスは、常にマスタとして取り扱われる。従ってＳＡＴＡデバイスは、ＤＥＶビットが０に設定されたコマンド、パラメータだけを、自身に宛てたものとして受け取ることになる。
【０１２６】
ところが、図１４（Ｂ）に示すように、ＣＳＥＬ端子をＨレベルにしてスレーブ設定にした場合には、ホスト２はＳＡＴＡデバイス４をスレーブと見なしている。従って、ＳＡＴＡデバイス４に対してコマンドやパラメータを送る場合には、ＤＥＶビットをスレーブ設定である１に設定する。従って、自身がマスタであると認識しているＳＡＴＡデバイス４は、これらのコマンドやパラメータを受け取れなくなってしまう。そこで本実施形態では、以下のようなＤＥＶビット設定手法を採用している。
【０１２７】
例えば図１７（Ａ）では、ＣＳＥＬ端子（ＣＳＥＬ信号）がＬレベルに設定され、データ転送制御装置がマスタ側に設定されている。そしてホスト２がマスタへのＡＴＡコマンドを発行している。この場合には、シーケンスコントローラ３０は、ＴＦＲ１２のレジスタ値（コマンド、パラメータ）をそのままＳＦＲ５２に転送する。するとＳＡＴＡＩ／Ｆ５０は、ＳＦＲ５２のレジスタ値に基づいて、レジスタＦＩＳ（Host to Device）等を生成して、ＳＡＴＡデバイス４に送信する。
【０１２８】
このとき、ＴＦＲ１２のデバイス／ヘッドレジスタのＤＥＶビット＝０（マスタ設定）も、ＴＦＲ１２からＳＦＲ５２にそのまま転送されて、ＳＡＴＡデバイス４に送信される。そしてＳＡＴＡデバイス４は、自身をマスタとして認識しているため、ホスト２からのコマンドやパラメータを、問題なく受け取ることができる。
【０１２９】
また図１７（Ｂ）では、データ転送制御装置がマスタ側に設定されているときに、ホスト２からのＡＴＡコマンドに対応するＦＩＳ（例えばレジスタＦＩＳ、ＰＩＯセットアップＦＩＳ、ＤＭＡアクティベートＦＩＳ等）を、ＳＡＴＡＩ／Ｆ５０がＳＡＴＡデバイス４から受信している。この場合には、シーケンスコントローラ３０は、ＳＦＲ５２のレジスタ値をＴＦＲ１２にそのまま転送する。そしてホスト２は、ＳＡＴＡデバイス４からのステータス等を受け取る。
【０１３０】
このとき、ＳＦＲ５２のデバイス／ヘッドレジスタのＤＥＶビット＝０（マスタ設定）も、ＳＦＲ５２からＴＦＲ１２にそのまま転送される。従って、ＰＡＴＡＩ／Ｆ１０は、マスタ側であるＳＡＴＡデバイス４からのステータス等を、ＰＡＴＡのＤＤ[１５：０]のバスに適正に出力できるようになる。
【０１３１】
一方、図１８（Ａ）では、ＣＳＥＬ端子がＨレベルに設定され、データ転送制御装置がスレーブ側に設定されている。そしてホスト２がスレーブへのＡＴＡコマンドを発行している。この場合には、シーケンスコントローラ３０は、デバイス／ヘッドレジスタのＤＥＶビットを１（スレーブ設定）から０（マスタ設定）に書き換えて、ＴＦＲ１２のレジスタ値をＳＦＲ５２に転送する。するとＳＡＴＡＩ／Ｆ５０は、ＳＦＲ５２のレジスタ値に基づいて、レジスタＦＩＳ（H to D）等を生成して、ＳＡＴＡデバイス４に送信する。
【０１３２】
このとき、ＳＡＴＡデバイス４は、自身をマスタとして認識しているが、本実施形態ではＤＥＶビットを１（スレーブ設定）から０（マスタ設定）に書き換えているため、ホスト２からのコマンドやパラメータを問題なく受け取ることができる。
【０１３３】
また図１８（Ｂ）では、データ転送制御装置がスレーブ側に設定されているときに、ホスト２からのＡＴＡコマンドに対応するＦＩＳを、ＳＡＴＡＩ／Ｆ５０がＳＡＴＡデバイス４から受信している。この場合には、シーケンスコントローラ３０は、ＳＦＲ５２のデバイス／ヘッドレジスタのＤＥＶビットを０（マスタ設定）から１（スレーブ設定）に書き換えて、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送する。そしてホスト２は、ＳＡＴＡデバイス４からのステータス等を受け取る。
【０１３４】
このとき、ホスト２は、ＳＡＴＡデバイス４をスレーブとして認識しているが、本実施形態ではＤＥＶビットを０（マスタ設定）から１（スレーブ設定）に書き換えているため、ＳＡＴＡデバイス４からのステータス等を問題なく受け取ることができる。
【０１３５】
以上のように本実施形態では、ＣＳＥＬ端子の状態に応じた適正な値に、デバイス／ヘッドレジスタのＤＥＶビットを書き換えている。従って、ＣＳＥＬ端子によりデータ転送制御装置をスレーブ側に設定した場合にも、ホスト２と、自身をマスタと認識しているＳＡＴＡデバイス４との間で、コマンド、パラメータやステータスの適正な転送処理を実現できる。
【０１３６】
次に本実施形態のＤＥＶビットの設定手法について図１９、図２０のフローチャートを用いて更に詳細に説明する。
【０１３７】
図１９では、ホスト２がマスタへのＡＴＡコマンドを発行している（ステップＳ５１）。そしてＣＳＥＬ端子がＬレベルか否かを判断し（ステップＳ５２）、Ｌレベルである場合には、図１７（Ａ）で説明したようにＴＦＲ１２のレジスタ値をそのままＳＦＲ５２に転送する（ステップＳ５３）。そしてＳＡＴＡデバイス４へのコマンドの転送及び実行が行われる（ステップＳ５４）。
【０１３８】
次に、ＳＡＴＡデバイス４からステータス返送のためのＦＩＳ（レジスタＦＩＳ等）を受信すると（ステップＳ５５）、図１７（Ｂ）で説明したようにＳＦＲ５２のレジスタ値をそのままＴＦＲ１２に転送する（ステップＳ５６）。
【０１３９】
一方、ステップＳ５２でＣＳＥＬ端子がＨレベルであると判断された場合には、ホスト２により発行されたＡＴＡコマンドは非実行になる（ステップＳ５７）。即ち、ホスト２が発行したＡＴＡコマンドはマスタへ宛てたものであり、ＣＳＥＬ端子はスレーブ側に設定されているため、スレーブ側であるデータ転送制御装置は、このＡＴＡコマンドの実行処理を行わない。
【０１４０】
図２０では、ホスト２がスレーブへのＡＴＡコマンドを発行している（ステップＳ６１）。そしてＣＳＥＬ端子がＬレベルか否かを判断し（ステップＳ６２）、ＬレベルではなくＨレベルである場合には、図１８（Ａ）で説明したようにＴＦＲ１２のデバイス／ヘッドレジスタのＤＥＶビットを０（マスタ設定）に書き換えて、ＴＦＲ１２のレジスタ値をＳＦＲ５２に転送する（ステップＳ６３）。そしてＳＡＴＡデバイス４へのコマンドの転送及び実行が行われる（ステップＳ６４）。
【０１４１】
次に、ＳＡＴＡデバイス４からステータス返送のためのＦＩＳ（レジスタＦＩＳ等）を受信すると（ステップＳ６５）、図１８（Ｂ）で説明したようにＳＦＲ５２のデバイス／ヘッドレジスタのＤＥＶビットを１（スレーブ設定）に書き換えて、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送する（ステップＳ６６）。
【０１４２】
一方、ステップＳ６２でＣＳＥＬ端子がＬレベルであると判断された場合には、ホスト２により発行されたＡＴＡコマンドは非実行になる（ステップＳ６７）。即ち、ホスト２が発行したＡＴＡコマンドはスレーブへ宛てたものであり、ＣＳＥＬ端子はマスタ側に設定されているため、マスタ側であるデータ転送制御装置は、このＡＴＡコマンドの実行処理を行わない。
【０１４３】
１０．ＳＡＴＡＩ／Ｆの構成
図２１にＳＡＴＡＩ／Ｆ５０の構成例を示す。なおＳＡＴＡＩ／Ｆ５０の構成は図２１に限定されず、その構成要素の一部を削除したり、他の構成要素を追加するなどの種々の変形実施が可能である。例えば物理層回路２００を設けない構成としてもよい。
【０１４４】
ＳＡＴＡでは、データは３２ビット（４バイト）単位で処理される。この３２ビットのデータが、リンクコントローラ１５０により８ｂ／１０ｂでエンコードされて４０ビットのデータになり、物理層回路２００に送られる。物理層回路２００は、この４０ビットのデータをシリアル化してＳＡＴＡのケーブルに送信する。受信も逆の手順で、シリアルデータが物理層回路２００で４０ビットのデータに変換され、リンクコントローラ１５０で３２ビットのデータに変換され、トランスポートコントローラ１１０に送られる。
【０１４５】
トランスポートコントローラ１１０はトランスポート層の制御を行うものである。具体的にはトランスポートコントローラ１１０は、上位層（アプリケーション層）からＦＩＳの送信要求が来た時に、以下の処理を行う。
【０１４６】
まずトランスポートコントローラ１１０は、ＦＩＳタイプの要件に基づいてＦＩＳの内容を収集する。また送信する情報をＦＩＳのタイプ毎に定義フォーマットに配置する。次にリンクコントローラ１５０に対して送信要求を通知する。これによりリンクコントローラ１５０はＸ＿ＲＤＹの送信処理を行う。そして相手ノードからのＲ＿ＲＤＹを受信し、リンクコントローラ１５０から受信のアクノリッジが来ると、トランスポートコントローラ１１０はＦＩＳをリンクコントローラ１５０に転送する。そして送信ＦＩＦＯ１２０のフロー管理を行い、必要なフロー制御をリンクコントローラ１５０に通知する。その後、リンクコントローラ１５０から送信結果を受信すると、必要に応じて上位層に送信結果を通知する。
【０１４７】
トランスポートコントローラ１１０は、リンクコントローラ１５０からＦＩＳを受信した時には、以下の処理を行う。
【０１４８】
トランスポートコントローラ１１０は、リンクコントローラ１５０からＦＩＳを受信すると、受信したＦＩＳのタイプを判別する。そしてＦＩＳのタイプに応じた適切なレジスタやＦＩＦＯにデータを転送する。そして受信ＦＩＦＯ１２２のフロー管理を行い、必要なフロー制御をリンクコントローラ１５０に通知する。その後、リンクコントローラ１５０及び上位層（アプリケーション層）に受信結果を通知する。
【０１４９】
リンクコントローラ１５０はリンク層の制御を行うものである。具体的にはリンクコントローラ１５０は、送信時には以下の処理を行う。
【０１５０】
まずリンクコントローラ１５０はトランスポートコントローラ１１０からのデータ（ＦＩＳ）を受け取る。そしてＦＩＳのＣＲＣを生成し、ＦＩＳの最後尾に付加する。次にデータのスクランブルを行い、その後、８ｂ／１０ｂのエンコードを行う。そしてＳＡＴＡ通信のプロトコルにしたがったプリミティブ、ＦＩＳの送信を行う。そして送信結果をトランスポートコントローラ１１０に通知する。
【０１５１】
リンクコントローラ１５０は受信時には以下の処理を行う。即ちリンクコントローラ１５０は物理層回路２００から、８ｂ／１０ｂエンコードキャラクタを受信する。そして８ｂ／１０ｂエンコードキャラクタをデコードし、デコードしたプリミティブを処理部等に通知する。次にデコードしたＦＩＳのデスクランブル処理を行い、ＣＲＣをチェックする。そしてトランスポートコントローラ１１０にデータを渡す。またデコード結果やＣＲＣのチェック結果をトランスポートコントローラ１１０に通知する。
【０１５２】
物理層回路２００は物理層を実現するアナログフロントエンド回路である。この物理層回路２００は、シリアルデータ（シリアルストリーム）の送受信や、シリアルデータからパラレルデータへの変換や、パラレルデータからシリアルデータへの変換を行う。また８ｂ／１０ｂのＫ２８．５キャラクタの検出や、ＯＯＢ(Out Of Band）信号の検出と送信を行う。またデバイスステータス（デバイスの有無、転送状態、パワー状態）の提供や、通信制御用のインターフェース（転送レート制御、ループバック）の提供を行う。またオプションでパワーマネージメントも行う。
【０１５３】
物理層回路（ＰＨＹ）２００はトランスミッタ（ドライバ）２１０、レシーバ２２０、ＯＯＢ検出回路２３０などを含む。
【０１５４】
トランスミッタ２１０は、差動信号線（差動信号線ペア）ＴＸ＋／−を介してシリアルデータ（パケット）の送信を行い、レシーバ２２０は、差動信号線（差動信号線ペア）ＲＸ＋／−を介してシリアルデータ（パケット）の受信を行う。ＴＸ＋／−、ＲＸ＋／−のＳＡＴＡバス（広義にはシリアルバス）では、振幅電圧＋／−２５０ｍＶのＮＲＺ差動信号によるシリアルストリーム転送が行われる。
【０１５５】
ＯＯＢ検出回路２３０はＯＯＢ信号の検出処理を行う。このＯＯＢ信号は、ＳＡＴＡインターフェースのリセット／初期化、通信の確立や、スピード・ネゴシエーションをつかさどる信号である。
【０１５６】
リンクコントローラ１５０は、リンクステート制御回路１６０、フレーム生成回路１９０、フレームデコード回路１９２を含む。
【０１５７】
リンクステート制御回路１６０は、リンクコントローラ１５０のステート制御を行う。例えばリセットステート、アイドルステート、送信ステート、受信ステート等のステート間の遷移処理等を行う。
【０１５８】
フレーム生成回路１９０は、トランスポートコントローラ１１０からの送信データ（ＦＩＳ）や、リンクステート制御回路１６０からの送信制御信号などに基づいてフレームの生成処理を行う。具体的には、トランスポートコントローラ１１０からのＦＩＳのＣＲＣを演算したり、スクランブル処理を行ったり、８ｂ／１０ｂエンコード処理を行ったり、プリミティブを生成して付加する処理などを行う。
【０１５９】
フレームデコード回路１９２は、受信したフレームの解析（分解）処理を行い、受信解析信号（パワーダウンリクエスト信号等）をリンクステート制御回路１６０に出力する。具体的には、ＦＩＳに付加されたプリミティブを解析したり、８ｂ／１０ｂのデコード処理を行ったり、デスクランブル処理を行ったり、ＣＲＣを演算してチェックする処理などを行う。
【０１６０】
トランスポートコントローラ１１０は、割りこみコントローラ１１８、ＤＭＡ制御回路１１９、送信ＦＩＦＯ１２０、受信ＦＩＦＯ１２２、ＦＩＳ生成回路１３０、ＦＩＳデコード回路１３２、トランスポートステート制御回路１４０を含む。
【０１６１】
割り込みコントローラ１１８は、デバイス４からの受信ＦＩＳ情報などを知らせるための割り込み信号を生成する。ＤＭＡ制御回路１１９は、ＦＩＳに含まれる送信データや受信データ（コンテンツ・データ）のＤＭＡ転送を制御する。送信ＦＩＦＯ１２０は、ＤＭＡ制御回路１１９からの送信データのバッファとなるＦＩＦＯである。受信ＦＩＦＯ１２２は、リンクコントローラ１５０からの受信データのバッファとなるＦＩＦＯである。ＦＩＳ生成回路１３０はＦＩＳの生成を行う回路であり、ＦＩＳデコード回路１３２はＦＩＳの解析を行う回路である。トランスポートステート制御回路１４０は、トランスポートコントローラ１１０のステート制御を行う。
【０１６２】
１１．シーケンスコントローラ
図２２にシーケンスコントローラ３０の構成例を示す。シーケンスコントローラ３０はレジスタ更新部３２、初期化シーケンス管理部３４、パラメータ書き換え部３６、ＤＭＡモード設定記憶部３８、転送制御部４０を含む。なおシーケンスコントローラ３０の構成は図２２に限定されず、その構成要素の一部を削除したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【０１６３】
レジスタ更新部３２はＴＦＲ１２（タスクファイル・レジスタ）、ＳＦＲ５２（シャドウ・タスクファイル・レジスタ）のレジスタ値の更新処理を行う。具体的にはＴＦＲ１２のレジスタ値をＳＦＲ５２に転送してＳＦＲ５２のレジスタ値を更新したり、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送してＴＦＲ１２のレジスタ値を更新する。
【０１６４】
例えばＴＦＲ１２にホスト２によりＡＴＡコマンドが書き込まれると、ＰＡＴＡＩ／Ｆ１０はコマンドライト検出信号をアクティブにする。そしてコマンドライト検出信号がアクティブになると、レジスタ更新部３２はＴＦＲ１２のレジスタ値をＳＦＲ５２に転送する処理を行う。
【０１６５】
またＳＡＴＡＩ／Ｆ５０は、デバイス４から受信したＦＩＳをデコードし、デコード結果に基づいて、ＦＩＳの種類を知らせるための割り込み信号（広義には受信ＦＩＳ情報）を生成して出力する。レジスタ更新部３２は、この割り込み信号に基づいて受信ＦＩＳの種類を判別して、ＳＦＲ５２からＴＦＲ１２へのレジスタ値の転送処理などを行って、レジスタ値の更新処理を行う。
【０１６６】
初期化シーケンス管理部３４は、ＨＲＳＴ（ハードリセット）、ＳＲＳＴ（ソフトリセット）に伴う初期化シーケンスを管理する。具体的には、マスター、スレーブなどの設定をモニタして、ＰＡＴＡの初期化シーケンスを管理する。
【０１６７】
パラメータ書き換え部３６は、ホスト２がデバイス４に対してアイデンティファイ・デバイス・コマンドを発行し、デバイス４からデバイス情報のパラメータを受信した場合に、パラメータの書き換え処理を行う。即ち転送速度などのパラメータを自身が対応可能なパラメータに書き換える。
【０１６８】
ＤＭＡモード設定記憶部３８は、ホスト２がセットフューチャー・コマンドを発行した場合に、セットフューチャー・コマンドを解析して、ＤＭＡ転送のモード設定を記憶する。
【０１６９】
転送制御部４０はデータ転送制御装置の転送シーケンスを制御するものであり、モニタ部４２、制御信号生成部４４を含む。モニタ部４２は、ＰＡＴＡＩ／Ｆ１０からのコマンドライト検出信号や、ＳＡＴＡＩ／Ｆ５０からの割り込み信号（受信ＦＩＳ情報）などの信号をモニタする。そして制御信号生成部４４は、モニタ結果に基づいて、転送方向設定信号、転送開始信号、転送停止信号などの制御信号を生成し、ＰＡＴＩ／Ｆ１０、データバッファ７０、ＳＡＴＡＩ／Ｆ５０に出力して、転送シーケンス制御を実行する。なおデータバッファ７０に対しては転送開始信号、転送停止信号は出力せず、転送方向設定信号を出力する。
【０１７０】
１２．電子機器
図２３に本実施形態の電子機器の構成例を示す。この電子機器は、本実施形態で説明したデータ転送制御装置３１０とホスト３０２とデバイス３０４を含む。ホスト３０２とデータ転送制御装置３１０はＰＡＴＡバスを介して接続され、データ転送制御装置３１０とデバイス３０４はＳＡＴＡバスを介して接続される。なお本実施形態の電子機器の構成は図２３に限定されず、その構成要素の一部を省略したり、他の構成要素を付加する変形実施が可能である。
【０１７１】
同図においてデバイス３０４は、ＨＤＤ（ハードディスクドライブ）等のストレージデバイスや、光ディスクドライブ（ＣＤ、ＤＶＤ）等である。
【０１７２】
ホスト３０２は、処理部３３０（ＣＰＵ）、ＲＯＭ３４０、ＲＡＭ３５０、表示部３６０、操作部３７０を含むことができる。処理部３３０（ＣＰＵ）はデータ転送制御装置３１０や電子機器の全体制御を行う。なおデータ転送制御装置３１０を制御する処理部と、電子機器を制御する処理部とを別々に設けてもよい。ＲＯＭ３４０は制御プログラムや各種データを記憶する。ＲＡＭ３５０は処理部３３０やデータ転送制御装置３１０のワーク領域やデータ格納領域として機能する。表示部３６０は種々の情報をユーザに表示する。操作部３７０はユーザが電子機器を操作するためのものである。
【０１７３】
本実施形態の電子機器によれば、ホスト３０２がＳＡＴＡＩ／Ｆを有していない場合にも、データ転送制御装置３１０を介してＳＡＴＡのデバイス３０４をホスト３０２に接続して、あたかもＰＡＴＡのデバイスのように扱うことが可能になる。
【０１７４】
なお、本実施形態を適用できる電子機器としては、カーナビゲーションシステム、車載用オーディオ機器、ＨＤＤレコーダ、ビデオカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、ゲーム装置、又は携帯型ゲーム装置等の種々のものが考えられる。
【０１７５】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またデータ転送制御装置、電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。また本実施形態では、ＳＡＴＡへの本発明の適用例について説明したが、本発明は、ＳＡＴＡと同様の思想に基づく規格や、ＳＡＴＡ（ＳＡＴＡ Ｉ、ＳＡＴＡ II、ＳＡＳ）を発展させた規格等にも適用できる。
【図面の簡単な説明】
【０１７６】
【図１】本実施形態のデータ転送制御装置の構成例。
【図２】本実施形態のデータ転送制御装置の詳細な構成例。
【図３】図３（Ａ）、図３（Ｂ）はＰＩＯリード、ＰＩＯライトの信号波形例。
【図４】図４（Ａ）、図４（Ｂ）はＤＭＡリード、ＤＭＡライトの信号波形例。
【図５】ＳＡＴＡの送信側のデータ処理の説明図。
【図６】ＳＡＴＡの受信側のデータ処理の説明図。
【図７】タスクファイル・レジスタのフォーマット例。
【図８】図８（Ａ）〜図８（Ｄ）はＦＩＳのフォーマット例。
【図９】図９（Ａ）、図９（Ｂ）はＯＯＢシーケンスの説明図。
【図１０】図１０（Ａ）〜図１０（Ｃ）は本実施形態のデバイス非存在通知手法の説明図。
【図１１】図１１（Ａ）〜図１１（Ｃ）は本実施形態のデバイス非存在通知手法の説明図。
【図１２】図１２（Ａ）、図１２（Ｂ）は本実施形態のレジスタ値転送手法の説明図。
【図１３】本実施形態の動作を説明するためのフローチャート。
【図１４】図１４（Ａ）、図１４（Ｂ）はＣＳＥＬ端子の設定手法の説明図。
【図１５】初期化シーケンス処理を説明するためのフローチャート。
【図１６】初期化シーケンス処理を説明するためのフローチャート。
【図１７】図１７（Ａ）、図１７（Ｂ）は本実施形態のＤＥＶビットの設定手法の説明図。
【図１８】図１８（Ａ）、図１８（Ｂ）は本実施形態のＤＥＶビットの設定手法の説明図。
【図１９】本実施形態のＤＥＶビットの設定手法を説明するためのフローチャート。
【図２０】本実施形態のＤＥＶビットの設定手法を説明するためのフローチャート。
【図２１】ＳＡＴＡＩ／Ｆの構成例。
【図２２】シーケンスコントローラの構成例。
【図２３】電子機器の構成例。
【符号の説明】
【０１７７】
２  ホスト、４  デバイス、１０  ＰＡＴＡＩ／Ｆ、
１２  タスクファイル・レジスタ（ＴＦＲ）、１４  転送コントローラ、
３０  シーケンスコントローラ、３２  レジスタ更新部、
３４  初期化シーケンス管理部、３６  パラメータ書き換え部、
３８  ＤＭＡ転送設定記憶部、４０  転送制御部、
４２  モニタ部、４４  制御信号生成部、５０  ＳＡＴＡＩ／Ｆ、
５２  シャドウ・タスクファイル・レジスタ（ＳＦＲ）、７０  データバッファ、
７２  メモリコントローラ、７４  ＦＩＦＯメモリ、
１１０  トランスポートコントローラ、１１８  割りこみコントローラ、
１２０  送信ＦＩＦＯ、１２２  受信ＦＩＦＯ、１３０  ＦＩＳ生成回路、
１３２  ＦＩＳデコード回路、１５０  リンクコントローラ、
１６０  リンクステート制御回路、１９０  フレーム生成回路、
１９２  フレームデコード回路、２００  物理層回路、２１０  トランスミッタ、
２２０  レシーバ、２３０  ＯＯＢ検出回路
【図１】
2009037474.tif 000003
【図２】
2009037474.tif 000004
【図３】
2009037474.tif 000005
【図４】
2009037474.tif 000006
【図５】
2009037474.tif 000007
【図６】
2009037474.tif 000008
【図７】
2009037474.tif 000009
【図８】
2009037474.tif 000010
【図９】
2009037474.tif 000011
【図１０】
2009037474.tif 000012
【図１１】
2009037474.tif 000013
【図１２】
2009037474.tif 000014
【図１３】
2009037474.tif 000015
【図１４】
2009037474.tif 000016
【図１５】
2009037474.tif 000017
【図１６】
2009037474.tif 000018
【図１７】
2009037474.tif 000019
【図１８】
2009037474.tif 000020
【図１９】
2009037474.tif 000021
【図２０】
2009037474.tif 000022
【図２１】
2009037474.tif 000023
【図２２】
2009037474.tif 000024
【図２３】
2009037474.tif 000025