説明

ホストコントローラ、情報処理装置および情報処理方法

【課題】メモリカードとホストコントローラ間のキャリブレーション処理に関してデバイスドライバ側に生じる処理の負荷を軽減する。
【解決手段】ホストコントローラにおいて、デバイスドライバからのキャリブレーションコマンド発行要求に応じて、メモリカードに対し1つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、キャリブレーションコマンドに応答してメモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリカードとホストコントローラ間で通信を確立する際のキャリブレーションの技術に関する。
【背景技術】
【0002】
従来より、デバイス間で通信を確立する際、デバイス間でキャリブレーションが行われる。例えば、特許文献1に開示のシリアルATAのデータ転送制御装置のような装置においても、インターフェースの初期化の際キャリブレーション処理が行われる。
【0003】
また、パーソナルコンピュータ等からホストコントローラを介してメモリカードにアクセスする場合、このパーソナルコンピュータに実装された専用のデバイスドライバがホストコントローラを制御する。そして、メモリカードへのアクセスを開始する際、デバイス間で通信を確立するためにキャリブレーション処理が行われるが、この処理は、通常、デバイスドライバがホストコントローラを制御することによって行われる。
【0004】
例えば、高速タイプのメモリカードに対して、ホストコントローラがメモリカードからの受信データサンプリング用のクロック位相を可変に制御できるものがある。このようなシステムでは、ホストコントローラ側で順次受信データサンプリング用のクロック位相をシフトさせてキャリブレーション処理を行うように、デバイスドライバがホストコントローラに対して逐次にキャリブレーションコマンドを発行するといった制御が行われる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−233998号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、ホストコントローラに対してデバイスドライバがキャリブレーションコマンドを逐次発行するといった制御をするのでは、デバイスドライバの負荷が大きい。また、特定のメモリカードを使用する場合や、品質がよく個体毎の特性のばらつきが少ないメモリカードを使用する場合では、キャリブレーション処理自体を簡略化することも可能であるが、こうした場合にも、上記のような制御をするのは、効率的ではなかった。
【0007】
本発明は、上記に鑑みてなされたものであって、メモリカードとそのホストコントローラ間で通信を確立する際のキャリブレーション処理に関して、デバイスドライバ側に生じる処理の負荷を軽減することができ、また、通信を確立する際の処理の高速化も可能とするホストコントローラ、情報処理装置および情報処理方法を提供するものである。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するために、本発明は、メモリカードを制御するホストコントローラであって、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、本ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段とを備えることを特徴とする。
【0009】
また、本発明は、メモリカードを制御するホストコントローラ用のデバイスドライバと、前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段、前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段、前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段、および、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段を有するホストコントローラとを備えることを特徴とする。
【0010】
また、本発明は、メモリカードを制御するホストコントローラにおける情報処理方法であって、前記ホストコントローラのキャリブレーションコマンド発行手段により、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するステップと、前記ホストコントローラのデータ受信手段により、前記ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップとを含むことを特徴とする。
【0011】
また、本発明は、メモリカードを制御するホストコントローラと専用のデバイスドライバとを備えた情報処理装置における情報処理方法であって、前記ホストコントローラのキャリブレーションコマンド発行手段により、前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するステップと、前記ホストコントローラのデータ受信手段により、前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップとを含むことを特徴とする。
【0012】
また、本発明は、メモリカードを制御するホストコントローラであって、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対しキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、既定の受信データサンプリングクロック位相設定の1つについて、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、前記キャリブレーションコマンド発行手段、前記データ受信手段受信および前記データ正当性判定手段による一連の処理を、既定の受信データサンプリングクロック位相設定の各々について順次実施させるループ手段と、前記受信データ正当性判定手段による判定結果からキャリブレーションの成否を判定するキャリブレーション成否判定手段と、前記キャリブレーション成否判定手段による判定結果を前記デバイスドライバに通知する通知手段とを備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、メモリカードとそのホストコントローラ間で通信を確立する際のキャリブレーション処理に関して、デバイスドライバ側に生じる処理の負荷を軽減することができる。さらに、キャリブレーション処理の高速化や、メモリカードとそのホストコントローラ間での通信確立の高速化も達成される。
【図面の簡単な説明】
【0014】
【図1】図1は、本発明にかかる情報処理装置の一実施形態としてのノートブック型パーソナルコンピュータの外観を示す図である。
【図2】図2は、第1の実施形態におけるホストコントローラの概略構成を示すブロック図である。
【図3】図3は、第1の実施形態におけるキャリブレーション処理制御ブロックの構成を示すブロック図である。
【図4】図4は、第1の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおけるキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【図5】図5は、第1の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおけるシングルキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【図6】図6は、第1の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおける可変遅延出力受信モード強制遷移処理時のそれぞれの処理の流れを並列に示したフローチャートである。
【図7】図7は、第2の実施形態におけるキャリブレーション処理制御ブロックの概略構成を示す図である。
【図8】図8は、第2の実施形態のホストドライバおよびこのホストドライバと協働するホストコントローラにおけるキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【発明を実施するための形態】
【0015】
以下に、本発明にかかる情報処理装置について、図面に基づいて詳細に説明する。なお、以下に説明する諸実施形態により本発明が限定されるものではない。
【0016】
(実施形態1)
図1は、本発明にかかる情報処理装置の一実施形態としてのノートブック型パーソナルコンピュータ(以下、PC1と称す)の外観を示す図である。
【0017】
PC1は、本体11と、表示ユニット12とを備えている。本体11は、キーボード13と、ポインティングデバイスであるタッチパッド14とを備えている。本体11内部には、メイン回路基板、同図符号2で示す破線部分のSD(Secure Digital)カードホストコントローラ(詳細は後述;以下、ホストコントローラと称す)、ODDユニット(Optical Disk Device)、SDカードスロット等が収容されている。
【0018】
SDカードスロットは、本体11の周壁に設けられている。この周壁には、SDカードスロット用の開口部15が設けられている。ユーザは、この開口部15を通じて本体11の外部からSDカード3をカードスロットに挿抜することが可能である。
【0019】
PC1には、ホストコントローラ2を制御するためのデバイスドライバであるSD Hostドライバ(以下、ホストドライバと称す)がインストールされており、このホストドライバとホストコントローラ2により、SDカードスロットに装着されたSDカード3に対するリード/ライト処理やキャリブレーション処理等を行う。
【0020】
なお、本実施形態では、ホストコントローラ2をPC1に内蔵する構成としているが、ホストコントローラ2を、USBインターフェースやその他のインターフェースを介して外付けされるSDカードリーダ/ライタ等に内蔵させた構成とすることもできる。また、本実施形態では、ホストコントローラ2の制御対象としてSDカードを例に挙げ説明するが、これに限らず、後述のキャリブレーション処理を適用できるメモリカードであれば、その他のメモリカードであってもよい。
【0021】
また、以下に説明するホストドライバによる処理に関して、ホストコントローラ2内部にマイコンを持ち、そのファームウェアが担うような構成をとってもよい。
【0022】
また、情報処理装置としては、上記のようなパーソナルコンピュータに限らず、携帯電話、PDA(Personal Digital Assistant)、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビジョン受像機等もあり、これらについても本発明を適用することができる。
【0023】
次に、ホストコントローラ2の構成について、図2を用いて説明する。図2は、ホストコントローラ2の概略構成を示すブロック図である。
【0024】
ホストコントローラ2は、ホストドライバにより制御される。ホストドライバによる各種要求は、制御部21内のシステムバスインターフェースを通じて、制御部21に渡される。キャリブレーションの際は、ホストドライバからキャリブレーションコマンド発行要求が制御部21に渡される。このキャリブレーションコマンド発行要求に対して、キャリブレーションコマンド処理制御ブロック21aがキャリブレーション処理を実行する(詳細は後述)。
【0025】
クロックジェネレータ(Clock Generator)22は、キャリブレーション処理制御ブロック21aからの位相設定値通知に応じて、受信データサンプリング用のクロック位相をシフトさせて、サンプリングクロックをI/Oコントローラ23の同期回路(Sync)23aに供給する。
【0026】
I/Oコントローラ23は、SDカードスロットに装着されたSDカード3に対するコマンドを、SDバスプロトコルに従ったコマンドとしてSDカード3に送信し、SDカード3からのデータを受信する。同期回路(Sync)23aは、クロックジェネレータ22からのサンプリングクロックで、SDカード3からの受信データをサンプリングし、制御部21へ渡す。PC1のCPU(図示せず)からSDカード3へのアクセス時には、同期回路(Sync)23aでサンプリングされた受信データが、制御部21内のシステムバスインターフェースを介してPC1のCPUへ送られる。一方、キャリブレーション時には、ホストドライバとキャリブレーション処理制御ブロック21aとが協働してキャリブレーション処理を実行することにより(後述)、ホストコントローラ2とSDカードスロットに装着されたSDカード3間のキャリブレーションが行われる。
【0027】
続いて、キャリブレーション処理制御ブロック21aの構成について、図3を用いて説明する。図3は、キャリブレーション処理制御ブロック21aの構成を示すブロック図である。同図に示す構成は、ホストコントローラ2で、キャリブレーション処理の完了、及びその成否の管理を実現するための構成となっている。
【0028】
サンプリングクロック位相設定値制御部31は、ホストドライバからのキャリブレーションコマンド発行要求を受けて、データ受信用のサンプリングクロックの位相設定を選択し切り換える制御をする。キャリブレーションコマンド発行処理部32は、サンプリングクロック位相設定値制御部31によるサンプリングクロックの位相設定後、SDカード3へのキャリブレーションコマンドを発行する。キャリブレーションコマンド受信データ正当性確認部33は、キャリブレーションコマンドの発行に応じてSDカード3から返される所定の特定パターンの受信データの正当性を確認する(すなわち、選択されたサンプリングクロック位相で正しく受信できたかを確認する)。
【0029】
キャリブレーション正当性確認結果保持部36は、キャリブレーションコマンド受信データ正当性確認部33による正当性確認結果を格納保持するレジスタである。データサンプリングウィンドウサーチ部35は、キャリブレーション正当性確認結果保持部36に保持してある正当性確認結果を用いて、データ受信用サンプリングクロックのデータサンプリングウィンドウ(Window)を導出する。すなわち、受信データを正しく受信できたサンプリングクロック位相の範囲を導出する。
【0030】
キャリブレーション成否判定部34は、これらの、キャリブレーションコマンド発行後のキャリブレーション処理結果から、キャリブレーションの成否を判定する。ステータスレジスタ37は、一連のキャリブレーション結果としてのステータス(キャリブレーション完了を示すキャリブレーション完了ステータス、キャリブレーションの結果の正当性を示すキャリブレーション正当性ステータス、キャリブレーションの続行を示すキャリブレーション継続要求ステータス)を保持するレジスタである。
【0031】
また、キャリブレーション処理制御ブロック21aには、一連のキャリブレーション処理の管理を行う管理部として、通常(SDA標準)モード時に機能するキャリブレーション処理管理部38と、シングルキャリブレーションモード時に機能するシングルキャリブレーションコマンド処理管理部39と、強制遷移モード時に機能する可変遅延出力受信モード強制遷移処理管理部40がある。
【0032】
上記通常モードとは、従来と同様の、SDA(SD Card Association)標準のキャリブレーション処理を実行するモードである。このモードでは、規定されるすべてのサンプリングクロック位相について、受信データの正当性の確認を行うキャリブレーション処理を実行する(以下では、通常モード時の動作についての説明は省略する)。シングルキャリブレーションモードとは、デバイスドライバから指定された1つのサンプリングクロック位相について、受信データの正当性の確認を行うキャリブレーション処理を実行するモードである。強制遷移モードとは、このモードが指定された場合、キャリブレーションが成功したとみなして、可変遅延出力受信モード(後述)に強制的に遷移させるモードである。
【0033】
システムバスインターフェース41は、デバイスドライバからのキャリブレーションコマンド発行要求や各種設定を受け、また、デバイスドライバへ、上記各管理部の制御により各種ステータス(データ受信完了フラグ、キャリブレーション開始フラグ、サンプリングクロック選択等必要な情報)やステータス確認タイミング等の通知を送る。
【0034】
続いて、キャリブレーション時のホストドライバとホストコントローラ2の動作について、図4を用いて説明する。図4は、ホストドライバおよびこのホストドライバと協働するホストコントローラ2におけるキャリブレーション時の処理の流れを並列に示したフローチャートである。
【0035】
はじめに、キャリブレーション成否判定に必要なシングルキャリブレーション成否情報が必要か判断する(ステップS401)。特定のSDカードが使用される場合などでは、キャリブレーションが成功しているものとみなして、キャリブレーション処理を省略することができるが(強制遷移モード)、そうでない場合、キャリブレーション成否判定を行うことになる。このステップでは、シングルキャリブレーション成否情報が必要な場合(Yesの判定)、ステップS402へ移行する。
【0036】
ステップS402では、さらに、既存の(先に行われたキャリブレーションの結果、保持されている)判定の結果ではなく新たにシングルキャリブレーション成否情報が必要か判断する。例えば不明のSDカードに対し通信を確立する場合など、新たにキャリブレーション成否情報が必要な場合(ステップS402でYes)、ステップS403のループ処理へ移行する。このループ処理において、必要なキャリブレーション成否情報の取得が完了するまで、ステップS404のシングルキャリブレーション処理(後述)を実行し、必要なキャリブレーション成否情報の取得が完了するとこのループを抜けステップS405へ移行する。なお、ここでの、必要なキャリブレーション成否情報を取得するためのループ回数(すなわち、シングルキャリブレーション処理を実行する回数)は、ソフトウェアであるホストドライバで制御するのでプログラマブルに設定可能である。例えば、品質のよい特性の揃ったSDカードの使用を前提とする場合、ループ中のシングルキャリブレーション処理を間引いて実行させることも可能となる。
【0037】
ステップS405では、既存または新規に取得したキャリブレーション成否情報を基に、キャリブレーションの成否を確認し、ステップS406へ移行する。ここでは、SDカード3からの受信データをサンプリングクロックで受け取れる位相ポイントの範囲(すなわち、Window)が見つかったかを確認する。例えば、4つの位相ポイントでSDカード3からの受信データを正しくサンプリングできた場合、Window幅=4のWindowが確認できたことになる。なお、強制遷移モードである場合(先のステップS401でNo)は、キャリブレーションが成功したものとしてステップS405へ移行する。
【0038】
ステップS406では、可変遅延出力受信モードが利用可能であるか判断する。ここでは、先のステップS405でWindowが確認済みであり、かつ、その幅が設定値以上である場合に、可変遅延出力受信モードが利用可能であると判定する。可変遅延出力受信モードが利用可能である場合(本ステップでYesの判定)、ステップS409へ移行する。なお、所望のWindow幅は、キャリブレーション実行前にレジスタに設定される。
【0039】
一方、可変遅延出力受信モードが利用可能でないと判定される場合(本ステップでNoの判定)、すなわち、先のステップS405でWindowが確認できなかった場合、または、先のステップS405でWindowが確認できたが、その幅が設定値より足りなかった場合はステップS407へ移行する。
【0040】
ステップS407では、固定遅延出力受信モードへの遷移が必要であるか判断する。この段階では、可変遅延出力受信モードが利用できないので、固定遅延出力受信モードとする必要がある。固定遅延出力受信モードへの遷移が必要である場合(本ステップでYesの判定)、ステップS408へ移行し、当該ステップで固定遅延出力受信モード遷移処理を実行し、固定遅延出力受信モードの状態とする。
【0041】
このとき、最後に行われた先のステップS404でのシングルキャリブレーション処理で、サンプリングクロック位相が固定遅延出力受信モードでの位相でなくなっているとき、サンプリングクロック位相を固定遅延出力受信モードでの位相に戻す必要がある。すなわち、最後に行ったシングルキャリブレーションにより、サンプリングクロック位相が0(固定遅延出力受信モードでの位相位置)以外にある場合は、これを0に戻す必要がある。一方、サンプリングクロック位相が0にある場合は、位相を戻す必要は無いので、サンプリングクロックの位相はそのままに、ステップS413へ移行する。
【0042】
なお、固定遅延出力受信モード(カードからの出力遅延が固定なデータを受信するモード)とは、SDカード3からの出力データ遅延が固定で、ホストコントローラ2はキャリブレーションなしでサンプリング用クロック位相は固定のままで、データ受信が可能な(低速)モードである。可変遅延出力受信モード(SDカードからの出力遅延が可変なデータを受信するモード)とは、カードからの出力データの遅延が可変で、ホストコントローラ2は、キャリブレーション実施後、受信データに対するWindow(データサンプリングウィンドウ)に、サンプリングクロックの位相を調整して、データ受信を行う(高速)モードである。
【0043】
一方、先のステップS406で、可変遅延出力受信モードが利用可能であると判定された場合は(ステップS406でYesの判定)、ステップS409へ移行する。ここではWindowが確認済みでありWindow幅も設定値を満たしているので、最終的なサンプリングクロック位相を設定する必要がある。したがって、ステップS409では、さらに、設定を変えての可変遅延出力受信モードへの遷移が必要であるか判断する。このとき、最後に行われた先のステップS404でのシングルキャリブレーション処理でのサンプリングクロック位相のままで問題無い場合は(すなわち、このサンプリングクロック位相がWindow内にある場合)、位相の設定を変える必要がないので、本ステップでNoと判定され、ステップS413へ移行する。
【0044】
一方、最後に行われた先のステップS404でのシングルキャリブレーション処理でのサンプリングクロック位相から設定を変更する必要がある場合(例えば、このサンプリングクロック位相がWindow内にない場合など)、本ステップで、設定を変えての可変遅延出力受信モードへの遷移が必要であると判定され(Yesの判定)、ステップS410へ移行する。例えば、Windowが位相ポイント0〜3からなる場合、サンプリングクロック位相として、位相ポイント0〜3のいずれかを選択可能である。ところが、最後に行われた先のステップS404でのシングルキャリブレーション処理でのサンプリングクロック位相がその他の位相ポイントとなっている場合は、サンプリングクロック位相を位相ポイント0〜3のいずれかに設定し直す必要がある。このような場合に「設定を変えての可変遅延出力受信モードへの遷移が必要である」と判定される。
【0045】
ステップS410では、さらに、検証(Verify)が必要か決定する。ここでは、最終的なサンプリングクロックの位相を一つ設定した後に、この位相で確かにデータが受け取れるかを検証するかどうかを選択する。ここで検証をするかしないかは、例えば、サンプリングクロック位相を変更した場合は、基本的にはキャリブレーションを行う(したがって、検証を行う)ものとするが、(1)既にWindowが明らかで、そのWindow内の位相設定であれば、キャリブレーションは省略することができるので、この場合には、検証は不要と決定する。また、(2)Window内の中央付近にサンプリングクロック位相を設定するのではなく、Window内ではあるが、Windowの端ぎりぎりにサンプリングクロック位相を設定する場合は、念のために、キャリブレーションを実施することとして、このような場合には検証が必要と決定する。Windowの端部における受信データのサンプリングは、何らかの原因(温度/電圧等の僅かな変化)で失敗する可能性がある。このようなケースを考慮して、前回のステップS404でのシングルキャリブレーション処理は、たまたま成功していたという立場を取って、より厳密な立場で検証を行うこととする。また、(3)ステップS403のループ処理で行うステップS404のシングルキャリブレーション処理を間引き、Windowを導出した場合は、ステップS410の検証(Verify)が必要と決定し、間引かなかった場合は、検証(Verify)は不要と決定する。これは、ステップS404で、所定の全位相ポイントでのキャリブレーション処理を行ってWindowを見つけた場合には、得られたWindowは厳密な結果なので、少しでも処理の軽減を考えてステップS410の検証(Verify)をスキップすることとした。
【0046】
本ステップで、検証が必要であると決定された場合(ステップS410でYes)、ステップS411へ移行し、後述のシングルキャリブレーション処理を実行する。このとき設定した一つの位相でシングルキャリブレーションを行う。通常は、ここでキャリブレーションはOKとなるはずだが、何らかの原因でNGとなった場合は、この処理の中で固定遅延出力受信モードに遷移させる。そして、ステップS413へ移行する。
【0047】
一方、検証が必要でない場合(ステップS410でNo)、ステップS412へ移行し、ステップS412で、後述する可変遅延出力受信モード強制遷移処理を実行する。ここで最終的なサンプリングクロックの位相を設定し、強制的に可変遅延出力受信モードに遷移させる。そして、ステップS413へ移行する。
【0048】
以上の一連の処理後、ホストコントローラ2は動作モードを認識して、キャリブレーションを終了する。
【0049】
次に、シングルキャリブレーション処理について、図5を用いて説明する。図5は、ホストドライバおよびこのホストドライバと協働するホストコントローラ2におけるシングルキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【0050】
はじめに、ホストドライバ側にて、キャリブレーション実施用設定がなされる(ステップS501)。具体的には、可変遅延出力受信モードにおける動作モード(通常モード、シングルキャリブレーションモード、強制遷移モード、オートモード(後述)の内、ここではシングルキャリブレーションモード)の設定やキャリブレーションの成否判定を行うための設定(例えば、所望のWindow幅(データサンプリングウィンドウ幅)の設定)等がなされる。
【0051】
次いで、ホストドライバがホストコントローラ2に対してキャリブレーションコマンド発行要求をし(ステップS502)、サンプリングクロック位相設定値を選択する(ステップS503)。このサンプリングクロック位相設定値は、標準では、所定のポイント数分の設定値が順次選択されることになるが、特定のSDカードや特性のばらつきの少ない品質の良いSDカードを用いる場合には、この設定値の選択を所定のポイント数の全数を対象とするのではなく、一部を対象として選択するようにすることもできる。このように、本実施形態では、サンプリングクロック位相設定値の選択をホストコントローラ2側でなくホストドライバ側で行うことにより、サンプリングクロック位相設定値をプログラマブルに選択できるようにしている。
【0052】
続いて、ホストコントローラ2が、サンプリングクロック位相の設定を、ホストドライバ側で選択指定されたサンプリングクロック位相設定値を用いて設定変更し、サンプリングクロックの安定を待つ(ステップS504)。
【0053】
次に、ホストコントローラ2が、SDカードスロットに装着されているSDカード3に対し、所定のキャリブレーションコマンドを発行する(ステップS505)。このキャリブレーションコマンドを受けたSDカード3は、特定パターンのデータを返信する。
【0054】
ホストコントローラ2は、SDカード3からのデータを受信し、この受け取ったデータパターンを期待値と比較して正当性を確認することにより受信処理結果の判定を行い、シングルキャリブレーション処理の成否情報を生成する(ステップS506)。
【0055】
続いて、ホストコントローラ2は、ステップS506での判定結果に基づき、動作モード(可変遅延出力受信モード/固定遅延出力受信モード)を決定し、その動作モードへ遷移する。具体的には、SDカード3からのデータを正しく受け取れた場合は、可変遅延出力受信モードに遷移させ、SDカード3からのデータを正しく受け取れなかった場合は、固定遅延出力受信モードに遷移させる(ステップS507)。
【0056】
続いて、ホストコントローラ2は、シングルキャリブレーション処理の成否情報および動作モード等をステータスとしてホストドライバに通知する(ステップS508)。
【0057】
ホストコントローラ2からステータス通知を受けたホストドライバは、シングルキャリブレーション処理の成否を確認して(ステップS509)、一連のシングルキャリブレーション処理を終了する。
【0058】
(可変遅延出力受信モード強制遷移処理)
次に、可変遅延出力受信モード強制遷移処理について、図6を用いて説明する。図6は、ホストドライバおよびこのホストドライバと協働するホストコントローラ2における可変遅延出力受信モード強制遷移処理時のそれぞれの処理の流れを並列に示したフローチャートである。
【0059】
はじめに、ホストドライバ側にて、キャリブレーション実施用設定がなされる(ステップS601)。具体的には、可変遅延出力受信モードにおける動作モード(通常モード、シングルキャリブレーションモード、強制遷移モード、オートモード(後述)の内、ここでは強制遷移モード)の設定やキャリブレーションの成否判定を行うための設定(例えば、所望のWindow幅(データサンプリングウィンドウ幅)の設定)等がなされる。
【0060】
次いで、ホストドライバが、所定のサンプリングクロック位相設定値を選択する(ステップS602)。
【0061】
続いて、ホストコントローラ2が、サンプリングクロック位相の設定を、ホストドライバ側で選択指定されたサンプリングクロック位相設定値を用いて設定変更し、サンプリングクロックの安定を待つ(ステップS603)。
【0062】
次に、ホストコントローラ2が、強制的に可変遅延出力受信モードへの遷移処理を行う(ステップS604)。
【0063】
続いて、ホストコントローラ2は、動作モード(可変遅延出力受信モードの状態になっていること)をステータスとしてホストドライバに通知する(ステップS605)。
【0064】
ホストコントローラ2からステータス通知を受けたホストドライバは、可変遅延出力受信モードへの遷移完了を検知して(ステップS606)、一連の可変遅延出力受信モード強制遷移処理を終了する。
【0065】
以上、キャリブレーション時のホストドライバおよびホストコントローラ2の動作の詳細を説明した。以上の処理により、キャリブレーションの必要がない特定のSDカードや特性が分かっているSDカードを使用する場合など、強制的に可変遅延出力受信モードに遷移させたり(S412)、固定遅延出力受信モードへ遷移させることで(S408)、キャリブレーションのためのループ処理を省略することができ、ホストドライバにかかる負荷を軽減することができる。
【0066】
また、キャリブレーションを行う場合でも、サンプリングクロック位相設定値の選択を、SDA(SD Card Association)標準のようにホストコントローラ2側で行うのではなくホストドライバ側で行うので、標準の設定よりも間引いた設定を行うなどのプログラマブルな設定が行え、品質の良い特性にばらつきが少ないSDカードを使用する場合などでは、キャリブレーションのためのループ処理のループ回数を減らしてホストドライバの負荷を軽減することができる。
【0067】
このように、本実施形態では、ホストドライバへの処理負担をできるだけ減らす形でホストドライバによるプログラマブルな処理が可能となり、よりシステムに応じた効率的なキャリブレーションの実施が可能となっている。
【0068】
(実施形態2)
次に、本発明にかかる情報処理装置の第2の実施形態について説明する。本実施形態と前述の第1の実施形態とは、ホストコントローラ2に含まれるキャリブレーション処理制御ブロックの構成、およびホストドライバとホストコントローラ2間の動作のみ異なり、その他については第1の実施形態と同様であるので、以下では、第1の実施形態との相違点についてのみ図面を用いて説明する。なお、図面において、第1の実施形態のものと同一の構成要素には同一の符号を付している。
【0069】
図7は、本実施形態におけるキャリブレーション処理制御ブロック21bの構成を示す図である。前述の第1の実施形態と異なるのは、シングルキャリブレーション処理管理部39と可変遅延出力受信モード強制遷移処理管理部40を備えていない点と、新たに、オートモードキャリブレーション処理管理部71を設けた点である。このオートモードキャリブレーション処理管理部71によるキャリブレーション処理については、以下の動作説明にてその詳細を説明する。
【0070】
続いて、本実施形態におけるキャリブレーション時のホストドライバとホストコントローラ2の動作について、図8を用いて説明する。図8は、本実施形態におけるホストドライバおよびこのホストドライバと協働するホストコントローラ2におけるキャリブレーション時のそれぞれの処理の流れを並列に示したフローチャートである。
【0071】
図8に示すホストドライバ側の処理は、標準のキャリブレーション処理におけるホストドライバによる処理と同様のものとなっている。すなわち、はじめに、ホストドライバ側にて、キャリブレーション実施用設定がなされる(ステップS801)。具体的には、可変遅延出力受信モードにおける動作モード(ここでは、オートモード)の設定やキャリブレーションの成否判定を行うための設定(例えば、所望のWindow幅(データサンプリングウィンドウ幅)の設定)等がなされる。
【0072】
続いて、キャリブレーションのためのループ処理(ループA:ステップS802)に移る。このループ処理において、ホストドライバは、ホストコントローラ2に対してキャリブレーションコマンド発行要求をする(ステップS803)。
【0073】
ホストドライバからのキャリブレーションコマンド発行要求を受けたホストコントローラ2は、キャリブレーションのためのループ処理(ループB:ステップS804)を行う。
【0074】
このループ処理(ループB)において、まず、サンプリングクロック位相設定値を選択し設定変更(設定切り換え及びクロックの安定待ち)をする(ステップS805)。ここでは、サンプリングクロック位相設定値として、標準と同様に、所定のポイント数分の設定値が順次選択され、設定変更されることになる。
【0075】
次に、ホストドライバが、SDカードスロットに装着されているSDカード3に対し、所定のキャリブレーションコマンドを発行する(ステップS806)。このキャリブレーションコマンドを受けたSDカード3は、特定パターンのデータを返信する。
【0076】
ホストコントローラ2は、SDカード3からのデータを受信し、この受け取ったデータパターンを期待値と比較して正当性を確認することにより受信処理結果の判定(受信データの正当性の判定)を行い、選択されたサンプリングクロック位相における受信処理結果情報を生成する(ステップS807)。
【0077】
以上のステップS804〜S807の一連の処理を所定のポイント数分繰り返すと、キャリブレーションが完了したものとしてループBを抜け、ステップS808へ移行する。
【0078】
ステップS808では、ホストコントローラ2が、ステップS807での判定結果(受信処理結果情報)に基づき、キャリブレーションの成否を判定するとともに、所定の動作モード(可変遅延出力受信モード/固定遅延出力受信モード)への遷移処理を行う。
【0079】
続いて、キャリブレーション処理の成否情報および動作モードをステータスとしてホストドライバに通知する(ステップS809)。
【0080】
ホストコントローラ2からステータス通知を受けたホストドライバは、キャリブレーションの完了を検知し、ループAを抜け、ステップS810へ移行する。
【0081】
ステップS810で、ホストドライバは、ホストコントローラ2から受けたステータスにより、動作モードを認識し、一連のキャリブレーション処理を完了する。
【0082】
本実施形態では、SDA標準に準拠する通常モードにおけるキャリブレーション処理と異なり、キャリブレーションコマンドを、ホストコントローラ2内部でキャリブレーション完了検知結果に即して自動生成し、必要なキャリブレーションが完了するまで繰返し発行している。その結果、通常モードではキャリブレーションコマンド毎に通知制御を行うものを、キャリブレーション完了検知時に一度に集約して通知することで済ませることができる。つまり、ホストドライバから見た一連の処理シーケンスはSDA標準と基本的に変わらず、ただ1回のキャリブレーションコマンド発行要求の実施で、すべてが完了したように見えるものとなっている。
【0083】
このように、本実施形態のホストコントローラ2は、SDA標準のホストドライバで動作が可能である。その一方で、本実施形態のホストコントローラ2は、キャリブレーションコマンド発行の繰返し分のホストコントローラ2からホストドライバへの割り込み処理によるオーバヘッドを削減でき、高速なキャリブレーションを行うことができるものとなる。
【0084】
(その他の形態)
前述のホストドライバ(ソフトウェア)は、ROM、HDD等に予め組み込まれて提供される。また、上記ソフトウェアは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)、SDカード等のメモリカードなどのコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。あるいは、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供または配布するように構成しても良い。
【符号の説明】
【0085】
1…PC、2…ホストコントローラ、3…SDカード、11…(PC1の)本体、12…表示ユニット、13…キーボード、14…タッチパッド、15…開口部、21…制御部、21a,21b…キャリブレーション処理制御ブロック、22…クロックジェネレータ、23…I/Oコントローラ、23a…同期回路(Sync;データ受信手段)、31…サンプリングクロック位相設定値制御部、32…キャリブレーションコマンド発行処理部(キャリブレーションコマンド発行手段)、33…キャリブレーションコマンド受信データ正当性確認部(受信データ正当性判定手段)、34…キャリブレーション成否判定部、35…データサンプリングウィンドウサーチ部、36…キャリブレーション正当性確認結果保持部、37…ステータスレジスタ、38…キャリブレーション処理管理部、39…シングルキャリブレーション処理管理部(通知手段、遷移手段)、40…可変遅延出力受信モード強制遷移処理管理部(通知手段、遷移手段)、41…システムバスインターフェース、71…オートモードキャリブレーション処理管理部

