(57)【特許請求の範囲】
【請求項１】
多段パイプライン機構を有するプロセッサにおけるブロックリピートアドレッシング用のアドレスを生成するためのアドレス生成回路であって、
スタートアドレスを記憶する第１の記憶回路と、
上記スタートアドレスと同じ又は上記スタートアドレスよりも大きなエンドアドレスを記憶する第２の記憶回路と、
インストラクションアドレスを保持するプログラムカウンタと、
ループエンド制御信号が非活性状態のときにクロック信号に応答してインクリメントされたアドレスを上記プログラムカウンタに供給し、上記ループエンド制御信号が活性状態のときに上記第１の記憶回路から出力される上記スタートアドレスを上記プログラムカウンタに供給する選択回路と、
上記プログラムカウンタと上記第２の記憶回路に接続され、上記インストラクションアドレスと上記エンドアドレスとが等しいときに一致信号を活性化する比較器と、
繰り返し値を記憶し、繰り返し値制御信号の活性化に応答して上記繰り返し値がデクリメントされる第３の記憶回路と、
上記比較器からの一致信号と上記第３の記憶回路からの繰り返し値とを入力し、上記一致信号に応答して上記ループエンド制御信号を上記選択回路に供給し、上記一致信号に応答して上記繰り返し値制御信号を上記第３の記憶回路に供給する制御回路と、
を有し、
上記制御回路は、上記ループエンド制御信号の活性化からプロセッサのパイプラインの段数または深さに対応した所定の数の周期だけ遅らせて、上記繰り返し値制御信号を活性化する、
アドレス生成回路。
【請求項２】
上記制御回路は、新たな上記一致信号に応答した上記ループエンド制御信号の活性化処理を、直前の上記一致信号に応答した上記繰り返し値制御信号の活性化処理の後に行なう、
請求項１に記載のアドレス生成回路。
【請求項３】
上記制御回路は上記クロック信号の所定の数の周期における上記所定の数に対応した段数の直列接続された複数のフリップフロップを有し、
初段のフリップフロップの入力端子に上記ループエンド制御信号が供給され、
最終段のフリップフロップの出力端子から上記繰り返し値制御信号が供給され、
上記複数のフリップフロップのクリア端子に上記プロセッサの割り込みを示す信号が供給される、
請求項１または２に記載のアドレス生成回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はメモリ上の所定の記憶領域に対するアドレスを発生するアドレス生成回路に関する。
特に本発明は、ブロックリピートアドレッシング用アドレス回路に関する。
【０００２】
【従来の技術】
ディジタルシグナルプロセッサ（ＤＳＰ）等により、例えばサンプリングした信号についての相関の計算、あるいは、フィルタリング演算を行う場合、所定の記憶領域に記憶されたデータを何度もアクセスする必要が生じることがある。このようなデータが記憶されている記憶領域は、例えばサーキュラブロック（円環ブロック）と呼ばれる。
サーキュラブロックの領域は、サーキュラブロックの先頭の（最も数値の小さい）アドレス（トップアドレス）と、サーキュラブロックの容量を示す数値（ブロックサイズ）で表される。ブロックサイズから１減じた数値にトップアドレスを加算すると、サーキュラブロックの末尾の（最も数値の大きい）アドレス（ボトムアドレス）が得られる。
サーキュラブロックに対するアクセスはステップ値毎に行われ、現在のアドレスに正または負の値をとるステップ値を加算した値が次にアクセスされるアドレスとなる。すなわち、次のアクセスの対象となるアドレス（ポインタ）は、現在のアドレスにステップ値を加算することにより得られる。
【０００３】
以下に、サーキュラブロックに対するアクセスであるサーキュラアドレッシングにおける従来のアドレス生成について説明する。
まず、ステップが正の数であり、トップアドレスからボトムアドレスの方向にアクセスする場合について説明する。最初に、現在のアドレスにステップを加算して第１の数値を求める。この第１の数値が次のアドレスとなるが、この第１の数値がボトムアドレスよりも大きいか否かを判定するために、第１の数値からボトムアドレスを減算する。この減算結果が負でない場合には、第１の数値からブロックサイズを減算して第２の数値を求め、この第２の数値をサーキュラアドレッシングにおける次のアドレスとする。一方、第１の数値からボトムアドレスを減算した結果が負である場合には、第１の数値をサーキュラアドレッシングにおける次のアドレスとする。
【０００４】
次に、ステップが負の数であり、ボトムアドレスからトップアドレスの方向にアクセスする場合について説明する。ステップが正の数である場合と同様に、最初に、現在のアドレスにステップを加算して第１の数値を求める。この第１の数値が次のアドレスとなるが、この第１の数値がトップアドレスよりも小さいか否かを判定するために、第１の数値からトップアドレスを減算する。この減算結果が負の場合には、第１の数値にブロックサイズを加算して第２の数値を求め、この第２の数値をサーキュラアドレッシングにおける次のアドレスとする。一方、第１の数値からトップアドレスを減算した結果が０または正である場合には、第１の数値をサーキュラアドレッシングにおける次のアドレスとする。
以上に述べた手法により、トップアドレスからボトムアドレスの方向、またはボトムアドレスからトップアドレスの方向へのサーキュラアドレッシングにおけるアドレスが生成される。
【０００５】
一方、所定の記憶領域に記憶されたプログラムを所定の回数だけ繰り返し実行する必要がある場合がある。このような所定の記憶領域へのアクセス（ブロックリピートアクセス）を行う場合には、ブロックリピートアドレッシングと呼ばれるアドレッシング方法が採られることがある。以下、図１１を参照してブロックリピートアドレッシングについて説明する。
図１１はブロックリピートアドレッシングにおける従来のアドレス生成回路９の構成を示す図である。
図１１に示すように、アドレス生成回路９は、プログラムカウンタ（ＰＣ）９００、比較回路９０２，９１６、レジスタ（ＥＮＤ）９０４、セレクタ９０６、レジスタ（ＳＴＡＲＴ）９０８、インクリメント回路９１０、デクリメント回路９１２、およびレジスタ（ＢＲＣＲ）９１４から構成される。
まず、ブロックリピートを行う前に、レジスタ９０４に繰り返し実行するプログラムのボトムアドレス（末尾アドレス）が設定され、レジスタ９０８に当該プログラムのトップアドレス（先頭アドレス）が設定され、レジスタ９１４に繰り返し回数が初期値として設定される。
【０００６】
プロックリピートアクセスが開始されると、動作周期毎にプログラムカウンタ９００からアドレスが発生される。このアドレスはメモリ（図示せず）とインクリメント回路９１０に供給されると共に、比較回路９０２にも出力される。インクリメント回路９１０は、入力したアドレスに１を加算（インクリメント）してセレクタ９０６に出力する。
比較回路９０２は、プログラムカウンタ９００が出力するアドレスとレジスタ９０４に記憶されているボトムアドレスとを比較し、これらの一致を検出する。比較回路９０２がプログラムカウンタ９００のアドレスとボトムアドレスとの一致を検出しない場合には、信号ＰＣ＝ＥＮＤは不活性化状態（ローレベル）であり、セレクタ９０６は入力Ｉ０側を選択してプログラムカウンタ９００に出力する。すなわち、動作周期におけるアドレスとボトムアドレスとが一致しない場合には、その動作周期のアドレスがインクリメントされ、次の動作周期におけるアドレスとしてプログラムカウンタ９００から出力される。
【０００７】
比較回路９０２がプログラムカウンタ９００が出力するアドレスとボトムアドレスとの一致を検出した場合には信号ＰＣ＝ＥＮＤが活性化状態（ハイレベル）となり、セレクタ９０６は入力Ｉ１側を選択してプログラムカウンタ９００に出力する。すなわち、アドレスがボトムアドレスに達した場合には、次の動作周期におけるアドレスとしてトップアドレスがプログラムカウンタ９００から出力される。
更に、信号ＰＣ＝ＥＮＤが活性化状態になると、レジスタ９１４は繰り返し回数をデクリメント回路９１２により１つ減算（デクリメント）して、そのデクリメントした値を記憶すると共に比較回路９１６に出力する。つまり、トップアドレスからボトムアドレスの方向にブロックリピートプログラムの全領域を実行するアドレスの一連の生成が一回終了する毎に、レジスタ９１４に記憶されている繰り返し回数がデクリメントされることになる。
【０００８】
以上に述べた動作が所定の回数繰り返されると、レジスタ９１４の値が０になる。比較回路９１６は、レジスタ９１４に記憶されている繰り返し回数と０とを比較して、これらが一致した場合には禁止信号を活性化状態（ハイレベル）とする。禁止信号が活性化されると、アドレス生成回路９はブロックリピートアクセス動作を終了する。
【０００９】
【発明が解決しようとする課題】
サーキュラアドレッシングにおける従来のアドレス生成は、上述したように、３つの演算処理（加算または減算）により次のアドレスを生成しているので、そのアドレス生成回路は３つの演算器を必要とする。具体的には、従来のアドレス生成回路は３つの加算器を必要とする。加算器は一般的にその回路規模が比較的大きなハードウエアであるので、この回路規模の大きな加算器を３つ含む従来のアドレス生成回路は半導体チップに占める面積が大きいという問題がある。
また、アドレス生成の計算のために、ステップとトップアドレスとボトムアドレスとを記憶しておく必要があるという問題がある。
【００１０】
また、従来のブロックリピートアドレッシングを行うアドレス生成回路を、他段パイプライン機構を有する演算処理装置（ＣＰＵ）に用いた場合、パイプライン機構の段数によってブロックリピートのサイズに制限を加える必要があるという問題がある。
すなわち、ＣＰＵがブロックリピートアドレッシングによりパイプライン機構にボトムアドレスの命令を取り込んだ時点でアドレス生成回路の繰り返し回数のデクリメントが行われるので、この時点でＣＰＵに対して割り込みが発行されると、割り込み処理から戻ったときに、実行されていない命令（ボトムアドレスの命令）があるのにも拘らず、繰り返し回数を記憶しているレジスタの内容は既にデクリメントされており、前回の一連のプログラムの実行が完了したことを示していることになる。従って、ボトムアドレスからパイプラインの段数分前の命令に対しては割り込みを禁止する必要があり、これに伴ってブロックリピートのサイズ（ボトムアドレスとトップアドレスの差に１を加えた数）をパイプラインの段数に１を加えた数値以上とするような制限が必要になる。
【００１１】
本発明の目的は、以上に述べた従来技術の問題点のうち、ブロックリピートアドレッシング用アドレス回路の問題を克服して、ＣＰＵのパイプライン機構の段数によりブロックリピートのサイズを制限する必要、およびボトムアドレス付近の命令に対する割り込みの禁止などのプログラム作成上の制限が生じないブロックリピートアドレッシング用アドレス生成回路を提供することにある。
【００１２】
【課題を解決するための手段】
本発明によれば、多段パイプライン機構を有するプロセッサにおけるブロックリピートアドレッシング用のアドレスを生成するためのアドレス生成回路であって、
スタートアドレスを記憶する第１の記憶回路と、上記スタートアドレスと同じ又は上記スタートアドレスよりも大きなエンドアドレスを記憶する第２の記憶回路と、インストラクションアドレスを保持するプログラムカウンタと、ループエンド制御信号が非活性状態のときにクロック信号に応答してインクリメントされたアドレスを上記プログラムカウンタに供給し、上記ループエンド制御信号が活性状態のときに上記第１の記憶回路から出力される上記スタートアドレスを上記プログラムカウンタに供給する選択回路と、上記プログラムカウンタと上記第２の記憶回路に接続され、上記インストラクションアドレスと上記エンドアドレスとが等しいときに一致信号を活性化する比較器と、繰り返し値を記憶し、繰り返し値制御信号の活性化に応答して上記繰り返し値がデクリメントされる第３の記憶回路と、上記比較器からの一致信号と上記第３の記憶回路からの繰り返し値とを入力し、上記一致信号に応答して上記ループエンド制御信号を上記選択回路に供給し、上記一致信号に応答して上記繰り返し値制御信号を上記第３の記憶回路に供給する制御回路とを有し、上記制御回路は、上記ループエンド制御信号の活性化からプロセッサのパイプラインの段数または深さに対応した所定の数の周期だけ遅らせて、上記繰り返し値制御信号を活性化する、アドレス生成回路が提供される。
【００１３】
好ましくは、上記制御回路は、新たな上記一致信号に応答した上記ループエンド制御信号の活性化処理を、直前の上記一致信号に応答した上記繰り返し値制御信号の活性化処理の後に行なう。
また好ましくは、上記制御回路は、上記クロック信号の所定の数の周期における上記所定の数に対応した段数の直列接続された複数のフリップフロップを有し、初段のフリップフロップの入力端子に上記ループエンド制御信号が供給され、最終段のフリップフロップの出力端子から上記繰り返し値制御信号が供給され、上記複数のフリップフロップのクリア端子に上記プロセッサの割り込みを示す信号が供給される。
【００１４】
【実施例】
本発明に係わるサーキュラアドレッシングにおけるアドレス生成の概略を図９を参照して説明する。従来のアドレス生成では直接的に次のアドレスを求めていたが、本発明では相対的に次のアドレスを求める。尚、以下の説明において、アドレスおよびブロックサイズは３２ビット構成の２進数であるとする。図９において、ＡＲｎは現在のアドレス、ＢＫはブロックサイズ、ＥＢ１はサーキュラブロックのトップアドレス、ＥＢ２はサーキュラブロックのボトムアドレス、Ｉｎｄｅｘは現在のアドレスにおけるインデックスであり、Ｉｎｄｅｘ’は次のアドレスにおけるインデックスであり、ＡＲｎ’はサーキュラアドレッシングにおける次のアドレスであり、１４はインデックス生成回路である。
【００１５】
（１）  ブロックサイズＢＫにおいて１が存在する最上位のビットを検出する。図９では、ビットＮを１が存在する最上位のビットとする。
（２）  次に、現在のアドレスＡＲｎのビット３１〜ビット（Ｎ＋１）の値とビットＮ〜ビット０が全て０である値からトップアドレスＥＢ１のビット３１〜ビット０の値を求め、現在のアドレスＡＲｎのビット３１〜ビット（Ｎ＋１）の値とブロックサイズＢＫのビットＮ〜ビット０の値からボトムアドレスＥＢ２のビット３１〜ビット０の値を求める。
（３）  次に、サーキュラアドレッシングにおいてステップ値毎にインクリメントまたはデクリメントされるインデックスＩｎｄｅｘを求める。ビット３１〜ビット（Ｎ＋１）が全て０の値と現在のアドレスＡＲｎのビットＮ〜ビット０の値からインデックスＩｎｄｅｘのビット３１〜ビット０の値が求められる。
（４）  次に、インデックスＩｎｄｅｘにステップ値を加算して新たなインデックスＩｎｄｅｘ’を求める。ここで、インデックスＩｎｄｅｘにステップ値を加算した値がブロックサイズＢＫ以上となった場合にはその加算値からブロックサイズＢＫを減算した値を新たなインデックスＩｎｄｅｘ’とし、上記加算値が負となった場合にはその加算値にブロックサイズＢＫを加算した値を新たなインデックスＩｎｄｅｘ’とする。
（５）  次に、アドレスＡＲｎのビット３１〜ビット（Ｎ＋１）の値と新たなインデックスＩｎｄｅｘ’の値（ビットＮ〜ビット０）から新たなアドレスＡＲｎ’のビット３１〜ビット０の値を求める。
以下、上記（３）  〜（５）  のステップを繰り返すことにより、サーキュラアドレッシングにおけるアドレス生成が実現される。尚、上記Ｉｎｄｅｘ’はインデックス生成ロジック１４にて生成される。
【００１６】
次に、図１０を参照して、サーキュラアドレッシングにおけるインデックス生成の詳細を説明する。
図１０はインデックス生成処理のアルゴリズムを示すフローチャートである。図１０において、ｉは作業用の変数を示し、ＢＫｍａｓｋ［ａ：ｂ］は作業用の数値ＢＫｍａｓｋのビットａからビットｂまでの値を示し、ＢＫｍａｓｋ［ｃ］はＢＫｍａｓｋのビットｃの値を示し、ＢＫ［ａ：ｂ］はブロックサイズのビットａからビットｂまでの値を示し、ＢＫ［ｃ］はブロックサイズのビットｃの値を示し、ＡＲｎ［ａ：ｂ］はアドレス（ポインタ）のビットａからビットｂまでの値を示し、Ｉｎｄｅｘはインデックスの値を示し、Ｓｔｅｐはインデックスに増減される数値を示し、Ｉｎｄｅｘ’はインデックス生成処理によって新たに生成されたインデックスを示す。
【００１７】
処理１０１（Ｓ１０１）において、ｉに３１が代入される。
処理１０２（Ｓ１０２）において、ｉの値が負であるか否かが判断され、ｉの値が０以上である場合にはＳ５０３の処理に進み、ｉの値が負の場合にはＳ１０５の処理に進む。
処理１０３（Ｓ１０３）において、ＢＫ［ｉ］の値とＢＫｍａｓｋ［ｉ＋１］の値との論理和が算出され、その結果がＢＫｍａｓｋ［ｉ］に代入される。ここで、ｉ＝３１のときにはＢＫ［３１］がＢＫｍａｓｋ［３１］に代入される。
処理１０４（Ｓ１０４）においては、ｉから１が減算（ｉがデクリメント）される。
この一連の処理によりブロックサイズＢＫにおいて１が存在する最上位のビットが検出され、図９に示すようにブロックサイズＢＫのビットＮがその最上位のビットである場合には、ＢＫｍａｓｋのビット３１〜ビットＮ＋１の値は全て０となり、ビットＮ〜ビット０の値は全て１となる。
【００１８】
処理１０５（Ｓ１０５）において、ＡＲｎ［３１：０］の値とＢＫｍａｓｋ［３１：０］の値との論理積が算出され、その結果がＩｎｄｅｘに代入される。ここで、図９の場合には、Ｉｎｄｅｘのビット３１〜ビット（Ｎ＋１）の値は全て０となり、Ｉｎｄｅｘ［Ｎ：０］はＡＲｎ［Ｎ：０］と等しい値となる。
処理１０６（Ｓ１０６）において、Ｓｔｅｐの値が負であるか否かが判断されて、Ｓｔｅｐの値が負である、すなわち、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングが行われる場合にはＳ１０７の処理に進み、Ｓｔｅｐの値が０以上である、すなわち、トップアドレスからボトムアドレスの方向にサーキュラアドレッシングが行われる場合にはＳ１１０の処理に進む。
【００１９】
処理１０７（Ｓ１０７）において、Ｉｎｄｅｘの値とＳｔｅｐの値との和が負であるか否かが判断されて、Ｉｎｄｅｘの値とＳｔｅｐの値との和が負である場合、すなわち、次のアドレスの値がトップアドレスとボトムアドレスの範囲外にある場合にはＳ１０８の処理に進み、Ｉｎｄｅｘの値とＳｔｅｐの値との和が０以上である場合、すなわち、次のアドレスの値がトップアドレスとボトムアドレスの範囲内にある場合にはＳ１０９の処理に進む。
処理１０８（Ｓ１０８）において、Ｉｎｄｅｘの値とＳｔｅｐの値とＢＫの値とが加算されて、新たなＩｎｄｅｘ’が生成される。
処理１０９（Ｓ１０９）において、Ｉｎｄｅｘの値とＳｔｅｐの値とが加算されて、新たなＩｎｄｅｘ’が生成される。
【００２０】
処理１１０（Ｓ１１０）において、Ｉｎｄｅｘの値とＳｔｅｐとの値の和と、ＢＫの値との減算が行われて、その演算結果が負であるか否かが判断される。上記演算結果が負である、すなわち、次のアドレスの値がトップアドレスとボトムアドレスの範囲内にある場合にはＳ１１１の処理に進み、上記演算結果が０以上である、すなわち、次のアドレスの値がトップアドレスとボトムアドレスの範囲外にある場合にはＳ１１２の処理に進む。
処理１１１（Ｓ１１１）において、Ｉｎｄｅｘの値とＳｔｅｐの値とが加算されて、新たなＩｎｄｅｘ’が生成される。
処理１１２（Ｓ１１２）において、Ｉｎｄｅｘの値とＳｔｅｐとの値の和と、ＢＫの値との減算が行われて、新たなＩｎｄｅｘ’が生成される。
【００２１】
以上の一連の処理により新たなインデックスＩｎｄｅｘ’が生成され、図９に示すように、アドレスＡＲｎのビット３１〜ビット（Ｎ＋１）の値と新たなインデックスＩｎｄｅｘ’のビットＮ〜ビット０の値とから、新たなアドレスＡＲｎ’のビット３１〜ビット０の値が生成される。
ＢＫｍａｓｋが生成された後のインデックスは、Ｓ１０５以降の処理を実行することにより生成される。
【００２２】
以下、図１を参照して本発明のサーキュラアドレッシング用アドレス生成回路３０を説明する。尚、本実施例の各演算器のビット数は３２ビット構成であるとする。尚、負の数は２の方数形式で表されるものとする。
図１は本発明の第１実施例のアドレス生成回路３０の構成を示す図である。加減制御回路３００は、加減制御信号（Ａ／Ｓ）に従い、第１の動作モードまたは第２の動作モードとなる。加減制御信号（Ａ／Ｓ）が加算命令である第１の動作モードにおいては、入力端子Ｓｔｅｐに入力されるステップをそのまま加算回路３０２の入力端子Ａに出力する。このとき、加算回路３０２の入力端子Ｃにキャリーは出力されず、その値は０である。一方、加減制御信号（Ａ／Ｓ）が減算命令である第２の動作モードにおいては、入力端子Ｓｔｅｐに入力されるステップの各ビットを反転した数値を算出して加算回路３０２の入力端子Ａに出力すると共に、加算回路３０２の入力端子Ｃにキャリー（１）を出力する。尚、加算回路３０２の入力端子Ａおよび入力端子Ｃに出力される２つの信号がステップ値を構成する。
以上の説明から明らかなように、加減制御信号（Ａ／Ｓ）によって加減制御回路３００で入力端子Ｓｔｅｐに入力されるステップの符合を変換する場合には、２の補数形式で変換されることになる。
【００２３】
加減制御回路３０６は、加算回路３０２の入力端子Ａに出力されるステップ値の最上位ビット（ＭＳＢ）の値に従い、第１の動作モードまたは第２の動作モードとなる。上記ＭＳＢが０、すなわちステップ値が正であり、サーキュラブロックのトップアドレスからボトムアドレスの方向にサーキュラアドレッシングを行う場合には第２の動作モードとなり、入力端子ＢＫから入力されるブロックサイズの各ビットを反転した数値を算出して加算回路３１０の入力端子Ｂに出力すると共に、加算回路３１０の入力端子Ｃにキャリー（１）を出力する。一方、上記ＭＳＢが１、すなわちステップ値が負であり、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングを行う場合には第１の動作モードとなり、入力端子ＢＫから入力されるブロックサイズをそのまま加算回路３１０の入力端子Ｂに出力する。尚、このとき加算回路３１０の入力端子Ｃにキャリーは出力されず、その値は０である。
【００２４】
ビット分離回路３０４は、ＢＫｍａｓｋに基づいて入力端子ＡＲｎから入力されるアドレス（ポインタ）を上位側のビット部分と下位側のビット部分とに分離し、それぞれビット多重回路３１４と加算回路３０２の入力端子Ｂに出力する。尚、ＢＫｍａｓｋは図１０に示す処理１０１〜処理１０４で生成される数値であり、ビット３１〜ビット（Ｎ＋１）の値は全て０であり、ビットＮ〜ビット０の値は全て１である。加算回路３０２の入力端子Ｂに出力されるデータのビット３１〜ビット（Ｎ＋１）の値は全て０であり、ビットＮ〜ビット０の値はビット分離回路３０４に入力するアドレスのビットＮ〜ビット０の値と同じであり、この加算回路３０２の入力端子Ｂに出力されるデータは実質的には図１０にて説明したＩｎｄｅｘ（インデックス）である。一方、ビット多重回路３１４に出力されるデータのビット３１〜ビット（Ｎ＋１）の値はビット分離回路３０４に入力するアドレスのビット３１〜ビット（Ｎ＋１）の値と同じである。
【００２５】
加算回路３０２は、入力端子Ａ，Ｂ，Ｃに入力されたインデックスとステップ値との全加算演算を行い、その全加算演算結果（信号ＡＤＤ２）を加算回路３１０の入力端子Ａとマルチプレクサ３１２の入力端子Ｉ１に出力し、キャリーアウト信号（Ｃａｒｒｙ２）をキャリーチェック回路３０８に出力する。
加算回路３１０は、入力端子Ａ，Ｂ，Ｃにそれぞれ入力された信号ＡＤＤ２、各ビットが反転されたブロックサイズまたはブロックサイズ、およびキャリー信号（１または０）について全加算演算を行い、その全加算演算結果（信号ＡＤＤ３）をマルチプレクサ３１２の入力端子Ｉ２に出力し、キャリーアウト信号（Ｃａｒｒｙ３）をキャリーチェック回路３０８に出力する。
【００２６】
マルチプレクサ３１２は、キャリーチェック回路３０８から出力される制御信号ＳＥＬに従い、入力端子Ｉ１，Ｉ２に入力される信号ＡＤＤ２，ＡＤＤ３の何れか一方を選択し、新たなインデックス（Ｉｎｄｅｘ’）としてビット多重回路３１４に出力する。
ビット多重回路３１４は、ＢＫｍａｓｋに基づいてビット分離回路３０４から出力されるデータの上位側のビット部分とマルチプレクサ３１２から出力される新たなインデックスの下位側のビット部分とを多重化して、その多重化したデータを出力端子ＡＲｎ’に新たなアドレスとして出力する。この新たなアドレスのビット３１〜ビット（Ｎ＋１）の値は入力端子ＡＲｎに入力したアドレスのビット３１〜ビット（Ｎ＋１）の値と同じであり、新たなアドレスのビットＮ〜ビット０の値はマルチプレクサ３１２から出力される新たなインデックスのビットＮ〜ビット０の値と同じである。
【００２７】
キャリーチェック回路３０８は、加算回路３０２の入力端子Ａに出力されるステップ値の最上位ビット（ＭＳＢ）、加算回路３０２のキャリーアウト信号（Ｃａｒｒｙ２）、および加算回路３１０のキャリーアウト信号（Ｃａｒｒｙ３）に応じた制御信号ＳＥＬをマルチプレクサ３１２に出力する。上記ＭＳＢが１であり、ステップ値が負の場合、すなわちサーキュラアドレッシングがボトムアドレスからトップアドレスの方向に行われる場合には、加算回路３０２のキャリーアウト信号のみを監視し、キャリーが出力される、すなわちキャリーアウト信号（Ｃａｒｒｙ２）が１であるときにはマルチプレクサ３１２が信号ＡＤＤ２を選択するように制御し、キャリーが出力されない、すなわちキャリーアウト信号（Ｃａｒｒｙ２）が０であるときにはマルチプレクサ３１２が信号ＡＤＤ３を選択するように制御する。一方、上記ＭＳＢが０であり、ステップ値が正の場合、すなわちサーキュラアドレッシングがトップアドレスからボトムアドレスの方向に行われる場合には、加算回路３０２および加算回路３１０のキャリーアウト信号を監視し、何れか一方の加算回路からキャリーが出力されるときにはマルチプレクサ３１２が信号ＡＤＤ３を選択するように制御し、何れの加算回路からもキャリーが出力されないときにはマルチプレクサ３１２が信号ＡＤＤ２を選択するように制御する。
【００２８】
以下に、加算回路３０２に出力されるステップ値が正であり、トップアドレスからボトムアドレスの方向にサーキュラアドレッシングが行われる場合のアドレス生成回路３０の動作について説明する。尚、加減制御回路３００，３０６、加算回路３０２，３１０、マルチプレクサ３１２およびキャリーチェック回路３０８が、図９におけるインデックス生成回路１４に対応する。
加減制御回路３００は、正のステップ値を加算回路３０２に出力する。この場合、加算回路３０２の入力端子Ａに出力されるステップ値のＭＳＢは０となるので、キャリーチェック回路３０８は加算回路３０２および加算回路３１０のキャリーアウト信号の双方を監視し、加減制御回路３０６は入力するブロックサイズの各ビットを反転して加算回路３１０に出力すると共に、加算回路３１０にキャリーを出力する。
【００２９】
加算回路３０２は、インデックスとステップ値との全加算演算を行い、加算回路３１０は、信号ＡＤＤ２とブロックサイズの各ビットが反転された信号とキャリー信号との全加算演算、すなわち信号ＡＤＤ２とブロックサイズとの減算処理を行う。すなわち、加算回路３０２と加算回路３１０とで図１０のＳ１１０の処理を行っており、インデックスとステップ値との和とブロックサイズとの減算結果が負であるか否かの判定を行う。
従って、インデックスとステップ値との和とブロックサイズとの減算結果が負である、すなわち加算回路３０２および加算回路３１０の双方からキャリーアウト信号が出力されない場合には、マルチプレクサ３１２はインデックスにステップ値が加算された信号ＡＤＤ２、すなわち現在のアドレスのビットＮ〜ビット０の値にステップ値が加算された値を選択してビット多重回路３１４に出力する。一方、インデックスとステップとの和とブロックサイズとの減算結果が０以上である、すなわち加算回路３０２または加算回路３１０の何れか一方からキャリーアウト信号が出力される場合には、マルチプレクサ３１２は信号ＡＤＤ３、すなわちインデックスとステップ値との和とブロックサイズとの減算結果を選択してビット多重回路３１４に出力する。
【００３０】
ビット多重回路３１４は、ビット分離回路３０４から出力されるデータのビット３１〜ビット（Ｎ＋１）、すなわち現在のアドレスのビット３１〜ビット（Ｎ＋１）の値とマルチプレクサ３１２から出力される新たなインデックスのビットＮ〜ビット０の値とを組み合わせて、新たなアドレスとして出力する。
以上の一連の動作により、トップアドレスからボトムアドレスの方向へのサーキュラアドレッシングにおけるアドレス生成が実現される。
【００３１】
次に、加算回路３０２に出力されるステップ値が負であり、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングが行われる場合のアドレス生成回路３０の動作について説明する。
加減制御回路３００は、負のステップ値を加算回路３０２に出力する。この場合、加算回路３０２の入力端子Ａに出力されるステップ値のＭＳＢは１であるので、キャリーチェック回路３０８は加算回路３０２のキャリーアウト信号のみを監視し、加減制御回路３０６は入力するブロックサイズをそのまま加算回路３１０に出力する。このとき、加算回路３１０にキャリーは出力されない。
【００３２】
加算回路３０２はインデックスと負のステップ値との全加算演算を行う。すなわち、加算回路３０２は図１０におけるＳ１０７の処理を行っており、インデックスとステップ値との和が負であるか否かの判定を行う。また、加算回路３１０は、信号ＡＤＤ２とブロックサイズとの全加算演算を行う。
従って、インデックスとステップ値との和が負である、すなわち加算回路３０２からキャリーアウト信号が出力されない場合には、マルチプレクサ３１２はインデックスとステップ値とブロックサイズとの和である信号ＡＤＤ３を選択してビット多重回路３１４に出力する。一方、インデックスとステップ値との和が０以上である、すなわち加算回路３０２からキャリーアウト信号が出力される場合には、マルチプレクサ３１２はインデックスとステップ値との和である信号ＡＤＤ２、すなわち現在のアドレスのビットＮ〜ビット０の値にステップを加算した値を選択してビット多重回路３１４に出力する。
【００３３】
ビット多重回路３１４は、ビット分離回路３０４から出力されるデータのビット３１〜ビット（Ｎ＋１）、すなわち現在のアドレスのビット３１〜ビット（Ｎ＋１）の値とマルチプレクサ３１２から出力される新たなインデックスのビットＮ〜ビット０の値とを組み合わせて、新たなアドレスとして出力する。
以上の一連の動作により、ボトムアドレスからトップアドレスの方向へのサーキュラアドレッシングにおけるアドレス生成が実現される。
【００３４】
以下、図２を参照して本発明のサーキュラアドレッシング用アドレス生成回路４０を説明する。尚、本実施例の各演算器のビット数も３２ビット構成であるとする。
図２は本発明の第２実施例のアドレス生成回路４０の構成を示す図である。加減制御回路４００は図１に示す加減制御回路３００と同様の機能を有し、加減制御信号（Ａ／Ｓ）に従って、第１の動作モードまたは第２の動作モードをとる。加減制御信号（Ａ／Ｓ）が加算命令である第１の動作モードにおいては、入力端子Ｓｔｅｐに入力されるステップをそのまま部分加算回路４０６の入力端子Ｉ１に出力する。尚、このとき部分加算回路４０８の入力端子Ｃ１にはキャリーは出力されない。一方、加減制御信号（Ａ／Ｓ）が減算命令である第２の動作モードにおいては、入力端子Ｓｔｅｐに入力されるステップの各ビットを反転した数値を算出して部分加算回路４０６の入力端子Ｉ１に出力すると共に、部分加算回路４０８の入力端子Ｃ１にキャリーを出力する。尚、部分加算回路４０６の入力端子Ｉ１と部分加算回路４０８の入力端子Ｃ１に出力される信号とがステップ値を構成する。
【００３５】
加減制御回路４０２は部分加算回路４０６の入力端子Ｉ１に出力されるステップ値の最上位ビット（ＭＳＢ）に制御される。上記ＭＳＢが０であり、サーキュラブロックのトップアドレスからボトムアドレスの方向にサーキュラアドレッシングを行う場合には、入力端子ＢＫから入力されるブロックサイズの各ビットを反転した数値を算出して部分加算回路４０６の入力端子Ｉ２に出力すると共に、部分加算回路４０８の入力端子Ｃ２にキャリーを出力する。一方、上記ＭＳＢが１であり、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングを行う場合には、部分加算回路４０６の入力端子Ｉ２に０のデータを出力し、部分加算回路４０８の入力端子Ｃ２にキャリーを出力しない。
【００３６】
ゲート回路４１２は、キャリーチェック回路４１０から出力される制御信号（ＳＥＬ１）に従って、０のデータを加算回路４１４の入力端子Ｂに出力するか、または入力端子ＢＫに入力されるブロックサイズを加算回路４１４の入力端子Ｂに出力するかを選択する。
【００３７】
ビット分離回路４０４は図１に示すビット分離回路３０４と同様の機能を有しており、ＢＫｍａｓｋに基づいて入力端子ＡＲｎから入力されるアドレスを上位側のビット部分と下位側のビット部分とに分離し、それぞれビット多重回路４１６と部分加算回路４０６の入力端子Ｉ３に出力する。
ビット多重回路４１６は図１に示すビット多重回路３１４と同様の機能を有しており、ＢＫｍａｓｋに基づいてビット分離回路４０４から出力されるデータの上位側のビット部分と加算回路４１４から出力されるデータ（信号ＡＤＤ３）の下位側のビット部分とを多重化し、その多重化したデータを出力端子ＡＲｎ’に新たなアドレスとして出力する。
【００３８】
尚、ＢＫｍａｓｋ、部分加算回路４０６の入力端子Ｉ３に出力されるデータ、ビット分離回路４０４からビット多重回路４１６に出力されるデータ、加算回路４１４から出力されるデータ、およびビット多重回路４１６から出力されるデータは、図１において説明したものと同様のデータフォーマットである。
また、部分加算回路４０６の入力端子Ｉ３に出力されるデータはＩｎｄｅｘであり、加算回路４１４から出力されるデータはＩｎｄｅｘ’である。
【００３９】
部分加算回路４０６と部分加算回路４０８は３入力の全加算回路４２０を構成し、この全加算回路４２０は図３に示す構成となっている。この全加算回路４２０は、入力端子Ｉ１，Ｉ２，Ｉ３，Ｃ１，Ｃ２にそれぞれ入力されたステップ値、各ビットが反転されたブロックサイズまたは０、インデックス、およびキャリー信号（Ｃ２）についての全加算演算を行い、その全加算演算結果（信号ＡＤＤ２）を加算回路４１４の入力端子Ａに出力し、２つのキャリーアウト信号（Ｃａｒｒｙ２，Ｃａｒｒｙ３）をキャリーチェック回路４１０に出力する。
加算回路４１４は、入力端子Ａ，Ｂにそれぞれ入力された信号ＡＤＤ２とゲート回路４１２の出力信号との加算演算を行って、その加算演算結果（信号ＡＤＤ３）を新たなインデックス（Ｉｎｄｅｘ’）としてビット多重回路４１６に出力する。
【００４０】
キャリーチェック回路４１０は、全加算回路４２０に出力されるステップ値の最上位ビット（ＭＳＢ）、および全加算回路４２０が出力する２つのキャリーアウト信号に応じた制御信号（ＳＥＬ１）をゲート回路４１２に出力する。上記ＭＳＢが１である場合、すなわちサーキュラアドレッシングがボトムアドレスからトップアドレスの方向に行われる場合には２つのキャリーアウト信号（Ｃａｒｒｙ２，Ｃａｒｒｙ３）の双方を監視し、キャリーが出力される、すなわち何れか一方のキャリーアウト信号が１であるときにはゲート回路４１２が０を出力するように制御し、キャリーが出力されない、すなわち２つのキャリーアウト信号が共に０であるときにはゲート回路４１２がブロックサイズを出力するように制御する。一方、上記ＭＳＢが０である場合、すなわちサーキュラアドレッシングがトップアドレスからボトムアドレスの方向に行われる場合には２つのキャリーアウト信号（Ｃａｒｒｙ２，Ｃａｒｒｙ３）を監視し、何れか一方のキャリーアウト信号が１であるときにはゲート回路４１２が０を出力するように制御し、双方のキャリーアウト信号が０であるときにはゲート回路４１２がブロックサイズを出力するように制御する。
【００４１】
図３は部分加算回路４０６と部分加算回路４０８とで構成される３入力の全加算回路４２０の要部を示す図である。部分加算回路４０６は、入力端子Ｉ１，Ｉ２，Ｉ３に入力される各信号のビット３１〜ビット０についてそれぞれ加算演算を行ってキャリーアウト信号（Ｃａｒｒｙ２）を生成する。部分加算回路４０８は、部分加算回路４０６の加算演算結果と加減制御回路４００，４０１からそれぞれ出力される２つのキャリー信号（Ｃ１，Ｃ２）との加算演算を行って全加算演算結果（ビット３１〜ビット０）とキャリーアウト信号（Ｃａｒｒｙ３）を生成する。
【００４２】
以下に、全加算回路４２０に出力されるステップ値が正の数であり、トップアドレスからボトムアドレスの方向にサーキュラアドレッシングが行われる場合のアドレス生成回路４０の動作について説明する。尚、加減制御回路４００，４０２、ゲート回路４１２、部分加算回路４０６，４０８、加算回路４１４、およびキャリーチェック回路４１０が、図９におけるインデックス生成回路１４に対応する。
加減制御回路４００は、正のステップ値を全加算回路４２０に出力する。この場合、全加算回路４２０に出力されるステップ値のＭＳＢは０となるので、キャリーチェック回路４１０は全加算回路４２０から出力される２つのキャリーアウト信号の双方を監視する。加減制御回路４０１は、入力するブロックサイズの各ビットを反転して全加算回路４２０に出力すると共に、全加算回路４２０にキャリーを出力する。
【００４３】
全加算回路４２０は、ステップ値とインデックスとブロックサイズの各ビットが反転された信号と加減制御回路４０１から出力されるキャリー信号との全加算演算、すなわちインデックスとステップ値との和とブロックサイズとの減算処理を行う。全加算回路４２０は図１０のＳ１１０の処理を行っており、インデックスとステップ値との和とブロックサイズとの減算結果が負であるか否かの判定を行う。
従って、インデックスとステップ値との和とブロックサイズとの減算結果が負である、すなわち全加算回路４２０からキャリーアウト信号が出力されない場合には、ゲート回路４１２は入力するブロックサイズをそのまま加算回路４１４に出力する。加算回路４１４は、全加算回路４２０から出力される信号ＡＤＤ２とゲート回路４１２から出力されるブロックサイズとの加算演算を行い、インデックスにステップ値が加算された信号、すなわち現在のアドレスのビットＮ〜ビット０の値にステップ値が加算された値を算出してビット多重回路４１６に出力する。一方、インデックスとステップ値との和とブロックサイズとの減算結果が０以上である、すなわち全加算回路４２０からキャリーアウト信号が出力される場合にはゲート回路４１２は０を加算回路４１４に出力する。加算回路４１４は全加算回路４２０から出力される信号ＡＤＤ２と０との加算演算を行い、インデックスとステップ値との和とブロックサイズとの減算結果を算出してビット多重回路４１６に出力する。
【００４４】
ビット多重回路４１６は、ビット分離回路４０４から出力されるデータのビット３１〜ビット（Ｎ＋１）、すなわち現在のアドレスのビット３１〜ビット（Ｎ＋１）の値と、加算回路４１４から出力される新たなインデックスのビットＮ〜ビット０の値とを組み合わせて、新たなアドレスとして出力する。
以上の一連の動作により、トップアドレスからボトムアドレスの方向へのサーキュラアドレッシングにおけるアドレス生成が実現される。
【００４５】
次に、全加算回路４２０に出力されるステップ値が負の数であり、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングが行われる場合のアドレス生成回路４０の動作について説明する。
加減制御回路４００は、負のステップ値を全加算回路４２０に出力する。この場合、全加算回路４２０に出力されるステップ値のＭＳＢは１であるので、キャリーチェック回路４１０は全加算回路４２０から出力される２つのキャリーアウト信号の双方を監視する。また、加減制御回路４０２は、０のデータを全加算回路４２０に出力し、全加算回路４２０にキャリー（Ｃ２）を出力しない。
【００４６】
全加算回路４２０は、ステップ値とインデックスと０との全加算演算を行う。全加算回路４２０は図１０におけるＳ１０７の処理を行っており、インデックスとステップ値との和が負であるか否かの判定を行う。
従って、インデックスとステップ値との和が負である、すなわち全加算回路４２０からキャリーアウト信号が出力されない場合には、ゲート回路４１２は入力するブロックサイズをそのまま加算回路４１４に出力する。加算回路４１４は、全加算回路４２０から出力される信号ＡＤＤ２とゲート回路４１２から出力されるブロックサイズとの加算演算を行い、インデックスとステップ値とブロックサイズとの和を算出してビット多重回路４１６に出力する。一方、インデックスとステップ値との和が０以上である、すなわち全加算回路４２０からキャリーアウト信号が出力される場合には、ゲート回路４１２は０を加算回路４１４に出力する。加算回路４１４は、全加算回路４２０から出力される信号ＡＤＤ２と０との加算演算を行い、インデックスとステップ値との和、すなわち現在のアドレスのビットＮ〜ビット０の値にステップ値を加算した値を算出してビット多重回路４１６に出力する。
【００４７】
ビット多重回路４１６は、ビット分離回路４０４から出力されるデータのビット３１〜ビット（Ｎ＋１）、すなわち現在のアドレスのビット３１〜ビット（Ｎ＋１）の値と、加算回路４１４から出力される新たなインデックスのビットＮ〜ビット０の値とを組み合わせて、新たなアドレスとして出力する。
以上の一連の動作により、ボトムアドレスからトップアドレスの方向へのサーキュラアドレッシングにおけるアドレス生成が実現される。
【００４８】
以下、図４を参照して本発明のサーキュラアドレッシング用アドレス生成回路６０を説明する。尚、本実施例の各演算器のビット数も３２ビット構成であるとする。
図４は本発明の第３実施例のアドレス生成回路６０の構成を示す図である。加減制御回路６００は図１に示した加減制御回路３００と同様の機能を有し、加減制御信号（Ａ／Ｓ）に従い、第１の動作モードまたは第２の動作モードをとる。加減制御信号（Ａ／Ｓ）が加算命令である第１の動作モードにおいては、入力端子Ｓｔｅｐに入力されるステップをそのまま部分加算回路６０８の入力端子Ｉ１に出力する。尚、このとき部分加算回路６１０の入力端子Ｃ１にはキャリーは出力されない。一方、加減制御信号（Ａ／Ｓ）が減算命令である第２の動作モードにおいては、入力端子Ｓｔｅｐに入力されるステップの各ビットを反転した数値を算出して部分加算回路６０８の入力端子Ｉ１に出力すると共に、部分加算回路６１０の入力端子Ｃ１にキャリーを出力する。尚、部分加算回路６０８の入力端子Ｉ１と部分加算回路６１０の入力端子Ｃ１に出力される信号とがステップ値を構成する。
【００４９】
加減制御回路６０２は図１に示す加減制御回路３０６と同様の機能を有し、部分加算回路６０８の入力端子Ｉ１に出力されるステップ値の最上位ビット（ＭＳＢ）に従い、第１の動作モードまたは第２の動作モードをとる。上記ＭＳＢが０であり、サーキュラブロックのトップアドレスからボトムアドレスの方向にサーキュラアドレッシングを行う場合には第２の動作モードとなり、入力端子ＢＫから入力されるブロックサイズの各ビットを反転した数値を算出してゲート回路６０４に出力すると共にゲート回路６０４にキャリー（Ｃａｒｒｙ）を出力する。一方、上記ＭＳＢが１であり、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングを行う場合には第１の動作モードとなり、入力端子ＢＫから入力されるブロックサイズをそのままゲート回路６０４に出力する。尚、このときゲート回路６０４にはキャリーは出力されない。
ゲート回路６０４は、クロック信号（ＣＫ）とキャリーチェック回路６１２から出力される制御信号（ＳＥＬ１）とに従って、加減制御回路６０２から出力されるブロックサイズとキャリー信号（０）または各ビットが反転されたブロックサイズとキャリー信号（１）をそのまま部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するか、または０のデ−タとキャリー信号（０）を部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するかを選択する。
【００５０】
ビット分離回路６０６は図１に示すビット分離回路３０４と同様の機能を有しており、ＢＫｍａｓｋに基づいて入力端子ＡＲｎから入力されるアドレスを上位側のビット部分と下位側のビット部分とに分離し、それぞれビット多重回路６１４と部分加算回路６０８の入力端子Ｉ３に出力する。
ビット多重回路６１４は図１に示すビット多重回路３１４と同様の機能を有しており、ＢＫｍａｓｋに基づいてビット分離回路６０６から出力されるデータの上位側のビット部分と部分加算回路６１０から出力される信号ＡＤＤ２の下位側のビット部分とを多重化し、その多重化したデータを出力端子ＡＲｎ’に新たなアドレスとして出力する。
【００５１】
尚、ＢＫｍａｓｋ、部分加算回路６０８の入力端子Ｉ３に出力されるデータ、ビット分離回路６０６からビット多重回路６１４に出力されるデータ、部分加算回路６１０から出力されるデータ、およびビット多重回路６１４から出力されるデータは、図１において説明したものと同様のデータフォーマットである。
また、部分加算回路６０８の入力端子Ｉ３に出力されるデータはＩｎｄｅｘであり、部分加算回路６１０から出力されるデータはＩｎｄｅｘ’である。
【００５２】
部分加算回路６０８と部分加算回路６１０は、図２に示す部分加算回路４０６と部分加算回路４０８と同様に、図３に示す３入力の全加算回路４２０を構成しており、入力端子Ｉ１，Ｉ２，Ｉ３，Ｃ１，Ｃ２にそれぞれ入力された値についての全加算演算を行い、その全加算演算結果（信号ＡＤＤ２）を新たなインデックス（Ｉｎｄｅｘ’）としてビット多重回路６１４に出力し、２つのキャリーアウト信号（Ｃａｒｒｙ２，Ｃａｒｒｙ３）をキャリーチェック回路６１２に出力する。
【００５３】
キャリーチェック回路６１２は、全加算回路４２０に出力されるステップ値の最上位ビット（ＭＳＢ）、全加算回路４２０が出力する２つのキャリーアウト信号に応じて、クロック信号（ＣＫ）の前半（ｐｈ１）と後半（ｐｈ２）とに分けて、制御信号（ＳＥＬ１）によりゲート回路６０４を制御する。
上記ＭＳＢが１である場合、すなわちサーキュラアドレッシングがボトムアドレスからトップアドレスの方向に行われる場合には、２つのキャリーアウト信号を監視し、クロック信号（ＣＫ）の前半（ｐｈ１）においては、ゲート回路６０４が０のデータとキャリー信号（０）とを部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するように制御する。クロック信号の後半（ｐｈ２）においては、クロック信号の前半においてキャリーが出力される、すなわち何れか一方のキャリーアウト信号が１のときにはゲート回路６０４が０のデータとキャリー信号（０）とを部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するように制御し、クロック信号の前半においてキャリーが出力されない、すなわち双方のキャリーアウト信号が０のときにはゲート回路６０４が加減制御回路６０２から出力されるブロックサイズとキャリー信号（０）とを部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するように制御する。
【００５４】
一方、上記ＭＳＢが０である場合、すなわちサーキュラアドレッシングがトップアドレスからボトムアドレスの方向に行われる場合には、２つのキャリーアウト信号を監視し、クロック信号（ＣＫ）の前半（ｐｈ１）においては、ゲート回路６０４が加減制御回路６０２から出力される各ビットが反転されたブロックサイズとキャリー信号（１）とを部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するように制御する。クロック信号の後半（ｐｈ２）においては、クロック信号の前半において何れか一方のキャリーアウト信号が１のときにはゲート回路６０４が加減制御回路６０２から出力される各ビットが反転されたブロックサイズとキャリー信号（１）とを部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するように制御し、クロック信号の前半において双方のキャリーアウト信号が０のときにはゲート回路６０４が０のデータとキャリー信号（０）とを部分加算回路６０８の入力端子Ｉ２と部分加算回路６１０の入力端子Ｃ２とに出力するように制御する。
【００５５】
以下に、全加算回路４２０に出力されるステップ値が正の数であり、トップアドレスからボトムアドレスの方向にサーキュラアドレッシングが行われる場合のアドレス生成回路６０の動作について説明する。尚、加減制御回路６００，６０２、ゲート回路６０４、部分加算回路６０８，６１０、およびキャリーチェック回路６１２が、図９のおけるインデックス生成回路１４に対応する。
加減制御回路６００は、正のステップ値を全加算回路４２０に出力する。この場合、全加算回路４２０に出力されるステップ値のＭＳＢは０となるので、キャリーチェック回路６１２は全加算回路４２０から出力される２つのキャリーアウト信号の双方を監視し、加減制御回路６０２は入力するブロックサイズの各ビットを反転してゲート回路６０４に出力すると共にゲート回路６０４にキャリー信号（１）を出力する。
ゲート回路６０４は、クロック信号（ＣＫ）の前半（ｐｈ１）においては、加減制御回路６０２から出力される各ビットが反転されたブロックサイズとキャリー信号（１）とを全加算回路４２０に出力する。
【００５６】
全加算回路４２０は、クロック信号（ＣＫ）の前半（ｐｈ１）においては、ステップ値とインデックスとブロックサイズの各ビットが反転された信号と加減制御回路６０２から出力されるキャリー信号（１）との全加算演算、すなわちインデックスとステップ値との和とブロックサイズとの減算処理を行う。全加算回路４２０は図１０のＳ１１０の処理を行っており、インデックスとステップ値との和とブロックサイズとの減算結果が負であるか否かの判定を行う。
従って、クロック信号の前半において、インデックスとステップ値との和とブロックサイズとの減算結果が負である、すなわち全加算回路４２０からキャリーアウト信号が出力されない場合には、ゲート回路６０４がクロック信号の後半において全加算回路４２０に０のデータとキャリー信号（０）を出力するので、全加算回路４２０はクロック信号の後半（ｐｈ２）においてステップとインデックスとの全加算演算を行って、インデックスにステップ値が加算された信号、すなわち現在のアドレスのビットＮ〜ビット０の値にステップ値が加算された値を算出してビット多重回路６１４に出力する。一方、クロック信号の前半においてインデックスとステップ値との和とブロックサイズとの減算結果が０以上である、すなわち全加算回路４２０からキャリーアウト信号が出力される場合には、ゲート回路６０４がクロック信号の後半において全加算回路４２０に各ビットの値が反転されたブロックサイズとキャリー信号（１）とを出力するので、全加算回路４２０はクロック信号の後半においてインデックスとステップ値とブロックサイズの各ビットが反転された信号と加減制御回路６０２から出力されるキャリー信号（１）との全加算演算を行って、インデックスとステップ値との和とブロックサイズとの減算結果を算出してビット多重回路６１４に出力する。
【００５７】
ビット多重回路６１４は、ビット分離回路４０４から出力されるデータのビット３１〜ビット（Ｎ＋１）、すなわち現在のアドレスのビット３１〜ビット（Ｎ＋１）の値と、全加算回路４２０から出力される新たなインデックスのビットＮ〜ビット０の値とを組み合わせて、新たなアドレスとして出力する。
以上の一連の動作により、トップアドレスからボトムアドレスの方向へのサーキュラアドレッシングにおけるアドレス生成が実現される。
【００５８】
次に、全加算回路４２０に出力されるステップ値が負の数であり、ボトムアドレスからトップアドレスの方向にサーキュラアドレッシングが行われる場合のアドレス生成回路４０の動作について説明する。
加減制御回路６００は、負のステップ値を全加算回路４２０に出力する。この場合、全加算回路４２０に出力されるデータのＭＳＢは１であるので、キャリーチェック回路６１２は全加算回路４２０から出力される２つのキャリーアウト信号を監視し、加減制御回路６０２は入力するブロックサイズをそのままゲート回路４０２に出力する。尚、このとき、全加算回路４２０にキャリーは出力されない。
ゲート回路６０４は、クロック信号の前半（ｐｈ１）においては、０のデータとキャリー信号（０）とを全加算回路４２０に出力する。
【００５９】
全加算回路４２０は、クロック信号の前半（ｐｈ１）においては、インデックスとステップ値との全加算演算を行う。全加算回路４２０は図１０のＳ１０７の処理を行っており、インデックスとステップ値との和が負であるか否かの判定を行う。
従って、クロック信号の前半においてインデックスとステップ値との和が負である、すなわち全加算回路４２０からキャリーアウト信号が出力されない場合には、クロック信号の後半（ｐｈ２）においてゲート回路６０４が全加算回路４２０にブロックサイズとキャリー信号（０）を出力するので、全加算回路４２０はクロック信号の後半においてインデックスとステップ値とブロックサイズとの全加算演算を行って、その演算結果をビット多重回路６１４に出力する。一方、クロック信号の前半においてインデックスとステップ値との和が０以上である、すなわち全加算回路４２０からキャリーアウト信号が出力される場合には、クロック信号の後半においてゲート回路６０４が全加算回路４２０に０のデータとキャリー信号（０）を出力するので、全加算回路４２０はクロック信号の後半においてインデックスとステップ値との全加算演算を行い、インデックスにステップ値が加算された信号、すなわち現在のアドレスのビットＮ〜ビット０の値にステップ値が加算された値を算出してビット多重回路６１４に出力する。
【００６０】
ビット多重回路６１４は、ビット分離回路６０６から出力されるデータのビット３１〜ビット（Ｎ＋１）、すなわち現在のアドレスのビット３１〜ビット（Ｎ＋１）の値と、全加算回路４２０から出力される新たなインデックスのビットＮ〜ビット０の値とを組み合わせて、新たなアドレスとして出力する。
以上の一連の動作により、ボトムアドレスからトップアドレスの方向へのサーキュラアドレッシングにおけるアドレス生成が実現される。
【００６１】
以上に説明した本発明のサーキュラアドレッシング用アドレス生成回路は、現在のアドレスの値を直接に計算して次のアドレスを求めるのではなく、インデックスとステップ値とブロックサイズを用いて間接的に次のアドレスを求めているので、効率的に計算を行える。また、第１実施例では加算器の数は２個であり、ハードウエアが簡略化されている。更には、第３実施例では１クロックサイクルで次のアドレスを算出することができるので、高速なアプリケーションに適している。
また、本発明のアドレス生成回路によれば、ステップとブロックサイズを記憶しておくだけでよく、トップアドレスとボトムアドレスとを記憶しておく必要がない。
以上に本発明のサーキュラアドレッシング用アドレス生成回路を説明したが、図１０に示した本発明の技術思想に基づき、種々の回路形態が考えられることは当業者には明らかであろう。
【００６２】
以下、図６を参照して本発明のブロックリピートアドレッシング用アドレス生成回路を説明する。
図６は本発明の第４実施例のアドレス生成回路７の構成を示す図である。アドレス生成回路７は、プログラムカウンタ（ＰＣ）７２、比較回路７４、レジスタ（ＥＮＤ）７６、セレクタ７８、レジスタ（ＳＴＡＲＴ）８０、インクリメント回路８２、デクリメント回路８４、レジスタ（ＢＲＣＲ）８６、およびゼロ検出回路７０から構成される。尚、本実施例は、パイプラインの遅延が２段の場合に適用するものである。
本実施例は、図１１に示した従来の回路と同ように、ブロックリピートを行う前に、レジスタ７６に繰り返し実行するプログラムのボトムアドレス（末尾アドレス）が設定され、レジスタ８０に当該プログラムのトップアドレス（先頭アドレス）が設定され、レジスタ８６に繰り返し回数が初期値として設定される。
【００６３】
図７はゼロ検出回路７０の要部の構成を示す図である。フリップフロップ７０６，７０８のクロック端子にはパイプライン（ＣＰＵ）の動作クロックであるクロックＣＫが入力され、クリア端子には割り込みを示すパイプラインフラッシュ信号が入力されている。フリップフロップ７０６の入力端子ＤはＡＮＤ回路７１２の出力端子に接続されており、出力端子Ｑはフリップフロップ７０８の入力端子ＤとＡＮＤ回路７０４の一方の入力端子に接続されている。フリップフロップ７０８の出力端子ＱはＡＮＤ回路７００の一方の入力端子とＡＮＤ回路７０４の他方の入力端子に接続されている。ＡＮＤ回路７００の他方の入力端子には信号ＢＲＣＲ１が入力され、その出力端子はＮＯＲ回路７１０の第２の入力端子に接続されている。ＡＮＤ回路７０２の一方の入力端子には信号ＢＲＣＲ２が入力され、他方の入力端子はＡＮＤ回路７０４の出力端子に接続されており、出力端子はＮＯＲ回路７１０の第３の入力端子に接続されている。ＮＯＲ回路７１０の第１の入力端子には信号ＢＲＣＲ０が入力され、その出力端子はＡＮＤ回路７１２の一方の入力端子に接続されている。ＡＮＤ回路７１２の他方の入力端子には信号ＰＣ＝ＥＮＤが入力される。
【００６４】
信号ＢＲＣＲ２，ＢＲＣＲ１，ＢＲＣＲ０はレジスタ８６から出力される繰り返し回数をデコードして生成される信号であり、各信号は繰り返し回数がそれぞれ２，１，０のときにハイレベルとなる。信号ＢＲＣＲ０はそのままブロックリピート禁止信号として出力される。また、ＡＮＤ回路７１２の出力端子からループエンド信号が出力され、フリップフロップ７０８の出力端子ＱからＢＲＣＲ制御信号が出力される。
【００６５】
プロックリピートアクセスが開始されると、動作周期毎にプログラムカウンタ７２からアドレスが発生される。このアドレスはメモリ（図示せず）とインクリメント回路８２に供給されると共に、比較回路７４に出力される。インクリメント回路８２は入力したアドレスに１を加算（インクリメント）してセレクタ７８の入力端子Ｉ０に出力する。
比較回路７４は、プログラムカウンタ７２が出力するアドレスとレジスタ７６に記憶されているボトムアドレスとを比較し、これらの一致を検出する。比較回路７４がプログラムカウンタ９００のアドレスとボトムアドレスとの一致を検出しない場合には信号ＰＣ＝ＥＮＤは不活性化状態（ローレベル）であり、比較回路７４がプログラムカウンタ７２のアドレスとボトムアドレスとの一致を検出した場合には信号ＰＣ＝ＥＮＤは活性化状態（ハイレベル）となる。
【００６６】
セレクタ７８はゼロ検出回路７０から出力されるループエンド信号により制御され、ループエンド信号が不活性化状態（ローレベル）の場合には入力Ｉ０側を選択してプログラムカウンタ７２に出力する。すなわち、動作周期におけるアドレスとボトムアドレスとが一致しない場合にはその動作周期のアドレスがインクリメントされ、そのインクリメントされたアドレスが次の動作周期におけるアドレスとしてプログラムカウンタ７２から出力される。一方、ループエンド信号が活性化状態（ハイレベル）になると、セレクタ７８は入力端子Ｉ１側を選択してプログラムカウンタ７２に出力する。すなわち、アドレスがボトムアドレスに達した場合には、次の動作周期におけるアドレスとして、トップアドレスがプログラムカウンタ７２から出力される。
レジスタ８６は、ゼロ検出回路７０から出力されるＢＲＣＲ制御信号に応じて記憶している繰り返し回数をデクリメント回路８４により１つ減算（デクリメント）して、そのデクリメントした値を記憶すると共に、ゼロ検出回路７０に出力する。
【００６７】
次に、ゼロ検出回路７０の動作について説明する。繰り返し回数が３以上である場合には信号ＢＲＣＲ２、ＢＲＣＲ１、およびＢＲＣＲ０は何れもローレベルであるので、ＮＯＲ回路７１０の出力は常にハイレベルとなる。ここで、比較回路７４が信号ＰＣ＝ＥＮＤを活性化状態（ハイレベル）にすると、ＡＮＤ回路７１２からハイレベル（活性化状態）のループエンド信号が出力される。このハイレベルのループエンド信号はフリップフロップ７０６に入力される。フリップフロップ７０６，７０８はクロックＣＫの１パルスが入力してから出力信号を変化させるので、一種の遅延手段として機能する。従って、ノードＳ１はループエンド信号がハイレベルとなってから１クロックＣＫ分遅れてハイレベルとなり、ノードＳ２はループエンド信号がハイレベルとなってから２クロックＣＫ分遅れてハイレベルとなる。すなわち、ＢＲＣＲ制御信号は、ループエンド信号がハイレベルとなってから２クロックＣＫ分遅れて活性化状態（ハイレベル）となる。
【００６８】
上述のように、ＢＲＣＲ制御信号はループエンド信号がハイレベルとなってから２クロックＣＫ分遅れて活性化状態になるので、パイプラインの遅延が２段の場合には、ボトムアドレスの命令が実行されてからレジスタ８６の内容、すなわち繰り返し回数がデクリメントされる。従って、信号ＰＣ＝ＥＮＤが活性化状態となり、ボトムアドレスの命令がフェッチされているときに割り込みが発生してパイプラインフラッシュ信号が活性化状態（ハイレベル）となると、フリップフロップ７０６，７０８がクリアされ、たとえボトムアドレスの命令が実行されずに割り込み処理となってもレジスタ８６の内容、すなわち繰り返し回数はデクリメントされない。従って、ボトムアドレスの命令を実行していないにも拘らず、繰り返し回数がデクリメントされることがないので、ボトムアドレス近傍の命令に対して割り込み禁止を設定する必要がない。
【００６９】
ＡＮＤ回路７００，７０２，７０４，７１２とＮＯＲ回路７１０はループエンド処理、すなわちプログラムカウンタ７２にトップアドレスが入力される処理を禁止するループエンド処理禁止回路として機能する。ゼロ検出回路７０においてはループエンド信号の活性化から２クロックＣＫ分遅れてＢＲＣＲ信号が活性化されるので、ブロックサイズが２以下、すなわちトップアドレスとボトムアドレスとの差が１以下のときにはレジスタ８６に記憶されている繰り返し回数がデクリメントされる前に比較回路７４から活性化された次の信号ＰＣ＝ＥＮＤが出力されてしまう場合がある。従って、ブロックサイズが２以下であって繰り返し回数が２以下である場合には、繰り返し回数のデクリメントに先立ってループエンド処理がなされ、結果として繰り返し回数よりも多くブロックリピート処理がなされてしまう。
【００７０】
そこで、ブロックサイズが２以下のときに繰り返し回数が２以下になった場合には、前回の信号ＰＣ＝ＥＮＤの活性化に基づくレジスタ８６のデクリメント、すなわち信号ＢＲＣＲの活性化がなされるまでは新たなループエンド処理を禁止している。ブロックサイズはノードＳ１，Ｓ２のハイレベルの組み合わせと繰り返し回数とで識別することができる。従って、レジスタ８６に記憶されている繰り返し回数が２のときには、ノードＳ１およびＳ２のハイレベルのＡＮＤ信号（ＡＮＤ回路７０４の出力）と繰り返し回数が２であることを示すハイレベルの信号（信号ＢＲＣＲ２）とのＡＮＤ信号（ＡＮＤ回路７０２の出力）でループエンド処理を禁止している。また、レジスタ８６に記憶されている繰り返し回数が１のときには、ノードＳ２のハイレベルの信号と繰り返し回数が１であることを示すハイレベルの信号（信号ＢＲＣＲ１）とのＡＮＤ信号（ＡＮＤ回路７００の出力）でループエンド処理を禁止している。尚、繰り返し回数が０のときには、繰り返し回数が０であることを示す信号のみでループエンド処理を禁止している。また、この繰り返し回数が０であることを示すハイレベルの信号はブロックリピート禁止信号としても機能しており、この信号の活性化（ハイレベル）によりアドレス生成回路９はブロックリピートアクセス動作を終了する。
【００７１】
図８はゼロ検出回路７０の変形例の要部の構成を示す図である。このゼロ検出回路７４０はパイプラインの遅延が３段の場合の例である。
デコーダ回路７４２はレジスタ８６から出力される繰り返し回数（信号ＢＲＣＲ）を入力し、その値に応じて信号ｄ０，ｄ１，ｄ２，ｄ３を制御する。信号ｄ０は繰り返し回数が０のときにハイレベルとなり、信号ｄ１は繰り返し回数の１のときにハイレベルとなり、信号ｄ２は繰り返し回数が２のときにハイレベルとなり、信号ｄ３は繰り返し回数が３のときにハイレベルとなる。信号ｄ０はＮＯＲ回路７５２の第１の入力端子に入力されると共にブロックリピート禁止信号として機能し、信号ｄ１はＡＮＤ回路７４６の一方の入力端子に入力され、信号ｄ２はＡＮＤ回路７４８の一方の入力端子に入力され、信号ｄ３はＡＮＤ回路７５０の一方の入力端子に入力される。
【００７２】
フリップフロップ７５８，７６０，７６２のクロック端子にはパイプライン（ＣＰＵ）の動作クロックであるクロックＣＫが入力され、クリア端子には割り込みを示すパイプラインフラッシュ信号が入力されている。フリップフロップ７５８の入力端子ＤはＡＮＤ回路７５４の出力端子に接続されており、出力端子Ｑはフリップフロップ７６０の入力端子ＤとＡＮＤ回路７５６の第１の入力端子に接続されている。フリップフロップ７６０の出力端子Ｑは、フリップフロップ７６２の入力端子ＤとＡＮＤ回路７５６第２の入力端子とＡＮＤ回路７４８の他方の入力端子に接続されている。フリップフロップ７６２の出力端子Ｑは、ＡＮＤ回路７５６の第３の出力端子とＡＮＤ回路７４６の他方の出力端子に接続されている。
【００７３】
ＡＮＤ回路７５６の出力端子はＡＮＤ回路７５０の他方の入力端子に接続されている。ＡＮＤ回路７４６，７４８，７５０の出力端子はＮＯＲ回路７５２の第２、第３、および第４の入力端子にそれぞれ接続されている。ＮＯＲ回路７５２の出力はＡＮＤ回路７５４の一方の入力端子に接続されている。ＡＮＤ回路７５４の他方の入力端子には、信号ＰＣ＝ＥＮＤが入力される。
ここで、ＡＮＤ回路７５４の出力信号はループエンド処理信号として機能し、フリップフロップ７６２の出力信号ＱはＢＲＣＲ制御信号として機能する。
【００７４】
以下に、このゼロ検出回路７４０の動作について説明する。繰り返し回数が４以上の場合には、ＮＯＲ回路７５２の出力がハイレベルとなるので、信号ＰＣ＝ＥＮＤが活性化状態（ハイレベル）になるとループエンド信号が活性化状態（ハイレベル）となり、ループエンド処理が実行される。また、このループエンド信号から３クロックＣＫ分遅延してＢＲＣＲ制御信号が活性化状態（ハイレベル）となり、レジスタ８６のデクリメントが実行される。
【００７５】
ゼロ検出回路７４０においてはループエンド信号の活性化から３クロックＣＫ分遅れてＢＲＣＲ制御信号が活性化されるので、ブロックサイズが３以下、すなわちトップアドレスとボトムアドレスとの差が２以下のときにはレジスタ８６に記憶されている繰り返し回数がデクリメントされる前に活性化された次の信号ＰＣ＝ＥＮＤが入力されてしまう場合がある。従って、ブロックサイズが３以下であって繰り返し回数が３以下である場合には、繰り返し回数のデクリメントに先立ってループエンド処理がなされ、結果として繰り返し回数よりも多くブロックリピート処理がなされてしまう。
そこで、このゼロ検出回路７４０では、デコーダ回路７４２、ＡＮＤ回路７４６，７４８，７５０，７５４，７５６、およびＮＯＲ回路７５２でループエンド処理禁止回路を構成し、上述のような繰り返し回数よりもブロックリピート処理が多くなるという不具合を防止している。
【００７６】
ブロックサイズはノードＳ１，Ｓ２，Ｓ３のハイレベルの組み合わせと繰り返し回数とで識別することができる。従って、レジスタ８６に記憶されている繰り返し回数が３のときには、ノードＳ１、Ｓ２、およびＳ３のハイレベルのＡＮＤ信号（ＡＮＤ回路７５６の出力）と繰り返し回数が３であることを示すハイレベルの信号ｄ３とのＡＮＤ信号（ＡＮＤ回路７５０の出力）でループエンド処理を禁止している。また、レジスタ８６に記憶されている繰り返し回数が２のときには、ノードＳ２のハイレベルの信号と繰り返し回数が２であることを示すハイレベルの信号ｄ２とのＡＮＤ信号（ＡＮＤ回路７４８の出力）でループエンド処理を禁止している。また、レジスタ８６に記憶されている繰り返し回数が１のときには、ノードＳ３のハイレベルの信号と繰り返し回数が１であることを示すハイレベル信号ｄ１とのＡＮＤ信号（ＡＮＤ回路７４６の出力）でループエンド処理を禁止している。尚、繰り返し回数が０のときには、繰り返し回数が０であることを示すハイレベルの信号ｄ０のみでループエンド処理を禁止している。また、この繰り返し回数が０であることを示すハイレベルの信号ｄ０はブロックリピート禁止信号としても機能しており、この信号の活性化（ハイレベル）によりアドレス生成回路９はブロックリピートアクセス動作を終了する。
【００７７】
本発明のアドレス生成回路７によれば、ブロックリピートアドレッシングにおけるブロックサイズを何等制限する必要がないので、たとえば１つの命令を繰り返す処理の実行時間を削減することができる。
また、上述した実施例では、レジスタ８６からゼロ検出回路７０に繰り返し回数が入力されているが、デクリメント回路８４からゼロ検出回路７０に直接に繰り返し回数を入力する構成としてもよい。
また、インクリメント回路８２、デクリメント回路８４における加算、減算は１以外の数値であってもよい。
更には、上述したアドレス生成回路７はパイプラインの遅延が２段および３段である場合の回路であるが、ゼロ検出回路を適宜に変更することにより、パイプラインの遅延の段数が４またはそれ以上であるものにも本発明を適用できることは当業者には明らかであろう。
【００７８】
【発明の効果】
以上に述べたように、本発明のブロックリピートアドレッシング用アドレス生成回路において、パイプラインの遅延の段数により生じるブロックサイズの制限、あるいはプログラム作成上の制限を解消することができる。
【図面の簡単な説明】
【図１】図１は本発明の第１実施例のアドレス生成回路３０の構成を示す図である。
【図２】図２は本発明の第２実施例のアドレス生成回路４０の構成を示す図である。
【図３】図３は部分加算回路４０６と部分加算回路４０８とで構成される３入力の全加算回路の要部を示す図である。
【図４】図４は本発明の第３実施例のアドレス生成回路６０の構成を示す図である。
【図５】図５は本発明の第３実施例のアドレス生成回路６０の動作周期を説明する図である。
【図６】図６は本発明の第４実施例のアドレス生成回路７の構成を示す図である。
【図７】図７はゼロ検出回路７０の要部の構成を示す図である。
【図８】図８はゼロ検出回路７０の変形例の要部の構成を示す図である。
【図９】図９はサーキュラアドレッシングにおけるアドレス生成の概略を説明する図である。
【図１０】図１０はインデックス生成処理のアルゴリズムを示すフローチャートである。
【図１１】図１１はブロックリピートアドレッシングにおける従来のアドレス生成回路９の構成を示す図である。
【符合の説明】
７，３０，４０，６０・・・アドレス生成回路、７０・・・ゼロ検出回路、７２・・・プログラムカウンタ、７４・・・比較回路、７６，８０，８６・・・レジスタ、７８・・・セレクタ、８２・・・インクリメント回路、８４・・・デクリメント回路、３００，３０６，４００，４０２，６００，６０２・・・加減制御回路、３０２，３１０，４１４・・・加算回路、３０４，４０４，６０４・・・ビット分離回路、３１２・・・マルチプレクサ、３１４，４１４，６１４・・・ビット多重回路、３０８，４１０，６１２・・・キャリーチェック回路、４０６，４０８，６０８，６１０・・・部分加算回路、４１２，６０４・・・ゲート回路、４２０・・・全加算回路
【図１】
0003595309.tif 000002
【図２】
0003595309.tif 000003
【図３】
0003595309.tif 000004
【図４】
0003595309.tif 000005
【図５】
0003595309.tif 000006
【図６】
0003595309.tif 000007
【図７】
0003595309.tif 000008
【図８】
0003595309.tif 000009
【図９】
0003595309.tif 000010
【図１０】
0003595309.tif 000011
【図１１】
0003595309.tif 000012