説明

情報処理装置

【課題】メモリカードが必要に応じて挿抜されるシステムにおいて、データ転送時におけるビット間スキューを調整し、データ転送の信頼性を向上させる。
【解決手段】ホストにメモリカードが挿入され、通信が正常に行われると、該メモリカードに書き込まれたテストデータライトを読み出し、その際にビット間スキュー検出回路24が検出したビット間スキューの検出データをビット間スキュー表示レジスタ25から読み出し、問題がない場合、あるいは、タイミング選択レジスタ23によるビット間スキューの調整で問題がないと判断するとメモリカードに対するリード/ライト動作を行う。また、ビット間スキュー値、またはタイミング選択レジスタ23によるビット間スキューの調整に問題がある場合、ビット間スキューの調整、またはビット幅の縮小などの処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置におけるデータ転送技術に関し、特に、メモリカードを用いたデータ転送時におけるデータ通信の信頼性の向上に有効な技術に関する。
【背景技術】
【0002】
パーソナルコンピュータや多機能端末機などの外部記憶メディアとして、たとえば、マルチメディアカード(登録商標)やSD(Secure Digital)カード(登録商標)などのメモリカードが広く知られている。
【0003】
マルチメディアカード(以下、MMCという)/SDカードでは、データバスのビット幅、データ転送のクロック周波数を変更可能な複数のモードを持っている。たとえば、MMCでは、1ビットのビット幅で約20MHzのクロック周波数によりデータ転送を行うモードと、8ビットのビット幅で約52MHzのクロック周波数によりデータ転送を行うモードとがある。
【0004】
また、MMCとSDカードとでは、データ転送に用いられるバス幅、セットアップタイム/ホールドタイムに相違がある。異なる規格のメモリカードを共通のインタフェースを介してホスト装置に接続することは通常行われないが、SDカード規格は、MMC規格から派生したメモリカード規格であることから、両規格のメモリカードは共通のインタフェースを介してホスト装置に接続されることも多い。
【0005】
このような場合、メモリカードが接続されているホストシステムとしては、すべてのメモリカードでのデータ転送を可能とするために、最も厳しい規格値に基づいて設計を行うことが通常である。
【0006】
また、複数のビットバスでのデータ転送を行う場合には、ビット間でのスキューをも考慮することが必要となり、このようなビット間のスキューを調整する技術として、たとえば、特許文献1〜3を始めとする技術が開示されている。
【特許文献1】特開2002−189689号公報
【特許文献2】特開2005−303753号公報
【特許文献3】特開2004−127147号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
ところが、上記のようなメモリカードにおけるデータ転送技術では、次のような問題点があることが本発明者により見い出された。
【0008】
本発明者が検討したところによれば、最も厳しい規格値に基づいて設計を行う場合、メモリカードの動作制御を行う半導体集積回路装置で規格を満足するだけでは足りず、半導体集積回路装置とメモリカードとが接続されるコネクタと、その間を接続するバスとを有するシステム全体として最も厳しい規格値に基づいて規格を満足することが必要であり、データ転送のクロック周波数が高速化するに伴い、設計が困難になっていることが判明した。
【0009】
また、DRAM(Dynamic Random Access Memory)メモリモジュールのように、一旦装着された後は固定的に装着された状態であることが通常の場合、コネクタとDRAMメモリモジュール間の接続状態により接触抵抗が大きく変化することは通常ないが、MMC/SDカードのような必要に応じて挿抜されるメモリカードの場合は、挿入状態により接触抵抗が大きく変化することも明らかとなった。
【0010】
本発明の目的は、MMC/SDカードのようなメモリカードを必要に応じて挿抜されるシステムにおいて、一定の規格値を満足するような設計を行った後、メモリカードとのデータ転送のモードに応じて満足する必要のある規格値でデータ転送が行われることが可能な調整機能を持った半導体集積回路装置を提供することにある。
【0011】
また、本発明の他の目的は、そのような半導体集積回路装置を用いたシステムにおけるシステム設計方法を提供することにある。
【0012】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0013】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【0014】
本発明は、データ転送におけるビット数とデータ転送に用いられるクロック信号の周波数が切り替え可能なメモリカードが外部接続される情報処理装置であって、該情報処理装置は、メモリカードを管理するコントローラを備え、該コントローラは、メモリカードが情報処理装置に接続された際に、メモリカードに書き込まれたテストデータを読み出してビット間スキューを検出し、その検出結果に基づいてビット間スキューの調整を行うものである。
【0015】
また、本願のその他の発明の概要を簡単に示す。
【0016】
本発明は、前記コントローラが、メモリカードからテストデータを読み出した際のビット間スキューを検出するビット間スキュー検出部と、該ビット間スキュー検出部が検出したビット間スキューの検出結果を格納するビット間スキュー検出結果格納部と、該ビット間スキュー検出結果格納部の格納された検出結果から、選択制御信号を生成するスキュー制御部と、選択制御信号に基づいて、データの入出力信号を任意に遅延させてビット間スキューを調整する遅延時間調整部とを備えたものである。
【0017】
また、本発明は、前記コントローラが、データの入力信号によるビット間スキューと、データの出力信号によるビット間スキューとを個別に調整するものである。
【0018】
さらに、本発明は、前記コントローラが、ビット間スキューの調整が不可の際にデータ転送のビット幅を縮小するものである。
【0019】
また、本発明は、前記コントローラが、ビット間スキューを検出する前に、メモリカードの種類、動作モード、およびデータ転送に用いられるクロック信号の周波数に応じて、データ転送に用いられるすべてのビットにおけるデータ入出力タイミングを一律して調整するものである。
【0020】
さらに、本発明は、前記コントローラが、データ転送用のクロック信号を任意に遅延させるクロック遅延時間調整部を備え、該クロック遅延時間調整部は、データ転送に用いられるクロック信号を任意に遅延させることによってデータ転送に用いられるすべてのビットのデータ入出力のタイミングを一律して調整するものである。
【発明の効果】
【0021】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【0022】
(1)接続されたメモリカード毎にデータ転送タイミングを最適に調整することができるので、情報処理装置におけるデータ転送を安定して行うことができる。
【0023】
(2)また、上記(1)により、情報処理装置における高品質なデータ転送の高速化を図るとともに、該情報処理装置の信頼性を大幅に向上させることができる。
【発明を実施するための最良の形態】
【0024】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0025】
図1は、本発明の一実施の形態によるホストに設けられたホストコントローラ、およびメモリカードの接続例を示す説明図、図2は、図1のホストコントローラに設けられた入出力回路の一例を示す説明図、図3は、図1のホストコントローラに設けられた遅延時間選択回路の構成例を示す説明図、図4は、図3の遅延時間選択回路における選択制御データによる遅延時間の変化例を示した説明図、図5は、図1のホストコントローラに設けられたタイミング選択レジスタの構成例を示した説明図、図6は、図1のホストコントローラに設けられたビット間スキュー検出回路の構成例を示す説明図、図7は、図6のビット間スキュー検出回路の動作タイミングを示すタイミングチャート、図8は、図1のホストコントローラによるソフトウェア処理の一例を示すフローチャート、図9は、図2の入出力回路におけるクロック信号CLKの出力回路とデータDAT(0)の入出力回路とに注目した説明図、図10は、図9の遅延時間選択回路によるタイミング調整の一例を示すタイミングチャート、図11は、図9の遅延時間選択回路によるタイミング調整の他の例を示すタイミングチャート、図12は、本発明の一実施の形態によるビット間スキュー調整におけるタイミングチャート、図13は、図2のホストコントローラに設けられたビット間スュー検出回路の検出結果を示す説明図、図14は、ビット間スキュー表示レジスタに格納されたサンプリング結果に基づく入力側の遅延時間選択回路の調整例を示す説明図、図15は、ビット間スキュー表示レジスタに格納されたサンプリング結果に基づく出力側の遅延時間選択回路の調整例を示す説明図である。
【0026】
本実施の形態において、図1は、ホスト(情報処理装置)に設けられたホストコントローラ(コントローラ)1、およびメモリカード2の接続例を示す説明図である。ホストは、パーソナルコンピュータや多機能端末機などの情報処理装置からなり、ホストコントローラ1は、コマンド送信、レスポンス受信、およびデータ送受信などの制御を行う。メモリカード2は、たとえば、ホストの外部記憶メディアとして用いられる。
【0027】
メモリカード2は、ホストに設けられたカードソケット3を介してホストコントローラ2に接続されている。カードソケット3とホストコントローラ2とは、ホストコントローラ2、およびカードソケット3が実装されたプリント配線基板4に形成された配線5を介して接続されている。
【0028】
この場合、メモリカード2におけるデータバスのビット幅は、8ビットのビット幅となっており、配線5は、データDAT(0)〜DAT(7)を伝達するデータバス、メモリカード2との通信用クロック信号として用いられるクロック信号CLKを伝達するクロック信号線、コマンドCMDを伝達するコマンド線、およびメモリカード2に供給する電源電圧VDD,基準電位VSS1,VSS2のそれぞれを供給する電源線から構成されている。
【0029】
図2は、ホストコントローラ2に設けられた入出力回路6の一例を示す説明図である。
【0030】
入出力回路6は、フリップフロップ7〜9,101 〜108 ,111 〜118 、バッファ12〜14,151 〜158 ,161 〜168 、遅延時間選択回路17〜20,211 〜218 ,221 〜228 、タイミング選択レジスタ23、スキュー検出回路(ビット間スキュー検出部)24、ならびにビット間スキュー表示レジスタ(ビット間スキュー結果格納部)25から構成されている。
【0031】
フリップフロップ7のデータ入力端子には、クロック信号CLKが入力されるように接続されており、該フリップフロップ7のデータ出力端子には、バッファ12の入力部、および遅延時間選択回路(クロック遅延時間調整部)17,18の入力部がそれぞれ接続されている。そして、バッファ12の出力部からクロック信号CLKがメモリカード2に出力される。
【0032】
フリップフロップ8のデータ入力端子には、コマンドCMDが入力されるように接続されており、該フリップフロップ8のデータ出力端子には、遅延時間選択回路(遅延時間調整部)19の入力部が接続されている。
【0033】
遅延時間選択回路19の出力部には、バッファ13の入力部が接続されている。このバッファ13の出力部からコマンドCMDがメモリカード2に出力される。バッファ14の入力部には、メモリカード2からのコマンドCMDが入力されるように接続されている。
【0034】
バッファ14の出力部には、遅延時間選択回路20の入力部が接続されており、該遅延時間選択回路20の出力部には、フリップフロップ9のデータ入力端子が接続されている。
【0035】
フリップフロップ101 のデータ入力端子には、データDAT(0)が入力されるように接続されており、該フリップフロップ101 のデータ出力端子には、遅延時間選択回路211 の入力部が接続されている。遅延時間選択回路211 の出力部には、バッファ151 の入力部が接続されている。バッファ151 の出力部からデータDAT(0)がメモリカード2に出力される。
【0036】
バッファ161 の入力部には、メモリカード2からのデータDAT(0)が入力されるように接続されている。バッファ161 の出力部には、遅延時間選択回路221 の入力部が接続されている。この遅延時間選択回路221 の出力部には、フリップフロップ111 のデータ入力端子が接続されている。
【0037】
以下、同様に、フリップフロップ102 〜108 のデータ入力端子には、データDAT(1)〜DAT(7)が入力されるようにそれぞれ接続されている。これらフリップフロップ102 〜108 のデータ出力端子には、遅延時間選択回路212 〜218 の入力部がそれぞれ接続されている。
【0038】
遅延時間選択回路212 〜218 の出力部には、バッファ152 〜158 の入力部がそれぞれ接続されている。バッファ152 〜158 の出力部からデータDAT(1)〜DAT(7)がメモリカード2にそれぞれ出力される。
【0039】
バッファ162 〜168 の入力部には、メモリカード2からのデータDAT(1)〜DAT(7)が入力されるようにそれぞれ接続されている。バッファ162 〜168 の出力部には、遅延時間選択回路222 〜228 の入力部がそれぞれ接続されている。この遅延時間選択回路222 〜228 の出力部には、フリップフロップ112 〜118 のデータ入力端子がそれぞれ接続されている。
【0040】
また、フリップフロップ9,111 〜118 のクロック端子には、遅延時間選択回路17の出力部がそれぞれ接続されており、フリップフロップ8,101 〜108 のクロック端子には、遅延時間選択回路18の出力部がインバータIvを介してそれぞれ接続されている。
【0041】
ビット間スキュー検出回路24の入力部din(0)〜din(7)には、バッファ161 〜168 の出力部がそれぞれ接続されている。ビット間スキュー検出回路24には、基準クロック信号clks、ビットタイミング信号bt、およびサンプリングタイミング信号stが入力されるようにそれぞれ接続されている。
【0042】
遅延時間選択回路17,18は、タイミング選択レジスタ(スキュー制御部)23に格納された選択制御データselに基づいてクロック信号CLKを任意に遅延させ、データDAT(0)〜DAT(7)の入力側のフリップフロップ111 〜118 、ならびに出力側のフリップフロップ101 〜108 のクロックタイミングをそれぞれ調整する。
【0043】
遅延時間選択回路19は、タイミング選択レジスタ23に格納された選択制御データselに基づいてコマンドCMDの信号を任意に遅延させ、フリップフロップ8からバッファ13までのコマンドCMDの出力タイミングを任意に調整する。
【0044】
遅延時間選択回路(遅延時間調整部)20は、タイミング選択レジスタ23に格納された選択制御データselに基づいてコマンドCMDの信号を任意に遅延させ、バッファ14から出力された該コマンドCMDがフリップフロップ9に入力されるまでの出力タイミングを調整する。
【0045】
遅延時間選択回路(遅延時間調整部)211 〜218 は、タイミング選択レジスタ23に格納されたselに基づいて、データDAT(0)〜DAT(7)の信号を任意に遅延させ、フリップフロップ101 〜108 からバッファ151 〜158 までのデータDAT(0)〜DAT(7)の出力タイミングを任意にそれぞれ調整する。
【0046】
遅延時間選択回路(遅延時間調整部)221 〜228 は、タイミング選択レジスタ23に格納された選択制御データselに基づいてデータDAT(0)〜DAT(7)の信号を任意に遅延させ、バッファ161 〜168 から出力されたデータDAT(0)〜DAT(7)がフリップフロップ111 〜118 に入力されるまでの出力タイミングをそれぞれ調整する。
【0047】
タイミング選択レジスタ23は、たとえば、ホストコントローラ1に設けられ、スキュー制御部を構成するCPU(Centaral Processing Unit)の制御により選択制御データselを格納する。
【0048】
ビット間スキュー検出回路24は、データDAT(0)〜DAT(7)を伝達するデータ線におけるビット間スキューを検出する。ビット間スキュー表示レジスタ25は、ビット間スキュー検出回路24が検出したビット間スキューの検出結果を格納する。ビット間スキュー検出回路24は、前述したCPUによりアクセス可能であり、該CPUが検出結果を読み出すことができる。
【0049】
図3は、遅延時間選択回路17の構成例を示す説明図である。この図3では、遅延時間選択回路17の構成例を示しているが、その他の遅延時間選択回路18〜20,211 〜218 ,221 〜228 についても、遅延時間選択回路17と同様の構成である。
【0050】
遅延時間選択回路17は、バッファ17a〜17d、およびセレクタ17eから構成されている。セレクタ17eは、第1〜第5の入力部を備えており、タイミング選択レジスタ23に格納された選択制御データselに基づいて、これら第1〜第5の入力部に入力された信号のいずれか1つを選択して出力する。
【0051】
バッファ17a〜17dは、遅延時間選択回路17の入力部とセレクタ17eの第5の入力部との間に直列接続されている。
セレクタ17eにおける第1の入力部には、バッファ17aの入力部が接続されている。
【0052】
また、第2の入力部には、バッファ17aの出力部とバッファ17bの入力部とが接続された接続部が接続されており、第3の入力部には、バッファ17bの出力部とバッファ17cの入力部とが接続された接続部が接続されている。
【0053】
第4の入力部には、バッファ17cの出力部とバッファ17dの入力部とが接続された接続部が接続されており、第5の入力部には、前述したようにバッファ17dの出力部が接続されている。
【0054】
図4は、遅延時間選択回路17における選択制御データselによる遅延時間の変化例を示した図である。
【0055】
たとえば、選択制御データselが’000’の場合、セレクタ17eは、第5の入力部に入力された信号を出力するように選択する。よって、入力信号は、バッファ17a〜77dを介した信号が出力されることになり、その場合の遅延時間は、図4に示すように、約5nsとなる。
【0056】
また、選択制御データselが’010’の場合には、バッファ17a,17bを介した信号がセレクタ17eから出力される。その場合の遅延時間は、約3nsとなる。
【0057】
図5は、タイミング選択レジスタ23の構成例を示した説明図である。
【0058】
図5においては、左から右にかけて、’タイミング選択レジスタ23のビット’、および’ビット機能’をそれぞれ示している。
【0059】
タイミング選択レジスタ23は、前述したように、選択制御データselによって遅延時間選択回路17〜20,211 〜218 ,221 〜228 の遅延時間を制御するレジスタである。
【0060】
たとえば、タイミング選択レジスタ23のビット63−61が’010’に設定されると、遅延時間選択回路17が選択され、該遅延時間選択回路17の遅延時間が約3ns(図4)となる。
【0061】
これにより、コマンドCMD、およびデータDAT(0)〜DAT(7)の入力側におけるフリップフロップ9,111 〜118 のクロックタイミングが一律して約3nsに設定されることになる。
【0062】
図6は、ビット間スキュー検出回路24の構成例を示す説明図である。
【0063】
ビット間スキュー検出回路24は、シフトレジスタ24a1 〜24a8 、サンプリングクロック生成部24b、ならびにインバータ24dから構成されている。
【0064】
サンプリングクロック生成部24bは、サンプリングクロック信号sclkを生成する。このサンプリングクロック生成部24bは、2つの論理積回路AND1,AND2から構成されている。
【0065】
論理積回路AND1の一方の入力部には、基準クロック信号clksが入力されるように接続されており、該論理積回路AND1の他方の入力部には、論理積回路AND2の出力部が接続されている。
【0066】
論理積回路AND2の一方の入力部には、ビットタイミング信号btが入力されるように接続されており、該論理積回路AND2の他方の入力部には、サンプリングタイミング信号stが入力されるように接続されている。
【0067】
そして、論理積回路AND1の出力部から、サンプリングクロック信号sclkが出力される。サンプリングクロック信号sclkは、シフトレジスタ24a1 を構成するフリップフロップd0(1),d0(3),d0(5),d0(7),d0(9),d0(11),d0(13),d0(15),d0(17),d0(19)のクロック端子にそれぞれ供給されている。
【0068】
同様に、サンプリングクロック信号sclkは、シフトレジスタ24a2 〜24a8 を構成するフリップフロップd1(1)〜d7(1),d1(3)〜d7(3),d1(5)〜d7(5),d1(7)〜d7(7),d1(9)〜d7(9),d1(11)〜d7(11),d1(13)〜d7(13),d1(15)〜d7(15),d1(17)〜d7(17),d1(19)〜d7(19)のクロック端子にそれぞれ供給されている。
【0069】
また、シフトレジスタ24a1 を構成するフリップフロップd0(0),d0(2),d0(4),d0(6),d0(8),d0(10),d0(12),d0(14),d0(16),d0(18)のクロック端子には、インバータ24dを介してサンプリングクロック信号sclkの反転信号が供給されている。
【0070】
同様に、シフトレジスタ24a2 〜24a8 を構成するフリップフロップd1(0)〜d7(0),d1(2)〜d7(2),d1(4)〜d7(4),d1(6)〜d7(6),d1(8)〜d7(8),d1(10)〜d7(10),d1(12)〜d7(12),d1(14)〜d7(14),d1(16)〜d7(16),d1(18)〜d7(18)のクロック端子には、インバータ24cを介してサンプリングクロック信号sclkの反転信号が供給されている。
【0071】
基準クロック信号clksは、メモリカード2に対して供給するクロック信号CLKよりも高い周波数のクロック信号であり、ビット間スキューの検出する刻み幅から周波数が決定される。
【0072】
シフトレジスタ24a1 (〜24a8 )は、サンプリングクロック信号sclkの立ち上がりに同期してバッファ161 (〜168 )から出力されるデータDAT(0)(〜DAT(7))の信号値を取り込み、シフトするものと、サンプリングクロック信号sclkの立ち下がりに同期してバッファ151 (〜158 )に入力されるデータDAT(0)(〜DAT(7))の信号値を取り込み、シフトするものとからなる。
【0073】
シフトレジスタ24a1 (〜24a8 )は、サンプリング回数分の段数を必要とし、図6では、たとえば、10段となっている。
【0074】
サンプリングクロック生成部24bには、前述したように基準クロック信号clks、ビットタイミング信号bt、およびサンプリングタイミング信号stがそれぞれ入力される。
【0075】
ビットタイミング信号btは、メモリコントローラ1に設けられた受信制御回路から出力される信号であり、サンプリングするビットを受信したときに’1’となる。サンプリングタイミング信号stは、ビットタイミング信号btが’1’のときに基準クロック信号clksをカウントし、そのカウント値をデコードすることによって生成され、サンプリングの開始からシフトレジスタ24a1 〜24a8 のシフト期間中’1’となる。
【0076】
たとえば、クロック信号CLKの周期が40ns、サンプリングクロック信号sclkの周期が2nsの場合におけるビット間スキュー検出回路24の動作タイミングは、図7に示すようなタイミングチャートとなる。
【0077】
図7においては、上方から下方にかけて、クロック信号CLK、バッファ161 (バッファ162 〜167 )から出力されるデータDAT(0)、バッファ168 から出力されるDAT(7)、基準クロック信号clks、ビットタイミング信号bt、サンプリングクロック信号sclk、およびシフトレジスタ24a1 ,24a8 における信号のタイミングをそれぞれ示している。
【0078】
この場合、ビット間スキュー検出回路24は、サンプリングクロック信号sclkの信号立ち上がりと立ち下がりタイミングにおいて、データDAT(0)〜DAT(7)をそれぞれサンプリングし、シフトする。
【0079】
図7におけるデータDAT(0),DAT(7)のサンプリング結果は、以下に示すように、
d(0)=00001111111111000000 (2進数)
d(7)=00000011111111110000 (2進数)
となる。
【0080】
よって、図7では、DAT(0)の信号に対してDAT(7)の信号が2ns遅延していると判断することができる。なお、ビット間スキュー検出回路24が検出したデータDAT(0)〜DAT(7)のサンプリング値は、ビット間スキュー表示レジスタ25に格納され、CPUによって読み出すことが可能となる。
【0081】
次に、本実施の形態によるホストコントローラ1における作用について説明する。
【0082】
図8は、ホストコントローラ1のソフトウェア処理の一例を示すフローチャートである。
【0083】
まず、ホストコントローラ1が、ホストのカードソケット3にメモリカードが挿入されたことを該カードソケット3からの信号により検出すると(ステップS101)、ホストコントローラ1は、初期化を行うコマンドであるコマンドCMD55とコマンドCMD41を発行する。
【0084】
メモリカード2からレスポンスを正しく受信した場合、ホストコントローラ1は、SDメモリカードと識別し、該メモリカード2からレスポンスを受信しない場合にはMMCと認識する(ステップS102)。
【0085】
続いて、識別したメモリカードに見合った初期化を実行し(ステップS103)、メモリカード2をData Transfer Stateに移行させる。MMCの場合、最低でも、初期化用のコマンドとしてコマンドCMD1→コマンドCMD2→コマンドCMD3→コマンドCMD7の発行が必要となる。
【0086】
続いて、ホストコントローラ1は、テストデータライトを行う。このテストデータライトは、データ転送のビット幅を1ビットに設定し、低周波数のクロック信号CLKによりテストデータ(たとえば、0x55AAなど)をメモリカード2に書き込む(ステップS104)。
【0087】
なお、テストデータをライトせずに、すでに書き込まれているファイルシステムにおけるFAT(File Allocation Tables)のMaster Boot RecordのSignature Wordなどを利用するようにしてもよい。
【0088】
そして、ホストコントローラ1は、挿入されたメモリカード2に応じてモード設定(たとえば、通常モード(Default Mode)/高速モード(High Speed Mode)など)を行い、データ転送のビット幅を1ビットに維持したまま(MMCの場合には、コマンドCMD6を発行して設定を行う)、該メモリカード2の動作モードに応じたデータ転送用のクロック信号CLKの周波数を設定する(ステップS105)。
【0089】
続いて、ホストコントローラ1は、挿入されたメモリカード2、設定したモード、クロック信号CLKの周波数に応じてタイミング選択レジスタ23を設定し(ステップS106)、クロック信号CLK、コマンドCMD、およびデータDAT(0)の入出力タイミングを調整する。
【0090】
このステップS106では、挿入されたメモリカード2、設定したモード、およびクロック信号CLKの周波数に応じて規定される入力セットアップタイム、入力ホールドタイム、および出力遅延時間に対応するのにホストコントローラ1がタイミング選択レジスタ23を設定する。
【0091】
ホストコントローラ1は、テストデータをリード(MMCの場合には、コマンドCMD17を発行)し(ステップS107)、通信エラーがなく期待通りに受信ができていることを確認する(ステップS108)。
【0092】
通信エラーが発生している場合には、ステップS105の処理に戻り、クロック信号CLKの周波数を下げるか、タイミング選択レジスタ23の設定値を見直すかして、通信エラーがなくなるまで、ステップS105〜S108の処理を繰り返し実行する。
【0093】
また、ステップS108の処理において、通信が正常に行われている場合、ホストコントローラ2は、挿入されているメモリカード2に応じてビット幅(たとえば、8ビット)を設定(MMCではコマンドCMD6を発行)する(ステップS109)。
【0094】
続いて、後述するステップS112の判定結果に基づいて、タイミング選択レジスタ23によるビット間スキューの調整を行う(ステップS110)。なお、初回の場合には、ステップS110の処理はスルーされることになる。
【0095】
そして、メモリカード2のテストデータをリード(MMCではコマンドCMD17を発行)し、その際にビット間スキュー検出回路24が検出したビット間スキューの検出データをビット間スキュー表示レジスタ25から読み出す(ステップS111)。
【0096】
ホストコントローラ1は、ビット間スキュー値に問題がない場合、あるいは、タイミング選択レジスタ23によるビット間スキューの調整で問題がないと判断すると(ステップS112)、コマンドCMD18やコマンドCMD25などのデータ転送用コマンドを使用してメモリカード2に対するリード/ライト動作を行う(ステップS113)。
【0097】
また、ステップS112の処理において、ビット間スキュー値、またはタイミング選択レジスタ23によるビット間スキューの調整に問題がある場合、ステップS109の処理に戻り、ステップS109〜S112の処理により、ビット間スキューの調整、またはビット幅の縮小などの処理を行う。
【0098】
なお、ステップS101〜S103の処理は、低クロック周波数(たとえば、約400kHz)で、データのビット幅を1ビットに設定して処理を行い、ステップS104〜S112の処理後に、挿入されたメモリカード2に応じて最適なクロック周波数、および最適なビット幅により、ステップS113によるデータ転送が行われる。
【0099】
次に、入出力回路6によるモード、およびクロック信号CLKに関するタイミング調整について、図9、および図10を用いて説明する。
【0100】
図9は、入出力回路6(図2)におけるクロック信号CLKの出力回路とデータDAT(0)の入出力回路とに注目した説明図である。また、図10は、入出力回路6によるモード、およびクロック信号CLKに関するタイミング調整の一例を示すタイミングチャートである。
【0101】
図10においては、上方から下方にかけて、クロック信号CLK、入力されるデータDAT(0)、フリップフロップ9と遅延時間選択回路20とが接続されるノードnd0i(図9)、フリップフロップ9のクロック端子と遅延時間選択回路17とが接続されるノードnclki、フリップフロップ8のクロック端子と遅延時間選択回路18とがインバータIvを介して接続されるノードnclko、ならびに出力されるデータDAT(0)の信号タイミングについてそれぞれ示している。
【0102】
ここでは、クロック信号CLKを出力するフリップフロップ7からメモリカード2までの信号遅延時間を、たとえば、2nsと仮定する。また、データDAT(0)が入出力される遅延時間選択回路211 ,221 の信号遅延時間が3nsに設定されているものと仮定する。
【0103】
図8のステップS106処理において、クロック信号CLKの周波数が50MHz、データDAT(0)における入力セットアップタイムが6ns、入力ホールドタイムが2ns、データDAT(0)の出力遅延時間が0ns〜4nsとなるメモリカード2のモードに対応する場合、図9に示すように、入力タイミングに関しては遅延時間選択回路17をマージンを考慮して3nsに設定するように調整する。また、出力遅延に関しては遅延時間選択回路18を1ns(図5の最小値)に設定するように調整する。
【0104】
また、図8のステップS106の処理にて、クロック信号CLKの周波数が20MHz、入力セットアップタイムが5ns、入力ホールドタイムが5nsとなるメモリカード2のモードに対応する場合、図11に示すように、入力タイミングに関して遅延時間選択回路17をマージンを考慮して5nsに設定する。
【0105】
次に、ビット間スキューの調整技術について説明する。
【0106】
図12は、入力側ビット間スキューの調整例を示したタイミングチャートである。図12において、上方から下方にかけて、クロック信号CLK、入力されるデータDAT(0)〜DAT(7)、ならびにサンプリングクロック信号sclk(周期=2ns)における信号タイミングをそれぞれ示している。
【0107】
また、図13は、図12の信号タイミングにおいて、ビット間スキュー検出回路24がサンプリングした結果をビット間スキュー表示レジスタ25に格納したサンプリング結果例を示したものである。
【0108】
図12、および図13より、ビット間スキュー検出回路24のサンプリング結果を、CPUがビット間スキュー表示レジスタ25から読み出すことにより、データDAT(0)に対して、データDAT(2)とデータDAT(3)とが約2ns早く変化しており、入力のホールドタイムマージンが減少していることを確認することができる。
【0109】
また、データDAT(0)に対して、データDAT(6)とデータDAT(7)とが約2ns遅く変化しているので、入力のセットアップマージンが減少することを確認することができる。
【0110】
よって、ビット間スキュー表示レジスタ25に格納されたサンプリング結果(図13)に基づいて、データDAT(0)〜DAT(7)の入力側の遅延時間選択回路221 〜228 を、図14に示すように変更することによって、入力側ビット間スキューを調整することが可能となる。
【0111】
また、ホストコントローラ1とメモリカード2との通信が双方向通信であることから、出力側に関しても同様のビット間スキューが発生することが予想される。よって、データDAT(0)〜DAT(7)の出力側の遅延時間選択回路211 〜218 を、図15に示すように設定することにより、出力側ビット間スキューを調整することが可能となる。
【0112】
それにより、本実施の形態によれば、メモリカード2をカードソケット3に挿入した後にタイミング調整を行うことができるので、最適なバスタイミングを実現することが可能となり、データ送受信の信頼性を向上させることができる。
【0113】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【0114】
本発明は、情報処理システムにおけるデータ転送の高速、消費電力の低減、および高信頼性化を実現する技術に適している。
【図面の簡単な説明】
【0115】
【図1】本発明の一実施の形態によるホストに設けられたホストコントローラ、およびメモリカードの接続例を示す説明図である。
【図2】図1のホストコントローラに設けられた入出力回路の一例を示す説明図である。
【図3】図1のホストコントローラに設けられた遅延時間選択回路の構成例を示す説明図である。
【図4】図3の遅延時間選択回路における選択制御データによる遅延時間の変化例を示した説明図である。
【図5】図1のホストコントローラに設けられたタイミング選択レジスタの構成例を示した説明図である。
【図6】図1のホストコントローラに設けられたビット間スキュー検出回路の構成例を示す説明図である。
【図7】図6のビット間スキュー検出回路の動作タイミングを示すタイミングチャートである。
【図8】図1のホストコントローラによるソフトウェア処理の一例を示すフローチャートである。
【図9】図2の入出力回路におけるクロック信号の出力回路とデータDAT(0)の入出力回路とに注目した説明図である。
【図10】図9の遅延時間選択回路によるタイミング調整の一例を示すタイミングチャートである。
【図11】図9の遅延時間選択回路によるタイミング調整の他の例を示すタイミングチャートである。
【図12】本発明の一実施の形態によるビット間スキュー調整におけるタイミングチャートである。
【図13】図2のホストコントローラに設けられたビット間スキュー検出回路の検出結果を示す説明図である。
【図14】ビット間スキュー表示レジスタに格納されたサンプリング結果に基づく入力側の遅延時間選択回路の調整例を示す説明図である。
【図15】ビット間スキュー表示レジスタに格納されたサンプリング結果に基づく出力側の遅延時間選択回路の調整例を示す説明図である。
【符号の説明】
【0116】
1 ホストコントローラ(コントローラ)
2 メモリカード
3 カードソケット
4 プリント配線基板
5 配線
6 入出力回路
7〜9 フリップフロップ
101 〜108 フリップフロップ
111 〜118 フリップフロップ
12〜14 バッファ
151 〜158 バッファ
161 〜168 バッファ
17 遅延時間選択回路(クロック遅延時間調整部)
17a〜17d バッファ
17e セレクタ
18 遅延時間選択回路(クロック遅延時間調整部)
19 遅延時間選択回路(遅延時間調整部)
20 遅延時間選択回路(遅延時間調整部)
211 〜218 遅延時間選択回路(遅延時間調整部)
221 〜228 遅延時間選択回路(遅延時間調整部)
23 タイミング選択レジスタ(スキュー制御部)
24 スキュー検出回路(ビット間スキュー検出部)
24a1 〜24a8 シフトレジスタ
24b サンプリングクロック生成部
24d インバータ
25 ビット間スキュー表示レジスタ(ビット間スキュー結果格納部)
Iv インバータ
AND1,AND2 論理積回路

