演算器間の接続
各演算器ができたら、最終的に演算器間の接続を行います。注意点を、データ、
フラグ、制御の各信号について記しておきます。
データ
- 接続形態が縦続接続の場合、各演算器の機能としてパス(PASS)機能が定
義されていますか? これがないと各演算の出力が正しく現れません。
- 接続形態が並列接続の場合、最終結果を1つだけマルチプレクサで選択し
ていますか? なお、必要な演算器のみが結果を出力し、指定されていない演
算器からの出力が必ず"0"になるような構成を採用した場合、マルチプレクサ
ではなく単なる論理和(OR)で繋ぐことも可能です。
フラグ
- 算術演算器およびシフト演算器からはキャリーおよびオーバーフローの
フラグが出力されていますか? 最終的には、このフラグをマルチプレクサま
たは論理和でまとめていますか? 論理和でまとめる場合は、演算器が指定さ
れていないときは、常に"0"に成るようにしていますか?
- 零および符号フラグは、演算の最終結果から生成していますか?
制御
- 制御信号は正しいですか?
- 制御信号に冗長性がない場合(4ビットしかない)はデコードした後に各
演算器を制御していますか?
制御信号に冗長性を持たせない場合のビット割り当て。 制御信号に冗長性を持たせない場合のビット割り当ては、
必ず以下のようにしてください。PASS以外の演算は、KITEプロセッサのオペレー
ションコードと一致しているので、これに合わせることでALUの制御信号生成
を簡略化することができます。
各命令とオペレーションコードとの対応はこち
らを参照して下さい。
演算種類 |
制御コード |
加算(ADD) |
0000 |
減算(SUB) |
0001 |
インクリメント(INC) |
0010 |
デクリメント(DEC) |
0011 |
論理和(OR) |
0100 |
排他的論理和(XOR) |
0101 |
論理積(AND) |
0110 |
論理否定(NOT) |
0111 |
論理左シフト(LSL) |
1000 |
算術左シフト(ASL) |
1001 |
論理右シフト(LSR) |
1010 |
算術右シフト(ASR) |
1011 |
左回転(ROL) |
1100 |
右回転(ROR) |
1101 |
パス(PASS) |
1110 |
バイトスワップ(SWP) |
1111 |
- 制御信号に冗長性がある場合(5ビット以上ある)は各演算を行う際の制
御信号のビットパターンをきちんと把握していますか?
制御信号に冗長性を持たせる場合の、ビット割り当て
例。あくまでも例です。
最後に、 シミュレーションの方法です。
| Back |
CAD Home |
Our mail address is
kite@arch.cs.kumamoto-u.ac.jp .
Last modified on