(57)【特許請求の範囲】
【請求項１】
各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶された第１のメモリ内から、複数サンプリング周期分のデータであって、前記第１のメモリ内の連続する複数のアドレスに記憶されている複数のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込む第１のメモリコントローラと、
前記第２のメモリに書き込まれている前記複数サンプリング周期分のデータを、各サンプリング周期において処理すべき順番で処理する処理部と、
を備えた信号処理装置。
【請求項２】
前記第１のメモリコントローラは、前記処理部による前記複数サンプリング周期分のデータに対する処理を開始する前に、前記複数サンプリング周期分のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込み、
前記処理部による前記複数サンプリング周期分のデータに対する処理が終了した後に、前記第２のメモリ内の前記処理された複数サンプル周期分のデータを読み出すとともに、前記読み出されたデータを前記第１のメモリ内の元のアドレスに書き込む第２のメモリコントローラを更に備える、
請求項１に記載の信号処理装置。
【請求項３】
前記処理部は、各サンプリング周期において、前記第１のメモリ内の離散的なアドレスの順番で記憶されている複数のデータを離散的なアドレスの順番に処理することで遅延処理を実行する、請求項１または２に記載の信号処理装置。
【請求項４】
前記第１のメモリには、各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶されており、かつ、各サンプリング周期に対応するデータが他のサンプリング周期に対応するデータに対してシフトされたアドレスに記憶されており、
前記処理部は、前記第１のメモリに記憶されたデータのアドレスを、サンプリング周期でシフトしながら、各サンプリング周期に対応して離散的に記憶されている複数のデータに対する読み込み及び書き込みを行うことで、各サンプリング周期に対応する遅延処理を実行する、請求項１乃至３のいずれか一項に記載の信号処理装置。
【請求項５】
前記第１のメモリは、リングバッファ形状に構成され、複数サンプリング周期それぞれに対応する複数のデータが記憶されている、請求項１乃至４のいずれか一項に記載の信号処理装置。
【請求項６】
前記第２のメモリは、前記複数サンプリング周期分のデータを、サンプリング周期毎に分割して記憶する複数のページエリアを備えた、請求項１乃至５のいずれか一項に記載の信号処理装置。
【請求項７】
前記処理部は、サンプリング周期毎に、前記第２のメモリ内の前記サンプリング周期に対応するページエリアにあるデータを読み出して処理し、前記処理されたデータを前記読み出したページエリアに書き込む、請求項６に記載の信号処理装置。
【請求項８】
前記信号処理装置は、前記第１のメモリを外付けとし、前記第２のメモリを内蔵した請求項１乃至７に記載の信号処理装置。
【請求項９】
演奏データを入力する演奏操作子と、
前記第１のメモリおよび前記第２のメモリと、
前記演奏データに応じて楽音を形成する、前記請求項１乃至８のいずれかに記載の信号処理装置と、
を備える電子楽器。
【請求項１０】
装置が、
各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶された第１のメモリ内から、複数サンプリング周期分のデータであって、前記第１のメモリ内の連続する複数のアドレスに記憶されている複数のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込み、
前記第２のメモリに書き込まれている前記複数サンプリング周期分のデータを、各サンプリング周期において処理すべき順番で処理する、信号処理方法。
【請求項１１】
コンピュータに、
各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶された第１のメモリ内から、複数サンプリング周期分のデータであって、前記第１のメモリ内の連続する複数のアドレスに記憶されている複数のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込むステップと、
前記第２のメモリに書き込まれている前記複数サンプリング周期分のデータを、各サンプリング周期において処理すべき順番で処理するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音源に用いて好適な信号処理装置、信号処理方法、プログラムおよび電子楽器に関する。
【背景技術】
【０００２】
電子楽器では、音源にＤＳＰ（デジタル・シグナル・プロセッサ）と呼ばれる信号処理装置を備えることが多い。ＤＳＰ（信号処理装置）は、外部メモリに記憶される波形データを所定のサンプリング周期毎に順次読み出し、読み出した波形データについて、遅延フィードバック演算やフィルタ演算を施して楽音波形を形成したり、その形成した楽音波形にリバーブ等のエフェクト（効果音）を付与するよう構成されている。
【０００３】
この種の信号処理装置では、外部メモリへのアクセスタイムが内部メモリのそれより遅くなるのが一般的である。したがって、頻繁に外部メモリにアクセスしてデータを読み出し／書き込みする場合には、外部メモリにアクセスする際のレイテンシ（遅延）に起因して装置全体の処理速度低下を招く。
【０００４】
その為、従来では、例えば特許文献１に開示の技術のように、第１の処理手段が内部メモリを占有していないタイムスロットに同期して、第２の処理手段が外部メモリから読み出したデータを内部メモリに書き込み、あるいは内部メモリから読み出したデータを外部メモリに書き込むようにし、これにより第１の処理手段から見ると、外部メモリがあたかも内部メモリの一部として動作するようにして装置全体の処理速度向上を図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３６２９６９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、近年の電子楽器では、コーラスやリバーブ等の信号遅延に基づく標準的なエフェクトを複数の音楽パート（発音チャンネル）に付与しながら、他の音楽パート（発音チャンネル）について各々異なる種類のエフェクトを時分割に付与する等、信号処理装置の高機能化を進める一方、その信号処理装置においては信号遅延に供する外部メモリに比較的低速な汎用デバイスを用いるようにし、さらに当該外部メモリを装置各部で共有可能として製品コスト低減を図ることが求められる。
【０００７】
信号処理装置では、一般的に１クロック１命令でプログラムが進行する。したがって、プログラムカウンタにより計数されるプログラムアドレスは、停止やフォルト等の阻害要因が無い理想的な進行であれば、図１０に図示するように、アドレスが直線的に変化する。しかしながら、比較的低速な汎用デバイスによる外部メモリを用いてエフェクトに必要な信号遅延処理を行う場合には、図１０に図示する通り、当該外部メモリにアクセスする毎に生じるレイテンシ（遅延）によりパフォーマンス劣化を招くという問題がある。
さらにＮＡＮＤ  ＦＬＳＨ、ＤＤＲ−ＳＤＲＡＭ等、大容量でも比較的安価なメモリは、連続するアドレスに記憶されているデータをアクセスする場合と比べて、ランダムアクセスする場合はレイテンシ（遅延）が大きくなることが知られている。
【０００８】
本発明は、このような事情に鑑みてなされたもので、外部メモリを用いて信号遅延処理を行う場合でもアクセス待ちによるパフォーマンス劣化を回避することが出来る信号処理装置、信号処理方法、プログラムおよび電子楽器を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の信号処理装置は、
各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶された第１のメモリ内から、複数サンプリング周期分のデータであって、前記第１のメモリ内の連続する複数のアドレスに記憶されている複数のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込む第１のメモリコントローラと、
前記第２のメモリに書き込まれている前記複数サンプリング周期分のデータを、各サンプリング周期において処理すべき順番で処理する処理部と、
を具備することを特徴とする。
【００１０】
また、本発明の信号処理方法は、
装置が、
各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶された第１のメモリ内から、複数サンプリング周期分のデータであって、前記第１のメモリ内の連続する複数のアドレスに記憶されている複数のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込み、
前記第２のメモリに書き込まれている前記複数サンプリング周期分のデータを、各サンプリング周期において処理すべき順番で処理する、
ことを特徴とする。
【００１１】
本発明のプログラムは、
コンピュータに、
各サンプリング周期において順番に処理すべき複数のデータが離散的なアドレスの順番で記憶された第１のメモリ内から、複数サンプリング周期分のデータであって、前記第１のメモリ内の連続する複数のアドレスに記憶されている複数のデータをまとめて読み出すとともに、前記読み出された前記複数サンプリング周期分のデータを第２のメモリに書き込むステップと、
前記第２のメモリに書き込まれている前記複数サンプリング周期分のデータを、各サンプリング周期において処理すべき順番で処理するステップと、
を実行させることを特徴とする。
【発明の効果】
【００１２】
本発明では、外部メモリを用いて信号遅延処理を行う場合でもアクセス待ちによるパフォーマンス劣化を回避することが出来る。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態である楽器システム１００の構成を示すブロック図である。
【図２】ＤＳＰ３１の構成を示すブロック図である。
【図３】リングバッファとして機能する外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０）のアドレス変化を概略的に示す図である。
【図４】Ｄ−ＲＡＭ（Ａ系統）３２１およびＤ−ＲＡＭ（Ｂ系統）３２２におけるページとバーストアクセスの関係を示す図である。
【図５】ＤＳＰプログラム進行とプリフェッチプログラム進行との関係を示す図である。
【図６】プリフェッチサブプログラムコマンドの構成を示す図である。
【図７】Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８の構成を示すブロック図である。
【図８】外部メモリインタフェース部３２４の構成を示すブロック図である。
【図９】外部メモリインタフェース部３２４の動作を示すタイミングチャートである。
【図１０】従来例を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
［全体構成］
図１は、本発明の一実施形態である電子楽器１００の全体構成を示すブロック図である。この図に示す電子楽器１００は、ＣＰＵ１０、ＳＲＡＭ２０、音源部３０、第１のメモリ４０ａとしてのＤＤＲ−ＳＤＲＡＭ４０およびＮＡＮＤ  ＦＬＡＳＨ５０から構成される。ＣＰＵ１０は、ＳＲＡＭ２０に格納される各種プログラムに従って音源部３０を制御する。具体的には、ＣＰＵ１０が音源部３０のＵＡＲＴ（Universal Asynchronous Receiver Transmitter）３４を介して受信した演奏情報であるノートオン・ノートオフイベント等を表わすＭＩＤＩデータに従い、音源部３０のＤＳＰ３１に対して楽音波形の発生やエフェクト付与を指示する。  このＵＡＲＴには、例えば鍵盤などの演奏操作子６０が接続される。
【００１５】
音源部３０は、起動時又は必要に応じて、ＮＡＮＤ  ＦＬＡＳＨメモリ５０から波形テーブルデータを読み出してＤＤＲ−ＳＤＲＡＭ４０に転送する。なお、ＤＤＲ−ＳＤＲＡＭ４０とは、クロックの立ち上がり時と立ち下がり時の両方でデータの読み出し・書き込みを可能とするＤＤＲ（ダブルデータレート）モードを備えたＳＤＲＡＭである。音源部３０では、ＤＤＲ−ＳＤＲＡＭ４０に格納された波形テーブルデータを参照して各種音色の波形データに基づく楽音波形を発生させた後、当該楽音波形に対してコーラスやリバーブ等のエフェクトを付加して出力する。
【００１６】
音源部３０は、ＤＳＰ３１、波形発生器３２、Ｉ２Ｓ（ＩＣ間サウンド）３３、ＵＡＲＴ３４、ＤＤＲ−ＳＤＲＡＭインタフェース部３５およびＮＡＮＤ  ＦＬＡＳＨインタフェース部３６およびを備える。波形発生器３２は、公知の波形メモリ読み出し方式で構成され、ＤＤＲ−ＳＤＲＡＭ４０に格納された波形テーブルデータを参照して読み出した各種音色の波形データに基づき同時発音する複数の発音チャンネル毎の楽音波形データを生成する。
【００１７】
ＤＳＰ３１では、ＣＰＵ１０からの指示がスレーブポートＳから供給されると共に、波形発生器３２が出力する各発音チャンネル毎の楽音波形データをマスターポートＭを介して受信する。また、ＤＳＰ３１では、受信した各発音チャンネル毎の楽音波形データの内、リバーブ等の信号遅延に係るエフェクトを付与すべき発音チャンネルの楽音波形データをマスタポートＭ経由でＤＤＲ−ＳＤＲＡＭ４０に送る。このＤＤＲ−ＳＤＲＡＭ４０における書き込み／読み出しで信号遅延された楽音波形データは、再びマスタポートＭ経由でＤＳＰ３１に戻る。
【００１８】
ＤＳＰ３１は、各発音チャンネル毎の楽音波形データをＩ２Ｓ（ＩＣ間サウンド）３３に出力する。Ｉ２Ｓ３３は、ＤＳＰ３１から供給された各発音チャンネル毎の楽音波形データを、Ｉ２Ｓフォーマットで外部出力する。具体的には、図示されていないサウンドシステムのＤ／Ａ変換部に入力されてアナログ形式の楽音波形に変換される。
【００１９】
［ＤＳＰ３１の構成］
次に、図２を参照してＤＳＰ３１の構成について説明する。図２は、ＤＳＰ３１の構成を示すブロック図である。この図において、インタフェース部３１０は、ＣＰＵバスのスレーブポートＳとしてＩ／Ｏ制御する。インタフェース部３１１は、Ｂｒｉｄｇｅ  Ａ  ＤＲＡＭコントローラ３１５のメモリバス用のマスタポートＭとしてＩ／Ｏ制御する。
【００２０】
インタフェース部３１２は、Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８のメモリバス用のマスタポートＭとしてＩ／Ｏ制御する。ＤＭＡコントローラ３１３は、波形発生器３２（図１参照）で発生した楽音波形データをＢｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８側へＤＭＡ転送したり、Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８側で遅延付加した楽音波形データをＩ２Ｓ３３（図１参照）にＤＭＡ転送する。
【００２１】
ＭＰ−ＲＡＭ３１４は、上記インタフェース部３１０を介してＣＰＵ１０から供給されるＤＳＰプログラムを記憶する。このＤＳＰプログラムに従って、後述する演算器３２３が波形信号処理を実行し、さらに後述のＢｒｉｄｇｅ  Ａ  ＤＲＡＭコントローラ３１５やＢｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８が、波形信号処理に必要な各種パラメータおよび楽音波形データを演算器３２３に供給する。
【００２２】
Ｂｒｉｄｇｅ  Ａ  ＤＲＡＭコントローラ３１５は、Ｐ−ＲＡＭ３１６に格納される波形信号処理用パラメータや、Ｖ−ＲＡＭ３１７に格納される補間処理用パラメータを演算器３２３に供給する。Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８は、Ｔ−ＲＡＭ３１９に格納される遅延信号処理用のプリフェッチサブプログラムに従い、ＤＭＡコントローラ３１３からＤＭＡ転送されて来る楽音波形データを、リングバッファとして機能する外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０）に対して書き込み／読み出しを行って遅延付加する。
【００２３】
Ｗ−ＲＡＭ３２０は、後述する演算器３２３のワークエリアとして用いられる。本願発明の第２のメモリ３２１ａであるＤ−ＲＡＭ（Ａ系統）３２１およびＤ−ＲＡＭ（Ｂ系統）３２２は、ＤＤＲ−ＳＤＲＡＭ４０のミラーリング用バッファとして機能する。本実施形態では、４ページ×２系統のＤ−ＲＡＭ（Ａ系統）３２１およびＤ−ＲＡＭ（Ｂ系統）３２２を用い、かつ複数サンプリング期間内に複数サンプリング分のプリフェッチ（先読み出し）を行ってＤＳＰプログラム進行との衝突を避ける。具体的には、ＤＳＰプログラム用バッファとプリフェッチプログラム用バッファとのダブルバッファ（４ページ×２系統）を設け、プリフェッチプログラム用バッファから４サンプリング分をまとめてバーストアクセスすることで外部メモリにアクセスする毎に生じるレイテンシ（遅延）によるパフォーマンス劣化を回避する。
【００２４】
本願発明の処理部３２３ａとしての演算部３２３は、算術論理演算器ＡＬＵ、乗累算器ＭＡＣおよびレジスタＲＥＧを備え、Ｗ−ＲＡＭ３２０をワークエリアとして、サンプリング周期毎の波形データについて、遅延フィードバック演算やフィルタ演算を施して楽音波形データを形成し、形成した楽音波形データに遅延信号処理を施してリバーブ等のエフェクトを付与する。演算部３２３でエフェクト付与された楽音波形データは、Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８からＤＭＡコントローラ３１３を経由してＩ２Ｓ３３（図１参照）にＤＭＡ転送される。
【００２５】
［ＤＤＲ−ＳＤＲＡＭ４０のメモリ構成］
次に、図３を参照してＤＤＲ−ＳＤＲＡＭ４０のメモリ構成について説明する。図３は、リングバッファとして機能するＤＤＲ−ＳＤＲＡＭ４０のアドレス変化を概略的に示す図である。この図は、実際のリングバッファの巡回アドレス空間を１次元のアドレス空間を備えた遅延メモリ（Ｄｅｌａｙ  ＲＡＭ）として表現し、これを時系列（サンプリングタイミング順）に並べた様子を図示している。
【００２６】
こうした遅延メモリ（Ｄｅｌａｙ  ＲＡＭ）において、Ｎサンプル目のデータは付与すべき遅延時間に対応した複数アドレスでライトＷ（書き込み）／リードＲ（読み出し）が行われる。この複数アドレスでのアクセスは、付与すべき遅延時間に対応するために離散的で連続しない。サンプリングタイミングＮ＋１、Ｎ＋２、Ｎ＋３と見ていくと、Ｎサンプル目と同じアクセスパターンを繰り返すが、リングバッファの場合、各アドレスがサンプリング毎に増加する。１サンプリング単位で見れば比較的離散的なアドレスだが、複数サンプリングで見ると、シーケンシャルなアドレス変化として捉えることが出来る。そこで、本発明では、この複数サンプリングに亘ってシーケンシャルなアドレスについてまとめてバーストアクセスすることを特徴とする。
【００２７】
［Ｄ−ＲＡＭ（Ａ系統）３２１およびＤ−ＲＡＭ（Ｂ系統）３２２のメモリ構成］
次に、図４は、Ｄ−ＲＡＭ（Ａ系統）３２１およびＤ−ＲＡＭ（Ｂ系統）３２２におけるページとバーストアクセスの関係を示す図である。上述したバーストアクセスを具現する為、本実施形態では、図４に図示する通り、Ｄ−ＲＡＭ（Ａ系統）３２１をＤＳＰプログラム用バッファ、Ｄ−ＲＡＭ（Ｂ系統）３２２をプリフェッチプログラム用バッファとし、プリフェッチプログラム用バッファから４サンプリング分をまとめてバーストアクセスする。具体的には、例えば図４においてＤ−ＲＡＭ（Ａ系統）３２１のページ０〜ページ３を逐次読み出ししている最中に、Ｄ−ＲＡＭ（Ｂ系統）３２２のページ４〜ページ７を一括読み出し（プリフェッチ４バーストアクセス）するようになっている。
【００２８】
次に、図５を参照してＤＳＰプログラム進行とプリフェッチプログラム進行との関係を説明する。上述したように、ＤＳＰプログラム進行では、Ｄ−ＲＡＭ（Ａ系統）３２１から４サンプルデータを逐次読み出す。これが図５中のプログラム進行時間「１」〜「４」に該当する。そして、このプログラム進行時間「１」〜「４」が進行中に、プリフェッチプログラム進行ＡによりＤ−ＲＡＭ（Ｂ系統）３２２から次の４サンプリング分「５」〜「８」をプリフェッチ４バーストアクセスする。そして、ＤＳＰプログラム進行が「５」〜「８」になると、次のプリフェッチプログラム進行Ｂがプリフェッチ４バーストアクセスする。以後、これを繰り返すことにより外部メモリにアクセスする毎に生じるレイテンシ（遅延）を回避してパフォーマンスの低下を防止する。
【００２９】
次に、図６を参照してプリフェッチプログラム進行を規定するプリフェッチサブプログラムコマンドについて説明する。前述したように、プリフェッチサブプログラムコマンドは、Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８内部のＴ−ＲＡＭ３１９（図２参照）に格納され、順次実行される。プリフェッチサブプログラムコマンドは、コマンドフィールドおよびアドレスフィールドから構成される。
【００３０】
コマンドフィールドには、「リードインクリメントアドレッシング」、「リードインクリメントアドレッシング＋修飾アドレス」、「ライトインクリメントアドレッシング」、「リード直接アドレス」、「ライト直接アドレス」および「ＮＯＰ（ｎｏ  ｏｐｅｒａｔｉｏｎ）」の何れかがセットされる。アドレスフィールドには、遅延する時間に関連したアドレス値がセットされる。
【００３１】
［Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８の構成］
次に、図７を参照してＢｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８の構成について説明する。Ｂｒｉｄｇｅ  Ｂ  ＤＲＡＭコントローラ３１８は、外部メモリインタフェース部３２４およびアービタ３２５から構成される。外部メモリインタフェース部３２４は、ＤＳＰスレーブポートコントロール信号およびアクセスカウンタインクリメントイネーブルＡＣＣＥに応じて、外部バスマスタインタフェースを介して外部メモリ（Ｅ−ＲＡＭ：ＤＤＲ−ＳＤＲＡＭ４０）にリード／ライトを指示したり、アービタ３２５に対してリード／ライトを指示したりする。
【００３２】
アービタ３２５は、外部メモリインタフェース部３２４からのアクセス要求（リード／ライト）に応じて、Ｄ−ＲＡＭ（Ａ系統）３２１およびＤ−ＲＡＭ（Ｂ系統）３２２が互いに干渉を起こすことなく独立してリード／ライト動作するよう調停する。具体的には、ＤＳＰスレーブポートを介したＤ−ＲＡＭへのアクセス要求を最優先させ、空タイミングで外部メモリ（Ｅ−ＲＡＭ：ＤＤＲ−ＳＤＲＡＭ４０）からプリフェッチデータを読み出したり、Ｄ−ＲＡＭから読み出したデータを外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０）に書き込む。
【００３３】
［外部メモリインタフェース部３２４の構成］
次に、図８を参照して外部メモリインタフェース部３２４の構成について説明する。図８において、カウンタＴＣは、Ｔ−ＲＡＭ３１９のアドレス値を指定する。カウンタＢＣは、バーストアクセス回数を計数するカウンタであり、カウンタＴＣの下位を形成する。カウンタＢＣがバーストカウントする毎にカウンタＴＣがインクリメントされる。
【００３４】
レジスタＲＥＧ１には、Ｄ−ＲＡＭ（Ａ系統）３２１又はＤ−ＲＡＭ（Ｂ系統）３２２のアドレス（以下、Ｄ−ＲＡＭアドレスと記す）がフェッチされる。すなわち、Ｔ−ＲＡＭ３１９（カウンタＴＣのアドレス値）で指定されるプリフェッチサブプログラムコマンド中のアドレスがレジスタＲＥＧ１にストアされる。
【００３５】
セレクタＳＥＬ５は、レジスタＲＥＧ１のＤ−ＲＡＭアドレス又は「ｐａｇｅｓｉｚｅ」の何れかを選択して出力する。セレクタＳＥＬ４は、加算器ＡＤＤ５の出力又は「０」の何れかを選択して出力する。加算器ＡＤＤ５は、上記セレクタＳＥＬ４，ＳＥＬ５の各出力を加算して得たＤ−ＲＡＭアドレスを発生する。つまり、レジスタＲＥＧ１のＤ−ＲＡＭアドレスに対して「０」あるいは「ｐａｇｅｓｉｚｅ」を加算し、逐次アクセスするアドレス又はバーストアクセスするアドレスを算出する。レジスタＤ  Ｒｄ  ａｄｒ  Ａは、加算器ＡＤＤ５の出力をフェッチする。
【００３６】
なお、レジスタＤ  Ｒｄ  ａｄｒ  Ａに設けられたＭＳＢ  Ｂｕｆｆｅｒ  ＳＥＬは、前述したＤ−ＲＡＭ（Ａ系統）３２１又はＤ−ＲＡＭ（Ｂ系統）３２２を選択する。Ｄ−ＲＡＭ（Ａ系統）３２１を選択した場合には、逐次アクセスするアドレスが用いられ、一方、Ｄ−ＲＡＭ（Ｂ系統）３２２を選択した場合には、バーストアクセスするアドレスが用いられる。
【００３７】
レジスタＲＥＧ２は、コントローラＣＴＬから供給される信号Ｄ  Ｒｄｙ  Ａを保持する。レジスタＤ  Ｒｄ  ａｄｒ  Ａのアドレスに応じて読み出されるデータＤ  Ｒｄ  Ｄａｔa  Ａは、レジスタＥ  Ｗｒ  Ｄａｔａを介してデータＥ  Ｗｒ  Ｄａｔaとして外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０）に書き込まれる。
【００３８】
コマンドレジスタＣＯＭ  ＲＥＧは、Ｔ−ＲＡＭ３１９のプリフェッチサブプログラムコマンドをフェッチする。レジスタＲＥＧ３は、Ｔ−ＲＡＭ３１９のプリフェッチサブプログラムコマンド中のアドレスをフェッチする。デコーダＤＥＣは、コマンドレジスタＣＯＭ  ＲＥＧにフェッチされたプリフェッチサブプログラムコマンドをデコードし、これにより得られたアクセスコマンドをレジスタＴＲＡＮＳ１〜ＴＲＡＮＳ３に保持する。
【００３９】
サンプリングカウンタＳＣは、サンプリング数を計数して出力する。レジスタＭＯＤＲは、アドレスモジュレーション値を保持する。セレクタＳＥＬ０は、「０」又はサンプリング数の何れかを選択して出力する。加算器ＡＤＤ１は、レジスタＲＥＧ３のプリフェッチサブプログラムコマンド中のアドレスに、セレクタＳＥＬ０の出力を加算する。セレクタＳＥＬ１は、「０」又はアドレスモジュレーション値の何れかを選択して出力する。加算器ＡＤＤ２は、加算器ＡＤＤ１の出力又はセレクタＳＥＬ１の出力の何れかを選択して出力する。
【００４０】
このように、サンプリングカウンタＳＣ乃至加算器ＡＤＤ２では、コントローラＣＴＬのセレクタ制御に従い、レジスタＲＥＧ３のプリフェッチサブプログラムコマンド中のアドレスにサンプリング数を加算して歩進させるか、あるいはアドレスモジュレーション値を更に加算して歩進させるようになっている。歩進されたプリフェッチサブプログラムコマンド中のアドレスは、レジスタＲＥＧ４に保持される。
【００４１】
セレクタＳＥＬ３は、「１」又は「０」の何れかを選択して出力する。セレクタＳＥＬ２は、レジスタＥ  Ａｄｒの出力又はレジスタＲＥＧ４のアドレスの何れかを選択して出力する。加算器ＡＤＤ４は、上記セレクタＳＥＬ２，ＳＥＬ３の各出力を加算したアドレスを発生する。レジスタＥ  Ａｄｒは、加算器ＡＤＤ４が算出するアドレスをインクリメントして外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０）のアドレスＥ  Ａｄｒを発生する。
【００４２】
アドレスＥ  Ａｄｒに応じて外部メモリから読み出されるデータＥ  Ｒｄ  Ｄａｔａは、レジスタＤ  Ｗｒ  Ｄａｔａ  Ｂを介してデータＤ  Ｗｒ  Ｄａｔa  ＢとしてＤ−ＲＡＭに書き込まれる。その書き込みアドレスは、コントローラＣＴＲからレジスタＤ  Ａｄｒ  Ｂにセットされる。
【００４３】
１／４回路は、アクセスカウンタインクリメントイネーブルＡＣＣＥのアクセス回数を１／４に減らし、４回のサンプリングアクセス巡回毎に１回のアクセスイネーブルを発生する。アクセスカウンタＡＣＣは、１／４回路が発生するアクセスイネーブルに応じてアクセス回数をインクリメントする一方、コントローラＣＴＬ側から供給されるデクリメントイネーブルＤＥＣＥに応じてアクセス回数をデクリメントする。
【００４４】
［外部メモリインタフェース部３２４の動作］
次に、図９に図示する外部メモリインタフェース部３２４のタイミングチャートを参照して動作説明する。以下では、クロックＣＬＫのフェーズに対応して外部メモリインタフェース部３２４の動作を説明する。外部メモリインタフェース部３２４では、アクセスカウンタＡＣＣが「０」でないこと、レジスタＣＯＭ  ＲＥＧにコマンドが無いことを起点としてアクセス動作を開始する。
【００４５】
先ず、クロック「１」フェーズでは、アクセスカウンタＡＣＣが「０」でないことに対応して、カウンタＢＣがインクリメントを開始すると、Ｔ−ＲＡＭ３１９の先頭コマンドＲＤ０がパイプラインに流れる。その後、カウンタＢＣのインクリメントに従い、Ｔ−ＲＡＭ３１９のコマンドＲＤ１、ＲＤ２、ＲＤ３がバースト用として発行される。
【００４６】
一方、Ｄ−ＲＡＭアドレスパイプラインの方は、カウンタＴＣのアドレス値Ｎがコピーされ、続いてページアドレス＋ｐａｇｅが加算されたアドレスが発行されてレジスタＤ  Ｒｄ  ＡＤＲ  Ａに保持される。
【００４７】
Ｔ−ＲＡＭアドレスフィールドは、レジスタＲＥＧ３からパイプラインで＋ＳＣ＋ＭＯＤＲが加算され、これにより外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０）のアドレスが算出される。外部メモリに対しては、レジスタＴＲＡＮＳ２でアクセスリクエストがアサートされるが、外部から信号Ｅ  Ｒｄｙがディアサートされる。この為、クロック「５」〜「９」ではウェイト（待ち）が発生している。
【００４８】
そして、信号Ｅ  Ｒｄｙがアサートされて再び実行を開始すると、外部メモリ（ＤＤＲ−ＳＤＲＡＭ４０：Ｅ−ＲＡＭ）からのリードデータＥ  Ｒｄ  Ｄａｔa（ＲＤ  ＤＡＴＡ０，ＲＤ  ＤＡＴＡ１，ＲＤ  ＤＡＴＡ２およびＲＤ  ＤＡＴＡ３）がレジスタＤ  Ｗｒ  Ｄａｔa  Ｂに格納され、Ｄ−ＲＡＭに書き込むデータ（ＲＤ  ＤＡＴＡ０，ＲＤ  ＤＡＴＡ１，ＲＤ  ＤＡＴＡ２およびＲＤ  ＤＡＴＡ３）となる。
【００４９】
次に、クロック「１０」フェーズからはＤ−ＲＡＭから外部メモリへの書き込みが行われる。外部メモリへの書き込みを行う場合には、書き込むべきデータをＤ−ＲＡＭ側から読み出す必要が生じる。この為、クロック「１２」において信号Ｄ  Ｒｅｑ  Ａがアサートされるが、このタイミング（クロック「１２」の立ち上がり）では、先ほどのＤ−ＲＡＭへの書き込みとコンフリクトするので、信号Ｄ  Ｒｄｙ  Ａがディアサートされてクロック「１２」、「１３」でウェイト（待ち）が発生する。
【００５０】
そして、信号Ｄ  Ｒｄｙ  Ａがアサートされ次第、Ｄ−ＲＡＭからのリードデータＤ  ＲＤ  Ｄａｔａ（ＷＲ  ＤＡＴＡ０，ＷＲ  ＤＡＴＡ１，ＷＲ  ＤＡＴＡ２およびＷＲ  ＤＡＴＡ３）がレジスタＥ  Ｗｒ  Ｄａｔａに格納され、順次外部メモリ（Ｅ−ＲＡＭ：ＤＤＲ−ＳＤＲＡＭ４０）に書き込まれる。
【００５１】
ところで、この外部メモリへの書き込みの過程で、クロック「１５」〜「１８」では、信号Ｅ  Ｒｄｙがディアサートされている為にウェイト状態が発生している。こうした書き込み過程でのウェイトがＤＳＰプログラム進行において発生した場合には、そのまま処理低下の原因になるが、前述したプリフェッチプログラム進行ではプリフェッチ４バーストアクセスするので、その影響を回避出来る。
【００５２】
図８におけるＳＥＬ４、ＳＥＬ５、ＡＤＤ５、Ｄ  Ｒｄ  ａｄｒ  Ａ、及びＤ  Ｗｒ  Ｄａｔａ  Ｂにより本願発明の第１のメモリコントローラ３３０ａを構成し、ＲＥＧ４、ＳＥＬ２、ＳＥＬ３、ＡＤＤ４、Ｅ  Ａｄｒ、及びＥ  Ｗｒ  Ｄａｔａにより第２のメモリコントローラ３３０ｂを構成する。
【００５３】
以上説明したように、本実施形態では、ＤＳＰプログラム用バッファとプリフェッチプログラム用バッファとのダブルバッファ（４ページ×２系統）を設け、プリフェッチプログラム用バッファから４サンプリング分をまとめてバーストアクセスすることで外部メモリにアクセスする毎に生じるレイテンシ（遅延）によるパフォーマンス劣化を回避することが出来る。また、外部メモリにアクセスする毎に生じるレイテンシ（遅延）の影響を除去することでＤＳＰ自体の処理能力が向上し、同時に処理できるエフェクトの数を増やすことも可能になる。加えて、ＤＳＰの処理能力の向上によりバス占有率が下がる結果、楽器システム全体の処理能力の向上も期待できる。
【００５４】
また、本願発明に係る信号処理装置の機能を、ソフトウエアプログラムによりコンピュータの処理に実現することも可能である。
【００５５】
以上、本発明の実施形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００５６】
以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
（付記）
［請求項１］
第１のメモリ内の連続する複数のアドレスに記憶されている複数サンプリング周期分のデータを読み出すとともに、当該読み出された複数サンプリング周期分のデータを第２のメモリに書き込む第１のメモリコントローラと、
前記第２のメモリに書き込まれている複数サンプリング周期分のデータを、これら各サンプリング周期に対応するデータ毎に読み出して処理し、当該処理されたデータを前記第２のメモリに書き込む処理部と、
前記第２のメモリに書き込まれている複数サンプル周期分のデータを読み出すとともに、当該読み出されたデータを前記第１のメモリの連続するアドレスに書き込む第２のメモリコントローラと、
を備えた信号処理装置。
【００５７】
［請求項２］
前記第１のメモリは、リングバッファ形状に構成され、前記第１のメモリに記憶されたデータのアドレスを、サンプリング周期でシフトすることにより、遅延処理を実行する遅延処理部をさらに有する請求項１に記載の信号処理装置。
【００５８】
［請求項３］
前記第２のメモリは、前記複数サンプリング周期分のデータを、サンプリング周期毎に分割して記憶する複数のページエリアを備えた請求項１または請求項２に記載の信号処理装置。
【００５９】
［請求項４］
前記処理装置は、サンプリング周期毎に、当該サンプリング周期に対応するページエリアにあるデータを読み出して処理し、当該処理されたデータを前記読み出しページエリアに書き込む処理部と、請求項１乃至請求項３のいずれかに記載の信号処理装置。
【００６０】
［請求項５］
前記信号処理装置は、前記第のメモリを外付けとし、前記第２のメモリを内蔵した請求項１乃至４に記載の信号処理装置。
【００６１】
［請求項６］
信号処理装置に用いられる信号処理方法であって、前記信号処理装置は、
第１のメモリ内の連続する複数のアドレスに記憶されている複数サンプリング周期分のデータを読み出すとともに、当該読み出された複数サンプリング周期分のデータを第２のメモリに書き込み、
前記第２のメモリに書き込まれている複数サンプリング周期分のデータを、これら各サンプリング周期に対応するデータ毎に読み出して処理し、当該処理されたデータを前記第２のメモリに書き込み、
前記第２のメモリに書き込まれている複数サンプル周期分のデータを読み出すとともに、当該読み出されたデータを前記第１のメモリの連続するアドレスに書き込む、信号処理方法。
【００６２】
［請求項７］
信号処理装置として用いられるコンピュータに、
第１のメモリ内の連続する複数のアドレスに記憶されている複数サンプリング周期分のデータを読み出すとともに、当該読み出された複数サンプリング周期分のデータを第２のメモリに書き込むステップと、
前記第２のメモリに書き込まれている複数サンプリング周期分のデータを、これら各サンプリング周期に対応するデータ毎に読み出して処理し、当該処理されたデータを前記第２のメモリに書き込むステップと、
前記第２のメモリに書き込まれている複数サンプル周期分のデータを読み出すとともに、当該読み出されたデータを前記第１のメモリの連続するアドレスに書き込むステップと、
を実行させるプログラム。
【００６３】
［請求項８］
演奏データを入力する演奏操作子と、
第１および第２のメモリと、
前記演奏データに応じて楽音を形成する、前記請求項１乃至３のいずれかに記載の信号処理装置と、
を備える電子楽器。
【符号の説明】
【００６４】
１０…ＣＰＵ
２０…ＳＲＡＭ
３０…音源
３１…ＤＳＰ
３２…波形発生器
３３…Ｉ２Ｓ
３４…ＵＡＲＴ
３５…Ｉ／Ｆ
３６…Ｉ／Ｆ
４０…ＤＤＲ−ＳＤＲＡＭ
５０…ＮＡＮＤ  ＦＬＡＳＨ
１００…楽器システム
【図１】
0006607369.tif 000002
【図２】
0006607369.tif 000003
【図３】
0006607369.tif 000004
【図４】
0006607369.tif 000005
【図５】
0006607369.tif 000006
【図６】
0006607369.tif 000007
【図７】
0006607369.tif 000008
【図８】
0006607369.tif 000009
【図９】
0006607369.tif 000010
【図１０】
0006607369.tif 000011