(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024025050
(43)【公開日】2024-02-26
(54)【発明の名称】FIRフィルタ、FIRフィルタによるフィルタリング方法、及び、制御プログラム
(51)【国際特許分類】
H03H 17/06 20060101AFI20240216BHJP
G06F 17/10 20060101ALI20240216BHJP
G06F 1/03 20060101ALI20240216BHJP
G06F 7/523 20060101ALI20240216BHJP
G06F 7/485 20060101ALI20240216BHJP
【FI】
H03H17/06 655D
G06F17/10 D
G06F1/03
G06F7/523
H03H17/06 635A
G06F7/485
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022128165
(22)【出願日】2022-08-10
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和3年度、国立研究開発法人情報通信研究機構「革新的情報通信技術研究開発委託研究/Beyond 5G時代に向けた空間モード制御光伝送基盤技術の研究開発」産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】小林 栄太
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB28
(57)【要約】
【課題】回路規模の増大を抑制することが可能なFIRフィルタ、FIRフィルタによるフィルタリング方法、及び、制御プログラムを提供すること。
【解決手段】FIRフィルタは、対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成するアドレス信号生成部と、複数のアドレス値と複数の演算結果とが関連付けられたテーブルが格納された記憶部と、アドレス信号生成部によって生成されたアドレス信号が示すアドレス値、に対応する演算結果を、テーブルから抽出する抽出部と、を備え、テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果が共通化された複数の演算結果と、複数のアドレス値と、が関連付けられている。
【選択図】
図1
【特許請求の範囲】
【請求項1】
対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成するアドレス信号生成部と、
複数のアドレス値と、複数の演算結果と、が関連付けられたテーブルが格納された記憶部と、
前記アドレス信号生成部によって生成された前記アドレス信号が示すアドレス値、に対応する演算結果を、前記テーブルから抽出する抽出部と、
を備え、
前記テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された前記複数の演算結果と、前記複数のアドレス値と、が関連付けられている、
FIRフィルタ。
【請求項2】
前記テーブルは、
前記複数の演算結果のうち、共通化された複数の演算結果である複数の第1演算結果と、前記複数のアドレス値のうち、前記複数の第1演算結果に関連付けられた複数の第1アドレス値と、が設定された非対称テーブルと、
前記複数の演算結果のうち、共通化されていない複数の演算結果である複数の第2演算結果と、前記複数のアドレス値のうち、前記複数の第2演算結果に関連付けられた複数の第2アドレス値と、が設定された対称テーブルと、
によって構成され、
前記アドレス信号生成部は、前記k個のビット値に応じた選択信号をさらに出力し、
前記抽出部は、前記非対称テーブルから抽出された第1演算結果と、前記対称テーブルから抽出された第2演算結果と、の何れかを前記選択信号に基づいて選択し出力する、
請求項1に記載のFIRフィルタ。
【請求項3】
前記対称テーブルに設定されている前記第2演算結果の数をα、前記非対称テーブルに設定されている前記第1演算結果の数をβとすると、α及びβは、
【数7】
【数8】
のように表される、
請求項2に記載のFIRフィルタ。
【請求項4】
前記複数の第1演算結果は、前記2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された複数の演算結果において、さらに、同一値を示す演算結果の組が共通化された複数の演算結果である、
請求項2に記載のFIRフィルタ。
【請求項5】
前記k個のビット値は、k個のm(mは1以上の整数)ビット幅の入力データのそれぞれの同一ビット位置の値であって、
前記k個の入力データのそれぞれの1ビット目からmビット目までの各ビット位置のk個のビット値に対するm個の演算結果を、ビット位置に応じてビットシフトさせるシフタと、
前記シフタによってビットシフトされたm個の演算結果を加算する加算器と、
をさらに備えた、
請求項1に記載のFIRフィルタ。
【請求項6】
対称性を有する前記k個のフィルタ係数は、対称性を有するp(pは2以上の整数)個のフィルタ係数と、対称性を有するq(pは2以上の整数、且つ、k=p+q)個の第2フィルタ係数と、によって構成され、
前記テーブルは、
対称性を有するp個のフィルタ係数と、p個のフィルタ係数に対応するp個のビット値と、のそれぞれを乗算した結果であるp個の乗算結果、を足し合わせた2のp乗通りの演算結果のうち、同一値を示す演算結果が共通化された複数の演算結果と、当該複数の演算結果に対応する数の複数のアドレス値と、が関連付けられた第1サブテーブルと、
対称性を有するq個のフィルタ係数と、q個のフィルタ係数に対応するq個のビット値と、のそれぞれを乗算した結果であるq個の乗算結果、を足し合わせた2のq乗通りの演算結果のうち、同一値を示す演算結果が共通化された複数の演算結果と、当該複数の演算結果に対応する数の複数のアドレス値と、が関連付けられた第2サブテーブルと、
によって構成され、
前記抽出部は、前記第1サブテーブルから抽出された演算結果と、前記第2サブテーブルから抽出された演算結果と、を加算して出力する、
請求項1に記載のFIRフィルタ。
【請求項7】
対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成し、
生成した前記アドレス信号が示すアドレス値、に対応する演算結果を、記憶装置に格納された、複数のアドレス値と、複数の演算結果と、が関連付けられたテーブル、から抽出する、
FIRフィルタによるフィルタリング方法であって、
前記テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された前記複数の演算結果と、前記複数のアドレス値と、が関連付けられている、
FIRフィルタによるフィルタリング方法。
【請求項8】
対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成する処理と、
生成した前記アドレス信号が示すアドレス値、に対応する演算結果を、記憶装置に格納された、複数のアドレス値と、複数の演算結果と、が関連付けられたテーブル、から抽出する処理と、
をコンピュータに実行させる制御プログラムであって、
前記テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された前記複数の演算結果と、前記複数のアドレス値と、が関連付けられている、
制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、FIRフィルタ、FIRフィルタによるフィルタリング方法、及び、制御プログラムに関する。
【背景技術】
【0002】
近年、デジタルフィルタの一種であるFIRフィルタでは、処理性能向上の要求を満たすため、タップ数が増加傾向にあり、それに伴って、回路規模が飛躍的に増大している。
【0003】
この問題に対する解決策は、例えば特許文献1に開示されている。特許文献1に開示されたデジタルフィルタ演算処理回路は、フィルタ係数に対称性を持たせることによって、フィルタ係数に対称性を持たせない場合と比較して乗算回数を半減させている。それにより、この処理回路は、乗算回路の数を減らすことができるため、回路規模の増大を抑制することができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示された処理回路では、各乗算回路の規模が大きいため、全体としても依然として回路規模が大きくなってしまう、という課題があった。
【0006】
本開示の目的の一つは、上述した課題を解決するFIRフィルタ、FIRフィルタによるフィルタリング方法、及び、制御プログラムを提供することにある。
【課題を解決するための手段】
【0007】
本開示の一態様に係るFIRフィルタは、対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成するアドレス信号生成部と、複数のアドレス値と、複数の演算結果と、が関連付けられたテーブルが格納された記憶部と、前記アドレス信号生成部によって生成された前記アドレス信号が示すアドレス値、に対応する演算結果を、前記テーブルから抽出する抽出部と、を備え、前記テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された前記複数の演算結果と、前記複数のアドレス値と、が関連付けられている。
【0008】
本開示の一態様に係るFIRフィルタによるフィルタリング方法は、対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成し、生成した前記アドレス信号が示すアドレス値、に対応する演算結果を、記憶装置に格納された、複数のアドレス値と、複数の演算結果と、が関連付けられたテーブル、から抽出する、FIRフィルタによるフィルタリング方法であって、前記テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された前記複数の演算結果と、前記複数のアドレス値と、が関連付けられている。
【0009】
本開示の一態様に係る制御プログラムは、対称性を有するk(kは2以上の整数)個のフィルタ係数に対応するk個のビット値に応じたアドレス値のアドレス信号を生成する処理と、生成した前記アドレス信号が示すアドレス値、に対応する演算結果を、記憶装置に格納された、複数のアドレス値と、複数の演算結果と、が関連付けられたテーブル、から抽出する処理と、をコンピュータに実行させる制御プログラムであって、前記テーブルでは、対称性を有するk個のフィルタ係数と、k個のフィルタ係数に対応するk個のビット値と、のそれぞれを乗算した結果であるk個の乗算結果、を足し合わせた2のk乗通りの演算結果のうち、同一値を示す演算結果の組が共通化された前記複数の演算結果と、前記複数のアドレス値と、が関連付けられている。
【発明の効果】
【0010】
本開示は、回路規模の増大を抑制することが可能なFIRフィルタ、FIRフィルタによるフィルタリング方法、及び、制御プログラムを提供することができる。
【図面の簡単な説明】
【0011】
【
図1】実施の形態1にかかるFIRフィルタの構成例を示す図である。
【
図2】実施の形態1にかかるFIRフィルタの具体的な構成例を示す図である。
【
図3】実施の形態1にかかるFIRフィルタにおいて用いられるテーブルの設定内容の決定方法を説明するための図である。
【
図4】実施の形態1にかかるFIRフィルタにおいて用いられるテーブルの設定内容の一例を示す図である。
【
図5】実施の形態1にかかるFIRフィルタにおける入力値、アドレス値、及び、演算結果の対応関係を示す図である。
【
図6】実施の形態1にかかるFIRフィルタの第1変形例において用いられるテーブルの設定内容の決定方法を説明するための図である。
【
図7】実施の形態1にかかるFIRフィルタの第1変形例において用いられるテーブルの設定内容の一例を示す図である。
【
図8】実施の形態1にかかるFIRフィルタの第1変形例における入力値、アドレス値、及び、演算結果の対応関係を示す図である。
【
図9】実施の形態1にかかるFIRフィルタの第2変形例において用いられるテーブルの設定内容の一例を示す図である。
【
図10】実施の形態1にかかるFIRフィルタの第2変形例における入力値、アドレス値、及び、演算結果の対応関係を示す図である。
【
図11】実施の形態2にかかるFIRフィルタの概念を説明するための図である。
【
図12】構想段階のFIRフィルタの構成例を示す図である。
【
図13】
図12に示すFIRフィルタの変形例を示す図である。
【
図14】構想段階のFIRフィルタの構成例を示す図である。
【
図15】
図14に示すFIRフィルタの変形例を示す図である。
【
図16】
図15に示すFIRフィルタにおいて用いられるテーブルの設定内容の一例を示す図である。
【
図17】
図15に示すFIRフィルタによる処理の流れを説明するための図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【0013】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。ただし、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0014】
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
【0015】
<発明者らによる事前検討>
実施の形態1にかかるFIR(Finite Impulse Response)フィルタ1について説明する前に、発明者が事前検討した内容について説明する。
【0016】
<構想段階のFIRフィルタ50の説明>
図12は、構想段階のFIRフィルタ50の構成例を示す図である。以下では、FIRフィルタ50のタップ数(フィルタ係数の数)kが4である場合を説明するが、これに限られず、kは2以上の任意の整数であってよい。
【0017】
図12に示すように、FIRフィルタ50は、入力データX(n)に対してフィルタリングを行って出力データY(n)を出力するFIR型のデジタルフィルタであって、k-1個に相当する3個のラッチ回路511~513と、k個に相当する4個の乗算回路520~523と、k-1個に相当する3個の加算回路531~533と、を備える。
【0018】
FIRフィルタ50には、時刻nまでの所定期間における入力データX(n)として、4個の入力データD3,D2,D1,D0が順番に入力されている。
図12の例では、時刻nまでの所定期間における入力データX(n)として、4個の入力データ“2”,“3”,“4”,“5”が順番に入力されている。
【0019】
ラッチ回路511~513は、シフトレジスタを構成しており、入力データD3,D2,D1,D0をそれぞれノードN53,N52,N51,N50にシフトさせる。乗算回路520~523は、それぞれ、フィルタ係数d0~d3と、入力データD0~D3と、の乗算処理を行う。加算回路531は、乗算回路520による乗算結果と、乗算回路521による乗算結果と、の加算処理を行う。加算回路532は、加算回路531による加算結果と、乗算回路522による乗算結果と、の加算処理を行う。加算回路533は、加算回路532による加算結果と、乗算回路523による乗算結果と、の加算処理を行って、加算結果を、出力データY(n)として出力する。
図12の例では、D0=5,D1=4,D2=3,D3=2であるため、出力データY(n)は、以下のように表される。
【0020】
Y(n)=d0×D0+d1×D1+d2×D2+d3×D3
=5・d0+4・d1+3・d2+2・d3
【0021】
<構想段階のFIRフィルタ50の変形例>
図13は、FIRフィルタ50の変形例をFIRフィルタ50aとして示す図である。FIRフィルタ50aは、フィルタ係数d0~d3に対称性を持たせており、FIRフィルタ50と比較して、加算回路540,541をさらに備え、乗算回路522,523及び加算回路532,533を備えない。つまり、FIRフィルタ50aでは、FIRフィルタ50と比較して、実質的に乗算回路の数が半減している。なお、フィルタ係数d0~d3が対称性を有するとは、d0=d3,d1=d2ということである。
【0022】
加算回路540は、入力データD0と入力データD3との加算処理を行う。加算回路541は、入力データD1と入力データD2との加算処理を行う。乗算回路520は、フィルタ係数d0(=d3)と、加算回路540による加算結果であるD0+D3と、の乗算処理を行う。乗算回路521は、フィルタ係数d1(=d2)と、加算回路541による加算結果であるD1+D2と、の乗算処理を行う。加算回路531は、乗算回路520による乗算結果と、乗算回路521による乗算結果と、の加算処理を行って、加算結果を、出力データY(n)として出力する。
図13の例では、D0=5,D1=4,D2=3,D3=2、且つ、d0=d3,d1=d2であるため、出力データY(n)は、以下のように表される。
【0023】
Y(n)=d0×D0+d1×D1+d2×D2+d3×D3
=d0×(D0+D3)+d1×(D1+D2)
=7・d0+7・d1
【0024】
このように、FIRフィルタ50aは、フィルタ係数d0~d3に対称性を持たせることにより、FIRフィルタ50よりも少ない数の乗算回路を用いて構成されることが可能になるため、回路規模を低減させることができる。しかしながら、FIRフィルタ50aでは、各乗算回路の規模が大きいため、全体としても依然として回路規模が大きくなってしまう、という問題があった。このような問題に対する解決策として、発明者は、次に、分散算術法が採用されたFIRフィルタを検討した。
【0025】
<構想段階のFIRフィルタ60の説明>
図14は、分散算術法が採用されたFIRフィルタ60の構成例を示す図である。以下では、FIRフィルタ60のタップ数kが、FIRフィルタ50,50aの場合と同様に4である場合を例に説明するが、これに限られず、kは2以上の任意の整数であってよい。
【0026】
図14に示すように、FIRフィルタ60は、分散算術法が採用されたFIR型のデジタルフィルタであって、3個のラッチ回路611~613と、4個の乗算回路620~623と、3個の加算回路631~633と、アキュミュレータ641と、を備える。ラッチ回路611~613は、ラッチ回路511~513に対応し、乗算回路620~623は、乗算回路520~523に対応し、加算回路631~633は、加算回路531~533に対応する。
【0027】
FIRフィルタ60には、時刻nまでの所定期間における入力データX(n)として、4個の入力データD3,D2,D1,D0が順番に入力されている。
図14の例では、時刻nまでの所定期間における入力データX(n)として、4個の入力データ“2”,“3”,“4”,“5”が順番に入力されている。
【0028】
ラッチ回路611~613は、シフトレジスタを構成しており、入力データD3,D2,D1,D0をそれぞれノードN63,N62,N61,N60にシフトさせる。
【0029】
乗算回路620~623は、それぞれ、フィルタ係数d0~d3と、2進数で表されたm(mは1以上の整数)ビット幅の入力データD0~D3の同一ビット位置のビット値b0~b3と、の乗算を行う。
【0030】
加算回路631は、乗算回路620による乗算結果と、乗算回路621による乗算結果と、の加算処理を行う。加算回路632は、加算回路631による加算結果と、乗算回路622による乗算結果と、の加算処理を行う。加算回路633は、加算回路632による加算結果と、乗算回路623による乗算結果と、の加算処理を行って、加算結果を、アキュミュレータ641に出力する。
【0031】
アキュミュレータ641は、2進数で表されたmビット幅の入力データD0~D3のそれぞれの1ビット目からmビット目までの合計m個の同一ビット位置のビット値b0~b3に対する合計m個の演算結果(加算回路632の出力結果)を、それぞれの入力データD0~D3におけるビット位置に応じてビットシフトさせたうえで累積加算し、出力データY(n)として出力する。
【0032】
図14の例では、D0=5,D1=4,D2=3,D3=2であり、2進数で表すとD0=101,D1=100,D2=011,D3=010である。
【0033】
まず、乗算回路620~623は、それぞれ、フィルタ係数d0~d3と、2進数で表された入力データD0~D3の1ビット目(最下位ビット)のビット値1,0,1,0と、の乗算処理を行う。加算回路633は、それらの乗算結果を足し合わせて、アキュミュレータ641に出力する。このときの加算回路633の出力結果は、
(d0×1)+(d1×0)+(d2×1)+(d3×0)=d0+d2
となる。
【0034】
次に、乗算回路620~623は、それぞれ、フィルタ係数d0~d3と、2進数で表された入力データD0~D3の2ビット目のビット値0,0,1,1と、の乗算処理を行う。加算回路633は、それらの乗算結果を足し合わせて、アキュミュレータ641に出力する。このときの加算回路633の出力結果は、
(d0×0)+(d1×0)+(d2×1)+(d3×1)=d2+d3
となる。
【0035】
次に、乗算回路620~623は、それぞれ、フィルタ係数d0~d3と、2進数で表された入力データD0~D3の3ビット目(最上位ビット)のビット値1,1,0,0と、の乗算処理を行う。加算回路633は、それらの乗算結果を足し合わせて、アキュミュレータ641に出力する。このときの加算回路633の出力結果は、
(d0×1)+(d1×1)+(d2×0)+(d3×0)=d0+d1
となる。
【0036】
アキュミュレータ641は、入力データD0~D3のそれぞれの1ビット目のビット値b0~b3に対する演算結果“d0+d2”をビットシフトさせずに保持する。また、アキュミュレータ641は、入力データD0~D3のそれぞれの2ビット目のビット値b0~b3に対する演算結果“d2+d3”を1桁分左側にビットシフトさせたうえで累積加算する。さらに、アキュミュレータ641は、入力データD0~D3のそれぞれの3ビット目のビット値b0~b3に対する演算結果“d0+d1”を2桁分左側にビットシフトさせたうえで累積加算する。そして、アキュミュレータ641は、累積加算した結果を、出力データY(n)として出力する。
【0037】
ここで、ビット値b0~b3と、乗算回路620~623及び加算回路631~633による演算結果と、の組み合わせは、2の4乗通り、即ち、16通り、に限定される。したがって、FIRフィルタ60は、乗算回路620~623及び加算回路631~633を用いてフィルタ処理を行う代わりに、ビット値b0~b3とそれに対応する演算結果との複数の組み合わせが設定されたテーブル603を用いてフィルタ処理を行うようにすれば、回路規模をさらに低減させることができる。
【0038】
<構想段階のFIRフィルタ60の変形例>
図15は、FIRフィルタ60の変形例をFIRフィルタ60aとして示す図である。
図15に示すように、FIRフィルタ60aは、記憶部(記憶装置)602と、抽出部604と、を備える。
【0039】
記憶部602には、ビット値b0~b3とそれに対する演算結果との複数の組み合わせが設定されたテーブル603、が格納されている。
【0040】
図16は、テーブル603の設定内容の一例を示す図である。
図16に示すように、テーブル603には、ビット値b0~b3(
図16では、b3,b2,b1,b0の順に表記)と、それに対応する演算結果と、の16通りの組み合わせが設定されている。
【0041】
抽出部604は、入力データD0~D3の1ビット目からmビット目(本例では3ビット目)までの合計m個(本例では合計3個)の同一ビット位置のビット値b0~b3、に対応する合計m個の演算結果を、テーブル603から抽出し、それぞれ入力データD0~D3におけるビット位置に応じてビットシフトさせたうえで累積加算する。そして、抽出部604は、累積加算した結果を、出力データY(n)として出力する。
【0042】
具体的には、抽出部604は、取得部605と、アキュミュレータ606と、を備える。アキュミュレータ606は、例えば、シフタ607と、加算回路608と、ラッチ回路609と、を有する。
【0043】
取得部605は、記憶部102に格納されたテーブル603から、ビット値b0~b3が示すアドレス値の演算結果の読み出しを行う。或いは、取得部605は、セレクタであって、テーブル603に設定された16通りの演算結果のうち、ビット値b0~b3に応じた演算結果を選択して出力してもよい。
【0044】
アキュミュレータ606において、シフタ607は、取得部605によって取得された演算結果を、ビット値b0~b3の入力データD0~D3におけるビット位置に応じてビットシフトさせる。例えば、取得部605によって1ビット目(最下位ビット)のビット値b0~b3に対応する演算結果“d0+d2”が取得された場合には、シフタ607は、当該演算結果をビットシフトさせない(
図17のステップS101参照)。また、取得部605によって2ビット目のビット値b0~b3に応じた演算結果“d2+d3”が取得された場合には、シフタ607は、当該演算結果を1桁分左側にビットシフトさせる(
図17のステップS102参照)。さらに、取得部605によって3ビット目(本例では最上位ビット)のビット値b0~b3に応じた演算結果“d0+d1”が取得された場合には、シフタ607は、当該演算結果を2桁分左側にビットシフトさせる(
図17のステップS103参照)。加算回路608及びラッチ回路609は、シフタ607によるビットシフト後の演算結果を累積加算する。本例では、加算回路608及びラッチ回路609は、3個のビットシフト後の演算結果を累積加算して、出力データY(n)として出力する。
【0045】
このように、FIRフィルタ60aは、乗算回路620~623及び加算回路631~633を用いてフィルタ処理を行う代わりに、テーブル603を用いてフィルタ処理を行うことにより、回路規模をさらに低減させることができる。しかしながら、FIRフィルタ60aでは、テーブル603のサイズが大きいため、全体としても依然として回路規模が大きくなってしまう、という問題があった。なお、テーブル603のサイズは、タップ数の増加に伴って、指数関数的に増大する。また、取得部605としてセレクタが用いられている場合、テーブル603のサイズが大きいほど当該セレクタのサイズも大きくなってしまう。
【0046】
そこで、発明者は、乗算回路や加算回路を用いてフィルタ処理を行う代わりに、複数のフィルタ係数に対称性を持たせることによって同じ値を示すこととなった演算結果の組が共通化されたテーブルを用いてフィルタ処理を行うことにより、回路規模をさらに低減させることが可能なFIRフィルタ1を見出した。
【0047】
<実施の形態1>
図1は、実施の形態1にかかるFIRフィルタ1の構成例を示す図である。以下では、特に断りが無い限り、FIRフィルタ1のタップ数kが4である場合を例に説明するが、これに限られず、kは2以上の任意の整数であってよい。
【0048】
図1に示すように、FIRフィルタ1は、FIRフィルタ60aの場合と同様に、分散算術法が採用されたFIR型のデジタルフィルタであって、乗算回路や加算回路を用いてフィルタ処理を行う代わりに、テーブル103を用いてフィルタ処理を行っている。また、FIRフィルタ1では、フィルタ係数d0~d3が対称性を有している。つまり、d0=d3,d1=d2である。以下では、主に、FIRフィルタ1の構成及び動作のうち、FIRフィルタ60aと異なる構成及び動作について説明する。
【0049】
図1に示すように、FIRフィルタ1は、アドレス信号生成部101と、記憶部102と、抽出部104と、を備える。
【0050】
アドレス信号生成部101は、2進数で表されたmビット幅の入力データD0~D3のそれぞれの1ビット目からmビット目(本例では3ビット目)までの合計m個の同一ビット位置のビット値b0~b3、に応じたアドレス値を示すアドレス信号を順に生成する。
【0051】
より具体的には、まず、アドレス信号生成部101は、入力データD0~D3のそれぞれの1ビット目のビット値b0~b3、に応じたアドレス値を示すアドレス信号を生成する。次に、アドレス信号生成部101は、入力データD0~D3のそれぞれの2ビット目のビット値b0~b3、に応じたアドレス値を示すアドレス信号を生成する。次に、アドレス信号生成部101は、入力データD0~D3のそれぞれの3ビット目のビット値b0~b3、に応じたアドレス値を示すアドレス信号を生成する。
【0052】
記憶部102には、アドレス信号が示すアドレス値と、それに対応する演算結果(FIRフィルタ60における加算回路633の出力結果に相当)と、の複数の組み合わせが設定されたテーブル103、が格納されている。ここで、テーブル103には、テーブル603に設定された16通り(2のk乗通り)の演算結果のうち、同一値を示す演算結果の組が共通化された10通りの演算結果が設定されている。つまり、テーブル103のサイズは、テーブル603よりも小さくなっている。テーブル103の設定内容の詳細については後述する。
【0053】
抽出部104は、アドレス信号生成部101によって生成されたアドレス信号が示すアドレス値、に対応する合計m個(本例では3個)の演算結果を、テーブル103から順に抽出し、それぞれ入力データD0~D3におけるビット位置に応じてビットシフトさせたうえで累積加算する。そして、抽出部104は、累積加算した結果を、データY(n)として出力する。
【0054】
このように、本実施の形態にかかるFIRフィルタ1は、対称性を有するフィルタ係数のフィルタ処理を、乗算回路や加算回路を用いて行う代わりに、サイズが最適化されたテーブル103を用いて行うことにより、FIRフィルタ60aよりもさらに回路規模を低減させることができる。
【0055】
図2は、FIRフィルタ1のより具体的な構成例を示す図である。
図2に示すように、FIRフィルタ1において、テーブル103は、テーブル1031と、テーブル1032と、によって構成されている。以下、テーブル1031を非対称テーブル1031と称し、テーブル1032を対称テーブル1032と称す。抽出部104は、取得部1041,1042と、セレクタ1043と、アキュミュレータ(ACC)1044と、を有する。
【0056】
アドレス信号生成部101は、ビット値b0~b3に応じたアドレス値AD1,AD2のアドレス信号を生成する。以下、アドレス値AD1を示すアドレス信号を、アドレス信号AD1とも称す。アドレス値AD2を示すアドレス信号を、アドレス信号AD2とも称す。また、アドレス信号生成部101は、ビット値b0~b3に応じた選択信号S1をさらに出力する。
【0057】
図3は、テーブル103の設定内容の決定方法を説明するための図である。なお、
図3には、テーブル603の設定内容の一例が示されている。既に説明したように、FIRフィルタ1では、フィルタ係数d0~d3が対称性を有している。つまり、d0=d3,d1=d2である。
【0058】
そのため、例えば、ビット値b3,b2,b1,b0=“0001”のときの演算結果“d0”と、ビット値b3,b2,b1,b0=“1000”のときの演算結果“d3”とは、同じ値を示すため、共通化可能である。また、ビット値b3,b2,b1,b0=“0010”のときの演算結果“d1”と、ビット値b3,b2,b1,b0=“0100”のときの演算結果“d2”とは、同じ値を示すため、共通化可能である。また、ビット値b3,b2,b1,b0=“0011”のときの演算結果“d1+d0”と、ビット値b3,b2,b1,b0=“1100”のときの演算結果“d3+d2”とは、同じ値を示すため、共通化可能である。また、ビット値b3,b2,b1,b0=“0101”のときの演算結果“d2+d0”と、ビット値b3,b2,b1,b0=“1010”のときの演算結果“d3+d1”とは、同じ値を示すため、共通化可能である。また、ビット値b3,b2,b1,b0=“0111”のときの演算結果“d2+d1+d0”と、ビット値b3,b2,b1,b0=“1110”のときの演算結果“d3+d2+d1”とは、同じ値を示すため、共通化可能である。また、ビット値b3,b2,b1,b0=“1011”のときの演算結果“d3+d1+d0”と、ビット値b3,b2,b1,b0=“1101”のときの演算結果“d3+d2+d0”とは、同じ値を示すため、共通化可能である。
【0059】
図4は、テーブル103の設定内容の一例を示す図である。既に説明したように、テーブル103は、非対称テーブル1031と、対称テーブル1032と、によって構成されている。非対称テーブル1031には、
図3に示したテーブル603に設定された16通りの演算結果のうち、同じ値を示す6組の演算結果が、それぞれ、6通りの演算結果として共通化され、異なる値のアドレス値AD1と組み合わされたうえで、設定されている。また、対称テーブル1032には、
図3に示したテーブル603に設定された16通りの演算結果のうち、同じ値を示す6組の演算結果以外の残りの4通りの演算結果が、それぞれ異なる値のアドレス値AD2と組み合わされたうえで、設定されている。
【0060】
具体的には、非対称テーブル1031には、
アドレス値AD1=“000”と演算結果“d0”との組み合わせ、
アドレス値AD1=“001”と演算結果“d1”との組み合わせ、
アドレス値AD1=“010”と演算結果“d1+d0”との組み合わせ、
アドレス値AD1=“011”と演算結果“d2+d0”との組み合わせ、
アドレス値AD1=“100”と演算結果“d2+d1+d0”との組み合わせ、及び
アドレス値AD1=“101”と演算結果“d3+d1+d0”との組み合わせ、
がそれぞれ設定されている。
【0061】
また、対称テーブル1032には、
アドレス値AD2=“00”と演算結果“0(なし)”との組み合わせ、
アドレス値AD2=“01”と演算結果“d2+d1”との組み合わせ、
アドレス値AD2=“10”と演算結果“d3+d0”との組み合わせ、及び、
アドレス値AD2=“11”と演算結果“d3+d2+d1+d0”との組み合わせ、がそれぞれ設定されている。
【0062】
図5は、FIRフィルタ1における入力値、アドレス値、及び、演算結果の対応関係を示す図である。
図5に示すように、アドレス信号生成部101では、16通りのビット値b0~b3のうち、演算結果が同じになる6組のビット値b0~b3のそれぞれの組に対して、異なる値のアドレス値AD1が割り当てられている。また、アドレス信号生成部101では、16通りのビット値b0~b3のうち、残りの4通りのビット値b0~b3のそれぞれに対して、異なる値のアドレス値AD2が割り当てられている。
【0063】
具体的には、アドレス信号生成部101では、
ビット値b3,b2,b1,b0=“0001”,“1000”のそれぞれに対して、共通のアドレス値AD1=“000”が割り当てられている。
ビット値b3,b2,b1,b0=“0010”,“0100”のそれぞれに対して、共通のアドレス値AD1=“001”が割り当てられている。
ビット値b3,b2,b1,b0=“0011”,“1100”のそれぞれに対して、共通のアドレス値AD1=“010”が割り当てられている。
ビット値b3,b2,b1,b0=“0101”,“1010”のそれぞれに対して、共通のアドレス値AD1=“011”が割り当てられている。
ビット値b3,b2,b1,b0=“0111”,“1110”のそれぞれに対して、共通のアドレス値AD1=“100”が割り当てられている。
ビット値b3,b2,b1,b0=“1011”,“1101”のそれぞれに対して、共通のアドレス値AD1=“101”が割り当てられている。
【0064】
また、アドレス信号生成部101では、
ビット値b3,b2,b1,b0=“0000”に対して、アドレス値AD2=“00”が割り当てられている。
ビット値b3,b2,b1,b0=“0110”に対して、アドレス値AD2=“01”が割り当てられている。
ビット値b3,b2,b1,b0=“1001”に対して、アドレス値AD2=“10”が割り当てられている。
ビット値b3,b2,b1,b0=“1111”に対して、アドレス値AD2=“11”が割り当てられている。
【0065】
ここで、
図5における、アドレス値AD1,AD2を経由して紐付けられた、16通りのビット値b0~b3とそれらの演算結果との対応関係は、
図3に示すテーブル603における、16通りのビット値b0~b3とそれらの演算結果との対応関係と実質的に同じになっている。
【0066】
取得部1041は、記憶部102に格納されたテーブル1031から、アドレス信号AD1が示すアドレス値AD1の演算結果の読み出しを行う。或いは、取得部1041は、セレクタであって、テーブル1031に設定された複数の演算結果のうち、アドレス信号AD1が示すアドレス値AD1に応じた演算結果を選択して出力してもよい。
【0067】
取得部1042は、記憶部102に格納されたテーブル1032から、アドレス信号AD2が示すアドレス値AD2の演算結果の読み出しを行う。或いは、取得部1042は、セレクタであって、テーブル1032に設定された複数の演算結果のうち、アドレス信号AD2が示すアドレス値AD2に応じた演算結果を選択して出力してもよい。
【0068】
セレクタ1043は、選択信号S1に基づいて、取得部1041によって取得された演算結果、及び、取得部1042によって取得された演算結果の何れかを選択して出力する。つまり、選択信号S1は、アドレス信号生成部101によって生成されたアドレス信号が、非対称テーブル1031のアドレス値、及び、対称テーブル1032のアドレス値、のうち何れのアドレス値を示すのかを表している。
【0069】
アキュミュレータ1044は、基本的には、アキュミュレータ606と同様の構成を有する。アキュミュレータ1044は、セレクタ1043によって選択された演算結果を、ビット値b0~b3の入力データD0~D3におけるビット位置に応じてビットシフトさせたうえで累積加算する。本例では、アキュミュレータ1044は、各入力データD0~D3のビット幅に相当する3個(m個)のビットシフト後の演算結果を累積加算して、出力データY(n)として出力する。
【0070】
このように、本実施の形態にかかるFIRフィルタ1は、対称性を有するフィルタ係数のフィルタ処理を、乗算回路や加算回路を用いて行う代わりに、サイズが最適化されたテーブル103を用いて行うことにより、FIRフィルタ60aよりもさらに回路規模を低減させることができる。また、取得部1041,1042としてセレクタが用いられている場合、テーブル103を構成するテーブル1031,1032のサイズが小さくなるため、それに伴って、取得部1041,1042のサイズも小さくなる。
【0071】
なお、対称テーブル1032の要素数(対称テーブル1032に設定される演算結果の数)αは、タップ数をkとすると、式(1)のように表すことができる。
【0072】
【0073】
また、非対称テーブル1031の要素数(非対称テーブル1031に設定される演算結果の数)βは、式(2)のように表すことができる。
【0074】
【0075】
例えば、タップ数kが4の場合、式(1)及び式(2)より、対称テーブル1032の要素数α、及び、非対称テーブル1031の要素数βは、それぞれ、
【数3】
【数4】
となる。式(1)及び式(2)を用いて算出されたこれらの要素数α,βは、
図4に示す対称テーブル1032及び非対称テーブル1031のそれぞれの要素数と同じになっている。
【0076】
つまり、タップ数kが4の場合、同じ値を示す演算結果の組が共通化される前のテーブル(共通化前のテーブル)の要素数が16(=2^4)であるのに対し、同じ値を示す演算結果の組が共通化された後の2つのテーブル(共通化後の2つのテーブル)の要素数α,βはそれぞれ4及び6となる。つまり、共通化後の2つテーブルの合計のサイズは、共通化前のテーブルのサイズより小さくなっている。
【0077】
また、タップ数kが5の場合、式(1)及び式(2)より、対称テーブル1032の要素数α、及び、非対称テーブル1031の要素数βは、それぞれ、
【数5】
【数6】
となる。
【0078】
つまり、タップ数kが5の場合、同じ値を示す演算結果の組が共通化される前のテーブル(共通化前のテーブル)の要素数が32(=2^5)であるのに対し、同じ値を示す演算結果の組が共通化された後の2つのテーブル(共通化後の2つのテーブル)の要素数α、βはそれぞれ8及び12となる。つまり、共通化後の2つテーブルの合計のサイズは、共通化前のテーブルのサイズより小さくなっている。
【0079】
<FIRフィルタ1の第1変形例の説明>
なお、タップ数kが奇数の場合、中央のフィルタ係数以外のk-1個のフィルタ係数との乗算が行われるk-1個の入力値(ビット値)と、それに対応する演算結果と、の複数通りの組み合わせが設定されたテーブルが、記憶部102に格納されてもよい。この場合、当該テーブルから抽出された演算結果と、中央のフィルタ係数を用いた演算結果と、の加算処理は別途行われる。
【0080】
例えば、タップ数kが5の場合、5個のフィルタ係数d0~d4のうち、中央のフィルタ係数d2以外のフィルタ係数d0,d1,d3,d4との乗算が行われる入力値(ビット値)b0,b1,b3,b4と、それに対応する演算結果と、の16通りの組み合わせが設定されたテーブル603aがまず準備される(
図6参照)。このテーブル603aは、
図3に示すテーブル603において、b3,b2がそれぞれb4,b3に置き換えられ、演算結果であるd3,d2がそれぞれd4,d3に置き換えられたものと等価である。その後、テーブル603aは、テーブル603からテーブル103への最適化の場合と同様の手続きを経て、非対称テーブル1031a及び対称テーブル1032aからなるテーブル103aに最適化される(
図7参照)。なお、非対称テーブル1031a及び対称テーブル1032aは、非対称テーブル1031及び対称テーブル1032において、b3,b2がそれぞれb4,b3に置き換えられ、演算結果であるd3,d2がそれぞれd4,d3に置き換えられたものと等価である。
【0081】
図8は、FIRフィルタ1の第1変形例であるFIRフィルタ1aにおける、入力値、アドレス値、及び、演算結果の対応関係を示す図である。
図8に示すように、アドレス信号生成部101の第1変形例であるアドレス信号生成部101aでは、16通りのビット値b0,b1,b3,b4のうち、演算結果が同じになる6組のビット値b0,b1,b3,b4のそれぞれの組に対して、異なる値のアドレス値AD1が割り当てられている。また、アドレス信号生成部101aでは、16通りのビット値b0,b1,b3,b4のうち、残りの4通りのビット値b0,b1,b3,b4のそれぞれに対して、異なる値のアドレス値AD2が割り当てられている。
【0082】
ここで、
図8における、アドレス値AD1,AD2を経由して紐付けられた、16通りのビット値b0,b1,b3,b4とそれらの演算結果との対応関係は、
図6に示すテーブル603aにおける、16通りのビット値b0,b1,b3,b4とそれらの演算結果との対応関係と実質的に同じになっている。
【0083】
非対称テーブル1031a又は対称テーブル1032aから抽出された演算結果と、中央のフィルタ係数d2と、ビット値b2と、の乗算結果と、は後段の加算回路において、別途加算されている。FIRフィルタ1aのその他の構成については、FIRフィルタ1の場合と同様であるため、その説明を省略する。
【0084】
FIRフィルタ1aでは、対称テーブル1032aの要素数αが4、非対称テーブル1031aの要素数βが6になるため、テーブルサイズがさらに低減される。
【0085】
<FIRフィルタ1の第2変形例の説明>
また、
図4に示す非対称テーブル1031では、同じ値を示す演算結果の組のさらなる共通化が可能である。
【0086】
図9は、FIRフィルタ1の第2変形例であるFIRフィルタ1bにおいて用いられる非対称テーブル1031bの設定内容の一例を示す図である。
図9に示すように、非対称テーブル1031において、演算結果“d1+d0”と、演算結果“d2+d0”とは、d3=d0,d2=d1であることから同じ値を示すため、共通化可能である。そこで、非対称テーブル1031bでは、演算結果“d1+d0”と、演算結果“d2+d0”とが、演算結果“d1+d0”として共通化されている。
【0087】
具体的には、非対称テーブル1031bには、
アドレス値AD1=“000”と演算結果“d0”との組み合わせ、
アドレス値AD1=“001”と演算結果“d1”との組み合わせ、
アドレス値AD1=“010”と演算結果“d1+d0”との組み合わせ、
アドレス値AD1=“011”と演算結果“d2+d1+d0”との組み合わせ、及び
アドレス値AD1=“100”と演算結果“d3+d1+d0”との組み合わせ、
がそれぞれ設定されている。
【0088】
図10は、FIRフィルタ1bにおける入力値、アドレス値、及び、演算結果の対応関係を示す図である。
図10に示すように、アドレス信号生成部101の第2変形例であるアドレス信号生成部101bでは、16通りのビット値b0~b3のうち、演算結果が同じになる4組のビット値b0~b3のそれぞれの組に対して、異なる値のアドレス値AD1が割り当てられている。また、アドレス信号生成部101bでは、16通りのビット値b0~b3のうち、残りの4通りのビット値b0~b3のそれぞれに対して、異なる値のアドレス値AD2が割り当てられている。
【0089】
ここで、
図10における、アドレス値AD1,AD2を経由して紐付けられた、16通りのビット値b0~b3とそれらの演算結果との対応関係は、
図3に示すテーブル603における、16通りのビット値b0~b3とそれらの演算結果との対応関係と実質的に同じになっている。
【0090】
FIRフィルタ1bのその他の構成については、FIRフィルタ1の場合と同様であるため、その説明を省略する。FIRフィルタ1bでは、対称テーブル1032aの要素数αが4、非対称テーブル1031bの要素数βが5になるため、テーブルサイズがさらに低減される。
【0091】
<実施の形態2>
図11は、実施の形態2にかかるFIRフィルタ2の概念を説明するための図である。タップ数kが大きくなると、それに伴って、テーブルの要素数も指数関数的に増加する。例えば、タップ数kが12の場合、式(1)及び式(2)より、対称テーブル1032の要素数αは64、非対称テーブル1031の要素数βは2016になってしまう。そこで、本実施の形態では、テーブル103が、対称性を有する複数のフィルタ係数に対する複数通りの演算結果が設定された複数のサブテーブルに分割されている。
【0092】
図11の例では、12個のフィルタ係数d0~d11に対する複数通りの演算結果が設定されたテーブル103が、3個のサブテーブル203_1~203_3に分割されている。サブテーブル203_1~203_3のそれぞれから抽出された演算結果は、後段の加算回路によって加算される。
【0093】
具体的には、サブテーブル203_1には、対称性を有する4個のフィルタ係数d0,d1,d10,d11に対する複数通りの演算結果が設定されている。サブテーブル203_2には、対称性を有する4個のフィルタ係数d2,d3,d8,d9に対する複数通りの演算結果が設定されている。サブテーブル203_3には、対称性を有する4個のフィルタ係数d4,d5,d6,7に対する複数通りの演算結果が設定されている。ここで、各サブテーブル203_1~203_3は、
図4に示したテーブルの例の場合と同様に、要素数αが4の対称テーブルと、要素数βが6の非対称テーブルと、によって構成されている。
【0094】
つまり、3つのサブテーブルに分割される前のテーブルでは、要素数αが64の対称テーブルが1つ、及び、要素数βが2016の非対称テーブルが1つであったのに対し、3つのサブテーブルに分割された後のテーブルでは、要素数αが4の対称テーブルが3つと、要素数βが6の非対称テーブルが3つであり、テーブルサイズが低減されている。
【0095】
なお、本開示は、FIRフィルタの一部又は全部を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することが可能である。
【0096】
具体的には、上述したプログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、RAM(Random-Access Memory)、ROM(Read-Only Memory)、フラッシュメモリ、SSD(Solid-State Drive)又はその他のメモリ技術、CD-ROM、DVD(Digital Versatile Disc)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【0097】
以上、図面を参照して、本開示の実施の形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、本開示の要旨を逸脱しない範囲内において様々な設計変更等が可能である。
【符号の説明】
【0098】
1 FIRフィルタ
1a FIRフィルタ
1b FIRフィルタ
2 FIRフィルタ
50 FIRフィルタ
50a FIRフィルタ
60 FIRフィルタ
60a FIRフィルタ
101 アドレス信号生成部
101a アドレス信号生成部
101b アドレス信号生成部
102 記憶部
103 テーブル
103a テーブル
104 抽出部
203_1 サブテーブル
203_2 サブテーブル
203_3 サブテーブル
602 記憶部
603 テーブル
603a テーブル
604 抽出部
605 取得部
606 アキュミュレータ
607 シフタ
608 加算回路
609 ラッチ回路
1031 非対称テーブル
1031a 非対称テーブル
1031b 非対称テーブル
1032 対称テーブル
1032a 対称テーブル
1032b 対称テーブル
1041 取得部
1042 取得部
1043 セレクタ
1044 アキュミュレータ