(57)【要約】【課題】特にメモリカードとホスト側間の全体的なデータの転送速度を向上させることができる情報処理装置およびその制御方法を提供する。【解決手段】位相が異なる複数のサンプリングクロックを生成するクロック生成手段と、複数のサンプリングクロックの各々で入力データをサンプリングする複数のデータ入力手段と、データ入力手段がサンプリングした複数のデータ値をサンプリング単位で比較するデータ比較手段と、データ比較手段による比較結果を基に、位相ずれに関する情報を集める位相ずれ集計手段と、位相ずれ集計手段が集めた位相ずれに関する情報に基づいてサンプリングクロックの位相シフトの要／不要を判定し、位相ずれをなくすようにサンプリングクロックの位相を調整する位相シフト判定手段とを備える。【選択図】図２
2011134009.tif 000002
【特許請求の範囲】
【請求項１】
位相が異なる複数のサンプリングクロックを生成するクロック生成手段と、
前記複数のサンプリングクロックの各々で入力データをサンプリングする複数のデータ入力手段と、
前記データ入力手段がサンプリングした複数のデータ値をサンプリング単位で比較するデータ比較手段と、
前記データ比較手段による比較結果を基に、位相ずれに関する情報を集める位相ずれ集計手段と、
前記位相ずれ集計手段が集めた位相ずれに関する情報に基づいて前記サンプリングクロックの位相シフトの要／不要を判定し、位相ずれをなくすように前記サンプリングクロックの位相を調整する位相シフト判定手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記位相ずれに関する情報は、データブロックの単位で集計される、位相が遅れることによる位相ずれの回数および位相が進むことによる位相ずれの回数であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記位相ずれ集計手段は、前記複数のサンプリングクロックの位相の内中心となる位相を有するサンプリングクロックでサンプリングされたデータと、前記中心となる位相に対して前または後の位相を有するサンプリングクロックの一方でサンプリングされたデータのみが異なる場合に、位相ずれとして集計することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記入力データは、ＳＤ（Secure Digital）カードから入力されるデータであって、前記ＳＤカードに対するキャリブレーション後に、前記各手段による処理を実行することを特徴とする請求項１から請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
メモリカードのホストコントローラを備える情報処理装置における制御方法であって、
前記ホストコントローラにおいて、
クロック生成手段が、位相が異なる複数のサンプリングクロックを生成するクロック生成ステップと、
複数のデータ入力手段が、前記複数のサンプリングクロックの各々で入力データをサンプリングするデータ入力ステップと、
データ比較手段が、前記データ入力ステップにおいてサンプリングした複数のデータ値をサンプリング単位で比較するデータ比較ステップと、
位相ずれ集計手段が、前記データ比較ステップにおける比較結果を基に、位相ずれに関する情報を集める位相ずれ集計ステップと、
位相シフト判定手段が、前記位相ずれ集計ステップにおいて集めた位相ずれに関する情報に基づいて前記サンプリングクロックの位相シフトの要／不要を判定し、位相ずれをなくすように前記サンプリングクロックの位相を調整する位相シフト判定ステップと、を実行する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードのホストコントローラを有する情報処理装置およびその制御方法に関する。
【背景技術】
【０００２】
従来のメモリカード（例えば、旧タイプのＳＤ（Secure Digital）カードやマルチメディアカード）では、カードから出力されるデータの遅延時間が定められているので、これらのカードに対応したホストコントローラでは、受信データをサンプリングする位置は固定であった。最近では、メモリカードの動作速度が高速化され、遅延時間が定められなくなっている。また、こうした高速のメモリカードでは、データ転送中に遅延時間が変化するため、サンプリング位置にずれが発生する。そのため、サンプリング位置の位相設定が必要になっている。位相設定にはデータ転送前に受信データと期待値とを比較することによりサンプリング位置を決定するキャリブレーションという方法が一般的である。
【０００３】
一方、特許文献１に開示の技術のように、ビット位相同期回路で、位相の異なる複数（３つ）のクロックを生成してデータをラッチし、この３つのデータにより位相比較を行った上でクロックを決定することにより、短時間でビット同期をとれるようにした従来技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０２−２５０５３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、キャリブレーションによりサンプリング位置を決定してから、データ転送を行う方法によっても、転送中にサンプリング位置がずれてくるため、短い転送間隔で再キャリブレーションを繰り返さなければならず、転送効率が上がらないという問題があった。また、特許文献１に開示の技術は、上記比較結果から、選択可能なクロックの中の１つを決定するものにすぎず、データ受信時の遅延量が定められないような転送速度が高速なデータ通信に適用することはできない。
【０００６】
本発明は、上記に鑑みてなされたものであって、特にメモリカードとホスト側間の全体的なデータの転送速度を向上させることができる情報処理装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置であって、位相が異なる複数のサンプリングクロックを生成するクロック生成手段と、前記複数のサンプリングクロックの各々で入力データをサンプリングする複数のデータ入力手段と、前記データ入力手段がサンプリングした複数のデータ値をサンプリング単位で比較するデータ比較手段と、前記データ比較手段による比較結果を基に、位相ずれに関する情報を集める位相ずれ集計手段と、前記位相ずれ集計手段が集めた位相ずれに関する情報に基づいて前記サンプリングクロックの位相シフトの要／不要を判定し、位相ずれをなくすように前記サンプリングクロックの位相を調整する位相シフト判定手段とを備えることを特徴とする。
【０００８】
また、本発明は、メモリカードのホストコントローラを備える情報処理装置における制御方法であって、前記ホストコントローラにおいて、クロック生成手段が、位相が異なる複数のサンプリングクロックを生成するクロック生成ステップと、複数のデータ入力手段が、前記複数のサンプリングクロックの各々で入力データをサンプリングするデータ入力ステップと、データ比較手段が、前記データ入力ステップにおいてサンプリングした複数のデータ値をサンプリング単位で比較するデータ比較ステップと、位相ずれ集計手段が、前記データ比較ステップにおける比較結果を基に、位相ずれに関する情報を集める位相ずれ集計ステップと、位相シフト判定手段が、前記位相ずれ集計ステップにおいて集めた位相ずれに関する情報に基づいて前記サンプリングクロックの位相シフトの要／不要を判定し、位相ずれをなくすように前記サンプリングクロックの位相を調整する位相シフト判定ステップと、を実行することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、データ転送中にサンプリング位置のずれを検出し、ずれた場合は、サンプリング位置を自動で調整するので、短い転送間隔で再キャリブレーションを行う必要がなく、全体的なデータの転送速度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明にかかる情報処理装置の一実施形態としてのノートブック型パーソナルコンピュータの外観を示す図である。
【図２】図２は、ホストコントローラ２の概略構成を示すブロック図である。
【図３】図３は、３種の位相の異なるサンプリングクロックを用いて、ＳＤカードからの入力データをサンプリングする際のタイミング（データ取得タイミング）の一例を示す図である。
【図４】図４は、図３に示すタイミングでサンプリングしたときのサンプリングデータ値を示す図である。
【図５】図５は、ホストコントローラの動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本発明にかかる情報処理装置について、図面に基づいて詳細に説明する。なお、以下に説明する諸実施形態により本発明が限定されるものではない。
【００１２】
図１は、本発明にかかる情報処理装置の一実施形態としてのノートブック型パーソナルコンピュータ（以下、ＰＣ１と称す）の外観を示す図である。
【００１３】
ＰＣ１は、本体１１と、表示ユニット１２とを備えている。本体１１は、キーボード１３と、ポインティングデバイスであるタッチパッド１４とを備えている。本体１１内部には、メイン回路基板、同図符号２で示す破線部分のＳＤ（Secure Digital）カードホストコントローラ（詳細は後述；以下、ホストコントローラと称す）、ＯＤＤユニット（Optical Disk Device）、ＳＤカードスロット等が収容されている。
【００１４】
ＳＤカードスロットは、本体１１の周壁に設けられている。この周壁には、ＳＤカードスロット用の開口部１５が設けられている。ユーザは、この開口部１５を通じて本体１１の外部からＳＤカード３をカードスロットに挿抜することが可能である。
【００１５】
ＰＣ１には、ホストコントローラ２を制御するためのデバイスドライバであるホストドライバがインストールされており、このホストドライバとホストコントローラ２により、ＳＤカードスロットに装着されたＳＤカード３に対するリード／ライト処理やキャリブレーション処理等を行う。
【００１６】
なお、本実施形態では、ホストコントローラ２をＰＣ１に内蔵する構成としているが、ホストコントローラ２を、ＵＳＢインターフェースやその他のインターフェースを介して外付けされるＳＤカードリーダ／ライタ等に内蔵させた構成とすることもできる。また、本実施形態では、ホストコントローラ２の制御対象としてＳＤカードを例に挙げ説明するが、これに限らず、データ受信時の遅延量が固定されておらず、サンプリング位置の位相設定が必要になるその他のメモリカードであってもよい。
【００１７】
また、情報処理装置としては、上記のようなパーソナルコンピュータに限らず、携帯電話、ＰＤＡ（Personal Digital Assistant）、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビジョン受像機等もあり、これらについても本発明を適用することができる。
【００１８】
次に、ホストコントローラ２の構成について、図２を用いて説明する。図２は、ホストコントローラ２の概略構成を示すブロック図である。なお、ホストコントローラ２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などによるハードウェアとして構成することができる。
【００１９】
ホストコントローラ２は、ＰＣ１のＣＰＵ（図示せず）が実行するホストドライバにより制御される。ホストドライバによる各種要求は、制御部２１内のシステムバスインターフェース（図示せず）を通じて、制御部２１に渡される。例えば、キャリブレーションの際は、ホストドライバからキャリブレーションコマンド発行要求が制御部２１に渡され、このキャリブレーションコマンド発行要求に対して、制御部２１が規定のキャリブレーション処理を行うための制御をする。
【００２０】
サンプリングクロック生成部２２は、制御部２１により位相設定レジスタ部２３に設定された位相設定に従って、受信データサンプリング用のクロック位相をシフトさせた３種の位相の異なるサンプリングクロック（ＣＬＫ  Ｌ，ＣＬＫ  Ｃ，  ＣＬＫ  Ｒ）を生成し、Ｉ／Ｏコントローラ２４に供給する。なお、各サンプリングクロックは、その位相が、前回のキャリブレーションにより受信データを正しく受信できたサンプリングクロック位相の範囲内となるよう生成するものとする。また、ＳＤカードの場合、そのデータラインは４ラインあるので、それぞれのラインで、同様に位相の異なる３つのクロックでデータをサンプリングする。以下では、説明の簡単のため、１ライン分を代表として説明するが、実際は４つのデータラインの各々について各処理が行われる。
【００２１】
Ｉ／Ｏコントローラ２４は、ＳＤカードスロットに装着されたＳＤカード３に対するコマンドを、ＳＤバスプロトコルに従ったコマンドとしてＳＤカード３に送信し、ＳＤカード３からのデータを受信する。また、データ入力部（Ｌ）２５、データ入力部（Ｃ）２６、データ入力部（Ｒ）２７を備え、これらはそれぞれ、サンプリングクロック生成部２２からの３種のサンプリングクロックＣＬＫ  Ｌ，ＣＬＫ  Ｃ，  ＣＬＫ  Ｒで、ＳＤカード３からの受信データをサンプリングし、制御部２１へ渡す。ＰＣ１のＣＰＵからＳＤカード３へのアクセス時には、データ入力部（Ｃ）２６でサンプリングされた受信データが、制御部２１内のシステムバスインターフェースを介してＰＣ１のＣＰＵへ送られる。なお、ＰＣ１のＣＰＵは、ホストドライバを実行することによりホストコントローラ２を制御する制御手段としても機能するものであり、本明細書では、このＣＰＵとホストドライバの組をホストコントローラ２に対してホスト側と称す。
【００２２】
制御部２１は、本実施形態における特徴的機能を実現する構成要素として図２に示す、データ比較部２８、位相ずれ回数上限設定部２９、位相ずれ集計部３０、位相シフト判定部３１を備える。
【００２３】
データ比較部２８は、データ入力部（Ｌ）２５、データ入力部（Ｃ）２６、データ入力部（Ｒ）２７でサンプリングしたデータをサンプリング単位で比較し、比較結果（データ間の値の一致／不一致）を位相ずれ集計部３０に送る。位相ずれ回数上限設定部２９は、位相ずれ回数の上限値（例えば、３〜４以下）を設定するレジスタであり、下記の位相シフトの判定に使用される。なお、この上限値の設定は、ホスト側から行うことができる。位相ずれ集計部３０は、データ比較部２８による３つのデータ入力の比較結果に基づいて位相ずれの有無を判断し、データのブロック単位（例えば、５１２バイト）で、データブロックの終了時まで、位相ずれを集計する。具体的には、１ブロック内のデータサンプリング処理において、ＣＬＫ  Ｃでサンプリングされたデータと、その左側のデータ（すなわちＣＬＣ  Ｌでサンプリングされたデータ）またはその右側のデータ（すなわち、ＣＬＣ  Ｒでサンプリングされたデータ）間で不一致を検出した回数を位相ずれの回数として集計する。なお、制御部２１の動作の詳細は後述する。
【００２４】
ここで、３種の位相の異なるサンプリングクロックを用いたデータサンプリングおよび位相ずれの集計について、図３、図４を用いて説明する。図３は、３種の位相の異なるサンプリングクロック（ＣＬＫ  Ｌ，ＣＬＫ  Ｃ，  ＣＬＫ  Ｒ）を用いて、ＳＤカード３からの入力データをサンプリングする際のタイミング（データ取得タイミング）の一例を示す図である。また、図４は、図３に示すタイミングでサンプリングしたときのサンプリングデータ値を示す図である。
【００２５】
図３に示すサンプリングクロックＣＬＫ  Ｌは、基本クロックＣＬＫ  Ｃに対してその位相を予め定められる１単位分だけ遅らせたクロックであり、ＣＬＫ  Ｒは、ＣＬＫ  Ｃに対してその位相を１単位分進めたクロックである（なお、以下では、基本クロックＣＬＫ  Ｃの位相を中央とし、これに対し遅らせた位相を左、進めた位相を右と表現する）。３種のサンプリングクロックＣＬＫ  Ｌ，ＣＬＫ  Ｃ，ＣＬＫ  Ｒで順にデータをサンプリングした結果をＳａｍｐ１＿Ｌ／Ｓａｍｐ１＿Ｃ／Ｓａｍｐ１＿Ｒ、Ｓａｍｐ２＿Ｌ／Ｓａｍｐ２＿Ｃ／Ｓａｍｐ２＿Ｒ、…、ＳａｍｐＮ＿Ｌ／ＳａｍｐＮ＿Ｃ／ＳａｍｐＮ＿Ｒとする。なお、図面では、各サンプリングタイミング毎に、３種のサンプリングクロックによるサンプリング結果をＳａｍｐ１＿＊、Ｓａｍｐ２＿＊、…、ＳａｍｐＮ＿＊として表記している。
【００２６】
図３に示すサンプリングタイミングでは、Ｓａｍｐ１＿Ｌ＝１，Ｓａｍｐ１＿Ｃ＝１，Ｓａｍｐ１＿Ｒ＝１、…、ＳａｍｐＮ−１＿Ｌ＝０，ＳａｍｐＮ−１＿Ｃ＝０，ＳａｍｐＮ−１＿Ｒ＝１、ＳａｍｐＮ＿Ｌ＝１，ＳａｍｐＮ＿Ｃ＝１，ＳａｍｐＮ＿Ｒ＝０のようにサンプリングデータ値が得られ、図４に示される値となる。この例では、データ比較部２８にて、ＳａｍｐＮ−１、ＳａｍｐＮの２箇所については、３種のクロックに対するサンプリングデータ値が異なることがわかる。よって、位相ずれ集計部３０による位相ずれの集計にて、このデータの位相ずれ回数は２回と集計される。このとき、位相ずれ回数上限設定部２９に設定されている位相ずれ回数の上限値が２であった場合には、位相ずれ回数が上限値の２以上になるため、位相シフト判定部３１により位相シフトが必要と判定され、位相設定レジスタ部２３の位相設定が変更される（詳細は後述）。
【００２７】
次に、本実施形態のホストコントローラ２の動作を、図５を用いて説明する。図５は、ホストコントローラ２の動作を説明するためのフローチャートである。なお、以下に説明する処理の流れは一例であって、これに限定されるものではない。
【００２８】
はじめに、制御部２１は、位相設定レジスタ部２３に対し、サンプリングクロック生成部２２が生成する３種のサンプリングクロックの位相を定める設定をする（ステップＳ５０１）。このとき、キャリブレーション後に、サンプリングクロック生成部２２が生成する３つのサンプリングクロックが、図３に例示したＣＬＫ＿Ｌ、ＣＬＫ＿Ｃ、ＣＬＫ＿Ｒの関係となるように設定がなされる。なお、ＣＬＫ＿Ｃが有効データの中央となるように位相が設定される。
【００２９】
続いて、受信データのサンプリングとデータ入力が行われる（ステップＳ５０２）。ＳＤカード３からの受信データは、データ入力部（Ｌ）２５、データ入力部（Ｃ）２６、データ入力部（Ｒ）２７で、位相の異なる各サンプリングクロックＣＬＫ  Ｌ，ＣＬＫ  Ｃ，ＣＬＫ  Ｒでサンプリングされる。そして、サンプリングされたデータは、データ比較部２８に送られる。
【００３０】
次に、データ比較部２８にて、各サンプリングポイントで３つのデータが比較される（ステップＳ５０３）。受信データとサンプリングクロックとの間に位相のずれがない場合は、図４のＳａｍｐ１＿＊〜Ｓａｍｐ３＿＊のように３つのサンプリング値は一致している。しかし、データの遅延量が変化することにより、データとサンプリングクロックとの位相がずれてくると、図４のＳａｍｐＮ−１＿＊、ＳａｍｐＮ＿＊のように、３つのサンプリング値が一致しなくなる。データ比較部２８によるデータの比較結果は、位相ずれ集計部３０に送られる。
【００３１】
次に、位相ずれ集計部３０にて、位相ずれの集計を行う（ステップＳ５０４）。具体的には、ＳＤカード３から転送されてくるデータの１データブロック単位で、サンプリングデータの不一致の回数をカウントする。図４のように、ＣＬＫ＿ＣとＣＬＫ＿Ｌでサンプリングされたデータの値は同じで、ＣＬＫ＿ＣとＣＬＫ＿Ｒでサンプリングされたデータの値が異なる場合は、受信データの右側で位相がずれたと集計される。一方、ＣＬＫ＿ＣとＣＬＫ＿Ｒでサンプリングされたデータの値が同じで、ＣＬＫ＿ＣとＣＬＫ＿Ｌでサンプリングされたデータの値が異なる場合は、受信データの左側で位相がずれたと集計される。このように、位相ずれ集計部３０は、上記右側での位相ずれと左側での位相ずれを分けて集計する。１データブロック分の位相ずれ集計が完了すると（ステップＳ５０５でＹｅｓ）、位相ずれ集計部３０による集計結果は、位相シフト判定部３１に送られる。１データブロック分の位相ずれ集計が未完の場合は（ステップＳ５０５でＮｏ）、ステップＳ５０２へ戻り、データ入力から位相ずれ集計までを繰り返す。
【００３２】
次に、位相シフト判定部３１にて、位相シフトを行う必要があるか不要かの判定を行う（ステップＳ５０６）。具体的には、１データブロックの処理ごとに、位相ずれ集計部３０からの集計結果である位相ずれ回数と位相ずれ回数上限設定部２９に設定されている位相ずれ回数の上限値とを比較する。そして、受信データの右側での位相ずれ回数が、位相ずれ回数上限設定部２９に設定された上限値を超えている場合は、データの位相が左に移動したと判定し、すなわち位相シフト要と判定し（ステップＳ５０６で要）、サンプリングクロックを左にシフトさせるように、位相設定レジスタ部２３に指示を送る（ステップＳ５０７）。同様に、受信データの左側での位相ずれ回数が、位相ずれ回数上限設定部２９に設定された上限値を超えている場合は、データの位相が右に移動したと判定し、すなわち位相シフト要と判定し（ステップＳ５０６で要）、サンプリングクロックを右にシフトさせるように、位相設定レジスタ部２３に指示を送る（ステップＳ５０７）。この指示は、具体的には、位相シフト判定部３１から、位相シフトの設定値と位相シフトの方向の情報を含む位相シフトの指示信号が、位相設定レジスタ部２３に送られ、位相設定レジスタ部２３にて、位相シフトの設定値を指示されたシフト方向に再設定することにより、サンプリングクロック生成部２２が生成するサンプリングクロックの位相をシフトさせる。なお、どちらの位相ずれ回数も上限値以下である場合には位相シフト不要（ステップＳ５０６で不要）と判定され、ステップＳ５０８へ移行する。
【００３３】
位相シフト完了後、位相ずれ集計部３０の位相ずれ集計値を０にクリアする（ステップＳ５０８）。それから、次のデータブロックの転送を行う。次ブロック転送においても、上述のように、位相ずれを集計し、サンプリングクロックの位相シフトの判定を行い、必要なサンプリングクロックの位相シフトを行う。
【００３４】
以上説明したように、本実施形態では、ホストコントローラ２が上記のように構成され動作するので、データの遅延量の変化によりデータのサンプリング位置がずれた場合でも、データのブロック転送処理ごとにそのサンプリング位置を自動的に調整してデータ転送を行うことができる。その結果、メモリカードとホスト側間の全体的なデータの転送速度、転送効率を向上させることができる。
【００３５】
なお、上記実施形態では、３種の位相の異なるサンプリングクロックで、入力データをサンプリングし、サンプリングしたデータを比較することにより比較結果を得ているが、３種に限るものではなく、さらに多数種類のサンプリングクロックを用いて実施することも可能である。
【符号の説明】
【００３６】
１…ＰＣ、２…ホストコントローラ、３…ＳＤカード、１１…（ＰＣ１の）本体、１２…表示ユニット、１３…キーボード、１４…タッチパッド、１５…開口部、２１…制御部、２２…サンプリングクロック生成部、２３…位相設定レジスタ部、２４…Ｉ／Ｏコントローラ、２５…データ入力部（Ｌ）、２６…データ入力部（Ｃ）、２７…データ入力部（Ｒ）、２８…データ比較部、２９…位相ずれ回数上限設定部、３０…位相ずれ集計部、３１…位相シフト判定部
【図１】
2011134009.tif 000003
【図２】
2011134009.tif 000004
【図３】
2011134009.tif 000005
【図４】
2011134009.tif 000006
【図５】
2011134009.tif 000007