【1】概要  ADSP-2181上で動作するシンセサイザープログラムを開発する。 ホストCPUとの通信はIDMAポートを用いて、DSPのワークエリアを 書き換える形とする。鋸歯状波テーブルは、バンク切替えを行った 上でI/O空間に設置する。  音出力はテスト用にI/Oポートとシリアルポートの両方から出す。 【2】ホストからの制御  各DSPユニットのIDMA信号線をバス状に結線しておき、ホストCPU からアクセスする。ただし、DSPセレクト信号(4ビット)をPALで デコードしてIS信号(IDMAセレクト)を作り、特定のDSPを選択でき るようにする。  ホストから制御する信号は、 ・キー信号の設定 ・エンベロープトリガの設定と取得 ・サウンドパラメータの設定と取得  等であり、これにより演奏動作を行う なお、マルチプロセッサ制御などで使用するため、DSP-IDなる通し 番号を、ホストからDSPに発行する。 【3】音発生機構 3-1 音パラメータ  DSPのデータRAM上に、サウンドパラメータブロックを設ける。 ここには各パラメータを格納する。ホストから設定し、それに基づい てDSPが動作する 3-2 パッチパラメータ  DSPのデータRAM上に、パッチベイ、パッチベイポインタと呼ばれる メモリエリアを設ける。  パッチベイは、アナログシンセのパッチベイと同じで、あるモジュ ールの出力と他のモジュールの入力をつなぐためのメモリである。 なお、すべてのパッチベイは32ビット(2ワード)とする。  パッチベイポインタは、各モジュールの入出力の数だけあるメモリ で、サウンドパラメータブロックに属す。これは、ある入出力がどの バッチベイにつながっているかを示すもので、こうすることにより、 自由なパッチワークが可能となる。ポインタはパッチベイのオフセッ トアドレスとし、必ず偶数(ダブルワードなので)とする。  パッチ動作は、プログラム中ではパッチベイポインタをIレジスタ にコピーし、DM(I,M)転送命令でデータを転送する。 3-3 モジュール動作スイッチ  ADSP-2181はプログラムRAMが大きいので多くのモジュールをコード として組み込んでおくが、同時に使用できるモジュールは限られている ので、使用する/しないのスイッチを設ける。これはサウンドパラメー タブロック内に設ける。 3-4 低速タスクスケジュール  音発生計算のうち、指数変換やフィルタ係数計算など、低速でよいが 計算量が多いものは、サンプリング周期毎に計算するのではなく、32 サンプリング毎に計算することとする。この際に、複数の低速タスクを 同時に実行しないで、順に実行することで遅延を避ける 3-5 乱数のタネ(seed)  ノイズ発生時に、各DSPが同じ位相でノイズを発生すると不自然なので、 ホストから各DSPに対して、ユニークな値をセットし、これをノイズの種 とする。この値はDSP_IDを使う。 3-6 出力FIFO  3-4で述べたように音出力時に計算量の多い計算がときどき入るため、 そのときにはサンプリング周期の間に計算が終了しない可能性がある。 DSPの計算パワーを有効に使うため、音出力に64ワード(1.5msec相当) のFIFOを設け、計算が長引いても音が途切れないようにする。  具体的には、シリアル出力機能、自動バッファリング機能と組み合わ せて実現する。シリアルポートを自動バッファリングモードに設定し、 自分のIDのタイムスロットで出力するよう設定しておくと、タイムスロ ットが来るとデータがどんどん出力される。一方シンセルーチンでは、 同じバッファに端からどんどんデータを書いていき、自動バッファリン グの読み出しポインタとぶつかったら、バッファフルとしてシンセルー チンを一時停止する。 3-7 鋸歯状波テーブル  エイリアスしない鋸歯状波テーブルを用意する(16bit*32KW)。これは 外部RAMとし、バンク切替えを行った上でI/O空間に置く。起動時にホスト より初期化を行う 3-8 サンプリング周波数の発生  内蔵タイマによる割り込みで行う 3-9 計算時間モニタ機能  前述のように、多くのモジュールを動作させると計算時間がかかるが、 動作中に計算時間の余裕がどの程度あるのかを求めてホストCPUから読め るようにしておくと便利である。これには、割り込みルーチンの終了時 にあるカウンタをクリアし、待機(バックグラウンド)ルーチンのループ でカウントアップして、次の割り込みの先頭でその値を見ることにより、 CPUタイムの残りを知ることができる 【4】音の出力  音は、テスト的にI/Oポートより出力する他、SPORT0のマルチチャンネル インターフェース機能を用いて、ミキサ用DSPに集められ、エフェクトを 施した後に出力する。  マルチチャネルモードは、24SLOT/サイクルモードでは最高52KHzサンプル (16bit)のデータが送れるので、この設定とする。24チャネルのうち16チャ ネルはシンセDSP->ミキサDSPへのパスとし、残りの8チャネルは、DSP相互 間のクロスパス、もしくはミキサDSPからマイク入力などをシンセDSPに伝送 するチャネルとする。  なおクロックはサンプリング周波数*16*24なので16.934MHzを使用する。 【5】メモリマップ