(57)【特許請求の範囲】
【請求項１】
データを、疑似乱数列であり、該疑似乱数列に含まれるビットのうち値が１のビットの割合が前記データの値を示す第１のデータ列に変換するデータ変換部と、
複数の前記第１のデータ列のそれぞれに重み付けされる値である重み係数を保持する係数保持部と、
前記重み係数を、疑似乱数列であり、該疑似乱数列に含まれるビットのうち値が１のビットの割合が前記重み係数を示す重み係数列に変換する係数変換部と、
複数の前記第１のデータ列と複数の前記重み係数列とを用いて、複数の前記第１のデータ列に重みを付けて加算した第２のデータ列を生成する複数の第１の重み付き加算部と、
複数の前記第２のデータ列と前記重み係数列とを用いて複数の前記第２のデータ列に重みを付けて加算した第３のデータ列を生成する１つ以上の第２の重み付き加算部と、
前記複数の第１の重み付き加算部に入力される前記第１のデータ列を、前記複数の第１の重み付き加算部および前記第２の重み付き加算部の演算誤差があらかじめ定められた値よりも小さくなるように選択する制御部と、
を備えることを特徴とする演算回路。
【請求項２】
前記複数の第１の重み付き加算部に入力される前記第１のデータ列の数は、
前記複数の第１の重み付き加算部それぞれで異なることを特徴とする請求項１に記載の演算回路。
【請求項３】
前記重み係数は、
０以上１以下の値であり、
前記制御部は、
１から前記重み係数を減算した値と前記重み係数との積の最大値を最も小さくすることで前記演算誤差を小さくすることを特徴とする請求項１または２に記載の演算回路。
【請求項４】
前記重み係数は、
０以上１以下の値であり、
前記制御部は、
前記重み係数と０の差を最も小さくすることで前記演算誤差を小さくすることを特徴とする請求項１または２に記載の演算回路。
【請求項５】
前記重み係数は、
前記第１のデータ列が前記第２のデータ列に含まれる割合を示し、
前記重み係数列は、
前記第１の重み付き加算部に入力される前記第１のデータ列の数に応じた値で表現されることを特徴とする請求項１または２に記載の演算回路。
【請求項６】
テストデータは、
前記データに含まれ、
前記演算誤差は、
確率的演算を用いて積和演算した前記テストデータの結果と確率的演算を用いずに積和演算した前記テストデータの結果との差であることを特徴とする請求項１から５のいずれか１つに記載の演算回路。
【請求項７】
前記複数の第１の重み付き加算部に入力される前記第１のデータ列を切り替えるスイッチを備え、
前記制御部は、前記スイッチの切り替えの制御を行うことを特徴とする請求項１から６のいずれか１つに記載の演算回路。
【請求項８】
前記切り替えは、
前記第１の重み付き加算部の出力の結果に応じて制御されることを特徴とする請求項７に記載の演算回路。
【請求項９】
請求項１から８のいずれか１つに記載の演算回路を備え、
タップ係数を用いて前記演算回路が用いる重み係数を算出することを特徴とするデジタルフィルタ。
【請求項１０】
請求項１から８のいずれか１つに記載の演算回路を備えることを特徴とする送信器。
【請求項１１】
請求項１から８のいずれか１つに記載の演算回路を備えることを特徴とする中継器。
【請求項１２】
請求項１から８のいずれか１つに記載の演算回路を備えることを特徴とする人工衛星。
【請求項１３】
演算回路が、入力されたデータに対して実行する演算方法であって、
前記データを、疑似乱数列であり、該疑似乱数列に含まれるビットのうち値が１のビットの割合が前記データの値を示す第１のデータ列に変換する第１のステップと、
複数の前記第１のデータ列のそれぞれに重み付けされる値である重み係数を保持する第２のステップと、
前記重み係数を、疑似乱数列であり、該疑似乱数列に含まれるビットのうち値が１のビットの割合が前記重み係数を示す重み係数列に変換する第３のステップと、
複数の前記第１のデータ列と複数の前記重み係数列とを用いて、複数の前記第１のデータ列に重みを付けて加算した第２のデータ列を生成する複数の第４のステップと、
複数の前記第２のデータ列と前記重み係数列とを用いて複数の前記第２のデータ列に重みを付けて加算した第３のデータ列を生成する１つ以上の第５のステップと、
前記複数の第４のステップで入力される前記第１のデータ列を、前記複数の第４のステップおよび前記第５のステップでの演算誤差があらかじめ定められた値よりも小さくなるように選択する第６のステップと、
を含むことを特徴とする演算方法。
【請求項１４】
演算回路を制御するためのプログラムであって、
データを、疑似乱数列であり、該疑似乱数列に含まれるビットのうち値が１のビットの割合が前記データの値を示す第１のデータ列に変換する第１のステップと、
複数の前記第１のデータ列のそれぞれに重み付けされる値である重み係数を保持する第２のステップと、
前記重み係数を、疑似乱数列であり、該疑似乱数列に含まれるビットのうち値が１のビットの割合が前記重み係数を示す重み係数列に変換する第３のステップと、
複数の前記第１のデータ列と複数の前記重み係数列とを用いて、複数の前記第１のデータ列に重みを付けて加算した第２のデータ列を生成する複数の第４のステップと、
複数の前記第２のデータ列と前記重み係数列とを用いて複数の前記第２のデータ列に重みを付けて加算した第３のデータ列を生成する１つ以上の第５のステップと、
前記複数の第４のステップで入力される前記第１のデータ列を、前記複数の第４のステップおよび前記第５のステップでの演算誤差があらかじめ定められた値よりも小さくなるように選択する第６のステップと、
を前記演算回路に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、確率的演算によって積和演算を行う演算回路、デジタルフィルタ、送信器、中継器、人工衛星、および演算方法に関する。
【背景技術】
【０００２】
データ通信量の需要の増大に伴い、セルラシステム、衛星通信システムなどの通信インフラ設備は、高速でデータを伝送できることが要求されている。また、従来の人工衛星に搭載される中継器は、人工衛星が受信した信号をアナログ回路によって周波数変換して地上へ送信していることから、人工衛星を打ち上げた後の各地域における通信需要の変化に対応できないという問題があった。ここで、中継器にＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）などのデバイスを搭載し、中継する信号の周波数、および中継する信号の送信先をデジタル信号処理で選択することでフレキシビリティを向上させるデジタルペイロード型の人工衛星が注目されている。【０００３】
中継器に備わるデジタル信号処理を行うデバイスは、宇宙空間の放射線によって内部回路のビットの値の反転などのソフトエラーが生じる。このことから、中継器に備わるデジタル信号処理を行うデバイスは、放射線耐性を強化した宇宙空間専用デバイスであることが多い。一方で、地上で広く利用されている民生のＦＰＧＡなどのデバイスは、宇宙空間向け専用デバイスと比較して放射線耐性は低いものの、高性能かつ低コストである。このため、民生のＦＰＧＡを中継器に備わるデジタル信号処理を行うデバイスに利用することで人工衛星の高性能化と低コスト化とが期待できる。【０００４】
民生のＦＰＧＡを宇宙空間で利用するときに、ソフトエラー耐性を強化する技術として確率的演算がある。確率的演算では、０と１とからなる擬似乱数列によって数値を表現する。確率的演算は、擬似乱数列中の一部が放射線によってビット反転したとしてもわずかな演算誤差しか発生しないという特徴がある。また、確率的演算は、加算、乗算などの回路構成を簡素化できるという特徴がある。非特許文献１は、確率的演算を用いた演算回路を開示する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｈ．  Ｉｃｈｉｈａｒａ，  Ｔ．  Ｓｕｇｉｎｏ，  Ｓ．  Ｉｓｈｉｉ，  Ｔ．  Ｉｗａｇａｋｉ  ａｎｄ  Ｔ．  Ｉｎｏｕｅ，  “Ｃｏｍｐａｃｔ  ａｎｄ  Ａｃｃｕｒａｔｅ  Ｄｉｇｉｔａｌ  Ｆｉｌｔｅｒｓ  Ｂａｓｅｄ  ｏｎ  Ｓｔｏｃｈａｓｔｉｃ  Ｃｏｍｐｕｔｉｎｇ，”  ｉｎ  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｅｍｅｒｇｉｎｇ  Ｔｏｐｉｃｓ  ｉｎ  Ｃｏｍｐｕｔｉｎｇ．  ＤＯＩ：  １０．１１０９／ＴＥＴＣ．２０１６．２６０８８２５
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、非特許文献１に記載される確率的演算は、従来の演算に用いる二進数演算と比較して演算結果が確率的であることから、演算の誤差が大きくなりやすい。具体的には、数値を擬似乱数列に変換するときの変換誤差と、擬似乱数列同士の演算における演算誤差とが生じる。特に、非特許文献１に記載されているような重み付き加算部を複数段並べた演算回路では、複数の演算過程での演算誤差が蓄積するといった問題があった。【０００７】
本発明は、上記に鑑みてなされたものであって、確率的演算における演算誤差を低減することができる演算回路を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、演算回路は、データを、疑似乱数列であり、疑似乱数列に含まれるビットのうち値が１のビットの割合がデータの値を示す第１のデータ列に変換するデータ変換部と、複数の第１のデータ列のそれぞれに重み付けされる値である重み係数を保持する係数保持部と、重み係数を、疑似乱数列であり、疑似乱数列に含まれるビットのうち値が１のビットの割合が重み係数を示す重み係数列に変換する係数変換部と、複数の第１のデータ列と複数の重み係数列とを用いて、複数の第１のデータ列に重みを付けて加算した第２のデータ列を生成する複数の第１の重み付き加算部と、複数の第２のデータ列と重み係数列とを用いて複数の第２のデータ列に重みを付けて加算した第３のデータ列を生成する１つ以上の第２の重み付き加算部と、複数の第１の重み付き加算部に入力される第１のデータ列を、複数の第１の重み付き加算部および第２の重み付き加算部の演算誤差があらかじめ定められた値よりも小さくなるように選択する制御部と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明にかかる演算回路は、確率的演算における演算誤差を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかる送信器の構成例を示す図
【図２】実施の形態１にかかるデジタルフィルタの構成例を示す図
【図３】実施の形態１にかかる積和演算部の構成を示す図
【図４】実施の形態１にかかる制御回路を示す図
【図５】実施の形態１にかかる重み付き加算部が入出力するデータを示す第１の図
【図６】実施の形態１にかかる重み付き加算部が入出力するデータ列を示す第１の図
【図７】実施の形態１にかかる重み付き加算部が入出力するデータを示す第２の図
【図８】実施の形態１にかかる重み付き加算部が入出力するデータ列を示す第２の図
【図９】実施の形態１にかかる重み付き加算部が入出力するデータを示す第３の図
【図１０】実施の形態１にかかる重み付き加算部が入出力するデータ列を示す第３の図
【図１１】実施の形態１にかかる重み付き加算部へ出力するデータ列を決定する流れを示すフローチャート
【図１２】実施の形態２にかかるデジタルフィルタの構成を示す図
【図１３】実施の形態２にかかる積和演算部の構成を示す図
【図１４】実施の形態２にかかる重み付き加算部へ出力するデータ列を決定する流れを示すフローチャート
【発明を実施するための形態】
【００１１】
以下に、本発明の実施の形態にかかる演算回路、デジタルフィルタ、送信器、中継器、人工衛星、および演算方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１は、実施の形態１にかかる送信器の構成例を示す図である。送信器１は図示しない受信器と無線で通信する。送信器１は、データ生成部２と、デジタルフィルタ１００と、送信部３と、アンテナ４とを備える。データ生成部２は、送信器１が送信するデータを生成し、デジタルフィルタ１００に出力する。デジタルフィルタ１００はデータを用いて、積和演算を行い、送信データを生成し送信部３に出力する。送信部３は、送信データに変調、Ｄ／Ａ変換などを行い、送信データを無線周波数信号に変換する。アンテナ４は、無線周波数信号を送信する。送信器１は、中継器、人工衛星などに備えられる。無線で通信する場合、限られた周波数帯域幅の中で電波を送信する必要がある。このため、送信器１は２進数で表現されたパルス上の信号をデジタルフィルタ１００で波形整形する。中継器も同様に受信した信号を、デジタルフィルタ１００を用いて波形整形した後に中継先に中継する。
【００１３】
図２は、実施の形態１にかかるデジタルフィルタの構成例を示す図である。デジタルフィルタ１００は、データ変換部１０１と、シフトレジスタ１０２と、積和演算部１０３と、係数保持部１０４と、係数変換部１０５と、制御部１０６と、を備える。
【００１４】
データ変換部１０１は、データを、確率的演算で用いるデータ列に変換する。データは量子化されている。また、データ変換部１０１は、データ列をシフトレジスタ１０２に出力する。データ列は疑似乱数列である。データ変換部１０１によって変換されたデータ列は、第１のデータ列とも呼ばれる。データ変換部１０１が行うデータ列への変換の方法は、例えば、データの取り得る値の範囲が０から１の間である場合、データを１が発生する確率がデータの値と同じ値となるデータ列に変換する方法が挙げられる。具体的には、データの値が０．５、データ列の長さを５１２ビットとした場合、データを、５１２ビット中２５６ビット、つまりデータ列の５０％が１であり、残りの５０％が０であるデータ列に変換することが挙げられる。なお、擬似乱数列の生成方法はＰＮ（Pseudo  Noise）符号のような擬似雑音符号でもよいし、Ｓｏｂｏｌ系列のように超一様分布列を用いて疑似乱数列を生成してもよい。また、データ列の長さは特に制約はなく、データ列を長くするほど、データを変換したときの誤差は低減する。しかし、データ列を長くするほど、並列処理するときの回路規模が増大するため、所望の通信性能と回路規模に応じて適切なデータ列の長さを選択すればよい。
【００１５】
シフトレジスタ１０２は、データ変換部１０１が出力するデータ列を複数保持する。シフトレジスタ１０２が保持するデータ列の合計の長さは、デジタルフィルタ１００のタップ数と関連する。例えば、デジタルフィルタ１００が、Ｎ＝１１タップのデジタルフィルタである場合、データ列は変換前のデータが１１個収まるようにすればよい。すなわち、１つのデータあたりのデータ列の長さをＳとすると、シフトレジスタ１０２はＳ×１１の長さのデータ列を保持する。シフトレジスタ１０２は、タップの数だけデータ列を格納することができる。
【００１６】
係数保持部１０４は、積和演算部１０３が複数のデータ列を重みを付けて加算するために用いる重み係数を保持する。言い換えれば、重み係数は、複数のデータ列のそれぞれの重み付けされる値である。デジタルフィルタ１００では、重み係数はタップ係数を用いて算出することができる。重み係数を算出する具体例は後述する。係数変換部１０５は、係数保持部１０４が保持する重み係数を、確率的演算で用いる疑似乱数列である重み係数列に変換する。重み係数列への変換方法は、データ変換部１０１がデータをデータ列に変換する処理と同じである。制御部１０６は、重み係数を算出する。また、制御部１０６は、積和演算部１０３に入力させるデータ列を選択する。制御部１０６の詳細な動作については後述する。
【００１７】
積和演算部１０３は、データ列と、重み係数列とを用いて積和演算する。図３は、実施の形態１にかかる積和演算部１０３の構成を示す図である。積和演算部１０３は、重み付き加算部２００−１〜２００−３を備える。重み付き加算部２００−１〜２００−３のそれぞれを区別せず示すときは、重み付き加算部２００と称する。重み付き加算部２００−１，２００−２はそれぞれ第１の重み付き加算部とも呼ばれる。重み付き加算部２００−３は第２の重み付き加算部とも呼ばれる。重み付き加算部２００−１，２００−２はシフトレジスタ１０２が保持する複数のデータ列と、複数の重み係数列とを用いて、複数のデータ列に重みを付けて加算したデータ列を生成し重み付き加算部２００−３に出力する。重み付き加算部２００−３は重み付き加算部２００−１，２００−２が出力した複数のデータ列と、複数の重み係数列とを用いて、重み付き加算部２００−１，２００−２が出力した複数のデータ列に重みを付けて加算したデータ列を生成する。
【００１８】
重み付き加算部２００−１が、重み付き加算部２００−３に出力するデータをデータ列ｂ０と呼ぶ。重み付き加算部２００−２が、重み付き加算部２００−３に出力するデータをデータ列ｂ１と呼ぶ。重み付き加算部２００−１，２００−２が重み付き加算部２００−３に出力するデータ列は第２のデータ列とも呼ばれる。重み付き加算部２００−３に図示しない機能部に出力するデータ列は第３のデータ列とも呼ばれる。重み付き加算部２００−１〜２００−３は、ツリー構造の形式で接続される。図３のシフトレジスタ１０２が備えるタップの数は５つであり、５つのタップＤ０〜Ｄ４それぞれにデータ列が保持される。
【００１９】
重み付き加算部２００−１には、シフトレジスタ１０２からデータ列が２つ入力される。重み付き加算部２００−２には、シフトレジスタ１０２からデータ列が３つ入力される。重み付き加算部２００−３には、重み付き加算部２００−１および重み付き加算部２００−２からそれぞれデータ列が１つ入力される。重み付き加算部２００−１がタップＤ２から入力されるデータ列をデータ列ａ０と呼ぶ。重み付き加算部２００−１がタップＤ０から入力されるデータ列をデータ列ａ１と呼ぶ。重み付き加算部２００−２がタップＤ１から入力されるデータ列をデータ列ａ２と呼ぶ。重み付き加算部２００−２がタップＤ３から入力されるデータ列をデータ列ａ３と呼ぶ。重み付き加算部２００−２がタップＤ４から入力されるデータ列をデータ列ａ４と呼ぶ。
【００２０】
タップＤ０〜Ｄ４のタップ係数は、それぞれタップ係数ｈ０〜ｈ４と呼ぶ。また、図３において、タップ係数ｈ０とタップ係数ｈ２とを用いて算出された重み係数列を重み係数列ｓ０と呼ぶ。重み係数列ｓ０は、係数変換部１０５によって重み係数から生成される。重み付き加算部２００−１には、係数変換部１０５から重み係数列ｓ０が入力される。つまり、重み付き加算部２００−１には、タップＤ２，Ｄ０がそれぞれ出力するデータ列ａ０，ａ１と、タップＤ２，Ｄ０それぞれのタップ係数ｈ２，ｈ０を用いて算出された重み係数列ｓ０と、が入力される。同様に、重み付き加算部２００−２には、タップＤ１，Ｄ３，Ｄ４がそれぞれ出力するデータ列ａ２，ａ３，ａ４と、タップＤ１，Ｄ３，Ｄ４それぞれのタップ係数ｈ１，ｈ３，ｈ４を用いて算出された重み係数列ｓ１と、が入力される。重み付き加算部２００−３には、データ列ｂ０とデータ列ｂ１と、タップ係数ｈ０，ｈ１，ｈ２，ｈ３，ｈ４を用いて算出された重み係数列ｓ２とが入力される。
【００２１】
なお、本実施の形態では、積和演算部１０３は、重み付き加算部２００を３つ備えているが、３つに限られず４つ以上備えていてもよい。重み付き加算部２００の数は、シフトレジスタ１０２が備えるタップの数に応じて変更することができ、ツリーの段数も重み付き加算部２００の数に応じて変更可能である。なお、図３に示されるツリー構造以外にも、例えば、タップ数がＮ＝８であって、１つの重み付き加算部２００がシフトレジスタ１０２から入力されるデータ列の数をＭ＝２とする場合、ツリー構造は、重み付き加算部２００の数を４つ→２つ→１つとする３段構造のツリーにすることができる。
【００２２】
本実施の形態では、重み付き加算部２００−１および２００−３が入力されるデータ列の数は２つで、重み付き加算部２００−２が入力されるデータ列の数は３つとしているが、重み付き加算部２００がシフトレジスタ１０２から入力されるデータ列の数は、２つまたは３つに限定されない。言い換えれば、重み付き加算部２００−１，２００−２，２００−３それぞれに入力されるデータ列の数は、それぞれ異なっていてもよい。また、図３では、重み付き加算部２００−１にはタップＤ２からデータ列ａ０が入力されているが、重み付き加算部２００−１が入力されるデータ列はデータ列ａ０に限らず、積和演算部１０３における演算誤差が最小になるようにデータ列ａ０以外のデータ列が入力されるようにしてもよい。または、積和演算部１０３における演算誤差があらかじめ定められた値よりも小さくなるようにデータ列ａ０以外のデータ列が入力されるようにしてもよい。
【００２３】
デジタルフィルタ１００のハードウェア構成について説明する。データ変換部１０１、積和演算部１０３、係数保持部１０４、および係数変換部１０５は、各処理を行う電子回路である処理回路により実現される。
【００２４】
本処理回路は、専用のハードウェアであっても、メモリ及びメモリに格納されるプログラムを実行するＣＰＵ（Central  Processing  Unit、中央演算装置）を備える制御回路であってもよい。ここでメモリとは、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリなどの、不揮発性または揮発性の半導体メモリ、磁気ディスク、光ディスクなどが該当する。図４は、実施の形態１にかかる制御回路を示す図である。本処理回路がＣＰＵを備える制御回路である場合、この制御回路は例えば、図４に示す構成の制御回路３００となる。
【００２５】
図４に示すように、制御回路３００は、ＣＰＵであるプロセッサ３００ａと、メモリ３００ｂとを備える。図４に示す制御回路３００により実現される場合、プロセッサ３００ａがメモリ３００ｂに記憶された、各処理に対応するプログラムを読みだして実行することにより実現される。また、メモリ３００ｂは、プロセッサ３００ａが実施する各処理における一時メモリとしても使用される。シフトレジスタ１０２は、デジタル回路により実現される。
【００２６】
図５は、実施の形態１にかかる重み付き加算部２００−１が入出力するデータを示す第１の図である。データ列ａ０がデータ変換部１０１によって変換される前の入力データを０．２とする。データ列ａ１がデータ変換部１０１によって変換される前の入力データを０．７とする。重み係数列ｓ０を算出するときに用いる重み係数を、ａ０の重み係数＝０．８、ａ１の重み係数＝０．２とする。ａ１の重み係数は、データ列ａ１がデータ列ｂ０に含まれる割合を示す。重み付き加算部２００−１が出力するデータ列ｂ０の疑似乱数に変換前の値を０．３とする。
【００２７】
図６は、実施の形態１にかかる重み付き加算部２００−１が入出力するデータ列を示す第１の図である。データ列ａ０がデータ変換部１０１によって変換される前の入力データは０．２であるため、データ列ａ０の列の長さを１０ビットとした場合、データ列ａ０は、１０ビット中２ビットを１とするデータ列となる。同様に、データ列ａ１がデータ変換部１０１によって変換される前の入力データは０．７であるため、データ列ａ１は１０ビット中７ビットを１とするデータ列となる。
【００２８】
重み係数列ｓ０は、ａ０の重み係数が０．８であり、ａ１の重み係数０．２であるため、１０ビット中８ビットを１とするデータ列となる。データ列ｂ０は、データ列ａ０とデータ列ａ１と重み係数列ｓ０とを用いて算出される。重み係数列ｓ０のｎ番目のビットが１である場合、データ列ｂ０のｎ番目のビットは、データ列ａ０のｎ番目のビットと同じ値となる。また、重み係数列ｓ０のｎ番目のビットが０である場合、データ列ｂ０のｎ番目のビットは、データ列ａ１のｎ番目のビットと同じ値となる。図６に示されるデータ列を用いる場合、１＜ｎ＜１１であり、ｎは整数である。このように重み付き加算部２００−１は、０．３（０．２×０．８＋０．７×０．２）を確率的演算で用いるデータ列にしたデータ列ｂ０を算出し、重み付き加算部２００−３に出力する。
【００２９】
図７は、実施の形態１にかかる重み付き加算部２００−２が入出力するデータを示す第２の図である。データ列ａ２がデータ変換部１０１によって変換される前の入力データを０．４とする。データ列ａ３がデータ変換部１０１によって変換される前の入力データを０．５とする。データ列ａ４がデータ変換部１０１によって変換される前の入力データを０．６とする。重み係数列ｓ１を算出するときに用いる重み係数をそれぞれ、データ列ａ２の重み係数＝０．２、データ列ａ３の重み係数＝０．６、データ列ａ４の重み係数＝０．２とする。重み付き加算部２００−２が出力するデータ列ｂ１の疑似乱数に変換前の値を０．５とする。
【００３０】
図８は、実施の形態１にかかる重み付き加算部２００−２が入出力するデータ列を示す第２の図である。データ列ａ２がデータ変換部１０１によって変換される前の入力データは０．４であるため、データ列ａ２の列の長さを１０ビットとした場合、データ列ａ２は、１０ビット中４ビットを１とするデータ列となる。同様に、データ列ａ３がデータ変換部１０１によって変換される前の入力データは０．５であるため、データ列ａ３は１０ビット中５ビットを１とするデータ列となる。データ列ａ４がデータ変換部１０１によって変換される前の入力データは０．６であるため、データ列ａ４は１０ビット中６ビットを１とするデータ列となる。
【００３１】
重み付き加算部２００−１が入力されるデータ列の数は２であることに対し、重み付き加算部２００−２が入力されるデータ列の数は３である。このため、重み係数列ｓ１は０，１，２の３種類の値で表現される。つまり、重み付き加算部２００−２に入力されるデータ列の数に応じた値で、重み係数列ｓ１は表現される。データ列ａ２の重み係数は、重み係数列ｓ１に０が含まれる割合で表され、重み係数列ｓ１の１０ビット中２ビットが０である。また、データ列ａ３の重み係数は、重み係数列ｓ１に１が含まれる割合で表され、重み係数列ｓ１の１０ビット中６ビットが１である。また、データ列ａ４の重み係数は、重み係数列ｓ１に２が含まれる割合で表され、重み係数列ｓ１の１０ビット中２ビットが２である。
【００３２】
データ列ｂ１は、データ列ａ２と、データ列ａ３と、データ列ａ４と、重み係数列ｓ１とを用いて算出される。重み係数列ｓ１のｎ番目のビットが０である場合、データ列ｂ１のｎ番目のビットは、データ列ａ２のｎ番目のビットと同じ値となる。重み係数列ｓ１のｎ番目のビットが１である場合、データ列ｂ１のｎ番目のビットは、データ列ａ３のｎ番目のビットと同じ値となる。重み係数列ｓ１のｎ番目のビットが２である場合、データ列ｂ１のｎ番目のビットは、データ列ａ４のｎ番目のビットと同じ値となる。図８に示されるデータ列を用いる場合、１＜ｎ＜１１であり、ｎは整数である。このように重み付き加算部２００−２は、０．５（０．４×０．２＋０．５×０．６＋０．６×０．２）を確率的演算で用いるデータ列にしたデータ列ｂ１を算出し、重み付き加算部２００−３に出力する。
【００３３】
図９は、実施の形態１にかかる重み付き加算部２００−３が入出力するデータを示す第３の図である。重み付き加算部２００−３が入力されるデータ列の数は、重み付き加算部２００−１が入力されるデータ列の数と同じ２である。データ列ｂ０の疑似乱数に変換前の値は０．３である。データ列ｂ１の疑似乱数に変換前の値は０．５である。重み係数列ｓ２を算出するときに用いる重み係数はそれぞれ、データ列ｂ０の重み係数＝０．５、データ列ｂ１の重み係数＝０．５である。
【００３４】
図１０は、実施の形態１にかかる重み付き加算部２００−３が入出力するデータ列を示す第３の図である。重み付き加算部２００−３が出力するデータ列ｂ３は、重み付き加算部２００−１が出力するデータ列ｂ０を算出する処理と同様であるため、詳細な処理は割愛する。重み付き加算部２００−３は、０．４（０．３×０．５＋０．５×０．５）を確率的演算で用いるデータ列にしたデータ列ｂ３を算出し、図示しない他の機能部に出力する。このように、積和演算部１０３は、複数のデータ列が入力される複数の重み付き加算部２００をツリー構造で構成することで積和演算を実現することができる。
【００３５】
図１１は、実施の形態１にかかる重み付き加算部２００へ出力するデータ列を決定する流れを示すフローチャートである。制御部１０６は、重み付き加算部２００に入力されるデータ列の候補を選択する（ステップＳ１）。ここで、ツリー構造における初段の重み付き加算部２００、つまり、重み付き加算部２００−１および重み付き加算部２００−２に入力されるデータ列の候補の数は、シフトレジスタ１０２に格納されるデータ列の数Ｎである。
【００３６】
例えば、図３に示される積和演算部１０３を例にして説明すると、制御部１０６は、重み付き加算部２００−１に入力させるＭ＝２個のデータ列の候補と、重み付き加算部２００−２に入力させるＭ＝３個のデータ列の候補とを選択する。なお、図３では、初段以外の重み付き加算部２００である重み付き加算部２００−３に入力させるデータ列は、初段の重み付き加算部２００−１が出力するデータ列ｂ０、および初段の重み付き加算部２００−２が出力するデータ列ｂ１となっているが、ツリーの段数が２より大きいツリー構造である場合、重み付き加算部２００−３は、初段以外の重み付き加算部２００より前段の重み付き加算部２００が出力するデータ列から候補を選択してもよい。言い換えれば、ツリーの段数が３のツリー構造である場合、３段目の重み付き加算部は初段以外の重み付き加算部、つまり２段目の重み付き加算部が出力するデータ列から候補を選択しても良い。また、制御部１０６が重み付き加算部２００に入力させるデータ列の候補を選択するときは、重み付き加算部２００に入力させるデータ列の数も変更可能とし、重み付き加算部２００に入力させるデータ列の候補と、重み付き加算部２００に入力させるデータ列の数を最適化するようにしてもよい。
【００３７】
制御部１０６は、重み付き加算部２００が用いる重み係数を計算する（ステップＳ２）。重み係数の算出方法は、デジタルフィルタ１００の場合は、シフトレジスタ１０２の各タップに対応するタップ係数ｈ０〜ｈ４を用いて算出することができる。例えば重み付き加算部２００−１の重み係数は、非特許文献１に記載の重み係数の算出方法を用いるとデータ列ａ１の重み係数は、ｈ０／（ｈ０＋ｈ２）として算出することができる。
【００３８】
制御部１０６は、積和演算部１０３の演算誤差を評価する（ステップＳ３）。演算誤差の評価方法は、例えば、ステップＳ２で算出した重み係数を用いることができる。確率的演算は２項分布なのでデータ列のうち１が発生する確率をｐとした場合、ｐの分散はｐ（１−ｐ）である。このため、ｐ＝０．５の場合に分散が最大となる。ここで、重み付き加算部２００に入力される重み係数を定数、例えば、０以上１以下の値とすると、重み係数が０．５の場合に最も演算誤差が大きくなる。よって、重み係数をＨとすると、制御部１０６は、Ｈ（１−Ｈ）が最も小さくなるように、重み付き加算部２００に入力させるデータ列を選択する。積和演算部１０３が複数の重み付き加算部２００から構成されている場合は、Ｈ（１−Ｈ）の最大値が最も小さくなるようなデータ列の候補を選択することで、積和演算全体の演算誤差を最小化することができる。また、制御部１０６は、重み係数と０、または重み係数と１との差が最も小さくなるように重み付き加算部２００に入力されるデータ列を決定してもよい。
【００３９】
制御部１０６は、ステップＳ１〜ステップＳ３を繰り返し実行し、演算誤差が最も小さくなる、重み付き加算部２００に入力されるデータ列の候補を決定する（ステップＳ４）。つまり、制御部１０６は、複数の第１の重み付き加算部に入力される第１のデータ列を、複数の第１の重み付き加算部および第２の重み付き加算部の演算誤差があらかじめ定められた値よりも小さくなるように選択する。ここで、繰り返し実行する回数は、データ列の組み合わせを全探索するまでの回数であってもよいし、任意の最適化アルゴリズムを用いて準最適解を導き出せるまでの回数としてもよい。
【００４０】
以上説明したように、本実施の形態にかかるデジタルフィルタ１００は、確率的演算で積和演算する過程において、重み付き加算部２００に入力させるデータ列を選択し、積和演算の演算誤差が最小となるように重み付き加算部２００に入力させるデータ列を決定することとした。デジタルフィルタ１００が行う演算の演算誤差を最小とし、演算精度を向上させることで、デジタルフィルタ１００を搭載した人工衛星と通信する端末に誤ったデータを送信することを抑制でき、端末はデータの再送の要求を抑制できるため、人工衛星の通信性能を向上することができる。また、放射線耐性の低い民生ＦＰＧＡを宇宙用途で利用することを可能にし、民生ＦＰＧＡを備える送信器、民生ＦＰＧＡを備える中継器、およびこれらを搭載した人工衛星の通信性能を向上することができる。なお、本実施の形態ではデジタルフィルタを例にして演算回路の説明をしたが、本実施の形態で説明した演算回路は一般的な積分演算や畳み込み演算の用途で用いることができる。例えば、これら演算を行う音声処理や画像処理、機械学習などに対して本実施の形態で示した演算回路を適用することにより、回路簡素化に伴う装置の低消費電力化やソフトエラー耐性の向上といった効果を得ることができる。
【００４１】
実施の形態２．
実施の形態１では、確率的演算でデジタルフィルタを構成する際に、積和演算を構成する重み付き加算部への入力を演算誤差が最小になるように選択することで、デジタルフィルタの演算精度を向上する手法を明らかにした。しかし、実施の形態１で示したデジタルフィルタは設計段階で重み付き加算部の入力を一意に決定するものであった。本実施の形態では、設計段階に限らず、ＦＰＧＡ等のデバイスに演算回路を実装した後でも実施の形態１と同等の機能を実現する手法を提供する。
【００４２】
図１２は、実施の形態２にかかるデジタルフィルタの構成を示す図である。デジタルフィルタ１００ａは、データ変換部１０１と、シフトレジスタ１０２ａと、積和演算部１０３ａと、係数保持部１０４と、係数変換部１０５と、制御部１０６ａを備える。なお、実施の形態１と同一の機能を有する構成要素は、実施の形態１と同一の符号を付して重複する説明を省略する。シフトレジスタ１０２ａは、タップを６つ備える。
【００４３】
図１３は、実施の形態２にかかる積和演算部１０３ａの構成を示す図である。積和演算部１０３ａは、重み付き加算部２００−１〜２００−５と、第１のスイッチ４００と、第２のスイッチ４０１とを備える。なお、重み付き加算部２００−１〜２００−５は実施の形態１の重み付き加算部２００と同じ機能を有する。積和演算部１０３と積和演算部１０３ａとの相違点は、重み付き加算部２００に入力されるデータ列を、第１のスイッチ４００および第２のスイッチ４０１を用いることで切り替え可能としたことである。制御部１０６ａは、制御部１０６の機能に加え、第１のスイッチ４００および第２のスイッチ４０１の切り替えの制御を行う。
【００４４】
図１４は、実施の形態２にかかる重み付き加算部２００へ出力するデータ列を決定する流れを示すフローチャートである。図１４において、ステップＳ１からステップＳ４までは、図１１と同じである。制御部１０６ａは、データ列が決定した重み付き加算部２００へ入力されるように第１のスイッチ４００および第２のスイッチ４０２の接続を切り替える（ステップＳ５）。
【００４５】
なお、制御部１０６ａが行う演算誤差評価について、実施の形態１では、制御部１０６は、重み係数の値を用いて演算誤差を評価していたが、本実施の形態ではこれに限らず、制御部１０６ａが、積和演算部１０３ａに入力されるテストデータと、確率的演算を用いない積和演算である２進数演算の場合の期待値とを生成し、テストデータを積和演算部１０３ａに入力させたときの出力ｏｕｔと、期待値との差を演算誤差として用いてもよい。テストデータは、データ変換部１０１に入力されるデータに含まれる。また、制御部１０６ａは、出力ｏｕｔと、期待値との差を用いて、演算誤差が最小になるようにスイッチを制御してもよい。言い換えれば、スイッチの切り替えは、重み付き加算部２００の出力の結果に応じて制御されてもよい。
【００４６】
以上説明したように、本実施の形態では、デジタルフィルタ１００ａは、積和演算を構成する重み付き加算部の入力に第１のスイッチ４００および第２のスイッチ４０１を追加し、回路を実装した後でも演算誤差が最小になるような入力データ列を決定することとした。これにより、例えば、デジタルフィルタ１００ａのタップ係数を運用中に変更した場合においても演算誤差を再評価し、最小化することができる。
【００４７】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００４８】
１  送信器、２  データ生成部、３  送信部、４  アンテナ、１００，１００ａ  デジタルフィルタ、１０１  データ変換部、１０２，１０２ａ  シフトレジスタ、１０３，１０３ａ  積和演算部、１０４  係数保持部、１０５  係数変換部、１０６，１０６ａ  制御部、２００，２００−１〜２００−５  重み付き加算部、３００  制御回路、３００ａ  プロセッサ、３００ｂ  メモリ、４００  第１のスイッチ、４０１  第２のスイッチ。
【図１】
0006949268.tif 000002
【図２】
0006949268.tif 000003
【図３】
0006949268.tif 000004
【図４】
0006949268.tif 000005
【図５】
0006949268.tif 000006
【図６】
0006949268.tif 000007
【図７】
0006949268.tif 000008
【図８】
0006949268.tif 000009
【図９】
0006949268.tif 000010
【図１０】
0006949268.tif 000011
【図１１】
0006949268.tif 000012
【図１２】
0006949268.tif 000013
【図１３】
0006949268.tif 000014
【図１４】
0006949268.tif 000015