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