メモリカード及びそのホスト機器
【課題】データ転送速度を向上させる。
【解決手段】ホスト機器200に装着して使用されるメモリカード100であって、ホスト機器200から供給されるクロック信号CLKの立ち上がりエッジと立ち下がりエッジとに同期して、データを送受信するデータ制御回路17を含む。
【解決手段】ホスト機器200に装着して使用されるメモリカード100であって、ホスト機器200から供給されるクロック信号CLKの立ち上がりエッジと立ち下がりエッジとに同期して、データを送受信するデータ制御回路17を含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリを備えたメモリカード及びそのホスト機器に係り、特にフラッシュメモリを備えたメモリカード及びそのホスト機器に関する。
【背景技術】
【0002】
例えばデジタルカメラや携帯電話などのデータ記憶媒体として小型のメモリカードが開発されている。このメモリカードは、デジタルカメラや携帯電話などのホスト機器に装着された状態において、ホスト機器とデータの送受信が可能とされている。このメモリカードの一種として、記憶回路にフラッシュメモリを使用したSDTM(Secure Digital)メモリカードが知られている。
【0003】
このSDTMメモリカードにおいて、近年、書き込み/読み出し速度の高速化が要求されており、メモリカードバスのバス転送速度の高速化も求められている。SDTMメモリカードでは、物理仕様Ver.1.1によりメモリカードバスの転送クロックの高速化(25MHz→50MHz)が規定され、より高速なデータ転送が可能となっている。
【0004】
今後さらに高速なデータ転送が要求されることが予想されるが、そのためには、(1)転送クロックのさらなる高速化、(2)データ転送幅(現在では、最大で4ビットパラレル)を増やす、といった手段が考えられる。
【0005】
しかし、(1)の転送クロックの高速化は、ノイズの影響が増大し、或いは高速化されたクロックよってタイミング規定が厳しくなるなどの問題がある。また、(2)のバス幅の増加は、SDTMメモリカードの入出力ピン数が増えるため、コストの増大につながるなどの問題がある。
【0006】
この種の関連技術として、バス上でストリームデータの転送を効率よく行う技術が開示されている(特許文献1参照)。
【特許文献1】特開2001−216258号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、データ転送速度を向上させることが可能なメモリカード及びそのホスト機器を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一視点に係るメモリカードは、ホスト機器に装着して使用されるメモリカードであって、前記ホスト機器から供給されるクロック信号の立ち上がりエッジと立ち下がりエッジとに同期して、データを送受信するデータ制御回路を具備する。
【0009】
本発明の一視点に係るホスト機器は、メモリカードが装着されるホスト機器であって、クロック信号の立ち上がりエッジと立ち下がりエッジとに同期してデータを送受信するダブルエッジモードを前記メモリカードがサポートしているか否かを確認するためのコマンドを前記メモリカードに送信し、前記メモリカードが前記ダブルエッジモードをサポートしている場合に、前記メモリカードに対して前記ダブルエッジモードを実行する制御回路を具備する。
【発明の効果】
【0010】
本発明によれば、データ転送速度を向上させることが可能なメモリカード及びそのホスト機器を提供することができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0012】
図1は、本発明の一実施形態に係るメモリカード100の構成を示す概略図である。メモリカード100は、例えばSDTMメモリカードから構成される。このメモリカード100は、通常、ホスト機器200に装着されて使用され、ホスト機器200に対して一種の外部記憶装置として用いられる。ホスト機器200としては、画像データ、音楽データ或いはIDデータなどの各種データを処理するパーソナルコンピュータやデジタルスチルカメラ等を含む情報処理装置が挙げられる。
【0013】
メモリカード100は、ホスト機器200との間でデータの送受信を行う。このメモリカード100は、フラッシュメモリ11、このフラッシュメモリ11を制御するカードコントローラ12、及びコネクタ13(ピン1乃至ピン9を含む)を備えている。
【0014】
コネクタ13は、メモリカード100がホスト機器200に装着された状態で、ホスト機器200と電気的に接続される。コネクタ13に含まれるピン1乃至ピン9に対する信号の割り当ては、例えば図2に示すようになっている。データDAT0,DAT1,DAT2,DAT3はそれぞれ、ピン7,ピン8,ピン9,ピン1に割り当てられている。また、ピン1は、カード検出信号CDにも割り当てられている。コマンドCMDと、このコマンドCMDに対するメモリカード100の応答信号であるレスポンスRESは、ピン2に割り当てられている。クロック信号CLKは、ピン5に割り当てられている。電源電圧VDDはピン4に、接地電圧VSS1はピン3に、接地電圧VSS2はピン6に割り当てられている。
【0015】
フラッシュメモリ11は、不揮発性半導体メモリであり、複数のNAND型のEEPROMにより構成される。ホスト機器200から送信されたデータなどは、このフラッシュメモリ11に記憶される。
【0016】
図3は、図1に示したメモリカード100の構成を示すブロック図である。コネクタ13は、バス14を介してカードコントローラ12に接続されている。バス14は、CLKライン、CMD/RESライン、DAT0ライン、DAT1ライン、DAT2ライン、CD/DAT3ライン、VDDライン、VSS1ライン、及びVSS2ラインを含む。カードコントローラ12は、例えば8ビットのバス22を介してフラッシュメモリ11と接続されている。
【0017】
カードコントローラ12は、ホストインタフェース回路15、コマンド制御回路16、データ制御回路17、MPU(Micro processing unit)18、ROM(Read Only Memory)19、RAM(Random Access Memory)20、及びメモリインタフェース回路21を備えている。
【0018】
ホストインタフェース回路15は、コネクタ13を介してホスト機器200と接続されており、MPU18の制御のもと、所定のプロトコルに従ってコマンド或いは各種データ等の送受信を行う機能ブロックである。
【0019】
コマンド制御回路16は、ホスト機器200から送信されるコマンドCMDを受け取り、このコマンドCMDを解釈する。また、コマンド制御回路16は、コマンドCMDに対する応答信号であるレスポンスRESを生成し、このレスポンスRESをホスト機器200に送信する。コマンド制御回路16の具体的な動作は後述する。
【0020】
データ制御回路17は、ホスト機器200から送信されるコマンドCMDに基づいて、データの送受信を行う。また、データ制御回路17は、メモリカード100の動作状態などを示すステータスデータ(STATUS)を生成し、このステータスデータをホスト機器200に送信する。データ制御回路17の具体的な動作は後述する。
【0021】
MPU18は、メモリカード100全体の動作を制御するものである。MPU18は、例えばメモリカード100が電源供給を受けたときに、ROM19に格納されているファームウェア(制御プログラム)をRAM20に読み出して所定の処理を実行することにより、各種のテーブルをRAM20に作成する。また、MPU18は、ホスト機器200から書き込みコマンド、読み出しコマンド、或いは消去コマンド等を受け取り、フラッシュメモリ11に対して所定の処理を実行したり、データ転送処理を制御したりする。
【0022】
ROM19は、MPU18により使用される制御プログラムなどを格納するメモリである。RAM20は、MPU18の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶するメモリである。メモリインタフェース回路21は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う機能ブロックである。
【0023】
次に、メモリカード100におけるデータ転送の動作モードについて説明する。図4は、データ転送の動作モードを説明するための図である。メモリカード100の動作モードには、SDモードとSPIモードとがある。さらに、SDモードのデータ転送には、データDAT0のみを用いる1ビットモードと、データDAT0〜DAT3を用いる4ビットモードとの2つがある。これらの動作モードは、ホスト機器200から供給されるバス幅変更コマンドによって設定される。
【0024】
ここで、4ビット幅単位でデータ転送を行うSDモード(4ビットモード)では、データ用の4つのピン1,ピン7,ピン8,ピン9が全てデータ転送に使用される。一方、1ビット幅単位でデータ転送を行うSDモード(1ビットモード)では、ピン7のみがデータ転送に使用され、データ用のピン8,ピン9は使用されない。また、ピン1は、例えばメモリカード100からホスト機器200への非同期割り込み等のために使用される。
【0025】
SPIモードは、ピン7がメモリカード100からホスト機器200へのデータ信号線(DATA OUT)に用いられる。ピン2は、ホスト機器200からメモリカード100へのデータ信号線(DATA IN)に用いられる。ピン8,ピン9は、使用されない。また、SPIモードでは、ピン1がホスト機器200からメモリカード100へのチップセレクト信号CSの送信に用いられる。
【0026】
本実施形態では、メモリカード100の動作モードとしてSDモード(4ビットモード)を例に説明するが、SDモード(1ビットモード)、SPIモードである場合にも本実施形態を適用可能なことは勿論である。
【0027】
次に、このように構成されたメモリカード100の動作を説明する。初めに、メモリカード100のデータ書き込み動作について説明する。図5は、データ書き込み動作を示すタイミングチャートである。また、図5には、バス14上のコマンド及びデータ等を示している。
【0028】
データ転送は、1つのデータブロック(例えば、512バイト)単位で行われる。また、1つのデータブロックには、例えば、10バイトの冗長部(RA)が付加されて送信される。この冗長部(RA)には、エラー検出を行うためのCRC(Cyclic Redundancy Check)コード等が含まれる。このCRCコードは、カードコントローラ12が備えるCRC回路(図示せず)により生成される。また、CRC回路は、CRCコードに基づいて、エラー検出を行う。
【0029】
また、データ転送には、1つのブロック単位でデータ転送を行うシングルデータブロック転送と、複数のブロック単位でデータ転送を行うマルチデータブロック転送とがある。本実施形態では、マルチブロックリード動作(multiple block read operation)、及びマルチブロックライト動作(multiple block write operation)を例に説明するが、シングルブロックデータ転送に適用することも可能である。
【0030】
先ず、ホスト機器200は、データ書き込みを開始するために、ライトコマンド(W−CMD)をメモリカード100に送信する。メモリカード100は、このライトコマンド(W−CMD)を受け取る。そして、コマンド制御回路16は、ライトコマンド(W−CMD)を解釈し、このライトコマンド(W−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、ホスト機器200に送信される。
【0031】
次に、ホスト機器200は、ブロックデータをメモリカード100に送信する。コマンド制御回路16は、ブロックデータを受け取った旨を示すレスポンス(RES)を生成する。さらに、データ制御回路17は、ホスト機器200から送信されたブロックデータをフラッシュメモリ11に書き込む。また、データ制御回路17は、フラッシュメモリ11にデータを書き込んでいる間、ローレベルのビシー信号(busy)を生成する。このビシー信号(busy)は、DAT0ラインを介してホスト機器200に送信される。
【0032】
同様に、ホスト機器200から送信された複数のデータブロックのマルチブロックライト動作(multiple block write operation)が行われる。
【0033】
次に、ホスト機器200は、データ書き込みを停止するために、ストップコマンド(S−CMD)をメモリカード100に送信する。メモリカード100は、このストップコマンド(S−CMD)を受け取る。そして、コマンド制御回路16は、ストップコマンド(S−CMD)を解釈し、このストップコマンド(S−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、ホスト機器200に送信される。このようしして、メモリカード100は、データストップ動作(data stop operation)を実行する。その後、メモリカード100は、データ転送を終了する。
【0034】
次に、メモリカード100のデータ読み出し動作について説明する。図6は、データ読み出し動作を示すタイミングチャートである。また、図6には、バス14上のコマンド及びデータ等を示している。
【0035】
先ず、ホスト機器200は、データ読み出しを開始するために、リードコマンド(R−CMD)を発効し、このリードコマンド(R−CMD)をメモリカード100に送信する。メモリカード100は、このリードコマンド(R−CMD)を受け取る。そして、コマンド制御回路16は、このリードコマンド(R−CMD)を解釈し、このリードコマンド(R−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、コマンド制御回路16により、ホスト機器200に送信される。
【0036】
次に、データ制御回路17は、フラッシュメモリ11からデータブロック(data block)を読み出す。このデータブロックは、ホスト機器200に送信される。同様に、複数のデータブロックがホスト機器200に送信される。
【0037】
次に、ホスト機器200は、データ読み出し動作を停止するために、ストップコマンド(S−CMD)をメモリカード100に送信する。メモリカード100は、このストップコマンド(S−CMD)を受け取る。そして、コマンド制御回路16は、ストップコマンド(S−CMD)を解釈し、このストップコマンド(S−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、ホスト機器200に送信される。このようにして、メモリカード100は、データストップ動作(data stop operation)を実行する。その後、メモリカード100は、データ転送を終了する。
【0038】
次に、データ転送及びコマンド/レスポンス転送の動作について説明する。本実施形態では、データ転送は、クロック信号CLKの立ち上がりと立ち下がりとの両エッジを使用したダブルエッジ転送により行われる。一方、コマンド/レスポンス転送は、クロック信号CLKの立ち上がり(或いは、立ち下がり)エッジを使用したシングルエッジ転送により行われる。
【0039】
図7は、データ転送及びコマンド/レスポンス転送のタイミングチャートである。また、図7には、バス14上のコマンド及びデータ等を示している。なお、図7において、“tCYC”は、クロックサイクルタイムを示している。“tLCYC”は、ローレベルのクロックタイムを示している。“tHCYC”は、ハイレベルのクロックタイムを示している。
【0040】
先ず、ホスト機器200からメモリカード100にデータが入力される書き込み動作(DAT0〜3(入力))について説明する。ホスト機器200は、クロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いてデータを送信する。この際、ホスト機器200は、所定のプロトコルに従ったセットアップタイムtDVSとホールドタイムtDVHとを満足するように、データ転送を行う。データ制御回路17は、ホスト機器200からダブルエッジ転送により送信されたデータを、クロック信号CLKの立ち上がりと立ち下がりとの両エッジで取り込む。そして、この取り込んだデータをフラッシュメモリ11に書き込む。
【0041】
次に、メモリカード100からホスト機器200にデータが出力される読み出し動作(DAT0〜3(出力))について説明する。データ制御回路17は、クロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いてデータを送信する。この際、データ制御回路17は、所定のプロトコルに従ったセットアップタイムtDSとホールドタイムtDHとを満足するように、データ転送を行う。ホスト機器200は、メモリカード100からダブルエッジ転送により送信されたデータを、クロック信号CLKの立ち上がりと立ち下がりとの両エッジで取り込む。
【0042】
次に、ホスト機器200からメモリカード100へのコマンドCMD転送動作(CMD(入力))について説明する。ホスト機器200は、コマンドCMDを発行する。そして、ホスト機器200は、クロック信号CLKの立ち上がりエッジのみを用いてコマンドCMDをメモリカード100に送信する。この際、ホスト機器200は、所定のプロトコルに従ったセットアップタイムtCVSとホールドタイムtCVHとを満足するように、コマンドCMDの転送を行う。コマンド制御回路16は、ホスト機器200からシングルエッジ転送により送信されたコマンドCMDを、クロック信号CLKの立ち上がりエッジのみを用いて取り込む。
【0043】
次に、メモリカード100からホスト機器200へのレスポンスRES転送動作(RES(出力))について説明する。コマンド制御回路16は、ホスト機器200から送信されたコマンドCMDに対するレスポンスRESを生成する。そして、コマンド制御回路16は、クロック信号CLKの立ち上がりエッジのみを用いてレスポンスRESをホスト機器200に送信する。この際、コマンド制御回路16は、所定のプロトコルに従ったセットアップタイムtCSとホールドタイムtCHとを満足するように、レスポンスRES転送を行う。ホスト機器200は、メモリカード100からシングルエッジ転送により送信されたレスポンスRESを、クロック信号CLKの立ち上がりエッジのみを用いて取り込む。
【0044】
このように、本実施形態では、コマンド/レスポンスをクロック信号CLKの立ち上がりエッジのみを用いて転送する。一方、データをクロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いて転送する。
【0045】
このようにしてデータ転送及びコマンド/レスポンス転送を行うことにより、複雑な処理が要求され、かつタイミング条件の厳しいCMDラインの信号は、従来と同様の回路を使用することができ、かつ回路の実装が容易となる。さらに、マルチブロックデータ転送などで、実用上のデータ転送速度を決めるDAT0〜3ラインに対しては、クロック信号CLKの2倍の速度での転送が可能になり、実用上のデータ転送速度が大きく向上する。なお、マルチブロック転送の場合、CMDラインは、プロトコルの最初のコマンド及びレスポンスの転送に用いられるだけなので、実用上のデータ転送速度には大きな影響はない。
【0046】
次に、データ転送をクロック信号CLKの立ち上がりエッジのみを用いて行うシングルエッジモードと、データ転送をクロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いて行うダブルエッジモードとの切り替え動作について説明する。この切り替え動作は、ホスト機器200が発行するスイッチコマンド(SW−CMD)によって行われる。
【0047】
スイッチコマンド(SW−CMD)は、例えばチェックファンクションとセットファンクションとの2つのモードで使用することができる。例えばモード0は、チェックファンクションとして使用され、モード1はセットファンクションとして使用される。モードは、コマンド中の図示せぬモードビットにデータ“0”又は“1”を設定することにより切り替えられる。
【0048】
ホスト機器200がメモリカード100をアクセスする場合、ホスト機器200は、当該ホスト機器200に接続されているメモリカード100がどのような仕様であるかを認識する必要がある。このため、ホスト機器200は、メモリカード100の仕様を認識するため、スイッチコマンド(SW−CMD)をモード0のチェックファンクションに設定してメモリカード100に供給し、メモリカード100から返送されたステータスデータ(STATUS)によりメモリカード100の仕様を認識する。
【0049】
次に、メモリカード100がダブルエッジモードをサポートしている場合、ホスト機器200は、スイッチコマンド(SW−CMD)をモード1のセットファンクションに設定してメモリカード100に供給し、メモリカード100の機能(本実施形態では、ダブルエッジモード)を設定する。以後、ホスト機器200は、メモリカード100に対してダブルエッジモードでのデータ転送を実行する。
【0050】
次に、スイッチコマンド(SW−CMD)に対してメモリカード100から返送されるステータスデータ(STATUS)について説明する。メモリカード100は、モード0(チェックファンクション)のスイッチコマンド(SW−CMD)を受け取ると、ホスト機器200に対してステータスデータ(STATUS)を返送する。図8は、スイッチコマンド(SW−CMD)に対するステータスデータ(STATUS)のデータフィールドの一例を示す図である。
【0051】
ステータスデータ(STATUS)は、例えば6個のファンクショングループ1〜ファンクショングループ6を含む。ファンクショングループ1〜ファンクショングループ6には、メモリカード100の拡張機能のサポート状況を示すデータがセットされる。
【0052】
例えばフィールドF2のファンクショングループ6には、メモリカード100のICカード機能のサポート状況を示すデータがセットされる。フィールドF1には、このメモリカード100にサポートされた拡張機能を使用する場合の最大消費電流を示すデータがセットされる。フィールドF3のファンクショングループ5には、メモリカード100の高速バスモードのサポート状況、さらにダブルエッジモードのサポート状況を示すデータがセットされる。
【0053】
また、フィールドF4には、このコマンドステータスのデータ構造(フォーマット)のバージョンを示すデータがセットされる。すなわち、コマンドステータスはカードバージョンによってフォーマットが異なっているため、このフィールドF4にバージョンを示すデータが設定される。このフィールドF4のデータが例えば“00000001”である場合、モード0において、続くフィールドF5にデータ構造が定義される。
【0054】
次に、モード1(セットファンクション)のスイッチコマンド(SW−CMD)の構成について説明する。モード1のスイッチコマンド(SW−CMD)は、拡張機能を設定するための例えば24ビットデータ(bit0−23)を含んでいる。Bit0−3には、ファンクショングループ6のデータが設定され、Bit4−7には、ファンクショングループ5のデータが設定される。
【0055】
具体的には、ファンクショングループ6のBit0には、ICカード機能を無効にするためのデータが設定される。ファンクショングループ6のBit1には、ICカード機能を有効にするためのデータが設定される。
【0056】
ファンクショングループ5のBit4には、通常バスモードである通常バスクロック(例えば、25MHz)かつシングルエッジモードに設定するためのデータが設定される。ファンクショングループ5のBit5には、高速バスクロック(例えば、50MHz)かつシングルエッジモードに設定するためのデータが設定される。ファンクショングループ5のBit6には、高速バスクロックかつダブルエッジモードに設定するためのデータが設定される。また、Bit8−23には、ファンクショングループ1〜4のデータが設定される。
【0057】
図9は、シングルエッジモードとダブルエッジモードとの切り替え動作を示すタイミングチャートである。メモリカード100は、例えば、起動時のデフォルトとしてシングルエッジモードになっているものとする。先ず、ホスト機器200は、モード0(チェックファンクション)のスイッチコマンド(SW−CMD)を発行する。このスイッチコマンド(SW−CMD)は、クロック信号CLKの立ち上がりエッジに同期してメモリカード100に送信される。
【0058】
メモリカード100がスイッチコマンド(SW−CMD)を受け取ると、コマンド制御回路16は、スイッチコマンド(SW−CMD)を解釈する。また、コマンド制御回路16は、クロック信号CLKの立ち上がりエッジに同期して、レスポンスRESをホスト機器200に送信する。
【0059】
さらに、データ制御回路17は、このメモリカード100のダブルエッジモードのサポート情報を含むステータスデータ(STATUS)をホスト機器200にDATラインを使用して送信する。このステータスデータを用いて、ホスト機器200は、ダブルエッジモードのサポート状況を認識する。
【0060】
ここで、メモリカード100がダブルエッジモードをサポートしていない場合、以後、ホスト機器200は、メモリカード100に対してシングルエッジモードを実行する。
【0061】
一方、メモリカード100がダブルエッジモードをサポートしている場合、ホスト機器200は、モード1(セットファンクション)のスイッチコマンド(SW−CMD)を発行する。このスイッチコマンド(SW−CMD)は、クロック信号CLKの立ち上がりエッジに同期してメモリカード100に送信される。
【0062】
メモリカード100がスイッチコマンド(SW−CMD)を受け取ると、コマンド制御回路16は、スイッチコマンド(SW−CMD)を解釈する。また、コマンド制御回路16は、クロック信号CLKの立ち上がりエッジに同期して、レスポンスRESをホスト機器200に送信する。
【0063】
さらに、コマンド制御回路16は、スイッチコマンド(SW−CMD)に基づいて、メモリカード100をダブルエッジモードに設定する。また、データ制御回路17は、ダブルエッジモードへの切り替えを受け付けた旨のステータスデータ(STATUS)をホスト機器200にDATラインを使用して送信する。
【0064】
実際にメモリカード100がダブルエッジモードに移行してクロック信号CLKのダブルエッジに同期してデータを送受信するのは、このモード1のスイッチコマンド(SW−CMD)に対するステータスデータをメモリカード100がホスト機器200に送信した後の次のコマンドからになる。以後、ホスト機器200は、メモリカード100に対してダブルエッジモードを実行する。
【0065】
このようにすることで、メモリカード100内部回路のシングルエッジモードとダブルエッジモードとの切り替えタイミングが明確になり、回路の実装が容易になる。
【0066】
次に、ホスト機器200の構成について説明する。図10は、ホスト機器200の構成を示すブロック図である。ホスト機器200は、ホスト制御回路201、電源回路202、コネクタ203、及びバス204を備えている。
【0067】
ホスト制御回路201は、メモリカード100との間で、コマンド及びデータの転送制御を実行する。コネクタ203は、バス204を介してホスト制御回路201に接続されている。また、コネクタ203は、コネクタ13を介してメモリカード100と電気的に接続される。
【0068】
電源回路202は、電源電圧V、接地電圧VSS1、及び接地電圧VSS2を生成する。これら電源電圧V、接地電圧VSS1、及び接地電圧VSS2はそれぞれ、コネクタ203を介してメモリカード100が備えるピン4、ピン3、及びピン6に供給される。
【0069】
このように構成されたホスト機器200の動作を説明する。図11は、ホスト制御回路201の動作を示すフローチャートである。なお、メモリカード100は、例えば、起動時のデフォルトとしてシングルエッジモードになっているものとする。
【0070】
先ず、ホスト制御回路201は、メモリカード100がダブルエッジモードをサポートしているか否かを確認するために、モード0のスイッチコマンドSW−CMDを生成し、このスイッチコマンドSW−CMDをメモリカード100に送信する(ステップS11a)。
【0071】
次に、ホスト制御回路201は、モード0のスイッチコマンドSW−CMDに対するステータスデータ(STATUS)がメモリカード100から送信されたか否かを監視している(ステップS11b)。メモリカード100からステータスデータ(STATUS)を受け取ると、ホスト制御回路201は、このステータスデータ(STATUS)を用いて、メモリカード100がダブルエッジモードをサポートしているか否かを判定する(ステップS11c)。
【0072】
メモリカード100がダブルエッジモードをサポートしていない場合、ホスト制御回路201は、以後メモリカード100に対してシングルエッジモードを実行する。すなわち、ホスト制御回路201は、クロック信号CLKのシングルエッジに同期して、コマンドおよびデータを送受信する(ステップS11d)。
【0073】
一方、メモリカード100がダブルエッジモードをサポートしている場合、ホスト制御回路201は、メモリカード100をダブルエッジモードに切り替えるために、モード1のスイッチコマンドSW−CMDを生成し、このスイッチコマンドSW−CMDをメモリカード100に送信する(ステップS11e)。
【0074】
次に、ホスト制御回路201は、モード1のスイッチコマンドSW−CMDに対するステータスデータ(STATUS)がメモリカード100から送信されたか否かを監視している(ステップS11f)。メモリカード100からステータスデータを受け取ると、ホスト制御回路201は、メモリカード100がダブルエッジモードに切り替わったことを認識し、以後メモリカード100に対してダブルエッジモードでデータ転送を行う。すなわち、ホスト制御回路201は、コマンドをクロック信号CLKのシングルエッジに同期して転送し、データをクロック信号CLKのダブルエッジに同期して転送する(ステップS11g)。
【0075】
以上詳述したように本実施形態によれば、クロック信号CLKの速度を上げることなく、バス上のデータ転送速度を向上させることができる。また、ダブルエッジ転送にすることにより、同じクロック周波数で2倍のデータ転送速度を得ることができる。
【0076】
また、ダブルエッジ転送するのはデータのみで、コマンドはシングルエッジ転送するようにしている。これにより、複雑な処理が要求され、かつタイミング条件の厳しいCMDラインの信号は、従来と同様の回路を使用することができ、かつ回路の実装が容易となる。この結果、製造コストを低減することができる。
【0077】
また、メモリカードの拡張機能を設定するためのスイッチコマンドの一部に本実施形態で説明したダブルエッジモードを設定するフィールドを設けている。このため、コマンドを増やすことなくシングルエッジモードとダブルエッジモードとの切り替えを行うことができる。
【0078】
また、ホスト機器は、メモリカードに対してシングルエッジモードとダブルエッジモードとの切り替えを行うことができる。さらに、ホスト機器は、ダブルエッジモードをサポートしているメモリカードに対して、ダブルエッジ転送を行うことができる。
【0079】
なお、本実施形態ではSDメモリカードを一例として説明したが、同様のバス構造を持つ他のメモリカードやメモリデバイスにも適用可能である。
【0080】
この発明は、上記実施形態に限定されるものではなく、その他、本発明の要旨を変更しない範囲において種々変形して実施可能である。
【図面の簡単な説明】
【0081】
【図1】本発明の一実施形態に係るメモリカード100の構成を示す概略図。
【図2】メモリカード100の信号ピンに対する信号割り当てを示す図。
【図3】図1に示したメモリカード100の構成を示すブロック図。
【図4】メモリカード100の各動作モードにおける信号ピンに対する信号割り当てを示す図。
【図5】メモリカード100のデータ書き込み動作を示すタイミングチャート。
【図6】メモリカード100のデータ読み出し動作を示すタイミングチャート。
【図7】メモリカード100のデータ転送及びコマンド/レスポンス転送のタイミングチャート。
【図8】スイッチコマンド(SW−CMD)に対するステータスデータ(STATUS)のデータフィールドの一例を示す図。
【図9】シングルエッジモードとダブルエッジモードとの切り替え動作を示すタイミングチャート。
【図10】図1に示したホスト機器200の構成を示すブロック図。
【図11】ホスト制御回路201の動作を示すフローチャート。
【符号の説明】
【0082】
100…メモリカード、200…ホスト機器、11…フラッシュメモリ、12…カードコントローラ、13,203…コネクタ、14,22,204…バス、15…ホストインタフェース回路、16…コマンド制御回路、17…データ制御回路、18…MPU、19…ROM、20…RAM、21…メモリインタフェース回路、201…ホスト制御回路、202…電源回路。
【技術分野】
【0001】
本発明は、不揮発性メモリを備えたメモリカード及びそのホスト機器に係り、特にフラッシュメモリを備えたメモリカード及びそのホスト機器に関する。
【背景技術】
【0002】
例えばデジタルカメラや携帯電話などのデータ記憶媒体として小型のメモリカードが開発されている。このメモリカードは、デジタルカメラや携帯電話などのホスト機器に装着された状態において、ホスト機器とデータの送受信が可能とされている。このメモリカードの一種として、記憶回路にフラッシュメモリを使用したSDTM(Secure Digital)メモリカードが知られている。
【0003】
このSDTMメモリカードにおいて、近年、書き込み/読み出し速度の高速化が要求されており、メモリカードバスのバス転送速度の高速化も求められている。SDTMメモリカードでは、物理仕様Ver.1.1によりメモリカードバスの転送クロックの高速化(25MHz→50MHz)が規定され、より高速なデータ転送が可能となっている。
【0004】
今後さらに高速なデータ転送が要求されることが予想されるが、そのためには、(1)転送クロックのさらなる高速化、(2)データ転送幅(現在では、最大で4ビットパラレル)を増やす、といった手段が考えられる。
【0005】
しかし、(1)の転送クロックの高速化は、ノイズの影響が増大し、或いは高速化されたクロックよってタイミング規定が厳しくなるなどの問題がある。また、(2)のバス幅の増加は、SDTMメモリカードの入出力ピン数が増えるため、コストの増大につながるなどの問題がある。
【0006】
この種の関連技術として、バス上でストリームデータの転送を効率よく行う技術が開示されている(特許文献1参照)。
【特許文献1】特開2001−216258号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、データ転送速度を向上させることが可能なメモリカード及びそのホスト機器を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一視点に係るメモリカードは、ホスト機器に装着して使用されるメモリカードであって、前記ホスト機器から供給されるクロック信号の立ち上がりエッジと立ち下がりエッジとに同期して、データを送受信するデータ制御回路を具備する。
【0009】
本発明の一視点に係るホスト機器は、メモリカードが装着されるホスト機器であって、クロック信号の立ち上がりエッジと立ち下がりエッジとに同期してデータを送受信するダブルエッジモードを前記メモリカードがサポートしているか否かを確認するためのコマンドを前記メモリカードに送信し、前記メモリカードが前記ダブルエッジモードをサポートしている場合に、前記メモリカードに対して前記ダブルエッジモードを実行する制御回路を具備する。
【発明の効果】
【0010】
本発明によれば、データ転送速度を向上させることが可能なメモリカード及びそのホスト機器を提供することができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0012】
図1は、本発明の一実施形態に係るメモリカード100の構成を示す概略図である。メモリカード100は、例えばSDTMメモリカードから構成される。このメモリカード100は、通常、ホスト機器200に装着されて使用され、ホスト機器200に対して一種の外部記憶装置として用いられる。ホスト機器200としては、画像データ、音楽データ或いはIDデータなどの各種データを処理するパーソナルコンピュータやデジタルスチルカメラ等を含む情報処理装置が挙げられる。
【0013】
メモリカード100は、ホスト機器200との間でデータの送受信を行う。このメモリカード100は、フラッシュメモリ11、このフラッシュメモリ11を制御するカードコントローラ12、及びコネクタ13(ピン1乃至ピン9を含む)を備えている。
【0014】
コネクタ13は、メモリカード100がホスト機器200に装着された状態で、ホスト機器200と電気的に接続される。コネクタ13に含まれるピン1乃至ピン9に対する信号の割り当ては、例えば図2に示すようになっている。データDAT0,DAT1,DAT2,DAT3はそれぞれ、ピン7,ピン8,ピン9,ピン1に割り当てられている。また、ピン1は、カード検出信号CDにも割り当てられている。コマンドCMDと、このコマンドCMDに対するメモリカード100の応答信号であるレスポンスRESは、ピン2に割り当てられている。クロック信号CLKは、ピン5に割り当てられている。電源電圧VDDはピン4に、接地電圧VSS1はピン3に、接地電圧VSS2はピン6に割り当てられている。
【0015】
フラッシュメモリ11は、不揮発性半導体メモリであり、複数のNAND型のEEPROMにより構成される。ホスト機器200から送信されたデータなどは、このフラッシュメモリ11に記憶される。
【0016】
図3は、図1に示したメモリカード100の構成を示すブロック図である。コネクタ13は、バス14を介してカードコントローラ12に接続されている。バス14は、CLKライン、CMD/RESライン、DAT0ライン、DAT1ライン、DAT2ライン、CD/DAT3ライン、VDDライン、VSS1ライン、及びVSS2ラインを含む。カードコントローラ12は、例えば8ビットのバス22を介してフラッシュメモリ11と接続されている。
【0017】
カードコントローラ12は、ホストインタフェース回路15、コマンド制御回路16、データ制御回路17、MPU(Micro processing unit)18、ROM(Read Only Memory)19、RAM(Random Access Memory)20、及びメモリインタフェース回路21を備えている。
【0018】
ホストインタフェース回路15は、コネクタ13を介してホスト機器200と接続されており、MPU18の制御のもと、所定のプロトコルに従ってコマンド或いは各種データ等の送受信を行う機能ブロックである。
【0019】
コマンド制御回路16は、ホスト機器200から送信されるコマンドCMDを受け取り、このコマンドCMDを解釈する。また、コマンド制御回路16は、コマンドCMDに対する応答信号であるレスポンスRESを生成し、このレスポンスRESをホスト機器200に送信する。コマンド制御回路16の具体的な動作は後述する。
【0020】
データ制御回路17は、ホスト機器200から送信されるコマンドCMDに基づいて、データの送受信を行う。また、データ制御回路17は、メモリカード100の動作状態などを示すステータスデータ(STATUS)を生成し、このステータスデータをホスト機器200に送信する。データ制御回路17の具体的な動作は後述する。
【0021】
MPU18は、メモリカード100全体の動作を制御するものである。MPU18は、例えばメモリカード100が電源供給を受けたときに、ROM19に格納されているファームウェア(制御プログラム)をRAM20に読み出して所定の処理を実行することにより、各種のテーブルをRAM20に作成する。また、MPU18は、ホスト機器200から書き込みコマンド、読み出しコマンド、或いは消去コマンド等を受け取り、フラッシュメモリ11に対して所定の処理を実行したり、データ転送処理を制御したりする。
【0022】
ROM19は、MPU18により使用される制御プログラムなどを格納するメモリである。RAM20は、MPU18の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶するメモリである。メモリインタフェース回路21は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う機能ブロックである。
【0023】
次に、メモリカード100におけるデータ転送の動作モードについて説明する。図4は、データ転送の動作モードを説明するための図である。メモリカード100の動作モードには、SDモードとSPIモードとがある。さらに、SDモードのデータ転送には、データDAT0のみを用いる1ビットモードと、データDAT0〜DAT3を用いる4ビットモードとの2つがある。これらの動作モードは、ホスト機器200から供給されるバス幅変更コマンドによって設定される。
【0024】
ここで、4ビット幅単位でデータ転送を行うSDモード(4ビットモード)では、データ用の4つのピン1,ピン7,ピン8,ピン9が全てデータ転送に使用される。一方、1ビット幅単位でデータ転送を行うSDモード(1ビットモード)では、ピン7のみがデータ転送に使用され、データ用のピン8,ピン9は使用されない。また、ピン1は、例えばメモリカード100からホスト機器200への非同期割り込み等のために使用される。
【0025】
SPIモードは、ピン7がメモリカード100からホスト機器200へのデータ信号線(DATA OUT)に用いられる。ピン2は、ホスト機器200からメモリカード100へのデータ信号線(DATA IN)に用いられる。ピン8,ピン9は、使用されない。また、SPIモードでは、ピン1がホスト機器200からメモリカード100へのチップセレクト信号CSの送信に用いられる。
【0026】
本実施形態では、メモリカード100の動作モードとしてSDモード(4ビットモード)を例に説明するが、SDモード(1ビットモード)、SPIモードである場合にも本実施形態を適用可能なことは勿論である。
【0027】
次に、このように構成されたメモリカード100の動作を説明する。初めに、メモリカード100のデータ書き込み動作について説明する。図5は、データ書き込み動作を示すタイミングチャートである。また、図5には、バス14上のコマンド及びデータ等を示している。
【0028】
データ転送は、1つのデータブロック(例えば、512バイト)単位で行われる。また、1つのデータブロックには、例えば、10バイトの冗長部(RA)が付加されて送信される。この冗長部(RA)には、エラー検出を行うためのCRC(Cyclic Redundancy Check)コード等が含まれる。このCRCコードは、カードコントローラ12が備えるCRC回路(図示せず)により生成される。また、CRC回路は、CRCコードに基づいて、エラー検出を行う。
【0029】
また、データ転送には、1つのブロック単位でデータ転送を行うシングルデータブロック転送と、複数のブロック単位でデータ転送を行うマルチデータブロック転送とがある。本実施形態では、マルチブロックリード動作(multiple block read operation)、及びマルチブロックライト動作(multiple block write operation)を例に説明するが、シングルブロックデータ転送に適用することも可能である。
【0030】
先ず、ホスト機器200は、データ書き込みを開始するために、ライトコマンド(W−CMD)をメモリカード100に送信する。メモリカード100は、このライトコマンド(W−CMD)を受け取る。そして、コマンド制御回路16は、ライトコマンド(W−CMD)を解釈し、このライトコマンド(W−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、ホスト機器200に送信される。
【0031】
次に、ホスト機器200は、ブロックデータをメモリカード100に送信する。コマンド制御回路16は、ブロックデータを受け取った旨を示すレスポンス(RES)を生成する。さらに、データ制御回路17は、ホスト機器200から送信されたブロックデータをフラッシュメモリ11に書き込む。また、データ制御回路17は、フラッシュメモリ11にデータを書き込んでいる間、ローレベルのビシー信号(busy)を生成する。このビシー信号(busy)は、DAT0ラインを介してホスト機器200に送信される。
【0032】
同様に、ホスト機器200から送信された複数のデータブロックのマルチブロックライト動作(multiple block write operation)が行われる。
【0033】
次に、ホスト機器200は、データ書き込みを停止するために、ストップコマンド(S−CMD)をメモリカード100に送信する。メモリカード100は、このストップコマンド(S−CMD)を受け取る。そして、コマンド制御回路16は、ストップコマンド(S−CMD)を解釈し、このストップコマンド(S−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、ホスト機器200に送信される。このようしして、メモリカード100は、データストップ動作(data stop operation)を実行する。その後、メモリカード100は、データ転送を終了する。
【0034】
次に、メモリカード100のデータ読み出し動作について説明する。図6は、データ読み出し動作を示すタイミングチャートである。また、図6には、バス14上のコマンド及びデータ等を示している。
【0035】
先ず、ホスト機器200は、データ読み出しを開始するために、リードコマンド(R−CMD)を発効し、このリードコマンド(R−CMD)をメモリカード100に送信する。メモリカード100は、このリードコマンド(R−CMD)を受け取る。そして、コマンド制御回路16は、このリードコマンド(R−CMD)を解釈し、このリードコマンド(R−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、コマンド制御回路16により、ホスト機器200に送信される。
【0036】
次に、データ制御回路17は、フラッシュメモリ11からデータブロック(data block)を読み出す。このデータブロックは、ホスト機器200に送信される。同様に、複数のデータブロックがホスト機器200に送信される。
【0037】
次に、ホスト機器200は、データ読み出し動作を停止するために、ストップコマンド(S−CMD)をメモリカード100に送信する。メモリカード100は、このストップコマンド(S−CMD)を受け取る。そして、コマンド制御回路16は、ストップコマンド(S−CMD)を解釈し、このストップコマンド(S−CMD)に対するレスポンス(RES)を生成する。このレスポンス(RES)は、ホスト機器200に送信される。このようにして、メモリカード100は、データストップ動作(data stop operation)を実行する。その後、メモリカード100は、データ転送を終了する。
【0038】
次に、データ転送及びコマンド/レスポンス転送の動作について説明する。本実施形態では、データ転送は、クロック信号CLKの立ち上がりと立ち下がりとの両エッジを使用したダブルエッジ転送により行われる。一方、コマンド/レスポンス転送は、クロック信号CLKの立ち上がり(或いは、立ち下がり)エッジを使用したシングルエッジ転送により行われる。
【0039】
図7は、データ転送及びコマンド/レスポンス転送のタイミングチャートである。また、図7には、バス14上のコマンド及びデータ等を示している。なお、図7において、“tCYC”は、クロックサイクルタイムを示している。“tLCYC”は、ローレベルのクロックタイムを示している。“tHCYC”は、ハイレベルのクロックタイムを示している。
【0040】
先ず、ホスト機器200からメモリカード100にデータが入力される書き込み動作(DAT0〜3(入力))について説明する。ホスト機器200は、クロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いてデータを送信する。この際、ホスト機器200は、所定のプロトコルに従ったセットアップタイムtDVSとホールドタイムtDVHとを満足するように、データ転送を行う。データ制御回路17は、ホスト機器200からダブルエッジ転送により送信されたデータを、クロック信号CLKの立ち上がりと立ち下がりとの両エッジで取り込む。そして、この取り込んだデータをフラッシュメモリ11に書き込む。
【0041】
次に、メモリカード100からホスト機器200にデータが出力される読み出し動作(DAT0〜3(出力))について説明する。データ制御回路17は、クロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いてデータを送信する。この際、データ制御回路17は、所定のプロトコルに従ったセットアップタイムtDSとホールドタイムtDHとを満足するように、データ転送を行う。ホスト機器200は、メモリカード100からダブルエッジ転送により送信されたデータを、クロック信号CLKの立ち上がりと立ち下がりとの両エッジで取り込む。
【0042】
次に、ホスト機器200からメモリカード100へのコマンドCMD転送動作(CMD(入力))について説明する。ホスト機器200は、コマンドCMDを発行する。そして、ホスト機器200は、クロック信号CLKの立ち上がりエッジのみを用いてコマンドCMDをメモリカード100に送信する。この際、ホスト機器200は、所定のプロトコルに従ったセットアップタイムtCVSとホールドタイムtCVHとを満足するように、コマンドCMDの転送を行う。コマンド制御回路16は、ホスト機器200からシングルエッジ転送により送信されたコマンドCMDを、クロック信号CLKの立ち上がりエッジのみを用いて取り込む。
【0043】
次に、メモリカード100からホスト機器200へのレスポンスRES転送動作(RES(出力))について説明する。コマンド制御回路16は、ホスト機器200から送信されたコマンドCMDに対するレスポンスRESを生成する。そして、コマンド制御回路16は、クロック信号CLKの立ち上がりエッジのみを用いてレスポンスRESをホスト機器200に送信する。この際、コマンド制御回路16は、所定のプロトコルに従ったセットアップタイムtCSとホールドタイムtCHとを満足するように、レスポンスRES転送を行う。ホスト機器200は、メモリカード100からシングルエッジ転送により送信されたレスポンスRESを、クロック信号CLKの立ち上がりエッジのみを用いて取り込む。
【0044】
このように、本実施形態では、コマンド/レスポンスをクロック信号CLKの立ち上がりエッジのみを用いて転送する。一方、データをクロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いて転送する。
【0045】
このようにしてデータ転送及びコマンド/レスポンス転送を行うことにより、複雑な処理が要求され、かつタイミング条件の厳しいCMDラインの信号は、従来と同様の回路を使用することができ、かつ回路の実装が容易となる。さらに、マルチブロックデータ転送などで、実用上のデータ転送速度を決めるDAT0〜3ラインに対しては、クロック信号CLKの2倍の速度での転送が可能になり、実用上のデータ転送速度が大きく向上する。なお、マルチブロック転送の場合、CMDラインは、プロトコルの最初のコマンド及びレスポンスの転送に用いられるだけなので、実用上のデータ転送速度には大きな影響はない。
【0046】
次に、データ転送をクロック信号CLKの立ち上がりエッジのみを用いて行うシングルエッジモードと、データ転送をクロック信号CLKの立ち上がりと立ち下がりとの両エッジを用いて行うダブルエッジモードとの切り替え動作について説明する。この切り替え動作は、ホスト機器200が発行するスイッチコマンド(SW−CMD)によって行われる。
【0047】
スイッチコマンド(SW−CMD)は、例えばチェックファンクションとセットファンクションとの2つのモードで使用することができる。例えばモード0は、チェックファンクションとして使用され、モード1はセットファンクションとして使用される。モードは、コマンド中の図示せぬモードビットにデータ“0”又は“1”を設定することにより切り替えられる。
【0048】
ホスト機器200がメモリカード100をアクセスする場合、ホスト機器200は、当該ホスト機器200に接続されているメモリカード100がどのような仕様であるかを認識する必要がある。このため、ホスト機器200は、メモリカード100の仕様を認識するため、スイッチコマンド(SW−CMD)をモード0のチェックファンクションに設定してメモリカード100に供給し、メモリカード100から返送されたステータスデータ(STATUS)によりメモリカード100の仕様を認識する。
【0049】
次に、メモリカード100がダブルエッジモードをサポートしている場合、ホスト機器200は、スイッチコマンド(SW−CMD)をモード1のセットファンクションに設定してメモリカード100に供給し、メモリカード100の機能(本実施形態では、ダブルエッジモード)を設定する。以後、ホスト機器200は、メモリカード100に対してダブルエッジモードでのデータ転送を実行する。
【0050】
次に、スイッチコマンド(SW−CMD)に対してメモリカード100から返送されるステータスデータ(STATUS)について説明する。メモリカード100は、モード0(チェックファンクション)のスイッチコマンド(SW−CMD)を受け取ると、ホスト機器200に対してステータスデータ(STATUS)を返送する。図8は、スイッチコマンド(SW−CMD)に対するステータスデータ(STATUS)のデータフィールドの一例を示す図である。
【0051】
ステータスデータ(STATUS)は、例えば6個のファンクショングループ1〜ファンクショングループ6を含む。ファンクショングループ1〜ファンクショングループ6には、メモリカード100の拡張機能のサポート状況を示すデータがセットされる。
【0052】
例えばフィールドF2のファンクショングループ6には、メモリカード100のICカード機能のサポート状況を示すデータがセットされる。フィールドF1には、このメモリカード100にサポートされた拡張機能を使用する場合の最大消費電流を示すデータがセットされる。フィールドF3のファンクショングループ5には、メモリカード100の高速バスモードのサポート状況、さらにダブルエッジモードのサポート状況を示すデータがセットされる。
【0053】
また、フィールドF4には、このコマンドステータスのデータ構造(フォーマット)のバージョンを示すデータがセットされる。すなわち、コマンドステータスはカードバージョンによってフォーマットが異なっているため、このフィールドF4にバージョンを示すデータが設定される。このフィールドF4のデータが例えば“00000001”である場合、モード0において、続くフィールドF5にデータ構造が定義される。
【0054】
次に、モード1(セットファンクション)のスイッチコマンド(SW−CMD)の構成について説明する。モード1のスイッチコマンド(SW−CMD)は、拡張機能を設定するための例えば24ビットデータ(bit0−23)を含んでいる。Bit0−3には、ファンクショングループ6のデータが設定され、Bit4−7には、ファンクショングループ5のデータが設定される。
【0055】
具体的には、ファンクショングループ6のBit0には、ICカード機能を無効にするためのデータが設定される。ファンクショングループ6のBit1には、ICカード機能を有効にするためのデータが設定される。
【0056】
ファンクショングループ5のBit4には、通常バスモードである通常バスクロック(例えば、25MHz)かつシングルエッジモードに設定するためのデータが設定される。ファンクショングループ5のBit5には、高速バスクロック(例えば、50MHz)かつシングルエッジモードに設定するためのデータが設定される。ファンクショングループ5のBit6には、高速バスクロックかつダブルエッジモードに設定するためのデータが設定される。また、Bit8−23には、ファンクショングループ1〜4のデータが設定される。
【0057】
図9は、シングルエッジモードとダブルエッジモードとの切り替え動作を示すタイミングチャートである。メモリカード100は、例えば、起動時のデフォルトとしてシングルエッジモードになっているものとする。先ず、ホスト機器200は、モード0(チェックファンクション)のスイッチコマンド(SW−CMD)を発行する。このスイッチコマンド(SW−CMD)は、クロック信号CLKの立ち上がりエッジに同期してメモリカード100に送信される。
【0058】
メモリカード100がスイッチコマンド(SW−CMD)を受け取ると、コマンド制御回路16は、スイッチコマンド(SW−CMD)を解釈する。また、コマンド制御回路16は、クロック信号CLKの立ち上がりエッジに同期して、レスポンスRESをホスト機器200に送信する。
【0059】
さらに、データ制御回路17は、このメモリカード100のダブルエッジモードのサポート情報を含むステータスデータ(STATUS)をホスト機器200にDATラインを使用して送信する。このステータスデータを用いて、ホスト機器200は、ダブルエッジモードのサポート状況を認識する。
【0060】
ここで、メモリカード100がダブルエッジモードをサポートしていない場合、以後、ホスト機器200は、メモリカード100に対してシングルエッジモードを実行する。
【0061】
一方、メモリカード100がダブルエッジモードをサポートしている場合、ホスト機器200は、モード1(セットファンクション)のスイッチコマンド(SW−CMD)を発行する。このスイッチコマンド(SW−CMD)は、クロック信号CLKの立ち上がりエッジに同期してメモリカード100に送信される。
【0062】
メモリカード100がスイッチコマンド(SW−CMD)を受け取ると、コマンド制御回路16は、スイッチコマンド(SW−CMD)を解釈する。また、コマンド制御回路16は、クロック信号CLKの立ち上がりエッジに同期して、レスポンスRESをホスト機器200に送信する。
【0063】
さらに、コマンド制御回路16は、スイッチコマンド(SW−CMD)に基づいて、メモリカード100をダブルエッジモードに設定する。また、データ制御回路17は、ダブルエッジモードへの切り替えを受け付けた旨のステータスデータ(STATUS)をホスト機器200にDATラインを使用して送信する。
【0064】
実際にメモリカード100がダブルエッジモードに移行してクロック信号CLKのダブルエッジに同期してデータを送受信するのは、このモード1のスイッチコマンド(SW−CMD)に対するステータスデータをメモリカード100がホスト機器200に送信した後の次のコマンドからになる。以後、ホスト機器200は、メモリカード100に対してダブルエッジモードを実行する。
【0065】
このようにすることで、メモリカード100内部回路のシングルエッジモードとダブルエッジモードとの切り替えタイミングが明確になり、回路の実装が容易になる。
【0066】
次に、ホスト機器200の構成について説明する。図10は、ホスト機器200の構成を示すブロック図である。ホスト機器200は、ホスト制御回路201、電源回路202、コネクタ203、及びバス204を備えている。
【0067】
ホスト制御回路201は、メモリカード100との間で、コマンド及びデータの転送制御を実行する。コネクタ203は、バス204を介してホスト制御回路201に接続されている。また、コネクタ203は、コネクタ13を介してメモリカード100と電気的に接続される。
【0068】
電源回路202は、電源電圧V、接地電圧VSS1、及び接地電圧VSS2を生成する。これら電源電圧V、接地電圧VSS1、及び接地電圧VSS2はそれぞれ、コネクタ203を介してメモリカード100が備えるピン4、ピン3、及びピン6に供給される。
【0069】
このように構成されたホスト機器200の動作を説明する。図11は、ホスト制御回路201の動作を示すフローチャートである。なお、メモリカード100は、例えば、起動時のデフォルトとしてシングルエッジモードになっているものとする。
【0070】
先ず、ホスト制御回路201は、メモリカード100がダブルエッジモードをサポートしているか否かを確認するために、モード0のスイッチコマンドSW−CMDを生成し、このスイッチコマンドSW−CMDをメモリカード100に送信する(ステップS11a)。
【0071】
次に、ホスト制御回路201は、モード0のスイッチコマンドSW−CMDに対するステータスデータ(STATUS)がメモリカード100から送信されたか否かを監視している(ステップS11b)。メモリカード100からステータスデータ(STATUS)を受け取ると、ホスト制御回路201は、このステータスデータ(STATUS)を用いて、メモリカード100がダブルエッジモードをサポートしているか否かを判定する(ステップS11c)。
【0072】
メモリカード100がダブルエッジモードをサポートしていない場合、ホスト制御回路201は、以後メモリカード100に対してシングルエッジモードを実行する。すなわち、ホスト制御回路201は、クロック信号CLKのシングルエッジに同期して、コマンドおよびデータを送受信する(ステップS11d)。
【0073】
一方、メモリカード100がダブルエッジモードをサポートしている場合、ホスト制御回路201は、メモリカード100をダブルエッジモードに切り替えるために、モード1のスイッチコマンドSW−CMDを生成し、このスイッチコマンドSW−CMDをメモリカード100に送信する(ステップS11e)。
【0074】
次に、ホスト制御回路201は、モード1のスイッチコマンドSW−CMDに対するステータスデータ(STATUS)がメモリカード100から送信されたか否かを監視している(ステップS11f)。メモリカード100からステータスデータを受け取ると、ホスト制御回路201は、メモリカード100がダブルエッジモードに切り替わったことを認識し、以後メモリカード100に対してダブルエッジモードでデータ転送を行う。すなわち、ホスト制御回路201は、コマンドをクロック信号CLKのシングルエッジに同期して転送し、データをクロック信号CLKのダブルエッジに同期して転送する(ステップS11g)。
【0075】
以上詳述したように本実施形態によれば、クロック信号CLKの速度を上げることなく、バス上のデータ転送速度を向上させることができる。また、ダブルエッジ転送にすることにより、同じクロック周波数で2倍のデータ転送速度を得ることができる。
【0076】
また、ダブルエッジ転送するのはデータのみで、コマンドはシングルエッジ転送するようにしている。これにより、複雑な処理が要求され、かつタイミング条件の厳しいCMDラインの信号は、従来と同様の回路を使用することができ、かつ回路の実装が容易となる。この結果、製造コストを低減することができる。
【0077】
また、メモリカードの拡張機能を設定するためのスイッチコマンドの一部に本実施形態で説明したダブルエッジモードを設定するフィールドを設けている。このため、コマンドを増やすことなくシングルエッジモードとダブルエッジモードとの切り替えを行うことができる。
【0078】
また、ホスト機器は、メモリカードに対してシングルエッジモードとダブルエッジモードとの切り替えを行うことができる。さらに、ホスト機器は、ダブルエッジモードをサポートしているメモリカードに対して、ダブルエッジ転送を行うことができる。
【0079】
なお、本実施形態ではSDメモリカードを一例として説明したが、同様のバス構造を持つ他のメモリカードやメモリデバイスにも適用可能である。
【0080】
この発明は、上記実施形態に限定されるものではなく、その他、本発明の要旨を変更しない範囲において種々変形して実施可能である。
【図面の簡単な説明】
【0081】
【図1】本発明の一実施形態に係るメモリカード100の構成を示す概略図。
【図2】メモリカード100の信号ピンに対する信号割り当てを示す図。
【図3】図1に示したメモリカード100の構成を示すブロック図。
【図4】メモリカード100の各動作モードにおける信号ピンに対する信号割り当てを示す図。
【図5】メモリカード100のデータ書き込み動作を示すタイミングチャート。
【図6】メモリカード100のデータ読み出し動作を示すタイミングチャート。
【図7】メモリカード100のデータ転送及びコマンド/レスポンス転送のタイミングチャート。
【図8】スイッチコマンド(SW−CMD)に対するステータスデータ(STATUS)のデータフィールドの一例を示す図。
【図9】シングルエッジモードとダブルエッジモードとの切り替え動作を示すタイミングチャート。
【図10】図1に示したホスト機器200の構成を示すブロック図。
【図11】ホスト制御回路201の動作を示すフローチャート。
【符号の説明】
【0082】
100…メモリカード、200…ホスト機器、11…フラッシュメモリ、12…カードコントローラ、13,203…コネクタ、14,22,204…バス、15…ホストインタフェース回路、16…コマンド制御回路、17…データ制御回路、18…MPU、19…ROM、20…RAM、21…メモリインタフェース回路、201…ホスト制御回路、202…電源回路。
【特許請求の範囲】
【請求項1】
ホスト機器に装着して使用されるメモリカードであって、
前記ホスト機器から供給されるクロック信号の立ち上がりエッジと立ち下がりエッジとに同期して、データを送受信するデータ制御回路を具備することを特徴とするメモリカード。
【請求項2】
前記クロック信号の立ち上がりエッジと立ち下がりエッジとの一方に同期して、コマンドを受信するコマンド制御回路をさらに具備することを特徴とする請求項1記載のメモリカード。
【請求項3】
前記データ制御回路は、前記クロック信号の立ち上がりエッジと立ち下がりエッジとに同期してデータを送受信するダブルエッジモードと、前記クロック信号の立ち上がりエッジと立ち下がりエッジとの一方に同期してデータを送受信するシングルエッジモードとを実行し、
前記コマンド制御回路は、前記ホスト機器から送信されるスイッチコマンドに基づいて、前記シングルエッジモードと前記ダブルエッジモードとを切り替えることを特徴とする請求項1又は2に記載のメモリカード。
【請求項4】
前記データ制御回路は、前記ダブルエッジモードと前記シングルエッジモードとの切り替えを示すステータスデータを前記ホスト機器に送信することを特徴とする請求項3記載のメモリカード。
【請求項5】
メモリカードが装着されるホスト機器であって、
クロック信号の立ち上がりエッジと立ち下がりエッジとに同期してデータを送受信するダブルエッジモードを前記メモリカードがサポートしているか否かを確認するためのコマンドを前記メモリカードに送信し、前記メモリカードが前記ダブルエッジモードをサポートしている場合に、前記メモリカードに対して前記ダブルエッジモードを実行する制御回路を具備することを特徴とするホスト機器。
【請求項1】
ホスト機器に装着して使用されるメモリカードであって、
前記ホスト機器から供給されるクロック信号の立ち上がりエッジと立ち下がりエッジとに同期して、データを送受信するデータ制御回路を具備することを特徴とするメモリカード。
【請求項2】
前記クロック信号の立ち上がりエッジと立ち下がりエッジとの一方に同期して、コマンドを受信するコマンド制御回路をさらに具備することを特徴とする請求項1記載のメモリカード。
【請求項3】
前記データ制御回路は、前記クロック信号の立ち上がりエッジと立ち下がりエッジとに同期してデータを送受信するダブルエッジモードと、前記クロック信号の立ち上がりエッジと立ち下がりエッジとの一方に同期してデータを送受信するシングルエッジモードとを実行し、
前記コマンド制御回路は、前記ホスト機器から送信されるスイッチコマンドに基づいて、前記シングルエッジモードと前記ダブルエッジモードとを切り替えることを特徴とする請求項1又は2に記載のメモリカード。
【請求項4】
前記データ制御回路は、前記ダブルエッジモードと前記シングルエッジモードとの切り替えを示すステータスデータを前記ホスト機器に送信することを特徴とする請求項3記載のメモリカード。
【請求項5】
メモリカードが装着されるホスト機器であって、
クロック信号の立ち上がりエッジと立ち下がりエッジとに同期してデータを送受信するダブルエッジモードを前記メモリカードがサポートしているか否かを確認するためのコマンドを前記メモリカードに送信し、前記メモリカードが前記ダブルエッジモードをサポートしている場合に、前記メモリカードに対して前記ダブルエッジモードを実行する制御回路を具備することを特徴とするホスト機器。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2007−11788(P2007−11788A)
【公開日】平成19年1月18日(2007.1.18)
【国際特許分類】
【出願番号】特願2005−193002(P2005−193002)
【出願日】平成17年6月30日(2005.6.30)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成19年1月18日(2007.1.18)
【国際特許分類】
【出願日】平成17年6月30日(2005.6.30)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]