"ワード線、及びビット線に接続された複数のメモリセルがマトリックス状に配置されたメモリセルアレイと、書き込み動作におけるワード線の書き込み電圧を発生する電圧発生回路とを具備し、前記電圧発生回路は、基準電圧を可変する可変回路をさらに有し、前記可変回路は前記書き込み電圧の増加に伴い基準電圧を増加することを特徴とする半導体記憶装置。ワード線、及びビット線に接続された複数のメモリセルがマトリックス状に配置されたメモリセルアレイと、前記ワード線、及びビット線の電位を制御する制御回路と、電圧発生回路とを有し、前記電圧発生回路は、書き込み電圧を発生し、前記制御回路は前記電圧発生回路からの前記書き込み電圧に基づき第1回目の書込み動作を行い、前記電圧発生回路は、第1書込み電圧より第1ステップ電圧分高い電圧を発生し、第2回目の書込み動作を行い、前記電圧発生回路は、第n-1書き込み電圧より第n-1ステップ電圧分高い電圧を発生し、第n回目の書込み動作を行い、前記電圧発生回路は、第n書き込み電圧より第nステップ電圧分高い電圧を発生し、第n1回目の書込み動作を行い、前記第nステップ電圧は、第n-1ステップ電圧≦第nステップ電圧であることを特徴とする半導体記憶装置。本発明は、記憶すべきデータの数を削減して複数の電圧を容易に発生することが可能な半導体記憶装置を提供しようとするものである。本発明の半導体記憶装置の第1の態様は、ワード線、及びビット線に接続された複数のメモリセルがマトリックス状に配置されたメモリセルアレイと、書き込み動作におけるワード線の書き込み電圧を発生する電圧発生回路とを具備し、前記電圧発生回路は、基準電圧を可変する可変回路をさらに有し、前記可変回路は前記書き込み電圧の増加に伴い基準電圧を増加することを特徴とする。本発明の半導体記憶装置の第2の態様は、ワード線、及びビット線に接続された複数のメモリセルがマトリックス状に配置されたメモリセルアレイと、前記ワード線、及びビット線の電位を制御する制御回路と、電圧発生回路とを有し、前記電圧発生回路は、書き込み電圧を発生し、前記制御回路は前記電圧発生回路からの前記書き込み電圧に基づき第1回目の書込み動作を行い、前記電圧発生回路は、第1書込み電圧より第1ステップ電圧分高い電圧を発生し、第2回目の書込み動作を行い、前記電圧発生回路は、第n-1書き込み電圧より第n-1ステップ電圧分高い電圧を発生し、第n回目の書込み動作を行い、前記電圧発生回路は、第n書き込み電圧より第nステップ電圧分高い電圧を発生し、第n1回目の書込み動作を行い、前記第nステップ電圧は、第n-1ステップ電圧≦第nステップ電圧であることを特徴とする。以下、実施の形態について、図面を参照して説明する。先ず、本実施形態について概略的に説明する。多値メモリにおいて、書き込み動作を高速化するためには、次のような点に留意する必要が有る。1第1ページと第2ページ、及び隣接セルの第1ページと第2ページについて、書き込み時にワード線に供給される書き込み電圧Vpgmの初期値、及び書き込み電圧の増加分ステップ電圧DVpgmを最適化する。2ワード線のソース側とドレイン側でブースト方式を変える。3ワード線毎にVpgmに補正値を設定する。しかし、1のように書き込み電圧Vpgm及びステップ電圧DVpgmをそれぞれ最適化したデータを記憶するとデータ数が増加する。また、ステップ電圧が1のように異なると、2のブースト方式を変える場合において、書き込み電圧Vpgmの最小電圧が相違する。このため、ワード線毎に、ブースト方式の相違による差電圧EASB-SBEraseselfboostselfboostなどの補正値が異なる。このため、ステップ電圧DVpgm毎に全てのデータが必要となってしまう。一方、書き込み電圧Vpgmは、ポンプ回路をリミッタ回路に制御することにより生成される。リミッタ回路の最小ステップ電圧は、第1ページと第2ページ、及び隣接セルの第1ページと第2ページに対応して、例えば0.3V、0.250V、0.200Vに設定可能とされている。しかし、上記のように多くの最小ステップ電圧を設けると、最小ステップ毎にブースト方式の相違による電位差などの補正値を設ける必要がある。また、リミッタ回路の最小ステップ電圧を、0.3V、0.25V、0.2Vの最小公倍数である50mVとすると、リミッタ回路のステップ幅が一定でなくなるという問題が発生する。このため、リミッタ回路の最小ステップは、なるべく大きなステップ電圧である0.3V、0.25V、0.2Vにする必要がある。そこで、本実施形態において、書き込み電圧Vpgmは、最小ステップ電圧毎に初期値を持たず、書き込み電圧Vpgmの初期値は、トリミングにより設定された1つとする。書き込みの最初に、トリミングした初期Vpgmを一旦、第1ページ、第2ページの奇数ビット線、偶数ビット線の最小ステップ電圧の最大公約数である50mV0.4V=0.05×8、0.5V=0.05×10、0.9V=0.05×18、1.2V=0.05×24毎の電圧に変換し、この電圧に書き込み対象のワード線とVpgmの初期値と他の差電圧、ワード線毎の補正値、EASB-SB差分値などのパラメータを加算する。この後、割り算を行い、リミッタ回路の最小ステップ電圧0.3V=0.05V×6、0.25V=0.05V×5、0.2V=0.05V×4に戻す。このようにすることで、リミッタ回路の最小ステップ電圧毎に、データを用意する必要がなく、複数の電圧を容易に発生することが可能となる。以下、本発明の実施の形態について、図面を参照して説明する。第1の実施形態図1は、本実施形態に係る半導体記憶装置、具体的には例えば4値2ビットのデータを記憶するNAND型フラッシュメモリの構成を示している。メモリセルアレイ1は複数のビット線と複数のワード線と共通ソース線を含み、例えばEEPROMセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ1は、ROM部1-1を有している。このROM部1-1は、所謂フューズとして機能し、出荷前のテスト時に例えばトリミングして得られた後述する各種電圧のデータを記憶している。さらに、メモリセルアレイ1には、ビット線を制御するためのビット線制御回路2とワード線制御回路6が接続されている。ビット線制御回路2は、ビット線を介してメモリセルアレイ1中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ1中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ1中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路2には、カラムデコーダ3、データ入出力バッファ4が接続されている。ビット線制御回路2内のデータ記憶回路はカラムデコーダ3によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ4を介してデータ入出力端子5から外部へ出力される。また、外部からデータ入出力端子5に入力された書き込みデータは、データ入出力バッファ4を介して、カラムデコーダ3によって選択されたデータ記憶回路に入力される。ワード線制御回路6は、メモリセルアレイ1中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。メモリセルアレイ1、ビット線制御回路2、カラムデコーダ3、データ入出力バッファ4、及びワード線制御回路6は、制御信号及び制御電圧発生回路7に接続され、この制御信号及び制御電圧発生回路7によって制御される。制御信号及び制御電圧発生回路7は、制御信号入力端子8に接続され、外部から制御信号入力端子8を介して入力される制御信号によって制御される。制御信号及び制御電圧発生回路7は、後述する演算回路7-1及びVpgm発生部7-2を含んでいる。演算回路7-1はデータの書き込み時に、書き込み電圧を発生するために必要なデータを算出し、Vpgm発生部7-2は演算回路7-1から供給されるデータに応じて書き込み電圧Vpgmを発生する。前記ビット線制御回路2、カラムデコーダ3、ワード線制御回路6、制御信号及び制御電圧発生回路7は書き込み回路、及び読み出し回路を構成している。図2は、図1に示すメモリセルアレイ1及びビット線制御回路2の構成を示している。メモリセルアレイ1には複数のNANDセルが配置されている。1つのNANDセルは、直列接続された例えば32個のEEPROMからなるメモリセルMCと、選択ゲートS1、S2とにより構成されている。選択ゲートS2はビット線BL0eに接続され、選択ゲートS1はソース線SRCに接続されている。各ロウに配置されたメモリセルMCの制御ゲートはワード線WL0~WL29、WL30、WL31に共通接続されている。また、選択ゲートS2はセレクト線SGDに共通接続され、選択ゲートS1はセレクト線SGSに共通接続されている。ビット線制御回路2は複数のデータ記憶回路10を有している。各データ記憶回路10には、一対のビット線BL0e、BL0o、BL1e、BL1o...BLie、BLio、BL8ke、BL8koが接続されている。メモリセルアレイ1は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のNANDセルにより構成され、例えばこのブロック単位でデータが消去される。また、消去動作は、データ記憶回路10に接続されている2本のビット線について同時に行なわれる。また、ビット線の1つおきに配置され、1つのワード線に接続された複数のメモリセル破線で囲まれた範囲のメモリセルは、1セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路10に接続されている2本のビット線BLie、BLioのうち外部より供給されるアドレス信号YA0、YA1...YAi...YA8kに応じて1本のビット線が選択される。さらに、外部アドレスに応じて、1本のワード線が選択される。図3abはメモリセル及び選択トランジスタの断面図を示している。図3aはメモリセルを示している。基板51後述するPウェル領域55にはメモリセルのソース、ドレインとしてのn型拡散層42が形成されている。Pウェル領域55の上にはゲート絶縁膜43を介して浮遊ゲートFG44が形成され、この浮遊ゲート44の上には絶縁膜45を介して制御ゲートCG46が形成されている。図3bは選択ゲートを示している。Pウェル領域55にはソース、ドレインとしてのn型拡散層47が形成されている。Pウェル領域55の上にはゲート絶縁膜48を介して制御ゲート49が形成されている。図4は、図2に示すデータ記憶回路10の一例を示す回路図である。このデータ記憶回路10は、プライマリデータキャッシュPDC、セコンダリデータキャッシュSDC、ダイナミックデータキャッシュDDC、テンポラリデータキャッシュTDCを有している。SDC、PDC、DDCは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。TDCは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。SDCは、ラッチ回路を構成するクロックドインバータ回路61a、61b、及びトランジスタ61c、61dにより構成されている。トランジスタ61cはクロックドインバータ回路61aの入力端と、クロックドインバータ回路61bの入力端の間に接続されている。このトランジスタ61cのゲートには信号EQ2が供給されている。トランジスタ61dはクロックドインバータ回路61bの出力端と接地間に接続されている。このトランジスタ61dのゲートには信号PRSTが供給されている。SDCのノードN2aは、カラム選択トランジスタ61eを介して入出力データ線IOに接続され、ノードN2bは、カラム選択トランジスタ61fを介して入出力データ線IOnに接続される。これらトランジスタ61e、61fのゲートにはカラム選択信号CSLiが供給されている。SDCのノードN2aは、トランジスタ61g、61hを介してPDCのノードN1aに接続されている。トランジスタ61gのゲートには信号BLC2が供給され、トランジスタ61hのゲートには信号BLC1が供給されている。PDCは、クロックドインバータ回路61i、61j及びトランジスタ61kにより構成されている。トランジスタ61kは、クロックドインバータ回路61iの入力端とクロックドインバータ回路61jの入力端の相互間に接続されている。このトランジスタ61kのゲートには信号EQ1が供給されている。PDCのノードN1bはトランジスタ61lのゲートに接続されている。このトランジスタ61lの電流通路の一端はトランジスタ61mを介して接地されている。このトランジスタ61mのゲートには信号CHK1が供給されている。また、トランジスタ61lの電流通路の他端はトランスファーゲートを構成するトランジスタ61n、61oの電流通路の一端に接続されている。このトランジスタ61nのゲートには信号CHK2nが供給されている。また、トランジスタ61oのゲートはSDCのノードN2aに接続されている。トランジスタ61n、61oの電流通路の他端には、信号COMiが供給されている。この信号COMiは全データ記憶回路10に共通の信号であり、全データ記憶回路10のベリファイが完了したかどうかを示す信号である。すなわち、後述するように、ベリファイが完了すると、PDCのノードN1bがローレベルとなる。この状態において、信号CHK1、CHK2nをハイレベルとすると、ベリファイが完了している場合、信号COMiがハイレベルとなる。さらに、前記TDCは、例えばMOSキャパシタ61pにより構成されている。このキャパシタ61pは、前記トランジスタ61g、61hの接続ノードN3と接地間に接続されている。また、接続ノードN3には、トランジスタ61qを介してDDCが接続されている。トランジスタ61qのゲートには、信号REGが供給されている。DDCは、トランジスタ61r、61sにより構成されている。トランジスタ61rの電流通路の一端には信号VREGが供給され、他端は前記トランジスタ61qの電流通路に接続されている。このトランジスタ61rのゲートはトランジスタ61sを介して前記PDCのノードN1aに接続されている。このトランジスタ61sのゲートには信号DTGが供給されている。さらに、前記接続ノードN3にはトランジスタ61t、61uの電流通路の一端が接続されている。トランジスタ61uの電流通路の他端には信号VPREが供給され、ゲートには信号BLPREが供給されている。前記トランジスタ61tのゲートには信号BLCLAMPが供給されている。このトランジスタ61tの電流通路の他端はトランジスタ61vを介してビット線BLoの一端に接続され、トランジスタ61wを介してビット線BLeの一端に接続されている。これらトランジスタ61v、61wのゲートには、信号BLSo、BLSeがそれぞれ供給されている。ビット線BLoの他端はトランジスタ61xの電流通路の一端に接続されている。このトランジスタ61xのゲートには信号BIASoが供給されている。ビット線BLeの他端はトランジスタ61yの電流通路の一端に接続されている。このトランジスタ61yのゲートには信号BIASeが供給されている。これらトランジスタ61x、61yの電流通路の他端には、信号BLCRLが供給されている。トランジスタ61x、61yは、信号BIASo、BIASeに応じて相補的にオンとされ、非選択のビット線に信号BLCRLの電位を供給する。上記各信号及び電圧は、図1に示す制御信号及び制御電圧発生回路7により生成され、この制御信号及び制御電圧発生回路7の制御に基づき、以下の動作が制御される。本NAND型フラッシュメモリは、例えば4値のメモリであり、1つのセルに2ビットのデータを記憶することができる。2ビットの切り替えはアドレス第1ページ、第2ページによって行なう。図5は、図1に示す演算回路7-1の一例を示している。図5において、演算回路7-1は、ラッチ回路71a、71b、71c、セレクタ回路71d、71e、加算回路71f、レジスタ71g、71h、71i、比較器71j、アンド回路71k、71l、オア回路71mにより構成されている。ROM部1-1から読み出されたデータは、ラッチ回路71a、71b、71cに保持される。ラッチ回路71a、71b、71cの出力端及びレジスタ71gの出力端は、セレクタ回路71dの入力端に接続されている。このセレクタ回路71dは、制御信号に応じて入力信号を選択するとともに、入力されたデータをLSBLeastSignificantBit又はMSBMostSignificantBit方向にシフトして出力する機能を有している。このため、データのシフト方向により、入力データが除算、又は乗算される。また、セレクタ回路71eもセレクタ回路71dと同様の機能を有しており、制御信号に応じて、レジスタ71gから供給されたデータを除算、又は乗算して出力する。これらセレクタ回路71d、71eの出力データは加算回路71fに供給され加算される。この加算回路71fの出力データはレジスタ71gにより保持される。また、レジスタ71hは、セレクタ71d、71e、加算回路71fにより予め計算された書き込み電圧Vpgmの最大値Vpgmmaxを保持する。比較器71jは、加算回路71fから出力されるVpgmと、レジスタ71hに保持された最大値Vpgmmaxを比較する。アンド回路71k、71l、オア回路71mは、セレクタ71nを構成しており、比較器71jの出力信号に応じて、加算回路71fの出力データとレジスタ71hの出力データのうちの一方を選択する。すなわち、比較器71jにより、加算回路71fの出力データが最大値Vpgmmaxより小さい場合、セレクタ71nは、加算回路71fの出力データを出力し、加算回路71fの出力データが最大値Vpgmmaxより大きい場合、セレクタ71nは、最大値Vpgmmaxを出力する。レジスタ71iは、セレクタ71nの出力データを保持し、このデータを後述するリミッタ回路の制御信号RV0~RV5として出力する。尚、レジスタ71g、71iは、出力データの衝突を防止するため、図示せぬ制御信号に応じてデータの出力タイミングが切り替えられる。図6は、図1の制御信号及び制御電圧発生回路7に含まれるVpgm発生部7-2を示している。このVpgm発生部7-2は、制御部72a、発振器72b、ポンプ回路72c、及びリミッタ回路72dを示している。制御部72aは、リミッタ回路72dの出力電圧に応じて発振器72bを制御する。ポンプ回路72cは、発振器72bから供給されるクロック信号に応じて書き込み電圧Vpgmを発生する。この書き込み電圧Vpgmは、ワード線制御回路6に供給されるとともに、リミッタ回路72dに供給される。リミッタ回路72dは、抵抗RL、RBと、複数のNチャネルトランジスタN01、N02、N11、N12、N21、N22、N31、N32、N41、N42、N51、N52と、複数の抵抗Rと、抵抗RDと、差動増幅器DA1、DA2と、PチャネルトランジスタP1とを有している。直列接続された抵抗RL、RBは、書き込み電圧Vpgmを分圧する。複数のNチャネルトランジスタN01、N11、N21、N31、N41、N51の電流通路の一端は、抵抗RL、RBの接続ノードに接続され、複数のNチャネルトランジスタN02、N12、N22、N32、N42、N52の電流通路の一端は、差動増幅器DA2の一方入力端に接続されている。複数の抵抗Rは、トランジスタN01~N51、N02~52の電流通路の他端と差動増幅器DA2の一方入力端との間に略梯子状に接続されている。さらに、抵抗RDは、トランジスタN51,N52の電流通路の他端と接地間に接続されている。PチャネルトランジスタP1は差動増幅器DA2の一方入力端と電源Vddが供給される端子との間に接続されている。このPチャネルトランジスタP1のゲートは差動増幅器DA2の出力端に接続されている。差動増幅器DA2の他方入力端には、図示せぬバンドギャップリファレンス回路により発生された基準電圧Vrefが供給されている。差動増幅器DA1の一方入力端には、基準電圧Vrefが供給され、他方入力端は抵抗RLとRBの接続ノードに接続されている。差動増幅器DA1の出力端は、制御部72aに接続されている。リミッタ回路72dは、演算回路7-1から供給される信号に応じて書き込み電圧Vpgmを制御する。すなわち、演算回路7-1から供給される信号RV0~RV5は、トランジスタN01~N51のゲートに供給され、信号RV0~RV5の反転信号RV0n~RV5nは、トランジスタN02~52のゲートに供給される。リミッタ回路72dの出力電圧は、差動増幅器DA1により基準電圧Vrefと比較される。差動増幅器DA1の出力信号は、制御部72aに供給される。書き込み電圧Vpgm、書き込み電圧Vpgmの最小値Vpgm_min、ステップ電圧DVpgmの関係は、次式で表される。Vpgm=Vpgm_minDVpgm×32RV516RV48RV34RV22RV1RV0Vpgm_min=Vref×1RL/RBDVpgm=Vref×RL/RRD/64したがって、最小Vpgmとして0.3V、0.25V、0.2Vを必要とする場合、上記抵抗値RDを3個別々に用意し、これらを切り替えて使用する。図7abは、メモリセルのデータとメモリセルの閾値電圧との関係を表している。図7aに示すように、消去動作を行なうとメモリセルのデータは0となる。第1ページの書き込みにおいて、メモリセルのデータはデータ0とデータ2になる。すなわち、書き込みデータが1である場合、データ0のままであり、書き込みデータが0である場合、データ2となる。第2ページの書き込み後、メモリセルのデータはデータ0、1、2、3となる。すなわち、第1ページの書き込みデータが1で、第2ページの書き込みデータが1である場合、メモリセルのデータは0のままであり、第1ページの書き込みデータが1で、第2ページの書き込みデータが0である場合、メモリセルのデータは1となる。第1ページの書き込みデータが0で、第2ページの書き込みデータが0である場合、メモリセルのデータは2となり、第1ページの書き込みデータが0で、第2ページの書き込みデータが1である場合、メモリセルのデータは3となる。本実施形態において、メモリセルのデータは閾値電圧の低い方から高い方へと、定義されている。図8は、本実施形態における書き込み順序を概略的に示している。図8は説明を簡略化するため、1つのNANDセルが4つのメモリセルにより構成されている場合を示している。図8に示すように、ブロック内において、ソース線に近いメモリセルからページ毎に書き込み動作が行なわれる。すなわち、1メモリセル1の第1ページが書き込まれる。2メモリセル1のワード線方向に隣接するメモリセル2の第1ページが書き込まれる。3メモリセル1の第2ページが書き込まれる。4メモリセル2の第2ページが書き込まれる。5メモリセル1のビット線方向に隣接するメモリセル3の第1ページが書き込まれる。6メモリセル3のワード線方向に隣接するメモリセル4の第1ページが書き込まれる。7メモリセル3の第2ページが書き込まれる。8メモリセル4の第2ページが書き込まれる。以下同様にして順次書き込まれる。図9は、第1ページのプログラムシーケンスを示し、図10は、第2ページのプログラムシーケンスを示している。プログラム書き込み動作は、まずアドレスを指定し、図2に示す2ページが選択する。本メモリは、この2ページのうち、第1ページ、第2ページの順でしか、プログラム動作はできない。したがって、初めにアドレスで第1ページを選択する。図9に示す第1ページプログラムにおいて、先ず、書き込むべきデータを外部より入力し、全てのデータ記憶回路内のSDCに記憶するS11。書き込みコマンドが入力されると、全てのデータ記憶回路内のSDCのデータがPDCに転送されるS12。外部よりデータ1書き込みを行なわないが入力された場合、図4に示すデータ記憶回路のPDCのノードN1aはハイレベルとなり、データ0書き込みを行なうが入力された場合、ローレベルとなる。以後、PDCのデータは、ノードN1aの電位、SDCのデータはノードN2aの電位とする。この後、制御信号及び制御電圧発生回路7の後述するポンプ回路により、書き込み電圧Vpgmをある特定の電圧に昇圧している間に、演算回路7-1により、初期Vpgmが計算されるS13。この計算については後述する。プログラム動作S14図4に示す信号BLC1、及び信号BLCLAMPをVddVthNチャネルトランジスタの閾値電圧とすると、トランジスタ61h、61tがオンとされる。このため、PDCにデータ1書き込みを行なわないが記憶されている時、ビット線がVddとなり、データ0書き込みを行なうが記憶されている時は、ビット線がVssとなる。また、選択されたワード線に接続され、非選択ページのビット線が非選択であるセルは書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線にも電圧Vddが供給される。次に、非選択ブロックの選択ゲートをオフとすることにより、非選択ブロックのワード線はフローティング状態、選択ゲートはVssとなる。選択ブロックの図示せぬローデコーダの転送ゲートをオンとすることにより、選択ブロックのセレクト線SGDにVdd又はVddより若干低い電位、選択ブロックのセレクト線SGSはVss、選択ワード線にVpgm20V、非選択ワード線にVpass10Vを印加すると、ビット線がVssとなっている場合、セルのチャネルがVss、ワード線がVpgmとなるので書き込みが行なわれる。一方、ビット線がVddになっている場合、セルのチャネルがVssでなくVpgmを上げることにより、カップリングでチャネルがブートされる。このため、浮遊ゲートとチャネル間の電位差が大きくならないため書き込みが行われない。図8に示す順序で書き込みを行うと、ソース線から離れるに従い、書き込まれたセルの数が多くなる。このため、チャネルがブートされにくくなり誤書き込みされてしまう問題がある。これを解決するため、図11aに示すSBSelfBoost書き込み方式に替えて、図11bに示すRLSBRevisedLocalSelfBoost書き込み方式や、図11cに示すREASBRevisedErasedAreaSelfBoost書き込み方式に切り替える。RLSB書き込み方式は、選択ワード線の隣、又は選択ワード線から2つ離れたワード線をVss、選択ワード線をVpgm、その他のワード線をVpass又は中間電位にする。REASB書き込み方式は、ソース側の選択ワード線の隣、又は選択ワード線から2つ離れたワード線をVss、選択ワード線をVpgm、その他のワード線をVpass又は中間電位にする。このように選択ワード線の隣、又は選択ワード線から2つ離れたワード線を接地電位Vssとしてオフさせ、選択セル直下のチャネルの電位が昇圧され易くする。第1ページの書き込みにより、メモリセルのデータはデータ0又はデータ2になる。第2ページの書き込み後、メモリセルのデータはデータ0、1、2、3のいずれかとなる。プログラムベリファイリードS15プログラムベリファイリードは、リード動作と同じである。しかし、本来のリード電位より若干高い電位a’、b’、c’、d’でリードする。第1ページのベリファイリードの場合、電位a’でベリファイリードを行う。メモリセルのデータがベリファイリード電位a’に達していると、PDCはデータ1となり、書き込みが行なわれなくなる。一方、メモリセルの閾値電圧がベリファイリード電位a’に達していない場合、PDCはデータ0となり、次回のプログラムで書き込みが行なわれる。VpgmステップアップS16、17全てのデータ記憶回路のPDCがハイレベルとなるまで、プログラム動作とベリファイ動作が繰り返されるS16。このとき、プログラム電圧Vpgmを僅かずつ増加させて書き込みを行うS17。次に、図10に示す第2ページの書き込み動作において、先ず、書き込みデータを外部より入力し、全てのデータ記憶回路10内のSDCに記憶するS21。この後、第1ページの書き込みにおいて、書き込まれたデータを確認するため、読み出しレベルa例えば負電圧をワード線に設定して、メモリセルのデータが読み出されるS22。この読み出し動作は、前述した通りである。セルの閾値電圧が、ワード線の電位aより低い場合、PDCはローレベル、高い場合、PDCはハイレベルとなる。この後、ポンプ回路72cにおいて、書き込み電圧Vpgmを特定の電圧に昇圧している間に、演算回路7-1により書き込み電圧Vpgmが計算されるS23。次いで、データキャッシュが設定されるS24。すなわち、第2ページの書き込みは、図7bに示すように行なわれる。第1ページの書き込みにおいて、データ1の場合で、第2ページの書き込みにおいて、データ1の場合、第2ページ書き込みが行なわれない。第1ページの書き込みにおいて、データ1の場合で、第2ページの書き込みにおいて、データ0の場合、第2ページ書き込みにより、メモリセルのデータが1に設定される。第1ページの書き込みにおいて、データ0の場合で、第2ページの書き込みにおいて、データ0の場合、第2ページ書き込みにより、メモリセルのデータが2に設定される。第1ページの書き込みにおいて、データ0の場合で、第2ページの書き込みにおいて、データ1の場合、第2ページ書き込みにより、セルのデータが3に設定される。この動作を行なうため、データキャッシュが設定される。すなわち、メモリセルのデータを0にする場合第1ページにおいてデータ1、第2ページはデータ1、PDCはハイレベル、DDCはローレベル、SDCはハイレベルに設定される。メモリセルのデータを1にする場合第1ページにおいてデータ1、第2ページはデータ0、PDCはローレベル、DDCはハイレベル、SDCはハイレベルに設定される。メモリセルのデータを2にする場合第1ページにおいてデータ0、第2ページはデータ0、PDCはローレベル、DDCはハイレベル、SDCはローレベルに設定される。メモリセルのデータを3にする場合第1ページではデータ0、第2ページはデータ1、PDCはローレベル、DDCはローレベル、SDCはローレベルに設定される。PDC,DDC,SDCの各データは、信号BLC1,BLC2,DTG,REG、VREGを所定の順序で供給し、PDC,DDC,SDC,TDCのデータを転送することにより設定される。尚、具体的な動作については省略する。プログラム動作S25プログラム動作は、第1ページのプログラム動作と全く同じである。PDCにデータ1が記憶されている場合、書き込みが行なわれず、データ0が記憶されている場合、書き込みが行なわれる。ベリファイ動作S26,S27,S28プログラムベリファイリードは、リード動作と同じである。しかし、ベリファイレベルb’、c’、d’は、リードレベルにマージンが付加され、リードレベルより若干高いレベルに設定されている。このベリファイレベルb’、c’、d’を用いてベリファイリードを行う。ベリファイ動作は、例えばベリファイレベルb’、c’、d’の順に実行される。すなわち、先ず、ワード線にベリファイレベルb’が設定され、メモリセルの閾値電圧がベリファイレベルb’に達しているかどうか検証されるS26。この結果、メモリセルの閾値電圧がベリファイレベルに達している場合、PDCがハイレベルとなり、書き込みが行なわれなくなる。一方、ベリファイリードレベルに達していない場合、PDCがローレベルとなり、次回のプログラムで書き込みが行なわれる。この後、ワード線にベリファイレベルc’が設定され、メモリセルの閾値電圧がベリファイレベルc’に達しているかどうか検証されるS27。この結果、メモリセルの閾値電圧がベリファイレベルに達している場合、PDCがハイレベルとなり、書き込みが行なわれなくなる。一方、ベリファイリードレベルに達していない場合、PDCがローレベルとなり、次回のプログラムで書き込みが行なわれる。次いで、ワード線にベリファイレベルd’が設定され、メモリセルの閾値電圧がベリファイレベルd’に達しているかどうか検証されるS28。この結果、メモリセルの閾値電圧がベリファイレベルに達している場合、PDCがハイレベルとなり、書き込みが行なわれなくなる。一方、ベリファイリードレベルに達していない場合、PDCがローレベルとなり、次回のプログラムで書き込みが行なわれる。このようにして、全てのデータ記憶回路10のPDCがハイレベルになるまで、Vpgmをステップ電圧DVpgm分増加して、プログラム動作とベリファイ動作が繰り返されるS29,S30。上記ステップ電圧DVpgmは、次のようになる。DVpgm電圧値図8に示すように、奇数番目のビット線BLoのセルは、偶数番目のビット線BLeのセルの後に書かれる。このため、図7abに示す閾値分布幅はVpgmが同じであると狭くなる。しかし、分布幅は同じでよいため、奇数番目側のDVpgmを偶数番目側のDVpgmより大きくすることにより、高速な書き込みが可能である。また、図7abに示すように、第1ページ書き込み後の閾値分布幅は、第2ページ書き込み後の閾値分布幅より広くてよいため、第1ページのDVpgmは、第2ページのDVpgmより大きくてよい。書き込み開始時における初期Vpgmは、第1ページにおいて電位a’に書き込むが、第2ページにおいて、先ず、電位b’に書き込む。電位b’は電位a’より低いため、第2ページの書き込み開始時における初期Vpgmは、第1ページより低い必要がある。また、図11aに示すSBにおいて、書き込みセルの両隣のセルは、ワード線WL4、WL6の電位がVpassとされている。これに対して、図11cに示すREASBは、書き込みセルの片側のセルのみしかワード線図示せぬWL8の電位がVpassとなっていない。このため、相対的に浮遊ゲートの電圧が下がる。したがって、SBからREASBに切り替えたとき、浮遊ゲートの電圧低下分約1V程度をVpgmを加える。さらに、最近では、SGD及びSGSの隣のセルワード線WL0、WL31に接続されたセル、又はSGD及びSGSから1つ飛ばした隣のセルワード線WL1、WL30に接続されたセルの書き込み特性が、加工上の原因により他のセルに比べて異なる。このため、これらのセルにデータを書き込むとき、書き込み開始時の初期Vpgmを増加又は低下させる。したがって、第1ページ、第2ページの偶数ビット線、奇数ビット線にそれぞれ対応したステップ電圧DVpgme、DVpgmo、初期Vpgmの関係、SBとREASBの差電圧SB-REASB、WL0,WL1,WL30,WL31の補正電圧は、例えば下記表1に示すようになる。表1DVpgme:DVpgmo:初期Vpgm第1ページ:0.9V:1.2V:17V第2ページ:0.4V:0.5V:16VSB-EASBの差電圧:1VWL0の補正電圧:0.8VWL1の補正電圧:0.4VWL30の補正電圧:-0.5VWL31の補正電圧:-0.3Vリミッタ回路の最小ステップアップサイズを、0.3V、0.25V、0.2Vとすると、ステップアップサイズは、DVpgme:DVpgmo第1ページ:0.3V×3:0.2V×4第2ページ:0.2V×2:0.25V×2したがって、第1ページ、偶数ビット線、奇数ビット線、第2ページ、偶数ビット線、奇数ビット線の初期Vpgm=17Vと16Vは、図13、図14、図15より次のようになる。Vpgme:Vpgmo第1ページ:17.1V図15、18段目:17.0V図13、26段目第2ページ:16.0V図13、21段目:16.0V図14、17段目また、SB-EASBの差電圧、ワード線WL0、WL1、WL30、WL31の補正値は、それぞれの最小ステップサイズの整数倍とならなくてはならない。このため、これら補正値の関係は次のようになる。SB-EASBの差電圧奇数偶数第1page0.9V3段1.0V5段第2page1.0V5段1.0V4段WL0奇数偶数第1page0.9V3段0.8V4段第2page0.8V4段0.75V3段WL1奇数偶数第1page0.3V1段0.4V2段第2page0.4V2段0.5V2段WL30奇数偶数第1page-0.6V-2段-0.4V-2段第2page-0.4V-2段-0.5V-2段WL31奇数偶数第1page-0.3V-1段-0.4V-2段第2page-0.4V-2段-0.25V-1段これらの電圧を例えば6ビット乃至8ビットのデータとしてメモリセルアレイ1のROM部1-1に記憶する必要がある。しかし、これらデータの数は、後に書き込んだ隣のセルの閾値電圧の変動により、先に書き込んだ閾値電圧がFG-FG浮遊ゲート間のカップリングにより変化してしまう問題を抑え、狭い閾値分布を得るために、複数回の書き込み動作によりメモリセルに書き込みを行う場合、この書き込み回数と同じだけ記憶すべき初期値のデータが増加する。例えば2ビットを記憶するメモリの場合、ページ数は2ページであるため、2回の書き込み動作により書き込むことができる。しかし、4ビットを記憶するメモリの場合、ページ数は4ページであるため、2回、3回、4回の書き込み動作により書き込むことができる。また、これらのデータを得るために、出荷前のダイソートテスト時にトリミング作業をする必要がある。しかし、この作業は煩雑である。すなわち、例えば初期Vpgmはダイソートテストにおいて、先ず、低い電圧値に設定され、規定の書き込みループで書き込みが完了するか検証される。未完了の場合、初期Vpgmを少しずつ上げ、規定の書き込みループで書き込みが完了したときのVpgmを初期Vpgmとする。初期Vpgmが上記のようにある場合、各初期Vpgm毎にこのようなトリミング作業をする必要があるため、トリミングに長時間を必要とする。上記例では、第1ページ、偶数ビット線、第1ページ、奇数ビット線、第2ページ、偶数ビット線、第2ページ、奇数ビット線の4つの初期Vpgmについてそれぞれトリミングする必要がある。そこで、本実施形態は、表1に示す奇数番目/偶数番目/第1ページ/第2ページの内、どれか1つのVpgmを代表としてトリミングし、この1つのVpgmの値をROM部1-1に記憶する。この場合、例えば第2ページ、奇数番目のVpgm=16Vを代表値とし、この代表値をトリミングしてROM部1-1に記憶する。この場合、第2ページ、奇数番目はステップアップサイズが0.5Vであるため、最小ステップサイズは0.25Vステップサイズ0.5V=0.25V×2となる。したがって、図14に示す25mVのテーブルにおいて、16Vは17段目のデータに相当する。さらに、SB-EASBの差電圧=1Vこの場合、Vpgm=16VとVpgm=17Vとの差に相当する、WL0の補正値=0.8V、WL1の補正値=0.4V、WL30の補正値=-0.5V、WL31の補正値=-0.3Vのデータが50mV毎のデータとしてそれぞれ1つのみがROM部1-1に記憶される。SB-EASBの差電圧、WL0,1,30,31の補正値は、例えばトリミングされたVpgmから予め計算して求められる。すなわち、Vpgmのデータを50mV毎のデータに変換し、このデータに基づきSB-EASBの差電圧、WL0,1,30,31の補正値が計算される。上記ROM1-1に記憶された初期Vpgm、及び補正値等を用いて、書き込み対象ワード線のVpgmが計算される。図12は、書き込み対象ワード線のVpgmの計算方法を示すものであり、第2ページ、奇数番目の初期Vpgmから第1ページの奇数ページのVpgmを生成する場合の例を示している。前述した通り、書き込み電圧の最小ステップ電圧DVpgmは、0.4V、0.5V、0.9V、1.2Vであり、これらDVpgmの最大公約数は、0.05V=50mVである。このため、ROM部1-1に記憶された第2ページ偶数ページの初期Vpgm=16Vのデータを50mV毎のデータに変換し、この変換されたデータに基づき、書き込み対象のワード線のVpgmが計算される。先ず、ROM部1-1に記憶された第2ページ偶数ページの初期Vpgm=16Vのデータが、図5に示す例えばラッチ回路71aにロードされるS31。次に、初期Vpgmが、50mV毎のデータに変換される。すなわち、ラッチ回路71aのデータが5倍されるS32。2進数において、2nを乗算する場合、データをMSB側にnビットシフトし、2nを除算する場合、データをLSB側にnビットシフトすればよい。5倍の演算は、例えば2220である。このため、先ず、ラッチ回路71aのデータをセレクタ回路71dにより、MSB側に2ビットシフトして出力し、このデータを加算回路71fを介してレジスタ71gに保持させる。次に、セレクタ71eによりシフトせずにレジスタ71gに保持されたデータを加算回路71fに供給するとともに、ラッチ回路71aのデータをセレクタ回路71dによりシフトせずに加算回路71fに供給する。この加算回路71fにより加算されたデータはレジスタ71gに保持される。このとき、セレクタ71nは加算回路71fの出力データを選択しているため、レジスタ71iにもレジスタ71gと同様のデータが保持されている。図16は、Vpgmを50mV毎にデータに変換した例を示している。ROM部1-1からラッチ回路71aにロードされた初期Vpgm=16Vのデータは、図14に示す0.25Vのステップにおいて、010000である。これらが変換され、図14に示す25mV毎のテーブルにおいて、16.0Vのデータは、001010000となる。この後、第1ページ奇数ページの初期Vpgm=17Vと、第2ページ偶数ページの初期Vpgm例えば16Vとの初期値の差電圧=1Vが、第2ページ偶数ページの初期Vpgmに加算されるS33。すなわち、ROM部1-1に記憶されたSB-EASBの差電圧=1Vが読み出されてラッチ回路71bに保持される。このラッチ回路71bのデータは、セレクタ71dにより選択されて加算回路71fに供給される。これとともに、レジスタ71gに保持されたデータがセレクタ71eを介して加算回路71fに供給される。加算回路71fは、これらのデータを加算する。この加算結果は、レジスタ71g、71iに保持される。この結果、レジスタには、図16に示す50mV毎のテーブルにおいて、17.0V、001100100となる。次に、選択されたワード線が例えばWL30であり、REASB書き込み方式である場合、ラッチ回路71bに保持されたSB-EASBの差電圧=1Vと、フューズに記憶されているワード線WL30の補正電圧=-0.3Vが、レジスタ71gに記憶されたデータにさらに加えられるS34。すなわち、ROM部1-1からワード線WL30の補正電圧が読み出され、ラッチ回路71cに保持される。このラッチ回路71b、71cに保持されたデータは、セレクタ回路71dにより順次選択され、セレクタ回路71eにより選択されたデータとともに加算回路71fに供給される。この加算回路71fにより加算されたデータはレジスタ71g、71iに保持される。この結果、レジスタには、図16に示す50mV毎のテーブルにおいて、17.7V、001110010となる。続いて、第1ページの奇数ページは、ステップ電圧DVpgmが0.9Vであるため、リミッタ回路72dの仕様に合わせた0.3V毎の電圧のデータに変換されるS35。すなわち、レジスタ71gに保持されたデータが6で割り算される。具体的には、レジスタ71g、セレクタ回路71e、加算回路71fを用いて、例えば1/6=1/231/251/271/291/211の演算が行なわれる。この結果、レジスタには、図15に示す0.3V毎のテーブルにおいて、17.7V、010011となる。この後、上記演算されたデータがリミッタ回路7―5のトランジスタN01~N51、N02~N52に供給されるS36。リミッタ回路72dは、このデータに従って、ポンプ回路72cから出力されるVpgmを制御する。上記第1の実施形態によれば、初期Vpgmとしての1つのVpgmのデータと、書き込み方式SB-EASBの差電圧やワード線毎の補正値のデータを1組だけROM1-1に記憶し、この記憶したデータに基づきページ毎の書き込み電圧を生成している。このため、ページ毎にステップ電圧DVpgmが異なる場合においても、複数の初期VpgmをROM1-1に記憶する必要がない。したがって、製品出荷前のテスト時において、1つのVpgmのみをトリミングすればよいため、トリミングに要する時間を大幅に短縮することができる。さらに、書き込み方式の差電圧や、ワード線毎の補正電圧のデータを、第1、第2ページ毎、偶数、奇数毎に記憶する必要がないため、ROM部1-1の記憶容量を低減できる利点を有している。尚、第1の実施形態において、リミッタ回路の制御データは、図6に示す回路により生成したが、例えばソフトウェア処理により生成することも可能である。第2の実施形態図7bに示すワード線の電位dとcの差は、cとbの差より大きく設定する必要がある。これは中性閾値電圧浮遊ゲート内に電子が存在しない状態における閾値電圧が電位bとcの間にあり、中性閾値電圧から離れるに従って、データリテンションが悪くなるため、マージンを確保するためである。したがって、第1の実施形態に示すように、ステップ電圧DVpgmが一定である場合、閾値電圧が高くなるに従って、書き込みスピードが遅くなるという問題がある。そこで、第2の実施形態は、図17に示すように、書き込み電圧Vpgmの値が増加するに従い、基準電圧Vrefを徐々に増加させる。このようにすると、書き込み電圧Vpgmの増加に従ってステップ電圧DVpgmを大きくすることができる。図18は、第2の実施形態を示すものであり、基準電圧可変回路72eを含むVpgm発生部の一例を示している。図18において、図6と同一部分には同一符号を付す。図18において、図6と異なるのは、差動増幅器DA1に供給される基準電圧Vrefが可変される点である。すなわち、基準電圧可変回路72eにおいて、図示せぬバンドギャップリファレンス回路により生成された基準電圧Vrefは、差動増幅器DA3の一方入力端に供給される。差動増幅器DA3の出力端はPチャネルトランジスタP2のゲートに接続されている。このトランジスタP2の電流通路の一端は、電源Vddが供給される端子に接続され、他端は、差動増幅器DF2の一方入力端に接続されるとともに、可変抵抗R2の一端に接続されている。この可変抵抗R2の他端は、差動増幅器DA3の他方入力端に接続されるとともに、抵抗R1を介して接地されている。上記構成において、可変抵抗R2の抵抗値を書き込み電圧Vpgmの増加に従って増加させることにより、基準電圧Vrefを増加することができる。したがって、ステップ電圧DVpgmを基準電圧Vrefの増加に伴って増加させることができる。このように、第2の実施形態によれば、書き込み電圧Vpgmが高くなり、高い閾値電圧を書き込む時のステップ電圧を大きくすることができるため、書き込みスピードを高速化することができる。尚、上記各実施形態は、多値データを記憶する半導体記憶装置に本発明を適用した場合について説明した。しかし、これに限らず、2値データを記憶する半導体記憶装置に本発明を適用することも可能である。その他、本発明の要旨を変えない範囲において変形実施可能なことは勿論である。"