2007/8/7 3
2進数の割り算
00101 0101)00011101 0000 0011 0000 0111 0101 0100 0000 1001 0101 0100
方法は10進数の 割り算と同じ
00011 1001)00011101 0000 0011 0000 0111 0000 1110 1001 1011 1001 0010
2007/8/7 4
割り算の筆算
桁をずらしながら被除数と除数を比較する
被除数≧除数なら
商(≧1)を立てて,被除数から(除数×商)を引く
被除数<除数なら
商0を立てて,引き算は行わない
これを回路で実現するにはどうするか?
2007/8/7 8
減算器による計算
HS
1
0
0
1
0
1
1
1
FS
FS
FS
1
0
1
1
1
1010 - 1101 1101?
X
Y
D
1
0
1
1になる
引き算ができない場合
2007/8/7 9
減算器の出力
最後の桁で借りが発生した 場合に1になる
HS
X1
X0
X2
X3
Y1
Y0
Y2
Y3
FS
FS
FS
D0
D1
D2
D3
B
X(引かれる数)よりも Y(引く数)の方が大きかった
引き算に失敗した
2007/8/7 10
減算器出力の最上位の桁
減算器の出力の最上位の桁が0 引き算が成功した
引かれる数≧引く数
減算器の出力の最上位の桁が1 引き算が失敗した
引かれる数<引く数
ここを見れば,どちらの数が大きいのかがわかる
2007/8/7 11
基本方針
とりあえず被除数から除数を引いてみる
最上位の出力が0なら引き算の結果を反映させる
レジスタに記憶させる
最上位の出力が1なら引き算の結果を無視する
レジスタに記憶させない
2007/8/7 12
4桁の2進数による割り算
01100 1101)10011101 0000 10011 1101 1101 1101 0000 0000 0001 0000 0001
「5桁-4桁」の引き算が必要な 場合がある
2007/8/7 13
5桁の減算器
SUB
X4 . . . X0 Y4 . . . Y0
B D4 . . . D0
横にして簡単に書くと X1
X0
X2
X3
Y1
Y0
Y2
Y3
D0
D1
D2
D3
X4 Y4
D4
HS
FS
FS
FS
FS B
2007/8/7 15
変形左シフトレジスタ
L
D
T
Q
Q
D
T
Q
Q
T
D
T
Q
Q
D
T
Q
Q
D
T
Q
Q
D
T
Q
Q
D
T
Q
Q
T’
← ← ← ← ← ← ← ← ← ← ← ← L
T T’
sel
sel
sel
sel
sel
sel
…
sel
0
D
T
Q
Q
sel
←
2007/8/7 17
←
0
除算回路の動作
SUB
0 0 0 0 1 0 0 1 1 1 0 1 ?
0 0 0 1
0
0
000 01
000 00
00 00 最初の状態
1
← ← ← ← ← ← ← ← ← ← ← ←
0
除数
被除数
2007/8/7 18
←
0
除算回路の動作
SUB
0 0 0 0 0 0 0 1 1 1 0 1 1
0 0 0 1
1
1
000 00
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 19
←
0
除算回路の動作
SUB
0 0 0 0 0 0 0 1 1 1 0 1 1
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 20
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 1 0 1 1 ?
0 0 0 1
1
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 21
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 1 0 1 1 ?
0 0 0 1
0
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 22
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 1 0 1 1 0
0 0 0 1
1
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 23
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 1 0 1 1 0
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 24
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 1 0 1 1 0 ?
0 0 0 1
1
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 25
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 1 0 1 1 0 ?
0 0 0 1
0
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 26
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 1 0 1 1 0 0
0 0 0 1
1
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 27
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 1 0 1 1 0 0
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 28
←
0
除算回路の動作
SUB
0 0 0 0 1 1 1 0 1 1 0 0 ?
0 0 0 1
1
0
000 01
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 29
←
0
除算回路の動作
SUB
0 0 0 0 1 1 1 0 1 1 0 0 ?
0 0 0 1
0
0
000 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 30
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 0 1 1 0 0 1
0 0 0 1
1
1
000 00
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 31
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 0 1 1 0 0 1
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 32
←
0
除算回路の動作
SUB
0 0 0 0 1 1 0 1 1 0 0 1 ?
0 0 0 1
1
0
000 01
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 33
←
0
除算回路の動作
SUB
0 0 0 0 1 1 0 1 1 0 0 1 ?
0 0 0 1
0
0
000 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 34
←
0
除算回路の動作
SUB
0 0 0 0 0 1 0 1 1 0 0 1 1
0 0 0 1
1
1
000 00
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 35
←
0
除算回路の動作
SUB
0 0 0 0 0 1 0 1 1 0 0 1 1
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 36
←
0
除算回路の動作
SUB
0 0 0 0 1 0 1 1 0 0 1 1 ?
0 0 0 1
1
0
000 01
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 37
←
0
除算回路の動作
SUB
0 0 0 0 1 0 1 1 0 0 1 1 ?
0 0 0 1
0
0
000 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 38
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 0 0 1 1 1
0 0 0 1
1
1
000 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 39
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 0 0 1 1 1
0 0 0 1
0
1
000 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 40
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 0 0 1 1 1
0 0 0 1
1
0
000 00
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 41
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 0 0 1 1 1
0 0 0 1
0
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 42
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 0 0 1 1 1
0 0 0 1
1
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 43
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 1 0 0 1 1 1
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 44
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 0 0 1 1 1 ?
0 0 0 1
1
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 45
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 0 0 1 1 1 ?
0 0 0 1
0
0
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 46
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 0 0 1 1 1 0
0 0 0 1
1
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 47
←
0
除算回路の動作
SUB
0 0 0 0 0 1 1 0 0 1 1 1 0
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 48
←
0
除算回路の動作
SUB
0 0 0 0 1 1 0 0 1 1 1 0 ?
0 0 0 1
1
0
000 01
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
1
2007/8/7 49
←
0
除算回路の動作
SUB
0 0 0 0 1 1 0 0 1 1 1 0 ?
0 0 0 1
0
0
000 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 50
←
0
除算回路の動作
SUB
0 0 0 0 0 1 0 0 1 1 1 0 1
0 0 0 1
1
1
000 00
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
0
2007/8/7 51
←
0
除算回路の動作
SUB
0 0 0 0 0 1 0 0 1 1 1 0 1
0 0 0 1
0
1
000 00
111 11
11 11 0
← ← ← ← ← ← ← ← ← ← ← ←
商
あまり
1
2007/8/7 53
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 1 1 1 0 1 ?
1 1 0 1
0
0
000 01
101 00
01 00 最初の状態
0
← ← ← ← ← ← ← ← ← ← ← ←
除数
被除数
2007/8/7 54
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 1 1 1 0 1 0
1 1 0 1
1
1
000 01
101 00
01 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 55
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 1 1 1 0 1 0
1 1 0 1
0
1
000 01
101 00
01 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 56
←
1
除算回路の動作
SUB
0 0 0 1 0 0 1 1 1 0 1 0 ?
1 1 0 1
1
0
000 10
101 00
01 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 57
←
1
除算回路の動作
SUB
0 0 0 1 0 0 1 1 1 0 1 0 ?
1 1 0 1
0
0
000 10
101 01
01 01 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 58
←
1
除算回路の動作
SUB
0 0 0 1 0 0 1 1 1 0 1 0 0
1 1 0 1
1
1
000 10
101 01
01 01 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 59
←
1
除算回路の動作
SUB
0 0 0 1 0 0 1 1 1 0 1 0 0
1 1 0 1
0
1
000 10
101 01
01 01 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 60
←
1
除算回路の動作
SUB
0 0 1 0 0 1 1 1 0 1 0 0 ?
1 1 0 1
1
0
001 00
101 01
01 01 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 61
←
1
除算回路の動作
SUB
0 0 1 0 0 1 1 1 0 1 0 0 ?
1 1 0 1
0
0
001 00
101 11
01 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 62
←
1
除算回路の動作
SUB
0 0 1 0 0 1 1 1 0 1 0 0 0
1 1 0 1
1
1
001 00
101 11
01 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 63
←
1
除算回路の動作
SUB
0 0 1 0 0 1 1 1 0 1 0 0 0
1 1 0 1
0
1
001 00
101 11
01 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 64
←
1
除算回路の動作
SUB
0 1 0 0 1 1 1 0 1 0 0 0 ?
1 1 0 1
1
0
010 01
101 11
01 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 65
←
1
除算回路の動作
SUB
0 1 0 0 1 1 1 0 1 0 0 0 ?
1 1 0 1
0
0
010 01
111 00
11 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 66
←
1
除算回路の動作
SUB
0 1 0 0 1 1 1 0 1 0 0 0 0
1 1 0 1
1
1
010 01
111 00
11 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 67
←
1
除算回路の動作
SUB
0 1 0 0 1 1 1 0 1 0 0 0 0
1 1 0 1
0
1
010 01
111 00
11 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 68
←
1
除算回路の動作
SUB
1 0 0 1 1 1 0 1 0 0 0 0 ?
1 1 0 1
1
0
100 11
111 00
11 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 69
←
0
除算回路の動作
SUB
1 0 0 1 1 1 0 1 0 0 0 0 ?
1 1 0 1
0
0
100 11
001 10
01 10 1
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 70
←
0
除算回路の動作
SUB
0 0 1 1 0 1 0 1 0 0 0 0 1
1 1 0 1
1
1
001 10
001 10
01 10 1
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 71
←
1
除算回路の動作
SUB
0 0 1 1 0 1 0 1 0 0 0 0 1
1 1 0 1
0
1
001 10
110 01
10 01 1
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 72
←
1
除算回路の動作
SUB
0 1 1 0 1 0 1 0 0 0 0 1 ?
1 1 0 1
1
0
011 01
110 01
10 01 1
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 73
←
0
除算回路の動作
SUB
0 1 1 0 1 0 1 0 0 0 0 1 ?
1 1 0 1
0
0
011 01
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 74
←
0
除算回路の動作
SUB
0 0 0 0 0 0 1 0 0 0 0 1 1
1 1 0 1
1
1
000 00
000 00
00 00 1
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 75
←
1
除算回路の動作
SUB
0 0 0 0 0 0 1 0 0 0 0 1 1
1 1 0 1
0
1
000 00
100 11
00 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 76
←
1
除算回路の動作
SUB
0 0 0 0 0 1 0 0 0 0 1 1 ?
1 1 0 1
1
0
000 00
100 11
00 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 77
←
1
除算回路の動作
SUB
0 0 0 0 0 1 0 0 0 0 1 1 ?
1 1 0 1
0
0
000 00
100 11
00 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 78
←
1
除算回路の動作
SUB
0 0 0 0 0 1 0 0 0 0 1 1 0
1 1 0 1
1
1
000 00
100 11
00 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 79
←
1
除算回路の動作
SUB
0 0 0 0 0 1 0 0 0 0 1 1 0
1 1 0 1
0
1
000 00
100 11
00 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 80
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 0 0 1 1 0 ?
1 1 0 1
1
0
000 01
100 11
00 11 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 81
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 0 0 1 1 0 ?
1 1 0 1
0
0
000 01
101 00
01 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 82
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 0 0 1 1 0 0
1 1 0 1
1
1
000 01
101 00
01 00 0
← ← ← ← ← ← ← ← ← ← ← ←
2007/8/7 83
←
1
除算回路の動作
SUB
0 0 0 0 1 0 0 0 0 1 1 0 0
1 1 0 1
0
1
000 01
101 00
01 00 0
← ← ← ← ← ← ← ← ← ← ← ←
答え
あまり