【特許請求の範囲】
【請求項1】
データ転送におけるビット数とデータ転送に用いられるクロック信号の周波数が切り替え可能なメモリカードが外部接続される情報処理装置であって、
前記情報処理装置は、前記メモリカードを管理するコントローラを備え、
前記コントローラは、
前記メモリカードが前記情報処理装置に接続された際に、前記メモリカードに書き込まれたテストデータを読み出してビット間スキューを検出し、その検出結果に基づいてビット間スキューの調整を行うことを特徴とする情報処理装置。
【請求項2】
請求項1記載の情報処理装置において、
前記コントローラは、
前記メモリカードからテストデータを読み出した際のビット間スキューを検出するビット間スキュー検出部と、
前記ビット間スキュー検出部が検出したビット間スキューの検出結果を格納するビット間スキュー検出結果格納部と、
前記ビット間スキュー検出結果格納部の格納された検出結果から、選択制御信号を生成するスキュー制御部と、
選択制御信号に基づいて、データの入出力信号を任意に遅延させてビット間スキューを調整する遅延時間調整部とを備えたことを特徴とする情報処理装置。
【請求項3】
請求項1または2記載の情報処理装置において、
前記コントローラは、
データの入力信号によるビット間スキューと、データの出力信号によるビット間スキューとを個別に調整することを特徴とする情報処理装置。
【請求項4】
請求項1〜3のいずれか1項に記載の情報処理装置において、
前記コントローラは、
ビット間スキューの調整が不可の際にデータ転送のビット幅を縮小することを特徴とする情報処理装置。
【請求項5】
請求項1〜4のいずれか1項に記載の情報処理装置において、
前記コントローラは、
ビット間スキューを検出する前に、前記メモリカードの種類、動作モード、およびデータ転送に用いられるクロック信号の周波数に応じて、データ転送に用いられるすべてのビットにおけるデータ入出力タイミングを一律して調整することを特徴とする情報処理装置。
【請求項6】
請求項5記載の情報処理装置において、
前記コントローラは、
データ転送用のクロック信号を任意に遅延させるクロック遅延時間調整部を備え、
前記クロック遅延時間調整部は、
データ転送に用いられるクロック信号を任意に遅延させることによってデータ転送に用いられるすべてのビットのデータ入出力のタイミングを一律して調整することを特徴とする情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2007−249753(P2007−249753A)
【公開日】平成19年9月27日(2007.9.27)
【国際特許分類】
【出願番号】特願2006−74210(P2006−74210)
【出願日】平成18年3月17日(2006.3.17)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】