(57)【要約】【課題】回路規模の拡大を抑え、演算誤差の発生を抑えた演算回路を提供する。【解決手段】演算ブロックが少なくとも２つ以上接続された演算回路であって、前記演算ブロックは、入力データを、補正データを用いて補正し、補正後データを生成する補正手段と、前記補正後データの演算処理を行う演算手段と、前記入力データ、および、前記演算手段によって演算処理が行われた前記補正後データのいずれかを選択する選択手段と、前記選択手段が選択したデータと、当該演算ブロックに接続された他の演算ブロックの演算手段で利用するデータのビット精度とに基づいて、出力データおよび前記補正データを生成し、生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する出力手段と、を備え、前記出力手段は、前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、前記出力データを生成する、演算回路。【選択図】      図１
2015095100.tif 000002
【特許請求の範囲】
【請求項１】
演算ブロックが少なくとも２つ以上接続された演算回路であって、
前記演算ブロックは、
当該演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する補正手段と、
前記補正後データの演算処理を行う演算手段と、
前記入力データ、および、前記演算手段によって演算処理が行われた前記補正後データのいずれかを選択する選択手段と、
前記選択手段が選択したデータと、当該演算ブロックに接続された他の演算ブロックの演算手段で利用するデータのビット精度とに基づいて、出力データおよび前記補正データを生成し、生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する出力手段と、を備え、
前記出力手段は、前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、前記出力データを生成する、ことを特徴とする演算回路。
【請求項２】
前記補正手段は、前記入力データと前記補正データとを加算することによって、前記補正後データを生成し、
前記出力手段は、前記補正後データが、前記入力データを前記ビット精度に丸めたデータとなるように、前記補正データを生成する、ことを特徴とする請求項１に記載の演算回路。
【請求項３】
前記演算ブロックは、前記補正手段と、前記演算手段とをバイパスするバイパス経路を有し、
前記選択手段が選択する前記入力データは、前記バイパス経路を介したデータである、ことを特徴とする請求項１または２に記載の演算回路。
【請求項４】
演算ブロックが少なくとも２つ以上接続された演算回路であって、
前記演算ブロックは、
当該演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する補正手段と、
前記補正後データの演算処理を行う演算手段と、
前記演算処理が行われた前記補正後データと、当該演算ブロックに接続された他の演算ブロックの演算手段で利用するデータのビット精度とに基づいて、第１の出力データおよび前記補正データを生成する出力手段と、
前記入力データと、前記ビット精度とに基づいて、第２の出力データおよび前記補正データを生成するバイパス手段と、
前記出力手段の出力、および、前記バイパス手段の出力のいずれかを選択し、選択した出力を前記他の演算ブロックに出力する選択手段と、を備え、
前記バイパス手段は、前記補正手段と、前記演算手段とをバイパスするバイパス経路上に設けられ、
前記第１の出力データは、前記演算処理が行われた前記補正後データを前記ビット精度になるように切り捨てることによって生成され、
前記第２の出力データは、前記入力データを前記ビット精度になるように切り捨てることによって生成される、ことを特徴とする演算回路。
【請求項５】
前記補正手段は、前記入力データと前記補正データとを加算することによって、前記補正後データを生成し、
前記出力手段および前記バイパス手段は、前記補正後データが、前記入力データを前記ビット精度に丸めたデータとなるように、前記補正データを生成する、ことを特徴とする請求項４に記載の演算回路。
【請求項６】
演算ブロックが少なくとも２つ以上接続された演算回路の演算処理方法であって、
前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成し、
前記補正後データの演算処理を行い、
前記入力データ、および、前記演算処理が行われた前記補正後データのいずれかを選択し、
前記選択したデータと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、前記補正データを生成し、
前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、出力データを生成し、
生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する、ことを特徴とする演算処理方法。
【請求項７】
演算ブロックが少なくとも２つ以上接続された演算回路の演算処理方法であって、
前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成し、
前記補正後データの演算処理を行い、
前記演算処理が行われた前記補正後データと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、第１の補正データを生成し、
前記演算処理が行われた前記補正後データを前記ビット精度になるように切り捨てることによって第１の出力データを生成し、
前記入力データと、前記ビット精度とに基づいて、前記第２の補正データを生成し、
前記入力データを前記ビット精度になるように切り捨てることによって第２の出力データを生成し、
前記第１の補正データおよび前記第１の出力データ、または、前記第２の補正データおよび前記第２の出力データ、を選択し、
前記選択した第１の補正データまたは前記第２の補正データを、前記補正データとして、前記第１の補正データまたは前記第２の補正データと共に選択した前記第１の出力データまたは前記第２の出力データと共に、前記他の演算ブロックに出力する、ことを特徴とする、演算処理方法。
【請求項８】
演算ブロックが少なくとも２つ以上接続された演算回路を含むコンピュータに、
前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する処理と、
前記補正後データの演算処理を行う処理と、
前記入力データ、および、前記演算処理が行われた前記補正後データのいずれかを選択する処理と、
前記選択したデータと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、前記補正データを生成する処理と、
前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、出力データを生成する処理と、
生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する処理と、を実行させることを特徴とするプログラム。
【請求項９】
演算ブロックが少なくとも２つ以上接続された演算回路を含むコンピュータに、
前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する処理と、
前記補正後データの演算処理を行う処理と、
前記演算処理が行われた前記補正後データと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、第１の補正データを生成する処理と、
前記演算処理が行われた前記補正後データを前記ビット精度になるように切り捨てることによって第１の出力データを生成する処理と、
前記入力データと、前記ビット精度とに基づいて、前記第２の補正データを生成する処理と、
前記入力データを前記ビット精度になるように切り捨てることによって第２の出力データを生成する処理と、
前記第１の補正データおよび前記第１の出力データ、または、前記第２の補正データおよび前記第２の出力データ、を選択する処理と、
前記選択した第１の補正データまたは前記第２の補正データを、前記補正データとして、前記第１の補正データまたは前記第２の補正データと共に選択した前記第１の出力データまたは前記第２の出力データと共に、前記他の演算ブロックに出力する処理と、を実行させることを特徴とする、プログラム。
【請求項１０】
請求項８または９に記載のプログラムを記録する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算回路、演算処理方法、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年、光通信の分野では、通信路で起きる様々な歪をデジタル信号処理技術で補償可能とするデジタルコヒーレント光通信技術が着目されている。歪を補償する方法が多数存在すること、および、消費電力を下げる要求があることから、現在では、光デジタルコヒーレント受信用ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）に実装した補償回路の中から使用用途に応じて補償回路を選択して使用したい、といった要求がある。また、ＬＳＩの観点で見れば、一部の補償回路の機能にバグが存在したとき、その機能を迂回させても問題がなければ、そのＬＳＩを使用することができるため、ＬＳＩの再製造コストを削減することができる。
【０００３】
光デジタルコヒーレント受信器のように大量のデータを処理するＬＳＩでは、処理するデータが１ビットでも増加すると、並列数分、回路規模が増加する問題がある。
【０００４】
そのため、このようなＬＳＩでは、すべての数値演算処理を行う機能回路でビット長の最適化が行われる。数値演算処理を行う各機能回路では、それぞれ異なるビット長が使用されることが多い。さらに、光デジタルコヒーレント受信器では光ファイバ等でおきる歪みを補償するために、数十以上の機能回路が縦続して接続されることが多い。特に非特許文献１に記載の非線形補償においては、線形補償と非線形補償が増幅器分必要となり、その数はゆうに数十を超える。
【０００５】
数値演算処理を行う手段が複数縦続した構成の回路において、各手段で必要となるビット精度が異なる場合、丸め処理が行われる。特許文献１には、２の補数形式の数値を丸めてｎ個少ないビットの数値にする装置が記載されている。この丸め処理により、四捨五入（ＬＳＩの世界では０捨１入）が行われる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特公昭５８−３８８１１号公報
【非特許文献】
【０００７】
【非特許文献１】Liang B. Du and Arthur J. Lowery, "Improved single channel backpropagation for intra-channel fiber nonlinearity compensation in long-haul optical communication systems", Optics Express, Aug. 2010, Vol.18, Issue 16, p.17075-17088
【発明の概要】
【発明が解決しようとする課題】
【０００８】
数値演算処理を行う手段が複数縦続した構成の回路について、図面を参照して説明する。
【０００９】
図６は、数値演算処理を行う機能回路ブロックが複数連続した構成の演算回路１００の一例を示す図である。図６に示すように、演算回路１００は、数値演算部Ａを備えた機能回路ブロックＡ、数値演算部Ｂを備えた機能回路ブロックＢおよび数値演算部Ｃを備えた機能回路ブロックＣの３つの機能回路ブロックを備えている。
【００１０】
図６では、各数値演算部におけるビット精度を括弧で示している。図６に示す通り、機能回路ブロックＡにおける数値演算部Ａで使用されるデータのビット精度は、１０ビットである。つまり、数値演算部Ａから出力されるビット精度は１０ビットである。また、数値演算部Ｂのビット精度は８ビットであり、数値演算部Ｃのビット精度は６ビットであるとする。
【００１１】
このように、各数値演算部で使用するビット精度が異なるため、各機能回路ブロックは次の機能回路ブロックにデータを渡す前に、丸め処理（０捨１入）を行う丸め処理部を備えている。図６では、各丸め処理部において、あるビットから他のビットに丸める場合のビット精度を、矢印を用いて括弧内に示している。図６に示す通り、機能回路ブロックＡの丸め処理部Ａは、１０ビットから８ビットへの丸め処理を行う。同様に機能回路ブロックＢの丸め処理部Ｂは、８ビットから６ビットへの丸め処理を行う。
【００１２】
また、機能回路ブロックＢには、数値演算部Ｂの数値演算処理をバイパスする経路を有している。バイパスする経路には、機能回路ブロックＣに数値データを出力するために、機能回路ブロックＢの入力データを機能回路ブロックＣのビット精度にするためのバイパス部が備えられている。つまり、バイパス部は、入力データのビット精度を機能回路ブロックＣのビット精度に合わせるために丸め処理を行う。バイパス部は、丸め処理部Ｂと同様の丸め処理を行う。したがって、機能回路ブロックＢのバイパス部は、８ビットから６ビットへの丸め処理を行う。
【００１３】
さらに、機能回路ブロックＢは、上位装置（図示しない）からの指示に従い、数値演算部Ｂの出力および数値演算部Ｂの数値演算処理を行っていないデータ（すなわち、バイパス部の出力）の何れかを選択する選択部を備えている。機能回路ブロックＢには機能回路ブロックＣが縦続しているため、上記選択部によって選択された、６ビットの数値データは、機能回路ブロックＣに入力する。
【００１４】
ここで、数値演算部Ａにて演算処理が行われ、数値演算部Ｂの演算処理が行われないデータについて考える。図６に示す演算回路１００では、数値演算部Ａの出力データは、丸め処理部Ａとバイパス部との２か所で丸め処理が行われる。
【００１５】
１０ビットから６ビットへの丸め処理の結果について、図７を参照して説明する。図７は、１回の丸め処理で１０ビットから６ビットにデータを丸めた結果と、２回の丸め処理（１０ビットから８ビットへの丸め処理および８ビットから６ビットへの丸め処理）で１０ビットから６ビットにデータを丸めた結果とを示す図である。図２の横軸は、丸め処理前の１０ビットのデータ値（指数部のビット数が０）を示し、縦軸は、丸め処理後の６ビットのデータ値（指数部のビット数が０）を示している。また、図７では、１回の丸め処理で１０ビットから６ビットにデータを丸めた結果を、黒の四角（図７における「ｉｄｅａｌ」）で表している。また、図７では、２回の丸め処理で１０ビットから６ビットにデータを丸めた結果を、白抜きの四角（図７における「ｄｏｕｂｌｅ  ｒｏｕｎｄｉｎｇ」）で表している。
【００１６】
図７に示す通り、１０ビットのデータ値のうち、「−１０」のデータ値は、１回の丸め処理では、「−１」となる。しかし、「−１０」のデータ値は、２回の丸め処理で「０」となる。同様に、１０ビットのデータ値のうち、「−９」、「６」、「７」、「２２」および「２３」等も、１回の丸め処理後の値と、２回の丸め処理後の値とで、結果が異なっていることがわかる。
【００１７】
このような計算誤差は演算回路には好ましくなく、特に光デジタルコヒーレント受信器や無線通信では負のＤＣ（Ｄｉｒｅｃｔ  Ｃｕｒｒｅｎｔ）オフセットが生じるため、ビットエラー率をあげてしまう問題がある。
【００１８】
このような誤差をなくす方法として、丸め処理を行う対象となるデータに対し、丸め処理を１回しか行わない方法が考えられる。この方法について、図８を参照して、説明する。図８は、数値演算処理を行う機能回路ブロックが複数連続した構成の演算回路２００の他の例を示す図である。
【００１９】
図８に示す通り、各数値演算部の出力データは、他の演算処理回路に入力する前に、１回のみ丸め処理を行っている。このように構成することにより、図７に示したような誤差は生じない。
【００２０】
しかしながらこの方法は、多数の数値演算処理を行う機能回路ブロックが縦続するような場合、回路規模が大きくなってしまうという問題がある。図９に４つの機能回路ブロックが縦続する演算回路３００の構成の一例を示す。
【００２１】
図９に示す通り、数値演算部をバイパスする経路を有する機能回路ブロックが２つ（機能回路ブロックＢおよび機能回路ブロックＣ）縦続した構成の場合、３つのバイパス部が必要となる。つまり、数値演算部をバイパスする経路（バイパス経路）を有する機能回路ブロックがＮ個の演算回路の場合、当該演算回路には、２＾Ｎ−１個のバイパス経路および当該バイパス経路上に対応する丸め処理部（つまり、図９におけるバイパス部）が必要となる。したがって、このような演算回路は、回路規模が大きくなってしまう。
【００２２】
以上のように、図６に示すように数値演算処理を行う機能回路ブロックを通るためのパスが複数あるような場合、数値演算処理結果に誤差が生じる可能性がある。
【００２３】
また、図９に示すように、演算回路に、数値演算部をバイパスする経路を有する機能回路ブロックが複数ある場合、回路規模が大きくなってしまうという問題がある。
【００２４】
本発明は、上記課題に鑑みてなされたものであり、演算処理を行うブロックが複数縦続する場合であっても、回路規模の拡大を抑え、演算誤差の発生を抑えた演算回路を提供することにある。
【課題を解決するための手段】
【００２５】
本発明の一態様に係る演算回路は、演算ブロックが少なくとも２つ以上接続された演算回路であって、前記演算ブロックは、当該演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する補正手段と、前記補正後データの演算処理を行う演算手段と、前記入力データ、および、前記演算手段によって演算処理が行われた前記補正後データのいずれかを選択する選択手段と、前記選択手段が選択したデータと、当該演算ブロックに接続された他の演算ブロックの演算手段で利用するデータのビット精度とに基づいて、出力データおよび前記補正データを生成し、生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する出力手段と、を備え、前記出力手段は、前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、前記出力データを生成する。
【００２６】
本発明の一態様に係る演算回路は、演算ブロックが少なくとも２つ以上接続された演算回路であって、前記演算ブロックは、当該演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する補正手段と、前記補正後データの演算処理を行う演算手段と、前記演算処理が行われた前記補正後データと、当該演算ブロックに接続された他の演算ブロックの演算手段で利用するデータのビット精度とに基づいて、第１の出力データおよび前記補正データを生成する出力手段と、前記入力データと、前記ビット精度とに基づいて、第２の出力データおよび前記補正データを生成するバイパス手段と、前記出力手段の出力、および、前記バイパス手段の出力のいずれかを選択し、選択した出力を前記他の演算ブロックに出力する選択手段と、を備え、前記バイパス手段は、前記補正手段と、前記演算手段とをバイパスするバイパス経路上に設けられ、前記第１の出力データは、前記演算処理が行われた前記補正後データを前記ビット精度になるように切り捨てることによって生成され、前記第２の出力データは、前記入力データを前記ビット精度になるように切り捨てることによって生成される。
【００２７】
本発明の一態様に係る演算処理方法は、演算ブロックが少なくとも２つ以上接続された演算回路の演算処理方法であって、前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成し、前記補正後データの演算処理を行い、前記入力データ、および、前記演算処理が行われた前記補正後データのいずれかを選択し、前記選択したデータと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、前記補正データを生成し、前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、出力データを生成し、生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する。
【００２８】
本発明の一態様に係る演算処理方法は、演算ブロックが少なくとも２つ以上接続された演算回路の演算処理方法であって、前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成し、前記補正後データの演算処理を行い、前記演算処理が行われた前記補正後データと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、第１の補正データを生成し、前記演算処理が行われた前記補正後データを前記ビット精度になるように切り捨てることによって第１の出力データを生成し、前記入力データと、前記ビット精度とに基づいて、前記第２の補正データを生成し、前記入力データを前記ビット精度になるように切り捨てることによって第２の出力データを生成し、前記第１の補正データおよび前記第１の出力データ、または、前記第２の補正データおよび前記第２の出力データ、を選択し、前記選択した第１の補正データまたは前記第２の補正データを、前記補正データとして、前記第１の補正データまたは前記第２の補正データと共に選択した前記第１の出力データまたは前記第２の出力データと共に、前記他の演算ブロックに出力する。
【００２９】
本発明の一態様に係るプログラムは、演算ブロックが少なくとも２つ以上接続された演算回路を含むコンピュータに、前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する処理と、前記補正後データの演算処理を行う処理と、前記入力データ、および、前記演算処理が行われた前記補正後データのいずれかを選択する処理と、前記選択したデータと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、前記補正データを生成する処理と、前記選択手段が選択したデータを前記ビット精度になるように切り捨てることによって、出力データを生成する処理と、生成した前記出力データおよび前記補正データを前記他の演算ブロックに出力する処理と、を実行させる。
【００３０】
本発明の一態様に係るプログラムは、演算ブロックが少なくとも２つ以上接続された演算回路を含むコンピュータに、前記演算ブロックに入力された入力データを、補正データを用いて補正し、補正後データを生成する処理と、前記補正後データの演算処理を行う処理と、前記演算処理が行われた前記補正後データと、前記演算ブロックに接続された他の演算ブロックの演算処理で利用するデータのビット精度とに基づいて、第１の補正データを生成する処理と、前記演算処理が行われた前記補正後データを前記ビット精度になるように切り捨てることによって第１の出力データを生成する処理と、前記入力データと、前記ビット精度とに基づいて、前記第２の補正データを生成する処理と、前記入力データを前記ビット精度になるように切り捨てることによって第２の出力データを生成する処理と、前記第１の補正データおよび前記第１の出力データ、または、前記第２の補正データおよび前記第２の出力データ、を選択する処理と、前記選択した第１の補正データまたは前記第２の補正データを、前記補正データとして、前記第１の補正データまたは前記第２の補正データと共に選択した前記第１の出力データまたは前記第２の出力データと共に、前記他の演算ブロックに出力する処理と、を実行させる。
【発明の効果】
【００３１】
本発明によれば、演算処理を行うブロックが複数縦続する場合であっても、回路規模の拡大を抑え、演算誤差の発生を抑えることができる。
【図面の簡単な説明】
【００３２】
【図１】第１の実施の形態に係る演算回路の構成の一例を示すブロック図である。
【図２】数値データのデータ長を１０ビットから６ビットにした場合の、丸め処理での結果と、切り捨て処理での結果とを示す図である。
【図３】第１の実施の形態に係る演算回路の処理の流れの一例を示すフローチャートである。
【図４】第２の実施の形態に係る演算回路の構成の一例を示すブロック図である。
【図５】第３の実施の形態に係る演算回路の構成の一例を示すブロック図である。
【図６】数値演算処理を行う機能回路ブロックが複数連続した構成の演算回路の一例を示す図である。
【図７】１回の丸め処理で１０ビットから６ビットにデータを丸めた結果と、２回の丸め処理で１０ビットから６ビットにデータを丸めた結果とを示す図である。
【図８】数値演算処理を行う機能回路ブロックが複数連続した構成の演算回路の他の例を示す図である。
【図９】数値演算処理を行う機能回路ブロックが複数連続した構成の演算回路の更に他の例を示す図である。
【発明を実施するための形態】
【００３３】
＜第１の実施の形態＞
以下に、本発明の第１の実施の形態について、図面を参照して詳細に説明する。
【００３４】
（演算回路１）
図１は、本実施の形態に係る演算回路の構成の一例を示すブロック図である。
【００３５】
図１に示す通り、本実施の形態に係る演算回路１は、複数の演算ブロック１０を備えている。複数の演算ブロック１０は、縦続している。図１では、２つの演算ブロック１０が接続している構成を例に説明を行うが、演算ブロック１０の数はこれに限定されない。また、本実施の形態では、説明の便宜上、各演算ブロック１０を特定して説明する場合、左側の演算ブロック１０を演算ブロック１０ａと呼び、演算ブロック１０ａの出力を入力する演算ブロック１０を演算ブロック１０ｂと呼ぶ。
【００３６】
また、図１において、実線の矢印は、数値データを示し、破線の矢印は、補正データを示している。
【００３７】
演算ブロック１０は、補正部１１、演算部１２、選択部１３および出力部１４を備えている。また、演算ブロック１０は、補正部１１および演算部１２をバイパスするバイパス経路１９を有している。
【００３８】
なお、図１に示す演算回路１の各部は、ハードウェアによって実現されている。例えば、上記各部は、ＬＳＩ、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などの半導体で実現される。なお、各部が一つの半導体で実現されてもいいし、複数の部が一つの半導体で実現されてもよい。また、複数の機能ブロックが一つの半導体で実現されてもよい。また各部がＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのプロセッサで処理される構成であってもよい。
【００３９】
補正部１１は、演算ブロック１０に入力された数値データと補正データとを他の演算ブロック１０から受信する。補正部１１は、補正データを用いて数値データを補正し、補正後の数値データを生成する手段である。補正部１１は、生成した補正後データを演算部１２に供給する。以降、演算ブロックに入力された数値データを入力データとも呼び、補正後の数値データを補正後データとも呼ぶ。入力データ、補正データおよび補正後データについては、後述する。
【００４０】
なお、入力データと補正データとを当該補正部１１に供給する他の演算ブロックを前段の演算ブロックとも呼ぶ。図１においては、演算ブロック１０ｂから見た場合、前段の演算ブロックは、演算ブロック１０ａとなる。
【００４１】
演算部１２は、補正部１１から補正後データを受信し、受信した補正後データの演算処理を行う手段である。演算部１２は、例えば、高速フーリエ変換（ＦＦＴ：Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）、離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）、ウェーブレット変換などの変換を行う。また、演算部１２は、デジタル信号処理を行う手段であってもよく、例えば、有限インパルス応答（ＦＩＲ：Ｆｉｎｉｔｅ  ｉｍｐｕｌｓｅ  ｒｅｓｐｏｎｓｅ）フィルタであってもよい。また、演算部１２は、算術符号化を行う手段であってもよい。本実施の形態に係る演算部１２の機能については、特に限定されない。演算部１２は、演算処理を行った補正後データを選択部１３に供給する。
【００４２】
バイパス経路１９は、補正部１１および演算部１２をバイパスし、演算ブロック１０に入力された入力データを、選択部１３に供給するための経路である。
【００４３】
選択部１３は、バイパス経路１９を通って当該選択部１３に供給された入力データと、演算部１２から出力された数値データ（演算処理が行われた補正後データ）との何れかを、例えば、上位装置（図示しない）からの指示に従い、選択する手段である。選択部１３は、選択した数値データを出力部１４に供給する。なお、選択部１３が何れの数値データを選択するかは、上位装置からの指示に限定されず、例えば、演算回路以外の回路からの指示に従って、選択してもよい。
【００４４】
出力部１４は、選択部１３が選択した数値データ（補正後データまたは入力データ）を受信し、受信した数値データと自身の演算ブロック１０に接続された他の演算ブロック１０の演算部１２で演算処理に使用するビット精度とに基づいて、補正データを生成する。選択部１３が選択した数値データのビット長をｍ、上記他の演算ブロック１０のビット精度に相当するビット長をｎとすると、ｍ＞ｎである。
【００４５】
また、出力部１４は、選択部１３から受信した数値データを、自身の演算ブロック１０に接続された他の演算ブロック１０の演算部１２での演算処理に使用するビット精度にするために、上記数値データを上記ビット精度に切り捨てる処理を行う。そして、出力部１４は、切り捨て処理を行った数値データ（出力データとも呼ぶ）と補正データとを、自身の演算ブロック１０に接続された他の演算ブロックに出力する。
【００４６】
なお、自身の演算ブロック１０に接続されており、出力部１４から数値データと補正データとを出力する際の出力先となる他の演算ブロックを、後段の演算ブロックとも呼ぶ。図１において、自身の演算ブロックを演算ブロック１０ａとした場合、後段の演算ブロックは、演算ブロック１０ｂとなる。後段の演算ブロックにおいては、上記出力データが入力データとなる。
【００４７】
次に、入力データ、補正データおよび補正後データについて詳細に説明する。
【００４８】
入力データは、演算ブロック１０の演算部１２における演算処理で使用するビット精度のビット長を有する数値データである。入力データは、前段の演算ブロック１０の出力部１４から出力される出力データである。
【００４９】
例えば、出力部１４に入力された数値データが１０ビットであり、後段の演算ブロックの演算部１２で演算処理に使用するビット精度が６ビットである場合、出力部１４は、入力された１０ビットの数値データが６ビットになるように、下位４ビットを切り捨てる処理を行う。例えば、出力部１４に入力された数値データが、”００１０＿１００１＿０１”（なお、”＿”は見やすくするための区切り文字）の場合、出力部１４は、出力データ”００１０＿１０”を生成し、出力する。
【００５０】
補正データは、上記のように切り捨て処理を行った数値データの誤差を補正するためのデータである。例えば、１０ビットの数値データを６ビットの数値データにする場合、丸め処理と切り捨て処理との間には、誤差が生じる。これを図２に示す。図２は、数値データのデータ長を１０ビットから６ビットにした場合の、丸め処理での結果と、切り捨て処理での結果とを示す図である。図２の横軸は、処理前の１０ビットのデータ値（指数部のビット数が０）を示し、縦軸は、処理後の６ビットのデータ値（指数部のビット数が０）を示している。また、図２では、切り捨て処理を行った結果を、黒の四角（図２における「ｔｒｕｎｃａｔｅ」）で表している。また、図２では、丸め処理を行った結果を、白抜きの四角（図２における「ｒｏｕｎｄ」）で表している。
【００５１】
補正データは、それを切り捨て処理後の数値データ（図２における「ｔｒｕｎｃａｔｅ」）に加える（加算する）ことで、丸め処理後の数値データ（図２における「ｒｏｕｎｄ」）になるように、当該切り捨て処理後の数値データを補正するデータである。本実施の形態における補正データは、切り捨てられるビットのうち、最上位ビットの数値となる。
【００５２】
例えば、−１６から１５の３２個の入力データであって、１０ビットから６ビットに切り捨てを行う数値データに対する補正データの値は、以下の（ａ）〜（ｄ）で表すことができる。
（ａ）入力データが−１６〜−９の場合、「０」
（ｂ）入力データが−８〜−１の場合、「１」
（ｃ）入力データが＋０〜＋７の場合、「０」
（ｄ）入力データが＋８〜＋１５の場合、「１」
上記値は、１０ビットの入力データのうち、切り捨てられた下位４ビットの最上位ビット（４ビット目）の値と一致する。
【００５３】
このように、出力部１４は、当該出力部１４に入力された数値データと、後段の演算ブロック１０の演算部１２で演算処理に使用するビット精度とに基づいて、補正データを生成する。そして、後段の演算ブロック１０の補正部１１は、出力部１４が出力した数値データ（出力データ）に、上記補正データを加え、補正後データを生成する。
【００５４】
数値演算において、切り捨て処理は、複数回行われても計算誤差なく行える。そのため、データがどのようなパスを通過しても、上記補正データを用いることにより、補正部１１は、１回の丸め処理を行った場合の数値データと同じ数値データ（補正後データ）を生成することができる。また、上の例で示したとおり、補正データは高々１ビットあれば充分である。また、前述したとおり、補正データは１ビットであるため、数値データに補正データを加算する処理を行う補正部１１の回路規模は拡大しない。
【００５５】
（演算回路１の処理の流れ）
次に、図３を参照して、演算回路１の処理の流れを説明する。なお、以下の説明では、演算ブロック１０ａと演算ブロック１０ｂとを区別して説明を行うが、演算ブロック１０ａの処理を演算ブロック１０ｂが行い、演算ブロック１０ｂの処理を演算ブロック１０ｂの後段の演算ブロックが行ってもよいことは言うまでもない。図３は、本実施の形態に係る演算回路１の処理の流れの一例を示すフローチャートである。
【００５６】
ステップＳ１：演算ブロック１０ａの補正部１１が、前段の演算ブロック１０から供給された数値データ（入力データ）および補正データを受信する。
【００５７】
ステップＳ２：演算ブロック１０ａの補正部１１が、受信した入力データに受信した補正データを加え、補正された数値データ（補正後データ）を生成する。
【００５８】
ステップＳ３：演算ブロック１０ａの演算部１２がステップＳ２で生成された補正後データを用いて、演算処理を行う。
【００５９】
ステップＳ４：演算ブロック１０ａの選択部１３が、前段の演算ブロック１０から供給された入力データと、ステップＳ３で演算処理をおこなった数値データとの何れかを選択する。
【００６０】
ステップＳ５：演算ブロック１０ａの出力部１４が、ステップＳ４で選択されたデータを、演算ブロック１０ｂ（後段の演算ブロック１０）の演算部１２で使用するビット精度になるように切り捨て処理を行い、出力データを生成する。
【００６１】
ステップＳ６：演算ブロック１０ａの出力部１４が、ステップＳ４で選択されたデータと、演算ブロック１０ｂの演算部１２で使用するビット精度と、に基づいて、補正データを生成する。なお、ステップＳ６は、ステップＳ５と同時に行われてもよいし、ステップＳ５より前に行われてもよい。
【００６２】
ステップＳ７：演算ブロック１０ａの出力部１４が、ステップＳ５で生成した出力データと、ステップＳ６で生成した補正データとを、演算ブロック１０ｂに供給する。
【００６３】
以上で、演算ブロック１０ａの処理を終了する。その後、演算ブロック１０ｂは、ステップＳ１からＳ７を実行する。
【００６４】
なお、入力データが入力された演算ブロック１０が複数の演算ブロック１０のうち、最初の演算ブロックである場合、当該演算ブロックには入力データのみが入力される。そして、演算部１２が入力データの演算処理を行い、出力部１４が、演算処理が行われた入力データに基づいて補正データを生成する。その後、後段の演算ブロックが上述したステップＳ１からステップＳ７の処理を行う。この動作は分かりやすくするためにシーケンシャル動作について記載したが、ステップＳ１からＳ７が並列して動作するパイプライン動作の場合でも適用可能である。
【００６５】
（効果）
以上のように、本実施の形態に係る演算回路１は、複数の演算ブロック１０を備えている。演算ブロック１０は、入力データに対し補正データを用いて補正した補正後データを生成し、前記補正後データの演算処理を行ったデータと、入力データとを選択して、選択されたデータと後段の演算ブロック１０のビット精度とに基づいて補正後データと出力データとを生成する。出力データは、選択されたデータを後段の演算ブロック１０のビット精度になるように切り捨てることによって、生成される。
【００６６】
これにより、演算処理を行う場合に、入力データを補正し、演算処理を行わない場合は、入力データをそのまま用いて、出力データを生成することができる。また、出力データは、入力データまたは演算処理が行われたデータに対し、切り捨て処理が行われることによって生成される。これにより、演算処理を行わないデータに対し、丸め誤差が生じない。したがって、本実施の形態に係る演算回路１は、入力されたデータが、演算ブロック１０のどのような経路を通過したとしても計算誤差なく演算処理を行うことができる。
【００６７】
また、本実施の形態に係る演算回路１によれば、回路規模の拡大を抑えることができる。なぜならば、演算ブロック１０に含まれる各部は、選択部１３がデータを選択し、出力部１４が切り捨て処理を行うというように、複雑な処理を行なわない。また、補正部１１は、入力データと補正データとを加算するため、加算器と同様の処理を行う。出力部１４は、数値データと共に補正データも出力するために１ビットの配線を使用する。しかし、光デジタルコヒーレント受信器のような高並列処理ＬＳＩであっても、その回路規模増加分は小さい。したがって、本実施の形態に係る演算回路１は、回路規模の拡大を抑えることができる。
【００６８】
また、補正部１１および演算部１２をバイパスするバイパス経路１９を備えることにより、本実施の形態に係る演算回路１は、図９に示すような配線がクロスする構成ではなく、図１のようにシンプルな配線で構成することができる。さらに、各部から信号線を引く必要がないので、設計を分業しやすいなどの効果がある。
【００６９】
＜第２の実施の形態＞
以下に、本発明の第２の実施の形態について、図面を参照して詳細に説明する。なお、説明の便宜上、前述した第１の実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
【００７０】
図４に示す通り、本実施の形態に係る演算回路２は、複数の演算ブロック２０を備えている。複数の演算ブロック２０は、縦続している。演算ブロック２０は、補正部１１、演算部１２、選択部２３、出力部２４およびバイパス部２８を備えている。また、バイパス部２８は、補正部１１および演算部１２をバイパスするバイパス経路１９上に設けられている。
【００７１】
なお、図４に示す演算回路２の各部は、第１の実施の形態の演算回路１と同様のハードウェアによって実現されている。
【００７２】
バイパス部２８は、バイパス経路１９上に設けられており、演算ブロック２０に入力された入力データと、後段の演算ブロック２０の演算部１２の演算処理で利用するビット精度とに基づいて、出力データと補正データとを生成する手段である。バイパス部２８は、演算ブロック２０に入力された入力データが後段の演算ブロック２０の演算部１２の演算処理で利用するビット
精度になるように、上記入力データに対し、切り捨て処理を行う。
【００７３】
バイパス部２８で生成される補正データは、前述した第１の実施の形態における出力部１４が作成する補正データと同様に、切り捨て処理後の数値データに加えることで、当該切り捨て処理後の数値データを、丸め処理後の数値データになるように、補正するデータである。
【００７４】
例えば、バイパス部２８に入力される数値データが１０ビットで、後段の演算ブロック２０で利用されるビット精度が８ビットのとき、バイパス部２８は入力された数値データのうち上位８ビットを出力データとして出力する。また、バイパス部２８は、上記入力された数値データの１０ビットのうち、切り捨てられた下位２ビットのうちの最上位ビット（上記１０ビットのうち、最下位ビットから２番目のビット）の値を補正データとして出力する。このように構成することで、後段の演算ブロック２０の補正部１１で、数値データと補正データとを加算することにより、１０ビットのデータを８ビットに丸めた場合のデータと同じ値を取ることができる。
【００７５】
出力部２４は、演算部１２から出力された数値データを受け取り、当該数値データと、後段の演算ブロック２０の演算部１２の演算処理で利用するビット精度とに基づいて、出力データと補正データとを生成する手段である。
出力部２４が、第１の実施の形態における出力部１４と異なる点は、出力部２４に入力されるデータが、演算部１２から出力されたデータである点と、出力部２４の出力先が選択部２３である点である。出力部２４の動作は、出力部１４と同様であるため、説明を省略する。
【００７６】
選択部２３は、出力部２４からの出力、および、バイパス部２８からの出力の何れかを選択し、後段の演算ブロック２０に供給する。選択部２３が、第１の実施の形態における選択部１３と異なる点は、数値データと共に補正データも選択することである。
【００７７】
（効果）
本実施の形態に係る演算回路２は、上述した第１の実施の形態１と同様に、データがどのような経路を通過したとしても計算誤差なく処理できる。
【００７８】
また、バイパス部２８をＬＳＩで実現する場合、ビット選択の回路のみが必要なため論理回路は不要となる。選択部２３に入力するデータが第１の実施の形態の選択部１３に比べ増えたものの高々１ビットの信号を選択するだけの回路であるため、回路規模は前述した第１の実施の形態の演算回路１とほぼ同じにすることができる。
【００７９】
したがって、本実施の形態における演算回路２は、回路規模の拡大を抑えることができる。
【００８０】
また、本実施の形態における演算回路２によれば、演算部１２と出力部２４とを分離できない構成において、どのような経路を通過したとしても計算誤差なく処理できる。
【００８１】
＜第３の実施の形態＞
以下に、本発明の第３の実施の形態について、図面を参照して詳細に説明する。なお、説明の便宜上、前述した第１の実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
【００８２】
本実施の形態に係る演算回路３は、前述した第１の実施の形態に係る演算回路１を光デジタルコヒーレント通信の非線形補償に利用した例である。なお、本発明はこれに限定されるものではなく、前述した第２の実施の形態に係る演算回路２を光デジタルコヒーレント通信の非線形補償に利用してもよい。
【００８３】
本実施の形態に係る演算回路３における、非線形補償のバックプロパゲーターは、線形補償ブロック５０１（非特許文献１の図２のＤに相当）、非線形補償ブロック５０２（非特許文献１の図２のＮ）、をＮ回（Ｎは自然数）繰り返し用いる。その後、バックプロパゲーターから出力されたデータは、偏波分離ブロック５０３へ入力する。
【００８４】
このように構成することで、伝送路の状態によってＮ個ある線形補償ブロック５０１や非線形補償ブロック５０２の一部のみを使って処理することが可能となる。このようにすることで動作する補償ブロックを限定し、ＬＳＩの消費電力を下げることが可能になる。
【００８５】
なお、上述した各実施の形態は、本発明の好適な実施の形態であり、上記各実施の形態にのみ本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において当業者が上記各実施の形態の修正や代用を行い、種々の変更を施した形態を構築することが可能である。
【００８６】
例えば、上述した実施の形態における各動作は、ハードウェアまたはソフトウェア、あるいはその両方の複合構成によって実行することも可能である。
【００８７】
なお、ソフトウェアによる処理を実行する場合には、例えば、上記各処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。また、上記プログラムは、例えば、ハードディスクなどの記録媒体に記録しておくことが可能である。
【００８８】
上述した演算回路１〜３は、信号処理を行う回路に適用することができる。例えば、光通信、無線通信、さらには音声処理、画像処理などにも適用可能である。
【符号の説明】
【００８９】
１    演算回路
２    演算回路
３    演算回路
１０    演算ブロック
１１    補正部
１２    演算部
１３    選択部
１４    出力部
１９    バイパス経路
２０    演算ブロック
２３    選択部
２４    出力部
２８    バイパス部
【図１】
2015095100.tif 000003
【図２】
2015095100.tif 000004
【図３】
2015095100.tif 000005
【図４】
2015095100.tif 000006
【図５】
2015095100.tif 000007
【図６】
2015095100.tif 000008
【図７】
2015095100.tif 000009
【図８】
2015095100.tif 000010
【図９】
2015095100.tif 000011