入力信号 | 4ビットデータ入力1 | A=(A3,A2,A1,A0) |
4ビットデータ入力2 | B=(B3,B2,B1,B0) | |
5ビット制御信号 | F=(F4,F3,F2,F1,F0) | |
出力信号 | 4ビットデータ出力 | Y=(Y3,Y2,Y1,Y0) |
制御信号 | 動作 | 説明 | ||||
F4 | F3 | F2 | F1 | F0 | ||
0 | 0 | 0 | 1 | 0 | Y <= A + B | 加算 |
0 | 0 | 0 | 1 | 1 | Y <= A - B | 減算、Bの2の補数とAの加算で実現する |
0 | 1 | 0 | 0 | 0 | Y <= A and B | 各桁ごとにand演算を取る |
0 | 1 | 1 | 0 | 0 | Y <= A or B | 各桁ごとにor演算を取る |
0 | 0 | 0 | 0 | 0 | Y <= shl A | A を左へ(上位へ)1ビットシフト |
1 | 0 | 0 | 0 | 0 | Y <= shr A | Aを右へ(下位へ)1ビットシフト |
上記2の補数器の出力(S3,S2,S1,S0)を加算器の(B3,B2,B1,B0)入力へほりこめば、減算器ができる。すなわち、HA2個、FA6個を用いて作れる。
しかし、ちょっと賢い人なら、以下のようにできることに気が付く。この場合、FA4個である。
なぜなら、引き算 Y <=
A - B = A + B' +1だから
ここで太めの線は複数の信号の束(4ビットのバス配線)を意味する。
次回は中間テストです。
教科書、ノートなどの持込はOKです。
以上