(57)【特許請求の範囲】
【請求項１】
１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする誤り訂正検出回路。
【請求項２】
１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するための検査バイトを発生する検査バイト発生回路と、前記バイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする誤り訂正検出回路。
【請求項３】
前記バイト誤り訂正回路は、メモリセルの所定アドレスに対するアクセスによる第１のサイクルで入力された情報データと検査データからシンドロームを生成するシンドローム計算回路と、このシンドローム計算回路で得られたシンドロームから誤りの位置と大きさを計算する誤り位置大きさ計算回路と、この誤り位置大きさ計算回路で得られた誤りの位置と大きさに基づいて、前記メモリセルの同一アドレスに対するアクセスによる第２のサイクルで入力された前記情報データと同一な情報データから、誤りの訂正された情報データを出力する誤り訂正回路とを具備してなることを特徴とする請求項１又は２記載の誤り訂正検出回路。
【請求項４】
メモリセルがマトリクス状に配置されたメモリセルアレイと、このメモリセルアレイに対しデータの出力を行う複数のデータ出力バッファと、前記データ出力バッファの１つ毎又は複数毎に、読み出しデータの誤りの訂正又は検出を行う誤り訂正検出回路とを備えた半導体記憶装置であって、
前記誤り訂正検出回路は、１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする半導体記憶装置。
【請求項５】
電気的書き替え可能なメモリセルがマトリクス状に配置されたメモリセルアレイと、このメモリセルアレイに対し外部からの書き替えデータの入力とメモリセルの読み出しデータの出力を行う複数のデータ入出力バッファと、前記データ入出力バッファの１つ毎又は複数毎に、入力された書き替えデータから誤りの訂正又は検出を行うための検査データを発生し、かつ読み出しデータを出力する際に読み出しデータと検査データから読み出しデータの誤りの訂正又は検出を行う誤り訂正検出回路とを備えた半導体記憶装置であって、
前記誤り訂正検出回路は、１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする半導体記憶装置。
【請求項６】
メモリセルがマトリクス状に配置されたメモリセルアレイと、このメモリセルアレイに対しデータの出力を行う複数のデータ出力バッファと、前記データ出力バッファの１つ毎又は複数毎に、読み出しデータの誤りの訂正又は検出を行う誤り訂正検出回路とを備えた半導体記憶装置であって、
前記誤り訂正検出回路は、１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するための検査バイトを発生する検査バイト発生回路と、前記バイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする半導体記憶装置。
【請求項７】
電気的書き替え可能なメモリセルがマトリクス状に配置されたメモリセルアレイと、このメモリセルアレイに対し外部からの書き替えデータの入力とメモリセルの読み出しデータの出力を行う複数のデータ入出力バッファと、前記データ入出力バッファの１つ毎又は複数毎に、入力された書き替えデータから誤りの訂正又は検出を行うための検査データを発生し、かつ読み出しデータを出力する際に読み出しデータと検査データから読み出しデータの誤りの訂正又は検出を行う誤り訂正検出回路とを備えた半導体記憶装置であって、
前記誤り訂正検出回路は、１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するための検査バイトを発生する検査バイト発生回路と、前記バイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする半導体記憶装置。
【請求項８】
前記誤り訂正検出回路は、前記メモリセルアレイが配置されるコア領域ではなく、前記バッファが配置される周辺領域に配置されていることを特徴とする請求項４〜７の何れかに記載の半導体記憶装置。
【請求項９】
データの書き替え時に、バースト誤りが発生した際に誤り訂正検出回路の入力データが全て“０”とはならない位置で、バースト誤り訂正検出のための演算を行うことを特徴とする請求項５又は７記載の半導体記憶装置。
【請求項１０】
前記バイト誤り訂正回路は、メモリセルの所定アドレスに対するアクセスによる第１のサイクルで入力された情報データと検査データからシンドロームを生成するシンドローム計算回路と、このシンドローム計算回路で得られたシンドロームから誤りの位置と大きさを計算する誤り位置大きさ計算回路と、この誤り位置大きさ計算回路で得られた誤りの位置と大きさに基づいて、前記メモリセルの同一アドレスに対するアクセスによる第２のサイクルで入力された前記情報データと同一な情報データから、誤りの訂正された情報データを出力する誤り訂正回路とを具備してなることを特徴とする請求項４〜７の何れかに記載の半導体記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ビットデータに対するビット誤りを検出したり訂正したりする誤り訂正検出回路と、これを用いた半導体記憶装置に関する。
【０００２】
【従来の技術】
従来、誤り訂正検出の方式としては、行列方式（ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｆ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔ，ｖｏｌ．２４，ｐｐ５０，１９８９）と多項式方式（Ｐｅｔｅｒｓｏｎ  ａｎｄ  Ｗｅｌｄｏｎ  著のＥｒｒｏｒ−Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅｓ．  ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ）の二つが知られている。図２３は、これら両方式における、深さ５１２ビット×幅８ビットのデータに対する、１ビット誤り訂正符号の構成例である。
【０００３】
従来の半導体記憶装置では、誤り訂正処理時間が第一優先とされているため、データ入出力の際にデータ書き込みにおける誤り検査ビットの発生やデータ読出し時における誤り訂正に時間ロスの少ない行列方式（ａ）が用いられてきた。このとき、８ビットデータに対して冗長な検査ビットが４ビット必要である、即ち、メモリ領域は５０％増であった。一方、多項式方式（ｂ）の場合には、５１２ビットデータに対して検査ビットは１０ビットでよく、冗長度は２％程度である。但し、誤りを訂正するのに５２２ビット長の遅延時間がかかってしまう。
【０００４】
誤り訂正符号を付加しない時のメモリの信頼性が要求されるそれより悪く、かつ５１２ビットデータ中の１ビット誤りを訂正する符号を付加する時のメモリの信頼性が要求されるそれより良くなり、さらに誤り訂正のための処理時間よりメモリ領域の増加率を優先するならば、行列方式に比べ多項式方式が適当である。しかしながら、誤り訂正回路の規模では逆に、多項式方式の方が行列方式より大きくなることがある。というのは、多項式方式の場合、誤り訂正回路は主に、検査データ部を含むデータの深さに等しいシフトレジスタ（上の例では５２２ビット×８組）から構成される遅延回路と、検査ビット数に等しいシフトレジスタ（上の例では１０ビット×８組）からなるシンドローム計算回路で構成されている、一方、行列方式では５入力排他的論理和が４組とこれらの出力のロジックのみで構成されるからである。
【０００５】
以上から分かるように、多項式方式は行列方式に比べメモリ領域の増加率を極めて小さくできるものの、誤り訂正回路規模は逆に大きくなってしまうため、メモリチップの増加率を抑える効果は小さかった。
【０００６】
また、行列方式では８ビット並列に処理する必要があるため、その誤り訂正回路は、メモリセルとビット線制御回路の間若しくは全ＩＯ線が集まっているところに配置しなければならず、レイアウト上の自由度が小さかった。
【０００７】
以下、従来の誤り訂正検出回路の構成及び問題点を具体的説明する。
【０００８】
（従来例１）
図２４は、第１の従来例に係わる誤り訂正検出回路を示すブロック図である。を表す。これは、前述した文献（Ｐｅｔｅｒｓｏｎ  ａｎｄ  Ｗｅｉｄｏｎ  著のＥｒｒｏｒ−Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅｓ．  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ）に開示されている。
【０００９】
入力データは、シンドローム計算回路（検査ビット発生回路）１と遅延回路４に入力される。入力データに誤りがない場合シンドロームは零、誤りがある場合シンドロームは非零のある値を持ち、その値は誤りの位置と大きさを計算する誤り位置大きさ計算回路２に入力される。
【００１０】
入力されたシンドロームが零の場合、誤り位置大きさ計算回路２は零を出力し、遅延回路４に入力されたデータは、変更されずに誤り訂正回路３を通ってそのまま出力される。シンドロームが非零のある値を持つときは、誤り位置大きさ計算回路２によって誤りの位置と大きさが計算され、遅延回路４に入力されたデータは、誤り訂正回路３で誤りの訂正が行われて出力される。即ち、誤りのあるデータが出力されるときにのみ誤り訂正回路３による誤りの訂正が行われ、正しいデータが出力される。
【００１１】
しかしながら、この種の構成にあっては次のような問題があった。即ち、遅延回路４は入力データと同じ長さのシフトレジスタから構成され、特に長い符号長の場合に誤り訂正回路全体に占める遅延回路４の割合が大きくなる。そしてこれが、誤り訂正回路規模増大の原因となっていた。
【００１２】
（従来例２）
図２５は、第２の従来例に係わる誤り訂正検出回路を示すブロック図である。これは、１バイトがｂビットで構成された（２ｂ  −３）バイト以下の情報データのうち１バイトの誤りを訂正する、いわゆる１バイト誤り訂正符号に関する。単一バイト誤り訂正回路１４は、入力された情報データから２バイトの検査データを作り（符号化）、かつ情報データと検査データから１バイトの誤りを訂正し（復号化）、正しい情報データを出力する。
【００１３】
ところで、最大データ長は１バイトの大きさｂによって（２ｂ  −３）に限定されるため、（２ｂ  −３）バイトよりも長い情報データを扱おうとする場合には、情報データを（２ｂ  −３）以下の長さのブロックに分けなければならない。そして、情報データを連続的に誤り訂正回路１４に入力する場合では、図２６に示すように、それぞれのブロックに対して単一バイト誤り訂正回路１４が必要となる。このため、誤り訂正回路の規模が大きくなってしまうという問題があった。
【００１４】
また、単一の誤り訂正回路１４のみを有する場合では、ブロック化された情報データ毎に符号化・復号化するため、情報データを連続的に誤り訂正回路に入出力することができないという問題があった。
【００１５】
（従来例３）
図２７は、第３の従来例に係わる誤り訂正検出回路を備えた半導体記憶装置を示すブロック図である。この半導体記憶装置１３は、電気的書き替え可能なメモリセルがマトリクス状に配置されたメモリセルアレイ６と、このメモリセルアレイ内のメモリセルのデータや書き替えデータを記憶するデータ回路８と、外部からの書き替えデータの入力とメモリセルの読み出しデータの出力を行う複数のデータ入出力バッファ１２と、入力された書き替えデータから誤りの訂正や検出を行うための検査データを発生し、読み出しデータを出力する際に読み出しデータと検査データから読み出しデータの誤りの訂正や検出を行う誤り訂正検出回路１１と、メモリセルのアドレスが入力され、カラムアドレスとロウアドレスを出力するアドレスバッファ１０と、カラムアドレスをデコードし、データ回路８のデータを入出力を制御するカラムデコーダ９と、ロウアドレスをデコードするロウデコーダ７と、メモリセルのデータの書き替えと読み出しの制御信号を出力する書き込み読み出し制御回路５を備えている。
【００１６】
このような半導体記憶装置１３は、前述した文献（ＩＥＥＥ  Ｊｏｕｎａｌ  ｏｆ  Ｓｏｌｉｄ−Ｓｒａｔｅ  Ｃｉｒｃｕｉｔｓ，ｖｏｌ．２４，ｐｐ５０，１９８９）に開示されている。本従来例では、符号化・復号化を行うための処理時間を最小にするために、誤り訂正符号は並列に処理される。この符号は、並列処理可能のため、データ入出力線毎の１ビット又は複数ビットの情報データとこの情報データから得られる検査データからなっている。
【００１７】
情報データのビット数が２倍になる毎に検査データのビット数はおよそ１ビット多く必要になるので、情報データのビット数の増加とともに情報データのビット数に対する検査データのビット数の割合は減る。一方、符号化・復号化のための排他的論理和の数は、情報データのビット数におおよそ比例するので、情報データのビット数の増加とともに符号化・復号化回路の規模は大きくなる。従って、誤り訂正検出を行うための冗長なメモリセルの面積と符号化・復号化回路面積の和の最小値があり、それを与える情報データのビット数の最適値がある。
【００１８】
一方、誤り訂正検出回路には、排他的論理和で実現される上記のタイプ以外にシフトレジスタ列で実現されるタイプがある。後者の場合には、検査データのビット数に等しい数のシフトレジスタ列と情報データのビット数と検査データのビット数の和に等しい数のシフトレジスタ列で実現される遅延回路が必要である。従って、必要なシフトレジスタの数は、情報データのビット数が２倍になる毎におよそ２ビット増える。このため、情報データのビット数の増加とともに単位情報データ当りの符号化・復号化回路の規模は減少するものの、特に長い符号長の場合に誤り訂正回路全体に占める遅延回路の割合が大きくなり、これが誤り訂正回路規模増大の原因となっていた。さらに、この誤り訂正検出回路を用いる場合には、復号化に情報データのビット数と検査データのビット数の和に比例した遅延時間が必要となってしまうという問題があった。
【００１９】
また、図２８に本従来例におけるメモリセルアレイ６と各回路８，１１，１２及び入出力パッド１００等のレイアウトを示す。この図から分かるように、誤り訂正検出回路１１はメモリセルアレイ６とデータ回路８の間若しくは全ＩＯ線が集まっているところに配置される必要があるため、これらのレイアウト上の柔軟性がないという問題があった。
【００２０】
また、バースト誤りが発生したときにそのデータが符号語となり、バースト誤りを検出できない場合があった。即ち、バースト誤りが発生したときにそのデータの“１”が全て“０”になり、全“０”となってしまうと、この全“０”データは誤りがないと判定されてしまうためバースト誤りを知ることはできない。
【００２１】
【発明が解決しようとする課題】
このように従来、多項式方式の誤り訂正検出回路においては、長い符号長の場合に誤り訂正回路全体に占める遅延回路の割合が大きくなり、これが誤り訂正回路規模増大の原因となっていた。
【００２２】
また、単一のバイト誤り訂正回路しか有しない場合は情報データを連続的に入出力することができず、情報データを連続的に誤り訂正回路に入力するには、それぞれのブロックに対して単一バイト誤り訂正回路が必要となり、誤り訂正回路の規模が大きくなってしまう。
【００２３】
また、シフトレジスタ列で実現されるタイプの場合には、特に長い符号長の場合に誤り訂正回路全体に占める遅延回路の割合が大きくなり、これが誤り訂正回路規模増大の原因となっていた。
【００２４】
また、誤り訂正検出回路はメモリセルアレイとデータ回路の間若しくは全ＩＯ線が集まっているところに配置される必要があるため、これらのレイアウト上の柔軟性がないという問題があった。
【００２５】
本発明は、上記事情を考慮してなされたもので、その目的とするところは、情報データを連続的に誤り訂正回路に入出力する場合であっても誤り訂正回路の規模を小さくできる誤り訂正検出回路を提供することにある。
【００２６】
また、本発明の他の目的は、誤り訂正検出回路のレイアウトの自由度を増すことができる半導体記憶装置を提供することにある。
【００２７】
【課題を解決するための手段】
（構成）
上記課題を解決するために本発明は、次のような構成を採用している。
【００２８】
即ち本発明は、ＲＯＭ等の情報データを連続的に入出力する誤り訂正検出回路において、１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする。
【００２９】
また本発明は、ＥＥＰＲＯＭ等の情報データを連続的に入出力する誤り訂正検出回路において、１バイトがｂビットであるｍ個の情報データを１バイトがｍｂビットである１個の情報データに変換するバイト長拡大回路と、このバイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するための検査バイトを発生する検査バイト発生回路と、前記バイト長拡大回路の出力からｍｂビット構成のバイト誤りを訂正するバイト誤り訂正回路とを具備してなることを特徴とする。
【００３０】
また本発明は、上記の誤り訂正検出回路をメモリセルアレイを有する半導体装置に用いたことを特徴とする。
【００３１】
（作用）
本発明によれば、１バイト誤り検出符号において、１バイトを構成するビット数を並列に入出力される単位から複数単位とすることによって、符号長を大きくすることが可能となる。従って、長い情報データであってもこれをブロック分けする必要がなくなり、誤り訂正回路の規模を小さくできる。
【００３２】
また本発明によれば、各データ（入）出力バッファ毎又は複数のデータ（入）出力バッファ毎に、誤り訂正回路をデータ（入）出力バッファ付近に設けることによって、レイアウトの自由度を増すことができる。さらに、バースト誤りが検出できる位置で符号化復号化を行うことにより、データ書き替え時のバースト誤り発生を検出できる。
【００３３】
【発明の実施の形態】
以下、本発明の詳細を図示の実施形態によって説明する。
【００３４】
（第１の実施形態）
図１は、本発明の第１の実施例に係わる多項式方式の誤り訂正検出回路を示すブロック図である。基本的な構成は前記図２４に示した回路と同じであるが、本実施例では遅延回路を省略し、その代わりに入力側にスイッチＳ１，Ｓ２を設けている。そして、入力データを２度繰り返すようにしている。
【００３５】
第１の入力時には、スイッチＳ１はオンし、スイッチＳ２はオフする。第１のデータが全て入力されると同時にシンドローム計算回路１によるシンドローム計算が終了し、誤り位置大きさ計算の実行が開始される。このとき、スイッチＳ２をオンし、スイッチＳ１をオフする。従って第２の入力データは、誤り訂正回路３に入力される。
【００３６】
このようにして、従来に比べ誤り訂正回路の回路規模を縮小、特に長い符号長の場合に誤り訂正回路の回路規模を大幅に縮小できるだけでなく、遅延時間の増加なしに正しいデータが出力される。なお、入力対象として用いるメモリがＮＡＮＤ型ＥＥＰＲＯＭのように符号長に等しい数のデータラッチ回路を有するものでは、入力データを２度繰り返すために新たに回路を付加する必要はない。
【００３７】
（第２の実施形態）
図２は、本発明の第２の実施例に係わる多項式方式の誤り訂正検出回路を示すブロック図である。符号長拡大回路（符号長拡大回路）１５は、連続して入力されたｍ個のｂビット／バイトを１個のｍｂビット／バイトにして出力する。この出力は単一ｍｂビット／バイト誤り訂正回路１６に入力される。この誤り訂正回路１６は、単一のｍｂビット／バイト誤りを訂正する。
【００３８】
この場合には、単一の誤り訂正回路１６に対して最大データ長をｍ×（２ｍｂ−３）バイト（１バイト＝ｂビット）とできるばかりでなく、必要な検査データを２ｍバイト（１バイト＝ｂビット）と小さくできる。
【００３９】
従来では、最大データ長をｍ×（２ｍｂ−３）バイト（１バイト＝ｂビット）としようとする場合、情報データを連続的に誤り訂正回路に入力する場合、単一バイト誤り訂正回路１４はｍ×（２ｍｂ−３）／（２ｂ−３）個、検査データは２ｍ×（２ｍｂ−３）／（２ｂ−３）個必要であった（図２６）。下記の（表１）にこれらの数字をまとめる。
【００４０】
【表１】
0003600561.tif 000002
【００４１】
（第３の実施形態）
図３は本発明の第３の実施例に係わる半導体記憶装置を示すブロック図で、図４は同装置におけるレイアウト図である。前記図２７と比較して分かるように本実施例は、メモリセルアレイ６とデータ回路８との間に誤り訂正回路１１を設けるのではなく、データ入出力バッファ１２の１つ毎に誤り訂正検出回路１１を設けている。誤り訂正検出回路１１は、入力された書き替えデータから誤りの訂正又は検出を行うための検査データを発生し、かつ読み出しデータを出力する際に読み出しデータと検査データから読み出しデータの誤りの訂正又は検出を行うものである。
【００４２】
本実施例では、２０４８ビット構成の情報データは、８個のデータ入出力パッドを通じて並列に入出力される。即ち、各データ入出力パッド当り２５６ビットの情報データが入出力される。ここで、情報データ２５６ビット中の１ビット誤りを訂正し、偶数ビット誤りを検出する拡大ハミング符号（２６６、２５６）が用いられる。
【００４３】
図５〜図７は、本実施例における符号化・復号化回路を表し、図８、図９は、それぞれ書き込み時、読み出し時の制御信号のタイミングを表す。
【００４４】
初めに、書き込み時の説明をする。
【００４５】
信号ＤＩＮがハイの間データ入出力パッドから書き込み情報データＤＩＮｉに（ｉ＝１、…、８）が入力され、図５（ａ）（ｂ）の符号化回路に入力される。このとき、信号ＤＩＮＯＵＴＢはローとされ、ＤＩＮＳｉ＝ＤＩＮｉがデータ回路８に送られる。同時に、信号ＳＬＩＮＢはロー、信号ＤＩＶはハイとされているため、書き込み情報データＤＩＮｉはシフトレジスタＳＬ１とシフトレジスタ列ＳＬ２、…、１０に入力され、検査ビット生成のための計算が実行される。シフトレジスタのクロックは、入力データＤＩＮｉのクロックと同期される。信号ＳＬＯＵＴ１Ｂ、ＳＬＯＵＴ２Ｂはハイとされているので、シフトレジスタＳＬ１〜１０の出力はＤＩＮＳｉに出力されない。
【００４６】
書き込み情報データＤＩＮｉの入力が終了すると、信号ＤＩＮＯＵＴＢはハイ、信号ＤＩＶはロー、信号ＳＬＩＮＢはハイ、信号ＳＬＯＵＴ１Ｂはローに変わり、シフトレジスタＳＬ１のクロックはストップする。このとき、シフトレジスタ列ＳＬ２、…、１０の状態は９個の検査ビットを表し、入力はローに固定されることによって、ＣＩＮＳｉに出力される。その後、信号ＳＬＯＵＴ１Ｂはハイ、信号ＳＬＯＵＴ２Ｂはローにされ、１個の検査ビットであるシフトレジスタＳＬ１の状態がＤＩＮＳｉに出力される。信号ＤＩＮＳがローになり、信号ＳＬＯＵＴ２Ｂがハイになるとデータ回路８への入力が終了する。
【００４７】
このようにして、データ回路８に入力される書き込みデータは２５６ビット情報データと１０ビット検査データとなる。
【００４８】
その後、書き込みデータ２０４８ビット（＝２５６ビット×８組）は、信号ＰＲＧがハイの間にメモリセルに書き込まれる。
【００４９】
さらにその後、信号ＢＥＲＥＡＤがハイの間にバースト誤りがあったか否かの検出を行う。信号ＢＥＲＥＡＤがハイになると、書き込んだデータをＤＩＮＳｉに出力された順番にＤＩＮｉに読み出す。このとき、信号ＤＩＶはハイ、信号ＳＬＩＮＢはローとされ、シフトレジスタＳＬ１とシフトレジスタ列ＳＬ２、…、１０に入力され、シンドロームを計算する。
【００５０】
読み出しデータに誤りがある場合、シフトレジスタの状態Ｌ１ｉ〜Ｌ１０ｉのうち一つ以上がハイとなる。従って、シンドローム計算が終了した後に信号ＤＥＴＥがハイになると信号ＥＲＤＥＴｉがハイとなる。そして、全てのｉに対して信号ＥＲＤＥＴｉがハイとなった場合に、バースト誤りが発生したことを信号ＢＳＴＥＲＲが伝える。
【００５１】
一般に、誤り訂正検出回路の入力データは、書き込み入力データとその反転データのいずれでも可能であるが、ここではバースト誤りが発生したときにそのデータが符号語とならないようなデータとしている。即ち、バースト誤りが発生したときにそのデータの“１”が全て“０”になり、全“０”となってしまうと、この全“０”データは誤りがないと判定されてしまうためバースト誤りを知ることはできない。しかしながら、バースト誤りが発生したときにそのデータの“０”が全て“１”になり、全“１”となるようにしておけば誤りが検出されるためバースト誤りを知ることが可能となる。
【００５２】
次に、読み出し時の説明をする。
【００５３】
読み出しは２サイクル、即ちシンドロームの計算を行う第１サイクル（信号ＥＣＣＲＥＡＤがハイである期間）と誤り訂正をしながら誤りが訂正された正しいデータを外部に出力するための第２のサイクル（信号ＤＡＴＡＯＵＴがハイである期間）とから構成される。第１サイクルでは信号ＤＩＶがハイ、信号ＳＬＩＮＢはローとなり、読み出されたデータはＤＩＮｉに出力され、シフトレジスタ列に入力される。全データが入力され終わると、誤り検出のための信号ＤＥＴＥがハイにされる。このとき、誤りがあった場合にはシフトレジスタの状態は少なくとも一つはハイになるため、誤りが検出されたことを知らせる信号ＥＲＤＥＴｉがハイとなる。このとき、さらに偶数個の誤りがあった場合には、それを知らせる信号２ＥＲＤＥＴｉがハイになる。これで第１のサイクルは終了する。
【００５４】
続いて、第２サイクルでは信号ＣＯＲＥがハイとなり、誤り訂正をしながら誤りが訂正された正しいデータを外部に出力していく。データはあるクロックに同期して出力されていくが、それと同時に入力を出力に等しくされたシフトレジスタ列の状態は、信号ＳＬＩＮＢをハイとしたままそのクロックに同期してシフトしていく。誤りの訂正は、シフトレジスタ列がある特定の状態になるときに出力されるデータを反転することによって行われる。誤りの訂正が行われたとき、信号ＣＯＲＲＥＣＴｉはハイとなる。しかし、もし誤りが検出されたことを知らせる信号ＥＲＤＥＴｉがハイとなったにも拘らず、信号ＣＯＲＲＥＣＴｉがローのままである、即ち誤りの訂正が行われなかった場合には、信号ＮＯＴＣＯＲｉがハイになる。
【００５５】
このようにして、各データ入出力バッファ毎に誤り訂正検出回路を設け、復号すべき入力データを２サイクル繰り返し読み出す方法によって、従来に比べ遅延時間なしに復号を行うことができ、遅延回路を省略できる。従って、特に長い符号長の場合に誤り訂正回路の回路規模を縮小できる。
【００５６】
さらに、本実施例の場合、図３や図４に示されるように誤り訂正回路１１は、メモリセルアレイ６とデータ回路８の間に配置する必要がないため、周辺部、即ち各データ入出力バッファ１２の付近に配置することができ、レイアウト上の柔軟度を増すことが可能となる。
【００５７】
（第４の実施形態）
図１０は本発明の第４の実施例に係わる半導体記憶装置を示すブロック図で、図１１は同装置におけるレイアウト図である。本実施例が先に説明した第３の実施例と異なる点は、データ入出力バッファ１２の複数個（２つ）毎に誤り訂正検出回路１１を設けたことである。
【００５８】
本実施例では、２０４８ビット構成の情報データは、８個のデータ入出力ピンＩＯｉ（ｉ＝１、…、８）を通じて並列に入出力される、即ち、各データ入出力ピン当り２５６ビットの情報データが入出力される。レイアウト上、データ入出力ピンはチップの左端に４個（ＩＯ１〜４）、右端に４個（ＩＯ５〜８）、それぞれ配置されているものとする。ここで、８個のデータ入出力ピンを２組（ＩＯ１〜４、ＩＯ５〜８）に分ける。各組の各データは、あるクロックに同期して並列に入出力されるが、第１クロックで入出力される４ビットと第２クロックで入出力される４ビットで１バイト（＝８ビット）を構成し、以下同様に奇数番目のクロックで入出力される４ビットと偶数番目のクロックで入出力される４ビットで１バイトを構成していく（図１９（ａ）（ｂ））。
【００５９】
このようにして、各組は、１２８バイト＝１０２４ビットの情報データで構成される。本実施例で用いられる誤り訂正符号は、１２８バイト中の１バイト誤り訂正する、リードソロモン符号（１３０、１２８）である。
【００６０】
図１２〜図２０に本実施例に用いた誤り訂正回路の具体的な回路構成を示し、図２１，図２２にはそれぞれ書き込み、読み出し時の制御信号のタイミング図を示す。
【００６１】
初めに、書き込み時の説明をする。
【００６２】
信号ＤＩＮがハイの間データ入出力ピンから書き込み情報データＤＩＮｍ−ｉ（ｍ＝１、２、ｉ＝１、…、８）が入力され、図１２（ａ）〜（ｃ）の符号化回路に入力される。このとき、信号ＤＩＮＯＵＴＢはローとされ、ＤＩＮＳｍ−ｉ＝ＤＩＮｍ−ｉがデータ回路８に送られる。同時に、信号ＤＩＶはハイとされているため、書き込み情報データＤＩＮｍ−ｉは８ビットシフトレジスタＳＬ１に入力され、検査ビット生成のための計算が実行される。シフトレジスタのクロックは、入力データＤＩＮｍ−ｉのクロックと同期される。信号ＳＬＯＵＴＢはハイとされているので、８ビットシフトレジスタＳＬ２の出力ＳＬＯＵＴｍ−ｉはＤＩＮＳｍ−ｉに出力されない。
【００６３】
書き込み情報データＤＩＮｍ−ｉの入力が終了すると、信号ＤＩＮＯＵＴＢはハイ、信号ＤＩＶはロー、信号ＳＬＯＵＴＢはローに変わり、入力ＳＬＩＮｍ−ｉがローに固定されることによって、８ビットシフトレジスタＳＬ１，２の状態がＤＩＮＳｍ−ｉに出力される。その後、信号ＤＩＮＳがロー、信号ＳＬＯＵＴＢがハイになると書き込みデータの入力が終了する。
【００６４】
このようにして、データ回路８に入力される書き込みデータは、１２８バイト情報データと２バイト検査データとで構成される２つの符号語となる。
【００６５】
その後、この書き込みデータは、信号ＰＲＧがハイの間にメモリセルに書き込まれる。
【００６６】
さらにその後、信号ＢＥＲＥＡＤがハイの間にバースト誤りがあったか否かの検出を行う。信号ＢＥＲＥＡＤがハイになると、書き込んだデータをＤＩＮＳｍ−ｉに出力された順番にＤＯＵＴｍ−ｉに読み出す。このとき、信号ＣＣＲＢはローとされ、シフトレジスタＳＬ３，４に入力され、シンドロームを計算する。読み出しデータに誤りがある場合、Ｓ０  ｍ−ｉのうち一つ以上がハイとなる。従って、シンドローム計算が終了した後に信号ＤＥＴＥがハイになると信号ＥＲＤＥＴｍＢがハイとなる。そして、ｍ＝１、２に対して信号ＥＲＤＥＴｍＢがともにローとなった場合に、バースト誤りが発生したことを信号ＢＳＴＥＲＲが伝える。
【００６７】
一般に、誤り訂正検出回路の入力データは、書き込み入力データとその反転データのいずれでも可能であるが、ここではバースト誤りが発生したときにそのデータが符号語とならないようなデータとしている。即ち、バースト誤りが発生したときにそのデータの“１”が全て“０”になり、前記“０”となってしまうと、この全“０”データは誤りがないと判定されてしまうためバースト誤りを知ることはできない。しかしながら、バースト誤りが発生したときにそのデータの“０”が全て“１”になり、全“１”となるようにしておけば誤りが検出されるためバースト誤りを知ることが可能となる。
【００６８】
次に、読み出し時の説明をする。
【００６９】
読み出しは２サイクル、即ち、シンドロームの計算を行う第１サイクル（信号ＥＣＣＲＥＡＤがハイである期間）と誤り訂正をしながら誤りが訂正された正しいデータを外部に出力するための第２のサイクル（信号ＤＡＴＡＯＵＴがハイである期間）とから構成される。第１サイクルでは信号ＥＣＣＲＢがローとなり、読み出されたデータはＤＯＵＴｍ−ｉに出力され、８ビットシフトレジスタＳＬ３，４，８，９に入力される。全データが入力され終わると、誤り検出のための信号ＤＥＴＥがハイにされる。このとき、誤りがあった場合にはシフトレジスタの状態は少なくとも一つはハイになるため、誤りが検出されたことを知らせる信号ＥＲＤＥＴｍＢがローとなる。これで第１のサイクルは終了する。
【００７０】
続いて、第２サイクルでは信号ＯＵＴＥＢがローとなり、誤り訂正をしながら誤りが訂正された正しいデータを外部に出力していく。データはあるクロックに同期して出力されていくが、それと同時に入力がローである８ビットシフトレシスタＳＬ５，１０の出力はそのクロックに同期してシフトし、フィードバックしていく。誤りの訂正は、８ビットシフトレジスタＳＬ５，１０の出力がシンドロームＳｍ−ｉと一致するときに出力されるデータを反転することによって行われる。誤りの訂正が行われたとき、信号ＣＯＲＲＥＣＴｉはハイとなる。しかし、もし、誤りが検出されたことを知らせる信号ＥＲＤＥＴｉがハイとなったにもかかわらず、信号ＣＯＲＲＥＣＴｉがローのままである、即ち誤りの訂正が行われなかった場合には、信号ＮＯＴＣＯＲｉがハイになる。
【００７１】
このようにして、データ入出力バッファの組毎に誤り訂正検出回路を設け、復号すべき入力データを２サイクル繰り返し読み出す方法によって、従来に比べ遅延時間なしに復号を行うことができ、遅延回路を省略できる。従って、特に長符号長の場合に誤り訂正回路の回路規模を縮小できる。
【００７２】
また、バイト当りのビット数を４ビットから８ビットに拡張することによって、最大符号長を拡大できる。
【００７３】
さらに、本実施例の場合、図４や図５に示されるように誤り訂正回路１１は、メモリセルアレイ６とデータ回路８の間に配置する必要がないため、周辺部、即ち各データ入出力バッファ１２の付近に配置することができ、レイアウト上の柔軟度を増すことが可能となる。
【００７４】
なお、本発明は上述した各実施例に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することができる。
【００７５】
【発明の効果】
以上詳述したように本発明によれば、１バイト誤り検出符号において、１バイトを構成するビット数を並列に入出力される単位から複数単位とすることによって、バイト長を大きくすることが可能となる。
【００７６】
また、バースト誤りが検出できる位置で符号化復号化を行うことにより、データ書き替え時のバースト誤り発生を検出できる。さらに、各データ（入）出力バッファ毎又は複数のデータ（入）出力バッファ毎に、誤り訂正回路をデータ（入）出力バッファ付近に設けることによって、レイアウトの自由度を増すことができる。
【図面の簡単な説明】
【図１】第１の実施例に係わる多項式方式の誤り訂正検出回路を示すブロック図。
【図２】第２の実施例に係わる多項式方式の誤り訂正検出回路を示すブロック図。
【図３】第３の実施例に係わる半導体記憶装置を示すブロック図。
【図４】第３の実施例におけるメモリセルアレイと各回路及び入出力パッド等のレイアウト図。
【図５】第３の実施例装置における符号化・復号化回路を示す図。
【図６】第３の実施例装置における符号化・復号化回路を示す図。
【図７】第３の実施例装置における符号化・復号化回路を示す図。
【図８】第３の実施例装置における書き込み時、読み出し時の制御信号のタイミングを示す図。
【図９】第３の実施例装置における書き込み時、読み出し時の制御信号のタイミングを示す図。
【図１０】第４の実施例に係わる半導体記憶装置を示すブロック図。
【図１１】第４の実施例におけるメモリセルアレイと各回路及び入出力パッド等のレイアウト図。
【図１２】誤り訂正回路の具体的な回路構成を示す図。
【図１３】誤り訂正回路の具体的な回路構成を示す図。
【図１４】誤り訂正回路の具体的な回路構成を示す図。
【図１５】誤り訂正回路の具体的な回路構成を示す図。
【図１６】誤り訂正回路の具体的な回路構成を示す図。
【図１７】誤り訂正回路の具体的な回路構成を示す図。
【図１８】誤り訂正回路の具体的な回路構成を示す図。
【図１９】誤り訂正回路の具体的な回路構成を示す図。
【図２０】誤り訂正回路の具体的な回路構成を示す図。
【図２１】誤り訂正回路の具体的な回路構成を示す図。
【図２２】誤り訂正回路の具体的な回路構成を示す図。
【図２３】行列方式と多項式方式における１ビット誤り訂正符号の構成例を示す図。
【図２４】第１の従来例に係わる誤り訂正検出回路を示すブロック図。
【図２５】第２の従来例に係わる誤り訂正検出回路を示すブロック図。
【図２６】第２の従来例において、複数の単一バイト誤り訂正回路を設けた例を示す図。
【図２７】第３の従来例に係わる誤り訂正検出回路を備えた半導体記憶装置を示すブロック図。
【図２８】第３の従来例におけるメモリセルアレイと各回路及び入出力パッド等のレイアウトを示す図。
【符号の説明】
１…シンドローム計算回路
２…誤り位置大きさ計算回路
３…誤り訂正回路
４…遅延回路
５…書き込み・読み出し制御回路
６…メモリセルアレイ
７…ロウデコーダ
８…データ回路
９…カラムデコーダ
１０…アドレスバッファ
１１…誤り訂正検出回路
１２…データ入出力バッファ
１３…半導体記憶装置
１４…単一バイト誤り訂正回路
１５…符号長拡大回路
１６…単一ｍｂビット／バイト誤り訂正回路
１００…データ入出力パッド
１０１…ＩＯ線
【図１】
0003600561.tif 000003
【図２】
0003600561.tif 000004
【図３】
0003600561.tif 000005
【図４】
0003600561.tif 000006
【図５】
0003600561.tif 000007
【図６】
0003600561.tif 000008
【図７】
0003600561.tif 000009
【図８】
0003600561.tif 000010
【図９】
0003600561.tif 000011
【図１０】
0003600561.tif 000012
【図１１】
0003600561.tif 000013
【図１２】
0003600561.tif 000014
【図１３】
0003600561.tif 000015
【図１４】
0003600561.tif 000016
【図１５】
0003600561.tif 000017
【図１６】
0003600561.tif 000018
【図１７】
0003600561.tif 000019
【図１８】
0003600561.tif 000020
【図１９】
0003600561.tif 000021
【図２０】
0003600561.tif 000022
【図２１】
0003600561.tif 000023
【図２２】
0003600561.tif 000024
【図２３】
0003600561.tif 000025
【図２４】
0003600561.tif 000026
【図２５】
0003600561.tif 000027
【図２６】
0003600561.tif 000028
【図２７】
0003600561.tif 000029
【図２８】
0003600561.tif 000030