記憶デバイスコントローラ、情報処理装置、電子機器及びアボート制御方法
【課題】データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラ、情報処理装置及び電子機器を提供する。
【解決手段】転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラは、前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、前記ライトデータがバッファリングされるバッファと、前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部とを含み、前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記アボートコマンドを強制的に発行させる。
【解決手段】転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラは、前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、前記ライトデータがバッファリングされるバッファと、前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部とを含み、前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記アボートコマンドを強制的に発行させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶デバイスコントローラ、情報処理装置、電子機器及びアボート制御方法等に関する。
【背景技術】
【0002】
近年、パーソナルコンピュータやその周辺機器(例えばプリンタ装置、スキャナ装置又は複合機)に限らず、携帯電話機、携帯情報端末(Personal Digital Assistant:PDA)やオーディオプレーヤ等の携帯型の情報機器、ロボット装置、デジタルカメラ、ビデオカメラ、全地球測位システム(Global Positioning System:GPS)装置、テレビ受信装置、プロジェクタ等の電子機器に、データストレージ用途にフラッシュメモリカードが使用される機会が多くなっている。
【0003】
フラッシュメモリカードには、その用途に応じて、種々の規格、バージョンが規定されている。例えば動画データ、静止画データ又は音楽データを携帯するために可搬性に優れ、大容量のフラッシュメモリとして、MMC(MultiMediaCard)規格等に準拠したフラッシュメモリカードがある。また、例えば携帯機器や家庭用電化製品の小型化により小型のコネクタ形状や高速なデータ転送が可能なHDD装置として、CE−ATA(Consumer Electronics-AT Attachment)規格に準拠した記憶装置がある。このようなフラッシュメモリカード等は、例えば特許文献1に開示されている。
【0004】
このようなフラッシュメモリカード等にアクセスするためには、転送クロックをフラッシュメモリカードに供給してその規格で規定されたコマンド(制御コマンド)を発行する必要がある。そして、該フラッシュメモリに対し該転送クロックに同期してライトデータを入力させたりリードデータを出力させたりする。この転送クロックを停止させることで、フラッシュメモリカードに対するデータ転送を停止させることができ、データ転送の低消費電力化を図ることができる。また、フラッシュメモリカードは、ビジー状態であることを通知することで、コマンドに対応したライトデータの出力停止を要求できる。このように、市場に広く流通するフラッシュメモリカードにアクセスする場合は、その規格で規定された仕様に合わせてアクセスする必要がある。
【特許文献1】特開2006−139556号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、フラッシュメモリカードにアクセスするコントローラ側では、ライトデータやリードデータをバッファリングするためのバッファを備えることで、ライト転送やリード転送を継続させることができる。従って、転送クロックに同期してライト転送やリード転送が行われる場合には、バッファがエンプティ状態になったときには有効なライトデータが存在しないため、転送クロックを停止させてライト転送を一時的に停止させることが行われる。同様に、バッファがフル状態になったときにはこれ以上バッファにリードデータを格納できないため、転送クロックを停止させてリード転送を一時的に停止させることが行われる。
【0006】
一方、フラッシュメモリカード等にアクセスするために用意されているコマンドの中で、データ転送のアボートを指示するアボートコマンドが規定されている。フラッシュメモリカード等にアクセスするコントローラ側では、ライト動作中にアボートコマンドを発行すると、ライトデータの出力を停止させて通常のシーケンスに戻る必要がある。また、コントローラ側では、リード動作中にアボートコマンドを発行すると、リードデータの受け付けを停止して通常のシーケンスに戻る必要がある。
【0007】
しかしながら、上述のバッファがエンプティ状態又はフル状態のときにアボートコマンドが発行されたとき、転送クロックの供給が停止されるためアボートコマンド自体が送信できない事態に陥る場合がある。この場合、アボートコマンドが送信できず、且つ次のデータ転送にも移行できない。このような問題は、特許文献1に開示された技術であっても同様である。
【0008】
本発明の幾つかの態様によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラ、情報処理装置及び電子機器を提供できる。
【課題を解決するための手段】
【0009】
本発明は、転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させる記憶デバイスコントローラに関係する。
【0010】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させる記憶デバイスコントローラに関係する。
【0011】
また本発明に係る記憶デバイスコントローラでは、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
強制的に発行された前記アボートコマンドのエンドビットが前記コマンドエンドビット検出部により検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることができる。
【0012】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドの発行指示があったとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。更に、例えば上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止して記憶デバイスに対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0013】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御部が、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【0014】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートする記憶デバイスコントローラに関係する。
【0015】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドのエンドビットが検出されたとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、記憶デバイスがアボートコマンドを受け付けるまで、バッファがエンプティ状態又はフル状態になったときに転送クロックの出力が停止されるため、記憶デバイスに無効なデータを送信するといったことがない。
【0016】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【0017】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【0018】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドのスタートビットが検出されたとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。更に、例えば上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止して記憶デバイスに対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0019】
また本発明は、
上記のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対して前記コマンドの発行を制御する制御マスタと、
を含む情報処理装置に関係する。
【0020】
本発明によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラが適用された情報処理装置を提供できる。
【0021】
また本発明は、
前記記憶デバイスが挿抜される記憶デバイス装着部と、
上記記載の情報処理装置と、
を含む電子機器に関係する。
【0022】
本発明によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる情報処理装置が適用された電子機器を提供できる。
【0023】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させるアボート制御方法に関係する。
【0024】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させるアボート制御方法に関係する。
【0025】
また本発明に係るアボート制御方法では、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップを含み、
強制的に発行された前記アボートコマンドのエンドビットが検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることができる。
【0026】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御ステップが、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【0027】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートするアボート制御方法に関係する。
【0028】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【0029】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【発明を実施するための最良の形態】
【0030】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【0031】
1. 情報処理装置
以下の実施形態では、記憶デバイスとしてのメモリカードにアクセスするためのカードコントローラ(記憶デバイスコントローラ)が情報処理装置としてのホストシステムに適用されているものとする。
【0032】
図1に、本実施形態における情報処理装置が適用された電子機器の構成例のブロック図を示す。
【0033】
図1の構成を有する電子機器としては、例えばパーソナルコンピュータ、その周辺機器(例えばプリンタ装置、スキャナ装置又は複合機)、携帯電話機、携帯情報端末、オーディオプレーヤ、ロボット装置、デジタルカメラ、ビデオカメラ、GPS装置、テレビ受信装置、プロジェクタ等がある。
【0034】
電子機器10は、情報処理装置としてのホストシステム100と、メモリカード(広義には記憶デバイス)200とを含み、ホストシステム100とメモリカード200とがカードバス20を介して接続されている。電子機器10では、メモリカード200に対する制御コマンドを発行することにより、メモリカード200にデータを書き込んだり、メモリカード200からデータを読み出したりすることができる。メモリカード200は、例えばフラッシュメモリカード、I/OデバイスやHDD装置であってもよい。
【0035】
ホストシステム100は、制御マスタ126と、カードコントローラ(記憶デバイスコントローラ、メモリコントローラ)130とを含む。制御マスタ126は、中央演算処理装置(Central Processing Unit:CPU)110、メモリ120を含む。CPU110、メモリ120及びカードコントローラ130は、システムバス122を介して接続されている。従って、CPU110は、システムバス122を介してメモリ120又はカードコントローラ130にアクセスできる。そして、CPU110が、メモリ120に格納されたプログラムを読み込んで該プログラムに対応した処理を実行する。
【0036】
カードコントローラ130とメモリカード200とは、カードバス20を介して接続され、CPU110が、カードコントローラ130からメモリカード200に対して発行する制御コマンドを生成する制御を行う。このような制御コマンドとしては、ライトコマンド、リードコマンド、アボートコマンド、リセットコマンド、デセレクトコマンド等がある。ライトコマンドは、カードコントローラ130がメモリカード200にライトデータを書き込むライト動作を行うためのコマンドである。リードコマンドは、カードコントローラ130がメモリカード200からリードデータを読み出すリード動作を行うためのコマンドである。アボートコマンドは、メモリカード200に対するライト動作又はリード動作のアボートを指示するためのコマンドである。リセットコマンドは、電源立ち上げ時や例えばライト動作又はリード動作中等の通常動作中にメモリカード200を初期化するためのコマンドである。デセレクトコマンドは、電源オフ直前や例えばライト動作又はリード動作中等の通常動作中にメモリカード200を非選択状態とするためのコマンドである。メモリカード200を「デバイス」と定義すると、カードコントローラ130はホスト側を制御する「ホストコントローラ」と定義することができる。
【0037】
カードバス20は、転送クロックCLKが伝送されるクロックライン、制御コマンドCMD及びレスポンスが伝送されるコマンドライン、例えば4ビット(又は8ビット)の転送データDAT0−DAT3が伝送されるデータラインを有する。カードコントローラ130が、転送クロックCLKに同期してコマンドCMDを発行する。そして、転送クロックCLKに同期して例えば4ビットの転送データDAT0−DAT3が送受信される。また、コマンドCMDの種類によっては、メモリカード200が制御コマンドCMDに対するレスポンスとして、例えばコマンドラインを用いてレスポンスを返すことができる。
【0038】
ここで、本実施形態のカードコントローラ130は、例えばMMC規格等のメモリーカード規格に準拠したメモリーカードや、CE−ATA規格に準拠したHDD装置等に適用できる。
【0039】
以下では、メモリカード200がMMC規格に準拠したフラッシュメモリカードであり、カードバス20にはMMC規格に準拠したシーケンスで制御コマンドやレスポンス、転送データの送受信が行われる場合を例に説明する。
【0040】
このとき、カードバス20のクロックライン、コマンドライン及びデータラインのうち双方向の信号ラインはプルアップされてもよい。例えば、コマンドライン及びデータラインが双方向の信号ラインである場合には、コマンドライン及びデータラインの各ラインはプルアップされてもよい。具体的には、コマンドラインは、所与の高電位側電源線との間にプルアップ抵抗を介してプルアップ接続されてもよく、同様に、データラインの各ラインは、所与の高電位側電源線との間にそれぞれプルアップ抵抗を介してプルアップ接続されてもよい。なお、クロックラインは、カードコントローラ130側の図示しないクロックドライバによりプッシュプル動作で駆動される。このクロックラインも、他のラインと同様にプルアップ接続されてもよい。
【0041】
MMC規格のメモリカード200にアクセスする場合、データ転送が不要な期間に転送クロックCLKを停止させることで消費電力を削減できる。その一方、転送クロックCLKを停止させることで、カードコントローラ130からのコマンドの送出、メモリカード200からのレスポンスの受信、データラインを介してデータの送受信ができなくなる。一般的には、カードコントローラ130が内蔵するバッファがエンプティ状態になったとき転送ロックCLKを停止させてライト動作を中断させたり、該バッファがフル状態になったとき転送ロックを停止させてリード動作を中断させたりする。
【0042】
図2に、図1のメモリカード200の構成例のブロック図を示す。
【0043】
メモリカード200は、カードI/F回路210、PLL回路212、カードI/F制御回路220、カード制御レジスタ部230、メモリI/F回路240、メモリコア部250を含む。
【0044】
カードI/F回路210は、カードバス20を伝送される信号のインタフェース処理を行う。カードI/F制御回路220は、カードI/F回路210を制御してカードバス20に信号を出力する制御を行ったり、カードバス20からの信号を入力する制御を行ったりする。カードI/F回路210は、転送クロックCLKに同期して入力された転送データやコマンドデータを図示しないバッファにバッファリングしたり、該バッファにバッファリングされた転送データやレスポンスデータを転送クロックCLKに同期して出力したりする。
【0045】
PLL回路212は、図示しない発振器からの発振出力を逓倍して、転送クロックCLKとは異なる内部クロックを生成する。PLL回路212によって生成された内部ブロックは、メモリカード200の各部に供給され、メモリカード200は内部クロックに同期して動作する。より具体的には、カードI/F回路210にバッファリングされたデータは、内部クロックに同期して読み出されてメモリカード200の内部に取り込まれる。また、メモリカード200の内部から出力されるデータは、内部クロックに同期してカードI/F回路210でバッファリングされ、転送クロックCLKに同期して外部に出力される。従って、メモリカード200は、転送クロックCLKの供給が停止されたとしても、メモリカード200の内部で、内部クロックに同期してメモリにアクセスできるようになっている。即ち、メモリカード200は、転送クロックに同期して入力されたコマンドに対しデータのアクセスをその内部クロックに同期して行うことができる。
【0046】
カード制御レジスタ部230は、複数の制御レジスタを有する。例えば、カード制御レジスタ部230は、動作条件レジスタ(Operation Conditions Resister:OCR)、カード識別レジスタ(Card IDentification register:CID)、カード特性データレジスタ(Card-Specific Data register:CSD)、相対カードアドレスレジスタ(Relative Card Address register:RCA)、ドライバステージレジスタ(Driver Stage Register:DSR)等を含む。
【0047】
カードI/F制御回路220は、カード制御レジスタ部230の設定データに基づいてメモリカード200の各部を制御すると共に、その制御結果をカード制御レジスタ部230に格納する制御を行う。
【0048】
メモリI/F回路240は、カードI/F制御回路220の制御により、メモリコア部250のメモリ素子にデータを書き込んだり、メモリコア部250のメモリ素子からデータを読み出したりする制御を行う。
【0049】
メモリコア部250は、複数のメモリ素子を有する。メモリI/F回路240は、予め割り当てられたアドレスに対応したメモリ素子からデータを読み出したり、該アドレスに対応したメモリ素子にデータを書き込んだりすることができる。
【0050】
カードコントローラ130のメモリカード200に対するライト動作中には、カードコントローラ130からのライトデータがカードI/F回路210においてバッファリングされる。そして、カードI/F回路210にバッファリングされたデータは、内部クロックに同期して読み出されてメモリI/F回路240を介してメモリコア部250に書き込まれる。このようなメモリコア部250へのデータ書き込み期間中は、カードコントローラ130が次のライトデータを入力してこないように、カードI/F回路210はカードコントローラ130に対してビジー状態を通知する。カードI/F回路210は、転送データが伝送されるデータラインのうち転送データDAT0が伝送されるデータラインをLレベルに駆動することで、カードコントローラ130にビジー状態を通知する。
【0051】
メモリカード200は、カードコントローラ130からR1bレスポンスを伴うコマンドを受信したときも、同様にカードコントローラ130に対してビジー状態を通知する。
【0052】
2. カードコントローラ(記憶デバイスコントローラ)
図1のカードコントローラ130は、ライト転送中にバッファがエンプティ状態でアボートコマンドを発行する場合であっても、以下のように正常にアボートコマンドを発行してアボート処理を行うことができる。また、カードコントローラ130は、リード転送中にバッファがフル状態でアボートコマンドを発行する場合であっても、以下のように正常にアボートコマンドを発行してアボート処理を行うことができる。
【0053】
2.1 第1の実施形態
図3に、第1の実施形態におけるカードコントローラ130の構成例のブロック図を示す。図3において、図1と同一部分には同一符号を付し、適宜説明を省略する。
【0054】
カードコントローラ130は、クロック制御部300と、コマンド制御部310と、データ制御部320と、バッファ330とを含む。
【0055】
クロック制御部300は、カードバス20のクロックラインの出力制御を行う。コマンド制御部310は、カードバス20のコマンドラインの入出力制御を行う。データ制御部320は、カードバス20のデータラインの入出力制御を行う。
【0056】
クロック制御部300は、コマンドや転送データが同期して送受信するための同期クロックである転送クロックCLKを供給したり、供給を停止したりする。クロック制御部300が転送クロックCLKの供給を停止することで、データの転送を中断させることできるが、コマンドがレスポンスの送受信も停止する。
【0057】
またクロック制御部300は、バッファ330の蓄積状況に応じて、メモリカード200への転送クロックCLKの出力制御を行う。即ち、クロック制御部300は、バッファ330がエンプティ状態又はフル状態のときに本来であれば転送クロックCLKの供給を停止すべき場合に、敢えて該転送クロックCLKの供給を続けてアボートコマンドの送信を実現できるようになっている。
【0058】
コマンド制御部310は、コマンドラインを介してメモリカード200にコマンドを発行すると共に、該コマンドに対応するレスポンスの受信制御を行う。このようなコマンド制御部310は、コマンド発行制御部312と、コマンドエンドビット検出部314とを含む。
【0059】
図4(A)に、コマンド制御部310により送信されるコマンドの説明図を示す。また、図4(B)に、コマンド制御部310により受信されるレスポンスの説明図を示す。
【0060】
コマンドは、スタートビット「S」が「0」、エンドビット「E」が「1」で挟まれた所定ビットのコマンドデータである。図4(A)に示すようなコマンドが、コマンドラインを介して送信される。
【0061】
コマンド発行制御部312は、図4(A)に示すようなフォーマットのコマンドを発行する制御を行う。より具体的には、コマンド発行制御部312は、メモリカード200に対してライトデータを書き込むためのライトコマンド、又は該ライトコマンドによるライト動作のアボートを指示するアボートコマンドを発行する制御を行う。また、コマンド発行制御部312は、メモリカード200からのリードデータを読み出すためのリードコマンド、リセットコマンド、デセレクトコマンド又は該リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行する。
【0062】
コマンドエンドビット検出部314は、コマンド発行制御部312により発行されるコマンド(特にアボートコマンド)のエンドビットを検出する。より具体的には、コマンドエンドビット検出部314は、コマンド発行制御部312により発行されたライトコマンドにより開始されるライト動作中又はリードコマンドにより開始されるリード動作中に、コマンド発行制御部312によりアボートコマンドが発行されたとき、図4(A)に示すようなアボートコマンドのエンドビットを検出する。
【0063】
レスポンスは、スタートビット「S」が「0」、エンドビット「E」が「1」で挟まれた所定ビットのレスポンスデータである。図4(B)に示すようなレスポンスが、コマンドラインを介して受信される。
【0064】
図3において、データ制御部320は、データラインを介して転送データを送信又は受信する制御を行う。なお、データラインのうち転送データDAT0が送受信されるデータラインが、メモリカード200により「L」レベルに駆動されることで、カードコントローラ130は、メモリカード200がビジー状態であることを通知される。このデータ制御部320は、更に、転送データが伝送されるデータラインの電位に基づいてメモリカード200がビジー状態か否かを検出することができる。
【0065】
バッファ330には、制御マスタ126のメモリ120からメモリカード200に転送されるライトデータがバッファリングされる。そして、カードコントローラ130とメモリカード200との間で行われるライト転送において、バッファ330からライトデータが読み出されてメモリカード200に出力される。また、バッファ330には、メモリカード200から転送されてくるリードデータがバッファリングされる。そして、カードコントローラ130とメモリカード200との間で行われるリード転送において、バッファ330からリードデータが読み出された制御マスタ126のメモリ120に格納される。
【0066】
このようなカードコントローラ130では、ライト動作中に、制御マスタ126で実行される上位アプリケーションプログラムからアボートコマンドの発行指示があったとき、バッファがエンプティ状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。また、カードコントローラ130では、リード動作中に、制御マスタ126で実行される上位アプリケーションプログラムからアボートコマンドの発行指示があったとき、バッファがフル状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。
【0067】
そして、ライト動作中に、強制的に発行されたアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファ330がエンプティ状態になったとき、カードコントローラ130は、ライト動作をアボートする。また、リード動作中に、強制的に発行されたアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファ330がフル状態になったとき、カードコントローラ130は、リード動作をアボートする。ここで、ライト動作(ライト転送)をアボートするとは、ライトデータをメモリカード200に出力しないことを意味する。また、リード動作(リード転送)をアボートするとは、メモリカード200からのリードデータを取り込まないことを意味する。
【0068】
こうすることで、確実にデータ転送をアボートすることができるので、例えば制御マスタ126で実行される上位アプリケーションプログラムでは、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。また、上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止してメモリカード200に対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0069】
図3において、コマンド制御部310及びデータ制御部320は、アクセス制御部(書き込み制御部、リード制御部)として機能する。即ち、このアクセス制御部は、メモリカード200に対してコマンドを発行し、転送クロックに同期してメモリカード200にアクセスする制御を行う。例えばアクセス制御部がライトコマンドを発行する場合、転送クロックに同期してライトデータを出力してメモリカード200に該ライトデータの書き込み制御を行う。
【0070】
2.1.1 処理例
図5に、第1の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0071】
ここで、カードコントローラ130では、コマンド発行制御部312がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ130はメモリカード200に対するライト動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、ライト動作中にアボートコマンドを発行するものとする。
【0072】
この場合、まず、コマンドエンドビット検出部314は、制御マスタ126で実行される上位アプリケーションプログラムからのアボートコマンドの発行指示により発行されるアボートコマンドのエンドビットを監視する(ステップS10)。
【0073】
ステップS10においてアボートコマンドのエンドビットが検出されないとき(ステップS10:N)、コマンド制御部310が、バッファ330がエンプティ状態で、且つ該アボートコマンドが送信中であるか否かを判別する(ステップS11)。
【0074】
バッファ330がエンプティ状態ではないとき(ステップS11:N、ステップS12:N)、データ制御部320は、ライト転送を行い(ステップS13)、ライト転送が終了ではないとき(ステップS14:N)、ステップS10に戻る。ステップS14においてライト転送が終了のとき(ステップS14:Y)、データ制御部320は、ライト転送完了通知を制御マスタ126に通知してライト転送を完了させ(ステップS15)、一連の処理を終了する(エンド)。
【0075】
ステップS11において、バッファ330がエンプティ状態であるが、アボートコマンド送信中であることが判別されたとき(ステップS11:N、ステップS12:Y)、クロック制御部300が転送クロックCLKの出力を停止させてライト転送を中断させて(ステップS16)、ステップS10に戻る。
【0076】
ステップS11において、バッファ330がエンプティ状態で、且つアボートコマンドが送信中であると判別されたとき(ステップS11:Y)、クロック制御部300が強制的に転送クロックを出力してコマンド発行制御部312が該アボートコマンドを強制発行し(ステップS17)、その後、データ制御部320は、データ転送をアボートして(ステップS18)、一連の処理を終了する(エンド)。
【0077】
このように、第1の実施形態によれば、ライト転送中にアボートコマンドの発行指示があったとき、バッファ330がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させる。そして、強制発行されるアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファがエンプティ状態になったとき、ライト転送がアボートされるので、確実にライト転送をアボートすることができる。
【0078】
図6に、第1の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0079】
ここで、カードコントローラ130では、コマンド発行制御部312がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ130はメモリカード200に対するリード動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、リード動作中にアボートコマンドを発行するものとする。
【0080】
この場合、まず、コマンドエンドビット検出部314は、制御マスタ126で実行される上位アプリケーションプログラムからのアボートコマンドの発行指示により発行されるアボートコマンドのエンドビットを監視する(ステップS20)。
【0081】
ステップS20においてアボートコマンドのエンドビットが検出されないとき(ステップS20:N)、コマンド制御部310が、バッファ330がフル状態で、且つ該アボートコマンドが送信中であるか否かを判別する(ステップS21)。
【0082】
バッファ330がフル状態ではないとき(ステップS21:N、ステップS22:N)、データ制御部320は、リード転送を行い(ステップS23)、リード転送が終了ではないとき(ステップS24:N)、ステップS20に戻る。ステップS24においてリード転送が終了のとき(ステップS24:Y)、データ制御部320は、リード転送完了通知を制御マスタ126に通知してリード転送を完了させ(ステップS25)、一連の処理を終了する(エンド)。
【0083】
ステップS21において、バッファ330がフル状態であるが、アボートコマンド送信中であることが判別されたとき(ステップS21:N、ステップS22:Y)、クロック制御部300が転送クロックCLKの出力を停止させてリード転送を中断させて(ステップS26)、ステップS20に戻る。
【0084】
ステップS21において、バッファ330がフル状態で、且つアボートコマンドが送信中であると判別されたとき(ステップS21:Y)、クロック制御部300が強制的に転送クロックを出力してコマンド発行制御部312が該アボートコマンドを強制発行し(ステップS27)、その後、データ制御部320は、データ転送をアボートして(ステップS28)、一連の処理を終了する(エンド)。
【0085】
このように、第1の実施形態によれば、リード転送中にアボートコマンドの発行指示があったとき、バッファ330がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させる。そして、強制発行されるアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファがフル状態になったとき、リード転送がアボートされるので、確実にリード転送をアボートすることができる。
【0086】
図7に、第1の実施形態におけるカードコントローラ130の動作例のタイミング図を示す。
【0087】
第1の実施形態では、ライト転送又はリード転送中に、上位アプリケーションプログラムからのアボートコマンドの発行指示CMD_Goがあると、カードコントローラ130はメモリカード200に対してアボートコマンドの発行を行う。このとき、バッファ330がエンプティ状態になると、一般的にはライト転送を中断するために転送クロックCLKの出力を停止する。これに対して、第1の実施形態では、アボートコマンドの発行指示CMD_Goがあると、バッファ330がエンプティ状態か否かにかかわらず転送クロックCLKを強制的に出力させる。そして、アボートコマンドのエンドビットの検出を条件に、ライト転送又はリード転送をアボートする。
【0088】
従って、図7では、バッファ330がエンプティ状態になるタイミングからアボートコマンドのエンドビットの検出タイミングまでの期間が、転送クロックCLKの強制発行期間(アボートコマンドの強制発行期間)となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部300が、MMC規格等で規定された通り転送クロックCLKの出力を行う。
【0089】
2.1.2 ハードウェア構成例
図8に、図1又は図3のカードコントローラ130のハードウェア構成例のブロック図を示す。
【0090】
カードコントローラ130は、制御インタフェース(InterFace:I/F)回路132、FIFO(First-In First-Out)I/F回路134、コントローラ制御レジスタ部136、クロック制御部138、コマンド制御部140、データ制御部146、ドライバ部150を含む。コマンド制御部140は、アボートタイミング生成回路143、エンドタイミング生成回路144を含む。データ制御部146は、データシーケンサ148を含む。
【0091】
制御I/F回路132は、システムバス122を介してCPU110やメモリ120との間で送受信される制御信号や制御データのインタフェース処理を行う。CPU110は、制御I/F回路132を介してコントローラ制御レジスタ部136の各制御レジスタに制御データを設定できる。
【0092】
FIFOI/F回路134は、システムバス122を介してCPU110やメモリ120との間で送受信される制御信号や制御データのインタフェース処理を行う。システムバス122を介してメモリ120から読み出されたデータ(ライトデータ)は、FIFOI/F回路134の図示しないFIFO(広義にはバッファ)においてバッファリングされた後、データ制御部146に供給される。また、メモリカード200から読み出されたデータ(リードデータ)は、FIFOI/F回路134の図示しないFIFO(バッファ)においてバッファリングされた後に、システムバス122を介してCPU110又はメモリ120に出力される。なお、このFIFOは、いわゆる先入れ先出し構造を有する必要はなく、ランダムアクセスが可能なメモリであってもよい。
【0093】
コントローラ制御レジスタ部136は、1又は複数の制御レジスタを有し、各制御レジスタにはカードコントローラ130を制御するための制御データが設定される。コントローラ制御レジスタ部136の各制御レジスタに設定された制御データに対応した制御信号に基づいて、カードコントローラ130の各部が制御される。制御マスタ126からのアボートコマンドやその他のコマンドの発行指示CMD_Goは、コントローラ制御レジスタ部136のコマンド発行指示レジスタにセットされることでカードコントローラ130のコマンド制御部140及びデータ制御部146にコマンド発行指示が通知される。
【0094】
また、制御I/F回路132又はコントローラ制御レジスタ部136は、CPU110(制御マスタ126)に対して割り込み信号を発生する図示しない割り込み発生部を有する。
【0095】
また、図8では、データ制御部146で検出されたデータ転送完了通知が、コントローラ制御レジスタ部136に入力され、制御マスタ126に対して割り込み通知されるようになっている。
【0096】
クロック制御部138は、カードコントローラ130の各部にクロックを供給すると共に、カードバス20を構成するクロックラインに転送クロックCLKを出力する制御を行う。より具体的には、クロック制御部138は、図3のクロック制御部300の機能を有し、ライト転送中にFIFO(バッファ)がエンプティ状態になったとき、又はリード転送中にFIFO(バッファ)がフル状態になったとき、転送クロックCLKを停止させる制御を行う。また、クロック制御部138は、ライト転送中又はリード転送中にアボートコマンドの発行指示があったときには、FIFO(バッファ)がエンプティ状態又はリード状態かにかかわらず、転送クロックCLKを強制的に出力する制御を行う。
【0097】
コマンド制御部140は、図3のコマンド制御部310の機能を有する。コマンドシーケンサ142は、コントローラ制御レジスタ部136の制御レジスタの制御データ(コマンドデータ)に基づいて、カードバス20を構成するコマンドラインを介してメモリカード200に対してコマンドを発行する制御を行う。コマンドシーケンサ142は、コマンドの発行が完了すると、コマンド完了通知をコントローラ制御レジスタ部136及びデータ制御部146に出力する。コントローラ制御レジスタ部136に入力されたコマンド完了通知に基づき、制御マスタ126に対してコマンド完了通知割り込みを発行する。
【0098】
また、コマンドシーケンサ142は、該コマンドに対応するメモリカード200からのレスポンスを受信する制御を行う。コマンドシーケンサ142において受信されたレスポンスは、レスポンスデータとしてコントローラ制御レジスタ部136に出力される。
【0099】
アボートタイミング生成回路143は、データ転送をアボートするアボートタイミングを指定するアボートタイミング信号AbortStopを生成する。エンドタイミング生成回路144は、転送クロックCLKを強制発行する期間のエンドタイミングを生成する。エンドタイミング生成回路144は、図3のコマンドエンドビット検出部314の機能を有する。アボートタイミング生成回路143は、アボートの指示タイミングから該エンドタイミングまでを指定する強制発行期間指定信号AbortRunを生成する。
【0100】
コマンド制御部140は、このアボートタイミング信号AbortStopや、強制発行期間指定信号AbortRun、コマンドのエンドビットを検出したことを示すコマンド送信完了通知をデータ制御部146に出力できる。
【0101】
データ制御部146は、図3のデータ制御部320の機能を有する。データシーケンサ148は、コントローラ制御レジスタ部136の制御レジスタの制御データに基づいて、カードバス20を構成するデータラインを介してメモリカード200との間でデータを送受信する制御を行う。データ制御部146においてデータ転送完了が検出されると、コントローラ制御レジスタ部136に対してデータ転送完了通知を出力する。コントローラ制御レジスタ部136に入力されたデータ転送完了通知に基づき、制御マスタ126に対してデータ転送完了通知割り込みを発行する。
【0102】
ドライバ部150は、コマンドシーケンサ142の制御結果に基づいてコマンドラインの信号の入出力制御を行う。また、データシーケンサ148の制御結果に基づいてデータラインの信号の入出力制御を行う。
【0103】
図9に、図8のカードコントローラ130の構成要部のブロック図を示す。
【0104】
図9において、図8と同一部分には同一符号を付し、適宜説明を省略する。
【0105】
クロック制御部138は、転送クロックCLKを生成するクロック生成回路400、転送クロックCLKの出力制御を行うクロックイネーブル生成回路410を含む。クロック生成回路400は、クロックイネーブル生成回路410により生成されたクロックイネーブル信号ClockEnableによりイネーブル状態が指定された期間に、転送クロックCLKを出力する。
【0106】
FIFOI/F回路134は、バッファとしてのFIFO135を含む。FIFO135には、ライト転送時のライトデータ、リード転送時のリードデータがバッファリングされる。FIFO135にバッファリングされる有効なライトデータがないとき、FIFOI/F回路134は、データシーケンサ148に対してエンプティ状態を示すエンプティ信号Emptyを出力する。FIFO135が有効なリードデータで満杯のとき、FIFOI/F回路134は、データシーケンサ148に対してフル状態を示すフル信号Fullを出力する。
【0107】
制御マスタ126は、カードコントローラ130のコントローラ制御レジスタ部136にコマンドの発行に必要な設定情報を設定した後、コマンド発行指示を行うことで、メモリカード200に対してコマンドを発行する制御を行う。例えば、制御マスタ126は、コントローラ制御レジスタ部136に、MMC規格又はCE−ATA規格等で規定されたコマンドのインデックス番号(CMD_Index)、当該コマンドがアボートコマンドであるか否かを示すコマンドタイプ情報(CMD_Type)を指定する。そして、制御マスタ126がカードコントローラ130のコントローラ制御レジスタ部136のコマンド発行指示制御レジスタ(図示せず)にアクセスすることで、コマンド発行指示が行われる。このコマンド発行指示により、カードコントローラ130が上述のようにコントローラ制御レジスタ部136に設定された設定情報に対応したコマンドをメモリカード200に対して発行する。
【0108】
コマンドシーケンサ142は、コントローラ制御レジスタ部136から、制御マスタ126によるコマンドの発行指示を示す発行指示信号CMD_Goを受けて、コマンドのインデックス番号CMD_Index及びコマンドタイプ情報CMD_Type等に対応したシーケンス制御を行って、上述のようにコントローラ制御レジスタ部136に設定された設定情報に対応したコマンドをメモリカード200に対して発行する。データシーケンサ148もまた、コントローラ制御レジスタ部136で設定された各種情報に対応したシーケンス制御を行って、転送データの送受信制御を行う。
【0109】
エンドタイミング生成回路144は、コマンドシーケンサ142により状態遷移するステートやアボートコマンドのエンドビットの検出タイミングに基づいて、転送クロックCLKを強制発行する期間のエンドタイミングを生成する。
【0110】
アボートタイミング生成回路143は、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのエンドビットが検出されたときアボートタイミング信号AbortStopを出力する。また、アボートタイミング生成回路143は、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、このコマンドの発行指示を検出すると、該コマンドのスタートビットからエンドビットまでを強制発行期間とする強制発行期間指定信号AbortRunを出力する。
【0111】
データシーケンサ148は、アボートタイミング信号AbortStopを受け付けると、データ転送をアボートする。また、データシーケンサ148は、強制発行期間指定信号AbortRunを受け付けると、クロック制御部138により転送クロックCLKを強制的に出力する制御を行う。
【0112】
クロックイネーブル生成回路410には、コマンドシーケンサ142からコマンドイネーブル信号CMD_Enable、データシーケンサ148からデータイネーブル信号DAT_Enable及びディセーブル信号Disableが入力される。コマンドイネーブル信号CMD_Enableは、コマンドシーケンサ142がIDLEステート以外のステートに遷移しているときにアクティブとなる信号である。データイネーブル信号DAT_Enableは、データシーケンサ148がIDLEステート以外のステートに遷移しているときにアクティブとなる信号である。ディセーブル信号Disableは、ライト転送時にFIFO135がエンプティ状態となり転送クロックCLKを停止させるためのステート、又はリード転送時にFIFO135がフル状態となる転送クロックCLKを停止させるためのステートに遷移しているときにアクティブとなる信号である。
【0113】
図10に、図9のクロックイネーブル生成回路410の構成例の回路図を示す。
【0114】
このように、クロックイネーブル生成回路410は、コマンドイネーブル信号CMD_Enableとデータイネーブル信号DAT_Enableとの論理和演算結果を、ディセーブル信号Disableでマスクすることで、クロックイネーブル信号ClockEnableを生成する。従って、強制発行制御を行うためには、強制発行条件により、上記の転送クロックCLKを停止させるためのステートから別のステートに遷移させることで、ディセーブル信号Disableを非アクティブにでき、容易にクロックイネーブル信号ClockEnableをアクティブに設定できる。
【0115】
図11に、図9のドライバ部150の構成の概要を示す。
【0116】
ドライバ部150は、クロックラインを駆動して転送クロックCLKを出力するクロック出力ドライバと、コマンドラインに接続される第1の入出力ドライバと、データラインに接続される第2の入出力ドライバとを含む。
【0117】
第1の入出力ドライバは、コマンドシーケンサ142によって制御されコマンドラインを駆動して制御コマンドを出力する出力ドライバと、コマンドラインを介して入力されるレスポンスを受信するための入力ドライバとを含む。出力ドライバは、コマンドシーケンサ142からの出力制御信号CMD_Oeがクロック出力ドライバの入力信号CLK_Outで同期化された信号に基づいて、コマンドシーケンサ142からの出力信号CMD_Outが入力信号CLK_Outで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部136の制御レジスタの内容に基づいてコマンドシーケンサ142によって生成された制御コマンドが、第1の入出力ドライバの出力ドライバによりコマンドラインに出力される。そして、該制御コマンドに対応してメモリカード200から出力されたレスポンスが、第1の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックCLKで同期化されてコマンドシーケンサ142に入力信号CMD_Inとして入力される。
【0118】
第2の入出力ドライバは、データシーケンサ148によって制御されデータラインを駆動して転送データを出力する出力ドライバと、データラインを介して入力される転送データを受信するための入力ドライバとを含む。出力ドライバは、データシーケンサ148からの出力制御信号DAT_Oeがクロック出力ドライバの入力信号CLK_Outで同期化された信号に基づいて、データシーケンサ148からの出力信号DAT_Outが入力信号CLK_Outで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部136の制御レジスタの内容に基づいて、FIFOI/F回路134からのデータが、データシーケンサ148の制御により、転送データとして第2の入出力ドライバの出力ドライバを介してデータラインに出力される。そして、メモリカード200から出力されたレスポンスが、第1の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックCLKで同期化されてデータシーケンサ148に入力信号DAT_Inとして入力される。なお、図9では、転送データが4ビットデータである。
【0119】
図12に、図9のコマンドシーケンサ142の動作説明図を示す。
【0120】
コマンドシーケンサ142は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【0121】
電源投入(SQ1)後の初期状態では、コマンドシーケンサ142は、IDLEステートST1に遷移する。制御マスタ126で実行される上位アプリケーションからメモリカード200に対して制御コマンドの発行指示(SQ2)があると、コマンドシーケンサ142は、SEND_CMDステートST2に遷移する。
【0122】
SEND_CMDステートST2では、制御マスタ126が、カードコントローラ130の制御レジスタに制御コマンドを発行するためのコマンド指定情報やそのパラメータ情報を制御レジスタに設定する。そして、上位アプリケーションからの制御コマンドの発行指示を受けて制御マスタ126が、カードコントローラ130の図示しない制御コマンド発行指示レジスタにアクセスしてコマンドのエンドビットを送信すると(SQ3)、コマンドシーケンサ142は、WAIT_RESPステートST3に遷移する。
【0123】
WAIT_RESPステートST3では、所定のタイムアウト期間だけ、上記のコマンドに対応したレスポンスのスタートビットを待つ。WAIT_RESPステートST3において、所定のタイムアウト期間内にレスポンスのスタートビットを検出すると、コマンドシーケンサ142は、RCV_RESPステートST4に遷移する(SQ4)。WAIT_RESPステートST3において、所定のタイムアウト期間が経過すると、コマンドシーケンサ142は、ERR_PROステートST6に遷移する(SQ100)。
【0124】
RCV_RESPステートST4では、コマンドシーケンサ142が、コマンドラインを介してメモリカード200からのレスポンスデータを受信する。そして、レスポンスのエンドビットの受信が完了する(SQ5)と、コマンドシーケンサ142は、END8CLKステートST5に遷移する。
【0125】
END8CLKステートST5では、コマンド発行間隔期間である転送クロックCLKの8クロック分だけ待機する。そして、RCV_RESPステートST4において受信されたレスポンスのエラーが検出されているとき、又はレスポンスがタイムアウト期間内に受信されないとき、コマンドシーケンサ142は、ERR_PROステートST6に遷移する(SQ6)。ERR_PROステートST6では、制御I/F回路132又はコントローラ制御レジスタ部136が、検出されたエラーに応じて制御マスタ126にエラーが発生した旨の割り込みを発生させる。その後、コマンドシーケンサ142は、ERR_PROステートST6からIDLEステートST1に遷移する(SQ7)。
【0126】
RCV_RESPステートST4において受信されたレスポンスが正常のとき、コマンドシーケンサ142は、Cmd_CmpステートST7に遷移する(SQ8)。Cmd_CmpステートST7では、制御I/F回路132又はコントローラ制御レジスタ部136が、制御マスタ126にコマンド完了通知割り込みを発生させる。その後、コマンドシーケンサ142は、Cmd_CmpステートST7からIDLEステートST1に遷移する(SQ9)。
【0127】
図13に、図9のデータシーケンサ148の動作説明図を示す。
【0128】
データシーケンサ148は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【0129】
電源投入(SQ10)後の初期状態では、データシーケンサ148は、IDLEステートST10に遷移する。制御マスタ126で実行される上位アプリケーションからメモリカード200に対して制御コマンドの発行指示があると、その制御コマンドの種類によって遷移先のステートが変わる。
【0130】
IDLEステートST10において、上位アプリケーションから発行指示された制御コマンドがライトコマンドのとき(SQ11)、データシーケンサ148は、CHK_BUSYステートST11に遷移する。
【0131】
CHK_BUSYステートST11では、メモリカード200がビジー状態か否かが検出される。CHK_BUSYステートST11において、メモリカード200の非ビジー状態が検出されたとき(SQ12)、データシーケンサ148は、WR_BL_DATステートST12に遷移する。CHK_BUSYステートST11において、メモリカード200のビジー状態が検出されたとき(SQ13)、データシーケンサ148は、CHK_BUSYステートST11を繰り返す。
【0132】
WR_BL_DATステートST12において、データシーケンサ148は、メモリカード200に対してライトデータを送出する制御を行う。1ブロック分のライトデータを送出すると(SQ14)、データシーケンサ148は、CRCSTステートST13に遷移する。
【0133】
また、WR_BL_DATステートST12において、アボートタイミング信号AbortStopが非アクティブでFIFO135がエンプティ状態、又は強制発行期間指定信号AbortRunが非アクティブでFIFO135がエンプティ状態になると、データシーケンサ148は、WR_FIFO_BUSYステートST60に遷移する(SQ60)。一方、WR_BL_DATステートST12において、アボートタイミング信号AbortStopがアクティブでFIFO135がエンプティ状態、又は強制発行期間指定信号AbortRunがアクティブでFIFO135がエンプティ状態になると、データシーケンサ148は、ABTステートST50に遷移する(SQ52)。
【0134】
WR_FIFO_BUSYステートST60では、データシーケンサ148が、転送クロックCLKを停止させる制御を行う。データシーケンサ148がWR_FIFO_BUSYステートST60に遷移しているときにディセーブル信号Disableをアクティブにすることで、クロックイネーブル信号ClockEnableが非アクティブとなり、転送クロックCLKの供給が停止される。
【0135】
WR_FIFO_BUSYステートST60において、FIFO135がエンプティ状態でなくなると、データシーケンサ148は、WR_BL_DATステートST12に遷移する(SQ61)。また、WR_FIFO_BUSYステートST60において、アボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunがアクティブとなると、ABTステートST50に遷移する(SQ62)。
【0136】
CRCSTステートST13では、データシーケンサ148は、ライトデータのCRCステータスをチェックし、CRCステータスが正常で次のブロックの転送が必要なとき(SQ15)、データシーケンサ148は、WR_BL_DATステートST12に遷移する。CRCSTステートST13において、CRCステータスが正常で次のブロックの転送が不要なとき(SQ16)、データシーケンサ148は、END8CLKステートST20に遷移する。
【0137】
CHK_BUSYステートST11又はCRCSTステートST13において、アボートタイミング信号AbortStopがアクティブになると(アボートコマンドのエンドビットを検出すると)、ABTステートST50に遷移する(SQ51、SQ53)。
【0138】
END8CLKステートST20では、コマンド発行間隔期間である転送クロックCLKの8クロック分だけ待機する。そして、転送クロックCLKの8クロック分の期間が経過する(SQ20)と、データシーケンサ148は、CHK_BUSYステートST21に遷移する。
【0139】
CHK_BUSYステートST21では、メモリカード200がビジー状態か否かが検出される。CHK_BUSYステートST21において、メモリカード200の非ビジー状態が検出されたとき(SQ22)、データシーケンサ148は、Tran_CmpステートST22に遷移する。CHK_BUSYステートST21において、メモリカード200のビジー状態が検出されたとき(SQ21)、データシーケンサ148は、CHK_BUSYステートST21を繰り返す。
【0140】
Tran_CmpステートST22では、データシーケンサ148が、制御マスタ126に対して転送終了割り込みを発生させる制御が行われる。転送終了割り込みを発生した後(SQ23)、データシーケンサ148は、IDLEステートST10に遷移する。
【0141】
IDLEステートST10において、上位アプリケーションから発行指示された制御コマンドがリードコマンドのとき(SQ31)、データシーケンサ148は、RD_BL_DATステートST31に遷移する。
【0142】
RD_BL_DATステートST31では、データシーケンサ148は、メモリカード200から1ブロック分のリードデータを読み出す制御を行う。次のブロックのリードデータを読み出す必要があるとき(SQ32)、データシーケンサ148は、RD_BL_DATステートST31を繰り返す。RD_BL_DATステートST31において、次のブロックのリードデータを読み出す必要がないとき(SQ33)、データシーケンサ148は、END8CLKステートST32に遷移する。
【0143】
RD_BL_DATステートST31において、アボートタイミング信号AbortStopが非アクティブでFIFO135がフル状態、又は強制発行期間指定信号AbortRunが非アクティブでFIFO135がフル状態になると、データシーケンサ148は、RD_FIFO_BUSYステートST61に遷移する(SQ65)。一方、RD_BL_DATステートST31において、アボートタイミング信号AbortStopがアクティブでFIFO135がフル状態、強制発行期間指定信号AbortRunがアクティブでFIFO135がフル状態になると、データシーケンサ148は、ABTステートST50に遷移する(SQ54)。
【0144】
RD_FIFO_BUSYステートST61では、データシーケンサ148が、転送クロックCLKを停止させる制御を行う。データシーケンサ148がRD_FIFO_BUSYステートST61に遷移しているときにディセーブル信号Disableをアクティブにすることで、クロックイネーブル信号ClockEnableが非アクティブとなり、転送クロックCLKの供給が停止される。
【0145】
RD_FIFO_BUSYステートST61において、FIFO135がフル状態でなくなると、データシーケンサ148は、RD_BL_DATステートST31に遷移する(SQ66)。また、RD_FIFO_BUSYステートST61において、アボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunがアクティブとなると、ABTステートST50に遷移する(SQ67)。
【0146】
END8CLKステートST32では、コマンド発行間隔期間である転送クロックCLKの8クロック分だけ待機する。そして、転送クロックCLKの8クロック分の期間が経過する(SQ34)と、データシーケンサ148は、Tran_CmpステートST22に遷移する。
【0147】
IDLEステートST10において、上位アプリケーションから発行指示された制御コマンドが、R1bレスポンスを有するコマンドのとき(SQ44)、データシーケンサ148は、MASK_R1b_BUSYステートST43に遷移する。
【0148】
MASK_R1b_BUSYステートST43では、データシーケンサ148は、メモリカード200からのレスポンスを受信し、メモリカード200の種類(規格、バージョン)によって変化するビジー状態の検出タイミングをマスク制御して特定する。次に、MASK_R1b_BUSYステートST43において、ビジー状態の検出タイミングになると、データシーケンサ148は、CHK_R1b_BUSYステートST42に遷移する(SQ45)。
【0149】
CHK_R1b_BUSYステートST42では、メモリカード200がビジー状態か否かが検出される。CHK_R1b_BUSYステートST42においてメモリカード200のビジー状態が検出されたとき(SQ46)、データシーケンサ148は、R1b_BUSYステートST44に遷移する。CHK_R1b_BUSYステートST42においてメモリカード200の非ビジー状態が検出されたとき(SQ47)、データシーケンサ148は、R1bCOMPステートST45に遷移する。
【0150】
R1b_BUSYステートST44において、メモリカード200の非ビジー状態が検出されたとき(SQ48)、データシーケンサ148は、R1bCOMPステートST45に遷移する。
【0151】
R1bCOMPステートST45では、図示しないアボート処理通知部がアボート処理の終了を制御マスタ126に通知する(割り込み通知、ステータスレジスタによるステータス通知)。その後、データシーケンサ148は、IDLEステートST10に遷移する(SQ49)。なお、図13において、R1bCOMPステートST45を、Tran_CmpステートST22と共通化してもよい。
【0152】
ABTステートST50では、次の状態遷移タイミングで、当該ステートからMASK_R1B_BUSYステートST43に遷移する(SQ55)。
【0153】
図13の動作を行うデータシーケンサ148では、アボート処理を、R1bレスポンスの制御シーケンスで行うようにしたので、データシーケンサ148に無駄なステートを設けることなく、確実にアボート処理を終了させることができる。
【0154】
また、第1の実施形態によれば、ライト動作又はリード動作終了後に、MMC規格等で規定されているコマンド発行間隔期間である転送クロックCLKの8クロックに相当する期間を待つEND8CLKステートに遷移させてからTran_CmpステートST22に遷移させるようにしたので、コマンド発行直前に上述のコマンド発行間隔を管理することなく、いつでも次のコマンドを発行できる状態でコマンドの発行制御を開始できるようになる。
【0155】
図14に、第1の実施形態におけるカードコントローラ130のライト動作中のアボート処理の動作例のタイミング図を示す。
【0156】
図14では、コマンドシーケンサ142のステートやデータシーケンサ148のステートも示し、図14では図12又は図13の各ステートを分割した詳細なステートを示している。
【0157】
図14では、ライト動作中に、アボートコマンドの発行指示があると(TG10)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、アボートタイミング生成回路143が、強制発行期間指定信号AbortRunをHレベルに設定する。
【0158】
その後、コマンド制御部140が、アボートコマンドの送出を開始すると共に、該アボートコマンドのエンドビットを監視する。アボートコマンドのエンドビットが検出されるまでに、FIFO135がエンプティ状態になったとき(TG11)、データシーケンサ148は、ABTステートに遷移する。その後、データシーケンサ148は、MASK_R1b_BUSYステートに遷移する。
【0159】
データシーケンサ148は、MASK_R1b_BUSYステートに遷移して、メモリカード200の非ビジー状態の検出を開始し、メモリカード200の非ビジー状態が検出されると、Tran_Cmpステートに遷移する。Tran_Cmpステートにおいて、アボート処理の終了通知を制御マスタ126に対して行う。
【0160】
なお、FIFO135がエンプティ状態となるタイミングが遅れて、先にアボートコマンドのエンドビットが検出されたとき、該エンドビットの検出を条件にデータシーケンサ148がABTステートに遷移し、その後、上記と同様にライト動作がアボートされる。
【0161】
図15に、第1の実施形態におけるカードコントローラ130のリード動作中のアボート処理の動作例のタイミング図を示す。
【0162】
図15では、コマンドシーケンサ142のステートやデータシーケンサ148のステートも示し、図15では図12又は図13の各ステートを分割した詳細なステートを示している。
【0163】
図15では、リード動作中に、アボートコマンドの発行指示があると(TG20)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、アボートタイミング生成回路143が、強制発行期間指定信号AbortRunをHレベルに設定する。
【0164】
その後、コマンド制御部140が、アボートコマンドの送出を開始すると共に、該アボートコマンドのエンドビットを監視する。アボートコマンドのエンドビットが検出されるまでに、FIFO135がフル状態になったとき(TG21)、データシーケンサ148は、ABTステートに遷移する。その後、データシーケンサ148は、MASK_R1b_BUSYステートに遷移する。
【0165】
データシーケンサ148は、MASK_R1b_BUSYステートに遷移して、メモリカード200の非ビジー状態の検出を開始し、メモリカード200の非ビジー状態が検出されると、Tran_Cmpステートに遷移する。Tran_Cmpステートにおいて、アボート処理の終了通知を制御マスタ126に対して行う。
【0166】
なお、FIFO135がフル状態となるタイミングが遅れて、先にアボートコマンドのエンドビットが検出されたとき、該エンドビットの検出を条件にデータシーケンサ148がABTステートに遷移し、その後、上記と同様にリード動作がアボートされる。
【0167】
このように、第1の実施形態では、ライト動作中又はリード動作中にアボートコマンドの発行指示があったとき、FIFO135がエンプティ状態か否か又はフル状態か否かにかかわらず、アボートコマンドを強制的に発行させる。そして、アボートコマンド送信中にFIFO135がエンプティ状態になったとき、アボートコマンド送信中にFIFO135がフル状態になったとき、或いは、該アボートコマンドのエンドビットを検出したときに、ライト転送又はリード転送をアボートする。
【0168】
2.2 第2の実施形態
第1の実施形態におけるカードコントローラ130は、アボートコマンドの発行指示があったときにバッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させていたが、本発明は、これに限定されるものではない。第2の実施形態におけるカードコントローラ130は、アボートコマンドのエンドビットを送信した時点で、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させる。
【0169】
第2の実施形態におけるカードコントローラ130の構成例は、図3に示す第1の実施形態におけるカードコントローラ130の構成例と同様であるため、図示を省略する。なお、コマンドエンドビット検出部314の機能は、例えばコマンドシーケンサ142又はアボートタイミング生成回路500によって実現される。
【0170】
但し、第2の実施形態におけるカードコントローラ130では、ライト動作中にバッファがエンプティの状態のとき、クロック制御部が転送クロックの出力を停止させる制御を行う場合に、コマンドエンドビット検出部によりアボートコマンドのエンドビットが検出されたとき、クロック制御部が、バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って、ライト動作中のアボートコマンドを強制的に発行させた後、該ライト動作をアボートする。また、第2の実施形態におけるカードコントローラ130では、リード動作中にバッファがフルの状態のとき、クロック制御部が転送クロックの出力を停止させる制御を行う場合に、コマンドエンドビット検出部によりアボートコマンドのエンドビットが検出されたとき、クロック制御部が、バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って、リード動作中のアボートコマンドを強制的に発行させた後、該リード動作をアボートする。
【0171】
こうすることで、メモリカード200がアボートコマンドを受け付けるまで、バッファがエンプティ状態又はフル状態になったときに転送クロックの出力が停止されるため、メモリカード200に無効なデータを送信するといったことがない。
【0172】
2.2.1 処理例
図16に、第2の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0173】
ここで、カードコントローラ130では、コマンド発行制御部312がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ130はメモリカード200に対するライト動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、ライト動作中にアボートコマンドを発行するものとする。
【0174】
この場合、まず、コマンドエンドビット検出部314が、ライト動作中にコマンド発行制御部312により発行されるアボートコマンドのエンドビットの有無を検出する(ステップS30)。
【0175】
ステップS30においてアボートコマンドのエンドビットが検出されなかったとき(ステップS30:N)、データ制御部320が、バッファ330がエンプティ状態か否かを判別する(ステップS31)。
【0176】
バッファ330がエンプティ状態ではないと判別されたとき(ステップS31:N)、データ制御部320は、ライト転送を行い(ステップS32)、ライト転送が終了ではないとき(ステップS33:N)、ステップS30に戻る。ステップS33においてライト転送が終了のとき(ステップS33:Y)、データ制御部320は、ライト転送完了通知を制御マスタ126に通知してライト転送を完了させ(ステップS34)、一連の処理を終了する(エンド)。
【0177】
一方、ステップS31において、バッファ330がエンプティ状態であると判別されたとき(ステップS31:Y)、クロック制御部300が転送クロックCLKの出力を停止させてライト転送を中断させて(ステップS35)、ステップS30に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0178】
ステップS30において、アボートコマンドのエンドビットが検出されたとき(ステップS30:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS36)、データ制御部320は、データ転送
をアボートして(ステップS37)、一連の処理を終了する(エンド)。
【0179】
このように、第2の実施形態によれば、ライト転送中にアボートコマンドのエンドビットが検出されたとき、バッファ330がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送をアボートすることができる。
【0180】
図17に、第2の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0181】
ここで、カードコントローラ130では、コマンド発行制御部312がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ130はメモリカード200に対するリード動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、リード動作中にアボートコマンドを発行するものとする。
【0182】
この場合、まず、コマンドエンドビット検出部314が、リード動作中にコマンド発行制御部312により発行されるアボートコマンドのエンドビットの有無を検出する(ステップS40)。
【0183】
ステップS40においてアボートコマンドのエンドビットが検出されなかったとき(ステップS40:N)、データ制御部320が、バッファ330がフル状態か否かを判別する(ステップS41)。
【0184】
バッファ330がフル状態ではないと判別されたとき(ステップS41:N)、データ制御部320は、リード転送を行い(ステップS42)、リード転送が終了ではないとき(ステップS43:N)、ステップS40に戻る。ステップS43においてリード転送が終了のとき(ステップS43:Y)、データ制御部320は、リード転送完了通知を制御マスタ126に通知してリード転送を完了させ(ステップS44)、一連の処理を終了する(エンド)。
【0185】
一方、ステップS41において、バッファ330がフル状態であると判別されたとき(ステップS41:Y)、クロック制御部300が転送クロックCLKの出力を停止させてリード転送を中断させて(ステップS45)、ステップS40に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0186】
ステップS40において、アボートコマンドのエンドビットが検出されたとき(ステップS40:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS46)、データ制御部320は、データ転送をアボートして(ステップS47)、一連の処理を終了する(エンド)。
【0187】
このように、第2の実施形態によれば、リード転送中にアボートコマンドのエンドビットが検出されたとき、バッファ330がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にリード転送をアボートすることができる。
【0188】
図18に、第2の実施形態におけるカードコントローラ130の動作例のタイミング図を示す。
【0189】
第2の実施形態では、ライト転送中にバッファ330がエンプティ状態又はリード転送中にバッファ330がフル状態になると、転送クロックCLKの出力が停止される。そして、バッファ330のエンプティ状態又はフル状態が解除されるまで待つ。このとき、アボートコマンドの発行指示があり、カードコントローラ130の内部で該アボートコマンドのエンドビットを検出したとき(Eビット検出信号)、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行する。
【0190】
従って、図18では、アボートコマンドのエンドビットの検出に基づいて転送クロックCLKの出力が再開されるタイミングから該アボートコマンドを送信完了するタイミングまでの期間が、転送クロックCLKの強制発行期間(アボートコマンドの強制発行期間)となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部300が、MMC規格等で規定された通り転送クロックCLKの出力を行う。
【0191】
2.2.2 ハードウェア構成例
このような第2の実施形態におけるカードコントローラ130の構成例は、図8に示す第1の実施形態におけるカードコントローラ130と同様の構成を有しているため図示を省略する。但し、第2の実施形態では、第1の実施形態に対し、エンドタイミング生成回路144が省略されると共にコマンド制御部140からデータ制御部146に対して強制発行期間指定信号AbortRunの供給が省略され、第1の実施形態に対してデータシーケンサの動作が異なる。
【0192】
図19に、第2の実施形態におけるカードコントローラ130の構成要部のブロック図を示す。
【0193】
図19において、図9と同一部分には同一符号を付し、適宜説明を省略する。図19では、アボートタイミング生成回路500が、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのエンドビットが検出されたときアボートタイミング信号AbortStopを出力する。第1の実施形態ではアボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunにより状態遷移したシーケンスが、第2の実施形態のデータシーケンサ510は、アボートタイミング信号AbortStopにより状態遷移する点が異なる。
【0194】
例えばデータシーケンサ510は、図13の状態遷移図において、WR_BL_DATステートST12で、アボートタイミング信号AbortStopが非アクティブでFIFO135がエンプティ状態になると、WR_FIFO_BUSYステートST60に遷移する(SQ60)。一方、WR_BL_DATステートST12において、アボートタイミング信号AbortStopがアクティブでFIFO135がエンプティ状態になると、データシーケンサ510は、ABTステートST50に遷移する(SQ52)。
【0195】
また、WR_FIFO_BUSYステートST60において、アボートタイミング信号AbortStopがアクティブとなると、データシーケンサ510は、ABTステートST50に遷移する(SQ62)。
【0196】
更に、RD_BL_DATステートST31において、アボートタイミング信号AbortStopが非アクティブでFIFO135がフル状態になると、データシーケンサ510は、RD_FIFO_BUSYステートST61に遷移する(SQ65)。一方、RD_BL_DATステートST31において、アボートタイミング信号AbortStopがアクティブでFIFO135がフル状態になると、データシーケンサ510は、ABTステートST50に遷移する(SQ54)。
【0197】
また、RD_FIFO_BUSYステートST61において、アボートタイミング信号AbortStopがアクティブとなると、データシーケンサ510は、ABTステートST50に遷移する(SQ67)。
【0198】
図20に、第2の実施形態におけるカードコントローラ130のライト動作中のアボート処理の動作例のタイミング図を示す。
【0199】
図20では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図20では図12又は図13の各ステートを分割した詳細なステートを示している。
【0200】
図20では、ライト動作中に、アボートコマンドの発行指示があると(TG30)、コマンドシーケンサ142は、SEND_CMDステートに遷移する。そして、該アボートコマンドのエンドビットが検出される前に、該アボートコマンドの送信中に、FIFO135がエンプティ状態になると(TG31)、データシーケンサ510は、WR_BL_DATステートからWR_FIFO_BUSYステートに遷移し、クロックイネーブルClockEnableが非アクティブとなり転送クロックCLKが停止する。
【0201】
その後、FIFO135がエンプティ状態でなくなると、データシーケンサ510は、WR_BL_DATステートに遷移する。ここで、アボートコマンドのエンドビットが検出されると、アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG32)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。
【0202】
図21に、第2の実施形態におけるカードコントローラ130のリード動作中のアボート処理の動作例のタイミング図を示す。
【0203】
図21では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図21では図12又は図13の各ステートを分割した詳細なステートを示している。
【0204】
図21では、リード動作中に、アボートコマンドの発行指示があると(TG40)、コマンドシーケンサ142は、SEND_CMDステートに遷移する。そして、該アボートコマンドのエンドビットが検出される前に、該アボートコマンドの送信中に、FIFO135がフル状態になると(TG41)、データシーケンサ510は、RD_BL_DATステートからRD_FIFO_BUSYステートに遷移し、クロックイネーブルClockEnableが非アクティブとなり転送クロックCLKが停止する。
【0205】
その後、FIFO135がフル状態でなくなると、データシーケンサ510は、RD_BL_DATステートに遷移する。ここで、アボートコマンドのエンドビットが検出されると、アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG42)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。
【0206】
2.3 第3の実施形態
また、本発明は第1又は第2の実施形態に係るものに限定されるものではない。第3の実施形態におけるカードコントローラ130は、アボートコマンドのスタートビットを送信した時点で、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させる。
【0207】
図22に、第3の実施形態におけるカードコントローラ130の構成例のブロック図を
示す。図22において、図3と同一部分には同一符号を付し、適宜説明を省略する。
【0208】
カードコントローラ130は、クロック制御部300と、コマンド制御部310と、データ制御部320と、バッファ330とを含む。
【0209】
コマンド制御部310は、コマンドラインを介してメモリカード200にコマンドを発行すると共に、該コマンドに対応するレスポンスの受信制御を行う。このようなコマンド制御部310は、コマンド発行制御部312と、コマンドスタートビット検出部318とを含む。
【0210】
コマンドスタートビット検出部318は、コマンド発行制御部312により発行されるコマンド(特にアボートコマンド)のスタートビットを検出する。より具体的には、コマンドスタートビット検出部318は、コマンド発行制御部312により発行されたライトコマンドにより開始されるライト動作中又はリードコマンドにより開始されるリード動作中に、コマンド発行制御部312によりアボートコマンドが発行されたとき、図4(A)に示すようなアボートコマンドのスタートビットを検出する。
【0211】
このようなカードコントローラ130では、ライト動作中に、アボートコマンドのスタートビットが検出されたとき、バッファがエンプティ状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。また、カードコントローラ130では、リード動作中に、アボートコマンドのスタートビットが検出されたとき、バッファがフル状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。
【0212】
そして、強制的に発行されたアボートコマンドのスタートビットがコマンドスタートビット検出部318により検出されたとき、カードコントローラ130は、ライト動作又はリード動作をアボートする。
【0213】
こうすることで、確実にデータ転送をアボートすることができるので、例えば制御マスタ126で実行される上位アプリケーションプログラムでは、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。また、上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止してメモリカード200に対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0214】
2.3.1 処理例
図23に、第3の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0215】
ここで、カードコントローラ130では、コマンド発行制御部312がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ130はメモリカード200に対するライト動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、ライト動作中にアボートコマンドを発行するものとする。
【0216】
この場合、まず、コマンドスタートビット検出部318が、ライト動作中にコマンド発行制御部312により発行されるアボートコマンドのスタートビットの有無を検出する(ステップS50)。
【0217】
ステップS50においてアボートコマンドのスタートビットが検出されなかったとき(ステップS50:N)、データ制御部320が、バッファ330がエンプティ状態か否かを判別する(ステップS51)。
【0218】
バッファ330がエンプティ状態ではないと判別されたとき(ステップS51:N)、データ制御部320は、ライト転送を行い(ステップS52)、ライト転送が終了ではないとき(ステップS53:N)、ステップS50に戻る。ステップS53においてライト転送が終了のとき(ステップS53:Y)、データ制御部320は、ライト転送完了通知を制御マスタ126に通知してライト転送を完了させ(ステップS54)、一連の処理を終了する(エンド)。
【0219】
一方、ステップS51において、バッファ330がエンプティ状態であると判別されたとき(ステップS51:Y)、クロック制御部300が転送クロックCLKの出力を停止させてライト転送を中断させて(ステップS55)、ステップS50に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0220】
ステップS50において、アボートコマンドのエンドビットが検出されたとき(ステップS50:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS56)、データ制御部320は、データ転送をアボートして(ステップS57)、一連の処理を終了する(エンド)。
【0221】
このように、第3の実施形態によれば、ライト転送中にアボートコマンドのスタートビットが検出されたとき、バッファ330がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送をアボートすることができる。
【0222】
図24に、第3の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0223】
ここで、カードコントローラ130では、コマンド発行制御部312がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ130はメモリカード200に対するリード動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、リード動作中にアボートコマンドを発行するものとする。
【0224】
この場合、まず、コマンドスタートビット検出部318が、リード動作中にコマンド発行制御部312により発行されるアボートコマンドのスタートビットの有無を検出する(ステップS60)。
【0225】
ステップS60においてアボートコマンドのスタートビットが検出されなかったとき(ステップS60:N)、データ制御部320が、バッファ330がフル状態か否かを判別する(ステップS61)。
【0226】
バッファ330がフル状態ではないと判別されたとき(ステップS61:N)、データ制御部320は、リード転送を行い(ステップS62)、リード転送が終了ではないとき(ステップS63:N)、ステップS60に戻る。ステップS63においてリード転送が終了のとき(ステップS63:Y)、データ制御部320は、リード転送完了通知を制御マスタ126に通知してリード転送を完了させ(ステップS64)、一連の処理を終了する(エンド)。
【0227】
一方、ステップS61において、バッファ330がフル状態であると判別されたとき(ステップS61:Y)、クロック制御部300が転送クロックCLKの出力を停止させてリード転送を中断させて(ステップS65)、ステップS60に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0228】
ステップS60において、アボートコマンドのスタートビットが検出されたとき(ステップS60:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS66)、データ制御部320は、データ転送をアボートして(ステップS67)、一連の処理を終了する(エンド)。
【0229】
このように、第3の実施形態によれば、リード転送中にアボートコマンドのスタートビットが検出されたとき、バッファ330がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にリード転送をアボートすることができる。
【0230】
図25に、第3の実施形態におけるカードコントローラ130の動作例のタイミング図を示す。
【0231】
第3の実施形態では、ライト転送又はリード転送中に、アボートコマンドのスタートビットが検出されると、カードコントローラ130はメモリカード200に対してアボートコマンドの発行を行う。このとき、バッファ330がエンプティ状態か否かにかかわらず、転送クロックCLKを強制的に出力させる。そして、アボートコマンドのスタートビットの検出を条件に、ライト転送又はリード転送をアボートする。
【0232】
従って、図25では、アボートコマンドのスタートビットの検出タイミング(送信タイミング)から該アボートコマンドのエンドビットの検出タイミング(送信タイミング)までの期間が、転送クロックCLKの強制発行期間(アボートコマンドの強制発行期間)となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部300が、MMC規格等で規定された通り転送クロックCLKの出力を行う。
【0233】
2.3.2 ハードウェア構成例
このような第3の実施形態におけるカードコントローラ130の構成例は、図8に示す第1の実施形態におけるカードコントローラ130と同様の構成を有しているため図示を省略する。但し、第3の実施形態では、第1の実施形態に対し、エンドタイミング生成回路144が省略されると共にコマンド制御部140からデータ制御部146に対して強制発行期間指定信号AbortRunの供給が省略され、第1の実施形態に対してデータシーケンサの動作が異なる。
【0234】
また、第3の実施形態におけるカードコントローラ130の構成要部も、図19に示す第2の実施形態におけるカードコントローラ130の構成要部と同様の構成であるため、図示を省略する。なお、コマンドスタートビット検出部318の機能は、例えばコマンドシーケンサ142又はアボートタイミング生成回路500によって実現される。
【0235】
但し、第3の実施形態では、アボートタイミング生成回路500が、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのスタートビットが検出されたときアボートタイミング信号AbortStopを出力する。第1の実施形態ではアボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunにより状態遷移したシーケンスが、第3の実施形態のデータシーケンサ510は、アボートタイミング信号AbortStopにより状態遷移する点が異なる。この点、アボートコマンドのエンドビットを条件に状態遷移する第2の実施形態のデータシーケンサ510の状態遷移とは、アボートコマンドのスタートビットを条件に状態遷移する点が異なるのみである。従って、データシーケンサ510の動作説明図の図示も省略する。
【0236】
図26に、第3の実施形態におけるカードコントローラ130のライト動作中のアボート処理の動作例のタイミング図を示す。
【0237】
図26では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図26では図12又は図13の各ステートを分割した詳細なステートを示している。
【0238】
図26では、ライト動作中に、アボートコマンドの発行指示があると(TG50)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、この発行指示がアボートコマンドのスタートビットであると判断して、アボートタイミング信号AbortStopがアクティブとなる。
【0239】
アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG51)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。これ以降、FIFO135がエンプティ状態になったとしても、転送クロックCLKが強制発行される。
【0240】
図27に、第3の実施形態におけるカードコントローラ130のリード動作中のアボート処理の動作例のタイミング図を示す。
【0241】
図27では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図27では図12又は図13の各ステートを分割した詳細なステートを示している。
【0242】
図27では、リード動作中に、アボートコマンドの発行指示があると(TG60)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、この発行指示がアボートコマンドのスタートビットであると判断して、アボートタイミング信号AbortStopがアクティブとなる。
【0243】
アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG61)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。これ以降、FIFO135がフル状態になったとしても、転送クロックCLKが強制発行される。
【0244】
3. 電子機器
次に、第1〜第3の実施形態のいずれかにおけるカードコントローラが適用されるホストシステムを含む電子機器の構成例を示す。
【0245】
図28に、本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図を示す。
【0246】
図28において、図1と同一部分には同一符号を付し、適宜説明を省略する。
【0247】
電子機器10は、電荷結合素子(Charge Coupled Device:以下、CCD)イメージセンサ800、AD変換器810、メモリ820、クロック生成回路830、ホストシステム100、ソケット(スロット、メモリ装着部、カード装着部、メモリカード装着部、記憶デバイス装着部)840を含む。
【0248】
CCDイメージセンサ800は、複数の受光素子を有し、各受光素子に光が入射することにより発生した電荷を読み出して、画像を電気信号に変換する。CCDイメージセンサ800によって電気信号に変換された画像データは、AD変換器810によりデジタル信号に変換された後、メモリ820にバッファリングされる。
【0249】
クロック生成回路830は、電子機器10の基本クロックやホストシステム100の基本クロックを生成する。
【0250】
図28のプログラムメモリ120は、図1のメモリ120として機能する。
【0251】
ソケット840には、メモリカード200が挿抜される。メモリカード200がソケット840に挿入された状態で、カードバス20を介してカードコントローラ130とメモリカード200との間でMMC規格に従ったアクセスが行われる。
【0252】
ホストシステム100の制御により、メモリ820に蓄えられた画像データをメモリカード200に書き込んだり、メモリカード200から画像データを読み出してメモリ820に蓄積させたりできる。
【0253】
図28のような電子機器10によれば、ホストシステム100(カードコントローラ130)の制御及び構成が簡素化され、低消費電力化及び低コスト化が実現される。
【0254】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。本実施形態におけるメモリカードは、フラッシュメモリカードに限定されるものではない。本実施形態におけるメモリカードに代えて、I/Oデバイス、HDD装置、DVD装置、又は光ディスク装置であってもよい。
【0255】
更に、本発明を適用できるコマンドは上述の実施形態において説明したものに限定されるものではなく、例えばMMC規格と同様の思想に基づく規格やMMC規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンド、例えばCE−ATA規格と同様の思想に基づく規格やCE−ATA規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンドにも当然本発明を適用できる。
【0256】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【0257】
【図1】本実施形態における情報処理装置が適用された電子機器の構成例のブロック図。
【図2】図1のメモリカードの構成例のブロック図。
【図3】第1の実施形態におけるカードコントローラの構成例のブロック図。
【図4】図4(A)はコマンド制御部により送信されるコマンドの説明図。図4(B)はコマンド制御部により受信されるレスポンスの説明図。
【図5】第1の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図6】第1の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図7】第1の実施形態におけるカードコントローラの動作例のタイミング図。
【図8】図1又は図3のカードコントローラのハードウェア構成例のブロック図。
【図9】図8のカードコントローラの構成要部のブロック図。
【図10】図9のクロックイネーブル生成回路の構成例の回路図。
【図11】図9のドライバ部の構成の概要を示す図。
【図12】図9のコマンドシーケンサの動作説明図。
【図13】図9のデータシーケンサの動作説明図。
【図14】第1の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図15】第1の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図16】第2の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図17】第2の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図18】第2の実施形態におけるカードコントローラの動作例のタイミング図。
【図19】第2の実施形態におけるカードコントローラの構成要部のブロック図。
【図20】第2の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図21】第2の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図22】第3の実施形態におけるカードコントローラの構成例のブロック図。
【図23】第3の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図24】第3の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図25】第3の実施形態におけるカードコントローラの動作例のタイミング図。
【図26】第3の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図27】第3の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図28】本実施形態における電子機器の構成例のブロック図。
【符号の説明】
【0258】
10 電子機器、 20 カードバス、 100 ホストシステム、 110 CPU、120、820 メモリ、 122 システムバス、 126 制御マスタ、
130 カードコントローラ、 132 制御I/F回路、
134 FIFOI/F回路、 136 コントローラ制御レジスタ部、
138 クロック制御部、 140、310 コマンド制御部、
142 コマンドシーケンサ、 143、500 アボートタイミング生成回路、
144 エンドタイミング生成回路、 146、320 データ制御部、
148、510 データシーケンサ、 149、330 ビジー検出部、
150 ドライバ部、 200 メモリカード、 210 カードI/F回路、
212 PLL回路、 220 カードI/F制御回路、
230 カード制御レジスタ部、 240 メモリI/F回路、
250 メモリコア部、 300 クロック制御部、 312 コマンド発行制御部、
314 コマンドエンドビット検出部、 318 コマンドスタートビット検出部、
400、830 クロック生成回路、 410 クロックイネーブル生成回路、
800 CCDイメージセンサ、 810 AD変換器、 840 ソケット
【技術分野】
【0001】
本発明は、記憶デバイスコントローラ、情報処理装置、電子機器及びアボート制御方法等に関する。
【背景技術】
【0002】
近年、パーソナルコンピュータやその周辺機器(例えばプリンタ装置、スキャナ装置又は複合機)に限らず、携帯電話機、携帯情報端末(Personal Digital Assistant:PDA)やオーディオプレーヤ等の携帯型の情報機器、ロボット装置、デジタルカメラ、ビデオカメラ、全地球測位システム(Global Positioning System:GPS)装置、テレビ受信装置、プロジェクタ等の電子機器に、データストレージ用途にフラッシュメモリカードが使用される機会が多くなっている。
【0003】
フラッシュメモリカードには、その用途に応じて、種々の規格、バージョンが規定されている。例えば動画データ、静止画データ又は音楽データを携帯するために可搬性に優れ、大容量のフラッシュメモリとして、MMC(MultiMediaCard)規格等に準拠したフラッシュメモリカードがある。また、例えば携帯機器や家庭用電化製品の小型化により小型のコネクタ形状や高速なデータ転送が可能なHDD装置として、CE−ATA(Consumer Electronics-AT Attachment)規格に準拠した記憶装置がある。このようなフラッシュメモリカード等は、例えば特許文献1に開示されている。
【0004】
このようなフラッシュメモリカード等にアクセスするためには、転送クロックをフラッシュメモリカードに供給してその規格で規定されたコマンド(制御コマンド)を発行する必要がある。そして、該フラッシュメモリに対し該転送クロックに同期してライトデータを入力させたりリードデータを出力させたりする。この転送クロックを停止させることで、フラッシュメモリカードに対するデータ転送を停止させることができ、データ転送の低消費電力化を図ることができる。また、フラッシュメモリカードは、ビジー状態であることを通知することで、コマンドに対応したライトデータの出力停止を要求できる。このように、市場に広く流通するフラッシュメモリカードにアクセスする場合は、その規格で規定された仕様に合わせてアクセスする必要がある。
【特許文献1】特開2006−139556号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、フラッシュメモリカードにアクセスするコントローラ側では、ライトデータやリードデータをバッファリングするためのバッファを備えることで、ライト転送やリード転送を継続させることができる。従って、転送クロックに同期してライト転送やリード転送が行われる場合には、バッファがエンプティ状態になったときには有効なライトデータが存在しないため、転送クロックを停止させてライト転送を一時的に停止させることが行われる。同様に、バッファがフル状態になったときにはこれ以上バッファにリードデータを格納できないため、転送クロックを停止させてリード転送を一時的に停止させることが行われる。
【0006】
一方、フラッシュメモリカード等にアクセスするために用意されているコマンドの中で、データ転送のアボートを指示するアボートコマンドが規定されている。フラッシュメモリカード等にアクセスするコントローラ側では、ライト動作中にアボートコマンドを発行すると、ライトデータの出力を停止させて通常のシーケンスに戻る必要がある。また、コントローラ側では、リード動作中にアボートコマンドを発行すると、リードデータの受け付けを停止して通常のシーケンスに戻る必要がある。
【0007】
しかしながら、上述のバッファがエンプティ状態又はフル状態のときにアボートコマンドが発行されたとき、転送クロックの供給が停止されるためアボートコマンド自体が送信できない事態に陥る場合がある。この場合、アボートコマンドが送信できず、且つ次のデータ転送にも移行できない。このような問題は、特許文献1に開示された技術であっても同様である。
【0008】
本発明の幾つかの態様によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラ、情報処理装置及び電子機器を提供できる。
【課題を解決するための手段】
【0009】
本発明は、転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させる記憶デバイスコントローラに関係する。
【0010】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させる記憶デバイスコントローラに関係する。
【0011】
また本発明に係る記憶デバイスコントローラでは、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
強制的に発行された前記アボートコマンドのエンドビットが前記コマンドエンドビット検出部により検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることができる。
【0012】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドの発行指示があったとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。更に、例えば上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止して記憶デバイスに対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0013】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御部が、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【0014】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートする記憶デバイスコントローラに関係する。
【0015】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドのエンドビットが検出されたとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、記憶デバイスがアボートコマンドを受け付けるまで、バッファがエンプティ状態又はフル状態になったときに転送クロックの出力が停止されるため、記憶デバイスに無効なデータを送信するといったことがない。
【0016】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【0017】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【0018】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドのスタートビットが検出されたとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。更に、例えば上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止して記憶デバイスに対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0019】
また本発明は、
上記のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対して前記コマンドの発行を制御する制御マスタと、
を含む情報処理装置に関係する。
【0020】
本発明によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラが適用された情報処理装置を提供できる。
【0021】
また本発明は、
前記記憶デバイスが挿抜される記憶デバイス装着部と、
上記記載の情報処理装置と、
を含む電子機器に関係する。
【0022】
本発明によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる情報処理装置が適用された電子機器を提供できる。
【0023】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させるアボート制御方法に関係する。
【0024】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させるアボート制御方法に関係する。
【0025】
また本発明に係るアボート制御方法では、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップを含み、
強制的に発行された前記アボートコマンドのエンドビットが検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることができる。
【0026】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御ステップが、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【0027】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートするアボート制御方法に関係する。
【0028】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【0029】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【発明を実施するための最良の形態】
【0030】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【0031】
1. 情報処理装置
以下の実施形態では、記憶デバイスとしてのメモリカードにアクセスするためのカードコントローラ(記憶デバイスコントローラ)が情報処理装置としてのホストシステムに適用されているものとする。
【0032】
図1に、本実施形態における情報処理装置が適用された電子機器の構成例のブロック図を示す。
【0033】
図1の構成を有する電子機器としては、例えばパーソナルコンピュータ、その周辺機器(例えばプリンタ装置、スキャナ装置又は複合機)、携帯電話機、携帯情報端末、オーディオプレーヤ、ロボット装置、デジタルカメラ、ビデオカメラ、GPS装置、テレビ受信装置、プロジェクタ等がある。
【0034】
電子機器10は、情報処理装置としてのホストシステム100と、メモリカード(広義には記憶デバイス)200とを含み、ホストシステム100とメモリカード200とがカードバス20を介して接続されている。電子機器10では、メモリカード200に対する制御コマンドを発行することにより、メモリカード200にデータを書き込んだり、メモリカード200からデータを読み出したりすることができる。メモリカード200は、例えばフラッシュメモリカード、I/OデバイスやHDD装置であってもよい。
【0035】
ホストシステム100は、制御マスタ126と、カードコントローラ(記憶デバイスコントローラ、メモリコントローラ)130とを含む。制御マスタ126は、中央演算処理装置(Central Processing Unit:CPU)110、メモリ120を含む。CPU110、メモリ120及びカードコントローラ130は、システムバス122を介して接続されている。従って、CPU110は、システムバス122を介してメモリ120又はカードコントローラ130にアクセスできる。そして、CPU110が、メモリ120に格納されたプログラムを読み込んで該プログラムに対応した処理を実行する。
【0036】
カードコントローラ130とメモリカード200とは、カードバス20を介して接続され、CPU110が、カードコントローラ130からメモリカード200に対して発行する制御コマンドを生成する制御を行う。このような制御コマンドとしては、ライトコマンド、リードコマンド、アボートコマンド、リセットコマンド、デセレクトコマンド等がある。ライトコマンドは、カードコントローラ130がメモリカード200にライトデータを書き込むライト動作を行うためのコマンドである。リードコマンドは、カードコントローラ130がメモリカード200からリードデータを読み出すリード動作を行うためのコマンドである。アボートコマンドは、メモリカード200に対するライト動作又はリード動作のアボートを指示するためのコマンドである。リセットコマンドは、電源立ち上げ時や例えばライト動作又はリード動作中等の通常動作中にメモリカード200を初期化するためのコマンドである。デセレクトコマンドは、電源オフ直前や例えばライト動作又はリード動作中等の通常動作中にメモリカード200を非選択状態とするためのコマンドである。メモリカード200を「デバイス」と定義すると、カードコントローラ130はホスト側を制御する「ホストコントローラ」と定義することができる。
【0037】
カードバス20は、転送クロックCLKが伝送されるクロックライン、制御コマンドCMD及びレスポンスが伝送されるコマンドライン、例えば4ビット(又は8ビット)の転送データDAT0−DAT3が伝送されるデータラインを有する。カードコントローラ130が、転送クロックCLKに同期してコマンドCMDを発行する。そして、転送クロックCLKに同期して例えば4ビットの転送データDAT0−DAT3が送受信される。また、コマンドCMDの種類によっては、メモリカード200が制御コマンドCMDに対するレスポンスとして、例えばコマンドラインを用いてレスポンスを返すことができる。
【0038】
ここで、本実施形態のカードコントローラ130は、例えばMMC規格等のメモリーカード規格に準拠したメモリーカードや、CE−ATA規格に準拠したHDD装置等に適用できる。
【0039】
以下では、メモリカード200がMMC規格に準拠したフラッシュメモリカードであり、カードバス20にはMMC規格に準拠したシーケンスで制御コマンドやレスポンス、転送データの送受信が行われる場合を例に説明する。
【0040】
このとき、カードバス20のクロックライン、コマンドライン及びデータラインのうち双方向の信号ラインはプルアップされてもよい。例えば、コマンドライン及びデータラインが双方向の信号ラインである場合には、コマンドライン及びデータラインの各ラインはプルアップされてもよい。具体的には、コマンドラインは、所与の高電位側電源線との間にプルアップ抵抗を介してプルアップ接続されてもよく、同様に、データラインの各ラインは、所与の高電位側電源線との間にそれぞれプルアップ抵抗を介してプルアップ接続されてもよい。なお、クロックラインは、カードコントローラ130側の図示しないクロックドライバによりプッシュプル動作で駆動される。このクロックラインも、他のラインと同様にプルアップ接続されてもよい。
【0041】
MMC規格のメモリカード200にアクセスする場合、データ転送が不要な期間に転送クロックCLKを停止させることで消費電力を削減できる。その一方、転送クロックCLKを停止させることで、カードコントローラ130からのコマンドの送出、メモリカード200からのレスポンスの受信、データラインを介してデータの送受信ができなくなる。一般的には、カードコントローラ130が内蔵するバッファがエンプティ状態になったとき転送ロックCLKを停止させてライト動作を中断させたり、該バッファがフル状態になったとき転送ロックを停止させてリード動作を中断させたりする。
【0042】
図2に、図1のメモリカード200の構成例のブロック図を示す。
【0043】
メモリカード200は、カードI/F回路210、PLL回路212、カードI/F制御回路220、カード制御レジスタ部230、メモリI/F回路240、メモリコア部250を含む。
【0044】
カードI/F回路210は、カードバス20を伝送される信号のインタフェース処理を行う。カードI/F制御回路220は、カードI/F回路210を制御してカードバス20に信号を出力する制御を行ったり、カードバス20からの信号を入力する制御を行ったりする。カードI/F回路210は、転送クロックCLKに同期して入力された転送データやコマンドデータを図示しないバッファにバッファリングしたり、該バッファにバッファリングされた転送データやレスポンスデータを転送クロックCLKに同期して出力したりする。
【0045】
PLL回路212は、図示しない発振器からの発振出力を逓倍して、転送クロックCLKとは異なる内部クロックを生成する。PLL回路212によって生成された内部ブロックは、メモリカード200の各部に供給され、メモリカード200は内部クロックに同期して動作する。より具体的には、カードI/F回路210にバッファリングされたデータは、内部クロックに同期して読み出されてメモリカード200の内部に取り込まれる。また、メモリカード200の内部から出力されるデータは、内部クロックに同期してカードI/F回路210でバッファリングされ、転送クロックCLKに同期して外部に出力される。従って、メモリカード200は、転送クロックCLKの供給が停止されたとしても、メモリカード200の内部で、内部クロックに同期してメモリにアクセスできるようになっている。即ち、メモリカード200は、転送クロックに同期して入力されたコマンドに対しデータのアクセスをその内部クロックに同期して行うことができる。
【0046】
カード制御レジスタ部230は、複数の制御レジスタを有する。例えば、カード制御レジスタ部230は、動作条件レジスタ(Operation Conditions Resister:OCR)、カード識別レジスタ(Card IDentification register:CID)、カード特性データレジスタ(Card-Specific Data register:CSD)、相対カードアドレスレジスタ(Relative Card Address register:RCA)、ドライバステージレジスタ(Driver Stage Register:DSR)等を含む。
【0047】
カードI/F制御回路220は、カード制御レジスタ部230の設定データに基づいてメモリカード200の各部を制御すると共に、その制御結果をカード制御レジスタ部230に格納する制御を行う。
【0048】
メモリI/F回路240は、カードI/F制御回路220の制御により、メモリコア部250のメモリ素子にデータを書き込んだり、メモリコア部250のメモリ素子からデータを読み出したりする制御を行う。
【0049】
メモリコア部250は、複数のメモリ素子を有する。メモリI/F回路240は、予め割り当てられたアドレスに対応したメモリ素子からデータを読み出したり、該アドレスに対応したメモリ素子にデータを書き込んだりすることができる。
【0050】
カードコントローラ130のメモリカード200に対するライト動作中には、カードコントローラ130からのライトデータがカードI/F回路210においてバッファリングされる。そして、カードI/F回路210にバッファリングされたデータは、内部クロックに同期して読み出されてメモリI/F回路240を介してメモリコア部250に書き込まれる。このようなメモリコア部250へのデータ書き込み期間中は、カードコントローラ130が次のライトデータを入力してこないように、カードI/F回路210はカードコントローラ130に対してビジー状態を通知する。カードI/F回路210は、転送データが伝送されるデータラインのうち転送データDAT0が伝送されるデータラインをLレベルに駆動することで、カードコントローラ130にビジー状態を通知する。
【0051】
メモリカード200は、カードコントローラ130からR1bレスポンスを伴うコマンドを受信したときも、同様にカードコントローラ130に対してビジー状態を通知する。
【0052】
2. カードコントローラ(記憶デバイスコントローラ)
図1のカードコントローラ130は、ライト転送中にバッファがエンプティ状態でアボートコマンドを発行する場合であっても、以下のように正常にアボートコマンドを発行してアボート処理を行うことができる。また、カードコントローラ130は、リード転送中にバッファがフル状態でアボートコマンドを発行する場合であっても、以下のように正常にアボートコマンドを発行してアボート処理を行うことができる。
【0053】
2.1 第1の実施形態
図3に、第1の実施形態におけるカードコントローラ130の構成例のブロック図を示す。図3において、図1と同一部分には同一符号を付し、適宜説明を省略する。
【0054】
カードコントローラ130は、クロック制御部300と、コマンド制御部310と、データ制御部320と、バッファ330とを含む。
【0055】
クロック制御部300は、カードバス20のクロックラインの出力制御を行う。コマンド制御部310は、カードバス20のコマンドラインの入出力制御を行う。データ制御部320は、カードバス20のデータラインの入出力制御を行う。
【0056】
クロック制御部300は、コマンドや転送データが同期して送受信するための同期クロックである転送クロックCLKを供給したり、供給を停止したりする。クロック制御部300が転送クロックCLKの供給を停止することで、データの転送を中断させることできるが、コマンドがレスポンスの送受信も停止する。
【0057】
またクロック制御部300は、バッファ330の蓄積状況に応じて、メモリカード200への転送クロックCLKの出力制御を行う。即ち、クロック制御部300は、バッファ330がエンプティ状態又はフル状態のときに本来であれば転送クロックCLKの供給を停止すべき場合に、敢えて該転送クロックCLKの供給を続けてアボートコマンドの送信を実現できるようになっている。
【0058】
コマンド制御部310は、コマンドラインを介してメモリカード200にコマンドを発行すると共に、該コマンドに対応するレスポンスの受信制御を行う。このようなコマンド制御部310は、コマンド発行制御部312と、コマンドエンドビット検出部314とを含む。
【0059】
図4(A)に、コマンド制御部310により送信されるコマンドの説明図を示す。また、図4(B)に、コマンド制御部310により受信されるレスポンスの説明図を示す。
【0060】
コマンドは、スタートビット「S」が「0」、エンドビット「E」が「1」で挟まれた所定ビットのコマンドデータである。図4(A)に示すようなコマンドが、コマンドラインを介して送信される。
【0061】
コマンド発行制御部312は、図4(A)に示すようなフォーマットのコマンドを発行する制御を行う。より具体的には、コマンド発行制御部312は、メモリカード200に対してライトデータを書き込むためのライトコマンド、又は該ライトコマンドによるライト動作のアボートを指示するアボートコマンドを発行する制御を行う。また、コマンド発行制御部312は、メモリカード200からのリードデータを読み出すためのリードコマンド、リセットコマンド、デセレクトコマンド又は該リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行する。
【0062】
コマンドエンドビット検出部314は、コマンド発行制御部312により発行されるコマンド(特にアボートコマンド)のエンドビットを検出する。より具体的には、コマンドエンドビット検出部314は、コマンド発行制御部312により発行されたライトコマンドにより開始されるライト動作中又はリードコマンドにより開始されるリード動作中に、コマンド発行制御部312によりアボートコマンドが発行されたとき、図4(A)に示すようなアボートコマンドのエンドビットを検出する。
【0063】
レスポンスは、スタートビット「S」が「0」、エンドビット「E」が「1」で挟まれた所定ビットのレスポンスデータである。図4(B)に示すようなレスポンスが、コマンドラインを介して受信される。
【0064】
図3において、データ制御部320は、データラインを介して転送データを送信又は受信する制御を行う。なお、データラインのうち転送データDAT0が送受信されるデータラインが、メモリカード200により「L」レベルに駆動されることで、カードコントローラ130は、メモリカード200がビジー状態であることを通知される。このデータ制御部320は、更に、転送データが伝送されるデータラインの電位に基づいてメモリカード200がビジー状態か否かを検出することができる。
【0065】
バッファ330には、制御マスタ126のメモリ120からメモリカード200に転送されるライトデータがバッファリングされる。そして、カードコントローラ130とメモリカード200との間で行われるライト転送において、バッファ330からライトデータが読み出されてメモリカード200に出力される。また、バッファ330には、メモリカード200から転送されてくるリードデータがバッファリングされる。そして、カードコントローラ130とメモリカード200との間で行われるリード転送において、バッファ330からリードデータが読み出された制御マスタ126のメモリ120に格納される。
【0066】
このようなカードコントローラ130では、ライト動作中に、制御マスタ126で実行される上位アプリケーションプログラムからアボートコマンドの発行指示があったとき、バッファがエンプティ状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。また、カードコントローラ130では、リード動作中に、制御マスタ126で実行される上位アプリケーションプログラムからアボートコマンドの発行指示があったとき、バッファがフル状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。
【0067】
そして、ライト動作中に、強制的に発行されたアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファ330がエンプティ状態になったとき、カードコントローラ130は、ライト動作をアボートする。また、リード動作中に、強制的に発行されたアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファ330がフル状態になったとき、カードコントローラ130は、リード動作をアボートする。ここで、ライト動作(ライト転送)をアボートするとは、ライトデータをメモリカード200に出力しないことを意味する。また、リード動作(リード転送)をアボートするとは、メモリカード200からのリードデータを取り込まないことを意味する。
【0068】
こうすることで、確実にデータ転送をアボートすることができるので、例えば制御マスタ126で実行される上位アプリケーションプログラムでは、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。また、上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止してメモリカード200に対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0069】
図3において、コマンド制御部310及びデータ制御部320は、アクセス制御部(書き込み制御部、リード制御部)として機能する。即ち、このアクセス制御部は、メモリカード200に対してコマンドを発行し、転送クロックに同期してメモリカード200にアクセスする制御を行う。例えばアクセス制御部がライトコマンドを発行する場合、転送クロックに同期してライトデータを出力してメモリカード200に該ライトデータの書き込み制御を行う。
【0070】
2.1.1 処理例
図5に、第1の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0071】
ここで、カードコントローラ130では、コマンド発行制御部312がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ130はメモリカード200に対するライト動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、ライト動作中にアボートコマンドを発行するものとする。
【0072】
この場合、まず、コマンドエンドビット検出部314は、制御マスタ126で実行される上位アプリケーションプログラムからのアボートコマンドの発行指示により発行されるアボートコマンドのエンドビットを監視する(ステップS10)。
【0073】
ステップS10においてアボートコマンドのエンドビットが検出されないとき(ステップS10:N)、コマンド制御部310が、バッファ330がエンプティ状態で、且つ該アボートコマンドが送信中であるか否かを判別する(ステップS11)。
【0074】
バッファ330がエンプティ状態ではないとき(ステップS11:N、ステップS12:N)、データ制御部320は、ライト転送を行い(ステップS13)、ライト転送が終了ではないとき(ステップS14:N)、ステップS10に戻る。ステップS14においてライト転送が終了のとき(ステップS14:Y)、データ制御部320は、ライト転送完了通知を制御マスタ126に通知してライト転送を完了させ(ステップS15)、一連の処理を終了する(エンド)。
【0075】
ステップS11において、バッファ330がエンプティ状態であるが、アボートコマンド送信中であることが判別されたとき(ステップS11:N、ステップS12:Y)、クロック制御部300が転送クロックCLKの出力を停止させてライト転送を中断させて(ステップS16)、ステップS10に戻る。
【0076】
ステップS11において、バッファ330がエンプティ状態で、且つアボートコマンドが送信中であると判別されたとき(ステップS11:Y)、クロック制御部300が強制的に転送クロックを出力してコマンド発行制御部312が該アボートコマンドを強制発行し(ステップS17)、その後、データ制御部320は、データ転送をアボートして(ステップS18)、一連の処理を終了する(エンド)。
【0077】
このように、第1の実施形態によれば、ライト転送中にアボートコマンドの発行指示があったとき、バッファ330がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させる。そして、強制発行されるアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファがエンプティ状態になったとき、ライト転送がアボートされるので、確実にライト転送をアボートすることができる。
【0078】
図6に、第1の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0079】
ここで、カードコントローラ130では、コマンド発行制御部312がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ130はメモリカード200に対するリード動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、リード動作中にアボートコマンドを発行するものとする。
【0080】
この場合、まず、コマンドエンドビット検出部314は、制御マスタ126で実行される上位アプリケーションプログラムからのアボートコマンドの発行指示により発行されるアボートコマンドのエンドビットを監視する(ステップS20)。
【0081】
ステップS20においてアボートコマンドのエンドビットが検出されないとき(ステップS20:N)、コマンド制御部310が、バッファ330がフル状態で、且つ該アボートコマンドが送信中であるか否かを判別する(ステップS21)。
【0082】
バッファ330がフル状態ではないとき(ステップS21:N、ステップS22:N)、データ制御部320は、リード転送を行い(ステップS23)、リード転送が終了ではないとき(ステップS24:N)、ステップS20に戻る。ステップS24においてリード転送が終了のとき(ステップS24:Y)、データ制御部320は、リード転送完了通知を制御マスタ126に通知してリード転送を完了させ(ステップS25)、一連の処理を終了する(エンド)。
【0083】
ステップS21において、バッファ330がフル状態であるが、アボートコマンド送信中であることが判別されたとき(ステップS21:N、ステップS22:Y)、クロック制御部300が転送クロックCLKの出力を停止させてリード転送を中断させて(ステップS26)、ステップS20に戻る。
【0084】
ステップS21において、バッファ330がフル状態で、且つアボートコマンドが送信中であると判別されたとき(ステップS21:Y)、クロック制御部300が強制的に転送クロックを出力してコマンド発行制御部312が該アボートコマンドを強制発行し(ステップS27)、その後、データ制御部320は、データ転送をアボートして(ステップS28)、一連の処理を終了する(エンド)。
【0085】
このように、第1の実施形態によれば、リード転送中にアボートコマンドの発行指示があったとき、バッファ330がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させる。そして、強制発行されるアボートコマンドのエンドビットがコマンドエンドビット検出部314により検出されたとき、又はアボートコマンドの送信中にバッファがフル状態になったとき、リード転送がアボートされるので、確実にリード転送をアボートすることができる。
【0086】
図7に、第1の実施形態におけるカードコントローラ130の動作例のタイミング図を示す。
【0087】
第1の実施形態では、ライト転送又はリード転送中に、上位アプリケーションプログラムからのアボートコマンドの発行指示CMD_Goがあると、カードコントローラ130はメモリカード200に対してアボートコマンドの発行を行う。このとき、バッファ330がエンプティ状態になると、一般的にはライト転送を中断するために転送クロックCLKの出力を停止する。これに対して、第1の実施形態では、アボートコマンドの発行指示CMD_Goがあると、バッファ330がエンプティ状態か否かにかかわらず転送クロックCLKを強制的に出力させる。そして、アボートコマンドのエンドビットの検出を条件に、ライト転送又はリード転送をアボートする。
【0088】
従って、図7では、バッファ330がエンプティ状態になるタイミングからアボートコマンドのエンドビットの検出タイミングまでの期間が、転送クロックCLKの強制発行期間(アボートコマンドの強制発行期間)となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部300が、MMC規格等で規定された通り転送クロックCLKの出力を行う。
【0089】
2.1.2 ハードウェア構成例
図8に、図1又は図3のカードコントローラ130のハードウェア構成例のブロック図を示す。
【0090】
カードコントローラ130は、制御インタフェース(InterFace:I/F)回路132、FIFO(First-In First-Out)I/F回路134、コントローラ制御レジスタ部136、クロック制御部138、コマンド制御部140、データ制御部146、ドライバ部150を含む。コマンド制御部140は、アボートタイミング生成回路143、エンドタイミング生成回路144を含む。データ制御部146は、データシーケンサ148を含む。
【0091】
制御I/F回路132は、システムバス122を介してCPU110やメモリ120との間で送受信される制御信号や制御データのインタフェース処理を行う。CPU110は、制御I/F回路132を介してコントローラ制御レジスタ部136の各制御レジスタに制御データを設定できる。
【0092】
FIFOI/F回路134は、システムバス122を介してCPU110やメモリ120との間で送受信される制御信号や制御データのインタフェース処理を行う。システムバス122を介してメモリ120から読み出されたデータ(ライトデータ)は、FIFOI/F回路134の図示しないFIFO(広義にはバッファ)においてバッファリングされた後、データ制御部146に供給される。また、メモリカード200から読み出されたデータ(リードデータ)は、FIFOI/F回路134の図示しないFIFO(バッファ)においてバッファリングされた後に、システムバス122を介してCPU110又はメモリ120に出力される。なお、このFIFOは、いわゆる先入れ先出し構造を有する必要はなく、ランダムアクセスが可能なメモリであってもよい。
【0093】
コントローラ制御レジスタ部136は、1又は複数の制御レジスタを有し、各制御レジスタにはカードコントローラ130を制御するための制御データが設定される。コントローラ制御レジスタ部136の各制御レジスタに設定された制御データに対応した制御信号に基づいて、カードコントローラ130の各部が制御される。制御マスタ126からのアボートコマンドやその他のコマンドの発行指示CMD_Goは、コントローラ制御レジスタ部136のコマンド発行指示レジスタにセットされることでカードコントローラ130のコマンド制御部140及びデータ制御部146にコマンド発行指示が通知される。
【0094】
また、制御I/F回路132又はコントローラ制御レジスタ部136は、CPU110(制御マスタ126)に対して割り込み信号を発生する図示しない割り込み発生部を有する。
【0095】
また、図8では、データ制御部146で検出されたデータ転送完了通知が、コントローラ制御レジスタ部136に入力され、制御マスタ126に対して割り込み通知されるようになっている。
【0096】
クロック制御部138は、カードコントローラ130の各部にクロックを供給すると共に、カードバス20を構成するクロックラインに転送クロックCLKを出力する制御を行う。より具体的には、クロック制御部138は、図3のクロック制御部300の機能を有し、ライト転送中にFIFO(バッファ)がエンプティ状態になったとき、又はリード転送中にFIFO(バッファ)がフル状態になったとき、転送クロックCLKを停止させる制御を行う。また、クロック制御部138は、ライト転送中又はリード転送中にアボートコマンドの発行指示があったときには、FIFO(バッファ)がエンプティ状態又はリード状態かにかかわらず、転送クロックCLKを強制的に出力する制御を行う。
【0097】
コマンド制御部140は、図3のコマンド制御部310の機能を有する。コマンドシーケンサ142は、コントローラ制御レジスタ部136の制御レジスタの制御データ(コマンドデータ)に基づいて、カードバス20を構成するコマンドラインを介してメモリカード200に対してコマンドを発行する制御を行う。コマンドシーケンサ142は、コマンドの発行が完了すると、コマンド完了通知をコントローラ制御レジスタ部136及びデータ制御部146に出力する。コントローラ制御レジスタ部136に入力されたコマンド完了通知に基づき、制御マスタ126に対してコマンド完了通知割り込みを発行する。
【0098】
また、コマンドシーケンサ142は、該コマンドに対応するメモリカード200からのレスポンスを受信する制御を行う。コマンドシーケンサ142において受信されたレスポンスは、レスポンスデータとしてコントローラ制御レジスタ部136に出力される。
【0099】
アボートタイミング生成回路143は、データ転送をアボートするアボートタイミングを指定するアボートタイミング信号AbortStopを生成する。エンドタイミング生成回路144は、転送クロックCLKを強制発行する期間のエンドタイミングを生成する。エンドタイミング生成回路144は、図3のコマンドエンドビット検出部314の機能を有する。アボートタイミング生成回路143は、アボートの指示タイミングから該エンドタイミングまでを指定する強制発行期間指定信号AbortRunを生成する。
【0100】
コマンド制御部140は、このアボートタイミング信号AbortStopや、強制発行期間指定信号AbortRun、コマンドのエンドビットを検出したことを示すコマンド送信完了通知をデータ制御部146に出力できる。
【0101】
データ制御部146は、図3のデータ制御部320の機能を有する。データシーケンサ148は、コントローラ制御レジスタ部136の制御レジスタの制御データに基づいて、カードバス20を構成するデータラインを介してメモリカード200との間でデータを送受信する制御を行う。データ制御部146においてデータ転送完了が検出されると、コントローラ制御レジスタ部136に対してデータ転送完了通知を出力する。コントローラ制御レジスタ部136に入力されたデータ転送完了通知に基づき、制御マスタ126に対してデータ転送完了通知割り込みを発行する。
【0102】
ドライバ部150は、コマンドシーケンサ142の制御結果に基づいてコマンドラインの信号の入出力制御を行う。また、データシーケンサ148の制御結果に基づいてデータラインの信号の入出力制御を行う。
【0103】
図9に、図8のカードコントローラ130の構成要部のブロック図を示す。
【0104】
図9において、図8と同一部分には同一符号を付し、適宜説明を省略する。
【0105】
クロック制御部138は、転送クロックCLKを生成するクロック生成回路400、転送クロックCLKの出力制御を行うクロックイネーブル生成回路410を含む。クロック生成回路400は、クロックイネーブル生成回路410により生成されたクロックイネーブル信号ClockEnableによりイネーブル状態が指定された期間に、転送クロックCLKを出力する。
【0106】
FIFOI/F回路134は、バッファとしてのFIFO135を含む。FIFO135には、ライト転送時のライトデータ、リード転送時のリードデータがバッファリングされる。FIFO135にバッファリングされる有効なライトデータがないとき、FIFOI/F回路134は、データシーケンサ148に対してエンプティ状態を示すエンプティ信号Emptyを出力する。FIFO135が有効なリードデータで満杯のとき、FIFOI/F回路134は、データシーケンサ148に対してフル状態を示すフル信号Fullを出力する。
【0107】
制御マスタ126は、カードコントローラ130のコントローラ制御レジスタ部136にコマンドの発行に必要な設定情報を設定した後、コマンド発行指示を行うことで、メモリカード200に対してコマンドを発行する制御を行う。例えば、制御マスタ126は、コントローラ制御レジスタ部136に、MMC規格又はCE−ATA規格等で規定されたコマンドのインデックス番号(CMD_Index)、当該コマンドがアボートコマンドであるか否かを示すコマンドタイプ情報(CMD_Type)を指定する。そして、制御マスタ126がカードコントローラ130のコントローラ制御レジスタ部136のコマンド発行指示制御レジスタ(図示せず)にアクセスすることで、コマンド発行指示が行われる。このコマンド発行指示により、カードコントローラ130が上述のようにコントローラ制御レジスタ部136に設定された設定情報に対応したコマンドをメモリカード200に対して発行する。
【0108】
コマンドシーケンサ142は、コントローラ制御レジスタ部136から、制御マスタ126によるコマンドの発行指示を示す発行指示信号CMD_Goを受けて、コマンドのインデックス番号CMD_Index及びコマンドタイプ情報CMD_Type等に対応したシーケンス制御を行って、上述のようにコントローラ制御レジスタ部136に設定された設定情報に対応したコマンドをメモリカード200に対して発行する。データシーケンサ148もまた、コントローラ制御レジスタ部136で設定された各種情報に対応したシーケンス制御を行って、転送データの送受信制御を行う。
【0109】
エンドタイミング生成回路144は、コマンドシーケンサ142により状態遷移するステートやアボートコマンドのエンドビットの検出タイミングに基づいて、転送クロックCLKを強制発行する期間のエンドタイミングを生成する。
【0110】
アボートタイミング生成回路143は、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのエンドビットが検出されたときアボートタイミング信号AbortStopを出力する。また、アボートタイミング生成回路143は、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、このコマンドの発行指示を検出すると、該コマンドのスタートビットからエンドビットまでを強制発行期間とする強制発行期間指定信号AbortRunを出力する。
【0111】
データシーケンサ148は、アボートタイミング信号AbortStopを受け付けると、データ転送をアボートする。また、データシーケンサ148は、強制発行期間指定信号AbortRunを受け付けると、クロック制御部138により転送クロックCLKを強制的に出力する制御を行う。
【0112】
クロックイネーブル生成回路410には、コマンドシーケンサ142からコマンドイネーブル信号CMD_Enable、データシーケンサ148からデータイネーブル信号DAT_Enable及びディセーブル信号Disableが入力される。コマンドイネーブル信号CMD_Enableは、コマンドシーケンサ142がIDLEステート以外のステートに遷移しているときにアクティブとなる信号である。データイネーブル信号DAT_Enableは、データシーケンサ148がIDLEステート以外のステートに遷移しているときにアクティブとなる信号である。ディセーブル信号Disableは、ライト転送時にFIFO135がエンプティ状態となり転送クロックCLKを停止させるためのステート、又はリード転送時にFIFO135がフル状態となる転送クロックCLKを停止させるためのステートに遷移しているときにアクティブとなる信号である。
【0113】
図10に、図9のクロックイネーブル生成回路410の構成例の回路図を示す。
【0114】
このように、クロックイネーブル生成回路410は、コマンドイネーブル信号CMD_Enableとデータイネーブル信号DAT_Enableとの論理和演算結果を、ディセーブル信号Disableでマスクすることで、クロックイネーブル信号ClockEnableを生成する。従って、強制発行制御を行うためには、強制発行条件により、上記の転送クロックCLKを停止させるためのステートから別のステートに遷移させることで、ディセーブル信号Disableを非アクティブにでき、容易にクロックイネーブル信号ClockEnableをアクティブに設定できる。
【0115】
図11に、図9のドライバ部150の構成の概要を示す。
【0116】
ドライバ部150は、クロックラインを駆動して転送クロックCLKを出力するクロック出力ドライバと、コマンドラインに接続される第1の入出力ドライバと、データラインに接続される第2の入出力ドライバとを含む。
【0117】
第1の入出力ドライバは、コマンドシーケンサ142によって制御されコマンドラインを駆動して制御コマンドを出力する出力ドライバと、コマンドラインを介して入力されるレスポンスを受信するための入力ドライバとを含む。出力ドライバは、コマンドシーケンサ142からの出力制御信号CMD_Oeがクロック出力ドライバの入力信号CLK_Outで同期化された信号に基づいて、コマンドシーケンサ142からの出力信号CMD_Outが入力信号CLK_Outで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部136の制御レジスタの内容に基づいてコマンドシーケンサ142によって生成された制御コマンドが、第1の入出力ドライバの出力ドライバによりコマンドラインに出力される。そして、該制御コマンドに対応してメモリカード200から出力されたレスポンスが、第1の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックCLKで同期化されてコマンドシーケンサ142に入力信号CMD_Inとして入力される。
【0118】
第2の入出力ドライバは、データシーケンサ148によって制御されデータラインを駆動して転送データを出力する出力ドライバと、データラインを介して入力される転送データを受信するための入力ドライバとを含む。出力ドライバは、データシーケンサ148からの出力制御信号DAT_Oeがクロック出力ドライバの入力信号CLK_Outで同期化された信号に基づいて、データシーケンサ148からの出力信号DAT_Outが入力信号CLK_Outで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部136の制御レジスタの内容に基づいて、FIFOI/F回路134からのデータが、データシーケンサ148の制御により、転送データとして第2の入出力ドライバの出力ドライバを介してデータラインに出力される。そして、メモリカード200から出力されたレスポンスが、第1の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックCLKで同期化されてデータシーケンサ148に入力信号DAT_Inとして入力される。なお、図9では、転送データが4ビットデータである。
【0119】
図12に、図9のコマンドシーケンサ142の動作説明図を示す。
【0120】
コマンドシーケンサ142は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【0121】
電源投入(SQ1)後の初期状態では、コマンドシーケンサ142は、IDLEステートST1に遷移する。制御マスタ126で実行される上位アプリケーションからメモリカード200に対して制御コマンドの発行指示(SQ2)があると、コマンドシーケンサ142は、SEND_CMDステートST2に遷移する。
【0122】
SEND_CMDステートST2では、制御マスタ126が、カードコントローラ130の制御レジスタに制御コマンドを発行するためのコマンド指定情報やそのパラメータ情報を制御レジスタに設定する。そして、上位アプリケーションからの制御コマンドの発行指示を受けて制御マスタ126が、カードコントローラ130の図示しない制御コマンド発行指示レジスタにアクセスしてコマンドのエンドビットを送信すると(SQ3)、コマンドシーケンサ142は、WAIT_RESPステートST3に遷移する。
【0123】
WAIT_RESPステートST3では、所定のタイムアウト期間だけ、上記のコマンドに対応したレスポンスのスタートビットを待つ。WAIT_RESPステートST3において、所定のタイムアウト期間内にレスポンスのスタートビットを検出すると、コマンドシーケンサ142は、RCV_RESPステートST4に遷移する(SQ4)。WAIT_RESPステートST3において、所定のタイムアウト期間が経過すると、コマンドシーケンサ142は、ERR_PROステートST6に遷移する(SQ100)。
【0124】
RCV_RESPステートST4では、コマンドシーケンサ142が、コマンドラインを介してメモリカード200からのレスポンスデータを受信する。そして、レスポンスのエンドビットの受信が完了する(SQ5)と、コマンドシーケンサ142は、END8CLKステートST5に遷移する。
【0125】
END8CLKステートST5では、コマンド発行間隔期間である転送クロックCLKの8クロック分だけ待機する。そして、RCV_RESPステートST4において受信されたレスポンスのエラーが検出されているとき、又はレスポンスがタイムアウト期間内に受信されないとき、コマンドシーケンサ142は、ERR_PROステートST6に遷移する(SQ6)。ERR_PROステートST6では、制御I/F回路132又はコントローラ制御レジスタ部136が、検出されたエラーに応じて制御マスタ126にエラーが発生した旨の割り込みを発生させる。その後、コマンドシーケンサ142は、ERR_PROステートST6からIDLEステートST1に遷移する(SQ7)。
【0126】
RCV_RESPステートST4において受信されたレスポンスが正常のとき、コマンドシーケンサ142は、Cmd_CmpステートST7に遷移する(SQ8)。Cmd_CmpステートST7では、制御I/F回路132又はコントローラ制御レジスタ部136が、制御マスタ126にコマンド完了通知割り込みを発生させる。その後、コマンドシーケンサ142は、Cmd_CmpステートST7からIDLEステートST1に遷移する(SQ9)。
【0127】
図13に、図9のデータシーケンサ148の動作説明図を示す。
【0128】
データシーケンサ148は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【0129】
電源投入(SQ10)後の初期状態では、データシーケンサ148は、IDLEステートST10に遷移する。制御マスタ126で実行される上位アプリケーションからメモリカード200に対して制御コマンドの発行指示があると、その制御コマンドの種類によって遷移先のステートが変わる。
【0130】
IDLEステートST10において、上位アプリケーションから発行指示された制御コマンドがライトコマンドのとき(SQ11)、データシーケンサ148は、CHK_BUSYステートST11に遷移する。
【0131】
CHK_BUSYステートST11では、メモリカード200がビジー状態か否かが検出される。CHK_BUSYステートST11において、メモリカード200の非ビジー状態が検出されたとき(SQ12)、データシーケンサ148は、WR_BL_DATステートST12に遷移する。CHK_BUSYステートST11において、メモリカード200のビジー状態が検出されたとき(SQ13)、データシーケンサ148は、CHK_BUSYステートST11を繰り返す。
【0132】
WR_BL_DATステートST12において、データシーケンサ148は、メモリカード200に対してライトデータを送出する制御を行う。1ブロック分のライトデータを送出すると(SQ14)、データシーケンサ148は、CRCSTステートST13に遷移する。
【0133】
また、WR_BL_DATステートST12において、アボートタイミング信号AbortStopが非アクティブでFIFO135がエンプティ状態、又は強制発行期間指定信号AbortRunが非アクティブでFIFO135がエンプティ状態になると、データシーケンサ148は、WR_FIFO_BUSYステートST60に遷移する(SQ60)。一方、WR_BL_DATステートST12において、アボートタイミング信号AbortStopがアクティブでFIFO135がエンプティ状態、又は強制発行期間指定信号AbortRunがアクティブでFIFO135がエンプティ状態になると、データシーケンサ148は、ABTステートST50に遷移する(SQ52)。
【0134】
WR_FIFO_BUSYステートST60では、データシーケンサ148が、転送クロックCLKを停止させる制御を行う。データシーケンサ148がWR_FIFO_BUSYステートST60に遷移しているときにディセーブル信号Disableをアクティブにすることで、クロックイネーブル信号ClockEnableが非アクティブとなり、転送クロックCLKの供給が停止される。
【0135】
WR_FIFO_BUSYステートST60において、FIFO135がエンプティ状態でなくなると、データシーケンサ148は、WR_BL_DATステートST12に遷移する(SQ61)。また、WR_FIFO_BUSYステートST60において、アボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunがアクティブとなると、ABTステートST50に遷移する(SQ62)。
【0136】
CRCSTステートST13では、データシーケンサ148は、ライトデータのCRCステータスをチェックし、CRCステータスが正常で次のブロックの転送が必要なとき(SQ15)、データシーケンサ148は、WR_BL_DATステートST12に遷移する。CRCSTステートST13において、CRCステータスが正常で次のブロックの転送が不要なとき(SQ16)、データシーケンサ148は、END8CLKステートST20に遷移する。
【0137】
CHK_BUSYステートST11又はCRCSTステートST13において、アボートタイミング信号AbortStopがアクティブになると(アボートコマンドのエンドビットを検出すると)、ABTステートST50に遷移する(SQ51、SQ53)。
【0138】
END8CLKステートST20では、コマンド発行間隔期間である転送クロックCLKの8クロック分だけ待機する。そして、転送クロックCLKの8クロック分の期間が経過する(SQ20)と、データシーケンサ148は、CHK_BUSYステートST21に遷移する。
【0139】
CHK_BUSYステートST21では、メモリカード200がビジー状態か否かが検出される。CHK_BUSYステートST21において、メモリカード200の非ビジー状態が検出されたとき(SQ22)、データシーケンサ148は、Tran_CmpステートST22に遷移する。CHK_BUSYステートST21において、メモリカード200のビジー状態が検出されたとき(SQ21)、データシーケンサ148は、CHK_BUSYステートST21を繰り返す。
【0140】
Tran_CmpステートST22では、データシーケンサ148が、制御マスタ126に対して転送終了割り込みを発生させる制御が行われる。転送終了割り込みを発生した後(SQ23)、データシーケンサ148は、IDLEステートST10に遷移する。
【0141】
IDLEステートST10において、上位アプリケーションから発行指示された制御コマンドがリードコマンドのとき(SQ31)、データシーケンサ148は、RD_BL_DATステートST31に遷移する。
【0142】
RD_BL_DATステートST31では、データシーケンサ148は、メモリカード200から1ブロック分のリードデータを読み出す制御を行う。次のブロックのリードデータを読み出す必要があるとき(SQ32)、データシーケンサ148は、RD_BL_DATステートST31を繰り返す。RD_BL_DATステートST31において、次のブロックのリードデータを読み出す必要がないとき(SQ33)、データシーケンサ148は、END8CLKステートST32に遷移する。
【0143】
RD_BL_DATステートST31において、アボートタイミング信号AbortStopが非アクティブでFIFO135がフル状態、又は強制発行期間指定信号AbortRunが非アクティブでFIFO135がフル状態になると、データシーケンサ148は、RD_FIFO_BUSYステートST61に遷移する(SQ65)。一方、RD_BL_DATステートST31において、アボートタイミング信号AbortStopがアクティブでFIFO135がフル状態、強制発行期間指定信号AbortRunがアクティブでFIFO135がフル状態になると、データシーケンサ148は、ABTステートST50に遷移する(SQ54)。
【0144】
RD_FIFO_BUSYステートST61では、データシーケンサ148が、転送クロックCLKを停止させる制御を行う。データシーケンサ148がRD_FIFO_BUSYステートST61に遷移しているときにディセーブル信号Disableをアクティブにすることで、クロックイネーブル信号ClockEnableが非アクティブとなり、転送クロックCLKの供給が停止される。
【0145】
RD_FIFO_BUSYステートST61において、FIFO135がフル状態でなくなると、データシーケンサ148は、RD_BL_DATステートST31に遷移する(SQ66)。また、RD_FIFO_BUSYステートST61において、アボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunがアクティブとなると、ABTステートST50に遷移する(SQ67)。
【0146】
END8CLKステートST32では、コマンド発行間隔期間である転送クロックCLKの8クロック分だけ待機する。そして、転送クロックCLKの8クロック分の期間が経過する(SQ34)と、データシーケンサ148は、Tran_CmpステートST22に遷移する。
【0147】
IDLEステートST10において、上位アプリケーションから発行指示された制御コマンドが、R1bレスポンスを有するコマンドのとき(SQ44)、データシーケンサ148は、MASK_R1b_BUSYステートST43に遷移する。
【0148】
MASK_R1b_BUSYステートST43では、データシーケンサ148は、メモリカード200からのレスポンスを受信し、メモリカード200の種類(規格、バージョン)によって変化するビジー状態の検出タイミングをマスク制御して特定する。次に、MASK_R1b_BUSYステートST43において、ビジー状態の検出タイミングになると、データシーケンサ148は、CHK_R1b_BUSYステートST42に遷移する(SQ45)。
【0149】
CHK_R1b_BUSYステートST42では、メモリカード200がビジー状態か否かが検出される。CHK_R1b_BUSYステートST42においてメモリカード200のビジー状態が検出されたとき(SQ46)、データシーケンサ148は、R1b_BUSYステートST44に遷移する。CHK_R1b_BUSYステートST42においてメモリカード200の非ビジー状態が検出されたとき(SQ47)、データシーケンサ148は、R1bCOMPステートST45に遷移する。
【0150】
R1b_BUSYステートST44において、メモリカード200の非ビジー状態が検出されたとき(SQ48)、データシーケンサ148は、R1bCOMPステートST45に遷移する。
【0151】
R1bCOMPステートST45では、図示しないアボート処理通知部がアボート処理の終了を制御マスタ126に通知する(割り込み通知、ステータスレジスタによるステータス通知)。その後、データシーケンサ148は、IDLEステートST10に遷移する(SQ49)。なお、図13において、R1bCOMPステートST45を、Tran_CmpステートST22と共通化してもよい。
【0152】
ABTステートST50では、次の状態遷移タイミングで、当該ステートからMASK_R1B_BUSYステートST43に遷移する(SQ55)。
【0153】
図13の動作を行うデータシーケンサ148では、アボート処理を、R1bレスポンスの制御シーケンスで行うようにしたので、データシーケンサ148に無駄なステートを設けることなく、確実にアボート処理を終了させることができる。
【0154】
また、第1の実施形態によれば、ライト動作又はリード動作終了後に、MMC規格等で規定されているコマンド発行間隔期間である転送クロックCLKの8クロックに相当する期間を待つEND8CLKステートに遷移させてからTran_CmpステートST22に遷移させるようにしたので、コマンド発行直前に上述のコマンド発行間隔を管理することなく、いつでも次のコマンドを発行できる状態でコマンドの発行制御を開始できるようになる。
【0155】
図14に、第1の実施形態におけるカードコントローラ130のライト動作中のアボート処理の動作例のタイミング図を示す。
【0156】
図14では、コマンドシーケンサ142のステートやデータシーケンサ148のステートも示し、図14では図12又は図13の各ステートを分割した詳細なステートを示している。
【0157】
図14では、ライト動作中に、アボートコマンドの発行指示があると(TG10)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、アボートタイミング生成回路143が、強制発行期間指定信号AbortRunをHレベルに設定する。
【0158】
その後、コマンド制御部140が、アボートコマンドの送出を開始すると共に、該アボートコマンドのエンドビットを監視する。アボートコマンドのエンドビットが検出されるまでに、FIFO135がエンプティ状態になったとき(TG11)、データシーケンサ148は、ABTステートに遷移する。その後、データシーケンサ148は、MASK_R1b_BUSYステートに遷移する。
【0159】
データシーケンサ148は、MASK_R1b_BUSYステートに遷移して、メモリカード200の非ビジー状態の検出を開始し、メモリカード200の非ビジー状態が検出されると、Tran_Cmpステートに遷移する。Tran_Cmpステートにおいて、アボート処理の終了通知を制御マスタ126に対して行う。
【0160】
なお、FIFO135がエンプティ状態となるタイミングが遅れて、先にアボートコマンドのエンドビットが検出されたとき、該エンドビットの検出を条件にデータシーケンサ148がABTステートに遷移し、その後、上記と同様にライト動作がアボートされる。
【0161】
図15に、第1の実施形態におけるカードコントローラ130のリード動作中のアボート処理の動作例のタイミング図を示す。
【0162】
図15では、コマンドシーケンサ142のステートやデータシーケンサ148のステートも示し、図15では図12又は図13の各ステートを分割した詳細なステートを示している。
【0163】
図15では、リード動作中に、アボートコマンドの発行指示があると(TG20)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、アボートタイミング生成回路143が、強制発行期間指定信号AbortRunをHレベルに設定する。
【0164】
その後、コマンド制御部140が、アボートコマンドの送出を開始すると共に、該アボートコマンドのエンドビットを監視する。アボートコマンドのエンドビットが検出されるまでに、FIFO135がフル状態になったとき(TG21)、データシーケンサ148は、ABTステートに遷移する。その後、データシーケンサ148は、MASK_R1b_BUSYステートに遷移する。
【0165】
データシーケンサ148は、MASK_R1b_BUSYステートに遷移して、メモリカード200の非ビジー状態の検出を開始し、メモリカード200の非ビジー状態が検出されると、Tran_Cmpステートに遷移する。Tran_Cmpステートにおいて、アボート処理の終了通知を制御マスタ126に対して行う。
【0166】
なお、FIFO135がフル状態となるタイミングが遅れて、先にアボートコマンドのエンドビットが検出されたとき、該エンドビットの検出を条件にデータシーケンサ148がABTステートに遷移し、その後、上記と同様にリード動作がアボートされる。
【0167】
このように、第1の実施形態では、ライト動作中又はリード動作中にアボートコマンドの発行指示があったとき、FIFO135がエンプティ状態か否か又はフル状態か否かにかかわらず、アボートコマンドを強制的に発行させる。そして、アボートコマンド送信中にFIFO135がエンプティ状態になったとき、アボートコマンド送信中にFIFO135がフル状態になったとき、或いは、該アボートコマンドのエンドビットを検出したときに、ライト転送又はリード転送をアボートする。
【0168】
2.2 第2の実施形態
第1の実施形態におけるカードコントローラ130は、アボートコマンドの発行指示があったときにバッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させていたが、本発明は、これに限定されるものではない。第2の実施形態におけるカードコントローラ130は、アボートコマンドのエンドビットを送信した時点で、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させる。
【0169】
第2の実施形態におけるカードコントローラ130の構成例は、図3に示す第1の実施形態におけるカードコントローラ130の構成例と同様であるため、図示を省略する。なお、コマンドエンドビット検出部314の機能は、例えばコマンドシーケンサ142又はアボートタイミング生成回路500によって実現される。
【0170】
但し、第2の実施形態におけるカードコントローラ130では、ライト動作中にバッファがエンプティの状態のとき、クロック制御部が転送クロックの出力を停止させる制御を行う場合に、コマンドエンドビット検出部によりアボートコマンドのエンドビットが検出されたとき、クロック制御部が、バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って、ライト動作中のアボートコマンドを強制的に発行させた後、該ライト動作をアボートする。また、第2の実施形態におけるカードコントローラ130では、リード動作中にバッファがフルの状態のとき、クロック制御部が転送クロックの出力を停止させる制御を行う場合に、コマンドエンドビット検出部によりアボートコマンドのエンドビットが検出されたとき、クロック制御部が、バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って、リード動作中のアボートコマンドを強制的に発行させた後、該リード動作をアボートする。
【0171】
こうすることで、メモリカード200がアボートコマンドを受け付けるまで、バッファがエンプティ状態又はフル状態になったときに転送クロックの出力が停止されるため、メモリカード200に無効なデータを送信するといったことがない。
【0172】
2.2.1 処理例
図16に、第2の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0173】
ここで、カードコントローラ130では、コマンド発行制御部312がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ130はメモリカード200に対するライト動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、ライト動作中にアボートコマンドを発行するものとする。
【0174】
この場合、まず、コマンドエンドビット検出部314が、ライト動作中にコマンド発行制御部312により発行されるアボートコマンドのエンドビットの有無を検出する(ステップS30)。
【0175】
ステップS30においてアボートコマンドのエンドビットが検出されなかったとき(ステップS30:N)、データ制御部320が、バッファ330がエンプティ状態か否かを判別する(ステップS31)。
【0176】
バッファ330がエンプティ状態ではないと判別されたとき(ステップS31:N)、データ制御部320は、ライト転送を行い(ステップS32)、ライト転送が終了ではないとき(ステップS33:N)、ステップS30に戻る。ステップS33においてライト転送が終了のとき(ステップS33:Y)、データ制御部320は、ライト転送完了通知を制御マスタ126に通知してライト転送を完了させ(ステップS34)、一連の処理を終了する(エンド)。
【0177】
一方、ステップS31において、バッファ330がエンプティ状態であると判別されたとき(ステップS31:Y)、クロック制御部300が転送クロックCLKの出力を停止させてライト転送を中断させて(ステップS35)、ステップS30に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0178】
ステップS30において、アボートコマンドのエンドビットが検出されたとき(ステップS30:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS36)、データ制御部320は、データ転送
をアボートして(ステップS37)、一連の処理を終了する(エンド)。
【0179】
このように、第2の実施形態によれば、ライト転送中にアボートコマンドのエンドビットが検出されたとき、バッファ330がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送をアボートすることができる。
【0180】
図17に、第2の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0181】
ここで、カードコントローラ130では、コマンド発行制御部312がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ130はメモリカード200に対するリード動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、リード動作中にアボートコマンドを発行するものとする。
【0182】
この場合、まず、コマンドエンドビット検出部314が、リード動作中にコマンド発行制御部312により発行されるアボートコマンドのエンドビットの有無を検出する(ステップS40)。
【0183】
ステップS40においてアボートコマンドのエンドビットが検出されなかったとき(ステップS40:N)、データ制御部320が、バッファ330がフル状態か否かを判別する(ステップS41)。
【0184】
バッファ330がフル状態ではないと判別されたとき(ステップS41:N)、データ制御部320は、リード転送を行い(ステップS42)、リード転送が終了ではないとき(ステップS43:N)、ステップS40に戻る。ステップS43においてリード転送が終了のとき(ステップS43:Y)、データ制御部320は、リード転送完了通知を制御マスタ126に通知してリード転送を完了させ(ステップS44)、一連の処理を終了する(エンド)。
【0185】
一方、ステップS41において、バッファ330がフル状態であると判別されたとき(ステップS41:Y)、クロック制御部300が転送クロックCLKの出力を停止させてリード転送を中断させて(ステップS45)、ステップS40に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0186】
ステップS40において、アボートコマンドのエンドビットが検出されたとき(ステップS40:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS46)、データ制御部320は、データ転送をアボートして(ステップS47)、一連の処理を終了する(エンド)。
【0187】
このように、第2の実施形態によれば、リード転送中にアボートコマンドのエンドビットが検出されたとき、バッファ330がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にリード転送をアボートすることができる。
【0188】
図18に、第2の実施形態におけるカードコントローラ130の動作例のタイミング図を示す。
【0189】
第2の実施形態では、ライト転送中にバッファ330がエンプティ状態又はリード転送中にバッファ330がフル状態になると、転送クロックCLKの出力が停止される。そして、バッファ330のエンプティ状態又はフル状態が解除されるまで待つ。このとき、アボートコマンドの発行指示があり、カードコントローラ130の内部で該アボートコマンドのエンドビットを検出したとき(Eビット検出信号)、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行する。
【0190】
従って、図18では、アボートコマンドのエンドビットの検出に基づいて転送クロックCLKの出力が再開されるタイミングから該アボートコマンドを送信完了するタイミングまでの期間が、転送クロックCLKの強制発行期間(アボートコマンドの強制発行期間)となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部300が、MMC規格等で規定された通り転送クロックCLKの出力を行う。
【0191】
2.2.2 ハードウェア構成例
このような第2の実施形態におけるカードコントローラ130の構成例は、図8に示す第1の実施形態におけるカードコントローラ130と同様の構成を有しているため図示を省略する。但し、第2の実施形態では、第1の実施形態に対し、エンドタイミング生成回路144が省略されると共にコマンド制御部140からデータ制御部146に対して強制発行期間指定信号AbortRunの供給が省略され、第1の実施形態に対してデータシーケンサの動作が異なる。
【0192】
図19に、第2の実施形態におけるカードコントローラ130の構成要部のブロック図を示す。
【0193】
図19において、図9と同一部分には同一符号を付し、適宜説明を省略する。図19では、アボートタイミング生成回路500が、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのエンドビットが検出されたときアボートタイミング信号AbortStopを出力する。第1の実施形態ではアボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunにより状態遷移したシーケンスが、第2の実施形態のデータシーケンサ510は、アボートタイミング信号AbortStopにより状態遷移する点が異なる。
【0194】
例えばデータシーケンサ510は、図13の状態遷移図において、WR_BL_DATステートST12で、アボートタイミング信号AbortStopが非アクティブでFIFO135がエンプティ状態になると、WR_FIFO_BUSYステートST60に遷移する(SQ60)。一方、WR_BL_DATステートST12において、アボートタイミング信号AbortStopがアクティブでFIFO135がエンプティ状態になると、データシーケンサ510は、ABTステートST50に遷移する(SQ52)。
【0195】
また、WR_FIFO_BUSYステートST60において、アボートタイミング信号AbortStopがアクティブとなると、データシーケンサ510は、ABTステートST50に遷移する(SQ62)。
【0196】
更に、RD_BL_DATステートST31において、アボートタイミング信号AbortStopが非アクティブでFIFO135がフル状態になると、データシーケンサ510は、RD_FIFO_BUSYステートST61に遷移する(SQ65)。一方、RD_BL_DATステートST31において、アボートタイミング信号AbortStopがアクティブでFIFO135がフル状態になると、データシーケンサ510は、ABTステートST50に遷移する(SQ54)。
【0197】
また、RD_FIFO_BUSYステートST61において、アボートタイミング信号AbortStopがアクティブとなると、データシーケンサ510は、ABTステートST50に遷移する(SQ67)。
【0198】
図20に、第2の実施形態におけるカードコントローラ130のライト動作中のアボート処理の動作例のタイミング図を示す。
【0199】
図20では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図20では図12又は図13の各ステートを分割した詳細なステートを示している。
【0200】
図20では、ライト動作中に、アボートコマンドの発行指示があると(TG30)、コマンドシーケンサ142は、SEND_CMDステートに遷移する。そして、該アボートコマンドのエンドビットが検出される前に、該アボートコマンドの送信中に、FIFO135がエンプティ状態になると(TG31)、データシーケンサ510は、WR_BL_DATステートからWR_FIFO_BUSYステートに遷移し、クロックイネーブルClockEnableが非アクティブとなり転送クロックCLKが停止する。
【0201】
その後、FIFO135がエンプティ状態でなくなると、データシーケンサ510は、WR_BL_DATステートに遷移する。ここで、アボートコマンドのエンドビットが検出されると、アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG32)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。
【0202】
図21に、第2の実施形態におけるカードコントローラ130のリード動作中のアボート処理の動作例のタイミング図を示す。
【0203】
図21では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図21では図12又は図13の各ステートを分割した詳細なステートを示している。
【0204】
図21では、リード動作中に、アボートコマンドの発行指示があると(TG40)、コマンドシーケンサ142は、SEND_CMDステートに遷移する。そして、該アボートコマンドのエンドビットが検出される前に、該アボートコマンドの送信中に、FIFO135がフル状態になると(TG41)、データシーケンサ510は、RD_BL_DATステートからRD_FIFO_BUSYステートに遷移し、クロックイネーブルClockEnableが非アクティブとなり転送クロックCLKが停止する。
【0205】
その後、FIFO135がフル状態でなくなると、データシーケンサ510は、RD_BL_DATステートに遷移する。ここで、アボートコマンドのエンドビットが検出されると、アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG42)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。
【0206】
2.3 第3の実施形態
また、本発明は第1又は第2の実施形態に係るものに限定されるものではない。第3の実施形態におけるカードコントローラ130は、アボートコマンドのスタートビットを送信した時点で、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させる。
【0207】
図22に、第3の実施形態におけるカードコントローラ130の構成例のブロック図を
示す。図22において、図3と同一部分には同一符号を付し、適宜説明を省略する。
【0208】
カードコントローラ130は、クロック制御部300と、コマンド制御部310と、データ制御部320と、バッファ330とを含む。
【0209】
コマンド制御部310は、コマンドラインを介してメモリカード200にコマンドを発行すると共に、該コマンドに対応するレスポンスの受信制御を行う。このようなコマンド制御部310は、コマンド発行制御部312と、コマンドスタートビット検出部318とを含む。
【0210】
コマンドスタートビット検出部318は、コマンド発行制御部312により発行されるコマンド(特にアボートコマンド)のスタートビットを検出する。より具体的には、コマンドスタートビット検出部318は、コマンド発行制御部312により発行されたライトコマンドにより開始されるライト動作中又はリードコマンドにより開始されるリード動作中に、コマンド発行制御部312によりアボートコマンドが発行されたとき、図4(A)に示すようなアボートコマンドのスタートビットを検出する。
【0211】
このようなカードコントローラ130では、ライト動作中に、アボートコマンドのスタートビットが検出されたとき、バッファがエンプティ状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。また、カードコントローラ130では、リード動作中に、アボートコマンドのスタートビットが検出されたとき、バッファがフル状態か否かにかかわらず、クロック制御部300が、メモリカード200への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。
【0212】
そして、強制的に発行されたアボートコマンドのスタートビットがコマンドスタートビット検出部318により検出されたとき、カードコントローラ130は、ライト動作又はリード動作をアボートする。
【0213】
こうすることで、確実にデータ転送をアボートすることができるので、例えば制御マスタ126で実行される上位アプリケーションプログラムでは、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。また、上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止してメモリカード200に対してアボートコマンドが送信されていないという事態を確実に回避できる。
【0214】
2.3.1 処理例
図23に、第3の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0215】
ここで、カードコントローラ130では、コマンド発行制御部312がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ130はメモリカード200に対するライト動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、ライト動作中にアボートコマンドを発行するものとする。
【0216】
この場合、まず、コマンドスタートビット検出部318が、ライト動作中にコマンド発行制御部312により発行されるアボートコマンドのスタートビットの有無を検出する(ステップS50)。
【0217】
ステップS50においてアボートコマンドのスタートビットが検出されなかったとき(ステップS50:N)、データ制御部320が、バッファ330がエンプティ状態か否かを判別する(ステップS51)。
【0218】
バッファ330がエンプティ状態ではないと判別されたとき(ステップS51:N)、データ制御部320は、ライト転送を行い(ステップS52)、ライト転送が終了ではないとき(ステップS53:N)、ステップS50に戻る。ステップS53においてライト転送が終了のとき(ステップS53:Y)、データ制御部320は、ライト転送完了通知を制御マスタ126に通知してライト転送を完了させ(ステップS54)、一連の処理を終了する(エンド)。
【0219】
一方、ステップS51において、バッファ330がエンプティ状態であると判別されたとき(ステップS51:Y)、クロック制御部300が転送クロックCLKの出力を停止させてライト転送を中断させて(ステップS55)、ステップS50に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0220】
ステップS50において、アボートコマンドのエンドビットが検出されたとき(ステップS50:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS56)、データ制御部320は、データ転送をアボートして(ステップS57)、一連の処理を終了する(エンド)。
【0221】
このように、第3の実施形態によれば、ライト転送中にアボートコマンドのスタートビットが検出されたとき、バッファ330がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送をアボートすることができる。
【0222】
図24に、第3の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ130の動作例のフロー図を示す。
【0223】
ここで、カードコントローラ130では、コマンド発行制御部312がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ130はメモリカード200に対するリード動作を開始する。そして、カードコントローラ130のコマンド発行制御部312が、リード動作中にアボートコマンドを発行するものとする。
【0224】
この場合、まず、コマンドスタートビット検出部318が、リード動作中にコマンド発行制御部312により発行されるアボートコマンドのスタートビットの有無を検出する(ステップS60)。
【0225】
ステップS60においてアボートコマンドのスタートビットが検出されなかったとき(ステップS60:N)、データ制御部320が、バッファ330がフル状態か否かを判別する(ステップS61)。
【0226】
バッファ330がフル状態ではないと判別されたとき(ステップS61:N)、データ制御部320は、リード転送を行い(ステップS62)、リード転送が終了ではないとき(ステップS63:N)、ステップS60に戻る。ステップS63においてリード転送が終了のとき(ステップS63:Y)、データ制御部320は、リード転送完了通知を制御マスタ126に通知してリード転送を完了させ(ステップS64)、一連の処理を終了する(エンド)。
【0227】
一方、ステップS61において、バッファ330がフル状態であると判別されたとき(ステップS61:Y)、クロック制御部300が転送クロックCLKの出力を停止させてリード転送を中断させて(ステップS65)、ステップS60に戻り、バッファ330がエンプティ状態でなくなるまで待つ。
【0228】
ステップS60において、アボートコマンドのスタートビットが検出されたとき(ステップS60:Y)、クロック制御部300が、転送クロックCLKを強制的に出力させてアボートコマンドを強制発行させ(ステップS66)、データ制御部320は、データ転送をアボートして(ステップS67)、一連の処理を終了する(エンド)。
【0229】
このように、第3の実施形態によれば、リード転送中にアボートコマンドのスタートビットが検出されたとき、バッファ330がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にリード転送をアボートすることができる。
【0230】
図25に、第3の実施形態におけるカードコントローラ130の動作例のタイミング図を示す。
【0231】
第3の実施形態では、ライト転送又はリード転送中に、アボートコマンドのスタートビットが検出されると、カードコントローラ130はメモリカード200に対してアボートコマンドの発行を行う。このとき、バッファ330がエンプティ状態か否かにかかわらず、転送クロックCLKを強制的に出力させる。そして、アボートコマンドのスタートビットの検出を条件に、ライト転送又はリード転送をアボートする。
【0232】
従って、図25では、アボートコマンドのスタートビットの検出タイミング(送信タイミング)から該アボートコマンドのエンドビットの検出タイミング(送信タイミング)までの期間が、転送クロックCLKの強制発行期間(アボートコマンドの強制発行期間)となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部300が、MMC規格等で規定された通り転送クロックCLKの出力を行う。
【0233】
2.3.2 ハードウェア構成例
このような第3の実施形態におけるカードコントローラ130の構成例は、図8に示す第1の実施形態におけるカードコントローラ130と同様の構成を有しているため図示を省略する。但し、第3の実施形態では、第1の実施形態に対し、エンドタイミング生成回路144が省略されると共にコマンド制御部140からデータ制御部146に対して強制発行期間指定信号AbortRunの供給が省略され、第1の実施形態に対してデータシーケンサの動作が異なる。
【0234】
また、第3の実施形態におけるカードコントローラ130の構成要部も、図19に示す第2の実施形態におけるカードコントローラ130の構成要部と同様の構成であるため、図示を省略する。なお、コマンドスタートビット検出部318の機能は、例えばコマンドシーケンサ142又はアボートタイミング生成回路500によって実現される。
【0235】
但し、第3の実施形態では、アボートタイミング生成回路500が、コマンドタイプ情報CMD_Typeにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのスタートビットが検出されたときアボートタイミング信号AbortStopを出力する。第1の実施形態ではアボートタイミング信号AbortStop又は強制発行期間指定信号AbortRunにより状態遷移したシーケンスが、第3の実施形態のデータシーケンサ510は、アボートタイミング信号AbortStopにより状態遷移する点が異なる。この点、アボートコマンドのエンドビットを条件に状態遷移する第2の実施形態のデータシーケンサ510の状態遷移とは、アボートコマンドのスタートビットを条件に状態遷移する点が異なるのみである。従って、データシーケンサ510の動作説明図の図示も省略する。
【0236】
図26に、第3の実施形態におけるカードコントローラ130のライト動作中のアボート処理の動作例のタイミング図を示す。
【0237】
図26では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図26では図12又は図13の各ステートを分割した詳細なステートを示している。
【0238】
図26では、ライト動作中に、アボートコマンドの発行指示があると(TG50)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、この発行指示がアボートコマンドのスタートビットであると判断して、アボートタイミング信号AbortStopがアクティブとなる。
【0239】
アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG51)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。これ以降、FIFO135がエンプティ状態になったとしても、転送クロックCLKが強制発行される。
【0240】
図27に、第3の実施形態におけるカードコントローラ130のリード動作中のアボート処理の動作例のタイミング図を示す。
【0241】
図27では、コマンドシーケンサ142のステートやデータシーケンサ510のステートも示し、図27では図12又は図13の各ステートを分割した詳細なステートを示している。
【0242】
図27では、リード動作中に、アボートコマンドの発行指示があると(TG60)、コマンドシーケンサ142は、SEND_CMDステートに遷移すると共に、この発行指示がアボートコマンドのスタートビットであると判断して、アボートタイミング信号AbortStopがアクティブとなる。
【0243】
アボートタイミング信号AbortStopがアクティブとなり、データシーケンサ510は、ABTステートに遷移する(TG61)。その後、データシーケンサ510は、MASK_R1b_BUSYステートに遷移する。これ以降、FIFO135がフル状態になったとしても、転送クロックCLKが強制発行される。
【0244】
3. 電子機器
次に、第1〜第3の実施形態のいずれかにおけるカードコントローラが適用されるホストシステムを含む電子機器の構成例を示す。
【0245】
図28に、本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図を示す。
【0246】
図28において、図1と同一部分には同一符号を付し、適宜説明を省略する。
【0247】
電子機器10は、電荷結合素子(Charge Coupled Device:以下、CCD)イメージセンサ800、AD変換器810、メモリ820、クロック生成回路830、ホストシステム100、ソケット(スロット、メモリ装着部、カード装着部、メモリカード装着部、記憶デバイス装着部)840を含む。
【0248】
CCDイメージセンサ800は、複数の受光素子を有し、各受光素子に光が入射することにより発生した電荷を読み出して、画像を電気信号に変換する。CCDイメージセンサ800によって電気信号に変換された画像データは、AD変換器810によりデジタル信号に変換された後、メモリ820にバッファリングされる。
【0249】
クロック生成回路830は、電子機器10の基本クロックやホストシステム100の基本クロックを生成する。
【0250】
図28のプログラムメモリ120は、図1のメモリ120として機能する。
【0251】
ソケット840には、メモリカード200が挿抜される。メモリカード200がソケット840に挿入された状態で、カードバス20を介してカードコントローラ130とメモリカード200との間でMMC規格に従ったアクセスが行われる。
【0252】
ホストシステム100の制御により、メモリ820に蓄えられた画像データをメモリカード200に書き込んだり、メモリカード200から画像データを読み出してメモリ820に蓄積させたりできる。
【0253】
図28のような電子機器10によれば、ホストシステム100(カードコントローラ130)の制御及び構成が簡素化され、低消費電力化及び低コスト化が実現される。
【0254】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。本実施形態におけるメモリカードは、フラッシュメモリカードに限定されるものではない。本実施形態におけるメモリカードに代えて、I/Oデバイス、HDD装置、DVD装置、又は光ディスク装置であってもよい。
【0255】
更に、本発明を適用できるコマンドは上述の実施形態において説明したものに限定されるものではなく、例えばMMC規格と同様の思想に基づく規格やMMC規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンド、例えばCE−ATA規格と同様の思想に基づく規格やCE−ATA規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンドにも当然本発明を適用できる。
【0256】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【0257】
【図1】本実施形態における情報処理装置が適用された電子機器の構成例のブロック図。
【図2】図1のメモリカードの構成例のブロック図。
【図3】第1の実施形態におけるカードコントローラの構成例のブロック図。
【図4】図4(A)はコマンド制御部により送信されるコマンドの説明図。図4(B)はコマンド制御部により受信されるレスポンスの説明図。
【図5】第1の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図6】第1の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図7】第1の実施形態におけるカードコントローラの動作例のタイミング図。
【図8】図1又は図3のカードコントローラのハードウェア構成例のブロック図。
【図9】図8のカードコントローラの構成要部のブロック図。
【図10】図9のクロックイネーブル生成回路の構成例の回路図。
【図11】図9のドライバ部の構成の概要を示す図。
【図12】図9のコマンドシーケンサの動作説明図。
【図13】図9のデータシーケンサの動作説明図。
【図14】第1の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図15】第1の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図16】第2の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図17】第2の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図18】第2の実施形態におけるカードコントローラの動作例のタイミング図。
【図19】第2の実施形態におけるカードコントローラの構成要部のブロック図。
【図20】第2の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図21】第2の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図22】第3の実施形態におけるカードコントローラの構成例のブロック図。
【図23】第3の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図24】第3の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図25】第3の実施形態におけるカードコントローラの動作例のタイミング図。
【図26】第3の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図27】第3の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図28】本実施形態における電子機器の構成例のブロック図。
【符号の説明】
【0258】
10 電子機器、 20 カードバス、 100 ホストシステム、 110 CPU、120、820 メモリ、 122 システムバス、 126 制御マスタ、
130 カードコントローラ、 132 制御I/F回路、
134 FIFOI/F回路、 136 コントローラ制御レジスタ部、
138 クロック制御部、 140、310 コマンド制御部、
142 コマンドシーケンサ、 143、500 アボートタイミング生成回路、
144 エンドタイミング生成回路、 146、320 データ制御部、
148、510 データシーケンサ、 149、330 ビジー検出部、
150 ドライバ部、 200 メモリカード、 210 カードI/F回路、
212 PLL回路、 220 カードI/F制御回路、
230 カード制御レジスタ部、 240 メモリI/F回路、
250 メモリコア部、 300 クロック制御部、 312 コマンド発行制御部、
314 コマンドエンドビット検出部、 318 コマンドスタートビット検出部、
400、830 クロック生成回路、 410 クロックイネーブル生成回路、
800 CCDイメージセンサ、 810 AD変換器、 840 ソケット
【特許請求の範囲】
【請求項1】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させることを特徴とする記憶デバイスコントローラ。
【請求項2】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させることを特徴とする記憶デバイスコントローラ。
【請求項3】
請求項1又は2において、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
強制的に発行される前記アボートコマンドのエンドビットが前記コマンドエンドビット検出部により検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項4】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御部が、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項5】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項6】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項7】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項8】
請求項1乃至7のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対して前記コマンドの発行を制御する制御マスタと、
を含むことを特徴とする情報処理装置。
【請求項9】
前記記憶デバイスが挿抜される記憶デバイス装着部と、
請求項8記載の情報処理装置と、
を含むことを特徴とする電子機器。
【請求項10】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させることを特徴とするアボート制御方法。
【請求項11】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させることを特徴とするアボート制御方法。
【請求項12】
請求項10又は11において、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップを含み、
強制的に発行される前記アボートコマンドのエンドビットが検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることを特徴とするアボート制御方法。
【請求項13】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御ステップが、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項14】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートすることを特徴とするアボート制御方法。
【請求項15】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項16】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項1】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させることを特徴とする記憶デバイスコントローラ。
【請求項2】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させることを特徴とする記憶デバイスコントローラ。
【請求項3】
請求項1又は2において、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
強制的に発行される前記アボートコマンドのエンドビットが前記コマンドエンドビット検出部により検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項4】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御部が、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項5】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項6】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項7】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項8】
請求項1乃至7のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対して前記コマンドの発行を制御する制御マスタと、
を含むことを特徴とする情報処理装置。
【請求項9】
前記記憶デバイスが挿抜される記憶デバイス装着部と、
請求項8記載の情報処理装置と、
を含むことを特徴とする電子機器。
【請求項10】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させることを特徴とするアボート制御方法。
【請求項11】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させることを特徴とするアボート制御方法。
【請求項12】
請求項10又は11において、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップを含み、
強制的に発行される前記アボートコマンドのエンドビットが検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることを特徴とするアボート制御方法。
【請求項13】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御ステップが、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項14】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートすることを特徴とするアボート制御方法。
【請求項15】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項16】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【公開番号】特開2010−15430(P2010−15430A)
【公開日】平成22年1月21日(2010.1.21)
【国際特許分類】
【出願番号】特願2008−175650(P2008−175650)
【出願日】平成20年7月4日(2008.7.4)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成22年1月21日(2010.1.21)
【国際特許分類】
【出願日】平成20年7月4日(2008.7.4)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]