(57)【要約】【課題】書き換え可能な不揮発性メモリに記憶されているデータを安全に更新すること。【解決手段】元のデータを記憶している旧ブロックのブロック番号領域に、この旧ブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むことと、元のデータを更新したデータが書き込まれた新ブロックのブロック番号領域に、旧ブロックの元のブロック番号の値を書き込むことを、ＣＰＵ２３やＤＭＡＣ２４による１アクセスサイクル内で行うブロック制御部２７を設ける。ブロック制御部２７は、旧ブロックのブロック番号と新ブロックのブロック番号の書き込みが終了した時点でアクセスサイクルを終了させる。また、リセット制御部２５は、ＣＰＵ２３等のアクセスサイクル中に外部リセット信号が入力しても、そのアクセスサイクルが切れるまでは内部リセットをかけずに、アクセスサイクルが切れたときに内部リセットをかける。【選択図】図１
2007148834.tif 000002
【特許請求の範囲】
【請求項１】
ブロック番号領域とデータ領域を有する複数のブロックを備えた書き換え可能な不揮発性メモリと、
前記不揮発性メモリにアクセスして同不揮発性メモリの第１のブロックのデータ領域に記憶されているデータを読み出し、該読み出しデータを更新して同不揮発性メモリの未使用である第２のブロックのデータ領域に書き込むメモリアクセス装置と、
前記メモリアクセス装置によるデータの読み出しおよび書き込みの処理が終了した後に、前記メモリアクセス装置によるアクセスをトリガーとして、前記第１のブロックのブロック領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むとともに、前記第２のブロックのブロック領域に、前記第１のブロックの元のブロック番号の値を書き込むブロック番号更新処理を、前記メモリアクセス装置の１アクセスサイクル内で行うブロック制御部と、
前記メモリアクセス装置によるアクセスサイクル中には内部リセットをかけずに、前記メモリアクセス装置によるアクセスサイクルが切れたときに内部リセットをかけるリセット制御部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記ブロック制御部が、
前記第１のブロックの開始アドレスを保持する無効ブロック番号のアドレスレジスタと、
前記第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を保持する無効ブロック番号のデータレジスタと、
前記第２のブロックの開始アドレスを保持する更新ブロック番号のアドレスレジスタと、
前記第１のブロックの元のブロック番号の値を保持する更新ブロック番号のデータレジスタと、
前記無効ブロック番号のアドレスレジスタに保持されている値と前記無効ブロック番号のデータレジスタに保持されている値を出力して、前記第１のブロックのブロック番号領域に対する書き込み処理を行った後に、前記更新ブロック番号のアドレスレジスタに保持されている値と前記更新ブロック番号のデータレジスタに保持されている値を出力して、前記第２のブロックのブロック番号領域に対する書き込み処理を行う２回書き込み制御部と、
前記２回書き込み制御部による２回目の書き込み処理が終了した時点で、前記メモリアクセス装置によるアクセスサイクルを終了させるブロック制御レジスタと、
を備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
ブロック番号領域とデータ領域を有する複数のブロックを備えた第１の書き換え可能な不揮発性メモリと、
ブロック番号領域とデータ領域を有する複数のブロックを備えた第２の書き換え可能な不揮発性メモリと、
前記第１の不揮発性メモリにアクセスして同第１の不揮発性メモリの第１のブロックのデータ領域に記憶されているデータを読み出し、該読み出しデータを更新し、前記第２の不揮発性メモリにアクセスして同第２の不揮発性メモリの未使用である第２のブロックのデータ領域に書き込むメモリアクセス装置と、
前記メモリアクセス装置によるデータの読み出しおよび書き込みの処理が終了した後に、前記メモリアクセス装置によるアクセスをトリガーとして、前記第１のブロックのブロック領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むとともに、前記第２のブロックのブロック領域に、前記第１のブロックの元のブロック番号の値を書き込むブロック番号更新処理を、前記メモリアクセス装置による１アクセスサイクル内で行うブロック制御部と、
前記メモリアクセス装置によるアクセスサイクル中には内部リセットをかけずに、前記メモリアクセス装置によるアクセスサイクルが切れたときに内部リセットをかけるリセット制御部と、
を備えることを特徴とするデータ処理装置。
【請求項４】
前記ブロック制御部が、
前記第１のブロックの開始アドレスを保持する無効ブロック番号のアドレスレジスタと、
前記第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を保持する無効ブロック番号のデータレジスタと、
前記第２のブロックの開始アドレスを保持する更新ブロック番号のアドレスレジスタと、
前記第１のブロックの元のブロック番号の値を保持する更新ブロック番号のデータレジスタと、
前記無効ブロック番号のアドレスレジスタに保持されている値と前記無効ブロック番号のデータレジスタに保持されている値と前記更新ブロック番号のアドレスレジスタに保持されている値と前記更新ブロック番号のデータレジスタに保持されている値を出力して、前記第１のブロックのブロック番号領域に対する書き込み処理と前記第２のブロックのブロック番号領域に対する書き込み処理を同時に行う同時書き込み制御部と、
前記同時書き込み制御部による書き込み処理が終了した時点で、前記メモリアクセス装置によるアクセスサイクルを終了させるブロック制御レジスタと、
を備えることを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
ブロック番号領域とデータ領域からなる複数のブロックを有する書き換え可能な不揮発性メモリの第１のブロックのデータ領域に記憶されているデータを更新するにあたって、
前記第１のブロックのデータ領域に記憶されているデータを読み出し、該読み出しデータを更新したデータを未使用である第２のブロックのデータ領域に書き込むステップと、
前記第２のブロックのデータ領域への書き込み処理が終了した後に、前記第１のブロックのブロック領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むとともに、前記第２のブロックのブロック領域に、前記第１のブロックの元のブロック番号の値を書き込むブロック番号更新処理を１アクセスサイクル内で行うステップと、
を含むことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ処理装置およびデータ処理方法に関し、特に書き換え可能な不揮発性メモリに対してデータの書き換えを行うデータ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
従来より、コンピュータおよびその周辺機器、デジタルカメラ、携帯電話機、または医療用や放送局用の産業用機器などでは、記憶媒体として書き換え可能な不揮発性メモリが用いられている。このメモリとして一般的なものに、電気的に一括消去・書き換え可能な不揮発性メモリ（フラッシュメモリ）や不揮発性強誘電体メモリ（ＦＲＡＭ）などがある。
【０００３】
フラッシュメモリには、数〜数十キロバイトのブロック単位でしかデータを消去することができないという制限がある。従って、フラッシュメモリに記憶されているデータを書き換える際には、実質的にブロック単位でデータを書き換えることになる。
【０００４】
図１２は、フラッシュメモリを含む従来のデータ処理装置の構成を示すブロック図である。図１２に示すように、データ処理装置は、２つのフラッシュメモリ（一方をＡとし、他方をＢとする）１，２と、これらのフラッシュメモリＡ１，Ｂ２にアクセス可能なバスマスタである中央処理装置（以下、ＣＰＵとする）３およびダイレクトメモリアクセスコントローラ（以下、ＤＭＡＣとする）４と、データ処理装置のリセットのタイミングを制御するリセット制御部５とが、バス６に接続された構成となっている。
【０００５】
図１３は、フラッシュメモリのブロックのフォーマットを示す図である。図１３に示すように、ブロック７は、ブロックを特定する値やそのブロックが有効なデータを格納しているか否かを表す値を格納するブロック番号領域８と、データを格納するデータ領域９からなる。以上のような特徴があるため、従来のデータ処理装置では、以下のような処理手順で、フラッシュメモリに記憶されているデータの書き換えを行っている。
【０００６】
例えば、図１２において、フラッシュメモリＡ１内のあるブロック（書き換え処理によって無効なブロックにされるので、以下、無効ブロックとする）１０に格納されているデータの一部を更新する場合、フラッシュメモリＢ２内の未使用領域にあるブロック（書き換え処理によって更新後のデータが格納されるので、以下、更新ブロックとする）１１を交替用ブロックとして用意する。そして、ＣＰＵ３またはＤＭＡＣ４は、無効ブロック１０に格納されているデータのうち、更新しないデータ部分を読み出して更新ブロック１１の対応箇所に書き込む。
【０００７】
次いで、ＣＰＵ３またはＤＭＡＣ４は、更新するデータ部分を更新ブロック１１の対応箇所に書き込む。次いで、無効ブロック１０のブロック番号として、格納されているデータが無効であることを表す値（例えば、"００ｈ"）を書き込む。これによって、無効ブロック１０は無効な領域、すなわち有効なデータを格納していない領域となる。
【０００８】
次いで、更新ブロック１１のブロック番号として、データの書き換え処理を開始する前の無効ブロック１０のブロック番号を書き込む。これによって、無効ブロック１０の代わりに更新ブロック１１が有効な領域、すなわち更新された有効なデータを格納している領域となり、無効ブロック１０に格納されていたデータの一部が更新されたことになる。
【０００９】
ところで、制御プログラムを記憶したフラッシュメモリと、そのフラッシュメモリにアクセス可能なＣＰＵを有するデータ処理装置において、ＣＰＵが制御プログラムの書き換えを行っている期間、ＣＰＵに対する割込み要求または例外処理要求を無効化するようにした装置が公知である（例えば、特許文献１参照。）。このデータ処理装置では、制御プログラムの書き換え期間中にＣＰＵに対する割込み要求または例外処理要求が発生しても、ＣＰＵは、割込み要求または例外処理要求に対応するベクタアドレスの取得動作を実行しないので、制御プログラムを書き換える際のシステムの安全性が向上する。
【００１０】
【特許文献１】特開２００１−３５０６４２号公報（段落［００２７］〜［００３０］）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来のデータ処理装置では、無効ブロック１０のブロック番号を無効化する処理のアクセスサイクルが終了した後に、続いて更新ブロック１１のブロック番号を更新する処理のアクセスサイクルが開始されるため、更新ブロック１１のブロック番号を更新するためのアクセスサイクルを開始する前に外部からデータ処理装置に外部リセット信号が入力した場合に、次のような問題が生じる。すなわち、ＣＰＵ３またはＤＭＡＣ４のアクセスサイクルは、外部リセットに対して保護されているので、途中で崩れることはない。
【００１２】
従って、無効ブロック１０のブロック番号を無効化するためのアクセスサイクルが終了するまでは、リセットはかからない。しかし、無効ブロック１０のブロック番号を無効化するためのアクセスサイクルが終了した時点で、無効ブロック１０からバスサイクル終了信号ＲＤＹが出力され、それによってリセット制御部５から内部リセット信号ＲＳＴＸが出力される（図１２参照）ので、データ処理装置がリセットされてしまう。
【００１３】
つまり、更新ブロック１１のブロック番号が更新されて有効になる前にデータの書き換え処理が終了してしまう。この時点ではすでに無効ブロック１０のブロック番号が無効化されているので、データの更新ができないだけでなく、元のデータもなくなってしまう。このように、従来のデータ処理装置またはデータ処理方法では、書き換え可能な不揮発性メモリに記憶されているデータを更新する際に、データを失うという危険性がある。
【００１４】
この発明は、上述した従来技術による問題点を解消するため、書き換え可能な不揮発性メモリに記憶されているデータを安全に更新することができるデータ処理装置およびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、本発明は、元のデータを記憶している第１のブロックのブロック番号領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むことと、第１のブロックのデータ領域に記憶されているデータを更新したデータが書き込まれた第２のブロックのブロック番号領域に、第１のブロックの元のブロック番号の値を書き込むことを、ＣＰＵ等のメモリアクセス装置による１アクセスサイクル内で行うブロック制御部を設ける。
【００１６】
ブロック制御部は、第１のブロックのブロック番号と第２のブロックのブロック番号の書き込みが終了した時点でアクセスサイクルを終了させる。また、リセット制御部を、メモリアクセス装置によるアクセスサイクル中に外部リセット信号が入力しても、そのアクセスサイクルが切れるまでは内部リセットをかけずに、アクセスサイクルが切れたときに内部リセットをかけるようにする。
【００１７】
この発明によれば、書き換え可能な不揮発性メモリに記憶されているデータを更新する際に、第２のブロックのブロック番号領域に、第１のブロックの元のブロック番号の値を書き込む前に外部リセット信号が入力しても、第２のブロックのブロック番号領域への書き込みが終了してから内部リセットがかかる。従って、第２のブロックのブロック番号領域に第１のブロックの元のブロック番号の値を書き込めないことが原因でデータを失うことを防ぐことができる。
【発明の効果】
【００１８】
本発明にかかるデータ処理装置およびデータ処理方法によれば、書き換え可能な不揮発性メモリに記憶されているデータを安全に更新することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照して、この発明にかかるデータ処理装置およびデータ処理方法の好適な実施の形態を詳細に説明する。
【００２０】
図１は、本発明の実施の形態にかかるデータ処理装置の構成を示すブロック図である。図１に示すように、データ処理装置は、フラッシュメモリＡ２１およびフラッシュメモリＢ２２と、これらのフラッシュメモリＡ２１およびフラッシュメモリＢ２２にアクセス可能なバスマスタであるＣＰＵ２３およびＤＭＡＣ２４と、データ処理装置のリセットのタイミングを制御するリセット制御部２５と、フラッシュメモリＡ２１またはフラッシュメモリＢ２２に記憶されているデータを更新する際に１アクセスサイクル内で無効ブロックのブロック番号と更新ブロックのブロック番号を更新する制御を行うブロック制御部２７を備えている。
【００２１】
ＣＰＵ２３およびＤＭＡＣ２４は、フラッシュメモリＡ２１およびフラッシュメモリＢ２２にアクセスしてデータの読み出しや書き込みを行うメモリアクセス装置としての機能を有する。ＣＰＵ２３、ＤＭＡＣ２４およびブロック制御部２７は、バス２６に接続されている。ＣＰＵ２３またはＤＭＡＣ２４は、バス２６にＲＡＤ、ＲＢＡＥ、ＲＢＷＲおよびＲＢＲＤの各バス信号を出力する。
【００２２】
ＲＡＤ信号は、アドレス信号とデータ信号を兼ねている。ＲＢＡＥ信号は、ＲＡＤ信号にアドレスが出力されているときにそのアドレスをラッチするための信号である。ＲＢＷＲ信号は、データの書き込みサイクルであることを示す信号である。ＲＢＲＤ信号は、データの読み出しサイクルであることを示す信号である。また、ＣＰＵ２３またはＤＭＡＣ２４は、バスサイクルの終了を示すＲＤＹ信号の入力によって、バスサイクルを終了する。
【００２３】
ブロック制御部２７には、フラッシュメモリＡ２１に対して、アドレス信号を出力するＭＥＭ０−Ａ端子、チップセレクト信号を出力するＭＥＭ０−ＣＳ端子、書き込み信号を出力するＭＥＭ０−Ｗ端子、およびデータ信号を出力するＭＥＭ０−Ｄ端子が設けられている。また、ブロック制御部２７には、フラッシュメモリＡ２１の入力側に設けられているマルチプレクサ２８，２９，３０，３１へ制御信号を出力するＭＰＸ０−ＣＴＬ端子が設けられている。
【００２４】
また、フラッシュメモリＢ２２に対しても同様である。すなわち、ブロック制御部２７には、ＭＥＭ１−Ａ端子、ＭＥＭ１−ＣＳ端子、ＭＥＭ１−Ｗ端子、ＭＥＭ１−Ｄ端子、およびフラッシュメモリＢ２２の入力側にあるマルチプレクサ３５，３６，３７，３８へ制御信号を出力するＭＰＸ１−ＣＴＬ端子が設けられている。
【００２５】
さらに、ブロック制御部２７には、バス２６に対してＲＡＤ信号、ＲＢＡＥ信号、ＲＢＷＲ信号およびＲＢＲＤ信号の入出力を行う端子と、ＲＤＹ信号を出力する端子が設けられている。ブロック制御部２７は、これらＲＡＤ信号、ＲＢＡＥ信号、ＲＢＷＲ信号、ＲＢＲＤ信号およびＲＤＹ信号の入力および出力によって、ブロック制御部２７内の後述するレジスタに対するＣＰＵ２３またはＤＭＡＣ２４のアクセスを制御している。ブロック制御部２７の詳細な構成については、後述する。
【００２６】
フラッシュメモリＡ２１には、アドレス信号、チップセレクト信号、読み出し信号、書き込み信号およびフラッシュメモリＡ２１に書き込まれるデータ入力信号がそれぞれ入力されるＡ端子、ＣＳ端子、ＲＤＸ端子、ＷＲＸ端子およびＤｉ端子が設けられている。また、フラッシュメモリＡ２１には、フラッシュメモリＡ２１から読み出されたデータ出力信号を出力するＤｏ端子が設けられている。
【００２７】
チップセレクト信号と書き込み信号が入力されると、アドレス信号により指定されたアドレスにデータ入力信号のデータが書き込まれる。また、チップセレクト信号と読み出し信号が入力されると、アドレス信号により指定されたアドレスのデータがデータ出力信号として出力される。このデータ出力信号は、後述するアドレスデコード信号が出力されたときにＲＡＤ信号としてバス２６への出力が許可された状態となる。
【００２８】
フラッシュメモリＡ２１の入力側には、前記マルチプレクサ２８，２９，３０，３１の他に、ラッチ部Ａ３２、フラッシュメモリアクセス制御部Ａ３３およびアドレスデコーダＡ３４が設けられている。ラッチ部Ａ３２には、バス２６からＲＡＤ信号とＲＢＡＥ信号が供給される。ラッチ部Ａ３２は、ＲＢＡＥ信号の入力によってＲＡＤ信号のアドレス信号をラッチし、ラッチしたアドレス信号をマルチプレクサ２８に送る。このマルチプレクサ２８には、ラッチ部Ａ３２からのアドレス信号の他に、ブロック制御部２７のＭＥＭ０−Ａ端子からアドレス信号が供給される。
【００２９】
マルチプレクサ２８は、通常は、ラッチ部Ａ３２でラッチされたアドレス信号を選択してフラッシュメモリＡ２１のＡ端子に供給する。一方、マルチプレクサ２８は、ＣＰＵ２３またはＤＭＡＣ２４がブロック制御部２７の後述する制御ビットにアクセスしているときには、ブロック制御部２７のＭＥＭ０−Ａ端子から出力されたアドレス信号を選択してフラッシュメモリＡ２１のＡ端子に供給する。
【００３０】
アドレスデコーダＡ３４は、ラッチ部Ａ３２にラッチされたアドレス信号をデコードし、フラッシュメモリＡ２１へのアクセスである場合にアドレスデコード信号を出力する。このアドレスデコード信号は、フラッシュメモリアクセス制御部Ａ３３とマルチプレクサ２９へ送られる。このマルチプレクサ２９には、アドレスデコード信号の他に、ブロック制御部２７のＭＥＭ０−ＣＳ端子からチップセレクト信号が供給される。
【００３１】
マルチプレクサ２９は、通常は、アドレスデコード信号を選択してフラッシュメモリＡ２１のＣＳ端子に供給する。一方、マルチプレクサ２９は、ＣＰＵ２３またはＤＭＡＣ２４がブロック制御部２７の後述する制御ビットにアクセスしているときには、ブロック制御部２７のＭＥＭ０−ＣＳ端子から出力されたチップセレクト信号を選択してフラッシュメモリＡ２１のＣＳ端子に供給する。
【００３２】
フラッシュメモリアクセス制御部Ａ３３には、フラッシュメモリＡ２１に対して、読み出し信号を出力するＲＤＸ端子、書き込み信号を出力するＷＲＸ端子、およびＲＤＹ信号を出力するＲＤＹ端子が設けられている。フラッシュメモリアクセス制御部Ａ３３は、バス２６から供給されたＲＢＷＲ信号およびＲＢＲＤ信号と、アドレスデコード信号に基づいて、読み出し信号または書き込み信号と、ＲＤＹ信号を出力する。このＲＤＹ信号は、アドレスデコード信号が出力されたときにバス２６への出力が許可された状態となる。
【００３３】
フラッシュメモリアクセス制御部Ａ３３から出力された読み出し信号は、フラッシュメモリＡ２１のＲＤＸ端子へ送られる。フラッシュメモリアクセス制御部Ａ３３から出力された書き込み信号は、マルチプレクサ３０へ送られる。このマルチプレクサ３０には、フラッシュメモリアクセス制御部Ａ３３からの書き込み信号の他に、ブロック制御部２７のＭＥＭ０−Ｗ端子から書き込み信号が供給される。
【００３４】
マルチプレクサ３０は、通常は、フラッシュメモリアクセス制御部Ａ３３からの書き込み信号を選択してフラッシュメモリＡ２１のＷＲＸ端子に供給する。一方、マルチプレクサ３０は、ＣＰＵ２３またはＤＭＡＣ２４がブロック制御部２７の後述する制御ビットにアクセスしているときには、ブロック制御部２７のＭＥＭ０−Ｗ端子から出力された書き込み信号を選択してフラッシュメモリＡ２１のＷＲＸ端子に供給する。
【００３５】
フラッシュメモリＡ２１のＤｉ端子には、マルチプレクサ３１が接続されている。このマルチプレクサ３１には、バス２６からＲＡＤ信号が供給されるとともに、ブロック制御部２７のＭＥＭ０−Ｄ端子からデータ信号が供給される。マルチプレクサ３１は、通常は、バス２６からのＲＡＤ信号中のデータ信号を選択してフラッシュメモリＡ２１のＤｉ端子に供給する。
【００３６】
一方、マルチプレクサ３１は、ＣＰＵ２３またはＤＭＡＣ２４がブロック制御部２７の後述する制御ビットにアクセスしているときには、ブロック制御部２７のＭＥＭ０−Ｄ端子から出力されたデータ信号を選択してフラッシュメモリＡ２１のＤｉ端子に供給する。各マルチプレクサ２８，２９，３０，３１の上述した動作は、ブロック制御部２７のＭＥＭ０−ＣＴＬ端子から出力された制御信号によって制御される。
【００３７】
また、フラッシュメモリＢ２２の入力側には、マルチプレクサ３５，３６，３７，３８の他に、ラッチ部Ｂ３９、フラッシュメモリアクセス制御部Ｂ４０およびアドレスデコーダＢ４１が設けられている。ブロック制御部２７を含むこれらの相互の接続関係は、上述したフラッシュメモリＡ２１、マルチプレクサ２８，２９，３０，３１、ラッチ部Ａ３２、フラッシュメモリアクセス制御部Ａ３３、アドレスデコーダＡ３４およびブロック制御部２７の相互の接続関係と同じである。
【００３８】
従って、上述した説明において、フラッシュメモリＡ２１、マルチプレクサ２８，２９，３０，３１、ラッチ部Ａ３２、フラッシュメモリアクセス制御部Ａ３３およびアドレスデコーダＡ３４をそれぞれフラッシュメモリＢ２２、マルチプレクサ３５，３６，３７，３８、ラッチ部Ｂ３９、フラッシュメモリアクセス制御部Ｂ４０およびアドレスデコーダＢ４１と読み替え、またブロック制御部２７のＭＥＭ０−Ａ端子、ＭＥＭ０−ＣＳ端子、ＭＥＭ０−Ｗ端子、ＭＥＭ０−Ｄ端子およびＭＰＸ０−ＣＴＬ端子をそれぞれＭＥＭ１−Ａ端子、ＭＥＭ１−ＣＳ端子、ＭＥＭ１−Ｗ端子、ＭＥＭ１−Ｄ端子およびＭＰＸ１−ＣＴＬ端子と読み替えるものとし、重複する説明を省略する。
【００３９】
リセット制御部２５には、ＲＤＹ信号と外部リセット信号が入力される。外部リセット信号は、データ処理装置の図示しない外部リセット端子より入力されるリセット信号であり、ＣＰＵ２３やブロック制御部２７などの内部回路が動作するために使用される内部クロックに対して非同期に入力される。
【００４０】
リセット制御部２５は、外部リセット信号と、ＣＰＵ２３やＤＭＡＣ２４のバスアクセスを示すＲＤＹ信号との競合を行い、ＣＰＵ２３やＤＭＡＣ２４のアクセスがないことをＲＤＹ信号が示しているときに、内部リセットをかけるＲＳＴＸ信号を出力する。ＲＳＴＸ信号は、内部クロックと同期している。リセット制御部２５の詳細な構成については、後述する。
【００４１】
次に、ブロック制御部２７について詳細に説明する。まず、ブロック制御部２７に設けられたレジスタの構成を、図２〜図４を参照しながら説明する。図２は、ブロック制御部に設けられたレジスタの構成を示す模式図である。図３は、フラッシュメモリのデータ更新時に、更新前の元のデータを記憶しているブロック、すなわちこのデータ更新処理によって無効とされる無効ブロックと、更新後の新データを記憶するブロック、すなわちこのデータ更新処理によって新たに有効とされる更新ブロックが異なるフラッシュメモリに存在する場合を示す概略図である。
【００４２】
また、図４は、無効ブロックと更新ブロックが同じフラッシュメモリに存在する場合を示す概略図である。図２に示すように、ブロック制御部２７には、無効ブロック番号のアドレスレジスタ４２、無効ブロック番号のデータレジスタ４３、更新ブロック番号のアドレスレジスタ４４、更新ブロック番号のデータレジスタ４５およびブロック制御レジスタ４６が設けられている。
【００４３】
無効ブロック番号のアドレスレジスタ４２は、フラッシュメモリＡ２１またはフラッシュメモリＢ２２のデータ更新時に、更新前の元のデータを記憶しているブロック、すなわちこのデータ更新処理によって無効とされる無効ブロックの開始アドレスを保持する。無効ブロックの開始アドレスは、図３または図４のブロックＣ４７の開始アドレスである。
【００４４】
無効ブロック番号のデータレジスタ４３は、フラッシュメモリＡ２１またはフラッシュメモリＢ２２のデータ更新時に、無効ブロックのブロック番号領域８（図１３参照）に書き込むべき値を保持する。この保持される値は、無効ブロックのデータ領域９（図１３参照）に格納されているデータが無効であることを表す値であり、例えば"００ｈ"である。
【００４５】
更新ブロック番号のアドレスレジスタ４４は、フラッシュメモリＡ２１またはフラッシュメモリＢ２２のデータ更新時に、更新後の新データを記憶するブロック、すなわちこのデータ更新処理によって新たに有効とされる更新ブロックの開始アドレスを保持する。更新ブロックの開始アドレスは、図３または図４のブロックＤ４８の開始アドレスである。
【００４６】
更新ブロック番号のデータレジスタ４５は、フラッシュメモリＡ２１またはフラッシュメモリＢ２２のデータ更新時に、更新ブロックのブロック番号領域８（図１３参照）に書き込むべき値を保持する。この値は、更新前の元のデータを記憶している無効ブロックのブロック番号の値（"０１ｈ"〜"ＦＥｈ"）である。
【００４７】
特に限定しないが、例えば、無効ブロック番号のアドレスレジスタ４２と更新ブロック番号のアドレスレジスタ４４は、３２ビットで構成されており、無効ブロック番号のデータレジスタ４３と更新ブロック番号のデータレジスタ４５は、１６ビットで構成されている。これら無効ブロック番号のアドレスレジスタ４２、無効ブロック番号のデータレジスタ４３、更新ブロック番号のアドレスレジスタ４４および更新ブロック番号のデータレジスタ４５の値は、ＣＰＵ２３により書き込まれる。
【００４８】
ブロック制御レジスタ４６には、Ｗビットが設けられている。ＣＰＵ２３によりこのＷビットに"１"が書き込まれると、無効ブロック番号のアドレスレジスタ４２に保持されているアドレスにより特定されるブロックのブロック番号領域に、無効ブロック番号のデータレジスタ４３に保持されている値が書き込まれる。
【００４９】
また、更新ブロック番号のアドレスレジスタ４４に保持されているアドレスにより特定されるブロックのブロック番号領域に、更新ブロック番号のデータレジスタ４５に保持されている値が書き込まれる。これらのブロック番号の書き込み処理は、１アクセスサイクル内で行われるが、無効ブロックと更新ブロックが同じフラッシュメモリにある場合には２回に分けて行われる。無効ブロックと更新ブロックが異なるフラッシュメモリにある場合には、１回で書き込まれる。
【００５０】
図５は、ブロック制御部２７の構成を示すブロック図である。図５に示すように、ブロック制御部２７は、無効ブロック番号のアドレスレジスタ４２、無効ブロック番号のデータレジスタ４３、更新ブロック番号のアドレスレジスタ４４、更新ブロック番号のデータレジスタ４５およびブロック制御レジスタ４６の他に、フラッシュメモリＡの開始アドレスレジスタ５１、フラッシュメモリＢの開始アドレスレジスタ５２およびフラッシュメモリＡ，Ｂの容量レジスタ５３の各レジスタと、領域判定部５４と、同時書き込み制御部５５と、２回書き込み制御部５６と８個のマルチプレクサ５７〜６４を備えている。
【００５１】
フラッシュメモリＡの開始アドレスレジスタ５１は、フラッシュメモリＡ２１の開始アドレスを保持する。フラッシュメモリＢの開始アドレスレジスタ５２は、フラッシュメモリＢ２２の開始アドレスを保持する。フラッシュメモリＡ，Ｂの容量レジスタ５３は、フラッシュメモリＡ２１およびフラッシュメモリＢ２２の領域サイズを保持する。これらの開始アドレスレジスタ５１，５２および容量レジスタ５３には、固定値が格納されている。
【００５２】
ブロック制御レジスタ４６は、自身のＷビットに"１"が書き込まれたことを検出すると、動作クロックに同期して１サイクル分Ｈ（ハイ）レベルのｓｔａｒｔ＿ｐ信号を出力する。また、ブロック制御レジスタ４６には、同時書き込み制御部５５または２回書き込み制御部５６からｄｏｎｅ＿ａｌｌ信号が供給される。
【００５３】
このｄｏｎｅ＿ａｌｌ信号は、フラッシュメモリＡ２１やフラッシュメモリＢ２２へのブロック番号の書き込み処理が終了すると、例えばＨ（ハイ）レベルとなる。ブロック制御レジスタ４６は、例えばＨ（ハイ）レベルのｄｏｎｅ＿ａｌｌ信号をＲＤＹ信号としてバス２６へ返す。それによって、バスサイクルが終了する。
【００５４】
領域判定部５４は、無効ブロック番号のアドレスレジスタ４２、更新ブロック番号のアドレスレジスタ４４、フラッシュメモリＡの開始アドレスレジスタ５１、フラッシュメモリＢの開始アドレスレジスタ５２およびフラッシュメモリＡ，Ｂの容量レジスタ５３の各格納値に基づいて、無効ブロックがどのフラッシュメモリにあるのかということと、無効ブロックと更新ブロックが同じフラッシュメモリ内にあるのか、あるいは別のフラッシュメモリにあるのかということを判断する。そして、その判断結果に基づいて、領域判定部５４は、２ｔｉｍｅｓ＿ｓｅｑ信号とａｒｅａ＿ｊｕｄｇｅ信号を出力する。
【００５５】
２ｔｉｍｅｓ＿ｓｅｑ信号は、無効ブロックおよび更新ブロックの各ブロック番号を２回に分けて書き込むための信号であり、無効ブロックと更新ブロックが同じフラッシュメモリにある場合に例えばＨ（ハイ）レベルとなり、異なるフラッシュメモリにある場合に例えばＬ（ロー）レベルとなる。ａｒｅａ＿ｊｕｄｇｅ信号は、無効ブロックが存在するフラッシュメモリを特定するための信号であり、フラッシュメモリＡ２１に存在する場合に例えばＨ（ハイ）レベルとなり、フラッシュメモリＢ２２に存在する場合に例えばＬ（ロー）レベルとなる。
【００５６】
同時書き込み制御部５５は、フラッシュメモリＡ２１とフラッシュメモリＢ２２に同時にブロック番号の書き込み処理を行うシーケンサである。同時書き込み制御部５５には、２ｔｉｍｅｓ＿ｓｅｑ信号を反転した１ｔｉｍｅ＿ｓｅｑ信号と、ブロック制御レジスタ４６から出力されたｓｔａｒｔ＿ｐ信号とのアンド論理をとったｓｔａｒｔ＿１ｔｉｍｅ＿ｓｅｑ信号が供給される。また、同時書き込み制御部５５には、領域判定部５４から出力されたａｒｅａ＿ｊｕｄｇｅ信号が供給される。
【００５７】
無効ブロックと更新ブロックが異なるフラッシュメモリにある場合には、２ｔｉｍｅｓ＿ｓｅｑ信号が例えばＬ（ロー）レベルとなり、従って１ｔｉｍｅ＿ｓｅｑ信号が例えばＨ（ハイ）レベルとなる。そして、ｓｔａｒｔ＿ｐ信号が例えばＨ（ハイ）レベルになると、ｓｔａｒｔ＿１ｔｉｍｅ＿ｓｅｑ信号が例えばＨ（ハイ）レベルになり、同時書き込み制御部５５はフラッシュメモリへの書き込み信号であるｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号と、アドレスおよびデータの選択信号としてｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号およびｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号を生成する。
【００５８】
フラッシュメモリＡ２１またはフラッシュメモリＢ２２に対する書き込みサイクルが終了すると、同時書き込み制御部５５は、ｄｏｎｅ＿１ｔｉｍｅ＿ｓｅｑ信号を生成する。このｄｏｎｅ＿１ｔｉｍｅ＿ｓｅｑ信号は、ｄｏｎｅ＿ａｌｌ信号としてブロック制御レジスタ４６に供給される。同時書き込み制御部５５は、ｓｔａｒｔ＿１ｔｉｍｅ＿ｓｅｑ信号が例えばＬ（ロー）レベルである場合には、動作しない。
【００５９】
図６に、同時書き込み制御部５５のシーケンス動作を示す。図６のＩｄｌｅ状態、ステップＳ１およびステップＳ２において、ＷＲおよびｄｏｎｅは、それぞれｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号およびｄｏｎｅ＿１ｔｉｍｅ＿ｓｅｑ信号のことであり、それらの信号の値が１であるのはＨ（ハイ）レベルであり、０であるのはＬ（ロー）レベルである。
【００６０】
２回書き込み制御部５６は、フラッシュメモリＡ２１に対するブロック番号の書き込み処理とフラッシュメモリＢ２２に対するブロック番号の書き込み処理を分けて行うシーケンサである。２回書き込み制御部５６には、２ｔｉｍｅｓ＿ｓｅｑ信号と、ブロック制御レジスタ４６から出力されたｓｔａｒｔ＿ｐ信号とのアンド論理をとったｓｔａｒｔ＿２ｔｉｍｅｓ＿ｓｅｑ信号が供給される。また、２回書き込み制御部５６には、領域判定部５４から出力されたａｒｅａ＿ｊｕｄｇｅ信号が供給される。
【００６１】
無効ブロックと更新ブロックが同じフラッシュメモリにある場合には、２ｔｉｍｅｓ＿ｓｅｑ信号が例えばＨ（ハイ）レベルとなる。そして、ｓｔａｒｔ＿ｐ信号が例えばＨ（ハイ）レベルになると、ｓｔａｒｔ＿２ｔｉｍｅｓ＿ｓｅｑ信号が例えばＨ（ハイ）レベルになり、２回書き込み制御部５６はフラッシュメモリＡ２１またはフラッシュメモリＢ２２への書き込み信号であるｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号またはｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号と、アドレスおよびデータの選択信号としてｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号またはｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号を生成する。
【００６２】
ｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号とｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号は、ａｒｅａ＿ｊｕｄｇｅ信号が例えばＨ（ハイ）レベルであるときに生成される。ｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号とｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号は、ａｒｅａ＿ｊｕｄｇｅ信号が例えばＬ（ロー）レベルであるときに生成される。
【００６３】
フラッシュメモリＡ２１およびフラッシュメモリＢ２２に対する書き込みサイクルが終了すると、２回書き込み制御部５６は、ｄｏｎｅ＿２ｔｉｍｅｓ＿ｓｅｑ信号を生成する。このｄｏｎｅ＿２ｔｉｍｅｓ＿ｓｅｑ信号は、ｄｏｎｅ＿ａｌｌ信号としてブロック制御レジスタ４６に供給される。２回書き込み制御部５６は、ｓｔａｒｔ＿２ｔｉｍｅｓ＿ｓｅｑ信号が例えばＬ（ロー）レベルである場合には、動作しない。
【００６４】
図７に、２回書き込み制御部５６のシーケンス動作を示す。図７のＩｄｌｅ状態、ステップＳ１、ステップＳ２、ステップＳ３−１、ステップＳ３−２、ステップＳ４およびステップＳ５において、ｄｏｎｅは、ｄｏｎｅ＿２ｔｉｍｅｓ＿ｓｅｑ信号のことであり、ＷＲは、ｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号（無効ブロックがフラッシュメモリＡ２１にある場合）またはｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号（無効ブロックがフラッシュメモリＢ２２にある場合）である。
【００６５】
ステップＳ３−２のｓｅｌ信号切替は、ｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号（無効ブロックがフラッシュメモリＡ２１にある場合）またはｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号（無効ブロックがフラッシュメモリＢ２２にある場合）のＨ（ハイ）とＬ（ロー）のレベルの切り替えを意味する。これらの信号の値（０、１）の意味は、同時書き込み制御部５５の説明において述べた通りである。
【００６６】
同時書き込み制御部５５から出力されたｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号と２回書き込み制御部５６から出力されたｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号のいずれか一方が、マルチプレクサ５９において、領域判定部５４から出力された２ｔｉｍｅｓ＿ｓｅｑ信号に基づいて選択される。マルチプレクサ５９により選択された信号はマルチプレクサ５７，５８へ出力される。マルチプレクサ５７は、マルチプレクサ５９の出力信号に基づいて、無効ブロック番号のアドレスレジスタ４２および更新ブロック番号のアドレスレジスタ４４のそれぞれに格納されているアドレス値のいずれか一方を選択してＭＥＭ０−Ａ端子から出力する。
【００６７】
マルチプレクサ５８は、マルチプレクサ５９の出力信号に基づいて、無効ブロック番号のデータレジスタ４３および更新ブロック番号のデータレジスタ４５のそれぞれに格納されているデータのいずれか一方を選択してＭＥＭ０−Ｄ端子から出力する。マルチプレクサ６０は、２ｔｉｍｅｓ＿ｓｅｑ信号に基づいて、同時書き込み制御部５５から出力されたｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号と、２回書き込み制御部５６から出力されたｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号のいずれか一方を選択してＭＥＭ０−Ｗ端子から出力する。
【００６８】
また、同時書き込み制御部５５から出力されたｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号と２回書き込み制御部５６から出力されたｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号のいずれか一方が、マルチプレクサ６３において、領域判定部５４から出力された２ｔｉｍｅｓ＿ｓｅｑ信号に基づいて選択される。マルチプレクサ６３により選択された信号はマルチプレクサ６１，６２へ出力される。マルチプレクサ６１は、マルチプレクサ６３の出力信号に基づいて、無効ブロック番号のアドレスレジスタ４２および更新ブロック番号のアドレスレジスタ４４のそれぞれに格納されているアドレス値のいずれか一方を選択してＭＥＭ１−Ａ端子から出力する。
【００６９】
マルチプレクサ６２は、マルチプレクサ６３の出力信号に基づいて、無効ブロック番号のデータレジスタ４３および更新ブロック番号のデータレジスタ４５のそれぞれに格納されているデータのいずれか一方を選択してＭＥＭ１−Ｄ端子から出力する。マルチプレクサ６４は、２ｔｉｍｅｓ＿ｓｅｑ信号に基づいて、同時書き込み制御部５５から出力されたｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号と、２回書き込み制御部５６から出力されたｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号のいずれか一方を選択してＭＥＭ１−Ｗ端子から出力する。
【００７０】
２ｔｉｍｅｓ＿ｓｅｑ信号がＬ（ロー）レベルである場合、すなわち１ｔｉｍｅ＿ｓｅｑ信号がＨ（ハイ）レベルである場合には、ＭＥＭ０−Ｗ端子およびＭＥＭ１−Ｗ端子からｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号が出力される。その他の出力信号は、以下のようになる。
【００７１】
領域判定部５４から出力されたａｒｅａ＿ｊｕｄｇｅ信号がＨ（ハイ）レベルである場合には、ＭＥＭ０−Ａ端子、ＭＥＭ０−Ｄ端子、ＭＥＭ１−Ａ端子およびＭＥＭ１−Ｄ端子からそれぞれ無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値、無効ブロック番号のデータレジスタ４３に格納されているデータ、更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値、および更新ブロック番号のデータレジスタ４５に格納されているデータが出力される。ａｒｅａ＿ｊｕｄｇｅ信号がＬ（ロー）レベルである場合には、ＭＥＭ０−Ａ端子、ＭＥＭ０−Ｄ端子、ＭＥＭ１−Ａ端子およびＭＥＭ１−Ｄ端子からそれぞれ更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値、更新ブロック番号のデータレジスタ４５に格納されているデータ、無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値、および無効ブロック番号のデータレジスタ４３に格納されているデータが出力される。
【００７２】
２ｔｉｍｅｓ＿ｓｅｑ信号がＨ（ハイ）レベルである場合で、かつａｒｅａ＿ｊｕｄｇｅ信号がＨ（ハイ）レベルである場合には、まず無効ブロックのブロック番号を無効化するために、ＭＥＭ０−Ｗ端子、ＭＥＭ０−Ａ端子およびＭＥＭ０−Ｄ端子からそれぞれｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号、無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値および無効ブロック番号のデータレジスタ４３に格納されているデータが出力される。続いて、更新ブロックのブロック番号を更新するために、ＭＥＭ０−Ｗ端子、ＭＥＭ０−Ａ端子およびＭＥＭ０−Ｄ端子からそれぞれｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号、更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値および更新ブロック番号のデータレジスタ４５に格納されているデータが出力される。
【００７３】
２ｔｉｍｅｓ＿ｓｅｑ信号がＨ（ハイ）レベルである場合で、かつａｒｅａ＿ｊｕｄｇｅ信号がＬ（ロー）レベルである場合には、まず無効ブロックのブロック番号を無効化するために、ＭＥＭ１−Ｗ端子、ＭＥＭ１−Ａ端子およびＭＥＭ１−Ｄ端子からそれぞれｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号、無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値および無効ブロック番号のデータレジスタ４３に格納されているデータが出力される。続いて、更新ブロックのブロック番号を更新するために、ＭＥＭ１−Ｗ端子、ＭＥＭ１−Ａ端子およびＭＥＭ１−Ｄ端子からそれぞれｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号、更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値および更新ブロック番号のデータレジスタ４５に格納されているデータが出力される。
【００７４】
次に、リセット制御部２５について詳細に説明する。図８は、リセット制御部の構成を示すブロック図である。図８に示すように、リセット制御部２５は、フリップフロップ７１とリセット判断部７２を備えている。フリップフロップ７１は、外部リセット端子であるＩＮＩＴＸ端子７３を介して外部から入力された外部リセット信号を内部クロックに同期したＩＮＩＴＸＤ信号とする。リセット判断部７２は、ＩＮＩＴＸＤ信号とＲＤＹ信号に基づいて、内部リセット信号ＲＳＴＸを出力する。
【００７５】
図９は、リセット判断部の動作状態の遷移を説明するための状態遷移図である。リセット判断部７２は、内部リセットがオフであるとき、すなわち内部リセット信号ＲＳＴＸが例えば１（Ｈ（ハイ）レベル）であるときに、外部リセット信号が例えば０（Ｌ（ロー）レベル）となり、それが内部クロックにサンプリングされてＩＮＩＴＸＤ信号が例えば１（Ｈ（ハイ）レベル）になると、ＲＤＹ信号に基づいてＣＰＵ２３がアクセス中であるか否かを判断する。
【００７６】
そして、リセット判断部７２は、ＲＤＹ信号が例えば１（Ｈ（ハイ）レベル）であれば、内部リセット信号ＲＳＴＸを例えば０（Ｌ（ロー）レベル）とし、内部リセットをオンにする。リセット判断部７２は、内部リセットがオンになった状態で、外部リセット信号が例えば１（Ｈ（ハイ）レベル）になると、内部リセットをオフにする。
【００７７】
次に、無効ブロックと更新ブロックが異なるフラッシュメモリにある場合のデータ更新手順について説明する。ここでは、ＣＰＵ２３がデータの更新処理を行うものとして説明するが、ＤＭＡＣ２４がデータの更新処理を行う場合も同様である。
【００７８】
まず、ＣＰＵ２３は、フラッシュメモリＢ２２内の未使用領域にあるブロックを交替用ブロックとして用意する。未使用のブロックのブロック番号は、例えば"ＦＦｈ"である。次いで、ＣＰＵ２３は、フラッシュメモリＡ２１の無効ブロックに格納されているデータのうち、更新しないデータ部分を読み出して、用意したフラッシュメモリＢ２２の交替用ブロックの対応箇所に書き込む。
【００７９】
次いで、ＣＰＵ２３は、更新するデータ部分を交替用ブロックの対応箇所に書き込む。なお、一旦、ランダムアクセスメモリ（ＲＡＭ）などの別のメモリに更新しないデータ部分と更新するデータ部分を書き込み、一括してそのメモリから交替用ブロックに更新後のデータを書き込んでもよい。
【００８０】
次いで、ＣＰＵ２３は、ブロック制御部２７の無効ブロック番号のアドレスレジスタ４２、無効ブロック番号のデータレジスタ４３、更新ブロック番号のアドレスレジスタ４４および更新ブロック番号のデータレジスタ４５の設定を行う。これらのレジスタの値が設定されると、ブロック制御部２７の領域判定部５４は、フラッシュメモリＡの開始アドレスレジスタ５１、フラッシュメモリＢの開始アドレスレジスタ５２およびフラッシュメモリＡ，Ｂの容量レジスタ５３に設定されている固定値に基づいて、無効ブロックと交替用ブロックがフラッシュメモリＡ２１とフラッシュメモリＢ２２のどちらにあるのかを判定する。
【００８１】
ここでは、上述したように、無効ブロックがフラッシュメモリＡ２１にあり、交替用ブロックがフラッシュメモリＢ２２にある。この判定結果から、２ｔｉｍｅｓ＿ｓｅｑ信号とａｒｅａ＿ｊｕｄｇｅ信号のレベルが決定される。これ以降の動作については、図１０のタイミングチャートを参照しながら説明する。ここでは、同時書き込み処理が実行されるので、図１０には、２ｔｉｍｅｓ＿ｓｅｑ信号の代わりに、その反転信号である１ｔｉｍｅ＿ｓｅｑ信号が示されている。
【００８２】
２ｔｉｍｅｓ＿ｓｅｑ信号がＬ（ロー）レベル、すなわち１ｔｉｍｅ＿ｓｅｑ信号がＨ（ハイ）レベルとなり、またａｒｅａ＿ｊｕｄｇｅ信号がＨ（ハイ）レベルになった後、ＣＰＵ２３は、ブロック制御部２７にアクセスし、ブロック制御レジスタ４６のＷビットに１を書き込む。ブロック制御レジスタ４６は、Ｗビットに１が書き込まれたことを検出して、ｓｔａｒｔ＿ｐ信号を発生する。このｓｔａｒｔ＿ｐ信号と２ｔｉｍｅｓ＿ｓｅｑ信号とのアンド論理、およびｓｔａｒｔ＿ｐ信号と１ｔｉｍｅ＿ｓｅｑ信号とのアンド論理をとった結果、ここでは、同時書き込み制御部５５が起動する。
【００８３】
そして、同時書き込み制御部５５は、図６に示すシーケンス制御を実行し、図１０に示すように、ｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号とｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号とｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号を出力する。なお、図１０では、ｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号とｆｌａｓｈ１＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号をまとめてｆｌａｓｈ＿ａ＿ｄ＿ｓｅｌ＿１ｔｉｍｅ信号として表している。
【００８４】
同時書き込み制御部５５から出力された信号と２ｔｉｍｅｓ＿ｓｅｑ信号によって、マルチプレクサ５７〜６４が制御される。そして、ＭＥＭ０−Ａ端子、ＭＥＭ０−Ｄ端子、ＭＥＭ０−Ｗ、ＭＥＭ１−Ａ端子、ＭＥＭ１−Ｄ端子およびＭＥＭ１−Ｗ端子からそれぞれ無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値、無効ブロック番号のデータレジスタ４３に格納されているデータ、ｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号、更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値、更新ブロック番号のデータレジスタ４５に格納されているデータ、およびｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号が出力される。
【００８５】
それによって、無効ブロックのブロック番号に、無効を表す値（例えば、"００ｈ"）が書き込まれるとともに、交替用ブロックのブロック番号に、無効ブロックの元のブロック番号が書き込まれ、交替用ブロックが更新ブロックとして有効になる。次いで、同時書き込み制御部５５は、ｄｏｎｅ＿１ｔｉｍｅ＿ｓｅｑ信号を発生する。ブロック制御レジスタ４６は、ｄｏｎｅ＿１ｔｉｍｅ＿ｓｅｑ信号の発生を受けて、バス２６へＲＤＹ信号を出力する。それによって、ＣＰＵサイクルが終了する。
【００８６】
なお、無効ブロックがフラッシュメモリＢ２２にあるときは、ａｒｅａ＿ｊｕｄｇｅ信号はＬ（ロー）レベルとなる。そして、ＭＥＭ０−Ａ端子、ＭＥＭ０−Ｄ端子、ＭＥＭ０−Ｗ、ＭＥＭ１−Ａ端子、ＭＥＭ１−Ｄ端子およびＭＥＭ１−Ｗ端子からそれぞれ更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値、更新ブロック番号のデータレジスタ４５に格納されているデータ、ｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号、無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値、無効ブロック番号のデータレジスタ４３に格納されているデータおよびｆｌａｓｈ０１＿ｗｒ＿１ｔｉｍｅ信号が出力される。
【００８７】
次に、無効ブロックと更新ブロックが同じフラッシュメモリにある場合のデータ更新手順について説明する。ここでは、ＣＰＵ２３がデータの更新処理を行うものとして説明するが、ＤＭＡＣ２４がデータの更新処理を行う場合も同様である。
【００８８】
まず、ＣＰＵ２３は、フラッシュメモリＡ２１内の未使用領域にあるブロック（ブロック番号は、例えば"ＦＦｈ"である）を交替用ブロックとして用意する。次いで、ＣＰＵ２３は、フラッシュメモリＡ２１の無効ブロックに格納されているデータのうち、更新しないデータ部分を読み出して、用意した交替用ブロックの対応箇所に書き込む。次いで、ＣＰＵ３は、更新するデータ部分を交替用ブロックの対応箇所に書き込む。なお、上述した同時書き込みの場合と同様に、別のメモリを介してデータの更新を行ってもよい。
【００８９】
次いで、ＣＰＵ２３は、ブロック制御部２７の無効ブロック番号のアドレスレジスタ４２、無効ブロック番号のデータレジスタ４３、更新ブロック番号のアドレスレジスタ４４および更新ブロック番号のデータレジスタ４５の設定を行う。そして、ブロック制御部２７の領域判定部５４は、無効ブロックと交替用ブロックがフラッシュメモリＡ２１とフラッシュメモリＢ２２のどちらにあるのかを判定する。
【００９０】
ここでは、上述したように、無効ブロックも交替用ブロックもフラッシュメモリＡ２１にある。この判定結果から、２ｔｉｍｅｓ＿ｓｅｑ信号とａｒｅａ＿ｊｕｄｇｅ信号のレベルが決定される。これ以降の動作については、図１１のタイミングチャートを参照しながら説明する。
【００９１】
２ｔｉｍｅｓ＿ｓｅｑ信号がＨ（ハイ）レベルとなり、またａｒｅａ＿ｊｕｄｇｅ信号がＨ（ハイ）レベルになった後、ＣＰＵ２３は、ブロック制御部２７にアクセスし、ブロック制御レジスタ４６のＷビットに１を書き込む。それによって、ブロック制御レジスタ４６からｓｔａｒｔ＿ｐ信号が出力される。このｓｔａｒｔ＿ｐ信号と２ｔｉｍｅｓ＿ｓｅｑ信号とのアンド論理、およびｓｔａｒｔ＿ｐ信号と１ｔｉｍｅ＿ｓｅｑ信号とのアンド論理をとった結果、ここでは、２回書き込み制御部５６が起動する。
【００９２】
２回書き込み制御部５６は、図７に示すシーケンス制御を実行し、図１１に示すように、ｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号とｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号を出力する。なお、図１１では、ｆｌａｓｈ０＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号は、ｆｌａｓｈ＿ａ＿ｄ＿ｓｅｌ＿２ｔｉｍｅｓ信号として表されている。
【００９３】
２回書き込み制御部５６から出力された信号と２ｔｉｍｅｓ＿ｓｅｑ信号によって、マルチプレクサ５７〜６０が制御される。そして、ＭＥＭ０−Ａ端子、ＭＥＭ０−Ｄ端子およびＭＥＭ０−Ｗ端子からそれぞれ、まず、無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値、無効ブロック番号のデータレジスタ４３に格納されているデータ、ｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号が出力され、続いて、更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値、更新ブロック番号のデータレジスタ４５に格納されているデータ、およびｆｌａｓｈ０＿ｗｒ＿２ｔｉｍｅｓ信号が出力される。
【００９４】
それによって、無効ブロックのブロック番号に、無効を表す値（例えば、"００ｈ"）が書き込まれるとともに、交替用ブロックのブロック番号に、無効ブロックの元のブロック番号が書き込まれ、交替用ブロックが更新ブロックとして有効になる。次いで、２回書き込み制御部５６は、ｄｏｎｅ＿２ｔｉｍｅｓ＿ｓｅｑ信号を発生する。ブロック制御レジスタ４６は、ｄｏｎｅ＿２ｔｉｍｅｓ＿ｓｅｑ信号の発生を受けて、バス２６へＲＤＹ信号を出力する。それによって、ＣＰＵサイクルが終了する。
【００９５】
なお、無効ブロックがフラッシュメモリＢ２２にあるときは、ａｒｅａ＿ｊｕｄｇｅ信号はＬ（ロー）レベルとなる。そして、ＭＥＭ１−Ａ端子、ＭＥＭ１−Ｄ端子およびＭＥＭ１−Ｗ端子からそれぞれ、まず、無効ブロック番号のアドレスレジスタ４２に格納されているアドレス値、無効ブロック番号のデータレジスタ４３に格納されているデータ、ｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号が出力され、続いて、更新ブロック番号のアドレスレジスタ４４に格納されているアドレス値、更新ブロック番号のデータレジスタ４５に格納されているデータ、およびｆｌａｓｈ１＿ｗｒ＿２ｔｉｍｅｓ信号が出力される。
【００９６】
以上説明したように、実施の形態によれば、フラッシュメモリに記憶されているデータを更新する際に、更新ブロックのブロック番号領域に、無効ブロックの元のブロック番号の値を書き込む前に外部リセット信号が入力しても、更新ブロックのブロック番号領域への書き込みが終了してから内部リセットがかかるので、更新ブロックのブロック番号領域に無効ブロックの元のブロック番号の値を書き込めないことが原因でデータを失うことを防ぐことができる。従って、フラッシュメモリに記憶されているデータを安全に更新することができる。
【００９７】
以上において本発明は、上述した実施の形態に限らず、種々変更可能である。また、本発明は、フラッシュメモリの代わりにＦＲＡＭやその他の書き換え可能な不揮発性メモリを用いた場合にも適用可能であり、フラッシュメモリを用いた場合と同様の効果が得られる。
【００９８】
（付記１）ブロック番号領域とデータ領域を有する複数のブロックを備えた書き換え可能な不揮発性メモリと、前記不揮発性メモリにアクセスして同不揮発性メモリの第１のブロックのデータ領域に記憶されているデータを読み出し、該読み出しデータを更新して同不揮発性メモリの未使用である第２のブロックのデータ領域に書き込むメモリアクセス装置と、前記メモリアクセス装置によるデータの読み出しおよび書き込みの処理が終了した後に、前記メモリアクセス装置によるアクセスをトリガーとして、前記第１のブロックのブロック領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むとともに、前記第２のブロックのブロック領域に、前記第１のブロックの元のブロック番号の値を書き込むブロック番号更新処理を、前記メモリアクセス装置の１アクセスサイクル内で行うブロック制御部と、前記メモリアクセス装置によるアクセスサイクル中には内部リセットをかけずに、前記メモリアクセス装置によるアクセスサイクルが切れたときに内部リセットをかけるリセット制御部と、を備えることを特徴とするデータ処理装置。
【００９９】
（付記２）前記ブロック制御部が、前記第１のブロックの開始アドレスを保持する無効ブロック番号のアドレスレジスタと、前記第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を保持する無効ブロック番号のデータレジスタと、前記第２のブロックの開始アドレスを保持する更新ブロック番号のアドレスレジスタと、前記第１のブロックの元のブロック番号の値を保持する更新ブロック番号のデータレジスタと、前記無効ブロック番号のアドレスレジスタに保持されている値と前記無効ブロック番号のデータレジスタに保持されている値を出力して、前記第１のブロックのブロック番号領域に対する書き込み処理を行った後に、前記更新ブロック番号のアドレスレジスタに保持されている値と前記更新ブロック番号のデータレジスタに保持されている値を出力して、前記第２のブロックのブロック番号領域に対する書き込み処理を行う２回書き込み制御部と、前記２回書き込み制御部による２回目の書き込み処理が終了した時点で、前記メモリアクセス装置によるアクセスサイクルを終了させるブロック制御レジスタと、を備えることを特徴とする付記１に記載のデータ処理装置。
【０１００】
（付記３）ブロック番号領域とデータ領域を有する複数のブロックを備えた第１の書き換え可能な不揮発性メモリと、ブロック番号領域とデータ領域を有する複数のブロックを備えた第２の書き換え可能な不揮発性メモリと、前記第１の不揮発性メモリにアクセスして同第１の不揮発性メモリの第１のブロックのデータ領域に記憶されているデータを読み出し、該読み出しデータを更新し、前記第２の不揮発性メモリにアクセスして同第２の不揮発性メモリの未使用である第２のブロックのデータ領域に書き込むメモリアクセス装置と、前記メモリアクセス装置によるデータの読み出しおよび書き込みの処理が終了した後に、前記メモリアクセス装置によるアクセスをトリガーとして、前記第１のブロックのブロック領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むとともに、前記第２のブロックのブロック領域に、前記第１のブロックの元のブロック番号の値を書き込むブロック番号更新処理を、前記メモリアクセス装置による１アクセスサイクル内で行うブロック制御部と、前記メモリアクセス装置によるアクセスサイクル中には内部リセットをかけずに、前記メモリアクセス装置によるアクセスサイクルが切れたときに内部リセットをかけるリセット制御部と、を備えることを特徴とするデータ処理装置。
【０１０１】
（付記４）前記ブロック制御部が、前記第１のブロックの開始アドレスを保持する無効ブロック番号のアドレスレジスタと、前記第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を保持する無効ブロック番号のデータレジスタと、前記第２のブロックの開始アドレスを保持する更新ブロック番号のアドレスレジスタと、前記第１のブロックの元のブロック番号の値を保持する更新ブロック番号のデータレジスタと、前記無効ブロック番号のアドレスレジスタに保持されている値と前記無効ブロック番号のデータレジスタに保持されている値と前記更新ブロック番号のアドレスレジスタに保持されている値と前記更新ブロック番号のデータレジスタに保持されている値を出力して、前記第１のブロックのブロック番号領域に対する書き込み処理と前記第２のブロックのブロック番号領域に対する書き込み処理を同時に行う同時書き込み制御部と、前記同時書き込み制御部による書き込み処理が終了した時点で、前記メモリアクセス装置によるアクセスサイクルを終了させるブロック制御レジスタと、を備えることを特徴とする付記３に記載のデータ処理装置。
【０１０２】
（付記５）前記書き換え可能な不揮発性メモリは、電気的に一括消去・書き換え可能な不揮発性メモリでありことを特徴とする付記１〜４のいずれか一つに記載のデータ処理装置。
【０１０３】
（付記６）前記書き換え可能な不揮発性メモリは、不揮発性強誘電体メモリであることを特徴とする付記１〜４のいずれか一つに記載のデータ処理装置。
【０１０４】
（付記７）前記メモリアクセス装置は、中央処理装置であることを特徴とする付記１〜６のいずれか一つに記載のデータ処理装置。
【０１０５】
（付記８）前記メモリアクセス装置は、ダイレクトメモリアクセスコントローラであることを特徴とする付記１〜６のいずれか一つに記載のデータ処理装置。
【０１０６】
（付記９）ブロック番号領域とデータ領域からなる複数のブロックを有する書き換え可能な不揮発性メモリの第１のブロックのデータ領域に記憶されているデータを更新するにあたって、前記第１のブロックのデータ領域に記憶されているデータを読み出し、該読み出しデータを更新したデータを未使用である第２のブロックのデータ領域に書き込むステップと、前記第２のブロックのデータ領域への書き込み処理が終了した後に、前記第１のブロックのブロック領域に、同第１のブロックのデータ領域に記憶されているデータが有効でないことを表す値を書き込むとともに、前記第２のブロックのブロック領域に、前記第１のブロックの元のブロック番号の値を書き込むブロック番号更新処理を１アクセスサイクル内で行うステップと、を含むことを特徴とするデータ処理方法。
【０１０７】
（付記１０）前記第１のブロックと前記第２のブロックが同じ書き換え可能な不揮発性メモリのブロックであることを特徴とする付記９に記載のデータ処理方法。
【０１０８】
（付記１１）前記第１のブロックと前記第２のブロックが異なる書き換え可能な不揮発性メモリのブロックであることを特徴とする付記９に記載のデータ処理方法。
【産業上の利用可能性】
【０１０９】
以上のように、本発明にかかるデータ処理装置およびデータ処理方法は、書き換え可能な不揮発性メモリに保存されているデータの書き換え処理を行うデータ処理装置およびデータ処理方法に有用であり、特に、書き換え可能な不揮発性メモリとしてフラッシュメモリを有するコンピュータおよびその周辺機器、デジタルカメラ、携帯電話機、携帯型デジタル音楽再生機、または医療用や放送局用の産業用機器などに適している。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施の形態にかかるデータ処理装置の構成を示すブロック図である。
【図２】ブロック制御部のレジスタの構成を示す模式図である。
【図３】無効ブロックと更新ブロックが異なるメモリに存在する場合を示す概略図である。
【図４】無効ブロックと更新ブロックが同じメモリに存在する場合を示す概略図である。
【図５】ブロック制御部の構成を示すブロック図である。
【図６】同時書き込み制御部の動作を示すシーケンス図である。
【図７】２回書き込み制御部の動作を示すシーケンス図である。
【図８】リセット制御部の構成を示すブロック図である。
【図９】リセット判断部の動作状態の遷移を説明するための状態遷移図である。
【図１０】同時書き込みを行う場合のブロック番号の更新タイミングを説明するタイミングチャートである。
【図１１】２回書き込みを行う場合のブロック番号の更新タイミングを説明するタイミングチャートである。
【図１２】従来のデータ処理装置の構成を示すブロック図である。
【図１３】フラッシュメモリのブロックのフォーマットを示す模式図である。
【符号の説明】
【０１１１】
２１，２２  フラッシュメモリ
２３  メモリアクセス装置（ＣＰＵ）
２４  メモリアクセス装置（ＤＭＡＣ）
２７  ブロック制御部
４２  無効ブロック番号のアドレスレジスタ
４３  無効ブロック番号のデータレジスタ
４４  更新ブロック番号のアドレスレジスタ
４５  更新ブロック番号のデータレジスタ
４６  ブロック制御レジスタ
４７  第１のブロック
４８  第２のブロック
【図１】
2007148834.tif 000003
【図２】
2007148834.tif 000004
【図３】
2007148834.tif 000005
【図４】
2007148834.tif 000006
【図５】
2007148834.tif 000007
【図６】
2007148834.tif 000008
【図７】
2007148834.tif 000009
【図８】
2007148834.tif 000010
【図９】
2007148834.tif 000011
【図１０】
2007148834.tif 000012
【図１１】
2007148834.tif 000013
【図１２】
2007148834.tif 000014
【図１３】
2007148834.tif 000015