(57)【特許請求の範囲】
【請求項１】
複数のページからなるメモリブロックを有するＮＡＮＤ型フラッシュメモリと、
前記フラッシュメモリへのデータの書き込みを制御し、前記データを疑似乱数化するスクランブル回路を有するコントローラと、
を具備し、
前記スクランブル回路は、
セグメント単位で初期値を発生させる初期値発生回路と、
ページアドレス単位で前記初期値をＮビットシフトさせる初期値シフト回路と、
Ｎビットシフトされた前記初期値を使用してＭ系列による擬似乱数列を発生させる疑似乱数発生回路と、
前記疑似乱数列を前記データに加算する乱数加算回路と、
を有することを特徴とするメモリシステム。
【請求項２】
前記スクランブル回路は、前記擬似乱数列のデータを、前記ページアドレスを元に規則的に反転・正転するデータ反転回路を有することを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記スクランブル回路は、前記データの書き込みにおいて指定されたアドレスが、疑似乱数化を行うブロックか否かを判定する判定回路を有することを特徴とする請求項１又は２に記載のメモリシステム。
【請求項４】
前記スクランブル回路は、前記ページアドレスに応じて１ビットシフトさせた前記初期値を発生させることを特徴とする請求項１乃至３のいずれか１項に記載のメモリシステム。
【請求項５】
前記セグメントは、データ部と冗長部とで構成される前記コントローラのメモリ管理単位であることを特徴とする請求項１乃至４のいずれか１項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関し、例えば、ＮＡＮＤ型フラッシュメモリに入力される書き込みデータの疑似乱数化を行うメモリシステムに関する。
【背景技術】
【０００２】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてＮＡＮＤ型フラッシュメモリが広く使用されている。ＮＡＮＤ型フラッシュメモリは、近年、微細加工による大容量化が進展しており、動作信頼性が悪化するという問題があった。
【０００３】
そこで、特許文献１等で開示されているように、Ｍ系列（Maximum length code）等によるランダムデータ発生回路を用いて、書き込みデータを疑似乱数化する方法が採用されている。これにより、ＮＡＮＤ型フラッシュメモリのブロック内に書き込むデータを分散し、データパターンの集中を防止している。
【０００４】
しかしなから、ＮＡＮＤ型フラッシュメモリでは、非書き込みセルに対してワード線とチャネルとのカップリング（ブースト）を利用して書き込み非選択としているため、ある特定パターンの配置が連続する場合、ブロック内に書き込まれるセルの閾値レベルに偏りがあると、ブースト不足による誤書き込みが発生する場合がある。このような場合、誤り訂正（ＥＣＣ）回路では完全に訂正できない場合もあるため、データの信頼性を十分に確保することが困難であった。
【特許文献１】特開平１１−３３９４９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、ＮＡＮＤ型フラッシュメモリに対する誤書き込みの発生を抑制することが可能なメモリシステムを提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様によるメモリシステムは、複数のページからなるメモリブロックを有するＮＡＮＤ型フラッシュメモリと、前記フラッシュメモリへのデータの書き込みを制御し、前記データを疑似乱数化するスクランブル回路を有するコントローラと、を具備し、前記スクランブル回路は、セグメント単位で初期値を発生させる初期値発生回路と、ページアドレス単位で前記初期値をＮビットシフトさせる初期値シフト回路と、Ｎビットシフトされた前記初期値を使用してＭ系列による擬似乱数列を発生させる疑似乱数発生回路と、前記疑似乱数列を前記データに加算する乱数加算回路と、を有する。
【発明の効果】
【０００７】
本発明によれば、ＮＡＮＤ型フラッシュメモリに対する誤書き込みの発生を抑制することが可能なメモリシステムを提供できる。
【発明を実施するための最良の形態】
【０００８】
本発明の実施の形態を以下に図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
［１］メモリシステムの構成
図１を用いて、本発明の一実施形態に係るメモリシステムについて説明する。図１は、本実施形態に係るメモリシステムのブロック図である。
【００１０】
図示するように、メモリシステムは、メモリカード１及びホスト機器２を備えている。ホスト機器２は、バスインタフェース１４を介して接続されるメモリカード１に対しアクセスを行うためのハードウェア及びソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００１１】
メモリカード１は、ホスト機器２とバスインタフェース１４を介して情報の授受を行う。メモリカード１は、ＮＡＮＤ型フラッシュメモリチップ（単にＮＡＮＤ型フラッシュメモリ、又はフラッシュメモリと呼ぶことがある）１１、フラッシュメモリチップ１１を制御するカードコントローラ１２、及び複数の信号ピン（第１ピン乃至第９ピン）１３を備えている。
【００１２】
複数の信号ピン１３は、カードコントローラ１２と電気的に接続されている。複数の信号ピン１３における第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。図２に示すように、データ０乃至データ３は、第７ピン、第８ピン、第９ピン、及び第１ピンにそれぞれ割り当てられている。第１ピンは、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピン及び第６ピンは接地電位Ｖｓｓに、第４ピンは電源電位Ｖｄｄに、第５ピンはクロック信号に割り当てられている。
【００１３】
また、メモリカード１は、ホスト機器２に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器２に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード１内のカードコントローラ１２と各種信号及びデータを通信する。例えば、メモリカード１にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してカードコントローラ１２にシリアルな信号として送出する。このとき、カードコントローラ１２は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１４】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してカードコントローラ１２にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖｓｓ用の第３ピンとの間に配置されている。複数の信号ピン１３とそれに対するバスインタフェース１４は、ホスト機器２内のホストコントローラとメモリカード１とが通信するのに使用される。
【００１５】
これに対し、フラッシュメモリ１１とカードコントローラ１２との間の通信は、ＮＡＮＤ型フラッシュメモリ用のインタフェースによって行われる。従って、ここでは図示しないが、フラッシュメモリ１１とカードコントローラ１２とは例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００１６】
例えば、カードコントローラ１２がフラッシュメモリ１１にデータを書き込む際には、カードコントローラ１２は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、及びプログラムコマンド１０Ｈをフラッシュメモリ１１に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤ型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
【００１７】
また、ＮＡＮＤ型フラッシュメモリ用のインタフェースでは、フラッシュメモリ１１に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器２内のホストコントローラとメモリカード１とが通信するインタフェースと、フラッシュメモリ１１とカードコントローラ１２とが通信するインタフェースとは異なる。
【００１８】
［２］カードコントローラの構成
図３を用いて、図１に示すカードコントローラ１２の内部構成について説明する。図３は、本実施形態に係るカードコントローラ１２のブロック図である。
【００１９】
カードコントローラ１２は、フラッシュメモリ１１内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。そして、ＮＡＮＤ型フラッシュメモリ１１へのデータの書き込みや読み出しを制御する。
【００２０】
図示するように、カードコントローラ１２は、ホストインタフェースモジュール２１、ＭＰＵ（Micro Processing Unit）２２、フラッシュコントローラ２３、ＲＯＭ（Read Only Memory）２４、ＲＡＭ（Random Access Memory）２５、及びスクランブル回路２６を有する。
【００２１】
ホストインタフェースモジュール２１は、カードコントローラ１２とホスト機器２との間のインタフェース処理を行う。
【００２２】
ＭＰＵ２２は、メモリカード１全体の動作を制御する。ＭＰＵ２２は、例えばメモリカード１が電源供給を受けたときに、ＲＯＭ２４に格納されているファームウェア（制御プログラム）をＲＡＭ２５上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２５上に作成する。また、ＭＰＵ２２は、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ１１に対して所定の処理を実行する。さらに、ＭＰＵ２２は、スクランブル回路２６を制御して、書き込みデータのスクランブルを行う。書き込みデータのスクランブルについては、後に詳述する。
【００２３】
ＲＯＭ２４は、ＭＰＵ２２により制御される制御プログラム等を格納する。ＲＡＭ２５は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。さらに、ＲＡＭ２５は、予め作成されたスクランブルテーブル２７を保持する。スクランブルテーブル２７については、後に詳述する。フラッシュコントローラ２３は、カードコントローラ１２とフラッシュメモリ１１との間のインタフェース処理を行う。
【００２４】
［３］ＮＡＮＤ型フラッシュメモリの構成
図４を用いて、ＮＡＮＤ型フラッシュメモリ１１の内部構成について簡単に説明する。図４は、本実施形態に係るＮＡＮＤ型フラッシュメモリ１１のブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ１１は、メモリセルアレイ３０、ページバッファ２８、及びロウデコーダ２９を備えている。
【００２５】
メモリセルアレイ３０は、複数のメモリブロックＢＬＫ０、ＢＬＫ１、…を含んでいる。データの消去は、メモリブロックＢＬＫｎ単位で行われる。すなわち、同一メモリブロックＢＬＫｎ内のデータは一括して消去される。メモリブロックＢＬＫｎの各々は、複数のメモリセルトランジスタを備えている。また、メモリブロックＢＬＫｎ内には、複数のワード線ＷＬ０、ＷＬ１、…と、ワード線ＷＬ０、ＷＬ１、…に直交するビット線ＢＬ０、ＢＬ１、…とが設けられている。以下、ワード線ＷＬ０、ＷＬ１、…を特に区別しない場合には単にワード線ＷＬと呼び、ビット線ＢＬ０、ＢＬ１、…を特に区別しない場合には単にビット線ＢＬと呼ぶ。同一行にあるメモリセルトランジスタは、同一のワード線に共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線ＢＬに共通接続されている。尚、データの書き込み及び読み出しは、一本のワード線ＷＬに接続される複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を「１ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線ＷＬが選択され、カラムアドレスによっていずれかのビット線ＢＬが選択される。図４の例であると、フラッシュメモリ１１の各メモリブロックＢＬＫｎは、例えば１２８ページを含んでいる。
【００２６】
ページバッファ２８は、フラッシュメモリ１１へのデータ入出力を行い、データを一時的に保持する。ページバッファ２８が保持可能なデータサイズは、各メモリブロックＢＬＫｎのページサイズと同じである。データ書き込み等の際、ページバッファ２８は、フラッシュメモリ１１に対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。また、読み出しの際は、１ページ分のメモリセルのデータをページバッファ２８に転送し、Ｉ／Ｏ線を介してページバッファ２８からシリアルに読み出される。
【００２７】
ロウデコーダ２９は、データの書き込み時及び読み出し時において、いずれかのワード線ＷＬを選択する。
【００２８】
本実施形態では、図５に示すように、例えば、１メモリブロックＢＬＫｎは、８ｋカラム×１２８ページ×８Ｉ／Ｏ（１０２４ｋバイト）で構成される。そして、１０２４バイトに対して誤り訂正符号αを含む冗長部を付加し、１セグメントを構成する。このセグメントは、データ部と冗長部とで構成されたコントローラ１２のメモリ管理単位である。従って、１ページに８個のセグメントが存在するので、１ブロックあたり１０２４個（８×１２８）のセグメントが存在する。尚、図５は一例であり、これに限定されない。
【００２９】
［４］メモリブロックの構成
図６を用いて、メモリブロックＢＬＫｎの詳細な構成について説明する。図６は、メモリブロックＢＬＫｎの等価回路図である。
【００３０】
図示するように、メモリブロックＢＬＫｎは、ワード線ＷＬ方向に沿って配置された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは１以上の自然数）。各々のＮＡＮＤストリングは、選択トランジスタＳＴ１、ＳＴ２、及び６４個のメモリセルトランジスタＭＴを備えている。ＮＡＮＤストリング内に含まれるメモリセルトランジスタＭＴの数は一例に過ぎず、例えば８個、１６個、３２個、１２８個等であってもよい。各々のＮＡＮＤストリングに含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｍのいずれかに接続され、ゲートがセレクトゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートがセレクトゲート線ＳＧＳに共通接続されている。
【００３１】
メモリセルトランジスタＭＴの各々は、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたＭＯＳトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層（フローティングゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各々のＮＡＮＤストリングにおいて、６４個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタＭＴから順に、制御ゲートがワード線ＷＬ０〜ＷＬ６３にそれぞれ接続されている。従って、ワード線ＷＬ６３に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００３２】
ワード線ＷＬ０〜ＷＬ６３は、メモリブロックＢＬＫｎ内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲートを共通に接続している。つまり、メモリブロックＢＬＫｎ内において同一行にあるメモリセルトランジスタＭＴの制御ゲートは、同一のワード線ＷＬに接続される。また、ビット線ＢＬ０〜ＢＬｍは、メモリブロックＢＬＫｎ間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のメモリブロックＢＬＫｎ内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００３３】
尚、以下では、メモリセルトランジスタＭＴを単にメモリセルＭＣと呼ぶことがある。
【００３４】
上記メモリセルＭＣの各々は、４値（“００”データ、“０１”データ、“００”データ、又は“１０”データ）のデータ、つまり２ビットデータを保持可能である。そしてこの２ビットには、２つの異なるページアドレスが割り当てられる。具体的には、２ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。従って、本実施形態に係る構成であると、メモリブロックＢＬＫｎは１２８ページを含むから、上位ページが６４ページであり、下位ページが６４ページ存在する。
【００３５】
図７を用いて、上記メモリセルＭＣの閾値について説明する。図７は、メモリセルＭＣの閾値分布を示すグラフであり、横軸が閾値電圧Ｖｔｈを示し、縦軸がメモリセルの存在確率を示す。
【００３６】
図示するように、メモリセルＭＣは、閾値電圧Ｖｔｈの低い順に“１１”、“０１”、“００”、“１０”の４つのデータを保持出来る。“１１”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ＜０Ｖである。“０１”データを保持するメモリセルの閾値電圧Ｖｔｈは、０Ｖ＜Ｖｔｈ＜Ｖｔｈ１である。“００”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２である。“１０”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ２＜Ｖｔｈ＜Ｖｔｈ３である。
【００３７】
図８を用いて、上記４値のデータのメモリセルＭＣへの書き込み方法について簡単に説明する。図８は、メモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Ｖｔｈの変化の様子を示している。データは１ページに対して一括して書き込まれる。また、データの書き込みは、まず下位ページから行い、次に上位ページについて行う。
【００３８】
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Ｖｔｈは負の値であり、“１１”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“１”の場合には、フローティングゲートに電子は注入されず、閾値電圧Ｖｔｈは不変である。下位ページが“０”の場合には、フローティングゲートに電子が注入され、閾値電圧Ｖｔｈは正の方向へ変化し、約Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２となる。
【００３９】
次に、上位ページの書き込みを行う。まず、下位ページが“１”であった場合について説明する。下位ページが“１”で、尚かつ上位ページも“１”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Ｖｔｈは負の値を維持する。その結果、メモリセルには“１１”が保持される。上位ページが“０”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Ｖｔｈは負から正の方向へ変化し、０Ｖ＜Ｖｔｈ＜Ｖｔｈ１となる。すなわち、メモリセルには“０１”が書き込まれる。
【００４０】
次に、下位ページが“０”であった場合について説明する。下位ページが“０”で、上位ページが“０”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２であり、その結果、メモリセルには“００”が保持される。上位ページが“１”の場合、さらにフローティングゲートに電子が注入される。その結果、閾値電圧Ｖｔｈはさらに正の方向へ変化し、Ｖｔｈ２＜Ｖｔｈ＜Ｖｔｈ３となる。すなわち、メモリセルには“１０”が書き込まれる。
【００４１】
［５］データスクランブル
本実施形態の書き込み動作では、カラム方向及びページ方向の両方において、データスクランブル（疑似乱数化）を行う。尚、本実施形態において、カラム方向とはワード線の延在方向であり、ページ方向とはビット線及びＮＡＮＤストリングの延在方向である（図６参照）。
【００４２】
［５−１］スクランブル方法１
本実施形態に係るスクランブル方法１は、ページ方向ではページアドレス毎にＮビットシフトさせた疑似乱数回路の初期値を生成し、この初期値データを使用してカラム方向ではＭ系列乱数を用いてセグメント単位で擬似乱数列を生成することで、ページ方向及びカラム方向の両方において、データスクランブルを行う。
【００４３】
図９を用いて、カラム方向のＭ系列乱数を用いたデータスクランブルについて説明する。各セグメント内において、Ｍ系列の乱数発生周期をＩ／Ｏの数で割った回数だけシフトさせた値を初期値（スタートビット）として与える。例えば、Ｍ１４−１のＭ系列（１６３８３通り）の乱数発生回路を使用した場合、ＮＡＮＤ型フラッシュメモリの８個のＩ／Ｏに対しては、２０４８回シフトした値を各セグメントに対して初期値として与える。
【００４４】
尚、上記の例では、各Ｉ／Ｏに対して均等にシフト回数を規定した場合であるが、これに限定されず、各Ｉ／Ｏ間でシフトさせる回数は異なっていてもよい。
【００４５】
図１０を用いて、ページ方向のデータスクランブルについて説明する。例えば、各Ｉ／Ｏの初期値を、ページ方向において各々Ｎ回シフトさせる。図１０に示す１ビットシフトさせた例の場合、Ｐａｇｅ−０が「Ａ１」からスタートするのに対し、Ｐａｇｅ−１はＰａｇｅ−０の初期値Ａ１から１ビットシフトさせた「Ｂ１」からスタートし、Ｐａｇｅ−２はＰａｇｅ−１の初期値Ｂ１から１ビットシフトさせた「Ｃ１」からスタートする。
【００４６】
次に、図１１を用いて、上述したスクランブル方法１を実現するためのスクランブル回路２６の概略的な構成について説明する。
【００４７】
図１１に示すように、スクランブル方法１のスクランブル回路２６は、データ入力部３１、データ出力部３２、乱数加算回路３３、乱数減算回路３４、セグメントアドレス発生回路３５、初期値発生回路３６、ページアドレス発生回路３７、初期値Ｎビットシフト回路３８、擬似乱数列発生回路３９を備えている。
【００４８】
このようなスクランブル回路２６を用いたデータ書き込みは次のように行われる。
【００４９】
まず、ホスト機器２からデータの書き込み命令及び書き込みデータがメモリカード１に与えられ、カードコントローラ１２のホストインタフェースモジュール２１が書き込み命令及び書き込みデータを受信する。
【００５０】
すると、ＭＰＵ２２は、受信した書き込みデータを書き込むべきメモリセルＭＣのセグメントアドレス及びページアドレスを算出する。これに基づいて、スクランブル回路２６内のセグメントアドレス発生回路３５がセグメントアドレスを発生し、ページアドレス発生回路３７がページアドレスを発生する。
【００５１】
一方、ホストインタフェースモジュール２１で受信された書き込みデータはデータ入力部３１に入力され、乱数加算回路３３により書き込みデータと擬似乱数列とが加算され、乱数化されたデータがページ毎にＮＡＮＤ型フラッシュメモリ１１に書き込まれる。
【００５２】
ここで、擬似乱数列は、擬似乱数列発生回路３９で、次のように生成される。セグメント毎の初期値（スタートビット）が初期値発生回路３６により発生される。セグメントの初期値は、図９のスクランブル方法１のカラム方向のランダム化により決定される。そして、初期値Ｎビットシフト回路３８により、図１０で説明したようにページアドレス毎に初期値をＮビットだけシフトさせる。以上のような方法でカラム方向及びページ方向の両方においてランダム化した擬似乱数列を、擬似乱数列発生回路３９で生成する。
【００５３】
尚、読み出し時は、乱数加算回路３３で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路３４で減算処理を行い、データ出力部３２を介してページ毎にデータを読み出す。
【００５４】
図１２を用いて、図１１の擬似乱数列発生回路３９の一例について説明する。フィボナッチ型の擬似乱数列発生回路３９は、１ｋ＋αカラムアドレス周期で疑似乱数データを発生し、ＮＡＮＤ型フラッシュメモリ１１へ書き込むデータと排他的論理和をとる。具体的には、図１２に示すように、擬似乱数列発生回路３９は、第１のシフトレジスタＲ１〜Ｒ１４、第２のシフトレジスタ５０、排他的論理和（エクスクルーシブＯＲゲート）ＸＯＲ１〜ＸＯＲ５で構成される。
【００５５】
第１のシフトレジスタＲ１〜Ｒ１４のそれぞれは、直列に接続されている。第１のシフトレジスタＲ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７、Ｒ１０、Ｒ１２の各入力端子は、前段の第１のシフトレジスタＲ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７、Ｒ８、Ｒ１１、Ｒ１３の各出力端子に接続されている。第１のシフトレジスタＲ１の出力端子は排他的論理和ＸＯＲ１に接続され、この排他的論理和ＸＯＲ１は第１のシフトレジスタＲ１の入力端子に接続されている。排他的論理和ＸＯＲ１の出力端子は排他的論理和ＸＯＲ２の入力端子に接続され、排他的論理和ＸＯＲ２は第１のシフトレジスタＲ８の入力端子に接続されている。排他的論理和ＸＯＲ２の出力端子は排他的論理和ＸＯＲ３の入力端子に接続され、排他的論理和ＸＯＲ３は第１のシフトレジスタＲ９の入力端子に接続されている。排他的論理和ＸＯＲ３の出力端子は排他的論理和ＸＯＲ４の入力端子に接続され、排他的論理和ＸＯＲ４は第１のシフトレジスタＲ１１の入力端子に接続されている。排他的論理和ＸＯＲ４の出力端子は排他的論理和ＸＯＲ５の入力端子に接続され、排他的論理和ＸＯＲ５は第１のシフトレジスタＲ１３の入力端子に接続されている。排他的論理和ＸＯＲ５の出力端子は第１のシフトレジスタＲ１４の入力端子に接続されている。
【００５６】
このような第１のシフトレジスタＲ１〜Ｒ１４のそれぞれには、シフトレジスタ５０の出力端子が接続されている。
【００５７】
尚、第１のシフトレジスタＲ１〜Ｒ１４はカラム方向のデータスクランブルに使用され、シフトレジスタ５０はページ方向のデータスクランブルに使用され、各ページの初期値を発生する。そして、擬似乱数列発生回路３９により生成されたＭ系列擬似乱数の出力は、乱数加算回路３３又は乱数減算回路３４に入力される。
【００５８】
［５−２］スクランブル方法２
スクランブル方法２は、上記スクランブル方法１の変形例であり、ページ方向にＮビットシフトするだけでなく、さらに、ワード線ＷＬのアドレス（以下、ワード線アドレス又はページアドレスと呼ぶ）に応じて反転・正転する。以下、ここでは、図３のＲＡＭ２５が保持するスクランブルテーブル２７と共に、スクランブル方法２の上記スクランブル方法１と異なる点について主に説明する。
【００５９】
図１３は、スクランブル方法２において用いるスクランブルテーブル２７の概念図である。このスクランブルテーブル２７は、外部から入力された１ページの書き込みデータを一定の規則に従って変えるためのスクランブル方式を保持している。
【００６０】
図示するように、スクランブルテーブル２７は、ワード線アドレスを例えば“４”で割った余りＡ毎に、当該ワード線アドレスに対応したデータの上位ページと下位ページの変え方を保持している。より具体的には、ワード線アドレスを“４”で割った余りＡが“０”である場合には、上位ページ及び下位ページに書き込むべきデータを正転させて書き込む。つまり、入力されたデータを変えずにそのままメモリセルＭＣへ書き込む。余りＡが“１”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ反転及び正転させて書き込む。余りＡが“２”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ正転及び反転させて書き込む。余りＡが“３”である場合には、上位ページ及び下位ページに書き込むデータを、共に反転させて書き込む。
【００６１】
上記のようにワード線アドレスを“４”で割った余りＡ毎にスクランブル方式を有するということは、換言すれば、ワード線ＷＬを４つのグループに分類し、グループ毎にスクランブル方式を変えていることに相当する。
【００６２】
図１４は、上記の方法でワード線ＷＬを４つのグループに分類した結果を示す。図示するように、例えばワード線ＷＬ０〜ＷＬ６３のワード線アドレスを、それぞれ“０”〜“６３”とすると、ワード線ＷＬ０、ＷＬ４、ＷＬ８、・・・ＷＬ６０についての余りＡが“０”となり、これらのワード線ＷＬが第１グループに分類される。また、ワード線ＷＬ１、ＷＬ５、ＷＬ９、・・・ＷＬに６１ついての余りＡが“１”となり、これらのワード線ＷＬが第２グループに分類される。さらに、ワード線ＷＬ２、ＷＬ６、ＷＬ１０、・・・ＷＬ６２についての余りＡが“２”となり、これらのワード線ＷＬが第３グループに分類される。そして、ワード線ＷＬ３、ＷＬ７、ＷＬ１１、・・・ＷＬ６３についての余りＡが“３”となり、これらのワード線ＷＬが第４グループに分類される。その上で、第１〜第４グループ毎に、それぞれ異なるスクランブル方式が採用される。スクランブル回路２６は、上記スクランブル方式に従って、外部から入力されたデータのスクランブルを行う。
【００６３】
上記スクランブルテーブル２７を用いた場合の具体例について、図１５を用いて説明する。本図は、全メモリセルＭＣに対して“００”を書き込む場合において、実際の各メモリセルＭＣに対して書き込まれたデータを示す。
【００６４】
図示するように、第１グループに属するワード線ＷＬ０、ＷＬ４、ＷＬ８、・・・ＷＬ６０に接続されたメモリセルＭＣには、入力データ“００”がそのまま書き込まれる。第２グループに属するワード線ＷＬ１、ＷＬ５、ＷＬ９、・・・ＷＬ６１に接続されたメモリセルＭＣには、上位ページが反転されたデータ“１０”が書き込まれる。第３グループに属するワード線ＷＬ２、ＷＬ６、ＷＬ１０、・・・ＷＬ６２に接続されたメモリセルＭＣには、下位ページが反転されたデータ“０１”が書き込まれる。そして第４グループに属するワード線ＷＬ３、ＷＬ７、ＷＬ１１、・・・ＷＬ６３に接続されたメモリセルＭＣには、上位ページ及び下位ページが共に反転されたデータ“１１”が書き込まれる。
【００６５】
次に、図１６を用いて、上述したスクランブル方法２を実現するためのスクランブル回路２６の概略的な構成について説明する。図１６に示すように、スクランブル方法２のスクランブル回路２６は、図１１のスクランブル方法１のスクランブル回路２６に、ページ方向スクランブル回路４０、データ反転回路４１、４２をさらに備えている。
【００６６】
このようなスクランブル回路２６を用いたデータ書き込みは次のように行われる。まず、上述したスクランブル方法１と同様の方法で、カラム方向及びページ方向の両方において疑似乱数化した擬似乱数列を、擬似乱数列発生回路３９で生成する。そして、乱数加算回路３３により書き込みデータと擬似乱数列とが加算され、乱数化されたデータが生成される。さらに、スクランブル方法２では、ページ方向スクランブル回路４０において、図１３に示すスクランブルテーブル２７を用いてページ方向のデータスクランブルを実施し、データ反転回路４１により乱数化されたデータに対してデータ反転を行う。
【００６７】
具体的には、ＭＰＵ２２は、ページアドレス発生回路３７で発生されたページアドレス（以下、ワード線アドレスと呼ぶ）を用いて、このワード線アドレスに対応するワード線ＷＬが第１〜第４グループのいずれに相当するかを判断する。すなわち、ワード線アドレスをＭ、グループ数を“Ｎ”（本実施形態ではＮ＝“４”）とすると、Ａ＝Ｍ mod Ｎなる計算を行う。余りＡがそれぞれ“０”〜“３”の場合、当該ワード線アドレスに対応するワード線は第１〜第４グループのそれぞれに属することが分かる。
【００６８】
次に、ＭＰＵ２２は、ＲＡＭ２５に保持される図１３のスクランブルテーブル２７を参照する。そして、判断されたグループに応じて、スクランブル方式を選択する。例えば、Ａ＝“３”であり、当該ワード線アドレスに対応するワード線が第４グループに属すると判断された場合には、ＭＰＵ２２は書き込みデータの上位ページ及び下位ページの両方を反転させるスクランブル方式を選択し、その旨をスクランブル回路２６に命令する。
【００６９】
すると、スクランブル回路２６内のページ方向スクランブル回路４０及びデータ反転回路４１は、ＭＰＵ２２によって選択されたスクランブル方式に従って、書き込みデータをスクランブルする。例えば、第４グループに属するワード線ＷＬの上位ページデータを書き込む場合には、当該ページデータの全てを反転させる。
【００７０】
尚、データの読み出しの際には、外部から与えられたアドレスに従ってメモリセルからデータが読み出されると共に、ＭＰＵ２２は当該アドレスに対応したスクランブル方式をスクランブルテーブル２７から読み出す。そして、読み出したスクランブル方式に応じて、読み出しデータを解読する。例えば、第３グループに属するワード線の下位ページデータを読み出す場合には、スクランブル方式は図１３の通り「反転」であるから、ＭＰＵ２２の命令によりデータ反転回路４２は読み出しデータを反転させて外部へ出力する。このような読み出し方法を行うため、データのページ毎のコピーは、同一のグループに属するワード線間に制限される。
【００７１】
［５−３］スクランブル方法３
スクランブル方法３では、スクランブルを行うブロックを判定し、特定のブロックの場合はデータスクランブルを行わずに読み書きを行う。このようなスクランブル方法３が用いられる場合について、以下に説明する。
【００７２】
高信頼性を要求するデータ（例えば、ＦＡＴ：ファイル・アロケーション・テーブル）等の場合、システムは多値ＮＡＮＤ品に対して２値で読み書きを行う。これは、一つのセルに一つ（“１”か“０”）のデータしか書き込みを行わないことにより、書き込み／読み出しマージンを確保するものである。つまり、４値品の場合でも、敢えて特定のデータを２値として扱い、特定の領域（例えば、先頭のブロック）に書いたり読んだりする。この領域を乱数化すると、上位ページをスキップすれば別であるが、必然的に４値化されて本来の目的が達成できない。そこで、これを防止するために、その特定のブロックについては乱数化を制限する。裏を返せば、２値で取り扱うブロックをシステムが特定のブロックとして認識しているため、そのフラグを用いて制御する。つまり、２値で取り扱う特定のブロックに対しては、乱数加算も乱数減算も行わず、ストレートに読み書きを行う。
【００７３】
このような読み書きを実現するスクランブル回路２６の概略的な構成について、図１７を用いて説明する。
【００７４】
図１７に示すように、スクランブル回路２６は、データ入力部３１、データ出力部３２、乱数加算回路３３、乱数減算回路３４、擬似乱数列発生回路３９、アドレス発生回路４３、２値書き込みブロック判定回路４４、乱数加算回路バイパス回路４５、乱数減算回路バイパス回路４６を備えている。
【００７５】
アドレス発生回路４３は、書き込みデータのアドレスを発生させる。このアドレス発生回路４３は、例えば、上述した図１１及び図１６に示すセグメントアドレス発生回路３５、初期値発生回路３６、ページアドレス発生回路３７、初期値Ｎビットシフト回路３８を備えていてもよい。
【００７６】
２値書き込みブロック判定回路４４は、フラグを用いて、アドレス発生回路４３で指定された書き込みデータのアドレスが、２値で取り扱う特定のブロック（以下、特定ブロックと呼ぶ）に含まれるか否かを判断する。その結果、特定ブロックに含まれる場合は、乱数加算回路３３を介さず、乱数加算回路バイパス回路４５により書き込みデータがそのままＮＡＮＤ型フラッシュメモリ１１に書き込まれる。同様に、読み出し時も、特定ブロックに含まれる場合は、乱数減算回路３４を介さず、乱数減算回路バイパス回路４６により書き込みデータがそのまま読み出される。
【００７７】
尚、スクランブル方法３では、上述したスクランブル方法１及び２のいずれかを組み合わせることも可能である。
【００７８】
また、本実施形態のスクランブル方法では、ひとつのセグメントのバイト数を種々変更することが可能である。また、複数のセグメント単位やページ単位でも擬似乱数化してもよい。
【００７９】
［６］効果
本発明の一実施形態では、Ｍ系列符号生成回路とシフトレジスタを併用した擬似乱数列発生回路３９を用いることにより、ＮＡＮＤ型フラッシュメモリ１１のブロックを構成するカラムとページの両方向において、ブロック内に書き込むデータが分散され、特定のデータパターンの集中を防止することができる。これにより、多値ＮＡＮＤ型フラッシュメモリ１１のブロック内に書き込まれるセルの閾値レベルの分布を均一に分散させることができる。従って、カップリング等の影響によるブースト不足等による誤書き込みを防止することが可能となる。
【００８０】
具体的に、図１８（ａ）乃至（ｃ）、図１９（ａ）及び（ｂ）を用いて、８ＧｂのＮＡＮＤ型フラッシュメモリ１１にアプリケーションで実際に書き込んだデータを解析し、ブロック内のセルの閾値レベルの分布を調査したシミュレーション結果（正規プロット）について説明する。各図において、横軸は、１つのブロックに書き込まれるセルの各閾値レベルの数を示し、縦軸は、シグマ（解析した全てのブロックにつき各セルの閾値レベルの数を大きい順に並べ替えた）を示している。また、各図のＥレベル、Ａレベル、Ｂレベル、Ｃレベルは、図７の“１１”、“０１”、“１０”、“００”の閾値レベルに対応している。
【００８１】
まず、図１８（ａ）の比較例１は、乱数化する前の元データを用いた場合である。図１８（ｂ）の比較例２は、カラム方向のみＭ系列で乱数化した場合である。図１８（ｃ）の比較例３は、カラム方向にＭ系列で乱数化し、ページ方向は４ページ単位でデータを反転させた場合である。一方、図１９（ａ）は、上述したスクランブル方法１の場合である。つまり、図１９（ａ）では、ページアドレス毎に１ビットシフトした疑似乱数回路の初期値データを使用して、カラム方向にＭ系列でランダム化した場合を示す。図１９（ｂ）は、上述したスクランブル方法２の場合である。つまり、図１９（ｂ）では、ページアドレス毎に１ビットシフトした疑似乱数回路の初期値を使用して、カラム方向にＭ系列で疑似乱数化し、さらに、ページアドレス方向にページアドレスに応じてデータを反転させた場合を示す。このような図１９（ａ）及び（ｂ）の場合、図１８（ａ）乃至（ｃ）の比較例１〜３と比べて、各セルの閾値レベルの分布の均一性が大幅に改善されていることが分かる。
【００８２】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【００８３】
【図１】本発明の一実施形態に係るメモリシステムのブロック図。
【図２】本発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図３】本発明の一実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図４】本発明の一実施形態に係るフラッシュメモリのブロック図。
【図５】本発明の一実施形態に係るフラッシュメモリの具体的なブロック図。
【図６】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図７】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフ。
【図８】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフであり、データの書き込み方法を示す図。
【図９】本発明の一実施形態に係るスクランブル方法１（カラム方向）を説明するための図。
【図１０】本発明の一実施形態に係るスクランブル方法１（ページ方向）を説明するための図。
【図１１】本発明の一実施形態に係るスクランブル方法１のスクランブル回路のブロック図。
【図１２】本発明の一実施形態に係るスクランブル方法１の擬似乱数列発生回路の回路図。
【図１３】本発明の一実施形態に係るスクランブル方法２（ページ方向）で用いるスクランブルテーブルの概念図。
【図１４】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図１５】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの概念図であり、各メモリセルにスクランブルされたデータが書き込まれた様子を示す図。
【図１６】本発明の一実施形態に係るスクランブル方法２のスクランブル回路のブロック図。
【図１７】本発明の一実施形態に係るスクランブル方法３のスクランブル回路のブロック図。
【図１８】本発明の参考例のＮＡＮＤ型フラッシュメモリのセル閾値レベルの分布のシミュレーション結果の図。
【図１９】本発明の一実施形態に係るスクランブル方法１及び２のＮＡＮＤ型フラッシュメモリのセル閾値レベルの分布のシミュレーション結果の図。
【符号の説明】
【００８４】
１…メモリカード、２…ホスト機器、１１、…ＮＡＮＤ型フラッシュメモリ、１２…カードコントローラ、１３…信号ピン、２１…ホストインタフェースモジュール、２２…ＭＰＵ、２３…フラッシュコントローラ、２４…ＲＯＭ、２５…ＲＡＭ、２６…スクランブル回路、２７…スクランブルテーブル、２８…ページバッファ、２９…ロウデコーダ、３０…メモリセルアレイ、３１…データ入力部、３２…データ出力部、３３…乱数加算回路、３４…乱数減算回路、３５…セグメントアドレス発生回路、３６…初期値発生回路、３７…ページアドレス発生回路、３８…初期値Ｎビットシフト回路、３９…擬似乱数列発生回路、４０…ページ方向スクランブル回路、４１、４２…データ反転回路、４３…アドレス発生回路、４４…２値書き込みブロック判定回路、４５…乱数加算回路バイパス回路、４６…乱数減算回路バイパス回路、５０…シフトレジスタ。
【図１】
0005019611.tif 000002
【図２】
0005019611.tif 000003
【図３】
0005019611.tif 000004
【図４】
0005019611.tif 000005
【図５】
0005019611.tif 000006
【図６】
0005019611.tif 000007
【図７】
0005019611.tif 000008
【図８】
0005019611.tif 000009
【図９】
0005019611.tif 000010
【図１０】
0005019611.tif 000011
【図１１】
0005019611.tif 000012
【図１２】
0005019611.tif 000013
【図１３】
0005019611.tif 000014
【図１４】
0005019611.tif 000015
【図１５】
0005019611.tif 000016
【図１６】
0005019611.tif 000017
【図１７】
0005019611.tif 000018
【図１８】
0005019611.tif 000019
【図１９】
0005019611.tif 000020