(57)【特許請求の範囲】
【請求項１】
装置全体の制御を行う制御プロセッサと、サンプリング周期毎に予め定められた演算処理を実行する信号処理プロセッサと、前記制御プロセッサと前記信号処理プロセッサとでアクセス可能な共有メモリとを有する信号処理装置において、
前記制御プロセッサから前記共有メモリへのアクセスを、前記信号処理プロセッサからの前記共有メモリへのアクセスに優先させるように制御するアクセス制御部を備え、
前記信号処理プロセッサは、
前記演算処理の動作を規定するプログラムを格納するプログラムメモリと、
前記プログラムメモリから前記プログラムを読み出す読出部と、
前記読出部により読み出された前記プログラムに従って入力データに演算処理を施して出力データを生成するとともに、前記出力データの生成過程で生ずる中間データを前記プログラムで指定されるタイミングにおいて入出力する演算部と、
前記中間データを前記共有メモリに書き込むための書込アドレスと、前記共有メモリから前記中間データを読み出すための読出アドレスとを生成するアドレス発生部と、
前記アドレス発生部が生成した書込アドレスまたは読出アドレスをバッファリングする第１バッファ部と、
前記演算部から出力された前記中間データをバッファリングする第２バッファ部と、
前記共有メモリから読み出された中間データをバッファリングする第３バッファ部と、
前記制御プロセッサが前記共有メモリにアクセスしていない期間を検知し、当該期間においては、前記第１バッファ部にバッファリングされている前記書込アドレスまたは前記読出アドレスが前記共有メモリに出力されるように前記第１バッファ部を制御するとともに、前記第１バッファ部から前記書込アドレスが出力される場合には前記第２バッファ部にバッファリングされている前記中間データが前記共有メモリに出力されるように前記第２バッファ部を制御し、前記第１バッファ部から前記読出アドレスが出力される場合には前記共有メモリから読み出された前記中間データをバッファリングするように前記第３バッファ部を制御し、一方、前記プログラムで指定されるタイミングにおいては、前記書込アドレスまたは前記読出アドレスをバッファリングするように前記第１バッファ部を制御するとともに、前記第１バッファ部が書込アドレスをバッファリングする場合には、前記演算部から出力された中間データをバッファリングするように前記第２バッファ部を制御し、前記第第１バッファ部が読出アドレスをバッファリングする場合には、前記第３バッファ部にバッファリングされている前記中間データが前記演算部に出力されるように前記第３バッファ部を制御する制御部と
を有することを特徴とする信号処理装置。
【請求項２】
前記制御部は、１サンプリング周期内に必要とされる前記共有メモリへのアクセス回数が満たされないことを事前に検知した場合、前記制御プロセッサに対して前記共有メモリへのアクセスを停止するよう指令することを特徴とする請求項１に記載の信号処理装置。
【請求項３】
前記制御部は、前記第１バッファ部にバッファリングされている書込アドレス及び読出アドレスの数が１サンプリング周期内の全アクセス回数以上になったことを検知した場合、前記制御プロセッサに対して前記共有メモリへのアクセスを停止するように指令することを特徴とする請求項１に記載の信号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵとＤＳＰでＲＡＭを兼用するのに好適な信号処理装置に関する。
【０００２】
【従来の技術】
電子楽器では、波形発生器から出力される波形信号にデジタル処理を施して、所望の出力波形信号を得て、これをサウンドシステムに供給して発音を行うことが行われる。
この場合、電子楽器の各構成部分を制御するＣＰＵ（中央演算処理装置）とは別に、波形信号にデジタル処理を施すＤＳＰ（デジタル シグナル プロセッサ）を用いて、リアルタイムに波形処理が施されることが多い。
【０００３】
【発明が解決しようとする課題】
ところで、ＣＰＵは、その作業領域としてのＲＡＭと接続され、必要に応じてＲＡＭにアクセスし、データの読出書込を行う。一方、ＤＳＰは、波形処理の演算アルゴリズムで必要とされるデータ遅延のため、演算途中のデータをＲＡＭに一旦書き込んで、これを読み出して遅延されたデータを得ることがある。この場合、ＣＰＵとＤＳＰに個別にＲＡＭを設けると、２つのＲＡＭが必要となるので、回路が大規模となり、さらに配線も複雑になるという欠点がある。
【０００４】
そこで、この点を解消するため、２つのプロセッサでＲＡＭを兼用する技術が開発されている。この技術は、ＲＡＭへのアクセスに関するタイムスロットを時分割で行うものであって、予めタイムスロットをＣＰＵとＤＳＰに交互に割り振っておくものである。また、固定のタイムスロットで時分割を行う代わりに、ＤＳＰとＣＰＵのＲＡＭアクセスが重なったときにＣＰＵにＷＡＩＴをかけ、ＤＳＰによるＲＡＭアクセスを優先させて行い、ＣＰＵはＤＳＰによるアクセスが行われていない期間を利用してＲＡＭアクセスを行うようにする方法も提案されている。しかしながら、ＣＰＵに連続してＲＡＭをアクセスする必要が生じても、ＤＳＰに割り振られたタイムスロットでは、ＣＰＵはＲＡＭにアクセスすることができないので、それだけＣＰＵは待たされることになる。この結果、ＣＰＵのＲＡＭに対するアクセス速度が低下し、これに伴ってＣＰＵの動作速度が低下する。したがって、ＣＰＵは本来の性能を十分発揮することができないといった問題があった。また、ＣＰＵによるＲＡＭアクセスをＤＳＰに優先させることも考えられるが、ＤＳＰはシステムクロックに同期してマイクロプログラムを実行することにより動作しており、ＣＰＵのようにＷＡＩＴをかけることができないので、従来のＤＳＰでそれを実現することは不可能であった。
【０００５】
本発明は、上述した事情に鑑みてなされたものであり、動作速度を低下させることなく、２つのプロセッサで１つのメモリを共有することを目的とする。
【０００６】
【課題を解決するための手段】
上記課題を解決するため、請求項１に記載の発明にあっては、装置全体の制御を行う制御プロセッサと、サンプリング周期毎に予め定められた演算処理を実行する信号処理プロセッサと、前記制御プロセッサと前記信号処理プロセッサとでアクセス可能な共有メモリとを有する信号処理装置において、前記制御プロセッサから前記共有メモリへのアクセスを、前記信号処理プロセッサからの前記共有メモリへのアクセスに優先させるように制御するアクセス制御部を備え、前記信号処理プロセッサは、前記演算処理の動作を規定するプログラムを格納するプログラムメモリと、前記プログラムメモリから前記プログラムを読み出す読出部と、前記読出部により読み出された前記プログラムに従って入力データに演算処理を施して出力データを生成するとともに、前記出力データの生成過程で生ずる中間データを前記プログラムで指定されるタイミングにおいて入出力する演算部と、前記中間データを前記共有メモリに書き込むための書込アドレスと、前記共有メモリから前記中間データを読み出すための読出アドレスとを生成するアドレス発生部と、前記アドレス発生部が生成した書込アドレスまたは読出アドレスをバッファリングする第１バッファ部と、前記演算部から出力された前記中間データをバッファリングする第２バッファ部と、前記共有メモリから読み出された中間データをバッファリングする第３バッファ部と、前記制御プロセッサが前記共有メモリにアクセスしていない期間を検知し、当該期間においては、前記第１バッファ部にバッファリングされている前記書込アドレスまたは前記読出アドレスが前記共有メモリに出力されるように前記第１バッファ部を制御するとともに、前記第１バッファ部から前記書込アドレスが出力される場合には前記第２バッファ部にバッファリングされている前記中間データが前記共有メモリに出力されるように前記第２バッファ部を制御し、前記第１バッファ部から前記読出アドレスが出力される場合には前記共有メモリから読み出された前記中間データをバッファリングするように前記第３バッファ部を制御し、一方、前記プログラムで指定されるタイミングにおいては、前記書込アドレスまたは前記読出アドレスをバッファリングするように前記第１バッファ部を制御するとともに、前記第１バッファ部が書込アドレスをバッファリングする場合には、前記演算部から出力された中間データをバッファリングするように前記第２バッファ部を制御し、前記第第１バッファ部が読出アドレスをバッファリングする場合には、前記第３バッファ部にバッファリングされている前記中間データが前記演算部に出力されるように前記第３バッファ部を制御する制御部とを有することを特徴とする。
【０００７】
また、請求項２に記載の発明にあっては、前記制御部は、１サンプリング周期内に必要とされる前記共有メモリへのアクセス回数が満たされないことを事前に検知した場合、前記制御プロセッサに対して前記共有メモリへのアクセスを停止するよう指令することを特徴とする。
【０００８】
また、請求項３に記載の発明にあっては、前記制御部は、前記第１バッファ部にバッファリングされている書込アドレス及び読出アドレスの数が１サンプリング周期内の全アクセス回数以上になったことを検知した場合、前記制御プロセッサに対して前記共有メモリへのアクセスを停止するように指令することを特徴とする。
【０００９】
【発明の実施の形態】
Ａ．実施形態の構成
本実施形態においては、本発明に係わる信号処理装置の一例として、電子楽器を取りあげ説明する。
１．実施形態の全体構成
図１は、本発明の一実施形態である電子楽器の全体構成を示すブロック図である。図において、１はＭＩＤＩインターフェースであって、ＭＩＤＩデータの入出力を行う。２はネットワークインターフェースであって、通信回線を介して発音データや制御信号の送受信を行う。３は表示器であって、音量やＭＩＤＩデータによって指定される音色等がそこに表示される。４は設定操作子であって、演奏者がこれを操作すると、音色や音量あるいは各種のエフェクトが指定できるようになっている。５はハードディスクであって、ＭＩＤＩデータ等が格納される。６は、リムーバブルディスクであって、フロッピーディスク等の可搬型の記録媒体が該当する。このリムーバブルディスクには、ＭＩＤＩデータ等が図示せぬ読出書込装置を介して書き込まれ、また、読み出される。７はタイマであって、時間の計測を行う。８はＲＯＭであって、そこには装置全体を制御する制御プログラム等が格納されている。
【００１０】
次に、９はＣＰＵであって、ＣＰＵバス１６を介して装置の各部分と接続され、制御プログラムに従って装置全体を制御する。また、ＣＰＵ９は、ＭＩＤＩインターフェース１からの演奏入力に応じて、波形発生器１０やＤＳＰ１１で生成する楽音の制御を行う。例えば、ノートオンが入力した場合、このノートオンに対し、波形発生器１０の発音チャンネルを割当て、割り当てたチャンネルにおいて当該ノートオンに対応した楽音の発生を指示する。
【００１１】
次に、波形発生器１０は、複数の発音チャンネルを有しており、それぞれ時分割動作を行う低周波発振器ＯＳＣ、ディジタルフィルタＤＣＦ、エンベロープ発生器ＥＧ、およびチャンネル累積器ＡＣＣ等で構成される。各発音チャンネルは、各々独立しており、複数の楽音データを発生できるようになっている。発生された楽音データは混合され、波形データとして出力される。ここで波形データのサンプル周波数は、４４．１ＫＨｚであり、波形発生器１０には、その周波数が４４．１ＫＨｚのサンプルクロックＦｓが供給される。また、ＣＰＵ９は、サンプルクロックＦｓに同期したシステムクロックφで動作しており、その周波数は５．６４４８ＭＨｚ（＝１２８＊Ｆｓ）に設定されている。したがって、ＣＰＵ９は波形データの１サンプル期間に１２８ステップの処理を行うことができる。なお、システムクロックφは図示せぬ水晶発振回路によって生成され、これを１２８分周してサンプルクロックＦｓが生成される。
【００１２】
また、ＤＳＰ１１は、波形発生器１０からの波形データに加減乗除等の演算処理を施す。これにより、リバーブ、ディストーションまたはコーラスといったエフェクト効果を得ることができる。ここで、ＤＳＰ１１はシステムクロックφによって動作する。上述したようにシステムクロックφはサンプルクロックＦｓに同期しており、φ＝１２８Ｆｓの関係があるから、ＤＳＰ１１は、波形データに同期して１サンプル当たり１２８ステップの演算処理を行うことが可能である。そして、ＤＳＰ１１で波形処理を施された波形データはＤＡコンバータ（ＤＡＣ）１４によってアナログ信号に変換され、これがサウンドシステム１５に供給されると、発音されるようになっている。なお、本実施例では、簡単化のために（マイクロプログラムのステップ数）＝（１サンプリング周期内の遅延メモリアクセス数）として説明を行うが、必ずしもそうである必要はない。ＤＳＰの遅延メモリに対するアクセス頻度を、マイクロプログラムの３ステップに１回とか、４ステップに１回にしても良い。
【００１３】
次に、１２は接続制御部であって、ＣＰＵバス１６およびＤＳＰ１１とＲＡＭ１３に接続される。この接続制御部１２は、ＣＰＵ９からＲＡＭ１３へのアクセスをＤＳＰ１１からＲＡＭ１３へのアクセスに優先させるように制御する。また、ＲＡＭ１３はＣＰＵ９の作業領域として使用されるとともに、ＤＳＰ１１からのデータを遅延させる遅延メモリとして動作する。
【００１４】
２．主要部の構成
図２は、本実施形態に係わる電子楽器の主要部の構成を示すブロック図である。図において、ＣＰＵバス１６は、コントロールバスｂ１、読出書込バスｂ２、アドレスバスｂ３、およびデータバスｂ４から構成される。そして、ＣＰＵ９は、読出動作または書込動作を指示する判定信号ＲＷを読出書込バスｂ２に出力し、アドレス信号ＡＤをアドレスバスｂ３に出力し、読出動作ではデータバスｂ４上のデータＤを取り込むと共に、書込動作では書き込もうとするデータＤをデータバスｂ４に出力する。判定信号ＲＷはハイレベルで読出を指示し、ローレベルで書込を指示する。また、アドレス信号ＡＤは、ＲＡＭ１３，ＲＯＭ８，ＤＳＰ１１、ＭＩＤＩインターフェース１といったアクセス先の別と、該アクセス先の内部における個別のアドレス指定を行う。
【００１５】
また、アドレスデコーダ１６はアドレス信号ＡＤをデコードして、アクセス先を指示する制御信号ＣＳ１〜ＣＳ３を生成する。各制御信号ＣＳ１〜ＣＳ３はハイレベルでアクティブを指示する。例えば、ＣＰＵ９がＲＡＭ１３にアクセスする場合には、制御信号ＣＳ２をハイレベルにして、その他の構成部分に送出する制御信号ＣＳ１，ＣＳ２をローレベルにする。これによって、アドレスバスｂ３上のアドレス信号ＡＤがＲＡＭ１３に対するアドレスであることが判る。また、図１のＭＩＤＩインターフェース１等、その他のブロックについても同様であり、各ブロックにはそれぞれアドレスデコーダが備えられており、それぞれ対応するアドレスによりアクセスされる。
【００１６】
次に、ＤＳＰ１１は、ＣＰＵ９の制御の下、波形データの演算処理を行う。演算処理は、マイクロプログラムと制御データに基づいて行われる。ＤＳＰ１１には、ＣＰＵ９からＣＰＵバス１６を介して、マイクロプログラムと制御データが転送される。また、ＤＳＰ１１はＲＡＭ１３のデータ入出力端子と接続されており、ＲＡＭ１３に演算途中のデータＤを一旦書き込み、所定時間が経過した後これを読み出すようになっている。これにより、ＤＳＰ１１はＲＡＭ１３を遅延メモリとして使用する。なお、ＤＳＰ１１の詳細な構成については後述する。
【００１７】
次に、接続制御部１２はバッファ１２１とセレクタ１２２によって構成される。バッファ１２１は、スリーステート形式で構成されており、端子ｄｉｒのレベルと端子ＥＮのレベルに基づいて、端子Ａから端子ＢにデータＤを伝送するモード、端子Ｂから端子ＡにデータＤを伝送するモード、あるいは端子Ａ，Ｂをともにハイインピーダンス状態するモードを各々選択できるようになっている。
【００１８】
まず、端子Ａ，Ｂをともにハイインピーダンス状態するか否かは、端子ＥＮのレベルに基づいて制御される。端子ＥＮのレベルがハイレベルであれば、データ伝送が行われ、一方、端子ＥＮのレベルがローレベルであれば、端子Ａ，Ｂをともにハイインピーダンス状態となる。このため、端子ＥＮのレベルがローレベル期間中は、データ伝送が行われない。この端子ＥＮには、図に示すように制御信号ＣＳ２が供給されるので、ＣＰＵ９がＲＡＭ１３にアクセスする期間にデータ伝送が行われ、他の期間ではＲＡＭ１３とデータバスｂ４との間が非接続状態となる。なお、ＤＳＰ１１からＲＡＭ１３へのアクセスは、当該他の期間を利用して行われる。
【００１９】
また、セレクタ１２２は２つの信号のうちいずれか一方を選択して出力する選択回路を２系統備えたものである。その端子Ｓがハイレベルの場合、セレクタ１２２は入力端子Ｂ１，Ｂ２に供給される信号を出力端子Ｙ１，Ｙ２に出力する。ここで、端子Ｓには、ＣＰＵ９がＲＡＭ１３にアクセスする場合にのみハイレベルとなる制御信号ＣＳ２が供給されるから、ＣＰＵ９がＲＡＭ１３にアクセスしようとすると、ＣＰＵ９からの判定信号ＲＷが入力端子Ｂ１、出力端子Ｙ１を介してＲＡＭ１３に出力されるとともに、ＣＰＵ９からのアドレス信号ＡＤが入力端子Ｂ２、出力端子Ｙ２を介してＲＡＭ１３に供給される。この場合には、上述したようにバッファ１２１は、データ伝送を行う。したがって、ＣＰＵ９は、必要とされる時に制御信号ＣＳ２をハイレベルにしてＲＡＭ１３にアクセスすることができる。このため、ＣＰＵ９はＤＳＰ１１に優先してＲＡＭ１３を使用することができる。
一方、端子Ｓがローレベルの場合、セレクタ１２２は入力端子Ａ１，Ａ２に供給される信号を出力端子Ｙ１，Ｙ２に出力すると共にバッファ１２１が非接続状態となり、ＤＳＰ１１はＲＡＭ１３に対するアクセスが可能になる。
【００２０】
３．ＤＳＰの構成
次に、ＤＳＰの詳細な構成を説明する。図３はＤＳＰの詳細な構成を示すブロック図である。図に示すように、ＤＳＰ１１は、ＣＰＵバス１６と接続されるＣＰＵインターフェース１１２を備えており、これによって、ＣＰＵ９から送信されるマイクロプログラムや、制御データ等の受信が行われる。マイクロプログラムは、波形演算部１１５で行う各種の演算処理やＲＡＭ１３との間で行うデータの読出書込処理を指示する。また、制御データは、波形演算部１１５で行う演算処理の定数やＲＡＭ１３への書込読出の基準となる基準書込アドレスＷＡｒ，基準読出アドレスＲＡｒを指定する。なお、実際にＲＡＭ１３へアクセスする際に用いる読出アドレスＲＡと書込アドレスＷＡは、基準書込アドレスＷＡｒ，基準読出アドレスＲＡｒに基づいて後述するアドレス発生器１１８で生成される。
【００２１】
受信したマイクロプログラムはマイクロプログラムメモリ１１３に格納され、一方、受信した制御データは制御レジスタ１１１に格納される。制御レジスタ１１１は、１２８個のレジスタから構成されており、各レジスタに制御データが各々格納される。そして、システムクロックφに同期して各レジスタから制御データが順次読み出されるようになっている。
【００２２】
次に、読出回路１１４は、７ビットのリングカウンタ等で構成される。このリングカウンタでシステムクロックφをカウントすると、そのカウント値がアドレスとして出力される。この場合、アドレスは０〜１２７を巡回する。このアドレスがマイクロプログラムメモリ１１３に供給されると、マイクロプログラムが１ステップ毎順次読み出される。
【００２３】
ここで、マイクロプログラムの一例を図４に示す。図に示すようにマイクロプログラムは１２８ステップで構成されており、システムクロックに同期した各ステップ毎の各構成部分の動作を規定している。サンプルクロックφの周波数は、上述したようにサンプルクロックＦｓの１２８倍に設定されているから、第０ステップ〜第１２７ステップのプログラムは１サンプルクロックＦｓ内で読み出される。また、読出回路１１４で生成されるアドレスは０〜１２７を巡回するから、第１２７ステップの読出が終了すると、その次には第０ステップに戻ってマイクロプログラムが読み出される。この図において第９ステップに示すＩＮは、波形入力部１１６でラッチされた波形データを波形演算部１１５に取り込むことを指示しており、一方、第１２４ステップに示すＯＵＴは、波形演算部１１５から波形データを出力することを指示している。すなわち、この例によれば、波形演算部１１５には１サンプルクロックＦｓ毎に、波形データの入出力を行う指示がなされる。
なお、ＤＳＰ１１は、上述したＩＮおよびＯＵＴのタイミングで波形データの入出力を行いながらＲＡＭ１３のアクセスを行うことも可能である。また、音源１０が複数系統の出力を有している場合には複数ステップで複数の波形データの入力を行い、ＤＡＣおよびサウンドシステムがステレオの場合には２ステップで２つの波形データの出力を行う。
【００２４】
また、第６，第１２，第１２７ステップのＷ１，Ｗ２，Ｗ１７は書込命令であって、このタイミングでデータＤを書き込むことを指示する。読出回路１１４は書込命令を判別して、書込期間でハイレベルとなり、他の期間でローレベルとなる書込信号Ｗを生成している。また、第１〜第３，第７，第１２２ステップのＲ１〜Ｒ４，Ｒ３９は、読出命令であって、このタイミングでデータＤを読み出すことを指示する。読出回路１１４は読出命令を判別して読出期間でハイレベルとなり、他の期間でローレベルとなる読出信号Ｒを生成している。
【００２５】
また、読出命令に同期して基準読出アドレスＲＡｒが制御レジスタ１１１から読み出され、また、書込命令に同期して基準書込アドレスＷＡｒが制御レジスタ１１１から読み出される。逆にいえば、マイクロプログラムの進行に応じて必要な制御データが読み出せるように、制御レジスタ１１１には各制御データが格納されている。
【００２６】
次に、波形演算部１１５では、読出回路１１４から出力される命令に基づいて、各種の演算処理が実行され、これによって、リバーブやディストーションといったエフェクト効果を得ることができる。ところで、リバーブは音を響かせるものあって、例えば、過去の波形レベルに係数を乗算したものを現在のレベルと加算することによって得られる。この場合には、遅延した波形データに係数を乗算し、これと現在の波形データを加算することが行われる。このように、波形演算部１１５で行われる演算処理には、過去の波形データが必要とされる場合がある。ここで、遅延時間が短時間であれば波形演算部１１５の内部レジスタが使用されるが、遅延時間が長時間の場合にはＲＡＭ１３が使用される。なお、波形演算部１１５から出力されるＭＤは変調データであって、これによって、波形データに周波数変調ないし位相変調を施すことができる。
【００２７】
次に、アドレス発生器１１８について説明する。図５はアドレス発生器の回路図である。なお、この例では、ＲＡＭ１３の全記憶領域のうちスタートアドレスＡＤｓで始まる２５６ｋ（18bit）ワードの記憶領域をＤＳＰ１１に割り当ている。図において、カウンタ２０は１８ビットのリングカウンタである。そのクロック入力端子にはサンプルクロックＦｓが供給され、このカウンタ２０によって、サンプルクロックＦｓが０から２５６ｋ−１までカウントされる。ここで、カウント値が２５６ｋ−１の状態において、次のサンプルクロックＦｓが入力すると、カウント値が０に戻る。したがって、カウント値は０から２５６ｋ−１までの値を巡回する。
【００２８】
次に、加算器２１は、カウンタ２０のカウント値と基準書込アドレスＷＡｒまたは基準読込アドレスＷＡｒと、変調データＭＤの加算を行う。この加算器２１は１８ビットのフルアダーで構成される。ところで、上述したようにカウンタ２０のカウント値は１８ビット、基準書込アドレスＲＡｒは７ビットである。また、変調データＭＤは例えば８ビットである。したがって、加算器２１の加算結果は１８ビットを越えることがあるが、１９ビット以上は用意されていないので、上位ビットがマスクされることになる。
【００２９】
次に、加算器２２は加算器２１の出力とスタートアドレスＡＤｓと加算して、実際にＲＡＭ１３にアクセスするための書込アドレスＷＡ，読出アドレスＲＡを生成してこれを図３に示すＦＩＦＯＡ１２１のデータ入力端子に出力する。
【００３０】
例えば、１サンプルクロックＦｓ当たり３回のデータ書込読出を行うものとし、これらのデータ書込に用いる基準書込アドレスＷＡｒを、ＷＡｒ１，ＷＡｒ２，ＷＡｒ３、データ読出に用いる基準読出アドレスＲＡｒを、ＲＡｒ１，ＲＡｒ２，ＲＡｒ３とする。いま、カウンタ２０のカウント値が０で、また、変調データＭＤを無視するものとする。この状態において加算器２２から出力される書込アドレスＷＡは、ＷＡ１＝ＷＡｒ１＋ＡＤｓ、ＷＡ２＝ＷＡｒ２＋ＡＤｓ、ＷＡ３＝ＷＡｒ３＋ＡＤｓとなる。ここで、カウンタ２０にサンプルクロックＦｓが１００個入力したとすると、書込アドレスＷＡは、ＷＡ１＝ＷＡｒ１＋ＡＤｓ＋１００、ＷＡ２＝ＷＡｒ２＋ＡＤｓ＋１００、ＷＡ３＝ＷＡｒ３＋ＡＤｓ＋１００となり、各書込アドレスＷＡ１〜ＷＡ３で指定される記憶領域にデータＤ１〜Ｄ３が書き込まれる。
【００３１】
ここで、基準読出アドレスＲＡが、ＲＡｒ１＝ＷＡｒ１−１０、ＲＡｒ２＝ＷＡｒ２−２０、ＲＡｒ３＝ＷＡｒ３−３０であって、カウンタ２０にサンプルクロックＦｓが１００個入力した時点でデータＤを読み出すものとすれば、その際の読出アドレスＲＡは、ＲＡ１＝ＷＡｒ１＋ＡＤｓ＋９０、ＲＡ２＝ＷＡｒ２＋ＡＤｓ＋８０、ＲＡ３＝ＲＡｒ３＋ＡＤｓ＋７０となる。このため、９０番目サンプル、８０番目サンプル、７０番目サンプルに各々対応したデータＤが読み出される。これによって、ＲＡＭ１３を遅延メモリとして使用し、過去の演算結果を利用して現在の演算を実行することができる。
【００３２】
この場合、例えば、ＷＡｒ１＝０、ＷＡｒ２＝８０ｋ、ＷＡｒ３＝１２０ｋに設定すれば、それぞれサンプルクロックＦｓが８０ｋ、４０ｋ、１３６ｋ個入力されて始めてＲＡＭ１３上の書込位置が重複する。したがって、ＲＡｒ１〜３の設定に応じて、それぞれ最大８０ｋ、４０ｋ、１３６ｋサンプル前の波形データを取り出して演算を行うことができる。
【００３３】
ところで、上述したようにＲＡＭ１３へのアクセスは、ＣＰＵ９からのものが、ＤＳＰ１１に優先する。したがって、ＤＳＰ１１のＲＡＭ１３へのアクセスは、ＣＰＵ９がアクセスしていないタイムスロットで実行する必要がある。しかし、ＣＰＵ９のアクセスは、処理の必要に応じてランダムに発生するため、１サンプルクロックＦｓ内の空きスロットのタイミングは、その都度変動する。一方、ＤＳＰ１１は、マイクロプログラムに従って必要なデータの書込読出を行う必要がある。このため、ＤＳＰ１１のアクセスタイミングがＣＰＵ９のアクセスタイミングと一致してしまうことがある。そこで、本実施形態にあっては、ＤＳＰ１１がＣＰＵ９によるアクセスが行われていない空きスロットでＲＡＭ１３にアクセスできるように、ＦＩＦＯ（ファーストイン・ファーストアウトメモリ）を使用して、タイミングを調整している。
【００３４】
図３に示すＦＩＦＯＡ１２１、ＦＩＦＯＢ１２２、およびＦＩＦＯＣ１２３は、入力順にデータを出力するファーストイン，ファーストアウトメモリであって、シフトレジスタによって構成される。ＦＩＦＯＡ〜Ｃは、ハイレベルでアクティブとなる入力イネーブル端子ＩＮと出力イネーブル端子ＯＵＴを備え、システムクロックφに同期して動作する。ＦＩＦＯＡ１２１はアドレスデータと書込または読出の種別を指定する判定信号用のメモリ、ＦＩＦＯＢ１２２は出力データ用のメモリ、また、ＦＩＦＯＣ１２３は入力データ用のメモリである。
【００３５】
まず、ＦＩＦＯＡ１２１の周辺回路を説明する。読出回路１１４からマイクロプログラムが読み出され、書込信号Ｗと読出信号Ｒが生成されると、これが判定信号生成部１１９に供給され、そこで判定信号ＲＷが生成される。判定信号ＲＷは、書込信号Ｗが生成されたときはローレベルとなり、読出信号Ｒが生成されたときにはハイレベルとなる。また、論理和回路１２０は書込信号Ｗと読出信号Ｒの論理和を算出し、アクセス信号を生成する。書込信号Ｗと読出信号Ｒは、上述したように書込期間と読出期間で各々ハイレベルとなるから、アクセス信号がハイレベルの期間は、波形演算部１１５がデータＤの書込または読出を要求する期間である。ＦＩＦＯＡ１２１の入力イネーブル端子ＩＮには、図に示すようにアクセス信号が供給される。したがって、ＦＩＦＯＡ１２１には、判定信号ＲＷと、書込アドレスＷＡおよび読出アドレスＲＡがマイクロプログラムに従って順次記憶されていく。
また、書込信号Ｗがハイレベルになるとき、マイクロプログラムに従って波形演算部１１５からＲＡＭ１３に書き込もうとするデータＤが出力されてＦＩＦＯＢ１２２に記憶される。一方、読出信号Ｒがハイレベルのときは、２サンプリング周期前の同タイムスロットで指定された読出アドレスに応じてＲＡＭ１３から読み出されたデータＤがＦＩＦＯＣ１２３から出力されるので、波形演算部１１５はそのデータＤをマイクロプログラムに従って内部に取り込み演算に使用する。該データＤをＲＡＭ１３からＦＩＦＯＣ１２３に取り込む部分については、図６ないし図７に関連して後で説明する。
【００３６】
次に、送り信号発生回路１２４は、ＣＰＵ９からの制御信号ＣＳ２に基づいて、ＦＩＦＯＡ１２１およびＦＩＦＯＢ１２２のデータ出力と、ＦＩＦＯＣ１２３のデータ入力を各々制御するアクセス制御信号ＡＣ１〜ＡＣ３を各々生成する。具体的には、制御信号ＣＳ２がローレベルの期間（ＣＰＵ９がＲＡＭ１３にアクセスしない期間）を特定し、この期間においてＲＡＭ１３にアクセスできるようにしている。
【００３７】
まず、制御信号ＣＳ２がローレベルになると、送り信号発生回路１２４はアクセス制御信号ＡＣ１をハイレベルにする。そして、アクセス制御信号ＡＣ１がＦＩＦＯＡ１２１の出力イネーブル端子ＯＵＴに供給されると、ＦＩＦＯＡ１２１から判定信号ＲＷと書込アドレスＷＡまたは読出アドレスＲＡが出力される。判定信号ＲＷは接続制御部１２を介してＲＡＭ１３に供給されるとともに、送り信号発生回路１２４にフィードバックされる。この後、送り信号発生回路１２４は、判定信号ＲＷに基づいてアクセス制御信号ＡＣ２，ＡＣ３を生成する。具体的には、判定信号ＲＷが読出を指示する場合にはアクセス制御信号ＡＣ２をハイレベルに、一方、判定信号ＲＷが書込を指示する場合にはアクセス制御信号ＡＣ３をハイレベルにする。
【００３８】
これにより、データＤをＲＡＭ１３に書き込む際（ＡＣ１がハイレベルかつＲＷがローレベルのとき）には、ＦＩＦＯＡ１２１から書込アドレスＷＡと判定信号ＲＷが出力されるとともに、ＦＩＦＯＢ１２２からデータＤが出力される。そして、該データＤはＲＡＭ１３の該書込アドレスＷＡで指定される記憶位置に書き込まれる。一方、データＤをＲＡＭ１３から読み出す際（ＡＣ１がハイレベルかつＲＷがハイレベルのとき）にはＦＩＦＯＡ１２１から読出アドレスＲＡと判定信号ＲＷが読み出されるとともに、該読出アドレスＲＡと該判定信号ＲＷをＲＡＭ１３に供給し、該読出アドレスＲＡの指定する記憶位置よりデータＤを読み出して、ＦＩＦＯＣ１２３に読み出されたデータＤが取り込まれる。
【００３９】
この例にあっては、ＦＩＦＯＡ１２１の段数は、１サンプリング周期内でＤＳＰ１１のＲＡＭ１３に対する最大アクセス回数である１２８あれば充分であるが、書込命令と読出命令の総数を制限すればよれより少なくても良い（例えば、総数９６に制限して９６段とする）。同様にＦＩＦＯ１２２の段数は１サンプリング周期内に実行する書込命令の最大数（１２８）、ＦＩＦＯＣ１２３の段数は同読出命令の最大数（１２８）あれば良いが、それより少ない数に制限しても良い（例えば、書込４８、読出８０に制限し、４８段、８０段とする）。
【００４０】
ところで、ＣＰＵ９は、ＤＳＰ１１に優先してＲＡＭ１３にアクセスできるため、１サンプルクロックＦｓを構成する各タイムスロットの殆どをＣＰＵ９が占有することも考えられる。しかし、ＤＳＰ１１が正常に動作するには、一定のアクセス回数が確保されることが必要である。例えば、マイクロプログラムが図４に示すように、３９回の読出命令Ｒ１〜Ｒ３９と１７回の書込命令Ｗ１〜Ｗ１７とで構成されるとすれば、１サンプルクロックＦｓ期間内にＤＳＰ１１は、ＲＡＭ１３に５６回アクセスする必要がある。この場合、１２８のタイムスロットのうち７３以上をＣＰＵ９が占有すると、ＤＳＰ１１は、演算処理を実行することができない。そこで、本実施形態にあっては、送り信号発生回路１２４でリクエスト信号ｒｅｑを生成するようにしている。このリクエスト信号ｒｅｑはＣＰＵ９にウエイトをかけるものであって、リクエスト信号ｒｅｑがＣＰＵ９に供給されると、ＣＰＵ９は、ＲＡＭ１３へのアクセスを中止する。したがって、リクエスト信号ｒｅｑをＣＰＵ９に供給すると、次のシステムクロックφのタイミングで制御信号ＣＳ２がローレベルとなって、この間に、ＤＳＰ１１はＲＡＭ１３にアクセス可能となる。
【００４１】
リクエスト信号ｒｅｑは、以下のようにして生成される。まず、各サンプル期間毎に残りのタイムスロット数が算出される。この算出処理は、送り信号発生回路１２４の内部に設けられた第１のダウンカウンタ（図示せず）によって行われる。第１のダウンカウンタにはサンプル周期の開始で総ステップ数（１２８）がロードされるようになっており、そのクロック入力端子には、システムクロックφが供給される。したがって、第１のダウンカウンタのカウント値は、各サンプル期間毎における残りのタイムスロット数を示す。
【００４２】
次に、各サンプル期間毎に、ＤＳＰ１１からＲＡＭ１３へアクセスしなければならない残りのアクセス回数が算出される。この算出処理は、送り信号発生回路１２４の内部に設けられた第２のダウンカウンタ（図示せず）によって行われる。制御レジスタ１１１から１サンプルクロックＦｓ内でＲＡＭ１３にアクセスすることが必要とされるアクセス回数が供給されると、この数値がサンプル周期の開始タイミングで第２のダウンカウンタにロードされる。そして、アクセス制御信号ＡＣ１でシステムクロックφにゲートをかけ、ゲート回路の出力信号を第２のダウンカウンタのクロックとして用いる。これにより、第２のダウンカウンタのカウント値は、ＤＳＰ１１からＲＡＭ１３へアクセスしなければならない残りのアクセス回数を示す。
【００４３】
そして、第１のダウンタウンのカウント値と第２のダウンカウンタのカウント値とを比較器（図示せず）で比較して、両者が一致すると、リクエスト信号ｒｅｑを生成し、ＣＰＵ９に対してウエイトをかけるようにしている。
【００４４】
Ｂ．実施形態の動作
次に、図面を参照しつつ、本実施形態の動作を説明する。
図６は、本実施形態に係わる電子楽器の動作の一例を示すタイミングチャートである。図６（ａ）は波形データのサンプル周期を示す図であり、この例では、ｎ−１番目サンプル、ｎ番目サンプル、ｎ＋１番目サンプルを示している。また、図６（ｂ）は、ＣＰＵ９のＲＡＭ１３にアクセスするタイムスロットを示したものであり、「Ａ」がＲＡＭ１３にアクセスするスロットを、「他」がＲＡＭ１３にアクセスしないスロットを示している。ｎ−１番目サンプルにおいては、第２スロット、第４スロット、および第７スロットがＲＡＭ１３にアクセスするタイムスロットである。
【００４５】
また、図６（ｃ）の各サンプルの「Ａ１〜Ａ５」は、図４のマイクロプログラムに応じて図３の波形演算部１１５で発生する遅延メモリ（ＲＡＭ１３）に対するアクセス要求の発生タイムスロットを示すものである。ここでは、第１〜第３，第７スロットにおいてデータＤを読み出し、第６スロットにおいてデータＤを書き込む要求をそれぞれ発生している。従来のＤＳＰではアクセス要求が発生したタイミングで遅延メモリのアクセスを行うので、これはそのまま「従来のＲＡＭアクセス」のタイミングを示す図でもある。従来のＤＳＰは、マイクロプログラムに従ってＲＡＭ１３にアクセスする。このため、マイクロプログラムで指定される一定のタイムスロットでＲＡＭ１３にアクセスする必要が生じる。この例においては、各サンプルの第１〜第３，第６，第７タイムスロットにおいてＲＡＭ１３にアクセスする必要がある。一方、ＣＰＵ９のＲＡＭ１３へのアクセスはランダムに生じる。したがって、ＣＰＵとＤＳＰが同時にＲＡＭ１３にアクセスする必要が生じるが、従来の構成では、ＤＳＰからのアクセスが優先され、ＣＰＵからのアクセスが制限される。例えば、第ｎ−１番目サンプルにおいて、第２スロットと第７スロットでは、ＣＰＵとＤＳＰが同時にＲＡＭ１３にアクセスする必要が生じるので、これらのタイムスロットでは、ＣＰＵのアクセスが制限され、ＣＰＵはＤＳＰのアクセスが行われない空き時間を使用してＲＡＭ１３をアクセスする。
【００４６】
次に、図６（ｄ）は、本実施形態に係わるＤＳＰ１１がＲＡＭ１３をアクセスする様子を示したものであり、各サンプルの「Ａ１〜Ａ５」がＲＡＭ１３へのアクセスを示すタイムスロットである。本実施形態では、上述した接続制御部１２によって、ＣＰＵ９のアクセスが優先されるので、ＤＳＰ１１は図６（ｂ）に「他」と示したタイムスロットでＲＡＭ１３にアクセスする。このため、図６（ｄ）に示すように、ＤＳＰ１１は、例えば、第ｎ番目のサンプルにおいて第０，第１，第４，第５，第７タイムスロットでＲＡＭ１３にアクセスして、データＤの入出力を行う。
【００４７】
この場合、第ｎ番目のサンプルにおいて行われるＤＳＰ１１からＲＡＭ１３へのアクセスは、第ｎ−１番目のサンプルにおいて発生したアクセス要求（図６（ｃ）参照）によりＦＩＦＯＡ１２１に記憶された読出アドレスＲＡ、書込アドレスＷＡ、判定信号ＲＷとＦＩＦＯＢ１２２に記憶されたデータＤに基づいて行われる。例えば、図６（ｃ）の第ｎ−１サンプルの「Ａ４」では書込要求が発生し「Ａ１〜Ａ３」および「Ａ５」では読出要求が発生しているので、それに対応して、図６（ｄ）における第ｎサンプルの「Ａ４」ではＤＳＰ１１からＲＡＭ１３への書き込みが行われ、「Ａ１〜Ａ３」および「Ａ５」ではＤＳＰ１１によるＲＡＭ１３の読み出しが行われる。第ｎ番目のサンプルの所定のタイムスロットでＤＳＰ１１が書き込みを行う場合（そのタイミングでＦＩＦＯＡ１２１から出力されるＲＷがローレベルのとき）、ＦＩＦＯＡ１２１から該書込アドレスＷＡと該判定信号ＲＷが出力されると共にＦＩＦＯＢ１２２から該データＤが出力され、ＲＡＭ１３の該アドレスＷＡで示される記憶位置に該データＤが書き込まれる。一方、読み出しを行う場合（ＲＷがハイレベルのとき）には、ＦＩＦＯＡ１２１から該読出アドレスと判定信号が出力され、ＲＡＭ１３の該アドレスＲＡで示される記憶位置に記憶されたデータＤが読み出され、一旦、ＦＩＦＯＣ１２３に格納される。そして、ｎ＋１番目のサンプルで、ＦＩＦＯＣ１２３からデータＤが読み出されて波形演算部１１５に供給される。図６（ｅ）は、波形演算部１１５に供給されるデータＤの様子を示したものであり、「Ｄ１〜Ｄ４」がデータＤの供給が行われるタイムスロットである。この例では、図６（ｄ）におけるｎ番目サンプルの「Ａ１〜Ａ３」と「Ａ５」のアクセスでＲＡＭ１３から読み出した４つのデータＤがＦＩＦＯＣ１２３に格納され、ｎ＋１番目サンプルの第１，第２，第３，第７スロットで波形演算部１１５に供給される。これにより、波形演算部１１５へのデータ供給をマイクロプログラムで指定されるタイミングに調整することができる。
【００４８】
この実施例では、マイクロプログラムに応じてあるサンプリング周期で発生した書込要求に応じて、その次のサンプリング周期においてＲＡＭ１３の指定された書込アドレスにデータＤが書き込まれる。この場合、書き込まれるタイミングは１サンプリング周期遅れるが、書き込まれるアドレスは書込アドレスＷＡで指定されたアドレスである。一方、あるサンプリング周期で読出要求の発生時には、その次のサンプリング周期においてＲＡＭ１３の指定された読出アドレスからデータＤが読み出され、さらにその次のサンプリング周期で読み出されたデータが波形演算部１１５に供給される。この場合、マイクロプログラムに応じて読出要求が発生したときにＦＩＦＯＣ１２３から波形演算部１１５に供給されるデータＤは、２サンプリング周期前の同一タイムスロットで発生した読出アドレスＲＡにより読み出されたデータである。すなわち、本実施例におけるＤＳＰ１１の遅延メモリによる遅延処理では、同じディレイ長を設定した場合、通常のＤＳＰで遅延メモリを使用してディレイを行う場合に比べて２サンプリング周期分長いディレイが得られる。従来のＤＳＰで得られるディレイと同じ長さにするには、ＣＰＵ９が読出アドレスＲＡとして、操作子４等で指定されたディレイ長より２サンプリング周期分短いディレイを得るための読出アドレスＲＡを制御レジスタ１１１に設定するようにすればよい。
【００４９】
Ｃ．まとめ
上述したように本実施形態によれば、接続制御部１２によって、ＣＰＵ９のＲＡＭ１３へのアクセスがＤＳＰ１１に優先されるので、ＣＰＵ９の処理が待たされるといったことがない。したがって、ＣＰＵ９の処理速度が低下することがなく、ＣＰＵ９の本来性能を引き出すことができる。
【００５０】
また、ＤＳＰ１１は、ＣＰＵ９がＲＡＭ１３にアクセスしていない空きスロットを利用してＲＡＭ１３にアクセスするとともに、バッファメモリとして機能するＦＩＦＯＡ〜Ｃを介してＲＡＭ１３と波形演算部１１５との間でデータＤの入出力を行うようにしたので、ＲＡＭ１３をＣＰＵ９と共有することができ、しかもマイクロプログラムに従って波形データの演算処理を行うことができる。
また、ＤＳＰ１１は、空きスロットを利用してＲＡＭ１３にアクセスを行っているが、マイクロプログラムの任意のステップで発生する書込アドレスＷＡ、データＤによる書き込み、および、マイクロプログラムの任意のステップで発生する読出アドレスＲＡによる読み出しが可能であり、また、そこで読み出されたデータＤは、該任意のステップに対応するその後のタイミングで波形演算部１１５に供給されるため、波形演算部１１５は該データＤを使用しながらマイクロプログラムに従った処理を継続することができる。
【００５１】
また、ＤＳＰ１１は、送り信号発生回路１２４において、各サンプル期間毎に、残りのタイムスロット数とＤＳＰ１１からＲＡＭ１３へアクセスしなければならない残りの回数とを比較し、この比較結果に基づいて、リクエスト信号ｒｅｑを生成し、これにより、ＣＰＵ９にウエイトをかけるようにした。このため、ＣＰＵ９があるサンプル期間中のタイムスロットの大半を占有するような場合であっても、ＤＳＰ１１はマイクロプログラムを実行するために必要なタイムスロットを確保することができる。
【００５２】
Ｄ．変形例
以上、本発明に係わる実施形態を説明したが、本発明は上述した実施形態に限定されるものではなく、以下に述べる各種の変形が可能である。
▲１▼上述した実施形態において、ＤＳＰ１１は、あるサンプル期間でＲＡＭ１３にアクセスするための読出アドレスや書込アドレス、ＲＡＭ１３に書き込むデータＤ等を、ＦＩＦＯＡ、Ｂに一旦格納し、次のサンプル期間でＦＩＦＯＡ、Ｂに格納されたアドレス、データＤ等を読み出し、これを用いてＲＡＭ１３にアクセスして読み出しないし書き込みを行い、読み出されたデータＤをＦＩＦＩＯＣに一旦格納し、さらにその次のサンプル期間でＦＩＦＯＣに書き込まれたデータＤを読み出し、読み出されたデータＤを使用して演算処理を行うようになっていた。本発明はこれに限定されるものではなく、要は、バッファメモリを使用してＲＡＭ１３へのアクセスタイミングとマイクロプログラムのタイミングを調整するものでれば、どのようなものであってもよい。例えば、１サンプル期間を０〜６３タイムスロット（期間Ｘ）と６４〜１２７タイムスロット（期間Ｙ）に分割して、期間Ｘ（ないしＹ）でＲＡＭ１３をアクセスするための読出アドレスや書込アドレス、ＲＡＭ１３に書き込むデータＤ等をＦＩＦＯＡ、Ｂに一旦格納し、次の期間Ｙ（ないしＸ）でＦＩＦＯＡ、Ｂに格納されたアドレス、データＤ等を読み出し、これを用いてＲＡＭ１３にアクセスして読み出しないし書き込みを行い、読み出されたデータＤをＦＩＦＯＣに一旦格納し、さらにその次の期間Ｘ（ないしＹ）でＦＩＦＯＣに格納されたデータＤを読み出し、読み出されたデータＤを使用して演算処理を行うようにしてもよい。
【００５３】
この点について、図７を参照しつつ説明する。図７（ａ）に示すように例えば、ｎ番目サンプルは、期間Ｘｎと期間Ｙｎに分割されている。図７（ｂ）は図６（ｂ）と同様、ＣＰＵ９のＲＡＭ１３にアクセスするスロットを示すものである。図７（ｃ）にマイクロプログラムに応じて発生するＲＡＭ１３に対するアクセス要求の発生タイムスロットを示す。これは、従来のＤＳＰからＲＡＭ１３へのアクセスタイミングでもある。一方、図７（ｄ）はこの例におけるＤＳＰ１１からＲＡＭ１３へのアクセスの様子を示す図である。この場合、ＤＳＰ１１はＣＰＵ９がＲＡＭ１３にアクセスしていない空きスロットを利用してＲＡＭ１３にアクセスしている。
【００５４】
この場合、期間Ｙｎ（ないしＸｎ）においては、その直前の期間Ｘｎ（ないしＹｎ−１）中にＦＩＦＯＡ１２１に格納された書込アドレスや読出アドレス、ＦＩＦＯＢに格納されたデータＤ等を読み出して、読み出されたアドレス、データＤを用いてＲＡＭ１３にアクセスし、ＲＡＭ１３の書込アドレスで示される記憶領域にデータＤの書き込みを行ったり、読出アドレスで指定される記憶領域からからデータＤの読み出しを行い、読み出されたデータＤをＦＩＦＯＣ１２３に格納する。期間Ｙｎ（ないしＸｎ）において読み出しが行われた場合には、その次の期間Ｘｎ＋１（ないしＹｎ）において、ＦＩＦＯＣ１２３から順次取り出され、波形演算部１１５に供給される。この例によれば、各ＦＩＦＯに格納するデータ量を減らすことができるので、ＦＩＦＯＡ１２１，ＦＩＦＯＢ１２２，およびＦＩＦＯＣ１２３の段数を減らし、構成を簡易にすることができる。なお、１サンプル期間を分割する数は任意であり、ＣＰＵ９がＲＡＭ１３へアクセスする頻度とＤＳＰ１１がＲＡＭ１３へアクセスする頻度を勘案して適宜定めればよい。
この変形例では、マイクロプログラムのあるスロットで読出要求が発生したときにＦＩＦＯＣ１２３から供給されるデータＤは、１サンプリング周期前の同一タイムスロットで発生した読出アドレスＲＡにより読み出されたデータである。従って、先の実施例で述べたのと同様に、この変形例では従来のＤＳＰに比べて１サンプリング周期分長いディレイが得られる。従来のＤＳＰと同じ長さにしたければ、ＣＰＵ９が操作子４等で指定されたディレイ長より１サンプリング周期分短いディレイを得るための読出アドレスを算出して制御レジスタ１１１に設定するようにプログラムしておけばよい。
【００５５】
▲２▼上述した実施形態においては、ＣＰＵ９からのアクセスが多くＤＳＰ１１によるＲＡＭ１３へのアクセス回数が不足する場合には、送り信号信号発生回路１２４で生成したリクエスト信号ｒｅｑを用いてＣＰＵ９にウエイトをかけてタイムスロットを確保したが、本発明はこれに限定されるものではなく、直前のサンプル期間で読み出して使用したデータＤをもう一度使用するようにしてもよい。この場合には、演算の精度が多少劣化するが、ＣＰＵ９が待たされるといったことは一切なくなる。なお、直前のサンプル期間（ないし直前の読出区間）に読み出したデータＤをＦＩＦＯＣからもう一度読み出せるようにすることは、ＦＩＦＯＣに１区間分の読出データＤを記憶する記憶領域が確保されているので容易に実現可能である。
【００５６】
▲３▼上述した実施形態において、ＤＳＰ１１自体を波形発生器１０として使用することもできる。その場合、例えば、物理モデル音源、アナログモデル音源、あるいはＦＭ音源等のマイクロプログラムをＤＳＰ１１に設定すればよい。
【００５７】
▲４▼上述した実施形態においては、タイムスロットの変更を行うために、ＦＩＦＯＡ１２１，ＦＩＦＯＢ１２２，ＦＩＦＯＣ１２３を使用したが、本発明はこれに限定されるのもではなく、バッファとして機能するメモリであればどのようなものを用いてもよい。例えば、ＦＩＦＯの変わりにＲＡＭや内部レジスタを用いてもよい。
【００５８】
▲５▼上述した実施形態において、リクエスト信号ｒｅｑの生成方法を次のように変更することもできる。１サンプリング周期内にマイクロプログラムの指示に応じて行われるＤＳＰ１１のＲＡＭ１３に対する全アクセス回数Ｘを、ＣＰＵ９が予め算出する。送り信号発生回路１２４の内部には前述したダウンカウンタの代わりにＦＩＦＯＡ１２１に記憶されている読出アドレスと書込アドレスの総数をカウントするデータ数カウンタ（図示せず）と、そのカウント値と全アクセス回数Ｘを比較する比較器（図示せず）を設ける。そして、該カウント値が全アクセス回数Ｘ以上になったときにリクエスト信号ｒｅｑを発生する。ＦＩＦＯＡ１２１に記憶されているアドレスの総数がアクセス回数Ｘに達していない場合には、あるタイムスロットで発生するＲＡＭ１３のアクセス要求に対応する１サンプリング周期前のスロットのアクセスは実行済みになっているはずである。
さらに、別の方法として、ＲＡＭ１３から読み出されるＦＩＦＯＣ１２３に積まれているデータＤの数をカウントするデータ数カウンタ（図示せず）を設け、そのデータ数カウンタがゼロになりかつＦＩＦＯＡ１２１に１つ以上のアドレスが積まれていればリクエスト信号ｒｅｑを発生するようにしてもよい。
【００５９】
【発明の効果】
上述したように本発明に係る発明特定事項によれば、制御プロセッサから共有メモリへのアクセスを信号処理プロセッサから共有メモリへのアクセスに優先させるように制御したので、制御プロセッサが待たされるといったことがなくなる。また、制御プロセッサと信号処理プロセッサとでメモリを共有して、構成を簡易にすることができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態である電子楽器の全体構成を示すブロック図である。
【図２】  同実施形態に係わる電子楽器の主要部の構成を示すブロック図である。
【図３】  同実施形態に係わるＤＳＰの詳細な構成を示すブロック図である。
【図４】  同実施形態に係わるマイクロプログラムの一例を示す図である。
【図５】  同実施形態に係わるアドレス発生器の回路図である。
【図６】  同実施形態に係わる電子楽器の動作を示すタイミングチャートである。
【図７】  変形例に係わる電子楽器の動作を示すタイミングチャートである。
【符号の説明】
９…ＣＰＵ（制御プロセッサ）、１１…ＤＳＰ（信号処理プロセッサ）、１３…ＲＡＭ（共有メモリ）、１２…アクセス制御部、１１３…マイクロプログラムメモリ（プログラムメモリ）、１１４…読出回路（読出部）、１１５…波形演算部（演算部）、１１８…アドレス発生器（アドレス発生部）、１２２…ＦＩＦＯＢ（バッファ部）、１２３…ＦＩＦＯＣ（バッファ部）、１２４…送り信号発生回路（制御部）
【図１】
0003791162.tif 000002
【図２】
0003791162.tif 000003
【図３】
0003791162.tif 000004
【図４】
0003791162.tif 000005
【図５】
0003791162.tif 000006
【図６】
0003791162.tif 000007
【図７】
0003791162.tif 000008