(57)【特許請求の範囲】
【請求項１】
入力されたデータを所定のデータ長ごとに分割する分割部と、
前記分割部によって分割された複数の並列データのそれぞれの先頭を揃え前記複数の並列データの間の時間的な重なりがなくなるように前記複数の並列データの一部をシフトさせる整列を行う整列部と、
並列に設けられ、前記整列部によって整列が行われた複数の並列データに対してそれぞれ誤り訂正の演算を行う複数の演算部と、
前記複数の演算部によって演算が行われた複数の並列データを多重する多重部と、
前記多重部によって多重された並列データを出力する出力部と、
を備えることを特徴とする誤り訂正処理回路。
【請求項２】
前記複数の演算部によって演算が行われた複数の並列データの並びを、前記整列部による整列前の並びに変換する変換部を備え、
前記多重部は、前記変換部によって並びが変換された複数の並列データを多重することを特徴とする請求項１に記載の誤り訂正処理回路。
【請求項３】
前記分割部によって分割された複数の並列データを前記複数の演算部のそれぞれのバス幅となるようにシリアル変換するシリアル変換部を備え、
前記複数の演算部は、前記シリアル変換部によってシリアル変換された複数の並列データに対してそれぞれ前記誤り訂正の演算を行うことを特徴とする請求項１または２に記載の誤り訂正処理回路。
【請求項４】
前記分割部は、前記入力されたデータを前記誤り訂正の符号化のブロック単位で分割することを特徴とする請求項１〜３のいずれか一つに記載の誤り訂正処理回路。
【請求項５】
入力された並列データを所定のデータ長ごとに分割し、
分割した複数の並列データのそれぞれの先頭を揃え前記複数の並列データの間の時間的な重なりがなくなるように前記複数の並列データの一部をシフトさせる整列を行い、
並列に設けられた複数の演算部により、前記整列を行った複数の並列データに対してそれぞれ誤り訂正の演算を行い、
前記演算を行った複数の並列データを多重し、
多重した並列データを出力することを特徴とする誤り訂正処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正処理回路および誤り訂正処理方法に関する。
【背景技術】
【０００２】
光技術の発展に伴い、ＤＷＤＭ（Ｄｅｎｓｅ  Ｗａｖｅｌｅｎｇｔｈ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘｉｎｇ：高密度波長分割多重方式）通信に適した光パスなどを採用したＯＴＮ（Ｏｐｔｉｃａｌ  Ｔｒａｎｓｐｏｒｔ  Ｎｅｔｗｏｒｋ：ＩＴＵ−Ｔ  Ｇ．７０９）が標準化された。ＯＴＮにおいては、光転送ネットワークにおける伝送路品質の確保のために、ＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ：前方誤り訂正）による誤り訂正が用いられる。
【０００３】
また、伝送容量の増加により、ＯＴＮのレートは、ＯＴＵ１（２．５［Ｇ］），ＯＴＵ２（１０［Ｇ］），ＯＴＵ３（４０［Ｇ］），ＯＴＵ４（１００［Ｇ］）と、通信の大容量化が要求されている（たとえば、下記特許文献１参照。）。このため、たとえばＦＥＣにおいても通信の大容量化に対応した処理が求められている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００８／０３５４６９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、エンコードやデコードなどのＦＥＣの演算におけるクロック速度には限界があり、通信の大容量化が困難であるという問題がある。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、通信の大容量化を図ることができる誤り訂正処理回路および誤り訂正処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、入力されたデータを所定のデータ長ごとに分割し、並列に設けられた複数の演算部により、分割した複数のデータに対してそれぞれ誤り訂正の演算を行い、演算を行った前記複数のデータを多重し、多重したデータを出力する誤り訂正処理回路および誤り訂正処理方法が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、通信の大容量化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかる誤り訂正処理回路の構成例を示す図である。
【図２】図２は、誤り訂正処理回路を適用した通信装置および通信システムの一例を示す図である。
【図３−１】図３−１は、フレームフォーマットの一例を示す図である。
【図３−２】図３−２は、ＦＥＣの演算単位の一例を示す図である。
【図４】図４は、誤り訂正処理回路の具体的な構成例を示す図である。
【図５−１】図５−１は、演算器の構成例を示す図である。
【図５−２】図５−２は、各乗算回路における係数の一例を示す図（その１）である。
【図５−３】図５−３は、各乗算回路における係数の一例を示す図（その２）である。
【図５−４】図５−４は、各乗算回路における係数の一例を示す図（その３）である。
【図６−１】図６−１は、制御部による入力データ蓄積バッファの制御の一例を示す図である。
【図６−２】図６−２は、制御部による出力データ蓄積バッファの制御および出力データの一例を示す図である。
【図７−１】図７−１は、入力データの一例を示す図である。
【図７−２】図７−２は、入力データ蓄積バッファに対する入力データの書き込みの一例を示す図である。
【図８】図８は、実施の形態２にかかる誤り訂正処理回路の構成例を示す図である。
【図９−１】図９−１は、入力データの一例を示す図である。
【図９−２】図９−２は、入力データ蓄積バッファに対する入力データの書き込みの一例を示す図である。
【図１０】図１０は、誤り訂正処理回路の具体的な構成例を示す図である。
【図１１】図１１は、入力データ蓄積バッファに対する入力データの書き込みの一例を示す図である。
【図１２】図１２は、ＦＥＣデコーダの演算器の構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる誤り訂正処理回路および誤り訂正処理方法の実施の形態を詳細に説明する。
【００１１】
（実施の形態１）
（実施の形態１にかかる誤り訂正処理回路の構成）
図１は、実施の形態１にかかる誤り訂正処理回路の構成例を示す図である。図１に示す誤り訂正処理回路１００は、ＦＥＣのエンコード処理またはデコード処理を行う誤り訂正処理回路である。ＦＥＣとしては、たとえばＲＳ（２５５，２３９）などのリードソロモン符号（ＲＳ：Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  Ｃｏｄｉｎｇ）を挙げることができる。
【００１２】
実施の形態１においては、誤り訂正処理回路１００がＦＥＣのエンコードを行う場合について説明する。誤り訂正処理回路１００は、入力データ蓄積バッファ１１０と、入力分割処理部１２０と、演算処理部１３０と、出力分割処理部１４０と、出力データ蓄積バッファ１５０と、制御部１６０と、を備えている。
【００１３】
入力データ蓄積バッファ１１０は、入力されたデータを所定のデータ長ごとに分割する分割部である。具体的には、入力データ蓄積バッファ１１０は、入力されたデータをサブフレーム（ＳｕｂＦｒａｍｅ：Ｒｏｗ）単位で蓄積するバッファである。サブフレームは、ＦＥＣの符号化のブロックの単位である。
【００１４】
入力データ蓄積バッファ１１０は、入力されるデータのビット幅に応じた個数のバッファを有し、入力されたデータを順次蓄積する。ここでは、入力データ蓄積バッファ１１０は３個のバッファを有し、入力されたデータを分割して各バッファに記憶する。入力データ蓄積バッファ１１０へのデータの書き込みや入力データ蓄積バッファ１１０からのデータの読み出しは、制御部１６０によって制御される。
【００１５】
入力分割処理部１２０は、入力データ蓄積バッファ１１０の各バッファから読み出された各データを、演算処理部１３０での演算単位に変換する。たとえば、誤り訂正処理回路１００へ入力されるデータが３×１６［ｂｙｔｅ］幅の場合は、入力分割処理部１２０はデータを３：１に多重する。入力分割処理部１２０は、多重したデータを演算処理部１３０へ出力する。このように、入力分割処理部１２０は、入力データ蓄積バッファ１１０によって分割された複数のデータを演算器１３１〜１３３のそれぞれのバス幅となるようにシリアル変換するシリアル変換部として機能する。
【００１６】
演算処理部１３０は、並列に設けられた演算器１３１〜１３３を備えている。演算器１３１〜１３３のそれぞれは、データの最小単位（たとえば８［ｂｉｔ］）に対してＦＥＣのエンコードを行うエンコーダである。演算器１３１〜１３３は、入力分割処理部１２０から出力された３系列のデータに対してそれぞれＦＥＣのエンコード（誤り訂正の演算）を行う。演算器１３１〜１３３のそれぞれは、エンコードしたデータを出力分割処理部１４０へ出力する。なお、演算器１３１〜１３３のそれぞれの最小単位の回路での演算単位は８［ｂｉｔ］であり、処理すべきデータの単位は２５５［ｂｙｔｅ］とする。
【００１７】
出力分割処理部１４０は、入力分割処理部１２０から出力された３系列のデータを出力データ蓄積バッファ１５０に対する並びに変換する。たとえば、誤り訂正処理回路１００へ入力されるデータが３×１６［ｂｙｔｅ］幅の場合は、出力分割処理部１４０は、データを１：３に並列化する。出力分割処理部１４０は、並列化したデータを出力データ蓄積バッファ１５０へ出力する。このように、出力分割処理部１４０は、演算器１３１〜１３３によって演算が行われた複数のデータを入力分割処理部１２０によるシリアル変換前のバス幅となるようにパラレル変換するパラレル変換部として機能する。
【００１８】
出力データ蓄積バッファ１５０は、演算器１３１〜１３３によって演算が行われた複数のデータを多重する多重部である。また、出力データ蓄積バッファ１５０は、多重したデータを出力する出力部である。具体的には、出力データ蓄積バッファ１５０は、出力分割処理部１４０から出力されたデータをサブフレーム単位で蓄積し、入力時と同じビット幅（フォーマット）に変換する。
【００１９】
出力データ蓄積バッファ１５０へのデータの書き込みや出力データ蓄積バッファ１５０からのデータの読み出しは、制御部１６０によって制御される。出力データ蓄積バッファ１５０から読み出されたデータは誤り訂正処理回路１００の後段へ出力される。これにより、誤り訂正処理回路１００へ入力されたデータがＦＥＣによりエンコードされて誤り訂正処理回路１００から出力される。
【００２０】
制御部１６０には、誤り訂正処理回路１００へ入力されるデータのフレームの先頭を示すフレームパルスが入力される。制御部１６０は、フレームパルスに基づいて、入力データ蓄積バッファ１１０におけるデータの書き込みおよび読み出しを制御する。また、制御部１６０は、フレームパルスに基づいて、出力データ蓄積バッファ１５０におけるデータの書き込みおよび読み出しを制御する。また、制御部１６０は、フレームパルスに基づいて、入力分割処理部１２０、演算処理部１３０および出力分割処理部１４０における処理を制御してもよい。
【００２１】
このように、誤り訂正処理回路１００は、複数の演算処理が多重されているデータに対する演算処理において、入力データ蓄積バッファ１１０に一旦入力データを蓄積し、入力分割処理部１２０においてデータを並び替え、後段で処理可能な単位に分割する。そして、誤り訂正処理回路１００は、演算処理部１３０において入力演算データごとに時分割処理を行い、出力分割処理部１４０において元の並びに戻しながら出力データ蓄積バッファ１５０にデータを蓄積し、蓄積したデータを出力する。これにより、並列度や多重度に関わらずデータを処理可能な演算処理回路を実現することができる。
【００２２】
（通信システム）
図２は、誤り訂正処理回路を適用した通信装置および通信システムの一例を示す図である。図２に示す通信システム２００は、光信号を送受信する通信システムである。ここではＯＴＮ（Ｏｐｔｉｃａｌ  Ｔｒａｎｓｐｏｒｔ  Ｎｅｔｗｏｒｋ：光伝達網）に基づく通信システム２００を例示する。通信システム２００は、送信側のＯＴＮ終端装置２１０と、受信側のＯＴＮ終端装置２２０と、光伝送路２０１を含んでいる。
【００２３】
ＯＴＮ終端装置２１０は、ＯＴＵ処理部２１１と、ＦＥＣエンコーダ２１２と、スクランブラ２１３と、Ｅ／Ｏ変換部２１４と、を備えている。ＯＴＵ処理部２１１は、ＯＴＵ（Ｏｐｔｉｃａｌ−ｃｈａｎｎｅｌ  Ｔｒａｎｓｐｏｒｔ  Ｕｎｉｔ）の処理によって送信すべきデータを生成し、生成したデータをＦＥＣエンコーダ２１２へ出力する。
【００２４】
ＦＥＣエンコーダ２１２は、ＯＴＵ処理部２１１から出力されたデータに対してＦＥＣのエンコードを行う。ＦＥＣエンコーダ２１２には、たとえば図１に示した誤り訂正処理回路１００を適用することができる。ＦＥＣエンコーダ２１２は、エンコードしたデータをスクランブラ２１３へ出力する。
【００２５】
スクランブラ２１３は、ＦＥＣエンコーダ２１２から出力されたデータにスクランブルをかける。スクランブラ２１３は、スクランブルをかけたデータをＥ／Ｏ変換部２１４へ出力する。Ｅ／Ｏ変換部２１４は、スクランブラ２１３から出力されたデータを光信号に変換する。Ｅ／Ｏ変換部２１４は、変換した光信号を光伝送路２０１へ出力する。
【００２６】
光伝送路２０１は、Ｅ／Ｏ変換部２１４から出力された光信号をＯＴＮ終端装置２２０へ伝送する。光伝送路２０１はたとえば光ファイバである。ＯＴＮ終端装置２２０は、Ｏ／Ｅ変換部２２１と、フレーム同期部２２２と、デスクランブラ２２３と、ＦＥＣデコーダ２２４と、ＯＴＵ処理部２２５と、を備えている。
【００２７】
Ｏ／Ｅ変換部２２１は、ＯＴＮ終端装置２１０から光伝送路２０１によって伝送された光信号を電気信号に変換する。Ｏ／Ｅ変換部２２１は、電気信号に変換したデータをフレーム同期部２２２へ出力する。フレーム同期部２２２（Ｆｒａｍｅ  Ａｌｉｇｎｅｒ）は、Ｏ／Ｅ変換部２２１から出力されたデータのフレームの同期をとる。フレーム同期部２２２は、フレームの同期を取ったデータをデスクランブラ２２３へ出力する。
【００２８】
デスクランブラ２２３は、フレーム同期部２２２から出力されたデータのスクランブルを解除する。デスクランブラ２２３は、スクランブルを解除したデータをＦＥＣデコーダ２２４へ出力する。ＦＥＣデコーダ２２４は、デスクランブラ２２３から出力されたデータに対して、ＦＥＣのデコードを行うことによって誤り訂正する。ＦＥＣデコーダ２２４は、誤り訂正したデータをＯＴＵ処理部２２５へ出力する。ＯＴＵ処理部２２５は、ＦＥＣデコーダ２２４から出力されたデータに対してＯＴＵの終端処理を行う。
【００２９】
このように、図１に示した誤り訂正処理回路１００は、ＦＥＣを用いて光信号を伝送する通信システム２００の通信装置（たとえばＯＴＮ終端装置２１０）に適用することができる。ただし、通信システム２００は、光信号により通信を行う通信システムに限らず、電気信号や無線信号により通信を行う通信システムであってもよい。
【００３０】
（フレームフォーマット）
図３−１は、フレームフォーマットの一例を示す図である。図３−１に示すフレームフォーマット３１０は、図２に示した通信システム２００において伝送されるデータのフレームフォーマット（ＯＴＵｋ）の一例である。フレームフォーマット３１０に示すように、通信システム２００において伝送されるデータは、４０８０［ｂｙｔｅ］×４ｒｏｗのデータであり、オーバーヘッド３１１（Ｍｇｍｎｔ．ＯＨ）と、ＯＰＵｋペイロード３１３と、ＦＥＣ冗長部３１４と、を含んでいる。
【００３１】
オーバーヘッド３１１は、４×１６［ｂｙｔｅ］のオーバーヘッドである。オーバーヘッド３１１には、フレームの先頭を示すフレームアライメント信号３１２（ＦＡＳ：Ｆｒａｍｅ  Ａｌｉｇｎｍｅｎｔ  Ｓｉｇｎａｌ）が含まれている。ＯＰＵｋペイロード３１３は、４×３８０８［ｂｙｔｅ］のペイロードである。ＦＥＣ冗長部３１４は、４×２５６［ｂｙｔｅ］のＦＥＣパリティである。
【００３２】
図３−２は、ＦＥＣの演算単位の一例を示す図である。図３−２に示すサブフレーム３２０は、図２に示したＦＥＣエンコーダ２１２またはＦＥＣデコーダ２２４の演算単位のサブフレームを示している。サブフレーム３２０は２５５［ｂｙｔｅ］のデータ長であり、サブフレーム３２０の１６個分が図３−１に示したフレームフォーマット３１０の１ｒｏｗに相当する。
【００３３】
サブフレーム３２０は、オーバーヘッド３２１（ＯＨ）と、ペイロード３２２と、ＦＥＣバイト３２３と、を含んでいる。オーバーヘッド３２１は、１［ｂｙｔｅ］のオーバーヘッドであり、データの光チャネルを示す情報である。ペイロード３２２は、２３８［ｂｙｔｅ］のペイロードである。ＦＥＣバイト３２３は、１６［ｂｙｔｅ］のＦＥＣパリティである。
【００３４】
（誤り訂正処理回路の具体的な構成例）
図４は、誤り訂正処理回路の具体的な構成例を示す図である。図４において、図１に示した部分と同様の部分については同一の符号を付して説明を省略する。図４に示すように、誤り訂正処理回路１００には３×１６＝４８［ｂｙｔｅ］幅のデータが入力されるとする。入力データ蓄積バッファ１１０は、メモリ４１１〜４１３をバッファとして備えている。入力分割処理部１２０は、パラレルシリアル変換部４２１〜４２３を備えている。
【００３５】
演算処理部１３０は、演算器４３１〜４３３を備えている。出力分割処理部１４０は、シリアルパラレル変換部４４１〜４４３を備えている。出力データ蓄積バッファ１５０は、バッファとしてのメモリ４５１〜４５３と、パラレルシリアル変換部４７０と、を備えている。制御部１６０は、メモリ制御部４６１とメモリ制御部４６２とを備えている。
【００３６】
メモリ４１１〜４１３のそれぞれには、誤り訂正処理回路１００へ入力された４８［ｂｙｔｅ］幅のデータが入力される。メモリ４１１〜４１３のそれぞれは、メモリ制御部４６１によって指示される期間において、入力されたデータを記憶する。また、メモリ４１１〜４１３は、メモリ制御部４６１から指示される期間において、記憶したデータをそれぞれパラレルシリアル変換部４２１〜４２３へ出力する。
【００３７】
制御部１６０のメモリ制御部４６１は、入力されるフレームパルスに基づいてメモリ４１１〜４１３の制御を行う。具体的には、メモリ制御部４６１は、メモリ４１１〜４１３へそれぞれ書き込み指示信号を出力し、メモリ４１１〜４１３に対してそれぞれ異なる期間のデータを書き込む。これにより、誤り訂正処理回路１００へ入力されたデータを時間により分割（３分割）してメモリ４１１〜４１３に記憶させることができる。また、メモリ制御部４６１は、メモリ４１１〜４１３へそれぞれ読み出し指示信号を出力し、メモリ４１１〜４１３に書き込んだデータをそれぞれパラレルシリアル変換部４２１〜４２３へ出力させる。
【００３８】
また、メモリ制御部４６１は、リード用フレームパルスおよびメモリ番号情報をメモリ制御部４６２へ出力する。リード用フレームパルスは、メモリ４１１〜４１３のデータを読み出したタイミングに基づくフレームパルスであり、メモリ制御部４６２におけるデータの読み出しのタイミングを示す情報である。メモリ番号情報は、メモリ４１１〜４１３に対するデータの書き込み状態を示す情報である。
【００３９】
パラレルシリアル変換部４２１〜４２３は、それぞれメモリ４１１〜４１３から出力された４８［ｂｙｔｅ］幅のデータを３：１に多重し、１６［ｂｙｔｅ］幅のデータに変換する。パラレルシリアル変換部４２１〜４２３は、変換した１６［ｂｙｔｅ］幅のデータをそれぞれ演算器４３１〜４３３へ出力する。
【００４０】
演算器４３１〜４３３は、それぞれ図１に示した演算器１３１〜１３３に対応する構成である。演算器４３１〜４３３は、それぞれパラレルシリアル変換部４２１〜４２３から出力された１６［ｂｙｔｅ］幅のデータを１６並列の処理によりエンコードする。演算器４３１〜４３３は、エンコードした１６［ｂｙｔｅ］幅のデータをそれぞれシリアルパラレル変換部４４１〜４４３へ出力する。
【００４１】
シリアルパラレル変換部４４１〜４４３は、それぞれ演算器４３１〜４３３から出力された１６［ｂｙｔｅ］幅のデータを１：３に並列化し、４８［ｂｙｔｅ］幅のデータに変換する。シリアルパラレル変換部４４１〜４４３は、変換した４８［ｂｙｔｅ］幅のデータをそれぞれメモリ４５１〜４５３へ出力する。
【００４２】
メモリ４５１〜４５３のそれぞれは、メモリ制御部４６２から指示される期間において、それぞれシリアルパラレル変換部４４１〜４４３から出力されたデータを記憶する。また、メモリ４５１〜４５３のそれぞれは、メモリ制御部４６２から指示される期間において、記憶したデータをパラレルシリアル変換部４７０へ出力する。
【００４３】
制御部１６０のメモリ制御部４６２は、メモリ制御部４６１から出力されたリード用フレームパルスおよびメモリ番号情報に基づいてメモリ４５１〜４５３の制御を行う。具体的には、メモリ制御部４６２は、メモリ４５１〜４５３へそれぞれ書き込み指示信号を出力し、シリアルパラレル変換部４４１〜４４３から出力されるデータをそれぞれメモリ４５１〜４５３に書き込む。また、メモリ制御部４６２は、メモリ４５１〜４５３へそれぞれ読み出し指示信号を出力し、メモリ４５１〜４５３に書き込んだデータをパラレルシリアル変換部４７０へ出力させる。
【００４４】
パラレルシリアル変換部４７０は、メモリ４５１〜４５３から出力された３×４８［ｂｙｔｅ］幅のデータを３：１に多重し、４８［ｂｙｔｅ］幅のデータに変換する。パラレルシリアル変換部４７０は、変換した４８［ｂｙｔｅ］幅のデータを誤り訂正処理回路１００の後段へ出力する。
【００４５】
このように、誤り訂正処理回路１００は、１６×Ｎ［ｂｙｔｅ］幅の（図４ではＮ＝３）データを、入力分割処理部１２０において１６［ｂｙｔｅ］の演算器４３１〜４３３のフォーマットに変換する。この場合において、演算器４３１〜４３３はＮ個使用される。また、誤り訂正処理回路１００は、１６［ｂｙｔｅ］の演算器４３１〜４３３の出力を、出力分割処理部１４０において１６×Ｎ［ｂｙｔｅ］幅に変換する。誤り訂正処理回路１００によれば、入力されるデータのビットレートが高く（たとえば４０［Ｇ］や１００［Ｇ］）なってもパラレル数Ｎを増やすことで処理することができる。
【００４６】
（演算器の構成例）
図５−１は、演算器の構成例を示す図である。図５−１に示す演算器５００は、ＯＴＮ  Ｇ７０９  Ｓｔａｎｄａｒｄ  ＦＥＣ  ＲＳ（２５５，２３９）におけるＦＥＣエンコーダの構成例である。演算器５００は、１［ｂｙｔｅ］幅（８［ｂｉｔ］幅）のデータをエンコードする最小単位の基本回路である。たとえば図４に示した演算器４３１〜４３３のそれぞれは、演算器５００を１６個並列に設けることによって実現することができる。
【００４７】
図５−１に示すように、演算器５００は、入力部５１１〜５１３と、アンド回路５２０と、１６個の乗算回路５３＃１〜５３＃１６と、１６個のフリップフロップ回路５４＃１〜５４＃１６と、１６個の加算回路５５＃１〜５５＃１６と、セレクタ５６０と、フリップフロップ回路５７０と、出力部５８０と、を備えている。
【００４８】
入力部５１１には、演算対象の８ビット（［７：０］）幅のデータ（Ｉ＿ＤＴ）が入力される。入力部５１１は、入力されたデータを加算回路５５＃１６およびセレクタ５６０へ出力する。入力部５１２には、データの識別信号（Ｉ＿ＥＮ）が入力される。識別信号は、入力部５１１から入力されるデータのＦＥＣエリアとデータエリアの区切りを示す信号である。データのＦＥＣエリアは、たとえば図３−２に示したペイロード３２２である。データのデータエリアは、たとえば図３−２に示したＦＥＣバイト３２３である。
【００４９】
入力部５１１にデータのＦＥＣエリアが入力されている期間は、入力部５１２には識別信号「０」が入力される。また、入力部５１１にデータのデータエリアが入力されている期間は、入力部５１２には識別信号「１」が入力される。識別信号は、たとえば図２に示したＯＴＵ処理部２１１から出力される。入力部５１２は、入力された識別信号をアンド回路５２０およびセレクタ５６０へ出力する。
【００５０】
入力部５１３には、クロック信号（Ｉ＿ＣＬＫ）が入力される。クロック信号は、演算器５００の動作タイミングを示す信号である。クロック信号は、たとえば図２に示したＯＴＵ処理部２１１から出力される。入力部５１３は、入力されたクロック信号をフリップフロップ回路５４＃１〜５４＃１６，５７０へ出力する。
【００５１】
アンド回路５２０は、加算回路５５＃１６から出力されたデータと、入力部５１２から出力された識別信号と、の論理積を出力する。したがって、アンド回路５２０からは、加算回路５５＃１６から出力されたデータのうちのデータエリアの部分のみが出力される。アンド回路５２０から出力されたデータは乗算回路５３＃１〜５３＃１６へ出力される。
【００５２】
乗算回路５３＃１〜５３＃１６は、アンド回路５２０から出力されたデータに対してそれぞれ所定の係数を乗算する。乗算回路５３＃１〜５３＃１６が乗算する係数は、たとえばそれぞれα120，α225，α194，α182，α169，α147，α191，α91，α3，α76，α161，α102，α109，α107，α104，α120である（図５−２参照）。乗算回路５３＃１〜５３＃１６は、係数を乗算したデータをそれぞれフリップフロップ回路５４＃１〜５４＃１６へ出力する。
【００５３】
フリップフロップ回路５４＃１（ＦＦ：Ｆｌｉｐ  Ｆｌｏｐ）は、乗算回路５３＃１から出力されたデータを一時保持し、保持したデータを入力部５１３からのクロック信号が示すタイミングで加算回路５５＃１へ出力する。加算回路５５＃１は、フリップフロップ回路５４＃１から出力されたデータと、乗算回路５３＃２から出力されたデータと、を加算し、加算したデータをフリップフロップ回路５４＃２へ出力する。
【００５４】
フリップフロップ回路５４＃２は、加算回路５５＃１から出力されたデータを一時保持し、保持したデータを入力部５１３からのクロック信号が示すタイミングで加算回路５５＃２へ出力する。加算回路５５＃２は、フリップフロップ回路５４＃２から出力されたデータと、乗算回路５３＃３から出力されたデータと、を加算し、加算したデータをフリップフロップ回路５４＃３へ出力する。
【００５５】
同様に、フリップフロップ回路５４＃Ｍ（Ｍ＝３〜１５）は、加算回路５５＃Ｍ−１から出力されたデータを一時保持し、保持したデータを入力部５１３からのクロック信号が示すタイミングで加算回路５５＃Ｍへ出力する。加算回路５５＃Ｍは、フリップフロップ回路５４＃Ｍから出力されたデータと、乗算回路５３＃Ｍ＋１から出力されたデータと、を加算し、加算したデータをフリップフロップ回路５４＃Ｍ＋１へ出力する。
【００５６】
フリップフロップ回路５４＃１６は、加算回路５５＃１５から出力されたデータを一時保持し、保持したデータを入力部５１３からのクロック信号が示すタイミングで加算回路５５＃１６およびセレクタ５６０へ出力する。加算回路５５＃１６は、フリップフロップ回路５４＃１６から出力されたデータと、入力部５１１から出力されたデータと、を加算し、加算したデータをアンド回路５２０へ出力する。
【００５７】
セレクタ５６０は、入力部５１１から出力されたデータと、フリップフロップ回路５４＃１６から出力されたデータと、のいずれかを入力部５１２からの識別信号に基づいて選択し、選択したデータをフリップフロップ回路５７０へ出力する。具体的には、セレクタ５６０は、識別信号「０」が入力されている場合はフリップフロップ回路５４＃１６から出力されたデータを選択し、識別信号「１」が入力されている場合は入力部５１１から出力されたデータを選択する。これにより、入力部５１１から出力されたデータのデータエリアに対して、フリップフロップ回路５４＃１６から出力されたデータをＦＥＣエリアとして付加してフリップフロップ回路５７０へ出力することができる。これにより、データをＦＥＣによりエンコードすることができる。
【００５８】
フリップフロップ回路５７０は、セレクタ５６０から出力されたデータを一時保持し、保持したデータを入力部５１３からのクロック信号が示すタイミングで出力部５８０へ出力する。出力部５８０はフリップフロップ回路５７０から出力されたデータを演算器５００の後段へ出力する。なお、演算器５００には、フリップフロップ回路５４＃１〜５４＃１６をリセットするリセット信号が入力される入力部などが設けられていてもよい。また、演算器５００は、フリップフロップ回路５７０を省いた構成としてもよい。
【００５９】
図５に示した演算器５００において、たとえば、クロック信号を８３．６６６５８２３［ＭＨｚ］とした場合は、８［ｂｉｔ］×１６の演算処理とすることで、１０［Ｇ］のＯＴＵ２などに対応することができる。
【００６０】
図５−２〜図５−４は、各乗算回路における係数の一例を示す図である。乗算回路５３＃１〜５３＃１６が乗算する係数α120，α225，α194，α182，α169，α147，α191，α91，α3，α76，α161，α102，α109，α107，α104，α120には、たとえば、図５−２，図５−３に示す各係数を用いることができる。
【００６１】
（制御部による各バッファの制御）
図６−１は、制御部による入力データ蓄積バッファの制御の一例を示す図である。図６−１において、横軸は時間を示している。また、図６−１において、メモリ４１１〜４１３をそれぞれ＃０〜＃２として図示する。フレームパルス６０１は、誤り訂正処理回路１００へ入力されるフレームパルスである。フレームパルス６０１は、誤り訂正処理回路１００へ入力されるデータのフレームの先頭を示すパルスである。
【００６２】
入力データ６０２は、誤り訂正処理回路１００へ入力されるデータである。入力データ６０２は、フレームパルス６０１が示すフレームごとに４つのサブフレームを含む。たとえば、入力データ６０２は、１フレーム目として「Ａ−１」〜「Ａ−４」の４つのサブフレームを含む。また、入力データ６０２は、２フレーム目として「Ｂ−１」〜「Ｂ−４」の４つのサブフレームを含む。また、入力データ６０２は、３フレーム目として「Ｃ−１」，「Ｃ−２」，…の４つのサブフレームを含む。
【００６３】
書き込みバッファ切替信号６０３は、制御部１６０のメモリ制御部４６１から出力され、メモリ４１１〜４１３（＃０〜＃２）のうちの入力データ６０２を書き込むメモリの切り替えを指示する信号である。書き込みバッファ切替信号６０３に示すように、メモリ制御部４６１は、入力データ６０２のサブフレームの区切りごとに、入力データ６０２を書き込むメモリを＃０，＃１，＃２，＃０，＃１，＃２，…と切り替える。これにより、入力データ６０２の書き込み先がサブフレームごとにメモリ４１１〜４１３に分散する。
【００６４】
書き込み状態６０４〜６０６は、それぞれメモリ４１１〜４１３（＃０〜＃２）へのデータの書き込みの状態である。書き込み状態６０４に示すように、メモリ４１１は、入力データ６０２が「Ａ−１」，「Ａ−４」，「Ｂ−３」，「Ｃ−２」であるタイミングで書き込みが指示される。このため、メモリ４１１には、「Ａ−１」，「Ａ−４」，「Ｂ−３」，「Ｃ−２」が書き込まれる。
【００６５】
書き込み状態６０５に示すように、メモリ４１２は、入力データ６０２が「Ａ−２」，「Ｂ−１」，「Ｂ−４」であるタイミングで書き込みが指示される。このため、メモリ４１２には、「Ａ−２」，「Ｂ−１」，「Ｂ−４」が書き込まれる。書き込み状態６０６に示すように、メモリ４１３は、入力データ６０２が「Ａ−３」，「Ｂ−２」，「Ｃ−１」であるタイミングで書き込みが指示される。このため、メモリ４１３には、「Ａ−３」，「Ｂ−２」，「Ｃ−１」が書き込まれる。
【００６６】
読み出し開始指示信号６０７は、制御部１６０のメモリ制御部４６１から出力され、メモリ４１１〜４１３（＃０〜＃２）に対して、書き込まれたデータの読み出しの開始を指示する信号である。読み出し開始指示信号６０７に示すように、メモリ制御部４６１は、メモリ４１１〜４１３に対してデータが書き込まれるごとに、書き込まれたデータの読み出しの開始をメモリ４１１〜４１３に指示する。
【００６７】
読み出し状態６０８〜６１０は、それぞれメモリ４１１〜４１３（＃０〜＃２）からのデータの読み出しの状態である。読み出し状態６０８〜６１０に示すように、入力データ６０２の各サブフレームが３つの系統に分散し、それぞれメモリ４１１〜４１３からそれぞれパラレルシリアル変換部４２１〜４２３へ出力される。
【００６８】
図６−２は、制御部による出力データ蓄積バッファの制御および出力データの一例を示す図である。図６−２において、図６−１に示した部分と同様の部分については説明を省略する。また、図６−１においては、メモリ４５１〜４５３をそれぞれ＃０〜＃２として図示する。
【００６９】
書き込み開始指示信号６１１は、メモリ制御部４６２から出力され、メモリ４５１〜４５３（＃０〜＃２）に対してデータの書き込みの開始を指示する信号である。メモリ制御部４６２は、演算器４３１〜４３３によるＦＥＣのエンコードに同期して、演算器４３１〜４３３から出力されるデータの書き込みをそれぞれメモリ４５１〜４５３に指示する。具体的には、メモリ制御部４６２は、メモリ制御部４６１から出力されるリード用フレームパルスおよびメモリ番号情報に基づいて書き込み開始指示信号６１１を出力する。
【００７０】
書き込み状態６１２〜６１４は、それぞれメモリ４５１〜４５３（＃０〜＃２）へのデータの書き込みの状態である。書き込み状態６１２〜６１４に示すように、演算器４３１〜４３３によってエンコードされたデータがそれぞれメモリ４５１〜４５３に書き込まれる。
【００７１】
読み出し開始指示信号６１５は、メモリ制御部４６２から出力され、メモリ４５１〜４５３（＃０〜＃２）に対して、書き込まれたデータの読み出しの開始を指示する信号である。読み出し開始指示信号６１５に示すように、メモリ制御部４６２は、メモリ４５１〜４５３に対してデータが書き込まれるごとに、書き込まれたデータの読み出しの開始をメモリ４５１〜４５３に指示する。
【００７２】
読み出し状態６１６〜６１８は、それぞれメモリ４５１〜４５３（＃０〜＃２）からのデータの読み出しの状態である。読み出し状態６１６〜６１８に示すように、メモリ４５１〜４５３へ書き込まれたデータが順次、メモリ４５１〜４５３から読み出されてパラレルシリアル変換部４７０へ出力される。
【００７３】
フレームパルス６１９は、メモリ４５１〜４５３からパラレルシリアル変換部４７０へ出力されるデータのフレームの先頭を示すパルスである。フレームパルス６１９は、たとえば制御部１６０からパラレルシリアル変換部４７０へ出力される。
【００７４】
出力データ６２０は、パラレルシリアル変換部４７０から出力されるデータを示している。パラレルシリアル変換部４７０は、メモリ４５１〜４５３から出力されたデータを、フレームパルス６１９に同期して切り替えながら出力する。これにより、メモリ４５１〜４５３から出力されたデータがシリアル信号となって出力される。
【００７５】
（入力データ蓄積バッファに対する入力データの書き込み）
図７−１は、入力データの一例を示す図である。図７−１に示すフレームパルス７０１および入力データ７０２は、それぞれ図６−１に示したフレームパルス６０１および入力データ６０２の一例である。入力データ７０２のデータ幅は４８［ｂｙｔｅ］幅である。入力データ７０２の各マスは１６［ｂｙｔｅ］のデータを示している。図７−１に示すように、入力データ７０２の１フレームは、演算器１３１〜１３３に対応して３つのサブフレームに分割される。
【００７６】
たとえば、入力データ７０２は、図７−１に示す１フレーム目においてサブフレーム７１１〜７１３を含んでいる。サブフレーム７１１〜７１３のそれぞれは、１ｒｏｗで４０８０［ｂｙｔｅ］のサブフレームである。図７−１に示すように、入力データ７０２のデータ幅がＮ×１６［ｂｙｔｅ］（Ｎは２５５の約数）となる場合は、サブフレーム単位の境界の列において、サブフレーム間の重なりが発生しない。
【００７７】
図７−２は、入力データ蓄積バッファに対する入力データの書き込みの一例を示す図である。図７−２に示すライトアドレス７２１およびライトイネーブル７３１は、メモリ４１１（＃０）に対する書き込みアドレスおよび書き込み指示信号である。メモリ制御部４６１は、メモリ４１１にサブフレーム７１１が書き込まれるようにライトアドレス７２１およびライトイネーブル７３１を設定する。
【００７８】
ライトアドレス７２２およびライトイネーブル７３２は、メモリ４１２（＃１）に対する書き込みアドレスおよび書き込み信号である。メモリ制御部４６１は、メモリ４１２にサブフレーム７１２が書き込まれるようにライトアドレス７２２およびライトイネーブル７３２を設定する。ライトアドレス７２３およびライトイネーブル７３３は、メモリ４１３（＃２）に対する書き込みアドレスおよび書き込み信号である。メモリ制御部４６１は、メモリ４１３にサブフレーム７１３が書き込まれるようにライトアドレス７２３およびライトイネーブル７３３を設定する。
【００７９】
図７−１，図７−２に示した例では、サブフレーム単位の境界の列においてサブフレーム間の重なりが発生しないため、入力データ７０２を時間的な重なりなしに各サブフレームに分割してメモリ４１１〜４１３に書き込むことができる。このため、各サブフレームの先頭のｒｏｗやメモリ４１１〜４１３に対する書き込み周期（ライトイネーブル７３１〜７３３）が揃う。このため、たとえばメモリ４１１〜４１３に対してそれぞれ制御部を設けなくても、メモリ４１１〜４１３の制御を制御部１６０のメモリ制御部４６１によって簡単に行うことができる。
【００８０】
このように、実施の形態１にかかる誤り訂正処理回路１００によれば、ＦＥＣの演算単位で対象データを分割し、分割した各データのＦＥＣの符号化（エンコード）を複数の演算部により並列で行うことができる。これにより、たとえば演算部のクロック速度を向上させなくても、通信の大容量化を図ることができる。
【００８１】
なお、たとえばＯＴＵ４  ＲＳのＦＥＣのエンコーダを実現するために、ガロア演算の多段処理演算を行うことによって並列演算処理を実現することも考えられる。しかしながら、ガロア演算の多段処理演算では論理処理を複数段繰り返すことになるため、フリップフロップ回路間のクロックに対するタイミングの確保が困難である。
【００８２】
これに対して、誤り訂正処理回路１００によれば、たとえば図５−１に示した演算器５００のように、ガロア演算の多段処理演算を行わなくても並列演算処理を実現することができる。このため、フリップフロップ回路５４＃１〜５４＃１６の間のクロックに対するタイミングの確保が容易であり、より高いレートにおいてもＦＥＣの演算が可能になる。
【００８３】
また、誤り訂正処理回路１００によれば、ＦＥＣの符号化のブロック単位でデータを分割することによって、たとえば図５−１に示した演算器５００のように、ＦＥＣの符号化のブロック単位の基本的な回路によって複数の演算部を実現することができる。これにより、たとえばレートの変更を行う場合に、演算器５００などの基本的な回路を追加または削減して並列数を変更することによって簡単に対応することができる。また、複数の演算部には、レートに依存しない演算器５００などの共通の回路を用いることができるため、回路の共通化を図ることができる。このため、回路の設計や検証が容易になる。
【００８４】
（実施の形態２）
（実施の形態２にかかる誤り訂正処理回路の構成）
図８は、実施の形態２にかかる誤り訂正処理回路の構成例を示す図である。図８において、図１に示した部分と同様の部分については同一の符号を付して説明を省略する。実施の形態２にかかる誤り訂正処理回路１００には、４×１６＝６４［ｂｙｔｅ］幅のデータが入力されるとする。入力データ蓄積バッファ１１０は、入力されたデータを４個のバッファに分割して記憶し、各バッファのデータを入力分割処理部１２０へ出力する。
【００８５】
入力分割処理部１２０は、データを４：１に多重する。入力分割処理部１２０は、多重したデータを演算処理部１３０へ出力する。演算処理部１３０は、並列に設けられた演算器１３１〜１３４を備えている。演算器１３４は、演算器１３１〜１３３と同様の演算器である。出力分割処理部１４０は、演算処理部１３０から出力されたデータを１：４に並列化する。出力分割処理部１４０は、並列化したデータを出力データ蓄積バッファ１５０へ出力する。
【００８６】
（入力データ蓄積バッファに対する入力データの書き込み）
図９−１は、入力データの一例を示す図である。図９−１に示すフレームパルス９０１および入力データ９０２は、それぞれ図８に示した誤り訂正処理回路１００へ入力されるフレームパルスおよび入力データの一例である。入力データ９０２のデータ幅は６４［ｂｙｔｅ］幅である。入力データ９０２の各マスは１６［ｂｙｔｅ］のデータを示している。図９−１に示すように、入力データ９０２の１フレームは演算器１３１〜１３４に対応して４つのサブフレームに分割される。
【００８７】
たとえば、入力データ９０２は、図９−１に示す１フレーム目においてサブフレーム９１１〜９１４を含んでいる。サブフレーム９１１〜９１４のそれぞれは、１ｒｏｗで４０８０［ｂｙｔｅ］のサブフレームである。図９−１に示すように、入力されるデータの幅がたとえば１６×（２のべき乗）［ｂｙｔｅ］の場合は、サブフレーム単位での境界が重複する場合が発生する。
【００８８】
図９−２は、入力データ蓄積バッファに対する入力データの書き込みの一例を示す図である。図９−２において、入力データ蓄積バッファ１１０の４つのメモリ（バッファ）を＃０〜＃３として図示する。図９−２に示すライトアドレス９２１およびライトイネーブル９３１は、メモリ＃０に対する書き込みアドレスおよび書き込み指示信号である。メモリ制御部４６１は、メモリ＃０にサブフレーム９１１が書き込まれるようにライトアドレス９２１およびライトイネーブル９３１を設定する。
【００８９】
ライトアドレス９２２およびライトイネーブル９３２は、メモリ＃１に対する書き込みアドレスおよび書き込み信号である。メモリ制御部４６１は、メモリ＃１にサブフレーム９１２が書き込まれるようにライトアドレス９２２およびライトイネーブル９３２を設定する。ライトアドレス９２３およびライトイネーブル９３３は、メモリ＃２に対する書き込みアドレスおよび書き込み信号である。メモリ制御部４６１は、メモリ＃２にサブフレーム９１３が書き込まれるようにライトアドレス９２３およびライトイネーブル９３３を設定する。ライトアドレス９２４およびライトイネーブル９３４は、メモリ＃３に対する書き込みアドレスおよび書き込み信号である。メモリ制御部４６１は、メモリ＃３にサブフレーム９１４が書き込まれるようにライトアドレス９２４およびライトイネーブル９３４を設定する。
【００９０】
図９−１，図９−２に示した例では、サブフレーム単位での境界の列においてサブフレーム間の重なりが発生する。このため、各サブフレームの先頭のｒｏｗやメモリ４１１〜４１３に対する書き込み周期（ライトイネーブル９３１〜９３３）が揃わない。たとえば、サブフレーム９１１〜９１４の先頭のｒｏｗはそれぞれ１〜４である。また、ライトイネーブル９３１とライトイネーブル９３２、ライトイネーブル９３２とライトイネーブル９３３およびライトイネーブル９３３とライトイネーブル９３４が時間的に重なる。
【００９１】
入力データ９０２を各サブフレームに分割してメモリ＃０〜＃３に書き込む場合は、たとえばメモリ４１１〜４１３に対してそれぞれ制御部を設けることになる。このため、回路が複雑化する。これに対して、入力データ蓄積バッファ１１０において符号境界を調整する機能（たとえば図１０参照）を設け、符号の先頭を揃えてデータをメモリ＃０〜＃３に書き込むようにしてもよい。これにより、回路の簡略化を図ることができる。
【００９２】
（誤り訂正処理回路の具体的な構成例）
図１０は、誤り訂正処理回路の具体的な構成例を示す図である。図１０において、図４に示した部分と同様の部分については同一の符号を付して説明を省略する。図１０に示すように、誤り訂正処理回路１００には４×１６＝６４［ｂｙｔｅ］幅のデータが入力されるとする。入力データ蓄積バッファ１１０は、シフトレジスタ１０１２〜１０１４と、バッファとしてのメモリ４１１〜４１４と、を備えている。入力分割処理部１２０は、パラレルシリアル変換部４２１〜４２４を備えている。
【００９３】
演算処理部１３０は、演算器４３１〜４３４を備えている。出力分割処理部１４０は、シリアルパラレル変換部４４１〜４４４を備えている。出力データ蓄積バッファ１５０は、バッファとしてのメモリ４５１〜４５４と、シフトレジスタ１０５２〜１０５４と、パラレルシリアル変換部４７０と、を備えている。制御部１６０は、メモリ制御部４６１とメモリ制御部４６２とを備えている。
【００９４】
シフトレジスタ１０１２〜１０１４は、分割した複数のデータの境界の整列（アライメント）を行う整列部である。シフトレジスタ１０１２には、誤り訂正処理回路１００へ入力された６４［ｂｙｔｅ］幅のデータのうちの下位１６［ｂｙｔｅ］幅のデータが入力される。シフトレジスタ１０１２は、入力された下位１６［ｂｙｔｅ］幅のデータを１段シフトさせてメモリ４１２へ出力する。メモリ４１２には、誤り訂正処理回路１００へ入力された６４［ｂｙｔｅ］幅のデータのうちの上位４８［ｂｙｔｅ］幅のデータと、シフトレジスタ１０１２から出力された１６［ｂｙｔｅ］幅のデータと、が入力される。
【００９５】
シフトレジスタ１０１３には、誤り訂正処理回路１００へ入力された６４［ｂｙｔｅ］幅のデータのうちの下位３２［ｂｙｔｅ］幅のデータが入力される。シフトレジスタ１０１３は、入力された下位３２［ｂｙｔｅ］幅のデータを１段シフトさせてメモリ４１３へ出力する。メモリ４１３には、誤り訂正処理回路１００へ入力された６４［ｂｙｔｅ］幅のデータのうちの上位３２［ｂｙｔｅ］幅のデータと、シフトレジスタ１０１３から出力された３２［ｂｙｔｅ］幅のデータと、が入力される。
【００９６】
シフトレジスタ１０１４には、誤り訂正処理回路１００へ入力された６４［ｂｙｔｅ］幅のデータのうちの下位４８［ｂｙｔｅ］幅のデータが入力される。シフトレジスタ１０１４は、入力された下位４８［ｂｙｔｅ］幅のデータを１段シフトさせてメモリ４１４へ出力する。メモリ４１４には、誤り訂正処理回路１００へ入力された６４［ｂｙｔｅ］幅のデータのうちの上位１６［ｂｙｔｅ］幅のデータと、シフトレジスタ１０１４から出力された４８［ｂｙｔｅ］幅のデータと、が入力される。
【００９７】
制御部１６０のメモリ制御部４６１は、入力されるフレームパルスに基づいてメモリ４１１〜４１４の制御を行う。また、メモリ制御部４６１は、メモリ４１１〜４１４へそれぞれ読み出し指示信号を出力し、メモリ４１１〜４１４に書き込んだデータをそれぞれパラレルシリアル変換部４２１〜４２４へ出力させる。
【００９８】
パラレルシリアル変換部４２１〜４２４は、それぞれメモリ４１１〜４１４から出力された６４［ｂｙｔｅ］幅のデータを４：１に多重し、１６［ｂｙｔｅ］幅のデータに変換する。パラレルシリアル変換部４２１〜４２４は、変換した１６［ｂｙｔｅ］幅のデータをそれぞれ演算器４３１〜４３４へ出力する。
【００９９】
演算器４３１〜４３４は、それぞれ図８に示した演算器１３１〜１３４に対応する構成である。演算器４３１〜４３４は、それぞれパラレルシリアル変換部４２１〜４２４から出力された１６［ｂｙｔｅ］幅のデータを１６並列の処理によりエンコードする。演算器４３１〜４３４は、エンコードした１６［ｂｙｔｅ］幅のデータをそれぞれシリアルパラレル変換部４４１〜４４４へ出力する。
【０１００】
シリアルパラレル変換部４４１〜４４４は、それぞれ演算器４３１〜４３４から出力された１６［ｂｙｔｅ］幅のデータを１：４に並列化し、６４［ｂｙｔｅ］幅のデータに変換する。シリアルパラレル変換部４４１〜４４４は、変換した６４［ｂｙｔｅ］幅のデータをそれぞれメモリ４５１〜４５４へ出力する。
【０１０１】
メモリ４５１〜４５４のそれぞれは、メモリ制御部４６２から指示される期間において、それぞれシリアルパラレル変換部４４１〜４４４から出力されたデータを記憶する。また、メモリ４５１〜４５４のそれぞれは、メモリ制御部４６２から指示される期間において記憶した６４［ｂｙｔｅ］幅のデータを出力する。メモリ４５１から出力された６４［ｂｙｔｅ］幅のデータはパラレルシリアル変換部４７０へ出力される。
【０１０２】
メモリ４５２から出力された６４［ｂｙｔｅ］幅のデータのうちの下位１６［ｂｙｔｅ］幅のデータはシフトレジスタ１０５２へ出力される。シフトレジスタ１０５２は、メモリ４５２から出力された下位１６［ｂｙｔｅ］幅のデータを１段シフトさせて出力する。メモリ４５２から出力された６４［ｂｙｔｅ］幅のデータのうちの上位４８［ｂｙｔｅ］幅のデータと、シフトレジスタ１０５２から出力された１６［ｂｙｔｅ］幅のデータと、は６４［ｂｙｔｅ］幅のデータとしてパラレルシリアル変換部４７０へ出力される。
【０１０３】
メモリ４５３から出力された６４［ｂｙｔｅ］幅のデータのうちの下位３２［ｂｙｔｅ］幅のデータはシフトレジスタ１０５３へ出力される。シフトレジスタ１０５３は、メモリ４５３から出力された下位３２［ｂｙｔｅ］幅のデータを１段シフトさせて出力する。メモリ４５３から出力された６４［ｂｙｔｅ］幅のデータのうちの上位３２［ｂｙｔｅ］幅のデータと、シフトレジスタ１０５３から出力された３２［ｂｙｔｅ］幅のデータと、は６４［ｂｙｔｅ］幅のデータとしてパラレルシリアル変換部４７０へ出力される。
【０１０４】
メモリ４５４から出力された６４［ｂｙｔｅ］幅のデータのうちの下位４８［ｂｙｔｅ］幅のデータはシフトレジスタ１０５４へ出力される。シフトレジスタ１０５４は、メモリ４５４から出力された下位４８［ｂｙｔｅ］幅のデータを１段シフトさせて出力する。メモリ４５４から出力された６４［ｂｙｔｅ］幅のデータのうちの上位１６［ｂｙｔｅ］幅のデータと、シフトレジスタ１０５３から出力された４８［ｂｙｔｅ］幅のデータと、は６４［ｂｙｔｅ］幅のデータとしてパラレルシリアル変換部４７０へ出力される。
【０１０５】
このように、シフトレジスタ１０５２〜１０５４は、演算器４３１〜４３４によって演算が行われた複数のデータの並びを、シフトレジスタ１０１２〜１０１４による整列前の並びに変換する変換部として機能する。
【０１０６】
パラレルシリアル変換部４７０は、メモリ４５１〜４５４から出力された４×６４［ｂｙｔｅ］幅のデータを４：１に多重し、６４［ｂｙｔｅ］幅のデータに変換する。パラレルシリアル変換部４７０は、変換した６４［ｂｙｔｅ］幅のデータを誤り訂正処理回路１００の後段へ出力する。
【０１０７】
このように、誤り訂正処理回路１００は、１６×Ｎ［ｂｙｔｅ］幅の（図１０ではＮ＝４）データを、入力分割処理部１２０において１６［ｂｙｔｅ］の演算器４３１〜４３４のフォーマットに変換する。この場合において、演算器４３１〜４３４はＮ個使用される。また、誤り訂正処理回路１００は、１６［ｂｙｔｅ］の演算器４３１〜４３４の出力を、出力分割処理部１４０において１６×Ｎ［ｂｙｔｅ］幅に変換する。誤り訂正処理回路１００によれば、入力されるデータのビットレートが高く（たとえば４０［Ｇ］や１００［Ｇ］）なってもパラレル数Ｎを増やすことで処理することができる。
【０１０８】
図１０に示したように、誤り訂正処理回路１００は、シフトレジスタ１０１２〜１０１４によって先頭の整列が行われた複数のデータをメモリ４１１〜４１４に書き込む。そして、誤り訂正処理回路１００は、メモリ４１１〜４１４から読み出された複数のデータに対してそれぞれ演算器４３１〜４３４によるＦＥＣのエンコードを行う。これにより、演算器４３１〜４３４において先頭の整列が行われたデータを処理することができる。
【０１０９】
ただし、誤り訂正処理回路１００はこのような構成に限らず、たとえば、シフトレジスタ１０１２〜１０１４をメモリ４１２〜４１４の後段に設け、分割した複数のデータをメモリ４１１〜４１４に書き込んでもよい。そして、誤り訂正処理回路１００は、メモリ４１１〜４１４から読み出された複数のデータの境界の整列をシフトレジスタ１０１２〜１０１４によって行う。これにより、演算器４３１〜４３４において先頭の整列が行われたデータを処理することができる。
【０１１０】
（入力データ蓄積バッファに対する入力データの書き込み）
図１１は、入力データ蓄積バッファに対する入力データの書き込みの一例を示す図である。図１１において、図９−２に示した部分と同様の部分については同一の符号を付して説明を省略する。メモリ４１２（＃１）に書き込まれるサブフレーム９１２は、シフトレジスタ１０１２によって下位１６［ｂｙｔｅ］が１段シフトしている。メモリ４１３（＃２）に書き込まれるサブフレーム９１３は、シフトレジスタ１０１３によって下位３２［ｂｙｔｅ］が１段シフトしている。メモリ４１４（＃３）に書き込まれるサブフレーム９１４は、シフトレジスタ１０１４によって下位４８［ｂｙｔｅ］が１段シフトしている。
【０１１１】
図１１に示した例では、サブフレーム単位での境界の列においてサブフレーム間の重なりが発生しない。このため、各サブフレームの先頭のｒｏｗやメモリ４１１〜４１４に対する書き込み周期（ライトイネーブル９３１〜９３４）が揃う。たとえば、サブフレーム９１１〜９１４の先頭のｒｏｗはともに１である。また、サブフレーム９１１〜９１４は時間的に重なっていない。
【０１１２】
これにより、たとえばメモリ４１１〜４１４に対してそれぞれ制御部を設けなくても、入力データ９０２を各サブフレームに分割してメモリ４１１〜４１４に書き込むことができる。これにより、回路の簡略化を図ることができる。また、演算器４３１〜４３４において処理するデータの先頭が揃っているため、データの先頭のばらつきを吸収する構成を演算器４３１〜４３４に設けなくてもよいことになる。このため、回路の簡略化を図ることができる。
【０１１３】
このように、実施の形態２にかかる誤り訂正処理回路１００によれば、分割した複数のデータの境界の整列を行い、整列を行った複数のデータに対してそれぞれＦＥＣのエンコード（誤り訂正の演算）を行うことができる。これにより、実施の形態１にかかる誤り訂正処理回路１００と同様の効果を得ることができるとともに、分割したサブフレーム間の重なりが発生しても簡単な構成によってＦＥＣのエンコードを行うことができる。
【０１１４】
（実施の形態３）
実施の形態１，２においては、誤り訂正処理回路１００をＦＥＣエンコーダ２１２に適用する場合について説明したが、誤り訂正処理回路１００をＦＥＣデコーダ２２４に適用してもよい。誤り訂正処理回路１００をＦＥＣデコーダ２２４に適用する場合は、誤り訂正処理回路１００の演算器１３１〜１３４（演算器４３１〜４３４）をＦＥＣデコーダの演算器とする。
【０１１５】
図１２は、ＦＥＣデコーダの演算器の構成例を示す図である。図１２に示す演算器１２００は、誤り訂正処理回路１００の演算器１３１〜１３４（演算器４３１〜４３４）に適用可能なＦＥＣデコーダの演算器である。演算器１２００は、図１２に示すように、データ遅延バッファ１２０１と、シンドローム生成部１２０２と、誤り多項式算出部１２０３と、誤り算出部１２０４と、誤り訂正部１２０５と、を備えている。
【０１１６】
ＦＥＣデコーダ２２４には、たとえば８［ｂｙｔｅ］幅のデータが入力される。ＦＥＣデコーダ２２４へ入力されたデータは、データ遅延バッファ１２０１およびシンドローム生成部１２０２へ入力される。
【０１１７】
データ遅延バッファ１２０１は、入力されたデータを、シンドローム生成部１２０２、誤り多項式算出部１２０３および誤り算出部１２０４による誤り訂正演算にかかる時間だけ遅延させる。データ遅延バッファ１２０１は、遅延させたデータを誤り訂正部１２０５へ出力する。
【０１１８】
シンドローム生成部１２０２は、データ遅延バッファ１２０１から出力されたデータのシンドローム演算を行い、シンドローム値を生成する。シンドローム生成部１２０２によるシンドローム演算は、たとえばＲＳ（２５５，２３９）に基づくシンドローム演算である。シンドローム生成部１２０２は、生成したシンドローム値を誤り多項式算出部１２０３へ出力する。
【０１１９】
誤り多項式算出部１２０３は、シンドローム生成部１２０２から出力されたシンドローム値に基づいて、誤り位置多項式および誤り数値多項式を導出する。誤り位置多項式および誤り数値多項式の導出には、たとえばＥｕｃｌｉｄ法などを用いることができる。誤り多項式算出部１２０３は、導出した誤り位置多項式および誤り数値多項式を誤り算出部１２０４へ出力する。
【０１２０】
誤り算出部１２０４は、誤り多項式算出部１２０３から出力された誤り位置多項式および誤り数値多項式に基づいて、ＦＥＣデコーダ２２４へ入力されたデータの誤り位置および誤り数値を導出する。誤り位置および誤り数値には、たとえばｃｈｉｅｎ探索法などを用いることができる。誤り算出部１２０４は、導出した誤り位置および誤り数値を誤り訂正部１２０５へ出力する。
【０１２１】
誤り訂正部１２０５は、データ遅延バッファ１２０１から出力されたデータを、誤り算出部１２０４から出力された誤り位置および誤り数値に基づいて訂正する。誤り訂正部１２０５は、訂正したデータをＦＥＣデコーダ２２４の後段へ出力する。
【０１２２】
このように、実施の形態３にかかる誤り訂正処理回路１００によれば、誤り訂正の演算単位で対象データを分割し、分割した各データの誤り訂正の復号（デコード）を複数の演算部により並列で行うことができる。これにより、実施の形態１にかかる誤り訂正処理回路１００と同様に、通信の大容量化を図ることができる。
【０１２３】
以上説明したように、誤り訂正処理回路および誤り訂正処理方法によれば、通信の大容量化を図ることができる。
【０１２４】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）入力されたデータを所定のデータ長ごとに分割する分割部と、
並列に設けられ、前記分割部によって分割された複数のデータに対してそれぞれ誤り訂正の演算を行う複数の演算部と、
前記複数の演算部によって演算が行われた複数のデータを多重する多重部と、
前記多重部によって多重されたデータを出力する出力部と、
を備えることを特徴とする誤り訂正処理回路。
【０１２６】
（付記２）前記複数のデータの境界の整列を行う整列部を備え、
前記複数の演算部は、前記整列部によって整列が行われた複数のデータに対してそれぞれ前記誤り訂正の演算を行うことを特徴とする付記１に記載の誤り訂正処理回路。
【０１２７】
（付記３）前記整列部によって整列が行われた複数のデータがそれぞれ書き込まれる複数のメモリを備え、
前記複数の演算部は、前記複数のメモリから読み出された複数のデータに対してそれぞれ前記誤り訂正の演算を行うことを特徴とする付記２に記載の誤り訂正処理回路。
【０１２８】
（付記４）前記分割部によって分割された複数のデータがそれぞれ書き込まれる複数のメモリを備え、
前記整列部は、前記複数のメモリから読み出された複数のデータの境界の整列を行うことを特徴とする付記２に記載の誤り訂正処理回路。
【０１２９】
（付記５）前記複数の演算部によって演算が行われた複数のデータの並びを、前記整列部による整列前の並びに変換する変換部を備え、
前記多重部は、前記変換部によって並びが変換された複数のデータを多重することを特徴とする付記２〜４のいずれか一つに記載の誤り訂正処理回路。
【０１３０】
（付記６）前記分割部によって分割された複数のデータを前記複数の演算部のそれぞれのバス幅となるようにシリアル変換するシリアル変換部を備え、
前記複数の演算部は、前記シリアル変換部によってシリアル変換された複数のデータに対してそれぞれ前記誤り訂正の演算を行うことを特徴とする付記１〜５のいずれか一つに記載の誤り訂正処理回路。
【０１３１】
（付記７）前記複数の演算部によって演算が行われた複数のデータを前記シリアル変換部によるシリアル変換前のバス幅となるようにパラレル変換するパラレル変換部を備え、
前記多重部は、前記パラレル変換部によってパラレル変換された複数のデータを多重することを特徴とする付記６に記載の誤り訂正処理回路。
【０１３２】
（付記８）前記分割部は、前記入力されたデータを前記誤り訂正の符号化のブロック単位で分割することを特徴とする付記１〜７のいずれか一つに記載の誤り訂正処理回路。
【０１３３】
（付記９）前記複数の演算部は、前記複数のデータに対してそれぞれ前記誤り訂正の符号化の演算を行うことを特徴とする付記１〜８のいずれか一つに記載の誤り訂正処理回路。
【０１３４】
（付記１０）前記複数の演算部は、前記複数のデータに対してそれぞれ前記誤り訂正の復号の演算を行うことを特徴とする付記１〜８のいずれか一つに記載の誤り訂正処理回路。
【０１３５】
（付記１１）入力されたデータを所定のデータ長ごとに分割し、
並列に設けられた複数の演算部により、分割した複数のデータに対してそれぞれ誤り訂正の演算を行い、
演算を行った前記複数のデータを多重し、
多重したデータを出力することを特徴とする誤り訂正処理方法。
【符号の説明】
【０１３６】
２００  通信システム
２０１  光伝送路
４２１〜４２４，４７０  パラレルシリアル変換部
４４１〜４４４  シリアルパラレル変換部
５１１〜５１３  入力部
５２０  アンド回路
５４＃１〜５４＃１６  フリップフロップ回路
５６０  セレクタ
５８０  出力部
６０１，６１９，７０１，９０１  フレームパルス
【図１】
0005810670.tif 000002
【図２】
0005810670.tif 000003
【図３−１】
0005810670.tif 000004
【図３−２】
0005810670.tif 000005
【図４】
0005810670.tif 000006
【図５−１】
0005810670.tif 000007
【図５−２】
0005810670.tif 000008
【図５−３】
0005810670.tif 000009
【図５−４】
0005810670.tif 000010
【図６−１】
0005810670.tif 000011
【図６−２】
0005810670.tif 000012
【図７−１】
0005810670.tif 000013
【図７−２】
0005810670.tif 000014
【図８】
0005810670.tif 000015
【図９−１】
0005810670.tif 000016
【図９−２】
0005810670.tif 000017
【図１０】
0005810670.tif 000018
【図１１】
0005810670.tif 000019
【図１２】
0005810670.tif 000020