JPH07253922A - アドレス生成回路 - Google Patents

アドレス生成回路

Info

Publication number
JPH07253922A
JPH07253922A JP6042819A JP4281994A JPH07253922A JP H07253922 A JPH07253922 A JP H07253922A JP 6042819 A JP6042819 A JP 6042819A JP 4281994 A JP4281994 A JP 4281994A JP H07253922 A JPH07253922 A JP H07253922A
Authority
JP
Japan
Prior art keywords
circuit
address
output
value
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6042819A
Other languages
English (en)
Inventor
Yuji Ozawa
裕次 小澤
Shigeyuki Abiko
茂志 安孫子
Butoo Furederitsuku
ブトー フレデリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Japan Ltd
Original Assignee
Texas Instruments Japan Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Japan Ltd filed Critical Texas Instruments Japan Ltd
Priority to JP6042819A priority Critical patent/JPH07253922A/ja
Priority to US08/402,224 priority patent/US5765218A/en
Publication of JPH07253922A publication Critical patent/JPH07253922A/ja
Priority to US08/994,572 priority patent/US6038649A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【目的】 回路構成の簡単なサーキュラアドレッシング
用のアドレス生成回路を提供する。 【構成】 ビット分離回路304は入力するアドレスか
らインデックスとして抽出する。インデックス生成回路
は、加算回路302に入力するステップ値が正の場合に
は、インデックスとステップ値との和と記憶領域の容量
値との減算を行い、その減算結果の符合によりインデッ
クスとステップ値との和または上記減算結果を新たなイ
ンデックスとして出力する。ステップ値が負の場合に
は、インデックスとステップ値との加算を行い、その加
算結果の符合によりインデックスとステップ値と記憶領
域の容量値との和または上記加算結果を新たなインデッ
クスとして出力する。ビット多重回路314は新たなイ
ンデックスとアドレスとから次のアドレスを生成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はメモリ上の所定の記憶領
域に対するアドレスを発生するアドレス生成回路に関す
る。
【0002】
【従来の技術】ディジタルシグナルプロセッサ(DS
P)等により、例えばサンプリングした信号についての
相関の計算、あるいは、フィルタリング演算を行う場
合、所定の記憶領域に記憶されたデータを何度もアクセ
スする必要が生じることがある。このようなデータが記
憶されている記憶領域は、例えばサーキュラブロック
(円環ブロック)と呼ばれる。サーキュラブロックの領
域は、サーキュラブロックの先頭の(最も数値の小さ
い)アドレス(トップアドレス)と、サーキュラブロッ
クの容量を示す数値(ブロックサイズ)で表される。ブ
ロックサイズから1減じた数値にトップアドレスを加算
すると、サーキュラブロックの末尾の(最も数値の大き
い)アドレス(ボトムアドレス)が得られる。サーキュ
ラブロックに対するアクセスはステップ値毎に行われ、
現在のアドレスに正または負の値をとるステップ値を加
算した値が次にアクセスされるアドレスとなる。すなわ
ち、次のアクセスの対象となるアドレス(ポインタ)
は、現在のアドレスにステップ値を加算することにより
得られる。
【0003】以下に、サーキュラブロックに対するアク
セスであるサーキュラアドレッシングにおける従来のア
ドレス生成について説明する。まず、ステップが正の数
であり、トップアドレスからボトムアドレスの方向にア
クセスする場合について説明する。最初に、現在のアド
レスにステップを加算して第1の数値を求める。この第
1の数値が次のアドレスとなるが、この第1の数値がボ
トムアドレスよりも大きいか否かを判定するために、第
1の数値からボトムアドレスを減算する。この減算結果
が負でないの場合には、第1の数値からブロックサイズ
を減算して第2の数値を求め、この第2の数値をサーキ
ュラアドレッシングにおける次のアドレスとする。一
方、第1の数値からボトムアドレスを減算した結果が負
である場合には、第1の数値をサーキュラアドレッシン
グにおける次のアドレスとする。
【0004】次に、ステップが負の数であり、ボトムア
ドレスからトップアドレスの方向にアクセスする場合に
ついて説明する。ステップが正の数である場合と同様
に、最初に、現在のアドレスにステップを加算して第1
の数値を求める。この第1の数値が次のアドレスとなる
が、この第1の数値がトップアドレスよりも小さいか否
かを判定するために、第1の数値からトップアドレスを
減算する。この減算結果が負の場合には、第1の数値に
ブロックサイズを加算して第2の数値を求め、この第2
の数値をサーキュラアドレッシングにおける次のアドレ
スとする。一方、第1の数値からトップアドレスを減算
した結果が0または正である場合には、第1の数値をサ
ーキュラアドレッシングにおける次のアドレスとする。
以上に述べた手法により、トップアドレスからボトムア
ドレスの方向、またはボトムアドレスからトップアドレ
スの方向へのサーキュラアドレッシングにおけるアドレ
スが生成される。
【0005】一方、所定の記憶領域に記憶されたプログ
ラムを所定の回数だけ繰り返し実行する必要がある場合
がある。このような所定の記憶領域へのアクセス(ブロ
ックリピートアクセス)を行う場合には、ブロックリピ
ートアドレッシングと呼ばれるアドレッシング方法が採
られることがある。以下、図11を参照してブロックリ
ピートアドレッシングについて説明する。図11はブロ
ックリピートアドレッシングにおける従来のアドレス生
成回路9の構成を示す図である。図11に示すように、
アドレス生成回路9は、プログラムカウンタ(PC)9
00、比較回路902,916、レジスタ(END)9
04、セレクタ906、レジスタ(START)90
8、インクリメント回路910、デクリメント回路91
2、およびレジスタ(BRCR)914から構成され
る。まず、ブロックリピートを行う前に、レジスタ90
4に繰り返し実行するプログラムのボトムアドレス(末
尾アドレス)が設定され、レジスタ908に当該プログ
ラムのトップアドレス(先頭アドレス)が設定され、レ
ジスタ914に繰り返し回数が初期値として設定され
る。
【0006】プロックリピートアクセスが開始される
と、動作周期毎にプログラムカウンタ900からアドレ
スが発生される。このアドレスはメモリ(図示せず)と
インクリメント回路910に供給されると共に、比較回
路902にも出力される。インクリメント回路910
は、入力したアドレスに1を加算(インクリメント)し
てセレクタ906に出力する。比較回路902は、プロ
グラムカウンタ900が出力するアドレスとレジスタ9
04に記憶されているボトムアドレスとを比較し、これ
らの一致を検出する。比較回路902がプログラムカウ
ンタ900のアドレスとボトムアドレスとの一致を検出
しない場合には、信号PC=ENDは不活性化状態(ロ
ーレベル)であり、セレクタ906は入力I0側を選択
してプログラムカウンタ900に出力する。すなわち、
動作周期におけるアドレスとボトムアドレスとが一致し
ない場合には、その動作周期のアドレスがインクリメン
トされ、次の動作周期におけるアドレスとしてプログラ
ムカウンタ900から出力される。
【0007】比較回路902がプログラムカウンタ90
0が出力するアドレスとボトムアドレスとの一致を検出
した場合には信号PC=ENDが活性化状態(ハイレベ
ル)となり、セレクタ906は入力I1側を選択してプ
ログラムカウンタ900に出力する。すなわち、アドレ
スがボトムアドレスに達した場合には、次の動作周期に
おけるアドレスとしてトップアドレスがプログラムカウ
ンタ900から出力される。更に、信号PC=ENDが
活性化状態になると、レジスタ914は繰り返し回数を
デクリメント回路912により1つ減算(デクリメン
ト)して、そのデクリメントした値を記憶すると共に比
較回路916に出力する。つまり、トップアドレスから
ボトムアドレスの方向にブロックリピートプログラムの
全領域を実行するアドレスの一連の生成が一回終了する
毎に、レジスタ914に記憶されている繰り返し回数が
デクリメントされることになる。
【0008】以上に述べた動作が所定の回数繰り返され
ると、レジスタ914の値が0になる。比較回路916
は、レジスタ914に記憶されている繰り返し回数と0
とを比較して、これらが一致した場合には禁止信号を活
性化状態(ハイレベル)とする。禁止信号が活性化され
ると、アドレス生成回路9はブロックリピートアクセス
動作を終了する。
【0009】
【発明が解決しようとする課題】サーキュラアドレッシ
ングにおける従来のアドレス生成は、上述したように、
3つの演算処理(加算または減算)により次のアドレス
を生成しているので、そのアドレス生成回路は3つの演
算器を必要とする。具体的には、従来のアドレス生成回
路は3つの加算器を必要とする。加算器は一般的にその
回路規模が比較的大きなハードウエアであるので、この
回路規模の大きな加算器を3つ含む従来のアドレス生成
回路は半導体チップに占める面積が大きいという問題が
ある。また、アドレス生成の計算のために、ステップと
トップアドレスとボトムアドレスとを記憶しておく必要
があるという問題がある。
【0010】また、従来のブロックリピートアドレッシ
ングを行うアドレス生成回路を、他段パイプライン機構
を有する演算処理装置(CPU)に用いた場合、パイプ
ライン機構の段数によってブロックリピートのサイズに
制限を加える必要があるという問題がある。すなわち、
CPUがブロックリピートアドレッシングによりパイプ
ライン機構にボトムアドレスの命令を取り込んだ時点で
アドレス生成回路の繰り返し回数のデクリメントが行わ
れるので、この時点でCPUに対して割り込みが発行さ
れると、割り込み処理から戻ったときに、実行されてい
ない命令(ボトムアドレスの命令)があるのにも拘ら
ず、繰り返し回数を記憶しているレジスタの内容は既に
デクリメントされており、前回の一連のプログラムの実
行が完了したことを示していることになる。従って、ボ
トムアドレスからパイプラインの段数分前の命令に対し
ては割り込みを禁止する必要があり、これに伴ってブロ
ックリピートのサイズ(ボトムアドレスとトップアドレ
スの差に1を加えた数)をパイプラインの段数に1を加
えた数値以上とするような制限が必要になる。
【0011】本発明のアドレス生成回路は、以上に述べ
た従来技術の問題点に鑑みてなされたものであり、サー
キュラアドレッシングにおいて、アドレス生成のために
行う演算処理を簡略化し、簡単な回路構成のサーキュラ
アドレッシング用アドレス生成回路を提供することを第
1の目的とする。また、ブロックリピートアドレッシン
グにおいて、CPUのパイプライン機構の段数によりブ
ロックリピートのサイズを制限する必要、およびボトム
アドレス付近の命令に対する割り込みの禁止などのプロ
グラム作成上の制限が生じないブロックリピートアドレ
ッシング用アドレス生成回路を提供することを第2の目
的とする。
【0012】
【課題を解決するための手段】上記第1の目的を解決す
るために、本発明のサーキュラアドレッシング用アドレ
ス生成回路は、所定の記憶領域に対してステップ値毎に
繰り返しアクセスするためのアドレスを生成するアドレ
ス生成回路であって、上記記憶領域の容量に対応する現
在のアドレスの下位側ビット部を抽出する手段と、上記
ステップ値が正であるときには上記下位側ビット部と上
記ステップ値の和と上記記憶領域の容量値との減算を行
い、上記減算結果が負でない場合には上記減算結果をイ
ンデックスとして出力し、上記減算結果が負の場合には
上記下位側ビット部と上記ステップ値との和をインデッ
クスとして出力し、上記ステップ値が負であるときには
上記下位側ビット部と上記ステップ値との加算を行い、
上記加算結果が負でないときには上記加算結果をインデ
ックスとして出力し、上記加算結果が負であるときには
上記下位側ビット部と上記ステップ値と上記記憶領域の
容量値との加算結果をインデックスとして出力する手段
と、上記インデックスと上記現在のアドレスの上記下位
側ビット部以外のビット部から次のアドレスを生成する
手段とを有する。
【0013】また上記第2の目的を解決するために、本
発明のブロックリピートアドレッシング用アドレス生成
回路は、第1のアドレスを記憶する第1の記憶手段と、
上記第1のアドレスまたは上記第1のアドレスよりも大
きな値の第2のアドレスを記憶する第2の記憶手段と、
入力する数値に所定の値を加算して出力する加算手段
と、上記第1のアドレスまたは上記加算手段から出力さ
れる値の何れか一方を選択して上記加算手段に出力する
アドレス出力手段と、上記第2のアドレスと上記アドレ
ス出力手段から出力される値とを比較してそれらが一致
するときには一致信号を出力する比較手段と、所定の数
値を記憶する第3の記憶手段と、入力する数値から所定
の値を減算して上記第3の記憶手段に出力する減算手段
と、上記一致信号が出力されると、上記減算手段から出
力された数値に応じて、上記アドレス出力手段が上記第
1のアドレスを出力するように制御すると共に、上記減
算回路が上記第3の記憶手段の数値に対して減算処理を
行うように制御する制御手段とを有する。
【0014】
【作用】所定の容量の記憶領域に対してステップ値毎に
繰り返しアクセスする、すなわちサーキュラアドレッシ
ングを行う場合、そのアドレスは上記記憶領域に対応し
た下位側ビット部のみが変化する。そこで、現在のアド
レスから上記下位側ビット部を抽出する。上記ステップ
値が正のときには、上記記憶領域に対するアクセスは、
その先頭アドレスから末尾アドレスの方向に行われるの
で、上記下位側ビット部と上記ステップ値との和と上記
記憶領域の容量との減算を行い、上記下位側ビット部と
上記ステップ値とを加算した値が上記記憶領域の範囲内
にあるか否かを判断する。上記減算結果が負でない場合
は、上記下位側ビット部と上記ステップ値とを加算した
値が上記記憶領域の範囲外にあることを示しているの
で、上記下位側ビット部と上記ステップ値との和と上記
記憶領域の容量との減算結果をインデックスとして出力
する。反対に、上記減算結果が負である場合は、上記下
位側ビット部と上記ステップ値とを加算した値が上記記
憶領域の範囲内にあることを示しているので、上記下位
側ビット部と上記ステップ値との和をインデックスとし
て出力する。
【0015】上記ステップ値が負のときには、上記記憶
領域に対するアクセスは、その末尾アドレスから先頭ア
ドレスの方向に行われるので、上記下位側ビット部と上
記ステップ値との加算を行い、上記下位側ビット部と上
記ステップ値とを加算した値が上記記憶領域の範囲内に
あるか否かを判断する。上記加算結果が負でない場合
は、上記下位側ビット部と上記ステップ値とを加算した
値が上記記憶領域の範囲内にあることを示しているの
で、上記下位側ビット部と上記ステップ値との加算結果
をインデックスとして出力する。反対に、上記加算結果
が負である場合は、上記下位側ビット部と上記ステップ
値とを加算した値が上記記憶領域の範囲外にあることを
示しているので、上記下位側ビット部と上記ステップ値
と上記記憶領域野容量との加算結果をインデックスとし
て出力する。現在のアドレスの上記下位側ビット部以外
のビット部と、上述のようにして生成されたインデック
スとから、次のアクセス対象のアドレスを生成する。
【0016】所定の記憶領域のプログラムを繰り返し実
行する、すなわちブロックリピート処理においては、上
記記憶領域の末尾アドレスに達すると、繰り返し回数の
デクリメントを行うと共に、次のアドルスとして上記記
憶領域の先頭アドレスを設定する。このブロックリピー
ト処理をパイプライン制御で実行しているときに、割り
込み処理が発生すると、繰り返し回数のデクリメントが
正確になされない場合がある。そこで本発明のアドレス
生成回路は、上記記憶領域の末尾アドルスの命令の実行
を確認してから上記繰り返し回数のデクリメント処理を
行うようにし、また上記繰り返し回数のデクリメント処
理の実行を確認してから次のアドレスとしての上記先頭
アドレスの設定を行うようにしている。
【0017】
【実施例】本発明に係わるサーキュラアドレッシングに
おけるアドレス生成の概略を図9を参照して説明する。
従来のアドレス生成では直接的に次のアドレスを求めて
いたが、本発明では相対的に次のアドレスを求める。
尚、以下の説明において、アドレスおよびブロックサイ
ズは32ビット構成の2進数であるとする。図9におい
て、ARnは現在のアドレス、BKはブロックサイズ、
EB1はサーキュラブロックのトップアドレス、EB2
はサーキュラブロックのボトムアドレス、Indexは
現在のアドレスにおけるインデックスであり、Inde
x’は次のアドレスにおけるインデックスであり、AR
n’はサーキュラアドレッシングにおける次のアドレス
であり、14はインデックス生成回路である。
【0018】(1) ブロックサイズBKにおいて1が存在
する最上位のビットを検出する。図9では、ビットNを
1が存在する最上位のビットとする。 (2) 次に、現在のアドレスARnのビット31〜ビット
(N+1)の値とビットN〜ビット0が全て0である値
からトップアドレスEB1のビット31〜ビット0の値
を求め、現在のアドレスARnのビット31〜ビット
(N+1)の値とブロックサイズBKのビットN〜ビッ
ト0の値からボトムアドレスEB2のビット31〜ビッ
ト0の値を求める。 (3) 次に、サーキュラアドレッシングにおいてステップ
値毎にインクリメントまたはデクリメントされるインデ
ックスIndexを求める。ビット31〜ビット(N+
1)が全て0の値と現在のアドレスARnのビットN〜
ビット0の値からインデックスIndexのビット31
〜ビット0の値が求められる。 (4) 次に、インデックスIndexにステップ値を加算
して新たなインデックスIndex’を求める。ここ
で、インデックスIndexにステップ値を加算した値
がブロックサイズBK以上となった場合にはその加算値
からブロックサイズBKを減算した値を新たなインデッ
クスIndex’とし、上記加算値が負となった場合に
はその加算値にブロックサイズBKを加算した値を新た
なインデックスIndex’とする。 (5) 次に、アドレスARnのビット31〜ビット(N+
1)の値と新たなインデックスIndex’の値(ビッ
トN〜ビット0)から新たなアドレスARn’のビット
31〜ビット0の値を求める。以下、上記(3) 〜(5) の
ステップを繰り返すことにより、サーキュラアドレッシ
ングにおけるアドレス生成が実現される。尚、上記In
dex’はインデックス生成ロジック14にて生成され
る。
【0019】次に、図10を参照して、サーキュラアド
レッシングにおけるインデックス生成の詳細を説明す
る。図10はインデックス生成処理のアルゴリズムを示
すフローチャートである。図10において、iは作業用
の変数を示し、BKmask[a:b]は作業用の数値
BKmaskのビットaからビットbまでの値を示し、
BKmask[c]はBKmaskのビットcの値を示
し、BK[a:b]はブロックサイズのビットaからビ
ットbまでの値を示し、BK[c]はブロックサイズの
ビットcの値を示し、ARn[a:b]はアドレス(ポ
インタ)のビットaからビットbまでの値を示し、In
dexはインデックスの値を示し、Stepはインデッ
クスに増減される数値を示し、Index’はインデッ
クス生成処理によって新たに生成されたインデックスを
示す。
【0020】処理101(S101)において、iに3
1が代入される。処理102(S102)において、i
の値が負であるか否かが判断され、iの値が0以上であ
る場合にはS503の処理に進み、iの値が負の場合に
はS105の処理に進む。処理103(S103)にお
いて、BK[i]の値とBKmask[i+1]の値と
の論理和が算出され、その結果がBKmask[i]に
代入される。ここで、i=31のときにはBK[31]
がBKmask[31]に代入される。処理104(S
104)においては、iから1が減算(iがデクリメン
ト)される。この一連の処理によりブロックサイズBK
において1が存在する最上位のビットが検出され、図9
に示すようにブロックサイズBKのビットNがその最上
位のビットである場合には、BKmaskのビット31
〜ビットN+1の値は全て0となり、ビットN〜ビット
0の値は全て1となる。
【0021】処理105(S105)において、ARn
[31:0]の値とBKmask[31:0]の値との
論理積が算出され、その結果がIndexに代入され
る。ここで、図9の場合には、Indexのビット31
〜ビット(N+1)の値は全て0となり、Index
[N:0]はARn[N:0]と等しい値となる。処理
106(S106)において、Stepの値が負である
か否かが判断されて、Stepの値が負である、すなわ
ち、ボトムアドレスからトップアドレスの方向にサーキ
ュラアドレッシングが行われる場合にはS107の処理
に進み、Stepの値が0以上である、すなわち、トッ
プアドレスからボトムアドレスの方向にサーキュラアド
レッシングが行われる場合にはS110の処理に進む。
【0022】処理107(S107)において、Ind
exの値とStepの値との和が負であるか否かが判断
されて、Indexの値とStepの値との和が負であ
る場合、すなわち、次のアドレスの値がトップアドレス
とボトムアドレスの範囲外にある場合にはS108の処
理に進み、Indexの値とStepの値との和が0以
上である場合、すなわち、次のアドレスの値がトップア
ドレスとボトムアドレスの範囲内にある場合にはS10
9の処理に進む。処理108(S108)において、I
ndexの値とStepの値とBKの値とが加算され
て、新たなIndex’が生成される。処理109(S
109)において、Indexの値とStepの値とが
加算されて、新たなIndex’が生成される。
【0023】処理110(S110)において、Ind
exの値とStepとの値の和と、BKの値との減算が
行われて、その演算結果が負であるか否かが判断され
る。上記演算結果が負である、すなわち、次のアドレス
の値がトップアドレスとボトムアドレスの範囲内にある
場合にはS111の処理に進み、上記演算結果が0以上
である、すなわち、次のアドレスの値がトップアドレス
とボトムアドレスの範囲外にある場合にはS112の処
理に進む。処理111(S111)において、Inde
xの値とStepの値とが加算されて、新たなInde
x’が生成される。処理112(S112)において、
Indexの値とStepとの値の和と、BKの値との
減算が行われて、新たなIndex’が生成される。
【0024】以上の一連の処理により新たなインデック
スIndex’が生成され、図9に示すように、アドレ
スARnのビット31〜ビット(N+1)の値と新たな
インデックスIndex’のビットN〜ビット0の値と
から、新たなアドレスARn’のビット31〜ビット0
の値が生成される。BKmaskが生成された後のイン
デックスは、S105以降の処理を実行することにより
生成される。
【0025】以下、図1を参照して本発明のサーキュラ
アドレッシング用アドレス生成回路30を説明する。
尚、本実施例の各演算器のビット数は32ビット構成で
あるとする。尚、負の数は2の方数形式で表されるもの
とする。図1は本発明の第1実施例のアドレス生成回路
30の構成を示す図である。加減制御回路300は、加
減制御信号(A/S)に従い、第1の動作モードまたは
第2の動作モードとなる。加減制御信号(A/S)が加
算命令である第1の動作モードにおいては、入力端子S
tepに入力されるステップをそのまま加算回路302
の入力端子Aに出力する。このとき、加算回路302の
入力端子Cにキャリーは出力されず、その値は0であ
る。一方、加減制御信号(A/S)が減算命令である第
2の動作モードにおいては、入力端子Stepに入力さ
れるステップの各ビットを反転した数値を算出して加算
回路302の入力端子Aに出力すると共に、加算回路3
02の入力端子Cにキャリー(1)を出力する。尚、加
算回路302の入力端子Aおよび入力端子Cに出力され
る2つの信号がステップ値を構成する。以上の説明から
明らかなように、加減制御信号(A/S)によって加減
制御回路300で入力端子Stepに入力されるステッ
プの符合を変換する場合には、2の補数形式で変換され
ることになる。
【0026】加減制御回路306は、加算回路302の
入力端子Aに出力されるステップ値の最上位ビット(M
SB)の値に従い、第1の動作モードまたは第2の動作
モードとなる。上記MSBが0、すなわちステップ値が
正であり、サーキュラブロックのトップアドレスからボ
トムアドレスの方向にサーキュラアドレッシングを行う
場合には第2の動作モードとなり、入力端子BKから入
力されるブロックサイズの各ビットを反転した数値を算
出して加算回路310の入力端子Bに出力すると共に、
加算回路310の入力端子Cにキャリー(1)を出力す
る。一方、上記MSBが1、すなわちステップ値が負で
あり、ボトムアドレスからトップアドレスの方向にサー
キュラアドレッシングを行う場合には第1の動作モード
となり、入力端子BKから入力されるブロックサイズを
そのまま加算回路310の入力端子Bに出力する。尚、
このとき加算回路310の入力端子Cにキャリーは出力
されず、その値は0である。
【0027】ビット分離回路304は、BKmaskに
基づいて入力端子ARnから入力されるアドレス(ポイ
ンタ)を上位側のビット部分と下位側のビット部分とに
分離し、それぞれビット多重回路314と加算回路30
2の入力端子Bに出力する。尚、BKmaskは図10
に示す処理101〜処理104で生成される数値であ
り、ビット31〜ビット(N+1)の値は全て0であ
り、ビットN〜ビット0の値は全て1である。加算回路
302の入力端子Bに出力されるデータのビット31〜
ビット(N+1)の値は全て0であり、ビットN〜ビッ
ト0の値はビット分離回路304に入力するアドレスの
ビットN〜ビット0の値と同じであり、この加算回路3
02の入力端子Bに出力されるデータは実質的には図1
0にて説明したIndex(インデックス)である。一
方、ビット多重回路314に出力されるデータのビット
31〜ビット(N+1)の値はビット分離回路304に
入力するアドレスのビット31〜ビット(N+1)の値
と同じである。
【0028】加算回路302は、入力端子A,B,Cに
入力されたインデックスとステップ値との全加算演算を
行い、その全加算演算結果(信号ADD2)を加算回路
310の入力端子Aとマルチプレクサ312の入力端子
I1に出力し、キャリーアウト信号(Carry2)を
キャリーチェック回路308に出力する。加算回路31
0は、入力端子A,B,Cにそれぞれ入力された信号A
DD2、各ビットが反転されたブロックサイズまたはブ
ロックサイズ、およびキャリー信号(1または0)につ
いて全加算演算を行い、その全加算演算結果(信号AD
D3)をマルチプレクサ312の入力端子I2に出力
し、キャリーアウト信号(Carry3)をキャリーチ
ェック回路308に出力する。
【0029】マルチプレクサ312は、キャリーチェッ
ク回路308から出力される制御信号SELに従い、入
力端子I1,I2に入力される信号ADD2,ADD3
の何れか一方を選択し、新たなインデックス(Inde
x’)としてビット多重回路314に出力する。ビット
多重回路314は、BKmaskに基づいてビット分離
回路304から出力されるデータの上位側のビット部分
とマルチプレクサ312から出力される新たなインデッ
クスの下位側のビット部分とを多重化して、その多重化
したデータを出力端子ARn’に新たなアドレスとして
出力する。この新たなアドレスのビット31〜ビット
(N+1)の値は入力端子ARnに入力したアドレスの
ビット31〜ビット(N+1)の値と同じであり、新た
なアドレスのビットN〜ビット0の値はマルチプレクサ
312から出力される新たなインデックスのビットN〜
ビット0の値と同じである。
【0030】キャリーチェック回路308は、加算回路
302の入力端子Aに出力されるステップ値の最上位ビ
ット(MSB)、加算回路302のキャリーアウト信号
(Carry2)、および加算回路310のキャリーア
ウト信号(Carry3)に応じた制御信号SELをマ
ルチプレクサ312に出力する。上記MSBが1であ
り、ステップ値が負の場合、すなわちサーキュラアドレ
ッシングがボトムアドレスからトップアドレスの方向に
行われる場合には、加算回路302のキャリーアウト信
号のみを監視し、キャリーが出力される、すなわちキャ
リーアウト信号(Carry2)が1であるときにはマ
ルチプレクサ312が信号ADD2を選択するように制
御し、キャリーが出力されない、すなわちキャリーアウ
ト信号(Carry2)が0であるときにはマルチプレ
クサ312が信号ADD3を選択するように制御する。
一方、上記MSBが0であり、ステップ値が正の場合、
すなわちサーキュラアドレッシングがトップアドレスか
らボトムアドレスの方向に行われる場合には、加算回路
302および加算回路310のキャリーアウト信号を監
視し、何れか一方の加算回路からキャリーが出力される
ときにはマルチプレクサ312が信号ADD3を選択す
るように制御し、何れの加算回路からもキャリーが出力
されないときにはマルチプレクサ312が信号ADD2
を選択するように制御する。
【0031】以下に、加算回路302に出力されるステ
ップ値が正であり、トップアドレスからボトムアドレス
の方向にサーキュラアドレッシングが行われる場合のア
ドレス生成回路30の動作について説明する。尚、加減
制御回路300,306、加算回路302,310、マ
ルチプレクサ312およびキャリーチェック回路308
が、図9におけるインデックス生成回路14に対応す
る。加減制御回路300は、正のステップ値を加算回路
302に出力する。この場合、加算回路302の入力端
子Aに出力されるステップ値のMSBは0となるので、
キャリーチェック回路308は加算回路302および加
算回路310のキャリーアウト信号の双方を監視し、加
減制御回路306は入力するブロックサイズの各ビット
を反転して加算回路310に出力すると共に、加算回路
310にキャリーを出力する。
【0032】加算回路302は、インデックスとステッ
プ値との全加算演算を行い、加算回路310は、信号A
DD2とブロックサイズの各ビットが反転された信号と
キャリー信号との全加算演算、すなわち信号ADD2と
ブロックサイズとの減算処理を行う。すなわち、加算回
路302と加算回路310とで図10のS110の処理
を行っており、インデックスとステップ値との和とブロ
ックサイズとの減算結果が負であるか否かの判定を行
う。従って、インデックスとステップ値との和とブロッ
クサイズとの減算結果が負である、すなわち加算回路3
02および加算回路310の双方からキャリーアウト信
号が出力されない場合には、マルチプレクサ312はイ
ンデックスにステップ値が加算された信号ADD2、す
なわち現在のアドレスのビットN〜ビット0の値にステ
ップ値が加算された値を選択してビット多重回路314
に出力する。一方、インデックスとステップとの和とブ
ロックサイズとの減算結果が0以上である、すなわち加
算回路302または加算回路310の何れか一方からキ
ャリーアウト信号が出力される場合には、マルチプレク
サ312は信号ADD3、すなわちインデックスとステ
ップ値との和とブロックサイズとの減算結果を選択して
ビット多重回路314に出力する。
【0033】ビット多重回路314は、ビット分離回路
304から出力されるデータのビット31〜ビット(N
+1)、すなわち現在のアドレスのビット31〜ビット
(N+1)の値とマルチプレクサ312から出力される
新たなインデックスのビットN〜ビット0の値とを組み
合わせて、新たなアドレスとして出力する。以上の一連
の動作により、トップアドレスからボトムアドレスの方
向へのサーキュラアドレッシングにおけるアドレス生成
が実現される。
【0034】次に、加算回路302に出力されるステッ
プ値が負であり、ボトムアドレスからトップアドレスの
方向にサーキュラアドレッシングが行われる場合のアド
レス生成回路30の動作について説明する。加減制御回
路300は、負のステップ値を加算回路302に出力す
る。この場合、加算回路302の入力端子Aに出力され
るステップ値のMSBは1であるので、キャリーチェッ
ク回路308は加算回路302のキャリーアウト信号の
みを監視し、加減制御回路306は入力するブロックサ
イズをそのまま加算回路310に出力する。このとき、
加算回路310にキャリーは出力されない。
【0035】加算回路302はインデックスと負のステ
ップ値との全加算演算を行う。すなわち、加算回路30
2は図10におけるS107の処理を行っており、イン
デックスとステップ値との和が負であるか否かの判定を
行う。また、加算回路310は、信号ADD2とブロッ
クサイズとの全加算演算を行う。従って、インデックス
とステップ値との和が負である、すなわち加算回路30
2からキャリーアウト信号が出力されない場合には、マ
ルチプレクサ312はインデックスとステップ値とブロ
ックサイズとの和である信号ADD3を選択してビット
多重回路314に出力する。一方、インデックスとステ
ップ値との和が0以上である、すなわち加算回路302
からキャリーアウト信号が出力される場合には、マルチ
プレクサ312はインデックスとステップ値との和であ
る信号ADD2、すなわち現在のアドレスのビットN〜
ビット0の値にステップを加算した値を選択してビット
多重回路314に出力する。
【0036】ビット多重回路314は、ビット分離回路
304から出力されるデータのビット31〜ビット(N
+1)、すなわち現在のアドレスのビット31〜ビット
(N+1)の値とマルチプレクサ312から出力される
新たなインデックスのビットN〜ビット0の値とを組み
合わせて、新たなアドレスとして出力する。以上の一連
の動作により、ボトムアドレスからトップアドレスの方
向へのサーキュラアドレッシングにおけるアドレス生成
が実現される。
【0037】以下、図2を参照して本発明のサーキュラ
アドレッシング用アドレス生成回路40を説明する。
尚、本実施例の各演算器のビット数も32ビット構成で
あるとする。図2は本発明の第2実施例のアドレス生成
回路40の構成を示す図である。加減制御回路400は
図1に示す加減制御回路300と同様の機能を有し、加
減制御信号(A/S)に従って、第1の動作モードまた
は第2の動作モードをとる。加減制御信号(A/S)が
加算命令である第1の動作モードにおいては、入力端子
Stepに入力されるステップをそのまま部分加算回路
406の入力端子I1に出力する。尚、このとき部分加
算回路408の入力端子C1にはキャリーは出力されな
い。一方、加減制御信号(A/S)が減算命令である第
2の動作モードにおいては、入力端子Stepに入力さ
れるステップの各ビットを反転した数値を算出して部分
加算回路406の入力端子I1に出力すると共に、部分
加算回路408の入力端子C1にキャリーを出力する。
尚、部分加算回路406の入力端子I1と部分加算回路
408の入力端子C1に出力される信号とがステップ値
を構成する。
【0038】加減制御回路402は部分加算回路406
の入力端子I1に出力されるステップ値の最上位ビット
(MSB)に制御される。上記MSBが0であり、サー
キュラブロックのトップアドレスからボトムアドレスの
方向にサーキュラアドレッシングを行う場合には、入力
端子BKから入力されるブロックサイズの各ビットを反
転した数値を算出して部分加算回路406の入力端子I
2に出力すると共に、部分加算回路408の入力端子C
2にキャリーを出力する。一方、上記MSBが1であ
り、ボトムアドレスからトップアドレスの方向にサーキ
ュラアドレッシングを行う場合には、部分加算回路40
6の入力端子I2に0のデータを出力し、部分加算回路
408の入力端子C2にキャリーを出力しない。
【0039】ゲート回路412は、キャリーチェック回
路410から出力される制御信号(SEL1)に従っ
て、0のデータを加算回路414の入力端子Bに出力す
るか、または入力端子BKに入力されるブロックサイズ
を加算回路414の入力端子Bに出力するかを選択す
る。
【0040】ビット分離回路404は図1に示すビット
分離回路304と同様の機能を有しており、BKmas
kに基づいて入力端子ARnから入力されるアドレスを
上位側のビット部分と下位側のビット部分とに分離し、
それぞれビット多重回路416と部分加算回路406の
入力端子I3に出力する。ビット多重回路416は図1
に示すビット多重回路314と同様の機能を有してお
り、BKmaskに基づいてビット分離回路404から
出力されるデータの上位側のビット部分と加算回路41
4から出力されるデータ(信号ADD3)の下位側のビ
ット部分とを多重化し、その多重化したデータを出力端
子ARn’に新たなアドレスとして出力する。
【0041】尚、BKmask、部分加算回路406の
入力端子I3に出力されるデータ、ビット分離回路40
4からビット多重回路416に出力されるデータ、加算
回路414から出力されるデータ、およびビット多重回
路416から出力されるデータは、図1において説明し
たものと同様のデータフォーマットである。また、部分
加算回路406の入力端子I3に出力されるデータはI
ndexであり、加算回路414から出力されるデータ
はIndex’である。
【0042】部分加算回路406と部分加算回路408
は3入力の全加算回路420を構成し、この全加算回路
420は図3に示す構成となっている。この全加算回路
420は、入力端子I1,I2,I3,C1,C2にそ
れぞれ入力されたステップ値、各ビットが反転されたブ
ロックサイズまたは0、インデックス、およびキャリー
信号(C2)についての全加算演算を行い、その全加算
演算結果(信号ADD2)を加算回路414の入力端子
Aに出力し、2つのキャリーアウト信号(Carry
2,Carry3)をキャリーチェック回路410に出
力する。加算回路414は、入力端子A,Bにそれぞれ
入力された信号ADD2とゲート回路412の出力信号
との加算演算を行って、その加算演算結果(信号ADD
3)を新たなインデックス(Index’)としてビッ
ト多重回路416に出力する。
【0043】キャリーチェック回路410は、全加算回
路420に出力されるステップ値の最上位ビット(MS
B)、および全加算回路420が出力する2つのキャリ
ーアウト信号に応じた制御信号(SEL1)をゲート回
路412に出力する。上記MSBが1である場合、すな
わちサーキュラアドレッシングがボトムアドレスからト
ップアドレスの方向に行われる場合には2つのキャリー
アウト信号(Carry2,Carry3)の双方を監
視し、キャリーが出力される、すなわち何れか一方のキ
ャリーアウト信号が1であるときにはゲート回路412
が0を出力するように制御し、キャリーが出力されな
い、すなわち2つのキャリーアウト信号が共に0である
ときにはゲート回路412がブロックサイズを出力する
ように制御する。一方、上記MSBが0である場合、す
なわちサーキュラアドレッシングがトップアドレスから
ボトムアドレスの方向に行われる場合には2つのキャリ
ーアウト信号(Carry2,Carry3)を監視
し、何れか一方のキャリーアウト信号が1であるときに
はゲート回路412が0を出力するように制御し、双方
のキャリーアウト信号が0であるときにはゲート回路4
12がブロックサイズを出力するように制御する。
【0044】図3は部分加算回路406と部分加算回路
408とで構成される3入力の全加算回路420の要部
を示す図である。部分加算回路406は、入力端子I
1,I2,I3に入力される各信号のビット31〜ビッ
ト0についてそれぞれ加算演算を行ってキャリーアウト
信号(Carry2)を生成する。部分加算回路408
は、部分加算回路406の加算演算結果と加減制御回路
400,401からそれぞれ出力される2つのキャリー
信号(C1,C2)との加算演算を行って全加算演算結
果(ビット31〜ビット0)とキャリーアウト信号(C
arry3)を生成する。
【0045】以下に、全加算回路420に出力されるス
テップ値が正の数であり、トップアドレスからボトムア
ドレスの方向にサーキュラアドレッシングが行われる場
合のアドレス生成回路40の動作について説明する。
尚、加減制御回路400,402、ゲート回路412、
部分加算回路406,408、加算回路414、および
キャリーチェック回路410が、図9のおけるインデッ
クス生成回路14に対応する。加減制御回路400は、
正のステップ値を全加算回路420に出力する。この場
合、全加算回路420に出力されるステップ値のMSB
は0となるので、キャリーチェック回路410は全加算
回路420から出力される2つのキャリーアウト信号の
双方を監視する。加減制御回路401は、入力するブロ
ックサイズの各ビットを反転して全加算回路420に出
力すると共に、全加算回路420にキャリーを出力す
る。
【0046】全加算回路420は、ステップ値とインデ
ックスとブロックサイズの各ビットが反転された信号と
加減制御回路401から出力されるキャリー信号との全
加算演算、すなわちインデックスとステップ値との和と
ブロックサイズとの減算処理を行う。全加算回路420
は図10のS110の処理を行っており、インデックス
とステップ値との和とブロックサイズとの減算結果が負
であるか否かの判定を行う。従って、インデックスとス
テップ値との和とブロックサイズとの減算結果が負であ
る、すなわち全加算回路420からキャリーアウト信号
が出力されない場合には、ゲート回路412は入力する
ブロックサイズをそのまま加算回路414に出力する。
加算回路414は、全加算回路420から出力される信
号ADD2とゲート回路412から出力されるブロック
サイズとの加算演算を行い、インデックスにステップ値
が加算された信号、すなわち現在のアドレスのビットN
〜ビット0の値にステップ値が加算された値を算出して
ビット多重回路416に出力する。一方、インデックス
とステップ値との和とブロックサイズとの減算結果が0
以上である、すなわち全加算回路420からキャリーア
ウト信号が出力される場合にはゲート回路412は0を
加算回路414に出力する。加算回路414は全加算回
路420から出力される信号ADD2と0との加算演算
を行い、インデックスとステップ値との和とブロックサ
イズとの減算結果を算出してビット多重回路416に出
力する。
【0047】ビット多重回路416は、ビット分離回路
404から出力されるデータのビット31〜ビット(N
+1)、すなわち現在のアドレスのビット31〜ビット
(N+1)の値と、加算回路414から出力される新た
なインデックスのビットN〜ビット0の値とを組み合わ
せて、新たなアドレスとして出力する。以上の一連の動
作により、トップアドレスからボトムアドレスの方向へ
のサーキュラアドレッシングにおけるアドレス生成が実
現される。
【0048】次に、全加算回路420に出力されるステ
ップ値が負の数であり、ボトムアドレスからトップアド
レスの方向にサーキュラアドレッシングが行われる場合
のアドレス生成回路40の動作について説明する。加減
制御回路400は、負のステップ値を全加算回路420
に出力する。この場合、全加算回路420に出力される
ステップ値のMSBは1であるので、キャリーチェック
回路410は全加算回路420から出力される2つのキ
ャリーアウト信号の双方を監視する。また、加減制御回
路402は、0のデータを全加算回路420に出力し、
全加算回路420にキャリー(C2)を出力しない。
【0049】全加算回路420は、ステップ値とインデ
ックスと0との全加算演算を行う。全加算回路420は
図10におけるS107の処理を行っており、インデッ
クスとステップ値との和が負であるか否かの判定を行
う。従って、インデックスとステップ値との和が負であ
る、すなわち全加算回路420からキャリーアウト信号
が出力されない場合には、ゲート回路412は入力する
ブロックサイズをそのまま加算回路414に出力する。
加算回路414は、全加算回路420から出力される信
号ADD2とゲート回路412から出力されるブロック
サイズとの加算演算を行い、インデックスとステップ値
とブロックサイズとの和を算出してビット多重回路41
6に出力する。一方、インデックスとステップ値との和
が0以上である、すなわち全加算回路420からキャリ
ーアウト信号が出力される場合には、ゲート回路412
は0を加算回路414に出力する。加算回路414は、
全加算回路420から出力される信号ADD2と0との
加算演算を行い、インデックスとステップ値との和、す
なわち現在のアドレスのビットN〜ビット0の値にステ
ップ値を加算した値を算出してビット多重回路416に
出力する。
【0050】ビット多重回路416は、ビット分離回路
404から出力されるデータのビット31〜ビット(N
+1)、すなわち現在のアドレスのビット31〜ビット
(N+1)の値と、加算回路414から出力される新た
なインデックスのビットN〜ビット0の値とを組み合わ
せて、新たなアドレスとして出力する。以上の一連の動
作により、ボトムアドレスからトップアドレスの方向へ
のサーキュラアドレッシングにおけるアドレス生成が実
現される。
【0051】以下、図4を参照して本発明のサーキュラ
アドレッシング用アドレス生成回路60を説明する。
尚、本実施例の各演算器のビット数も32ビット構成で
あるとする。図4は本発明の第3実施例のアドレス生成
回路60の構成を示す図である。加減制御回路600は
図1に示した加減制御回路300と同様の機能を有し、
加減制御信号(A/S)に従い、第1の動作モードまた
は第2の動作モードをとる。加減制御信号(A/S)が
加算命令である第1の動作モードにおいては、入力端子
Stepに入力されるステップをそのまま部分加算回路
608の入力端子I1に出力する。尚、このとき部分加
算回路610の入力端子C1にはキャリーは出力されな
い。一方、加減制御信号(A/S)が減算命令である第
2の動作モードにおいては、入力端子Stepに入力さ
れるステップの各ビットを反転した数値を算出して部分
加算回路608の入力端子I1に出力すると共に、部分
加算回路610の入力端子C1にキャリーを出力する。
尚、部分加算回路608の入力端子I1と部分加算回路
610の入力端子C1に出力される信号とがステップ値
を構成する。
【0052】加減制御回路602は図1に示す加減制御
回路306と同様の機能を有し、部分加算回路608の
入力端子I1に出力されるステップ値の最上位ビット
(MSB)に従い、第1の動作モードまたは第2の動作
モードをとる。上記MSBが0であり、サーキュラブロ
ックのトップアドレスからボトムアドレスの方向にサー
キュラアドレッシングを行う場合には第2の動作モード
となり、入力端子BKから入力されるブロックサイズの
各ビットを反転した数値を算出してゲート回路604に
出力すると共にゲート回路604にキャリー(Carr
y)を出力する。一方、上記MSBが1であり、ボトム
アドレスからトップアドレスの方向にサーキュラアドレ
ッシングを行う場合には第1の動作モードとなり、入力
端子BKから入力されるブロックサイズをそのままゲー
ト回路604に出力する。尚、このときゲート回路60
4にはキャリーは出力されない。ゲート回路604は、
クロック信号(CK)とキャリーチェック回路612か
ら出力される制御信号(SEL1)とに従って、加減制
御回路602から出力されるブロックサイズとキャリー
信号(0)または各ビットが反転されたブロックサイズ
とキャリー信号(1)をそのまま部分加算回路608の
入力端子I2と部分加算回路610の入力端子C2とに
出力するか、または0のデ−タとキャリー信号(0)を
部分加算回路608の入力端子I2と部分加算回路61
0の入力端子C2とに出力するかを選択する。
【0053】ビット分離回路606は図1に示すビット
分離回路304と同様の機能を有しており、BKmas
kに基づいて入力端子ARnから入力されるアドレスを
上位側のビット部分と下位側のビット部分とに分離し、
それぞれビット多重回路614と部分加算回路608の
入力端子I3に出力する。ビット多重回路614は図1
に示すビット多重回路314と同様の機能を有してお
り、BKmaskに基づいてビット分離回路606から
出力されるデータの上位側のビット部分と部分加算回路
610から出力される信号ADD2の下位側のビット部
分とを多重化し、その多重化したデータを出力端子AR
n’に新たなアドレスとして出力する。
【0054】尚、BKmask、部分加算回路608の
入力端子I3に出力されるデータ、ビット分離回路60
6からビット多重回路614に出力されるデータ、部分
加算回路610から出力されるデータ、およびビット多
重回路614から出力されるデータは、図1において説
明したものと同様のデータフォーマットである。また、
部分加算回路608の入力端子I3に出力されるデータ
はIndexであり、部分加算回路610から出力され
るデータはIndex’である。
【0055】部分加算回路608と部分加算回路610
は、図2に示す部分加算回路406と部分加算回路40
8と同様に、図3に示す3入力の全加算回路420を構
成しており、入力端子I1,I2,I3,C1,C2に
それぞれ入力された値についての全加算演算を行い、そ
の全加算演算結果(信号ADD2)を新たなインデック
ス(Index’)としてビット多重回路614に出力
し、2つのキャリーアウト信号(Carry2,Car
ry3)をキャリーチェック回路612に出力する。
【0056】キャリーチェック回路612は、全加算回
路420に出力されるステップ値の最上位ビット(MS
B)、全加算回路420が出力する2つのキャリーアウ
ト信号に応じて、クロック信号(CK)の前半(ph
1)と後半(ph2)とに分けて、制御信号(SEL
1)によりゲート回路604を制御する。上記MSBが
1である場合、すなわちサーキュラアドレッシングがボ
トムアドレスからトップアドレスの方向に行われる場合
には、2つのキャリーアウト信号を監視し、クロック信
号(CK)の前半(ph1)においては、ゲート回路6
04が0のデータとキャリー信号(0)とを部分加算回
路608の入力端子I2と部分加算回路610の入力端
子C2とに出力するように制御する。クロック信号の後
半(ph2)においては、クロック信号の前半において
キャリーが出力される、すなわち何れか一方のキャリー
アウト信号が1のときにはゲート回路604が0のデー
タとキャリー信号(0)とを部分加算回路608の入力
端子I2と部分加算回路610の入力端子C2とに出力
するように制御し、クロック信号の前半においてキャリ
ーが出力されない、すなわち双方のキャリーアウト信号
が0のときにはゲート回路604が加減制御回路602
から出力されるブロックサイズとキャリー信号(0)と
を部分加算回路608の入力端子I2と部分加算回路6
10の入力端子C2とに出力するように制御する。
【0057】一方、上記MSBが0である場合、すなわ
ちサーキュラアドレッシングがトップアドレスからボト
ムアドレスの方向に行われる場合には、2つのキャリー
アウト信号を監視し、クロック信号(CK)の前半(p
h1)においては、ゲート回路604が加減制御回路6
02から出力される各ビットが反転されたブロックサイ
ズとキャリー信号(1)とを部分加算回路608の入力
端子I2と部分加算回路610の入力端子C2とに出力
するように制御する。クロック信号の後半(ph2)に
おいては、クロック信号の前半において何れか一方のキ
ャリーアウト信号が1のときにはゲート回路604が加
減制御回路602から出力される各ビットが反転された
ブロックサイズとキャリー信号(1)とを部分加算回路
608の入力端子I2と部分加算回路610の入力端子
C2とに出力するように制御し、クロック信号の前半に
おいて双方のキャリーアウト信号が0のときにはゲート
回路604が0のデータとキャリー信号(0)とを部分
加算回路608の入力端子I2と部分加算回路610の
入力端子C2とに出力するように制御する。
【0058】以下に、全加算回路420に出力されるス
テップ値が正の数であり、トップアドレスからボトムア
ドレスの方向にサーキュラアドレッシングが行われる場
合のアドレス生成回路60の動作について説明する。
尚、加減制御回路600,602、ゲート回路604、
部分加算回路608,610、およびキャリーチェック
回路612が、図9のおけるインデックス生成回路14
に対応する。加減制御回路600は、正のステップ値を
全加算回路420に出力する。この場合、全加算回路4
20に出力されるステップ値のMSBは0となるので、
キャリーチェック回路612は全加算回路420から出
力される2つのキャリーアウト信号の双方を監視し、加
減制御回路602は入力するブロックサイズの各ビット
を反転してゲート回路604に出力すると共にゲート回
路604にキャリー信号(1)を出力する。ゲート回路
604は、クロック信号(CK)の前半(ph1)にお
いては、加減制御回路602から出力される各ビットが
反転されたブロックサイズとキャリー信号(1)とを全
加算回路420に出力する。
【0059】全加算回路420は、クロック信号(C
K)の前半(ph1)においては、ステップ値とインデ
ックスとブロックサイズの各ビットが反転された信号と
加減制御回路602から出力されるキャリー信号(1)
との全加算演算、すなわちインデックスとステップ値と
の和とブロックサイズとの減算処理を行う。全加算回路
420は図10のS110の処理を行っており、インデ
ックスとステップ値との和とブロックサイズとの減算結
果が負であるか否かの判定を行う。従って、クロック信
号の前半において、インデックスとステップ値との和と
ブロックサイズとの減算結果が負である、すなわち全加
算回路420からキャリーアウト信号が出力されない場
合には、ゲート回路604がクロック信号の後半におい
て全加算回路420に0のデータとキャリー信号(0)
を出力するので、全加算回路420はクロック信号の後
半(ph2)においてステップとインデックスとの全加
算演算を行って、インデックスにステップ値が加算され
た信号、すなわち現在のアドレスのビットN〜ビット0
の値にステップ値が加算された値を算出してビット多重
回路614に出力する。一方、クロック信号の前半にお
いてインデックスとステップ値との和とブロックサイズ
との減算結果が0以上である、すなわち全加算回路42
0からキャリーアウト信号が出力される場合には、ゲー
ト回路604がクロック信号の後半において全加算回路
420に各ビットの値が反転されたブロックサイズとキ
ャリー信号(1)とを出力するので、全加算回路420
はクロック信号の後半においてインデックスとステップ
値とブロックサイズの各ビットが反転された信号と加減
制御回路602から出力されるキャリー信号(1)との
全加算演算を行って、インデックスとステップ値との和
とブロックサイズとの減算結果を算出してビット多重回
路614に出力する。
【0060】ビット多重回路614は、ビット分離回路
404から出力されるデータのビット31〜ビット(N
+1)、すなわち現在のアドレスのビット31〜ビット
(N+1)の値と、全加算回路420から出力される新
たなインデックスのビットN〜ビット0の値とを組み合
わせて、新たなアドレスとして出力する。以上の一連の
動作により、トップアドレスからボトムアドレスの方向
へのサーキュラアドレッシングにおけるアドレス生成が
実現される。
【0061】次に、全加算回路420に出力されるステ
ップ値が負の数であり、ボトムアドレスからトップアド
レスの方向にサーキュラアドレッシングが行われる場合
のアドレス生成回路40の動作について説明する。加減
制御回路600は、負のステップ値を全加算回路420
に出力する。この場合、全加算回路420に出力される
データのMSBは1であるので、キャリーチェック回路
612は全加算回路420から出力される2つのキャリ
ーアウト信号を監視し、加減制御回路602は入力する
ブロックサイズをそのままゲート回路402に出力す
る。尚、このとき、全加算回路420にキャリーは出力
されない。ゲート回路604は、クロック信号の前半
(ph1)においては、0のデータとキャリー信号
(0)とを全加算回路420に出力する。
【0062】全加算回路420は、クロック信号の前半
(ph1)においては、インデックスとステップ値との
全加算演算を行う。全加算回路420は図10のS10
7の処理を行っており、インデックスとステップ値との
和が負であるか否かの判定を行う。従って、クロック信
号の前半においてインデックスとステップ値との和が負
である、すなわち全加算回路420からキャリーアウト
信号が出力されない場合には、クロック信号の後半(p
h2)においてゲート回路604が全加算回路420に
ブロックサイズとキャリー信号(0)を出力するので、
全加算回路420はクロック信号の後半においてインデ
ックスとステップ値とブロックサイズとの全加算演算を
行って、その演算結果をビット多重回路614に出力す
る。一方、クロック信号の前半においてインデックスと
ステップ値との和が0以上である、すなわち全加算回路
420からキャリーアウト信号が出力される場合には、
クロック信号の後半においてゲート回路604が全加算
回路420に0のデータとキャリー信号(0)を出力す
るので、全加算回路420はクロック信号の後半におい
てインデックスとステップ値との全加算演算を行い、イ
ンデックスにステップ値が加算された信号、すなわち現
在のアドレスのビットN〜ビット0の値にステップ値が
加算された値を算出してビット多重回路614に出力す
る。
【0063】ビット多重回路614は、ビット分離回路
606から出力されるデータのビット31〜ビット(N
+1)、すなわち現在のアドレスのビット31〜ビット
(N+1)の値と、全加算回路420から出力される新
たなインデックスのビットN〜ビット0の値とを組み合
わせて、新たなアドレスとして出力する。以上の一連の
動作により、ボトムアドレスからトップアドレスの方向
へのサーキュラアドレッシングにおけるアドレス生成が
実現される。
【0064】以上に説明した本発明のサーキュラアドレ
ッシング用アドレス生成回路は、現在のアドレスの値を
直接に計算して次のアドレスを求めるのではなく、イン
デックスとステップ値とブロックサイズを用いて間接的
に次のアドレスを求めているので、効率的に計算を行え
る。また、第1実施例では加算器の数は2個であり、ハ
ードウエアが簡略化されている。更には、第3実施例で
は1クロックサイクルで次のアドレスを算出することが
できるので、高速なアプリケーションに適している。ま
た、本発明のアドレス生成回路によれば、ステップとブ
ロックサイズを記憶しておくだけでよく、トップアドレ
スとボトムアドレスとを記憶しておく必要がない。以上
に本発明のサーキュラアドレッシング用アドレス生成回
路を説明したが、図10に示した本発明の技術思想に基
づき、種々の回路形態が考えられることは当業者には明
らかであろう。
【0065】以下、図6を参照して本発明のブロックリ
ピートアドレッシング用アドレス生成回路を説明する。
図6は本発明の第4実施例のアドレス生成回路7の構成
を示す図である。アドレス生成回路7は、プログラムカ
ウンタ(PC)72、比較回路74、レジスタ(EN
D)76、セレクタ78、レジスタ(START)8
0、インクリメント回路82、デクリメント回路84、
レジスタ(BRCR)86、およびゼロ検出回路70か
ら構成される。尚、本実施例は、パイプラインの遅延が
2段の場合に適用するものである。本実施例は、図11
に示した従来の回路と同ように、ブロックリピートを行
う前に、レジスタ76に繰り返し実行するプログラムの
ボトムアドレス(末尾アドレス)が設定され、レジスタ
80に当該プログラムのトップアドレス(先頭アドレ
ス)が設定され、レジスタ86に繰り返し回数が初期値
として設定される。
【0066】図7はゼロ検出回路70の要部の構成を示
す図である。フリップフロップ706,708のクロッ
ク端子にはパイプライン(CPU)の動作クロックであ
るクロックCKが入力され、クリア端子には割り込みを
示すパイプラインフラッシュ信号が入力されている。フ
リップフロップ706の入力端子DはAND回路712
の出力端子に接続されており、出力端子Qはフリップフ
ロップ708の入力端子DとAND回路704の一方の
入力端子に接続されている。フリップフロップ708の
出力端子QはAND回路700の一方の入力端子とAN
D回路704の他方の入力端子に接続されている。AN
D回路700の他方の入力端子には信号BRCR1が入
力され、その出力端子はNOR回路710の第2の入力
端子に接続されている。AND回路702の一方の入力
端子には信号BRCR2が入力され、他方の入力端子は
AND回路704の出力端子に接続されており、出力端
子はNOR回路710の第3の入力端子に接続されてい
る。NOR回路710の第1の入力端子には信号BRC
R0が入力され、その出力端子はAND回路712の一
方の入力端子に接続されている。AND回路712の他
方の入力端子には信号PC=ENDが入力される。
【0067】信号BRCR2,BRCR1,BRCR0
はレジスタ86から出力される繰り返し回数をデコード
して生成される信号であり、各信号は繰り返し回数がそ
れぞれ2,1,0のときにハイレベルとなる。信号BR
CR0はそのままブロックリピート禁止信号として出力
される。また、AND回路712の出力端子からループ
エンド信号が出力され、フリップフロップ708の出力
端子QからBRCR制御信号が出力される。
【0068】プロックリピートアクセスが開始される
と、動作周期毎にプログラムカウンタ72からアドレス
が発生される。このアドレスはメモリ(図示せず)とイ
ンクリメント回路82に供給されると共に、比較回路7
4に出力される。インクリメント回路82は入力したア
ドレスに1を加算(インクリメント)してセレクタ78
の入力端子I0に出力する。比較回路74は、プログラ
ムカウンタ72が出力するアドレスとレジスタ76に記
憶されているボトムアドレスとを比較し、これらの一致
を検出する。比較回路74がプログラムカウンタ900
のアドレスとボトムアドレスとの一致を検出しない場合
には信号PC=ENDは不活性化状態(ローレベル)で
あり、比較回路74がプログラムカウンタ72のアドレ
スとボトムアドレスとの一致を検出した場合には信号P
C=ENDは活性化状態(ハイレベル)となる。
【0069】セレクタ78はゼロ検出回路70から出力
されるループエンド信号により制御され、ループエンド
信号が不活性化状態(ローレベル)の場合には入力I0
側を選択してプログラムカウンタ72に出力する。すな
わち、動作周期におけるアドレスとボトムアドレスとが
一致しない場合にはその動作周期のアドレスがインクリ
メントされ、そのインクリメントされたアドレスが次の
動作周期におけるアドレスとしてプログラムカウンタ7
2から出力される。一方、ループエンド信号が活性化状
態(ハイレベル)になると、セレクタ78は入力端子I
1側を選択してプログラムカウンタ72に出力する。す
なわち、アドレスがボトムアドレスに達した場合には、
次の動作周期におけるアドレスとして、トップアドレス
がプログラムカウンタ72から出力される。レジスタ8
6は、ゼロ検出回路70から出力されるBRCR制御信
号に応じて記憶している繰り返し回数をデクリメント回
路84により1つ減算(デクリメント)して、そのデク
リメントした値を記憶すると共に、ゼロ検出回路70に
出力する。
【0070】次に、ゼロ検出回路70の動作について説
明する。繰り返し回数が3以上である場合には信号BR
CR2、BRCR1、およびBRCR0は何れもローレ
ベルであるので、NOR回路710の出力は常にハイレ
ベルとなる。ここで、比較回路74が信号PC=END
を活性化状態(ハイレベル)にすると、AND回路71
2からハイレベル(活性化状態)のループエンド信号が
出力される。このハイレベルのループエンド信号はフリ
ップフロップ706に入力される。フリップフロップ7
06,708はクロックCKの1パルスが入力してから
出力信号を変化させるので、一種の遅延手段として機能
する。従って、ノードS1はループエンド信号がハイレ
ベルとなってから1クロックCK分遅れてハイレベルと
なり、ノードS2はループエンド信号がハイレベルとな
ってから2クロックCK分遅れてハイレベルとなる。す
なわち、BRCR制御信号は、ループエンド信号がハイ
レベルとなってから2クロックCK分遅れて活性化状態
(ハイレベル)となる。
【0071】上述のように、BRCR制御信号はループ
エンド信号がハイレベルとなってから2クロックCK分
遅れて活性化状態になるので、パイプラインの遅延が2
段の場合には、ボトムアドレスの命令が実行されてから
レジスタ86の内容、すなわち繰り返し回数がデクリメ
ントされる。従って、信号PC=ENDが活性化状態と
なり、ボトムアドレスの命令がフェッチされているとき
に割り込みが発生してパイプラインフラッシュ信号が活
性化状態(ハイレベル)となると、フリップフロップ7
06,708がクリアされ、たとえボトムアドレスの命
令が実行されずに割り込み処理となってもレジスタ86
の内容、すなわち繰り返し回数はデクリメントされな
い。従って、ボトムアドレスの命令を実行していないに
も拘らず、繰り返し回数がデクリメントされることがな
いので、ボトムアドレス近傍の命令に対して割り込み禁
止を設定する必要がない。
【0072】AND回路700,702,704,71
2とNOR回路710はループエンド処理、すなわちプ
ログラムカウンタ72にトップアドレスが入力される処
理を禁止するループエンド処理禁止回路として機能す
る。ゼロ検出回路70においてはループエンド信号の活
性化から2クロックCK分遅れてBRCR信号が活性化
されるので、ブロックサイズが2以下、すなわちトップ
アドレスとボトムアドレスとの差が1以下のときにはレ
ジスタ86に記憶されている繰り返し回数がデクリメン
トされる前に比較回路74から活性化された次の信号P
C=ENDが出力されてしまう場合がある。従って、ブ
ロックサイズが2以下であって繰り返し回数が2以下で
ある場合には、繰り返し回数のデクリメントに先立って
ループエンド処理がなされ、結果として繰り返し回数よ
りも多くブロックリピート処理がなされてしまう。
【0073】そこで、ブロックサイズが2以下のときに
繰り返し回数が2以下になった場合には、前回の信号P
C=ENDの活性化に基づくレジスタ86のデクリメン
ト、すなわち信号BRCRの活性化がなされるまでは新
たなループエンド処理を禁止している。ブロックサイズ
はノードS1,S2のハイレベルの組み合わせと繰り返
し回数とで識別することができる。従って、レジスタ8
6に記憶されている繰り返し回数が2のときには、ノー
ドS1およびS2のハイレベルのAND信号(AND回
路704の出力)と繰り返し回数が2であることを示す
ハイレベルの信号(信号BRCR2)とのAND信号
(AND回路702の出力)でループエンド処理を禁止
している。また、レジスタ86に記憶されている繰り返
し回数が1のときには、ノードS2のハイレベルの信号
と繰り返し回数が1であることを示すハイレベルの信号
(信号BRCR1)とのAND信号(AND回路700
の出力)でループエンド処理を禁止している。尚、繰り
返し回数が0のときには、繰り返し回数が0であること
を示す信号のみでループエンド処理を禁止している。ま
た、この繰り返し回数が0であることを示すハイレベル
の信号はブロックリピート禁止信号としても機能してお
り、この信号の活性化(ハイレベル)によりアドレス生
成回路9はブロックリピートアクセス動作を終了する。
【0074】図8はゼロ検出回路70の変形例の要部の
構成を示す図である。このゼロ検出回路740はパイプ
ラインの遅延が3段の場合の例である。デコーダ回路7
42はレジスタ86から出力される繰り返し回数(信号
BRCR)を入力し、その値に応じて信号d0,d1,
d2,d3を制御する。信号d0は繰り返し回数が0の
ときにハイレベルとなり、信号d1は繰り返し回数の1
のときにハイレベルとなり、信号d2は繰り返し回数が
2のときにハイレベルとなり、信号d3は繰り返し回数
が3のときにハイレベルとなる。信号d0はNOR回路
752の第1の入力端子に入力されると共にブロックリ
ピート禁止信号として機能し、信号d1はAND回路7
46の一方の入力端子に入力され、信号d2はAND回
路748の一方の入力端子に入力され、信号d3はAN
D回路750の一方の入力端子に入力される。
【0075】フリップフロップ758,760,762
のクロック端子にはパイプライン(CPU)の動作クロ
ックであるクロックCKが入力され、クリア端子には割
り込みを示すパイプラインフラッシュ信号が入力されて
いる。フリップフロップ758の入力端子DはAND回
路754の出力端子に接続されており、出力端子Qはフ
リップフロップ760の入力端子DとAND回路756
の第1の入力端子に接続されている。フリップフロップ
760の出力端子Qは、フリップフロップ762の入力
端子DとAND回路756第2の入力端子とAND回路
748の他方の入力端子に接続されている。フリップフ
ロップ762の出力端子Qは、AND回路756の第3
の出力端子とAND回路746の他方の出力端子に接続
されている。
【0076】AND回路756の出力端子はAND回路
750の他方の入力端子に接続されている。AND回路
746,748,750の出力端子はNOR回路752
の第2、第3、および第4の入力端子にそれぞれ接続さ
れている。NOR回路752の出力はAND回路754
の一方の入力端子に接続されている。AND回路754
の他方の入力端子には、信号PC=ENDが入力され
る。ここで、AND回路754の出力信号はループエン
ド処理信号として機能し、フリップフロップ762の出
力信号QはBRCR制御信号として機能する。
【0077】以下に、このゼロ検出回路740の動作に
ついて説明する。繰り返し回数が4以上の場合には、N
OR回路752の出力がハイレベルとなるので、信号P
C=ENDが活性化状態(ハイレベル)になるとループ
エンド信号が活性化状態(ハイレベル)となり、ループ
エンド処理が実行される。また、このループエンド信号
から3クロックCK分遅延してBRCR制御信号が活性
化状態(ハイレベル)となり、レジスタ86のデクリメ
ントが実行される。
【0078】ゼロ検出回路740においてはループエン
ド信号の活性化から3クロックCK分遅れてBRCR制
御信号が活性化されるので、ブロックサイズが3以下、
すなわちトップアドレスとボトムアドレスとの差が2以
下のときにはレジスタ86に記憶されている繰り返し回
数がデクリメントされる前に活性化された次の信号PC
=ENDが入力されてしまう場合がある。従って、ブロ
ックサイズが3以下であって繰り返し回数が3以下であ
る場合には、繰り返し回数のデクリメントに先立ってル
ープエンド処理がなされ、結果として繰り返し回数より
も多くブロックリピート処理がなされてしまう。そこ
で、このゼロ検出回路740では、デコーダ回路74
2、AND回路746,748,750,754,75
6、およびNOR回路752でループエンド処理禁止回
路を構成し、上述のような繰り返し回数よりもブロック
リピート処理が多くなるという不具合を防止している。
【0079】ブロックサイズはノードS1,S2,S3
のハイレベルの組み合わせと繰り返し回数とで識別する
ことができる。従って、レジスタ86に記憶されている
繰り返し回数が3のときには、ノードS1、S2、およ
びS3のハイレベルのAND信号(AND回路756の
出力)と繰り返し回数が3であることを示すハイレベル
の信号d3とのAND信号(AND回路750の出力)
でループエンド処理を禁止している。また、レジスタ8
6に記憶されている繰り返し回数が2のときには、ノー
ドS2のハイレベルの信号と繰り返し回数が2であるこ
とを示すハイレベルの信号d2とのAND信号(AND
回路748の出力)でループエンド処理を禁止してい
る。また、レジスタ86に記憶されている繰り返し回数
が1のときには、ノードS3のハイレベルの信号と繰り
返し回数が1であることを示すハイレベル信号d1との
AND信号(AND回路746の出力)でループエンド
処理を禁止している。尚、繰り返し回数が0のときに
は、繰り返し回数が0であることを示すハイレベルの信
号d0のみでループエンド処理を禁止している。また、
この繰り返し回数が0であることを示すハイレベルの信
号d0はブロックリピート禁止信号としても機能してお
り、この信号の活性化(ハイレベル)によりアドレス生
成回路9はブロックリピートアクセス動作を終了する。
【0080】本発明のアドレス生成回路7によれば、ブ
ロックリピートアドレッシングにおけるブロックサイズ
を何等制限する必要がないので、たとえば1つの命令を
繰り返す処理の実行時間を削減することができる。ま
た、上述した実施例では、レジスタ86からゼロ検出回
路70に繰り返し回数が入力されているが、デクリメン
ト回路84からゼロ検出回路70に直接に繰り返し回数
を入力する構成としてもよい。また、インクリメント回
路82、デクリメント回路84における加算、減算は1
以外の数値であってもよい。更には、上述したアドレス
生成回路7はパイプラインの遅延が2段および3段であ
る場合の回路であるが、ゼロ検出回路を適宜に変更する
ことにより、パイプラインの遅延の段数が4またはそれ
以上であるものにも本発明を適用できることは当業者に
は明らかであろう。
【0081】
【発明の効果】以上に述べたように、本発明によれば、
サーキュラアドレッシング用アドレス生成回路におい
て、アドレス(ポンイタ)の生成のために行う比較処理
を簡略化する、および比較処理に要するハードウエアを
簡略化することができる。また、ブロックリピートアド
レッシング用アドレス生成回路において、パイプライン
の遅延の段数により生じるブロックサイズの制限、ある
いはプログラム作成上の制限を解消することができる。
【図面の簡単な説明】
【図1】図1は本発明の第1実施例のアドレス生成回路
30の構成を示す図である。
【図2】図2は本発明の第2実施例のアドレス生成回路
40の構成を示す図である。
【図3】図3は部分加算回路406と部分加算回路40
8とで構成される3入力の全加算回路の要部を示す図で
ある。
【図4】図4は本発明の第3実施例のアドレス生成回路
60の構成を示す図である。
【図5】図5は本発明の第3実施例のアドレス生成回路
60の動作周期を説明する図である。
【図6】図6は本発明の第4実施例のアドレス生成回路
7の構成を示す図である。
【図7】図7はゼロ検出回路70の要部の構成を示す図
である。
【図8】図8はゼロ検出回路70の変形例の要部の構成
を示す図である。
【図9】図9はサーキュラアドレッシングにおけるアド
レス生成の概略を説明する図である。
【図10】図10はインデックス生成処理のアルゴリズ
ムを示すフローチャートである。
【図11】図11はブロックリピートアドレッシングに
おける従来のアドレス生成回路9の構成を示す図であ
る。
【符合の説明】
7,30,40,60・・・アドレス生成回路、70・
・・ゼロ検出回路、72・・・プログラムカウンタ、7
4・・・比較回路、76,80,86・・・レジスタ、
78・・・セレクタ、82・・・インクリメント回路、
84・・・デクリメント回路、300,306,40
0,402,600,602・・・加減制御回路、30
2,310,414・・・加算回路、304,404,
604・・・ビット分離回路、312・・・マルチプレ
クサ、314,414,614・・・ビット多重回路、
308,410,612・・・キャリーチェック回路、
406,408,608,610・・・部分加算回路、
412,604・・・ゲート回路、420・・・全加算
回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 フレデリック ブトー フランス国 セデックス、ビレヌーブ・ル ーベ06271 テキサス インスツルメンツ フランス 内

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 所定の記憶領域に対してステップ値毎に
    繰り返しアクセスするためのアドレスを生成するアドレ
    ス生成回路であって、 上記記憶領域の容量に対応する現在のアドレスの下位側
    ビット部を抽出する手段と、 上記ステップ値が正であるときには上記下位側ビット部
    と上記ステップ値の和と上記記憶領域の容量値との減算
    を行い、上記減算結果が負でない場合には上記減算結果
    をインデックスとして出力し、上記減算結果が負の場合
    には上記下位側ビット部と上記ステップ値との和をイン
    デックスとして出力し、上記ステップ値が負であるとき
    には上記下位側ビット部と上記ステップ値との加算を行
    い、上記加算結果が負でないときには上記加算結果をイ
    ンデックスとして出力し、上記加算結果が負であるとき
    には上記下位側ビット部と上記ステップ値と上記記憶領
    域の容量値との加算結果をインデックスとして出力する
    手段と、 上記インデックスと上記現在のアドレスの上記下位側ビ
    ット部以外のビット部から次のアドレスを生成する手段
    と、 を有するアドレス生成回路。
  2. 【請求項2】 第1のアドレスを記憶する第1の記憶手
    段と、 上記第1のアドレスまたは上記第1のアドレスよりも大
    きな値の第2のアドレスを記憶する第2の記憶手段と、 入力する数値に所定の値を加算して出力する加算手段
    と、 上記第1のアドレスまたは上記加算手段から出力される
    値の何れか一方を選択して上記加算手段に出力するアド
    レス出力手段と、 上記第2のアドレスと上記アドレス出力手段から出力さ
    れる値とを比較してそれらが一致するときには一致信号
    を出力する比較手段と、 所定の数値を記憶する第3の記憶手段と、 入力する数値から所定の値を減算して上記第3の記憶手
    段に出力する減算手段と、 上記一致信号が出力されると、上記減算手段から出力さ
    れた数値に応じて、上記アドレス出力手段が上記第1の
    アドレスを出力するように制御すると共に、上記減算回
    路が上記第3の記憶手段の数値に対して減算処理を行う
    ように制御する制御手段と、 を有するアドレス生成回路。
