(57)【要約】【課題】入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出する。【解決手段】相関演算回路は、複数の検出パターンデータを格納するＳＲＡＭ２と積和器（４、５）と中間データを格納するＳＲＡＭ６と比較器８とを備え、時系列データが順次入力されるときに、１個の時系列データが入力される期間に、その１個の時系列データを参照する全ての相関関数の中間データを求める。時系列データが１個入力されたときに、積和器は、ＳＲＡＭ２から順次読み出された検出パターンデータと、入力された１個の時系列データとを乗算し、これと同期して対応する中間データをＳＲＡＭ６から読み出し、順次算出される積を読み出した中間データに累積加算して、ＳＲＡＭ６に当該中間データとして書き戻す。その結果、算出された相関関数データを比較器８に供給し、所定の規定値と比較する。【選択図】図１
2017211704.tif 000002
【特許請求の範囲】
【請求項１】
順次入力される時系列データと複数個の検出パターンデータで表される検出パターンとの相関関数を算出する相関演算回路であって、
前記複数個の検出パターンデータを格納する第１メモリと、乗算器と、加算器と、前記乗算器と前記加算器による積和演算の中間データを格納可能な第２メモリと、比較器とを備え、
前記乗算器は、入力された１個の時系列データと、前記第１メモリから順次読み出された前記複数個の検出パターンデータとの乗算を順次実行し、算出される積を前記加算器の一方の入力に順次供給し、
前記乗算と同期して、対応する中間データが前記第２メモリから読み出されて、前記加算器の他方の入力に順次供給され、前記加算器は、前記対応する中間データに前記積を加算して、前記第２メモリに当該中間データとして書き戻し、
前記複数個すべての検出パターンデータと前記複数個と同じ個数の時系列データとの積が累積的に加算されたデータが、結果データとされ、
前記比較器は、前記結果データを所定の規定値と比較する、
相関演算回路。
【請求項２】
請求項１において、前記相関演算回路はＡ／Ｄ変換器をさらに備え、
前記Ａ／Ｄ変換器は、入力されるアナログ信号を順次ディジタル値に変換して前記時系列データとして前記加算器に供給する、
相関演算回路。
【請求項３】
請求項１において、前記相関演算回路はシリアル／パラレル変換器をさらに備え、
前記シリアル／パラレル変換器は、シリアルデータとして入力されるディジタル値をパラレルデータに変換して、前記時系列データとして前記乗算器に供給する、
相関演算回路。
【請求項４】
順次入力される時系列データとＮ個（Ｎは２以上の整数）の検出パターンデータで表される検出パターンとの相関関数を算出する相関演算回路であって、
前記Ｎ個の検出パターンデータを格納する第１メモリと、乗算器と、加算器と、前記乗算器と前記加算器による積和演算の中間データを格納可能な第２メモリと、比較器とを備え、
前記乗算器は、入力された１個の時系列データと、前記第１メモリから順次読み出された第１から第Ｎの検出パターンデータとの乗算を順次実行し、算出される第１から第Ｎの積を前記加算器の一方の入力に順次供給し、
前記第１の検出パターンデータと入力された前記１個の時系列データとの積を第１の積とし、前記第１の積に対応する前記第１の中間データを零とし、
前記乗算と同期して、他の積にそれぞれ対応する他の中間データが前記第２メモリから読み出されて、前記加算器の他方の入力に順次供給され、前記加算器は、前記中間データに対応する積を加算して、前記第２メモリに当該中間データとして書き戻し、
前記Ｎ個すべての検出パターンデータと同じＮ個の時系列データとの積が累積的に加算されたデータが、結果データとされ、
前記比較器は、前記結果データを所定の規定値と比較する、
相関演算回路。
【請求項５】
請求項４において、前記相関演算回路はＡ／Ｄ変換器をさらに備え、
前記Ａ／Ｄ変換器は、入力されるアナログ信号を順次ディジタル値に変換して前記時系列データとして前記乗算器に供給する、
相関演算回路。
【請求項６】
請求項４において、前記相関演算回路はシリアル／パラレル変換器をさらに備え、
前記シリアル／パラレル変換器は、シリアルデータとして入力されるディジタル値をパラレルデータに変換して、前記時系列データとして前記乗算器に供給する、
相関演算回路。
【請求項７】
ＣＰＵ（Central Processing Unit）と、バスと、Ａ／Ｄ変換器と、相関演算回路とを備え、
前記Ａ／Ｄ変換器は、入力されるアナログ信号を順次時系列データに変換可能であり、
前記ＣＰＵは前記バスを介して前記時系列データを取得可能であり、
前記相関演算回路は、複数個の検出パターンデータを格納する第１メモリと、乗算器と、加算器と、前記乗算器と前記加算器による積和演算の中間データを格納可能な第２メモリと、比較器とを備え、
前記乗算器は、入力された１個の時系列データと、前記第１メモリから順次読み出された前記複数個の検出パターンデータとの乗算を順次実行し、算出される積を前記加算器の一方の入力に順次供給し、
前記乗算と同期して、対応する中間データが前記第２メモリから読み出されて、前記加算器の他方の入力に順次供給され、前記加算器は、前記対応する中間データに前記積を加算して、前記第２メモリに当該中間データとして書き戻し、
前記複数個すべての検出パターンデータと前記複数個と同じ個数の時系列データとの積が累積的に加算されたデータが、結果データとされ、
前記比較器は、前記結果データを所定の規定値と比較し、
前記相関演算回路は、前記比較の結果が前記所定の規定値を超えたときに、前記ＣＰＵへの割り込み要求を発生する、
半導体装置。
【請求項８】
請求項７において、前記半導体装置は前記Ａ／Ｄ変換器に代えてまたは前記Ａ／Ｄ変換器に加えて、シリアル通信インターフェースを備え、
前記シリアル通信インターフェースは、入力されるシリアルデータ信号を順次パラレルデータに変換して前記時系列データとして供給可能である、
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相関演算回路および半導体装置に関し、特に所望の波形パターンと相関性が大きい波形を検出する相関演算回路に好適に利用できるものである。
【背景技術】
【０００２】
センサーから入力される信号波形から、所望の信号パターン（検出パターン）を検出する技術が望まれている。従来より、入力される信号波形と検出パターンとの相関を求めることによって、複雑な検出パターンの識別を可能とし、または、ノイズ耐性の高い検出パターンの検出が可能とされている。
【０００３】
相関を求めるための相関関数は、以下の式で与えられる。
【０００４】
【数１】
2017211704.tif 000003
【０００５】
ここで、Ｒ（τ）は時刻τにおける相関関数、ｆ（ｔ）は検出パターンを表す時系列の関数（「検出パターン関数」と呼ぶ）、ｇ（ｔ）は測定等されて入力された信号波形を時系列の関数（「測定関数」と呼ぶ）である。即ち、検出パターンは、ｔ＝０からｔ＝Ｎ−１のＮポイントのデータｆ（０）、ｆ（１）、ｆ（２）、・・・ｆ（Ｎ−１）で表される。
【０００６】
図７は、この相関演算の模式的な説明図である。測定された波形であるｇ（ｔ）に対して、τだけずらしながら、時刻ｔについての積和演算をすることによって、相関関数Ｒ（τ）を算出することができる。図７ではτ＝９のときのｇ（ｔ）が検出パターン関数ｆ（ｔ）と良く一致するので、相関関数Ｒ（９）が最大値をとる。
【０００７】
特許文献１には、相関関数計算機が開示されている。相関関数計算機は、第１の入力データが書込まれる第１の記憶部と、第２の入力データが書込まれる第２の記憶部と、第１の記憶部と第２の記憶部に記憶したデータを同時に読み出して積和演算を行い自己相関関数または相互相関関数を求める積和演算部とを備えて構成される。算出に必要なデータを同時に読み出すことができるので、処理時間を短縮することができるとされる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−２８２３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１ついて本発明者が検討した結果、以下のような新たな課題があることがわかった。
【００１０】
センサーによって測定される信号の波形に特定の信号パターンが出現したことを、マイクロコンピュータ（「マイコン」と略す）を使って検出しようとする場合、測定された信号はマイコンに搭載されるＡ／Ｄ変換器によって時系列データに変換され、ＣＰＵによるデータ処理によって、相関演算が実行される。ここで、Ａ／Ｄは「Analog to Digital」の略語、ＣＰＵは「Central Processing Unit」の略語である。以下略語の語源は本明細書の少なくとも１箇所にカッコ書きで示すものとする。
【００１１】
図８は、一般的な構成を備えるマイコンを使って、測定された信号から特定の信号パターンを検出する相関演算を実行する例を示す、説明図である。マイコン３０は、Ａ／Ｄ変換器１とＣＰＵ１０とＳＲＡＭ（Static Random Access Memory）２１とを備え、それらが互いにデータバス２２で接続されている。マイコン３０は、アナログ信号入力端子２３を備え、この端子から入力されるアナログ信号がＡ／Ｄ変換器１に供給される。ＣＰＵ１０はＣＰＵ内部バス１１を有し、レジスタ１２と１３、積和演算器１４、アキュムレータ１５及び判定回路１６を備える。これらの一部はソフトウェアによって実現されても良い。
【００１２】
まず、アナログ信号入力がＡ／Ｄ変換器１に入力される。そして、その信号はＡ／Ｄ変換器１でディジタル信号に変換され、そのデータはＳＲＡＭ２１に格納される。そして、測定すべき時系列データが全てＳＲＡＭ２１に格納された後に、ＣＰＵ１０は相関関数の演算処理を開始する。まず、予めＳＲＡＭ２１に格納されている検出パターン関数ｆ（ｔ）をレジスタ１２に格納する。次に、ＳＲＡＭ２１に格納されている時系列データのｇ（ｔ）をレジスタ１３に格納して上述の式１の積和演算を実行する。そして、式１に従って、ｆ（ｔ）、ｇ（ｔ）をレジスタ１２、レジスタ１３に格納しながら、積和演算を順次実行していき、Ｒ（０），Ｒ（１），Ｒ（２），等の相関関数Ｒ（τ）を計算していく。そして、相関関数Ｒ（τ）の値が予め設定された規格値を超えた場合に、検出パターンが検出されたことになり、演算を終了する。
【００１３】
上記のように従来のマイコンでは、Ａ／Ｄ変換器１等により時系列データが全部取得された後に、ＣＰＵ１０により相関関数の計算を開始するので、時系列で入力される信号に特定の信号パターンが現れたことの検出を、リアルタイムで行うことができないという問題点があった。すなわち、単一マイコンでは、自動車の人検知や、地震波の検出等のように、緊急性の高いリアルタイム処理が必要とされるパターン検出に対応することができなかった。
【００１４】
もし、このような一般的なマイコンでリアルタイムに相関関数を計算して入力パターン検出を行うように構成すると、ＣＰＵ１０がその演算処理に常時占有されることになるために、ＣＰＵ１０はその他のアプリケーション処理ができなくなるという問題点があった。
【００１５】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
一実施の形態によれば、下記の通りである。
【００１７】
すなわち、順次入力される時系列データと、複数個の検出パターンデータで表される検出パターンとの相関関数を算出する相関演算回路であって、１個の時系列データが入力されたときに次の時系列データが入力されるまでの期間に、その１個の時系列データを参照する全ての相関関数の中間データまたは最終的な相関関数の値を求める。
【００１８】
相関演算回路は、複数個の検出パターンデータを格納する第１メモリと、乗算器と、加算器と、乗算器と加算器による積和演算の中間データを格納可能な第２メモリと、比較器とを備え、時系列データが前記乗算器の一方の入力に１個ずつ順次入力されるときに、以下のように動作するように構成される。
【００１９】
乗算器は、入力された１個の時系列データと、第１メモリから順次読み出された前記複数個の検出パターンデータとの乗算を順次実行し、算出される積を加算器の一方の入力に順次供給する。この乗算と同期して、対応する中間データが第２メモリから読み出されて、加算器の他方の入力に順次供給され、加算器は、読み出された中間データに前記積を加算して、第２メモリに当該中間データとして書き戻す。
【００２０】
すべての検出パターンデータと同じ個数の時系列データとの積が累積的に加算されたデータが、結果データとされ、比較器は、その結果データを所定の規定値と比較する。
【発明の効果】
【００２１】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００２２】
すなわち、順次入力される時系列データについて、検出パターンデータとの相関関数を、時系列データの入力と並行して算出することができ、入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、実施形態１に係る相関演算回路の構成例を示すブロック図である。
【図２】図２は、相関演算回路の動作例を示すタイミングチャートである。
【図３】図３は、実施形態１に係る半導体装置の構成例を示すブロック図である。
【図４】図４は、実施形態１の効果を示す説明図である。
【図５】図５は、実施形態２に係る相関演算回路の構成例を示すブロック図である。
【図６】図６は、実施形態２に係る半導体装置の構成例を示すブロック図である。
【図７】図７は、測定された信号から特定の信号パターンを検出する相関演算を模式的に示す、説明図である。
【図８】図８は、一般的な構成を備えるマイコンを使って、測定された信号から特定の信号パターンを検出する相関演算を実行する例を示す、説明図である。
【発明を実施するための形態】
【００２４】
実施の形態について詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００２５】
〔実施形態１〕
図１は、実施形態１に係る相関演算回路２０の構成例を示すブロック図である。
【００２６】
相関演算回路２０は、第１メモリであるＳＲＡＭ２と、第２メモリであるＳＲＡＭ６と、乗算器４と、加算器５と、規定値を保持する記憶素子７とを備え、Ａ／Ｄ変換器１が接続されている。ＳＲＡＭ２には複数個の検出パターンデータを格納することができ、ＳＲＡＭ６には乗算器４と加算器に５よる積和演算の中間データを格納することができる。相関演算回路２０を、順次入力される時系列データとＮ個（Ｎは２以上の整数）の検出パターンデータで表される検出パターンとの相関関数を算出することができるように構成するためには、ＳＲＡＭ２とＳＲＡＭ６は、それぞれ少なくともＮ個のデータを格納できる記憶容量を有することができるように構成する。厳密には（例えば初期値0と最終値である相関関数をＳＲＡＭ６に保持しない場合には）、ＳＲＡＭ６はＮ−１個のデータを格納できる記憶容量を有するものとすれば足りる。
【００２７】
Ａ／Ｄ変換器１の入力端子にはアナログ信号ａが入力され、出力端子から乗算器４の一方の入力端子に接続され、アナログ信号ａがディジタルデータに変換された時系列データｂが順次供給される。ＳＲＡＭ２の出力はレジスタ３を介して乗算器４の他方の入力端子に接続され、ＳＲＡＭ２に格納されるＮ個の検出パターンデータを順次読み出して、乗算器４に供給することができる。乗算器４の出力ｄは加算器５の一方の入力端子に接続され、加算器５の他方の入力端子にはＳＲＡＭ６の出力ｅが供給され、加算器５の出力ｈはＳＲＡＭ６の入力に接続されている。加算器５の出力ｈは、さらに比較器８にも接続されている。比較器８は入力される規定値ｊとの比較を行って、比較結果ｉを出力する。７は規定値を保持する記憶素子であり、例えば外部から書き換え可能なレジスタで実装される。
【００２８】
１個の時系列データが乗算器４に入力されたとき、ＳＲＡＭ２からＮ個の検出パターンデータを順次読み出して、レジスタ３を介して乗算器４に入力することによって、Ｎ回の乗算を実行し、算出されるＮ個の積ｄを加算器５の一方に順次入力する。この乗算と同期して、順次算出される積にそれぞれ対応する中間データをＳＲＡＭ６から読み出して、加算器５の入力ｅに供給することにより、加算器５は中間データに対応する積を加算して、ＳＲＡＭ６に当該中間データとして書き戻す。このとき、第１の検出パターンデータと、入力された前記１個の時系列データとの積を第１の積とする。これは式１に示した相関関数の第１項に相当する。Ｎ個すべての検出パターンデータと同じＮ個の時系列データとの積が累積的に加算されたデータｈが、結果データ即ち相関関数である。比較器８は、前記結果データを所定の規定値と比較する。例えば、結果データ即ち相関関数が、所定の規定値を超えた時に、Ｎ個の検出パターンデータで表される検出パターンが、入力された時系列データに現れたものとして、比較結果ｉを出力する。
【００２９】
これにより、順次入力される時系列データについて、検出パターンデータとの相関関数を、時系列データの入力と並行して算出することができ、入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出することができる。
【００３０】
相関演算回路２０の動作について、さらに詳しく説明する。なお、以下の説明では、説明の煩雑さを避けるために、検出パターンデータの個数を４個とする。即ち、検出パターンデータは、f(0), f(1), f(2), f(3)の４個の時系列データとする。一方、Ａ／Ｄ変換器１から入力される時系列データはg(t)=g(0), g(1), g(2), g(3), g(4),・・・とする。また、f(t)とg(t)はそれぞれ８ビット等の複数ビットのディジタルデータで構成されるものとする。g(0), g(1), g(2), g(3)までが入力されたときに、相関関数R(0)=f(0)・g(0)+f(1)・g(1)+f(2)・g(2)+f(3)・g(3)が算出できることとなる。以降、
g(4)が入力されると、R(1)=f(0)・g(1)+f(1)・g(2)+f(2)・g(3)+f(3)・g(4)が算出でき、
g(5)が入力されると、R(2)=f(0)・g(2)+f(1)・g(3)+f(2)・g(4)+f(3)・g(5)が算出でき、
g(6)が入力されると、R(3)=f(0)・g(3)+f(1)・g(4)+f(2)・g(5)+f(3)・g(6)が算出でき、
g(7)が入力されると、R(4)=f(0)・g(4)+f(1)・g(5)+f(2)・g(6)+f(3)・g(7)が算出できる。
【００３１】
相関演算回路２０は、g(4)が入力されたときに初めて上記４項の相関関数の演算を実行するのではなく、g(4)が入力されたときには、g(4)を使って算出すべきすべての相関関数の中間データを算出して、ＳＲＡＭ６に書き込んで保持する。つまり、次のR(2)のための積f(2)・g(4)及び累算f(0)・g(2)+f(1)・g(3)+f(2)・g(4)と、R(3)のための積f(1)・g(4)及び累算f(0)・g(3)+f(1)・g(4)と、さらに次のR(4)のための積f(0)・g(4)をそれぞれ算出して、それぞれ中間データとしてＳＲＡＭ６に書き込んで保持する。
【００３２】
このように、検出パターンデータとの相関関数を、時系列データの入力と並行して算出するので、入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出することができる。
【００３３】
図２は、相関演算回路２０の動作例を示すタイミングチャートである。
【００３４】
時刻t=−１（不図示）で、アナログデータAD0がＡ／Ｄ変換器１の入力aに入力され、そして、時刻t=0にAD変換後のディジタルデータg(0)がＡ／Ｄ変換器１の出力bから出力される。
【００３５】
また、時刻t=0にアナログデータAD1がＡ／Ｄ変換器１の入力aに入力され、そして、時刻t=1にＡ／Ｄ変換後のディジタルデータg(1)がＡ／Ｄ変換器１の出力bから出力される。
【００３６】
また、時刻t=1にアナログデータAD2がＡ／Ｄ変換器１の入力aに入力され、そして、時刻t=2にＡ／Ｄ変換後のディジタルデータg(2)がＡ／Ｄ変換器１の出力bから出力される。
【００３７】
また、時刻t=2にアナログデータAD3がＡ／Ｄ変換器１の入力aに入力され、そして、時刻t=3にＡ／Ｄ変換後のディジタルデータg(3)がＡ／Ｄ変換器１の出力bから出力される。以下同様である。
【００３８】
次に、図１を参照しながら、図２の動作を説明する。
【００３９】
時刻t=0からt=1の期間では、図１のbにg(0)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(0)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(0)・g(0)積が出力される、一方、ＳＲＡＭ６からR(0)の初期値として0が読み出されてeに入力される。加算器５でd=f(0)・g(0)とe=0の和を取った後でhを通って、この演算結果がR(0)の中間データとして、ＳＲＡＭ６のR(0)用のアドレスに格納される。
【００４０】
次に時刻t=1からt=2の期間において、図１のbにg(1)が出力されている状態で、まず、図１のＳＲＡＭ２から検出パターンデータf(1)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(1)・g(1)積が出力される、一方、ＳＲＡＭ６からR(0)の中間データとしてf(0)・g(0)が読み出されてeに入力される。加算器５でd=f(1)・g(1)とe=f(0)・g(0)の和を取った後でhを通って、この演算結果がR(0)の中間データとして、ＳＲＡＭ６のR(0)用のアドレスに格納される。
【００４１】
この時刻t=1からt=2の期間においては、次に、図１のbにg(1)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(0)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(0)・g(1)積が出力される、一方、ＳＲＡＭ６からR(1)の初期値として0が読み出されてeに入力される。加算器５でd=f(0)・g(1)とe=0の和を取った後でhを通って、この演算結果がR(1)の中間データとして、ＳＲＡＭ６のR(1)用のアドレスに格納される。
【００４２】
次に、時刻t=2からt=3の期間において、図１のbにg(2)が出力されている状態で、まず、図１のＳＲＡＭ２から検出パターンデータf(2)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(2)・g(2)積が出力される、一方、ＳＲＡＭ６からR(0)の中間データとしてf(0)・g(0)+f(1)・g(1)が読み出されてeに入力される。加算器５でd=f(2)・g(2)とe=f(0)・g(0)+f(1)・g(1)の和を取った後でhを通って、この演算結果がR(0)の中間データとして、ＳＲＡＭ６のR(0)用のアドレスに格納される。
【００４３】
この時刻t=2からt=3の期間においては、次に、図１のbにg(2)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(1)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(1)・g(2)積が出力される、一方、ＳＲＡＭ６からR(1)の中間データとしてf(0)・g(1)が読み出されてeに入力される。加算器５でd=f(1)・g(2)とe=f(0)・g(1)の和を取った後でhを通って、この演算結果がR(1)の中間データとして、ＳＲＡＭ６のR(1)用のアドレスに格納される。
【００４４】
この時刻t=2からt=3の期間においては、次に、図１のbにg(2)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(0)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(0)・g(2)積が出力される、一方、ＳＲＡＭ６からR(2)の初期値として0が読み出されてeに入力される。加算器５でd=f(0)・g(2)とe=0の和を取った後でhを通って、この演算結果がR(2)の中間データとして、ＳＲＡＭ６のR(2)用のアドレスに格納される。
【００４５】
次に、時刻t=3からt=4の期間において、図１のbにg(3)が出力されている状態で、まず、図１のＳＲＡＭ２から検出パターンデータf(3)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(3)・g(3)積が出力される、一方、ＳＲＡＭ６からR(0)の中間データとしてf(0)・g(0)+f(1)・g(1)+f(2)・g(2)が読み出されてeに入力される。加算器５でd=f(3)・g(3)とe=f(0)・g(0)+f(1)・g(1)+f(2)・g(2)の和を取った後でhを通って、この演算結果がR(0)の最終結果データとして、ＳＲＡＭ６のR(0)用のアドレスに格納される。最終的に、R(0)= f(0)・g(0)+ f(1)・g(1)+ f(2)・g(2)+ f(3)・g(3)である。この時、同時に比較器８にR(0)の最終結果データが入力されて、予め比較器８に格納されている規定値７と比較される。もし、R(0)が規定値を超えていれば、検出パターンが検出されたことになり、比較器８からパターン検出信号iが出力される。このとき、図１の相関演算回路２０は動作を停止し、R(0)が規定値を超えていない場合は、以下の動作を継続する。
【００４６】
ここで、相関演算回路２０が例えば後述するように、マイコンなどのＬＳＩ（Large Scale Integrated circuit）である半導体装置３０に搭載される場合には、比較器８から出力されるパターン検出信号iは、割り込み要求信号とすることができる。この割込み信号に応じて、マイコンは割込み動作を実行する。
【００４７】
R(0)が規定値を超えていない場合に、時刻t=3からt=4の期間においては、次に、図１のbにg(3)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(2)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(2)・g(3)積が出力される、一方、ＳＲＡＭ６からR(1)の中間データとしてf(0)・g(1)+f(1)・g(2)が読み出されてeに入力される。加算器５でd=f(2)・g(3)とe=f(0)・g(1)+f(1)・g(2)の和を取った後でhを通って、この演算結果がR(1)の中間データとして、ＳＲＡＭ６のR(1)用のアドレスに格納される。
【００４８】
この時刻t=3からt=4の期間においては、次に、図１のbにg(3)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(1)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(1)・g(3)積が出力される、一方、ＳＲＡＭ６からR(2)の中間データとしてf(0)・g(2)が読み出されてeに入力される。加算器５でd=f(1)・g(3)とe=f(0)・g(2)の和を取った後でhを通って、この演算結果がR(2)の中間データとして、ＳＲＡＭ６のR(2)用のアドレスに格納される。
【００４９】
この時刻t=3からt=4の期間においては、次に、図１のbにg(3)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(0)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(0)・g(3)積が出力される、一方、ＳＲＡＭ６からR(3)の初期値として0が読み出されてeに入力される。加算器５でd=f(0)・g(3)とe=0の和を取った後でhを通って、この演算結果がR(3)の中間データとして、ＳＲＡＭ６のR(3)用のアドレスに格納される。
【００５０】
次に、時刻t=4からt=5の期間において、図１のbにg(4)が出力されている状態で、まず、図１のＳＲＡＭ２から検出パターンデータf(3)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(3)・g(4)積が出力される、一方、ＳＲＡＭ６からR(1)の中間データとしてf(0)・g(1)+f(1)・g(2)+f(2)・g(3)が読み出されてeに入力される。加算器５でd=f(3)・g(4)とe=f(0)・g(1)+f(1)・g(2)+f(2)・g(3)の和を取った後でhを通って、この演算結果がR(1)の最終結果データとして、ＳＲＡＭ６のR(1)用のアドレスに格納される。最終的に、R(1)= f(0)・g(1)+ f(1)・g(2)+ f(2)・g(3)+ f(3)・g(4)である。この時、同時に比較器８にR(1)の最終結果データが入力されて、予め比較器８に格納されている規定値７と比較される。もし、R(1)が規定値を超えていれば、検出パターンが検出されたことになり、比較器８からパターン検出信号iが出力される。このとき、図１の相関演算回路２０は動作を停止し、R(1)が規定値を超えていない場合は、さらに以下の動作を継続する。
【００５１】
この時刻t=4からt=5の期間においては、次に、図１のbにg(4)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(2)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(2)・g(4)積が出力される、一方、ＳＲＡＭ６からR(2)の中間データとしてf(0)・g(2)+f(1)・g(3)が読み出されてeに入力される。加算器５でd=f(2)・g(4)とe=f(0)・g(2)+f(1)・g(3)の和を取った後でhを通って、この演算結果がR(2)の中間データとして、ＳＲＡＭ６のR(2)用のアドレスに格納される。
【００５２】
この時刻t=4からt=5の期間においては、次に、図１のbにg(4)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(1)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(1)・g(4)積が出力される、一方、ＳＲＡＭ６からR(3)の中間データとしてf(0)・g(3)が読み出されてeに入力される。加算器５でd=f(1)・g(4)とe=f(0)・g(3)の和を取った後でhを通って、この演算結果がR(3)の中間データとして、ＳＲＡＭ６のR(3)用のアドレスに格納される。
【００５３】
この時刻t=4からt=5の期間においては、次に、図１のbにg(4)が出力されている状態で、図１のＳＲＡＭ２から検出パターンデータf(0)が、図１のcに出力される。この時、積演算が実行されて図１のdにf(0)・g(4)積が出力される、一方、ＳＲＡＭ６からR(4)の初期値として0が読み出されてeに入力される。加算器５でd=f(0)・g(4)とe=0の和を取った後でhを通って、この演算結果がR(4)の中間データとして、ＳＲＡＭ６のR(4)用のアドレスに格納される。
【００５４】
以下同様の動作を継続していく。すなわち、上記で述べたように、相関関数R(0), R(1), R(2), R(3), R(4),・・・が逐次的に計算されていき、各R(n)の最終結果データが比較器８で判定されていく。
【００５５】
このような相関演算回路２０は、例えばマイコンなどのＬＳＩである半導体装置３０に搭載されると好適である。
【００５６】
図３は、実施形態１に係る半導体装置３０の構成例を示すブロック図である。半導体装置３０は、ＣＰＵ１０と、バス２２と、Ａ／Ｄ変換器１と、相関演算回路２０とを備える。図示されるように、バス２２に接続されたＳＲＡＭ２１をさらに備えてもよい。半導体装置３０は、例えば、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor field effect transistor）ＬＳＩの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【００５７】
Ａ／Ｄ変換器１は、端子２３から入力されるアナログ信号を順次時系列データに変換可能であり、ＣＰＵ１０はバス２２を介して変換結果である時系列データを取得することができる。ＣＰＵ１０がＡ／Ｄ変換器１の変換結果を取得可能とするように構成する必要は必ずしもないが、取得可能とすることにより、相関演算回路２０を使用しない場合の、一般的なマイコンの機能を維持することができる。
【００５８】
相関演算回路２０は、検出対象である特定の信号パターンを表す複数個の検出パターンデータを格納するＳＲＡＭ２と、乗算器４と、加算器５と、乗算器４と加算器５による積和演算の中間データを格納可能なＳＲＡＭ６と、比較器８とを備える。
【００５９】
乗算器４は、Ａ／Ｄ変換器１から入力された１個の時系列データと、ＳＲＡＭ２から順次読み出された複数個の検出パターンデータとの乗算を順次実行し、算出される積を加算器５の一方の入力に順次供給する。この乗算と同期して、対応する中間データが、ＳＲＡＭ６から読み出されて、加算器５の他方の入力に順次供給される。加算器５は、対応する中間データに乗算結果である積を加算して、ＳＲＡＭ６に当該中間データとして書き戻す。前記複数個すべての検出パターンデータとそれと同じ個数の時系列データとの積が累積的に加算されたデータが、結果データとされる。即ち、ＳＲＡＭ６に中間データを記憶しておき、読み出して次の積を累積的に加算してＳＲＡＭ６に中間データとして書き戻す動作を繰り返すことによって、特定の信号パターンを表す検出パターンデータの個数分の累積加算が実行され、全数が終了したときに結果データ即ち相関関数として出力される。
【００６０】
これにより、順次入力される時系列データについて、検出パターンデータとの相関関数を、時系列データの入力と並行して算出することができ、入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出することができる、例えばマイコンなどの半導体装置を提供することができる。
【００６１】
このときの結果データは、検出対象である特定の信号パターンと入力された時系列データとの相関関数である。比較器８は、この結果データを所定の規定値と比較し、その結果が所定の規定値を超えたときに、相関演算回路２０は、ＣＰＵ１０への割り込み要求を発生する。
【００６２】
ＳＲＡＭ２から読み出される検出パターンデータを一時的に保持するレジスタ３と、比較器８に上記「所定の規定値」を与えるための記憶素子７をさらに備えてもよい。また、図示は省略されているが、半導体装置３０は割り込み制御回路をさらに備え、ＣＰＵ１０への上記の割り込み要求は、この割り込み制御回路に入力され、割り込み要求のマスク等の処理、及び、他の割り込み要求との間での調停を受けた後に、ＣＰＵ１０に伝送され、実際に割り込み処理が実行される。このときの他の割り込み要求には、例えばＡ／Ｄ変換器１からのＡ／Ｄ変換処理の完了を通知する割り込み要求が含まれる。
【００６３】
本実施形態１による効果について説明する。
【００６４】
図４は、その効果を示す説明図である。上段には「発明が解決しようとする課題」において図８を参照して説明した、一般的な構成を備えるマイコンを使って、測定された信号から特定の信号パターンを検出する相関演算を実行する例を「比較例」として示し、下段には本実施形態１による相関演算の例を「実施例」として示した。横軸はともに時刻ｔである。
【００６５】
検出対象である特定の信号パターンを表す検出パターンデータの個数を50個、即ち検出パターン関数f(t)のポイント数を50個とし、Ａ／Ｄ変換器１から順次入力される時系列データのポイント数を20000個とする。また、１ポイントあたりのＡ／Ｄ変換器１のＡ／Ｄ変換実行時間を１μｓ、比較例のＣＰＵ１０による積和演算実行時間を１ポイントあたり40ns、本実施形態１の相関演算回路２０による積和演算実行時間を１ポイントあたり20nsとする。
【００６６】
図４に示すように、比較例と実施例のどちらにおいても、Ａ／Ｄ変換器１は、入力されるアナログ信号を順次Ａ／Ｄ変換して、20000ポイントの時系列データを出力するのに要する時間は、20000×１μｓ＝20msとなる。
【００６７】
比較例では、20000ポイントの時系列データのＡ／Ｄ変換が完了して、その結果をＳＲＡＭ２１（図８）に一旦すべて格納した後に、ＣＰＵ１０が必要なデータを順次取り込みながら相関関数の演算を実行する。ＣＰＵ１０による積和演算実行時間を１ポイントあたり40nsとしたので、20000ポイントすべての時系列データについての相関関数の演算を完了するために要する時間は、20000×50×40ns＝40msとなる。
【００６８】
一方、実施例でもＡ／Ｄ変換して20000ポイントの時系列データを出力するのに要する時間は、同じ20msであるが、相関演算回路２０は図２に示したように、最初の時系列データ（図２ではg(0)）が入力された時に直ちに相関関数の演算（f(0)×g(0)）を開始する。その後、新たな時系列データが入力される度に、相関演算回路２０はそのデータを使った相関関数の演算を、可能な範囲ですべて実行する（演算完了前の中間データはＳＲＡＭ６に一時的に保持する）。このように、Ａ／Ｄ変換器１がＡ／Ｄ変換を行っているのと並列に、逐次的に相関関数を求めていくので、最後の第20000ポイントの時系列データが入力された時には、そのデータを必要としている相関関数の演算（f(0)×g(20000)〜f(49)×g(20000)）のみを実行すれば、すべての相関関数演算を完了することができる。
【００６９】
よって、両者を比較すると検出パターンを検出できるまでに、最大約40msの時間差があることがわかる。ただし実際には、比較例ではＣＰＵによる相関関数演算時間40msの途中であっても、検出パターンが検出された時点で動作を完了することができ、実施例でもＡ／Ｄ変換と並列に実行される、相関演算回路２０による相関関数演の途中であっても検出パターンが検出された時点で動作を完了することができる。この場合においても、比較例も実施例も同程度時間短縮されるので、両者の時間差は40ms程度となる。
【００７０】
実施例の特徴は、相関関数演算をＡ／Ｄ変換と並列に実行する点にある。これにより、20000ポイントすべての時系列データのＡ／Ｄ変換が完了した後に相関関数演算を開始する比較例と比べて、相関関数演算を20ms早く開始することができる。その結果、検出パターンと一致するパターンの時系列データが入力されると直ちにそれを検出することができる。すなわち、順次入力される時系列データについて、検出パターンデータとの相関関数を、時系列データの入力と並行して算出することができ、入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出することができる。
【００７１】
また、相関演算回路２０は専用回路であるため、汎用のＣＰＵ１０よりも高速に積和演算を実行することができる上に、演算に必要とされる消費電力も低い。したがって、実施例は比較例に対して消費電力低減効果も大きい。
【００７２】
〔実施形態２〕
図５は、実施形態２に係る相関演算回路２０の構成例を示すブロック図である。図１に示した実施形態１の相関演算回路２０と比べて、Ａ／Ｄ変換器１がシリアル通信回路９に置き換えられた点で相違するが、他の構成は同様である。ここでのシリアル通信回路とは、例えばUART（Universal Asynchronous Receiver Transmitter）等のシリアルインターフェースを持つ通信回路である。
【００７３】
シリアル通信回路９には、例えば８ビットで構成される時系列データg(t)がシリアルで入力され、パラレルデータに変換されて出力される。多くのセンサーは、測定値をディジタルに変換した後にシリアルデータに変換して出力する。このようなセンサーをマイコンと接続するときに必要な端子数と信号配線数は、パラレルデータをそのまま伝送する場合と比べて大幅に低減することができ、コスト低減に寄与する。
【００７４】
例えば８ビットで構成されたg(0)がシリアル通信データとして、シリアル通信回路９に入力される。そして、８ビットすべてのシリアルデータの入力が完了すると、bに８ビットのパラレルデータとして、g(0)が出力される。そして、ＳＲＡＭ２から検出パターンデータのf(0)がcに出力される。この時、積演算が実行されてdにf(0)・g(0)積が出力され、eに入力される中間データと和を取った後でhを通って、この演算結果がR(0)の中間データとして、ＳＲＡＭ２のR(0)用のアドレスに格納される。eに最初に入力されるR(0)の初期値は0であり、例えばＳＲＡＭ６のR(0)用のアドレスに初期値として格納されている0が読み出されてeに供給される。これ以降の動作は実施形態１と同様であるので、説明を省略する。
【００７５】
これにより、時系列データがシリアルで入力される場合にも、順次入力される時系列データについて、検出パターンデータとの相関関数を、時系列データの入力と並行して算出することができ、入力された時系列データに特定の信号パターンが出現したことをリアルタイムで検出することができる。
【００７６】
図６は、実施形態２に係る半導体装置３０の構成例を示すブロック図である。半導体装置３０は、図３に示した実施形態１の半導体装置３０と同様に、ＣＰＵ１０と、バス２２と、相関演算回路２０とを備え、Ａ／Ｄ変換器１に代えてシリアル通信回路９を備える。図示されるように、バス２２に接続されたＳＲＡＭ２１をさらに備えてもよい点は同様である。
【００７７】
シリアル通信回路９は、端子２４から入力されるシリアルデータ信号を順次パラレルの時系列データに変換可能であり、ＣＰＵ１０はバス２２を介して変換結果であるパラレルの時系列データを取得することができる。パラレルに変換された時系列データは、相関演算回路２０に順次入力される。
【００７８】
相関演算回路２０の構成と動作は、実施形態１と同様であるので、説明を省略する。
【００７９】
これにより、シリアルデータとして入力される信号パターンに対して、ＣＰＵ１０を使用することなく、リアルタイムにパターン検出を実行することができる。また、実施形態１と同様に、ＣＰＵ１０の動作時間を削減できるので、低消費電力効果が大きい。
【００８０】
実施形態２に示す半導体装置３０は、Ａ／Ｄ変換器１に代えてシリアル通信回路９を備えるが、Ａ／Ｄ変換器１に加えてシリアル通信回路９を備える構成としてもよい。その場合には、相関演算回路２０への入力をＡ／Ｄ変換器１側からとするか、シリアル通信回路９側からとするかの選択回路をさらに備えて、プログラマブルとすることができる。または、１つの半導体装置３０に複数の相関演算回路２０を搭載し、それぞれにＡ／Ｄ変換器１またはシリアル通信回路９を備えて、多数のセンサーに接続可能に構成しても良い。
【００８１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８２】
例えば、各実施形態で例示したビット数、ポイント数などはすべて一例に過ぎず、任意に変更することができる。また、図３と６に示した半導体装置３０は、単純なマイコンである場合の構成例であって、説明に必要な機能ブロックに絞って図示されているが、他の機能ブロック、例えば割り込み制御回路、ダイレクトメモリアクセスコントローラ、不揮発性メモリ、クロック生成回路、及び、タイマーや通信インターフェースなどの周辺機能ブロックが搭載されていてもよい。さらに、メモリがメモリマネージメントユニットやキャッシュメモリを含んで階層化され、バスが階層化され、或いは、ＣＰＵ１０が複数個搭載されることによって、マルチプロセッサに変更されるなど、任意のアーキテクチャのプロセッサに変更することができる。一方、半導体装置３０は、ＣＰＵ１０等のプロセッサを搭載せず、専用回路によって構成されてもよい。
【符号の説明】
【００８３】
１  Ａ／Ｄ変換器
２、６  ＳＲＡＭ
３  レジスタ
４  乗算器
５  加算器
７  規定値（規定値を保持する記憶素子）
８  比較器
９  シリアル通信回路
１０  ＣＰＵ
１１  ＣＰＵバス
１２、１３  レジスタ
１４  積和器
１５  アキュムレータ
１６  判定回路
２０  相関演算回路
２１  ＳＲＡＭ
２２  データバス
２３  アナログ信号入力端子
２４  シリアル通信データ入力端子
３０  半導体装置（マイコン）
【図１】
2017211704.tif 000004
【図２】
2017211704.tif 000005
【図３】
2017211704.tif 000006
【図４】
2017211704.tif 000007
【図５】
2017211704.tif 000008
【図６】
2017211704.tif 000009
【図７】
2017211704.tif 000010
【図８】
2017211704.tif 000011