(57)【要約】【課題】フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができるディジタル信号処理装置を提供する。【解決手段】ベクトル演算処理装置１は、入力データが格納される第０レジスタ２０１と、係数のデータが格納される第１レジスタ２０２と、第０及び第１レジスタに対するデータの書き込み及び読み出しを行うベクトルレジスタ読み出し部及びベクトルレジスタ書き込み部及び使用レジスタ設定部と、設定に基づいて読み出されたデータをベクトル演算にて演算処理を行う演算器３を備え、使用レジスタ設定部は、第０及び／又は第１レジスタをリングバッファとして構成し、ベクトルレジスタ読み出し部及び書き込み部はリングバッファとして構成された第０及び／又は第１レジスタから、読み出しの先頭位置を順番に替えながらデータの書き込み及び読み出しを行い、演算器３はデータの演算処理を行う。【選択図】図１
2018097598.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル演算を用いて各種のディジタル信号のフィルタ処理を行うディジタル信号処理装置であって、
入力データが格納されるデータ格納領域を複数備えた第一の格納手段と、
前記入力データに対して演算処理される係数のデータが格納されるデータ格納領域を複数備えた第二の格納手段と、
設定された前記第一の格納手段及び／又は前記第二の格納手段に対する前記データの書き込み及び読み出しの位置及び／又は順序に基づいて、前記第一の格納手段及び前記第二の格納手段に対する前記データの書き込み及び読み出しを行う入出力データ制御手段と、
前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記データとをベクトル演算にて演算処理を行う演算処理手段とを備え、  
前記入出力データ制御手段は、前記第一の格納手段及び／又は前記第二の格納手段について、複数の前記データ格納領域に対して順番に前記データの書き込み又は読み出しを行うように制御することでリングバッファとして構成し、前記リングバッファとして構成された前記第一の格納手段及び／又は前記リングバッファとして構成された前記第二の格納手段から、読み出しの先頭位置を順番に替えながら前記データ格納領域に対する前記データの書き込み及び前記データの読み出しを行い、
前記演算処理手段は、前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記データとをベクトル演算にて演算処理を行うことを特徴とするディジタル信号処理装置。
【請求項２】
前記リングバッファとして構成された前記第一の格納手段及び／又は前記リングバッファとして構成された前記第二の格納手段に対し、前記データの書き込み及び前記データの読み出しを行う際の基準位置としてのインデックス情報を設定するインデックス制御手段を備え、
該インデックス制御手段は、前記リングバッファとして構成された前記第一の格納手段の前記データ格納領域及び／又は前記リングバッファとして構成された前記第二の格納手段の前記データ格納領域に対して前記インデックス情報を設定し、
前記入出力データ制御手段は、前記データの書き込み及び前記データの読み出しの際、前記インデックス情報を基準に前記書き込み及び前記読み出しの先頭位置を決定して前記データの書き込み及び前記読み出しを行うことを特徴とする請求項１に記載のディジタル信号処理装置。
【請求項３】
前記演算処理手段はＦＩＲフィルタによるフィルタ処理の演算を行うことを特徴とする請求項１に記載のディジタル信号処理装置。
【請求項４】
前記入力データは音声信号であることを特徴とする請求項１乃至３の何れか一つに記載のディジタル信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声信号等、各種のディジタル信号についてフィルタ処理を行うディジタル信号処理装置に関する。
【背景技術】
【０００２】
従来、各種のディジタル信号をフィルタ処理する場合によく用いられるフィルタとして、ＩＩＲ（Infinite Impulse Response）フィルタやＦＩＲ（Finite
Impulse Response）フィルタがある。これらのフィルタは各種のディジタル信号処理において用いられ、特にＦＩＲフィルタは、ハードウェアで効率的に実現できることから、音声信号の処理等で用いられることが多い。
【０００３】
ディジタル信号、例えば、音声信号に対するＦＩＲフィルタ処理では下記式（１）に示す処理が行われる。
2018097598.tif 000003
・・・（１）
ただしｘ［ｎ］：入力信号、ｙ［ｎ］：出力信号、ｈ［ｉ］：フィルタ係数、Ｎ：フィルタ次数
このＦＩＲフィルタ処理をディジタル信号処理において用いる場合には、一般に、下記式（２）に示すような積和演算処理を行う。
2018097598.tif 000004
・・・（２）
ただしｘ［ｎ］：入力信号、ｙ［ｎ］：出力信号、ｈ［ｉ］：フィルタ係数、Ｎ：フィルタ次数
このような積和演算処理をＤＳＰ（Digital Signal Processor）を用いて実行する場合、最新の入力信号からＮ個分過去の入力信号までを保持しておく必要がある。そのため、ＦＩＲフィルタ処理を行う場合、過去の入力信号を記録しておくための、データの個数分のデータ格納領域が設けられたレジスタが用いられる。
【０００４】
ここで、フィルタ次数が大きいほどフィルタ特性は良好になるので、ＦＩＲフィルタを構成するＤＳＰにおいてはフィルタ次数Ｎが５１２，１０２４，２０４８等高次のものになる場合が多い。そのため、ＤＳＰのフィルタ処理においては、フィルタ次数Ｎと同数のデータの読み出し、フィルタ次数Ｎと同数の乗算、及びＮ個の乗算結果の加算処理（即ち積和演算）を行うことになる。これにより、フィルタ処理のための演算処理が増大してしまい、ＤＳＰにおけるフィルタ処理の処理負荷が大きくなってしまう。そのため、ＤＳＰにおけるフィルタ処理の処理負荷をなるべく軽減させることのできる構成が望まれる。
【０００５】
一方、従来、ディジタル信号処理においては、ベクトル演算処理装置も多く用いられている。これは、複数のベクトルレジスタとベクトル演算器を用い、ベクトルレジスタに格納されたデータを順次読み出してベクトル演算するものである。これにより、単一の命令列を複数のデータ列に適用して並列に演算処理を行うことが可能になる。
【０００６】
このような、並列の演算処理を用いたＦＩＲフィルタとしては、一部の乗加算処理を行う乗加算器ＭＡＣ０と残りの乗加算処理を行う乗加算器ＭＡＣ１を用いてディジタル信号処理を行う構成において、乗加算器ＭＡＣ０と乗加算器ＭＡＣ１で共通に用いるサンプル（データ）をデータメモリ（レジスタ）から読み出して、そのサンプルに対して乗加算器ＭＡＣ０と乗加算器ＭＡＣ１で処理を行わせる構成を備えることで、積和演算処理を並列実行する際に、メモリに記録されたデータの読み出し回数を減少させる構成が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２０５２９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、一般に、ディジタル信号に対してベクトル演算等の積和演算の並列処理を行うための通常の構成においては、データを格納したレジスタの個々のデータ格納領域の位置を管理する番号（レジスタの個々のデータ格納領域の番地情報や、個々の格納領域に付与されたインデックス情報など）の番号順（例えば番号の昇順や降順）にデータを読み出して処理を行う。そのため、１回の並列処理が完了すると、レジスタの個々のデータ格納領域に記録されたデータを書き換える処理（例えば、それぞれのデータ格納領域に格納されたデータを、一つ上の番号のデータ格納領域にそれぞれずらして再度格納すると共に、一番古い信号のデータを消去し、最新のデータを新たに格納する処理）を行う必要がある。上記特許文献１においてもこのような処理が行われたのちに、積和演算処理の並列実行が逐次行われることが前提となっている。そのため、上記特許文献１においては、レジスタ内のデータを書き替える処理が頻繁に発生し、そのための処理負荷と処理時間が大きくなるという問題がある。この問題は、フィルタ次数が大きくなった場合に特に顕著になる。
【０００９】
一方、ＦＩＲフィルタ等、複数のフィルタ次数を有するディジタルフィルタで用いる入力信号を保持する際、レジスタを構成するデータ格納領域が環状に構成されるように管理するようにした、リングバッファが用いられることも多い。このリングバッファを用いれば、個々のデータ格納領域に格納されたデータを、積和演算処理が行われるたびに書き替えるような使用法を用いる必要がないので、データ格納領域の管理が容易になる。しかしそれゆえに、リングバッファにおいては、個々のデータの順序（例えば、最新の信号から過去の信号までの時系列順）とデータ格納領域を管理する番号の順序（昇順や降順）とが一致した状態にならない。そのため、特許文献１に記載の発明においては、レジスタにリングバッファを用いることで、フィルタ次数が大きくなった場合に特に過大になる、処理負荷や処理時間を軽減させることはできないという問題がある。
【００１０】
本発明はこのような問題に鑑みてなされたものであり、複数のフィルタ次数を有するディジタルフィルタを用いたディジタル信号処理において、フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができるディジタル信号処理装置を提供することを課題としている。
【課題を解決するための手段】
【００１１】
かかる課題を解決するために、請求項１に記載の発明は、ベクトル演算を用いて各種のディジタル信号のフィルタ処理を行うディジタル信号処理装置であって、入力データが格納される格納領域を複数備えた第一の格納手段と、前記入力データに対して演算処理される係数のデータが格納される格納領域を複数備えた第二の格納手段と、設定された前記第一の格納手段及び／又は前記第二の格納手段に対する前記データの書き込み及び読み出しの位置及び／又は順序に基づいて、前記第一の格納手段及び前記第二の格納手段に対する前記データの書き込み及び読み出しを行う入出力データ制御手段と、前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記データとをベクトル演算にて演算処理を行う演算処理手段とを備え、前記入出力データ制御手段は、前記第一の格納手段及び／又は前記第二の格納手段について、複数の前記データ格納領域に対して順番に前記データの書き込み又は読み出しを行うように制御することでリングバッファとして構成し、前記リングバッファとして構成された前記第一の格納手段及び／又は前記リングバッファとして構成された前記第二の格納手段から、読み出しの先頭位置を順番に替えながら前記データ格納領域に対する前記データの書き込み及び前記データの読み出しを行い、前記演算処理手段は、前記第一の格納手段から読み出された前記データと前記第二の格納手段から読み出された前記データとをベクトル演算にて演算処理を行うことを特徴とする。
【００１２】
請求項２に記載の発明は、請求項１に記載の構成に加え、前記リングバッファとして構成された前記第一の格納手段及び／又は前記リングバッファとして構成された前記第二の格納手段に対し、前記データの書き込み及び前記データの読み出しを行う際の基準位置としてのインデックス情報を設定するインデックス制御手段を備え、該インデックス制御手段は、前記リングバッファとして構成された前記第一の格納手段の前記データ格納領域及び／又は前記リングバッファとして構成された前記第二の格納手段の前記データ格納領域に対して前記インデックス情報を設定し、前記入出力データ制御手段は、前記データの書き込み及び前記データの読み出しの際、前記インデックス情報を基準に前記書き込み及び前記読み出しの先頭位置を決定して前記データの書き込み及び前記読み出しを行うことを特徴とする。
【００１３】
請求項３に記載の発明は、請求項１に記載の構成に加え、前記演算処理手段はＦＩＲフィルタによるフィルタ処理の演算を行うことを特徴とする。
【００１４】
請求項４に記載の発明は、請求項１乃至３の何れか一つに記載の構成に加え、前記入力データは音声信号であることを特徴とする。
【発明の効果】
【００１５】
請求項１に記載の発明によれば、リングバッファとして構成された第一の格納手段及び／又は第二の格納手段から、設定に基づいて、読み出しの先頭位置を順番に替えながらデータ格納領域に対するデータの書き込み及びデータの読み出しを行い
読み出されたデータをベクトル演算にて演算処理を行うことにより、リングバッファにおいて、個々のデータ格納領域に格納されたデータを、処理が行われるたびに他のデータ格納領域に書き替えてデータの並び順とデータ格納領域を管理する番号の順序を一致させなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことができる。これにより、複数のフィルタ次数を有するディジタルフィルタを用いたディジタル信号処理において、フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【００１６】
請求項２に記載の発明によれば、リングバッファとして構成された第一の格納手段のデータ格納領域及び／又はリングバッファとして構成された第二の格納手段のデータ格納領域に設定されたインデックス情報に基づいて、データの書き込み及び読み出しの先頭位置の決定とデータの書き込み及び読み出しを行うこととを実現できるので、リングバッファにおいて、個々のデータ格納領域に格納されたデータを、処理が行われるたびに他のデータ格納領域に書き替えてデータの並び順とデータ格納領域を管理する番号の順序を一致させなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことを、簡易かつ確実に実現できる。
【００１７】
請求項３に記載の発明によれば、ＦＩＲフィルタを用いたフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【００１８】
請求項４に記載の発明によれば、音声信号のフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【図面の簡単な説明】
【００１９】
【図１】この実施の形態に係るベクトル演算処理装置の概略構成を示す機能ブロック図である。
【図２】この実施の形態に係るディジタル信号処理システムの概略構成を示す機能ブロック図である。
【図３】この実施の形態に係るベクトル演算処理装置の構成の概略を模式的に示す機能ブロック図である。
【図４】この実施の形態に係るベクトル演算処理装置の構成の詳細を模式的に示す機能ブロック図である。
【図５】この実施の形態に係るベクトルレジスタの各レジスタの構成を模式的に示す機能ブロック図である。
【図６】この実施の形態に係るベクトル命令発行部の構成を模式的に示す機能ブロック図である。
【図７】この実施の形態に係るベクトル演算処理装置の処理手順を示すフローチャートである。
【図８】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【図９】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【図１０】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【図１１】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【図１２】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【図１３】この実施の形態に係るベクトル演算処理装置のベクトルレジスタにおけるデータの格納状態を模式的に示す図である。
【発明を実施するための形態】
【００２０】
図１乃至図１３に、この発明の実施の形態を示す。
【００２１】
［基本構成］
図１は、この実施の形態に係る「ディジタル信号処理装置」としてのベクトル演算処理装置の概略構成を示す機能ブロック図である。
【００２２】
図１に示す「ディジタル信号処理装置」としてのベクトル演算処理装置１は、プログラムの実行によって機能を実現させるための構成（例えばＣＰＵ等）を備え、各種のディジタル信号に対するフィルタ処理を行う装置に用いられる。具体的には、例えば、図１に示すベクトル演算処理装置１は、パチンコ機、パチスロ等の遊技機（図示せず）に組み込まれ、遊技機（図示せず）に設けられたスピーカ１４（図２参照）から出力される音声を形成するディジタル音声信号に対してＦＩＲフィルタとして機能してフィルタ処理を行う。
【００２３】
図１に示す通り、このベクトル演算処理装置１はベクトルレジスタ２、「演算処理手段」としての演算器３を備えている。このベクトル演算処理装置１の備えるそれぞれの構成は、基本的にはハードウェアロジックによって構成されるが、これらの構成のうちの一部又は全部がプログラムの実行によって実現されるものであってもよい。
【００２４】
ベクトルレジスタ２は、ベクトル演算処理装置１においてフィルタ処理の対象となる入力データ（音声信号）やフィルタ係数や演算器３における積和演算の結果としてのデータ（フィルタ処理された音声信号）が記録される記憶素子である。図１に示す通り、ベクトルレジスタ２には、データ保管領域としてのＮ個（ただしＮ＞１）の「第一の格納手段」としての第０レジスタ２０１、「第二の格納手段」としての第１レジスタ２０２、・・・第Ｍレジスタ２０Ｍ（ただしＭ＝Ｎ−１）が設けられており、フィルタ処理が行われる前の音声信号、フィルタ処理に用いられる係数のデータ、フィルタ処理が行われた後の音声信号がそれぞれ記録される（詳しくは後述する）。
【００２５】
演算器３は、加算器や乗算器を備え、入力データ（音声信号）に対する積和演算を行うことでＦＩＲフィルタにおけるフィルタ処理を行う。
【００２６】
図２は、この実施の形態に係るディジタル信号処理システムの概略構成を示す機能ブロック図である。同図に示すように、ディジタル信号処理システム１０は、音声信号処理装置１１、ＲＯＭ１２、アンプ１３、スピーカ１４を備えている。そして、音声信号処理装置１１は、デコーダ１５、ベクトル演算処理装置１、出力部１６を備えている。
【００２７】
音声信号処理装置１１は、この実施の形態に係るベクトル演算処理装置１を備え、デコーディングによる音声信号の復元と音声信号のＦＩＲフィルタによるフィルタ処理とを行って出力する。この音声信号処理装置１１の備えるそれぞれの構成は、基本的にはハードウェアロジックによって構成されるが、これらの構成のうちの一部又は全部がプログラムの実行によって実現されるものであってもよい。
【００２８】
ＲＯＭ１２は、記録媒体であって圧縮符号化された音声信号等の各種データが記録される。アンプ１３は音声信号処理装置１１から出力された音声信号を増幅する。スピーカ１４は音声信号を音声に変換して外部に出力する。
【００２９】
デコーダ１５は、ＲＯＭ１２に記録された、符号化された音声信号をデコードして音声信号を復元する。デコードの結果得られた音声の振幅値をサンプリング周期毎にベクトル演算処理装置１に供給する。出力部１６はアンプ１３との通信インターフェース機能（例えばＩ２Ｓ／ＳＰＤＩＦなど）を備え、ベクトル演算処理装置１でフィルタ処理された音声信号をアンプ１３に送信するために必要な処理を行う。
【００３０】
図３は、この実施の形態に係るベクトル演算処理装置１の構成の概略を模式的に示す機能ブロック図である。同図に示す通り、この実施の形態のベクトル演算処理装置１は、ベクトルレジスタ２及び演算器３に加え、リングバッファ制御部１７を備えている。
【００３１】
リングバッファ制御部１７は、ベクトルレジスタ２に設けられた第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｎのうちの一部又は全部をリングバッファとして構成させるために必要な処理、即ち読み出しインデックスや書き込みインデックスの制御を行う（詳しくは後述する）。
【００３２】
図４は、この実施の形態に係るベクトル演算処理装置１の構成の詳細を模式的に示す機能ブロック図である。同図に示す通り、ベクトル演算処理装置１は、ベクトル命令発行部２１、としてのベクトル命令制御部２２、「入出力データ制御手段」としてのベクトルレジスタ読み出し部２３、「入出力データ制御手段」としてのベクトルレジスタ書き込み部２４を備えている。
【００３３】
ベクトル命令発行部２１は、入力データ制御部２１１、出力データ制御部２１２、「入出力データ制御手段」としてのリングバッファ制御部１７を備えている（これらの構成の機能については後述する）。ベクトル命令発行部２１は、リングバッファ制御部１７の機能により、ベクトルレジスタ２のレジスタ例えば第０レジスタ２０１をリングバッファとして機能させて各レジスタ即ち第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｎに対するデータの読み出しインデックスや書き込みインデックスの制御を行う。具体的には、ベクトルレジスタ２に記録されたデータを用いてベクトル演算を実施するための命令を発行する。また、ベクトル命令発行部２１は、リングバッファ制御部１７の機能も含み、レジスタの読み出し、書き込みインデックスを制御する（詳しくは後述する。）。
【００３４】
ベクトル命令制御部２２は、ベクトル命令発行部２１から出力された命令に基づいてベクトルレジスタ読み出し部２３及びベクトルレジスタ書き込み部２４を制御することで、ベクトル演算によるデータの演算を制御するために必要な処理を行う（詳しくは後述する。）。
【００３５】
ベクトルレジスタ読み出し部２３は、ベクトルレジスタ２の各レジスタ、例えば第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｎの指定されたインデックスに基づくデータ格納領域、例えば、第０レジスタ２０１の、第０インデックスが付与された第０データ格納領域２０１１、第１インデックスが付与された第１データ格納領域２０１２、第２インデックスが付与された第２データ格納領域２０１３、第３インデックスが付与された第３データ格納領域２０１４（図８〜図１３参照）に記録されたデータをベクトル演算によって読み出して演算器３に送る。
【００３６】
ベクトルレジスタ書き込み部２４は、演算器３において演算された結果をベクトル演算によってベクトルレジスタ２の各レジスタ第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｎの指定されたインデックスに基づく格納領域、例えば第Ｍレジスタ２０Ｎの第０インデックスが付与された第０データ格納領域２０Ｎ１に送る。
【００３７】
乗算器３１は、ベクトルレジスタ読み出し部２３から読み出された２つの値（具体的には、第０レジスタ２０１から読み出された音声信号と、第１レジスタ２０２から読み出されたフィルタ係数）を乗算する処理を行う。加算器３２は、乗算器３１における乗算の結果や、レジスタ３３に一時的に記録された積和演算の結果を加算する処理を行う。レジスタ３３は、加算器３２により加算された結果のデータを一時的に記録する機能を有する。
【００３８】
図５は、この実施の形態に係るベクトルレジスタ２の各レジスタ第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｎの構成を模式的に示す機能ブロック図である。同図に示す通り、第０レジスタ２０１は、複数例えばＮ個（Ｎ＞１）の第０データ格納領域２０１１、第１データ格納領域２０１２、・・・第Ｍデータ格納領域２０１Ｍ、第Ｎデータ格納領域２０１Ｎを備えている。また、同様に、第１レジスタ２０２も複数例えばＮ個（Ｎ＞１）の第０データ格納領域２０２１、第１データ格納領域２０２２、・・・第Ｍデータ格納領域２０２Ｍ、第Ｎデータ格納領域２０２Ｎを備え、第Ｍレジスタ２０Ｍも複数例えばＮ個（Ｎ＞１）の第０データ格納領域２０Ｍ１、第１データ格納領域２０Ｍ２、・・・第Ｍデータ格納領域２０ＭＭ、第Ｎデータ格納領域２０ＭＮを備えている。それぞれのデータ格納領域例えばデータ格納領域２０１１，２０１２，２０１Ｍ，２０１Ｎには、音声信号やフィルタ係数等のデータが格納される。
【００３９】
図６は、この実施の形態に係るベクトル命令発行部２１の構成を模式的に示す機能ブロック図である。同図に示す通り、ベクトル命令発行部２１は、図４にも示す入力データ制御部２１１、出力データ制御部２１２、「インデックス制御手段」としてのリングバッファ制御部１７の他に、使用レジスタ設定部２１３、フィルタ次数設定部２１４、係数設定部２１５を備えている。また、リングバッファ制御部１７は、「インデックス制御手段」としての読み出しインデックス制御部１７１、「インデックス制御手段」としての書き込みインデックス制御部１７２を備えている。
【００４０】
入力データ制御部２１１は、各レジスタ例えば第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｎにデータ（音声信号やフィルタ係数の値や演算結果）を入力するための制御を行う。出力データ制御部２１２は、ベクトルレジスタ２の第Ｍレジスタ２０Ｎから、信号値とフィルタ係数との積和演算の結果としてのデータを出力させるための制御を行う。
【００４１】
リングバッファ制御部１７は、各レジスタ例えば第０レジスタ２０１をリングバッファとして機能させるための制御を行う。具体的には、各レジスタの格納領域（例えば第０レジスタ２０１の第０データ格納領域２０１１に付与した第０インデックス、第１データ格納領域２０１２に付与した第１インデックス、第２データ格納領域２０１３に付与した第２インデックス、第３データ格納領域２０１４に付与した第３インデックス、等（図８〜図１３参照））を基準位置ないし基準として、データの読み出しや書き込みを行うための制御を行う。読み出しインデックス制御部１７１は、リングバッファとして構成した各レジスタ例えば第０レジスタ２０１の第０データ格納領域２０１１、第１データ格納領域２０１２、・・・第Ｍデータ格納領域２０１Ｎからデータを読み出すために必要な制御を行う。書き込みインデックス制御部１７２は、リングバッファとして構成した各レジスタ例えば第０レジスタ２０１の第０データ格納領域２０１１、第１データ格納領域２０１２、・・・第Ｍデータ格納領域２０１Ｎにデータを書き込むために必要な制御を行う。
【００４２】
使用レジスタ設定部２１３は、初期設定時に、各レジスタ２０１，２０２，・・・２０Ｎのうち、音声信号やフィルタ計数等を格納するものを設定する。フィルタ次数設定部２１４は、初期設定時に、演算器３におけるフィルタ処理の際のフィルタ次数Ｎを設定する。係数設定部２１５は、初期設定時にＦＩＲフィルタ係数を求めるために利用する係数ｈ[０]〜ｈ[ｎ−１]を設定する（図８〜図１３参照）。
【００４３】
［処理手順］
図７は、この実施の形態に係るベクトル演算処理装置１の処理手順を示すフローチャートであり、図８〜図１３は、この実施の形態に係るベクトル演算処理装置１のベクトルレジスタ２におけるデータの格納状態を模式的に示す図である。
【００４４】
以下、図７〜図１４に基づいて、この実施の形態におけるベクトル演算処理装置１の処理手順を説明する。なお、同図では、ベクトルレジスタ２の第０レジスタ２０１に入力データ、第１レジスタ２０２に係数を格納し、レジスタＭに積和演算結果を格納する事例に基づいて説明する。また、説明を簡単にするため、フィルタ次数Ｎを４とした場合に基づき説明する。
【００４５】
（１）まず、初期設定として、ベクトル命令発行部２１の使用レジスタ設定部２１３は、入力データを格納するレジスタとして第０レジスタ２０１を設定し、フィルタ係数を格納するレジスタとして第１レジスタ２０２を設定し、積和演算結果を格納するレジスタとして第Ｍレジスタ２０Ｎを設定する（ステップＳ１）。ここで、使用レジスタ設定部２１３は、入力データを格納する第０レジスタ２０１をリングバッファとして設定する。なお、ここでは積和演算結果を格納するレジスタとしてベクトルレジスタ２の第Ｍレジスタ２０Ｎを使用するが、積和演算結果は単一の出力であるため、ベクトルレジスタ２ではなくスカラレジスタ（図示せず）を用いてもよい。
【００４６】
（２）また、初期設定として、ベクトル命令発行部２１のフィルタ次数設定部２１４は、演算器３におけるフィルタ次数Ｎ（Ｎ＝４）を設定する。なお、ベクトルレジスタ２の各レジスタ、例えば第０レジスタ２０１、第１レジスタ２０２、・・・第Ｍレジスタ２０Ｍは、データを格納するデータ格納領域例えばデータ格納領域２０１１，２０１２，・・・２０１Ｍ，２０１Ｎが４つ以上ある場合は、そのうちの４つがデータの格納に用いるものとして設定される。なお、データ格納領域の数がフィルタ次数よりも少ないレジスタ例えば第Ｍレジスタ２０Ｎがこの実施の形態に用いるものとして設定されている場合は、これを、データ格納領域の数がフィルタ次数（Ｎ＝４）以上ある他のレジスタ例えば第Ｍ−１レジスタ（図示せず）に変更する処理を行うことが望ましい。
【００４７】
（３）また、初期設定として、ベクトル命令発行部２１は、ベクトル命令制御部２２に対し、上記（１）（２）でデータの格納に用いるレジスタとして設定された第０レジスタ２０１、第１レジスタ２０２、第Ｍレジスタ２０Ｎの情報と、第０レジスタ２０１、第１レジスタ２０２、第Ｍレジスタ２０Ｎの使用するデータ格納領域に付与するインデックスの情報を、ベクトル命令制御部２２に対して発行する（ステップＳ１）。そして、ベクトル命令制御部２２は、使用する第０レジスタ２０１、第１レジスタ２０２、第Ｍレジスタ２０Ｎの使用するデータ格納領域にインデックスを付与する（ステップＳ１）。具体的には、例えば第０レジスタ２０１の第０データ格納領域２０１１には第０インデックスを、第１データ格納領域２０１２には第１インデックスを、第２データ格納領域２０１３には第２インデックスを、第３データ格納領域２０１４には第３インデックスをそれぞれ付与する。同様に、第１レジスタ２０２の第０データ格納領域２０２１には第０インデックスを、第１データ格納領域２０２２には第１インデックスを、第２データ格納領域２０２３には第２インデックスを、第３データ格納領域２０２４には第３インデックスをそれぞれ付与する。また、同様に、第Ｍレジスタ２０Ｎの第０データ格納領域２０Ｎ１には第０インデックスを、第１データ格納領域２０Ｎ２には第１インデックスを、第２データ格納領域２０Ｎ３には第２インデックスを、第３データ格納領域２０Ｎ４には第３インデックスをそれぞれ付与する（図８〜図１３参照）。
【００４８】
（４）また、初期設定として、係数設定部２１５は、演算器３におけるＦＩＲフィルタの演算に用いる係数ｈ[０]〜ｈ[ｎ−１]をベクトルレジスタ２の第１レジスタ２０２の各データ格納領域２０２１，２０２２・・・２０２Ｍ，２０２Ｎに格納する。この場合、係数設定部２１５は、係数ｈ[０]〜ｈ[ｎ−１]を格納する第１レジスタ２０２のデータ格納領域２０２１，２０２２・・・２０２Ｍ，２０２Ｎに、第０インデックスから第Ｎ−１（ここではＮ＝４）インデックスを設定する（ステップＳ１）。そして、このインデックスの数字０〜Ｎ−１までの順に、データ格納領域２０２１，２０２２・・・２０２Ｍ，２０２Ｎに係数ｈ[０]〜ｈ[ｎ−１]を格納する。
【００４９】
（５）図８に示すように、初期状態において、入力データを格納する前の第０レジスタ２０１のデータ格納領域２０１１，２０１２・・・２０１Ｍ，２０１Ｎには全て“０”が格納されている。また積和演算結果を格納する第Ｍレジスタ２０Ｎのデータ格納領域２０Ｎ１，２０Ｎ２・・・２０ＮＭ，２０ＮＮにも全て“０”が格納されている。
【００５０】
（６）ここで、ベクトル命令制御部２２は、リングバッファ制御部１７の読み出しインデックス制御部１７１と書き込みインデックス制御部１７２とに対し、下記（イ）（ロ）の規則に基づいて、第０レジスタ２０１へのデータの格納やデータの取り出しを行わせるように設定する（ステップＳ２）。また、ベクトル命令制御部２２は、ベクトルレジスタ読み出し部２３やベクトルレジスタ書き込み部２４に対し、下記（ハ）（ニ）に示す規則に基づいて、第１レジスタ２０２、第Ｍレジスタ２０Ｎへのデータの格納やデータの取り出しの開始位置の設定や、格納順序、取り出し順序の設定を行う（ステップＳ２）。
（イ）書き込みインデックス制御部１７２は、リングバッファとして構成された第０レジスタ２０１のデータ格納領域２０１１，２０１２・・・２０１Ｍ，２０１Ｎに、付与されたインデックスの降順に（つまり、インデックスの数字Ｎ−１，Ｎ−２，・・・１，０の順に）新たなデータを格納する。
（ロ）読み出しインデックス制御部１７１は、新たにデータが格納されたデータ格納領域を読み出しの開始位置として設定し、この開始位置からインデックスを昇順に循環させる形で順次データを読み出す（ステップＳ２）。具体的には、例えば、第０レジスタ２０１の第２インデックスが付与された第２データ格納領域２０１３に新しい入力データＸ１が格納された場合（図１０参照）、第２データ格納領域２０１２、第３インデックスが付与された第３データ格納領域２０１３、第０インデックスが付与された第０データ格納領域２０１１、第１インデックスが付与された第１データ格納領域２０１２、の順にデータを読み出す。
（ハ）なお、第１レジスタ２０２はリングバッファとして構成されていないので、上記（ロロ）に示す順序でのデータの読み出しは行われず、インデックスの昇順（つまり、第０インデックスが付与された第０データ格納領域２０２１、第１インデックスが付与された第１データ格納領域２０２２、第２インデックスが付与された第２データ格納領域２０２３、第３インデックスが付与された第３データ格納領域２０２３、の順）にデータを取り出して、演算器３において音声信号との乗算加算処理が行われる。
（ニ）全ての乗算処理と加算処理が行われた結果の値は、第Ｍレジスタ２０Ｎの第０インデックスが付与された第０データ格納領域２０Ｎ１に格納される。
【００５１】
（７）１番目の入力データＸ０がベクトルレジスタ書き込み部２４に入力されると、ベクトル命令発行部２１の入力データ制御部２１１は、第０レジスタ２０１のインデックス３が付与された第４データ格納領域２０１４に入力データを格納するように、ベクトル命令制御部２２に命令を発行する（ステップＳ１）。
【００５２】
（８）ベクトル命令制御部２２は、上記（１）にて入力データを格納するベクトルレジスタ２として設定された第０レジスタ２０１のデータ格納領域２０１１，２０１２・・・２０１Ｍ，２０１Ｎに、上記（５）の（イ）で設定された順序に基づき入力データを格納する。
【００５３】
（９）ベクトル命令発行部２１は下記（Ａ）〜（Ｅ）の処理を行う命令をベクトル命令制御部２２に出力する。そして、ベクトル命令制御部２２はこの命令に基づいてベクトルレジスタ読み出し部２３、ベクトルレジスタ書き込み部２４及び演算器３を制御する。
【００５４】
（Ａ）第０レジスタ２０１の第３インデックスが付与された第３データ格納領域２０１４に格納された入力データＸ０と第１レジスタ２０２の第０インデックスが付与された第０データ格納領域２０２１に格納された係数ｈ[０]とを読み出し、演算器３にて乗算させる（ステップＳ３、図９の（１））。その演算結果は演算器３のレジスタ３３に格納される。
【００５５】
（Ｂ）この段階で、Ｎ個（４個）のデータ全ての演算が完了していないので（ステップＳ４の“Ｎｏ”）、第０レジスタ２０１の読み出し位置を一つずらす（ステップＳ５）。すると、読み出し位置がデータを格納できる領域（第３インデックスが付与された第３データ格納領域２０２３）を越えるので（ステップＳ６の“Ｙｅｓ”）、第０レジスタ２０１の読み出し位置を、第０インデックスが付与された第０データ格納領域２０１１に戻す（ステップＳ７）。そして、第０インデックスが付与された第０データ格納領域２０１１に格納されたデータ（０）と、第１レジスタ２０２の第１インデックスが付与された第１データ格納領域２０２２に格納された係数ｈ[１]とを読み出し、演算器３にて乗算させる（図９の（２））。その演算結果と演算器３のレジスタ３３に格納された演算結果とを加算し、その演算結果を再び演算器３のレジスタ３３に格納する（ステップＳ３）。
【００５６】
（Ｃ）この段階で、Ｎ個（４個）のデータ全ての演算が完了していないので（ステップＳ４の“Ｎｏ”）、第０レジスタ２０１の読み出し位置を一つずらす（ステップＳ５）。この場合は、読み出し位置がデータを格納できる領域（第３インデックスが付与された第３データ格納領域２０２３）を越えないので（ステップＳ６の“Ｎｏ”）、第０レジスタ２０１の第１インデックスが付与された第１データ格納領域２０１２に格納されたデータ（０）と、第１レジスタ２０２の第２インデックスが付与された第２データ格納領域２０２３に格納された係数ｈ[２]とを読み出し、演算器３にて乗算させる（図９の（３））。その演算結果と演算器３のレジスタ３３に格納されている演算結果との加算処理結果を再び演算器３のレジスタ３３に格納する（ステップＳ３）。
【００５７】
（Ｄ）この段階で、Ｎ個（４個）のデータ全ての演算が完了していないので（ステップＳ４の“Ｎｏ”）、第０レジスタ２０１の読み出し位置を一つずらす（ステップＳ５）。この場合は、読み出し位置がデータを格納できる領域（第３インデックスが付与された第３データ格納領域２０２３）を越えないので（ステップＳ６の“Ｎｏ”）、第０レジスタ２０１の第２インデックスが付与された第２データ格納領域２０１３に格納されたデータと、第１レジスタ２０２の第３インデックスが付与された第３データ格納領域２０２４に格納された係数ｈ[３]とを読み出し、演算器３にて乗算させる（図９の（４））。その演算結果と演算器３のレジスタ３３に格納されている演算結果とを加算し、その演算結果を再び演算器３のレジスタ３３に格納する（ステップＳ３）。
【００５８】
（Ｅ）Ｎ個（４個）のデータに関する積和演算を実行した後（ステップＳ４の“Ｙｅｓ”）、その積和演算結果である値Ｒ０を第Ｍレジスタ２０Ｎの第０インデックスが付与された第０データ格納領域２０Ｎ１に書き込む（ステップＳ８）。
【００５９】
（１０）ベクトル命令発行部２１はベクトルレジスタ２の第Ｍレジスタ２０Ｎの第０インデックスが付与された第０データ格納領域２０１１に格納された演算結果である値Ｒ０をＦＩＲフィルタの出力結果として出力するよう、ベクトル命令制御部２２に指示し、ベクトル命令制御部２２は指示に従い、第Ｍレジスタ２０Ｎの第０インデックスが付与された第０データ格納領域２０Ｎ１に格納されたデータを出力する。
【００６０】
（１１）次に、２番目の入力データＸ１がベクトルレジスタ書き込み部２４に入力されると、図１０に示すように、第０レジスタ２０１の第２インデックスが付与された第２データ格納領域２０１３にデータが格納される。そして、図１０に示すように、第０レジスタ２０１の各データ格納領域２０１１，２０１２，・・・２０１Ｍ（２０１３），２０１Ｎ（２０１４）に格納されたデータと、第１レジスタ２０２に格納された係数との積和演算が行われ、その演算結果である値Ｒ１が第Ｍレジスタ２０Ｎの第０インデックスが付与された第０データ格納領域２０Ｎ１に格納される。更に、ベクトル命令発行部２１が演算結果である値Ｒ１を出力するよう命令を発行し、ベクトル命令制御部２２は、発行された命令に基づいてベクトル読み出し部２３、ベクトル書き込み部２４及び演算器３を制御する。
【００６１】
（１２）以下、同様に図１１、図１２に示すように、３番目の入力データＸ２、４番目の入力データＸ３が入力されると、上記と同様の第０レジスタ２０１へのデータの書き込みと演算を順次繰り返し、ＦＩＲフィルタの出力を求める。図１２に示すように、第０レジスタ２０１の全てのデータ格納領域２０１１，２０１２，・・・２０１Ｍ，２０１Ｎに値が格納された後、５番目の入力データＸ４が入力されると、図１３に示すように、最先にデータが格納されたデータ格納領域（この場合は第０レジスタ２０１の第３データ格納領域２０１４）のデータを最新のデータに置き換える。以後、同様の処理が繰り返される。
【００６２】
以上示した通り、この実施の形態のベクトル演算処理装置１においては、ベクトル演算機能とリングバッファ機能とを兼ね備えたベクトル演算処理装置１としたので、ＦＩＲフィルタの積和演算処理はベクトル演算処理装置１側で処理が行われることになる。従って、ＤＳＰ（Digital Signal Processor）側の処理負荷を低減することができる。
【００６３】
この実施の形態においては、リングバッファとして構成された第０レジスタ２０１から、設定に基づいて、読み出しの先頭位置を順番に替えながら第０データ格納領域２０１１〜第３データ格納領域２０１４に対するデータの書き込み及びデータの読み出しを行い
読み出されたデータを演算器３においてベクトル演算にて演算処理を行うことにより、リングバッファとして構成された第０レジスタ２０１において、個々のデータ格納領域即ち第０データ格納領域２０１１〜第３データ格納領域２０１４かのそれぞれに格納されたデータを、処理が行われるたびに他のデータ格納領域即ち第０データ格納領域２０１１〜第３データ格納領域２０１４に書き替えてデータの並び順とデータ格納領域即ち第０データ格納領域２０１１〜第３データ格納領域２０１４を管理する番号の順序を一致させること（例えば、データ格納領域２０１１，２０１２，２０１３，２０１４の昇順に入力データＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４・・・を並べ直すこと）を行わなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことができる。これにより、複数のフィルタ次数を有するディジタルフィルタを用いたディジタル信号処理において、フィルタ次数が大きくなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【００６４】
この実施の形態においては、リングバッファとして構成された第０レジスタ２０１の第０データ格納領域２０１１〜第３データ格納領域２０１４に設定されたインデックス情報即ち第０インデックス〜第３インデックスに基づいて、データの書き込み及び読み出しの先頭位置の決定とデータの書き込み及び読み出しを行うこととを実現できるので、リングバッファとしての第０レジスタ２０１において、個々のデータ格納領域即ち第０データ格納領域２０１１〜第３データ格納領域２０１４に格納されたデータを、処理が行われるたびに他のデータ格納領域即ち第０データ格納領域２０１１〜第３データ格納領域２０１４に書き替えてデータの並び順とデータ格納領域即ち第０データ格納領域２０１１〜第３データ格納領域２０１４を管理する番号の順序を一致させること（例えば、データ格納領域２０１１，２０１２，２０１３，２０１４の昇順に入力データＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４・・・を並べ直すこと）を行わなくても、データの並び順にデータを読み出してベクトル演算にて演算処理を行うことを、簡易かつ確実に実現できる。
【００６５】
この実施の形態においては、演算器３におけるＦＩＲフィルタを用いたフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【００６６】
この実施の形態においては、音声信号のフィルタ処理において、フィルタ次数が高くなった場合であっても、処理負荷や処理時間が過大になることを抑止することができる。
【００６７】
なお、上記実施の形態においては、音声信号を格納する第０レジスタ２０１をリングバッファとして構成したが、これに限定されず、フィルタ計数を格納する第１レジスタ２０２や、積和演算の結果を格納する第Ｍレジスタ２０Ｎをリングバッファとして構成してもよい。また、第０レジスタ２０１、第１レジスタ２０２、第Ｍレジスタ２０Ｎのうちの２つ乃至３つをリングバッファとして構成してもよい。
【００６８】
上記実施の形態においては、リングバッファとして構成した第０レジスタ２０１への書き込み位置や読み出し位置を、データ格納領域２０１１，２０１２，２０１３，２０１４に付与したインデックスを基準に任意に特定できる構成としたが、これに限定されず、データ格納領域２０１１，２０１２，２０１３，２０１４の読み出し位置や書き込み位置を任意に特定できる構成、例えばデータ格納領域２０１１，２０１２，２０１３，２０１４のアドレス情報によって任意に特定するような構成など、であれば、どのようなものであってもよい。
【００６９】
上記実施の形態においては、ベクトル演算処理装置１は、音声信号を処理対象として扱うものとしたが、これに限定されず、音声信号以外のどのようなディジタル信号、例えば画像信号等を処理対象とするものであってもよい。
【００７０】
上記実施の形態においては、ベクトル演算処理装置１は、ＦＩＲフィルタとして機能するものとしたが、これに限定されず、ＦＩＲフィルタ以外のいかなるフィルタ、例えばＩＩＲフィルタによってフィルタ処理を行うものであってもよい。
【００７１】
上記実施の形態においては、ベクトル演算処理装置１は、遊技機（図示ぜず）に用いられるものとしたが、遊技機以外のいかなる用途に用いられるものであってもよい。
【００７２】
上記実施の形態は本発明の例示であり、本発明が上記実施の形態のみに限定されることを意味するものではないことは、いうまでもない。
【符号の説明】
【００７３】
１・・・ベクトル演算処理装置（ディジタル信号処理装置）
３・・・演算器（演算処理手段）
２０１・・・第０レジスタ（第一の格納手段）
２０２・・・第１レジスタ（第二の格納手段）
２０１１，２０１２，２０１３，２０１４，２０２１，２０２２，２０２３，２０２４，２０Ｎ１，２０Ｎ２，２０Ｎ３，２０Ｎ４，・・・データ格納領域
１７１・・・読み出しインデックス制御部（インデックス制御手段）
１７２・・・書き込みインデックス制御部（インデックス制御手段）
２１１・・・入力データ制御部（入出力データ制御手段）
２１２・・・出力データ制御部（入出力データ制御手段）
２１３・・・使用レジスタ設定部（入出力データ制御手段）
２３・・・ベクトルレジスタ読み出し部（入出力データ制御手段）
２４・・・ベクトルレジスタ書き込み部（入出力データ制御手段）
Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４・・・入力データ
ｈ[０]〜ｈ[ｎ−１]・・・係数
【図１】
2018097598.tif 000005
【図２】
2018097598.tif 000006
【図３】
2018097598.tif 000007
【図４】
2018097598.tif 000008
【図５】
2018097598.tif 000009
【図６】
2018097598.tif 000010
【図７】
2018097598.tif 000011
【図８】
2018097598.tif 000012
【図９】
2018097598.tif 000013
【図１０】
2018097598.tif 000014
【図１１】
2018097598.tif 000015
【図１２】
2018097598.tif 000016
【図１３】
2018097598.tif 000017