明 細 書
発明の名称 エラー訂正方法及びエラー訂正回路
技術分野
本発明は、 エラー訂正方法及びエラー訂正回路に関し、 特に C D (コ ンパク トディ スク) や D A T (ディ ジタル · オーディオ ' テープ) の再生装置等の如きディ ジタル · データを処理する装置 におけるェラ一訂正に用いて好適なェラ一訂正方法及びェラー訂 正回路に関する。
背景技術
C Dの場合、 その誤り訂正符号は、 2段の Reed-Solomon符号を イ ンタ リ ーブで結合した形をしており、 C I R C (Cross Inter] eaved Reed-Solomon Cod e)と呼称されている。 そして、 C I R C に用いられている 2段の Reed-Solomon符号はそれぞれ C 1 , C 2 と呼ばれている。
C 1訂正を例にとると、 2 8バイ トのデータに 4バイ トのパリ ティが付加されて 3 2ノ ィ ト単位となっている。 そして、 この 3 2バイ 卜のデータを、 それぞれ X 。 〜 X 3 ,と呼ぶことにする。 ここで、 4バイ トのパリ ティ は、 〔数式 1 〕 の 4つの式の値が 全て " 0 " になるように選ばれる。
〔数式 1 〕
X + X + + X + + X = 0
X + X + + X + + X 3 ,= 0
X + X a 2 + + X « " + + X (X 62= 0
X + X a 3 + + X + X a
このようにして生成されたデータが、 ディ スク上に記録されて いる訳である。 そして、 そのディ スク上の記録データを再生した ときに、 種々の要因によって誤りが含まれることになる。
こ こで、 ディ スクから読み取りかつェラ一訂正回路で受信した
データ (誤りを含んだデータ) を、 ディスクに記録したデータ と 区別するためにそれぞれ X 。 ' 〜 χ 3 1' と表記する。
実際に、 エラ一訂正を行うときには、 データを受信すると、 先 ず、 シ ン ドロ ーム S 0〜 S 3を 〔数式 2〕 に基づいて計算する。
〔数式 2〕
' S 0 = X 。 — + I ' + + X + + x
S 1 = X 0 ' + X 1 ' + X 1 + + X
S 2 = X 0 ' + 1 ' oc + + X 2 i + + X a k S 3 = 0 ' -f~ i ' a + + X 3 i + + X a ところで、 ガロア体の理論によると、 2 8 個の要素を持つ有限 体が存在することが証明されている。 これを G F ( 2 8)と表す。
また、 C Dで用いられているものは、 この中でも、 〔数式 3〕 の生成多項式で定義されているものである。
〔数式 3〕
P ( X ) X + X X + X 2 + 1
そして、 P ( X ) = 0 とおいたときの方程式の根を《とする。 〔数式 2〕 から容易にわかるように、 も し、 受信したデータに 誤りが含まれていなければ、 S 0 = S 1 = S 2 = S 3 = 0 となる (そうなるように、 記録時にパリティが付加されている) 。 逆に 、 1 つでも " 0 " でないものが存在すれば、 データの誤りを検出 できたことになる。
以上のように、 エラー訂正前に 〔数式 2〕 にしたがってシ ン ド ロームを求める必要があるが、 この式のまま計算を行うと、 計算 の回数が多く なつてしまう。
そこで、 〔数式 2〕 を 〔数式 4〕 のように変形する。
f S 0 = X o ' 十 X l ' H r
I S 1 = x o ' a (x i ·' 卞 (x 2 ' H or (x 3o' 十 (x si' ))···))
I S 2 = x o ' 十
i ' T o-
2(x 2 ' Λ H ar
z(x so' 十 α
ζ(Χ3ΐ' ))···))
( S 3 = x o ' 十 3(Χ ι ' + -3(x 2 ' -i 1- ar3(x 3o' 十び3 (χ3ι' ))···)) こ こで、 S 1 を例にとると、 図 3に示すようなアルゴ リ ズムで 計算できる。 他の S O, S 2 , S 3についても、 ひ乗をそれぞれ 変えてやるだけで同様に計算できる。
また、 この計算の処理は、 図 4 に示すように、 受信データを一 入力とする加算器 4 1 と、 この加算器 4 1 による加算データを格 納するレジスタ 4 2 と、 このレジスタ 4 2の格納デ一夕を 乗し て加算器 4 1 の他入力とする《乗回路 4 3 とからなる回路で行う こ とができ る。
図 4 において、 レジス タ 4 2がリ セ ッ ト されている状態から、 X 3 から順に受信したデータを入力していき、 最後に x。 ' を 入力したときのレジスタ 4 2の値が S 1 となる。
実際には、 S 0, S 2, S 3 も必要なので、 図 5に示すように 、 4個のレジス タ 4 2 0 〜 4 2 3 を並べて計算の処理を行ってい る。
なお、 《乗回路 4 3及び加算器 4 1 は、 ガロア体の性質から、 図 6及び図 Ί に示すように、 排他的論理和 (E X— 0 R ) ゲー ト を組み合わせることによって容易に実現できる。
ところで、 一般には、 てラー訂正を行う前に、 どの程度のエラ 一が生じたかを検出することが重要である。 また、 C Dで使用さ れている符号では、 2バイ トまでのエラ一訂正が可能である。
そ こで、 従来は、 シ ン ド ロ ーム計算終了後に、 エラーが何バイ ト ( 0バイ ト 、 1 バイ ト、 2バイ ト以上) 発生したかを判断する ための計算を行つていた。
仮に、 受信したデータ X i ' が大きさ e i だけ誤っていたとす
ると、 シ ン ドロ一厶はパリ ティの決め方から容易にわかるように 、 〔数式 5〕 となる。
〔数式 5〕
このようにして計算したシ ン ドロームから、 誤りの大きさ e i と誤っている受信データの位置 i とを求めれば良い訳である。
〔数式 5〕 の 4つの方程式に対して未知数は 2つであるため、 簡単に解く ことができる。 例えば、 〔数式 6〕 に基づいて求めれ ば良いように思われる。
〔数式 6〕
S 1
(X ' =
S 0
e i = S O
しかし、 これだけでは、 受信データに 2バイ ト以上の誤りが存 在した場合に誤訂正をしてしまうので、 〔数式 5〕 から求めた《 1 及び e i を用いて、 e i " 2 iと e i " 3 iを求め、 これが 〔数式 5〕 の S 2 , S 3 とそれぞれ一致することを確認する必要がある このように、 上述したアルゴ リ ズムによる従来のエラ一訂正回 路では、 1 バイ ト訂正に少なく とも 1 回の割り算と 2回の掛け算 を行う必要がある。
また、 この計算はガロア体上の計算であり、 一般に、 ガロア体 上で掛け算、 割り算を行うときは、 計算したい数を のべき乗の 形に変形して行う ことから、 その変換のための指数と対数のテー ブルを格納する R Ο Μを用いなければならず、 又その周辺回路も
複雑な回路構成となるため、 回路規模が大き く なってしまうとい う問題があった。
発明の開示
本発明は、 このような問題点に鑑みてなされたものであり、 そ の目的とするところは、 極めて小規模な回路構成にてエラー検出 及びェラ一訂正が実現できるエラ一訂正方法及びェラ一訂正回路 を提供することにある。
第 1 の発明は、 受信データからこの受信データに付加されるパ リ ティ数で決まる n ( n は正の整数) 個のシ ン ド ロ ームを計算し かつ 1重誤りのときその誤りの大きさを表すシ ン ド口一人を単一 のシ ン ドロ ーム レジス タ に、 それ以外のシ ン ドロ ームを ( n— 1 ) 個のシ ン ドロ 一厶 レジス タ にそれぞれ格納し、 シ ン ド ロ ームの 計算終了後、 前記単一のシ ン ドロ ーム レジスタの値を前記 ( n— 1 ) 個のシ ン ドロ ーム レジスタ に、 前記 ( n— 1 ) 個のシ ン ドロ ームレジスタの各値を ( n — 1 ) 個のデータ レジスタにそれぞれ ロー ドし、 ガロア体上の生成多項式の根を "とするとき、 前記 ( n — 1 ) 個のシ ン ド ロ ーム レジスタを用いて α, ——, " ( η _ ' ) のべき乗演算を前記 ( η — 1 ) 個のシ ン ドロ ーム レジス タの各値 と前記 ( η— 1 ) 個のデータ レジスタの各値の一致を検出するま で繰り返すとともに、 べき乗演算に同期してカ ウ ン ト動作を行い 、 前記一致の検出時点の力ゥ ン ト値を誤りが含まれているデータ 位置とするとともに、 前記単一のシ ン ドロームレジスタ の値を誤 りの大きさと し、 前記データ位置及び前記誤りの大きさに基づい てエラー訂正を行うようにしたものである。 このことによって、 シ ン ド ロ ーム レジス タ S 0, S 1〜 S ( η - 1 ) によ ってシ ン ド ロームを計算し、 その計算終了後、 1重誤りのときシ ン ド ロ ーム レジス タ S 0 の値をシ ン ド ロ ーム レジス タ S 1〜 S ( η - 1 ) に 、 シ ン ド ロームレジスタ S 】 〜 S ( η - 1 ) の各値をデータ レジ
ス タ R 1 〜R ( n - 1 ) にそれぞれロ ー ド し、 このシ ン ド ロ ーム レジス タ S 1 〜 S ( n - 1 ) を用いて , · · · ·, ( n " n のべき 乗演算を、 シ ン ド ロ ーム レジスタ S 1 〜 S ( n - 1 ) の各値とデ ータ レジスタ R 1 〜R ( n - 1 ) の各値を一致するまで繰り返す とともに、 そのべき乗演算に同期してカウ ンタのカウ ン ト動作を 行う。 これによ り、 レジス タ S 1 ~ S ( n - 1 ) と レジスタ R l 〜R ( n - 1 ) の各値の一致を検出した時点のカウ ン ト値が誤り が含まれているデータ位置となり、 その誤りの大きさがシ ン ドロ —ム レジス タ S 0 の値となる。
また第 2の発明は、 第 1 の発明のエラー訂正方法を用いたエラ 一訂正回路であって、 受信データからシン ド口ームを計算しかつ 1重誤りのときその誤りの大きさを表わすシン ド口ームを格納す る単一のシ ン ドローム レジスタ及びそれ以外のシ ン ドロームを格 納する ( n — 1 ) 個のシ ン ド ロ ーム レジスタからなるシ ン ドロー 厶 レジスタ群と、 前記 ( n — 1 ) 個のシ ン ド ロ ーム レジスタ に格 納された各値を保持する ( n — 1 ) 個のデータ レジスタ と、 前記 ( n - 1 ) 個のシ ン ドロ ーム レジスタの各値と前記 ( n — 1 ) 個 のデータ レジスタの各値が一致したことを検出する一致検出回路 と、 前記べき乗演算に同期してカ ウ ン ト動作を行うとともに、 前 記一致検出回路の検出出力に応答して力ゥ ン ト動作を停止する力 ゥ ンタとを具備し、 前記力ゥ ンタのカ ウ ン ト値及び前記単一のシ ン ドローム レジスタ の値に基づいてエラー訂正を行うようにした ものである。 このこ とによ って、 シ ン ドロ ームの計算に絶対に必 要な n個のシ ン ド α —厶 レジスタ に、 ( η _ 1 ) 個のデータ レジ スタ、 1個のカウ ンタ及び一致検出回路を付加するだけの極めて 小規模な回路構成で、 1 重工ラー ( 1 バイ トエラー) のエラー検 出及びエラー訂正を実現できる。
図而の簡単な説明
図 1 は本発明によるエラー訂正回路の一実施例を示すプロ ッ ク 図である。
図 2 は本発明によるエラー訂正了ルゴリズ厶のフ 口 一チ ヤ一 ト である。
図 3はシ ン ドロ ーム S 1 の計算アルゴ リ ズムのフ ロ ーチ ャ ー ト である。
図 4 はシ ン ドローム S 1 の計算回路の一例を示すブロ ッ ク図で ある。
図 5 はシ ン ドロ ーム S 0〜 S 4の計算回路の一例を示すブ口 ッ ク図である。
図 6 は "乗回路の一例を示すブロ ッ ク図である。
図 Ί はガロァ体上での加算器の一例を示すプロ ッ ク図である。 発明を実施するための最良の形態
以下、 本発明の実施例を図面に基づいて詳細に説明する。
図 1 は、 本発明によるエラ一訂正回路の一実施例を示すプロ ッ ク図である。
図 1 において、 受信データ R Dは、 4つの加算器 ( 1 1 ) 〜 ( 1 4 ) の各一入力となる。 これら加算器 ( 1 1 ) 〜 ( 1 4 ) によ る各加算データは、 シ ン ドロ ーム S 0〜 S 3を計算するための 4 つのシ ン ドロ ーム レジス タ 〔 S 0〜 S 3〕 ( 1 5 ) 〜 ( 1 8 ) に 格納される。 シ ン ドロ ーム レジス タ ( 1 5 ) 〜 ( 1 8 ) は、 ク ロ ッ ク C Kに同期して動作する。
4つのシ ン ドロ ーム レジス タ ( 1 5 ) 〜 ( 1 8 ) のうち、 シ ン ド ロ ーム レジスタ 〔 S 1 〜 S 3〕 ( 1 6 ) 〜 ( 1 8 ) の各格納デ 一夕は、 "乗回路 ( 1 9 ) 、 2 乗回路 ( 2 0 ) 、 ひ 3 乗回路 ( 2 1 ) をそれぞれ経て加算器 ( 1 2 ) , ( 1 3 ) , ( 1 4 ) の各 他入力となるとともに、 3つのデータ レジス タ 〔 R 1 〜 R 3〕 ( 2 2 ) 〜 ( 2 4 ) にそれぞれ格納される。
データ レジスタ 〔 R 1 〜 R 3〕 ( 2 2 ) ~ ( 2 4 ) の各格納デ —タは、 3つの論理ゲー ト ( 2 5 ) 〜 ( 2 7 ) の各一方の入力と なる。
これら論理ゲ— ト ( 2 5 ) 〜 ( 2 7 ) は、 シ ン ドロ ーム レジス タ 〔 3 1 ~ 5 3〕 ( 1 6 ) 〜 ( 1 8 ) の各格納データを他方の入 力と し、 2組のレジス タ の対応する各ビッ トの論理値が全て一致 したとき出力レベルが論理 " 1 " となる。 論理ゲー ト ( 2 5 ) 〜 ( 2 7 ) の各出力は、 3入力 A N Dゲー ト ( 2 8 ) の各入力とな る。
A N Dゲー ト 2 8は、 各入力レベルが共に論理 " 1 " のとき、 即ち論理ゲー ト ( 2 5:) 〜 ( 2 7 ) が共に一致のとき出力レベル が論理 " 1 " となる。
一方、 4つのシン ドロ ーム レジスタ ( 1 5 ) - ( 1 8 ) と同じ ク ロ ッ ク C Kをカウ ン トするカウ ンタ ( 2 9 ) が設けられており 、 このカ ウ ンタ ( 2 9 ) は C P U ( 3 0 ) によ って初期値のセ ッ ト及びカ ウ ン ト動作の停止の制御が行われる。
すなわち、 求めたシ ン ド ロ ーム S 0 ~ S 3から、 受信データに 含まれる誤りデータの番号 (位置) i とその大きさ e i を求める 際に、 カウ ンタ ( 2 9 ) は初期値を " 0 " にセッ ト され、 A N D ゲー ト ( 2 8 ) がー致を検出した時点でそのカウ ン ト動作が停止 させられる。
ェラ一計算が終了すると、 その終了時点における S 0 レジスタ ( 1 5 ) の値がエラ一の大きさ e 、 カウ ンタ ( 2 9 ) のカウ ン ト値 j が誤りデータの番号 (位置) i となる。 そして、 図 1 の受 信データの入力部に、 図示せぬバッ フ ァメモ リ に格納されている ェラ一位置 i の受信データを呼び出し、 S 0 レジスタ ( 1 5 ) の テ "一夕 と力卩算を ίΐう。
このような処理を計算終了に行う ことにより、 S O レジスタ (
1 5 ) にエラ一訂正済みのデータが残り、 このエラー訂正済みの データ D Tを出力させてエラー訂正処理が完了することになる。
次に、 本発明のアルゴ リ ズムにっき、 図 2のフ ロ ーチ ャ ー ト に したがって説明する。
先ず、 加算器 ( 1 1 ) 〜 ( 1 4 ) 、 シ ン ド ロ ーム レジスタ 〔 S 0〜 S 3〕 ( 1 5;) 〜 ( 1 8 ) 及び 乗回路 ( 1 9 ) 、 ひ 2 乗回 路 ( 2 0 ) 、 《 3 乗回路 ( 2 1 ) によってシ ン ド σ—ムの計算を 行う (ステップ S 1 ) 。
こ こで、 例えば、 i 番目の受信データが大きさ e i だけ誤って いたと仮定すると、 〔数式 5〕 より、 シ ン ド ロ ームは、 S 0 = e
1 , S 1 - e 4 a 4 , S 2 = e i a 2 i, S S - e i 31となる。 次に、 シ ン ドロ ーム レジス タ 〔 S 1 〜 S 3〕 ( 1 6 ) 〜 ( 1 8
) の各格納データをデータ レジスタ 〔R 1 〜 R 3〕 ( 2 2 ) 〜 (
2 4 ) へ、 シ ン ド ロ ーム レジスタ 〔 S 0〕 ( 1 5 ) の格納データ をシ ン ドロ ーム レジス タ 〔 S 1 〜 S 3〕 へそれぞれ格納する (ス テツプ S 2 ) 。
この結果、 シ ン ドロ ーム レジスタ 〔 S 0〜 S 3〕 ( 1 5 ) 〜 ( 1 8 ) の各値は、 S 0 = S l = S 2 = S 3 = e i , R 1 = e i 1 , R 2 = e i 2', R 3 = e i " 3 iとなる。
続いて、 カウ ンタ 2 9の初期値を " 0 " にセッ ト し (ステップ S 3 ) 、 シ ン ドロ ーム レジスタ ( 1 6 ) 〜 ( 1 8 ) 、 データ レジ スタ ( 2 2 ) 〜 ( 2 4 ) にぉぃて、 3 1 = 1? 1 , S 2 = R 2 , S
3 = R 3の条件が成立するか否かを調べる (ステップ S 4 ) 。 こ こで、 も し、 受信したデータの 0審目 ( x。 ' ) が誤ってい る場合は、 S レジス タ と R レジス タは 3つとも一致する害である ο
なお、 受信したデータに誤りがなかったときも、 上記の条件が 成立することになる力 、 それは、 後述するように、 S 0 = 0 とな
ることで弁別できる。
ステップ S 4 において、 もし、 上記の条件が成立しないときは . j ≤ 3 1を条件に (ステ ッ プ S 5 ) 、 " ' S 1— S l, 2 · S 2→ S 2 , 3 - S 3→ S 3の計算を行い (ステ ッ プ S 6 ) 、 続いてカ ウ ンタ 2 9のカ ウ ン ト値 j を 1 つカ ウ ン ト ア ッ プし (ス テツプ S 7 ) 、 しかる後ステップ S 4に戻る。
ステツプ S 6 における計算は、 受信データと して " 0 " を入力 してやるだけで実現できる。
この計算の結果、 シ ン ド ロ ーム レジス タ ( 1 6 ) 〜 ( 1 8 ) の 値は、 S l = " e i , S 2 = «r 2 e , , S 3 = 3 e > となる。
こ こで、 再び、 S 1 = R 1, S 2 = R 2 , S 3 = R 3の条件が 成立するか否かを調べる (ステップ S 4 ) 。
も し、 受信したデータのうち 1番目 ( X , ' ) に誤りがあった 場合、 この条件が成立する箬である。 また、 この条件が成立しな かつた場合は、 もう一度、 ステ ッ プ S 6及びステ ッ プ S 7の処理 を実行する。
このようにして、 この計算を j 回行ったとすると、 シ ン ドロ一 厶 レジスタ ( 1 6 ) 〜 ( 1 8 ) の各値は、 S 1 = " j e i , S 2 = « 2 j e i , S 3 = a 3 J e i となっており、 j が i (誤っている 受信データの番号) と一致したときに、 S 1 = R 1, S 2 = R 2 , S 3 = R 3が成立することがわかる。
つまり、 この計算を何回か繰り返して行い、 ステップ S 4 にお いて、 S 1 = R 1 , S 2 = R 2 , S 3 = R 3の条件が成立したと 判定し/ことき、 S 1 ≠ 0を条件に (ステ ッ プ S 8 ) 、 カ ウ ンタ ( 2 9 ) のカウ ン ト値 j を誤りが含まれているデータの番号と し、 その誤りの大きさをシ ン ド ロ ーム レジスタ 〔 S 0〕 ( 1 5 ) の値 とする (ステ ッ プ S 9 ) 。
ステップ S 8において、 S 0 = 0 と判定した場合には、 受信デ
一夕に誤りがなかったものとする (ステップ S 1 0 ) 。
また、 ステ ッ プ S 5において、 カ ウ ンタ ( 2 9 ) のカ ウ ン ト値 j が 3 1 を超えても S レジスタ と R レジスタがー致しないと判定 した場合には、 2バイ ト以上のデータが誤っていたとし、 訂正不 能と して処理する (ステップ S 1 1 ) 。
以上詳細に説明したように、 本実施例によれば、 シ ン ド ロ ーム レジスタ S 0, S 1 〜 S ( n— 1 ) によってシ ン ドロ 一厶を計算 し、 その計算終了後、 1重誤りのときシ ン ドロ ーム レジス タ S 0 の値をシ ン ドロ ーム レジス タ S 1 ~ S ( n - 1 ) に、 シ ン ドロ 一 ム レジスタ S 1 〜 S ( n - 1 ) の各値をデータ レジスタ R 1 〜R ( n — 1 ) にそれぞれロ ー ド し、 シ ン ドロ ーム レジス タ S 1 〜 S ( n - 1 ) を用いて《, ·· '·, " -') のべき乗演算を、 シ ン ド ロ ーム レジスタ S 1 〜 S ( n - 1 ) の各値とデータ レジス タ R l ~ R ( n - 1 ) の各値が一致するまで繰り返すとともに、 そのべ き乗演算に同期してカ ウ ン ト動作を行い、 その一致検出時の力 ゥ ン ト値を誤りが含まれているデータ位置と し、 シ ン ドロ ーム レジ ス タ S 0の値をその誤りの大きさと してエラ一訂正を行うように したので、 シ ン ド 口 一厶の計算に絶対に必要な n個のシ ン ドロ ー 厶 レジス タ に、 ( n— 1 ) 個のデータ レジスタ 、 1個のカ ウ ンタ 及び一致検出回路を付加するだけの極めて小規模な回路構成にて 、 1 重工ラーのエ ラ ー検出及びエラー訂正を実現できることにな る。
なお、 上記実施例では、 シ ン ドロ ームが 4つ ( S 0〜 S 3 ) と なる信号フ ォ ーマツ 卜の C Dの再生装置に適用した場合について 説明したが、 本発明は、 これに限定されることなく、 ディ ジタル • データを処理する装置全般に適用し得るものであり、 例えば、 シ ン ド ロ ームが 6つとなる信号フ ォ ーマ ツ ト の D A Tの再生装置 に適用する場合には、 シ ン ドロ ームの数に応じてシ ン ド ロ ーム レ
ジスタ及びデータ レジス タを増やすことで、 同様にして処理でき る o