特許第6500266号(P6500266)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社アクセルの特許一覧

<>
  • 特許6500266-ディジタル信号処理装置 図000004
  • 特許6500266-ディジタル信号処理装置 図000005
  • 特許6500266-ディジタル信号処理装置 図000006
  • 特許6500266-ディジタル信号処理装置 図000007
  • 特許6500266-ディジタル信号処理装置 図000008
  • 特許6500266-ディジタル信号処理装置 図000009
  • 特許6500266-ディジタル信号処理装置 図000010
  • 特許6500266-ディジタル信号処理装置 図000011
  • 特許6500266-ディジタル信号処理装置 図000012
  • 特許6500266-ディジタル信号処理装置 図000013
  • 特許6500266-ディジタル信号処理装置 図000014
  • 特許6500266-ディジタル信号処理装置 図000015
  • 特許6500266-ディジタル信号処理装置 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6500266
(24)【登録日】2019年3月29日
(45)【発行日】2019年4月17日
(54)【発明の名称】ディジタル信号処理装置
(51)【国際特許分類】
   G06F 17/16 20060101AFI20190408BHJP
   G06F 17/10 20060101ALI20190408BHJP
   H03H 17/02 20060101ALI20190408BHJP
【FI】
   G06F17/16 D
   G06F17/10 D
   H03H17/02 601G
   H03H17/02 681H
