(57)【要約】【課題】データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラ、情報処理装置及び電子機器を提供する。【解決手段】転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラは、前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、前記ライトデータがバッファリングされるバッファと、前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部とを含み、前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記アボートコマンドを強制的に発行させる。【選択図】図３
2010015430.tif 000002
【特許請求の範囲】
【請求項１】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させることを特徴とする記憶デバイスコントローラ。
【請求項２】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させることを特徴とする記憶デバイスコントローラ。
【請求項３】
請求項１又は２において、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
強制的に発行される前記アボートコマンドのエンドビットが前記コマンドエンドビット検出部により検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項４】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御部が、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項５】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項６】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項７】
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とする記憶デバイスコントローラ。
【請求項８】
請求項１乃至７のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対して前記コマンドの発行を制御する制御マスタと、
を含むことを特徴とする情報処理装置。
【請求項９】
前記記憶デバイスが挿抜される記憶デバイス装着部と、
請求項８記載の情報処理装置と、
を含むことを特徴とする電子機器。
【請求項１０】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させることを特徴とするアボート制御方法。
【請求項１１】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させることを特徴とするアボート制御方法。
【請求項１２】
請求項１０又は１１において、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップを含み、
強制的に発行される前記アボートコマンドのエンドビットが検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることを特徴とするアボート制御方法。
【請求項１３】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御ステップが、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項１４】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートすることを特徴とするアボート制御方法。
【請求項１５】
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【請求項１６】
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートすることを特徴とするアボート制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶デバイスコントローラ、情報処理装置、電子機器及びアボート制御方法等に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータやその周辺機器（例えばプリンタ装置、スキャナ装置又は複合機）に限らず、携帯電話機、携帯情報端末（Personal Digital Assistant：ＰＤＡ）やオーディオプレーヤ等の携帯型の情報機器、ロボット装置、デジタルカメラ、ビデオカメラ、全地球測位システム（Global Positioning System：ＧＰＳ)装置、テレビ受信装置、プロジェクタ等の電子機器に、データストレージ用途にフラッシュメモリカードが使用される機会が多くなっている。
【０００３】
フラッシュメモリカードには、その用途に応じて、種々の規格、バージョンが規定されている。例えば動画データ、静止画データ又は音楽データを携帯するために可搬性に優れ、大容量のフラッシュメモリとして、ＭＭＣ（MultiMediaCard）規格等に準拠したフラッシュメモリカードがある。また、例えば携帯機器や家庭用電化製品の小型化により小型のコネクタ形状や高速なデータ転送が可能なＨＤＤ装置として、ＣＥ−ＡＴＡ（Consumer Electronics-AT Attachment）規格に準拠した記憶装置がある。このようなフラッシュメモリカード等は、例えば特許文献１に開示されている。
【０００４】
このようなフラッシュメモリカード等にアクセスするためには、転送クロックをフラッシュメモリカードに供給してその規格で規定されたコマンド（制御コマンド）を発行する必要がある。そして、該フラッシュメモリに対し該転送クロックに同期してライトデータを入力させたりリードデータを出力させたりする。この転送クロックを停止させることで、フラッシュメモリカードに対するデータ転送を停止させることができ、データ転送の低消費電力化を図ることができる。また、フラッシュメモリカードは、ビジー状態であることを通知することで、コマンドに対応したライトデータの出力停止を要求できる。このように、市場に広く流通するフラッシュメモリカードにアクセスする場合は、その規格で規定された仕様に合わせてアクセスする必要がある。
【特許文献１】特開２００６−１３９５５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、フラッシュメモリカードにアクセスするコントローラ側では、ライトデータやリードデータをバッファリングするためのバッファを備えることで、ライト転送やリード転送を継続させることができる。従って、転送クロックに同期してライト転送やリード転送が行われる場合には、バッファがエンプティ状態になったときには有効なライトデータが存在しないため、転送クロックを停止させてライト転送を一時的に停止させることが行われる。同様に、バッファがフル状態になったときにはこれ以上バッファにリードデータを格納できないため、転送クロックを停止させてリード転送を一時的に停止させることが行われる。
【０００６】
一方、フラッシュメモリカード等にアクセスするために用意されているコマンドの中で、データ転送のアボートを指示するアボートコマンドが規定されている。フラッシュメモリカード等にアクセスするコントローラ側では、ライト動作中にアボートコマンドを発行すると、ライトデータの出力を停止させて通常のシーケンスに戻る必要がある。また、コントローラ側では、リード動作中にアボートコマンドを発行すると、リードデータの受け付けを停止して通常のシーケンスに戻る必要がある。
【０００７】
しかしながら、上述のバッファがエンプティ状態又はフル状態のときにアボートコマンドが発行されたとき、転送クロックの供給が停止されるためアボートコマンド自体が送信できない事態に陥る場合がある。この場合、アボートコマンドが送信できず、且つ次のデータ転送にも移行できない。このような問題は、特許文献１に開示された技術であっても同様である。
【０００８】
本発明の幾つかの態様によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラ、情報処理装置及び電子機器を提供できる。
【課題を解決するための手段】
【０００９】
本発明は、転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させる記憶デバイスコントローラに関係する。
【００１０】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記記憶デバイスへの前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させる記憶デバイスコントローラに関係する。
【００１１】
また本発明に係る記憶デバイスコントローラでは、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
強制的に発行された前記アボートコマンドのエンドビットが前記コマンドエンドビット検出部により検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることができる。
【００１２】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドの発行指示があったとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。更に、例えば上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止して記憶デバイスに対してアボートコマンドが送信されていないという事態を確実に回避できる。
【００１３】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御部が、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【００１４】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御部が、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートする記憶デバイスコントローラに関係する。
【００１５】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドのエンドビットが検出されたとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、記憶デバイスがアボートコマンドを受け付けるまで、バッファがエンプティ状態又はフル状態になったときに転送クロックの出力が停止されるため、記憶デバイスに無効なデータを送信するといったことがない。
【００１６】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記ライトデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御部が、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御部が、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【００１７】
また本発明は、
転送クロックに同期して、記憶デバイスとの間でコマンド及びデータの転送を行う記憶デバイスコントローラであって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出部と、
前記リードデータがバッファリングされるバッファと、
前記バッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御部と、
を含み、
前記バッファがフル状態のとき、前記クロック制御部が、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御部が、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートする記憶デバイスコントローラに関係する。
【００１８】
上記のいずれかの発明によれば、ライト転送又はリード転送中にアボートコマンドのスタートビットが検出されたとき、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送又はリード転送をアボートすることができる。また、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。更に、例えば上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止して記憶デバイスに対してアボートコマンドが送信されていないという事態を確実に回避できる。
【００１９】
また本発明は、
上記のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対して前記コマンドの発行を制御する制御マスタと、
を含む情報処理装置に関係する。
【００２０】
本発明によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる記憶デバイスコントローラが適用された情報処理装置を提供できる。
【００２１】
また本発明は、
前記記憶デバイスが挿抜される記憶デバイス装着部と、
上記記載の情報処理装置と、
を含む電子機器に関係する。
【００２２】
本発明によれば、データ転送途中にアボートコマンドが発行された場合であっても確実にアボート処理を終了させる情報処理装置が適用された電子機器を提供できる。
【００２３】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがエンプティ状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させるアボート制御方法に関係する。
【００２４】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記アボートコマンドの発行指示があったとき、前記バッファがフル状態か否かにかかわらず、前記クロック制御ステップが、前記記憶デバイスへの前記転送クロックを出力させる制御を行うことで前記アボートコマンドを強制的に発行させるアボート制御方法に関係する。
【００２５】
また本発明に係るアボート制御方法では、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップを含み、
強制的に発行された前記アボートコマンドのエンドビットが検出されたとき、又は前記アボートコマンドの送信中に前記バッファがエンプティ状態又はフル状態になったとき、前記ライト動作又は前記リード動作をアボートすることができる。
【００２６】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティの状態のとき、前記クロック制御ステップが、前記転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【００２７】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのエンドビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記リード動作をアボートするアボート制御方法に関係する。
【００２８】
また本発明は、
転送クロックに同期して記憶デバイスに対してライトデータを書き込むライト動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記ライトデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがエンプティ状態のとき、前記クロック制御ステップが、転送クロックの出力を停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【００２９】
また本発明は、
転送クロックに同期して記憶デバイスからリードデータを読み出すリード動作のアボートを制御するためのアボート制御方法であって、
前記記憶デバイスからリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御ステップと、
前記アボートコマンドのスタートビットを検出するコマンドスタートビット検出ステップと、
前記リードデータがバッファリングされるバッファの蓄積状況に応じて、前記記憶デバイスへの前記転送クロックの出力制御を行うクロック制御ステップと、
を含み、
前記バッファがフル状態のとき、前記クロック制御ステップが、前記転送クロックを停止させる制御を行う場合に、
前記アボートコマンドのスタートビットが検出されたとき、前記クロック制御ステップが、前記バッファがフル状態か否かにかかわらず、前記転送クロックを出力させる制御を行って前記アボートコマンドを強制的に発行させた後、前記ライト動作をアボートするアボート制御方法に関係する。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００３１】
１．  情報処理装置
以下の実施形態では、記憶デバイスとしてのメモリカードにアクセスするためのカードコントローラ（記憶デバイスコントローラ）が情報処理装置としてのホストシステムに適用されているものとする。
【００３２】
図１に、本実施形態における情報処理装置が適用された電子機器の構成例のブロック図を示す。
【００３３】
図１の構成を有する電子機器としては、例えばパーソナルコンピュータ、その周辺機器（例えばプリンタ装置、スキャナ装置又は複合機）、携帯電話機、携帯情報端末、オーディオプレーヤ、ロボット装置、デジタルカメラ、ビデオカメラ、ＧＰＳ装置、テレビ受信装置、プロジェクタ等がある。
【００３４】
電子機器１０は、情報処理装置としてのホストシステム１００と、メモリカード（広義には記憶デバイス）２００とを含み、ホストシステム１００とメモリカード２００とがカードバス２０を介して接続されている。電子機器１０では、メモリカード２００に対する制御コマンドを発行することにより、メモリカード２００にデータを書き込んだり、メモリカード２００からデータを読み出したりすることができる。メモリカード２００は、例えばフラッシュメモリカード、Ｉ／ＯデバイスやＨＤＤ装置であってもよい。
【００３５】
ホストシステム１００は、制御マスタ１２６と、カードコントローラ（記憶デバイスコントローラ、メモリコントローラ）１３０とを含む。制御マスタ１２６は、中央演算処理装置（Central Processing Unit：ＣＰＵ）１１０、メモリ１２０を含む。ＣＰＵ１１０、メモリ１２０及びカードコントローラ１３０は、システムバス１２２を介して接続されている。従って、ＣＰＵ１１０は、システムバス１２２を介してメモリ１２０又はカードコントローラ１３０にアクセスできる。そして、ＣＰＵ１１０が、メモリ１２０に格納されたプログラムを読み込んで該プログラムに対応した処理を実行する。
【００３６】
カードコントローラ１３０とメモリカード２００とは、カードバス２０を介して接続され、ＣＰＵ１１０が、カードコントローラ１３０からメモリカード２００に対して発行する制御コマンドを生成する制御を行う。このような制御コマンドとしては、ライトコマンド、リードコマンド、アボートコマンド、リセットコマンド、デセレクトコマンド等がある。ライトコマンドは、カードコントローラ１３０がメモリカード２００にライトデータを書き込むライト動作を行うためのコマンドである。リードコマンドは、カードコントローラ１３０がメモリカード２００からリードデータを読み出すリード動作を行うためのコマンドである。アボートコマンドは、メモリカード２００に対するライト動作又はリード動作のアボートを指示するためのコマンドである。リセットコマンドは、電源立ち上げ時や例えばライト動作又はリード動作中等の通常動作中にメモリカード２００を初期化するためのコマンドである。デセレクトコマンドは、電源オフ直前や例えばライト動作又はリード動作中等の通常動作中にメモリカード２００を非選択状態とするためのコマンドである。メモリカード２００を「デバイス」と定義すると、カードコントローラ１３０はホスト側を制御する「ホストコントローラ」と定義することができる。
【００３７】
カードバス２０は、転送クロックＣＬＫが伝送されるクロックライン、制御コマンドＣＭＤ及びレスポンスが伝送されるコマンドライン、例えば４ビット（又は８ビット）の転送データＤＡＴ０−ＤＡＴ３が伝送されるデータラインを有する。カードコントローラ１３０が、転送クロックＣＬＫに同期してコマンドＣＭＤを発行する。そして、転送クロックＣＬＫに同期して例えば４ビットの転送データＤＡＴ０−ＤＡＴ３が送受信される。また、コマンドＣＭＤの種類によっては、メモリカード２００が制御コマンドＣＭＤに対するレスポンスとして、例えばコマンドラインを用いてレスポンスを返すことができる。
【００３８】
ここで、本実施形態のカードコントローラ１３０は、例えばＭＭＣ規格等のメモリーカード規格に準拠したメモリーカードや、ＣＥ−ＡＴＡ規格に準拠したＨＤＤ装置等に適用できる。
【００３９】
以下では、メモリカード２００がＭＭＣ規格に準拠したフラッシュメモリカードであり、カードバス２０にはＭＭＣ規格に準拠したシーケンスで制御コマンドやレスポンス、転送データの送受信が行われる場合を例に説明する。
【００４０】
このとき、カードバス２０のクロックライン、コマンドライン及びデータラインのうち双方向の信号ラインはプルアップされてもよい。例えば、コマンドライン及びデータラインが双方向の信号ラインである場合には、コマンドライン及びデータラインの各ラインはプルアップされてもよい。具体的には、コマンドラインは、所与の高電位側電源線との間にプルアップ抵抗を介してプルアップ接続されてもよく、同様に、データラインの各ラインは、所与の高電位側電源線との間にそれぞれプルアップ抵抗を介してプルアップ接続されてもよい。なお、クロックラインは、カードコントローラ１３０側の図示しないクロックドライバによりプッシュプル動作で駆動される。このクロックラインも、他のラインと同様にプルアップ接続されてもよい。
【００４１】
ＭＭＣ規格のメモリカード２００にアクセスする場合、データ転送が不要な期間に転送クロックＣＬＫを停止させることで消費電力を削減できる。その一方、転送クロックＣＬＫを停止させることで、カードコントローラ１３０からのコマンドの送出、メモリカード２００からのレスポンスの受信、データラインを介してデータの送受信ができなくなる。一般的には、カードコントローラ１３０が内蔵するバッファがエンプティ状態になったとき転送ロックＣＬＫを停止させてライト動作を中断させたり、該バッファがフル状態になったとき転送ロックを停止させてリード動作を中断させたりする。
【００４２】
図２に、図１のメモリカード２００の構成例のブロック図を示す。
【００４３】
メモリカード２００は、カードＩ／Ｆ回路２１０、ＰＬＬ回路２１２、カードＩ／Ｆ制御回路２２０、カード制御レジスタ部２３０、メモリＩ／Ｆ回路２４０、メモリコア部２５０を含む。
【００４４】
カードＩ／Ｆ回路２１０は、カードバス２０を伝送される信号のインタフェース処理を行う。カードＩ／Ｆ制御回路２２０は、カードＩ／Ｆ回路２１０を制御してカードバス２０に信号を出力する制御を行ったり、カードバス２０からの信号を入力する制御を行ったりする。カードＩ／Ｆ回路２１０は、転送クロックＣＬＫに同期して入力された転送データやコマンドデータを図示しないバッファにバッファリングしたり、該バッファにバッファリングされた転送データやレスポンスデータを転送クロックＣＬＫに同期して出力したりする。
【００４５】
ＰＬＬ回路２１２は、図示しない発振器からの発振出力を逓倍して、転送クロックＣＬＫとは異なる内部クロックを生成する。ＰＬＬ回路２１２によって生成された内部ブロックは、メモリカード２００の各部に供給され、メモリカード２００は内部クロックに同期して動作する。より具体的には、カードＩ／Ｆ回路２１０にバッファリングされたデータは、内部クロックに同期して読み出されてメモリカード２００の内部に取り込まれる。また、メモリカード２００の内部から出力されるデータは、内部クロックに同期してカードＩ／Ｆ回路２１０でバッファリングされ、転送クロックＣＬＫに同期して外部に出力される。従って、メモリカード２００は、転送クロックＣＬＫの供給が停止されたとしても、メモリカード２００の内部で、内部クロックに同期してメモリにアクセスできるようになっている。即ち、メモリカード２００は、転送クロックに同期して入力されたコマンドに対しデータのアクセスをその内部クロックに同期して行うことができる。
【００４６】
カード制御レジスタ部２３０は、複数の制御レジスタを有する。例えば、カード制御レジスタ部２３０は、動作条件レジスタ（Operation Conditions Resister：ＯＣＲ）、カード識別レジスタ（Card IDentification register：ＣＩＤ）、カード特性データレジスタ（Card-Specific Data register：ＣＳＤ）、相対カードアドレスレジスタ（Relative Card Address register：ＲＣＡ）、ドライバステージレジスタ（Driver Stage Register:ＤＳＲ）等を含む。
【００４７】
カードＩ／Ｆ制御回路２２０は、カード制御レジスタ部２３０の設定データに基づいてメモリカード２００の各部を制御すると共に、その制御結果をカード制御レジスタ部２３０に格納する制御を行う。
【００４８】
メモリＩ／Ｆ回路２４０は、カードＩ／Ｆ制御回路２２０の制御により、メモリコア部２５０のメモリ素子にデータを書き込んだり、メモリコア部２５０のメモリ素子からデータを読み出したりする制御を行う。
【００４９】
メモリコア部２５０は、複数のメモリ素子を有する。メモリＩ／Ｆ回路２４０は、予め割り当てられたアドレスに対応したメモリ素子からデータを読み出したり、該アドレスに対応したメモリ素子にデータを書き込んだりすることができる。
【００５０】
カードコントローラ１３０のメモリカード２００に対するライト動作中には、カードコントローラ１３０からのライトデータがカードＩ／Ｆ回路２１０においてバッファリングされる。そして、カードＩ／Ｆ回路２１０にバッファリングされたデータは、内部クロックに同期して読み出されてメモリＩ／Ｆ回路２４０を介してメモリコア部２５０に書き込まれる。このようなメモリコア部２５０へのデータ書き込み期間中は、カードコントローラ１３０が次のライトデータを入力してこないように、カードＩ／Ｆ回路２１０はカードコントローラ１３０に対してビジー状態を通知する。カードＩ／Ｆ回路２１０は、転送データが伝送されるデータラインのうち転送データＤＡＴ０が伝送されるデータラインをＬレベルに駆動することで、カードコントローラ１３０にビジー状態を通知する。
【００５１】
メモリカード２００は、カードコントローラ１３０からＲ１ｂレスポンスを伴うコマンドを受信したときも、同様にカードコントローラ１３０に対してビジー状態を通知する。
【００５２】
２．  カードコントローラ（記憶デバイスコントローラ）
図１のカードコントローラ１３０は、ライト転送中にバッファがエンプティ状態でアボートコマンドを発行する場合であっても、以下のように正常にアボートコマンドを発行してアボート処理を行うことができる。また、カードコントローラ１３０は、リード転送中にバッファがフル状態でアボートコマンドを発行する場合であっても、以下のように正常にアボートコマンドを発行してアボート処理を行うことができる。
【００５３】
２．１  第１の実施形態
図３に、第１の実施形態におけるカードコントローラ１３０の構成例のブロック図を示す。図３において、図１と同一部分には同一符号を付し、適宜説明を省略する。
【００５４】
カードコントローラ１３０は、クロック制御部３００と、コマンド制御部３１０と、データ制御部３２０と、バッファ３３０とを含む。
【００５５】
クロック制御部３００は、カードバス２０のクロックラインの出力制御を行う。コマンド制御部３１０は、カードバス２０のコマンドラインの入出力制御を行う。データ制御部３２０は、カードバス２０のデータラインの入出力制御を行う。
【００５６】
クロック制御部３００は、コマンドや転送データが同期して送受信するための同期クロックである転送クロックＣＬＫを供給したり、供給を停止したりする。クロック制御部３００が転送クロックＣＬＫの供給を停止することで、データの転送を中断させることできるが、コマンドがレスポンスの送受信も停止する。
【００５７】
またクロック制御部３００は、バッファ３３０の蓄積状況に応じて、メモリカード２００への転送クロックＣＬＫの出力制御を行う。即ち、クロック制御部３００は、バッファ３３０がエンプティ状態又はフル状態のときに本来であれば転送クロックＣＬＫの供給を停止すべき場合に、敢えて該転送クロックＣＬＫの供給を続けてアボートコマンドの送信を実現できるようになっている。
【００５８】
コマンド制御部３１０は、コマンドラインを介してメモリカード２００にコマンドを発行すると共に、該コマンドに対応するレスポンスの受信制御を行う。このようなコマンド制御部３１０は、コマンド発行制御部３１２と、コマンドエンドビット検出部３１４とを含む。
【００５９】
図４（Ａ）に、コマンド制御部３１０により送信されるコマンドの説明図を示す。また、図４（Ｂ）に、コマンド制御部３１０により受信されるレスポンスの説明図を示す。
【００６０】
コマンドは、スタートビット「Ｓ」が「０」、エンドビット「Ｅ」が「１」で挟まれた所定ビットのコマンドデータである。図４（Ａ）に示すようなコマンドが、コマンドラインを介して送信される。
【００６１】
コマンド発行制御部３１２は、図４（Ａ）に示すようなフォーマットのコマンドを発行する制御を行う。より具体的には、コマンド発行制御部３１２は、メモリカード２００に対してライトデータを書き込むためのライトコマンド、又は該ライトコマンドによるライト動作のアボートを指示するアボートコマンドを発行する制御を行う。また、コマンド発行制御部３１２は、メモリカード２００からのリードデータを読み出すためのリードコマンド、リセットコマンド、デセレクトコマンド又は該リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行する。
【００６２】
コマンドエンドビット検出部３１４は、コマンド発行制御部３１２により発行されるコマンド（特にアボートコマンド）のエンドビットを検出する。より具体的には、コマンドエンドビット検出部３１４は、コマンド発行制御部３１２により発行されたライトコマンドにより開始されるライト動作中又はリードコマンドにより開始されるリード動作中に、コマンド発行制御部３１２によりアボートコマンドが発行されたとき、図４（Ａ）に示すようなアボートコマンドのエンドビットを検出する。
【００６３】
レスポンスは、スタートビット「Ｓ」が「０」、エンドビット「Ｅ」が「１」で挟まれた所定ビットのレスポンスデータである。図４（Ｂ）に示すようなレスポンスが、コマンドラインを介して受信される。
【００６４】
図３において、データ制御部３２０は、データラインを介して転送データを送信又は受信する制御を行う。なお、データラインのうち転送データＤＡＴ０が送受信されるデータラインが、メモリカード２００により「Ｌ」レベルに駆動されることで、カードコントローラ１３０は、メモリカード２００がビジー状態であることを通知される。このデータ制御部３２０は、更に、転送データが伝送されるデータラインの電位に基づいてメモリカード２００がビジー状態か否かを検出することができる。
【００６５】
バッファ３３０には、制御マスタ１２６のメモリ１２０からメモリカード２００に転送されるライトデータがバッファリングされる。そして、カードコントローラ１３０とメモリカード２００との間で行われるライト転送において、バッファ３３０からライトデータが読み出されてメモリカード２００に出力される。また、バッファ３３０には、メモリカード２００から転送されてくるリードデータがバッファリングされる。そして、カードコントローラ１３０とメモリカード２００との間で行われるリード転送において、バッファ３３０からリードデータが読み出された制御マスタ１２６のメモリ１２０に格納される。
【００６６】
このようなカードコントローラ１３０では、ライト動作中に、制御マスタ１２６で実行される上位アプリケーションプログラムからアボートコマンドの発行指示があったとき、バッファがエンプティ状態か否かにかかわらず、クロック制御部３００が、メモリカード２００への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。また、カードコントローラ１３０では、リード動作中に、制御マスタ１２６で実行される上位アプリケーションプログラムからアボートコマンドの発行指示があったとき、バッファがフル状態か否かにかかわらず、クロック制御部３００が、メモリカード２００への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。
【００６７】
そして、ライト動作中に、強制的に発行されたアボートコマンドのエンドビットがコマンドエンドビット検出部３１４により検出されたとき、又はアボートコマンドの送信中にバッファ３３０がエンプティ状態になったとき、カードコントローラ１３０は、ライト動作をアボートする。また、リード動作中に、強制的に発行されたアボートコマンドのエンドビットがコマンドエンドビット検出部３１４により検出されたとき、又はアボートコマンドの送信中にバッファ３３０がフル状態になったとき、カードコントローラ１３０は、リード動作をアボートする。ここで、ライト動作（ライト転送）をアボートするとは、ライトデータをメモリカード２００に出力しないことを意味する。また、リード動作（リード転送）をアボートするとは、メモリカード２００からのリードデータを取り込まないことを意味する。
【００６８】
こうすることで、確実にデータ転送をアボートすることができるので、例えば制御マスタ１２６で実行される上位アプリケーションプログラムでは、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。また、上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止してメモリカード２００に対してアボートコマンドが送信されていないという事態を確実に回避できる。
【００６９】
図３において、コマンド制御部３１０及びデータ制御部３２０は、アクセス制御部（書き込み制御部、リード制御部）として機能する。即ち、このアクセス制御部は、メモリカード２００に対してコマンドを発行し、転送クロックに同期してメモリカード２００にアクセスする制御を行う。例えばアクセス制御部がライトコマンドを発行する場合、転送クロックに同期してライトデータを出力してメモリカード２００に該ライトデータの書き込み制御を行う。
【００７０】
２．１．１  処理例
図５に、第１の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ１３０の動作例のフロー図を示す。
【００７１】
ここで、カードコントローラ１３０では、コマンド発行制御部３１２がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ１３０はメモリカード２００に対するライト動作を開始する。そして、カードコントローラ１３０のコマンド発行制御部３１２が、ライト動作中にアボートコマンドを発行するものとする。
【００７２】
この場合、まず、コマンドエンドビット検出部３１４は、制御マスタ１２６で実行される上位アプリケーションプログラムからのアボートコマンドの発行指示により発行されるアボートコマンドのエンドビットを監視する（ステップＳ１０）。
【００７３】
ステップＳ１０においてアボートコマンドのエンドビットが検出されないとき（ステップＳ１０：Ｎ）、コマンド制御部３１０が、バッファ３３０がエンプティ状態で、且つ該アボートコマンドが送信中であるか否かを判別する（ステップＳ１１）。
【００７４】
バッファ３３０がエンプティ状態ではないとき（ステップＳ１１：Ｎ、ステップＳ１２：Ｎ）、データ制御部３２０は、ライト転送を行い（ステップＳ１３）、ライト転送が終了ではないとき（ステップＳ１４：Ｎ）、ステップＳ１０に戻る。ステップＳ１４においてライト転送が終了のとき（ステップＳ１４：Ｙ）、データ制御部３２０は、ライト転送完了通知を制御マスタ１２６に通知してライト転送を完了させ（ステップＳ１５）、一連の処理を終了する（エンド）。
【００７５】
ステップＳ１１において、バッファ３３０がエンプティ状態であるが、アボートコマンド送信中であることが判別されたとき（ステップＳ１１：Ｎ、ステップＳ１２：Ｙ）、クロック制御部３００が転送クロックＣＬＫの出力を停止させてライト転送を中断させて（ステップＳ１６）、ステップＳ１０に戻る。
【００７６】
ステップＳ１１において、バッファ３３０がエンプティ状態で、且つアボートコマンドが送信中であると判別されたとき（ステップＳ１１：Ｙ）、クロック制御部３００が強制的に転送クロックを出力してコマンド発行制御部３１２が該アボートコマンドを強制発行し（ステップＳ１７）、その後、データ制御部３２０は、データ転送をアボートして（ステップＳ１８）、一連の処理を終了する（エンド）。
【００７７】
このように、第１の実施形態によれば、ライト転送中にアボートコマンドの発行指示があったとき、バッファ３３０がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させる。そして、強制発行されるアボートコマンドのエンドビットがコマンドエンドビット検出部３１４により検出されたとき、又はアボートコマンドの送信中にバッファがエンプティ状態になったとき、ライト転送がアボートされるので、確実にライト転送をアボートすることができる。
【００７８】
図６に、第１の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ１３０の動作例のフロー図を示す。
【００７９】
ここで、カードコントローラ１３０では、コマンド発行制御部３１２がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ１３０はメモリカード２００に対するリード動作を開始する。そして、カードコントローラ１３０のコマンド発行制御部３１２が、リード動作中にアボートコマンドを発行するものとする。
【００８０】
この場合、まず、コマンドエンドビット検出部３１４は、制御マスタ１２６で実行される上位アプリケーションプログラムからのアボートコマンドの発行指示により発行されるアボートコマンドのエンドビットを監視する（ステップＳ２０）。
【００８１】
ステップＳ２０においてアボートコマンドのエンドビットが検出されないとき（ステップＳ２０：Ｎ）、コマンド制御部３１０が、バッファ３３０がフル状態で、且つ該アボートコマンドが送信中であるか否かを判別する（ステップＳ２１）。
【００８２】
バッファ３３０がフル状態ではないとき（ステップＳ２１：Ｎ、ステップＳ２２：Ｎ）、データ制御部３２０は、リード転送を行い（ステップＳ２３）、リード転送が終了ではないとき（ステップＳ２４：Ｎ）、ステップＳ２０に戻る。ステップＳ２４においてリード転送が終了のとき（ステップＳ２４：Ｙ）、データ制御部３２０は、リード転送完了通知を制御マスタ１２６に通知してリード転送を完了させ（ステップＳ２５）、一連の処理を終了する（エンド）。
【００８３】
ステップＳ２１において、バッファ３３０がフル状態であるが、アボートコマンド送信中であることが判別されたとき（ステップＳ２１：Ｎ、ステップＳ２２：Ｙ）、クロック制御部３００が転送クロックＣＬＫの出力を停止させてリード転送を中断させて（ステップＳ２６）、ステップＳ２０に戻る。
【００８４】
ステップＳ２１において、バッファ３３０がフル状態で、且つアボートコマンドが送信中であると判別されたとき（ステップＳ２１：Ｙ）、クロック制御部３００が強制的に転送クロックを出力してコマンド発行制御部３１２が該アボートコマンドを強制発行し（ステップＳ２７）、その後、データ制御部３２０は、データ転送をアボートして（ステップＳ２８）、一連の処理を終了する（エンド）。
【００８５】
このように、第１の実施形態によれば、リード転送中にアボートコマンドの発行指示があったとき、バッファ３３０がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させる。そして、強制発行されるアボートコマンドのエンドビットがコマンドエンドビット検出部３１４により検出されたとき、又はアボートコマンドの送信中にバッファがフル状態になったとき、リード転送がアボートされるので、確実にリード転送をアボートすることができる。
【００８６】
図７に、第１の実施形態におけるカードコントローラ１３０の動作例のタイミング図を示す。
【００８７】
第１の実施形態では、ライト転送又はリード転送中に、上位アプリケーションプログラムからのアボートコマンドの発行指示ＣＭＤ＿Ｇｏがあると、カードコントローラ１３０はメモリカード２００に対してアボートコマンドの発行を行う。このとき、バッファ３３０がエンプティ状態になると、一般的にはライト転送を中断するために転送クロックＣＬＫの出力を停止する。これに対して、第１の実施形態では、アボートコマンドの発行指示ＣＭＤ＿Ｇｏがあると、バッファ３３０がエンプティ状態か否かにかかわらず転送クロックＣＬＫを強制的に出力させる。そして、アボートコマンドのエンドビットの検出を条件に、ライト転送又はリード転送をアボートする。
【００８８】
従って、図７では、バッファ３３０がエンプティ状態になるタイミングからアボートコマンドのエンドビットの検出タイミングまでの期間が、転送クロックＣＬＫの強制発行期間（アボートコマンドの強制発行期間）となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部３００が、ＭＭＣ規格等で規定された通り転送クロックＣＬＫの出力を行う。
【００８９】
２．１．２  ハードウェア構成例
図８に、図１又は図３のカードコントローラ１３０のハードウェア構成例のブロック図を示す。
【００９０】
カードコントローラ１３０は、制御インタフェース（InterFace：Ｉ／Ｆ）回路１３２、ＦＩＦＯ（First-In First-Out)Ｉ／Ｆ回路１３４、コントローラ制御レジスタ部１３６、クロック制御部１３８、コマンド制御部１４０、データ制御部１４６、ドライバ部１５０を含む。コマンド制御部１４０は、アボートタイミング生成回路１４３、エンドタイミング生成回路１４４を含む。データ制御部１４６は、データシーケンサ１４８を含む。
【００９１】
制御Ｉ／Ｆ回路１３２は、システムバス１２２を介してＣＰＵ１１０やメモリ１２０との間で送受信される制御信号や制御データのインタフェース処理を行う。ＣＰＵ１１０は、制御Ｉ／Ｆ回路１３２を介してコントローラ制御レジスタ部１３６の各制御レジスタに制御データを設定できる。
【００９２】
ＦＩＦＯＩ／Ｆ回路１３４は、システムバス１２２を介してＣＰＵ１１０やメモリ１２０との間で送受信される制御信号や制御データのインタフェース処理を行う。システムバス１２２を介してメモリ１２０から読み出されたデータ（ライトデータ）は、ＦＩＦＯＩ／Ｆ回路１３４の図示しないＦＩＦＯ（広義にはバッファ）においてバッファリングされた後、データ制御部１４６に供給される。また、メモリカード２００から読み出されたデータ（リードデータ）は、ＦＩＦＯＩ／Ｆ回路１３４の図示しないＦＩＦＯ（バッファ）においてバッファリングされた後に、システムバス１２２を介してＣＰＵ１１０又はメモリ１２０に出力される。なお、このＦＩＦＯは、いわゆる先入れ先出し構造を有する必要はなく、ランダムアクセスが可能なメモリであってもよい。
【００９３】
コントローラ制御レジスタ部１３６は、１又は複数の制御レジスタを有し、各制御レジスタにはカードコントローラ１３０を制御するための制御データが設定される。コントローラ制御レジスタ部１３６の各制御レジスタに設定された制御データに対応した制御信号に基づいて、カードコントローラ１３０の各部が制御される。制御マスタ１２６からのアボートコマンドやその他のコマンドの発行指示ＣＭＤ＿Ｇｏは、コントローラ制御レジスタ部１３６のコマンド発行指示レジスタにセットされることでカードコントローラ１３０のコマンド制御部１４０及びデータ制御部１４６にコマンド発行指示が通知される。
【００９４】
また、制御Ｉ／Ｆ回路１３２又はコントローラ制御レジスタ部１３６は、ＣＰＵ１１０（制御マスタ１２６）に対して割り込み信号を発生する図示しない割り込み発生部を有する。
【００９５】
また、図８では、データ制御部１４６で検出されたデータ転送完了通知が、コントローラ制御レジスタ部１３６に入力され、制御マスタ１２６に対して割り込み通知されるようになっている。
【００９６】
クロック制御部１３８は、カードコントローラ１３０の各部にクロックを供給すると共に、カードバス２０を構成するクロックラインに転送クロックＣＬＫを出力する制御を行う。より具体的には、クロック制御部１３８は、図３のクロック制御部３００の機能を有し、ライト転送中にＦＩＦＯ（バッファ）がエンプティ状態になったとき、又はリード転送中にＦＩＦＯ（バッファ）がフル状態になったとき、転送クロックＣＬＫを停止させる制御を行う。また、クロック制御部１３８は、ライト転送中又はリード転送中にアボートコマンドの発行指示があったときには、ＦＩＦＯ（バッファ）がエンプティ状態又はリード状態かにかかわらず、転送クロックＣＬＫを強制的に出力する制御を行う。
【００９７】
コマンド制御部１４０は、図３のコマンド制御部３１０の機能を有する。コマンドシーケンサ１４２は、コントローラ制御レジスタ部１３６の制御レジスタの制御データ（コマンドデータ）に基づいて、カードバス２０を構成するコマンドラインを介してメモリカード２００に対してコマンドを発行する制御を行う。コマンドシーケンサ１４２は、コマンドの発行が完了すると、コマンド完了通知をコントローラ制御レジスタ部１３６及びデータ制御部１４６に出力する。コントローラ制御レジスタ部１３６に入力されたコマンド完了通知に基づき、制御マスタ１２６に対してコマンド完了通知割り込みを発行する。
【００９８】
また、コマンドシーケンサ１４２は、該コマンドに対応するメモリカード２００からのレスポンスを受信する制御を行う。コマンドシーケンサ１４２において受信されたレスポンスは、レスポンスデータとしてコントローラ制御レジスタ部１３６に出力される。
【００９９】
アボートタイミング生成回路１４３は、データ転送をアボートするアボートタイミングを指定するアボートタイミング信号ＡｂｏｒｔＳｔｏｐを生成する。エンドタイミング生成回路１４４は、転送クロックＣＬＫを強制発行する期間のエンドタイミングを生成する。エンドタイミング生成回路１４４は、図３のコマンドエンドビット検出部３１４の機能を有する。アボートタイミング生成回路１４３は、アボートの指示タイミングから該エンドタイミングまでを指定する強制発行期間指定信号ＡｂｏｒｔＲｕｎを生成する。
【０１００】
コマンド制御部１４０は、このアボートタイミング信号ＡｂｏｒｔＳｔｏｐや、強制発行期間指定信号ＡｂｏｒｔＲｕｎ、コマンドのエンドビットを検出したことを示すコマンド送信完了通知をデータ制御部１４６に出力できる。
【０１０１】
データ制御部１４６は、図３のデータ制御部３２０の機能を有する。データシーケンサ１４８は、コントローラ制御レジスタ部１３６の制御レジスタの制御データに基づいて、カードバス２０を構成するデータラインを介してメモリカード２００との間でデータを送受信する制御を行う。データ制御部１４６においてデータ転送完了が検出されると、コントローラ制御レジスタ部１３６に対してデータ転送完了通知を出力する。コントローラ制御レジスタ部１３６に入力されたデータ転送完了通知に基づき、制御マスタ１２６に対してデータ転送完了通知割り込みを発行する。
【０１０２】
ドライバ部１５０は、コマンドシーケンサ１４２の制御結果に基づいてコマンドラインの信号の入出力制御を行う。また、データシーケンサ１４８の制御結果に基づいてデータラインの信号の入出力制御を行う。
【０１０３】
図９に、図８のカードコントローラ１３０の構成要部のブロック図を示す。
【０１０４】
図９において、図８と同一部分には同一符号を付し、適宜説明を省略する。
【０１０５】
クロック制御部１３８は、転送クロックＣＬＫを生成するクロック生成回路４００、転送クロックＣＬＫの出力制御を行うクロックイネーブル生成回路４１０を含む。クロック生成回路４００は、クロックイネーブル生成回路４１０により生成されたクロックイネーブル信号ＣｌｏｃｋＥｎａｂｌｅによりイネーブル状態が指定された期間に、転送クロックＣＬＫを出力する。
【０１０６】
ＦＩＦＯＩ／Ｆ回路１３４は、バッファとしてのＦＩＦＯ１３５を含む。ＦＩＦＯ１３５には、ライト転送時のライトデータ、リード転送時のリードデータがバッファリングされる。ＦＩＦＯ１３５にバッファリングされる有効なライトデータがないとき、ＦＩＦＯＩ／Ｆ回路１３４は、データシーケンサ１４８に対してエンプティ状態を示すエンプティ信号Ｅｍｐｔｙを出力する。ＦＩＦＯ１３５が有効なリードデータで満杯のとき、ＦＩＦＯＩ／Ｆ回路１３４は、データシーケンサ１４８に対してフル状態を示すフル信号Ｆｕｌｌを出力する。
【０１０７】
制御マスタ１２６は、カードコントローラ１３０のコントローラ制御レジスタ部１３６にコマンドの発行に必要な設定情報を設定した後、コマンド発行指示を行うことで、メモリカード２００に対してコマンドを発行する制御を行う。例えば、制御マスタ１２６は、コントローラ制御レジスタ部１３６に、ＭＭＣ規格又はＣＥ−ＡＴＡ規格等で規定されたコマンドのインデックス番号（ＣＭＤ＿Ｉｎｄｅｘ）、当該コマンドがアボートコマンドであるか否かを示すコマンドタイプ情報（ＣＭＤ＿Ｔｙｐｅ）を指定する。そして、制御マスタ１２６がカードコントローラ１３０のコントローラ制御レジスタ部１３６のコマンド発行指示制御レジスタ（図示せず）にアクセスすることで、コマンド発行指示が行われる。このコマンド発行指示により、カードコントローラ１３０が上述のようにコントローラ制御レジスタ部１３６に設定された設定情報に対応したコマンドをメモリカード２００に対して発行する。
【０１０８】
コマンドシーケンサ１４２は、コントローラ制御レジスタ部１３６から、制御マスタ１２６によるコマンドの発行指示を示す発行指示信号ＣＭＤ＿Ｇｏを受けて、コマンドのインデックス番号ＣＭＤ＿Ｉｎｄｅｘ及びコマンドタイプ情報ＣＭＤ＿Ｔｙｐｅ等に対応したシーケンス制御を行って、上述のようにコントローラ制御レジスタ部１３６に設定された設定情報に対応したコマンドをメモリカード２００に対して発行する。データシーケンサ１４８もまた、コントローラ制御レジスタ部１３６で設定された各種情報に対応したシーケンス制御を行って、転送データの送受信制御を行う。
【０１０９】
エンドタイミング生成回路１４４は、コマンドシーケンサ１４２により状態遷移するステートやアボートコマンドのエンドビットの検出タイミングに基づいて、転送クロックＣＬＫを強制発行する期間のエンドタイミングを生成する。
【０１１０】
アボートタイミング生成回路１４３は、コマンドタイプ情報ＣＭＤ＿Ｔｙｐｅにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのエンドビットが検出されたときアボートタイミング信号ＡｂｏｒｔＳｔｏｐを出力する。また、アボートタイミング生成回路１４３は、コマンドタイプ情報ＣＭＤ＿Ｔｙｐｅにより当該コマンドがアボートコマンドか否かを検出し、このコマンドの発行指示を検出すると、該コマンドのスタートビットからエンドビットまでを強制発行期間とする強制発行期間指定信号ＡｂｏｒｔＲｕｎを出力する。
【０１１１】
データシーケンサ１４８は、アボートタイミング信号ＡｂｏｒｔＳｔｏｐを受け付けると、データ転送をアボートする。また、データシーケンサ１４８は、強制発行期間指定信号ＡｂｏｒｔＲｕｎを受け付けると、クロック制御部１３８により転送クロックＣＬＫを強制的に出力する制御を行う。
【０１１２】
クロックイネーブル生成回路４１０には、コマンドシーケンサ１４２からコマンドイネーブル信号ＣＭＤ＿Ｅｎａｂｌｅ、データシーケンサ１４８からデータイネーブル信号ＤＡＴ＿Ｅｎａｂｌｅ及びディセーブル信号Ｄｉｓａｂｌｅが入力される。コマンドイネーブル信号ＣＭＤ＿Ｅｎａｂｌｅは、コマンドシーケンサ１４２がＩＤＬＥステート以外のステートに遷移しているときにアクティブとなる信号である。データイネーブル信号ＤＡＴ＿Ｅｎａｂｌｅは、データシーケンサ１４８がＩＤＬＥステート以外のステートに遷移しているときにアクティブとなる信号である。ディセーブル信号Ｄｉｓａｂｌｅは、ライト転送時にＦＩＦＯ１３５がエンプティ状態となり転送クロックＣＬＫを停止させるためのステート、又はリード転送時にＦＩＦＯ１３５がフル状態となる転送クロックＣＬＫを停止させるためのステートに遷移しているときにアクティブとなる信号である。
【０１１３】
図１０に、図９のクロックイネーブル生成回路４１０の構成例の回路図を示す。
【０１１４】
このように、クロックイネーブル生成回路４１０は、コマンドイネーブル信号ＣＭＤ＿Ｅｎａｂｌｅとデータイネーブル信号ＤＡＴ＿Ｅｎａｂｌｅとの論理和演算結果を、ディセーブル信号Ｄｉｓａｂｌｅでマスクすることで、クロックイネーブル信号ＣｌｏｃｋＥｎａｂｌｅを生成する。従って、強制発行制御を行うためには、強制発行条件により、上記の転送クロックＣＬＫを停止させるためのステートから別のステートに遷移させることで、ディセーブル信号Ｄｉｓａｂｌｅを非アクティブにでき、容易にクロックイネーブル信号ＣｌｏｃｋＥｎａｂｌｅをアクティブに設定できる。
【０１１５】
図１１に、図９のドライバ部１５０の構成の概要を示す。
【０１１６】
ドライバ部１５０は、クロックラインを駆動して転送クロックＣＬＫを出力するクロック出力ドライバと、コマンドラインに接続される第１の入出力ドライバと、データラインに接続される第２の入出力ドライバとを含む。
【０１１７】
第１の入出力ドライバは、コマンドシーケンサ１４２によって制御されコマンドラインを駆動して制御コマンドを出力する出力ドライバと、コマンドラインを介して入力されるレスポンスを受信するための入力ドライバとを含む。出力ドライバは、コマンドシーケンサ１４２からの出力制御信号ＣＭＤ＿Ｏｅがクロック出力ドライバの入力信号ＣＬＫ＿Ｏｕｔで同期化された信号に基づいて、コマンドシーケンサ１４２からの出力信号ＣＭＤ＿Ｏｕｔが入力信号ＣＬＫ＿Ｏｕｔで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部１３６の制御レジスタの内容に基づいてコマンドシーケンサ１４２によって生成された制御コマンドが、第１の入出力ドライバの出力ドライバによりコマンドラインに出力される。そして、該制御コマンドに対応してメモリカード２００から出力されたレスポンスが、第１の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックＣＬＫで同期化されてコマンドシーケンサ１４２に入力信号ＣＭＤ＿Ｉｎとして入力される。
【０１１８】
第２の入出力ドライバは、データシーケンサ１４８によって制御されデータラインを駆動して転送データを出力する出力ドライバと、データラインを介して入力される転送データを受信するための入力ドライバとを含む。出力ドライバは、データシーケンサ１４８からの出力制御信号ＤＡＴ＿Ｏｅがクロック出力ドライバの入力信号ＣＬＫ＿Ｏｕｔで同期化された信号に基づいて、データシーケンサ１４８からの出力信号ＤＡＴ＿Ｏｕｔが入力信号ＣＬＫ＿Ｏｕｔで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部１３６の制御レジスタの内容に基づいて、ＦＩＦＯＩ／Ｆ回路１３４からのデータが、データシーケンサ１４８の制御により、転送データとして第２の入出力ドライバの出力ドライバを介してデータラインに出力される。そして、メモリカード２００から出力されたレスポンスが、第１の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックＣＬＫで同期化されてデータシーケンサ１４８に入力信号ＤＡＴ＿Ｉｎとして入力される。なお、図９では、転送データが４ビットデータである。
【０１１９】
図１２に、図９のコマンドシーケンサ１４２の動作説明図を示す。
【０１２０】
コマンドシーケンサ１４２は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【０１２１】
電源投入（ＳＱ１）後の初期状態では、コマンドシーケンサ１４２は、ＩＤＬＥステートＳＴ１に遷移する。制御マスタ１２６で実行される上位アプリケーションからメモリカード２００に対して制御コマンドの発行指示（ＳＱ２）があると、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートＳＴ２に遷移する。
【０１２２】
ＳＥＮＤ＿ＣＭＤステートＳＴ２では、制御マスタ１２６が、カードコントローラ１３０の制御レジスタに制御コマンドを発行するためのコマンド指定情報やそのパラメータ情報を制御レジスタに設定する。そして、上位アプリケーションからの制御コマンドの発行指示を受けて制御マスタ１２６が、カードコントローラ１３０の図示しない制御コマンド発行指示レジスタにアクセスしてコマンドのエンドビットを送信すると（ＳＱ３）、コマンドシーケンサ１４２は、ＷＡＩＴ＿ＲＥＳＰステートＳＴ３に遷移する。
【０１２３】
ＷＡＩＴ＿ＲＥＳＰステートＳＴ３では、所定のタイムアウト期間だけ、上記のコマンドに対応したレスポンスのスタートビットを待つ。ＷＡＩＴ＿ＲＥＳＰステートＳＴ３において、所定のタイムアウト期間内にレスポンスのスタートビットを検出すると、コマンドシーケンサ１４２は、ＲＣＶ＿ＲＥＳＰステートＳＴ４に遷移する（ＳＱ４）。ＷＡＩＴ＿ＲＥＳＰステートＳＴ３において、所定のタイムアウト期間が経過すると、コマンドシーケンサ１４２は、ＥＲＲ＿ＰＲＯステートＳＴ６に遷移する（ＳＱ１００）。
【０１２４】
ＲＣＶ＿ＲＥＳＰステートＳＴ４では、コマンドシーケンサ１４２が、コマンドラインを介してメモリカード２００からのレスポンスデータを受信する。そして、レスポンスのエンドビットの受信が完了する（ＳＱ５）と、コマンドシーケンサ１４２は、ＥＮＤ８ＣＬＫステートＳＴ５に遷移する。
【０１２５】
ＥＮＤ８ＣＬＫステートＳＴ５では、コマンド発行間隔期間である転送クロックＣＬＫの８クロック分だけ待機する。そして、ＲＣＶ＿ＲＥＳＰステートＳＴ４において受信されたレスポンスのエラーが検出されているとき、又はレスポンスがタイムアウト期間内に受信されないとき、コマンドシーケンサ１４２は、ＥＲＲ＿ＰＲＯステートＳＴ６に遷移する（ＳＱ６）。ＥＲＲ＿ＰＲＯステートＳＴ６では、制御Ｉ／Ｆ回路１３２又はコントローラ制御レジスタ部１３６が、検出されたエラーに応じて制御マスタ１２６にエラーが発生した旨の割り込みを発生させる。その後、コマンドシーケンサ１４２は、ＥＲＲ＿ＰＲＯステートＳＴ６からＩＤＬＥステートＳＴ１に遷移する（ＳＱ７）。
【０１２６】
ＲＣＶ＿ＲＥＳＰステートＳＴ４において受信されたレスポンスが正常のとき、コマンドシーケンサ１４２は、Ｃｍｄ＿ＣｍｐステートＳＴ７に遷移する（ＳＱ８）。Ｃｍｄ＿ＣｍｐステートＳＴ７では、制御Ｉ／Ｆ回路１３２又はコントローラ制御レジスタ部１３６が、制御マスタ１２６にコマンド完了通知割り込みを発生させる。その後、コマンドシーケンサ１４２は、Ｃｍｄ＿ＣｍｐステートＳＴ７からＩＤＬＥステートＳＴ１に遷移する（ＳＱ９）。
【０１２７】
図１３に、図９のデータシーケンサ１４８の動作説明図を示す。
【０１２８】
データシーケンサ１４８は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【０１２９】
電源投入（ＳＱ１０）後の初期状態では、データシーケンサ１４８は、ＩＤＬＥステートＳＴ１０に遷移する。制御マスタ１２６で実行される上位アプリケーションからメモリカード２００に対して制御コマンドの発行指示があると、その制御コマンドの種類によって遷移先のステートが変わる。
【０１３０】
ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドがライトコマンドのとき（ＳＱ１１）、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ１１に遷移する。
【０１３１】
ＣＨＫ＿ＢＵＳＹステートＳＴ１１では、メモリカード２００がビジー状態か否かが検出される。ＣＨＫ＿ＢＵＳＹステートＳＴ１１において、メモリカード２００の非ビジー状態が検出されたとき（ＳＱ１２）、データシーケンサ１４８は、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２に遷移する。ＣＨＫ＿ＢＵＳＹステートＳＴ１１において、メモリカード２００のビジー状態が検出されたとき（ＳＱ１３）、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ１１を繰り返す。
【０１３２】
ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２において、データシーケンサ１４８は、メモリカード２００に対してライトデータを送出する制御を行う。１ブロック分のライトデータを送出すると（ＳＱ１４）、データシーケンサ１４８は、ＣＲＣＳＴステートＳＴ１３に遷移する。
【０１３３】
また、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐが非アクティブでＦＩＦＯ１３５がエンプティ状態、又は強制発行期間指定信号ＡｂｏｒｔＲｕｎが非アクティブでＦＩＦＯ１３５がエンプティ状態になると、データシーケンサ１４８は、ＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０に遷移する（ＳＱ６０）。一方、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブでＦＩＦＯ１３５がエンプティ状態、又は強制発行期間指定信号ＡｂｏｒｔＲｕｎがアクティブでＦＩＦＯ１３５がエンプティ状態になると、データシーケンサ１４８は、ＡＢＴステートＳＴ５０に遷移する（ＳＱ５２）。
【０１３４】
ＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０では、データシーケンサ１４８が、転送クロックＣＬＫを停止させる制御を行う。データシーケンサ１４８がＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０に遷移しているときにディセーブル信号Ｄｉｓａｂｌｅをアクティブにすることで、クロックイネーブル信号ＣｌｏｃｋＥｎａｂｌｅが非アクティブとなり、転送クロックＣＬＫの供給が停止される。
【０１３５】
ＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０において、ＦＩＦＯ１３５がエンプティ状態でなくなると、データシーケンサ１４８は、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２に遷移する（ＳＱ６１）。また、ＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐ又は強制発行期間指定信号ＡｂｏｒｔＲｕｎがアクティブとなると、ＡＢＴステートＳＴ５０に遷移する（ＳＱ６２）。
【０１３６】
ＣＲＣＳＴステートＳＴ１３では、データシーケンサ１４８は、ライトデータのＣＲＣステータスをチェックし、ＣＲＣステータスが正常で次のブロックの転送が必要なとき（ＳＱ１５）、データシーケンサ１４８は、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２に遷移する。ＣＲＣＳＴステートＳＴ１３において、ＣＲＣステータスが正常で次のブロックの転送が不要なとき（ＳＱ１６）、データシーケンサ１４８は、ＥＮＤ８ＣＬＫステートＳＴ２０に遷移する。
【０１３７】
ＣＨＫ＿ＢＵＳＹステートＳＴ１１又はＣＲＣＳＴステートＳＴ１３において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブになると（アボートコマンドのエンドビットを検出すると）、ＡＢＴステートＳＴ５０に遷移する（ＳＱ５１、ＳＱ５３）。
【０１３８】
ＥＮＤ８ＣＬＫステートＳＴ２０では、コマンド発行間隔期間である転送クロックＣＬＫの８クロック分だけ待機する。そして、転送クロックＣＬＫの８クロック分の期間が経過する（ＳＱ２０）と、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ２１に遷移する。
【０１３９】
ＣＨＫ＿ＢＵＳＹステートＳＴ２１では、メモリカード２００がビジー状態か否かが検出される。ＣＨＫ＿ＢＵＳＹステートＳＴ２１において、メモリカード２００の非ビジー状態が検出されたとき（ＳＱ２２）、データシーケンサ１４８は、Ｔｒａｎ＿ＣｍｐステートＳＴ２２に遷移する。ＣＨＫ＿ＢＵＳＹステートＳＴ２１において、メモリカード２００のビジー状態が検出されたとき（ＳＱ２１）、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ２１を繰り返す。
【０１４０】
Ｔｒａｎ＿ＣｍｐステートＳＴ２２では、データシーケンサ１４８が、制御マスタ１２６に対して転送終了割り込みを発生させる制御が行われる。転送終了割り込みを発生した後（ＳＱ２３）、データシーケンサ１４８は、ＩＤＬＥステートＳＴ１０に遷移する。
【０１４１】
ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドがリードコマンドのとき（ＳＱ３１）、データシーケンサ１４８は、ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１に遷移する。
【０１４２】
ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１では、データシーケンサ１４８は、メモリカード２００から１ブロック分のリードデータを読み出す制御を行う。次のブロックのリードデータを読み出す必要があるとき（ＳＱ３２）、データシーケンサ１４８は、ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１を繰り返す。ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１において、次のブロックのリードデータを読み出す必要がないとき（ＳＱ３３）、データシーケンサ１４８は、ＥＮＤ８ＣＬＫステートＳＴ３２に遷移する。
【０１４３】
ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐが非アクティブでＦＩＦＯ１３５がフル状態、又は強制発行期間指定信号ＡｂｏｒｔＲｕｎが非アクティブでＦＩＦＯ１３５がフル状態になると、データシーケンサ１４８は、ＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１に遷移する（ＳＱ６５）。一方、ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブでＦＩＦＯ１３５がフル状態、強制発行期間指定信号ＡｂｏｒｔＲｕｎがアクティブでＦＩＦＯ１３５がフル状態になると、データシーケンサ１４８は、ＡＢＴステートＳＴ５０に遷移する（ＳＱ５４）。
【０１４４】
ＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１では、データシーケンサ１４８が、転送クロックＣＬＫを停止させる制御を行う。データシーケンサ１４８がＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１に遷移しているときにディセーブル信号Ｄｉｓａｂｌｅをアクティブにすることで、クロックイネーブル信号ＣｌｏｃｋＥｎａｂｌｅが非アクティブとなり、転送クロックＣＬＫの供給が停止される。
【０１４５】
ＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１において、ＦＩＦＯ１３５がフル状態でなくなると、データシーケンサ１４８は、ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１に遷移する（ＳＱ６６）。また、ＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐ又は強制発行期間指定信号ＡｂｏｒｔＲｕｎがアクティブとなると、ＡＢＴステートＳＴ５０に遷移する（ＳＱ６７）。
【０１４６】
ＥＮＤ８ＣＬＫステートＳＴ３２では、コマンド発行間隔期間である転送クロックＣＬＫの８クロック分だけ待機する。そして、転送クロックＣＬＫの８クロック分の期間が経過する（ＳＱ３４）と、データシーケンサ１４８は、Ｔｒａｎ＿ＣｍｐステートＳＴ２２に遷移する。
【０１４７】
ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドが、Ｒ１ｂレスポンスを有するコマンドのとき（ＳＱ４４）、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３に遷移する。
【０１４８】
ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３では、データシーケンサ１４８は、メモリカード２００からのレスポンスを受信し、メモリカード２００の種類（規格、バージョン）によって変化するビジー状態の検出タイミングをマスク制御して特定する。次に、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３において、ビジー状態の検出タイミングになると、データシーケンサ１４８は、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２に遷移する（ＳＱ４５）。
【０１４９】
ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２では、メモリカード２００がビジー状態か否かが検出される。ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２においてメモリカード２００のビジー状態が検出されたとき（ＳＱ４６）、データシーケンサ１４８は、Ｒ１ｂ＿ＢＵＳＹステートＳＴ４４に遷移する。ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２においてメモリカード２００の非ビジー状態が検出されたとき（ＳＱ４７）、データシーケンサ１４８は、Ｒ１ｂＣＯＭＰステートＳＴ４５に遷移する。
【０１５０】
Ｒ１ｂ＿ＢＵＳＹステートＳＴ４４において、メモリカード２００の非ビジー状態が検出されたとき（ＳＱ４８）、データシーケンサ１４８は、Ｒ１ｂＣＯＭＰステートＳＴ４５に遷移する。
【０１５１】
Ｒ１ｂＣＯＭＰステートＳＴ４５では、図示しないアボート処理通知部がアボート処理の終了を制御マスタ１２６に通知する（割り込み通知、ステータスレジスタによるステータス通知）。その後、データシーケンサ１４８は、ＩＤＬＥステートＳＴ１０に遷移する（ＳＱ４９）。なお、図１３において、Ｒ１ｂＣＯＭＰステートＳＴ４５を、Ｔｒａｎ＿ＣｍｐステートＳＴ２２と共通化してもよい。
【０１５２】
ＡＢＴステートＳＴ５０では、次の状態遷移タイミングで、当該ステートからＭＡＳＫ＿Ｒ１Ｂ＿ＢＵＳＹステートＳＴ４３に遷移する（ＳＱ５５）。
【０１５３】
図１３の動作を行うデータシーケンサ１４８では、アボート処理を、Ｒ１ｂレスポンスの制御シーケンスで行うようにしたので、データシーケンサ１４８に無駄なステートを設けることなく、確実にアボート処理を終了させることができる。
【０１５４】
また、第１の実施形態によれば、ライト動作又はリード動作終了後に、ＭＭＣ規格等で規定されているコマンド発行間隔期間である転送クロックＣＬＫの８クロックに相当する期間を待つＥＮＤ８ＣＬＫステートに遷移させてからＴｒａｎ＿ＣｍｐステートＳＴ２２に遷移させるようにしたので、コマンド発行直前に上述のコマンド発行間隔を管理することなく、いつでも次のコマンドを発行できる状態でコマンドの発行制御を開始できるようになる。
【０１５５】
図１４に、第１の実施形態におけるカードコントローラ１３０のライト動作中のアボート処理の動作例のタイミング図を示す。
【０１５６】
図１４では、コマンドシーケンサ１４２のステートやデータシーケンサ１４８のステートも示し、図１４では図１２又は図１３の各ステートを分割した詳細なステートを示している。
【０１５７】
図１４では、ライト動作中に、アボートコマンドの発行指示があると（ＴＧ１０）、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートに遷移すると共に、アボートタイミング生成回路１４３が、強制発行期間指定信号ＡｂｏｒｔＲｕｎをＨレベルに設定する。
【０１５８】
その後、コマンド制御部１４０が、アボートコマンドの送出を開始すると共に、該アボートコマンドのエンドビットを監視する。アボートコマンドのエンドビットが検出されるまでに、ＦＩＦＯ１３５がエンプティ状態になったとき（ＴＧ１１）、データシーケンサ１４８は、ＡＢＴステートに遷移する。その後、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する。
【０１５９】
データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移して、メモリカード２００の非ビジー状態の検出を開始し、メモリカード２００の非ビジー状態が検出されると、Ｔｒａｎ＿Ｃｍｐステートに遷移する。Ｔｒａｎ＿Ｃｍｐステートにおいて、アボート処理の終了通知を制御マスタ１２６に対して行う。
【０１６０】
なお、ＦＩＦＯ１３５がエンプティ状態となるタイミングが遅れて、先にアボートコマンドのエンドビットが検出されたとき、該エンドビットの検出を条件にデータシーケンサ１４８がＡＢＴステートに遷移し、その後、上記と同様にライト動作がアボートされる。
【０１６１】
図１５に、第１の実施形態におけるカードコントローラ１３０のリード動作中のアボート処理の動作例のタイミング図を示す。
【０１６２】
図１５では、コマンドシーケンサ１４２のステートやデータシーケンサ１４８のステートも示し、図１５では図１２又は図１３の各ステートを分割した詳細なステートを示している。
【０１６３】
図１５では、リード動作中に、アボートコマンドの発行指示があると（ＴＧ２０）、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートに遷移すると共に、アボートタイミング生成回路１４３が、強制発行期間指定信号ＡｂｏｒｔＲｕｎをＨレベルに設定する。
【０１６４】
その後、コマンド制御部１４０が、アボートコマンドの送出を開始すると共に、該アボートコマンドのエンドビットを監視する。アボートコマンドのエンドビットが検出されるまでに、ＦＩＦＯ１３５がフル状態になったとき（ＴＧ２１）、データシーケンサ１４８は、ＡＢＴステートに遷移する。その後、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する。
【０１６５】
データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移して、メモリカード２００の非ビジー状態の検出を開始し、メモリカード２００の非ビジー状態が検出されると、Ｔｒａｎ＿Ｃｍｐステートに遷移する。Ｔｒａｎ＿Ｃｍｐステートにおいて、アボート処理の終了通知を制御マスタ１２６に対して行う。
【０１６６】
なお、ＦＩＦＯ１３５がフル状態となるタイミングが遅れて、先にアボートコマンドのエンドビットが検出されたとき、該エンドビットの検出を条件にデータシーケンサ１４８がＡＢＴステートに遷移し、その後、上記と同様にリード動作がアボートされる。
【０１６７】
このように、第１の実施形態では、ライト動作中又はリード動作中にアボートコマンドの発行指示があったとき、ＦＩＦＯ１３５がエンプティ状態か否か又はフル状態か否かにかかわらず、アボートコマンドを強制的に発行させる。そして、アボートコマンド送信中にＦＩＦＯ１３５がエンプティ状態になったとき、アボートコマンド送信中にＦＩＦＯ１３５がフル状態になったとき、或いは、該アボートコマンドのエンドビットを検出したときに、ライト転送又はリード転送をアボートする。
【０１６８】
２．２  第２の実施形態
第１の実施形態におけるカードコントローラ１３０は、アボートコマンドの発行指示があったときにバッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させていたが、本発明は、これに限定されるものではない。第２の実施形態におけるカードコントローラ１３０は、アボートコマンドのエンドビットを送信した時点で、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させる。
【０１６９】
第２の実施形態におけるカードコントローラ１３０の構成例は、図３に示す第１の実施形態におけるカードコントローラ１３０の構成例と同様であるため、図示を省略する。なお、コマンドエンドビット検出部３１４の機能は、例えばコマンドシーケンサ１４２又はアボートタイミング生成回路５００によって実現される。
【０１７０】
但し、第２の実施形態におけるカードコントローラ１３０では、ライト動作中にバッファがエンプティの状態のとき、クロック制御部が転送クロックの出力を停止させる制御を行う場合に、コマンドエンドビット検出部によりアボートコマンドのエンドビットが検出されたとき、クロック制御部が、バッファがエンプティ状態か否かにかかわらず、転送クロックを出力させる制御を行って、ライト動作中のアボートコマンドを強制的に発行させた後、該ライト動作をアボートする。また、第２の実施形態におけるカードコントローラ１３０では、リード動作中にバッファがフルの状態のとき、クロック制御部が転送クロックの出力を停止させる制御を行う場合に、コマンドエンドビット検出部によりアボートコマンドのエンドビットが検出されたとき、クロック制御部が、バッファがフル状態か否かにかかわらず、転送クロックを出力させる制御を行って、リード動作中のアボートコマンドを強制的に発行させた後、該リード動作をアボートする。
【０１７１】
こうすることで、メモリカード２００がアボートコマンドを受け付けるまで、バッファがエンプティ状態又はフル状態になったときに転送クロックの出力が停止されるため、メモリカード２００に無効なデータを送信するといったことがない。
【０１７２】
２．２．１  処理例
図１６に、第２の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ１３０の動作例のフロー図を示す。
【０１７３】
ここで、カードコントローラ１３０では、コマンド発行制御部３１２がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ１３０はメモリカード２００に対するライト動作を開始する。そして、カードコントローラ１３０のコマンド発行制御部３１２が、ライト動作中にアボートコマンドを発行するものとする。
【０１７４】
この場合、まず、コマンドエンドビット検出部３１４が、ライト動作中にコマンド発行制御部３１２により発行されるアボートコマンドのエンドビットの有無を検出する（ステップＳ３０）。
【０１７５】
ステップＳ３０においてアボートコマンドのエンドビットが検出されなかったとき（ステップＳ３０：Ｎ）、データ制御部３２０が、バッファ３３０がエンプティ状態か否かを判別する（ステップＳ３１）。
【０１７６】
バッファ３３０がエンプティ状態ではないと判別されたとき（ステップＳ３１：Ｎ）、データ制御部３２０は、ライト転送を行い（ステップＳ３２）、ライト転送が終了ではないとき（ステップＳ３３：Ｎ）、ステップＳ３０に戻る。ステップＳ３３においてライト転送が終了のとき（ステップＳ３３：Ｙ）、データ制御部３２０は、ライト転送完了通知を制御マスタ１２６に通知してライト転送を完了させ（ステップＳ３４）、一連の処理を終了する（エンド）。
【０１７７】
一方、ステップＳ３１において、バッファ３３０がエンプティ状態であると判別されたとき（ステップＳ３１：Ｙ）、クロック制御部３００が転送クロックＣＬＫの出力を停止させてライト転送を中断させて（ステップＳ３５）、ステップＳ３０に戻り、バッファ３３０がエンプティ状態でなくなるまで待つ。
【０１７８】
ステップＳ３０において、アボートコマンドのエンドビットが検出されたとき（ステップＳ３０：Ｙ）、クロック制御部３００が、転送クロックＣＬＫを強制的に出力させてアボートコマンドを強制発行させ（ステップＳ３６）、データ制御部３２０は、データ転送
をアボートして（ステップＳ３７）、一連の処理を終了する（エンド）。
【０１７９】
このように、第２の実施形態によれば、ライト転送中にアボートコマンドのエンドビットが検出されたとき、バッファ３３０がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送をアボートすることができる。
【０１８０】
図１７に、第２の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ１３０の動作例のフロー図を示す。
【０１８１】
ここで、カードコントローラ１３０では、コマンド発行制御部３１２がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ１３０はメモリカード２００に対するリード動作を開始する。そして、カードコントローラ１３０のコマンド発行制御部３１２が、リード動作中にアボートコマンドを発行するものとする。
【０１８２】
この場合、まず、コマンドエンドビット検出部３１４が、リード動作中にコマンド発行制御部３１２により発行されるアボートコマンドのエンドビットの有無を検出する（ステップＳ４０）。
【０１８３】
ステップＳ４０においてアボートコマンドのエンドビットが検出されなかったとき（ステップＳ４０：Ｎ）、データ制御部３２０が、バッファ３３０がフル状態か否かを判別する（ステップＳ４１）。
【０１８４】
バッファ３３０がフル状態ではないと判別されたとき（ステップＳ４１：Ｎ）、データ制御部３２０は、リード転送を行い（ステップＳ４２）、リード転送が終了ではないとき（ステップＳ４３：Ｎ）、ステップＳ４０に戻る。ステップＳ４３においてリード転送が終了のとき（ステップＳ４３：Ｙ）、データ制御部３２０は、リード転送完了通知を制御マスタ１２６に通知してリード転送を完了させ（ステップＳ４４）、一連の処理を終了する（エンド）。
【０１８５】
一方、ステップＳ４１において、バッファ３３０がフル状態であると判別されたとき（ステップＳ４１：Ｙ）、クロック制御部３００が転送クロックＣＬＫの出力を停止させてリード転送を中断させて（ステップＳ４５）、ステップＳ４０に戻り、バッファ３３０がエンプティ状態でなくなるまで待つ。
【０１８６】
ステップＳ４０において、アボートコマンドのエンドビットが検出されたとき（ステップＳ４０：Ｙ）、クロック制御部３００が、転送クロックＣＬＫを強制的に出力させてアボートコマンドを強制発行させ（ステップＳ４６）、データ制御部３２０は、データ転送をアボートして（ステップＳ４７）、一連の処理を終了する（エンド）。
【０１８７】
このように、第２の実施形態によれば、リード転送中にアボートコマンドのエンドビットが検出されたとき、バッファ３３０がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にリード転送をアボートすることができる。
【０１８８】
図１８に、第２の実施形態におけるカードコントローラ１３０の動作例のタイミング図を示す。
【０１８９】
第２の実施形態では、ライト転送中にバッファ３３０がエンプティ状態又はリード転送中にバッファ３３０がフル状態になると、転送クロックＣＬＫの出力が停止される。そして、バッファ３３０のエンプティ状態又はフル状態が解除されるまで待つ。このとき、アボートコマンドの発行指示があり、カードコントローラ１３０の内部で該アボートコマンドのエンドビットを検出したとき（Ｅビット検出信号）、転送クロックＣＬＫを強制的に出力させてアボートコマンドを強制発行する。
【０１９０】
従って、図１８では、アボートコマンドのエンドビットの検出に基づいて転送クロックＣＬＫの出力が再開されるタイミングから該アボートコマンドを送信完了するタイミングまでの期間が、転送クロックＣＬＫの強制発行期間（アボートコマンドの強制発行期間）となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部３００が、ＭＭＣ規格等で規定された通り転送クロックＣＬＫの出力を行う。
【０１９１】
２．２．２  ハードウェア構成例
このような第２の実施形態におけるカードコントローラ１３０の構成例は、図８に示す第１の実施形態におけるカードコントローラ１３０と同様の構成を有しているため図示を省略する。但し、第２の実施形態では、第１の実施形態に対し、エンドタイミング生成回路１４４が省略されると共にコマンド制御部１４０からデータ制御部１４６に対して強制発行期間指定信号ＡｂｏｒｔＲｕｎの供給が省略され、第１の実施形態に対してデータシーケンサの動作が異なる。
【０１９２】
図１９に、第２の実施形態におけるカードコントローラ１３０の構成要部のブロック図を示す。
【０１９３】
図１９において、図９と同一部分には同一符号を付し、適宜説明を省略する。図１９では、アボートタイミング生成回路５００が、コマンドタイプ情報ＣＭＤ＿Ｔｙｐｅにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのエンドビットが検出されたときアボートタイミング信号ＡｂｏｒｔＳｔｏｐを出力する。第１の実施形態ではアボートタイミング信号ＡｂｏｒｔＳｔｏｐ又は強制発行期間指定信号ＡｂｏｒｔＲｕｎにより状態遷移したシーケンスが、第２の実施形態のデータシーケンサ５１０は、アボートタイミング信号ＡｂｏｒｔＳｔｏｐにより状態遷移する点が異なる。
【０１９４】
例えばデータシーケンサ５１０は、図１３の状態遷移図において、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２で、アボートタイミング信号ＡｂｏｒｔＳｔｏｐが非アクティブでＦＩＦＯ１３５がエンプティ状態になると、ＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０に遷移する（ＳＱ６０）。一方、ＷＲ＿ＢＬ＿ＤＡＴステートＳＴ１２において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブでＦＩＦＯ１３５がエンプティ状態になると、データシーケンサ５１０は、ＡＢＴステートＳＴ５０に遷移する（ＳＱ５２）。
【０１９５】
また、ＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６０において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなると、データシーケンサ５１０は、ＡＢＴステートＳＴ５０に遷移する（ＳＱ６２）。
【０１９６】
更に、ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐが非アクティブでＦＩＦＯ１３５がフル状態になると、データシーケンサ５１０は、ＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１に遷移する（ＳＱ６５）。一方、ＲＤ＿ＢＬ＿ＤＡＴステートＳＴ３１において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブでＦＩＦＯ１３５がフル状態になると、データシーケンサ５１０は、ＡＢＴステートＳＴ５０に遷移する（ＳＱ５４）。
【０１９７】
また、ＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートＳＴ６１において、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなると、データシーケンサ５１０は、ＡＢＴステートＳＴ５０に遷移する（ＳＱ６７）。
【０１９８】
図２０に、第２の実施形態におけるカードコントローラ１３０のライト動作中のアボート処理の動作例のタイミング図を示す。
【０１９９】
図２０では、コマンドシーケンサ１４２のステートやデータシーケンサ５１０のステートも示し、図２０では図１２又は図１３の各ステートを分割した詳細なステートを示している。
【０２００】
図２０では、ライト動作中に、アボートコマンドの発行指示があると（ＴＧ３０）、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートに遷移する。そして、該アボートコマンドのエンドビットが検出される前に、該アボートコマンドの送信中に、ＦＩＦＯ１３５がエンプティ状態になると（ＴＧ３１）、データシーケンサ５１０は、ＷＲ＿ＢＬ＿ＤＡＴステートからＷＲ＿ＦＩＦＯ＿ＢＵＳＹステートに遷移し、クロックイネーブルＣｌｏｃｋＥｎａｂｌｅが非アクティブとなり転送クロックＣＬＫが停止する。
【０２０１】
その後、ＦＩＦＯ１３５がエンプティ状態でなくなると、データシーケンサ５１０は、ＷＲ＿ＢＬ＿ＤＡＴステートに遷移する。ここで、アボートコマンドのエンドビットが検出されると、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなり、データシーケンサ５１０は、ＡＢＴステートに遷移する（ＴＧ３２）。その後、データシーケンサ５１０は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する。
【０２０２】
図２１に、第２の実施形態におけるカードコントローラ１３０のリード動作中のアボート処理の動作例のタイミング図を示す。
【０２０３】
図２１では、コマンドシーケンサ１４２のステートやデータシーケンサ５１０のステートも示し、図２１では図１２又は図１３の各ステートを分割した詳細なステートを示している。
【０２０４】
図２１では、リード動作中に、アボートコマンドの発行指示があると（ＴＧ４０）、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートに遷移する。そして、該アボートコマンドのエンドビットが検出される前に、該アボートコマンドの送信中に、ＦＩＦＯ１３５がフル状態になると（ＴＧ４１）、データシーケンサ５１０は、ＲＤ＿ＢＬ＿ＤＡＴステートからＲＤ＿ＦＩＦＯ＿ＢＵＳＹステートに遷移し、クロックイネーブルＣｌｏｃｋＥｎａｂｌｅが非アクティブとなり転送クロックＣＬＫが停止する。
【０２０５】
その後、ＦＩＦＯ１３５がフル状態でなくなると、データシーケンサ５１０は、ＲＤ＿ＢＬ＿ＤＡＴステートに遷移する。ここで、アボートコマンドのエンドビットが検出されると、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなり、データシーケンサ５１０は、ＡＢＴステートに遷移する（ＴＧ４２）。その後、データシーケンサ５１０は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する。
【０２０６】
２．３  第３の実施形態
また、本発明は第１又は第２の実施形態に係るものに限定されるものではない。第３の実施形態におけるカードコントローラ１３０は、アボートコマンドのスタートビットを送信した時点で、バッファがエンプティ状態か否か又はフル状態か否かにかかわらず該アボートコマンドを強制的に発行させる。
【０２０７】
図２２に、第３の実施形態におけるカードコントローラ１３０の構成例のブロック図を
示す。図２２において、図３と同一部分には同一符号を付し、適宜説明を省略する。
【０２０８】
カードコントローラ１３０は、クロック制御部３００と、コマンド制御部３１０と、データ制御部３２０と、バッファ３３０とを含む。
【０２０９】
コマンド制御部３１０は、コマンドラインを介してメモリカード２００にコマンドを発行すると共に、該コマンドに対応するレスポンスの受信制御を行う。このようなコマンド制御部３１０は、コマンド発行制御部３１２と、コマンドスタートビット検出部３１８とを含む。
【０２１０】
コマンドスタートビット検出部３１８は、コマンド発行制御部３１２により発行されるコマンド（特にアボートコマンド）のスタートビットを検出する。より具体的には、コマンドスタートビット検出部３１８は、コマンド発行制御部３１２により発行されたライトコマンドにより開始されるライト動作中又はリードコマンドにより開始されるリード動作中に、コマンド発行制御部３１２によりアボートコマンドが発行されたとき、図４（Ａ）に示すようなアボートコマンドのスタートビットを検出する。
【０２１１】
このようなカードコントローラ１３０では、ライト動作中に、アボートコマンドのスタートビットが検出されたとき、バッファがエンプティ状態か否かにかかわらず、クロック制御部３００が、メモリカード２００への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。また、カードコントローラ１３０では、リード動作中に、アボートコマンドのスタートビットが検出されたとき、バッファがフル状態か否かにかかわらず、クロック制御部３００が、メモリカード２００への転送クロックを出力させる制御を行ってアボートコマンドを強制的に発行させる。
【０２１２】
そして、強制的に発行されたアボートコマンドのスタートビットがコマンドスタートビット検出部３１８により検出されたとき、カードコントローラ１３０は、ライト動作又はリード動作をアボートする。
【０２１３】
こうすることで、確実にデータ転送をアボートすることができるので、例えば制御マスタ１２６で実行される上位アプリケーションプログラムでは、アボートコマンドの発行指示後にライトデータやリードデータを管理しなくて済む。また、上位アプリケーションプログラムがアボートコマンドの発行指示を行ったにもかかわらず、転送クロックが停止してメモリカード２００に対してアボートコマンドが送信されていないという事態を確実に回避できる。
【０２１４】
２．３．１  処理例
図２３に、第３の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラ１３０の動作例のフロー図を示す。
【０２１５】
ここで、カードコントローラ１３０では、コマンド発行制御部３１２がライトコマンドを発行しているものとする。このライトコマンドを発行することでカードコントローラ１３０はメモリカード２００に対するライト動作を開始する。そして、カードコントローラ１３０のコマンド発行制御部３１２が、ライト動作中にアボートコマンドを発行するものとする。
【０２１６】
この場合、まず、コマンドスタートビット検出部３１８が、ライト動作中にコマンド発行制御部３１２により発行されるアボートコマンドのスタートビットの有無を検出する（ステップＳ５０）。
【０２１７】
ステップＳ５０においてアボートコマンドのスタートビットが検出されなかったとき（ステップＳ５０：Ｎ）、データ制御部３２０が、バッファ３３０がエンプティ状態か否かを判別する（ステップＳ５１）。
【０２１８】
バッファ３３０がエンプティ状態ではないと判別されたとき（ステップＳ５１：Ｎ）、データ制御部３２０は、ライト転送を行い（ステップＳ５２）、ライト転送が終了ではないとき（ステップＳ５３：Ｎ）、ステップＳ５０に戻る。ステップＳ５３においてライト転送が終了のとき（ステップＳ５３：Ｙ）、データ制御部３２０は、ライト転送完了通知を制御マスタ１２６に通知してライト転送を完了させ（ステップＳ５４）、一連の処理を終了する（エンド）。
【０２１９】
一方、ステップＳ５１において、バッファ３３０がエンプティ状態であると判別されたとき（ステップＳ５１：Ｙ）、クロック制御部３００が転送クロックＣＬＫの出力を停止させてライト転送を中断させて（ステップＳ５５）、ステップＳ５０に戻り、バッファ３３０がエンプティ状態でなくなるまで待つ。
【０２２０】
ステップＳ５０において、アボートコマンドのエンドビットが検出されたとき（ステップＳ５０：Ｙ）、クロック制御部３００が、転送クロックＣＬＫを強制的に出力させてアボートコマンドを強制発行させ（ステップＳ５６）、データ制御部３２０は、データ転送をアボートして（ステップＳ５７）、一連の処理を終了する（エンド）。
【０２２１】
このように、第３の実施形態によれば、ライト転送中にアボートコマンドのスタートビットが検出されたとき、バッファ３３０がエンプティ状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にライト転送をアボートすることができる。
【０２２２】
図２４に、第３の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラ１３０の動作例のフロー図を示す。
【０２２３】
ここで、カードコントローラ１３０では、コマンド発行制御部３１２がリードコマンドを発行しているものとする。このリードコマンドを発行することでカードコントローラ１３０はメモリカード２００に対するリード動作を開始する。そして、カードコントローラ１３０のコマンド発行制御部３１２が、リード動作中にアボートコマンドを発行するものとする。
【０２２４】
この場合、まず、コマンドスタートビット検出部３１８が、リード動作中にコマンド発行制御部３１２により発行されるアボートコマンドのスタートビットの有無を検出する（ステップＳ６０）。
【０２２５】
ステップＳ６０においてアボートコマンドのスタートビットが検出されなかったとき（ステップＳ６０：Ｎ）、データ制御部３２０が、バッファ３３０がフル状態か否かを判別する（ステップＳ６１）。
【０２２６】
バッファ３３０がフル状態ではないと判別されたとき（ステップＳ６１：Ｎ）、データ制御部３２０は、リード転送を行い（ステップＳ６２）、リード転送が終了ではないとき（ステップＳ６３：Ｎ）、ステップＳ６０に戻る。ステップＳ６３においてリード転送が終了のとき（ステップＳ６３：Ｙ）、データ制御部３２０は、リード転送完了通知を制御マスタ１２６に通知してリード転送を完了させ（ステップＳ６４）、一連の処理を終了する（エンド）。
【０２２７】
一方、ステップＳ６１において、バッファ３３０がフル状態であると判別されたとき（ステップＳ６１：Ｙ）、クロック制御部３００が転送クロックＣＬＫの出力を停止させてリード転送を中断させて（ステップＳ６５）、ステップＳ６０に戻り、バッファ３３０がエンプティ状態でなくなるまで待つ。
【０２２８】
ステップＳ６０において、アボートコマンドのスタートビットが検出されたとき（ステップＳ６０：Ｙ）、クロック制御部３００が、転送クロックＣＬＫを強制的に出力させてアボートコマンドを強制発行させ（ステップＳ６６）、データ制御部３２０は、データ転送をアボートして（ステップＳ６７）、一連の処理を終了する（エンド）。
【０２２９】
このように、第３の実施形態によれば、リード転送中にアボートコマンドのスタートビットが検出されたとき、バッファ３３０がフル状態か否かにかかわらず強制的に転送クロックを出力させてアボートコマンドを強制発行させることができるので、確実にリード転送をアボートすることができる。
【０２３０】
図２５に、第３の実施形態におけるカードコントローラ１３０の動作例のタイミング図を示す。
【０２３１】
第３の実施形態では、ライト転送又はリード転送中に、アボートコマンドのスタートビットが検出されると、カードコントローラ１３０はメモリカード２００に対してアボートコマンドの発行を行う。このとき、バッファ３３０がエンプティ状態か否かにかかわらず、転送クロックＣＬＫを強制的に出力させる。そして、アボートコマンドのスタートビットの検出を条件に、ライト転送又はリード転送をアボートする。
【０２３２】
従って、図２５では、アボートコマンドのスタートビットの検出タイミング（送信タイミング）から該アボートコマンドのエンドビットの検出タイミング（送信タイミング）までの期間が、転送クロックＣＬＫの強制発行期間（アボートコマンドの強制発行期間）となる。強制発行期間後は、アボートコマンドのレスポンスの受信を待つため、クロック制御部３００が、ＭＭＣ規格等で規定された通り転送クロックＣＬＫの出力を行う。
【０２３３】
２．３．２  ハードウェア構成例
このような第３の実施形態におけるカードコントローラ１３０の構成例は、図８に示す第１の実施形態におけるカードコントローラ１３０と同様の構成を有しているため図示を省略する。但し、第３の実施形態では、第１の実施形態に対し、エンドタイミング生成回路１４４が省略されると共にコマンド制御部１４０からデータ制御部１４６に対して強制発行期間指定信号ＡｂｏｒｔＲｕｎの供給が省略され、第１の実施形態に対してデータシーケンサの動作が異なる。
【０２３４】
また、第３の実施形態におけるカードコントローラ１３０の構成要部も、図１９に示す第２の実施形態におけるカードコントローラ１３０の構成要部と同様の構成であるため、図示を省略する。なお、コマンドスタートビット検出部３１８の機能は、例えばコマンドシーケンサ１４２又はアボートタイミング生成回路５００によって実現される。
【０２３５】
但し、第３の実施形態では、アボートタイミング生成回路５００が、コマンドタイプ情報ＣＭＤ＿Ｔｙｐｅにより当該コマンドがアボートコマンドか否かを検出し、アボートコマンドのスタートビットが検出されたときアボートタイミング信号ＡｂｏｒｔＳｔｏｐを出力する。第１の実施形態ではアボートタイミング信号ＡｂｏｒｔＳｔｏｐ又は強制発行期間指定信号ＡｂｏｒｔＲｕｎにより状態遷移したシーケンスが、第３の実施形態のデータシーケンサ５１０は、アボートタイミング信号ＡｂｏｒｔＳｔｏｐにより状態遷移する点が異なる。この点、アボートコマンドのエンドビットを条件に状態遷移する第２の実施形態のデータシーケンサ５１０の状態遷移とは、アボートコマンドのスタートビットを条件に状態遷移する点が異なるのみである。従って、データシーケンサ５１０の動作説明図の図示も省略する。
【０２３６】
図２６に、第３の実施形態におけるカードコントローラ１３０のライト動作中のアボート処理の動作例のタイミング図を示す。
【０２３７】
図２６では、コマンドシーケンサ１４２のステートやデータシーケンサ５１０のステートも示し、図２６では図１２又は図１３の各ステートを分割した詳細なステートを示している。
【０２３８】
図２６では、ライト動作中に、アボートコマンドの発行指示があると（ＴＧ５０）、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートに遷移すると共に、この発行指示がアボートコマンドのスタートビットであると判断して、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなる。
【０２３９】
アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなり、データシーケンサ５１０は、ＡＢＴステートに遷移する（ＴＧ５１）。その後、データシーケンサ５１０は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する。これ以降、ＦＩＦＯ１３５がエンプティ状態になったとしても、転送クロックＣＬＫが強制発行される。
【０２４０】
図２７に、第３の実施形態におけるカードコントローラ１３０のリード動作中のアボート処理の動作例のタイミング図を示す。
【０２４１】
図２７では、コマンドシーケンサ１４２のステートやデータシーケンサ５１０のステートも示し、図２７では図１２又は図１３の各ステートを分割した詳細なステートを示している。
【０２４２】
図２７では、リード動作中に、アボートコマンドの発行指示があると（ＴＧ６０）、コマンドシーケンサ１４２は、ＳＥＮＤ＿ＣＭＤステートに遷移すると共に、この発行指示がアボートコマンドのスタートビットであると判断して、アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなる。
【０２４３】
アボートタイミング信号ＡｂｏｒｔＳｔｏｐがアクティブとなり、データシーケンサ５１０は、ＡＢＴステートに遷移する（ＴＧ６１）。その後、データシーケンサ５１０は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する。これ以降、ＦＩＦＯ１３５がフル状態になったとしても、転送クロックＣＬＫが強制発行される。
【０２４４】
３．  電子機器
次に、第１〜第３の実施形態のいずれかにおけるカードコントローラが適用されるホストシステムを含む電子機器の構成例を示す。
【０２４５】
図２８に、本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図を示す。
【０２４６】
図２８において、図１と同一部分には同一符号を付し、適宜説明を省略する。
【０２４７】
電子機器１０は、電荷結合素子（Charge Coupled Device：以下、ＣＣＤ）イメージセンサ８００、ＡＤ変換器８１０、メモリ８２０、クロック生成回路８３０、ホストシステム１００、ソケット（スロット、メモリ装着部、カード装着部、メモリカード装着部、記憶デバイス装着部）８４０を含む。
【０２４８】
ＣＣＤイメージセンサ８００は、複数の受光素子を有し、各受光素子に光が入射することにより発生した電荷を読み出して、画像を電気信号に変換する。ＣＣＤイメージセンサ８００によって電気信号に変換された画像データは、ＡＤ変換器８１０によりデジタル信号に変換された後、メモリ８２０にバッファリングされる。
【０２４９】
クロック生成回路８３０は、電子機器１０の基本クロックやホストシステム１００の基本クロックを生成する。
【０２５０】
図２８のプログラムメモリ１２０は、図１のメモリ１２０として機能する。
【０２５１】
ソケット８４０には、メモリカード２００が挿抜される。メモリカード２００がソケット８４０に挿入された状態で、カードバス２０を介してカードコントローラ１３０とメモリカード２００との間でＭＭＣ規格に従ったアクセスが行われる。
【０２５２】
ホストシステム１００の制御により、メモリ８２０に蓄えられた画像データをメモリカード２００に書き込んだり、メモリカード２００から画像データを読み出してメモリ８２０に蓄積させたりできる。
【０２５３】
図２８のような電子機器１０によれば、ホストシステム１００（カードコントローラ１３０）の制御及び構成が簡素化され、低消費電力化及び低コスト化が実現される。
【０２５４】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。本実施形態におけるメモリカードは、フラッシュメモリカードに限定されるものではない。本実施形態におけるメモリカードに代えて、Ｉ／Ｏデバイス、ＨＤＤ装置、ＤＶＤ装置、又は光ディスク装置であってもよい。
【０２５５】
更に、本発明を適用できるコマンドは上述の実施形態において説明したものに限定されるものではなく、例えばＭＭＣ規格と同様の思想に基づく規格やＭＭＣ規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンド、例えばＣＥ−ＡＴＡ規格と同様の思想に基づく規格やＣＥ−ＡＴＡ規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンドにも当然本発明を適用できる。
【０２５６】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【０２５７】
【図１】本実施形態における情報処理装置が適用された電子機器の構成例のブロック図。
【図２】図１のメモリカードの構成例のブロック図。
【図３】第１の実施形態におけるカードコントローラの構成例のブロック図。
【図４】図４（Ａ）はコマンド制御部により送信されるコマンドの説明図。図４（Ｂ）はコマンド制御部により受信されるレスポンスの説明図。
【図５】第１の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図６】第１の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図７】第１の実施形態におけるカードコントローラの動作例のタイミング図。
【図８】図１又は図３のカードコントローラのハードウェア構成例のブロック図。
【図９】図８のカードコントローラの構成要部のブロック図。
【図１０】図９のクロックイネーブル生成回路の構成例の回路図。
【図１１】図９のドライバ部の構成の概要を示す図。
【図１２】図９のコマンドシーケンサの動作説明図。
【図１３】図９のデータシーケンサの動作説明図。
【図１４】第１の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図１５】第１の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図１６】第２の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図１７】第２の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図１８】第２の実施形態におけるカードコントローラの動作例のタイミング図。
【図１９】第２の実施形態におけるカードコントローラの構成要部のブロック図。
【図２０】第２の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図２１】第２の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図２２】第３の実施形態におけるカードコントローラの構成例のブロック図。
【図２３】第３の実施形態においてライト動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図２４】第３の実施形態においてリード動作中にアボートコマンドを発行したときのカードコントローラの動作例のフロー図。
【図２５】第３の実施形態におけるカードコントローラの動作例のタイミング図。
【図２６】第３の実施形態におけるカードコントローラのライト動作中のアボート処理の動作例のタイミング図。
【図２７】第３の実施形態におけるカードコントローラのリード動作中のアボート処理の動作例のタイミング図。
【図２８】本実施形態における電子機器の構成例のブロック図。
【符号の説明】
【０２５８】
１０  電子機器、  ２０  カードバス、  １００  ホストシステム、  １１０  ＣＰＵ、１２０、８２０  メモリ、  １２２  システムバス、  １２６  制御マスタ、
１３０  カードコントローラ、  １３２  制御Ｉ／Ｆ回路、
１３４  ＦＩＦＯＩ／Ｆ回路、  １３６  コントローラ制御レジスタ部、
１３８  クロック制御部、  １４０、３１０  コマンド制御部、
１４２  コマンドシーケンサ、  １４３、５００  アボートタイミング生成回路、
１４４  エンドタイミング生成回路、  １４６、３２０  データ制御部、
１４８、５１０  データシーケンサ、  １４９、３３０  ビジー検出部、
１５０  ドライバ部、  ２００  メモリカード、  ２１０  カードＩ／Ｆ回路、
２１２  ＰＬＬ回路、  ２２０  カードＩ／Ｆ制御回路、
２３０  カード制御レジスタ部、  ２４０  メモリＩ／Ｆ回路、
２５０  メモリコア部、  ３００  クロック制御部、  ３１２  コマンド発行制御部、
３１４  コマンドエンドビット検出部、  ３１８  コマンドスタートビット検出部、
４００、８３０  クロック生成回路、  ４１０  クロックイネーブル生成回路、
８００  ＣＣＤイメージセンサ、  ８１０  ＡＤ変換器、  ８４０  ソケット
【図１】
2010015430.tif 000003
【図２】
2010015430.tif 000004
【図３】
2010015430.tif 000005
【図４】
2010015430.tif 000006
【図５】
2010015430.tif 000007
【図６】
2010015430.tif 000008
【図７】
2010015430.tif 000009
【図８】
2010015430.tif 000010
【図９】
2010015430.tif 000011
【図１０】
2010015430.tif 000012
【図１１】
2010015430.tif 000013
【図１２】
2010015430.tif 000014
【図１３】
2010015430.tif 000015
【図１４】
2010015430.tif 000016
【図１５】
2010015430.tif 000017
【図１６】
2010015430.tif 000018
【図１７】
2010015430.tif 000019
【図１８】
2010015430.tif 000020
【図１９】
2010015430.tif 000021
【図２０】
2010015430.tif 000022
【図２１】
2010015430.tif 000023
【図２２】
2010015430.tif 000024
【図２３】
2010015430.tif 000025
【図２４】
2010015430.tif 000026
【図２５】
2010015430.tif 000027
【図２６】
2010015430.tif 000028
【図２７】
2010015430.tif 000029
【図２８】
2010015430.tif 000030