論理回路 第5回 代表的な組み合わせ論理回路 http://www.info.kindai.ac.jp/LC 38号館4階N-411 内線5459 [email protected] 組み合わせ回路 定義2.4 (組み合わせ回路) – ある時刻の出力信号が、現在の入力信号だ けで決まる回路 定義3.2 (順序回路) – ある時刻の出力信号が、現在の入力信号だ けでなく、過去の入力信号の影響も受ける 回路 (回路内にバッファ・メモリがある) 選択器 (multiplexor) 2n本の入力から1本を選択し出力する回路 • 2n+n 入力1出力 D = (D0,D1,…,D2n -1), n ビット制御信号S –出力: Q –入力: 例: 2ビット選択器 制御信号S 入力 S =0 ←2ビット D0 D1 D2 D3 S =1 S =2 S =3 出力 Q S 0 1 2 3 S1 S0 0 0 0 1 1 0 1 1 Q D0 D1 D2 D3 選択器 • D = (D0,D1,…,D2n –1) : 入力 • S : n ビット制御信号 • Q : 出力 MulPle (D,S ) { switch (S ) { case 0 : Q =D0 ; break; case 1 : Q =D1 ; break; case 2n-1: Q =D2n -1; break; } } 1ビット選択器 2本の入力{D0,D1}から1本を選択 – 1ビット信号S で制御 S 入力 D0 D1 制御信号S S =0 S =1 出力 Q 𝑄 = 𝑆 ⋅ 𝐷0 + 𝑆 ⋅ 𝐷1 Di D0 =0 D0 =1 D1 =0 D1 =1 0 1 Q D0 D1 S Q 0 1 0 1 0 1 1ビット選択器の設計 𝑄 = 𝑆 ⋅ 𝐷0 + 𝑆 ⋅ 𝐷1 入力 D0 D1 制御信号S S =0 S =1 制御信号 S MulPle 入力 出力 D 0 Q D1 出力 Q 2ビット選択器 22=4本の入力 D0,D1,D2,D3 から1本を選択 – 2ビット信号 S =(S1,S0) で制御 入力 D0 D1 D2 D3 制御信号S S =0 S =1 S =2 S =3 出力 Q S 0 1 2 3 S1 S0 0 0 0 1 1 0 1 1 Q D0 D1 D2 D3 2ビット選択器 S 1 S0 0 0 0 1 1 0 1 1 Q D0 D1 D2 D3 Di D0=0 D0=1 D1=0 D1=1 D2=0 D2=1 D3=0 D3=1 S1 S0 0 0 0 1 1 0 1 1 Q 0 1 0 1 0 1 0 1 Q S1 S0 D0 S1S0 D1 S1 S0 D2 S1S0 D3 2ビット選択器の設計 Q S1 S0 D0 S1S0 D1 S1 S0 D2 S1S0 D3 制御信号 S1 S0 MulPle2 入力 D0 D1 D2 D3 制御信号S S =0 S =1 S =2 S =3 入力 D0 出力 Q D1 D2 D3 出力 Q 1ビット選択器 gate6.v 分配器(demultiplexor) 信号を2n本のうち1本に出力する回路 • n +1入力2n出力 –入力: D, n ビット制御信号S –出力: Q = (Q0,Q1,…,Q2n -1) 入力 D 例: 2ビット分配器 制御信号S 出力 S =0 Q0 S =1 Q1 S =2 Q2 S =3 Q3 S S 1 S 0 Q 0 Q1 Q2 Q3 0 0 0 D 0 0 0 1 0 1 0 D 0 0 2 1 0 0 0 D 0 3 1 1 0 0 0 D 分配器 • D : 入力 • S : n ビット制御信号 • Q = (Q0,Q1,…,Q2n –1) : 出力 DeMulPle (D,S ) { switch (S ) { case 0 : Q0 =D ; break; case 1 : Q1 =D ; break; case 2n-1: Q2n -1 =D ; break; } } 1ビット分配器 信号を2本のうち1本に出力 – 1ビット信号S で制御 制御信号S 入力 D S =0 S =1 𝑄0 = 𝑆 ⋅ 𝐷 𝑄1 = 𝑆 ⋅ 𝐷 出力 Q0 Q1 D 0 1 0 1 S 0 1 Q0 0 1 0 0 Q1 0 0 0 1 1ビット分配器の設計 𝑄0 = 𝑆 ⋅ 𝐷 𝑄1 = 𝑆 ⋅ 𝐷 制御信号S 入力 D S =0 S =1 制御信号 S DeMulPle 出力 Q0 入力 D Q1 出力 Q0 Q1 問題 : 2ビット分配器の設計 2ビット分配器を設計せよ 制御信号 S1 S0 DeMulPle2 出力 Q0 入力 D Q1 Q2 Q3 比較器 (comparator) 入力の大小を比較する • 2入力3出力 ZX : X の方が大きい –入力 : X,Y ZY : Y の方が大きい –出力 : ZX,ZY,Zeq Zeq: X とY が同じ Comp (X,Y ) { if (X >Y ) ZX = true; else if (Y >X ) ZY = true; else Zeq = true; } 1ビット比較器の論理関数 X 0 0 1 1 Y 0 1 0 1 ZX 0 0 1 0 ZY 0 1 0 0 Zeq 1 0 0 1 𝑍𝑋 = 𝑋 ⋅ 𝑌 𝑍𝑌 = 𝑋 ⋅ 𝑌 𝑍𝑒𝑞 = 𝑋 ⋅ 𝑌 + 𝑋 ⋅ 𝑌 1ビット比較器の設計 Z X X Y ZY X Y Z eq X Y X Y ( X Y ) ( X Y ) Z X ZY Comp X Y Comp ZX X ZX Zeq Zeq ZY Y ZY 2ビット比較器の真理値表 • 2ビット×2入力3出力 16通りの 組み合わせ –入力 : X =(X1,X0),Y =(Y1,Y0) –出力 : ZX,ZY,Zeq X1 X0 0 0 0 1 Y1 Y0 0 0 ZX 0 ZY Zeq 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 X1 X0 Y1 Y0 0 0 ZX 1 ZY Zeq 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 2ビット比較器の論理関数 Y1 Y0 0 0 0 1 1 1 1 0 0 1 = > < = < < < < 1 1 > > = > 1 0 > > < = X 1 X0 0 0 Z X X1Y1 X 0 Y1Y0 X1 X 0 Y0 ZY X 1Y1 X 1 X 0Y0 X 0Y1Y0 • > : X >Y • = : X =Y • < : X <Y Z eq X 1 X 0 Y1Y0 X 1 X 0 Y1Y0 X 1 X 0Y1Y0 X 1 X 0Y1Y0 2ビット比較器の設計 Comp2 X1 ZX X0 Zeq Y1 Y0 ZY 多ビット比較器の場合 比較器のビット数と出力の組み合わせ数 1. 2. 3. 4. 5. 1ビット : 21×21 = 4通り 2ビット : 22×22 = 16通り 3ビット : 23×23 = 64通り 4ビット : 24×24 = 256通り 5ビット : 25×25 = 1024通り ビット数が増えるにつれ膨大な組み合わせが必要 高ビット比較器の設計はとても無理! 複雑な回路の設計・製作 複雑な回路 – 設計が難しい – 製作コストが高価 複雑な回路をより簡単な回路(設計済み)の 組み合わせで作る • 設計が簡単になる • 回路の量産化で製作コスト削減 回路のモジュール化 回路全体を1つのゲートとみなす 例 : 比較器 Comp X ZX Zeq Y X モジュール化 Y ZY ZX Comp Zeq ZY 1ビット比較器モジュールを用いた 2ビット比較器 X =(X1,X0), Y =(Y1,Y0) の大小比較 • • • X >Y : X1>Y1 または (X1=Y1 かつ X0>Y0) X <Y : X1<Y1 または (X1=Y1 かつ X0<Y0) X =Y : X1=Y1 かつ X0=Y0 ZX 1,ZY 1,Zeq1 : X1,Y1の比較結果 – ZX 0,ZY 0,Zeq0 : X0,Y0の比較結果 – Z X Z X 1 Z eq1 Z X 0 Z Y Z Y 1 Z eq1 Z Y 0 Z eq Z eq1 Z eq 0 2ビット比較器の設計 Z X Z X 1 Z eq1 Z X 0 Z Y Z Y 1 Z eq1 Z Y 0 Z eq Z eq1 Z eq 0 Comp2 X1 X X0 Y ZX Comp Zeq ZY 1ビット比較器 モジュール ZX 1 Zeq1 ZX ZY 1 Zeq Y1 Y0 ZX X Y Comp Zeq ZY ZX 0 Zeq0 ZY 0 ZY 1ビット選択器モジュールを用いた 2ビット選択器 1ビット選択器: D = (D0,D1), S Q S D0 S D1 2ビット選択器: D = (D00,D01 ,D10 ,D11), S = (S1,S0) Q S1 S0 D00 S1S0 D01 S1 S0 D10 S1S0 D11 S1 (S0 D00 S0 D01) S1 (S0 D10 S0 D11) Q0 S 0 D00 S 0 D01 Q1 S 0 D10 S 0 D11 Q S1 Q0 S1 Q1 1ビット選択器 問題 : 2ビット選択器の設計 1ビット選択器モジュール3個を用いて 2ビット選択器を設計せよ S0 S1 D00 D0 D01 MulPle2 S MulPle Q D1 D0 D1 D10 D0 D11 D1 S MulPle Q S MulPle Q Q 問題 : 4ビット比較器の設計 2ビット比較器モジュール2個を用いて 4ビット比較器を設計せよ Comp4 X3 X2 X1 X0 Y3 Y2 Y1 Y0 X1 X0 Y1 Y0 ZX Comp2 Zeq ZX ZY Zeq X1 X0 Y1 Y0 ZX Comp2 Zeq ZY ZY 符号化器(encoder) 復号化器(decoder) 符号化 : 情報を数値コードに変える 復号化 : 数値コードを情報に戻す 例 : 情報をメモリに格納 情報 : データ – コード : データのアドレス – データ 8 アドレス 符号化器 データ 3 4 アドレス 復号化器 2 メモリ アドレス データ 0 1 2 3 4 5 6 7 1 8 3 5 8 アドレス符号化器(address encoder) – 入力: 2n本の1ビット信号 D =(D2n-1,…D0) ただし、1本のみ 1,残りの2n-1本は 0 が入力される – 出力: n ビット信号 Q =(Dn-1,…D0) アドレスエンコーダ D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 D Q D Q 00000001 000 00010000 100 00000010 001 00100000 101 00000100 010 01000000 110 00001000 011 10000000 111 表に無い入力はドントケア アドレス復号化器(address decoder) – 入力: n ビット信号 D =(Dn-1,…,D0) – 出力: 2n本の1ビット信号 Q =(Q2n-1,…Q0) D1 D0 アドレスデコーダ D2 ただし、1本のみ 1,残りの2n-1本は 0 が出力される Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 D 000 001 010 011 Q 00000001 00000010 00000100 00001000 D 100 101 110 111 Q 00010000 00100000 01000000 10000000 アドレスエンコーダ D Q D Q 00000001 000 00010000 100 Q D D D D 2 7 6 5 4 00000010 001 00100000 101 Q D D D D 1 7 6 3 2 00000100 010 01000000 110 Q D D D D 0 7 5 3 1 00001000 011 10000000 111 D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 アドレスデコーダ D 000 001 010 011 Q 00000001 00000010 00000100 00001000 D 100 101 110 111 Q 00010000 00100000 01000000 10000000 D2 D1 D0 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 Q7 D2 D1 D0 Q6 D2 D1 D0 Q5 D2 D1 D0 Q4 D2 D1 D0 Q3 D2 D1 D0 Q2 D2 D1 D0 Q1 D2 D1 D0 Q0 D2 D1 D0 優先順位付符号化器(priority encoder) – 入力: 2n本の1ビット信号D =(D2n-1,…D0) – 出力: n ビット信号Q =(Qn-1,…,Q0) : 通常の符号化器は入力に1は1個のみ 入力に複数の1がある場合 • 通常の符号化器 : ドントケア • 優先順位付符号化器 : 上位ビットを優先 入力に1が1つも無い場合 通常の符号化器 : ドントケア • 優先順位付符号化器 : ドントケア • 2ビット優先順位付符号化器の真理値表 D3D2D1D0 P Q D3D2D1D0 P 0 0 0 0 1 0 0 0 3 0 0 0 1 0 0 1 0 0 1 3 0 0 1 0 1 1 1 0 1 0 3 0 0 1 1 1 1 0 1 1 3 0 1 0 0 2 2 1 1 0 0 3 0 1 0 1 2 1 1 0 1 3 0 1 1 0 2 1 1 1 0 3 0 1 1 1 2 1 1 1 1 3 P :優先順位付符号化器 Q : 符号化器 Q 3 - 加算器(adder) 2入力の和を計算 – 入力 : 1桁の算術変数 X, Y – 出力 : S X +Y の1桁め COUT X +Y の上位桁への繰り上がり 例 : X = 7, Y = 8 (10進数) • S=5 • COUT= 1 1ビット半加算器(half adder) – 入力 : 1ビット変数 X, Y – 出力 : S X +Y の1ビットめ COUT X +Y の上位ビットへの繰り上がり XY 00 01 10 11 CO 0 0 0 1 S 0 1 1 0 S X Y X Y X Y CO X Y 1ビット半加算器の設計 S X Y X Y X Y CO X Y HA HA X CO X CO Y S Y S 1ビット全加算器(full adder) – 入力 : 1ビット変数 X, Y CIN 下位ビットからの繰り上がり – 出力 : S X +Y の1ビットめ COUT X +Y の上位ビットへの繰り上がり X Y 0 0 0 1 CI 0 1 0 1 CO 0 0 0 1 S 0 1 1 0 X Y 1 0 1 1 CI 0 1 0 1 CO 0 1 1 1 S 1 0 0 1 1ビット全加算器の論理関数 S XY 00 01 11 10 0 0 1 0 1 1 1 0 1 0 CI S X YCI X Y CI X Y CI XYCI X Y CI CO XY 00 01 11 10 0 0 0 1 0 1 0 1 1 1 CI CO XY XCI YCI 1ビット全加算器の設計 S X YCI XY CI X Y CI XYCI X Y CI CO XY XCI YC I FA FA X CO X Y Y CI S C I CO S 半加算モジュールを用いた全加算器 半加算器 S HA ( X , Y ) X Y COHA ( X , Y ) XY FA 全加算器 S ( X , Y , CI ) X Y CI HA S ( X , Y ) CI HA HA S ( S ( X , Y ), CI ) FA CO ( X , Y , CI ) XY XCI YC I XY ( X Y )CI XY ( X Y XY )CI XY XYC I ( X Y )CI XY ( X Y )CI HA HA CO ( X , Y ) S ( X , Y )CI COHA ( X , Y ) COHA ( S HA ( X , Y ), CI ) 問題 : 全加算器の設計 半加算器モジュール2個を用いて 全加算器を設計せよ S FA ( X , Y , CI ) S HA ( S HA ( X , Y ), CI ) COFA ( X , Y , CI ) COHA ( X , Y ) COHA ( S HA ( X , Y ), CI ) FA X Y X HA Y CO CO S X HA CI Y CO S S 2ビット加算器 – 入力 : 2ビット変数 X =(X1,X0), Y =(Y1,Y0) CIN 下位ビットからの繰り上がり – 出力 : S =(S1,S0), X +Y の1,2ビットめ COUT X +Y の上位ビットへの繰り上がり FA2 X1 CO X CO FA Y X0 Y1 Y0 CI CI S CO X Y FA S CI S1 S0 問題 : 4ビット全加算器の設計 4ビット全加算器を設計せよ X3 X2 X1 X0 Y3 Y2 Y1 Y0 CI FA4 X Y CI X Y CI X Y CI X Y CI FA FA FA FA CO S CO CO S4 S CO S3 S S2 CO S1 S 多数決器 – 入力 : n 変数 X1,X2,…, Xn 1 (入力のうち1が半分以上) – 出力 : Z = 0 (入力のうち1が半分未満) 例 3変数多数決器 X1 X2 X3 Z X1 X2 X3 Z 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 多数決器の論理関数 X1 X2 00 01 11 10 00 0 0 1 0 01 0 1 1 1 11 1 1 1 1 10 0 1 1 1 X3 X4 Z X1 X 2 X 2 X 3 X 3 X 4 X 4 X1 X1 X 3 X 2 X 4 多数決回路 Z X1 X 2 X 2 X 3 X 3 X 4 X 4 X1 X1 X 3 X 2 X 4 Major4 X1 X2 Z X3 X4 例題 : 重み付き多数決器 各人が持つ票の重みが違う多数決 例題2.26 – A 4票,B 3票,C 2票,D 1票を持つ (賛成5票で可決) WeightedMajor AB 00 01 11 10 CD A 00 0 3 7 4 B 01 1 4 8 5 M 11 3 6 10 7 C 10 2 5 9 6 D 問題 : Tkgate 課題 gate7.v のシミュレート結果からスコープ図 および真理値表を作成せよ ただし、入力は以下の値を入力すること – X : 学籍番号の下1桁 (下1桁が 0 の場合は a (10) を入力) – Y : 0~f (16進数) – SIGN : 0,1 なお、遅延は無視してよい 学籍番号 下1桁 0~f (16進数) 0, 1 gate7.v 全加算器 モジュール X 学籍番号下1桁 Y 0 SIGN Co S3 S2 S1 S0 1 2 3 4 5 6 7 8 9 a b c X 学籍番号下1桁 Y 0 SIGN Co S3 S2 S1 S0 1 2 3 4 5 6 7 8 9 a b c X 学籍番号 下1桁 Y SIGN 0 S X Y 学籍番号 下1桁 8 1 9 2 a 3 b 4 0 c 5 d 6 e 7 f SIGN 0 S X 学籍番号 下1桁 Y SIGN 0 S X Y 学籍番号 下1桁 8 1 9 2 a 3 b 4 1 c 5 d 6 e 7 f SIGN 1 S 中間試験 試験日 : 6月9日(木) 試験時間 : 60分 試験範囲 : 第1~7回 配点 : 30点満点 持ち込み : 可 – ただし外部とのネットワーク接続は不可 – TkGateは使用しない 演習問題 : 選択器の設計 1ビット選択器を設計せよ Q= 𝑆 ⋅ 𝐷0 + 𝑆 ⋅ 𝐷1 制御信号 S Di D0 = 0 D0 = 1 D1 = 0 D1 = 1 S 0 1 Q 0 1 0 1 MulPle 入力 D0 D1 出力 Q0 演習問題 : 分配器の設計 1ビット分配器を設計せよ Q0= 𝑆 ⋅ 𝐷 Q1= 𝑆 ⋅ 𝐷 制御信号 S 入力 D D S Q0 0 0 0 1 1 0 0 1 1 0 DeMulPle Q1 0 0 0 1 出力 Q0 Q1 演習問題 : 符号化器の設計 2ビット符号化器を設計せよ D3D2D1D0 Q1 Q0 0 0 0 1 0 0 Q0= D1+D3 0 0 1 0 0 1 Q1= D2+D3 0 1 0 0 1 0 1 0 0 0 入力 D0 D1 D2 D3 1 1 Encode D0は使用されない 出力 Q0 Q1 演習問題 : 半加算器の設計 1ビット半加算器を 設計せよ S = X Y X Y X Y CO = X Y HA XY 00 CO 0 S 0 01 10 11 0 0 1 1 1 0 HA X CO X CO Y S S Y 演習問題 : 全加算器の設計 1ビット全加算器を 設計せよ S = X Y CI CO = X Y X C I Y C I X Y CI CO 000 0 S 0 X Y CI CO 100 0 S 1 001 010 011 1 1 0 101 110 111 0 0 1 0 0 1 1 1 1 FullAdder X CO Y CI S 演習問題 : 2ビット全加算器の設計 1ビット全加算器モジュール2個を用いて 2ビット全加算器を設計せよ FA2 X1 X0 X Y CI FA CO S S1 Y1 Y0 CI CO X Y CI FA CO S S0
© Copyright 2024 ExpyDoc