JP6042819A 1994-03-14 1994-03-14 アドレス生成回路 Pending JPH07253922A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP6042819A JPH07253922A (ja) 1994-03-14 1994-03-14 アドレス生成回路
US08/402,224 US5765218A (en) 1994-03-14 1995-03-10 Address generating circuit for generating addresses separated by a prescribed step value in circular addressing
US08/994,572 US6038649A (en) 1994-03-14 1997-12-19 Address generating circuit for block repeat addressing for a pipelined processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6042819A JPH07253922A (ja) 1994-03-14 1994-03-14 アドレス生成回路

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2002034482A Division JP3595309B2 (ja) 2002-02-12 2002-02-12 アドレス生成回路

Publications (1)

Publication Number Publication Date
JPH07253922A true JPH07253922A (ja) 1995-10-03

Family

ID=12646568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6042819A Pending JPH07253922A (ja) 1994-03-14 1994-03-14 アドレス生成回路

Country Status (2)

Country Link
US (2) US5765218A (ja)
JP (1) JPH07253922A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011086157A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp データ演算装置の制御回路及びデータ演算装置

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991863A (en) * 1996-08-30 1999-11-23 Texas Instruments Incorporated Single carry/borrow propagate adder/decrementer for generating register stack addresses in a microprocessor
EP0864977B1 (en) * 1997-09-13 1999-07-14 Hewlett-Packard Company Memory latency compensation
KR100252136B1 (ko) * 1997-12-29 2000-04-15 윤종용 디지털 신호 처리 칩에서의 반복 구문 실행 제어회로
DE69837138T2 (de) * 1997-12-31 2007-08-16 Texas Instruments Inc., Dallas Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen
JP4115576B2 (ja) * 1998-03-04 2008-07-09 富士通株式会社 マルチプロセッサシステム
US6397318B1 (en) * 1998-04-02 2002-05-28 Cirrus Logic, Inc. Address generator for a circular buffer
US6363470B1 (en) 1998-10-06 2002-03-26 Texas Instruments Incorporated Circular buffer management
US6629223B2 (en) 1998-10-06 2003-09-30 Texas Instruments Incorporated Method and apparatus for accessing a memory core multiple times in a single clock cycle
EP0992880A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Circular buffer management
EP1050804A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Execution of instruction loops
US6427200B1 (en) * 2000-09-27 2002-07-30 Institute For Information Industry Multiple changeable addressing mapping circuit
CA2345605A1 (en) * 2001-04-30 2002-10-30 Robert A. Abbott Method of testing embedded memory array and embedded memory controller for use therewith
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6604169B2 (en) * 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US6871270B2 (en) * 2001-12-03 2005-03-22 Samsung Electronics Co., Ltd. Device and method for minimizing puncturing-caused output delay
US6986028B2 (en) * 2002-04-22 2006-01-10 Texas Instruments Incorporated Repeat block with zero cycle overhead nesting
JP2004145010A (ja) * 2002-10-24 2004-05-20 Renesas Technology Corp 暗号回路
CN101002169A (zh) 2004-05-19 2007-07-18 Arc国际(英国)公司 微处理器架构
US20060200481A1 (en) * 2005-03-04 2006-09-07 Khalid Goyan Method and system for data optimization and protection in DSP firmware
US7747088B2 (en) * 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
KR100730280B1 (ko) * 2005-12-06 2007-06-19 삼성전자주식회사 재구성 프로세서에서 루프 버퍼를 최적화하기 위한 장치 및방법
US8219782B2 (en) * 2008-09-18 2012-07-10 Xilinx, Inc. Address generation
US9965278B1 (en) * 2016-12-20 2018-05-08 Texas Instruments Incorporated Streaming engine with compressed encoding for loop circular buffer sizes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4202035A (en) * 1977-11-25 1980-05-06 Mcdonnell Douglas Corporation Modulo addressing apparatus for use in a microprocessor
US4800524A (en) * 1985-12-20 1989-01-24 Analog Devices, Inc. Modulo address generator
US4908748A (en) * 1987-07-28 1990-03-13 Texas Instruments Incorporated Data processing device with parallel circular addressing hardware
US4916658A (en) * 1987-12-18 1990-04-10 International Business Machines Corporation Dynamic buffer control
US5617574A (en) * 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
US5163120A (en) * 1989-10-13 1992-11-10 Texas Instruments Incorporated Second nearest-neighbor communication network for synchronous vector processor, systems and methods
FR2666916A1 (fr) * 1990-09-19 1992-03-20 Alcatel Radiotelephone Vanne regulatrice de debit.
US5305446A (en) * 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
US5448706A (en) * 1992-05-13 1995-09-05 Sharp Microelectronics Technology, Inc. Address generator for multi-channel circular-buffer style processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011086157A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp データ演算装置の制御回路及びデータ演算装置

