(57)【特許請求の範囲】
【請求項１】
第１のＡＴＡバスを介してＡＴＡホストとの間でデータ転送を行うＡＴＡのデバイス側インターフェースと、
第２のＡＴＡバスを介してＡＴＡデバイスとの間でデータ転送を行うＡＴＡのホスト側インターフェースと、
前記デバイス側インターフェース、前記ホスト側インターフェースの間でのデータ転送を制御する転送コントローラと、
前記第１、第２のＡＴＡバスを介して前記ＡＴＡホスト、前記ＡＴＡデバイスの間でデータ転送を行うためのエミュレーション処理を行う処理部と、
各スイッチング素子が、前記第１のＡＴＡバスの第１〜第Ｎの信号線のうちの対応する信号線と、前記第２のＡＴＡバスの第１〜第Ｎの信号線のうちの対応する信号線との間の接続、非接続を行う第１〜第Ｎのスイッチング素子を有するスイッチング回路とを含み、
前記処理部は、
前記第１のＡＴＡバスを介して前記デバイス側インターフェースが前記ＡＴＡホストからコマンドを受信した場合に、受信したコマンドに対応するコマンドを、前記ホスト側インターフェース、前記第２のＡＴＡバスを介して前記ＡＴＡデバイスに対して発行し、
コマンド発行後に、前記第１のＡＴＡバス、前記デバイス側インターフェース、前記ホスト側インターフェース、前記第２のＡＴＡバスを介したデータ転送を開始し、
データ転送完了後に、前記第２のＡＴＡバスを介して前記ホスト側インターフェースが前記ＡＴＡデバイスからステータスをリードした場合に、リードしたステータスに対応するステータスを、前記デバイス側インターフェース、前記第１のＡＴＡバスを介して前記ＡＴＡホストに対して返信するエミュレーション処理を行うと共に、
ハードワイヤードモードに設定されたと判断した場合に、前記第１〜第Ｎのスイッチング素子をオンにして、前記第１のＡＴＡバスの第１〜第Ｎの信号線と前記第２のＡＴＡバスの第１〜第Ｎの信号線との間を接続することを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記第１のＡＴＡバスを介して前記ＡＴＡホストが発行したコマンドが書き込まれるレジスタを含み、
前記処理部は、
前記レジスタに書き込まれたコマンドに対応するコマンドを、前記ホスト側インターフェース、前記第２のＡＴＡバスを介して前記ＡＴＡデバイスに対して発行して、前記エミュレーション処理を行うことを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
前記レジスタは、前記デバイス側インターフェースが含むタスクレジスタであることを特徴とするデータ転送制御装置。
【請求項４】
請求項２又は３において、
前記処理部は、
ベンダ定義コマンドとして割り当てられたコマンドが前記レジスタに書き込まれた場合に、書き込まれたベンダ定義の前記コマンドに対応するコマンドを、前記ホスト側インターフェース、前記第２のＡＴＡバスを介して前記ＡＴＡデバイスに対して発行して、前記エミュレーション処理を行うことを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記ＡＴＡホストに対してイベントの発生を通知するためのイベント通知部を含むことを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
第１のバスを介してデータ転送を行う第１のインターフェースを含み、
前記転送コントローラは、
前記デバイス側インターフェース、前記ホスト側インターフェース、前記第１のインターフェースの間でのデータ転送を制御することを特徴とするデータ転送制御装置。
【請求項７】
請求項６において、
前記処理部は、
前記第１のバスを介したデータ転送のプロトコル制御処理を行うことを特徴とするデータ転送制御装置。
【請求項８】
請求項６又は７において、
前記転送コントローラは、
前記ＡＴＡデバイスから前記ホスト側インターフェースを介してリードされたデータを、前記第１のインターフェースに転送し、
前記第１のインターフェースは、
転送されたデータを前記第１のバスを介して前記第１のバスに接続されるホスト又はデバイスに送信することを特徴とするデータ転送制御装置。
【請求項９】
請求項６乃至８のいずれかにおいて、
第３のＡＴＡバスを介してＡＴＡデバイスとの間でデータ転送を行うＡＴＡの第２のホスト側インターフェースを含み、
前記転送コントローラは、
前記デバイス側インターフェース、前記ホスト側インターフェース、前記第２のホスト側インターフェース、前記第１のインターフェースの間でのデータ転送を制御することを特徴とするデータ転送制御装置。
【請求項１０】
請求項６乃至９のいずれかにおいて、
前記第１のインターフェースは、
シリアルバスを介してデータの送信及び受信の少なくとも一方を行う物理層回路を含むことを特徴とするデータ転送制御装置。
【請求項１１】
請求項６乃至１０のいずれかにおいて、
前記第１のバスはＵＳＢであり、前記第１のインターフェースはＵＳＢインターフェースであることを特徴とするデータ転送制御装置。
【請求項１２】
請求項６乃至１１のいずれかにおいて、
第１〜第Ｋ（Ｋ≧２）のバスを介してデータ転送を行う第１〜第Ｋのインターフェースを含み、
前記転送コントローラは、
前記デバイス側インターフェース、前記ホスト側インターフェース、前記第１〜第Ｋのインターフェースの間でのデータ転送を制御することを特徴とするデータ転送制御装置。
【請求項１３】
請求項１乃至１２のいずれかに記載のデータ転送制御装置と、
前記第１のＡＴＡバスを介して前記データ転送制御装置に接続される前記ＡＴＡホストと、
前記第２のＡＴＡバスを介して前記データ転送制御装置に接続される前記ＡＴＡデバイスと、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置及び電子機器に関する。
【背景技術】
【０００２】
近年、ＵＳＢ（Universal serial Bus）やＩＥＥＥ１３９４などの高速シリアルインターフェースが脚光を浴びている。そしてＵＳＢ等の高速シリアルインターフェースバスと、ＨＤＤ（Hard Disk Drive）等のストレージが接続されるＡＴＡ（AT Attachment）バスとの間のバスブリッジ機能を有するデータ転送制御装置も知られている。この従来技術のデータ転送制御装置によれば、ＵＳＢを介してＨＤＤに高速にデータを書き込んだり、ＨＤＤから高速にデータを読み出したりすることが可能になる。
【０００３】
しかしながら、この従来のデータ転送制御装置では、電子機器のメインＣＰＵ上で動作するファームウェアに、ＵＳＢのプロトコル制御のためのプログラムを組み込む必要がある。このため、電子機器の設計者もＵＳＢのプロトコル制御についてある程度理解しておく必要があり、設計者の設計作業が繁雑化したり、データ転送制御装置のメーカのサポート業務が繁雑化するなどの問題があった。
【０００４】
またメインＣＰＵの機種によっては、ＵＳＢ等の高速シリアルインターフェース回路がＩＰ(Intellectual Property）コアとして組み込まれるものもある。
【０００５】
しかしながら、高速シリアルインターフェース回路には、データの送受信を高速に行うためのアナログ回路（物理層回路）が設けられており、このアナログ回路が原因となってメインＣＰＵの歩留まりが低下するなどの問題があった。また高速アナログ回路の設計は難しく、ノウハウが必要であるため、規格が想定する転送レートを達成できず、ＨＤＤの高速なデータの書き込み、読み出しを実現できないという問題もあった。
【特許文献１】特開２００２−３４４５３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ＡＴＡホストに対して様々なインターフェースを提供できるデータ転送制御装置及びこれを含む電子機器を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、第１のＡＴＡバスを介してＡＴＡホストとの間でデータ転送を行うＡＴＡのデバイス側インターフェースと、第２のＡＴＡバスを介してＡＴＡデバイスとの間でデータ転送を行うＡＴＡのホスト側インターフェースと、前記デバイス側インターフェース、前記ホスト側インターフェースの間でのデータ転送を制御する転送コントローラと、前記第１、第２のＡＴＡバスを介して前記ＡＴＡホスト、前記ＡＴＡデバイスの間でデータ転送を行うためのエミュレーション処理を行う処理部とを含み、前記処理部は、前記第１のＡＴＡバスを介して前記デバイス側インターフェースが前記ＡＴＡホストからコマンドを受信した場合に、受信したコマンドに対応するコマンドを、前記ホスト側インターフェース、前記第２のＡＴＡバスを介して前記ＡＴＡデバイスに対して発行し、コマンド発行後に、前記第１のＡＴＡバス、前記デバイス側インターフェース、前記ホスト側インターフェース、前記第２のＡＴＡバスを介したデータ転送を開始し、データ転送完了後に、前記第２のＡＴＡバスを介して前記ホスト側インターフェースが前記ＡＴＡデバイスからステータスをリードした場合に、リードしたステータスに対応するステータスを、前記デバイス側インターフェース、前記第１のＡＴＡバスを介して前記ＡＴＡホストに対して返信するエミュレーション処理を行うデータ転送制御装置に関係する。
【０００８】
本発明によれば、第１のＡＴＡバスを介してＡＴＡホストとの間でデータ転送を行うことができるため、第１のＡＴＡバスを、ＡＴＡホストとデータ転送制御装置の間のインターフェースバスとして使用できるようになる。そして、第１のＡＴＡバスを介してＡＴＡホストとの間で通信を行いながら、処理部によりエミュレーション処理が行われる。即ち、第１、第２のＡＴＡバスを介してＡＴＡホスト、ＡＴＡデバイスの間でデータ転送を行うためのエミュレーション処理が行われる。このようにすれば、ＡＴＡホストとＡＴＡデバイスとの間などで、様々な形態のデータ転送を実現できるようになり、ＡＴＡホストに対して様々なインターフェースを提供できるようになる。
【０００９】
また本発明では、前記第１のＡＴＡバスを介して前記ＡＴＡホストが発行したコマンドが書き込まれるレジスタを含み、前記処理部は、前記レジスタに書き込まれたコマンドに対応するコマンドを、前記ホスト側インターフェース、前記第２のＡＴＡバスを介して前記ＡＴＡデバイスに対して発行して、前記エミュレーション処理を行うようにしてもよい。
【００１０】
このようにすれば、ＡＴＡホストは、第１のＡＴＡバスを介してレジスタにコマンドを書き込むだけで、エミュレーション処理の指示や制御が可能になる。従って、ＡＴＡホストの処理負荷をそれほど増加させることなく、ＡＴＡホストに対して様々なインターフェースの提供が可能になる。
【００１１】
また本発明では、前記レジスタは、前記デバイス側インターフェースが含むタスクレジスタであってもよい。
【００１２】
このようにすれば、ＡＴＡホストは、ＡＴＡ規格に準拠した手法で、各種のコマンドを、ＡＴＡのタスクレジスタであるレジスタに設定できるようになり、ＡＴＡホストの処理の簡素化や処理負荷の軽減化を図れる。
【００１３】
また本発明では、前記処理部は、ベンダ定義コマンドとして割り当てられたコマンドが前記レジスタに書き込まれた場合に、書き込まれたベンダ定義の前記コマンドに対応するコマンドを、前記ホスト側インターフェース、前記第２のＡＴＡバスを介して前記ＡＴＡデバイスに対して発行して、前記エミュレーション処理を行うようにしてもよい。
【００１４】
このようにすれば、ＡＴＡホストは、ＡＴＡ規格においてベンダ定義コマンドとして割り当てられたコマンドを利用して、エミュレーション処理の指示や制御が可能になる。
【００１５】
また本発明では、前記第１のＡＴＡバスの第１〜第Ｎの信号線と前記第２のＡＴＡバスの第１〜第Ｎの信号線との間の接続、非接続を行う第１〜第Ｎのスイッチング素子を有するスイッチング回路を含み、前記処理部は、ハードワイヤードモードに設定されたと判断した場合に、前記第１〜第Ｎのスイッチング素子をオンにして、前記第１のＡＴＡバスの第１〜第Ｎの信号線と前記第２のＡＴＡバスの第１〜第Ｎの信号線との間を接続するようにしてもよい。
【００１６】
このようにすれば、ＡＴＡホストは、ＡＴＡデバイスを、あたかも自身のホスト側インターフェースに直接接続されているかのように扱うことができるようになる。
【００１７】
また本発明では、前記ＡＴＡホストに対してイベントの発生を通知するためのイベント通知部を含むようにしてもよい。
【００１８】
このようにすれば、データ転送制御装置側において発生したイベントを、ＡＴＡホストに通知することが可能になり、ＡＴＡホストの管理や制御を簡素化できる。
【００１９】
また本発明では、第１のバスを介してデータ転送を行う第１のインターフェースを含み、前記転送コントローラは、前記デバイス側インターフェース、前記ホスト側インターフェース、前記第１のインターフェースの間でのデータ転送を制御するようにしてもよい。
【００２０】
このようにすれば、第１のＡＴＡバスを介してＡＴＡホストとの間で通信を行いながら、転送コントローラによるデータ転送制御により、例えばＡＴＡホストからのデータをＡＴＡデバイスに転送したり、ＡＴＡデバイスからのデータを第１のバスに接続されるホストやデバイスに対して転送することが可能になる。このように本発明では、第１のＡＴＡバスを有効活用することで、ＡＴＡホストに対して様々なインターフェースの提供が可能になる。
【００２１】
また本発明では、前記処理部は、前記第１のバスを介したデータ転送のプロトコル制御処理を行うようにしてもよい。
【００２２】
このようにすれば、第１のバスを介したデータ転送のプロトコル制御を、ＡＴＡホストが行わなくても済むようになり、ＡＴＡホストの処理負荷を軽減できる。
【００２３】
また本発明では、前記転送コントローラは、前記ＡＴＡデバイスから前記ホスト側インターフェースを介してリードされたデータを、前記第１のインターフェースに転送し、前記第１のインターフェースは、転送されたデータを前記第１のバスを介して前記第１のバスに接続されるホスト又はデバイスに送信するようにしてもよい。
【００２４】
このようにすれば、ＡＴＡデバイスからのデータを、第１のバスに接続されるホストやデバイスに効率的に転送できる。
【００２５】
また本発明では、第３のＡＴＡバスを介してＡＴＡデバイスとの間でデータ転送を行うＡＴＡの第２のホスト側インターフェースを含み、前記転送コントローラは、前記デバイス側インターフェース、前記ホスト側インターフェース、前記第２のホスト側インターフェース、前記第１のインターフェースの間でのデータ転送を制御するようにしてもよい。
【００２６】
このようにすれば、ＡＴＡホストと複数のＡＴＡデバイスとの間でのデータ転送や、複数のＡＴＡデバイス間でのデータ転送を実現できる。
【００２７】
また本発明では、前記第１のインターフェースは、シリアルバスを介してデータの送信及び受信の少なくとも一方を行う物理層回路を含むようにしてもよい。
【００２８】
また本発明では、前記第１のバスはＵＳＢであり、前記第１のインターフェースはＵＳＢインターフェースであってもよい。
【００２９】
また本発明では、第１〜第Ｋ（Ｋ≧２）のバスを介してデータ転送を行う第１〜第Ｋのインターフェースを含み、前記転送コントローラは、前記デバイス側インターフェース、前記ホスト側インターフェース、前記第１〜第Ｋのインターフェースの間でのデータ転送を制御するようにしてもよい。
【００３０】
このようにすれば、様々なインターフェースを容易に組み込むことができるデータ転送制御装置を提供できる。
【００３１】
また本発明は、上記のいずれかに記載のデータ転送制御装置と、前記第１のＡＴＡバスを介して前記データ転送制御装置に接続される前記ＡＴＡホストと、前記第２のＡＴＡバスを介して前記データ転送制御装置に接続される前記ＡＴＡデバイスとを含む電子機器に関係する。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施形態について詳細に説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３３】
１．比較例
図１（Ａ）（Ｂ）に本実施形態の比較例を示す。図１（Ａ）の第１の比較例では、データ転送制御装置５５０が、ＡＴＡ（AT Attachment）のホスト側Ｉ／Ｆ（インターフェース）５７０とＵＳＢＩ／Ｆ５８０を含む。この図１（Ａ）の第１の比較例によれば、ＵＳＢ（Universal serial Bus）を介して転送されてきたデータをＨＤＤ５４０に書き込んだり、ＨＤＤ５４０に書き込まれたデータをＵＳＢを介してＰＣ(Personal Computer）等に転送でき、ＡＴＡバスとＵＳＢの変換ブリッジ機能を実現できる。
【００３４】
この第１の比較例では、データ転送制御装置５５０はメインＣＰＵ５３０により制御されて動作する。従って、ＲＯＭ５２０（マスクＲＯＭ、ＥＥＰＲＯＭ）に記憶されメインＣＰＵ５３０上で動作するファームウェア（ソフトウェア）に対して、ＵＳＢのプロトコル制御のためのプログラムを組み込む必要がある。
【００３５】
しかしながら、ＵＳＢのプロトコル制御は複雑であり、電子機器の設計者にこのプロトコル制御の理解を強要すると、設計作業が繁雑化する。またデータ転送制御装置５５０のメーカにおいても、プロトコル制御の説明が必要になったり、不具合発生時のサポートが必要になり、サポート業務が繁雑化する。
【００３６】
また、ＵＳＢ以外のインターフェース（例えばＩＥＥＥ１３９４、シリアルＡＴＡ等）が組み込まれたデータ転送制御装置５５０を開発しようとすると、上記と同様の問題が生じるため、データ転送制御装置５５０の機能拡張や商品展開が制限されるなどの問題も生じる。
【００３７】
一方、図１（Ｂ）の第２の比較例では、メインＣＰＵ５３０に対してＵＳＢＩ／Ｆ５８０がＩＰコアとして組み込まれている。このようにＵＳＢＩ／Ｆ５８０をメインＣＰＵ５３０に組み込めば、メインＣＰＵ５３０は、ＵＳＢを介して直接にＵＳＢホストとの間でデータ転送を行うことが可能になる。
【００３８】
しかしながら、差動信号を用いた高速のシリアルインターフェース回路であるＵＳＢＩ／Ｆ５８０には、データの送受信を行う物理層の高速アナログ回路が設けられており、この高速アナログ回路は、設計も難しく、プロセス変動の影響も受けやすい。従って、メインＣＰＵ５３０のコア回路には問題が無いのに、高速アナログ回路が原因となってメインＣＰＵ５３０の設計開発が失敗したり、歩留まりが低下する。またＵＳＢＩ／Ｆ５８０の回路設計にはノウハウが必要であるため、ＵＳＢ２．０の規格が想定する転送レートを実現できない事態も生じる。そしてこのような事態が生じると、ＨＤＤ５４０に対する高速なデータの書き込み、読み出しができなくなり、ユーザの利便性を阻害する。
【００３９】
２．構成
図２に、以上のような問題を解決できる本実施形態のデータ転送制御装置５０及びこれを含む電子機器２０の構成例を示す。本実施形態では、メインＣＰＵ３０（ＡＴＡホスト）が有するＡＴＡのホスト側Ｉ／Ｆ３２の存在に着目し、このホスト側Ｉ／Ｆ３２に対応するＡＴＡのデバイス側Ｉ／Ｆ６０をデータ転送制御装置５０に設けている。即ち図１（Ａ）の第１の比較例では設けられていなかったデバイス側Ｉ／Ｆ６０を設けている。またＨＤＤ４０を接続するためのＡＴＡのホスト側Ｉ／Ｆ７０もデータ転送制御装置５０に設けている。即ち、通常はどちらか一方しか設けられていないデバイス側Ｉ／Ｆ６０とホスト側Ｉ／Ｆ７０の両方を、データ転送制御装置５０に内蔵させている。こうすることで、メインＣＰＵ３０からのデータを、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０を介してＨＤＤ４０に書き込むことが可能になる。また本実施形態では、ＨＤＤ４０に書き込まれたデータをＰＣ１０に転送するためのＵＳＢＩ／Ｆ８０（第１のインターフェース）を設けている。こうすることで、図１（Ａ）の第１の比較例と同様に、ＡＴＡバスとＵＳＢの間のバスブリッジ機能も実現できる。
【００４０】
なおデータ転送制御装置５０、電子機器２０は図２の構成に限定されず、その構成要素の一部を省略したり、構成要素間の接続形態を変更したり、図２とは異なる構成要素を追加する変形実施が可能である。例えばデータ転送制御装置５０において処理部１２０やＵＳＢＩ／Ｆ８０等の構成を省く変形実施も可能である。また電子機器２０においてＨＤＤ（Hard Disk Drive）４０の構成を省いたり、図２に示されるもの以外の構成要素（例えば操作部、表示部、ＲＯＭ、ＲＡＭ、撮像部又は電源等）を追加してもよい。
【００４１】
また本実施形態の電子機器２０としては、ビデオカメラ、デジタルカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、光ディスクドライブ装置、ハードディスクドライブ装置、オーディオ機器、携帯電話機、携帯型ゲーム機、電子手帳、電子辞書又は携帯型情報端末等の種々のものが考えられる。
【００４２】
電子機器２０は、メインＣＰＵ３０（広義にはメインプロセッサ、更に広義にはＡＴＡホスト）と、ＨＤＤ４０（広義にはストレージ、更に広義にはＡＴＡデバイス）と、データ転送制御装置５０（データ転送制御回路、データ転送制御チップ）を含む。
【００４３】
メインＣＰＵ３０は電子機器２０の全体的な処理、制御を行う。例えば電子機器２０がビデオカメラである場合には、メインＣＰＵ３０はカメラプロセッサとして機能し、撮像デバイスの制御や画像のエフェクト処理や画像の圧縮処理などを行う。このメインＣＰＵ３０はＡＴＡのホスト側Ｉ／Ｆ（インターフェース）３２を含む。なおホスト側Ｉ／Ｆ３２は、モード設定によりＡＴＡインターフェースに切り替わるＣＦ＋のインターフェース規格のものであってもよい。
【００４４】
ＨＤＤ４０には種々のデータが書き込まれる。例えば電子機器２０がビデオカメラである場合には、撮影された映像（画像）データが、メインＣＰＵ３０からデータ転送制御装置５０を介してＨＤＤ４０に書き込まれる。そしてＨＤＤ４０に書き込まれた映像データは、データ転送制御装置５０、ＵＳＢを介してＰＣ(Personal Computer）１０に転送できる。こうすればユーザは、ＨＤＤ４０の使用記憶容量が満杯になった場合に、ＨＤＤ４０の映像データをＰＣ１０に転送し、ＰＣ１０の内蔵ＨＤＤや光ディスクに保存することが可能になり、ユーザの利便性を向上できる。
【００４５】
データ転送制御装置５０は、ＡＴＡ（ＩＤＥ）のデバイス側Ｉ／Ｆ６０とＡＴＡのホスト側Ｉ／Ｆ７０を含む。またＵＳＢＩ／Ｆ８０や転送コントローラ１００やスイッチング回路１１０や処理部１２０やイベント通知部１３０を含むことができる。
【００４６】
ここでデバイス側Ｉ／Ｆ６０は、ＡＴＡＢＵＳ１（第１のＡＴＡバス）を介してメインＣＰＵ３０（ＡＴＡホスト）との間でデータ転送（通信）を行うためのインターフェースである。またホスト側Ｉ／Ｆ７０は、ＡＴＡＢＵＳ２（第２のＡＴＡバス）を介してＨＤＤ４０（ＡＴＡデバイス）との間でデータ転送を行うためのインターフェースである。なお本実施形態におけるＡＴＡは、ＡＴＡＰＩ（AT Attachment with Packet Interface)を含むことができる。また、シリアルＡＴＡやＣＥ−ＡＴＡなどの従来のＡＴＡ規格を発展した規格を含むこともできる。またデータ転送制御装置５０に、複数のＡＴＡのホスト側Ｉ／Ｆを設けてもよい。
【００４７】
デバイス側Ｉ／Ｆ６０はレジスタ６２を含む。このレジスタ６２には、ＡＴＡＢＵＳ１を介してメインＣＰＵ３０が発行したコマンドが書き込まれる。具体的には、このレジスタ６２として、ＡＴＡのデバイス側Ｉ／Ｆが含むタスクレジスタを使用できる。そして本実施形態では、ＡＴＡのコマンドのうちベンダ定義コマンド（Vender specific command）として割り当てられたコマンドが、レジスタ６２（タスクレジスタ）に書き込まれる。転送コントローラ１００、処理部１２０は、このベンダ定義コマンドに基づいて動作することができる。例えば転送コントローラ１００は、レジスタ６２に設定されたベンダ定義の転送制御コマンド（転送方向や転送データ量を指定するコマンド）に基づいて、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０のうちのいずれのインターフェース間でデータ転送を行うかを決定する。またインターフェース間で転送するデータ量を決定する。また処理部１２０は、レジスタ６２に設定されたベンダ定義のモード設定コマンドに基づいて、データ転送制御装置５０の動作モードを判断する。具体的には、動作モードがハードワイヤードモード（Hard wired mode)に設定された否かを判断する。
【００４８】
ＵＳＢＩ／Ｆ８０（広義には第１のインターフェース）は、ＵＳＢ（広義には第１のバス）を介してデータ転送（高速シリアル転送）を行うためのインターフェースである。具体的にはＵＳＢＩ／Ｆ８０は、ＵＳＢ（シリアルバス）を介してデータの受信や送信を行う物理層回路を含み、ＰＣ１０（広義にはＵＳＢホスト、更に広義にはホスト）との間のデータ転送を行う。
【００４９】
なおＵＳＢＩ／Ｆ８０がホスト機能を有する場合には、ＵＳＢにＵＳＢデバイス（広義にはデバイス）を接続し、そのＵＳＢデバイスとの間でデータ転送を行うようにしてもよい。また第１のインターフェースは、ＵＳＢインターフェースに限定されず、ＩＥＥＥ１３９４、ＳＤなどの他の規格のインターフェースであってもよい。また第１のインターフェースがシリアルＡＴＡやＣＥ−ＡＴＡであってもよい。また第１〜第Ｋ（Ｋ≧２）のバスを介してデータ転送を行う複数の第１〜第Ｋのインターフェースをデータ転送制御装置５０に設けてもよい。また本実施形態におけるバスは有線であってもよいし、無線であってもよい。
【００５０】
転送コントローラ１００は、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０（第１のインターフェース）の間でのデータ転送を制御する。
【００５１】
具体的には転送コントローラ１００は、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０の間でのデータ転送を制御する。これにより、メインＣＰＵ３０から転送されてきたデータをＨＤＤ４０に書き込んだり、ＨＤＤ４０に書き込まれたデータをメインＣＰＵ３０に転送することが可能になる。また転送コントローラ１００は、ホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０の間でのデータ転送を制御する。これにより、ＨＤＤ４０に書き込まれたデータをＵＳＢを介してＰＣ１０に転送したり、ＰＣ１０から転送されてきたデータをＨＤＤに書き込むことが可能になる。また転送コントローラ１００は、デバイス側Ｉ／Ｆ６０、ＵＳＢＩ／Ｆ８０の間でのデータ転送を制御することも可能である。これにより、メインＣＰＵ３０から転送されてきたデータをＵＳＢを介してＰＣ１０に転送したり、ＰＣ１０から転送されてきたデータをメインＣＰＵ３０に転送することが可能になる。
【００５２】
なお転送コントローラ１００は、レジスタ６２に書き込まれたコマンドに基づいて、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０のうちのいずれかのインターフェース間でデータ転送を行うかを制御（決定）することができる。
【００５３】
転送コントローラ１００はデータバッファ１０２（例えばＦＩＦＯ）を含む。データバッファ１０２は、転送コントローラ１００により転送されるデータを一時的に格納するためのバッファである。このデータバッファ１０２は、ＲＡＭなどのメモリにより実現できる。
【００５４】
転送コントローラ１００はポートセレクタ１０４を含む。このポートセレクタ１０４は、転送コントローラ１００のポートに接続されるデバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０（第１〜第Ｋのインターフェース）のうち、いずれのインターフェース間でデータ転送を行うかを選択するための回路である。例えばデバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０の間でデータ転送を行う場合には、デバイス側Ｉ／Ｆ６０のポートとホスト側Ｉ／Ｆ７０のポートを選択し、これらのポート間でのデータ転送を行う。またホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０の間でデータ転送を行う場合には、ホスト側Ｉ／Ｆ７０のポートとＵＳＢＩ／Ｆ８０のポートを選択し、これらのポート間でのデータ転送を行う。
【００５５】
スイッチング回路１１０は、ＡＴＡＢＵＳ１とＡＴＡＢＵＳ２の接続、非接続を行う回路である。具体的にはＡＴＡＢＵＳ１の複数の第１〜第Ｎ（Ｎ≧２）の信号線とＡＴＡＢＵＳ２の複数の第１〜第Ｎの信号線との間の接続、非接続を行う複数の第１〜第Ｎのスイッチング素子を有する。ここで第１〜第Ｎの信号線は、例えばＣＳ［１：０］、ＤＡ［２：０］、ＤＤ［１５：０］、ＤＡＳＰ、ＤＩＯＲ、ＤＩＯＷ、ＤＭＡＣＫ、ＤＭＡＲＱ、ＩＮＴＲＱ、ＩＯＲＤＹ、ＰＤＩＡＧ、ＲＥＳＥＴなどの信号線である。そして第１〜第Ｎのスイッチング素子は、ハードワイヤードモードの場合に、ＡＴＡＢＵＳ１の第１〜第Ｎの信号線とＡＴＡＢＵＳ２の第１〜第Ｎの信号線との間を接続する。こうすることで、メインＣＰＵ３０のホスト側Ｉ／Ｆ３２（ＡＴＡＢＵＳ１）とＨＤＤ４０（ＡＴＡＢＵＳ２）を直結することができ、ハードワイヤードモードを実現できる。なおスイッチング回路１１０の第１〜第Ｎのスイッチング素子のオン、オフ制御は、例えば処理部１２０（スイッチング信号生成部）からのスイッチング信号に基づき行われる。
【００５６】
処理部１２０は、データ転送制御装置５０の全体的な処理、制御を行ったり、データ転送制御装置５０が含む各回路ブロックの制御を行う。この処理部１２０の機能の一部又は全部は、例えばＣＰＵとＣＰＵ上で動作するファームウェアにより実現したり、専用のハードウェア回路により実現できる。
【００５７】
具体的には処理部１２０は、ＡＴＡＢＵＳ１、ＡＴＡＢＵＳ２を介してメインＣＰＵ３０（ＡＴＡホスト）、ＨＤＤ４０（ＡＴＡデバイス）の間でデータ転送を行うためのエミュレーション処理を行う。また処理部１２０は、スイッチング回路１１０の制御を行う。そしてハードワイヤードモードに設定されたと判断した場合に、スイッチング回路１１０の第１〜第Ｎのスイッチング素子をオンにして、ＡＴＡＢＵＳ１の第１〜第Ｎの信号線とＡＴＡＢＵＳ２の第１〜第Ｎの信号線との間を接続する処理を行う。また処理部１２０は、ＵＳＢを介したＵＳＢのプロトコル制御処理（広義には、第１のバスを介したデータ転送のプロトコル制御処理）を行うこともできる。
【００５８】
なお処理部１２０をデータ転送制御装置５０に内蔵させず、メインＣＰＵ３０との間のインターフェース処理を行うＣＰＵＩ／Ｆを設けるようにしてもよい。この場合には、データ転送制御装置５０やデータ転送制御装置５０が含む各回路ブロックの制御は、ＣＰＵＩ／Ｆを介してメインＣＰＵ３０が行うことになる。
【００５９】
なお処理部１２０を動作させるためのプログラムは、メインＣＰＵ３０側のメモリ（ＥＥＰＲＯＭ等）に記憶しておき、電源投入後にメインＣＰＵ３０がダウンロードコマンドを発行し、ＡＴＡＢＵＳ１を介してデータ転送制御装置５０（データ転送制御装置が有するメモリ）にダウンロードするようにしてもよい。
【００６０】
イベント通知部１３０（イベント通知回路）は、メインＣＰＵ３０（ＡＴＡホスト）に対してイベントの発生を通知するための処理を行う。具体的にはイベント通知部１３０は、ＵＳＢＩ／Ｆ８０（第１のインターフェース）について発生したイベントをメインＣＰＵ３０に対して通知する。例えばＵＳＢにＰＣ１０が接続された場合に、ＰＣ１０が接続されたことをメインＣＰＵ３０に通知する。或いは、転送コントローラ１００のデータ転送にエラーが生じた場合に、このエラーの発生をメインＣＰＵ３０に通知する。或いは、ＡＴＡＢＵＳ２に接続されるＡＴＡ（ＡＴＡＰＩ）デバイスが光ディスクドライブであり、光ディスクドライブに光ディスクがロードされた場合に、光ディスクがロードされたことをメインＣＰＵ３０に通知する。
【００６１】
即ち本実施形態ではメインＣＰＵ３０とデータ転送制御装置５０の間のインターフェースは、ＡＴＡＢＵＳ１になる。従ってＡＴＡのデータ転送に関するイベントの発生については、ＡＴＡＢＵＳ１を介してメインＣＰＵ３０に通知できるが、それ以外のイベントの発生については通知することが難しい。
【００６２】
この点、図２のイベント通知部１３０を設ければ、ＡＴＡのデータ転送に関するイベント以外のイベントについても、そのイベントの発生をメインＣＰＵ３０に対して通知できるようになる。
【００６３】
なお、メインＣＰＵ３０へのイベント発生の通知は、ＡＴＡＢＵＳ１の信号線とは別に設けられた割り込み信号線などを用いて実現できる。或いは、メインＣＰＵ３０のホスト側Ｉ／Ｆ３２がＣＦ＋規格のＩ／Ｆである場合には、ＡＴＡモードの場合に使用されない端子（例えばカード・ディテクト端子ＣＤ）の信号線を用いて、メインＣＰＵ３０にイベント発生を通知してもよい。
【００６４】
３．変形例
図３（Ａ）（Ｂ）に本実施形態のデータ転送制御装置５０の変形例を示す。例えば図３（Ａ）では、データ転送制御装置５０が、ＡＴＡＢＵＳ３（第３のＡＴＡバス）を介してＨＤＤ４１（ＡＴＡデバイス）との間でデータ転送を行うＡＴＡの第２のホスト側Ｉ／Ｆ７１を含む。そして転送コントローラ１００は、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、第２のホスト側Ｉ／Ｆ７１、ＵＳＢＩ／Ｆ８０の間でのデータ転送を制御する。
【００６５】
図３（Ａ）の構成によれば、２台のＨＤＤ４０、４１をデータ転送制御装置５０に接続できるようになる。そして例えばメインＣＰＵ３０からのデータをＨＤＤ４０に書き込んでいる最中に、ＨＤＤ４１に書き込まれているデータを、ＵＳＢＩ／Ｆ８０を介してＰＣ１０に転送できる。またＨＤＤ４０に書き込まれたデータをＨＤＤ４１に転送して書き込んだり、ＨＤＤ４１に書き込まれたデータをＨＤＤ４０に転送して書き込むことも可能になる。なお図３（Ａ）では、２つのホスト側Ｉ／Ｆ７０、７１を設けた例を示しているが、３つ以上のホスト側Ｉ／Ｆを設けてもよい。
【００６６】
また図３（Ｂ）では、ＵＳＢＩ／Ｆ８０に加えて、ＳＤ（Secure Digital）メモリカード用のＳＤＩ／Ｆ９０が設けられており、著作権保護機能（ＣＰＲＭ）を有するＳＤインターフェースを実現している。即ち図３（Ｂ）ではデータ転送制御装置５０が、ＢＵＳ１、ＢＵＳ２（広義には第１〜第Ｋのバス）を介してデータ転送を行うＵＳＢＩ／Ｆ８０、ＳＤＩ／Ｆ９０（広義には第１〜第Ｋのインターフェース）を含む。そして転送コントローラ１００は、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＵＳＢＩ／Ｆ８０、ＳＤＩ／Ｆ９０の間でのデータ転送を制御する。これにより、例えばメインＣＰＵ３０からのデータをＳＤメモリカード４２に書き込み、ＳＤメモリカード４２に書き込んだデータをＵＳＢＩ／Ｆ８０を介してＰＣ１０に転送できる。或いは、ＨＤＤ４０に書き込んだデータをＳＤメモリカード４２に書き込むことも可能になる。
【００６７】
なお本実施形態においてデータ転送制御装置５０に設ける第１〜第Ｋのインターフェースは、ＵＳＢやＳＤのインターフェースに限定されない。例えばＩＥＥＥ１３９４、シリアルＡＴＡ、ＣＥ−ＡＴＡなどの種々のインターフェースを採用できる。即ち、シリアルバスなどを介してデータの受信及び送信の少なくとも一方を行う物理層回路を含む種々のインターフェースを、第１〜第Ｋのインターフェースとして設けることができる。
【００６８】
４．動作
次に本実施形態の動作について図４（Ａ）（Ｂ）（Ｃ）を用いて説明する。本実施形態ではスイッチング回路１１０を設けることで、ハードワイヤードモードを実現している。このハードワイヤードモードでは図４（Ａ）に示すように、スイッチング回路１１０が含むスイッチング素子がオンになり、ＡＴＡＢＵＳ１の信号線（第１〜第Ｎの信号線）とＡＴＡＢＵＳ２の信号線（第１〜第Ｎの信号線）が接続される。この結果、メインＣＰＵ３０のホスト側Ｉ／Ｆ３２とＨＤＤ４０（ＨＤＤ４０が含むデバイス側Ｉ／Ｆ）とが直結されるようになる。従ってメインＣＰＵ３０は、ＨＤＤ４０にデータを直接ライトしたり、ＨＤＤ４０からデータを直接リードすることが可能になる。またＡＴＡＢＵＳ１とＡＴＡＢＵＳ２が直結されるため、高速なデータのライト、リードが可能になる。
【００６９】
ハードワイヤードモードの設定は、例えばメインＣＰＵ３０により発行されてＡＴＡＢＵＳ１を介してレジスタ６２に書き込まれるモード設定コマンドに基づき行うことができる。具体的には、動作モードをハードワイヤードモードに設定するモード設定コマンドがレジスタ６２に書き込まれると、処理部１２０が、このモード設定コマンドに基づいてスイッチング信号を制御する。そしてスイッチング回路１１０が含むスイッチング素子をオンにし、ＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線を接続する。
【００７０】
この場合に、レジスタ６２としては、デバイス側Ｉ／Ｆ６０が含むＡＴＡのタスクレジスタを使用できる。例えば図５にＡＴＡのレジスタ構成を示す。図５は、チップセレクト信号ＣＳ１、ＣＳ０（＃は負論理を示す）が、各々、Ｈ、Ｌレベルの場合にアドレス選択されるコマンドブロックレジスタを示している。図５において、チップセレクト信号ＣＳ１、ＣＳ０、アドレス信号ＤＡ２、ＤＡ１、ＤＡ０が、各々、Ｈ、Ｌ、Ｈ、Ｈ、Ｈレベルであり、ホストによるレジスタライトの場合には、Ａ１に示すＣｏｍｍａｎｄレジスタにアクセスされる。そしてＣｏｍｍａｎｄレジスタに書き込まれるコマンドのうち、コマンドコードが８０ｈ〜８Ｆｈのものは、ベンダ（メーカ）により自由に定義可能なベンダ定義コマンドとして規定されている。本実施形態におけるハードワイヤードモードの設定は、ベンダ定義のモード設定コマンドにより行うことができる。
【００７１】
また本実施形態ではメインＣＰＵ３０側から見て、レジスタ６２はＡＴＡの例えばスレーブとして動作し、ＨＤＤ４０は例えばマスタとして動作する。なお、レジスタ６２をマスタとして動作させ、ＨＤＤ４０をスレーブとして動作させてもよい。
【００７２】
具体的には図５のＡ２に示すＤｅｖｉｃｅ／ＨｅａｄレジスタのＤＥＶビット（デバイス選択ビット）によって、メインＣＰＵ３０からのコマンドブロックがスレーブ用なのかマスタ用なのかを判別できる。そしてメインＣＰＵ３０がＤＥＶビットをスレーブ側に設定して、ベンダ定義のモード設定コマンドを発行すると、処理部１２０は、ＤＥＶビットを見て、自分宛のコマンドであると判断する。そしてモード設定コマンドによりハードワイヤードモードがイネーブルに設定されると、スイッチング回路１１０のスイッチング素子をオンにして、ＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線を接続し、ＡＴＡホスト側Ｉ／Ｆ３２とＨＤＤ４０を直結する。
【００７３】
次に、メインＣＰＵ３０がＤＥＶビットをマスタ側に設定して、データを転送すると、ＨＤＤ４０は、ＤＥＶビットを見て、そのデータが自分宛のデータであると判断し、データを内蔵するハードディスクに書き込む。
【００７４】
その後、メインＣＰＵ３０が、ＤＥＶビットをスレーブ側に設定し、ハードワイヤードモードをディスエーブルに設定するモード設定コマンドを発行すると、処理部１２０は、スイッチング回路１１０のスイッチング素子をオフにする。そしてＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線を非接続にして、ハードワイヤードモードを解除する。
【００７５】
図４（Ａ）のようなハードワイヤードモードを用いることで、メインＣＰＵ３０は、あたかもＡＴＡＢＵＳ１に直結されたかのようにＨＤＤ４０を扱って、ＨＤＤ４０への高速なデータのライト、リードが可能になる。
【００７６】
また本実施形態では図４（Ｂ）に示すように、ＡＴＡＢＵＳ１、ＡＴＡＢＵＳ２を介してメインＣＰＵ３０（ＡＴＡホスト）、ＨＤＤ４０（ＡＴＡデバイス）の間でデータ転送を行うためのエミュレーション処理が行われる。このエミュレーション処理については後に詳述する。
【００７７】
また本実施形態では図４（Ｃ）に示すように、ハードワイヤードモードやエミュレーション処理によりＨＤＤ４０に書き込まれたデータはＵＳＢを介してＰＣ１０に転送できる。即ち転送コントローラ１００は、ＨＤＤ４０からホスト側Ｉ／Ｆ７０を介してリードされたデータを、ＵＳＢＩ／Ｆ８０に転送する。すると、ＵＳＢＩ／Ｆ８０は、転送されたデータをＵＳＢ（第１のバス）を介してＵＳＢに接続されるＰＣ１０（ホスト、デバイス）に送信する。こうすることで、ＨＤＤ４０に書き込まれたデータを、ＰＣ１０側に転送して、ＰＣ１０の内蔵ＨＤＤや光ディスクに保存することが可能になり、ユーザの利便性を向上できる。
【００７８】
５．エミュレーション処理
次に本実施形態のエミュレーション処理について説明する。図１（Ａ）に示すようにＵＳＢとＡＴＡのバスブリッジ機能を有する従来のデータ転送制御装置５５０では、ＡＴＡのホスト側Ｉ／Ｆ５７０だけが設けられており、このホスト側Ｉ／Ｆ５７０にＨＤＤ５４０が接続される。
【００７９】
これに対して図２の本実施形態ではＡＴＡのデバイス側Ｉ／Ｆ６０が設けられている。またＨＤＤ４０を接続するためにＡＴＡのホスト側Ｉ／Ｆ７０も設けられている。従って、メインＣＰＵ３０からＨＤＤ４０にデータを書き込んだり、ＨＤＤ４０のデータをメインＣＰＵ３０が読み出すためには、ＡＴＡＢＵＳ１、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＡＴＡＢＵＳ２を介したルートのデータ転送が必要になる。そして本実施形態では、このルートのデータ転送を実現するためのエミュレーション処理を行っている。
【００８０】
具体的には本実施形態のエミュレーション処理では図６（Ａ）に示すように、ＡＴＡホストがＡＴＡＢＵＳ１を介して、エミュレーション処理によるデータ転送を行うためのコマンド（エミュレーションコマンド）を発行する。この場合、発行されるコマンドとしては、ＡＴＡのベンダ定義コマンドとして割り当てられたコマンドを用いることができる。即ちコマンドコードが例えば８０ｈ〜８Ｆｈであるコマンドを用いることができる。
【００８１】
そしてメインＣＰＵ３０により発行されたコマンドはＡＴＡのタスクレジスタであるレジスタ６２に書き込まれる。この場合に図６（Ａ）ではレジスタ６２（デバイス側Ｉ／Ｆ６０）はＡＴＡのスレーブとして動作している。従ってメインＣＰＵ３０は、図５のＡ２のＤｅｖｉｃｅ／ＨｅａｄレジスタのＤＥＶビットをスレーブ側に設定して、レジスタ６２にコマンドを書き込む。なおレジスタ６２をＡＴＡのマスタとして動作させてもよい。
【００８２】
そして図６（Ａ）に示すように、処理部１２０は、ＡＴＡＢＵＳ１を介してデバイス側Ｉ／Ｆ６０がメインＣＰＵ３０からコマンドを受信すると、受信したコマンドに対応するコマンドを、ホスト側Ｉ／Ｆ７０、ＡＴＡＢＵＳ２を介してＨＤＤ４０に発行する。即ちＡＴＡのホスト側Ｉ／Ｆ７０にコマンドを発行させる。
【００８３】
ここで受信したコマンド（ベンダ定義コマンド）に対応するコマンドとは、受信コマンドそのものであってもよいし、受信コマンドを変換することで得られるコマンドであってもよい。例えば図６（Ａ）では、レジスタ６２（デバイス側Ｉ／Ｆ６０）はスレーブとして動作し、ＨＤＤ４０（ＨＤＤが含むデバイス側Ｉ／Ｆ）はマスタとして動作している。従ってこの場合には、スレーブを宛先とするコマンドを、マスタを宛先にするコマンドに変換する必要がある。具体的にはレジスタ６２には、ＤＥＶビットがスレーブ側に設定されたコマンドが書き込まれており、処理部１２０は、このコマンドのＤＥＶビットをマスタ側の設定に書き直す変換を行い、変換により得られたコマンドをＨＤＤ４０に発行する。この場合には、ベンダ定義コマンドではなく、ＡＴＡにより予め規格化されたコマンド（ライトコマンド等）が発行される。なおＨＤＤ４０がスレーブとして動作する場合には、このような変換を行わなくてもよい場合があり、この場合には、メインＣＰＵ３０から受信したコマンドそのものを、ホスト側Ｉ／Ｆ７０を介してＨＤＤ４０に発行してもよい。
【００８４】
このようなＨＤＤ４０へのコマンド発行後に、処理部１２０は、ＡＴＡＢＵＳ１、デバイス側Ｉ／Ｆ６０、ホスト側Ｉ／Ｆ７０、ＡＴＡＢＵＳ２を介したエミュレーション処理によるデータ転送を開始する。例えば図６（Ｂ）では、メインＣＰＵ３０からのデータが、ＡＴＡＢＵＳ１、デバイス側Ｉ／Ｆ６０を介して、仮想ＨＤＤとして機能するデータバッファ１０２に転送されて書き込まれる。そしてデータバッファ１０２に書き込まれたデータが、ホスト側Ｉ／Ｆ７０、ＡＴＡＢＵＳ２を介してＨＤＤ４０に転送されて書き込まれる。なお、ＨＤＤ４０のデータを読み出す場合には、ＨＤＤ４０からのデータがＡＴＡＢＵＳ２、ホスト側Ｉ／Ｆ７０を介して、仮想ＨＤＤとして機能するデータバッファ１０２に転送されて書き込まれる。そしてデータバッファ１０２に書き込まれたデータが、デバイス側Ｉ／Ｆ６０、ＡＴＡＢＵＳ１を介してメインＣＰＵ３０に転送される。
【００８５】
このようなデータ転送の完了後に、図６（Ｃ）に示すように、ＡＴＡＢＵＳ２を介してホスト側Ｉ／Ｆ７０がＨＤＤ４０からステータスをリードすると、処理部１２０は、リードしたステータスに対応するステータスを、デバイス側Ｉ／Ｆ６０、ＡＴＡＢＵＳ１を介してメインＣＰＵ３０に返信する。具体的にはホスト側Ｉ／Ｆ７０、ＨＤＤ４０間のデータ転送が完了し、ＨＤＤ４０（ＨＤＤが含むデバイス側Ｉ／Ｆ）が例えば割り込み信号ＩＮＴＲＱをアクティブにすると、ホスト側Ｉ／Ｆ７０がステータスのリードコマンドを発行して、ＨＤＤ４０からステータスをリードする。すると処理部１２０は、リードしたステータスに対応するコマンドを、タスクレジスタであるレジスタ６２に書き込む。そしてデバイス側Ｉ／Ｆ６０が例えば割り込み信号ＩＮＴＲＱをアクティブにすると、メインＣＰＵ３０のホスト側Ｉ／Ｆ３２が、ステータスのリードコマンドを発行して、レジスタ６２に書き込まれたステータスをリードする。なおリードしたステータスに対応するステータスは、リードしたステータスそのものであってもよいし、リードスしたテータスを変換することで得られるステータスであってもよい。
【００８６】
本実施形態のエミュレーション処理によれば、図４（Ａ）のハードワイヤードモードに比べた場合、転送レートは劣るものの、ハードワイヤードモードでは実現できない様々なタイプのデータ転送が可能になる。
【００８７】
例えば図４（Ａ）のハードワイヤードモードでは、レジスタ６２がスレーブ（或いはマスタ）になるため、１台のマスタ（或いはスレーブ）のＨＤＤ４０しか接続できないという制約がある。これに対して本実施形態のエミュレーション処理では、このような制約が無くなり、２台のマスタ、スレーブのＨＤＤ４０、４１を接続することが可能になる。
【００８８】
例えば図７（Ａ）〜図８（Ｃ）に、２台のマスタ、スレーブのＨＤＤ４０、４１をホスト側Ｉ／Ｆ７０に接続した場合のエミュレーション処理の概要を示す。
【００８９】
例えば図７（Ａ）に示すように、メインＣＰＵ３０は、ベンダ定義のライトコマンドを発行してレジスタ６２に書き込む。すると処理部１２０は、このベンダ定義のライトコマンドを解析する。そして処理部１２０が、データの宛先がマスタ側のＨＤＤ４０であると、解析結果に基づき判断すると、ホスト側Ｉ／Ｆ７０は、ＤＥＶビットがマスタ側に設定されたＡＴＡ規格のライトコマンドを発行する。するとマスタ側のＨＤＤ４０が、発行されたコマンドを受け取る。
【００９０】
コマンド発行後に、図７（Ｂ）に示すように、メインＣＰＵ３０が、仮想ＨＤＤとして機能するデータバッファ１０２にデータを書き込むと、ホスト側Ｉ／Ｆ７０が、書き込まれたデータをＡＴＡＢＵＳ２に出力する。すると、マスタ側のＨＤＤ４０が、このデータを受け取り、ハードディスクに書き込む。
【００９１】
データ転送の完了後に、図７（Ｃ）に示すように、ＡＴＡＢＵＳ２を介してマスタ側のＨＤＤ４０からホスト側Ｉ／Ｆ７０がステータスをリードすると、処理部１２０は、リードしたステータスに対応するステータスを、デバイス側Ｉ／Ｆ６０、ＡＴＡＢＵＳ１を介してメインＣＰＵ３０に返信する。
【００９２】
一方、図８（Ａ）では、メインＣＰＵ３０は、ベンダ定義のライトコマンドを発行してレジスタ６２に書き込み、処理部１２０が、書き込まれたコマンドを解析し、データの宛先がスレーブ側のＨＤＤ４０であると、解析結果に基づき判断している。するとホスト側Ｉ／Ｆ７０は、ＤＥＶビットがスレーブ側に設定されたＡＴＡ規格のライトコマンドを発行する。するとスレーブ側のＨＤＤ４１が、発行されたコマンドを受け取る。
【００９３】
コマンド発行後に、図８（Ｂ）に示すように、メインＣＰＵ３０が、仮想ＨＤＤとして機能するデータバッファ１０２にデータを書き込むと、ホスト側Ｉ／Ｆ７０が、書き込まれたデータをＡＴＡＢＵＳ２に出力する。すると、スレーブ側のＨＤＤ４１が、このデータを受け取り、ハードディスクに書き込む。
【００９４】
データ転送の完了後に、図８（Ｃ）に示すように、ＡＴＡＢＵＳ２を介してスレーブ側のＨＤＤ４１からホスト側Ｉ／Ｆ７０がステータスをリードすると、処理部１２０は、リードしたステータスに対応するステータスを、デバイス側Ｉ／Ｆ６０、ＡＴＡＢＵＳ１を介してメインＣＰＵ３０に返信する。
【００９５】
このように本実施形態のエミュレーション処理によれば、ホスト側Ｉ／Ｆ７０への２台のＨＤＤ４０、４１の接続等が可能になり、利便性を向上できる。
【００９６】
以上の本実施形態のデータ転送制御装置５０によれば、図１（Ａ）（Ｂ）の第１、第２の比較例に比べて以下の利点がある。
【００９７】
第１の比較例では、メインＣＰＵ５３０上で動作するファームウェアにＵＳＢのプロトコル制御のためのプログラム等を組み込む必要があり、電子機器の設計作業やサポート業務が繁雑化するなどの問題があった。
【００９８】
これに対して図２に示す本実施形態では、メインＣＰＵ３０とデータ転送制御装置５０はＡＴＡインターフェースにより通信し、データ転送制御装置５０のデータ転送は、ＡＴＡＢＵＳ１を介してレジスタ６２に書き込まれるベンダ定義コマンドにより制御される。そしてＵＳＢのプロトコル制御については処理部１２０により実行される。従って、メインＣＰＵ３０のファームウェアにＵＳＢのプロトコル制御のためのプログラムを組み込む必要がなく、電子機器２０の設計作業やデータ転送制御装置５０のサポート作業の負担を軽減できる。
【００９９】
即ちＡＴＡインターフェースは従来から慣用されており、電子機器２０の設計者も精通しているため、メインＣＰＵ３０とデータ転送制御装置５０との間の接続は確実に行うことができる。そして例えばＨＤＤ４０のデータをＵＳＢＩ／Ｆ８０を介してＰＣ１０に転送する場合には、メインＣＰＵ３０は、このような転送方向でのデータ転送を指示するベンダ定義コマンドを発行し、レジスタ６２に書き込むだけで済み、ＵＳＢＩ／Ｆ８０のプロトコル制御については関与する必要がない。即ちメインＣＰＵ３０のファームウェアのノーマルのＡＴＡドライバに対して、ベンダ定義コマンドの処理のための制御ドライバを付加するだけで済む。従ってメインＣＰＵ３０の処理負荷を軽減できると共に、電子機器２０の設計作業の負担も軽減できる。またデータ転送制御装置５０のメーカは、ベンダ定義コマンドやベンダ定義コマンドの処理のための制御ドライバについてのサポートだけを行えば済むため、サポート業務の負担も軽減できる。
【０１００】
また本実施形態によれば、データ転送制御装置５０の将来の機能拡張や商品展開を容易化できるという利点がある。例えば図３（Ｂ）の変形例のように第１〜第ＫのインターフェースとしてＳＤＩ／Ｆ９０を追加した場合にも、ＳＤのプロトコル制御プログラムをメインＣＰＵ３０のファームウェアに組み込む必要が無く、ＳＤのデータ転送は、ベンダ定義コマンドと処理部１２０の処理により実現される。従ってＳＤＩ／Ｆ９０を追加しても、電子機器２０の設計作業の負担やデータ転送制御装置５０のサポート業務の負担はそれほど増加しない。従って、ＳＤやシリアルＡＴＡやＣＥ−ＡＴＡなどの新しい規格のインターフェースを、データ転送制御装置５０に容易に組み込むことができ、データ転送制御装置５０の多様な機能拡張や商品展開を実現できる。また、このような種々の新規格のインターフェースをデータ転送制御装置５０に組み込むことで、データ転送制御装置５０の商品価値も向上できる。
【０１０１】
また図１（Ｂ）の第２の比較例では、物理層回路である高速アナログ回路をメインＣＰＵ５３０に組み込む必要があり、メインＣＰＵ５３０の設計期間が長期化したり歩留まりが低下するなどの問題があった。
【０１０２】
これに対して図２の本実施形態では、メインＣＰＵ３０には、従来から慣用されているＡＴＡのホスト側Ｉ／Ｆ３２を設けるだけで済む。そしてＡＴＡのインターフェースは、ＣＭＯＳ（ＴＴＬ）の電圧レベルのロジック回路により実現できるため、メインＣＰＵ３０の設計期間の長期化や歩留まりの低下などの問題を防止できる。
【０１０３】
またＵＳＢのインターフェースは、回路技術のノウハウの優劣によって、実際のデータ転送レートに差が生じてしまう。これに対してＡＴＡのインターフェースは、回路技術のノウハウの優劣によって転送レートにそれほど差が生じず、その転送レートも、メインＣＰＵ３０とデータ転送制御装置５０の間のインターフェースとしては、十分に高速である。従って、メインＣＰＵ３０、ＨＤＤ４０、ＰＣ１０間での高速なデータ転送も実現できる。
【０１０４】
６．スイッチング回路
図９（Ａ）に本実施形態のスイッチング回路１１０の構成例を示す。図９（Ａ）に示すようにスイッチング回路１１０は、ＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線との間の接続（導通）、非接続（非導通）を行うスイッチング素子１１２-1、１１２-2、１１２-3・・・（第１〜第Ｎのスイッチング素子）を含む。そしてレジスタ６２にハードワイヤードモードの設定コマンドが書き込まれ、処理部１２０（スイッチング信号生成部）からのスイッチング信号がアクティブになると、スイッチング素子１１２-1、１１２-2、１１２-3・・・はオンになる。これにより、ＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線との間が接続される。こうすることで、メインＣＰＵ３０から見て、ホスト側Ｉ／Ｆ３２にＨＤＤ４０があたかも直接接続されているかのように見えるハードワイヤードモードを実現できる。
【０１０５】
ここで、スイッチング回路１１０のスイッチング素子１１２-1、１１２-2、１１２-3・・・の接続は、図９（Ｂ）のような接続構成にすることが望ましい。
【０１０６】
図９（Ｂ）において、デバイス側パッド５８-1、５８-2、５８-3・・・（広義には第１〜第Ｎのデバイス側パッド）は、ＡＴＡＢＵＳ１の信号線（第１〜第Ｎの信号線）に接続されるパッド（電極）であり、デバイス側Ｉ／Ｆ６０用のパッドである。即ちデバイス側パッド５８-1、５８-2、５８-3・・・からの信号線は、デバイス側Ｉ／Ｆ６０用のＩ／Ｏセル５９-1、５９-2、５９-3・・・（広義には第１〜第Ｎのデバイス側Ｉ／Ｏセル）に接続される。
【０１０７】
またホスト側パッド６８-1、６８-2、６８-3・・・（広義には第１〜第Ｎのホスト側パッド）は、ＡＴＡＢＵＳ２の信号線（第１〜第Ｎの信号線）に接続されるパッドであり、ホスト側Ｉ／Ｆ７０用のパッドである。即ちホスト側パッド６８-1、６８-2、６８-3・・・からの信号線は、ホスト側Ｉ／Ｆ７０用のＩ／Ｏセル６９-1、６９-2、６９-3・・・（広義には第１〜第Ｎのホスト側Ｉ／Ｏセル）に接続される。なおデバイス側Ｉ／Ｏセル５９-1、５９-2、５９-3・・・や、ホスト側Ｉ／Ｏセル６９-1、６９-2、６９-3・・・は、入力用Ｉ／Ｏセル、出力用Ｉ／Ｏセル、入出力用Ｉ／Ｏセルなどである。
【０１０８】
そして図９（Ｂ）では、スイッチング回路１１０が有するスイッチング素子１１２-1、１１２-2、１１２-3・・・は、デバイス側パッド５８-1、５８-2、５８-3・・・からの信号線と、ホスト側パッド６８-1、６８-2、６８-3・・・からの信号線との間の接続、非接続を行う。即ちデバイス側パッド５８-1、５８-2、５８-3・・・と、デバイス側Ｉ／Ｏセル５９-1、５９-2、５９-3・・・の間の信号線と、ホスト側パッド６８-1、６８-2、６８-3・・・と、ホスト側Ｉ／Ｏセル６９-1、６９-2、６９-3・・・の間の信号線との接続、非接続を行う。
【０１０９】
図９（Ｂ）の構成によれば、ＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線をショートパスで接続できる。従ってＡＴＡ信号の信号遅延を小さくでき、ハードワイヤードモード時の転送レートの低下を最小限に抑えるか、または転送レートを低下させず維持することが可能になる。特にＡＴＡのデータのリード動作の場合には、信号ＤＩＯＲがアクティブになった後に、データ信号ＤＤが有効になる。従って図９（Ｂ）のようにデバイス側パッド５８-1、５８-2、５８-3・・・とホスト側パッド６８-1、６８-2、６８-3・・・を直結して信号遅延を抑える手法は、転送レートの低下防止のために有効になる。
【０１１０】
なお図１０の変形例のような接続を行うことも可能である。図１０では、スイッチング素子１１２-1、１１２-2、１１２-3・・・は、デバイス側Ｉ／Ｏセル５９-1、５９-2、５９-3・・・と、デバイス側Ｉ／Ｆ６０の間の信号線と、ホスト側Ｉ／Ｏセル６９-1、６９-2、６９-3・・・と、ホスト側Ｉ／Ｆ７０の間の信号線との接続、非接続を行う。図１０の変形例では、ＡＴＡＢＵＳ１の信号線とＡＴＡＢＵＳ２の信号線の間の信号遅延に、Ｉ／Ｏセル５９-1、５９-2、５９-3・・・や、Ｉ／Ｏセル６９-1、６９-2、６９-3・・・での信号遅延が付加されてしまう。従って、図９（Ｂ）に比べて信号遅延が大きくなり、ハードワイヤードモード時の転送レートが低下してしまう。
【０１１１】
しかしながら、図１０の構成では、スイッチング素子１１２-1、１１２-2、１１２-3・・・に接続される信号線のマイグレーションや、スイッチング素子１１２-1、１１２-2、１１２-3・・・の静電気破壊についてはそれほど問題にならない。従って、転送レートの低下がそれほど問題にならない場合には、図１０の構成を採用することも可能である。
【０１１２】
７．ＡＴＡのデバイス側Ｉ／Ｆ、ホスト側Ｉ／Ｆ
図１１（Ａ）にＡＴＡのデバイス側Ｉ／Ｆ６０の構成例を示す。図１１（Ａ）に示すようにデバイス側Ｉ／Ｆ６０は、タスクレジスタ２００、ＭＤＭＡ／ＰＩＯ制御部２０２、ＵｌｔｒａＤＭＡ制御部２０４、データバッファ２０６、転送制御部２０８を含む。
【０１１３】
タスクレジスタ２００は、ＡＴＡ（ＩＤＥ）で規格化されているレジスタであり、図５に示すようなコマンドブロックレジスタや、コントロールブロックレジスタを含む。ここでコマンドブロックレジスタは、コマンドを発行したりステータスを読み込むのに使用されるレジスタである。またコントロールブロックレジスタは、デバイスをコントロールしたり、代替えステータスを読み込むのに使用されるレジスタである。
【０１１４】
ＭＤＭＡ／ＰＩＯ制御部２０２は、ＡＴＡのマルチワードＤＭＡ転送やＰＩＯ転送についてのデバイス側の制御処理を行う。ＵｌｔｒａＤＭＡ制御部２０４は、ＡＴＡのＵｌｔｒａＤＭＡ転送についてのデバイス側の制御処理を行う。データバッファ２０６（ＦＩＦＯ）は、データ転送の転送レートの差を調整（緩衝）するためのバッファである。転送制御部２０８は後段の回路（転送コントローラ１００、データバッファ１０２）との間のデータ転送を制御する。
【０１１５】
図１１（Ｂ）にＡＴＡのホスト側Ｉ／Ｆ７０の構成例を示す。図１１（Ｂ）に示すようにホスト側Ｉ／Ｆ７０は、タスクレジスタ・アクセスアービタ２１０、ＭＤＭＡ／ＰＩＯ制御部２１２、ＵｌｔｒａＤＭＡ制御部２１４、データバッファ２１６、転送制御部２１８を含む。
【０１１６】
タスクレジスタ・アクセスアービタ２１０は、デバイス側に設けられるタスクレジスタ（図１１（Ａ）の２００）に対するアクセスの調停処理を行う。ＭＤＭＡ／ＰＩＯ制御部２１２は、ＡＴＡのマルチワードＤＭＡ転送やＰＩＯ転送についてのホスト側の制御処理を行う。ＵｌｔｒａＤＭＡ制御部２１４は、ＡＴＡのＵｌｔｒａＤＭＡ転送についてのホスト側の制御処理を行う。データバッファ２１６（ＦＩＦＯ）は、データ転送の転送レートの差を調整（緩衝）するためのバッファである。転送制御部２１８は後段の回路（転送コントローラ１００、データバッファ１０２）との間のデータ転送を制御する。
【０１１７】
次に、ＡＴＡのデータ転送について図１２（Ａ）〜図１３（Ｂ）の信号波形を用いて説明する。図１２（Ａ）〜図１３（Ｂ）においてＣＳ［１：０］は、ＡＴＡの各レジスタにアクセスするために使用するチップセレクト信号である。ＤＡ［２：０］は、データ又はデータポートにアクセスするためのアドレス信号である。ＤＭＡＲＱ、ＤＭＡＣＫは、ＤＭＡ転送に使用される信号である。データ転送の準備が整った時にデバイス側がＤＭＡＲＱをアクティブ（アサート）にし、これに応答して、ホスト側がＤＭＡＣＫをアクティブにする。
【０１１８】
ＤＩＯＷ（ＳＴＯＰ）は、レジスタ又はデータポートの書き込み時に使用するライト信号である。なお、ＵｒｔｒａＤＭＡ転送中はＳＴＯＰ信号として機能する。ＤＩＯＲ（ＨＤＭＡＲＤＹ、ＨＳＴＲＯＢＥ）は、レジスタ又はデータポートの読み出し時に使用するリード信号である。なお、ＵｒｔｒａＤＭＡ転送中はＨＤＭＡＲＤＹ、ＨＳＴＲＯＢＥ信号として機能する。ＩＯＲＤＹ（ＤＤＭＡＲＤＹ、ＤＳＴＲＯＢＥ）は、デバイス側のデータ転送の準備が整っていない時のウェイト信号等に使用される。なお、ＵｒｔｒａＤＭＡ転送中はＤＤＭＡＲＤＹ、ＤＳＴＲＯＢＥ信号として機能する。
【０１１９】
ＩＮＴＲＱは、デバイス側が、ホスト側に対して割り込みを要求するために使用される信号である。このＩＮＴＲＱがアクティブになった後、ホスト側がデバイス側のタスクレジスタのステータスレジスタの内容を読むと、所定時間後にデバイス側はＩＮＴＲＱを非アクティブ（ネゲート）にする。このＩＮＴＲＱを用いることで、デバイス側は、コマンド処理の終了をホスト側に通知できる。
【０１２０】
図１２（Ａ）、（Ｂ）は、ＰＩＯ（Parallel I/O）リード、ＰＩＯライト時の信号波形例である。ＡＴＡのステータスレジスタのリードは図１２（Ａ）のＰＩＯリードにより行い、コマンドレジスタへのライトは図１２（Ｂ）のＰＩＯライトにより行う。例えば、メインＣＰＵ３０によるベンダ定義のコマンドの発行は、ＰＩＯライトにより実現できる。
【０１２１】
図１３（Ａ）、（Ｂ）は、ＤＭＡリード、ＤＭＡライト時の信号波形例である。データ転送の準備ができると、デバイス側が、ＤＭＡＲＱをアクティブにする。そして、それを受けて、ホスト側が、ＤＭＡＣＫをアクティブにして、ＤＭＡ転送を開始する。その後、ＤＩＯＲ（リード時）又はＤＩＯＷ（ライト時）を使用して、データＤＤ［１５：０］のＤＭＡ転送を行う。
【０１２２】
８．ＵＳＢＩ／Ｆ
ＵＳＢでは、図１４（Ａ）に示すようなエンドポイント（ＥＰ０〜１５）がＵＳＢデバイス側に用意される。またＵＳＢでは、転送（transfer）のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送などが定義されており、各転送は一連のトランザクションにより構成される。そしてトランザクションは図１４（Ｂ）に示すように、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
【０１２３】
ＯＵＴトランザクションでは、図１４（Ｃ）に示すように、まず、ＵＳＢホストがＵＳＢデバイスに対してＯＵＴトークン（トークパケット）を発行する。次に、ＵＳＢホストはＵＳＢデバイスに対してＯＵＴデータ（データパケット）を送信する。そして、ＵＳＢデバイスは、ＯＵＴデータの受信に成功すれば、ＵＳＢホストに対してＡＣＫ（ハンドシェークパケット）を送信する。一方、ＩＮトランザクションでは、図１４（Ｄ）に示すように、まず、ＵＳＢホストがＵＳＢデバイスに対してＩＮトークンを発行する。そしてＩＮトークンを受信したＵＳＢデバイスは、ＵＳＢホストに対してＩＮデータを送信する。そしてＵＳＢホストは、ＩＮデータの受信に成功すると、ＵＳＢデバイスに対してＡＣＫを送信する。
【０１２４】
なお”Ｄ←Ｈ”は、ＵＳＢホストからＵＳＢデバイスに対して情報が転送されることを意味し、”Ｄ→Ｈ”は、ＵＳＢデバイスからＵＳＢホストに対して情報が転送されることを意味する。
【０１２５】
次に、ＵＳＢのバルクオンリートランスポートのプロトコルについて説明する。ハードディスクドライブや光ディスクドライブなどの大容量記憶装置は、マスストレージと呼ばれるクラスに属する。このマスストレージクラスには、バルクオンリートランスポートというプロトコルが規格化されている。
【０１２６】
バルクオンリートランスポートでは、バルクＩＮ、バルクＯＵＴの２つのエンドポイントを用いてパケット転送が行われる。即ち、コマンドには、ＣＢＷ（Command Block Wrapper）と呼ばれる３１バイトのデータが使用され、バルクＯＵＴのエンドポイントを用いて転送される。データ転送には、転送方向に応じてバルクＩＮ、バルクＯＵＴのエンドポイントが使用される。コマンドに対するステータスには、ＣＳＷ（Command Status Wrapper）と呼ばれる１３バイトのデータが使用され、バルクＩＮのエンドポイントを用いて転送される。
【０１２７】
次に、バルクオンリートランスポートの送受信処理（プロトコル制御）について、図１５（Ａ）、（Ｂ）を用いて説明する。図１５（Ａ）に示すように、ＵＳＢホストがＵＳＢデバイスにデータを送信する場合には、まずＵＳＢホストがＣＢＷをＵＳＢデバイスに送信するコマンドトランスポートが行われる。具体的には、ＵＳＢホストが、エンドポイントＥＰ１を指定するトークンパケットをＵＳＢデバイスに送信し、次に、ＣＢＷをＵＳＢデバイスのエンドポイントＥＰ１に送信する。このＣＢＷはライトコマンドを含む。そして、ＵＳＢデバイスからＵＳＢホストにＡＣＫのハンドシェークパケットが返却されると、コマンドトランスポートが終了する。
【０１２８】
コマンドトランスポートが終了するとデータトランスポートに移行する。このデータトランスポートでは、まずＵＳＢホストが、エンドポイントＥＰ１を指定するトークンパケットをＵＳＢデバイスに送信し、次に、ＯＵＴデータをＵＳＢデバイスのエンドポイントＥＰ１に送信する。そして、ＵＳＢデバイスからＵＳＢホストにＡＣＫのハンドシェークパケットが返却されると、１つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、ＣＢＷで指定されるデータ長の分だけデータが送信されると、データトランスポートが終了する。
【０１２９】
データトランスポートが終了するとステータストランスポートに移行する。このステータストランスポートでは、まず、ＵＳＢホストが、エンドポイントＥＰ２を指定するトークンパケットをＵＳＢデバイスに送信する。すると、ＵＳＢデバイスが、エンドポイントＥＰ２にあるＣＳＷをＵＳＢホストに送信する。そして、ＵＳＢホストからＵＳＢデバイスにＡＣＫのハンドシェークパケットが返却されると、ステータストランスポートが終了する。
【０１３０】
ＵＳＢホストがＵＳＢデバイスからデータを受信する場合は、図１５（Ｂ）に示すように処理が行われる。図１５（Ｂ）が図１５（Ａ）と異なるのは、コマンドトランスポートのＣＢＷがリードコマンドを含む点と、データトランスポートにおいてＩＮデータの転送が行われる点である。
【０１３１】
図１６にＵＳＢＩ／Ｆ８０の構成例を示す。ＵＳＢＩ／Ｆ８０は、トランシーバ２２０、転送コントローラ２５０、データバッファ２９０を含む。
【０１３２】
トランシーバ２２０（デュアルトランシーバ）は、差動信号（ＤＰ、ＤＭ）を用いてＵＳＢ（広義にはバス或いはシリアルバス）のデータを送受信するための回路であり、ホストトランシーバ２３０、デバイストランシーバ２４０を含む。
【０１３３】
ホストトランシーバ２３０は、アナログフロントエンド回路（物理層回路）及び高速ロジック回路を有し、ＵＳＢのＨＳモード（４８０Ｍｂｐｓ）、ＦＳモード（１２Ｍｂｐｓ）、ＬＳモード（１．５Ｍｂｐｓ）をサポートする。デバイストランシーバ２４０は、アナログフロントエンド回路（物理層回路）及び高速ロジック回路を有し、ＵＳＢのＨＳモード、ＦＳモードをサポートする。このデバイストランシーバ２４０としてはＵＴＭＩ（USB2.0 Transceiver Macrocell Interface）仕様に準拠した回路を用いることができる。
【０１３４】
転送コントローラ２５０は、ＵＳＢを介したデータ転送を制御するためのコントローラであり、トランザクション層やリンク層などのデータ転送制御を行う。この転送コントローラ２５０は、ホストコントローラ２６０、デバイスコントローラ２７０、ポートセレクタ２８０を含む。なおこれらの一部を省略する構成としてもよい。
【０１３５】
ホストコントローラ２６０（ホストSerial Interface Engine）は、ホストモード時のデータ転送を制御する。具体的にはホストコントローラ２６０は、トランザクションのスケジューリング（発行）やトランザクションの管理やパケットの生成＆解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを生成する。更にバスの接続・切断状態の検出やＶＢＵＳの制御などを行う。
【０１３６】
デバイスコントローラ２７０（デバイスSerial Interface Engine）は、デバイスモード時のデータ転送を制御する。具体的にはデバイスコントローラ２７０は、トランザクションの管理やパケットの生成＆解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを制御する。
【０１３７】
ポートセレクタ２８０は、ホストモードとデバイスモードのいずれかを選択して有効にするためのセレクタである。例えばレジスタ等の設定によりホストモードが選択されると、ポートセレクタ２８０はホストコントローラ２６０、ホストトランシーバ２３０を選択（イネーブル）する。一方、レジスタ等の設定によりデバイスモードが選択されると、ポートセレクタ２８０はデバイスコントローラ２７０、デバイストランシーバ２４０を選択（イネーブル）する。
【０１３８】
データバッファ２９０（ＦＩＦＯ、パケットバッファ）は、ＵＳＢ（シリアルバス）を介して転送されるデータ（送信データ、受信データ）を一時的に格納（バッファリング）するためのバッファである。このデータバッファ２９０は、ＲＡＭなどのメモリにより実現できる。
【０１３９】
なお、転送コントローラ２５０やデータバッファ２９０の一部の機能を、図２の転送コントローラ１００やデータバッファ１０２により実現してもよい。また図１６では、ホスト動作とデバイス動作の両方の動作を行うＵＳＢＩ／Ｆ８０の例を示したが、デバイス動作だけを行うものであってもよい。
【０１４０】
９．詳細な処理
次に、本実施形態の詳細な処理について図１７、図１８のフローチャートを用いて説明する。図１７は、ハードワイヤードモード時の詳細な処理を示すフローチャートである。
【０１４１】
まず、ＡＴＡのデバイス側Ｉ／Ｆが、タスクレジスタのハードワイヤードモードのイネーブルビットをオンにするコマンド（ベンダ定義コマンド）を、メインＣＰＵから受信する（ステップＳ１）。すると処理部（スイッチング信号生成部）が、デバイス側パッドとホスト側パッドを接続するスイッチング素子をオンにする（ステップＳ２）。そしてメインＣＰＵがハードワイヤードモードでＨＤＤにデータをライトする（ステップＳ３）。
【０１４２】
次に、ＡＴＡのデバイス側Ｉ／Ｆが、タスクレジスタのハードワイヤードモードのイネーブルビットをオフにするコマンドを、メインＣＰＵから受信する（ステップＳ４）。すると処理部が、デバイス側パッドとホスト側パッドを接続するスイッチング素子をオフにする（ステップＳ５）。
【０１４３】
次に、ＵＳＢＩ／ＦがＰＣ（ＵＳＢホスト）からＣＢＷを受信する（ステップＳ６）。即ちユーザがＰＣの画面上で、ＨＤＤのデータをＰＣに移動又はコピーする操作を行うと、ＰＣがＵＳＢＩ／Ｆに対して、リードコマンドを含むＣＢＷを送信する。すると、ＡＴＡのホスト側Ｉ／ＦがＨＤＤにデータのリードコマンドを発行する（ステップＳ７）。そしてＨＤＤからホスト側Ｉ／Ｆへのデータ転送を開始する（ステップＳ８）。またＵＳＢＩ／ＦからＰＣへのＩＮデータの転送を開始する（ステップＳ９）。
【０１４４】
そして、両方のデータ転送が全て終了したか否かが判断され（ステップＳ１０）、終了した場合には、ホスト側Ｉ／ＦがＨＤＤにステータスのリードコマンドを発行し、ステータスをリードする（ステップＳ１１）。そしてリードしたステータスをＵＳＢＩ／ＦのデータバッファのＣＳＷ領域にライトする（ステップＳ１２）。そしてＰＣがＵＳＢＩ／ＦからＣＳＷを受信して（ステップＳ１３）、転送処理が終了する。
【０１４５】
図１８はエミュレーションによるデータ転送の詳細な処理を示すフローチャートである。まず、ＡＴＡのデバイス側Ｉ／ＦがメインＣＰＵからコマンドを受信する（ステップＳ２１）。すると、受信したコマンドを処理部が解析し、受信したコマンドに対応するコマンドをホスト側Ｉ／ＦがＨＤＤに発行する（ステップＳ２２）。このコマンド発行はＡＴＡのＰＩＯ転送により行われる。そしてメインＣＰＵからデバイス側Ｉ／Ｆへのデータ転送が開始する（ステップＳ２３）。またホスト側Ｉ／ＦからＨＤＤへのデータ転送も開始する（ステップＳ２４）。
【０１４６】
次に、両方のデータ転送が全て終了したか否かが判断され（ステップＳ２５）、終了した場合には、ホスト側Ｉ／ＦがＨＤＤにステータスのリードコマンドを発行し、ステータスをリードする（ステップＳ２６）。そして、リードしたステータスを処理部が解析し、リードしたステータスに対応するステータスを、デバイス側Ｉ／Ｆのタスクレジスタにライトする（ステップＳ２７）。すると、メインＣＰＵがタスクレジスタからステータスをリードする（ステップＳ２８）。
【０１４７】
次に、図１７のステップＳ６〜Ｓ１３と同様の処理が行われ（ステップＳ２９〜Ｓ３６）、ＨＤＤに書き込まれたデータがＰＣに転送される。
【０１４８】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（ＡＴＡホスト、ＡＴＡデバイス、第１のインターフェース等）と共に記載された用語（メインＣＰＵ、ＨＤＤ、ＵＳＢＩ／Ｆ等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またデータ転送制御装置や電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。例えば第１のＡＴＡバスや第２のＡＴＡバスは、シリアルＡＴＡやＣＥ−ＡＴＡのバスであってもよい。また第１〜第Ｋのインターフェースは、ＵＳＢ、ＩＥＥＥ１３９４、ＳＤ以外のインターフェースであってもよく、例えばデータの受信及び送信の少なくとも一方を行う物理層回路を含む様々なインターフェースを採用できる。
【図面の簡単な説明】
【０１４９】
【図１】図１（Ａ）（Ｂ）は第１、第２の比較例の説明図。
【図２】本実施形態のデータ転送制御装置、電子機器の構成例。
【図３】図３（Ａ）（Ｂ）は本実施形態の変形例。
【図４】図４（Ａ）（Ｂ）（Ｃ）は本実施形態の動作の説明図。
【図５】ＡＴＡのレジスタの説明図。
【図６】図６（Ａ）（Ｂ）（Ｃ）は本実施形態のエミュレーション処理の説明図。
【図７】図７（Ａ）（Ｂ）（Ｃ）は本実施形態のエミュレーション処理の説明図。
【図８】図８（Ａ）（Ｂ）（Ｃ）は本実施形態のエミュレーション処理の説明図。
【図９】図９（Ａ）（Ｂ）はスイッチング回路の構成例。
【図１０】スイッチング回路の構成例
【図１１】図１１（Ａ）（Ｂ）はＡＴＡのデバイス側Ｉ／Ｆ、ホスト側Ｉ／Ｆの構成例。
【図１２】図１２（Ａ）（Ｂ）はＡＴＡのＰＩＯ転送の信号波形例。
【図１３】図１３（Ａ）（Ｂ）はＡＴＡのＤＭＡ転送の信号波形例。
【図１４】図１４（Ａ）〜（Ｄ）はＵＳＢのデータ転送の説明図。
【図１５】図１５（Ａ）（Ｂ）はバルクオンリートランスポートの説明図。
【図１６】ＵＳＢＩ／Ｆの構成例。
【図１７】本実施形態の詳細な動作を説明するためのフローチャート。
【図１８】本実施形態の詳細な動作を説明するためのフローチャート。
【符号の説明】
【０１５０】
ＡＴＡＢＵＳ１  第１のＡＴＡバス、ＡＴＡＢＵＳ２  第２のＡＴＡバス、
ＡＴＡＢＵＳ２  第３のＡＴＡバス、
１０  ＰＣ（ＵＳＢホスト）、２０  電子機器、３０  メインＣＰＵ（ＡＴＡホスト）、
３２  ＡＴＡのホスト側Ｉ／Ｆ、４０、４１  ＨＤＤ（ＡＴＡデバイス）、
５０  データ転送制御装置、５８  デバイス側パッド、５９  デバイス側Ｉ／Ｏセル、
６０  ＡＴＡのデバイス側Ｉ／Ｆ、６２  レジスタ、６８  ホスト側パッド、
６９  ホスト側Ｉ／Ｏセル、７０、７１  ＡＴＡのホスト側Ｉ／Ｆ、
８０  ＵＳＢＩ／Ｆ、９０  ＳＤＩ／Ｆ、１００  転送コントローラ、
１０２  データバッファ、１０４  ポートセレクタ、１１０  スイッチング回路、
１１２  スイッチング素子、１２０  処理部（ＣＰＵ等）、１３０  イベント通知部、
【図１】
0004404023.tif 000002
【図２】
0004404023.tif 000003
【図３】
0004404023.tif 000004
【図４】
0004404023.tif 000005
【図５】
0004404023.tif 000006
【図６】
0004404023.tif 000007
【図７】
0004404023.tif 000008
【図８】
0004404023.tif 000009
【図９】
0004404023.tif 000010
【図１０】
0004404023.tif 000011
【図１１】
0004404023.tif 000012
【図１２】
0004404023.tif 000013
【図１３】
0004404023.tif 000014
【図１４】
0004404023.tif 000015
【図１５】
0004404023.tif 000016
【図１６】
0004404023.tif 000017
【図１７】
0004404023.tif 000018
【図１８】
0004404023.tif 000019