異なる入出力構成を容易に適用できるデータ処理装置
【課題】SDカート等の外部電子機器とデータの送受信を行うホストコントローラの設計変更に伴う、IO部の信号同期用回路の増加・削減を容易とする。
【解決手段】実施形態は、IO部102と、該IO部とホスト装置とのデータ転送を行うデータ処理部101とから構成されるデータ処理装置100であって、前記データ処理部100は、前記IO部102から入力される特定データに応じて、前記IO部102のデータ入出力タイミングをパラメータ値に基づいて調整するタイミング調整部201を具備し、IO部102の構成に対応したタイミングの調整を行う。
【解決手段】実施形態は、IO部102と、該IO部とホスト装置とのデータ転送を行うデータ処理部101とから構成されるデータ処理装置100であって、前記データ処理部100は、前記IO部102から入力される特定データに応じて、前記IO部102のデータ入出力タイミングをパラメータ値に基づいて調整するタイミング調整部201を具備し、IO部102の構成に対応したタイミングの調整を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、SDカードのような外部装置を接続し、外部装置とデータの入出力処理を行うデータ処理装置に関する。
【背景技術】
【0002】
デジタルカメラ、携帯電話などの携帯機器、及びPC、テレビなどの家電機器に使用され、小型で携帯可能な不揮発性メモリとしてSDカードが広く普及している。SDカードとホスト装置(CPU)間のデータ及びコマンド転送は、ホストコントローラにより制御される。ホストコントローラは一般にデータ処理部とIO部を含み、SDカードはカードスロットを介してIO部に接続される。又ホストコントローラはLSIとして構成される場合が多い。
【0003】
SDカードの場合、例えばデータブロック転送時のクロック停止タイミング及びSDカードからのデータ入力タイミング等が、規格により詳細に定められている。例えばホストコントローラは、SDカードから転送されたデータを規格に合致したタイミングでサンプリングしないと、転送されたデータを正しく認識できない。又ホストコントローラは、この規格に従ってSDカードを制御するように設計されているため、IO部の構成はホストコントローラ側の設計仕様で決められていた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−226374号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ホスト装置、ホストコントローラ及びIO部を1つのLSI内に組み込み、SOC(System on chip)を構成する場合などは、チップサイズの大型化及びレイアウトの都合上、データ処理部とIO部を結ぶ複数の配線の長さ及び配線容量に相違が生じ、各信号の伝送タイミングがずれることがある。このような場合は、例えばF/F(フリップフロップ)を各信号配線の途中に挿入して、複数信号の同期をとることが一般に知られている。
【0006】
しかし、ホストコントローラLSIとして構成されたデータ処理部とIO部の設計を、SOCの製作に流用する場合、IO部の構成が上記のように決まっているので、F/Fを各信号配線の途中に単に挿入することができない。なぜなら、F/Fを例えば1つ挿入すると信号タイミングが1クロック遅れ、上記データ入力タイミング等がSDカードの規格から外れてしまうからである。つまり、配線長の違いにより生じる信号伝送タイミングの相違を無くすため、既存のIO部にF/Fを単に追加して設計変更をすることができないという問題があった。
【0007】
又、ホストコントローラをデータ処理部とIO部を分けた2チップ構成とした場合は、決められたIOしか使うことができないという問題があった。
【課題を解決するための手段】
【0008】
本発明の実施形態では、信号或いはデータ又はコマンドの入出力タイミングを調整する手段を具備したことにより、信号同期のためのF/Fの増加・削減が容易となる。
【0009】
すなわち本発明の実施形態に係るデータ処理装置は、IO部と、該IO部とホスト装置とのデータ転送を行うデータ処理部とから構成されるデータ処理装置であって、前記データ処理部は、前記IO部から入力される特定データに応じて、前記IO部のデータ入出力タイミングをパラメータ値に基づいて調整するタイミング調整部を具備し、IO部の構成に対応したタイミングの調整を行う。
【図面の簡単な説明】
【0010】
【図1】本発明によるデータ処理装置を適用するホストコントローラ100の基本構成を示すブロック図である。
【図2】ホストコントローラ100におけるデータ処理部101及びIO部102の構成及び接続関係を示す図である。
【図3】クロック停止タイミングを示す図である。
【図4】図2の回路にF/F23’〜25’を追加した場合のクロック停止タイミングを示す図である。
【図5】クロックイネーブルSDCLK_EN波形とタイミング調整値の関係を示す図である。
【図6】レスポンス受信開始タイミングを示す図である。
【図7】図2の回路にF/F19’〜21’を追加した場合のレスポンス受信開始タイミングを示す図である。
【図8】レスポンス受信開始位置とタイミング調整値の関係を示す図である。
【図9】データラインのデータとリードウエイトタイミングの関係を示す図である。
【図10】リードウエイト開始位置とタイミング調整値の関係を示す図である。
【図11】データラインのデータとデータ受信開始タイミングの関係を示す図である。
【図12】データ受信開始位置とタイミング調整値の関係を示す図である。
【図13】IO部102のF/Fの段数とパラメータの値を示すテーブルである。
【発明を実施するための形態】
【0011】
以下、本発明に係るデータ処理装置の実施の形態を図面を参照して説明する。
【0012】
図1は本発明によるデータ処理装置を適用するホストコントローラ100の基本構成を示すブロック図である。
【0013】
ホストコントローラ100は例えばLSIとして構成され、本実施形態に係るデータ処理部101及びIO部102を具備する。データ処理部101はホスト装置(例えばCPU)及びIO部に接続され、ホスト装置とIO部とのデータ転送を制御する。IO部102は例えばSDカード等の外部電子機器に接続される。ホストコントローラ100はSDカードを制御するホスト側装置として機能するので、SDホストコントローラとも呼ばれる。
【0014】
図2はホストコントローラ100におけるデータ処理部101及びIO部102の構成及び接続関係を示す。
【0015】
クロックイネーブル生成回路200は、マルチブロックリード時にデータブロック間でクロックの停止制御を行う。マルチブロックリードとは、例えば512バイト単位でSDカードからデータを読込む動作を示す。この512バイトは、ホスト側の転送用バッファの単位容量に相当する。SDカードへのクロック出力停止期間中にバッファ切り替えが行われる。
【0016】
クロック停止タイミング調整回路201は、パラメータ格納部13a又は調整レジスタ14aで設定された調整値(後述される)に基づいて、マルチブロックリード時のクロック停止タイミングを調整する。クロック出力回路202は、インバータ15、F/F(フリップフロップ)16、ANDゲート17、増幅器18、SDCLK用端子27を含み、クロックイネーブル信号SDCLK_ENに応じて、クロックの送出/停止を行なう。
【0017】
コマンド送信回路203は、コマンドライン(SDCMD用端子28に接続される外部配線)へのコマンド出力信号SDCMD_O及びイネーブル信号SDCMD_ENをIO部102に提供する。コマンド入出力回路206は、F/F19〜21、入出力回路22、SDCMD用端子28を含み、コマンド出力信号SDCMD_O及びイネーブル信号SDCMD_ENに応じて、コマンドライン上信号の入出力処理を行う。
【0018】
レスポンス受信回路204は、SDカードからコマンドラインを介して入力されるレスポンスをIO部102から受け取る。このように、ホストコントローラからの「コマンド」に対して、同一経路を使用してSDカードから返信されるデータを「レスポンス」という。レスポンス受信タイミング調整回路205は、パラメータ格納部13b又は調整レジスタ14bで設定された調整値に基づいて、レスポンスの受信開始タイミングを調整する。
【0019】
データ送信回路及びリードウエイト制御回路207は、ライトデータ転送時に送信出力データSDDAT_O及びイネーブル信号SDDAT_EN_XをIO部102に出力する。又回路207はリードデータ転送時に、リードウエイト制御(後述される)を行う場合は、データライン(SDDAT用端子29に接続される外部配線)のビット2のラインにリードウエイト信号を出力する。尚、データ転送は4ビット並列で行われるので、回路207は4回路設けられる。リードウエイトタイミング調整回路208は、パラメータ格納部13c又は調整レジスタ14cで設定された調整値に基づいて、リードウエイト信号の出力開始タイミングを調整する。
【0020】
データ受信回路210は、データラインより入力されるSDデータをIO部102から受け取る。データ受信回路210も並列データビット数に合わせて4回路設けられる。データ受信タイミング調整回路211は、パラメータ格納部13d又は調整レジスタ14dで設定された調整値に基づいて、SDデータの受信開始タイミングを調整する。
【0021】
SDデータ入出力回路209は、F/F23〜25、入出力回路26及び端子29を含み、出力データSDDAT_O及びイネーブル信号SDDAT_EN_Xに応じて、データライン上データの入出力処理を行なう。この入出力回路209も並列データビット数に合わせて4回路設けられる。
【0022】
ここで、データ転送経路(インターフェース)212内のF/F19〜21、23〜25は、信号同期を得るために設けられている。何らかの理由でLSI100内のインターフェースの設計変更を行う場合に、データ処理部101とIO部102間を結ぶ配線の長さが著しく相違しているか或いは配線容量が異なると、各信号の伝送タイミングがずれ、データが正しく転送されないことがある。そのような場合、F/Fを更に挿入するか、あるいは削除する必要がある。パラメータ格納部13及び調整レジスタ14は、そのような場合でも、クロック信号、データ及びコマンドがSDカードの規格を満足するタイミングで転送されるよう、信号転送タイミングを調整するための調整値が設定される。上記の回路200、204、207、210は、調整値に基づいて、信号転送タイミングを調節する(詳細は後述される)。
【0023】
次に、本発明に係るデータ処理装置としてのホストコントローラ100の動作を説明する。
【0024】
SDカードに送信されるSDCLKは、クロック出力回路202により、クロックイネーブルSDCLK_ENをディセーブ(Low)にしたサイクルの次のサイクルで停止される。コマンドSDCMD_EX、SDCMD_O、SDCMD_Iと、SDDAT_EX、SDDAT_O、SDDAT_Iについては前述したように、IO部にそれぞれ1段ずつのF/F19〜21、23〜25が配置され、これらF/Fによって、クロックイネーブル、レスポンス受信、データ受信、リードウエイトの出力のタイミングを合わせ、同期を得ている。
【0025】
図3はクロック停止タイミングを示すタイムチャートである。
【0026】
図3の(a)はホストコントローラから出力されるクロックSDCLK、(b)はSDカードからデータラインに出力されたデータSDDAT、(c)はホストコントローラに入力されたデータSDDAT_I、(d)はクロックイネーブル信号SDCLK_ENである。尚、(a)の出力信号SDCLKと(b)〜(d)の信号の変化時点がずれているのは、カード側でのクロックに対する入力データのHold time を満足するように、ホストコントローラが出力データに遅延を付けていることによる。
【0027】
SDメモリカードの場合は規格により、カードがデータラインにエンドビット「E」(例えばデータビット1で伝送される信号)を出力したクロックから2クロック目のサイクルで、ホスト側はクロックを停止しなければならない。
【0028】
データ処理部101でのデータ受け取りタイミングは、データライン上の信号から1サイクル遅れるので、エンドビット「E」を受けたサイクルの次のサイクルで、クロックイネーブルをディセーブル(Low)にするようにタイミングを作成している。つまり図3(b)のように、SDカードがエンドビット「E」を出力したクロックから2クロック目のサイクルで、図3(d)のようにクロックイネーブルSDCLK_EがLowになり、図3(a)のようにクロックSDCLKを停止する。
【0029】
ここで、ホストコントローラ100をSOCに組み込む等、なんらかの理由でホストコントローラ100の設計を変更する場合を想定する。設計変更した結果、配線が延長されて信号遅延が増加すると、各信号の伝送タイミングがずれることがある。このような場合は、F/Fを各信号配線の途中に挿入して複数信号の同期をとる方法がある。設計変更してF/Fを1つ追加すると、信号タイミングは規格に合致しなくなる。図4は、図2のSDデータ入出力回路209に点線矩形のようにF/F23’〜25’を追加した場合のクロック停止タイミングを示す。このように、入力データSDDAT_Iが全て1クロック遅れるので、エンドビット「E」に応じてLowに変化するクロックイネーブルSDCLK_Eも1クロック遅れる。従って、クロックSDCLKも図3に比べて1クロック余分に出力される。この結果、「SDカードがエンドビットを出力したクロックから2クロック目のサイクルで、ホスト側はクロックを停止しなければならない」というクロック停止タイミングに関する規格に合致していない。
【0030】
そこで本実施形態では、入力データSDDAT_Iの遅れに関わらず、常に規格に合致したクロック停止タイミングを提供する。
【0031】
図2の説明に戻り、クロックイネーブル生成回路200は、入力データSDDAT_Iにおいて、データ転送開始を示すスタートビット「S」(図示されず)を検出した時からのクロック数をカウントするカウンタ11aと、比較基準値を格納する基準レジスタ12aを有する。又クロックイネーブル生成回路200は、カウンタ11aの計数値が基準レジスタ12aの基準値に一致すると、次のクロックでイネーブルSDCLK_ENをLowに落とす。
【0032】
SDカードがデータライン上にスタートビット「S」を出力してから、エンドビット「E」を出力するまでのクロック数は規格により決められている。このクロック数をNdatとする。基準レジスタ12aには、当初このクロック数Ndatが格納されている。この場合、イネーブルSDCLK_ENは、図3(d)に示すタイミングでLowに落ちる。
【0033】
クロック停止タイミング調整回路201は、パラメータ格納手段13aを有する。パラメータ格納手段13aは、基準レジスタ12aに格納されている比較基準値を調整するための調整値Taが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。クロック停止タイミング調整回路201は、この調整値Taを用いて基準レジスタ12aに格納されている比較基準値を調整する。この調整値Taは、図2の回路に設計変更がない場合は0である。
【0034】
図2の点線矩形のF/F23’〜25’のように、F/Fを各データ用配線に1つ追加して設計変更した場合、パラメータ格納手段13aには調整値Taとして「−1」が格納される。クロック停止タイミング調整回路201は、この調整値Taに基づいて、基準レジスタ12aに格納されている比較基準値から「1」を減算し、減算結果を基準レジスタ12aに格納する。この結果、クロックイネーブル生成回路200は、F/F23’〜25’を追加して、図4(c)のように、入力データSDDAT_Iが全て1クロック遅れる場合でも、クロックイネーブルSDCLK_Eを点線で示すように、図3(a)と同一のタイミングでLowに落とす。従って、クロックSDCLKの出力は規格通りに停止する。
【0035】
図5はクロックイネーブルSDCLK_EN波形とタイミング調整値Taの関係を示す図である。
【0036】
タイミング調整値Taの値に応じて、クロックイネーブルSDCLK_ENがLowに落ちるタイミングが変化する。このようにタイミング調整値Taは、上記した−1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0037】
このタイミング調整値Taは、クロック停止タイミング調整回路201に設けられた調整レジスタ14aに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値を信号CLKADJとして調整レジスタ14aに転送して格納する。クロック停止タイミング調整回路201は、この設定値を用いて比較値レジスタ12aに格納された基準比較値を変更する。又は、クロック停止タイミング調整回路201は、この設定値とパラメータ格納部13aに格納されている調整値を加算した値を、比較値レジスタ12aに格納された基準比較値に更に加算することで、基準比較値を変更する。この結果、クロックイネーブルSDCLK_ENは、変更された基準比較値に応じたタイミングでLowに落ちる。
【0038】
次に、レスポンス受信開始タイミングについて説明する。
【0039】
図6はレスポンス受信開始タイミングを示す図である。図6の(a)はホストコントローラから出力されるクロックSDCLK、(b)はコマンドライン上の情報SDCMDで、「E」まではホストコントローラが出力したコマンド、「S」からはSDカードがコマンドラインに出力したレスポンス、(c)はホストコントローラに入力された信号SDCMD_I、(d)はレスポンス受信開始信号RSPRCVである。
【0040】
コマンドラインでは、(b)のようにホストコントローラ100がエンドビット「E」をコマンドとして出力後、最短で2サイクル経過後にSDカードからレスポンスのスタートビット「S」が出力される。レスポンス受信回路204は、SDCMD_Iが「S」のタイミングで、レスポンス受信開始信号RSPRCVをHighとする。
【0041】
このレスポンス受信開始信号RSPRCVは、レスポンス受信回路204内部で生成される信号で、この信号がHighのタイミングでコマンドSDCMD_Iの読み取りが開始される。つまり、SDCMD_Iにおいて、SDカードからのレスポンスのスタートビット「S」に受信開始信号RSPRCVが示す受信開始位置が一致しなければならない。レスポンス受信開始信号RSPRCVは、図6(b)のようにコマンドラインにホストコントローラからエンドビット「E」が出力されてから、所定クロック(図では4クロック)目のサイクルにHighとなる。
【0042】
この場合も、ホストコントローラ100を他のシステムに組み込む場合等に、ホストコントローラ100の設計を変更し、配線の遅延量の変化を吸収するために、コマンド用信号線にF/Fを追加すると、信号タイミングが変化し、規格に合致した又は正常動作が実現されなくなる。図7は、図2のコマンド入出力回路206に点線矩形のようにF/F19’〜21’を追加した場合のレスポンス受信開始タイミングを示す。この場合、図7(c)のように、信号SDCMD_Iの内容が全て1クロック遅れる(他の信号に変化はない)。従って、SDカードからのレスポンスのスタートビット「S」に受信開始信号RSPRCVの受信開始位置が一致しておらず、例えばレスポンスを正常に読み込むことができない。
【0043】
本実施形態では、信号SDCMD_Iの位相ずれに関わらず、SDカードからのレスポンスのスタートビット「S」に受信開始位置が一致するように、受信開始信号RSPRCVを生成する。
【0044】
図2において、レスポンス受信回路204は、入力信号SDCMD_Iにおけるスタートビット「S」を検出した時からのクロック数をカウントするカウンタ11bと、比較基準値を格納する基準レジスタ12bを有する。レスポンス受信回路204は、カウンタ11bの計数値が基準レジスタ12bの基準値に一致すると、次のサイクルでレスポンス受信開始信号RSPRCVをHighに上げる。
【0045】
SDカードがコマンドライン上にスタートビット「S」を出力してから、エンドビット「E」を出力するまでのクロック数は規格により決められている。このクロック数をNresとする。基準レジスタ12bには、当初「Nres+2」が格納されている。
【0046】
レスポンス受信タイミング調整回路205は、パラメータ格納手段13bを有する。パラメータ格納手段13bは、基準レジスタ12bに格納されている比較基準値を調整するための調整値Tbが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。レスポンス受信タイミング調整回路205は、この調整値Tbを用いて基準レジスタ12bに格納されている比較基準値を調整する。この調整値Tbは、図2の回路に設計変更がない場合は0である。
【0047】
図2の点線矩形のF/F19’〜21’のように、F/Fを各コマンド用配線に1つ追加して設計変更した場合、パラメータ格納手段13bには調整値Tbとして「+1」が格納される。レスポンス受信タイミング調整回路205は、この調整値Tbに基づいて、基準レジスタ12bに格納されている比較基準値に「1」を加算し、加算結果を基準レジスタ12bに格納する。この結果、レスポンス受信回路204は、F/F19’〜21’を追加して、図7(c)のように、入力信号SDCMD_Iが全て1クロック遅れる場合でも、SDカードからのレスポンスのスタートビット「S」に受信開始位置が一致するように(規格に合致するように)、点線で示す受信開始信号RSPRCV_STAを生成する。従って、入力信号SDCMD_Iは正しく読み込まれる。
【0048】
図8はレスポンス受信開始位置とタイミング調整値の関係を示す図である。
【0049】
タイミング調整値Tbの値に応じて、レスポンス受信開始信号RSPRCV_STAのタイミングが変化する。このようにタイミング調整値Tbは、上記した+1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0050】
このタイミング調整値Tbは、前述の調整値Taのように、レスポンス受信タイミング調整回路205に設けられた調整レジスタ14bに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値を信号RSPADJとして調整レジスタ14bに転送して格納する。レスポンス受信タイミング調整回路206は、この設定値を用いて比較値レジスタ12bに格納された基準比較値を変更する。
【0051】
次にリードウエイトタイミングについて説明する。
【0052】
図9はデータラインとリードウエイトタイミングの関係を示す。
【0053】
図9(a)はホストコントローラから出力されたクロックSDCLK、(b)はSDIOカードから出力されたデータラインのビット2のデータSDDTA[2]、(c)はホストコントローラに入力されたデータビット2のデータSDDTA[2]_I、(d)はビット2の出力データSDDAT_O[2]で、データ送信回路及びリードウエイト制御回路207から出力されるリードウエイト信号である。
【0054】
SDIOカードでは、バッファ切替時にこのリードウエイト信号によりSDIOカードからのデータ出力を待たせる場合は、図9(b)のSDIOカードがデータラインにエンドビット「E」(例えばデータビット2で伝送される信号)を出力したクロックから2クロック経過後のサイクルで、ホスト側はデータラインのビット2すなわちSDDAT[2]をLowに落とさなければならない。ここで、データ出力SDDAT_O[2](リードウエイト信号)がデータラインに出力されるまでに1サイクルかかる。従って、図9(c)のようにSDカードからの入力データSDDAT_I[2]のエンドビット「E」の次のサイクルで、図9(d)のようにデータ出力SDDAT_O[2](リードウエイト出力)をLowに落とす。
【0055】
この場合も、ホストコントローラ100の設計変更に伴って、データ用信号線にF/Fを追加すると、信号タイミングが変化し、規格に合致した動作が実現されなくなる。前述したように、図2のSDデータ入出力回路209に点線矩形のようにF/F23’〜25’を追加すると、入力データSDDAT_I[2]が全て1クロック遅れる。従って、SDDAT_Iのエンドビット「E」に応じてLowに変化する出力データSDDAT_O[2]も1クロック遅れてLowに落ちる。この結果、「SDIOカードがエンドビットを出力したサイクルから2クロック経過後のサイクルで、ホスト側はデータラインのビット2すなわちSDDAT[2](リードウエイト出力)をLowに落とさなければならない」というリードウエイトに関する規格に合致しなくなる。
【0056】
そこで本実施形態では、入力データSDDAT_I[2]の遅れに関わらず、常に規格に合致したリードウエイトタイミングを提供する。
【0057】
図2において、リードウエイト制御回路207は、入力データSDDAT_Iにおいて、データ転送開始を示すスタートビット「S」(図示されず)を検出した時からのクロック数をカウントするカウンタ11cと、比較基準値を格納する基準レジスタ12cを有する。リードウエイト制御回路210は、カウンタ11cの計数値が基準レジスタ12cの基準値に一致すると、次のクロックで出力データSDDAT_O[2]をLowに落とす。
【0058】
前述したように、SDカードがデータライン上にスタートビット「S」を出力してから、エンドビット「E」が出力されるまでのクロック数は規格により決められている。このクロック数をNdatとする。基準レジスタ12aには、当初このクロック数Ndatが格納されている。
【0059】
リードウエイトタイミング調整回路208は、パラメータ格納手段13cを有する。パラメータ格納手段13cは、基準レジスタ12cに格納されている比較基準値を調整するための調整値Tcが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。リードウエイトタイミング調整回路208は、この調整値Tcを用いて基準レジスタ12cに格納されている比較基準値を調整する。この調整値Tcは、図2の回路に設計変更がない場合は0である。
【0060】
図2の点線矩形のF/F23’〜25’のように、F/Fを各データ用配線に1つ追加して設計変更した場合、パラメータ格納手段13cには調整値Tcとして「−1」が格納される。リードウエイトタイミング調整回路208は、この調整値Tcに基づいて、基準レジスタ12cに格納されている比較基準値から「1」を減算し、減算結果を基準レジスタ12cに格納する。この結果、リードウエイト制御回路207は、F/F23’〜25’を追加して、入力データSDDAT_I「2」が全て1クロック遅れる場合でも、データラインの信号SDDAT「2」が、規格に合致したタイミングでLowに落ちるよう、出力データSDDAT_O[2]をLowに落とす。
【0061】
図10はリードウエイト開始位置とタイミング調整値の関係を示す図である。
【0062】
タイミング調整値Tcの値に応じて、出力データSDDAT_OがLowとなる位置(リードウエイト開始位置)が変化する。このようにタイミング調整値Tcは、上記した−1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0063】
このタイミング調整値Tcは、前述の調整値Taのように、リードウエイトタイミング調整回路208に設けられた調整レジスタ14cに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値Tcを信号RWAADJとして調整レジスタ14cに転送して格納する。リードウエイトタイミング調整回路208は、この設定値Tcを用いて比較値レジスタ12cに格納された基準比較値を変更する。
【0064】
次にデータ受信開始タイミングについて説明する。
【0065】
図11はデータラインとデータ受信開始タイミングの関係を示す図である。
【0066】
図11(a)はホストコントローラから出力されたクロックSDCLK、(b)はホストコントローラ又はSDカードからデータラインに出力されたデータSDDAT、(c)はホストコントローラに入力されたデータSDDAT_I、(d)はデータ受信開始信号DATRCV_STAで、データ受信回路210内部で生成する信号である。
【0067】
データラインでは、ホストコントローラからSDカードへのデータ出力後エンドビット「E」が出力され、エンドビット「E」から最短で2サイクル経過後に、受信データの開始を示すスタートビット「S」がSDカードから来るので、このタイミングに合わせて、データ受信開始信号DATRCV_STAをHighに上げる。つまり、データ受信回路210は、入力データSDDAT_Iのスタートビット「S」の位置で、データ受信開始信号DATRCV_STAをHighに上げなければならない。
【0068】
この場合も、ホストコントローラ100を他のシステムに組み込む場合等に、ホストコントローラ100の設計を変更し、配線の遅延量の変化を吸収するために、データ用信号線にF/Fを追加すると、信号タイミングが変化し、規格に合致した又は正常動作が実現されなくなる。
【0069】
例えば、図2のSDデータ入出力回路209に点線矩形のようにF/F23’〜25’を追加すると、図11(c)の入力データSDDAT_Iの内容が全て1クロック遅れ、右にずれる。信号DATRCV_STAの位置は変化しない。なぜなら、信号DATRCV_STAはホストコントローラ側が出力した信号SDDATのエンドビット「E」に基づくタイミングで生成されるからである。その結果、入力データSDDAT_Iのスタートビット「S」の位置と、データ受信開始信号DATRCV_STAがHighの位置がずれ、規格に合致した又は正常動作が実現されなくなる。
【0070】
図2において、データ受信回路210は、入力データSDDAT_Iにおいて、データ転送開始を示すスタートビット「S」(図示されず)を検出した時からのクロック数をカウントするカウンタ11dと、比較基準値を格納する基準レジスタ12dを有する。データ受信回路210は、カウンタ11dの計数値が基準レジスタ12dの基準値に一致すると、次のサイクルで、データ受信開始信号DATRCV_STAをHighに上げる。
【0071】
SDカードがデータライン上にスタートビット「S」を出力してから、エンドビット「E」を出力するまでのクロック数は規格により決められている。このクロック数をNdatとする。基準レジスタ12dには、当初「Ndat+2」が格納されている。この場合、データ受信開始信号DATRCV_STAは、図11(d)に示すタイミングでHighに上がる。
【0072】
データ受信タイミング調整回路210は、パラメータ格納手段13dを有する。パラメータ格納手段13dは、基準レジスタ12dに格納されている比較基準値を調整するための調整値Tdが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。データ受信タイミング調整回路211は、この調整値Tdを用いて基準レジスタ12dに格納されている比較基準値を調整する。この調整値Tdは、図2の回路に設計変更がない場合は0である。
【0073】
図2の点線矩形のF/F23’〜25’のように、F/Fを各データ用配線に1つ追加して設計変更した場合、パラメータ格納手段13aには調整値Tdとして「+1」が格納される。データ受信タイミング調整回路211は、この調整値Tdに基づいて、基準レジスタ12dに格納されている比較基準値に「1」を加算し、加算結果を基準レジスタ12dに格納する。この結果、データ受信回路210は、F/F23’〜25’を追加して、入力データSDDAT_Iが全て1クロック遅れる場合でも、入力データSDDAT_Iのスタートビット「S」の位置で、データ受信開始信号DATRCV_STAをHighに上げる。従って、入力データSDDAT_Iは正しい位置で読み込みが開始される。
【0074】
図12はデータ受信開始位置とタイミング調整値の関係を示す図である。
【0075】
タイミング調整値Tdの値に応じて、データ受信開始信号DATRCV_STAがHighに変るタイミングが変化する。つまり、データ受信開始信号DATRCV_STAは、入力データSDDAT_Iの位置変動に応じてHighの位置が変更される。このようにタイミング調整値Tdは、上記した+1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0076】
このタイミング調整値Tdは、前述の調整値Taのように、データ受信タイミング調整回路211に設けられた調整レジスタ14dに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値を信号DATADJとして調整レジスタ14dに転送して格納する。データ受信タイミング調整回路211は、前述のクロック停止タイミング調整回路201のように、この設定値を用いて比較値レジスタ12dに格納された基準比較値を変更する。
【0077】
図13はIO部102(インターフェース212)のF/Fの段数とパラメータの値を示すテーブルである。
【0078】
図2のIO部102において、IO部側回路の都合により、追加又は削除を行ったF/Fの段数に応じて、パラメータの値を図13のように設定する。図13は、タイミングの調整を行う項目と、その項目に関係するパスにおいて追加又は削除したF/Fの段数とパラメータの設定値の関係を示す。それぞれのパラメータは、図2のタイミング調整回路201、205、208、211に反映され、タイミングの調整が行われて、正常に動作するようになる。
LSIの製作時、IO部のF/Fの段数をパラメータ値として設定しておけばよい。パラメータ値は、例えばRTL記述におけるパラメータファイルに記述された値であり、LSI製作時に、タイミング調整回路に組み込まれる。
【0079】
又、データ処理部とIO部が別々のチップで構成されたLSIにおいて、IO部のみ構成が異なる別のチップに置換えたような場合は、パラメータ値に加えて、調整レジスタ14を具備したことにより、ホスト装置からタイミングの調整値を設定できる。この場合は、変更前の構成と比べて、F/Fの段数がどのように変ったかによって、図13に示す増減値をレジスタに設定すればよい。
【0080】
[効果]
データ処理部とIO部とのインターフェースのタイミングを調整するパラメータ格納手段を設けたことにより、SOCにホストコントローラを組み込み、レイアウト等の都合上、F/Fの段数を変えた場合などにおいて、パラメータの調整値により、データあるいは信号の入出力タイミングを合わせることができる。従って、IO部のF/F段数を変更できるので、IPとしての汎用性が向上する。
【0081】
又、タイミングの調整レジスタを持つことにより、IPとして組み込むときだけでなく、ホストコントローラとIO部の2チップ構成でLSI化し、その後別の用途のためにIO部の構成を変えたような場合に、ホスト装置が調整レジスタにタイミング調整値を設定できるので、構成の異なる様々なIO部を適用できるという効果がある。
【0082】
以上の説明はこの発明の実施の形態であって、この発明の装置及び方法を限定するものではなく、様々な変形例を容易に実施することができるものである。例えば、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。
【符号の説明】
【0083】
100…ホストコントローラ、101…データ処理部、102…IO部、202…クロック出力回路、206…コマンド入出力回路、209…SDデータ入出力回路、19〜25…フリップフロップ。
【技術分野】
【0001】
本発明の実施形態は、SDカードのような外部装置を接続し、外部装置とデータの入出力処理を行うデータ処理装置に関する。
【背景技術】
【0002】
デジタルカメラ、携帯電話などの携帯機器、及びPC、テレビなどの家電機器に使用され、小型で携帯可能な不揮発性メモリとしてSDカードが広く普及している。SDカードとホスト装置(CPU)間のデータ及びコマンド転送は、ホストコントローラにより制御される。ホストコントローラは一般にデータ処理部とIO部を含み、SDカードはカードスロットを介してIO部に接続される。又ホストコントローラはLSIとして構成される場合が多い。
【0003】
SDカードの場合、例えばデータブロック転送時のクロック停止タイミング及びSDカードからのデータ入力タイミング等が、規格により詳細に定められている。例えばホストコントローラは、SDカードから転送されたデータを規格に合致したタイミングでサンプリングしないと、転送されたデータを正しく認識できない。又ホストコントローラは、この規格に従ってSDカードを制御するように設計されているため、IO部の構成はホストコントローラ側の設計仕様で決められていた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−226374号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ホスト装置、ホストコントローラ及びIO部を1つのLSI内に組み込み、SOC(System on chip)を構成する場合などは、チップサイズの大型化及びレイアウトの都合上、データ処理部とIO部を結ぶ複数の配線の長さ及び配線容量に相違が生じ、各信号の伝送タイミングがずれることがある。このような場合は、例えばF/F(フリップフロップ)を各信号配線の途中に挿入して、複数信号の同期をとることが一般に知られている。
【0006】
しかし、ホストコントローラLSIとして構成されたデータ処理部とIO部の設計を、SOCの製作に流用する場合、IO部の構成が上記のように決まっているので、F/Fを各信号配線の途中に単に挿入することができない。なぜなら、F/Fを例えば1つ挿入すると信号タイミングが1クロック遅れ、上記データ入力タイミング等がSDカードの規格から外れてしまうからである。つまり、配線長の違いにより生じる信号伝送タイミングの相違を無くすため、既存のIO部にF/Fを単に追加して設計変更をすることができないという問題があった。
【0007】
又、ホストコントローラをデータ処理部とIO部を分けた2チップ構成とした場合は、決められたIOしか使うことができないという問題があった。
【課題を解決するための手段】
【0008】
本発明の実施形態では、信号或いはデータ又はコマンドの入出力タイミングを調整する手段を具備したことにより、信号同期のためのF/Fの増加・削減が容易となる。
【0009】
すなわち本発明の実施形態に係るデータ処理装置は、IO部と、該IO部とホスト装置とのデータ転送を行うデータ処理部とから構成されるデータ処理装置であって、前記データ処理部は、前記IO部から入力される特定データに応じて、前記IO部のデータ入出力タイミングをパラメータ値に基づいて調整するタイミング調整部を具備し、IO部の構成に対応したタイミングの調整を行う。
【図面の簡単な説明】
【0010】
【図1】本発明によるデータ処理装置を適用するホストコントローラ100の基本構成を示すブロック図である。
【図2】ホストコントローラ100におけるデータ処理部101及びIO部102の構成及び接続関係を示す図である。
【図3】クロック停止タイミングを示す図である。
【図4】図2の回路にF/F23’〜25’を追加した場合のクロック停止タイミングを示す図である。
【図5】クロックイネーブルSDCLK_EN波形とタイミング調整値の関係を示す図である。
【図6】レスポンス受信開始タイミングを示す図である。
【図7】図2の回路にF/F19’〜21’を追加した場合のレスポンス受信開始タイミングを示す図である。
【図8】レスポンス受信開始位置とタイミング調整値の関係を示す図である。
【図9】データラインのデータとリードウエイトタイミングの関係を示す図である。
【図10】リードウエイト開始位置とタイミング調整値の関係を示す図である。
【図11】データラインのデータとデータ受信開始タイミングの関係を示す図である。
【図12】データ受信開始位置とタイミング調整値の関係を示す図である。
【図13】IO部102のF/Fの段数とパラメータの値を示すテーブルである。
【発明を実施するための形態】
【0011】
以下、本発明に係るデータ処理装置の実施の形態を図面を参照して説明する。
【0012】
図1は本発明によるデータ処理装置を適用するホストコントローラ100の基本構成を示すブロック図である。
【0013】
ホストコントローラ100は例えばLSIとして構成され、本実施形態に係るデータ処理部101及びIO部102を具備する。データ処理部101はホスト装置(例えばCPU)及びIO部に接続され、ホスト装置とIO部とのデータ転送を制御する。IO部102は例えばSDカード等の外部電子機器に接続される。ホストコントローラ100はSDカードを制御するホスト側装置として機能するので、SDホストコントローラとも呼ばれる。
【0014】
図2はホストコントローラ100におけるデータ処理部101及びIO部102の構成及び接続関係を示す。
【0015】
クロックイネーブル生成回路200は、マルチブロックリード時にデータブロック間でクロックの停止制御を行う。マルチブロックリードとは、例えば512バイト単位でSDカードからデータを読込む動作を示す。この512バイトは、ホスト側の転送用バッファの単位容量に相当する。SDカードへのクロック出力停止期間中にバッファ切り替えが行われる。
【0016】
クロック停止タイミング調整回路201は、パラメータ格納部13a又は調整レジスタ14aで設定された調整値(後述される)に基づいて、マルチブロックリード時のクロック停止タイミングを調整する。クロック出力回路202は、インバータ15、F/F(フリップフロップ)16、ANDゲート17、増幅器18、SDCLK用端子27を含み、クロックイネーブル信号SDCLK_ENに応じて、クロックの送出/停止を行なう。
【0017】
コマンド送信回路203は、コマンドライン(SDCMD用端子28に接続される外部配線)へのコマンド出力信号SDCMD_O及びイネーブル信号SDCMD_ENをIO部102に提供する。コマンド入出力回路206は、F/F19〜21、入出力回路22、SDCMD用端子28を含み、コマンド出力信号SDCMD_O及びイネーブル信号SDCMD_ENに応じて、コマンドライン上信号の入出力処理を行う。
【0018】
レスポンス受信回路204は、SDカードからコマンドラインを介して入力されるレスポンスをIO部102から受け取る。このように、ホストコントローラからの「コマンド」に対して、同一経路を使用してSDカードから返信されるデータを「レスポンス」という。レスポンス受信タイミング調整回路205は、パラメータ格納部13b又は調整レジスタ14bで設定された調整値に基づいて、レスポンスの受信開始タイミングを調整する。
【0019】
データ送信回路及びリードウエイト制御回路207は、ライトデータ転送時に送信出力データSDDAT_O及びイネーブル信号SDDAT_EN_XをIO部102に出力する。又回路207はリードデータ転送時に、リードウエイト制御(後述される)を行う場合は、データライン(SDDAT用端子29に接続される外部配線)のビット2のラインにリードウエイト信号を出力する。尚、データ転送は4ビット並列で行われるので、回路207は4回路設けられる。リードウエイトタイミング調整回路208は、パラメータ格納部13c又は調整レジスタ14cで設定された調整値に基づいて、リードウエイト信号の出力開始タイミングを調整する。
【0020】
データ受信回路210は、データラインより入力されるSDデータをIO部102から受け取る。データ受信回路210も並列データビット数に合わせて4回路設けられる。データ受信タイミング調整回路211は、パラメータ格納部13d又は調整レジスタ14dで設定された調整値に基づいて、SDデータの受信開始タイミングを調整する。
【0021】
SDデータ入出力回路209は、F/F23〜25、入出力回路26及び端子29を含み、出力データSDDAT_O及びイネーブル信号SDDAT_EN_Xに応じて、データライン上データの入出力処理を行なう。この入出力回路209も並列データビット数に合わせて4回路設けられる。
【0022】
ここで、データ転送経路(インターフェース)212内のF/F19〜21、23〜25は、信号同期を得るために設けられている。何らかの理由でLSI100内のインターフェースの設計変更を行う場合に、データ処理部101とIO部102間を結ぶ配線の長さが著しく相違しているか或いは配線容量が異なると、各信号の伝送タイミングがずれ、データが正しく転送されないことがある。そのような場合、F/Fを更に挿入するか、あるいは削除する必要がある。パラメータ格納部13及び調整レジスタ14は、そのような場合でも、クロック信号、データ及びコマンドがSDカードの規格を満足するタイミングで転送されるよう、信号転送タイミングを調整するための調整値が設定される。上記の回路200、204、207、210は、調整値に基づいて、信号転送タイミングを調節する(詳細は後述される)。
【0023】
次に、本発明に係るデータ処理装置としてのホストコントローラ100の動作を説明する。
【0024】
SDカードに送信されるSDCLKは、クロック出力回路202により、クロックイネーブルSDCLK_ENをディセーブ(Low)にしたサイクルの次のサイクルで停止される。コマンドSDCMD_EX、SDCMD_O、SDCMD_Iと、SDDAT_EX、SDDAT_O、SDDAT_Iについては前述したように、IO部にそれぞれ1段ずつのF/F19〜21、23〜25が配置され、これらF/Fによって、クロックイネーブル、レスポンス受信、データ受信、リードウエイトの出力のタイミングを合わせ、同期を得ている。
【0025】
図3はクロック停止タイミングを示すタイムチャートである。
【0026】
図3の(a)はホストコントローラから出力されるクロックSDCLK、(b)はSDカードからデータラインに出力されたデータSDDAT、(c)はホストコントローラに入力されたデータSDDAT_I、(d)はクロックイネーブル信号SDCLK_ENである。尚、(a)の出力信号SDCLKと(b)〜(d)の信号の変化時点がずれているのは、カード側でのクロックに対する入力データのHold time を満足するように、ホストコントローラが出力データに遅延を付けていることによる。
【0027】
SDメモリカードの場合は規格により、カードがデータラインにエンドビット「E」(例えばデータビット1で伝送される信号)を出力したクロックから2クロック目のサイクルで、ホスト側はクロックを停止しなければならない。
【0028】
データ処理部101でのデータ受け取りタイミングは、データライン上の信号から1サイクル遅れるので、エンドビット「E」を受けたサイクルの次のサイクルで、クロックイネーブルをディセーブル(Low)にするようにタイミングを作成している。つまり図3(b)のように、SDカードがエンドビット「E」を出力したクロックから2クロック目のサイクルで、図3(d)のようにクロックイネーブルSDCLK_EがLowになり、図3(a)のようにクロックSDCLKを停止する。
【0029】
ここで、ホストコントローラ100をSOCに組み込む等、なんらかの理由でホストコントローラ100の設計を変更する場合を想定する。設計変更した結果、配線が延長されて信号遅延が増加すると、各信号の伝送タイミングがずれることがある。このような場合は、F/Fを各信号配線の途中に挿入して複数信号の同期をとる方法がある。設計変更してF/Fを1つ追加すると、信号タイミングは規格に合致しなくなる。図4は、図2のSDデータ入出力回路209に点線矩形のようにF/F23’〜25’を追加した場合のクロック停止タイミングを示す。このように、入力データSDDAT_Iが全て1クロック遅れるので、エンドビット「E」に応じてLowに変化するクロックイネーブルSDCLK_Eも1クロック遅れる。従って、クロックSDCLKも図3に比べて1クロック余分に出力される。この結果、「SDカードがエンドビットを出力したクロックから2クロック目のサイクルで、ホスト側はクロックを停止しなければならない」というクロック停止タイミングに関する規格に合致していない。
【0030】
そこで本実施形態では、入力データSDDAT_Iの遅れに関わらず、常に規格に合致したクロック停止タイミングを提供する。
【0031】
図2の説明に戻り、クロックイネーブル生成回路200は、入力データSDDAT_Iにおいて、データ転送開始を示すスタートビット「S」(図示されず)を検出した時からのクロック数をカウントするカウンタ11aと、比較基準値を格納する基準レジスタ12aを有する。又クロックイネーブル生成回路200は、カウンタ11aの計数値が基準レジスタ12aの基準値に一致すると、次のクロックでイネーブルSDCLK_ENをLowに落とす。
【0032】
SDカードがデータライン上にスタートビット「S」を出力してから、エンドビット「E」を出力するまでのクロック数は規格により決められている。このクロック数をNdatとする。基準レジスタ12aには、当初このクロック数Ndatが格納されている。この場合、イネーブルSDCLK_ENは、図3(d)に示すタイミングでLowに落ちる。
【0033】
クロック停止タイミング調整回路201は、パラメータ格納手段13aを有する。パラメータ格納手段13aは、基準レジスタ12aに格納されている比較基準値を調整するための調整値Taが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。クロック停止タイミング調整回路201は、この調整値Taを用いて基準レジスタ12aに格納されている比較基準値を調整する。この調整値Taは、図2の回路に設計変更がない場合は0である。
【0034】
図2の点線矩形のF/F23’〜25’のように、F/Fを各データ用配線に1つ追加して設計変更した場合、パラメータ格納手段13aには調整値Taとして「−1」が格納される。クロック停止タイミング調整回路201は、この調整値Taに基づいて、基準レジスタ12aに格納されている比較基準値から「1」を減算し、減算結果を基準レジスタ12aに格納する。この結果、クロックイネーブル生成回路200は、F/F23’〜25’を追加して、図4(c)のように、入力データSDDAT_Iが全て1クロック遅れる場合でも、クロックイネーブルSDCLK_Eを点線で示すように、図3(a)と同一のタイミングでLowに落とす。従って、クロックSDCLKの出力は規格通りに停止する。
【0035】
図5はクロックイネーブルSDCLK_EN波形とタイミング調整値Taの関係を示す図である。
【0036】
タイミング調整値Taの値に応じて、クロックイネーブルSDCLK_ENがLowに落ちるタイミングが変化する。このようにタイミング調整値Taは、上記した−1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0037】
このタイミング調整値Taは、クロック停止タイミング調整回路201に設けられた調整レジスタ14aに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値を信号CLKADJとして調整レジスタ14aに転送して格納する。クロック停止タイミング調整回路201は、この設定値を用いて比較値レジスタ12aに格納された基準比較値を変更する。又は、クロック停止タイミング調整回路201は、この設定値とパラメータ格納部13aに格納されている調整値を加算した値を、比較値レジスタ12aに格納された基準比較値に更に加算することで、基準比較値を変更する。この結果、クロックイネーブルSDCLK_ENは、変更された基準比較値に応じたタイミングでLowに落ちる。
【0038】
次に、レスポンス受信開始タイミングについて説明する。
【0039】
図6はレスポンス受信開始タイミングを示す図である。図6の(a)はホストコントローラから出力されるクロックSDCLK、(b)はコマンドライン上の情報SDCMDで、「E」まではホストコントローラが出力したコマンド、「S」からはSDカードがコマンドラインに出力したレスポンス、(c)はホストコントローラに入力された信号SDCMD_I、(d)はレスポンス受信開始信号RSPRCVである。
【0040】
コマンドラインでは、(b)のようにホストコントローラ100がエンドビット「E」をコマンドとして出力後、最短で2サイクル経過後にSDカードからレスポンスのスタートビット「S」が出力される。レスポンス受信回路204は、SDCMD_Iが「S」のタイミングで、レスポンス受信開始信号RSPRCVをHighとする。
【0041】
このレスポンス受信開始信号RSPRCVは、レスポンス受信回路204内部で生成される信号で、この信号がHighのタイミングでコマンドSDCMD_Iの読み取りが開始される。つまり、SDCMD_Iにおいて、SDカードからのレスポンスのスタートビット「S」に受信開始信号RSPRCVが示す受信開始位置が一致しなければならない。レスポンス受信開始信号RSPRCVは、図6(b)のようにコマンドラインにホストコントローラからエンドビット「E」が出力されてから、所定クロック(図では4クロック)目のサイクルにHighとなる。
【0042】
この場合も、ホストコントローラ100を他のシステムに組み込む場合等に、ホストコントローラ100の設計を変更し、配線の遅延量の変化を吸収するために、コマンド用信号線にF/Fを追加すると、信号タイミングが変化し、規格に合致した又は正常動作が実現されなくなる。図7は、図2のコマンド入出力回路206に点線矩形のようにF/F19’〜21’を追加した場合のレスポンス受信開始タイミングを示す。この場合、図7(c)のように、信号SDCMD_Iの内容が全て1クロック遅れる(他の信号に変化はない)。従って、SDカードからのレスポンスのスタートビット「S」に受信開始信号RSPRCVの受信開始位置が一致しておらず、例えばレスポンスを正常に読み込むことができない。
【0043】
本実施形態では、信号SDCMD_Iの位相ずれに関わらず、SDカードからのレスポンスのスタートビット「S」に受信開始位置が一致するように、受信開始信号RSPRCVを生成する。
【0044】
図2において、レスポンス受信回路204は、入力信号SDCMD_Iにおけるスタートビット「S」を検出した時からのクロック数をカウントするカウンタ11bと、比較基準値を格納する基準レジスタ12bを有する。レスポンス受信回路204は、カウンタ11bの計数値が基準レジスタ12bの基準値に一致すると、次のサイクルでレスポンス受信開始信号RSPRCVをHighに上げる。
【0045】
SDカードがコマンドライン上にスタートビット「S」を出力してから、エンドビット「E」を出力するまでのクロック数は規格により決められている。このクロック数をNresとする。基準レジスタ12bには、当初「Nres+2」が格納されている。
【0046】
レスポンス受信タイミング調整回路205は、パラメータ格納手段13bを有する。パラメータ格納手段13bは、基準レジスタ12bに格納されている比較基準値を調整するための調整値Tbが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。レスポンス受信タイミング調整回路205は、この調整値Tbを用いて基準レジスタ12bに格納されている比較基準値を調整する。この調整値Tbは、図2の回路に設計変更がない場合は0である。
【0047】
図2の点線矩形のF/F19’〜21’のように、F/Fを各コマンド用配線に1つ追加して設計変更した場合、パラメータ格納手段13bには調整値Tbとして「+1」が格納される。レスポンス受信タイミング調整回路205は、この調整値Tbに基づいて、基準レジスタ12bに格納されている比較基準値に「1」を加算し、加算結果を基準レジスタ12bに格納する。この結果、レスポンス受信回路204は、F/F19’〜21’を追加して、図7(c)のように、入力信号SDCMD_Iが全て1クロック遅れる場合でも、SDカードからのレスポンスのスタートビット「S」に受信開始位置が一致するように(規格に合致するように)、点線で示す受信開始信号RSPRCV_STAを生成する。従って、入力信号SDCMD_Iは正しく読み込まれる。
【0048】
図8はレスポンス受信開始位置とタイミング調整値の関係を示す図である。
【0049】
タイミング調整値Tbの値に応じて、レスポンス受信開始信号RSPRCV_STAのタイミングが変化する。このようにタイミング調整値Tbは、上記した+1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0050】
このタイミング調整値Tbは、前述の調整値Taのように、レスポンス受信タイミング調整回路205に設けられた調整レジスタ14bに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値を信号RSPADJとして調整レジスタ14bに転送して格納する。レスポンス受信タイミング調整回路206は、この設定値を用いて比較値レジスタ12bに格納された基準比較値を変更する。
【0051】
次にリードウエイトタイミングについて説明する。
【0052】
図9はデータラインとリードウエイトタイミングの関係を示す。
【0053】
図9(a)はホストコントローラから出力されたクロックSDCLK、(b)はSDIOカードから出力されたデータラインのビット2のデータSDDTA[2]、(c)はホストコントローラに入力されたデータビット2のデータSDDTA[2]_I、(d)はビット2の出力データSDDAT_O[2]で、データ送信回路及びリードウエイト制御回路207から出力されるリードウエイト信号である。
【0054】
SDIOカードでは、バッファ切替時にこのリードウエイト信号によりSDIOカードからのデータ出力を待たせる場合は、図9(b)のSDIOカードがデータラインにエンドビット「E」(例えばデータビット2で伝送される信号)を出力したクロックから2クロック経過後のサイクルで、ホスト側はデータラインのビット2すなわちSDDAT[2]をLowに落とさなければならない。ここで、データ出力SDDAT_O[2](リードウエイト信号)がデータラインに出力されるまでに1サイクルかかる。従って、図9(c)のようにSDカードからの入力データSDDAT_I[2]のエンドビット「E」の次のサイクルで、図9(d)のようにデータ出力SDDAT_O[2](リードウエイト出力)をLowに落とす。
【0055】
この場合も、ホストコントローラ100の設計変更に伴って、データ用信号線にF/Fを追加すると、信号タイミングが変化し、規格に合致した動作が実現されなくなる。前述したように、図2のSDデータ入出力回路209に点線矩形のようにF/F23’〜25’を追加すると、入力データSDDAT_I[2]が全て1クロック遅れる。従って、SDDAT_Iのエンドビット「E」に応じてLowに変化する出力データSDDAT_O[2]も1クロック遅れてLowに落ちる。この結果、「SDIOカードがエンドビットを出力したサイクルから2クロック経過後のサイクルで、ホスト側はデータラインのビット2すなわちSDDAT[2](リードウエイト出力)をLowに落とさなければならない」というリードウエイトに関する規格に合致しなくなる。
【0056】
そこで本実施形態では、入力データSDDAT_I[2]の遅れに関わらず、常に規格に合致したリードウエイトタイミングを提供する。
【0057】
図2において、リードウエイト制御回路207は、入力データSDDAT_Iにおいて、データ転送開始を示すスタートビット「S」(図示されず)を検出した時からのクロック数をカウントするカウンタ11cと、比較基準値を格納する基準レジスタ12cを有する。リードウエイト制御回路210は、カウンタ11cの計数値が基準レジスタ12cの基準値に一致すると、次のクロックで出力データSDDAT_O[2]をLowに落とす。
【0058】
前述したように、SDカードがデータライン上にスタートビット「S」を出力してから、エンドビット「E」が出力されるまでのクロック数は規格により決められている。このクロック数をNdatとする。基準レジスタ12aには、当初このクロック数Ndatが格納されている。
【0059】
リードウエイトタイミング調整回路208は、パラメータ格納手段13cを有する。パラメータ格納手段13cは、基準レジスタ12cに格納されている比較基準値を調整するための調整値Tcが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。リードウエイトタイミング調整回路208は、この調整値Tcを用いて基準レジスタ12cに格納されている比較基準値を調整する。この調整値Tcは、図2の回路に設計変更がない場合は0である。
【0060】
図2の点線矩形のF/F23’〜25’のように、F/Fを各データ用配線に1つ追加して設計変更した場合、パラメータ格納手段13cには調整値Tcとして「−1」が格納される。リードウエイトタイミング調整回路208は、この調整値Tcに基づいて、基準レジスタ12cに格納されている比較基準値から「1」を減算し、減算結果を基準レジスタ12cに格納する。この結果、リードウエイト制御回路207は、F/F23’〜25’を追加して、入力データSDDAT_I「2」が全て1クロック遅れる場合でも、データラインの信号SDDAT「2」が、規格に合致したタイミングでLowに落ちるよう、出力データSDDAT_O[2]をLowに落とす。
【0061】
図10はリードウエイト開始位置とタイミング調整値の関係を示す図である。
【0062】
タイミング調整値Tcの値に応じて、出力データSDDAT_OがLowとなる位置(リードウエイト開始位置)が変化する。このようにタイミング調整値Tcは、上記した−1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0063】
このタイミング調整値Tcは、前述の調整値Taのように、リードウエイトタイミング調整回路208に設けられた調整レジスタ14cに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値Tcを信号RWAADJとして調整レジスタ14cに転送して格納する。リードウエイトタイミング調整回路208は、この設定値Tcを用いて比較値レジスタ12cに格納された基準比較値を変更する。
【0064】
次にデータ受信開始タイミングについて説明する。
【0065】
図11はデータラインとデータ受信開始タイミングの関係を示す図である。
【0066】
図11(a)はホストコントローラから出力されたクロックSDCLK、(b)はホストコントローラ又はSDカードからデータラインに出力されたデータSDDAT、(c)はホストコントローラに入力されたデータSDDAT_I、(d)はデータ受信開始信号DATRCV_STAで、データ受信回路210内部で生成する信号である。
【0067】
データラインでは、ホストコントローラからSDカードへのデータ出力後エンドビット「E」が出力され、エンドビット「E」から最短で2サイクル経過後に、受信データの開始を示すスタートビット「S」がSDカードから来るので、このタイミングに合わせて、データ受信開始信号DATRCV_STAをHighに上げる。つまり、データ受信回路210は、入力データSDDAT_Iのスタートビット「S」の位置で、データ受信開始信号DATRCV_STAをHighに上げなければならない。
【0068】
この場合も、ホストコントローラ100を他のシステムに組み込む場合等に、ホストコントローラ100の設計を変更し、配線の遅延量の変化を吸収するために、データ用信号線にF/Fを追加すると、信号タイミングが変化し、規格に合致した又は正常動作が実現されなくなる。
【0069】
例えば、図2のSDデータ入出力回路209に点線矩形のようにF/F23’〜25’を追加すると、図11(c)の入力データSDDAT_Iの内容が全て1クロック遅れ、右にずれる。信号DATRCV_STAの位置は変化しない。なぜなら、信号DATRCV_STAはホストコントローラ側が出力した信号SDDATのエンドビット「E」に基づくタイミングで生成されるからである。その結果、入力データSDDAT_Iのスタートビット「S」の位置と、データ受信開始信号DATRCV_STAがHighの位置がずれ、規格に合致した又は正常動作が実現されなくなる。
【0070】
図2において、データ受信回路210は、入力データSDDAT_Iにおいて、データ転送開始を示すスタートビット「S」(図示されず)を検出した時からのクロック数をカウントするカウンタ11dと、比較基準値を格納する基準レジスタ12dを有する。データ受信回路210は、カウンタ11dの計数値が基準レジスタ12dの基準値に一致すると、次のサイクルで、データ受信開始信号DATRCV_STAをHighに上げる。
【0071】
SDカードがデータライン上にスタートビット「S」を出力してから、エンドビット「E」を出力するまでのクロック数は規格により決められている。このクロック数をNdatとする。基準レジスタ12dには、当初「Ndat+2」が格納されている。この場合、データ受信開始信号DATRCV_STAは、図11(d)に示すタイミングでHighに上がる。
【0072】
データ受信タイミング調整回路210は、パラメータ格納手段13dを有する。パラメータ格納手段13dは、基準レジスタ12dに格納されている比較基準値を調整するための調整値Tdが格納されており、この調整値はホストコントローラ100の設計時に決定され、その後、変更することはできない固定値である。データ受信タイミング調整回路211は、この調整値Tdを用いて基準レジスタ12dに格納されている比較基準値を調整する。この調整値Tdは、図2の回路に設計変更がない場合は0である。
【0073】
図2の点線矩形のF/F23’〜25’のように、F/Fを各データ用配線に1つ追加して設計変更した場合、パラメータ格納手段13aには調整値Tdとして「+1」が格納される。データ受信タイミング調整回路211は、この調整値Tdに基づいて、基準レジスタ12dに格納されている比較基準値に「1」を加算し、加算結果を基準レジスタ12dに格納する。この結果、データ受信回路210は、F/F23’〜25’を追加して、入力データSDDAT_Iが全て1クロック遅れる場合でも、入力データSDDAT_Iのスタートビット「S」の位置で、データ受信開始信号DATRCV_STAをHighに上げる。従って、入力データSDDAT_Iは正しい位置で読み込みが開始される。
【0074】
図12はデータ受信開始位置とタイミング調整値の関係を示す図である。
【0075】
タイミング調整値Tdの値に応じて、データ受信開始信号DATRCV_STAがHighに変るタイミングが変化する。つまり、データ受信開始信号DATRCV_STAは、入力データSDDAT_Iの位置変動に応じてHighの位置が変更される。このようにタイミング調整値Tdは、上記した+1に限らず、フリップフロップの増加減少に応じて、例えば−3〜+3まで設定可能である。
【0076】
このタイミング調整値Tdは、前述の調整値Taのように、データ受信タイミング調整回路211に設けられた調整レジスタ14dに設定された設定値に基づいて更に可変されてもよい。ホスト装置は、この設定値を信号DATADJとして調整レジスタ14dに転送して格納する。データ受信タイミング調整回路211は、前述のクロック停止タイミング調整回路201のように、この設定値を用いて比較値レジスタ12dに格納された基準比較値を変更する。
【0077】
図13はIO部102(インターフェース212)のF/Fの段数とパラメータの値を示すテーブルである。
【0078】
図2のIO部102において、IO部側回路の都合により、追加又は削除を行ったF/Fの段数に応じて、パラメータの値を図13のように設定する。図13は、タイミングの調整を行う項目と、その項目に関係するパスにおいて追加又は削除したF/Fの段数とパラメータの設定値の関係を示す。それぞれのパラメータは、図2のタイミング調整回路201、205、208、211に反映され、タイミングの調整が行われて、正常に動作するようになる。
LSIの製作時、IO部のF/Fの段数をパラメータ値として設定しておけばよい。パラメータ値は、例えばRTL記述におけるパラメータファイルに記述された値であり、LSI製作時に、タイミング調整回路に組み込まれる。
【0079】
又、データ処理部とIO部が別々のチップで構成されたLSIにおいて、IO部のみ構成が異なる別のチップに置換えたような場合は、パラメータ値に加えて、調整レジスタ14を具備したことにより、ホスト装置からタイミングの調整値を設定できる。この場合は、変更前の構成と比べて、F/Fの段数がどのように変ったかによって、図13に示す増減値をレジスタに設定すればよい。
【0080】
[効果]
データ処理部とIO部とのインターフェースのタイミングを調整するパラメータ格納手段を設けたことにより、SOCにホストコントローラを組み込み、レイアウト等の都合上、F/Fの段数を変えた場合などにおいて、パラメータの調整値により、データあるいは信号の入出力タイミングを合わせることができる。従って、IO部のF/F段数を変更できるので、IPとしての汎用性が向上する。
【0081】
又、タイミングの調整レジスタを持つことにより、IPとして組み込むときだけでなく、ホストコントローラとIO部の2チップ構成でLSI化し、その後別の用途のためにIO部の構成を変えたような場合に、ホスト装置が調整レジスタにタイミング調整値を設定できるので、構成の異なる様々なIO部を適用できるという効果がある。
【0082】
以上の説明はこの発明の実施の形態であって、この発明の装置及び方法を限定するものではなく、様々な変形例を容易に実施することができるものである。例えば、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。
【符号の説明】
【0083】
100…ホストコントローラ、101…データ処理部、102…IO部、202…クロック出力回路、206…コマンド入出力回路、209…SDデータ入出力回路、19〜25…フリップフロップ。
【特許請求の範囲】
【請求項1】
IO部と、該IO部とホスト装置とのデータ転送を行うデータ処理部とから構成されるデータ処理装置であって、
前記データ処理部は、前記IO部から入力される特定データに応じて、前記IO部のデータ入出力タイミングをパラメータ値に基づいて調整するタイミング調整部を具備し、IO部の構成に対応したタイミングの調整を行うことを特徴とするデータ処理装置。
【請求項2】
前記タイミング調整部は、前記ホスト装置にて設定される調整値を格納するレジスタを具備し、この調整値に基づいて前記入出力タイミングを更に調節することを特徴とする請求項1記載のデータ処理装置。
【請求項3】
前記IO部には前記外部装置としてSDカードが接続され、
前記タイミング調整部は、データのブロック転送時のSDクロック停止タイミングを調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項4】
前記IO部には前記外部装置としてSDカードが接続され、
前記タイミング調整部は、前記SDカードからのレスポンス受信開始位置を調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項5】
前記IO部には前記外部装置としてSDカードが接続され、
前記タイミング調整部は、前記SDカードからのデータ受信開始位置を調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項6】
前記IO部には前記外部装置としてSDIOカードが接続され、
前記タイミング調整部は、前記SDIOカードに対するリードウエイト信号の出力タイミングを調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項7】
IO部と、該IO部とホスト装置とのデータ転送を行うデータ処理部とから構成されるデータ処理装置におけるデータ処理方法であって、
前記IO部から入力される特定データに応じて、前記IO部のデータ入出力タイミングをパラメータ値に基づいて調整し、前記IO部の構成に対応したタイミングの調整を行うことを特徴とするデータ処理方法。
【請求項8】
前記ホスト装置にて設定される調整値に基づいて前記入出力タイミングを更に調整することを特徴とする請求項7記載のデータ処理方法。
【請求項1】
IO部と、該IO部とホスト装置とのデータ転送を行うデータ処理部とから構成されるデータ処理装置であって、
前記データ処理部は、前記IO部から入力される特定データに応じて、前記IO部のデータ入出力タイミングをパラメータ値に基づいて調整するタイミング調整部を具備し、IO部の構成に対応したタイミングの調整を行うことを特徴とするデータ処理装置。
【請求項2】
前記タイミング調整部は、前記ホスト装置にて設定される調整値を格納するレジスタを具備し、この調整値に基づいて前記入出力タイミングを更に調節することを特徴とする請求項1記載のデータ処理装置。
【請求項3】
前記IO部には前記外部装置としてSDカードが接続され、
前記タイミング調整部は、データのブロック転送時のSDクロック停止タイミングを調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項4】
前記IO部には前記外部装置としてSDカードが接続され、
前記タイミング調整部は、前記SDカードからのレスポンス受信開始位置を調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項5】
前記IO部には前記外部装置としてSDカードが接続され、
前記タイミング調整部は、前記SDカードからのデータ受信開始位置を調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項6】
前記IO部には前記外部装置としてSDIOカードが接続され、
前記タイミング調整部は、前記SDIOカードに対するリードウエイト信号の出力タイミングを調整することを特徴とする請求項1又は2記載のデータ処理装置。
【請求項7】
IO部と、該IO部とホスト装置とのデータ転送を行うデータ処理部とから構成されるデータ処理装置におけるデータ処理方法であって、
前記IO部から入力される特定データに応じて、前記IO部のデータ入出力タイミングをパラメータ値に基づいて調整し、前記IO部の構成に対応したタイミングの調整を行うことを特徴とするデータ処理方法。
【請求項8】
前記ホスト装置にて設定される調整値に基づいて前記入出力タイミングを更に調整することを特徴とする請求項7記載のデータ処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−53588(P2012−53588A)
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願番号】特願2010−194623(P2010−194623)
【出願日】平成22年8月31日(2010.8.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願日】平成22年8月31日(2010.8.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]