(57)【要約】【課題】  データの入出力およびサンプリング周波数変換に関する演算手段の負担が少なく、リアルタイム性を損なうことなく信号処理を効率的に実行することができるＤＳＰを提供する。【解決手段】  ＡＳＲＣ１１は、プロセッサコア３００Ｘ（３００Ｙ）の処理対象となるデータを受け取り、サンプリング周波数変換を施して出力する。ＤＭＡＣ１００は、ＡＳＲＣ１１が出力したデータをＦＩＦＯ１３１Ｘ（１３１Ｙ）に蓄積し、プロセッサコア３００Ｘ（３００Ｙ）からのアクセスが行われていない期間を利用して、ＦＩＦＯ１３１Ｘ（１３１Ｙ）からローカルメモリ２００Ｘ（２００Ｙ）へのＤＭＡ転送を行う。また、ＤＭＡＣ１００は、プロセッサコア３００Ｘ（３００Ｙ）からのアクセスが行われていない期間を利用して、ローカルメモリ２００Ｘ（２００Ｙ）からＡＳＲＣ１２へのＤＭＡ転送を行う。【選択図】図１
2010250662.tif 000002
【特許請求の範囲】
【請求項１】
ローカルメモリと、
前記ローカルメモリに記憶されたデータを用いた信号処理を実行する演算手段と、
前記演算手段の処理対象となるデータを受け取り、このデータにサンプリング周波数変換を施して出力するサンプリング周波数変換手段と、
前記サンプリング周波数変換手段が出力するデータを蓄積するバッファを備え、前記演算手段から前記ローカルメモリへのアクセスが行われていない期間を利用して、前記バッファに蓄積されたデータを前記ローカルメモリにＤＭＡ転送するＤＭＡコントローラと
を具備することを特徴とするデジタル信号処理装置。
【請求項２】
前記演算手段は、前記信号処理の結果であるデータを前記ローカルメモリに蓄積し、
前記ＤＭＡコントローラは、前記演算手段から前記ローカルメモリへのアクセスが行われていない期間を利用して、前記ローカルメモリに蓄積されたデータを前記デジタル信号処理装置の外部の装置に出力するためのＤＭＡ転送を行うことを特徴とする請求項１に記載のデジタル信号処理装置。
【請求項３】
前記演算手段は、複数のプロセッサコアからなり、
前記ローカルメモリとして、前記複数のプロセッサコアが各々アクセスする複数のローカルメモリを具備し、
前記ＤＭＡコントローラは、前記複数のローカルメモリのうちの１つのローカルメモリから他の１つのローカルメモリへのＤＭＡ転送を行うことを特徴とする請求項１に記載のデジタル信号処理装置。
【請求項４】
前記ＤＭＡコントローラは、前記複数のローカルメモリのうちの１つのローカルメモリから前記サンプリング周波数変換手段へのＤＭＡ転送と、前記サンプリング周波数変換手段にＤＭＡ転送され、前記サンプリング周波数変換手段によってサンプリング周波数変換がなされたデータの前記複数のローカルメモリのうちの他の１つのローカルメモリへのＤＭＡ転送とを行うことを特徴とする請求項３に記載のデジタル信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オーディオ機器等に好適なＤＳＰ（Digital Signal Processor；デジタル信号処理装置）に関する。
【背景技術】
【０００２】
周知の通り、ＤＳＰは、積和演算を高速に実行可能なプロセッサであり、音声信号処理等のリアルタイム性の要求される信号処理によく用いられる。この種のＤＳＰにリアルタイム性を損なうことなく演算量の多い複雑な信号処理を行わせるためには、ＤＳＰの演算手段であるプロセッサコアが演算処理に専念することができるように、演算処理以外の処理に関するプロセッサコアの負担を減らす必要がある。プロセッサコアが負担する演算処理以外の処理の中には、信号処理の対象であるデータの入力のための処理および信号処理の結果であるデータの出力のための処理があり、これらの処理がプロセッサコアにとって大きな負担となる。このような負担を軽減するための手段として、ＤＭＡＣ（Direct Memory Access Controller；直接メモリアクセスコントローラ）が有用である。なお、ＤＭＡＣを備えたＤＳＰに関しては、特許文献１に開示がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２１５２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このようなＤＭＡＣを備えたＤＳＰにおいては、ＤＳＰのプロセッサコアに代わって、ＤＭＡＣが信号処理の対象であるデータを周辺装置等から取得してプロセッサコアのワークエリアであるローカルメモリに格納し、プロセッサコアによってローカルメモリに格納された信号処理結果であるデータを周辺装置に転送する。従って、信号処理のためのデータの入出力に関するプロセッサコアの負担が軽減される。しかし、プロセッサコアが複雑な信号処理を実行するような場合、プロセッサコアがローカルメモリを占有して演算処理を行うことが多くなり、周辺装置等から供給されるデータを欠落を生じさせることなく信号処理対象としてローカルメモリにＤＭＡ転送し、信号処理の結果であるデータを中断することなく一定のサンプリング周波数で周辺装置等に供給することが困難になるという問題がある。また、ＤＳＰが各種のサンプリング周波数のデータを周辺装置等から受け取って信号処理を行う場合、その受け取ったデータのサンプリング周波数をプロセッサコアが実行する信号処理に適したサンプリング周波数に変換する必要がある。このようなサンプリング周波数の変換処理は演算量が多く、プロセッサコアの処理負担を増大させる原因となっていた。
【０００５】
この発明は、以上説明した事情に鑑みてなされたものであり、データの入出力およびサンプリング周波数変換に関する演算手段の負担が少なく、リアルタイム性を損なうことなく信号処理を効率的に実行することができるＤＳＰを提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明は、ローカルメモリと、前記ローカルメモリに記憶されたデータを用いた信号処理を実行する演算手段と、前記演算手段の処理対象となるデータを受け取り、このデータにサンプリング周波数変換を施して出力するサンプリング周波数変換手段と、前記サンプリング周波数変換手段が出力するデータを蓄積するバッファを備え、前記演算手段から前記ローカルメモリへのアクセスが行われていない期間を利用して、前記バッファに蓄積されたデータを前記ローカルメモリにＤＭＡ転送するＤＭＡコントローラとを具備することを特徴とするデジタル信号処理装置を提供する。
【０００７】
かかる発明によれば、ＤＭＡコントローラが演算手段の処理対象となるデータをローカルメモリにＤＭＡ転送するので、データ入力に関する演算手段の負担が軽減される。また、ＤＭＡコントローラは、処理対象となるデータをバッファに蓄積し、このバッファからローカルメモリへのＤＭＡ転送を行うので、演算手段によるローカルメモリへのアクセスが多く、連続的なＤＭＡ転送が困難な状況でも、データ消失を頻発させることなくローカルメモリへのＤＭＡ転送を行うことができる。また、本発明によるデジタル信号処理装置では、サンプリング周波数変換手段によりサンプリング周波数変換がなされたデータをＤＭＡコントローラによりローカルメモリにＤＭＡ転送するようにしているので、サンプリング周波数変換に関する演算手段の負担がないという利点がある。
【０００８】
好ましい態様において、前記演算手段は、前記信号処理の結果であるデータを前記ローカルメモリに蓄積し、前記ＤＭＡコントローラは、前記演算手段から前記ローカルメモリへのアクセスが行われていない期間を利用して、前記ローカルメモリに蓄積されたデータを前記デジタル信号処理装置の外部の装置に出力するためのＤＭＡ転送を行う。
【０００９】
この態様によれば、ＤＭＡコントローラが演算手段の処理結果であるデータをローカルメモリからデジタル信号処理装置の外部の装置に出力するためのＤＭＡ転送を行うので、データ出力に関する演算手段の負担が軽減される。
【図面の簡単な説明】
【００１０】
【図１】この発明の一実施形態であるＤＳＰの構成を示すブロック図である。
【図２】同実施形態における入力転送の例を示す図である。
【図３】同実施形態における出力転送の例を示す図である。
【図４】同実施形態の全体的な動作例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照し、この発明の実施の形態を説明する。
図１はこの発明の一実施形態であるＤＳＰの構成を示すブロック図である。このＤＳＰは、大別してＡＳＲＣ（Asynchronous
Sampling Rate Converter；非同期サンプリング周波数変換器）１１および１２と、ＤＭＡＣ（Direct
Memory Access Controller；ＤＭＡコントローラ）１００と、ローカルメモリ２００Ｘおよび２００Ｙと、演算手段であるプロセッサコア３００Ｘおよび３００Ｙとにより構成されている。
【００１２】
ＡＳＲＣ１１および１２は、いずれも最大ｍチャネルの入力データを取り込み、チャネル毎に独立にサンプリング周波数の変換を行うことが可能な非同期サンプリング周波数変換器である。これらのうちＡＳＲＣ１１は、プロセッサコア３００Ｘまたは３００Ｙの処理対象である各種のサンプリング周波数の最大ｍチャネルの入力データを取り込み、プロセッサコア３００Ｘの処理対象についてはプロセッサコア３００Ｘによって予め指定されたサンプリング周波数のデータに変換して出力し、プロセッサコア３００Ｙの処理対象についてはプロセッサコア３００Ｙによって予め指定されたサンプリング周波数のデータに変換して出力する。
【００１３】
本実施形態では、このＤＳＰの周辺装置から出力されるデータをプロセッサコア３００Ｘまたは３００Ｙの処理対象としてＡＳＲＣ１１に与えることが可能である他、プロセッサコア３００Ｘまたは３００Ｙによって生成され、ＤＭＡＣ１００を介して出力されるデータをプロセッサコア３００Ｙまたは３００Ｘの処理対象としてＡＳＲＣ１１に与えることが可能である。
【００１４】
ＡＳＲＣ１２は、プロセッサコア３００Ｘまたは３００Ｙによって生成され、ＤＭＡＣ１００を介して供給されるデータを、そのデータの供給先である周辺装置に適合するサンプリング周波数のデータに変換して出力する装置である。
【００１５】
プロセッサコア３００Ｘおよび３００Ｙは、各種の音声処理のためのアプリケーションプログラムを実行するプロセッサコアである。ローカルメモリ２００Ｘおよび２００Ｙは、例えばデュアルポートＲＡＭであり、ローカルメモリ２００Ｘはプロセッサコア３００Ｘによりアクセスされ、ローカルメモリ２００Ｙはプロセッサコア３００Ｙによりアクセスされるようになっている。ここで、ローカルメモリ２００Ｘは、プロセッサコア３００Ｘの処理対象となるデータを格納するためのｎ個のバッファ領域２１１Ｘ（ｉｘ）（ｉｘ＝０〜ｎ−１）からなる入力バッファ２１０Ｘと、プロセッサコア３００Ｘの処理結果であるデータを格納するためのｎ個のバッファ領域２２１Ｘ（ｊｘ）（ｊｘ＝０〜ｎ−１）からなる出力バッファ２２０Ｘを有する。同様に、ローカルメモリ２００Ｙは、プロセッサコア３００Ｙの処理対象となるデータを格納するためのｎ個のバッファ領域２１１Ｙ（ｉｙ）（ｉｙ＝０〜ｎ−１）からなる入力バッファ２１０Ｙと、プロセッサコア３００Ｙの処理結果であるデータを格納するためのｎ個のバッファ領域２２１Ｙ（ｊｙ）（ｊｙ＝０〜ｎ−１）からなる出力バッファ２２０Ｙを有する。
【００１６】
ＤＭＡＣ１００は、プロセッサコア３００Ｘまたは３００Ｙの処理対象となる入力データ（例えばＡＳＲＣ１１を介して入力されるデータ）をローカルメモリ２００Ｘの入力バッファ２１０Ｘまたはローカルメモリ２００Ｙの入力バッファ２１０Ｙに格納するためのＤＭＡ転送である入力転送と、プロセッサコア３００Ｘの処理結果であるローカルメモリ２００Ｘの出力バッファ２２０Ｘ内のデータまたはプロセッサコア３００Ｙの処理結果であるローカルメモリ２００Ｙの出力バッファ２２０Ｙ内のデータをＡＳＲＣ１２等の出力先に届けるためのＤＭＡ転送である出力転送を行う装置である。
【００１７】
このＤＭＡＣ１００は、大別して、ＤＭＡブロック１３０Ｘおよび１３０Ｙと入出力制御部１７０とにより構成されている。ここで、ＤＭＡブロック１３０Ｘは、ローカルメモリ２００Ｘがプロセッサコア３００Ｘによりアクセスされていない空きサイクルを利用してローカルメモリ２００Ｘとの間のＤＭＡ転送（すなわち、サイクルスチールによるＤＭＡ転送）を行う装置である。また、ＤＭＡブロック１３０Ｙは、ローカルメモリ２００Ｙがプロセッサコア３００Ｙによりアクセスされていない空きサイクルを利用してローカルメモリ２００Ｙとの間のＤＭＡ転送（すなわち、サイクルスチールによるＤＭＡ転送）を行う装置である。
【００１８】
入出力制御部１７０は、ＡＳＲＣ１１を介して入力されるデータをＤＭＡブロック１３０Ｘまたは１３０Ｙに引き渡す第１の制御と、ローカルメモリ２００Ｘまたは２００ＹからＤＭＡブロック１３０Ｘまたは１３０Ｙを介して与えられるデータをＡＳＲＣ１２に引き渡す第２の制御と、ローカルメモリ２００Ｘまたは２００ＹからＤＭＡブロック１３０Ｘまたは１３０Ｙを介して与えられるデータをＤＭＡブロック１３０Ｙまたは１３０Ｘに引き渡す第３の制御（サンプリング周波数変換を伴わないループバック制御）と、ローカルメモリ２００Ｘまたは２００ＹからＤＭＡブロック１３０Ｘまたは１３０Ｙを介して与えられるデータをＡＳＲＣ１１に引き渡し、その結果、ＡＳＲＣ１１から出力されるデータをＤＭＡブロック１３０Ｙまたは１３０Ｘに引き渡す第４の制御（サンプリング周波数変換を伴うループバック制御）とを行う機能を備えている。
【００１９】
入出力制御部１７０において、入力データ保持部１１０は、入力チャネルレジスタ１１１（ｋ）（ｋ＝０〜ｍ−１）および１１１Ａにより構成されている。入力チャネルレジスタ１１１（ｋ）（ｋ＝０〜ｍ−１）には、ＡＳＲＣ１１から出力される第０〜第ｍ−１チャネルの入力データが与えられる。入力チャネルレジスタ１１１（ｋ）（ｋ＝０〜ｍ−１）は、各々に対する入力データをタイミングジェネレータ１６０から供給されるクロックにより取り込んで保持するレジスタである。入力チャネルレジスタ１１１Ａは、後述する出力チャネルレジスタ１５１Ａから出力される第ｍチャネルの入力データをタイミングジェネレータ１６０から供給されるクロックにより取り込んで保持するレジスタである。
【００２０】
入力セレクタ１２０Ｘは、プロセッサコア３００Ｘからの指令に従い、入力チャネルレジスタ１１１（ｋ）（ｋ＝０〜ｍ−１）および１１１Ａに保持された第０〜第ｍチャネルの入力データの中からローカルメモリ２００ＸにＤＭＡ転送すべき入力データを選択し、ＤＭＡブロック１３０Ｘに引き渡す装置である。
【００２１】
さらに詳述すると、本実施形態におけるプロセッサコア３００Ｘは、例えば第ｋ１チャネルの入力データをローカルメモリ２００Ｘのバッファ領域２１１Ｘ（ｉｘ）に入力転送させる場合、その入力データのチャネル番号ｋ１とバッファ領域２１１Ｘ（ｉｘ）の領域番号ｉｘを入力セレクタ１２０Ｘに対して指示する。この指示を受けた入力セレクタ１２０Ｘは、第ｋ１チャネルの入力データが入力チャネルレジスタ１１１（ｋ１）に保持される度に、その第ｋ１チャネルの入力データを入力チャネルレジスタ１１１（ｋ１）から取得し、この第ｋ１チャネルの入力データに対して、転送先の領域番号ｉｘを上位ビットとして付加し、ＤＭＡブロック１３０Ｘに引き渡す。
【００２２】
入力セレクタ１２０Ｙは、入力セレクタ１２０Ｘと同様な機能の装置であり、プロセッサコア３００Ｙからの指令に従い、ローカルメモリ２００Ｙへの入力転送の対象となる入力データをＤＭＡブロック１３０Ｙに引き渡す。
【００２３】
出力データ保持部１５０は、出力転送されるデータを保持する装置であり、出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）、１５１Ａおよび１５１Ｂにより構成されている。ここで、出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）は、上記第２の制御の対象となるデータをタイミングジェネレータ１６０から供給されるクロックにより取り込んで保持し、第０〜第ｍ−１チャネルの出力データとしてＡＳＲＣ１２に供給するためのレジスタである。出力チャネルレジスタ１５１Ａは、上記第３の制御の対象となるデータをタイミングジェネレータ１６０から供給されるクロックにより取り込んで保持し、上述した第ｍチャネルの入力データとして入力チャネルレジスタ１１１Ａに供給するためのレジスタである。出力チャネルレジスタ１５１Ｂは、上記第４の制御の対象となるデータをタイミングジェネレータ１６０から供給されるクロックにより取り込んで保持し、第ｍ−１チャネルの入力データとしてＡＳＲＣ１１に供給するためのレジスタである。
【００２４】
出力セレクタ１４０は、ＤＭＡブロック１３０Ｘから出力されるデータを出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）、１５１Ａまたは１５１ＢのうちＤＭＡブロック１３０Ｘによって指示された供給先に供給し、ＤＭＡブロック１３０Ｙから出力されるデータをＤＭＡブロック１３０Ｙによって指示された供給先に供給しする装置である。
【００２５】
タイミングジェネレータ１６０は、上述した入力チャネルレジスタ１１１（ｋ）（ｋ＝０〜ｍ−１）および１１１Ａの各々に対するクロックと、出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）、１５１Ａおよび１５１Ｂの各々に対するクロックを出力する他、ＤＭＡブロック１３０Ｘに対する出力転送指令ＱＲＸと、ＤＭＡブロック１３０Ｙに対する出力転送指令ＱＲＹを出力する。ここで、出力転送指令ＱＲＸは、ローカルメモリ２００Ｘからデータを読み出して出力セレクタ１４０に出力することを指示する指令であり、そのデータの出力先として出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）、１５１Ａおよび１５１Ｂのいずれかを指定するチャネル番号と、そのデータの読み出し先である出力バッファ２２０Ｘ内のバッファ領域２２１Ｘ（ｊｘ）の領域番号ｊｘを特定する情報を含む。同様に、出力転送指令ＱＲＹは、ローカルメモリ２００Ｙからデータを読み出して出力セレクタ１４０に出力することを指示する指令であり、そのデータの出力先を指定するチャネル番号と、そのデータの読み出し先である出力バッファ２２０Ｙ内のバッファ領域２２１Ｙ（ｊｙ）の領域番号ｊｙを特定する情報を含む。
【００２６】
入力チャネルレジスタ１１１（ｋ）（ｋ＝０〜ｍ−１）等および出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）等に対するクロックの周波数並びに出力転送指令ＱＲＸおよびＱＲＹの周波数（単位時間当たりの指令の発生回数）は、プロセッサコア３００Ｘまたは３００Ｙからタイミングジェネレータ１６０への指示により決定される。
【００２７】
例えばプロセッサコア３００Ｘが、ＡＳＲＣ１１から出力されるサンプリング周波数ｆｓ１の第ｋ１チャネルの入力データを入力チャネルレジスタ１１１（ｋ１）に保持させ、ＤＭＡブロック１３０Ｘに引き渡させるとする。この場合、プロセッサコア３００Ｘは、サンプリング周波数ｆｓ１と同じ周波数のクロックを入力チャネルレジスタ１１１（ｋ１）に出力すべき旨の指示をタイミングジェネレータ１６０に与える。
【００２８】
また、例えばプロセッサコア３００Ｘが、サンプリング周波数ｆｓ１の第ｋ３チャネルの出力データをＤＭＡブロック１３０Ｘを介して出力チャネルレジスタ１５１（ｋ３）に与え、ＡＳＣＲ１２に引き渡させるとする。この場合、プロセッサコア３００Ｘは、サンプリング周波数ｆｓ１と同じ周波数のクロックを出力チャネルレジスタ１５１（ｋ３）に出力し、サンプリング周波数ｆｓ１と同じ周波数の出力転送指令ＱＲＸをＤＭＡブロック１３０Ｘに出力すべき旨の指示をタイミングジェネレータ１６０に与える。
【００２９】
プロセッサコア３００Ｙも、プロセッサコア３００Ｘと同様、ＤＭＡブロック１３０Ｙを経由して転送されるデータのサンプリング周波数と同じ周波数のクロックおよび出力転送指令ＱＲＹがそのデータを取り扱う入力チャネルレジスタ、出力チャネルレジスタまたはＤＭＡブロック１３０Ｙに出力されるように、タイミングジェネレータ１６０に指示を与える。
【００３０】
ＤＭＡブロック１３０Ｘにおいて、ＦＩＦＯ１３１Ｘは、入力セレクタ１２０Ｘから出力される入力データを蓄積して、古いものから順に出力する先入れ先出し方式のバッファである。入力転送制御部１３２Ｘおよびフロー制御部１３５Ｘは、ローカルメモリ２００Ｘの入力バッファ２１０Ｘに対するアクセス状況を監視し、プロセッサコア３００Ｘによる入力バッファ２１０Ｘへのアクセスが行われていない空きサイクルを利用して、ＦＩＦＯ１３１Ｘから入力バッファ２１０Ｘへの入力転送を行う。以下、この入力転送に関するＤＭＡブロック１３０Ｘの機能の詳細について説明する。
【００３１】
図２（ａ）および（ｂ）は、この入力転送制御部１３２Ｘおよびフロー制御部１３５Ｘによる制御の下で行われる入力転送の例を示すものである。この入力転送を行うため、入力転送制御部１３２Ｘは、入力バッファ２１０Ｘのバッファ領域２１１Ｘ（ｉｘ）への転送がプロセッサコア３００Ｘにより指示されたとき、転送先であるバッファ領域２１１Ｘ（ｉｘ）に対応付けられたライトポインタＩＷＰｘ（ｉｘ）およびリードポインタＩＲＰｘ（ｉｘ）並びにライトポインタＩＭＷＰｘ（ｉｘ）およびリードポインタＩＭＲＰｘ（ｉｘ）の管理を開始する。
【００３２】
ここで、ライトポインタＩＷＰｘ（ｉｘ）は、ＦＩＦＯ１３１Ｘ内において転送先がバッファ領域２１１Ｘ（ｉｘ）である入力転送未了のデータのうち最後に書き込まれたもののアドレスよりも１だけ大きいアドレスである。また、リードポインタＩＲＰｘ（ｉｘ）は、ＦＩＦＯ１３１Ｘ内において転送先がバッファ領域２１１Ｘ（ｉｘ）である入力転送未了のデータのうち最初に書き込まれたもの（最も古いもの）のアドレスである。これらのライトポインタおよびリードポインタ間の差分ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）は、ＦＩＦＯ１３１Ｘ内における入力転送未了のデータ数となる。
【００３３】
また、ライトポインタＩＭＷＰｘ（ｉｘ）は、バッファ領域２１１Ｘ（ｉｘ）においてＦＩＦＯ１３１Ｘから転送されたデータが最後に書き込まれたもののアドレスよりも１だけ大きいアドレスである。また、リードポインタＩＭＲＰｘ（ｉｘ）は、バッファ領域２１１Ｘ（ｉｘ）においてプロセッサコア３００Ｘのために読み出すデータの読み出しアドレスを決定する指標となる数値である。
【００３４】
入力転送制御部１３２Ｘは、図２（ａ）に示すように、ＦＩＦＯ１３１Ｘ内においてリードポインタＩＲＰｘ（ｉｘ）が示すアドレスにあるデータ、すなわち、入力転送未了のデータのうち最も古いものを読み出すとともにリードポインタＩＲＰｘ（ｉｘ）を１だけ進める。そして、入力転送制御部１３２Ｘは、ＦＩＦＯ１３１Ｘから読み出したデータから領域番号ｉｘを取り除き、バッファ領域２１１（ｉｘ）に対する書き込みデータとして出力する。また、入力転送制御部１３２Ｘは、ライトポインタＩＭＷＰｘ（ｉｘ）に基づいて書き込みアドレスを発生して、バッファ領域２１１（ｉｘ）へのデータ書き込みを行わせた後、ライトポインタＩＭＷＰｘ（ｉｘ）を１だけ進める。
【００３５】
また、入力転送制御部１３２Ｘは、入力セレクタ１２０Ｘから入力転送先のバッファ領域番号ｉｘの付加された入力転送対象のデータが引き渡された場合、図２（ａ）に示すように、この引き渡されたデータをＦＩＦＯ１３１Ｘ内のライトポインタＩＷＰｘ（ｉｘ）により指示されるアドレスに書き込むとともに、ライトポインタＩＷＰｘ（ｉｘ）を１だけ進める。
【００３６】
フロー制御部１３５Ｘは、バッファ領域２１１（ｉｘ）のデータ書き込みの状況を監視し、一定量のデータがバッファ領域２１１（ｉｘ）に書き込まれる度に、データの読み出し要求をプロセッサコア３００Ｘに送る。プロセッサコア３００Ｘは、この読み出し要求を受け取ると、バッファ領域２１１（ｉｘ）における読み出し未了のデータの読み出しを開始する。
【００３７】
プロセッサコア３００Ｘがバッファ領域２１１（ｉｘ）からデータを取り込む入力モードには、ポインティングモードとフレームモードがある。ポインティングモードは、データを１個ずつ取り込むモードであり、フレームモードは、所定個数のデータからなるフレーム単位でデータを取り込むモードである。いずれのモードでのデータ取り込みを行うかはプロセッサコア３００Ｘが決定する。
【００３８】
ポインティングモードにおいてプロセッサコア３００Ｘは、例えばＮ個のデータを取り込む場合にバッファ領域２１１（ｉｘ）を特定したデータ読み出し要求をＮ回出力する。このデータ読み出し要求が出力される都度、その時点におけるリードポインタＩＭＲＰｘ（ｉｘ）に基づいて読み出しアドレスが決定され、読み出しアドレスからのデータ読み出しが行われる。そして、入力転送制御部１３２Ｘは、１個のデータ読み出しが行われる都度、リードポインタＩＭＲＰｘ（ｉｘ）を１だけ進める。
【００３９】
一方、フレームモードでは、プロセッサコア３００Ｘが読み出しアドレスを決定し、フレーム単位でバッファ領域２１１（ｊｘ）からのデータ読み出しを行い、その後、リードポインタＩＭＲＰｘ（ｉｘ）の内容を適切なアドレス、すなわち、最後に読み出しを行ったアドレスの次のアドレスに設定する。
【００４０】
以上のような入力転送が行われる過程において、例えばプロセッサコア３００Ｘによるバッファ領域２１１Ｘ（ｉｘ）へのアクセスの時間密度が高く、空きサイクルの発生が少ない場合には、ＦＩＦＯ１３１Ｘからバッファ領域２１１Ｘ（ｉｘ）への入力転送が滞るため、ＦＩＦＯ１３１Ｘ内の入力転送未了のデータ数ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）が増加する。そこで、フロー制御部１３５Ｘは、ＦＩＦＯ１３１Ｘ内の入力転送未了のデータ数ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）を監視し、このデータ数ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）が所定の閾値を越えたときに、入力バッファ２１０ＸをＤＭＡブロック１３０Ｘのために解放すべき旨の要求をプロセッサに送る。ここで、プロセッサコア３００Ｘが入力バッファ２１０をＤＭＡブロック１３０Ｘのために解放した場合、ＤＭＡブロック１３０Ｘは、プロセッサコア３００Ｘに邪魔されることなくバッファ領域２１１Ｘ（ｉｘ）への入力転送を行うことができるため、データ数ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）の増加の問題は解消される。しかし、プロセッサコア３００Ｘが入力バッファ２１０Ｘを解放しない場合、ＦＩＦＯ１３１Ｘ内の入力転送未了のデータ数ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）はさらに増加を続ける。そして、このデータ数ＩＷＰｘ（ｉｘ）−ＩＲＰｘ（ｉｘ）が許容値を越えた場合、フロー制御部１３５Ｘは、ＦＩＦＯ１３１Ｘが満杯となってデータ消失が生じた旨の通知をプロセッサコア３００Ｘに送る。
以上が１チャネルのデータの入力転送を行う場合の入力転送制御部１３２Ｘおよびフロー制御部１３５Ｘの処理内容である。
【００４１】
本実施形態では、このような１チャネルのデータの入力転送だけでなく、複数チャネルのデータの入力転送を並列実行することができる。例えば第ｋ１チャネルのデータのバッファ領域２１１Ｘ（ｉｘ１）への入力転送と、第ｋ２チャネルのデータのバッファ領域２１１Ｘ（ｉｘ２）への入力転送とを並列実行するとする。この場合、入力転送制御部１３２Ｘは、ＦＩＦＯ１３１Ｘ内において、第ｋ１チャネルの入力転送未了のデータの記憶領域と、第ｋ２チャネルの入力転送未了のデータの記憶領域とが重なることがないように、第ｋ１チャネルの入力転送に用いるリードポインタＩＲＰｘ（ｉｘ１）およびライトポインタＩＷＰｘ（ｉｘ１）と、第ｋ２チャネルの入力転送に用いるリードポインタＩＲＰｘ（ｉｘ２）およびライトポインタＩＷＰｘ（ｉｘ２）とを互いに十分に離れた値にする。そして、入力転送制御部１３２Ｘは、図２（ｂ）に示すように、第ｋ１チャネルについてリードポインタＩＲＰｘ（ｉｘ１）およびライトポインタＩＷＰｘ（ｉｘ１）並びにリードポインタＩＭＲＰｘ（ｉｘ１）およびライトポインタＩＭＷＰｘ（ｉｘ１）を用いて上述の１チャネルの入力転送と同様な処理を行う。また、これと並行し、図２（ｂ）に示すように、第ｋ２チャネルについてリードポインタＩＲＰｘ（ｉｘ２）およびライトポインタＩＷＰｘ（ｉｘ２）並びにリードポインタＩＭＲＰｘ（ｉｘ２）およびライトポインタＩＭＷＰｘ（ｉｘ２）を用いて上述の１チャネルの入力転送と同様な処理を行う。このように複数チャネルの入力転送の並列実行を行う場合には、ＦＩＦＯ１３１Ｘのバッファサイズを並列実行する入力転送のチャネル数に見合った十分な大きさにする必要がある。
【００４２】
次に、出力転送に関するＤＭＡブロック１３０Ｘの機能の詳細について説明する。ＦＩＦＯ１３３Ｘは、タイミングジェネレータ１６０から出力される出力転送指令ＱＲＸを蓄積して、古いものから順に出力する先入れ先出し方式のバッファである。出力転送制御部１３４Ｘおよびフロー制御部１３５Ｘは、ローカルメモリ２００Ｘの出力バッファ２２０Ｘに対するアクセス状況を監視し、プロセッサコア３００Ｘによる出力バッファ２２０Ｘへのアクセスが行われていない空きサイクルを利用して、出力バッファ２２０Ｘから出力セレクタ１４０への出力転送を行う。
【００４３】
図３（ａ）および（ｂ）は、出力転送制御部１３４Ｘおよびフロー制御部１３５Ｘによる制御の下で行われる出力転送の例を示すものである。出力転送を行うため、出力転送制御部１３４Ｘは、出力バッファ２２０Ｘのバッファ領域２２１Ｘ（ｊｘ）からの出力転送がプロセッサコア３００Ｘにより指示されたとき、転送元であるバッファ領域２２１Ｘ（ｊｘ）に対応付けられたライトポインタＯＷＰｘ（ｊｘ）およびリードポインタＯＲＰｘ（ｊｘ）並びにライトポインタＯＭＷＰｘ（ｊｘ）およびリードポインタＯＭＲＰｘ（ｊｘ）の管理を開始する。
【００４４】
ここで、ライトポインタＯＷＰｘ（ｊｘ）は、ＦＩＦＯ１３３Ｘ内においてバッファ領域２２１Ｘ（ｊｘ）からの出力転送を指令する読み出し未了の出力転送指令ＱＲＸのうち最後に書き込まれたもののアドレスよりも１だけ大きいアドレスである。また、リードポインタＯＲＰｘ（ｊｘ）は、ＦＩＦＯ１３３Ｘ内においてバッファ領域２２１Ｘ（ｊｘ）からの出力転送を指令する読み出し未了の出力転送指令ＱＲＸのうち最初に書き込まれたもののアドレスである。ここで、ライトポインタおよびリードポインタ間の差分ＯＷＰｘ（ｊｘ）−ＯＲＰｘ（ｊｘ）は、ＦＩＦＯ１３３Ｘ内に残っている読み出し未了の出力転送指令ＱＲＸの数となる。
【００４５】
また、リードポインタＯＭＲＰｘ（ｊｘ）は、バッファ領域２２１Ｘ（ｊｘ）において、ＦＩＦＯ１３３Ｘに最後に転送されたデータのアドレスよりも１だけ大きいアドレスである。また、ライトポインタＯＭＷＰｘ（ｉｘ）は、バッファ領域２２１Ｘ（ｊｘ）において、プロセッサコア３００Ｘの出力データの書き込みアドレスを決定する指標となる数値である。
【００４６】
プロセッサコア３００Ｘは、信号処理の結果であるデータを出力バッファ２２０のバッファ領域２２１（ｊｘ）に書き込む。このプロセッサコア３００Ｘがバッファ領域２２１（ｊｘ）にデータを書き込む出力モードには、上述した入力モードの場合と同様、ポインティングモードとフレームモードがある。ポインティングモードは、データを１個ずつ書き込むモードであり、フレームモードは、所定個数のデータからなるフレーム単位でデータを書き込むモードである。いずれのモードでのデータ書き込みを行うかはプロセッサコア３００Ｘが決定する。
【００４７】
ポインティングモードにおいてプロセッサコア３００Ｘは、例えばＮ個のデータを書き込む場合にバッファ領域２２１（ｊｘ）を特定したデータ書き込み要求をＮ回出力する。このデータ書き込み要求が出力される都度、その時点におけるライトポインタＯＭＷＰｘ（ｊｘ）に基づいて書き込みアドレスが決定され、書き込みアドレスに対して、信号処理結果であるデータが書き込まれる。そして、出力転送制御部１３４Ｘは、１個のデータ書き込みが行われる都度、ライトポインタＯＭＷＰｘ（ｊｘ）を１だけ進める。
【００４８】
一方、フレームモードでは、プロセッサコア３００Ｘが書き込みアドレスを決定し、フレーム単位でバッファ領域２２１（ｊｘ）にデータ書き込みを行い、その後、ライトポインタＯＭＷＰｘ（ｊｘ）の内容を適切なアドレス、すなわち、最後に書き込みを行ったアドレスの次のアドレスに設定する。
【００４９】
フロー制御部１３５Ｘは、ライトポインタＯＭＷＰｘ（ｊｘ）を監視し、バッファ領域２２１（ｊｘ）に十分な量のデータが書き込まれたことを検知すると、出力転送制御部１３４Ｘに出力転送を行わせる。出力転送制御部１３４Ｘは、ＦＩＦＯ１３３Ｘ内においてリードポインタＯＲＰｘ（ｊｘ）が示すアドレスにある最も古い出力転送指令ＱＲＸを読み出すとともにリードポインタＯＲＰｘ（ｊｘ）を１だけ進める。そして、読み出した出力転送指令ＱＲＸをデータの読み出し元を指定する領域番号ｊｘとデータのチャネル番号とに分け、領域番号ｊｘに対応したリードポインタＯＭＲＰｘ（ｊｘ）に基づいて読み出しアドレスを発生し、バッファ領域２２１（ｊｘ）からデータを読み出し、この読み出しデータとチャネル番号を出力セレクタ１４０に引き渡す。
【００５０】
出力セレクタ１４０は、バッファ領域２２１（ｊｘ）からの読み出しデータを、出力チャネルレジスタ１５１（ｋ）（ｋ＝０〜ｍ−１）、１５１Ａおよび１５１Ｂのうち出力転送制御部１３４Ｘから引き渡されたチャネル番号に対応したレジスタに供給する。
【００５１】
また、出力転送制御部１３４Ｘは、タイミングジェネレータ１６０から出力転送指令ＱＲＸが引き渡された場合、この引き渡された出力転送指令ＱＲＸをＦＩＦＯ１３３Ｘ内のライトポインタＯＷＰｘ（ｊｘ）により指示されるアドレスに書き込むとともに、ライトポインタＯＷＰｘ（ｊｘ）を１だけ進める。
【００５２】
フロー制御部１３５Ｘは、バッファ領域２２１（ｊｘ）のデータ読み出し状況を監視し、バッファ領域２２１（ｊｘ）における読み出し未了のデータの残量が不足してくると、データの書き込み要求をプロセッサコア３００Ｘに送る。プロセッサコア３００Ｘは、バッファ領域２２１（ｊｘ）へのデータの書き込みを行っていないときにこの書き込み要求を受け取ると、バッファ領域２２１（ｊｘ）へのデータの書き込みを再開する。
以上が１チャネルのデータの出力転送を行う場合における出力転送制御部１３４Ｘの処理内容である。
【００５３】
本実施形態では、このような１チャネルのデータの出力転送だけでなく、複数チャネルのデータの出力転送を並列実行することができる。例えば第ｋ１チャネルのデータのバッファ領域２２１Ｘ（ｊｘ１）からの出力転送と、第ｋ２チャネルのデータのバッファ領域２２１Ｘ（ｊｘ２）からの出力転送とを並列実行するとする。この場合、タイミングジェネレータ１６０は、第ｋ１チャネルのデータの出力転送を指令する出力転送指令ＱＲＸ１と、第ｋ２チャネルのデータの出力転送を指令する出力転送指令ＱＲＸ２とを第ｋ１チャネルおよび第ｋ２チャネルのデータのサンプリング周波数と同じ周波数で繰り返し出力する。また、出力転送制御部１３４Ｘは、ＦＩＦＯ１３３Ｘ内において、第ｋ１チャネルの出力転送のための読み出し未了の出力転送指令ＱＲＸ１の記憶領域と、第ｋ２チャネルの出力転送のための読み出し未了の出力転送指令ＱＲＸ２の記憶領域とが重なることがないように、第ｋ１チャネルの出力転送に用いるリードポインタＯＲＰｘ（ｊｘ１）およびライトポインタＯＷＰｘ（ｊｘ１）と、第ｋ２チャネルの出力転送に用いるリードポインタＯＲＰｘ（ｊｘ２）およびライトポインタＯＷＰｘ（ｊｘ２）とを互いに十分に離れた値にする。そして、図３（ｂ）に示すように、第ｋ１チャネルについてリードポインタＯＲＰｘ（ｊｘ１）およびライトポインタＯＷＰｘ（ｊｘ１）並びにリードポインタＯＭＲＰｘ（ｊｘ１）およびライトポインタＯＭＷＰｘ（ｊｘ１）を用いて上述の１チャネルの出力転送と同様な処理を行い、これと並行し、第ｋ２チャネルについてリードポインタＯＲＰｘ（ｊｘ２）およびライトポインタＯＷＰｘ（ｊｘ２）並びにリードポインタＯＭＲＰｘ（ｊｘ２）およびライトポインタＯＭＷＰｘ（ｊｘ２）を用いて上述の１チャネルの出力転送と同様な処理を行うのである。このように複数チャネルの入力転送の並列実行を行う場合には、ＦＩＦＯ１３３Ｘのバッファサイズを並列実行する出力転送のチャネル数に見合った十分な大きさにする必要がある。
【００５４】
ＤＭＡブロック１３０Ｙも、ＤＭＡブロック１３０Ｘと同様、ローカルメモリ２００Ｙを対象とした入力転送および出力転送を制御するためのＦＩＦＯ１３１Ｙ、入力転送制御部１３２Ｙ、ＦＩＦＯ１３３Ｘ、出力転送制御部１３４Ｙおよびフロー制御部１３５Ｙを備えている。このＤＭＡブロック１３０Ｙにより行われる入力転送および出力転送の制御の態様は、ＤＭＡブロック１３０Ｘと同様であるので説明を省略する。
【００５５】
図４（ａ）〜（ｃ）は、本実施形態の動作例を各々示すものである。図４（ａ）に示す動作例では、サンプリング周波数が各々ｆｓ３、ｆｓ４、ｆｓ５である３チャネルのオーディオデータがＡＳＲＣ１１に入力されている。そして、サンプリング周波数がｆｓ３およびｆｓ４である２チャネルのオーディオデータは各々サンプリング周波数ｆｓ１のデータに変換され、ＤＭＡブロック１３０Ｘを介してプロセッサコア３００Ｘのローカルメモリ２００ＸにＤＭＡ転送される。プロセッサコア３００Ｘは、これら２チャネルのオーディオデータを用いた信号処理（例えばミキシング）を実行し、信号処理結果であるデータをローカルメモリ２００Ｘに書き込む。このローカルメモリ２００Ｘに書き込まれたデータはＤＭＡブロック１３０Ｙを介してＡＳＲＣ１２にＤＭＡ転送され、ＡＳＲＣ１２によってサンプリング周波数ｆｓ６のデータに変換され、周辺装置に供給される。一方、ＡＳＲＣ１１に入力されたサンプリング周波数ｆｓ５のオーディオデータはサンプリング周波数ｆｓ２のデータに変換され、ＤＭＡブロック１３０Ｙを介してプロセッサコア３００Ｙのローカルメモリ２００ＹにＤＭＡ転送される。プロセッサコア３００Ｙは、このオーディオデータを用いた信号処理を実行し、信号処理結果であるデータをローカルメモリ２００Ｙに書き込む。このローカルメモリ２００Ｙに書き込まれたデータはＤＭＡブロック１３０Ｙを介してＡＳＲＣ１２にＤＭＡ転送され、ＡＳＲＣ１２によってサンプリング周波数ｆｓ７のデータに変換され、周辺装置に供給される。このように図４（ａ）に示す動作例では、プロセッサコア３００Ｘおよび３００Ｙは全く独立に動作する。
【００５６】
図４（ｂ）に示す動作例では、プロセッサコア３００Ｘおよび３００Ｙは、いずれもサンプリング周波数ｆｓ１のオーディオデータを取り扱うアプリケーションプログラムを実行し、サンプリング周波数変換を伴わないループバック制御を利用して連係動作する。さらに詳述すると、この動作例では、サンプリング周波数が各々ｆｓ２およびｆｓ３である２チャネルのオーディオデータがＡＳＲＣ１１に入力されている。そして、サンプリング周波数がｆｓ２およびｆｓ３である２チャネルのオーディオデータは各々サンプリング周波数ｆｓ１のデータに変換され、そのうち一方はＤＭＡブロック１３０Ｘを介してプロセッサコア３００Ｘのローカルメモリ２００ＸにＤＭＡ転送される。プロセッサコア３００Ｘは、このオーディオデータを用いた信号処理（例えばエフェクタ）を実行し、信号処理結果であるデータをローカルメモリ２００Ｘに書き込む。このローカルメモリ２００Ｘに書き込まれたデータはＤＭＡブロック１３０Ｘを介して出力チャネルレジスタ１５１ＡにＤＭＡ転送された後、入力チャネルレジスタ１１１Ａに転送され、この入力チャネルレジスタ１１１ＡからＤＭＡブロック１３０Ｙを介してプロセッサコア３００Ｙのローカルメモリ２００ＹにＤＭＡ転送される。一方、ＡＳＲＣ１１から出力されるサンプリング周波数ｆｓ１の２チャネルのオーディオデータのうちの他方のデータは、ＤＭＡブロック１３０Ｙを介してプロセッサコア３００Ｙのローカルメモリ２００ＹにＤＭＡ転送される。プロセッサコア３００Ｙは、このようにしてＤＭＡ転送されたローカルメモリ２００Ｙ内の２チャネルのオーディオデータを用いた信号処理を実行し、信号処理結果であるデータをローカルメモリ２００Ｙに書き込む。このローカルメモリ２００Ｙに書き込まれたデータはＤＭＡブロック１３０Ｙを介してＡＳＲＣ１２にＤＭＡ転送され、ＡＳＲＣ１２によってサンプリング周波数ｆｓ４のデータに変換され、周辺装置に供給される。
【００５７】
図４（ｃ）に示す動作例では、プロセッサコア３００Ｘはサンプリング周波数ｆｓ１のオーディオデータを取り扱うアプリケーションプログラムを実行し、一方、プロセッサコア３００Ｙはサンプリング周波数ｆｓ２のオーディオデータを取り扱うアプリケーションプログラムを実行し、両者はサンプリング周波数変換を伴うループバック制御を利用して連係動作する。さらに詳述すると、この動作例では、サンプリング周波数が各々ｆｓ３およびｆｓ４である２チャネルのオーディオデータが周辺装置からＡＳＲＣ１１に入力されている。そして、サンプリング周波数ｆｓ３およびｆｓ４の各オーディオデータは各々サンプリング周波数ｆｓ１およびｆｓ２のデータに変換され、サンプリング周波数ｆｓ１のオーディオデータはＤＭＡブロック１３０Ｘを介してプロセッサコア３００Ｘのローカルメモリ２００ＸにＤＭＡ転送され、サンプリング周波数ｆｓ２のオーディオデータはＤＭＡブロック１３０Ｙを介してプロセッサコア３００Ｙのローカルメモリ２００ＸにＤＭＡ転送される。プロセッサコア３００Ｘは、ローカルメモリ２００Ｘに書き込まれたオーディオデータを用いた信号処理（例えばエフェクタ）を実行し、信号処理結果であるデータをローカルメモリ２００Ｘに書き込む。このローカルメモリ２００Ｘに書き込まれたデータはＤＭＡブロック１３０Ｘを介して出力チャネルレジスタ１５１ＢにＤＭＡ転送された後、ＡＳＲＣ１１に転送され、そこでサンプリング周波数ｆｓ１のデータに変換された後、ＤＭＡブロック１３０Ｙを介してプロセッサコア３００Ｙのローカルメモリ２００ＹにＤＭＡ転送される。プロセッサコア３００Ｙは、このようにしてローカルメモリ２００ＹにＤＭＡ転送された２チャネルのオーディオデータを用いた信号処理を実行し、信号処理結果であるデータをローカルメモリ２００Ｙに書き込む。このローカルメモリ２００Ｙに書き込まれたデータはＤＭＡブロック１３０Ｙを介してＡＳＲＣ１２にＤＭＡ転送され、ＡＳＲＣ１２によってサンプリング周波数ｆｓ５のデータに変換され、周辺装置に供給される。
【００５８】
このように本実施形態によれば、プロセッサコア３００Ｘおよび３００Ｙに多様な形態の信号処理を行わせ、また、多様な連係動作を行わせることが可能である。なお、以上の動作例はあくまでも一例であり、本実施形態によるＤＳＰは、上述した各種の機能を利用した多様な動作が可能である。例えば図４（ａ）〜（ｃ）の各動作例において、プロセッサコア３００Ｘとプロセッサコア３００Ｙの役割を入れ替えてもよい。
【００５９】
以上説明したように、本実施形態によれば、ＤＭＡＣ１００がプロセッサコア３００Ｘおよび３００Ｙの処理対象となるデータをローカルメモリ２００Ｘおよび２００ＹにＤＭＡ転送するので、データ入力に関するプロセッサコア３００Ｘおよび３００Ｙの負担が軽減される。また、ＤＭＡＣ１００は、処理対象となるデータをＦＩＦＯ１３１Ｘおよび１３１Ｙに蓄積し、このＦＩＦＯ１３１Ｘおよび１３１Ｙからローカルメモリ２００Ｘおよび２００ＹへのＤＭＡ転送を行うので、プロセッサコア３００Ｘおよび３００Ｙによるローカルメモリ２００Ｘおよび２００Ｙへのアクセスが多く、連続的なＤＭＡ転送が困難な状況でも、データ消失を頻発させることなくローカルメモリ２００Ｘおよび２００ＹへのＤＭＡ転送を行うことができる。また、本実施形態では、ＡＳＲＣ１１によりサンプリング周波数変換がなされたデータをＤＭＡＣ１００によりローカルメモリ２００Ｘおよび２００ＹにＤＭＡ転送するようにしているので、サンプリング周波数変換に関するプロセッサコア３００Ｘおよび３００Ｙの負担がないという利点がある。また、本実施形態によれば、プロセッサコア３００Ｙおよび３００Ｙは、信号処理の結果であるデータをローカルメモリ２００Ｘおよび２００Ｙに蓄積し、ＤＭＡＣ１００は、ローカルメモリ２００Ｘおよび２００Ｙへのアクセスが行われていない期間を利用して、ローカルメモリ２００Ｘおよび２００Ｙに蓄積されたデータをＤＳＰの外部の周辺装置に出力するためのＤＭＡ転送を行う。従って、データ出力に関するプロセッサコア３００Ｘおよび３００Ｙの負担が軽減される。
【００６０】
以上、この発明の一実施形態について説明したが、この発明にはこれ以外にも他の実施形態が考えられる。例えば次の通りである。
【００６１】
（１）上記実施形態では、ＤＳＰに２個のプロセッサコア３００Ｘおよび３００Ｙと各々に対応したローカルメモリ２００Ｘおよび２００Ｙを設けたが、３個以上のプロセッサコアと各々に対応したローカルメモリを設けてもよい。この場合、ローカルメモリと同じ個数のＤＭＡブロックを設け、各ＤＭＡブロックに各ローカルメモリを対象としたＤＭＡ転送を行わせればよい。
【００６２】
（２）ローカルメモリ２００Ｘにおいて、例えば入力バッファ２１０Ｘのバッファ領域２１１Ｘ（ｉｘ）（ｉｘ＝０〜ｎ−１）の各々のチップセレクト線を分離し、ＤＭＡブロック１３０Ｘの入力転送制御部１３２Ｘとプロセッサコア３００Ｘとが同時に互いに異なるバッファ領域にデータ書き込みを行えるような構成にしてもよい。この場合、入力転送制御部１３２Ｘとプロセッサコア３００Ｘとのアクセスの競合が少なくなり、入力転送制御部１３２Ｘによる入力転送をより円滑に行うことが可能になる。出力バッファ２２０Ｘのバッファ領域２１１Ｘ（ｉｘ）（ｉｘ＝０〜ｎ−１）に関しても同様である。また、ローカルメモリ２００Ｙに関しても同様である。
【００６３】
（３）入力バッファ２１０Ｘおよび２１０Ｙを各々デュアルポートＲＡＭとしてもよい。この場合、入力転送制御部１３２Ｘおよび１３２Ｙが入力バッファ２１０Ｘおよび２１０Ｙへのバースト転送によるデータ書き込みを行っている状況において、プロセッサコア３００Ｘおよび３００Ｙは、このデータ書き込みによって邪魔されることなく、入力バッファ２１０Ｘおよび２１０Ｙからのデータ読み出しを行うことができる。また、出力バッファ２２０Ｘおよび２２０Ｙを各々デュアルポートＲＡＭとしてもよい。この場合、プロセッサコア３００Ｘおよび３００Ｙが出力バッファ２２０Ｘおよび２２０Ｙへのデータ書き込みを行っている状況において、出力転送制御部１３４Ｘおよび１３４Ｙは、このデータ書き込みによって邪魔されることなく、出力バッファ２２０Ｘおよび２２０Ｙからバースト転送によるデータ読み出しを行うことができる。
【００６４】
（４）上記実施形態では、サンプリング周波数変換を伴わないループバック制御の対象を１チャネル、サンプリング周波数変換を伴うループバック制御の対象を１チャネルとしたが、これらの対象を２チャネル以上としてもよい。
【符号の説明】
【００６５】
１１，１２……ＡＳＲＣ、１００……ＤＭＡＣ、１７０……入出力制御部、１１０……入力データ保持部、１１１（ｋ）（ｋ＝０〜ｍ−１），１１１Ａ……入力チャネルレジスタ、１２０Ｘ，１２０Ｙ……入力セレクタ、１４０……出力セレクタ、１５０……出力データ保持部、１５１（ｋ）（ｋ＝０〜ｍ−１），１５１Ａ，１５１Ｂ……出力チャネルレジスタ、１６０……タイミングジェネレータ、１３０Ｘ，１３０Ｙ……ＤＭＡブロック、１３１Ｘ，１３３Ｘ，１３１Ｙ，１３３Ｙ……ＦＩＦＯ、１３２Ｘ，１３２Ｙ……入力転送制御部、１３４Ｘ，１３４Ｙ……出力転送制御部、１３５Ｘ，１３５Ｙ……フロー制御部、２００Ｘ，２００Ｙ……ローカルメモリ、２１０Ｘ，２１０Ｙ……入力バッファ、２２０Ｘ，２２０Ｙ……出力バッファ、２１１Ｘ（ｉｘ）（ｉｘ＝０〜ｎ−１），２２１Ｘ（ｊｘ）（ｊｘ＝０〜ｎ−１），２１１Ｙ（ｉｘ）（ｉｘ＝０〜ｎ−１），２２１Ｙ（ｊｘ）（ｊｘ＝０〜ｎ−１）……バッファ領域。
【図１】
2010250662.tif 000003
【図２】
2010250662.tif 000004
【図３】
2010250662.tif 000005
【図４】
2010250662.tif 000006