Also Published As

Publication number Publication date
US6038649A (en) 2000-03-14
US5765218A (en) 1998-06-09

Similar Documents

Publication Publication Date Title
JPH07253922A (ja) アドレス生成回路
US5644519A (en) Method and apparatus for a multiply and accumulate circuit having a dynamic saturation range
US5459855A (en) Frequency ratio detector for determining fixed frequency ratios in a computer system
US4757444A (en) Vector processor capable of performing iterative processing
US5319347A (en) Parallelized magnitude comparator for comparing a binary number to a fixed value
US6167420A (en) Multiplication method and multiplication circuit
US6101621A (en) Logic circuit and method for designing the same
KR970016931A (ko) 고속 이상 또는 등가 비교 회로
US4752763A (en) Binary comparison circuit with selectable binary digit override
US4644841A (en) Electronic musical instrument
US5357235A (en) Parallelized magnitude comparator
US6738792B1 (en) Parallel mask generator
US5635858A (en) Zero-stopping incrementers
US6992948B2 (en) Memory device having address generating circuit using phase adjustment by sampling divided clock to generate address signal of several bits having one bit changed in sequential order
JP3595309B2 (ja) アドレス生成回路
JPH08139575A (ja) パルス出力回路
JP3004972B2 (ja) データ処理装置
EP0356940A2 (en) Finite state machine
EP0806722A1 (en) Method and apparatus for a multiply and accumulate circuit having a dynamic saturation range
JPH09116413A (ja) 論理回路及びその設計方法
US6038660A (en) Method and apparatus for updating a program counter
US8136061B2 (en) Method of logic circuit synthesis and design using a dynamic circuit library
US6862584B2 (en) Logical fuzzy union and intersection operation calculation circuit
KR100203742B1 (ko) 멀티플렉스를 이용한 가산기
JPH0619700B2 (ja) 演算装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20030630