(57)【要約】【課題】多数のビットに対するビット単位のランダム化等の処理を行う回路において、処理時間の短縮と、配線面積増大の抑制とを両立することができる半導体装置を提供する。【解決手段】本発明の半導体装置は、所定の演算処理を行って複数ビットの演算結果をビット毎に求める複数の演算回路Ｍ０００〜Ｍ５１１と、演算処理で用いられる所定の数値信号を複数の演算回路Ｍ０００〜Ｍ５１１に対して、演算回路Ｍ０００〜Ｍ５１１の個数より少ない本数の信号線を用いて供給する配線部６５であって、２以上の信号線ＲＳＤｊ及びＲＳＤｉを各演算回路Ｍ０００〜Ｍ５１１に対して接続したものとを備えている。【選択図】図３
2014137832.tif 000002
【特許請求の範囲】
【請求項１】
所定の演算処理を行って複数ビットの演算結果をビット毎に求める複数の演算回路と、
前記演算処理で用いられる所定の数値信号を前記複数の演算回路に対して、前記演算回路の個数より少ない本数の信号線を用いて供給する配線部であって、２以上の前記信号線を前記各演算回路に対して接続したものと
を備えることを特徴とする半導体装置。
【請求項２】
前記各演算回路が、当該演算回路に接続されている前記２以上の信号線で供給された各信号の排他的論理和によって前記所定の数値信号を求める
ことを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記所定の数値信号が、疑似乱数信号である
ことを特徴とする請求項１又は２に記載の半導体装置。
【請求項４】
前記複数の演算回路が、格子状に配列されている
ことを特徴とする請求項１から３のいずれか１項に記載の半導体装置。
【請求項５】
前記演算処理が、当該ビットの誤りの有無を求める処理を含む
ことを特徴とする請求項１から４のいずれか１項に記載の半導体装置。
【請求項６】
前記各演算回路が、前記演算結果として前記数値信号を出力可能である
ことを特徴とする請求項１から４のいずれか１項に記載の半導体装置。
【請求項７】
所定の演算処理を行って複数ビットの演算結果をビット毎に求める複数の演算回路と、
前記演算処理で用いられる所定の数値信号を前記複数の演算回路に対して、前記演算回路の個数より少ない本数の信号線を用いて供給する配線部であって、２以上の前記信号線を前記各演算回路に対して接続したものと
を用いて、前記複数ビットの演算結果を並列的に求める
ことを特徴とする半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び半導体装置の制御方法に関する。
【背景技術】
【０００２】
ＭＬＣ（Ｍｕｌｔｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）方式のＮＡＮＤ型フラッシュメモリでは、隣接するメモリセル間に生じるワードラインカップリングによって、閾値電圧の大きさが変化する（例えば特許文献１の段落００４５参照）。この閾値電圧の変化は、複数のメモリセルに記憶するデータをランダム化することで減少させることができる（同上）。特許文献１に記載されているフラッシュメモリでは、疑似ランダムシード発生器によって、ランダムシードデータが発生される（特許文献１の段落００５２〜００５３参照）。そして、メモリセルにプログラムするデータが、このランダムシードデータと論理的に組み合わされて（つまりミックスされて）ランダム化（つまり無作為化）される。また、メモリセルから読み出されたデータは、ランダム化した際に用いられたランダムシードデータを用いてデランダム化（非ランダム化）される（特許文献１の段落００４４、００５９〜００６１、１０７等参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１３３８７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、２つの例を示して、上述したようなランダム化を５１２ｂｉｔのデータに対して行う場合の課題について説明する。まず第１の例は、ランダムシードデータとランダム化されるデータとの組み合わせ（すなわちミックス）を５１２ｂｉｔよりも少ないビット数を単位として行う場合である。この場合、例えば、８ｂｉｔ（あるいは１６ｂｉｔなど少数）のデータを連続的にあるいは適宜にミキサー回路に通し、ランダム化する。そして、この動作を繰り返し（この例では６４回）行うことですべてのランダム化の処理が完了する。この場合、ミキサー回路が処理するビット数を抑えることができるが、繰り返し処理が必要となるため、処理時間が長くなってしまうという課題がある。
【０００５】
次に第２の例は、ランダムシードデータとランダム化されるデータとの組み合わせ（すなわちミックス）を５１２ｂｉｔ同時に行う場合である。この場合、処理時間は短くなる。しかしながら、ミキサー回路が処理するビット数が増加するとともに、ミキサー回路に入力されるデータやランダムシードデータの信号数が増加する。そのため、例えば、配線部が占める面積が大きくなってしまうという課題がある。
【０００６】
本発明は、上記の事情を考慮してなされたものであり、処理時間の短縮と、配線面積増大の抑制とを両立することができる半導体装置及び半導体装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の半導体装置は、所定の演算処理を行って複数ビットの演算結果をビット毎に求める複数の演算回路と、前記演算処理で用いられる所定の数値信号を前記複数の演算回路に対して、前記演算回路の個数より少ない本数の信号線を用いて供給する配線部であって、２以上の前記信号線を前記各演算回路に対して接続したものとを備えることを特徴とする。
【０００８】
また、本発明の他の半導体装置は、前記各演算回路が、当該演算回路に接続されている前記２以上の信号線で供給された各信号の排他的論理和によって前記所定の数値信号を求めることを特徴とする。
【０００９】
また、本発明の他の半導体装置は、前記所定の数値信号が、疑似乱数信号であることを特徴とする。
【００１０】
また、本発明の他の半導体装置は、前記複数の演算回路が、格子状に配列されていることを特徴とする。
【００１１】
また、本発明の他の半導体装置は、前記演算処理が、当該ビットの誤りの有無を求める処理を含むことを特徴とする。
【００１２】
また、本発明の他の半導体装置は、前記各演算回路が、前記演算結果として前記数値信号を出力可能であることを特徴とする。
【００１３】
また、本発明の半導体装置の制御方法は、所定の演算処理を行って複数ビットの演算結果をビット毎に求める複数の演算回路と、前記演算処理で用いられる所定の数値信号を前記複数の演算回路に対して、前記演算回路の個数より少ない本数の信号線を用いて供給する配線部であって、前記各演算回路に対して２以上の前記信号線を接続したものとを用いて、前記複数ビットの演算結果を並列的に求めることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、各ビットに対応した複数の演算回路を用いて所定の演算処理を行って複数のビットの演算結果を求める際に、次の構成を用いているので、演算回路に対して所定の数値信号を供給するための信号本数を減らすことができる。すなわち、各演算回路に対して２以上の信号線を接続しているので、それらの２以上の信号線を用いて所定の演算処理等を行うことで各演算回路が用いる数値信号を各演算回路内で生成することができる。この構成では、数値信号が、演算回路の個数より少ない本数の信号線を用いて供給される。しかし、各演算回路に接続する２以上の信号線の組を適切に選択することで、演算結果のビット数よりも少ない本数の信号線を用いた場合であっても、ビット数と同じ本数の信号線を用いた場合と同等に複数ビットの演算結果を求めることができる。よって、配線部が占める面積を容易に小さくすることができる。
【００１５】
また、本発明の他の態様では、演算処理で用いる数値信号が、２以上の信号線で供給された各信号を排他的論理和することで生成される。この構成によれば、各演算回路に設ける数値信号を生成するための構成を容易に簡素化することができる。
【００１６】
また、本発明の他の態様では、所定の数値信号が疑似乱数信号である。この構成によれば、例えば複数ビットのデータのランダム化や非ランダム化といった演算処理を、配線部の大規模化を抑え、かつ、複数の演算回路を同時に用いて実行することができる。
【００１７】
また、本発明の他の態様は、複数の演算回路が格子状に配列されていることを特徴とする。この構成によれば、例えば格子状に配列された複数の演算回路の配列方向と平行あるいは垂直方向に各信号線を敷設することで、各信号線を効率よく配線することができる。
【００１８】
また、本発明の他の態様は、演算処理が、当該ビットの誤りの有無を求める処理を含むことを特徴とする。この構成によれば、この構成によれば、当該ビットの誤りの有無を求める処理を含む演算処理を、配線部の大規模化を抑え、かつ、複数の演算回路を同時に用いて実行することができる。
【００１９】
また、本発明の他の態様は、各演算回路が、演算結果として数値信号を出力可能であることを特徴とする。この構成によれば、演算回路と数値信号を使用する他の回路とを効率的に配置することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態を説明するために用いるフラッシュメモリ装置を示すブロック図である。
【図２】本発明の第１実施形態を説明するためのブロック図である。
【図３】図１に示したミキサー回路６２の構成例を説明するためのブロック図である。
【図４】図１に示したミキサー回路６２の他の構成例を説明するためのブロック図である。
【図５】本発明の第２実施形態の基本的構成を説明するためのブロック図である。
【図６】本発明の第２実施形態を説明するためのブロック図である。
【図７】本発明の第２実施形態の動作例を説明するためのフローチャートである。
【図８】本発明の第２実施形態の動作例を説明するためのフローチャートである。
【図９】図６に示したチェン探索部１０３の構成例を説明するためのブロック図である。
【図１０】図６に示したチェン探索部１０３の構成例を説明するためのブロック図である。
【図１１】本発明の第１実施形態の効果を説明するために用いるブロック図である。
【図１２】本発明の第２実施形態の効果を説明するために用いるブロック図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照して本発明の実施形態について説明する。以下では、本発明をフラッシュメモリ装置の内部回路に適用する場合の２つの実施形態（第１実施形態及び第２実施形態とする）について説明する。
【００２２】
〔第１実施形態〕
図１〜図４は、本発明の第１実施形態を説明するためのブロック図である。図１は、本発明の第１実施形態としてのフラッシュメモリ装置を概略的に示したブロック図である。図１に示したフラッシュメモリ装置１は、例えば、ＮＡＮＤ型フラッシュメモリを構成している。ただし、本発明の実施形態は、フラッシュメモリ装置に限定されず、複数ビットのデータをビット単位で演算するための複数の演算回路を備えた半導体装置に広く適用可能である。図１に示したフラッシュメモリ装置１は、メモリセルアレイ１０、行選択回路２０、制御ロジック３０、ページバッファ回路４０、誤り検出訂正回路５０、ランダム化及びデランダム化回路６０及び入出力インターフェース回路７０を備えている。第１実施形態では、これらの構成の中でランダム化及びデランダム化回路６０が、本発明の特徴を有する構成である。
【００２３】
フラッシュメモリ装置１は、行（ワードライン：ＷＬ）と列（ビットライン：ＢＬ）とに配列されたメモリセルを有するメモリセルアレイ１０を含む。メモリセルアレイ１０が有する各メモリセルは、１−ビットデータ又はＭ−ビット（マルチ−ビット）データ（Ｍは２又はそれより大きい整数）を格納する。各メモリセルが１−ビットデータを格納する場合、メモリセルアレイ１０の各行に属するメモリセルはメモリ空間（ｍｅｍｏｒｙ  ｓｐａｃｅ）を構成する。各メモリセルがＭ−ビットデータを格納する場合、メモリセルアレイ１０の各行に属するメモリセルは、複数のページに各々対応するメモリ空間を構成する。各メモリセルは、フローティングゲート又は電荷トラップ層のような電荷格納層を有するメモリセル又は可変抵抗素子を有するメモリセルで構成することができる。メモリセルアレイ１０は単層アレイ構造（又は、２次元アレイ構造と称される）又は多層アレイ構造（又は、垂直形又はスタック形３次元アレイ構造と称される）を有するように構成することができる。
【００２４】
行選択回路２０は、制御ロジック３０によって制御され、メモリセルアレイ１０の行に対する選択及び駆動動作を実行する。制御ロジック３０は、フラッシュメモリ装置１の動作を全般的に制御する。入出力インターフェース回路７０は、制御ロジック３０によって制御され、外部の装置との間で外部データ信号ＤＱ等の信号を入出力するための回路である。ページバッファ回路４０は、バッファとなるＲＡＭ（ランダムアクセスメモリ）を備え、メモリセルアレイ１０から読み出したデータや、メモリセルアレイ１０にプログラムするデータを一時的に記憶する。また、ページバッファ回路４０は、列選択回路を備えていて、制御ロジック３０による制御の下、メモリセルアレイ１０の列に対する選択及び駆動動作を実行する。そのため、ページバッファ回路４０は、読み出し時やプログラム時にメモリセルアレイ１０が有する各メモリセルとの間の入出力信号を制御するためのドライバ回路やアンプ回路を備えている。このように、ページバッファ回路４０は、制御ロジック３０によって制御され、データの読み出しやプログラムにデータを一時的に記憶するための記憶装置として動作するとともに、読出し動作／プログラム動作等の動作モードにしたがってセンスアンプ又は書込みドライバとして動作する。その際、ページバッファ回路４０は、制御ロジック３０によって制御され、内部の列選択回路によって例えば読出し／プログラム動作の時、列単位、ページ単位等の予め定められた単位で順次的にメモリセルを選択する。
【００２５】
誤り検出訂正回路５０は、例えば図２に示したように、誤り位置検出訂正回路５１と、パリティ生成付加回路５２とを備えて構成されている。ここで、図２は、図１に示した誤り検出訂正回路５０とランダム化及びデランダム化回路６０の構成例を示したブロック図である。パリティ生成付加回路５２は、メモリセルに対するデータのプログラム時に、ランダム化及びデランダム化回路６０から出力されたランダム化されたデータ（Ｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）に基づいてパリティを生成し、生成したパリティを元のランダム化されたデータに付加してページバッファ回路４０へ出力する。誤り位置検出訂正回路５１は、メモリセルからデータを読み出す時に、ページバッファ回路４０から入力したデータに付加されているパリティに基づき、当該データ中の誤りの有無や誤りが発生したビット位置を検出し、検出結果に基づいて誤りを訂正する。ここで、パリティは、誤り訂正のために使用される付加ビットを意味する。
【００２６】
ランダム化及びデランダム化回路６０は、図２に一例を示したように、疑似乱数発生回路６１、Ｍｉｘｅｒ（ミキサー回路）６２、入力信号切り替え回路６３及び出力信号切り替え回路６４を備えている。疑似乱数発生回路６１は、複数ビットからなる疑似乱数データ（ＲＳＤ；以下、ランダムシードデータとも呼ぶ）を発生する。疑似乱数発生回路６１は、例えば線形フィードバックシフトレジスタ等を用いて構成されていて、所定のシードを初期値としてワードアドレス単位等で異なる疑似乱数値（すなわち複数ビットの無作為の２値データ）を発生する。ここで、所定のシードは、例えば、メモリセルアレイ１０におけるページアドレスに基づいて予め設定しておくことができる。ただし、シードの設定は、ページ単位に限らず、ブロック単位や他の制御単位で設定することもできる。ミキサー回路６２は、入力信号切り替え回路６３から入力されたデータＤａｔａとランダムシードデータＲＳＤとを組み合わせることで（具体的にはビット毎に排他的論理和を演算することで）、データをランダム化したり、デランダム化したりする。入出力インターフェース回路７０から入力信号切り替え回路６３を介して入力されたデータは、ミキサー回路６２でランダム化したデータ（Ｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）に変換され、出力信号切り替え回路６４を介してパリティ生成付加回路５２へと出力される。また、誤り位置検出訂正回路５１から入力信号切り替え回路６３を介して入力されたデータは、ミキサー回路６２でデランダム化したデータ（Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）に変換され、出力信号切り替え回路６４を介して入出力インターフェース回路７０へと出力される。このように、ランダム化及びデランダム化回路６０は、プログラム時に、発生した複数ビットからなる疑似乱数データＲＳＤ（疑似乱数信号）を用いてメモリセルにプログラムするデータをランダム化し、誤り検出訂正回路５０へ出力する。また、ランダム化及びデランダム化回路６０は、メモリセルからのデータの読み出し時に、誤り検出訂正回路５０からの出力と、ランダム化の際に使用したものと同一の疑似乱数データＲＳＤとを用いて、データをデランダム化する（すなわちランダム化する前の状態に戻す）処理を行う。
【００２７】
なお、ランダム化及びデランダム化回路６０の構成は、図２に示したものに限られず、例えば、入出力インターフェース回路７０との間で直接データを入出力するのではなく、一旦ページバッファ回路４０や他のバッファ回路を用いてランダム化やデランダム化の入出力データを一時的に保存するような構成を用いることもできる。また、入力信号切り替え回路６３や出力信号切り替え回路６４を設けずに、ミキサー回路６２内にランダム化用とデランダム化用の２つのミキサー回路を設けるようにしてもよい。
【００２８】
次に、図３を参照して、第１実施形態が特徴とするランダム化及びデランダム化回路６０の構成例について説明する。図３（ａ）は、図２に示したミキサー回路６２の入出力信号の接続例を示したブロック図、図３（ｂ）は、図２に示したミキサー回路６２内の構成例を示したブロック図である。図３に示したミキサー回路６２では、５１２ビットのデータに対してランダム化又はデランダム化の演算処理が行われる。
【００２９】
なお、以下の説明において、信号又は信号線に付加した「＜ａ：ｂ＞」（ａは１以上の整数、ｂは０以上の整数）なる標記は、当該信号又は信号線が、最上位（又は最下位）ビットがａで、最下位（又は最上位）ビットがｂで、合計ａ−ｂ＋１本の複数の信号又は信号線であることを表している。また、信号又は信号線に付加した「＜ｃ＞」（ｃは０以上の整数）なる標記は、当該信号又は信号線が、最下位（又は最上位）からｃ番目の１ビットの信号又は信号線であることを表している。
【００３０】
図３（ａ）に示したミキサー回路６２では、５１２ビットの信号であるデータＤａｔａ＜５１１：０＞が、入力信号切り替え回路６３から入力されるとともに、図２に示した疑似乱数発生回路６１から３２ビットの信号であるデータＲＳＤｊ＜３１：０＞と１６ビットの信号であるデータＲＳＤｉ＜１５：０＞とが入力される。図３（ｂ）に示した疑似乱数発生回路６１は、ランダムシードデータＲＳＤを３２ビットのデータＲＳＤｊ＜３１：０＞と１６ビットのデータＲＳＤｉ＜１５：０＞とに分けて合計４８ビットのデータとして出力する。ビット数３２と１６とを掛け合わせたものが５１２（＝３２×１６）である。したがって、これらのデータＲＳＤｊ＜３１：０＞とデータＲＳＤｉ＜１５：０＞とを組み合わせたデータは、その組み合わせをビット毎の演算処理で重複しないように選択することで、ランダム化の作用という点では、５１２ビットのランダムシードデータＲＳＤと同等の疑似乱数データとして用いることができる。すなわち、図３（ａ）に示したミキサー回路６２は、５１２ビットのデータと、４８ビット（＝３２ビット＋１６ビット）の疑似乱数データとを用いて、５１２ビットのランダムシードデータＲＳＤを用いた場合と同等にランダム化された５１２ビットのランダム化データ（Ｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）又はデランダム化データ（Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）を出力することができる。
【００３１】
図３（ａ）に示したミキサー回路６２は、図３（ｂ）に示したように、５１２個の演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１を有して構成されている。演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１は、５１２ビットのデータＤａｔａの各ビットであるＤａｔａ＜０＞、Ｄａｔａ＜１＞、…、Ｄａｔａ＜５１１＞に対して、ビット毎にランダム化又はデランダム化の演算処理を行う。演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１は、それぞれ２個の２入力排他的論理和回路（以下、ＥＯＲ回路と称する）ＥＸ１及びＥＸ２を有している。ＥＯＲ回路ＥＸ１には、データＲＳＤｊ＜３１：０＞のうちの１ビットの信号と、データＲＳＤｉ＜１５：０＞のうちの１ビットの信号とが入力される。そして、ＥＯＲ回路ＥＸ２には、ＥＯＲ回路ＥＸ１の出力と、Ｄａｔａ＜５１１：０＞のうちの１ビットの信号とが入力される。ここで、Ｄａｔａの各ビットＤａｔａ＜０＞、Ｄａｔａ＜１＞、…、Ｄａｔａ＜５１１＞は、演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１に対して、この順番で１ビットずつ入力される。データＲＳＤｊの各ビットは、ＲＳＤｊ＜０＞が演算回路Ｍ０００からＭ０１５に入力され、ＲＳＤｊ＜１＞が演算回路Ｍ０１６からＭ０３１に入力され、というように、５１２個の演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１に対してこの順で１６個ずつ同じビットの信号が１ビットずつ入力される。データＲＳＤｉの各ビットは、演算回路Ｍ０００、Ｍ００１、…、Ｍ０１５にこの順でＲＳＤｉ＜０＞、＜１＞、…、＜１５＞が入力され、演算回路Ｍ０１６から再びＲＳＤｉ＜０＞から入力されるというように、５１２個の演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１に対して１６個の信号が繰り返し１ビットずつ入力される。したがって、図３（ｂ）に示した例では、例えば、演算回路Ｍ０００には、Ｄａｔａ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜０＞とが入力され、Ｄａｔａ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜０＞との３ビットを排他的論理和した結果が、ランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜０＞として演算回路Ｍ０００から出力される。また、例えば、演算回路Ｍ００１には、Ｄａｔａ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜１＞とが入力され、Ｄａｔａ＜１＞とＲＳＤｊ＜０＞とＲＳＤｉ＜１＞との３ビットを排他的論理和した結果が、ランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜１＞として、演算回路Ｍ００１から出力される。また、例えば、演算回路Ｍ５１１には、Ｄａｔａ＜５１１＞とＲＳＤｊ＜３１＞とＲＳＤｉ＜１５＞とが入力され、Ｄａｔａ＜５１１＞とＲＳＤｊ＜３１＞とＲＳＤｉ＜１５＞との３ビットを排他的論理和した結果が、ランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜５１１＞として、演算回路Ｍ５１１から出力される。
【００３２】
図３を参照して説明した構成では、ミキサー回路６２及びミキサー回路６２の配線部６５とを、所定の演算処理を行って５１２ビットの演算結果をビット毎に求める５１２個の演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１と、次の本発明の特徴を有する配線部６５とから構成している。すなわち、配線部６５は、演算処理で用いる疑似乱数データＲＳＤ（すなわち所定の数値信号）を複数の演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１に対して、演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１の個数（５１２個）より少ない本数（合計４８本）の信号線ＲＳＤｊ及びＲＳＤｉを用いて供給する配線部６５である。さらに、配線部６５は、２以上の（すなわち２種類の）信号線ＲＳＤｊ及びＲＳＤｉを、それぞれの演算回路Ｍ０００、Ｍ００１、…、Ｍ５１１に対して接続している。この構成によれば、各ビットに対応した複数の演算回路を用いて所定の演算処理（この例ではＥＯＲ回路ＥＸ２の演算処理）を行って複数のビットの演算結果を求める際に、演算回路に対して所定の数値信号を供給するための信号本数を減らすことができる。すなわち、各演算回路に対して２以上の信号線を接続しているので、それらの２以上の信号線を用いて所定の演算処理（この例ではＥＯＲ回路ＥＸ１の演算処理）を行うことができ、各演算回路が用いる数値信号を各演算回路内で生成することができる。その際、この構成では、数値信号が、演算回路の個数より少ない本数の信号線を用いて供給される。しかし、各演算回路に接続する２以上の信号線の組を適切に選択することで、演算結果のビット数よりも少ない本数の信号線を用いた場合であっても、ビット数と同じ本数の信号線を用いる場合と同等に複数ビットの演算結果を求めることができる。すなわち、例えば５１２ビットの信号をｎ×ｍ＝５１２となるｎビットの信号線のうちの１本とｍビットの信号線のうちの１本とを組み合わせたものとして各演算回路に供給し、かつその組み合わせをすべて異ならせれば、ｎ×ｍ＝５１２個の組み合わせを作ることができる。よって、信号の数を少なくしたとしてもランダム化の作用を維持することができる。また信号の本数を減らすことで配線部が占める面積等を容易に小さくすることができる。
【００３３】
また、ミキサー回路６２に対して５１２ビットの信号をｎ×ｍ＝５１２となるｎビットの信号線のうちの１本とｍビットの信号線とを用いて供給する場合、複数のビット単位の演算回路を格子状に配置すれば、より効率的な配線を行うことができる。すなわち、例えば、ｎビットの信号線を水平方向と平行に所定の間隔で配列し、ｍビットの信号線を垂直方向と平行に所定の間隔で配列し、水平方向の信号線と垂直方向の信号線との各交点にビット単位の演算回路を配置する。この場合、各演算回路は、水平及び垂直方向に整列した格子状の配置となる。すなわち、各演算回路を格子状に配置することで、各信号線を直線的に配列することが可能となり、配線の長さを容易に短縮することができる。
【００３４】
なお、比較のため、図２に示した疑似乱数発生回路６１がランダムシードデータＲＳＤを５１２本の信号、すなわちＲＳＤ＜５１１：０＞として出力した場合のミキサー回路の構成例を図１１に示した。この場合、図１１（ａ）に示したように、図２のミキサー回路６２に対応するＭｉｘｅｒ（ミキサー回路）６２ａには、５１２ビットのデータＤａｔａ＜５１１：０＞と５１２ビットのランダムシードデータＲＳＤ＜５１１：０＞とが入力される。また、ミキサー回路６２ａが有するビット単位の演算回路Ｍ０００ａ、Ｍ００１ａ、…、Ｍ５１１ａは、それぞれ１個のＥＯＲ回路ＥＸ１ａを用いて構成することができる。各ＥＯＲ回路ＥＸ１ａでは、データＤａｔａの各ビット＜０＞、＜１＞、…、＜５１１＞のうちの１ビットと、ランダムシードデータＲＳＤの各ビット＜０＞、＜１＞、…、＜５１１＞のうちの１ビットとの排他的論理和を算出する。この排他的論理和の結果が、各１ビットのランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜０＞、＜１＞、…、＜５１１＞として出力される。
【００３５】
図１１に示した構成では、ビット単位の演算回路Ｍ０００ａ、Ｍ００１ａ、…、Ｍ５１１ａの構成が簡単化される。しかし、図２に示した疑似乱数発生回路６１に対応する構成である図１１の疑似乱数発生回路６１ａでは、５１２ビットのランダムシードデータＲＳＤを発生し、すべてのビットをミキサー回路６２ａに供給しなければならない。そのため、配線部が占める面積を小さくすることが難しくなる。
【００３６】
次に、図４を参照して、図３を参照して説明したミキサー回路６２の変形例について説明する。図４（ａ）は、図３（ａ）とは構成が異なる図２に示したミキサー回路６２の入出力信号の接続例を示したブロック図である。図４（ｂ）は、図３（ａ）とは構成が異なる図２に示したミキサー回路６２内の構成例を示したブロック図である。図４に示したＭｉｘｅｒ（ミキサー回路）６２ｂでは、図３を参照して説明したミキサー回路６２と同様に、５１２ビットのデータに対してランダム化又はデランダム化の演算処理が行われる。
【００３７】
図４（ａ）に示したミキサー回路６２ｂでは、５１２ビットの信号であるデータＤａｔａ＜５１１：０＞が、入力信号切り替え回路６３から入力されるとともに、図２に示した疑似乱数発生回路６１（ただし、図４（ｂ）では疑似乱数発生回路６１ｂと示している）から８ビットの信号であるデータＲＳＤｋ＜７：０＞と８ビットの信号であるデータＲＳＤｊ＜７：０＞と８ビットの信号であるデータＲＳＤｉ＜７：０＞とが入力される。ビット数８を３回掛け合わせたものが５１２（＝８×８×８）である。したがって、これらの８ビットの信号であるデータＲＳＤｋ＜７：０＞とデータＲＳＤｊ＜７：０＞と８ビットの信号であるデータＲＳＤｉ＜７：０＞とを組み合わせたデータをビット毎の演算処理で重複しないように使用することで、組み合わせたデータは、ランダム化の作用としいう点では、５１２ビットのランダムシードデータＲＳＤと同等の疑似乱数データとして用いることができる。すなわち、図４（ａ）に示したミキサー回路６２ｂは、５１２ビットのデータと、２４ビット（＝８ビット＋８ビット＋８ビット）の疑似乱数データとを用いて、５１２ビットのランダムシードデータＲＳＤを用いた場合と同等にランダム化された５１２ビットのランダム化データ（Ｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）又はデランダム化データ（Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ）を出力することができる。
【００３８】
図４（ａ）に示したミキサー回路６２ｂは、図４（ｂ）に示したように、５１２個の演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂを有して構成されている。演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂは、５１２ビットのデータＤａｔａの各ビットであるＤａｔａ＜０＞、Ｄａｔａ＜１＞、…、Ｄａｔａ＜５１１＞に対して、ビット毎にランダム化又はデランダム化の演算処理を行う。演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂは、それぞれ３個の２入力ＥＯＲ回路ＥＸ１ｂ、ＥＸ２ｂ及びＥＸ３ｂを有している。ＥＯＲ回路ＥＸ１ｂには、データＲＳＤｊ＜７：０＞のうちの１ビットの信号と、データＲＳＤｉ＜７：０＞のうちの１ビットの信号とが入力される。ＥＯＲ回路ＥＸ２ｂには、データＲＳＤｋ＜７：０＞のうちの１ビットの信号と、データＤａｔａ＜５１１：０＞のうちの１ビットの信号とが入力される。そして、ＥＯＲ回路ＥＸ３ｂには、ＥＯＲ回路ＥＸ１ｂの出力と、ＥＯＲ回路ＥＸ２ｂの出力とが入力される。ここで、Ｄａｔａの各ビットＤａｔａ＜０＞、Ｄａｔａ＜１＞、…、Ｄａｔａ＜５１１＞は、演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂに対して、この順番で１ビットずつ入力される。データＲＳＤｋの各ビットは、ＲＳＤｋ＜０＞が演算回路Ｍ０００からＭ０６３に入力され、ＲＳＤｋ＜１＞が演算回路Ｍ０６４からＭ１２７に入力され、というように、５１２個の演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂに対してこの順で６４個ずつ同じビットの信号が１ビットずつ入力される。データＲＳＤｊの各ビットは、ＲＳＤｊ＜０＞が演算回路Ｍ０００からＭ００７に入力され、ＲＳＤｊ＜１＞が演算回路Ｍ００８からＭ０１５に入力され、というように、５１２個の演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂに対してこの順で８個ずつ同じビットの信号が１ビットずつ入力される。データＲＳＤｉの各ビットは、演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ００７ｂ（Ｍ００７ｂは図示せず）にこの順でＲＳＤｉ＜０＞、＜１＞、…、＜７＞が入力され、演算回路Ｍ００８ｂから再びＲＳＤｉ＜０＞から入力されるというように、５１２個の演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂに対して８個の信号が繰り返し１ビットずつ入力される。
【００３９】
したがって、図４（ｂ）に示した例では、例えば、演算回路Ｍ０００ｂには、Ｄａｔａ＜０＞とＲＳＤｋ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜０＞とが入力され、Ｄａｔａ＜０＞とＲＳＤｋ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜０＞との４ビットを排他的論理和した結果が、ランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜０＞として演算回路Ｍ０００ｂから出力される。また、例えば、演算回路Ｍ００１ｂには、Ｄａｔａ＜０＞とＲＳＤｋ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜１＞とが入力され、Ｄａｔａ＜１＞とＲＳＤｋ＜０＞とＲＳＤｊ＜０＞とＲＳＤｉ＜１＞との４ビットを排他的論理和した結果が、ランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜１＞として、演算回路Ｍ００１ｂから出力される。また、例えば、演算回路Ｍ５１１ｂには、Ｄａｔａ＜５１１＞とＲＳＤｋ＜７＞とＲＳＤｊ＜７＞とＲＳＤｉ＜７＞とが入力され、Ｄａｔａ＜５１１＞とＲＳＤｋ＜７＞とＲＳＤｊ＜７＞とＲＳＤｉ＜７＞との４ビットを排他的論理和した結果が、ランダム又はデランダム化データＲａｎｄｏｍｉｚｅｄ／Ｄｅｒａｎｄｏｍｉｚｅｄ  Ｄａｔａ＜５１１＞として、演算回路Ｍ５１１ｂから出力される。
【００４０】
図４を参照して説明した構成では、ミキサー回路６２ｂ及びミキサー回路６２ｂの配線部６５ｂとを、所定の演算処理を行って５１２ビットの演算結果をビット毎に求める５１２個の演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂと、本発明の特徴を有する配線部６５ｂとから構成している。ここで配線部６５ｂは、演算処理で用いる疑似乱数データＲＳＤ（所定の数値信号）を複数の演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂに対して、演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂの個数（５１２個）より少ない本数（合計２４本）の信号線ＲＳＤｋ、信号線ＲＳＤｊ及びＲＳＤｉを用いて供給する配線部６５ｂである。さらに、配線部６５ｂは、３本の信号線ＲＳＤｋ、ＲＳＤｊ及びＲＳＤｉを、それぞれの演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂに対して接続している。図４に示した構成例では、図３に示したものと比較して、演算回路Ｍ０００ｂ、Ｍ００１ｂ、…、Ｍ５１１ｂの構成は、ビット毎にＥＯＲ回路１個分の増加となるが、疑似乱数発生回路６１ｂからの出力信号の本数を２４本として半分にすることができる。
【００４１】
なお、疑似乱数発生回路６１からミキサー回路６２へ供給する疑似乱数データの信号数は上記のものに限定されず変更することができる。
【００４２】
〔第２実施形態〕
次に、図５から図１０等を参照して、本発明の第２実施形態について説明する。第２実施形態も、第１実施形態と同様に、本発明をフラッシュメモリ装置の内部回路に適用する場合の実施形態であり、概略的な構成は、第１実施形態と同様に図１のブロック図で表される。ただし、第１実施形態では、図１に示した構成の中でランダム化及びデランダム化回路６０が本発明の特徴を有する構成であった。これに対して、第２実施形態では、図１に示した構成の中で誤り検出訂正回路５０とランダム化及びデランダム化回路６０とを組み合わせたものが、本発明の特徴を有する構成である。その説明は、図６から図１０等を参照して後述するが、その説明に先立ち、まず図５を参照して、第２実施形態の基本的な考え方について説明する。
【００４３】
図５（ａ）は、第２実施形態の基本的な考え方について説明するためのブロック図である。第１実施形態では、図３（ａ）に示したようにミキサー回路６２にランダム化又はデランダム化しようとするデータＤａｔａと、ランダムシードデータＲＳＤとを入力し、ミキサー回路６２でランダム化又はデランダム化の演算処理を行っていた。これに対して、第２実施形態では、ビット単位でランダム化又はデランダム化とは異なる所定の処理（Ｐｒｏｃｅｓｓｉｎｇ）を行う演算回路に対して、２以上のランダムシードデータＲＳＤｊ，ＲＳＤｉ等を入力して、そのランダム化又はデランダム化とは異なる所定の処理のビット単位の演算結果にランダムシードデータＲＳＤを組み合わせた（すなわちミックスした（具体的には排他的論理和した））結果を出力させることを特徴としている。
【００４４】
図５（ａ）は、所定の処理とランダムシードデータＲＳＤとを組み合わせて処理するＰｒｏｃｅｓｓｉｎｇ＋Ｍｉｘｅｒ（演算部）８０の入出力信号の接続例を示したブロック図である。図５（ｂ）は、図５（ａ）の演算部８０の半導体チップ上での配置例を模式的に示した平面図である。図５（ｃ）は、図５（ｂ）に示した演算部８０が有する複数のビット毎の演算回路８１のうちの１つの内部回路を示したブロック図である。
【００４５】
図５（ａ）に示した演算部８０へは、各３ビットの３２組の信号Ｐ１＜２：０＞、Ｐ２＜２：０＞、…、Ｐ３１＜２：０＞と、各３ビットの１６組の信号Ｑ１＜２：０＞、Ｑ２＜２：０＞、…、Ｑ１５＜２：０＞とが入力される。さらに、演算部８０へは、３２ビットの信号ＲＳＤｊ＜３１：０＞と１６ビットの信号ＲＳＤｉ＜１５：０＞とが入力される。信号ＲＳＤｊ＜３１：０＞と信号ＲＳＤｉ＜１５：０＞とは、図２を参照して説明した疑似乱数発生回路６１と同様の疑似乱数発生回路で発生及び出力されたランダムシードデータＲＳＤに対応する疑似乱数データである。この演算部８０は、これらの入力データに基づいて所定の処理と、その処理結果と疑似乱数データとの組み合わせ処理とからなる演算処理を行って、５１２ビットのデータＰｒｏｃｅｓｓｅｄ  Ｄａｔａ＜５１１：０＞を出力する。
【００４６】
図５（ｂ）に示したように、図５（ａ）に示した演算部８０は、ビット単位の演算結果を出力する５１２個の演算回路８１を有している。５１２個の演算回路８１は、水平方向に３２個、垂直方向に１６個で並び、格子状に配列されている。また、垂直方向に配列された各１６個の演算回路８１に対応させて、３２組の信号線群８２が垂直方向に延設されている。また、水平方向に配列された各３２個の演算回路８１に対応させて、１６組の信号線群８３が水平方向の延設されている。さらに、垂直方向に配列された各１６個の演算回路８１に対応させて、３２組の信号線群８４が垂直方向に延設されている。
【００４７】
３２組の信号線群８２は、それぞれ４ビットの信号を伝送する４本の信号線から構成されている。各信号線群８２は、信号Ｐｎ＜２：０＞と信号ＲＳＤｊ＜ｎ＞（ｎは０から３１までの整数）を含む４ビットの信号を伝送する。１６組の信号線群８３は、それぞれ４ビットの信号を伝送する４本の信号線から構成されている。各信号線群８３は、信号Ｑｍ＜２：０＞と信号ＲＳＤｉ＜ｍ＞（ｍは０から１５までの整数）を含む４ビットの信号を伝送する。そして、３２組の信号線群８４は、それぞれ１６ビットの信号を伝送する１６本の信号線から構成されている。各信号線群８４は、１６個の演算回路８１から１ビットずつ出力された各１６ビットの演算結果を表すデータＰｒｏｃｅｓｓｅｄ  Ｄａｔａ＜１５：０＞、＜３１：１６＞、…、＜５１１：４９６＞を伝送する。
【００４８】
各演算回路８１は、図５（ｃ）に示したように、７個の２入力ＥＯＲ回路ＥＸ１ｃ〜ＥＸ７ｃを有して構成されている。ＥＯＲ回路ＥＸ１ｃには信号Ｐｎ＜０＞と信号Ｐｎ＜１＞とが入力されている。ＥＯＲ回路ＥＸ２ｃには信号Ｐｎ＜２＞と信号Ｑｍ＜０＞とが入力されている。ＥＯＲ回路ＥＸ３ｃには信号Ｑｍ＜１＞と信号Ｑｍ＜２＞とが入力されている。そして、ＥＯＲ回路ＥＸ４ｃには信号ＲＳＤｊ＜ｎ＞と信号ＲＳＤｉ＜ｍ＞とが入力されている。
【００４９】
また、ＥＯＲ回路ＥＸ５ｃにはＥＯＲ回路ＥＸ１ｃの出力とＥＯＲ回路ＥＸ２ｃの出力とが入力されている。ＥＯＲ回路ＥＸ６ｃにはＥＯＲ回路ＥＸ３ｃの出力とＥＯＲ回路ＥＸ４ｃの出力とが入力されている。ＥＯＲ回路ＥＸ７ｃにはＥＯＲ回路ＥＸ５ｃの出力とＥＯＲ回路ＥＸ６ｃの出力とが入力されている。そして、ＥＯＲ回路ＥＸ７ｃの出力は下式で示される演算結果が出力される。下式において、丸印の中にプラスの記号を示したものは、排他的論理和を表している。
【００５０】
【数１】
2014137832.tif 000003
【００５１】
なお、図５（ｃ）に示した演算回路８１では、例えば、信号Ｐｎ＜０＞、Ｐｎ＜１＞及び信号Ｐｎ＜２＞と、信号Ｑｍ＜０＞と、信号Ｑｍ＜１＞及び信号Ｑｍ＜２＞とを、すべて“０”とすると、出力される信号は下式で表されるものとなる。すなわち、信号Ｐｎ＜０＞、Ｐｎ＜１＞及び信号Ｐｎ＜２＞と、信号Ｑｍ＜０＞と、信号Ｑｍ＜１＞及び信号Ｑｍ＜２＞として所定の値（例えば“０”）を入力することで、各演算回路８１は、演算結果としてランダムシードデータＲＳＤに対応した数値信号を出力することができる。
【００５２】
【数２】
2014137832.tif 000004
【００５３】
なお、図５（ｃ）では、信号Ｐｎ＜０＞、Ｐｎ＜１＞、Ｐｎ＜２＞、Ｑｍ＜０＞、Ｑｍ＜１＞、Ｑｍ＜２＞、ＲＳＤｊ＜ｎ＞及びＲＳＤｉ＜ｍ＞から、出力信号Ｐｒｏｃｅｓｓｅｄ  Ｄａｔａを得るまでの遅延は、いずれの信号に対してもＥＯＲ回路３段分である。この構成では、例えば図１２に示した構成では４段分の遅延が発生するのと比べると、遅延時間の短縮が図られている。なお、図１２に示した構成例では、信号Ｐｎ＜０＞、Ｐｎ＜１＞、Ｐｎ＜２＞、Ｑｍ＜０＞、Ｑｍ＜１＞及びＱｍ＜２＞を用いた演算処理の結果と、ＲＳＤｊ＜ｎ＞及びＲＳＤｉ＜ｍ＞を排他的論理和した結果とを組み合わせることで（すなわち排他的論理和することで）演算結果を算出している。
【００５４】
次に、図６〜図１０を参照して、第２実施形態を図１に示したフラッシュメモリ装置１の内部回路として構成する場合に、第２実施形態が特徴とする構成について説明する。図６は、第２実施形態が備える、図１に示した誤り検出訂正回路５０とランダム化及びデランダム化回路６０とを組み合わせた構成を示したブロック図である。図６において、破線で囲んだ誤り検出訂正回路５０ｄが、図１に示した誤り検出訂正回路５０に対応する構成であり、鎖線で囲んだランダム化及びデランダム化回路６０ｄが、図１に示したランダム化及びデランダム化回路６０に対応する構成である。なお、第２実施形態では、誤り訂正符号としてＢＣＨ（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍｃｏｄｅ）符号を用いることとし、外部との間で入出力されるデータと、そのデータ以外の付加データと、ＢＣＨ符号として算出されたパリティとを合計して５１２ビット以内のデータ長を有するデータが処理されることとする。
【００５５】
第２実施形態では、誤り検出訂正回路５０ｄとランダム化及びデランダム化回路６０ｄとのいずれかに含まれる構成として、シンドローム算出回路１０１、誤り係数算出回路１０２、チェン探索部１０３、Ｍｉｘｅｒ（ミキサー回路）１０４、パリティ生成回路１０５及び疑似乱数発生回路６１ｄが設けられている。これらの構成のうち、チェン探索部１０３と、ミキサー回路１０４が、誤り検出訂正回路５０ｄとランダム化及びデランダム化回路６０ｄとの２つの回路で共用されるブロックである。そして、誤り検出訂正回路５０ｄが、シンドローム算出回路１０１、誤り係数算出回路１０２及びパリティ生成回路１０５を含んでいる。また、ランダム化及びデランダム化回路６０ｄが、疑似乱数発生回路６１ｄを含んでいる。
【００５６】
シンドローム算出回路１０１は、メモリセルからのデータ読み出し時に、ページバッファ回路４０からロードしたデータＬｏａｄ  Ｄａｔａ＜５１１：０＞を所定の検査多項式で除算することで複数のシンドロームを算出する。
【００５７】
誤り係数算出回路１０２は、シンドローム算出回路１０１で算出された複数のシンドロームを使用して、誤り位置探索方程式の複数の係数を算出する。この誤り位置探索方程式は、ページバッファ回路４０から読み出されたデータのいずれかのビットに誤りがあるか否かを探索する際にチェン探索部１０３において用いられる。
【００５８】
チェン探索部１０３は、誤り係数算出回路１０２で算出された係数を所定の誤り位置探索方程式に用いることで、エラー検出を行い、エラーが検出された場合に、そのビット位置を表す信号ＥＰ＜５１１：０＞を算出する。ここで、信号ＥＰ＜５１１：０＞は、エラーが検出されたビットを“１”とすることでエラーが検出されたビット位置を示す信号である。また、チェン探索部１０３は、疑似乱数発生回路６１ｄから出力されたランダムシードデータＲＳＤｊ＜３１：０＞とランダムシードデータＲＳＤｉ＜１５：０＞とを入力として、信号ＥＰ＜５１１：０＞をビット単位でＲＳＤと排他的論理和した結果を出力する。ここでＲＳＤは信号ＲＳＤｊ＜３１：０＞と信号ＲＳＤｉ＜１５：０＞とをビット単位で排他的論理和した結果を表す信号である。さらに、チェン探索部１０３は、信号ＥＰ＜５１１：０＞をすべて“０”とする動作モードを有し、その動作モードにおいて信号ＲＳＤｊ＜３１：０＞と信号ＲＳＤｉ＜１５：０＞とに基づいて５１２ビットのランダムシードデータＲＳＤ＜５１１：０＞を生成して出力する。
【００５９】
ミキサー回路１０４は、ページバッファ回路４０から読み出したロードＤａｔａ＜５１１：０＞に対して信号ＥＰ＜５１１：０＞と信号ＲＳＤ＜５１１：０＞とをビット毎に排他的論理和した結果、または、ロードＤａｔａ＜５１１：０＞に対して信号ＲＳＤ＜５１１：０＞をビット毎に排他的論理和することで求めた結果を出力する。ミキサー回路１０４は、例えば図１１（ｂ）に示したように、５１２個の２入力ＥＯＲ回路を用いて構成することができる。
【００６０】
パリティ生成回路１０５は、ミキサー回路１０４でランダム化されたデータに基づいてパリティを生成し、生成したパリティを元のランダム化されたデータに付加してページバッファ回路４０へ出力する。
【００６１】
疑似乱数発生回路６１ｄは、図３（ｂ）を参照して説明した疑似乱数発生回路６１と同様に、疑似乱数データとして、３２ビットの信号であるデータＲＳＤｊ＜３１：０＞と１６ビットの信号であるデータＲＳＤｉ＜１５：０＞とを出力する。
【００６２】
次に、図７及び図８を参照して、図６に示した誤り検出訂正回路５０ｄとランダム化及びデランダム化回路６０ｄの動作例について説明する。なお、各部の動作は、制御ロジック３０等によって制御される。図７のフローチャートは、データのエンコード時、すなわち、データをランダム化してパリティを生成してデータにパリティを付加する際の動作の一例を示している。なお、図７に示したエンコードの動作は、一旦データをページバッファ回路４０へ記憶し、ページバッファ回路４０から読み出したデータに対してランダム化とパリティの付加とを行って、再びページバッファ回路４０へ格納する動作である。また、図６では、エンコード時のデータの流れを実線（エンコードとデコードで共通の流れ）と一点鎖線（エンコードでの流れ）とで示している。一方、図８のフローチャートは、データのデコード時、すなわち、データに対して誤り検出と訂正とを行った後、デランダム化する際の動作の一例を示している。なお、図８に示したデコードの動作は、一旦データをページバッファ回路４０へ記憶し、ページバッファ回路４０から読み出したデータに対して誤り検出と誤り訂正とを行うとともにデランダム化して、再びページバッファ回路４０へ格納する動作である。また、図６では、デコード時のデータの流れを実線（エンコードとデコードで共通の流れ）と破線（デコードでの流れ）とで示している。
【００６３】
図７に示したように、エンコード時には、まずページバッファ回路４０からデータをロードしてミキサー回路１０４に入力する（ステップＳ１１）。次に、チェン探索部１０３から出力したランダムシードデータＲＳＤ＜５１１：０＞をミキサー回路１０４に入力し、ページバッファ回路４０からロードしたＤａｔａ＜５１１：０＞を、入力したランダムシードデータＲＳＤ＜５１１：０＞を用いてランダム化する（ステップＳ１２）。次に、パリティ生成回路１０５が、ミキサー回路１０４から出力されたランダム化されたデータに基づいて所定のパリティデータを生成し、ランダム化されたデータに付加する（ステップＳ１３）。そして、パリティが付加されたデータがページバッファ回路４０へストアされる（ステップＳ１４）。
【００６４】
一方、図８に示したように、デコード時には、まずページバッファ回路４０からデータをロードしてミキサー回路１０４に入力する（ステップＳ２１）。同時に、ロードしたデータをシンドローム算出回路１０１に入力し、さらに誤り係数算出回路１０２及びチェン探索部１０３を用いて、データに誤り在る場合には誤りビットを探索する（ステップＳ２２）。ここで、チェン探索部１０３において、誤りビットの値を“１”とした信号ＥＰ＜５１１：０＞が生成される。さらに、チェン探索部１０３において、データＲＳＤｊ＜３１：０＞とデータＲＳＤｉ＜１５：０＞とを用いて、信号ＥＰ＜５１１：０＞の各ビットがビット単位でランダムシードデータＲＳＤ＜５１１：０＞と排他的論理和されて、信号ＥＰ＜５１１：０＞とランダムシードデータＲＳＤ＜５１１：０＞とをビット単位で組み合わせた（すなわち排他的論理和された）信号が出力される。次に、ミキサー回路１０４が、ロードしたデータＤａｔａ＜５１１：０＞と、信号ＥＰ＜５１１：０＞とランダムシードデータＲＳＤ＜５１１：０＞とをビット単位で排他的論理和したデータとを、さらに組み合わせることで（すなわちさらに排他的論理和することで）、データの誤り訂正とデランダム化とが同時に実行されたデータがミキサー回路１０４から出力される（ステップＳ２３）。そして、ミキサー回路１０４から出力されたデータがページバッファ回路４０へストアされる（ステップＳ２４）。
【００６５】
次に、図９及び図１０を参照して、図６に示したチェン探索部１０３の構成例について説明する。図９は、図６に示したチェン探索部１０３に含まれる構成であって、チェン探索等の処理を行って５１２ビットの演算結果を出力するチェン探索＋Ｍｉｘｅｒ（演算部）２０１の構成例と、その演算部２０１が有する各ビットの演算をビット単位で行う５１２個の演算回路２０２の構成例を説明するためのブロック図である。図９（ａ）に示したように、この構成例では演算部２０１に対して、誤り位置探索方程式の解をビット毎に求める際に使用される数値信号を表すデータとして、３２組の各９ビットの信号ｄｐ０＜８：０＞、ｄｐ１＜８：０＞、…、ｄｐ３１＜８：０＞と、１６組の各９ビットの信号ｄｑ＜８：０＞、ｄｑ１＜８：０＞、…、ｄｑ１５＜８：０＞とが入力される。さらに、演算部２０１には、疑似乱数発生回路６１ｄから出力されたランダムシードデータＲＳＤｊ＜３１：０＞とランダムシードデータＲＳＤｉ＜１５：０＞とが入力される。
【００６６】
図９（ｂ）に示したように、図９（ａ）に示した演算部２０１は、ビット単位の演算結果を出力する５１２個の演算回路２０２を有している。５１２個の演算回路２０２は、水平方向に３２個、垂直方向に１６個で、格子状に配列されている。また、垂直方向に配列された各１６個の演算回路２０２に対応させて、信号ｄｐ０＜８：０＞と信号ＲＳＤｊ＜０＞とをまとめたもの、ｄｐ１＜８：０＞と信号ＲＳＤｊ＜１＞とをまとめたもの、…、ｄｐ３１＜８：０＞と信号ＲＳＤｊ＜３１＞とをまとめたもの、を伝送する３２組の信号線群２０３が垂直方向に延設されている。また、水平方向に配列された各３２個の演算回路２０２に対応させて、信号ｄｑ０＜８：０＞と信号ＲＳＤｉ＜０＞とをまとめたもの、ｄｑ１＜８：０＞と信号ＲＳＤｉ＜１＞とをまとめたもの、…、ｄｑ１５＜８：０＞と信号ＲＳＤｉ＜１５＞とをまとめたものを伝送する１６組の信号線群２０４が水平方向の延設されている。さらに、垂直方向に配列された各１６個の演算回路２０２に対応させて、３２組の各１６ビットの信号線群２０５が垂直方向に延設されている。この３２組の各１６ビットの信号線群２０５によって５１２ビットの信号ＥＰ＜５１１：０＞と疑似乱数データＲＳＤとを排他的論理和下結果、又は、５１２ビットの疑似乱数データＲＳＤ＜５１１：０＞が出力される。
【００６７】
各演算回路２０２は、図９（ｃ）に示したように、チェン探索（チェン探索回路）３０１と、２個の２入力ＥＯＲ回路３０２及び３０３を有して構成されている。チェン探索回路３０１は、各９ビットの信号ｄｐｎ＜８：０＞及び信号ｄｑｍ＜８：０＞とを入力し、信号ｄｐｎ＜８：０＞及び信号ｄｑｍ＜８：０＞をパラメータとして誤り位置探索方程式の解を求めることで、５１２ビットのうちのいずれか１ビットについて誤りの有無を判定する。ここで、ｎは０から３１までの１個の整数、ｍは０から１５までの１個の整数である。チェン探索回路３０１は、誤りがあると判定した場合に、出力ＥＰとして“１”を出力する。一方、ＥＯＲ回路３０２は、各１ビットの信号ＲＳＤｊ＜ｎ＞と信号ＲＳＤｉ＜ｍ＞とを入力し、それらの排他的論理和を求めることで、１ビットのランダム化のための係数信号ＲＳＤを出力する。そして、ＥＯＲ回路３０３は、信号ＥＰと信号ＲＳＤとを排他的論理和した結果を出力する。ここで、信号ＥＰは、図７を参照して説明したエンコード時には“０”となるように制御される。そのため、ＥＯＲ回路３０３は、図８を参照して説明したデコード時にはビットエラーの検出結果をランダム化した信号（信号ＥＰと信号ＲＳＤとを排他的論理和したもの）を出力し、エンコード時には信号ＲＳＤを出力する。
【００６８】
次に、図１０を参照して、図９を参照して説明したチェン探索回路３０１と、図９では示していないその周辺の回路を含む、図６に示したチェン探索部１０３全体の構成例について説明する。図１０に示したように、チェン探索部１０３は、ＳＲＣ  Ｓ  Ｃａｌｃｕｌａｔｏｒ（Ｓ算出部）４０１、Ｐ  Ｃａｌｃｕｌａｔｏｒ（Ｐ算出部）４０２、Ｐ  Ｌａｔｃｈ（Ｐラッチ部）４０３、Ｑ  Ｃａｌｃｕｌａｔｏｒ（Ｑ算出部）４０４、Ｑ  Ｌａｔｃｈ（Ｑラッチ部）４０５、及びチェン探索部２０１を含んでいる。図９（ｂ）に示したようにチェン探索部２０１は、複数の演算回路２０２を含んでいる。複数の演算回路２０２は、チェン探索部２０１において行方向及び列方向にマトリクス状に配置されている。この場合、複数の演算回路２０２は、１６行３２列で（すなわち縦方向に１６個、横方向に３２個で格子状に並んで）配列されている。ただし、演算回路２０２は、行と列のすべての交点あるいは交差点（この場合、１６×３２＝５１２個の点）に設ける必要は無く、誤り検出を行うビットのビット位置や符号化データ列のデータ長（すなわち使用しているビット数）に合わせて適宜省略することができる。
【００６９】
各演算回路２０２は、ビット単位で誤り位置探索方程式の解を求める回路を含んでいる。この誤り位置探索方程式は、Ｐ  Ｌａｔｃｈ４０３から供給されたビット列信号ｄｐｊ（ｊ＝０〜３１のいずれか１つ）と、Ｑ  Ｌａｔｃｈ４０５から供給されたビット列信号ｄｑｋ（ｋ＝０〜１５のいずれか１つ）とに基づいて算出される。そして、ＢＣＨ符号を用いた誤り訂正において、誤り位置探索方程式Λ（ｘ）のｘに代入するガロア体の元αｉ（ｉ＝０、１、２、…、５１１（＝２９−１）のうちのいずれか１つ）を算出する。誤り位置探索方程式Λ（ｘ）は例えばΛ（ｘ）＝ｅ４ｘ４＋ｅ３ｘ３＋ｅ２ｘ２＋ｅ１ｘ１＋ｅ０として表すことができる。ここで、係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０は、シンドローム算出回路１０１が算出したシンドロームに基づいて、誤り係数算出回路１０２によって算出される。各演算回路２０２は、この誤り位置探索方程式Λ（ｘ）に元αｉを代入し、誤り位置探索方程式Λ（ｘ）の解を算出する。
【００７０】
ＳＲＣ  Ｓ  Ｃａｌｃｕｌａｔｏｒ４０１は、誤り係数算出回路１０２から入力された係数ｅ４、ｅ３、ｅ２、ｅ１、ｅ０等を表すデータである数値データａ＜８：０＞、ｂ＜８：０＞、ｃ＜８：０＞、ｄ＜８：０＞、ｅ＜８：０＞、ｓ１＿ｐ２等を入力する。なお、誤り訂正の方式そのものは本実施形態の特徴ではないので、これらの数値データについての詳細の説明は省略する。ＳＲＣ  Ｓ  Ｃａｌｃｕｌａｔｏｒ４０１は、各演算回路２０２がチェン探索の際に誤り位置探索方程式Λ（ｘ）に代入する値を作成する場合に使用されるガロア体ＧＦ（２９）の元の一部を生成し、信号Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６、及びＳ７として出力する。信号Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６、及びＳ７は、それぞれ９ビットの信号である。なお、これらの信号Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６、及びＳ７は、エンコード時には、図９（ｃ）に示した各演算回路２０２内の信号ＥＰが“０”となるように所定の値に設定される。
【００７１】
Ｐ  Ｃａｌｃｕｌａｔｏｒ４０２は、各９ビットの信号Ｓ４、Ｓ５、Ｓ６、及びＳ７に基づいて、各９ビットのビット列信号ｄｐ０、ｄｐ１、ｄｐ２、…、ｄｐ３１を生成して出力する。ビット列信号ｄｐ０、ｄｐ１、ｄｐ２、…、ｄｐ３１は、各９ビットの信号Ｓ４、Ｓ５、Ｓ６、及びＳ７の中から、複数の演算回路２０２が使用する数値データを列単位で、できるだけ少ない本数で供給可能となるように選択、組み合わせたデータである。Ｐ  Ｃａｌｃｕｌａｔｏｒ４０２で算出された信号ｄｐ０、ｄｐ１、…、ｄｐ３１は、Ｐ  Ｌａｔｃｈ４０３へ入力される。Ｐ  Ｌａｔｃｈ４０３には、また、疑似乱数データＲＳＤｊ＜３１：０＞が入力される。Ｐ  Ｌａｔｃｈ４０３は、クロックスキュー調整のため、所定のクロック信号に同期してラッチした信号ｄｐ０と信号ＲＳＤｊ＜０＞とをまとめたもの、信号ｄｐ１と信号ＲＳＤｊ＜１＞とをまとめたもの、信号ｄｐ２と信号ＲＳＤｊ＜２＞とをまとめたもの、…、信号ｄｐ３１と信号ＲＳＤｊ＜３１＞とをまとめたものを出力する。Ｐ  Ｌａｔｃｈ４０３から出力された信号ｄｐ０と信号ＲＳＤｊ＜０＞、信号ｄｐ１と信号ＲＳＤｊ＜１＞、信号ｄｐ２と信号ＲＳＤｊ＜２＞、…、信号ｄｐ３１と信号ＲＳＤｊ＜３１＞は、列方向に敷設された各１０ビットの３２組の信号線群を介して各１６個の演算回路２０２にそれぞれ供給される。
【００７２】
Ｑ  Ｃａｌｃｕｌａｔｏｒ４０４は、各９ビットの信号Ｓ１及びＳ２に基づいて、各９ビットのビット列信号ｄｑ０、ｄｑ１、…、ｄｑ１５を出力する。ビット列信号ｄｑ０、ｄｑ１、…、ｄｑ１５は、各９ビットの信号Ｓ１及びＳ２の中から、複数の演算回路２０２が使用する数値データを行単位で、できるだけ少ない本数で供給可能となるように選択、組み合わせたデータである。Ｑ  Ｃａｌｃｕｌａｔｏｒ４０４で算出された信号ｄｑ０、ｄｑ１、ｄｑ２、…、ｄｑ１５は、Ｑ  Ｌａｔｃｈ４０５へ入力される。Ｑ  Ｌａｔｃｈ４０５には、また、疑似乱数データＲＳＤｉ＜１５：０＞が入力される。Ｑ  Ｌａｔｃｈ４０５は、クロックスキュー調整のため、所定のクロック信号に同期してラッチした信号ｄｑ０と信号ＲＳＤｉ＜０＞とをまとめたもの、信号ｄｑ１と信号ＲＳＤｉ＜１＞とをまとめたもの、信号ｄｑ２と信号ＲＳＤｉ＜２＞とをまとめたもの、…、信号ｑ１５と信号ＲＳＤｉ＜１５＞とをまとめたものを出力する。Ｑ  Ｌａｔｃｈ４０５から出力された信号ｄｑ０と信号ＲＳＤｉ＜０＞、信号ｄｑ１と信号ＲＳＤｉ＜１＞、信号ｄｑ２と信号ＲＳＤｉ＜２＞、…、信号ｑ１５と信号ＲＳＤｉ＜１５＞は、行方向に敷設された各１０ビットの１６組の信号線群を介して各３２個の演算回路２０２に供給される。
【００７３】
ＧＦ（２ｍ）のガロア体を採用した場合、ｎ個の誤りを訂正する回路は、チェン探索で、誤り位置探索方程式Λ（ｘ）＝ｅｎｘｎ＋…＋ｅ２ｘ２＋ｅ１ｘ＋ｅ０の変数ｘに対し、ＧＦ（２ｍ）の各元αｉ（ｉ＝０、１、２、…、２ｍ−１）を代入し、Λ（ｘ）＝０か否かを判定する処理を行う。すなわち、元α０、α１、α２、…、α（２＾ｍ−１）の各値を代入して誤り位置探索方程式Λ（ｘ）の値を算出する。本実施形態のチェン探索部１０３では、各元αｉ（ｉ＝０、１、２、…、２ｍ−１）の値を、複数の演算回路２０２のいずれかに供給している。すなわち、本実施形態によれば、各元αｉ（ｉ＝０、１、２、…、２ｍ−１）を代入した場合の誤り位置探索方程式Λ（ｘ）の値を、複数の演算回路２０２を用いて一括して算出することが可能となる。
【００７４】
以上のように、第２実施形態では、誤り訂正処理に本発明を適用する際に、チェン探索処理とランダム化又はデランダム化の処理を組み合わせることで、ランダムシードデータＲＳＤの信号本数を減らすことが可能である。
【００７５】
なお、本発明の実施の形態は上記のものに限定されず、例えば、各データのビット数を変更したり、ブロック図で示した構成の各ブロックをさらに分割したり、あるいは、複数のブロックを統合したりする変更を適宜行うことができる。
【符号の説明】
【００７６】
１…フラッシュメモリ装置、１０…メモリセルアレイ、２０…行選択回路、３０…制御ロジック、４０…ページバッファ回路、５０、５０ｄ…誤り検出訂正回路、６０、６０ｄ…ランダム化及びデランダム化回路、７０…入出力インターフェース回路、６１、６１ｂ、６１ｄ…疑似乱数発生回路、６２、６２ｂ…ミキサー回路、６５、６５ｂ…配線部、８０、２０１…演算部、８１、２０２…演算回路、８２、８３、２０３、２０４…信号線群、１０３…チェン探索部、１０４…ミキサー回路、３０１…チェン探索回路、Ｍ０００〜Ｍ５１１、Ｍ０００ｂ〜Ｍ５１１ｂ…演算回路、ＥＸ１、ＥＸ２、ＥＸ１ｂ〜ＥＸ３ｂ、ＥＸ１ｃ〜ＥＸ７ｃ、３０２、３０３…排他的論理和回路
【図１】
2014137832.tif 000005
【図２】
2014137832.tif 000006
【図３】
2014137832.tif 000007
【図４】
2014137832.tif 000008
【図５】
2014137832.tif 000009
【図６】
2014137832.tif 000010
【図７】
2014137832.tif 000011
【図８】
2014137832.tif 000012
【図９】
2014137832.tif 000013
【図１０】
2014137832.tif 000014
【図１１】
2014137832.tif 000015
【図１２】
2014137832.tif 000016