(57)【要約】【課題】回路規模を縮小しながら、十分に高いランダマイズ性能を確保すると共に、ランダマイズ解除処理に要する時間を短縮する。【解決手段】実施形態の半数発生回路は、ソフトウェア処理によってシード値を発生するシード値発生処理部と、前記シード値が与えられてハードウェア処理によって乱数を発生する乱数発生部とを具備する。【選択図】図１
2012216154.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア処理によってシード値を発生するシード値発生処理部と、
前記シード値が与えられてハードウェア処理によって乱数を発生する乱数発生部と
を具備したことを特徴とする乱数発生回路。
【請求項２】
前記シード値発生処理部は、ソフトウェア処理によって求めたシード値を用いてソフトシェア処理によって乱数を求め、求めた乱数に基づくシード値を前記乱数発生部に与える
ことを特徴とする請求項１に記載の乱数発生回路。
【請求項３】
半導体メモリと、
ソフトウェア処理によってシード値を発生するシード値発生処理部と、
前記シード値が与えられてハードウェア処理によって乱数を発生する乱数発生部と
前記半導体メモリへの書き込みデータを前記乱数発生部からの乱数を用いてランダマイズ処理して前記半導体メモリに書き込むと共に、前記半導体メモリからの読み出しデータ前記乱数発生部からの乱数を用いてランダマイズ解除処理するランダマイズ部と、
を具備したことを特徴とする半導体記憶装置。
【請求項４】
前記シード値発生処理部は、ソフトウェア処理によって求めたシード値を用いてソフトシェア処理によって乱数を求め、求めた乱数に基づくシード値を前記乱数発生部に与える
ことを特徴とする請求項３に記載の半導体記憶装置。
【請求項５】
半導体メモリと、
ソフトウェア処理によってシード値を発生するシード値発生処理部と、
ハードウェア処理によってシード値を発生するシード値発生回路と、
前記半導体メモリのページ先頭フレームからのデータの読み出しに際して、前記シード値発生回路からのシード値が与えられ、前記半導体メモリのページ先頭以外のフレームからのデータの読み出しに際して、前記シード値発生処理部からのシード値が与えられて、ハードウェア処理によって乱数を発生する乱数発生部と
前記半導体メモリへの書き込みデータを前記乱数発生部からの乱数を用いてランダマイズ処理して前記半導体メモリに書き込むと共に、前記半導体メモリからの読み出しデータ前記乱数発生部からの乱数を用いてランダマイズ解除処理するランダマイズ部と、
を具備したことを特徴とする半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、乱数発生回路及び半導体記憶装置に関する。
【背景技術】
【０００２】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてＮＡＮＤ型フラッシュメモリが広く使用されている。ＮＡＮＤ型フラッシュメモリは、複数のメモリセルが直列接続されたＮＡＮＤストリング構造を備えている。このＮＡＮＤストリングに含まれるメモリセル数は大容量化に伴い増加し、これに従ってその動作信頼性が低下するという問題があった。
【０００３】
そこで、書き込みデータをランダマイズする方法が採用されている。ＮＡＮＤ型フラッシュメモリのブロック内に書き込むデータをランダムなものとすることにより、データパターンの集中を防止し、動作信頼性を向上させる。
【０００４】
ＮＡＮＤ型フラッシュメモリへのデータの書き込み時及び読み出し時には、疑似乱数を発生させ、発生させた疑似乱数を用いてデータのランダマイズ処理及びランダマイズの解除処理が行われる。従って、疑似乱数の発生のさせ方によってランダマイズ性能が変化すると共にランダマイズ解除処理に要する時間が変化する。
【０００５】
しかしながら、従来、ランダマイズのための回路規模が大きく、また、十分に高いランダマイズ性能を確保しながら、ランダマイズ解除処理に要する時間を短縮することは困難であった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１５７８３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の実施形態は、回路規模を縮小しながら、十分に高いランダマイズ性能を確保すると共に、ランダマイズ解除処理に要する時間を短縮することができる乱数発生回路及び半導体記録装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態の乱数発生回路は、ソフトウェア処理によってシード値を発生するシード値発生処理部と、前記シード値が与えられてハードウェア処理によって乱数を発生する乱数発生部とを具備する。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施の形態に係る半導体記憶装置を含むメモリシステムを示すブロック図。
【図２】図１中のカードコントローラ１２の具体的な構成を示すブロック図。
【図３】図１中のＮＡＮＤ型フラッシュメモリ１１の構成を説明するための説明図。
【図４】図３中のメモリブロックＢＬＫｎの詳細な構成を示す等価回路図。
【図５】Ｍ系列回路ＭＡ〜ＭＤの構成を示す回路図。
【図６】シード値発生回路を示す回路図。
【図７】ビット線ＢＬ０〜ＢＬ１５に対して割当てるＭ系列回路ＭＡ〜ＭＤを示す説明図。
【図８】読み出し時の動作を示す説明図。
【図９】読み出し時の動作を示す説明図。
【図１０】ランダマイズ回路２６中のランダマイズ処理部３１の構成を示すブロック図。
【図１１】ランダマイズ回路２６中のランダマイズ解除処理部３５の構成を示すブロック図。
【図１２】Ｍ系列回路ＭＡ〜ＭＤに供給するシード値を発生するための基本シード値を有するシードテーブル２７を示す説明図。
【図１３】基本シード値のローテーションを説明するための説明図。
【図１４】書き込み時におけるシード値設定処理を示すフローチャート。
【図１５】図１５はシード値の生成を説明するための説明図。
【図１６】読み出し時におけるシード値設定処理を示すフローチャート。
【図１７】本実施の形態におけるデータ読み出しを説明するための説明図。
【図１８】本発明の第２の実施の形態を示すブロック図。
【図１９】第２の実施の形態における動作フローを示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１１】
（第１の実施の形態）
図１は本発明の第１の実施の形態に係る半導体記憶装置を含むメモリシステムを示すブロック図である。
【００１２】
メモリシステムは、メモリカード１及びホスト機器２を備えている。ホスト機器２は、バスインタフェース１４を介して接続されるメモリカード１に対しアクセスを行うためのハードウェア及びソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００１３】
メモリカード１は、ホスト機器２とバスインタフェース１４を介して情報の授受を行う。メモリカード１は、ＮＡＮＤ型フラッシュメモリ１１、フラッシュメモリ１１を制御するカードコントローラ１２、及び複数の信号ピン１３を備えている。
【００１４】
複数の信号ピン１３は、図示しない配線によってカードコントローラ１２と電気的に接続されている。メモリカード１を例えばホスト機器２に設けられた図示しないスロットに装着することで、ホスト機器２に設けられた図示しないホストコントローラと信号ピン１３とが電気的に接続されて、ホストコントローラとメモリカード１内のカードコントローラ１２との間で各種信号及びデータの通信が行われるようになっている。
【００１５】
カードコントローラ１２とＮＡＮＤ型フラッシュメモリ１１とは、図示しない入出力（Ｉ／Ｏ）線によって接続されており、この入出力線を介してＮＡＮＤ型フラッシュメモリ１１に対するデータの書き込み及び読み出しを行うようになっている。
【００１６】
なお、本実施の形態では、ＮＡＮＤ型フラッシュメモリ１１及びカードコントローラ１２はメモリカード１に搭載されているが、メモリカード１に搭載されることに限定されない。例えば、ＰＣ等の電子機器内に組み込み搭載される態様でもよい。また、本実施形態では、半導体メモリとしてＮＡＮＤ型フラッシュメモリ１１を例に挙げているが、例えば、ＮＯＲ型フラッシュメモリ、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）等に置き換えることも可能である。
【００１７】
図２は図１中のカードコントローラ１２の具体的な構成を示すブロック図である。
【００１８】
カードコントローラ１２は、フラッシュメモリ１１を管理する。例えば、カードコントローラ１２は、フラッシュメモリ１１の物理アドレス及び論理アドレスを管理し、データの書き込み及び読み出しを制御する。
【００１９】
図２に示すように、カードコントローラ１２は、ホストインタフェースモジュール２１、ＭＰＵ（Micro Processing Unit）２２、フラッシュコントローラ２３、ＲＯＭ（Read Only Memory）２４、ＲＡＭ（Random Access Memory）２５、及びランダマイズ回路２６を有する。
【００２０】
ホストインタフェースモジュール２１は、カードコントローラ１２とホスト機器２との間のインタフェース処理を行う。
【００２１】
ＭＰＵ２２は、メモリカード１全体の動作を制御する。ＭＰＵ２２は、例えばメモリカード１が電源供給を受けたときに、ＲＯＭ２４に格納されているファームウェア（制御プログラム）をＲＡＭ２５上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２５上に作成する。また、ＭＰＵ２２は、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ１１に対して所定の処理を実行する。
【００２２】
ランダマイズ回路２６は、ランダマイズ処理部及びランダマイズ解除処理部を有する。ＭＰＵ２２は、ランダマイズ回路２６を制御して、書き込みデータに対するランダマイズ処理及びランダマイズ解除処理を行う。本実施の形態においては、ＭＰＵ２２は、ランダマイズ処理及びランダマイズ解除処理において用いるシード値を生成する。書き込みデータのランダマイズ処理及びランダマイズ解除処理については、後に詳述する。ＭＰＵ２２がシード値を生成するためのプログラムは、ＲＯＭ２４にファームウェアとして格納されている。
【００２３】
ＲＯＭ２４は、ＭＰＵ２２により制御される制御プログラム等を格納する。ＲＡＭ２５は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。さらに、ＲＡＭ２５は、予め作成されたシードテーブル２７を保持する。シードテーブル２７については、後に詳述する。フラッシュコントローラ２３は、カードコントローラ１２とフラッシュメモリ１１との間のインタフェース処理を行う。
【００２４】
図３は図１中のＮＡＮＤ型フラッシュメモリ１１の構成を説明するための説明図である。
【００２５】
図３に示すように、ＮＡＮＤ型フラッシュメモリ１１は、メモリセルアレイ３０、ページバッファ２８、及びロウデコーダ２９を備えている。
【００２６】
メモリセルアレイ３０は、複数のメモリブロックＢＬＫ０、ＢＬＫ１、…を含んでいる。データの消去は、メモリブロックＢＬＫｎ単位で行われる。すなわち、同一メモリブロックＢＬＫｎ内のデータは一括して消去される。メモリブロックＢＬＫｎの各々は、複数のメモリセルＭＣＥを備えている。また、メモリブロックＢＬＫｎ内には、複数のワード線ＷＬ０、ＷＬ１、…と、ワード線ＷＬ０、ＷＬ１、…に直交するビット線ＢＬ０、ＢＬ１、…とが設けられている。以下、ワード線ＷＬ０、ＷＬ１、…を特に区別しない場合には単にワード線ＷＬと呼び、ビット線ＢＬ０、ＢＬ１、…を特に区別しない場合には単にビット線ＢＬと呼ぶ。
【００２７】
同一行にあるメモリセルＭＣＥは、同一のワード線ＷＬに共通接続されている。また、同一列にあるメモリセルＭＣＥは、複数のメモリセル単位でビット線ＢＬに共通接続されている。なお、データの書き込み及び読み出しは、一本のワード線ＷＬに接続される複数のメモリセルＭＣＥの集合毎に行われ、このメモリセルＭＣＥの集合を「１ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線ＷＬが選択され、カラムアドレスによっていずれかのビット線ＢＬが選択される。
【００２８】
ページバッファ２８は、フラッシュメモリ１１へのデータ入出力を行い、データを一時的に保持する。ページバッファ２８が保持可能なデータサイズは、各メモリブロックＢＬＫｎのページサイズと同じである。データ書き込み等の際、ページバッファ２８は、フラッシュメモリ１１に対するデータ入出力処理を、１ページ分の単位で実行する。また、読み出しの際は、１ページ分のメモリセルのデータをページバッファ２８に転送し、図示しないＩ／Ｏ線を介してページバッファ２８からシリアルに読み出される。
【００２９】
ロウデコーダ２９は、データの書き込み時及び読み出し時において、いずれかのワード線ＷＬを選択する。
【００３０】
図３の例では、フラッシュメモリ１１の各メモリブロックＢＬＫｎは、例えば２５６ページによって構成される。各ページは、誤り訂正単位であるＥＣＣフレームを４つ含み、各ＥＣＣフレームには１６ビットのビット線ＢＬを１カラムとして複数のカラムが含まれる。なお、図３は一例であれ、これに限定されるものではない。
【００３１】
図４は図３中のメモリブロックＢＬＫｎの詳細な構成を示す等価回路図である。
【００３２】
図４に示すように、メモリブロックＢＬＫｎは、ワード線ＷＬ方向に沿って配置された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは１以上の自然数）。各々のＮＡＮＤストリングは、選択トランジスタＳＴ１、ＳＴ２、及び図３のメモリセルＭＣＥに相当する２５６個のメモリセルトランジスタＭＴを備えている。各ＮＡＮＤストリングに含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｍのいずれかに接続され、ゲートがセレクトゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートがセレクトゲート線ＳＧＳに共通接続されている。
【００３３】
各メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたＭＯＳトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層（フローティングゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各ＮＡＮＤストリングにおいて、２５６個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタＭＴから順に、制御ゲートがワード線ＷＬ０〜ＷＬ２５５にそれぞれ接続されている。従って、ワード線ＷＬ２５５に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００３４】
ワード線ＷＬ０〜ＷＬ２５５は、メモリブロックＢＬＫｎ内のＮＡＮＤストリング間で、同一行のメモリセルトランジスタＭＴの制御ゲートに共通接続されている。つまり、メモリブロックＢＬＫｎ内において同一行にあるメモリセルトランジスタＭＴの制御ゲートは、同一のワード線ＷＬに接続される。また、ビット線ＢＬ０〜ＢＬｍは、各メモリブロックＢＬＫｎの選択トランジスタＳＴ１のドレインに接続されている。つまり、同一列のメモリセルトランジスタＴＭは、同一のビット線ＢＬに接続される。
【００３５】
なお、メモリセルトランジスタＭＴは、閾値電圧のＶｔｈの与え方によっては、２値だけでなく多値の情報を保持可能である。
【００３６】
本実施の形態においては、データのランダマイズのために発生する疑似乱数を、ソフトウェア処理によってシード（Seed）値を発生するシード値発生処理部であるＭＰＵ２２と、ＭＰＵ２２からのシード値がセットされて疑似乱数を発生するＭ系列回路とによって発生させる。ＮＡＮＤ型フラッシュメモリ１１へ書き込むデータとＭ系列回路からの疑似乱数との排他的論理和をとることで、データをランダマイズ化する。
【００３７】
先ず、比較のために、ハードウェアによってシード値を発生する関連技術としての疑似乱数発生回路について、図５乃至図９を参照して説明する。図５はＭ系列回路を示す回路図であり、図６はシード値発生回路を示す回路図である。
【００３８】
図５（ａ）乃至（ｄ）は、Ｍ系列回路ＭＡ〜ＭＤをガロア型で構成した例を示している。図５（ａ）〜（ｄ）に示すように、Ｍ系列回路ＭＡ〜ＭＤは、夫々１３ビット構成、１７ビット構成、１９ビット構成又は２３ビット構成である。
【００３９】
Ｍ系列回路ＭＡは、第１乃至第１３ビットに夫々対応した１３ビット分のシフトレジスタＲ１〜Ｒ１３を有している。シフトレジスタＲ１の出力は排他的論理和回路に与えられて、シフトレジスタＲ１３の出力との排他的論理和演算結果が次段のシフトレジスタＲ２に与えられる。同様に、シフトレジスタＲ３，Ｒ４の出力は、夫々排他的論理和回路に与えられて、シフトレジスタＲ１３の出力との排他的論理和演算結果が次段のシフトレジスタＲ４，Ｒ５に夫々与えられる。Ｍ系列回路ＭＡによって与えられる各帰還多項式Ｇ１３（ｘ）は下記（１）式にて表される。
【００４０】
Ｇ13（ｘ）＝ｘ13＋ｘ4＋ｘ3＋ｘ1＋１    …（１）
Ｍ系列回路ＭＢは、第１乃至第１７ビットに夫々対応した１７ビット分のシフトレジスタＲ１〜Ｒ１７を有している。シフトレジスタＲ３の出力は排他的論理和回路に与えられて、シフトレジスタＲ１７の出力との排他的論理和演算結果が次段のシフトレジスタＲ４に与えられる。Ｍ系列回路ＭＢによって与えられる各帰還多項式Ｇ１７（ｘ）は下記（２）式にて表される。
【００４１】
Ｇ17（ｘ）＝ｘ17＋ｘ3＋１        …（２）
Ｍ系列回路ＭＣは、第１乃至第１９ビットに夫々対応した１９ビット分のシフトレジスタＲ１〜Ｒ１９を有している。シフトレジスタＲ１，Ｒ２，Ｒ４の出力は夫々排他的論理和回路に与えられて、シフトレジスタＲ１９の出力との排他的論理和演算結果が次段のシフトレジスタＲ２，Ｒ３，Ｒ５に夫々与えられる。Ｍ系列回路ＭＣによって与えられる各帰還多項式Ｇ１９（ｘ）は下記（３）式にて表される。
【００４２】
Ｇ19（ｘ）＝ｘ19＋ｘ5＋ｘ2＋ｘ1＋１    …（３）
Ｍ系列回路ＭＤは、第１乃至第２３ビットに夫々対応した２３ビット分のシフトレジスタＲ１〜Ｒ２３を有している。シフトレジスタＲ６の出力は排他的論理和回路に与えられて、シフトレジスタＲ２３の出力との排他的論理和演算結果が次段のシフトレジスタＲ７に与えられる。Ｍ系列回路ＭＤによって与えられる各帰還多項式Ｇ２３（ｘ）は下記（４）式にて表される。
【００４３】
Ｇ23（ｘ）＝ｘ23＋ｘ5＋１    …（４）
Ｍ系列回路ＭＡ〜ＭＤは、夫々周期が異なる４種類の疑似乱数を発生する。
【００４４】
関連技術である疑似乱数発生回路は、図５に示すＭ系列回路と図６に示すシード値発生回路とによって構成される。図７はカラム方向ランダマイズのための疑似乱数の発生を説明するための説明図である。
【００４５】
図７は１カラムを構成するビット線ＢＬ０〜ＢＬ１５に対して割当てるＭ系列回路ＭＡ〜ＭＤを示している。なお、各フレーム中の全てのカラムについて図７と同様の割当てが行われる。即ち、図７に示すように、隣接する４ビット線ＢＬについては、異なる周期のＭ系列回路を用い、１６ビット線に対して４種類のＭ系列回路ＭＡ〜ＭＤを用いることでランダマイズ性能を向上させている。
【００４６】
Ｍ系列回路ＭＡ〜ＭＤは、各ビットのシフトレジスタに、シード値（ｓｅｅｄ値）を与えることで、順次疑似乱数を発生する。１カラム中において４つのビット線には同一種類のＭ系列回路が割当てられるが、これらの同一種類のＭ系列回路に異なるシード値を与えることで、１カラム中の全てのビット線に対応して異なるシード値を割当てることができる。
【００４７】
図５は各Ｍ系列回路ＭＡ〜ＭＤにシード値を与えるシード値発生回路を示している。なお、各種類のＭ系列回路ＭＡ〜ＭＤに夫々対応したシード値発生回路を設ける必要がある。シード値発生回路のインデックス値（Index0-7）のビット数及び値を変化させることで、図５のシード値発生回路によってビット数が異なる４種類のＭ系列回路に対応したシード値を供給することができる。
【００４８】
即ち、１カラム中の異なる種類のＭ系列回路が割当てられたビット線に対応して、異なるシード値が供給される。更に、１カラム中の同一種類のＭ系列回路が割当てられた４つのビット線に対応して、異なるシード値を発生させる。このように、１カラムの全てのビット線に対応して異なるシード値が設定される。例えば、ページ先頭のカラムに設定したシード値を初期値として、Ｍ系列回路ＭＡ〜ＭＤを動作させることで、ページ内の全てのカラムのビット線に対応した疑似乱数を発生させることができる。
【００４９】
更に、ページ方向についても、シード値をページ毎に変化させることでページ毎に異なる疑似乱数によるランダマイズが可能である。
【００５０】
Ｍ系列回路ＭＡ〜ＭＤに夫々対応するシード値発生回路は、入力されるインデックス値に応じたシード値を発生する。セレクタ４１には、８種類のインデックス値が与えられる。なお、Ｍ系列回路ＭＡ〜ＭＤの種類毎に８種類のインデックス値として異なるインデックス値が用いられる。この８種類のインデックス値をそのままシード値として切換えて出力することで、８種類のシード値が得られる。なお、１カラムにおいて同一種類のＭ系列回路にシード値を供給するシード値発生回路においては、インデックス値の初期値を相互に変化させることで、１カラム中の全てのビット線毎に異なるシード値を設定する。
【００５１】
セレクタ４１は、３ビットのページアドレス［２：０］であるセレクト信号seed_indexによって制御され、ページ毎にインデックス値を切換えてローテータ４２に出力する。これにより、８ページ分は異なるシード値が得られる。
【００５２】
ローテータ４２は、入力されたインデックス値をローテーションさせる。例えば、ローテータ４２は、Ｍ系列回路ＭＡのための１３ビットのインデックス値が入力されると、第１乃至第１２ビットを第２乃至第１３ビットにシフトし、第１３ビットを第１ビットにシフトする。このローテータ４２を制御する制御信号seed_rotateとしては、４ビットのページアドレス［６：３］が用いられる。これにより、８ページ毎に、１６回のローテーションが行われ、８×１６＝１２８ページ分は異なるシード値が得られる。
【００５３】
ローテータ４２の出力は排他的論理和回路４３に与えられる。排他的論理和回路４３には、セレクタ４４の出力も与えられる。セレクタ４４は、１ビットのページアドレス［７］であるセレクト信号clm_base_selによって制御されて、全ビットが固定値０であるか又は１である入力を切換えて出力する。排他的論理和回路４３は、ローテータ４２の出力とセレクタ４４の出力との排他的論理和演算結果をシード値として出力する。これにより、１２８ページ毎にローテータ４２の出力が反転し、２５６ページ分は異なるシード値が得られる。こうして、メモリブロックＢＬＫｎ内では、同一のシード値が設定されないようになっている。
【００５４】
このように構成された疑似乱数発生回路を用いてデータをランダマイズして書き込みを行う。即ち、ページの先頭カラムの１６ビット線に対して１６種類のシード値が設定される。Ｍ系列回路ＭＡ〜ＭＤは、夫々シード値が設定されて先頭カラムの各ビット線に用いる疑似乱数を発生させる。そして、Ｍ系列回路ＭＡ〜ＭＤにおいてビットをシフトさせることで、他のカラムの各ビットに用いる疑似乱数を発生させる。そして、ページが切換ると、シード値も切換り、前のページとは異なる疑似乱数が発生する。このようにして、ブロック内で疑似乱数を変化させることで、高いランダマイズ性能を得ることができる。
【００５５】
ところで、ランダマイズ解除処理においては、書き込み時と同じシード値を用いる必要がある。シード値発生回路によるシード値は、ページの先頭カラムの各ビット線に対応している。従って、ページ内の先頭フレーム以外のフレームから読み出しを行う場合でも、シード値発生回路を動作させ、ページの先頭カラムに対応したシード値をＭ系列回路ＭＡ〜ＭＤに与えて、Ｍ系列回路ＭＡ〜ＭＤにより、ページ先頭フレームから全てのビット線に対応する疑似乱数を順次発生させる必要がある。
【００５６】
図８はこの状態を示しており、例えば、ページ０のＤａｔａ（Ｆ１）が格納されている２つ目のフレームから読み出しを行う場合でも、図８の破線矢印に示すように、Ｄａｔａ（Ｆ０）が格納されたページ先頭フレームに対応した疑似乱数を先ず発生させる、即ち、Ｍ系列回路ＭＡ〜ＭＤを空回しさせる必要がある。次に、図８の実線矢印に示すように、Ｄａｔａ（Ｆ１）が格納されている２つ目フレーム以降の疑似乱数を順次発生させて、ランダマイズ解除処理を行う。
【００５７】
従って、図５及び図６に示す疑似乱数発生回路を採用した場合には、ページの途中のフレームから読み出しを行う場合でも、ページ先頭のフレームから読み出しを行う場合と同様の読み出し時間が必要であり、リード時の応答性能が低い。
【００５８】
このような欠点を解消するために、シード値をフレーム毎に発生させる方法が考えられる。即ち、図６のシード値発生回路のセレクト信号seed_index、制御信号seed_rotate及びセレクト信号clm_base_sel の生成論理を下記表１に示すものとすると共に、セレクタ４４に０乃至７の固定値を入力する。
【００５９】
表１
┌──────┬───────────────────────────┐
│  信  号    │      生成論理                                        │
├──────┼───────────────────────────┤
│seed_index   │  ページアドレス［２：０］                           │
├──────┼───────────────────────────┤
│seed_rotate   │ページアドレス［４：３］、 フレームアドレス［１：０］│
├──────┼───────────────────────────┤
│clm_base_sel │  ページアドレス［７：５］                            │
└──────┴───────────────────────────┘
セレクタ４１は、３ビットのページアドレス［２：０］であるセレクト信号seed_indexによって制御され、ページ毎にインデックス値を切換えてローテータ４２に出力する。ローテータ４２は、入力されたインデックス値をローテーションさせる。ローテータ４２を制御する制御信号seed_rotateとしては、２ビットのページアドレス［４：３］と２ビットのフレームアドレス［１：０］が用いられる。これにより、８ページ毎に、４回のローテーションが行われると共に、ページ内の各フレーム毎にローテーションが行われる。ローテータ４２によって、８×４＝３２ページ分は異なるシード値が得られる。
【００６０】
セレクタ４４は、３ビットのページアドレス［７：５］であるセレクト信号clm_base_selによって制御されて、全ビットが固定値０乃至７のいずれかである入力を切換えて出力する。排他的論理和回路４３は、ローテータ４２の出力とセレクタ４４の出力との排他的論理和演算結果をシード値として出力する。これにより、３２ページ毎にローテータ４２の出力が８回変化し、２５６ページ分は異なるシード値が得られる。こうして、メモリブロックＢＬＫｎ内では、同一のシード値が設定されないようになっている。
【００６１】
こうして、各フレーム毎に異なるシード値を設定可能である。この場合には、例えば、ページ０のＤａｔａ（Ｆ１）が格納されている２つ目フレームから読み出しを行う場合には、図９の実線矢印に示すように、最初からＤａｔａ（Ｆ１）が格納されている２つ目フレーム以降の疑似乱数を順次発生させて、ランダマイズ解除処理を行うことができる。
【００６２】
しかしながら、表１の設定に基づくシード値は、フレーム毎に発生することになり、Ｍ系列回路ＭＡ〜ＭＤは、図９の矢印に示すように、フレーム毎にシード値を設定して乱数発生を初期化するので、ランダマイズ性能が低下する。
【００６３】
そこで、上述したように、本実施の形態においては、シード値をソフトウェア処理によって発生させる。なお、本実施の形態においても、図７に示すように、１カラムを構成するビット線ＢＬ０〜ＢＬ１５に対して４種類のＭ系列回路ＭＡ〜ＭＤを割当てるものとして説明する。そして、各フレーム中の全てのカラムについて図７と同様の割当てを行う。
【００６４】
図１０はランダマイズ回路２６中のランダマイズ処理部３１の構成を示すブロック図である。また、図１１はランダマイズ回路２６中のランダマイズ解除処理部３５の構成を示すブロック図である。
【００６５】
図１０に示すように、ランダマイズ処理部３１は、１カラム分のビット線ＢＬに夫々対応して設けられたＭ系列回路ＭＡ〜ＭＤからなるＭ系列回路群Ｍを有する。なお、Ｍ系列回路ＭＡ〜ＭＤの構成は、図５（ａ）〜（ｄ）に示す回路と同一であるものとする。Ｍ系列回路群Ｍの各Ｍ系列回路ＭＡ〜ＭＤは、信号線３２を介してＭＰＵ２２からシード値が供給される。なお、Ｍ系列回路ＭＡ〜ＭＤにはクロックも与えられる（図示省略）。
【００６６】
Ｍ系列回路ＭＡ〜ＭＤは、シード値が入力され、クロックが入力される毎に疑似乱数を出力する。Ｍ系列回路ＭＡ〜ＭＤからの疑似乱数は、Ｍ系列回路ＭＡ〜ＭＤの構成及び入力されるシード値によって決定される。Ｍ系列回路ＭＡ〜ＭＤからの疑似乱数は、１カラム分のビット線に対応して設けられた排他的論理和回路３３に与えられる。排他的論理和回路３３は、１カラム分の各ビット線に対応して入力される１カラム分のデータＩ０〜Ｉ１５と１６個のＭ系列回路ＭＡ〜ＭＤからの疑似乱数との排他的論理和を求めて、演算結果をランダマイズ処理後の書き込みデータとして切換回路３６に出力する。切換回路３６は、入力された書き込みデータを対応する１カラム分のビット線ＢＬｃ０〜ＢＬｃ１５（ＢＬ０〜ＢＬ１５，ＢＬ１６〜ＢＬ３１，…）に出力する。
【００６７】
図１１に示すように、ランダマイズ解除処理部３５もランダマイズ処理部３１と同様の構成であり、１カラム分のビット線ＢＬｃ０〜ＢＬｃ１５からの信号を切換回路３６を介して取り込む。これらの１カラム分の読み出しデータと、１６個のＭ系列回路ＭＡ〜ＭＤからの疑似乱数との排他的論理和を排他的論理和回路３３に求めることにより、ランダマイズを解除して出力Ｏ０，Ｏ１，Ｏ２，…として出力する。ランダマイズ解除処理部３５は、データの読み出し時において、データ書き込みに用いた疑似乱数と同じ疑似乱数を用いることで、ランダマイズを解除した読み出しデータを得る。
【００６８】
図１２はこれらのＭ系列回路ＭＡ〜ＭＤに供給するシード値を発生するための基本シード値を有するシードテーブル２７を示している。シードテーブル２７はＭ系列回路ＭＡ〜ＭＤに夫々対応した４つの領域を有しており、各領域には夫々８種類の基本シード値が格納されている。なお、図１２では、Ｍ系列回路ＭＡ用の基本シード値としてＳｅｅｄ＃０＿ＭＡ〜Ｓｅｅｄ＃７＿ＭＡが記憶され、Ｍ系列回路ＭＢ用の基本シード値としてＳｅｅｄ＃０＿ＭＢ〜Ｓｅｅｄ＃７＿ＭＢが記憶され、Ｍ系列回路ＭＣ用の基本シード値としてＳｅｅｄ＃０＿ＭＣ〜Ｓｅｅｄ＃７＿ＭＣが記憶され、Ｍ系列回路ＭＤ用の基本シード値としてＳｅｅｄ＃０＿ＭＤ〜Ｓｅｅｄ＃７＿ＭＤが記憶される例を示している。なお、基本シード値は、Ｍ系列回路ＭＡ〜ＭＤのビット数に対応した２進数である。
【００６９】
１ページのランダマイズ処理には、８種類の基本シード値のうちの１つのみを用いる。１カラム内において、同一種類のＭ系列回路についても異なるシード値を供給するために、ＭＰＵ２２はシード値をローテーションさせる。図１３はこのローテーションの一例を示している。図１３の例は、Ｍ系列回路ＭＡ用の基本シード値についてのローテーションの例である。
【００７０】
図１３に示すように、ＭＰＵ２２は、ビット線ＢＬ０のＭ系列回路ＭＡには基本シード値をそのまま与え、ビット線ＢＬ４，ＢＬ８，ＢＬ１２のＭ系列回路ＭＡには基本シード値をローテーションさせて与える。図１３の例において、例えば、ビット線ＢＬ０のＭ系列回路ＭＡに基本シード値Ｓｅｅｄ＃０＿ＭＡを与える場合には、ビット線ＢＬ４，ＢＬ８，ＢＬ１２のＭ系列回路ＭＡには夫々基本シード値Ｓｅｅｄ＃１＿ＭＡ，Ｓｅｅｄ＃２＿ＭＡ，Ｓｅｅｄ＃３＿ＭＡを与える。
【００７１】
図１３に示すローテーション処理によって、１カラム中の全てのＭ系列回路ＭＡ〜ＭＤに相互に異なるシード値を供給することができる。更に、ＭＰＵ２２は、プログラムによって、図６の４１，４４、ローテータ４２及び排他的論理和回路４３と同様の処理、即ち、基本シード値の１つをページ毎に選択する処理、選択したシード値の配列をシフトする処理、及びシフトしたシード値と固定値との排他的論理和によってシード値を得る処理を行うことが可能である。これにより、ＭＰＵ２２は例えば２５６ページ分の異なるシード値を発生してＭ系列回路ＭＡ〜ＭＤに供給することができる。
【００７２】
図５及び図６の関連技術では、１カラム分の各ビット線に対応してシード値発生回路が必要であったの対し、本実施の形態においては、ＭＰＵ２２によってシード値を発生することができることから、１６個のシード値発生回路を省略することができ、メモリカード１の回路規模を著しく削減することができる。
【００７３】
更に、本実施の形態においては、ＭＰＵ２２は、プログラムによってＭ系列の生成演算を実行することにより、ページ途中のフレームの先頭カラムにおいてランダマイズ解除処理に必要なシード値を算出することができる。従って、読み出し時に、ページ途中のフレームからの読み出しが行われる場合でも、Ｍ系列回路ＭＡ〜ＭＤを空回しすることなく、必要なシード値をＭ系列回路ＭＡ〜ＭＤに供給して、ランダマイズ解除処理を行うことができる。
【００７４】
次に、図１４乃至図１６を参照して、ランダマイズ処理及びランダマイズ解除処理時のシード値の発生方法について詳細に説明する。図１４は書き込み時におけるシード値設定処理を示すフローチャートであり、図１５はシード値の生成を説明するための説明図である。また、図１６は読み出し時におけるシード値設定処理を示すフローチャートである。
【００７５】
（データ書き込み）
いま、ホスト機器２はデータの書き込み命令及び書き込みデータをメモリカード１に与えるものとする。カードコントローラ１２のホストインタフェースモジュール２１は、ホスト機器２からの書き込み命令及び書き込みデータを受信する。
【００７６】
ＭＰＵ２２は、受信した書き込みデータを基に書き込むべきメモリセルＭＣＥのアドレスを算出する。ＭＰＵ２２は、書き込みデータを書き込むべきページアドレス及びビットアドレスを取得する（ステップＳ１）。本実施の形態においては、ＭＰＵ２２は、書き込みデータをランダマイズ処理するために必要なシード値をソフトウェア処理によって求めて、ランダマイズ回路２６に出力する。即ち、ＭＰＵ２２は、ステップＳ２において、Ｍ系列回路の種類に応じた基本シード値をシードテーブル２７から読み出す。いま、例えば、図７に示す１カラム中のビット線ＢＬ０，ＢＬ４，ＢＬ８，ＢＬ１２に割当てたＭ系列回路ＭＡに供給するシード値を発生させるものとする。
【００７７】
例えば、ＭＰＵ２２が図１５（ａ）に示すＭ系列回路ＭＡに対応する基本シード値Seed#0_MA〜Seed#7_MAを用いるものとする。ＭＰＵ２２は、１カラム中でいずれのビット線に対応したシード値を算出するかを決定する（ステップＳ３）。ＭＰＵ２２は例えば、ビット線ＢＬ０，ＢＬ４，ＢＬ８，ＢＬ１２の順に対応するシード値を算出する。
【００７８】
ＭＰＵ２２は、ビット線ＢＬ０に対応したシード値を求める場合には、基本シード値をそのまま用いる。ＭＰＵ２２は、ビット線ＢＬ４，ＢＬ８，ＢＬ１２に対応したシード値を求める場合には、ステップＳ４から処理をステップＳ５に移行して、基本シード値をローテーションさせる。
【００７９】
例えば、ＭＰＵ２２は、ビット線ＢＬ４に対応したシード値を求める場合には、図１５（ｂ）に示すように基本シード値をローテーションさせる。こうして、同一種類のＭ系列回路であっても、異なるビット線に割当てるシード値は異なるものとなる。
【００８０】
次に、ＭＰＵ２２は、基本シード値の各シード値をページ単位で切換えて選択する。ＭＰＵ２２はシード値を設定するページのページアドレスの下位３ビットを用いて、基本シード値の中から１つのシード値を選択する（ステップＳ６）。図１５（ｃ）は図１５（ｂ）の基本シード値の具体例を１６進数表記で示したものである。例えば、ＭＰＵ２２が、第０，８，…ページのカラムに設定するシード値を求めるものとする。この場合には、ＭＰＵ２２は、基本シード値として０ｘ０５６ｃを選択する。図１５（ｄ）は選択したシード値を示している。
【００８１】
次に、ＭＰＵ２２は、ステップＳ７において、選択したシード値をページアドレス［６：３］を用いてローテーションする。８つの基本シード値を４ビットのページアドレスでローテーションすることにより、１２８ページ分のシード値を生成することができる。図１５（ｅ）は、第８ページ用のシード値を生成するために、図１５（ｄ）のシード値を１ビット分だけローテーションさせたものを示している。
【００８２】
更に、ＭＰＵ２２は、２５６ページ分のシード値を生成するために、ページアドレス［７］を用いて全ビットが０か又は１の固定値を決定し（ステップＳ８）、ローテーション結果と固定値との排他的論理和演算（ＥＸＯＲ）を行う。図１５（ｆ）は固定値として０を選択した場合の排他的論理和演算結果を示している。
【００８３】
ＭＰＵ２２はこうして求めたシード値を対応するＭ系列回路のシフトレジスタに転送する（ステップＳ１０）。上述した説明では、図１５（ｆ）のシード値は、第８ページのビット線ＢＬ４用のシード値であり、ＭＰＵ２２は、ビット線ＢＬ４に接続されたＭ系列回路ＭＡの１３ビットのシフトレジスタに、生成したシード値を転送する。
【００８４】
ＭＰＵ２２は、ステップＳ１１，Ｓ１２において、１カラム中の同一種類のＭ系列回路用の全てのシード値を求めたか否か、１カラム中の全てのビット線用のシード値を求めたか否かを判定し、１カラム分の全てのシード値を求めた場合には処理を終了する。
【００８５】
ランダマイズ回路２６には、クロック毎に、ホストインタフェースモジュール２１を介して１カラム分の書き込みデータが与えられる。ＭＰＵ２２は１カラム分のシード値をランダマイズ回路２６のＭ系列回路ＭＡ〜ＭＤに与える。これにより、１カラム分のＭ系列回路ＭＡ〜ＭＤは疑似乱数を発生し、排他的論理和回路３３は入力データと乱数との排他的論理和演算によってランダマイズした書き込みデータを得る。この書き込みデータが１カラム分ずつ、ビット線に供給されて書き込みが行われる。なお、１６個のＭ系列回路ＭＡ〜ＭＤには、ＭＰＵ２２からページが切換る毎に、算出されたシード値が与えられる。
【００８６】
（データ読み出し）
ＮＡＮＤ型フラッシュメモリから１１のデータの読み出し時においても、ＭＰＵ２２は、ソフトウェア処理によってシード値を算出する。データの読み出し時には、ＭＰＵ２２は、ステップＳ２１において読み出し開始フレームを取得する。次いで、ＭＰＵ２２は、読み出し開始フレームがページ先頭のフレームであるか否かを判定する。ＭＰＵ２２は、ページ先頭のフレームの場合には、ステップＳ２６において、通常のシード値設定処理を行う。即ち、図１４と同様のフローによって、シード値が設定される。
【００８７】
ランダマイズ回路２６は、クロック毎に、１カラム分のビット線ＢＬｃ０〜ＢＬｃ１５からの読み出しデータが入力される。ＭＰＵ２２は書き込み時と同じシード値を発生して、１カラム分ずつランダマイズ回路２６のＭ系列回路ＭＡ〜ＭＤに与える。これにより、１カラム分のＭ系列回路ＭＡ〜ＭＤは疑似乱数を発生し、排他的論理和回路３３は読み出しデータと疑似乱数との排他的論理和演算によってランダマイズを解除した読み出しデータを得る。１６個のＭ系列回路ＭＡ〜ＭＤには、読み出すページが切換る毎に、ＭＰＵ２２から算出されたシード値が与えられる。
【００８８】
ここで、読み出し開始フレームがページ先頭のフレームでないものとする。この場合には、ＭＰＵ２２は、図１４と同様の手法により、ページ先頭の１カラム分に対応するシード値の演算を行う（ステップＳ２３）。次に、ＭＰＵ２２は、演算結果のシード値を用いた１６種類のＭ系列演算を行う。ＭＰＵ２２は、読み出し開始フレームのアドレスに応じたカラム数（クロック数）における１６種類のＭ系列を発生する。
【００８９】
次に、ＭＰＵ２２は発生した演算結果をシード値して１カラム分のＭ系列回路ＭＡ〜ＭＤに供給する。Ｍ系列回路ＭＡ〜ＭＤは、供給されたシード値に基づいて疑似乱数を発生させることで、書き込み時と同一の疑似乱数を発生させることができる。なお、１６個のＭ系列回路ＭＡ〜ＭＤには、読み出すページが切換る毎に、ＭＰＵ２２から算出されたシード値が与えられる。
【００９０】
図１７はこの状態を示しており、例えば、ページ０のＤａｔａ（Ｆ１）が格納されている２つ目のフレームから読み出しを行う場合でも、本実施の形態においては、図１７の実線矢印に示すように、Ｄａｔａ（Ｆ１）が格納されている２つ目フレームから疑似乱数を順次発生させて、ランダマイズ解除処理を行うことができる。
【００９１】
このように本実施の形態においては、ページの途中のフレームから読み出しを行う場合でも、Ｍ系列回路を空回しすることなく、読み出し開始から比較的短時間で疑似乱数を発生して、読み出したフレームのランダマイズ解除処理が可能である。また、本実施の形態においては、疑似乱数の発生に、シード値発生回路が不要である。１カラム分のシード値発生回路を不要にすることができるので、回路面積を縮小することが可能である。
【００９２】
なお、Ｍ系列回路をガロア型で構成したことから、Ｍ系列演算においては、他のビットの演算結果を蓄積して排他的論理和演算をする必要はなく、排他的論理和演算を全てのビットの演算と同時に行うことができるので、ソフトウェアによる処理を高速化することができる。
【００９３】
なお、本実施の形態においては、ページ途中のフレームからの読み出しのために、ページ途中のフレームに対応するシード値を算出する例を説明したが、このシード値をシードテーブルに保持しておき、読み出してＭ系列回路に与えるようにしてもよい。
【００９４】
（第２の実施の形態）
図１８は本発明の第２の実施の形態を示すブロック図である。図１８において図２及び図６と同一の構成には同一符号を付して説明を省略する。本実施の形態はＭＰＵ２２だけでなくシード値発生回路４０を用いてシード値を発生するものであり、シード値発生回路４０及びセレクタ４５を付加した点が第１の実施の形態と異なる。
【００９５】
シード値発生回路４０は、図６と同様の構成であり、セレクタ４１はページアドレス［２：０］であるセレクト信号seed_indexによって入力端のIndex0〜Index7を選択する。ローテータ４２はページアドレス［６：３］である制御信号seed_rotateによって、セレクタ４１の出力をローテーションする。セレクタ４４は、全てのビットが０又は１の固定値を、ページアドレス［７］のセレクト信号clm_base_selによって選択する。排他的論理和回路４３は、セレクタ４４の出力とローテータ４２の出力との排他的論理和演算を行って、演算結果をシード値発生回路４０の出力としてセレクタ４５に出力する。
【００９６】
セレクタ４５には、ＭＰＵ２２からのシード値も与えられる。セレクタ４５はＭＰＵ２２からの制御信号によって制御されて、ＭＰＵ２２からのシード値又はシード値発生回路４０からのシード値を選択して出力する。図１８のシード値発生回路４０は、１カラム分のＭ系列回路の夫々に対応して設けられる。
【００９７】
次に、このように構成された実施の形態の動作について図１９を参照して説明する。図１９はＭＰＵ２２における読み出し時におけるシード値設定処理を示すフローチャートである。図１９において図１４及び図１６のフローと同一の手順には同一符号を付して説明を省略する。図１９のフローは、図１４のフローからステップＳ６〜Ｓ９の手順を省略すると共に、ステップＳ１３の手順及び図１６のステップＳ２４，Ｓ２５の手順を追加した点が図１４及び図１６のフローと異なる。
【００９８】
本実施の形態においては、書き込み時においては、ＭＰＵ２２はセレクタ４５を制御して、シード値発生回路４０の出力を選択させる。即ち、書き込み時においては、ＭＰＵ２２はシード値を生成せず、シード値発生回路４０からのシード値がＭ系列回路ＭＡ〜ＭＤに供給される。
【００９９】
本実施の形態においては、読み出し時において、読み出し開始フレームがページ先頭である場合には、ＭＰＵ２２はセレクタ４５を制御してシード値発生回路４０からのシード値を選択させて、Ｍ系列回路ＭＡ〜ＭＤに与える。
【０１００】
本実施の形態においては、読み出し時において、読み出し開始フレームがページ先頭でない場合には、図１９のフローに従ってシード値を発生する。図１９のフローは、図１４のフローに対してページ毎のシード値の生成処理を省略したものであり、１カラム分のシード値を生成することができる。
【０１０１】
ＭＰＵ２２は１カラム分のシード値を生成すると、ステップＳ２４において、算出したシード値を用いて読み出し開始フレーム対応するクロック数におけるＭ系列演算を行い、ステップＳ２５においてＭ系列回路に演算結果のシード値を設定する。ＭＰＵ２２はセレクタ４５を制御してシード値発生回路４０からのシード値を選択させて、Ｍ系列回路ＭＡ〜ＭＤに与える。これにより、Ｍ系列回路は読み出し開始フレーム以降のフレームにおける疑似乱数を発生する。
【０１０２】
ＭＰＵ２２は、読み出し開始フレームに対応するシード値を出力すると、セレクタ４５に制御信号を出力して、セレクタ４５に、次のフレーム以降シード値発生回路４０からのシード値を選択してＭ系列回路ＭＡ〜ＭＤに出力させる。
【０１０３】
こうして、次のフレーム以降においては、ＭＰＵ２２によるシード値算出演算を行うことなく、シード値発生回路４０から順次シード値がＭ系列回路ＭＡ〜ＭＤに供給される。全てのページにおいて、ＭＰＵ２２によってシード値を発生させる場合には、ページ毎に、シード値を算出するための演算処理が必要である。これに対し、本実施の形態においては、最初のページのみＭＰＵ２２によってシード値を発生させており、次のページからはシード値発生回路４０によってシード値を発生させているので、ページ毎のシード値演算処理を省略することができ、読み出し速度を第１の実施の形態よりも高速にすることができる。
【０１０４】
このように本実施の形態においては、ＭＰＵによるソフトウェア処理によってシード値を求めると共に、シード値発生回路によるハードウェア処理によってもシード値を求めており、ページ途中からの読み出しを短時間に行うと共に、ページ毎のシード値演算処理を省略して読み出しの高速化が可能である。
【０１０５】
本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【０１０６】
１…メモリカード、１１…ＮＡＮＤ型フラッシュメモリ、１２…カードコントローラ、２２…ＭＰＵ、２６…ランダマイズ回路、２７…シードテーブル。
【図１】
2012216154.tif 000003
【図２】
2012216154.tif 000004
【図３】
2012216154.tif 000005
【図４】
2012216154.tif 000006
【図５】
2012216154.tif 000007
【図６】
2012216154.tif 000008
【図７】
2012216154.tif 000009
【図８】
2012216154.tif 000010
【図９】
2012216154.tif 000011
【図１０】
2012216154.tif 000012
【図１１】
2012216154.tif 000013
【図１２】
2012216154.tif 000014
【図１３】
2012216154.tif 000015
【図１４】
2012216154.tif 000016
【図１５】
2012216154.tif 000017
【図１６】
2012216154.tif 000018
【図１７】
2012216154.tif 000019
【図１８】
2012216154.tif 000020
【図１９】
2012216154.tif 000021