(57)【要約】【課題】確実に記憶デバイスのビジー状態を検出して簡素な制御で記憶デバイスにアクセスできる記憶デバイスコントローラ等を提供する。【解決手段】記憶デバイスにコマンドを発行してアクセスする記憶デバイスコントローラは、前記記憶デバイスにコマンドを発行して、該コマンドに対応したデータの出力制御又は該コマンドに対応したレスポンスの受信制御を行うアクセス制御部と、前記記憶デバイスのビジー状態を検出するビジー検出部とを含む。前記レスポンスのエンドビットを検出したとき、又は前記コマンドのエンドビットを基準に所定のレスポンス期間を経過するまでに前記レスポンスのスタートビットが検出されないとき、前記ビジー検出部が、前記記憶デバイスのビジー状態の検出を開始し、前記記憶デバイスの非ビジー状態が検出されたときに、前記コマンドで指定された処理の完了を通知する。【選択図】図３
2010015428.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:ＤＳＲ）等を含む。
【００４４】
カードＩ／Ｆ制御回路２２０は、カード制御レジスタ部２３０の設定データに基づいてメモリカード２００の各部を制御すると共に、その制御結果をカード制御レジスタ部２３０に格納する制御を行う。
【００４５】
メモリＩ／Ｆ回路２４０は、カードＩ／Ｆ制御回路２２０の制御により、メモリコア部２５０のメモリ素子にデータを書き込んだり、メモリコア部２５０のメモリ素子からデータを読み出したりする制御を行う。
【００４６】
メモリコア部２５０は、複数のメモリ素子を有する。メモリＩ／Ｆ回路２４０は、予め割り当てられたアドレスに対応したメモリ素子からデータを読み出したり、該アドレスに対応したメモリ素子にデータを書き込んだりすることができる。
【００４７】
２．  カードコントローラ（記憶デバイスコントローラ）
図３に、本実施形態におけるカードコントローラ１３０の構成例のブロック図を示す。図３において、図１と同一部分には同一符号を付し、適宜説明を省略する。
【００４８】
カードコントローラ１３０は、クロック制御部３００と、コマンド制御部３１０と、データ制御部３２０と、ビジー検出部３３０とを含む。更に、カードコントローラ１３０は、コマンド完了通知部（コマンド完了処理部）３４０と、エラー通知部３５０と、エラー判定部３６０とを含む。
【００４９】
クロック制御部３００は、バス２０のクロックラインの出力制御を行う。コマンド制御部３１０は、バス２０のコマンドラインの入出力制御を行う。データ制御部３２０は、バス２０のデータラインの入出力制御を行う。
【００５０】
クロック制御部３００は、コマンドや転送データが同期して送受信するための同期クロックである転送クロックＣＬＫを供給したり、供給を停止したりする。クロック制御部３００が転送クロックＣＬＫの供給を停止することで、データの転送を中断させることできるが、コマンドがレスポンスの送受信も停止する。
【００５１】
コマンド制御部３１０は、コマンドラインを介してメモリカード２００にコマンドを発行することができる。より具体的には、コマンド制御部３１０は、Ｒ１ｂレスポンスを伴うコマンド（例えばイレースコマンド）の発行と、Ｒ１ｂレスポンスを伴うコマンドに対応するレスポンスの受信制御を行う。
【００５２】
図４（Ａ）に、コマンド制御部３１０により送信されるコマンドの説明図を示す。図４（Ｂ）に、コマンド制御部３１０により受信されるレスポンスの説明図を示す。
【００５３】
コマンドは、スタートビット「Ｓ」が「０」、エンドビット「Ｅ」が「１」で挟まれた所定ビットのコマンドデータである。図４（Ａ）に示すようなコマンドが、コマンドラインを介して送信される。
【００５４】
レスポンスは、スタートビット「Ｓ」が「０」、エンドビット「Ｅ」が「１」で挟まれた所定ビットのレスポンスデータである。図４（Ｂ）に示すようなレスポンスが、コマンドラインを介して受信される。
【００５５】
図３において、データ制御部３２０は、データラインを介して転送データを送信又は受信する制御を行う。なお、データラインのうち転送データＤＡＴ０が送受信されるデータラインが、メモリカード２００により「Ｌ」レベルに駆動されることで、カードコントローラ１３０は、メモリカード２００がビジー状態であることを通知される。ビジー検出部３３０は、所定のビジー状態検出タイミングで、データラインのうち転送データＤＡＴ０が送受信されるデータラインのレベルを検出することで、メモリカード２００がビジー状態であるか否かを検出できる。
【００５６】
コマンド完了通知部３４０は、コマンド制御部３１０により発行されたコマンドが完了したときに、該カードコントローラ１３０を制御する制御マスタ１２６（ＣＰＵ１１０）に対して割り込み信号によりコマンド完了通知割り込みを発生させたり、図示しないステータスレジスタ（制御レジスタ）にコマンド完了通知フラグをセットしたり、コマンド完了を制御マスタ１２６に通知できる。
【００５７】
このようなコマンド完了通知割り込みを受けた制御マスタ１２６は、その割り込み要因を解析して、次のコマンドを発行する制御等を行うことができる。また、カードコントローラ１３０に対してポーリングを実行する制御マスタ１２６が、コマンド完了通知フラグがセットされていることを検出すると、次のコマンドを発行する制御等を行うことができる。
【００５８】
エラー判定部３６０は、コマンド制御部３１０により発行されたコマンド（イレースコマンド）に対応するメモリカード２００からのレスポンスのエラーを判定する。より具体的には、エラー判定部３６０は、メモリカード２００からのレスポンスに含まれるＣＲＣデータの計算結果に基づいてＣＲＣエラーか否かを判定できる。また、エラー判定部３６０は、該レスポンスのエンドビットが「０」であるときにエンドビットエラーとして判定できる。更にエラー判定部３６０は、メモリカード２００に対して送信したコマンドのインデックス番号と、該コマンドに対応してメモリカード２００から受信したレスポンスに含まれるインデックス番号とを比較して、インデックスエラーとして判定できる。更にまた、エラー判定部３６０は、コマンドの送信完了後、所定期間内にレスポンスのスタートビットが検出されなかったときにタイムアウトエラーとして判定できる。
【００５９】
エラー通知部３５０は、エラー判定部３６０によりエラーが検出されたとき、制御マスタ１２６（ＣＰＵ１１０）に対して割り込み信号によりエラー通知割り込みを発生させたり、図示しないステータスレジスタ（制御レジスタ）にエラー通知フラグをセットしたり、エラーの発生を制御マスタ１２６に通知できる。
【００６０】
図３において、コマンド制御部３１０及びデータ制御部３２０は、アクセス制御部（書き込み制御部、リード制御部）として機能する。即ち、このアクセス制御部は、メモリカード２００に対してコマンドを発行し、転送クロックに同期してメモリカード２００にアクセスする制御を行う。例えばアクセス制御部がライトコマンドを発行する場合、転送クロックに同期してライトデータを出力してメモリカード２００に該ライトデータの書き込み制御を行う。
【００６１】
カードコントローラ１３０では、コマンド制御部３１０が、メモリカード２００に対し、コマンドラインを介してＭＭＣ（MultiMediaCard）規格（ＣＥ−ＡＴＡ（Consumer Electronics-AT Attachment）規格等でもよい）のＲ１ｂレスポンスを伴うコマンドを発行することができる。このようなビジー通知を伴うコマンド（Ｒ１ｂレスポンスを有するコマンド）としては、例えばメモリカード２００の記憶データを消去するためのコマンドであるイレースコマンドがある。
【００６２】
このコマンドを発行すると、メモリカード２００がビジー状態を通知してくる場合がある。ところが、メモリカード２００がビジー状態を通知してくるタイミングが不明であり、また、レスポンスのエラー自体の発生の可能性がある。そのため、コマンドの発行直後からビジー状態を検出してしまうと、レスポンスの途中でビジー状態が解除されるケースに対応した制御が必要になったり、予期しないエラーの発生に対応したエラー処理により制御が複雑になったりする。この場合、エラーを検出してからビジー状態の検出を開始した方が制御を簡素化できる上に、レスポンスの途中でビジー状態が解除されるケースに対応した制御を不要にできることが望ましい。
【００６３】
そこで、本実施形態では、カードコントローラ１３０のコマンド制御部３１０がＲ１ｂレスポンスを伴うコマンドを発行すると、コマンドのエンドビットの送信、又はメモリカード２００からのレスポンス（より具体的にはレスポンスの正常なエンドビット）の受信を待つ。
【００６４】
カードコントローラ１３０からＲ１ｂレスポンスを伴うコマンドを受信したメモリカード２００は、転送データＤＡＴ０が伝送されるデータラインをＬレベルに駆動し、カードコントローラに対してビジー状態であることを通知する。
【００６５】
このとき、コマンド制御部３１０が、コマンドラインを介して、上記のコマンドに対応してメモリカード２００からのレスポンスを受信したことを条件に、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する。或いは、コマンドのエンドビットを基準に所定のレスポンス期間を経過するまでにコマンド制御部３１０においてレスポンスのスタートビットが検出されないとき、ビジー検出部３３０が、メモリカードのビジー状態の検出を開始する。
【００６６】
そして、ビジー検出部３３０によりビジー状態の検出が開始された後に、ビジー検出部３３０により、メモリカード２００の非ビジー状態が検出されたときに、コマンド制御部３１０が発行したコマンドで指定された処理の完了を通知する。
【００６７】
こうすることで、メモリカード２００のビジー状態の検出開始タイミングを、コマンドに対応したレスポンス受信後に統一できるようになり、確実にメモリカード２００のビジー状態を検出できるようになる。
【００６８】
２．１  処理例
図５に、本実施形態におけるカードコントローラ１３０のうち図３のコマンド制御部３１０、コマンド完了通知部３４０、エラー通知部３５０及びエラー判定部３６０の処理例を示す。
【００６９】
図５では、カードコントローラ１３０が、メモリカード２００に対し、コマンドラインを介してＭＭＣ規格（ＣＥ−ＡＴＡ規格等）のＲ１ｂレスポンスを伴うコマンドを発行する場合の制御シーケンスを表している。
【００７０】
まず、コマンド制御部３１０が、Ｒ１ｂレスポンスを伴うコマンドを発行する（ステップＳ１０）。コマンドの送信が完了すると、コマンド制御部３１０は、コマンドラインを介してメモリカード２００からのレスポンスのスタートビット（Ｓビット）の受信を待つ（ステップＳ１１）。このとき、コマンドのエンドビットを検出したときに、タイムアウト期間を計時するための図示しないカウンタのカウント動作を開始させる。ここで、タイムアウト期間は、ＭＭＣ規格において転送クロックＣＬＫの６４クロックに相当する期間と規定されている。
【００７１】
コマンド制御部３１０が、メモリカード２００からのレスポンスのスタートビットをタイムアウト期間内に検出したとき（ステップＳ１２：Ｙ）、コマンド制御部３１０は、メモリカード２００からのレスポンスのエンドビットまでの受信を完了させる（ステップＳ１３）。
【００７２】
その後、エラー判定部３６０がステップＳ１３において受信されたレスポンスのエラーの有無を判定する（ステップＳ１４）。ステップＳ１４においてレスポンスのエラーが検出されなかったとき（ステップＳ１４：Ｎ）、コマンド完了通知部３４０は、ステップＳ１０で発行したコマンドの完了通知を行い（ステップＳ１５）、一連の処理を終了させる（エンド）。
【００７３】
ステップＳ１４において、レスポンスのエラーが検出されたとき（ステップＳ１４：Ｙ）、エラー通知部３５０がエラーを通知し（ステップＳ１６）、一連の処理を終了させる（エンド）。
【００７４】
一方、ステップＳ１２において、メモリカード２００からのレスポンスのスタートビットが検出されず（ステップＳ１２：Ｎ）、且つタイムアウト期間が経過していないとき（ステップＳ１７：Ｎ）、ステップＳ１２に戻ってレスポンスのスタートビットの監視を継続させる。
【００７５】
ステップＳ１２において、メモリカード２００からのレスポンスのスタートビットが検出されず（ステップＳ１２：Ｎ）、且つタイムアウト期間が経過したとき（ステップＳ１７：Ｙ）、エラー通知部３５０がエラーを通知し（ステップＳ１８）、一連の処理を終了させる（エンド）。
【００７６】
図６に、本実施形態におけるカードコントローラ１３０のうち図３のデータ制御部３２０及びビジー検出部３３０の処理例を示す。
【００７７】
データ制御部３２０は、コマンド制御部３１０からのコマンド完了通知又は図５のステップＳ１６、ステップＳ１８のエラー通知を監視している（ステップＳ２０）。データ制御部３２０が該コマンド完了通知又は該エラー通知を検出したとき（ステップＳ２０：Ｙ）、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する（ステップＳ２１）。
【００７８】
ビジー検出部３３０が、メモリカード２００のビジー状態を検出したとき（ステップＳ２２：Ｙ）、ステップＳ２１に戻ってメモリカード２００のビジー状態の検出を継続する。ステップＳ２２においてビジー検出部３３０がメモリカード２００の非ビジー状態を検出したとき（ステップＳ２２：Ｎ）、一連の処理を終了する（エンド）。このとき、制御マスタ１２６にデータ転送完了割り込みを通知したり、図示しないステータスレジスタにデータ転送完了フラグをセットすることで、制御マスタ１２６にデータ転送完了を通知できる。
【００７９】
以上のように、コマンド制御部３１０が、コマンドラインを介して、Ｒ１ｂコマンドに対応してメモリカード２００からのレスポンスのエンドビットを受信したこと、又はコマンドのエンドビットを基準に所定のタイムアウト期間が経過してもレスポンスのスタートビットが検出されなかったことを条件に、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する。そして、ビジー検出部３３０によりメモリカード２００の非ビジー状態が検出されたときに、アクセス制御部としてのデータ制御部３２０が、転送完了通知を発行できる。
【００８０】
ところで、カードコントローラ１３０の制御シーケンスは、図５に示すものに限定されるものではない。
【００８１】
図７に、本実施形態におけるカードコントローラ１３０の他の処理例のフロー図を示す。
【００８２】
図７においても、図５と同様に、カードコントローラ１３０が、メモリカード２００に対し、コマンドラインを介してＭＭＣ規格（ＣＥ−ＡＴＡ規格等）のＲ１ｂレスポンスを伴うコマンドを発行する場合の制御シーケンスを表している。図７において図５と同一部分には同一符号を付し、適宜説明を省略する。
【００８３】
図７の処理例が図５の処理例と異なる点は、図７においてステップＳ３０がステップＳ１３とステップＳ１４との間に設けられている点である。即ち、ステップＳ１３において、コマンド制御部３１０がメモリカード２００からのレスポンスのエンドビットまでの受信が完了すると（ステップＳ１３）、コマンド制御部３１０が、所与のコマンド発行間隔期間の経過を待ち（ステップＳ３０）、コマンド発行間隔期間の経過を条件に、レスポンスのエラー判定を行う（ステップＳ１４）。従って、コマンド発行間隔期間の経過を条件に、コマンド完了通知、メモリカード２００のビジー状態の検出が開始されることになる。
【００８４】
図７の処理に対して、図３のデータ制御部３２０及びビジー検出部３３０の処理は図６と同様であるため説明を省略する。
【００８５】
こうすることで、コマンド制御部３１０は、ＭＭＣ規格等で決められているコマンド発行間隔（例えば転送クロックＣＬＫの８クロックに相当する期間）を考慮することなく、メモリカードの２００の非ビジー状態を検出後に次のコマンドを発行する制御を行うことができる。従って、複雑な制御シーケンスを考慮することなく、カードコントローラ１３０の制御を簡素化できる。
【００８６】
図８に、図５及び図６、又は図７及び図６の処理を実行するカードコントローラ１３０の動作例のタイミング図を示す。
【００８７】
図８では、クロックラインを介して出力される転送クロックＣＬＫ、コマンドラインを介して入出力されるコマンド及びレスポンス、データラインのうち転送データＤＡＴ０が送受信されるデータラインのタイミング図を示している。
【００８８】
制御マスタ１２６で実行される上位アプリケーションプログラムによりＲ１ｂレスポンスを伴うコマンドの発行指示を受けたカードコントローラ１３０のコマンド制御部３１０は、コマンドラインを介してコマンドを発行する（ＴＧ１）。
【００８９】
このコマンドを受けたメモリカード２００は、該コマンドに対応したレスポンスを、コマンドラインを介して返すと共に、転送データＤＡＴ０が伝送されるデータラインをＬレベルに駆動してビジー状態をカードコントローラ１３０に通知する（ＴＧ２）。
【００９０】
カードコントローラ１３０は、メモリカード２００からのレスポンスのエンドビットの受信を監視しており、レスポンスのエンドビットの受信判定タイミングＴＧ３において該エンドビットの受信を検出し、且つ該エンドビットが正常であることが判別されたとき、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する（ＴＧ４）。
【００９１】
以上のように、コマンド制御部３１０が、コマンドラインを介して、Ｒ１ｂレスポンスを伴うコマンドに対応してメモリカード２００からのレスポンスを受信したことを条件に、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する。そして、ビジー検出部３３０によりビジー状態の検出が開始された後に、ビジー検出部３３０により、メモリカード２００の非ビジー状態が検出されたときに、コマンド制御部３１０が発行したコマンドで指定された処理の完了を通知する。
【００９２】
ところで、ＭＭＣ規格等の規格書には、ビジー状態の通知を伴うレスポンスに対し、レスポンスが返ってこないケースの動作について規定されていない。従って、将来到来する可能性のあるレスポンスを待ちながらビジー状態を検出する制御も想定でき、この制御では例えば非ビジー状態が通知されたときの制御シーケンスが複雑になってしまう。本実施形態によれば、レスポンス期間としてのタイムアウト期間を設け、レスポンスが返ってこないケースがあっても、ビジー状態を検出でき、且つ制御シーケンスが簡素化できるようにしている。
【００９３】
図９に、本実施形態におけるカードコントローラ１３０の他の動作例のタイミング図を示す。
【００９４】
図９では、図８と同様に、クロックラインを介して出力される転送クロックＣＬＫ、コマンドラインを介して入出力されるコマンド及びレスポンス、データラインのうち転送データＤＡＴ０が送受信されるデータラインのタイミング図を示している。
【００９５】
制御マスタ１２６で実行される上位アプリケーションプログラムによりＲ１ｂレスポンスを伴うコマンドの発行指示を受けたカードコントローラ１３０のコマンド制御部３１０は、コマンドラインを介してコマンドを発行する（ＴＧ１０）。
【００９６】
このコマンドを受けたメモリカード２００は、まず転送データＤＡＴ０が伝送されるデータラインをＬレベルに駆動してビジー状態をカードコントローラ１３０に通知し（ＴＧ１１）、その後、該コマンドに対応したレスポンスを、コマンドラインを介して返す（ＴＧ１２）。
【００９７】
これに対し、カードコントローラ１３０は、コマンドのエンドビットの送出を監視しており、コマンドのエンドビットの送出判定タイミングＴＧ１３において該エンドビットの送出が検出されたとき、コマンド制御部３１０の図示しないカウンタがカウント動作を開始する。このカウンタは、レスポンス期間Ｔ１０を計測する。カウンタによるレスポンス期間Ｔ１０の経過までにレスポンスのスタービットが検出されないとき、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する（ＴＧ１４）。
【００９８】
以上のように、コマンド制御部３１０が、コマンドラインを介して送出する、Ｒ１ｂレスポンスを伴うコマンドのエンドビットの送出タイミングを基準に、所与のレスポンス期間Ｔ１０が経過するまでにコマンド制御部３１０においてレスポンスのスタートビットが検出されないとき、ビジー検出部３３０が、メモリカードのビジー状態の検出を開始する。そして、ビジー検出部３３０によりビジー状態の検出が開始された後に、ビジー検出部３３０により、メモリカード２００の非ビジー状態が検出されたときに、コマンド制御部３１０が発行したコマンドで指定された処理の完了を通知する。
【００９９】
以上のように、レスポンス期間としてのタイムアウト期間の経過にかかわらず、一旦メモリカード２００のビジー状態を検出するようにしている。
【０１００】
なお、カードコントローラ１３０は、上述のビジー検出制御を行うものに限定されない。例えば、カードコントローラ１３０では、コマンドのエンドビットを基準に、所定の期間が経過したときに、コマンドに対応したレスポンスの有無にかかわらず、ビジー検出部３３０が、メモリカード２００のビジー状態の検出を開始する。この所定の期間は、カードコントローラ１３０にビジー検出開始期間設定レジスタを備えさせ、該ビジー検出開始期間設定レジスタに設定される制御データに対応した期間とすることができる。
【０１０１】
図１０に、本実施形態におけるカードコントローラ１３０の他の構成例のブロック図を示す。図１０において、図３と同一部分には同一符号を付し、適宜説明を省略する。
【０１０２】
図１０におけるカードコントローラ１３０は、図３の構成に加えて、更に制御レジスタとしてのビジー検出開始期間設定レジスタ３７０を含む。ビジー検出開始期間設定レジスタ３７０には、メモリカード２００のビジー状態の検出タイミングを指定するための制御データが制御マスタ１２６により設定される。そして、図３のビジー検出部３３０に代えて設けられたビジー検出部３８０が、コマンドのエンドビットを基準に、ビジー検出開始期間設定レジスタ３７０の制御データに対応した期間が経過したときに、コマンドに対応したレスポンスの有無にかかわらず、メモリカード２００のビジー状態の検出を開始する。
【０１０３】
こうすることで、レスポンスが返ってこないケースを考慮すると、図３のカードコントローラ１３０では、図５〜図７に示す処理を行う必要があるが、図１０のカードコントローラ１３０では、以下に示す処理を行うだけで確実にビジー状態を検出できるようになる。
【０１０４】
図１０のコマンド制御部３１０、コマンド完了通知部３４０、エラー通知部３５０及びエラー判定部３６０の処理例は、図５又は図７と同様であるため詳細な説明を省略する。
【０１０５】
図１１に、図１０のカードコントローラ１３０のうちデータ制御部３２０及びビジー検出部３８０の処理例を示す。
【０１０６】
図１１において、図６と異なる点は、ステップＳ２０に代えてステップＳ４０が設けられ、このステップＳ４０とステップＳ２１との間に、ビジー検出開始期間を待つ処理であるステップＳ４１が挿入されている。より具体的には、コマンドのエンドビットを監視しており（ステップＳ４０：Ｎ）、該エンドビットを検出したとき（ステップＳ４０：Ｙ）、カードコントローラ１３０の図示しないカウンタがカウント動作を開始する。カウンタは、コマンドのエンドビットの送出タイミングを基準に、ビジー検出開始期間設定レジスタ３７０に設定された制御データに対応するビジー検出開始期間を計測する。そして、データ制御部３２０がコマンドのエンドビットの送信完了を検出したとき（ステップＳ４０：Ｙ）、ビジー検出開始期間の経過を待つ（ステップＳ４１）。そして、ビジー検出開始期間が経過したとき、ビジー検出部３８０がメモリカード２００のビジー状態の検出を行う（ステップＳ２１）。
【０１０７】
図１２に、図１１の処理を実行するカードコントローラ１３０の動作例のタイミング図を示す。
【０１０８】
図１２では、クロックラインを介して出力される転送クロックＣＬＫ、コマンドラインを介して入出力されるコマンド及びレスポンス、データラインのうち転送データＤＡＴ０が送受信されるデータラインのタイミング図を示している。
【０１０９】
制御マスタ１２６で実行される上位アプリケーションプログラムによりＲ１ｂレスポンスを伴うコマンドの発行指示を受けたカードコントローラ１３０のコマンド制御部３１０は、コマンドラインを介してコマンドを発行する（ＴＧ２０）。
【０１１０】
このコマンドを受けたメモリカード２００は、該コマンドに対応したレスポンスを、コマンドラインを介して返すと共に、転送データＤＡＴ０が伝送されるデータラインをＬレベルに駆動してビジー状態をカードコントローラ１３０に通知する（ＴＧ２１）。
【０１１１】
これに対し、カードコントローラ１３０は、コマンドのエンドビットの送出を監視しており、コマンドのエンドビットの送出判定タイミングＴＧ２２において該エンドビットの送出が検出されたとき、コマンド制御部３１０の図示しないカウンタがカウント動作を開始する。このカウンタは、ビジー検出開始期間Ｔ２０を計測する。カウンタによるビジー検出開始期間Ｔ２０が経過すると、ビジー検出部３８０が、メモリカード２００のビジー状態の検出を開始する（ＴＧ２３）。
【０１１２】
以上のように、カードコントローラ１３０では、コマンドのエンドビットを基準に、所定のビジー検出開始期間が経過したときに、コマンドに対応したレスポンスの有無にかかわらず、ビジー検出部３８０が、メモリカード２００のビジー状態の検出を開始する。そして、ビジー検出部３８０によりビジー状態の検出が開始された後に、ビジー検出部３８０によりメモリカード２００の非ビジー状態が検出されたときに、コマンド制御部３１０が発行したコマンドで指定された処理の完了を通知する。
【０１１３】
また、上位アプリケーションからのコマンド発行指示を検出し、該コマンド発行指示の検出タイミングを基準に所定期間経過後に、メモリカード２００のビジー状態の検出を開始してもよい。
【０１１４】
図１３に、本実施形態におけるカードコントローラ１３０の更に別の構成例のブロック図を示す。図１３において、図３と同一部分には同一符号を付し、適宜説明を省略する。
【０１１５】
図１３におけるカードコントローラ１３０は、図３の構成に加えて、更にビジー検出開始期間設定レジスタ３７０とコマンド発行指示検出部３９０とを含む。ビジー検出開始期間設定レジスタ３７０には、メモリカード２００のビジー状態の検出タイミングを指定するための制御データが制御マスタ１２６により設定される。コマンド発行指示検出部３９０は、制御マスタ１２６で実行される上位アプリケーションからのＲ１ｂコマンドの発行指示ＣＭＤ＿Ｇｏを検出する。コマンド制御部３１０は、コマンド発行指示検出部３９０により検出されたコマンドの発行指示に基づいて、メモリカード２００に対してコマンドを発行する制御を行う。ビジー検出部３９２は、コマンド発行指示検出部３９０によりＲ１ｂコマンドの発行指示が検出されたとき、ビジー検出開始期間設定レジスタ３７０の制御データに対応した期間の経過後に、メモリカード２００のビジー状態の検出を開始する。なお、図１３のビジー検出開始期間設定レジスタ３７０に設定される制御データに対応した期間は、図１０のビジー検出開始期間設定レジスタ３７０に設定される制御データに対応した期間（例えば転送クロックＣＬＫの６４クロック分に相当する期間）より少なくともコマンドの送信期間（例えば転送クロックＣＬＫの４８クロック分に相当する期間）だけ長いことが望ましい。
【０１１６】
こうすることで、確実にメモリカード２００の非ビジー状態を検出でき、メモリカード２００の非ビジー状態の検出に失敗して転送クロックの供給を停止させてしまうという事態を回避できる。
【０１１７】
図１３のコマンド制御部３１０、コマンド完了通知部３４０、エラー通知部３５０及びエラー判定部３６０の処理例は、図５又は図７と同様であるため詳細な説明を省略する。
【０１１８】
図１４に、図１３のカードコントローラ１３０のうちデータ制御部３２０及びビジー検出部３９２の処理例を示す。
【０１１９】
図１４において、図６と異なる点は、ステップＳ２０に代えてステップＳ５０とステップＳ５１とが追加されている点である。
【０１２０】
即ち、データ制御部３２０は、コマンド発行指示検出部３９０によるＲ１ｂコマンドの発行指示の検出を待つ（ステップＳ５０：Ｎ）。そして、Ｒ１ｂコマンドの発行指示が検出されたとき（ステップＳ５０：Ｙ）、データ制御部３２０は、固定期間としてビジー検出開始期間設定レジスタ３７０に設定される制御データに対応した期間だけ待ち（ステップＳ５１）、その後、ビジー検出部３９２が、メモリカード２００のビジー状態の検出を開始する（ステップＳ２１）。
【０１２１】
図１５に、図１４の処理を実行するカードコントローラ１３０の動作例のタイミング図を示す。
【０１２２】
図１５では、クロックラインを介して出力される転送クロックＣＬＫ、コマンドラインを介して入出力されるコマンド及びレスポンス、データラインのうち転送データＤＡＴ０が送受信されるデータラインのタイミング図を示している。
【０１２３】
制御マスタ１２６で実行される上位アプリケーションプログラムによりＲ１ｂレスポンスを伴うコマンドの発行指示ＣＭＤ＿Ｇｏが検出されると、カードコントローラ１３０のコマンド制御部３１０は、コマンドラインを介してコマンドを発行する（ＴＧ２５）。
【０１２４】
そしてカードコントローラ１３０は、Ｒ１ｂコマンドの発行指示ＣＭＤ＿Ｇｏを基準に所定の固定クロック（転送クロックＣＬＫの固定クロック数に相当する期間）が経過後に、ビジー検出部３９２がメモリカード２００のビジー状態を検出する（ＴＧ２６）。
【０１２５】
以上のように、カードコントローラ１３０では、Ｒ１ｂコマンドの発行指示を基準に、所定の固定期間が経過したときに、コマンドに対応したレスポンスの有無にかかわらず、ビジー検出部３９２が、メモリカード２００のビジー状態の検出を開始する。そして、ビジー検出部３９２によりビジー状態の検出が開始された後に、メモリカード２００の非ビジー状態が検出されたときに、コマンド制御部３１０が発行したコマンドで指定された処理の完了を通知する。
【０１２６】
２．２  ハードウェア構成例
次に、上述の実施形態を実現する図１、図３、図１０、又は図１３のカードコントローラ１３０の具体的な構成例について説明する。
【０１２７】
図１６に、図１、図３、図１０、又は図１３のカードコントローラ１３０のハードウェア構成例を示す。
【０１２８】
カードコントローラ１３０は、制御インタフェース（InterFace：Ｉ／Ｆ）回路１３２、ＦＩＦＯ（First-In First-Out)Ｉ／Ｆ回路１３４、コントローラ制御レジスタ部１３６、クロック制御部１３８、コマンド制御部１４０、データ制御部１４６、ドライバ部１５０を含む。コマンド制御部１４０は、コマンドシーケンサ１４２、レスポンスエラー判定部１４３を含む。データ制御部１４６は、データシーケンサ１４８、ビジー検出部１４９を含む。
【０１２９】
制御Ｉ／Ｆ回路１３２は、システムバス１２２を介してＣＰＵ１１０やメモリ１２０との間で送受信される制御信号や制御データのインタフェース処理を行う。ＣＰＵ１１０は、制御Ｉ／Ｆ回路１３２を介してコントローラ制御レジスタ部１３６の各制御レジスタに制御データを設定できる。
【０１３０】
ＦＩＦＯＩ／Ｆ回路１３４は、システムバス１２２を介してＣＰＵ１１０やメモリ１２０との間で送受信される制御信号や制御データのインタフェース処理を行う。システムバス１２２を介してメモリ１２０から読み出されたデータ（ライトデータ）は、ＦＩＦＯＩ／Ｆ回路１３４の図示しないＦＩＦＯ（バッファ）においてバッファリングされた後、データ制御部１４６に供給される。また、メモリカード２００から読み出されたデータ（リードデータ）は、ＦＩＦＯＩ／Ｆ回路１３４の図示しないＦＩＦＯ（バッファ）においてバッファリングされた後に、システムバス１２２を介してＣＰＵ１１０又はメモリ１２０に出力される。
【０１３１】
コントローラ制御レジスタ部１３６は、１又は複数の制御レジスタを有し、各制御レジスタにはカードコントローラ１３０を制御するための制御データが設定される。コントローラ制御レジスタ部１３６の各制御レジスタに設定された制御データに対応した制御信号に基づいて、カードコントローラ１３０の各部が制御される。制御マスタ１２６からのＲ１ｂコマンドやその他のコマンドの発行指示ＣＭＤ＿Ｇｏは、コントローラ制御レジスタ部１３６のコマンド発行指示レジスタにセットされることでカードコントローラ１３０のコマンド制御部１４０及びデータ制御部１４６にコマンド発行指示が通知される。
【０１３２】
また、制御Ｉ／Ｆ回路１３２又はコントローラ制御レジスタ部１３６は、ＣＰＵ１１０（制御マスタ１２６）に対して割り込み信号を発生する図示しない割り込み発生部を有する。このような制御Ｉ／Ｆ回路１３２は、図３のコマンド完了通知部３４０及びエラー通知部３５０の機能を有する。図１６では、データ制御部１４６で検出されたデータ転送完了通知が、コントローラ制御レジスタ部１３６に入力され、制御マスタ１２６に対して割り込み通知されるようになっている。
【０１３３】
クロック制御部１３８は、カードコントローラ１３０の各部にクロックを供給すると共に、バス２０を構成するクロックラインに転送クロックＣＬＫを出力する制御を行う。クロック制御部１３８は、図３のクロック制御部３００の機能を有する。
【０１３４】
コマンド制御部１４０は、図３のコマンド制御部３１０の機能を有する。コマンドシーケンサ１４２は、コントローラ制御レジスタ部１３６の制御レジスタの制御データ（コマンドデータ）に基づいて、バス２０を構成するコマンドラインを介してメモリカード２００に対してコマンドを発行する制御を行う。コマンドシーケンサ１４２は、コマンドの発行が完了すると、コマンド完了通知をコントローラ制御レジスタ部１３６及びデータ制御部１４６に出力する。コントローラ制御レジスタ部１３６に入力されたコマンド完了通知に基づき、制御マスタ１２６に対してコマンド完了通知割り込みを発行する。
【０１３５】
また、コマンドシーケンサ１４２は、該コマンドに対応するメモリカード２００からのレスポンスを受信する制御を行う。コマンドシーケンサ１４２において受信されたレスポンスは、レスポンスデータとしてコントローラ制御レジスタ部１３６に出力される。
【０１３６】
レスポンスエラー判定部１４３は、コマンド制御部１４０を介して受信されたレスポンスのエラーの判定を行う。レスポンスエラー判定部１４３は、図３のエラー判定部３６０の機能を有する。レスポンスエラー判定部１４３によりレスポンスのエラーが検出されると、レスポンスエラー通知としてコントローラ制御レジスタ部１３６及びデータ制御部１４６に入力される。コントローラ制御レジスタ部１３６に入力されたレスポンスエラー知に基づき、制御マスタ１２６に対してレスポンスエラー通知割り込みを発行する。なお、レスポンスエラー判定部１４３は、受信したレスポンスのエラーが検出されたとき、レスポンスエラーフラグをセットしてデータ制御部１４６に通知できる。
【０１３７】
データ制御部１４６は、図３のデータ制御部３２０の機能を有する。データシーケンサ１４８は、コントローラ制御レジスタ部１３６の制御レジスタの制御データに基づいて、バス２０を構成するデータラインを介してメモリカード２００との間でデータを送受信する制御を行う。データ制御部１４６においてデータ転送完了が検出されると、コントローラ制御レジスタ部１３６に対してデータ転送完了通知を出力する。コントローラ制御レジスタ部１３６に入力されたデータ転送完了通知に基づき、制御マスタ１２６に対してデータ転送完了通知割り込みを発行する。
【０１３８】
また、コマンド制御部１４０又はデータ制御部１４６は、図１３のコマンド発行指示検出部３９０の機能を有することができる。
【０１３９】
ビジー検出部１４９は、メモリカード２００のビジー状態を検出する。ビジー検出部１４９の機能は、図３のビジー検出部３３０、図１０のビジー検出部３８０、図１３のビジー検出部３９２の機能を有する。より具体的には、ビジー検出部１４９は、転送データＤＡＴ０が伝送されるデータラインの信号と、コマンドシーケンサ１４２の制御結果と、データシーケンサ１４８の制御結果とが入力され、バスを介して接続されるメモリカード２００のコマンド発行後のビジー状態を検出できる。
【０１４０】
ドライバ部１５０は、コマンドシーケンサ１４２の制御結果に基づいてコマンドラインの信号の入出力制御を行う。また、データシーケンサ１４８の制御結果に基づいてデータラインの信号の入出力制御を行う。
【０１４１】
図１７に、図１６のドライバ部１５０の構成の概要を示す。
【０１４２】
ドライバ部１５０は、クロックラインを駆動して転送クロックＣＬＫを出力するクロック出力ドライバと、コマンドラインに接続される第１の入出力ドライバと、データラインに接続される第２の入出力ドライバとを含む。
【０１４３】
第１の入出力ドライバは、コマンドシーケンサ１４２によって制御されコマンドラインを駆動して制御コマンドを出力する出力ドライバと、コマンドラインを介して入力されるレスポンスを受信するための入力ドライバとを含む。出力ドライバは、コマンドシーケンサ１４２からの出力制御信号ＣＭＤ＿Ｏｅがクロック出力ドライバの入力信号ＣＬＫ＿Ｏｕｔで同期化された信号に基づいて、コマンドシーケンサ１４２からの出力信号ＣＭＤ＿Ｏｕｔが入力信号ＣＬＫ＿Ｏｕｔで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部１３６の制御レジスタの内容に基づいてコマンドシーケンサ１４２によって生成された制御コマンドが、第１の入出力ドライバの出力ドライバによりコマンドラインに出力される。そして、該制御コマンドに対応してメモリカード２００から出力されたレスポンスが、第１の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックＣＬＫで同期化されてコマンドシーケンサ１４２に入力信号ＣＭＤ＿Ｉｎとして入力される。
【０１４４】
第２の入出力ドライバは、データシーケンサ１４８によって制御されデータラインを駆動して転送データを出力する出力ドライバと、データラインを介して入力される転送データを受信するための入力ドライバとを含む。出力ドライバは、データシーケンサ１４８からの出力制御信号ＤＡＴ＿Ｏｅがクロック出力ドライバの入力信号ＣＬＫ＿Ｏｕｔで同期化された信号に基づいて、データシーケンサ１４８からの出力信号ＤＡＴ＿Ｏｕｔが入力信号ＣＬＫ＿Ｏｕｔで同期化された信号の出力制御を行う。これにより、コントローラ制御レジスタ部１３６の制御レジスタの内容に基づいて、ＦＩＦＯＩ／Ｆ回路１３４からのデータが、データシーケンサ１４８の制御により、転送データとして第２の入出力ドライバの出力ドライバを介してデータラインに出力される。そして、メモリカード２００から出力されたレスポンスが、第１の入出力ドライバの入力ドライバで受信される。入力ドライバの出力は、転送クロックＣＬＫで同期化されてデータシーケンサ１４８に入力信号ＤＡＴ＿Ｉｎとして入力される。なお、図１７では、転送データが４ビットデータである。
【０１４５】
図１８に、図１６のコマンドシーケンサ１４２の動作説明図を示す。
【０１４６】
コマンドシーケンサ１４２は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【０１４７】
電源投入（ＳＱ１）後の初期状態では、コマンドシーケンサ１４２は、ＩＤＬＥステートＳＴ１に遷移する。そして、制御マスタ１２６が、カードコントローラ１３０の制御レジスタに制御コマンドを発行するためのコマンド指定情報やそのパラメータ情報を設定し、その後、制御コマンド発行指示レジスタにアクセスすることで制御コマンドの発行指示を行う。コマンドシーケンサ１４２は、制御コマンドの発行指示（ＳＱ２）があると、ＳＥＮＤ＿ＣＭＤステートＳＴ２に遷移する。
【０１４８】
ＳＥＮＤ＿ＣＭＤステートＳＴ２では、コマンド制御部１４０が、コマンド指定情報やそのパラメータ情報に基づいて、メモリカード２００に対してコマンドを発行する。コマンド制御部１４０が、メモリカード２００に対して、コマンドのエンドビットを送信すると（ＳＱ３）、コマンドシーケンサ１４２は、ＷＡＩＴ＿ＲＥＳＰステートＳＴ３に遷移する。
【０１４９】
ＷＡＩＴ＿ＲＥＳＰステートＳＴ３では、所定のタイムアウト期間だけ、上記のコマンドに対応したレスポンスのスタートビットを待つ。ＷＡＩＴ＿ＲＥＳＰステートＳＴ３において、所定のタイムアウト期間内にレスポンスのスタートビットを検出すると、コマンドシーケンサ１４２は、ＲＣＶ＿ＲＥＳＰステートＳＴ４に遷移する（ＳＱ４）。ＷＡＩＴ＿ＲＥＳＰステートＳＴ３において、所定のタイムアウト期間が経過すると、コマンドシーケンサ１４２は、ＥＲＲ＿ＰＲＯステートＳＴ６に遷移する（ＳＱ１００）。
【０１５０】
ＲＣＶ＿ＲＥＳＰステートＳＴ４では、コマンドシーケンサ１４２が、コマンドラインを介してメモリカード２００からのレスポンスデータを受信する。そして、レスポンスのエンドビットの受信が完了する（ＳＱ５）と、コマンドシーケンサ１４２は、ＥＮＤ８ＣＬＫステートＳＴ５に遷移する。
【０１５１】
ＥＮＤ８ＣＬＫステートＳＴ５では、コマンド発行間隔期間である転送クロックＣＬＫの８クロック分だけ待機する。そして、ＲＣＶ＿ＲＥＳＰステートＳＴ４において受信されたレスポンスのエラーが検出されているとき、コマンドシーケンサ１４２は、ＥＲＲ＿ＰＲＯステートＳＴ６に遷移する（ＳＱ６）。ＥＲＲ＿ＰＲＯステートＳＴ６では、制御Ｉ／Ｆ回路１３２又はコントローラ制御レジスタ部１３６が、検出されたエラーに応じて制御マスタ１２６にエラーが発生した旨の割り込みを発生させる。その後、コマンドシーケンサ１４２は、ＥＲＲ＿ＰＲＯステートＳＴ６からＩＤＬＥステートＳＴ１に遷移する（ＳＱ７）。
【０１５２】
ＲＣＶ＿ＲＥＳＰステートＳＴ４において受信されたレスポンスが正常のとき、コマンドシーケンサ１４２は、Ｃｍｄ＿ＣｍｐステートＳＴ７に遷移する（ＳＱ８）。Ｃｍｄ＿ＣｍｐステートＳＴ７では、制御Ｉ／Ｆ回路１３２又はコントローラ制御レジスタ部１３６が、制御マスタ１２６にコマンド完了通知割り込みを発生させる。その後、コマンドシーケンサ１４２は、Ｃｍｄ＿ＣｍｐステートＳＴ７からＩＤＬＥステートＳＴ１に遷移する（ＳＱ９）。
【０１５３】
図１９に、図１６のデータシーケンサ１４８の動作説明図を示す。
【０１５４】
データシーケンサ１４８は、複数のステートを有し、各ステートに応じた制御を行う。各ステートには、予め遷移条件が決められており、該遷移条件を満足することで次のステートに遷移する。
【０１５５】
電源投入（ＳＱ１０）後の初期状態では、データシーケンサ１４８は、ＩＤＬＥステートＳＴ１０に遷移する。制御マスタ１２６で実行される上位アプリケーションからメモリカード２００に対して制御コマンドの発行指示があると、その制御コマンドの種類によって遷移先のステートが変わる。
【０１５６】
ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドがライトコマンドのとき（ＳＱ１１）、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ１１に遷移する。
【０１５７】
ＣＨＫ＿ＢＵＳＹステートＳＴ１１では、メモリカード２００がビジー状態か否かが検出される。ＣＨＫ＿ＢＵＳＹステートＳＴ１１において、メモリカード２００の非ビジー状態が検出されたとき（ＳＱ１２）、データシーケンサ１４８は、ＷＲ＿ＤＡＴステートＳＴ１２に遷移する。ＣＨＫ＿ＢＵＳＹステートＳＴ１１において、メモリカード２００のビジー状態が検出されたとき（ＳＱ１３）、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ１１を繰り返す。
【０１５８】
ＷＲ＿ＤＡＴステートＳＴ１２において、データシーケンサ１４８は、メモリカード２００に対してライトデータを送出する制御を行う。１ブロック分のライトデータを送出すると（ＳＱ１４）、データシーケンサ１４８は、ＣＲＣＳＴステートＳＴ１３に遷移する。
【０１５９】
ＣＲＣＳＴステートＳＴ１３では、データシーケンサ１４８は、ライトデータのＣＲＣステータスをチェックし、ＣＲＣステータスが正常で次のブロックの転送が必要なとき（ＳＱ１５）、データシーケンサ１４８は、ＷＲ＿ＤＡＴステートＳＴ１２に遷移する。ＣＲＣＳＴステートＳＴ１３において、ＣＲＣステータスが正常で次のブロックの転送が不要なとき（ＳＱ１６）、データシーケンサ１４８は、ＥＮＤ８ＣＬＫステートＳＴ２０に遷移する。
【０１６０】
ＥＮＤ８ＣＬＫステートＳＴ２０では、コマンド発行間隔期間である転送クロックＣＬＫの８クロック分だけ待機する。そして、転送クロックＣＬＫの８クロック分の期間が経過する（ＳＱ２０）と、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ２１に遷移する。
【０１６１】
ＣＨＫ＿ＢＵＳＹステートＳＴ２１では、メモリカード２００がビジー状態か否かが検出される。ＣＨＫ＿ＢＵＳＹステートＳＴ２１において、メモリカード２００の非ビジー状態が検出されたとき（ＳＱ２２）、データシーケンサ１４８は、Ｔｒａｎ＿ＣｍｐステートＳＴ２２に遷移する。ＣＨＫ＿ＢＵＳＹステートＳＴ２１において、メモリカード２００のビジー状態が検出されたとき（ＳＱ２１）、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ２１を繰り返す。
【０１６２】
Ｔｒａｎ＿ＣｍｐステートＳＴ２２では、データシーケンサ１４８が、制御マスタ１２６に対して転送終了割り込みを発生させる制御が行われる。転送終了割り込みを発生した後（ＳＱ２３）、データシーケンサ１４８は、ＩＤＬＥステートＳＴ１０に遷移する。
【０１６３】
ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドがリードコマンドのとき（ＳＱ３１）、データシーケンサ１４８は、ＲＤ＿ＤＡＴステートＳＴ３１に遷移する。
【０１６４】
ＲＤ＿ＤＡＴステートＳＴ３１では、データシーケンサ１４８は、メモリカード２００から１ブロック分のリードデータを読み出す制御を行う。次のブロックのリードデータを読み出す必要があるとき（ＳＱ３２）、データシーケンサ１４８は、ＲＤ＿ＤＡＴステートＳＴ３１を繰り返す。ＲＤ＿ＤＡＴステートＳＴ３１において、次のブロックのリードデータを読み出す必要がないとき（ＳＱ３３）、データシーケンサ１４８は、ＥＮＤ８ＣＬＫステートＳＴ３２に遷移する。
【０１６５】
ＥＮＤ８ＣＬＫステートＳＴ３２では、コマンド発行間隔期間である転送クロックＣＬＫの８クロック分だけ待機する。そして、転送クロックＣＬＫの８クロック分の期間が経過する（ＳＱ３４）と、データシーケンサ１４８は、Ｔｒａｎ＿ＣｍｐステートＳＴ２２に遷移する。
【０１６６】
ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドが、Ｒ１ｂレスポンスを有するライトコマンドのとき（ＳＱ４１）、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＷＲ＿ＢＵＳＹステートＳＴ４１に遷移する。より具体的には、データシーケンサ１４８は、該ライトコマンドのレスポンスのエンドビットを受信したことを条件に、ＭＡＳＫ＿Ｒ１ｂ＿ＷＲ＿ＢＵＳＹステートＳＴ４１に遷移する。
【０１６７】
ＭＡＳＫ＿Ｒ１ｂ＿ＷＲ＿ＢＵＳＹステートＳＴ４１では、データシーケンサ１４８は、メモリカード２００からのレスポンスを受信し、メモリカード２００の種類（規格、バージョン）によって変化するビジー状態の検出タイミングをマスク制御して特定する。ＭＡＳＫ＿Ｒ１ｂ＿ＷＲ＿ＢＵＳＹステートＳＴ４１において、メモリカード２００からの正常なレスポンスのエンドビットが受信され、エラーがないことが検出されると、データシーケンサ１４８は、ＣＨＫ＿ＢＵＳＹステートＳＴ１１に遷移する（ＳＱ４２）。
【０１６８】
ＭＡＳＫ＿Ｒ１ｂ＿ＷＲ＿ＢＵＳＹステートＳＴ４１において、メモリカード２００から受信したレスポンスでエラーが検出されると、データシーケンサ１４８は、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２に遷移する（ＳＱ４３）。
【０１６９】
一方、ＩＤＬＥステートＳＴ１０において、上位アプリケーションから発行指示された制御コマンドが、Ｒ１ｂレスポンスを有するコマンド（ライトコマンドを除くコマンド）のとき（ＳＱ４４）、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３に遷移する。
【０１７０】
ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３では、データシーケンサ１４８は、メモリカード２００からのレスポンスを受信し、メモリカード２００の種類（規格、バージョン）によって変化するビジー状態の検出タイミングをマスク制御して特定する。次に、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３において、ビジー状態の検出タイミングになると、データシーケンサ１４８は、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２に遷移する（ＳＱ４５）。
【０１７１】
ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２では、メモリカード２００がビジー状態か否かが検出される。ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２においてメモリカード２００のビジー状態が検出されたとき（ＳＱ４６）、データシーケンサ１４８は、Ｒ１ｂ＿ＢＵＳＹステートＳＴ４４に遷移する。ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２においてメモリカード２００の非ビジー状態が検出されたとき（ＳＱ４７）、データシーケンサ１４８は、Ｒ１ｂＣＯＭＰステートＳＴ４５に遷移する。
【０１７２】
Ｒ１ｂ＿ＢＵＳＹステートＳＴ４４において、メモリカード２００の非ビジー状態が検出されたとき（ＳＱ４８）、データシーケンサ１４８は、Ｒ１ｂＣＯＭＰステートＳＴ４５に遷移する。
【０１７３】
Ｒ１ｂＣＯＭＰステートＳＴ４５に遷移すると、データシーケンサ１４８は、ＩＤＬＥステートＳＴ１０に遷移する（ＳＱ４９）。
【０１７４】
図２０に、本実施形態におけるカードコントローラ１３０の動作例のタイミング図を示す。
【０１７５】
図２０では、コマンドシーケンサ１４２のステートやデータシーケンサ１４８のステートも示し、図２０では、図１８又は図１９の各ステートを分割した詳細なステートを示している。
【０１７６】
コマンドシーケンサ１４２は、Ｒ１ｂレスポンスを伴うコマンドの発行指示がある（ＴＧ３０）と、ＳＥＮＤ＿ＣＭＤステートに遷移し、コマンドラインを介してコマンドが送出される（ＴＧ３１）。
【０１７７】
コマンドのエンドビットを受信すると、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する（ＴＧ３２）。
【０１７８】
コマンドシーケンサ１４２は、コマンドのエンドビットを送信するとＷＡＩＴ＿ＲＥＳＰステートに遷移した後（ＴＧ３３）、レスポンスのスタートビットを受信するとＲＣＶ＿ＲＥＳＰステートに遷移する。そして、レスポンスのエンドビットを受信すると、ＥＮＤ８ＣＬＫステートに遷移後、Ｃｍｄ＿Ｃｍｐステートに遷移する。
【０１７９】
データシーケンサ１４８は、コマンドシーケンサ１４２がＥＮＤ８ＣＬＫステートに遷移後、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移（ＴＧ３４）し、メモリカード２００のビジー状態の検出を開始する。その後、Ｒ１ｂ＿ＢＵＳＹステートを経てＲ１ｂＣＯＭＰステートで転送終了完了割り込みを発生して、ＩＤＬＥステートに戻る。ここで、転送終了完了割り込みは、コマンド完了割り込みと同様に、カードコントローラ１３０から制御マスタ１２６に通知される、転送終了を意味する割り込み信号である。
【０１８０】
このように、図２０では、カードコントローラ１３０が、Ｒ１ｂレスポンスを伴うコマンドを発行し、レスポンスのエンドビットを受信後に、コマンド完了間隔期間経過後にビジー状態の検出し、メモリカード２００の非ビジー状態の検出と共にコマンド完了割り込みや転送終了割り込みを発生させている。
【０１８１】
図２１に、本実施形態におけるカードコントローラ１３０の他の動作例のタイミング図を示す。
【０１８２】
図２１では、コマンドシーケンサ１４２のステートやデータシーケンサ１４８のステートも示し、図２１では、図１８又は図１９の各ステートを分割した詳細なステートを示している。
【０１８３】
コマンドシーケンサ１４２は、Ｒ１ｂレスポンスを伴うコマンドの発行指示がある（ＴＧ４０）と、ＳＥＮＤ＿ＣＭＤステートに遷移し、コマンドラインを介してコマンドが送出される（ＴＧ４１）。
【０１８４】
コマンドのエンドビットを受信すると、データシーケンサ１４８は、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する（ＴＧ４２）。
【０１８５】
コマンドシーケンサ１４２は、コマンドのエンドビットを送信するとＷＡＩＴ＿ＲＥＳＰステートに遷移し（ＴＧ４３）、レスポンスのスタートビットの受信を待つ。ＷＡＩＴ＿ＲＥＳＰステートにおいて、レスポンス期間内にレスポンスのスタートビットが受信されないと、ＥＲＲ＿ＰＲＯステートに遷移する。
【０１８６】
データシーケンサ１４８は、コマンドシーケンサ１４２がＥＲＲ＿ＰＲＯステートに遷移すると共に、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移（ＴＧ４４）し、メモリカード２００のビジー状態の検出を開始する。その後、Ｒ１ｂ＿ＢＵＳＹステートを経てＲ１ｂＣＯＭＰステートで転送終了完了割り込みを発生して、ＩＤＬＥステートに戻る。
【０１８７】
このように、図２１では、カードコントローラ１３０が、Ｒ１ｂレスポンスを伴うコマンドを発行し、レスポンス期間が経過するまでにレスポンスのスタートビットが検出されないとき、該レスポンス期間経過後にビジー状態の検出し、メモリカード２００の非ビジー状態の検出と共に転送終了割り込みを発生させている。
【０１８８】
また、図１９のデータシーケンサ１４８の動作説明図において、例えば以下のようにデータシーケンサ１４８を制御することで、図１０〜図１２の処理を実現できる。即ち、図１９において、例えばＩＤＬＥステートＳＴ１０で、Ｒ１ｂコマンドのエンドビットが検出されたときにＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３に遷移し（ＳＱ４４）、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３において、ビジー検出開始期間設定レジスタ３７０に設定された制御データに対応した期間だけ待ち、該期間の経過後にメモリカード２００からのレスポンスの有無にかかわらず、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２に遷移させる（ＳＱ４５）。
【０１８９】
図２２に、図１６の構成を有し、図１０〜図１２の処理を実現するカードコントローラ１３０の動作例のタイミング図を示す。
【０１９０】
図２２では、コマンドシーケンサ１４２のステートやデータシーケンサ１４８のステートも示し、図２２では図１８又は図１９の各ステートを分割した詳細なステートを示している。
【０１９１】
コマンドシーケンサ１４２は、Ｒ１ｂレスポンスを伴うコマンドの発行指示がある（ＴＧ５０）と、ＳＥＮＤ＿ＣＭＤステートに遷移し、コマンドラインを介してコマンドが送出される（ＴＧ５１）。
【０１９２】
コマンドのエンドビットを受信すると、データシーケンサ１４８は、ＩＤＬＥステートからＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する（ＴＧ５２）。ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートでは、当該ステートへの遷移タイミングを基準に、ビジー検出開始期間設定レジスタ３７０に設定された制御データ（レジスタ設定値）に対応した期間の計測を開始する。
【０１９３】
コマンドシーケンサ１４２は、コマンドのエンドビットを送信するとＷＡＩＴ＿ＲＥＳＰステートに遷移した後（ＴＧ５３）、レスポンスのスタートビットを受信するとＲＣＶ＿ＲＥＳＰステートに遷移する。そして、レスポンスのエンドビットを受信すると、ＥＮＤ８ＣＬＫステートに遷移後、Ｃｍｄ＿Ｃｍｐステートに遷移する。
【０１９４】
データシーケンサ１４８は、ビジー検出開始期間設定レジスタ３７０に設定された制御データ（レジスタ設定値）に対応した期間が経過したときにＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移し（ＴＧ５４）、メモリカード２００のビジー状態の検出を開始する。その後、Ｒ１ｂ＿ＢＵＳＹステートを経てＲ１ｂＣＯＭＰステートで転送終了完了割り込みを発生して、ＩＤＬＥステートに戻る。ここで、転送終了完了割り込みは、コマンド完了割り込みと同様に、カードコントローラ１３０から制御マスタ１２６に通知される、転送終了を意味する割り込み信号である。
【０１９５】
このように、図２２では、カードコントローラ１３０が、Ｒ１ｂレスポンスを伴うコマンドを発行し、レスポンスの有無にかかわらず、ビジー検出開始期間が経過したときにビジー状態の検出し、メモリカード２００の非ビジー状態の検出と共にコマンド完了割り込みや転送終了割り込みを発生させている。
【０１９６】
更にまた、図１９のデータシーケンサ１４８の動作説明図において、例えば以下のようにデータシーケンサ１４８を制御することで、図１３〜図１５の処理を実現できる。即ち、図１９において、例えばＩＤＬＥステートＳＴ１０で、Ｒ１ｂコマンドの発行指示（又はスタートビット）が検出されたときにＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３に遷移し（ＳＱ４４）、ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４３において、ビジー検出開始期間設定レジスタ３７０に設定された制御データに対応した期間だけ待ち、該期間の経過後にメモリカード２００からのレスポンスの有無にかかわらず、ＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートＳＴ４２に遷移させる（ＳＱ４５）。
【０１９７】
図２３に、図１６の構成を有し、図１３〜図１５の処理を実現するカードコントローラ１３０の動作例のタイミング図を示す。
【０１９８】
図２３では、コマンドシーケンサ１４２のステートやデータシーケンサ１４８のステートも示し、図２３では図１８又は図１９の各ステートを分割した詳細なステートを示している。
【０１９９】
コマンドシーケンサ１４２は、Ｒ１ｂレスポンスを伴うコマンドの発行指示がある（ＴＧ６０）と、ＳＥＮＤ＿ＣＭＤステートに遷移し、コマンドラインを介してコマンドが送出される（ＴＧ６１）。
【０２００】
該コマンドの発行指示があると、データシーケンサ１４８は、ＩＤＬＥステートからＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移する（ＴＧ６２）。ＭＡＳＫ＿Ｒ１ｂ＿ＢＵＳＹステートでは、当該ステートへの遷移タイミングを基準に、ビジー検出開始期間設定レジスタ３７０に設定された制御データ（レジスタ設定値）に対応した期間の計測を開始する。
【０２０１】
コマンドシーケンサ１４２は、コマンドのエンドビットを送信するとＷＡＩＴ＿ＲＥＳＰステートに遷移した後（ＴＧ６３）、レスポンスのスタートビットを受信するとＲＣＶ＿ＲＥＳＰステートに遷移する。そして、レスポンスのエンドビットを受信すると、ＥＮＤ８ＣＬＫステートに遷移後、Ｃｍｄ＿Ｃｍｐステートに遷移する。
【０２０２】
データシーケンサ１４８は、ビジー検出開始期間設定レジスタ３７０に設定された制御データ（レジスタ設定値）に対応した期間が経過したときにＣＨＫ＿Ｒ１ｂ＿ＢＵＳＹステートに遷移し（ＴＧ６４）、メモリカード２００のビジー状態の検出を開始する。その後、Ｒ１ｂ＿ＢＵＳＹステートを経てＲ１ｂＣＯＭＰステートで転送終了完了割り込みを発生して、ＩＤＬＥステートに戻る。ここで、転送終了完了割り込みは、コマンド完了割り込みと同様に、カードコントローラ１３０から制御マスタ１２６に通知される、転送終了を意味する割り込み信号である。
【０２０３】
このように、図２３では、カードコントローラ１３０が、Ｒ１ｂレスポンスを伴うコマンドの発行指示があったときに、ビジー検出開始期間設定レジスタに設定された期間が経過したときに、レスポンスの有無にかかわらずビジー状態の検出し、メモリカード２００の非ビジー状態の検出と共にコマンド完了割り込みや転送終了割り込みを発生させている。
【０２０４】
３．  電子機器
次に、本実施形態におけるカードコントローラが適用されるホストシステムを含む電子機器の構成例を示す。
【０２０５】
図２４に、本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図を示す。
【０２０６】
図２４において、図１と同一部分には同一符号を付し、適宜説明を省略する。
【０２０７】
電子機器１０は、電荷結合素子（Charge Coupled Device：以下、ＣＣＤ）イメージセンサ８００、ＡＤ変換器８１０、メモリ８２０、クロック生成回路８３０、ホストシステム１００、ソケット（スロット、メモリ装着部、カード装着部、メモリカード装着部、記憶デバイス装着部）８４０を含む。
【０２０８】
ＣＣＤイメージセンサ８００は、複数の受光素子を有し、各受光素子に光が入射することにより発生した電荷を読み出して、画像を電気信号に変換する。ＣＣＤイメージセンサ８００によって電気信号に変換された画像データは、ＡＤ変換器８１０によりデジタル信号に変換された後、メモリ８２０にバッファリングされる。
【０２０９】
クロック生成回路８３０は、電子機器１０の基本クロックやホストシステム１００の基本クロックを生成する。
【０２１０】
図２４のプログラムメモリ１２０は、図１のメモリ１２０として機能する。
【０２１１】
ソケット８４０には、メモリカード２００が挿抜される。メモリカード２００がソケット８４０に挿入された状態で、カードバス２０を介してカードコントローラ１３０とメモリカード２００との間でＭＭＣ規格に従ったアクセスが行われる。
【０２１２】
ホストシステム１００の制御により、メモリ８２０に蓄えられた画像データをメモリカード２００に書き込んだり、メモリカード２００から画像データを読み出してメモリ８２０に蓄積させたりできる。
【０２１３】
図２４のような電子機器１０によれば、ホストシステム１００の制御及び構成が簡素化され、低消費電力化及び低コスト化が実現される。
【０２１４】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。本実施形態におけるメモリカードは、フラッシュメモリカードに限定されるものではない。本実施形態におけるメモリカードに代えて、Ｉ／Ｏデバイス、ＨＤＤ装置、ＤＶＤ装置、又は光ディスク装置であってもよい。
【０２１５】
更に、本発明を適用できるコマンドは上述の実施形態において説明したものに限定されるものではなく、例えばＭＭＣ規格と同様の思想に基づく規格やＭＭＣ規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンドや、例えばＣＥ−ＡＴＡ規格と同様の思想に基づく規格やＣＥ−ＡＴＡ規格を発展させた規格のビジー状態の通知を伴うレスポンスを有するコマンドにも当然本発明を適用できる。
【０２１６】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【０２１７】
【図１】本実施形態における情報処理装置が適用された電子機器の構成例のブロック図。
【図２】図１のメモリカードの構成例のブロック図。
【図３】本実施形態におけるカードコントローラの構成例のブロック図。
【図４】図４（Ａ）はコマンド制御部により送信されるコマンドの説明図。図４（Ｂ）はコマンド制御部により受信されるレスポンスの説明図。
【図５】図３のコマンド制御部、コマンド完了通知部、エラー通知部及びエラー判定部の処理例のフロー図。
【図６】図３のデータ制御部及びビジー検出部の処理例のフロー図。
【図７】図３のコマンド制御部、コマンド完了通知部、エラー通知部及びエラー判定部の他の処理例のフロー図。
【図８】図５及び図６、図７及び図６の処理を実行するカードコントローラの動作例のタイミング図。
【図９】本実施形態におけるカードコントローラの他の動作例のタイミング図。
【図１０】本実施形態におけるカードコントローラの他の構成例のブロック図。
【図１１】図１０のデータ制御部及びビジー検出部の処理例のフロー図。
【図１２】図１１の処理を実行するカードコントローラの動作例のタイミング図。
【図１３】本実施形態におけるカードコントローラの更に別の構成例のブロック図。
【図１４】図１３のデータ制御部及びビジー検出部の処理例のフロー図。
【図１５】図１４の処理を実行するカードコントローラの動作例のタイミング図。
【図１６】図１、図３、図１０又は図１３のカードコントローラのハードウェア構成例のブロック図。
【図１７】図１６のドライバ部の構成の概要を示す図。
【図１８】図１６のコマンドシーケンサの動作説明図。
【図１９】図１６のデータシーケンサの動作説明図。
【図２０】本実施形態におけるカードコントローラの動作例のタイミング図。
【図２１】本実施形態におけるカードコントローラの他の動作例のタイミング図。
【図２２】図１０〜図１２の処理を実現する図１６のデータシーケンサの動作説明図。
【図２３】図１３〜図１５の処理を実現する図１６のデータシーケンサの動作説明図。
【図２４】本実施形態における電子機器としてのデジタルスチルカメラの構成例のブロック図。
【符号の説明】
【０２１８】
１０  電子機器、  ２０  カードバス、  １００  ホストシステム、  １１０  ＣＰＵ、１２０  メモリ、  １２６  制御マスタ、  １３０  カードコントローラ、
１３２  制御Ｉ／Ｆ回路、  １３４  ＦＩＦＯＩ／Ｆ回路、
１３６  コントローラ制御レジスタ部、  １３８、３００  クロック制御部、
１４０  コマンド制御部、  １４２  コマンドシーケンサ、
１４３  レスポンスエラー判定部、  １４６、３２０  データ制御部、
１４８  データシーケンサ、  １４９、３３０、３８０、３９２  ビジー検出部、
１５０  ドライバ部、  ２００  メモリカード、  ２１０  カードＩ／Ｆ回路、
２１２  ＰＬＬ回路、  ２２０  カードＩ／Ｆ制御回路、
２３０  カード制御レジスタ部、  ２４０  メモリＩ／Ｆ回路、
２５０  メモリコア部、  ３１０  コマンド制御部、
３４０  コマンド完了通知部、  ３５０  エラー通知部、  ３６０  エラー判定部、
３７０  ビジー検出開始期間設定レジスタ、  ３９０  コマンド発行指示検出部
【図１】
2010015428.tif 000003
【図２】
2010015428.tif 000004
【図３】
2010015428.tif 000005
【図４】
2010015428.tif 000006
【図５】
2010015428.tif 000007
【図６】
2010015428.tif 000008
【図７】
2010015428.tif 000009
【図８】
2010015428.tif 000010
【図９】
2010015428.tif 000011
【図１０】
2010015428.tif 000012
【図１１】
2010015428.tif 000013
【図１２】
2010015428.tif 000014
【図１３】
2010015428.tif 000015
【図１４】
2010015428.tif 000016
【図１５】
2010015428.tif 000017
【図１６】
2010015428.tif 000018
【図１７】
2010015428.tif 000019
【図１８】
2010015428.tif 000020
【図１９】
2010015428.tif 000021
【図２０】
2010015428.tif 000022
【図２１】
2010015428.tif 000023
【図２２】
2010015428.tif 000024
【図２３】
2010015428.tif 000025
【図２４】
2010015428.tif 000026