第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路 シフト回路 選択回路
本日学習する組合せ回路 CPUの内部 01010 加算器等 組合せ回路 010110101
ディジタル回路の例 – 入場者数カウントシステム 2進数 010 パルス パルス数 加算 回路 入場者数 記憶回路 光 センサ 2進数 010 2進数 001 7セグ 表示回路 7セグ (表示装置)
f 予備知識: LED (発光するダイオード) (ア) (ア) の電圧を,(イ) と比べて, 2 V程度 高くすると点灯 (イ) (ア) の電圧を,(イ) と比べて, 2 V程度 高くすると点灯 (イ) デジタル回路で,H, Lの判別に使用できる (流れすぎないよう,電流制限用の抵抗Rが必要) f 例: LEDが点灯するのは, 出力fの値が H のとき R
予備知識: 7セグメントディスプレイ 7個の LED (セグメント,区画) があつまったもの Hにセットすることで,点灯する a f b g 予備知識: 7セグメントディスプレイ 7個の LED (セグメント,区画) があつまったもの Hにセットすることで,点灯する a H a b H c f H g b d H e L e c f L g H d GND (L)
エンコーダ・デコーダとは? 組合せ回路の一種 いろいろなバリエーションが存在 デコーダ エンコーダ 配線の本数 を表す 4 8 8 4 配線の本数 を表す 配線を省略形 で書くと… 4 8 8 4 デコーダ エンコーダ
例えば,x3x2x1x0 =0011 (10進数で3) のとき a=1, b=1, c=1, d=1, g=1を出力 デコーダの一例: 7セグ点灯用 デコーダ 入力: 0~9 を表す2進数(4 ビット x3x2x1x0) 出力: 7セグ点灯用信号 (a, b, c, d, e, f, g) 用デコーダ 例えば,x3x2x1x0 =0011 (10進数で3) のとき a=1, b=1, c=1, d=1, g=1を出力
7セグ点灯用 デコーダの真理値表 10進 a b c d e f g 1 上記以外 * 1 2 3 4 5 6 7 8 9 x3 x2 x1 1 上記以外 * 1 2 3 4 5 6 7 8 9 ドントケア
復習: カルノー図による簡単化(例: 出力e) 1 * x2 x3 x2 x1 x0 a e 1 上記以外 * x2x0 x1x0 x1 x0 x3 e = x1x0 + x2x0 他の出力a-gについても同様
その他にも,いろいろな組み合わせ回路があります(教科書をP42-49を読んで下さい) その他のデコーダの例 (74138) Enable(イネーブル)入力: 機能をオンにするかどうかを決定 C, B, A: 2進数を表す(Cが最上位): どの出力をアクティブにするか Enableが アクティブ その他にも,いろいろな組み合わせ回路があります(教科書をP42-49を読んで下さい)
1ビット加算回路 (半加算器) a b cout s 1 算術和: 論理和とは異なる! 紛らわしいので注意! 1 a 1 入力 + 1 b 1ビット加算回路 (半加算器) 算術和: 論理和とは異なる! 紛らわしいので注意! 1 a 1 入力 + 1 b + + 1 + 1 0 1 1 cout s 出力 a a b b a b cout s 1 半加算器 cout s cout s (繰上り) (和) carry sum
1ビット加算回路 (全加算器) 下位ビットからの繰上り cin も考慮した回路 例 cin 1 a b cin cout s 1 a 入力 1ビット加算回路 (全加算器) 下位ビットからの繰上り cin も考慮した回路 例 cin 1 a b cin cout s 1 a 入力 + 1 b 1 cout s 出力 a b cin 全加算器 cout s (桁上げ) (和) carry sum
4ビットの加算器の真理値表による設計 以下省略... (長い) 例: 4ビットの加算器 真理値表が大きすぎるため, うまい設計方法ではない 例: 4ビットの加算器 真理値表が大きすぎるため, うまい設計方法ではない 28 = 256 入力パターン 8ビット加算器だと, 216 = 65536 入力パターン 入力 出力 A B S a3 a2 a1 a0 b3 b2 b1 b0 s3 s2 s1 s0 1 A B a3 a2 a1 a0 b3 b2 b1 b0 4 4 4ビット 加算器 4ビット 加算器 4 s3 s2 s1 s0 S 以下省略... (長い)
右の桁(0ビット目)から順に,計算を進めていけばよい 筆算による,4ビットの2進数の加算 (復習) 右の桁(0ビット目)から順に,計算を進めていけばよい 3 ビ ッ ト 目 2 ビ ッ ト 目 1 ビ ッ ト 目 ビ ッ ト 目 c(桁上げ) 1 1 1 A a3 1 a2 a1 1 a0 5 b3 1 b2 1 b1 1 b0 B 7 + S 1 s3 1 s2 s1 s0 12
4ビット加算器の実現 cout0 =cin1 cout2 =cin3 cout1 =cin2 cout3 1 1 1 cin0 a3 1 全加算器を、 各ビットごとに, 4個 カスケードに接続し,筆算と同じ流れで計算 cout0 =cin1 cout2 =cin3 cout1 =cin2 cout3 1 1 1 cin0 a3 1 a2 a1 1 a0 b3 1 b2 1 b1 1 b0 1 s3 1 s2 s1 s0 a3 cin3 cin2 cin1 cin0=0 b3 a2 b2 a1 b1 a0 b0 a b cin a b cin a b cin a b cin 全加算器 (3ビット目) 全加算器 (2ビット目) 全加算器 (1ビット目) 全加算器 (0ビット目) cout s cout s cout s cout s cout3 s3 cout2 s2 cout1 s1 cout0 s0
4ビット加算器 の計算のようす (A=5, B=7) 答 S = 12 1 1 1 1 1 1 1 1 cin3 a2 cin2 a1 1 1 1 1 1 1 1 1 cin3 a2 cin2 a1 cin1 cin0 a3 b3 b2 b1 a0 b0 a b cin a b cin a b cin a b cin 全加算器 (3ビット目) 全加算器 (2ビット目) 全加算器 (1ビット目) 全加算器 (0ビット目) cout s cout s cout s cout s cout3 s3 cout2 s2 cout1 s1 cout0 s0 1 1 1 1 1 答 S = 12
4ビット減算器 (引き算) A – B = A + (-B): 減算は「負数を加算」することで実現 例: 6 – 7 = 6 + (-7) 例: 6 – 7 = 6 + (-7) -7を4ビットの2の補数で表すと、 7 : 0111 -7 : 1000 (反転) + 1 = 1001 (0) c(桁上げ) 1 1 a 3..0 6 + 1 1 b 3..0 -7 1 1 1 1 s 3..0 -1
減算回路 1 1 1 1 1 a3 b3 a2 b2 a1 b1 a0 b0 1 a b a b a b a b cout cin cout A – B = A + (-B): 引く数 (B)の2の補数(-B) を作り,加算 2の補数表現: 反転 して、 1 を足す 反転 : BをNOT ゲートに通す 1を足す: 0ビット目の全加算器の Cin を 1 (5V) にする A=6, B=7の例 (S=-1) 1 1 1 1 1 a3 b3 a2 b2 a1 b1 a0 b0 1 a b a b a b a b cout cin cout cin cout cin cout cin 1 s s s s s3 s2 s1 s0 1 1 1 1
シフト (ずらす) 回路: 単なる配線(ゲートは不要) シフト (ずらす) 回路: 単なる配線(ゲートは不要) 左1ビットシフト 右1ビットシフト 1 1 5 1 1 5 a3 a2 a1 a0 a3 a2 a1 a0 x3 x2 x1 x0 x3 x2 x1 x0 1 1 10 1 2 2 を“かける”のと同じ 2 で“割る”のと同じ 小数点は切り捨て
選択回路( セレクタ,マルチプレクサ ) c x y a f 1 cx cy 複数の入力から、 選択信号 c で選択した一つを出力 c 選択 選択回路( セレクタ,マルチプレクサ ) 複数の入力から、 選択信号 c で選択した一つを出力 選択 信号 c c x y a f 1 x f y 1 回路図記号 (省略形) c cx x f cy y ゲート 回路図
選択回路 の動作 (図解) 選択信号(c)の値によって、入力信号が切り替わる c=0のとき c=1のとき c c x x f f y y 1 選択回路 の動作 (図解) 選択信号(c)の値によって、入力信号が切り替わる c=0のとき c=1のとき c c x x f f y 1 y 1
4ビット セレクタ c x3 f3 y3 c x2 4 f2 y2 X 4 F 4 x1 Y f1 y1 x0 f0 y0 4ビット セレクタ 2 つの 4 ビットデータ(X, Y)から、一つ選んで出力する c x3 f3 y3 1 c x2 1ビットセレクタを、 4 個並べる (制御信号cは共通) f2 4 y2 1 X 4 F 4 x1 Y 1 f1 省略した 回路図 y1 1 x0 f0 y0 1
4bit ALU(Arithmetic Logic Unit, 算術・論理演算ユニット) S3~S0, M, Cn の設定により, 加算(PLUS), 減算(MINUS), ビット毎の論理演算(AND, OR, ..) など,さまざまな演算が実行可能 LSB: A0, B0, F0 MSB: A3, B3, F3 減算 加算 AND OR
まとめ よく使われる組合せ回路 7セグ用デコーダ,加減算回路,シフト回路,選択回路 真理値表を書くには適さない場合がある ビット単位の回路を組合せ,多ビット用回路を設計可能