(57)【要約】【課題】簡易な構成で、かつ、訂正能力が高い誤り訂正装置を提供する。【解決手段】パリティビットを含むｎビットの符号化データに対してｃ（ｃ＜ｎ）個の誤り訂正を実行することが可能な誤り訂正装置であって、誤り訂正装置は、c個の誤りビットと、ｎ−ｃ個以下の消失ビットとを含み、消失ビットのデータを仮定した複数の仮定データを設定する仮定データ設定回路と、仮定データ設定回路で設定された複数の仮定データのそれぞれに対してシンドロームを算出し、算出結果およびパリティビットに基づいて復号する復号回路とを備える。【選択図】図５
2017022651.tif 000002
【特許請求の範囲】
【請求項１】
パリティビットを含むｎビットの符号化データに対してｃ（ｃ＜ｎ）個の誤り訂正を実行することが可能な誤り訂正装置であって、
ｃ個以下の誤りビットとｎ−ｃ個以下の０であるか１であるかを判定できないビットつまり消失ビットとを含む符号化データに対して、前記消失ビットのデータを仮定した複数の仮定データを設定する仮定データ設定回路と、
前記仮定データ設定回路で設定された複数の仮定データのそれぞれに対してシンドロームを算出し、算出結果および前記パリティビットに基づいて復号する復号回路を備えた、誤り訂正装置。
【請求項２】
前記復号回路は、前記複数の仮定データに対する復号結果に対して前記パリティビットに基づいて復号結果の１つを選択する、請求項１記載の誤り訂正装置。
【請求項３】
前記復号回路は、前記算出結果および前記パリティビットに基づいて前記複数の仮定データの１つを選択して復号する、請求項１記載の誤り訂正装置。
【請求項４】
前記ｎビットの符号化データの各ビットは、３値あるいは４値データとして表わされる、請求項１記載の誤り訂正装置。
【請求項５】
前記３値あるいは４値データは、２ビットで表わされ、
前記２ビットのうちの１ビットは、前記符号化データの対応するビットのデータ値の大小を示し、
前記２ビットのうちの他の１ビットは、前記符号化データの対応するビットが消失ビットか否かを示す、請求項４記載の誤り訂正装置。
【請求項６】
前記仮定データ設定回路は、予め定められた優先度に従って複数の仮定データを設定する、請求項１記載の誤り訂正装置。
【請求項７】
前記符号化データにおける前記消失ビットの位置を決定する消失位置決定回路をさらに備える、請求項１記載の誤り訂正装置。
【請求項８】
前記仮定データ設定回路は、互いに並列に動作する、訂正可能な消失ビット数に応じた複数の仮定データ設定ユニットを含み、
前記復号回路は、前記複数の仮定データ設定ユニットにそれぞれ対応して設けられ、設定された仮定データを復号する複数の復号ユニットを含む、請求項１記載の誤り訂正装置。
【請求項９】
前記仮定データ設定回路は、訂正可能な消失ビット数のべき乗個の仮定データ設定ユニットを含み、
前記仮定データ設定ユニットのそれぞれは、仮定する消失ビットの値の組み合わせに基づいてそれぞれが異なる仮定データを設定する、請求項１記載の誤り訂正装置。
【請求項１０】
前記復号回路は、前記複数の仮定データに対してパリティチェックを行う、請求項１記載の誤り訂正装置。
【請求項１１】
前記復号回路は、ハミング復号あるいはＢＣＨ復号を実行する、請求項１記載の誤り訂正装置。
【請求項１２】
パリティビットを含むｎビットの符号化データを格納する複数の記憶素子と、
前記複数の記憶素子に格納された符号化データを読み出す読出回路と、
前記読出回路により読出された符号化データに対してｃ（ｃ＜ｎ）個の誤り訂正を実行することが可能な誤り訂正回路とを備え、
前記誤り訂正回路は、
ｃ個以下の誤りビットと少なくとも１つ以上の消失ビットとを含む符号化データに対して、前記消失ビットのデータを仮定した複数の仮定データを設定する仮定データ設定回路と、
前記仮定データ設定回路で設定された複数の仮定データのそれぞれに対してシンドロームを算出し、算出結果および前記パリティビットに基づいて復号する復号回路とを含む、半導体記憶装置。
【請求項１３】
前記読出回路は、各前記記憶素子に格納されているデータに従う電圧と、比較の対象となる基準電圧との比較に基づいて前記符号化データを読み出す、請求項１２記載の半導体記憶装置。
【請求項１４】
前記記憶素子に格納された符号化データは、SRAM、DRAM、Flashメモリ、ReRAM、MRAMまたはFeRAMに格納された抵抗値、電荷量、電圧値または電流値である請求項１２記載の半導体記憶装置。
【請求項１５】
パリティビットを含むｎビットの符号化データに対してｃ（ｃ＜ｎ）個の誤り訂正を実行することが可能な誤り訂正方法であって、
ｃ個以下の誤りビットと少なくとも１つ以上の消失ビットとを含む符号化データに対して、前記消失ビットのデータを仮定した複数の仮定データを設定するステップと、
前記複数の仮定データのそれぞれに対してシンドロームを算出するステップと、
前記算出したシンドロームおよび前記パリティビットに基づいて復号するステップとを備える、誤り訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、誤り訂正装置に関し、特にパリティビットを含む誤り訂正符号を用いた誤り訂正装置に関する。
【背景技術】
【０００２】
メモリなどに記憶されたデジタル情報を読み出すときや、伝送されたデジタル情報を受信するときに、元のデータを正しく復号する技術として誤り訂正技術が知られている。
【０００３】
誤り訂正技術は、元のデータを符号化することで冗長性を持たせ、この冗長性を利用してデータの誤りを検出，訂正するものである。誤り訂正符号としてたとえば、ハミング符号やＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号が知られている（非特許文献１）。
【０００４】
また、特許文献１では別の誤り訂正符号が開示されている。具体的には、ＭＲＡＭ（Magnetoresistive Random Access Memory）においてメモリセルの抵抗値を読み出すときに、セル抵抗値に対して複数のしきい値を設定することで、「０」または「１」を判定するセル抵抗値以外に、消失状態を判定するセル抵抗値を設けている。この符号化・復号化にリードソロモン符号を用いることで、データの反転状態のみならず消失状態も考慮して訂正を行うことが示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１１５１９７号公報
【非特許文献】
【０００６】
【非特許文献１】The Art of Error Correcting Coding, John Wiley & Sons, 2002, pp103, pp55-56
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、リードソロモン符号は訂正能力が高い一方で、冗長性が高く、ハミング符号やＢＣＨ符号に比べて処理が複雑であるため、復号処理に時間がかかる。そのため、高速なデータの読み出しはできず、特に、リアルタイムでアクセスする必要のあるコンピュータの主記憶メモリなどには適用が難しい。また、複雑なデコード処理を行うため、誤り訂正を実現する回路構成が大きくなる、という問題もあった。
【０００８】
一方、ハミング符号や一部のＢＣＨ符号を用いた誤り訂正は、高速な復号処理を行うことができるが、訂正能力が高くないためエラー発生確率を大幅に下げることができなかった。
【０００９】
本開示は、上記のような問題を解決するためになされたものであって、簡易な構成で、かつ、訂正能力が高い誤り訂正装置、半導体記憶装置および誤り訂正方法を提供することである。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施形態に従う誤り訂正装置は、パリティビットを含むｎビットの符号化データに対してｃ（ｃ＜ｎ）個の誤り訂正を実行することが可能な誤り訂正装置である。誤り訂正装置は、ｃ個の誤りビットと、ｎ−ｃ個以下の消失ビットとを含み、消失ビットのデータを仮定した複数の仮定データを設定する仮定データ設定回路と、仮定データ設定回路で設定された複数の仮定データのそれぞれに対してシンドロームを算出し、算出結果およびパリティビットに基づいて復号する復号回路とを備える。
【発明の効果】
【００１２】
一実施形態に従う誤り訂正装置によれば、簡易な構成で、誤り訂正符号を用いた誤り訂正能力を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】ハミング符号を用いたデータの符号化について説明する図である。
【図２】ハミング符号によって符号化されたデータの誤り検出方法、および誤り訂正方法について説明する図である。
【図３】拡張ハミング符号を用いたデータの誤り検出方法について説明する図である。
【図４】実施形態１に従うハミング符号によって符号化された１ビット消失および１ビット反転を含むデータの誤り訂正方法について説明する図である。
【図５】実施形態１に従う誤り訂正装置の構成例を示す図である。
【図６】実施形態１の変形例に従う復号回路の構成例を示す図である。
【図７】実施形態１に従う消失位置決定回路の構成例を示す図である。
【図８】実施形態１に従う仮定データ設定回路の構成例を示す図である。
【図９】実施形態１に従う半導体記憶装置の構成例を示す図である。
【図１０】実施形態１に従う消失判定回路の回路構成例を示す図である。
【図１１】実施形態１に従うメモリセルの抵抗値に対する確率分布を示す図である。
【図１２】実施形態１に従う異なる条件でのエラー発生確率を比較する図である。
【図１３】実施形態１に従うハミング符号によって符号化された２ビット消失を含むデータの誤り訂正方法について説明する図である。
【図１４】実施形態１の変形例に従う誤り訂正装置の構成例を示す図である。
【図１５】実施形態２に従うメモリセルの抵抗値に対する確率分布を示す図である。
【図１６】実施形態２に従うメモリセルの抵抗値に対する確率分布を示す図である。
【図１７】実施形態２に従う３ビット消失を含むハミング符号の誤り訂正方法について説明する図である。
【図１８】実施形態２に従う消失判定回路の回路構成例を示す図である。
【図１９】ＢＣＨ符号を用いたデータの符号化例について説明する図である。
【図２０】ＢＣＨ符号によって符号化されたデータの誤り検出方法、および誤り訂正方法について説明する図である。
【図２１】実施形態３に従うＢＣＨ符号によって符号化された１ビット消失および２ビット反転を含むデータの誤り訂正方法について説明する図である。
【発明を実施するための形態】
【００１４】
以下、この発明の実施形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００１５】
図１は、ハミング符号を用いたデータの符号化について説明する図である。ここでは、例として（７，４）ハミング符号の場合について説明する。図１に示されるように、４ビットの元データに対して４行７列の生成行列を乗算することで、３ビットの冗長ビットを含む（７，４）ハミング符号（符号化データ）を得ることができる。
【００１６】
図２は、ハミング符号によって符号化されたデータの誤り検出方法、および誤り訂正方法について説明する図である。符号化データに対して、検査行列の転置行列を乗算することでシンドロームを得ることができる。図２（ａ）を参照して、符号化データが、誤りを含まない場合は、シンドロームの全ての成分が０となる。一方、図２（ｂ）を参照して、符号化データが１ビット反転を含む場合は、シンドロームの各成分が０とはならない。このように、ハミング符号を用いた誤り検出方法は、シンドロームを算出することで符号化データに誤りが含まれているか否かを判断することができる。
【００１７】
図２（ｂ）を参照して、ハミング符号を用いた誤り訂正方法は、符号化データが誤りとして１ビット反転を含む場合、シンドロームと検査行列とを比較することで、どの列に誤りがあるかを判定することができる。しかし、ハミング符号の訂正能力は１ビット反転を訂正することまでである。したがって、符号化データが２ビット以上の反転を含む場合、ハミング符号を用いた誤り訂正方法では、シンドロームと検査行列とを比較しても、どの列に誤りがあるかを判定することができず、かつ、何ビットの誤りを含むのかを判定することができない。
【００１８】
図３は、拡張ハミング符号を用いたデータの誤り検出方法について説明する図である。
図３を参照して、（７，４）ハミング符号に１ビットのパリティビットを追加する。ここでは、一例として偶数パリティとなるようにパリティビットを１に設定する場合について説明する。この符号化データが何らかの物理的な影響を受け、エラーが発生したとする。
【００１９】
図３（ａ）を参照して、仮に符号化データが１ビット反転を含む場合は、パリティが奇数となる。
【００２０】
一方、図３（ｂ）を参照して、仮にデータが２ビット反転を含む場合は、パリティが偶数となる。
【００２１】
したがって、拡張ハミング符号を用いた誤り検出方法は、元の符号化データのパリティと、エラーを含む符号化データのパリティとを比較（パリティチェック）することで、エラーを含む符号化データが１ビット反転を含むのか、２ビット反転を含むのか、を検査することができる。
【００２２】
［実施形態１−ハミング符号を用いた１ビット消失１ビット反転訂正］
図４は、実施形態１に従うハミング符号によって符号化された１ビット消失および１ビット反転を含むデータの誤り訂正方法について説明する図である。
【００２３】
図４（ａ）を参照して、例として、４ビットの元データを（８，４）ハミング符号とする。このとき、偶数パリティとなるようにパリティビットを設定する。この符号化データにエラーが発生し、１ビット反転および１ビット消失を含む符号化データになったものとする。消失とは、データが正常状態「０」か反転状態「１」かを判定できない状態を指す。
【００２４】
図４（ｂ）を参照して、元データの復号を行うにあたって、入力データの消失ビットが「０」である場合、および消失ビットが「１」である場合のそれぞれについて仮定データを設定する。この時点では、それぞれの仮定データに反転が含まれているか否かは不明である。
【００２５】
次に、本実施形態１に従う誤り訂正方法では、設定した仮定データのそれぞれに対してシンドロームを計算し、元データを復号する。このとき、いずれの仮定データも、シンドロームの各成分が０とならないことから１ビット以上の反転を含むことが分かる。
【００２６】
次に、設定した仮定データのそれぞれについて、パリティチェックを行う。元の符号化データはパリティが偶数となるように設定されていることから、仮定データのパリティが奇数となる場合は１ビットの反転を含み、仮定データのパリティが偶数となる場合は２ビットの反転を含む、と判定することができる。本実施形態においては、ハミング符号の誤り訂正能力の範囲内である、奇数パリティの仮定データを正しい仮定データと判定する。そして、当該仮定データを用いて復号した復号結果を採用する。
【００２７】
なお、入力データに反転が含まれず、１ビット消失または２ビット消失が含まれている場合も考えられる。この場合は、消失ビットが「０」である場合、および消失ビットが「１」である場合のそれぞれについて仮定データを設定し、そのうちシンドロームの各成分が０となる仮定データを用いて復号した復号結果を採用する。
【００２８】
本実施形態１によれば、簡易な方法で、誤り訂正符号が有する訂正能力を向上することができる。
【００２９】
図５は、実施形態１に従う誤り訂正装置の構成例を示す図である。例として、ハミング符号を用いた誤り訂正を実現する誤り訂正装置１について説明する。誤り訂正装置１は、入力データ受付回路１０と、状態判定回路２０と、消失位置決定回路１００と、仮定データ設定回路２００と、復号回路３００とを含む。
【００３０】
実施形態１に従う誤り訂正装置１に入力されるデータの例として、ハミング符号を用いて符号化したｎビットの符号化データを用いる。
【００３１】
入力データ受付回路１０は、誤り訂正装置に入力されるｎビットの入力データＢＩＴ０〜ＢＩＴｎ−１を受け付けて記憶し、状態判定回路２０に出力する。たとえば、入力データ受付回路１０はバッファやレジスタで構成されていてもよい。
【００３２】
状態判定回路２０は、入力データ受付回路１０から入力される入力データＢＩＴ０〜ＢＩＴｎ−１の各ビットが、消失状態であるか否かを判定する。たとえば、状態判定回路２０は、入力データＢＩＴｋ（ｋ＝０，１，・・・ｎ−１）が消失状態の場合、消失状態判定データＥＲｋを１として出力する。また、状態判定回路２０は、入力データＢＩＴｋが消失状態で無い場合（正常状態あるいは反転状態である場合）消失状態判定データＥＲｋを０として出力する。
【００３３】
消失位置決定回路１００は、状態判定回路２０から入力される消失状態判定データＥＲ０〜ＥＲｎ−１に基づいて、消失ビットの位置を決定する。具体的には、消失位置決定回路１００は、消失状態判定データＥＲ０〜ＥＲｎ−１の中に複数の消失状態を示すビットが含まれている場合に、予め定められた優先順位に従って、所定の数のビットを消失ビットとして出力する。
【００３４】
たとえば、消失位置決定回路１００は、消失状態判定データＥＲｋが消失状態を示しており、優先順位が高いために消失ビットとして設定された場合、消失位置決定回路１００は、消失位置決定データＥＲＳＥＬｋを１として出力する。消失状態判定データＥＲｋが消失状態を示していない場合は、消失位置決定回路１００は、消失位置決定データＥＲＳＥＬｋを０として出力する。
【００３５】
消失ビットとして設定される所定の数は、誤り訂正符号が有する消失訂正能力に応じたビット数として定められてもよい。
【００３６】
なお、入力データ受付回路１０に入力データＢＩＴ０〜ＢＩＴｎ−１がシリアルに入力され、入力に際し消失ビット位置を特定することができる場合には、誤り訂正装置１は消失位置決定回路１００を含まなくてもよい。
【００３７】
仮定データ設定回路２００は、消失位置決定回路１００から入力される消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬｎ−１および、入力データ受付回路１０から入力される入力データＢＩＴ０〜ＢＩＴｎ−１に基づいて、各消失ビットが「０」の場合と「１」の場合とのそれぞれについて、仮定データを設定する。
【００３８】
仮定データ設定回路２００は、仮定データ設定ユニット２００ａ，２００ｂを含む。たとえば、仮定データ設定ユニット２００ａは、消失位置決定データＥＲＳＥＬｋが「０」（消失ビットでない）に対応する入力データＢＩＴｋを仮定データＢＩＴＥＲＬｋに設定する。一方、仮定データ設定ユニット２００ａは、消失位置決定データＥＲＳＥＬｋが「１」（消失ビットである）に対応する入力データＢＩＴｋを仮定データＢＩＴＥＲＬｋ（「０」）に設定する。仮定データ設定ユニット２００ｂは、消失位置決定データＥＲＳＥＬｋが「０」に対応する入力データＢＩＴｋを仮定データＢＩＴＥＲＨｋに設定する。一方、仮定データ設定ユニット２００ｂは、消失位置決定データＥＲＳＥＬｋが「１」に対応する入力データＢＩＴｋを仮定データＢＩＴＥＲＨｋ（「１」）に設定する。
【００３９】
なお、消失位置決定回路１００において、複数のビットを消失ビットとして設定する場合は、消失ビットの数のべき乗個の仮定データ設定ユニットを設け、各々の仮定データ設定ユニットが異なる仮定データを出力するように構成されてもよい。
【００４０】
復号回路３００は、仮定データ設定回路２００から入力される仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬｎ−１およびＢＩＴＥＲＨ０〜ＢＩＴＥＲＨｎ−１に基づいて、元データを復号する。
【００４１】
本実施形態に従う復号回路３００は、復号ユニット３１０と、復号ユニット３２０と、選択部３３０とを含む。
【００４２】
復号ユニット３１０は、シンドローム算出部３１２と、符号復号部３１４と、パリティチェック部３１６とを含む。
【００４３】
復号ユニット３２０は、シンドローム算出部３２２と、符号復号部３２４と、パリティチェック部３２６とを含む。
【００４４】
復号ユニット３１０において、シンドローム算出部３１２は、仮定データ設定ユニット２００ａに設定された仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬｎ−１を用いて、シンドロームＳＬを計算する。
【００４５】
符号復号部３１４は、その計算結果に基づいてデータを復号する。
パリティチェック部３１６は、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬｎ−１のパリティチェックを行い、復号結果とパリティ情報ＰＬ（パリティチェックの結果）とを選択部３３０に出力する。
【００４６】
なお、パリティチェック部３１６はシンドローム算出部３１２の前段に設置してもよいし、シンドローム算出部３１２と符号復号部３１４との間に設置してもよい。あるいは、シンドローム算出部３１２および符号復号部３１４とパリティチェック部３１６とを並列に並べ、同時に動作させてもよい。
【００４７】
復号ユニット３２０において、シンドローム算出部３２２は、仮定データ設定ユニット２００ｂに設定された仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨｎ−１を用いて、シンドロームＳＨを計算する。
【００４８】
符号復号部３２４は、その計算結果に基づいてデータを復号する。
パリティチェック部３２６は、仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨｎ−１のパリティチェックを行い、復号結果とパリティ情報ＰＨとを選択部３３０に出力する。
【００４９】
本実施形態１において、復号回路３００は、仮定データ設定回路２００が設定した仮定データの数に応じて復号ユニットを設けている。処理時間のかかる復号処理を並列動作させ、高速なデコードを可能とするためである。なお、別の局面に従う仮定データ設定回路２００は、複数の復号ユニットを有さず、単体で動作するように構成されてもよい。
【００５０】
選択部３３０は、パリティチェック部３１６，３２６から入力されたパリティ情報ＰＬ，ＰＨのうち、予め定められたパリティ情報と一致するパリティ情報を選択し、選択されたパリティ情報ＰＬ，ＰＨのいずれかに対応する復号結果を選択する。具体的には、選択部３３０は、ハミング符号の誤り訂正能力の範囲内である、奇数パリティを示すパリティ情報を選択し、奇数パリティに対応する復号結果を出力する。一方、偶数パリティを示すパリティ情報に対応する復号結果は、ハミング符号の誤り訂正能力を超えたものであるとして、選択部３３０は、当該復号結果を出力しない。
【００５１】
このように、簡易な構成で本来誤り訂正符号が有する訂正能力を向上させる誤り訂正装置を実現することができる。
【００５２】
図６は、実施形態１の変形例に従う復号回路の構成例を示す図である。
図６に示されるように、復号回路３００の変形例として、復号回路３６０を用いてもよい。
【００５３】
復号回路３６０は、シンドローム算出部３１２，３２２と、パリティチェック部３１６，３２４と，仮定データ選択部３４０と、符号復号部３５０とを含む。
【００５４】
シンドローム算出部３１２は、仮定データ設定ユニット２００ａに設定された仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬｎ−１を用いて、シンドロームＳＬを算出する。
【００５５】
パリティチェック部３１６は、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬｎ−１のパリティチェックを行い、パリティ情報ＰＬとシンドロームＳＬとを仮定データ選択部３４０に出力する。
【００５６】
シンドローム算出部３２２は、仮定データ設定ユニット２００ｂに設定された仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨｎ−１を用いてシンドロームＳＨを算出する。
【００５７】
パリティチェック部３２６は、仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨｎ−１のパリティチェックを行い、パリティ情報ＰＨとシンドロームＳＨとを仮定データ選択部３４０に出力する。
【００５８】
仮定データ選択部３４０は、シンドロームＳＬ，ＳＨを確認する。
仮定データ選択部３４０は、シンドロームＳＬ，ＳＨのいずれかが０となる仮定データが存在すれば、当該仮定データを正しい仮定データだと判定し、シンドローム算出結果とともに当該仮定データを符号復号部３５０に出力する。
【００５９】
符号復号部３５０は、入力された仮定データおよびシンドロームに基づいて、復号結果を復号し、その結果を出力する。
【００６０】
一方、仮定データ選択部３４０は、シンドロームＳＬ，ＳＨのいずれもが０で無い場合には、パリティ情報ＰＨ，ＰＬのうち、予め定められたパリティ情報と一致するパリティ情報を選択し、選択されたパリティ情報ＰＬ，ＰＨのいずれかに対応する仮定データとシンドロームとを符号復号部３５０に出力する。具体的には、本例においては、仮定データ選択部３４０は、ハミング符号の誤り訂正能力の範囲内である、奇数パリティを示すパリティ情報に対応する仮定データとシンドロームとを出力する。
【００６１】
符号復号部３５０は、入力された仮定データおよびシンドロームに基づいて、復号結果を復号し、その結果を出力する。
【００６２】
本例においては、予め正しい仮定データを選択することで、複数の仮定データの復号処理を省略することができる。その結果、回路構成の省スペース化、および高速処理を実現することができる。
【００６３】
次に、入力データ受付回路１０に入力されるデータの具体例を用いて誤り訂正装置１の動作を説明する。たとえば、元データ（０１０１）に対して偶数パリティとなるようにパリティビットを設定した（８，４）ハミング符号（０１０１０１０１）にエラーが発生し、入力データ受付回路１０に入力データＢＩＴ０〜ＢＩＴ７（００＊１０１０１）が入力されたものとする。この入力データは２ビット目が反転し、３ビット目が消失している。
【００６４】
状態判定回路２０は、入力データＢＩＴ０〜ＢＩＴ７（００＊１０１０１）の３ビット目が消失状態であると判定し、消失状態判定データＥＲ０〜ＥＲ７（００１０００００）を消失位置決定回路１００に出力する。
【００６５】
消失位置決定回路１００は、予め定められた優先順位に基づいて消失状態判定データＥＲ２を消失ビットとして決定し、消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬ７（００１０００００）を仮定データ設定回路２００に出力する。
【００６６】
仮定データ設定回路２００は、入力データ受付回路１０に受け付けられた入力データＢＩＴ０〜ＢＩＴｎ−１および消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬ７に基づいて仮定データを設定する。
【００６７】
本例においては、仮定データ設定ユニット２００ａは、入力データＢＩＴ０〜ＢＩＴ７（００＊１０１０１）の消失ビットが「０」である仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）を設定する。仮定データ設定ユニット２００ｂは、入力データＢＩＴ０〜ＢＩＴ７（００＊１０１０１）の消失ビットが「１」である仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（００１１０１０１）を設定する。さらに、仮定データ設定回路２００は、これら設定したデータを復号回路３００に出力する。
【００６８】
シンドローム算出部３１２は、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）を用いてシンドロームＳＬを算出する。
【００６９】
符号復号部３１４はシンドロームＳＬと検査行列とを比較し、復号結果（０１０１）を復号する。
【００７０】
パリティチェック部３１６は、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）のパリティが奇数パリティであると判定し、復号結果（０１０１）と奇数パリティを示すパリティ情報ＰＬとを選択部３３０に出力する。
【００７１】
一方、シンドローム算出部３２２は、仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（００１１０１０１）を用いてシンドロームＳＨを算出する。
【００７２】
符号復号部３１４は、シンドロームＳＨと検査行列とを比較し、復号結果（１１０１）を復号する。
【００７３】
パリティチェック部３２６は、仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（００１１０１０１）のパリティが偶数パリティであると判定し、復号結果（１１０１）と偶数パリティＰＨを示すパリティ情報とを選択部３３０に出力する。
【００７４】
選択部３３０は、入力された復号結果（０１０１），（１１０１）のうち、ハミング符号の誤り訂正能力の範囲内である奇数パリティＰＬに対応する復号結果（０１０１）を選択し、復号結果（０１０１）を出力する。一方、偶数パリティＰＨに対応する復号結果（１１０１）は、ハミング符号の誤り訂正能力を超えたものであるとして、選択部３３０は、復号結果（１１０１）を出力しない。
【００７５】
次に、復号回路として３００ではなく３６０を用いた場合についても説明する。重複部分の説明についてはその詳細について繰り返さない。
【００７６】
シンドローム算出部３１２は、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）を用いてシンドロームＳＬを算出する。
【００７７】
パリティチェック部３１６は、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）のパリティが奇数パリティであると判定し、シンドロームＳＬと、仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）と、奇数パリティを示すパリティ情報ＰＬとを仮定データ選択部３４０に出力する。
【００７８】
シンドローム算出部３２２は、仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（００１１０１０１）を用いてシンドロームＳＨを算出する。
【００７９】
パリティチェック部３２６は、仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（００１１０１０１）のパリティが偶数パリティであると判定し、シンドロームＳＨと、ＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（００１１０１０１）と、偶数パリティを示すパリティ情報ＰＨとを仮定データ選択部３４０に出力する。
【００８０】
仮定データ選択部３４０は、シンドロームＳＬ，ＳＨを確認する。
仮定データ選択部３４０は、シンドロームＳＬ，ＳＨの各成分がいずれかが０となる仮定データが存在する場合は、当該仮定データを正しい仮定データだと判定し、シンドローム算出結果と当該仮定データとを符号復号部３５０に出力する。
【００８１】
符号復号部３５０は、入力された仮定データおよびシンドロームに基づいて、復号結果を復号し、その結果を出力する。
【００８２】
仮定データ選択部３４０は、シンドロームＳＬ，ＳＨの各成分がいずれもが０で無い場合には、パリティ情報ＰＬ，ＰＨのうち、ハミング符号の誤り訂正能力の範囲内である、奇数パリティＰＬを選択する。そして、仮定データ選択部３４０は、パリティ情報ＰＬに対応する仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）と、シンドロームＳＬとを符号復号部３５０に出力する。
【００８３】
符号復号部３５０は、入力された仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）およびシンドロームＳＬに基づいて、データを復号し、復号結果（０１０１）を出力する。
【００８４】
仮定データ選択部３４０が予め正しい仮定データを選択することで、復号仮定を省略することができる。その結果、回路構成の省スペース化、および高速処理を実現することができる。
【００８５】
図７は、実施形態１に従う消失位置決定回路の構成例を示す図である。
図７に示されるように、消失位置決定回路１００は、状態判定回路２０から入力される消失状態判定データＥＲ０〜ＥＲｎ−１に基づいて消失ビットの位置を決定する。具体的には、消失位置決定回路１００は、ＮＯＲゲート１０２とＡＮＤゲート１０４とを含む。
【００８６】
ＮＯＲゲート１０２は、消失状態判定データＥＲ０〜ＥＲｎ−１の入力を受け付けてＮＯＲ論理演算結果をＡＮＤゲート１０４に出力する。
【００８７】
ＡＮＤゲート１０４は、ＮＯＲゲート１０２からの出力と消失状態判定データＥＲｋの入力とを受けて、そのＡＮＤ論理演算結果を出力する。
【００８８】
ここでは、例として消失状態判定データＥＲ０の優先順位が最も高く、ＥＲ１，ＥＲ２と順に優先順位が下がっていき、ＥＲｎ−１の優先順位が最も低いとする。
【００８９】
たとえば、消失状態判定データＥＲｋが消失状態「１」を示しているとしても、消失状態判定データＥＲｋ−１（ｋ≧２）が消失状態「１」を示している場合、ＮＯＲゲート１０２の出力は「０」となる。その結果、ＡＮＤゲート１０４の出力である消失位置決定データＥＲＳＥＬｋは「０」となる。
【００９０】
一方、消失状態判定データＥＲｋが消失状態「１」を示し、ＥＲｋよりも優先順位が高い消失状態判定データが全て非消失状態「０」を示す場合、ＮＯＲゲート１０２の出力は「１」となる。その結果、消失位置決定データＥＲＳＥＬｋは「１」となる。
【００９１】
本実施形態１における消失位置決定回路１００では、入力された消失状態判定データＥＲ０〜ＥＲｎ−１のうち消失状態を示し、かつ最も優先順位の高い消失状態判定データＥＲｋのみが消失ビットとして設定される構成であるため、入力データにおける消失ビットの位置を特定することができる。
【００９２】
なお、実施形態１では消失状態判定データＥＲ０〜ＥＲｎ−１のうち１ビットのみを消失ビットとして設定しているが、別の局面において、予め定められたビット数を消失ビットとして扱ってもよい。たとえば、誤り訂正符号が有する消失訂正能力に応じたビット数を消失ビットとして設定してもよい。
【００９３】
図８は、実施形態１に従う仮定データ設定回路の構成例を示す図である。
図８に示されるように、仮定データ設定回路２００は、仮定データ設定ユニット２００ａと、仮定データ設定ユニット２００ｂとを含む。仮定データ設定ユニット２００ａは、インバータ２０２と、ＡＮＤゲート２０４とを含む。仮定データ設定ユニット２００ｂは、ＯＲゲート２０６を含む。
【００９４】
ＡＮＤゲート２０４は、入力データ受付回路１０から入力された入力データＢＩＴｋおよびインバータ２０２を介し反転された消失位置決定データＥＲＳＥＬｋとの入力を受けて、そのＡＮＤ論理演算結果を仮定データＢＩＴＥＲＬｋとして設定する。
【００９５】
ＯＲゲート２０６は、入力データ受付回路１０から入力された入力データＢＩＴｋと、消失位置決定データＥＲＳＥＬｋとの入力を受けて、そのＯＲ論理演算結果を仮定データＢＩＴＥＲＨｋとして設定する。
【００９６】
本実施形態１では、消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬｎ−１は消失位置決定回路１００によって予め定められた１ビットのみが消失ビット「１」となり、他のｎ−１個のビットは非消失ビット「０」となる。
【００９７】
たとえば、ｋ番目の消失位置決定データＥＲＳＥＬｋが非消失ビット「０」である場合、ＡＮＤゲート２０４およびＯＲゲート２０６において入力データＢＩＴｋがそのまま出力されるため、仮定データＢＩＴＥＲＬｋとＢＩＴＥＲＨｋとが等しくなる。
【００９８】
一方、ｋ番目のＥＲＳＥＬｋが消失ビット「１」である場合、ＢＩＴｋが存在しないため、仮定データＢＩＴＥＲＬｋが０となり、仮定データＢＩＴＥＲＨｋが１となる。
【００９９】
このようにして、消失ビットが「０」である場合、および消失ビットが「１」である場合をそれぞれ仮定した仮定データを設定することができる。
【０１００】
図９は、実施形態１に従う半導体記憶装置を示す図である。
図９を参照して、半導体記憶装置５は、メモリセル５０６が行列状に集積配置されるメモリセルアレイ５００を含む。メモリセルアレイ５００は、メモリセル５０６の各行に対応して配設されるワード線５０２と、メモリセル５０６の各列に対応して配設されるビット線５０４とを含む。ビット線５０４はプレート線で構成されていてもよい。半導体記憶装置５は、さらに、アドレス指定されたメモリセル５０６のデータを読み出すときに、ビット線５０４からのデータを増幅して読み出すセンスアンプ５０８と、センスアンプの出力を電流値または電圧値として受け取り、メモリセル５０６に記憶されたビットの状態を検出する消失判定回路５１０とを含む。
【０１０１】
メモリセル５０６は、揮発性または不揮発性のメモリ素子のいずれであってもよい。たとえば、SRAM（Static Random Access Memory）、DRAM（Dynamic Random Access Memory）、Flashメモリ、ReRAM（Resistance Random Access Memory）、MRAMまたはFeRAM（Ferroelectric Random Access Memory）が挙げられる。
【０１０２】
メモリセル５０６のデータとしては、たとえば、メモリセル５０６の抵抗値、電圧値、電荷量、または電流量が挙げられる。
【０１０３】
消失判定回路５１０は、ビット線５０４毎には配置されず、メモリセルアレイ５００に対して、メモリセルアレイが同時に出力することができるデータ数分だけ配置される。複数のビット線５０４が消失判定回路５１０を共有することで、消失判定回路５１０を複数設けたときに生じる、メモリセル５０６に記憶されたビットの状態判定のばらつきを極力抑えることができるためである。
【０１０４】
図１０は、実施形態１に従う消失判定回路の回路構成を示す図である。
図１０を参照して、消失判定回路５１０は、メモリセル５０６に記憶されたビットの状態を判定する。
【０１０５】
本実施形態１における消失判定回路５１０は、比較器５１２，５１４と、ＡＮＤゲート５１６と、インバータ５１８とを含む。センスアンプ５０８は、ビット線５０４から読み出したメモリセル５０６のデータレベルに応じた電圧ＳＥＮＳを出力する。消失判定回路５１０は、この電圧ＳＥＮＳと、比較器５１２，５１４に入力される基準電圧ＶｒｅｆＨ，ＶｒｅｆＬとを比較することで、メモリセル５０６に記憶されたビットの状態を検出する。ここで、電圧値はＶｒｅｆＨ＞ＶｒｅｆＬとする。
【０１０６】
具体的には、センスアンプ５０８から出力される電圧ＳＥＮＳが比較器５１２に入力される基準電圧ＶｒｅｆＨより低く、比較器５１４に入力される基準電圧ＶｒｅｆＬより高い場合、消失判定回路５１０は、比較器５１２，５１４の出力を「１」として出力する。その結果、消失判定回路５１０は、制御信号ＥＲを「１」として出力し、制御信号ＢＩＴを「０」として出力する。
【０１０７】
電圧ＳＥＮＳが比較器５１２に入力される基準電圧ＶｒｅｆＨ以上の場合は、比較器５１２の出力が「０」、比較器５１４の出力が「１」となる。その結果、消失判定回路５１０は、制御信号ＥＲを「０」として出力し、制御信号ＢＩＴを「１」として出力する。
【０１０８】
電圧ＳＥＮＳが比較器５１４に入力される基準電圧ＶｒｅｆＬ以下の場合は、比較器５１２の出力が「０」、比較器５１４の出力が「１」となる。その結果、消失判定回路５１０は、制御信号ＥＲを「０」として出力し、制御信号ＢＩＴを「０」として出力する。
【０１０９】
消失判定回路５１０は、メモリセルの記憶しているデータの状態を判定し、２ビットを出力する制御信号ＥＲと制御信号ＢＩＴとを組み合わせることでデータの状態を出力する。たとえば、消失判定回路５１０は、（制御信号ＥＲ，制御信号ＢＩＴ）が（１，０）の場合を消失状態＊と出力し、（０，１）の場合を反転状態１と判定し、（０，０）の場合を正常状態０と出力することができる。
【０１１０】
消失判定回路５１０で判定されたメモリセル５０６のビットの状態を、誤り訂正装置１における入力データ受付回路に出力することで、実施形態１に従う誤り訂正を行う半導体装置を実現することができる。
【０１１１】
図１１は、実施形態１に従うメモリセルの抵抗値に対する確率分布を示す図である。
図１１には、低抵抗セルに低抵抗状態を書き込んだ後で、読み出した時の抵抗値と、その発生確率の関係が示されている。
【０１１２】
メモリセル５０６の抵抗値に対して、しきい値ａ，ｂを設定することで、メモリセルの抵抗値を３値で読み出す。具体的には、しきい値ａ，ｂを消失判定回路５１０における比較器５１２，５１４の基準電圧ＶｒｅｆＨ，ＶｒｅｆＬに対応するように設定することで、消失判定回路５１０は、メモリセル５０６の抵抗値がしきい値ａ以下の場合を正常状態「０」と判定し、ｂ以上の場合を反転状態「１」と判定し、ａよりも高くｂよりも低い場合を消失状態「＊」と判定する。
【０１１３】
消失判定回路５１０は、メモリセル５０６が記憶しているデータを「＊」，「１」，「０」の３値で読み出し、誤り訂正装置１の入力データ受付回路１０に出力することで、メモリのデータ読み出しにおける誤り訂正装置として用いることができる。
【０１１４】
次に、一般的なハミング符号を用いた場合のエラー発生確率と、本実施形態１における誤り訂正方法を用いた場合のエラー発生確率とについて説明する。
【０１１５】
正常状態「０」となる確率をＰｐ、反転状態「１」となる確率をＰｆ、消失状態「＊」となる確率をＰｅとする。このとき、Ｐｐ＋Ｐｆ＋Ｐｅ＝１の関係式がなりたつ。
【０１１６】
一般的な（ｎ，ｋ）ハミング符号において、エラーとなる確率Ｐｃ２は、式（１）で表すことができる。
【０１１７】
【数１】
2017022651.tif 000003
【０１１８】
ｄは符号間距離を表しており、ハミング符号の場合はｄ＝３である。式（１）において（Ｐｆ＋Ｐｅ）＜＜Ｐｐである場合には、Ｐｃは（Ｐｆ＋Ｐｅ）の２乗に比例する。たとえば、（７，４）ハミング符号の場合には、式（２）により、Ｐｃ２は求められる。
【０１１９】
【数２】
2017022651.tif 000004
【０１２０】
一方、本実施形態１における誤り訂正方法を用いた場合のエラー発生確率Ｐｃ３は以下の式（３）で与えられる。
【０１２１】
【数３】
2017022651.tif 000005
【０１２２】
式（３）において（Ｐｆ＋Ｐｅ）＜＜Ｐｐである場合には、Ｐｃ３はＰｆとＰｅの関係によって以下の式（４），（５）に示されるように、２通りの値となる。
【０１２３】
【数４】
2017022651.tif 000006
【０１２４】
【数５】
2017022651.tif 000007
【０１２５】
Ｐｆ＜＜Ｐｅの場合、エラー発生確率Ｐｃは消失状態「＊」となる確率Ｐｅの３乗に比例する。この結果から、一般的なハミング符号を用いたエラー発生確率よりも、本実施形態１に従う誤り訂正方法を用いたエラー発生確率の方が低いことが分かる。
【０１２６】
図１２は、実施形態１に従う異なる条件でのエラー発生確率を比較する図である。
図１２には、いずれも低抵抗セルに低抵抗状態を、高抵抗セルに高抵抗状態を書き込んだ後で、読み出した時の抵抗値と、その発生確率との関係が示されている。
【０１２７】
図１２（ａ）には誤り訂正を行わずにセルから抵抗値を読み出したときの、抵抗値と発生確率の関係が示されている。発生確率が目標のエラー発生確率を下回るような抵抗値を高抵抗と低抵抗の境目の抵抗値と設定すれば、高抵抗と低抵抗のセルを現実的にはエラー無で判別することが可能である。ここで低抵抗セルは抵抗が上がるにつれ、高抵抗セルは抵抗が下がるにつれ、目標のエラー発生確率より高い発生確率に分布する。しかし、両者が共に目標のエラー発生確率を下回るような抵抗値は存在しない。したがって、誤り訂正方法を行わない場合（ａ）は、現実的にはエラー無で判別することはできない。
【０１２８】
図１２（ｂ）にはハミング符号を用いてセルから抵抗値を読み出したときの、抵抗値と発生確率の関係が示されている。低抵抗セルは抵抗が上がるにつれ、高抵抗セルは抵抗が下がるにつれ、目標のエラー発生確率よりやや高い発生確率に分布する。しかし、両者が共に目標のエラー発生確率を下回るような抵抗値は存在しない。誤り訂正を行わない場合（ａ）に比べるとエラー発生確率は下がったものの、一般的なハミング符号による誤り訂正を行う場合（ｂ）は、現実的にはエラー無で判別することはできない。
【０１２９】
図１２（ｃ）には本実施形態１における誤り訂正方法を用いてセルから抵抗値を読み出したときの、抵抗値と発生確率の関係が示されている。低抵抗セルは抵抗が上がるにつれ、高抵抗セルは抵抗が下がるにつれ、目標のエラー発生確率よりも大幅に低い発生確率に分布する。このため両者が共に目標のエラー発生確率を下回るような抵抗値が存在する。したがって、本実施形態１における誤り訂正方法を行う場合（ｃ）は、現実的にはエラー無で判別することができる。本実施形態１における誤り訂正方法によれば、簡易な構成にも関わらず、大幅にエラー発生確率を下げることができる。
【０１３０】
図１３は、実施形態１に従うハミング符号によって符号化された２ビット消失を含むデータの誤り訂正方法について説明する図である。
【０１３１】
図１３を参照して、４ビットの元データを（８，４）ハミング符号に符号化する。このとき、偶数パリティとなるようにパリティビットを設定する。この符号化データにエラーが発生し、２ビット消失を含む符号化データになったとする。
【０１３２】
まず、本実施形態における誤り訂正方法は、消失した２ビットのうちの１ビットを「０」もしくは「１」に設定する。たとえば、図１３（ａ）において、３ビット目の消失したビットを「０」と設定する。次に、本実施形態における誤り訂正方法は、２ビット目を消失ビットとして設定し、図１３（ａ１）のように消失ビットが「０」である場合と、図１３（ａ２）のように「１」である場合のそれぞれについて仮定データを設定する。この時点では、それぞれの仮定データに反転が含まれているか否かは不明である。
【０１３３】
次に、本実施形態における誤り訂正方法は、設定した仮定データのそれぞれに対してシンドロームを計算し、元データを復号する。このとき、図１３（ａ２）の消失ビットが「１」であると仮定した仮定データのシンドロームの全ての成分が０となることから、当該仮定データに基づいて復号した復号結果を採用する。なお、図１３（ａ１）の消失ビットが「０」であると仮定した仮定データのシンドローム結果に基づいて復号した結果を採用してもよい。
【０１３４】
一方、図１３（ｂ）において、３ビット目の消失したビットを「１」と設定した場合は、３ビット目が反転を示しており、符号化データは１ビット反転と１ビット消失とを含むこととなる。これは、上述の実施形態１に従う誤り訂正方法と同様の誤り訂正方法によって誤り訂正を行うことができるため、ここでは詳細な説明については繰り返さない。
【０１３５】
このように、簡易な方法で誤り訂正符号が有する訂正能力を向上することができる。
図１４は、実施形態１の変形例に従う誤り訂正装置の構成例を示す図である。
【０１３６】
本実施形態に従う誤り訂正方法を行う誤り訂正装置２について説明する。なお、上述した実施形態１における誤り訂正装置１との相違点のみについて説明し、重複する内容については繰り返さない。
【０１３７】
図１４を参照して、入力データ受付回路１０に入力データＢＩＴ０〜ＢＩＴ７（０＊＊１０１０１）が入力されたとする。状態判定回路２０は、消失状態判定データＥＲ０〜ＥＲ７（０１１０００００）を出力する。
【０１３８】
また、本例においては、消失位置決定回路１００は、消失位置決定回路１１０に変更される。消失位置決定回路１１０は、消失位置決定回路１００と比較して、消失ビット位置の決定と、設定データの設定を行う。具体的には、消失位置決定回路１１０は、予め定められた優先順位に基づいて２ビット目を消失ビットとして設定する。
【０１３９】
また、消失位置決定回路１１０は、消失状態判定データＥＲｋが「１」（消失状態）を表しているが、優先順位が低いなどの理由で消失位置決定データＥＲＳＥＬｋが０（非消失ビット）として設定されるビットを、「０」か「１」のいずれかに設定（固定）する設定データを生成する。
【０１４０】
具体的には、消失状態判定データＥＲｋが「０」（消失状態ではない）を示している場合、消失位置決定回路１１０は、入力データＢＩＴｋをそのまま設定するため設定データＥＢＩＴｋ（「０」）として出力する。一方、消失状態判定データＥＲｋが「１」（消失状態）を示し、かつ消失位置決定データＥＲＳＥＬｋが「０」（消失ビットとして設定されない）を示している場合、消失位置決定回路１１０は、入力データＢＩＴｋを「０」か「１」かのいずれかに設定するため設定データＥＢＩＴｋ（「１」）を出力する。
【０１４１】
なお、入力データＢＩＴｋが「０」または「１」のいずれに設定されるかは、予めいずれかに定められていてもよい。
【０１４２】
図１４の例では、消失状態判定データＥＲ２が「１」（消失状態）で、かつ、消失位置決定データＥＲＳＥＬ２が「０」（非消失ビット）であるため、消失位置決定回路１１０は、設定データＥＢＩＴ２を予め定められた設定に基づいて「１」とする。
【０１４３】
したがって、消失位置決定回路１１０は、消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬ７（０１００００００）と、設定データＥＢＩＴ０〜ＥＢＩＴ７（００１０００００）とを、仮定データ設定回路２００へ出力する。
【０１４４】
仮定データ設定回路２００は、入力データ受付回路１０に入力された入力データＢＩＴ０〜ＢＩＴ７（０＊＊１０１０１）、消失位置決定回路１１０から入力される消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬｎ−１（０１００００００）および、設定データＥＢＩＴ０〜ＥＢＩＴｎ−１（００１０００００）に基づいて、各消失ビットが「０」の場合と「１」の場合とのそれぞれについて、仮定データを設定する。
【０１４５】
具体的には、入力データＢＩＴ０〜ＢＩＴ７（０＊＊１０１０１）は、設定データＥＢＩＴ０〜ＥＢＩＴｎ−１（００１０００００）に従って、入力データＢＩＴ０〜ＢＩＴ７（０＊０１０１０１）に変換される。本例における設定データＥＢＩＴｋ（「１」）は、一例として対応するビットを０に固定するものとする。
【０１４６】
ＡＮＤゲート２０４は、入力データＢＩＴ０〜ＢＩＴ７（０＊０１０１０１）と、インバータ２０２を介し反転された消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬ７（０１００００００）との入力を受けて、そのＡＮＤ論理演算結果を仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬ７（０００１０１０１）として設定する。
【０１４７】
一方、ＯＲゲート２０６は、入力データＢＩＴ０〜ＢＩＴ７（０＊０１０１０１）と、消失位置決定データＥＲＳＥＬ０〜ＥＲＳＥＬ７（０１００００００）との入力を受けて、そのＯＲ論理演算結果を仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨ７（０１０１０１０１）として設定する。
【０１４８】
このようにすれば、簡易な構成で誤り訂正符号が有する訂正能力を向上させる誤り訂正装置を実現することができる。
【０１４９】
［実施形態２−各ビットを４値で表現した場合の誤り訂正］
実施形態１において、式（５）からも分かるように、エラー発生確率を下げるためには、消失状態「＊」となる確率Ｐｅを反転状態「１」となる確率Ｐｆよりも高くする必要がある。
【０１５０】
図１５は、実施形態２に従うメモリセルの抵抗値に対する確率分布を示す図である。図１５を参照して、消失状態に対応するメモリセルの抵抗値をａ１−ｂ１間からａ２−ｂ２間に広げることで、消失状態「＊」となる確率Ｐｅを高くし、反転状態「１」となる確率Ｐｆを低くすることができる。ただし、消失状態に対応するメモリセルの抵抗値範囲を広げると、本来正常状態「０」として扱われていた範囲が消失状態「＊」として扱われる（図１５の斜線部に対応）。
【０１５１】
この場合、符号化データにおける消失ビットの数が、誤り訂正符号がもつ消失訂正能力を下回るときはエラー発生確率は上昇しないが、消失訂正能力を上回るときはエラー発生確率が上昇する。
【０１５２】
図１６は、実施形態２に従うメモリセルの抵抗値に対する確率分布を示す図である。図１６を参照して、実施形態１ではメモリセルの抵抗値に対してしきい値を２つ設けていたが、本実施形態は、メモリセルの抵抗値に対してしきい値を３つ設けることで、メモリセルの抵抗値を４値で読み出す。具体的には、消失判定回路は、メモリセルに記憶されたビットの状態を判定するにあたって、メモリセルの抵抗値がしきい値ａ以下の場合を正常状態「０」と判定し、ｂ以上の場合を反転状態「１」と判定し、ａよりも高くｃ以下の場合を正常に近い消失状態「０＊」と判定し、ｃよりも高くｂ以下の場合を反転に近い消失状態「１＊」と判定する。
【０１５３】
本実施形態では、メモリセルの抵抗しきい値ａ−ｂ間を広げた場合であっても、正常状態「０」から正常に近い消失状態「０＊」と判定されることになるため、エラー発生確率の上昇を防ぐことができる。
【０１５４】
符号化データの各ビットを４値で表した誤り訂正方法を用いた場合、エラー発生確率Ｐｃ４は以下の式（６）で与えられる。なお、Ｐｅｐは正常に近い消失となる確率を表し、Ｐｅｆは反転に近い消失となる確率を表す。
【０１５５】
【数６】
2017022651.tif 000008
【０１５６】
式（６）において、Ｐｆ＜＜Ｐｅである場合には、Ｐｃ４は式（７）で与えられる。
【０１５７】
【数７】
2017022651.tif 000009
【０１５８】
したがって、消失状態となるメモリセルの抵抗しきい値ａ−ｂ間をひろげＰｆ＜＜Ｐｅの場合符号化データの各ビットを４値で表すことで、符号化データの各ビットを３値で表したときと比べて、エラー発生確率を低くすることができる。
【０１５９】
図１７は、実施形態２に従う３ビット消失を含むハミング符号の誤り訂正方法について説明する図である。図１７を参照して、４ビットの元データを（８，４）ハミング符号に符号化する。このとき、偶数パリティのパリティビットを設定する。この符号化データにエラーが発生し、３ビット消失（正常に近い消失および反転に近い消失を含む）を含む符号化データになったとする。
【０１６０】
本実施形態に従う誤り訂正方法は、符号化データが３ビットの消失ビットを含んでいるのに対し、ハミング符号の消失訂正能力は２ビット消失訂正までなので、消失状態を示す３ビットのうちの１ビットを「０」または「１」のいずれかに設定する。
【０１６１】
図１７（ａ）において、正常状態「０」，消失状態「＊」，反転状態「１」の３値で各ビットの状態を表現した場合は、設定する「０」または「１」の値が正しい確率は１／２である。したがって、確実に復号できる確率は１／２である。具体的には、図１７（ａ１）において４ビット目を「０」と設定した場合、符号化データは２ビット消失および１ビット反転を含み、ハミング符号の訂正能力を超えているため復号不能となる。一方、図１７（ａ２）において、４ビット目を「１」と設定した場合、符号化データは２ビット消失を含み、上述の２ビット消失を含むハミング符号の誤り訂正方法が適用できるため、復号可能となる。
【０１６２】
本実施形態２における誤り訂正方法として、各ビットを４値で表す場合について説明する。
【０１６３】
図１７（ｂ）において、正常状態「０」，正常に近い消失状態「０＊」，反転に近い消失状態「１＊」，消失状態「１」の４値で符号化データの各ビットの状態を表した場合、「０」か「１」かを設定する１ビットが、「０＊」である場合は「０」と設定し、「１＊」である場合は「１」と設定する。消失状態にあるビットが正常状態に近いか、反転状態に近いかを考慮した上で「０」または「１」のいずれかを設定する。
【０１６４】
この場合、符号化データの２〜４ビット目について、反転に近い消失状態「１＊」、正常に近い消失状態「０＊」、反転に近い消失状態「１＊」として示される。
【０１６５】
したがって、一例として、本実施形態２においては、このうちのいずれかのビットを固定する。一例として４ビット目の消失状態のビットについて、反転に近い消失状態「１＊」であるため「１」に設定（固定）する。
【０１６６】
そして、残りの２、３ビット目の消失状態のビットについては、上記で説明したのと同様の方式により仮定データを設定した復号処理を実行する。
【０１６７】
当該処理により、符号化データを４値で表した場合は、符号化データの各ビットを３値で表した場合に比べ、復号できる可能性が高くなる。
【０１６８】
符号化データの各ビットを４値で表すことによって、消失状態（正常に近い消失および反転に近い消失を含む）となる確率Ｐｅを高くしても、エラー発生確率が上昇しない。また、簡易な構成で本来誤り訂正符号が有する訂正能力を向上することができる。
【０１６９】
本実施形態２に従う半導体記憶装置について説明する。なお、実施形態１における半導体記憶装置５との相違点のみについて説明し、重複する内容についてはその詳細な説明については繰り返さない。
【０１７０】
図１８は、実施形態２に従う消失判定回路の回路構成例を説明する図である。消失判定回路５３０は、メモリセル５２６に記憶されたビットの状態を読み出す回路である。本実施形態における消失判定回路５３０は、比較器５３２，５３４，５３６と、ＡＮＤゲート５３８とを含む。
【０１７１】
センスアンプ５２８は、ビット線５２４から読み出したメモリセル５２６のデータレベルに応じた電圧ＳＥＮＳを出力する。消失判定回路５３０は、この電圧ＳＥＮＳと、比較器５３２，５３４，５３６に入力される基準電圧ＶｒｅｆＨ，ＶｒｅｆＭ，ＶｒｅｆＬとを比較することで、メモリセル５２６に記憶されたビットの状態を判定する。電圧値はＶｒｅｆＨ＞ＶｒｅｆＭ＞ＶｒｅｆＬとする。
【０１７２】
具体的には、センスアンプ５２８から出力される電圧ＳＥＮＳが比較器５３２に入力される基準電圧ＶｒｅｆＨより低く、比較器５３４に入力される基準電圧ＶｒｅｆＭより高い場合、消失判定回路５３０は、比較器５３２，５３４，５３６の出力を「１」として出力する。その結果、消失判定回路５３０は、制御信号ＥＲを「１」として出力し、制御信号ＢＩＴを「１」として出力する。
【０１７３】
電圧ＳＥＮＳが比較器５３４に入力される基準電圧ＶｒｅｆＭ以下で、比較器５３６に入力されるＶｒｅｆＬより高い場合は、比較器５３２，５３６の出力が「１」となり、比較器５３４の出力が「０」となる。その結果、消失判定回路５３０は、制御信号ＥＲを「１」として出力し、制御信号ＢＩＴを「０」として出力する。
【０１７４】
電圧ＳＥＮＳが比較器５３２に入力される基準電圧ＶｒｅｆＨ以上の場合は、比較器５３２の出力が「０」となり、比較器５３４，５３６の出力が「１」となる。その結果、消失判定回路５３０は、制御信号ＥＲを「０」として出力し、制御信号ＢＩＴを「１」として出力する。
【０１７５】
電圧ＳＥＮＳが比較器５３６に入力される基準電圧ＶｒｅｆＬ以下の場合は、比較器５３２の出力が「１」となり、比較器５３４，５３６の出力が「０」となる。その結果、消失判定回路５３０は、制御信号ＥＲを「０」として出力し、制御信号ＢＩＴを「０」として出力する。
【０１７６】
消失判定回路５３０は、メモリセルの記憶しているデータの状態を判定し、２ビットを出力する制御信号ＥＲと制御信号ＢＩＴとを組み合わせることでデータの状態を出力することができる。たとえば、消失判定回路５３０は、（制御信号ＥＲ，制御信号ＢＩＴ）が（１，０）の場合を正常に近い消失状態「０＊」と出力し、（１，１）の場合を反転に近い消失状態「１＊」と出力し、（０，０）の場合を正常状態「０」と出力し、（０，１）の場合を反転状態「１」と出力することができる。
【０１７７】
消失判定回路５３０は、メモリセル５２６が記憶しているデータを、「０＊」，「１＊」，「０」，「１」の４値で読み出し、誤り訂正装置２の入力データ受付回路１０に出力することで、メモリのデータ読み出しにおける誤り訂正装置として用いることができる。
【０１７８】
具体的には、符号化データについて３ビットの消失が生じている場合には、そのうちの１ビットについて、いずれの状態に近い消失かを判定して固定する。これにより、２ビットの消失となる。
【０１７９】
そして、２ビットの消失については、図１４で説明した方式に基づいて復号処理することが可能である。
【０１８０】
当該処理により、本実施形態２に従う誤り訂正方法により、３ビットの消失が生じた場合であっても、消失状態にあるビットが正常状態に近いか、反転状態に近いかを考慮した上で「０」または「１」であるかを設定することにより、符号化データの各ビットを３値で表現した場合に比べ、復号できる可能性が高い誤り訂正装置を実現することができる。
【０１８１】
［実施形態３−ＢＣＨ符号を用いた誤り訂正］
図１９は、ＢＣＨ符号を用いたデータの符号化例について説明する図である。
【０１８２】
元データのビット長をｋ、符号化後のビット長をｎとする。ｎビットのＢＣＨ符号化データは、元データに生成行列を乗算することで生成することができる。ＢＣＨ符号の符号間距離ｄは、用いる生成行列により３，５，７・・・と種々存在する。符号間距離が３，５，７のＢＣＨ符号はそれぞれ１，２，３・・・ビットの誤り訂正が可能である。
【０１８３】
図２０は、ＢＣＨ符号によって符号化されたデータの誤り検出方法、および誤り訂正方法について説明する図である。
【０１８４】
ＢＣＨ符号によって符号化されたデータの復号化方法については種々存在するが、ここでは例として、図２０（ｂ）のようにルックアップテーブルを用いる方法について説明する。この方法は、メモリのように高速な復号が求められる場合に有効である。
【０１８５】
図２０（ａ）を参照して、まず、ＢＣＨ符号を用いた誤り訂正は、符号化データと検査行列の転置行列を乗算することでシンドロームを算出する。ＢＣＨ符号の場合は、エラー（反転と消失を含む）個数およびそのエラー位置と、シンドロームとが一意に対応する。したがって、予め用意された各シンドロームと誤り位置とを組み合わせたルックアップテーブルと、算出したシンドロームとを比較することで、誤りの数および、その誤り位置を特定することができる。ルックアップテーブルを用いる方法、この比較結果に基づいて元データを復号することができる。
【０１８６】
図２１は、実施形態３に従うＢＣＨ符号によって符号化された１ビット消失および２ビット反転を含むデータの誤り訂正方法について説明する図である。図２１（ａ）を参照して、例として、７ビットの元データを（１５，７）ＢＣＨ符号に符号化し、さらに偶数パリティとなるようにパリティビットを１ビット追加する。この符号化データにエラーが発生し、２ビット反転および１ビット消失を含む符号化データになったとする。
【０１８７】
図２１（ｂ）を参照して、元データの復号を行うにあたって、入力データの消失ビットが「０」である場合、および消失ビットが「１」である場合のそれぞれについて仮定データを設定する。この時点では、それぞれの仮定データに反転が含まれているか否かは不明である。
【０１８８】
次に、本実施形態３に従う誤り訂正方法では、設定した仮定データのそれぞれに対して検査行列を乗算し、シンドロームを算出する。このシンドロームと予め用意されたルックアップテーブルとを比較して、仮定データにおける反転の数および位置を特定し、元のデータを復号する。
【０１８９】
このとき、（１５，７）ＢＣＨ符号は、訂正能力が２ビット反転訂正までなので、２ビット反転と３ビット反転とを区別することができず、いずれの仮定データも、２ビット反転を含むものとして判定される。
【０１９０】
次に、本実施形態３に従う誤り訂正方法では、設定したそれぞれの仮定データについて、パリティチェックを行う。元の符号化データはパリティが偶数となるように設定されていることから、仮定データのパリティが偶数となる場合は２ビットの反転を含み、仮定データのパリティが奇数となる場合は３ビット反転を含む、と判定される。よって、（１５，７）ＢＣＨ符号の誤り訂正能力の範囲内である、偶数パリティの仮定データを正しい仮定データだと判定し、当該仮定データを用いて復号した復号結果を採用する。
【０１９１】
本実施形態３によれば、簡易な方法で誤り訂正符号が有する訂正能力を向上することができる。
【０１９２】
本実施形態３に従う誤り訂正装置について説明する。なお、実施形態１における誤り訂正装置１との相違点のみについて説明し、重複する内容についてはその詳細な説明については繰り返さない。
【０１９３】
符号復号部３１４は、シンドローム算出部３１２が算出したシンドロームＳＬと、予め記憶しているルックアップテーブルとを比較することで誤り位置を特定し、仮定データ設定ユニット２００ａが設定した仮定データＢＩＴＥＲＬ０〜ＢＩＴＥＲＬｎ−１に基づいて復号結果を復号する。
【０１９４】
符号復号部３２４は、シンドローム算出部３２２が算出したシンドロームＳＨと、予め記憶しているルックアップテーブルとを比較することで誤り位置を特定し、仮定データ設定ユニット２００ｂが設定した仮定データＢＩＴＥＲＨ０〜ＢＩＴＥＲＨｎ−１に基づいて復号結果を復号する。
【０１９５】
このようにすれば、本実施形態３に従うＢＣＨ符号を用いた誤り訂正方法を行う誤り訂正装置を実現することができる。
【０１９６】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明者は前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０１９７】
１，２  誤り訂正装置、１０  入力データ受付回路、２０  状態判定回路、１００，１１０  消失位置決定回路、２００  仮定データ設定回路、３００，３６０  復号回路、３１２，３２２  シンドローム算出部、３１４，３２４，３５０  符号復号部、３１６，３２６  パリティチェック部、３３０  選択部、３４０  仮定データ選択部、５  半導体記憶装置、５００  メモリセルアレイ、５０２，５２２  ワード線、５０４，５２４  ビット線、５０６，５２６  メモリセル、５０８，５２８  センスアンプ、５１０，５３０  消失判定回路。
【図１】
2017022651.tif 000010
【図２】
2017022651.tif 000011
【図３】
2017022651.tif 000012
【図４】
2017022651.tif 000013
【図５】
2017022651.tif 000014
【図６】
2017022651.tif 000015
【図７】
2017022651.tif 000016
【図８】
2017022651.tif 000017
【図９】
2017022651.tif 000018
【図１０】
2017022651.tif 000019
【図１１】
2017022651.tif 000020
【図１２】
2017022651.tif 000021
【図１３】
2017022651.tif 000022
【図１４】
2017022651.tif 000023
【図１５】
2017022651.tif 000024
【図１６】
2017022651.tif 000025
【図１７】
2017022651.tif 000026
【図１８】
2017022651.tif 000027
【図１９】
2017022651.tif 000028
【図２０】
2017022651.tif 000029
【図２１】
2017022651.tif 000030