【請求項の数】3
【全頁数】16
(21)【出願番号】特願2016-241386(P2016-241386)
(22)【出願日】2016年12月13日
(65)【公開番号】特開2018-97598(P2018-97598A)
(43)【公開日】2018年6月21日
【審査請求日】2017年7月12日
(73)【特許権者】
【識別番号】398034168
【氏名又は名称】株式会社アクセル
(74)【代理人】
【識別番号】100104776
【弁理士】
【氏名又は名称】佐野 弘
(74)【代理人】
【識別番号】100119194
【弁理士】
【氏名又は名称】石井 明夫
(72)【発明者】
【氏名】伊藤 務
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2001−273277(JP,A)
【文献】 特開平11−353305(JP,A)
【文献】 特開2007−43731(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G06F 17/10
H03H 17/02
(57)【特許請求の範囲】
【請求項1】
ベクトル演算を用いて各種のディジタル信号のフィルタ処理を行うディジタル信号処理装置であって、
入力データが格納されるデータ格納領域を複数備えたベクトルレジスタからなる第一の格納手段と、
前記入力データに対して演算処理される係数のデータとしての係数データが格納されるデータ格納領域を複数備えたベクトルレジスタからなる第二の格納手段と、
設定された前記第一の格納手段及び/又は前記第二の格納手段に対する前記データの書き込み及び読み出しの位置及び/又は順序に基づいて、前記第一の格納手段及び前記第二の格納手段に対する前記データの書き込み及び読み出しを行う入出力データ制御手段と、
前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記データとをベクトル演算にて演算処理を行う演算処理手段と、
前記演算処理手段の演算結果を格納する格納レジスタとを備え、
前記第一の格納手段のそれぞれの前記データ格納領域、及び、前記第二の格納手段のそれぞれの前記データ格納領域には、格納された前記データの読み出しの開始位置を特定するためのインデックスを設定し、
前記入出力データ制御手段は、
処理を行うフィルタ次数Nを設定し、
前記第一の格納手段及び前記第二の格納手段について、複数の前記データ格納領域に対して、所定の位置から所定の順番に基づいて前記データの読み出しを行うように制御すると共に、
前記第一の格納手段について、前記データの書き込み及び読み出しの開始位置の前記インデックスとしての開始インデックスを演算処理毎にずらすことでリングバッファとして構成し、
前記第二の格納手段について、前記係数データの読み出しの前記開始インデックスは演算処理毎に同じ前記インデックスとし、
前記演算処理手段は、データが入力される毎に前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記係数データとをベクトル演算にて演算処理を行い、その出力を前記格納レジスタに格納し、
前記入出力データ制御手段は、
前記格納された演算処理結果を読み出し、出力するようにしたことを特徴とするディジタル信号処理装置。
【請求項2】
前記演算処理手段はFIRフィルタによるフィルタ処理の演算を行うことを特徴とする請求項1に記載のディジタル信号処理装置。
【請求項3】
前記入力データは音声信号であることを特徴とする請求項1又は2に記載のディジタル信号処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、音声信号等、各種のディジタル信号についてフィルタ処理を行うディジタル信号処理装置に関する。
【背景技術】
【0002】
従来、各種のディジタル信号をフィルタ処理する場合によく用いられるフィルタとして、IIR(Infinite Impulse Response)フィルタやFIR(Finite
Impulse Response)フィルタがある。これらのフィルタは各種のディジタル信号処理において用いられ、特にFIRフィルタは、ハードウェアで効率的に実現できることから、音声信号の処理等で用いられることが多い。
【0003】
ディジタル信号、例えば、音声信号に対するFIRフィルタ処理では下記式(1)に示す処理が行われる。
・・・(1)
ただしx[n]:入力信号、y[n]:出力信号、h[i]:フィルタ係数、N:フィルタ次数
このFIRフィルタ処理をディジタル信号処理において用いる場合には、一般に、下記式(2)に示すような積和演算処理を行う。
・・・(2)
ただしx[n]:入力信号、y[n]:出力信号、h[i]:フィルタ係数、N:フィルタ次数
このような積和演算処理をDSP(Digital Signal Processor)を用いて実行する場合、最新の入力信号からN個分過去の入力信号までを保持しておく必要がある。そのため、FIRフィルタ処理を行う場合、過去の入力信号を記録しておくための、データの個数分のデータ格納領域が設けられたレジスタが用いられる。
【0004】
ここで、フィルタ次数が大きいほどフィルタ特性は良好になるので、FIRフィルタを構成するDSPにおいてはフィルタ次数Nが512,1024,2048等高次のものになる場合が多い。そのため、DSPのフィルタ処理においては、フィルタ次数Nと同数のデータの読み出し、フィルタ次数Nと同数の乗算、及びN個の乗算結果の加算処理(即ち積和演算)を行うことになる。これにより、フィルタ処理のための演算処理が増大してしまい、DSPにおけるフィルタ処理の処理負荷が大きくなってしまう。そのため、DSPにおけるフィルタ処理の処理負荷をなるべく軽減させることのできる構成が望まれる。
【0005】
一方、従来、ディジタル信号処理においては、ベクトル演算処理装置も多く用いられている。これは、複数のベクトルレジスタとベクトル演算器を用い、ベクトルレジスタに格納されたデータを順次読み出してベクトル演算するものである。これにより、単一の命令列を複数のデータ列に適用して並列に演算処理を行うことが可能になる。
【0006】
このような、並列の演算処理を用いたFIRフィルタとしては、一部の乗加算処理を行う乗加算器MAC0と残りの乗加算処理を行う乗加算器MAC1を用いてディジタル信号処理を行う構成において、乗加算器MAC0と乗加算器MAC1で共通に用いるサンプル(データ)をデータメモリ(レジスタ)から読み出して、そのサンプルに対して乗加算器MAC0と乗加算器MAC1で処理を行わせる構成を備えることで、積和演算処理を並列実行する際に、メモリに記録されたデータの読み出し回数を減少させる構成が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2012−205298号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ここで、一般に、ディジタル信号に対してベクトル演算等の積和演算の並列処理を行うための通常の構成においては、データを格納したレジスタの個々のデータ格納領域の位置を管理する番号(レジスタの個々のデータ格納領域の番地情報や、個々の格納領域に付与されたインデックス情報など)の番号順(例えば番号の昇順や降順)にデータを読み出して処理を行う。そのため、1回の並列処理が完了すると、レジスタの個々のデータ格納領域に記録されたデータを書き換える処理(例えば、それぞれのデータ格納領域に格納されたデータを、一つ上の番号のデータ格納領域にそれぞれずらして再度格納すると共に、一番古い信号のデータを消去し、最新のデータを新たに格納する処理)を行う必要がある。上記特許文献1においてもこのような処理が行われたのちに、積和演算処理の並列実行が逐次行われることが前提となっている。そのため、上記特許文献1においては、レジスタ内のデータを書き替える処理が頻繁に発生し、そのための処理負荷と処理時間が大きくなるという問題がある。この問題は、フィルタ次数が大きくなった場合に特に顕著になる。
【0009】
一方、FIRフィルタ等、複数のフィルタ次数を有するディジタルフィルタで用いる入力信号を保持する際、レジスタを構成するデータ格納領域が環状に構成されるように管理するようにした、リングバッファが用いられることも多い。このリングバッファを用いれば、個々のデータ格納領域に格納されたデータを、積和演算処理が行われるたびに書き替えるような使用法を用いる必要がないので、データ格納領域の管理が容易になる。しかしそれゆえに、リングバッファにおいては、個々のデータの順序(例えば、最新の信号から過去の信号までの時系列順)とデータ格納領域を管理する番号の順序(昇順や降順)とが一致した状態にならない。そのため、特許文献1に記載の発明においては、レジスタにリングバッファを用いることで、フィルタ次数が大きくなった場合に特に過大になる、処理負荷や処理時間を軽減させることはできないという問題がある。
【0010】
本発明はこのような問題に鑑みてなされたものであり、複数のフィルタ次数を有するディジタルフィルタを用いたディジタル信号処理において、フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができるディジタル信号処理装置を提供することを課題としている。
【課題を解決するための手段】
【0011】
かかる課題を達成するために、請求項1に記載の発明は、ベクトル演算を用いて各種のディジタル信号のフィルタ処理を行うディジタル信号処理装置であって、入力データが格納されるデータ格納領域を複数備えたベクトルレジスタからなる第一の格納手段と、前記入力データに対して演算処理される係数のデータとしての係数データが格納されるデータ格納領域を複数備えたベクトルレジスタからなる第二の格納手段と、設定された前記第一の格納手段及び/又は前記第二の格納手段に対する前記データの書き込み及び読み出しの位置及び/又は順序に基づいて、前記第一の格納手段及び前記第二の格納手段に対する前記データの書き込み及び読み出しを行う入出力データ制御手段と、前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記データとをベクトル演算にて演算処理を行う演算処理手段と、前記演算処理手段の演算結果を格納する格納レジスタとを備え、前記第一の格納手段のそれぞれの前記データ格納領域、及び、前記第二の格納手段のそれぞれの前記データ格納領域には、格納された前記データの読み出しの開始位置を特定するためのインデックスを設定し、前記入出力データ制御手段は、処理を行うフィルタ次数Nを設定し、前記第一の格納手段及び前記第二の格納手段について、複数の前記データ格納領域に対して、所定の位置から所定の順番に基づいて前記データの読み出しを行うように制御すると共に、前記第一の格納手段について、前記データの書き込み及び読み出しの開始位置の前記インデックスとしての開始インデックスを演算処理毎にずらすことでリングバッファとして構成し、前記第二の格納手段について、前記係数データの読み出しの前記開始インデックスは演算処理毎に同じ前記インデックスとし、記演算処理手段は、データが入力される毎に前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記係数データとをベクトル演算にて演算処理を行い、その出力を前記格納レジスタに格納し、前記入出力データ制御手段は、前記格納された演算処理結果を読み出し、出力するようにしたことを特徴とする。
【0013】
請求項に記載の発明は、請求項1に記載の構成に加え、前記演算処理手段はFIRフィルタによるフィルタ処理の演算を行うことを特徴とする。
【0014】
請求項に記載の発明は、請求項1又は2に記載の構成に加え、前記入力データは音声信号であることを特徴とする。
【発明の効果】
【0015】
請求項1に記載の発明によれば、リングバッファとして構成された第一の格納手段及び/又は第二の格納手段から、設定に基づいて、読み出しの先頭位置を順番に替えながらデータ格納領域に対するデータの書き込み及びデータの読み出しを行い
読み出されたデータをベクトル演算にて演算処理を行うことにより、リングバッファにおいて、個々のデータ格納領域に格納されたデータを、処理が行われるたびに他のデータ格納領域に書き替えてデータの並び順とデータ格納領域を管理する番号の順序を一致させなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことができる。これにより、複数のフィルタ次数を有するディジタルフィルタを用いたディジタル信号処理において、フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【0016】
請求項に記載の発明によれば、第一の格納手段について、データの書き込み及び読み出しの開始位置のインデックスとしての開始インデックスを演算処理毎にずらすことでリングバッファとして構成することにより、リングバッファにおいて、個々のデータ格納領域に格納されたデータを、処理が行われるたびに他のデータ格納領域に書き替えてデータの並び順とデータ格納領域を管理する番号の順序を一致させなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことを、簡易かつ確実に実現できる。
【0017】
請求項に記載の発明によれば、FIRフィルタを用いたフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【0018】
請求項に記載の発明によれば、音声信号のフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【図面の簡単な説明】
【0019】
図1】この実施の形態に係るベクトル演算処理装置の概略構成を示す機能ブロック図である。
図2】この実施の形態に係るディジタル信号処理システムの概略構成を示す機能ブロック図である。
図3】この実施の形態に係るベクトル演算処理装置の構成の概略を模式的に示す機能ブロック図である。
図4】この実施の形態に係るベクトル演算処理装置の構成の詳細を模式的に示す機能ブロック図である。
図5】この実施の形態に係るベクトルレジスタの各レジスタの構成を模式的に示す機能ブロック図である。
図6】この実施の形態に係るベクトル命令発行部の構成を模式的に示す機能ブロック図である。
図7】この実施の形態に係るベクトル演算処理装置の処理手順を示すフローチャートである。
図8】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
図9】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
図10】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
図11】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
図12】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
図13】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【発明を実施するための形態】
【0020】
図1乃至図13に、この発明の実施の形態を示す。
【0021】
[基本構成]
図1は、この実施の形態に係る「ディジタル信号処理装置」としてのベクトル演算処理装置の概略構成を示す機能ブロック図である。
【0022】
図1に示す「ディジタル信号処理装置」としてのベクトル演算処理装置1は、プログラムの実行によって機能を実現させるための構成(例えばCPU等)を備え、各種のディジタル信号に対するフィルタ処理を行う装置に用いられる。具体的には、例えば、図1に示すベクトル演算処理装置1は、パチンコ機、パチスロ等の遊技機(図示せず)に組み込まれ、遊技機(図示せず)に設けられたスピーカ14(図2参照)から出力される音声を形成するディジタル音声信号に対してFIRフィルタとして機能してフィルタ処理を行う。
【0023】
図1に示す通り、このベクトル演算処理装置1はベクトルレジスタ2、「演算処理手段」としての演算器3を備えている。このベクトル演算処理装置1の備えるそれぞれの構成は、基本的にはハードウェアロジックによって構成されるが、これらの構成のうちの一部又は全部がプログラムの実行によって実現されるものであってもよい。
【0024】
ベクトルレジスタ2は、ベクトル演算処理装置1においてフィルタ処理の対象となる入力データ(音声信号)やフィルタ係数や演算器3における積和演算の結果としてのデータ(フィルタ処理された音声信号)が記録される記憶素子である。図1に示す通り、ベクトルレジスタ2には、データ保管領域としてのN個(ただしN>1)の「第一の格納手段」としての第0レジスタ20、「第二の格納手段」としての第1レジスタ20、・・・第Mレジスタ20(ただしM=N−1)が設けられており、フィルタ処理が行われる前の音声信号、フィルタ処理に用いられる係数のデータ、フィルタ処理が行われた後の音声信号がそれぞれ記録される(詳しくは後述する)。
【0025】
演算器3は、加算器や乗算器を備え、入力データ(音声信号)に対する積和演算を行うことでFIRフィルタにおけるフィルタ処理を行う。
【0026】
図2は、この実施の形態に係るディジタル信号処理システムの概略構成を示す機能ブロック図である。同図に示すように、ディジタル信号処理システム10は、音声信号処理装置11、ROM12、アンプ13、スピーカ14を備えている。そして、音声信号処理装置11は、デコーダ15、ベクトル演算処理装置1、出力部16を備えている。
【0027】
音声信号処理装置11は、この実施の形態に係るベクトル演算処理装置1を備え、デコーディングによる音声信号の復元と音声信号のFIRフィルタによるフィルタ処理とを行って出力する。この音声信号処理装置11の備えるそれぞれの構成は、基本的にはハードウェアロジックによって構成されるが、これらの構成のうちの一部又は全部がプログラムの実行によって実現されるものであってもよい。
【0028】
ROM12は、記録媒体であって圧縮符号化された音声信号等の各種データが記録される。アンプ13は音声信号処理装置11から出力された音声信号を増幅する。スピーカ14は音声信号を音声に変換して外部に出力する。
【0029】
デコーダ15は、ROM12に記録された、符号化された音声信号をデコードして音声信号を復元する。デコードの結果得られた音声の振幅値をサンプリング周期毎にベクトル演算処理装置1に供給する。出力部16はアンプ13との通信インターフェース機能(例えばI2S/SPDIFなど)を備え、ベクトル演算処理装置1でフィルタ処理された音声信号をアンプ13に送信するために必要な処理を行う。
【0030】
図3は、この実施の形態に係るベクトル演算処理装置1の構成の概略を模式的に示す機能ブロック図である。同図に示す通り、この実施の形態のベクトル演算処理装置1は、ベクトルレジスタ2及び演算器3に加え、リングバッファ制御部17を備えている。
【0031】
リングバッファ制御部17は、ベクトルレジスタ2に設けられた第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20のうちの一部又は全部をリングバッファとして構成させるために必要な処理、即ち読み出しインデックスや書き込みインデックスの制御を行う(詳しくは後述する)。
【0032】
図4は、この実施の形態に係るベクトル演算処理装置1の構成の詳細を模式的に示す機能ブロック図である。同図に示す通り、ベクトル演算処理装置1は、ベクトル命令発行部21、としてのベクトル命令制御部22、「入出力データ制御手段」としてのベクトルレジスタ読み出し部23、「入出力データ制御手段」としてのベクトルレジスタ書き込み部24を備えている。
【0033】
ベクトル命令発行部21は、入力データ制御部211、出力データ制御部212、「入出力データ制御手段」としてのリングバッファ制御部17を備えている(これらの構成の機能については後述する)。ベクトル命令発行部21は、リングバッファ制御部17の機能により、ベクトルレジスタ2のレジスタ例えば第0レジスタ20をリングバッファとして機能させて各レジスタ即ち第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20に対するデータの読み出しインデックスや書き込みインデックスの制御を行う。具体的には、ベクトルレジスタ2に記録されたデータを用いてベクトル演算を実施するための命令を発行する。また、ベクトル命令発行部21は、リングバッファ制御部17の機能も含み、レジスタの読み出し、書き込みインデックスを制御する(詳しくは後述する。)。
【0034】
ベクトル命令制御部22は、ベクトル命令発行部21から出力された命令に基づいてベクトルレジスタ読み出し部23及びベクトルレジスタ書き込み部24を制御することで、ベクトル演算によるデータの演算を制御するために必要な処理を行う(詳しくは後述する。)。
【0035】
ベクトルレジスタ読み出し部23は、ベクトルレジスタ2の各レジスタ、例えば第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20の指定されたインデックスに基づくデータ格納領域、例えば、第0レジスタ20の、第0インデックスが付与された第0データ格納領域2011、第1インデックスが付与された第1データ格納領域2012、第2インデックスが付与された第2データ格納領域2013、第3インデックスが付与された第3データ格納領域2014図8図13参照)に記録されたデータをベクトル演算によって読み出して演算器3に送る。
【0036】
ベクトルレジスタ書き込み部24は、演算器3において演算された結果をベクトル演算によってベクトルレジスタ2の各レジスタ第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20の指定されたインデックスに基づく格納領域、例えば第Mレジスタ20の第0インデックスが付与された第0データ格納領域20N1に送る。
【0037】
乗算器31は、ベクトルレジスタ読み出し部23から読み出された2つの値(具体的には、第0レジスタ20から読み出された音声信号と、第1レジスタ20から読み出されたフィルタ係数)を乗算する処理を行う。加算器32は、乗算器31における乗算の結果や、レジスタ33に一時的に記録された積和演算の結果を加算する処理を行う。レジスタ33は、加算器32により加算された結果のデータを一時的に記録する機能を有する。
【0038】
図5は、この実施の形態に係るベクトルレジスタ2の各レジスタ第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20の構成を模式的に示す機能ブロック図である。同図に示す通り、第0レジスタ20は、複数例えばN個(N>1)の第0データ格納領域2011、第1データ格納領域2012、・・・第Mデータ格納領域201M、第Nデータ格納領域201Nを備えている。また、同様に、第1レジスタ20も複数例えばN個(N>1)の第0データ格納領域2021、第1データ格納領域2022、・・・第Mデータ格納領域202M、第Nデータ格納領域202Nを備え、第Mレジスタ20も複数例えばN個(N>1)の第0データ格納領域20M1、第1データ格納領域20M2、・・・第Mデータ格納領域20MM、第Nデータ格納領域20MNを備えている。それぞれのデータ格納領域例えばデータ格納領域2011,2012,201M,201Nには、音声信号やフィルタ係数等のデータが格納される。
【0039】
図6は、この実施の形態に係るベクトル命令発行部21の構成を模式的に示す機能ブロック図である。同図に示す通り、ベクトル命令発行部21は、図4にも示す入力データ制御部211、出力データ制御部212、「インデックス制御手段」としてのリングバッファ制御部17の他に、使用レジスタ設定部213、フィルタ次数設定部214、係数設定部215を備えている。また、リングバッファ制御部17は、「インデックス制御手段」としての読み出しインデックス制御部171、「インデックス制御手段」としての書き込みインデックス制御部172を備えている。
【0040】
入力データ制御部211は、各レジスタ例えば第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20にデータ(音声信号やフィルタ係数の値や演算結果)を入力するための制御を行う。出力データ制御部212は、ベクトルレジスタ2の第Mレジスタ20から、信号値とフィルタ係数との積和演算の結果としてのデータを出力させるための制御を行う。
【0041】
リングバッファ制御部17は、各レジスタ例えば第0レジスタ20をリングバッファとして機能させるための制御を行う。具体的には、各レジスタの格納領域(例えば第0レジスタ20の第0データ格納領域2011に付与した第0インデックス、第1データ格納領域2012に付与した第1インデックス、第2データ格納領域2013に付与した第2インデックス、第3データ格納領域2014に付与した第3インデックス、等(図8図13参照))を基準位置ないし基準として、データの読み出しや書き込みを行うための制御を行う。読み出しインデックス制御部171は、リングバッファとして構成した各レジスタ例えば第0レジスタ20の第0データ格納領域2011、第1データ格納領域2012、・・・第Mデータ格納領域201Nからデータを読み出すために必要な制御を行う。書き込みインデックス制御部172は、リングバッファとして構成した各レジスタ例えば第0レジスタ20の第0データ格納領域2011、第1データ格納領域2012、・・・第Mデータ格納領域201Nにデータを書き込むために必要な制御を行う。
【0042】
使用レジスタ設定部213は、初期設定時に、各レジスタ20,20,・・・20のうち、音声信号やフィルタ計数等を格納するものを設定する。フィルタ次数設定部214は、初期設定時に、演算器3におけるフィルタ処理の際のフィルタ次数Nを設定する。係数設定部215は、初期設定時にFIRフィルタ係数を求めるために利用する係数h[0]〜h[n−1]を設定する(図8図13参照)。
【0043】
[処理手順]
図7は、この実施の形態に係るベクトル演算処理装置1の処理手順を示すフローチャートであり、図8図13は、この実施の形態に係るベクトル演算処理装置1のベクトルレジスタ2におけるデータの格納状態を模式的に示す図である。
【0044】
以下、図7図14に基づいて、この実施の形態におけるベクトル演算処理装置1の処理手順を説明する。なお、同図では、ベクトルレジスタ2の第0レジスタ20に入力データ、第1レジスタ20に係数を格納し、レジスタMに積和演算結果を格納する事例に基づいて説明する。また、説明を簡単にするため、フィルタ次数Nを4とした場合に基づき説明する。
【0045】
(1)まず、初期設定として、ベクトル命令発行部21の使用レジスタ設定部213は、入力データを格納するレジスタとして第0レジスタ20を設定し、フィルタ係数を格納するレジスタとして第1レジスタ20を設定し、積和演算結果を格納するレジスタとして第Mレジスタ20を設定する(ステップS1)。ここで、使用レジスタ設定部213は、入力データを格納する第0レジスタ20をリングバッファとして設定する。なお、ここでは積和演算結果を格納するレジスタとしてベクトルレジスタ2の第Mレジスタ20を使用するが、積和演算結果は単一の出力であるため、ベクトルレジスタ2ではなくスカラレジスタ(図示せず)を用いてもよい。
【0046】
(2)また、初期設定として、ベクトル命令発行部21のフィルタ次数設定部214は、演算器3におけるフィルタ次数N(N=4)を設定する。なお、ベクトルレジスタ2の各レジスタ、例えば第0レジスタ20、第1レジスタ20、・・・第Mレジスタ20は、データを格納するデータ格納領域例えばデータ格納領域2011,2012,・・・201M,201Nが4つ以上ある場合は、そのうちの4つがデータの格納に用いるものとして設定される。なお、データ格納領域の数がフィルタ次数よりも少ないレジスタ例えば第Mレジスタ20がこの実施の形態に用いるものとして設定されている場合は、これを、データ格納領域の数がフィルタ次数(N=4)以上ある他のレジスタ例えば第M−1レジスタ(図示せず)に変更する処理を行うことが望ましい。
【0047】
(3)また、初期設定として、ベクトル命令発行部21は、ベクトル命令制御部22に対し、上記(1)(2)でデータの格納に用いるレジスタとして設定された第0レジスタ20、第1レジスタ20、第Mレジスタ20の情報と、第0レジスタ20、第1レジスタ20、第Mレジスタ20の使用するデータ格納領域に付与するインデックスの情報を、ベクトル命令制御部22に対して発行する(ステップS1)。そして、ベクトル命令制御部22は、使用する第0レジスタ20、第1レジスタ20、第Mレジスタ20の使用するデータ格納領域にインデックスを付与する(ステップS1)。具体的には、例えば第0レジスタ20の第0データ格納領域2011には第0インデックスを、第1データ格納領域2012には第1インデックスを、第2データ格納領域2013には第2インデックスを、第3データ格納領域2014には第3インデックスをそれぞれ付与する。同様に、第1レジスタ20の第0データ格納領域2021には第0インデックスを、第1データ格納領域2022には第1インデックスを、第2データ格納領域2023には第2インデックスを、第3データ格納領域2024には第3インデックスをそれぞれ付与する。また、同様に、第Mレジスタ20の第0データ格納領域20N1には第0インデックスを、第1データ格納領域20N2には第1インデックスを、第2データ格納領域20N3には第2インデックスを、第3データ格納領域20N4には第3インデックスをそれぞれ付与する(図8図13参照)。
【0048】
(4)また、初期設定として、係数設定部215は、演算器3におけるFIRフィルタの演算に用いる係数h[0]〜h[n−1]をベクトルレジスタ2の第1レジスタ20の各データ格納領域2021,2022・・・202M,202Nに格納する。この場合、係数設定部215は、係数h[0]〜h[n−1]を格納する第1レジスタ20のデータ格納領域2021,2022・・・202M,202Nに、第0インデックスから第N−1(ここではN=4)インデックスを設定する(ステップS1)。そして、このインデックスの数字0〜N−1までの順に、データ格納領域2021,2022・・・202M,202Nに係数h[0]〜h[n−1]を格納する。
【0049】
(5)図8に示すように、初期状態において、入力データを格納する前の第0レジスタ20のデータ格納領域2011,2012・・・201M,201Nには全て“0”が格納されている。また積和演算結果を格納する第Mレジスタ20のデータ格納領域20N1,20N2・・・20NM,20NNにも全て“0”が格納されている。
【0050】
(6)ここで、ベクトル命令制御部22は、リングバッファ制御部17の読み出しインデックス制御部171と書き込みインデックス制御部172とに対し、下記(イ)(ロ)の規則に基づいて、第0レジスタ20へのデータの格納やデータの取り出しを行わせるように設定する(ステップS2)。また、ベクトル命令制御部22は、ベクトルレジスタ読み出し部23やベクトルレジスタ書き込み部24に対し、下記(ハ)(ニ)に示す規則に基づいて、第1レジスタ20、第Mレジスタ20へのデータの格納やデータの取り出しの開始位置の設定や、格納順序、取り出し順序の設定を行う(ステップS2)。
(イ)書き込みインデックス制御部172は、リングバッファとして構成された第0レジスタ20のデータ格納領域2011,2012・・・201M,201Nに、付与されたインデックスの降順に(つまり、インデックスの数字N−1,N−2,・・・1,0の順に)新たなデータを格納する。
(ロ)読み出しインデックス制御部171は、新たにデータが格納されたデータ格納領域を読み出しの開始位置として設定し、この開始位置からインデックスを昇順に循環させる形で順次データを読み出す(ステップS2)。具体的には、例えば、第0レジスタ20の第2インデックスが付与された第2データ格納領域2013に新しい入力データX1が格納された場合(図10参照)、第2データ格納領域20、第3インデックスが付与された第3データ格納領域20、第0インデックスが付与された第0データ格納領域2011、第1インデックスが付与された第1データ格納領域2012、の順にデータを読み出す。
(ハ)なお、第1レジスタ20はリングバッファとして構成されていないので、上記()に示す順序でのデータの読み出しは行われず、インデックスの昇順(つまり、第0インデックスが付与された第0データ格納領域2021、第1インデックスが付与された第1データ格納領域2022、第2インデックスが付与された第2データ格納領域2023、第3インデックスが付与された第3データ格納領域2023、の順)にデータを取り出して、演算器3において音声信号との乗算加算処理が行われる。
(ニ)全ての乗算処理と加算処理が行われた結果の値は、第Mレジスタ20の第0インデックスが付与された第0データ格納領域20N1に格納される。
【0051】
(7)1番目の入力データX0がベクトルレジスタ書き込み部24に入力されると、ベクトル命令発行部21の入力データ制御部211は、第0レジスタ20のインデックス3が付与された第4データ格納領域2014に入力データを格納するように、ベクトル命令制御部22に命令を発行する(ステップS1)。
【0052】
(8)ベクトル命令制御部22は、上記(1)にて入力データを格納するベクトルレジスタ2として設定された第0レジスタ20のデータ格納領域2011,2012・・・201M,201Nに、上記(5)の(イ)で設定された順序に基づき入力データを格納する。
【0053】
(9)ベクトル命令発行部21は下記(A)〜(E)の処理を行う命令をベクトル命令制御部22に出力する。そして、ベクトル命令制御部22はこの命令に基づいてベクトルレジスタ読み出し部23、ベクトルレジスタ書き込み部24及び演算器3を制御する。
【0054】
(A)第0レジスタ20の第3インデックスが付与された第3データ格納領域2014に格納された入力データX0と第1レジスタ20の第0インデックスが付与された第0データ格納領域2021に格納された係数h[0]とを読み出し、演算器3にて乗算させる(ステップS3、図9の(1))。その演算結果は演算器3のレジスタ33に格納される。
【0055】
(B)この段階で、N個(4個)のデータ全ての演算が完了していないので(ステップS4の“No”)、第0レジスタ20の読み出し位置を一つずらす(ステップS5)。すると、読み出し位置がデータを格納できる領域(第3インデックスが付与された第3データ格納領域2023)を越えるので(ステップS6の“Yes”)、第0レジスタ20の読み出し位置を、第0インデックスが付与された第0データ格納領域2011に戻す(ステップS7)。そして、第0インデックスが付与された第0データ格納領域2011に格納されたデータ(0)と、第1レジスタ20の第1インデックスが付与された第1データ格納領域2022に格納された係数h[1]とを読み出し、演算器3にて乗算させる(図9の(2))。その演算結果と演算器3のレジスタ33に格納された演算結果とを加算し、その演算結果を再び演算器3のレジスタ33に格納する(ステップS3)。
【0056】
(C)この段階で、N個(4個)のデータ全ての演算が完了していないので(ステップS4の“No”)、第0レジスタ20の読み出し位置を一つずらす(ステップS5)。この場合は、読み出し位置がデータを格納できる領域(第3インデックスが付与された第3データ格納領域2023)を越えないので(ステップS6の“No”)、第0レジスタ20の第1インデックスが付与された第1データ格納領域2012に格納されたデータ(0)と、第1レジスタ20の第2インデックスが付与された第2データ格納領域2023に格納された係数h[2]とを読み出し、演算器3にて乗算させる(図9の(3))。その演算結果と演算器3のレジスタ33に格納されている演算結果との加算処理結果を再び演算器3のレジスタ33に格納する(ステップS3)。
【0057】
(D)この段階で、N個(4個)のデータ全ての演算が完了していないので(ステップS4の“No”)、第0レジスタ20の読み出し位置を一つずらす(ステップS5)。この場合は、読み出し位置がデータを格納できる領域(第3インデックスが付与された第3データ格納領域2023)を越えないので(ステップS6の“No”)、第0レジスタ20の第2インデックスが付与された第2データ格納領域2013に格納されたデータと、第1レジスタ20の第3インデックスが付与された第3データ格納領域2024に格納された係数h[3]とを読み出し、演算器3にて乗算させる(図9の(4))。その演算結果と演算器3のレジスタ33に格納されている演算結果とを加算し、その演算結果を再び演算器3のレジスタ33に格納する(ステップS3)。
【0058】
(E)N個(4個)のデータに関する積和演算を実行した後(ステップS4の“Yes”)、その積和演算結果である値R0を第Mレジスタ20の第0インデックスが付与された第0データ格納領域20N1に書き込む(ステップS8)。
【0059】
(10)ベクトル命令発行部21はベクトルレジスタ2の第Mレジスタ20の第0インデックスが付与された第0データ格納領域2011に格納された演算結果である値R0をFIRフィルタの出力結果として出力するよう、ベクトル命令制御部22に指示し、ベクトル命令制御部22は指示に従い、第Mレジスタ20の第0インデックスが付与された第0データ格納領域20N1に格納されたデータを出力する。
【0060】
(11)次に、2番目の入力データX1がベクトルレジスタ書き込み部24に入力されると、図10に示すように、第0レジスタ20の第2インデックスが付与された第2データ格納領域2013にデータが格納される。そして、図10に示すように、第0レジスタ20の各データ格納領域2011,2012,・・・201M(2013),201N(2014)に格納されたデータと、第1レジスタ20に格納された係数との積和演算が行われ、その演算結果である値R1が第Mレジスタ20の第0インデックスが付与された第0データ格納領域20N1に格納される。更に、ベクトル命令発行部21が演算結果である値R1を出力するよう命令を発行し、ベクトル命令制御部22は、発行された命令に基づいてベクトル読み出し部23、ベクトル書き込み部24及び演算器3を制御する。
【0061】
(12)以下、同様に図11図12に示すように、3番目の入力データX2、4番目の入力データX3が入力されると、上記と同様の第0レジスタ20へのデータの書き込みと演算を順次繰り返し、FIRフィルタの出力を求める。図12に示すように、第0レジスタ20の全てのデータ格納領域2011,2012,・・・201M,201Nに値が格納された後、5番目の入力データX4が入力されると、図13に示すように、最先にデータが格納されたデータ格納領域(この場合は第0レジスタ20の第3データ格納領域2014)のデータを最新のデータに置き換える。以後、同様の処理が繰り返される。
【0062】
以上示した通り、この実施の形態のベクトル演算処理装置1においては、ベクトル演算機能とリングバッファ機能とを兼ね備えたベクトル演算処理装置1としたので、FIRフィルタの積和演算処理はベクトル演算処理装置1側で処理が行われることになる。従って、DSP(Digital Signal Processor)側の処理負荷を低減することができる。
【0063】
この実施の形態においては、リングバッファとして構成された第0レジスタ20から、設定に基づいて、読み出しの先頭位置を順番に替えながら第0データ格納領域2011〜第3データ格納領域2014に対するデータの書き込み及びデータの読み出しを行い
読み出されたデータを演算器3においてベクトル演算にて演算処理を行うことにより、リングバッファとして構成された第0レジスタ20において、個々のデータ格納領域即ち第0データ格納領域2011〜第3データ格納領域2014かのそれぞれに格納されたデータを、処理が行われるたびに他のデータ格納領域即ち第0データ格納領域2011〜第3データ格納領域2014に書き替えてデータの並び順とデータ格納領域即ち第0データ格納領域2011〜第3データ格納領域2014を管理する番号の順序を一致させること(例えば、データ格納領域2011,2012,2013,2014の昇順に入力データX0,X1,X2,X3,X4・・・を並べ直すこと)を行わなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことができる。これにより、複数のフィルタ次数を有するディジタルフィルタを用いたディジタル信号処理において、フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【0064】
この実施の形態においては、リングバッファとして構成された第0レジスタ20の第0データ格納領域2011〜第3データ格納領域2014に設定されたインデックス情報即ち第0インデックス〜第3インデックスに基づいて、データの書き込み及び読み出しの先頭位置の決定とデータの書き込み及び読み出しを行うこととを実現できるので、リングバッファとしての第0レジスタ20において、個々のデータ格納領域即ち第0データ格納領域2011〜第3データ格納領域2014に格納されたデータを、処理が行われるたびに他のデータ格納領域即ち第0データ格納領域2011〜第3データ格納領域2014に書き替えてデータの並び順とデータ格納領域即ち第0データ格納領域2011〜第3データ格納領域2014を管理する番号の順序を一致させること(例えば、データ格納領域2011,2012,2013,2014の昇順に入力データX0,X1,X2,X3,X4・・・を並べ直すこと)を行わなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことを、簡易かつ確実に実現できる。
【0065】
この実施の形態においては、演算器3におけるFIRフィルタを用いたフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【0066】
この実施の形態においては、音声信号のフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【0067】
なお、上記実施の形態においては、音声信号を格納する第0レジスタ20をリングバッファとして構成したが、これに限定されず、フィルタ計数を格納する第1レジスタ202や、積和演算の結果を格納する第Mレジスタ20をリングバッファとして構成してもよい。また、第0レジスタ20、第1レジスタ20、第Mレジスタ20のうちの2つ乃至3つをリングバッファとして構成してもよい。
【0068】
上記実施の形態においては、リングバッファとして構成した第0レジスタ20への書き込み位置や読み出し位置を、データ格納領域2011,2012,2013,2014に付与したインデックスを基準に任意に特定できる構成としたが、これに限定されず、データ格納領域2011,2012,2013,2014の読み出し位置や書き込み位置を任意に特定できる構成、例えばデータ格納領域2011,2012,2013,2014のアドレス情報によって任意に特定するような構成など、であれば、どのようなものであってもよい。
【0069】
上記実施の形態においては、ベクトル演算処理装置1は、音声信号を処理対象として扱うものとしたが、これに限定されず、音声信号以外のどのようなディジタル信号、例えば画像信号等を処理対象とするものであってもよい。
【0070】
上記実施の形態においては、ベクトル演算処理装置1は、FIRフィルタとして機能するものとしたが、これに限定されず、FIRフィルタ以外のいかなるフィルタ、例えばIIRフィルタによってフィルタ処理を行うものであってもよい。
【0071】
上記実施の形態においては、ベクトル演算処理装置1は、遊技機(図示ぜず)に用いられるものとしたが、遊技機以外のいかなる用途に用いられるものであってもよい。
【0072】
上記実施の形態は本発明の例示であり、本発明が上記実施の形態のみに限定されることを意味するものではないことは、いうまでもない。
【符号の説明】
【0073】
1・・・ベクトル演算処理装置(ディジタル信号処理装置)
3・・・演算器(演算処理手段)
20・・・第0レジスタ(第一の格納手段)
20・・・第1レジスタ(第二の格納手段)
2011,2012,2013,2014,2021,2022,2023,2024,20N1,20N2,20N3,20N4,・・・データ格納領域
171・・・読み出しインデックス制御部(インデックス制御手段)
172・・・書き込みインデックス制御部(インデックス制御手段)
211・・・入力データ制御部(入出力データ制御手段)
212・・・出力データ制御部(入出力データ制御手段)
213・・・使用レジスタ設定部(入出力データ制御手段)
23・・・ベクトルレジスタ読み出し部(入出力データ制御手段)
24・・・ベクトルレジスタ書き込み部(入出力データ制御手段)
X0,X1,X2,X3,X4・・・入力データ
h[0]〜h[n−1]・・・係数
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13