(57)【特許請求の範囲】
【請求項１】
CRC 方式によりシリアルデータの受信符号の剰余を算出するCRC 演算手段と、
該CRC 演算手段で算出された剰余のパターンが、受信符号に単一誤りが含まれる場合に前記CRC 演算手段により算出される剰余のパターンのデータのうち、単一誤りの位置に応じて相違するパターンのいずれに該当するかを検知して、ビットデータとして出力するパターン検知手段と、
前記シリアルデータの受信符号をパラレルデータに変換するシリアルパラレル変換手段と、
前記パラレルデータの各ビットと前記パターン検知手段から出力されたビットデータの各ビットとにより並列に誤り訂正する誤り訂正手段とを含むことを特徴とする巡回符号を用いた誤り訂正回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、巡回符号を用いた誤り訂正回路に関する。
【０００２】
【従来の技術】
伝送路により伝送されてきた受信信号等に含まれる誤りを検出する方法の一つとして、巡回符号を用いたＣＲＣ  （Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ  ）誤り検出法が知られている。この誤り検出法は以下のようにして符号誤りを検出している。すなわち、受信多項式をＹ（ｘ）、生成多項式をＧ（ｘ）、余剰多項式をＳ（ｘ）、符号多項式をＷ（ｘ）、誤り多項式をＥ（ｘ）とするとき、Ｙ（ｘ）をＧ（ｘ）で割った余りＳ（ｘ）は、
Ｓ（ｘ）＝Ｙ（ｘ）    ｍｏｄ  Ｇ（ｘ）                            ・・・（１）
となり、Ｇ（ｘ）がｍ次以下の場合Ｓ（ｘ）はｍ−１次以下となる。Ｙ（ｘ）＝Ｗ（ｘ）＋Ｅ（ｘ）であるので、式（１）  は、
Ｓ（ｘ）＝｛Ｗ（ｘ）＋Ｅ（ｘ）｝    ｍｏｄ  Ｇ（ｘ）                  ・・・（２）
となる。Ｗ（ｘ）はＧ（ｘ）で割り切れるように生成されるので、式（２）  は、
Ｓ（ｘ）＝Ｅ（ｘ）    ｍｏｄ  Ｇ（ｘ）                            ・・・（３）
となる。
【０００３】
この剰余多項式Ｓ（ｘ）は、シンドローム多項式と呼ばれ、式（２）  から分かるように符号多項式Ｗ（ｘ）に影響されず、誤り多項式Ｅ（ｘ）のみにより決定される。誤りを検知する場合には、実際に求めたＳ（ｘ）が誤りを含んでいない場合のＳ（ｘ）に一致するか否かを調べればよい。また、誤りを修正する場合には、誤りを含んでいる場合のＳ（ｘ）を予め誤りを含む次数ごとに求めておき、実際に求めたＳ（ｘ）と予め求めておいた誤りを含んでいる場合のＳ（ｘ）とを比較することによりどの次数でエラーが発生しているかを特定して誤りを修正すればよい。
【０００４】
従来、例えば、特許文献１に開示されている無線通信装置の誤り訂正回路では、誤りを含んだ受信符号に対する剰余演算結果を予め求めてその剰余演算結果と誤り位置を示すビット位置とをテーブルデータとして準備しておき、実際に受信した受信符号の剰余演算結果を算出したとき、その算出した剰余演算結果に一致する剰余演算結果をテーブルデータから検索し、一致する剰余演算結果に対応する誤りビット位置のビットを修正していた。
【０００５】
【特許文献１】
特開平７−２２１７１８号公報。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記の誤り訂正回路は、誤りビット位置を求めることを第１の目的とし、テーブルデータを用いて受信符号の誤りビット位置を特定した後に、その誤りビット位置に基づいて受信符号の誤りを修正するものであるため、誤りを修正することを第１の目的とする場合には効率的でないという問題があった。受信符号の誤りを修正することを第１の目的とする場合には、誤りビット位置を示すビット位置データそのものは特に必要としないからである。
【０００７】
また、上記の誤り訂正回路では、受信符号の誤りビット位置を特定する場合に、受信符号を生成多項式で剰余演算して得た剰余データとテーブルデータの各剰余演算結果とを逐次比較していく必要があるため、時間を要するという問題があった。テーブルデータは受信符号に対する１ビット誤り時の全受信符号に対する剰余演算結果が入っているため、受信符号長が長くなるとテーブルデータが増大する。例えば、受信符号の符号長を１９６  ビットとすると、テーブルデータは１９６  エントリーが必要となり、このテーブルデータと逐次比較する為には膨大な時間を必要としてしまう。
【０００８】
本発明はこのような従来技術の欠点を解消し、誤り訂正に要する時間を大幅に短縮した巡回符号の誤り訂正回路を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明は上記の問題を解決するために、ＣＲＣ  方式により受信符号の剰余を算出するＣＲＣ  演算手段と、ＣＲＣ  演算手段で算出された剰余のパターンが、受信符号に単一誤りが含まれる場合にＣＲＣ  演算手段により算出される剰余のパターンであって単一誤りの位置に応じて相違するパターンのいずれに該当するかを検知するパターン検知手段と、パターン検知手段により検知されたパターンに対応する誤り位置にある受信符号の単一誤りを修正する誤り修正手段とを含むことを特徴とする。
【００１０】
【発明の実施の形態】
次に添付図面を参照して本発明による巡回符号を用いた誤り訂正回路の実施例を詳細に説明する。図１は、本発明による誤り訂正回路の実施例を示すブロック図である。この誤り訂正回路は、受信符号１００  を（７，４）  ハミング符号とした場合の例であり、ＣＲＣ  演算器１０、シリアルパラレル変換器１２、論理回路１４−１〜１４−７、レジスタ１６−１〜１６−７および排他的論理和回路１８−１〜１８−７を含む。なお、各回路にクロック信号、タイミング信号、制御信号等を供給する制御回路は省略してある。また、接続線に付した記号はその接続線に現れる信号を示す。
【００１１】
受信符号１００  である（７，４）  ハミング符号は、図２に示すように情報ビット（ビット１〜４）と検査ビット（ビット５〜７）から構成される。受信符号１００  は、ＣＲＣ  演算器１０とシリアルパラレル変換器１２とに、ビット１からビット７まで順々にシリアルに入力される。なお、受信符号１００  がパラレルデータである場合には、パラレルデータをシリアルデータに変換するパラレルシリアル変換器を誤り訂正回路の入力側に設け、このパラレルシリアル変換器の出力をＣＲＣ  演算器１０およびシリアルパラレル変換器１２に入力すればよい。
【００１２】
ＣＲＣ  演算回路１０は、ＣＲＣ  方式により受信符号１００  の剰余を算出する回路である。具体的には、受信符号１００  を受信多項式Ｙ（ｘ）で表わすとき、Ｙ（ｘ）を３次生成多項式Ｇ（ｘ）（＝ｘ３＋ｘ＋１  ）により割り算し、割り算の余りＲ１〜Ｒ３を信号１０２  〜１０６  として出力する３次生成多項式の割り算回路である。なお、（Ｒ１，Ｒ２，Ｒ３）はシンドロームと呼ばれるものである。
【００１３】
図３は、ＣＲＣ  演算回路１０の一構成例を示すブロック図である。この例のＣＲＣ  演算回路は、排他的論理和回路２０、２４、フリップフロップ２２、２６、２８から構成される一般的な割り算回路であり、排他的論理和回路２０に受信符号１２０  が入力されると、フリップフロップ２８から割り算の商１２６  を出力する。受信符号１２０  の最後のビットが入力され、排他的論理和回路２０、２４での演算が完了し、フリップフロップ２２、２６、２８が更新された時点で、フリップフロップ２２、２６、２８の内容はそれぞれ割り算の余り（剰余）Ｒ１、Ｒ２、Ｒ３となる。
【００１４】
図４は、ＣＲＣ  演算回路１０に誤りを含まない受信符号１００  およびビット１〜７のいずれか１箇所に誤りを含む受信符号１００  が入力された場合に得られる割り算余りＲ１〜Ｒ３を示したものである。なお、図４における「ＡＬＬ  １  」は、ＣＲＣ  演算回路１０における図３のフリップフロップ２２、２６、２８に対応するフリップフロップの初期値が全て１に設定された場合、「ＡＬＬ  ０  」は全て０に設定された場合の割り算余りを示す。例えば、初期値がＡＬＬ  １  の場合、ビット１に誤りを含む受信符号１００  に対する（Ｒ１，Ｒ２，Ｒ３）は（０，１，０  ）である。
【００１５】
なお、割り算余りＲ１〜Ｒ３は余り多項式Ｓ（ｘ）の係数を示す。余り多項式Ｓ（ｘ）は、前述の式（３）  に示すように、誤り多項式Ｅ（ｘ）のみを図３に示す割り算回路で割ったときの余りであり、１箇所だけに誤りを含む多項式に対する剰余となる。ハミング距離が３以上の符号では、ある次数に１ビット誤りを含むときの剰余は、他の次数に１ビット誤りを含むときの剰余と必ず異なる。図４の（Ｒ１，Ｒ２，Ｒ３）は、誤りビット位置ごとに相違している。したがって、１ビット誤りの位置ごとに剰余を予め求めておけば、入力された受信符号の剰余に対応する誤り位置を直ちに特定することができる。
【００１６】
ＣＲＣ  演算器１０に接続されている論理回路１４−１〜１４−７は、ＣＲＣ  演算器１０から出力される信号１０２  〜１０６  が示すＲ１〜Ｒ３について論理演算することにより、（Ｒ１，Ｒ２，Ｒ３）のパターンを検知するパターン検知回路であり、検知するパターンは論理回路ごとに予め定められている。例えば、論理回路１４−１はパターン（０，１，０  ）を検知するものであり、論理回路１４−２はパターン（０，０，０  ）を検知するものである。この場合、受信符号１００  における誤り位置とパターンは１：１に対応するので、論理回路１４−１〜１４−７は、受信符号１００  の誤り位置を検知する誤り位置検知回路であるともいえる。
【００１７】
論理回路１４−１〜１４−７は、検知した結果を検知信号１０８−１  〜１０８−７  として出力する。検知信号１０８−１  〜１０８−７  は、本実施例では、パターンが検知されたとき１に設定され、検知されないとき０に設定されるものとする。なお、論理回路１４−１〜１４−７は、ＣＲＣ  演算器１０におけるフリップフロップが初期値１に設定される場合の（Ｒ１，Ｒ２，Ｒ３）のパターンを検知するものとする。
【００１８】
論理回路１４−１〜１４−７に接続されているレジスタ１６−１〜１６−７は、論理回路１４−１〜１４−７からの検知信号１０８−１  〜１０８−７  を一時保持するフリップフロップであり、検知信号１０８−１  〜１０８−７  が１のとき出力１１０−１  〜１１０−７  を１に設定し、０のとき０に設定する。一方、シリアルパラレル変換器１２は、受信符号１００  をシリアルデータからパラレルデータに変換して内蔵するレジスタに一時保管し、制御部が指示するタイミングに従ってビット１〜７を信号１１２−１  〜１１２−７  として出力するものである。
【００１９】
排他的論理和回路１８−１〜１８−７の一方の入力端子はシリアルパラレル変換器１２に接続され、排他的論理和回路１８−１〜１８−７の他方の入力端子はレジスタ１６−１〜１６−７に接続されている。排他的論理和回路１８−１〜１８−７は、受信符号１００  に含まれる誤りビットを修正する回路であり、シリアルパラレル変換器１２から出力される信号１１２−１  〜１１２−７  とレジスタ１６−１〜１６−７の出力１１０−１  〜１１０−７  との排他的論理和を受信符号１００  のビットごとに演算するものである。
【００２０】
例えば、排他的論理和回路１８−１は、レジスタ１６−１の出力１１０−１  が１であるとき、シリアルパラレル変換器１２の出力信号１１２−１  が１であるときにはこれを０に、０であるときにはこれを１に変換して誤りを修正して出力する。ただし、出力１１０−１  が０であるときには、出力信号１１２−１  を修正することなくそのまま出力する。他の排他的論理和回路１８−２〜１８−７も、同様に動作する。このように、排他的論理和回路１８−１〜１８−７は、論理回路１４−１〜１４−７により検知された誤り位置のビットを修正する。
【００２１】
図１の誤り訂正回路の動作を説明すると、受信符号１００  はＣＲＣ  演算器１０とシリアルパラレル変換器１２とに入力される。シリアルパラレル変換器１２では、符号長が７ビットの受信符号１００  をシリアルデータからパラレルデータに変換して内蔵するレジスタに一時保持し、保持した受信符号１００  のビット１〜７をそれぞれ信号１１２−１  〜１１２−７  として出力する。信号１１２−１  〜１１２−７  は排他的論理和回路１８−１〜１８−７に入力される。
【００２２】
一方、ＣＲＣ  演算器１０では、受信符号１００  に対して所定の割り算を施し、受信符号１００  の最終ビットが入力された時点で割り算の余りＲ１〜Ｒ３を信号１０２  〜１０６  として出力する。なお、余りＲ１〜Ｒ３のパターン（Ｒ１，Ｒ２，Ｒ３）は、図４に示すように、受信符号１００  における単一誤りのビット位置に応じて異なる。信号１０２  〜１０６  は論理回路１４−１〜１４−７にパラレルに入力される。
【００２３】
論理回路１４−１〜１４−７では、信号１０２  〜１０６  に基づいて所定の論理演算を行い、論理回路ごとに予め定められているパターン（Ｒ１，Ｒ２，Ｒ３）の有無を検知する。そして、受信符号１００  のｎビット目（１≦ｎ≦７）に誤りが含まれる場合、論理回路１４−ｎは出力する検知信号１０８−ｎ  を１に設定し、その他の論理回路は出力する検知信号出力を０に設定する。ただし、受信符号１００  に誤りが含まれていない場合、全ての論理回路１４−１〜１４−７は、出力する検知信号１０８−１  〜１０８−７  を０に設定する。検知信号１０８−１  〜１０８−７  はレジスタ１６−１〜１６−７に入力される。
【００２４】
レジスタ１６−１〜１６−７では、論理回路１４−１〜１４−７から出力される検知信号１０８−１  〜１０８−７  を一時保持し、これを信号１１０−１  〜１１０−７  として出力する。信号１１０−１  〜１１０−７  は、対応する検知信号１０８−１  〜１０８−７  が１のとき１となり、０のとき０となる。この信号１１０−１  〜１１０−７  およびシリアルパラレル変換器１２から出力される信号１１２−１  〜１１２−７  は、同期して排他的論理和回路１８−１〜１８−７にそれぞれ入力される。排他的論理和回路１８−１〜１８−７では、信号１１２−１  〜１１２−７  と信号１１０−１  〜１１０−７  との排他的論理和をビットごとに演算し、演算結果を信号１１４−１  〜１１４−７  として出力する。
【００２５】
例えば、ｎ番目のビットに誤りを含む受信符号１００  が入力された場合、論理回路１４−ｎではｎ番目に誤りがある場合のパターン（Ｒ１，Ｒ２，Ｒ３）を検知して検知信号１０８−ｎ  を１とするので、レジスタ１６−ｎの出力信号１１０−ｎ  は１となる。排他的論理和回路１８−ｎには、信号１１０−ｎ  および受信符号１００  のｎ番目のビットである信号１１２−ｎ  が入力される。排他的論理和回路１８−ｎでは、信号１１０−ｎ  が１であるので、信号１１２−ｎ  が１である場合にはこれを０に、０である場合はこれを１に修正して信号１１４−ｎ  として出力する。
【００２６】
このとき、論理回路１４−ｎ以外の論理回路では検知信号を０に設定するので、レジスタ１６−ｎ以外のレジスタの出力信号は全て０となる。したがって、排他的論理和回路１８−ｎ以外の排他的論理和回路では、シリアルパラレル変換器１２から入力される信号をそのまま出力する。このようにして、排他的論理和回路１８−１〜１８−７では、受信符号１００  に含まれる単一誤りを修正し、信号１１４−１  〜１１４−７  からなる修正符号１１４  を出力する。
【００２７】
なお、本実施例は、（７，４）  ハミング符号を用いた場合の誤り訂正回路であるが、ハミング距離が３以上離れているどの様な巡回符号に対しても適用できる。生成多項式がＣＣＩＴＴ  勧告の１６ｂｉｔ  生成多項式である場合にも当然適用できる。また、ハミング距離が５以上離れていれば、２ｂｉｔ  誤り時の修正も可能となるが、このような場合にも本実施例を適用することが可能である。
【００２８】
また、受信符号１００  が１ビット誤りを含む場合には、図１のＣＲＣ  演算器１０により算出された（Ｒ１，Ｒ２，Ｒ３）は、図４に示す（Ｒ１，Ｒ２，Ｒ３）のいずれかに該当する。しかし、受信符号１００  が複数ビットの誤りを含む場合には、図４に示す（Ｒ１，Ｒ２，Ｒ３）のいずれにも該当しない。ただし、本実施例では、Ｒ１〜Ｒ３の全状態を使用しているので、本実施例の（７，４）  符号は２ビット以上の誤りの場合、誤り修正となる。検査ビット長が長い場合には、ＣＲＣ  演算器１０により算出された（Ｒ１，Ｒ２，Ｒ３）が、図４に示す（Ｒ１，Ｒ２，Ｒ３）のいずれかに該当するか否かを検出することにより、２ビット以上の誤りか否かを判定することができる。
【００２９】
【発明の効果】
以上説明したように本発明による巡回符号を用いた誤り訂正回路によれば、単一誤り時におけるシンドロームを判定することにより誤り位置を検知する検知手段を設け、ＣＲＣ  演算手段によりシンドロームを求めたとき、検知手段によりそのシンドロームに対応する誤り位置を直ちに検知することができるので、誤り修正処理を高速に行うことが可能となる。
【図面の簡単な説明】
【図１】本発明による誤り訂正回路の実施例を示すブロック図である。
【図２】（７，４）  ハミング符号のビット配列を示す図である。
【図３】図１の誤り訂正回路におけるＣＲＣ  演算器の一例を示すブロック図である。
【図４】図１の誤り訂正回路におけるＣＲＣ  演算器から出力される剰余を示す図である。
【符号の説明】
１０  ＣＲＣ  演算器
１２  シリアルパラレル変換器
１４−１〜１４−７  論理回路
１６−１〜１６−７  レジスタ
１８−１〜１８−７  排他的論理和回路
【図１】
0003579039.tif 000002
【図２】
0003579039.tif 000003
【図３】
0003579039.tif 000004
【図４】
0003579039.tif 000005