(57)【要約】【課題】データの信頼性の向上を低コストで実現可能な半導体装置を提供する。【解決手段】例えば、相補メモリを備えた半導体装置において、書き込み時に、（Ｎ＋１）ビットの正極（Ｐｏｓｉ）データに対してパリティービットを生成し、（Ｎ＋１）ビットの負極（Ｎｅｇａ）データに対してパリティービットを生成する。読み出し時には、正極側および負極側のそれぞれに対してパリティーチェックを行うと共に、正極データと負極データを各ビット番号毎に比較する。ここで、正極データと負極データが同一データとなっているビット番号が存在した場合、正極側のパリティーチェック結果が異常であれば正極データの当該ビット番号を誤データとして特定でき、逆に負極側のパリティーチェック結果が異常であれば負極データの当該ビット番号を誤データとして特定できる。【選択図】図４
2012243332.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ（Ｎは１以上の整数）ビットのデータを記憶し、書き込み時にＮビットの第１書き込みデータが入力され、読み出し時にＮビットの第１読み出しデータを出力するＮ個の第１記憶ノードと、
Ｎビットのデータを記憶し、前記書き込み時にＮビットの第２書き込みデータが入力され、前記読み出し時にＮビットの第２読み出しデータを出力するＮ個の第２記憶ノードと、
前記書き込み時に、Ｎビットの前記第１書き込みデータを対象として第１パリティーデータを生成し、Ｎビットの前記第２書き込みデータを対象として第２パリティーデータを生成するパリティー生成回路と、
前記第１および第２パリティーデータを記憶する第１および第２パリティー記憶ノードと、
エラー処理回路とを備え、
Ｎビットの前記第２書き込みデータは、Ｎビットの前記第１書き込みデータの反転データであり、
前記エラー処理回路は、
Ｎビットの前記第１読み出しデータとＮビットの前記第２読み出しデータの一致・不一致を各ビット番号毎に比較する第１処理と、
Ｎビットの前記第１読み出しデータと前記第１パリティーデータを用いてパリティー判定を行う第２処理と、
Ｎビットの前記第２読み出しデータと前記第２パリティーデータを用いてパリティー判定を行う第３処理と、
前記第１処理で一致するビット番号が１個存在し、かつ前記第２処理の判定結果が異常であり前記第３処理の判定結果が正常な場合に、Ｎビットの前記第１読み出しデータにおける当該ビット番号を誤りと判定し、前記第１処理で一致するビット番号が１個存在し、かつ前記第３処理の判定結果が異常であり前記第２処理の判定結果が正常な場合に、Ｎビットの前記第２読み出しデータにおける当該ビット番号を誤りと判定する第４処理と、
前記第４処理で誤りと判定されたビットを訂正する第５処理とを実行することを特徴とする半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記第１パリティー記憶ノードは、
前記第１パリティーデータを正極で記憶する第１正極パリティー記憶ノードと、
前記第１パリティーデータを負極で記憶する第１負極パリティー記憶ノードとを備え、
前記第２パリティー記憶ノードは、
前記第２パリティーデータを正極で記憶する第２正極パリティー記憶ノードと、
前記第２パリティーデータを負極で記憶する第２負極パリティー記憶ノードとを備え、
前記エラー処理回路の前記第２処理では、前記第１パリティーデータとして前記第１正極パリティー記憶ノードの出力信号と前記第１負極パリティー記憶ノードの出力信号の差動増幅結果が用いられ、
前記エラー処理回路の前記第３処理では、前記第２パリティーデータとして前記第２正極パリティー記憶ノードの出力信号と前記第２負極パリティー記憶ノードの出力信号の差動増幅結果が用いられることを特徴とする半導体装置。
【請求項３】
請求項１記載の半導体装置において、
前記エラー処理回路は、さらに、前記第５処理で訂正が行われる第１の場合か、あるいは前記第１処理で一致するビット番号が存在せず、なおかつ前記第２および第３処理の判定結果が共に正常である第２の場合に第１論理レベルの第１信号を出力し、前記第１および第２の場合以外の場合に第２論理レベルの前記第１信号を出力することを特徴とする半導体装置。
【請求項４】
請求項１記載の半導体装置において、
Ｎ個の前記第１記憶ノードとＮ個の前記第２記憶ノードのそれぞれは、フラッシュメモリセルであることを特徴とする半導体装置。
【請求項５】
メモリユニットを備え、
前記メモリユニットは、
ワード線と、
前記ワード線と交差するＮ（Ｎは１以上の整数）本の第１ビット線、Ｎ本の第２ビット線、第３ビット線、および第４ビット線と、
前記ワード線とＮ本の前記第１ビット線の交点部分にそれぞれ配置されるＮ個の第１メモリセルと、
前記ワード線とＮ本の前記第２ビット線の交点部分にそれぞれ配置されるＮ個の第２メモリセルと、
前記ワード線と前記第３および第４ビット線の交点にそれぞれ配置される第３および第４メモリセルと、
Ｎビットの入力データを対象に第１パリティー書き込みデータを生成し、Ｎビットの前記入力データの反転データとなるＮビットの反転入力データを対象に第２パリティー書き込みデータを生成するパリティー生成回路と、
書き込み動作に伴い前記ワード線が活性化された際に、Ｎビットの前記入力データをＮ本の前記第１ビット線を介してＮ個の前記第１メモリセルに書き込み、Ｎビットの前記反転入力データをＮ本の前記第２ビット線を介してＮ個の前記第２メモリセルに書き込み、前記第１および第２パリティー書き込みデータを前記第３および第４ビット線を介して前記第３および第４メモリセルに書き込む第１制御回路と、
読み出し動作に伴い前記ワード線が活性化された際に、Ｎ個の前記第１メモリセルからＮ本の前記第１ビット線を介して読み出された信号を増幅することでＮビットの第１読み出しデータを出力し、Ｎ個の前記第２メモリセルからＮ本の前記第２ビット線を介して読み出された信号を増幅することでＮビットの第２読み出しデータを出力し、前記第３および第４メモリセルから前記第３および第４ビット線を介して読み出された信号をそれぞれ増幅することで第１および第２パリティー読み出しデータを出力する第２制御回路と、
エラー処理回路とを有し、
前記エラー処理回路は、
Ｎビットの前記第１読み出しデータとＮビットの前記第２読み出しデータの一致・不一致を各ビット番号毎に比較する第１処理と、
Ｎビットの前記第１読み出しデータと前記第１パリティー読み出しデータを用いてパリティー判定を行う第２処理と、
Ｎビットの前記第２読み出しデータと前記第２パリティー読み出しデータを用いてパリティー判定を行う第３処理と、
前記第１処理で一致するビット番号が１個存在し、かつ前記第２処理の判定結果が異常であり前記第３処理の判定結果が正常な場合に、Ｎビットの前記第１読み出しデータにおける当該ビット番号を誤りと判定し、前記第１処理で一致するビット番号が１個存在し、かつ前記第３処理の判定結果が異常であり前記第２処理の判定結果が正常な場合に、Ｎビットの前記第２読み出しデータにおける当該ビット番号を誤りと判定する第４処理と、
前記第４処理で誤りと判定されたビットを訂正する第５処理とを実行することを特徴とする半導体装置。
【請求項６】
請求項５記載の半導体装置において、
前記メモリユニットは、さらに、
前記ワード線と交差する第５および第６ビット線と、
前記ワード線と前記第５および第６ビット線の交点にそれぞれ配置される第５および第６メモリセルとを備え、
前記第１制御回路は、さらに、前記第１パリティー書き込みデータの反転データを前記第５ビット線を介して前記第５メモリセルに書き込み、前記第２パリティー書き込みデータの反転データを前記第６ビット線を介して前記第６メモリセルに書き込み、
前記第２制御回路は、前記第３メモリセルから前記第３ビット線を介して読み出された信号と前記第５メモリセルから前記第５ビット線を介して読み出された信号を差動増幅することで前記第１パリティー読み出しデータを出力し、前記第４メモリセルから前記第４ビット線を介して読み出された信号と前記第６メモリセルから前記第６ビット線を介して読み出された信号を差動増幅することで前記第２パリティー読み出しデータを出力することを特徴とする半導体装置。
【請求項７】
請求項５記載の半導体装置において、
前記第２制御回路は、
Ｎ個の前記第１メモリセルからＮ本の前記第１ビット線を介して読み出された信号を予め定めた第１基準信号を比較対象として増幅するＮ個の第１センスアンプ回路と、
Ｎ個の前記第２メモリセルからＮ本の前記第２ビット線を介して読み出された信号を前記第１基準信号を比較対象として増幅するＮ個の第２センスアンプ回路とを有することを特徴とする半導体装置。
【請求項８】
請求項７記載の半導体装置において、
前記第２制御回路は、さらに、
Ｎ個の前記第１メモリセルからＮ本の前記第１ビット線を介して読み出された信号をＮ個の前記第２メモリセルからＮ本の前記第２ビット線を介して読み出された信号を比較対象として増幅するＮ個の第３センスアンプ回路とを有することを特徴とする半導体装置。
【請求項９】
請求項５記載の半導体装置において、
前記エラー処理回路は、さらに、前記第５処理で訂正が行われる第１の場合か、あるいは前記第１処理で一致するビット番号が存在せず、なおかつ前記第２および第３処理の判定結果が共に正常である第２の場合に第１論理レベルの第１信号を出力し、前記第１および第２の場合以外の場合に第２論理レベルの前記第１信号を出力することを特徴とする半導体装置。
【請求項１０】
請求項５記載の半導体装置において、
Ｎ個の前記第１メモリセル、Ｎ個の前記第２メモリセル、前記第３および第４メモリセルのそれぞれは、フラッシュメモリセルであることを特徴とする半導体装置。
【請求項１１】
請求項１０記載の半導体装置において、
前記半導体装置は、更に、
所定のプログラムを実行する中央処理ユニットと、
前記中央処理ユニットと前記メモリユニットを接続するバスとを備え、
前記メモリユニットは、前記中央処理ユニットの書き込みおよび読み出しアクセス対象であることを特徴とする半導体装置。
【請求項１２】
Ｎ（Ｎは１以上の整数）ビットのデータを記憶し、書き込み時にＮビットの第１書き込みデータが入力され、読み出し時にＮビットの第１読み出しデータを出力するＮ個の第１記憶ノードと、
Ｎビットのデータを記憶し、前記書き込み時にＮビットの第２書き込みデータが入力され、前記読み出し時にＮビットの第２読み出しデータを出力するＮ個の第２記憶ノードと、
エラー処理回路とを備え、
Ｎビットの前記第２書き込みデータは、Ｎビットの前記第１書き込みデータと同一データ又はＮビットの前記第１書き込みデータの反転データであり、
前記エラー処理回路は、Ｎビットの前記第１読み出しデータとＮビットの前記第２読み出しデータの一致・不一致を各ビット番号毎に比較することでエラー有無を判定する第１処理を実行することを特徴とする半導体装置。
【請求項１３】
請求項１２記載の半導体装置において、
前記半導体装置は、さらに、
前記書き込み時に、Ｎビットの前記第１書き込みデータを対象として第１パリティーデータを生成し、Ｎビットの前記第２書き込みデータを対象として第２パリティーデータを生成するパリティー生成回路と、
前記第１および第２パリティーデータを記憶する第１および第２パリティー記憶ノードとを備え、
前記エラー処理回路は、さらに、
Ｎビットの前記第１読み出しデータと前記第１パリティーデータを用いてパリティー判定を行う第２処理と、
Ｎビットの前記第２読み出しデータと前記第２パリティーデータを用いてパリティー判定を行う第３処理と、
前記第１処理でエラーと判定されたビット番号が１個存在し、かつ前記第２処理の判定結果が異常であり前記第３処理の判定結果が正常な場合に、Ｎビットの前記第１読み出しデータにおける当該ビット番号を誤りと判定し、前記第１処理でエラーと判定されたビット番号が１個存在し、かつ前記第３処理の判定結果が異常であり前記第２処理の判定結果が正常な場合に、Ｎビットの前記第２読み出しデータにおける当該ビット番号を誤りと判定する第４処理と、
前記第４処理で誤りと判定されたビットを訂正する第５処理とを実行することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリユニットを備えた半導体装置に関し、特に、２個の記憶素子で１ビットを記憶するメモリユニットを備えた半導体装置に適用して有効な技術に関する。
【背景技術】
【０００２】
例えば特許文献１には、２つのメモリセルに相補的なデータを書き込む半導体不揮発性メモリにおいて、ベリファイ読み出しと通常読み出しを同一のセンスアンプを利用して行う技術が示されている。また、特許文献２には、２つのメモリセル（ツインセル）に相補的なデータを書き込む半導体不揮発性メモリにおいて、複数のツインセルが書き込み状態かブランク状態かを高速に検出する技術が示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２５２２９０号公報
【特許文献２】特開２００９−２７２０２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、マイクロコンピュータ（所謂マイコン）等では、従来のデータ格納用のＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）に代わってフラッシュメモリ等が搭載される場合がある。フラッシュメモリでは、メモリセルの記憶情報となるしきい値電圧（フローティング・ゲートの電荷）が時間経過と共に徐々に変動する。このしきい値電圧を正常な範囲に維持できる期間はデータリテンションと呼ばれる。フラッシュメモリをマイコン等のデータ格納領域として用いた場合、書き換え動作が多く発生し得るが、データリテンションは、特に書き換え回数が多くなると劣化する傾向にある。そこで、書き換え回数が多い場合でもデータ保持特性（データリテンション）を確保するため、特許文献１や特許文献２に示されるような不揮発性の相補型メモリを用いることが有益となる。相補型メモリでは、１ビットのデータを記憶するために２ビットの記憶領域を用い、その一方に正極（ｐｏｓｉｔｉｖｅ）データが記憶され、他方に負極（ｎｅｇａｔｉｖｅ）データが記憶される。読み出し動作時には、正極データと負極データの差分を用いることでデータ保持特性（データの信頼性）をある程度改善することができる。
【０００５】
近年、このような不揮発性の相補型メモリを内蔵したマイコンでは、多様な使用環境に伴い、小領域（例えば数バイト、数ワード等）単位でのアクセス（書き換え、読み出し）がより多く行われるようになってきている。このため、データの信頼性の更なる向上が望まれる。データの信頼性を向上させるためには、例えば、エラー検出やエラー訂正といった技術を用いることが考えられる。このような技術の代表として、データにハミングコード（ＥＣＣ（Error Checking and Correction）コード）を付加することが知られている。しかしながら、この場合、ハミングコードの記憶領域の付加やエラー検出／訂正用の演算回路の付加に伴う面積オーバヘッドが大きく、マイコン等の小型化・低コスト化が図れない恐れがある。
【０００６】
特に、この面積オーバヘッドの問題は、アクセス単位が小さくなるほどより顕著となる。ハミングコードは、検査用ビット数をｎとすると、２ｎ−１のビット数を持つ。すなわち、本来のデータのビット数は、２ｎ−１−ｎである。例えば、８バイト（６４ビット）をアクセス単位とするデータに対しては７ビットのハミングコードを付加する必要があり、記憶領域としては７１／６４倍（約１．１倍）の確保が必要となる。また、２バイト（１６ビット）をアクセス単位とするデータに対しては５ビットのハミングコードを付加する必要があり、記憶領域としては２１／１６倍（約１．３倍）の確保が必要となる。
【０００７】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、データの信頼性の向上を低コストで実現可能な半導体装置（または記憶装置）を提供することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【０００９】
本実施の形態による半導体装置は、Ｎ（Ｎ≧１）個の第１記憶ノードと、Ｎ個の第２記憶ノードと、パリティー生成回路と、第１および第２パリティー記憶ノードと、エラー処理回路とを備える。第１記憶ノードにはＮビットの第１データが書き込まれ、第２記憶ノードには第１データの反転データとなる第２データが書き込まれる。パリティー生成回路は、第１データの書き込みに伴い当該データを対象とした第１パリティーデータを生成し、第２データの書き込みに伴い当該データを対象とした第２パリティーデータを生成する。第１および第２パリティー記憶ノードには、第１および第２パリティーデータがそれぞれ書き込まれる。エラー処理回路は、読み出し動作時に第１〜第５処理を実行する。第１処理では第１記憶ノードからのＮビットの第１読み出しデータと第２記憶ノードからのＮビットの第２読み出しデータとの一致・不一致が各ビット番号毎に判定される。第２処理では、第１読み出しデータと第１パリティーデータを用いてパリティー判定が行われ、第３処理では、第２読み出しデータと第２パリティーデータを用いてパリティー判定が行われる。第４処理では、第１処理で一致するビット番号が１個存在し、かつ第２処理／第３処理の判定結果が異常／正常な場合にＮビットの第１読み出しデータにおける当該ビット番号が誤りと判定される。また、第４処理では、第１処理で一致するビット番号が１個存在し、かつ第３処理／第２処理の判定結果が異常／正常な場合に、Ｎビットの第２読み出しデータにおける当該ビット番号が誤りと判定される。第５処理では、第４処理で誤りと判定されたビットの訂正が行われる。
【００１０】
このような半導体装置を用いることで、データの信頼性を向上させることができ、また、例えばハミングコード等を用いてエラー訂正を行うような場合と比べて、エラー訂正に伴う回路面積のオーバヘッドを抑制でき、低コスト化等が図れる。なお、より望ましくは、第１および第２パリティー記憶ノードのそれぞれを、相補ビット（２ビット）の記憶ノードで構成するとよい。これによって、データの信頼性を更に向上させることが可能になる。また、第１記憶ノードからの読み出し動作と第２記憶ノードからの読み出し動作は、それぞれ個別のセンスアンプ回路等を用いて並行して行うことが望ましい。これによって、エラー処理動作（読み出し動作）の高速化が図れる。
【発明の効果】
【００１１】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、メモリユニットを備えた半導体装置（または記憶装置）において、データの信頼性の向上を低コストで実現可能になる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１による半導体装置（記憶装置）において、それに含まれるメモリユニットの構成例を示す概略図である。
【図２】図１におけるパリティー生成回路の動作例を示す説明図である。
【図３】図１におけるエラー処理回路ブロックの動作例を示すフロー図である。
【図４】（ａ）〜（ｅ）は、図２および図３の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。
【図５】（ａ）〜（ｅ）は、図４（ａ）〜（ｅ）の変形例を示す説明図である。
【図６】本発明の実施の形態２による半導体装置において、その全体構成の一例を示すブロック図である。
【図７】図６の半導体装置において、そのデータ格納用のフラッシュメモリの概略構成例を示す回路ブロック図である。
【図８】図７における各メモリセルの詳細を示すものであり、（ａ）は各メモリセルの詳細な構成例を示す回路図、（ｂ）は（ａ）における各種動作条件の一例を示す説明図、（ｃ）は（ｂ）の動作に伴う各メモリセルのしきい値状態の一例を示す説明図である。
【図９】図７のフラッシュメモリにおけるメモリマットのレイアウト構成例を示す概略図である。
【図１０】図７および図９における各センスアンプ回路ブロック周りの概略構成例を示す回路図である。
【図１１】図１０を変形した各センスアンプ回路ブロック周りの概略構成例を示す回路図である。
【図１２】（ａ）は図７におけるパリティー生成回路の詳細な構成例を示す回路図であり、（ｂ）は（ａ）における加算回路の動作例を示す真理値表である。
【図１３】図７におけるエラー処理回路ブロックの詳細な動作例を示す真理値表である。
【図１４】図７におけるエラー処理回路ブロックの詳細な構成例を示す回路図である。
【図１５】本発明の実施の形態３による半導体装置（記憶装置）において、それに含まれるメモリユニットの構成例を示す概略図である。
【図１６】図１５におけるエラー処理回路ブロックの主要な動作例を示すフロー図である。
【図１７】本発明の実施の形態４による半導体装置（記憶装置）において、それに含まれるメモリユニットの構成例を示す概略図である。
【図１８】図１７におけるエラー処理回路ブロックの動作例を示すフロー図である。
【図１９】（ａ）〜（ｅ）は、図１８の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１４】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１５】
また、実施の形態の各機能ブロックを構成する回路素子は、特に制限されないが、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）等の集積回路技術によって、単結晶シリコンのような半導体基板上に形成される。なお、実施の形態では、ＭＩＳＦＥＴ（Metal Insulator Semiconductor Field Effect Transistor）の一例としてＭＯＳＦＥＴ（Metal Oxide Semiconductor Field Effect Transistor）（ＭＯＳトランジスタと略す）を用いるが、ゲート絶縁膜として非酸化膜を除外するものではない。
【００１６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１７】
（実施の形態１）
《メモリユニットの概略構成および概略動作［１］》
図１は、本発明の実施の形態１による半導体装置（記憶装置）において、それに含まれるメモリユニットの構成例を示す概略図である。図１に示すメモリユニットは、メモリ領域ＭＥＭ１，ＭＥＭ２と、パリティー生成回路ＰＲＴＹＧ１，ＰＲＴＹＧ２と、パリティー用記憶ノードＳＮ１ｐ，ＳＮ２ｐと、エラー処理回路ブロックＥＲＣＢＫ１を備えている。ＭＥＭ１は（Ｎ＋１）ビットの記憶ノードＳＮ１［０］〜ＳＮ１［Ｎ］を備え、ＭＥＭ２は（Ｎ＋１）ビットの記憶ノードＳＮ２［０］〜ＳＮ２［Ｎ］を備える。
【００１８】
ここで、ＭＥＭ１，ＭＥＭ２は、ＭＥＭ１を正極（Ｐｏｓｉ）データ、ＭＥＭ２を負極（Ｎｅｇａ）データとする相補型メモリとなる。また、ここでは、ＳＮ１ｐは記憶ノードＳＮ１ｐｐ，ＳＮ１ｐｎからなる相補ビット（２ビット）で構成され、ＳＮ２ｐは記憶ノードＳＮ２ｐｐ，ＳＮ２ｐｎからなる相補ビットで構成される。ＳＮ１ｐ，ＳＮ２ｐのそれぞれは、場合によっては１ビットで構成することも可能であるが、パリティービットの信頼性を高めるためには、差分によって大きな読み出し信号が得られる相補ビット（２ビット）で構成する方が望ましい。
【００１９】
書き込み動作の際、ＭＥＭ１のＳＮ１［０］〜ＳＮ１［Ｎ］には、それぞれ、（Ｎ＋１）ビットのデータ入力信号ＤＩ［０］〜ＤＩ［Ｎ］（なお便宜上区別無くＤＩ［０：Ｎ］と表記する場合もあり、その他の符号に関しても同様）が記憶される。また、ＭＥＭ２のＳＮ２［０］〜ＳＮ２［Ｎ］には、それぞれ、ＤＩ［０］〜ＤＩ［Ｎ］の反転データ入力信号（／ＤＩ［０］〜／ＤＩ［Ｎ］）が記憶される。ＰＲＴＹＧ１は、ＤＩ［０］〜ＤＩ［Ｎ］を対象としたパリティービットの値を演算し、その値をＳＮ１ｐに書き込む。ＰＲＴＹＧ２は、／ＤＩ［０］〜／ＤＩ［Ｎ］を対象としたパリティービットの値を演算し、その値をＳＮ２ｐに書き込む。
【００２０】
一方、読み出し動作の際、ＭＥＭ１のＳＮ１［０］〜ＳＮ１［Ｎ］の記憶データがプリデータ信号ＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］として読み出され、ＭＥＭ２のＳＮ２［０］〜ＳＮ２［Ｎ］の記憶データがプリデータ信号ＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］として読み出される。ＥＲＣＢＫ１は、これらのプリデータ信号と、ＳＮ１ｐ，ＳＮ２ｐから読み出した信号（パリティービット）を用いて、エラー検出およびエラー訂正を行い、エラー訂正後となる（Ｎ＋１）ビットのデータ出力信号ＤＯ［０］〜ＤＯ［Ｎ］を出力する。
【００２１】
《エラー処理動作［１］》
図２は、図１におけるパリティー生成回路の動作例を示す説明図である。図２に示すように、パリティー生成回路ＰＲＴＹＧ１は、（Ｎ＋１）ビットの正極（Ｐｏｓｉ）データ（ＤＩ［０］〜ＤＩ［Ｎ］）を対象として当該（Ｎ＋１）ビットとパリティービット（ＳＮ１ｐ）内に含まれる「１」情報の合計数が奇数個となるようなパリティービットの値を定める。すなわち、当該（Ｎ＋１）ビット中に含まれる「１」情報の合計数が奇数個の場合にはＳＮ１ｐに「０」情報を書き込み、当該（Ｎ＋１）ビット中に含まれる「１」情報の合計数が偶数個の場合にはＳＮ１ｐに「１」情報を書き込む。
【００２２】
同様に、パリティー生成回路ＰＲＴＹＧ２は、（Ｎ＋１）ビットの負極（Ｎｅｇａ）データ（／ＤＩ［０］〜／ＤＩ［Ｎ］）を対象として当該（Ｎ＋１）ビットとパリティービット（ＳＮ２ｐ）内に含まれる「１」情報の合計数が奇数個となるようなパリティービットの値を定める。このようにして、図２の例では、正極側のＳＮ１ｐが「０」に、負極側のＳＮ２ｐが「１」に定められる。このようなパリティー方式は奇数（ｏｄｄ）パリティー等と呼ばれる。ただし、勿論、奇数（ｏｄｄ）パリティーに限らず、「１」情報の合計数を偶数個に揃える偶数（ｅｖｅｎ）パリティーを用いることも可能である。
【００２３】
図３は、図１におけるエラー処理回路ブロックの動作例を示すフロー図である。図３に示すように、エラー処理回路ブロックＥＲＣＢＫ１は、まず、正極（Ｐｏｓｉ）用のシングルデータ列となるプリデータ信号（図１のＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］）と、正極用のパリティービット（図１のＳＮ１ｐの情報）を読み出し、パリティーチェックを行う（Ｓ１０１）。ここでは、当該パリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｐ）が正常（すなわち、ＰＲＥＤＡＴｐ［０：Ｎ］，ＳＮ１ｐにおける「１」情報の数が奇数個）な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｐ＝０」と表現し、異常（「１」情報の数が偶数個）な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｐ＝１」と表現する。
【００２４】
次いで、ＥＲＣＢＫ１は、負極（Ｎｅｇａ）用のシングルデータ列となるプリデータ信号（図１のＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］）と、負極用のパリティービット（図１のＳＮ２ｐの情報）を読み出し、パリティーチェックを行う（Ｓ１０２）。ここでは、当該パリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｎ）が正常（すなわち、ＰＲＥＤＡＴｎ［０：Ｎ］，ＳＮ２ｐにおける「１」情報の数が奇数個）な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｎ＝０」と表現し、異常（「１」情報の数が偶数個）な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｎ＝１」と表現する。なお、Ｓ１０１，Ｓ１０２では、正極用のデータ列と負極用のデータ列をそれぞれシングルデータ列として別個独立に読み出している点が特徴となっている。すなわち、通常の相補型メモリでは、正極用のデータ列と負極用のデータ列は差動対として一体不可分に読み出され、正極用のデータのみ又は負極用のデータのみを単独で読み出すようなことは通常行われない。
【００２５】
続いて、ＥＲＣＢＫ１は、正極用のプリデータ信号（ＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］）と負極用のプリデータ信号（ＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］）の一致・不一致を各ビット毎に判定する（Ｓ１０３）。全てのビットが不一致であれば、相補データが正常に記憶されていることになるためエラー無しと判定する（Ｓ１０９）。一方、一致するビットが存在する場合には、ＥＲＣＢＫ１は、Ｓ１０１におけるパリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｐ）が異常（「１」）か正常（「０」）かを判定する（Ｓ１０４）。異常であれば、ＥＲＣＢＫ１は、正極用のプリデータ信号の中で、Ｓ１０３で一致したビットが誤データであると判定し（Ｓ１０６）、当該ビットを訂正する（Ｓ１１０）。
【００２６】
また、ＥＲＣＢＫ１は、Ｓ１０４におけるパリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｐ）が正常（「０」）であった場合には、Ｓ１０２におけるパリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  Ｎ）が異常（「１」）か正常（「０」）かを判定する（Ｓ１０５）。異常であれば、ＥＲＣＢＫ１は、負極用のプリデータ信号の中で、Ｓ１０３で一致したビットが誤データであると判定し（Ｓ１０７）、当該ビットを訂正する（Ｓ１１０）。一方、Ｓ１０５の結果が正常であれば、ＥＲＣＢＫ１は、エラーは存在するものの訂正は不可と判定する（Ｓ１０８）。なお、Ｓ１０６，Ｓ１０７，Ｓ１１０では、Ｓ１０３で一致したビットが１ビットである場合を前提とし、複数ビットの場合には、Ｓ１０８の場合と同様にエラーは存在するものの訂正は不可と判定される。
【００２７】
図４（ａ）〜図４（ｅ）は、図２および図３の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。まず、図４（ａ）には、図３のＳ１０９に対応するエラー無しの状態が示されている。ここでは、正極データ（ＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］）と負極データ（ＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］）における各ビットが相補データとなっており、正極データおよび負極データに対するパリティーチェック結果も共に正常である。
【００２８】
図４（ｂ）には、図３のＳ１０６に対応し、正極データ中の１ビットが「０」から「１」に化けた状態が示されている。ここでは、正極データと負極データにおける［０］ビット目が相補データでは無く、正極データに対するパリティーチェック結果が異常となっている。したがって、正極データの［０］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図４（ｃ）には、図３のＳ１０６に対応し、正極データ中の１ビットが「１」から「０」に化けた状態が示されている。ここでは、正極データと負極データにおける［１］ビット目が相補データでは無く、正極データに対するパリティーチェック結果が異常となっている。したがって、正極データの［１］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【００２９】
図４（ｄ）には、図３のＳ１０７に対応し、負極データ中の１ビットが「１」から「０」に化けた状態が示されている。ここでは、正極データと負極データにおける［０］ビット目が相補データでは無く、負極データに対するパリティーチェック結果が異常となっている。したがって、負極データの［０］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図４（ｅ）には、図３のＳ１０７に対応し、負極データ中の１ビットが「０」から「１」に化けた状態が示されている。ここでは、正極データと負極データにおける［１］ビット目が相補データでは無く、負極データに対するパリティーチェック結果が異常となっている。したがって、負極データの［１］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【００３０】
図５（ａ）〜図５（ｅ）は、図４（ａ）〜図４（ｅ）の変形例を示す説明図である。図５（ａ）〜図５（ｅ）は、図４（ａ）〜図４（ｅ）と比較して、正極データに対するパリティービットの値と負極データに対するパリティービットの値が同一値となっている点が異なっている。この点を除いて、図５（ａ）〜図５（ｅ）に示す処理結果は、図４（ａ）〜図４（ｅ）と同様である。
【００３１】
ここで、前述した図２の動作例において、データのビット数（Ｎ＋１）が奇数個の場合、図２および図４（ａ）〜図４（ｅ）に示すように、正常なパリティービットの値として正極側と負極側で異なる値が書き込まれることになる。一方、前述した図２の動作例において、データのビット数（Ｎ＋１）が偶数個の場合、図５（ａ）〜図５（ｅ）に示すように、正常なパリティービットの値として正極側と負極側で同一値が書き込まれることになる。図５（ａ）〜図５（ｅ）は、この図２の動作例におけるデータのビット数（Ｎ＋１）が偶数個である場合を前提とした処理結果の一例を示したものである。多くの場合、データのビット数（パラレルビット数）はバイト（８ビット）の整数倍であるため、奇数個ではなく偶数個を前提とした図５（ａ）〜図５（ｅ）のような処理結果がより現実的に生じ得る。
【００３２】
《本実施の形態１の主要な効果》
以上のように、本実施の形態１の半導体装置（記憶装置）は、正極ビット列および負極ビット列のそれぞれに対するパリティーチェック結果から正極側と負極側のどちらが異常かを特定し、正極ビット列と負極ビット列間の各ビット毎の比較結果から１個のビット番号を特定し、当該特定箇所に対して１ビットのエラー訂正を行う機能を備えている。これによって、データの信頼性を向上させることが可能になる。また、この際に、パリティービットを相補ビットで記憶することで、パリティービットの信頼性が向上することからデータの信頼性の更なる向上が図れる。更に、このようなデータの信頼性の向上効果を低コストで得ることが可能になる。当該低コスト化の効果は、特にアクセス単位のパラレルビット数が少ない場合により有益なものとなる。
【００３３】
すなわち、比較例としてハミングコード（ＥＣＣ）方式を用いた場合、例えば２バイト（１６ビット）（相補時３２ビット）のパラレルデータに対して５ビット（相補時１０ビット）のハミングコードを付加するため、（３２＋１０）／３２倍（約１．３倍）の記憶領域を確保する必要がある。一方、本実施の形態の方式を用いた場合、１６ビット（相補時３２ビット）のパラレルデータに対して正極用の１ビットのパリティービット（相補時２ビット）と負極用の１ビットのパリティービット（相補時２ビット）を加えればよく、パリティービットを相補とした場合、（３２＋４）／３２倍（約１．１倍）の記憶領域を確保すればよい。このように、本実施の形態の方式では、記憶領域の確保に伴う面積オーバヘッドを抑制することができる。更に、パリティービットの生成、パリティーチェック、およびエラー訂正を行う際の処理内容も、図２および図３から判るようにハミングコード（ＥＣＣ）方式を用いる場合と比較して簡素であるため、当該処理に必要な各種処理回路に伴う面積オーバヘッドも十分に抑制される。これらの結果、半導体装置（記憶装置）の小型化や低コスト化が可能になる。
【００３４】
（実施の形態２）
本実施の形態２では、実施の形態１のメモリユニットを備えた半導体装置の更なる具体例について説明する。
【００３５】
《半導体装置の全体構成》
図６は、本発明の実施の形態２による半導体装置において、その全体構成の一例を示すブロック図である。図６には、半導体装置の一例として、例えばＣＭＯＳプロセス等により単結晶シリコンのような１個の半導体チップ上に形成されたマイクロコンピュータＭＣＵが示されている。ＭＣＵは、特に制限されないが、高速バスＨＢＳと低速バス（周辺バス）ＬＢＳの２バス構成を有する。ＨＢＳとＬＢＳは、特に制限されないが、それぞれデータバス、アドレスバス及びコントロールバスを含んでいる。バスを２バス構成に分離することにより、共通バスに全ての回路を共通接続する場合に比べてバスの負荷が軽くなり、高速アクセス動作が実現可能となる。
【００３６】
高速バスＨＢＳには、中央処理ユニットＣＰＵ、ダイレクトメモリアクセスコントローラＤＭＡＣ、バスインタフェース回路ＢＳＩＦ、ランダムアクセスメモリＲＡＭ、および不揮発性メモリモジュールとしてのフラッシュメモリモジュールＦＭＤＬが接続される。ＦＭＤＬは、データ格納用のフラッシュメモリＦＭＤ＿Ｄ、プログラム（コード）格納用のフラッシュメモリＦＭＤ＿Ｃ、高速アクセスポートＨＡＣＳＰ、および低速アクセスポートＬＡＣＳＰを備える。ＦＭＤＬは、ＨＡＣＳＰを介してＨＢＳに接続される。ＣＰＵは、ＲＡＭをワーク領域として用いながら所定の演算処理等を実行する。ＤＭＡＣは、ＣＰＵ等からの命令に基づいて、ＲＡＭとＦＭＤＬとの間のデータ転送を制御する。ＢＳＩＦは、ＨＢＳやＬＢＳの使用権の制御や、ＨＢＳとＬＢＳの間のバスブリッジの制御などを行う。
【００３７】
低速バスＬＢＳには、フラッシュメモリモジュールＦＭＤＬ、フラッシュシーケンサＦＳＥＱ、タイマＴＭＲ、外部入出力ポートＰＯＲＴ１，ＰＯＲＴ２、バスインタフェース回路ＢＳＩＦ、およびクロック生成回路ＰＬＬが接続される。ＦＭＤＬは、低速アクセスポートＬＡＣＳＰを介してＬＢＳに接続される。ＦＳＥＱは、ＦＭＤＬに対するコマンドアクセス制御を行う。ＰＬＬは、ＭＣＵの各種内部クロック信号を生成する。ＰＯＲＴ１，ＰＯＲＴ２は、ＭＣＵの外部端子Ｄｉｎ／Ｄｏｕｔを介して外部との間の通信を制御する。なお、ＭＣＵには、外部端子として更にＸＴＡＬ／ＥＸＴＡＬ、ＳＴＢＹ／ＲＥＳ、Ｖｃｃ／Ｖｓｓが備わっている。ＸＴＡＬ／ＥＸＴＡＬには、例えば水晶振動子が接続されるか或いは外部クロック信号が供給され、ＰＬＬは当該端子を用いて動作を行う。ＳＴＢＹはスタンバイ状態を指示する外部ハードウェアスタンバイ端子、ＲＥＳはリセットを指示する外部リセット端子、Ｖｃｃは外部電源電圧端子、Ｖｓｓは外部接地電源電圧端子である。
【００３８】
ここで、例えばＣＰＵとＦＭＤＬ内のＦＭＤ＿Ｃ又はＦＭＤ＿Ｄとの間では、ＨＢＳおよびＨＡＣＳＰを介して高速な読み出しアクセス動作が可能となっている。また、例えばＣＰＵとＦＭＤＬ内のＦＭＤ＿Ｄとの間では、ＬＢＳ、ＦＳＥＱ、およびＬＡＣＳＰを介した書き込みアクセス動作等が可能となっている。このようにＦＭＤＬは、ＣＰＵ（又はＤＭＡＣ）の読み出し・書き込みアクセス対象とされ、ＣＰＵは、例えば一時的なデータ等をＲＡＭに、次回の電源投入後に使用するデータ等をＦＭＤ＿Ｄに格納しながら、ＦＭＤ＿Ｃから読み出したコードを適宜実行する。なお、実際のフラッシュメモリでは、書き込み動作に伴い数ステップの処理が必要とされるため、ここではＦＳＥＱがＣＰＵからＦＭＤ＿Ｄに向けた書き込み命令を受け、ＦＳＥＱがＦＭＤ＿Ｄの書き込み動作に必要な各種処理（例えば、消去動作、書き込み動作、ベリファイ動作）を時系列的に制御する。ＦＳＥＱは、ここではＦＭＤＬの外部に備わっているがＦＭＤＬの内部に備わっていてもよい。また、特に限定はされないが、ＦＭＤ＿Ｃは数百キロバイト以上の容量値を備え、ＦＭＤ＿Ｄは数十キロバイト以下の容量値を備える。
【００３９】
例えば、図６に示したようなマイクロコンピュータＭＣＵでは、ＣＰＵ（あるいはＤＭＡＣ）等からデータ格納用のフラッシュメモリＦＭＤ＿Ｄに向けて小領域（例えば数バイト）のアクセス単位で多数の書き込みアクセスが生じる場合がある。これに伴い、ＦＭＤ＿Ｄではデータリテンションが劣化する恐れがあるため、ＦＭＤ＿Ｄは相補メモリやエラー訂正機能を備えることが有益となる。ただし、この場合、面積オーバヘッドの増大が懸念されるが、通常、ＦＭＤ＿ＤはＦＭＤ＿Ｃに比べて小容量であるため、ある程度は許容可能である。一方、ＦＭＤ＿Ｃは、実動作上、コード格納用のＲＯＭ（Read Only Memory）として用いられるため、ＦＭＤ＿Ｄに比べてデータリテンションの劣化が生じ難く、また、ＦＭＤ＿Ｄに比べて大容量であるため小面積化に重点をおいたシングルメモリ等であってもよい。
【００４０】
《フラッシュメモリの全体構成》
図７は、図６の半導体装置において、そのデータ格納用のフラッシュメモリの概略構成例を示す回路ブロック図である。図８は、図７における各メモリセルの詳細を示すものであり、図８（ａ）は各メモリセルの詳細な構成例を示す回路図、図８（ｂ）は図８（ａ）における各種動作条件の一例を示す説明図、図８（ｃ）は図８（ｂ）の動作に伴う各メモリセルのしきい値状態の一例を示す説明図である。図７に示すフラッシュメモリＦＭＤ＿Ｄは、メモリマットＭＭＡＴ、行デコード回路ＲＤＥＣ１，ＲＤＥＣ２、列デコード回路ＣＤＥＣ、書き込みデータラッチ回路ＷＬＴ、書き込み列選択回路ＷＳＥＬ、ベリファイ回路ＶＲＦＹ、入出力バッファ回路ＩＯＢＦ、出力バッファ回路ＯＢＦ、および内部電源生成回路ＶＧを備えている。
【００４１】
ＭＭＡＴは、１ビットの情報を相補（正極、負極）で記憶する２個のメモリセルＭＣ１，ＭＣ２と、正極用の各メモリセルに対するパリティービットを相補で記憶する２個のメモリセルＭＣｐ１，ＭＣｐ２と、負極用の各メモリセルに対するパリティービットを相補で記憶する２個のメモリセルＭＣｎ１，ＭＣｎ２を備えている。各メモリセル（ＭＣ１，ＭＣ２，ＭＣｐ１，ＭＣｐ２，ＭＣｎ１，ＭＣｎ２）は、例えば、図８（ａ）に例示されるスプリットゲート型フラッシュメモリ素子とされる。このメモリ素子は、ソース・ドレイン領域の間のチャネル形成領域の上にゲート絶縁膜を介して配置されたコントロールゲートＣＧとメモリゲートＭＧを有し、メモリゲートとゲート絶縁膜の間にはシリコンナイトライド等の電荷トラップ領域（ＳｉＮ）が配置されて構成される。ＣＧ側のソース又はドレイン領域はビット線ＢＬに接続され、ＭＧ側のソース又はドレイン領域はソース線ＳＬに接続される。
【００４２】
図８（ｂ）に示すように、メモリセルのしきい値電圧（Ｖｔｈ）を下げる際には、ＢＬ＝１．５Ｖ、ＣＧ＝０Ｖ、ＭＧ＝−１０Ｖ、ＳＬ＝６Ｖ、ウェル領域ＷＥＬＬ＝０Ｖとされる。これによって、ＷＥＬＬとＭＧ間の高電界によって電荷トラップ領域（ＳｉＮ）からＷＥＬＬに電子が引き抜かれる。この処理単位はＭＧを共有する複数メモリセルとされる。メモリセルのＶｔｈを上げる際には、ＢＬ＝０Ｖ、ＣＧ＝１．５Ｖ、ＭＧ＝１０Ｖ、ＳＬ＝６Ｖ、ＷＥＬＬ＝０Ｖとされる。これによって、ＳＬからＢＬに書き込み電流が流れ、それによってＣＧとＭＧの境界部分で発生するホットエレクトロンが電荷トラップ領域（ＳｉＮ）に注入される。電子の注入はＢＬに電流を流すか否かによって決まるため、この処理はビット単位で制御される。読み出しの際には、ＢＬ＝１．５Ｖ、ＣＧ＝１．５Ｖ，ＭＧ＝０Ｖ、ＳＬ＝０Ｖ、ＷＥＬＬ＝０Ｖとされる。メモリセルのＶｔｈが低ければメモリセルはオン状態にされ、高ければオフ状態にされる。また、ここでは、メモリセルのＶｔｈを下げる動作を消去動作とし、メモリセルのＶｔｈを上げる動作を書き込み動作としている。
【００４３】
なお、メモリ素子は、このようなスプリットゲート型フラッシュメモリ素子に限定されず、例えば広く知られているスタックド・ゲート型フラッシュメモリ素子であってよい。このメモリ素子はソース・ドレイン領域の間のチャネル形成領域の上にゲート絶縁膜を介してフローティングゲート（ＦＧ）とコントロールゲート（ＣＧ）がスタックされて構成される。このようなメモリ素子では、例えば、ホットキャリア書き込み方式によってしきい値電圧を上げる動作が行われ、ウェル領域（ＷＥＬＬ）への電子の放出によってしきい値電圧を下げる動作が行われる。また、例えば、ＦＮトンネル書き込み方式によってしきい値電圧を上げる動作が行われ、ビット線（ＢＬ）への電子の放出によって閾値電圧を下げる動作が行われる。
【００４４】
相補ビット（ツインセル）となるメモリセルＭＣ１，ＭＣ２は、例えば図８（ｃ）に示すような状態で‘０’または‘１’の情報（データ）を記憶する。すなわち、ＭＣ１，ＭＣ２に対してデータを書き込む際には、まず図８（ｂ）で述べた消去動作によってＭＣ１，ＭＣ２が共に初期状態（Ｖｔｈが低い状態）とされる。この状態から‘１’データを書き込む際には、負極用となるＭＣ２に対して図８（ｂ）で述べた書き込み動作が行われる。その結果、ＭＣ１が初期状態、ＭＣ２が書き込み状態（Ｖｔｈが高い状態）となり、この状態がデータ‘１’に対応する。一方、ＭＣ１，ＭＣ２の初期状態から‘０’データを書き込む際には、正極用となるＭＣ１に対して図８（ｂ）で述べた書き込み動作が行われる。その結果、ＭＣ２が初期状態、ＭＣ１が書き込み状態となり、この状態がデータ‘０’に対応する。なお、ここでは、正極側においてＶｔｈが低い状態をデータ‘１’とし、Ｖｔｈが高い状態をデータ‘０’としたが、勿論、データ‘０’と‘１’の対応関係を入れ替えることも可能である。
【００４５】
図７のメモリマットＭＭＡＴにおいて、ＭＣ１，ＭＣ２，ＭＣｐ１，ＭＣｐ２，ＭＣｎ１，ＭＣｎ２のメモリゲートＭＧは、共通のメモリゲート選択線ＭＧＬに接続され、コントロールゲートＣＧは共通のワード線ＷＬに接続され、ソースノードは共通のソース線ＳＬに接続される。ここでは、データ用のメモリセルとして代表的に、１個のツインセル（ＭＣ１，ＭＣ２）を示したが、実際には、同一のＭＧＬ，ＷＬ，ＳＬに複数（例えば図１における（Ｎ＋１）ビット分）のツインセルが接続される。また、ここでは、１本のＭＧＬ，ＷＬ，ＳＬを示しているが、実際には、当該ＭＧＬ，ＷＬ，ＳＬに並んで複数本のＭＧＬ，ＷＬ，ＳＬが順次配置され、これらのそれぞれに対して複数のツインセルおよびパリティー用のメモリセル（ＭＣｐ１，ＭＣｐ２，ＭＣｎ１，ＭＣｎ２）が接続される。
【００４６】
ＭＣ１，ＭＣ２，ＭＣｐ１，ＭＣｐ２，ＭＣｎ１，ＭＣｎ２は、それぞれ異なるサブビット線ＳＢＬに接続され、サブビット線選択回路ＢＳＥＬを介してそれぞれ異なる書き込み系メインビット線ＷＭＢＬに接続される。また、ＭＣ１のサブビット線ＳＢＬは読み出し列選択回路ＲＳＥＬを介してセンスアンプ回路ＳＡ１の差動入力端子の一方に接続され、ＭＣ２のＳＢＬはＲＳＥＬを介してＳＡ１の差動入力端子の他方に接続される。なお、ＳＡ１周りは、詳細は後述するが、図３で述べたように正極側と負極側をそれぞれシングルデータ列として読み出せるようにするため、工夫がなされている。
【００４７】
ＭＣｐ１のＳＢＬはＲＳＥＬを介してセンスアンプ回路ＳＡ２の差動入力端子の一方に接続され、ＭＣｐ２のＳＢＬはＲＳＥＬを介してＳＡ２の差動入力端子の他方に接続される。ＭＣｎ１のＳＢＬはＲＳＥＬを介してセンスアンプ回路ＳＡ３の差動入力端子の一方に接続され、ＭＣｎ２のＳＢＬはＲＳＥＬを介してＳＡ３の差動入力端子の他方に接続される。このように、パリティービットを相補ビット（ツインセル）で記憶し、センスアンプ回路を用いて差動で読み出すことで、パリティービットの信頼性を向上させることが可能になる。すなわち、ツインセルの情報を差動で判定することで、例えばシングルセルの情報を中間レベルを基準として判定する場合と比べてマージンが大きくなり、その分だけパリティービットの信頼性（データ保持特性）が向上する。なお、パリティービットは、相補ビット（ツインセル）で構成することが望ましいが、場合によってシングルビット（シングルセル）で構成することも可能である。この場合、信頼性が低下するものの、面積オーバヘッドの抑制が図れる。
【００４８】
ワード線ＷＬは、行デコード回路ＲＤＥＣ１によって駆動され、メモリゲート選択線ＭＧＬ、ソース線ＳＬおよびサブビット線選択回路ＢＳＥＬの選択信号は、行デコード回路ＲＤＥＣ２によって駆動される。ＲＤＥＣ１，ＲＤＥＣ２における選択動作は、読み出しアクセス時には図６のＨＡＣＳＰに供給されるアドレス情報等に従い、データの書き込み動作および消去動作では図６のＬＡＣＳＰに供給されるアドレス情報等に従う。各センスアンプ回路ＳＡ１〜ＳＡ３の出力信号は、それぞれ異なる読み出し系メインビット線ＲＭＢＬに接続される。なお、実際には、ＳＡ１およびこれに対応するＲＭＢＬは、データのアクセス単位となるパラレルビット数（図１では（Ｎ＋１）ビット分）が設けられる。
【００４９】
出力バッファ回路ＯＢＦは、エラー処理回路ブロックＥＲＣＢＫを備える。ＥＲＣＢＫは、前述したメモリマットＭＭＡＴ内のＳＡ１〜ＳＡ３からの出力信号をＲＭＢＬを介して受け、図３で述べたような処理を行うことでエラー検出・エラー訂正を行う。すなわち、詳細は後述するが、ＥＲＣＢＫは、ＳＡ１を介してＭＣ１を含む正極側のデータ列とＭＣ２を含む負極側のデータ列を取得し、ＳＡ２を介して当該正極側のデータ列に対するパリティービット値を取得し、ＳＡ３を介して当該負極側のデータ列に対するパリティービット値を取得する。そして、ＥＲＣＢＫは、当該データ列に１ビットのエラーが存在する場合には当該エラーを訂正し、訂正後のデータ出力信号ＤＯ［０］〜ＤＯ［Ｎ］を図６の高速アクセスポートＨＡＣＳＰを介して高速バスＨＢＳに出力する。
【００５０】
書き込みデータラッチ回路ＷＬＴは、各書き込み系メインビット線ＷＭＢＬにそれぞれ接続されるラッチ回路ＬＴ１，ＬＴ２，ＬＴｐ１，ＬＴｎ１を備え、当該ラッチ回路のラッチデータに基づいて各ＷＭＢＬに対して選択的に書き込み電流を流す。なお、図７のＷＬＴでは、ＭＣｐ２のＷＭＢＬに接続されるラッチ回路（ＬＴｐ２とする）とＭＣｎ２のＷＭＢＬに接続されるラッチ回路（ＬＴｎ２とする）の記載を省略しているが、実際には存在する。書き込み列選択回路ＷＳＥＬは、ＷＬＴ内の各ラッチ回路を選択的に入出力バッファ回路ＩＯＢＦに接続すると共に、各ラッチ回路に接続されたＷＭＢＬを選択的にベリファイ回路ＶＲＦＹに接続する。この際の選択信号は、列デコード回路ＣＤＥＣによって生成される。ＣＤＥＣの選択動作は、図６の低速アクセスポートＬＡＣＳＰに供給されるアドレス情報等に従う。
【００５１】
ベリファイ回路ＶＲＦＹは、各ＷＭＢＬにそれぞれ接続されたベリファイ用センスアンプ回路ＶＳＡを備え、各ＶＳＡのベリファイ結果はＩＯＢＦに出力される。ＩＯＢＦは、パリティー生成回路ＰＲＴＹＧを備え、図６の低速バスＬＢＳから低速アクセスポートＬＡＣＳＰを介してデータ入力信号ＤＩ［０］〜ＤＩ［Ｎ］が入力され、またＬＡＣＳＰを介してＬＢＳに向けてデータ出力信号ＤＯ［０］〜ＤＯ［Ｎ］を出力する。ＰＲＴＹＧは、ＤＩ［０］〜ＤＩ［Ｎ］を受けて正極用および負極用のパリティービット値を生成する。内部電源生成回路ＶＧは、読み出し動作、書き込み動作、消去動作に必要な各種動作電源を生成する。
【００５２】
《フラッシュメモリの全体動作》
図７のフラッシュメモリＦＭＤ＿Ｄに対する書き込み動作および読み出し動作について簡単に説明する。まず、書き込み動作を行う際には、予め図６のフラッシュシーケンサＦＳＥＱの命令に応じてＦＭＤ＿Ｄが図８（ｂ）に示したような消去動作を行い、メモリセルＭＣ１，ＭＣ２，ＭＣｐ１，ＭＣｐ２，ＭＣｎ１，ＭＣｎ２のしきい値電圧Ｖｔｈを図８（ｃ）に示すような低い状態にしておく。次いで、ＦＳＥＱの命令に応じて、入出力バッファ回路ＩＯＢＦが、データ入力信号ＤＩ［０］〜ＤＩ［Ｎ］に基づいて書き込みデータラッチ回路ＷＬＴ内の各ラッチ回路の値を設定する。例えば、ＤＩ［０］に対応するツインセルがＭＣ１，ＭＣ２であるものとして、ＤＩ［０］が‘１’の場合にはラッチ回路ＬＴ１に‘１’が設定され、ラッチ回路ＬＴ２に‘０’が設定される。逆に、ＤＩ［０］が‘０’の場合にはＬＴ１に‘０’が設定され、ＬＴ２に‘１’が設定される。また、ラッチ回路ＬＴｐ１，ＬＴｎ１には、パリティー生成回路ＰＲＴＹＧによって生成されたパリティービット値がそれぞれ設定され、ラッチ回路ＬＴｐ２，ＬＴｎ２（図示せず）には当該パリティービット値を反転した値が設定される。
【００５３】
ここで、‘０’が設定されたラッチ回路は、対応する書き込み系メインビット線ＷＭＢＬに対して書き込み電流を所定の期間供給し、‘１’が設定されたラッチ回路は、対応するＷＭＢＬに対して書き込み電流の供給を行わない。したがって、例えばＤＩ［０］が‘１’の場合には、ＬＴ２がＭＣ２を対象にＷＭＢＬおよびサブビット線選択回路ＢＳＥＬを介して書き込み電流を供給し、その結果、ＭＣ２のＶｔｈが上昇する。続いて、ＦＳＥＱの命令に応じてベリファイ動作が行われる。ベリファイ動作では、ＭＣ１，ＭＣ２，ＭＣｐ１，ＭＣｐ２，ＭＣｎ１，ＭＣｎ２の記憶データがＢＳＥＬおよび各ＷＭＢＬを介して読み出される。各ＷＭＢＬに読み出されたデータはベリファイ用センスアンプ回路ＶＳＡによって判定され、書き込み電流が供給されたメモリセル（対応するラッチ回路に‘０’が設定されたメモリセル）のＶｔｈが十分なレベルに達したかが検証される。この検証結果は、ＩＯＢＦを介してＦＳＥＱに通知され、仮に十分なレベルに達していない場合にはＦＳＥＱの命令に応じて再度書き込み電流の供給が行われる。このような動作の結果、図８（ｃ）に示したような書き込み状態が実現される。
【００５４】
一方、読み出し動作を行う際には、ＭＣ１，ＭＣ２の記憶データが読み出し列選択回路ＲＳＥＬを介してセンスアンプ回路ＳＡ１に入力され、ＭＣｐ１，ＭＣｐ２の記憶データがＲＳＥＬを介してセンスアンプ回路ＳＡ２に入力され、ＭＣｎ１，ＭＣｎ２の記憶データがＲＳＥＬを介してセンスアンプ回路ＳＡ３に入力される。ＳＡ１〜ＳＡ３は、当該入力信号を差動増幅し、読み出し系メインビット線ＲＭＢＬに出力を行う。出力バッファ回路ＯＢＦ内のエラー処理回路ブロックＥＲＣＢＫは、当該ＲＭＢＬの情報に基づいてエラー検出・エラー訂正を行い、高速バスＨＢＳに向けてデータ出力信号ＤＯ［０］〜ＤＯ［Ｎ］を出力する。
【００５５】
《フラッシュメモリのメモリマット構成》
図９は、図７のフラッシュメモリにおけるメモリマットのレイアウト構成例を示す概略図である。図９に示すように、メモリマットＭＭＡＴは、複数のメモリアレイＭＡＲＹｊ［０，０］〜ＭＡＲＹｊ［Ｍ，Ｎ＋２］，ＭＡＲＹｋ［０，０］〜ＭＡＲＹｋ［Ｍ，Ｎ＋２］および複数のセンスアンプ回路ブロックＳＡＢＫ［０，０］〜ＳＡＢＫ［Ｍ，Ｎ＋２］を備えている。ＳＡＢＫ［０，０］〜ＳＡＢＫ［Ｍ，Ｎ＋２］は、ワード線の配列方向を行、ビット線（サブビット線）の配列方向を列として、アレイ状に「（Ｍ＋１）行×（Ｎ＋３）列」で配置される。同様に、ＭＡＲＹｊ［０，０］〜ＭＡＲＹｊ［Ｍ，Ｎ＋２］はアレイ状に「（Ｍ＋１）行×（Ｎ＋３）列」で配置され、ＭＡＲＹｋ［０，０］〜ＭＡＲＹｋ［Ｍ，Ｎ＋２］は、アレイ状に「（Ｍ＋１）行×（Ｎ＋３）列」で配置される。この際に、ＭＡＲＹｊ［０，０］とＭＡＲＹｋ［０，０］はＳＡＢＫ［０，０］を行方向で挟む形で配置され、ＭＡＲＹｊ［０，１］とＭＡＲＹｋ［０，１］はＳＡＢＫ［０，１］を行方向で挟む形で配置され、以降同様にしてＭＡＲＹｊ［Ｍ，Ｎ＋２］とＭＡＲＹｋ［Ｍ，Ｎ＋２］はＳＡＢＫ［Ｍ，Ｎ＋２］を行方向で挟む形で配置される。
【００５６】
この内、「（Ｍ＋１）行×（Ｎ＋１）列」でそれぞれ配置されるＭＡＲＹｊ［０，０］〜ＭＡＲＹｊ［Ｍ，Ｎ］，ＭＡＲＹｋ［０，０］〜ＭＡＲＹｋ［Ｍ，Ｎ］とＳＡＢＫ［０，０］〜ＳＡＢＫ［Ｍ，Ｎ］は、データ領域となる。一方、「（Ｍ＋１）行×２列」でそれぞれ配置されるＭＡＲＹｊ［０，Ｎ＋１］〜ＭＡＲＹｊ［Ｍ，Ｎ＋２］，ＭＡＲＹｋ［０，Ｎ＋１］〜ＭＡＲＹｋ［Ｍ，Ｎ＋２］とＳＡＢＫ［０，Ｎ＋１］〜ＳＡＢＫ［Ｍ，Ｎ＋２］は、パリティー領域となる。この２列分のパリティー領域の内、（Ｎ＋１）列側の領域は正極（Ｐｏｓｉ）用であり、（Ｎ＋２）列側の領域は負極（Ｎｅｇａ）用である。
【００５７】
このような構成において、データ用およびパリティー用の各メモリアレイは、Ｘ本（例えば２５６本）のワード線ＷＬと、当該ワード線と交差するように配置されるＹ本（例えば３２本）のサブビット線ＳＢＬと、ＷＬとＳＢＬの交点に配置されるメモリセルとを備えている。ＷＬは、同一行に配置されたメモリアレイを横断するように列方向に向けて延伸する。例えば、読み出し動作の際に、同一行となるＭＡＲＹｊ［０，０］〜ＭＡＲＹｊ［０，Ｎ＋２］上に配置される１本のＷＬが活性化されると、当該ＷＬに接続される複数のメモリセルが選択される。また、このＷＬで選択された複数のメモリセルの内、図７の読み出し列選択回路ＲＳＥＬを介して、データ用のＭＡＲＹｊ［０，０］〜ＭＡＲＹｊ［０，Ｎ］のそれぞれの中から１個のツインセル（ＭＣ１，ＭＣ２）が選択される。更にこれに加えて、ＲＳＥＬを介して、パリティー（正極）用のＭＡＲＹｊ［０，Ｎ＋１］の中から１個のツインセル（ＭＣｐ１，ＭＣｐ２）が選択され、パリティー（負極）用のＭＡＲＹｊ［０，Ｎ＋２］の中から１個のツインセル（ＭＣｎ１，ＭＣｎ２）が選択される。
【００５８】
このようにしてデータ用の各ＭＡＲＹｊ［０，０］〜ＭＡＲＹｊ［０，Ｎ］から出力されたツインセルの情報は、当該メモリアレイに隣接配置されたセンスアンプ回路ブロックＳＡＢＫ［０，０］〜ＳＡＢＫ［０，Ｎ］内のセンスアンプ回路ＳＡ１でそれぞれ増幅され、対応する読み出し系メインビット線ＲＭＢＬ［０］〜ＲＭＢＬ［Ｎ］を介して出力される。このＲＭＢＬ［０］〜ＲＭＢＬ［Ｎ］の信号によって、図１における（Ｎ＋１）ビット分のパラレルデータ（ＰＲＥＤＡＴｐ［０：Ｎ］，ＰＲＥＤＡＴｎ［０：Ｎ］）が得られる。一方、パリティー（正極）用のＭＡＲＹｊ［０，Ｎ＋１］から出力されたツインセルの情報は、当該メモリアレイに隣接配置されたＳＡＢＫ［０，Ｎ＋１］内のＳＡ２で増幅され、ＲＭＢＬ［Ｎ＋１］を介して出力される。同様に、パリティー（負極）用のＭＡＲＹｊ［０，Ｎ＋２］から出力されたツインセルの情報は、当該メモリアレイに隣接配置されたＳＡＢＫ［０，Ｎ＋２］内のＳＡ３で増幅され、ＲＭＢＬ［Ｎ＋２］を介して出力される。これによって、図１における正極用のパリティービット（ＳＮ１ｐ）の値と負極用のパリティービット（ＳＮ２ｐ）の値が得られる。
【００５９】
なお、ＲＭＢＬ［０］〜ＲＭＢＬ［Ｎ＋２］のそれぞれは、同一列に配置されたセンスアンプ回路ブロックを横断するように行方向に向けて延伸する。例えば、同一列となるＳＡＢＫ［０，０］〜ＳＡＢＫ［Ｍ，０］上にはＲＭＢＬ［０］が配置され、同様に、同一列となるＳＡＢＫ［０，Ｎ］〜ＳＡＢＫ［Ｍ，Ｎ］上にはＲＭＢＬ［Ｎ］が配置される。ＲＭＢＬ［０］には、ＳＡＢＫ［０，０］〜ＳＡＢＫ［Ｍ，０］内にそれぞれ含まれるＳＡ１の出力ノードが共通に接続され、同様に、ＲＭＢＬ［Ｎ］には、ＳＡＢＫ［０，Ｎ］〜ＳＡＢＫ［Ｍ，Ｎ］内にそれぞれ含まれるＳＡ１の出力ノードが共通に接続される。例えば、ＲＭＢＬ［０］を例として、読み出し動作時には１本のＷＬの活性化に応じてＳＡＢＫ［０，０］〜ＳＡＢＫ［Ｍ，０］内における各ＳＡ１のいずれか１個の出力がＲＭＢＬ［０］に出力され、他の出力はハイインピーダンス状態に制御される。また、各センスアンプ回路ブロックは、行方向に隣接配置された２個のメモリアレイを対象に増幅動作等を行う。例えば、ＭＡＲＹｊ［０，０］からのツインセル情報はＳＡＢＫ［０，０］で増幅され、ＭＡＲＹｋ［０，０］からのツインセル情報も同じくＳＡＢＫ［０，０］で増幅される。
【００６０】
《センスアンプ回路ブロック周りの構成［１］》
図１０は、図７および図９における各センスアンプ回路ブロック周りの概略構成例を示す回路図である。図１０に示すように、センスアンプ回路ブロックＳＡＢＫａ（例えば図９のＳＡＢＫ［０，０］）には、隣接する一方のメモリアレイ（例えば図９のＭＡＲＹｊ［０，０］）からの複数（ここでは３２本）のサブビット線ＳＢＬｊ０＜０＞〜ＳＢＬｊ０＜１５＞，ＳＢＬｊ１＜０＞〜ＳＢＬｊ１＜１５＞が接続される。更に、当該ＳＡＢＫａ（例えばＳＡＢＫ［０，０］）には、隣接する他方のメモリアレイ（例えば図９のＭＡＲＹｋ［０，０］）からの複数（ここでは３２本）のサブビット線ＳＢＬｋ０＜０＞〜ＳＢＬｋ０＜１５＞，ＳＢＬｋ１＜０＞〜ＳＢＬｋ１＜１５＞が接続される。
【００６１】
この例では、一方のメモリアレイに対応するＳＢＬｊ０＜０＞〜ＳＢＬｊ０＜７＞，ＳＢＬｊ１＜０＞〜ＳＢＬｊ１＜７＞が当該メモリアレイ内における正極用の各メモリセルに接続され、ＳＢＬｊ０＜８＞〜ＳＢＬｊ０＜１５＞，ＳＢＬｊ１＜８＞〜ＳＢＬｊ１＜１５＞が当該メモリアレイ内における負極用の各メモリセルに接続される。同様に、他方のメモリアレイに対応するＳＢＬｋ０＜０＞〜ＳＢＬｋ０＜７＞，ＳＢＬｋ１＜０＞〜ＳＢＬｋ１＜７＞が当該メモリアレイ内における正極用の各メモリセルに接続され、ＳＢＬｋ０＜８＞〜ＳＢＬｋ０＜１５＞，ＳＢＬｋ１＜８＞〜ＳＢＬｋ１＜１５＞が当該メモリアレイ内における負極用の各メモリセルに接続される。
【００６２】
ＳＡＢＫａ（例えばＳＡＢＫ［０，０］）は、センスアンプ回路ＳＡと、読み出し列選択回路ＲＳＥＬｊ，ＲＳＥＬｋ，ＲＳＥＬｊｋと、８本の共通ビット線ＣＢＬｊ＜０＞〜ＣＢＬｊ＜３＞，ＣＢＬｋ＜０＞〜ＣＢＬｋ＜３＞と、８個のリファレンスメモリセルＲＭＣを備えている。ＲＳＥＬｊｋは、図７の列デコード回路ＣＤＥＣから生成される８本の選択信号ｙｒｂ＜７：０＞に応じて、８本の共通ビット線をＳＡの差動入力端子の一方又は他方に選択的に接続する。ここでは、ＳＡの差動入力端子の一方には、ＣＢＬｊ＜０＞，ＣＢＬｊ＜１＞とＣＢＬｋ＜０＞，ＣＢＬｋ＜１＞のいずれか１本が選択的に接続され、ＳＡの差動入力端子の他方には、ＣＢＬｊ＜２＞，ＣＢＬｊ＜３＞とＣＢＬｋ＜２＞，ＣＢＬｋ＜３＞のいずれか１本が選択的に接続される。
【００６３】
ＣＢＬｊ＜０＞には、一方のメモリアレイの正極側に対応した１６本のサブビット線中の８本がＲＳＥＬｊを介して接続され、ＣＢＬｊ＜１＞には、当該１６本中の残りの８本がＲＳＥＬｊを介して接続される。ＣＢＬｊ＜２＞には、一方のメモリアレイの負極側に対応した１６本のサブビット線中の８本がＲＳＥＬｊを介して接続され、ＣＢＬｊ＜３＞には、当該１６本中の残りの８本がＲＳＥＬｊを介して接続される。ＣＢＬｋ＜０＞には、他方のメモリアレイの正極側に対応した１６本のサブビット線中の８本がＲＳＥＬｋを介して接続され、ＣＢＬｋ＜１＞には、当該１６本中の残りの８本がＲＳＥＬｋを介して接続される。ＣＢＬｋ＜２＞には、他方のメモリアレイの負極側に対応した１６本のサブビット線中の８本がＲＳＥＬｋを介して接続され、ＣＢＬｋ＜３＞には、当該１６本中の残りの８本がＲＳＥＬｋを介して接続される。
【００６４】
ＲＳＥＬｊは、図７のＣＤＥＣから生成される８本の選択信号ｙｒａｊ＜７：０＞に応じて、ＣＢＬｊ＜０＞〜ＣＢＬｊ＜３＞のそれぞれに対して前述した８本のサブビット線のいずれか１本を接続する。ＲＳＥＬｋは、図７のＣＤＥＣから生成される８本の選択信号ｙｒａｋ＜７：０＞に応じて、ＣＢＬｋ＜０＞〜ＣＢＬｋ＜３＞のそれぞれに対して前述した８本のサブビット線のいずれか１本を接続する。８個のリファレンスメモリセルＲＭＣは、前述した８本の共通ビット線ＣＢＬｊ＜０＞〜ＣＢＬｊ＜３＞，ＣＢＬｋ＜０＞〜ＣＢＬｋ＜３＞にそれぞれ接続される。各ＲＭＣは、対応する共通ビット線と接地電源電圧ＧＮＤの間にソース・ドレイン経路が直列接続されたＰＭＯＳトランジスタＰＱｒとＮＭＯＳトランジスタＮＱｒを備えている。ＮＱｒはゲートに固定電圧Ｖｒｅｆが印加されることで電流源として機能し、ＰＱｒはゲートに選択信号が印加されることでスイッチとして機能する。ここでは、ＣＢＬｊ＜０＞〜ＣＢＬｊ＜３＞に接続された４個のＲＭＣ内のＰＱｒは選択信号ｒｅｆｊによって共通に制御され、ＣＢＬｋ＜０＞〜ＣＢＬｋ＜３＞に接続された４個のＲＭＣ内のＰＱｒは選択信号ｒｅｆｋによって共通に制御される。
【００６５】
《センスアンプ回路ブロック周りの動作［１］》
図１０のような構成例を用いると、各種選択信号ｙｒｂ＜７：０＞，ｙｒａｊ＜７：０＞，ｙｒａｋ＜７：０＞，ｒｅｆｊ，ｒｅｆｋに応じて、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）からの相補読み出し及びシングル読み出しと、他方のメモリアレイ（例えばＭＡＲＹｋ［０，０］）からの相補読み出しおよびシングル読み出しを実現できる。例えば、ｙｒａｊ＜０＞，ｙｒａｋ＜０＞とｙｒｂ＜０＞，ｙｒｂ＜２＞がオンレベルに駆動された場合、ＳＡの差動入力端子の一方には、図１０の読み出し経路ＲＴ１に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における正極側の１本のサブビット線（ＳＢＬｊ０＜０＞）がＣＢＬｊ＜０＞を介して接続される。この際に、ＳＡの差動入力端子の他方には、図１０の読み出し経路ＲＴ２に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における負極側の１本のサブビット線（ＳＢＬｊ０＜８＞）がＣＢＬｊ＜２＞を介して接続される。これによって、ＳＡではツインセルに対する相補読み出しが行われる。
【００６６】
また、例えば、ｙｒａｊ＜０＞，ｙｒａｋ＜０＞とｙｒｂ＜０＞，ｙｒｂ＜６＞とｒｅｆｋがオンレベルに駆動された場合、ＳＡの差動入力端子の一方には、図１０の読み出し経路ＲＴ１に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における正極側の１本のサブビット線（ＳＢＬｊ０＜０＞）がＣＢＬｊ＜０＞を介して接続される。この際に、ＳＡの差動入力端子の他方には、図１０の読み出し経路ＲＴ４に示すように、ＣＢＬｋ＜２＞に接続されたリファレンスメモリセルＲＭＣが接続される。ＲＭＣは、例えば、正規のメモリセルが書き込み状態の際に流れる電流と消去状態（初期状態）の際に流れる電流の中間値を持つ電流を生成する。これによって、ＳＡでは、正極側のメモリセルに対するシングル読み出しが行われる。なお、この際にＣＢＬｋ＜２＞には、ＲＭＣに加えて他方のメモリアレイ（例えばＭＡＲＹｋ［０，０］）における負極側の１本のサブビット線（ＳＢＬｋ０＜８＞）が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【００６７】
また、例えば、ｙｒａｊ＜０＞，ｙｒａｋ＜０＞とｙｒｂ＜２＞，ｙｒｂ＜４＞とｒｅｆｋがオンレベルに駆動された場合、ＳＡの差動入力端子の他方には、図１０の読み出し経路ＲＴ２に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における負極側の１本のサブビット線（ＳＢＬｊ０＜８＞）がＣＢＬｊ＜２＞を介して接続される。この際に、ＳＡの差動入力端子の一方には、図１０の読み出し経路ＲＴ３に示すように、ＣＢＬｋ＜０＞に接続されたリファレンスメモリセルＲＭＣが接続される。これによって、ＳＡでは、負極側のメモリセルに対するシングル読み出しが行われる。なお、この際にＣＢＬｋ＜０＞には、ＲＭＣに加えて他方のメモリアレイ（例えばＭＡＲＹｋ［０，０］）における正極側の１本のサブビット線（ＳＢＬｋ０＜０＞）が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【００６８】
このように、正極側のデータ列と負極側のデータ列をそれぞれ個別にシングルモードで読み出し、加えて、正極側のデータ列のパリティービットに対応するツインセルを相補モードで読み出し、同様に負極側のパリティービットに対応するツインセルを相補モードで読み出すことで、前述した図３のエラー検出・エラー訂正処理が実現可能になる。ここで、当該シングルモードでの読み出しを実現するためには、通常の相補メモリ用のセンスアンプ回路に対して主にリファレンスメモリセルＲＭＣを加えればよく、回路面積のオーバヘッドが抑制できる。また、当該センスアンプ回路をベリファイ時にも利用しているようなフラッシュメモリでは、ＲＭＣが既に備わっているような場合が有り、この場合、回路面積のオーバヘッドが更に抑制できる。
【００６９】
《センスアンプ回路ブロック周りの構成［２］》
図１１は、図１０を変形した各センスアンプ回路ブロック周りの概略構成例を示す回路図である。図１１において、センスアンプ回路ブロックＳＡＢＫｂ（例えば図９のＳＡＢＫ［０，０］）には、図１０の場合と同様に、隣接する一方のメモリアレイ（例えば図９のＭＡＲＹｊ［０，０］）からの複数（ここでは３２本）のサブビット線ＳＢＬｊ０＜０＞〜ＳＢＬｊ０＜１５＞，ＳＢＬｊ１＜０＞〜ＳＢＬｊ１＜１５＞が接続される。更に、当該ＳＡＢＫｂには、図１０の場合と同様に、隣接する他方のメモリアレイ（例えば図９のＭＡＲＹｋ［０，０］）からの複数（ここでは３２本）のサブビット線ＳＢＬｋ０＜０＞〜ＳＢＬｋ０＜１５＞，ＳＢＬｋ１＜０＞〜ＳＢＬｋ１＜１５＞が接続される。
【００７０】
ＳＡＢＫｂ（例えばＳＡＢＫ［０，０］）は、図１０の場合と同様の読み出し列選択回路ＲＳＥＬｊ，ＲＳＥＬｋ、８本の共通ビット線ＣＢＬｊ＜０＞〜ＣＢＬｊ＜３＞，ＣＢＬｋ＜０＞〜ＣＢＬｋ＜３＞、および８個のリファレンスメモリセルＲＭＣを備えている。これに加えて、当該ＳＡＢＫｂは、図１０の場合と異なり３個のセンスアンプ回路ＳＡｍ，ＳＡｐ，ＳＡｎを備え、これに伴い図１０の場合と異なる読み出し列選択回路ＲＳＥＬｊｋ２を備えている点が主要な特徴となっている。ＲＳＥＬｊｋ２は、図７の列デコード回路ＣＤＥＣから生成される４本の選択信号ｙｒｂ＜３：０＞に応じて、８本の共通ビット線を３個のＳＡｍ，ＳＡｐ，ＳＡｎの差動入力端子の一方又は他方に選択的に接続する。
【００７１】
具体的には、ＲＳＥＬｊｋ２は、ｙｒｂ＜０＞がオンレベルに駆動された際、ＳＡｍの差動入力端子の一方にＣＢＬｊ＜０＞を、他方にＣＢＬｊ＜２＞を接続し、ＳＡｐの差動入力端子の一方にＣＢＬｊ＜０＞を、他方にＣＢＬｋ＜２＞を接続し、ＳＡｎの差動入力端子の一方にＣＢＬｋ＜０＞を、他方にＣＢＬｊ＜２＞を接続する。すなわち、相補読み出し用のＳＡｍには、ツインセルの正極データ（ＣＢＬｊ＜０＞に対応）と負極データ（ＣＢＬｊ＜２＞）が接続される。正極側のシングル読み出し用のＳＡｐには、ツインセルの正極データ（ＣＢＬｊ＜０＞に対応）とリファレンスメモリセル（ＣＢＬｋ＜２＞に対応）が接続される。負極側のシングル読み出し用のＳＡｎには、リファレンスメモリセル（ＣＢＬｋ＜０＞に対応）とツインセルの負極データ（ＣＢＬｊ＜２＞に対応）が接続される。
【００７２】
また、ＲＳＥＬｊｋ２は、ｙｒｂ＜１＞がオンレベルに駆動された際、ＳＡｍの差動入力端子の一方にＣＢＬｊ＜１＞を、他方にＣＢＬｊ＜３＞を接続し、ＳＡｐの差動入力端子の一方にＣＢＬｊ＜１＞を、他方にＣＢＬｋ＜３＞を接続し、ＳＡｎの差動入力端子の一方にＣＢＬｋ＜１＞を、他方にＣＢＬｊ＜３＞を接続する。すなわち、相補読み出し用のＳＡｍには、ツインセルの正極データ（ＣＢＬｊ＜１＞に対応）と負極データ（ＣＢＬｊ＜３＞）が接続される。正極側のシングル読み出し用のＳＡｐには、ツインセルの正極データ（ＣＢＬｊ＜１＞に対応）とリファレンスメモリセル（ＣＢＬｋ＜３＞に対応）が接続される。負極側のシングル読み出し用のＳＡｎには、リファレンスメモリセル（ＣＢＬｋ＜１＞に対応）とツインセルの負極データ（ＣＢＬｊ＜３＞に対応）が接続される。
【００７３】
さらに、ＲＳＥＬｊｋ２は、ｙｒｂ＜２＞がオンレベルに駆動された際、ＳＡｍの差動入力端子の一方にＣＢＬｋ＜０＞を、他方にＣＢＬｋ＜２＞を接続し、ＳＡｐの差動入力端子の一方にＣＢＬｋ＜０＞を、他方にＣＢＬｊ＜２＞を接続し、ＳＡｎの差動入力端子の一方にＣＢＬｊ＜０＞を、他方にＣＢＬｋ＜２＞を接続する。すなわち、前述したｙｒｂ＜０＞がオンレベルに駆動された場合に対して「ｊ」と「ｋ」を入れ替えたような処理を行う。同様に、ＲＳＥＬｊｋ２は、ｙｒｂ＜３＞がオンレベルに駆動された際、前述したｙｒｂ＜１＞がオンレベルに駆動された場合に対して「ｊ」と「ｋ」を入れ替えたような処理を行う。
【００７４】
《センスアンプ回路ブロック周りの動作［２］》
図１１のような構成例を用いると、各種選択信号ｙｒｂ＜３：０＞，ｙｒａｊ＜７：０＞，ｙｒａｋ＜７：０＞，ｒｅｆｊ，ｒｅｆｋに応じて、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）のツインセルからの相補読み出しと、正極側セルからのシングル読み出しと、負極側セルからのシングル読み出しとを並行して行うこと可能になる。同様に、他方のメモリアレイ（例えばＭＡＲＹｋ［０，０］）のツインセルからの相補読み出しと、正極側セルからのシングル読み出しと、負極側セルからのシングル読み出しとを並行して行うこと可能になる。
【００７５】
例えば、ｙｒａｊ＜０＞，ｙｒａｋ＜０＞，ｙｒｂ＜０＞，ｒｅｆｋがオンレベルに駆動された場合、ＳＡｍの差動入力端子の一方には、図１１の読み出し経路ＲＴ１に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における正極側の１本のサブビット線（ＳＢＬｊ０＜０＞）がＣＢＬｊ＜０＞を介して接続される。この際に、ＳＡｍの差動入力端子の他方には、図１１の読み出し経路ＲＴ２に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における負極側の１本のサブビット線（ＳＢＬｊ０＜８＞）がＣＢＬｊ＜２＞を介して接続される。これによって、ＳＡｍではツインセルに対する相補読み出しが行われる。
【００７６】
また、これと並行して、ＳＡｐの差動入力端子の一方には、図１１の読み出し経路ＲＴ１に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における正極側の１本のサブビット線（ＳＢＬｊ０＜０＞）がＣＢＬｊ＜０＞を介して接続される。この際に、ＳＡｐの差動入力端子の他方には、図１１の読み出し経路ＲＴ４に示すように、ＣＢＬｋ＜２＞に接続されたリファレンスメモリセルＲＭＣが接続される。ＲＭＣは、例えば、正規のメモリセルが書き込み状態の際に流れる電流と消去状態（初期状態）の際に流れる電流の中間値を持つ電流を生成する。これによって、ＳＡｐでは、正極側のメモリセルに対するシングル読み出しが行われる。なお、この際にＣＢＬｋ＜２＞には、ＲＭＣに加えて他方のメモリアレイ（例えばＭＡＲＹｋ［０，０］）における負極側の１本のサブビット線（ＳＢＬｋ０＜８＞）が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【００７７】
更に、これらと並行して、ＳＡｎの差動入力端子の他方には、図１１の読み出し経路ＲＴ２に示すように、一方のメモリアレイ（例えばＭＡＲＹｊ［０，０］）における負極側の１本のサブビット線（ＳＢＬｊ０＜８＞）がＣＢＬｊ＜２＞を介して接続される。この際に、ＳＡｎの差動入力端子の一方には、図１１の読み出し経路ＲＴ３に示すように、ＣＢＬｋ＜０＞に接続されたリファレンスメモリセルＲＭＣが接続される。これによって、ＳＡｎでは、負極側のメモリセルに対するシングル読み出しが行われる。なお、この際にＣＢＬｋ＜０＞には、ＲＭＣに加えて他方のメモリアレイ（例えばＭＡＲＹｋ［０，０］）における正極側の１本のサブビット線（ＳＢＬｋ０＜０＞）が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【００７８】
このように、正極側のデータ列と負極側のデータ列をそれぞれ個別にシングルモードで読み出し、加えて、正極側のデータ列のパリティービットに対応するツインセルを相補モードで読み出し、同様に負極側のパリティービットに対応するツインセルを相補モードで読み出すことで、前述した図３のエラー検出・エラー訂正処理が実現可能になる。ここで、前述した図１０の構成例を用いた場合、正極側のシングルモード読み出しと負極側のシングルモード読み出しをシリアルに行う必要があるが、図１１の構成例ではパラレルで読み出すことが可能であるため、図１０の構成例と比較して読み出し時間の短縮が図れる。
【００７９】
なお、図３の処理を用いる場合、図９のデータ領域に含まれる各センスアンプ回路ブロックでは特に相補読み出しを行う必要は無いため、図１１のＳＡｍ並びにこれに伴うＲＳＥＬｊｋ２上の選択経路は省略することも可能である。ただし、例えばフラッシュメモリに前述したエラー検出・訂正機能を有効・無効に設定できる機能を設け、この無効時にＳＡｍを用いるようなことも可能である。また、例えば、エラー検出は行われたがエラー訂正が失敗したような場合（例えば図３のＳ１０８のような場合）にＳＡｍからの出力をデータ出力信号として用いるようなことも可能である。また、電源起動時に図３のようなフローでエラー検出の有無を実施し、それ以外の高速動作が要求される時はＳＡｍからの相補読み出しによる出力データを有効にする事も可能である。更に、図３の処理を用いる場合、図９のパリティー領域に含まれる各センスアンプ回路ブロックでは特にシングル読み出しを行う必要は無いため、図１１のＳＡｐ，ＳＡｎ並びにこれに伴うＲＳＥＬｊｋ２上の選択経路は省略することも可能である。
【００８０】
《パリティー生成回路の構成》
図１２（ａ）は、図７におけるパリティー生成回路の詳細な構成例を示す回路図であり、図１２（ｂ）は、図１２（ａ）における加算回路の動作例を示す真理値表である。図１２（ａ）のパリティー生成回路ＰＲＴＹＧは、相補データ生成回路ＣＤＳ［０］〜ＣＤＳ［Ｎ］と、正極用のＮ個の加算回路ＡＤＤｐ［１］〜ＡＤＤｐ［Ｎ］およびインバータ回路ＩＶｐと、負極用のＮ個の加算回路ＡＤＤｎ［１］〜ＡＤＤｎ［Ｎ］およびインバータ回路ＩＶｎを備えている。ＣＤＳ［０］〜ＣＤＳ［Ｎ］は、データ入力信号ＤＩ［０］〜ＤＩ［Ｎ］から正極側のデータ入力信号ＤＩｐ［０］〜ＤＩｐ［Ｎ］とその反転データとなる負極側のデータ入力信号ＤＩｎ［０］〜ＤＩｎ［Ｎ］を生成する。
【００８１】
ＡＤＤｐ［１］にはＤＩｐ［０］とＤＩｐ［１］が入力され、ＡＤＤｐ［２］にはＡＤＤｐ［１］の加算結果（ＥＸＯＲ（排他的論理和）演算結果）とＤＩｐ［２］が入力され、以降同様にして、ＡＤＤｐ［Ｎ］にはＡＤＤｐ［Ｎ−１］の加算結果とＤＩｐ［Ｎ］が入力される。ＩＶｐは、ＡＤＤｐ［Ｎ］の加算結果を反転して正極側のパリティービットＰＲＴＹＢＩＴｐ＿Ｗを生成する。これによって、ＰＲＴＹＢＩＴｐ＿Ｗとして奇数パリティーの値が得られる。同様に、ＡＤＤｎ［１］にはＤＩｎ［０］とＤＩｎ［１］が入力され、ＡＤＤｎ［２］にはＡＤＤｎ［１］の加算結果（ＥＸＯＲ演算結果）とＤＩｎ［２］が入力され、以降同様にして、ＡＤＤｎ［Ｎ］にはＡＤＤｎ［Ｎ−１］の加算結果とＤＩｎ［Ｎ］が入力される。ＩＶｎは、ＡＤＤｎ［Ｎ］の加算結果を反転して負極側のパリティービットＰＲＴＹＢＩＴｎ＿Ｗを生成する。これによって、ＰＲＴＹＢＩＴｎ＿Ｗとして奇数パリティーの値が得られる。なお、偶数パリティーを用いる場合にはＩＶｐ，ＩＶｎを省略すればよく、また、各加算回路はＥＸＯＲ演算回路に置き換えることも可能である。
【００８２】
《エラー処理回路ブロックの詳細》
図１３は、図７におけるエラー処理回路ブロックの詳細な動作例を示す真理値表である。図１４は、図７におけるエラー処理回路ブロックの詳細な構成例を示す回路図である。図１４に示すように、エラー処理回路ブロックＥＲＣＢＫは、正極用のパリティーチェック回路ＰＲＴＹＣＨＫＣＴｐと、負極用のパリティーチェック回路ＰＲＴＹＣＨＫＣＴｎと、（Ｎ＋１）個のエラー処理回路ＥＲＣ［０］〜ＥＲＣ［Ｎ］を備えている。ＰＲＴＹＣＨＫＣＴｐは、図１０又は図１１の回路を介して正極側からシングルモードで読み出された（Ｎ＋１）ビットのデータ列（プリデータ信号ＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］）と、正極側のパリティービットＰＲＴＹＢＩＴｐ＿Ｒを入力としてパリティーチェックを行う。ＰＲＴＹＢＩＴｐ＿Ｒは、図１２（ａ）の回路によって生成されたのちメモリセル（ツインセル）に書き込まれているＰＲＴＹＢＩＴｐ＿Ｗを読み出したものである。
【００８３】
ＰＲＴＹＣＨＫＣＴｐは、Ｎ個のＥＸＯＲ演算回路ＥＯＲｐ［１］〜ＥＯＲｐ［Ｎ］と、１個のＥＸＮＯＲ（排他的反転論理和）演算回路ＥＮＲｐｐを備える。ＥＯＲｐ［１］〜ＥＯＲｐ［Ｎ］は、ＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］の（Ｎ＋１）入力に対するＥＸＯＲ演算を行う。この例では、ＥＯＲｐ［１］がＰＲＥＤＡＴｐ［０］とＰＲＥＤＡＴｐ［１］の演算を行い、ＥＯＲｐ［２］がＥＯＲｐ［１］の演算結果とＰＲＥＤＡＴｐ［２］の演算を行い、以降同様にして、ＥＯＲｐ［Ｎ］がＥＯＲｐ［Ｎ−１］の演算結果とＰＲＥＤＡＴｐ［Ｎ］の演算を行う。ＥＮＲｐｐは、このＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］のＥＸＯＲ演算結果（ＥＯＲｐ［Ｎ］の出力）とＰＲＴＹＢＩＴｐ＿ＲのＥＸＮＯＲ演算を行い、その結果をパリティー判定信号ＰＲＴＹＣＨＫｐとして出力する。
【００８４】
同様に、ＰＲＴＹＣＨＫＣＴｎは、図１０又は図１１の回路を介して負極側からシングルモードで読み出された（Ｎ＋１）ビットのデータ列（プリデータ信号ＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］）と、負極側のパリティービットＰＲＴＹＢＩＴｎ＿Ｒを入力としてパリティーチェックを行う。ＰＲＴＹＢＩＴｎ＿Ｒは、図１２（ａ）の回路によって生成されたのちメモリセル（ツインセル）に書き込まれているＰＲＴＹＢＩＴｎ＿Ｗを読み出したものである。ＰＲＴＹＣＨＫＣＴｎは、Ｎ個のＥＸＯＲ演算回路ＥＯＲｎ［１］〜ＥＯＲｎ［Ｎ］と、１個のＥＸＮＯＲ（排他的反転論理和）演算回路ＥＮＲｎｎを備える。ＥＯＲｎ［１］〜ＥＯＲｎ［Ｎ］は、前述した正極側の場合と同様に、ＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］のＥＸＯＲ演算結果を生成し、ＥＮＲｎｎは、このＥＸＯＲ演算結果とＰＲＴＹＢＩＴｎ＿ＲのＥＸＮＯＲ演算を行い、その結果をパリティー判定信号ＰＲＴＹＣＨＫｎとして出力する。
【００８５】
ＥＲＣ［０］は、正極データとなるＰＲＥＤＡＴｐ［０］と負極データとなるＰＲＥＤＡＴｎ［０］と、ＰＲＴＹＣＨＫＣＴｐからのパリティー判定信号ＰＲＴＹＣＨＫｐと、ＰＲＴＹＣＨＫＣＴｎからのパリティー判定信号ＰＲＴＹＣＨＫｎを入力として動作する。ＥＲＣ［０］は、１個のＥＸＮＯＲ演算回路ＥＮＲ１と、３個のアンド演算回路ＡＤ１〜ＡＤ３と、１個のオア演算回路ＯＲ１と、３個のＥＸＯＲ演算回路ＥＯＲ１〜ＥＯＲ３を備え、これによって前述した入力信号を論理演算し、５個の出力信号を生成する。５個の出力信号は、それぞれ、正極側データ出力信号ＤＯｐ［０］、負極側データ出力信号ＤＯｎ［０］、エラー検出信号ＥＲＲＰＯＴ［０］、エラー訂正失敗信号ＥＲＣＥＲＲ［０］、エラー訂正成功信号ＥＲＣＳＵＣ［０］である。
【００８６】
ＥＲＣ［Ｎ］は、正極データとなるＰＲＥＤＡＴｐ［Ｎ］と負極データとなるＰＲＥＤＡＴｎ［Ｎ］と、ＥＲＣ［０］と同様に、ＰＲＴＹＣＨＫＣＴｐからのパリティー判定信号ＰＲＴＹＣＨＫｐおよびＰＲＴＹＣＨＫＣＴｎからのパリティー判定信号ＰＲＴＹＣＨＫｎを入力として動作する。ＥＲＣ［Ｎ］は、ＥＲＣ［０］と同様の内部回路を備え、これによって前述した入力信号を論理演算し、５個の出力信号を生成する。５個の出力信号は、それぞれ、正極側データ出力信号ＤＯｐ［Ｎ］、負極側データ出力信号ＤＯｎ［Ｎ］、エラー検出信号ＥＲＲＰＯＴ［Ｎ］、エラー訂正失敗信号ＥＲＣＥＲＲ［Ｎ］、エラー訂正成功信号ＥＲＣＳＵＣ［Ｎ］である。なお、ＥＲＣ［１］〜ＥＲＣ［Ｎ−１］に関してもＥＲＣ［Ｎ］と同様である。
【００８７】
ＥＲＣ［０］〜ＥＲＣ［Ｎ］のそれぞれの内部回路は、図１３の真理値表に基づいた動作を行う。図１３において、まず、正極データとなるＰＲＥＤＡＴｐと負極データとなるＰＲＥＤＡＴｎをＥＸＮＯＲ演算することで、これらが相補データとなっているか否かが判定される（図１３、図１４の信号ＣＪに対応）。このＣＪとＰＲＴＹＣＨＫｐのアンド演算を行うことでエラーが正極側か否かが判定され（図１３、図１４の信号ＥＲＲｐに対応）、ＣＪとＰＲＴＹＣＨＫｎのアンド演算を行うことでエラーが負極側か否かが判定される（図１３、図１４の信号ＥＲＲｎに対応）。したがって、ＥＲＲｐとＰＲＥＤＡＴｐのＥＸＯＲ演算を行うことでエラー訂正後の正極側データ出力信号ＤＯｐを生成することができ、ＥＲＲｎとＰＲＥＤＡＴｎのＥＸＯＲ演算を行うことでエラー訂正後の負極側データ出力信号ＤＯｎが生成することができる。
【００８８】
また、ＰＲＴＹＣＨＫｐとＰＲＴＹＣＨＫｎとＣＪのオア演算を行うことでエラーの有無を表すエラー検出信号ＥＲＲＰＯＴが生成される。更に、ＰＲＴＹＣＨＰｐとＰＲＴＹＣＨＰｎのＥＸＯＲ演算結果と、ＣＪとをアンド演算することでエラー訂正が成功したか否かを表すエラー訂正成功信号ＥＲＣＳＵＣが生成され、ＥＲＲＰＯＴと、ＥＲＣＳＵＣの反転信号をアンド演算することで、エラー訂正が失敗したか否かを表すエラー訂正失敗信号ＥＲＣＥＲＲが生成される。ＥＲＲＰＯＴは、パリティーチェック結果で異常が検出された場合かあるいは相補である筈のデータが相補でない場合に「１」（エラー有り）となり、それ以外の場合（パリティーチェック結果が正常かつ相補データが相補である）に「０」（エラー無し）となる。ＥＲＣＳＵＣは、相補である筈のデータが相補でなく、かつ正極側と負極側のパリティーチェック結果の内の一方のみが異常となっている場合に「１」（エラー訂正成功）となる。したがって、ＤＯｐ，ＤＯｎが正しく得られるのは、ＥＲＲＰＯＴが「０」（エラー無し）の場合か、ＥＲＣＳＵＣが「１」（エラー訂正成功）の場合かである。これらの場合にはＥＲＣＥＲＲが「０」となり、それ以外の場合にはＥＲＣＥＲＲが「１」となるため、ＥＲＣＥＲＲによってＤＯｐ，ＤＯｎの信頼性を識別できる。
【００８９】
この図１３および図１４の説明から判るように、当該エラー処理回路ブロックＥＲＣＢＫは、前述した図３の処理内容を実行する回路となっている。また、図１２のパリティー生成回路ＰＲＴＹＧおよび図１４のエラー処理回路ブロックＥＲＣＢＫから判るように、本実施の形態のエラー検出・エラー訂正機能で必要とされる各種演算処理は、一般的なハミングコード（ＥＣＣコード）を用いる場合と比較して簡素であり、これに伴い当該演算回路の回路面積オーバヘッドも十分に抑制される。その結果、データの信頼性を低コストで向上させることが可能になる。
【００９０】
以上、本実施の形態２の半導体装置を用いることで、実施の形態１の場合と同様に、代表的には、データの信頼性の向上が可能となり、また、当該効果を低コストで得ることが可能になる。更に、本実施の形態のエラー検出・エラー訂正機能をマイクロコンピュータ等に内蔵されたデータ用の不揮発性メモリブロック等に適用することで、前述したような効果をより顕著に得ることが可能になる。
【００９１】
（実施の形態３）
本実施の形態３では、前述した実施の形態１で述べたエラー検出・エラー訂正機能のうちの一部の機能のみを備えた半導体装置（記憶装置）について説明する。
【００９２】
《メモリユニットの概略構成および概略動作［２］》
図１５は、本発明の実施の形態３による半導体装置（記憶装置）において、それに含まれるメモリユニットの構成例を示す概略図である。図１５に示すメモリユニットは、図１の構成例と同様に、（Ｎ＋１）ビットの記憶ノードＳＮ１［０］〜ＳＮ１［Ｎ］を持つメモリ領域ＭＥＭ１と、（Ｎ＋１）ビットの記憶ノードＳＮ２［０］〜ＳＮ２［Ｎ］を持つメモリ領域ＭＥＭ２を備え、更に、図１とは異なるエラー処理回路ブロックＥＲＣＢＫ２を備えている。ＭＥＭ１とＭＥＭ２は、図１の構成例と同様にＭＥＭ１を正極（Ｐｏｓｉ）用、ＭＥＭ２を負極（Ｎｅｇａ）用とする相補メモリを構成する。
【００９３】
《エラー処理動作［２］》
図１６は、図１５におけるエラー処理回路ブロックの主要な動作例を示すフロー図である。図１６に示すように、エラー処理回路ブロックＥＲＣＢＫ２は、まず、正極（Ｐｏｓｉ）用のシングルデータ列となるプリデータ信号（図１５のＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］）を読み出す（Ｓ２０１）。同様に、負極（Ｎｅｇａ）用のシングルデータ列となるプリデータ信号（図１５のＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］）を読み出す（Ｓ２０２）。次いで、ＥＲＣＢＫ２は、正極用のプリデータ信号（ＰＲＥＤＡＴｐ［０］〜ＰＲＥＤＡＴｐ［Ｎ］）と負極用のプリデータ信号（ＰＲＥＤＡＴｎ［０］〜ＰＲＥＤＡＴｎ［Ｎ］）の一致・不一致を各ビット毎に判定する（Ｓ２０３）。全てのビットが不一致であれば、相補データが正常に記憶されていることになるためエラー無しと判定し（Ｓ２０５）、一致するビットが存在する場合には、エラー有りと判定する（Ｓ２０４）。
【００９４】
このように、本実施の形態３の半導体装置（記憶装置）は、相補メモリを利用して、各ビットのエラー有無を判定していることが特徴となっている。このエラー有無の判定は、図１５の例ではＥＸＮＯＲ演算回路ＥＮＲ１０によって行われ、ＥＮＲ１０はその判定結果を（Ｎ＋１）ビットのエラー検出信号ＥＲＲＰＯＴ［０：Ｎ］として出力している。また、図１５の例では、正極側のプリデータ信号と負極側のプリデータ信号の各ビットが差動増幅回路ＤＡＭＰによって増幅され、ＤＡＭＰはその増幅結果を（Ｎ＋１）ビットのデータ出力信号ＤＯ［０：Ｎ］として出力している。例えば、ある読み出しサイクルにおいて、ＥＲＲＰＯＴ［０：Ｎ］のいずれかのビットに「１」（一致ビット有り）が出力された場合、当該サイクルにおけるＤＯ［０：Ｎ］の信憑性が疑わしいことになり、その旨を読み出し要求元等に伝達することが可能になる。
【００９５】
以上、本実施の形態３の半導体装置（記憶装置）を用いると、図１５から判るように、通常の相補メモリの構成に対してＥＸＮＲ演算回路等を加えることでエラー検出が可能になるため、代表的には、データの信頼性を向上させることができ、また当該効果を低コストで実現することが可能になる。
【００９６】
（実施の形態４）
本実施の形態４では、前述した実施の形態１の構成例を変形した構成例について説明する。
【００９７】
《メモリユニットの概略構成および概略動作［３］》
図１７は、本発明の実施の形態４による半導体装置（記憶装置）において、それに含まれるメモリユニットの構成例を示す概略図である。図１７に示すメモリユニットは、図１の構成例と同様に、メモリ領域ＭＥＭ１，ＭＥＭ２と、パリティー生成回路ＰＲＴＹＧ１，ＰＲＴＹＧ２と、パリティー用記憶ノードＳＮ１ｐ，ＳＮ２ｐを備え、加えて図１とは異なるエラー処理回路ブロックＥＲＣＢＫ３を備えている。図１との相違点は、ＭＥＭ１が備える（Ｎ＋１）ビットの記憶ノードＳＮ１［０］〜ＳＮ１［Ｎ］とＭＥＭ２が備える（Ｎ＋１）ビットの記憶ノードＳＮ２［０］〜ＳＮ２［Ｎ］に同一のデータが書き込まれ（すなわちデータが多重化され）、これに応じてＥＲＣＢＫ３の処理内容が若干変更されている点にある。以下、実施の形態１と重複する説明は省略し、相違点に着目して説明を行う。
【００９８】
《エラー処理動作［３］》
図１８は、図１７におけるエラー処理回路ブロックの動作例を示すフロー図である。図１８に示すように、エラー処理回路ブロックＥＲＣＢＫ３は、まず、ＭＥＭ１からのシングルデータ列となるデータ信号（図１７のＤＡＴＡ１［０］〜ＤＡＴＡ１［Ｎ］）と、ＭＥＭ１用のパリティービット（図１７のＳＮ１ｐの情報）を読み出し、パリティーチェックを行う（Ｓ３０１）。ここでは、当該パリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  １）が正常な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  １＝０」と表現し、異常な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  １＝１」と表現する。
【００９９】
次いで、ＥＲＣＢＫ３は、ＭＥＭ２からのシングルデータ列となるデータ信号（図１７のＤＡＴＡ２［０］〜ＤＡＴＡ２［Ｎ］）と、ＭＥＭ２用のパリティービット（図１７のＳＮ２ｐの情報）を読み出し、パリティーチェックを行う（Ｓ３０２）。ここでは、当該パリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  ２）が正常な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  ２＝０」と表現し、異常な場合を「Ｐａｒｉｔｙ  Ｃｈｅｃｋ  ２＝１」と表現する。続いて、ＥＲＣＢＫ３は、ＤＡＴＡ１［０：Ｎ］とＤＡＴＡ２［０：Ｎ］の一致・不一致を各ビット毎に判定する（Ｓ３０３）。全てのビットが一致であれば、正常に記憶されていることになるためエラー無しと判定する（Ｓ３０９）。一方、不一致ビットが存在する場合には、ＥＲＣＢＫ３は、Ｓ３０１におけるパリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  １）が異常（「１」）か正常（「０」）かを判定する（Ｓ３０４）。異常であれば、ＥＲＣＢＫ３は、ＤＡＴＡ１［０：Ｎ］の中で、Ｓ３０３での不一致ビットが誤データである判定し（Ｓ３０６）、当該ビットを訂正する（Ｓ３１０）。
【０１００】
また、ＥＲＣＢＫ３は、Ｓ３０４におけるパリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  １）が正常（「０」）であった場合には、Ｓ３０２におけるパリティーチェック結果（Ｐａｒｉｔｙ  Ｃｈｅｃｋ  ２）が異常（「１」）か正常（「０」）かを判定する（Ｓ３０５）。異常であれば、ＥＲＣＢＫ３は、ＤＡＴＡ２［０：Ｎ］の中で、Ｓ３０３での不一致ビットが誤データであると判定し（Ｓ３０７）、当該ビットを訂正する（Ｓ３１０）。一方、Ｓ３０５の結果が正常であれば、ＥＲＣＢＫ３は、エラーは存在するものの訂正は不可と判定する（Ｓ３０８）。なお、Ｓ３０６，Ｓ３０７，Ｓ３１０では、Ｓ３０３での不一致ビットが１ビットである場合を前提とし、複数ビットの場合には、Ｓ３０８の場合と同様にエラーは存在するものの訂正は不可と判定される。
【０１０１】
図１９（ａ）〜図１９（ｅ）は、図１８の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。まず、図１９（ａ）には、図１８のＳ３０９に対応するエラー無しの状態が示されている。ここでは、ＤＡＴＡ１［０：Ｎ］とＤＡＴＡ２［０：Ｎ］における各ビットが同一データとなっており、ＤＡＴＡ１［０：Ｎ］およびＤＡＴＡ２［０：Ｎ］に対するパリティーチェック結果（この例では奇数パリティを用いている）も共に正常である。
【０１０２】
図１９（ｂ）には、図１８のＳ３０６に対応し、ＤＡＴＡ１［０：Ｎ］中の１ビットが「０」から「１」に化けた状態が示されている。ここでは、ＤＡＴＡ１［０：Ｎ］とＤＡＴＡ２［０：Ｎ］における［０］ビット目が同一データでは無く、ＤＡＴＡ１［０：Ｎ］に対するパリティーチェック結果が異常となっている。したがって、ＤＡＴＡ１［０：Ｎ］の［０］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図１９（ｃ）には、図１８のＳ３０６に対応し、ＤＡＴＡ１［０：Ｎ］中の１ビットが「１」から「０」に化けた状態が示されている。ここでは、ＤＡＴＡ１［０：Ｎ］とＤＡＴＡ２［０：Ｎ］における［１］ビット目が同一データでは無く、ＤＡＴＡ１［０：Ｎ］に対するパリティーチェック結果が異常となっている。したがって、ＤＡＴＡ１［０：Ｎ］の［１］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【０１０３】
図１９（ｄ）には、図１８のＳ３０７に対応し、ＤＡＴＡ２［０：Ｎ］中の１ビットが「０」から「１」に化けた状態が示されている。ここでは、ＤＡＴＡ１［０：Ｎ］とＤＡＴＡ２［０：Ｎ］における［０］ビット目が同一データでは無く、ＤＡＴＡ２［０：Ｎ］に対するパリティーチェック結果が異常となっている。したがって、ＤＡＴＡ２［０：Ｎ］の［０］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図１９（ｅ）には、図１８のＳ３０７に対応し、ＤＡＴＡ２［０：Ｎ］中の１ビットが「１」から「０」に化けた状態が示されている。ここでは、ＤＡＴＡ１［０：Ｎ］とＤＡＴＡ２［０：Ｎ］における［１］ビット目が同一データでは無く、ＤＡＴＡ２［０：Ｎ］に対するパリティーチェック結果が異常となっている。したがって、ＤＡＴＡ２［０：Ｎ］の［１］ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【０１０４】
以上、本実施の形態４の半導体装置（記憶装置）を用いることで、代表的には、実施の形態１の場合と同様に、データの信頼性を向上させることができ、また当該効果を低コストで実現することが可能になる。例えば、ハードディスク等の記憶装置では、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）１等で知られているように、データを二重化して記憶する場合がある。特に、このような場合に本実施の形態４の半導体装置（記憶装置）を適用することが有益となる。
【０１０５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【０１０６】
例えば、ここでは具体例としてフラッシュメモリへの適用例を示したが、勿論、これに限定されるものではなく、各種記憶ユニット全般に対して広く適応可能である。例えば、記憶素子の結晶状態を変化させてその抵抗値によって情報を記憶する相変化メモリや、記憶素子の磁化状態を変化させてその抵抗値によって情報を記憶する磁気抵抗メモリ（ＭＲＡＭ）等の各種半導体不揮発性メモリに対して同様に適用可能である。また、ＤＲＡＭ（Dynamic Random Access Memory）等を代表とする各種半導体揮発性メモリや、所謂ストレージと呼ばれる各種外部記憶装置等に対しても同様に適用可能である。
【符号の説明】
【０１０７】
ＡＤ  アンド演算回路
ＡＤＤ  加算回路
ＢＬ  ビット線
ＢＳＥＬ  サブビット線選択回路
ＢＳＩＦ  バスインタフェース回路
ＣＢＬ  共通ビット線
ＣＤＥＣ  列デコード回路
ＣＤＳ  相補データ生成回路
ＣＧ  コントロールゲート
ＣＪ，ＥＲＲ  信号
ＣＰＵ  中央処理ユニット
ＤＡＭＰ  差動増幅回路
ＤＡＴＡ  データ信号
ＤＩ  データ入力信号
ＤＭＡＣ  ダイレクトメモリアクセスコントローラ
ＤＯ  データ出力信号
Ｄｉｎ，Ｄｏｕｔ，ＸＴＡＬ，ＥＸＴＡＬ，ＳＴＢＹ，ＲＥＳ、Ｖｃｃ，Ｖｓｓ  外部端子
ＥＮＲ  ＥＸＮＯＲ演算回路
ＥＯＲ  ＥＸＯＲ演算回路
ＥＲＣ  エラー処理回路
ＥＲＣＢＫ  エラー処理回路ブロック
ＥＲＣＥＲＲ  エラー訂正失敗信号
ＥＲＣＳＵＣ  エラー訂正成功信号
ＥＲＲＰＯＴ  エラー検出信号
ＦＭＤ  フラッシュメモリ
ＦＭＤＬ  フラッシュメモリモジュール
ＦＳＥＱ  フラッシュシーケンサ
ＨＡＣＳＰ  高速アクセスポート
ＨＢＳ  高速バス
ＩＯＢＦ  入出力バッファ回路
ＩＶ  インバータ回路
ＬＡＣＳＰ  低速アクセスポート
ＬＢＳ  低速バス
ＬＴ  ラッチ回路
ＭＡＲＹ  メモリアレイ
ＭＣ  メモリセル
ＭＣＵ  マイクロコンピュータ
ＭＥＭ  メモリ領域
ＭＧ  メモリゲート
ＭＧＬ  メモリゲート選択線
ＭＭＡＴ  メモリマット
ＮＱｒ  ＮＭＯＳトランジスタ
ＯＢＦ  出力バッファ回路
ＯＲ  オア演算回路
ＰＬＬ  クロック生成回路
ＰＯＲＴ  外部入出力ポート
ＰＱｒ  ＰＭＯＳトランジスタ
ＰＲＥＤＡＴ  プリデータ信号
ＰＲＴＹＢＩＴ  パリティービット
ＰＲＴＹＣＨＫ  パリティー判定信号
ＰＲＴＹＣＨＫＣＴ  パリティーチェック回路
ＰＲＴＹＧ  パリティー生成回路
ＲＡＭ  ランダムアクセスメモリ
ＲＤＥＣ  行デコード回路
ＲＭＢＬ  読み出し系メインビット線
ＲＭＣ  リファレンスメモリセル
ＲＳＥＬ  読み出し列選択回路
ＲＴ  読み出し経路
ＳＡ  センスアンプ回路
ＳＡＢＫ  センスアンプ回路ブロック
ＳＢＬ  サブビット線
ＳＬ  ソース線
ＳＮ  記憶ノード
ＴＭＲ  タイマ
ＶＧ  内部電源生成回路
ＶＲＦＹ  ベリファイ回路
ＶＳＡ  ベリファイ用センスアンプ回路
ＷＥＬＬ  ウェル領域
ＷＬ  ワード線
ＷＬＴ  書き込みデータラッチ回路
ＷＭＢＬ  書き込み系メインビット線
ＷＳＥＬ  書き込み列選択回路
ｙｒｂ，ｙｒａｊ，ｙｒａｋ，ｒｅｆｊ，ｒｅｆｋ  選択信号
【図１】
2012243332.tif 000003
【図２】
2012243332.tif 000004
【図３】
2012243332.tif 000005
【図４】
2012243332.tif 000006
【図５】
2012243332.tif 000007
【図６】
2012243332.tif 000008
【図７】
2012243332.tif 000009
【図８】
2012243332.tif 000010
【図９】
2012243332.tif 000011
【図１０】
2012243332.tif 000012
【図１１】
2012243332.tif 000013
【図１２】
2012243332.tif 000014
【図１３】
2012243332.tif 000015
【図１４】
2012243332.tif 000016
【図１５】
2012243332.tif 000017
【図１６】
2012243332.tif 000018
【図１７】
2012243332.tif 000019
【図１８】
2012243332.tif 000020
【図１９】
2012243332.tif 000021