(57)【特許請求の範囲】
【請求項１】
ＶＤＳ(Variable Data Sampling)モード及びＦＤＳ(Fixed Data Sampling)モードにて、受信データのサンプリングを行うホストコントローラであって、
ＶＤＳ時の位相シフト量を保持するＶＤＳ位相レジスタと、
ＦＤＳ時の位相シフト量を保持するＦＤＳ位相レジスタと、
ＶＤＳとＦＤＳのどちらのモードでデータサンプリングを行うかを示すモード設定部と、
前記モード設定部の設定値に応じて、前記ＶＤＳ位相設定レジスタ及びＦＤＳ位相設定レジスタの一方に設定されている位相シフト量を選択し、サンプリング位置として提供するサンプリング位置選択部と、
前記サンプリング位置設定部から提供されるシフト量に応じて、入力クロック信号の位相をシフトしサンプリングクロックとして提供するクロック位相シフト部と、
を具備するホストコントローラ。
【請求項２】
ＦＤＳ用の自動チューニングを実行するか否かを設定する自動チューニングレジスタを具備し、前記サンプリング位置設定部は、前記ＦＤＳ自動チューニングレジスタにてＦＤＳ自動チューニングが設定されている場合、ＦＤＳ位相レジスタに設定された位相シフト量を選択し、
初期化時にＦＤＳ用サンプリング位置をチューニングにより自動設定する手段と、
を更に具備する請求項１記載のホストコントローラ。
【請求項３】
前記クロック位相シフト部から提供される前記サンプリングクロックと、前記入力クロック信号を外部遅延線にて遅延させた外部クロックのどちらをサンプリングクロックとして使用するか切り替える切替部を具備する請求項１記載のホストコントローラ。
【請求項４】
ＶＤＳ(Variable Data Sampling)モード及びＦＤＳ(Fixed Data Sampling)モードにて、受信データのサンプリングを行う方法であって、
ＶＤＳ時の位相シフト量をＶＤＳ位相レジスタに保持し、
ＦＤＳ時の位相シフト量をＦＤＳ位相レジスタに保持し、
ＶＤＳとＦＤＳのどちらのモードでデータサンプリングを行うかをモード設定部にて示し、
前記モード設定部の設定値に応じて、前記ＶＤＳ位相設定レジスタ及びＦＤＳ位相設定レジスタの一方に設定されている位相シフト量を選択し、
前記選択された位相シフト量に応じて、入力クロック信号の位相をシフトしサンプリングクロックとして提供することを具備する方法。
【請求項５】
ＦＤＳ用の自動チューニングを実行するか否かを自動チューニングレジスタにより設定し、前記ＦＤＳ自動チューニングレジスタにてＦＤＳ自動チューニングが設定されている場合、ＦＤＳ位相設定レジスタに設定されている位相シフト量を選択し、
初期化時にＦＤＳ用サンプリング位置をチューニングにより自動設定することを具備する請求項４記載の方法。
【請求項６】
前記入力クロック信号の位相をシフトした前記サンプリングクロックと、前記入力クロック信号を外部遅延線にて遅延させた外部クロックのどちらをサンプリングクロックとして使用するか切り替えることを具備する請求項４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＳＤカードのような外部装置を接続し、外部装置とデータの入出力処理を行うホストコントローラに関する。
【背景技術】
【０００２】
デジタルカメラ、携帯電話などの携帯機器、及びＰＣ、テレビなどの家電機器に使用され、小型で携帯可能な不揮発性メモリとしてＳＤカードが広く普及している。  
ＳＤカードはホストコントローラから受信したクロック信号に基づいて動作し、ホストコントローラは、ＳＤカードから受信したデータを、ＳＤカードに送信したクロックを用いてサンプリングする。このときの受信データは、ホストコントローラＬＳＩからＳＤカードまでの配線の長さ及びＳＤカードの応答速度に応じて遅延されている。ＳＤカードの動作クロックが数十MHz以上になると、この遅延は動作クロック周期の半分以上となることもある。従ってホストコントローラは、受信したデータをサンプリングする場合、送信したクロックをそのまま用いることはできない。
【０００３】
ＳＤカードにおける遅延量が規格により定められているＦＤＳ（Fixed Data Sampling）用のＳＤカードの場合、送信クロック周波数は一般に数十ＭＨｚで、データ受信用クロックは送信クロックをボード上の遅延用配線で遅延させた信号を用いていた。すなわち、ホストコントローラからボード上のカードスロット付近を経由してホストコントローラに戻した遅延用配線を伝送して遅延された送信クロック信号を受信用クロックとして利用していた。この方法はホストコントローラＬＳＩ内のＩ／Ｏバッファ及びボード上の実際の配線による遅延を考えなくてもよいという利点がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２８４１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし上記したような従来の方法は、ホストコントローラＬＳＩに送信クロック用のピンを設ける必要があるため、ピン数の増加及び遅延用配線を流れる電流による消費電力の増加をもたらす。
【０００６】
又、遅延用配線を使用せずに受信データをサンプリングするには、送信クロックに対して適切な遅延をホストコントローラ内部で与えてサンプリング用クロックを生成する必要がある。この遅延値を決定するためには、ホストコントローラ内部に設けられたＩ／Ｏバッファの遅延、配線の遅延ならびに製造のバラツキを考慮して決めなければならない。従ってこの場合は、遅延値の決定が困難であるという問題があった。又ホストコントローラ内部で設定した遅延のため、例えば周囲温度が変化して遅延量が変化した場合に、遅延量の変更はできないという問題があった。
【課題を解決するための手段】
【０００７】
最近になって、動作周波数が２百ＭＨｚ以上におよぶＳＤカードが開発されている。このようなＳＤカードでは、一般にＶＤＳ(Variable Data Sampling)モードでデータサンプリングが行われる。ＶＤＳモードでは、遅延量が周囲温度変化等により変化した場合、データサンプリングのタイミングを遅延量変化に応じて変更する。
【０００８】
ＶＤＳモードでは信号遅延量が検出され、ＤＬＬ（Delay Locked Loop）にその遅延量が位相シフト量として供給される。データサンプリングは、送信クロックをＤＬＬに供給された位相シフト量に基づいて発生された信号を用いて行われる。
【０００９】
本発明の実施形態は、ＶＤＳモード対応のホストコントローラがＦＤＳモードでＳＤカードを使用する場合、ＶＤＳ用のＤＬＬを用いて遅延した送信クロックに基づいてデータをサンプリングする。
【００１０】
ＤＬＬの遅延量は、一般に小さいほど精度は高い。大きな遅延量を精度よく実現しようとする場合は、高価なＤＬＬを使用しなければならない。従って、ＶＤＳ用のＤＬＬの遅延量は必要最小限に設定されているため、ＶＤＳ用ＤＬＬの最大遅延量は、周波数の低いＦＤＳ用ＳＤカードの遅延量より一般に小さい。従って、ＶＤＳ用ＤＬＬをＦＤＳモードＳＤカードに直接使用することはできない。
【００１１】
本発明の実施形態に係るホストコントローラは、ＶＤＳモード及びＦＤＳモードにて、受信データのサンプリングを行うホストコントローラであって、ＶＤＳ時の位相シフト量を保持するＶＤＳ位相レジスタと、ＦＤＳ時の位相シフト量を保持するＦＤＳ位相レジスタと、ＶＤＳとＦＤＳのどちらのモードでデータサンプリングを行うかを示すモード設定部と、前記モード設定部の設定値に応じて、前記ＶＤＳ位相設定レジスタ及びＦＤＳ位相設定レジスタの一方に設定されている位相シフト量を選択し、サンプリング位置として提供するサンプリング位置選択部と、前記サンプリング位置設定部から提供されるシフト量に応じて、入力クロック信号の位相をシフトしサンプリングクロックとして提供するクロック位相シフト部とを具備する。
【図面の簡単な説明】
【００１２】
【図１】本発明が適用されるホストコントローラの全体構成を示すブロック図である。
【図２】サンプリング位置設定部２２及びＤＬＬ２３周辺の詳細構成を示す図である。
【図３】ＶＤＳモードにおける基準クロックと、シフト量に応じて位相シフトされたクロックを示す図である。
【図４】実施形態に係るＦＤＳモードにおける基準クロックＳＤＣＬＫＩと各クロックの位相関係及び遅延量設定値の一例を示す図である。
【図５】実施形態に係るＦＤＳモードにおける基準クロックＳＤＣＬＫＩと各クロックの位相関係及び遅延量設定値の他の例を示す図である。
【図６】本発明の変形例の構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面を参照して説明する。
【００１４】
図１は本発明が適用されるホストコントローラ１０の全体構成を示すブロック図である。
【００１５】
ホストコントローラ１０は例えばＬＳＩとして構成され、ホスト装置（例えばＣＰＵ）とＳＤカード間のデータ転送を制御する。又ホストコントローラ１０はＳＤカードスロット３０を介してＳＤカードに接続される。ホストコントローラ１０はＳＤカードを制御するホスト側装置として機能するので、ＳＤホストコントローラとも呼ばれる。
【００１６】
ホストコントローラ１０はホストインターフェース１１、逓倍／分周器１２、送信回路１３、受信回路１４、本実施形態に係るサンプリング信号生成部１５、増幅器１６、入出力ゲート１７を含む。
【００１７】
逓倍／分周器１２は、ホスト装置の周波数設定で発生されたクロックＣＬＫを逓倍或いは分周してクロック信号ＳＤＣＬＫＩ等を生成し、各部に動作クロックとして提供すると共に、増幅器１６を介してＳＤカードに信号ＳＤＣＬＫＩを提供する。サンプリング信号生成部１５は、ＳＤＣＬＫＩに適切な遅延を与え、受信信号をサンプリングするためのＦＤＳ用及びＶＤＳ用サンプリングクロックを提供する。
【００１８】
ホストインターフェース１１は、ＳＤカードの規格に従って、データＤＡＴ、コマンドＣＭＤ等の信号の送受信を制御する。送信回路１３は、複数ビットラインを介してホストインターフェース１１入力された送信データＤＡＴ及び送信コマンドＣＭＤを、Ｆ／Ｆ（フリップフロップ）１３ａにより信号同期させて出力する。受信回路１４は、複数ビットラインを介してＳＤカードから入力された受信データＤＡＴ及び受信コマンドＣＭＤ信号を、Ｆ／Ｆ１４ａにより信号同期させて出力する。入出力ゲート１７は、データＤＡＴ及びコマンドＣＭＤ信号の伝送経路を制御する。
【００１９】
図２はサンプリング信号生成部１５の構成を示す図である。サンプリング信号生成部１５は、各種レジスタ２１ａ〜２１ｄ、サンプリング位置設定部２２及びクロック位相シフト部（以下ＤＬＬという）２３を含む。
【００２０】
レジスタ２１ａは、ＶＤＳモードでの位相を設定するレジスタ、レジスタ２１ｂはＦＤＳモードでの位相を設定するレジスタである。レジスタ２１ｃはＶＤＳ／ＦＤＳモードの切り替えを設定するレジスタ、レジスタ２１ｄは自動チューニングを実行するか否か設定するレジスタである。これらレジスタの内容は、ホスト装置により設定される。 
サンプリング位置設定部２２は、サンプリングに必要なクロック位置を判断し、該位置をシフト量としてＤＬＬ２３に出力する。ＤＬＬ２３は位置設定部２２からのシフト量に応じてクロックの位相シフトを行う。
【００２１】
ＤＬＬ２３は、ＶＤＳモードの最高周波数（例えば２０８ＭＨｚ）における１周期分の位相シフト（遅延）を可能とするクロックＣＬＫ＿ＦＰと、該クロックＣＬＫ＿ＦＰから半周期分の位相シフトを可能とするクロックＣＬＫ＿ＣＰと、更にＣＬＫ＿ＣＰから半周期分の位相シフトを可能とするＣＬＫ＿ＢＰを出力する。これら３つのクロック信号はＶＤＳモード時に現在の遅延量を検出する際に使用される信号である。一般に中央のクロックＣＬＫ＿ＣＰが受信信号のサンプリングに使用される。ホスト装置（ＣＰＵ）はＳＤカードを動作させる際に、先ずＦＤＳモード（低速クロック）にて、各位相シフト量ＴＦ／Ｔ／ＴＢをＶＤＳ位相設定レジスタ２１ａ内に設けられた３つのレジスタにそれぞれ設定する。
【００２２】
尚、ＳＤカードの実際の動作クロック周波数は、用途に応じて決定される。又、ＶＤＳモードはＦＤＳモードより一般に動作が複雑で、消費電力も大きい。従って、動作クロック周波数に応じてサンプリングモードが決定される。例えば、同一のＳＤカードを用いる場合でも、数十ＭＨｚ程度の比較的低速な用途の場合はＦＤＳモードが採用され、画像転送等の高速な用途の場合な用途の場合はＶＤＳモードが採用される。
【００２３】
図３はＶＤＳモードにおける基準クロックＳＤＣＬＫＩと、シフト量ＴＦ／Ｔ／ＴＢに応じて位相シフトされたクロックＣＬＫ＿ＦＰ／ＣＬＫ＿ＣＰ／ＣＬＫ＿ＢＰを示す。シフト量ＴＦは入力クロックに対して最も位相の早いクロックＣＬＫ＿ＦＰの位相シフト量、シフト量Ｔは、ＣＬＫ＿ＦＰから中央のクロックＣＬＫ＿ＣＰまでの位相シフト量、シフト量ＴＢはＣＬＫ＿ＣＰから最も位相の遅いクロックＣＬＫ＿ＢＰまでの位相シフト量である。つまり、基準クロックＳＤＣＬＫＩから最も位相の遅いクロックＣＬＫ＿ＢＰまでの位相シフト量は、シフト量ＴＦ、Ｔ、ＴＢの和に相当する。尚、ＶＤＳモードでは図３のように３つの互いに位相のずれたクロックＣＬＫ＿ＦＰ、ＣＬＫ＿ＣＰ、ＣＬＫ＿ＢＰを用いて、サンプリングクロックの遅延量の温度ドリフトが検出され、サンプリングクロックの位相が補正される。
【００２４】
最大の位相シフト量は、シフト量ＴＦが基準クロックＳＤＣＬＫＩのＶＤＳ最高動作周波数時の１周期分（Ｖｄｍａｘ）、シフト量Ｔとシフト量ＴＢは共に１周期の半分（Ｖｄｍａｘ／２）である。ＤＬＬ２３の遅延量は、入力の周波数に関係なく、設定レジスタ２１ａの設定値に基づいた固定の値となる。従って、動作周波数を上記ＶＤＳ最高動作周波数より遅く設定した場合、シフト量ＴＦの最大値は動作周波数１周期分の遅延量より小さくなる。
【００２５】
本実施形態では、このような特性を持つＶＤＳモード用ＤＬＬ２３をＦＤＳモードでも使用できるようにするため、ＦＤＳの位相設定用レジスタ２１ｂを新たに設ける。ＦＤＳモード時の位相設定値は、ＦＤＳ位相設定レジスタ２１ｂにシフト量ＴＦＤＳとしてホスト装置が設定する。シフト量ＴＦＤＳは基準クロックＳＤＣＬＫＩからの位相シフト量である。
【００２６】
図４はＦＤＳモードにおいて、クロックの遅延量がＶＤＳの１周期を超えない場合の基準クロックＳＤＣＬＫＩと各クロックの位相関係及び遅延量設定値を示す。
【００２７】
ＦＤＳモードの動作周波数はＶＤＳモードの最高動作周波数の半分以下となる。ＦＤＳモードで設定する遅延量が、ＶＤＳモード最高周波数の１周期（ＤＬＬ２３の最大遅延量Ｖｄｍａｘ）分を超えない場合、サンプリング位置設定部２２は、レジスタ２１ｂに設定されているシフト量ＴＦＤＳを、シフト量ＴＦとして出力し、シフト量Ｔとシフト量ＴＢとして”０”を出力する。これにより、図４のように中央のクロックＣＬＫ＿ＣＰに、設定レジスタ２１ｂに設定された遅延ＴＦＤＳを付けることができる。本実施形態ではＦＤＳモードの場合、中央のＣＬＫ＿ＣＰをサンプリングクロックとして使用する。尚、レジスタ２１ｂの位相シフト量ＴＦＤＳは、ホスト装置により適切な値として設定されたシフト量である。
【００２８】
次に、ＦＤＳモードにおいて、クロックの遅延量がＶＤＳ時の最高周波数の１周期Ｖｄｍａｘを超える場合の動作を説明する。
【００２９】
前述したように、ＦＤＳモードの動作周波数はＶＤＳモードの最高周波数の半分以下となる。つまりＦＤＳモードでは、ＤＬＬ２３への入力クロックＳＤＣＬＫＩの周波数はＶＤＳモードより低くなるので、シフト量ＴＦの設定だけでは、ＦＤＳモードでの１周期分の遅延をクロックＳＤＣＬＫＩにつけることはできない。
【００３０】
図５はＦＤＳモードにおいて、クロックの遅延量がＶＤＳの１周期を超える場合の基準クロックＳＤＣＬＫＩと各クロックの位相関係及び遅延量設定値を示す。
【００３１】
設定する遅延がＶＤＳモードの最高周波数の１周期Ｖｄｍａｘを超える場合、サンプリング位相設定部２２は、レジスタ２１ｂに設定された遅延量ＴＦＤＳを、遅延量ＴＦと遅延量Ｔに分けて出力する。遅延量ＴＦにはＶＤＳモード時の最大遅延量Ｖｄｍａｘを設定し、足りない部分を遅延量Ｔとして設定する。従って図５のように、中央のクロックＣＬＫ＿ＣＰにレジスタ２１ｂに設定された遅延量ＴＦＤＳを付けることができる。前述したように、クロックＣＬＫ＿ＣＰがサンプリングクロックとして使用される。
【００３２】
このように、ＦＤＳ専用の位相設定レジスタ２１ｂが設けられ、レジスタ２１ｂにはホスト装置により適切な位相シフト量ＴＦＤＳが設定される。サンプリング位置設定部２２は、シフト量ＴＦＤＳに基づいて、ＳＤカードからの信号の遅延量に相当するシフト量を、サンプリングクロックに与えることが可能となる。
【００３３】
又、ＶＤＳで利用しているＤＬＬ２３をＦＤＳで共用し、遅延線を介したフィードバッククロックを用いずに、適正な遅延つきのサンプリングクロックＣＬＫ＿ＣＰを出力することが可能となる。ここで、ＦＤＳモードではＦＤＳクロックの１周期分の遅延をサンプリングクロックに付けることはできないが、図５の範囲内の遅延がつけば十分である。
【００３４】
ＶＤＳモードからＦＤＳモードに切り替えた場合においても、ＦＤＳ用のレジスタ２１ｂには予め適切なシフト量が設定されているので、ＤＬＬは直ちにＶＤＳモードの設定からＦＤＳモードの設定に切り替わり、再度ＦＤＳモードの遅延量を設定する必要はない。
【００３５】
次に、レジスタ２１ｂに設定するＦＤＳ時のシフト量ＴＦＤＳについて説明する。
【００３６】
ＦＤＳ位相設定レジスタ２１ｂに設定するシフト量（遅延量）ＴＦＤＳは、Ｉ／Ｏバッファや配線遅延・バラツキ・外部の配線等を考慮して設定しなければならない。遅延量を決めるのが困難な場合は、「チューニング」により、位相シフト量を決める。
【００３７】
本実施形態ではチューニングにより位相シフト量を決めることを示す自動チューニング設定レジスタ２１ｄ（１ビットレジスタ）が設けられる。ホスト装置は、レジスタ２１ｂに設定するシフト量ＴＦＤＳをチューニングにより決定する場合、自動チューニング設定レジスタを例えば「１」に設定する。
【００３８】
サンプリング位置設定部２２は、自動チューニングレジスタ２１ｄが「１」に設定されている場合、設定レジスタ２１ｂに設定されているシフト量ＴＦＤＳをＤＬＬ２３に供給する。
【００３９】
ホスト装置はＳＤカードの初期化シーケンスにおいて、ＳＤカードが所定のデータパターンを有するチューニングパターンを持っているかどうか、ＳＤカード内の特定レジスタの内容を読み込むことでチェックする。ＳＤカードがチューニングパターンを持っている場合は、ＶＤＳモードと同様に以下のようなチューニングを行ってサンプリング位置を決定する。
【００４０】
すなわちホスト装置は、設定レジスタ２１ｂを用いて、サンプリングクロックのシフト量を少しずつ変えて、ＳＤカードからチューニングパタンを繰り返し読出しサンプリングする。サンプリングにより得られるデータが既知のチューニングパターンに一致するか判断し、最も安定して正しいデータが得られるシフト量をシフト量ＴＦＤＳとして決定しレジスタ２１ｂに設定する。これによりレジスタ２１ｂには最適なシフト量が設定される。
【００４１】
ＳＤカードがチューニングパターンを持っていない場合、ホスト装置はチューニング前に、ＳＤカードの初期化に使う遅いクロックでチューニングパターンをＳＤカードに予め書いておき、チューニング実行時には、予め書いておいたチューニングパターンを読み出すことにより、上記のようにチューニングを行い、レジスタ２１ｂに最適なシフト量ＴＦＤＳを設定する。
【００４２】
次に本発明の変形例を説明する。
【００４３】
図６は本発明の変形例の構成を示す。
【００４４】
この変形例では、ＦＤＳでのサンプリングクロックとして、ホストコントローラの内部クロックＳＤＣＬＫＩをＤＬＬ２３により遅延させたサンプリングクロックと、遅延線３２を伝送させて得られる外部クロックのどちらを使用するか切替る切替レジスタ３１を具備し、状況に応じてサンプリングクロックを切替る。
【００４５】
ＶＤＳ用に設計されたＤＬＬ２３の特性により、ＤＬＬを用いて内部クロックＳＤＣＬＫＩに必要な遅延を付けるのが困難な場合は、遅延線３２を伝送した外部フィードバッククロックを選択する。
【００４６】
又、ＤＬＬの遅延量を決めるためには、遅延線３２を伝送した外部フィードバッククロックと同じ遅延が、サンプリングクロックに付くようにＤＬＬのシフト量を調整すればよいので、チューニングを行う必要はない。
【００４７】
更に、このようにしてＤＬＬのシフト量を決定した後は、遅延線３２をクロックが伝送する必要がないので、クロック出力側にＡＮＤゲート３４を設けて、クロックを止めることにより、消費電力を減らすことができる。
【００４８】
［効果］
以上説明したように本発明の実施形態によれば、ＦＤＳ用の設定レジスタ２１ｂ設けることにより、ＶＤＳで利用しているＤＬＬ２３を共用できる。これにより外部ピンが不要となり、ピン数・消費電力を減らすことができる。
【００４９】
又、ＦＤＳ用の設定レジスタ２１ｂにより、ホストコントローラＬＳＩ内のＩ／Ｏの遅延や配線の遅延バラツキに応じた遅延調整が可能となり、更にボード上での配線遅延が変わった場合も調整が可能となるので、ＩＰとしての提供もできる。  
又、本発明の変形例によれば、サンプリングクロックの切り替え機能により、ＤＬＬの特性によっては内部クロックが利用できなくなった場合にも、遅延線による遅延を用いて適切な位相のサンプリングクロックを生成できる。
【符号の説明】
【００５０】
１０…ホストコントローラ、１１…ホストインターフェース、１２…逓倍／分周器、１３…送信回路、１４…受信回路、１５…サンプリング信号生成部、２１ａ〜２１ｄ…レジスタ、２２…サンプリング位置設定部。
【図１】
0005221609.tif 000002
【図２】
0005221609.tif 000003
【図３】
0005221609.tif 000004
【図４】
0005221609.tif 000005
【図５】
0005221609.tif 000006
【図６】
0005221609.tif 000007