(57)【特許請求の範囲】
【請求項１】
サーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算装置であって、
加算方向へのアドレシング時にはアドレスレジスタ値に加減算オフセットの絶対値を加算し、減算方向へのアドレシング時には前記アドレスレジスタ値から前記加減算オフセットの絶対値を減算してそれぞれ非巡回アドレスを算出する非巡回アドレス算出手段、
加算方向へのアドレシング時にはバッファ領域上限値を、減算方向へのアドレシング時にはバッファ領域下限値をそれぞれ選択する第１選択手段、
加算方向へのアドレシング時には非巡回アドレスから前記サーキュラバッファのバッファサイズを減算し、減算方向へのアドレシング時には非巡回アドレスに前記バッファサイズを加算してそれぞれ巡回アドレスを算出する巡回アドレス算出手段、
非巡回アドレスから、加算方向へのアドレシング時には前記第１選択手段の出力に１を加えた値を、一方減算方向へのアドレシング時には前記第１選択手段の出力をそれぞれ減算した値に基づいて巡回条件成立か否かを判定する巡回条件判定手段、および
前記巡回条件判定手段での判定結果に応じて前記非巡回アドレス算出手段からの前記非巡回アドレスまたは前記巡回アドレス算出手段からの前記巡回アドレスのいずれかをアドレスレジスタ更新値として選択する第２選択手段を備え、
前記巡回アドレス算出手段は、
バッファ領域上限値からバッファ領域下限値を減算して前記バッファサイズより１だけ小さい（バッファサイズ−１）を算出するサイズ算出手段、および
加算方向へのアドレシング時には前記非巡回アドレスに前記（バッファサイズ−１）のビット反転値を加算し、減算方向へのアドレシング時には前記非巡回アドレスに前記（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ前記巡回アドレスを算出する第１アドレス算出手段を含む、アドレス演算装置。
【請求項２】
前記非巡回アドレス算出手段は、加算か減算かを示す加減算コントロール信号に応じて前記加減算オフセットまたは前記加減算オフセットのビット反転値を出力する第１論理回路、および加算方向へのアドレシング時には前記加減算オフセットと前記アドレスレジスタ値とを加算し、減算方向へのアドレシング時には前記加減算オフセットのビット反転値と前記アドレスレジスタ値と１とを加算してそれぞれ前記非巡回アドレスを算出する第１加算器を含み、
前記サイズ算出手段は、前記バッファ領域下限値のビット反転値を出力する第２論理回路、および前記バッファ領域上限値に前記バッファ領域下限値のビット反転値を加算した値にさらに１を加算して前記（バッファサイズ−１）を算出する第２加算器を含み、
前記第１アドレス算出手段は、加算方向へのアドレシング時には前記（バッファサイズ−１）のビット反転値を、減算方向へのアドレシング時には前記（バッファサイズ−１）をそれぞれ出力する第３論理回路、および加算方向へのアドレシング時には前記非巡回アドレスと前記（バッファサイズ−１）のビット反転値とを加算し、減算方向へのアドレシング時には前記非巡回アドレスに前記（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ前記巡回アドレスを算出する第３加算器を含み、
前記巡回条件判定手段は、前記第１選択手段からの出力のビット反転値を算出する第４論理回路、加算方向へのアドレシング時には前記非巡回アドレスと前記バッファ領域上限値のビット反転値とを加算し、減算方向へのアドレシング時には前記非巡回アドレスと前記バッファ領域下限値のビット反転値とを加算した値にさらに１を加算する第４加算器、およびアドレシングの方向と前記第４加算器からの出力とに基づいて巡回条件成立か否かを示す第１信号を生成する第５論理回路を含み、
前記第２選択手段は、前記第１信号に応じて前記非巡回アドレスまたは前記巡回アドレスのいずれかを選択する、請求項１に記載のアドレス演算装置。
【請求項３】
前記非巡回アドレス算出手段は、加算か減算かを示す加減算コントロール信号に応じて前記加減算オフセットまたは前記加減算オフセットのビット反転値を出力する第１論理回路、および加算方向へのアドレシング時には前記加減算オフセットと前記アドレスレジスタ値とを加算し、減算方向へのアドレシング時には前記加減算オフセットのビット反転値と前記アドレスレジスタ値と１とを加算してそれぞれ前記非巡回アドレスを算出する第１加算器を含み、
前記サイズ算出手段は、前記バッファ領域下限値のビット反転値を出力する第２論理回路、および前記バッファ領域上限値に前記バッファ領域下限値のビット反転値を加算した値にさらに１を加算して前記（バッファサイズ−１）を算出する第２加算器を含み、
前記第１アドレス算出手段は、加算方向へのアドレシング時には前記（バッファサイズ−１）のビット反転値を、減算方向へのアドレシング時には前記（バッファサイズ−１）をそれぞれ出力する第３論理回路、および加算方向へのアドレシング時には前記非巡回アドレスと前記（バッファサイズ−１）のビット反転値とを加算し、減算方向へのアドレシング時には前記非巡回アドレスに前記（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ前記巡回アドレスを算出する第３加算器を含み、
前記巡回条件判定手段は、前記第１選択手段からの出力のビット反転値を算出する第４論理回路、加算方向へのアドレシング時には前記非巡回アドレスと前記バッファ領域上限値のビット反転値とを加算し、減算方向へのアドレシング時には前記非巡回アドレスと前記バッファ領域下限値のビット反転値とを加算した値にさらに１を加算する第４加算器、および前記第１加算器のキャリーアウト信号と前記第４加算器のキャリーアウト信号とに基づいて巡回条件成立か否かを示す第２信号を生成する第６論理回路を含み、
前記第２選択手段は、前記第２信号に応じて前記非巡回アドレスまたは前記巡回アドレスのいずれかを選択する、請求項１に記載のアドレス演算装置。
【請求項４】
サーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算装置であって、
加算方向へのアドレシング時にはアドレスレジスタ値に加減算オフセットの絶対値を加算し、減算方向へのアドレシング時には前記アドレスレジスタ値から前記加減算オフセットの絶対値を減算してそれぞれ非巡回アドレスを算出する非巡回アドレス算出手段、
加算方向へのアドレシング時にはバッファ領域上限値を、減算方向へのアドレシング時にはバッファ領域下限値をそれぞれ選択する第１選択手段、
加算方向へのアドレシング時には非巡回アドレスから前記サーキュラバッファのバッファサイズを減算し、減算方向へのアドレシング時には非巡回アドレスに前記バッファサイズを加算してそれぞれ巡回アドレスを算出する巡回アドレス算出手段、
非巡回アドレスから、加算方向へのアドレシング時には前記第１選択手段の出力に１を加えた値を、一方減算方向へのアドレシング時には前記第１選択手段の出力をそれぞれ減算した値に基づいて巡回条件成立か否かを判定する巡回条件判定手段、および
前記巡回条件判定手段での判定結果に応じて前記非巡回アドレス算出手段からの前記非巡回アドレスまたは前記巡回アドレス算出手段からの前記巡回アドレスのいずれかをアドレスレジスタ更新値として選択する第２選択手段を備え、
それぞれ巡回アドレスの算出と巡回条件の判定とに兼用される第４論理回路および第１桁上げ保存加算器を有し、
前記非巡回アドレス算出手段は、加算か減算かを示す加減算コントロール信号に応じて前記加減算オフセットまたは前記加減算オフセットのビット反転値を出力する第１論理回路、および加算方向へのアドレシング時には前記加減算オフセットと前記アドレスレジスタ値とを加算し、減算方向へのアドレシング時には前記加減算オフセットのビット反転値と前記アドレスレジスタ値と１とを加算してそれぞれ前記非巡回アドレスを算出する第１加算器を含み、
前記巡回アドレス算出手段は、加算方向へのアドレシング時には前記バッファ領域下限値を、減算方向へのアドレシング時には前記バッファ領域上限値をそれぞれ選択する第３選択手段、前記第１選択手段からの出力のビット反転値を算出する前記第４論理回路、加算方向へのアドレシング時には前記加減算オフセットと前記アドレスレジスタ値と前記第４論理回路の出力とを加算し、減算方向へのアドレシング時には前記加減算オフセットのビット反転値と前記アドレスレジスタ値と前記第４論理回路の出力と１とを加算する前記第１桁上げ保存加算器、加算方向へのアドレシング時には前記第３選択手段の出力と前記第１桁上げ保存加算器の出力とを加算し、減算方向へのアドレシング時には前記第３選択手段の出力と前記第１桁上げ保存加算器の出力と１とを加算する第２桁上げ保存加算器、および加算方向へのアドレシング時には前記第２桁上げ保存加算器の出力を加算し、減算方向へのアドレシング時には前記第２桁上げ保存加算器の出力と１とを加算してそれぞれ前記巡回アドレスを算出する第５加算器を含み、
前記巡回条件判定手段は、前記第４論理回路、前記第１桁上げ保存加算器、加算方向へのアドレシング時には前記第１桁上げ保存加算器の出力を加算し、減算方向へのアドレシング時には前記第１桁上げ保存加算器の出力と１とを加算する第６加算器、および前記第１桁上げ保存加算器のキャリーアウト信号と前記第６加算器のキャリーアウト信号とに基づいて巡回条件成立か否かを示す第３信号を生成する第７論理回路を含み、
前記第２選択手段は、前記第３信号に応じて前記非巡回アドレスまたは前記巡回アドレスのいずれかを選択する、アドレス演算装置。
【請求項５】
サーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算方法であって、
アドレスレジスタ値、加減算オフセット、バッファ領域下限値およびバッファ領域上限値を設定する第１ステップ、
加算方向へのアドレシング時には前記アドレスレジスタ値に前記加減算オフセットの絶対値を加算し、減算方向へのアドレシング時には前記アドレスレジスタ値から前記加減算オフセットの絶対値を減算してそれぞれ非巡回アドレスを算出する第２ステップ、
加算方向へのアドレシング時には前記バッファ領域上限値を、減算方向へのアドレシング時には前記バッファ領域下限値をそれぞれ選択する第３ステップ、
加算方向へのアドレシング時には非巡回アドレスから前記サーキュラバッファのバッファサイズを減算し、減算方向へのアドレシング時には非巡回アドレスに前記バッファサイズを加算してそれぞれ巡回アドレスを算出する第４ステップ、
非巡回アドレスから、加算方向へのアドレシング時には前記第３ステップで選択された出力に１を加えた値を、一方減算方向へのアドレシング時には前記第３ステップで選択された出力をそれぞれ減算した値に基づいて巡回条件成立か否かを判定する第５ステップ、および
前記第５ステップでの判定結果に応じて前記第２ステップで算出された前記非巡回アドレスまたは前記第４ステップで算出された前記巡回アドレスのいずれかをアドレスレジスタ更新値として選択する第６ステップを備え、
前記第４ステップは、
前記バッファ領域上限値から前記バッファ領域下限値を減算して前記バッファサイズより１だけ小さい（バッファサイズ−１）を算出するステップ、および
加算方向へのアドレシング時には前記非巡回アドレスに前記（バッファサイズ−１）のビット反転値を加算し、減算方向へのアドレシング時には前記非巡回アドレスに前記（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ前記巡回アドレスを算出するステップを含む、アドレス演算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はアドレス演算装置およびアドレス演算方法に関し、特にたとえばサーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算装置およびアドレス演算方法に関する。
【０００２】
【従来の技術】
ＤＳＰ（digital signal processor：ディジタルシグナルプロセッサ）のようなプロセッサで相関関数やＦＩＲフィルタ等の信号処理アルゴリズムを処理する場合、プロセッサの中に形成されたアドレス演算装置によってサーキュラアドレシング処理を行い、データメモリ上にサーキュラバッファを構成することが多い。
【０００３】
サーキュラアドレシングはＤＳＰ処理で多用されるサーキュラバッファを構築するのに適したアドレシングモードである。このモードでは、アドレスレジスタ値は常にデータメモリ上に定義されたバッファ領域の中に収まる。すなわち、図１８に示すように、アドレスレジスタ値がデータメモリ１のバッファ領域の上限値を超えてインクリメントされると下限値に巡回し、逆に下限値を超えてデクリメントされると上限値に巡回するサーキュラアドレシングを行う。
【０００４】
このようなサーキュラアドレシングを行う従来のアドレス演算装置２ａを、図１９に示す。
【０００５】
アドレス演算装置２ａでは、バッファ領域上限値ＬＥ、バッファ領域下限値ＬＢをそれぞれ指定し、アドレスレジスタ値ＡがＬＢ≦Ａ≦ＬＥの範囲にあるとき、サーキュラアドレシングを行っていた。
【０００６】
また、従来のその他のアドレス演算装置２ｂを、図２０に示す。
【０００７】
アドレス演算装置２ｂは、モジュロアドレシングによってサーキュラバファを構築する方式であり、バッファ領域上限値ＬＥ、バッファ領域下限値ＬＢを指定するのではなく、構成したいサーキュラバッファのサイズＭすなわち（ＬＥ−ＬＢ＋１）を指定する。バッファ領域上限値ＬＥ、バッファ領域下限値ＬＢはバッファサイズＭとアドレスレジスタ値Ａとによって決定される。
【０００８】
【発明が解決しようとする課題】
アドレス演算装置２ａでは、サーキュラアドレシングを１サイクルで実現するには、１サイクル中に、それぞれたとえば先見桁上げ加算器からなる３段の加算器、すなわち非巡回アドレスを算出する加算器３ａ、巡回条件を判定する加算器４ａおよび巡回アドレスを算出する加算器５ａを順次通過しなければならないため、高速化が困難である。
【０００９】
一方、アドレス演算装置２ｂでは、サーキュラバッファの開始アドレスが必ず２のべき乗数の倍数でなければならず、任意の値を指定できないという制限があるため、データメモリに使用できない空き領域が発生する可能性がある。また、バッファ領域下限値ＬＢ（サーキュラバッファの開始位置）、バッファ領域上限値ＬＥ（サーキュラバッファの上限値）が直感的にわかりづらい。したがって、プログラムは作成しにくくなり、メモリ利用効率が低下するという問題点があった。また、アドレス演算装置２ｂではマスクを生成するためにプライオリティエンコーダ３ｂが用いられるが、プライオリティエンコーダ３ｂでの処理はアドレス値のビット幅に比例して処理時間が増加し、高速化が困難である。
【００１０】
それゆえにこの発明の主たる目的は、より高速化でき、プログラム作成の自由度およびメモリ利用効率を向上できる、アドレス演算装置およびアドレス演算方法を提供することである。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載のアドレス演算装置は、サーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算装置であって、加算方向へのアドレシング時にはアドレスレジスタ値に加減算オフセットの絶対値を加算し、減算方向へのアドレシング時にはアドレスレジスタ値から加減算オフセットの絶対値を減算してそれぞれ非巡回アドレスを算出する非巡回アドレス算出手段、加算方向へのアドレシング時にはバッファ領域上限値を、減算方向へのアドレシング時にはバッファ領域下限値をそれぞれ選択する第１選択手段、加算方向へのアドレシング時には非巡回アドレスからサーキュラバッファのバッファサイズを減算し、減算方向へのアドレシング時には非巡回アドレスにバッファサイズを加算してそれぞれ巡回アドレスを算出する巡回アドレス算出手段、非巡回アドレスから、加算方向へのアドレシング時には第１選択手段の出力に１を加えた値を、一方減算方向へのアドレシング時には第１選択手段の出力をそれぞれ減算した値に基づいて巡回条件成立か否かを判定する巡回条件判定手段、および巡回条件判定手段での判定結果に応じて非巡回アドレス算出手段からの非巡回アドレスまたは巡回アドレス算出手段からの巡回アドレスのいずれかをアドレスレジスタ更新値として選択する第２選択手段を備え、巡回アドレス算出手段は、バッファ領域上限値からバッファ領域下限値を減算してバッファサイズより１だけ小さい（バッファサイズ−１）を算出するサイズ算出手段、および加算方向へのアドレシング時には非巡回アドレスに（バッファサイズ−１）のビット反転値を加算し、減算方向へのアドレシング時には非巡回アドレスに（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ巡回アドレスを算出する第１アドレス算出手段を含むものである。
【００１３】
請求項２に記載のアドレス演算装置は、請求項１に記載のアドレス演算装置において、非巡回アドレス算出手段は、加算か減算かを示す加減算コントロール信号に応じて加減算オフセットまたは加減算オフセットのビット反転値を出力する第１論理回路、および加算方向へのアドレシング時には加減算オフセットとアドレスレジスタ値とを加算し、減算方向へのアドレシング時には加減算オフセットのビット反転値とアドレスレジスタ値と１とを加算してそれぞれ非巡回アドレスを算出する第１加算器を含み、サイズ算出手段は、バッファ領域下限値のビット反転値を出力する第２論理回路、およびバッファ領域上限値にバッファ領域下限値のビット反転値を加算した値にさらに１を加算して（バッファサイズ−１）を算出する第２加算器を含み、第１アドレス算出手段は、加算方向へのアドレシング時には（バッファサイズ−１）のビット反転値を、減算方向へのアドレシング時には（バッファサイズ−１）をそれぞれ出力する第３論理回路、および加算方向へのアドレシング時には非巡回アドレスと（バッファサイズ−１）のビット反転値とを加算し、減算方向へのアドレシング時には非巡回アドレスに（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ巡回アドレスを算出する第３加算器を含み、巡回条件判定手段は、第１選択手段からの出力のビット反転値を算出する第４論理回路、加算方向へのアドレシング時には非巡回アドレスとバッファ領域上限値のビット反転値とを加算し、減算方向へのアドレシング時には非巡回アドレスとバッファ領域下限値のビット反転値とを加算した値にさらに１を加算する第４加算器、およびアドレシングの方向と第４加算器からの出力とに基づいて巡回条件成立か否かを示す第１信号を生成する第５論理回路を含み、第２選択手段は、第１信号に応じて非巡回アドレスまたは巡回アドレスのいずれかを選択するものである。
【００１４】
請求項３に記載のアドレス演算装置は、請求項１に記載のアドレス演算装置において、非巡回アドレス算出手段は、加算か減算かを示す加減算コントロール信号に応じて加減算オフセットまたは加減算オフセットのビット反転値を出力する第１論理回路、および加算方向へのアドレシング時には加減算オフセットとアドレスレジスタ値とを加算し、減算方向へのアドレシング時には加減算オフセットのビット反転値とアドレスレジスタ値と１とを加算してそれぞれ非巡回アドレスを算出する第１加算器を含み、サイズ算出手段は、バッファ領域下限値のビット反転値を出力する第２論理回路、およびバッファ領域上限値にバッファ領域下限値のビット反転値を加算した値にさらに１を加算して（バッファサイズ−１）を算出する第２加算器を含み、第１アドレス算出手段は、加算方向へのアドレシング時には（バッファサイズ−１）のビット反転値を、減算方向へのアドレシング時には（バッファサイズ−１）をそれぞれ出力する第３論理回路、および加算方向へのアドレシング時には非巡回アドレスと（バッファサイズ−１）のビット反転値とを加算し、減算方向へのアドレシング時には非巡回アドレスに（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ巡回アドレスを算出する第３加算器を含み、巡回条件判定手段は、第１選択手段からの出力のビット反転値を算出する第４論理回路、加算方向へのアドレシング時には非巡回アドレスとバッファ領域上限値のビット反転値とを加算し、減算方向へのアドレシング時には非巡回アドレスとバッファ領域下限値のビット反転値とを加算した値にさらに１を加算する第４加算器、および第１加算器のキャリーアウト信号と第４加算器のキャリーアウト信号とに基づいて巡回条件成立か否かを示す第２信号を生成する第６論理回路を含み、第２選択手段は、第２信号に応じて非巡回アドレスまたは巡回アドレスのいずれかを選択するものである。
【００１６】
請求項４に記載のアドレス演算装置は、サーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算装置であって、加算方向へのアドレシング時にはアドレスレジスタ値に加減算オフセットの絶対値を加算し、減算方向へのアドレシング時にはアドレスレジスタ値から加減算オフセットの絶対値を減算してそれぞれ非巡回アドレスを算出する非巡回アドレス算出手段、加算方向へのアドレシング時にはバッファ領域上限値を、減算方向へのアドレシング時にはバッファ領域下限値をそれぞれ選択する第１選択手段、加算方向へのアドレシング時には非巡回アドレスからサーキュラバッファのバッファサイズを減算し、減算方向へのアドレシング時には非巡回アドレスにバッファサイズを加算してそれぞれ巡回アドレスを算出する巡回アドレス算出手段、非巡回アドレスから、加算方向へのアドレシング時には第１選択手段の出力に１を加えた値を、一方減算方向へのアドレシング時には第１選択手段の出力をそれぞれ減算した値に基づいて巡回条件成立か否かを判定する巡回条件判定手段、および巡回条件判定手段での判定結果に応じて非巡回アドレス算出手段からの非巡回アドレスまたは巡回アドレス算出手段からの巡回アドレスのいずれかをアドレスレジスタ更新値として選択する第２選択手段を備え、それぞれ巡回アドレスの算出と巡回条件の判定とに兼用される第４論理回路および第１桁上げ保存加算器を有し、非巡回アドレス算出手段は、加算か減算かを示す加減算コントロール信号に応じて加減算オフセットまたは加減算オフセットのビット反転値を出力する第１論理回路、および加算方向へのアドレシング時には加減算オフセットとアドレスレジスタ値とを加算し、減算方向へのアドレシング時には加減算オフセットのビット反転値とアドレスレジスタ値と１とを加算してそれぞれ非巡回アドレスを算出する第１加算器を含み、巡回アドレス算出手段は、加算方向へのアドレシング時にはバッファ領域下限値を、減算方向へのアドレシング時にはバッファ領域上限値をそれぞれ選択する第３選択手段、第１選択手段からの出力のビット反転値を算出する第４論理回路、加算方向へのアドレシング時には加減算オフセットとアドレスレジスタ値と第４論理回路の出力とを加算し、減算方向へのアドレシング時には加減算オフセットのビット反転値とアドレスレジスタ値と第４論理回路の出力と１とを加算する第１桁上げ保存加算器、加算方向へのアドレシング時には第３選択手段の出力と第１桁上げ保存加算器の出力とを加算し、減算方向へのアドレシング時には第３選択手段の出力と第１桁上げ保存加算器の出力と１とを加算する第２桁上げ保存加算器、および加算方向へのアドレシング時には第２桁上げ保存加算器の出力を加算し、減算方向へのアドレシング時には第２桁上げ保存加算器の出力と１とを加算してそれぞれ巡回アドレスを算出する第５加算器を含み、巡回条件判定手段は、第４論理回路、第１桁上げ保存加算器、加算方向へのアドレシング時には第１桁上げ保存加算器の出力を加算し、減算方向へのアドレシング時には第１桁上げ保存加算器の出力と１とを加算する第６加算器、および第１桁上げ保存加算器のキャリーアウト信号と第６加算器のキャリーアウト信号とに基づいて巡回条件成立か否かを示す第３信号を生成する第７論理回路を含み、第２選択手段は、第３信号に応じて非巡回アドレスまたは巡回アドレスのいずれかを選択するものである。
【００１７】
請求項５に記載のアドレス演算方法は、サーキュラバッファのアドレスを示すアドレスレジスタ値を算出するためのアドレス演算方法であって、アドレスレジスタ値、加減算オフセット、バッファ領域下限値およびバッファ領域上限値を設定する第１ステップ、加算方向へのアドレシング時にはアドレスレジスタ値に加減算オフセットの絶対値を加算し、減算方向へのアドレシング時にはアドレスレジスタ値から加減算オフセットの絶対値を減算してそれぞれ非巡回アドレスを算出する第２ステップ、加算方向へのアドレシング時にはバッファ領域上限値を、減算方向へのアドレシング時にはバッファ領域下限値をそれぞれ選択する第３ステップ、加算方向へのアドレシング時には非巡回アドレスからサーキュラバッファのバッファサイズを減算し、減算方向へのアドレシング時には非巡回アドレスにバッファサイズを加算してそれぞれ巡回アドレスを算出する第４ステップ、非巡回アドレスから、加算方向へのアドレシング時には第３ステップで選択された出力に１を加えた値を、一方減算方向へのアドレシング時には第３ステップで選択された出力をそれぞれ減算した値に基づいて巡回条件成立か否かを判定する第５ステップ、および第５ステップでの判定結果に応じて第２ステップで算出された非巡回アドレスまたは第４ステップで算出された巡回アドレスのいずれかをアドレスレジスタ更新値として選択する第６ステップを備え、第４ステップは、バッファ領域上限値からバッファ領域下限値を減算してバッファサイズより１だけ小さい（バッファサイズ−１）を算出するステップ、および加算方向へのアドレシング時には非巡回アドレスに（バッファサイズ−１）のビット反転値を加算し、減算方向へのアドレシング時には非巡回アドレスに（バッファサイズ−１）を加算した値にさらに１を加算してそれぞれ巡回アドレスを算出するステップを含むものである。
【００２０】
請求項１に記載のアドレス演算装置では、非巡回アドレス算出手段による非巡回アドレスの算出と、サイズ算出手段による（バッファサイズ−１）の算出とが並列実行される。また、非巡回アドレスと（バッファサイズ−１）とに基づき第１アドレス算出手段によって実行される巡回アドレスの算出と、第１選択手段からの出力と非巡回アドレスとに基づき巡回条件判定手段によって実行される巡回条件判定とが、並列実行される。巡回条件判定後に巡回アドレスが算出されるのではない。そして、巡回条件判定結果に応じて、第２選択手段によって非巡回アドレスまたは巡回アドレスが選択され、アドレスレジスタ更新値とされる。また、バッファ領域上限値およびバッファ領域下限値は、ユーザによって設定されるので、それらの値自体明確となり、かつ、バッファ領域上限値ＬＥ≧バッファ領域下限値ＬＢの関係を満たす任意の値に設定される。
【００２２】
請求項２または３に記載のアドレス演算装置でいえば、非巡回アドレス算出手段に含まれる第１加算器による非巡回アドレス算出処理と、サイズ算出手段に含まれる第２加算器による（バッファサイズ−１）算出処理とが並列実行される。また、第１アドレス算出手段に含まれる第３加算器による巡回アドレス算出処理と、巡回条件判定手段に含まれる第４加算器による加算処理とが並列実行される。
【００２３】
請求項４に記載のアドレス演算装置では、非巡回アドレス算出手段による非巡回アドレスの算出と、非巡回アドレスとバッファ領域上限値とバッファ領域下限値とに基づき巡回アドレス算出手段によって実行される巡回アドレスの算出と、第１選択手段からの出力と非巡回アドレスとに基づき巡回条件判定手段によって実行される巡回条件判定とが、並列実行され、少なくとも、非巡回アドレス算出手段に含まれる第１加算器による非巡回アドレス算出処理と、巡回アドレスの算出および巡回条件の判定に兼用される第１桁上げ保存加算器による加算処理とが並列実行される。
【００２５】
請求項５に記載のアドレス演算方法では、第１ステップでアドレスレジスタ値、加減算オフセット、バッファ領域下限値およびバッファ領域上限値が設定される。そして、第２ステップでの非巡回アドレスの算出と第４ステップに含まれる（バッファサイズ−１）の算出とが並列実行される。また、第４ステップに含まれる巡回アドレスの算出と第５ステップでの巡回条件判定とが並列実行される。巡回条件判定後に巡回アドレスが算出されるのではない。第６ステップにおいて、第５ステップでの判定結果に応じて、非巡回アドレスまたは巡回アドレスが選択され、アドレスレジスタ更新値とされる。また、バッファ領域上限値およびバッファ領域下限値は、ユーザによって設定されるので、それらの値自体明確となり、かつ、バッファ領域上限値ＬＥ≧バッファ領域下限値ＬＢの関係を満たす任意の値に設定される。
【００２８】
【発明の実施の形態】
まず、図１、図１１に示すこの発明の実施の形態の原理について説明する。
【００２９】
サーキュラバッファのバッファ領域上限値をＬＥ、バッファ領域下限値をＬＢ、バッファサイズをＭ、加減算オフセットをＣ、アドレスレジスタ値をＡとする。この発明は、バッファ領域上限値ＬＥ、バッファ領域下限値ＬＢをそれぞれ指定し、さらにアドレシング時の加算器の通過段数を２段に抑えるため、モジュロアドレシングのバッファサイズに相当する値すなわち（バッファサイズＭ−１）の算出と非巡回アドレスの算出とを並列的に実行するものである。（バッファサイズＭ−１）を以下、単に（Ｍ−１）という。
【００３０】
サーキュラアドレシングでは、アドレスレジスタ更新値（以下、単に「更新値」という）は、次のように求められる。
【００３１】
インクリメント時において、（Ａ＋｜Ｃ｜）がバッファ領域上限値ＬＥを超えれば更新値は（Ａ＋｜Ｃ｜）−Ｍとされ、（Ａ＋｜Ｃ｜）がバッファ範囲内にあれば更新値は（Ａ＋｜Ｃ｜）とされる。
【００３２】
デクリメント時において、（Ａ−｜Ｃ｜）がバッファ領域下限値ＬＢを超えれば更新値は（Ａ−｜Ｃ｜）＋Ｍとされ、（Ａ−｜Ｃ｜）がバッファ範囲内にあれば更新値は（Ａ−｜Ｃ｜）とされる。
【００３３】
ここで、バッファサイズＭがパラメータとして別途算出（またはレジスタに保持）されていれば、アドレシング時の加算器の通過段数を２段で済ませられる。バッファサイズＭは、数１で示されるようにバッファ領域上限値ＬＥ、バッファ領域下限値ＬＢから算出できる。
【００３４】
【数１】
Ｍ＝ＬＥ−ＬＢ＋１＝ＬＥ＋￣ＬＢ＋２
なお、「￣Ｙ」はＹの反転値を示す。
【００３５】
すなわち、バッファ領域上限値ＬＥ、バッファ領域下限値ＬＢをパラメータとして与えると、自動的にバッファサイズＭが計算（またはレジスタに格納）されるようにすることで、アドレシング時の加算器の通過段数を従来（図１９に示すアドレス演算装置２ａ）よりも１段減らすことができる。
【００３６】
バッファサイズＭの算出
バッファサイズＭを、バッファ領域下限値ＬＢ、バッファ領域上限値ＬＥから算出するためには、上述の数１のように、加算を２回行わなければならない（＋￣ＬＢと＋２）ので、バッファサイズ算出時に加算器が２個必要になる。そこで、加算器の数を節約するため、数２に示す（Ｍ−１）を算出することにする。
【００３７】
【数２】
Ｍ−１＝ＬＥ−ＬＢ＝ＬＥ＋￣ＬＢ＋１
数２の第３項（＋１）を加算器のキャリーインに入力すれば、（Ｍ−１）の算出を１個の加算器で済ませられる。
【００３８】
この場合、更新値は次のように求められる。
【００３９】
インクリメント時において、（Ａ＋｜Ｃ｜）がバッファ領域上限値ＬＥを超えれば更新値は（Ａ＋｜Ｃ｜）−Ｍとされ、（Ａ＋｜Ｃ｜）がバッファ範囲内にあれば更新値は（Ａ＋｜Ｃ｜）とされる。ここで、（Ａ＋｜Ｃ｜）−Ｍは、数３によって求められる。なお、−（Ｍ−１）＝￣（Ｍ−１）＋１である。
【００４０】
【数３】
0003685634.tif 000002
デクリメント時において、（Ａ−｜Ｃ｜）がバッファ領域下限値ＬＢを超えれば更新値は（Ａ−｜Ｃ｜）＋Ｍとされ、（Ａ−｜Ｃ｜）がバッファ範囲内にあれば更新値は（Ａ−｜Ｃ｜）とされる。ここで、（Ａ−｜Ｃ｜）＋Ｍは、数４によって求められ、数４の第２項（＋１）は加算器のキャリーインに入力される。
【００４１】
【数４】
（Ａ−｜Ｃ｜）＋Ｍ＝（Ａ−｜Ｃ｜）＋（Ｍ−１）＋１
数３および数４からわかるように、非巡回アドレスを算出するまでに通過する加算器の段数は２段で済ませられる。
【００４２】
巡回条件判定
（Ａ＋｜Ｃ｜）がバッファ範囲内にあるか否かの判定は、（Ａ＋｜Ｃ｜）とバッファ領域上限値ＬＥ（インクリメント時）とを比較して行い、（Ａ−｜Ｃ｜）がバッファ範囲内にあるか否かの判定は、（Ａ−｜Ｃ｜）とバッファ領域下限値ＬＢ（デクリメント時）とを比較して行う。
【００４３】
インクリメント時には数５、デクリメント時には数６が成立したとき、それぞれ（Ａ＋｜Ｃ｜）、（Ａ−｜Ｃ｜）はバッファ範囲外であるので、サーキュラアドレシングを行う。
【００４４】
【数５】
（Ａ＋｜Ｃ｜）≧ＬＥ＋１
すなわち（Ａ＋｜Ｃ｜）−ＬＥ−１≧０
【数６】
（Ａ−｜Ｃ｜）＜ＬＢ
すなわち（Ａ−｜Ｃ｜）−ＬＢ＜０
（Ａ−｜Ｃ｜）がバッファ領域下限値ＬＢと、（Ａ＋｜Ｃ｜）がバッファ領域上限値ＬＥと一致した場合には、それぞれ通常のアドレシングを行う。
【００４５】
実際の判定は、インクリメント時には数７の第２項、デクリメント時には数８の第２項で示される加算を行い、その最上位ビットでサーキュラアドレシングの有無を決定する。
【００４６】
【数７】
（Ａ＋｜Ｃ｜）≧ＬＥ＋１
すなわち（Ａ＋｜Ｃ｜）−ＬＥ−１＝（Ａ＋｜Ｃ｜）＋￣ＬＥ≧０
（最上位ビットが０か否か）
【数８】
（Ａ−｜Ｃ｜）＜ＬＢ
すなわち（Ａ−｜Ｃ｜）−ＬＢ＝（Ａ−｜Ｃ｜）＋￣ＬＢ＋１＜０
（最上位ビットが１か否か）
数７、数８からわかるように、巡回条件判定を１個の加算器で実現できる。
【００４７】
以下、このような原理を用いたこの発明の実施の形態について、図面を参照して説明する。なお、この発明の実施の形態では有効アドレス空間のビット数は１６ビットとする。
【００４８】
図１を参照して、この発明の実施の形態のアドレス演算装置１０は、たとえばＤＳＰ等に用いられ、バッファ領域上限値ＬＥを格納するレジスタ１２、バッファ領域下限値ＬＢを格納するレジスタ１４、加減算コントロール信号Ａ／Ｓを格納するレジスタ１６、加減算オフセットＣを格納するレジスタ１８、アドレスレジスタ値Ａを格納するレジスタ２０を含む。ここでは、加減算オフセットＣは、０×７ＦＦＦが最大値、０×８０００が最小値であり、加減算オフセットＣの値は、０×００００から０×７ＦＦＦ方向に大きくなり（正の値）、０×００００から０×８０００方向に小さくなり（負の値）、加減算オフセットＣの絶対値｜Ｃ｜は、｜Ｃ｜≦（バッファ領域上限値ＬＥ−バッファ領域下限値ＬＢ＋１）の関係を満たす。また、０×ＹＹＹＹの「０×」は、Ｙは１６進数であることを示す。
【００４９】
バッファ領域上限値ＬＥおよびバッファ領域下限値ＬＢは、ユーザによってバッファ領域上限値ＬＥ≧バッファ領域下限値ＬＢの関係を満たす任意の値に設定される。加減算オフセットＣは、初期的には不定とされるがユーザによって所望の値に設定される。アドレスレジスタ値Ａは、初期的には０に設定されるが演算の結果に応じて更新されていく。また、加減算コントロール信号Ａ／Ｓは、ユーザの命令に応じて設定され、ユーザが加算の指示を出せば「０」、減算の指示を出せば「１」となる。
【００５０】
また、アドレス演算装置１０は、加算器２２、２４、２６、２８、および選択器３０、３２等を含む。
【００５１】
加算器２２は、１７ビットに拡張された非巡回アドレスＳ４を算出するための１７ビットの演算器であり、加算器２２では、信号Ｓ０と信号Ｓ２と加減算コントロール信号Ａ／Ｓとが加算される。信号Ｓ０は、アドレスレジスタ値Ａの最上位に０を付加した１７ビットの信号である。また、信号Ｓ２は、ＥＸ−ＯＲ回路３４での加減算オフセットＣと加減算コントロール信号Ａ／Ｓとの排他的論理和によって得られる信号Ｓ１を１７ビットに符号拡張した値で、加減算オフセットＣまたは加減算オフセットＣのビット反転値のいずれかを１７ビットに符号拡張した値となる。また、加減算コントロール信号Ａ／Ｓの値はキャリー入力として、加算器２２において最下位ビットに加算される。したがって、加算器２２によって、加算方向へのアドレシング時には（Ａ＋｜Ｃ｜）が、減算方向へのアドレシング時には（Ａ−｜Ｃ｜）がそれぞれ１７ビットに拡張された信号Ｓ４が算出され、非巡回アドレスＳ７は信号Ｓ４の最上位ビットを除いた下位１６ビットを抽出することによって得られる。
【００５２】
加算器２４は、（Ｍ−１）を算出するための１６ビットの演算器である。（Ｍ−１）は本来、（バッファ領域上限値ＬＥ−バッファ領域下限値ＬＢ）で求められるが、２の補数を用いた演算では、数２に示す（Ｍ−１＝ＬＥ−ＬＢ＝ＬＥ＋￣ＬＢ＋１）の関係が成り立つので、バッファ領域上限値ＬＥと信号Ｓ３と１とを加算器２４で加算することによって、上記演算を行い、（Ｍ−１）を信号Ｓ５として出力する。なお、信号Ｓ３は、ＮＯＴ回路３６によるバッファ領域下限値ＬＢのビット反転値￣ＬＢであり、また、１はキャリー入力として、加算器２４において最下位ビットに加算される。
【００５３】
選択器３０は信号Ｎ０（信号Ｓ１の最上位ビット）の値に応じて加算器２８への入力を切り替えるための選択手段である。選択器３０では、加算方向へのアドレシング（Ｎ０＝０）の場合にはバッファ領域上限値ＬＥが選択され、減算方向へのアドレシング（Ｎ０＝１）の場合にはバッファ領域下限値ＬＢが選択される。
【００５４】
加算器２６は、巡回アドレスＳ１０を算出するための１６ビットの演算器であり、加算器２６では、非巡回アドレスＳ７と信号Ｓ８と信号Ｎ０とが加算される。なお、信号Ｓ８は、ＥＸ−ＮＯＲ回路３８による信号Ｓ５と信号Ｎ０との排他的否定論理和によって得られる信号であり、（Ｍ−１）または（Ｍ−１）の反転値のいずれかとなる。また、信号Ｎ０はキャリー入力として、加算器２６において最下位ビットに加算され、減算方向へのアドレシング時に「１」となる。したがって、加算器２６によって、加算方向へのアドレシング時には（Ａ＋｜Ｃ｜）−Ｍが算出され（数３）、減算方向へのアドレシング時には（Ａ−｜Ｃ｜）＋Ｍが算出される（数４）。
【００５５】
加算器２８は、巡回条件判定を行うための１７ビットの演算器であり、加算器２８では、信号Ｓ４と信号Ｓ９と信号Ｎ０とが加算される。なお、信号Ｓ９は、ＮＯＴ回路４０によるバッファ領域下限値ＬＢのビット反転値￣ＬＢまたはＮＯＴ回路４０によるバッファ領域上限値ＬＥのビット反転値￣ＬＥの、最上位に１を付加した１７ビットの信号であり、また、信号Ｎ０はキャリー入力として、加算器２８において最下位ビットに加算される。したがって、加算器２８によって、加算方向へのアドレシング時には（Ａ＋｜Ｃ｜）−ＬＥ−１が算出され（数５、数７）、減算方向へのアドレシング時には（Ａ−｜Ｃ｜）−ＬＢが算出される（数６、数８）。
【００５６】
選択器３２は、ＥＸ−ＮＯＲ回路４２から出力される信号Ｎ２に応じて更新値を選択する手段である。なお、信号Ｎ２は、信号Ｎ０と信号Ｎ１（加算器２８からの出力の最上位ビット）との排他的否定論理和によって得られる値である。巡回条件不成立（Ｎ２＝０：加算器２２から出力される非巡回アドレスＳ７がサーキュラバッファの範囲内にある）の場合には非巡回アドレスＳ７が選択され更新値となる。一方、巡回条件成立（Ｎ２＝１）の場合には巡回アドレスＳ１０が選択され更新値となる。
【００５７】
このように構成されるアドレス演算装置１０の動作について、図２を参照して説明する。
【００５８】
まず、アドレスレジスタ値Ａ、加減算オフセットＣ、バッファ領域下限値ＬＢ、バッファ領域上限値ＬＥ、加減算コントロール信号Ａ／Ｓが設定される（ステップＳ１１）。
【００５９】
そして、ステップＳ１３において、（加減算オフセットＣ≧０かつ加減算コントロール信号Ａ／Ｓ＝０）または（加減算オフセットＣ＜０かつ加減算コントロール信号Ａ／Ｓ＝１）であれば、加算器２２での（Ａ＋｜Ｃ｜）の演算によって、アドレスが加算方向へ進む非巡回アドレスＳ７が算出される（ステップＳ１５）。それと並列的に、加算器２４で数２に示す（Ｍ−１）が算出される。
【００６０】
ステップＳ１５で算出された非巡回アドレスＳ７を用いて、加算器２６での数３に示す（Ａ＋｜Ｃ｜）−Ｍの演算によって巡回アドレスＳ１０が算出される（ステップＳ１７ａ）とともに、（Ａ＋｜Ｃ｜）≧ＬＥ＋１か否かの判断によって巡回条件成立か否かが判定される（ステップＳ１７ｂ）。
【００６１】
ステップＳ１７ｂにおける巡回条件判定処理は、実際には数７に示す（Ａ＋｜Ｃ｜）＋￣ＬＥの演算の結果、信号Ｎ１が０か否かによって判断され、０であれば巡回条件成立、１であれば巡回条件不成立となる。
【００６２】
ステップＳ１７ｂにおいて、巡回条件が成立すれば、ステップＳ１７ａにおいて（Ａ＋｜Ｃ｜）−Ｍによって算出された巡回アドレスＳ１０が、更新後のアドレスレジスタ値Ａとされる（ステップＳ１９ａ）。
【００６３】
一方、ステップＳ１７ｂにおいて、巡回条件が成立しなければ、ステップＳ１５において（Ａ＋｜Ｃ｜）によって算出された非巡回アドレスＳ７が、更新後のアドレスレジスタ値Ａとされる（ステップＳ１９ｂ）。
【００６４】
一方、ステップＳ１３において、（加減算オフセットＣ≧０かつ加減算コントロール信号Ａ／Ｓ＝０）でも（加減算オフセットＣ＜０かつ加減算コントロール信号Ａ／Ｓ＝１）でもなければ、加算器２２での（Ａ−｜Ｃ｜）の演算によって、アドレスが減算方向へ進む非巡回アドレスＳ７が算出される（ステップＳ２１）。それと並列的に、加算器２４で数２に示す（Ｍ−１）が算出される。
【００６５】
ステップＳ２１で算出された非巡回アドレスＳ７を用いて、加算器２６での数４に示す（Ａ−｜Ｃ｜）＋Ｍの演算によって巡回アドレスＳ１０が算出される（ステップＳ２３ａ）とともに、（Ａ−｜Ｃ｜）＜ＬＢか否かの判断によって巡回条件成立か否かが判定される（ステップＳ２３ｂ）。
【００６６】
ステップＳ２３ｂにおける巡回条件判定処理は、実際には数８に示す（Ａ−｜Ｃ｜）＋￣ＬＢ＋１の演算の結果、信号Ｎ１が１か否かによって判断され、１であれば巡回条件成立、０であれば巡回条件不成立となる。
【００６７】
ステップＳ２３ｂにおいて、巡回条件が成立すれば、ステップＳ２５ａにおいて（Ａ−｜Ｃ｜）＋Ｍによって算出された巡回アドレスＳ１０が、更新後のアドレスレジスタ値Ａとされる（ステップＳ２５ａ）。
【００６８】
一方、ステップＳ２３ｂにおいて、巡回条件が成立しなければ、ステップＳ２１において（Ａ−｜Ｃ｜）によって算出された非巡回アドレスＳ７が、更新後のアドレスレジスタ値Ａとされる（ステップＳ２５ｂ）。
【００６９】
ついで、アドレス演算装置１０での演算例について説明する。
【００７０】
最初に、図３および図４を参照して、加算方向へのアドレシングでありかつ巡回条件不成立時の演算例を説明する。
【００７１】
まず、アドレスレジスタ値Ａ＝０×１００５、加減算オフセットＣ＝０×０００５、バッファ領域下限値ＬＢ＝０×１０００、バッファ領域上限値ＬＥ＝０×１０２０、加減算コントロール信号Ａ／Ｓ＝０（加算）が設定される。
【００７２】
この場合、Ｃ≧０かつＡ／Ｓ＝０であるので、加算器２２では加算方向へのアドレシングが行われ、（Ａ＋｜Ｃ｜）＝０×０１００Ａより非巡回アドレスＳ７＝０×１００Ａが算出されるとともに、加算器２４によって（Ｍ−１）＝０×００２０が算出される。
【００７３】
そして、加算器２６によって巡回アドレスＳ１０が（Ａ＋｜Ｃ｜）−Ｍ＝０×０ＦＥ９と算出されるとともに、加算器２８によって（Ａ＋｜Ｃ｜）−ＬＥ−１＝０×１ＦＦＥ９が算出される。加算器２８によって算出された値の最上位ビットである信号Ｎ１＝１であるので、巡回条件不成立とされる。
【００７４】
したがって、選択器３２では、加算器２２によって得られた０×１００Ａが選択され、更新後のアドレスレジスタ値Ａとして出力される。
【００７５】
次に、図５および図６を参照して、加算方向へのアドレシングでありかつ巡回条件成立時の演算例を説明する。
【００７６】
まず、アドレスレジスタ値Ａ＝０×１０１８、加減算オフセットＣ＝０×０００Ｃ、バッファ領域下限値ＬＢ＝０×１０００、バッファ領域上限値ＬＥ＝０×１０２０、加減算コントロール信号Ａ／Ｓ＝０（加算）が設定される。
【００７７】
この場合、Ｃ≧０かつＡ／Ｓ＝０であるので、加算器２２では加算方向へのアドレシングが行われ、（Ａ＋｜Ｃ｜）＝０×０１０２４より非巡回アドレスＳ７＝０×１０２４が算出されるとともに、加算器２４によって（Ｍ−１）＝０×００２０が算出される。
【００７８】
そして、加算器２６によって巡回アドレスＳ１０が（Ａ＋｜Ｃ｜）−Ｍ＝０×１００３と算出されるとともに、加算器２８によって（Ａ＋｜Ｃ｜）−ＬＥ−１＝０×００００３が算出される。加算器２８によって算出された値の最上位ビットである信号Ｎ１＝０であるので、巡回条件成立とされる。
【００７９】
したがって、選択器３２では、加算器２６によって得られた０×１００３が選択され、更新後のアドレスレジスタ値Ａとして出力される。
【００８０】
さらに、図７および図８を参照して、減算方向へのアドレシングでありかつ巡回条件不成立時の演算例を説明する。
【００８１】
まず、アドレスレジスタ値Ａ＝０×１０１０、加減算オフセットＣ＝０×０００８、バッファ領域下限値ＬＢ＝０×１０００、バッファ領域上限値ＬＥ＝０×１０２０、加減算コントロール信号Ａ／Ｓ＝１（減算）が設定される。
【００８２】
この場合、Ｃ≧０かつＡ／Ｓ＝１であるので、加算器２２では減算方向へのアドレシングが行われ、（Ａ−｜Ｃ｜）＝０×１１００８より非巡回アドレスＳ７＝０×１００８が算出されるとともに、加算器２４によって（Ｍ−１）＝０×００２０が算出される。
【００８３】
そして、加算器２６によって巡回アドレスＳ１０が（Ａ−｜Ｃ｜）＋Ｍ＝０×１０２９と算出されるとともに、加算器２８によって（Ａ−｜Ｃ｜）−ＬＢ＝０×００００８が算出される。加算器２８によって算出された値の最上位ビットである信号Ｎ１＝０であるので、巡回条件不成立とされる。
【００８４】
したがって、選択器３２では、加算器２２によって得られた０×１００８が選択され、更新後のアドレスレジスタ値Ａとして出力される。
【００８５】
次に、図９および図１０を参照して、減算方向へのアドレシングでありかつ巡回条件成立時の演算例を説明する。
【００８６】
まず、アドレスレジスタ値Ａ＝０×１００２、加減算オフセットＣ＝０×０００７、バッファ領域下限値ＬＢ＝０×１０００、バッファ領域上限値ＬＥ＝０×１０２０、加減算コントロール信号Ａ／Ｓ＝１（減算）が設定される。
【００８７】
この場合、Ｃ≧０かつＡ／Ｓ＝１であるので、加算器２２では減算方向へのアドレシングが行われ、（Ａ−｜Ｃ｜）＝０×００ＦＦＢより非巡回アドレスＳ７＝０×０ＦＦＢが算出されるとともに、加算器２４によって（Ｍ−１）＝０×００２０が算出される。
【００８８】
そして、加算器２６によって巡回アドレスＳ１０が（Ａ−｜Ｃ｜）＋Ｍ＝０×１０１Ｃと算出されるとともに、加算器２８によって（Ａ−｜Ｃ｜）−ＬＢ＝０×１ＦＦＦＢが算出される。加算器２８によって算出された値の最上位ビットである信号Ｎ１＝１であるので、巡回条件成立とされる。
【００８９】
したがって、選択器３２では、加算器２６によって得られた０×１０１Ｃが選択され、更新後のアドレスレジスタ値Ａとして出力される。
【００９０】
このようなアドレス演算装置１０によれば、バッファ領域上限値ＬＥおよびバッファ領域下限値ＬＢをユーザが任意の値に設定できるので、それらの値自体明確となりプログラム作成の自由度を向上できるとともに、データメモリを有効に利用でき、メモリ利用効率を向上できる。後述するアドレス演算装置１０ａ、１０ｂにおいても同様である。
【００９１】
また、アドレス演算装置１０によれば、演算アルゴリズムを工夫しかつ加算器を従来（アドレス演算装置２ａ）より１つ追加することによって、非巡回アドレスＳ７の算出および（Ｍ−１）の算出、巡回アドレスＳ１０の算出および巡回条件判定を、それぞれ並列実行できる。したがって、アドレシング時の１サイクル中における加算器の通過段数の最長経路を、アドレス演算装置２ａの３段から２段に削減できる。その結果、アドレス演算装置２ａと比較して約３割の速度向上が望めることがシミュレーションによって確認されている。また、アドレス演算装置２ｂとは異なり、プライオリティエンコーダを用いる必要もない。したがって、サーキュラアドレシングに必要な時間を短縮でき、たとえばＤＳＰの処理速度を向上することができる。
【００９２】
さらに、アドレス演算装置１０では、加算器２２および２８が１７ビット構成、加算器２４および２６が１６ビット構成とされる。これは、有効ビット数がｎビットのサーキュラバッファを構成した場合、有効アドレス空間の上限、下限（１６ビットの場合であれば上限：０×ＦＦＦＦ、下限：０×００００）においてそれぞれオーバーフロー、アンダーフローが発生しても巡回条件判定を適正に行うには、加算器２２ａおよび２８ａにおいてそれぞれ（ｎ＋１）ビットの演算を行う必要があるためである。
【００９３】
ついで、図１１に、この発明の他の実施の形態のアドレス演算装置１０ａを示す。
【００９４】
アドレス演算装置１０ａは、すべての加算器がｎビット（この実施の形態では１６ビット）に構成され、かつ有効アドレス空間の上限、下限においてそれぞれオーバーフロー、アンダーフローが発生しても巡回条件判定が適正となるように構成されたものである。すなわち、アドレス演算装置１０aでは、加算器２４および２６だけではなく、加算器２２ａおよび２８ａもが１６ビット構成とされる。また、アドレス演算装置１０ａの選択器３２は、ＥＸ−ＯＲ回路４４から出力される信号Ｎ２ａに応じて、巡回条件判定を行い、更新値を選択する。なお、信号Ｎ２ａは、加算器２２ａおよび２８ａのそれぞれのキャリーアウト信号Ｎ４ａおよびＮ１ａの排他的論理和によって与えられる値である。巡回条件不成立の場合にはＮ２ａ＝０となり、巡回条件成立の場合にはＮ２ａ＝１となる。
【００９５】
加算器２２ａおよび２８ａのそれぞれのキャリーアウト信号Ｎ４ａおよびＮ１ａと巡回動作との関係を図１２に示す。また、図１２の各場合における巡回動作の模式図を図１３に示す。
【００９６】
図１２および図１３を参照して、まず、加算方向へのアドレシング時の動作について説明する。
【００９７】
キャリーアウト信号Ｎ４ａ＝０かつＮ１ａ＝０のときには、図１３（ａ）に示すように非巡回である。キャリーアウト信号Ｎ４ａ＝０かつＮ１ａ＝１のときには、図１３（ｂ）に示すように巡回である。キャリーアウト信号Ｎ４ａ＝１かつＮ１ａ＝０のときには、図１３（ｃ）に示すように巡回である。キャリーアウト信号Ｎ４ａ＝１かつＮ１ａ＝１のときには、図１３（ｄ）に示すように考えられるが、これは仕様上あり得ない。
【００９８】
つづいて、減算方向へのアドレシング時の動作について説明する。
【００９９】
キャリーアウト信号Ｎ４ａ＝１かつＮ１ａ＝１のときには、図１３（ｅ）に示すように非巡回である。キャリーアウト信号Ｎ４ａ＝１かつＮ１ａ＝０のときには、図１３（ｆ）に示すように巡回である。キャリーアウト信号Ｎ４ａ＝０かつＮ１ａ＝１のときには、図１３（ｇ）に示すように巡回である。キャリーアウト信号Ｎ４ａ＝０かつＮ１ａ＝０のときには、図１３（ｈ）に示すように考えられるが、これは仕様上あり得ない。
【０１００】
上述の結果より、巡回条件が成立するのはキャリーアウト信号Ｎ４ａとＮ１ａとが異なるとき、すなわち、Ｎ４ａ XOR Ｎ２ａ＝１（またはＮ４ａ XNOR Ｎ２ａ＝０）が成立するときであり、一方、巡回条件が不成立となるのはキャリーアウト信号Ｎ４ａとＮ１ａとが等しいとき、すなわち、Ｎ４ａ XOR Ｎ２ａ＝０（またはＮ４ａ XNOR Ｎ２ａ＝１）が成立するときである。したがって、ＥＸ−ＯＲ回路４４によってキャリーアウト信号Ｎ４ａとＮ１ａとの排他的論理和である信号Ｎ２ａを算出することによって、巡回条件判定が可能となる。なお、ＥＸ−ＯＲ回路４４の代わりにＥＸ−ＮＯＲ回路を用いても巡回条件判定は可能である。
【０１０１】
その他の構成および動作については図１に示すアドレス演算装置１０と同様であり、同様の効果が得られるので、その重複する説明は省略する。
【０１０２】
また、図１１に示すアドレス演算装置１０ａによれば、加算器２２ａ、２４、２６、２８ａとして同一ビット構成のものを用いることができるので、容易に構成することができる。
【０１０３】
なお、図１、図１１に示すこの発明の実施の形態では、２つの演算を同時に行うことによって処理の高速化を図っているが、２つの演算を同時に行わなければ１つの加算器を２つの演算に共用できる。この場合、加算器の数を２つに減らすことができるので、回路規模を小さくすることができる。
【０１０４】
さらに、図１４に、この発明のさらにその他の実施の形態のアドレス演算装置１０ｂを示す。
【０１０５】
アドレス演算装置１０ｂでは、ＮＯＴ回路４０および桁上げ保存加算器（ＣＳＡ：Carry Save Adder）４６が巡回アドレスの算出と巡回条件の判定とに兼用される。すなわち、アドレス演算装置１０ｂでは、ＮＯＴ回路４０、桁上げ保存加算器４６、選択器４８、桁上げ保存加算器５０および加算器５２によって巡回アドレスが算出され、ＮＯＴ回路４０、桁上げ保存加算器４６、加算器５４およびＥＸ−ＯＲ回路５６によって巡回条件が判定される。
【０１０６】
ＮＯＴ回路４０は、加算方向へのアドレシング時にはバッファ領域上限値ＬＥを、減算方向へのアドレシング時にはバッファ領域下限値ＬＢをそれぞれビット反転して、桁上げ保存加算器４６に入力する。
【０１０７】
桁上げ保存加算器４６では、加算方向へのアドレシング時には、アドレスレジスタ値Ａと加減算オフセット値Ｃとバッファ領域上限値ＬＥのビット反転値￣ＬＥとが入力され、Ａ＋｜Ｃ｜＋￣ＬＥが算出される。減算方向へのアドレシング時には、アドレスレジスタ値Ａと加減算オフセットＣのビット反転値￣Ｃとバッファ領域下限値ＬＢのビット反転値￣ＬＢとが入力される他、キャリーインとして加減算コントロール信号Ａ／Ｓ＝１が入力され、Ａ＋￣Ｃ＋￣ＬＢ＋１、すなわちＡ−｜Ｃ｜＋￣ＬＢが算出される。
【０１０８】
選択器４８では、加算方向へのアドレシング時にはバッファ領域下限値ＬＢが選択され、減算方向へのアドレシング時にはバッファ領域上限値ＬＥが選択され、信号Ｓ１１として桁上げ保存加算器５０に入力される。桁上げ保存加算器５０には、さらに桁上げ保存加算器４６の出力が与えられる。
【０１０９】
したがって、加算方向へのアドレシング時には、桁上げ保存加算器５０と加算器５２とによって、Ａ＋｜Ｃ｜＋￣ＬＥ＋ＬＢが算出され、この式はＡ＋｜Ｃ｜−ＬＥ＋ＬＢ−１と変形でき、Ａ＋｜Ｃ｜−Ｍと等価であるので（なぜならば、Ｍ＝ＬＥ−ＬＢ＋１）、巡回アドレスが算出される。一方、減算方向へのアドレシング時には、桁上げ保存加算器５０に選択器４８からのバッファ領域上限値ＬＥと桁上げ保存加算器４６からの出力とが入力される他、さらに桁上げ保存加算器５０および加算器５２にはそれぞれ信号Ｎ０＝１がキャリーインとして入力されるので、桁上げ保存加算器５０と加算器５２とによって、Ａ−｜Ｃ｜＋ＬＥ＋￣ＬＢ＋１＋１が算出される。この式はＡ−｜Ｃ｜＋ＬＥ−ＬＢ＋１と変形でき、Ａ−｜Ｃ｜＋Ｍと等価であるので、巡回アドレスが算出される。
【０１１０】
また、桁上げ保存加算器４６の出力は加算器５４にも与えられる。加算器５４では、加算方向へのアドレシング時には（Ａ＋｜Ｃ｜）＋￣ＬＥが算出され、一方、減算方向へのアドレシング時には、桁上げ保存加算器４６の出力の他さらに信号Ｎ０＝１がキャリーインとして入力されるので、（Ａ−｜Ｃ｜）＋￣ＬＢ＋１が算出され、巡回条件判定のための演算が行われる。
【０１１１】
そして、桁上げ保存加算器４６のキャリーアウト信号ｃｏ１と加算器５４のキャリーアウト信号ｃｏ２とがＥＸ−ＯＲ回路５６に与えられ排他的論理和である信号Ｎ３を算出することによって、巡回条件判定が可能となる。
【０１１２】
ここで、アドレス演算装置１０ｂでは、図１１に示すアドレス演算装置１０ａとは異なり、キャリーアウト信号ｃｏ１とｃｏ２との排他的論理和をとることによって巡回条件の判定を行う理由について述べる。
【０１１３】
アドレス演算装置１０ａでは、加算器２２ａのキャリーアウト信号Ｎ４ａと加算器２８ａのキャリーアウト信号Ｎ１ａとの排他的論理和が１になったときを巡回条件成立と判定していた。しかし、アドレス演算装置１０ｂにおける加算器５４のキャリーアウト信号ｃｏ２とアドレス演算装置１０ａにおける加算器２８ａのキャリーアウト信号Ｎ１ａとは等価ではない（アドレス演算装置１０ｂでは途中で桁上げ保存加算器４６を通過するため）ので、アドレス演算装置１０ａと同様のアルゴリズムでは正しい結果が得られない。
【０１１４】
そこで、アドレス演算装置１０ａと等価な条件が得られるよう回路の変更を行う。
【０１１５】
まず、アドレス演算装置１０ｂにおいて加算器２２ａ、桁上げ保存加算器４６、加算器５４のキャリーアウト信号をそれぞれｃｏ０、ｃｏ１、ｃｏ２とする。
【０１１６】
巡回条件判定手段を構成する桁上げ保存加算器４６、加算器５４では、加算方向へのアドレシング時には数７、減算方向へのアドレシング時には数８の条件判定のための演算が行われるが、この場合、数７の（Ａ＋｜Ｃ｜）＋￣ＬＥおよび数８の（Ａ−｜Ｃ｜）＋￣ＬＢ＋１の解は最大で１８ビットの数となる。いま、この数をＣＪ[１７：０]とすると、数９、数１０という関係が成立する。
【０１１７】
【数９】
ＣＪ［１７］＝ｃｏ１＆ｃｏ２
【数１０】
ＣＪ［１６］＝ｃｏ１＾ｃｏ２
ここで、「＆」は論理積（ＡＮＤ）を、「＾」は排他的論理和（ＥＸ−ＯＲ）を示す。
【０１１８】
さらに、アドレス演算装置１０ａの条件判定信号であるキャリーアウト信号Ｎ４ａ、Ｎ１ａとＣＪ、ｃｏ０との間には、数１１、数１２という関係が成立する。
【０１１９】
【数１１】
Ｎ４ａ＝ｃｏ０
【数１２】
Ｎ１ａ＝ＬＳＢ ｏｆ（ＣＪ［１７：１６］−ｃｏ０）
数１２の関係は図１５に示すようになる。
【０１２０】
図１５から、数１２は数１３のようにも表現することができる。
【０１２１】
【数１３】
0003685634.tif 000003
ここで、アドレス演算装置１０ａの巡回条件の式に数１１、数１３を代入、変形すると、数１４に示すようになる。
【０１２２】
【数１４】
0003685634.tif 000004
数１４より、アドレス演算装置１０ｂの判定条件は、桁上げ保存加算器４６、加算器５４のそれぞれのキャリーアウト信号ｃｏ１、ｃｏ２の排他的論理和を演算し、その結果が１になったときを巡回条件成立と考えればよいことがわかる。
【０１２３】
アドレス演算装置１０ｂでは、少なくとも、加算器２２ａによる非巡回アドレス算出処理と、巡回アドレスの算出および巡回条件の判定に兼用される桁上げ保存加算器４６による加算処理とが並列実行される。
【０１２４】
その他の構成および動作については図１１に示すアドレス演算装置１０ａと同様であるので、その重複する説明は省略する。
【０１２５】
このように構成されるアドレス演算装置１０ｂにおいて注目すべきは、加算器として２つの桁上げ保存加算器４６、５０を用いることである。
【０１２６】
ここで、桁上げ保存加算器は、１ビット全加算器を並列に配置した構造を持つ加算器である。ｎビットの桁上げ保存加算器はｎ個の全加算器を並列に配置した構造を持つ。この場合、各加算器は独立であり、桁上げ（キャリー）の伝搬は起こらないため、桁上げ保存加算器の論理段数は１ビット全加算器の論理段数２に等しくなる。ただし、桁上げを逐次計算しないため、最終的な解を得る場合は最後にＳＵＭとＣａｒｒｙとの和を求める必要がある。
【０１２７】
以上の特徴をまとめると図１６に示すようになる。なお、図１６において、ｎはビット数を示す。また、実測値は、当社のセルライブラリと市販の論理合成ツールとを用いて、各方式で１６ビットの全加算器を合成したときの解析結果であり、先見桁上げ加算器を基準として正規化している。
【０１２８】
図１６からわかるように、たとえば１６ビット構成の場合には、桁上げ保存加算器は、先見桁上げ加算器（ＣＬＡ：Carry Look-Ahead Adder）よりも論理段数およびセル数を小さくすることができ、実測値では、通過遅延比を０．４５、面積比を０．２５にすることができた。
【０１２９】
したがって、図１７に示すような効果が得られる。ここでは、図１１に示すアドレス演算装置１０ａの加算器２２ａ、２４、２６、２８ａ、図１４に示すアドレス演算装置１０ｂの加算器２２ａ、５２、５４、図１８に示す加算器３ａ、４ａ、５ａにそれぞれ先見桁上げ加算器を用いた場合を示す。なお、図１７において、ＣＬＡは先見桁上げ加算器を、ＣＳＡは桁上げ保存加算器をそれぞれ示す。図１７を参照して、アドレス演算装置１０ｂを従来のアドレス演算装置２ａと比較した場合、最長経路における演算時間の改善率は５７．９％となった。また、アドレス演算装置１０ｂをアドレス演算装置１０ａと比較した場合では、最長経路における演算時間の改善率は５．３％、加算器の総面積の改善率は１４．３％となり、さらに高速化できかつ回路規模を小さく省面積化が図れる。この効果は、ビット数が大きくなるほど顕著となる。
【０１３０】
このようにアドレス演算装置１０ｂによれば、全加算器よりも回路規模が小さくかつ通過時間も短い桁上げ保存加算器４６、５０を用いた演算アルゴリズムによって、演算に必要な回路規模を削減でき、サーキュラアドレシング演算に必要な時間を短縮できる。すなわち、アドレス演算装置１０ｂでは、巡回アドレスの算出と巡回条件判定演算とを、桁上げ保存加算器４６、５０を用いて行うことによって、速度の向上と省面積化とを図ることができる。
【０１３１】
【発明の効果】
この発明によれば、バッファ領域上限値およびバッファ領域下限値を任意の値に設定できるので、プログラムの自由度とメモリ利用効率を向上できる。
【０１３２】
また、請求項１に記載のアドレス演算装置、請求項５に記載のアドレス演算方法では、非巡回アドレス算出処理と（バッファサイズ−１）を算出する処理とを並列実行でき、巡回アドレス算出処理と巡回条件判定処理とを並列実行できる。巡回条件判定後に巡回アドレスを算出するのではない。
【０１３４】
請求項２または３に記載のアドレス演算装置でいえば、第１加算器での処理と第２加算器での処理とを並列実行でき、第３加算器での処理と第４加算器での処理とを並列実行できる。
【０１３５】
請求項４に記載のアドレス演算装置では、非巡回アドレス算出処理と巡回アドレス算出処理と巡回条件判定処理とを並列実行でき、少なくとも、第１加算器での処理と第１桁上げ保存加算器での処理とを並列実行できる。
【０１３７】
したがって、サーキュラアドレシング処理を高速に行うことができる。
【図面の簡単な説明】
【図１】この発明の一実施形態を示す回路図である。
【図２】図１の実施形態の動作の一例を示すフロー図である。
【図３】図１の実施形態の一演算例（加算方向へのアドレシング、巡回条件不成立時）の入力値、中間信号値、出力値を示すテーブルである。
【図４】図３の演算例における各部の値を示す模式図である。
【図５】図１の実施形態の他の演算例（加算方向へのアドレシング、巡回条件成立時）の入力値、中間信号値、出力値を示すテーブルである。
【図６】図５の演算例における各部の値を示す模式図である。
【図７】図１の実施形態のその他の演算例（減算方向へのアドレシング、巡回条件不成立時）の入力値、中間信号値、出力値を示すテーブルである。
【図８】図７の演算例における各部の値を示す模式図である。
【図９】図１の実施形態のさらにその他の演算例（減算方向へのアドレシング、巡回条件成立時）の入力値、中間信号値、出力値を示すテーブルである。
【図１０】図９の演算例における各部の値を示す模式図である。
【図１１】この発明の他の実施形態を示す回路図である。
【図１２】キャリーアウト信号Ｎ４ａおよびＮ１ａと巡回動作との関係を示すテーブルである。
【図１３】図１２の各場合における巡回動作を示す模式図である。
【図１４】この発明のさらにその他の実施形態を示す回路図である。
【図１５】数１２の関係を示すテーブルである。
【図１６】先見桁上げ加算器との比較において桁上げ保存加算器の特徴を示すテーブルである。
【図１７】図１４に示す実施形態の効果を示すテーブルである。
【図１８】データメモリに形成されたサーキュラバッファを示す模式図である。
【図１９】従来技術の一例を示す回路図である。
【図２０】従来技術の他の例を示す回路図である。
【符号の説明】
１０、１０ａ、１０ｂ        アドレス演算装置
２２、２２ａ、２４、２６、２８、２８ａ、５２、５４      加算器
３０、３２、４８      選択器
３４、４４、５６      ＥＸ−ＯＲ回路
３６、４０      ＮＯＴ回路
３８、４２      ＥＸ−ＮＯＲ回路
４６、５０      桁上げ保存加算器
【図１】
0003685634.tif 000005
【図２】
0003685634.tif 000006
【図３】
0003685634.tif 000007
【図４】
0003685634.tif 000008
【図５】
0003685634.tif 000009
【図６】
0003685634.tif 000010
【図７】
0003685634.tif 000011
【図８】
0003685634.tif 000012
【図９】
0003685634.tif 000013
【図１０】
0003685634.tif 000014
【図１１】
0003685634.tif 000015
【図１２】
0003685634.tif 000016
【図１３】
0003685634.tif 000017
【図１４】
0003685634.tif 000018
【図１５】
0003685634.tif 000019
【図１６】
0003685634.tif 000020
【図１７】
0003685634.tif 000021
【図１８】
0003685634.tif 000022
【図１９】
0003685634.tif 000023
【図２０】
0003685634.tif 000024