(57)【要約】【課題】  構成が簡単で、係数補間を行う／行わないを選択することができる係数補間回路を提供する。【解決手段】  プログラムＲＡＭ２２と、係数の変更時において変更後の新係数が記憶される係数ＲＡＭ（新）３２と、係数の変更時において変更前の旧係数が記憶される係数ＲＡＭ（中間）３４と、プログラムおよび係数に従って動作する演算回路２３が設けられている。また、プログラムＲＡＭ２２内のプログラムおよび係数ＲＡＭ３２、３４内の係数を読み出すプログラムカウンタ２７と、係数ＲＡＭ（中間）３４内の係数から係数ＲＡＭ（新）３２内の係数に向かって順次変化する係数を生成し、演算回路２３へ出力する係数補間回路５０が設けられている。そして、プログラムに含まれる補間コントロール信号ＨＣによって係数補間手段５０を有効にするか無効にするかが制御され、また、終了判定回路４４が係数補間の終了を判定する。【選択図】    図１
2006058626.tif 000002
【特許請求の範囲】
【請求項１】
プログラムが記憶されたプログラムメモリと、
係数が記憶された係数メモリと、
前記プログラムメモリ内のプログラムおよび前記係数メモリ内の係数を読み出すプログラムカウンタと、
前記プログラムおよび前記係数に従って動作する演算回路とを具備するデータ処理回路において、
前記係数の変更時において、変更後の新係数が記憶される新係数メモリと、
前記係数の変更時において、変更前の旧係数が記憶される中間係数メモリと、
前記中間係数メモリ内の旧係数から前記新係数メモリ内の新係数に向かって順次変化する係数を生成する係数生成手段と、
前記プログラムメモリから読み出されたプログラムが係数補間を指示している時は前記係数生成手段の出力を前記演算手段へ出力し、前記プログラムが係数補間を指示していない時は前記新係数メモリから読み出される係数を前記演算手段へ出力する選択手段と、
を具備することを特徴とするデータ処理回路における係数補間回路。
【請求項２】
前記係数生成手段は、前記新係数メモリから読み出された新係数を所定ビット下位方向へシフトしたデータから、前記中間係数メモリから読み出された旧係数を前記所定ビット下位方向へシフトしたデータを減算する減算手段と、
前記減算手段の出力と前記中間係数メモリの出力を加算する加算手段と、
前記加算手段の出力を前記中間係数メモリへ書き込む書込手段と、
前記新係数メモリの出力と前記加算手段の出力との差が予め決められた所定値以下になった時、補間終了と判定し、前記選択手段を前記新係数メモリ側に切り換える終了判定手段と、
を具備することを特徴とする請求項１に記載のデータ処理回路における係数補間回路。
【請求項３】
前記終了判定手段は、予め前記減算手段の出力の大きさに対応するビット数Ｎ（Ｎは正の整数）を有しており、前記新係数メモリの出力の上位Ｎビットと前記加算手段の出力の上位Ｎビットが一致した時、補間終了と判定することを特徴とする請求項２に記載のデータ処理回路における係数補間回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル楽音信号の生成等に用いて好適なデータ処理回路における係数補間回路に関する。
【背景技術】
【０００２】
楽音信号をディジタル技術によって生成する場合、音源回路によって生成したディジタル楽音信号（ＰＣＭ（Pulse Code Moduration）データ）や、外部から受けたＰＣＭデータを効果付与回路へ入力し、この効果付与回路においてエフェクト（効果）や立体音響効果を付与することが行われる。この効果付与回路は、ＦＩＲフィルタやＩＩＲフィルタ等の複数のディジタルフィルタを有して構成され、通常、各フィルタはＤＳＰ（ディジタルシグナルプロセッサ）によって構成される。
【０００３】
ＤＳＰは、周知のように、内部にプログラムＲＡＭ（ランダムアクセスメモリ）、係数ＲＡＭ、楽音データが一時記憶されるデータＲＡＭ、演算回路等を有し、プログラムＲＡＭ内のプログラムに基づいてデータＲＡＭから楽音データが読み出され、その楽音データに対し演算回路において、プログラムＲＡＭから読み出されたプログラムおよび係数ＲＡＭから読み出された係数に基づいてフィルタ演算が行われる。そして、その演算結果が次段のＤＡＣ（ディジタル／アナログコンバータ）によってアナログ信号に変換され、スピーカへ出力される。
【０００４】
なお、本願に関わる従来の技術文献として特許文献１〜３が知られている。
【特許文献１】特許第2768241号公報
【特許文献２】特許第2727802号公報
【特許文献３】特開平8-32385号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＤＳＰにおけるＰＣＭデータの処理においては、多彩な楽音を生成するため、上述した演算回路の係数をしばしば変化させる。この処理は、外部のＣＰＵ（中央処理装置）から出力される係数によって上記の係数ＲＡＭを書き換えることによって行われる。しかし、係数ＲＡＭをいきなり書き換えると、ＰＣＭデータにノイズが乗ってしまう場合がある。そこで、係数ＲＡＭを２個設け、書き換えるべき係数を第２の係数ＲＡＭに書き込み、現在使用されている第１の係数ＲＡＭの係数から第２の係数ＲＡＭの係数へ徐々に係数を変化させる係数補間回路が設けられる。しかし、係数変更においては、係数補間回路によって徐々に係数を変化させることが好ましくなく、係数変更を即座に演算に反映させたい場合もある。
また、従来使用されていた乗算器を用いた係数補間回路は回路規模が大きくなる問題があった。
【０００６】
本発明は上記事情を考慮してなされたもので、その目的は、構成が簡単で、しかも係数補間を行う／行わないを選択することができるデータ処理回路における係数補間回路を提供することにある。
【課題を解決するための手段】
【０００７】
この発明は上記の課題を解決するためになされたもので、請求項１に記載の発明は、プログラムが記憶されたプログラムメモリと、係数が記憶された係数メモリと、前記プログラムメモリ内のプログラムおよび前記係数メモリ内の係数を読み出すプログラムカウンタと、前記プログラムおよび前記係数に従って動作する演算回路とを具備するデータ処理回路において、前記係数の変更時において、変更後の新係数が記憶される新係数メモリと、前記係数の変更時において、変更前の旧係数が記憶される中間係数メモリと、前記中間係数メモリ内の旧係数から前記新係数メモリ内の新係数に向かって順次変化する係数を生成する係数生成手段と、前記プログラムメモリから読み出されたプログラムが係数補間を指示している時は前記係数生成手段の出力を前記演算手段へ出力し、前記プログラムが係数補間を指示していない時は前記新係数メモリから読み出される係数を前記演算手段へ出力する選択手段とを具備することを特徴とするデータ処理回路における係数補間回路である。
【０００８】
請求項２に記載の発明は、請求項１に記載のデータ処理回路における係数補間回路において、前記係数生成手段は、前記新係数メモリから読み出された新係数を所定ビット下位方向へシフトしたデータから、前記中間係数メモリから読み出された旧係数を前記所定ビット下位方向へシフトしたデータを減算する減算手段と、前記減算手段の出力と前記中間係数メモリの出力を加算する加算手段と、前記加算手段の出力を前記中間係数メモリへ書き込む書込手段と、前記新係数メモリの出力と前記加算手段の出力との差が予め決められた所定値以下になった時、補間終了と判定し、前記選択手段を前記新係数メモリ側に切り換える終了判定手段とを具備することを特徴とする。
【０００９】
請求項３に記載の発明は、請求項２に記載のデータ処理回路における係数補間回路において、前記終了判定手段は、予め前記減算手段の出力の大きさに対応するビット数Ｎ（Ｎは正の整数）を有しており、前記新係数メモリの出力の上位Ｎビットと前記加算手段の出力の上位Ｎビットが一致した時、補間終了と判定することを特徴とする。
【発明の効果】
【００１０】
請求項１に記載の発明によれば、プログラムメモリから読み出されたプログラムが係数補間を指示している時は係数生成手段の出力を演算手段へ出力し、プログラムが係数補間を指示していない時は新係数メモリから読み出される係数を演算手段へ出力する選択手段を有しているので、係数補間を行う／行わないを自由に選択することができる効果がある。
また、請求項２に記載の発明によれば、乗算手段を用いることなく補間処理を行うことができ、これにより構成が簡単化できる効果がある。
また、請求項３に記載の発明によれば、補間終了の判定を簡単に行うことができる効果がある。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照し、この発明の実施の形態について説明する。図１はこの発明の一実施の形態による係数補間回路を用いた楽音信号生成回路Ｇの構成を示すブロック図、  図２は図１に示す楽音信号生成回路Ｇを用いた携帯電話機の構成を示すブロック図である。図２において、符号１は回路各部を制御するＣＰＵ（中央処理装置）であり、通常の通信、通話処理を行うと共に、ゲームプログラムの処理等を行う。２はＣＰＵ１において実行されるプログラム、すなわち、通信・通話処理プログラム、ゲームプログラム、音楽再生処理プログラム等が記憶されたＲＯＭ（リードオンリメモリ）である。３はデータ記憶用の不揮発性ＲＡＭ（ランダムアクセスメモリ）であり、ＣＰＵ１が各処理の過程においてデータを一時記憶させる。
【００１２】
４は電話番号入力用のテンキー、各種ファンクションキー等が設けられた入力部５は液晶表示器による表示部である。６はアンテナ７を有する通信部であり、送信データによって搬送波を変調してアンテナ７から送信し、また、アンテナ７を介して受信した着信信号を復調してＣＰＵ１または音声処理部８へ出力する。音声処理部８はマイクロフォン９から出力された音声信号をディジタルデータに変換し、さらに圧縮し送信データとして通信部６へ出力し、また、通信部６から出力される圧縮音声データを伸張し、アナログ音声信号に変換してスピーカ１０へ出力する。楽音信号生成回路Ｇは、着信メロディ、ゲームの効果音楽，鑑賞用音楽等、各種の楽音信号を生成し、スピーカ１６へ出力する。
【００１３】
次に、図１を参照して楽音信号生成回路Ｇについて詳述する。
図１において、１２はＣＰＵ１からバスラインＢを介して供給される各種のデータおよび制御命令が一時記憶されるバッファレジスタである。１３は音源回路であり、ＣＰＵ１からバッファレジスタ１２を介して着信メロディ生成指令を受けて着信メロディのディジタル楽音信号（ＰＣＭデータ）を生成して出力する。また、ＣＰＵ１からゲームの効果音の生成指令を受けた時は、ゲームの効果音のＰＣＭデータを生成して出力する。ＤＳＰ（データ処理回路）１４は、音源回路１３から出力されるディジタル楽音信号にエフェクト、立体音響効果（３Ｄ）、ワイドステレオ効果を付与してＤＡＣ（ディジタル／アナログプロセッサ）１５へ出力する。ＤＡＣ１５はＤＳＰ１４から出力されるディジタル楽音信号をアナログ楽音信号に変換し、スピーカ１６へ出力する。
【００１４】
次に、ＤＳＰ１４において、２１はデータＲＡＭであり、音源回路１３から出力されるＰＣＭデータを一時記憶し、記憶したデータをプログラムＲＡＭ２２から出力されるプログラムに従って演算回路２３へ出力する。演算回路２３はデータＲＡＭ２１から出力されるＰＣＭデータに、プログラムＲＡＭ２２から出力されるプログラムが指定する演算を行って出力する。この場合、演算係数としてセレクタ４３から出力される係数Ｋが用いられる。２４はバッファメモリであり、演算回路２３から出力されるＰＣＭデータを一時記憶し、クロックパルスＣＬＫ１のタイミングでＤＡＣ１５へ出力する。ここで、クロックパルスＣＬＫ１はＰＣＭデータのサンプリング周波数と同じ周波数（４８ＫＨｚ）のクロックパルスである。
【００１５】
プログラムＲＡＭ２２は、予め、エフェクト用プログラム、立体音響効果用プログラム、ワイドステレオ効果用プログラム等が各々記憶されたＲＡＭであり、各プログラムはＣＰＵ１から出力されるプログラムによって書き換え可能である。
また、各プログラムの個々のステップはそれぞれ、データＲＡＭ２１のアドレス、演算回路２３への演算命令および１ビットの補正コントロール信号ＨＣを含んでいる。
【００１６】
このプログラムＲＡＭ２２は、最大７６８ステップのプログラムが記憶できるもので、各ステップがプログラムカウンタ２７から出力されるアドレスデータに従って順次読み出され出力される。例えば、エフェクト用プログラム、立体音響効果用プログラム、ワイドステレオ効果用プログラム等の１つまたは複数が７６８ステップに記憶されている。アドレス端子へ供給されるプログラムカウンタ２７のカウント出力に従って、エフェクト用プログラムが読み出され、これにより、データＲＡＭ２１から出力されるＰＣＭデータにエフェクトが付与されたり、次に立体音響効果用プログラムが読み出されたり、または、ワイドステレオ効果用プログラムが読み出され、これによりＰＣＭデータにワイドステレオ効果が付与される。プログラムカウンタ２７は７６８進のカウンタであり、次式の周波数のクロックパルスＣＬＫ２に従って０〜７６７のカウント出力を繰り返し出力する。
周波数＝４８ＫＨｚ×７６８＝３６．８６４ＭＨｚ
【００１７】
３１〜３４はいずれも演算回路２３において使用される演算係数が記憶される係数ＲＡＭであり、係数ＲＡＭ（前段）３１、係数ＲＡＭ（新）３２、係数ＲＡＭ（中間）３４は各々７６８ワード（１ワード＝１６ビット）の記憶容量を有し、係数ＲＡＭ（旧）３３は７６８バイトの記憶容量を有している。ここで、係数のビット数は１６であり、したがって、係数ＲＡＭ（前段）３１、係数ＲＡＭ（新）３２、係数ＲＡＭ（中間）３４は各々７６８個の係数を記憶可能であり、また、係数ＲＡＭ（旧）３３は７６８個の係数の上位８ビットが記憶可能である。また、各係数ＲＡＭ３１〜３４のアドレス端子にはいずれもプログラムカウンタ２７のカウント出力が加えられており、プログラムカウンタ２７のカウント出力によって指定されるアドレスに対しデータ書き込み／読み出しが行われる。すなわち、係数ＲＡＭ３１〜３４内の各係数は各々プログラムＲＡＭ２２の各プログラムステップに対応している。
【００１８】
また、係数ＲＡＭ（前段）３１はＣＰＵ１から出力される係数によって書き換えられ、また、係数ＲＡＭ（新）３２は係数ＲＡＭ（前段）３１から出力される係数によって書き換えられる。また、係数ＲＡＭ（旧）３３は係数ＲＡＭ（前段）３１またはセレクタ４３から出力される係数によって書き換えられる。この場合、セレクタ３６によって入力データの切り換えが行われる。また、係数ＲＡＭ（中間）３７は係数ＲＡＭ（前段）３１またはセレクタ４３から出力される係数によって書き換えられる。この場合、セレクタ３７によって入力データの切り換えが行われる。
【００１９】
４１は減算回路であり、係数ＲＡＭ（新）３２の出力の上位８ビットから係数ＲＡＭ（旧）３３の出力を減算する。４２は加算回路であり、減算回路４１の出力と係数ＲＡＭ（中間）３４の出力とを加算する。セレクタ４３は係数ＲＡＭ（新）３２の出力または加算回路４２の出力の一方を選択し、係数Ｋとして演算回路２３へ出力する。終了判定回路４４は、係数補間の終了を判定する回路である。４５はオアゲートであり、終了判定回路４４の出力またはアンドゲート５５から出力される補間コントロール信号ＨＣをセレクタの選択端子へ出力する。
【００２０】
上述した係数ＲＡＭ３２〜３４、セレクタ３６、３７、減算回路４１、加算回路４２、セレクタ４３、終了判定回路４４およびオアゲート４５が係数補間回路５０を構成している。この係数演算回路５０は係数変更の場合に、いきなり係数を変更すると、出力されるＰＣＭデータにノイズが含まれる虞があるので、変更前の係数から変更後の係数まで、クロックパルスＣＬＫ１の最大５１１クロックタイムをかけて徐々に係数を変化させるための回路である。
【００２１】
５１、５２は各々スタートレジスタおよびエンドレジスタであり、プログラム変更時において、ＣＰＵ１から出力される変更すべきプログラムのスタートアドレスおよびエンドアドレスが書き込まれる。例えば、プログラムＲＡＭ２２のアドレス０〜１５０に記憶されているエフェクト用プログラムの書き換えが行われる時は、スタートレジスタ５１に「０」が、エンドレジスタ５２に「１５０」が書き込まれる。５４は比較回路であり、プログラムカウンタ２７の出力と、スタートレジスタ５１、エンドレジスタ５２のデータとを比較し、プログラムカウンタ２７の出力がスタートレジスタ５１のデータと、エンドレジスタ５２のデータとの間にある場合に”１”を、それ以外の場合に”０”を出力する。
【００２２】
５５はアンドゲート（プログラムＲＡＭ２２の出力のビット数分）であり、比較回路５４の出力が”１”の時は閉状態となって、データ「０（全ビット”０”）」（ＮＯＰ命令）を出力し、比較回路５４の出力が”０”の時は開状態となって、プログラムＲＡＭ２２から出力されるプログラムステップをデータＲＡＭ２１および演算回路２３へ出力すると共に、プログラムステップに含まれる補間コントロール信号ＨＣをオアゲート４５へ出力する。データ「０」はＮＯＰ（No Operation）命令としてあるので、書き換え中の誤動作を防ぐことができる。（ＮＯＰ命令が「０」でない場合はアンドゲート５５はそのビット配列に合わせて変更する。）
【００２３】
次に、上述した楽音信号生成回路Ｇの動作を説明する。
まず、プログラムＲＡＭ２２のアドレス０〜１５０にエフェクト用プログラムが、アドレス１５１〜７６７に立体音響効果用プログラムが記憶されているとする。この場合、係数ＲＡＭ３１、３２、３４の各アドレス０〜１５０に各々、同一のエフェクト用プログラムの係数が記憶され、アドレス１５１〜７６７に各々、同一の立体音響効果用プログラムの係数が記憶されている。また、係数ＲＡＭ（旧）３３には係数ＲＡＭ（前段）３１内の各係数の上位８ビットが記憶されている。
【００２４】
このような状態において、ＣＰＵ１から、例えば着信メロディ生成指令が音源回路１３へ出力されると、音源回路１３が着信メロディのディジタル楽音信号（ＰＣＭデータ）を生成し、ＤＳＰ１４へ出力する。出力されたＰＣＭデータはデータＲＡＭ２１に一時記憶され、同時に、プログラムカウンタ２７がクロックパルスＣＬＫ２のアップカウントを開始する。プログラムカウンタ２７がクロックパルスＣＬＫ２によってアップカウントを行うと、プログラムＲＡＭ２２からプログラムステップが順次出力され、アンドゲート５５を介してデータＲＡＭ２１、演算回路２３およびオアゲート４５へ出力される。
【００２５】
一方、プログラムカウンタ２７がクロックパルスＣＬＫ２のアップカウントを行うと、係数ＲＡＭ（新）３２、係数ＲＡＭ（旧）３３および係数ＲＡＭ（中間）３４から係数が順次読み出され、減算回路４１および加算回路４２へ出力される。しかし、上述したように、係数変更がない状態では、係数ＲＡＭ（新）３２のデータの上位８ビットと係数ＲＡＭ（旧）３３のデータは同一であり、したがって、減算回路４１の出力は「０」となる。この結果、加算回路４２から係数ＲＡＭ（中間）３４の出力データが出力され、セレクタ４３を介して演算回路２３へ供給されると共にセレクタ３７を介して係数ＲＡＭ（中間）３４に書き込まれる。
【００２６】
このように、プログラムカウンタ２７がクロックパルスＣＬＫ２によってアップカウントを行うと、データＲＡＭ２１および演算回路２３へプログラムＲＡＭ２２から読み出されたプログラムステップが順次加えられ、また、係数ＲＡＭ（中間）３４から読み出された係数が係数補間回路４０を介して演算回路２３へ加えられる。これにより、エフェクト用プログラム、立体音響効果用プログラムが順次繰り返し実行される。また、係数ＲＡＭ（中間）３４から読み出された係数は再び同係数ＲＡＭ３４に戻され、同じアドレスに書き込まれる。したがって、係数ＲＡＭ（中間）３４のデータに変化はない。
【００２７】
次に、係数変更の場合の動作を説明する。
係数変更が行われる場合、まず、ＣＰＵ１が出力した変更後の係数（新係数という）が係数ＲＡＭ（前段）３１に書き込まれる。例えば、エフェクト用プログラムの係数変更が行われる場合は、ＣＰＵ１が出力した新係数が係数ＲＡＭ（前段）３１のアドレス０〜１５０に書き込まれる。
【００２８】
また、係数ＲＡＭ（新）３２内の係数は、プログラムカウンタ２７のカウント出力によって読み出される毎に、係数ＲＡＭ（前段）３１から読み出された新係数と比較器により比較され、一致していない場合は係数ＲＡＭ（新）３２内の係数が新係数に書き換えられる。そして、書き換えられた新係数が減算回路４１へ出力される。減算回路４１はこの新係数の上位８ビットから係数ＲＡＭ（旧）３３から出力される変更前の係数（旧係数という）の８ビットを減算する。減算結果を係数ＲＡＭ（中間）３４の出力（１６ビット）の下位８ビットに加算器４２で加算する。符号は上位ビットに拡張する。図６に具体的な構成例を示す。減算回路４１は入力Ａ（８ビット）から入力Ｂ（８ビット）を減算する。出力Ａ−Ｂは符号（ＳＩＧＮ１ビット）が付加されて９ビットとなる（Ｂ＞Ａの時負の値となるため）。加算器４２は入力Ａ（１６ビット）と入力Ｂ（１６ビット）を加算する。入力Ａには、減算器４１の出力が差分データとして入力される。符号（ＳＩＧＮ）は入力ＡのＭＳＢから８ビットに入力され、下位はそれ以下の８ビットに入力される。すなわち、加算器４２の入力Ａは減算器４１の出力を下位方向に８ビットシフトした差分データが入力されることになる。ここで、よく知られるように、２進数を下位方向に８ビットシフトすると、その２進数を「２５６」で割ったことになり、したがって、新係数の上位８ビットから旧係数の上位８ビットを減算し、減算器４２下位８ビット入力することは、次の差分データを加算器４２の入力Ａに与えることを意味している。
差分データ＝（新係数−旧係数）／２５６・・・（１）
【００２９】
加算回路４２は、係数ＲＡＭ（中間）３４から出力される係数に上記の差分データを加算し、次式の加算結果（中間係数という）をセレクタ４３の一方の入力端へ出力する。
中間係数＝旧係数＋差分データ・・・（２）
ここで、プログラムＲＡＭ２２から出力されるプログラムステップに含まれている補間コントロール信号ＨＣが補間実行を指示する”１”であった場合は、この中間係数がセレクタ４３から出力され、演算回路２３へ加えられる。またこの時、セレクタ３７が切り換えられ、セレクタ４３から出力された中間係数が係数ＲＡＭ（中間）３４に書き込まれる。
【００３０】
次に、クロックパルスＣＬＫ１の１クロック後（クロックパルスＣＬＫ２の７６８クロック後）、再び係数ＲＡＭ（新）３２から同じ新係数が読み出されると、減算回路４７において上記（１）式の減算が行われ、その減算結果に係数ＲＡＭ（中間）３４から読み出された中間係数（旧係数＋差分データ）に差分データがさらに加算され、次の中間係数が得られる。
中間係数＝旧係数＋２×差分データ・・・（３）
そして、この中間係数がセレクタ４３を介して演算回路２３へ出力されると共に、係数ＲＡＭ（中間）３４に書き込まれる。
【００３１】
以下、クロックパルスＣＬＫ１の１周期が経過する毎に同様の動作が繰り返され、これにより、セレクタ４３から出力される中間係数が、図３（ａ）に示すように、旧係数から新係数まで、クロックパルスＣＬＫ１のタイミングで、かつ、上記差分データのピッチで単調に増加（差分データが正の場合）または減少（差分データが負の場合）する。
【００３２】
そして、中間係数と新係数との差が上記（１）式の差分データより小になると、終了判定回路４４がそれを検知し、終了信号を出力する。この終了信号が出力されると、セレクタ３６、３７、４３が切り換えられ、係数ＲＡＭ（新）３２内の新係数が係数ＲＡＭ（旧）３３（上位８ビット）および係数ＲＡＭ（中間）３４に書き込まれる。一方、上記終了信号が出力される前にＣＰＵ１によって係数ＲＡＭ（前段）３１が書き換えられた場合は、その時点における中間係数の上位８ビットが係数ＲＡＭ（旧）に書き込まれる。これにより、以後、図３（ｂ）に示すように、その中間係数から新たな新係数（新々係数）に向かって中間係数が逐次変化する。
【００３３】
なお、上記説明は係数ＲＡＭ３１〜３４の１つのアドレスについてであるが、他のアドレスの係数についても同様の動作が行われる。すなわち、ＣＰＵ１によって新係数が、例えば、係数ＲＡＭ（前段）３１のアドレス０〜１５０に書き込まれた場合、各アドレス０〜１５０の新係数のそれぞれについて、上述した単調増加または減少による補間処理が行われる。
【００３４】
また、旧係数と新係数の各上位８ビットが一致していた場合は、減算回路４１の減算結果（差分データ）が「０」となり、この場合、補間が進まず、補間処理が終わらない。そこで、差分データが「０」の時は、係数ＲＡＭ（中間）３４の中間係数と係数ＲＡＭ（新）３２の新係数の大小比較を行い、その結果にしたがって減算回路４１の出力を、次のように、＋１または−１に置き換えるようになっている。
新係数≧中間係数・・・＋１
新係数＜中間係数・・・−１
この時、補間終了までの時間は、クロックパルスＣＬＫ１で１クロックから５１１クロックの範囲内で変動する。
【００３５】
以上が係数補間回路５０における補間処理の詳細であるが、上記の補間処理は、プログラムＲＡＭ２２内のプログラムの補間コントロール信号を”０”にすれば無効とすることができる。すなわち、補間コントロール信号が”０”の場合は、オアゲート４５から”０”信号がセレクタ４３へ出力され、これにより、セレクタ４３が係数ＲＡＭ（新）３２から出力される係数を選択して演算回路２３へ出力する。前述したように、係数ＲＡＭ（新）３２は、常時、最新の係数が書き込まれるＲＡＭであり、したがって、補間コントロール信号が”０”の場合は係数補間が行われず、最新の係数が演算回路２３へ供給される。
【００３６】
次に、プログラム変更の場合について図４のフローチャートを参照して説明する。プログラムを変更する場合には、通常、係数も変更される。
プログラムおよび係数変更が行われる場合、ＣＰＵ１が、まず、書き換え範囲を指定するデータを出力する。出力されたデータはスタートレジスタ５１およびエンドレジスタ５２に書き込まれる（ステップＳ１）。例えば、エフェクト用プログラムを書き換える場合、ＣＰＵ１がアドレス０およびアドレス１５０を出力し、これらのアドレスがスタートレジスタ５１およびエンドレジスタ５２に書き込まれる。このスタートレジスタ５１およびエンドレジスタ５２の書き込みが行われると、以後、プログラムカウンタ２７の出力がスタートアドレスからエンドアドレスの間の場合に比較回路５４から”１”が出力され、これにより、アンドゲート５５から全ビット”０”（ＮＯＰ命令）が出力される（ステップＳ２）。
【００３７】
また、プログラムおよび係数変更が行われる場合、セレクタ３６、３７が切り換えられ、係数ＲＡＭ３２〜３４の各々に係数ＲＡＭ（前段）３１の出力が書き込まれる状態となる。すなわち、係数補間回路５０における係数補間処理が実質的に行われない状態となる（ステップＳ３）。
【００３８】
次に、ＣＰＵ１が新プログラムおよび新係数を出力する。出力された新プログラムはプログラムＲＡＭ２２に書き込まれ、また、この書き込みの間、アンドゲート５５からＮＯＰ命令が出力される。したがって、書込みの間演算回路２３は異常な出力を出すことはない。また、ＣＰＵ１から出力された新係数は係数ＲＡＭ（前段）３１に書き込まれ、次いで、係数ＲＡＭ３２〜３４に書き込まれる（ステップＳ４）。係数ＲＡＭ３２〜３４の書き込みが終了すると、スタートレジスタ５１およびエンドレジスタ５２がクリアされ（ステップＳ５）、以後、新プログラムがアンドゲート５５から出力される。また、新プログラムに同期して、係数ＲＡＭ３２〜３４から新係数が出力されるが、これらは同じ係数であり、したがって、減算回路４１の出力が「０」となり、係数補間回路４０における旧係数から新係数への補間処理は行われない。この結果、プログラム変更時において、変更前の係数と変更後の係数との間で補間処理が行われるという不都合を防ぐことができる。
【００３９】
次に、終了判定回路４４の動作を図５を参照して詳述する。
前述したように、終了判定回路４４は、加算回路４２から出力される中間係数と係数ＲＡＭ（新）３２から出力される新係数との差が一定値以下になった時、終了信号をオアゲート４５を介してセレクタ４３へ出力する。このような終了判定回路４４を設けている理由は、減算回路４１から出力される差分データが新係数の上位８ビットと旧係数上位８ビットの差であるため、旧係数に差分データを順次加算していった場合に、加算結果がちょうど新係数に一致するとは限らないからである。ここで、上記の一定値は、当然に予測されるように、新係数と旧係数の差である差分データが大きいほど大きい値となり、差分データが小さい場合は小さい値となる。したがって、差分データが大きい時は新係数と中間係数の上位の複数ビットが一致すれば、新係数と中間係数の差が一定値以下になったと判断することができ、一方、差分データが小さい時は、上位から数えてさらに多くのビットが一致しなければ、新係数と中間係数の差が一定値以下になったと判断することはできないことになる。
【００４０】
終了判定回路４４はこの考えに従って形成されている。すなわち、差分データが＋１２８〜＋２５５の場合は、新係数と中間係数の各上位８ビットが一致すれば、下位８ビットがいかなるデータであっても差分データが＋１２８〜＋２５５以下になり、したがって、終了信号が出力される。差分データが＋６４〜＋１２７の場合は、新係数と中間係数の各上位９ビットが一致すれば、下位７ビットがいかなるデータであっても差分データが＋６４〜＋１２７以下になり、終了信号が出力される。図５は、このような差分データと比較ビットとの関係を示している。
【００４１】
以上がこの発明の一実施形態の詳細である。
上記実施形態によれば、プログラム中の係数コントロール信号ＨＣによって係数補間を行うか行わないかを指定することができるので、係数の１つ１つに個別に補間するかしないかを設定することが可能となり、係数変更によるノイズを抑制したい処理には係数補間を行い、係数変更時の追従性を高めたい処理には係数補間を行わないという選択を自由に行うことができる。
【００４２】
また、係数補間終了後や係数補間せずの場合に、係数ＲＡＭ（前段）３１から係数ＲＡＭ（旧）３３および係数ＲＡＭ（中間）３４への係数転送を停止することや、係数ＲＡＭ（旧）３３、係数ＲＡＭ（中間）３４の係数読み出しを停止することによってパワーセーブをすることが可能となる。
【００４３】
また、上記実施形態によれば、乗算器を使用せずに、データシフト後の差分計算によって係数補間を行うようになっている。差分計算後にデータシフトを行う場合は係数長１６ビット、補間完了まで２５６ステップの場合、係数ＲＡＭに１６ビット分全て記憶しておく必要がある。しかし、データシフト後に差分計算であると、シフト後に破棄されると分かっている下位８ビット分は最初から不要で上位８ビット分の係数だけを持っていればよいことになり、回路削減の効果がある。
【産業上の利用可能性】
【００４４】
この発明は、携帯端末における着信音やゲームの効果音の生成等に用いられる。
【図面の簡単な説明】
【００４５】
【図１】この発明の一実施形態による係数補間回路を適用した楽音信号生成回路Ｇの構成を示すブロック図である。
【図２】同楽音信号生成回路Ｇを用いた携帯電話機の構成を示すブロック図である。
【図３】同楽音信号生成回路Ｇの動作を説明するための図である。
【図４】同楽音信号生成回路Ｇの動作を説明するためのフローチャートである。
【図５】同楽音信号生成回路Ｇにおける終了判定回路４４の動作を説明するための図である。
【図６】同楽音信号生成回路Ｇにおける係数ＲＡＭ３２〜３４、減算回路４１、加算回路４２による構成をさらに詳細に示した回路図である。
【符号の説明】
【００４６】
１…ＣＰＵ、１２…バッファレジスタ、１３…音源回路、１４…データ処理回路（ＤＳＰ）、２１…データＲＡＭ、２２…プログラムＲＡＭ、２３…演算回路、２４…バッファメモリ、２７…プログラムカウンタ、３１…係数ＲＡＭ（前段）、３２…係数ＲＡＭ（新）、３３…係数ＲＡＭ（旧）、３４…係数ＲＡＭ（中間）、３６、３７、４３…セレクタ、４１…減算回路、４２…加算回路、４４…終了判定回路、５０…係数補間回路。
【図１】
2006058626.tif 000003
【図２】
2006058626.tif 000004
【図３】
2006058626.tif 000005
【図４】
2006058626.tif 000006
【図５】
2006058626.tif 000007
【図６】
2006058626.tif 000008