(58)【調査した分野】(Int.Cl.,DB名)
前記符号生成回路は、前記ハミング符号の全ビットに対するパリティビットを更に出力し、前記ドライバ回路は、前記ハミング符号と前記パリティビットとを前記メモリ配列に書き込む請求項1記載の強誘電体メモリ装置。
前記符号生成回路は、前記ハミング符号の全ビットに対するパリティビットの反転値を有するビットを更に出力し、前記ドライバ回路は、前記ハミング符号と前記反転値を有するビットとを前記メモリ配列に書き込む請求項1記載の強誘電体メモリ装置。
前記符号生成回路は、全ビットの論理値が1である検査ビットを生成し、前記書き込みデータである情報ビットと前記全ビットの論理値が1である検査ビットとを並べたデータを出力する請求項1乃至4何れか一項記載の強誘電体メモリ装置。
【背景技術】
【0002】
強誘電体メモリは、メモリセルとして強誘電体容量を用い、電源オフ時であっても情報を保持することができる。強誘電体メモリにおいては、強誘電体容量に正または負の電圧を印加して分極させることにより書き込みを行い、強誘電体容量に正電圧を印加したときの分極反転電流の有無を検出することにより読み出しを行う。
【0003】
図1は、強誘電体メモリのメモリセル構成の一例を示す図である。
図1に示すメモリセルは、セル選択トランジスタ10、強誘電体キャパシタ11、ワード線WL、ビット線BL、及びプレート線PLを含む。このメモリセルは、1つのトランジスタと1つのキャパシタとにより1ビットの情報を記憶するものであり、1T1C型メモリセルと呼ばれる。
【0004】
書き込み動作においては、ワード線WLを選択状態(HIGH)にして、セル選択トランジスタ10をONにする。ビット線BLとプレート線PL間に正又は負の電圧が加えられると、強誘電体キャパシタ11にこの電圧が印加され、所望のデータが書き込まれる。"0"データを書き込む場合は、ビット線BLをLOWとし、プレート線PLをHIGHにする。また"1"データを書き込む場合は、ビット線BLをHIGHとし、プレート線PLをLOWに設定する。書き込み動作後に印加電圧が消えても強誘電体容量の分極は保持されるので、書き込まれたデータは不揮発データとして保持される。
【0005】
読み出し動作においては、ワード線WLを選択してセル選択トランジスタ10をONにし、プレート線PLをHIGHに設定する。ビット線BLは略LOWに保たれており、強誘電体キャパシタ11には正電圧が印加される。強誘電体キャパシタ11に"0"が格納されている場合には、強誘電体キャパシタ11にかかる電圧は書き込み時と同一の極性であるために、分極の反転は起こらない。従って比較的小さな電荷がビット線BLに流れる。強誘電体キャパシタ11に"1"が格納されている場合には、強誘電体キャパシタ11にかかる電圧は書き込み時と反対極性であるために、分極の反転が起こる。従って、大きな反転電荷がビット線BLに流れる。この電流をセンスアンプで検知することにより、データを判定する。
【0006】
図2は、
図1に示す強誘電体メモリセルの動作波形を示す図である。強誘電体メモリの読み出し動作は、格納データを破壊する破壊読出しである。強誘電体メモリでは、読出し動作と書き込み動作とに関わらず、まず読出し動作を実行する。
【0007】
図2に示されるように、まずワード線WLをHIGHに設定し、
図1に示すセル選択トランジスタ10を導通させた後、プレート線PLをHIGHに上昇させて、強誘電体キャパシタ11内の電荷をビット線BLに出力させる。この読出し動作の後に、書き込み動作を実行する。
【0008】
書き込み動作では、まずプレート線PLをLOWに下降させる。その後、「0」を書き込む場合には、ビット線BL及びプレート線PLを、そのままLOWに固定したままとする。また「1」を書き込む場合には、プレート線PLはLOWのままで、ビット線BLをHIGHに変化させる。その後、書き込み動作を終了させる際に、RTZ方式の強誘電体メモリでは、ビット線BLをLOWに下降させる。
【0009】
「1」を書き込む為にビット線BLをHIGHからLOWに変化させると、強誘電体キャパシタ11を介してビット線BLとプレート線PLとが容量結合されているため、プレート線PLの電位がビット線BLに引っ張られて瞬間的に下降する。このため、
図2に示すようなアンダーシュート波形15がプレート線PLに発生する。
【0010】
メモリアレイにおいて、通常、ワード線WLとプレート線PLとは、同一行の複数の強誘電体メモリセルに接続されている。従って、同一のプレート線PLに接続された強誘電体キャパシタ11のうちで、「1」を書き込まれた強誘電体キャパシタ11の数が多い場合、アンダーシュートによるプレート線PLの電位の低下量が大きくなる。その結果、このプレート線PLに接続されている「0」を書き込まれた強誘電体キャパシタ11の分極量が低下するディスターブ現象が発生し、強誘電体メモリの信頼性が低下してしまう。
【0011】
図3は、「0」を書き込まれた強誘電体キャパシタがディスターブを受ける原理を説明する図である。
【0012】
「0」が書き込まれた強誘電体キャパシタは、印加電圧がゼロの状態であり、
図3(a)に示されるヒステリシス特性を示す曲線上において、分極状態16の位置に相当する分極状態にある。その後、プレート線PLを共有する他の強誘電体キャパシタへの「1」の書き込み終了により、プレート線PLにアンダーシュートが発生すると、印加電圧が負になる方向、即ち図中左側に向かい電圧状態が変化する。その結果、「0」が書き込まれた強誘電体キャパシタの分極状態は、
図3(b)に示される分極状態17の位置に移動する。その後プレート線PLの電位が元に戻ると、強誘電体キャパシタのヒステリシス内でのマイナーループ特性に従って分極状態が変化するため、「0」が書き込まれた強誘電体キャパシタの分極状態は、
図3(c)に示される分極状態18の位置に移動してしまう。このように、初期の分極状態16と比較して分極状態18となることで、「0」の分極量が低下してしまう。
【発明を実施するための形態】
【0018】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【0019】
図4は、強誘電体メモリ装置の構成の一例を示す図である。
図4に示す強誘電体メモリ装置は、メモリ配列20、符号生成回路21、ビット線書き込みドライバ22、コラム選択デコーダ23、ロウ選択デコーダ24、センスアンプ25、及び検査及び誤り訂正回路26を含む。なお
図4及び以降の同様の図において、各ボックスで示される各回路又は機能ブロックと他の回路又は機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路又は機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
【0020】
メモリ配列20は、複数の強誘電体メモリセル29を含む。強誘電体メモリセル29は縦横にマトリクス状に配置される。横方向に一行に並ぶ複数の強誘電体メモリセル29は共通のワード線WL及びプレート線PLに接続され、縦方向に一列に並ぶ複数の強誘電体メモリセル29は共通のビット線BLに接続される。ワード線WL及びプレート線PLはロウ選択デコーダ24により選択的に駆動され、ビット線BLはコラム選択デコーダ23に接続されている。複数の強誘電体メモリセル29の各々は、
図1に示される構造を有する。即ち、複数の強誘電体メモリセル29の各々は、セル選択トランジスタ10及び強誘電体キャパシタ11を含み、セル選択トランジスタ10のゲート端が対応するワード線WLに接続され、強誘電体キャパシタ11の一端が対応するプレート線PLに接続されている。強誘電体キャパシタ11の他端はセル選択トランジスタ10のチャネルの一端に接続され、セル選択トランジスタ10のチャネルの他端は対応するビット線BLに接続されている。メモリ配列20の強誘電体メモリセル29は1T1C型である。
【0021】
ロウ選択デコーダ24が、ロウアドレスに応じて複数のワード線WLのうちの一本のワード線WLを選択的に活性化することにより、活性化されたワード線WLに接続される複数の強誘電体メモリセル29の強誘電体キャパシタ11が、ビット線BLに接続される。コラム選択デコーダ23が、書き込み対象のコラムアドレスのビット線BLに書き込みデータを供給することにより、書き込み対象のコラムアドレスの強誘電体キャパシタ11に書き込みデータが書き込まれる。書き込み対象のコラムアドレス以外のコラムアドレスの強誘電体キャパシタ11に対しては、強誘電体キャパシタ11から読み出したデータが再書き込みされてよい。強誘電体メモリセル29に対する読み出し及び書き込み動作は、
図2に示した信号波形に従って実行される。
【0022】
符号生成回路21には、強誘電体メモリ装置外部から、書き込みデータが印加される。符号生成回路21は、書き込みデータとパリティ生成行列とを乗算することにより検査ビットを生成し、書き込みデータである情報ビットと検査ビットとを並べたハミング符号を出力する。ハミング符号では、情報ビットが8ビット幅なら4ビットが検査ビットとして必要であり、更に、情報ビットが16ビット幅なら5ビット、情報ビットが32ビット幅なら6ビット、情報ビットが64ビット幅なら7ビットが検査ビットとして必要になる。
【0023】
例えば、書き込みデータのビット数、即ち情報ビット数が16ビットの場合、5行×16列のパリティ生成行列を用意し、このパリティ生成行列と16ビット長の列ベクトルとを乗算することで、5個の検査ビットを生成する。以下の説明では、情報ビットの数が16ビットであり、検査ビットの数が5ビットである場合を例として説明するが、情報ビットの数と検査ビットの数とはこれに限られるものではない。
【0024】
後述するように、符号生成回路21において用いるパリティ生成行列の全ての行について、一行内に存在する「1」の個数が偶数である。即ち、情報ビットからなるベクトルとの内積(積は論理積であり、和は排他的論理和である積和計算)を計算する対象となる各ベクトルにおいて、「1」の値であるベクトル要素の数が偶数である。
【0025】
ビット線書き込みドライバ22は、符号生成回路21が生成したハミング符号をメモリ配列20に書き込む。この際、コラム選択デコーダ23により選択した書き込み対象のコラムアドレスの強誘電体メモリセル29に対して、データ書き込みが実行される。なおロウアドレスについては、ロウ選択デコーダ24が書き込みロウアドレスに対応するワード線WL及びプレート線PLを選択活性化することにより、当該ロウアドレスの強誘電体メモリセル29に対してデータ書き込みが実行される。
【0026】
データ読み出し動作の場合、コラム選択デコーダ23により選択した読み出し対象のコラムアドレスの強誘電体メモリセル29から読み出したデータが、センスアンプ25に供給される。具体的には、読み出し対象のコラムアドレスの強誘電体キャパシタ11からビット線BLに流れた電荷に応じた電圧が、センスアンプ25に印加される。センスアンプ25は、メモリ配列20から読み出した読み出しデータを判定する。即ち、強誘電体キャパシタ11からビット線BLに流れた電荷量に応じた電圧の判定を行い、読み出しデータが「0」と「1」との何れであるのかを判定する。この読み出しデータは、16個の情報ビットと5個の検査ビットとの両方を含む。
【0027】
検査及び誤り訂正回路26は、16個の情報ビットと5個の検査ビットとに基づいて、読み出しデータの誤りの検出及び訂正を行う。具体的には、符号生成回路21と同一の回路を用い、パリティ生成行列と読み出した16個の情報ビットからなる列ベクトルとを乗算することで、5個の検査ビットを生成する。検査及び誤り訂正回路26は、生成した5個の検査ビットと読み出した5個の検査ビットとをビット毎に比較することで、5ビットのシンドロームを生成する。シンドロームの5ビットのうち、比較されたビット同士が同値である位置のビットは「0」であり、比較されたビット同士が異なる値である位置のビットは「1」となる。このシンドロームによって誤りの位置を特定することができる。検査及び誤り訂正回路26は、特定された誤りの発生位置においてビット値を反転することにより、訂正された16個の情報ビットを読み出しデータとして出力する。この読み出しデータは、強誘電体メモリ装置の外部に出力される。なおハミング符号を用いてエラー訂正を実現する場合には、符号中に1ビットの誤りが発生した場合にエラー訂正が可能であり、2ビットの誤りが発生した場合にエラー検出が可能である。
【0028】
図5は、センスアンプ25の構成の一例を示す図である。
図5に示すセンスアンプ25は、第1のセンスアンプ31、第2のセンスアンプ32、トランスファーゲート33乃至36を含む。端子37には、強誘電体メモリセル29からビット線BLに読み出されたデータの電荷量に応じた電圧が印加される。端子38には、第1のリファレンスセルから読み出されたデータの電荷量に応じた第1の参照電圧VREF1が印加される。端子39には、第2のリファレンスセルから読み出されたデータの電荷量に応じた第2の参照電圧VREF2が印加される。ここで、第1のリファレンスセルと第2のリファレンスセルとは、メモリ配列20にマトリクス状に配置された複数の強誘電体メモリセル29に含まれてよい。例えば、
図4に示すメモリ配列20において、一番左端のビット線BLに接続される複数の強誘電体メモリセル29の一つ一つが第1のリファレンスセルであり、左から2番目のビット線BLに接続される強誘電体メモリセル29の一つ一つが第2のリファレンスセルであってよい。即ち、複数のワード線WLのうちの一本に共通に接続され同時に読み書きされる複数の強誘電体メモリセル29は、1個の第1のリファレンスセルと1個の第2のリファレンスセルとを含んでよい。
【0029】
第1のセンスアンプ31は、第1のリファレンスセルから読み出されたデータと情報ビットの読み出しデータとを比較する。即ち、第1のセンスアンプ31は、第1の参照電圧VREF1と端子37に印加される読み出しデータの電圧とを比較する。第2のセンスアンプ32は、第2のリファレンスセルから読み出されたデータと情報ビットとの読み出しデータとを比較する。即ち、第2のセンスアンプ32は、第2の参照電圧VREF2と端子37に印加される読み出しデータの電圧とを比較する。なおこのとき、トランスファーゲート33乃至36は、全て導通状態とされている。
【0030】
第1のセンスアンプ31及び第2のセンスアンプ32の各々は、2つの入力端子間の電圧差を増大するように動作する。第1の参照電圧VREF1がデータ「1」に対応し、第2の参照電圧VREF2がデータ「0」に対応するとする。このとき、情報ビットの読み出しデータの電圧がデータ「1」に近い電圧である場合、第1のセンスアンプ31は動作が遅いのに対して、第2のセンスアンプ32は速く動作して、読み出しデータの電圧が「1」に確定する。逆に、情報ビットの読み出しデータの電圧がデータ「0」に近い電圧である場合、第2のセンスアンプ32は動作が遅いのに対して、第1のセンスアンプ31は速く動作して、読み出しデータの電圧が「0」に確定する。このように、センスアンプ25は、第1のセンスアンプ31と第2のセンスアンプ32とにより読み出しデータを判定する、ツインセンスアンプ方式のセンスアンプであってよい。
【0031】
センスアンプ25がツインセンスアンプ方式のセンスアンプである場合、一本のワード線WLに接続される複数の強誘電体メモリセル29のうち、少なくとも1つの強誘電体メモリセル29は「0」側のリファレンスセルであり、「0」が書き込まれる。従って、情報ビットと検査ビットとの全てのビットが「1」である場合、これら全てのビットからのプレート線PLのアンダーシュートの影響が、1つだけ「0」であるリファレンスセルにもたらされることになる。その結果、この1つだけ「0」であるリファレンスセルが大きなディスターブを受け、センスアンプ25のセンスマージンが低下し、メモリ装置の信頼性が低下してしまう。
【0032】
図6は、符号生成回路21にて用いるパリティ生成行列の構成の一例を示す図である。
図6(a)は、一般的なパリティ生成行列の一例を示し、
図6(b)は、符号生成回路21に用いるパリティ生成行列の一例を示す。
図6(a)及び(b)に示すパリティ生成行列は、5行×16列のサイズであり、このパリティ生成行列と16ビット長の列ベクトルとを乗算することで、5個の検査ビットを生成する。パリティ生成行列の構成方法としては、行列中の全ての列D00〜D15が互いに異なるビットパターンとなり、且つ、各列に含まれる「1」の数が2個以上であることが要件となる。
【0033】
図6(a)に示すパリティ生成行列の場合、各行に存在する「1」の個数は、行P0が10、行P1が9、行P2が9、行P3が7、行P4が5となる。即ち、行P4を除く4つの行において、「1」の個数が奇数となっている。この場合、書き込みデータである16個の情報ビットが全て「1」であるとすると、検査ビットは「01111」となる。即ち、16個の情報ビットと5個の検査ビットとの計21ビットのうち、1ビットのみが「0」となってしまう。従って、情報ビットと検査ビットとをメモリ配列20に書き込む際に、値が「0」であるビットが大きなディスターブを受けることになる。
【0034】
検査ビットが5個の場合、パリティ生成行列の列として使用できるパターンの総数は26個である。何故なら2
5=32であり、32個のパターンのうち、「1」の数が2個以上であるパターンは26個だからである。これら26個のパターンのうち、パリティ生成行列の列として使用するパターンは16パターンに過ぎない。従って、26パターンのうちの16個のパターンを適切に選択することにより、各行に含まれる「1」の数を調整することができる。
【0035】
図6(b)に示すパリティ生成行列の場合、各行に存在する「1」の個数は、行P0が10、行P1が8、行P2が8、行P3が8、行P4が6となる。即ち、全ての行において、「1」の個数が偶数となっている。この場合、書き込みデータである16個の情報ビットが全て「1」であるとすると、検査ビットは「00000」となる。即ち、16個の情報ビットと5個の検査ビットとの計21ビットのうち、5ビットが「0」となる。従って、情報ビットと検査ビットとをメモリ配列20に書き込む際に、値が「0」であるビットが受けるディスターブ量を軽減することができる。
【0036】
図7は、
図6(b)のパリティ生成行列を実現する論理回路の構成の一例を示す図である。符号生成回路21は、
図7に示される論理回路を用いて、書き込みデータとパリティ生成行列とを乗算する論理演算を実行することにより、検査ビットを生成する。
【0037】
図7に示す論理回路は、複数の排他的論理和回路40を含む。これらの排他的論理和回路40の各々において、一方の入力は入力ビットD0乃至D15のうちの1つであり、他方の入力は入力ビットD0乃至D15のうちの他の1つ又は他の排他的論理和回路40の出力である。入力ビットD0乃至D15のうちのある1つのビットに着目した場合、その着目ビットを入力とする1つの排他的論理和回路40は、
図6(b)のパリティ生成行列の列D00〜D15のうちの対応する1つの列の1つの値「1」に対応する。例えば
図6(b)の列D05に着目した場合、当該列のビットパターンは「01010」である。このビットパターン「01010」の例えば左から2番目(図の上から2番目)の値「1」は、行P1の位置にある。この列D05の行P1の位置にある「1」と列D05の情報ビットの値との論理積が、検査ビットP1を生成する際の排他的論理和の計算において足し込まれる対象の一項となる。即ち、他の情報ビットの値が変化しない場合、列D05の情報ビットの値が「1」のときの検査ビットP1の値は、列D05の情報ビットの値が「0」のときの検査ビットP1の値に対して反転することになる。従って、
図7に示す論理回路において、パリティ生成行列の列D05に対応する入力ビットD5の列において、行P1の位置には排他的論理和回路40が設けられ、D0乃至D4に対して計算された排他的論理和とD5の値との排他的論理和を求める。他の入力ビット及び検査ビットについても同様である。
【0038】
図8は、検査及び誤り訂正回路26において用いる検査行列の一例を示す図である。
図8に示す検査行列は、5行×21列のサイズであり、この検査行列と21ビット長の列ベクトルとを乗算することで、5ビットのシンドロームを生成する。この21ビット長の列ベクトルとは、メモリ配列20から読み出されてセンスアンプ25によりデータ判定された16個の情報ビットと5個の検査ビットである。なお行S0乃至S4及び列D00乃至D15の部分の5行×16列の行列は、
図6(b)に示すパリティ生成行列に等しい。即ち、パリティ生成行列と読み出した16個の情報ビットからなる列ベクトルとを乗算することで、5個の検査ビットを生成し、生成した5個の検査ビットと読み出した5個の検査ビットとをビット毎に比較することで、5ビットのシンドロームを生成している。生成した5個の検査ビットと読み出した5個の検査ビットとをビット毎に比較する計算は、行S0乃至S4及び列P00乃至P04の部分の5行×5列の行列部分と読み出した5個の検査ビットからなる列ベクトルとを乗算することにより実行される。
【0039】
図9は、
図8の検査行列を実現する論理回路の構成の一例を示す図である。検査及び誤り訂正回路26は、
図9に示される論理回路を用いて、読み出しデータと検査行列とを乗算する論理演算を実行することにより、シンドロームを生成する。
【0040】
図9に示す論理回路は、複数の排他的論理和回路40及び複数の排他的論理和回路42を含む。複数の排他的論理和回路40の論理回路部分は、
図7に示す論理回路と同一の構成となっている。
図9の論理回路では、複数の排他的論理和回路40の論理回路部分により生成された5個の検査ビットと、読み出された5個の検査ビットP0乃至P4とを、5個の排他的論理和回路42により、ビット毎に比較してシンドロームS0乃至S4を生成している。比較されたビット同士が同値であれば出力シンドロームの対応ビットは「0」になり、比較されたビット同士が異なる値であれば出力シンドロームの対応ビットは「1」になる。例えば、1ビットの誤りが発生してシンドロームS0乃至S4が「01010」である場合、このシンドロームのビットパターンに等しいビットパターンを有する検査行列の列D05の位置において、1ビットの誤りが発生したことになる。
【0041】
図10は、拡張ハミング符号のパリティ生成行列の一例を示す図である。
図10に示すパリティ生成行列は、6行×16列のサイズであり、このパリティ生成行列と16ビット長の列ベクトルとを乗算することで、6個の検査ビットを生成する。なお行P0乃至P4及び列D00乃至D15の部分の5行×16列の行列は、
図6(b)に示すパリティ生成行列に等しい。生成される6個の検査ビットのうち、5個の検査ビットは、
図6(b)のパリティ生成行列により生成される検査ビットと同一である。残りの1個の検査ビットは、16個の全ての情報ビットと生成された5個の全ての検査ビットとについて排他的論理和を計算して得られるパリティビットである。
【0042】
図11は、
図10のパリティ生成行列を実現する論理回路の構成の一例を示す図である。符号生成回路21は、
図11に示される論理回路を用いて、書き込みデータとパリティ生成行列とを乗算する論理演算を実行することにより、検査ビットを生成してよい。この際、符号生成回路21は、ハミング符号の全ビットに対するパリティビットを更に出力してよい。この場合、
図4に示すビット線書き込みドライバ22は、ハミング符号とパリティビットとをメモリ配列20に書き込むことになる。
【0043】
図11に示す論理回路は、複数の排他的論理和回路40及び複数の排他的論理和回路44を含む。複数の排他的論理和回路40の論理回路部分は、
図7に示す論理回路と同一の構成となっている。
図11の論理回路では、複数の排他的論理和回路40の論理回路部分により5個の検査ビットP0乃至P4を生成する。
図11の論理回路では更に、複数の排他的論理和回路44により、16個の全ての情報ビットD0乃至D15と生成された5個の全ての検査ビットP0乃至P4とについて排他的論理和を計算し、検査ビットP5を生成する。この検査ビットP5は、16個の情報ビットD0乃至D15と5個の検査ビットP0乃至P4とに存在する「1」の個数が偶数のときに「0」となり、奇数のときに「1」となるパリティビットである。
【0044】
図12は、拡張ハミング符号を用いた場合に検査及び誤り訂正回路26において用いる検査行列の一例を示す図である。
図12に示す検査行列は、6行×22列のサイズであり、この検査行列と22ビット長の列ベクトルとを乗算することで、6ビットのシンドロームを生成する。この22ビット長の列ベクトルとは、メモリ配列20から読み出されてセンスアンプ25によりデータ判定された16個の情報ビットと6個の検査ビットである。なお行S0乃至S4及び列D00乃至D15の部分の5行×16列の行列は、
図6(b)に示すパリティ生成行列に等しい。即ち、パリティ生成行列と読み出した16個の情報ビットからなる列ベクトルとを乗算することで、5個の検査ビットを生成し、生成した5個の検査ビットと読み出した5個の検査ビットとをビット毎に比較することで、5ビットのシンドロームS0乃至S4を生成している。生成した5個の検査ビットと読み出した5個の検査ビットとをビット毎に比較する計算は、行S0乃至S4及び列P00乃至P04の部分の5行×5列の行列部分と読み出した5個の検査ビットからなる列ベクトルとを乗算することにより実行される。また行S5及び列D00乃至P05の部分の1行×22列の行列部分は、読み出された16個の全ての情報ビットD0乃至D15と読み出された6個の全ての検査ビットP0乃至P5とについて排他的論理和を計算し、シンドロームS5を生成している。
【0045】
読み出した情報ビットと検査ビットとに含まれる誤りが1ビットのみである場合、シンドロームS5は「1」となる。この場合、検査及び誤り訂正回路26は、シンドロームS0乃至S4のビットパターンに応じて1ビットの誤りビット位置を特定し、誤り訂正をすることができる。読み出した情報ビットと検査ビットとに含まれる誤りが2ビットである場合、シンドロームS5は「0」となり、シンドロームS0乃至S4の部分に値「1」のビットが含まれることになる。この場合、シンドロームのビットパターンが1ビット誤りでは発生し得ないパターンとなるので、検査及び誤り訂正回路26は誤り訂正を行うことなく、誤りが発生したことを外部に通知する。
【0046】
図13は、
図12の検査行列を実現する論理回路の構成の一例を示す図である。検査及び誤り訂正回路26は、
図13に示される論理回路を用いて、読み出しデータと検査行列とを乗算する論理演算を実行することにより、シンドロームを生成してよい。
【0047】
図13に示す論理回路は、複数の排他的論理和回路40、複数の排他的論理和回路42、及び複数の排他的論理和回路44を含む。複数の排他的論理和回路40の論理回路部分は、
図7に示す論理回路と同一の構成となっている。
図13の論理回路では、複数の排他的論理和回路40の論理回路部分により生成された5個の検査ビットと、読み出された5個の検査ビットP0乃至P4とを、5個の排他的論理和回路42により、ビット毎に比較してシンドロームS0乃至S4を生成している。比較されたビット同士が同値であれば出力シンドロームの対応ビットは「0」になり、比較されたビット同士が異なる値であれば出力シンドロームの対応ビットは「1」になる。
【0048】
図13の論理回路では更に、複数の排他的論理和回路44により、読み出された16個の全ての情報ビットD0乃至D15と読み出された6個の全ての検査ビットP0乃至P5とについて排他的論理和を計算し、シンドロームS5を生成する。このシンドロームS0は、16個の情報ビットD0乃至D15と6個の検査ビットP0乃至P5とに存在する「1」の個数が偶数のときに「0」となり、奇数のときに「1」となるパリティビットである。
【0049】
図14は、拡張ハミング符号を用いる場合に符号生成回路21に用いる論理回路の構成の変形例を示す図である。
図11に示す論理回路の場合、拡張分のパリティビットを除く情報ビットと検査ビットとの合計の個数は21ビットであり、そのうち少なくとも2個のビットは値が「0」である。2個のビットの値が「0」である場合、値が「1」であるビットの個数は19個となり、この場合の拡張パリティビットの値は「1」と計算される。従って、全22ビット中、20ビットが「1」であることになり、拡張パリティビットを含まない場合(ハミング符号を用いる場合)よりも、ディスターブを受ける量が大きくなってしまう。
【0050】
図14に示す論理回路は、
図11に示す論理回路に対して、インバータ46が追加されている。このインバータ46により、
図11に示す論理回路により計算した拡張分のパリティビットを反転し、反転後の値を
図14に示す論理回路が出力する拡張分のパリティビットとしている。これにより、2個のビットの値が「0」である場合、値が「1」であるビットの個数は19個となり、この場合の拡張パリティビットの値は「0」と計算される。従って、全22ビット中、少なくとも3ビットが「0」であることになり、
図11のようにビット値を反転しない場合と比較して、ディスターブを受ける量が軽減される。
【0051】
図15は、拡張ハミング符号を用いる場合に検査及び誤り訂正回路26に用いる論理回路の構成の変形例を示す図である。
図14に示す論理回路で拡張ハミング符号(ハミング符号+拡張分のパリティビット)を生成した場合、パリティビット(検査ビットP5)は本来のビット値の反転値となっている。
図13の論理回路では、前述のように、複数の排他的論理和回路44により、読み出された16個の全ての情報ビットD0乃至D15と読み出された6個の全ての検査ビットP0乃至P5とについて排他的論理和を計算し、シンドロームS5を生成する。
図15の論理回路では、
図13の論理回路に対して、メモリ配列から読み出されたパリティビットの論理値を反転するインバータ48が追加されている。このインバータ48により、読み出した検査ビットP5の論理値を反転する。この検査ビットP5の反転後の値と、16個の情報ビットD0乃至D15と、残りの5個の検査ビットP0乃至P4とについて排他的論理和を計算することにより、シンドロームS5を生成する。これにより、シンドロームS5の正しい値を計算することが可能となる。
【0052】
図16は、強誘電体メモリ装置の構成の変形例を示す図である。
図16においては、
図4と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。また
図16においては、
図4と構成が異なる部分及びその周辺のみを示し、
図4と構成が同一である部分については図示を省略してある。
【0053】
図16に示す強誘電体メモリ装置においては、
図4に示す符号生成回路21の代わりに符号生成回路21Aが設けられ、
図4に示す検査及び誤り訂正回路26の代わりに検査回路26Aと誤り訂正回路26Bが設けられる。符号生成回路21Aは、符号生成回路21と同様に、書き込みデータとパリティ生成行列とを乗算することにより検査ビットを生成し、書き込みデータである情報ビットと検査ビットとを並べたハミング符号を出力する。検査回路26Aは、メモリ配列20から読み出された情報ビットと検査ビットとに基づいてシンドロームを計算し、読み出しデータの誤りの検出を行う。誤り訂正回路26Bは、シンドロームにより特定された誤りの発生位置においてビット値を反転することにより、訂正された情報ビットを読み出しデータとして出力する。
図16の強誘電体メモリ装置においては、強誘電体メモリ装置の外部からの指示に応じてアサートされる全ビット1モード信号が、符号生成回路21Aと検査回路26Aとに印加される。全ビット1モード信号は、情報ビットと検査ビットとの全てのビットを「1」に設定する場合にアサートされる信号である。
【0054】
図17は、強誘電体メモリ装置の書き込み時の動作の一例を示すフローチャートである。なお
図17及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【0055】
ステップS1において、符号生成回路21Aに印加される書き込みデータが確定する。ステップS2において、符号生成回路21Aは、全ビット1モード書き込みか否かを判断する。具体的には、符号生成回路21Aは、全ビット1モード信号がアサート状態にある場合に、全ビット1モード書き込みである、と判断する。
【0056】
ステップS2において全ビット1モード書き込みであると判断された場合、ステップS3で、符号生成回路21Aは、検査ビットを全て「1」に設定する。例えば、検査ビットの個数が5個である場合、検査ビットを「11111」に設定する。その後、ステップS5において、符号生成回路21Aからビット線書き込みドライバ22を介して、情報ビットと検査ビットとをメモリ配列20に書き込む。なおこの場合、外部から印加される書き込みデータの全ビットは「1」になっているため、メモリ配列20に書き込まれる情報ビットと検査ビットとは全て値が「1」となる。
【0057】
ステップS2において全ビット1モード書き込みでないと判断された場合、ステップS4で、符号生成回路21Aは、書き込みデータに基づいて通常の検査ビットを生成する。即ち、パリティ生成行列と書き込みデータとを乗算することにより、検査ビットを生成する。その後、ステップS5において、符号生成回路21Aからビット線書き込みドライバ22を介して、情報ビットと検査ビットとをメモリ配列20に書き込む。
【0058】
図18は、強誘電体メモリ装置の読み出し時の動作の一例を示すフローチャートである。ステップS11において、情報ビットと検査ビットとがメモリ配列20から読み出される。ステップS12において、検査回路26Aがシンドロームを計算し、計算したシンドロームが全て「1」であるか否かを判断する。例えば、シンドロームのビット幅が5である場合、シンドロームが「11111」であるか否かを判断する。
【0059】
ステップS12においてシンドロームが全て「1」であると判断された場合、ステップS13で、検査回路26Aは、全ビットの値が「1」である状態である、と判断する。ステップS14で、誤り訂正回路26Bは、情報ビットを訂正することなく、そのまま読み出しデータとして出力する。
【0060】
ステップS12においてシンドロームの少なくとも1ビットは「1」ではないと判断された場合、ステップS15で、検査回路26Aは、1ビット誤りを検出したか否かを判断する。1ビット誤りを検出した場合、ステップS16において、誤り訂正回路26Bは、シンドロームが示すビット位置の1ビットを反転することにより、当該ビットを訂正する。1ビット誤りを検出しなかった場合、ステップS17において、誤り訂正回路26Bは、メモリ配列20から読み出した情報ビットをそのまま読み出しデータとして出力する。
【0061】
図19は、符号生成回路21Aに用いるパリティ生成行列を実現する論理回路の構成の一例を示す図である。符号生成回路21Aは、
図19に示される論理回路を用いて、書き込みデータとパリティ生成行列とを乗算する論理演算を実行することにより、検査ビットを生成してよい。
【0062】
図19に示す論理回路は、複数の排他的論理和回路40及び複数のOR回路50を含む。複数の排他的論理和回路40の論理回路部分は、
図7に示す論理回路と同一の構成となっている。この回路部分により生成した5個の検査ビットがそれぞれ5個のOR回路50の一方の入力に印加される。5個のOR回路50の他方の入力には、全ビット1モード信号が印加される。全ビット1モード信号は、メモリ配列20に書き込む全てのビットを「1」に設定する場合、「1」のアサート状態に設定される。全ビット1モード信号が「1」に設定されると、各OR回路50の出力である検査ビットP0乃至P4が「1」となる。このようにして、符号生成回路21Aは、全ビットの論理値が1である検査ビットを生成することができる。
【0063】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。