(57)【要約】【課題】処理時間が短い誤り訂正符号回路を提供する。【解決手段】データ遅延回路１１０はＦＥＣ入力データを遅延させて出力する。ＦＥＣ入力位相制御回路１２０は、ＦＥＣ入力データのデータフィールドを先頭から所定バイトずつ区切ってなるブロックの各先頭が検出された所定時間後に信号Ｔ１を出力し、該データフィールド終端が検出されると信号Ｔ２を生成し、且つ、ＦＥＣ入力データ終端が入力されてから所定時間後に信号Ｃ０を出力する。ＲＳ入力位相制御回路１３０は、信号Ｔ１を入力したときは遅延データを出力し、信号Ｔ２を入力したときは次の信号Ｔ１が入力されるまでパディングを出力する。ＦＥＣ演算回路１４１〜１４３は、入力データおよびパディングからパリティデータを演算してパリティ蓄積回路１５０に蓄積する。ＦＥＣ出力位相制御回路１６０は信号Ｃ０が入力されると出力を遅延データから蓄積パリティデータに切り換える。【選択図】図１
2008160633.tif 000002
【特許請求の範囲】
【請求項１】
入力データ列のデータフィールドを先頭から所定データ長ずつ区切っていくことによってブロックを生成し、該ブロック毎に誤り訂正符号演算を施すことによってパリティデータを生成し、該パリティデータを該入力データ列に挿入する誤り訂正符号回路であって、
前記データフィールドを入力し、所定遅延時間だけ遅延させて出力するデータ遅延回路と、
前記ブロックの各先頭データが入力されたタイミングに基づいてデータ挿入タイミング信号を生成し、前記データフィールドの終端が入力されたタイミングに基づいてパディング挿入タイミング信号を生成し、且つ、前記入力データ列の終端が入力されたタイミングおよび前記ブロックの個数に基づいてパリティリードタイミング制御信号を生成する第１入力位相制御回路と、
前記データ挿入タイミング信号が与えるタイミングに基づいて前記データ遅延回路から前記ブロックを１個ずつ読み出すとともに出力する処理と、該ブロックが前記所定データ長よりも短い場合に前記パディング挿入タイミング信号が与えるタイミングに基づいてパディングを出力する処理とを行う入力制御部を複数個有する第２入力位相制御回路と、
対応する前記入力制御部が出力した前記ブロックの前記パリティデータを算出する複数の演算回路と、
前記パリティデータを蓄積するパリティ蓄積回路と、
前記パリティリードタイミング制御信号に基づいて、前記データ遅延回路から出力された前記データフィールドと前記パリティ蓄積回路から読み出された前記パリティデータとを含む出力データ列を生成する出力位相制御回路と、
を有することを特徴とする誤り訂正符号回路。
【請求項２】
前記所定遅延時間が、前記所定データ長に対応する伝送時間であることを特徴とする請求項１に記載の誤り訂正符号回路。
【請求項３】
前記第１入力位相制御回路が、前記先頭データを入力してから、前記所定遅延時間経過後に、前記データ挿入タイミング信号を出力することを特徴とする請求項１または２に記載の誤り訂正符号回路。
【請求項４】
前記第１入力位相制御回路が、前記データフィールドの終端を入力したタイミングで、前記パディング挿入タイミング信号を出力することを特徴とする請求項１〜３のいずれかに記載の誤り訂正符号回路。
【請求項５】
前記第１入力位相制御回路が、前記入力データ列の終端が入力されてから、前記所定遅延時間が経過し且つ前記データフィールドの終端と前記パリティデータの先頭との間に挿入されるデータに対応する伝送所要時間が経過した後に、前記パリティリードタイミング制御信号を出力することを特徴とする請求項１〜４のいずれかに記載の誤り訂正符号回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ブロック符号を用いて誤り訂正符号化を行う、誤り訂正符号回路に関する。この発明は、例えば、リードソロモン符号化されたデータをＩＥＥＥ８０２．３勧告に準拠したフレームに格納する回路に適用することができる。
【背景技術】
【０００２】
デジタルデータの通信や記録を行う場合には、ノイズ等に起因してビット誤りが発生する場合がある。このような誤りを検出・訂正するための技術の一つとして、前方誤り訂正（Forward Error Correction:FEC）が知られている。前方誤り訂正は、冗長ビットを用いて、伝送データに発生する誤りビットを訂正する技術である。以下、ＦＥＣを採用した通信フレームを、ＦＥＣフレームと記す。
【０００３】
また、ＦＥＣを行う技術の一つとして、ブロック符号技術が知られている。この技術では、通信或いは記録するデータを先頭から所定データ長ずつ区切っていくことによってブロックを生成し、ブロック毎に誤り訂正符号演算を施すことによってパリティデータ（すなわち誤り訂正符号）を生成する。ブロック符号を用いた誤り訂正技術は、例えばデータ通信等で採用されている。
【０００４】
さらに、ブロック符号の一つとして、リードソロモン符号が知られている。リードソロモン符号を用いた誤り訂正技術には、高度な誤り訂正能力を有する反面、演算処理が複雑で処理時間が長くなるという欠点がある。
【０００５】
リードソロモン符号等のブロック符号誤り訂正技術をデータ通信に用いた規格としては、例えば、ＩＥＥＥ(Institute of Electrical and Electronic Engineers)の８０２．３ａｈ勧告が知られている。ＩＥＥＥ８０２．３ａｈ勧告は、ＥＦＭ(Ethernet(登録商標）in the First Mile)とも称され、例えばＧＥ−ＰＯＮ(Gigabit Ethernet(登録商標）-Passive Optical Network)で採用されている。
【０００６】
図７は、ＩＥＥＥ８０２．３ａｈ勧告に準拠したＦＥＣフレームの構造を示す概念図である。図７において、Ｓ＿ＦＥＣは、ＦＥＣフレームの開始を示す特殊符号である。ＰＲＥＡＭＢＬＥ／ＳＬＤは、ＦＥＣフレームの伝搬速度と受信側ノードの処理速度とを同期させるために使用するフィールドであり、‘０’と‘１’との繰り返しからなる部分と、‘１’が２ビット連続した部分とを有する。ＦＲＡＭＥ／ＦＣＳは、ＦＥＣフレームが送信するユーザデータとＣＲＣ(Cyclic Redundancy Check)ビットとを格納するフィールド、すなわちデータフィールドである。１番目のＴ＿ＦＥＣは、ＦＲＡＭＥ／ＦＣＳフィールドの終了を示す特殊符号である。ＰＡＲＩＴＹは、パリティデータを格納するフィールドである。そして、２番目のＴ＿ＦＥＣは、ＦＥＣフレームの終了を示す特殊符号である。
【０００７】
ブロック符号を用いた誤り訂正符号回路は、例えば下記特許文献１、２に開示されている。
【特許文献１】特開２００２−７６９０９号公報
【特許文献２】特開２００４−１２０４１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、上述の文献１、２に開示された誤り訂正符号回路は、処理時間が遅いという欠点がある。
【０００９】
特に、ブロック符号としてリードソロモン符号を使用する場合、上述のように処理が複雑であるため、転送のレイテンシ（ノードがフレームを入力してから出力するまでの時間）が非常に長くなり、ネットワーク輻輳等の原因になっていた。
【００１０】
また、ＩＥＥＥ８０２．３ａｈでは、データ長が２３９バイトに満たない場合は該データの前にパディング挿入（値‘０’を敷き詰めること）を施して２３９バイト化した後で誤り訂正符号化を実施するように規定されているため、データ長が２３９バイトのときと２３９バイト未満のときとで処理が異なり、処理時間が長くなる原因になっていた。
【００１１】
この発明の課題は、処理時間が短い誤り訂正符号回路を提供することにある。
【課題を解決するための手段】
【００１２】
この発明は、入力データ列のデータフィールドを先頭から所定データ長ずつ区切っていくことによってブロックを生成し、ブロック毎に誤り訂正符号演算を施すことによってパリティデータを生成し、パリティデータを入力データ列に挿入する誤り訂正符号回路に関する。
【００１３】
そして、データフィールドを入力し、所定遅延時間だけ遅延させて出力するデータ遅延回路と、ブロックの各先頭データが入力されたタイミングに基づいてデータ挿入タイミング信号を生成し、データフィールドの終端が入力されたタイミングに基づいてパディング挿入タイミング信号を生成し、且つ、入力データ列の終端が入力されたタイミングおよびブロックの個数に基づいてパリティリードタイミング制御信号を生成する第１入力位相制御回路と、データ挿入タイミング信号が与えるタイミングに基づいてデータ遅延回路からブロックを１個ずつ読み出すとともに出力する処理と、ブロックが所定データ長よりも短い場合にパディング挿入タイミング信号が与えるタイミングに基づいてパディングを出力する処理とを行う入力制御部を複数個有する第２入力位相制御回路と、対応する入力制御部が出力したブロックのパリティデータを算出する複数の演算回路と、パリティデータを蓄積するパリティ蓄積回路と、パリティリードタイミング制御信号に基づいて、データ遅延回路から出力されたデータフィールドとパリティ蓄積回路から読み出されたパリティデータとを含む出力データ列を生成する出力位相制御回路とを有する。
【発明の効果】
【００１４】
この発明に係る誤り訂正符号回路は、各ブロックのパリティ演算と並行して他のブロックのパディング付加やパリティ演算等を行うことができ、したがって処理時間が短い。
【発明を実施するための最良の形態】
【００１５】
以下、この発明の実施の形態について、図面を用いて説明する。なお、図中、各構成成分の大きさ、形状および配置関係は、この発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は単なる例示にすぎない。
【００１６】
第１の実施形態
この発明の第１の実施形態に係る誤り訂正符号回路について、図１〜図４を用いて説明する。この実施形態は、ブロック符号としてリードソロモン符号を採用した場合の例である。
【００１７】
図１は、この実施形態に係る誤り訂正符号回路１００の構成を概略的に示すブロック図である。図１に示したように、この実施形態の誤り訂正符号回路１００は、データ遅延回路１１０と、ＦＥＣ入力位相制御回路１２０と、ＲＳ（リードソロモン、以下同じ）入力位相制御回路１３０と、第１〜第３ＦＥＣ演算回路１４１〜１４３と、パリティ蓄積回路１５０と、ＦＥＣ出力位相制御回路１６０とを備える。
【００１８】
データ遅延回路１１０は、外部からデータ列（ＦＥＣ入力データ）を入力し、所定遅延時間だけ遅延させて、ＲＳ入力位相制御回路１３０およびＦＥＣ出力位相制御回路１６０に出力する。所定遅延時間は、１回の誤り訂正符号処理で使用するブロックのデータ長に対応する時間である。この実施形態では、該データ長を２３９バイトとし、該遅延時間を動作クロックの２３９サイクルとする。各ブロックは、ＦＥＣ入力データのデータフィールド（図７のＦＲＡＭＥ／ＦＣＳに格納されるデータの格納領域）に格納されたデータを先頭から２３９バイトずつ区切ることによって、得られる。なお、ＦＥＣ入力データの最後のブロックが２３９バイトに満たない場合があるが、かかるブロックも１個のブロックとして扱われる。
【００１９】
ＦＥＣ入力位相制御回路１２０は、データ挿入タイミング生成部１２１と、パディング挿入タイミング生成部１２２と、パリティリードタイミング生成部１２３とを有する。
【００２０】
データ挿入タイミング生成部１２１は、ＦＥＣ入力データを用いて、データ挿入タイミング信号Ｔ１を生成・出力する。データ挿入タイミング信号Ｔ１は、誤り訂正符号処理で使用するブロックの各先頭バイトが入力されたタイミングに基づいて生成される。データ挿入タイミング生成部１２１は、各先頭バイトを入力してから、２３９サイクル経過後に、データ挿入タイミング信号Ｔ１を出力する。
【００２１】
パディング挿入タイミング生成部１２２は、パディング挿入タイミング信号Ｔ２を生成・出力する。パディング挿入タイミング信号Ｔ２は、データフィールドの終端が入力されたタイミングに基づいて生成される。パディング挿入タイミング生成部１２２は、ＦＥＣ入力位相制御回路１２０にＦＥＣ入力データの終端が入力されたタイミングで、パディング挿入タイミング信号Ｔ２を出力する。
【００２２】
パリティリードタイミング生成部１２３は、パリティリードタイミング制御信号Ｃ０を生成・出力する。パリティリードタイミング制御信号Ｃ０は、ＦＥＣ入力データの終端が入力されたタイミングを示す信号Ｃ１と、ブロックの個数を示す信号Ｃ２とを含む。この実施形態では、各ブロックの先頭バイトが入力された回数を検出することにより、ブロックの個数を判断する。信号Ｃ１は、ＦＥＣ入力位相制御回路１２０にブロックＤ♯７の終端が入力されてから２３９サイクルが経過し、さらに、一番目のＴ＿ＦＥＣに対応するサイクル数（ＩＥＥＥ８０２．３では６サイクルまたは７サイクルと規定されいるが、ここでは６サイクルとする）経過した後に、出力される。
【００２３】
ＲＳ入力位相制御回路１３０は、データ挿入タイミング信号Ｔ１およびパディング挿入タイミング信号Ｔ２を入力する。このＲＳ入力位相制御回路１３０は、第１〜第３ＲＳ入力制御部１３１〜１３３を有する。データ挿入タイミング信号Ｔ１がＲＳ入力位相制御部１３０に入力されると、いずれかのＲＳ入力制御部１３１〜１３３が、データ遅延回路１１０から出力されたブロック（２３９バイト）を入力して、対応するＦＥＣ演算回路１４１〜１４３に出力する。また、第１〜第３ＲＳ入力制御部１３１〜１３３は、パディング挿入タイミング信号Ｔ２のみが入力されたとき、パディングを生成・出力する。
【００２４】
第１〜第３ＦＥＣ演算回路１４１〜１４３は、リードソロモン符号化技術を用いて、第１〜第３ＲＳ入力制御部１３１〜１３３が出力したブロックのリードソロモン符号演算処理を実施する。
【００２５】
パリティ蓄積回路１５０は、第１〜第３ＦＥＣ演算回路１４１〜１４３が出力した被処理データからパリティデータを抜き出して蓄積する。
【００２６】
ＦＥＣ出力位相制御回路１６０は、パリティリードタイミング制御信号Ｃ０（信号Ｃ１，Ｃ２）に基づいて、データ遅延回路１１０から出力されたＦＥＣ入力データに、パリティ蓄積回路１５０から読み出されたパリティデータを挿入する。ＦＥＣ出力位相制御回路１６０は、パリティリード制御部１６１と、出力データ選択部１６２とを有する。出力データ選択部１６２は、パリティリード制御部１６１の制御に基づき、データ遅延回路１１０から出力されたＦＥＣ入力データまたはパリティ蓄積回路１５０から読み出されたパリティデータの一方を、選択的に出力する。また、ＦＥＣ出力位相制御回路１６０は、出力されるフレームに、ＦＥＣ符号化されたフレームであることを示すＳ＿ＦＥＣ、Ｔ＿ＦＥＣ（１番目）、Ｔ＿ＦＥＣ（２番目）を付加する。
【００２７】
次に、図１に示した誤り訂正符号回路１００の全体的な動作について、図２〜図４を用いて説明する。ここでは、ＦＥＣ入力データのデータフィールド長が、１５４３バイトの場合（ＩＥＥＥ８０２．３ａｈ勧告に規定された最大フレーム長に対応する場合）と、２３９バイト以下である場合とに分けて説明する。
【００２８】
図２は、１５４３バイトのＦＥＣ入力データを符号化する場合の、誤り訂正符号回路１００の動作を説明するためのタイミングチャートである。
【００２９】
まず、誤り訂正符号回路１００に、ＦＥＣ入力データが、入力される。図２に示したように、ＦＥＣ入力データは、／Ｉ／パターン、データフィールド（プリアンブル７バイト＋ユーザデータ１５３６バイト）、／Ｔ／パターン（１バイト）および／Ｒ／パターン（１バイト）を含む。ここで、プリアンブルには、１バイトの／Ｓ／パターンが含まれる。ユーザデータ１５３６バイトは、７個のブロックＤ♯１〜Ｄ♯７を含み、Ｄ♯１〜Ｄ♯６は２３９バイト、Ｄ♯７は１０９バイトである。
【００３０】
最初にＦＥＣ入力データが、データ遅延回路１１０およびＦＥＣ入力位相制御回路１２０に取り込まれる。
【００３１】
データ遅延回路１１０は、図２に示したように、ＦＥＣ入力データを、ブロック１個分に相当する時間すなわち２３９サイクル遅延させて、出力する。
【００３２】
ＦＥＣ入力位相制御回路１２０は、ＦＥＣ入力データを、データ挿入タイミング生成部１２１と、パディング挿入タイミング生成部１２２と、パリティリードタイミング生成部１２３とに供給する。
【００３３】
データ挿入タイミング生成部１２１は、例えばプリアンブル内の／Ｓ／パターンを検出することにより、データフィールドの先頭バイト（すなわち最初のブロックＤ♯１の先頭バイト）を検出する。また、データ挿入タイミング生成部１２１は、ブロックＤ♯１の先頭バイトが検出された後のサイクル数から、ブロックＤ♯２〜Ｄ♯７の先頭バイトを検出する。そして、データ挿入タイミング生成部１２１は、各ブロックＤ♯１〜Ｄ♯７の先頭バイトが検出されたタイミングからそれぞれ２３９サイクル経過後に、データ挿入タイミング信号Ｔ１を出力する。したがって、データ挿入タイミング信号Ｔ１は、データ遅延回路１１０がブロックＤ♯１〜Ｄ♯７の先頭ビットを出力するタイミングと同じタイミングで、出力される。／Ｓ／パターンを検出することによってデータフィールドの先頭を検出する方法は、ＩＥＥＥ８０２．３に規定されている。
【００３４】
パディング挿入タイミング生成部１２２は、例えばＦＥＣ入力データの／Ｔ／、／Ｒ／の連続パターンを検出することにより、データフィールドの終端（すなわち、ブロックＤ♯７の終端）を検出する。そして、パディング挿入タイミング生成部１２２は、ブロックＤ♯７の終端検出タイミングで、パディング挿入タイミング信号Ｔ２を出力する（図２参照）。周知のように、ＩＥＥＥ８０２．３ａｈでは、ブロックのデータ長が２３９バイトに満たない場合は、そのブロックの先頭側にパディングを挿入することにより、該ブロックのデータ長を２３９バイトにする。この説明では、最後のブロックＤ♯７のデータ長は１０９バイトであり、したがって、ブロックＤ♯７には１３０バイトのパディングが挿入される。パディング挿入タイミング信号Ｔ２は、ブロックＤ♯７の終端検出後直ちに出力されるので、データ遅延回路１１０がブロックＤ♯７の先頭バイトを出力するよりも（したがってデータ挿入タイミング生成部１２１がデータ挿入タイミング信号Ｔ１を出力するよりも）１３０サイクル前に出力されることになる。／Ｔ／、／Ｒ／の連続パターンを検出することによってデータフィールドの終端を検出する方法は、ＩＥＥＥ８０２．３に規定されている。
【００３５】
パリティリードタイミング生成部１２３は、各ブロックＤ♯１〜Ｄ♯７の先頭バイトが入力された回数を検出することにより、ブロックの個数を判断する。パリティリードタイミング生成部１２３は、上述のように、ブロックＤ♯７の終端が入力されてから２３９サイクルが経過し、さらに、１番目のＴ＿ＦＥＣの長さに対応する時間（ここでは６サイクル）経過した後に、パリティリードタイミング制御信号Ｃ０（すなわち信号Ｃ１，Ｃ２）を出力する。したがって、パリティリードタイミング信号Ｃ０は、データ遅延回路１１０が最終ブロックＤ♯７の終端を出力した６サイクル後に出力されることになる。
【００３６】
ＲＳ入力位相制御回路１３０は、まず、先頭ブロックＤ♯１に対応するデータ挿入タイミング信号Ｔ１を受け取る。これにより、ＲＳ入力位相制御回路１３０は、第１ＲＳ入力制御部１３１を起動する。第１ＲＳ入力制御部１３１は、データ遅延回路１１０から２３９バイトのデータを順次入力し、第１ＦＥＣ演算回路１４１に送る。上述のように、データ挿入タイミング信号Ｔ１とブロックＤ♯１の先頭バイトとは同じタイミングで出力される。したがって、第１ＲＳ入力制御部１３１は、先頭ブロックＤ♯１を、第１ＦＥＣ演算回路１４１に送信することになる。
【００３７】
ＲＳ入力位相制御回路１３０は、２つめのデータ挿入タイミング信号Ｔ１を受け取ると、第２ＲＳ入力制御部１３２を起動する。第２ＲＳ入力制御部１３２は、データ遅延回路１１０から出力されたデータを２３９バイト入力し、第２ＦＥＣ演算回路１４２に送る。これにより、２番目のブロックＤ♯２が、第２ＦＥＣ演算回路１４２に送られることになる。
【００３８】
ＲＳ入力位相制御回路１３０は、３つめのデータ挿入タイミング信号Ｔ１を受け取ると、第３ＲＳ入力制御部１３３を起動して、３番目のブロックＤ♯３をデータ遅延回路１１０から第３ＦＥＣ演算回路１４３に転送させる。
【００３９】
続いて、ＲＳ入力位相制御回路１３０は、４つめのデータ挿入タイミング信号Ｔ１を受け取ると、再び第１ＲＳ入力制御部１３１を制御して、４番目のブロックＤ♯４を第１ＦＥＣ演算回路１４１に転送させる。さらに、第２、第３ＲＳ入力制御部１３２，１３３を順次制御して、５番目、６番目のブロックＤ♯５，Ｄ♯６を第２、第３ＦＥＣ演算回路１４２，１４３に転送させる。
【００４０】
第３ＲＳ入力制御部１３３がブロックＤ♯６を転送している最中に、ＲＳ入力位相制御回路１３０は、パディング挿入タイミング信号Ｔ２を受信する（図２参照）。パディング挿入タイミング信号Ｔ２を受信すると、ＲＳ入力位相制御回路１３０は、第１ＲＳ入力制御部１３１を制御して、パディングを出力させる。
【００４１】
その後、７個目のデータ挿入タイミング信号Ｔ１が受信されると、ＲＳ位相制御回路１３０は、第１ＲＳ入力制御部１３１に、パディングの送信を停止させ、７個目のブロックＤ♯７の転送を開始させる。上述のように、パディング挿入タイミング信号Ｔ２が入力されてから７個目のデータ挿入タイミング信号Ｔ１が入力するまでの時間差は、１３０サイクルである。したがって、第１ＲＳ入力制御部１３１は、１３０バイトのパディングを送信することになる。
【００４２】
ブロックＤ♯１〜Ｄ♯７の転送終了後も、各ＲＳ入力制御部１３１〜１３３は、そのまま転送動作を続けていてもよい。無効区間のデータをそのまま転送しても、誤り訂正符号回路１００全体の動作には影響しないからである。
【００４３】
第１〜第３ＦＥＣ演算回路１４１〜１４３は、１個のブロックを受信するたびに、そのブロックの２３９バイトのデータを用いてリードソロモン符号演算を実施する。これにより、ブロックＤ♯１〜Ｄ♯７毎に、１６バイトのパリティデータＰ♯１〜Ｐ♯７が算出される。この実施形態では、各ＦＥＣ演算回路１４１〜１４３の演算レイテンシを１サイクルとする（図２参照）。各ＦＥＣ演算回路１４１〜１４３は、演算レイテンシ経過後、リードソロモン符号演算処理後のデータ（各ブロックＤ♯１〜Ｄ♯７にパリティデータＰ♯１〜Ｐ♯７を付加してなるデータ）を、出力する。
【００４４】
パリティ蓄積回路１５０は、上述のように、被処理データからパリティデータを抜き出して、蓄積する。
【００４５】
ＦＥＣ出力位相制御回路１６０は、データ遅延回路１１０からＦＥＣ入力データを入力する。ＦＥＣ出力位相制御回路１６０は、ＦＥＣ入力データに含まれる２バイトの／Ｉ／パターンと１バイトの／Ｓ／パターンを変換することによりＳ＿ＦＥＣ（図７参照）を生成する。また、ＦＥＣ出力位相制御回路１６０は、ブロックＤ♯１〜Ｄ♯７のデータを、そのまま出力する。さらに、ＦＥＣ出力位相制御回路１６０は、／Ｔ／パターンおよび／Ｒ／パターンを変換することにより１番目のＴ＿ＦＥＣを生成する。パリティリードタイミング制御信号Ｃ０を入力すると、ＦＥＣ出力位相制御回路１６０は、信号Ｃ２が示す個数のパリティデータをパリティ蓄積回路１５０から読み出して出力し、さらに、２番目のＴ＿ＦＥＣを付加する。
【００４６】
以上のようにして、１５４３バイトのＦＥＣ入力データから、ＦＥＣフレームが生成される。
【００４７】
図３は、２３９バイト以下のＦＥＣ入力データを符号化する場合の、誤り訂正符号回路１００の動作を説明するためのタイミングチャートである。
【００４８】
データ遅延回路１１０は、図２の場合と同様、ＦＥＣ入力データを、２３９サイクル遅延させて出力する。
【００４９】
データ挿入タイミング生成部１２１は、図２の場合と同様にして各ブロックＤ♯１〜Ｄ♯７の先頭バイトを検出し、２３９サイクル経過後にデータ挿入タイミング信号Ｔ１を出力する。
【００５０】
パディング挿入タイミング生成部１２２は、図２の場合と同様、データフィールドの終端データを検出したタイミングで、パディング挿入タイミング信号Ｔ２を出力する。
【００５１】
パリティリードタイミング生成部１２３は、ＦＥＣ入力データのブロック数（図３の例ではすべて１個）を判断し、ブロックの終端（ＦＥＣ入力データのデータフィールド終端）が入力されてから２３９サイクル＋６サイクル経過した後に、パリティリードタイミング制御信号Ｃ０を出力する。
【００５２】
ＲＳ入力位相制御回路１３０は、まず、パディング挿入タイミング信号Ｔ２を受信し、第１ＲＳ入力制御部１３１を制御して、パディングの出力を開始させる。その後、データ挿入タイミング信号Ｔ１が受信されると、ＲＳ入力位相制御回路１３０は、第１ＲＳ入力制御部１３１に、パディングの送信を停止させ、ブロックＤ♯１の転送を開始させる。
【００５３】
次に、２回目のパディング挿入タイミング信号Ｔ２を受信すると、ＲＳ入力位相制御回路１３０は、第２ＲＳ入力制御部１３２を制御してパディングの出力を開始させ、その後、データ挿入タイミング信号Ｔ１が受信されると、第２ＲＳ入力制御部１３２にパディングの送信を停止させるとともにブロックＤ♯１の転送を開始させる。
【００５４】
その後のＲＳ入力位相制御回路１３０の動作も、同様である。
【００５５】
ＦＥＣ演算回路１４１〜１４３は、図２の場合と同様、１個のブロックを受信するたびにリードソロモン符号演算を実施し、演算レイテンシ（ここでは１サイクル）経過後、リードソロモン符号演算処理後の被処理データ（ブロックにパリティデータを付加してなるデータ）を出力する。
【００５６】
パリティ蓄積回路１５０は、図２の場合と同様、被処理データからパリティデータを抜き出して蓄積する。
【００５７】
ＦＥＣ出力位相制御回路１６０は、図２の場合と同様にして、Ｓ＿ＦＥＣ、ブロック、１番目のＴ＿ＦＥＣ、パリティデータおよび２番目のＴ＿ＦＥＣを出力する。
【００５８】
上述の説明から解るように、データ遅延回路１１０から出力されたＦＥＣ入力データは、第１〜第３ＦＥＣ演算回路１４１〜１４３およびＦＥＣ出力位相制御回路１６０に同時に入力される。ここで、第１〜第３ＦＥＣ演算回路１４１〜１４３は、所定の演算レイテンシ経過後に被処理データをパリティ蓄積回路１５０に送る。一方、ＦＥＣ出力位相制御回路１６０は、ＦＥＣ入力データのデータフィールド後端に一番目Ｔ＿ＦＥＣを付加した後で、パリティ蓄積回路１５０からのパリティデータの読み出しを開始する。したがって、ＦＥＣ入力データのデータフィールド長が２３９バイト未満の場合、パリティデータＰ♯１〜♯７がパリティ蓄積回路１５０に書き込まれてから読み出されるまでの時間は、（一番目Ｔ＿ＦＥＣのサイクル数）−（ＦＥＣ演算回路の演算レイテンシ）で与えられる。上述のように、この実施形態では、一番目Ｔ＿ＦＥＣのサイクル数は６サイクルであり、且つ、ＦＥＣ演算回路の演算レイテンシは１サイクルである。したがって、パリティデータＰ♯１〜♯７がパリティ蓄積回路１５０に書き込まれてから読み出されるまでの時間は、５サイクルである。
【００５９】
以上のようにして、２３９バイト未満のＦＥＣ入力データから、ＦＥＣフレームが生成される。
【００６０】
図４は、ＦＥＣ入力データの長さが２３９バイトの整数倍である場合の、誤り訂正符号回路１００の動作を説明するための概念図である。
【００６１】
上述したように、データ挿入タイミング信号Ｔ１は各ブロックの先頭バイトが検出されてから２３９サイクル後に出力され、また、パディング挿入タイミング信号Ｔ２はＦＥＣ入力データの終端が入力されたときに直ちに出力される（図２および図３参照）。したがって、最終ブロックが２３９バイト未満の場合（すなわち、ＦＥＣ入力データの長さが２３９バイトの整数倍でない場合）、当該最終ブロックの前に、（２３９バイト）−（最終ブロックのデータ長）と一致する個数のパディングを挿入することができる（図４（ｂ）参照）。
【００６２】
これに対して、最終ブロックが２３９バイトの場合（すなわち、ＦＥＣ入力データの長さが２３９バイトの整数倍である場合）、最終ブロックがＦＥＣ入力位相制御回路１２０に入力されたタイミングで、信号Ｔ１，Ｔ２が同時に出力されることになる（図４（ａ）参照）。しかし、この場合、ＲＳ入力位相制御回路１３０は、パディングを出力する必要はない。したがって、上述のように、この実施形態では、信号Ｔ１，Ｔ２が同時に入力された場合はパディングを出力しないように、ＲＳ入力位相制御回路１３０を構成した。
【００６３】
以上説明したように、この実施形態に係る誤り訂正符号回路１００は、２３９サイクルの処理レイテンシで、ＦＥＣ処理（誤り訂正符号処理）を行うことができる。この処理レイテンシは、パディングの最大挿入数が２３８バイトである（最終ブロックが１バイトのとき）ことを考えると、非常に小さい値である。
【００６４】
また、ブロックが２３９バイトの場合の処理と２３９バイト未満の場合の処理とを共通化できるので、装置コストを低減することが容易である。
【００６５】
第２の実施形態
この発明の第２の実施形態に係る誤り訂正符号回路について、図５および図６を用いて説明する。この実施形態も、ブロック符号としてリードソロモン符号を採用した場合の例である。
【００６６】
図５は、この実施形態に係る誤り訂正符号回路５００の構成を概略的に示すブロック図である。図５において、図１と同じ符号を付した構成要素は、それぞれ図１の場合と同じものを示している。
【００６７】
図５に示したように、この実施形態の誤り訂正符号回路５００は、２個のパリティ蓄積回路５０１，５０２を有している。パリティ蓄積回路５０１，５０２は、それぞれ、第１〜第３ＦＥＣ演算回路１４１〜１４３が出力した被処理データからパリティデータを抜き出して蓄積するとともに、ＦＥＣ出力位相制御回路１６０によってパリティデータが読み出される。パリティ蓄積回路５０１，５０２へのパリティデータ蓄積は、例えば、交互に行うことができる。
【００６８】
以下、この実施形態に係る誤り訂正符号回路５００の動作について、ＦＥＣ入力データのデータフィールドが２個のブロックを含む場合を例に採り、図６を用いて説明する。図６は、この実施形態に係る誤り訂正符号回路５００の動作を説明するための概念図である。
【００６９】
ＦＥＣ入力データが誤り訂正符号回路５００に入力されると、第１の実施形態の場合と同様にして、データ遅延回路１１０がＦＥＣ入力データを出力し、また、ＦＥＣ入力位相制御回路１２０がデータ挿入タイミング信号Ｔ１等を出力する。
【００７０】
ＲＳ入力位相制御回路１３０が最初のデータ挿入タイミング信号Ｔ１を受け取ると、第１ＲＳ入力制御部１３１がデータ遅延回路１１０からブロックＤ♯１（２３９バイト）を入力し、第１ＦＥＣ演算回路１４１に送る。第１ＦＥＣ演算回路１４１は、このブロックＤ♯１を用いてパリティデータ（１６バイト）を演算する。算出されたパリティデータＰ♯１は、ブロックＤ♯１の後に付加され（図６（Ａ）参照）、パリティ蓄積回路５０１，５０２に送られる。パリティ蓄積回路５０１は、入力データからパリティデータＰ♯１を抜き出して蓄積する。
【００７１】
このようにしてパリティデータＰ♯１を演算・蓄積する処理と並行して、パリティデータＰ♯２を演算・蓄積する処理も開始される。
【００７２】
２番目のブロックＤ♯２が２３９バイトの場合、ブロックＤ♯１の場合と同様の処理が、第２ＲＳ入力制御部１３２および第２ＦＥＣ演算回路１４２によって行われ、パリティデータＰ♯２がパリティ蓄積回路５０２に蓄積される。ここで、ブロックＤ♯２が２３９バイトの場合、第１ＦＥＣ演算回路１４１がパリティデータＰ♯１の演算を開始してから２３９サイクル後に、第２ＦＥＣ演算回路１４２がパリティデータＰ♯２の演算を開始する。したがって、パリティデータＰ♯１，Ｐ♯２の蓄積動作（この実施形態ではパリティ蓄積回路５０１，５０２への書き込み動作）が重なることはない。
【００７３】
一方、２番目のブロックＤ♯２が２３９バイト未満の場合、第１の実施形態と同様にして、ブロックＤ♯１がデータ遅延回路１１０、ＲＳ入力制御部１３１、ＦＥＣ演算回路１４１間を転送されている最中に、ＦＥＣ入力位相制御回路１２０からパディング挿入タイミング信号Ｔ２が出力される。このとき、ブロックＤ♯２のバイト数が少ない場合ほど、パディング挿入タイミング信号Ｔ２の出力タイミングは早くなる。パディング挿入タイミング信号Ｔ２がＦＥＣ入力位相制御回路１２０に受信されると、ブロックＤ♯１の転送処理およびパリティデータ演算処理と並行して、第２ＲＳ入力制御部１３２から第２ＦＥＣ演算回路１４２にパディングが送られ、さらに、ブロックＤ♯１の転送処理終了後直ちにブロックＤ♯２の転送処理およびパリティデータ演算処理が開始される。したがって、パリティデータＰ♯１の蓄積動作開始からパリティデータＰ♯２の蓄積動作開始までの時間差（サイクル差）は、ブロックＤ♯１，Ｄ♯２のバイト数差と一致する。ここで、パディングデータの長さは、ブロックの長さに拘わらず、常に１６バイトである。その結果、ブロックＤ♯１，Ｄ♯２のバイト数差が１６バイト以上であればパリティデータＰ♯１，Ｐ♯２の蓄積処理は重ならないが、該バイト数差が１６バイト未満の場合は該蓄積処理が重なることになる（図６（Ｂ）参照）。したがって、パリティ蓄積回路が１個の場合、該バイト数差が１６バイト未満のときに、パリティデータＰ♯１の蓄積処理が終了するまでパリティデータＰ♯２の蓄積処理を待たなければならず、処理レイテンシが増大する。
【００７４】
これに対して、この実施形態の誤り訂正符号回路５００は、２個のパリティ蓄積回路５０１，５０２を有しているので、パリティデータＰ♯１，Ｐ♯２の蓄積処理を並行して行うことができ、したがって、処理レイテンシが増大することはない。
【００７５】
以上説明したように、この実施形態に係る誤り訂正符号回路５００は、上述の第１の実施形態と同様の効果に加えて、最終ブロックの長さが１６バイト未満であっても、処理レイテンシが増大しないという効果を有する。
【図面の簡単な説明】
【００７６】
【図１】第１の実施形態に係る誤り訂正符号回路の構成を概略的に示すブロック図である。
【図２】第１の実施形態に係る誤り訂正符号回路の動作を説明するためのタイミングチャートである。
【図３】第１の実施形態に係る誤り訂正符号回路の動作を説明するためのタイミングチャートである。
【図４】第１の実施形態に係る誤り訂正符号回路の動作を説明するための概念図である。
【図５】第２の実施形態に係る誤り訂正符号回路の構成を概略的に示すブロック図である。
【図６】第２の実施形態に係る誤り訂正符号回路の動作を説明するための概念図である。
【図７】ＩＥＥＥ８０２．３ａｈ勧告に準拠したＦＥＣフレームの構造を示す概念図である。
【符号の説明】
【００７７】
１００，５００  誤り訂正符号回路
１１０  データ遅延回路
１２０  ＦＥＣ入力位相制御回路
１２１  データ挿入タイミング生成部
１２２  パディング挿入タイミング生成部
１２３  パリティリードタイミング生成部
１３０  ＲＳ入力位相制御回路
１３１，１３２，１３３  ＲＳ入力制御部
１４１，１４２，１４３  ＦＥＣ演算回路
１５０，５０１，５０２  パリティ蓄積回路
１６０  ＦＥＣ出力位相制御回路
１６１  パリティリード制御部
１６２  出力データ選択部
【図１】
2008160633.tif 000003
【図２】
2008160633.tif 000004
【図３】
2008160633.tif 000005
【図４】
2008160633.tif 000006
【図５】
2008160633.tif 000007
【図６】
2008160633.tif 000008
【図７】
2008160633.tif 000009