(57)【要約】【課題】メモリカードとホストコントローラ間のキャリブレーション処理に関してデバイスドライバ側に生じる処理の負荷を軽減する。【解決手段】ホストコントローラにおいて、デバイスドライバからのキャリブレーションコマンド発行要求に応じて、メモリカードに対し１つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、キャリブレーションコマンドに応答してメモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段とを備える。【選択図】図３
2011113521.tif 000002
【特許請求の範囲】
【請求項１】
メモリカードを制御するホストコントローラであって、
本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、
本ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、
前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、
前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段と
を備えることを特徴とするホストコントローラ。
【請求項２】
前記受信データ正当性判定手段によるキャリブレーション用データの正当性の判定結果に基づき、動作モードを決定し、決定された動作モードに遷移させる遷移手段をさらに備えることを特徴とする請求項１に記載のホストコントローラ。
【請求項３】
特定の動作モードへ強制的に遷移させる強制遷移モードを有し、該強制遷移モードにおいて、前記遷移手段は、強制的に特定の動作モードへの遷移を行うことを特徴とする請求項２に記載のホストコントローラ。
【請求項４】
メモリカードを制御するホストコントローラ用のデバイスドライバと、
前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段、
前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段、
前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段、および、
前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段を有するホストコントローラと
を備えることを特徴とする情報処理装置。
【請求項５】
前記ホストコントローラは、前記受信データ正当性判定手段によるキャリブレーション用データの正当性の判定結果に基づき、動作モードを決定し、決定された動作モードに遷移させる遷移手段をさらに有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
特定の動作モードへ強制的に遷移させる強制遷移モードを有し、該強制遷移モードにおいて、前記遷移手段は、強制的に特定の動作モードへの遷移を行うことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記通知手段により通知された前記受信データ正当性判定手段による判定結果を基に、前記デバイスドライバが、キャリブレーションの成否を判定することを特徴とする請求項４から請求項６のいずれか１項に記載の情報処理装置。
【請求項８】
メモリカードを制御するホストコントローラにおける情報処理方法であって、
前記ホストコントローラのキャリブレーションコマンド発行手段により、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するステップと、
前記ホストコントローラのデータ受信手段により、前記ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、
前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、
前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップと
を含むことを特徴とする情報処理方法。
【請求項９】
メモリカードを制御するホストコントローラと専用のデバイスドライバとを備えた情報処理装置における情報処理方法であって、
前記ホストコントローラのキャリブレーションコマンド発行手段により、前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するステップと、
前記ホストコントローラのデータ受信手段により、前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、
前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、
前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップと
を含むことを特徴とする情報処理方法。
【請求項１０】
メモリカードを制御するホストコントローラであって、
本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対しキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、
既定の受信データサンプリングクロック位相設定の１つについて、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、
前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、
前記キャリブレーションコマンド発行手段、前記データ受信手段受信および前記データ正当性判定手段による一連の処理を、既定の受信データサンプリングクロック位相設定の各々について順次実施させるループ手段と、
前記受信データ正当性判定手段による判定結果からキャリブレーションの成否を判定するキャリブレーション成否判定手段と、
前記キャリブレーション成否判定手段による判定結果を前記デバイスドライバに通知する通知手段と
を備えることを特徴とするホストコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードとホストコントローラ間で通信を確立する際のキャリブレーションの技術に関する。
【背景技術】
【０００２】
従来より、デバイス間で通信を確立する際、デバイス間でキャリブレーションが行われる。例えば、特許文献１に開示のシリアルＡＴＡのデータ転送制御装置のような装置においても、インターフェースの初期化の際キャリブレーション処理が行われる。
【０００３】
また、パーソナルコンピュータ等からホストコントローラを介してメモリカードにアクセスする場合、このパーソナルコンピュータに実装された専用のデバイスドライバがホストコントローラを制御する。そして、メモリカードへのアクセスを開始する際、デバイス間で通信を確立するためにキャリブレーション処理が行われるが、この処理は、通常、デバイスドライバがホストコントローラを制御することによって行われる。
【０００４】
例えば、高速タイプのメモリカードに対して、ホストコントローラがメモリカードからの受信データサンプリング用のクロック位相を可変に制御できるものがある。このようなシステムでは、ホストコントローラ側で順次受信データサンプリング用のクロック位相をシフトさせてキャリブレーション処理を行うように、デバイスドライバがホストコントローラに対して逐次にキャリブレーションコマンドを発行するといった制御が行われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２３３９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ホストコントローラに対してデバイスドライバがキャリブレーションコマンドを逐次発行するといった制御をするのでは、デバイスドライバの負荷が大きい。また、特定のメモリカードを使用する場合や、品質がよく個体毎の特性のばらつきが少ないメモリカードを使用する場合では、キャリブレーション処理自体を簡略化することも可能であるが、こうした場合にも、上記のような制御をするのは、効率的ではなかった。
【０００７】
本発明は、上記に鑑みてなされたものであって、メモリカードとそのホストコントローラ間で通信を確立する際のキャリブレーション処理に関して、デバイスドライバ側に生じる処理の負荷を軽減することができ、また、通信を確立する際の処理の高速化も可能とするホストコントローラ、情報処理装置および情報処理方法を提供するものである。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、メモリカードを制御するホストコントローラであって、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、本ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段とを備えることを特徴とする。
【０００９】
また、本発明は、メモリカードを制御するホストコントローラ用のデバイスドライバと、前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段、前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段、前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段、および、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段を有するホストコントローラとを備えることを特徴とする。
【００１０】
また、本発明は、メモリカードを制御するホストコントローラにおける情報処理方法であって、前記ホストコントローラのキャリブレーションコマンド発行手段により、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するステップと、前記ホストコントローラのデータ受信手段により、前記ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップとを含むことを特徴とする。
【００１１】
また、本発明は、メモリカードを制御するホストコントローラと専用のデバイスドライバとを備えた情報処理装置における情報処理方法であって、前記ホストコントローラのキャリブレーションコマンド発行手段により、前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し１つのキャリブレーションコマンドを発行するステップと、前記ホストコントローラのデータ受信手段により、前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップとを含むことを特徴とする。
【００１２】
また、本発明は、メモリカードを制御するホストコントローラであって、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対しキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、既定の受信データサンプリングクロック位相設定の１つについて、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、前記キャリブレーションコマンド発行手段、前記データ受信手段受信および前記データ正当性判定手段による一連の処理を、既定の受信データサンプリングクロック位相設定の各々について順次実施させるループ手段と、前記受信データ正当性判定手段による判定結果からキャリブレーションの成否を判定するキャリブレーション成否判定手段と、前記キャリブレーション成否判定手段による判定結果を前記デバイスドライバに通知する通知手段とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、メモリカードとそのホストコントローラ間で通信を確立する際のキャリブレーション処理に関して、デバイスドライバ側に生じる処理の負荷を軽減することができる。さらに、キャリブレーション処理の高速化や、メモリカードとそのホストコントローラ間での通信確立の高速化も達成される。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明にかかる情報処理装置の一実施形態としてのノートブック型パーソナルコンピュータの外観を示す図である。
【図２】図２は、第１の実施形態におけるホストコントローラの概略構成を示すブロック図である。
【図３】図３は、第１の実施形態におけるキャリブレーション処理制御ブロックの構成を示すブロック図である。
【図４】図４は、第１の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおけるキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【図５】図５は、第１の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおけるシングルキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【図６】図６は、第１の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおける可変遅延出力受信モード強制遷移処理時のそれぞれの処理の流れを並列に示したフローチャートである。
【図７】図７は、第２の実施形態におけるキャリブレーション処理制御ブロックの概略構成を示す図である。
【図８】図８は、第２の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおけるキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、本発明にかかる情報処理装置について、図面に基づいて詳細に説明する。なお、以下に説明する諸実施形態により本発明が限定されるものではない。
【００１６】
（実施形態１）
図１は、本発明にかかる情報処理装置の一実施形態としてのノートブック型パーソナルコンピュータ（以下、ＰＣ１と称す）の外観を示す図である。
【００１７】
ＰＣ１は、本体１１と、表示ユニット１２とを備えている。本体１１は、キーボード１３と、ポインティングデバイスであるタッチパッド１４とを備えている。本体１１内部には、メイン回路基板、同図符号２で示す破線部分のＳＤ（Secure Digital）カードホストコントローラ（詳細は後述；以下、ホストコントローラと称す）、ＯＤＤユニット（Optical Disk Device）、ＳＤカードスロット等が収容されている。
【００１８】
ＳＤカードスロットは、本体１１の周壁に設けられている。この周壁には、ＳＤカードスロット用の開口部１５が設けられている。ユーザは、この開口部１５を通じて本体１１の外部からＳＤカード３をカードスロットに挿抜することが可能である。
【００１９】
ＰＣ１には、ホストコントローラ２を制御するためのデバイスドライバであるＳＤ  Ｈｏｓｔドライバ（以下、ホストドライバと称す）がインストールされており、このホストドライバとホストコントローラ２により、ＳＤカードスロットに装着されたＳＤカード３に対するリード／ライト処理やキャリブレーション処理等を行う。
【００２０】
なお、本実施形態では、ホストコントローラ２をＰＣ１に内蔵する構成としているが、ホストコントローラ２を、ＵＳＢインターフェースやその他のインターフェースを介して外付けされるＳＤカードリーダ／ライタ等に内蔵させた構成とすることもできる。また、本実施形態では、ホストコントローラ２の制御対象としてＳＤカードを例に挙げ説明するが、これに限らず、後述のキャリブレーション処理を適用できるメモリカードであれば、その他のメモリカードであってもよい。
【００２１】
また、以下に説明するホストドライバによる処理に関して、ホストコントローラ２内部にマイコンを持ち、そのファームウェアが担うような構成をとってもよい。
【００２２】
また、情報処理装置としては、上記のようなパーソナルコンピュータに限らず、携帯電話、ＰＤＡ（Personal Digital Assistant）、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビジョン受像機等もあり、これらについても本発明を適用することができる。
【００２３】
次に、ホストコントローラ２の構成について、図２を用いて説明する。図２は、ホストコントローラ２の概略構成を示すブロック図である。
【００２４】
ホストコントローラ２は、ホストドライバにより制御される。ホストドライバによる各種要求は、制御部２１内のシステムバスインターフェースを通じて、制御部２１に渡される。キャリブレーションの際は、ホストドライバからキャリブレーションコマンド発行要求が制御部２１に渡される。このキャリブレーションコマンド発行要求に対して、キャリブレーションコマンド処理制御ブロック２１ａがキャリブレーション処理を実行する（詳細は後述）。
【００２５】
クロックジェネレータ（Clock Generator）２２は、キャリブレーション処理制御ブロック２１ａからの位相設定値通知に応じて、受信データサンプリング用のクロック位相をシフトさせて、サンプリングクロックをＩ／Ｏコントローラ２３の同期回路（Sync）２３ａに供給する。
【００２６】
Ｉ／Ｏコントローラ２３は、ＳＤカードスロットに装着されたＳＤカード３に対するコマンドを、ＳＤバスプロトコルに従ったコマンドとしてＳＤカード３に送信し、ＳＤカード３からのデータを受信する。同期回路（Sync）２３ａは、クロックジェネレータ２２からのサンプリングクロックで、ＳＤカード３からの受信データをサンプリングし、制御部２１へ渡す。ＰＣ１のＣＰＵ（図示せず）からＳＤカード３へのアクセス時には、同期回路（Sync）２３ａでサンプリングされた受信データが、制御部２１内のシステムバスインターフェースを介してＰＣ１のＣＰＵへ送られる。一方、キャリブレーション時には、ホストドライバとキャリブレーション処理制御ブロック２１ａとが協働してキャリブレーション処理を実行することにより（後述）、ホストコントローラ２とＳＤカードスロットに装着されたＳＤカード３間のキャリブレーションが行われる。
【００２７】
続いて、キャリブレーション処理制御ブロック２１ａの構成について、図３を用いて説明する。図３は、キャリブレーション処理制御ブロック２１ａの構成を示すブロック図である。同図に示す構成は、ホストコントローラ２で、キャリブレーション処理の完了、及びその成否の管理を実現するための構成となっている。
【００２８】
サンプリングクロック位相設定値制御部３１は、ホストドライバからのキャリブレーションコマンド発行要求を受けて、データ受信用のサンプリングクロックの位相設定を選択し切り換える制御をする。キャリブレーションコマンド発行処理部３２は、サンプリングクロック位相設定値制御部３１によるサンプリングクロックの位相設定後、ＳＤカード３へのキャリブレーションコマンドを発行する。キャリブレーションコマンド受信データ正当性確認部３３は、キャリブレーションコマンドの発行に応じてＳＤカード３から返される所定の特定パターンの受信データの正当性を確認する（すなわち、選択されたサンプリングクロック位相で正しく受信できたかを確認する）。
【００２９】
キャリブレーション正当性確認結果保持部３６は、キャリブレーションコマンド受信データ正当性確認部３３による正当性確認結果を格納保持するレジスタである。データサンプリングウィンドウサーチ部３５は、キャリブレーション正当性確認結果保持部３６に保持してある正当性確認結果を用いて、データ受信用サンプリングクロックのデータサンプリングウィンドウ（Window）を導出する。すなわち、受信データを正しく受信できたサンプリングクロック位相の範囲を導出する。
【００３０】
キャリブレーション成否判定部３４は、これらの、キャリブレーションコマンド発行後のキャリブレーション処理結果から、キャリブレーションの成否を判定する。ステータスレジスタ３７は、一連のキャリブレーション結果としてのステータス（キャリブレーション完了を示すキャリブレーション完了ステータス、キャリブレーションの結果の正当性を示すキャリブレーション正当性ステータス、キャリブレーションの続行を示すキャリブレーション継続要求ステータス）を保持するレジスタである。
【００３１】
また、キャリブレーション処理制御ブロック２１ａには、一連のキャリブレーション処理の管理を行う管理部として、通常（ＳＤＡ標準）モード時に機能するキャリブレーション処理管理部３８と、シングルキャリブレーションモード時に機能するシングルキャリブレーションコマンド処理管理部３９と、強制遷移モード時に機能する可変遅延出力受信モード強制遷移処理管理部４０がある。
【００３２】
上記通常モードとは、従来と同様の、ＳＤＡ（SD Card Association）標準のキャリブレーション処理を実行するモードである。このモードでは、規定されるすべてのサンプリングクロック位相について、受信データの正当性の確認を行うキャリブレーション処理を実行する（以下では、通常モード時の動作についての説明は省略する）。シングルキャリブレーションモードとは、デバイスドライバから指定された１つのサンプリングクロック位相について、受信データの正当性の確認を行うキャリブレーション処理を実行するモードである。強制遷移モードとは、このモードが指定された場合、キャリブレーションが成功したとみなして、可変遅延出力受信モード（後述）に強制的に遷移させるモードである。
【００３３】
システムバスインターフェース４１は、デバイスドライバからのキャリブレーションコマンド発行要求や各種設定を受け、また、デバイスドライバへ、上記各管理部の制御により各種ステータス（データ受信完了フラグ、キャリブレーション開始フラグ、サンプリングクロック選択等必要な情報）やステータス確認タイミング等の通知を送る。
【００３４】
続いて、キャリブレーション時のホストドライバとホストコントローラ２の動作について、図４を用いて説明する。図４は、ホストドライバおよびこのホストドライバと協働するホストコントローラ２におけるキャリブレーション時の処理の流れを並列に示したフローチャートである。
【００３５】
はじめに、キャリブレーション成否判定に必要なシングルキャリブレーション成否情報が必要か判断する（ステップＳ４０１）。特定のＳＤカードが使用される場合などでは、キャリブレーションが成功しているものとみなして、キャリブレーション処理を省略することができるが（強制遷移モード）、そうでない場合、キャリブレーション成否判定を行うことになる。このステップでは、シングルキャリブレーション成否情報が必要な場合（Ｙｅｓの判定）、ステップＳ４０２へ移行する。
【００３６】
ステップＳ４０２では、さらに、既存の（先に行われたキャリブレーションの結果、保持されている）判定の結果ではなく新たにシングルキャリブレーション成否情報が必要か判断する。例えば不明のＳＤカードに対し通信を確立する場合など、新たにキャリブレーション成否情報が必要な場合（ステップＳ４０２でＹｅｓ）、ステップＳ４０３のループ処理へ移行する。このループ処理において、必要なキャリブレーション成否情報の取得が完了するまで、ステップＳ４０４のシングルキャリブレーション処理（後述）を実行し、必要なキャリブレーション成否情報の取得が完了するとこのループを抜けステップＳ４０５へ移行する。なお、ここでの、必要なキャリブレーション成否情報を取得するためのループ回数（すなわち、シングルキャリブレーション処理を実行する回数）は、ソフトウェアであるホストドライバで制御するのでプログラマブルに設定可能である。例えば、品質のよい特性の揃ったＳＤカードの使用を前提とする場合、ループ中のシングルキャリブレーション処理を間引いて実行させることも可能となる。
【００３７】
ステップＳ４０５では、既存または新規に取得したキャリブレーション成否情報を基に、キャリブレーションの成否を確認し、ステップＳ４０６へ移行する。ここでは、ＳＤカード３からの受信データをサンプリングクロックで受け取れる位相ポイントの範囲（すなわち、Window）が見つかったかを確認する。例えば、４つの位相ポイントでＳＤカード３からの受信データを正しくサンプリングできた場合、Window幅＝４のWindowが確認できたことになる。なお、強制遷移モードである場合（先のステップＳ４０１でＮｏ）は、キャリブレーションが成功したものとしてステップＳ４０５へ移行する。
【００３８】
ステップＳ４０６では、可変遅延出力受信モードが利用可能であるか判断する。ここでは、先のステップＳ４０５でWindowが確認済みであり、かつ、その幅が設定値以上である場合に、可変遅延出力受信モードが利用可能であると判定する。可変遅延出力受信モードが利用可能である場合（本ステップでＹｅｓの判定）、ステップＳ４０９へ移行する。なお、所望のWindow幅は、キャリブレーション実行前にレジスタに設定される。
【００３９】
一方、可変遅延出力受信モードが利用可能でないと判定される場合（本ステップでＮｏの判定）、すなわち、先のステップＳ４０５でWindowが確認できなかった場合、または、先のステップＳ４０５でWindowが確認できたが、その幅が設定値より足りなかった場合はステップＳ４０７へ移行する。
【００４０】
ステップＳ４０７では、固定遅延出力受信モードへの遷移が必要であるか判断する。この段階では、可変遅延出力受信モードが利用できないので、固定遅延出力受信モードとする必要がある。固定遅延出力受信モードへの遷移が必要である場合（本ステップでＹｅｓの判定）、ステップＳ４０８へ移行し、当該ステップで固定遅延出力受信モード遷移処理を実行し、固定遅延出力受信モードの状態とする。
【００４１】
このとき、最後に行われた先のステップＳ４０４でのシングルキャリブレーション処理で、サンプリングクロック位相が固定遅延出力受信モードでの位相でなくなっているとき、サンプリングクロック位相を固定遅延出力受信モードでの位相に戻す必要がある。すなわち、最後に行ったシングルキャリブレーションにより、サンプリングクロック位相が０（固定遅延出力受信モードでの位相位置）以外にある場合は、これを０に戻す必要がある。一方、サンプリングクロック位相が０にある場合は、位相を戻す必要は無いので、サンプリングクロックの位相はそのままに、ステップＳ４１３へ移行する。
【００４２】
なお、固定遅延出力受信モード（カードからの出力遅延が固定なデータを受信するモード）とは、ＳＤカード３からの出力データ遅延が固定で、ホストコントローラ２はキャリブレーションなしでサンプリング用クロック位相は固定のままで、データ受信が可能な（低速）モードである。可変遅延出力受信モード（ＳＤカードからの出力遅延が可変なデータを受信するモード）とは、カードからの出力データの遅延が可変で、ホストコントローラ２は、キャリブレーション実施後、受信データに対するWindow（データサンプリングウィンドウ）に、サンプリングクロックの位相を調整して、データ受信を行う（高速）モードである。
【００４３】
一方、先のステップＳ４０６で、可変遅延出力受信モードが利用可能であると判定された場合は（ステップＳ４０６でＹｅｓの判定）、ステップＳ４０９へ移行する。ここではWindowが確認済みでありWindow幅も設定値を満たしているので、最終的なサンプリングクロック位相を設定する必要がある。したがって、ステップＳ４０９では、さらに、設定を変えての可変遅延出力受信モードへの遷移が必要であるか判断する。このとき、最後に行われた先のステップＳ４０４でのシングルキャリブレーション処理でのサンプリングクロック位相のままで問題無い場合は（すなわち、このサンプリングクロック位相がWindow内にある場合）、位相の設定を変える必要がないので、本ステップでＮｏと判定され、ステップＳ４１３へ移行する。
【００４４】
一方、最後に行われた先のステップＳ４０４でのシングルキャリブレーション処理でのサンプリングクロック位相から設定を変更する必要がある場合（例えば、このサンプリングクロック位相がWindow内にない場合など）、本ステップで、設定を変えての可変遅延出力受信モードへの遷移が必要であると判定され（Ｙｅｓの判定）、ステップＳ４１０へ移行する。例えば、Windowが位相ポイント０〜３からなる場合、サンプリングクロック位相として、位相ポイント０〜３のいずれかを選択可能である。ところが、最後に行われた先のステップＳ４０４でのシングルキャリブレーション処理でのサンプリングクロック位相がその他の位相ポイントとなっている場合は、サンプリングクロック位相を位相ポイント０〜３のいずれかに設定し直す必要がある。このような場合に「設定を変えての可変遅延出力受信モードへの遷移が必要である」と判定される。
【００４５】
ステップＳ４１０では、さらに、検証（Verify）が必要か決定する。ここでは、最終的なサンプリングクロックの位相を一つ設定した後に、この位相で確かにデータが受け取れるかを検証するかどうかを選択する。ここで検証をするかしないかは、例えば、サンプリングクロック位相を変更した場合は、基本的にはキャリブレーションを行う（したがって、検証を行う）ものとするが、（１）既にWindowが明らかで、そのWindow内の位相設定であれば、キャリブレーションは省略することができるので、この場合には、検証は不要と決定する。また、（２）Window内の中央付近にサンプリングクロック位相を設定するのではなく、Window内ではあるが、Windowの端ぎりぎりにサンプリングクロック位相を設定する場合は、念のために、キャリブレーションを実施することとして、このような場合には検証が必要と決定する。Windowの端部における受信データのサンプリングは、何らかの原因（温度／電圧等の僅かな変化）で失敗する可能性がある。このようなケースを考慮して、前回のステップＳ４０４でのシングルキャリブレーション処理は、たまたま成功していたという立場を取って、より厳密な立場で検証を行うこととする。また、（３）ステップＳ４０３のループ処理で行うステップＳ４０４のシングルキャリブレーション処理を間引き、Windowを導出した場合は、ステップＳ４１０の検証（Verify）が必要と決定し、間引かなかった場合は、検証（Verify）は不要と決定する。これは、ステップＳ４０４で、所定の全位相ポイントでのキャリブレーション処理を行ってWindowを見つけた場合には、得られたWindowは厳密な結果なので、少しでも処理の軽減を考えてステップＳ４１０の検証（Verify）をスキップすることとした。
【００４６】
本ステップで、検証が必要であると決定された場合（ステップＳ４１０でＹｅｓ）、ステップＳ４１１へ移行し、後述のシングルキャリブレーション処理を実行する。このとき設定した一つの位相でシングルキャリブレーションを行う。通常は、ここでキャリブレーションはＯＫとなるはずだが、何らかの原因でＮＧとなった場合は、この処理の中で固定遅延出力受信モードに遷移させる。そして、ステップＳ４１３へ移行する。
【００４７】
一方、検証が必要でない場合（ステップＳ４１０でＮｏ）、ステップＳ４１２へ移行し、ステップＳ４１２で、後述する可変遅延出力受信モード強制遷移処理を実行する。ここで最終的なサンプリングクロックの位相を設定し、強制的に可変遅延出力受信モードに遷移させる。そして、ステップＳ４１３へ移行する。
【００４８】
以上の一連の処理後、ホストコントローラ２は動作モードを認識して、キャリブレーションを終了する。
【００４９】
次に、シングルキャリブレーション処理について、図５を用いて説明する。図５は、ホストドライバおよびこのホストドライバと協働するホストコントローラ２におけるシングルキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【００５０】
はじめに、ホストドライバ側にて、キャリブレーション実施用設定がなされる（ステップＳ５０１）。具体的には、可変遅延出力受信モードにおける動作モード（通常モード、シングルキャリブレーションモード、強制遷移モード、オートモード（後述）の内、ここではシングルキャリブレーションモード）の設定やキャリブレーションの成否判定を行うための設定（例えば、所望のWindow幅（データサンプリングウィンドウ幅）の設定）等がなされる。
【００５１】
次いで、ホストドライバがホストコントローラ２に対してキャリブレーションコマンド発行要求をし（ステップＳ５０２）、サンプリングクロック位相設定値を選択する（ステップＳ５０３）。このサンプリングクロック位相設定値は、標準では、所定のポイント数分の設定値が順次選択されることになるが、特定のＳＤカードや特性のばらつきの少ない品質の良いＳＤカードを用いる場合には、この設定値の選択を所定のポイント数の全数を対象とするのではなく、一部を対象として選択するようにすることもできる。このように、本実施形態では、サンプリングクロック位相設定値の選択をホストコントローラ２側でなくホストドライバ側で行うことにより、サンプリングクロック位相設定値をプログラマブルに選択できるようにしている。
【００５２】
続いて、ホストコントローラ２が、サンプリングクロック位相の設定を、ホストドライバ側で選択指定されたサンプリングクロック位相設定値を用いて設定変更し、サンプリングクロックの安定を待つ（ステップＳ５０４）。
【００５３】
次に、ホストコントローラ２が、ＳＤカードスロットに装着されているＳＤカード３に対し、所定のキャリブレーションコマンドを発行する（ステップＳ５０５）。このキャリブレーションコマンドを受けたＳＤカード３は、特定パターンのデータを返信する。
【００５４】
ホストコントローラ２は、ＳＤカード３からのデータを受信し、この受け取ったデータパターンを期待値と比較して正当性を確認することにより受信処理結果の判定を行い、シングルキャリブレーション処理の成否情報を生成する（ステップＳ５０６）。
【００５５】
続いて、ホストコントローラ２は、ステップＳ５０６での判定結果に基づき、動作モード（可変遅延出力受信モード／固定遅延出力受信モード）を決定し、その動作モードへ遷移する。具体的には、ＳＤカード３からのデータを正しく受け取れた場合は、可変遅延出力受信モードに遷移させ、ＳＤカード３からのデータを正しく受け取れなかった場合は、固定遅延出力受信モードに遷移させる（ステップＳ５０７）。
【００５６】
続いて、ホストコントローラ２は、シングルキャリブレーション処理の成否情報および動作モード等をステータスとしてホストドライバに通知する（ステップＳ５０８）。
【００５７】
ホストコントローラ２からステータス通知を受けたホストドライバは、シングルキャリブレーション処理の成否を確認して（ステップＳ５０９）、一連のシングルキャリブレーション処理を終了する。
【００５８】
（可変遅延出力受信モード強制遷移処理）
次に、可変遅延出力受信モード強制遷移処理について、図６を用いて説明する。図６は、ホストドライバおよびこのホストドライバと協働するホストコントローラ２における可変遅延出力受信モード強制遷移処理時のそれぞれの処理の流れを並列に示したフローチャートである。
【００５９】
はじめに、ホストドライバ側にて、キャリブレーション実施用設定がなされる（ステップＳ６０１）。具体的には、可変遅延出力受信モードにおける動作モード（通常モード、シングルキャリブレーションモード、強制遷移モード、オートモード（後述）の内、ここでは強制遷移モード）の設定やキャリブレーションの成否判定を行うための設定（例えば、所望のWindow幅（データサンプリングウィンドウ幅）の設定）等がなされる。
【００６０】
次いで、ホストドライバが、所定のサンプリングクロック位相設定値を選択する（ステップＳ６０２）。
【００６１】
続いて、ホストコントローラ２が、サンプリングクロック位相の設定を、ホストドライバ側で選択指定されたサンプリングクロック位相設定値を用いて設定変更し、サンプリングクロックの安定を待つ（ステップＳ６０３）。
【００６２】
次に、ホストコントローラ２が、強制的に可変遅延出力受信モードへの遷移処理を行う（ステップＳ６０４）。
【００６３】
続いて、ホストコントローラ２は、動作モード（可変遅延出力受信モードの状態になっていること）をステータスとしてホストドライバに通知する（ステップＳ６０５）。
【００６４】
ホストコントローラ２からステータス通知を受けたホストドライバは、可変遅延出力受信モードへの遷移完了を検知して（ステップＳ６０６）、一連の可変遅延出力受信モード強制遷移処理を終了する。
【００６５】
以上、キャリブレーション時のホストドライバおよびホストコントローラ２の動作の詳細を説明した。以上の処理により、キャリブレーションの必要がない特定のＳＤカードや特性が分かっているＳＤカードを使用する場合など、強制的に可変遅延出力受信モードに遷移させたり（Ｓ４１２）、固定遅延出力受信モードへ遷移させることで（Ｓ４０８）、キャリブレーションのためのループ処理を省略することができ、ホストドライバにかかる負荷を軽減することができる。
【００６６】
また、キャリブレーションを行う場合でも、サンプリングクロック位相設定値の選択を、ＳＤＡ（SD Card Association）標準のようにホストコントローラ２側で行うのではなくホストドライバ側で行うので、標準の設定よりも間引いた設定を行うなどのプログラマブルな設定が行え、品質の良い特性にばらつきが少ないＳＤカードを使用する場合などでは、キャリブレーションのためのループ処理のループ回数を減らしてホストドライバの負荷を軽減することができる。
【００６７】
このように、本実施形態では、ホストドライバへの処理負担をできるだけ減らす形でホストドライバによるプログラマブルな処理が可能となり、よりシステムに応じた効率的なキャリブレーションの実施が可能となっている。
【００６８】
（実施形態２）
次に、本発明にかかる情報処理装置の第２の実施形態について説明する。本実施形態と前述の第１の実施形態とは、ホストコントローラ２に含まれるキャリブレーション処理制御ブロックの構成、およびホストドライバとホストコントローラ２間の動作のみ異なり、その他については第１の実施形態と同様であるので、以下では、第１の実施形態との相違点についてのみ図面を用いて説明する。なお、図面において、第１の実施形態のものと同一の構成要素には同一の符号を付している。
【００６９】
図７は、本実施形態におけるキャリブレーション処理制御ブロック２１ｂの構成を示す図である。前述の第１の実施形態と異なるのは、シングルキャリブレーション処理管理部３９と可変遅延出力受信モード強制遷移処理管理部４０を備えていない点と、新たに、オートモードキャリブレーション処理管理部７１を設けた点である。このオートモードキャリブレーション処理管理部７１によるキャリブレーション処理については、以下の動作説明にてその詳細を説明する。
【００７０】
続いて、本実施形態におけるキャリブレーション時のホストドライバとホストコントローラ２の動作について、図８を用いて説明する。図８は、本実施形態におけるホストドライバおよびこのホストドライバと協働するホストコントローラ２におけるキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【００７１】
図８に示すホストドライバ側の処理は、標準のキャリブレーション処理におけるホストドライバによる処理と同様のものとなっている。すなわち、はじめに、ホストドライバ側にて、キャリブレーション実施用設定がなされる（ステップＳ８０１）。具体的には、可変遅延出力受信モードにおける動作モード（ここでは、オートモード）の設定やキャリブレーションの成否判定を行うための設定（例えば、所望のWindow幅（データサンプリングウィンドウ幅）の設定）等がなされる。
【００７２】
続いて、キャリブレーションのためのループ処理（ループＡ：ステップＳ８０２）に移る。このループ処理において、ホストドライバは、ホストコントローラ２に対してキャリブレーションコマンド発行要求をする（ステップＳ８０３）。
【００７３】
ホストドライバからのキャリブレーションコマンド発行要求を受けたホストコントローラ２は、キャリブレーションのためのループ処理（ループＢ：ステップＳ８０４）を行う。
【００７４】
このループ処理（ループＢ）において、まず、サンプリングクロック位相設定値を選択し設定変更（設定切り換え及びクロックの安定待ち）をする（ステップＳ８０５）。ここでは、サンプリングクロック位相設定値として、標準と同様に、所定のポイント数分の設定値が順次選択され、設定変更されることになる。
【００７５】
次に、ホストドライバが、ＳＤカードスロットに装着されているＳＤカード３に対し、所定のキャリブレーションコマンドを発行する（ステップＳ８０６）。このキャリブレーションコマンドを受けたＳＤカード３は、特定パターンのデータを返信する。
【００７６】
ホストコントローラ２は、ＳＤカード３からのデータを受信し、この受け取ったデータパターンを期待値と比較して正当性を確認することにより受信処理結果の判定（受信データの正当性の判定）を行い、選択されたサンプリングクロック位相における受信処理結果情報を生成する（ステップＳ８０７）。
【００７７】
以上のステップＳ８０４〜Ｓ８０７の一連の処理を所定のポイント数分繰り返すと、キャリブレーションが完了したものとしてループＢを抜け、ステップＳ８０８へ移行する。
【００７８】
ステップＳ８０８では、ホストコントローラ２が、ステップＳ８０７での判定結果（受信処理結果情報）に基づき、キャリブレーションの成否を判定するとともに、所定の動作モード（可変遅延出力受信モード／固定遅延出力受信モード）への遷移処理を行う。
【００７９】
続いて、キャリブレーション処理の成否情報および動作モードをステータスとしてホストドライバに通知する（ステップＳ８０９）。
【００８０】
ホストコントローラ２からステータス通知を受けたホストドライバは、キャリブレーションの完了を検知し、ループＡを抜け、ステップＳ８１０へ移行する。
【００８１】
ステップＳ８１０で、ホストドライバは、ホストコントローラ２から受けたステータスにより、動作モードを認識し、一連のキャリブレーション処理を完了する。
【００８２】
本実施形態では、ＳＤＡ標準に準拠する通常モードにおけるキャリブレーション処理と異なり、キャリブレーションコマンドを、ホストコントローラ２内部でキャリブレーション完了検知結果に即して自動生成し、必要なキャリブレーションが完了するまで繰返し発行している。その結果、通常モードではキャリブレーションコマンド毎に通知制御を行うものを、キャリブレーション完了検知時に一度に集約して通知することで済ませることができる。つまり、ホストドライバから見た一連の処理シーケンスはＳＤＡ標準と基本的に変わらず、ただ１回のキャリブレーションコマンド発行要求の実施で、すべてが完了したように見えるものとなっている。
【００８３】
このように、本実施形態のホストコントローラ２は、ＳＤＡ標準のホストドライバで動作が可能である。その一方で、本実施形態のホストコントローラ２は、キャリブレーションコマンド発行の繰返し分のホストコントローラ２からホストドライバへの割り込み処理によるオーバヘッドを削減でき、高速なキャリブレーションを行うことができるものとなる。
【００８４】
（その他の形態）
前述のホストドライバ（ソフトウェア）は、ＲＯＭ、ＨＤＤ等に予め組み込まれて提供される。また、上記ソフトウェアは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（FD）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）、ＳＤカード等のメモリカードなどのコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。あるいは、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供または配布するように構成しても良い。
【符号の説明】
【００８５】
１…ＰＣ、２…ホストコントローラ、３…ＳＤカード、１１…（ＰＣ１の）本体、１２…表示ユニット、１３…キーボード、１４…タッチパッド、１５…開口部、２１…制御部、２１ａ，２１ｂ…キャリブレーション処理制御ブロック、２２…クロックジェネレータ、２３…Ｉ／Ｏコントローラ、２３ａ…同期回路（Sync；データ受信手段）、３１…サンプリングクロック位相設定値制御部、３２…キャリブレーションコマンド発行処理部（キャリブレーションコマンド発行手段）、３３…キャリブレーションコマンド受信データ正当性確認部（受信データ正当性判定手段）、３４…キャリブレーション成否判定部、３５…データサンプリングウィンドウサーチ部、３６…キャリブレーション正当性確認結果保持部、３７…ステータスレジスタ、３８…キャリブレーション処理管理部、３９…シングルキャリブレーション処理管理部（通知手段、遷移手段）、４０…可変遅延出力受信モード強制遷移処理管理部（通知手段、遷移手段）、４１…システムバスインターフェース、７１…オートモードキャリブレーション処理管理部
【図１】
2011113521.tif 000003
【図２】
2011113521.tif 000004
【図３】
2011113521.tif 000005
【図４】
2011113521.tif 000006
【図５】
2011113521.tif 000007
【図６】
2011113521.tif 000008
【図７】
2011113521.tif 000009
【図８】
2011113521.tif 000010