(57)【特許請求の範囲】
【請求項１】
外部機器から受信した信号をサンプリングする際のサンプリングクロックの位相シフト補正を行うホストコントローラであって、
互いに位相の異なる複数のクロック信号を用いて受信データをサンプリングすることにより得られる複数のサンプリング結果が、所定回数異なる場合、前記サンプリングクロックの位相シフトが必要と判定し、位相シフトが必要なシフト方向に応じてカウンタをアップ／ダウンカウントする位相シフト判定部と、
前記位相シフトの変動範囲制限値を格納する制限値格納部と、
前記カウンタ値が前記位相シフトの制限値を超えているか判定し、超えている場合にエラーを通知し、超えていない場合に、前記カウンタのカウンタ値に応じて、前記サンプリングクロックの位相をシフトするシフト制限判定部と、
を具備するホストコントローラ。
【請求項２】
前記位相シフトの変動範囲制限値は、遅れ方向の最大ずれ幅及び進み方向の最大ずれ幅である請求項１記載のホストコントローラ。
【請求項３】
前記外部機器はＳＤカードであって、前記ＳＤカードのデータ転送開始時に、前記ＳＤカードからチューニングパターンを読出してチューニングを行い、前記サンプリングクロックの最適位相を判断し、該最適位相を前記複数のクロック信号の内、中央のクロックに与える請求項１記載のホストコントローラ。
【請求項４】
外部機器から受信した信号をサンプリングする際のサンプリングクロックの位相シフト補正を行う方法であって、
互いに位相の異なる複数のクロック信号を用いて受信データをサンプリングすることにより得られる複数のサンプリング結果が、所定回数異なる場合、前記サンプリングクロックの位相シフトが必要と判定し、位相シフトが必要なシフト方向に応じてカウンタをアップ／ダウンカウントし、
前記カウンタ値が前記位相シフトの変動範囲制限値を超えているか判定し、超えている場合にエラーを通知可能とし、超えていない場合に、前記カウンタのカウンタ値に応じて、前記サンプリングクロックの位相をシフトすることを具備する方法。
【請求項５】
前記位相シフトの変動範囲制限値は、遅れ方向の最大ずれ幅及び進み方向の最大ずれ幅である請求項４記載の方法。
【請求項６】
前記外部機器はＳＤカードであって、前記ＳＤカードのデータ転送開始時に、前記ＳＤカードからチューニングパターンを読出してチューニングを行い、前記サンプリングクロックの最適位相を判断し、該最適位相を前記複数のクロック信号の内、中央のクロックに与える請求項４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＳＤカードのような外部装置を接続し、外部装置とデータの入出力処理を行い、外部装置から受信されたデータを読取る際の温度ドリフトエラーを検知して、サンプリング位相を補正するホストコントローラ及びその補正方法に関する。
【背景技術】
【０００２】
デジタルカメラ、携帯電話などの携帯機器、及びＰＣ、テレビなどの家電機器に使用され、小型で携帯可能な不揮発性メモリとしてＳＤカードが広く普及している。ＳＤカードとホスト装置（ＣＰＵ）間のデータ及びコマンド転送は、ホストコントローラにより制御される。
【０００３】
最近のＳＤカードは従来よりも転送速度がさらに高速になってきているため、今までは固定であったデータ受信時の遅延量では、適切にデータサンプリングできなくなり、サンプリング位置の位相設定が必要になっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−２５０５３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
サンプリングクロックの位相設定には、実際のデータ転送前にチューニングを行い、最適な位相を判断するのが一般的である。チューニングとは、ＳＤカードの初期化シーケンスにおいて、最適なサンプリング位置を決定する動作を示す。すなわちホスト装置は、サンプリングクロックのシフト量を少しずつ変えて、ＳＤカードからチューニングパタンを繰り返し読出しサンプリングする。このチューニングパタンは、既知のデータパターンであって、同一のパターンがＳＤカード及びホストコントローラの両方に予め格納されている。このサンプリングにより得られるデータがホストコントローラ１０が有しているチューニングパターンに一致するか判断し、最も安定して正しいデータが得られるシフト量が最適なサンプリング位置として決定する。
【０００６】
しかし、転送中に位相が温度等によりずれた場合は、そのずれを検知することができなかったので、短い転送間隔で再チューニングを行なう必要があった。
【０００７】
上記問題に対して、転送されたデータをサンプリングし位相ずれを検知することにより、再チューニングの判断情報を得て、位相ずれが起きた場合にのみ再チューニングを行うホストコントローラが提案された。このホストコントローラは、位相ずれ検知結果に基づいてサンプリング位置を補正する。これにより、位相ずれ対策が可能となるが、位相ずれの許容変動範囲を超えた位相ずれエラー検知ができないという問題があった。
【課題を解決するための手段】
【０００８】
本発明の実施形態は、位相ずれの補正回数をカウントし、位相変動範囲と比較する手段を設けることで、エラー発生を早期検知し、転送データの信頼性の向上とエラー対処性能の向上を実現する。
【０００９】
すなわち一実施形態は、外部機器から受信した信号をサンプリングする際のサンプリングクロックの位相シフト補正を行うホストコントローラであって、互いに位相の異なる複数のクロック信号を用いて受信データをサンプリングすることにより得られる複数のサンプリング結果が、所定回数異なる場合、前記サンプリングクロックの位相シフトが必要と判定し、位相シフトが必要なシフト方向に応じてカウンタをアップ／ダウンカウントする位相シフト判定部と、前記位相シフトの変動範囲制限値を格納する制限値格納部と、前記カウンタ値が前記位相シフトの制限値を超えているか判定し、超えている場合にエラーを通知し、超えていない場合に、前記カウンタのカウンタ値に応じて、前記サンプリングクロックの位相をシフトするシフト制限判定部とを具備する。
【図面の簡単な説明】
【００１０】
【図１】本発明が適用されるホストコントローラの全体構成を示すブロック図である。
【図２】サンプリング信号補正回路１５の構成を示すブロック図である。
【図３】ＳＤカードから受信したデータの有効領域の変動を示す図である。
【図４】サンプリング位相補正の動作概要を示す図である。
【図５】位相シフトカウンタの値を更新する具体例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明に係るホストローラの実施形態について、図面を参照して説明する。
【００１２】
図１は本発明が適用されるホストコントローラの全体構成を示すブロック図である。
【００１３】
ホストコントローラ１０は例えばＬＳＩとして構成され、ホスト装置（例えばＣＰＵ）とＳＤカード間のデータ転送を制御する。ホストコントローラ１０はＳＤカードを制御するホスト側装置として機能するので、ＳＤホストコントローラとも呼ばれる。
【００１４】
ホストコントローラ１０は、逓倍分周器１２、送信回路１３、受信回路１４、本実施形態に係るサンプリング信号補正回路１５、増幅器１６、入出力ゲート１７を含む。
【００１５】
逓倍／分周器１２は、ホスト装置の周波数設定で発生されたクロックＣＬＫを逓倍或いは分周してクロック信号を生成し、各部に動作クロックとして提供する。クロック信号ＣＧ＿ＳＤＣＬＫはサンプリング信号補正回路１５に供給されると共に、増幅器１６により増幅され信号ＳＤＣＬＫとしてＳＤカードに提供される。
【００１６】
送信回路１３は、複数ビットラインを介してホスト装置から転送された送信データＤＡＴ及び送信コマンドＣＭＤを、Ｆ／Ｆ（フリップフロップ）１３ａにより信号同期させて出力する。入出力ゲート１７は、データＤＡＴ及びコマンドＣＭＤ信号の入出力伝送経路を制御する。受信回路１４は、複数ビットラインを介してＳＤカードから入力された受信データＤＡＴ及び受信コマンドＣＭＤ信号を、Ｆ／Ｆ１４ａにより信号同期させてホスト装置に転送する。
【００１７】
図２はサンプリング信号補正回路１５の構成を示すブロック図である。
【００１８】
１００は異なる位相のサンプリングクロックを生成するサンプリングクロック生成部、１０１は位相を設定する位相設定レジスタである。１０２はサンプリングクロックＡでデータ受信を行なうデータ入力部、１０３はサンプリングクロックＢでデータ受信を行なうデータ入力部、１０４はサンプリングクロックＣでデータ受信を行なうデータ入力部である。１０５はデータ入力部１０２、１０３、１０４で受信したデータを比較するデータ比較部、１０６は比較結果から位相ずれを集計する位相集計部である。１０７は位相集計部１０６の集計結果から位相シフトをするかしないかの判定を行う位相シフト判定部である。１０８は位相シフトをカウントする位相シフトカウンタ、１０９はホストからの位相シフト制限値を設定する位相シフト制限値設定レジスタである。１１０は１０９の位相シフトの制限値と１０８のカウント値を比較しエラーとするかの判定を行うシフト制限判定部、１１１はシフト制限判定部１１０にてエラーと判定された場合に、割り込みとして処理を行うための割り込み回路である。
【００１９】
図３はＳＤカードから受信したデータの有効領域の変動を示す。
【００２０】
周囲温度変化によりデータ有効領域（Valid）は変動する。一般的にカードの種類や動作モードにより、温度が上がった場合と下がった場合での最大のずれ幅Ｗ１が規定されている。この幅Ｗ１は適正位相設定範囲であって、サンプリング位相はこの適正位相設定範囲内で設定する必要がある。適正位相設定範囲Ｗ１は、データ変化点からの時間として規定されている。従って、データサンプリング位相は、適正位相設定範囲Ｗ１以内のデータ有効領域を超えた時点で通知できる機能が必要である。
【００２１】
図３（ａ）及び（ｂ）はチューニング直後のデータ有効領域を示す。チューニング直後は、サンプリングクロックのサンプリングポイント（サンプリング位相）ｔ１とデータ有効領域の中心が一致している。
【００２２】
図３（ｃ）はＳＤカードが熱を持ち、有効領域が適正位相設定範囲Ｗ１内で最も遅れ方向にずれている時を示している。Ｗ２は遅れ方向の最大ずれ幅（遅れ制限値）を示している。
【００２３】
図３（ｄ）はＳＤカードが冷えて、有効領域が適正位相設定範囲Ｗ１内で最も進み方向にずれている時を示している。Ｗ３は進み方向の最大ずれ幅（進み制限値）を示している。
【００２４】
図４はサンプリング位相補正の動作概要を示す。
【００２５】
３相のクロックＣＬＫ＿Ａ、ＣＬＫ＿Ｂ、ＣＬＫ＿Ｃにて位相ずれを検知し位相補正が行われる。位相補正は、データ有効領域のずれの検知に基づいて自動で行われるため、有効領域が適正位相設定範囲Ｗ１を超えてしまと正しくサンプリングを行うことができずエラーが発生する。
【００２６】
図４（ａ）は３相のクロックＣＬＫ＿Ａ、ＣＬＫ＿Ｂ、ＣＬＫ＿Ｃの位相が全て有効領域内に治まっている状態を示している。実際のデータサンプリングは例えば中央のクロックＣＬＫ＿Ｂを用いて行われる。図４（ｂ）は有効領域が遅れ方向にずれ、クロックＣＬＫ＿Ａによりずれが検知される状態を示す。このようにずれが検知されると、図４（ｃ）のように３相のクロックＣＬＫ＿Ａ、ＣＬＫ＿Ｂ、ＣＬＫ＿Ｃが有効領域内をサンプリングするように位相補正が行われる。
【００２７】
図４（ｄ）は有効領域が更に遅れ方向にずれ、クロックＣＬＫ＿Ａによりずれが検知される状態を示す。このようにずれが検知されると、図４（ｅ）のように３相のクロックＣＬＫ＿Ａ、ＣＬＫ＿Ｂ、ＣＬＫ＿Ｃが再び有効領域内をサンプリングするように位相補正が行われるが、この場合は、有効領域が適正位相設定範囲Ｗ１を超えている。従って、このままデータ受信を行っていると、中央のクロックＣＬＫ＿Ｂを用いてデータサンプリングを行っている場合は、データエラーが発生する可能性がある。
【００２８】
次に本発明に係る実施形態の動作を図２を参照して説明する。
【００２９】
先ずホスト装置は、位相設定レジスタ１０１に互いに異なる３つの位相を設定する。このとき、中央のクロックＣＬＫ＿Ｂの位相には、前述のチューニングにて得られた最適な位相が設定される。サンプリングクロック生成部１００は、位相設定レジスタ１０１から提供される３つの位相をそれぞれ有する３つのクロックＣＬＫ＿Ａ，ＣＬＫ＿Ｂ，ＣＬＫ＿Ｃを生成する。データ入力部１０２、１０３、１０４は、これら３つのクロックにてリードデータを図４のようにサンプリングする。データ比較部１０５は、サンプリング周期毎に得られる３つのデータを閾値と比較する。
【００３０】
位相ずれ集計部１０６は、データ比較部１０５の比較結果を、データブロック（例えば５１２バイト）単位で、ブロック転送終了時まで集計する。この時集計されるデータは、例えば、１１１、１１１、１１０、１１１…のようなデータとなる。夫々３つのデータが同一であれば、サンプリングクロックＣＬＫ＿Ａ，ＣＬＫ＿Ｂ，ＣＬＫ＿Ｃは共に、図４の「Ｖａｌｉｄ」で示されるデータ有効領域をサンプリングしていることになる。
【００３１】
位相シフト判定部１０７において位相シフトの判定を行う。位相シフト判定部１０７は、サンプリング周期毎にえられる３つのデータに相違がある状態が例えば所定回数連続した場合、位相シフトが必要と判定と判定する。位相シフト判定部１０７は位相シフトカウンタ１０８のカウンタ値をシフト量（回数）にあわせて変更する。位相シフト判定部１０７は、例えば進み側に位相シフトが必要と判定した場合、カウンタを−１する。また、遅れ側に位相シフトが必要と判定した場合はカウンタを＋１する。
【００３２】
ここで、位相シフト制限値設定部１０９には、図４の遅れ制限値Ｗ２及び進み制限値Ｗ３が、位相シフトカウンタ１０８のカウント値に対応する値Ｗ２ｃ、Ｗ３ｃに変換されて設定されている。シフト制限判定部１１０は、遅れ制限値Ｗ２ｃ及び進み制限値Ｗ３ｃと位相シフトカウンタ値を比較し、制限値を外れていないかを判定する。
【００３３】
制限値を外れていないと判定された場合、シフト制限判定部１１０は位相設定レジスタ１０１の値を更新し位相シフトを行う。すなわち、位相シフトカウンタ１０８のカウント値に対応する位相差を位相設定レジスタ１０１のクロックＣＬＫ＿Ａ，ＣＬＫ＿Ｂ，ＣＬＫ＿Ｃ用のレジスタに夫々加算する。
【００３４】
カウント値が制限値を外れていると判定された場合、シフト制限判定部１１０は割り込み回路１１１にて、ホスト装置に割込み信号を与え、制限値が超えられたこと即ちエラーを通知する。尚、制限判定処理にてエラーとなった場合でも、エラーは通知のみで転送を続けることも可能である。
【００３５】
次に本発明の具体例を説明する。
【００３６】
図５は位相シフトカウンタの値を更新する具体例を示すフローチャートである。
【００３７】
先ずホスト装置はブロック２００で、前述のチューニングを行い、位相設定レジスタ１０１を用いて、最適位相をクロックＣＬＫ＿Ｂに設定し、前後に所定位相差ずれた位相をＣＬＫ＿Ａ及びＣＬＫ＿Ｂに設定する。ブロック２０１でホスト装置は、位相シフトカウンタ１０８のカウンタ値を０に初期化する。
【００３８】
ブロック２０２で、ＳＤカードとホストコントローラ間のデータ転送が行われる。ブロック２０３では、位相シフト判定部１０７は位相シフトが発生したか判定し、位相シフトが発生していればブロック２０４へ、発生していない場合には２０２へ移行する。
【００３９】
位相シフトが発生した場合は、ブロック２０４においてシフト方向により分岐する。進み方向にシフトする場合にはブロック２０５にて位相シフトカウンタのカウンタ値を１減算し、遅れ方向にシフトする場合にはブロック２０６にてカウンタ値を１加算する。
【００４０】
ブロック２０７では、設定されている制限値Ｗ２ｃ及びＷ３ｃとカウンタ値の比較を行い、エラー判定された場合はブロック２０８にて割り込みを発生させエラーを通知し、ＯＫの場合にはブロック２０９へ移行し、位相シフトレジスタ１０１の更新を実施する。
【００４１】
以上説明したように本実施形態によれば、データ有効領域が温度ドリフトにより変化し、その変化量が位相シフト制限値を超えるエラーが発生した場合には、エラー発生直後に検知が可能となる。よって、エラーの早期検知、転送データの信頼性向上、ならびにエラー対処性能の向上が実現される。
【００４２】
尚、上記実施形態では、位相シフト制限値設定部１０９には、規格で決められている遅れ制限値Ｗ２及び進み制限値Ｗ３を設定したが、他の値をホスト装置から設定してもよい。これにより、シフト制限判定に幅を持たせることが可能となるだけでなく、環境変化による温度ドリフトの変動範囲が変わった場合にも対応可能となる。
【００４３】
例えば、エラー訂正処理を軽度に行っている、即ちエラーが厳しきく制限されるシステムでは位相シフト制限値を小さく設定し、エラー訂正処理を十分に行っているシステムでは、位相シフト制限値を大きく設定してもよい。又、１シフトあたりの位相変化量を大きく（位相設定レジスタの分解能を低く）設定した場合には、位相シフト制限値を小さく設定することで、制限値超過エラーの検出精度低下を防止できる。
【００４４】
以上の説明はこの発明の実施の形態であって、この発明の装置及び方法を限定するものではなく、様々な変形例を容易に実施することができるものである。例えば、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。
【符号の説明】
【００４５】
１０…ホストコントローラ、１２…逓倍分周器、１３…送信回路、１４…受信回路、１５…サンプリング信号補正回路。
【図１】
0005330340.tif 000002
【図２】
0005330340.tif 000003
【図３】
0005330340.tif 000004
【図４】
0005330340.tif 000005
【図５】
0005330340.tif 000006