(57)【要約】【課題】フラッシュROMを搭載した半導体集積回路において、フラッシュROMのセクタを２つ以上使用しEEPROM機能を実現するに当たり、書き込み要求受理時に書き込み対象セクタがデータで埋め尽くされていると、転送が完了するまで書き込みが実行できない。【解決手段】書き込み対象セクタの全領域を使用せず、データ領域と余裕領域とにあらかじめ設定しておく。かかる構成により、データ領域が空いている場合はそのままデータ領域にデータを書き込むが、データ領域が全て埋め尽くされている場合は、余裕領域と転送先領域の両方に同一のデータを書き込み、更新を行なう。更新時に、書き込み要求が発生した場合は更新を停止し、余裕領域と転送先領域の両方に同一のデータを書き込み、セクタ転送を再開する。【選択図】図２
2009238112.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを有する半導体集積回路であって、
前記フラッシュメモリはプログラム領域の他に２つ以上のブロックを有し、
前記半導体集積回路は電源を落とされた場合にも保持すべきデータをブロックに書込む手段と、
前記フラッシュメモリは前記ブロックが埋め尽くされると別のブロックに最新データを転送する手段と、
前記データが埋め尽くされたブロックのデータを消去する手段とを備え、
前記ブロックは、データ領域と、前記転送する手段に必要な時間と書込み手段の発生頻度を基に算出された余裕領域とに分割されており、前記転送する手段と前記書込む手段とを平行して実現することのできる半導体集積回路。
【請求項２】
請求項１の半導体集積回路を備えた家電製品。
【請求項３】
２つ以上のセクタを有し、各セクタは、データ領域と余裕領域とからなるフラッシュROM。
【請求項４】
前記余裕領域の大きさを設定する領域設定用アドレスを備えた請求項３記載のフラッシュROM。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、EEPROMをマイコン内蔵のフラッシュROMで代用する半導体集積回路であって、特にデータの書換え方法に関するものである。
【背景技術】
【０００２】
マイコンのフラッシュROM化が進み，従来外部に備えていたEEPROMを、マイコンに内蔵のフラッシュROMで代用するケースが増加している。
【０００３】
フラッシュROMによるEEPROM機能の代用は、冷蔵庫やエアコンなどの家電製品で使用され始めている。用途は主に、運転時間の累計や、故障発生時のシステム環境を保持し、製品修理時などの解析に利用される。
【０００４】
ここで、フラッシュROMについての説明を行う。フラッシュROMは、図６のように、複数のセクタ３００で構成され、それぞれのセクタ３００は一定量のROM領域３０１を有する。
【０００５】
また、フラッシュROMの動作特徴として、フラッシュROMへの書き込みは１byte単位の書き込みが可能であるが、消去は１セクタ単位でしか実施することができない。よって、書き込んだデータの書き換えは、一旦書き換え対象のセクタ全体のデータを退避した上でデータの書き換えを行い、さらに書き換え対象のセクタ全体を一度消去してから、データの書き換えを終えた１セクタ分のデータをフラッシュROMへ書き込む必要があり、タスクと書込み回数の制限から現実的ではない。そのため、あるデータが更新されてデータ内容を書き換える場合は、空き領域に重複してデータを書き込み、データを読み込む際には重複して書き込んだデータのうち、最後に書き込まれたデータを読み取ることで実現している。
【０００６】
フラッシュROMによるEEPROM機能の代用は、ROM領域３０１内に、ヘッダ領域３０２とデータ領域３０３とを構成することで実現する。ヘッダ領域３０２は使用中状態、使用済み状態、ブランク状態の３つの状態を持つことで、EEPROM機能の制御を行なっている。
【０００７】
図７において、書き込み要求データ４００を書き込む場合、ヘッダ領域４０３が使用中のセクタ４０１に書き込める空き領域が存在すれば，セクタ４０１の空き領域にデータ４００を書き込む。このとき、ヘッダ領域４０４がブランクのセクタ４０２には何の操作も発生しない。
【０００８】
図８は、上記動作を複数回繰り返した後、書き込み要求データ４１０が発生した場合を示している。ヘッダ領域４０３が使用中のセクタ４０１に空き領域が存在しなければ、書き込み要求データ４１０はセクタ４０１へは書き込むことはできない。そのため、データの消去が必要となるが、フラッシュROMの特性として前に述べたようにセクタ単位での消去しか実施できないため、書き込んだデータをすべて消去する必要がある。そのため、消去を実行する前に、別のセクタへ最新のデータを転送することで最新のデータのみを保持している。
【０００９】
ヘッダ領域４０４がブランク状態のセクタ４０２にセクタ４０１の最新データのみを転送するが、このとき転送するデータはアドレスの後方より先に発見されたデータのみ転送すればよい。すなわち、あるデータが更新されてデータ内容を書き換える場合は、空き領域に重複してデータを書き込み、データを読み込む際には重複して書き込んだデータのうち、最後に書き込まれたデータを読み取ることで実現している。
【００１０】
従来、EEPROMを使用していた場合、あるアドレスに、例えば累積運転時間(No.1)というデータを上書きすることが可能であった。フラッシュROMでは、任意のアドレスに配置されるデータだけ変更するというのは難しいため、累積運転時間(No.1)というデータを書き込む場合、決められたアドレスに書き込むのではなく、No.1というような認識番号を用いて、空いているアドレスに順次書き込みを行う。よって、累積運転時間(No.1)を表すデータが、古い順に、セクタの先頭から存在することになる。つまり、セクタの最後尾からサーチし、最初に発見されたNo.1が最新のデータ(保持すべきデータ)となる。その他のデータは旧データとなるため、保持する必要はない。
【００１１】
セクタ４０１の最新データの転送が完了すると、書き込み要求データ４１０を書き込む。その際、セクタ４０１のヘッダ領域４０３を使用済みに変更し、セクタ４０２のヘッダ領域４０４を使用中に変更する。
【００１２】
ヘッダ領域４０３が使用済みとなったセクタ４０１は消去動作を実施し、消去完了後ヘッダ領域をブランクへ変更する。
【００１３】
ところで、図８のデータ転送方法では、データ４１０の書き込みは、セクタ４０１のデータ転送が完了し、セクタ２０２のヘッダ領域が使用中に変更されてから書き込まれる。この間、データの書き込みは行なわれず、新たにデータを書き込もうとしても、実行できない。
【００１４】
また、図９のように、データ４２０をヘッダ領域４０４がブランクのものに書き込み、後からセクタ４０１の最新データを転送しようとしても、転送途中に障害、例えば瞬低のような現象が発生すれば、セクタ４０１、セクタ４０２のどちらにも最新の状態が保持されず復旧した際に、障害発生前の状態を戻すことは難しくなる。また、上記動作の安全性を考え、補助電源等、例えばコンデンサのようなものを用い瞬低対策を行う場合、データ転送が完了するまでの時間を保証しなければならない。
【００１５】
そこで、特許文献１のように、使用するセクタのうち一つ以上を余分に使用することで、使用中セクタが全て書き込まれた状態であっても、上記余分セクタに一時データとして格納し、システムが十分な時間を確保できたタイミングでデータ転送を行なうことで、上記課題を解決しようとしていた。
【特許文献１】特開平９−９７２０７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかし、特許文献１のような方法では、転送に必要な十分な時間をシステムが確保する必要があるため、十分な時間を確保できないシステムには適用することはできない。
【００１７】
また、余分セクタに１byteでもデータが書き込まれれば、消去時に余分に１セクタの消去を行わなければならない。その上、瞬低発生時には上記動作の安全性を考え、補助電源等、例えばコンデンサのようなものを用い瞬低対策を行う場合、データ転送が完了するまでの時間を保証しなければならないため、システムに実装されるコンデンサの容量を、従来の容量よりも大きくする必要がある。また、この保証時間はセクタの大きさに比例し増加するため、セクタが大きいほど，容量も大きくする必要がある。また、データ転送が完了するまでの時間を待つことができないシステムには適用できなかった。
【課題を解決するための手段】
【００１８】
本発明の半導体集積回路は、フラッシュメモリを有する半導体集積回路であって、前記フラッシュメモリはプログラム領域の他に２つ以上のブロックを有し、前記半導体集積回路は電源を落とされた場合にも保持すべきデータをブロックに書込む手段と、前記フラッシュメモリは前記ブロックが埋め尽くされると別のブロックに最新データを転送する手段と、前記データが埋め尽くされたブロックのデータを消去する手段とを備え、前記ブロックは、データ領域と、前記転送する手段に必要な時間と書込み手段の発生頻度を基に算出された余裕領域とに分割されており、前記転送する手段と前記書込む手段とを平行して実現することのできるものである。
【００１９】
本発明の半導体集積回路によると、フラッシュROMを構成する複数のセクタのうち２つ以上を使用するシステムを構成し、各セクタをデータ領域と余裕領域とに区別することで、セクタが全て書き込まれた状態、またはデータ転送を行なっている最中であっても書き込み要求を即座に受理し、フラッシュROMに書き込むことができる。
【００２０】
これによれば、データ領域が全て埋め尽くされセクタ転送が開始している場合であっても、転送を一時停止し、余裕領域と転送先領域の両方に同一のデータを書き込むことで、瞬低発生など、マイコンがリセットされた場合にも、転送元のセクタには最新の情報を含む全てのデータを保持することができる。
【発明の効果】
【００２１】
本発明半導体集積回路によると、フラッシュROMを用いたEEPROM機能を実装できるシステムが大幅に増え、さらに瞬低対策のために使用する補助電源、例えばコンデンサの容量を大きくする必要がなくなる。
【発明を実施するための最良の形態】
【００２２】
（第１の実施形態）
まず、本発明の半導体集積回路の構成について説明する。
【００２３】
半導体集積回路は、フラッシュメモリ（フラッシュROM）を有し、フラッシュメモリはプログラム領域の他に２つ以上のブロック（セクタ）を有する。
【００２４】
また、半導体集積回路は、電源を落とされた場合にも保持すべきデータをブロックに書込む手段を備える。この電源を落とされた場合にも保持すべきデータをブロックに書込む手段は、半導体集積回路内の書換え対象以外のメモリに書換えプログラムを有し、半導体集積回路内の書き込み対象のフラッシュメモリに対して書き込みコマンドを発行することで実現する。
【００２５】
また、フラッシュメモリは、ブロックが埋め尽くされると別のブロックに最新データを転送する手段を備える。このブロックが埋め尽くされると別のブロックに最新データを転送する手段は、埋め尽くされたブロックをサーチし、保持すべきデータだけを、その他の任意のブロックにコピー（転送）する。そして、半導体集積回路内の書換え対象以外のメモリに書換えプログラムを有し、半導体集積回路内の書き込み対象のフラッシュメモリに対して書き込みコマンドを発行することで実現する。
【００２６】
また、データが埋め尽くされたブロックのデータを消去する手段を備える。このデータが埋め尽くされたブロックのデータを消去する手段は、半導体集積回路内の書換え対象以外のメモリに消去プログラムを有し、半導体集積回路内の書き込み対象のフラッシュメモリに対して消去コマンドを発行することで実現する。
【００２７】
ブロックは、データ領域と、転送する手段に必要な時間と書込み手段の発生頻度を基に算出された十分な余裕領域とに分割されており、転送する手段と書込む手段とを平行して実現する構成となっている。
【００２８】
次に、本発明の第１の実施形態におけるフラッシュROMによるEEPROM機能の代用の実現方法を図１ないし図３に基づいて説明する。
【００２９】
あるフラッシュROMを構成するセクタ１０１，１０２を用い、各セクタをヘッダ領域１０３，１０４、データ領域１０５，１０６、余裕領域１０７，１０８を定義している。なおセクタ１０１のヘッダ領域１０３が使用中、セクタ１０２のヘッダ領域１０４がブランクであり、書き込み要求データ１００が発生しているとする。
【００３０】
図１のように、データ領域１０５に空き領域があれば、空き領域の先頭に書き込み要求データ１００を書き込む。書き込みを複数回実施し、図２のように、セクタ１０１のデータ領域１０５がすべて埋め尽くされている状態で書き込み要求データ１１０が発生すると、セクタ１０１の余裕領域１０７に書き込み要求データ１１０を図２(1)−１のように書き込むと同時に、セクタ１０２のデータ領域１０６に書き込み要求データ１１０を図２(1)−２のように書き込む。書き込み要求データ１１０を書き込んだ後は、セクタ１０１のデータ領域１０５に保持されている最新データを、セクタ１０２のデータ領域１０６へ順に図２の(2),(3),(4),(5)のように転送する。このとき、書き込み要求１１０で書き込んだデータは最新データであり、セクタ１０１のデータ領域１０５に残ったデータは旧データとなるため転送しない。なお、図２中「×」で示した部分は、図２(2)の転送に際して書き込み要求データ１１０が書き込まれたデータ領域１０６の次にデータ（No.0）が書き込まれ、また書き込み要求データ１１０の旧データに相当するデータ（No.3）は書き込まずに次のデータ（No.4）を書き込むことを表している。
【００３１】
また、図３のように、データ転送中に書き込み要求データ１２０が発生した場合、一旦データ転送を停止し、セクタ１０１の余裕領域１０７、ならびにセクタ１０２のデータ領域１０６へ、書き込み要求データ１２０を図３(6)−１，(6)−２のように書き込む。書き込みが完了した際にデータ転送を再開し、図３の(7)のように転送を実施する。なお、図３中「×」で示した部分は、書き込み要求データ１２０が書き込まれた箇所は避けて次の領域に書き込むことを表している。転送完了後は、セクタ１０２に全てのデータが転送されたため、セクタ１０１のヘッダ１０３を使用済みとし、セクタ１０２のヘッダ１０４を使用中に変更する。セクタ１０１は使用済みとなるため、消去してかまわない。セクタ１０２のデータ領域１０６が全て埋め尽くされると、同様にして、ブランクセクタにデータを転送し、フラッシュROMによるEEPROM代用の機能を実現する。
【００３２】
図１〜図３のように、フラッシュROMのセクタ１０１，１０２をあらかじめデータ領域１０５，１０６、余裕領域１０７，１０８に定義しておくことで、データ領域１０５，１０６が埋め尽くされた状態であっても、セクタ１０１，１０２間の転送を待つことなくデータの書き込みを行うことができ、さらにセクタ１０１の余裕領域１０７とセクタ１０２のデータ領域１０６とにデータを書き込むことで、データ転送途中に障害、例えば瞬低のような現象が発生しても、必ずどちらかのセクタ１０１，１０２には最新のデータが更新されているため、復旧時の保証が簡単となる。
【００３３】
（第２の実施形態）
第１の実施形態において、セクタ１０１の余裕領域１０７とセクタ１０２の余裕領域１０８を制御する領域設定用アドレス１３０を備えたフラッシュROMを図４に示す。
【００３４】
領域設定用アドレス１３０の値により余裕領域１０７を自由に設定することで、データ転送に必要な時間と、データ転送発生時に起こり得る書き込み要求回数分を基に算出された余裕領域を確保することが可能となる。余裕領域の確保に際しては、算出結果よりも十分大きな余裕領域を確保すべきだが、やみくもに無駄な余裕領域を確保するのではなく、システムに応じた最適な余裕領域を確保することが好ましい。
【００３５】
また、余裕領域１０７設定のための領域設定用アドレス１３０のアドレスの設定は、ソフトウェアアルゴリズムになる。具体的な値は0x14000などである。例えば、４ｋのセクタAと8ｋのセクタBを使用する場合、セクタAは3.5kの書き込み領域と、0.5kの余裕領域、セクタBは7.5kの書き込み領域と、0.5kの余裕領域というように設定する。このとき、余裕領域の大きさが同じになるように設定する。また、データ用のセクタが４つある場合、A,Bを１つのブロック、C,Dを１つのブロックとして使用することもできる。
【００３６】
これにより、瞬低対策で必要な補助電源、例えばコンデンサの容量を少なくすることが可能となることで、コストダウンできる。
【００３７】
（第３の実施形態）
図５は、第３の実施形態におけるエアコンの構成を示すブロック図である。
【００３８】
図５に示すエアコンは、マイコン２０１と、換気用ファンモータ２０２と、ファンモータ２０３と、リモコン受信機２０４と、湿度センサ２０５と、温度センサ２０６と、ADコンバータ２０７と、DAコンバータ２０８とを備える。
【００３９】
フラッシュROMによるEEPROMの代用機能はマイコン２０１に相当する。
【００４０】
マイコン２０１は、フラッシュROMによるEEPROMの代用機能の実現を含むエアコンのシステム制御を行なう。マイコン５０１はシステム制御の中で、EEPROM書き込みを行なう条件が成立した場合、第１、第２の実施形態に則り、フラッシュROMに運転時間の累計や故障発生時のシステム環境等のデータを書き込む。
【００４１】
本発明のEEPROMの代用としてフラッシュROMを用いることによって、データ転送中に発生した書き込み要求は転送完了するまで、受理できなかったものが、即座に書き込むことができる。
【００４２】
なお、フラッシュROMによるEEPROMの代用機能を用いるのは、エアコン以外の家電製品にも適用できる。
【００４３】
ここで、本発明の余裕領域の定義について説明する。
【００４４】
書込みデータの単位を1パケット、5byteとしたデータ２０９の転送に、例えば10msecかかるシステムを用いたとき、データ領域が埋め尽くされた場合のデータ転送時間は転送パケット数×10msecとなり、この時間内に発生する可能性がある書き込み要求回数が余裕領域よりも十分に小さければよい。しかし、実際にはメイン周期のうち全てのタスクを使用することは困難であるため、メイン周期の一部のタスクをフラッシュROMによるEEPROMの代用機能に割り当てる。
【００４５】
例えば、メイン周期100msecに一度だけ1パケット書き込みを実施できるシステムでは、転送するパケットが100である場合、データ転送には10000msec使用することになりメイン周期100回の期間で転送完了となる。このため、10000msec間に発生する書き込み要求の最大回数が10回のシステムであれば、余裕領域が50byteより十分大きければ、システムとして成り立つ。
【００４６】
すなわち、データ転送時間は転送パケット数×10msecであることから、データ転送にはミニマム1000msec使用することとなる。これは、転送(書込み)処理のみを実施した場合になる。しかしこれでは、転送中、他の処理が全くできず、実際のシステム(家電)に適用すれば、システムが破綻してしまう。そこで、上記の例では、メイン(処理の)周期を100msecとし、そのうち10msecは転送処理に割り当て、その他の90msecを他の処理に割り当てるということを想定している。よって、１パケットの転送には100msec要することとなり、100msec(メイン周期)×100パケットで10000ms使用することとなる。
【００４７】
また、10000msの転送時間に、最大で10回(パケット)の書込み要求が発生するシステムであれば、上記で書込みの単位を１パケット5Byteと仮定しているので、データ転送中の書込みは、最大で5byte×10回(パケット)で50Byteとなり、余裕領域が50byteより十分大きければ、システムとして成り立つこととなる。
【産業上の利用可能性】
【００４８】
本発明の半導体集積回路は、冷蔵庫やエアコンなどの家電製品全般に適用することができる。
【図面の簡単な説明】
【００４９】
【図１】本発明の第１の実施形態におけるフラッシュROMによるEEPROM機能の代用の様子を示す図（空き容量あり）
【図２】本発明の第１の実施形態におけるフラッシュROMによるEEPROM機能の代用の様子を示す図（空き容量なし）
【図３】本発明の第１の実施形態におけるフラッシュROMによるEEPROM機能の代用の様子を示す図（データ転送中）
【図４】本発明の第２の実施形態におけるフラッシュROMの余裕領域の設定の様子を示す図
【図５】本発明の第３の実施形態におけるエアコンシステムへの適用の様子を示すブロック図
【図６】フラッシュROMの構成図
【図７】従来例におけるフラッシュROMによるEEPROM機能の代用の様子を示す図（空き容量あり）
【図８】従来例におけるフラッシュROMによるEEPROM機能の代用の様子を示す図（空き容量なし）
【図９】従来例におけるフラッシュROMによるEEPROM機能の代用の様子を示す図（不正書き込み）
【符号の説明】
【００５０】
１０１  フラッシュROMの第１のセクタ（フラッシュメモリのブロック）
１０２  フラッシュROMの第１のセクタ（フラッシュメモリのブロック）
１０３  第１のセクタのヘッダ領域
１０４  第２のセクタのヘッダ領域
１０５  第１のセクタのデータ領域
１０６  第２のセクタのデータ領域
１０７  第１のセクタの余裕領域
１０８  第２のセクタの余裕領域
１００  書き込み要求データ
１１０  書き込み要求データ
１２０  書き込み要求データ
１３０  領域設定用アドレス
２０１  マイコン（半導体集積回路）
２０２  換気用ファンモータ
２０３  ファンモータ
２０４  リモコン受信機
２０５  湿度センサ
２０６  温度センサ
２０７  ADコンバータ
２０８  DAコンバータ
２０９  書込みデータの構成
【図１】
2009238112.tif 000003
【図２】
2009238112.tif 000004
【図３】
2009238112.tif 000005
【図４】
2009238112.tif 000006
【図５】
2009238112.tif 000007
【図６】
2009238112.tif 000008
【図７】
2009238112.tif 000009
【図８】
2009238112.tif 000010
【図９】
2009238112.tif 000011