(57)【特許請求の範囲】
【請求項１】
原アドレスにステップ値を加算して更新されたアドレスを生成するアドレス更新回路を有するアドレス生成回路において、
前記アドレス更新回路は、
前記原アドレスとステップ値を加算する第１のアドレス更新回路と、
サーキュラーアドレッシング命令を実行する場合に、前記原アドレスとステップ値が供給され、当該原アドレスとステップ値とを加算しさらにサーキュラーモジュールサイズを加算もしくは減算する第２のアドレス更新回路と、
前記サーキュラーアドレッシング命令を実行しない場合に、前記第１のアドレス更新回路の出力を前記更新されたアドレスとして出力し、前記サーキュラーアドレッシング命令を実行する場合に、前記第１または第２のアドレス更新回路の出力を前記更新されたアドレスとして出力するセレクト回路とを有し、
前記サーキュラーアドレッシング命令を実行しない場合は、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【請求項２】
請求項１において、
前記サーキュラーアドレッシング命令を実行しない場合は、前記第２のアドレス更新回路に前記原アドレスとステップ値とが供給されないまたは所定の値に固定され、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【請求項３】
原アドレスにステップ値を加算して更新されたアドレスを生成するアドレス更新回路を有するアドレス生成回路において、
前記アドレス更新回路は、
前記原アドレスとステップ値を加算する第１のアドレス更新回路と、
サーキュラーアドレッシング命令を実行する場合に、前記第１のアドレス更新回路の加算値にサーキュラーモジュールサイズを加算もしくは減算する第２のアドレス更新回路と、
前記サーキュラーアドレッシング命令を実行しない場合に、前記第１のアドレス更新回路の出力を前記更新されたアドレスとして出力し、前記サーキュラーアドレッシング命令を実行する場合に、前記第１または第２のアドレス更新回路の出力を前記更新されたアドレスとして出力するセレクト回路とを有し、
前記サーキュラーアドレッシング命令を実行しない場合は、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【請求項４】
請求項３において、
前記サーキュラーアドレッシング命令を実行する場合であって、前記ステップ値が負で前記第１のアドレス更新回路の加算値が正の場合、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【請求項５】
請求項４において、
前記第２のアドレス更新回路に前記第１のアドレス更新回路の加算値が供給されないまたは所定の値に固定されて、前記第２のアドレス更新回路の動作が停止することを特徴とるアドレス生成回路。
【請求項６】
請求項１または３において、
更に、前記アドレスレジスタに格納された原アドレス、または前記更新されたアドレスから、メモリをアクセスする実効アドレスを生成する実効アドレス生成回路を有し、
当該実効アドレス生成回路は、前記サーキュラーアドレッシング命令を実行しない場合は、前記原アドレスまたは更新されたアドレスが実効アドレスとして出力され、前記サーキュラーアドレッシング命令を実行する場合は、前記原アドレスまたは更新されたアドレスのアドレスインデックスにベースポイントが加算された値が実効アドレスとして出力されることを特徴とするアドレス生成回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル信号処理プロセッサ(DSP)などのアドレス生成回路に関し、特に、通常のアドレッシングのアドレス生成回路とサーキュラーアドレッシングのアドレス回路とを統合し且つ低消費電力化することができるアドレス生成回路に関する。
【０００２】
【従来の技術】
近年、携帯電話・移動無線通信端末等において、低コストで且つ複雑なアルゴリズムに対応するディジタル信号処理プロセッサ(以下単にDSPと称する。) などが広く使用されている。これらの携帯端末は基本的に電池駆動であるため、その低消費電力化が最重要研究課題の一つである。
【０００３】
ＤＳＰは、例えばサンプリング化した信号について相関の計算やディジタルフィルタリング演算を行う場合、所定の記憶領域に記憶されたデータを何度もアクセスする必要が生じることがある。このようなひとかたまりのデータが記憶されている記憶領域は、例えばサーキュラーブロック、或いはサーキュラーモジュールと呼ばれる。モジュールのトップアドレスをベースポイントＢＰとすると、そのボトムアドレスはベースポイントＢＰにモジュールサイズＭＤを加えたBP+MD−１になる。サーキュラーモジュールに対するアクセスは、ステップ値Δ毎に行われ、現在のアドレスインデックス（原アドレスインデックス）Xnに正または負のステップ値Δを加算した値が、次にアクセスされる更新アドレスインデックスXn'＝Xn＋Δとなる。
【０００４】
かかるサーキュラーアドレッシングを行う場合、次のアドレスインデックスを求めるアドレス更新回路では、次のアドレスインデックスXn'＝Xn＋Δがモジュール内のアドレスインデックスか否かをチェックし、モジュールの領域外の場合は、モジュール内の循環先アドレスインデックスに変換する必要がある。
【０００５】
一方、通常のアドレッシングでは、現在のアドレス（原アドレス）Xnにステップ値Δを加えたアドレスXn'＝Xn＋Δが、単純に更新アドレスになる。
【０００６】
また、サーキュラーアドレッシングでは、メモリに実際にアクセスするためのアドレスを生成する回路が必要になる。サーキュラーアドレッシングではモジュール内のベースポイント（トップアドレス）から何番地という形でアドレスインデックスXnを生成するので、実際にメモリにアクセスする場合は、BP＋Xn'という実効アドレスを生成しなければならない。一方で、通常のアドレッシングでは、生成されたアドレスXn'自体がメモリをアクセスできる実効アドレスになっている。
【０００７】
図１は、従来のアドレス生成回路の概略構成図である。従来のDSPなどにおいて設けられるアドレス生成回路は、図１に示される通り、通常アドレッシング用のアドレス生成回路２と、サーキュラーアドレッシング用のアドレス生成回路１とを別々に設け、それぞれのアドレッシング処理において、対応するアドレス生成回路を動作させている。また、サーキュラーアドレッシング用アドレス生成回路１には、アクセス用の実効アドレス生成回路１Ｂとアクセス後の次のアドレスを求めるアドレス更新回路１Ａとが設けられる。一方、通常アドレッシング用アドレス生成回路２も、同様に、実効アドレス生成回路２Ｂとアドレス更新回路２Ａとを有する。
【０００８】
ディジタル信号処理は、短時間内に処理しなければならないデータ量が多い。そのため、DSPのコアとメモリとの間でデータ転送量が多くなりがちである。近年のDSPでは、専用のハードウエアによってアドレス演算機能を実現して、アドレス生成とデータ演算とを並列に実行する傾向にある。その場合、図１のように、通常のアドレッシング用アドレス生成回路とサーキュラーアドレッシング用アドレス生成回路とを設けることが提案されている。例えば、特開平7-253922号公報参照。
【０００９】
【発明が解決しようとする課題】
しかしながら、図１に示される通り、アドレス生成回路として、通常アドレッシング用とサーキュラーアドレッシング用とをそれぞれ専用のハードウエアで実現すると、回路規模が大きくなり好ましくない。特に、アドレス更新では、現在のアドレスにステップ値を加えるという加算演算器が必要である。かかる加算演算器は、一般的にその回路規模が比較的大きく、LSIの高集積化の弊害となる。また、それに伴い消費電力も大きくなり、携帯端末に使用されるDSPのLSIとしては不適切である。
【００１０】
そこで、本発明の目的は、より回路規模を小さくしたアドレス生成回路を提供することにある。
【００１１】
また、本発明の別の目的は、より消費電力を小さくしたアドレス生成回路を提供することにある。
【００１２】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面では、原アドレスXnにステップ値Δを加算して更新されたアドレスXn'を生成するアドレス更新回路を有するアドレス生成回路であり、アドレス更新回路は、原アドレスXnとステップ値Δを加算する通常アドレス更新回路と、サーキュラーアドレッシング命令を実行する場合に、原アドレスXnとステップ値Δ及びサーキュラーモジュールサイズＭＤとを加算するサーキュラーアドレス更新回路とを有する。そして、サーキュラーアドレッシング命令を実行しない場合に、通常のアドレス更新回路３７の出力を更新されたアドレスとして出力し、サーキュラーアドレッシング命令を実行する場合に、通常またはサーキュラーアドレス更新回路の出力を更新されたアドレスとして出力する。より好ましい実施例では、サーキュラーアドレッシング命令を実行しない場合は、サーキュラーアドレス更新回路の動作が停止する。
【００１３】
上記の目的を達成するために、本発明の別の側面は、原アドレスにステップ値を加算して更新されたアドレスを生成するアドレス更新回路を有するアドレス生成回路において、前記アドレス更新回路は、
前記原アドレスとステップ値を加算する第１のアドレス更新回路と、
サーキュラーアドレッシング命令を実行する場合に、前記原アドレスとステップ値が供給され、当該原アドレスとステップ値及びサーキュラーモジュールサイズとを加算する第２のアドレス更新回路と、
前記サーキュラーアドレッシング命令を実行しない場合に、前記第１のアドレス更新回路の出力を前記更新されたアドレスとして出力し、前記サーキュラーアドレッシング命令を実行する場合に、前記第１または第２のアドレス更新回路の出力を前記更新されたアドレスとして出力するセレクト回路とを有することを特徴とする。
【００１４】
また、本発明の更に別の側面は、原アドレスにステップ値を加算して更新されたアドレスを生成するアドレス更新回路を有するアドレス生成回路において、前記アドレス更新回路は、
前記原アドレスとステップ値を加算する第１のアドレス更新回路と、
サーキュラーアドレッシング命令を実行する場合に、前記第１のアドレス更新回路の加算値とサーキュラーモジュールサイズとを加算する第２のアドレス更新回路と、
前記サーキュラーアドレッシング命令を実行しない場合に、前記第１のアドレス更新回路の出力を前記更新されたアドレスとして出力し、前記サーキュラーアドレッシング命令を実行する場合に、前記第１または第２のアドレス更新回路の出力を前記更新されたアドレスとして出力するセレクト回路とを有すること特徴とする。
【００１５】
上記発明によれば、アドレス更新回路が、加算演算を行う第１及び第２のアドレス更新回路を有し、サーキュラーアドレッシング命令の時は、第１及び第２のアドレス更新回路により更新アドレスを生成し、サーキュラーアドレッシング命令以外の命令の時は、第１のアドレス更新回路により更新アドレスを生成する。従って、回路規模が小さくなり、消費電力も少なくなる。
【００１６】
尚、サーキュラーアドレッシング命令以外の時は、通常アドレッシング命令やアドレスレジスタ演算命令を含む。これらの命令では、原アドレスに所定のステップ値または加算値を加算する演算だけで処理されるので、第１のアドレス更新回路だけで処理することが可能になる。従って、その場合は、第２のアドレス更新回路は動作を停止する。
【００１７】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。本実施の形態例において、サーキュラーアドレッシングを行う場合は、アドレスとしてアドレスインデックスが使用され、そのアドレスインデックスにトップアドレスが加算されることで、メモリアクセス用の実行アドレスが生成される。従って、サーキュラーアドレッシングの時は、アドレスレジスタや更新回路のアドレスは、アドレスインデックスになる。
【００１８】
図２は、サーキュラーアドレッシングを説明するための図である。図２（Ａ）はステップ値Δ＞０の場合であり、図２（Ｂ）はステップ値Δ＜０の場合をそれぞれ示す。ステップ値Δ＞０の図２（Ａ）において、サーキュラーモジュールは、トップアドレスであるベースポイントBPからモジュールサイズMDの領域を循環してアクセスされるメモリ領域である。従って、ボトムアドレスはBP+MD−１である。仮に、現在のアドレスインデックス（原アドレス）Xnから次のアドレスを求めるアドレス更新演算を行うとする。一般的には、現在のアドレスインデックスXnにステップ値Δを加算したアドレスインデックス値が、更新された次のアドレスインデックス値Xn'となる。即ち、Xn'＝Xn＋Δである。尚、アドレスインデックスXnは、ベースポイントBPからのアドレスに対する差分の０〜（MD−１）の値であり、実際にメモリアクセスする時の実効アドレスはBP+Xnになることに留意すべきである。
【００１９】
そして、メモリへのアクセスと同時に、次のアドレスインデックスを演算するアドレスインデックスの更新処理が行われるが、次のアドレスインデックスXn'＝Xn＋Δがサーキュラーモジュール内にあるか否かのチェックを行い、サーキュラーモジュール外にある場合は、アドレス循環先のトップアドレスのベースポイントに戻す必要がある。例えば、図２（Ａ）の２つめの更新アドレスインデックスXn'＝Xn＋Δがボトムアドレスのインデックス（ＭＤ−１）より下に位置している。その場合は、破線に示す通り、更新アドレスインデックスをXn'＝Xn＋Δ−MDにする必要がある。
【００２０】
更新アドレスインデックスがサーキュラーモジュールの外か否かを検出するためには、更新アドレスインデックスXn'＝Xn＋ΔからモジュールサイズMDを減算した値Xn＋Δ−MDが、正か負かにより判断することができる。即ち、ステップ値Δ≧０の場合、
Xn＋Δ−MD＜０であれば、モジュール内でありXn'= Xn＋Δ        （１）
Xn＋Δ−MD≧０であれば、モジュール外でありXn'= Xn＋Δ−MD   （２）
とすべきである。
【００２１】
図２（Ｂ）は、ステップ値Δ＜０の場合を示し、更新アドレスインデックスXn'は、アドレスの下から上に向かってステップ値Δずつ少なくなる。そして、この場合も、更新アドレスインデックスXn'=Xn＋Δがモジュール内にあるか否か、つまりベースポイントのインデックス０を超えているか否かにより更新アドレスインデックスが異なる。即ち、ステップ値Δ＜０場合は、
Xn＋Δ＜０であれば、モジュール外でありXn'= Xn＋Δ＋MD        （３）
Xn＋Δ≧０であれば、モジュール内でありXn'= Xn＋Δ             （４）
となる。
【００２２】
上記のサーキュラーアドレッシングのアルゴリズムをまとめると、図３の図表に示される通りである。このアルゴリズムから理解される通り、サーキュラーアドレッシングにおいても、通常アドレッシングでの更新アドレスと同様に、Xn'=Xn+Δなる加算演算が必要である。また、通常アドレッシング時の更新アドレスに加えて、アドレスレジスタ演算命令においても、同様の加算演算を必要とする場合がある。従って、本発明は、このような重複する演算器を統合して、アドレス生成回路の回路規模を小さくし、省電力化を図る。
【００２３】
図４は、本発明のアドレス生成回路の概略図である。アドレス生成回路は、アドレスレジスタ１０内のレジスタ群１２に格納されたアドレスXnから、メモリ４０へのアクセスに使用する実効アドレスを生成する実効アドレス生成回路部２０と、次のアドレスを演算生成するアドレス更新回路３０とを有する。アドレス更新回路３０は、アドレスレジスタ演算命令時にも動作する。
【００２４】
このように、図４のアドレス生成回路は、サーキュラーアドレッシング用アドレス生成回路と通常アドレッシング用アドレス生成回路とを分けることなく、一部重複した回路構成になっている。また、図４に示されたアドレス生成回路では、実効アドレス生成回路２０とアドレス更新回路３０は、通常アドレッシングの時やアドレスレジスタ演算では、その一部が動作し、サーキュラーアドレッシングの時は別の若しくは同じ部分が動作し、従来例より回路規模が小さく、省電力化されている。
【００２５】
実効アドレス生成回路２０は、ペースポイントBPと、原アドレスＸｎまたは更新されたXn'をゲーテッドクロックCCLK1,2に応答して保持するフリップフロップ２１，２２，２３と、サーキュラーアドレス生成回路２１０と、サーキュラーアドレッシング選択信号BPSに応じてサーキュラーアドレス生成回路２１０の出力か、フリップフロップ２３の出力かを選択するセレクタ回路２１１とを有する。サーキュラーアドレッシング選択信号BPSは、サーキュラーアドレッシング時はBPS=1、通常アドレッシング時はBPS=0である。サーキュラーアドレス生成回路２１０は、アドレスレジスタ１０からのアドレスインデックスXnまたは更新アドレスインデックスXn'にベースポイント値を加算する演算機能を有する。かかる演算機能は、種々の回路により実現され、その具体例は後述する。
【００２６】
図４のアドレス更新回路３０は、通常アドレッシング時は、現在アクセス中の原アドレスXnにステップ値Δを加算した更新アドレスXn'＝Xn+Δを演算してアドレスレジスタ１０に格納、またはセレクタ１６に供給する。その為に、通常アドレス更新回路３７は、原アドレスXnを保持するフリップフロップ３１とステップ値Δを保持するフリップフロップ３２の出力を加算演算する。通常アドレッシング時は、選択信号BPSが０であり、それに応答して、通常アドレス更新回路３７の出力が制御セレクタ回路３８により選択される。通常アドレッシングの場合は、アドレスインデックスではなく実際のアドレスが演算される。
【００２７】
アドレス更新回路３０は、サーキュラーアドレッシング時に、マスク回路３５を経由して、原アドレスインデックスXnと、ステップ値Δ、及びモジュールサイズMDとが、マスク回路３５を経由してサーキュラーアドレス更新回路３６に供給される。モジュールサイズMDは、フリップフロップ３３に保持される。サーキュラーアドレス更新回路３６は、更新アドレスインデックスXn'＝Xn＋Δ±MDを演算する演算回路である。サーキュラーアドレッシング時には、通常アドレス更新回路３７も動作して、更新アドレスインデックスXn'＝Xn+Δを演算する。
【００２８】
そして、図３の図表に示した通り、サーキュラーアドレス更新回路３６が生成する演算値Xn＋Δ−MDと、通常アドレス更新回路３７が生成する演算値Xn＋Δの符号に応じて、アドレス更新回路３６，３７のいずれかの出力が制御セレクタ回路３８により選択され、更新アドレスインデックスXn'としてアドレスレジスタ１０に供給される。
【００２９】
図４に示したアドレス更新回路３０では、通常アドレッシング時は、通常アドレス更新回路３７が動作するが、マスク回路３５により原アドレスXnとステップ値Δがサーキュラーアドレス更新回路３６への入力を禁止され或いはすべて０が入力されるので、サーキュラーアドレス更新回路３６の動作は停止される。一方、サーキュラーアドレッシング時は、サーキュラーアドレス更新回路３６と通常アドレス更新回路３７とが動作し、図３のケース（１）乃至（４）に応じて、更新アドレスインデックスXn'が生成される。また、実効アドレス生成回路２０についても、後述するとおり、省電力化された回路にすることができる。
【００３０】
図４のアドレス生成回路の全体の動作は、次の通りである。アドレッシングを行う命令で、１回目のアドレッシングをする場合、命令デコードサイクルにおいてセレクタ信号SEL1に従ってセレクタ回路１４はアドレスレジスタX0…Xnの一つを選択し、セレクタ信号ＳＥＬ２に従ってセレクタ回路１６はセレクタ回路１４の出力を選択して、３２ビットのアドレスレジスタの値Xnをアドレス更新回路３０と実効アドレス生成回路２０とに送る。
【００３１】
アドレス更新回路３０は、命令デコードサイクルの次のパイプラインサイクルで、通常アドレス更新かサーキュラーアドレス更新かの指定した演算を行う。演算した結果は、アドレス用レジスタ１０に送り、指定したアドレスレジスタを更新する。同時に、実効アドレス生成回路２０は、命令デコードサイクルの次のサイクルで、指定したサーキュラーアドレッシングか通常アドレッシングかにより、実効アドレスを生成する。
【００３２】
２回目以降も連続アドレッシングする場合、セレクタ回路１６はアドレスレジスタをバイパスしたアドレス更新回路が生成した更新値Xn'を選択し、アドレス更新回路３０と実効アドレス生成回路２０とに送る。このように繰り返し、連続的にアドレス更新と生成ができる。
【００３３】
アドレス更新回路では、サーキュラーアドレッシングしない命令である、通常アドレス更新命令やアドレスレジスタ演算命令に対し、選択信号BPS=0に応答してマスク回路３５がサーキュラーアドレス更新回路３６を動作させないので、消費電力を低減することができる。同じように実効アドレス生成回路２０でも、サーキュラーアドレッシングしない命令(通常アドレッシング命令) に対し, サーキュラアドレス生成回路２１０を動作させないので、消費電力を低減できる。
【００３４】
図4に示すように、本発明の低消費電力アドレス生成回路は、サーキュラーアドレッシング命令を実行する時、ベースポイントＢＰを利用する。従って、メモリをアクセスする実効アドレスを生成する時は、アドレスXn'またはXnとベースポイントBPとを加算する演算が必要になる。そして、サーキュラーアドレッシング命令を実行しない時は、更新値Xn'の値はそのまま実効アドレスとして利用される。これらの選択は、選択信号BPSに従ってセレクタ回路２１１により行われる。
【００３５】
図５は、第１の実施の形態例におけるアドレス生成回路の詳細図である。また、図６は、そのアドレス生成回路の動作を示す図表である。図６を参照しながら、図５のアドレス生成回路の構成と動作を説明する。アドレスレジスタ１０は、図４と同じである。また、実効アドレス生成回路２０は、図４に示したサーキュラーアドレス生成回路２１０として加算器２１０を有する。なお、この例ではアドレスは３２ビットで構成される。
【００３６】
アドレス更新回路３０には、図４のマスク回路３５として、ＡＮＤゲート２０１，２０２，２０３が設けられ、サーキュラーアドレス更新回路３６として、全加算器２０４と３３ビット加算器２０６が設けられ、更に、通常アドレス更新回路３７として３２ビット加算器２０７が設けられる。また、サーキュラーアドレッシング選択信号BPSと、ステップ値Δの符号ビットMSB1と選択信号BPSの論理積（AND）Ｍ１と、加算器２０６の出力Add21の符号ビットMSB2と、加算器２０７の出力Add20の符号ビットMSB3との組み合わせに従って、選択信号Sel20を生成するセレクタ信号生成回路２０８、及びセレクタ回路２０９が、図４の制御セレクタ回路３８として設けられる。更に、モジュールサイズを保持するフリップフロップ３３の出力を、信号Ｍ１に応じて反転または非反転して全加算器２０４に信号MC＝±MDを供給する反転制御回路２０５を有する。
【００３７】
図５のアドレス生成回路において、選択信号ＢＰＳが１の場合、つまりサーキュラアドレッシング命令を実行する時の動作を説明する。ステップ値△と現在のアドレスである原アドレスのインデックスＸｎは、命令実行パイプラインのアドレス更新サイクルで、フリップフロップ３１，３２を経由し、それぞれステップ値stepと原アドレスのインデックスＸｎとして供給される。選択信号ＢＰＳは１であり、ステップ値stepと原アドレスのインデックスＸｎは、ＡＮＤゲート２０２，２０３を経由し、そのまま信号ＭＢとＭＡとして全加算器２０４に供給される。ステップ値stepの符号位ＭＳＢ１は、ＡＮＤゲート２０１を経由して、信号Ｍ１として反転制御回路２０５及びセレクタ信号生成回路２０８に供給される。
【００３８】
上記のステップ値Δは、２の補数である。また、加算器２０６，２０７も２の補数加算器である。
【００３９】
ステップ値Δ≧０の場合(更新方向が正)、BPS=1、ステップ値の符号位MSB1=0であるので、信号Ｍ１が０であり、それにより反転制御回路２０５は、モジュールサイズＭＤの値を反転し、ＭＣ＝−ＭＤを出力する。そして、全加算器２０４と３３bit加算器２０６により、加算値 (Ｘｎ＋Δ−ＭＤ)を計算し、出力Add21に出力する。そのとき、セレクタ信号生成回路２０８では、選択信号ＢＰＳ＝１、信号Ｍ１＝０であり、３３bit加算器２０６の出力Ａｄｄ２１（＝Ｘｎ＋Δ−ＭＤ）の符号位ＭＳＢ２に応じて、選択信号Sel20を生成する。即ち、図６に示される通り、加算値Ａｄｄ２１（＝Ｘｎ＋Δ−ＭＤ）が負でその符号位ＭＳＢ２が１の場合（ケース（１））、選択信号Sel20が１であり、セレクタ回路２０９は、３２bit加算器２０７の出力Ａｄｄ２０（＝Ｘｎ＋Δ）を選択する。加算値Ａｄｄ２１（＝Ｘｎ＋Δ−ＭＤ）が正でその符号位ＭＳＢ２が０の場合（ケース（２））、選択信号Sel20が０であり、３３bit加算器２０６の出力Ａｄｄ２１（＝Ｘｎ＋Δ−ＭＤ）の下位３２ビットを選択する。
【００４０】
セレクタ回路２０９の出力は、アドレスレジスタ１０に送られ、指定したアドレスレジスタの更新が行われる。また、連続アドレッシングする場合、セレクタ回路２０９の出力は、アドレスレジスタ１０のセレクタ回路１６を経由し、実行アドレス生成回路２０とアドレス更新回路３０に送られ、次のサイクルでアドレス更新とアドレス生成が行われる。
【００４１】
ステップ値Δ<０の場合(更新方向が負)、BPS=1、MSB1=1であるので、信号Ｍ１が１である。信号M1=1に応答して、反転制御回路２０５はモジュールサイズＭＤの値をそのままにしてＭＣ＝ＭＤを出力する。全加算器２０４と３３bit加算器２０６により加算値(Ｘｎ＋Δ＋ＭＤ)を計算する。セレクタ信号生成回路２０８では、選択信号ＢＰＳは１であり、信号Ｍ１は１であり、３２bit加算器２０７の出力Ａｄｄ２０（＝Xn＋Δ）の符号位ＭＳＢ３によりＳｅｌ２０を生成する。セレクタ回路２０９は、加算器２０７の出力Ａｄｄ２０（＝Xn＋Δ）が負でその符号位ＭＳＢ３が１の場合（ケース（３））、選択信号Sel20が０であり、３３bit加算器２０６の出力Ａｄｄ２１（＝Xn＋Δ＋MD）の下位３２ビットを選択する。セレクタ回路２０９は、加算器２０７の出力Ａｄｄ２０（＝Xn＋Δ）が正でその符号位ＭＳＢ３が０の場合（ケース（４））、選択信号Sel20が１であり、３２bit加算器２０７の出力Ａｄｄ２０（＝Xn＋Δ）を選択する。
【００４２】
次に、サーキュラアドレッシング命令を実行しない時、つまり通常アドレス更新又はアドレスレジスタ演算の場合（ＢＰＳ＝０）、ＡＮＤゲート２０１、２０２、２０３の出力Ｍ１、ＭＢ、ＭＡは、フリップフロップ３１，３２の値を出力せずに０に固定する。或いは、ゲートがラッチ回路の場合は、前のラッチデータから変更せずに固定する。また、反転制御回路２０５は固定値ＭＣを出力する。それに伴い、全加算器２０４と３３bit加算器２０６は、入力信号ＭＡ、ＭＢ、ＭＣに変化がないので動作せず、それらの回路が動作する場合の消費電力を低減できる。特に、全加算器２０４や加算器２０６の回路規模は大きく、かかる回路が動作しないことで、大きな消費電力の削減をすることができる。
【００４３】
通常のアドレス更新の場合（ＢＰＳ＝０）、選択信号BPS=0によって、セレクタ信号生成回路２０８の選択信号Ｓｅｌ２０は１になり、３２bit加算器２０７の出力Ａｄｄ２０（＝Xn＋Δ）が選択される。
【００４４】
このようにして、通常のアドレス更新またはアドレスレジスタ演算の場合、全加算器２０４と３３bit加算器２０６の動作が停止させられ、３２bit加算器２０７だけを動作させるので、全体の消費電力を減らすことができる。なお、アドレスレジスタ演算は、アドレス更新回路により生成したアドレスをアドレスレジスタに格納する命令である。
【００４５】
アドレスレジスタ演算命令を実行する場合、選択信号ＢＰＳは０であり、３２bit加算器２０７だけを動作させ、その演算結果Ａｄｄ２０をセレクタ回路２０９経由で、アドレスレジスタ１０に送り、指定したアドレスレジスタ１２の更新を行う。
【００４６】
上記の第１実施例では、サーキュラアドレス更新回路２０４，２０６と通常アドレス更新回路２０７とが並列に動作するので、高速なサーキュラーアドレッシング動作に適している。
【００４７】
図７は、第１の実施の形態例におけるアドレス生成回路の変形例を示す図である。図７には、図５と同じ部分には同じ引用番号を与えている。図７のアドレス生成回路は、モジュールサイズMDを保持するレジスタ３３の出力の論理和４０が、サーキュラーアドレッシング選択信号BPSと共にＡＮＤゲート２２０に供給され、その出力BPS1がゲート２０１，２０２，２０３及びセレクタ信号生成回路２０８に供給される。それ以外は、図５のアドレス生成回路と同じである。
【００４８】
アドレス生成命令において、モジュールサイズMDがゼロに設定される場合がある。かかる場合は、サーキュラーアドレッシング命令であっても、アドレス更新回路の動作は、通常のアドレッシング動作と同じになる。従って、その場合に、全加算器２０４と３３ビット加算器２０６との動作を停止させるために、モジュールサイズMDがゼロの時、その論理和４０も０になることを利用して、ＡＮＤゲート２２０の出力BPS1により、ＡＮＤゲート２０２，２０３の出力を固定する。
【００４９】
図８は、第２の実施の形態例におけるアドレス更新回路の概略図である。また、図９は、第２の実施の形態例におけるアドレス生成回路を示す図である。図９には、図８のアドレス更新回路が詳細に示される。また、図１０は、第２の実施の形態例の動作を示す図表である。
【００５０】
第２の実施の形態例では、原アドレスのインデックスXnとステップ値Δとの加算器３００の出力Add30を、データマスク回路３０３が、サーキュラーアドレッシング選択信号BPS、ステップ値Δの符号ビットMSB1及び加算値Xn＋Δの符号ビットMSB4に応じて、適宜、加算器３０５に供給する。従って、加算器３０５では、すでに加算された値Xn＋ΔとモジュールサイズMDとの加算演算を行えば良いので、全加算器は必要なく、通常の加算器にすることができる。従って、その分、第２の実施の形態例では、第１の実施の形態例に比較して、回路規模を小さくすることができる。
【００５１】
第２の実施の形態例では、セレクタ信号生成回路３０６では、選択信号BPSと、選択信号BPSとステップ値Δの符号ビットMSB1の論理積Ｍ１と、加算値Ｘｎ＋Δの符号ビットMSB4、及び加算値Ｘｎ＋Δ±ＭＤの符号ビットMSB5とにより、セレクタ信号Sel31を生成し、２つの加算値のいずれかを選択する。従って、セレクタ信号生成回路３０６の機能は、第１の実施の形態例の生成回路２０８と同じである。
【００５２】
図９，１０を参照して、第２の実施の形態例におけるアドレス生成回路の動作を説明する。図９に示される通り、アドレスレジスタ１０と実効アドレス生成回路２０の構成は、第１の実施の形態例と同じである。
【００５３】
まず選択信号ＢＰＳが１の場合、つまりサーキュラアドレッシング命令を実行する時の動作を示す。ステップ値△と原アドレスのインデックスＸｎは、パイプラインサイクルのアドレス更新サイクルで、レジスタフリップフロップ３１，３２に保持され、それぞれ更新値stepとインデックスＸｎとして供給される。選択信号ＢＰＳは１であり、更新値stepの符号位ＭＳＢ１は、ＡＮＤゲート３０１を経由しそのまま信号Ｍ１として出力する。
【００５４】
ステップ値Δ≧０の場合(更新方向が正)、信号Ｍ１が０であり、反転制御回路３０２は、モジュールサイズ（ブロックサイズ）ＭＤの値を反転し、ＭＢ＝−ＭＤを出力する。キャリー入力生成回路３０４は、信号Ｍ１を反転し、キャリーＣＩ＝１を生成する。データマスク３０３は、選択信号ＢＰＳが１であり、ステップ値stepが正でその符号位ＭＳＢ１が０であるので、３２ビット加算器３００の出力Ａｄｄ３０（＝Xn＋Δ）をそのまま信号ＭＡとして出力する。そして、３２bit加算器３０５により、モジュールサイズＭＢ＝−ＭＤと出力Ａｄｄ３０との加算値(Ｘｎ＋Δ−ＭＤ)が計算される。
【００５５】
セレクタ生成回路３０６では、選択信号ＢＰＳは１であり、信号Ｍ１は０であり、３２bit加算器３０５の出力Ａｄｄ３１（＝Ｘｎ＋Δ−ＭＤ)の符号位ＭＳＢ５により選択信号Ｓｅｌ３１を生成する。Ａｄｄ３１（＝Ｘｎ＋Δ−ＭＤ)が負でその符号位ＭＳＢ５が１の場合（ケース（１））、選択信号Ｓｅｌ３１が１になり、セレクタ回路３０７は、３２bit加算器３００の出力Ａｄｄ３０（＝Ｘｎ＋Δ）を選択する。また、Ａｄｄ３１（＝Ｘｎ＋Δ−ＭＤ)が正でその符号位ＭＳＢ５が０の場合（ケース（２））、選択信号Ｓｅｌ３１が０であり、セレクタ回路３０７は、３２bit加算器３０５の出力Ａｄｄ３１（＝Ｘｎ＋Δ−ＭＤ)を選択する。
【００５６】
セレクタ回路３０７の出力は、アドレスレジスタ１０に送られ、指定したアドレスレジスタ１２の更新が行われる。また、連続アドレッシングする場合は、セレクタ回路３０７の出力は、アドレスレジスタ１０のセレクタ回路１６を経由し、実効アドレス生成回路２０とアドレス更新回路３０に送られ、次のサイクルでアドレス更新とアドレス生成が行われる。
【００５７】
ステップ値Δ＜０の場合(更新方向が負)、信号Ｍ１が１である。反転制御回路３０２はブロックサイズＭＤの値をそのままＭＢ＝ＭＤとして出力する。キャリー入力生成生成３０４は、信号Ｍ１を反転しキャリーＣＩを０にする。選択信号ＢＰＳが１であり、ステップ値stepが負でそのＭＳＢ１が１であるので、３２ビット加算器３００の出力Ａｄｄ３０（＝Ｘｎ＋Δ）が負の場合（ケース（３））、データマスク３０３は、出力Ａｄｄ３０をそのまま出力ＭＡ（＝Ｘｎ＋Δ）として出力する。そして、３２bit加算器３０５が加算値(Ｘｎ＋Δ＋ＭＤ)を計算する。
【００５８】
データマスク３０３は、３２ビット加算器３００の出力Ａｄｄ３０（＝Ｘｎ＋Δ）が正の場合（ケース（４））、出力ＭＡの値が０を出力する。データマスクがラッチ回路の場合は、前の値を出力して出力を固定する。この結果、加算器３０５の動作は停止し、無駄に消費電力が発生することはない。
【００５９】
セレクタ生成回路３０６では、選択信号ＢＰＳは１であり、信号Ｍ１は１であるので、３２bit加算器３００の出力Ａｄｄ３０（＝Ｘｎ＋Δ）の符号位ＭＳＢ４に応じて、選択信号Ｓｅｌ３１を生成する。セレクタ回路３０７は、出力Ａｄｄ３０の符号位ＭＳＢ４が１の場合、選択信号Ｓｅｌ３１が０であり、３２bit加算器３０５の出力Ａｄｄ３１（＝Ｘｎ＋Δ＋ＭＤ）を選択する。出力Ａｄｄ３０の符号位ＭＳＢ４が０の場合、選択信号Ｓｅｌ３１が１であり、３２bit加算器３００の出力Ａｄｄ３０（Ｘｎ＋Δ）を選択する。
【００６０】
つまり、更新方向が正（ＭＳＢ＝０）の場合（ケース（１）（２））と、更新方向が負（ＭＳＢ１＝１）で且つＸｎ＋Δ＜０でモジュールブロック範囲外（ＭＳＢ４＝１）の場合（ケース（３））に、３２bit加算器３０５を動作させる。
一方、更新方向が負（ＭＳＢ１＝１）で且つＸｎ＋Δ≧０でモジュールブロック範囲内（ＭＳＢ４＝０）の場合（ケース（４））に、３２bit加算器３０５を動作させないことにより、消費電力を減らすことができる。
【００６１】
次に、選択信号ＢＰＳが０の場合、つまりサーキュラーアドレッシング命令を実行しない時(通常アドレス更新又はアドレスレジスタ演算の場合)、ＡＮＤゲート３０１とデータマスク３０３のそれぞれの出力Ｍ１，ＭＡが、０の値に固定される。または、これらの回路がラッチ回路の場合は、前の値に固定される。反転制御回路３０２は固定値ＭＢを出力し、キャリーＣＩが固定値になる。そして、３２bit加算器３０５は、入力信号ＭＡ、ＭＢ、ＣＩに変化が無いので、動作が停止し、その消費電力を低減できる。
【００６２】
選択信号ＢＰＳが０の場合、セレクタ信号生成回路３０６の選択出力Ｓｅｌ３１は１であり、３２bit加算器３００の出力Ａｄｄ３０（＝Ｘｎ＋Δ）を選択する。このようにして、通常アドレス更新又はアドレスレジスタ演算の場合、３２bit加算器３０５の動作を停止させ、３２bit加算器３００だけを動作させるので、消費電力を減らすことができる。
【００６３】
アドレスレジスタ演算命令を実行する場合、選択信号ＢＰＳは０であり、３２bit加算器３００だけを動作させる。その演算結果Ａｄｄ３０（＝Ｘｎ＋Δ）がセレクタ回路３０７を経由し、アドレスレジスタ１０に送られ、指定したアドレスレジスタ１２の更新が行われる。
【００６４】
図１１は、第２の実施の形態例におけるアドレス生成回路の変形例である。この変形例は、図７の場合と同様に、モジュールサイズＭＤが０に設定された場合のサーキュラーアドレッシング命令に対して、通常のアドレッシング命令を実行するための回路が加えられている。即ち、図１１のアドレス生成回路は、アドレス更新回路において、ＯＲ回路４２とＡＮＤ回路３２０を有する点で、図９のアドレス生成回路と異なる。
【００６５】
即ち、モジュールサイズＭＤが０に設定されると、ＯＲ回路４２の出力が０になり、ＡＮＤ回路３２０の出力も、選択信号ＢＰＳにかかわらず０になり、アドレス更新回路３０は、３２ビット加算器３０５が動作せず、通常のアドレッシング時の動作になる。
【００６６】
次に、第１及び第２のアドレス生成回路の実効アドレス生成回路について説明する。前述した通り、サーキュラーアドレッシングにおいて、アドレスレジスタ１０に格納されるアドレスはインデックス値Ｘｎ'であるので、メモリアクセス用の実効アドレスは、ベースポイント（トップアドレス）ＢＰとインデックス値Ｘｎ'とを加算した値にする必要がある。また、通常アドレッシングでは、アドレスレジスタに格納されるアドレスＸｎ'をそのまま実効アドレスとして使用することができる。
【００６７】
図１２は、実効アドレス生成回路の第１の例を示す図である。このアドレス生成回路では、サーキュラーアドレッシングする命令を実行する時、フリップフロップ５０３は図示しないクロックにより動作させず、フリップフロップ５０１，５０２にのみ、それぞれベースポイント値ＢＰとインデックスXn'とを保持させる。そして、加算器２１０がベースポイントＢＰとインデックスXn'の加算を行い、メモリをアクセスする実効アドレス（ＢＰ＋Xn'）を生成する。選択信号ＢＰＳが１であるので、セレクタ２１１が、加算器２１０の出力を選択する。
【００６８】
サーキュラーアドレッシング命令を実行しない時は、フリップフロップ５０１，５０２が動作せず、フリップフロップ５０３のみが実効アドレスXn'を保持する。そして、選択信号BPSは0であり、更新値Xn'の値はそのまま実効アドレスとしてセレクタ回路２１１から出力される。
【００６９】
図１２の回路では、サーキュラーアドレッシングする命令を実行するときのみ、加算器２１０が動作するので、サーキュラーアドレッシングを実効しない通常アドレス更新やアドレスレジスタ演算時には、加算器２１０が停止し、消費電力を節約する。また、図１２（Ａ）に示される通り、３２ビットのベースポイントＢＰとインデックスXn'とを単純に加算演算して実効アドレスを生成する。従って、ブロックサイズＭＤとベースポイントBPとインデックスXn'の値は、メモリ空間の範囲内で任意の値に設定することができる。
【００７０】
図１３は、実効アドレス生成回路の第２の例を示す図である。図１３におけるアドレス生成回路では、ブロックサイズMDの値は３２ビットの下位ビットI〜ビット0に決められる。そして、ブロックサイズMDの上位ビット３１〜ビット(I+1)は０にする。また、インデックスXn'の値は下位ビット０〜(MD−1)間に値を取る。そして、ベースポイントＢＰの値は、３２ビットの下位ビットI〜ビット0を０にし、上位ビット３１〜ビット(I+1)は任意の値を取る。
【００７１】
図１３（Ａ）に示される通り、上記の制約を課すことにより、ベースポイントＢＰとインデックスXn'との加算演算は、単純な論理和（ＯＲ）演算にすることができる。従って、図１３（Ｂ）に示される通り、図１２の加算器２１０がＯＲ回路６０４に置き換えられる。ＯＲ回路６０４は、加算器に比較して回路規模と消費電力が小さく、動作も高速である。
【００７２】
図１３の実効アドレス生成回路では、サーキュラーアドレッシングする命令を実行する時、フリップフロップ６０３を動作させず、フリップフロップ６０１，６０２でデータを保持する。そして、ＯＲ回路６０４が、ベースポイントＢＰとインデックスXn'の論理和を求め、メモリをアクセスする実効アドレス（ＢＰ＋Xn'）を生成する。サーキュラーアドレッシング命令を実行しない時は、フリップフロップ６０３のみがアドレスXn'を保持し、そのアドレスXn'の値はそのまま実効アドレスとして出力される。
【００７３】
図１４は、実効アドレス生成回路の第３の例を示す回路図である。図１４の実効アドレス生成回路でも、ブロックサイズMDとベースポイントＢＰの値は図６と同じように決められる。従って、ＯＲ回路７０３によりベースポイントＢＰとインデックスXn'の論理和演算が行われる。そして、この例では、図１３の例に比較して、フリップフロップの数が１ビット当たり７０１，７０２の２個、つまり合計で３２個に減らされている。フリップフロップ７０１には、０またはベースポイントＢＰが保持される。０またはベースポイントＢＰの選択は、図示しない選択回路が選択信号ＢＰＳに応じて行う。
【００７４】
図１４の場合、サーキュラーアドレッシングする命令を実行する時、フリップフロップ７０１にベースポイントＢＰが保持され、フリップフロップ７０２にインデックスXn'が保持される。そして、ＯＲ回路７０３により、ベースポイントＢＰとインデックスXn'の論理和が生成され、メモリ４０をアクセスする実効アドレスが生成される。サーキュラーアドレッシング命令を実行しない時は、フリップフロップ７０１に０が保持され、ＯＲ回路７０３は、アドレスXn'の値と０との論理和を生成し、そのアドレスXn'が実効アドレスとしてそのまま生成される。
【００７５】
図１５は、実効アドレス生成回路の第４の例を示す回路図である。この例では、ＯＲ回路の前段のフリップフロップは省略されている。そして、ＯＲ回路８０１の後段に論理和の値を保持するフリップフロップ８０２が設けられる。図１５の例においても、ブロックサイズMDとベースポイントＢＰの値は図６と同じように決められる。サーキュラーアドレッシングする命令を実行する時、ベースポイントBPの値がＯＲ回路８０１に入力され、ベースポイントＢＰとインデックスXn'の論理和により、メモリをアクセスする実効アドレスが生成される。サーキュラーアドレッシング命令を実行しない時、０がＯＲ回路８０１に入力され、アドレスXn'の値は０との論理和演算を経由して、そのまま実効アドレスとして生成される。図１５の回路構成が、最も回路規模が小さくなる。
【００７６】
図１２〜１５の４つの実効アドレス生成回路は、図５や９で示したアドレス生成回路の実効アドレス生成回路として、適宜組み合わせられることができる。特に、ＯＲ回路を利用する実効アドレス生成回路の場合は、大幅に消費電力を節約することができる。
【００７７】
上記第１実施の形態例では、サーキュラーアドレス更新回路と通常アドレス更新回路とを並列に動作させるので、高速なサーキュラーアドレッシング動作に適している。また、第２実施の形態例では、サーキュラーアドレッシングを使う命令があっても、一部のケース（ケース（４））でサーキュラーアドレス更新回路を動作させないので、非常に低消費電力のアプリケーションに適している。
【００７８】
以上の実施の形態をまとめると、以下の通りである。
【００７９】
１．原アドレスにステップ値を加算して更新されたアドレスを生成するアドレス更新回路を有するアドレス生成回路において、
前記アドレス更新回路は、
前記原アドレスとステップ値を加算する第１のアドレス更新回路と、
サーキュラーアドレッシング命令を実行する場合に、前記原アドレスとステップ値が供給され、当該原アドレスとステップ値及びサーキュラーモジュールサイズとを加算する第２のアドレス更新回路と、
前記サーキュラーアドレッシング命令を実行しない場合に、前記第１のアドレス更新回路の出力を前記更新されたアドレスとして出力し、前記サーキュラーアドレッシング命令を実行する場合に、前記第１または第２のアドレス更新回路の出力を前記更新されたアドレスとして出力するセレクト回路とをすることを特徴とするアドレス生成回路。
【００８０】
２．上記１において、
サーキュラーアドレッシング命令を実行する場合に、
前記第２のアドレス更新回路は、前記ステップ値Δが正の場合に、前記原アドレスＸｎとステップ値ΔとサーキュラーモジュールサイズＭＤから加算値Ｘｎ＋Δ−ＭＤを演算し、当該第２のアドレス更新回路の加算値Ｘｎ＋Δ−ＭＤの負または正に応じて、第１または第２のアドレス更新回路の加算値がそれぞれ前記セレクト回路により出力され、
前記第２のアドレス更新回路は、前記ステップ値Δが負の場合に、加算値Ｘｎ＋Δ＋ＭＤを演算し、当該第１のアドレス更新回路の加算値Ｘｎ＋Δの負または正に応じて、第２または第１のアドレス更新回路の加算値がそれぞれ前記セレクト回路により出力されることを特徴とするアドレス生成回路。
【００８１】
３．上記１において、
前記サーキュラーアドレッシング命令を実行しない場合は、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【００８２】
４．上記３において、
前記サーキュラーアドレッシング命令を実行しない場合は、前記第２のアドレス更新回路に前記原アドレスとステップ値とが供給されないまたは所定の値に固定され、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【００８３】
５．原アドレスにステップ値を加算して更新されたアドレスを生成するアドレス更新回路を有するアドレス生成回路において、
前記アドレス更新回路は、
前記原アドレスとステップ値を加算する第１のアドレス更新回路と、
サーキュラーアドレッシング命令を実行する場合に、前記第１のアドレス更新回路の加算値とサーキュラーモジュールサイズとを加算する第２のアドレス更新回路と、
前記サーキュラーアドレッシング命令を実行しない場合に、前記第１のアドレス更新回路の出力を前記更新されたアドレスとして出力し、前記サーキュラーアドレッシング命令を実行する場合に、前記第１または第２のアドレス更新回路の出力を前記更新されたアドレスとして出力するセレクト回路とをすることを特徴とするアドレス生成回路。
【００８４】
６．上記５において、
サーキュラーアドレッシング命令を実行する場合に、
前記第２のアドレス更新回路は、前記ステップ値Δが正の場合に、前記第１のアドレス更新回路の加算値Ｘｎ＋Δ（Ｘｎは前記原アドレス）とサーキュラーモジュールサイズＭＤから加算値Ｘｎ＋Δ−ＭＤを演算し、当該第２のアドレス更新回路の加算値Ｘｎ＋Δ−ＭＤの負または正に応じて、第１または第２のアドレス更新回路の加算値がそれぞれ前記セレクト回路により出力され、
前記第２のアドレス更新回路は、前記ステップ値Δが負の場合に、加算値Ｘｎ＋Δ＋ＭＤを演算し、当該第１のアドレス更新回路の加算値Ｘｎ＋Δの負または正に応じて、第２または第１のアドレス更新回路の加算値がそれぞれ前記セレクト回路により出力されることを特徴とするアドレス生成回路。
【００８５】
７．上記４において、
前記サーキュラーアドレッシング命令を実行しない場合は、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【００８６】
８．上記７において、
前記サーキュラーアドレッシング命令を実行する場合であって、前記ステップ値が負で前記第１のアドレス更新回路の加算値が正の場合、前記第２のアドレス更新回路の動作が停止することを特徴とするアドレス生成回路。
【００８７】
９．上記８において、
前記第２のアドレス更新回路に前記第１のアドレス更新回路の加算値が供給されないまたは所定の値に固定されて、前記第２のアドレス更新回路の動作が停止することを特徴とるアドレス生成回路。
【００８８】
１０．上記１または５において、
更に、前記アドレスレジスタに格納された原アドレス、または前記更新されたアドレスから、メモリをアクセスする実効アドレスを生成する実効アドレス生成回路を有し、
当該実効アドレス生成回路は、前記サーキュラーアドレッシング命令を実行しない場合は、前記原アドレスまたは更新されたアドレスが実効アドレスとして出力され、前記サーキュラーアドレッシング命令を実行する場合は、前記原アドレスまたは更新されたアドレスのアドレスインデックスにベースポイントが加算された値が実効アドレスとして出力されることを特徴とするアドレス生成回路。
【００８９】
１１．上記１０において、
前記実効アドレス生成回路は、前記サーキュラーアドレッシング命令を実行する場合に、前記原アドレスまたは更新されたアドレスのアドレスインデックスと、前記ベースポイントとの論理和を生成する論理和回路を有することを特徴とするアドレス生成回路。
【００９０】
以上、本発明の保護範囲は、上記の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【００９１】
【発明の効果】
以上本発明によれば、ＤＳＰなどのアドレス生成回路において、サーキュラーアドレッシング機能と通常アドレッシング機能、或いはアドレスレジスタ演算機能、の回路を共用化することにより、アドレス生成回路の回路規模を小さくすることができる。
【００９２】
また、サーキュラーアドレッシング機能を使わない時、サーキュラーアドレス更新回路及び実効アドレス生成回路の一部の動作を停止させるようにしたので、アドレス生成回路の低消費電力化を実現することができる。
【図面の簡単な説明】
【図１】従来のアドレス生成回路の概略構成図である。
【図２】サーキュラーアドレッシングを説明するための図である。
【図３】サーキュラーアドレッシングのアルゴリズムを示す図表である。
【図４】本発明のアドレス生成回路の概略図である。
【図５】第１の実施の形態例におけるアドレス生成回路の詳細図である。
【図６】図５のアドレス生成回路の動作を示す図表である。
【図７】第１の実施の形態例におけるアドレス生成回路の変形例を示す図である。
【図８】第２の実施の形態例におけるアドレス更新回路の概略図である。
【図９】第２の実施の形態例におけるアドレス生成回路を示す図である。
【図１０】第２の実施の形態例の動作を示す図表である。
【図１１】第２の実施の形態例におけるアドレス生成回路の変形例を示す図である。
【図１２】実効アドレス生成回路の第１の例を示す図である。
【図１３】実効アドレス生成回路の第２の例を示す図である。
【図１４】実効アドレス生成回路の第３の例を示す図である。
【図１５】実効アドレス生成回路の第４の例を示す図である。
【符号の説明】
１０      アドレスレジスタ
２０      実効アドレス生成回路
３０      アドレス更新回路
３５      マスク回路
３６      第２のアドレス更新回路、サーキュラーアドレス更新回路
３７      第１のアドレス更新回路、通常アドレス更新回路
【図１】
0004339468.tif 000002
【図２】
0004339468.tif 000003
【図３】
0004339468.tif 000004
【図４】
0004339468.tif 000005
【図５】
0004339468.tif 000006
【図６】
0004339468.tif 000007
【図７】
0004339468.tif 000008
【図８】
0004339468.tif 000009
【図９】
0004339468.tif 000010
【図１０】
0004339468.tif 000011
【図１１】
0004339468.tif 000012
【図１２】
0004339468.tif 000013
【図１３】
0004339468.tif 000014
【図１４】
0004339468.tif 000015
【図１５】
0004339468.tif 000016