論理回路 第 12 回 TkGate 実習 - 順序回路 38 号館 4 階 N-411 内線 5459
TkGate TkGate TkGate – 論理回路のシミュレータ 論理素子やモジュールを使用可能 論理素子やモジュールを使用可能 フリーソフト フリーソフト – ホームページ
ターミナルを起動
tkgate の起動 ターミナル上でコマンド “tkgate” で起 動 ターミナル上でコマンド “tkgate” で起 動 $ tkgate &
File → New で 新規作成
が押されていると き 画面をクリックする と × 印が出る。
× 印の位置に ゲートが配置され る
I/O配置されるオブジェクト ショート カット Switchs DIP Switch d Graundg Vddv Wire Merge w LEDl LED Bar L 8 7 Seg.LED L (h, d, s)
Gate配置されるオブジェクト ショート カット ANDa NANDA ORo NORO XORx XNORX Bufferb Inverteri Tri-Buffert
オブジェクト, 配線で 右クリック → プロパティ
オブジェクト, 配線 に 名前を付ける Hide Name ( 名前を隠す ) ボタンをオフにする
名前が表示される
メニューの Simulate→Bagin Simulation または ボタンで実行開始
シミュレート開始すると スコープウィンドウが開く “ 配線をダブルクリックしてくださ い ”
配線をダブルクリック
テスタが表示される
スコープウィンドに テスタを置いた配線の 電位が表示される
スペースキーを押すと時間経過 1 = 緑 0 = ピンク で 配線の電位を表示
1 = 赤 0 = ピンク で 配線の電位を表示 X = 0 ( スイッチが off ) Y = 0 ( スイッチが off ) のとき Z = 0 (LED がピンク )
スイッチをクリック で ON/OFF 切り替え クリッ ク
配線 Y の電位が 1 (= 緑 ) に変わる
X = 1 ( スイッチが on ) Y = 1 ( スイッチが on ) のとき Z = 1 (LED が赤 )
X = 1, Y = 1 のとき Z = 1 (= 緑 ) ( 注意 ) 出力が安定するまでスペースキーを押すこと
Make → Memory → Flip-flop
TkGate のフリップフロップ D-FF D 入力 Q 出力 clock 入力 0 → 1 入力で FF 動作 clear 入力 0 入力で初期化 enable 入力 0 入力で Q 値変更可能 Q 出力
TkGate のフリップフロップ TkGate には DFF のみ存在 TkGate には DFF のみ存在 ⇒ DFF を用いて他の FF を作成する SRFF R Q Q DFF D Q Q SR→D変換回路 S
FF.v 4 種類の FF – –SRFF – –DFF – –TFF – –JKFF
SRFF DFF TFFJKFF
FF の動作 1. clr を 1 にし初期化 ( 各 Q の値が 0 に ) 2. clr を 1 →0 にしてから動作開始
FF の初期値は不定 各 Q の値が 0 になれば clr を 1 → 0 にする
演習問題 : SRFF の動作 SRFF の入力が下図のときの出力を記入せよ 入力 R 出力 Q sr クロック 入力 S
演習問題 : SRFF の動作 SRFF の入力が下図のときの出力を記入せよ 入力 R 出力 Q sr クロック 入力 S SR = 11 の場合は S 優先
演習問題 : DFF の動作 DFF の入力が下図のときの出力を記入せよ 入力 D 出力 Q d クロック
演習問題 : DFF の動作 DFF の入力が下図のときの出力を記入せよ 入力 D 出力 Q d クロック
演習問題 : TFF の動作 TFF の入力が下図のときの出力を記入せよ 入力 T 出力 Q t クロック
演習問題 : TFF の動作 TFF の入力が下図のときの出力を記入せよ 入力 T 出力 Q t クロック
演習問題 : JKFF の動作 JKFF の入力が下図のときの出力を記入せよ JKFF の入力が下図のときの出力を記入せよ 入力 K 出力 Q クロック 入力 J
演習問題 : JKFF の動作 JKFF の入力が下図のときの出力を記入せよ JKFF の入力が下図のときの出力を記入せよ 入力 K 出力 Q クロック 入力 J
演習問題 : ビット反転検出回路の設計 ビット反転検出回路 ビット反転検出回路 – 入力が 0→1, 1→0 と反転したときに 1 を出 力 入力 I 出力 O クロック 0→1 を検出 1→0 を検出
1. 入力, 出力, 状態の決定 ビット反転を検出するには、 1 つ前の 入力 I - を記憶しておけばいい ビット反転を検出するには、 1 つ前の 入力 I - を記憶しておけばいい 1 入力, 1 出力, 1FF 入力 I 出力 O クロック FF Q I ≠Q ならば 1 を出力 I - = 0 と I - =1 の 2 状態 ⇒ FF1 個で記憶可能
2. 状態遷移図を描く 状態 Q : 1 つ前の入力 I - を記憶 状態 Q : 1 つ前の入力 I - を記憶 出力 O : I ≠Q ならば 1 を出力 出力 O : I ≠Q ならば 1 を出力 q 0 Q = 0 q 1 Q = 1 1/0 1/1 0/0 0/1
3. 状態遷移表を作成する q 0 Q = 0 q 1 Q = 1 1/0 1/1 0/0 0/1 遷移出力 Q =0, I =0 Q =0, I =1 Q =1, I =0 Q =1, I =1 O =0 Q + =1 O =1 Q + =0 O =1 Q + =1 O =0 Q + =0
4. 拡大入力表を作る 使用する FF の入力要求 遷移入力 IQ Q +Q +Q +Q +ODTSRJK 入力出力 状態遷移
演習問題 : DFF を用いたビット反転検出回路を作 れ I O DQ Q CK クロッククロック I O DQ Q CK
演習問題 : DFF を用いたビット反転回路の動作 ビット反転回路の入力が下図のときの出力を記入せよ 出力 O 出力 Q クロック 入力 I 入力 D
演習問題 : DFF を用いたビット反転回路の動作 ビット反転回路の入力が下図のときの出力を記入せよ 出力 O 出力 Q クロック 入力 I 入力 D ※ 上図は理論値である。出力 O はクロックと同期を 取っていないため、実際にはこうはならない
問題 : TFF を用いたビット反転検出回路を作れ クロック I O T Q Q CK T Q Q CK I O クロック
問題 : SRFF を用いたビット反転検出回路を作 れ I O クロック S Q Q R CK I O クロック S Q Q R CK
問題 : JKFF を用いたビット反転検出回路を作 れ I O クロック J Q Q K CK I O クロック J Q Q K CK
問題 : TFF を用いたビット反転回路の動作 ビット反転回路の入力が下図のときの出力を記入せよ 出力 O 出力 Q クロック 入力 I 入力 T
問題 : SRFF を用いたビット反転回路の動 作 ビット反転回路の入力が下図のときの出力を記入せよ 出力 O 出力 Q クロック 入力 I 入力 S 入力 R
問題 : JKFF を用いたビット反転回路の動 作 ビット反転回路の入力が下図のときの出力を記入せよ 出力 O 出力 Q クロック 入力 I 入力 J 入力 K
bit.v
シフタ 同期したフリップフロップの集まり 同期したフリップフロップの集まり – クロック入力ごとに、値が隣の FF に移動す る DFF D3D3D3D3 Q3Q3Q3Q3 CK DFF D2D2D2D2 Q2Q2Q2Q2 CK DFF D1D1D1D1 Q1Q1Q1Q1 CK DFF D0D0D0D0 Q0Q0Q0Q0 CK D クロック Q0Q0Q0Q0 Q1Q1Q1Q1 Q2Q2Q2Q2 Q3Q3Q3Q3
sft.v
演習問題 : シフタの動作 シフタの入力が下図のときの出力を記入せよ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 D 出力 Q 3
演習問題 : シフタの動作 シフタの入力が下図のときの出力を記入せよ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 D 出力 Q 3
レジスタ / ラッチ 同期したフリップフロップの集まり 同期したフリップフロップの集まり –n ビットの一斉読み出し、書き込みが可能 クロック DFF DQ CK DFF DQ CK DFF DQ CK DFF DQ CK D0D0D0D0 D1D1D1D1 D2D2D2D2 D3D3D3D3 Q0Q0Q0Q0 Q1Q1Q1Q1 Q2Q2Q2Q2 Q3Q3Q3Q3
reg.v
シフタ - レジスタ シフタとレジスタの組み合わせ シフタとレジスタの組み合わせ クロック DFF D0D0D0D0 Q0Q0Q0Q0 CK I0I0I0I0 I1I1I1I1 Q0Q0Q0Q0 DFF D1D1D1D1 Q1Q1Q1Q1 CK I2I2I2I2 Q1Q1Q1Q1 DFF D2D2D2D2 Q2Q2Q2Q2 CK I3I3I3I3 Q2Q2Q2Q2 DFF D3D3D3D3 Q3Q3Q3Q3 CK Q3Q3Q3Q3 S マルチ プレクサ
シフタ - レジスタ シフタとレジスタの組み合わせ シフタとレジスタの組み合わせ クロック DFF D0D0D0D0 Q0Q0Q0Q0 CK I0I0I0I0 I1I1I1I1 Q0Q0Q0Q0 DFF D1D1D1D1 Q1Q1Q1Q1 CK I2I2I2I2 Q1Q1Q1Q1 DFF D2D2D2D2 Q2Q2Q2Q2 CK I3I3I3I3 Q2Q2Q2Q2 DFF D3D3D3D3 Q3Q3Q3Q3 CK Q3Q3Q3Q3 S S=0 ⇒ レジスタ
シフタ - レジスタ シフタとレジスタの組み合わせ シフタとレジスタの組み合わせ DFF D0D0D0D0 Q0Q0Q0Q0 CK I0I0I0I0 クロック I1I1I1I1 Q0Q0Q0Q0 DFF D1D1D1D1 Q1Q1Q1Q1 CK I2I2I2I2 Q1Q1Q1Q1 DFF D2D2D2D2 Q2Q2Q2Q2 CK I3I3I3I3 Q2Q2Q2Q2 DFF D3D3D3D3 Q3Q3Q3Q3 CK Q3Q3Q3Q3 S S=1 ⇒ シフタ
sft_reg.v マルチプレクサ
問題 : シフタレジスタの動作 シフタレジスタの入力が下図のときの出力を記入 せよ シフタレジスタの入力が下図のときの出力を記入 せよ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 D 0 出力 Q 3 入力 sp 入力 D 1 入力 D 2 入力 D 3
同期式 16 進カウンタ TFF T0T0T0T0 Q0Q0Q0Q0 CK Q0Q0Q0Q0 Q1Q1Q1Q1 Q2Q2Q2Q2 Q3Q3Q3Q3 SW クロック TFF T1T1T1T1 Q1Q1Q1Q1 CK TFF T2T2T2T2 Q2Q2Q2Q2 CK TFF T3T3T3T3 Q3Q3Q3Q3 CK
ctr16.v
演習問題 : 16 進カウンタの動作 16 進カウンタの入力が下図のときの出力を記入せ よ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 SW 出力 Q 3 出力 Q
演習問題 : 16 進カウンタの動作 16 進カウンタの入力が下図のときの出力を記入せ よ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 SW 出力 Q 3 出力 Q abcdef0
同期式 10 進カウンタ J0J0J0J0 Q0Q0Q0Q0 Q0Q0Q0Q0 K0K0K0K0 CK J1J1J1J1 Q1Q1Q1Q1 Q1Q1Q1Q1 K1K1K1K1 CK J2J2J2J2 Q2Q2Q2Q2 Q2Q2Q2Q2 K2K2K2K2 CK J3J3J3J3 Q3Q3Q3Q3 Q3Q3Q3Q3 K3K3K3K3 CK クロック SW
ctr10.v
演習問題 : 10 進カウンタの動作 10 進カウンタの入力が下図のときの出力を記入せ よ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 SW 出力 Q 3 出力 Q
演習問題 : 10 進カウンタの動作 10 進カウンタの入力が下図のときの出力を記入せ よ 出力 Q 0 出力 Q 1 出力 Q 2 クロック 入力 SW 出力 Q 3 出力 Q
クリア信号付 FF を用いた BCD カウ ンタ 16 進カウンタ + リセット回路 16 進カウンタ + リセット回路 16 進カウンタ QQ0QQ0 QQ1QQ1 QQ2QQ2 QQ3QQ3 クロック CK clr リセット回路 1010 になったときに クリア信号を出す
クリア信号付 FF を用いた BCD カウ ンタ クロック J0J0J0J0 Q0Q0Q0Q0 Q0Q0Q0Q0 K0K0K0K0 CK clr J1J1J1J1 Q1Q1Q1Q1 Q1Q1Q1Q1 K1K1K1K1 CK clr J2J2J2J2 Q2Q2Q2Q2 Q2Q2Q2Q2 K2K2K2K2 CK clr J3J3J3J3 K3K3K3K3 Q3Q3Q3Q3 Q3Q3Q3Q3 CK clr 1 16 進カウンタ リセット回路
ctrx.v
問題 : X 進カウンタの動作 ctrx.v の実行結果を記入せよ ctrx.v の実行結果を記入せよ – ただし、 入力は以下の通りとする DIP Switch NUM : 学籍番号の下 1 桁 DIP Switch NUM : 学籍番号の下 1 桁 ( ただし、下 1 桁が 0 なら a(10), 8 なら c(12) を入 力 ) ( ただし、下 1 桁が 0 なら a(10), 8 なら c(12) を入 力 ) SW : 1 SW : 1 ctrx.v は何進カウンタになっているか ? ctrx.v は何進カウンタになっているか ? 進カ ウンタ 進カ ウンタ
学籍番号の 下 1 桁を入力 reset にも テスタを当て る