JP2006139321A - ディジタルシグナルプロセッサ - Google Patents

ディジタルシグナルプロセッサ Download PDF

Info

Publication number
JP2006139321A
JP2006139321A JP2004323735A JP2004323735A JP2006139321A JP 2006139321 A JP2006139321 A JP 2006139321A JP 2004323735 A JP2004323735 A JP 2004323735A JP 2004323735 A JP2004323735 A JP 2004323735A JP 2006139321 A JP2006139321 A JP 2006139321A
Authority
JP
Japan
Prior art keywords
address
data
output
program
storage means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004323735A
Other languages
English (en)
Other versions
JP4661169B2 (ja
Inventor
Yasuyuki Muraki
保之 村木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2004323735A priority Critical patent/JP4661169B2/ja
Priority to US10/986,525 priority patent/US7543130B2/en
Priority to CNB2004100957349A priority patent/CN100437825C/zh
Publication of JP2006139321A publication Critical patent/JP2006139321A/ja
Priority to US12/214,213 priority patent/US20080263268A1/en
Application granted granted Critical
Publication of JP4661169B2 publication Critical patent/JP4661169B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Image Input (AREA)
  • Memory System (AREA)

Abstract

【課題】 WorkRAMの初期化が必要な領域のみについて、周辺回路の規模を大きくせず、複雑な制御も行わず、処理時間の増加も伴わずに初期化することができるディジタルシグナルプロセッサを提供する。
【解決手段】 WorkRAM16は複数のデータを書き換え可能に記憶する。信号処理部6はWorkRAM16から順次データを読み出し、演算処理を行う。論理回路18はWorkRAM16のアドレス信号に同期してゲート回路17a、17b、17cの共通入力端に「1」を出力する。ゲート回路17aはWorkRAM16の入力端Imに強制的にデータ「0」を書き込む。ゲート回路17bはWorkRAM16の入力端WEに書込制御信号として「1」を出力する。ゲート回路17cは信号処理部6内の乗算器11の入力端Xinに出力される信号を「0」に保つ。
【選択図】 図1

Description

本発明は、ディジタルフィルタ等に用いられるディジタルシグナルプロセッサに係り、特にWorkRAM(作業用RAM)の初期化法を改善したディジタルシグナルプロセッサに関する。
従来、ディジタルシグナルプロセッサが、複数の処理を実施し、WorkRAM内のデータを初期化する必要が発生した場合に、次のような方法によって処理することが検討されている。例えば、WorkRAMの中の全ての領域のデータを一括して初期化したり、WorkRAMの中で、現在実行されていない処理において将来使用すべきデータを蓄積する領域のみ初期化したり、同時に初期化できるデータをグループ化して、そのグループ毎にWorkRAMを設けることにより、そのRAM単位で初期化を行う方法がある。
また、ディジタルシグナルプロセッサの応用例として、例えば、図7に示すような3次のFIR(有限インパルス応答)ディジタルフィルタ3において、このディジタルフィルタ3の入力信号の標本化間隔Tの3倍より長い時間だけ、入力データDinを“0”に保持してフィルタ演算を行い、ディジタルフィルタ3の出力信号の初期化を行う方法が開発されている。具体的な例として、このディジタルフィルタ3の入力信号の標本化間隔T、つまり、入力データレジスタRg11から第1の遅延レジスタRg12へデータが伝達される時間および第1の遅延レジスタRg12から第2の遅延レジスタRg13へデータが伝達される時間がともに1msecであるとすると、3msecで入力データレジスタRg11および第1の遅延データレジスタRg12および第2の遅延データレジスタRg13に格納されるデータ並びにディジタルフィルタ3の出力信号を初期化できることになる。
しかしながら、WorkRAM内の全ての領域のデータを初期化する方法については、初期化されては困るデータまで初期化されてしまい、且つ、WorkRAMが初期化される期間、実行中の処理を停止させる必要があるという問題があった。
また、不使用領域を選択しての初期化については、ディジタルシグナルプロセッサが実行するプログラムやプログラム数に応じて初期化するエリアが変わるので、ディジタルシグナルプロセッサを設計する上で、初期化する範囲を指定するためのレジスタの数を一概に決めることが困難になる。さらに、初期化するエリアを指定するためのCPUの処理も増加する問題がある。
また、同時に初期化可能なデータによってグループ分けをして、複数のWorkRAMに格納する方法については、複数のWorkRAMによる回路構成になり、1つのWorkRAMで構成する場合よりもレイアウト面積が大きく必要となる。また、複数のWorkRAMに対するアクセス制御や出力制御を行わなければならず制御が煩雑になるという問題もあった。
また、ディジタルフィルタとして使用するときにおいて、図7のようなFIRフィルタの出力データを初期化する場合に、FIRフィルタの次数が多い場合や、データの更新頻度が低い場合には初期化完了まで時間がかかり、また、IIR(無限インパルス応答)フィルタの場合、内部に出力からのフィードバック系が存在するため、入力に“0”を与え続けても、出力データが初期化できない場合があるという問題があった。
尚、従来、メモリの初期化の高速化について、例えば、ディスプレイの表示更新(リフレッシュ)のときの表示用メモリの初期化用として、特定の領域のみメモリクリアをするコマンド(部分クリア)を設けていて、それにより、表示内容が変化する領域のみ、メモリ初期化を実行するようにし、動作中に必要な領域のみ初期化する、特許文献1に記載されるものが知られている。
また、従来、メモリの初期化の高速化について、例えば、装置の起動時のメモリ初期化の高速化を狙い、アドレスをマスクして初期化すべきアドレスをグループ化し、RAM周辺回路の小規模化と、初期化処理に要する時間を短縮することを目的した、特許文献2、3、4に記載されるものが知られている。
特開昭58−34490号公報 特開平7−312081号公報 特開平3−105640号公報 特開平4−64155号公報
本発明は、上記事情を考慮してなされたもので、その目的は、WorkRAMの初期化が必要な領域のみについて、周辺回路の規模を大きくせず、複雑な制御も行わず、処理時間の増加も伴わずに初期化することができるディジタルシグナルプロセッサを提供することにある。
上記目的を達成するために、この発明では、以下の手段を提案している。
請求項1に係る発明は、ディジタルシグナルプロセッサであって、複数のデータを書き換え可能に記憶するデータ記憶手段と、前記データ記憶手段から順次データを読み出し演算処理する演算手段と、前記データ記憶手段に強制的にデータ「0」を書き込む0書込回路と、前記データ記憶手段のアドレス信号に同期して前記0書込回路を駆動する論理回路とを備えたことを特徴とするディジタルシグナルプロセッサである。
請求項2に係る発明は、請求項1に記載のディジタルシグナルプロセッサにおいて、前記0書込回路が、前記データ記憶手段のデータ入力端へデータ「0」を出力する第1の回路と、前記データ記憶手段の書込制御信号入力端へ書込信号を出力する第2の回路とから構成されることを特徴とする。
請求項3に記載の発明は、プログラムが記憶されたプログラムメモリと、前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムによって書込/読出アドレスが指定されるデータ記憶手段とを具備するディジタルシグナルプロセッサにおいて、初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべきアドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータを前記データ記憶手段のアドレス端子へ出力すると共に、データ「0」をデータ端子へ出力する0書込手段とを具備することを特徴とするディジタルシグナルプロセッサである。
請求項4に記載の発明は、請求項3に記載のディジタルシグナルプロセッサにおいて、前記アドレスデータ生成手段は、前記レジスタ内のデータに基づいてサブエリアの先頭アドレスを生成する先頭アドレス生成手段と、前記無アクセス検出手段が無アクセスを検出する毎にアップカウントが行われるカウンタとを有し、前記先頭アドレスおよび前記カウンタの出力に基づいてアドレスデータを生成することを特徴とする。
請求項5に記載の発明は、プログラムが記憶されたプログラムメモリと、前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込/読出が行われるデータ記憶手段と、前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段とを具備するディジタルシグナルプロセッサにおいて、初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「0」をデータ端子へ出力する0書込手段と、前記アドレスカウンタの出力が変化した時前記アドレスデータに代えてデータ「0」を前記0書込手段へ出力する手段とを具備することを特徴とするディジタルシグナルプロセッサである。
請求項6に記載の発明は、プログラムが記憶されたプログラムメモリと、前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込/読出が行われるデータ記憶手段と、前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段とを具備するディジタルシグナルプロセッサにおいて、初期化すべきサブエリアを指定するデータが書き込まれる第1、第2のレジスタと、前記第1のレジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成し、サブエリアの初期化終了時点で前記第1のレジスタ内の対応するデータをクリアするアドレスデータ生成手段と、前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「0」をデータ端子へ出力する0書込手段と、前記アドレスカウンタの出力が変化した時、前記第2のレジスタ内のデータが指示するサブエリアの各相対アドレス0番地を初期化する0番地初期化手段とを具備することを特徴とするディジタルシグナルプロセッサである。
本発明によれば、ディジタルシグナルプロセッサが、WorkRAMの初期化が必要な領域のみについて初期化を行い、周辺回路の規模を大きくせず、複雑な制御も行わず、処理時間の増加も伴わずに初期化を実行することができる効果がある。
また、請求項1の発明によれば、ディジタルシグナルプロセッサが、論理回路が駆動する0書込回路によってメモリのアドレス信号に同期してデータ「0」を書込むことができるので、メモリの全ての領域のデータではなく、特定のアドレスのデータのみを初期化することが可能になる。
また、請求項2の発明によれば、0書込回路が単純な構成となるので、周辺回路の規模を大きくせず初期化を行うことが可能になる。
また、請求項3の発明によれば、外部のCPUの介在なしに初期化を実行することができる効果がある。
以下、図面を参照し、この発明の実施形態について説明する。
図1は、この発明の第1の実施形態によるディジタルシグナルプロセッサ5の構成を示すブロック図であり、図2は、同実施形態によるディジタルシグナルプロセッサ5によって実行される信号処理系統2の概念を示すブロック図である。この信号処理系統2は、互いに異なる特性を有するディジタルフィルタ3a、3b、3cと、混合器4とから構成されている。この信号処理系統2が、入力データPin1を入力して出力データPoutを得る処理Aと、入力データPin2を入力して出力データPoutを得る処理Bとを行うとする。
ここで、信号処理系統2における処理の例を示す。処理Aにおいては、ディジタルフィルタ3aの処理後にディジタルフィルタ3cの処理を行う。また、処理Bにおいては、ディジタルフィルタ3bの処理後にディジタルフィルタ3cの処理を行う。また、処理Aと処理Bを共に行う場合においては、ディジタルフィルタ3aの処理結果とディジタルフィルタ3bの処理結果とを、混合器4に入力し混合してからディジタルフィルタ3cに入力して処理を行う。
また、ディジタルフィルタ3a、3b、3cは、図7に示す3次のFIRフィルタのディジタルフィルタ3と同じ構成であるとする。これらのディジタルフィルタ3a、3b、3cは、図1に示すディジタルシグナルプロセッサ5に、時分割で行われる複数の各処理に応じた係数やデータを入力し、それらのデータを用いてディジタルシグナルプロセッサ5が複数回演算を実行することにより実現される。
次に、図1において、ディジタルシグナルプロセッサ5は、乗算器11、加算器12、係数メモリ13からなる信号処理部6(演算手段)と、アドレスカウンタ14(演算手段)と、命令メモリ15(演算手段)と、WorkRAM16(データ記憶手段)と、ゲート回路17a、17b、17c(0書込回路)と、論理回路18とから構成される。WorkRAM16のワード長は、9Wordである。
アドレスカウンタ14は命令メモリ15に0から15までのアドレス値をインクリメントして出力する。命令メモリ15はWorkRAM16の入力端Aにアクセス対象の領域のアドレスを出力し、また、WorkRAM16にデータを書き込むときには、WorkRAMライト命令信号を、オアゲート回路17bを介して、WorkRAM16の入力端WE(ライトイネーブル)に出力する。この場合、書き込まれるデータDinは、アンドゲート回路17aを介して、WorkRAM16の入力端Imに入力される。一方、WorkRAM16から乗算器11へデータを読み出すときには、命令メモリ15がWorkRAMリード命令信号を、図示しない入力端RE(リードイネーブル)に出力する。WorkRAM16の出力端Omから読み出されたデータはアンドゲート回路17cを介して、乗算器11の入力端Xinに入力される。
論理回路18は、命令メモリ15から出力されるフィルタ選択信号および外部のCPUから出力されるメモリ初期化イネーブル信号を受けて、それらの信号によって論理演算を行い、WorkRAM16の特定の領域を強制的に初期化するために、ゲート回路17a、17b、17cの共通入力端に、メモリ初期化信号FCinを出力する。
係数メモリ13は命令メモリ15から出力される係数メモリアドレスによって、処理で用いる係数を乗算器11に出力する。乗算器11はWorkRAM16から読み出され入力端Xinに入力されたデータおよび係数メモリ13から読み出され入力端Yinに入力されたデータを掛け算(乗算)し、その結果を出力端MUoutから加算器12の入力端Ainに出力する。加算器12は、入力端Ainに入力された現在の入力データおよび入力端Binに入力された1クロック前の加算結果を加算して出力信号Doutを得る。
次に、前述した信号処理系統2の動作を説明する。前述したように、信号処理系統2は、複数のディジタルフィルタ3a、3b、3cからなり、且つ、ディジタルフィルタ3a、3b、3cは、ディジタルシグナルプロセッサ5が複数回演算を実行することにより実現される。以下、信号処理系統2を実現する際のディジタルシグナルプロセッサ5の動作を説明する。
先ず、ディジタルシグナルプロセッサ5の電源が入り、WorkRAM16の全領域の初期化が終了すると、論理回路18がゲート回路17a、17b、17cの共通入力端にメモリ初期化信号FCin を“0”にして出力し、ゲート回路17a、17b、17cが開く。これにより、ゲート回路17a、17b、17cからは各々、入力データDin、WorkRAMライト命令および出力端Omから出力されるデータがそのまま出力される。
図3(a)は、命令メモリ15に格納された命令の一覧である。ここで、NOPとはNon Operation(何もしない)ということを示す。図3(b)は、後述するメモリ初期化実施時のWorkRAM16の動作状況を示す表である。
図4(a)はWorkRAM16内の、図4(b)は係数メモリ13内のメモリマップである。図4(a)のアドレスが示す領域には、データDwx(w=1,2,3, x=1,2,3)が書き込まれ、また、読み出される。アドレス「3(w-1)」、アドレス「3(w-1)+1」、アドレス「3(w-1)+2」が示す領域(w=1,2,3)は、それぞれ図7のディジタルフィルタ3における、入力データレジスタRg11、第1の遅延レジスタRg12、第2の遅延レジスタRg13に相当する。また、図4(b)に示す,Cwx(w=1,2,3, x=1,2,3)は、ディジタルフィルタ3a,3b、3cの各係数である。
ここで、サフィックスwによって、データ、係数を次のように定義する。例えば、D1x(w=1)はディジタルフィルタ3a用の、D2x(w=2)はディジタルフィルタ3b用の、D3x(w=3)はディジタルフィルタ3c用の各データであるとする。係数Cwxについても、同様に、各ディジタルフィルタ3a,3b、3c用の各係数とする。尚、前述した、WorkRAM16内の図4(a)のアドレスが示す領域も同様に、サフィックスwによって、各ディジタルフィルタ3a,3b、3c用のデータレジスタに相当するものと定義する。
先ず、デジタルフィルタ3aについて、動作説明をする。
ディジタルシグナルプロセッサ5は、アドレスカウンタ14から出力されるアドレス値(図3のステップ)に従って、命令メモリ15に格納された命令を読み出しこの命令に基づいて処理を行う。この時、各命令による処理で使用する係数やデータを、図4(a)並びに図4(b)に示されるWorkRAM16および計数メモリ13のメモリマップから、読み出された命令が定義するアドレスに対応するデータを書き込みまたは読み出して処理を行う。例えば、図3のステップ1は「D11入力」処理であり、入力データDinを「D11」としてWorkRAM16に書き込む処理とされている。この処理では、まず、命令メモリ15からアクセスすべきWorkRAMアドレスとして「D11」に対応するアドレスが指定される。この「D11」に対応するWorkRAM領域のアドレスは、図4(a)のWorkRAM16のメモリマップからアドレス「0」としてWorkRAM16の入力端Aに出力される。そして、同時に命令メモリ15からWorkRAMライト命令が発行されWorkRAM16の入力端(WE)に出力されることで、WorkRAM16のアドレス「0」の領域(以下、アドレス「0」領域という)にデータDinを書き込み、これをデータD11として蓄積する。
また、ステップ3は「フィルタ3a演算(1)(D11×C11)」処理であり、フィルタ3aを選択して演算(D11×C11)を行う処理とされている。この処理では、命令メモリ15から、フィルタ3aを選択するフィルタ選択信号が出力される。また、命令メモリ15からアクセスすべきWorkRAMアドレスとして「D11」に対応するアドレスが指定され、対応するWorkRAM領域のアドレスとしてアドレス「0」がWorkRAM16の入力端Aに出力される。同時に、命令メモリからWorkRAMリード命令が発行される図示せぬWorkRAM16の入力端REに入力されることで、WorkRAM16のアドレス「0」領域からデータD11が読み出される。併せて、命令メモリ15からアクセスすべき係数メモリアドレスとして「C11」に対応するアドレスが指定される。この「C11」に対応する係数メモリアドレスは、図4(b)の係数メモリマップからアドレス「0」として係数メモリ13に出力される。そして、係数メモリ13のアドレス「0」領域から係数C11が読み出される。こうして、上述の読み出されたD11およびC11が乗算器11にそれぞれ入力され、フィルタ3aとしての演算、この場合、乗算D11×C11が実現されることになる。
以上の演算について、アドレスカウンタ14のアドレス値が0、1、2,3、・・・14、15と1ステップ毎に進段して再び0に戻って命令が繰り返される。これを、1サイクルの演算とし、ディジタルシグナルプロセッサ5の入力信号の標本化間隔Tを周期として行われる。
図7に示す3次のFIRディジタルフィルタ3の出力信号Doutを得る為には、 ディジタルシグナルプロセッサ5において、
Dout = D11×C11 + D12×C12 + D13×C13 (式1)
といった、D1x(x=1,2,3)と、C1x(x=1,2,3)とを乗算する演算が行われることが必要である。そのため、外部のCPUは、各データD1x(x=1,2,3)間において次のような関連付けを施し、ディジタルシグナルプロセッサ5が上述した演算処理を3サイクル行うことにより実現できるようにする。
すなわち、2サイクル目の演算においては、アドレス「2」領域に、アドレス「1」領域にあったデータを移動し、アドレス「1」領域に、アドレス「0」領域にあったデータを移動し、アドレス「0」領域にはそのときのディジタルフィルタ3aの入力値Dinを書き込む動作を行い、3サイクル目の演算の時には、アドレス「2」領域に、2サイクル目においてアドレス「1」領域にあったデータを移動し、アドレス「1」領域に、2サイクル目にアドレス「0」領域にあったデータを移動し、アドレス「0」領域にそのときのディジタルフィルタ3aの入力値Dinを書き込む動作を行う。
以上の経緯より、3サイクル目の演算時においては、アドレス「0」領域にそのときのディジタルフィルタ3aの入力値Dinが、アドレス「1」領域に標本化間隔Tだけ前の時点にアドレス「0」領域にあったデータが、アドレス「2」領域には標本化間隔の2倍である2Tだけ前の時点にアドレス「0」領域にあったデータがそれぞれ格納されることになる。これにより、外部のCPUが、アドレス「0」領域、アドレス「1」領域、アドレス「2」領域に格納されるデータD1x(x=1,2,3)についてWorkRAM16内でシフトレジスタに相当する動作を実現することになる。
以上より、3サイクルの演算を行った後には、それ以前の時点では不確定なデータや前回のデータが格納されていたアドレス「1」領域およびアドレス「2」領域に、必要なデータが格納され、(式1)に示す演算を行うことにより、目的とする出力Doutを得る。つまり、ディジタルシグナルプロセッサ5を用いて、上述した演算を3サイクル行う際に外部のCPUが、WorkRAM16内のデータD1x(x=1,2,3)についてシフトレジスタの動作をすることにより、ディジタルフィルタ3aを実現する。
また、他のディジタルフィルタ3b、3cについても、命令メモリ15から出力される命令により、アドレス「3(w-1)」領域、アドレス「3(w-1)+1」領域、アドレス「3(w-1)+2」領域、データDwx、係数Cwx(w=2,3, x=1,2,3)を用いて、上述した各サイクルの演算において、ディジタルフィルタ3aの処理と並行して、処理が行われる。
以上のように、複数の処理を行っているディジタルシグナルプロセッサ5においては、処理を初めて行う時や、データを変えて処理を再開する場合にはWorkRAM16内に不確定なデータや前回のデータが残っている可能性がある為、データの初期化を必要とする。
ここで、処理Aと処理Bは互いに独立であり、次のような状況が起こり得るとする。すなわち、処理Aが動作しているが処理Bは停止している、または、処理Bが動作しているが処理Aは停止している、または、処理A、Bとも動作している、または、処理A、Bとも停止している、という状況を想定する。
尚、本実施例におけるディジタルシグナルプロセッサ5は、1サイクルの演算において、例えば、「処理Bが停止している」という状況であっても、ディジタルフィルタ3bに関連する命令(図3(a)のステップ2、6〜8)を飛ばさずに処理する。つまり、「処理が動作しているか停止しているか」に関わらず、アドレスカウンタ14のアドレス値を通常通り、0、1、2、3、・・・14、15と1ステップ毎に進段して命令を繰り返すことになる。
具体的には、本発明ではディジタルシグナルプロセッサ5は、ディジタルフィルタ3bに関する演算時に乗算器11の入力を強制的に“0”にする回路を設け、ディジタルフィルタ3bに関する演算が行われてもディジタルシグナルプロセッサ5としては演算結果には影響がなく、あたかも「ディジタルフィルタ3bの処理が停止している」かのように動作する。よって、「停止している処理」についても、実際は、通常通りの処理時間を要することになる。
ここで、図5において、様々な処理動作の状況における、WorkRAMの各ディジタルフィルタ用の領域毎の、メモリ初期化の可否を示す。ここで、「停止→動作」とは、処理が停止状態から動作状態へ移行することを示す。また、「動作→停止」とは、処理が動作状態から停止状態へ移行することを示す。また、「メモリ初期化可否」が「可」の場合、命令メモリ15が論理回路18へメモリ初期化イネーブル信号を“1”にして出力する(メモリ初期化を有効にする)ことを示す。
例えば、処理Aを行っている期間中に処理Bの処理を開始したい場合、処理Aに影響を与えず処理Bに関わるWorkRAM16の領域を初期化しなければならない。具体的には、図5のNo.10より、ディジタルフィルタ3b用領域の初期化は可能だが、ディジタルフィルタ3a、3c用領域の初期化は不可能となる。よって、ディジタルシグナルプロセッサ5が、WorkRAM16のディジタルフィルタ3b用の領域のみを初期化することが必要になる。また、WorkRAM16のディジタルフィルタ3c用の領域については、処理Aまたは処理Bのいずれかが動作している場合、初期化は不要となる。
次に、論理回路18がゲート回路17a、17b、17cにメモリ初期化信号FCinを出力して、WorkRAM16の特定の領域の初期化を行う動作の説明をする。
図6は、初期化制御用の論理回路18の真理値表である。ここで、“*”は、任意の値をとってよいことを示す。前述したように、処理Aが動作している期間中に処理Bの処理の動作を開始したい場合、動作を開始する前にWorkRAMの中で初期化しなければならない領域はディジタルフィルタ3b用領域である。この、ディジタルフィルタ3b用領域を初期化するタイミングとしては、処理Aに関連しない処理に関わる領域に対して処理を行っているときを選ぶのが望ましい。よって、「処理を停止している」ディジタルフィルタ3b関連の処理の動作が実際に行われている期間中(ステップ6〜8)に論理回路18がメモリ初期化信号FCinを出力することにより、メモリの初期化を実現する。
すなわち、ステップ6〜8において、図6に示すように、命令メモリ15が論理回路18に、現在、ディジタルフィルタ3b関連の処理の動作が行われている期間であることを示すフィルタ選択信号3bを出力しているときに、外部のCPUがメモリ初期化を指示するメモリ初期化イネーブル信号を“1”にして出力すると、論理回路18は、この2つの信号の論理演算を行い、その結果によって、ディジタルフィルタ3b用領域のメモリ初期化イネーブル信号を“1”にして出力する。この時、命令メモリ15は、D2x×C2x (x=1,2,3)の演算をする為に、ディジタルフィルタ3bの処理中であることを示すディジタルフィルタ選択信号3bと共にWorkRAM16のアドレス「3」領域、アドレス「4」領域、アドレス「5」領域からデータD21、D22、D23を読み出すリード命令を発行する。
ところで、ゲート回路17a、17b、17cは、論理回路18からメモリ初期化信号FCinとして“1“を入力されたときに、以下の信号を各部に出力する。すなわち、ゲート回路17aは、WorkRAM16の入力端子Imに“0”を入力する。また、ゲート回路17bは、WorkRAM16の入力端WE(ライトイネーブル)に“1”を出力して、WorkRAM16のライトの動作を有効化する。また、ゲート回路17cは、乗算器11の入力端Xinへ“0”を出力する。尚、ゲート回路17cは必須ではないが、ライト時に出力データが“0”にならない構成のメモリをWorkRAM16に使ったときにはこの回路があることが望ましい。
以上のように、図5のNo10に示すように、処理Aが動作中、処理Bを動作停止状態から動作開始する場合の、ステップ6〜8において、ディジタルシグナルプロセッサ5が、従来技術であれば、WorkRAM16のアドレス「3」領域、アドレス「4」領域、アドレス「5」領域からデータD21、D22、D23を読み出して乗算器11に出力するところを、本発明では、図3(b)に示すように、ゲート回路17a、17bが、論理回路18から受けたメモリ初期化信号FCinにより、強制的にWorkRAM16のアドレス「3」領域、アドレス「4」領域、アドレス「5」領域に“0”を書き込む(初期する)動作をする。また、ゲート回路17cにより、乗算器11の入力端Xinには“0”が入力され、信号処理には影響を与えない。
以上のように、上記実施形態によれば、ディジタルシグナルプロセッサが、メモリの初期化が必要な領域のみを、現在行っている処理に影響を与えずに、処理時間を増やさずに初期化を行うことが可能になる。
また、本実施形態では、ディジタルシグナルプロセッサ5を用いて、3次のFIRディジタルフィルタを構成する例としたが、実際には、ディジタルフィルタの種類やフィルタ次数は問わない。
また、本実施形態では、停止している動作を開始する前に、関連するWorkRAM16の領域を初期化する例としたが、動作を停止した直後に初期化を行い、次に動作を再開する場合に備えることも可能である。この場合、メモリを初期化してから、動作を再開するまで、「処理を停止している」ディジタルフィルタの関連のステップを実際にスキップさせて、処理時間の短縮を図ることも可能である。
また、発展例として、各ディジタルフィルタの停止時に、不要なデータがフィルタ処理の演算結果として出力されないように、当該WorkRAM領域を初期化してもよい。
次に、この発明の第2の実施形態について説明する。
図8はこの発明の第2の実施形態によるディジタルシグナルプロセッサ100を適用した楽音信号生成回路Gの構成を示すブロック図、図9は同楽音信号生成回路Gを用いた携帯電話機の構成を示すブロック図である。
図9において、符号101は携帯電話機を構成する回路各部を制御するCPU(中央処理装置)であり、通常の通信、通話処理を行うと共に、ゲームプログラムの処理等を行う。102はCPU101において実行されるプログラム、すなわち、通信・通話処理プログラム、ゲームプログラム、音楽再生処理プログラム等が記憶されたROM(リードオンリメモリ)である。103はデータ記憶用の不揮発性RAM(ランダムアクセスメモリ)であり、CPU101が各処理の過程においてデータを一時記憶させる。
104は電話番号入力用のテンキー、各種ファンクションキー等が設けられた入力部、105は液晶表示器による表示部である。106はアンテナ107を有する通信部であり、送信データによって搬送波を変調してアンテナ107から送信し、また、アンテナ107を介して受信した着信信号を復調してCPU101または音声処理部108へ出力する。音声処理部108はマイクロフォン109から出力された音声信号をディジタルデータに変換し、さらに圧縮し送信データとして通信部106へ出力し、また、通信部106から出力される圧縮音声データを伸張し、アナログ音声信号に変換してスピーカ110へ出力する。楽音信号生成回路Gは、着信メロディ、ゲームの効果音楽,鑑賞用音楽等、各種の楽音信号を生成し、スピーカ116へ出力する。
次に、図8を参照して楽音信号生成回路Gについて詳述する。
図において、112はCPU101からバスラインBを介して音源回路113およびディジタルシグナルプロセッサ100を構成する各部に供給される各種のデータおよび制御命令が一時記憶されるバッファレジスタである。113は音源回路であり、CPU101からバッファレジスタ112を介して着信メロディ生成指令を受けて着信メロディのディジタル楽音信号(PCMデータ)を生成して出力する。また、CPU101からゲームの効果音の生成指令を受けた時は、ゲームの効果音のPCMデータを生成して出力する。ディジタルシグナルプロセッサ100は、音源回路113から出力されるディジタル楽音信号にエフェクト、立体音響効果(3D)、ワイドステレオ効果等を付与してDAC(ディジタル/アナログプロセッサ)115へ出力する。DAC115はディジタルシグナルプロセッサ100から出力されるディジタル楽音信号をアナログ楽音信号に変換し、スピーカ116へ出力する。
次に、ディジタルシグナルプロセッサ100において、121はデータRAMであり、音源回路113から出力されるPCMデータを一時記憶し、記憶したデータをプログラムRAM122から出力されるプログラムに従って演算回路123へ出力する。演算回路123はデータRAM121から出力されるPCMデータに、プログラムRAM122から出力されるプログラムが指定する演算を行って出力する。この場合、演算係数として係数RAM125から出力される係数が用いられる。また、この演算回路123は、演算途中のデータをセレクタ127を介してWorkRAM126へ出力し、プログラムが指定するアドレスに書き込ませ、また、プログラムが指定するWorkRAM126のアドレスからデータを読み出して読み出されたデータを用いて演算を行う。
124はバッファメモリであり、演算回路123から出力されるPCMデータを一時記憶し、クロックパルスCLK1のタイミングでDAC15へ出力する。ここで、クロックパルスCLK1はPCMデータのサンプリング周波数と同じ周波数(48KHz)のクロックパルスである。
プログラムRAM122は、予め、エフェクト用プログラム、立体音響効果用プログラム、ワイドステレオ効果用プログラム等が各々記憶されたRAMであり、各プログラムはCPU101から出力されるプログラムを書き換え可能に記憶できる。また、各プログラムの個々のステップはそれぞれ、データRAM121の書込/読出アドレス、演算回路123への演算命令、WorkRAM126への書込/読出アドレスを含んでいる。
このプログラムRAM122は、最大768ステップのプログラムが記憶できるもので、各ステップがプログラムカウンタ128から出力されるアドレスデータに従って順次読み出される。例えば、エフェクト用プログラムがアドレス0〜150、立体音響効果用プログラムがアドレス151〜767に記憶されている場合は、アドレス端子へ供給されるプログラムカウンタ128のカウント出力であるアドレスデータに従って、まず、エフェクト用プログラムが読み出され、これにより、データRAM21から出力されるPCMデータにエフェクトが付与され、次に立体音響効果用プログラムが読み出され、エフェクトが付与されたPCMデータに立体音響効果が付与される。
係数RAM125は、演算回路123において使用される演算係数が記憶されたRAMであり、プログラムRAM122の各プログラムステップに各々対応する768の係数が記憶され、各係数がプログラムカウンタ128のカウント出力によって読み出される。プログラムカウンタ128は768進のカウンタであり、次式の周波数のクロックパルスCLK2に従って0〜767のカウント出力を繰り返し出力する。
周波数=48KHz×768=36.864MHz
次に、WorkRAM126およびそのアドレス回路について説明する。このWorkRAM126は、8KワードのRAMであり、図10に示すように、予め#0〜#31の32のサブエリア(1サブエリア=256ワード)が連続的に分割されている。そして、1つのプログラムはサブエリア単位でWorkRAM126を使用する。エフェクト用プログラムで4つのサブエリア、立体音響効果用プログラムで3つのサブエリアを使うとすると、通常は、連続したサブエリアを割り当てる。例えば、エフェクト用プログラムにはサブエリア#0、#1、#2、#3、立体音響効果用プログラムにはサブエリア#4、#5,#6を割り当てる。しかし、処理の都合(例えばプログラム変更)によって、連続したサブエリアとならない場合がある。例えば、エフェクト用プログラムはサブエリア#0、#1、#10、#20を使用し、立体音響効果用プログラムはサブエリア#2、#5、#28を使用するというようにである。このように、各プログラムが使用するサブエリアは連続しているとは限らない。
このWorkRAM126の書込/読出アクセス対象となるアドレスは前述したようにプログラムRAM122から出力される。このプログラムRAM122から出力されるアドレスは相対アドレスであり(以下、このアドレスを相対アドレスSAという)、加算回路131においてアドレスカウンタ(AC)132の出力である相対アドレスの基準となる絶対アドレスと加算されることによって絶対アドレスに変換される。そして、この絶対アドレスがセレクタ133を介して読出/書込アドレスとしてWorkRAM126のアドレス端子へ加えられる。
このように、相対アドレスを使用している理由は次の通りである。すなわち、演算回路123において実行される演算は主にディジタルフィルタ演算であり、例えば、図7に示されるFIRフィルタの演算である。このような演算においては、クロックパルスCLK1のタイミングで、レジスタRg11内のデータをレジスタRg12へ移し、レジスタRg12内のデータをレジスタRg13へ移すことが必要である。しかし、このようなデータシフト処理をプログラムで実行すると、プログラムステップを多く必要とし、時間もかかって好ましくない。そこで、この実施形態では、データを1アドレスシフトする代わりに相対アドレスを1アドレス逆方向にシフトすることによって、上述のデータシフト処理と同じ効果を得るようにしている。図11はこの様子を示す図である。アドレスカウンタ(AC)132はあるfsタイミングでのWorkRAM126の相対アドレスの基準となる絶対アドレスを示すものであるが、ここでは、アドレスカウンタ(AC)132の出力は、クロックパルスCLK1の1周期(1fsという)が経過する毎に1絶対アドレスだけ若いアドレスに移動する。例えば、現在、アドレスカウンタ(AC)132の出力が絶対アドレス#1003を指している場合、1fs後にはアドレスカウンタ(AC)132が絶対アドレス#1002を指し、2fs後にはアドレスカウンタ(AC)132が絶対アドレス#1001を指す。また、アドレスカウンタ(AC)132が指しているアドレスが相対アドレス0番地となる。
次に、WorkRAM126の、CPU101によって指定されたサブエリアを初期化する初期化回路140について説明する。
この初期化回路140は、レジスタ141、初期化対象サブエリア決定回路142、アドレス変換回路143、加算回路144、カウンタ145、AC更新検出回路146、アンドゲート147およびアクセス判定回路148から構成されている。
レジスタ141は32ビットのレジスタであり、CPU101から出力される初期化対象サブエリアを指定するデータが書き込まれる。例えば、CPU101がサブエリア#0、#1、#10、#20を初期化する場合は、
11000000001000000000100000000000
なるデータがレジスタ141に書き込まれる。各ビットがサブエリアに対応し、左(MSB)からサブエリア#0,#1、#2・・・最右(LSB)がサブエリア#31について”1”であれば初期化すべきことを示している。
なお、前述したように、この実施形態においては、各サブエリアの絶対アドレスがアドレスカウンタ(AC)132から出力される相対アドレスの基準となる絶対アドレスに従って順次変化する。例えば、サブエリア#0の相対アドレスは常に0〜255であるが、絶対アドレスは、図11の「現在」においては#1003〜#1258であり、1fs後は#1002〜#1257であり、2fs後は#1001〜#1256である。
初期化サブエリア決定回路142は、レジスタ141の各ビットを左から順にスキャンすることによって初期化すべきサブエリアを決定し、決定したサブエリアの番号をアドレス変換回路143へ出力する。例えば、上記例の場合は、まず、サブエリア#0を示すデータ「0」を出力する。また、このサブエリア決定回路142はカウンタ145の出力が「256」になった時、256ワードで構成されたサブエリアの初期化終了を検知し、レジスタ141の対応するビットを”1”から”0”に戻し、次いで、次に初期化すべきサブエリアをレジスタ141内のデータに基づいて決定し、その番号を出力する。上記例の場合はサブエリア#1を示すデータ「1」を出力する。
アドレス変換回路143はサブエリア決定回路142から受けたサブエリア番号をサブエリアの先頭アドレス(相対アドレス)EAに変換し、加算回路144へ出力する。例えば、各サブエリアは256ワードで構成され、各サブエリアは連続的に分割されているので、サブエリア決定回路142からデータ「0」が出力された場合は、サブエリア#0としての先頭アドレスEA「0」を出力する。データ「1」が出力された場合は、サブエリア#1としての先頭アドレスEA「256」を出力し、データ「10」が出力された場合は、サブエリア#10としての先頭アドレスEA「2560」を出力する。
カウンタ145は256進のカウンタであり、CPU101によって初期化開始時点でクリアされる。以後、アクセス判定回路148からアクセスなしを示す無アクセス信号ANが出力される毎にアップカウントが行われる。そして、カウント出力が「256」になった時点でクリアされ、カウント出力が「0」に戻る。
AC更新検出回路146は、アドレスカウンタ(AC)132が更新された場合にそれを検出し、”1”信号を出力する。アンドゲート147は、カウンタ145の出力ビット数に対応した複数のゲートから構成され、各ゲートにはカウンタ145の出力ビットがそれぞれ入力されている。アンドゲート147は、常時はAC更新検出回路146の出力が”0”であることから、開状態にあり、カウンタ145の出力を加算回路144へ出力する。また、アドレスカウンタ(AC)132の更新があった時は、AC更新検出回路146の出力が”1”となることから、データ「0」を出力する。
加算回路144は、アドレスカウンタ(AC)132の出力と初期化すべきサブエリアの先頭アドレスEAとアンドゲート147の出力(通常はカウンタ145の出力)を加算して初期化すべきアドレスデータADを生成し、セレクタ133を介してWorkRAM126のアドレス端子へ出力する。アクセス判定回路148は、プログラムRAM122から出力されるWorkRAM126の相対アドレスSAをクロックパルスCLK2のタイミングで常時チェックし、プログラムRAM122からアドレスSAが出力されない時、すなわち、プログラムがWorkRAM126にアクセスしていない時、無アクセス信号ANを出力する。
次に、上記構成による楽音信号生成回路Gの動作を説明する。
まず、初期状態において、プログラムRAM122のアドレス0〜150にエフェクト用プログラムが、アドレス151〜767に立体音響効果用プログラムが記憶されているとする。この場合、係数RAM125の各アドレス0〜150にエフェクト用プログラムの係数が記憶され、アドレス151〜767に立体音響効果用プログラムの係数が記憶される。
このような状態において、CPU101から、例えば着信メロディ生成指令が音源回路113へ出力されると、音源回路113が着信メロディのディジタル楽音信号(PCMデータ)を生成し、ディジタルシグナルプロセッサ100へ出力する。出力されたPCMデータはデータRAM121に一時記憶され、同時に、プログラムカウンタ128がクロックパルスCLK2のアップカウントを開始する。プログラムカウンタ128がクロックパルスCLK2によりアップカウントを行うと、プログラムRAM122からプログラムステップが順次出力され、データRAM121、演算回路123へ出力されると共に、そのプログラムステップに含まれるWorkRAM126のアクセス対象となる相対アドレスSAが加算回路131においてアドレスカウンタ(AC)132の出力である相対アドレスの基準となる絶対アドレスと加算され、セレクタ133を介してアクセス対象の絶対アドレスとしてWorkRAM126のアドレス端子へ供給される。また、同時に、プログラムカウンタ128のカウント出力に基づいて係数RAM125から演算係数が読み出され、演算回路123へ供給される。
演算回路123は、データRAM121から出力されるPCMデータに対し、プログラムおよび演算係数に従って演算を実行する。また、この時、WorkRAM126にデータを一時記憶し、また、記憶したデータを使用して演算を行う。そして、演算結果をバッファメモリ124へ書き込む。バッファメモリ124は演算回路123から受けたデータをクロックパルスCLK1のタイミングでDAC115へ出力する。DAC115はそのデータをアナログ信号に変換し、スピーカ116へ出力する。
次に、WorkRAM126のサブエリアを初期化する場合の動作を図11、図12を参照して説明する。
この場合、まず、CPU101が初期化すべきサブエリアを示すデータをレジスタ141に書き込み、次いでカウンタ145をクリアする。この初期化処理が行われると、以後、プログラムによるWorkRAM126へのアクセスが行われないタイミングにおいてサブエリアの初期化が行われる。
いま、CPU101がサブエリア#0、#1、#20、#30の初期化を指示するデータをレジスタ141に書き込んだとすると、まず、サブエリア決定回路142からサブエリア#0を示すデータ「0」が出力され、これにより、アドレス変換回路143から相対アドレスである先頭アドレスEA「0」が加算回路144へ出力される。また、カウンタ145からデータ「0」が出力され、アンドゲート147を介して加算回路144へ入力される。この結果、加算回路144から、
AD=AC+0+0(但し、ACはアドレスカウンタ(AC)132の出力)
なるアドレスデータADが出力され、セレクタ133へ加えられる。図11の場合、アドレスカウンタ(AC)132は「現在」においてはWorkRAM126の絶対アドレス#1003番地を示している。
そして、プログラムRAM122から相対アドレスSAが出力されないタイミングにおいて、アクセス判定回路148から無アクセス信号ANが出力されると、セレクタ133が切り替わり、上述したアドレスデータADがWorkRAM126のアドレス端子へ加えられる。またこの時、同時にセレクタ127が切り替わり、初期化のためのデータ「0」がWorkRAM126のデータ入力端へ加えられ、サブエリア#0内の相対アドレス「0」番地に書き込まれる。これにより、サブエリア#0内の相対アドレス「0」番地が初期化され、WorkRAM126の絶対アドレス#1003番地が初期化される。なお、各サブエリアについて、サブエリア内の相対アドレスとして「0」番地から「255」番地の256アドレスが付されている。また、アクセス判定回路148から無アクセス信号ANが出力されると、カウンタ145のアップカウントが行われ、そのカウント出力「1」がアンドゲートを介して加算回路144へ加えられる。
次に、プログラムカウンタ128がインクリメントされ、プログラムRAM122から次のプログラムステップが出力された時に、再び、アクセス判定回路148から無アクセス信号ANが出力されたとすると、セレクタ133によりWorkRAM126のアドレス端子へ、
AD=AC+0+1
なるアドレスデータが加えられ、また、セレクタ127によりデータ入力へ初期化のためのデータ「0」が加えられ、これにより、サブエリア#0の内の相対アドレス「1」番地、すなわちWorkRAM126の絶対アドレス#1004番地が初期化される。
同様にして、サブエリア#0内の相対アドレス「2」番地、すなわち、WorkRAM126の絶対アドレス#1005番地が初期化されたとする。図11の「現在」はこの状態を示しており、黒丸は初期化済みを示している。そして、この時点で、アドレスカウンタ(AC)132の更新が行われたとすると、前述したように、アドレスカウンタ(AC)132から出力される絶対アドレスが1番地だけ若い番地に、つまり#1003番地から#1002番地に変わる。そして、この時、初期化すべき絶対アドレスも1番地だけ若い方へずれる(図11における「1fs後」参照)。この時点で、カウンタ145の出力は「3」となるが、AC更新検出回路146の出力が”1”となることからアンドゲート147の出力が「0」となり、加算回路144から出力されるアドレスADが、
AD=AC+0+0
となる。
そして、アクセス判定回路148から無アクセス信号ANが出力されると、WorkRAM126のサブエリア#0内の相対アドレス「0」番地が再び初期化される。しかし、この「0」番地は、図11から明らかなように、WorkRAM126の絶対アドレス#1002番地とされており、上述したAC更新前の「0」番地である絶対アドレス#1003番地とは絶対アドレスが異なっており、未だ初期化されていないアドレスである。そして、この初期化が行われると、カウンタ145のカウント出力が「4」となり、一方、AC更新検出回路146の出力が”0”に戻り、この結果、アンドゲート147からデータ「4」が出力され、加算回路144から次にアドレスデータADが出力される。
AD=AC+0+4
そして、次に無アクセス信号ANが出力されると、サブエリア#0内の相対アドレス「4」番地、すなわち、WorkRAM126の絶対アドレス#1006番地が初期化され、以下、同様の処理が繰り返される。そして、例えばサブエリア#0内の相対アドレス「253」番地が初期化された時点で再びアドレスカウンタ(AC)132の更新が行われると、再び、AC更新検出回路146からアドレスカウンタ(AC)132の更新を示す”1”が出力され、アンドゲート147からデータ「0」が出力される。これにより、図11の「2fs後」に示されるように、サブエリア#0内の相対アドレス「0」番地が再び初期化され、WorkRAM126の絶対アドレス#1001番地が初期化される。次いで、サブエリア#0内の相対アドレス「255」番地が初期化され(WorkRAM126の絶対アドレス#1255番地が初期化される)、サブエリア#0の初期化が終了する。
次に、カウンタ145のカウント出力が「256」になる(サブエリア#0の初期化終了)と、サブエリア決定回路142がこれを検知し、レジスタ141のサブエリア#0に対応するビットをクリアし、次いで、次の初期化対象サブエリアを決定する。そして、サブエリア#1が初期化対象として決定されると、そのサブエリアを示すデータ「1」をアドレス変換回路143へ出力する。アドレス変換回路143はデータ「1」を受け、サブエリア#1を示す相対アドレスである先頭アドレスEA「256」を加算回路144へ出力する。一方、カウンタ145は、カウント出力「256」を出力した後クリアされる。以後、上述した場合と同様の過程で、サブエリア#1内の相対アドレスが1アドレスずつ順に初期化され、エリア全体が初期化される。
上述したように、アドレスカウンタ(AC)132が更新された場合、まず、更新後のサブエリア内の相対アドレスの「0」番地を初期化し、次いで、カウンタ145に従って初期化を行う。このようにしている理由は、ACの更新があった後そのままカウンタ145に従って初期化を行うと、サブエリア内の相対アドレス「0」番地が初期化されないで残ってしまうからである。
図12は上述した初期化処理の過程を示すフローチャートである。ステップS1において初期化すべきサブエリアの指定が行われると共に、レジスタ141がクリアされると、次いで、ステップS2、S3、S6を介してステップS7へ進み、サブエリアの絶対アドレス(AC+EA+CNT)が初期化される。なお、CNTはカウンタ145のカウント出力である。次に、ステップS9においてカウンタ145がインクリメントされ、次いで、再びステップS3、S6を介してステップS7へ進み、サブエリアの初期化が行われる。
以下、上述したステップS3、S6、S7、S9が繰り返し実行される。そして、アドレスカウンタ(AC)132が更新されると、ステップS6の判断結果が「YES」となり、ステップS8へ進み、同じサブエリア内の相対アドレス「0」番地が初期化され、以後、再びステップS9、S3、S6、S7が繰り返される。そして、カウンタ145のカウント出力が「256」になると、ステップS3の判断が「YES」となり、ステップS4においてカウンタ145がクリアされ、次いでステップSS5においてレジスタ141のサブエリア指示ビットがクリアされる。次いで、ステップS2において、レジスタ141内のデータに基づいて初期化すべきサブエリアが全て初期化されたか否かが判断され、判断結果が「NO」の場合は再びステップS3以降の処理が繰り返される。そして、ステップS2の判断結果が「YES」になると、処理を終了する。
次に、この発明の第3の実施形態について説明する。
上述した第2の実施形態には次の問題がある。すなわち、例えばサブエリア#0および#1を初期化対象とし、サブエリア#0の初期化が完了し、サブエリア#1の初期化の途中でアドレスカウンタ(AC)132の出力が変化した場合、サブエリア#1の相対アドレス0番地は初期化されるが、サブエリア#0の相対アドレス0番地が初期化されない状態で残ってしまう。この第3の実施形態は、このような問題を解決するものである。
図13は第3の実施形態によるディジタルシグナルプロセッサ200を適用した楽音信号生成回路G1の構成を示すブロック図であり、この図において、図8の各部と同一構成の部分には同一の符号を付し、その説明を省略する。この図に示す回路が図8に示す回路と異なる点は、初期化回路240の構成である。すなわち、この初期化回路240には、レジスタ141と同一構成のレジスタ201が設けられ、また、レジスタ141およびレジスタ201の各出力の一方を選択して初期化対象サブエリア決定回路142へ供給するセレクタ203が設けられている。
次に、この第3の実施形態におけるWorkRAM126の初期化動作を説明する。
図14は初期化動作の概略を示すフローチャートであり、まず、CPU101が初期化対象サブエリアを指定するデータをレジスタ141および201に書き込む(ステップSa1)、次に、初期化回路240が指定されたサブエリア内を1アドレスずつ順に初期化する(ステップSa2)。1つのサブエリアの初期化が終了すると、レジスタ141内の対応するビット”1”はクリアされるが、レジスタ201内のビット”1”のクリアは行われない。そして、アドレスカウンタ(AC)132の更新時に、レジスタ201内のデータに基づいて初期化実行中のサブエリアを検知し、各サブエリアの相対アドレス0番地を初期化する(ステップSa3)。
以下、上記動作を図15を参照しさらに詳述する。
いま、例えば、サブエリア#0、#1を初期化する場合、CPU101がサブエリア#0、#1の初期化を指示する32ビットのデータをレジスタ141およびレジスタ201に書き込み、次いでカウンタ145をクリアする。この時、AC更新検出回路146からは”0”が出力されており、セレクタ203はこの”0”を受けてレジスタ141のデータを初期化対象サブエリア決定回路142へ出力する。
以下、前述した第2の実施形態と同様にしてサブエリア#0が順次初期化される。そして、初期化が終了した時点で、レジスタ141内のサブエリア#0に対応するビット”1”がクリアされる。しかし、レジスタ201内のサブエリア#0に対応するビット”1”はクリアされない。次に、サブエリア#1内の相対アドレス「2」番地まで初期化され(図15の「現在」の黒丸参照)、この時点で、アドレスカウンタ(AC)132が更新されたとする。アドレスカウンタ(AC)132が更新されると、AC更新検出回路146から信号”1”が出力され、これにより、アンドゲート147からデータ「0」が出力される。また、セレクタ203がレジスタ201の出力を初期化対象サブエリア決定回路142へ出力する。
初期化対象サブエリア決定回路142はレジスタ201の出力データに基づいて初期化対象サブエリアを検知し、サブエリア#0および#1を示すデータ「0」、「1」を順次出力する。初期化対象サブエリア決定回路142からデータ「0」が出力されると、アドレス変換回路143からサブエリア#0の先頭アドレスデータであるデータEA「0」が出力される。これにより加算回路144からアドレスデータADとして、「AC+0+0」が出力され、次の無アクセス信号ANのタイミングにおいて、WorkRAM126のサブエリア#0内の相対アドレス「0」番地が初期化される。次いで、初期化対象サブエリア決定回路142からデータ「1」が出力されると、アドレス変換回路143からサブエリア#1の先頭アドレスデータであるデータEA「256」が出力される。これにより、加算回路144からアドレスデータADとして、「AC+256+0」が出力され、次の無アクセス信号ANのタイミングにおいて、WorkRAM126のサブエリア#1内の相対アドレス「0」番地が初期化される(図15の「1fs後」参照)。
このように、サブエリア#1内の相対アドレス「2」番地まで初期化された時点でアドレスカウンタ(AC)132が更新されると、次のアドレス「3」番地の初期化が行われず、代わりにサブエリア#0と#1の各相対アドレス「0」番地が順次初期化される。なおこの間、カウンタ145は図示しないゲート回路によって無アクセス信号ANのアップカウントが停止される。そして、これらの初期化が終了した時点でカウンタ145がインクリメントされ、また、AC更新検出回路146の出力が”0”に戻り、以後、サブエリア#1内の相対アドレス「4」番地以降が順次初期化される。なお、上記アドレス「3」番地は図15から明らかなように、絶対アドレス「#1261」であり、このアドレスはアドレスカウンタ(AC)132が更新される直前において既に初期化されている。
次に、例えば、サブエリア#1内の相対アドレス「253」番地の初期化後にアドレスカウンタ(AC)132の更新があった場合は、図15の「2fs後」に示すように、サブエリア#1内の相対アドレス「254」番地の初期化タイミングにおいてサブエリア#0、#1内の各相対アドレス「0」番地が順次初期化され、次いで、サブエリア#1内の相対アドレス「255」番地から初期化が行われる。
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲での設計変更も含まれる。
この発明は、携帯電話等の携帯端末における楽音信号生成等に用いられる。
本発明の第1の実施形態の構成におけるディジタルシグナルプロセッサ5の構成を示すブロック図である。 同実施形態の信号処理系統2の概念を示すブロック図である。 アドレスカウンタ14による諸命令の出力の一覧表である。 WorkRAM16並びに係数メモリ13内のメモリマップである。 WorkRAM16内のメモリ初期化の可否を示す表である。 同実施形態の初期化制御用の論理回路18の真理値表である。 3次のFIRディジタルフィルタ3の動作の概念を示すブロック図である。 本発明の第2の実施形態のによるディジタルシグナルプロセッサの構成を示すブロック図である。 同実施形態を適用した携帯電話機の構成を示すブロック図である。 同実施形態におけるWorkRAM126のサブエリア構成を示す図である。 同実施形態における初期化回路140の動作を説明するための説明図である。 同実施形態における初期化回路140の動作を説明するためのフローチャートである。 本発明の第3の実施形態のによるディジタルシグナルプロセッサの構成を示すブロック図である。 同実施形態の動作を説明するためのフローチャートである。 同実施形態における初期化回路240の動作を説明するための説明図である。
符号の説明
2・・・信号処理系統、3a、3b、3c・・・ディジタルフィルタ、4・・・混合器、5・・・ディジタルシグナルプロセッサ、6・・・信号処理部(演算手段)、11・・・乗算器(演算手段)、12・・・加算器(演算手段)、13・・・係数メモリ(演算手段)、14・・・アドレスカウンタ(演算手段)、15・・・命令メモリ(演算手段)、16・・・WorkRAM(データ記憶手段)、17a、17b、17c・・・ゲート回路(0書込回路)、18・・・論理回路、100、200…ディジタルシグナルプロセッサ、101…CPU、121…データRAM、122…プログラムRAM、123…演算回路、124…バッファメモリ、125…係数RAM、126…WorkRAM、127、133、203…セレクタ、131…加算回路、132…アドレスカウンタ、140、240…初期化回路、141、201…レジスタ、142…初期化対象サブエリア決定回路、143…アドレス変換回路、144…加算回路、145…カウンタ、146…AC更新検出回路、147…アンドゲート、148…アクセス判定回路、G、G1…楽音信号生成回路。

Claims (6)

  1. 複数のデータを書き換え可能に記憶するデータ記憶手段と、
    前記データ記憶手段から順次データを読み出し演算処理する演算手段と、
    前記データ記憶手段に強制的にデータ「0」を書き込む0書込手段と、
    前記データ記憶手段のアドレス信号に同期して前記0書込手段を駆動する論理回路と、
    を備えたことを特徴とするディジタルシグナルプロセッサ。
  2. 前記0書込手段が、前記データ記憶手段のデータ入力端へデータ「0」を出力する第1の回路と、前記データ記憶手段の書込制御信号入力端へ書込信号を出力する第2の回路と
    から構成されることを特徴とする請求項1に記載のディジタルシグナルプロセッサ。
  3. プログラムが記憶されたプログラムメモリと、
    前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、
    前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムによって書込/読出アドレスが指定されるデータ記憶手段と、
    を具備するディジタルシグナルプロセッサにおいて、
    初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、
    前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべきアドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、
    前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、
    前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータを前記データ記憶手段のアドレス端子へ出力すると共に、データ「0」をデータ端子へ出力する0書込手段と、
    を具備することを特徴とするディジタルシグナルプロセッサ。
  4. 前記アドレスデータ生成手段は、前記レジスタ内のデータに基づいてサブエリアの先頭アドレスを生成する先頭アドレス生成手段と、前記無アクセス検出手段が無アクセスを検出する毎にアップカウントが行われるカウンタとを有し、前記先頭アドレスおよび前記カウンタの出力に基づいてアドレスデータを生成することを特徴とする請求項3に記載のディジタルシグナルプロセッサ。
  5. プログラムが記憶されたプログラムメモリと、
    前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、
    前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込/読出が行われるデータ記憶手段と、
    前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、
    前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段と、
    を具備するディジタルシグナルプロセッサにおいて、
    初期化すべきサブエリアを指定するデータが書き込まれるレジスタと、
    前記レジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成するアドレスデータ生成手段と、
    前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、
    前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「0」をデータ端子へ出力する0書込手段と、
    前記アドレスカウンタの出力が変化した時前記アドレスデータに代えてデータ「0」を前記0書込手段へ出力する手段と、
    を具備することを特徴とするディジタルシグナルプロセッサ。
  6. プログラムが記憶されたプログラムメモリと、
    前記プログラムメモリから読み出されたプログラムに従って演算を行う演算手段と、
    前記演算手段における演算において使用されるデータが一時記憶されるデータ記憶手段であって、複数のサブエリアに分割され、前記プログラムに含まれる相対アドレスによって書込/読出が行われるデータ記憶手段と、
    前記相対アドレスの基準となる絶対アドレスを出力するアドレスカウンタと、
    前記プログラムに含まれる相対アドレスおよび前記アドレスカウンタの出力に基づいて絶対アドレスを生成し前記データ記憶手段へ出力する絶対アドレス生成手段と、
    を具備するディジタルシグナルプロセッサにおいて、
    初期化すべきサブエリアを指定するデータが書き込まれる第1、第2のレジスタと、
    前記第1のレジスタ内のデータに基づいて前記データ記憶手段の初期化すべき相対アドレスを指示するアドレスデータを生成し、サブエリアの初期化終了時点で前記第1のレジスタ内の対応するデータをクリアするアドレスデータ生成手段と、
    前記プログラムが前記データ記憶手段へアクセスしていないことを検出する無アクセス検出手段と、
    前記無アクセス検出手段が無アクセスを検出した時、前記アドレスデータおよび前記アドレスカウンタの出力に基づいて生成される絶対アドレスを前記データ記憶手段のアドレス端子へ出力すると共に、データ「0」をデータ端子へ出力する0書込手段と、
    前記アドレスカウンタの出力が変化した時、前記第2のレジスタ内のデータが指示するサブエリアの各相対アドレス0番地を初期化する0番地初期化手段と、
    を具備することを特徴とするディジタルシグナルプロセッサ。
JP2004323735A 2003-11-14 2004-11-08 ディジタルシグナルプロセッサ Expired - Fee Related JP4661169B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004323735A JP4661169B2 (ja) 2003-11-14 2004-11-08 ディジタルシグナルプロセッサ
US10/986,525 US7543130B2 (en) 2003-11-14 2004-11-10 Digital signal processor for initializing a ram
CNB2004100957349A CN100437825C (zh) 2003-11-14 2004-11-12 数字信号处理器
US12/214,213 US20080263268A1 (en) 2003-11-14 2008-06-16 Digital signal processor

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2003385234 2003-11-14
JP2004240705 2004-08-20
JP2004297983 2004-10-12
JP2004323735A JP4661169B2 (ja) 2003-11-14 2004-11-08 ディジタルシグナルプロセッサ

Publications (2)

Publication Number Publication Date
JP2006139321A true JP2006139321A (ja) 2006-06-01
JP4661169B2 JP4661169B2 (ja) 2011-03-30

Family

ID=34682255

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004323735A Expired - Fee Related JP4661169B2 (ja) 2003-11-14 2004-11-08 ディジタルシグナルプロセッサ

Country Status (3)

Country Link
US (2) US7543130B2 (ja)
JP (1) JP4661169B2 (ja)
CN (1) CN100437825C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237819A (ja) * 2009-03-30 2010-10-21 Toshiba Corp 半導体装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011130136A (ja) * 2009-12-17 2011-06-30 Rohm Co Ltd 画像処理回路
KR102182368B1 (ko) * 2013-12-19 2020-11-24 에스케이하이닉스 주식회사 어드레스 검출회로 및 이를 포함하는 메모리

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62109284A (ja) * 1985-11-06 1987-05-20 Fujitsu Ltd メモリクリア方式
JPH03105640A (ja) * 1989-09-20 1991-05-02 Fujitsu Ltd メモリクリア制御方式
JPH07312081A (ja) * 1994-05-18 1995-11-28 Fujitsu Ltd ランダム・アクセス・メモリ回路
JPH08161216A (ja) * 1994-12-09 1996-06-21 Toshiba Corp メモリ高速クリア機能を持つ情報処理装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4247905A (en) * 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
JPS5834490A (ja) 1981-08-25 1983-02-28 三菱電機株式会社 デイスプレイ装置
US5117493A (en) * 1989-08-07 1992-05-26 Sun Microsystems, Inc. Pipelined register cache
JPH0390942A (ja) * 1989-09-01 1991-04-16 Oki Electric Ind Co Ltd 主記憶装置の制御方式
JPH0464155A (ja) 1990-07-04 1992-02-28 Toshiba Corp メモリ制御方式
US6578123B1 (en) * 1995-04-14 2003-06-10 Texas Instruments Incorporated Relocatable overland peripheral paging
US5826072A (en) * 1995-11-13 1998-10-20 Oasis Design, Inc. Pipelined digital signal processor and signal processing system employing same
US5822334A (en) * 1996-01-05 1998-10-13 Unisys Corporation High speed initialization system for RAM devices using JTAG loop for providing valid parity bits
US5943689A (en) * 1997-03-31 1999-08-24 Emc Corporation On-demand initialization of memory locations as they are requested command
US6341342B1 (en) * 1997-11-04 2002-01-22 Compaq Information Technologies Group, L.P. Method and apparatus for zeroing a transfer buffer memory as a background task
JP2002507789A (ja) * 1998-03-18 2002-03-12 クゥアルコム・インコーポレイテッド デジタル信号プロセッサ
JP2001005721A (ja) * 1999-06-17 2001-01-12 Nec Ic Microcomput Syst Ltd Dspによるリング・バッファ用メモリ確保によるフィルタ処理方法及びそのフィルタ処理システム
JP2003131935A (ja) * 2001-10-25 2003-05-09 Nec Microsystems Ltd シンクロナスdramコントローラおよびその制御方法
JP2003216484A (ja) * 2002-01-18 2003-07-31 Nec Custom Technica Ltd 駆動能力設定方法、駆動能力設定プログラム及び駆動回路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62109284A (ja) * 1985-11-06 1987-05-20 Fujitsu Ltd メモリクリア方式
JPH03105640A (ja) * 1989-09-20 1991-05-02 Fujitsu Ltd メモリクリア制御方式
JPH07312081A (ja) * 1994-05-18 1995-11-28 Fujitsu Ltd ランダム・アクセス・メモリ回路
JPH08161216A (ja) * 1994-12-09 1996-06-21 Toshiba Corp メモリ高速クリア機能を持つ情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237819A (ja) * 2009-03-30 2010-10-21 Toshiba Corp 半導体装置
US8208320B2 (en) 2009-03-30 2012-06-26 Kabushiki Kaisha Toshiba Semiconductor device having reset command

Also Published As

Publication number Publication date
CN100437825C (zh) 2008-11-26
CN1617259A (zh) 2005-05-18
US7543130B2 (en) 2009-06-02
US20050138275A1 (en) 2005-06-23
JP4661169B2 (ja) 2011-03-30
US20080263268A1 (en) 2008-10-23

Similar Documents

Publication Publication Date Title
US5218710A (en) Audio signal processing system having independent and distinct data buses for concurrently transferring audio signal data to provide acoustic control
JP4661169B2 (ja) ディジタルシグナルプロセッサ
US5065433A (en) Audio signal data processing system
JPH07199979A (ja) 残響付与装置
JP2634561B2 (ja) 可変遅延回路
JP4385893B2 (ja) データ処理回路における係数補間回路
JP2950461B2 (ja) 楽音発生装置
JP4400373B2 (ja) データ処理回路
EP0661648B1 (en) Digital signal processing circuit
JP3036417B2 (ja) 信号処理装置
JP2006186425A (ja) 畳み込み演算回路
JP3371643B2 (ja) 信号処理装置
JP4503275B2 (ja) 波形再生装置
JPH01179515A (ja) デジタル信号処理装置
JPH05249954A (ja) 効果付与装置
JP5003070B2 (ja) デジタル信号処理装置
KR0154199B1 (ko) 데이터 메모리 억세스 장치
JP3178036B2 (ja) 信号処理装置
JP2008134917A (ja) 演算処理装置、メモリアクセス方法、及びプログラム
JPH04104200A (ja) 音声速度変換装置と音声速度変換方法
JP2024046785A (ja) 効果付与装置、方法、及びプログラム
JP2008061053A (ja) 信号処理装置
JP2010113023A (ja) デジタル信号処理装置
JP2008083873A (ja) デジタル信号処理装置
JPH08328562A (ja) 信号処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101220

R150 Certificate of patent or registration of utility model

Ref document number: 4661169

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees