この4機能演算で、一番基になる演算は加算演算です。まずは、加算を行う方 法から見て行きましょう。
加算器を構成する際には、
なお、上述した高速な16ビット加算器は ADD16 のライブラリを呼び出せば利用できるようになっています。ここで、 ci は 桁上げ入力、co および ofl はそれぞれ桁上げ出力、オーバーフロー出 力です。
算術演算部は主に加算器から構成されることを述べました。では、加算以外の 減算等はどのように計算するのでしょうか。
算術演算部で計算すべき、加算、減算、インクリメント、デクリメントは、以 下の図のように、加算数に少し手を加えることで実行することができます。
このように、加算器に入力される演算数やキャリー入力に少し手を加えること で、各演算機能を実現できます。なお、 加減算器は 予めライブラリとして用意されています。セル名は ADSU16 です。こ こで、ci は 桁上げ入力、co および ofl はそれぞれ桁上げ出力、オーバーフ ロー出力、add は加算と減算の切り替え信号です。 動作の詳細は Xilinx の ライブラリマニュアルで必ず確認してから使用して ください。減算時の co 出力は反転されていない等の情報を得ることがでしま す。
インクリメント、デクリメントを実現するためには、加算器、または、加減算 器の演算数側に"0"あるいは"1"あるいは"0xFFFF"を出力するための細工が必要 です。これらの回路も忘れずに作成しなければなりません。
また、演算機能として パス(PASS)機能については説明しませんでした。しか し、パス機能を特に縦続接続によりALUを構成する場合は、パス機能を実現す るための工夫をしておく必要があります。パスを実現するためには加算器の演 算数側を"0"にするようにします。
キャリーフラグ、オーバーフローフラグに付いては、通常以下のように変化し ます。
フラグ | 生成方法 |
---|---|
キャリー | 通常加算器の第15ビット目からの桁上がり信号がそのまま加算演算のキャ リーになります。しかし減算では論理レベルが反転するので注意が必要です。 |
オーバーフロー | 加算では、被加算数と加算数が同符号で、かつ、被加算数と加算結果が 異符号であるとき。減算では、被減算数と減算数が異符号で、かつ、被減算数 と減算結果が異符号であるとき。なお、加算器の第14ビット目のキャリーと第 15ビット目のキャリーとの排他的論理和でも表現できる。 |
次は、 論理演算部を説明します。
Our mail address is
kite@arch.cs.kumamoto-u.ac.jp .
Last modified on