2009.4.27 Ibaraki Univ. Dept of Electrical & Electronic Eng. Keiichi MIYAJIMA 2進演算と算術回路 注)教科書第3章は2年次後期「論理回 路」の内容と重複するので省略する。 2進加算 先週も述べたとおり、コンピュータの内 部でのデータは2進数で表現される。 • 2進数の加算のみで減算も表現 できた。 実際の回路構成はどう なっているのか? 2進加算 下位からの桁上げがない場合の2進 数一桁の加算の真理値表を考える。 入力 出力 和 桁上げ出力 xy S C 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 下位からの桁上げを考慮しない加算 半加算器(half adder:HA) 半加算器 x y HA S C x y XOR S AND C 論理記号 論理回路 下位からの桁上げを考慮しない加算 半加算器(half adder:HA) 2進加算 下位からの桁上げを考慮する場合 11 ) 11 110 この場所では下位からの桁上げがあるため、 それを考慮する必要がある 全加算器 下位からの桁上げを考慮する場合 入力 出力 和 桁上げ出力 x y C1 S C 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 全加算器 C1 論理記号 x y FA S C 半加算機とORゲートによる構成 C1 x y HA S HA OR C 下位からの桁上げを考慮した加算器 全加算器(full adder:FA) 注 「減算器」についてはここでは述べな い。 なぜなら、先週述べたとおり、減算は2 の補数を用いることで、加算として取り 扱うことができる。 直列加算器 直列加算 数ビットからなる二つの2進数を 2 0 の (serial addition) 桁から順次加算を行う方法 全加算器1個と1ビットの記憶回路 で構成可能 直列加算器 (serial adder) 被加数 x 加 数 y FA C1 S C 和 シフトレジスタで構成 1ビット 遅延回路 フリップフロップで構成 シフトレジスタ: 値を1ビットずつ右へずらしていくことが できるレジスタ 直列加算器の動作 被加数 加 数 例: 0 1010 と 0 1011 の加算を考える。 2 2 x y FA C C1 1ビット遅 延回路 和を記憶するシフトレジスタの初期値 1ビット遅延回路の初期値はともに0 被加数 0 1010 加 数 0 1011 1ビット遅延回路 0 和 S 0 0000 和 直列加算器の動作 MSB 被加数 加 数 0 1010 加 数 0 1011 0 x y S FA C 和 C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 0 1 和 0 0000 シフトパルス LSB(最初の1桁目)のみが計算対象となる 直列加算器の動作 MSB 加 数 0 0101 加 数 0 0101 x y S FA C C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 被加数 和 1 0000 0 1ビットずつ右へシフト 先ほどの結果を和を記 憶するレジスタへ 和 直列加算器の動作 MSB 0 0101 加 数 0 0101 0 LSBのみを加算 被加数 加 数 x y S FA C 和 C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 1 1 和 1 0000 シフトパルス 直列加算器の動作 MSB 加 数 0 0010 加 数 0 0010 x y S FA C C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 被加数 和 1 加算して1ビットずつ右へシフト 0 1000 和 直列加算器の動作 MSB LSB 被加数 0 0010 加 数 0 0010 1ビット遅延回路 0 0 被加数 加 数 1 和 1 LSBと先ほど桁上がりしたもの を加算 x y S FA C 和 C1 1ビット遅 延回路 0 1000 シフトパルス 直列加算器の動作 MSB 加 数 0 0001 加 数 0 0001 x y S FA C C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 被加数 和 0 加算して1ビットずつ右へシフト 1 0100 和 直列加算器の動作 MSB 0 0001 加 数 0 0001 0 LSBのみを加算 被加数 加 数 x y S FA C 和 C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 1 1 和 1 0100 シフトパルス 直列加算器の動作 MSB 加 数 0 0000 加 数 0 0000 x y S FA C C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 被加数 和 1 加算して1ビットずつ右へシフト 0 1010 和 直列加算器の動作 MSB LSB 被加数 0 0000 加 数 0 0000 1ビット遅延回路 0 0 被加数 加 数 1 和 1 LSBと先ほど桁上がりしたもの を加算 x y S FA C 和 C1 1ビット遅 延回路 0 1010 シフトパルス 直列加算器の動作 MSB 加 数 0 0000 加 数 0 0000 x y S FA C C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 被加数 和 0 加算して1ビットずつ右へシフト 1 0101 和 直列加算器の動作 MSB 加 数 0 0000 加 数 0 0000 0 全て0になったら終了 x y S FA C C1 1ビット遅 延回路 LSB 被加数 1ビット遅延回路 被加数 和 1 0101 和 直列加算器の利点 •回路構成が単純 しかし シフトパルスがビット数分必要なため 演算処理速度が下がる。 並列加算器 並列加算器 すべてのビットを同時に加算する (parallel adder) ハードウェア量は増加するが、 加算の高速化が構成可能 並列加算器 xn 1 y n 1 C n 1 FA C n2 x1 y1 FA C0 x0 y0 0 C 1 加算の時は0 FA S n 1 S1 S0 和 出 力 並列加算器 xn 1 y n 1 C n 1 FA C n2 桁上げが伝達される のに時間がかかる。 x1 y1 FA C0 x0 y0 C 1 FA S n 1 S1 S0 桁上げ先見加算器 Gk xk yk Pk xk yk とおくと C0 G0 P0C1 C1 G1 P1G0 P1P0C1 C2 G2 P2G1 P2 P1G0 P2 P1P0C1 C3 G3 P3G2 P3 P2G1 P3 P2 P1G0 P3 P2 P1P0C1 Ck Gk Pk Ck 1 並列加算器 xn 1 y n 1 C n 1 FA C n2 桁上げ先見加算器の 結果を同時に入力 x1 y1 FA C0 x0 y0 C 1 FA S n 1 S1 S0 加算器を用いた減算 補数を用いた加算器による減算はどうなるの か? 加算器を用いた減算 C n 1 xn 1 y n 1 FA C n2 x1 y1 FA C0 x0 y0 C 1 FA S n 1 S1 S0 加算器を用いた減算 C n 1 xn 1 FA y n 1 C n2 D n 1 x1 y1 FA C0 D1 x0 y0 FA 1 減算の時は1 D0 差 出 力 並列加算器の利点 •高速な演算が可能 しかし 先見回路が必要など、ハードウェアが 複雑化 現代のコンピュータはこれらのバランス を見ながら設計される 本日のまとめ 2進演算と算術回路 1. 半加算回路と全加算回路 2. 直列加算器と並列加算器 本日の課題 1. 直列加算器と並列加算器について、それぞれ の利点と欠点を述べよ。 2.図の半加算機において、以下の入力パル ス列に対する和出力と桁上げ出力を求めよ x c x HA y s y 3.図は全加算器を表す論理回路である。図中の xに1、yに0、zに1を入力したとき、出力となるc(桁 上げ数)、s(和)の値はどうなるか。 x (H12年春期 改題) c y FA s z 補足 論理積(AND) 排他的論理和(XOR) [Exclusive OR] 論理和(OR) 否定(NOT)
© Copyright 2024 ExpyDoc