(57)【要約】【課題】  ＷｏｒｋＲＡＭの初期化が必要な領域のみについて、周辺回路の規模を大きくせず、複雑な制御も行わず、処理時間の増加も伴わずに初期化することができるディジタルシグナルプロセッサを提供する。【解決手段】  ＷｏｒｋＲＡＭ１６は複数のデータを書き換え可能に記憶する。信号処理部６はＷｏｒｋＲＡＭ１６から順次データを読み出し、演算処理を行う。論理回路１８はＷｏｒｋＲＡＭ１６のアドレス信号に同期してゲート回路１７ａ、１７ｂ、１７ｃの共通入力端に「１」を出力する。ゲート回路１７ａはＷｏｒｋＲＡＭ１６の入力端Ｉmに強制的にデータ「０」を書き込む。ゲート回路１７ｂはＷｏｒｋＲＡＭ１６の入力端ＷＥに書込制御信号として「１」を出力する。ゲート回路１７ｃは信号処理部６内の乗算器１１の入力端Ｘinに出力される信号を「０」に保つ。【選択図】  図１
2006139321.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを書き換え可能に記憶するデータ記憶手段と、
前記データ記憶手段から順次データを読み出し演算処理する演算手段と、
前記データ記憶手段に強制的にデータ「０」を書き込む０書込手段と、
前記データ記憶手段のアドレス信号に同期して前記０書込手段を駆動する論理回路と、
を備えたことを特徴とするディジタルシグナルプロセッサ。
【請求項２】
前記０書込手段が、前記データ記憶手段のデータ入力端へデータ「０」を出力する第１の回路と、前記データ記憶手段の書込制御信号入力端へ書込信号を出力する第２の回路と
から構成されることを特徴とする請求項１に記載のディジタルシグナルプロセッサ。
【請求項３】
プログラムが記憶されたプログラムメモリと、
前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、
前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムによって書込／読出アドレスが指定されるデータ記憶手段と、
を具備するディジタルシグナルプロセッサにおいて、
初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、
前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべきアドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、
前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、
前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータを前記データ記憶手段のアドレス端子へ出力すると共に、データ「０」をデータ端子へ出力する０書込手段と、
を具備することを特徴とするディジタルシグナルプロセッサ。
【請求項４】
前記アドレスデータ生成手段は、前記レジスタ内のデータに基づいてサブエリアの先頭アドレスを生成する先頭アドレス生成手段と、前記無アクセス検出手段が無アクセスを検出する毎にアップカウントが行われるカウンタとを有し、前記先頭アドレスおよび前記カウンタの出力に基づいてアドレスデータを生成することを特徴とする請求項３に記載のディジタルシグナルプロセッサ。
【請求項５】
プログラムが記憶されたプログラムメモリと、
前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、
前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込／読出が行われるデータ記憶手段と、
前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、
前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段と、
を具備するディジタルシグナルプロセッサにおいて、
初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、
前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、
前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、
前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「０」をデータ端子へ出力する０書込手段と、
前記アドレスカウンタの出力が変化した時前記アドレスデータに代えてデータ「０」を前記０書込手段へ出力する手段と、
を具備することを特徴とするディジタルシグナルプロセッサ。
【請求項６】
プログラムが記憶されたプログラムメモリと、
前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、
前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込／読出が行われるデータ記憶手段と、
前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、
前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段と、
を具備するディジタルシグナルプロセッサにおいて、
初期化すべきサブエリアを指定するデータが書き込まれる第１、第２のレジスタと、
前記第１のレジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成し、サブエリアの初期化終了時点で前記第１のレジスタ内の対応するデータをクリアするアドレスデータ生成手段と、
前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、
前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「０」をデータ端子へ出力する０書込手段と、
前記アドレスカウンタの出力が変化した時、前記第２のレジスタ内のデータが指示するサブエリアの各相対アドレス０番地を初期化する０番地初期化手段と、
を具備することを特徴とするディジタルシグナルプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタルフィルタ等に用いられるディジタルシグナルプロセッサに係り、特にＷｏｒｋＲＡＭ（作業用ＲＡＭ）の初期化法を改善したディジタルシグナルプロセッサに関する。
【背景技術】
【０００２】
従来、ディジタルシグナルプロセッサが、複数の処理を実施し、ＷｏｒｋＲＡＭ内のデータを初期化する必要が発生した場合に、次のような方法によって処理することが検討されている。例えば、ＷｏｒｋＲＡＭの中の全ての領域のデータを一括して初期化したり、ＷｏｒｋＲＡＭの中で、現在実行されていない処理において将来使用すべきデータを蓄積する領域のみ初期化したり、同時に初期化できるデータをグループ化して、そのグループ毎にＷｏｒｋＲＡＭを設けることにより、そのＲＡＭ単位で初期化を行う方法がある。
【０００３】
また、ディジタルシグナルプロセッサの応用例として、例えば、図７に示すような３次のＦＩＲ（有限インパルス応答）ディジタルフィルタ３において、このディジタルフィルタ３の入力信号の標本化間隔Ｔの３倍より長い時間だけ、入力データＤinを“０”に保持してフィルタ演算を行い、ディジタルフィルタ３の出力信号の初期化を行う方法が開発されている。具体的な例として、このディジタルフィルタ３の入力信号の標本化間隔Ｔ、つまり、入力データレジスタＲｇ11から第１の遅延レジスタＲｇ12へデータが伝達される時間および第１の遅延レジスタＲｇ12から第２の遅延レジスタＲｇ13へデータが伝達される時間がともに１ｍｓｅｃであるとすると、３ｍｓｅｃで入力データレジスタＲｇ11および第１の遅延データレジスタＲｇ12および第２の遅延データレジスタＲｇ13に格納されるデータ並びにディジタルフィルタ３の出力信号を初期化できることになる。
【０００４】
しかしながら、ＷｏｒｋＲＡＭ内の全ての領域のデータを初期化する方法については、初期化されては困るデータまで初期化されてしまい、且つ、ＷｏｒｋＲＡＭが初期化される期間、実行中の処理を停止させる必要があるという問題があった。
また、不使用領域を選択しての初期化については、ディジタルシグナルプロセッサが実行するプログラムやプログラム数に応じて初期化するエリアが変わるので、ディジタルシグナルプロセッサを設計する上で、初期化する範囲を指定するためのレジスタの数を一概に決めることが困難になる。さらに、初期化するエリアを指定するためのＣＰＵの処理も増加する問題がある。
また、同時に初期化可能なデータによってグループ分けをして、複数のＷｏｒｋＲＡＭに格納する方法については、複数のＷｏｒｋＲＡＭによる回路構成になり、１つのＷｏｒｋＲＡＭで構成する場合よりもレイアウト面積が大きく必要となる。また、複数のＷｏｒｋＲＡＭに対するアクセス制御や出力制御を行わなければならず制御が煩雑になるという問題もあった。  
【０００５】
また、ディジタルフィルタとして使用するときにおいて、図７のようなＦＩＲフィルタの出力データを初期化する場合に、ＦＩＲフィルタの次数が多い場合や、データの更新頻度が低い場合には初期化完了まで時間がかかり、また、ＩＩＲ（無限インパルス応答）フィルタの場合、内部に出力からのフィードバック系が存在するため、入力に“０”を与え続けても、出力データが初期化できない場合があるという問題があった。
【０００６】
尚、従来、メモリの初期化の高速化について、例えば、ディスプレイの表示更新（リフレッシュ）のときの表示用メモリの初期化用として、特定の領域のみメモリクリアをするコマンド(部分クリア)を設けていて、それにより、表示内容が変化する領域のみ、メモリ初期化を実行するようにし、動作中に必要な領域のみ初期化する、特許文献１に記載されるものが知られている。
また、従来、メモリの初期化の高速化について、例えば、装置の起動時のメモリ初期化の高速化を狙い、アドレスをマスクして初期化すべきアドレスをグループ化し、ＲＡＭ周辺回路の小規模化と、初期化処理に要する時間を短縮することを目的した、特許文献２、３、４に記載されるものが知られている。
【特許文献１】特開昭５８−３４４９０号公報
【特許文献２】特開平７−３１２０８１号公報
【特許文献３】特開平３−１０５６４０号公報
【特許文献４】特開平４−６４１５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上記事情を考慮してなされたもので、その目的は、ＷｏｒｋＲＡＭの初期化が必要な領域のみについて、周辺回路の規模を大きくせず、複雑な制御も行わず、処理時間の増加も伴わずに初期化することができるディジタルシグナルプロセッサを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、この発明では、以下の手段を提案している。
請求項１に係る発明は、ディジタルシグナルプロセッサであって、複数のデータを書き換え可能に記憶するデータ記憶手段と、前記データ記憶手段から順次データを読み出し演算処理する演算手段と、前記データ記憶手段に強制的にデータ「０」を書き込む０書込回路と、前記データ記憶手段のアドレス信号に同期して前記０書込回路を駆動する論理回路とを備えたことを特徴とするディジタルシグナルプロセッサである。
【０００９】
請求項２に係る発明は、請求項１に記載のディジタルシグナルプロセッサにおいて、前記０書込回路が、前記データ記憶手段のデータ入力端へデータ「０」を出力する第１の回路と、前記データ記憶手段の書込制御信号入力端へ書込信号を出力する第２の回路とから構成されることを特徴とする。
【００１０】
請求項３に記載の発明は、プログラムが記憶されたプログラムメモリと、前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムによって書込／読出アドレスが指定されるデータ記憶手段とを具備するディジタルシグナルプロセッサにおいて、初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべきアドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータを前記データ記憶手段のアドレス端子へ出力すると共に、データ「０」をデータ端子へ出力する０書込手段とを具備することを特徴とするディジタルシグナルプロセッサである。
【００１１】
請求項４に記載の発明は、請求項３に記載のディジタルシグナルプロセッサにおいて、前記アドレスデータ生成手段は、前記レジスタ内のデータに基づいてサブエリアの先頭アドレスを生成する先頭アドレス生成手段と、前記無アクセス検出手段が無アクセスを検出する毎にアップカウントが行われるカウンタとを有し、前記先頭アドレスおよび前記カウンタの出力に基づいてアドレスデータを生成することを特徴とする。
【００１２】
請求項５に記載の発明は、プログラムが記憶されたプログラムメモリと、前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込／読出が行われるデータ記憶手段と、前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段とを具備するディジタルシグナルプロセッサにおいて、初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「０」をデータ端子へ出力する０書込手段と、前記アドレスカウンタの出力が変化した時前記アドレスデータに代えてデータ「０」を前記０書込手段へ出力する手段とを具備することを特徴とするディジタルシグナルプロセッサである。
【００１３】
請求項６に記載の発明は、プログラムが記憶されたプログラムメモリと、前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込／読出が行われるデータ記憶手段と、前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段とを具備するディジタルシグナルプロセッサにおいて、初期化すべきサブエリアを指定するデータが書き込まれる第１、第２のレジスタと、前記第１のレジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成し、サブエリアの初期化終了時点で前記第１のレジスタ内の対応するデータをクリアするアドレスデータ生成手段と、前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「０」をデータ端子へ出力する０書込手段と、前記アドレスカウンタの出力が変化した時、前記第２のレジスタ内のデータが指示するサブエリアの各相対アドレス０番地を初期化する０番地初期化手段とを具備することを特徴とするディジタルシグナルプロセッサである。
【発明の効果】
【００１４】
本発明によれば、ディジタルシグナルプロセッサが、ＷｏｒｋＲＡＭの初期化が必要な領域のみについて初期化を行い、周辺回路の規模を大きくせず、複雑な制御も行わず、処理時間の増加も伴わずに初期化を実行することができる効果がある。
また、請求項１の発明によれば、ディジタルシグナルプロセッサが、論理回路が駆動する０書込回路によってメモリのアドレス信号に同期してデータ「０」を書込むことができるので、メモリの全ての領域のデータではなく、特定のアドレスのデータのみを初期化することが可能になる。
【００１５】
また、請求項２の発明によれば、０書込回路が単純な構成となるので、周辺回路の規模を大きくせず初期化を行うことが可能になる。
また、請求項３の発明によれば、外部のＣＰＵの介在なしに初期化を実行することができる効果がある。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照し、この発明の実施形態について説明する。
図１は、この発明の第１の実施形態によるディジタルシグナルプロセッサ５の構成を示すブロック図であり、図２は、同実施形態によるディジタルシグナルプロセッサ５によって実行される信号処理系統２の概念を示すブロック図である。この信号処理系統２は、互いに異なる特性を有するディジタルフィルタ３ａ、３ｂ、３ｃと、混合器４とから構成されている。この信号処理系統２が、入力データＰin1を入力して出力データＰoutを得る処理Ａと、入力データＰin2を入力して出力データＰoutを得る処理Ｂとを行うとする。
【００１７】
ここで、信号処理系統２における処理の例を示す。処理Ａにおいては、ディジタルフィルタ３ａの処理後にディジタルフィルタ３ｃの処理を行う。また、処理Ｂにおいては、ディジタルフィルタ３ｂの処理後にディジタルフィルタ３ｃの処理を行う。また、処理Ａと処理Ｂを共に行う場合においては、ディジタルフィルタ３ａの処理結果とディジタルフィルタ３ｂの処理結果とを、混合器４に入力し混合してからディジタルフィルタ３ｃに入力して処理を行う。
【００１８】
また、ディジタルフィルタ３ａ、３ｂ、３ｃは、図７に示す３次のＦＩＲフィルタのディジタルフィルタ３と同じ構成であるとする。これらのディジタルフィルタ３ａ、３ｂ、３ｃは、図１に示すディジタルシグナルプロセッサ５に、時分割で行われる複数の各処理に応じた係数やデータを入力し、それらのデータを用いてディジタルシグナルプロセッサ５が複数回演算を実行することにより実現される。
【００１９】
次に、図１において、ディジタルシグナルプロセッサ５は、乗算器１１、加算器１２、係数メモリ１３からなる信号処理部６(演算手段)と、アドレスカウンタ１４(演算手段)と、命令メモリ１５(演算手段)と、ＷｏｒｋＲＡＭ１６（データ記憶手段）と、ゲート回路１７ａ、１７ｂ、１７ｃ（０書込回路）と、論理回路１８とから構成される。ＷｏｒｋＲＡＭ１６のワード長は、９Ｗｏｒｄである。
【００２０】
アドレスカウンタ１４は命令メモリ１５に０から１５までのアドレス値をインクリメントして出力する。命令メモリ１５はＷｏｒｋＲＡＭ１６の入力端Ａにアクセス対象の領域のアドレスを出力し、また、ＷｏｒｋＲＡＭ１６にデータを書き込むときには、ＷｏｒｋＲＡＭライト命令信号を、オアゲート回路１７ｂを介して、ＷｏｒｋＲＡＭ１６の入力端ＷＥ（ライトイネーブル）に出力する。この場合、書き込まれるデータＤinは、アンドゲート回路１７ａを介して、ＷｏｒｋＲＡＭ１６の入力端Ｉmに入力される。一方、ＷｏｒｋＲＡＭ１６から乗算器１１へデータを読み出すときには、命令メモリ１５がＷｏｒｋＲＡＭリード命令信号を、図示しない入力端ＲＥ（リードイネーブル）に出力する。ＷｏｒｋＲＡＭ１６の出力端Ｏmから読み出されたデータはアンドゲート回路１７ｃを介して、乗算器１１の入力端Ｘinに入力される。
【００２１】
論理回路１８は、命令メモリ１５から出力されるフィルタ選択信号および外部のＣＰＵから出力されるメモリ初期化イネーブル信号を受けて、それらの信号によって論理演算を行い、ＷｏｒｋＲＡＭ１６の特定の領域を強制的に初期化するために、ゲート回路１７ａ、１７ｂ、１７ｃの共通入力端に、メモリ初期化信号ＦＣinを出力する。
【００２２】
係数メモリ１３は命令メモリ１５から出力される係数メモリアドレスによって、処理で用いる係数を乗算器１１に出力する。乗算器１１はＷｏｒｋＲＡＭ１６から読み出され入力端Ｘinに入力されたデータおよび係数メモリ１３から読み出され入力端Ｙinに入力されたデータを掛け算（乗算）し、その結果を出力端ＭＵoutから加算器１２の入力端Ａinに出力する。加算器１２は、入力端Ａinに入力された現在の入力データおよび入力端Ｂinに入力された１クロック前の加算結果を加算して出力信号Ｄoutを得る。    
【００２３】
次に、前述した信号処理系統２の動作を説明する。前述したように、信号処理系統２は、複数のディジタルフィルタ３ａ、３ｂ、３ｃからなり、且つ、ディジタルフィルタ３ａ、３ｂ、３ｃは、ディジタルシグナルプロセッサ５が複数回演算を実行することにより実現される。以下、信号処理系統２を実現する際のディジタルシグナルプロセッサ５の動作を説明する。
【００２４】
先ず、ディジタルシグナルプロセッサ５の電源が入り、ＷｏｒｋＲＡＭ１６の全領域の初期化が終了すると、論理回路１８がゲート回路１７ａ、１７ｂ、１７ｃの共通入力端にメモリ初期化信号ＦＣin を“０”にして出力し、ゲート回路１７ａ、１７ｂ、１７ｃが開く。これにより、ゲート回路１７ａ、１７ｂ、１７ｃからは各々、入力データＤin、ＷｏｒｋＲＡＭライト命令および出力端Ｏｍから出力されるデータがそのまま出力される。
【００２５】
図３（ａ）は、命令メモリ１５に格納された命令の一覧である。ここで、ＮＯＰとはＮｏｎ  Ｏｐｅｒａｔｉｏｎ（何もしない）ということを示す。図３（ｂ）は、後述するメモリ初期化実施時のＷｏｒｋＲＡＭ１６の動作状況を示す表である。
【００２６】
図４（ａ）はＷｏｒｋＲＡＭ１６内の、図４（ｂ）は係数メモリ１３内のメモリマップである。図４（ａ）のアドレスが示す領域には、データＤwx（w=1,2,3, ｘ=1,2,3）が書き込まれ、また、読み出される。アドレス「3(w-1)」、アドレス「3(w-1)+1」、アドレス「3(w-1)+2」が示す領域（w=1,2,3）は、それぞれ図７のディジタルフィルタ３における、入力データレジスタＲｇ11、第１の遅延レジスタＲｇ12、第２の遅延レジスタＲｇ13に相当する。また、図４(ｂ)に示す，Ｃwx（w=1,2,3, x=1,2,3）は、ディジタルフィルタ３ａ，３ｂ、３ｃの各係数である。
【００２７】
ここで、サフィックスwによって、データ、係数を次のように定義する。例えば、Ｄ1x(w=1)はディジタルフィルタ３ａ用の、Ｄ2x(w=2)はディジタルフィルタ３ｂ用の、Ｄ3x(w=3)はディジタルフィルタ３ｃ用の各データであるとする。係数Ｃwxについても、同様に、各ディジタルフィルタ３ａ，３ｂ、３c用の各係数とする。尚、前述した、ＷｏｒｋＲＡＭ１６内の図４（ａ）のアドレスが示す領域も同様に、サフィックスwによって、各ディジタルフィルタ３ａ，３ｂ、３c用のデータレジスタに相当するものと定義する。
先ず、デジタルフィルタ３ａについて、動作説明をする。
【００２８】
ディジタルシグナルプロセッサ５は、アドレスカウンタ１４から出力されるアドレス値（図３のステップ）に従って、命令メモリ１５に格納された命令を読み出しこの命令に基づいて処理を行う。この時、各命令による処理で使用する係数やデータを、図４（ａ）並びに図４（ｂ）に示されるＷｏｒｋＲＡＭ１６および計数メモリ１３のメモリマップから、読み出された命令が定義するアドレスに対応するデータを書き込みまたは読み出して処理を行う。例えば、図３のステップ１は「Ｄ１１入力」処理であり、入力データＤｉｎを「Ｄ１１」としてＷｏｒｋＲＡＭ１６に書き込む処理とされている。この処理では、まず、命令メモリ１５からアクセスすべきＷｏｒｋＲＡＭアドレスとして「Ｄ１１」に対応するアドレスが指定される。この「Ｄ１１」に対応するＷｏｒｋＲＡＭ領域のアドレスは、図４（ａ）のＷｏｒｋＲＡＭ１６のメモリマップからアドレス「０」としてＷｏｒｋＲＡＭ１６の入力端Ａに出力される。そして、同時に命令メモリ１５からＷｏｒｋＲＡＭライト命令が発行されＷｏｒｋＲＡＭ１６の入力端（ＷＥ）に出力されることで、ＷｏｒｋＲＡＭ１６のアドレス「０」の領域（以下、アドレス「０」領域という）にデータＤｉｎを書き込み、これをデータＤ１１として蓄積する。
また、ステップ３は「フィルタ３ａ演算（１）（Ｄ１１×Ｃ１１）」処理であり、フィルタ３ａを選択して演算（Ｄ１１×Ｃ１１）を行う処理とされている。この処理では、命令メモリ１５から、フィルタ３ａを選択するフィルタ選択信号が出力される。また、命令メモリ１５からアクセスすべきＷｏｒｋＲＡＭアドレスとして「Ｄ１１」に対応するアドレスが指定され、対応するＷｏｒｋＲＡＭ領域のアドレスとしてアドレス「０」がＷｏｒｋＲＡＭ１６の入力端Ａに出力される。同時に、命令メモリからＷｏｒｋＲＡＭリード命令が発行される図示せぬＷｏｒｋＲＡＭ１６の入力端ＲＥに入力されることで、ＷｏｒｋＲＡＭ１６のアドレス「０」領域からデータＤ１１が読み出される。併せて、命令メモリ１５からアクセスすべき係数メモリアドレスとして「Ｃ１１」に対応するアドレスが指定される。この「Ｃ１１」に対応する係数メモリアドレスは、図４（ｂ）の係数メモリマップからアドレス「０」として係数メモリ１３に出力される。そして、係数メモリ１３のアドレス「０」領域から係数Ｃ１１が読み出される。こうして、上述の読み出されたＤ１１およびＣ１１が乗算器１１にそれぞれ入力され、フィルタ３ａとしての演算、この場合、乗算Ｄ11×Ｃ11が実現されることになる。
【００２９】
以上の演算について、アドレスカウンタ１４のアドレス値が０、１、２，３、・・・１４、１５と１ステップ毎に進段して再び０に戻って命令が繰り返される。これを、１サイクルの演算とし、ディジタルシグナルプロセッサ５の入力信号の標本化間隔Ｔを周期として行われる。
【００３０】
図７に示す３次のＦＩＲディジタルフィルタ３の出力信号Ｄoutを得る為には、 ディジタルシグナルプロセッサ５において、
Ｄout  ＝  Ｄ11×Ｃ11  ＋  Ｄ12×Ｃ12  ＋  Ｄ13×Ｃ13  (式1)
といった、Ｄ1x（x=1,2,3）と、Ｃ1x（x=1,2,3）とを乗算する演算が行われることが必要である。そのため、外部のＣＰＵは、各データＤ1x（x=1,2,3）間において次のような関連付けを施し、ディジタルシグナルプロセッサ５が上述した演算処理を３サイクル行うことにより実現できるようにする。
【００３１】
すなわち、２サイクル目の演算においては、アドレス「２」領域に、アドレス「１」領域にあったデータを移動し、アドレス「１」領域に、アドレス「０」領域にあったデータを移動し、アドレス「０」領域にはそのときのディジタルフィルタ３ａの入力値Ｄinを書き込む動作を行い、３サイクル目の演算の時には、アドレス「２」領域に、２サイクル目においてアドレス「１」領域にあったデータを移動し、アドレス「１」領域に、２サイクル目にアドレス「０」領域にあったデータを移動し、アドレス「０」領域にそのときのディジタルフィルタ３ａの入力値Ｄinを書き込む動作を行う。
【００３２】
以上の経緯より、３サイクル目の演算時においては、アドレス「０」領域にそのときのディジタルフィルタ３ａの入力値Ｄinが、アドレス「１」領域に標本化間隔Ｔだけ前の時点にアドレス「０」領域にあったデータが、アドレス「２」領域には標本化間隔の２倍である２Ｔだけ前の時点にアドレス「０」領域にあったデータがそれぞれ格納されることになる。これにより、外部のＣＰＵが、アドレス「０」領域、アドレス「１」領域、アドレス「２」領域に格納されるデータＤ1x（x=1,2,3）についてＷｏｒｋＲＡＭ１６内でシフトレジスタに相当する動作を実現することになる。
【００３３】
以上より、３サイクルの演算を行った後には、それ以前の時点では不確定なデータや前回のデータが格納されていたアドレス「１」領域およびアドレス「２」領域に、必要なデータが格納され、(式1)に示す演算を行うことにより、目的とする出力Ｄoutを得る。つまり、ディジタルシグナルプロセッサ５を用いて、上述した演算を３サイクル行う際に外部のＣＰＵが、ＷｏｒｋＲＡＭ１６内のデータＤ1x（x=1,2,3）についてシフトレジスタの動作をすることにより、ディジタルフィルタ３ａを実現する。
【００３４】
また、他のディジタルフィルタ３ｂ、３ｃについても、命令メモリ１５から出力される命令により、アドレス「3(w-1)」領域、アドレス「3(w-1)+1」領域、アドレス「3(w-1)+2」領域、データＤwx、係数Ｃwx（w=2,3, x=1,2,3）を用いて、上述した各サイクルの演算において、ディジタルフィルタ３ａの処理と並行して、処理が行われる。
【００３５】
以上のように、複数の処理を行っているディジタルシグナルプロセッサ５においては、処理を初めて行う時や、データを変えて処理を再開する場合にはＷｏｒｋＲＡＭ１６内に不確定なデータや前回のデータが残っている可能性がある為、データの初期化を必要とする。    
ここで、処理Ａと処理Ｂは互いに独立であり、次のような状況が起こり得るとする。すなわち、処理Ａが動作しているが処理Ｂは停止している、または、処理Ｂが動作しているが処理Ａは停止している、または、処理Ａ、Ｂとも動作している、または、処理Ａ、Ｂとも停止している、という状況を想定する。
【００３６】
尚、本実施例におけるディジタルシグナルプロセッサ５は、１サイクルの演算において、例えば、「処理Ｂが停止している」という状況であっても、ディジタルフィルタ３ｂに関連する命令（図３（ａ）のステップ２、６〜８）を飛ばさずに処理する。つまり、「処理が動作しているか停止しているか」に関わらず、アドレスカウンタ１４のアドレス値を通常通り、０、１、２、３、・・・１４、１５と１ステップ毎に進段して命令を繰り返すことになる。
【００３７】
具体的には、本発明ではディジタルシグナルプロセッサ５は、ディジタルフィルタ３ｂに関する演算時に乗算器１１の入力を強制的に“０”にする回路を設け、ディジタルフィルタ３ｂに関する演算が行われてもディジタルシグナルプロセッサ５としては演算結果には影響がなく、あたかも「ディジタルフィルタ３ｂの処理が停止している」かのように動作する。よって、「停止している処理」についても、実際は、通常通りの処理時間を要することになる。
【００３８】
ここで、図５において、様々な処理動作の状況における、ＷｏｒｋＲＡＭの各ディジタルフィルタ用の領域毎の、メモリ初期化の可否を示す。ここで、「停止→動作」とは、処理が停止状態から動作状態へ移行することを示す。また、「動作→停止」とは、処理が動作状態から停止状態へ移行することを示す。また、「メモリ初期化可否」が「可」の場合、命令メモリ１５が論理回路１８へメモリ初期化イネーブル信号を“１”にして出力する（メモリ初期化を有効にする）ことを示す。
【００３９】
例えば、処理Ａを行っている期間中に処理Ｂの処理を開始したい場合、処理Ａに影響を与えず処理Ｂに関わるＷｏｒｋＲＡＭ１６の領域を初期化しなければならない。具体的には、図５のNo.10より、ディジタルフィルタ３ｂ用領域の初期化は可能だが、ディジタルフィルタ３ａ、３ｃ用領域の初期化は不可能となる。よって、ディジタルシグナルプロセッサ５が、ＷｏｒｋＲＡＭ１６のディジタルフィルタ３ｂ用の領域のみを初期化することが必要になる。また、ＷｏｒｋＲＡＭ１６のディジタルフィルタ３ｃ用の領域については、処理Ａまたは処理Ｂのいずれかが動作している場合、初期化は不要となる。
【００４０】
次に、論理回路１８がゲート回路１７ａ、１７ｂ、１７ｃにメモリ初期化信号ＦＣinを出力して、ＷｏｒｋＲＡＭ１６の特定の領域の初期化を行う動作の説明をする。
【００４１】
図６は、初期化制御用の論理回路１８の真理値表である。ここで、“＊”は、任意の値をとってよいことを示す。前述したように、処理Ａが動作している期間中に処理Ｂの処理の動作を開始したい場合、動作を開始する前にＷｏｒｋＲＡＭの中で初期化しなければならない領域はディジタルフィルタ３ｂ用領域である。この、ディジタルフィルタ３ｂ用領域を初期化するタイミングとしては、処理Ａに関連しない処理に関わる領域に対して処理を行っているときを選ぶのが望ましい。よって、「処理を停止している」ディジタルフィルタ３ｂ関連の処理の動作が実際に行われている期間中（ステップ６〜８）に論理回路１８がメモリ初期化信号ＦＣinを出力することにより、メモリの初期化を実現する。
【００４２】
すなわち、ステップ６〜８において、図６に示すように、命令メモリ１５が論理回路１８に、現在、ディジタルフィルタ３ｂ関連の処理の動作が行われている期間であることを示すフィルタ選択信号3bを出力しているときに、外部のＣＰＵがメモリ初期化を指示するメモリ初期化イネーブル信号を“１”にして出力すると、論理回路１８は、この２つの信号の論理演算を行い、その結果によって、ディジタルフィルタ３ｂ用領域のメモリ初期化イネーブル信号を“１”にして出力する。この時、命令メモリ１５は、Ｄ2x×Ｃ2x （x=1,2,3）の演算をする為に、ディジタルフィルタ３ｂの処理中であることを示すディジタルフィルタ選択信号3bと共にＷｏｒｋＲＡＭ１６のアドレス「３」領域、アドレス「４」領域、アドレス「５」領域からデータＤ21、Ｄ22、Ｄ23を読み出すリード命令を発行する。
【００４３】
ところで、ゲート回路１７ａ、１７ｂ、１７ｃは、論理回路１８からメモリ初期化信号ＦＣinとして“１“を入力されたときに、以下の信号を各部に出力する。すなわち、ゲート回路１７ａは、ＷｏｒｋＲＡＭ１６の入力端子Ｉｍに“０”を入力する。また、ゲート回路１７ｂは、ＷｏｒｋＲＡＭ１６の入力端ＷＥ（ライトイネーブル）に“１”を出力して、ＷｏｒｋＲＡＭ１６のライトの動作を有効化する。また、ゲート回路１７ｃは、乗算器１１の入力端Ｘｉｎへ“０”を出力する。尚、ゲート回路１７ｃは必須ではないが、ライト時に出力データが“０”にならない構成のメモリをＷｏｒｋＲＡＭ１６に使ったときにはこの回路があることが望ましい。
【００４４】
以上のように、図５のNo10に示すように、処理Ａが動作中、処理Ｂを動作停止状態から動作開始する場合の、ステップ６〜８において、ディジタルシグナルプロセッサ５が、従来技術であれば、ＷｏｒｋＲＡＭ１６のアドレス「３」領域、アドレス「４」領域、アドレス「５」領域からデータＤ21、Ｄ22、Ｄ23を読み出して乗算器１１に出力するところを、本発明では、図３（ｂ）に示すように、ゲート回路１７ａ、１７ｂが、論理回路１８から受けたメモリ初期化信号ＦＣinにより、強制的にＷｏｒｋＲＡＭ１６のアドレス「３」領域、アドレス「４」領域、アドレス「５」領域に“０”を書き込む（初期する）動作をする。また、ゲート回路１７ｃにより、乗算器１１の入力端Ｘinには“０”が入力され、信号処理には影響を与えない。
【００４５】
以上のように、上記実施形態によれば、ディジタルシグナルプロセッサが、メモリの初期化が必要な領域のみを、現在行っている処理に影響を与えずに、処理時間を増やさずに初期化を行うことが可能になる。
また、本実施形態では、ディジタルシグナルプロセッサ５を用いて、３次のＦＩＲディジタルフィルタを構成する例としたが、実際には、ディジタルフィルタの種類やフィルタ次数は問わない。
【００４６】
また、本実施形態では、停止している動作を開始する前に、関連するＷｏｒｋＲＡＭ１６の領域を初期化する例としたが、動作を停止した直後に初期化を行い、次に動作を再開する場合に備えることも可能である。この場合、メモリを初期化してから、動作を再開するまで、「処理を停止している」ディジタルフィルタの関連のステップを実際にスキップさせて、処理時間の短縮を図ることも可能である。
また、発展例として、各ディジタルフィルタの停止時に、不要なデータがフィルタ処理の演算結果として出力されないように、当該ＷｏｒｋＲＡＭ領域を初期化してもよい。
【００４７】
次に、この発明の第２の実施形態について説明する。
図８はこの発明の第２の実施形態によるディジタルシグナルプロセッサ１００を適用した楽音信号生成回路Gの構成を示すブロック図、図９は同楽音信号生成回路Gを用いた携帯電話機の構成を示すブロック図である。
【００４８】
図９において、符号１０１は携帯電話機を構成する回路各部を制御するＣＰＵ（中央処理装置）であり、通常の通信、通話処理を行うと共に、ゲームプログラムの処理等を行う。１０２はＣＰＵ１０１において実行されるプログラム、すなわち、通信・通話処理プログラム、ゲームプログラム、音楽再生処理プログラム等が記憶されたＲＯＭ（リードオンリメモリ）である。１０３はデータ記憶用の不揮発性ＲＡＭ（ランダムアクセスメモリ）であり、ＣＰＵ１０１が各処理の過程においてデータを一時記憶させる。
【００４９】
１０４は電話番号入力用のテンキー、各種ファンクションキー等が設けられた入力部、１０５は液晶表示器による表示部である。１０６はアンテナ１０７を有する通信部であり、送信データによって搬送波を変調してアンテナ１０７から送信し、また、アンテナ１０７を介して受信した着信信号を復調してＣＰＵ１０１または音声処理部１０８へ出力する。音声処理部１０８はマイクロフォン１０９から出力された音声信号をディジタルデータに変換し、さらに圧縮し送信データとして通信部１０６へ出力し、また、通信部１０６から出力される圧縮音声データを伸張し、アナログ音声信号に変換してスピーカ１１０へ出力する。楽音信号生成回路Ｇは、着信メロディ、ゲームの効果音楽，鑑賞用音楽等、各種の楽音信号を生成し、スピーカ１１６へ出力する。
【００５０】
次に、図８を参照して楽音信号生成回路Ｇについて詳述する。
図において、１１２はＣＰＵ１０１からバスラインＢを介して音源回路１１３およびディジタルシグナルプロセッサ１００を構成する各部に供給される各種のデータおよび制御命令が一時記憶されるバッファレジスタである。１１３は音源回路であり、ＣＰＵ１０１からバッファレジスタ１１２を介して着信メロディ生成指令を受けて着信メロディのディジタル楽音信号（ＰＣＭデータ）を生成して出力する。また、ＣＰＵ１０１からゲームの効果音の生成指令を受けた時は、ゲームの効果音のＰＣＭデータを生成して出力する。ディジタルシグナルプロセッサ１００は、音源回路１１３から出力されるディジタル楽音信号にエフェクト、立体音響効果（３Ｄ）、ワイドステレオ効果等を付与してＤＡＣ（ディジタル／アナログプロセッサ）１１５へ出力する。ＤＡＣ１１５はディジタルシグナルプロセッサ１００から出力されるディジタル楽音信号をアナログ楽音信号に変換し、スピーカ１１６へ出力する。
【００５１】
次に、ディジタルシグナルプロセッサ１００において、１２１はデータＲＡＭであり、音源回路１１３から出力されるＰＣＭデータを一時記憶し、記憶したデータをプログラムＲＡＭ１２２から出力されるプログラムに従って演算回路１２３へ出力する。演算回路１２３はデータＲＡＭ１２１から出力されるＰＣＭデータに、プログラムＲＡＭ１２２から出力されるプログラムが指定する演算を行って出力する。この場合、演算係数として係数ＲＡＭ１２５から出力される係数が用いられる。また、この演算回路１２３は、演算途中のデータをセレクタ１２７を介してＷｏｒｋＲＡＭ１２６へ出力し、プログラムが指定するアドレスに書き込ませ、また、プログラムが指定するＷｏｒｋＲＡＭ１２６のアドレスからデータを読み出して読み出されたデータを用いて演算を行う。
１２４はバッファメモリであり、演算回路１２３から出力されるＰＣＭデータを一時記憶し、クロックパルスＣＬＫ１のタイミングでＤＡＣ１５へ出力する。ここで、クロックパルスＣＬＫ１はＰＣＭデータのサンプリング周波数と同じ周波数（４８ＫＨｚ）のクロックパルスである。
【００５２】
プログラムＲＡＭ１２２は、予め、エフェクト用プログラム、立体音響効果用プログラム、ワイドステレオ効果用プログラム等が各々記憶されたＲＡＭであり、各プログラムはＣＰＵ１０１から出力されるプログラムを書き換え可能に記憶できる。また、各プログラムの個々のステップはそれぞれ、データＲＡＭ１２１の書込／読出アドレス、演算回路１２３への演算命令、ＷｏｒｋＲＡＭ１２６への書込／読出アドレスを含んでいる。
【００５３】
このプログラムＲＡＭ１２２は、最大７６８ステップのプログラムが記憶できるもので、各ステップがプログラムカウンタ１２８から出力されるアドレスデータに従って順次読み出される。例えば、エフェクト用プログラムがアドレス０〜１５０、立体音響効果用プログラムがアドレス１５１〜７６７に記憶されている場合は、アドレス端子へ供給されるプログラムカウンタ１２８のカウント出力であるアドレスデータに従って、まず、エフェクト用プログラムが読み出され、これにより、データＲＡＭ２１から出力されるＰＣＭデータにエフェクトが付与され、次に立体音響効果用プログラムが読み出され、エフェクトが付与されたＰＣＭデータに立体音響効果が付与される。
【００５４】
係数ＲＡＭ１２５は、演算回路１２３において使用される演算係数が記憶されたＲＡＭであり、プログラムＲＡＭ１２２の各プログラムステップに各々対応する７６８の係数が記憶され、各係数がプログラムカウンタ１２８のカウント出力によって読み出される。プログラムカウンタ１２８は７６８進のカウンタであり、次式の周波数のクロックパルスＣＬＫ２に従って０〜７６７のカウント出力を繰り返し出力する。
周波数＝４８ＫＨｚ×７６８＝３６．８６４ＭＨｚ
【００５５】
次に、ＷｏｒｋＲＡＭ１２６およびそのアドレス回路について説明する。このＷｏｒｋＲＡＭ１２６は、８ＫワードのＲＡＭであり、図１０に示すように、予め＃０〜＃３１の３２のサブエリア（１サブエリア＝２５６ワード）が連続的に分割されている。そして、１つのプログラムはサブエリア単位でＷｏｒｋＲＡＭ１２６を使用する。エフェクト用プログラムで４つのサブエリア、立体音響効果用プログラムで３つのサブエリアを使うとすると、通常は、連続したサブエリアを割り当てる。例えば、エフェクト用プログラムにはサブエリア＃０、＃１、＃２、＃３、立体音響効果用プログラムにはサブエリア＃４、＃５，＃６を割り当てる。しかし、処理の都合（例えばプログラム変更）によって、連続したサブエリアとならない場合がある。例えば、エフェクト用プログラムはサブエリア＃０、＃１、＃１０、＃２０を使用し、立体音響効果用プログラムはサブエリア＃２、＃５、＃２８を使用するというようにである。このように、各プログラムが使用するサブエリアは連続しているとは限らない。
【００５６】
このＷｏｒｋＲＡＭ１２６の書込／読出アクセス対象となるアドレスは前述したようにプログラムＲＡＭ１２２から出力される。このプログラムＲＡＭ１２２から出力されるアドレスは相対アドレスであり（以下、このアドレスを相対アドレスＳＡという）、加算回路１３１においてアドレスカウンタ（ＡＣ）１３２の出力である相対アドレスの基準となる絶対アドレスと加算されることによって絶対アドレスに変換される。そして、この絶対アドレスがセレクタ１３３を介して読出／書込アドレスとしてＷｏｒｋＲＡＭ１２６のアドレス端子へ加えられる。
【００５７】
このように、相対アドレスを使用している理由は次の通りである。すなわち、演算回路１２３において実行される演算は主にディジタルフィルタ演算であり、例えば、図７に示されるＦＩＲフィルタの演算である。このような演算においては、クロックパルスＣＬＫ１のタイミングで、レジスタＲｇ１１内のデータをレジスタＲｇ１２へ移し、レジスタＲｇ１２内のデータをレジスタＲｇ１３へ移すことが必要である。しかし、このようなデータシフト処理をプログラムで実行すると、プログラムステップを多く必要とし、時間もかかって好ましくない。そこで、この実施形態では、データを１アドレスシフトする代わりに相対アドレスを１アドレス逆方向にシフトすることによって、上述のデータシフト処理と同じ効果を得るようにしている。図１１はこの様子を示す図である。アドレスカウンタ（ＡＣ）１３２はあるｆｓタイミングでのＷｏｒｋＲＡＭ１２６の相対アドレスの基準となる絶対アドレスを示すものであるが、ここでは、アドレスカウンタ（ＡＣ）１３２の出力は、クロックパルスＣＬＫ１の１周期（１ｆｓという）が経過する毎に１絶対アドレスだけ若いアドレスに移動する。例えば、現在、アドレスカウンタ（ＡＣ）１３２の出力が絶対アドレス＃１００３を指している場合、１ｆｓ後にはアドレスカウンタ（ＡＣ）１３２が絶対アドレス＃１００２を指し、２ｆｓ後にはアドレスカウンタ（ＡＣ）１３２が絶対アドレス＃１００１を指す。また、アドレスカウンタ（ＡＣ）１３２が指しているアドレスが相対アドレス０番地となる。
【００５８】
次に、ＷｏｒｋＲＡＭ１２６の、ＣＰＵ１０１によって指定されたサブエリアを初期化する初期化回路１４０について説明する。
この初期化回路１４０は、レジスタ１４１、初期化対象サブエリア決定回路１４２、アドレス変換回路１４３、加算回路１４４、カウンタ１４５、ＡＣ更新検出回路１４６、アンドゲート１４７およびアクセス判定回路１４８から構成されている。
レジスタ１４１は３２ビットのレジスタであり、ＣＰＵ１０１から出力される初期化対象サブエリアを指定するデータが書き込まれる。例えば、ＣＰＵ１０１がサブエリア＃０、＃１、＃１０、＃２０を初期化する場合は、
１１００００００００１０００００００００１０００００００００００
なるデータがレジスタ１４１に書き込まれる。各ビットがサブエリアに対応し、左（ＭＳＢ）からサブエリア＃０，＃１、＃２・・・最右（ＬＳＢ）がサブエリア＃３１について”１”であれば初期化すべきことを示している。
【００５９】
なお、前述したように、この実施形態においては、各サブエリアの絶対アドレスがアドレスカウンタ（ＡＣ）１３２から出力される相対アドレスの基準となる絶対アドレスに従って順次変化する。例えば、サブエリア＃０の相対アドレスは常に０〜２５５であるが、絶対アドレスは、図１１の「現在」においては＃１００３〜＃１２５８であり、１ｆｓ後は＃１００２〜＃１２５７であり、２ｆｓ後は＃１００１〜＃１２５６である。
【００６０】
初期化サブエリア決定回路１４２は、レジスタ１４１の各ビットを左から順にスキャンすることによって初期化すべきサブエリアを決定し、決定したサブエリアの番号をアドレス変換回路１４３へ出力する。例えば、上記例の場合は、まず、サブエリア＃０を示すデータ「０」を出力する。また、このサブエリア決定回路１４２はカウンタ１４５の出力が「２５６」になった時、２５６ワードで構成されたサブエリアの初期化終了を検知し、レジスタ１４１の対応するビットを”１”から”０”に戻し、次いで、次に初期化すべきサブエリアをレジスタ１４１内のデータに基づいて決定し、その番号を出力する。上記例の場合はサブエリア＃１を示すデータ「１」を出力する。
【００６１】
アドレス変換回路１４３はサブエリア決定回路１４２から受けたサブエリア番号をサブエリアの先頭アドレス（相対アドレス）ＥＡに変換し、加算回路１４４へ出力する。例えば、各サブエリアは２５６ワードで構成され、各サブエリアは連続的に分割されているので、サブエリア決定回路１４２からデータ「０」が出力された場合は、サブエリア＃０としての先頭アドレスＥＡ「０」を出力する。データ「１」が出力された場合は、サブエリア＃１としての先頭アドレスＥＡ「２５６」を出力し、データ「１０」が出力された場合は、サブエリア＃１０としての先頭アドレスＥＡ「２５６０」を出力する。
カウンタ１４５は２５６進のカウンタであり、ＣＰＵ１０１によって初期化開始時点でクリアされる。以後、アクセス判定回路１４８からアクセスなしを示す無アクセス信号ＡＮが出力される毎にアップカウントが行われる。そして、カウント出力が「２５６」になった時点でクリアされ、カウント出力が「０」に戻る。
【００６２】
ＡＣ更新検出回路１４６は、アドレスカウンタ（ＡＣ）１３２が更新された場合にそれを検出し、”１”信号を出力する。アンドゲート１４７は、カウンタ１４５の出力ビット数に対応した複数のゲートから構成され、各ゲートにはカウンタ１４５の出力ビットがそれぞれ入力されている。アンドゲート１４７は、常時はＡＣ更新検出回路１４６の出力が”０”であることから、開状態にあり、カウンタ１４５の出力を加算回路１４４へ出力する。また、アドレスカウンタ（ＡＣ）１３２の更新があった時は、ＡＣ更新検出回路１４６の出力が”１”となることから、データ「０」を出力する。
【００６３】
加算回路１４４は、アドレスカウンタ（ＡＣ）１３２の出力と初期化すべきサブエリアの先頭アドレスＥＡとアンドゲート１４７の出力（通常はカウンタ１４５の出力）を加算して初期化すべきアドレスデータＡＤを生成し、セレクタ１３３を介してＷｏｒｋＲＡＭ１２６のアドレス端子へ出力する。アクセス判定回路１４８は、プログラムＲＡＭ１２２から出力されるＷｏｒｋＲＡＭ１２６の相対アドレスＳＡをクロックパルスＣＬＫ２のタイミングで常時チェックし、プログラムＲＡＭ１２２からアドレスＳＡが出力されない時、すなわち、プログラムがＷｏｒｋＲＡＭ１２６にアクセスしていない時、無アクセス信号ＡＮを出力する。
【００６４】
次に、上記構成による楽音信号生成回路Ｇの動作を説明する。
まず、初期状態において、プログラムＲＡＭ１２２のアドレス０〜１５０にエフェクト用プログラムが、アドレス１５１〜７６７に立体音響効果用プログラムが記憶されているとする。この場合、係数ＲＡＭ１２５の各アドレス０〜１５０にエフェクト用プログラムの係数が記憶され、アドレス１５１〜７６７に立体音響効果用プログラムの係数が記憶される。
【００６５】
このような状態において、ＣＰＵ１０１から、例えば着信メロディ生成指令が音源回路１１３へ出力されると、音源回路１１３が着信メロディのディジタル楽音信号（ＰＣＭデータ）を生成し、ディジタルシグナルプロセッサ１００へ出力する。出力されたＰＣＭデータはデータＲＡＭ１２１に一時記憶され、同時に、プログラムカウンタ１２８がクロックパルスＣＬＫ２のアップカウントを開始する。プログラムカウンタ１２８がクロックパルスＣＬＫ２によりアップカウントを行うと、プログラムＲＡＭ１２２からプログラムステップが順次出力され、データＲＡＭ１２１、演算回路１２３へ出力されると共に、そのプログラムステップに含まれるＷｏｒｋＲＡＭ１２６のアクセス対象となる相対アドレスＳＡが加算回路１３１においてアドレスカウンタ（ＡＣ）１３２の出力である相対アドレスの基準となる絶対アドレスと加算され、セレクタ１３３を介してアクセス対象の絶対アドレスとしてＷｏｒｋＲＡＭ１２６のアドレス端子へ供給される。また、同時に、プログラムカウンタ１２８のカウント出力に基づいて係数ＲＡＭ１２５から演算係数が読み出され、演算回路１２３へ供給される。
【００６６】
演算回路１２３は、データＲＡＭ１２１から出力されるＰＣＭデータに対し、プログラムおよび演算係数に従って演算を実行する。また、この時、ＷｏｒｋＲＡＭ１２６にデータを一時記憶し、また、記憶したデータを使用して演算を行う。そして、演算結果をバッファメモリ１２４へ書き込む。バッファメモリ１２４は演算回路１２３から受けたデータをクロックパルスＣＬＫ１のタイミングでＤＡＣ１１５へ出力する。ＤＡＣ１１５はそのデータをアナログ信号に変換し、スピーカ１１６へ出力する。
【００６７】
次に、ＷｏｒｋＲＡＭ１２６のサブエリアを初期化する場合の動作を図１１、図１２を参照して説明する。
この場合、まず、ＣＰＵ１０１が初期化すべきサブエリアを示すデータをレジスタ１４１に書き込み、次いでカウンタ１４５をクリアする。この初期化処理が行われると、以後、プログラムによるＷｏｒｋＲＡＭ１２６へのアクセスが行われないタイミングにおいてサブエリアの初期化が行われる。
【００６８】
いま、ＣＰＵ１０１がサブエリア＃０、＃１、＃２０、＃３０の初期化を指示するデータをレジスタ１４１に書き込んだとすると、まず、サブエリア決定回路１４２からサブエリア＃０を示すデータ「０」が出力され、これにより、アドレス変換回路１４３から相対アドレスである先頭アドレスＥＡ「０」が加算回路１４４へ出力される。また、カウンタ１４５からデータ「０」が出力され、アンドゲート１４７を介して加算回路１４４へ入力される。この結果、加算回路１４４から、
ＡＤ＝ＡＣ＋０＋０（但し、ＡＣはアドレスカウンタ（ＡＣ）１３２の出力）
なるアドレスデータＡＤが出力され、セレクタ１３３へ加えられる。図１１の場合、アドレスカウンタ（ＡＣ）１３２は「現在」においてはＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００３番地を示している。
【００６９】
そして、プログラムＲＡＭ１２２から相対アドレスＳＡが出力されないタイミングにおいて、アクセス判定回路１４８から無アクセス信号ＡＮが出力されると、セレクタ１３３が切り替わり、上述したアドレスデータＡＤがＷｏｒｋＲＡＭ１２６のアドレス端子へ加えられる。またこの時、同時にセレクタ１２７が切り替わり、初期化のためのデータ「０」がＷｏｒｋＲＡＭ１２６のデータ入力端へ加えられ、サブエリア＃０内の相対アドレス「０」番地に書き込まれる。これにより、サブエリア＃０内の相対アドレス「０」番地が初期化され、ＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００３番地が初期化される。なお、各サブエリアについて、サブエリア内の相対アドレスとして「０」番地から「２５５」番地の２５６アドレスが付されている。また、アクセス判定回路１４８から無アクセス信号ＡＮが出力されると、カウンタ１４５のアップカウントが行われ、そのカウント出力「１」がアンドゲートを介して加算回路１４４へ加えられる。
【００７０】
次に、プログラムカウンタ１２８がインクリメントされ、プログラムＲＡＭ１２２から次のプログラムステップが出力された時に、再び、アクセス判定回路１４８から無アクセス信号ＡＮが出力されたとすると、セレクタ１３３によりＷｏｒｋＲＡＭ１２６のアドレス端子へ、
ＡＤ＝ＡＣ＋０＋１
なるアドレスデータが加えられ、また、セレクタ１２７によりデータ入力へ初期化のためのデータ「０」が加えられ、これにより、サブエリア＃０の内の相対アドレス「１」番地、すなわちＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００４番地が初期化される。
【００７１】
同様にして、サブエリア＃０内の相対アドレス「２」番地、すなわち、ＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００５番地が初期化されたとする。図１１の「現在」はこの状態を示しており、黒丸は初期化済みを示している。そして、この時点で、アドレスカウンタ（ＡＣ）１３２の更新が行われたとすると、前述したように、アドレスカウンタ（ＡＣ）１３２から出力される絶対アドレスが１番地だけ若い番地に、つまり＃１００３番地から＃１００２番地に変わる。そして、この時、初期化すべき絶対アドレスも１番地だけ若い方へずれる（図１１における「１ｆｓ後」参照）。この時点で、カウンタ１４５の出力は「３」となるが、ＡＣ更新検出回路１４６の出力が”１”となることからアンドゲート１４７の出力が「０」となり、加算回路１４４から出力されるアドレスＡＤが、
ＡＤ＝ＡＣ＋０＋０
となる。
【００７２】
そして、アクセス判定回路１４８から無アクセス信号ＡＮが出力されると、ＷｏｒｋＲＡＭ１２６のサブエリア＃０内の相対アドレス「０」番地が再び初期化される。しかし、この「０」番地は、図１１から明らかなように、ＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００２番地とされており、上述したＡＣ更新前の「０」番地である絶対アドレス＃１００３番地とは絶対アドレスが異なっており、未だ初期化されていないアドレスである。そして、この初期化が行われると、カウンタ１４５のカウント出力が「４」となり、一方、ＡＣ更新検出回路１４６の出力が”０”に戻り、この結果、アンドゲート１４７からデータ「４」が出力され、加算回路１４４から次にアドレスデータＡＤが出力される。
ＡＤ＝ＡＣ＋０＋４
【００７３】
そして、次に無アクセス信号ＡＮが出力されると、サブエリア＃０内の相対アドレス「４」番地、すなわち、ＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００６番地が初期化され、以下、同様の処理が繰り返される。そして、例えばサブエリア＃０内の相対アドレス「２５３」番地が初期化された時点で再びアドレスカウンタ（ＡＣ）１３２の更新が行われると、再び、ＡＣ更新検出回路１４６からアドレスカウンタ（ＡＣ）１３２の更新を示す”１”が出力され、アンドゲート１４７からデータ「０」が出力される。これにより、図１１の「２ｆｓ後」に示されるように、サブエリア＃０内の相対アドレス「０」番地が再び初期化され、ＷｏｒｋＲＡＭ１２６の絶対アドレス＃１００１番地が初期化される。次いで、サブエリア＃０内の相対アドレス「２５５」番地が初期化され（ＷｏｒｋＲＡＭ１２６の絶対アドレス＃１２５５番地が初期化される）、サブエリア＃０の初期化が終了する。
【００７４】
次に、カウンタ１４５のカウント出力が「２５６」になる（サブエリア＃０の初期化終了）と、サブエリア決定回路１４２がこれを検知し、レジスタ１４１のサブエリア＃０に対応するビットをクリアし、次いで、次の初期化対象サブエリアを決定する。そして、サブエリア＃１が初期化対象として決定されると、そのサブエリアを示すデータ「１」をアドレス変換回路１４３へ出力する。アドレス変換回路１４３はデータ「１」を受け、サブエリア＃１を示す相対アドレスである先頭アドレスＥＡ「２５６」を加算回路１４４へ出力する。一方、カウンタ１４５は、カウント出力「２５６」を出力した後クリアされる。以後、上述した場合と同様の過程で、サブエリア＃１内の相対アドレスが１アドレスずつ順に初期化され、エリア全体が初期化される。
【００７５】
上述したように、アドレスカウンタ（ＡＣ）１３２が更新された場合、まず、更新後のサブエリア内の相対アドレスの「０」番地を初期化し、次いで、カウンタ１４５に従って初期化を行う。このようにしている理由は、ＡＣの更新があった後そのままカウンタ１４５に従って初期化を行うと、サブエリア内の相対アドレス「０」番地が初期化されないで残ってしまうからである。
【００７６】
図１２は上述した初期化処理の過程を示すフローチャートである。ステップＳ１において初期化すべきサブエリアの指定が行われると共に、レジスタ１４１がクリアされると、次いで、ステップＳ２、Ｓ３、Ｓ６を介してステップＳ７へ進み、サブエリアの絶対アドレス（ＡＣ＋ＥＡ＋ＣＮＴ）が初期化される。なお、ＣＮＴはカウンタ１４５のカウント出力である。次に、ステップＳ９においてカウンタ１４５がインクリメントされ、次いで、再びステップＳ３、Ｓ６を介してステップＳ７へ進み、サブエリアの初期化が行われる。
【００７７】
以下、上述したステップＳ３、Ｓ６、Ｓ７、Ｓ９が繰り返し実行される。そして、アドレスカウンタ（ＡＣ）１３２が更新されると、ステップＳ６の判断結果が「ＹＥＳ」となり、ステップＳ８へ進み、同じサブエリア内の相対アドレス「０」番地が初期化され、以後、再びステップＳ９、Ｓ３、Ｓ６、Ｓ７が繰り返される。そして、カウンタ１４５のカウント出力が「２５６」になると、ステップＳ３の判断が「ＹＥＳ」となり、ステップＳ４においてカウンタ１４５がクリアされ、次いでステップＳＳ５においてレジスタ１４１のサブエリア指示ビットがクリアされる。次いで、ステップＳ２において、レジスタ１４１内のデータに基づいて初期化すべきサブエリアが全て初期化されたか否かが判断され、判断結果が「ＮＯ」の場合は再びステップＳ３以降の処理が繰り返される。そして、ステップＳ２の判断結果が「ＹＥＳ」になると、処理を終了する。
【００７８】
次に、この発明の第３の実施形態について説明する。
上述した第２の実施形態には次の問題がある。すなわち、例えばサブエリア＃０および＃１を初期化対象とし、サブエリア＃０の初期化が完了し、サブエリア＃１の初期化の途中でアドレスカウンタ（ＡＣ）１３２の出力が変化した場合、サブエリア＃１の相対アドレス０番地は初期化されるが、サブエリア＃０の相対アドレス０番地が初期化されない状態で残ってしまう。この第３の実施形態は、このような問題を解決するものである。
【００７９】
図１３は第３の実施形態によるディジタルシグナルプロセッサ２００を適用した楽音信号生成回路Ｇ１の構成を示すブロック図であり、この図において、図８の各部と同一構成の部分には同一の符号を付し、その説明を省略する。この図に示す回路が図８に示す回路と異なる点は、初期化回路２４０の構成である。すなわち、この初期化回路２４０には、レジスタ１４１と同一構成のレジスタ２０１が設けられ、また、レジスタ１４１およびレジスタ２０１の各出力の一方を選択して初期化対象サブエリア決定回路１４２へ供給するセレクタ２０３が設けられている。
【００８０】
次に、この第３の実施形態におけるＷｏｒｋＲＡＭ１２６の初期化動作を説明する。
図１４は初期化動作の概略を示すフローチャートであり、まず、ＣＰＵ１０１が初期化対象サブエリアを指定するデータをレジスタ１４１および２０１に書き込む（ステップＳａ１）、次に、初期化回路２４０が指定されたサブエリア内を１アドレスずつ順に初期化する（ステップＳａ２）。１つのサブエリアの初期化が終了すると、レジスタ１４１内の対応するビット”１”はクリアされるが、レジスタ２０１内のビット”１”のクリアは行われない。そして、アドレスカウンタ（ＡＣ）１３２の更新時に、レジスタ２０１内のデータに基づいて初期化実行中のサブエリアを検知し、各サブエリアの相対アドレス０番地を初期化する（ステップＳａ３）。
【００８１】
以下、上記動作を図１５を参照しさらに詳述する。
いま、例えば、サブエリア＃０、＃１を初期化する場合、ＣＰＵ１０１がサブエリア＃０、＃１の初期化を指示する３２ビットのデータをレジスタ１４１およびレジスタ２０１に書き込み、次いでカウンタ１４５をクリアする。この時、ＡＣ更新検出回路１４６からは”０”が出力されており、セレクタ２０３はこの”０”を受けてレジスタ１４１のデータを初期化対象サブエリア決定回路１４２へ出力する。
【００８２】
以下、前述した第２の実施形態と同様にしてサブエリア＃０が順次初期化される。そして、初期化が終了した時点で、レジスタ１４１内のサブエリア＃０に対応するビット”１”がクリアされる。しかし、レジスタ２０１内のサブエリア＃０に対応するビット”１”はクリアされない。次に、サブエリア＃１内の相対アドレス「２」番地まで初期化され（図１５の「現在」の黒丸参照）、この時点で、アドレスカウンタ（ＡＣ）１３２が更新されたとする。アドレスカウンタ（ＡＣ）１３２が更新されると、ＡＣ更新検出回路１４６から信号”１”が出力され、これにより、アンドゲート１４７からデータ「０」が出力される。また、セレクタ２０３がレジスタ２０１の出力を初期化対象サブエリア決定回路１４２へ出力する。
【００８３】
初期化対象サブエリア決定回路１４２はレジスタ２０１の出力データに基づいて初期化対象サブエリアを検知し、サブエリア＃０および＃１を示すデータ「０」、「１」を順次出力する。初期化対象サブエリア決定回路１４２からデータ「０」が出力されると、アドレス変換回路１４３からサブエリア＃０の先頭アドレスデータであるデータＥＡ「０」が出力される。これにより加算回路１４４からアドレスデータＡＤとして、「ＡＣ＋０＋０」が出力され、次の無アクセス信号ＡＮのタイミングにおいて、ＷｏｒｋＲＡＭ１２６のサブエリア＃０内の相対アドレス「０」番地が初期化される。次いで、初期化対象サブエリア決定回路１４２からデータ「１」が出力されると、アドレス変換回路１４３からサブエリア＃１の先頭アドレスデータであるデータＥＡ「２５６」が出力される。これにより、加算回路１４４からアドレスデータＡＤとして、「ＡＣ＋２５６＋０」が出力され、次の無アクセス信号ＡＮのタイミングにおいて、ＷｏｒｋＲＡＭ１２６のサブエリア＃１内の相対アドレス「０」番地が初期化される（図１５の「１ｆｓ後」参照）。
【００８４】
このように、サブエリア＃１内の相対アドレス「２」番地まで初期化された時点でアドレスカウンタ（ＡＣ）１３２が更新されると、次のアドレス「３」番地の初期化が行われず、代わりにサブエリア＃０と＃１の各相対アドレス「０」番地が順次初期化される。なおこの間、カウンタ１４５は図示しないゲート回路によって無アクセス信号ＡＮのアップカウントが停止される。そして、これらの初期化が終了した時点でカウンタ１４５がインクリメントされ、また、ＡＣ更新検出回路１４６の出力が”０”に戻り、以後、サブエリア＃１内の相対アドレス「４」番地以降が順次初期化される。なお、上記アドレス「３」番地は図１５から明らかなように、絶対アドレス「＃１２６１」であり、このアドレスはアドレスカウンタ（ＡＣ）１３２が更新される直前において既に初期化されている。
【００８５】
次に、例えば、サブエリア＃１内の相対アドレス「２５３」番地の初期化後にアドレスカウンタ（ＡＣ）１３２の更新があった場合は、図１５の「２ｆｓ後」に示すように、サブエリア＃１内の相対アドレス「２５４」番地の初期化タイミングにおいてサブエリア＃０、＃１内の各相対アドレス「０」番地が順次初期化され、次いで、サブエリア＃１内の相対アドレス「２５５」番地から初期化が行われる。
【００８６】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲での設計変更も含まれる。
【産業上の利用可能性】
【００８７】
この発明は、携帯電話等の携帯端末における楽音信号生成等に用いられる。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１の実施形態の構成におけるディジタルシグナルプロセッサ５の構成を示すブロック図である。
【図２】同実施形態の信号処理系統２の概念を示すブロック図である。
【図３】アドレスカウンタ１４による諸命令の出力の一覧表である。
【図４】ＷｏｒｋＲＡＭ１６並びに係数メモリ１３内のメモリマップである。
【図５】ＷｏｒｋＲＡＭ１６内のメモリ初期化の可否を示す表である。
【図６】同実施形態の初期化制御用の論理回路１８の真理値表である。
【図７】３次のＦＩＲディジタルフィルタ３の動作の概念を示すブロック図である。
【図８】本発明の第２の実施形態のによるディジタルシグナルプロセッサの構成を示すブロック図である。
【図９】同実施形態を適用した携帯電話機の構成を示すブロック図である。
【図１０】同実施形態におけるＷｏｒｋＲＡＭ１２６のサブエリア構成を示す図である。
【図１１】同実施形態における初期化回路１４０の動作を説明するための説明図である。
【図１２】同実施形態における初期化回路１４０の動作を説明するためのフローチャートである。
【図１３】本発明の第３の実施形態のによるディジタルシグナルプロセッサの構成を示すブロック図である。
【図１４】同実施形態の動作を説明するためのフローチャートである。
【図１５】同実施形態における初期化回路２４０の動作を説明するための説明図である。
【符号の説明】
【００８９】
２・・・信号処理系統、３ａ、３ｂ、３ｃ・・・ディジタルフィルタ、４・・・混合器、５・・・ディジタルシグナルプロセッサ、６・・・信号処理部(演算手段)、１１・・・乗算器（演算手段）、１２・・・加算器（演算手段）、１３・・・係数メモリ（演算手段）、１４・・・アドレスカウンタ（演算手段）、１５・・・命令メモリ（演算手段）、１６・・・ＷｏｒｋＲＡＭ（データ記憶手段）、１７ａ、１７ｂ、１７ｃ・・・ゲート回路（０書込回路）、１８・・・論理回路、１００、２００…ディジタルシグナルプロセッサ、１０１…ＣＰＵ、１２１…データＲＡＭ、１２２…プログラムＲＡＭ、１２３…演算回路、１２４…バッファメモリ、１２５…係数ＲＡＭ、１２６…ＷｏｒｋＲＡＭ、１２７、１３３、２０３…セレクタ、１３１…加算回路、１３２…アドレスカウンタ、１４０、２４０…初期化回路、１４１、２０１…レジスタ、１４２…初期化対象サブエリア決定回路、１４３…アドレス変換回路、１４４…加算回路、１４５…カウンタ、１４６…ＡＣ更新検出回路、１４７…アンドゲート、１４８…アクセス判定回路、Ｇ、Ｇ１…楽音信号生成回路。
【図１】
2006139321.tif 000003
【図２】
2006139321.tif 000004
【図３】
2006139321.tif 000005
【図４】
2006139321.tif 000006
【図５】
2006139321.tif 000007
【図６】
2006139321.tif 000008
【図７】
2006139321.tif 000009
【図８】
2006139321.tif 000010
【図９】
2006139321.tif 000011
【図１０】
2006139321.tif 000012
【図１１】
2006139321.tif 000013
【図１２】
2006139321.tif 000014
【図１３】
2006139321.tif 000015
【図１４】
2006139321.tif 000016
【図１５】
2006139321.tif 000017