(57)【要約】【課題】ＵＳＢ装置を認識することができない等の問題を防止することが可能なコントローラ等を提供する。【解決手段】ＵＳＢコントローラ４０は、ＵＳＢ装置１０の制御に関する時間を決定するための情報を外部から入力することが可能なレジスタ１３０と、レジスタ１３０に入力された情報に基づいてＵＳＢ装置１０の制御に関する時間を決定する処理部１２０と、ＵＳＢを介してＵＳＢ装置１０に接続され、処理部１２０によって決定された時間に応じたタイミングでＵＳＢに信号又はデータを出力するＵＳＢインタフェース８０とを含む。【選択図】図４
2009048444.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信を行うためのコントローラが前記ＵＳＢデバイスを制御するために実行する方法であって、
前記ＵＳＢデバイスの制御に関する少なくとも１つの時間を決定するための情報の入力を外部から受け、前記情報に基づいて前記少なくとも１つの時間を決定し、決定した前記少なくとも１つの時間に応じたタイミングでＵＳＢに信号又はデータを出力することにより前記ＵＳＢデバイスの制御を行う、ＵＳＢデバイスの制御方法。
【請求項２】
ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信を行うためのコントローラであって、
前記ＵＳＢデバイスの制御に関する少なくとも１つの時間を決定するための情報を前記コントローラの外部から入力されることが可能な情報入力部と、
前記情報入力部に入力された前記情報に基づいて前記少なくとも１つの時間を決定する処理部と、
ＵＳＢを介して前記ＵＳＢデバイスに接続され、前記処理部によって決定された前記少なくとも１つの時間に応じたタイミングでＵＳＢに信号又はデータを出力するＵＳＢインタフェース部と、
を含む、コントローラ。
【請求項３】
請求項２において、
前記処理部が、
前記ＵＳＢインタフェース部を制御するドライバプログラムを実行するＣＰＵコアを含み、前記ＣＰＵコアが、前記情報入力部に入力された前記情報に基づいて前記少なくとも１つの時間を決定するプログラムを実行する、コントローラ。
【請求項４】
請求項２又は３において、
前記情報入力部が、
前記コントローラの設定及び／又は制御に関する情報を外部から書き込むためのレジスタを含み、
前記少なくとも１つの時間を決定するための少なくとも１つのデータが前記レジスタに外部から書き込まれ、
前記処理部が、
前記レジスタに書き込まれた前記少なくとも１つのデータに基づいて前記少なくとも１つの時間を決定する、コントローラ。
【請求項５】
請求項４において、
前記レジスタに前記少なくとも１つの時間を表す少なくとも１つの値が書き込まれ、
前記処理部が、
前記少なくとも１つの値によって表される時間を前記少なくとも１つの時間として決定する、コントローラ。
【請求項６】
請求項４において、
前記少なくとも１つの時間を表す少なくとも１つの値をそれぞれ含む複数のテーブルを記憶する記憶部を更に含み、
前記レジスタに前記複数のテーブルのいずれかを特定するデータが書き込まれ、
前記処理部が、
前記複数のテーブルの内の前記データによって特定されるテーブルに含まれている前記少なくとも１つの値によって表される時間を前記少なくとも１つの時間として決定する、コントローラ。
【請求項７】
請求項２又は３において、
前記情報入力部が、
前記少なくとも１つの時間を決定するための少なくとも１つの信号を外部から入力することが可能な信号入力回路を含み、
前記処理部が、
前記信号入力回路に入力された前記少なくとも１つの信号に基づいて前記少なくとも１つの時間を決定する、コントローラ。
【請求項８】
請求項７において、
前記少なくとも１つの時間を表す少なくとも１つの値をそれぞれ含む複数のテーブルを記憶する記憶部を更に含み、
前記信号入力回路に前記複数のテーブルのいずれかを特定する前記少なくとも１つの信号が入力され、
前記処理部が、
前記複数のテーブルの内の前記少なくとも１つの信号によって特定されるテーブルに含まれている前記少なくとも１つの値によって表される時間を前記少なくとも１つの時間として決定する、コントローラ。
【請求項９】
請求項２乃至８のいずれかにおいて、
前記少なくとも１つの時間が、前記ＵＳＢデバイスを初期化するための制御に関する時間及び／又は前記ＵＳＢデバイスをレジュームさせる制御に関する時間を含む、コントローラ。
【請求項１０】
請求項２乃至９のいずれかにおいて、
前記少なくとも１つの時間が、定常的信号、周期的信号又はデータをＵＳＢに出力し及び／又は出力を継続する時間、若しくは或る信号又はデータをＵＳＢに出力してから次の信号又はデータをＵＳＢに出力するまでの時間を含む、コントローラ。
【請求項１１】
請求項１乃至１０のいずれかに記載のコントローラと、
バスを介して前記コントローラに接続されるホストＣＰＵと、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信を行うことによりＵＳＢデバイスを制御する方法、ＵＳＢデバイスを制御するコントローラ、そのようなコントローラを含む電子機器に関する。
【背景技術】
【０００２】
近年、ＵＳＢ（Universal Serial Bus）が高速シリアルインターフェースとして脚光を浴びている。ＵＳＢでは、ＵＳＢホスト側装置とＵＳＢデバイス側装置との間で信号又はデータの送受信が行われる。
【０００３】
ＵＳＢ規格においては、ＵＳＢホスト側装置がＵＳＢデバイス側装置を認識する等のために、ＵＳＢホスト側装置が定常的信号、周期的信号又はデータをＵＳＢに出力し及び／又は出力を継続する時間、若しくは或る信号又はデータをＵＳＢに出力してから次の信号又はデータをＵＳＢに出力するまでの種々の時間が規定されている。
【０００４】
しかしながら、現実には、ＵＳＢホスト側装置がＵＳＢ規格に規定されている時間に従って信号又はデータをＵＳＢに出力しても、ＵＳＢデバイス側装置を認識することができない等の問題がある。
【０００５】
関連する技術として、下記の特許文献１には、データ転送中にケーブルが引き抜かれた場合、或いはバスリセット信号が発生した場合に、転送済みデータファイルが無駄に破棄されてしまうことを防止するシリアルバス通信システムが掲載されている。
【０００６】
【特許文献１】特開２００３−２４２１０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ＵＳＢホスト側装置がＵＳＢ規格に規定されている時間に従って信号又はデータをＵＳＢに出力しても、ＵＳＢデバイス側装置を認識することができない等の問題を防止することが可能なＵＳＢデバイスの制御方法を提供することにある。また、本発明は、そのようなコントローラを提供することにある。また、本発明は、そのようなコントローラを含む電子機器を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信を行うためのコントローラがＵＳＢデバイスを制御するために実行する方法であって、ＵＳＢデバイスの制御に関する少なくとも１つの時間を決定するための情報の入力を外部から受け、情報に基づいて少なくとも１つの時間を決定し、決定した少なくとも１つの時間に応じたタイミングでＵＳＢに信号又はデータを出力することによりＵＳＢデバイスの制御を行う、ＵＳＢデバイスの制御方法に関係する。
【０００９】
本発明によれば、信号又はデータをＵＳＢに出力するタイミングを外部から設定することができ、ＵＳＢデバイス側装置を認識することができない等の問題を防止することができるようになる。
【００１０】
また、本発明は、ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信を行うためのコントローラであって、ＵＳＢデバイスの制御に関する少なくとも１つの時間を決定するための情報をコントローラの外部から入力されることが可能な情報入力部と、情報入力部に入力された情報に基づいて少なくとも１つの時間を決定する処理部と、ＵＳＢを介してＵＳＢデバイスに接続され、処理部によって決定された少なくとも１つの時間に応じたタイミングでＵＳＢに信号又はデータを出力するＵＳＢインタフェース部と、を含む、コントローラに関係する。
【００１１】
本発明によれば、信号又はデータをＵＳＢに出力するタイミングを外部から設定することができるようになる。これにより、ＵＳＢデバイス側装置を認識することができない等の問題を防止することができるようになる。
【００１２】
また、本発明では、処理部が、ＵＳＢインタフェース部を制御するドライバプログラムを実行するＣＰＵコアを含み、ＣＰＵコアが、情報入力部に入力された情報に基づいて少なくとも１つの時間を決定するようにしても良い。
【００１３】
このようにすれば、外部から入力された情報に基づいて少なくとも１つの時間を決定する処理をプログラムによって容易に実現することができるようになる。
【００１４】
また、本発明では、情報入力部が、コントローラの設定及び／又は制御に関する情報を外部から書き込むためのレジスタを含み、少なくとも１つの時間を決定するための少なくとも１つのデータがレジスタに外部から書き込まれ、処理部が、レジスタに書き込まれた少なくとも１つのデータに基づいて少なくとも１つの時間を決定するようにしても良い。
【００１５】
このようにすれば、本来コントローラの設定及び／又は制御に関する情報を外部から書き込むためのレジスタを利用して、少なくとも１つの時間を決定するための少なくとも１つのデータを外部から入力することができる。これにより、外部入力端子等を新たに設けることなく、信号又はデータをＵＳＢに出力するタイミングを外部から設定することができるようになる。
【００１６】
また、本発明では、レジスタに少なくとも１つの時間を表す少なくとも１つの値が書き込まれ、処理部が、少なくとも１つの値によって表される時間を少なくとも１つの時間として決定するようにしても良い。
【００１７】
このようにすれば、処理部が少なくとも１つの時間を決定するための処理を簡易な処理とすることができるようになる。また、コントローラに接続されレジスタにアクセス可能なメインＣＰＵ等から少なくとも１つの時間を設定することができるようになる。
【００１８】
また、本発明では、少なくとも１つの時間を表す少なくとも１つの値をそれぞれ含む複数のテーブルを記憶する記憶部を更に含み、レジスタに複数のテーブルのいずれかを特定するデータが書き込まれ、処理部が、複数のテーブルの内のデータによって特定されるテーブルに含まれている少なくとも１つの値によって表される時間を少なくとも１つの時間として決定するようにしても良い。
【００１９】
このようにすれば、外部からレジスタに書き込むデータ量を少なくしながら、複数の時間を決定することができるようになる。
【００２０】
また、本発明では、情報入力部が、少なくとも１つの時間を決定するための少なくとも１つの信号を外部から入力することが可能な信号入力回路を含み、処理部が、信号入力回路に入力された少なくとも１つの信号に基づいて少なくとも１つの時間を決定するようにしても良い。
【００２１】
このようにすれば、コントローラに接続されるメインＣＰＵのソフトウェア等に変更や追加を行うことなく、外部から少なくとも１つの時間を設定することができるようになる。
【００２２】
また、本発明では、少なくとも１つの時間を表す少なくとも１つの値をそれぞれ含む複数のテーブルを記憶する記憶部を更に含み、信号入力回路に複数のテーブルのいずれかを特定する少なくとも１つの信号が入力され、処理部が、複数のテーブルの内の少なくとも１つの信号によって特定されるテーブルに含まれている少なくとも１つの値によって表される時間を少なくとも１つの時間として決定するようにしても良い。
【００２３】
このようにすれば、外部から入力する信号数を少なくしながら、複数の時間を決定することができるようになる。
【００２４】
また、本発明では、少なくとも１つの時間が、ＵＳＢデバイスを初期化するための制御に関する時間及び／又はＵＳＢデバイスをレジュームさせる制御に関する時間を含むようにしても良い。
【００２５】
このようにすれば、実際のＵＳＢデバイスにおいて正常に認識されない及び／又は正常に動作できないという事象の要因となり得るＵＳＢデバイスを初期化するための制御に関する時間及び／又はＵＳＢデバイスをレジュームさせる制御に関する時間を外部から設定することができるようになる。これにより、実際のＵＳＢデバイスにおいて正常に認識されない及び／又は正常に動作できないという事象が発生することを防止することができるようになる。
【００２６】
また、本発明では、少なくとも１つの時間が、定常的信号、周期的信号又はデータをＵＳＢに出力し及び／又は出力を継続する時間、若しくは或る信号又はデータをＵＳＢに出力してから次の信号又はデータをＵＳＢに出力するまでの時間を含むようにしても良い。
【００２７】
また、本発明は、本発明に係るコントローラと、バスを介してコントローラに接続されるホストＣＰＵと、を含む電子機器に関係する。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施形態について詳細に説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。また同一の構成要素には同一の参照番号を付して説明を省略する。
【００２９】
１．  ＵＳＢデバイスを制御するためにＵＳＢ規格において規定されている時間
ＵＳＢデバイスを制御するためにＵＳＢ規格において規定されている幾つかの時間について、例を挙げて説明する。
【００３０】
１．１  ＵＳＢホストとＵＳＢデバイスが接続された場合
まず、ＵＳＢホストとＵＳＢデバイスが接続（attach）された場合について説明する。
【００３１】
１．１．１  ＨＳホストとＨＳデバイスが接続された場合
図１にＨＳ（High-speed）ホストとＨＳデバイスが接続された場合におけるＵＳＢ上の信号の波形図を示す。
【００３２】
ホストとデバイスが接続されると、ホストからＶＢＵＳに電位が供給される。タイミングＴＭ０においてＶＢＵＳの電位が所与の閾値電位まで上昇した後、タイミングＴＭ１において、デバイスは、ＤＰ（Ｄ＋）を１．５ＫΩのプルアップ抵抗を用いて３．３Ｖにプルアップすることと規定されている。デバイスが行うこのプルアップ動作を、ＦＳターミネーションをオン（ＯＮ）にすると言う。ＶＢＵＳから電力の供給を受けて動作するバスパワー動作デバイスは、タイミングＴＭ０から１００ｍｓ以内に、ＦＳターミネーションをオン（ＯＮ）にすることと規定されている。
【００３３】
なお、ＤＰ（Ｄ＋）がＨレベル且つＤＭ（Ｄ−）がＬレベルであること（より正確には、Differential "1"であること（Ｄ＋＞ＶＯＨ（min）且つＤ−＜ＶＯＬ（max）であること））は、Ｊステート（J state）、チャープＪ（chirp J）又は単にＪと呼ばれる。また、ＤＰがＬレベル且つＤＭがＨレベルであること（より正確には、Differential "0"であること（Ｄ−＞ＶＯＨ（min）且つＤ＋＜ＶＯＬ（max）であること））は、Ｋステート（K state）、チャープＫ（chirp K）又は単にＫと呼ばれる。また、ＤＰがＬレベル且つＤＭがＬレベルであること（より正確には、Ｄ＋及びＤ−＜ＶＯＬ（max）であること）は、ＳＥ０（Single-ended 0）と呼ばれる。
【００３４】
後で詳しく説明するように、ＪステートはタイミングＴＭ１から１００ｍｓ以上継続することとして規定されている。そして、タイミングＴＭ１から１００ｍｓ経過した後のタイミングＴＭ２において、デバイスはサスペンド（SUSPEND）状態になる。これは、ＵＳＢ規格において、Ｊステートが１００ｍｓ以上続いた場合には、デバイスがサスペンド状態になることと規定されているためである。
【００３５】
その後タイミングＴＭ３においてＤＰがＬレベルになり、ＳＥ０となる。タイミングＴＭ１からタイミングＴＭ３までの時間は、ＵＳＢ規格において、ＴＡＴＴＤＢとして規定されており、ＵＳＢデバイスはこの時間を１００ｍｓ以内にすることとして規定されている。
【００３６】
ＳＥ０が２．５μｓ以上継続すると、デバイスは、タイミングＴＭ４において、サスペンド状態からリセット状態に遷移する。また、デバイスは、ＳＥ０の開始即ちタイミングＴＭ３から２．５μｓ〜３ｍｓ以内にチャープＫの出力を開始し、チャープＫの出力を１ｍｓ以上継続する。その後、デバイスは、ＳＥ０の開始時刻即ちタイミングＴＭ３から７ｍｓ未満のタイミングＴＭ５において、チャープＫの出力を終了する。
【００３７】
タイミングＴＭ５からＳＥ０が１００μｓ継続した後のタイミングＴＭ６において、ホストは、チャープＫとチャープＪの組み合わせを出力する（チャープＫとチャープＪを交互に出力する）。デバイスは、タイミングＴＭ７においてチャープＫとチャープＪの組み合わせを３組（３回）検出すると、ＦＳターミネーションをオフ（ＯＦＦ）にし、ＨＳモードに移行する。
【００３８】
その後、ホストは、タイミングＴＭ８においてチャープＫとチャープＪの組み合わせの出力を終了し、デバイスは、ＨＳアイドルとなる。なお、タイミングＴＭ３からタイミングＴＭ８までの時間は、ＵＳＢ規格において、ＴＤＲＳＴ（ルートハブにおいてはＴＤＲＳＴＲ）として規定されており、ＴＤＲＳＴは１０ｍｓ以上２０ｍｓ以下であることとして規定されている。また、ＴＤＲＳＴＲは５０ｍｓ以上であることとして規定されている。
【００３９】
また、タイミングＴＭ８からタイミングＴＭ９までの時間は、ＵＳＢ規格において、ＴＲＳＴＲＣＹとして規定されており、ＵＳＢデバイスはこの時間を１０ｍｓ以内にすることとして規定されている。
【００４０】
１．１．２  ＨＳホストとＦＳデバイスが接続された場合
図２にＨＳホストとＦＳ（Full-Speed）デバイスが接続された場合におけるＵＳＢ上の信号の波形図を示す。
【００４１】
ホストとデバイスが接続されると、ホストからＶＢＵＳに電位が供給される。タイミングＴＭ１０においてＶＢＵＳの電位が所与の閾値電位まで上昇した後、タイミングＴＭ１１において、デバイスは、ＦＳターミネーションをオンにする。ＶＢＵＳから電力の供給を受けて動作するバスパワー動作デバイスは、タイミングＴＭ１０から１００ｍｓ以内に、ＦＳターミネーションをオンにすることと規定されている。
【００４２】
ＪステートはタイミングＴＭ１１から１００ｍｓ以上継続することとして規定されている。そして、タイミングＴＭ１１から１００ｍｓ経過した後のタイミングＴＭ１２において、デバイスはサスペンド状態になる。
【００４３】
その後タイミングＴＭ１３においてＤＰがＬレベルになり、ＳＥ０となる。タイミングＴＭ１１からタイミングＴＭ１３までの時間は、ＵＳＢ規格において、ＴＡＴＴＤＢとして規定されており、ＵＳＢデバイスはこの時間を１００ｍｓ以内にすることとして規定されている。
【００４４】
ＳＥ０が２．５μｓ以上継続すると、デバイスは、タイミングＴＭ１４において、サスペンド状態からリセット状態に遷移する。なお、ＦＳデバイスは、先に説明したＨＳデバイスと異なり、チャープＫの出力を行わない。
【００４５】
タイミングＴＭ１３からＳＥ０が１０ｍｓ継続した後のタイミングＴＭ１８において、デバイスは、ＦＳアイドルとなる。なお、ＨＳホストとＨＳデバイスが接続された場合（先述）と異なり、タイミングＴＭ１３からタイミングＴＭ１８までの間にチャープＫとチャープＪの組み合わせの出力は行われない。また、タイミングＴＭ１３からタイミングＴＭ１８までの時間は、ＨＳホストとＨＳデバイスが接続された場合と同様に、１０ｍｓ以上であることとして規定されている。また、タイミングＴＭ１８からタイミングＴＭ１９までの時間も、ＨＳホストとＨＳデバイスが接続された場合と同様に、１０ｍｓ以上であることとして規定されている。
【００４６】
１．２  ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストのリカバリ・インターバル時間
ＵＳＢの通信は、ホストとデバイスのエンドポイントとの間で行われる。ホストは、１つのシステムの中でユニークなアドレスをデバイスに割り当てて、デバイスのエンドポイントと通信する。ホストがデバイスにアドレスを割り当てる場合には、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストが用いられる。ＵＳＢ規格においては、ホストがＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストに対する応答をＵＳＢデバイスから受け取ってから次のリクエストをＵＳＢデバイスに送信するまでの待ち（ウェイト）時間であるＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストのリカバリ・インターバル（recovery interval）時間は２ｍｓ以上として規定されている。すなわち、ＵＳＢデバイスは、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストに対する応答をＵＳＢホストに送信してから２ｍｓ以内に次のリクエストを受信可能な状態になる必要がある。
【００４７】
１．３  サスペンド状態のデバイスをレジュームさせるレジューム信号の出力時間
ＵＳＢ規格においては、ホストがサスペンド（SUSPEND）状態のデバイスをレジューム（RESUME）させることができることが規定されている。そして、ＵＳＢ規格においては、ホストがサスペンド状態のデバイスをレジュームさせるためのレジューム信号の出力時間は、ＴＤＲＳＭＤＮとして規定されており、このＴＤＲＳＭＤＮは、２０ｍｓ以上として規定されている。
【００４８】
１．４  ＵＳＢデバイス装置の実測値
本発明者は、市販されている一般的なＵＳＢデバイス装置において、上記のような各種の時間の実測を行った。また、本発明者は、市販されている一般的なパーソナルコンピュータ（ＵＳＢホスト装置）と市販されている一般的なプリンタ（ＵＳＢデバイス装置）との間において、上記のような各種の時間の実測を行った。
【００４９】
図３に、ＵＳＢ規格において規定されている時間（規格値）と、ＵＳＢデバイス装置において実測した時間（実測値）を示す。本発明者は、図３に示すように、市販されているＵＳＢデバイス装置の実測値がＵＳＢの規格値より長くなってしまっていることを見出した。このようなＵＳＢデバイス装置がＵＳＢホスト装置に接続されている場合に、ＵＳＢホスト装置がＵＳＢの規格値に従って動作すると、ＵＳＢホスト装置がＵＳＢデバイス装置を正常に認識できなかったり、ＵＳＢデバイス装置が正常に動作しないということが起こり得る。
【００５０】
また、ＵＳＢ規格においては、ＵＳＢデバイス装置はレジューム（RESUME）機能を有することとして規定されている。しかしながら、本発明者は、レジューム機能を有していない、いわば規格違反とも言えるＵＳＢデバイス装置が存在することも見出した。このような規格違反とも言えるＵＳＢデバイス装置がＵＳＢホスト装置に接続されている場合には、ＵＳＢホスト装置はＵＳＢデバイス装置をレジュームさせることが出来ず、その結果として、ＵＳＢホスト装置及び／又はＵＳＢデバイス装置がフリーズしてしまうということが起こり得る。
【００５１】
２．  第１の実施形態
２．１  構成
図４に、以上のような問題を解決できる本実施形態のＵＳＢホストコントローラ４０（広義にはコントローラ）及びこれを含む電子機器２０の構成例を示す。
【００５２】
電子機器２０は、メインＣＰＵ３０と、ＵＳＢホストコントローラ４０とを含む。ＵＳＢホストコントローラ４０は、ＵＳＢＩ／Ｆ８０と、転送コントローラ１００と、処理部１２０と、レジスタ１３０（広義には情報入力部）と、ＤＭＡ処理部１４０とを含む。なおＵＳＢホストコントローラ４０を半導体集積回路として実現するようにしても良い。
【００５３】
なおＵＳＢホストコントローラ４０、電子機器２０は図４の構成に限定されず、その構成要素の一部を省略したり、構成要素間の接続形態を変更したり、図４とは異なる構成要素を追加する変形実施が可能である。例えばＵＳＢホストコントローラ４０において転送コントローラ１００や処理部１２０やＤＭＡ処理部１４０等の構成を省く変形実施も可能である。また電子機器２０において、図２に示されるもの以外の構成要素（例えば操作部、表示部、ＲＯＭ、ＲＡＭ、撮像部又は電源等）を追加してもよい。
【００５４】
また本実施形態の電子機器２０としては、ビデオカメラ、デジタルカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、光ディスクドライブ装置、ハードディスクドライブ装置、オーディオ機器、携帯電話機、携帯型ゲーム機、電子手帳、電子辞書又は携帯型情報端末等の種々のものが考えられる。
【００５５】
メインＣＰＵ３０は電子機器２０の全体的な処理、制御を行う。例えば電子機器２０がビデオカメラである場合には、メインＣＰＵ３０はカメラプロセッサとして機能し、撮像デバイスの制御や画像のエフェクト処理や画像の圧縮処理などを行う。
【００５６】
レジスタ１３０は、メインＣＰＵ３０のアドレス空間（メモリ空間、Ｉ／Ｏ空間等）にマッピングされており、レジスタ１３０には、ＣＰＵバスを介してメインＣＰＵ３０が発行したコマンドが書き込まれる。ＵＳＢＩ／Ｆ８０、転送コントローラ１００、処理部１２０、ＤＭＡ処理部１４０は、レジスタ１３０に書き込まれたコマンドに基づいて動作する。またレジスタ１３０にはＵＳＢＩ／Ｆ８０、転送コントローラ１００、処理部１２０、ＤＭＡ処理部１４０等の動作ステータスが書き込まれ、メインＣＰＵ３０はレジスタ１３０に書き込まれた動作ステータスを読み出すことができる。
【００５７】
ＵＳＢＩ／Ｆ８０は、ＵＳＢを介してデータ転送（高速シリアル転送）を行うためのインターフェースである。具体的にはＵＳＢＩ／Ｆ８０は、ＵＳＢ（シリアルバス）を介してデータの受信や送信を行う物理層回路を含み、ＵＳＢ機器１０との間のデータ転送を行う。
【００５８】
なおＵＳＢＩ／Ｆ８０がホスト機能を有する場合には、ＵＳＢにＵＳＢデバイスを接続し、そのＵＳＢデバイスとの間でデータ転送を行うようにしてもよい。
【００５９】
ＤＭＡ処理部１４０は、ＣＰＵバスに接続されており、ＵＳＢ機器１０に送信されるデータをＣＰＵバスから受け取って転送コントローラ１００にＤＭＡ転送し及び／又はＵＳＢ機器１０から受信されたデータを転送コントローラ１００からＣＰＵバスにＤＭＡ転送する。
【００６０】
転送コントローラ１００は、ＵＳＢＩ／Ｆ８０、ＤＭＡ処理部１４０の間でのデータ転送を制御する。これにより、ＣＰＵバスから転送されてきたデータをＵＳＢ機器１０に書き込んだり、ＵＳＢ機器１０に書き込まれたデータをＣＰＵバスに転送することが可能になる。
【００６１】
転送コントローラ１００はデータバッファ１０２（例えばＦＩＦＯ）を含む。データバッファ１０２は、転送コントローラ１００により転送されるデータを一時的に格納するためのバッファである。このデータバッファ１０２は、ＲＡＭなどのメモリにより実現できる。
【００６２】
処理部１２０は、ＵＳＢホストコントローラ４０の全体的な処理、制御を行ったり、ＵＳＢホストコントローラ４０が含む各回路ブロックの制御を行う。この処理部１２０の機能の一部又は全部は、例えばＣＰＵとＣＰＵ上で動作するファームウェアにより実現することができる。なお、処理部１２０を専用のハードウェア回路により実現することもできる。
【００６３】
本実施形態においては、処理部１２０は、ＣＰＵ１２１と、ＲＡＭ１２２と、ＲＯＭ１２３を含む。ＲＯＭ１２３には、ＯＳ（オペレーティングシステム）、ＢＩＯＳ（Basic Input/Output System）、ＡＰＩ（Application Programming Interface）、ＩＣコモンファンクションドライバ、ＵＳＢホストクラスドライバ、ＵＳＢホストスタック等のプログラムが記憶されている。なお、ＲＯＭ１２３は、ＥＥＰＲＯＭ等であっても良い。
【００６４】
なお処理部１２０をＵＳＢホストコントローラ４０に内蔵させず、メインＣＰＵ３０との間のインタフェース処理を行うＣＰＵＩ／Ｆを設けるようにしてもよい。この場合には、ＵＳＢホストコントローラ４０やＵＳＢホストコントローラ４０が含む各回路ブロックの制御は、ＣＰＵＩ／Ｆを介してメインＣＰＵ３０が行うことになる。
【００６５】
また処理部１２０を動作させるためのプログラムは、メインＣＰＵ３０側のメモリ（ＥＥＰＲＯＭ等）に記憶しておき、電源投入後にメインＣＰＵ３０がダウンロードコマンドを発行し、ＣＰＵバスを介してＵＳＢホストコントローラ４０にダウンロードするようにしてもよい。
【００６６】
ＣＰＵ１２１は、ＲＡＭ１２２を作業領域として利用しながら、ＲＯＭ１２３に記憶されているプログラムを実行する。
【００６７】
図５に、ＣＰＵ１２１がＲＯＭ１２３に記憶されているプログラムを実行することにより実現される機能ブロックを示す。
【００６８】
ＯＳブロックは、ＣＰＵ１２１がＲＯＭ１２３に記憶されているＯＳプログラムを実行することにより実現され、ＲＯＭ１２３内の他のプログラムを動作させるためのオペレーティングシステムブロックであり、タスクの生成や管理、他のソフトウェアブロックに対するサービスコールを提供する。
【００６９】
ＢＩＯＳブロックは、ＣＰＵ１２１がＲＯＭ１２３に記憶されているＢＩＯＳプログラムを実行することにより実現されるブロックであり、メインＣＰＵ３０がＵＳＢホストコントローラ４０のレジスタ１３０に設定したコマンドを解析し、ＡＰＩブロックの適切な関数を呼び出してＵＳＢホストコントローラ４０の機能を実現するソフトウェアブロックである。
【００７０】
ＡＰＩブロックは、ＣＰＵ１２１がＲＯＭ１２３に記憶されているＡＰＩプログラムを実行することにより実現されるブロックであり、ＵＳＢホストコントローラ４０のハードウェアとファームウェアが有する機能をＢＩＯＳブロックに対して関数形式で提供するソフトウェアブロックである。
【００７１】
ＩＣコモンファンクションブロックは、ＣＰＵ１２１がＲＯＭ１２３に記憶されているＩＣコモンファンクションプログラムを実行することにより実現されるブロックであり、ＵＳＢホストコントローラ４０の初期設定および、パワーマネージメント機能等、ＵＳＢホストコントローラ４０自体の設定や制御を行うソフトウェアブロックである。
【００７２】
ＵＳＢホストクラスドライバブロックは、ＣＰＵ１２１がＲＯＭ１２３に記憶されているＵＳＢホストクラスドライバプログラムを実行することにより実現されるブロックであり、ＵＳＢホストスタックの上位プロトコルを処理するソフトウェアブロックであり、ＵＳＢ規格のＨＩＤ（Human Interface Device）クラス、マスストレージ（Mass Storage）クラス、オーディオ（Audio）クラス、ビデオ（Video）クラス、プリンタ（Printer）クラス、通信デバイス（Communication Device）クラス、ピクチャ転送プロトコル（Picture Transfer Protocol）クラス等に対応するクラスドライバのブロックである。
【００７３】
ＵＳＢホストスタックブロックは、ＣＰＵ１２１がＲＯＭ１２３に記憶されているＵＳＢホストスタックプログラムを実行することにより実現されるブロックであり、ＵＳＢＩ／Ｆ８０を制御し、ＵＳＢ機器１０の接続／切断処理、パワーマネージメント、エンドポイント毎の転送処理を行うソフトウェアブロックである。
【００７４】
２．２  ＵＳＢＩ／Ｆ
ＵＳＢでは、図６（Ａ）に示すようなエンドポイント（ＥＰ０〜１５）がＵＳＢデバイス側に用意される。またＵＳＢでは、転送（transfer）のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送などが定義されており、各転送は一連のトランザクションにより構成される。そしてトランザクションは図６（Ｂ）に示すように、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
【００７５】
ＯＵＴトランザクションでは、図６（Ｃ）に示すように、まず、ＵＳＢホストがＵＳＢデバイスに対してＯＵＴトークン（トークパケット）を発行する。次に、ＵＳＢホストはＵＳＢデバイスに対してＯＵＴデータ（データパケット）を送信する。そして、ＵＳＢデバイスは、ＯＵＴデータの受信に成功すれば、ＵＳＢホストに対してＡＣＫ（ハンドシェークパケット）を送信する。一方、ＩＮトランザクションでは、図６（Ｄ）に示すように、まず、ＵＳＢホストがＵＳＢデバイスに対してＩＮトークンを発行する。そしてＩＮトークンを受信したＵＳＢデバイスは、ＵＳＢホストに対してＩＮデータを送信する。そしてＵＳＢホストは、ＩＮデータの受信に成功すると、ＵＳＢデバイスに対してＡＣＫを送信する。
【００７６】
なお"Ｄ←Ｈ"は、ＵＳＢホストからＵＳＢデバイスに対して情報が転送されることを意味し、"Ｄ→Ｈ"は、ＵＳＢデバイスからＵＳＢホストに対して情報が転送されることを意味する。
【００７７】
次に、ＵＳＢのバルクオンリートランスポートのプロトコルについて説明する。ハードディスクドライブや光ディスクドライブなどの大容量記憶装置は、マスストレージと呼ばれるクラスに属する。このマスストレージクラスには、バルクオンリートランスポートというプロトコルが規格化されている。
【００７８】
バルクオンリートランスポートでは、バルクＩＮ、バルクＯＵＴの２つのエンドポイントを用いてパケット転送が行われる。即ち、コマンドには、ＣＢＷ（Command Block Wrapper）と呼ばれる３１バイトのデータが使用され、バルクＯＵＴのエンドポイントを用いて転送される。データ転送には、転送方向に応じてバルクＩＮ、バルクＯＵＴのエンドポイントが使用される。コマンドに対するステータスには、ＣＳＷ（Command Status Wrapper）と呼ばれる１３バイトのデータが使用され、バルクＩＮのエンドポイントを用いて転送される。
【００７９】
次に、バルクオンリートランスポートの送受信処理（プロトコル制御）について、図７（Ａ）、（Ｂ）を用いて説明する。図７（Ａ）に示すように、ＵＳＢホストがＵＳＢデバイスにデータを送信する場合には、まずＵＳＢホストがＣＢＷをＵＳＢデバイスに送信するコマンドトランスポートが行われる。具体的には、ＵＳＢホストが、エンドポイントＥＰ１を指定するトークンパケットをＵＳＢデバイスに送信し、次に、ＣＢＷをＵＳＢデバイスのエンドポイントＥＰ１に送信する。このＣＢＷはライトコマンドを含む。そして、ＵＳＢデバイスからＵＳＢホストにＡＣＫのハンドシェークパケットが返却されると、コマンドトランスポートが終了する。
【００８０】
コマンドトランスポートが終了するとデータトランスポートに移行する。このデータトランスポートでは、まずＵＳＢホストが、エンドポイントＥＰ１を指定するトークンパケットをＵＳＢデバイスに送信し、次に、ＯＵＴデータをＵＳＢデバイスのエンドポイントＥＰ１に送信する。そして、ＵＳＢデバイスからＵＳＢホストにＡＣＫのハンドシェークパケットが返却されると、１つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、ＣＢＷで指定されるデータ長の分だけデータが送信されると、データトランスポートが終了する。
【００８１】
データトランスポートが終了するとステータストランスポートに移行する。このステータストランスポートでは、まず、ＵＳＢホストが、エンドポイントＥＰ２を指定するトークンパケットをＵＳＢデバイスに送信する。すると、ＵＳＢデバイスが、エンドポイントＥＰ２にあるＣＳＷをＵＳＢホストに送信する。そして、ＵＳＢホストからＵＳＢデバイスにＡＣＫのハンドシェークパケットが返却されると、ステータストランスポートが終了する。
【００８２】
ＵＳＢホストがＵＳＢデバイスからデータを受信する場合は、図７（Ｂ）に示すように処理が行われる。図７（Ｂ）が図７（Ａ）と異なるのは、コマンドトランスポートのＣＢＷがリードコマンドを含む点と、データトランスポートにおいてＩＮデータの転送が行われる点である。
【００８３】
図８にＵＳＢＩ／Ｆ８０の構成例を示す。ＵＳＢＩ／Ｆ８０は、トランシーバ２２０、転送コントローラ２５０、データバッファ２９０を含む。
【００８４】
トランシーバ２２０（デュアルトランシーバ）は、差動信号（ＤＰ、ＤＭ）を用いてＵＳＢのデータを送受信するための回路であり、ホストトランシーバ２３０、デバイストランシーバ２４０を含む。
【００８５】
ホストトランシーバ２３０は、アナログフロントエンド回路（物理層回路）及び高速ロジック回路を有し、ＵＳＢのＨＳモード（４８０Ｍｂｐｓ）、ＦＳモード（１２Ｍｂｐｓ）、ＬＳモード（１．５Ｍｂｐｓ）をサポートする。デバイストランシーバ２４０は、アナログフロントエンド回路（物理層回路）及び高速ロジック回路を有し、ＵＳＢのＨＳモード、ＦＳモードをサポートする。このデバイストランシーバ２４０としてはＵＴＭＩ（USB2.0 Transceiver Macrocell Interface）仕様に準拠した回路を用いることができる。
【００８６】
転送コントローラ２５０は、ＵＳＢを介したデータ転送を制御するためのコントローラであり、トランザクション層やリンク層などのデータ転送制御を行う。この転送コントローラ２５０は、ホストコントローラ２６０、デバイスコントローラ２７０、ポートセレクタ２８０を含む。なおこれらの一部を省略する構成としてもよい。
【００８７】
ホストコントローラ２６０（ホストSerial Interface Engine）は、ホストモード時のデータ転送を制御する。具体的にはホストコントローラ２６０は、トランザクションのスケジューリング（発行）やトランザクションの管理やパケットの生成＆解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを生成する。更にバスの接続・切断状態の検出やＶＢＵＳの制御などを行う。
【００８８】
デバイスコントローラ２７０（デバイスSerial Interface Engine）は、デバイスモード時のデータ転送を制御する。具体的にはデバイスコントローラ２７０は、トランザクションの管理やパケットの生成＆解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを制御する。
【００８９】
ポートセレクタ２８０は、ホストモードとデバイスモードのいずれかを選択して有効にするためのセレクタである。例えばレジスタ等の設定によりホストモードが選択されると、ポートセレクタ２８０はホストコントローラ２６０、ホストトランシーバ２３０を選択（イネーブル）する。一方、レジスタ等の設定によりデバイスモードが選択されると、ポートセレクタ２８０はデバイスコントローラ２７０、デバイストランシーバ２４０を選択（イネーブル）する。
【００９０】
データバッファ２９０（ＦＩＦＯ、パケットバッファ）は、ＵＳＢ（シリアルバス）を介して転送されるデータ（送信データ、受信データ）を一時的に格納（バッファリング）するためのバッファである。このデータバッファ２９０は、ＲＡＭなどのメモリにより実現できる。
【００９１】
なお、転送コントローラ２５０やデータバッファ２９０の一部の機能を、図４の転送コントローラ１００やデータバッファ１０２により実現してもよい。また図８では、ホスト動作とデバイス動作の両方の動作を行うＵＳＢＩ／Ｆ８０の例を示したが、デバイス動作だけを行うものであってもよい。
【００９２】
２．３  動作
次に、本実施形態の動作について説明する。本実施形態のＵＳＢホストコントローラ４０においては、ＵＳＢデバイスの制御に関する時間としてＵＳＢ規格で規定されている時間（規格値）に固定することなく、メインＣＰＵ３０からの指示に応じて、ＵＳＢデバイスの制御に関する時間を変更することとしている。
【００９３】
２．３．１  初期時における動作
まず、初期時（パワーオン時、リセット時等）における電子機器２０の動作について説明する。
【００９４】
図９は、初期時における電子機器２０の動作を示すフローチャートである。
まず、メインＣＰＵ３０が、変更対象である時間を特定する情報（時間を表す名称（ＴＡＴＴＤＢ、ＴＤＲＳＴ等）等であっても良い）及び／又は時間値をレジスタ１３０に設定する（ステップＳ１１）。
【００９５】
例えば、メインＣＰＵ３０が、図１０（ａ）〜（ｃ）に示すように、時間を表す名称及び時間値をレジスタ１３０に設定するようにしても良い。図１０（ａ）は、多くのＵＳＢ機器を認識又は動作可能とできるように長めの時間値を設定する場合の例であり、図１０（ｂ）は、待ち時間を短くして動作を素早くするために短めの時間値を設定する場合の例であり、図１０（ｃ）は、ＵＳＢ規格に準拠した時間値を設定する場合の例である。或いは、図１０（ａ）〜（ｃ）をテーブルとしてＲＯＭ１２３に予め記憶しておき、メインＣＰＵ３０が、いずれのテーブルを使用するかを表す情報をレジスタ１３０に設定するようにしても良い。
【００９６】
なお、図１０（ａ）〜（ｃ）では、５個の時間値を設定することとしているが、これら５個以外の時間値は、ＵＳＢ規格において規定されている値（規格値）を用いるようにすれば良い。
【００９７】
なお、変更対象である時間が予め決められている場合には、変更対象である時間を特定する情報（時間を表す名称等）を不要とすることができる。
【００９８】
ＵＳＢホストコントローラ４０のＢＩＯＳブロックは、レジスタ１３０の内容を解析し、変更対象である時間を特定する情報及び時間値を引数として、ＡＰＩをコールする（ステップＳ２１）。
【００９９】
ＵＳＢホストコントローラ４０のＡＰＩブロックは、変更対象である時間を特定する情報及び時間値を引数として、ＵＳＢホストスタックをコールする（ステップＳ３１）。
【０１００】
ＵＳＢホストコントローラ４０のＵＳＢホストスタックブロックは、引数に基づいて、ＲＡＭ１２２上の時間値を設定及び／又は変更する（ステップＳ４１）。なお、ＲＡＭ１２２上には予めデフォルトの時間値が書き込まれるようにしておき、ＵＳＢホストスタックブロックが、このデフォルト値を上書き変更するようにしても良い。
【０１０１】
ステップＳ４１（ＵＳＢホストスタックブロック）及びステップＳ３１（ＡＰＩブロック）からリターンすると、ＢＩＯＳブロックは、時間値変更完了ステータスをレジスタ１３０に設定する（ステップＳ２２）。メインＣＰＵ３０は、レジスタ１３０を参照することで、時間値変更完了ステータスを読み出すことができる。
【０１０２】
２．３．２  ＵＳＢホストとＵＳＢデバイスが接続された場合における動作
次に、ＵＳＢ機器１０が接続された場合におけるＵＳＢホストコントローラ４０の動作について説明する。
【０１０３】
図１１は、ＵＳＢ機器１０が接続された場合におけるＵＳＢホストコントローラ４０の動作を示すフローチャートである。
まず、ＵＳＢホストコントローラ４０（より詳細にはＵＳＢホストスタックブロック）は、システム初期化動作を行い（ステップＳ５１）、ＵＳＢ機器１０が接続されるのを待つ。
【０１０４】
ＵＳＢ機器１０が接続される（例えば、ＵＳＢホストコントローラ４０とＵＳＢ機器１０との間を接続するＵＳＢケーブルが挿入される等）と、ＵＳＢホストコントローラ４０は、電源安定待ち時間調節動作を行う（ステップＳ５２）。より詳細には、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＴＡＴＴＤＢの設定値（図１０（ａ）〜（ｃ）参照）に基づいて、電源安定待ち時間（図１のタイミングＴＭ１〜ＴＭ３及び／又は図２のタイミングＴＭ１１〜ＴＭ１３参照）の調節動作を行う。すなわち、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＴＡＴＴＤＢの設定値に基づく時間に応じたタイミングでＵＳＢに信号又はデータを出力する。例えば、ＵＳＢホストコントローラ４０は、図１のタイミングＴＭ１〜ＴＭ３及び／又は図２のタイミングＴＭ１１〜ＴＭ１３の長さ（時間）を調節する。
【０１０５】
次に、ＵＳＢホストコントローラ４０は、ＵＳＢ機器１０のリセットからパケット発行までの時間調節動作を行う（ステップＳ５３）。より詳細には、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＴＤＲＳＴ及びＴＲＳＴＲＣＹの設定値（図１０（ａ）〜（ｃ）参照）に基づいて、ＵＳＢ機器１０のリセットからパケット発行までの時間（図１のタイミングＴＭ３〜ＴＭ８及び／又は図２のタイミングＴＭ１３〜ＴＭ１８参照）の調節動作を行う。すなわち、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＴＲＳＴＲＣＹの設定値に基づく時間に応じたタイミングでＵＳＢに信号又はデータを出力する。例えば、ＵＳＢホストコントローラ４０は、図１のタイミングＴＭ３〜ＴＭ８及び／又は図２のタイミングＴＭ１３〜ＴＭ１８の長さ（時間）を調節する。
【０１０６】
次に、ＵＳＢホストコントローラ４０は、エニュメレーション動作を行う（ステップＳ５４）。エニュメーレション動作は、アドレス変更時間調節動作を含む。
【０１０７】
図１２は、アドレス変更時間調節動作を示すフローチャートである。
まず、ＵＳＢホストコントローラ４０（より詳細にはＵＳＢホストスタックブロック）が、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストをＵＳＢ機器１０に発行し（ステップＳ６１）、ＵＳＢ機器１０が、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストを実行し（ステップＳ７１）、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストへの応答をＵＳＢホストコントローラ４０に送信する（ステップＳ７２）。
【０１０８】
ＵＳＢホストコントローラ４０は、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストへの応答をＵＳＢ機器１０から受信すると、メインＣＰＵ３０から設定されたＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストのリカバリ・インターバル時間の設定値（図１０（ａ）〜（ｃ）参照）に基づいて、待ち（ウェイト）処理を行う（ステップＳ６２）。
【０１０９】
そして、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストのリカバリ・インターバル時間の設定値に基づく待ち（ウェイト）処理が終了すると、ＧｅｔＤｅｓｃｒｉｐｔｏｒ標準デバイス・リクエストをＵＳＢ機器１０に発行し（ステップＳ６３）、ＵＳＢ機器１０が、ＧｅｔＤｅｓｃｒｉｐｔｏｒ標準デバイス・リクエストを実行し（ステップＳ７３）、ＧｅｔＤｅｓｃｒｉｐｔｏｒ標準デバイス・リクエストへの応答をＵＳＢホストコントローラ４０に送信する（ステップＳ７４）。すなわち、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストのリカバリ・インターバル時間の設定値に基づく時間に応じたタイミングでＧｅｔＤｅｓｃｒｉｐｔｏｒ標準デバイス・リクエストをＵＳＢに出力する。換言すると、ＵＳＢホストコントローラ４０は、ＳｅｔＡｄｄｒｅｓｓ標準デバイス・リクエストへの応答をＵＳＢ機器１０から受信してからＧｅｔＤｅｓｃｒｉｐｔｏｒ標準デバイス・リクエストを発行するまでの待ち（ウェイト）時間の長さを調節する。
【０１１０】
以後、必要に応じて、ＵＳＢホストコントローラ４０とＵＳＢ機器１０との間で通信が行われる。
【０１１１】
以上説明したように、本実施形態によれば、ＵＳＢデバイスを制御するためにＵＳＢ規格で規定されている時間（規格値）に固定することなく、メインＣＰＵ３０からの指示に応じて、ＵＳＢ機器１０の制御に関する時間を変更することができる。これにより、ＵＳＢホストコントローラ４０がＵＳＢ機器１０を正常に認識できない又はＵＳＢ機器１０が正常に動作しないことを防止することが可能になる。
【０１１２】
２．３．３  ＵＳＢデバイスをレジュームさせる場合における動作
次に、サスペンド状態にあるＵＳＢ機器１０をレジュームさせる場合におけるＵＳＢホストコントローラ４０の動作について説明する。
【０１１３】
図１３は、サスペンド状態にあるＵＳＢ機器１０をレジュームさせる場合におけるＵＳＢホストコントローラ４０の動作を示すフローチャートである。
まず、ＵＳＢホストコントローラ４０（より詳細にはＵＳＢホストスタックブロック）は、レジューム動作を行う（ステップＳ８１）。レジューム動作は、レジューム時間調節動作（ステップＳ８２）を含む。
【０１１４】
レジューム時間調節動作（ステップＳ８２）において、ＵＳＢホストコントローラ４０は、メインＣＰＵ３０から設定されたＴＤＲＳＭＤＮの設定値（図１０（ａ）〜（ｃ）参照）に基づいて、ＵＳＢ機器１０をレジュームさせるためのレジューム信号の長さ（時間）を調節する。すなわち、ＵＳＢホストコントローラ４０は、レジューム信号の出力をメインＣＰＵ３０から設定されたＴＤＲＳＭＤＮの設定値（図１０（ａ）〜（ｃ）参照）に基づく時間だけ継続する。
【０１１５】
そして、ＵＳＢホストコントローラ４０は、ＵＳＢ機器１０のレジュームが失敗した場合（ステップＳ８３）には、ＵＳＢ機器１０のリセット処理を行う（ステップＳ８４）。具体的には、ＵＳＢホストコントローラ４０は、ＵＳＢ機器１０をリセットするためのリセット信号（ＳＥ０）をＵＳＢ機器１０に出力する。
【０１１６】
以上説明したように、本実施形態によれば、ＵＳＢデバイスを制御するためにＵＳＢ規格で規定されている時間（規格値）に固定することなく、メインＣＰＵ３０からの指示に応じて、ＵＳＢ機器１０の制御に関する時間を変更することができる。これにより、ＵＳＢ機器１０がレジューム機能を有しない、いわば規格違反とも言えるＵＳＢデバイス装置であっても、ＵＳＢホストコントローラ４０及び／又はＵＳＢ機器１０がフリーズしてしまうことを防止することが可能になる。
【０１１７】
３．  第２の実施形態
３．１  構成
図１４に、本実施形態のＡＴＡ−ＵＳＢブリッジコントローラ７０（広義にはコントローラ）及びこれを含む電子機器５０の構成例を示す。本実施形態では、メインＣＰＵ６０が有するＡＴＡのホスト側Ｉ／Ｆ６２の存在に着目し、このホスト側Ｉ／Ｆ６２に対応するＡＴＡのデバイス側Ｉ／Ｆ１６０をＡＴＡ−ＵＳＢブリッジコントローラ７０に設けている。こうすることで、メインＣＰＵ６０からのデータを、デバイス側Ｉ／Ｆ１６０を介して転送コントローラ１００に書き込むことが可能になる。また本実施形態では、転送コントローラ１００に書き込まれたデータをＵＳＢ機器１０に転送するためのＵＳＢＩ／Ｆ８０を設けている。こうすることで、ＡＴＡバスとＵＳＢの間のバスブリッジ機能を実現できる。
【０１１８】
なおＡＴＡ−ＵＳＢブリッジコントローラ７０、電子機器５０は図１４の構成に限定されず、その構成要素の一部を省略したり、構成要素間の接続形態を変更したり、図１４とは異なる構成要素を追加する変形実施が可能である。例えばＡＴＡ−ＵＳＢブリッジコントローラ７０において処理部１５０やＵＳＢＩ／Ｆ８０やデバイス側Ｉ／Ｆ１６０等の構成を省く変形実施も可能である。また電子機器５０において、図１４に示されるもの以外の構成要素（例えば操作部、表示部、ＲＯＭ、ＲＡＭ、撮像部又は電源等）を追加してもよい。
【０１１９】
電子機器５０は、メインＣＰＵ６０と、ＡＴＡ−ＵＳＢブリッジコントローラ７０とを含む。なお、ＡＴＡ−ＵＳＢブリッジコントローラ７０を半導体集積回路として実現するようにしても良い。
【０１２０】
メインＣＰＵ６０は電子機器５０の全体的な処理、制御を行う。このメインＣＰＵ６０はＡＴＡのホスト側Ｉ／Ｆ（インターフェース）６２を含む。なおホスト側Ｉ／Ｆ６２は、モード設定によりＣＦ＋インタフェースからＡＴＡインターフェースに切り替わるＣＦ＋のインターフェース規格のものであってもよい。
【０１２１】
ＡＴＡ−ＵＳＢブリッジコントローラ７０は、ＡＴＡ（ＩＤＥ）のデバイス側Ｉ／Ｆ１６０を含む。またＵＳＢＩ／Ｆ８０や転送コントローラ１００や処理部１５０やＧＰＩ（入力）回路１７０（広義には情報入力部）を含むことができる。
【０１２２】
ここでデバイス側Ｉ／Ｆ１６０は、ＡＴＡＢＵＳ１を介してメインＣＰＵ６０（ＡＴＡホスト）との間でデータ転送（通信）を行うためのインターフェースである。なお本実施形態におけるＡＴＡは、ＡＴＡＰＩ（AT Attachment with Packet Interface）を含むことができる。また、シリアルＡＴＡやＣＥ−ＡＴＡなどの従来のＡＴＡ規格を発展した規格を含むこともできる。またＡＴＡ−ＵＳＢブリッジコントローラ７０に、ＡＴＡのホスト側Ｉ／Ｆを設けてもよい。
【０１２３】
デバイス側Ｉ／Ｆ１６０はレジスタ１６２を含む。このレジスタ１６２には、ＡＴＡＢＵＳ１を介してメインＣＰＵ６０が発行したコマンドが書き込まれる。具体的には、このレジスタ１６２として、ＡＴＡのデバイス側Ｉ／Ｆが含むタスクレジスタを使用できる。そして本実施形態では、ＡＴＡのコマンドのうちベンダ定義コマンド（Vender specific command）として割り当てられたコマンドが、レジスタ１６２（タスクレジスタ）に書き込まれる。転送コントローラ１００、処理部１５０は、このベンダ定義コマンドに基づいて動作することができる。例えば転送コントローラ１００は、レジスタ１６２に設定されたベンダ定義の転送制御コマンド（転送方向や転送データ量を指定するコマンド）に基づいて、デバイス側Ｉ／Ｆ１６０、ＵＳＢＩ／Ｆ８０間のデータ転送方向を決定する。また転送コントローラ１００は、インターフェース間で転送するデータ量を決定する。
【０１２４】
ＧＰＩ回路１７０は、外部から信号を入力可能なＧＰＩ（入力）端子１７１、１７２を含んでいる。図１４においては、ＧＰＩ端子１７１は、プルアップ抵抗を介して電源電位ＶＤＤに接続されている。すなわち、ＧＰＩ端子１７１には、Ｈレベルが入力されている。また、ＧＰＩ端子１７２は、プルダウン抵抗を介して電源電位（接地電位）ＶＳＳに接続されている。すなわち、ＧＰＩ端子１７２には、Ｌレベルが入力されている。
【０１２５】
なお、ここでは、ＧＰＩ回路１７０が２個のＧＰＩ端子１７１、１７２を含むこととしているが、１個又は３個以上のＧＰＩ端子を含んでも良い。また、ＧＰＩ（入力）回路１７０に代えて、ＧＰＩＯ（入出力）回路を用いることとしても良い。また、ここでは、ＧＰＩ端子１７１、１７２がプルアップ又はプルダウンされているが、出力レベルを可変とする出力回路からの出力信号がＧＰＩ端子１７１、１７２に入力されることとしても良い。
【０１２６】
ＵＳＢＩ／Ｆ８０がホスト機能を有する場合には、ＵＳＢにＵＳＢデバイスを接続し、そのＵＳＢデバイスとの間でデータ転送を行うようにしてもよい。
【０１２７】
転送コントローラ１００は、デバイス側Ｉ／Ｆ１６０、ＵＳＢＩ／Ｆ８０の間でのデータ転送を制御する。これにより、メインＣＰＵ６０から転送されてきたデータをＵＳＢ機器１０に書き込んだり、ＵＳＢ機器１０に書き込まれたデータをメインＣＰＵ６０に転送することが可能になる。
【０１２８】
処理部１５０は、ＡＴＡ−ＵＳＢブリッジコントローラ７０の全体的な処理、制御を行ったり、ＡＴＡ−ＵＳＢブリッジコントローラ７０が含む各回路ブロックの制御を行う。この処理部１５０の機能の一部又は全部は、例えばＣＰＵとＣＰＵ上で動作するファームウェアにより実現することができる。なお、処理部１５０を専用のハードウェア回路により実現することもできる。
【０１２９】
本実施形態においては、処理部１５０は、ＣＰＵ１５１と、ＲＡＭ１５２と、ＲＯＭ１５３を含む。ＲＯＭ１５３には、ＯＳ（オペレーティングシステム）、メインタスク、ＡＴＡデバイス側Ｉ／Ｆドライバ、ＡＰＩ、ＩＣコモンファンクションドライバ、ＵＳＢホストクラスドライバ、ＵＳＢホストスタック、ＧＰＩ回路ドライバ等のプログラムやパラメータテーブルが記憶されている。なお、ＲＯＭ１５３は、ＥＥＰＲＯＭ等であっても良い。
【０１３０】
なお処理部１５０をＡＴＡ−ＵＳＢブリッジコントローラ７０に内蔵させず、メインＣＰＵ６０との間のインターフェース処理を行うＣＰＵＩ／Ｆを設けるようにしてもよい。この場合には、ＡＴＡ−ＵＳＢブリッジコントローラ７０やＡＴＡ−ＵＳＢブリッジコントローラ７０が含む各回路ブロックの制御は、ＣＰＵＩ／Ｆを介してメインＣＰＵ６０が行うことになる。
【０１３１】
また処理部１５０を動作させるためのプログラムは、メインＣＰＵ６０側のメモリ（ＥＥＰＲＯＭ等）に記憶しておき、電源投入後にメインＣＰＵ６０がダウンロードコマンドを発行し、ＡＴＡＢＵＳ１を介してＡＴＡ−ＵＳＢブリッジコントローラ７０（ＡＴＡ−ＵＳＢブリッジコントローラが有するメモリ）にダウンロードするようにしてもよい。
【０１３２】
ＣＰＵ１５１は、ＲＡＭ１５２を作業領域として利用しながら、ＲＯＭ１５３に記憶されているプログラムを実行する。
【０１３３】
図１５に、ＣＰＵ１５１がＲＯＭ１５３に記憶されているプログラムを実行することにより実現される機能ブロックを示す。
【０１３４】
ＯＳブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＯＳプログラムを実行することにより実現され、ＲＯＭ１５３内の他のプログラムを動作させるためのオペレーティングシステムブロックであり、タスクの生成や管理、他のソフトウェアブロックに対するサービスコールを提供する。
【０１３５】
ＡＴＡデバイス側Ｉ／Ｆドライバブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＡＴＡデバイス側Ｉ／Ｆドライバプログラムを実行することにより実現されるブロックであり、ＡＴＡデバイス側Ｉ／Ｆ１６０のハードウェアを制御し、メインＣＰＵ６０のＡＴＡホスト側Ｉ／Ｆ６２からＡＴＡデバイス側Ｉ／Ｆ１６０のレジスタ１６２（タスクレジスタ）に書き込まれたコマンドをＡＴＡ／ＡＴＡＰＩプロトコルに則って処理するドライバブロックである。
【０１３６】
メインタスクブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているメインタスクプログラムを実行することにより実現され、他のソフトウェアブロックを統括するブロックであり、メインＣＰＵ６０がデバイス側Ｉ／Ｆ１６０のレジスタ１６２（タスクレジスタ）に設定したコマンドを解析し、ＡＰＩブロックの適切な関数を呼び出してＡＴＡ−ＵＳＢブリッジコントローラ７０の機能を実現するソフトウェアブロックである。
【０１３７】
ＡＰＩブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＡＰＩプログラムを実行することにより実現されるブロックであり、ＡＴＡ−ＵＳＢブリッジコントローラ７０のハードウェアとファームウェアが有する機能をメインタスクブロックに対して関数形式で提供するソフトウェアブロックである。
【０１３８】
ＩＣコモンファンクションブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＩＣコモンファンクションプログラムを実行することにより実現されるブロックであり、ＡＴＡ−ＵＳＢブリッジコントローラ７０の初期設定および、パワーマネージメント機能等、ＡＴＡ−ＵＳＢブリッジコントローラ７０自体の設定や制御を行うソフトウェアブロックである。
【０１３９】
ＵＳＢホストクラスドライバブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＵＳＢホストクラスドライバプログラムを実行することにより実現されるブロックであり、ＵＳＢホストスタックの上位プロトコルを処理するソフトウェアブロックであり、ＵＳＢ規格のＨＩＤクラス、マスストレージクラス、オーディオクラス、ビデオクラス、プリンタクラス、通信デバイスクラス、ピクチャ転送プロトコルクラス等に対応するクラスドライバのブロックである。
【０１４０】
ＵＳＢホストスタックブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＵＳＢホストスタックプログラムを実行することにより実現されるブロックであり、ＵＳＢＩ／Ｆ８０を制御し、ＵＳＢ機器１０の接続／切断処理、パワーマネージメント、エンドポイント毎の転送処理を行うソフトウェアブロックである。
【０１４１】
ＧＰＩ回路ドライバブロックは、ＣＰＵ１５１がＲＯＭ１５３に記憶されているＧＰＩ回路ドライバプログラムを実行することにより実現されるブロックであり、ＧＰＩ回路１７０のハードウェアを制御し、ＧＰＩ回路１７０のＧＰＩ端子１７１、１７２に供給される値（Ｈレベル又はＬレベル）を読み取ってメインタスクブロックに出力する等のＧＰＩ回路１７０を制御する機能を提供するドライバブロックである。
【０１４２】
また、ＲＯＭ１５３には、例えば図１０（ａ）〜（ｃ）に示すような複数のパラメータテーブルが記憶されている。後で説明するように、ＡＴＡ−ＵＳＢブリッジコントローラ７０は、ＧＰＩ回路１７０に外部から入力される信号に基づいて、ＲＯＭ１５３に記憶されている複数のパラメータテーブルの中の１つを選択して、利用する。
【０１４３】
３．２  ＡＴＡのデバイス側Ｉ／Ｆ
図１６にＡＴＡのデバイス側Ｉ／Ｆ１６０の構成例を示す。図１６に示すようにデバイス側Ｉ／Ｆ１６０は、タスクレジスタ２００、ＭＤＭＡ／ＰＩＯ制御部２０２、ＵｌｔｒａＤＭＡ制御部２０４、データバッファ２０６、転送制御部２０８を含む。
【０１４４】
タスクレジスタ２００は、ＡＴＡ（ＩＤＥ）で規格化されているレジスタであり、コマンドブロックレジスタや、コントロールブロックレジスタを含む。ここでコマンドブロックレジスタは、コマンドを発行したりステータスを読み込むのに使用されるレジスタである。またコントロールブロックレジスタは、デバイスをコントロールしたり、代替えステータスを読み込むのに使用されるレジスタである。
【０１４５】
図１７にタスクレジスタ２００のレジスタ構成を示す。図１７は、チップセレクト信号ＣＳ１、ＣＳ０（＃は負論理を示す）が、各々、Ｈ、Ｌレベルの場合にアドレス選択されるコマンドブロックレジスタを示している。図１７において、チップセレクト信号ＣＳ１、ＣＳ０、アドレス信号ＤＡ２、ＤＡ１、ＤＡ０が、各々、Ｈ、Ｌ、Ｈ、Ｈ、Ｈレベルであり、ホストによるレジスタライトの場合には、Ａ１に示すＣｏｍｍａｎｄレジスタにアクセスされ、ホストによるレジスタリードの場合には、Ａ１に示すＳｔａｔｕｓレジスタにアクセスされる。
【０１４６】
ＭＤＭＡ／ＰＩＯ制御部２０２は、ＡＴＡのマルチワードＤＭＡ転送やＰＩＯ転送についてのデバイス側の制御処理を行う。ＵｌｔｒａＤＭＡ制御部２０４は、ＡＴＡのＵｌｔｒａＤＭＡ転送についてのデバイス側の制御処理を行う。データバッファ２０６（ＦＩＦＯ）は、データ転送の転送レートの差を調整（緩衝）するためのバッファである。転送制御部２０８は後段の回路（転送コントローラ１００、データバッファ１０２）との間のデータ転送を制御する。
【０１４７】
次に、ＡＴＡのデータ転送について図１８（Ａ）〜図１９（Ｂ）の信号波形を用いて説明する。図１８（Ａ）〜図１９（Ｂ）においてＣＳ［１：０］は、ＡＴＡの各レジスタにアクセスするために使用するチップセレクト信号である。ＤＡ［２：０］は、データ又はデータポートにアクセスするためのアドレス信号である。ＤＭＡＲＱ、ＤＭＡＣＫは、ＤＭＡ転送に使用される信号である。データ転送の準備が整った時にデバイス側がＤＭＡＲＱをアクティブ（アサート）にし、これに応答して、ホスト側がＤＭＡＣＫをアクティブにする。
【０１４８】
ＤＩＯＷ（ＳＴＯＰ）は、レジスタ又はデータポートの書き込み時に使用するライト信号である。なお、ＵｒｔｒａＤＭＡ転送中はＳＴＯＰ信号として機能する。ＤＩＯＲ（ＨＤＭＡＲＤＹ、ＨＳＴＲＯＢＥ）は、レジスタ又はデータポートの読み出し時に使用するリード信号である。なお、ＵｒｔｒａＤＭＡ転送中はＨＤＭＡＲＤＹ、ＨＳＴＲＯＢＥ信号として機能する。ＩＯＲＤＹ（ＤＤＭＡＲＤＹ、ＤＳＴＲＯＢＥ）は、デバイス側のデータ転送の準備が整っていない時のウェイト信号等に使用される。なお、ＵｒｔｒａＤＭＡ転送中はＤＤＭＡＲＤＹ、ＤＳＴＲＯＢＥ信号として機能する。
【０１４９】
ＩＮＴＲＱは、デバイス側が、ホスト側に対して割り込みを要求するために使用される信号である。このＩＮＴＲＱがアクティブになった後、ホスト側がデバイス側のタスクレジスタのステータスレジスタの内容を読むと、所定時間後にデバイス側はＩＮＴＲＱを非アクティブ（ネゲート）にする。このＩＮＴＲＱを用いることで、デバイス側は、コマンド処理の終了をホスト側に通知できる。
【０１５０】
図１８（Ａ）、（Ｂ）は、ＰＩＯ（Parallel I/O）リード、ＰＩＯライト時の信号波形例である。ＡＴＡのステータスレジスタのリードは図１８（Ａ）のＰＩＯリードにより行い、コマンドレジスタへのライトは図１８（Ｂ）のＰＩＯライトにより行う。例えば、メインＣＰＵ３０によるベンダ定義のコマンドの発行は、ＰＩＯライトにより実現できる。
【０１５１】
図１９（Ａ）、（Ｂ）は、ＤＭＡリード、ＤＭＡライト時の信号波形例である。データ転送の準備ができると、デバイス側が、ＤＭＡＲＱをアクティブにする。そして、それを受けて、ホスト側が、ＤＭＡＣＫをアクティブにして、ＤＭＡ転送を開始する。その後、ＤＩＯＲ（リード時）又はＤＩＯＷ（ライト時）を使用して、データＤＤ［１５：０］のＤＭＡ転送を行う。
【０１５２】
３．３  動作
次に、本実施形態の動作について説明する。本実施形態のＡＴＡ−ＵＳＢブリッジコントローラ７０においてはＵＳＢデバイスを制御するためにＵＳＢ規格で規定されている時間（規格値）に固定することなく、メインＣＰＵ３０からの指示に応じて、ＵＳＢ装置１０の制御に関する時間を変更することとしている。
【０１５３】
３．３．１  初期時における動作
まず、初期時（パワーオン時、リセット時等）におけるＡＴＡ−ＵＳＢブリッジコントローラ７０の動作について説明する。
【０１５４】
図２０は、初期時におけるＡＴＡ−ＵＳＢブリッジコントローラ７０の動作を示すフローチャートである。
まず、ＡＴＡ−ＵＳＢブリッジコントローラ７０のメインタスクブロックが、ＧＰＩ回路ドライバブロックをコールする（ステップＳ１０１）。
【０１５５】
ＧＰＩ回路ドライバブロックは、ＧＰＩ端子１７１、１７２に入力されている信号を検出し、検出した信号に基づく値を戻り値としてメインタスクブロックに返却する（ステップS１１１）。例えば、図１４において、ＧＰＩ回路１７０は、２個のＧＰＩ端子１７１、１７２を含んでいるので、２ビットの入力を外部から受け付けることが可能である。そして、図１４において、ＧＰＩ端子１７１にはＨレベルが、ＧＰＩ端子１７２にはＬレベルがそれぞれ入力されているので、ＧＰＩ回路ドライバは、「０ｂ１０」（或いは「０ｂ０１」としても良い。）という２ビットの戻り値をメインタスクブロックに返却する。
【０１５６】
次に、メインタスクブロックは、ＧＰＩ回路ドライバブロックからの戻り値を引数としてＡＰＩブロックをコールする（ステップＳ１０２）。
【０１５７】
ＡＰＩブロックは、メインタスクブロックからの引数を引数として、ＵＳＢホストスタックブロック内の時間変更関数をコールする（ステップＳ１２１）。
【０１５８】
ＵＳＢホストスタックブロックの時間変更関数は、ＲＯＭ１５３に記憶されている複数のパラメータテーブルの中のＡＰＩブロックからの引数に応じた１つのパラメータテーブルを選択する（ステップＳ１３１）。なお、このとき、ＵＳＢホストスタックブロックの時間変更関数が、選択したパラメータテーブルをＲＯＭ１５３からＲＡＭ１５２に転送し、ＵＳＢ機器１０が接続された場合（後述）等において、ＲＡＭ１５２に転送されたパラメータテーブルを参照して使用するようにしても良い。
【０１５９】
３．３．２  ＵＳＢホストとＵＳＢデバイスが接続された場合における動作
ＵＳＢ機器１０が接続された場合におけるＡＴＡ−ＵＳＢブリッジコントローラ７０の動作は、先に説明したＵＳＢホストコントローラ４０の動作（図１１及び図１２のフローチャート参照）と同様である。
【０１６０】
３．３．３  ＵＳＢデバイスをレジュームさせる場合における動作
サスペンド状態にあるＵＳＢ機器１０をレジュームさせる場合におけるＡＴＡ−ＵＳＢブリッジコントローラ７０の動作は、先に説明したＵＳＢホストコントローラ４０の動作（図１３のフローチャート参照）と同様である。
【０１６１】
以上説明したように、本実施形態によれば、ＵＳＢデバイスを制御するためにＵＳＢ規格で規定されている時間（規格値）に固定することなく、外部から入力される信号に応じて、ＵＳＢ装置１０の制御に関する時間を変更することができる。これにより、ＡＴＡ−ＵＳＢブリッジコントローラ７０がＵＳＢ機器１０を正常に認識できない又はＵＳＢ機器１０が正常に動作しないことを防止することが可能になる。また、ＵＳＢ機器１０がレジューム機能を有しない、いわば規格違反とも言えるＵＳＢデバイス装置であっても、ＡＴＡ−ＵＳＢホストコントローラ７０及び／又はＵＳＢ機器１０がフリーズしてしまうことを防止することが可能になる。
【０１６２】
なお、本実施形態において、メインＣＰＵ６０が、変更対象である時間を特定する情報（時間を表す名称（ＴＡＴＴＤＢ、ＴＤＲＳＴ等）等であっても良い）及び／又は時間値をデバイス側Ｉ／Ｆ１６０のレジスタ１６２（タスクレジスタ）に設定し、ＡＴＡ−ＵＳＢブリッジコントローラ７０が、レジスタ１６２（タスクレジスタ）に設定された時間値を用いてＵＳＢ装置１０の制御に関する時間を変更するようにしても良い。
【０１６３】
また、先に説明した第１の実施形態において、ＵＳＢホストコントローラ７０が、ＧＰＩ回路１７０を含み、ＵＳＢコントローラ７０の処理部１２０が、ＧＰＩ回路１７０に外部から入力される信号に基づいて、ＵＳＢ装置１０の制御に関する時間を変更するようにしても良い。
【０１６４】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語（コントローラ、メインＣＰＵ、ＡＴＡデバイス側Ｉ／Ｆ、ＵＳＢＩ／Ｆ等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またコントローラや電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。例えばＡＴＡバスは、シリアルＡＴＡやＣＥ−ＡＴＡのバスであってもよい。
【図面の簡単な説明】
【０１６５】
【図１】ＵＳＢホストとＵＳＢデバイスが接続された場合のＵＳＢの波形図。
【図２】ＵＳＢホストとＵＳＢデバイスが接続された場合のＵＳＢの波形図。
【図３】ＵＳＢの規格値と市販のＵＳＢデバイスの実測値。
【図４】第１の実施形態のＵＳＢコントローラ、電子機器の構成例。
【図５】処理部の機能ブロックの説明図。
【図６】図６（Ａ）〜（Ｄ）はＵＳＢのデータ転送の説明図。
【図７】図７（Ａ）（Ｂ）はバルクオンリートランスポートの説明図。
【図８】ＵＳＢＩ／Ｆの構成例。
【図９】第１の実施形態のフローチャート。
【図１０】ＵＳＢデバイスの制御に関する時間値の設定例の説明図。
【図１１】第１の実施形態のフローチャート。
【図１２】第１の実施形態のフローチャート。
【図１３】第１の実施形態のフローチャート。
【図１４】第２の実施形態のＵＳＢコントローラ、電子機器の構成例。
【図１５】処理部の機能ブロックの説明図。
【図１６】ＡＴＡのデバイス側Ｉ／Ｆの構成例。
【図１７】ＡＴＡのタスクレジスタの説明図。
【図１８】図１８（Ａ）（Ｂ）はＡＴＡのＰＩＯ転送の信号波形例。
【図１９】図１９（Ａ）（Ｂ）はＡＴＡのＤＭＡ転送の信号波形例。
【図２０】第２の実施形態のフローチャート。
【符号の説明】
【０１６６】
ＡＴＡＢＵＳ１  ＡＴＡバス、
１０  ＵＳＢ機器、２０、５０  電子機器、３０、６０  メインＣＰＵ、
４０  ＵＳＢホストコントローラ、６２  ＡＴＡのホスト側Ｉ／Ｆ、
７０  ＡＴＡ−ＵＳＢブリッジコントローラ、８０  ＵＳＢＩ／Ｆ、
１００  転送コントローラ、１０２  データバッファ、１２０、１５０  処理部、
１２１、１５１  ＣＰＵ、１２２、１５２  ＲＡＭ、１２３、１５３  ＲＯＭ、
１３０  レジスタ、１４０  ＤＭＡ処理部、１６０  ＡＴＡのデバイス側Ｉ／Ｆ、
１６２  ＡＴＡのタスクレジスタ、１７０  ＧＰＩ回路、１７１、１７２  ＧＰＩ端子
【図１】
2009048444.tif 000003
【図２】
2009048444.tif 000004
【図３】
2009048444.tif 000005
【図４】
2009048444.tif 000006
【図５】
2009048444.tif 000007
【図６】
2009048444.tif 000008
【図７】
2009048444.tif 000009
【図８】
2009048444.tif 000010
【図９】
2009048444.tif 000011
【図１０】
2009048444.tif 000012
【図１１】
2009048444.tif 000013
【図１２】
2009048444.tif 000014
【図１３】
2009048444.tif 000015
【図１４】
2009048444.tif 000016
【図１５】
2009048444.tif 000017
【図１６】
2009048444.tif 000018
【図１７】
2009048444.tif 000019
【図１８】
2009048444.tif 000020
【図１９】
2009048444.tif 000021
【図２０】
2009048444.tif 000022