(57)【要約】【課題】データ転送効率を向上可能な半導体記憶装置を提供する。【解決手段】半導体記憶装置は、メモリ(3)と、メモリを制御するコントローラ(4)とを含んでいる。コントローラは、第１信号線(141)および第２信号線(142)を介してホスト装置と通信し、ホスト装置から第１期間中に第１および第２信号線上でメモリに書き込まれる複数のデータを受信する。第１および第２信号線上を並行して流れる２つのデータは同じグループ番号を割り当てられている。コントローラは、複数のデータのうち正常に受信されなかったデータに割り当てられたグループ番号の明示を含んだ応答パケットをホスト装置に送信する。【選択図】      図４
2013140541.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリを制御し、第１信号線および第２信号線を介してホスト装置と通信し、前記ホスト装置から第１期間中に前記第１および第２信号線上で前記メモリに書き込まれる複数のデータを受信し、前記第１および第２信号線上を並行して流れる２つのデータは同じグループ番号を割り当てられており、前記複数のデータのうち正常に受信されなかったデータに割り当てられたグループ番号の明示を含んだ応答パケットを前記ホスト装置に送信する、コントローラと、
を具備することを特徴とする半導体記憶装置。
【請求項２】
前記コントローラが、前記複数のデータを全て正常に受信した場合、前記第１期間についての応答のためのパケットを送信せずに、第２期間にわたって前記第２信号線を特定の電位に固定する、
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記コントローラが、前記第１期間中に受信した第１シンボルと前記第１シンボル受信後に受信した第２シンボルとの対の個数が、第１値と一致した場合、前記応答パケットを送信する、
ことを特徴とする請求項２に記載の半導体記憶装置。
【請求項４】
前記コントローラが、前記第１シンボルと前記第１シンボル受信後の前記第２シンボルとの間のデータの大きさが第１長さと一致した回数を計数し、前記複数のデータのうちの正常に受信されなかったデータに付されたグループ番号を前記回数に基づいて特定し、前記特定されたグループ番号の明示を含んだ前記応答パケットを前記ホスト装置に送信する、
ことを特徴とする請求項３に記載の半導体記憶装置。
【請求項５】
前記コントローラが、平時は前記第１および第２信号線を相対する方向に向かう信号の伝送に用い、前記第１期間中は前記第１および第２信号線上で前記複数のデータを受信し、
同じグループを付された２つのデータが、１つのデータの互いに排他的な部分からなる、
ことを特徴とする請求項４に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
近年、音楽データや映像データ等を記憶する媒体として、ＮＡＮＤ型フラッシュメモリのような不揮発性メモリを用いた半導体記憶装置が普及している。例えば、デジタルカメラ、携帯電話等の電子機器向けの外部記憶装置として、ＳＤカードがある。
【０００３】
このような半導体記憶装置においては、不揮発性メモリの大容量化に伴い、ホスト装置がデータの書き込みおよび読み出しを行う際のインターフェースにおける転送速度の高速化が求められている。例えば、ＳＤカードでは、最大１０４ＭＢ／ｓｅｃの転送が可能なものもあり、次世代のインターフェースでは、さらなる高速化のための技術の検討が進められている。
【０００４】
次世代のインターフェース方式では高速化のために種々の検討が行われている。例えば、転送効率向上のため、複数のデータパケットを短い間隔でバースト転送するための規定がある。このようなデータバーストにおいては、データパケットの受信に対する応答の方法に関してオーバーヘッドとなる処理がある。具体的には、応答時における入力バッファと出力バッファとの間の切り替えのための時間が必要なことやデータ誤り時にデータパケットを個別に再送できないことである。
【０００５】
バッファ切り替え時間を短縮するには、１回のデータバースト転送期間中に転送されるデータパケットの数を増やす方法がある。しかしながら、パケットを一時的に格納するためのバッファ量が増加し、さらに再送の際に送信するデータ量が大きくなるため、あまり好ましくない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１２３６０９号公報
【特許文献２】特開２０１０−２０６４６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データ転送効率を向上可能な半導体記憶装置を提供しようとするものである。
【課題を解決するための手段】
【０００８】
一実施形態による半導体記憶装置は、半導体記憶装置は、メモリと、メモリを制御するコントローラとを含んでいる。コントローラは、第１信号線および第２信号線を介してホスト装置と通信し、ホスト装置から第１期間中に第１および第２信号線上でメモリに書き込まれる複数のデータを受信する。第１および第２信号線上を並行して流れる２つのデータは同じグループ番号を割り当てられている。コントローラは、複数のデータのうち正常に受信されなかったデータに割り当てられたグループ番号の明示を含んだ応答パケットをホスト装置に送信する。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るメモリカードの構成の一例を示している。
【図２】第１実施形態に係るパケットのフォーマットの例を示している。
【図３】第１実施形態に係る別のパケットのフォーマットの例を示している。
【図４】第１実施形態に係るメモリコントローラの構成例を示している。
【図５】第１実施形態に係る入出力制御部の構成例を示している。
【図６】第１実施形態のメモリカードに対するハーフデュプレクスモードでのデータ書き込みの際のパケットシーケンスを示している。
【図７】第１実施形態に係るさらに別のパケットのフォーマットの例を示している。
【図８】従来のメモリカードに対するハーフデュプレクスモードでのデータ書き込みの際のパケットシーケンスを示している。
【図９】第２実施形態のメモリカードに対するデータ書き込みの際のハーフデュプレクスモードでパケットシーケンスを示している。
【図１０】第３実施形態に係るメモリカードによるデータ受信フローを示している。
【図１１】第３実施形態のメモリカードに対するハーフデュプレクスモードでのデータ書き込みの際のパケットシーケンスを示している。
【発明を実施するための形態】
【００１０】
以下の記述において、各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明する。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。どの機能ブロックによって特定されるかによって実施形態が限定されるものではない。
【００１１】
また、以下の各実施形態では、メモリおよびメモリを制御するコントローラを有するメモリデバイス（半導体記憶装置）について説明する。メモリデバイスは、例えばホスト装置のスロットに挿入される、ホスト装置の外部記憶装置である。またはホスト装置の内部に実装されるものであってもよい。以下の記述では、メモリデバイスの一例として、メモリカードを用いて実施形態を説明する。メモリカードは、例えばＳＤカードである。
【００１２】
（第１実施形態）
（メモリカードの構成例）
図１に示されているように、メモリカード（メモリデバイス）１は、ホスト装置２とバスインターフェースを介して通信可能に接続可能に構成されており、例えばホスト装置２中のスロット（図示せず）に挿入可能に構成されている。ホスト装置２は、例えばパーソナルコンピュータ、デジタルカメラ、音楽プレーヤ等である。ホスト装置２は、通信可能に接続されているメモリカード１に対しアクセスするためのハードウェアおよびソフトウェアを備えている。メモリカード１は、ホスト装置２に接続されるとホスト装置２から電源を供給され、ホスト装置２からの制御に従って種々の処理を行う。
【００１３】
メモリカード１は、ハードウェアに関する構成として、メモリ３およびメモリを制御するためのメモリコントローラ４を含んでいる。メモリ３は、不揮発性メモリであり、例えばＮＡＮＤ型フラッシュメモリである。メモリカード１は、バスインターフェースを介してホスト装置２と情報を授受する。また、メモリカード１は、複数の信号ピン（図示せず）を含んでいる。複数の信号ピンは、メモリコントローラ４と電気的に接続されている。複数の信号ピンは、例えば、電源電圧（例えば３．３Ｖや１．８Ｖ）ピン、グランド（ＧＮＤ）ピン、クロック信号ピン、複数のデータ信号ピン、コマンド信号ピンから構成される。複数のデータ信号ピンは、例えば、４ビットデータのバス信号ピンで構成されたり、小振幅差動信号ピンで構成されたりする。データを授受するためのピンによりバスインターフェースが構成される。メモリコントローラ４は、これらの複数の信号ピンを介してホスト装置２内のホストコントローラと各種信号およびデータを通信する。例えば、メモリカード１にデータが書き込まれる場合、ホストコントローラは、書き込みコマンドを、データ信号ピンを介してメモリコントローラ４にシリアルな電気信号として送出する。メモリコントローラ４はクロック信号ピンに供給されるクロック信号に応じて、データ信号ピンから受信される書き込みコマンドを取り込む。
【００１４】
メモリ３とメモリコントローラ４との間の通信は、メモリ３用のインターフェースによって行われる。インターフェースは例えば８ビットの入出力信号線によって接続される。メモリコントローラ４は、インターフェースを介して、メモリ３からのデータの読み出し、メモリ３へのデータの書き込み、メモリ３中のデータの消去に必要なコマンド、アドレス、データ等を通信する。メモリ３がＮＡＮＤ型フラッシュメモリである場合、インターフェースは、ＮＡＮＤインターフェースである。
【００１５】
（パケットの構成例）
図２は、第１実施形態に係るメモリカード１（メモリコントローラ４）とホスト装置２との間で通信されるパケットのフォーマットの例を示している。図２では、コマンドパケット、レスポンスパケット、データパケット、およびメッセージパケットの４種類が例示されている。
【００１６】
各パケットは、４種のパケットに共通のヘッダ部を含んでいる。ヘッダ部は、ホストコントローラまたはメモリコントローラ４が受信処理に必要な情報を含んでいる。具体的には、ヘッダ部は、タイプフィールド、ＩＤフィールド、ＴＩＤフィールド等を含んでいる。タイプフィールドは、パケットの種類に応じた値を含んでいる。タイプフィールドに設定されるビット列によって、パケットが、コマンドパケット、レスポンスパケット、データパケット、およびメッセージパケットのうちのいずれであるかが特定される。ＩＤフィールドは、直接の宛先、または送信元の個体識別情報を含んでいる。ＴＩＤフィールドは、発生した処理（例えば、データ読み込みまたはデータ書き込み等）を識別するための識別番号を含んでいる。
【００１７】
各パケットは、さらに、アーギュメント（Argument）部、拡張アーギュメント（Extended Argument）部、ペイロード部、パッド（Pad）部、ＣＲＣ(Cyclic Redundancy Code)部のうちの特定のものを含んでいる。例えば、アーギュメント部は、コマンド、レスポンス、およびメッセージパケットに含まれ、拡張アーギュメント部はコマンドパケットに含まれ、ペイロード部およびパッド部はデータパケットに含まれ、ＣＲＣ部はコマンドパケット、レスポンスパケット、データパケット、およびメッセージパケットに含まれている。アーギュメント部は、制御情報（メモリ３のうちのデータを格納する部分のアドレス等）を含んでいる。ペイロード部は、読み出しまたは書き込みされるデータ（メモリ３に格納されたデータ等）を含んでいる。パッド部は、パケットの長さを偶数バイトに調整するためのビットを含んでいる。ＣＲＣ部は、アーギュメント部、拡張アーギュメント部、ペイロード部、およびパッド部が正常に受信されたか否かを判定するために用いられるＣＲＣを含んでいる。ヘッダ部以外のフィールドは、同じ名称のフィールドであっても上記４種類のパケットごとに含まれる情報が異なる場合がある。
【００１８】
コマンドパケットにおいて、アーギュメント部は、例えばＲＷビット、二重モードビット、ユニットビット等を含んでいる。ＲＷビットは、そのコマンドがデータの読み出し転送命令なのか、書き込み転送命令なのかを指示する。二重モードビットは、データ転送の最中にデータパケットの転送のモードを指定する。ユニットビットは、後述する転送長（Transfer Length）フィールドに示される数値の単位を指定する。また、コマンドパケット中の拡張アーギュメント部は、例えば、転送長フィールド、データアドレスフィールドを含んでいる。転送長フィールドは、転送されるデータの総量を示す値を含んでいる。データアドレスフィールドは、メモリ３中の読み出されるデータのアドレスまたはデータが書き込まれるアドレスを示す。
【００１９】
コマンドパケットを受信したメモリコントローラ４はタイプフィールドによってコマンドパケットであること、ＩＤフィールドによって自身を宛先とするパケットであること、および、そのコマンドパケットを送信した送信元装置のＩＤを認識する。また、ＲＷビットによって読み出し処理であるのか、書き込み処理であるのかを識別し、データアドレスフィールドによってアクセスすべきメモリ中の領域のアドレスを認識する。メモリコントローラ４が受信したコマンドパケットが自身を宛先とする場合、メモリコントローラ４はレスポンスパケットを送信元装置に返信する。
【００２０】
レスポンスパケットにおいて、アーギュメント部は、否定応答（Negative Ack）ビットを含んでいる。否定応答ビットは、受信されたコマンドパケットにより示される指示をメモリコントローラ４が正しく処理できるか否かを示す。例えば、コマンドパケットによってメモリ領域に存在しないアドレスを指定された場合には、メモリコントローラ４はその命令を正しく処理できないと判断し、否定応答ビットに“１”を設定する。一方、正しく処理できると判断すれば、メモリコントローラ４は、否定応答ビットに“０”を設定する。
【００２１】
データパケットにおいて、ペイロード部は、例えば、ホスト装置２がメモリ３に書き込むデータを含んでいる。その長さはデータ通信開始前にホスト装置２とメモリカード１がネゴシエーションして決定された値（例えば、５１２バイト）とされる。この決定された値の大きさのデータを本明細書では単位データと称する。例えば大きな書き込みデータは、この特定の大きさに分割して単位データごとに取り扱われる。パッド部は、データパケットの長さが奇数バイトである場合に１バイト分付加され、長さが偶数バイトになるように調整するためのものである。その長さが偶数バイトである場合には付加されない。本実施形態に係るメモリカード１は、ハーフデュプレクス（半二重）モードで動作する。ハーフデュプレクスモードは、平時は、２つの独立のデータラインをそれぞれ相対する方向の通信に利用し、データパケットの送信時には一方の通信方向を逆転させて両方のデータラインを使用する方式である。ハーフデュプレクスモードでは、単位データは２つに分けられ、それらが２つの別々のデータパケットによって並行して送信される。例えば、単位データをデータ０パケットおよびデータ１パケットの各ペイロード部によって並行して送信する。分け方として、例えばデータ０パケットのペイロード部には、単位データの偶数バイト目のデータが含められ、データ１パケットのペイロード部には、この単位データの奇数バイト目のデータが含められる。
【００２２】
データパケットには、さらにグループ番号が割り当てられている。ハーフデュプレクスモードでは１つの単位データは２つのデータパケットによって並行して送信され、これらの２つのデータパケットは、相違するペイロード部を有するが、同じヘッダ部を有する。そこで、データパケットの送信側（例えばデータ書き込み時はホスト装置２）は、同じ単位データに起因する２つのデータパケット（例えばデータ０パケットおよびデータ１パケット）にグループ番号０を割り当てる。同様に、続く別の第２、３、４単位データにも、それぞれグループ番号１、２、３が割り当てられる。さらなる単位データがある場合も、それらに対して先の説明と同様の原則に従って、グループ番号が割り当てられる。グループ番号は、データパケットのヘッダ部に含められてもよいし、ヘッダ部とは異なるフィールドが追加されてもよい。データパケットの受信側（例えばデータ書き込み時はメモリカード１）は、受信したデータパケットに割り当てられたグループ番号を認識可能になっている。
【００２３】
メッセージパケットにおいて、アーギュメント部は、例えばインデックスフィールド、エラーフィールドを含む。インデックスフィールドは、メッセージパケットによって実現される下位区分パケットの種類を示す。メッセージパケットは、例えばリクエストパケット、レディーパケット、ステータスパケット等として機能し得る。インデックスフィールドは、これらのうちのメッセージパケットが担う種類を示すビットを含んでいる。リクエストパケットおよびレディーパケットは、バーストデータ送信前のネゴシエーションに用いられる。ステータスパケットは、バーストデータ送信終了後にデータパケット受信の状態を通知するために用いられる。エラーフィールドは、エラーが生じたときのエラーの種類を示し、例えば受信側の受信バッファがオーバーフローしている場合にそのことを示す。
【００２４】
さらに、メッセージパケットにより実現される下位区分パケットとして、ステータス２パケットが定義されている。ステータスパケットは、データの受信側によって全てのデータパケットを正しく受信されたか否かを明示するエラービットを含んでいる。このビットはバーストデータ送信期間中に少なくとも１つのデータパケットが誤っている場合に設定される。このビットが誤りの存在を示していると、データの送信側は先と同じデータパケットを全て再送する。したがって、誤ったデータパケットだけを個別に再送することはできない。そこで、データの受信側が正常に受信できなかったデータパケットを個別に再送要求できるようにするために、ステータス２パケットが定義される。ステータス２パケットは、例えば、図３に示される構成を有する。図３に示されているように、ステータス２パケットは、ステータスパケットと同じ構成、および新たなビットマップフィールド（Bitmap）を含んでいる。受信側がステータス２パケットであることを認識するために、メッセージパケットのアーギュメント部内のインデックスフィールドに新規のユニークなビット列（例えば、2´ｂ０１００）が設けられる。ビットマップフィールドのサイズは例えば１６ビットであり、Bitmap[0]がグループ番号０に対応する。したがって、この例ではグループ番号０〜１５までの受信状態をデータの送信側に通知することができる。
【００２５】
（メモリコントローラ４の構成例）
メモリコントローラ４は、ホスト装置２の命令に従って、メモリ３からデータを読み出し、それをホスト装置２へ転送し、あるいは、ホスト装置２から転送される書き込みデータをメモリ３に書き込むための動作を行う。以下ではホスト装置２とメモリコントローラ４とが通信するための構成に特に着目して説明する。
【００２６】
図４は、第１実施形態に係るメモリコントローラ４の構成例を示している。メモリコントローラ４は、例えば、フラッシュコントローラ１０、バッファ２０、パケット制御部３０、シンボル制御部４０、応答制御部５０、および入出力制御部６０の機能ブロックを含んでいる。フラッシュコントローラ１０、バッファ２０、および入出力制御部６０は、典型例として、ハードウェアにより実現される。一方、パケット制御部３０、シンボル制御部４０、および応答制御部５０は、ハードウェアおよびソフトウェアの一方あるいは両者の組み合わせから実現される。ソフトウェアによる一部または全部の実現のため、またはその他の目的で、メモリコントローラ４は、ハードウェアとして少なくともＣＰＵ（Central Processing Unit）７０、ＲＡＭ（Random Access Memory）８０、ＲＯＭ(Read Only Memory)９０を含んでいる。ＲＯＭ９０上には、パケット制御部３０、シンボル制御部４０、および応答制御部５０の動作を実現するためのプログラムが格納されている。メモリコントローラ４の動作の開始に伴い、このプログラムがＲＡＭ８０上に読み出され、ＣＰＵ７０によって実行されることにより、パケット制御部３０、シンボル制御部４０、および応答制御部５０の動作が実行される。ＲＡＭ８０は、ＣＰＵ７０の作業メモリとして使用され、制御プログラムを記憶し、例えばＳＲＡＭ（Statice RAM）である。ＲＯＭ９０上には、ＣＰＵ７０によってメモリコントローラ４の全体を司るファームウェア（制御プログラム）も格納されている。例えばメモリカード１がホスト装置２から電源を供給されると、ファームウェアがＲＯＭ９０からＲＡＭ８０上に読み出され、ＣＰＵ７０はファームウェアに従って所定の処理を実行する。こうして、ＣＰＵ７０がメモリコントローラ４の動作を制御する。
【００２７】
フラッシュコントローラ１０は、ＣＰＵ７０からの制御に従って、メモリコントローラ４によるメモリ３へのアクセスを制御する。例えば、データ読み出しの際、メモリ３から読み出されたデータを受信し、バッファ２０に格納する。また、データ書き込みの際、ホスト装置２から転送された後にバッファ２０に格納されたデータをＣＰＵ７０からの制御に従ってバッファ２０から読み出し、メモリ３に書き込む。
【００２８】
バッファ２０は、メモリ３から読み出されたデータを一時的に格納し、パケット制御部３０に転送する。また、バッファ２０は、ホスト装置２から受け取った書き込みデータを一時的に格納し、フラッシュコントローラ１０へ転送する。
【００２９】
シンボル制御部４０は、ＣＰＵ７０およびパケット制御部３０からの制御に従って、メモリカード１がホスト装置２と通信するのに必要な各種シンボル（あるいは制御信号とも言える）を生成し、パケット制御部３０へ転送する。また、シンボル制御部４０は、入出力制御部６０が受信した信号をパケット制御部３０を経由して受け取り、特定のシンボルであるかを解析する。その解析結果をパケット制御部３０に通知することを介してパケット受信の開始および終了を指示したり、入出力制御部６０におけるバッファの入出力方向の切り替えを通知したりする。例えば、シンボル制御部４０は、パケットの非通信の間は、アイドル状態を示すシンボルを生成したり、パケット制御部３０がパケットを送信する際にパケットの開始および終了を示すシンボルを生成したりする。また、シンボル制御部４０は、パケットの受信時にパケットの開始を示すシンボルを検出すると、パケット制御部３０に対してパケット受信を開始するよう通知する。シンボル制御部４０は、本明細書で記述されているあらゆるシンボルを認識および生成し、対応する動作を実行できるように構成されている。
【００３０】
パケット制御部３０は、ＣＰＵ７０からの制御に従って、コマンドパケットの受信処理、レスポンスパケットの送信処理、データパケットおよびメッセージパケットの受信ならびに送信処理を行う。パケット制御部３０は、これらのパケットを含め本明細書中に記述されているあらゆるパケットを認識および生成し、対応する動作を実行できるように構成されている。また、パケット制御部３０は、バッファ２０に格納された読み出しデータをデータパケットのフォーマットに従って形成し、入出力制御部６０へ転送する。また、パケット制御部３０は、ホスト装置２から入出力制御部６０経由で転送されたデータパケットのペイロード部を抽出し、バッファ２０に格納する。また、パケット制御部３０は、シンボル制御部４０からのシンボルを入出力制御部６０へ送信する。また、パケット制御部３０は、シンボル制御部４０からの情報に従って、入出力制御部６０中の入力バッファおよび出力バッファの方向制御を行う。また、パケット制御部３０は、ＣＲＣ処理部３１を含んでいる。ＣＲＣ処理部３１は、受信したデータパケットに対してＣＲＣ検査を行い、その結果を、パケット制御部３０の全体を制御するモジュールに渡す。
【００３１】
応答制御部５０は、ＣＰＵ７０およびパケット制御部３０からの制御に従って、ホスト装置２から受信したデータパケットの受信状態を応答ビット生成部５１に保持する。また、応答制御部５０は、パケット制御部３０がステータスパケットをホスト装置２に返信する際に、データパケットの受信状態についての情報をパケット制御部３０に通知する。
【００３２】
入出力制御部６０は、パケット制御部３０からのパラレル信号（例えば、８ビット信号）をシリアル信号（１ビット信号）に変換し、ホスト装置２へ送信する。また、ホスト装置２からのシリアル信号をパラレル信号に変換し、パケット制御部３０に転送する。また、パケット制御部３０が入力バッファおよび出力バッファの方向を指示した場合、指示に基づいて方向を切り替える。
【００３３】
（入出力制御部６０の構成例）
図５は、第１実施形態に係る入出力制御部６０の構成例を示している。入出力制御部６０は、シリアル・パラレル（シリパラ）変換部１００および１１１、パラレル・シリアル（パラシリ）変換部１０１および１１０を含んでいる。また、入出力制御部６０は、入力バッファ１２０および１３１ならびに出力バッファ１２１および１３０を含んでいる。シリパラ変換部１００および１１１は、入力されるシリアルデータをパラレルデータに変換する。パラシリ変換部１０１および１１０は、入力されるパラレルデータをシリアルデータに変換する。シリパラ変換部１００および１１１、パラシリ変換部１０１および１１０は、パケット制御部３０と接続されている。
【００３４】
パケット制御部３０から出力された８ビットのパラレルデータは、パラシリ変換部１１０、またはパラシリ変換部１０１および１１０の両方に入力され、シリアルデータに変換される。変換されたデータは、それぞれ出力バッファ１２１および１３０を経由してライン１４０およびライン１４１に電気信号として出力される。パラシリ変換部１１０は、一般的な８ｂ／１０ｂ変換処理を含んでいてもよい。
【００３５】
ライン１４０およびライン１４１は各々、小振幅差動信号を伝送するように構成されることが可能である。そのような構成では、ライン１４０（ライン１４１）およびラインＮ１４０（ラインＮ１４１）を含んでいる。そして、ラインＰ１４０（ラインＰ１４１）のグランドを基準とした電位が、ラインＮ１４０（ラインＮ１４１）のグランドを基準とした電位より、特定の電位差だけ高い状態が、ライン１４０（ライン１４１）によって“１”の信号を伝送されていると定められる。他方、同様にラインＮ１４０（ラインＮ１４１）の電位が、ラインＰ１４０（ラインＰ１４１）の電位より、特定の電位差だけ高い状態が、ライン１４０（ライン１４１）によって“０”の信号を伝送されていると定める。これらの関係は逆でもよい。しかしながら、ライン１４０およびライン１４１は、必ずしも差動信号用に構成されていなくともよい。
【００３６】
ライン１４０およびライン１４１上の差動信号は、それぞれ入力バッファ１２０および１３１を経由してシリパラ変換部１００および１１１によってパラレルデータに変換された後、パケット制御部３０に出力される。メモリカード１がデータパケット以外のパケットをホスト装置２と送受信するには、ホスト装置２からの通信についてはライン１４０が用いられ、ホスト装置２への通信についてはライン１４１が用いられるように入力バッファ１２０および１３１ならびに出力バッファ１２１および１３０が、パケット制御部３０によって制御される。具体的には、例えば、ホスト装置２からのシリアルデータはライン１４０上で入力バッファ１２０に入力され、シリパラ変換部１００によってパラレルデータに変換され、変換されたデータはパケット制御部３０へ送信される。一方、パケット制御部３０からのパラレルデータは、パラシリ変換部１１０によってシリアルデータに変換され、変換されたデータは、バッファ１３０を経由してライン１４１上で送信される。したがって、この例では、パケット制御部３０は、入力バッファ１２０および出力バッファ１３０を動作可能状態にし、出力バッファ１２１および入力バッファ１３１を動作停止状態にする。対照的に、データパケットを転送する間は、データの書き込みについてはライン１４０およびライン１４１をそれぞれホスト装置２からメモリコントローラ４への転送が可能になるように入出力バッファがパケット制御部３０によって制御される。したがって、パケット制御部３０は、入力バッファ１２０および入力バッファ１３１を動作可能状態にし、出力バッファ１２１および出力バッファ１３０を動作停止状態にする。以上のバッファの制御により、ハーフデュプレクスモードが実現される。
【００３７】
（動作）
次に、第１実施形態のメモリカードの動作について説明する。図６は、第１実施形態のメモリカードに対するハーフデュプレクスモードでのデータ書き込みの際のパケットシーケンスを示している。先端が右を向いているパケットまたはシンボルはホスト装置２からメモリカード１へ向かっており、先端が左を向いているパケットまたはシンボルはメモリカード１からホスト装置２へ向かっていることを示している。ホスト装置２とメモリカード１は、パケットが転送されていない間も通信状態を維持するために必要なシンボルを送信する。上記のように、シンボルは、シンボルの役割に応じた情報を含んだメッセージパケットによって実現される。
【００３８】
時刻ｔ０において、ホスト装置２はライン１４０上でコマンドパケット（Cmd(w)）をメモリカード１に送信する。このコマンドパケットはＩＤフィールドにおいてメモリカード１を指定し、ＲＷビットは書き込みを指定し、また、ハーフデュプレクスモードでデータパケットを送信することを通知する。コマンドパケットを含むいずれのパケットも、実際には、図２の構成の前後においてスタートシンボル（Start）およびエンドシンボル（End）を含んでいる。スタートシンボルはパケットの先頭を明示し、エンドシンボルはパケットの終りを明示する。さらに、各シンボルはコマンドシンボル（COM）とペアで構成されている。コマンドシンボルは、シンボル間の区切りを明示する。例えばアイドルシンボル（IDLE）は、コマンドシンボルと アイドルシンボルで構成される。コマンドシンボルを含むいずれのシンボルも、ある固定長の固有なビット列で表現される。これにより、受信側が受信したシンボルを特定できる。
【００３９】
ホスト装置２は、コマンドパケットに続いて、ライン１４０上でアイドルシンボルを送信し続ける。アイドルシンボルは、パケットを転送していないアイドル状態を明示する。一方、メモリカード１は、ライン１４１上でアイドルシンボルを送信し続ける。以降、アイドルシンボルは、以下の説明において触れていなくとも何らのパケットも送信されていない間、送信されているものとする。
【００４０】
時刻ｔ１において、メモリカード１はライン１４０上でレスポンスパケット（Res）をホスト装置２に返信する。レスポンスパケットはコマンドパケットにおいて示された命令が実行可能である旨の情報を含んでいる。
【００４１】
時刻ｔ２からｔ３までの間は、データのバースト送信の準備確認のための期間である。時刻ｔ２においてホスト装置２がライン１４０上でリクエストパケット(Req)を送信し、次いでメモリカード１がライン１４１上でレディー・パケット(Rdy)を返信する。レディーパケットは、メモリカード１が準備完了状態であることを示す。
【００４２】
時刻ｔ３からｔ７までの間において、メモリカード１およびホスト装置２は、ライン１４１上での通信の方向をホスト装置２からメモリカード１へと向かう方向へと反転させる。まず、パケット制御部３０は、時刻ｔ４において出力バッファ１３０および入力バッファ１３１を停止状態にし、時刻ｔ５においてメモリカード１の入力バッファ１３１を動作状態にする。次に、時刻ｔ６において、ホスト装置２は、ホスト装置２中のライン１４１に接続されている入力バッファおよび出力バッファを停止状態にする。時刻ｔ７において、ホスト装置は、ホスト装置中のライン１４１に接続されている出力バッファを動作状態にし、ライン１４１を一定期間にわたってＳＴＢＬ状態にする。ＳＴＢＬ状態の間、ＳＴＢＬ信号（STBL）が送信される。ＳＴＢＬ信号は、規格によっては、バッファがオフからオンに切り替わった後に送信されることになっており、送信側のバッファの状態を一定期間、電気的にある固定の状態にすることを通じてその信号を受信した受信側に対して送信側がＳＴＢＬ信号の後にシンボルおよびパケットを送信開始することを通知するためのものである。例えば、ＳＴＢＬ信号の間、ラインＮ１４０（ラインＮ１４１）がラインＰ１４０（ラインＰ１４１）より、ある特定の電位差より高くなっている。ホスト装置は、また、時刻ｔ６からｔ７までの間、ライン１４０上でＤＩＲシンボル（DIR）を送信する。
【００４３】
時刻ｔ８において、ホスト装置２は、ＳＴＢＬ状態を解除して、ライン１４１上でＤＩＲシンボルを送信する。
【００４４】
時刻ｔ９からｔ１０までの間は、データのバースト送信期間であり、ＳＤＢシンボル（SDB）とＥＤＢシンボル（EDB）で挟まれた期間により定められる。ＳＤＢシンボルは、バーストデータ送信期間の開始を通知し、ＥＤＢシンボルは、バーストデータ送信期間の終了を通知する。ホスト装置２は、時刻ｔ９において、ライン１４０および１４１上でＳＤＢシンボルを送信する。メモリコントローラ４のシンボル制御部４０はＳＤＢシンボルを検出したことを通じて、バーストデータ送信期間の開始を認識する。シンボル制御部４０はＳＤＢシンボル検出後にスタートシンボルを検出することを通じて、以降パケット受信を行うようにパケット制御部３０に指示する。
【００４５】
次いで、ホスト装置２は、データパケットを送信する。１つのデータバースト送信期間でいくつのデータパケットを送信するかは、図６に示す動作に先立つネゴシエーションによって事前に決定されている。図６は、４つの単位データの送信の例を示している。４つの単位データには、それぞれグループ番号０〜３が割り当てられている。したがって、データパケット中のビットマップフィールドBitmap[3:0]が使用される。一方、ビットマップフィールドBitmap[15:4]は、リザーブとされ、本例では使用されず、例えば“０”ビットとされる。
【００４６】
ホスト装置２は、グループ番号０を割り当てられた第１単位データを上記の原理に従ってデータ０パケットおよびデータ１パケットとして、それぞれライン１４０およびライン１４１上で並行して送信する。パケット制御部３０は、データ０パケットおよびデータ１パケットについてのＣＲＣ検査が正常であれば、データ０パケットのペイロード部の１バイトとデータ１パケットのペイロード部中の１バイトを交互にバッファ２０に書き込む。また、パケット制御部３０は、ＣＲＣ検査の合格に基づいて、グループ番号０については受信に成功したと判定する。応答ビット生成部５１は、グループ番号ごとに正常受信か否かを示すビットを保持する。グループ番号０については、正常受信を示す“１”ビットが対応する。
【００４７】
次に、ホスト装置２は、グループ番号１を割り当てられた第２単位データを上記の原理に従ってデータ２パケットおよびデータ３パケットとして、それぞれライン１４０およびライン１４１上で送信する。データ０パケットとデータ２パケットとの間、およびデータ１とデータ３との間には、シンボルが存在せずにデータパケットが連続してもよいし、何らかのシンボル（例えば１つ以上のアイドルシンボル）が送信されてもよい。後続の隣接するデータパケット同士についても同様である。
【００４８】
例として、パケット制御部３０は、データ２パケットを正常に受信したが、データ３パケットを正常に受信しなかったとする。データパケットの正常受信の失敗は、例えば、ＣＲＣ検査が不合格であること、および／またはスタートシンボルあるいはエンドシンボルが検出されないことに基づくことが可能である。パケット制御部３０は、データ３パケットの受信の失敗に基づいて、グループ番号１について受信に失敗したと判定する。なお、全てのデータパケットが正常に受信された場合の動作については、第２実施形態において説明する。
【００４９】
同様に、グループ番号２を割り当てられた第３単位データがデータ４パケットおよびデータ５パケットとして送信され、グループ番号３を割り当てられた第４単位データがデータ６パケットおよびデータ７パケットとして送信される。例として、データ４、データ５、データ７パケットは正常に受信され、データ６パケットは正常に受信されなかったとする。この例に則ると、グループ番号０および２は正常受信され、グループ番号１および３は正常受信されなかったと判定される。この結果、応答ビット生成部５１により生成されたビット列は “１０１０”となる。
【００５０】
１回のバースト送信期間中の全てのデータパケットの送信後、ホスト装置２は、ライン１４０および１４１上でＥＤＢシンボルを送信する。メモリカード１は、ＥＤＢシンボルの検出によって、データのバースト送信期間の終了を認識する。
【００５１】
次に、時刻ｔ１０からｔ１４までの間において、メモリカード１およびホスト装置２は、ライン１４１に接続された入力バッファおよび出力バッファを制御して、メモリカード１による応答の準備を行う。具体的には、メモリカード１およびホスト装置２は、ライン１４１上での通信の方向をメモリカード１からホスト装置２へ向かう方向へと反転させる。まず、時刻ｔ１０において、ホスト装置２は、ホスト装置２中のライン１４０に接続されている出力バッファからＤＩＲ２シンボル（DIR2）を送信する。ＤＩＲ２シンボルは、その他のシンボルのものとは異なるユニークなビットパターンを有している。こうして、ＤＩＲ２シンボルは、シンボル制御部４０によってＤＩＲシンボルから区別されることが可能となっている。ＤＩＲ２シンボルの１つの機能は、ＤＩＲシンボルと同様に送信されているラインの方向を示すことである。ＤＩＲ２シンボルのさらなる機能は、全てのデータパケットが正常受信された場合の応答方法を指定することである。この点については第２実施形態で説明する。
【００５２】
シンボル制御部４０は、ＤＩＲ２シンボルの検出を受けて、パケット制御部３０にステータス２パケットを生成するように指示する。応答ビット生成部５１に保持されているグループ番号ごとの正常受信を示すビット列（本例で“１０１０”）は、パケット制御部３０によって、ステータス２パケットのBitmap[3:0]フィールドに設定される。また、パケット制御部３０は、アーギュメント部にはデータパケット受信に誤りがあったことを通知するビットを設定する。
【００５３】
時刻ｔ１１において、ホスト装置２は、ホスト装置２中のライン１４１に接続されてい入力バッファおよび出力バッファを停止状態にする。次に、時刻ｔ１２において、ホスト装置２は、ホスト装置２中のライン１４１に接続されている入力バッファを動作状態にする。次に、時刻ｔ１３において、パケット制御部３０は、出力バッファ１３０および入力バッファ１３１を停止状態にする。ホスト装置２は、時刻ｔ１１からｔ１３までの間においてもライン１４０上でＤＩＲ２シンボルを送信し続ける。時刻ｔ１０からｔ１３までの長さは、ホスト装置２とメモリカード１との間で図６の動作に先立って予めネゴシエートされた固定時間とされている。
【００５４】
時刻ｔ１４において、メモリカード１は、ライン１４１を一定期間にわたってＳＴＢＬ状態にする。このことは、ライン１４１上でのＳＴＢＬ信号の送信に相当する。時刻ｔ１５において、メモリカード１は、ＳＴＢＬ状態を解除して、ライン１４１上でＤＩＲ２シンボルを送信する。時刻ｔ１６において、ホスト装置２は、メモリカード１からのＤＩＲ２シンボルの受信の検出を受けて、ライン１４０上でアイドルシンボルを送信する。
【００５５】
時刻ｔ１７において、パケット制御部３０は、生成されたステータス２パケットをライン１４１上で送信する。このステータス２パケットは、上記のように、エラーの存在を示すビット、およびグループ番号ごとの受信の成功または失敗を示すビット列を含んでいる。ホスト装置２のメモリコントローラ中のパケット制御部（図示せず）は、このようなステータス２パケットを受信すると、ステータス２パケットであること、エラービットが含まれることを認識する。さらに、パケット制御部は、ビットマップフィールド情報に基づいて、グループ番号１および３について再送が必要であることを認識する。データパケットの再送準備として、時刻ｔ１８からｔ２５までの間において、時刻ｔ２からｔ９までの間とそれぞれ同じ動作が行われる。
【００５６】
時刻ｔ２５において、ホスト装置２は、ＳＤＢシンボルの送信後、ステータス２コマンドにより特定されたグループ番号についてのデータを再送する。すなわち、まず、ホスト装置２は、グループ番号１についてのデータ２パケットおよびデータ３パケットをそれぞれライン１４０および１４１上で送信する。次いで、グループ番号３についてのデータ６パケットおよびデータ７パケットをそれぞれライン１４０および１４１上で送信する。続くＥＤＢシンボルを送信により、データ転送が終了する。この後、バッファ２０に保持されたデータがメモリ３に書き込まれる。
【００５７】
上記の例は、２つのデータパケットに同じ１つのグループ番号を割り当てる例に関する。しかしながら、同じ１つのグループ番号を割り当てられるデータパケットは、２つに限られず、例えば４つでもよい。その例に則ると、データ０パケット〜データ３パケットにグループ番号０が割り当てられ、データ４パケット〜データ７パケットにをグループ番号１が割り当てられる。この例においても、データ０パケット〜データ３パケットのうち少なくとも１つが正常に受信されたなかった場合、メモリカード１はステータス２パケットの中のグループ番号０に相当するビットマップフィールドのビットを例えば“０”に設定して、ホスト装置２に送信する。この後、ホスト装置２は、データ０パケット〜データ３パケットをメモリカード１に再送する。
【００５８】
また、上記の例は、ステータス２パケットにビットマップ情報を含める例に関する。それに代えて、誤りが含まれるグループ番号がステータス２パケットにおいて直接設定されてもよい。グループ番号１および３に誤りが含まれる図６の例に則ると、ステータス２パケットには、図７に示されるように、１番および３番という情報が含められる。シーケンシャル・ナンバー・フィールド（SeqNum1, 2）のサイズは予め定められた長さ（例えば８ビット）とされる。
【００５９】
ここまで、メモリカード１へのデータ書き込みについて説明した。しかしながら、データ読み出しの動作も、データ書き込みと同様である。すなわち、データ読み出しでは、コマンドパケットはホスト装置２から送信され、データパケットを送信するのはメモリカード１であり、それに対して応答をするのはホスト装置２である。しかしながら、データ書き込みと比較してメモリカード１およびホスト装置２の立場が逆転するのみで、授受されるコマンドおよびシンボルは方向こそ異なれど、データ書き込みと同じである。ただし、通信の方向の逆転に伴い、メモリカード１およびホスト装置２中の入力バッファおよび出力バッファの停止および動作状態の切り替えも逆転する。
【００６０】
なお、ここまでの説明では、時刻ｔ１０から時刻ｔ１６までの間に、ライン１４０上でＤＩＲ２パケットが送信されている。ＤＩＲ２パケットは、第２実施形態で説明するように、第２実施形態に係る応答を要求することを目的の１つとしている。しかしながら、第２実施形態に係る応答が必要でない場合は、時刻ｔ１０からｔ１６までの間のＤＩＲ２の送信に代えて、ＤＩＲパケットが送信されてもよい。
【００６１】
以上説明したように、第１実施形態に係るメモリカード１によれば、ステータス２パケットが定義され、ステータス２パケットの送信、受信、認識、および対応する動作が可能になっている。具体的には、パケット制御部３０は、ステータス２パケットを、生成および認識する。ステータス２パケットは、１つのバースト送信期間中に送信される複数の単位データを識別するための情報を含んでいる。ホスト装置２もステータス２シンボルを認識し、特定された単位データをグループ番号に基づいて認識し、特定された単位データのみを再送する。このため、受信に失敗したパケットの再送に要する時間を、全ての単位データを再送する場合より削減できる。
【００６２】
（第２実施形態）
第２実施形態は、バーストデータ送信期間中に全てのデータパケットが正常受信された際の応答方法に関する。
【００６３】
第２実施形態に係るメモリカード１の構成は、第１実施形態（図４）と同じである。ただし、パケット制御部３０、シンボル制御部４０、および応答制御部５０の動作、ならびにＣＰＵ７０による制御が第１実施形態のものと異なる。相応して、パケット制御部３０、シンボル制御部４０、応答制御部５０、およびプログラムに基づくＣＰＵ７０が、以下に説明する動作を実行可能に構成されている。構成および後述の動作を含め、以下の説明で触れられていない特徴の全てについて、第１実施形態の記述が適用される。まず、本実施形態に係る動作の説明に先立ち、従来の動作を簡単に説明する。
【００６４】
（従来のメモリカードによるハーフデュプレクスモードでのデータパケットの受信）
図８は、従来のメモリカードに対するハーフデュプレクスモードでのデータ書き込みの際のパケットシーケンスを示している。
【００６５】
時刻ｔ１００からｔ１０９までの間の動作は、第１実施形態（図６）の時刻ｔ０からｔ９までの間の動作と同じである。
【００６６】
ホスト装置は、時刻ｔ１０９からｔ１１０までのデータバースト送信期間において、ライン１４０および１４１上で、それぞれデータ０パケットおよびデータ１パケットを送信し、次いで、それぞれデータ２パケットおよびデータ３パケットを送信する。データ０パケットおよびデータ１パケットは、１つの単位データから生成されたものであり、データ２パケットおよびデータ３パケットは、別の１つの単位データから生成されたものである。これらの全てのデータパケットは正常に受信されたものとする。次に、ホスト装置は、ＥＤＢシンボルを送信する。
【００６７】
次に、時刻ｔ１１０からｔ１１７までの間の動作は、ＤＩＲ２ではなくＤＩＲシンボルが送信されることを除いて、第１実施形態（図６）の時刻ｔ１０からｔ１７までの間の動作と同じである。時刻ｔ１１７において、メモリカードは、ライン１４１上でステータスパケットを送信することを通じて、全てのデータパケットを受信したことを通知する。いずれか１つでもデータパケットが正常に受信されたなかった場合、メモリカードは、全てのデータパケットの再送を要求するために、受信エラーであることを示す通知ビットを含んだステータスパケットを送信する。
【００６８】
時刻ｔ１１８以降の動作は、さらなるデータバースト送信または再送がある場合に行われ、時刻ｔ１０２から時刻ｔ１１７までの間と同じである。
【００６９】
（第１実施形態のメモリカードによるハーフデュプレクスモードでのデータパケットの受信）
次に、第２実施形態のメモリカードの動作について説明する。図９は、第２実施形態のメモリカードに対するデータ書き込みの際のハーフデュプレクスモードでのパケットシーケンスを示している。時刻ｔ２００からｔ２０９までの間の動作は、第１実施形態（図６）と同じである。
【００７０】
時刻ｔ２０９からｔ２１０までは、データのバースト送信期間である。ホスト装置２は、このデータバースト送信期間内において、まず第１単位データをデータ０パケットおよびデータ１パケットとしてライン１４０および１４１上で並行して送信する。次いで、ホスト装置２は、第２単位データをデータ２パケットおよびデータ３パケットとしてライン１４０および１４１上で並行して送信する。これらの全てのデータパケットは正常に受信されたものとする。すなわち、それぞれのデータパケットに対するＣＲＣ検査の結果、誤りが検出されなかったとする。続く時刻ｔ２１０からｔ２１２までの間の動作は、第１実施形態（図６）の時刻ｔ１０からｔ１２までの間の動作と同じである。
【００７１】
メモリカード１がライン１４０上でＤＩＲ２シンボルを受け取っていることに基づいて、時刻ｔ２１３においてパケット制御部３０は出力バッファ１３０および入力バッファ１３１を停止状態にする。また、時刻ｔ２１３からの期間おいて、メモリカード１は、ステータスパケットを送信せずに、データパケットの正常受信の応答を行う。すなわち、メモリカード１は、ＤＩＲ２シンボルを認識し、ＤＩＲ２シンボルを送信するホスト装置２が本実施形態に係る応答を要求していることを知得する。具体的には、メモリカード１が送信された全てのデータパケット（図９の例ではデータ０〜データ３パケット）を正常に受信した場合、パケット制御部３０の制御によって本実施形態に係る応答を行う。応答は、一定期間（時刻ｔ２１３〜ｔ２１４の間）にわたって、ラインＮ１４１およびラインＰ１４１の両方を特定の状態に維持する。例えば、メモリカード１は、ラインＮ１４１およびラインＰ１４１の両方をハイレベル状態に維持する。または、メモリカード１は、ラインＮ１４１およびラインＰ１４１の両方をある基準電位より低い状態に固定する（例えば、抵抗素子を介して接地電位（グランド）に接続するプルダウン状態にする）。または、メモリカード１は、ラインＮ１４１およびラインＰ１４１の両方をある基準電位より高い状態に固定する（例えば、抵抗素子を介して電源電位に接続するプルアップ状態にする）。ホスト装置２は、このような応答を受け取ると、送信された全てのデータパケットがメモリカード１によって正常に受信されたことを知得する。時刻ｔ２１３からｔ２１４までのの間、ライン１４０上では、ＤＩＲ２シンボルが流れ続けている。
【００７２】
次に、時刻ｔ２１４からｔ２１６までの間において、メモリカード１およびホスト装置２は、ライン１４１上での通信の方向をメモリカード１からホスト装置２へ向かう方向へと反転させる。まず、時刻ｔ２１４において、パケット制御部３０は、メモリカード１の入力バッファ１３０を動作状態にする。次に、時刻ｔ２１５において、ホスト装置２は、ホスト装置２中のライン１４１に接続されている入力バッファおよび出力バッファを停止状態にするとともに、ライン１４０上でＤＩＲ２シンボルを送信する。時刻ｔ２１６において、ホスト装置２は、ホスト装置２中のライン１４１に接続されている出力バッファを動作状態にすろとともに、ライン１４１をＳＴＢＬ状態にする。
【００７３】
時刻ｔ２１７からｔ２１９までの間の動作は、時刻ｔ２０８からｔ２１０までの間の動作と同様である。異なるのは、データパケットの中身のみである。
【００７４】
なお、ホスト装置２によるＥＤＢシンボル直後のＤＩＲ２シンボルの送信は、さらに送信すべきデータパケットがあるときに限定してもよい。すなわち、継続して送信すべきデータパケットがない場合、ホスト装置２はＥＤＢシンボル送信直後にＤＩＲシンボルを送信してメモリカード１からのステータスパケットの送信を促す。また、コマンドパケット中の転送長フィールド中の値に基づいてさらなるデータパケットの受信がないことをメモリカード１が認識した場合、メモリカード１は、ＥＤＢシンボル送信直後にＤＩＲ２シンボルを送信したとしてもステータスパケットを送信してもよい。
【００７５】
第２実施形態も、メモリカード２へのデータ書き込みを例に取り説明が行われた。しかしながら、データ読み出しの動作も、データ書き込みと同様である。すなわち、データ書き込みと比較してメモリカード１およびホスト装置２の立場が逆転するのみで、授受されるコマンドおよびシンボルは方向こそ異なれど、データ書き込みと同じである。データ読み出しに関するその他の点は、第１実施形態において記述した内容が、第２実施形態にも当てはまる。
【００７６】
以上説明したように、第２実施形態に係るメモリカード１によれば、第１実施形態と同様にステータス２シンボルが定義される。このため、第１実施形態と同じ利点を得られる。また、第２実施形態に係るメモリカード１によれば、ＤＩＲ２シンボルが定義され、ＤＩＲ２シンボルの送信、受信、認識、および対応する動作が可能になっている。具体的には、シンボル制御部４０は、ＤＩＲ２シンボルを生成および認識し、ＤＩＲ２シンボルに基づいてメモリコントローラ４中の各部が動作する。ＤＩＲ２シンボルを受信したメモリカード１は、対応するバーストデータ送信期間中に送信された全てのデータパケットを正常に受信した旨を、パケットの送信によらずに、ラインを特定の電位に固定することを通じて通知する。このため、正常受信の通知い要する時間を短くできる。具体的には、時刻ｔ２１３からｔ２１４までの応答期間自体は必要ではあるが、図８のｔ１１４からｔ１１７の間のような、ライン１４１の通信方向の切り替え後に必要なＤＩＲシンボルの送信期間は不要である。また、ステータスパケットの送信が不要のため、その送信に必要な電力も消費されない。
【００７７】
（第３実施形態）
第２実施形態では、データパケット中にグループ番号を示す情報が含められている。これに対して、第３実施形態は、データパケット中でグループ番号を明示せずに、再送されるべきグループ番号を特定することに関する。
【００７８】
第３実施形態に係るメモリカード１の構成は、第１実施形態（図４）と同じである。ただし、パケット制御部３０、シンボル制御部４０、および応答制御部５０の動作、ならびにＣＰＵ７０による制御が第１実施形態のものと異なる。相応して、パケット制御部３０、シンボル制御部４０、応答制御部５０、およびプログラムに基づくＣＰＵ７０が、以下に説明する動作を実行可能に構成されている。構成および後述の動作を含め、以下の説明で触れられていない特徴の全てについて、第２実施形態の記述が適用される。
【００７９】
図１０は、第３実施形態に係るメモリカードによるデータ受信フローを示している。図１０は、バーストデータ送信から再送要求までの動作を示している。したがって、図１０のフローに先立って、図６等の時刻ｔ０からｔ９までの間の動作は済んでいる。図１０に示されているように、ステップＳ１において、シンボル制御部４０は、ＳＤＢシンボルを検出する。次に、パケット制御部３０は、パラメータＲｘＮｕｍを０にリセットする（ステップＳ２）。パラメータＲｘＮｕｍは、パケット制御部３０が用いる内部パラメータであり、受信されたグループの個数を計数するためのものである。
【００８０】
シンボル制御部４０は、スタートシンボルを検出したか確認する（ステップＳ３）。ステップＳ３の判断がＹＥＳの場合、ステップＳ４において、シンボル制御部４０はエンドシンボルを検出したかを確認する。ステップＳ４の判断がＮＯの場合、パケット制御部３０は、１バイト（あるいは２バイト）ごとにデータを受信する（ステップＳ５）。これはエンドシンボルが検出されるまで続けられる。すなわち、ステップＳ５の後、処理はステップＳ４に戻る。
【００８１】
ステップＳ４の判断がＹＥＳの場合、パケット制御部３０は、受信したパケットのペイロードのサイズが予め決められた値と一致しているか確認する（ステップＳ１１）。すなわち、ペイロードに含まれているはずのデータの全体が受信されたかが確認される。例えば、１つのデータパケットに含まれるペイロードのサイズが２５６バイトとホスト装置２とメモリカード１とでネゴシエーションにより決定されていたとする。さらに、ヘッダ部とＣＲＣ部の長さがそれぞれ２バイトであるとする。この例に則ると、ステップＳ１１に先立って受信したデータの総量のサイズは２６０バイトであるはずである。そうすれば、ペイロード部の全体が受信されたと判断されることが可能である。
【００８２】
ステップＳ１１の判断がＹＥＳの場合、ＣＲＣ処理部３１は、受信したデータパケットに対してＣＲＣを用いてエラー検出および訂正を行う（ステップＳ１２）。ステップＳ１２の判断がＹＥＳの場合、これは、１つのデータパケット、すなわち１つのグループ番号についてのデータがライン１４０または１４１上で正常に受信されたことを意味する。そこで、応答ビット生成部５１はビットマップ情報中の対応する（処理中の）グループ番号に対応するビットに“１”を設定する（ステップＳ１３）。また、パケット制御部３０は、続いて、受信されたグループの個数の記録を増やすために、パラメータＲｘＮｕｍを１だけインクリメントする（ステップＳ１４）。一方、ステップＳ１２の判断がＮＯの場合、これは、１つのデータパケット、すなわち１つのグループ番号についてのデータがライン１４０または１４１上で正常に受信されなかったことを意味する。そこで、応答ビット生成部５１はビットマップ情報中の対応するグループ番号に対応するビットに“０”を設定する（ステップＳ１５）。また、処理は、ステップＳ１４に移行する。ステップＳ１４の後、およびステップＳ１１の判断がＮＯの場合、処理はステップＳ３に戻る。ビットマップ情報の生成方法については、後に詳述する。
【００８３】
ステップＳ３の判断がＮＯの場合、シンボル制御部４０は、ＥＤＢシンボルを検出したかを確認する（ステップＳ２１）。ステップＳ２１の判断がＮＯの場合、処理は、ステップＳ３に戻る。ステップＳ２１の判断がＹＥＳの場合、パケット制御部３０は、パラメータＲｘＮｕｍが、予め定められたパラメータＢｕｒｓｔＮｕｍと一致するかを確認する（ステップＳ２２）。パラメータＢｕｒｓｔＮｕｍは、メモリカード１とホスト装置２がデータ送信に先立ってネゴシエーションによって決定した、１つのバースト送信期間中に送信されるはずのバースト数（すなわち単位データの数）である。
【００８４】
ステップＳ２２での判断がＹＥＳである場合、これは、データバースト送信期間中に送信された全てのデータバーストがメモリカード１によって受信されたことを意味する。そこで、次に各データパケットの正常受信か否かを通知すために、パケット制御部３０は、ステータス２パケットを送信する（ステップＳ２３）。このステータス２パケットには、ステップＳ１３およびＳ１５において応答ビット生成部５１によって生成された、各グループについての正常受信を示すビットマップ情報が含まれている。ＥＤＢシンボル送信後のステータス２パケットの送信の詳細は、第１実施形態と同じである。ホスト装置２は、このステータス２パケットを受信し、その内容に基づいて、特定のデータパケットをメモリカード１に再送する。
【００８５】
一方、ステップＳ２２での判断がＮＯである場合、これは、データバースト送信期間中に送信されたデータパケットの全てがメモリカード１によって受信されたなかったことを意味する。そこで、パケット制御部３０は、全てのデータパケットの再送を要求するために、受信エラーであることを示す通知ビットを含んだステータスパケットを送信する（ステップＳ２４）。ＥＤＢシンボル送信後のステータス２パケットの送信の詳細は、第１実施形態と同じである。ホスト装置２は、このステータスパケットを受信すると、全てのデータパケットをメモリカード１に再送する。
【００８６】
次に、応答ビット生成部５１によって生成されるビットマップおよびフローの一例について説明する。以下の説明は、１つのバーストデータ送信期間中に４つのバーストデータ（４つの単位データ）が送信される例に関する。
【００８７】
図１１は、第３実施形態に係るメモリカードに対するハーフデュプレクスモードでのデータ書き込みの際のパケットシーケンスの例を示している。図１１は、バーストデータ送信から再送要求までの動作を示している。時刻ｔ３０９に先立つ動作は、第１実施形態（図６）の時刻ｔ０からｔ９までの間のと同じである。
【００８８】
時刻ｔ３０９からｔ３１０までの間のバーストデータ送信期間において、ホスト装置２は、まずグループ番号０のデータ０パケットおよびデータ１パケットを送信し、グループ番号１データ２パケットおよびデータ３パケットを送信する。続いて、ホスト装置２は、グループ番号２のデータ４パケットおよびデータ５パケットを送信し、グループ番号３のデータ６パケットおよびデータ７パケットを送信する。
【００８９】
例として、ライン１４０上では、データ０パケット、データ２パケット、データ４パケットが正常に受信され、データ６パケットに対するＣＲＣ検査の結果が不合格であったとする。この例に則ると、ライン１４０についてのビットマップ１４０［３：０］は、“０１１１”となる。例として、ビット［１］〜［３］が、それぞれグループ番号０〜３に相当するからである。
【００９０】
また、例として、ライン１４１上では、データ５パケットのみが正常に受信され、データ１パケット、データ３パケット、データ７パケットが正常に受信されなかったとする。この例に則ると、ライン１４１についてのビットマップ１４１［３：０］は、例えば“０１００”となる。
【００９１】
応答ビット生成部５１は、ビットマップ１４０とビットマップ１４１の論理積を計算する。この結果、ビットマップ［３：０］は、“０１００”となる。応答ビット生成部５１は、これをステータス２パケットに含め、そのようなステータス２パケットが時刻ｔ３１７においてパケット制御部３０によって送信される。時刻ｔ３１０からｔ３１７までの間の動作は、第１実施形態の時刻ｔ１０からｔ１７までの間の動作と同じである。
【００９２】
時刻ｔ３１８からｔ３２５までの間において第１実施形態のｔ１８からｔ２５までの間と同じ動作の実行の後、時刻ｔ３２５からｔ３２６までの間に、指定されたパケットがホスト装置２から再送される。再送されるパケットは、ステータス２パケット中のビットマップ“０１００”がグループ番号０、１、３のデータパケットの再送を指定していることに基づいて、データ０パケット、データ１パケット、データ２パケット、データ３パケット、データ６パケット、データ７パケットである。
【００９３】
第３実施形態においても、あるデータバースト送信期間中に送信された全てのデータパケットが正常に受信された場合、第２実施形態の時刻ｔ２１３からｔ２１４までの間と同様に、ラインＮ１４１およびラインＰ１４１を特定の電位にすることを通じて応答を行う。または、図８に示されているとともに図８に関して説明されたように、ステータスパケットが送信されてもよい。
【００９４】
第３実施形態も、メモリカード２へのデータ書き込みを例に取り説明が行われた。しかしながら、データ読み出しの動作も、データ書き込みと同様である。すなわち、データ書き込みと比較してメモリカード１およびホスト装置２の立場が逆転するのみで、授受されるコマンドおよびシンボルは方向こそ異なれど、データ書き込みと同じである。データ読み出しに関するその他の点は、第１実施形態において記述した内容が、第３実施形態にも当てはまる。
【００９５】
以上説明したように、第３実施形態に係るメモリカード１によれば、第１および第２実施形態と同様に、ステータス２シンボルおよびＤＩＲ２シンボルが定義される。このため、第１および２実施形態と同じ利点を得られる。さらに第３実施形態によれば、パケット制御部３０によって受信されたデータパケットの個数（バーストの個数）と受信されるはずの個数との比較や、２つのラインで送信されるデータパケットの受信の成功に基づくビットの論理演算を用いて、再送が必要なデータパケットが特定され、結果がステータス２シンボル内で明示される。このため、データパケット中でグループ番号は明示されない。したがって、データパケットの定義を変える必要は生じず、グループ番号の個数の上限がデータパケットのヘッダ部のサイズによって制限される恐れもない。
【００９６】
その他、各実施形態は、上記のものに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の実施形態が抽出され得る。例えば、上記各実施形態に示される全構成要件から幾つかの構成要件が削除されても、この構成要件が削除された構成が実施形態として抽出され得る。
【符号の説明】
【００９７】
１…メモリカード、２…ホスト装置、３…メモリ、４…メモリコントローラ、１０…フラッシュコントローラ、２０…バッファ、３０…パケット制御部、４０…シンボル制御部、５０…応答制御部、６０…入出力制御部、７０…ＣＰＵ、８０…ＲＡＭ、９０…ＲＯＭ。
【図１】
2013140541.tif 000003
【図２】
2013140541.tif 000004
【図３】
2013140541.tif 000005
【図４】
2013140541.tif 000006
【図５】
2013140541.tif 000007
【図６】
2013140541.tif 000008
【図７】
2013140541.tif 000009
【図８】
2013140541.tif 000010
【図９】
2013140541.tif 000011
【図１０】
2013140541.tif 000012
【図１１】
2013140541.tif 000013