【特許請求の範囲】
【請求項1】
メモリカードを制御するホストコントローラであって、
本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、
本ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、
前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、
前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段と
を備えることを特徴とするホストコントローラ。
【請求項2】
前記受信データ正当性判定手段によるキャリブレーション用データの正当性の判定結果に基づき、動作モードを決定し、決定された動作モードに遷移させる遷移手段をさらに備えることを特徴とする請求項1に記載のホストコントローラ。
【請求項3】
特定の動作モードへ強制的に遷移させる強制遷移モードを有し、該強制遷移モードにおいて、前記遷移手段は、強制的に特定の動作モードへの遷移を行うことを特徴とする請求項2に記載のホストコントローラ。
【請求項4】
メモリカードを制御するホストコントローラ用のデバイスドライバと、
前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段、
前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段、
前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段、および、
前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知する通知手段を有するホストコントローラと
を備えることを特徴とする情報処理装置。
【請求項5】
前記ホストコントローラは、前記受信データ正当性判定手段によるキャリブレーション用データの正当性の判定結果に基づき、動作モードを決定し、決定された動作モードに遷移させる遷移手段をさらに有することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
特定の動作モードへ強制的に遷移させる強制遷移モードを有し、該強制遷移モードにおいて、前記遷移手段は、強制的に特定の動作モードへの遷移を行うことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記通知手段により通知された前記受信データ正当性判定手段による判定結果を基に、前記デバイスドライバが、キャリブレーションの成否を判定することを特徴とする請求項4から請求項6のいずれか1項に記載の情報処理装置。
【請求項8】
メモリカードを制御するホストコントローラにおける情報処理方法であって、
前記ホストコントローラのキャリブレーションコマンド発行手段により、本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するステップと、
前記ホストコントローラのデータ受信手段により、前記ホストコントローラを制御するデバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、
前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、
前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップと
を含むことを特徴とする情報処理方法。
【請求項9】
メモリカードを制御するホストコントローラと専用のデバイスドライバとを備えた情報処理装置における情報処理方法であって、
前記ホストコントローラのキャリブレーションコマンド発行手段により、前記デバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対し1つのキャリブレーションコマンドを発行するステップと、
前記ホストコントローラのデータ受信手段により、前記デバイスドライバからの受信データサンプリングクロック位相設定の基で、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするステップと、
前記ホストコントローラの受信データ正当性判定手段により、前記データ受信手段で受信したキャリブレーション用データの正当性を判定するステップと、
前記ホストコントローラの通知手段により、前記受信データ正当性判定手段による判定結果を前記デバイスドライバに通知するステップと
を含むことを特徴とする情報処理方法。
【請求項10】
メモリカードを制御するホストコントローラであって、
本ホストコントローラを制御するデバイスドライバからのキャリブレーションコマンド発行要求に応じて、前記メモリカードに対しキャリブレーションコマンドを発行するキャリブレーションコマンド発行手段と、
既定の受信データサンプリングクロック位相設定の1つについて、前記キャリブレーションコマンドに応答して前記メモリカードから返されるキャリブレーション用データをサンプリングするデータ受信手段と、
前記データ受信手段で受信したキャリブレーション用データの正当性を判定する受信データ正当性判定手段と、
前記キャリブレーションコマンド発行手段、前記データ受信手段受信および前記データ正当性判定手段による一連の処理を、既定の受信データサンプリングクロック位相設定の各々について順次実施させるループ手段と、
前記受信データ正当性判定手段による判定結果からキャリブレーションの成否を判定するキャリブレーション成否判定手段と、
前記キャリブレーション成否判定手段による判定結果を前記デバイスドライバに通知する通知手段と
を備えることを特徴とするホストコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate