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