(57)【要約】【課題】ランダム性能が高いランダムデータ生成回路を提供する。【解決手段】実施形態によれば、ランダムデータ生成回路は、データ生成部と、データ保持部と、を備える。ランダムデータ生成回路は、第１から第ｎ（ｎは２以上の整数）のＭ系列データの組をクロック毎に生成する。前記データ生成部は、供給されたシードデータに基づいて、第ｉ（ｉは１からｎの整数）のＭ系列データはＭ系列生成回路で前記シードデータをｉ段シフトしたデータと等しい前記第１から第ｎのＭ系列データを生成する。前記データ保持部は、前記第ｎのＭ系列データを前記クロックに応じて保持して、保持されたデータを前記シードデータとして前記データ生成部に供給する。【選択図】図１
2013021461.tif 000002
【特許請求の範囲】
【請求項１】
第１から第ｎ（ｎは２以上の整数）のＭ系列データの組をクロック毎に生成するランダムデータ生成回路であって、
供給されたシードデータに基づいて、第ｉ（ｉは１からｎの整数）のＭ系列データはＭ系列生成回路で前記シードデータをｉ段シフトしたデータと等しい前記第１から第ｎのＭ系列データを生成する、データ生成部と、
前記第ｎのＭ系列データを前記クロックに応じて保持して、保持されたデータを前記シードデータとして前記データ生成部に供給する、データ保持部と、を備える
ことを特徴とするランダムデータ生成回路。
【請求項２】
前記データ生成部は、第１から第ｎのデータ処理回路を有し、
前記各データ処理回路は、フリップフロップと論理回路で構成されたＭ系列生成回路からフリップフロップが除かれた構成を有すると共に、複数のデータ入力端子及び複数のデータ出力端子を有し、前記Ｍ系列生成回路において各フリップフロップの出力端子に接続されていた信号線が、対応するデータ入力端子に接続され、前記Ｍ系列生成回路において各フリップフロップの入力端子に接続されていた信号線が、対応するデータ出力端子に接続され、
前記第１のデータ処理回路の前記複数のデータ入力端子には、前記シードデータが並列に供給され、
第ｋ（ｋは１からｎ−１までの整数）のデータ処理回路の前記複数のデータ出力端子は、第ｋのＭ系列データを並列に出力すると共に、それぞれ第ｋ＋１のデータ処理回路の対応するデータ入力端子に接続され、
前記第ｎのデータ処理回路の前記複数のデータ出力端子は、前記第ｎのＭ系列データを並列に出力すると共に、前記データ保持部に接続されている
ことを特徴とする請求項１のランダムデータ生成回路。
【請求項３】
前記第ｎのＭ系列データと、第ｍ（ｍは１からｎ−１までの整数）のＭ系列データと、の何れかを選択して、選択されたデータを前記データ保持部に供給する、第１の選択回路を更に備え、
前記データ保持部は、前記第１の選択回路から供給されたデータを前記クロックに応じて保持して、保持されたデータを前記シードデータとして前記データ生成部に供給する
ことを特徴とする請求項１又は請求項２のランダムデータ生成回路。
【請求項４】
初期値データを出力する初期値出力回路と、
前記初期値データと、前記データ保持部に保持されたデータと、の何れかを選択して、前記シードデータとして前記データ生成部に供給する、第２の選択回路と、を更に備える
ことを特徴とする請求項１から請求項３のランダムデータ生成回路。
【請求項５】
ＮＡＮＤ型フラッシュメモリと、
入力された書き込みデータをスクランブルして、スクランブルされたデータを前記フラッシュメモリに書き込むと共に、前記フラッシュメモリから読み出された読み出しデータをスクランブル解除する、スクランブル回路と、を備え、
前記スクランブル回路は、
請求項１から請求項４の何れかのランダムデータ生成回路と、
前記各Ｍ系列データの所定のビット目の値からなるランダムデータと、前記書き込みデータと、を演算して、前記書き込みデータをスクランブルする、第１の演算回路と、
前記ランダムデータと、前記読み出しデータと、を演算して、前記読み出しデータをスクランブル解除する、第２の演算回路と、を有する
ことを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ランダムデータ生成回路及びこれを備えたメモリシステムに関する。
【背景技術】
【０００２】
近年、ＮＡＮＤ型フラッシュメモリの大容量化が進展している。一般的に、フラッシュメモリに書き込まれる書き込みデータは、ランダムなデータではなく、“０”または“１”に発生頻度が偏ったデータである。このようなデータが大容量のフラッシュメモリに書き込まれると、データが破壊されて動作信頼性が悪化する恐れがある。そのため、書き込み時にデータをランダムな値に分布させて書き込む必要がある。
【０００３】
そこで、Ｍ系列生成回路を有するランダムデータ生成回路によりランダムデータを発生させて、ランダムデータと書き込みデータを演算してスクランブルしたデータを書き込んでいる。読み出し時には、書き込み時に使用されたランダムデータと、フラッシュメモリから読み出された読み出しデータとを演算して、読み出しデータをスクランブル解除している。
【０００４】
フラッシュメモリの動作信頼性を向上するため、ランダムデータ生成回路のランダム性能をより高くすることが求められている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１５７８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、ランダム性能が高いランダムデータ生成回路及びこれを備えたメモリシステムを提供することにある。
【課題を解決するための手段】
【０００７】
実施形態によれば、ランダムデータ生成回路は、データ生成部と、データ保持部と、を備える。ランダムデータ生成回路は、第１から第ｎ（ｎは２以上の整数）のＭ系列データの組をクロック毎に生成する。前記データ生成部は、供給されたシードデータに基づいて、第ｉ（ｉは１からｎの整数）のＭ系列データはＭ系列生成回路で前記シードデータをｉ段シフトしたデータと等しい前記第１から第ｎのＭ系列データを生成する。前記データ保持部は、前記第ｎのＭ系列データを前記クロックに応じて保持して、保持されたデータを前記シードデータとして前記データ生成部に供給する。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態に係るランダムデータ生成回路の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るデータ処理回路の構成を説明するブロック図である。
【図３】本発明の第１の実施形態に係るメモリシステムの構成を示すブロック図である。
【図４】本発明の第１の実施形態に係るランダムデータ生成回路のＭ系列データのデータパターンの分布を説明する図である。
【図５】本発明の第１の実施形態の変形例に係るデータ処理回路の構成を説明するブロック図である。
【図６】１３ビットＭ系列生成回路の構成を示すブロック図である。
【図７】比較例のランダムデータ生成回路の構成を示すブロック図である。
【図８】各Ｍ系列生成回路の構成を示すブロック図である。
【図９】比較例のランダムデータ生成回路の動作を説明する図である。
【発明を実施するための形態】
【０００９】
本発明の実施形態の説明に先立ち、発明者らが本発明をなすに至った経緯について説明する。
【００１０】
まず、発明者らが知得する比較例のランダムデータ生成回路について説明する。ここでは、１６ビットのデータを同時に書き込み又は読み出しできる１６ビットのデータ幅のＮＡＮＤ型フラッシュメモリに適用可能なランダムデータ生成回路について説明する。このランダムデータ生成回路は、Ｍ系列生成回路によってランダムデータを生成している。
【００１１】
（１）Ｍ系列生成回路
Ｍ系列生成回路とは、シフトレジスタと排他的論理和回路を使用することで擬似的にランダムなデータを生成できる回路である。図６に、ガロア型のＭ系列生成回路の一例として「１３ビットＭ系列生成回路」を示す。この１３ビットＭ系列生成回路は、シフトレジスタを構成する１３個のレジスタ（フリップフロップ）Ｒ１〜Ｒ１３と、３個の排他的論理和回路ＥＯ１〜ＥＯ３と、を備える。
【００１２】
ランダムデータの生成は、シード初期値をレジスタＲ１〜Ｒ１３にセットし、その後、クロック毎に各レジスタ値を１ビット右へシフトさせ、レジスタＲ１３のレジスタ値を１ビットずつ出力することで行われる。
【００１３】
１３ビットＭ系列生成回路は、互いに異なる「２の１３乗−１」種類のデータパターンのＭ系列データを生成する。データパターンとは、レジスタＲ１〜Ｒ１３に保持されているデータ（レジスタ値）のパターンである。つまり、１３ビットＭ系列生成回路は、第１のデータパターンから第「２の１３乗−１」のデータパターンまでを順番に生成する。従って、１３ビットＭ系列生成回路は、「２の１３乗−１」の周期を有する。
【００１４】
（２）比較例のランダムデータ生成回路の構成
図７に示すように、比較例のランダムデータ生成回路は、１６個のＭ系列生成回路を備えている。そして、フラッシュメモリの１６ビット幅のビット線ＢＬ０〜ＢＬ１５（物理的なビットの並び）に対して、それぞれ次のようにＭ系列生成回路が割り当てられている。
ＢＬ０、ＢＬ４、ＢＬ８、ＢＬ１２：  １３ビットＭ系列生成回路
ＢＬ１、ＢＬ５、ＢＬ９、ＢＬ１３：  １７ビットＭ系列生成回路
ＢＬ２、ＢＬ６、ＢＬ１０、ＢＬ１４：  １９ビットＭ系列生成回路
ＢＬ３、ＢＬ７、ＢＬ１１、ＢＬ１５：  ２３ビットＭ系列生成回路
このように、比較例のランダムデータ生成回路は、周期の異なる４種類のＭ系列生成回路を使用している。１７ビットＭ系列生成回路は、図８（ａ）に示す構成を有し、１９ビットＭ系列生成回路は、図８（ｂ）に示す構成を有し、２３ビットＭ系列生成回路は、図８（ｃ）に示す構成を有している。但し、一般に、あるビット長のＭ系列生成回路は、複数の回路構成で実現可能である。従って、図６及び図８に示した回路構成は、一例である。
【００１５】
（３）比較例のランダムデータ生成回路におけるランダムデータ生成フロー
図９は、比較例のランダムデータ生成回路の動作を説明する図である。
【００１６】
ランダムデータの生成は、次の５つの手順で行われる。下記に示す手順はビット線ＢＬ０についての説明であり、同様の手順がビット線ＢＬ１〜ＢＬ１５に対しても行われる。
【００１７】
（手順１）
前述したように、ビット線アドレス（BitLineアドレス）に応じて、使用するＭ系列生成回路が決まる。同様に、選択回路４０２により、ビット線アドレスに応じて各Ｍ系列生成回路の種類ごとにテーブル４０１から基本シードテーブルを選択する。ここでは、１３ビットＭ系列生成回路用の基本シードテーブルが選択される。
（手順２）
選択回路４０３により、seed_index信号の値（ここでは、ページアドレス［２：０］）に応じて、手順１で選択された基本シードテーブルから基本シード値０〜７の１つを選択する。ここでは、基本シード値０（０ｘ０５６ｃ）が選択されたとする。
（手順３）
ローテーション回路４０４により、手順２で選択された基本シード値を、seed_rotate信号の値（ここでは、ページアドレス［６：３］）に応じてローテーションする。ここでは、１ビットローテーションしたとする。
（手順４）
使用するフラッシュメモリのサイズによっては、手順３で生成したローテーション後のシード値ではランダム性能が全体として下がってしまう。そのため、選択回路４０６により、clm_base_sel信号の値に応じて、あるページ単位ごとに固有値を選択し、選択された固有値とローテーション後のシード値との排他的論理和を、排他的論理和回路４０５により演算する。ここでは、選択された固有値は０であるとする。
（手順５）
手順４で生成された新シード値を、１３ビットＭ系列生成回路４０７にシード初期値としてセットし、データ出力の度に１ビット右へシフトさせて、ランダムデータを生成する。
【００１８】
このようにして、各Ｍ系列生成回路はクロック毎に１ビットのランダムデータを生成する。従って、クロック毎に１６ビットのランダムデータが得られる。
【００１９】
フラッシュメモリへの書き込み時には、スクランブル回路により、１６ビットのランダムデータと１６ビットの書き込みデータとのビット毎の排他的論理和を演算して、書き込みデータをスクランブルする。スクランブルされたデータは、ページアドレスで指定されたページのビット線ＢＬ０〜ＢＬ１５に対応するメモリセルに書き込まれる。
【００２０】
同一ページの次フレームに書き込みを行う次の書き込みタイミングにおいて、１６個のＭ系列生成回路は、ビット線ＢＬ０〜ＢＬ１５に隣接する１６本のビット線ＢＬ１６〜ＢＬ３１に割り当てられる。そして、次のクロックにより、各Ｍ系列生成回路は１ビットのランダムデータを生成して、１６ビットのランダムデータが得られる。このランダムデータと書き込みデータとのビット毎の排他的論理和を演算して、書き込みデータをスクランブルする。スクランブルされたデータは、同一ページのビット線ＢＬ１６〜ＢＬ３１に対応するメモリセルに書き込まれる。
【００２１】
このような動作を繰り返して、データの書き込みを行う。
【００２２】
このように、ページアドレスに応じてシード初期値が決定されるため、読み出し時にも、書き込み時に使用されたランダムデータを得ることができる。従って、任意のページにおいて、書き込み時に使用されたランダムデータと、フラッシュメモリから読み出された読み出しデータとを演算して、読み出しデータをスクランブル解除できる。
【００２３】
（４）比較例のランダムデータ生成回路の問題点
この比較例のランダムデータ生成回路について、発明者らは、以下の問題点を独自に知得した。
【００２４】
問題点１：
比較例のランダムデータ生成回路では、Ｍ系列生成回路を各ビット線に割り当てるため、データ幅分だけＭ系列生成回路を必要とし、回路規模が大きくなってしまうという問題がある。これは、特に、フリップフロップの数が多いことが原因である。
問題点２：
Ｍ系列生成回路は、採用する式（ビット長）によって周期が決まる。１３ビットＭ系列生成回路ならば「２の１３乗−１」の周期を持っており、ＮビットＭ系列生成回路ならば「２のＮ乗−１」の周期を持っている。比較例の回路は、ビット線によっては周期の低いＭ系列生成回路を使用している。そのため、このようなビット線に関しては、周期の長いＭ系列生成回路を使用しているビット線に比べてランダム性能が劣っている。
問題点３：
比較例の回路では、回路規模を小さくするためにテーブル４０１に含まれるシード値の数を少なくし、ローテーションなどによりシード初期値の重複を抑えている。しかし、設定されたシード初期値によっては、Ｍ系列生成回路を動作させている間のランダムデータが重複する可能性がある。
【００２５】
例えば、シード初期値が次のように設定された場合を考える。即ち、第１ページの第１フレームにおいて、ビット線ＢＬ０の１３ビットＭ系列生成回路に第Ａのデータパターンがシード初期値として設定され、ビット線ＢＬ４の１３ビットＭ系列生成回路に第（Ａ＋８）のデータパターンがシード初期値として設定されたとする。また、１ページは８フレームからなると仮定する。
【００２６】
この例の場合、第２ページの第１フレームにおいて、ビット線ＢＬ０の１３ビットＭ系列生成回路に第（Ａ＋８）のデータパターンが現れる。即ち、近接する第１ページの第１フレームのビット線ＢＬ４と、第２ページの第１フレームのビット線ＢＬ０とに関して、同一の第（Ａ＋８）のデータパターンが重複して現れることになり、ランダム性能が低下する。
【００２７】
発明者らは、上述した独自の知得に基づいて本発明をなすに至った。
【００２８】
以下に、図面を参照して本発明の実施形態について説明する。これらの実施形態は、本発明を限定するものではない。
【００２９】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るランダムデータ生成回路１０の構成を示すブロック図である。
【００３０】
図１に示すように、ランダムデータ生成回路１０は、初期値出力回路１１と、選択回路（第２の選択回路）１２と、データ生成部１３と、選択回路１４（第１の選択回路）と、データ保持部１５と、を備える。
【００３１】
このランダムデータ生成回路１０は、第１から第ｎ（ｎは２以上の整数）のＭ系列データＤ０［１２：０］〜Ｄｎ−１［１２：０］の組を、クロック信号ＣＬＫのクロック毎に順次生成する。本実施形態では、ｎは３２であるとして説明する。また、説明を明確化するために、各Ｍ系列データは１３ビットＭ系列データであるものとして説明するが、本来はＮＡＮＤ型フラッシュメモリの記憶容量と同程度の周期をもったＭ系列データを使用するのが望ましい。このことについては後述する。
【００３２】
また、ランダムデータ生成回路１０は、生成されたＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］に基づいて、１サイクル（１クロック）に３２ビット幅のランダムデータＤｏ［３１：０］又は１６ビット幅のランダムデータＤｏ［１５：０］を出力する。
【００３３】
初期値出力回路１１は、１３ビットの初期値データＤｉ［１２：０］を出力する。初期値出力回路１１は、シード初期値テーブル１１−１と、選択回路１１−２とを有する。シード初期値テーブル１１−１は、シードデータの初期設定が必要な数のシード初期値Ｓｅｅｄ＃０〜Ｓｅｅｄ＃１０３１を有する。各シード初期値Ｓｅｅｄ＃０〜Ｓｅｅｄ＃１０３１は、１３ビットのデータである。選択回路１１−２は、SeedSelect信号によって、シード初期値Ｓｅｅｄ＃０〜Ｓｅｅｄ＃１０３１の中の何れかを選択して、初期値データＤｉ［１２：０］として出力する。
【００３４】
選択回路１２は、シードデータ選択信号ＳＳＥＬに応じて、初期値データＤｉ［１２：０］と、後述するデータ保持部１５に保持されたデータＤｆ［１２：０］と、の何れかを選択して、選択されたデータを１３ビットのシードデータＤｓ［１２：０］としてデータ生成部１３に供給する。
【００３５】
データ生成部１３は、供給されたシードデータＤｓ［１２：０］に基づいて、第１から第３２のＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］を生成する。これら第１から第３２のＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］のうち、第ｉ（ｉは１から３２の整数）のＭ系列データは、図６の１３ビットＭ系列生成回路でシードデータＤｓ［１２：０］をｉ段シフトしたデータと等しい。
【００３６】
即ち、第１のＭ系列データＤ０［１２：０］は、図６の１３ビットＭ系列生成回路でシードデータＤｓ［１２：０］を１段（１クロック）シフトしたデータと等しい。以降同様に、第３２のＭ系列データＤ３１［１２：０］は、図６の１３ビットＭ系列生成回路でシードデータＤｓ［１２：０］を３１段（３１クロック）シフトしたデータと等しい。但し、後述するように、本実施形態では、データ生成部５０２は、図６の構成の１３ビットＭ系列生成回路を複数使用することなく、第１から第３２のＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］を生成するように構成されている。
【００３７】
データ生成部１３は、各Ｍ系列データＤ０［１２：０］〜Ｄ３１［１２：０］の所定のビット目の値からなる３２ビット幅のランダムデータＤｏ［３１：０］、又は、各Ｍ系列データＤ０［１２：０］〜Ｄ１５［１２：０］の所定のビット目の値からなる１６ビット幅のランダムデータＤｏ［１５：０］を出力する。本実施形態では、所定のビット目は、上位ビットから１ビット目である。つまり、データ生成部１３は、Ｍ系列データＤ０［１２］の値（つまり、シードデータＤｓ［０］の値）を、ランダムデータＤｏ［０］として出力する。以降同様に、データ生成部１３は、Ｍ系列データＤ３１［１２］の値（つまり、Ｍ系列データＤ３０［０］の値）を、ランダムデータＤｏ［３１］として出力する。
【００３８】
データ生成部１３は、第１から第３２のデータ処理回路１３−１〜１３−３２を有する。データ処理回路について、図２を参照して詳細に説明する。
【００３９】
図２は、本発明の第１の実施形態に係るデータ処理回路の構成を説明するブロック図である。図２（ａ）は、フリップフロップと論理回路で構成された１３ビットＭ系列生成回路を示し、図２（ｂ）は、データ処理回路を示す。
【００４０】
各データ処理回路１３−１〜１３−３２は、１３個のフリップフロップＲ１〜Ｒ１３と３個の排他的論理和回路ＥＯ１〜ＥＯ３で構成された図２（ａ）の１３ビットＭ系列生成回路から、フリップフロップＲ１〜Ｒ１３が除かれた構成を有する。つまり、各データ処理回路１３−１〜１３−３２は、１３ビットＭ系列生成回路の論理部分から構成されている。
【００４１】
各データ処理回路１３−１〜１３−３２は、１３個のデータ入力端子Ｔｉ０〜Ｔｉ１２及び１３個のデータ出力端子Ｔｏ０〜Ｔｏ１２を有する。
【００４２】
各データ処理回路１３−１〜１３−３２に関して、図２（ａ）の１３ビットＭ系列生成回路において各フリップフロップＲ１〜Ｒ１３の出力端子に接続されていた信号線が、対応するデータ入力端子Ｔｉ０〜Ｔｉ１２に接続されている。また、図２（ａ）の１３ビットＭ系列生成回路において各フリップフロップＲ１〜Ｒ１３の入力端子に接続されていた信号線が、対応するデータ出力端子Ｔｏ０〜Ｔｏ１２に接続されている。
【００４３】
つまり、フリップフロップＲ１の入力端子に接続されていた信号線は、データ出力端子Ｔｏ１２に接続され、その出力端子に接続されていた信号線は、データ入力端子Ｔｉ１２に接続されている。
【００４４】
以降同様に、フリップフロップＲ１３の入力端子に接続されていた信号線は、データ出力端子Ｔｏ０に接続され、その出力端子に接続されていた信号線は、データ入力端子Ｔｉ０に接続されている。
【００４５】
従って、データ入力端子Ｔｉ０は、ランダムデータＤｏを出力すると共に、排他的論理和回路ＥＯ１，ＥＯ２，ＥＯ３の各々の第１入力端子と、データ出力端子Ｔｏ１２とに接続されている。
【００４６】
データ入力端子Ｔｉ１は、データ出力端子Ｔｏ０に接続されている。データ入力端子Ｔｉ２は、データ出力端子Ｔｏ１に接続されている。データ入力端子Ｔｉ３は、データ出力端子Ｔｏ２に接続されている。データ入力端子Ｔｉ４は、データ出力端子Ｔｏ３に接続されている。データ入力端子Ｔｉ５は、データ出力端子Ｔｏ４に接続されている。データ入力端子Ｔｉ６は、データ出力端子Ｔｏ５に接続されている。データ入力端子Ｔｉ７は、データ出力端子Ｔｏ６に接続されている。データ入力端子Ｔｉ８は、データ出力端子Ｔｏ７に接続されている。
【００４７】
データ入力端子Ｔｉ９は、排他的論理和回路ＥＯ３の第２入力端子に接続されている。排他的論理和回路ＥＯ３の出力端子は、データ出力端子Ｔｏ８に接続されている。
【００４８】
データ入力端子Ｔｉ１０は、排他的論理和回路ＥＯ２の第２入力端子に接続されている。排他的論理和回路ＥＯ２の出力端子は、データ出力端子Ｔｏ９に接続されている。
【００４９】
データ入力端子Ｔｉ１１は、データ出力端子Ｔｏ１０に接続されている。
【００５０】
データ入力端子Ｔｉ１２は、排他的論理和回路ＥＯ１の第２入力端子に接続されている。排他的論理和回路ＥＯ１の出力端子は、データ出力端子Ｔｏ１１に接続されている。
【００５１】
このような構成により、各データ処理回路１３−１〜１３−３２は、データ入力端子Ｔｉ０〜Ｔｉ１２に入力されたデータを処理して、処理されたデータをデータ出力端子Ｔｏ０〜Ｔｏ１２から出力する。各データ処理回路１３−１〜１３−３２における上記処理は、図２（ａ）の１３ビットＭ系列生成回路でデータを１段（１クロック）シフトする処理と等価である。
【００５２】
図１に示すように、第１のデータ処理回路１３−１の１３個のデータ入力端子Ｔｉ０〜Ｔｉ１２には、シードデータＤｓ［１２：０］が並列に供給される。
【００５３】
第ｋ（ｋは１から３１までの整数）のデータ処理回路の１３個のデータ出力端子Ｔｏ０〜Ｔｏ１２は、第ｋのＭ系列データＤｋ−１［１２：０］を並列に出力すると共に、それぞれ第ｋ＋１のデータ処理回路の対応するデータ入力端子Ｔｉ０〜Ｔｉ１２に接続されている。
【００５４】
第１６のデータ処理回路１３−１６の１３個のデータ出力端子Ｔｏ０〜Ｔｏ１２は、選択回路１４を介してデータ保持部１５にも接続されている。
【００５５】
第３２のデータ処理回路１３−３２の１３個のデータ出力端子Ｔｏ０〜Ｔｏ１２は、第３２のＭ系列データＤ３１［１２：０］を並列に出力すると共に、選択回路１４を介してデータ保持部１５に接続されている。
【００５６】
このように、データ生成部１３は、１３ビットＭ系列生成回路の論理部分を並列に接続した構成を有している。
【００５７】
選択回路１４は、データ幅選択信号ＤＳＥＬに応じて、第３２のＭ系列データＤ３１［１２：０］と、第１６のＭ系列データＤ１５［１２：０］と、の何れかを選択して、選択されたデータをデータ保持部１５に供給する。つまり、選択回路１４は、第ｎのＭ系列データと、第ｍ（ｍは１からｎ−１までの整数）のＭ系列データと、の何れかを選択するように構成されている。
【００５８】
データ保持部１５は、選択回路１４から供給されたデータをクロック信号ＣＬＫのクロックに応じて保持して、保持されたデータＤｆ［１２：０］を、選択回路１２を介して、シードデータＤｓ［１２：０］としてデータ生成部１３に供給する。本実施形態では、データ保持部１５は、１３個のフリップフロップで構成されている。
【００５９】
つまり、データ保持部１５は、第１６のＭ系列データＤ１６［１２：０］と、第３２のＭ系列データＤ３１［１２：０］との何れかを、クロックＣＬＫに応じて保持して、保持されたデータＤｆ［１２：０］を、選択回路１２を介して、シードデータＤｓ［１２：０］としてデータ生成部１３に供給する。
【００６０】
次に、ランダムデータ生成回路１０の動作を説明する。ランダムデータＤｏの生成は次の３つの手順で行われる。
【００６１】
（手順１）
SeedSelect信号によって、シード初期値テーブル１１−１のシード初期値Ｓｅｅｄ＃０〜Ｓｅｅｄ＃１０３１から、１つのシード初期値を選択する。SeedSelect信号は、シード初期値を選択するための信号である。フラッシュメモリのページ単位でシード初期値をセットするのであれば、ページアドレスをセットする。この場合、例えば、SeedSelect [10:0] ＝｛ページアドレス［８：０］, フレームアドレス［３：２］｝とすることができる。
（手順２）
選択回路１２により、手順１で選択されたシード初期値を、シードデータＤｓ［１２：０］として、データ生成部１３に供給する。これにより、データ生成部１３によって、１３ビットＭ系列生成回路でシードデータＤｓ［１２：０］を複数回シフトした動作と等価な動作が再現され、Ｍ系列データＤ０［１２：０］〜Ｄ３１［１２：０］及び３２ビット幅のランダムデータＤｏ［３１：０］が生成される。
１クロックで生成されるランダムデータのビット幅は、データ幅選択信号ＤＳＥＬによって選択可能である。前述のように、本実施形態では、１６ビット幅と３２ビット幅の選択が可能である。ここでは、３２ビット幅を選択しているとして説明する。即ち、選択回路１４により、第３２のＭ系列データＤ３１［１２：０］が選択されて、データ保持部１５に供給される。
（手順３）
クロック信号ＣＬＫの次のクロックに応じて、データ保持部１５により、第３２のＭ系列データＤ３１［１２：０］を保持する。選択回路１２により、データ保持部１５に保持されたデータＤｆ［１２：０］を選択し、選択されたデータをデータ生成部１３に供給して、新たなランダムデータＤｏ［３１：０］を生成する。SeedSelect信号が変化するまでは、クロック信号ＣＬＫのクロックに応じて手順３を繰り返し、ランダマイズ処理を行う。
（手順４）
SeedSelect信号が変化した場合、上記手順１〜３を同様に繰り返す。
【００６２】
このようにして、３２ビット幅の場合、Ｍ系列データＤ０［１２：０］〜Ｄ３１［１２：０］として、「２の１３乗−１」種類のデータパターンを、クロックに応じて３２種類ずつ順番に生成できる。これにより、クロックに応じて３２ビット幅のランダムデータＤｏ［３１：０］が出力される。
【００６３】
また、１６ビット幅の場合、Ｍ系列データＤ０［１２：０］〜Ｄ１５［１２：０］として、「２の１３乗−１」種類のデータパターンを、クロックに応じて１６種類ずつ順番に生成できる。これにより、クロックに応じて１６ビット幅のランダムデータＤｏ［１５：０］が出力される。
【００６４】
次に、上述のランダムデータ生成回路１０を備えたメモリシステムについて説明する。
【００６５】
図３は、本発明の第１の実施形態に係るメモリシステムの構成を示すブロック図である。
【００６６】
このメモリシステムは、ＮＡＮＤ型フラッシュメモリ１００と、スクランブル回路１１０と、を備える。
【００６７】
スクランブル回路１１０は、入力された書き込みデータをスクランブルして、スクランブルされたデータをフラッシュメモリ１００に書き込むと共に、フラッシュメモリ１００から読み出された読み出しデータをスクランブル解除する。
【００６８】
具体的には、スクランブル回路１１０は、ページアドレス発生回路１１１と、フレームアドレス発生回路１１２と、データ入力部１１３と、ランダムデータ生成回路１０と、第１の演算回路１１４と、第２の演算回路１１５と、データ出力部１１６と、を有する。本実施形態では、第１の演算回路１１４と、第２の演算回路１１５は、それぞれ排他的論理和回路である。
【００６９】
ページアドレス発生回路１１１は、ページアドレスを発生する。フレームアドレス発生回路１１２は、フレームアドレスを発生する。
【００７０】
データ入力部１１３は、入力された書き込みデータを第１の演算回路１１４に出力する。
【００７１】
ランダムデータ生成回路１０は、ページアドレス及びフレームアドレスに応じたシード初期値に基づいて、前述のように、各Ｍ系列データの所定のビット目の値からなるランダムデータＤｏ［３１：０］を生成する。
【００７２】
第１の演算回路１１４は、ランダムデータＤｏ［３１：０］と、書き込みデータと、を演算して、書き込みデータをスクランブルする。本実施形態では、第１の演算回路１１４は、３２ビットのランダムデータＤｏ［３１：０］と３２ビットの書き込みデータとのビット毎の排他的論理和を演算する。スクランブルされたデータはフラッシュメモリ１００に書き込まれる。
【００７３】
例えば、３２ビットのスクランブルされたデータは、第１ページの第１フレームに書き込まれる。そして、次の書き込みタイミングで、新たな３２ビットのスクランブルされたデータは、第１ページの第２フレームに書き込まれる。以降、同様に書き込まれる。
【００７４】
第２の演算回路１１５は、ランダムデータＤｏ［３１：０］と、フラッシュメモリ１００から読み出された読み出しデータと、を演算して、読み出しデータをスクランブル解除する。本実施形態では、第２の演算回路１１５は、３２ビットのランダムデータＤｏ［３１：０］と３２ビットの読み出しデータとのビット毎の排他的論理和を演算する。
【００７５】
データ出力部１１６は、スクランブル解除された読み出しデータを外部に出力する。
【００７６】
前述のように、ランダムデータ生成回路１０が１６ビットのランダムデータＤｏ［１５：０］を生成するように設定された場合、第１の演算回路１１４は、１６ビットのランダムデータＤｏ［１５：０］と１６ビットの書き込みデータとのビット毎の排他的論理和を演算する。第２の演算回路１１５も、同様に、１６ビットの演算を行う。
【００７７】
以上で説明したランダムデータ生成回路１０により、例えば、次の効果が得られる。
【００７８】
（１）ランダムデータ生成回路１０は、Ｍ系列生成回路の論理部分を並列に接続する構成を有するため、フリップフロップはＭ系列生成回路１つ分（１３個）しか持たない。これによって、比較例に比して、フリップフロップの使用数を大幅に減らすことが可能である。従って、回路規模を小さくできる。
【００７９】
初期値出力回路１１を除くＭ系列データを生成する回路部分のみの回路規模は、２５ビットＭ系列生成回路に基づいて本実施形態の回路を構成した場合、図７の比較例の回路の約１０分の１程度になる。
【００８０】
ランダムデータ生成回路１０全体としては、シード初期値テーブル１１−１が大きくなるため、シード初期値テーブル１１−１が２５ビットのシード初期値を１０３２個有する場合、比較例の回路の約１０分の７程度になる。
【００８１】
（２）データ幅の選択を行う構成を有する場合、データ処理回路１３−１〜１３−３２の途中のＭ系列データを選択する構成を有することで、拡張のための設計がわかりやすい。即ち、異なるデータ幅に容易に設計変更できる。また、必要とする最大ビット幅にかかわらずデータ保持部１５のフリップフロップの数は変わらないため、回路規模の増大を抑えることが可能である。
【００８２】
（３）高い周期のＭ系列生成回路に基づいてランダムデータ生成回路１０を構成することで、ランダムデータに周期の低い部分をなくし、高いランダム性能を実現可能である。
【００８３】
Ｍ系列生成回路のビット長の選択方法としては、次の方法が考えられる。Ｍ系列生成回路のビット長は、ランダム性能を出したい範囲によって決定できる。１ページのサイズがαバイトであるメモリのβページの範囲に関してランダム性能を出したいのであれば、次の関係を満たすようにすると効果が出る。
「α×８×β ＜ Ｍ系列生成回路の周期のサイズ」
なお、左辺の８は、１バイトが８ビットであるため使用されている。
【００８４】
例えば、１ページのサイズが１８キロバイトであるメモリの２１ページの範囲に関してランダム性能を出したいのであれば、次の関係を満たすようにする。
「１８×１０２４×８×２１ ＜ Ｍ系列生成回路の周期のサイズ」
この場合、「１８×１０２４×８×２１」は２の２１乗から２の２２乗の間の値であるため、２１ビットＭ系列生成回路、又は、２１ビットより大きなビット長のＭ系列生成回路に基づいて、２１ページの範囲に関してランダム性能を出すことができる。
【００８５】
即ち、２１ページの範囲に関して、互いに異なるデータパターンのＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］を生成できる。従って、２１ページの範囲に関して、ランダム性が高いランダムデータＤｏ［３１：０］を出力できる。
【００８６】
図４は、第１の実施形態に係るランダムデータ生成回路１０のＭ系列データのデータパターンの分布を説明する図である。ここでは、説明を明確化するため、フラッシュメモリの１ページは８フレームからなり、１フレームは３２ビットからなると仮定する。図４に示すように、ランダムデータ生成回路１０は、例えば、第１ページの第１フレームでは第１から第３２のデータパターンを生成し、第１ページの第８フレームでは第２２５から第２５６のデータパターンを生成し、第２ページの第１フレームでは第２５７から第２８８のデータパターンを生成する。前述のように、このようにすると、複数のページの範囲に関してデータパターンが重複しないので、ランダム性能が高くなる。
【００８７】
（４）シード初期値テーブル１１−１のシード初期値をランダム性能が向上するように設定すれば、比較例のように計算によってシード初期値を生成するよりも高いランダム性能を実現することが可能である。
【００８８】
例えば、「Ｋの２乗−１」個のデータが存在するフラッシュメモリを使用する場合を考える。この場合、予め、ＫビットのＭ系列生成回路を「Ｋの２乗−１」回シフトさせて、シード初期値を選択するタイミングのデータパターンをサンプリングしておく。ＫビットのＭ系列生成回路としては、例えば、Ｋ個のフリップフロップを有した従来のＭ系列生成回路を使用すれば良い。
【００８９】
即ち、フラッシュメモリの任意のページ及びフレームに対して書き込み又は読み出しできるように、例えば、第１ページの第１フレームと、第２ページの第１フレーム等の、書き込み又は読み出しを開始するページ及びフレームに対応するタイミングのデータパターンをサンプリングしておく。前述した図４の例では、第１のデータパターンと、第２５７のデータパターン等をサンプリングしておく。そして、サンプリングされた値をシード初期値テーブル１１−１のシード初期値とする。これにより、ページアドレス及びフレームアドレスに応じてシード初期値を選択すれば、任意のページ及びフレームからでも、図４のデータパターンの分布を再現することができる。従って、ビット線方向のどのＫ個においてもデータパターンが重ならないようすることが可能である。
【００９０】
（５）ランダム性能よりも回路規模を優先したい場合、複数のシード初期値を有するシード初期値テーブル１１−１を使用せずに、比較例のように計算によってシード初期値を生成することで、回路規模を比較例の回路よりも大幅に小さくすることが可能である。
【００９１】
以上で説明したように、本実施形態によれば、データ生成部１３が、供給されたシードデータＤｓ［１２：０］に基づいて、第１から第３２のＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］を生成するようにしている。これら第１から第３２のＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］のうち、第ｉ（ｉは１から３２の整数）のＭ系列データは、１３ビットＭ系列生成回路でシードデータＤｓ［１２：０］をｉ段シフトしたデータと等しい。また、データ保持部１５が、第３２のＭ系列データＤ３１［１２：０］をクロック信号ＣＬＫのクロックに応じて保持して、保持されたデータをシードデータＤｓ［１２：０］として供給するようにしている。これにより、クロック信号ＣＬＫのクロックに応じて、互いにデータパターンが重複することなく、第１から第３２のＭ系列データＤ０［１２：０］〜Ｄ３１［１２：０］の組を順次生成できる。従って、ランダム性能を高くできる。
【００９２】
（変形例）
上記実施形態では、ガロア型のＭ系列生成回路に基づいて構成されたデータ処理回路の一例について説明したが、フィボナッチ型のＭ系列生成回路に基づいてデータ処理回路を構成しても良い。
【００９３】
図５は、本発明の第１の実施形態の変形例に係るデータ処理回路の構成を説明するブロック図である。図５（ａ）は、フリップフロップと論理回路で構成されたフィボナッチ型の１３ビットＭ系列生成回路を示し、図５（ｂ）は、データ処理回路を示す。
【００９４】
第１の実施形態と同様に、各データ処理回路１３−１〜１３−３２は、フリップフロップＲ１〜Ｒ１３と排他的論理和回路ＥＯ１〜ＥＯ３で構成された図５（ａ）の１３ビットＭ系列生成回路からフリップフロップＲ１〜Ｒ１３が除かれた構成を有する。
【００９５】
各データ処理回路１３−１〜１３−３２は、１３個のデータ入力端子Ｔｉ０〜Ｔｉ１２及び１３個のデータ出力端子Ｔｏ０〜Ｔｏ１２を有する。
【００９６】
各データ処理回路１３−１〜１３−３２に関して、図５（ａ）の１３ビットＭ系列生成回路において各フリップフロップの出力端子に接続されていた信号線が、対応するデータ入力端子Ｔｉ０〜Ｔｉ１２に接続されている。また、図５（ａ）の１３ビットＭ系列生成回路において各フリップフロップの入力端子に接続されていた信号線が、対応するデータ出力端子Ｔｏ０〜Ｔｏ１２に接続されている。
【００９７】
このようなフィボナッチ型のＭ系列生成回路に基づいたデータ処理回路を使用しても、第１の実施形態と同様な効果を得ることができる。
【００９８】
（他の変形例）
例えば、データ幅を選択しない場合、選択回路１４を備えなくても良い。
【００９９】
また、第１の実施形態では、各データ処理回路１３−１〜１３−３２は、図２（ａ）の構成の１３ビットＭ系列生成回路からフリップフロップＲ１〜Ｒ１３が除かれた構成を有する一例について説明したが、他の構成の１３ビットＭ系列生成回路からフリップフロップＲ１〜Ｒ１３が除かれた構成を有しても良い。前述のように、あるビット長のＭ系列生成回路は、複数の回路構成で実現可能であるが、どのような回路構成のＭ系列生成回路に基づいても本実施形態のデータ処理回路を構成できる。また、他のビット長のＭ系列生成回路からフリップフロップが除かれた構成を有しても良い。
【０１００】
また、第１の実施形態では、各データ処理回路１３−１〜１３−３２は、同一の１３ビットＭ系列生成回路に基づいて構成されている一例について説明したが、ビット長が異なる複数種類のＭ系列生成回路に基づいて構成されても良い。
【０１０１】
以上で説明した実施形態によれば、ランダム性能が高いランダムデータ生成回路及びこれを備えたメモリシステムを提供できる。
【０１０２】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１０３】
１０  ランダムデータ生成回路
１１  初期値出力回路
１２  選択回路（第２の選択回路）
１３  データ生成部
１３−１〜１３−３２  データ処理回路
１４  選択回路（第１の選択回路）
１５  データ保持部
１００  ＮＡＮＤ型フラッシュメモリ
１１０  スクランブル回路
１１４  第１の演算回路
１１５  第２の演算回路
【図１】
2013021461.tif 000003
【図２】
2013021461.tif 000004
【図３】
2013021461.tif 000005
【図４】
2013021461.tif 000006
【図５】
2013021461.tif 000007
【図６】
2013021461.tif 000008
【図７】
2013021461.tif 000009
【図８】
2013021461.tif 000010
【図９】
2013021461.tif 000011