算術演算部


算術演算部では、加算、減算、インクリメント、デクリメントの4機能演算を 行う必要があります。

この4機能演算で、一番基になる演算は加算演算です。まずは、加算を行う方 法から見て行きましょう。

加算器を構成する際には、

などがあります。順次桁上げ加算器と桁上げ先見加算器を比較すると通常キャ リーの伝播がある順次桁上げ加算器の方が演算時間が遅く、演算器のデータ幅 が大きくなるほどその傾向が大きくなります。 しか しながら、Xilinx社製FPGAであるXC4000シリーズに実装する場合、桁上げ先見 加算器よりも順次桁上げ加算器の方が高速です。 実際には 桁上げ生 成回路(ファーストキャリーロジック)と呼ばれる桁上げ生成回路を使用して、 桁上げ先見加算器を構成するよりも高速な加算器が実装できるようになってい ます。したがって、Xilinx社製FPGAであるXC4000シリーズでは桁上げ先見加算 器を作るのは速度の点からも、面積の点からも無意味です。

なお、上述した高速な16ビット加算器は ADD16 のライブラリを呼び出せば利用できるようになっています。ここで、 ci は 桁上げ入力、co および ofl はそれぞれ桁上げ出力、オーバーフロー出 力です。



算術演算部は主に加算器から構成されることを述べました。では、加算以外の 減算等はどのように計算するのでしょうか。

算術演算部で計算すべき、加算、減算、インクリメント、デクリメントは、以 下の図のように、加算数に少し手を加えることで実行することができます。

このように、加算器に入力される演算数やキャリー入力に少し手を加えること で、各演算機能を実現できます。なお、 加減算器は 予めライブラリとして用意されています。セル名は ADSU16 です。こ こで、ci は 桁上げ入力、co および ofl はそれぞれ桁上げ出力、オーバーフ ロー出力、add は加算と減算の切り替え信号です。 動作の詳細は Xilinx の ライブラリマニュアルで必ず確認してから使用して ください。減算時の co 出力は反転されていない等の情報を得ることがでしま す。



インクリメント、デクリメントを実現するためには、加算器、または、加減算 器の演算数側に"0"あるいは"1"あるいは"0xFFFF"を出力するための細工が必要 です。これらの回路も忘れずに作成しなければなりません。

また、演算機能として パス(PASS)機能については説明しませんでした。しか し、パス機能を特に縦続接続によりALUを構成する場合は、パス機能を実現す るための工夫をしておく必要があります。パスを実現するためには加算器の演 算数側を"0"にするようにします。

キャリーフラグ、オーバーフローフラグに付いては、通常以下のように変化し ます。

フラグ 生成方法
キャリー 通常加算器の第15ビット目からの桁上がり信号がそのまま加算演算のキャ リーになります。しかし減算では論理レベルが反転するので注意が必要です。
オーバーフロー 加算では、被加算数と加算数が同符号で、かつ、被加算数と加算結果が 異符号であるとき。減算では、被減算数と減算数が異符号で、かつ、被減算数 と減算結果が異符号であるとき。なお、加算器の第14ビット目のキャリーと第 15ビット目のキャリーとの排他的論理和でも表現できる。


次は、 論理演算部を説明します。


| Back | CAD Home |

Our mail address is kite@arch.cs.kumamoto-u.ac.jp .
Last modified on