(57)【要約】【課題】データの書き込み時間を低減することができる不揮発性半導体記憶装置及びデータ読み書き方法を提供すること【解決手段】不揮発性半導体記憶装置１０は、メモリセルアレイ２０と、シフト値ＳＦＴを格納するシフト値格納領域２５と、メモリセルアレイ２０及びシフト値格納領域２５に対するデータの読み書きを制御する制御回路５０と、制御回路５０に接続されたデータ処理回路１００とを備える。「シフト値ＳＦＴ」は、多値データが示す複数のデータ値とメモリセル２１が有する複数の閾値電圧との対応関係を示す。このデータ処理回路１００は、シフト値ＳＦＴを可変に設定する。【選択図】      図４
2006031755.tif 000002
【特許請求の範囲】
【請求項１】
複数の閾値電圧のうちから所定の閾値電圧が設定されるメモリセルと、
前記所定の閾値電圧に対応するデータ値を設定するデータ処理回路とを有し、
前記データ値の設定が可変であることを特徴とする
不揮発性半導体記憶装置。
【請求項２】
請求項１に記載の不揮発性半導体記憶装置であって、
前記データ処理回路は、複数のデータ値の中から、前記所定の閾値電圧に対応するデータ値を選択して設定することを特徴とする
不揮発性半導体記憶装置。
【請求項３】
請求項１又は２に記載の不揮発性半導体記憶装置であって、
前記データ処理回路は、複数の前記メモリセルに一括で書き込みを実施する際に、前記複数のメモリセルの夫々における前記所定の閾値電圧の和が最小となるように、前記閾値電圧と前記データ値との対応関係を設定することを特徴とする
不揮発性半導体記憶装置。
【請求項４】
請求項３に記載の不揮発性半導体記憶装置であって、
前記対応関係を示すシフト値を格納するシフト値格納領域と、
前記複数のメモリセル、前記シフト値格納領域、及び前記データ処理回路に接続された制御回路とを更に有し、
前記制御回路は、前記複数のメモリセル及び前記シフト値格納領域に対するデータの読み書きを制御することを特徴とする
不揮発性半導体記憶装置。
【請求項５】
複数の閾値電圧を有する複数のメモリセルと、
多値データが示す複数のデータ値と前記複数の閾値電圧との対応関係を示すシフト値を格納するシフト値格納領域と、
前記複数のメモリセル及び前記シフト値格納領域に対するデータの読み書きを制御する制御回路と、
前記制御回路に接続されたデータ処理回路と
を具備し、
前記データ処理回路は、前記シフト値を可変に設定する
不揮発性半導体記憶装置。
【請求項６】
請求項４又は５に記載の不揮発性半導体記憶装置であって、
データの書き込み時、
前記データ処理回路は、外部から入力される入力データの内容を参照し、書き込みが行われるメモリセル群の閾値電圧の和が最小になるように、複数の前記シフト値のうちの一のシフト値を用いて前記入力データを書き込みデータに変換し、前記書き込みデータ及び前記一のシフト値を前記制御回路に出力し、
前記制御回路は、前記書き込みデータを前記メモリセル群に書き込み、前記一のシフト値を前記シフト値格納領域に書き込み、
データの読み出し時、
前記制御回路は、前記メモリセル群から読み出しデータを読み出し、前記シフト値格納領域から前記一のシフト値を読み出し、前記読み出しデータ及び前記一のシフト値を前記データ処理回路に出力し、
前記データ処理回路は、前記一のシフト値を用いて前記読み出しデータを出力データに変換し、前記出力データを外部に出力する
不揮発性半導体記憶装置。
【請求項７】
請求項４又は５に記載の不揮発性半導体記憶装置であって、
前記複数の閾値電圧のそれぞれには、書き込みに必要な時間を示す定数が対応づけられ、
データの書き込み時、
前記データ処理回路は、外部から入力される入力データの内容を参照し、書き込みが行われるメモリセル群の閾値電圧に対応した前記定数の和が最小になるように、複数の前記シフト値のうちの一のシフト値を用いて前記入力データを書き込みデータに変換し、前記書き込みデータ及び前記一のシフト値を前記制御回路に出力し、
前記制御回路は、前記書き込みデータを前記メモリセル群に書き込み、前記一のシフト値を前記シフト値格納領域に書き込み、
データの読み出し時、
前記制御回路は、前記メモリセル群から読み出しデータを読み出し、前記シフト値格納領域から前記一のシフト値を読み出し、前記読み出しデータ及び前記一のシフト値を前記データ処理回路に出力し、
前記データ処理回路は、前記一のシフト値を用いて前記読み出しデータを出力データに変換し、前記出力データを外部に出力する
不揮発性半導体記憶装置。
【請求項８】
請求項６又は７に記載の不揮発性半導体記憶装置であって、
前記複数のデータ値は、第１〜第Ｎデータ値（Ｎは３以上の自然数）を含み、
前記複数の閾値電圧は、第１〜第Ｎ閾値電圧を含み、
前記複数のシフト値は、第１〜第Ｎシフト値を含み、
前記第１〜第Ｎシフト値のそれぞれは、前記第１〜第Ｎデータ値と前記第１〜第Ｎ閾値電圧との間のＮ種類の前記対応関係を示す
不揮発性半導体記憶装置。
【請求項９】
請求項８に記載の不揮発性半導体記憶装置であって、
前記第１シフト値は、前記第１〜第Ｎデータ値のそれぞれを、前記第１〜第Ｎ閾値電圧のそれぞれに対応づけ、
前記第ｉシフト値（ｉは２以上Ｎ以下の自然数）は、前記第１〜第（ｉ−１）データ値のそれぞれを、前記第（Ｎ−ｉ＋２）〜第Ｎ閾値電圧のそれぞれに対応づけ、且つ、前記第ｉ〜第Ｎデータ値のそれぞれを、前記第１〜第（Ｎ−ｉ＋１）閾値電圧のそれぞれに対応づける
不揮発性半導体記憶装置。
【請求項１０】
請求項８に記載の不揮発性半導体記憶装置であって、
Ｎは４であり、
前記第１シフト値は、前記第１、第２、第３、第４データ値のそれぞれを、前記第１、第２、第３、第４閾値電圧のそれぞれに対応づけ、
前記第２シフト値は、前記第１、第２、第３、第４データ値のそれぞれを、前記第４、第１、第２、第３閾値電圧のそれぞれに対応づけ、
前記第３シフト値は、前記第１、第２、第３、第４データ値のそれぞれを、前記第３、第４、第１、第２閾値電圧のそれぞれに対応づけ、
前記第４シフト値は、前記第１、第２、第３、第４データ値のそれぞれを、前記第２、第３、第４、第１閾値電圧のそれぞれに対応づける
不揮発性半導体記憶装置。
【請求項１１】
請求項６乃至１０のいずれかに記載の不揮発性半導体記憶装置であって、
前記データ処理回路は、
前記制御回路に接続された書き込みデータ変換回路と、
前記書き込みデータ変換回路に接続されたシフト値決定回路と、
前記制御回路に接続された読み出しデータ変換回路と
を備え、
データの書き込み時、
前記シフト値決定回路は、前記入力データを受け取り、前記入力データの内容を参照することによって前記複数のシフト値から前記一のシフト値を選択し、前記一のシフト値を前記書き込みデータ変換回路に出力し、
前記書き込みデータ変換回路は、前記入力データ及び前記一のシフト値を受け取り、前記一のシフト値が示す前記対応関係に従って、前記入力データを前記書き込みデータに変換し、前記書き込みデータ及び前記一のシフト値を前記制御回路に出力し、
データの読み出し時、
前記読み出しデータ変換回路は、前記制御回路から前記読み出しデータ及び前記一のシフト値を受け取り、前記一のシフト値が示す前記対応関係に従って、前記読み出しデータを前記出力データに変換する
不揮発性半導体記憶装置。
【請求項１２】
請求項１１に記載の不揮発性半導体記憶装置であって、
前記複数のメモリセルは、前記シフト値格納領域としてのシフト値格納メモリセルを含み、
前記メモリセル群と前記シフト値格納メモリセルは、同一ワード線に接続された
不揮発性半導体記憶装置。
【請求項１３】
請求項１１又は１２に記載の不揮発性半導体記憶装置であって、
前記シフト値決定回路は、
検証データ生成回路と、
前記検証データ生成回路に接続された書き込み時間算出回路と、
前記書き込み時間算出回路に接続された判定回路と
を備え、
前記検証データ生成回路は、前記入力データを受け取り、前記複数のシフト値のそれぞれが示す複数の前記対応関係に基づいて、前記入力データから複数の検証データを生成し、
前記書き込み時間算出回路は、前記複数の検証データを受け取り、前記複数の検証データの各々の前記メモリセル群への書き込みに要する書き込み時間を算出し、
前記判定回路は、複数の前記書き込み時間のうち最も短い一の書き込み時間を検出し、前記一の書き込み時間に関連するシフト値を、前記一のシフト値として選択する
不揮発性半導体記憶装置。
【請求項１４】
請求項１２に記載の不揮発性半導体記憶装置であって、
前記シフト値決定回路は、
検証データ生成回路と、
前記検証データ生成回路に接続された書き込み時間算出回路と、
前記書き込み時間算出回路に接続された判定回路と
を備え、
前記検証データ生成回路は、前記入力データを受け取り、前記複数のシフト値のそれぞれが示す前記対応関係に基づいて、前記入力データから複数の検証データを生成し、
前記書き込み時間算出回路は、前記複数の検証データと前記複数のシフト値を受け取り、前記複数の検証データの各々及び対応するシフト値のそれぞれを前記メモリセル群及び前記シフト値格納メモリセルへ書き込むために要する書き込み時間を算出し、
前記判定回路は、複数の前記書き込み時間のうち最も短い一の書き込み時間を検出し、前記一の書き込み時間に関連するシフト値を、前記一のシフト値として選択する
不揮発性半導体記憶装置。
【請求項１５】
データを入力、出力するＩ／Ｏバッファと複数の多値メモリセルからなるメモリセルアレイとの間に多値情報を多値情報に変換する第１の変換回路と、
多値情報を２値情報に、または２値情報を多値情報に変換する第２の変換回路と
を有することを特徴とする
不揮発性半導体記憶装置。
【請求項１６】
請求項１５に記載の不揮発性半導体記憶装置であって、
前記第１の変換回路は、前記メモリセルの閾値電圧と前記データとの対応関係を示すシフト値を格納するシフト値格納領域を有することを特徴とする
不揮発性半導体記憶装置。
【請求項１７】
多値データを記憶するメモリセルを備える不揮発性半導体記憶装置に対するデータ読み書き方法であって、
（Ａ）前記不揮発性半導体記憶装置の外部から入力データを入力するステップと、
（Ｂ）前記入力データの内容を参照し、書き込みが行われるメモリセル群の閾値電圧の和が最小になるように、複数のシフト値から一のシフト値を選択するステップと、
前記複数のシフト値の各々は、前記多値データが示す複数のデータ値と前記メモリセルが有する複数の閾値電圧との対応関係を示し、
（Ｃ）選択された前記一のシフト値が示す前記対応関係に従って、前記入力データを書き込みデータに変換するステップと、
（Ｄ）前記書き込みデータを、前記メモリセル群に書き込むステップと、
（Ｅ）前記一のシフト値を、シフト値格納領域に書き込むステップと
を具備する
データ読み書き方法。
【請求項１８】
請求項１７に記載のデータ読み書き方法であって、
（Ｆ）前記メモリセル群から、読み出しデータを読み出すステップと、
（Ｇ）前記シフト値格納領域から、前記一のシフト値を読み出すステップと、
（Ｈ）読み出された前記一のシフト値が示す前記対応関係に応じて、前記読み出しデータを出力データに変換するステップと、
（Ｉ）前記出力データを前記不揮発性半導体記憶装置の外部に出力するステップと
を更に具備する
データ読み書き方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置に関し、特に、多値型の不揮発性半導体装置及びデータの読み書き方法に関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発性半導体記憶装置は、メモリセルのフローティングゲートに電子（例えば、ホットエレクトロン）を注入し、メモリセルの閾値電圧Ｖｔｈを変えることによって、データを記憶する。メモリセルの閾値電圧Ｖｔｈは、電子がフローティングゲートに注入された場合に高くなり、電子がフローティングゲートから引き抜かれた場合に低くなる。また、近年、記憶容量の増大を図るために、１つのメモリセルに複数ビットのデータが記憶される多値型の不揮発性半導体記憶装置が提案されている。この場合、フローティングゲートへの電荷の注入量が高精度に制御される。
【０００３】
図１は、４値フラッシュメモリにおけるメモリセルの閾値電圧Ｖｔｈの分布を示している。図１において、縦軸は、メモリセル（メモリトランジスタ）の閾値電圧Ｖｔｈを表し、横軸は、メモリセルの数（分布頻度）を表している。メモリセルの閾値電圧Ｖｔｈは、プログラムされたデータ（“００”、“０１”、“１０”、“１１”）に応じて異なる。また、各メモリセルの構造のばらつき等により、同じデータがプログラムされたメモリセル間においても、閾値電圧Ｖｔｈは異なり得る。つまり、メモリセル全体の閾値電圧Ｖｔｈは、図１に示されるような複数の分布Ｄ０〜Ｄ３を有する。分布Ｄ０〜Ｄ３は、２ビットのデータ“００”、“０１”、“１０”、“１１”にそれぞれ対応している。各メモリセルの閾値電圧Ｖｔｈは、プログラムされた（書き込まれた）データに応じて、分布Ｄ０〜Ｄ３のいずれかに属する。データの読み出しは、メモリセルの閾値電圧Ｖｔｈを、読み出し基準電圧ＶＲ０〜ＶＲ２と比較することにより行われる。これら読み出し基準電圧ＶＲ０〜ＶＲ２は、分布間のマージンに位置するように設定されている。
【０００４】
このような不揮発性半導体記憶装置に関する技術として、以下のものが知られている。
【０００５】
特許文献１に開示された技術は、２値データ（“０”、“１”）を記憶する不揮発性半導体記憶装置に関し、データを書き込む時間を低減することを目的としている。この不揮発性半導体記憶装置は、計数回路と、書き込み回路と、記録部とを有する。データ書き込み時、この計数回路は、メモリセルアレイ全体に書き込まれるデータ“０”またはデータ“１”の総数を計数する。書き込み回路は、その計数の結果に基づいてデータ書き込み時のデータの位相を「正転」または「反転」させた後に、データの書き込みを行う。記録部は、上記書き込み回路による「正転」または「反転」を示す位相情報を記録する。
【０００６】
この特許文献１による技術と同様に書き込みデータを「正転」または「反転」させる技術が、特許文献２に開示されている。特許文献２に開示された技術は、多値データをページ単位でメモリセルに書き込む不揮発性半導体記憶装置に関し、ディスターブ／リテンション特性を改善することを目的としている。この不揮発性半導体記憶装置は、判別回路と、フラグ用メモリセルと、書込回路とを有する。データ書き込み時、判別回路は、閾値電圧の高い方の分布を示すビットデータの個数をカウントし、その個数が１／２ページより多いか少ないかを判別する。そして、この判別回路は、その判別結果を示すフラグデータを生成する。閾値電圧の高い方の分布が多い場合、書込回路は、書き込みデータの論理レベルを「反転」させてメモリセルに書き込みを行う。一方、閾値電圧の高い方の分布が少ない場合、書込回路は、書き込みデータの論理レベルを「正転」させてメモリセルに書き込みを行う。更に、この書込回路は、上記フラグデータを、上記フラグ用メモリセルに格納する。
【０００７】
近年、不揮発性半導体記憶装置において処理されるデータ量は増加し続け、また、動作速度の向上もますます要求されている。よって、メモリセルにデータを書き込む時間（以下、「書き込み時間」と参照される）を更に低減することができる不揮発性半導体記憶装置が望まれている。
【０００８】
【特許文献１】特開平８−３３５３９６号公報
【特許文献２】特開平１０−５５６８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、データの書き込み時間を低減することができる不揮発性半導体記憶装置及びデータ読み書き方法を提供することにある。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明に係る不揮発性半導体記憶装置（１０）は、複数の閾値電圧（Ｖｔｍ）のうちから所定の閾値電圧（Ｖｔｍ）が設定されるメモリセル（２１、２６）と、その所定の閾値電圧（Ｖｔｍ）に対応するデータ値を設定するデータ処理回路（１００）とを有する。ここで、そのデータ値の設定は可変である。データ処理回路（１００）は、複数のデータ値の中から、その所定の閾値電圧（Ｖｔｍ）に対応するデータ値を選択して設定する。また、データ処理回路（１００）は、複数のメモリセル（２１、２６）に一括で書き込みを実施する際に、複数のメモリセル（２１、２６）の夫々における所定の閾値電圧（Ｖｔｍ）の和が最小となるように、閾値電圧とデータ値との対応関係を設定する。この不揮発性半導体記憶装置（１０）は、その対応関係を示すシフト値（ＳＦＴ）を格納するシフト値格納領域（２５）と、制御回路（５０）とを更に有する。制御回路（５０）は、複数のメモリセル（２１、２６）、シフト値格納領域（２５）、及びデータ処理回路（１００）に接続されており、複数のメモリセル（２１、２６）及びシフト値格納領域（２５）に対するデータの読み書きを制御する。
【００１２】
本発明に係る不揮発性半導体記憶装置（１０）は、複数のメモリセル（２１、２６）がアレイ状に配置されたメモリセルアレイ（２０）と、シフト値（ＳＦＴ）を格納するシフト値格納領域（２５）と、メモリセルアレイ（２０）及びシフト値格納領域（２５）に対するデータの読み書きを制御する制御回路（５０）と、制御回路（５０）に接続されたデータ処理回路（１００）とを備える。ここで、「シフト値（ＳＦＴ）」は、多値データが示す複数のデータ値とメモリセル（２１、２６）が有する複数の閾値電圧（Ｖｔｍ）との対応関係を示す。このデータ処理回路（１００）は、シフト値（ＳＦＴ）を可変に設定する。
【００１３】
具体的には、データの書き込み時、データ処理回路（１００）は、外部から入力される入力データ（Ｄｉｎ、ＤＷＭ）の内容を参照し、書き込みが行われるメモリセル群（２１）の閾値電圧（Ｖｔｍ）の和が最小になるように、複数のシフト値（ＳＦＴ’）のうちの一のシフト値（ＳＦＴ）を用いて、入力データ（Ｄｉｎ、ＤＷＭ）を書き込みデータ（ＤＷ）に変換する。または、データ処理回路（１００）は、外部から入力される入力データ（Ｄｉｎ、ＤＷＭ）の内容を参照し、書き込みが行われるメモリセル群（２１）の閾値電圧（Ｖｔｍ）に対応した定数の和が最小になるように、複数のシフト値（ＳＦＴ’）のうちの一のシフト値（ＳＦＴ）を用いて、入力データ（Ｄｉｎ、ＤＷＭ）を書き込みデータ（ＤＷ）に変換する。ここで、その定数は、その閾値電圧（Ｖｔｍ）に対応づけられた書き込み時間を示す。そして、データ処理回路（１００）は、それら書き込みデータ（ＤＷ）及び一のシフト値（ＳＦＴ）を制御回路（５０）に出力する。制御回路（５０）は、書き込みデータ（ＤＷ）をメモリセルアレイ（２０）中のメモリセル群（２１）に書き込み、一のシフト値（ＳＦＴ）をシフト値格納領域（２５、２６）に書き込む。データの読み出し時、制御回路（５０）は、メモリセル群（２１）から読み出しデータ（ＤＲ）を読み出し、シフト値格納領域（２５、２６）から一のシフト値（ＳＦＴ）を読み出し、それら読み出しデータ（ＤＲ）及び一のシフト値（ＳＦＴ）をデータ処理回路（１００）に出力する。データ処理回路（１００）は、一のシフト値（ＳＦＴ）を用いて読み出しデータ（ＤＲ）を出力データ（ＤＲＭ、Ｄｏｕｔ）に変換し、その出力データ（ＤＲＭ、Ｄｏｕｔ）を外部に出力する。
【００１４】
本発明に係る不揮発性半導体記憶装置（１０）によれば、書き込みが行われるメモリセル群（２１）の閾値電圧（Ｖｔｍ）の和、あるいは閾値電圧（Ｖｔｍ）に対応した定数の和が最小になるように、入力データ（Ｄｉｎ、ＤＷＭ）が書き込みデータ（ＤＷ）に変換される。そして、入力データ（Ｄｉｎ、ＤＷＭ）の代わりに、その書き込みデータ（ＤＷ）が実際にメモリセル群（２１）に書き込まれる。あるメモリセル（２１）に対するデータの書き込み時間は、書き込み後の閾値電圧（Ｖｔｍ）に依存する。従って、本発明によれば、データの総書き込み時間（Ｔａｌｌ）が低減される。
【００１５】
多値データが示す上記複数のデータ値は、第１〜第Ｎデータ値（Ｎは３以上の自然数）を含む。また、メモリセル（２１）が有する複数の閾値電圧（Ｖｔｍ）は、第１〜第Ｎ閾値電圧を含む。この時、複数のシフト値（ＳＦＴ’）は、第１〜第Ｎシフト値（ＳＦＴ’）を含み、それら第１〜第Ｎシフト値（ＳＦＴ’）のそれぞれは、第１〜第Ｎデータ値と第１〜第Ｎ閾値電圧（Ｖｔｍ）との間のＮ種類の対応関係を示すことが好適である。この場合、第１〜第Ｎシフト値（ＳＦＴ’）から選択される一のシフト値（ＳＦＴ）も、メモリセルアレイ（２０）中のシフト値格納メモリセル（２６）に格納されるという効果が得られる。
【００１６】
また、第１シフト値（ＳＦＴ’）は、第１〜第Ｎデータ値のそれぞれを、第１〜第Ｎ閾値電圧（Ｖｔｍ）のそれぞれに対応づけ、第ｉシフト値（ｉは２以上Ｎ以下の自然数）は、第１〜第（ｉ−１）データ値のそれぞれを、第（Ｎ−ｉ＋２）〜第Ｎ閾値電圧（Ｖｔｍ）のそれぞれに対応づけ、且つ、第ｉ〜第Ｎデータ値のそれぞれを、第１〜第（Ｎ−ｉ＋１）閾値電圧（Ｖｔｍ）のそれぞれに対応づけてもよい。例えば、Ｎが４の場合、第１シフト値（ＳＦＴ’）は、第１、第２、第３、第４データ値のそれぞれを、第１、第２、第３、第４閾値電圧（Ｖｔｍ）のそれぞれに対応づける。第２シフト値（ＳＦＴ’）は、第１、第２、第３、第４データ値のそれぞれを、第４、第１、第２、第３閾値電圧（Ｖｔｍ）のそれぞれに対応づける。第３シフト値（ＳＦＴ’）は、第１、第２、第３、第４データ値のそれぞれを、第３、第４、第１、第２閾値電圧（Ｖｔｍ）のそれぞれに対応づける。第４シフト値（ＳＦＴ’）は、第１、第２、第３、第４データ値のそれぞれを、第２、第３、第４、第１閾値電圧（Ｖｔｍ）のそれぞれに対応づける。
【００１７】
本発明に係る不揮発性半導体記憶装置（１０）において、データ処理回路（１００）は、制御回路（５０）に接続された書き込みデータ変換回路（１１０）と、書き込みデータ変換回路（１１０）に接続されたシフト値決定回路（１３０）と、制御回路（５０）に接続された読み出しデータ変換回路（１２０）とを備える。データの書き込み時、シフト値決定回路（１３０）は、入力データ（ＤＷＭ）を受け取り、その入力データ（ＤＷＭ）の内容を参照することによって、複数のシフト値（ＳＦＴ’）から一のシフト値（ＳＦＴ）を選択する。そして、シフト値決定回路（１３０）は、その一のシフト値（ＳＦＴ）を書き込みデータ変換回路（１１０）に出力する。書き込みデータ変換回路（１１０）は、入力データ（ＤＷＭ）及び一のシフト値（ＳＦＴ）を受け取り、その一のシフト値（ＳＦＴ）が示す対応関係に従って、入力データ（ＤＷＭ）を書き込みデータ（ＤＷ）に変換する。そして、書き込みデータ変換回路（１１０）は、それら書き込みデータ（ＤＷ）及び一のシフト値（ＳＦＴ）を制御回路（５０）に出力する。データの読み出し時、読み出しデータ変換回路（１２０）は、制御回路（５０）から読み出しデータ（ＤＲ）及び一のシフト値（ＳＦＴ）を受け取る。そして、読み出しデータ変換回路（１２０）は、その一のシフト値（ＳＦＴ）が示す対応関係に従って、読み出しデータ（ＤＲ）を出力データ（ＤＲＭ）に変換する。
【００１８】
本発明に係る不揮発性半導体記憶装置（１０）において、上記複数のメモリセル（２１、２６）は、シフト値格納領域（２５）としてのシフト値格納メモリセル（２６）を含む。この時、メモリセル群（２１）とシフト値格納メモリセル（２６）は、同一ワード線（ＷＬ）に接続されている。
【００１９】
本発明に係る不揮発性半導体記憶装置（１０）において、シフト値決定回路（１３０）は、検証データ生成回路（１３２）と、検証データ生成回路（１３２）に接続された書き込み時間算出回路（２０１）と、書き込み時間算出回路（２０１）に接続された判定回路（２０２）とを備える。この検証データ生成回路（１３２）は、入力データ（ＤＷＭ）を受け取り、複数のシフト値（ＳＦＴ’）のそれぞれが示す複数の対応関係に基づいて、入力データ（ＤＷＭ）から複数の検証データ（ＤＴ）を生成する。書き込み時間算出回路（２０１）は、それら複数の検証データ（ＤＴ）を受け取り、複数の検証データ（ＤＴ）の各々のメモリセル群（２１）への書き込みに要する書き込み時間（Ｔａｌｌ）を算出する。判定回路（２０２）は、複数の書き込み時間（Ｔａｌｌ）のうち最も短い一の書き込み時間（Ｔａｌｌ）を検出し、その一の書き込み時間（Ｔａｌｌ）に関連するシフト値（ＳＦＴ’）を、一のシフト値（ＳＦＴ）として選択する。
【００２０】
この書き込み時間算出回路（２０１）は、カウンタ（１３３）と、カウンタ（１３３）に接続された乗算器（１３４）と、乗算器（１３４）に接続された加算器（１３５）とを備える。カウンタ（１３３）は、各々の検証データ（ＤＴ）を受け取り、各々の検証データ（ＤＴ）に含まれる複数のデータ値のそれぞれの個数をカウントする。乗算器（１３４）は、それら複数のデータ値のそれぞれの個数に、複数の閾値電圧（Ｖｔｍ）のそれぞれに対応した複数の定数を掛けることによって、複数の乗算値を算出する。加算器（１３５）は、複数の乗算値を足し合わせることによって、上記総書き込み時間（Ｔａｌｌ）を算出する。
【００２１】
本発明に係る不揮発性半導体記憶装置（１０）において、シフト値決定回路（１３０）は、検証データ生成回路（１３２）と、検証データ生成回路（１３２）に接続された書き込み時間算出回路（２０１）と、書き込み時間算出回路（２０１）に接続された判定回路（２０２）とを備える。この検証データ生成回路（１３２）は、入力データ（ＤＷＭ）を受け取り、複数のシフト値（ＳＦＴ’）のそれぞれが示す対応関係に基づいて、入力データ（ＤＷＭ）から複数の検証データ（ＤＴ）を生成する。書き込み時間算出回路（２０１）は、複数の検証データ（ＤＴ）と複数のシフト値（ＳＦＴ’）を受け取る。そして、書き込み時間算出回路（２０１）は、各検証データ（ＤＴ）及び対応するシフト値（ＳＦＴ’）のそれぞれをメモリセル群（２１）及びシフト値格納メモリセル（２６）へ書き込むために要する書き込み時間（Ｔａｌｌ）を算出する。判定回路（２０２）は、複数の書き込み時間（Ｔａｌｌ）のうち最も短い一の書き込み時間（Ｔａｌｌ）を検出し、その一の書き込み時間（Ｔａｌｌ）に関連するシフト値（ＳＦＴ’）を、一のシフト値（ＳＦＴ）として選択する。
【００２２】
この書き込み時間算出回路（２０１）は、カウンタ（１４３）と、カウンタ（１４３）に接続された乗算器（１４４）と、乗算器（１４４）に接続された加算器（１４５）とを備える。カウンタ（１４３）は、各々の検証データ（ＤＴ）及び対応するシフト値（ＳＦＴ’）を受け取り、それら各々の検証データ（ＤＴ）及び対応するシフト値（ＳＦＴ’）に含まれる複数のデータ値のそれぞれの個数をカウントする。乗算器（１４４）は、複数のデータ値のそれぞれの個数に、複数の閾値電圧（Ｖｔｍ）のそれぞれに対応した複数の定数を掛けることによって、複数の乗算値を算出する。加算器（１４５）は、複数の乗算値を足し合わせることによって、上記総書き込み時間（Ｔａｌｌ）を算出する。
【００２３】
判定回路（２０２）は、書き込み時間算出回路（２０１）に接続された比較器（１３７、１４７）と、比較器（１３７、１４７）に接続され、参照値（Ｔｒｅｆ）を格納する参照値レジスタ（１３８、１４８）とを備える。この比較器（１３７、１４７）は、書き込み時間算出回路（２０１）によって算出された複数の書き込み時間（Ｔｃａｌｃ）と参照値（Ｔｒｅｆ）を順番に比較する。そして、比較器（１３７、１４７）は、書き込み時間（Ｔｃａｌｃ）が参照値（Ｔｒｅｆ）より小さい場合、参照値（Ｔｒｅｆ）を書き込み時間（Ｔｃａｌｃ）で更新することによって、複数の書き込み時間（Ｔｃａｌｃ）から一の書き込み時間（Ｔａｌｌ）を検出する。
【発明の効果】
【００２４】
本発明に係る不揮発性半導体記憶装置及びデータ読み書き方法によれば、データの書き込み時間が低減される。
【００２５】
本発明に係る不揮発性半導体記憶装置及びデータ読み書き方法によれば、動作速度が向上する。
【発明を実施するための最良の形態】
【００２６】
添付図面を参照して、本発明による不揮発性半導体記憶装置、及びその不揮発性半導体記憶装置に対するデータ読み書き方法を説明する。
【００２７】
まず、本明細書で用いられる「シフト値」について説明を行う。
【００２８】
本発明に係る不揮発性半導体記憶装置のメモリセルは、コントロールゲート及びフローティングゲートを有する不揮発性のメモリセルである。１つのメモリセルには、多値データが格納される。この多値データは、複数のデータ値を示し、例えば“００”、“０１”、“１０”、“１１”といった４つのデータ値を示す。複数のデータ値は、メモリセル（メモリセルトランジスタ）が有する複数の閾値電圧にそれぞれ対応している。つまり、フローティングゲートに注入する電子の量を調整することによって閾値電圧が制御され、それにより多値データの記憶が実現される。
【００２９】
図２は、本発明に係る不揮発性半導体記憶装置における閾値電圧Ｖｔｈの分布の一例を示している。図２において、縦軸は、メモリセルの閾値電圧Ｖｔｈを表し、横軸は、メモリセルの数（分布頻度）を表している。この不揮発性半導体記憶装置によれば、例えば、１つのメモリセルに４値（２ビット）データを格納することが可能であり、図２に示されるように、メモリセル全体の閾値電圧Ｖｔｈの分布は、分布Ａ０〜Ａ３の４つを有している。ここで、分布Ａ０〜Ａ３のそれぞれを代表する閾値電圧Ｖｔｈを、閾値電圧Ｖｔｍ０〜Ｖｔｍ３とする。
【００３０】
本発明において、これら複数の閾値電圧Ｖｔｍ０〜Ｖｔｍ３と複数のデータ値（“００”、“０１”、“１０”、“１１”）との対応関係は、固定されず、可変である。例えば、閾値電圧Ｖｔｍ０（分布Ａ０）、閾値電圧Ｖｔｍ１（分布Ａ１）、閾値電圧Ｖｔｍ２（分布Ａ２）、閾値電圧Ｖｔｍ３（分布Ａ３）のそれぞれは、データ値“０１”、“１１”、“００”、“１０”のそれぞれに対応してもよい。本明細書において、このような複数の閾値電圧と複数のデータ値との対応関係は、「シフト値ＳＦＴ」と参照される。図２に示されるような４値データの場合、この対応関係として最大２４（＝４！）種類のパターンが考えられる。つまり、２４種類の「シフト値ＳＦＴ」が存在し得る。
【００３１】
後に詳しく説明されるように、本発明によれば、このような複数のシフト値ＳＦＴから１つのシフト値ＳＦＴが選択され、その１つのシフト値ＳＦＴを用いることによってデータの読み書きが実行される。このような複数のシフト値ＳＦＴとして、存在し得る全種類のシフト値ＳＦＴが用意されてもよいし、適宜抽出された数種類のシフト値ＳＦＴが用意されてもよい。
【００３２】
図３は、シフト値ＳＦＴとそのシフト値が示す対応関係の例を示している。ここでは、例として、４種類のシフト値（ＳＦＴ＝０〜３）が用意されている。シフト値ＳＦＴが０の場合（ＳＦＴ＝０）、入出力されるデータの値“００”、“０１”、“１０”、“１１”のそれぞれは、従来と同様に、閾値電圧Ｖｔｍ３、Ｖｔｍ２、Ｖｔｍ１、Ｖｔｍ０のそれぞれに対応している（図１、図２参照）。
【００３３】
シフト値ＳＦＴが１の場合（ＳＦＴ＝１）、入出力されるデータの値“００”、“０１”、“１０”、“１１”のそれぞれは、閾値電圧Ｖｔｍ０、Ｖｔｍ３、Ｖｔｍ２、Ｖｔｍ１のそれぞれに対応している。このような対応関係を実現するため、且つ、従来の書き込み／読み出し回路の構成を活かすためには、入出力されるデータの値が、作為的かつ規則的に変換されればよい。つまり、書き込み時に入力されるデータ“００”、“０１”、“１０”、“１１”のそれぞれが、図３に示されるように、データ“１１”、“００”、“０１”、“１０”のそれぞれに変換され、その変換されたデータ（書き込みデータ）が実際にメモリセルに書き込まれればよい。逆に、読み出し時、メモリセルから直接読み出されるデータ（読み出しデータ）“１１”、“００”、“０１”、“１０”のそれぞれは、データ“００”、“０１”、“１０”、“１１”のそれぞれに変換され、その変換されたデータが出力データとして出力されればよい。これにより、上述の対応関係が実現される。
【００３４】
同様に、シフト値ＳＦＴが２の場合（ＳＦＴ＝２）、入出力されるデータの値“００”、“０１”、“１０”、“１１”のそれぞれは、閾値電圧Ｖｔｍ１、Ｖｔｍ０、Ｖｔｍ３、Ｖｔｍ２のそれぞれに対応している。シフト値ＳＦＴが３の場合（ＳＦＴ＝３）、入出力されるデータの値“００”、“０１”、“１０”、“１１”のそれぞれは、閾値電圧Ｖｔｍ２、Ｖｔｍ１、Ｖｔｍ０、Ｖｔｍ３のそれぞれに対応している。このように、シフト値ＳＦＴが増加するごとに、閾値電圧（書き込みデータ）が“シフト”する。
【００３５】
また、この場合、４種類のシフト値ＳＦＴ（０〜３）が用いられるので、そのシフト値ＳＦＴ自身も２ビットで表現され得る。よって、４値データが格納されるメモリセルと同様のメモリセルに、そのシフト値ＳＦＴを格納することが可能であり、好適である。
【００３６】
本発明において、メモリセルに格納されるデータは、４値データに限られない。より一般的に、Ｎ値データ（Ｎは３以上の自然数）の場合、そのＮ値データは、第１〜第Ｎデータ値を含む。この時、メモリセルは、Ｎ段階の閾値電圧（第１〜第Ｎ閾値電圧）を有する。この場合、第１〜第Ｎデータ値と第１〜第Ｎ閾値電圧との間の対応関係として、最大Ｎ！種類のパターンが考えられる。つまり、Ｎ！種類のシフト値ＳＦＴが存在し得る。
【００３７】
シフト値ＳＦＴ自身をＮ値データが格納されるメモリセルと同様のメモリセルに格納するために、Ｎ種類のシフト値ＳＦＴ（第１〜第Ｎシフト値）が用いられると好適である。このＮ種類のシフト値ＳＦＴは、それぞれ異なるＮ種類の対応関係を示す。例えば、第１シフト値は、第１〜第Ｎデータ値のそれぞれを、第１〜第Ｎ閾値電圧のそれぞれに対応づける。第ｉシフト値（ｉは２以上Ｎ以下の自然数）は、第１〜第（ｉ−１）データ値のそれぞれを、第（Ｎ−ｉ＋２）〜第Ｎ閾値電圧のそれぞれに対応づけ、且つ、第ｉ〜第Ｎデータ値のそれぞれを、第１〜第（Ｎ−ｉ＋１）閾値電圧のそれぞれに対応づける（図３参照）。この場合、シフト値ＳＦＴが変化するごとに、閾値電圧（書き込みデータ）が“シフト”する。
【００３８】
以下、本発明に係る不揮発性半導体記憶装置の構成及び動作が示される。
【００３９】
図４は、本発明に係る不揮発性半導体記憶装置の構成を示すブロック図である。この不揮発性半導体記憶装置１０は、メモリセルアレイ２０、Ｉ／Ｏバッファ３０、Ｒ／Ｗ制御回路５０、及びデータ処理回路１００を備えている。
【００４０】
メモリセルアレイ２０は、アレイ状に配置された複数のメモリセルを備えている。図５は、このメモリセルアレイ２０の一部を詳細に示す回路図である。図５に示されるように、メモリセルアレイ２０において、複数のワード線（ＷＬ１〜ＷＬ３）が複数のビット線（ＤＬ１〜ＤＬ９）と直交するように形成されている。各メモリセルは、コントロールゲート及びフローティングゲートを有する不揮発性のメモリセルであり、１つにメモリセルには、多値データが格納される。メモリセルのコントロールゲートは、ワード線（ＷＬ）のいずれかに接続され、そのドレインはビット線（ＤＬ）のいずれかに接続され、そのソースは共通のソース線ＳＬに接続されている。
【００４１】
複数のメモリセルは、データを格納するためのメモリセル２１と、上述のシフト値ＳＦＴを格納するためのシフト値格納メモリセル２６とを含む。例えば、ワード線ＷＬ１には、ビット線ＤＬ１〜ＤＬ８に接続されたメモリセル群２１−１１〜２１−１８と、ビット線ＤＬ９に接続されたシフト値格納メモリセル２６−１が接続されている。ワード線ＷＬ２には、ビット線ＤＬ１〜ＤＬ８に接続されたメモリセル群２１−２１〜２１−２８と、ビット線ＤＬ９に接続されたシフト値格納メモリセル２６−２が接続されている。ワード線ＷＬ３には、ビット線ＤＬ１〜ＤＬ８に接続されたメモリセル群２１−３１〜２１−３８と、ビット線ＤＬ９に接続されたシフト値格納メモリセル２６−３が接続されている。これらシフト値格納メモリセル２６−１〜２６−３は、シフト値格納メモリセル群２５を構成している。このシフト値格納メモリセル群２５は、シフト値ＳＦＴを格納するための「シフト値格納領域」として使用される。
【００４２】
このように、メモリセル群とシフト値格納メモリセル２６は、同一のワード線に接続されている。従って、１つのワード線ＷＬを選択することによって、メモリセル群及びシフト値格納メモリセル２６のそれぞれに、書き込みデータ及びシフト値ＳＦＴのそれぞれを書き込むことが可能となる。同様に、１つのワード線ＷＬを選択することによって、メモリセル群及びシフト値格納メモリセル２６のそれぞれから、読み出しデータ及びシフト値ＳＦＴのそれぞれを読み出すことが可能となる。すなわち、メモリセルアレイ２０に、あるデータとあるシフト値ＳＦＴとを対応付けて格納することが可能となる。
【００４３】
図４に示されるように、複数のワード線（ＷＬ）は、Ｘデコーダ６１に接続されている。また、複数のビット線（ＤＬ）は、Ｙセレクタ６３を介してＹデコーダ６２に接続されている。Ｒ／Ｗ制御回路５０は、Ｘデコーダ６１、Ｙデコーダ６２、及びＹセレクタ６３を介して、メモリセルアレイ２０に接続されている。このＲ／Ｗ制御回路５０は、シフト値格納メモリセル群２５を含むメモリセルアレイ２０に対するデータの読み書きを制御する。
【００４４】
Ｉ／Ｏバッファ３０は、多値変換部４１及び２値変換部４２を介して、データ処理回路１００に接続されている。不揮発性半導体記憶装置１０は、このＩ／Ｏバッファ３０を介して外部とデータのやりとりを行う。多値変換部４１は、２値データを多値データに変換する機能を有する。また、２値変換部４２は、多値データを２値データに変換する機能を有する。
【００４５】
データ処理回路１００は、多値変換部４１及び２値変換部４２を介して、Ｉ／Ｏバッファ３０に接続されている。また、このデータ処理回路１００は、Ｒ／Ｗ制御回路５０に接続されている。データ処理回路１００は、上述の複数のシフト値ＳＦＴのうちの１つのシフト値ＳＦＴを用い、図３に示された変換パターンに従って、外部から入力されるデータを書き込みデータＤＷに変換する。そして、データ処理回路１００は、その書き込みデータＤＷと１つのシフト値ＳＦＴを、Ｒ／Ｗ制御回路５０に出力する。また、データ処理回路１００は、Ｒ／Ｗ制御回路５０によってメモリセル群から読み出される読み出しデータＤＲ、及びシフト値格納領域（シフト値格納メモリセル２６）から読み出される１つのシフト値ＳＦＴを受け取る。そして、データ処理回路１００は、その１つのシフト値ＳＦＴを用い、図３に示された変換パターンに従って、読み出しデータＤＲを、外部から入力されたデータに対応するデータに変換（復元）する。
【００４６】
図４に示されるように、このデータ処理回路１００は、書き込みデータ変換回路１１０、読み出しデータ変換回路１２０、及びシフト値決定回路１３０を備えている。書き込みデータ変換回路１１０は、多値変換部４１及びＲ／Ｗ制御回路５０に接続されており、書き込み動作時にデータ変換を実行する。読み出しデータ変換回路１２０は、２値変換部４２及びＲ／Ｗ制御回路５０に接続されており、読み出し動作時にデータ変換を実行する。シフト値決定回路１３０は、多値変換部４１及び上記書き込みデータ変換回路１１０に接続されており、複数のシフト値ＳＦＴから１つのシフト値を選択する。読み出しデータ変換回路１２０は、更に、このシフト値決定回路１３０に接続されていてもよい。
【００４７】
図６は、このシフト値決定回路１３０の構成をより詳細に示すブロック図である。シフト値決定回路１３０は、検証データ生成回路１３２と、その検証データ生成回路１３２に接続された書き込み時間算出回路２０１と、その書き込み時間算出回路２０１に接続された判定回路２０２とを備えている。
【００４８】
次に、図４〜図６に示された構成及び図７、図８に示されるフローチャートを参照して、本発明に係る不揮発性半導体記憶装置１０の動作を詳細に説明する。
【００４９】
（書き込み動作）
図７は、本発明に係る不揮発性半導体記憶装置１０における「書き込み動作」を説明するためのフローチャートである。
【００５０】
ステップＳ１０：
まず、Ｉ／Ｏバッファ３０に、不揮発性半導体記憶装置１０に記憶されるデータ（以下、「入力データＤｉｎ」と参照される）が入力される。この入力データＤｉｎは、２値データ（“０”、“１”）から構成されている。例えば、この入力データＤｉｎは、「１、０、１、０、１、０、０、０」を示す。
【００５１】
ステップＳ２０：
次に、入力データＤｉｎは、「２値書き込みデータＤＷＢ」として、Ｉ／Ｏバッファ３０から多値変換部４１に出力される。多値変換部４１は、その２値書き込みデータＤＷＢを、多値データである「多値書き込みデータＤＷＭ」に変換する。例えば、２値データ「１、０、１、０、１、０、０、０」は、多値データ「１０、１０、１０、００」に変換される。このように生成された多値書き込みデータＤＷＭは、データ処理回路１００に出力される。
【００５２】
ステップＳ３０：
データ処理回路１００のシフト値決定回路１３０は、多値書き込みデータＤＷＭを受け取る。そして、シフト値決定回路１３０は、その多値書き込みデータＤＷＭの内容を参照して、複数のシフト値ＳＦＴから１つのシフト値ＳＦＴを選択する。
【００５３】
具体的には、シフト値決定回路１３０の検証データ生成回路１３２（図６参照）は、複数のシフト値ＳＦＴのそれぞれを用い、図３に示される変換パターンに従って、多値書き込みデータＤＷＭを複数の検証データＤＴに変換する。複数のシフト値ＳＦＴ（０〜３）は、例えば、「仮シフト値ＳＦＴ’」として順番に検証データ生成回路１３２に入力される。例えば、仮シフト値ＳＦＴ’として“２”が入力された時、検証データ生成回路１３２は、図３に示される変換パターンに従い、多値書き込みデータ「１０、１０、１０、００」を、検証データ「００、００、００、１０」に変換する。このように、仮シフト値ＳＦＴ’のそれぞれが示す複数の対応関係に基づいて、多値書き込みデータＤＷＭから複数の検証データＤＴが生成される。生成された複数の検証データＤＴは、書き込み時間算出回路２０１に出力される。
【００５４】
書き込み時間算出回路２０１は、各検証データＤＴをメモリセル群へ書き込むために要する時間（書き込み時間）を推定し算出する。一般に、あるメモリセルに対するデータの書き込み時間は、書き込み後の閾値電圧Ｖｔｈに依存する。例えば、メモリセルトランジスタに与える電位と、その電位を与える時間が一定の場合、書き込み後の閾値電圧Ｖｔｈが高いほど、書き込み時間は長くなり、それが低いほど、書き込み時間は短くなる。より一般的には、複数の閾値電圧のそれぞれを、書き込み時間を示す“所定の定数”に対応づけることが可能である。書き込み時間算出回路２０１は、例えば検証データ「００、００、００、１０」を受け取った場合、それぞれのデータ値に対応する閾値電圧「Ｖｔｍ３、Ｖｔｍ３、Ｖｔｍ３、Ｖｔｍ１（図３参照）」に基づいて、書き込み時間を推定し算出することが可能である。このようにして、複数の検証データＤＴのそれぞれに対応して、複数の書き込み時間が算出される。書き込み時間算出回路２０１は、算出された書き込み時間を示す書き込み時間信号ＳＴを、判定回路２０２に出力する。
【００５５】
判定回路２０２は、複数の仮シフト値ＳＦＴ’のそれぞれに対応する複数の書き込み時間信号ＳＴを受け取る。そして、判定回路２０２は、その複数の書き込み時間信号のそれぞれが示す複数の書き込み時間の中から、最も短い書き込み時間を検出する。そして、判定回路２０２は、その最短書き込み時間に関連する仮シフト値ＳＦＴ’を、上述の“１つのシフト値”として決定する。
【００５６】
このように、本発明によれば、データ処理回路１００のシフト値決定回路１３０は、書き込みが行われるメモリセル群の閾値電圧Ｖｔｈの和が最小になるように、複数のシフト値ＳＦＴから１つのシフト値ＳＦＴを選択する。または、シフト値決定回路１３０は、書き込みが行われるメモリセル群の閾値電圧Ｖｔｈに対応した所定の定数の和が最小になるように、複数のシフト値ＳＦＴから１つのシフト値ＳＦＴを選択する。そして、シフト値決定回路１３０は、そのシフト値ＳＦＴを、書き込みデータ変換回路１１０に出力する。
【００５７】
ステップＳ４０：
書き込みデータ変換回路１１０は、多値変換部４１によって生成された多値書き込みデータＤＷＭと、シフト値決定回路１３０によって決定されたシフト値ＳＦＴを受け取る。そして、書き込みデータ変換回路１１０は、そのシフト値ＳＦＴが示す対応関係（図３参照）に従って、多値書き込みデータＤＷＭを書き込みデータＤＷに変換する。例えば、シフト値ＳＦＴが“３”の場合、書き込みデータ変換回路１１０は、図３に示される変換パターンに従って、多値書き込みデータ「１０、１０、１０、００」を、書き込みデータ「１１、１１、１１、０１」に変換する。そして、書き込みデータ変換回路１１０は、書き込みデータＤＷとシフト値ＳＦＴを、Ｒ／Ｗ制御回路５０に出力する。
【００５８】
ステップＳ５０：
Ｒ／Ｗ制御回路５０は、アクセスを行うメモリセルのアドレスを示す「アドレスデータＤＡ」をＩ／Ｏバッファ３０から受け取り、そのアドレスデータＤＡを、Ｘデコーダ６１及びＹデコーダ６２に出力する。これにより、所定のワード線ＷＬ及びビット線ＤＬが選択され、アクセスが行われる「メモリセル群」及び「シフト値格納メモリセル２６」が選択される。また、Ｒ／Ｗ制御回路５０は、書き込みデータＤＷに応じて、書き込み電圧等の設定を行う。
【００５９】
ステップＳ６０：
Ｒ／Ｗ制御回路５０は、Ｙセレクタ６３を介して、書き込みデータＤＷを選択されたメモリセル群に書き込み、シフト値ＳＦＴをシフト値格納メモリセル２６（シフト値格納領域）に書き込む。このように、シフト値ＳＦＴも２ビットで表現される場合、そのシフト値ＳＦＴをメモリセルアレイ２０内に格納することが可能であり、好適である。但し、シフト値ＳＦＴが格納される領域は、メモリセルアレイ２０内のシフト値格納メモリセル群２５に限られない。シフト値ＳＦＴを格納するためのシフト値格納領域が、メモリセルアレイ２０から独立して設けられてもよい。この場合、Ｒ／Ｗ制御回路５０は、シフト値ＳＦＴをそのシフト値格納領域に格納する。
【００６０】
このように、本発明に係る不揮発性半導体記憶装置１０によれば、書き込みが行われるメモリセル群の閾値電圧Ｖｔｈの和、あるいは閾値電圧Ｖｔｈに対応した定数の和が最小になるように、入力データＤｉｎが書き込みデータＤＷに変換される。そして、入力データＤｉｎの代わりに、その書き込みデータＤＷが実際にメモリセル群に書き込まれる。従って、データの書き込み時間が低減される。
【００６１】
（読み出し動作）
図８は、本発明に係る不揮発性半導体記憶装置１０における「読み出し動作」を説明するためのフローチャートである。
【００６２】
ステップＳ７０：
Ｒ／Ｗ制御回路５０は、アクセスを行うメモリセルのアドレスを示す「アドレスデータＤＡ」をＩ／Ｏバッファ３０から受け取り、そのアドレスデータＤＡを、Ｘデコーダ６１及びＹデコーダ６２に出力する。これにより、所定のワード線ＷＬ及びビット線ＤＬが選択され、アクセスが行われる「メモリセル群」及び「シフト値格納メモリセル２６」が選択される。
【００６３】
その後、Ｒ／Ｗ制御回路５０は、Ｙセレクタ６３を介して、選択されたメモリセル群から「読み出しデータＤＲ」を読み出し、シフト値格納メモリセル２６（シフト値格納領域）から「シフト値ＳＦＴ」を読み出す。ここで、データの読み出しは、メモリセルの閾値電圧Ｖｔｈを、図２に示された読み出し基準電圧Ｖｒｅｆ１〜Ｖｒｅｆ３と比較することにより行われる。図２に示されるように、これら読み出し基準電圧Ｖｒｅｆ１〜Ｖｒｅｆ３は、分布間のマージンに位置するように設定されている。読み出された読み出しデータＤＲ及びシフト値ＳＦＴは、Ｒ／Ｗ制御回路５０から、データ処理回路１００の読み出しデータ変換回路１２０に出力される。
【００６４】
ステップＳ８０：
データ処理回路１００の読み出しデータ変換回路１２０は、読み出しデータＤＲとシフト値ＳＦＴを受け取る。読み出しデータ変換回路１２０は、シフト値ＳＦＴをシフト値決定回路１３０から受け取ってもよい。そして、読み出しデータ変換回路１２０は、そのシフト値ＳＦＴが示す対応関係（図３参照）に従って、読み出しデータＤＲを「多値読み出しデータＤＲＭ」に変換する。例えば、読み出しデータＤＲが「１１、１１、１１、０１」であり、シフト値ＳＦＴが“３”の場合、読み出しデータ変換回路１２０は、図３に示される変換パターンに従って、読み出しデータ「１１、１１、１１、０１」を、多値読み出しデータ「１０、１０、１０、００」に変換する。すなわち、この読み出しデータ変換回路１２０によって、読み出しデータＤＲは、多値書き込みデータＤＷＭに対応した多値読み出しデータＤＲＭに復元される。この多値読み出しデータＤＲＭは、２値変換部４２に出力される。
【００６５】
ステップＳ９０：
２値変換部４２は、その多値読み出しデータＤＲＭを、２値データである「２値読み出しデータＤＲＢ」に変換する。例えば、多値データ「１０、１０、１０、００」は、２値データ「１、０、１、０、１、０、０、０」に変換される。このように生成された２値読み出しデータＤＲＢは、Ｉ／Ｏバッファ３０に出力される。
【００６６】
ステップＳ１００：
２値読み出しデータＤＲＢは、「出力データＤｏｕｔ」として、Ｉ／Ｏバッファ３０から外部に出力される。この出力データＤｏｕｔは、入力データＤｉｎに対応している。
【００６７】
次に、図９Ａ〜図９Ｄを参照して、以上に説明された本発明に係る不揮発性半導体記憶装置１０による効果を説明する。
【００６８】
今、入力データＤｉｎとして「１、０、１、０、１、０、０、０」がＩ／Ｏバッファ３０に入力されたとする。シフト値ＳＦＴが「０」の場合、図９Ａに示されるように、書き込みデータＤＷとして、「１０、１０、１０、００」が生成される（図３参照）。この時、指定された４つのメモリセル２１のそれぞれには、閾値電圧がそれぞれＶｔｍ１、Ｖｔｍ１、Ｖｔｍ１、Ｖｔｍ３になるように、電子が注入される。
【００６９】
図１０は、閾値電圧Ｖｔｍ３、Ｖｔｍ２、Ｖｔｍ１、Ｖｔｍ０のそれぞれに対応づけられた上記“所定の定数”の例を示す。これら“所定の定数”は、書き込み時間に対応した値を示している。図１０において、閾値電圧Ｖｔｍ３、Ｖｔｍ２、Ｖｔｍ１、Ｖｔｍ０のそれぞれに対応する定数は、それぞれ“３”、“２”、“１”、“０”で表されるとする。この時、上述の例において、４つのメモリセル２１のそれぞれに対する書き込み時間は、“１”、“１”、“１”、“３”となり、総書き込み時間Ｔａｌｌは“６”で与えられる。
【００７０】
また、シフト値ＳＦＴが「１」の場合、図９Ｂに示されるように、書き込みデータＤＷとして、「０１、０１、０１、１１」が生成される（図３参照）。この時、指定された４つのメモリセル２１のそれぞれには、閾値電圧がそれぞれＶｔｍ２、Ｖｔｍ２、Ｖｔｍ２、Ｖｔｍ０になるように、電子が注入される。この時、その４つのメモリセル２１のそれぞれに対する書き込み時間は、“２”、“２”、“２”、“０”となり、総書き込み時間Ｔａｌｌは“６”で与えられる。
【００７１】
また、シフト値ＳＦＴが「２」の場合、図９Ｃに示されるように、書き込みデータＤＷとして、「００、００、００、１０」が生成される（図３参照）。この時、指定された４つのメモリセル２１のそれぞれには、閾値電圧がそれぞれＶｔｍ３、Ｖｔｍ３、Ｖｔｍ３、Ｖｔｍ１になるように、電子が注入される。この時、その４つのメモリセル２１のそれぞれに対する書き込み時間は、“３”、“３”、“３”、“１”となり、総書き込み時間Ｔａｌｌは“１０”で与えられる。
【００７２】
また、シフト値ＳＦＴが「３」の場合、図９Ｄに示されるように、書き込みデータＤＷとして、「１１、１１、１１、０１」が生成される（図３参照）。この時、指定された４つのメモリセル２１のそれぞれには、閾値電圧がそれぞれＶｔｍ０、Ｖｔｍ０、Ｖｔｍ０、Ｖｔｍ２になるように、電子が注入される。この時、その４つのメモリセル２１のそれぞれに対する書き込み時間は、“０”、“０”、“０”、“２”となり、総書き込み時間Ｔａｌｌは“２”で与えられる。
【００７３】
上述のように、シフト値決定回路１３０（判定回路２０２）は、書き込みが行われるメモリセル群の閾値電圧Ｖｔｈに対応した定数の和が最小になるように、つまり、総書き込み時間Ｔａｌｌが最小になるように、シフト値ＳＦＴを選択する。すなわち、本発明に係る不揮発性半導体記憶装置１０によれば、シフト値ＳＦＴとして「３」が選択される。この時、総書き込み時間Ｔａｌｌは“２”で与えられる。
【００７４】
比較のため、従来技術による動作を検討する。特許文献１及び特許文献２に開示された技術によれば、入力データは「正転」あるいは「反転」させられた後に、メモリセル群に書き込まれる。「正転」の場合は、図９Ａに示されたシフト値ＳＦＴが「０」の場合に対応する。この時、総書き込み時間Ｔａｌｌは“６”で与えられる。一方、「反転」の場合は、図９Ｂに示されたシフト値ＳＦＴが「１」の場合に対応する。この時、総書き込み時間Ｔａｌｌは“６”で与えられる。
【００７５】
以上に説明されたように、本発明に係る不揮発性半導体記憶装置１０及びデータ読み書き方法によれば、データの書き込み時間が低減される。従って、不揮発性半導体記憶装置１０の動作速度が向上する。
【００７６】
次に、本発明に係るシフト値決定回路１３０の構成・動作、及びシフト値ＳＦＴを決定する方法を更に詳しく説明する。
【００７７】
（第一の実施の形態）
図１１は、本発明の第一の実施の形態に係るシフト値決定回路１３０の構成を詳しく示すブロック図である。このシフト値決定回路１３０は、シフト値生成回路１３１、検証データ生成回路１３２、カウンタ１３３、乗算器１３４、加算器１３５、計算値レジスタ１３６、比較器１３７、参照値レジスタ１３８、及び結果格納回路１３９を備えている。シフト値生成回路１３１は、複数の仮シフト値ＳＦＴ’（０〜３）を順番に生成し出力する回路である。また、参照値レジスタ１３８は、「参照値Ｔｒｅｆ」を格納する。ここで、参照値Ｔｒｅｆとは、書き込み時間を示し、書き換え可能な量である。
【００７８】
シフト値生成回路１３１は、検証データ生成回路１３２及び結果格納回路１３９に接続されている。カウンタ１３３は、検証データ生成回路１３２に接続されている。乗算器１３４は、カウンタ１３３に接続されている。加算器１３５は、乗算器１３４に接続されている。計算値レジスタ１３６は、加算器１３５に接続されている。比較器１３７は、計算値レジスタ１３６、参照値レジスタ１３８、結果格納回路１３９に接続されている。
【００７９】
図１２は、このシフト値決定回路１３０の動作を示すフローチャートである。
【００８０】
ステップＳ３１：
図７に示されたステップＳ２０の後、このシフト値決定回路１３０の初期化が行われる。具体的には、シフト値生成回路１３１から出力される仮シフト値ＳＦＴ’が「０」に設定される。また、参照値レジスタ１３８に格納されている参照値Ｔｒｅｆが、リセット信号ＲＥＳによって、最大値に設定される。ここで、最大値とは、書き込み時間のうちで最大の時間を示す。
【００８１】
ステップＳ３２：
シフト値生成回路１３１は、まず、仮シフト値ＳＦＴ’として「０」を、検証データ生成回路１３２と結果格納回路１３９に出力する。検証データ生成回路１３２は、上述の通り、その仮シフト値ＳＦＴ’を用いることによって、多値書き込みデータＤＷＭから検証データＤＴを生成する。その検証データＤＴは、検証データ生成回路１３２からカウンタ１３３に出力される。
【００８２】
カウンタ１３３は、検証データＤＴに含まれる複数の書き込みデータ値（００、０１、１０、１１）のそれぞれの個数をカウントする。例えば、検証データＤＴが「１０、１０、１０、００」の場合、書き込みデータ値００、０１、１０、１１のそれぞれの個数ｊ、ｋ、ｌ、ｍ（図２参照）として、１個、０個、３個、０個が得られる。カウンタ１３３は、これら得られた個数を示すカウント信号ＳＣを、乗算器１３４に出力する。
【００８３】
乗算器１３４は、カウント信号ＳＣが示す複数のデータ値の個数のそれぞれに、所定の定数を掛ける。この所定の定数は、例えば、図１０に示された複数の閾値電圧のそれぞれに対応付けられた書き込み時間である。つまり、閾値電圧Ｖｔｍ３に対応する書き込みデータ値００の個数ｊには、定数“３”が掛けられる。閾値電圧Ｖｔｍ２に対応する書き込みデータ値０１の個数ｋには、定数“２”が掛けられる。閾値電圧Ｖｔｍ１に対応する書き込みデータ値１０の個数ｌには、定数“１”が掛けられる。閾値電圧Ｖｔｍ０に対応する書き込みデータ値１１の個数ｍには、定数“０”が掛けられる。これにより、複数の乗算値（３×ｊ）、（２×ｋ）、（１×ｌ）、（０×ｍ）が算出される。
【００８４】
加算器１３５は、乗算器１３４によって算出された複数の乗算値を足し合わせる。これにより、総書き込み時間Ｔａｌｌが算出される。この総書き込み時間Ｔａｌｌは、Ｔａｌｌ＝（３×ｊ）＋（２×ｋ）＋（１×ｌ）＋（０×ｍ）により与えられる。加算器１３５は、算出された総書き込み時間Ｔａｌｌを示す書き込み時間信号ＳＴを、計算値レジスタ１３６に出力する。以上に示されたように、これらカウンタ１３３、乗算器１３４、加算器１３５の組み合わせは、図６に示された書き込み時間算出回路２０１に相当する。
【００８５】
ステップＳ３３：
計算値レジスタ１３６は、書き込み時間信号ＳＴが示す時間を計算値Ｔｃａｌｃとして格納する。また、参照値レジスタ１３８は、参照値Ｔｒｅｆを格納している。上述のように、この参照値Ｔｒｅｆの初期値は最大値である。比較器１３７は、コントロール信号ＣＮＴによって活性化されると、この計算値Ｔｃａｌｃと参照値Ｔｒｅｆとの比較を実行する。
【００８６】
計算値Ｔｃａｌｃが参照値Ｔｒｅｆより小さい場合（ステップＳ３４；Ｙｅｓ）、比較器１３７は、シフト値設定信号ＳＳを結果格納回路１３９に出力する。この結果格納回路１３９は、このシフト値決定回路１３０が決定するシフト値ＳＦＴを格納するための回路である。シフト値設定信号ＳＳを受け取った場合、結果格納回路１３９は、その時の仮シフト値ＳＦＴ’を読み込み、その仮シフト値ＳＦＴ’でシフト値ＳＦＴを更新する（ステップＳ３５）。また、比較器１３７は、その時の計算値Ｔｃａｌｃを新たな参照値Ｔｒｅｆとして、参照値レジスタ１３８に出力する。これにより、参照値レジスタ１３８に格納される参照値が更新される（ステップＳ３６）。これら計算値レジスタ１４６、比較器１４７、参照値レジスタ１４８、結果格納回路１４９は、図６に示された判定回路２０２として機能する。
【００８７】
計算値Ｔｃａｌｃが参照値Ｔｒｅｆより大きい場合（ステップＳ３４；Ｎｏ）、ステップＳ３５とステップＳ３６は実行されない。次に、シフト値生成回路１３１は、次の仮シフト値ＳＦＴ’を出力する（ステップＳ３７）。具体的には、シフト値生成回路１３１は、仮シフト値ＳＦＴ’に１を加算して出力する。このようにして、シフト値生成回路１３１は、仮シフト値ＳＦＴ’として「０」、「１」、「２」、「３」を順番に出力する。そして、各仮シフト値ＳＦＴ’に対して、上述と同様の処理が実行される。
【００８８】
ステップＳ３８：
全ての仮シフト値ＳＦＴ’に対する総書き込み時間Ｔａｌｌの検証が完了した時、結果格納回路１３９には、最短の総書き込み時間Ｔａｌｌに関連するシフト値ＳＦＴが格納されている。このようにして、１つのシフト値ＳＦＴが決定される。その後、結果格納回路１３９に格納されたシフト値ＳＦＴは、書き込みデータ変換回路１１０によって取り込まれ、図７に示されたステップＳ４０が実行される。
【００８９】
このようにして、本実施の形態に係るシフト値決定回路１３０によれば、書き込みが行われるメモリセル群の閾値電圧Ｖｔｈに対応した定数の和が最小になるように、シフト値ＳＦＴが選択される。従って、本発明に係る不揮発性半導体記憶装置１０及びデータ読み書き方法によれば、データの書き込み時間が低減される。
【００９０】
（第二の実施の形態）
図１３は、本発明の第二の実施の形態に係るシフト値決定回路１３０の構成を詳しく示すブロック図である。このシフト値決定回路１３０は、シフト値生成回路１４１、検証データ生成回路１４２、カウンタ１４３、乗算器１４４、加算器１４５、計算値レジスタ１４６、比較器１４７、参照値レジスタ１４８、及び結果格納回路１４９を備えている。
【００９１】
シフト値生成回路１４１は、検証データ生成回路１４２、カウンタ１４３、及び結果格納回路１４９に接続されている。カウンタ１４３は、検証データ生成回路１４２に接続されている。乗算器１４４は、カウンタ１４３に接続されている。加算器１４５は、乗算器１４４に接続されている。計算値レジスタ１４６は、加算器１４５に接続されている。比較器１４７は、計算値レジスタ１４６、参照値レジスタ１４８、結果格納回路１４９に接続されている。
【００９２】
第一の実施の形態と同様に、まず、このシフト値決定回路１３０の初期化が行われる（ステップＳ３１）。具体的には、シフト値生成回路１４１から出力される仮シフト値ＳＦＴ’が「０」に設定される。また、参照値レジスタ１４８に格納されている参照値Ｔｒｅｆが、リセット信号ＲＥＳによって、最大値に設定される。ここで、最大値とは、書き込み時間のうちで最大の時間を示す。
【００９３】
シフト値生成回路１４１は、まず、仮シフト値ＳＦＴ’として「０」を、検証データ生成回路１４２及び結果格納回路１４９と共に、カウンタ１４３にも出力する。検証データ生成回路１４２は、上述の通り、その仮シフト値ＳＦＴ’を用いることによって、多値書き込みデータＤＷＭから検証データＤＴを生成する。カウンタ１４３は、検証データＤＴに含まれる複数のデータ値（００、０１、１０、１１）のそれぞれの個数に加えて、仮シフト値ＳＦＴ’が示すデータ値の個数をカウントする。例えば、仮シフト値ＳＦＴ’が「０」の場合、データ値１１の個数ｍに更に１が加算され、仮シフト値ＳＦＴ’が「３」の場合、データ値００の個数ｊに更に１が加算される。カウンタ１４３は、これら得られた個数を示すカウント信号ＳＣを、乗算器１４４に出力する。
【００９４】
乗算器１４４は、カウント信号ＳＣが示す複数のデータ値の個数のそれぞれに、図１０に示された所定の定数を掛ける。これにより、複数の乗算値（３×ｊ）、（２×ｋ）、（１×ｌ）、（０×ｍ）が算出される。加算器１４５は、乗算器１４４によって算出された複数の乗算値を足し合わせる。これにより、総書き込み時間Ｔａｌｌが算出される（ステップＳ３２）。この総書き込み時間Ｔａｌｌは、Ｔａｌｌ＝（３×ｊ）＋（２×ｋ）＋（１×ｌ）＋（０×ｍ）により与えられる。加算器１４５は、算出された総書き込み時間Ｔａｌｌを示す書き込み時間信号ＳＴを、計算値レジスタ１４６に出力する。以上に示されたように、これらカウンタ１４３、乗算器１４４、加算器１４５の組み合わせは、図６に示された書き込み時間算出回路２０１に相当する。
【００９５】
計算値レジスタ１４６は、書き込み時間信号ＳＴが示す時間を計算値Ｔｃａｌｃとして格納する。また、参照値レジスタ１４８は、参照値Ｔｒｅｆを格納している。比較器１４７は、コントロール信号ＣＮＴによって活性化されると、この計算値Ｔｃａｌｃと参照値Ｔｒｅｆとの比較を実行する（ステップＳ３３）。計算値Ｔｃａｌｃが参照値Ｔｒｅｆより小さい場合（ステップＳ３４；Ｙｅｓ）、結果格納回路１４９に格納されているシフト値ＳＦＴは、その時の仮シフト値ＳＦＴ’で更新される（ステップＳ３５）。また、参照値レジスタ１４８に格納されている参照値が、その時の計算値Ｔｃａｌｃで更新される（ステップＳ３６）。
【００９６】
計算値Ｔｃａｌｃが参照値Ｔｒｅｆより大きい場合（ステップＳ３４；Ｎｏ）、ステップＳ３５とステップＳ３６は実行されない。次に、シフト値生成回路１４１は、次の仮シフト値ＳＦＴ’を出力する（ステップＳ３７）。具体的には、シフト値生成回路１４１は、仮シフト値ＳＦＴ’に１を加算して出力する。このようにして、シフト値生成回路１４１は、仮シフト値ＳＦＴ’として「０」、「１」、「２」、「３」を順番に出力する。そして、各仮シフト値ＳＦＴ’に対して、上述と同様の処理が実行される。
【００９７】
全ての仮シフト値ＳＦＴ’に対する総書き込み時間Ｔａｌｌの検証が完了した時（ステップＳ３８；Ｙｅｓ）、結果格納回路１４９には、最短の総書き込み時間Ｔａｌｌに関連するシフト値ＳＦＴが格納されている。このようにして、１つのシフト値ＳＦＴが決定される。その後、結果格納回路１４９に格納されたシフト値ＳＦＴは、書き込みデータ変換回路１１０によって取り込まれ、図７に示されたステップＳ４０が実行される。
【００９８】
本実施の形態によれば、総書き込み時間Ｔａｌｌの算出に、メモリセル群に書き込まれる書き込みデータＤＷだけでなく、シフト値格納メモリセル２６に書き込まれるシフト値ＳＦＴも考慮に入れられる。従って、総書き込み時間Ｔａｌｌがより正確に算出されるという効果が得られる。
【００９９】
（第三の実施の形態）
図１４は、本発明の第三の実施の形態に係るシフト値決定回路１３０の構成を詳しく示すブロック図である。このシフト値決定回路１３０は、シフト値生成回路１５１、複数の検証データ生成回路１５２、乗算器１５４、加算器１５５、計算値レジスタ１５６、比較器１５７、参照値レジスタ１５８、及び結果格納回路１５９を備えている。
【０１００】
シフト値生成回路１５１は、複数の検証データ生成回路１５２、乗算器１５４、及び結果格納回路１５９に接続されている。乗算器１５４は、複数の検証データ生成回路１５２に接続されている。加算器１５５は、乗算器１５４に接続されている。計算値レジスタ１５６は、加算器１５５に接続されている。比較器１５７は、計算値レジスタ１５６、参照値レジスタ１５８、結果格納回路１５９に接続されている。
【０１０１】
第一の実施の形態と同様に、まず、このシフト値決定回路１３０の初期化が行われる（ステップＳ３１）。具体的には、シフト値生成回路１５１から出力される仮シフト値ＳＦＴ’が「０」に設定される。また、参照値レジスタ１５８に格納されている参照値Ｔｒｅｆが、リセット信号ＲＥＳによって、最大値に設定される。ここで、最大値とは、書き込み時間のうちで最大の時間を示す。
【０１０２】
シフト値生成回路１５１は、まず、仮シフト値ＳＦＴ’として「０」を、複数の検証データ生成回路１５２、乗算器１５４、及び結果格納回路１５９に出力する。複数の検証データ生成回路１５２は、多値書き込みデータＤＷＭを１つのメモリセルに格納される１データ（“００”、“０１”、“１０”、“１１”）ごとにパラレルに受け取る。そして、各々の検証データ生成回路１５２は、仮シフト値ＳＦＴ’を用いることによって、受け取ったデータから検証データＤＴを生成する。複数の検証データ生成回路１５２のそれぞれは、複数の検証データＤＴのそれぞれを乗算器１５４に出力する。
【０１０３】
乗算器１５４は、複数の検証データＤＴ及び仮シフト値ＳＦＴ’をパラレルに受け取る。そして、乗算器１５４は、複数の検証データＤＴ及び仮シフト値ＳＦＴ’が示すデータ値に応じて、それぞれの個数（１個）に、図１０に示された所定の定数を掛ける。これにより、複数の乗算値が算出される。加算器１５５は、乗算器１５４によって算出された複数の乗算値を足し合わせる。これにより、総書き込み時間Ｔａｌｌが算出される（ステップＳ３２）。加算器１５５は、算出された総書き込み時間Ｔａｌｌを示す書き込み時間信号ＳＴを、計算値レジスタ１５６に出力する。
【０１０４】
計算値レジスタ１５６は、書き込み時間信号ＳＴが示す時間を計算値Ｔｃａｌｃとして格納する。また、参照値レジスタ１５８は、参照値Ｔｒｅｆを格納している。比較器１５７は、コントロール信号ＣＮＴによって活性化されると、この計算値Ｔｃａｌｃと参照値Ｔｒｅｆとの比較を実行する（ステップＳ３３）。計算値Ｔｃａｌｃが参照値Ｔｒｅｆより小さい場合（ステップＳ３４；Ｙｅｓ）、結果格納回路１５９に格納されているシフト値ＳＦＴは、その時の仮シフト値ＳＦＴ’で更新される（ステップＳ３５）。また、参照値レジスタ１５８に格納されている参照値が、その時の計算値Ｔｃａｌｃで更新される（ステップＳ３６）。
【０１０５】
計算値Ｔｃａｌｃが参照値Ｔｒｅｆより大きい場合（ステップＳ３４；Ｎｏ）、ステップＳ３５とステップＳ３６は実行されない。次に、シフト値生成回路１５１は、次の仮シフト値ＳＦＴ’を出力する（ステップＳ３７）。具体的には、シフト値生成回路１５１は、仮シフト値ＳＦＴ’に１を加算して出力する。このようにして、シフト値生成回路１５１は、仮シフト値ＳＦＴ’として「０」、「１」、「２」、「３」を順番に出力する。そして、各仮シフト値ＳＦＴ’に対して、上述と同様の処理が実行される。
【０１０６】
全ての仮シフト値ＳＦＴ’に対する総書き込み時間Ｔａｌｌの検証が完了した時（ステップＳ３８；Ｙｅｓ）、結果格納回路１５９には、最短の総書き込み時間Ｔａｌｌに関連するシフト値ＳＦＴが格納されている。このようにして、１つのシフト値ＳＦＴが決定される。その後、結果格納回路１５９に格納されたシフト値ＳＦＴは、書き込みデータ変換回路１１０によって取り込まれ、図７に示されたステップＳ４０が実行される。
【０１０７】
本実施の形態によれば、多値書き込みデータＤＷＭ、複数の検証データＤＴ、複数の乗算値がパラレルに入出力される。従って、総書き込み時間Ｔａｌｌの算出時間が低減される。従って、データの書き込み時間が更に低減されるという効果が得られる。
【０１０８】
（第四の実施の形態）
メモリセルに格納されるデータは、４値データ（２ビットデータ）に限られない。図１５は、本発明に係る不揮発性半導体記憶装置における閾値電圧Ｖｔｈの分布の他の例を示している。図１５において、縦軸は、メモリセルの閾値電圧Ｖｔｈを表し、横軸は、メモリセルの数（分布頻度）を表している。この不揮発性半導体記憶装置によれば、例えば、１つのメモリセルに８値（３ビット）データを格納することが可能であり、図１５に示されるように、メモリセル全体の閾値電圧Ｖｔｈの分布は、分布Ｂ０〜Ｂ７の８つを有している。ここで、分布Ｂ０〜Ｂ７のそれぞれを代表する閾値電圧Ｖｔｈを、閾値電圧Ｖｔｍ０〜Ｖｔｍ７とする。また、分布Ｂ０〜Ｂ７のそれぞれに含まれるメモリセル２１の数は、ｑ〜ｊであるとする。
【０１０９】
メモリセルに対するデータの書き込み時間は、書き込み後の閾値電圧Ｖｔｈに依存する。メモリセルトランジスタに与える電位と、その電位を与える時間が一定の場合、書き込み後の閾値電圧Ｖｔｈが高いほど、電子の注入に要する時間、すなわち書き込み時間は長くなる。逆に、書き込み後の閾値電圧Ｖｔｈが低いほど、書き込み時間は短くなる。図１５に示された例の場合、閾値電圧Ｖｔｍ７が最も高く、書き込み時間は最も長くなる。一方、閾値電圧Ｖｔｍ０は最も低く、書き込み時間は最も短くなる。図１６は、閾値電圧Ｖｔｍ７〜Ｖｔｍ０のそれぞれに対応する所定の定数を示す。図１６に示されるように、閾値電圧Ｖｔｍ７〜Ｖｔｍ０のそれぞれに対応する所定の定数は、所定の単位を用いて、それぞれ“７”〜“０”で表されるとする。
【０１１０】
この時、選択されたメモリセル群に対する総書き込み時間Ｔａｌｌは、Ｔａｌｌ＝（７×ｊ）＋（６×ｋ）＋（５×ｌ）＋（４×ｍ）＋（３×ｎ）＋（２×ｏ）＋（１×ｐ）＋（０×ｑ）により与えられる。上述の実施の形態と同様に、データ処理回路１００のシフト値決定回路１３０は、この総書き込み時間Ｔａｌｌが最小になるように、つまり、メモリセル群の閾値電圧Ｖｔｈの和が最小になるように、複数のシフト値ＳＦＴから１つのシフト値ＳＦＴを選択する。
【０１１１】
より一般的に、Ｎ値データ（Ｎは３以上の自然数）の場合、そのＮ値データは、第１〜第Ｎデータ値を含む。また、メモリセルは、Ｎ段階の閾値電圧（第１〜第Ｎ閾値電圧）を有する。この場合、複数のシフト値ＳＦＴとして、最大Ｎ！種類のシフト値ＳＦＴが存在し得る。シフト値ＳＦＴ自身をＮ値データが格納されるメモリセルと同様のメモリセルに格納するために、Ｎ種類のシフト値ＳＦＴ（第１〜第Ｎシフト値）が用いられると好適である。このＮ種類のシフト値ＳＦＴは、それぞれ異なるＮ種類の対応関係を示す。例えば、第１シフト値は、第１〜第Ｎデータ値のそれぞれを、第１〜第Ｎ閾値電圧のそれぞれに対応づける。第ｉシフト値（ｉは２以上Ｎ以下の自然数）は、第１〜第（ｉ−１）データ値のそれぞれを、第（Ｎ−ｉ＋２）〜第Ｎ閾値電圧のそれぞれに対応づけ、且つ、第ｉ〜第Ｎデータ値のそれぞれを、第１〜第（Ｎ−ｉ＋１）閾値電圧のそれぞれに対応づける（図３参照）。この場合、シフト値ＳＦＴが変化するごとに、閾値電圧（書き込みデータ）が“シフト”する。
【０１１２】
以上に説明されたように、本発明に係る不揮発性半導体記憶装置１０及びデータ読み書き方法によれば、データの書き込み時間が低減される。従って、不揮発性半導体記憶装置１０の動作速度が向上する。
【図面の簡単な説明】
【０１１３】
【図１】図１は、多値型の不揮発性半導体記憶装置におけるメモリセルの閾値電圧の分布を示す図である。
【図２】図２は、本発明に係る不揮発性半導体記憶装置における閾値電圧の分布例を示す図である。
【図３】図３は、本発明におけるシフト値を説明するための図である。
【図４】図４は、本発明に係る不揮発性半導体記憶装置の構成を示すブロック図である。
【図５】図５は、本発明に係る不揮発性半導体記憶装置のメモリセルアレイの構成を示す回路図である。
【図６】図６は、本発明に係る不揮発性半導体記憶装置のシフト値決定回路の構成を示すブロック図である。
【図７】図７は、本発明に係る不揮発性半導体記憶装置における書き込み動作を示すフローチャートである。
【図８】図８は、本発明に係る不揮発性半導体記憶装置における読み出し動作を示すフローチャートである。
【図９Ａ】図９Ａは、本発明に係る不揮発性半導体記憶装置による効果を説明するための図である。
【図９Ｂ】図９Ｂは、本発明に係る不揮発性半導体記憶装置による効果を説明するための図である。
【図９Ｃ】図９Ｃは、本発明に係る不揮発性半導体記憶装置による効果を説明するための図である。
【図９Ｄ】図９Ｄは、本発明に係る不揮発性半導体記憶装置による効果を説明するための図である。
【図１０】図１０は、本発明に係る不揮発性半導体記憶装置による効果を説明するための図である。
【図１１】図１１は、本発明の第一の実施の形態に係るシフト値決定回路の構成を示すブロック図である。
【図１２】図１２は、本発明の第一の実施の形態に係る不揮発性半導体記憶装置における書き込み動作を示すフローチャートである。
【図１３】図１３は、本発明の第二の実施の形態に係るシフト値決定回路の構成を示すブロック図である。
【図１４】図１４は、本発明の第三の実施の形態に係るシフト値決定回路の構成を示すブロック図である。
【図１５】図１５は、本発明の第四の実施の形態に係る不揮発性半導体記憶装置における書き込み動作を説明するための図である。
【図１６】図１６は、本発明の第四の実施の形態に係る不揮発性半導体記憶装置における書き込み動作を説明するための図である。
【符号の説明】
【０１１４】
１０    不揮発性半導体記憶装置
２０    メモリセルアレイ
２１    メモリセル
２５    シフト値格納メモリセル群
２６    シフト値格納メモリセル
３０    Ｉ／Ｏバッファ
４１    多値変換部
４２    ２値変換部
５０    Ｒ／Ｗ制御回路
６１    Ｘデコーダ
６２    Ｙデコーダ
６３    Ｙセレクタ
１００    データ処理回路
１１０    書き込みデータ変換回路
１２０    読み出しデータ変換回路
１３０    シフト値決定回路
１３１、１４１、１５１    シフト値生成回路
１３２、１４２、１５２    検証データ生成回路
１３３、１４３    カウンタ
１３４、１４４、１５４    乗算器
１３５、１４５、１５５    加算器
１３６、１４６、１５６    計算値レジスタ
１３７、１４７、１５７    比較器
１３８、１４８、１５８    参照値レジスタ
１３９、１４９、１５９    結果格納回路
２０１    書き込み時間算出回路
２０２    判定回路
【図１】
2006031755.tif 000003
【図２】
2006031755.tif 000004
【図３】
2006031755.tif 000005
【図４】
2006031755.tif 000006
【図５】
2006031755.tif 000007
【図６】
2006031755.tif 000008
【図７】
2006031755.tif 000009
【図８】
2006031755.tif 000010
【図９Ａ】
2006031755.tif 000011
【図９Ｂ】
2006031755.tif 000012
【図９Ｃ】
2006031755.tif 000013
【図９Ｄ】
2006031755.tif 000014
【図１０】
2006031755.tif 000015
【図１１】
2006031755.tif 000016
【図１２】
2006031755.tif 000017
【図１３】
2006031755.tif 000018
【図１４】
2006031755.tif 000019
【図１５】
2006031755.tif 000020
【図１６】
2006031755.tif 000021