JP2004318467A - メモリー制御方法およびメモリー制御装置 - Google Patents
メモリー制御方法およびメモリー制御装置 Download PDFInfo
- Publication number
- JP2004318467A JP2004318467A JP2003111167A JP2003111167A JP2004318467A JP 2004318467 A JP2004318467 A JP 2004318467A JP 2003111167 A JP2003111167 A JP 2003111167A JP 2003111167 A JP2003111167 A JP 2003111167A JP 2004318467 A JP2004318467 A JP 2004318467A
- Authority
- JP
- Japan
- Prior art keywords
- address
- memory
- data
- area
- divided
- 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.)
- Pending
Links
Images
Abstract
【課題】リングバッファとして用いるメモリーを増設したり、接続状態を変えたりするなどのことなく、別々に制御可能な複数のリングバッファとして用いるようにしたり、また、より長い遅延量を確保したりすることができるようにする。
【解決手段】1つの外部メモリー3のメモリー空間を分割して、所定のデータ幅の上位領域31、下位領域32という2つの分割記憶領域を形成する。外部メモリー3のメモリー空間に対するアドレスを、各分割記憶領域のアドレスとして用い、上位領域31と、下位領域32とをそれぞれ独立のリングバッファとして用いることができるようにする。
【選択図】 図2
【解決手段】1つの外部メモリー3のメモリー空間を分割して、所定のデータ幅の上位領域31、下位領域32という2つの分割記憶領域を形成する。外部メモリー3のメモリー空間に対するアドレスを、各分割記憶領域のアドレスとして用い、上位領域31と、下位領域32とをそれぞれ独立のリングバッファとして用いることができるようにする。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
この発明は、例えば、オーディオ信号(音声信号)などの時系列データなどを遅延させるために用いるいわゆるリングバッファの制御方法、制御装置に関する。
【0002】
【従来の技術】
例えば、オーディオアンプ装置において、出力音声にリバーブ(残響)効果を施すなどのために、音声データを一旦メモリーに書き込み、メモリーに書き込んだ音声データをタイミングをずらして読み出すようにして処理対象の音声データを遅延させるようにすることが行われている。
【0003】
このように処理対象の音声データを遅延させる場合に、読み出し/書き込みが可能なメモリーを、いわゆるリングバッファと呼ばれる方式で用いるようにすることが行われている。このリングバッファは、その一例を図14に示すように、アドレス0(ゼロ)の1ワード手前が最大値Nにつながるようにし、メモリーをリング状にアクセスして用いるようにするものである。
【0004】
そして、図14に示したリングバッファの一例であって、アクセス幅がN、データ幅が32bit(ビット)であるN*32bit(*は掛け算を示す。以下この明細書において同じ。)のメモリー空間(記憶領域)に対して、書き込みアドレスWをサンプリング毎に負の方向(最大値N側から最小値0側に向かう方向)に変化させてデータの書き込みを行うようにした場合の書き込みアドレスWと読み出しアドレスRの制御は、以下のようになる。
【0005】
なお、ここで、アクセス幅は、メモリー空間におけるアドレスの最小値から最大値までの幅であって、図14においては、メモリー空間の縦方向の幅に相当するものである。また、データ幅は、1ワードのビット長であって、図14においては、メモリー空間の横方向の幅に相当するものである。
【0006】
そして、図14に示したように、書き込みアドレスをサンプリング毎に負の方向に変化させて1ワード単位にデータの書き込みを行うようにした場合、書き込みアドレスの最小値であるアドレス0が示すメモリー上の位置にデータを書き込むと、書き込みアドレスは、最大値Nに戻り、再度、最大値Nから負の方向に書き込みアドレスを変化させるようにして、データの書き込みを行う。
【0007】
この場合、読み出しアドレスRは、書き込みアドレスWからシステムにおいて決まる遅延量nサンプル分だけ遅れた位置のアドレスとなる。すなわち、図14において、計算式R=W+nが示すように、読み出しアドレスRは、書き込みアドレスW+遅延量nによって求めることができる。
【0008】
そして、従来は、例えば、4ビット入出力のメモリーをリングバッファとして用いており、データの書き込み/読み出し時のアドレス制御が複雑になったり、メモリー空間を有効に活用できなかったりする場合があった。このような問題を解決する技術として、特許文献1(特開平5−334177号公報)には、メモリーをリングバッファとして用いる場合のアドレッシングに関する技術が開示されている。
【0009】
また、メモリーをリングバッファとして用いる場合、上述したように、メモリー上の書き込み位置や読み出し位置を指示するアドレスは、そのメモリーのアドレスの最小値と最大値とが連続したものとして扱われる。このため、リングバッファとして用いているメモリーを同時に他の用途に使用することができないという問題があった。
【0010】
この問題を解決する技術として、特許文献2(特開平6−149660号公報)には、1つのメモリーに、リング状にアクセスされる遅延用メモリー領域(リングバッファ領域)と、通常のアドレス制御によってアクセスされる通常メモリー領域とを併存させることができるようにする技術が開示されている。
【0011】
【特許文献1】
特開平5−334177号公報
【0012】
【特許文献2】
特開平6−149660号公報
【0013】
【発明が解決しようとする課題】
ところで、近年においては、図14を用いて上述した例のように、32bit程度のデータであれば1回のアクセスで書き込み/読み出しが可能であるし、また、32bit程度のデータを複数に分けて読み書きすることも比較的に簡単に行うことができるようになっている。つまり、リングバッファを用いるDSP(Digital Signal Processor)の機能も向上してきている。
【0014】
その一方で、リングバッファの利用については、1つのメモリーにリングバッファ領域と通常メモリー領域とを併存させて用いるのではなく、1つのメモリー内に複数のリングバッファ領域を形成してそれぞれを別個に用いるようにしたり、また、記憶容量やメモリーの接続状態を変えずにより長い遅延時間を確保できるようにしたいなどの新たな要求が出てきている。
【0015】
すなわち、従来から、DSP(Digital Signal Processor)による音場生成処理のためにリングバッファとして用いる外部RAMのデータアクセス幅は、固定で用いるのが一般的である。例えば、64k*16bit=1MbitのSRAM(Static Random Access Memory)を2個、データ幅を32bitとして使用するようにした場合、アクセス空間は64k空間 (サンプリング周波数が48kHz時に1365msec(ミリ秒)の遅延量の確保が可能なアクセス空間)と一意的に決まる。このため、全ての音場生成処理のプログラムをこの時間内に収まるように設計する必要がある。
【0016】
より長い遅延時間を必要とするプログラムを搭載する場合には、さらにSRAMを追加接続してアクセス空間を増やすか、SRAMを128k*16bitで使用するように接続し直して、多少の音質の犠牲を容認した上で16bitアクセスで用いるしかない。また、異なる処理を並行して行うために、複数のリングバッファを用いたい場合にも、別途、SRAMを追加接続する必要が生じる。
【0017】
しかし、SRAMの個数を増やすことはその分コストが上がることを意味する。また、常時、16ビットのデータ幅で用いるようにした場合には、例えば通常時の処理が32ビット処理であるときには、上位の16ビットと下位の16bitとを別々に、2回アクセスする必要があるため、32ビット幅で用いたときの倍の処理時間がかかってしまうなどの弊害が発生する可能性がある。
【0018】
また、異なる処理を並行して行うために、複数のリングバッファが必要となる場合であっても、同時に並行して行うべき処理が常時存在していれば、そのそれぞれの処理用にリングバッファとして用いる複数のSRAMを設けることは無駄ではない。しかし、同時に並行して行うべき処理が常時存在していない場合には、未使用時のSRAMは無駄なものとなってしまう。
【0019】
以上のことは、内部RAMを使用したリングバッファ処理についてもそのままあてはまる。このため、メモリー容量を増やしたり、また、1サンプル当たりデータ幅を常時少なくすることによって、それよりも広いデータ幅でメモリーを使用する場合に処理時間が長くなってしまったりするなどの弊害を生じさせることなく、処理に応じたリングバッファを確保し、また、処理に応じた遅延量のリングバッファを確保でいるようにする技術の提供が望まれている。
【0020】
以上のことにかんがみ、この発明は、リングバッファとして用いるメモリーを増設したり、接続状態を変えたりするなどのことなく、別々に制御可能な複数のリングバッファとして用いるようにしたり、また、より長い遅延量を確保したりすることができるようにする方法、装置を提供することを目的とする。
【0021】
【課題を解決するための手段】
上記課題を解決するため、請求項1に記載の発明のメモリー制御方法は、
データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにし、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記アドレスが、前記複数個の分割記憶領域のどの領域に対するものかを指示するようにし、
指示された前記分割記憶領域毎に、書き込みアドレスと読み出しアドレスとを制御することにより、
前記複数個の分割記憶領域のそれぞれを、前記所定のデータ幅のリングバッファとして用いるようにすることを特徴とする。
【0022】
この請求項1に記載の発明のメモリー制御方法によれば、1つのメモリーの記憶領域が分割されて、所定のデータ幅の複数個の分割記憶領域が形成される。そして、元の1つのメモリーの記憶領域に対するアドレスが、各分割記憶領域のアドレスとして用いられる。つまり、1つのメモリーの記憶領域についてのアドレスは、複数の分割記憶領域のそれぞれの記憶位置を示すものとして用いるようにされる。
【0023】
このように、1つのメモリーの記憶領域についてのアドレスを各分割記憶領域で使い分けることによって、各分割記憶領域を異なる複数のリングバッファとして用いることができるようにされる。また、元の1つのメモリーの記憶領域を元のデータ幅のまま使用する場合、アドレス制御については何の変更もともなわず、元のデータ幅のままデータの書き込みやデータの読み出しを行うことができるようにされる。
【0024】
また、請求項2に記載の発明のメモリー制御方法は、
データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにし、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記所定のデータ幅の前記複数個の分割記憶領域をアクセス幅方向に連続する1つの記憶領域として、書き込みアドレスと読み出しアドレスとを制御し、
前記メモリーの記憶領域の元のアクセス幅より大きいアクセス幅のリングバッファとして用いるようにすることを特徴とする。
【0025】
この請求項2に記載の発明のメモリー制御方法によれば、1つのメモリーの記憶領域が分割されて、所定のデータ幅の複数個の分割記憶領域が形成される。この分割されて形成された各分割記憶領域がアクセス幅方向に接続するようにされ、連続した記憶領域のリングバッファとして利用できるようにされる。この場合、元の1つのメモリーの記憶領域に対するアドレスが、各分割記憶領域のアドレスとして用いられる。
【0026】
各分割記憶領域のデータ幅は、メモリーの元の記憶領域のデータ幅より狭くなるが、遅延時間は、分割記憶領域が2つであれば2倍に、3つであれば3倍にと言うように、長くすることができる。したがって、分割記憶領域のデータ幅として処理に必要なデータ幅が確保できる場合に、遅延時間のより長いリングバッファを実現することができるようにされる。また、元の1つのメモリーの記憶領域を元のデータ幅のまま使用する場合、アドレス制御については何の変更もともなわず、元のデータ幅のままデータの書き込み、データの読み出しを行うことができるようにされる。
【0027】
【発明の実施の形態】
以下、図を参照しながら、この発明による方法、装置の一実施の形態について説明する。以下に説明する実施の形態においては、この発明による方法、装置の一実施の形態をオーディオアンプ装置に適用した場合を例にして説明する。
【0028】
[オーディオアンプ装置の構成について]
図1は、この発明による方法、装置の一実施の形態が適用された、この実施の形態のオーディオアンプ装置を説明するためのブロック図である。図1に示すように、この実施の形態のオーディオアンプ装置は、デジタルオーディオ信号の入力端子in、音声データデコード部1、DSP2、外部メモリー(SRAM)3、左チャンネルスピーカ4L、右チャンネルスピーカ4R、制御部5、キー操作部6を備えたものである。
【0029】
制御部5は、図1に示したように、CPU(Central Processing Unit)51、ROM(Read Only Memory)52、RAM(Random Access Memory)53、不揮発性メモリー54が、システムバス55を通じて接続されて構成されたマイクロコンピュータであり、この実施の形態のオーディオアンプ装置の各部を制御することができるものである。
【0030】
ここで、ROM52は、この実施の形態のオーディオアンプ装置に応じて実行する種々のプログラムや処理に必要なデータ等が記憶されたものであり、RAM53は、処理の途中結果を保持するなど、主に作業領域として用いられるものである。また、不揮発性メモリーは、電源が落とされても記憶情報を保持しておくことができるものであり、例えば、設定パラメータなどが記憶保持される。
【0031】
そして、入力端子inを通じて受け付けた、例えば、CD(Compact Disc)プレーヤなどの各種のデジタル機器から供給されるデジタル音声信号(オーディオストリーム)は、音声データデコード部1に供給される。
【0032】
音声データデコード部1は、制御部5からの制御に応じて動作し、これに供給された入力音声信号である所定のフォーマットのデジタルオーディオストリームをそのフォーマットに応じてデコードし、入力音声信号のチャンネル構成を判別するとともに、チャンネル構成に応じた各チャンネルのデコード後の音声信号を分離し、分離したデコード後の音声信号をDSP2に供給する。
【0033】
なお、音声データデコード部1は、集積回路(IC)とし構成された種々のものを用いることにより実現することができる。例えば、富士通株式会社製のICである型番MB86347、MB86349、MB86D42、MB86D41などを音声データデコード部1として用いることが可能である。
【0034】
これらのICは、PCM、ドルビーデジタル、dts、AAC(Advanced Audio Coding)等の信号フォーマットのデジタルオーディオストリームをデコードし、そのデジタルオーディオストリームのチャンネル構成に応じたチャンネルのデコード後の音声信号(音声データ)を出力することができるものである。
【0035】
DSP2は、制御部5からの制御に応じて動作し、外部メモリー3をリングバッファとして用いて、音声データデコード部1から供給される音声信号に対して、リバーブ処理や各種のフィルタ処理を施すようにするものである。そして、このDSP2における外部メモリー3の制御方法がこの発明による方法が適用されたものであり、DSP2自体がこの発明によるメモリー制御装置を実現するものである。
【0036】
そして、DSP2において、リバーブ処理等が施された左チャンネルの音声信号は左チャンネルスピーカ4Lに供給され、右チャンネルの音声信号は右チャンネルスピーカ4Rに供給される。これにより、左右のスピーカー4L、4Rからこれらに供給された音声信号に応じた音声が放音するようにされる。
【0037】
なお、説明を簡単にするため、図1には図示しなかったが、DSP2とスピーカー4L、4Rとの間には、左右のチャンネルに対応して、DSP2からのデジタル音声データをアナログ音声信号に変換するD/A(Digital/Analog)変換器や、音量調整のための増幅器などが接続されており、制御部5の制御に応じて、D/A変換や音量調整がなされるようにされている。
【0038】
また、制御部5に接続されたキー操作部6は、ユーザーからの種々の操作入力を受け付け、これを電気信号に変換して、制御部5に通知することができるものであり、これにより、制御部5はユーザーからの指示に応じて、この実施の形態のオーディオアンプ装置の各部を制御することができるようにされる。
【0039】
そして、この実施の形態のオーディオアンプ装置のDSP2は、外部メモリー3をリングバッファとして用いて、音声データデコード部1から供給される音声データに対して種々の処理を施すことができるものであるが、外部メモリー3のメモリー空間(記憶領域)を複数の分割記憶領域に分割し、それらを別々のリングバッファとして用いたり、複数の分割記憶領域をアクセス幅方向に連続した領域のリングバッファとして用いて、長い遅延時間を稼ぐようにしたりすることができるものである。
【0040】
以下においては、(1)外部メモリー3のメモリー空間に、複数のリングバッファを形成するようにして用いる場合と、(2)外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合とについて具体的に説明する。なお、以下の説明においては、外部メモリー3は、図14にも示したように、アクセス幅がN、データ幅が32ビットのN*32bitのメモリー空間を持つものであり、DSP2は、基本的に、32bit単位でデータの書き込み、読み出しを行うものである。すなわち、DSP2は、32ビット入出力のものである。
【0041】
[(1)外部メモリー3に複数のリングバッファを形成する例]
まず、外部メモリー3のメモリー空間に、複数のリングバッファを形成するようにして用いる場合について説明する。図2は、外部メモリー3のメモリー空間に2つのリングバッファを形成し、これらを別々に用いるようにする場合について説明するための図である。図2にも示すように、この実施の形態のオーディオアンプ装置に搭載された外部メモリー3は、アクセス幅がN、データ幅が32ビットであるN*32bitのメモリー空間を持つものである。
【0042】
そして、通常、音声データは32bitのデータ幅で処理されるが、例えば、左チャンネルの音声信号と右チャンネルの音声信号とのデータ幅を16bitにし、左チャンネルの音声信号と右チャンネルの音声信号とで、異なるリバーブ処理を行わせるようにしたい場合などがある。
【0043】
このような場合において、DSP2は、図2に示したように、外部メモリー32のメモリー空間を上位側16bitの上位領域(第1メモリー空間)31と、下位側16bitの下位領域(第2メモリー空間)32とに分離するようにする。このように、元のメモリー空間内に2つのサーキュラバッファを設けるようにする。
【0044】
図2から分かるように、上位領域31、下位領域32とも、アクセス幅N、データ幅16ビットのメモリー空間を持ち、外部メモリー3を2N*16bitのメモリー空間として利用ができるようにしている。そして、上位領域31、下位領域32のいずれにアクセスする場合にも、アドレスは、通常通り、外部メモリー3のN*32bitのメモリー空間に対するアドレスが用いられる。
【0045】
そして、図2において点線矢印が示すように、リングバッファとして用いられる上位領域31と、下位領域32とにおいて、上位領域31に対する書き込みアドレスをW1、読み出しアドレスをR1、遅延量をn1で表し、また、下位領域32に対する書き込みアドレスをW2、読み出しアドレスをR2、遅延量をn2で表すものとする。この場合、書き込みアドレスW1、W2、および、遅延量n1、n2は、オーディオアンプ装置の制御部5、あるいは、DSP2により決められて用いられる。
【0046】
そして、図14を用いて説明したリングバッファの通常のアクセス時と同様に、DSP2が外部メモリー3の上位領域31上の書き込みアドレスW1が示す位置にデータを書き込んだ場合、データの読み出し位置は、図2の左端の読み出しアドレスR1が示すように、書き込みアドレスW1か示す位置よりも、システムにより決められる遅延量であるn1サンプル分だけ遅れた位置となる。したがって、この場合の読み出しアドレスR1は、W1−n1で求められる。
【0047】
また、DSP2が外部メモリー3の下位領域32上の書き込みアドレスW2が示す位置にデータを書き込んだ場合、データの読み出し位置は、図2の右端の読み出しアドレスR2が示すように、書き込みアドレスW2が示す位置よりも、システムにより決められる遅延量であるn2アンプル分だけ遅れた位置となる。したがって、この場合の読み出しアドレスR2は、W2−n2で求められる。
【0048】
このように、外部メモリー3のメモリー空間を上位領域31と下位領域32とに分け、上位領域31と下位領域32とで、それぞれ異なる遅延量n1、n2を用いて、2つの異なる遅延処理を同時に並行して行うことができるようにしている。
【0049】
次に、図2に示した上位領域31と下位領域32とをリングバッファとして用い、これらにデータを書き込み、また、読み出す場合の処理について、図3〜図6を参照しながら具体的に説明する。なお、以下で説明する処理で用いるレジスタa0、a1は、いずれも32bitのものである。
【0050】
まず、上位領域31をリングバッファとして用いる場合について説明する。図3、図4は外部メモリー3の上位領域31をリングバッファとして用いる場合の処理を説明するための図であり、図3は、上位領域31にデータを書き込む場合の処理を、図4は、上位領域31に書き込まれたデータを読み出す処理を、それぞれ説明するためのものである。
【0051】
まず、図3を用いて上位領域31に音声信号を書き込む場合の処理について説明する。図3Aは、DSP2の処理ステップを、また、図3Bは、DSP2の処理に伴うレジスタa0、a1の変化の状態を示している。
【0052】
DSP2は、まず、図3B(1)に示すように、書き込みたい16bitデータであるWDT1をレジスタa0の上位16bitに格納する(ステップS101)。次に、DSP2は、図3B(2)に示すように、レジスタa0の下位16bitを0(ゼロ)にする(ステップS102)。
【0053】
そして、DSP2は、外部メモリー3の上位領域31を含む領域であって、データWDT1を書き込みたい位置(書き込みアドレスW1により示される位置)に記録されている1ワード分(32bit分)のデータ(RDT1、RDT2)を読み出して、これを、図3B(3)に示すように、レジスタa1に格納する(ステップS103)。
【0054】
次に、DSP2は、図3B(4)に示すように、外部メモリー3から読み出したデータを格納したレジスタa1の上位16bitを0(ゼロ)にする(ステップS104)。そして、DSP2は、レジスタa1に、レジスタa1とレジスタa0の和を求める(ステップS105)。図3AのステップS105においては、和演算記号として「|」を用いている。
【0055】
このステップS105の処理により、図3B(5)に示すように、レジスタa1の上位16bitには、外部メモリー3の上位領域31に書き込みたいデータであるWDT1がセットされ、レジスタa1の下位16bitには、外部メモリー3の書き込みアドレスW1が示す位置の下位領域32に記録されているデータRDT2がセットされた状態となる。
【0056】
そして、DSP2は、レジスタa1の32bitのデータを、書き込みアドレスW1が示す外部メモリー3上の位置に記録する(ステップS106)。これにより、書き込みアドレスW1が示す外部メモリー3上の位置の上位領域31部分には、書き込みデータWDT1が記録され、書き込みアドレスW1が示す外部メモリー3上の位置の下位領域32部分には、元の情報のままのデータ(読み出され保護されたデータ)であるデータRDT2がそのまま記録されることになる。
【0057】
このようにして、書き込みアドレスW1で示される外部メモリー3上の下位領域32のデータはそのままに、上位領域31に対してのみ、16bitの目的とする書き込みデータWDT1を書き込むようにすることができる。
【0058】
次に、図4を用いて上位領域31に書き込まれた音声信号を所定時間分遅延させて読み出す処理について説明する。図4Aは、DSP2の処理ステップを、図4Bは、DSP2の処理に伴うレジスタa0の変化の状態を示している。
【0059】
まず、DSP2は、上位領域31についての最新の書き込みアドレスW1と上位領域31をリングバッファとして用いた場合の予め決められる遅延量n1とに基づいて、W1+n1なる演算を行い、書き込みアドレスW1から所定量分遅延した位置の読み出しアドレスR1を特定し、この読み出しアドレスR1が示す外部メモリー3上の位置から1ワード(32bit)分のデータを読み出し、これを図4B(1)に示すように、レジスタa0に格納する(ステップS201)。
【0060】
次に、DSP2は、図4B(2)に示すように、レジスタa0の下位16bitを0(ゼロ)クリアーし、上位領域31に記録されている16bit分のデータRDT1のみを利用可能にする(ステップS202)。
【0061】
これにより、上位領域31に記録されたデータであって、書き込みアドレスW1から遅延量n1だけ遅延した位置のデータを読み出し、これを利用することができるようにされる。
【0062】
次に、下位領域32をリングバッファとして用いる場合について説明する。図5、図6は外部メモリー3の下位領域32をリングバッファとして用いる場合の処理を説明するための図であり、図5は、下位領域32にデータを書き込む場合の処理を、図6は、下位領域32に書き込まれたデータを読み出す処理を、それぞれ説明するためのものである。
【0063】
まず、図5を用いて下位領域32に音声信号を書き込む場合の処理について説明する。この図5においても、図3に示した場合と同様に、図5Aは、DSP2の処理ステップを、図5Bは、DSP2の処理に伴うレジスタa0、a1の変化の状態を示している。
【0064】
DSP2は、まず、図5B(1)に示すように、書き込みたい16bitデータであるWDT2をレジスタa0の下位16bitに格納する(ステップS301)。次に、DSP2は、図5B(2)に示すように、レジスタa0の上位16bitを0(ゼロ)にする(ステップS302)。
【0065】
そして、DSP2は、外部メモリー3の下位領域32を含む領域であって、データWDT2を書き込みたい位置(図2において書き込みアドレスW2により示される位置)に記録されている1ワード分(32bit分)のデータ(RDT1、RDT2)を読み出して、これを、図5B(3)に示すように、レジスタa1に格納する(ステップS303)。
【0066】
次に、DSP2は、図5B(4)に示すように、レジスタa1の下位16bitを0(ゼロ)にする(ステップS304)。そして、DSP2は、レジスタa1に、レジスタa1とレジスタa0の和を求める(ステップS305)。図5AのステップS305においては、和演算記号として「|」を用いている。
【0067】
このステップS305の処理により、レジスタa1には、図5B(5)に示すように、レジスタa1の下位16bitには、外部メモリー3の下位領域32に書き込みたいデータであるWDT2がセットされ、レジスタa1の上位16bitには、外部メモリー3の書き込みアドレスW2が示す位置の上位領域31に記録されているデータRDT1がセットされた状態となる。
【0068】
そして、DSP2は、レジスタa1の32bitのデータを、書き込みアドレスW2が示す外部メモリー3上の位置に記録する(ステップS306)。これにより、書き込みアドレスW2が示す外部メモリー3上の位置の下位領域32部分には、書き込みデータWDT2が記録され、書き込みアドレスW2が示す外部メモリー3上の位置の上位領域31部分には、元の情報のままのデータ(読み出され保護されたデータ)であるデータRDT1がそのまま記録されることになる。
【0069】
このようにして、書き込みアドレスW2で示される外部メモリー3上の上位領域32のデータはそのままに、下位領域32に対してのみ、16bitの目的とする書き込みデータWDT2を書き込むようにすることができる。
【0070】
次に、図6を用いて下位領域32に書き込まれた音声信号を所定時間分遅延させて読み出す処理について説明する。図6においても、上述した図4の場合と同様に、図6Aは、DSP2の処理ステップを、図6Bは、DSP2の処理に伴うレジスタa0の変化の状態を示している。
【0071】
まず、DSP2は、下位領域32についての最新の書き込みアドレスW2と下位領域32をリングバッファとして用いた場合の予め決められる遅延量n2とに基づいて、W2+n2なる演算を行い、書き込みアドレスW2から所定量分遅延した位置の読み出しアドレスR2を特定し、この読み出しアドレスR2が示す外部メモリー3上の位置から1ワード(32bit)分のデータを読み出し、これを図6B(1)に示すように、レジスタa0に格納する(ステップS401)。
【0072】
次に、DSP2は、図6B(2)に示すように、レジスタa0の32bitのデータを左に(上位方向に)16bit分シフトする(ステップS402)。そしてDSP2は、レジスタa0の下位16bitを0(ゼロ)クリアーし、下位領域32に記録されている16bit分のデータRDT2のみを利用可能にする(ステップS403)。
【0073】
これにより、下位領域31に記録されたデータであって、書き込みアドレスW2から遅延量n2だけ遅延した位置のデータを読み出し、これを利用することができるようにされる。
【0074】
このように、外部メモリー3の上位領域31と下位領域32とを別々のリングバッファとして用いて、2つの異なるデータについてそれぞれ異なる遅延量で遅延処理を行うようにすることができる。しかも、上位領域31に対してアクセスする場合も、また、下位領域32に対してアクセスする場合にも、外部メモリー3についてのアドレス制御で、外部メモリー3上の適切な位置にデータを書き込むとともに、適切な位置からデータを読み出して利用することができるようにされる。
【0075】
そして、図3〜図6を用いて説明したように、外部メモリー3を上位領域31、下位領域32の2つの領域に分けて、それぞれを別々のリングバッファとして用いるようにすることは、上述もしたように、例えば、左右2チャンネルの音声信号を処理する場合であって、左チャンネルの音声信号と右チャンネルの音声信号とで、異なるリバーブ処理を行わせるようにするなどのことが、メモリーを追加搭載することなく容易に可能となる。
【0076】
例えば、図7の概念図に示すように、外部メモリー3の上位領域31を左チャンネル音声用とし、外部メモリー3の下位領域32を右チャンネル音声として用いるようにする。図7において、記号in−L、記号out−Lは左チャンネル用の入力端、出力端を示し、記号in−R、記号out−Rは右チャンネル用の入力端、出力端を示している。
【0077】
そして、左チャンネルの音声データについては、書き込みアドレスWLに基づいて、外部メモリー3の上位領域31に記録する。この上位領域31からデータを読み出す場合には、書き込みアドレスW1より予め決められる遅延量n1だけ遅れた位置(WL−n1)からデータを読み出し、その上位領域に記録されていたデータだけを出力して利用できるようにする。
【0078】
また、遅延量n11、n12というように、遅延量を複数設定することにより、そのいずれかを用いて、あるいは、それらを併用して、左チャンネルの音声データについて遅延処理を施し、遅延処理を施した左チャンネルの音声データを出力端out−Lから出力して利用することが可能である。
【0079】
右チャンネルの音声データについても同様に、書き込みアドレスWRに基づいて、外部メモリー3の下位領域32に記録する。この下位領域32からデータを読み出す場合には、書き込みアドレスW2より予め決められる遅延量n2だけ遅れた位置(WR−n2)からデータを読み出し、その下位領域に記録されていたデータだけを出力して利用できるようにする。
【0080】
また、遅延量n21、n22というように、遅延量を複数設定することにより、そのいずれかを用いて、あるいは、それらを併用して、右チャンネルの音声データについて遅延処理を施し、この遅延処理を施した右チャンネルの音声データを出力端out−Rから出力して利用することが可能である。
【0081】
なお、この例においては、図2に示したように、上位領域31、下位領域32は、それぞれアクセス幅がアドレス0(最小値)〜アドレスN(最大値)までの幅となるようにしたが、これに限るものではない。例えば、図8Aに示すように、上位領域31のアクセス幅を下位領域32のアクセス幅より狭くなるようにしたり、図8Bに示すように、下位領域32のアクセス幅を上位領域31のアクセス幅より狭くなるようにしたりすることも可能である。
【0082】
この図8に示した例の場合、図8Aにおいて、上位領域31の斜線で示したエリアが、リングバッファとしては用いられないエリアを示し、また、図8Bに置いて、下位領域32の斜線で示したエリアが、リングバッファとしては用いられないエリアを示しており、上位領域31と下位領域32とでは、それぞれアドレスの最大値が異なるようにされる。
【0083】
このようにすることによって、リングバッファとして用いられない斜線部で示したエリアを例えば作業領域として用いるなど、他の用途に用いるなどのことができるようにされる。
【0084】
また、上述の説明においては、DSP2は、32bit入出力のものであり、32bit単位でデータの書き込み、読み出しを行うため、図3〜図6に示したように、上位領域31を用いる場合には、下位領域32に対していわゆるマスキングを施すようにし、下位領域32を用いる場合には、上位領域31に対していわゆるマスキングを施すものとして説明した。しかし、これに限るものではない。
【0085】
DSP2が、上位領域31と下位領域32とに対して別々にアクセス可能なものであれば、上位領域31のみを対象としてデータの書き込み、読み出しを行うようにし、また、下位領域32のみを対象としてデータの書き込み、読み出しを行うようにてもよい。この場合には、アドレス制御の方法は、変わることはないし、マスキング処理の必要もない。
【0086】
なお、上述の説明から分かるように、この例の場合には、DSP2において実行されるソフトウエアによって、分割手段、領域指示手段、アドレス制御手段を実現するようにしている。
【0087】
また、例えば、32bitの音声信号を16bitに変換するなどの機能も、DSP2が行うものとして説明したが、これに限るものではない。DSP2の前段にbit変換回路を設けて、このbit変換回路が制御部5の制御により必要に応じて行う構成とすることも可能である。
【0088】
また、ここでは、図2に示したように、外部メモリー3の記憶領域を上位領域31と下位領域32との2つの分割記憶領域に分割するものとして説明したが、これに限るものではない。目的とするデータ幅が確保可能である範囲内で、外部メモリー3の記憶領域を2つ以上の任意の個数の分割記憶領域に分割し、それらを別個のリングバッファとして用いるようにすることができる。
【0089】
[(2)外部メモリー3にアクセス幅より遅延時間の長いリングバッファを形成する例]
次に、外部メモリー3の記憶領域に、外部メモリー3のメモリー空間のアクセス幅より遅延時間が長いリングバッファを形成して用いる場合について説明する。図9、図10は、外部メモリー3にこの外部メモリー3のメモリー空間のアクセス幅よりも遅延時間の長いリングバッファを形成して用いる場合を説明するための図である。
【0090】
上述もし、また、図9、図10にも示すように、この実施の形態のオーディオアンプ装置の外部メモリー3は、アクセス幅がN、データ幅が32ビットであるN*32bitのメモリー空間を持つものであり、この例の場合にも、図2に示した例の場合と同様に、外部メモリー3の記憶領域を上位領域(上位16bitの領域)31と下位領域(下位16bitの領域)32とに分割する。
【0091】
そして、図9Aにおいて、点線矢印が示すように、まず、上位領域31のアドレスNから負の方向にデータを書き込むようにし、上位領域31のアドレス0までデータを書き込み終えると、次には、下位領域32のアドレスNから負の方向にデータを書き込むようにし、下位領域32のアドレス0までデータを書き込み終えると、再度、上位領域31のアドレスNから負の方向にデータを書き込むようにする。
【0092】
このようにすることにより、データ幅が16bitでアクセス幅が2Nのリングバッファを外部メモリー3のメモリー空間に形成する。そして、この図9Aに示したリングバッファの場合にも、図2に示した例の場合と同様に、上位領域31と下位領域32とに対してデータを書き込んで行くことになるので、図3、図4に示した処理と同様にしてデータの書き込みを行うようにする。
【0093】
つまり、アドレス制御は、外部メモリー3をデータ幅が32bitとして用いる場合と何ら変わるところはない。しかし、上位領域31に対するデータの書き込みか、下位領域32に対するデータの書き込みかを区別するとともに、上位領域31に対するデータの書き込みの場合には、その同じアドレスの下位領域32のデータは変更しないように保護し、下位領域32に対するデータの書き込みの場合には、その同じアドレスの上位領域31のデータは変更しないように保護するようにする。このようにすることにより、上位領域31と下位領域32とをアクセス幅方向に連続するリングバッファとして用いることができる。
【0094】
この場合に、遅延データの読み出しエリアが、上位領域31か下位領域32かは、データの現在の書き込み位置に応じて異なることになる。また、読み出しアドレスの求め方も、データの書き込み位置と読み出し位置との位置関係で異なったものとなる。このため、この実施の形態においては、既知の値である外部メモリー3の最大アドレスと、書き込みアドレスと、遅延量とで表される関係に基づいて、読み出しアドレスを簡単かつ正確に求めるようにしている。
【0095】
この例の場合にも、外部メモリー3の最大アドレスをN、書き込みアドレスをW、遅延量をn、読み出しアドレスをRで表すこととする。ここで、外部メモリー3の最大アドレスNは固定値であり、遅延量nも処理に応じて固定的に定まる値である。また、書き込みアドレスWはDSP2によって制御されるものである。
【0096】
そして、図9Bに示すように、最大アドレスNから現在の書き込みアドレス(最新書き込みアドレス)Wを減算するようにした値が、遅延量n以上である場合、すなわち、図9Bに示すように、n≦N−Wの関係が維持されている場合には、データの書き込み位置と読み出し位置とは同じエリアに位置し、かつ、読み出し位置は、書き込み位置より正の方向にずれた位置にある状態にあることが分かる。
【0097】
そこで、書き込み位置と読み出し位置とが、図9Bに示す位置関係にあることが判明した場合には、読み出し位置を示す読み出しアドレスRは、書き込みアドレスWに遅延量nを加算した値、すなわち、R=W+nで求められる。なお、図9Bは、上位領域31に書き込み位置と読み出し位置とが存在する場合について示しているが、下位領域32に書き込み位置と読み出し位置とが存在する場合についても同様である。
【0098】
また、図10Aに示すように、遅延量nが、最大アドレスNから現在の書き込みアドレスWを減算するようにした値よりも大きく、かつ、最大アドレスNの2倍から現在の書き込みアドレスWを減算するようにした値以下である場合、すなわち、図10Aに示すように、N−W<n≦2*N−Wの関係が維持されている場合には、データの書き込み位置と読み出し位置とは、異なるエリア、すなわち、上位領域31と下位領域32とに別々に存在している状態であることが分かる。
【0099】
そこで、書き込み位置と読み出し位置とが、図10Aに示す位置関係にあることが判明した場合には、読み出し位置を示す読み出しアドレスRは、書き込みアドレスWに遅延量nを加算し、ここからさらに最大アドレスNを減算することにより得た値、すなわち、R=W+n−Nで求めることができるようにされる。
【0100】
すなわち、この図10Aの場合には、遅延量nは、図10Aにも示したように、n1+n2で求められ、遅延量nから最大アドレスNを減算することにより、元のアクセス幅(アドレス0〜アドレスNまでの幅)に対する書き込み位置から読み出し位置までの距離量が求められ、この距離量を書き込みアドレスWに加算することにより、読み出しアドレスRが求まるのである。
【0101】
なお、図10Aは、上位領域31に書き込み位置が存在し、下位領域32に読み出し位置が存在する場合について示しているが、これとは逆に、上位領域31に読み出し位置が存在し、下位領域32に書き込み位置が存在する場合についても同様である。
【0102】
また、図10Bに示すように、遅延量nが、最大アドレスNの2倍から現在の書き込みアドレスWを減算するようにした値よりも大きく、かつ、最大アドレスNの2倍の値以下である場合、すなわち、図10Bに示すように、2*N−W<n≦2*Nの関係が維持されている場合には、データの書き込み位置と読み出し位置とは同じエリアに位置し、かつ、読み出し位置は、書き込み位置より負の方向にずれた位置にある状態にあることが分かる。
【0103】
そこで、書き込み位置と読み出し位置とが、図10Bに示す位置関係にあることが判明した場合には、読み出し位置を示す読み出しアドレスRは、最大アドレスの2倍から遅延量nを減算して得た値を、書き込みアドレスWから減算することにより得た値、すなわち、R=W−(2*N−n)で求めることができるようにされる。
【0104】
すなわち、この図10Bの場合には、遅延量nは、図10Bにも示したように、n1+n2+n3で求められ、最大アドレスNの2倍の値から遅延量nを減算することにより、元のアクセス幅(アドレス0〜アドレスNまでの幅)に対する書き込み位置から読み出し位置までの距離量が求められ、この距離量を書き込みアドレスWから減算することにより、読み出しアドレスRが求まるのである。
【0105】
なお、図10Bは、上位領域31に書き込み位置と読み出し位置とが存在する場合について示しているが、下位領域32に書き込み位置と読み出し位置とが存在する場合についても同様である。
【0106】
このように、外部メモリー3のメモリー空間を上位領域31と下位領域32とに分け、これらをアクセス幅方向に連続したメモリー空間として用いて、より長い遅延時間を得ることが可能なリングバッファを形成するようにして用いることができる。
【0107】
次に、図9Aに示したように、外部メモリー3のメモリー空間の上位領域31と下位領域32とをアクセス幅方向に連続するリングバッファとして用い、これらにデータを書き込み、また、読み出す場合の処理について、図11〜図12を参照しながら具体的に説明する。なお、この例においても、レジスタa0、a1は、いずれも32bitのものである。
【0108】
まず、図11を参照しながら、図9Aに示したように、外部メモリー3のメモリー空間の上位領域31と下位領域32とをアクセス幅方向に連続させるようにして形成するようにされるリングバッファへのデータの書き込み処理について説明する。この図11に示す処理も、DSP2により実行される。
【0109】
DSP2は、まず、データを書き込もうとする外部メモリー3の位置は、上位領域31か下位領域32かを決定するとともに、データの書き込み位置を示す書き込みアドレスを決定する(ステップS501)。そして、DSP2は、今回の書き込み処理は、上位領域31への書き込みか、下位領域32への書き込みかを判断する(ステップS502)。
【0110】
ステップS502の判断処理において、上位領域31への書き込みであると判断したときには、DSP2は、図3を用いて上述したステップS101からステップS106の処理を実行することにより、外部メモリー3の上位領域31へのデータの書き込み処理を行う(ステップS503)。
【0111】
また、ステップS502の判断処理において、下位領域32への書き込みであると判断したときには、DSP2は、図5を用いて上述したステップS301からステップS306の処理を実行することにより、外部メモリー3の下位領域32へのデータの書き込み処理を行う(ステップS504)。
【0112】
ステップS503、ステップS504の処理の後、データの書き込み処理を終了する。このようにして、データの書き込み処理は、上位領域31への書き込みか、下位領域32への書き込みかを制御するとともに、外部メモリー3についてのアドレス制御を行うことにより、図9Aに示したように構成されるリングバッファに対してデータを書き込むことができる。
【0113】
次に、図12を用いて図9Aに示したように構成されるリングバッファに書き込まれたデータを所定時間分遅延させて読み出す処理について説明する。この図12に示す処理も、DSP2により行われる処理である。
【0114】
まず、DSP2は、書き込み位置から読み出し位置までの距離量である遅延量nを特定する(ステップS601)。そして、DSP2は、図9Bを用いて説明したように、遅延量nは、最大アドレスNから書き込みアドレスWを減算することにより得た値以下か否かを判断する(ステップS602)。すなわち、ステップS602の判断処理は、n≦N−Wの関係が成り立つか否かを判断する処理である。
【0115】
ステップS602の判断処理において、n≦N−Wの関係が成り立つと判断したときには、DSP2は、読み出しアドレスRとして、書き込みアドレスWに遅延量を加算することにより得た値を読み出しアドレスRとする(ステップS603)。
【0116】
ステップS602の判断処理において、n≦N−Wは成り立たないと判断したときには、DSP2は、図10Aを用いて説明したように、遅延量nは、最大アドレスNから書き込みアドレスWを減算することにより得た値より大きく、かつ、最大アドレスの2倍から書き込みアドレスWを減算することにより得た値以下か否かを判断する(ステップS604)。すなわち、ステップS604の判断処理は、N−W<n≦2*N−Wの関係が成り立つか否かを判断する処理である。
【0117】
ステップS604の判断処理において、N−W<n≦2*N−Wの関係が成り立つと判断したときには、DSP2は、書き込みアドレスWに遅延量nを加算して得た値から最大アドレスNを減算して得た値を読み出しアドレスRとする(ステップS605)。
【0118】
ステップS604の判断処理において、N−W<n≦2*N−Wの関係が成り立たないと判断したときには、DSP2は、遅延量nは、最大アドレスNの2倍から書き込みアドレスを減算して得た値より大きく、かつ、最大アドレスの2倍以下の状態、すなわち、図10Bに示した状態にあると判断し、最大アドレスNの2倍から遅延量nを減算した値を書き込みアドレスWから減算して得た値を読み出しアドレスRとする(ステップS606)。
【0119】
ステップS603、または、ステップS605、または、ステップS606の読み出しアドレスRの算出処理の後、DSP2は、読み出しアドレスRで示される外部メモリー3上の位置から1ワード分(上位領域31と下位領域32とを合わせた32bit分)のデータを読み出し、これをレジスタa0に格納する(ステップS607)。
【0120】
次に、DSP2は、遅延処理の対象のデータは、上位領域31のデータか否かを判断し(ステップS608)、上位領域31のデータであると判断したときには、レジスタa0の下位16bitを0(ゼロ)クリアーし、上位領域31から読み出したデータを利用可能にして、この図12に示す処理を終了する。
【0121】
また、ステップS608の判断処理において、遅延処理の対象のデータは、上位領域31のデータではないと判断したときには、レジスタa0のデータを左に16bitシフトし、下位16bitを0(ゼロ)クリアーし、下位領域32から読み出したデータを利用可能にして、この図12の処理を終了する。
【0122】
このように、外部メモリー3のメモリー空間を上位領域31と下位領域32とに分割し、これらをアクセス幅方向に連続する記憶領域として、より長い遅延時間を実現するリングバッファを形成するようにしてこれを用いることができるようにされる。
【0123】
なお、この例においても、DSP2は、32bit入出力のものであり、32bit単位でデータの書き込み、読み出しを行うため、上位領域31を用いる場合には、下位領域32に対していわゆるマスキングを施すようにし、下位領域32を用いる場合には、上位領域31に対していわゆるマスキングを施すものとして説明した。しかし、これに限るものではない。
【0124】
DSP2が、上位領域31と下位領域32とに対して別々にアクセス可能なものであれば、上位領域31のみを対象としてデータの書き込み、読み出しを行うようにし、また、下位領域32のみを対象としてデータの書き込み、読み出しを行うようにてもよい。この場合には、アドレス制御の方法は、変わることはないし、また、マスキング処理の必要もない。
【0125】
また、上述の説明から分かるように、この例の場合には、DSP2で実行されるソフトウエアにより、分割手段、アドレス制御手段を実現するようにしている。
【0126】
また、この例の場合にも、データ幅は、外部メモリー3の元のデータ幅より狭くなる。したがって、処理対象のデータのbit長が32bitである場合などにおいては、これをbit長が16bitのデータに変換するなどの必要が生じ、このような機能も、DSP2が行うようにすることができる。もちろん、これに限るものではなく、DSP2の前段にbit変換回路を設けて、このbit変換回路が制御部5の制御により必要に応じて行う構成とすることも可能である。
【0127】
また、この例においても、図9、図10に示したように、外部メモリー3のメモリー空間を上位領域31と下位領域32との2つの分割記憶領域に分割するものとして説明したが、これに限るものではない。目的とするデータ幅が確保可能である範囲内で、外部メモリー3の記憶領域を2つ以上の任意の個数の分割記憶領域に分割し、それらをアクセス幅方向に連続するメモリー空間を有するリングバッファとして用いるようにすることができる。
【0128】
すなわち、(1)外部メモリー3のメモリー空間に、複数のリングバッファを形成するようにして用いる場合と、(2)外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合との両方において、外部メモリー3のメモリー空間の分割は、図13Aに示すように、任意の偶数個に分割するようにしてもよいし、また、図13Bに示すように、任意の奇数個に分割するようにしてもよい。
【0129】
また、データ幅を各分割記憶領域毎に異ならせて用いるようにすることもできる。例えば、左チャンネル、センターチャンネル、右チャンネルの3チャンネルがある場合に、左右のチャンネル用の分割記録領域のデータ幅を8ビットとし、センターチャンネル用の分割記録領域のデータ幅を16ビットとするようにして、メモリー空間をできるだけ有効に活用するようにすることもできる。
【0130】
もちろん、上述のように、複数の分割記憶領域の幾つかは、同じデータ幅となるようにしてもよいし、各分割記憶領域毎にデータ幅を異ならせるようにすることももちろんできる。また、各分割領域のアクセス幅を異ならせようにしてもよいことは、図8を用いて上述した通りである。
【0131】
なお、上述の実施の形態においては、外部メモリー3は、アクセス幅がN、データ幅が32bitのメモリー空間を有するものとして説明したが、これに限るものではない。アクセス幅、データ幅とも任意のものを用いることができる。
【0132】
また、上述した実施の形態においては、この発明をオーディオアンプ装置に適用した場合を例にして説明したが、これに限るものではない。CDプレーヤやMD(Mini Disc)プレーヤなどの種々の音声データの再生機や記録再生機など、種々のオーディオ機器に適用可能であるし、また、オーディオ機器だけでなく、データの遅延処理を行うようにする種々の電子機器に適用可能であることは言うまでもない。
【0133】
しかし、この発明をオーディオ機器に適用した場合には、リバーブ処理等の各種のエフェクト処理や、各種のフィルタ処理を従来よりもメモリーを用いることなく、効果的に、かつ、安価に実現することが可能になるななど、その効果は大きなものとなる。
【0134】
【発明の効果】
以上、説明したように、この発明によれば、リングバッファとして用いるメモリーの容量を大きくするなどのことなく、リングバッファとして用いる1つのメモリーを複数のリングバッファとして用いたり、また、より長い遅延量を確保したりすることができる。
【図面の簡単な説明】
【図1】この発明により方法、装置の一実施の形態が適用されたオーディオアンプ装置を説明するためのブロック図である。
【図2】この発明による方法の一実施の形態であって、外部メモリー3の記憶領域に2つのリングバッファを形成し、これらを別々に用いるようにする場合について説明するための図である。
【図3】外部メモリー3の記憶領域に2つのリングバッファを形成し、一方のリングバッファにデータを記録する場合の処理を説明するためのフローチャートである。
【図4】外部メモリー3の記憶領域に2つのリングバッファを形成し、一方のリングバッファに記録されたデータを読み出す場合の処理を説明するためのフローチャートである。
【図5】外部メモリー3の記憶領域に2つのリングバッファを形成した場合の他方のリングバッファにデータを記録する場合の処理を説明するためのフローチャートである。
【図6】外部メモリー3の記憶領域に2つのリングバッファを形成した場合の他方のリングバッファに記録されたデータを読み出す場合の処理を説明するためのフローチャートである。
【図7】外部メモリー3の記憶領域に2つのリングバッファの利用例を説明するための図である。
【図8】外部メモリー3の記憶領域に2つのリングバッファを形成する場合の他の例を説明するための図である。
【図9】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合を説明するための図である。
【図10】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合を説明するための図である。
【図11】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合のデータの書き込み処理を説明するためのフローチャートである。
【図12】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合のデータの読み出し処理を説明するためのフローチャートである。
【図13】外部メモリーのメモリー空間への分割記憶領域の形成例について説明するための図である。
【図14】従来のリングバッファの利用例を説明するための図である。
【符号の説明】
in…デジタルオーディオ信号の入力端子、1…音声データデコード部、2…DSP、3…外部メモリー(SRAM)、4L…左チャンネルスピーカ、4R…右チャンネルスピーカ、5…制御部、51…CPU、52…ROM、53…RAM,54…不揮発性メモリー、6…キー操作部
【発明の属する技術分野】
この発明は、例えば、オーディオ信号(音声信号)などの時系列データなどを遅延させるために用いるいわゆるリングバッファの制御方法、制御装置に関する。
【0002】
【従来の技術】
例えば、オーディオアンプ装置において、出力音声にリバーブ(残響)効果を施すなどのために、音声データを一旦メモリーに書き込み、メモリーに書き込んだ音声データをタイミングをずらして読み出すようにして処理対象の音声データを遅延させるようにすることが行われている。
【0003】
このように処理対象の音声データを遅延させる場合に、読み出し/書き込みが可能なメモリーを、いわゆるリングバッファと呼ばれる方式で用いるようにすることが行われている。このリングバッファは、その一例を図14に示すように、アドレス0(ゼロ)の1ワード手前が最大値Nにつながるようにし、メモリーをリング状にアクセスして用いるようにするものである。
【0004】
そして、図14に示したリングバッファの一例であって、アクセス幅がN、データ幅が32bit(ビット)であるN*32bit(*は掛け算を示す。以下この明細書において同じ。)のメモリー空間(記憶領域)に対して、書き込みアドレスWをサンプリング毎に負の方向(最大値N側から最小値0側に向かう方向)に変化させてデータの書き込みを行うようにした場合の書き込みアドレスWと読み出しアドレスRの制御は、以下のようになる。
【0005】
なお、ここで、アクセス幅は、メモリー空間におけるアドレスの最小値から最大値までの幅であって、図14においては、メモリー空間の縦方向の幅に相当するものである。また、データ幅は、1ワードのビット長であって、図14においては、メモリー空間の横方向の幅に相当するものである。
【0006】
そして、図14に示したように、書き込みアドレスをサンプリング毎に負の方向に変化させて1ワード単位にデータの書き込みを行うようにした場合、書き込みアドレスの最小値であるアドレス0が示すメモリー上の位置にデータを書き込むと、書き込みアドレスは、最大値Nに戻り、再度、最大値Nから負の方向に書き込みアドレスを変化させるようにして、データの書き込みを行う。
【0007】
この場合、読み出しアドレスRは、書き込みアドレスWからシステムにおいて決まる遅延量nサンプル分だけ遅れた位置のアドレスとなる。すなわち、図14において、計算式R=W+nが示すように、読み出しアドレスRは、書き込みアドレスW+遅延量nによって求めることができる。
【0008】
そして、従来は、例えば、4ビット入出力のメモリーをリングバッファとして用いており、データの書き込み/読み出し時のアドレス制御が複雑になったり、メモリー空間を有効に活用できなかったりする場合があった。このような問題を解決する技術として、特許文献1(特開平5−334177号公報)には、メモリーをリングバッファとして用いる場合のアドレッシングに関する技術が開示されている。
【0009】
また、メモリーをリングバッファとして用いる場合、上述したように、メモリー上の書き込み位置や読み出し位置を指示するアドレスは、そのメモリーのアドレスの最小値と最大値とが連続したものとして扱われる。このため、リングバッファとして用いているメモリーを同時に他の用途に使用することができないという問題があった。
【0010】
この問題を解決する技術として、特許文献2(特開平6−149660号公報)には、1つのメモリーに、リング状にアクセスされる遅延用メモリー領域(リングバッファ領域)と、通常のアドレス制御によってアクセスされる通常メモリー領域とを併存させることができるようにする技術が開示されている。
【0011】
【特許文献1】
特開平5−334177号公報
【0012】
【特許文献2】
特開平6−149660号公報
【0013】
【発明が解決しようとする課題】
ところで、近年においては、図14を用いて上述した例のように、32bit程度のデータであれば1回のアクセスで書き込み/読み出しが可能であるし、また、32bit程度のデータを複数に分けて読み書きすることも比較的に簡単に行うことができるようになっている。つまり、リングバッファを用いるDSP(Digital Signal Processor)の機能も向上してきている。
【0014】
その一方で、リングバッファの利用については、1つのメモリーにリングバッファ領域と通常メモリー領域とを併存させて用いるのではなく、1つのメモリー内に複数のリングバッファ領域を形成してそれぞれを別個に用いるようにしたり、また、記憶容量やメモリーの接続状態を変えずにより長い遅延時間を確保できるようにしたいなどの新たな要求が出てきている。
【0015】
すなわち、従来から、DSP(Digital Signal Processor)による音場生成処理のためにリングバッファとして用いる外部RAMのデータアクセス幅は、固定で用いるのが一般的である。例えば、64k*16bit=1MbitのSRAM(Static Random Access Memory)を2個、データ幅を32bitとして使用するようにした場合、アクセス空間は64k空間 (サンプリング周波数が48kHz時に1365msec(ミリ秒)の遅延量の確保が可能なアクセス空間)と一意的に決まる。このため、全ての音場生成処理のプログラムをこの時間内に収まるように設計する必要がある。
【0016】
より長い遅延時間を必要とするプログラムを搭載する場合には、さらにSRAMを追加接続してアクセス空間を増やすか、SRAMを128k*16bitで使用するように接続し直して、多少の音質の犠牲を容認した上で16bitアクセスで用いるしかない。また、異なる処理を並行して行うために、複数のリングバッファを用いたい場合にも、別途、SRAMを追加接続する必要が生じる。
【0017】
しかし、SRAMの個数を増やすことはその分コストが上がることを意味する。また、常時、16ビットのデータ幅で用いるようにした場合には、例えば通常時の処理が32ビット処理であるときには、上位の16ビットと下位の16bitとを別々に、2回アクセスする必要があるため、32ビット幅で用いたときの倍の処理時間がかかってしまうなどの弊害が発生する可能性がある。
【0018】
また、異なる処理を並行して行うために、複数のリングバッファが必要となる場合であっても、同時に並行して行うべき処理が常時存在していれば、そのそれぞれの処理用にリングバッファとして用いる複数のSRAMを設けることは無駄ではない。しかし、同時に並行して行うべき処理が常時存在していない場合には、未使用時のSRAMは無駄なものとなってしまう。
【0019】
以上のことは、内部RAMを使用したリングバッファ処理についてもそのままあてはまる。このため、メモリー容量を増やしたり、また、1サンプル当たりデータ幅を常時少なくすることによって、それよりも広いデータ幅でメモリーを使用する場合に処理時間が長くなってしまったりするなどの弊害を生じさせることなく、処理に応じたリングバッファを確保し、また、処理に応じた遅延量のリングバッファを確保でいるようにする技術の提供が望まれている。
【0020】
以上のことにかんがみ、この発明は、リングバッファとして用いるメモリーを増設したり、接続状態を変えたりするなどのことなく、別々に制御可能な複数のリングバッファとして用いるようにしたり、また、より長い遅延量を確保したりすることができるようにする方法、装置を提供することを目的とする。
【0021】
【課題を解決するための手段】
上記課題を解決するため、請求項1に記載の発明のメモリー制御方法は、
データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにし、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記アドレスが、前記複数個の分割記憶領域のどの領域に対するものかを指示するようにし、
指示された前記分割記憶領域毎に、書き込みアドレスと読み出しアドレスとを制御することにより、
前記複数個の分割記憶領域のそれぞれを、前記所定のデータ幅のリングバッファとして用いるようにすることを特徴とする。
【0022】
この請求項1に記載の発明のメモリー制御方法によれば、1つのメモリーの記憶領域が分割されて、所定のデータ幅の複数個の分割記憶領域が形成される。そして、元の1つのメモリーの記憶領域に対するアドレスが、各分割記憶領域のアドレスとして用いられる。つまり、1つのメモリーの記憶領域についてのアドレスは、複数の分割記憶領域のそれぞれの記憶位置を示すものとして用いるようにされる。
【0023】
このように、1つのメモリーの記憶領域についてのアドレスを各分割記憶領域で使い分けることによって、各分割記憶領域を異なる複数のリングバッファとして用いることができるようにされる。また、元の1つのメモリーの記憶領域を元のデータ幅のまま使用する場合、アドレス制御については何の変更もともなわず、元のデータ幅のままデータの書き込みやデータの読み出しを行うことができるようにされる。
【0024】
また、請求項2に記載の発明のメモリー制御方法は、
データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにし、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記所定のデータ幅の前記複数個の分割記憶領域をアクセス幅方向に連続する1つの記憶領域として、書き込みアドレスと読み出しアドレスとを制御し、
前記メモリーの記憶領域の元のアクセス幅より大きいアクセス幅のリングバッファとして用いるようにすることを特徴とする。
【0025】
この請求項2に記載の発明のメモリー制御方法によれば、1つのメモリーの記憶領域が分割されて、所定のデータ幅の複数個の分割記憶領域が形成される。この分割されて形成された各分割記憶領域がアクセス幅方向に接続するようにされ、連続した記憶領域のリングバッファとして利用できるようにされる。この場合、元の1つのメモリーの記憶領域に対するアドレスが、各分割記憶領域のアドレスとして用いられる。
【0026】
各分割記憶領域のデータ幅は、メモリーの元の記憶領域のデータ幅より狭くなるが、遅延時間は、分割記憶領域が2つであれば2倍に、3つであれば3倍にと言うように、長くすることができる。したがって、分割記憶領域のデータ幅として処理に必要なデータ幅が確保できる場合に、遅延時間のより長いリングバッファを実現することができるようにされる。また、元の1つのメモリーの記憶領域を元のデータ幅のまま使用する場合、アドレス制御については何の変更もともなわず、元のデータ幅のままデータの書き込み、データの読み出しを行うことができるようにされる。
【0027】
【発明の実施の形態】
以下、図を参照しながら、この発明による方法、装置の一実施の形態について説明する。以下に説明する実施の形態においては、この発明による方法、装置の一実施の形態をオーディオアンプ装置に適用した場合を例にして説明する。
【0028】
[オーディオアンプ装置の構成について]
図1は、この発明による方法、装置の一実施の形態が適用された、この実施の形態のオーディオアンプ装置を説明するためのブロック図である。図1に示すように、この実施の形態のオーディオアンプ装置は、デジタルオーディオ信号の入力端子in、音声データデコード部1、DSP2、外部メモリー(SRAM)3、左チャンネルスピーカ4L、右チャンネルスピーカ4R、制御部5、キー操作部6を備えたものである。
【0029】
制御部5は、図1に示したように、CPU(Central Processing Unit)51、ROM(Read Only Memory)52、RAM(Random Access Memory)53、不揮発性メモリー54が、システムバス55を通じて接続されて構成されたマイクロコンピュータであり、この実施の形態のオーディオアンプ装置の各部を制御することができるものである。
【0030】
ここで、ROM52は、この実施の形態のオーディオアンプ装置に応じて実行する種々のプログラムや処理に必要なデータ等が記憶されたものであり、RAM53は、処理の途中結果を保持するなど、主に作業領域として用いられるものである。また、不揮発性メモリーは、電源が落とされても記憶情報を保持しておくことができるものであり、例えば、設定パラメータなどが記憶保持される。
【0031】
そして、入力端子inを通じて受け付けた、例えば、CD(Compact Disc)プレーヤなどの各種のデジタル機器から供給されるデジタル音声信号(オーディオストリーム)は、音声データデコード部1に供給される。
【0032】
音声データデコード部1は、制御部5からの制御に応じて動作し、これに供給された入力音声信号である所定のフォーマットのデジタルオーディオストリームをそのフォーマットに応じてデコードし、入力音声信号のチャンネル構成を判別するとともに、チャンネル構成に応じた各チャンネルのデコード後の音声信号を分離し、分離したデコード後の音声信号をDSP2に供給する。
【0033】
なお、音声データデコード部1は、集積回路(IC)とし構成された種々のものを用いることにより実現することができる。例えば、富士通株式会社製のICである型番MB86347、MB86349、MB86D42、MB86D41などを音声データデコード部1として用いることが可能である。
【0034】
これらのICは、PCM、ドルビーデジタル、dts、AAC(Advanced Audio Coding)等の信号フォーマットのデジタルオーディオストリームをデコードし、そのデジタルオーディオストリームのチャンネル構成に応じたチャンネルのデコード後の音声信号(音声データ)を出力することができるものである。
【0035】
DSP2は、制御部5からの制御に応じて動作し、外部メモリー3をリングバッファとして用いて、音声データデコード部1から供給される音声信号に対して、リバーブ処理や各種のフィルタ処理を施すようにするものである。そして、このDSP2における外部メモリー3の制御方法がこの発明による方法が適用されたものであり、DSP2自体がこの発明によるメモリー制御装置を実現するものである。
【0036】
そして、DSP2において、リバーブ処理等が施された左チャンネルの音声信号は左チャンネルスピーカ4Lに供給され、右チャンネルの音声信号は右チャンネルスピーカ4Rに供給される。これにより、左右のスピーカー4L、4Rからこれらに供給された音声信号に応じた音声が放音するようにされる。
【0037】
なお、説明を簡単にするため、図1には図示しなかったが、DSP2とスピーカー4L、4Rとの間には、左右のチャンネルに対応して、DSP2からのデジタル音声データをアナログ音声信号に変換するD/A(Digital/Analog)変換器や、音量調整のための増幅器などが接続されており、制御部5の制御に応じて、D/A変換や音量調整がなされるようにされている。
【0038】
また、制御部5に接続されたキー操作部6は、ユーザーからの種々の操作入力を受け付け、これを電気信号に変換して、制御部5に通知することができるものであり、これにより、制御部5はユーザーからの指示に応じて、この実施の形態のオーディオアンプ装置の各部を制御することができるようにされる。
【0039】
そして、この実施の形態のオーディオアンプ装置のDSP2は、外部メモリー3をリングバッファとして用いて、音声データデコード部1から供給される音声データに対して種々の処理を施すことができるものであるが、外部メモリー3のメモリー空間(記憶領域)を複数の分割記憶領域に分割し、それらを別々のリングバッファとして用いたり、複数の分割記憶領域をアクセス幅方向に連続した領域のリングバッファとして用いて、長い遅延時間を稼ぐようにしたりすることができるものである。
【0040】
以下においては、(1)外部メモリー3のメモリー空間に、複数のリングバッファを形成するようにして用いる場合と、(2)外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合とについて具体的に説明する。なお、以下の説明においては、外部メモリー3は、図14にも示したように、アクセス幅がN、データ幅が32ビットのN*32bitのメモリー空間を持つものであり、DSP2は、基本的に、32bit単位でデータの書き込み、読み出しを行うものである。すなわち、DSP2は、32ビット入出力のものである。
【0041】
[(1)外部メモリー3に複数のリングバッファを形成する例]
まず、外部メモリー3のメモリー空間に、複数のリングバッファを形成するようにして用いる場合について説明する。図2は、外部メモリー3のメモリー空間に2つのリングバッファを形成し、これらを別々に用いるようにする場合について説明するための図である。図2にも示すように、この実施の形態のオーディオアンプ装置に搭載された外部メモリー3は、アクセス幅がN、データ幅が32ビットであるN*32bitのメモリー空間を持つものである。
【0042】
そして、通常、音声データは32bitのデータ幅で処理されるが、例えば、左チャンネルの音声信号と右チャンネルの音声信号とのデータ幅を16bitにし、左チャンネルの音声信号と右チャンネルの音声信号とで、異なるリバーブ処理を行わせるようにしたい場合などがある。
【0043】
このような場合において、DSP2は、図2に示したように、外部メモリー32のメモリー空間を上位側16bitの上位領域(第1メモリー空間)31と、下位側16bitの下位領域(第2メモリー空間)32とに分離するようにする。このように、元のメモリー空間内に2つのサーキュラバッファを設けるようにする。
【0044】
図2から分かるように、上位領域31、下位領域32とも、アクセス幅N、データ幅16ビットのメモリー空間を持ち、外部メモリー3を2N*16bitのメモリー空間として利用ができるようにしている。そして、上位領域31、下位領域32のいずれにアクセスする場合にも、アドレスは、通常通り、外部メモリー3のN*32bitのメモリー空間に対するアドレスが用いられる。
【0045】
そして、図2において点線矢印が示すように、リングバッファとして用いられる上位領域31と、下位領域32とにおいて、上位領域31に対する書き込みアドレスをW1、読み出しアドレスをR1、遅延量をn1で表し、また、下位領域32に対する書き込みアドレスをW2、読み出しアドレスをR2、遅延量をn2で表すものとする。この場合、書き込みアドレスW1、W2、および、遅延量n1、n2は、オーディオアンプ装置の制御部5、あるいは、DSP2により決められて用いられる。
【0046】
そして、図14を用いて説明したリングバッファの通常のアクセス時と同様に、DSP2が外部メモリー3の上位領域31上の書き込みアドレスW1が示す位置にデータを書き込んだ場合、データの読み出し位置は、図2の左端の読み出しアドレスR1が示すように、書き込みアドレスW1か示す位置よりも、システムにより決められる遅延量であるn1サンプル分だけ遅れた位置となる。したがって、この場合の読み出しアドレスR1は、W1−n1で求められる。
【0047】
また、DSP2が外部メモリー3の下位領域32上の書き込みアドレスW2が示す位置にデータを書き込んだ場合、データの読み出し位置は、図2の右端の読み出しアドレスR2が示すように、書き込みアドレスW2が示す位置よりも、システムにより決められる遅延量であるn2アンプル分だけ遅れた位置となる。したがって、この場合の読み出しアドレスR2は、W2−n2で求められる。
【0048】
このように、外部メモリー3のメモリー空間を上位領域31と下位領域32とに分け、上位領域31と下位領域32とで、それぞれ異なる遅延量n1、n2を用いて、2つの異なる遅延処理を同時に並行して行うことができるようにしている。
【0049】
次に、図2に示した上位領域31と下位領域32とをリングバッファとして用い、これらにデータを書き込み、また、読み出す場合の処理について、図3〜図6を参照しながら具体的に説明する。なお、以下で説明する処理で用いるレジスタa0、a1は、いずれも32bitのものである。
【0050】
まず、上位領域31をリングバッファとして用いる場合について説明する。図3、図4は外部メモリー3の上位領域31をリングバッファとして用いる場合の処理を説明するための図であり、図3は、上位領域31にデータを書き込む場合の処理を、図4は、上位領域31に書き込まれたデータを読み出す処理を、それぞれ説明するためのものである。
【0051】
まず、図3を用いて上位領域31に音声信号を書き込む場合の処理について説明する。図3Aは、DSP2の処理ステップを、また、図3Bは、DSP2の処理に伴うレジスタa0、a1の変化の状態を示している。
【0052】
DSP2は、まず、図3B(1)に示すように、書き込みたい16bitデータであるWDT1をレジスタa0の上位16bitに格納する(ステップS101)。次に、DSP2は、図3B(2)に示すように、レジスタa0の下位16bitを0(ゼロ)にする(ステップS102)。
【0053】
そして、DSP2は、外部メモリー3の上位領域31を含む領域であって、データWDT1を書き込みたい位置(書き込みアドレスW1により示される位置)に記録されている1ワード分(32bit分)のデータ(RDT1、RDT2)を読み出して、これを、図3B(3)に示すように、レジスタa1に格納する(ステップS103)。
【0054】
次に、DSP2は、図3B(4)に示すように、外部メモリー3から読み出したデータを格納したレジスタa1の上位16bitを0(ゼロ)にする(ステップS104)。そして、DSP2は、レジスタa1に、レジスタa1とレジスタa0の和を求める(ステップS105)。図3AのステップS105においては、和演算記号として「|」を用いている。
【0055】
このステップS105の処理により、図3B(5)に示すように、レジスタa1の上位16bitには、外部メモリー3の上位領域31に書き込みたいデータであるWDT1がセットされ、レジスタa1の下位16bitには、外部メモリー3の書き込みアドレスW1が示す位置の下位領域32に記録されているデータRDT2がセットされた状態となる。
【0056】
そして、DSP2は、レジスタa1の32bitのデータを、書き込みアドレスW1が示す外部メモリー3上の位置に記録する(ステップS106)。これにより、書き込みアドレスW1が示す外部メモリー3上の位置の上位領域31部分には、書き込みデータWDT1が記録され、書き込みアドレスW1が示す外部メモリー3上の位置の下位領域32部分には、元の情報のままのデータ(読み出され保護されたデータ)であるデータRDT2がそのまま記録されることになる。
【0057】
このようにして、書き込みアドレスW1で示される外部メモリー3上の下位領域32のデータはそのままに、上位領域31に対してのみ、16bitの目的とする書き込みデータWDT1を書き込むようにすることができる。
【0058】
次に、図4を用いて上位領域31に書き込まれた音声信号を所定時間分遅延させて読み出す処理について説明する。図4Aは、DSP2の処理ステップを、図4Bは、DSP2の処理に伴うレジスタa0の変化の状態を示している。
【0059】
まず、DSP2は、上位領域31についての最新の書き込みアドレスW1と上位領域31をリングバッファとして用いた場合の予め決められる遅延量n1とに基づいて、W1+n1なる演算を行い、書き込みアドレスW1から所定量分遅延した位置の読み出しアドレスR1を特定し、この読み出しアドレスR1が示す外部メモリー3上の位置から1ワード(32bit)分のデータを読み出し、これを図4B(1)に示すように、レジスタa0に格納する(ステップS201)。
【0060】
次に、DSP2は、図4B(2)に示すように、レジスタa0の下位16bitを0(ゼロ)クリアーし、上位領域31に記録されている16bit分のデータRDT1のみを利用可能にする(ステップS202)。
【0061】
これにより、上位領域31に記録されたデータであって、書き込みアドレスW1から遅延量n1だけ遅延した位置のデータを読み出し、これを利用することができるようにされる。
【0062】
次に、下位領域32をリングバッファとして用いる場合について説明する。図5、図6は外部メモリー3の下位領域32をリングバッファとして用いる場合の処理を説明するための図であり、図5は、下位領域32にデータを書き込む場合の処理を、図6は、下位領域32に書き込まれたデータを読み出す処理を、それぞれ説明するためのものである。
【0063】
まず、図5を用いて下位領域32に音声信号を書き込む場合の処理について説明する。この図5においても、図3に示した場合と同様に、図5Aは、DSP2の処理ステップを、図5Bは、DSP2の処理に伴うレジスタa0、a1の変化の状態を示している。
【0064】
DSP2は、まず、図5B(1)に示すように、書き込みたい16bitデータであるWDT2をレジスタa0の下位16bitに格納する(ステップS301)。次に、DSP2は、図5B(2)に示すように、レジスタa0の上位16bitを0(ゼロ)にする(ステップS302)。
【0065】
そして、DSP2は、外部メモリー3の下位領域32を含む領域であって、データWDT2を書き込みたい位置(図2において書き込みアドレスW2により示される位置)に記録されている1ワード分(32bit分)のデータ(RDT1、RDT2)を読み出して、これを、図5B(3)に示すように、レジスタa1に格納する(ステップS303)。
【0066】
次に、DSP2は、図5B(4)に示すように、レジスタa1の下位16bitを0(ゼロ)にする(ステップS304)。そして、DSP2は、レジスタa1に、レジスタa1とレジスタa0の和を求める(ステップS305)。図5AのステップS305においては、和演算記号として「|」を用いている。
【0067】
このステップS305の処理により、レジスタa1には、図5B(5)に示すように、レジスタa1の下位16bitには、外部メモリー3の下位領域32に書き込みたいデータであるWDT2がセットされ、レジスタa1の上位16bitには、外部メモリー3の書き込みアドレスW2が示す位置の上位領域31に記録されているデータRDT1がセットされた状態となる。
【0068】
そして、DSP2は、レジスタa1の32bitのデータを、書き込みアドレスW2が示す外部メモリー3上の位置に記録する(ステップS306)。これにより、書き込みアドレスW2が示す外部メモリー3上の位置の下位領域32部分には、書き込みデータWDT2が記録され、書き込みアドレスW2が示す外部メモリー3上の位置の上位領域31部分には、元の情報のままのデータ(読み出され保護されたデータ)であるデータRDT1がそのまま記録されることになる。
【0069】
このようにして、書き込みアドレスW2で示される外部メモリー3上の上位領域32のデータはそのままに、下位領域32に対してのみ、16bitの目的とする書き込みデータWDT2を書き込むようにすることができる。
【0070】
次に、図6を用いて下位領域32に書き込まれた音声信号を所定時間分遅延させて読み出す処理について説明する。図6においても、上述した図4の場合と同様に、図6Aは、DSP2の処理ステップを、図6Bは、DSP2の処理に伴うレジスタa0の変化の状態を示している。
【0071】
まず、DSP2は、下位領域32についての最新の書き込みアドレスW2と下位領域32をリングバッファとして用いた場合の予め決められる遅延量n2とに基づいて、W2+n2なる演算を行い、書き込みアドレスW2から所定量分遅延した位置の読み出しアドレスR2を特定し、この読み出しアドレスR2が示す外部メモリー3上の位置から1ワード(32bit)分のデータを読み出し、これを図6B(1)に示すように、レジスタa0に格納する(ステップS401)。
【0072】
次に、DSP2は、図6B(2)に示すように、レジスタa0の32bitのデータを左に(上位方向に)16bit分シフトする(ステップS402)。そしてDSP2は、レジスタa0の下位16bitを0(ゼロ)クリアーし、下位領域32に記録されている16bit分のデータRDT2のみを利用可能にする(ステップS403)。
【0073】
これにより、下位領域31に記録されたデータであって、書き込みアドレスW2から遅延量n2だけ遅延した位置のデータを読み出し、これを利用することができるようにされる。
【0074】
このように、外部メモリー3の上位領域31と下位領域32とを別々のリングバッファとして用いて、2つの異なるデータについてそれぞれ異なる遅延量で遅延処理を行うようにすることができる。しかも、上位領域31に対してアクセスする場合も、また、下位領域32に対してアクセスする場合にも、外部メモリー3についてのアドレス制御で、外部メモリー3上の適切な位置にデータを書き込むとともに、適切な位置からデータを読み出して利用することができるようにされる。
【0075】
そして、図3〜図6を用いて説明したように、外部メモリー3を上位領域31、下位領域32の2つの領域に分けて、それぞれを別々のリングバッファとして用いるようにすることは、上述もしたように、例えば、左右2チャンネルの音声信号を処理する場合であって、左チャンネルの音声信号と右チャンネルの音声信号とで、異なるリバーブ処理を行わせるようにするなどのことが、メモリーを追加搭載することなく容易に可能となる。
【0076】
例えば、図7の概念図に示すように、外部メモリー3の上位領域31を左チャンネル音声用とし、外部メモリー3の下位領域32を右チャンネル音声として用いるようにする。図7において、記号in−L、記号out−Lは左チャンネル用の入力端、出力端を示し、記号in−R、記号out−Rは右チャンネル用の入力端、出力端を示している。
【0077】
そして、左チャンネルの音声データについては、書き込みアドレスWLに基づいて、外部メモリー3の上位領域31に記録する。この上位領域31からデータを読み出す場合には、書き込みアドレスW1より予め決められる遅延量n1だけ遅れた位置(WL−n1)からデータを読み出し、その上位領域に記録されていたデータだけを出力して利用できるようにする。
【0078】
また、遅延量n11、n12というように、遅延量を複数設定することにより、そのいずれかを用いて、あるいは、それらを併用して、左チャンネルの音声データについて遅延処理を施し、遅延処理を施した左チャンネルの音声データを出力端out−Lから出力して利用することが可能である。
【0079】
右チャンネルの音声データについても同様に、書き込みアドレスWRに基づいて、外部メモリー3の下位領域32に記録する。この下位領域32からデータを読み出す場合には、書き込みアドレスW2より予め決められる遅延量n2だけ遅れた位置(WR−n2)からデータを読み出し、その下位領域に記録されていたデータだけを出力して利用できるようにする。
【0080】
また、遅延量n21、n22というように、遅延量を複数設定することにより、そのいずれかを用いて、あるいは、それらを併用して、右チャンネルの音声データについて遅延処理を施し、この遅延処理を施した右チャンネルの音声データを出力端out−Rから出力して利用することが可能である。
【0081】
なお、この例においては、図2に示したように、上位領域31、下位領域32は、それぞれアクセス幅がアドレス0(最小値)〜アドレスN(最大値)までの幅となるようにしたが、これに限るものではない。例えば、図8Aに示すように、上位領域31のアクセス幅を下位領域32のアクセス幅より狭くなるようにしたり、図8Bに示すように、下位領域32のアクセス幅を上位領域31のアクセス幅より狭くなるようにしたりすることも可能である。
【0082】
この図8に示した例の場合、図8Aにおいて、上位領域31の斜線で示したエリアが、リングバッファとしては用いられないエリアを示し、また、図8Bに置いて、下位領域32の斜線で示したエリアが、リングバッファとしては用いられないエリアを示しており、上位領域31と下位領域32とでは、それぞれアドレスの最大値が異なるようにされる。
【0083】
このようにすることによって、リングバッファとして用いられない斜線部で示したエリアを例えば作業領域として用いるなど、他の用途に用いるなどのことができるようにされる。
【0084】
また、上述の説明においては、DSP2は、32bit入出力のものであり、32bit単位でデータの書き込み、読み出しを行うため、図3〜図6に示したように、上位領域31を用いる場合には、下位領域32に対していわゆるマスキングを施すようにし、下位領域32を用いる場合には、上位領域31に対していわゆるマスキングを施すものとして説明した。しかし、これに限るものではない。
【0085】
DSP2が、上位領域31と下位領域32とに対して別々にアクセス可能なものであれば、上位領域31のみを対象としてデータの書き込み、読み出しを行うようにし、また、下位領域32のみを対象としてデータの書き込み、読み出しを行うようにてもよい。この場合には、アドレス制御の方法は、変わることはないし、マスキング処理の必要もない。
【0086】
なお、上述の説明から分かるように、この例の場合には、DSP2において実行されるソフトウエアによって、分割手段、領域指示手段、アドレス制御手段を実現するようにしている。
【0087】
また、例えば、32bitの音声信号を16bitに変換するなどの機能も、DSP2が行うものとして説明したが、これに限るものではない。DSP2の前段にbit変換回路を設けて、このbit変換回路が制御部5の制御により必要に応じて行う構成とすることも可能である。
【0088】
また、ここでは、図2に示したように、外部メモリー3の記憶領域を上位領域31と下位領域32との2つの分割記憶領域に分割するものとして説明したが、これに限るものではない。目的とするデータ幅が確保可能である範囲内で、外部メモリー3の記憶領域を2つ以上の任意の個数の分割記憶領域に分割し、それらを別個のリングバッファとして用いるようにすることができる。
【0089】
[(2)外部メモリー3にアクセス幅より遅延時間の長いリングバッファを形成する例]
次に、外部メモリー3の記憶領域に、外部メモリー3のメモリー空間のアクセス幅より遅延時間が長いリングバッファを形成して用いる場合について説明する。図9、図10は、外部メモリー3にこの外部メモリー3のメモリー空間のアクセス幅よりも遅延時間の長いリングバッファを形成して用いる場合を説明するための図である。
【0090】
上述もし、また、図9、図10にも示すように、この実施の形態のオーディオアンプ装置の外部メモリー3は、アクセス幅がN、データ幅が32ビットであるN*32bitのメモリー空間を持つものであり、この例の場合にも、図2に示した例の場合と同様に、外部メモリー3の記憶領域を上位領域(上位16bitの領域)31と下位領域(下位16bitの領域)32とに分割する。
【0091】
そして、図9Aにおいて、点線矢印が示すように、まず、上位領域31のアドレスNから負の方向にデータを書き込むようにし、上位領域31のアドレス0までデータを書き込み終えると、次には、下位領域32のアドレスNから負の方向にデータを書き込むようにし、下位領域32のアドレス0までデータを書き込み終えると、再度、上位領域31のアドレスNから負の方向にデータを書き込むようにする。
【0092】
このようにすることにより、データ幅が16bitでアクセス幅が2Nのリングバッファを外部メモリー3のメモリー空間に形成する。そして、この図9Aに示したリングバッファの場合にも、図2に示した例の場合と同様に、上位領域31と下位領域32とに対してデータを書き込んで行くことになるので、図3、図4に示した処理と同様にしてデータの書き込みを行うようにする。
【0093】
つまり、アドレス制御は、外部メモリー3をデータ幅が32bitとして用いる場合と何ら変わるところはない。しかし、上位領域31に対するデータの書き込みか、下位領域32に対するデータの書き込みかを区別するとともに、上位領域31に対するデータの書き込みの場合には、その同じアドレスの下位領域32のデータは変更しないように保護し、下位領域32に対するデータの書き込みの場合には、その同じアドレスの上位領域31のデータは変更しないように保護するようにする。このようにすることにより、上位領域31と下位領域32とをアクセス幅方向に連続するリングバッファとして用いることができる。
【0094】
この場合に、遅延データの読み出しエリアが、上位領域31か下位領域32かは、データの現在の書き込み位置に応じて異なることになる。また、読み出しアドレスの求め方も、データの書き込み位置と読み出し位置との位置関係で異なったものとなる。このため、この実施の形態においては、既知の値である外部メモリー3の最大アドレスと、書き込みアドレスと、遅延量とで表される関係に基づいて、読み出しアドレスを簡単かつ正確に求めるようにしている。
【0095】
この例の場合にも、外部メモリー3の最大アドレスをN、書き込みアドレスをW、遅延量をn、読み出しアドレスをRで表すこととする。ここで、外部メモリー3の最大アドレスNは固定値であり、遅延量nも処理に応じて固定的に定まる値である。また、書き込みアドレスWはDSP2によって制御されるものである。
【0096】
そして、図9Bに示すように、最大アドレスNから現在の書き込みアドレス(最新書き込みアドレス)Wを減算するようにした値が、遅延量n以上である場合、すなわち、図9Bに示すように、n≦N−Wの関係が維持されている場合には、データの書き込み位置と読み出し位置とは同じエリアに位置し、かつ、読み出し位置は、書き込み位置より正の方向にずれた位置にある状態にあることが分かる。
【0097】
そこで、書き込み位置と読み出し位置とが、図9Bに示す位置関係にあることが判明した場合には、読み出し位置を示す読み出しアドレスRは、書き込みアドレスWに遅延量nを加算した値、すなわち、R=W+nで求められる。なお、図9Bは、上位領域31に書き込み位置と読み出し位置とが存在する場合について示しているが、下位領域32に書き込み位置と読み出し位置とが存在する場合についても同様である。
【0098】
また、図10Aに示すように、遅延量nが、最大アドレスNから現在の書き込みアドレスWを減算するようにした値よりも大きく、かつ、最大アドレスNの2倍から現在の書き込みアドレスWを減算するようにした値以下である場合、すなわち、図10Aに示すように、N−W<n≦2*N−Wの関係が維持されている場合には、データの書き込み位置と読み出し位置とは、異なるエリア、すなわち、上位領域31と下位領域32とに別々に存在している状態であることが分かる。
【0099】
そこで、書き込み位置と読み出し位置とが、図10Aに示す位置関係にあることが判明した場合には、読み出し位置を示す読み出しアドレスRは、書き込みアドレスWに遅延量nを加算し、ここからさらに最大アドレスNを減算することにより得た値、すなわち、R=W+n−Nで求めることができるようにされる。
【0100】
すなわち、この図10Aの場合には、遅延量nは、図10Aにも示したように、n1+n2で求められ、遅延量nから最大アドレスNを減算することにより、元のアクセス幅(アドレス0〜アドレスNまでの幅)に対する書き込み位置から読み出し位置までの距離量が求められ、この距離量を書き込みアドレスWに加算することにより、読み出しアドレスRが求まるのである。
【0101】
なお、図10Aは、上位領域31に書き込み位置が存在し、下位領域32に読み出し位置が存在する場合について示しているが、これとは逆に、上位領域31に読み出し位置が存在し、下位領域32に書き込み位置が存在する場合についても同様である。
【0102】
また、図10Bに示すように、遅延量nが、最大アドレスNの2倍から現在の書き込みアドレスWを減算するようにした値よりも大きく、かつ、最大アドレスNの2倍の値以下である場合、すなわち、図10Bに示すように、2*N−W<n≦2*Nの関係が維持されている場合には、データの書き込み位置と読み出し位置とは同じエリアに位置し、かつ、読み出し位置は、書き込み位置より負の方向にずれた位置にある状態にあることが分かる。
【0103】
そこで、書き込み位置と読み出し位置とが、図10Bに示す位置関係にあることが判明した場合には、読み出し位置を示す読み出しアドレスRは、最大アドレスの2倍から遅延量nを減算して得た値を、書き込みアドレスWから減算することにより得た値、すなわち、R=W−(2*N−n)で求めることができるようにされる。
【0104】
すなわち、この図10Bの場合には、遅延量nは、図10Bにも示したように、n1+n2+n3で求められ、最大アドレスNの2倍の値から遅延量nを減算することにより、元のアクセス幅(アドレス0〜アドレスNまでの幅)に対する書き込み位置から読み出し位置までの距離量が求められ、この距離量を書き込みアドレスWから減算することにより、読み出しアドレスRが求まるのである。
【0105】
なお、図10Bは、上位領域31に書き込み位置と読み出し位置とが存在する場合について示しているが、下位領域32に書き込み位置と読み出し位置とが存在する場合についても同様である。
【0106】
このように、外部メモリー3のメモリー空間を上位領域31と下位領域32とに分け、これらをアクセス幅方向に連続したメモリー空間として用いて、より長い遅延時間を得ることが可能なリングバッファを形成するようにして用いることができる。
【0107】
次に、図9Aに示したように、外部メモリー3のメモリー空間の上位領域31と下位領域32とをアクセス幅方向に連続するリングバッファとして用い、これらにデータを書き込み、また、読み出す場合の処理について、図11〜図12を参照しながら具体的に説明する。なお、この例においても、レジスタa0、a1は、いずれも32bitのものである。
【0108】
まず、図11を参照しながら、図9Aに示したように、外部メモリー3のメモリー空間の上位領域31と下位領域32とをアクセス幅方向に連続させるようにして形成するようにされるリングバッファへのデータの書き込み処理について説明する。この図11に示す処理も、DSP2により実行される。
【0109】
DSP2は、まず、データを書き込もうとする外部メモリー3の位置は、上位領域31か下位領域32かを決定するとともに、データの書き込み位置を示す書き込みアドレスを決定する(ステップS501)。そして、DSP2は、今回の書き込み処理は、上位領域31への書き込みか、下位領域32への書き込みかを判断する(ステップS502)。
【0110】
ステップS502の判断処理において、上位領域31への書き込みであると判断したときには、DSP2は、図3を用いて上述したステップS101からステップS106の処理を実行することにより、外部メモリー3の上位領域31へのデータの書き込み処理を行う(ステップS503)。
【0111】
また、ステップS502の判断処理において、下位領域32への書き込みであると判断したときには、DSP2は、図5を用いて上述したステップS301からステップS306の処理を実行することにより、外部メモリー3の下位領域32へのデータの書き込み処理を行う(ステップS504)。
【0112】
ステップS503、ステップS504の処理の後、データの書き込み処理を終了する。このようにして、データの書き込み処理は、上位領域31への書き込みか、下位領域32への書き込みかを制御するとともに、外部メモリー3についてのアドレス制御を行うことにより、図9Aに示したように構成されるリングバッファに対してデータを書き込むことができる。
【0113】
次に、図12を用いて図9Aに示したように構成されるリングバッファに書き込まれたデータを所定時間分遅延させて読み出す処理について説明する。この図12に示す処理も、DSP2により行われる処理である。
【0114】
まず、DSP2は、書き込み位置から読み出し位置までの距離量である遅延量nを特定する(ステップS601)。そして、DSP2は、図9Bを用いて説明したように、遅延量nは、最大アドレスNから書き込みアドレスWを減算することにより得た値以下か否かを判断する(ステップS602)。すなわち、ステップS602の判断処理は、n≦N−Wの関係が成り立つか否かを判断する処理である。
【0115】
ステップS602の判断処理において、n≦N−Wの関係が成り立つと判断したときには、DSP2は、読み出しアドレスRとして、書き込みアドレスWに遅延量を加算することにより得た値を読み出しアドレスRとする(ステップS603)。
【0116】
ステップS602の判断処理において、n≦N−Wは成り立たないと判断したときには、DSP2は、図10Aを用いて説明したように、遅延量nは、最大アドレスNから書き込みアドレスWを減算することにより得た値より大きく、かつ、最大アドレスの2倍から書き込みアドレスWを減算することにより得た値以下か否かを判断する(ステップS604)。すなわち、ステップS604の判断処理は、N−W<n≦2*N−Wの関係が成り立つか否かを判断する処理である。
【0117】
ステップS604の判断処理において、N−W<n≦2*N−Wの関係が成り立つと判断したときには、DSP2は、書き込みアドレスWに遅延量nを加算して得た値から最大アドレスNを減算して得た値を読み出しアドレスRとする(ステップS605)。
【0118】
ステップS604の判断処理において、N−W<n≦2*N−Wの関係が成り立たないと判断したときには、DSP2は、遅延量nは、最大アドレスNの2倍から書き込みアドレスを減算して得た値より大きく、かつ、最大アドレスの2倍以下の状態、すなわち、図10Bに示した状態にあると判断し、最大アドレスNの2倍から遅延量nを減算した値を書き込みアドレスWから減算して得た値を読み出しアドレスRとする(ステップS606)。
【0119】
ステップS603、または、ステップS605、または、ステップS606の読み出しアドレスRの算出処理の後、DSP2は、読み出しアドレスRで示される外部メモリー3上の位置から1ワード分(上位領域31と下位領域32とを合わせた32bit分)のデータを読み出し、これをレジスタa0に格納する(ステップS607)。
【0120】
次に、DSP2は、遅延処理の対象のデータは、上位領域31のデータか否かを判断し(ステップS608)、上位領域31のデータであると判断したときには、レジスタa0の下位16bitを0(ゼロ)クリアーし、上位領域31から読み出したデータを利用可能にして、この図12に示す処理を終了する。
【0121】
また、ステップS608の判断処理において、遅延処理の対象のデータは、上位領域31のデータではないと判断したときには、レジスタa0のデータを左に16bitシフトし、下位16bitを0(ゼロ)クリアーし、下位領域32から読み出したデータを利用可能にして、この図12の処理を終了する。
【0122】
このように、外部メモリー3のメモリー空間を上位領域31と下位領域32とに分割し、これらをアクセス幅方向に連続する記憶領域として、より長い遅延時間を実現するリングバッファを形成するようにしてこれを用いることができるようにされる。
【0123】
なお、この例においても、DSP2は、32bit入出力のものであり、32bit単位でデータの書き込み、読み出しを行うため、上位領域31を用いる場合には、下位領域32に対していわゆるマスキングを施すようにし、下位領域32を用いる場合には、上位領域31に対していわゆるマスキングを施すものとして説明した。しかし、これに限るものではない。
【0124】
DSP2が、上位領域31と下位領域32とに対して別々にアクセス可能なものであれば、上位領域31のみを対象としてデータの書き込み、読み出しを行うようにし、また、下位領域32のみを対象としてデータの書き込み、読み出しを行うようにてもよい。この場合には、アドレス制御の方法は、変わることはないし、また、マスキング処理の必要もない。
【0125】
また、上述の説明から分かるように、この例の場合には、DSP2で実行されるソフトウエアにより、分割手段、アドレス制御手段を実現するようにしている。
【0126】
また、この例の場合にも、データ幅は、外部メモリー3の元のデータ幅より狭くなる。したがって、処理対象のデータのbit長が32bitである場合などにおいては、これをbit長が16bitのデータに変換するなどの必要が生じ、このような機能も、DSP2が行うようにすることができる。もちろん、これに限るものではなく、DSP2の前段にbit変換回路を設けて、このbit変換回路が制御部5の制御により必要に応じて行う構成とすることも可能である。
【0127】
また、この例においても、図9、図10に示したように、外部メモリー3のメモリー空間を上位領域31と下位領域32との2つの分割記憶領域に分割するものとして説明したが、これに限るものではない。目的とするデータ幅が確保可能である範囲内で、外部メモリー3の記憶領域を2つ以上の任意の個数の分割記憶領域に分割し、それらをアクセス幅方向に連続するメモリー空間を有するリングバッファとして用いるようにすることができる。
【0128】
すなわち、(1)外部メモリー3のメモリー空間に、複数のリングバッファを形成するようにして用いる場合と、(2)外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合との両方において、外部メモリー3のメモリー空間の分割は、図13Aに示すように、任意の偶数個に分割するようにしてもよいし、また、図13Bに示すように、任意の奇数個に分割するようにしてもよい。
【0129】
また、データ幅を各分割記憶領域毎に異ならせて用いるようにすることもできる。例えば、左チャンネル、センターチャンネル、右チャンネルの3チャンネルがある場合に、左右のチャンネル用の分割記録領域のデータ幅を8ビットとし、センターチャンネル用の分割記録領域のデータ幅を16ビットとするようにして、メモリー空間をできるだけ有効に活用するようにすることもできる。
【0130】
もちろん、上述のように、複数の分割記憶領域の幾つかは、同じデータ幅となるようにしてもよいし、各分割記憶領域毎にデータ幅を異ならせるようにすることももちろんできる。また、各分割領域のアクセス幅を異ならせようにしてもよいことは、図8を用いて上述した通りである。
【0131】
なお、上述の実施の形態においては、外部メモリー3は、アクセス幅がN、データ幅が32bitのメモリー空間を有するものとして説明したが、これに限るものではない。アクセス幅、データ幅とも任意のものを用いることができる。
【0132】
また、上述した実施の形態においては、この発明をオーディオアンプ装置に適用した場合を例にして説明したが、これに限るものではない。CDプレーヤやMD(Mini Disc)プレーヤなどの種々の音声データの再生機や記録再生機など、種々のオーディオ機器に適用可能であるし、また、オーディオ機器だけでなく、データの遅延処理を行うようにする種々の電子機器に適用可能であることは言うまでもない。
【0133】
しかし、この発明をオーディオ機器に適用した場合には、リバーブ処理等の各種のエフェクト処理や、各種のフィルタ処理を従来よりもメモリーを用いることなく、効果的に、かつ、安価に実現することが可能になるななど、その効果は大きなものとなる。
【0134】
【発明の効果】
以上、説明したように、この発明によれば、リングバッファとして用いるメモリーの容量を大きくするなどのことなく、リングバッファとして用いる1つのメモリーを複数のリングバッファとして用いたり、また、より長い遅延量を確保したりすることができる。
【図面の簡単な説明】
【図1】この発明により方法、装置の一実施の形態が適用されたオーディオアンプ装置を説明するためのブロック図である。
【図2】この発明による方法の一実施の形態であって、外部メモリー3の記憶領域に2つのリングバッファを形成し、これらを別々に用いるようにする場合について説明するための図である。
【図3】外部メモリー3の記憶領域に2つのリングバッファを形成し、一方のリングバッファにデータを記録する場合の処理を説明するためのフローチャートである。
【図4】外部メモリー3の記憶領域に2つのリングバッファを形成し、一方のリングバッファに記録されたデータを読み出す場合の処理を説明するためのフローチャートである。
【図5】外部メモリー3の記憶領域に2つのリングバッファを形成した場合の他方のリングバッファにデータを記録する場合の処理を説明するためのフローチャートである。
【図6】外部メモリー3の記憶領域に2つのリングバッファを形成した場合の他方のリングバッファに記録されたデータを読み出す場合の処理を説明するためのフローチャートである。
【図7】外部メモリー3の記憶領域に2つのリングバッファの利用例を説明するための図である。
【図8】外部メモリー3の記憶領域に2つのリングバッファを形成する場合の他の例を説明するための図である。
【図9】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合を説明するための図である。
【図10】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合を説明するための図である。
【図11】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合のデータの書き込み処理を説明するためのフローチャートである。
【図12】外部メモリー3のメモリー空間に、そのアクセス幅より遅延時間が長いリングバッファを形成して用いる場合のデータの読み出し処理を説明するためのフローチャートである。
【図13】外部メモリーのメモリー空間への分割記憶領域の形成例について説明するための図である。
【図14】従来のリングバッファの利用例を説明するための図である。
【符号の説明】
in…デジタルオーディオ信号の入力端子、1…音声データデコード部、2…DSP、3…外部メモリー(SRAM)、4L…左チャンネルスピーカ、4R…右チャンネルスピーカ、5…制御部、51…CPU、52…ROM、53…RAM,54…不揮発性メモリー、6…キー操作部
Claims (8)
- データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにし、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記アドレスが、前記複数個の分割記憶領域のどの領域に対するものかを指示するようにし、
指示された前記分割記憶領域毎に、書き込みアドレスと読み出しアドレスとを制御することにより、
前記複数個の分割記憶領域のそれぞれを、前記所定のデータ幅のリングバッファとして用いるようにすることを特徴とするメモリー制御方法。 - データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにし、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記所定のデータ幅の前記複数個の分割記憶領域をアクセス幅方向に連続する1つの記憶領域として、書き込みアドレスと読み出しアドレスとを制御し、
前記メモリーの記憶領域の元のアクセス幅より大きいアクセス幅のリングバッファとして用いるようにすることを特徴とするメモリー制御方法。 - 請求項1に記載のメモリー制御方法であって、
前記複数個の分割記憶領域の少なくとも1つ以上において、前記データ幅を異ならせるようにすることを特徴とするメモリー制御方法。 - 請求項1または請求項2に記載のメモリー制御方法であって、
前記複数個の分割記憶領域の少なくとも1つ以上において、前記アクセス幅を異ならせるようにすることを特徴とするメモリー制御方法。 - データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにする分割手段と、
前記1つのメモリーの記憶領域に対するアドレスが、前記分割手段により分割するようにされた前記複数個の分割記憶領域のどの領域に対するものかを指示する領域指示手段と、
前記領域指示手段により指示される分割記憶領域毎に、書き込みアドレスと読み出しアドレスとを制御するアドレス制御手段と
を備え、前記複数個の分割記憶領域のそれぞれを、前記所定のデータ幅のリングバッファとして用いるようにすることを特徴とするメモリー制御装置。 - データの書き込みと読み出しとが可能な1つのメモリーの記憶領域を所定のデータ幅の複数個の分割記憶領域に分割するようにする分割手段と、
前記1つのメモリーの記憶領域に対するアドレスを、前記複数個の分割記憶領域のそれぞれのアドレスとして用い、前記所定のデータ幅の前記複数個の分割記憶領域をアクセス幅方向に連続する1つの記憶領域として、書き込みアドレスと読み出しアドレスとを制御するアドレス制御手段と
を備え、前記メモリーの記憶領域を元のアクセス幅より大きいアクセス幅のリングバッファとして用いるようにすることを特徴とするメモリー制御装置。 - 請求項5に記載のメモリー制御装置であって、
前記分割手段は、前記複数個の分割記憶領域の少なくとも1つ以上において、前記データ幅を異ならせるようにすることができることを特徴とするメモリー制御方法。 - 請求項5または請求項6に記載のメモリー制御装置であって、
前記分割手段は、前記複数個の分割記憶領域の少なくとも1つ以上において、前記アクセス幅を異ならせるようにすることができることを特徴とするメモリー制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003111167A JP2004318467A (ja) | 2003-04-16 | 2003-04-16 | メモリー制御方法およびメモリー制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003111167A JP2004318467A (ja) | 2003-04-16 | 2003-04-16 | メモリー制御方法およびメモリー制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004318467A true JP2004318467A (ja) | 2004-11-11 |
Family
ID=33471797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003111167A Pending JP2004318467A (ja) | 2003-04-16 | 2003-04-16 | メモリー制御方法およびメモリー制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004318467A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546174B2 (en) | 2004-04-16 | 2009-06-09 | Funai Electric Co., Ltd. | Digital data reproduction apparatus capable of reproducing audio data, and control method thereof |
JP2009301405A (ja) * | 2008-06-16 | 2009-12-24 | Hitachi Ltd | データ処理方法、データ処理プログラムおよびデータ処理装置 |
CN106559705A (zh) * | 2015-09-28 | 2017-04-05 | 青岛海信电器股份有限公司 | 一种音频数据的处理方法、装置和系统 |
CN112835842A (zh) * | 2021-03-05 | 2021-05-25 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
CN114138177A (zh) * | 2021-09-29 | 2022-03-04 | 成都嘉程智宇信息技术有限公司 | 一种用于提高物联网设备闪存资源利用率的数据存储方法 |
-
2003
- 2003-04-16 JP JP2003111167A patent/JP2004318467A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546174B2 (en) | 2004-04-16 | 2009-06-09 | Funai Electric Co., Ltd. | Digital data reproduction apparatus capable of reproducing audio data, and control method thereof |
JP2009301405A (ja) * | 2008-06-16 | 2009-12-24 | Hitachi Ltd | データ処理方法、データ処理プログラムおよびデータ処理装置 |
CN106559705A (zh) * | 2015-09-28 | 2017-04-05 | 青岛海信电器股份有限公司 | 一种音频数据的处理方法、装置和系统 |
WO2017054378A1 (zh) * | 2015-09-28 | 2017-04-06 | 青岛海信电器股份有限公司 | 一种音频数据的处理方法、装置和系统 |
CN106559705B (zh) * | 2015-09-28 | 2019-07-12 | 青岛海信电器股份有限公司 | 一种音频数据的处理方法、装置和系统 |
CN112835842A (zh) * | 2021-03-05 | 2021-05-25 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
CN112835842B (zh) * | 2021-03-05 | 2024-04-30 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
CN114138177A (zh) * | 2021-09-29 | 2022-03-04 | 成都嘉程智宇信息技术有限公司 | 一种用于提高物联网设备闪存资源利用率的数据存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004318467A (ja) | メモリー制御方法およびメモリー制御装置 | |
JP2976429B2 (ja) | アドレス制御回路 | |
US6748472B2 (en) | Method and system for an interrupt accelerator that reduces the number of interrupts for a digital signal processor | |
JP2004039138A5 (ja) | ||
JPH08306192A (ja) | 不揮発性メモリ書き込み装置 | |
EP1587097B1 (en) | Digital data reproduction apparatus capable of reproducing audio data, and control method thereof | |
JP3639424B2 (ja) | アドレス発生回路 | |
JP2669267B2 (ja) | バッファメモリ装置 | |
JP4254677B2 (ja) | 楽音発生装置および楽音発生処理のプログラム | |
KR100333646B1 (ko) | 동영상 전문가 그룹 오디오 레이어 3 디코더의 입력 버퍼 | |
KR20030083231A (ko) | 휴대용 cd-mp3 시스템 및 그것을 위한 파일 시스템디코딩 방법 | |
JP2860655B2 (ja) | 並列命令実行型プロセッサ | |
JP3258276B2 (ja) | 情報再生装置および情報記録再生装置 | |
JP2686234B2 (ja) | デジタル信号処理装置及び信号処理方法 | |
JP2007053553A (ja) | 音声再生装置 | |
WO2007035043A1 (en) | Apparatus and method for playing audio using dma | |
US7298924B2 (en) | Image data enlarging/reducing apparatus enlarging/reducing image data by direct memory access transfer | |
JPH10271082A (ja) | 音声データ復号装置 | |
JP2000293169A (ja) | 楽音生成装置 | |
JP3022186B2 (ja) | デジタル信号処理装置 | |
JP3991475B2 (ja) | 音声データ処理装置およびコンピュータシステム | |
JPH0719246B2 (ja) | デジタル信号処理装置 | |
JP2766191B2 (ja) | デジタル信号処理装置及び信号処理方法 | |
JPH10282968A (ja) | 車載用音響装置 | |
KR100517018B1 (ko) | 오디오 믹싱 기능을 가지는 오디오 신호 재생 장치 및 그방법 |