(57)【要約】【課題】  昇圧回路の負荷を減少させてメモリに対するＥＣＣ負荷データ書き込みおよび読み出しを実現する装置、方法を提供する。【解決手段】  エラー訂正コードおよびエラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、エラー訂正コードおよびエラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行してメモリに書き込む構成とした。データの読み出し時には、メモリに対する書き込みデータが反転されたデータであるか否かを付加ビットデータに基づいて判断し、反転しているデータである場合は、再反転処理を実行し、オリジナルデータに戻して出力する。【選択図】  図９
2005173860.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶装置であり、
データ記憶領域と、
前記データ記憶領域に記憶する記憶対象データを所定のデータ長とした単位長データに付加データを追加設定したエラー訂正コード生成単位データに対するエラー訂正コードの生成処理を実行するエラー訂正コード処理手段と、
前記エラー訂正コード処理手段の生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定手段と、
前記ビット値判定手段の判定結果に基づいて、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行する書き込みデータ反転制御手段と、
を有することを特徴とするデータ記憶装置。
【請求項２】
前記付加データは、前記単位長データに対して設定される１ビットデータであり、予め定められたビット値を持つデータであることを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記エラー訂正コードは、エラーの発生ビット位置が特定可能なハミングコードであることを特徴とする請求項１に記載のデータ記憶装置。
【請求項４】
前記エラー訂正コード処理手段は、
前記データ記憶領域からの読み出しデータのエラー訂正処理、および前記読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行する構成を有し、
前記データ記憶装置は、さらに、
前記エラー訂正コード処理手段において、前記読み出しデータがオリジナルデータの反転データであると判定された場合に、該読み出しデータの反転処理を実行する読み出しデータ反転制御手段と、
を有することを特徴とする請求項１に記載のデータ記憶装置。
【請求項５】
前記エラー訂正コード処理手段は、
前記データ記憶領域からの読み出しデータについてのシンドローム算出処理を実行し、算出したシンドロームに基づくエラー訂正処理を実行する構成であることを特徴とする請求項４に記載のデータ記憶装置。
【請求項６】
前記エラー訂正コード処理手段は、
前記読み出しデータに含まれる付加データのビット値に基づいて、該読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行する構成であることを特徴とする請求項４に記載のデータ記憶装置。
【請求項７】
前記データ記憶領域は、フローティングゲートを持つＦＬＯＴＯＸ(Floating Gate with Tunnel Oxide)構成を有することを特徴とする請求項１に記載のデータ記憶装置。
【請求項８】
前記データ記憶領域は、
ビット値０の格納セルに対してバイアス電圧の印加処理を行なう構成であり、
前記ビット値判定手段は、前記エラー訂正コード処理手段の生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］の割合を算出し、ビット値［０］の割合が少ないデータパターンが前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定する処理を実行する構成であり、
前記書き込みデータ反転制御手段は、ビット値［０］の割合が少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データである場合に反転処理を実行する構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項９】
記憶データ処理方法であり、
データ記憶領域に記憶する記憶対象データを所定のデータ長とした単位長データに付加データを追加設定したエラー訂正コード生成単位データに対するエラー訂正コードの生成処理を実行するエラー訂正コード生成処理ステップと、
前記エラー訂正コード生成処理ステップにおいて生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定ステップと、
前記ビット値判定ステップにおける判定結果に基づいて、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行する書き込みデータ反転制御ステップと、
を有することを特徴とする記憶データ処理方法。
【請求項１０】
前記付加データは、前記単位長データに対して設定される１ビットデータであり、予め定められたビット値を持つデータであることを特徴とする請求項９に記載の記憶データ処理方法。
【請求項１１】
前記エラー訂正コードは、エラーの発生ビット位置が特定可能なハミングコードであることを特徴とする請求項９に記載の記憶データ処理方法。
【請求項１２】
前記記憶データ処理方法は、さらに、
前記データ記憶領域からの読み出しデータのエラー訂正処理を実行するエラー訂正ステップと、
前記読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行する読み出しデータ判定ステップと、
前記読み出しデータがオリジナルデータの反転データであると判定された場合に、該読み出しデータの反転処理を実行する読み出しデータ反転制御ステップと、
を有することを特徴とする請求項９に記載の記憶データ処理方法。
【請求項１３】
前記エラー訂正ステップは、
前記データ記憶領域からの読み出しデータについてのシンドローム算出処理を実行し、算出したシンドロームに基づくエラー訂正処理を実行するステップであることを特徴とする請求項１２に記載の記憶データ処理方法。
【請求項１４】
前記読み出しデータ判定ステップは、
前記読み出しデータに含まれる付加データのビット値に基づいて、該読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行するステップであることを特徴とする請求項１２に記載の記憶データ処理方法。
【請求項１５】
前記データ記憶領域は、フローティングゲートを持つＦＬＯＴＯＸ(Floating Gate with Tunnel Oxide)構成であり、ビット値０の格納セルに対してバイアス電圧の印加処理を行なう構成を有し、
前記ビット値判定ステップは、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］の割合を算出し、ビット値［０］の割合が少ないデータパターンが前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定する処理を実行し、
前記書き込みデータ反転制御ステップは、ビット値［０］の割合が少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データである場合に反転処理を実行することを特徴とする請求項９に記載の記憶データ処理方法。
【請求項１６】
メモリに対するデータ記憶処理を実行するコンピュータ・プログラムであり、
データ記憶領域に記憶する記憶対象データを所定のデータ長とした単位長データに付加データを追加設定したエラー訂正コード生成単位データに対するエラー訂正コードの生成処理を実行するエラー訂正コード生成処理ステップと、
前記エラー訂正コード生成処理ステップにおいて生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定ステップと、
前記ビット値判定ステップにおける判定結果に基づいて、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行する書き込みデータ反転制御ステップと、
を有することを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、半導体メモリに対するエラー訂正コードを付加したデータ書き込み処理を行なう構成において、バイアス電圧の印加要求数を削減することを可能として、昇圧回路の負荷削減を可能としたデータ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
データ書き換え可能な半導体記憶素子としての不揮発性メモリとしてＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）が知られている。ＥＥＰＲＯＭは、例えばセキュリティ用途に使われる携帯機器やＩＣカードに搭載するメモリとして利用される。
【０００３】
例えば暗号処理、認証処理等を実行する機能を持つ携帯機器やＩＣカードには、ホスト機器とデータを安全にやり取りするために、暗号化・復号化を行なうための暗号エンジンまたはＣＰＵにより制御される暗号化・復号化のプログラムが搭載される。さらに、データの暗号化・復号化を行なう鍵データや、ＩＤ情報、その他の重要なデータを格納するため、データ書き換え可能な不揮発性メモリが搭載され、多くの場合、この不揮発性メモリとしてＥＥＰＲＯＭが使われる。
【０００４】
ＥＥＰＲＯＭとしては、フローティングゲートを持つＦＬＯＴＯＸ(Floating Gate with Tunnel Oxide)構成が知られており、さらに、微細化に適したＮＡＮＤ型フラッシュと同じ処理でＥＥＰＲＯＭを実現した構成が知られている。このようなＥＥＰＲＯＭ構成は、例えば、特許文献１に記載されている。
【０００５】
ＥＥＰＲＯＭには、例えば、半導体記憶素子を構成するメモリトランジスタのフローティングゲートとドレイン拡散層との間に高電界を印加して、ＦＮ（Fowler-Nordheim）トンネリング現象によってフローティングゲートから電荷(電子）を放出させてデータ書き込みを行なう構成としたものがある。
【０００６】
ＦＮ（Fowler-Nordheim）トンネリング現象によって、フローティングゲートから電荷(電子）を注入・放出させる構成を持つＥＥＰＲＯＭは、ＦＮ（Fowler-Nordheim）トンネル現象を用いて消去・書込を行なうため、データの書き換え時に高電圧をゲートやドレインに印加することが必要となる。
【０００７】
ＦＬＯＴＯＸタイプのＥＥＰＲＯＭの構成例を図１に示す。図１に示すＥＥＰＲＯＭは、ソース１０６、ドレイン１０７、およびコントロールゲート１０１、セレクトゲート１０３に適切なバイアス、すなわちＶＳ，ＶＤ，ＶＣＧ，ＶＳＧを印加することによってフローティングゲート１０２の電荷蓄積状態を変化させて、データの書き換えを行なう。
【０００８】
図１に示すＦＬＯＴＯＸタイプのＥＥＰＲＯＭは、ｎ＋ドレイン１０５とフローティングゲート（ＦＧ）１０２の間にトンネル酸化膜１０４を配置し、このトンネル酸化膜１０３に電界を発生させてｎ＋拡散層１０５とフローティングゲート（ＦＧ）１０２の間で電子を移動させて、フローティングゲート１０２の電荷蓄積状態を変化させて、データの書き換えを行なう。トンネル酸化膜１０４に流れる電流は、ＦＮ（Fowler-Nordheim）トンネル現象により生じるＦＮトンネル電流である。
【０００９】
例えば、
（ａ）フローティングゲート（ＦＧ）１０２に電子が注入されている状態（メモリトランジスタ（Memory Tr）の閾値は正）を消去状態［データ"１"］
（ｂ）フローティングゲート（ＦＧ）１０２から電子が過剰に引き抜かれている状態（メモリトランジスタ（Memory Tr）の閾値は負）を書き込み状態［データ"０"］
と定義する場合のデータ書き込み時のバイアス条件を図２に示す。
データ書き込み、消去、および読み出し処理、各々の処理におけるバイアス条件を図３に示す。
【００１０】
図２に示すように、データの書き込み時には、選択したページのワード線（ＶＣＧ）に０Ｖを印加し、データ"１"を書き込むセルのビット線（ＶＤ）には０Ｖ、データ"０"を書き込むセルのビット線（ＶＤ）には例えば１８Ｖを印加する。
【００１１】
なお、データ書き換え処理を行なう際には、書き換え対象の領域を一旦消去（データを"１"に設定）した後に、書き込みデータに応じて各ビット線にバイアスを与えて書き込みを行なう。
【００１２】
書き込みデータが"１"の場合、ゲート１０１とドレイン１０５，１０７は同電位であるため、トンネル酸化膜１０４には電界は発生せず、フローティングゲート（ＦＧ）１０２の電荷は消去状態（データ"１"）のまま保持される。一方、書込データが"０"の場合、ドレイン１０５−ゲート１０１間に高電界が発生し、この電解によりフローティングゲート（ＦＧ）１０２からドレイン１０５へ電子が引き抜かれる。データ"０"書き込み後のフローティングゲート（ＦＧ）１０２の閾値は負になる。
【００１３】
スマートカード（Smart Card）等のカード用途のメモリである場合、データ書き込み単位は例えば１〜６４バイトや１〜１２８バイト等複数バイト並列書込をサポートする仕様のものが多いが、この様な仕様では、データ書き込み時にビット線を書き込み電位に充電する昇圧回路は、最も負荷の大きい状態、すなわち全セルの書込データが"０"の場合でも、全ビット線を所定時間内に書込電位（例えば１８Ｖ）に充電する能力を持つことが要求される。
【００１４】
しかしながら、ＥＥＰＲＯＭを搭載した携帯機器やＩＣカードに供給される電源電圧は２．５Ｖや１．８Ｖと低電圧化の傾向にある。特に非接触タイプのＩＣカードでは、ＩＣカードに搭載したアンテナで受けた電磁波に基づいて発生した電力を整流・定電圧化してＩＣを動作させる構成としたものも利用されている。このような構成を持つデバイスでは、使用できる電流値に制限があり、これらの電源から昇圧電圧を発生させるためには、昇圧回路の回路規模を大きくしなければならないという問題が発生する。
【００１５】
さらに、セキュリティ用途のデバイスに搭載したＥＥＰＲＯＭは、データの信頼性を高めるためにエラー訂正コードとしてのＥＣＣ（Error Correct Code）回路を搭載する場合が多く、このＥＣＣデータを格納するセルもＥＥＰＲＯＭに付加することが必要となり、このＥＣＣデータ格納セルに対応するビット線も負荷の対象となる。この結果、昇圧回路の規模はさらに大きくすることが必要となる。
【００１６】
また、データ書き込みタイミングの制御を行なって、書き込み処理を行なうデバイスでは、制御タイミングに応じた書き込みを行なうことが要請され、制御タイミングに間に合うように多くのビット線を規定時間内に充電することが必要となる。その結果、昇圧回路の能力の高いものが要求され、デバイスのサイズの小型化に反して、昇圧回路の規模の大型化、高性能化が求められるという問題が発生している。
【００１７】
エラー訂正コードとしてのＥＣＣ回路を搭載したメモリデバイス構成例を図４に示す。図４は、ＦＬＯＴＯＸタイプのＥＥＰＲＯＭ構成を示す。データ記憶領域２０１には、データおよびエラー訂正コードとしてのＥＣＣが格納される。ＥＣＣコードは、所定のＥＣＣ算出単位、例えば１６ビットデータ単位に算出され、１６ビットデータに対して５ビットのＥＣＣビット（例えばハミングコード（Hamming Code））が設定されて格納されることになる。
【００１８】
データ書き込み時には、データ書き込み制御信号（ＸＲＤ）２０３の制御に基づいて、データバス２０２から書き込みデータが入力され、書き込みデータは、メモリバス２１１を介してデータ記憶領域２０１に格納されるとともに、メモリバス２１１を介してＥＣＣ回路２０５にデータが入力され、書き込みデータに基づくＥＣＣビットが算出されて、生成されたＥＣＣビットがＥＣＣバス２１２を介してデータ記憶領域２０１に格納される。
【００１９】
データの読み出し時には、データ読み出し制御信号（ＸＲＤ）２０４の制御に基づいて、データ記憶領域２０１からデータおよびＥＣＣビットが読み出され、メモリバス２１１、ＥＣＣバス２１２を介してＥＣＣ回路２０５においてＥＣＣビットに基づくエラー訂正処理が実行された後、訂正されたデータがデータバス２０２に出力される。ＥＣＣ回路２０５におけるエラー訂正は、例えばシンドローム（Syndrome）算出処理に基づいて実行される。
【００２０】
ＥＣＣ演算単位を１６ビットデータとし、ＥＣＣとしてハミングコード（Hamming Code）を採用した場合の書き込みデータの生成例を図５を参照して説明する。
【００２１】
図５に示すように、書き込みデータは、Ｘ０〜Ｘ１５の１６ビットデータであり、この１６ビットデータＸ０〜Ｘ１５に対して、図５に示すＥＣＣビットＣ０〜Ｃ４が生成される。図５（ａ）に示す○印を付したビットの排他論理和（ＸＯＲ）演算を、図５（ｂ）に示す計算式に基づいて実行し、ＥＣＣビットとしてのハミングコード（Hamming Code）Ｃ０〜Ｃ４が算出される。
【００２２】
この結果、データ記憶領域には、書き込みデータは、Ｘ０〜Ｘ１５の１６ビットデータと、ＥＣＣビットＣ０〜Ｃ４の５ビットデータを書き込むことが必要となる。
【００２３】
前述したＦＬＯＴＯＸタイプのＥＥＰＲＯＭにデータ書き込みを行なう場合、データ"１"を書き込むセルのビット線（ＶＤ）には０Ｖ、データ"０"を書き込むセルのビット線（ＶＤ）には例えば１８Ｖを印加することが必要となる。Ｘ０〜Ｘ１５の１６ビットデータと、ＥＣＣビットＣ０〜Ｃ４の５ビット、計２１ビットに含まれる０の数は、確率的な平均してとしては、２１／２≒１１であり、デバイスにおいて実行される書き込み処理の半数の処理においては、１１〜２１のゼロ書き込みが発生することになり、昇圧回路の負担は過大なものとなってしまう。昇圧回路は、書込データにかかわらず仕様を満たす能力のものを設計する必要があるため、全てのビット線に書込電圧を印加する場合で仕様を満たす能力を持たせる必要があり、回路規模が大きくなってしまう。
【００２４】
暗号処理鍵や、ＩＤデータなど、エラー発生の許容されないデータを格納するデバイスにおいては、ＥＣＣ等のエラー訂正コードは必須であり、この結果、正確なデータ書き込み処理を行なうため、昇圧回路の能力の優れたものが要求され、携帯機器やＩＣカード等のデバイスのサイズの小型化に反して、昇圧回路の規模を大きくしなければならないという問題が顕著となってきている。
【特許文献１】特開２０００−１４９５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
本発明は、上記問題点に鑑みてなされたものであり、半導体メモリ素子としてのＥＥＰＲＯＭにおけるエラー訂正コードを付加したデータ書き込み処理が必要な構成において、データ処理時に充電するビット線の本数を削減することを可能とし、昇圧回路の負荷を小さくして、昇圧回路での消費電流の削減を可能とし、昇圧回路の回路規模の小型化を可能としたデータ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【００２６】
さらに、本発明は、半導体メモリ素子としてのＥＥＰＲＯＭにおけるエラー訂正コードを付加したデータ書き込み処理が必要な構成において、ビット線充電の時間を削減し、結果的にデータ書き込み時間を削減することを可能とし、またデータ読み出しにおいても正確なデータ読み出しを可能としたデータ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の第１の側面は、
データ記憶装置であり、
データ記憶領域と、
前記データ記憶領域に記憶する記憶対象データを所定のデータ長とした単位長データに付加データを追加設定したエラー訂正コード生成単位データに対するエラー訂正コードの生成処理を実行するエラー訂正コード処理手段と、
前記エラー訂正コード処理手段の生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定手段と、
前記ビット値判定手段の判定結果に基づいて、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行する書き込みデータ反転制御手段と、
を有することを特徴とするデータ記憶装置にある。
【００２８】
さらに、本発明のデータ記憶装置の一実施態様において、前記付加データは、前記単位長データに対して設定される１ビットデータであり、予め定められたビット値を持つデータであることを特徴とする。
【００２９】
さらに、本発明のデータ記憶装置の一実施態様において、前記エラー訂正コードは、エラーの発生ビット位置が特定可能なハミングコードであることを特徴とする。
【００３０】
さらに、本発明のデータ記憶装置の一実施態様において、前記エラー訂正コード処理手段は、前記データ記憶領域からの読み出しデータのエラー訂正処理、および前記読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行する構成を有し、前記データ記憶装置は、さらに、前記エラー訂正コード処理手段において、前記読み出しデータがオリジナルデータの反転データであると判定された場合に、該読み出しデータの反転処理を実行する読み出しデータ反転制御手段と、を有することを特徴とする。
【００３１】
さらに、本発明のデータ記憶装置の一実施態様において、前記エラー訂正コード処理手段は、前記データ記憶領域からの読み出しデータについてのシンドローム算出処理を実行し、算出したシンドロームに基づくエラー訂正処理を実行する構成であることを特徴とする。
【００３２】
さらに、本発明のデータ記憶装置の一実施態様において、前記エラー訂正コード処理手段は、前記読み出しデータに含まれる付加データのビット値に基づいて、該読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行する構成であることを特徴とする。
【００３３】
さらに、本発明のデータ記憶装置の一実施態様において、前記データ記憶領域は、フローティングゲートを持つＦＬＯＴＯＸ(Floating Gate with Tunnel Oxide)構成を有することを特徴とする。
【００３４】
さらに、本発明のデータ記憶装置の一実施態様において、前記データ記憶領域は、ビット値０の格納セルに対してバイアス電圧の印加処理を行なう構成であり、前記ビット値判定手段は、前記エラー訂正コード処理手段の生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］の割合を算出し、ビット値［０］の割合が少ないデータパターンが前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定する処理を実行する構成であり、前記書き込みデータ反転制御手段は、ビット値［０］の割合が少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データである場合に反転処理を実行する構成であることを特徴とする。
【００３５】
さらに、本発明の第２の側面は、
記憶データ処理方法であり、
データ記憶領域に記憶する記憶対象データを所定のデータ長とした単位長データに付加データを追加設定したエラー訂正コード生成単位データに対するエラー訂正コードの生成処理を実行するエラー訂正コード生成処理ステップと、
前記エラー訂正コード生成処理ステップにおいて生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定ステップと、
前記ビット値判定ステップにおける判定結果に基づいて、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行する書き込みデータ反転制御ステップと、
を有することを特徴とする記憶データ処理方法にある。
【００３６】
さらに、本発明の記憶データ処理方法の一実施態様において、前記付加データは、前記単位長データに対して設定される１ビットデータであり、予め定められたビット値を持つデータであることを特徴とする。
【００３７】
さらに、本発明の記憶データ処理方法の一実施態様において、前記エラー訂正コードは、エラーの発生ビット位置が特定可能なハミングコードであることを特徴とする。
【００３８】
さらに、本発明の記憶データ処理方法の一実施態様において、前記記憶データ処理方法は、さらに、前記データ記憶領域からの読み出しデータのエラー訂正処理を実行するエラー訂正ステップと、前記読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行する読み出しデータ判定ステップと、前記読み出しデータがオリジナルデータの反転データであると判定された場合に、該読み出しデータの反転処理を実行する読み出しデータ反転制御ステップと、を有することを特徴とする。
【００３９】
さらに、本発明の記憶データ処理方法の一実施態様において、前記エラー訂正ステップは、前記データ記憶領域からの読み出しデータについてのシンドローム算出処理を実行し、算出したシンドロームに基づくエラー訂正処理を実行するステップであることを特徴とする。
【００４０】
さらに、本発明の記憶データ処理方法の一実施態様において、前記読み出しデータ判定ステップは、前記読み出しデータに含まれる付加データのビット値に基づいて、該読み出しデータがオリジナルデータの反転データであるか否かの判定処理を実行するステップであることを特徴とする。
【００４１】
さらに、本発明の記憶データ処理方法の一実施態様において、前記データ記憶領域は、フローティングゲートを持つＦＬＯＴＯＸ(Floating Gate with Tunnel Oxide)構成であり、ビット値０の格納セルに対してバイアス電圧の印加処理を行なう構成を有し、前記ビット値判定ステップは、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］の割合を算出し、ビット値［０］の割合が少ないデータパターンが前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定する処理を実行し、前記書き込みデータ反転制御ステップは、ビット値［０］の割合が少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データである場合に反転処理を実行することを特徴とする。
【００４２】
さらに、本発明の第３の側面は、
メモリに対するデータ記憶処理を実行するコンピュータ・プログラムであり、
データ記憶領域に記憶する記憶対象データを所定のデータ長とした単位長データに付加データを追加設定したエラー訂正コード生成単位データに対するエラー訂正コードの生成処理を実行するエラー訂正コード生成処理ステップと、
前記エラー訂正コード生成処理ステップにおいて生成したエラー訂正コードおよび前記エラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定ステップと、
前記ビット値判定ステップにおける判定結果に基づいて、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行する書き込みデータ反転制御ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４３】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００４４】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４５】
本発明の構成によれば、エラー訂正コードおよびエラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、エラー訂正コードおよびエラー訂正コード生成単位データの反転データであるか否かを判定し、電力消費の少ないデータパターンが、反転データである場合にビット値反転処理を実行してメモリに書き込む構成としたので、昇圧電圧に基づいて充電する必要のあるビット線本数を半減させることが可能となり、昇圧回路及び消費電流を小さくすることが可能となりまた高速なデータ書き込み処理が可能となる。
【００４６】
また、本発明の構成によれば、データの読み出し時には、メモリに対する書き込みデータが反転されたデータであるか否かを付加ビットデータに基づいて判断し、反転しているデータである場合は、再反転処理を実行し、オリジナルデータに戻して出力する構成であるので、正常なデータ読み出しが可能となる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明のデータ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【００４８】
図６を参照して、本発明に係るデータ記憶装置の構成を説明する。本発明に係るデータ記憶装置は、メモリに対する書き込みデータに対してエラー訂正コードとしてのＥＣＣを設定し、メモリからの読み出しデータに対してＥＣＣに基づくエラー訂正処理を実行するＥＣＣ（Error Correct Code）回路を搭載している。
【００４９】
図６の装置構成において、データ記憶領域３０１は、ＦＬＯＴＯＸタイプのＥＥＰＲＯＭ構成を有する。データ記憶領域３０１には、データおよびエラー訂正コードとしてのＥＣＣが格納される。ＥＣＣコードは、所定のＥＣＣ算出単位に対して算出される。
【００５０】
本発明の構成では、例えば１６ビット実データに対して１ビットの付加データを追加設定し、計１７ビットデータをエラー訂正コード生成単位データとして設定し、この単位データに対して、５ビットのＥＣＣデータ、例えば、ハミングコード（Hamming Code）を付与する。このＥＣＣデータの生成処理についての詳細は後述する。
【００５１】
データ書き込み時には、ＥＣＣブロック３５０にデータバス３０２から書き込みデータが入力され、ＥＣＣブロック３５０において、書き込みデータに対する付加データの設定およびＥＣＣデータの算出、付与が実行され、その後メモリバス３１１を介してデータ記憶領域３０１のデータ（Ｄａｔａ）格納領域に、実データと付加データが格納されるとともに、ＥＣＣビットがＥＣＣバス３１２を介してデータ記憶領域３０１に格納される。
【００５２】
データの読み出し時には、データ記憶領域３０１から実データと付加データおよびＥＣＣビットが読み出され、メモリバス３１１、ＥＣＣバス３１２を介してＥＣＣブロック３５０に入力され、ＥＣＣブロック３５０においてＥＣＣビットに基づくエラー訂正処理が実行された後、訂正されたデータがデータバス３０２に出力される。ＥＣＣブロック３５０におけるエラー訂正は、例えばシンドローム（Syndrome）算出処理に基づいて実行される。この処理の詳細については、後述する。
【００５３】
なお、データの書き込み処理および読み出し処理におけるデータの転送タイミングや、処理タイミングは、図示しないＣＰＵ等の制御部から出力される制御信号によって制御され、例えば予めプログラミングされた処理プログラムに従った処理として実行されるものである。
【００５４】
本発明のデータ記憶装置におけるＥＣＣブロック３５０において実行するエラー訂正コード（ＥＣＣ）設定処理の詳細について、図７および図８を参照して説明する。図７は、ＥＣＣブロック３５０において実行するエラー訂正コード（ＥＣＣ）の算出において実行するハミングコード算出処理の詳細を説明する図であり、図８は、本発明のデータ記憶装置のＥＣＣブロック３５０において実行するエラー訂正コード（ＥＣＣ）設定処理およびデータ記憶領域３０１に対するデータおよびＥＣＣビットの書き込み処理のシーケンスを説明するフローチャートである。
【００５５】
まず、図７を参照して、本発明のデータ記憶装置のＥＣＣブロック３５０において実行するエラー訂正コード（ＥＣＣ）算出処理の詳細について説明する。ここでは、一実施例として、ＥＣＣ演算単位を、実データ１６ビットと１ビットの付加データの計１７ビットデータとし、ＥＣＣとしてハミングコードを採用した場合のエラー訂正コード（ＥＣＣ）設定例を説明する。
【００５６】
図７（ａ）は、ＥＣＣ演算単位としてのＸ０〜Ｘ１５の１６ビット実データと、１ビット付加データＸ１６の計１７ビットデータに対するＥＣＣ、すなわち、ハミングコードの算出処理構成を示している。図６に示すＥＣＣブロック３５０は、データバス３０２から書き込みデータを入力し、データをＥＣＣ算出単位としての１６ビットデータに区切り、１６ビットデータに対して１ビットの付加データビットＸ１６を設定する。付加データビットＸ１６は、予め定められた値、例えばビット値［１］に設定する。
【００５７】
ただし、ＥＣＣに基づいてエラー訂正処理を実行する際に、付加データビットＸ１６に対して設定された正常値が［０］であるか［１］であるかが判別可能であればよく、付加データビットＸ１６として、ビット値［１］または［０］のいずれを規定値とするかは任意である。
【００５８】
ここでは、付加データビットＸ１６を規定ビット値［１］に設定した例を説明する。ＥＣＣビットは計５ビット、すなわち、Ｃ０〜Ｃ４をＥＣＣ演算単位としてのＸ０〜Ｘ１５の１６ビット実データと、１ビット付加データＸ１６の計１７ビットデータに基づいて算出する。
【００５９】
図７（ａ）に示す○印を付したビットの排他論理和（ＸＯＲ）演算を、図７（ｂ）および以下に示す。ＥＣＣビットとしてのハミングコード（Hamming Code）Ｃ０〜Ｃ４は下式（式１）に基づいて算出する。
【数１】
2005173860.tif 000003
【００６０】
図６に示すＥＣＣブロック３５０は、データバス３０２から書き込みデータを入力し、データをＥＣＣ算出単位としての１６ビットデータに区切り、１６ビットデータに対して１ビットの付加データビットＸ１６を設定した後、上記式に従って、Ｘ０〜Ｘ１５の１６ビット実データと、付加データＸ１６の計１７ビットデータに基づく５ビットのＥＣＣビットを算出する。
【００６１】
図６に示すＥＣＣブロック３５０において、上述の付加ビット設定、およびＥＣＣビット算出処理を実行した後、実データと付加データは、メモリバス３１１を介してデータ記憶領域３０１のデータ（Ｄａｔａ）格納領域に格納される。ＥＣＣビットは、ＥＣＣバス３１２を介してデータ記憶領域３０１のＥＣＣ格納領域に格納される。
【００６２】
図８のフローに従って、本発明のデータ記憶装置のＥＣＣブロック３５０において実行するエラー訂正コード（ＥＣＣ）設定処理およびデータ記憶領域３０１に対するデータおよびＥＣＣビットの書き込み処理のシーケンスを説明する。
【００６３】
ステップＳ１０１において、図６に示すＥＣＣブロック３５０は、データバス３０２から書き込みデータを入力し、データをＥＣＣ算出単位としての１６ビットデータに区切り、ステップＳ１０２において、１６ビットデータに対して１ビットの付加データビットＸ１６を設定する。付加データビットＸ１６は、上述したように、予め定められた値、例えばビット値［１］とする。
【００６４】
ステップＳ１０３において、データバス３０２から入力したＸ０〜Ｘ１５の１６ビット実データと、１ビット付加データＸ１６の計１７ビットデータに対するＥＣＣ、すなわち、ハミングコードの算出処理を実行する。このＥＣＣビット算出処理は、上述の式（式１）に基づいて実行する。
【００６５】
次に、ステップＳ１０４において、Ｘ０〜Ｘ１５の１６ビット実データと、１ビット付加データＸ１６の計１７ビットデータと、これらのデータに基づいて生成したエラー訂正コードの構成ビット、すなわち、ＥＣＣビットＣ０〜Ｃ４の５ビットの総計２２ビットのビット値［０］の数をカウントする。
【００６６】
ステップＳ１０５において、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データと、ＥＣＣビットＣ０〜Ｃ４の５ビットの総計２２ビットの構成ビット中、ビット値［０］の数が半数を超える（ビット０の数≧１２）と判定した場合は、ステップＳ１０６に進み、ビット値［０］の数が半数を超えない（ビット０の数＜１２）と判定した場合は、ステップＳ１０７に進む。
【００６７】
２２ビットの構成ビット中、ビット値［０］の数が半数を超える（ビット０の数≧１２）と判定した場合は、ステップＳ１０６に進み、ステップＳ１０６では、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データの反転データを生成し、反転データに基づくＥＣＣビットを生成し、これらのデータをメモリ領域に書き込むデータとして出力する。すなわち、データおよびＥＣＣデータの反転した値が対応するアドレスの書込ラッチに格納され、メモリセルに書き込まれる。
【００６８】
なお、反転データとは、本来のビット値が［０］の場合、これを［１］とし、本来のビット値が［１］の場合、これを［０］としたデータである。
【００６９】
このように、反転したＸ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データをメモリバス３１１に出力し、データ記憶領域３０１のデータ（Ｄａｔａ）格納領域に格納し、反転データに基づくＥＣＣビットをＥＣＣバス３１２に出力し、メモリ領域のＥＣＣ格納領域に格納する。
【００７０】
図７（ａ）に示すＥＣＣ演算例の場合、ＥＣＣビットＣ０〜Ｃ４の各演算に用いられているデータ（排他論理和演算の対象としてＸ０〜Ｘ１５およびＸ１６から選択されたデータ）の個数は全て奇数個となっている。複数データの排他論理和（Exclusive-OR）演算は、全ての演算対象データの加算後の最下位ビットと等しくなるため、Ｘ０〜Ｘ１６の反転データに基づく排他論理和演算結果は、反転する前のオリジナルデータによる排他論理和演算結果を反転させた値と等しくなる。
【００７１】
従って、ＥＣＣブロック３５０は、Ｘ０〜Ｘ１６の反転データに基づく排他論理和演算を実行することなく、反転する前のオリジナルデータによる排他論理和演算結果を反転させた値を、Ｘ０〜Ｘ１６の反転データに基づく排他論理和演算結果としてのＥＣＣビットＣ０〜Ｃ４として設定することができる。
【００７２】
すなわち、２２ビットの構成ビット中、ビット値［０］の数が半数を超える（ビット０の数≧１２）と判定した場合は、ステップＳ１０６において、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データの反転データを生成し、オリジナルビットに基づいて生成済みのＥＣＣビットＣ０〜Ｃ４を反転し、これをＸ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データの反転データに基づくＥＣＣビットとして各バス３１１，３１２に出力し、データ記憶領域３０１に格納する。
【００７３】
一方、ステップＳ１０５において、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データと、ＥＣＣビットＣ０〜Ｃ４の５ビットの総計２２ビットの構成ビット中、ビット値［０］の数が半数を超えない（ビット０の数＜１２）と判定した場合は、ステップＳ１０７に進み、反転処理を実行することなく、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データ、およびこれらのデータに基づくＥＣＣビットを各バス３１１，３１２に出力し、データ記憶領域３０１に格納する。すなわち、データおよびＥＣＣデータの反転されない値が対応するアドレスの書込ラッチに格納され、メモリセルに書き込まれる。
【００７４】
この処理により、データ記憶領域３０１に格納するデータの［０］となるビット値の数を削減して格納することが可能となる。
【００７５】
先に、図１〜図３を参照して説明したように、ＦＬＯＴＯＸタイプのＥＥＰＲＯＭにデータ書き込みを行なう場合、データ"１"を書き込むセルのビット線（ＶＤ）には０Ｖ、データ"０"を書き込むセルのビット線（ＶＤ）には例えば１８Ｖを印加することが必要となる。
【００７６】
上述した本発明のデータ格納処理に従えば、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データと、ＥＣＣビットＣ０〜Ｃ４の５ビット、計２２ビットに含まれる０の数が半数より大の場合は、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データの反転データを書き込みデータとし、２２ビットに含まれる０の数が半数以下の場合は、Ｘ０〜Ｘ１５の１６ビット実データと、Ｘ１６の１ビット付加データの構成データそのものを書き込みデータとして設定したので、データ書き込み処理におけるビット［０］の書き込みを減少させることができ、データ"０"を書き込むセルのビット線（ＶＤ）に供給することが必要となる印加電圧（例えば１８Ｖ）の総量を削減することが可能となる。
【００７７】
結果として、ＦＬＯＴＯＸタイプのＥＥＰＲＯＭに対するデータ書き込み処理を実行するデバイスに搭載する昇圧回路の負担を減少することが可能となり、昇圧回路の小型化、デバイスのコストダウンが実現される。さらに、充電の必要なビット線、すなわちビット値［０］を格納するセルに対応するビット線数が削減されるので、ビット線充電に要する時間の削減が可能となり、結果的にデータ書き込み時間の削減が達成され、高速データ書き込みが実現される。
【００７８】
暗号処理鍵や、ＩＤデータなど、エラー発生の許容されないデータを格納するデバイスにおいては、ＥＣＣ等のエラー訂正コードは必須であり、従来構成においては、正確なデータ書き込み処理を行なうため、昇圧回路の能力の優れたものが要求され、昇圧回路の規模を大きくしなければならないという問題が発生していたが、上述した本発明の処理を実行することにより、［０］の書き込みを必要とするセル数が削減できるので、昇圧回路の小型化、デバイスのコストダウンが実現され、携帯機器やＩＣカード等のデバイスのサイズの小型化に適応する小型の昇圧回路によって、データ書き込みが可能となる。
【００７９】
次に、図９を参照して、図８のフローに従った処理を実行するＥＣＣブロック３５０の詳細構成について説明する。
【００８０】
ＥＣＣブロック３５０は、図に示すように、メモリに対する書き込みデータの入力、あるいはメモリから読み出したデータを出力するデータバスとメモリに接続されたメモリバスおよびＥＣＣバスとの間に位置し、メモリに対する書き込みデータに対してＥＣＣデータを生成する。さらに、先に図７、図８を参照して説明したように、ビット値［０］の数をカウントし、カウント値に基づいて反転データの生成、反転データに基づくＥＣＣビットの生成を行なう。
【００８１】
図９を参照して、ＥＣＣブロック３５０の構成および処理の詳細について説明する。まず、データ書き込み時の処理について説明する。データ書き込み制御信号（ＸＲＤ）３５１の制御に基づいて、データバスから書き込みデータが入力し、ＥＣＣ処理実行部３５６に入力される。
【００８２】
ＥＣＣ処理実行部３５６は、エラー訂正コード（ＥＣＣ）処理手段であり、ＥＣＣ演算単位毎に付加データビットを付加する処理を実行するとともに、エラー訂正コードとしてのＥＣＣビットを算出する。この算出処理は、上述した（式１）に従って実行（図７参照）する。
【００８３】
ＥＣＣ処理実行部３５６において生成したＥＣＣビットＣ０〜Ｃ４と、ＥＣＣ演算単位としての１６ビット入力データＸ０〜Ｘ１５と、１ビット付加データＸ１６は、反転制御器３５７に出力され、かつ、０データのカウントを実行するカウンタ３５４に出力される。
【００８４】
カウンタ３５４と比較器３５３は、エラー訂正コード処理手段としてのＥＣＣ処理実行部３５６の生成したエラー訂正コードおよびエラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、前記エラー訂正コードおよび前記エラー訂正コード生成単位データの反転データであるか否かを判定するビット値判定処理を実行する。このように、カウンタ３５４と比較器３５３はビット値判定手段として機能する。
【００８５】
カウンタ３５４は、ＥＣＣ処理実行部３５６において生成したＥＣＣビットＣ０〜Ｃ４と、ＥＣＣ演算単位としての１６ビット入力データＸ０〜Ｘ１５と、１ビット付加データＸ１６の総計２２ビット中に含まれるビット値［０］の数をカウントする。
【００８６】
カウンタ３５４におけるカウント値、すなわち、２２ビット中に含まれるビット値［０］の数［Ａ］が比較器３５３に入力される。比較器３５３は、さらに、ＥＣＣ演算単位としての実データおよび付加データのビット値「０」の数と、ＥＣＣデータのビット数の半数の値［Ｂ］を入力し、２２ビット中に含まれるビット値［０］の数［Ａ］と［Ｂ］の大小の比較を実行する。
【００８７】
Ａ＞Ｂの場合は、反転制御器３５７に対して反転処理を実行させる動作制御信号を出力し、ＥＣＣ演算単位としての１６ビット入力データＸ０〜Ｘ１５と、１ビット付加データＸ１６の反転信号と、ＥＣＣ処理実行部３５６において生成したＥＣＣビットＣ０〜Ｃ４の反転信号を生成して、これを書き込みデータとして出力し、メモリに対する書き込み制御信号ＸＲＤ３５８の制御の下にこれらの反転データの書き込み処理を実行する。
【００８８】
Ａ≦Ｂの場合は、反転制御器３５７に対して反転処理の実行を行わず、入力値を反転することなく、ＥＣＣ演算単位としての１６ビット入力データＸ０〜Ｘ１５と、１ビット付加データＸ１６と、ＥＣＣ処理実行部３５６において生成したＥＣＣビットＣ０〜Ｃ４をそのまま書き込みデータとして、出力し、メモリに対する書き込み制御信号ＸＲＤ３５８の制御の下にこれらのデータの書き込み処理を実行する。
【００８９】
このように、反転制御器３５７は、データ記憶領域に対するデータ記憶処理における電力消費の少ないデータパターンが、エラー訂正コード（ＥＣＣ）およびＥＣＣ生成単位データの反転データであると判定した場合にビット値反転処理を実行する。
【００９０】
すなわち、カウンタ３５４と比較器３５３によって構成されるビット値判定手段の判定結果に基づいて反転制御器３５７に制御信号が出力され、データ記憶領域に対するデータ記憶処理における電力消費の少ないデータパターンが、反転制御器３５７において生成されてメモリに対する格納データとして出力される。
【００９１】
データの読み出し時には、データ読み出し制御信号（ＸＲＤ）３５９の制御に基づいて、データ記憶領域から実データと付加データおよびＥＣＣビットが読み出され、ＥＣＣ処理実行部３５６において、ＥＣＣビットに基づくエラー検出、訂正処理が実行される。なお、上述したように、本発明の処理おいては、書き込みデータが反転されている場合があり、データ読み出しの場合は、ＥＣＣ処理実行部３５６において、読み出しデータが反転データであるか否かを判定し、判定に従ったエラー訂正処理を実行する。
【００９２】
さらに、読み出しデータが反転データである場合は、ＥＣＣ処理実行部３５６は、反転制御器３５５に反転処理を実行させる制御信号を出力し、エラー訂正後のデータの反転処理を実行させ、その結果データをデータ読み出し信号ＸＲＤ３５２の制御の下にデータバスに出力する。読み出しデータが反転データでない場合は、ＥＣＣ処理実行部３５６は、反転制御器３５５に反転処理を実行させる制御信号を出力することなく、エラー訂正後のデータをデータ読み出し信号ＸＲＤ３５２の制御の下にデータバスに出力する。
【００９３】
メモリからのデータ読み出しおよびエラー訂正処理および反転制御処理について図１０および図１１を参照して説明する。
【００９４】
図１０は、ＥＣＣ処理実行部３５６において実行するエラービット検出のためのシンドローム（Syndrome）算出処理の詳細を説明する図である。図１１は、データ読み出し時に実行するエラー訂正処理および反転制御処理の処理シーケンスを示すフローチャートである。
【００９５】
まず、図１０を参照して、ＥＣＣ処理実行部３５６において実行するエラービット検出のためのシンドローム算出処理の詳細について説明する。図１０（ａ）は、ＥＣＣ演算単位としてのＸ０'〜Ｘ１５'の１６ビット実データと、１ビット付加データＸ１６'の、５ビットのＥＣＣビットＣ０'〜Ｃ４ '、計２２ビットデータに対するシンドロームＳ０〜Ｓ４算出処理構成を示している。なお、各ビットデータに［'］を付加して示してあるのは、エラービットである場合があり、必ずしも書き込みデータと一致しないことを意味するものである。
【００９６】
図９に示すＥＣＣ処理実行部３５６は、メモリ領域からＸ０'〜Ｘ１５'の１６ビット実データと、１ビット付加データＸ１６'、ＥＣＣビットＣ０'〜Ｃ４ '、計２２ビットデータを入力し、シンドロームＳ０〜Ｓ４を算出する。なお、読み出しデータは反転データである場合もある。
【００９７】
シンドロームＳ０〜Ｓ４算出処理は、図１０（ａ）に示す○印を付したビットの排他論理和（ＸＯＲ）演算処理として実行する処理である。シンドロームＳ０〜Ｓ４算出処理の計算式を、図１０（ｂ）および以下の式（式２）に示す。
【数２】
2005173860.tif 000004
【００９８】
ＥＣＣ処理実行部３５６は、上記のシンドローム算出を実行し、シンドロームＳ０〜Ｓ４算出値に基づいて、Ｘ０'〜Ｘ１５'の１６ビット実データと、１ビット付加データＸ１６'の、５ビットのＥＣＣビットＣ０'〜Ｃ４ '、計２２ビットデータのエラーが含まれるか否か、エラーが含まれる場合は、そのエラーの発生ビットが、
ａ）Ｘ０'〜Ｘ１５'の１６ビット実データ、
ｂ）１ビット付加データＸ１６'、
ｃ）５ビットのＥＣＣビットＣ０'〜Ｃ４'、
のいずれであるかを判別する。
これらの判別処理は、シンドロームＳ０〜Ｓ４算出値に基づいて実行することができる。
【００９９】
データ読み出しに際してＥＣＣ処理実行部３５６および反転制御器３５５は、エラーの有無およびエラーの発生ビット位置に基づいて異なる処理を実行することになる。各態様に応じた処理をまとめると以下のようになる。
【０１００】
（１）エラーが発生していない場合
（１−１）付加ビットが反転している場合、すなわち、Ｘ１６'＝０の場合
ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させて出力する。
（１−２）付加ビットが反転していない場合、すなわち、Ｘ１６'＝１の場合
ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させることなくそのまま出力する。
【０１０１】
（２）ＥＣＣビットＣ０'〜Ｃ４'にエラーが発生している場合
（２−１）付加ビットが反転している場合、すなわち、Ｘ１６'＝０の場合
ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させて出力する。
（２−２）付加ビットが反転していない場合、すなわち、Ｘ１６'＝１の場合
ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させることなくそのまま出力する。
【０１０２】
（３）Ｘ０'〜Ｘ１５'の１６ビット実データにエラーが発生している場合
（３−１）付加ビットが反転している場合、すなわち、Ｘ１６'＝０の場合
ＥＣＣ処理実行部３５６においてエラービットの訂正処理を実行し、訂正後の出力データを反転制御器３５５において反転させて出力する。
（３−２）付加ビットが反転していない場合、すなわち、Ｘ１６'＝１の場合
ＥＣＣ処理実行部３５６においてエラービットの訂正処理を実行し、訂正後の出力データを反転制御器３５５において反転させることなくそのまま出力する。
【０１０３】
（４）Ｘ１６'の付加データにエラーが発生している場合
（４−１）エラー訂正後の付加ビットが反転している場合、すなわち、Ｘ１６'＝０の場合
ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させて出力する。
（４−２）エラー訂正後の付加ビットが反転していない場合、すなわち、Ｘ１６'＝１の場合
ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させることなくそのまま出力する。
【０１０４】
このように、ＥＣＣ処理実行部３５６は、付加ビットの値に基づいて、データのメモリに対する書き込み時にビット値の反転を行なったか否かを判定し、ビット値の反転を伴うデータ書き込み処理を実行した場合に限り、反転制御器３５５に対してデータ反転処理を実行させて、反転データ、すなわち、オリジナルのデータを出力することができる。
【０１０５】
次に、図１１を参照して、データ読み出し時に実行するエラー訂正処理および反転制御処理の処理シーケンスについて説明する。
【０１０６】
ステップＳ２０１において、メモリ領域から読み取られたデータ（Ｘ０'〜Ｘ１５'の１６ビット実データと、１ビット付加データＸ１６'）はメモリバスを介してＥＣＣ処理実行部３５６に入力され、ＥＣＣビット（Ｃ０'〜Ｃ４'）は、ＥＣＣバスを介して、ＥＣＣ処理実行部３５６に入力される。
【０１０７】
ステップＳ２０２において、ＥＣＣ処理実行部３５６は、入力したデータ（Ｘ０'〜Ｘ１５'の１６ビット実データと、１ビット付加データＸ１６'）、ＥＣＣビット（Ｃ０'〜Ｃ４'）に基づいて、シンドロームＳ０〜Ｓ４算出処理を実行する。この算出処理は、前述の（式２）に基づいて実行される。
【０１０８】
ステップＳ２０３において算出したシンドロームＳ０〜Ｓ４に基づいて、エラーの有無を判定する。エラーなしの場合は、ステップＳ２０４に進み、付加ビットが反転しているか否か、すなわち、Ｘ１６'＝０、またはＸ１６'＝１かを判定する。
【０１０９】
付加ビットが反転している場合、すなわち、Ｘ１６'＝０の場合は、ステップＳ２０６に進み、ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させて出力する。
【０１１０】
付加ビットが反転していない場合、すなわち、Ｘ１６'＝１の場合は、ステップＳ２０５に進み、ＥＣＣ処理実行部３５６からの出力データを反転制御器３５５において反転させることなくそのまま出力する。
【０１１１】
ステップＳ２０３の判定において、エラーが含まれると判定した場合は、ステップＳ２０７に進み、エラーの訂正を行なってステップＳ２０４に進む。
【０１１２】
ステップＳ２０４において、訂正後のデータのうち、正しいＸ１６'の値に基づいて以下の処理を実行する。
【０１１３】
付加ビットの値が反転している場合、すなわち、正しいＸ１６'の値＝０の場合は、ステップＳ２０６に進み、ＥＣＣ処理実行部３５６においてエラー訂正処理を行い、エラー訂正後の出力データを反転制御器３５５において反転して出力する。
【０１１４】
付加ビットの値が反転していない場合、すなわち、正しいＸ１６'の値＝１の場合は、ステップＳ２０５に進み、ＥＣＣ処理実行部３５６においてエラー訂正処理を行い、エラー訂正後の出力データを反転制御器３５５において反転させることなくそのまま出力する。
【０１１５】
以上の処理により、エラー訂正およびデータ反転が確実に実行され、オリジナルの書き込み処理データと等しいデータが、読み出しデータとしてデータバスに出力される。
【０１１６】
以上説明してきた本発明のデータ書き込み方式および読み出し方式によって、メモリに対する書き込み処理単位当たりのビット値［０］の書込み数は書き込み単位の総ビット数のほぼ半分以下に抑えられ、データ書き込み処理時に、昇圧電圧に基づいて充電する必要のあるビット線本数を半減させることが可能となり、昇圧回路及び消費電流を小さくすることが可能となりまた高速なデータ書き込み処理が可能となる。
【０１１７】
またデータの読み出し時には、メモリに対する書き込みデータが反転されたデータであるか否かを付加ビットデータに基づいて判断し、反転しているデータである場合は、再反転処理を実行し、オリジナルデータに戻して出力する構成であるので、正常なデータ読み出しが可能となる。
【０１１８】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１１９】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１２０】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０１２１】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１２２】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１２３】
上述したように、本発明は、エラー訂正コードおよびエラー訂正コード生成単位データの全構成ビットに占めるビット値［０］または［１］の割合を算出し、データ記憶処理における電力消費の少ないデータパターンが、エラー訂正コードおよびエラー訂正コード生成単位データの反転データであると判定した場合にビット値反転処理を実行してメモリに書き込む構成としたので、昇圧電圧に基づいて充電する必要のあるビット線本数を半減させることが可能となり、昇圧回路及び消費電流を小さくすることが可能となりまた高速なデータ書き込み処理が可能となる。従って、携帯機器やＩＣカード等のデバイスのサイズの小型化に適応する小型の昇圧回路によって、データ書き込みが可能となり、携帯機器やＩＣカードにおいて適用可能である。
【０１２４】
また、本発明の構成によれば、データの読み出し時には、メモリに対する書き込みデータが反転されたデータであるか否かを付加ビットデータに基づいて判断し、反転しているデータである場合は、再反転処理を実行し、オリジナルデータに戻して出力する構成であるので、正常なデータ読み出しが可能となる。従って、携帯機器やＩＣカード等のデバイスのサイズの小型化に適応する小型の昇圧回路によって、データ書き込みが可能となり、本発明は、携帯機器やＩＣカードにおいて適用可能である。
【図面の簡単な説明】
【０１２５】
【図１】ＦＬＯＴＯＸタイプのＥＥＰＲＯＭの構成を示す図である。
【図２】ＦＬＯＴＯＸタイプのＥＥＰＲＯＭにおけるデータ書き込み時のバイアス電圧の設定例を示す図である。
【図３】ＦＬＯＴＯＸタイプのＥＥＰＲＯＭにおけるデータ書き込み時その他の処理実行時のバイアス電圧の設定例を示す図である。
【図４】ＦＬＯＴＯＸタイプのＥＥＰＲＯＭ構成の詳細を示す図である。
【図５】ＥＣＣの算出処理を説明する図である。
【図６】本発明に係るデータ記憶装置、すなわち、エラー訂正コードとしてのＥＣＣ（Error Correct Code）回路を搭載したデータ記憶装置のデバイス構成を示す図である。
【図７】本発明に係るデータ記憶装置におけるＥＣＣの算出処理を説明する図である。
【図８】本発明に係るデータ記憶装置におけるＥＣＣの算出処理およびデータ書き込み処理シーケンスを説明するフローチャートである。
【図９】本発明に係るデータ記憶装置におけるＥＣＣブロックの詳細構成を示す図である。
【図１０】本発明に係るデータ記憶装置におけるデータ読み出し時のシンドローム算出処理を説明する図である。
【図１１】本発明に係るデータ記憶装置におけるシンドローム算出処理およびデータ反転処理を含むデータ読み出し処理シーケンスを説明するフローチャートである。
【符号の説明】
【０１２６】
１０１  コントロールゲート
１０２  フローティングゲート
１０３  セレクトゲート
１０４  トンネル酸化膜
１０５  ドレイン
１０６  ソース
１０７  ドレイン
２０１  データ記憶領域
２０２  データバス
２０３  データ書き込み制御信号（ＸＲＤ）
２０４  データ読み出し制御信号（ＸＲＤ）
２０５  ＥＣＣ回路
２１１  メモリバス
２１２  ＥＣＣバス
３０１  データ記憶領域
３０２  データバス
３１１  メモリバス
３１２  ＥＣＣバス
３５０  ＥＣＣブロック
３５１  データ書き込み制御信号（ＸＲＤ）
３５２  データ読み出し制御信号（ＸＲＤ）
３５３  比較器
３５４  カウンタ
３５５  反転制御器
３５６  ＥＣＣ処理実行部
３５７  反転制御器
３５８  データ書き込み制御信号（ＸＲＤ）
３５９  データ読み出し制御信号（ＸＲＤ）
【図１】
2005173860.tif 000005
【図２】
2005173860.tif 000006
【図３】
2005173860.tif 000007
【図４】
2005173860.tif 000008
【図５】
2005173860.tif 000009
【図６】
2005173860.tif 000010
【図７】
2005173860.tif 000011
【図８】
2005173860.tif 000012
【図９】
2005173860.tif 000013
【図１０】
2005173860.tif 000014
【図１１】
2005173860.tif 000015