(57)【特許請求の範囲】
【請求項１】
リーダライタとの間で近接通信を行う通信手段と、
前記リーダライタからのコマンドに従い、不揮発性メモリに対するデータの書き込みを制御する制御手段と
を備え、
前記不揮発性メモリの記憶領域の一部は、サービスに割り当てられる最小単位の記憶領域であるユーザブロックであり、
前記ユーザブロックは、複数のユニットを有し、
前記ユニットは、書き込みが行われる所定単位の記憶領域であるページを１ページ以上有し、
前記ユーザブロックを構成する複数のユニットのうちの少なくとも１のユニットは、前記ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能するバッファユニットであり、
前記不揮発性メモリは、前記不揮発性メモリの記憶領域を管理するための管理情報を記憶し、
前記管理情報は、前記ユニットを特定するユニットナンバを含み、
前記制御手段は、
前記リーダライタからのコマンドに従い、データを、前記バッファユニットに書き込み、
前記バッファユニットのユニットナンバとして、データを書き込むべき対象のユニットである対象ユニットのユニットナンバを書き込み、
前記対象ユニットを、新たなバッファユニットとする
ことで、対象ユニットへのデータの書き込みを行い、
前記通信手段において前記リーダライタからのRF信号が受信されることで起動し、起動後、前記リーダライタからのコマンドを受信する前に行われる起動処理中に、前記バッファユニットの全ページをイレースする
通信装置。
【請求項２】
前記ユニットは、１ページで構成され、
前記不揮発性メモリの記憶領域の他の一部は、前記ユーザブロックごとの管理情報を記憶する管理ブロックであり、
前記ユーザブロックの管理情報は、そのユーザブロックが有する複数のユニットそれぞれのユニットナンバと、データが前記不揮発性メモリに書き込まれるごとに規則的に値が更新される１のシーケンスナンバとを含む
請求項１に記載の通信装置。
【請求項３】
前記ユニットは、複数のページで構成され、
１のユニットが有する複数のページのうちの１のページは、前記ユニットごとの管理情報を記憶する管理ページであり、
前記ユニットの管理情報は、そのユニットのユニットナンバと、データが前記不揮発性メモリに書き込まれるごとに規則的に値が更新される１のシーケンスナンバとを含む
請求項１に記載の通信装置。
【請求項４】
前記制御手段は、
前記リーダライタからのコマンドに従い、データを、前記バッファユニットに書き込み、
前記バッファユニットのユニットナンバとして、前記対象ユニットのユニットナンバを書き込み、
その後、前記対象ユニットの前記管理ページをイレースすることで、前記対象ユニットを、新たなバッファユニットとする
請求項３に記載の通信装置。
【請求項５】
前記制御手段は、
前記ユニットの管理ページ以外のページに、データを書き込んだ後、前記管理ページに、前記ユニットナンバ、前記シーケンスナンバ、及び、前記ユニットに書き込んだデータのエラーを検出するためのエラー検出コードを書き込み、
前記起動処理中に、同一のユニットナンバのユニットが存在し、その同一のユニットナンバのユニットのうちの、シーケンスナンバが新しいユニットのエラー検出コードが正常である場合、前記シーケンスナンバが新しいユニットを、最新の書き込みが行われた最新ユニットとして認識し、その最新ユニットの管理ページへの、その管理ページの記憶内容の再書き込みを行う
請求項４に記載の通信装置。
【請求項６】
前記不揮発性メモリは、EEPROMである
請求項１に記載の通信装置。
【請求項７】
リーダライタとの間で近接通信を行う通信手段と、
前記リーダライタからのコマンドに従い、不揮発性メモリに対するデータの書き込みを制御する制御手段と
を備える通信装置の通信方法において、
前記不揮発性メモリの記憶領域の一部は、サービスに割り当てられる最小単位の記憶領域であるユーザブロックであり、
前記ユーザブロックは、複数のユニットを有し、
前記ユニットは、書き込みが行われる所定単位の記憶領域であるページを１ページ以上有し、
前記ユーザブロックを構成する複数のユニットのうちの少なくとも１のユニットは、前記ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能するバッファユニットであり、
前記不揮発性メモリは、前記不揮発性メモリの記憶領域を管理するための管理情報を記憶し、
前記管理情報は、前記ユニットを特定するユニットナンバを含み、
前記制御手段が、
前記リーダライタからのコマンドに従い、データを、前記バッファユニットに書き込み、
前記バッファユニットのユニットナンバとして、データを書き込むべき対象のユニットである対象ユニットのユニットナンバを書き込み、
前記対象ユニットを、新たなバッファユニットとする
ことで、対象ユニットへのデータの書き込みを行い、
前記通信手段において前記リーダライタからのRF信号が受信されることで起動し、起動後、前記リーダライタからのコマンドを受信する前に行われる起動処理中に、前記バッファユニットの全ページをイレースする
ステップを含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、及び、通信方法に関し、特に、例えば、リーダライタとの間で近接通信を行うICカードやICチップ等の無線タグが内蔵する不揮発性メモリについて、リテンション特性を維持し、かつ、書き込みに要する書き込み処理時間を短くすることができるようにする通信装置、及び、通信方法に関する。
【背景技術】
【０００２】
近年、IC(Integrated Circuit)カード等を用いて、近距離で非接触により無線通信を行う近接通信が、例えば、電子定期券や、電子マネー等で利用されており、また、近接通信を利用した電子定期券や、電子マネーの機能を有する携帯電話機が広く普及してきている。
【０００３】
近接通信は、例えば、ISO/IEC 14443や、ISO/IEC 18092（以下、NFC(Near Field Communication)ともいう)として規格化されている。
【０００４】
ここで、NFCの規格に準拠した通信等の近接通信を行う通信装置のうちの、RF(Radio Frequency)信号を出力するリーダライタとの間で、リーダライタからの信号に応答する形で近接通信を行うICカードやICチップ等の通信装置を、無線タグともいう。
【０００５】
無線タグは、例えば、EEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性メモリを内蔵し、近接通信により、リーダライタとの間でやりとりされるデータの、不揮発性メモリに対する読み書きを行うことで、各種のサービスを提供する。
【０００６】
なお、無線タグの中には、リーダライタが出力するRF信号を電力として動作するバッテリレスの無線タグがある。
【０００７】
バッテリレスの無線タグは、リーダライタが出力するRF信号を電力として動作するので、リーダライタから離れると、十分な電力を得ることができなくなる。
【０００８】
このため、例えば、無線タグにおいて、内蔵する不揮発性メモリにアクセスが行われている最中に、無線タグがリーダライタから離れると、無線タグは動作することができなくなって、メモリコラプション（Memory Corruption）が生じること、すなわち、不揮発性メモリに記憶されたデータに不整合が生じることがある。
【０００９】
また、メモリコラプションは、バッテリを有する無線タグ（例えば、携帯電話機に内蔵されたICチップ）においても、無線タグが、リーダライタから離れることによって、不揮発性メモリに書き込むデータを、リーダライタから受信することができなくなった場合に生じることがある。
【００１０】
メモリコラプションに対処する方法としては、無線タグの不揮発性メモリにおいて、最新のデータを、直前に書き込まれたデータに上書きするのではなく、直前に書き込まれたデータの記憶領域とは別の記録領域に書き込む方法がある（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第3702923号
【発明の概要】
【発明が解決しようとする課題】
【００１２】
無線タグは、上述した電子定期券や電子マネーの他、例えば、入退出の管理や、在庫管理等の各種のサービスに用いることができるが、ユーザにストレスを感じさせないように、サービスを提供するには、無線タグが内蔵する不揮発性メモリにデータを書き込むのに要する書き込み処理時間を短くする必要がある。
【００１３】
一方、無線タグが内蔵する不揮発性メモリのメモリセル（の状態）を、データが書き込まれていない（消去された）イレース(Erase)状態や、データが書き込まれているライト(Write)状態に、長時間に亘って保持しておくリテンション特性を高めるためには、メモリセルを構成するトランジスタの浮遊ゲートに、電荷（電子又は正孔）を十分に蓄積する必要がある。
【００１４】
図１は、不揮発性メモリであるEEPROMへのデータの書き込みを説明する図である。
【００１５】
EEPROMにデータを書き込む場合、メモリセルをイレース状態にするイレースが行われ、その後、イレース状態のメモリセルをライト状態にするライトが行われる。
【００１６】
そして、例えば、EEPROMでは、ある程度のリテンション特性を維持するために、浮遊ゲートに電荷を蓄積する電荷蓄積時間が、メモリセルがイレース状態やライト状態に遷移する時間に比較して長い。
【００１７】
電荷蓄積時間を短くすれば、書き込み処理時間を短くすることができるが、電荷蓄積時間を短くすると、リテンション特性が低下する。
【００１８】
したがって、書き込み処理時間を短くすることと、リテンション特性を維持することとは、トレードオフの関係にあるが、リテンション特性が低下し、ライト状態やイレース状態を維持することができない場合には、無線タグが使用不能となるので、リテンション特性を犠牲にして、書き込み処理時間を短くすることは、望ましくない。
【００１９】
本発明は、このような状況に鑑みてなされたものであり、リテンション特性を維持し、かつ、書き込み処理時間を短くすることができるようにするものである。
【課題を解決するための手段】
【００２０】
本発明の一側面の通信装置は、リーダライタとの間で近接通信を行う通信手段と、前記リーダライタからのコマンドに従い、不揮発性メモリに対するデータの書き込みを制御する制御手段とを備え、前記不揮発性メモリの記憶領域の一部は、サービスに割り当てられる最小単位の記憶領域であるユーザブロックであり、前記ユーザブロックは、複数のユニットを有し、前記ユニットは、書き込みが行われる所定単位の記憶領域であるページを１ページ以上有し、前記ユーザブロックを構成する複数のユニットのうちの少なくとも１のユニットは、前記ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能するバッファユニットであり、前記不揮発性メモリは、前記不揮発性メモリの記憶領域を管理するための管理情報を記憶し、前記管理情報は、前記ユニットを特定するユニットナンバを含み、前記制御手段は、前記リーダライタからのコマンドに従い、データを、前記バッファユニットに書き込み、前記バッファユニットのユニットナンバとして、データを書き込むべき対象のユニットである対象ユニットのユニットナンバを書き込み、前記対象ユニットを、新たなバッファユニットとすることで、対象ユニットへのデータの書き込みを行い、前記通信手段において前記リーダライタからのRF信号が受信されることで起動し、起動後、前記リーダライタからのコマンドを受信する前に行われる起動処理中に、前記バッファユニットの全ページをイレースする通信装置である。
【００２１】
本発明の一側面の通信方法は、リーダライタとの間で近接通信を行う通信手段と、前記リーダライタからのコマンドに従い、不揮発性メモリに対するデータの書き込みを制御する制御手段とを備える通信装置の通信方法において、前記不揮発性メモリの記憶領域の一部は、サービスに割り当てられる最小単位の記憶領域であるユーザブロックであり、前記ユーザブロックは、複数のユニットを有し、前記ユニットは、書き込みが行われる所定単位の記憶領域であるページを１ページ以上有し、前記ユーザブロックを構成する複数のユニットのうちの少なくとも１のユニットは、前記ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能するバッファユニットであり、前記不揮発性メモリは、前記不揮発性メモリの記憶領域を管理するための管理情報を記憶し、前記管理情報は、前記ユニットを特定するユニットナンバを含み、前記制御手段が、前記リーダライタからのコマンドに従い、データを、前記バッファユニットに書き込み、前記バッファユニットのユニットナンバとして、データを書き込むべき対象のユニットである対象ユニットのユニットナンバを書き込み、前記対象ユニットを、新たなバッファユニットとすることで、対象ユニットへのデータの書き込みを行い、前記通信手段において前記リーダライタからのRF信号が受信されることで起動し、起動後、前記リーダライタからのコマンドを受信する前に行われる起動処理中に、前記バッファユニットの全ページをイレースするステップを含む通信方法である。
【００２２】
以上のような一側面においては、前記不揮発性メモリの記憶領域の一部は、サービスに割り当てられる最小単位の記憶領域であるユーザブロックであり、前記ユーザブロックは、複数のユニットを有し、前記ユニットは、書き込みが行われる所定単位の記憶領域であるページを１ページ以上有し、前記ユーザブロックを構成する複数のユニットのうちの少なくとも１のユニットは、前記ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能するバッファユニットであり、前記不揮発性メモリは、前記不揮発性メモリの記憶領域を管理するための管理情報を記憶し、前記管理情報は、前記ユニットを特定するユニットナンバを含む。そして、前記制御手段は、前記リーダライタからのコマンドに従い、データを、前記バッファユニットに書き込み、前記バッファユニットのユニットナンバとして、データを書き込むべき対象のユニットである対象ユニットのユニットナンバを書き込み、前記対象ユニットを、新たなバッファユニットとすることで、対象ユニットへのデータの書き込みを行う。また、前記制御手段は、前記通信手段において前記リーダライタからのRF信号が受信されることで起動し、起動後、前記リーダライタからのコマンドを受信する前に行われる起動処理中に、前記バッファユニットの全ページをイレースする。
【００２３】
なお、通信装置は、独立した装置であっても良いし、１つの装置を構成している内部ブロックであっても良い。
【発明の効果】
【００２４】
本発明の一側面によれば、不揮発性メモリのリテンション特性を維持し、かつ、書き込みに要する書き込み処理時間を短くすることができる。
【図面の簡単な説明】
【００２５】
【図１】不揮発性メモリであるEEPROMへのデータの書き込みを説明する図である。
【図２】本発明を適用した通信システムの一実施の形態の構成例を示すブロック図である。
【図３】メモリ部２４の論理フォーマットの例を示す図である。
【図４】メモリ部２４に対するデータの書き込みを説明する図である。
【図５】メモリコラプションに対する対処を説明する図である。
【図６】無線タグ２０の処理を説明するフローチャートである。
【図７】無線タグ２０の書き込み処理時間を説明する図である。
【図８】メモリ部２４の論理フォーマットの他の例を示す図である。
【図９】無線タグ２０の処理を説明するフローチャートである。
【発明を実施するための形態】
【００２６】
［本発明を適用した通信システムの一実施の形態］
【００２７】
図２は、本発明を適用した通信システム（システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは、問わない）の一実施の形態の構成例を示すブロック図である。
【００２８】
図２において、通信システムは、リーダライタ１０、及び、無線タグ２０から構成される。
【００２９】
リーダライタ１０は、アンテナ１１を有し、アンテナ１１からRF信号を出力することにより、無線タグ２０との間で、非接触で近接通信を行い、無線タグ２０（が内蔵するメモリ部２４）に、データを記憶させ（書き込み）、また、無線タグ２０からデータを読み出す。
【００３０】
無線タグ２０は、リーダライタ１０に近接すると、リーダライタ１０がアンテナ１１から出力するRF信号を電源として動作を開始し、リーダライタ１０との間で近接通信を行う。
【００３１】
近接通信では、リーダライタ１０は、RF信号をデータに従って変調することにより、データを送信し、無線タグ２０は、リーダライタ１０がRF信号によって送信するデータを受信して、内蔵するメモリ部２４に書き込む。
【００３２】
また、無線タグ２０は、メモリ部２４に記憶されたデータを読み出し、リーダライタ１０から送信されてくるRF信号を負荷変調することで、データを、リーダライタ１０に送信する。
【００３３】
すなわち、無線タグ２０は、アンテナ２１、RF部２２、コマンドシーケンサ部２３、及び、メモリ部２４を有する。
【００３４】
アンテナ２１は、例えば、コイルとコンデンサとからなる共振回路で構成され、リーダライタ１０からのRF信号を受信し、RF部２２に供給する。
【００３５】
RF部２２は、リーダライタ１０との間で近接通信を行う。
【００３６】
すなわち、RF部２２は、リーダライタ１０と無線タグ２０とが近接することにより、アンテナ２１で、リーダライタ１０からのRF信号が受信されると、そのRF信号から電源となる電力を得て、必要なブロックに供給する。
【００３７】
また、RF部２２は、リーダライタ１０からのRF信号を、コマンドやデータに復調し、コマンドシーケンサ部２３に供給する。
【００３８】
さらに、RF部２２は、コマンドシーケンサ部２３から供給されるデータに従って、リーダライタ１０からのRF信号を負荷変調することで、データを、リーダライタ１０に送信する。
【００３９】
コマンドシーケンサ部２３は、RF部２２から供給される、リーダライタ１０からのコマンドに従って、シーケンス制御を行うことで、メモリ部２４に対するデータの読み書き等の制御を行う。
【００４０】
すなわち、コマンドシーケンサ部２３は、リーダライタ１０からのコマンドが、データの書き込みを要求するライトコマンドである場合、そのライトコマンドとともに、リーダライタ１０から送信され、RF部２２から供給されるデータを、メモリ部２４に書き込む。
【００４１】
また、コマンドシーケンサ部２３は、リーダライタ１０からのコマンドが、データの読み出しを要求するリードコマンドである場合、メモリ部２４からデータを読み出し、RF部２２に供給する。
【００４２】
メモリ部２４は、例えば、EEPROM等の不揮発性メモリであり、コマンドシーケンサ部２３の制御（管理）の下、データを記憶する。
【００４３】
［メモリ部２４の論理フォーマット］
【００４４】
図３は、図１の無線タグ２０が有するメモリ部２４の論理フォーマットを説明する図である。
【００４５】
メモリ部２４の記憶領域の一部は、例えば、定期券や、所定のサービス提供者が管理する電子マネー、イベント等のチケット等のサービスに割り当てられる最小単位の記憶領域であるユーザブロックになっている。
【００４６】
メモリ部２４には、１個以上のユーザブロックが設けられる。
【００４７】
ここで、サービスには、１個以上のユーザブロックが割り当てられ、その１個以上のユーザブロックに、サービスを提供するためのデータが記憶される。
【００４８】
ユーザブロックは、複数であるM+1個のユニットを有する（Mは、1以上の整数）。
【００４９】
ユニットには、サービスを提供するためのデータが書き込まれる。但し、ユーザブロックを構成するM+1個のユニットのうちの１個のユニットは、ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能する。
【００５０】
以上のように、ユーザブロックを構成する１個のユニットは、バッファとして機能するため、ユーザブロックは、バッファとして機能する１個のユニットと、サービスを提供するためのデータを記憶する１以上のM個のユニットとの、合計で、複数であるM+1個のユニットを有する。
【００５１】
ここで、以下、ユーザブロックを構成するM+1個のユニットのうちの、バッファとして機能するユニットを、バッファユニットともいい、バッファユニットではないユニットを、データユニットともいう。
【００５２】
図３では、ユーザブロックを構成するM+1個のユニットのうちの、M+1番目のユニットが、バッファユニットになっており、他の1ないしM番目のM個のユニットは、データユニットになっている。
【００５３】
なお、バッファユニットとなるユニットは、ユーザブロックに対するデータの書き込みが行われると変化するが、その説明は、後述する。
【００５４】
ユニットは、１以上であるK個のページを有する。
【００５５】
ページは、メモリ部２４に対する書き込みが行われる最小単位の記憶領域であり、図３では、１ページは、Nバイトの記憶領域になっている。
【００５６】
ここで、図３では、ユニットが有するページのうちの１ページは、メモリ部２４の記憶領域を管理するための管理情報を記憶するページ（管理ページ）として使用される。
【００５７】
すなわち、図３では、ユニットを構成するK個のページのうちの特定の１個のページは、そのユニットを管理するための管理情報が記憶される管理ページになっている。
【００５８】
したがって、図３では、ユニットには、データを記憶する１ページ以上のページ（データページ）と、１ページの管理ページとが必要であるため、ユニットを構成するページ数Kは、複数である。
【００５９】
なお、図３では、ユニットを構成するK個のページのうちのK番目のページが、管理ページになっている。管理ページとなるページは、（バッファユニットのように）変化せず、固定のページである。
【００６０】
管理ページには、ユニットナンバ、（１個の）シーケンスナンバ、及び、エラー検出コードが、ユニットの管理情報として書き込まれる。
【００６１】
ユニットナンバは、そのユニットナンバが書き込まれる管理ページを有するユニットを特定する情報である。
【００６２】
シーケンスナンバは、メモリ部２４にデータが書き込まれるごとに規則的に更新される値であり、例えば、直前の値に対して、1などの所定値をインクリメント又はデクリメントした値や、直前の値を引数として所定の関数を演算することにより求められる値、入力値と出力値とを対応付けたテーブルを用い、直前の値を入力値として求められる出力値等を採用することができる。
【００６３】
なお、ここでは、例えば、メモリ部２４にデータが書き込まれるごとに1ずつインクリメントされる値を、シーケンスナンバとして用いることとする。
【００６４】
エラー検出コードは、ユニットに書き込まれたデータの誤り（エラー）を検出する誤り検出用のコードで、例えば、CRC(Cyclic Redundancy Checking)等である。
【００６５】
［メモリ部２４に対するデータの書き込み制御］
【００６６】
図４は、コマンドシーケンサ部２３による、メモリ部２４に対するデータの書き込みの制御を説明する図である。
【００６７】
図４において、データが書き込まれるユニットを有するユーザブロックは、M+1個のユニット#1,#2,・・・,#M+1を有する。
【００６８】
そして、図４では、データの書き込みが行われる直前（書き込み前）においては、M+1個のユニット#1ないし#M+1のうちの、例えば、M+1番目のユニット#M+1が、バッファユニットになっており、他の1ないしM番目のユニット#1ないし#Mが、データユニットになっている。
【００６９】
また、図４では、書き込み前においては、データユニット#mのユニットナンバS_PADは、値mになっている。
【００７０】
なお、バッファユニットには、ユニットナンバS_PADは付与されないが、図４では、便宜上、バッファユニットになっているユニット#M+1のユニットナンバS_PADを、バッファユニットを表す値としての0としてある。
【００７１】
また、図４では、書き込み前のデータユニット#1のシーケンスナンバSEQが、値Xになっている。他のデータユニット#2ないし#MのシーケンスナンバSEQの図示は、省略してある。
【００７２】
ここで、１つのユニット#mは、K個のページから構成される。いま、ユーザブロックの１番目のユニット#1の１番目のページを、第1ページということとすると、ユニット#mは、第(m-1)K＋1ページないし第mKページのK個のページから構成される。そして、各ユニット#mの最後のページである第mKページは、管理ページである。
【００７３】
いま、例えば、リーダライタ１０から無線タグ２０に対して、ユニットナンバS_PADが値1のユニットへのデータの書き込みを要求するライトコマンドが、データとともに送信されてきたとする。
【００７４】
この場合、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともに送信されてきたデータを、書き込みを行うべき対象のユニットである対象ユニット、すなわち、ユニットナンバS_PADが値1になっているユニット#1（ライトコマンドによって書き込みが要求されているユニットナンバS_PADのユニット）ではなく、バッファユニットになっているユニット#M+1に書き込む。
【００７５】
さらに、コマンドシーケンサ部２３は、バッファユニットになっているユニット#M+1の管理ページに、対象ユニットであるユニット#1のユニットナンバS_PAD=1と同一のユニットナンバS_PAD=1、所定の値Yに更新されたシーケンスナンバSEQ、及び、エラー検出コードを書き込む。
【００７６】
ここで、図４では（後述する図５でも同様）、エラー検出コードの図示を省略してある。
【００７７】
また、図４において、バッファユニットになっているユニット#M+1の管理ページに書き込まれるシーケンスナンバSEQの値Yは、対象ユニットであるユニット#1の管理ページに書き込まれているシーケンスナンバSEQ=Xを1だけインクリメントすることにより更新した値X+1である。
【００７８】
以上のように、バッファユニットになっているユニット#M+1の管理ページに、値が1のユニットナンバS_PAD、所定の値Yに更新されたシーケンスナンバSEQ、及び、エラー検出コードが書き込まれることで、ユニット#M+1は、バッファユニットではなく、ユニットナンバS_PADが値1のデータユニットとなる。
【００７９】
その結果、この時点では、ユニットナンバS_PADが値1のユニットは、ユニット#1及び#M+1の２個となる。
【００８０】
但し、ユニット#M+1のシーケンスナンバSEQ=Yは、ユニット#1のシーケンスナンバSEQ=Xよりも新しい値、すなわち、シーケンスナンバSEQ=Xを更新した値X+1になっている。
【００８１】
したがって、ユニットナンバS_PADが値1の、２個のユニット#1及び#M+1については、シーケンスナンバSEQを参照することで、最新のデータが書き込まれたユニット#M+1と、データが過去に書き込まれたユニット#1（ユニットナンバS_PADが値1のユニットに書き込まれたデータのうちの、最新のデータの直前に書き込まれたデータを記憶しているユニット）とを区別することができる。
【００８２】
ここで、ユニットナンバS_PADが同一の２個のユニットが存在する場合に、その２個のユニットのうちの、最新のデータが書き込まれたユニット（本実施の形態では、シーケンスナンバが大きい方のユニット）を、新ユニットともいい、データが過去に書き込まれたユニット（シーケンスナンバが小さい方のユニット）を、旧ユニットともいう。
【００８３】
その後、コマンドシーケンサ部２３は、ユニットナンバS_PADが値1になっている２個のユニット#1及び#M+1のうちの旧ユニット、すなわち、対象ユニットであるユニット#1の管理ページをイレースし、イレース状態にすることで、ユニット#1を、新たに、バッファユニットとして、メモリ部２４にデータを書き込む書き込み処理を完了する。
【００８４】
なお、上述したように、バッファユニットには、ユニットナンバS_PADは付与されないが、図４では、新たにバッファユニットになったユニット#1のユニットナンバS_PADを、バッファユニットであることを表す値0としてある。
【００８５】
以上のように、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、データを、バッファユニットであるユニット#M+1に書き込み、バッファユニットのユニットナンバとして、対象ユニットであるユニット#1のユニットナンバS_PAD=1を書き込み、ユニット#1を、新たなバッファユニットとすることで、結果的に対象ユニットとなった、ユニットナンバS_PADが値1のユニット#M+1へのデータの書き込みを行う。
【００８６】
その結果、メモリ部２４では、ユニットナンバS_PADが値1のユニットに記憶されるデータに関して、最新のデータ（図４では、ユニット#M+1に書き込まれたデータ）が、直前（前回）のデータ（図４では、ユニット#1に書き込まれていたデータ）を残したまま書き込まれるので、メモリコラプション、すなわち、例えば、メモリ部２４にアクセスが行われている最中に、無線タグ２０がリーダライタ１０から離れること等によって、メモリ部２４に記憶されたデータに不整合が生じた場合に対処することができる。
【００８７】
図５は、メモリコラプションに対する対処を説明する図である。
【００８８】
図５において、書き込み前においては、図４の場合と同様に、M+1番目のユニット#M+1が、バッファユニットになっており、他の1ないしM番目のユニット#1ないし#Mが、データユニットになっている。
【００８９】
また、書き込み前においては、データユニット#mのユニットナンバS_PADは、値mになっており、バッファユニットであるユニット#M+1のユニットナンバS_PADは、バッファユニットを表す値0になっている。
【００９０】
いま、例えば、図４の場合と同様に、リーダライタ１０から無線タグ２０に対して、ユニットナンバS_PADが値1のユニットを対象ユニットとするデータの書き込みを要求するライトコマンドが、データとともに送信されてきたとする。
【００９１】
この場合、コマンドシーケンサ部２３は、図４で説明したように、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともに送信されてきたデータを、バッファユニットになっているユニット#M+1（ユニットナンバS_PADが値0になっているユニット）に書き込む。
【００９２】
さらに、コマンドシーケンサ部２３は、図４で説明したように、バッファユニットになっているユニット#M+1の管理ページに、対象ユニットであるユニット#1のユニットナンバS_PAD=1と同一のユニットナンバS_PAD=1、対象ユニットであるユニット#1のシーケンスナンバSEQ=Xを更新した値Y=X+1のシーケンスナンバSEQ、及び、エラー検出コードを書き込み、その後、対象ユニットであるユニット#1の管理ページをイレースし、イレース状態にすることで、ユニット#1を、新たに、バッファユニットとして、メモリ部２４にデータを書き込む書き込み処理を完了する。
【００９３】
いま、書き込み処理の途中、すなわち、例えば、バッファユニットになっているユニット#M+1の管理ページに、ユニットナンバS_PAD=1、所定の値Yに更新されたシーケンスナンバSEQ、及び、エラー検出コードを書き込んでいる最中に、無線タグ２０が、リーダライタ１０から離れ、無線タグ２０に、必要な電力が供給されなくなった（電源断になった）とする。
【００９４】
この場合、コマンドシーケンサ部２３は、次に、リーダライタ１０と無線タグ２０とが近接することにより、電源が供給されて起動したとき（次回の起動時）に、メモリ部２４の記憶内容をリカバリする。
【００９５】
すなわち、例えば、バッファユニットになっているユニット#M+1の管理ページに、ユニットナンバS_PAD=1、所定の値YのシーケンスナンバSEQ、及び、エラー検出コードのうちの、少なくとも、ユニットナンバS_PAD=1、及び、所定の値Yに更新されたシーケンスナンバSEQが書き込まれた後に、電源断になったとすると、ユニットナンバS_PADが値1で同一の２個のユニット#1及び#M+1が存在する。
【００９６】
図４で説明したように、ユニットナンバS_PADが値1の、２個のユニット#1及び#M+1については、シーケンスナンバSEQを参照することで、最新のデータが書き込まれたユニット（新ユニット）#M+1と、データが過去に書き込まれたユニット（旧ユニット）#1とを区別することができる。
【００９７】
次回の起動時、コマンドシーケンサ部２３は、新ユニットであるユニット#M+1の管理ページのエラー検出コードとしてのCRCを用いて、誤り検出を行い、誤りが検出されなかった場合（エラー検出コードが正常である場合）、新ユニットであるユニット#M+1へのデータの書き込みが正常に完了しているとして、旧ユニットであるユニット#1の管理ページをイレースし、イレース状態にすることで（図５では、ユニットナンバS_PADが、バッファユニットであることを表す値0にされている）、ユニット#1を、バッファユニットとする。
【００９８】
そして、その後、図４で説明したように、バッファユニットへの新たなデータの書き込みが行われる。
【００９９】
一方、新ユニットであるユニット#M+1の管理ページのエラー検出コードとしてのCRCを用いた誤り検出の結果、誤りが検出された場合（エラー検出コードがエラーである場合）、コマンドシーケンサ部２３は、新ユニットであるユニット#M+1へのデータの書き込みが正常に完了していないとして、メモリ部２４の状態を、例えば、新ユニットであるユニット#M+1へのデータの書き込みが行われる直前の状態に戻す。
【０１００】
すなわち、コマンドシーケンサ部２３は、新ユニットであるユニット#M+1の管理ページをイレースし、イレース状態にすることで（図５では、ユニットナンバS_PADが、バッファユニットであることを表す値0にされている）、ユニット#M+1を、バッファユニットとする。
【０１０１】
そして、その後、図４で説明したように、バッファユニットへの新たなデータの書き込みが行われる。
【０１０２】
［無線タグ２０の処理］
【０１０３】
図６は、図２の無線タグ２０の処理を説明するフローチャートである。
【０１０４】
なお、以下では、１個のユーザブロックに注目し、その１個のユーザブロックに対する処理を説明する。
【０１０５】
リーダライタ１０と無線タグ２０とが近接し、無線タグ２０のRF部２２において、リーダライタ１０からのRF信号が受信され、無線タグ２０の必要なブロックへの電源の供給が開始されると、コマンドシーケンサ部２３は起動する。
【０１０６】
そして、コマンドシーケンサ部２３は、起動後、リーダライタ１０からのコマンドを受信する前に、例えば、図示せぬ内部レジスタの初期化等の、リーダライタ１０との間で近接通信を行うための所定の起動処理を開始する。
【０１０７】
さらに、コマンドシーケンサ部２３は、起動処理中に、メモリ部２４のバッファユニットの全ページをイレースし（イレース状態にする処理のみを行い）、イレース状態にする。
【０１０８】
すなわち、ステップＳ１１において、コマンドシーケンサ部２３は、メモリ部２４の、注目している注目ユーザブロックを構成するM+1個のユニット#1ないし#M+1の管理ページのユニットナンバS_PADを確認し、処理は、ステップＳ１２に進む。
【０１０９】
ステップＳ１２では、コマンドシーケンサ部２３は、ステップＳ１１でのユニットナンバS_PADの確認の結果に基づいて、同一のユニットナンバS_PADのユニット（２個のユニット）が存在するかどうかを判定する。
【０１１０】
ステップＳ１２において、同一のユニットナンバS_PADのユニットが存在しないと判定された場合、すなわち、管理ページがイレース状態になっているユニット、つまり、バッファユニットが存在する場合、処理は、ステップＳ１３ないしＳ１５をスキップして、ステップＳ１６に進む。
【０１１１】
また、ステップＳ１２において、同一のユニットナンバS_PADのユニットが存在すると判定された場合、すなわち、例えば、前回行われた書き込み処理が完了しなかったために、図５で説明したように、管理ページがイレース状態になっているユニットであるバッファユニットが存在せず、ユニットナンバS_PADが同一の２個のユニットが存在する場合、処理は、ステップＳ１３に進み、コマンドシーケンサ部２３は、同一のユニットナンバS_PADの２個のユニットのうちの、シーケンスナンバSEQが新しいユニット（新ユニット）のエラー検出コードを用いて、新ユニットに誤りがないかどうかを判定する誤り検出を行う。
【０１１２】
ステップＳ１３において、新ユニットに誤りがある（エラー検出コードが正常でない）と判定された場合、処理は、ステップＳ１４に進み、コマンドシーケンサ部２３は、同一のユニットナンバS_PADの２個のユニットのうちの、シーケンスナンバSEQが古いユニット（旧ユニット）を、最新の正常な書き込みが行われた最新ユニットとして認識する。
【０１１３】
さらに、ステップＳ１４では、コマンドシーケンサ部２３は、同一のユニットナンバS_PADの２個のユニットのうちの他方のユニット（新ユニット）を、バッファユニットとして認識し、処理は、ステップＳ１６に進む。
【０１１４】
また、ステップＳ１３において、新ユニットに誤りがない（エラー検出コードが正常である）と判定された場合、処理は、ステップＳ１５に進み、コマンドシーケンサ部２３は、同一のユニットナンバS_PADの２個のユニットのうちの、シーケンスナンバSEQが新しいユニット（新ユニット）を、最新の正常な書き込みが行われた最新ユニットとして認識する。
【０１１５】
さらに、ステップＳ１５では、コマンドシーケンサ部２３は、同一のユニットナンバS_PADの２個のユニットのうちの他方のユニット（旧ユニット）を、バッファユニットとして認識し、処理は、ステップＳ１６に進む。
【０１１６】
ステップＳ１６では、コマンドシーケンサ部２３は、バッファユニットの管理ページが、イレース状態であるかどうかを判定する。
【０１１７】
ステップＳ１６において、バッファユニットの管理ページが、イレース状態であると判定された場合、すなわち、前回行われた書き込み処理の、後述するステップＳ２２において、バッファユニットの管理ページのイレースが行われている場合、処理は、ステップＳ１７をスキップして、ステップＳ１８に進む。
【０１１８】
また、ステップＳ１６において、バッファユニットの管理ページが、イレース状態でないと判定された場合、すなわち、前回行われた書き込み処理の、後述するステップＳ２２において、バッファユニットの管理ページのイレースが行われておらず、したがって、ステップＳ２２の直前のステップＳ２１で行われる、前回行われた書き込み処理時にバッファユニットになっていてデータの書き込みが行われた最新ユニットの管理ページについて、十分なリテンション特性を維持することができる程度の浮遊ゲートへの電荷の蓄積が行われていない可能性がある場合、処理は、ステップＳ１７に進み、コマンドシーケンサ部２３は、最新ユニットの管理ページへの、その管理ページの記憶内容の再書き込みを行って、処理は、ステップＳ１８に進む。
【０１１９】
ここで、ステップＳ１７での、最新ユニットの管理ページへの、その管理ページの記憶内容の再書き込みでは、コマンドシーケンサ部２３は、最新ユニットの管理ページの記憶内容を、管理ページの１ページのみにライトし、管理ページをライト状態にして、十分なリテンション特性を維持することができる程度の浮遊ゲートに電荷を蓄積させる。
【０１２０】
以上のように、前回行われた書き込み処理時にバッファユニットになっていてデータの書き込みが行われた最新ユニットの管理ページについて、十分なリテンション特性を維持することができる程度の浮遊ゲートへの電荷の蓄積が行われていない可能性がある場合には、最新ユニットの管理ページの再書き込みが行われるので、前回行われた書き込み処理時にバッファユニットになっていてデータの書き込みが行われた最新ユニットの管理ページについて、浮遊ゲートへの十分な電荷の蓄積（十分なリテンション特性を維持することができる程度の浮遊ゲートへの電荷の蓄積）が行われる前に、リーダライタ１０と無線タグ２０とが離されること等によって、浮遊ゲートへの十分な電荷の蓄積ができなかったときであっても、今回の起動処理中に行われるステップＳ１７の処理によって、浮遊ゲートに電荷が十分に蓄積され、リテンション特性を維持することができる。
【０１２１】
ステップＳ１８では、コマンドシーケンサ部２３は、バッファユニットの全ページをイレースし、イレース状態とする。
【０１２２】
以上のステップＳ１１ないしＳ１８の処理が、起動処理中に行われる。
【０１２３】
無線タグ２０において、起動処理が終了すると、処理は、ステップＳ１８からステップＳ１９に進み、無線タグ２０は、リーダライタ１０からのコマンドを待つコマンド待ち状態となる。
【０１２４】
そして、リーダライタ１０からコマンドが送信されてくるのを待って、処理は、ステップＳ１９からステップＳ２０に進み、RF部２２は、リーダライタ１０からのコマンドを受信し、コマンドシーケンサ部２３に供給して、処理は、ステップＳ２１に進む。
【０１２５】
例えば、いま、リーダライタ１０からのコマンドが、ライトコマンドであるとすると、ステップＳ２１、及び、続くステップＳ２２において、そのライトコマンドに従い、書き込み処理が行われる。
【０１２６】
すなわち、ステップＳ２１では、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともにリーダライタ１０から送信されてくるデータを、バッファユニットの管理ページ以外のページにライトし（ライト状態にする処理のみを行い）、ライト状態にする。
【０１２７】
ここで、従来の無線タグにおいて、不揮発性メモリへのデータの書き込みでは、リーダライタからのライトコマンドの受信後、メモリセルをイレース状態にするイレースが行われ、その後、イレース状態のメモリセルをライト状態にするライトが行われる。
【０１２８】
図６では、起動処理中に行われたステップＳ１８において、バッファユニットの全ページのイレースが既に行われているので、ステップＳ２１では、ライトの前に、イレースを行う必要がない。
【０１２９】
ステップＳ２１において、コマンドシーケンサ部２３は、バッファユニットの管理ページ以外のページに、データをライトした後、さらに、バッファユニットの管理ページに、ユニットナンバ、シーケンスナンバ、及び、エラー検出コードをライトし（ライトのみをし）、ライト状態にする。
【０１３０】
なお、ステップＳ２１において、バッファユニットの管理ページにライトされるユニットナンバは、データを書き込む対象ユニットのユニットナンバであり、例えば、リーダライタからのライトコマンドに含まれる。
【０１３１】
また、ステップＳ２１において、バッファユニットの管理ページにライトされるシーケンスナンバは、対象ユニットの管理ページに既に書き込まれているシーケンスナンバを1だけインクリメントした値である。
【０１３２】
さらに、ステップＳ２１において、バッファユニットの管理ページにライトされるエラー検出コードは、コマンドシーケンサ部２３において、バッファユニットの管理ページ以外のページにライトされたデータ（又は、そのデータ、並びに、管理ページにライトされたユニットナンバ、及び、シーケンスナンバ）に対して求められる。
【０１３３】
ステップＳ２１において、バッファユニットの管理ページ以外のページに、データがライトされ、さらに、バッファユニットの管理ページに、ユニットナンバ、シーケンスナンバ、及び、エラー検出コードがライトされると、処理は、ステップＳ２２に進み、コマンドシーケンサ部２３は、直前のステップＳ２１でバッファユニットの管理ページに書き込まれたシーケンスナンバと同一のシーケンスナンバのユニット（データユニット）の管理ページをイレースし、書き込み処理が完了する。
【０１３４】
すなわち、直前のステップＳ２１でバッファユニットの管理ページに、シーケンスナンバが書き込まれると、注目ユーザブロックには、そのシーケンスナンバのユニットとして、新ユニット（直前のステップＳ２１で管理ページの書き込みが行われた、バッファユニットであったユニット）と、対象ユニットでもある旧ユニットとの２個のユニットが存在する状態になる。
【０１３５】
ステップＳ２２では、コマンドシーケンサ部２３は、その新ユニット、及び、旧ユニットのうちの、旧ユニット（対象ユニット）の管理ページをイレースする（イレースのみする）ことで、その旧ユニットを、新たなバッファユニットとする。
【０１３６】
以上のように、無線タグ２０では、コマンドシーケンサ部２３が、RF部２２においてリーダライタ１０からのRF信号が受信されることで起動し、起動後、リーダライタ１０からのコマンドを受信する前に行われる起動処理中に、バッファユニットの全ページをイレースするので（ステップＳ１８）、リーダライタ１０からのライトコマンドを受信した後は、不揮発性メモリであるメモリ部２４へのデータの書き込みにおいて、メモリセルをイレース状態にするイレースを行わずに、メモリセルをライト状態にするライトを行うだけで済む。
【０１３７】
したがって、ライトコマンドの受信後、ライトにおいて、ライト状態を維持するリテンション特性に必要な電荷蓄積時間（浮遊ゲートに電荷を蓄積する時間）として、従来と同一の時間をかけても、イレースを行わずに済む分、ライトコマンドを受信してから、メモリ部２４にデータを書き込む書き込み処理を完了するまでの時間（書き込み処理時間）を短くすることができる。
【０１３８】
すなわち、従来と同様のリテンション特性を維持し、かつ、書き込み処理時間を短くすることができる。
【０１３９】
なお、図６では、ステップＳ１２において、同一のユニットナンバS_PADのユニットが存在しないと判定された場合、すなわち、管理ページがイレース状態になっているバッファユニットが存在する場合と、ステップＳ１３において、新ユニットに誤りがあると判定され、ステップＳ１４において、同一のユニットナンバS_PADの２個のユニットのうちの旧ユニット（シーケンスナンバSEQが古いユニット）が、最新ユニットとされるとともに、新ユニットが、バッファユニットとされる場合との、いずれの場合も、処理を、ステップＳ１６に進めることとしたが、これらの場合、処理は、ステップＳ１６ではなく、ステップＳ１８に進めることができる。
【０１４０】
すなわち、上述したように、ステップＳ１６では、バッファユニットの管理ページが、イレース状態であるかどうかが判定される。
【０１４１】
そして、バッファユニットの管理ページが、イレース状態でない場合には、前回行われた書き込み処理において、ステップＳ２２での、バッファユニットの管理ページのイレースが行われておらず、したがって、ステップＳ２２の直前のステップＳ２１でのライトが、前回行われた書き込み処理時にバッファユニットになっていてデータの書き込みが行われた最新ユニットの管理ページについて、浮遊ゲートへの十分な電荷の蓄積が行われるまで完了していない可能性があるので、ステップＳ１７において、最新ユニットの管理ページのリテンション特性を維持するために、最新ユニットの管理ページの再書き込みが行われる。
【０１４２】
一方、ステップＳ１２において、同一のユニットナンバS_PADのユニットが存在しないと判定されるのは、管理ページがイレース状態になっているバッファユニットが存在する場合であり、バッファユニットが存在するということは、前回行われた書き込み処理としてのステップＳ２２において、そのバッファユニットとなったユニットの管理ページのイレースが行われているので、前回行われた書き込み処理時にバッファユニットになっていたユニットについては、ステップＳ２１のライトが完了しており、そのユニットの管理ページについては、浮遊ゲートへの十分な電荷の蓄積が行われている。
【０１４３】
したがって、管理ページのリテンション特性を維持することができているので、ステップＳ１７において、管理ページの再書き込みを行う必要はない。
【０１４４】
また、同一のユニットナンバS_PADの２個のユニットが存在し、ステップＳ１４において、その２個のユニットのうちの旧ユニットが、最新ユニットとされる場合には、最新ユニットとされる旧ユニットの管理ページについては、その旧ユニットが、前回、バッファユニットであったときに、データが書き込まれた後に行われた起動処理中のステップＳ１７で、必要ならば、管理ページの再書き込みが行われているので、管理ページのリテンション特性を維持することができており、今回のステップＳ１７において、管理ページの再書き込みを行う必要はない。
【０１４５】
したがって、ステップＳ１２において、同一のユニットナンバS_PADのユニットが存在しないと判定された場合と、ステップＳ１４において、同一のユニットナンバS_PADの２個のユニットのうちの旧ユニットが、最新ユニットとされた場合との、いずれの場合も、管理ページのリテンション特性を維持することができているので、これらの場合、処理は、ステップＳ１６ではなく、ステップＳ１８に進めることができる。
【０１４６】
［書き込み処理時間］
【０１４７】
図７は、無線タグ２０の書き込み処理時間を説明する図である。
【０１４８】
ここで、上述したように、従来の無線タグでの、不揮発性メモリへのデータの書き込みでは、リーダライタからのライトコマンドの受信後、メモリセルをイレース状態にするイレースが行われ、その後、イレース状態のメモリセルをライト状態にするライトが行われる。
【０１４９】
このように、ライトコマンドの受信後に、データの書き込みに必要なイレースとライトとを行って、不揮発性メモリにデータを書き込む方式を、同時方式という。
【０１５０】
一方、図６で説明したように、無線タグ２０の起動処理中に、バッファユニットの全ページのイレースを行っておき（データの書き込みに必要なイレースとライトのうちのイレースのみを行っておき）、リーダライタ１０からのライトコマンドの受信後に、バッファユニットに、データのライトを行って（データの書き込みに必要なイレースとライトのうちのライトのみを行って）、メモリ部２４にデータを書き込む様式を、分離方式という。
【０１５１】
同時方式では、図７に示すように、無線タグとリーダライタとが近接した状態になって、リーダライタからRF信号の出力が開始されると、無線タグは、そのRF信号を電源として起動し、起動処理を開始する。
【０１５２】
さらに、無線タグは、起動処理の終了後、リーダライタからポーリングが送信されてくるのを待って、そのポーリングを受信し、そのポーリングに対するレスポンスを返す。
【０１５３】
なお、リーダライタが、RF信号の出力後、ポーリングを送信するまでの時間は、例えば、数10ミリ秒程度である。起動処理は、例えば、10ミリ秒程度で終了する。
【０１５４】
その後、無線タグは、リーダライタからライトコマンドが送信されてくると、そのライトコマンドを受信する。さらに、無線タグは、リーダライタからのライトコマンドに従って、そのライトコマンドとともにリーダライタから送信されているデータを、不揮発性メモリに書き込む書き込み処理を行う。
【０１５５】
なお、リーダライタが、無線タグからのレスポンスを受信してから、次のコマンドの送信を開始するまでの時間は、例えば、2.4ミリ秒以上である。
【０１５６】
無線タグは、書き込み処理が完了すると、ライトコマンドに対するレスポンスを返す。
【０１５７】
以上のように、同時方式の書き込み処理では、無線タグは、ライトコマンドの受信後に、イレースとライトとを行って、不揮発性メモリにデータを書き込む。
【０１５８】
したがって、ユニット（バッファユニット）が、K個のページで構成され、1ページのイレースに要する時間をTe秒とするとともに、1ページのライトに要する時間をTw秒とすると、同時方式の書き込み処理には、K×(Te+Tw)秒の時間がかかる。
【０１５９】
一方、分離方式では、図７に示すように、リーダライタ１０と無線タグ２０とが近接した状態になって、リーダライタ１０からRF信号の出力が開始されると、無線タグ２０は、そのRF信号を電源として起動し、起動処理を開始する。
【０１６０】
起動処理においては、無線タグ２０では、図６で説明したように、バッファユニットの全ページのイレースが行われる。
【０１６１】
無線タグ２０は、起動処理の終了後、リーダライタ１０からポーリングが送信されてくるのを待って、そのポーリングを受信し、そのポーリングに対するレスポンスを返す。
【０１６２】
そして、無線タグ２０は、リーダライタ１０からライトコマンドが送信されてくると、そのライトコマンドを受信する。さらに、無線タグ２０は、リーダライタ１０からのライトコマンドに従って、そのライトコマンドとともにリーダライタ１０から送信されているデータを、メモリ部２４（のバッファユニット）に書き込む書き込み処理を行う。
【０１６３】
その後、無線タグ２０は、書き込み処理が完了すると、ライトコマンドに対するレスポンスを返す。
【０１６４】
分離方式の書き込み処理では、無線タグ２０は、図６で説明したように、ライトコマンドの受信後に、バッファユニット（の全ページ）へのライトだけを行って、メモリ部２４にデータを書き込む。
【０１６５】
すなわち、バッファユニットのイレースは、既に、起動処理中に行われているので、リーダライタ１０からのライトコマンドの受信後には行われない（行う必要がない）。
【０１６６】
分離方式では、無線タグ２０は、バッファユニットへのライトを行った後（ステップＳ２１）、図６で説明したように、対象ユニットの管理ページである1ページのイレースを行い（ステップＳ２２）、書き込み処理が完了する。
【０１６７】
したがって、上述したように、バッファユニットが、K個のページで構成され、1ページのイレースに要する時間をTe秒とするとともに、1ページのライトに要する時間をTw秒とすると、分離方式の書き込み処理に要する時間（書き込み処理時間）は、Te+K×Tw秒になる。
【０１６８】
以上から、分離方式の書き込み処理に要する書き込み処理時間は、同時方式に比較して、(K-1)×Te（＝K×(Te+Tw)−(Te+K×Tw)）秒だけ短くなる。
【０１６９】
以上のように、分離方式によれば、書き込みに必要なイレースを、起動処理中に、いわば先だって行っておくので、同時方式と同様のリテンション特性を維持し、かつ、ライトコマンドを受信してからの書き込み処理時間を短くすることができる。
【０１７０】
［メモリ部２４の論理フォーマットの他の実施の形態］
【０１７１】
図８は、図１の無線タグ２０が有するメモリ部２４の論理フォーマットの他の実施の形態を説明する図である。
【０１７２】
図８の論理フォーマットは、メモリ部２４の記憶領域の一部が、サービスに割り当てられる1個以上のユーザブロックになっている点で、図３の場合と共通する。
【０１７３】
但し、図８の論理フォーマットは、メモリ部２４の記憶領域の他の一部が、管理情報を記憶する管理ブロックになっている点で、管理情報がページ（管理ページ）に記憶される図３の場合と異なる。
【０１７４】
ここで、図３では、ユニットには、データを記憶する１ページ以上のページ（データページ）と、管理情報を記憶する１ページの管理ページとが必要であるため、ユニットは、複数のページで構成されるが、図８では、管理情報は、管理ブロックに記憶され、管理ページが不要であるため、ユニットは、１ページ以上で構成することができる。
【０１７５】
図８では、ユニットは、１ページで構成されている。
【０１７６】
したがって、図８では、ユニットは、ページに等しい。
【０１７７】
また、図８では、ユーザブロックのユニット（ページに等しい）には、データと、そのデータのエラー検出コードとしてのCRC等が記憶される。
【０１７８】
管理ブロックは、例えば、ユーザブロックの個数の２倍の個数であるM'個のユニット（図８では、ページでもある）で構成される。
【０１７９】
したがって、メモリ部２４が、例えば、１個のユーザブロックを有することとすると、管理ブロックは、２個のユニットを有する。
【０１８０】
管理ブロックには、ユーザブロックごとの管理情報が記憶される。１個のユーザブロックの管理情報は、管理ブロックの２個のユニットに記憶される。
【０１８１】
ここで、１個のユーザブロックの管理情報を記憶する、管理ブロックの２個のユニットを、そのユーザブロックに対応する管理ブロックの２個のユニットともいう。
【０１８２】
いま、ある１個のユーザブロックに注目すると、その注目する注目ユーザブロックに対応する管理ブロックの２個のユニット（ページ）のそれぞれには、注目ユーザブロックの管理情報として、注目ユーザブロックを構成するM+1個のユニットのユニットナンバS_PAD、及び、１個のシーケンスナンバ、並びに、それら（M+1個のユニットのユニットナンバS_PAD、及び、１個のシーケンスナンバ）のエラー検出コードとしてのCRC等が記憶される。
【０１８３】
ここで、注目ユーザブロックに対応する管理ブロックの２個のユニットには、注目ユーザブロックにデータが書き込まれるごとに、そのデータの書き込みの後に、注目ユーザブロックの管理情報が、交互に書き込まれる。
【０１８４】
したがって、注目ユーザブロックに対応する管理ブロックの２個のユニットのうちの一方のユニットには、注目ユーザブロックの最新の管理情報が記憶されており、他方のユニットには、その最新の管理情報が書き込まれる直前の管理情報が記憶されている。
【０１８５】
以上のように、注目ユーザブロックに対応する管理ブロックの２個のユニットには、注目ユーザブロックにデータが書き込まれるごとに、注目ユーザブロックの管理情報が、交互に書き込まれることによって、注目ユーザブロックの最新の管理情報と、その最新の管理情報が書き込まれる直前の管理情報とが記憶されるので、メモリコラプションに対処することができる。
【０１８６】
なお、注目ユーザブロックに対応する管理ブロックの２個のユニット（ページ）それぞれの、M+1個のユニットのユニットナンバS_PADを記憶する記憶領域は、注目ユーザブロックを構成するM+1個のユニットのユニットナンバS_PADを特定するための情報（以下、ユニットナンバ特定情報ともいう）を記憶するM+1個の記憶領域（以下、ユニットナンバ用領域ともいう）に区分されている。
【０１８７】
そして、注目ユーザブロックを構成するM+1個のユニット#1ないし#M+1のうちの、m番目のユニット#mのユニットナンバ特定情報として、値mが採用され、M+1個のユニットナンバ用領域のうちの、先頭からi番目のユニットナンバ用領域には、ユニットナンバS_PADが値iのユニット#mのユニットナンバ特定情報#mが記憶される。
【０１８８】
したがって、M+1個のユニットナンバ用領域のうちの、先頭からi番目のユニットナンバ用領域に、ユニットナンバ特定情報#mが記憶されている場合、注目ユーザブロックを構成するM+1個のユニット#1ないし#M+1のうちの、m番目のユニット#mのユニットナンバS_PADは、値iである。
【０１８９】
以上のように、図８では、ユニット#mのユニットナンバ特定情報#mが、i番目のユニットナンバ用領域に書き込まれることによって、ユニット#mのユニットナンバS_PADが、値iであることが特定されるので、実質的（等価的）に、管理情報には、ユニット#mのユニットナンバS_PAD#iが含まれているということができる。
【０１９０】
ここで、図８では、上述したように、注目ユーザブロックの管理情報に、１個のシーケンスナンバSEQが含まれるので、そのシーケンスナンバSEQは、注目ユーザブロックのいずれのユニットに、データが書き込まれても更新される。
【０１９１】
すなわち、図３では、ユニットごとに、管理情報が存在し、その管理情報に、１個のシーケンスナンバSEQが含まれるので、あるユニットの管理情報に含まれるシーケンスナンバSEQは、そのユニットに、データが書き込まれるごとに更新される。
【０１９２】
一方、図８では、ユーザブロックごとに、管理情報が存在し、その管理情報に、１個のシーケンスナンバSEQが含まれるので、あるユーザブロックの管理情報に含まれるシーケンスナンバSEQは、そのユーザブロックのいずれのユニットに、データが書き込まれても更新される（ユーザブロックに、データが書き込まれるごとに更新される）。
【０１９３】
なお、ユーザブロックは、メモリ部２４に、１個だけ設けることができ、この場合、シーケンスナンバSEQは、メモリ部２４に対して、１個だけ存在するということができる。
【０１９４】
メモリ部２４が、図８の論理フォーマットを有する場合も、図３の場合と同様にして、コマンドシーケンサ部２３は、メモリ部２４に対するデータの書き込みの制御を行う。
【０１９５】
すなわち、例えば、データの書き込みが行われる直前（書き込み前）に、注目ユーザブロックのM+1個のユニット#1ないし#M+1のうちの、例えば、M+1番目のユニット#M+1が、バッファユニットになっており、他の1ないしM番目のユニット#1ないし#Mが、データユニットになっていることとする。
【０１９６】
また、データユニット#mのユニットナンバS_PADが、値mになっており、注目ユーザブロックの（管理情報に含まれる）シーケンスナンバSEQが、値Xになっていることとする。
【０１９７】
そして、いま、例えば、リーダライタ１０から無線タグ２０に対して、（注目ユーザブロックの）ユニットナンバS_PADが値1のユニットへのデータの書き込みを要求するライトコマンドが、データとともに送信されてきたとする。
【０１９８】
この場合、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともに送信されてきたデータを、書き込みを行うべき対象のユニットである対象ユニット、すなわち、ユニットナンバS_PADが値1になっているユニット#1（ライトコマンドによって書き込みが要求されているユニットナンバS_PADのユニット）ではなく、バッファユニットになっているユニット#M+1に書き込む。
【０１９９】
その後、コマンドシーケンサ部２３は、注目ユーザブロックの管理情報を更新する。
【０２００】
すなわち、注目ユーザブロックの管理情報としては、上述したように、最新の管理情報（以下、最新管理情報ともいう）と、その最新の管理情報が書き込まれる直前の管理情報（以下、直前管理情報ともいう）が、メモリ部２４に記憶されている。
【０２０１】
いま、メモリ部２４に、注目ユーザブロックの最新管理情報として、管理情報C#tが記憶されており、注目ユーザブロックの直前管理情報として、管理情報C#t-1が記憶されていることとする。
【０２０２】
コマンドシーケンサ部２３は、管理情報C#tを、更新元の管理情報（以下、更新元管理情報ともいう）として、バッファユニットになっているユニット#M+1のユニットナンバS_PADを、対象ユニットであるユニット#1のユニットナンバS_PAD=1と同一のユニットナンバS_PAD=1とし、新たにバッファユニットとするユニット#1のユニットナンバS_PADを、バッファユニットであることを表す値0とするように、更新元管理情報を更新する。
【０２０３】
さらに、コマンドシーケンサ部２３は、更新元管理情報に含まれるシーケンスナンバSEQを更新し、新たなエラー検出コードを算出する。
【０２０４】
そして、以上の結果得られる更新元管理情報を、管理情報C#t+1と表すこととすると、コマンドシーケンサ部２３は、管理情報C#t+1を、注目ユーザブロックの管理情報として、メモリ部２４の直前管理情報である管理情報C#t-1に上書きする形で書き込む。
【０２０５】
その結果、管理情報C#t+1が、注目ユーザブロックの最新管理情報となり、管理情報C#tが、注目ユーザブロックの直前管理情報となる。
【０２０６】
なお、メモリ部２４が、図８の論理フォーマットを有する場合、コマンドシーケンサ部２３は、起動処理中に、図６のステップＳ１１ないしＳ１８に代えて、以下の処理を行う。
【０２０７】
すなわち、コマンドシーケンサ部２３は、最新管理情報のエラー検出コードを用いて、誤り検出を行う。
【０２０８】
そして、最新管理情報について、誤りが検出されたなった場合には、コマンドシーケンサ部２３は、最新管理情報を参照することにより、バッファユニットを認識し、バッファユニットの全ページ（図８では、１ページ）をイレースし、イレース状態とする。
【０２０９】
一方、最新管理情報について、誤りが検出された場合には、コマンドシーケンサ部２３は、直前管理情報を参照することにより、バッファユニットを認識し、バッファユニットの全ページをイレースし、イレース状態とする。
【０２１０】
以上のように、コマンドシーケンサ部２３は、バッファユニットをイレース状態にすることまでを、起動処理中に行う。
【０２１１】
その後、コマンドシーケンサ部２３は、リーダライタ１０から、例えば、ライトコマンドが送信されてくると、上述したような、メモリ部２４に対するデータの書き込みの制御を行う。
【０２１２】
但し、最新管理情報について、誤りが検出された場合には、コマンドシーケンサ部２３は、最新管理情報ではなく、直前管理情報を、更新元管理情報として更新を行い、その結果得られる更新元管理情報を、最新管理情報に上書きする形で書き込む。
【０２１３】
［無線タグ２０の処理］
【０２１４】
ところで、図６では、リーダライタ１０から、無線タグ２０に対して、ライトコマンドが、１回だけ送信されてくることとして、無線タグ２０の処理を説明したが、リーダライタ１０から、無線タグ２０に対しては、ライトコマンドが、１回以上送信されてくることがある。
【０２１５】
図９は、リーダライタ１０から、無線タグ２０に対して、ライトコマンドが、１回以上送信されてくる場合の、図２の無線タグ２０の処理を説明するフローチャートである。
【０２１６】
なお、無線タグ２０のメモリ部２４の論理フォーマットは、図３に示したフォーマットであるとする。
【０２１７】
無線タグ２０では、ステップＳ４１ないしＳ５０において、図６のステップＳ１１ないしＳ２０とそれぞれ同様の処理が行われる。
【０２１８】
そして、ステップＳ５０において、RF部２２が、リーダライタ１０からのライトコマンドを受信し、コマンドシーケンサ部２３に供給すると、処理は、ステップＳ５１に進み、コマンドシーケンサ部２３は、バッファユニットの全ページが、イレース状態になっているかどうかを判定する。
【０２１９】
ステップＳ５１において、バッファユニットの全ページが、イレース状態になっていると判定された場合、処理は、ステップＳ５２をスキップして、ステップＳ５３に進む。
【０２２０】
また、ステップＳ５１において、バッファユニットの１ページ以上が、イレース状態になっていないと判定された場合、処理は、ステップＳ５２に進み、コマンドシーケンサ部２３は、バッファユニットをイレースし、バッファユニットの全ページをイレース状態にして、処理は、ステップＳ５３に進む。
【０２２１】
ここで、ステップＳ５２において、バッファユニットのイレースは、バッファユニットの全ページを対象に行っても良いし、バッファユニットのページのうちの、イレース状態になっていないページだけを対象として行って良い。
【０２２２】
ステップＳ５３及びＳ５４では、図６のステップＳ２１及びＳ２２とそれぞれ同様の処理が行われる。
【０２２３】
ステップＳ５４の後、処理は、ステップＳ４９に戻り、無線タグ２０は、リーダライタ１０からのコマンドを待つコマンド待ち状態となる。
【０２２４】
そして、リーダライタ１０から次のライトコマンドが送信されてくるのを待って、処理は、ステップＳ４９からステップＳ５０に進み、以下、同様にして、ステップＳ４９ないしＳ５４の処理が繰り返される。
【０２２５】
ステップＳ４９ないしＳ５４の処理は、例えば、無線タグ２０が、リーダライタ１０から離れることによって、電源の供給を受けることができなくなるか、又は、リーダライタ１０から無線タグ２０に対して、所定の時間の間、コマンドが送信されてこない場合（ステップＳ４９のコマンド待ち状態が、所定の時間だけ継続した場合）に、終了する。
【０２２６】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【０２２７】
すなわち、例えば、本実施の形態では、不揮発性メモリであるメモリ部２４として、EEPROMを採用することとしたが、メモリ部２４としては、EEPROM以外の、例えば、FeRAM(Ferroelectric Random Access Memory)等の不揮発性メモリを採用することが可能である。但し、分離方式の書き込み処理は、例えば、EEPROMのように、電荷蓄積時間が長い不揮発性メモリに、特に有用である。
【０２２８】
また、本実施の形態では、１個のユニットをバッファユニットとしたが、バッファユニットとしては、複数個のユニットを採用することが可能である。
【符号の説明】
【０２２９】
１０  リーダライタ，  １１  アンテナ，  ２０  無線タグ，  ２１  アンテナ，  ２２  RF部，  ２３  コマンドシーケンサ部，  ２４  メモリ部
【図１】
0005464066.tif 000002
【図２】
0005464066.tif 000003
【図３】
0005464066.tif 000004
【図４】
0005464066.tif 000005
【図５】
0005464066.tif 000006
【図６】
0005464066.tif 000007
【図７】
0005464066.tif 000008
【図８】
0005464066.tif 000009
【図９】
0005464066.tif 000010