Upload
hanhu
View
236
Download
10
Embed Size (px)
Citation preview
1
11. 除算回路とALUこのテーマの要点
ディジタル回路でわり算を行う方法を理解する 各種の演算を行う専用ICについて知る
教科書の該当ページ 除算回路 [p.58]
算術論理演算装置 [p.62]
除算の特質
利用頻度は低い
直列除算 (筆算)
並列除算(ROM利用)
乗算と同じ方式引き戻し法引き放し法
シフトによる計算
右に1bitシフト= 桁下げ1000 = 8
0100 = 4
0010 = 2
0001 = 1
1100 = 12
0110 = 6
0011 = 3
= 1/2倍
0001.1 = 1+2−1
= 1. 5
引き戻し法
45 ÷ 6 A = 45(10) = 101101(2)
B = 6(10) = 110(2)
商:何回引けたか?
A: 1 0 1 1 0 1B: 1 1 0−
負:引けないので ( )
正:引けたので ( )
= 0111(2)
= 7(10)
余り = 011(2)
= 3(10)
元に戻す
正:引けたので ( )
正:引けたので ( )
2
引き放し法
45 ÷ 6 A = 45(10) = 101101(2)
B = 6(10) = 110(2)
A: 1 0 1 1 0 1B: 1 1 0−
負:引けないので ( )
次の桁で足す
1 0 1 1 0 1− 1 1 0
1 1 1 1 1 0 1
引けないのに引いた
2倍余計に引いた
次の桁で1つ引く 操作の手間が減るので効率的
次の桁で足す ( )
正:引けたので ( )
正:引けたので ( )
+ 次の桁で1つ足す
直列除算の例1
①被除数AC、除数Dの補数をセット
②カウンタK、桁上げCYをセット
101A
101C
11K
0CY
③引き算を実行、Kを減らす
④CY= 1ならば結果のACを左シフト、 CY= 0ならば引き算前のACを左シフト、 CYを右から入れる
K= 0まで繰り返し
110D
101 0D'
10
01
101 0+
00
101 0+
商余り
3
61 ÷ 6 A = 61(10) = 111101(2)
B = 6(10) = 110(2)
直列除算の例2 (演習)
A C
D A>D
D = :bitを増やすAC = :2倍のbit数D' =
符号bit
100K CY A C
D'+
011
+
010
+
001
+
000
商余り
算術演算 +-×÷
AB
A
B
算術演算と論理演算, ALU
論理演算 AND, OR, NOT, etc.
算術論理演算装置 ALU : Arithmetic Logic Unit
各種の算術・論理演算を1つでこなすIC
4
ALU 74LS381
A, B データ入力
演算選択
F データ出力
Cn, P, G 桁上げ入出力
ALU 74LS181
直列除算の例 1 45÷6 = 7...3
この場合は除数.D.=.6.=.110.が3bitで、被除数.=.45.を2倍のbitの6bitで表すと.45.=.AC.=.101101.とな
る。よって、上位3bitが.A.=.101.であり、A.<.D.となるので、商(=.7)が3bitを超えることはない。した
がって、A,.C,.D.のbit数を増やす必要はない。
ディジタル回路 (E3必修) 補足資料 11.除算回路とALU 1
A,.C,.D.のbit数だけ減算を行うので、
その数をカウンタにセットする。
除数を2の補数表現し、符号bitを加える。
これを被除数の先頭に揃え、減算を行う。
引き算を行ったところで、カウンタ
の値を減らす。
CY=1というのは減算が行えることを意味す
る。これをローテーションシフトすると、先
に行った減算のCYが商の上位bitとなる。ま
た、シフトすることによって、減算の桁を下
位に移動することができる。
カウンタの値が0となった後のロー
テーション処理も忘れずに。
直列除算の例 2 61÷6 = 10...1
この場合は除数.D.=.6.=.110.が3bitで、被除数.=.61.を2倍のbitの6bitで表すと.61.=.AC.=.111101.とな
る。よって、上位3bitが.A.=.111.であり、A.>.D.となるので、商(=.10)が3bitを超え、Cレジスタに収まら
ない。したがって、A,.C,.D.のbit数を1つ増やす必要がある。
ディジタル回路 (E3必修) 補足資料 11.除算回路とALU 2
増やした後のbit数だけ減算を行うので、
その数"4"をカウンタにセットする。
除数をを被除数の先頭に揃え、減算を行う。
減算を行ったところで、カウン
タの値を1つ減らす。
CY=0のときは減算ができないというこ
と。よって、減算処理する前のデータを
ローテーションシフトし、その桁の商の
値を"0"とする。
カウンタの値が0となった後のローテーション処理も忘
れずに。この場合、CY=0なので、減算処理する前の
データを使う。