(57)【特許請求の範囲】
【請求項１】
読出器によりデータ記憶体からデータを読み出す際の誤り訂正装置において、
前記データ記憶体に、
データを保持するメモリと、前記読出器から所定のコマンドを受信した際に、前記メモリから読み出したｔビットのパラレルデータに対して予め定めた２t 種類の擬似ランダム信号の内の１つを出力する応答部と、
を設け、
前記読出器には、
前記データ記憶体の２t 種類の擬似ランダム信号と同一の信号を基準信号として保持し、受信信号との自己相関を求める相関演算部と、
該相関演算部で求めた２t 種類の擬似ランダム信号毎の自己相関により対応するｔビットデータを出力する復号部と、
１要素がｔビットで、Ｍ行Ｎ列にＭ×Ｎ個の検査要素Ｈij（但しｉ＝１〜Ｍ，ｊ＝１〜Ｎ）を検査データとして格納した検査データ格納メモリと、
前記復号部から得られたＮ要素分のｔビットデータと前記検査データ格納メモリの検査データＨijとの演算によりシンドロームを求めて少なくとも誤りを検出する検査部と、
を備えたことを特徴とする誤り訂正装置。
【請求項２】
請求項１記載の誤り訂正装置において、
前記読出器の検査部は、１要素がｔビットでＭ要素からなるシンドロームの演算結果を格納するシンドローム格納メモリ、Ｎ要素のｔビット受信データを記憶する受信データ格納メモリ、ｔビット乗算器、およびｔビット加算器とから構成され、
前記ｔビット乗算器は、前記検査データ格納メモリに格納された列方向のＭ検査要素分の検査列データ（Ｈ1 〜ＨN ）の各々と、前記行方向のＮ要素の各位置（１〜Ｎ）に対応する前記受信データ格納メモリのｔビット受信データとのｔビット乗算を行い、
前記加算器は、シンドローム格納メモリのＭ要素分の格納位置のｔビットデータと前記乗算器の演算結果とのｔビット加算を行い、該演算結果を同じ格納位置に格納することを特徴とする誤り訂正装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、読出器によりデータ記憶体から読み出したデータの誤りを検出して訂正する誤り訂正装置に関する。
【０００２】
【従来の技術】
従来、この種の誤り訂正装置としては、例えば次のハミングコードがある。まず誤り訂正符号の作成方法から説明する。
いまハミングコードの検査行列（最終行列）をＨ、読み出した情報点と検査点で構成される符号データをｗとする。この時、シンドロームＳは
Ｓ＝Ｈ×ｗＴ  ＝０                                  （１）
但し、０は空ベクトル
となる。例えば検査行列Ｈと符号データｗが次のような場合である。
【０００３】
【数１】
0003571388.tif 000002
【０００４】
次に、通信中に符号データのｉビット目に誤りが生じた場合、受信データが
ｗ’＝ｗ＋ｅｉ  
となったと仮定する。この時、検査行列Ｈとの掛け合わせでは、
Ｈ×ｗ’Ｔ  ＝Ｈ×（ｗ＋ｅｉ  ）Ｔ  ＝Ｈ×ｅｉ  Ｔ  ＝Ｈｉ              （３）
但し、Ｈｉ  はｉ列目の列ベクトル
となる。従って、検査行列Ｈの各列ベクトルが全て独立であれば、１ビット誤りが検出できる。
【０００５】
しかし、２ビット誤った場合、例えば１ビット目と２ビット目を誤った場合、４ビット目を１ビットだけ誤ったことと区別できない。なぜなら、
【０００６】
【数２】
0003571388.tif 000003
【０００７】
そこで、検査行列Ｈを次のように拡張する。
【０００８】
【数３】
0003571388.tif 000004
【０００９】
これを拡張ハミング符号という。この時、どこかで１ビット誤れば、それに該当する列ベクトルが検査行列との掛け合わせで出てくる。従って、列ベクトルが全て独立であるため、１ビット誤り訂正符号となる。また、（５）式から２ビット誤った場合、それに該当する２つの列ベクトルの和となるが、１行目のビットは必ず０になり、２行目以降の列ベクトルの和は零ベクトルとならないことから、どの列ベクトルとも一致しない。
【００１０】
しかし、どの２ビットが誤ったか分からないため、２ビット誤り検出しかできない。これは次式で示される。
【００１１】
【数４】
0003571388.tif 000005
【００１２】
このように、連続して読み出せるデータビットに対し訂正符号を付けることで誤りの検出及び訂正ができる。
ここで、１ビット誤り訂正を行うためには、
【００１３】
【数５】
0003571388.tif 000006
【００１４】
となる。このことから、Ｎビットの誤り訂正符号とするためには、どの２Ｎ個の列ベクトルの和も０にならないことが必要である。
また、２ビット誤り検出を行うためには、
【００１５】
【数６】
0003571388.tif 000007
【００１６】
となる。このことから、Ｎビット誤り検出符号とするためには、どのＮ個の列ベクトルの和も０にならないことが必要である。
更に、１ビット誤りは訂正し、同時に２ビット誤りを検出するためには
【００１７】
【数７】
0003571388.tif 000008
【００１８】
ところで本願発明者にあっては、データ記憶体からの読出データの伝送効率を上げるため、例えば２個のシリアルメモリから同時に読み出したパラレル２ビットデータを、２２  ＝４種類の信号の１つに割り当て、一度の通信で２ビット同時に送るようにしている。
図１５は従来装置の一例であり、読出器１００は、制御部１４０、読出部１６０、送受信部１８０、デコード部２００、検査部２２０を備える。またデータ記憶体１２０は、制御部２６０、送受信部２８０、シリアルメモリ３００ａ，３００ｂ、エンコード部３８０を備える。
【００１９】
シリアルメモリ３００ａ，３００ｂには、図１６のビット長Ｍのデータ１０２，１０４が同一アドレスにペアデータとして記憶されており、データ１０２，１０４を読み出して交互に並べたデータ１０６が、ビット長２Ｍのデータｗとなり、情報点１０８と検査点１１０をもっている。
【００２０】
【発明が解決しようとする課題】
しかしながら、このような従来の誤り訂正装置にあっては、次のような問題点が出てきた。まず、１ビットの誤りが生じた場合、列ベクトルのどこと同じか検査する。また、２ビット誤った場合は、どの列ベクトルとも等しくなく、かつシンドロームＳが０でないことを確かめる。
【００２１】
このため図１５の一度に２ビット同時に送ることができる通信方式の場合、誤り訂正を行うためには、１通信誤り訂正・２通信誤り検出符号、つまり２ビット誤り訂正・４ビット誤り検出符号としなくてはいけない。
このためには、
２ビット誤り訂正→  ４つの列ベクトルが線形独立
４ビット誤り検出→  ４つの列ベクトルが線形独立
【００２２】
【数８】
0003571388.tif 000009
【００２３】
とする必要がある。これを検査するためには、シンドロームＳが０とならないことで誤りの存在を検出した場合、
▲１▼  いずれかの列ベクトルと同じ  →  １ビット誤り
▲２▼  ある列ベクトルと他の列ベクトルとの和  →  ２ビット誤り
▲３▼  ▲１▼及び▲２▼に該当しない  →  ３ビット以上４ビット以下の誤り検出
になる検査の処理を行わなければならない。
【００２４】
これを数式で示すと、次のようになる。
【００２５】
【数９】
0003571388.tif 000010
【００２６】
しかし、２ビット誤り▲２▼を検査するため、シンドロームＳが、ある列ベクトルと他の列ベクトルとの和に一致することを判断する処理には時間がかかる問題がある。例えば図１１のデータｗのように２Ｍビット長の場合、１ビット誤り▲１▼の検査は２Ｍ回の処理で済むが、２ビット誤り▲２▼を検査は２ＭＣ２  の処理が必要になり、検査に処理時間がかかる問題があった。
【００２７】
本発明は、このような従来の問題点に着目してなされたもので、メモリからパラレル読出しで一度にｔビットずつ同時に送られたＮ個の受信データを対象に、効率良く誤り訂正の検査処理ができる誤り訂正装置を提供する。
【００２８】
【課題を解決するための手段】
この目的を達成するため本発明は次のように構成する。尚、実施例図面中の符号を併せて示す。
まず本発明は、読出器１０によりデータ記憶体１２から読み出したデータの誤りを検出して訂正する誤り訂正装置を対象とする。データ記憶体１２には、メモリ３０と、応答部が設けられる。メモリ３０は、読出器１０から所定のコマンドを受信した際に、ｔビットのパラレル読出しを行う。応答部は、メモリ３０から読み出したｔビットのパラレルデータに対して、予め定めた２ｔ  種類の擬似ランダム信号の内の１つを出力する。
【００２９】
読出器１０には、相関演算部５６−１〜４、データ復号部７０、検査部２２、検査データ格納メモリ７４が設けられる。相関演算部５６−１〜４は、データ記憶体１２の２ｔ  種類の擬似ランダム信号と同一の信号を基準信号として保持し、受信信号との自己相関を求める。データ復号部７０は、相関演算部で求めた２ｔ  種類の擬似ランダム信号毎の自己相関の内、絶対値が最大のもの又は２乗した値が最大のものを求めて対応するｔビットデータを復元する。
【００３０】
検査データ格納メモリ７４には、１要素がｔビットで、Ｍ行Ｎ列にＭ×Ｎ個の検査要素Ｈｉｊ（但しｉ＝１〜Ｍ，ｊ＝１〜Ｎ）を検査データとして格納する。ここで列方向のＭ検査要素の集りを検査列データＨ１  〜ＨＮ  という
検査部２０は、データ復号部７０から得られたＮ要素分のｔビットデータと、検査データ格納メモリ７４の検査データＨｉｊとの演算によりシンドロームを求め、少なくとも誤りを検出する。
【００３１】
この検査部２２は、１要素がｔビットでＭ要素からなるシンドロームの演算結果を格納するシンドローム格納メモリ８０、Ｎ要素のｔビット受信データを記憶する受信データ格納メモリ７２、ｔビット乗算器をｍ要素分備えた乗算部７６、ｔビット加算器をｍ要素分備えた加算部７８から構成される。
ｔビット乗算器の各々は、検査データ格納メモリ７４に格納された行方向のＮ要素分の検査列データ（Ｈ１  〜ＨＮ  ）の各々と、行方向のＮ要素の各位置ｊ＝１〜Ｎに対応する受信データ格納メモリ７２のｔビット受信データとのｔビット乗算を行う。また加算器の各々は、シンドローム格納メモリ８０のＭ要素分の格納位置８０−１〜８０−Ｍのｔビットデータと、ｔビット乗算器の各々の演算結果とのｔビット加算を行い、この演算結果を同じ格納位置に格納してシンドロームを求める。
【００３５】
【作用】
このような本発明の誤り訂正装置によれば、データ記憶体から１符号でｔビットのデータが通信されることから、これをｔビットで１符号となるガロア体ＧＦ（２ｔ  ）の上の符号でデータを構成し、１符号誤り訂正・２符号誤り検出符号を作成する。この場合の誤り訂正は、基本的には、１ビット誤り訂正・２ビット誤り検出符号と同じになり、ｔビットを１符号としてガロア体上の演算（乗算、加算）を行うだけでよい。
【００３８】
【実施例】
図１は、本発明の誤り訂正装置が適用される読出器とデータ記憶体を用いたデータ処理システムの実施例である。
図１において、読出器１０には、制御部１４、読出制御部１６、伝送部１８、デコード部２０および検査部２２が設けられる。一方、データ記憶体１２には、制御部２４、伝送部２８、メモリ３０、エンコード部３２が設けられる。エンコード部３２は、擬似ランダム系列発生部３４と擬似ランダム信号発生部３６で構成される。
【００３９】
データ記憶体１２のメモリ３０は、例えば図２のように、ｔ個のシリアルメモリ４０−１〜４０−ｔを有する。シリアルメモリ４０−１〜４０−ｔには、例えば図５（Ａ）に示すような単一誤り訂正・２重誤り検出符号である例えば拡張ハミング符号が、ｔビットのパラレルデータに分解されて系列的に格納されている。
【００４０】
例えばｔ＝２ビットを例にとると、図５（Ｂ）に示すように、図５（Ａ）のビット１〜２Ｎの符号は、シリアルメモリ４０−１，４０−２に、ビット１，２，・・・２Ｎの順番に交互に格納される。結果として、シリアルメモリ４０−１には奇数ビット１，３，・・・２Ｎ−１が格納され、シリアルメモリ４０−２には偶数ビット２，４，・・・２Ｎが格納される。
【００４１】
図５（Ａ）の拡張ハミング符号は、ハミングコードの検査ビット数Ｍ＝３ビットを例にとると、符号ビット長は２Ｍ  ＝２３  ＝８ビットであり、情報ビット数は検査ビット数となる４ビットを符号ビット長から引いた、２Ｍ  −Ｍ−１＝２３  −３−１＝４ビットとなる。メモリ３０に例えば図５（Ｂ）のように格納されたデータは、読出器１０からのコマンドによるデータ記憶体１２の制御部２４からの読出アクセスにより、ｔビット単位にパラレルに読み出される。例えば図５（Ｂ）のシリアルメモリ４０−１，４０−２の場合、読出器１０の読出制御部１６を起動して、読出コマンドを伝送部１８を介してデータ記憶体１２に送出する。
【００４２】
この読出コマンドを、データ記憶体１２の制御部２４は伝送部２８を介して受け、メモリ３０の読出状態を作り出す。続いて読出器１０の読出制御部１６は、ｔビットのパラレルデータを返送させるためのデータ返送命令を送出する。データ記憶体１２の制御部２４は、読出器１０よりデータ返送命令を受信するごとに、ｔビットパラレルデータをメモリ３０から読み出す。
【００４３】
データ記憶体１２に設けたデータ返送命令を受けるごとにｔビットパラレルデータを出力するメモリ３０としては、図１２のｔ個のシリアルメモリを用いた以外に、図３に示すように、ｔビットパラレル読出メモリ４２を使用してもよい。このｔビットパラレル読出メモリ４２には、例えばｔ＝２ビットを例にとると、図５（Ｃ）に示すように、同一アドレスにつき２ビット単位に、図５（Ａ）のデータが記憶されている。このため、データ返送命令の受信に基づく読出動作で２ビットずつ、パラレルデータを読み出すことができる。
【００４４】
図４はデータ記憶体１２のメモリ３０の他の実施例であり、この実施例はシリアルメモリ４０とｔビットシフトレジスタ４５を使用したことを特徴とする。シリアルメモリ４０は、読出器１０よりデータ返送命令を１つ受けるごとにｔ回のシリアル出力を行って、ｔビット分のデータをｔビットシフトレジスタ４５に出力する。
【００４５】
ｔビットシフトレジスタ４５は、シリアルメモリ４０に対するｔ回のシリアル出力に同期して読出ビットをシフトし、最終的に、ｔビットのパラレルデータを出力する。図５（Ｄ）は、ｔ＝２ビットとした場合の図４のメモリ３０であり、シリアルメモリ４０の出力段に２ビットシフトレジスタ４５を設け、１回のデータ返送命令に対し、シリアルメモリ４０を２回読出動作を行って２ビットシフトレジスタ４５に読出２ビットをシフトし、２ビットパラレルデータを出力する。
【００４６】
図６はデータ記憶体１２のメモリ３０の他の実施例であり、この実施例にあっては、メモリ制御部４４、ｓｔビットパラレル読出メモリ４６およびシフトレジスタ４８を設けている。ここで、ｓｔビットパラレル読出メモリ４６は、ビット幅がｔでｓ回読出可能なパラレルデータを１回のアクセスで読み出すメモリを意味する。このため、メモリ制御部４４にはカウンタおよびアドレスレジスタが設けられる。
【００４７】
図１のデータ記憶体１２の制御部２４で、読出命令によってリードアドレスが受信されると、メモリ制御部４４のアドレスレジスタに受信アドレスがセットされる。続いて、最初のデータ返送命令が受信されると、メモリ制御部４４はアドレスレジスタによるアドレス指定でｓｔビットパラレル読出メモリ４６をリードアクセスし、ｓ×ｔビット分のパラレルデータをシフトレジスタ４８に読み出し、このときシフトレジスタ４８は最初のｔビット分パラレルデータを出力する。また、メモリ制御部４４はカウンタを１つインクリメントする。
【００４８】
次に２番目のデータ返送命令を受信すると、メモリ制御部４４はシフトレジスタ４８にシフト信号を出力し、次のｔビット分のパラレルデータの出力を行わせ、メモリ制御部４４のカウンタを１つインクリメントする。このようなデータ返送命令の受信ごとに、シフトレジスタ４８のシフト動作をメモリ制御部４４のカウンタの計数値がｓに達するまで繰り返す。
【００４９】
カウンタがｓに達すると、ｓ×ｔビット分のデータ出力が完了する。そこで、カウンタを０にクリアすると共にアドレスレジスタを１つインクリメントし、次のデータ返送命令に基づき、インクリメントしたアドレスからｓ×ｔビット分の読出しをｓｔビットパラレル読出メモリ４６から行って、シフトレジスタ４８に転送するようになる。
【００５０】
再び図１を参照するに、読出器１０からのデータ返送命令を受けるごとに、メモリ３０から読み出されたｔビットパラレルデータは、エンコード部３２の擬似ランダム系列発生部３４に与えられる。擬似ランダム系列発生部３４には、２ｔ  種類の擬似ランダム系列が予め準備されている。
図７はデータ記憶体１２の擬似ランダム系列発生部３４の実施例であり、ｔ＝２ビットのパラレルデータを対象としており、２ｔ  ＝２２  ＝４種類の擬似ランダム系列Ｍ００，Ｍ０１，Ｍ１０，Ｍ１１を準備している。このような４種類の擬似ランダム系列Ｍ００〜Ｍ１１に対応して、Ｍ１１系列発生器５０−１、Ｍ１０系列発生器５０−２、Ｍ０１系列発生器５０−３およびＭ００系列発生器５０−４が設けられている。
【００５１】
各系列発生器５０−１〜５０−４は、クロックＣＬＫに同期して所定符号長の擬似ランダム信号を出力する。図１のメモリ３０として図５（Ｂ）のシリアルメモリ４０−１，４０−２を例にとると、シリアルメモリ４０−１，４０−２からの出力はＡＮＤ回路５２−１〜５２−４に並列的に入力され、ＡＮＤ回路５２−１〜５２−４には更に、各系列発生器５０−１〜５０−４の出力が個別に入力されている。
【００５２】
ＡＮＤ回路５２−１は、シリアルメモリ４０−１，４０−２からの２ビット出力１１で許容状態となって、Ｍ１１系列発生器５０−１からの出力をＯＲ回路５４より出力する。即ち、２ビットパラレル出力１１を擬似ランダム信号Ｍ１１に変調する。ＡＮＤ回路５２−２はメモリ４０−１，４０−２からの２ビットパラレル出力１０で許容状態となり、Ｍ１０系列発生器５０−２の出力をＯＲ回路５４を介して出力する。即ち、２ビットパラレル出力１０を擬似ランダム信号Ｍ１０に変調する。
【００５３】
ＡＮＤ回路５２−３はシリアルメモリ４０−１，４０−２からの２ビットパラレル出力０１で許容状態となり、Ｍ０１系列発生器５０−３の出力をＯＲ回路５４から出力する。即ち、２ビットパラレル出力０１を擬似ランダム信号Ｍ０１に変調する。更に、ＡＮＤ回路５２−４はシリアルメモリ４０−１，４０−２からの２ビットパラレル出力００で許容状態となり、Ｍ００系列発生器５０−４からの擬似ランダム信号Ｍ００をＯＲ回路５４を介して出力する。即ち、２ビットパラレル出力００を擬似ランダム信号Ｍ００に変調する。
【００５４】
図７の擬似ランダム系列発生器で２ビットパラレルデータに対応して発生した擬似ランダム系列信号は、擬似ランダム信号発生部３６で伝送部２８に対する駆動信号に変換され、読出器１０に送出される。
図８は、図１の読出器１０に設けたデコード部２０の実施例である。図８において、デコード部２０には、Ａ／Ｄ変換器５８、Ｍ１１相関演算器５６−１，Ｍ１０相関演算器５６−２，Ｍ０１相関演算器５６−３，Ｍ００相関演算器５６−４およびデータ復号器７０が設けられる。Ｍ１１〜Ｍ００相関演算器５６−１〜５６−４は、Ｍ１１相関演算器５６−１に代表して示す構成をもつ。即ち、Ｍ１１相関演算器５６−１は、シフトレジスタ６０、積和演算器６２、基準系列レジスタ６４、比較器６６、ピーク値格納メモリ６８で構成される。
【００５５】
受信信号はＡ／Ｄ変換器５８でデジタルデータとされ、シフトレジスタ６０に入力され、基準系列レジスタ６４の基準系列Ｍ１１との積和計算が積和演算器６２で行われる。このとき返送されてくる擬似ランダム信号のタイミングははっきりしないため、最も相関値が高くなるところを探しながら最大相関値を比較器６６で求めて、ピーク値格納メモリ６８に格納する。
【００５６】
具体的には、データ読出器１０からのデータ返送命令の送出時にピーク値格納メモリ６８をクリアし、一定時間ごとに連続的に積和演算器６２で積和演算を行い、そのときの絶対値又は２乗した値の相関値とピーク値格納メモリ６８の格納値とを比較部６６で比較し、大きい方の相関値をピーク値格納メモリ６８にセーブしていくことで、最大相関値を得ることができる。以上の動作は、Ｍ１０〜Ｍ００相関演算器５６−２〜５６−４においても並列的に行われる。
【００５７】
データ復号器７０は、４つの最大相関値の中の最大値の相関値を与えた２ビットデータを復元する。
ここで、図７の擬似ランダム系列発生部３４で発生する擬似ランダム系列Ｍ１１〜Ｍ００としては、異なる４種類の擬似ランダム系列を準備してもよいが、１つの擬似ランダム系列を分割して位相シフトすることで４種類の擬似ランダム系列を作るようにしてもよい。
【００５８】
例えば１つの擬似ランダム系列を４分割し、各分割系列ごとに位相シフトした４種類の擬似ランダム系列を作る。このように１つの擬似ランダム系列を分割して位相シフトすることにより得られた４種類の擬似ランダム系列を使用すると、異なる４種類の擬似ランダム系列を使用した場合に比べ、相互相関の小さいＳ／Ｎ比の大きい復号ができる。
【００５９】
これは、符号長をｍ、擬似ランダム系列をｆ１，ｆ２，ｇとし、擬似ランダム系列ｆ１とｆ２は位相のみが異なる同じ系列データであるとする。このとき
｜ｆ×ｆ｜＝ｍ
｜ｆ×ｇ｜＞１
｜｜ｆ１×ｆ２｜＝１
となり、同一系列を用いて、位相シフトから得た擬似ランダム系列ｆ１，ｆ２を用いた方が、Ｓ／Ｎが大きくなることが判る。
【００６０】
図９は、図１の検査部２２の実施例である。検査部２２には、データ格納メモリ７２、検査データ格納メモリ７４、乗算部７６、加算部７８、シンドローム格納メモリ８０、１ケ所誤りデータ格納メモリ８２、比較部８４、判断部８６、訂正部８８が設けられる。データ格納メモリ７２には、デコード部２０で復元されたｔビットデータが格納される。データ格納メモリ７２は、ｔビット幅の受信データをＮ要素分格納して、これを１つのデータブロックとして誤り検出と訂正を行う。
【００６１】
次に、図９の検査部２２における誤り検出と訂正の原理を説明する。まず本発明は、２ビットで１符号になるガロア体ＧＦ（２２  ）の上の符号でデータを構成し、その上で誤り訂正符号を構成する。つまり、１符号誤り訂正・２符号誤り検出符号を作成する。この作成方法は、１ビット誤り訂正・２ビット誤り検出符号と基本的には同じである。
【００６２】
いま検査行列Ｈを、
【００６３】
【数１０】
0003571388.tif 000011
【００６４】
とすると、次の条件が必要である。
【００６５】
【数１１】
0003571388.tif 000012
【００６６】
ここで、Ｈｉｊ，ａ，ｂ，ｃは２ビットデータで、ビット定数０，１，α，α２  のいずれかである。２ビットデータでは、０＝００、１＝０１、α＝１０、α２  ＝１１とする。
２Ｎビット長のデータは、１符号２ビットで考えるとＮ符号データとなる。これをＷとする。
Ｗ＝（ｄ１  ，ｄ２  ，・・・，ｄＮ  ）
（但し、ｄｉ  は０，１，α，α２  のいずれか）
いまＷを正しいデータとし、誤りデータｗを
ｗ＝Ｗ＋ａｅｉ  
とする。ここで、ｅｉ  はｉ符号目が１で、他は全て０のＮ符号データとする。
【００６７】
このとき、
【００６８】
【数１２】
0003571388.tif 000013
【００６９】
となる。従って、１符号誤り訂正符号とするためには、次式が成立する必要がある。
【００７０】
【数１３】
0003571388.tif 000014
【００７１】
更に、２符号誤り検出符号とするためには、任意の２つの列ベクトルの和が零でないことも必要であるが、２符号誤りが１符号誤りと区別できなければならないため、次のようになる。
【００７２】
【数１４】
0003571388.tif 000015
【００７３】
このことから、前記（１０）から（１１）の条件を満たせば、１符号誤り訂正・２符号誤り検出符号となる。
次に、本発明によるＧＦ（２２  ）の上の誤り検出及び訂正を説明する。まず、受信データｗと検査行列の掛け合わせを行う。
【００７４】
【数１５】
0003571388.tif 000016
【００７５】
ここで検査行列Ｈは次式で与えられる。
【００７６】
【数１６】
0003571388.tif 000017
【００７７】
またｄi Ｈi ＝ｄi （Ｈ1i，Ｈ2i，・・・，ＨMi）T である。更に、ｄi ×Ｈjiは２ビット×２ビットの乗算となる。従って、シンドロームＳを生成する図９の乗算部７６、加算部８０は、図１１のようになる。図１１において、シンドローム計算の前に、シンドローム格納メモリ８０の格納エリア（２ビット格納エリア）８０−１〜８０−Ｍを零にクリアする。次に、データ格納メモリ７２からの２ビットデータの読出しと共に、検査データ格納メモリ７４から検査行列Ｈをシフトして列単位に読み出す。この列単位に読み出す検査データを検査列データと呼ぶ。乗算部７６の２ビット乗算器７６−１〜７６−Ｍの各々は、受信データと検査列データの２ビットデータを掛け合わせる。
【００７８】
この２ビット乗算器７６−１〜７６−Ｍの乗算結果は、加算部７８の２ビット加算器７８−１〜７８−Ｍに与えられ、現在のシンドローム格納メモリ８０の格納エリア８０−１〜８０−Ｍの値と加算し、加算結果を格納エリア８０−１〜８０−Ｍに格納する。この２ビットの乗算及び加算処理をＮ回繰り返した時点でシンドロームの計算が終わる。
【００７９】
次に、図９の１ケ所データ格納メモリ８２と比較部８４による誤りの検査処理を説明する。図１１で求めたシンドロームＳが零の場合は、誤りなしと判断するので、Ｓが零とならない誤りありの場合を説明する。
１ケ所誤りデータ格納メモリ８２には、図１２の１ケ所誤りデータが格納されている。１ケ所誤りデータ８２−１は検査列データＨ１  〜ＨＮ  であり、ビット定数は１であるから、検査列データＨそのものである。１ケ所誤りデータ８２−２は、検査列データＨ１  〜ＨＮ  にビット定数αを掛けたものである。更に１ケ所誤りデータ８２−３は、検査列データＨ１  〜ＨＮ  にビット定数α２  を掛けたものである。
【００８０】
比較部８４は１ケ所誤りデータ格納メモリ８２の検索により、シンドローム格納メモリ８０に格納されたシンドロームＳに一致する１ケ所誤りデータを探し出す。この場合の検査されなければならない最大回数は、（２ｔ  −１）×Ｎ回となり、ｔ＝２ビットの場合は３Ｎ回で済む。
これに対し、２ビットで１要素とせずに、１ビットデータをそのまま２Ｎビット分伝送する従来の１ビット訂正・２ビットエラー検出符号の場合は、１ケ所誤りの検査回数は、１ケ所誤り検査が２Ｎ回数となり、、２重誤り検査が２ＮＣ２  回であるから、合計（２Ｎ＋２ＮＣ２  ）回となっている。このため本発明の２ビットを１要素とした本発明の誤り検出訂正の方が短時間で処理できる。
【００８１】
図１３は図９の訂正部８８による１ケ所データ誤りを検出した場合の訂正処理の実施例である。訂正部８８には、シフトレジスタ９０、Ｎ個の２ビット乗算器を備えた乗算部９２及びＮ個の２ビット加算器を備えた加算部９４で構成される。シフトレジスタ９０は、図９の比較部８４による検査処理で１ケ所誤りデータの列ベクトルとシンドロームＳを比較する毎に、入力した要素１をシフトする。実際には要素１は２ビットデータ０１であり、２ビットシフトを行う。
【００８２】
比較部８４でシンドロームＳに一致する列ベクトルが見つかると、乗算部９２に一致信号が出力され、その一致する列ベクトルをつくった１、α、α２  の内のいずれかのビット定数とシフトレジスタ９０の値を掛け合わせて、最終的に加算部９４でデータ格納メモリ７２から読出した受信データに加算することで、正しいデータに訂正することができる。
【００８３】
これは、Ｗを正しいデータとし、実際に受信した誤りデータｗ＝Ｗ＋ａｅiとすると、シンドロームＳは次式で求められる。
Ｓ＝Ｈ×ｗT ＝Ｈ（Ｗ＋ａｅi ）T ＝ａＨ×ｅi T ＝ａＨi
この式のａとして、ビット定数１、α、α2 のいずれかの値が求まり、また、ｅiがシフトレジスタ９０の値であることから、乗算部９２と加算部９４で
Ｗ＝ｗ＋ａｅi
の演算を行うことで、正しいデータＷを求めることができる。
このような本発明の誤り検出と訂正の具体例を示す。
。
【００８４】
いま検査行列を
【００８５】
【数１７】
0003571388.tif 000018
【００８６】
とし、入力データをＷ＝（１ａ１ａ１ａ）とする。受信データは、図９のデータ格納メモリ７２に２ビット単位に、
０１  １０  ０１  １０  ０１  １０
と入る。但し、０１＝１，１０＝ａ，１１＝ｂである。検査データ格納メモリ７４には、図１１でＭ＝３であるから、検査行列Ｈが３行になって入っている。
【００８７】
データＷ＝（１ａ１ａ１ａ）が入ってくると、最終的にシンドロームＳは次のようにして求められる。
【００８８】
【数１８】
0003571388.tif 000019
【００８９】
ここで、１ケ所誤りデータＷ´＝（１ａｂａ１ａ）と受信したとする。このときのシンドロームＳとして、
0003571388.tif 000020
が求められ、シンドローム格納メモリ８０に格納される。比較部８４は、シンドロームＳと、図１２の１ケ所誤りデータ格納メモリ８２の列ベクトルＨ１  ，ａＨ１  ，ｂＨ１  ，Ｈ２  ，ａＨ２  ，ｂＨ２  ，・・・Ｈ６  ，ａＨ６  ，ｂＨ６  と比較する。この比較による検査回数は、（２２  −１）・６＝１８回となる。
【００９０】
シンドロームＳは列ベクトルａＨ３  に一致することから、図１３の訂正部８８によって正してデータＷとして、
Ｗ＝Ｗ´＋ａｅ３  
を求める。即ち、
0003571388.tif 000021
となり、正しく復号できる。
【００９１】
図１４はシンドロームと１ケ所誤りデータの比較による検査処理の他の実施例である。
図１４の実施例は、１ケ所誤りデータ格納メモリ８２に、検査データに一致する列ベクトルＨ１  〜ＨＮ  のみを格納している。１ケ所誤りデータ格納メモリ８２と比較部８４の間には、α及びα２  を各々乗算するＭ個の２ビット乗算器を備えた乗算部９６，９８が設けられる。
【００９２】
検査時にシンドロームＳが零でなかった場合には、１ケ所誤りデータとしての列ベクトルＨ１  〜ＨＮ  を１つずつシフトしながら、１倍、α倍、α２  倍した列ベクトルを並列的に作り出し、シンドロームＳと比較する。このためＮ回の比較で誤り位置を検出できる。例えばｔ＝２ビットの具体例の場合、図９で最大１８回であったものが、最大６回に低減できる。
【００９３】
尚、上記の実施例は、検査部２２で誤り訂正を行って正しいデータを制御部１４に引き渡しているが、他の実施例として、誤り訂正は行わずに検査部２２から制御部１４に受信データと誤り位置データを引き渡し、制御部１４で訂正処理を行うようにしてもよい。
【００９４】
【発明の効果】
以上説明してきたように本発明によれば、誤りを検査する回数が大幅に減らせるため処理速度が向上できる。また、誤りの検査の並列処理により更に処理速度を向上することができる。更に、１ケ所箇所の誤り検出の際の誤り訂正処理が簡単にできる。
【図面の簡単な説明】
【図１】本発明の実施例を示したブロック図
【図２】データ記憶体のメモリの実施例を示したブロック図
【図３】データ記憶体のメモリの他の実施例を示したブロック図
【図４】データ記憶体のメモリの他の実施例を示したブロック図
【図５】図２〜４のメモリ格納データとパラレル読出しの説明図
【図６】データ記憶体のメモリの他の実施例を示したブロック図
【図７】データ記憶体の擬似ランダム系列発生部の実施例ブロック図
【図８】読出器のデコード部の実施例ブロック図
【図９】読出器の検査部の実施例ブロック図
【図１０】２ビット要素の加算マトリックスの説明図
【図１１】図９の検査部におけるシンドロームの演算の詳細ブロック図
【図１２】図９の１ケ所誤りデータ格納メモリの格納内容の説明図
【図１３】図９の訂正部の詳細ブロック図
【図１４】図９の検査部による並列検査処理の実施例ブロック図
【図１５】従来装置のブロック図
【図１６】従来の１ビット誤り検出訂正・２ビット誤り検出符号の説明図
【符号の説明】
１０：読出器
１２：データ記憶体
１４，２４：制御部
１６：読出制御部
１８，２８：伝送部
２０：デコード部
２２：検査部
３０：メモリ
３２：エンコード部
３４：擬似ランダム系列発生部
３６：擬似ランダム信号発生部
４０，４０−１〜４０−ｔ：シリアルメモリ
４２：ｔビットパラレル読出メモリ
４４：メモリ制御部
４５，４８：シフトレジスタ
４６：ｓｔビットパラレル読出メモリ
５０−１〜５０−４：Ｍ１１，Ｍ１０，Ｍ０１，Ｍ００系列発生器
５２−１〜５２−４：ＡＮＤ回路
５４：ＯＲ回路
５６−１〜５６−４：Ｍ１１，Ｍ１０，Ｍ０１，Ｍ００相関演算器
５８：Ａ／Ｄ変換器
６０：シフトレジスタ
６２：積和演算器
６４：基準系列レジスタ
６６：比較器
６８：ピーク値格納メモリ
７０：データ復号器
７２：受信データ格納メモリ
７４：検査データ格納メモリ
７６：乗算部
７６−１〜７６−Ｍ：ｔビット乗算器
７８：加算部
７８−１〜７８−Ｍ：ｔビット加算器
８０：シンドローム格納メモリ
８２：１ケ所誤りデータ格納メモリ
８２−１〜８２−３：１ケ所誤りデータ
８４：比較部
８６：判断部
８８：訂正部
９０：誤り位置検出用シフトレジスタ
９２，９６，９８：乗算部
９４：加算部
【図１】
0003571388.tif 000022
【図２】
0003571388.tif 000023
【図３】
0003571388.tif 000024
【図４】
0003571388.tif 000025
【図５】
0003571388.tif 000026
【図６】
0003571388.tif 000027
【図７】
0003571388.tif 000028
【図８】
0003571388.tif 000029
【図９】
0003571388.tif 000030
【図１０】
0003571388.tif 000031
【図１１】
0003571388.tif 000032
【図１２】
0003571388.tif 000033
【図１３】
0003571388.tif 000034
【図１４】
0003571388.tif 000035
【図１５】
0003571388.tif 000036
【図１６】
0003571388.tif 000037