(57)【特許請求の範囲】
【請求項１】
データが、複数のデータビット列部に分割されて記憶されるデータメモリセル部と、
前記データに発生した誤りを訂正するための誤り訂正データが、前記複数のデータビット列部にそれぞれ対応する複数の誤り訂正ビット列部に分割されて記憶される誤り訂正メモリセル部と、
読み出しアドレスに応じて、前記データメモリセル部と前記誤り訂正メモリセル部とから、前記データ及び前記誤り訂正データを同時に読み出すように共通化されたロー／カラムデコーダと、
前記各メモリセル部から、前記データ及び前記誤り訂正データを読み出す際に使用され、前記データのビット数と同じ数だけ設けられているセンスアンプと、
制御信号に応じて、前記データと前記誤り訂正データとを切り替えて、前記センスアンプに入力するためのマルチプレクサと、
制御信号に応じて、前記センスアンプより出力されるデータと誤り訂正データとを、データバッファと誤り訂正バッファとに出力し分けるデマルチプレクサと、
前記マルチプレクサ及び前記デマルチプレクサに、それぞれ制御信号を出力し、前記メモリセル部に対する書き込み及び読み出しを制御する制御部とを備え、
前記マルチプレクサには、任意のデータビット列部に属するビットと、前記データビット列部に対応しない誤り訂正ビット列部に属するビットとの組み合わせが入力されることを特徴とするメモリ回路。
【請求項２】
前記データビット列部及び前記誤り訂正ビット列部が、それぞれ上位側，下位側の２つに分割されており、
前記データメモリセル部は、上位側，下位側データビット列部の順で配置され、
前記誤り訂正メモリセル部は、下位側，上位側誤り訂正ビット列部の順で配置され、
前記データメモリセル部及び前記誤り訂正メモリセル部の出力ビット線は、前記マルチプレクサの各入力端子に、配置されているビット順でそれぞれ配線されていることを特徴とする請求項１記載のメモリ回路。
【請求項３】
前記データビット列部及び前記誤り訂正ビット列部が、それぞれ上位側，下位側の２つに分割されており、
前記データメモリセル部は、上位側，下位側データビット列部の順で配置され、
前記誤り訂正メモリセル部は、上位側，下位側誤り訂正ビット列部の順で配置され、
前記データメモリセル部の出力ビット線は、前記マルチプレクサの各入力端子に、配置されているビット順で配線され、
前記誤り訂正メモリセル部の出力ビット線は、前記マルチプレクサの各入力端子に、上位側，下位側の並びを入れ替えたビット順で配線されていることを特徴とする請求項１記載のメモリ回路。
【請求項４】
請求項１ないし３記載のメモリ回路と、
書き込みデータに基づいて、前記誤り訂正メモリセル部に記憶される誤り訂正データを生成する訂正データ生成部と、
前記データバッファに格納されたデータと、前記誤り訂正バッファに格納されたデータとに基づいて、誤り訂正処理を行う誤り訂正処理部とを備えることを特徴とするメモリ装置。
【請求項５】
前記データバッファに格納されたデータと、前記誤り訂正バッファに格納されたデータとを、外部より直接読み出すためのデータパスを備えることを特徴とする請求項４記載のメモリ装置。
【請求項６】
前記誤り訂正処理部によって誤り訂正されたデータを、外部に出力するための出力用データバッファを備え、
前記出力用データバッファの入力側バスには、データの書き込み用バスが接続され、
前記出力用データバッファの出力側バスは、前記データバッファの入力バスにゲートを介して接続されていると共に、前記訂正データ生成部の入力バスに接続され、
前記訂正データ生成部の出力バスは、前記誤り訂正バッファの入力バスにゲートを介して接続されており、
前記制御部は、データの書き込み及び読み出しに応じて、前記各ゲートのイネーブル制御を行うことを特徴とする請求項４又は５記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データと共に誤り訂正用のデータが記憶されるメモリ回路，そのメモリ回路とデータの誤り訂正機能とを有するメモリ装置及びメモリデータの誤り訂正方法に関する。
【背景技術】
【０００２】
メモリデバイスには、データと共に誤り訂正用のパリティデータも記憶しておき、データに発生した１ビットの誤りを訂正する機能を内蔵しているものがある。そのようなメモリデバイスの一例として、例えば特許文献１には、データ部とパリティデータ部とのそれぞれについて、専用のカラムゲート（デコーダ）やセンスアンプを設けた構成が開示されている。しかしながら、例えば容量が数１００ｋバイト程度であり比較的小さいメモリでは、デコーダやセンスアンプの回路規模が占める割合が大きくなり、デバイス全体が大型化するという問題がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−５９２９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、デコーダを共通化するとともに、センスアンプも共通化して、センスアンプに入力されるデータをマルチプレクサにより切り替えるようにすれば、回路規模の増大を抑制できる。ところが、このような構成では、１つのセンスアンプ、若しくはセンスアンプの出力端子につながる配線に故障が発生した場合は自動的に２ビットエラーとなるため、誤り訂正ができなくなることが想定される。
【０００５】
本発明は上記事情に鑑みてなされたものであり、その目的は、回路規模の増大を抑制しつつ、一部のハードウェアの故障による２ビットエラーの発生を回避できるメモリ回路，前記メモリ回路とデータの誤り訂正機能を有するメモリ装置及びメモリデータの誤り訂正方法を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１記載のメモリ回路によれば、データメモリセル部には、データが、複数のデータビット列部に分割されて記憶され、誤り訂正メモリセル部には、前記データに発生した誤りを訂正するための誤り訂正データが、前記複数のデータビット列部にそれぞれ対応する複数の誤り訂正ビット列部に分割されて記憶されている。ロー／カラムデコーダは、読み出しアドレスに応じてデータ及び誤り訂正データを同時に読み出すが、この読み出しの際に使用されるセンスアンプは、前記データのビット数分だけ設けられており、各ビットに対応するセンスアンプには、制御部がマルチプレクサを制御することで、データと誤り訂正データとが切り替えて入力される。
【０００７】
マルチプレクサには、任意のデータビット列部に属するビットと、前記データビット列部に対応しない誤り訂正ビット列部に属するビットとの組み合わせが入力されるように接続されている。そして、センスアンプより出力されるデータと誤り訂正データとは、デマルチプレクサを介してデータバッファと誤り訂正バッファとに出力し分けられる。
【０００８】
ここで、何れか１つのセンスアンプの出力ラインに不具合が発生したこと，例えばセンスアンプが故障したこと想定する。すると、マルチプレクサにより切り替えられて上記センスアンプを介して読み出されるデータと誤り訂正データとには、それぞれ１ビットずつの誤りが含まれることになる。しかし、マルチプレクサには、前記データのデータビット列部に属するビットと、前記データビット列部に対応しない誤り訂正ビット列部に属するビットとの組み合わせが入力されるので、データビット列部と、それに対応する誤り訂正ビット列部との組み合わせ中では誤りが１ビットしか含まれなくなる。
【０００９】
したがって、デマルチプレクサを介して、データバッファと誤り訂正バッファとに出力し分けられたデータと誤り訂正データとを、対応するビット列部を組み合わせて誤り訂正を行えば、何れも１ビットの誤りであるから訂正することができる。これにより、ロー／カラムデコーダのカラム側をデータの読み出しと誤り訂正データの読み出しとについて共通化できると共に、センスアンプをデータのビット数分だけ設けた構成でも、１ビットラインの不具合により２ビットの誤りが発生することを回避できるので、メモリ回路を小型化することが可能となる。
【００１０】
請求項２記載のメモリ回路によれば、データビット列部及び誤り訂正ビット列部を、それぞれ上位側，下位側の２つに分割し、データメモリセル部には上位側，下位側データビット列部の順に配置し、誤り訂正メモリセル部には下位側，上位側誤り訂正ビット列部の順で配置する。そして、データメモリセル部及び誤り訂正メモリセル部の出力ビット線は、マルチプレクサの各入力端子に配置されているビット順でそれぞれ配線する。すなわち、データメモリセル部と誤り訂正メモリセル部とに配置される各ビット列部を、上位側，下位側の順序が互いに異なるように配置することで、マルチプレクサを介して各センスアンプより読み出される各ビットの組み合わせが、データビット列部に対応しない誤り訂正ビット列部に属するものとなる。
【００１１】
請求項３記載のメモリ回路によれば、データビット列部及び誤り訂正ビット列部を、それぞれ上位側，下位側の２つに分割し、データメモリセル部には上位側，下位側データビット列部の順に配置し、誤り訂正メモリセル部も同様に上位側，下位側誤り訂正ビット列部の順で配置する。そして、データメモリセル部及び誤り訂正メモリセル部の出力ビット線は、マルチプレクサの各入力端子に、上位側，下位側の並びを入れ替えたビット順で配線する。したがって、データメモリセル部と誤り訂正メモリセル部とにデータと誤り訂正データとを書き込む場合、請求項２のように、各ビット列部の上位側，下位側の配置が互いに異なるように入れ替えて書き込みを行わずとも、請求項２と同様の効果が得られる。
【００１２】
請求項４記載のメモリ装置によれば、請求項１ないし３記載のメモリ回路に、書き込みデータに基づき誤り訂正メモリセル部に記憶される誤り訂正データを生成する訂正データ生成部と、データバッファに格納されたデータと誤り訂正バッファに格納されたデータとに基づき誤り訂正処理を行う誤り訂正処理部とを備える。したがって、本発明のメモリ回路に、誤り訂正データの生成機能と誤り訂正処理機能とを併せ持ったメモリ装置を提供できる。
【００１３】
請求項５記載のメモリ装置によれば、データバッファに格納されたデータと、誤り訂正バッファに格納されたデータとを、外部より直接読み出すためのデータパスを備えるので、例えばデバッグ処理を行う場合において、誤り訂正処理が行われる前のデータ値や誤り訂正データの値を読み出して確認することができる。
【００１４】
請求項６記載のメモリ装置によれば、誤り訂正処理部によって誤り訂正されたデータを、外部に出力するための出力用データバッファを備え、出力用データバッファの入力側バスに、データの書き込み用バスを接続する。また、出力用データバッファの出力側バスを、データバッファの入力バスにゲートを介して接続すると共に訂正データ生成部の入力バスに接続し、訂正データ生成部の出力バスを、誤り訂正バッファの入力バスにゲートを介して接続する。そして、制御部は、データの書き込み及び読み出しに応じて各ゲートのイネーブル制御を行う。
【００１５】
このように構成すれば、データをメモリセル部に書き込む場合の経路は、書き込み用バスから出力用データバッファを介し、データバッファ→データメモリセル部に至る。一方、誤り訂正データについては、
出力用データバッファ→訂正データ生成部（誤り訂正データ生成）→
誤り訂正バッファ→誤り訂正データメモリセル部
に至る。したがって、データを書き込む場合と読み出す場合とに使用するバッファが共通化されるので、メモリ装置を小型化することができる。
【図面の簡単な説明】
【００２５】
【図１】第１実施例であり、メモリ装置の構成を示す機能ブロック図
【図２】パリティ生成部がパリティデータを生成するロジックを示す図
【図３】エラー訂正部がエラー訂正処理を行うロジックを示す図
【図４】メモリ制御部により実行される処理内容を中心に示すフローチャート
【図５】タイミングチャート
【図６】第２実施例を示す図１相当図
【図７】第３実施例を示す図１相当図
【図８】図４相当図
【図９】図５相当図
【図１０】第４実施例であり、メモリセル部の配置イメージを示す図
【図１１】第５実施例を示す図１０相当図
【図１２】第６実施例を示す図１０相当図
【図１３】第７実施例を示す図１０相当図
【発明を実施するための形態】
【００２６】
（第１実施例）
以下、第１実施例について図１ないし図５を参照して説明する。図１は、メモリ装置の構成を示す機能ブロック図である。データ構成は、一例として、ノーマルデータ（誤り訂正データであるパリティデータと明確に区別するため、エラー訂正（誤り訂正）の対象となるデータを「ノーマルデータ」と称す）８ビット、パリティデータ８ビットの１６ビットとするが、パリティデータは例えばハミング符号であり、８ビットデータの上位４ビット、下位４ビットに対応してそれぞれ３ビットが生成されるので実際のパリティデータビット数は「６」である。
【００２７】
メモリ装置１は、メモリ回路２を備えている。メモリ回路２のメモリセル部３は、上位側８ビットがデータメモリセル部３Ｎ，下位側８ビットがパリティメモリセル部３Ｐ（誤り訂正メモリセル部）となっている。メモリセル部３は、図中左方から右方に、第１行（ロー）に、それぞれが４ビットの列であるノーマルデータ（２）（上位側；第７〜第４ビット）、ノーマルデータ（１）（下位側；第３〜第０ビット）、パリティデータ（１）（下位側；第３〜第０ビット）、パリティデータ（２）（上位側；第７〜第４ビット）のように配列されている。また、第２行は、ノーマルデータ（４）、ノーマルデータ（３）、パリティデータ（３）、パリティデータ（４）のように配列されている。すなわち、ノーマルデータについては上位、下位の順で、パリティデータについては下位、上位の順で配置されている。
【００２８】
以下、ノーマルデータ（２），（４），（６），…（ｎ＋１）が配置されているカラム側のビット列をノーマルカラム部３ＮＵ（上位側データビット列部）と称し、ノーマルデータ（１），（３），（５），…（ｎ）が配置されているカラム側のビット列をノーマルカラム部３ＮＬ（下位側データビット列部）と称する。また、パリティデータ（２），（４），（６），…（ｎ＋１）が配置されているカラム側のビット列をパリティカラム部３ＰＵ（上位側誤り訂正ビット列部）と称し、パリティデータ（１），（３），（５），…（ｎ）が配置されているカラム側のビット列をパリティカラム部３ＰＬ（下位側誤り訂正ビット列部）と称する。
【００２９】
なお、メモリセル部３のメモリの種類については特段限定しないが、例えばフラッシュＲＯＭ，ＥＥＰＲＯＭ，ＤＲＡＭ，ＳＲＡＭなどである。
メモリセル部３の各行は、入力されたアドレスに応じて、共通のロー／カラムデコーダ４により１６ビット毎に書き込み及び読み出しが行われる。そして、読み出された１６ビットのデータは、８個のセレクタ（マルチプレクサ）５（７）〜５（０）を介して共通のセンスアンプ６（７）〜６（０）の入力端子に与えられる。
【００３０】
セレクタ５（７）の入力端子には、ノーマルカラム部３ＮＵの第７ビットと、パリティカラム部３ＰＬの第３ビット（ダミー，図中に×を付して示す）とが与えられ、セレクタ５（６）の入力端子には、ノーマルカラム部３ＮＵの第６ビットと、パリティカラム部３ＰＬの第２ビットとが与えられている。そして、セレクタ５（０）の入力端子には、ノーマルカラム部３ＮＬの第０ビットと、パリティカラム部３ＰＵの第４ビットとが与えられている。尚、パリティカラム部３ＰＵの第７ビットもダミーである。すなわち、データメモリセル部３Ｎ及び誤り訂正メモリセル部３Ｐの出力ビット線は、セレクタ５の各入力端子に配置されているビット順でそれぞれ配線されている。
【００３１】
センスアンプ６（７〜０）の出力端子は、メモリＲＤバス５０を介して８個のデマルチプレクサ７（７〜０）に入力され（図示は１個のみ）、デマルチプレクサ７を介して２つの出力ゲート８Ｎ，８Ｐに振り分けられる。出力ゲート８Ｎ，８Ｐを介したデータは、それぞれ８ビットのデータバッファ９Ｎ，パリティバッファ９Ｐ（誤り訂正バッファ）に格納される。データバッファ９Ｎに格納されたノーマルデータと、パリティバッファ９Ｐに格納されたパリティデータとは、エラー訂正部（誤り訂正処理部）１０Ｕ，１０Ｌに入力されてエラー訂正処理が行われると、その後段に配置される８ビットのデータバッファ１１（出力用データバッファ）に格納される。
【００３２】
ここで、エラー訂正部１０Ｕ，１０Ｌには、それぞれノーマルデータが４ビットずつ入力され、パリティデータは４ビットずつ（使用するのは３ビット）入力される。エラー訂正部１０Ｕには、ノーマルデータの上位４ビット（第７〜第４ビット）と、パリティデータの上位４ビット（第７〜第４ビット）とが入力され、エラー訂正部１０Ｌには、ノーマルデータの下位４ビット（第３〜第０ビット）と、パリティデータの下位４ビット（第３〜第０ビット）とが入力される。
【００３３】
尚、メモリ装置１に対するノーマルデータの書き込み及び読み出しは、外部の上位回路によりメモリ制御部１２を介して行われる。すなわち、メモリ制御部１２には、アドレスが入力されると共に、書き込み用のノーマルデータが入力され、メモリセル部３より読み出されたノーマルデータは、メモリ制御部１２を経由して外部に出力される。したがって、エラー訂正部１０によりエラー訂正処理されてデータバッファ１１に格納されたノーマルデータは、ＲＤバス１３を介してメモリ制御部１２に入力される。
【００３４】
また、メモリセル部３に書き込まれるデータは、以下のようなパスを経由して書き込まれる。メモリ制御部１２よりＷＲバス１４上に出力されたノーマルデータは、データバッファ１１及び出力ゲート１５を経由してデータバッファ９Ｎに格納される。また、データバッファ１１の出力側は、パリティ生成部（誤り訂正データ生成部）１６Ｕ，１６Ｌの入力側に接続されており、パリティ生成部１６Ｕ，１６Ｌは、ノーマルデータの上位，下位４ビット毎にそれぞれ３ビットのパリティデータを生成して出力する。出力されたパリティデータは、出力ゲート１７を介してパリティバッファ９Ｐに格納される。
【００３５】
書き込み時にデータバッファ９Ｎ，パリティバッファ９Ｐに格納されたそれぞれ８ビットのノーマルデータ，パリティデータは、メモリＷＲバス１８を介してメモリセル部３に書き込まれる。また、メモリＷＲバス１８に接続されているデータバッファ９Ｎ，パリティバッファ９Ｐの出力側は、データバッファ２ＲＤバス１９，パリティバッファＲＤバス２０を介してメモリ制御部１２に接続されている。
【００３６】
すなわち、メモリ制御部１２は、エラー訂正部１０において訂正処理が実行される前のノーマルデータ及びパリティデータを、ＲＤバス１９及び２０（読み出し用のデータパス）を介して直接読み出せるようになっている。また、メモリ制御部１２は、データの書き込み、読み出し時に応じて、ゲート８，１５，１７のイネーブル制御を行ったり、セレクタ５やデマルチプレクサ７の選択切り替え制御を行う（ＳＥＬ信号）。
【００３７】
更に、メモリ制御部１２は、各バッファ９，１１に、データバッファ２ＷＲ，パリティバッファＷＲ，データバッファ１ＷＲによりデータを格納するタイミング信号を出力する。尚、ゲート８，１５，１７のイネーブル制御はメモリＲＤ信号によって行われるが、ゲート１５，１７にはＮＯＴゲート２１を介した反転信号が与えられている。以上の構成において、メモリ回路２に、メモリ制御部１２，バッファ９及び１１，エラー訂正部１０，パリティ生成部１６を加えたものがメモリ装置１を構成している。
【００３８】
ここで、本実施例において使用するパリティデータは、前述のようにハミング符号である。図２は、パリティ生成部１６が４ビットのノーマルデータＤ（３：０）に基づいて３ビットのパリティデータＰ（２：０）を生成するロジックを示している。すなわち、各データビットの組み合わせを排他的論理和演算することでパリティデータが生成される。
【００３９】
また、図３は、エラー訂正部１０が、４ビットのノーマルデータＤ（３：０）と３ビットのパリティデータＰ（２：０）とに基づいて誤り訂正処理を行うロジックを示している。すなわち、各ノーマルデータビットとパリティデータビットとの組み合わせを排他的論理和演算することで３ビットのシンドロームｓ１〜ｓ３を生成し、それらのシンドロームの値に応じて１ビットのエラーが生じているノーマルデータビット，又はパリティビットを検出することができる。そして、検出されたビットの値を反転することで誤りを訂正できる。尚、パリティビット数をｍとすると、符号長ｎは「２ｍ−１」となり、情報数ｋは「ｎ−ｍ」となる。本実施例の場合、ｍ＝３,ｎ＝４である。
【００４０】
次に、本実施例の作用について図４及び図５を参照して説明する。図４は、メモリ制御部１２によって実行される処理内容を中心に示すフローチャートである。尚、メモリ制御部１２については、ハードウェアロジックで構成しても良いし、マイクロコンピュータのソフトウェアにより機能を実現しても良い。先ず、アドレスが入力されると、最下位ビットを除いたアドレスをロー／カラムデコーダ４に出力する（ステップＳ１）。メモリセル部３に対する書き込み及び読み出しは、１６ビット（２バイト）を１ワードとして行うからである。
【００４１】
次に、入力される制御信号が書き込み（ライト），読み出し（リード）の何れを示しているかに応じて処理が分岐する（ステップＳ２）。書き込みであれば、書き込みデータをデータバッファ１１に格納する（ステップＳ７）。続いて、出力ゲート１５をイネーブルにしてデータバッファ１１に格納したノーマルデータをデータバッファ９Ｎにも格納する。また、データバッファ１１に格納されたデータは、パリティ生成部１６にも入力されてパリティデータが生成され、出力ゲート１７をイネーブルにしてパリティバッファ９Ｐに格納する（ステップＳ８）。
それから、メモリＷＲ信号をハイ（Ｈｉ，アクティブ）にして、データバッファ９Ｎよりノーマルデータを、パリティバッファ９Ｐよりパリティデータを、メモリＷＲバス１８を介してメモリセル部３に書き込む（ステップＳ９）。
【００４２】
一方、ステップＳ２において、データの読み出しである場合は、メモリＲＤ信号をハイ（アクティブ）にしてＳＥＬ信号をローにする。更に、データバッファ２ＷＲ信号をハイ（アクティブ）にして、メモリセル部３より読み出した８ビットのノーマルデータを、データバッファ９Ｎに格納する（ステップＳ３）。例えば、読み出しアドレスが最下位であれば、メモリセル部３からは、ノーマルデータ（２），ノーマルデータ（１），パリティデータ（１），パリティデータ（２）の１６ビットが読み出されるが、セレクタ５及びデマルチプレクサ７が入力端子「０」側を選択するので、ノーマルデータ（２）及び（１）の８ビットが、センスアンプ６を経由してデータバッファ９Ｎに格納される。
【００４３】
次に、メモリＲＤ信号をハイにしたままＳＥＬ信号をロー（Ｌｏ）にし、データバッファＷＲ信号をハイ（アクティブ）にして、メモリセル部３より読み出した８ビットのパリティデータを、データバッファ９Ｐに格納する（ステップＳ４）。この時、セレクタ５及びデマルチプレクサ７が入力端子「１」側を選択するので、パリティデータ（１）及び（２）の８ビットが、センスアンプ６を経由してデータバッファ９Ｐに格納される。
すると、ノーマルデータ，パリティデータがエラー訂正部１０に入力されて、ノーマルデータの上位／下位４ビットにつきそれぞれエラー訂正処理が行われ、処理結果がデータバッファ１１に格納される（ステップＳ５）。そして、メモリ制御部１２は、データバッファ１１に格納されたノーマルデータを、上位回路に読み出し結果として転送する（ステップＳ６）。
【００４４】
次に、より具体的にアドレス値及びデータ値を与えて、メモリセル部３からのデータ読み出し経路における第１ビットのラインの故障が発生したケース（例えば、センスアンプ６（１）の故障など）の読み出し及びエラー訂正処理について、図５のタイミングチャートを参照して説明する。
【００４５】
＜ケース１：読み出し／故障なし＞
メモリセル部３に対する１６ビット対応の読み出しアドレスが００ｈであり、メモリセル部３より５Ａ５２ｈが読み出されたとする。バイナリでは、
０１０１  １０１０  ０１０１  ００１０ｂ
となる。ＳＥＬ信号がローの期間は、上位側の８ビット；ノーマルデータ５Ａｈがセレクタ５により選択され、センスアンプ６を介してメモリＲＤバス５０に出力され、更にデマルチプレクサ７を介してデータバッファ９Ｎに格納される。そして、ＳＥＬ信号がハイの期間は、下位側の８ビット；パリティデータ５２ｈがセレクタ５により選択され、パリティバッファ９Ｐに格納される。
【００４６】
続いて、エラー訂正部１０においてエラー訂正処理が実行されるが、エラー訂正部１０Ｕには、ノーマルデータ（２）；５ｈに対応するパリティデータ（２）；２ｈが入力され、エラー訂正部１０Ｌには、ノーマルデータ（１）；Ａｈに対応するパリティデータ（１）；５ｈが入力される。この場合エラーが発生していないので、訂正は行われず、データバッファ１１には、ノーマルデータ５Ａｈがそのまま格納される。
【００４７】
＜ケース２：読み出し／センスアンプ６（１）に故障発生＞
この場合、ケース１と同じアドレスの同じ１６ビットデータを読み出そうとすると、センスアンプ６（１）が故障したため、１６ビットデータのうち、センスアンプ６（１）を経由して読み出される２ビットにエラーが発生する（データ値「１」が「０」になる）。
（正常）          ０１０１  １０１０  ０１０１  ００１０ｂ
（第１ビット故障）      ０１０１  １０００  ０１０１  ００００ｂ
すなわち、５８５０ｈとなる。したがって、上位側の８ビット；ノーマルデータ５８ｈがデータバッファ９Ｎに格納され、下位側の８ビット；パリティデータ５０ｈがパリティバッファ９Ｐに格納されることになる。
【００４８】
そして、これらのノーマルデータ及びパリティデータに基づきエラー訂正部１０においてエラー訂正処理が実行されるが、それぞれ４ビット毎に、エラー訂正部１０Ｕ，１０Ｌに入力されるノーマルデータとパリティデータとの組み合わせは、以下のようになる。
ノーマルデータ    パリティデータ
エラー訂正部１０Ｕ            ５ｈ              ０ｈ（エラー）
エラー訂正部１０Ｌ            ８ｈ（エラー）    ５ｈ
すなわち、それぞれのノーマルデータ及びパリティデータの組み合わせでは、エラーが発生しているのは１ビットずつとなる。したがって、エラー訂正部１０Ｕ，１０Ｌは、それぞれ１ビットエラーを訂正することができ、結果としてデータバッファ１１には、＜ケース１＞と同様に誤りがないノーマルデータ５Ａｈが格納されることになる。
【００４９】
＜ケース３；書き込み＞
ケース３は、アドレス００００ｈにノーマルデータ９６ｈを書き込む場合を示している。データバッファ１１にノーマルデータ９６ｈが格納されると、パリティ生成部１６によりパリティデータ３４ｈが生成される。すなわち、パリティ生成部１６Ｕにおいてパリティデータ４ｈ，パリティ生成部１６Ｌにおいてパリティデータ３ｈが生成される。すると、ノーマルデータ９６ｈ，パリティデータ３４ｈがそれぞれデータバッファ９Ｎ，パリティバッファ９Ｐに格納される。そして、メモリＷＲ信号が出力されるタイミングで、メモリセル部３に１６ビットデータ９６３４ｈが書き込まれる。
【００５０】
以上のように本実施例によれば、データメモリセル部３Ｎにおいて、ノーマルデータをノーマルカラム部３ＮＵ，３ＮＬに分割して記憶し、誤り訂正メモリセル部３Ｐには、前記データに発生した誤りを訂正するための誤り訂正データを、パリティカラム部３ＰＵ，３ＰＬに分割して記憶し、ロー／カラムデコーダ４は、読み出しアドレスに応じてデータ及び誤り訂正データを同時に読み出す。そして、各ビットに対応するセンスアンプ６（７〜０）には、メモリ制御部１２がセレクタ５（７〜０）を制御することで、ノーマルデータと誤り訂正データとを切り替えて入力する。この場合、セレクタ５には、ノーマルカラム部３ＮＵ，３ＮＬのビットとパリティカラム部３ＰＬ，ＰＵのビットとの組み合わせが入力されるように接続され、センスアンプ６より出力されるノーマルデータと誤り訂正データとを、デマルチプレクサ７を介してデータバッファ９Ｎとパリティバッファ９Ｐとに出力し分けるようにした。
【００５１】
したがって、何れか１つのセンスアンプ６の出力ラインに不具合が発生した場合でも、データビット列部と、それに対応する誤り訂正ビット列部との組み合わせ中では誤りが１ビットしか含まれなくなり、１ビットの誤りを訂正することができる。これにより、ロー／カラムデコーダ４のカラム側をデータの読み出しと誤り訂正データの読み出しとについて共通化できると共に、センスアンプ６をデータのビット数分だけ設けた構成でも、１ビットラインの不具合により２ビットの誤りが発生することを回避でき、メモリ回路２を小型化することが可能となる。そして、メモリ回路２に、パリティ生成部１６と、エラー訂正部１０とを加えることで誤り訂正データの生成機能とエラー訂正処理機能とを併せ持ったメモリ装置１を提供できる。
【００５２】
また、メモリ装置１、データバッファ９Ｎに格納されたノーマルデータと、パリティバッファ９Ｐに格納されたパリティデータとを、データバッファＲＤバス１９，パリティバッファＲＤバス２０を介して直接読み出すようにしたので、例えばデバッグ処理を行う場合において、誤り訂正処理が行われる前のデータ値やパリティデータの値を読み出して確認することができる。
【００５３】
更に、エラー訂正部１０により誤り訂正されたノーマルデータを外部に出力するためのデータバッファ１１を備え、データバッファ１１の入力側バスにＷＲバス１４を接続し、データバッファ１１の出力側バスを、データバッファ９Ｎの入力バスに出力ゲート１５を介して接続すると共にパリティデータ生成部１６の入力バスに接続し、パリティ生成部１６の出力バスを、パリティバッファ９Ｐの入力バスに出力ゲート１７を介して接続し、メモリ制御部１２は、データの書き込み及び読み出しに応じて出力ゲート１５，１７のイネーブル制御を行うようにした。このように構成すれば、データを書き込む場合と読み出す場合とに使用するバッファを共通化して、メモリ装置１を小型化することができる。
【００５４】
（第２実施例）
図６は第２実施例であり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。第２実施例のメモリ装置２２では、メモリセル部３において、パリティメモリセル部３Ｐにおける上位側，下位側の配置が、第１実施例とは逆になっている。すなわち、データメモリセル部３Ｎと同様に、パリティカラム部３ＰＵ，パリティカラム部３ＰＬの順（上位側，下位側データビット列部，及び上位側，下位側誤り訂正ビット列部の順）で配置されている。尚、ＲＤバス１９及び２０の図示は省略している。
【００５５】
それに対応して、パリティメモリセル部３Ｐと、セレクタ５との間の接続関係が第１実施例と等しくなるように、パリティカラム部３ＰＵ，パリティカラム部３ＰＬの並びが入れ替わるようにして配線されている。尚、メモリセル部３にデータを書き込む場合のメモリＷＲバス１８’の配線も、上記のパリティカラム部３ＰＵ，パリティカラム部３ＰＬの配置順に対応していることは勿論である。
【００５６】
以上のように構成される第２実施例によれば、データメモリセル部３Ｎには上位側，下位側データビット列部の順に配置し、誤り訂正メモリセル部３Ｐにも上位側，下位側誤り訂正ビット列部の順で配置して、データメモリセル部３Ｎ及び誤り訂正メモリセル部３Ｐの出力ビット線は、セレクタ５の各入力端子に、上位側，下位側の並びを入れ替えたビット順で配線したので、メモリセル部３にノーマルデータとパリティデータとを書き込む場合、第１実施例のように、各ビット列部の上位側，下位側の配置が互いに異なるように入れ替えて書き込みを行わずとも第１実施例と同様の効果が得られる。
【００５７】
（第３実施例）
図７ないし図９は第３実施例であり、第１実施例と異なる部分のみ説明する。第３実施例のメモリ装置３１において、メモリ回路３２及びメモリセル部３３は一般的な構成であり、メモリセル部３３のバスサイズは８ビット（１ワード）となっている。したがって、セレクタ５は削除されている。そして、メモリセル部３３においては、ノーマルデータとパリティデータとが１アドレスずつ交互に配置されており、ノーマルデータ（アドレスｎ）に対応するパリティデータ（アドレスｎ＋１）の４ビット列の配置は、上位，下位が逆に配置されている。
【００５８】
すなわち、メモリセル部３３は、最初のアドレスにノーマルデータ（２）、ノーマルデータ（１）が配置され（上位側，下位側データビット列部）、その次のアドレスにパリティデータ（１）、パリティデータ（２）が配置されている（下位側，上位側誤り訂正ビット列部）。次のアドレスには、ノーマルデータ（４）、ノーマルデータ（３）が配置され、その次のアドレスにはパリティデータ（３）、パリティデータ（４）が配置されている。したがって、メモリ制御部（読み出し制御部）３４は、ＳＥＬ信号によってはデマルチプレクサ７の切り替え制御のみ行う。
【００５９】
また、上記ＳＥＬ信号は、ロー／カラムデコーダ３５にも与えられている。ロー／カラムデコーダ３５に与えられるアドレスは、第１実施例と同様にＬＳＢを除く上位側アドレスであり、上記ＳＥＬ信号がアドレスのＬＳＢに相当する。すなわち、ＳＥＬ信号が「０」の場合は偶数アドレスが読み出され（又は書き込まれ）、ＳＥＬ信号が「１」の場合は奇数アドレスが読み出される（又は書き込まれる）。
【００６０】
また、メモリセル部３３にデータを書き込むためのメモリＷＲバス３６は８ビットバスとなり、そのメモリＷＲバス３５には、マルチプレクサ３７を介してノーマルデータ，パリティデータが与えられる。マルチプレクサ３７の「０」側はデータバッファ９Ｎの出力バスに接続され、「１」側はパリティバッファ９Ｐの出力バスに接続されている。そして、マルチプレクサ３７の切り替え制御もＳＥＬ信号によって行われる。
【００６１】
次に、第３実施例の作用について図８及び図９を参照して説明する。図８，図９は図４，図５相当図である。図８においては、データの書き込み時の処理が第１実施例とは異なっており、ステップＳ９に替えてステップＳ１０，Ｓ１１が配置されている。すなわち、上述したように、ＳＥＬ信号がアドレスのＬＳＢとしてロー／カラムデコーダ３５に入力されることで、リードアクセスについては第１実施例と全く同様に行われる。
【００６２】
＜ケース１：読み出し／故障なし＞
メモリセル部３３に入力される読み出しアドレスが００ｈであり、ロー／カラムデコーダ３５に入力されるＳＥＬ信号がローの期間は、メモリセル部３３からアドレス００ｈのノーマルデータ５Ａｈが読み出されたとする。バイナリでは、
０１０１  １０１０ｂ
となる。すると、ノーマルデータ５Ａｈは、センスアンプ６を介してメモリＲＤバス２０に出力され、更にデマルチプレクサ７を介してデータバッファ９Ｎに格納される。続いて、読み出しアドレスが００ｈのままでＳＥＬ信号がハイになると、アドレス０００１ｈのパリティデータ５２ｈが読み出され、パリティバッファ９Ｐに格納される。
【００６３】
そして、エラー訂正部１０においてエラー訂正処理が実行されるが、この場合エラーが発生していないので、訂正は行われず、データバッファ１１には、ノーマルデータ５Ａｈがそのまま格納される。
【００６４】
＜ケース２：読み出し／センスアンプ６（１）に故障発生＞
この場合、ケース１と同じアドレスの同じノーマルデータを読み出そうとすると、センスアンプ６（１）の故障により第１ビットにエラーが発生する。
（正常）          ０１０１  １０１０ｂ
（第１ビット故障）      ０１０１  １０００ｂ
すなわち、ノーマルデータ５８ｈがデータバッファ９Ｎに格納される。続いて読み出されるアドレス０００１ｈのパリティデータは、
（正常）          ０１０１  ００１０ｂ
（第１ビット故障）      ０１０１  ００００ｂ
となり、パリティデータ５０ｈがパリティバッファ９Ｐに格納されることになる。
【００６５】
そして、これらのノーマルデータ及びパリティデータに基づきエラー訂正部１０においてエラー訂正処理が実行されるが、それぞれ４ビット毎に、エラー訂正部１０Ｕ，１０Ｌに入力されるノーマルデータとパリティデータとの組み合わせは第１実施例と同様になり、それぞれのノーマルデータ及びパリティデータの組み合わせでは、エラーが発生しているのは１ビットずつとなる。したがって、エラー訂正部１０Ｕ，１０Ｌは、それぞれ１ビットエラーを訂正することができ、結果としてデータバッファ１１には、＜ケース１＞と同様に誤りがないノーマルデータ５Ａｈが格納されることになる。
【００６６】
＜ケース３；書き込み＞
ケース３は、アドレス００００ｈにノーマルデータ９６ｈを書き込む場合であるが、この時は、パリティ生成部１６によりパリティデータ３４ｈが生成され、メモリＷＲ信号がアクティブとなり且つＳＥＬ信号がローレベルの期間に、メモリセル部３３のアドレス００００ｈにノーマルデータ９６ｈが書き込まれ（ステップＳ１０）、ＳＥＬ信号がハイレベルに切り替わると、アドレス０００１ｈにパリティデータ３４ｈが書き込まれる（ステップＳ１１）。
【００６７】
以上のように第３実施例によれば、メモリセル部３３に、任意のデータビット列部と当該データビット列部に対応する誤り訂正ビット列部とをカラム側の位置が異なるように配置すると共に、任意のデータビット列部と当該データビット列部に対応する誤り訂正ビット列部とを異なるアドレスに配置し、メモリ制御部３４は、データの読み出しアドレスが与えられると、アドレスのＬＳＢの代わりにＳＥＬ信号を用いて、メモリセル部よりデータと当該データに対応する誤り訂正データとを連続して読み出すようにした。
【００６８】
このように構成した場合も、何れか１つのセンスアンプ６の出力ラインに不具合が発生しても、データビット列部と、それに対応する誤り訂正ビット列部との組み合わせ中では誤りが１ビットしか含まれなくなり、１ビットの誤りを訂正することができる。そして、データを読み出す側が必要とするのは（誤り訂正された）データのみであるから、パリティデータを読み出すためだけにアクセスを行うことは余分な処理である。そこで、第３実施例によれば、データを読み出す側がパリティデータを読み出すためだけに別途アドレスを出力してアクセスを行う必要がなくなる。
【００６９】
また、メモリセル部３３におけるノーマルデータ（２）／（１）と、パリティデータ（１）／（２）との配置関係は予め分かっているので、メモリセル部３３から読み出した後に両者の対応をとれば、誤り訂正処理を問題なく行うことができる。
【００７０】
（第４実施例）
図１０は第４実施例であり、第３実施例と異なる部分について説明する。第４実施例は、第３実施例のメモリセル部３３において、ノーマルデータの４ビット列及びパリティデータの４ビット列を配置する際のバリエーションを示す。尚、図中の「Ａ」は例えば上位側，「Ｂ」は下位側の４ビット列を示す。（ａ）は、各アドレスの上位側４ビットに、ノーマルデータを（１Ａ），（１Ｂ），（２Ａ），（２Ｂ），…の順で配置し、各アドレスの下位側４ビットに、パリティデータを（１Ａ），（１Ｂ），（２Ａ），（２Ｂ），…の順で配置する。
【００７１】
したがって、例えばアドレス００００ｈのリードアクセスでは、ノーマルデータ（１Ａ），パリティデータ（１Ａ）が読み出され、アドレス０００１ｈ（ＳＥＬ＝Ｈ）のリードアクセスでは、ノーマルデータ（１Ｂ），パリティデータ（１Ｂ）が読み出される。これらのビット列の配置に応じて、各リードアクセスにおいて、データバッファ９Ｎ，パリティバッファ９Ｐに格納されるノーマルデータ，パリティデータを４ビットずつ適宜振り分ければよい。
【００７２】
また、（ｂ）は、（ａ）の配置に対して、各アドレスの下位側４ビットに、パリティデータを（１Ｂ），（１Ａ），（２Ｂ），（２Ａ），…の順で配置する。したがって、例えばアドレス００００ｈのリードアクセスでは、ノーマルデータ（１Ａ），パリティデータ（１Ｂ）が読み出され、アドレス０００１ｈ（ＳＥＬ＝Ｈ）のリードアクセスでは、ノーマルデータ（１Ｂ，パリティデータを１Ａが読み出される。この場合も、ビット列の配置に応じて、各リードアクセスにおいて、データバッファ９Ｎ，パリティバッファ９Ｐに格納されるノーマルデータ，パリティデータを４ビットずつ適宜振り分ければよい。尚、（ａ）の配置に対して、ノーマルデータ側のＡ，Ｂを逆にしても良い。以上のように第４実施例による場合も、第３実施例と同様の効果が得られる。
【００７３】
（第５実施例）
図１１は第５実施例である。図１１は、メモリセル部が第１実施例のように１６ビットサイズであり、且つノーマルデータが１６ビット（２バイト；１ワード）構成である場合の配置例を示す。１６ビットのノーマルデータを、８ビット列で上位，下位に分けるとする。８ビットのノーマルデータについてエラー訂正を行うには、パリティデータが４ビット（ｍ＝４）あれば良い。したがって、１６ビットのノーマルデータに対してパリティデータが８ビットあれば良い。
【００７４】
（ａ）の場合、アドレス００００ｈにノーマルデータ（２），（１）が配置され（上位側，下位側データビット列部）、アドレス０００４ｈにノーマルデータ（４），（３）が配置されている。そして、アドレス０００２ｈには、上記の４バイトノーマルデータをエラー訂正するためのパリティデータが（３），（１），（４），（２）（それぞれ下位側，下位側，上位側，上位側誤り訂正ビット列部）の順で配置されている。そして、図示はしないが、続くアドレスアドレス０００６ｈにはノーマルデータ（５），（６）が配置されることになる。このように配置すれば、ノーマルデータ，パリティデータをそれぞれ８ビットずつ読み出した場合に、何れか１ビットに故障が発生していても、８ビット単位のノーマルデータに対応する４ビットのパリティデータが同じビットラインで重複して読み出されることがなく、発生するエラーは１ビットに留まるため訂正が可能となる。
【００７５】
（ｂ）は、（ａ）に対してアドレス０００２ｈのパリティデータの配置を（２），（４）に入れ替えたものである。また、図（ｃ），（ｄ）は、（ａ），（ｂ）に対してアドレス０００３ｈのパリティデータの配置を（１），（３）に入れ替えたものである。これらの場合も、同様の効果が得られる。また、図１１に示す配置に対してノーマルデータの配置を変更しても良く、ノーマルデータ（１），（３）を入れ替えたり、ノーマルデータ（２），（４）を入れ替えたりしても良い。
【００７６】
以上のように第５実施例によれば、ノーマルデータのサイズが１６ビットである場合についても同様の効果が得られる。そして、１ワードのノーマルデータ（２），（１）を同じアドレス００００ｈに配置し、上記ノーマルデータ（２），（１）に対応するパリティデータ（２），（１）を同じアドレス０００２ｈに配置した。すなわち、ノーマルデータと対応するパリティデータとを異なるアドレスに配置する場合でも、１ワードのノーマルデータのまとまりと、対応するパリティデータのまとまりとをそれぞれ同じアドレスに配置すれば、読み出し後に両者の対応を容易にとることができる。
【００７７】
（第６実施例）
図１２は第６実施例である。第６実施例は、第５実施例と同様にノーマルデータが１６ビット（２バイト）構成である場合について、第１実施例と同様に各４ビット列について３ビットのパリティデータを割り当てる。（ａ）の場合、アドレス００００ｈにノーマルデータが（４），（３），（２），（１）の順で配置され、アドレス０００２ｈにパリティデータが（３），（４），（１），（２）の順で配置されている。
【００７８】
（ｂ）の場合、アドレス０００２ｈのパリティデータが（３），（２），（１），（４）の順で配置され、（ｃ）の場合、同パリティデータが（１），（４），（３），（２）の順で配置され、（ｄ）の場合、同パリティデータが（１），（２），（３），（４）の順で配置されている。これらのように配置した場合も、ノーマルデータ，パリティデータをそれぞれ８ビットずつ読み出した場合に、何れか１ビットのラインに故障が発生していても、８ビット単位のノーマルデータに対応する４ビットのパリティデータが同じビットラインで重複して読み出されることがなく、発生するエラーは１ビットに留まるため訂正が可能となる。
【００７９】
（第７実施例）
図１３は第７実施例である。図１３は、メモリセル部が３２ビットサイズであり、且つノーマルデータが３２ビット（４バイト；１ワード）構成である場合の配置例を示す。尚、図示はしないが、センスアンプは１６ビット分配置されており、読み出しは１６ビットずつ切り替えて行うものとする。この場合、３２ビットのノーマルデータを、１６ビット列で上位，下位に分ける。１６ビットのノーマルデータについてエラー訂正を行うには、パリティデータが５ビット（ｍ＝５）あれば良い。そして、図１３では、アドレス００００ｈ〜０００８ｈには、ノーマルデータ（１）〜（６）が配置されており、アドレス０００Ｃｈには、上記ノーマルデータ（１）〜（６）に対応する各５ビットのパリティデータ（１）〜（６）が配置されている。その配置順は、上位側より（５），（３），（１），（６），（４），（２）となっている。
【００８０】
この場合、上位側の３つのパリティデータ（５），（３），（１）（これらは下位側誤り訂正ビット列部）の配置順を入れ替えても良いし、下位側の３つのパリティデータ（６），（４），（２）（これらは上位側誤り訂正ビット列部）の配置順を入れ替えても良い。また、アドレス００００ｈ〜０００８ｈに配置されているノーマルデータを、３２ビット単位で入れ替えても良い。このように配置すれば、ノーマルデータ，パリティデータをそれぞれ１６ビットずつ読み出した場合に、何れか１ビットに故障が発生していても、１６ビット単位のノーマルデータに対応する５ビットのパリティデータが同じビットラインで重複して読み出されることがなく、発生するエラーは１ビットに留まるため訂正が可能となる。
以上のように第６実施例によれば、ノーマルデータのサイズが３２ビットである場合についても同様の効果が得られる。
【００８１】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
誤り訂正符号は、ハミング符号に限ることはない。
ノーマルデータのサイズは、個別の設計に応じて適宜変更すれば良い。
書き込み用と読み出し用とで、バッファを個別に設けても良い。
第３実施例において、ノーマルデータとパリティデータとをそれぞれ独立したリードサイクルで読み出しても良い。
データバッファに格納されたデータと、誤り訂正バッファに格納されたデータとを、外部より直接読み出すためのデータパスは、必要に応じて設ければ良い。
ノーマルデータを何ビットのビット列に分割し、それに対して何ビットのパリティデータを割り当てるかは、ｍ≦ｋを維持する範囲で適宜設定すれば良い。
【符号の説明】
【００８２】
図面中、１はメモリ装置、２はメモリ回路、３はメモリセル部、３Ｎはデータメモリセル部、３Ｐはパリティメモリセル部（誤り訂正メモリセル部）、３ＮＵ，３ＮＬはノーマルカラム部（上位側，下位側データビット列部）、３ＰＵ，３ＰＬパリティカラム部（上位側，下位側誤り訂正ビット列部）、４はロー／カラムデコーダ、５はセレクタ（マルチプレクサ）、６はセンスアンプ、７はデマルチプレクサ、９Ｎはデータバッファ、９Ｐはパリティバッファ（誤り訂正バッファ）、１０はエラー訂正部（誤り訂正処理部）、１１はデータバッファ（出力用データバッファ）、１２はメモリ制御部、１５は出力ゲート、１６はパリティ生成部（誤り訂正データ生成部）、１７は出力ゲート、１９はデータバッファＲＤバス、２０はパリティバッファＲＤバス、２２，３１はメモリ装置、３２はメモリ回路、３３はメモリセル部、３４はメモリ制御部（読み出し制御部）を示す。
【図１】
0005617776.tif 000002
【図２】
0005617776.tif 000003
【図３】
0005617776.tif 000004
【図４】
0005617776.tif 000005
【図５】
0005617776.tif 000006
【図６】
0005617776.tif 000007
【図７】
0005617776.tif 000008
【図８】
0005617776.tif 000009
【図９】
0005617776.tif 000010
【図１０】
0005617776.tif 000011
【図１１】
0005617776.tif 000012
【図１２】
0005617776.tif 000013
【図１３】
0005617776.tif 000014