(57)【特許請求の範囲】
【請求項１】
第１のメモリに格納した複数の処理ルーチンを、第２のメモリに格納した実行待ち行列の内容に応じた順序に従って順次ＤＳＰにより実行するディジタル信号処理装置であって、
前記各処理ルーチンの内の最終処理ルーチンを除く他の処理ルーチンの最終ステップに次に処理すべき処理ルーチンへの移行を指示する間接ジャンプ命令が設けられ、
前記複数の処理ルーチンのうちの最初に処理されるべき先頭処理ルーチンにより、前記実行待ち行列の先頭の内容が参照されるよう、前記第２のメモリのアドレスを設定し、
前記間接ジャンプ命令が実行される毎にその後に処理される処理ルーチンの処理順序が置かれた前記実行待ち行列の内容に応じて次の処理ルーチンに移行し、
前記最終処理ルーチンの実行により一連の処理を終了するようにした、
ことを特徴とするディジタル信号処理装置。
【請求項２】
前記順次処理されるべき複数の処理ルーチンの処理順序を内容とする複数種類のスケジュールを含むスケジューラを前記第１のメモリに格納し、特定のスケジュールの呼び出しにより前記ＤＳＰが前記実行待ち行列を当該スケジュールの内容に更新するようにした、
ことを特徴とする請求項１に記載のディジタル信号処理装置。
【請求項３】
前記第１のメモリをアドレッシングする第１のアドレス手段と、前記第２のメモリをアドレッシングする第２のアドレス手段を具備し、
前記実行待ち行列に対して前記ＤＳＰにより複数の処理ルーチンの先頭アドレスを処理順に書き込み、
前記第２のアドレス手段は前記間接ジャンプ命令が実行される毎に前記実行待ち行列の特定の先頭アドレスを前記第１のアドレス手段に転送した後にインクリメントされ、前記第１のアドレス手段は前記実行待ち行列から選択された先頭アドレスを先頭とする特定の処理ルーチンをアドレッシングする、
ようにしたことを特徴とする請求項２に記載のディジタル信号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の処理ルーチンを組み合わせた１サイクル処理を単位時間内に行わせるディジタル信号処理装置に係り、特にその処理ルーチンの実行を簡素化フレキシブル化したディジタル信号処理装置に関するものである。
【０００２】
【従来の技術】
例えば、ＣＤ再生装置のサーボ制御では、光ピックアップのディスク面に対する焦点位置を調整するフォーカスサーボ、ディスク面のピット列をトレースするトラッキングサーボ、ディスク回転数を線速度一定に制御する回転数サーボ、その他のサーボの制御が行われる。そして、これらの複数のサーボを１サイクルとして制御するために、従来ではシーケンシャルな手法によったり、またサブルーチンコールの手法によったり、さらにはこれら両手法を組み合わせた手法によっていた。
【０００３】
シーケンシャルな手法は、１サイクル処理中に生じる各サーボ制御の複数の処理ルーチンをプログラムメモリ上に順次書き込んでおいて、制御開始により各処理ルーチンの実行／不実行を予め設定した任意のフラグやレジスタの値を参照し判断して進むもので、不実行のときは分岐条件に従って次の処理ルーチンの先頭アドレスにジャンプするものである。
【０００４】
一方、サブルーチンコールによる手法は、再利用される個々の処理ルーチンをサブルーチン化しておいて、１サイクルの処理をプログラムメモリ上にシーケンシャルに並べて、この１サイクルの処理の中のサブルーチンによる処理をサブルーチンコールにより行うものである。このときも、各処理ルーチンの実行／不実行を予め設定した任意のフラグやレジスタの値を参照し判断して進み、不実行のときは分岐条件に従って次の処理ルーチンの先頭アドレスにジャンプする。
【０００５】
【発明が解決しようとする課題】
ところで、このサーボ制御のような処理は、リアルタイム処理が要求されるために、予め設定した特定時間（所定クロック数）内に１サイクルの処理の実行を完了していなければならない。
【０００６】
しかし、前記シーケンシャル手法では、プログラムコード長が大きくなる問題があり、またサブルーチンコール手法ではサブルーチンの復帰命令のため１サイクル処理のプログラムコード長と所要クロック数が大きくなる問題がある。
【０００７】
本発明の課題は、プログラム中に条件分岐命令やサブルーチンからの復帰命令を不要にしてプログラムメモリサイズや実行クロック数が少なくて済むようにしたディジタル信号処理装置を提供することである。
【０００８】
【課題を解決するための手段】
上記課題を解決するための第１の発明は、第１のメモリに格納した複数の処理ルーチンを、第２のメモリに格納した実行待ち行列の内容に応じた順序に従って順次ＤＳＰにより実行するディジタル信号処理装置であって、前記各処理ルーチンの内の最終処理ルーチンを除く他の処理ルーチンの最終ステップに次に処理すべき処理ルーチンへの移行を指示する間接ジャンプ命令が設けられ、前記複数の処理ルーチンのうちの最初に処理されるべき先頭処理ルーチンにより、前記実行待ち行列の先頭の内容が参照されるよう、前記第２のメモリのアドレスを設定し、前記間接ジャンプ命令が実行される毎にその後に処理される処理ルーチンの処理順序が置かれた前記実行待ち行列の内容に応じて次の処理ルーチンに移行し、前記最終処理ルーチンの実行により一連の処理を終了するように構成した。
【０００９】
第２の発明は、第１の発明において、前記順次処理されるべき複数の処理ルーチンの処理順序を内容とする複数種類のスケジュールを含むスケジューラを前記第１のメモリに格納し、特定のスケジュールの呼び出しにより前記ＤＳＰが前記実行待ち行列を当該スケジュールの内容に更新するように構成した。
【００１０】
第３の発明は、第２の発明において、前記第１のメモリをアドレッシングする第１のアドレス手段と、前記第２のメモリをアドレッシングする第２のアドレス手段を具備し、前記実行待ち行列に対して前記ＤＳＰにより複数の処理ルーチンの先頭アドレスを処理順に書き込み、前記第２のアドレス手段は前記間接ジャンプ命令が実行される毎に前記実行待ち行列の特定の先頭アドレスを前記第１のアドレス手段に転送した後にインクリメントされ、前記第１のアドレス手段は前記実行待ち行列から選択された先頭アドレスを先頭とする特定の処理ルーチンをアドレッシングするよう構成した。
【００１１】
【発明の実施の形態】
図１は本発明のディジタル信号処理装置の説明図である。１は図示しないホストコンピュータから受ける指令（割込みその他）によりプログラム実行等の動作を行うＤＳＰ（Digital Signal Processor)、２は複数の処理ルーチン２１とスケジューラ２２を格納したプログラムＲＯＭ、３は処理データを格納したりインデックスレジスタから成る実行待ち行列３１を格納するためのデータＲＡＭ、４はこのデータＲＡＭ３の実行待ち行列のアドレシング用の自動インクリメント機能をもつＲＡＭアドレスインデックスレジスタ、５はプログラムＲＯＭ２のアドレシング用の自動インクリメント機能をもつ実行アドレスレジスタである。
【００１２】
前記スケジューラ２２は、複数個の処理ルーチンの内の何個かを特定の順序で組み合わせて１サイクル処理用とした複数個のスケジュールと、実行待ち行列３１の内容を予め選択した特定のスケジュールにおける処理ルーチンの処理順序の内容に更新する手順とが書かれたプログラムである。
【００１３】
本発明では、個々の処理ルーチン２１について、図２に示すように、当該処理ルーチンのメイン処理の実行ステップＳ１の後に、つまり最終コードとして、前記した実行待ち行列３１を参照して次の処理ルーチンの先頭アドレスに移るためのステップＳ２（間接ジャンプ命令）を設けておく。
【００１４】
これにより、ＲＡＭアドレスインデックスレジスタ４で示される実行待ち行列３１の特定の因子（特定の処理ルーチンの先頭アドレス）がそこから読み出されて実行アドレスレジスタ５に転送されると、当該特定の処理ルーチンの先頭アドレスが指定されてその実行が行われる。
【００１５】
実行待ち行列３１の特定の因子の読み出しが行われたときは、ＲＡＭアドレスインデックスレジスタ４はその値が自動的に＋１されて、実行待ち行列の次の因子を指す。
【００１６】
前記実行アドレスレジスタ５は、プログラムカウンタと呼ばれるものであり、次に実行するインストラクション（命令）のアドレスを示しており、新たな飛び先アドレスが転送されてくるまでは、アドレスを自動的に＋１するインクリメント動作を繰り返す。すなわち、ジャンプやサブルーチンコール等の特異な命令以外のときは、＋１ずつその値を増加する。
【００１７】
そして、直接ジャンプ（又は、サブルーチンコール）の場合は、読み出したインストラクション内に含まれる飛び先アドレスがそのまま書き込まれることで次に実行するアドレスを変更する。
【００１８】
一方、間接ジャンプ命令の場合は、実行待ち行列３１のうちの特定の内容（いずれかの処理ルーチンの先頭アドレス）が転送されてくることで、次に実行するアドレスを変更する。そして、実行待ち行列の内容を転送した後にＲＡＭアドレスインデックスレジスタ４のアドレス値を＋１する。
【００１９】
さて、ＤＳＰ１はそこに特定の指令が入ると、まずスケジューラ２２の処理内容に対応した処理を実行する。すなわち、当該指令に対応した特定のスケジュールをプログラムＲＯＭ２の中のスケジューラ２２から読み出し、当該スケジュールに組み込まれている複数の処理ルーチンの先頭アドレスをデータＲＡＭ３内の実行待ち行列に書き込み更新する。
【００２０】
例えば、当該特定のスケジュールが、図３に示す内容のスケジュールのときは、当該スケジュールで実行される２番目の「処理ルーチン２」の先頭アドレス３１１、３番目の「処理ルーチン１」の先頭アドレス３１２、・・・、「最終処理ルーチン」の先頭アドレス３１ｋを、図１に示すように、その実行順序に従ってデータＲＡＭ３の実行待ち行列３１に書き込む。
【００２１】
なお、図３の「先頭処理ルーチン」は、複数の処理ルーチンからなる各スケジュールに関係なく同じルーチンである。また、「最終処理ルーチン」も同様である。これらは、割込み等により一連の処理が開始する場合は特定の場所（アドレス）から始まり、最後に呼び出し元に復帰させるためである。つまり、この特定の場所を指す作業を実行するのが「先頭処理ルーチン」であり、この「先頭処理ルーチン」によって、実行待ち行列３１の内容が先頭から参照されるようにＲＡＭアドレスインデックスレジスタ４が初期化される。呼び出し元に復帰する作業は、「最終処理ルーチン」によって、例えば割り込み待ちの状態に設定される。
【００２２】
以上のようにＤＳＰ１は、特定の指令が入るとスケジューラ２２により特定のスケジュールに対応して実行待ち行列３１の内容を更新し、特定の割込みが入ると、当該特定のスケジュールの先頭処理ルーチンを実行して実行待ち行列３１が先頭から参照されるように設定し、その後に間接ジャンプ命令を実行する。
【００２３】
この間接ジャンプ命令によって、ＲＡＭアドレスインデックスレジスタ４が実行待ち行列３１の２番目の処理ルーチン２の先頭アドレス３１１を読み出し、この先頭アドレス３１１が実行アドレスレジスタ５に転送される。このようにして、処理ルーチン２の実行が行われる。この実行中における処理ルーチン２の個々のアドレス指定は実行アドレスレジスタ５によって行われる。なお、ＲＡＭアドレスインデックスレジスタ４は処理ルーチン２の先頭アドレス３１１を読み出した後は＋１され、実行待ち行列３１の第２因子（３番目の処理ルーチン１の先頭アドレス３１２）を指す。
【００２４】
２番目の処理ルーチン２のメインの処理の実行が完了すると、その処理ルーチン２の間接ジャンプ命令によってＲＡＭアドレスインデックスレジスタ４が今度は実行待ち行列３１の３番目の処理ルーチン１の先頭アドレス３１２を読み出し、この先頭アドレス３１２が実行アドレスレジスタ５に転送される。このようにして、今度は処理ルーチン１の実行が行われる。なお、ＲＡＭアドレスインデックスレジスタ４は処理ルーチン１の先頭アドレス３１２を読み出した後は＋１され、実行待ち行列３１の第３因子を指す。
【００２５】
以後、ＲＡＭアドレスインデックスレジスタ４が実行待ち行列３１の最終処理ルーチンの先頭アドレス３１ｋを指すまで同様の処理動作が繰り返される。
【００２６】
そして、最後の間接ジャンプ命令により最終処理ルーチンの先頭アドレ３１ｋを読み出し、この先頭アドレス３１ｋが実行アドレスレジスタ５に転送されて、その最終処理ルーチンの実行が行われる。これにより１サイクルの処理が完了する。なお、この最終処理ルーチンでは当然ながら間接ジャンプ命令は実行されず、例えば次の割込み待ちの状態に設定される（図示せず）。
【００２７】
以上のように、１サイクル処理では、条件分岐命令やサブルーチンからの復帰命令が不要であり、このためプログラムメモリサイズと実行クロック数が少なくて済む。また、ここではスケジュールをプログラムＲＯＭ２に書き込んでいるが、書き換え可能なメモリ（ＲＡＭ等）に書き込めば、データＲＡＭ３内の実行待ち行列３１の内容を任意に書き換えることができるので、プログラムをＲＯＭ化した後であっても、１サイクル処理で実行する処理ルーチンの実行順序、処理内容等を容易に変更可能である。また、実行待ち行列３１は、別のＲＡＭ領域やレジスタ群に格納できるようにし、その因子を指すインデックスレジスタを設けても、同様の効果が得られる。
【００２８】
本発明を前記したＣＤ再生装置のフォーカスサーボ、トラッキングサーボ、回転数サーボ、及び他のサーボの制御に利用するときは、１個のサーボ制御について予め１又は２以上の処理ルーチンをプログラムＲＯＭ２に書き込んでおき、さらに、スケジューラ２２に複数のサーボの処理ルーチンを所定の順序で組み合わせた複数種のスケジュールを書き込んでおけばよい。
【００２９】
【発明の効果】
以上から本発明によれば、１サイクル内の処理では条件分岐命令やサブルーチンからの復帰命令が不要であるから、プログラムメモリサイズと実行クロック数を大幅に削減できる。また、実行待ち行列の書き換えが可能であるから、たとえプログラムをＲＯＭ化した後であっても、１サイクル処理の実行順序や処理内容を変更できる。
【図面の簡単な説明】
【図１】  本発明の実施の形態の装置の構成を示すブロック図である。
【図２】  １個の処理ルーチンのフローチャートである。
【図３】  １サイクル処理のフローチャートである。
【図１】
0003805123.tif 000002
【図２】
0003805123.tif 000003
【図３】
0003805123.tif 000004