(1)第1の実施の形態
第1の実施の形態においては、例えば、位数qが「256」であり、最小距離dが「33」のリードソロモン符号RS(255,223)を復号処理の対象としたとき、生成多項式の根に対応する16個のエラー・シンドロームS1〜S16のみについて計算し、その後に誤りの有無を判定するようになされている。
(1−1)BCH符号復号回路の構成
図1において、1は全体として第1の実施の形態におけるBCH符号復号回路を示し、例えば、位数 q が「256」であり、最小距離 d が「33」のリードソロモン符号RS(255,223)でなる受信語D1を遅延回路2および第1のエラー・シンドローム演算回路3へ供給する。
第1のエラー・シンドローム演算回路3は、受信語D1から複数の連続した例えばエラー・シンドロームS1〜S16を計算し、そのエラー・シンドロームS1〜S16を判定回路4およびエラー訂正回路6へ供給する。
このとき遅延回路2は、第1のエラー・シンドローム演算回路3において受信語D1からエラー・シンドロームS1〜S16を計算している時間だけ当該受信語D1を保持し、その後に受信語D1を第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ出力する。
判定回路4は、第1のエラー・シンドローム演算回路3から供給されたエラー・シンドロームS1〜S16がいずれも値「0」となっているか否かの第1の判定を行い、これを第1の判定結果X1として出力する。
判定回路4は、エラー・シンドロームS1〜S16のうち少なくともいずれかが値「0」ではなく、16シンボル以下の誤りが生じているとき、偽を意味する第1の判定結果X1を第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ通知する。
第2のエラー・シンドローム演算回路5は、偽を意味する第1の判定結果X1を判定回路4から得ると、残りのエラー・シンドロームS17〜S32を計算し、これらをエラー訂正回路6へ供給する。
エラー訂正回路6は、全てのエラー・シンドロームS1〜S32に基づいて受信語D1のエラー位置およびエラー補正値を求め、エラー位置をエラー補正値で修正することにより誤り訂正処理を施し、その結果得られる誤り訂正処理後の受信語D2を後段の回路へ出力する。
ここでエラー訂正回路6は、エラー訂正能力を超えている場合や、何らかの原因によりエラー・シンドロームS1〜S32に基づいて受信語D1のエラー位置およびエラー補正値を求めることが出来ない場合、誤り訂正処理が不能であるとして、誤り訂正処理が不能であることを示すフラグを生成することにより誤り訂正不能処理を実行し、そのフラグの付加された受信語D2を後段の回路へ出力する。
この場合、BCH符号復号回路1では、例えばフレーム検出回路7がエラー訂正回路6の後段に設けられているようにすれば、誤り訂正が不能であることを示すフラグの付加された受信語D2に対してフレーム・チェック・シーケンス等を用いた誤り検出処理を行うことができるので、特に問題は生じない。
一方、判定回路4は、エラー・シンドロームS1〜S16がいずれも値「0」であり、少なくとも16シンボルの誤りが生じていないとき、真を意味する第1の判定結果X1を第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ通知する。
第2のエラー・シンドローム演算回路5は、真を意味する第1の判定結果X1を判定回路4から得ると、残りのエラー・シンドロームS17〜S32について計算するまでもなく誤りが生じていないであろうとみなし、エラー・シンドロームS17〜S32の計算を実行せずに省略する。
エラー訂正回路6は、真を意味する第1の判定結果X1を判定回路4から得ると、遅延回路2から供給された受信語D1に誤りが一切生じていないものとしてエラー訂正処理を実行せず(以下、これをエラー無訂正処理と呼ぶ)、当該受信語D1をそのまま受信語D2として後段の回路へ出力する。
(1−2)復号処理手順
このBCH符号復号回路1において、位数qが「256」であり、最小距離d が「33」であるリードソロモン符号RS(255,223)の復号処理手順について、図2のフローチャートを用いて説明する。
BCH符号復号回路1は、ルーチンRT1の開始ステップから入って、次のステップSP11へ移り、受信語D1に基づくエラー・シンドロームS1〜S32のうち、例えば複数の連続したエラー・シンドロームS1〜S16を第1のエラー・シンドローム演算回路3によって計算し、次のステップSP12へ移る。
ステップSP12においてBCH符号復号回路1は、ステップSP11で計算したエラー・シンドロームS1〜S16がいずれも値「0」となっているか否かの第1の判定を判定回路4によって行い、これを第1の判定結果X1として出力する。
ここで否定結果が得られると、このことは偽を意味する第1の判定結果X1が得られ、すなわちエラー・シンドロームS1〜S16のうち少なくとも1個は値「0」ではなく、受信語D1に16シンボル以下の誤りが存在していることを表しており、このときBCH符号復号回路1は次のステップSP13へ移る。
ステップSP13においてBCH符号復号回路1は、エラー・シンドロームS1〜S16のうち少なくとも1個は値「0」ではなく、受信語D1に16シンボル以下の誤りが存在しているので、続く、残りのエラー・シンドロームS17〜S32を第2のエラー・シンドローム演算回路5によって計算し、次のステップSP14へ移る。
ステップSP14においてBCH符号復号回路1は、全てのエラー・シンドロームS1〜S32に基づいて受信語D1のエラー位置およびエラー補正値の計算をエラー訂正回路6により実行し、次のステップSP15へ移る。
ステップSP15においてBCH符号復号回路1は、ステップSP14でエラー位置およびエラー補正値を算出し得たか否かをエラー判定回路6により判定する。ここで肯定結果が得られると、エラー位置およびエラー補正値を算出できたので、誤り訂正処理が可能であると判断することができることを表しており、このときBCH符号復号回路1は、次のステップSP16へ移る。
ステップSP16においてBCH符号復号回路1は、エラー訂正回路6により、エラー位置に対するシンボルの誤りについて、エラー補正値によって受信語と排他的論理和をとることにより誤り訂正処理を実行し、その結果得られる誤り訂正処理後の受信語D2を後段の回路へ出力した後、次のステップSP19へ移って処理を終了する。
これに対してステップSP15で否定結果が得られると、このことはエラー訂正能力を超えているか、或いは他の要因により、エラー位置およびエラー補正値の算出が出来なかったことを表しており、このときBCH符号復号回路1は次のステップSP17へ移る。
ステップSP17においてBCH符号復号回路1は、エラー位置およびエラー補正値の算出が出来ていないので、エラー訂正回路6により、誤り訂正処理が不能であることを示すフラグを生成する誤り訂正不能処理を実行し、そのフラグの付加された受信語D2を後段の回路へ出力した後、次のステップSP19へ移って処理を終了する。
一方、ステップSP12において肯定結果が得られると、このことは真を意味する第1の判定結果X1が得られ、すなわちエラー・シンドロームS1〜S16がいずれも値「0」となっており、16シンボル以下の誤りが存在していないので、残りのエラー・シンドロームS17〜S32においても値「0」となっているとみなし、受信語D1に誤りが生じていないと判断することができることを表しており、このときBCH符号復号回路1は次のステップSP18へ移る。
ステップSP18においてBCH符号復号回路1は、受信語D1に誤りが生じていないと判断したので、エラー訂正回路6により、遅延回路2から供給された受信語D1を誤り訂正することなしに出力する誤り無訂正処理を実行し、当該受信語D1をそのまま受信語D2として出力し、次のステップSP19へ移って処理を終了する。
(1−3)第1の実施の形態における作用および効果
以上の構成において、BCH符号復号回路1では、リードソロモン符号RS(255,223)の復号処理時、まず受信語D1に基づく16個の連続する根に対応する16個のエラー・シンドロームS1〜S16のみについて計算した後、エラー・シンドロームS1〜S16の値に基づいて受信語D1に誤りが有ったか否かを判定する。
ここで、エラー・シンドロームS1〜S16がいずれも値「0」となっていた場合、16シンボル以下の誤りが生じていないことが保証される。これは、 1、α、α2、α3、……、α15 を根として持つ次の(6)式で表される生成多項式により構成することのできるリードソロモン符号RS(255,239)によって誤り検出を行うことと同様だからである。
最小距離dが「33」であるリードソロモン符号RS(255,223)の誤り訂正能力は「16」であり、16シンボル以下の誤りが有れば、エラー・シンドロームS1〜S16の少なくとも1個は値「0」以外となる。従ってBCH符号復号回路1は、エラー・シンドロームS1〜S16のみの計算により、16シンボル以下の誤りが生じたか否かを検出することができるのである。
これによりBCH符号復号回路1では、エラー・シンドロームS1〜S16の値に基づいて16シンボル以下の誤りが生じていないとき、残りのエラー・シンドロームS17〜S32に対するエラー・シンドローム計算処理を省略し、大幅に省電力化を図ることができる。
この場合、BCH符号復号回路1は、全てのエラー・シンドロームS1〜S32の値に基づいて受信語D1の誤りの有無を検出する場合に比べて、エラー・シンドロームS17〜S32の誤りを検出できなくなる確率が高まるが、エラー・シンドロームS1〜S16の計算を行っているので、誤り訂正能力の「16」を越えない範囲では問題なく動作する。
またBCH符号復号回路1では、誤り訂正能力を超えて誤りを検出できない場合であっても、通信においては誤りが発生したことを後段の誤り検出回路(図示せず)によるフレーム・チェック・シーケンス等により検知することができるので、特に問題はない。
以上の構成によれば、BCH符号復号回路1は、リードソロモン符号RS(255,223)の受信語D1の復号処理時、当該受信語D1に基づいて16個のエラー・シンドロームS1〜S16のみを計算し、エラー・シンドロームS1〜S16の値に基づいて誤りが無かった場合、残りのエラー・シンドロームS17〜S32においても値「0」となっているとみなし、残りのエラー・シンドロームS17〜S32に対するエラー・シンドローム計算処理を省略することができるので、大幅に省電力化を図ることができる。
特に光通信分野での誤り率が 10-3以下と極めて小さく、受信語D1に誤りが存在する確率よりも誤りが存在しない確率の方が高いことを考慮すると、BCH符号復号回路1では、エラー・シンドロームS1〜S16の値に基づいて誤りが存在しなかった場合に、それ以降のエラー・シンドローム計算処理を省略することにより、伝送データの精度劣化が殆ど生じない状態で効果的に省電力化を図ることができる。
なお、上述した第1の実施の形態においては、位数qが「256」であり、最小距離 d が「33」であるリードソロモン符号RS(255,223)の復号方法について説明したが、一般には、拡大体GF(qm)上の原始元αの冪αl、αl+1、αl+2、……、αl+d-2(d≧3)を根とする生成多項式により生成されるBCH符号のBCH符号復号方法において、nR(個([(d−1)/2]≦nR≦(d−2))の連続する根αu、αu+1、……、αu+nR-1(l≦u≦l+d−2、l≦u+nR−1≦l+d−2)に対応する複数のエラー・シンドロームのみを計算し、複数のエラー・シンドロームがいずれも値「0」であるか否かの第1の判定結果を得、第1の判定結果が偽のとき、BCH符号の受信語に誤りが有ると判断し、所定の誤り訂正処理を行い、第1の判定結果が真のとき、誤り訂正処理を実行することのない誤り無訂正処理を行うようにしても良い。
因みに第1の実施の形態においては、例えば最小距離dが「33」であれば、少なくとも16個以上、最大で31個以下の連続する根αu、αu+1、……、αu+nR-1(l≦u≦l+d−2、l≦u+nR−1≦l+d−2)に対応するエラー・シンドロームのみを計算し、いずれも値「0」となっているか否かを判定することにより、省電力化を図りながら誤りの有無を判別することができる。
そして、このBCH符号の復号方法においては、計算すべきエラー・シンドロームの数は、nR=[(d−1)/2]とすれば(例えば最小距離dが「33」であればエラー・シンドロームの数は16個)、誤り訂正能力の範囲内でエラー・シンドローム計算処理を最大限に省略することができ、伝送データの精度を落とすことなく効率的に省電力化を図ることができる。
また、上述した第1の実施の形態においては、受信語に基づく16個の連続する根に対応したエラー・シンドロームS1〜S16のみについて計算した後、当該エラー・シンドロームS1〜S16の値に基づいて受信語D1に誤りが有ったか否かを判定するようにした場合について述べたが、本発明はこれに限らず、受信語に基づく16個の連続する根に対応したエラー・シンドロームであれば、例えば16個のエラー・シンドロームS2〜S17のみについて計算したり、16個のエラー・シンドロームS16〜S31のみについて計算しても良く、その他種々の連続した16個のエラー・シンドロームのみについて計算し、誤りの有無を判定することができる。
また、第1の実施の形態においては、位数qが「256」であり、最小距離 d が「33」であるリードソロモン符号RS(255,223)の復号方法を一例として述べたが、位数q≠2、最小距離d≧3を満たせば、これに限るものでない。
(2)第2の実施の形態
第2の実施の形態においては、例えば、位数qが「256」であり、最小距離dが「33」のBCH符号(255,223)を復号処理の対象としたとき、生成多項式の連続する根に対応した17個のエラー・シンドロームS1〜S17のみについて計算し、その後に誤りの有無を判定するようになされている。
(2−1)BCH符号復号回路の構成
図3において、1は全体として第2の実施の形態におけるBCH符号復号回路を示し、例えば、位数 q が「256」であり、最小距離 d が「33」のリードソロモン符号RS(255,223)でなる受信語D1を遅延回路2および第1のエラー・シンドローム演算回路3へ供給する。
第1のエラー・シンドローム演算回路3は、受信語D1から複数の連続した例えばエラー・シンドロームS1〜S17を計算し、そのエラー・シンドロームS1〜S17を判定回路4およびエラー訂正回路6へ供給する。
このとき遅延回路2は、第1のエラー・シンドローム演算回路3において受信語D1からエラー・シンドロームS1〜S17を計算している時間だけ当該受信語D1を保持し、その後に受信語D1を第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ出力する。
判定回路4は、第1のエラー・シンドローム演算回路3から供給されたエラー・シンドロームS1〜S17のうち、連続するエラー・シンドロームS1〜S16がいずれも値「0」となっているか否かの第1の判定を行い、これを第1の判定結果X1として出力する。なお、連続するエラー・シンドロームとは、生成多項式の連続する根に対応したエラー・シンドロームのことをいう。
判定回路4は、第1の判定結果X1が偽である場合、すなわちエラー・シンドロームS1〜S16のうち少なくとも何れかが値「0」ではなく、16シンボル以下の誤りが生じているとき、偽を意味する第1の判定結果X1を第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ通知する。
第2のエラー・シンドローム演算回路5は、偽を意味する第1の判定結果X1を判定回路4から得ると、残りのエラー・シンドロームS18〜S32を計算し、これらをエラー訂正回路6へ供給する。
エラー訂正回路6は、全てのエラー・シンドロームS1〜S32に基づいて受信語D1のエラー位置およびエラー補正値を求め、エラー位置に対するシンボル誤りについて、エラー補正値によって受信語と排他的論理和をとることにより誤り訂正処理を施し、その結果得られる誤り訂正処理後の受信語D2を後段の回路へ出力する。
ここでエラー訂正回路6は、エラー訂正能力を超えている場合や、何らかの原因により、エラー・シンドロームS1〜S32に基づいて受信語D1のエラー位置およびエラー補正値を求めることが出来ない場合、誤り訂正処理が不能であるとして、誤り訂正処理が不能であることを示すフラグを生成することにより誤り訂正不能処理を実行し、そのフラグの付加された受信語D2を後段の回路へ出力する。
この場合、BCH符号復号回路1では、例えばフレーム検出回路7がエラー訂正回路6の後段に設けられているようにすれば、誤り訂正が不能であることを示すフラグの付加された受信語D2に対してフレーム・チェック・シーケンス等を用いた誤り検出処理を行うことができるので、特に問題は生じない。
一方、判定回路4は、第1の判定結果X1が真である場合、すなわちエラー・シンドロームS1〜S16がいずれも値「0」であり、少なくとも16シンボルの誤りが生じていないとき、エラー・シンドロームS1〜S16の後に続く次のエラー・シンドロームS17について値「0」となっているか否かの第2の判定を行い、これを第2の判定結果X2として、第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ通知する。
第2のエラー・シンドローム演算回路5は、真を意味する第2の判定結果X2を判定回路4から得ると、それ以降のエラー・シンドロームS18〜S32のいずれもが値「0」となっているとみなし、エラー・シンドロームS18〜S32の計算を実行せずに省略する。
これに対して第2のエラー・シンドローム演算回路5は、偽を意味する第2の判定結果X2を判定回路4から得た場合、エラー・シンドロームS17が値「0」ではなく、17シンボル以上の誤りが生じ、誤り訂正能力の「16」を超えているため、誤り訂正不能であると判断し、それ以降のエラー・シンドロームS18〜S32の計算を実行せずに省略する。
エラー訂正回路6は、真を意味する第2の判定結果X2を判定回路4から得ると、それ以降のエラー・シンドロームS18〜S32のいずれもが値「0」となっているとみなし、遅延回路2から供給された受信語D1に誤りが一切存在していないものとしてエラー無訂正処理を行い、当該受信語D1をそのまま受信語D2として後段の回路へ出力する。
これに対してエラー訂正回路6は、偽を意味する第2の判定結果X2を判定回路4から得た場合、エラー・シンドロームS17が値「0」ではなく、17シンボル以上の誤りが生じ、誤り訂正能力を超えているため、誤り訂正不能であると判断し、誤り訂正処理を実行しないようになされている。
(2−2)復号処理手順
このBCH符号復号回路1において、位数qが「256」であり、最小距離d が「33」であるリードソロモン符号RS(255,223)の復号処理手順について、図4のフローチャートを用いて説明する。
BCH符号復号回路1は、ルーチンRT2の開始ステップから入って、次のステップSP21へ移り、受信語D1に基づくエラー・シンドロームS1〜S32のうち、複数の連続したエラー・シンドロームS1〜S17のみを第1のエラー・シンドローム演算回路3によって計算し、次のステップSP22へ移る。
ステップSP22においてBCH符号復号回路1は、ステップSP21で計算したエラー・シンドロームS1〜S17のうち、連続するエラー・シンドロームS1〜S16がいずれも値「0」となっているか否かの第1の判定を判定回路4によって行い、これを第1の判定結果X1として出力する。
ここで否定結果が得られると、このことは偽を意味する第1の判定結果X1が得られ、すなわちエラー・シンドロームS1〜S16のうち少なくとも1個は値「0」ではなく、受信語D1に16シンボル以下の誤りが存在していることを表しており、このときBCH符号復号回路1は次のステップSP23へ移る。
ステップSP23においてBCH符号復号回路1は、エラー・シンドロームS1〜S16のうち少なくとも1個は値「0」ではなく、受信語D1に16シンボル以下の誤りが存在しているので、続く、残りのエラー・シンドロームS18〜S32を第2のエラー・シンドローム演算回路5によって計算し、次のステップSP24へ移る。
ステップSP24においてBCH符号復号回路1は、全てのエラー・シンドロームS1〜S32に基づいて受信語D1のエラー位置およびエラー補正値の計算をエラー訂正回路6により実行し、次のステップSP25へ移る。
ステップSP25においてBCH符号復号回路1は、ステップSP24でエラー位置およびエラー補正値を算出し得たか否かをエラー訂正回路6により判定する。ここで肯定結果が得られると、エラー位置およびエラー補正値を算出できたので、誤り訂正処理が可能であると判断し、このときBCH符号復号回路1は、次のステップSP26へ移る。
ステップSP26においてBCH符号復号回路1は、エラー訂正回路6により、エラー位置に対するシンボルの誤りについて、エラー補正値によって受信語と排他的論理和をとることにより誤り訂正処理を実行し、その結果得られる誤り訂正処理後の受信語D2を後段の回路へ出力した後、次のステップSP30へ移って処理を終了する。
これに対してステップSP25で否定結果が得られると、このことはエラー訂正能力を超えているか、或いは他の要因により、エラー位置およびエラー補正値の算出が出来なかったことを表しており、このときBCH符号復号回路1は次のステップSP27へ移る。
ステップSP27においてBCH符号復号回路1は、エラー訂正回路6によりエラー位置およびエラー補正値の算出が出来ていないので、誤り訂正処理が不能であることを示すフラグを生成する誤り訂正不能処理を実行し、そのフラグの付加された受信語D2を後段の回路へ出力した後、次のステップSP30へ移って処理を終了する。
一方、ステップSP22において肯定結果が得られると、このことは真を意味する第1の判定結果X1が得られ、すなわちエラー・シンドロームS1〜S16がいずれも値「0」となっており、16シンボル以下の誤りが存在していないことを表しており、このときBCH符号復号回路1は次のステップSP28へ移る。
ステップSP28においてBCH符号復号回路1は、ステップSP21で計算したエラー・シンドロームS17が値「0」となっているか否かを判定回路4によって判定し、これを第2の判定結果X2とする。
ここで否定結果が得られると、このことは偽を意味する第2の判定結果X2が得られ、すなわちエラー・シンドロームS1〜S16がいずれも値「0」ではあったものの、次のエラー・シンドロームS17が値「0」ではなく、受信語D1に17シンボル以上の誤りが存在していることを表しており、このときBCH符号復号回路1は次のステップSP27へ移る。
ステップSP27においてBCH符号復号回路1は、受信語D1に17シンボル以上の誤りが存在し、最小距離d が「33」であるリードソロモン符号RS(255,223)の誤り訂正能力「16」を越えているため、判定回路4により誤り訂正処理が不能であると判断し、その旨を示すフラグを生成する誤り訂正不能処理をエラー訂正回路6により実行し、そのフラグの付加された受信語D2を後段の回路へ出力した後、次のステップSP30へ移って処理を終了する。
一方、ステップSP28において肯定結果が得られると、このことは真を意味する第2の判定結果X2が得られ、すなわちエラー・シンドロームS1〜S17がいずれも値「0」となっており、17シンボル以下の誤りが存在していないので、残りのエラー・シンドロームS18〜S32においても誤りが生じていないとみなすことができることを表しており、このときBCH符号復号回路1は次のステップSP29へ移る。
ステップSP29においてBCH符号復号回路1は、受信語D1に誤りが生じていないとみなしたので、エラー訂正回路6により、遅延回路2から供給された受信語D1をそのまま誤り訂正することなしに出力する誤り無訂正処理を実行し、当該受信語D1を受信語D2として出力し、次のステップSP30へ移って処理を終了する。
(2−3)第2の実施の形態における作用および効果
以上の構成において、BCH符号復号回路1では、リードソロモン符号RS(255,223)の復号処理時、まず受信語に基づく17個の連続する根に対応する17個のエラー・シンドロームS1〜S17のみについて計算した後、そのうちのエラー・シンドロームS1〜S16の値に基づいて受信語D1に誤りが有ったか否かの第1の判定結果X1を得、次に、エラー・シンドロームS17の値に基づいて受信語に誤りがあったか否かの第2の判定結果X2を得る。
ここで、エラー・シンドロームS1〜S17がいずれも値「0」となっていた場合、17シンボル以下の誤りが存在しないことが保証される。これは、 1、α、α2、α3、……、α16 を根として持つ次の(7)式で表される生成多項式により構成することのできるリードソロモン符号RS(255,238)によって誤り検出を行うことと同様だからである。このときの誤り検出能力は「17」となる。
BCH符号復号回路1は、エラー・シンドロームS1〜S17がいずれも値「0」であるならば、17シンボル以下の誤りは生じていないため、残りのエラー・シンドロームS18〜S32についても値「0」であるとみなし、エラー・シンドローム計算を省略して省電力化を図ると共に、受信語D1に対して誤り無訂正処理を行う。
しかしながら、エラー・シンドロームS17だけが値「0」ではない場合、受信語に16シンボル以下の誤りは存在していないが、17シンボル以上の誤りが生じているため、リードソロモン符号RS(255,223)の誤り訂正能力「16」を越えたと判断し、誤り訂正不能処理を行う。
なおBCH符号復号回路1では、誤り訂正能力を超えて誤りを検出できない場合であっても、通信においては誤りが発生したことを後段の誤り訂正回路(図示せず)によるフレーム・チェック・シーケンス等により検知することができるので、特に問題はない。
以上の構成によれば、BCH符号復号回路1は、リードソロモン符号RS(255,223)の受信語D1の復号処理時、当該受信語D1に基づくエラー・シンドロームS1〜S16の値に基づいて誤りが無かった場合で、かつ、それに続くエラー・シンドロームS17の値に基づいて誤りが無かった場合に限り、エラー・シンドロームS18〜S32の計算を省略することにより、少なくともエラー・シンドロームS17に基づいて誤りの有無を判断する分だけ、第1の実施の形態よりも誤り検出の精度を上げながら、効率良く省電力化を図ることができる。
なお、上述した第2の実施の形態においては、位数qが「256」であり、最小距離 d が「33」であるリードソロモン符号RS(255,223)の復号方法について説明したが、一般には、拡大体GF(qm)上の原始元αの冪αl、αl+1、αl+2、……、αl+d-2(d≧4)を根とするGF(q)上の生成多項式により生成されるBCH符号のBCH符号復号方法において、[(d−1)/2]個の連続する根αu、αu+1、……、αu+[(d-1)/2]-1(l≦u≦l+d−2)に対応するエラー・シンドロームのみを計算し、いずれも値「0」であるか否かの第1の判定を行い、その第1の判定結果X1が偽ならば誤り有りとして残りのエラー・シンドロームを計算し、誤り訂正処理を実施すればよく、第1の判定結果X1が真ならば、更に1以上(d−2−[(d−1)/2])個以下のエラー・シンドロームを計算し、いずれも値「0」であるか否かの第2の判定を行い、その第2の判定結果X2が真ならば、それ以降のエラー・シンドロームも誤り無しとみなして誤り無訂正処理を実施し、第2の判定結果X2が偽ならば誤り訂正能力を超えているので誤り訂正不能処理を実施するようにしても良い。
因みに、上述したBCH符号復号方法において、第2の判定では、1以上(d−2−[(d−1)/2])個以下のエラー・シンドロームを計算し、いずれも値「0」であるか否かの判定を行うようにしたが、(nR−[(d−1)/2])個(ここでnRは、[(d−1)/2]+1≦nR≦(d−2)である)の根に対応するエラー・シンドロームがいずれも値「0」であるか否かの判定を行ってもよい。この場合、計算式が異なるだけで同じ結果が得られる。
ここで、前記第2の判定に用いるエラー・シンドロームS17は、第2の実施の形態のごとく、第1の判定に用いたエラー・シンドロームS1〜S16に続く連続する(nR−[(d−1)/2])個のエラー・シンドロームであってもよいし、そうでなくても、エラー・シンドロームの計算を省略する効果は同様である。ただし、前者の場合は、第1の判定と第2の判定とを合わせると、nR個の連続するエラー・シンドロームを誤り検出のため用いることとなるため、第2の判定において最小距離(nR+1)による誤り訂正符号を利用してnRシンボルの誤り検出していることになる。このため、nRシンボル以下の誤り発生が検知できるため、誤りなしとして無訂正処理がなされることがない。一方で、後者は、エラー・シンドロームは連続しないため、前者のごとく最小距離(nR+1)による誤り訂正符号を用いて第2の判定において、検出することとはならないが、第1の判定で用いたエラー・シンドロームが零であり、第2の判定で用いた(nR−[(d−1)/2])個のエラー・シンドロームのうち少なくとも1つが非零の場合に対応する誤りについては誤りを検出することができる。
さらに第2の実施の形態においては、例えば最小距離dが「33」であれば、第2の判定として、1個以上15個以下のエラー・シンドロームS17〜S31を計算すれば良いが、第2の実施の形態のように、エラー・シンドロームS17だけを計算するようにすれば、誤訂正の確率を減少させても伝送データの精度を落とすことなくエラー・シンドローム計算量を最大限に省略することができ、効率的に省電力化を図ることができる。
なお、上述した第2の実施の形態においては、ステップSP22における第1の判定の前に予めエラー・シンドロームS17についても計算しておくようにしたが、本発明はこれに限らず、第1の判定後であって、ステップSP28における第2の判定前にエラー・シンドロームS17を計算するようにしても良い。一般的には、第1の判定前に[(d−1)/2])個のエラー・シンドロームを計算し、第2の判定前に1以上(d−2−[(d−1)/2])個以下のエラー・シンドロームを計算すれば良い。
また、上述した第2の実施の形態においては、受信語D1に基づく17個の連続したエラー・シンドロームS1〜S17のみについて計算した後、当該エラー・シンドロームS1〜S16の値に基づいて第1の判定を行い、それに続くエラー・シンドロームS17の値に基づいて第2の判定を行うようにした場合について述べたが、本発明はこれに限らず、受信語D1に基づく連続したエラー・シンドロームであれば、例えば17個のエラー・シンドロームS2〜S18について計算したり、17個のエラー・シンドロームS16〜S32について計算しても良く、その他種々の連続した17個のエラー・シンドロームについて計算し、第1の判定および第2の判定を行うようにしても良い。
さらに、第2の実施の形態においては、位数qが「256」であり、最小距離 d が「33」であるリードソロモン符号RS(255,223)の復号方法を一例として述べたが、位数q≠2、最小距離d≧4を満たせば、これに限るものでない。
(3)第3の実施の形態
第3の実施の形態においては、例えば、位数qが「2」であり、最小距離dが「7」のBCH符号(15,5)を復号処理の対象としたとき、生成多項式の根α,α2,……,α6 に対応する6個のエラー・シンドロームS1〜S6のうち、根α,α3 に対応するエラー・シンドロームS1,S3のみについて計算し、その後に誤りの有無を判定するようになされている。
2元BCH符号の場合、根α2i(l ≦2i≦ l+d−2)に対応するエラー・シンドロームは、根αi(l ≦i≦ l+d−2)、に対応するエラー・シンドロームを2乗することにより得られることが知られている(非特許文献1、pp172,(7.98)を参照)。従って、エラー・シンドロームS1が値「0」であるならば、エラー・シンドロームS2も値「0」となり、エラー・シンドロームS1が値「0」でなければ、エラー・シンドロームS2も値「0」ではない。
すなわち第3の実施の形態では、エラー・シンドロームS1およびS3が値「0」であるか否かを判定するだけで、根α,α2,α3に対応するエラー・シンドロームS1、S2、S3が値「0」であるか否かを判定したことになり、最小距離dが「4」となるBCH符号により3ビット誤り検出を実施したのと同等になる。
従って、BCH符号(15,5)の誤り訂正能力3ビットを越えない範囲の誤りについては正しく検出できることになり、エラー・シンドロームS2の計算を省略することができるので、エラー・シンドロームの計算量を更に削減することが可能となる。
それだけではなく、第3の実施の形態の場合、エラー・シンドロームS2が値「0」であるならば、エラー・シンドロームS4も値「0」となるので、エラー・シンドロームS1およびS3が値「0」であるか否かを判定するだけで、根α,α2,α3,α4 に対応するエラー・シンドロームS1、S2、S3、S4が値「0」であるか否かを判定したことになり、実際は最小距離dが「5」となるBCH符号(15,7)により4ビット誤り検出を実施したのと同等になる。
第3の実施の形態では、(1)式で示された生成多項式の根αl,αl+1,……、αl+d-2 を、l=1となるように選んだ場合(αi=α,α2,……,α6 )、エラー・シンドロームに用いる生成多項式の根の指数は、1,2,3,4,5,6となり、他のエラー・シンドロームを2乗することにより計算できるエラー・シンドロームの指数は2,4,6となる。
これに対して、(1)式で示された生成多項式の根αl,αl+1,……、αl+d-2 を、l=2となるように選んだ場合(αi=α2,α3,……,α7)、エラー・シンドロームに用いる生成多項式の根の指数は、2,3,4,5,6,7となり、他のエラー・シンドロームを2乗することにより計算できるエラー・シンドロームの指数は4,6だけとなる。
このように第3の実施の形態では、生成多項式の根αl,αl+1,……、αl+d-2 を、l=2となるように選んだ場合よりも、生成多項式の根αl,αl+1,……、αl+d-2 を、l=1となるように選んだ場合の方が、エラー・シンドローム計算の削減効果が一段と大きくなることが分かり、このような考え方を用いてエラー・シンドローム計算を省略し、省電力化を図るようになされている。
(3−1)BCH符号復号回路の構成
図5において、1は全体として第3の実施の形態におけるBCH符号復号回路を示し、例えば、位数 q が「2」であり、最小距離 d が「7」のBCH符号(15,5)でなる受信語D1を遅延回路2および第1のエラー・シンドローム演算回路3へ供給する。
第1のエラー・シンドローム演算回路3は、受信語D1を構成する生成多項式の根αl,αl+1,……、αl+d-2 を、l=1となるように選んだ場合(αi=α,α2,……,α6 )に対応する6個のエラー・シンドロームS1〜S6のうち、エラー・シンドロームS1、S3だけを計算し、そのエラー・シンドロームS1、S3を判定回路4およびエラー訂正回路6へ供給する。
このとき遅延回路2は、第1のエラー・シンドローム演算回路3において受信語D1からエラー・シンドロームS1、S3を計算している時間だけ当該受信語D1を保持し、その後に受信語D1を第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ出力する。
判定回路4は、第1のエラー・シンドローム演算回路3から供給されたエラー・シンドロームS1、S3がいずれも値「0」となっているか否かの第1の判定を行い、これを第1の判定結果X3として第2のエラー・シンドローム演算回路5およびエラー訂正回路6へ出力する。
第2のエラー・シンドローム演算回路5は、偽を意味する第1の判定結果X3を判定回路4から得ると、これまで計算していなかった残りのエラー・シンドロームS2,S4〜S6を計算し、これらをエラー訂正回路6へ供給する。
エラー訂正回路6は、全てのエラー・シンドロームS1〜S6のうち、値「0」となっていないエラー・シンドロームS1〜S6に基づいて受信語D1のエラー位置およびエラー補正値を求め、エラー位置に対するシンボル誤りについて、エラー補正値によって受信語と排他的論理和をとることにより誤り訂正処理を施し、その結果得られる誤り訂正処理後の受信語D2を後段の回路へ出力する。
ここでエラー訂正回路6は、エラー訂正能力を超えている場合や、何らかの原因によりエラー・シンドロームS1〜S6に基づいて受信語D1のエラー位置およびエラー補正値を求めることが出来ない場合、誤り訂正処理が不能であるとして、誤り訂正処理が不能であることを示すフラグを生成することにより誤り訂正不能処理を実行し、そのフラグの付加された受信語D2を後段の回路へ出力する。
この場合、BCH符号復号回路1では、例えばフレーム検出回路7がエラー訂正回路6の後段に設けられているようにすれば、誤り訂正が不能であることを示すフラグの付加された受信語D2に対してフレーム・チェック・シーケンス等を用いた誤り検出処理を行うことができるので、特に問題は生じない。
一方、第2のエラー・シンドローム演算回路5は、真を意味する第1の判定結果X3を判定回路4から得ると、未だ計算していないエラー・シンドロームS2、S4、およびS6についても値「0」であるから、エラー・シンドロームS5については計算するまでもなく値「0」であるとみなし、残りのエラー・シンドロームS2,S4〜S6についての計算を実行せずに省略する。
またエラー訂正回路6は、真を意味する第1の判定結果X3を判定回路4から得ると、エラー・シンドロームS1、S3がいずれも値「0」となっており、かつエラー・シンドロームS2、S4、およびS6についても値「0」であるから、エラー・シンドロームS5についても値「0」であるとみなし、遅延回路2から供給された受信語D1に誤りが一切存在していないものと判断してエラー無訂正処理を行い、当該受信語D1をそのまま受信語D2として後段の回路へ出力する。
(3−2)復号処理手順
このBCH符号復号回路1において、例えば、位数qが「2」であり、最小距離d が「7」であるBCH符号(15,5)の復号処理手順について、図6のフローチャートを用いて説明する。
BCH符号復号回路1は、ルーチンRT3の開始ステップから入って、次のステップSP31へ移り、受信語D1を構成する生成多項式の根αl,αl+1,……、αl+d-2 を、l=1となるように選んだ場合(αi=α,α2,……,α6 )に対応する6個のエラー・シンドロームS1〜S6のうち、エラー・シンドロームS1、S3だけを第1のエラー・シンドローム演算回路3によって計算し、次のステップSP32へ移る。
ステップSP32においてBCH符号復号回路1は、ステップSP31で計算したエラー・シンドロームS1、S3がいずれも値「0」となっているか否かを判定回路4によって判定し、これを第1の判定結果X3として出力する。
ここで肯定結果が得られると、このことは真を意味する第1の判定結果X3が得られ、すなわちエラー・シンドロームS1、S3がいずれも値「0」となっており、全てのエラー・シンドロームS1〜S6がいずれも値「0」であるとみなすことができることを表しており、このときBCH符号復号回路1は、次のステップSP33へ移る。
ステップSP33においてBCH符号復号回路1は、全てのエラー・シンドロームS1〜S6がいずれも値「0」であるとみなすことができ、受信語D1に誤りが生じていないと判断し得るので、エラー訂正回路6により、遅延回路2から供給された受信語D1をそのまま誤り訂正することなしに出力する誤り無訂正処理を実行し、当該受信語D1をそのまま受信語D2として出力し、次のステップSP39へ移って処理を終了する。
これに対してステップSP32で否定結果が得られると、このことは偽を意味する第1の判定結果X3が得られ、すなわちエラー・シンドロームS1、S3のいずれかが値「0」ではなく、受信語D1に誤りが存在していることを表しており、このときBCH符号復号回路1は次のステップSP34へ移る。
ステップSP34においてBCH符号復号回路1は、ステップSP31で計算していなかった残りのエラー・シンドロームS2,S4〜S6を第2のエラー・シンドローム演算回路5により計算し、次のステップSP35へ移る。
ステップSP35においてBCH符号復号回路1は、全てのエラー・シンドロームS1〜S6に基づいて受信語D1のエラー位置およびエラー補正値の計算をエラー訂正回路6により実行し、次のステップSP36へ移る。
ステップSP36においてBCH符号復号回路1は、ステップSP35でエラー位置およびエラー補正値を算出し得たか否かを判定する。ここで肯定結果が得られると、エラー位置およびエラー補正値を算出できたので、誤り訂正処理が可能であると判断し、このときBCH符号復号回路1は、次のステップSP37へ移る。
ステップSP37においてBCH符号復号回路1は、エラー訂正回路6により、エラー位置に対するビットの誤りについて、エラー補正値によって受信語と排他的論理和をとることにより誤り訂正処理を実行し、その結果得られる誤り訂正処理後の受信語D2を後段の回路へ出力した後、次のステップSP39へ移って処理を終了する。
これに対してステップSP36で否定結果が得られると、このことはエラー訂正能力を超えているか、或いは他の要因により、エラー訂正回路6によりエラー位置およびエラー補正値の算出が出来なかったことを表しており、このときBCH符号復号回路1は次のステップSP38へ移る。
ステップSP38においてBCH符号復号回路1は、エラー位置およびエラー補正値の算出が出来ていないので、誤り訂正処理が不能であることを示すフラグを生成する誤り訂正不能処理を実行し、そのフラグの付加された受信語D2を後段の回路へ出力した後、次のステップSP39へ移って処理を終了する。
(3−3)第3の実施の形態における作用および効果
以上の構成において、BCH符号復号回路1では、例えば、位数qが「2」であり、最小距離d が「7」であるBCH符号(15,5)の復号処理時、まず受信語D1を構成する生成多項式の根αl,αl+1,……、αl+d-2 を、l=1となるように選んだ場合(αi=α,α2,……,α6 )に対応する6個のエラー・シンドロームS1〜S6のうち、他のエラー・シンドロームを2乗することにより求められるエラー・シンドロームS2、S4、S6を除いたエラー・シンドロームS1、S3だけを計算した後、そのエラー・シンドロームS1、S3の値に基づいて受信語D1に誤りが有ったか否かを判定する。
ここでBCH符号復号回路1は、エラー・シンドロームS1、S3がいずれも値「0」となっていた場合、未だ計算していないエラー・シンドロームS2、S4およびS6についても値「0」であるから、エラー・シンドロームS5については計算するまでもなく値「0」であるとみなし、残りのエラー・シンドロームS2,S4〜S6の計算を実行せずに省略することができるので、エラー・シンドロームの計算において大幅に省電力化を図ることができる。
また、このときBCH符号復号回路1は、エラー・シンドロームS1〜S6が全て値「0」であるとみなし、受信語D1に誤りが生じていないと判断することができるので、当該受信語D1に対して誤り無訂正処理を行う。
しかしながら、エラー・シンドロームS1、S3のいずれか又は両方が値「0」ではない場合、受信語D1に誤りが生じていると判断できるため、未だ計算していない残りのエラー・シンドロームS2,S4〜S6を計算した後、全てのエラー・シンドロームS1〜S6に基づいてエラー位置計算およびエラー補正値の計算を行い、誤り訂正処理または誤り訂正不能処理を実施する。
なおBCH符号復号回路1では、誤り訂正能力を超えて誤りを検出できない場合であっても、通信においては後段ブロックにおいて誤りが発生したことを後段の誤り訂正回路(図示せず)によるフレーム・チェック・シーケンス等により検知することができるので、特に問題はない。
以上の構成によれば、BCH符号復号回路1は、例えば、位数qが「2」であり、最小距離d が「7」であるBCH符号(15,5)の受信語D1の復号処理時、当該受信語D1に基づくエラー・シンドロームS1、S3の値に基づいて誤りが無かった場合、エラー・シンドロームS2、S4〜S6の計算を省略することにより、誤り検出の精度を落とすことなく効率よく省電力化を図ることができる。
なお、上述した第3の実施の形態においては、位数qが「2」であり、最小距離 d が「7」であるBCH符号(15,5)の復号方法について説明したが、一般には、拡大体GF(2m)上の原始元αの冪αl、αl+1、αl+2、……、αl+d-2(dは≧3)を根とするGF(2)上の生成多項式により生成されるBCH符号の復号方法において、nR 個([(d−1)/2≦nR≦(d−2)])の連続する根αu、αu+1、……、αu+nR-1(l≦u≦l+d−2、l≦u+nR−1≦l+d−2)に対応するエラー・シンドロームのうち、他のエラー・シンドロームを2乗することにより求められるものを除いたエラー・シンドロームだけを計算し、その計算したエラー・シンドロームがいずれも値「0」であるか否かの第1の判定を行い、その第1の判定結果X3が偽ならば誤り有りとして、まだ計算していない残りのエラー・シンドロームを全て計算し、誤り訂正処理を実施すればよく、第1の判定結果X3が真ならば、受信語D1には誤りが生じていないと判断して誤り無訂正処理を実施する。
なお、第3の実施の形態においては、位数qが「2」であり、最小距離 d が「7」であるBCH符号(15,5)の復号方法を一例として述べたが、位数q=2、最小距離d≧3、l ≠1または位数q=2、最小距離d≧4、l =1を満たせば、これに限るものでない。
また、第3の実施の形態においては、第1の実施の形態および第2の実施の形態と組み合わせることが可能であり、その場合、第1の実施の形態および第2の実施の形態におけるBCH符号復号回路1においても、エラー・シンドロームの計算量を更に大幅に削減することができる。
(4)他の実施の形態
なお、本発明の第1の実施の形態乃至第3の実施の形態は、上述のものに限定されるものではなく、本発明の要旨を逸脱しない範囲で変更を加えることはもちろんである。
また、本発明のBCH符号復号装置においては、第1のエラー・シンドローム演算回路としての第1のエラー・シンドローム演算回路3、第1の判定回路としての判定回路4、誤り訂正処理回路および誤り無訂正処理回路としてのエラー訂正回路6によって構成するようにした場合について述べたが、本発明はこれに限らず、その他種々の回路構成でなる第1のエラー・シンドローム演算回路、第1の判定回路、誤り訂正処理回路および誤り無訂正処理回路によってBCH符号復号装置を構成するようにしても良い。
さらに、本発明のBCH符号復号装置においては、第1のエラー・シンドローム演算回路としての第1のエラー・シンドローム演算回路3、第2のエラー・シンドローム演算回路としての第2のエラー・シンドローム演算回路5、第1の判定回路および第2の判定回路としての判定回路4、誤り訂正処理回路、誤り無訂正処理回路および誤り訂正不能処理回路としてのエラー訂正回路6によって構成するようにした場合について述べたが、本発明はこれに限らず、その他種々の回路構成でなる第1のエラー・シンドローム演算回路、第2のエラー・シンドローム演算回路、第1の判定回路、第2の判定回路、誤り訂正処理回路、誤り無訂正処理回路および誤り訂正不能処理回路によってBCH符号復号装置を構成するようにしても良い。