(57)【要約】【課題】複雑なアドレスを効率良く生成することが可能で、カウンタのビット幅が広がったとしても実装面積の増大を抑止できるアドレス生成装置および演算装置を提供する。【解決課題】制御装置１１２からのカウンタの分割の状態を示す制御信号Ｓ１１２と演算装置１０６の演算結果に基づく信号に従い、レジスタ１０３の設定値とカウンタ１０９からフィードバックされる値に基づく所定の演算を行う演算装置１０５と、制御装置１１２からのカウンタの分割の状態を示す制御信号Ｓ１１２に従い、レジスタ１０４の設定値とカウンタ１１０からフィードバックされる値に基づく所定の演算を行う演算装置１０６とを有し、制御信号によりカウンタの一部を分割して動作させることが可能にもしくは、制御信号により複数のカウンタを結合して動作させることが可能に構成される。【選択図】      図１
2005322176.tif 000002
【特許請求の範囲】
【請求項１】
メモリのアドレスを生成するアドレス生成装置であって、
演算された値によりカウント値を設定する少なくとも一つのカウンタと、
それぞれ上記カウンタに対応して設けられ、供給されるステップ値と対応するカウンタのカウント値を制御信号に応じて演算し、当該演算されたカウント値を対応するカウンタに供給する少なくとも一つの演算手段と、
設定値または上記演算手段の演算結果のいずれかを制御信号に応じて選択して上記カウンタに入力させる選択手段と、
上記カウンタのカウント値に対して制御信号に応じた演算を行い、当該演算結果をアドレスとして出力するアドレス演算手段と
を有するアドレス生成装置。
【請求項２】
上記カウンタおよび演算手段と複数有し、
制御信号によりカウンタの一部を分割して動作させることが可能でもしくは、制御信号により複数のカウンタを結合して動作させることが可能な制御手段を有する
請求項１記載のアドレス生成装置。
【請求項３】
上記アドレス演算手段は、入力データとレジスタ値と複数のカウンタの出力を演算装置で演算した結果をアドレスとして出力する
請求項１記載のアドレス生成装置。
【請求項４】
上記アドレス演算手段は、入力データとレジスタ値と複数のカウンタの出力を演算装置で演算した結果をアドレスとして出力する
請求項２記載のアドレス生成装置。
【請求項５】
上記演算手段は、ステップ値とカウンタのカウント値と修飾値を用いて、制御信号に応じたカウント値の計算を行う
請求項１記載のアドレス生成装置。
【請求項６】
上記演算手段は、ステップ値とカウンタのカウント値と修飾値を用いて、制御信号に応じたカウント値の計算を行う
請求項２記載のアドレス生成装置。
【請求項７】
アドレス生成の開始時期を変更させることが可能な制御手段を有する
請求項１記載のアドレス生成装置。
【請求項８】
上記制御手段は、複数のカウンタのうち一部のカウンタにより開始時期をカウントする  請求項７記載のアドレス生成装置。
【請求項９】
アドレス生成遅延値が設定されるパラメータレジスタと、
起動信号に応じてカウントを開始し、上記パラメータレジスタに設定された値になるまでアドレス生成を遅延させるためのタイミングカウンタと、をさらに有し、
上記制御手段は、上記タイミングカウンタの値が上記パラメータレジスタに設定された値に達したときに、上記カウンタのカウント動作を有効する
請求項７記載のアドレス生成装置。
【請求項１０】
制御信号入力に基づきアドレス生成の有効期間を規定可能な制御手段を有する
請求項１記載のアドレス生成装置。
【請求項１１】
上記制御信号入力と、上記カウンタのカウンタ値から出力制御信号を生成する制御信号生成手段を有する
請求項１０記載のアドレス生成装置。
【請求項１２】
少なくとも第１アドレス生成装置、第２アドレス生成装置、第３アドレス生成装置、第１メモリ、第２メモリ、第３メモリ、演算装置で構成される再構成可能な演算装置であって、
上記各アドレス生成装置は、演算された値によりカウント値を設定する少なくとも一つのカウンタと、それぞれ上記カウンタに対応して設けられ、供給されるステップ値と対応するカウンタのカウント値を制御信号に応じて演算し、当該演算されたカウント値を対応するカウンタに供給する少なくとも一つの演算手段と、設定値または上記演算手段の演算結果のいずれかを制御信号に応じて選択して上記カウンタに入力させる選択手段と、上記カウンタのカウント値に対して制御信号に応じた演算を行い、当該演算結果をアドレスとして出力するアドレス演算手段とを有し、
上記第１アドレス生成装置が生成したアドレスで上記第１メモリの読み出しを行い、上記第２アドレス生成装置がその読み出しデータを用いて生成したアドレスで、上記第２メモリの読み出しを行い、当該データを上記演算装置で演算した結果を上記第３アドレス生成装置が生成したアドレスで上記第３メモリに書き込みを行う
再構成可能な演算装置。
【請求項１３】
少なくとも第１アドレス生成装置、第２アドレス生成装置、第３アドレス生成装置、第１メモリ、第２メモリ、第３メモリ、第１演算装置、第２演算装置で構成される再構成可能な演算装置であって、
上記各アドレス生成装置は、演算された値によりカウント値を設定する少なくとも一つのカウンタと、それぞれ上記カウンタに対応して設けられ、供給されるステップ値と対応するカウンタのカウント値を制御信号に応じて演算し、当該演算されたカウント値を対応するカウンタに供給する少なくとも一つの演算手段と、設定値または上記演算手段の演算結果のいずれかを制御信号に応じて選択して上記カウンタに入力させる選択手段と、上記カウンタのカウント値に対して制御信号に応じた演算を行い、当該演算結果をアドレスとして出力するアドレス演算手段とを有し、
上記第１アドレス生成装置が生成したアドレスで上記第１メモリの読み出しを行い、当該データを上記第１演算装置で演算し、上記第２アドレス生成装置が当該読み出しデータを用いて生成したアドレスで、上記第２メモリの読み出しを行い、当該データを上記第２演算装置で演算した結果を上記第３アドレス生成装置が生成したアドレスで上記第３のメモリに書き込みを行う
再構成可能な演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算システムに適用可能なアドレス生成装置、およびこのアドレス生成装置を適用した再構成可能な演算装置に関するものである。
【背景技術】
【０００２】
一般的な演算システムは、たとえばＣＰＵと、アドレス生成装置と、複数の構成情報メモリと、再構成可能な演算装置とにより構成される。
この演算システムにおいては、ＣＰＵを用いて複数の構成情報メモリの選択を制御している。
この場合、アドレス生成装置がアドレスを生成している期間中にＣＰＵを用いてメモリの選択を行わせる。
【０００３】
従来のＤＳＰなどではアドレス生成されるパターンは、たとえばＣ言語のｆｏｒループなどの比較的単純なものに限られ、複雑なアクセスを行おうとする場合、自動生成されるアドレスでは不十分であり、たとえばＤＳＰのＡＬＵを用いてアドレス計算を行う必要があった。
そのため、処理に必要なサイクル数が自動アドレス生成の場合に比べて多く効率が悪かった。
【０００４】
これを改善するために、たとえばカウンタを用いたアドレス生成装置が提案されている（特許文献１参照）。
【特許文献１】特開２００２−２１５３８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、特許文献１に記載されたアドレス生成装置を用いても、複雑なアドレスを生成する場合には効率が悪くなる、あるいはアドレス生成が困難であるという問題があった。
また、アドレス範囲が広がったりとカウンタのビット幅を大きくする必要があり、ＬＳＩに実装した場合に面積が大きくなるという問題点もあった。
【０００６】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、複雑なアドレスを効率良く生成することが可能で、カウンタのビット幅が広がったとしても実装面積の増大を抑止することができるアドレス生成装置および演算装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の第１の観点は、メモリのアドレスを生成するアドレス生成装置であって、演算された値によりカウント値を設定する少なくとも一つのカウンタと、それぞれ上記カウンタに対応して設けられ、供給されるステップ値と対応するカウンタのカウント値を制御信号に応じて演算し、当該演算されたカウント値を対応するカウンタに供給する少なくとも一つの演算手段と、設定値または上記演算手段の演算結果のいずれかを制御信号に応じて選択して上記カウンタに入力させる選択手段と、上記カウンタのカウント値に対して制御信号に応じた演算を行い、当該演算結果をアドレスとして出力するアドレス演算手段とを有する。
【０００８】
好適には、上記カウンタおよび演算手段と複数有し、制御信号によりカウンタの一部を分割して動作させることが可能でもしくは、制御信号により複数のカウンタを結合して動作させることが可能な制御手段を有する。
【０００９】
好適には、上記アドレス演算手段は、入力データとレジスタ値と複数のカウンタの出力を演算装置で演算した結果をアドレスとして出力する。
【００１０】
好適には、上記演算手段は、ステップ値とカウンタのカウント値と修飾値を用いて、制御信号に応じたカウント値の計算を行う。
【００１１】
好適には、アドレス生成の開始時期を変更させることが可能な制御手段を有する。
【００１２】
好適には、上記制御手段は、複数のカウンタのうち一部のカウンタにより開始時期をカ  
【００１３】
好適には、アドレス生成遅延値が設定されるパラメータレジスタと、起動信号に応じてカウントを開始し、上記パラメータレジスタに設定された値になるまでアドレス生成を遅延させるためのタイミングカウンタと、をさらに有し、上記制御手段は、上記タイミングカウンタの値が上記パラメータレジスタに設定された値に達したときに、上記カウンタのカウント動作を有効する。
【００１４】
好適には、制御信号入力に基づきアドレス生成の有効期間を規定可能な制御手段を有する。
【００１５】
好適には、上記制御信号入力と、上記カウンタのカウンタ値から出力制御信号を生成する制御信号生成手段を有する。
【００１６】
本発明の第２の観点は、少なくとも第１アドレス生成装置、第２アドレス生成装置、第３アドレス生成装置、第１メモリ、第２メモリ、第３メモリ、演算装置で構成される再構成可能な演算装置であって、上記各アドレス生成装置は、演算された値によりカウント値を設定する少なくとも一つのカウンタと、それぞれ上記カウンタに対応して設けられ、供給されるステップ値と対応するカウンタのカウント値を制御信号に応じて演算し、当該演算されたカウント値を対応するカウンタに供給する少なくとも一つの演算手段と、設定値または上記演算手段の演算結果のいずれかを制御信号に応じて選択して上記カウンタに入力させる選択手段と、上記カウンタのカウント値に対して制御信号に応じた演算を行い、当該演算結果をアドレスとして出力するアドレス演算手段とを有し、上記第１アドレス生成装置が生成したアドレスで上記第１メモリの読み出しを行い、上記第２アドレス生成装置がその読み出しデータを用いて生成したアドレスで、上記第２メモリの読み出しを行い、当該データを上記演算装置で演算した結果を上記第３アドレス生成装置が生成したアドレスで上記第３メモリに書き込みを行う。
【００１７】
好適には、少なくとも第１アドレス生成装置、第２アドレス生成装置、第３アドレス生成装置、第１メモリ、第２メモリ、第３メモリ、第１演算装置、第２演算装置で構成される再構成可能な演算装置であって、上記各アドレス生成装置は、演算された値によりカウント値を設定する少なくとも一つのカウンタと、それぞれ上記カウンタに対応して設けられ、供給されるステップ値と対応するカウンタのカウント値を制御信号に応じて演算し、当該演算されたカウント値を対応するカウンタに供給する少なくとも一つの演算手段と、設定値または上記演算手段の演算結果のいずれかを制御信号に応じて選択して上記カウンタに入力させる選択手段と、上記カウンタのカウント値に対して制御信号に応じた演算を行い、当該演算結果をアドレスとして出力するアドレス演算手段とを有し、上記第１アドレス生成装置が生成したアドレスで上記第１メモリの読み出しを行い、当該データを上記第１演算装置で演算し、上記第２アドレス生成装置が当該読み出しデータを用いて生成したアドレスで、上記第２メモリの読み出しを行い、当該データを上記第２演算装置で演算した結果を上記第３アドレス生成装置が生成したアドレスで上記第３のメモリに書き込みを行う。
【００１８】
本発明によれば、たとえば、カウンタを分割しない場合のアドレス生成は次のように行われる。
たとえば、第１演算手段および第２の演算手段はそれぞれ加算を実行し、カウンタを分割しないで使えるように、第２の演算手段の桁上げを第１の演算手段に伝達する。
第１の演算手段は桁上げ情報と入力データであるたとえばステップ値とカウンタのカウント値を用いて加算を実行する。
たとえば第１の選択手段および第２の選択手段は所定サイクルおきに設定値の入力を選択し、それ以外のときは第１の演算手段、第２の演算装置の演算結果の値を選択する。
これにより、第１のカウンタおよび第２のカウンタのカウント値は、所定の値をとる。そして、アドレス演算手段が、第１および第２のカウンタの値に基づいてアドレスを算出する。
【００１９】
またたとえば、カウンタを分割する場合のアドレス生成はつぎのように行われる。
たとえば、第１の演算装置および第２の演算装置はそれぞれ加算を実行する。
たとえば第２の選択装置は、所定サイクルおきに設定値の入力を選択し、それ以外のときは第２の演算装置の結果を選択する。
第１の選択装置は、たとえば常に第１の演算装置の演算結果の値を選択する。
これにより、第１のカウンタおよび第２のカウンタのカウント値は、所定の値をとる。そして、アドレス演算手段が、第１および第２のカウンタの値に基づいてアドレスを算出する。
【発明の効果】
【００２０】
本発明によれば、従来のＤＳＰなどで生成される単純なアドレスパターンに比べて、複雑なアドレスパターンを生成することができる。
また、カウンタを分割して使用することで、アドレス範囲が広がったりとカウンタのビット幅を大きくなっても、ＬＳＩに実装する場合の面積が大きくなる影響を抑えることができるという利点もある。
さらに、アドレス生成と同時並列的に制御信号とアドレス有効信号を出力することが可能であるため、これらの信号を用いてメモリや演算装置の制御を柔軟に行うことができる。
また、アドレス生成のタイミングをパラメータで制御することが可能であるため、複数のメモリからの読み出しや、書き込みに時間的な依存関係がある場合についても容易に対応することが可能になるという利点がある。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態を図面に関連付けて説明する。
【００２２】
本実施形態に係るアドレス生成装置は、複数の明示的に制御可能なカウンタを有し、カウンタの更新、終了、再設定値、ステップ値、最大値、分割方法、オフセット、起動タイミングといったパラメータが設定可能である。本実施形態に係るアドレス生成装置は、これらのパラメータを用いてアドレス生成を制御することができる。
アドレス生成装置は、アドレスと同時並列的に、データパスの制御信号、メモリインタフェース制御信号を生成することもできる。
【００２３】
＜第１実施形態＞
図１は、本発明に係るアドレス生成装置の第１の実施形態を示す構成図である。
本第１の実施形態に係るアドレス生成装置１００は、カウンタを分割してあるいは結合してアドレスを生成する場合の構成例を示している。
【００２４】
第１の実施形態に係るアドレス生成装置１００は、図１に示すように、初期値を設定するためのレジスタ１０１，１０２、ステップ値を設定するためのレジスタ１０３，１０４演算装置１０５，１０６、選択装置１０７，１０８、カウンタ１０９，１１０、演算装置１１１、制御装置１１２、カウンタ装置１１３、および演算装置１１４を有している。
【００２５】
図１のアドレス生成装置１００において、レジスタ１０１とレジスタ１０２、レジスタ１０３とレジスタ１０４、演算装置１０５と演算装置１０６、選択装置１０７と選択装置１０８、カウンタ１０９とカウンタ１１０は一つの組になっており、図示しない制御系の制御の下、分割して使用することが可能になっている。
【００２６】
演算装置１０５は、制御装置１１２からのカウンタの分割の状態を示す制御信号Ｓ１１２と演算装置１０６の演算結果に基づく信号に従い、レジスタ１０３の設定値とカウンタ１０９からフィードバックされる値に基づく、たとえば加算等の所定の演算を行い、演算結果を選択装置１０７に出力する。
【００２７】
演算装置１０６は、制御装置１１２からのカウンタの分割の状態を示す制御信号Ｓ１１２に従い、レジスタ１０４の設定値とカウンタ１１０からフィードバックされる値に基づく、たとえば加算等の所定の演算を行い、演算結果を選択装置１０８に出力する。
【００２８】
選択装置１０７は、図示されていない制御信号に基づいてレジスタ１０１の設定値と演算装置１０５の出力のいずれかを選択しカウンタ１０９に出力する。
【００２９】
選択装置１０８は、図示されていない制御信号に基づいてレジスタ１０２の設定値と演算装置１０６の出力のいずれかを選択しカウンタ１１０に出力する。
【００３０】
カウンタ１０９は、選択装置１０７により選択されたレジスタ１０１の設定値（初期値）または演算装置１０５の演算結果の値によりカウント値を設定し、このカウント値ＣＮＴ１０９を演算装置１０５、および演算装置１１１に出力する。
【００３１】
カウンタ１１０は、選択装置１０８により選択されたレジスタ１０２の設定値（初期値）または演算装置１０６の演算結果の値によりカウント値を設定し、このカウント値ＣＮＴ１１０を演算装置１０６、および演算装置１１１に出力する。
【００３２】
演算装置１１１は、制御装置１１２が生成する制御信号Ｓ１１２に基づいてカウンタ１０９とカウンタ１１１のカウント結果を演算して、第１アドレス計算カウント値ＡＣＮＴＶ１１を算出し、演算装置１１４に出力する。
【００３３】
演算装置１１４は、演算装置１１１による第１アドレス計算カウント値ＡＣＮＴＶ１１と、先に示したカウンタと同様の動作を行うカウンタ装置１１３のカウント結果である第２アドレス計算カウント値ＡＣＮＴＶ１２に基づいてアドレスＡＤＲを計算する。
【００３４】
ここで、図１のアドレス生成装置１００において、カウンタを分割しない場合のアドレス生成動作、並びに、カウンタを分割する場合のアドレス生成動作について説明する。
【００３５】
まず、カウンタを分割しない場合のアドレス生成動作について図２（Ａ）〜（Ｅ）のタイミングチャートに関連付けて説明する。
図２（Ａ）はカウンタ１０９のカウント値ＣＮＴ１０９を、図２（Ｂ）はカウンタ１０８のカウント値ＣＮＴ１１０を、図２（Ｃ）は演算装置１１１による第１アドレス計算カウント値ＡＣＮＴＶ１１を、図２（Ｄ）はカウント装置１１３による第２アドレス計算カウント値ＡＣＮＴＶ１２を、図２（Ｅ）は演算装置１１４において計算されたアドレスＡＤＲをそれぞれ示している。
【００３６】
カウンタを分割しない場合のアドレス生成は次のように行われる。
レジスタ１０１、レジスタ１０２にはカウンタの初期値として０が格納され、レジスタ１０３、レジスタ１０４にはステップ値として１が格納される。
【００３７】
演算装置１０５、および演算装置１０６はそれぞれ加算を実行し、カウンタを分割しないで使えるように、演算装置１０６の桁上げを演算装置１０５に伝達する。
演算装置１０５は桁上げ情報と入力データであるレジスタ１０３のステップ値とカウンタ１０９のカウント値ＣＮＴ１０９を用いて加算を実行する。
【００３８】
選択装置１０７、および選択装置１０８は３サイクルおきにレジスタ１０１、レジスタ１０２の値を選択し、それ以外のときは演算装置１０５、演算装置１０６の演算結果の値を選択する。
これにより、カウンタ１０９およびカウンタ１１０のカウント値ＣＮＴ１０９，ＣＮＴ１１０は、図２（Ａ），（Ｂ）に示すような値をとる。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ１１、第２アドレス計算カウント値ＡＣＮＴＶ１２は、図２（Ｃ），（Ｄ）に示すような値をとる。
【００３９】
演算装置１１１は、カウンタ１０９の出力値ＣＮＴ１０９とカウンタ１１０の出力値ＣＮＴ１１０を用いて以下の演算を実行して、第１アドレスカウント値ＡＣＮＴＶ１１を算出する。
【００４０】
（数１）
〔カウンタ１０９出力値ＣＮＴ１０９, カウンタ１１０出力値ＣＮＴ１１０〕
【００４１】
なお、ここで、 [A, B] の演算は上位ビットと下位ビットを結合する演算である。
【００４２】
演算装置１１４は、演算装置１１１による第１アドレス計算カウント値ＡＣＮＴＶ１１とカウンタ装置１１３の出力する第２アドレス計算カウント値ＡＣＮＴＶ１２から、次の演算を実行し、アドレスＡＤＲを算出する。
【００４３】
（数２）
ＡＤＲ＝ＡＣＮＴＶ１＋ＡＣＮＴＶ２
【００４４】
次に、カウンタを分割する場合のアドレス生成動作について図３（Ａ）〜（Ｅ）のタイミングチャートに関連付けて説明する。
図３（Ａ）はカウンタ１０９のカウント値ＣＮＴ１０９を、図３（Ｂ）はカウンタ１０８のカウント値ＣＮＴ１１０を、図３（Ｃ）は演算装置１１１による第１アドレス計算カウント値ＡＣＮＴＶ１１を、図３（Ｄ）はカウント装置１１３による第２アドレス計算カウント値ＡＣＮＴＶ１２を、図３（Ｅ）は演算装置１１４において計算されたアドレスＡＤＲをそれぞれ示している。
【００４５】
カウンタを分割する場合のアドレス生成はつぎのように行われる。
レジスタ１０２にはカウンタの初期値として０が格納され、レジスタ１０３、レジスタ１０４にはステップ値として１が格納される。
【００４６】
演算装置１０５、および演算装置１０６はそれぞれ加算を実行する。
選択装置１０８は、３サイクルおきにレジスタ１０２の値を選択し、それ以外のときは演算装置１０６の結果を選択する。
選択装置１０７は、常に演算装置１０５の演算結果の値を選択する。
これにより、カウンタ１０９およびカウンタ１１０のカウント値ＣＮＴ１０９，ＣＮＴ１１０は、図３（Ａ），（Ｂ）に示すような値をとる。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ１１、第２アドレス計算カウント値ＡＣＮＴＶ１２は、図３（Ｃ），（Ｄ）に示すような値をとる。
【００４７】
演算装置１１１は、カウンタ１０９の出力値ＣＮＴ１０９とカウンタ１１０の出力値ＣＮＴ１１０を用いて以下の演算を実行して、第１アドレスカウント値ＡＣＮＴＶ１１を算出する。
【００４８】
（数３）
ＡＣＮＴＶ１１＝ＣＮＴ１０９＋ＣＮＴ１１０
【００４９】
演算装置１１４は、演算装置１１１による第１アドレス計算カウント値ＡＣＮＴＶ１１とカウンタ装置１１３の出力する第２アドレス計算カウント値ＡＣＮＴＶ１２から、次の演算を実行し、アドレスＡＤＲを算出する。
【００５０】
（数４）
ＡＤＲ＝ＡＣＮＴＶ１１＋ＡＣＮＴＶ１２
【００５１】
なお、演算装置１０５、演算装置１０６で実行する演算は減算、乗算などの一般的な２項演算も可能であり、加算に限定するものではない。
演算装置１１１で実行される演算は、制御信号により加算以外の下記に示すような演算に切り替えることも可能である。
【００５２】
（数５）
ＡＣＮＴＶ１１＝（ＣＮＴ１０９ << シフト量）＋ＣＮＴ１１０
【００５３】
（数６）
ＡＣＮＴＶ１１＝ＣＮＴ１０９−ＣＮＴ１１０
【００５４】
（数７）
ＡＣＮＴＶ１１＝ＣＮＴ１０９ *ＣＮＴ１１０
【００５５】
本第１の実施形態では、カウンタの分割と記述してあるが、複数の演算装置、カウンタを用いて、桁上げ情報を使い計算可能なアドレス計算カウント値の範囲を広げているため、カウンタを結合して利用する場合についても、同様の動作として考えることができる。
【００５６】
以上説明したように、本第１の実施形態によれば、初期値を設定するレジスタ１０１，１０２と、ステップ値を設定するレジスタ１０３，１０４と、制御装置１１２からのカウンタの分割の状態を示す制御信号Ｓ１１２と演算装置１０６の演算結果に基づく信号に従い、レジスタ１０３の設定値とカウンタ１０９からフィードバックされる値に基づく、たとえば加算等の所定の演算を行う演算装置１０５と、制御装置１１２からのカウンタの分割の状態を示す制御信号Ｓ１１２に従い、レジスタ１０４の設定値とカウンタ１１０からフィードバックされる値に基づく、たとえば加算等の所定の演算を行う演算装置１０６と、図示されていない制御信号に基づいてレジスタ１０１の設定値と演算装置１０５の出力のいずれかを選択する選択装置１０７と、図示されていない制御信号に基づいてレジスタ１０２の設定値と演算装置１０６の出力のいずれかを選択する選択装置１０８と、選択装置１０７により選択されたレジスタ１０１の設定値（初期値）または演算装置１０５の演算結果の値によりカウント値を設定し、カウント値ＣＮＴ１０９を演算装置１０５にフィードバックさせるカウンタ１０９と、選択装置１０８により選択されたレジスタ１０２の設定値（初期値）または演算装置１０６の演算結果の値によりカウント値を設定し、このカウント値ＣＮＴ１１０を演算装置１０６にフィードバックさせるカウンタ１１０と、制御装置１１２が生成する制御信号Ｓ１１２に基づいてカウンタ１０９とカウンタ１１１のカウント結果を演算して、第１アドレス計算カウント値ＡＣＮＴＶ１１を算出する演算装置１１１と、演算装置１１１による第１アドレス計算カウント値ＡＣＮＴＶ１１と、先に示したカウンタと同様の動作を行うカウンタ装置１１３のカウント結果である第２アドレス計算カウント値ＡＣＮＴＶ１２に基づいてアドレスＡＤＲを計算する演算装置１１４と、を有することから、以下の効果を得ることができる。
【００５７】
すなわち、従来のＤＳＰなどで生成される単純なアドレスパターンに比べて、複雑なアドレスパターンを生成することができる。
また、カウンタを分割して使用することで、アドレス範囲が広がったりとカウンタのビット幅を大きくなっても、ＬＳＩに実装する場合の面積が大きくなる影響を抑えることができるという利点もある。
【００５８】
＜第２実施形態＞
図４は、本発明に係るアドレス生成装置の第２の実施形態を示す構成図である。
本第２の実施形態に係るアドレス生成装置２００は、入力データを用いてアドレスを生成する場合の構成例を示している。
【００５９】
アドレス生成装置２００は、初期値を設定するためのレジスタ２０１，２０２、ステップ値を設定するためのレジスタ２０３，２０４、固定値を設定するためのレジスタ２０５、演算装置２０６，２０７、選択装置２０８，２０９、カウンタ２１０，２１１、および演算装置２１２を有している。
【００６０】
演算装置２０６は、レジスタ２０３のステップ値とカウンタ２１０からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置２０８に出力する。
【００６１】
演算装置２０７は、レジスタ２０４のステップ値とカウンタ２１１からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置２０９に出力する。
【００６２】
選択装置２０８は、図示されていない制御信号に基づいてレジスタ２０１の設定値と演算置２０６の出力のいずれかを選択しカウンタ２１０に出力する。
【００６３】
選択装置２０９は、図示されていない制御信号に基づいてレジスタ２０２の設定値と演算装置２０７の出力のいずれかを選択しカウンタ２１１に出力する。
【００６４】
カウンタ２１０は、選択装置２０８により選択されたレジスタ２０１の設定値（初期値）または演算装置２０６の演算結果の値によりカウント値を設定し、この値を演算装置２０６にフィードバックし、かつ第１アドレス計算カウント値ＡＣＮＴＶ２１として演算装置２１２に出力する。
【００６５】
カウンタ２１１は、選択装置２０９により選択されたレジスタ２０２の設定値（初期値）または演算装置２０７の演算結果の値によりカウント値を設定し、この値を演算装置２０７にフィードバックし、かつ第２アドレス計算カウント値ＡＣＮＴＶ２２として演算装置２１２に出力する。
【００６６】
演算装置２１１は、図示されていない制御信号に基づいてカウンタ２１０による第１アドレス計算カウント値ＡＣＮＴＶ２１と、カウンタ２１１による第２アドレス計算カウント値ＡＣＮＴＶ２２と、レジスタ２０５に設定された固定値と、入力データＤＩＮに基づいて所定の演算を行ってアドレスＡＤＲを計算する。
【００６７】
ここで、図４のアドレス生成装置２００のアドレス生成動作について、図５（Ａ）〜（Ｇ）のタイミングチャートに関連付けて説明する。
図５（Ａ）はカウンタ２１０のカウント値ＣＮＴ２１０を、図５（Ｂ）はカウンタ２１１のカウント値ＣＮＴ２１１を、図５（Ｃ）は第１アドレス計算カウント値ＡＣＮＴＶ２１を、図５（Ｄ）は第２アドレス計算カウント値ＡＣＮＴＶ２２を、図５（Ｅ）はレジスタ２０５に設定された固定値ＳＣＶを、図５（Ｆ）は演算装置２１２への入力データＤＩＮ、および図５（Ｇ）は演算装置２１２において計算されたアドレスＡＤＲをそれぞれ示している。
【００６８】
アドレス生成は次のように行われる。
レジスタ２０１、レジスタ２０２にはカウンタの初期値として０が格納され、レジスタ２０３、レジスタ２０４にはステップ値として１が格納される。
【００６９】
演算装置２０６、および演算装置２０７はそれぞれ加算を実行する。
選択装置２０８は、３サイクルおきにレジスタ２０１の値を選択し、それ以外のときは演算装置２０６の値を選択する。
選択装置２０９は、常に演算装置２０９の演算結果の値を選択する。
これにより、カウンタ２１０およびカウンタ２１１のカウント値ＣＮＴ２１０，ＣＮＴ２１１は、図５（Ａ），（Ｂ）に示すような値をとる。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ２１、第２アドレス計算カウント値ＡＣＮＴＶ２２は、図５（Ｃ），（Ｄ）に示すような値をとる。
【００７０】
また、図５（Ｅ），（Ｆ）に示すように、レジスタ２０５には固定値ＳＣＶとして０が設定され、毎サイクル入力データＤＩＮ（0,1,3,5,7,9...）が供給される。
そして、演算装置２１２は、以下の演算を実行して、アドレスＡＤＲを算出する。
【００７１】
（数８）
ＡＤＲ＝ＡＣＮＴＶ２１＋ＡＣＮＴＶ２２＋ＳＣＶ＋ＤＩＮ
【００７２】
ここで入力データＤＩＮとしては、図示されていない他のアドレス生成装置を用いてメモリから読み出したデータや、メモリからの読み出しデータに所定の演算を実行した結果を用いることもできる。
【００７３】
演算装置２２１で実行する演算は減算、乗算などの一般的な演算も可能であり、加算に限定するものではないことは明らかである。
【００７４】
本第２の実施形態によれば、従来のＤＳＰなどで生成される単純なアドレスパターンに比べて、複雑なアドレスパターンを生成することができる。
【００７５】
＜第３実施形態＞
図６は、本発明に係るアドレス生成装置の第３の実施形態を示す構成図である。
本第３の実施形態に係るアドレス生成装置３００は、ステップ値とカウント値と修飾値を用いてアドレスを生成する場合の構成例を示している。
【００７６】
アドレス生成装置３００は、初期値を設定するためのレジスタ３０１，３０２、ステップ値を設定するためのレジスタ３０３，３０４、修飾値を設定するためのレジスタ３０５，３０６，３０７、演算装置３０８，３０９、選択装置３１０，３１１、カウンタ３１２，３１３、および演算装置３１４を有している。
【００７７】
演算装置３０８は、レジスタ３０３のステップ値、レジスタ３０５の修飾値、カウンタ３１２からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置３１０に出力する。
【００７８】
演算装置３０９は、レジスタ３０４のステップ値、レジスタ３０６の修飾値、カウンタ３１３からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置３１１に出力する。
【００７９】
選択装置３１０は、図示されていない制御信号に基づいてレジスタ３０１の設定値と演算置３０８の出力のいずれかを選択しカウンタ３１２に出力する。
【００８０】
選択装置３１１は、図示されていない制御信号に基づいてレジスタ３０２の設定値と演算装置３０９の出力のいずれかを選択しカウンタ３１３に出力する。
【００８１】
カウンタ３１２は、選択装置３１０により選択されたレジスタ３０１の設定値（初期値）または演算装置３０８の演算結果の値によりカウント値を設定し、この値を演算装置２０６にフィードバックし、かつ第１アドレス計算カウント値ＡＣＮＴＶ３１として演算装置３１４に出力する。
【００８２】
カウンタ３１３は、選択装置３１１により選択されたレジスタ３０２の設定値（初期値）または演算装置３０９の演算結果の値によりカウント値を設定し、この値を演算装置３０９にフィードバックし、かつ第２アドレス計算カウント値ＡＣＮＴＶ３２として演算装置３１４に出力する。
【００８３】
演算装置３１４は、図示されていない制御信号に基づいてカウンタ３１２による第１アドレス計算カウント値ＡＣＮＴＶ３１と、カウンタ３１３による第２アドレス計算カウント値ＡＣＮＴＶ３２と、レジスタ２０７に設定された修飾値とに基づいて所定の演算を行ってアドレスＡＤＲを計算する。
【００８４】
ここで、図６のアドレス生成装置３００におけるアドレス生成動作を図７（Ａ）〜（Ｄ）のタイミングチャートに関連付けて説明する。
図７（Ａ）は第１アドレス計算カウント値ＡＣＮＴＶ３１を、図７（Ｂ）は第２アドレス計算カウント値ＡＣＮＴＶ３２を、図７（Ｃ）はレジスタ３０７に設定された修飾値ＭＤＶを、図７（Ｄ）は演算装置３１４において計算されたアドレスＡＤＲをそれぞれ示している。
【００８５】
アドレス生成はつぎのように行われる。
レジスタ３０１、レジスタ３０２にはカウンタの初期値として０が格納され、レジスタ３０３、レジスタ３０４にはステップ値として３および１が格納され、レジスタ３０５、レジスタ３０６には修飾値として５が格納される。
【００８６】
演算装置３０８、および演算装置３０９はそれぞれ以下の演算を実行する。
【００８７】
（数９）
（ＳＴＶ３０３＋ＣＮＴ３１２） mod（ＭＤＶ３０５）
【００８８】
（数１０）
（ＳＴＶ３０４＋ＣＮＴ３１３） mod（ＮＤＶ３０６）
【００８９】
ここで modはモジュロ演算を表している。
また、式９，１０において、ＳＴＶ３０３はレジスタ３０３に設定されたステップ値を、ＣＮＴ３１２はカウンタ３１２のカウント値を、ＭＤＶ３０５はレジスタ３０５に設定された修飾値を、ＳＴＶ３０４はレジスタ３０４に設定されたステップ値を、ＣＮＴ３１３はカウンタ３１３のカウント値を、ＭＤＶ３０６はレジスタ３０６に設定された修飾値を、それぞれ示している。ここで modはモジュロ演算を表している。
【００９０】
モジュロ演算は、ＳＴＶ３０３＜ＭＤＶ３０５、かつ、ＩＮＶ３０１＜ＭＤＶ３０５、の条件を満たされたときには、以下の演算を実行することでも実現できる。なお、ＩＮＶ３０１はレジスタ３０１に設定された初期値を示す。
【００９１】
（数１１）
ＳＴＶ３０３＋ＳＴＶ３０４−ＭＤＶ３０５
【００９２】
選択装置３１０は５サイクルおきにレジスタ３０１の値を選択し、それ以外のときは演算装置３０８の値を選択する。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ３１、第２アドレス計算カウント値ＡＣＮＴＶ３２は、図７（Ｃ），（Ｄ）に示すような値をとる。
【００９３】
また、図７（Ｃ）に示すように、レジスタ３０７には修飾値ＭＤＶ３０７として１０が設定される。
演算装置３１４は、以下の演算を実行して、アドレスを演算する。
【００９４】
（数１２）
ＡＤＲ＝（ＡＣＮＴＶ３１＋ＡＣＮＴＶ３２） mod（ＭＤＶ３０７）
【００９５】
演算装置３１４で実行する演算は減算、乗算などの一般的な演算に対してのモジュロ演算も可能であり、加算に対してのモジュロ演算限定するものではない。
また、本実施形態では入力データが２種類であるが、以下に示す例などのように、２種類を超える入力に対して、任意の組み合わせの演算に対してモジュロ値を取り、制御信号を用いて選択的に変更可能にすることも可能である。
【００９６】
（数１３）
（入力データＡ＋入力データＢ＋入力データＣ）mod モジュロ値Ａ
【００９７】
（数１４）
（入力データＡ＋入力データＢ）mod モジュロ値Ａ＋入力データＣ
【００９８】
本第３の実施形態によれば、上述した第２の実施形態の効果と同様の効果を得ることができる。
【００９９】
＜第４実施形態＞
図８は、本発明に係るアドレス生成装置の第４の実施形態を示す構成図である。
本第４の実施形態に係るアドレス生成装置４００は、アドレス生成の開始時期を変更させてアドレスを生成する場合の構成例を示している。
【０１００】
アドレス生成装置４００は、初期値を設定するレジスタ４０１、ステップ値を設定するレジスタ４０２、演算装置４０３、選択装置４０４、カウンタ４０５、演算装置４０６、パラメータレジスタ４０７、タイミングカウンタ４０８、制御装置４０９、および制御信号生成装置４１０を有している。また、入力として起動信号ＴＲＧ、制御入力ＣＴＬＩＮを有する。
【０１０１】
演算装置４０３は、レジスタ４０２のステップ値とカウンタ４０５からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置４０４に出力する。
【０１０２】
選択装置４０４は、図示されていない制御信号に基づいてレジスタ４０１の設定値と演算置４０３の出力のいずれかを選択しカウンタ４０５に出力する。
【０１０３】
カウンタ４０５は、選択装置４０４により選択されたレジスタ４０１の設定値（初期値）または演算装置４０４の演算結果の値によりカウント値を設定し、この値を演算装置２０６にフィードバックし、かつ第１アドレス計算カウント値ＡＣＮＴＶ４１として演算装置４０６および制御信号生成装置４１０に出力する。
カウンタ４０５は、制御装置４０９による制御信号Ｓ４０９ａに応答してカウントアップ動作を開始する。
【０１０４】
演算装置４０６は、図示されていない制御信号に基づいてカウンタ３１２による第１アドレス計算カウント値ＡＣＮＴＶ４１に基づいて所定の演算を行ってアドレスＡＤＲを算出する。
【０１０５】
パラメータレジスタ４０７は、外部からアドレス生成遅延値が設定される。
【０１０６】
タイミングカウンタ４０８は、起動信号ＴＲＧが入力されるとカウンタ値をカウントアップし、パラメータレジスタ４０７に設定された値になるまでアドレス生成を遅延させるタイミングをカウントする。
【０１０７】
制御装置４０９は、タイミングカウンタ４０８のカウント値ＣＮＴ４０８が、パラメータレジスタ４０７に設定された所定の遅延値に達したか否かを判定し、達したと判定した場合に制御信号Ｓ４０９ａをカウンタ４０５に出力して、カウンタ４０５のカウントアップを有効にする。
また、制御装置４０９は、タイミングカウンタのタイミングカウント値ＣＮＴ４０８が設定値に達した後に、制御信号Ｓ４０９ｂを制御信号生成装置４１０に出力してアドレス有効信号ＡＶＬＤを有効するように制御する。
【０１０８】
制御信号生成装置４１０は、制御入力ＣＴＬＩＮとこの有効状態からアドレス有効信号ＡＶＬＤを生成する。
制御信号生成装置４１０は、制御装置４０９による制御信号Ｓ４０９ｂに応答してアドレス有効信号ＡＶＬＤを有効状態にし、カウンタ４０５のカウント値、すなわち第１アドレス計算カウント値ＡＣＮＴＶ４１が所定の終了値に達するとアドレス有効信号ＡＶＬＤを無効状態にする。
制御信号生成装置４１０は、カウンタ４０５のカウント値が特定の値になったときに制御出力ＣＴＬＯＵＴを有効、もしくは無効状態にすることができる。
【０１０９】
ここで、図８のアドレス生成装置４００におけるアドレス生成動作について図９（Ａ）〜（Ｇ）のタイミングチャートに関連付けて説明する。
図９（Ａ）はタイミングカウンタ４０８に与える起動信号ＴＲＧを、図９（Ｂ）はタイミングカウンタ４０８のタイミングカウント値ＣＮＴ４０８を、図９（Ｃ）はカウンタ４０５による第１アドレス計算カウント値ＡＣＮＴＶ４１を、図９（Ｄ）は演算装置４０６において計算されたアドレスＡＤＲを、図９（Ｅ）は制御信号生成装置４１０で生成されるアドレス有効信号ＡＶＬＤを、図９（Ｆ）は制御入力ＣＴＬＩＮを、図９（Ｇ）は制御出力ＣＴＬＯＵＴをそれぞれ示している。
【０１１０】
アドレス生成はつぎのように行われる。
パラメータレジスタ４０７にはアドレス生成遅延値「４」が設定され、図９（Ａ）に示すように、外部から入力されるトリガ信号としての起動信号ＴＲＧによりタイミングカウンタ４０８のカウントアップが行われる。
そして、図９（Ｂ）に示すように、タイミングカウンタ４０８のカウント値ＣＮＴ４０８が、パラメータレジスタ４０７に設定された所定の遅延値「４」に達すると、制御装置４０９が、アドレス生成カウンタ４０５が動作するように制御信号Ｓ４０９ａをカウンタ４０５に出力して、カウンタ４０５のカウントアップを有効にする。
【０１１１】
レジスタ４０１にはカウンタの初期値として０が格納され、レジスタ４０２にはステップ値として２が格納される。演算装置４０３はたとえば加算を実行する。
選択装置４０４は常に演算装置４０３の値を選択する。
このように動作させることで、第１アドレス計算カウント値ＡＣＮＴＶ４１は、図９（Ｃ）に示すような値をとる。
【０１１２】
演算装置４０６は、第１アドレス計算カウント値ＡＣＮＴＶ４１を用いてアドレスＡＤＲを算出する。
【０１１３】
上記のアドレス生成と並行してアドレス有効信号ＡＶＬＤ・制御出力ＣＴＬＯＵＴを出力することも可能である。
図９（Ｅ）〜（Ｇ）に示すように、アドレス有効信号ＡＶＬＤは制御入力ＣＴＬＩＮと、起動信号ＴＲＧとタイミングカウント値ＣＴＬ４０８をもとに制御装置４０９と制御信号生成装置４１０により生成される。
制御装置４０９は、タイミングカウント値ＣＮＴ４０８が設定値に達した後に、制御信号Ｓ４０９ｂによりアドレス有効信号ＡＶＬＤを有効状態にし、カウンタ４０５のカウント値が終了値に達するとアドレス有効信号ＡＶＬＤを無効状態にする。
【０１１４】
制御信号生成装置４１０は、カウンタ４０５のカウント値が特定の値になったときに制御出力ＣＴＬＯＵＴを有効、もしくは無効状態にする。
図９（Ｃ），（Ｇ）に示すように、本例では、第１アドレス計算カウント値ＡＣＮＴＶ４１が「６」と「１２」になったときに制御出力ＣＴＬＯＵＴを有効状態にしている。
【０１１５】
本第４の実施形態によれば、アドレス生成と同時に制御信号とアドレス有効信号を出力することが可能であるため、これらの信号を用いてメモリや演算装置の制御を柔軟に行うことができるようになる利点がある。
また、アドレス生成のタイミングをパラメータで制御することが可能であるため、複数のメモリからの読み出しや、書き込みに時間的な依存関係がある場合についても容易に対応することが可能になる。
【０１１６】
＜第５実施形態＞
図１０は、本発明の第５の実施形態に係る再構成可能な演算装置を示す構成図である。
本第５の実施形態に係る再構成可能な演算装置５００は、アドレス生成装置の入力データとしてメモリ出力を用いてアドレスを生成し、演算を実行する場合の構成例を示している。
【０１１７】
再構成可能な演算装置５００は、図１０に示すように、アドレス生成装置５０１，５０２，５０３、メモリ５０４，５０５，５０６、および演算装置５０７を有している。
【０１１８】
図１０の再構成可能な演算装置５００においては、アドレス生成装置５０１の生成したアドレスＡＤＲ５０１はメモリ５０４のアドレスとして、アドレス生成装置５０２の生成したアドレスＡＤＲ５０２はメモリ５０５のアドレスとして、アドレス生成装置５０３の生成したアドレスＡＤＲ５０３はメモリ５０６アドレスとして使用される。
メモリ５０４の読み出しデータはアドレス生成装置５０２の入力データとして使われ、演算装置５０７はメモリ５０５の読み出しデータを演算し、その結果をメモリ５０６に出力する。
【０１１９】
図１１は、図１０のメモリ５０４においてデータがアドレス毎に格納されている一例を示す図である。
また、図１２（Ａ）〜（Ｆ）は図１０の演算装置５００の動作を説明するためのタイミングチャートである。
図１２（Ａ）はアドレス生成装置５０１が生成するアドレスＡＤＲ５０１を、図１２（Ｂ）はメモリ５０４の出力ＭＲ５０４を、図１２（Ｃ）はアドレス生成装置５０２が生成するアドレスＡＤＲ５０２を、図１２（Ｄ）はメモリ５０５の出力ＭＲ５０５を、図１２（Ｅ）は演算装置５０７の出力Ｓ５０７を、図１２（Ｆ）はアドレス生成装置５０３が生成するアドレスＡＤＲ５０３をそれぞれ示している。
【０１２０】
メモリ５０４にはアドレス毎に、図１１に示すように、データが格納されている。
図１２（Ａ）に示すように、アドレス生成装置５０１はアドレスＡＤＲ５０１として0,1,2,...11を順次発行する。
それに伴い、図１２（Ｂ）に示すように、メモリ５０４からはデータ0,1,0,1,2...が順次読み出される。
アドレス生成装置５０２は、メモリ５０４からの出力データを、本発明の第２実施形態（図４）の入力データＤＩＮとして用い、同様の動作を行うことで、図１２（Ｃ）に示すように、アドレスＡＤＲ５０２を生成する。
【０１２１】
図１２（Ｄ），（Ｅ）に示すように、メモリ５０５から読み出されたデータm[i]に対して、演算装置５０７で x[i]=m[i]*2の演算を行い、その結果をメモリ５０６に書き込む。メモリ５０６へ供給するアドレスは、図１２（Ｆ）に示すように、アドレス生成装置５０３が生成する。
【０１２２】
なお、本第５の実施形態では、演算装置５０７は１入力、１出力の演算装置としているが、入出力のデータ数を限定するものではなく、対応する入力データ、出力データに応じてアドレス生成装置とメモリ、あるいはレジスタの値を用いることで多入力、多出力の演算装置でも同様の動作が可能である。
【０１２３】
さらに演算の種類についても例に示したものに限定するものではなく、一般的な四則演算や論理演算、モジュロ演算などを含むことは明らかである。
【０１２４】
＜第６実施形態＞
図１３は、本発明の第６の実施形態に係る再構成可能な演算装置を示す構成図である。  本第６の実施形態に係る再構成可能な演算装置６００は、アドレス生成装置の入力データとしてメモリ出力を用いてアドレスを生成し、演算を実行する場合の構成を示している。
【０１２５】
再構成可能な演算装置６００は、アドレス生成装置６０１，６０２，６０３、メモリ６０４，６０５，６０６、および演算装置６０７，６０８を有している。
【０１２６】
図１３の再構成可能な演算装置６００においては、アドレス生成装置６０１の生成したアドレスＡＤＲ６０１はメモリ６０４のアドレスとして、アドレス生成装置６０２の生成したアドレスＡＤＲ６０２はメモリ６０５のアドレスとして、アドレス生成装置６０３の生成したアドレスＡＤＲ６０３はメモリ６０６のアドレスとして使用される。
メモリ６０４の読み出しデータは演算装置６０７の入力データとして、演算装置６０７の演算結果はアドレス生成装置６０２の入力データとして使われ、演算装置６０８はメモリ６０５の読み出しデータを演算し、その結果をメモリ６０６に出力する。
【０１２７】
図１４は、図１３のメモリ６０４においてデータがアドレス毎に格納されている一例を示す図である。
また、図１５（Ａ）〜（Ｇ）は図１３の演算装置６００の動作を説明するためのタイミングチャートである。
図１５（Ａ）はアドレス生成装置６０１が生成するアドレスＡＤＲ６０１を、図１５（Ｂ）はメモリ６０４の出力ＭＲ６０４を、図１５（Ｃ）は演算装置６０７の出力Ｓ６０７を、図１５（Ｄ）はアドレス生成装置６０２が生成するアドレスＡＤＲ６０２を、図１５（Ｅ）はメモリ６０５の出力ＭＲ６０５を、図１５（Ｆ）は演算装置６０８の出力Ｓ６０８を、図１５（Ｇ）はアドレス生成装置６０３が生成するアドレスＡＤＲ６０３をそれぞれ示している。
【０１２８】
メモリ６０４にはアドレス毎に、図１４に示すように、データが格納されている。
図１５（Ａ）に示すように、アドレス生成装置６００はアドレスＡＤＲ６０１として0,1,2,...11を順次発行する。
それに伴い、図１５（Ｂ）に示すように、メモリ６０４からはデータ0,1,0,1,2...が順次読み出される。
【０１２９】
演算装置６０７は、メモリ６０４からの出力データＭＲ６０４に以下の演算を実行して、アドレス生成装置６０２の入力データとして供給する。
【０１３０】
（数１５）
Ｓ６０７＝ＭＲ６０４＆ 0xffffffff
【０１３１】
アドレス生成装置６０２は、演算装置６０７からの演算結果出力Ｓ６０７を、本発明の第２実施形態（図４）の入力データＤＩＮとして用い、同様の動作を行うことで、図１５（Ｄ）に示すように、アドレスＡＤＲ６０２を生成する。
【０１３２】
図１５（Ｅ），（Ｆ）に示すように、メモリ６０５から読み出されたデータm[i]に対して、演算装置６０８で x[i]=m[i]*2の演算を行い、その結果をメモリ６０６に書き込む。メモリ６０６へ供給するアドレスは、図１５（Ｇ）に示すように、アドレス生成装置６０３が生成する。
【０１３３】
なお、本第６の実施形態では、演算装置６０７，６０８は１入力、１出力の演算装置としているが、入出力のデータ数を限定するものではなく、対応する入力データ、出力データに応じてアドレス生成装置とメモリ、あるいはレジスタの値を用いることで多入力、多出力の演算装置でも同様の動作が可能である。
【０１３４】
さらに、演算の種類についても例に示したものに限定するものではなく、一般的な四則演算や論理演算、モジュロ演算などを含むことは明らかである。
【０１３５】
以上説明したように、本実施形態によれば、従来のＤＳＰなどで生成される単純なアドレスパターンに比べて、複雑なアドレスパターンを生成することができる。
また、カウンタを分割して使用することで、アドレス範囲が広がったりとカウンタのビット幅を大きくなっても、ＬＳＩに実装する場合の面積が大きくなる影響を抑えるという効果もある。
さらに、アドレス生成と同時に制御信号とアドレス有効信号を出力することが可能であるため、これらの信号を用いてメモリや演算装置の制御を柔軟に行うことができるようになる利点がある。
また、アドレス生成のタイミングをパラメータで制御することが可能であるため複数のメモリからの読み出しや、書き込みに時間的な依存関係がある場合についても容易に対応することが可能になる利点がある。
【図面の簡単な説明】
【０１３６】
【図１】本発明に係るアドレス生成装置の第１の実施形態を示す構成図である。
【図２】図１のアドレス生成装置においてカウンタを分割しない場合のアドレス生成動作について説明するためのタイミングチャートである。
【図３】図１のアドレス生成装置においてカウンタを分割する場合のアドレス生成動作について説明するためのタイミングチャートである。
【図４】本発明に係るアドレス生成装置の第２の実施形態を示す構成図である。
【図５】図４のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。
【図６】本発明に係るアドレス生成装置の第３の実施形態を示す構成図である。
【図７】図６のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。
【図８】本発明に係るアドレス生成装置の第４の実施形態を示す構成図である。
【図９】図８のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。
【図１０】本発明の第５の実施形態に係る再構成可能な演算装置を示す構成図である。
【図１１】図１０のメモリにおいてデータがアドレス毎に格納されている一例を示す図である。
【図１２】図１０の演算装置の動作を説明するためのタイミングチャートである。
【図１３】本発明の第６の実施形態に係る再構成可能な演算装置を示す構成図である。
【図１４】図１３のメモリにおいてデータがアドレス毎に格納されている一例を示す図である。
【図１５】図１３の演算装置の動作を説明するためのタイミングチャートである。
【符号の説明】
【０１３７】
１００…アドレス生成装置、１０１，１０２…初期値を設定するレジスタ、１０３，１０４…ステップ値を設定するレジスタ、１０５，１０６…演算装置、１０７，１０８…選択装置、１０９，１１０…カウンタ、１１１…演算装置、１１２…制御装置、１１３…カウンタ装置、１１４…演算装置、２００…アドレス生成装置、２０１，２０２…初期値を設定するレジスタ、２０３，２０４…ステップ値を設定するレジスタ、２０５…固定値を設定するレジスタ、２０６，２０７…演算装置、２０８，２０９…選択装置、２１０，２１１…カウンタ、２１２…演算装置、３００…アドレス生成装置、３０１，３０２…初期値を設定するレジスタ、３０３，３０４…ステップ値を設定するレジスタ、３０５，３０６，３０７…修飾値を設定するレジスタ、３０８，３０９…演算装置、３１０，３１１…選択装置、３１２，３１３…カウンタ、３１４…演算装置、４００…アドレス生成装置、４０１…初期値を設定するレジスタ、４０２…ステップ値を設定する、４０３…演算装置、４０４…選択装置、４０５…カウンタ、４０６…演算装置、４０７…パラメータレジスタ、４０８…タイミングカウンタ、４０９…制御装置、４１０…制御信号生成装置、ＴＲＧ…起動信号、ＣＴＬＩＮ…制御入力、ＣＴＬＯＵＴ…制御出力、ＡＶＬＤ…アドレス有効信号、５００…再構成可能な演算装置、５０１〜５０３…アドレス生成装置、５０４〜５０６…メモリ、５０７…演算装置、６００…再構成可能な演算装置、６０１〜６０３…アドレス生成装置、６０４〜６０６…メモリ、６０７，６０８…演算装置。
【図１】
2005322176.tif 000003
【図２】
2005322176.tif 000004
【図３】
2005322176.tif 000005
【図４】
2005322176.tif 000006
【図５】
2005322176.tif 000007
【図６】
2005322176.tif 000008
【図７】
2005322176.tif 000009
【図８】
2005322176.tif 000010
【図９】
2005322176.tif 000011
【図１０】
2005322176.tif 000012
【図１１】
2005322176.tif 000013
【図１２】
2005322176.tif 000014
【図１３】
2005322176.tif 000015
【図１４】
2005322176.tif 000016
【図１５】
2005322176.tif 000017