説明

記憶デバイスコントローラ、情報処理装置及び電子機器

【課題】データ転送途中のアボート処理を確実に終了させる記憶デバイスコントローラ、情報処理装置及び電子機器を提供する。
【解決手段】記憶デバイスに対するアクセス制御を行う記憶デバイスコントローラは、前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するアボートコマンドを発行するコマンド発行制御部と、前記ライト動作中に前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、前記アボートコマンドのエンドビットの検出後の第1のビジー検出開始期間の経過後に、前記記憶デバイスのビジー状態の検出を開始するビジー検出部とを含み、前記ビジー検出部により非ビジー状態が検出されたときに、前記アボートコマンドによるアボート処理の終了を通知する。

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

【特許請求の範囲】
【請求項1】
記憶デバイスに対するアクセス制御を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するアボートコマンドを発行するコマンド発行制御部と、
前記ライト動作中に前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部と、
前記アボートコマンドのエンドビットの検出後の第1のビジー検出開始期間の経過後に、前記記憶デバイスのビジー状態の検出を開始するビジー検出部と、
を含み、
前記ビジー検出部により非ビジー状態が検出されたときに、前記アボートコマンドによるアボート処理の終了を通知することを特徴とする記憶デバイスコントローラ。
【請求項2】
請求項1において、
前記第1のビジー検出開始期間が、
前記アボートコマンドのエンドビットを基準に前記アボートコマンドに対応してライトデータの出力が停止されるまでの第1の期間と、前記ライトデータのエンドビットを基準に前記記憶デバイスのビジー状態の通知が開始されるまでの第2の期間とを合計した期間より長いことを特徴とする記憶デバイスコントローラ。
【請求項3】
記憶デバイスに対するアクセス制御を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してライトデータを書き込むためのライトコマンド、又は前記ライトコマンドによるライト動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記ライト動作中に、前記アボートコマンドに対応する前記記憶デバイスからのレスポンスのエンドビットを検出するレスポンスエンドビット検出部と、
前記レスポンスのエンドビットが検出されたとき、又は所定のタイムアウト期間が経過したとき、前記記憶デバイスのビジー状態の検出を開始するビジー検出部と、
を含み、
前記ビジー検出部により非ビジー状態が検出されたときに、前記アボートコマンドによるアボート処理の終了を通知することを特徴とする記憶デバイスコントローラ。
【請求項4】
記憶デバイスに対するアクセス制御を行う記憶デバイスコントローラであって、
前記記憶デバイスに対してリードデータを読み出すためのリードコマンド、又は前記リードコマンドによるリード動作のアボートを指示するためのアボートコマンドを発行するコマンド発行制御部と、
前記リード動作中に、前記アボートコマンドに対応する前記記憶デバイスからのレスポンスのエンドビットを検出するレスポンスエンドビット検出部と、
を含み、
前記レスポンスエンドビット検出部により前記レスポンスのエンドビットが検出されたときに、前記アボートコマンドによるアボート処理の終了を通知することを特徴とする記憶デバイスコントローラ。
【請求項5】
請求項3又は4において、更に、
前記ライト動作中又は前記リード動作中に、前記アボートコマンドのエンドビットを検出するコマンドエンドビット検出部を含み、
前記レスポンスエンドビット検出部が、
前記コマンドエンドビット検出部により前記アボートコマンドのエンドビットが検出された後に、前記レスポンスのエンドビットの検出を開始することを特徴とする記憶デバイスコントローラ。
【請求項6】
記憶デバイスに対するアクセス制御を行う記憶デバイスコントローラであって、
前記記憶デバイスに対するライト動作のアボートを指示するアボートコマンドタイプのコマンドの発行指示を検出するコマンド発行指示検出部と、
前記コマンドの発行指示の検出後の第2のビジー検出開始期間経過後に、前記記憶デバイスのビジー状態の検出を開始するビジー検出部と、
を含み、
前記ビジー検出部により非ビジー状態が検出されたときに、前記コマンドによるアボート処理の終了を通知することを特徴とする記憶デバイスコントローラ。
【請求項7】
請求項6において、
前記第2のビジー検出開始期間が、
前記コマンドのエンドビットを基準に前記コマンドに対応してライトデータの出力が停止されるまでの第1の期間と、前記ライトデータのエンドビットを基準に前記記憶デバイスのビジー状態の通知を開始されるまでの第2の期間と、前記コマンドの転送に要する第3の期間とを合計した期間より長いことを特徴とする記憶デバイスコントローラ。
【請求項8】
記憶デバイスに対するアクセス制御を行う記憶デバイスコントローラであって、
前記記憶デバイスからのリード動作のアボートを指示するアボートコマンドタイプのコマンドの発行指示を検出するコマンド発行指示検出部と、
前記コマンドの発行指示の検出後の第3のビジー検出開始期間経過後に、前記記憶デバイスのビジー状態の検出を開始するビジー検出部と、
を含み、
前記ビジー検出部により非ビジー状態が検出されたときに、前記コマンドによるアボート処理の終了を通知することを特徴とする記憶デバイスコントローラ。
【請求項9】
請求項8において、
前記第3のビジー検出開始期間が、
ライトコマンドのエンドビットを基準に該ライトコマンドに対応してライトデータの出力が停止されるまでの第1の期間と、前記ライトデータのエンドビットを基準に前記記憶デバイスのビジー状態の通知を開始されるまでの第2の期間と、前記ライトコマンドの転送に要する第3の期間とを合計した期間より長いことを特徴とする記憶デバイスコントローラ。
【請求項10】
請求項1又は2、6乃至9のいずれかにおいて、
前記アボートコマンドタイプが、
前記記憶デバイスに対するライト動作又はリード動作のアボートを指示するためのアボートコマンド、前記ライト動作又は前記リード動作中に前記記憶デバイスを初期化するためのリセットコマンド、又は前記ライト動作又は前記リード動作中に前記記憶デバイスを非選択状態とするデセレクトコマンドを指定する情報であることを特徴とする記憶デバイスコントローラ。
【請求項11】
請求項1乃至10のいずれかにおいて、
ビジー検出部が、
転送データが伝送されるデータラインの電位に基づいて前記記憶デバイスがビジー状態か否かを検出することを特徴とする記憶デバイスコントローラ。
【請求項12】
請求項1乃至11のいずれか記載の記憶デバイスコントローラと、
前記記憶デバイスコントローラに対してライトコマンド、リードコマンド又はアボートコマンドの発行を制御する制御マスタと、
を含むことを特徴とする情報処理装置。
【請求項13】
前記記憶デバイスが挿抜される記憶デバイス装着部と、
請求項12記載の情報処理装置と、
を含むことを特徴とする電子機器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2010−15429(P2010−15429A)
【公開日】平成22年1月21日(2010.1.21)
【国際特許分類】
【出願番号】特願2008−175649(P2008−175649)
【出願日】平成20年7月4日(2008.7.4)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】