Document

論理回路
第12回 TkGate実習
- 順序回路
http://www.info.kindai.ac.jp/LC
38号館4階N-411 内線5459
[email protected]
TkGate

TkGate
– 論理回路のシミュレータ
論理素子やモジュールを使用可能
 フリーソフト

– ホームページ

http://www.tkgate.org/ja-index.html
ターミナルを起動
tkgate の起動

ターミナル上でコマンド “tkgate” で起動
$ tkgate &
File → New で
新規作成
が押されているとき
画面をクリックすると
× 印が出る。
× 印の位置に
ゲートが配置される
I/O
配置されるオブジェクト
ショートカット
Switch
s
DIP Switch
d
Graund
g
Vdd
v
Wire Merge
w
LED
l
LED Bar
L8
7 Seg.LED
L (h, d, s)
Gate
配置されるオブジェクト
ショートカット
AND
a
NAND
A
OR
o
NOR
O
XOR
x
XNOR
X
Buffer
b
Inverter
i
Tri-Buffer
t
オブジェクト, 配線で
右クリック→プロパティ
オブジェクト, 配線に
名前を付ける
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
clear 入力
enable 入力
0 入力で初期化
0 入力で Q値変更可能
D 入力
Q 出力
Q 出力
clock 入力
0 → 1 入力で FF 動作
TkGate のフリップフロップ

TkGate には DFF のみ存在
⇒ DFF を用いて他の FF を作成する
SRFF
S
R
SR→D
変換回路
D DFF
Q
Q
Q
Q
FF.v

4種類のFF
–
–
–
–
SRFF
DFF
TFF
JKFF
DFF
SRFF
TFF
JKFF
FFの動作
1.
2.
clr を 1 にし初期化 (各 Q の値が 0 に)
clr を 1 →0 にしてから動作開始
各 Q の値が 0 になれば
clr を 1 → 0 にする
FF の初期値は不定
演習問題 : SRFF の動作

SRFF の入力が下図のときの出力を記入せよ
入力 S
入力 R
出力 Qsr
出力 Qsr
クロック
演習問題 : SRFF の動作

SRFF の入力が下図のときの出力を記入せよ
入力 S
入力 R
出力 Qsr
出力 Qsr
クロック
SR = 11
の場合は
S優先
演習問題 : DFF の動作

DFF の入力が下図のときの出力を記入せよ
入力 D
出力 Qd
出力 Qd
クロック
演習問題 : DFF の動作

DFF の入力が下図のときの出力を記入せよ
入力 D
出力 Qd
出力 Qd
クロック
演習問題 : TFF の動作

TFF の入力が下図のときの出力を記入せよ
入力 T
出力 Qt
出力 Qt
クロック
演習問題 : TFF の動作

TFF の入力が下図のときの出力を記入せよ
入力 T
出力 Qt
出力 Qt
クロック
演習問題 : JKFF の動作

JKFF の入力が下図のときの出力を記入せよ
入力 J
入力 K
出力 Q
出力 Q
クロック
演習問題 : JKFF の動作

JKFF の入力が下図のときの出力を記入せよ
入力 J
入力 K
出力 Q
出力 Q
クロック
演習問題 :
ビット反転検出回路の設計

ビット反転検出回路
– 入力が0→1, 1→0と反転したときに1を出力
入力I
出力O
クロック
0→1を検出
1→0を検出
1.入力,出力,状態の決定

ビット反転を検出するには、1つ前の入力
I - を記憶しておけばいい
I - = 0 と I - =1の2状態 ⇒ FF1個で記憶可能
1入力, 1出力, 1FF
入力I
FF Q
出力O
クロック
I ≠Q ならば
1を出力
2.状態遷移図を描く


状態Q : 1つ前の入力 I - を記憶
出力O : I ≠Q ならば 1 を出力
0/0
q0
Q=0
0/1
1/1
q1
Q=1
1/0
3.状態遷移表を作成する
0/0
q0
Q=0
Q =0, I =0
Q =0, I =1
Q =1, I =0
Q =1, I =1
0/1
1/1
遷移
Q +=0
Q +=1
Q +=0
Q +=1
q1
Q=1
1/0
出力
O =0
O =1
O =1
O =0
4.拡大入力表を作る
使用するFFの入力要求
入力
遷移
I
0
0
1
1
Q
0
1
0
1
Q+
0
0
1
1
入力
出力
状態遷移
O
0
1
1
0
D
0
0
1
1
T
0
1
1
0
S
0
0
1
-
R
1
0
0
J
0
1
-
K
1
0
演習問題 :
DFFを用いたビット反転検出回路を作れ
𝐷=𝐼
𝑂 = 𝐼 ⋅𝑂+𝐼⋅ 𝑂 =𝐼⊕𝑂
I
D Q
I
D Q
O
CKQ
クロック
O
CKQ
クロック
演習問題 :
DFFを用いたビット反転回路の動作

ビット反転回路の入力が下図のときの出力を記入せよ
入力 I
入力 D
出力 O
出力 Q
クロック
演習問題 :
DFFを用いたビット反転回路の動作

ビット反転回路の入力が下図のときの出力を記入せよ
入力 I
入力 D
出力 O
出力 Q
クロック
※ 上図は理論値である。出力 O はクロックと同期を
取っていないため、実際にはこうはならない
問題 :
TFFを用いたビット反転検出回路を作れ
𝑇 = 𝐼 ⋅𝑂+𝐼⋅ 𝑂 =𝐼⊕𝑂
𝑂 = 𝐼 ⋅𝑂+𝐼⋅ 𝑂 =𝐼⊕𝑂
I
クロック
T
Q
CKQ
I
O
クロック
T
Q
O
CKQ
問題 :
SRFFを用いたビット反転検出回路を作れ
𝑆=𝐼
𝑅= 𝐼
𝑂 = 𝐼 ⋅𝑂+𝐼⋅ 𝑂 =𝐼⊕𝑂
I
クロック
S
Q
R CKQ
I
O
クロック
S
Q
O
R CKQ
問題 :
JKFFを用いたビット反転検出回路を作れ
𝐽=𝐼
𝐾= 𝐼
𝑂 = 𝐼 ⋅𝑂+𝐼⋅ 𝑂 =𝐼⊕𝑂
I
クロック
J
Q
KCKQ
I
O
クロック
J
Q
O
KCKQ
問題 :
TFFを用いたビット反転回路の動作

ビット反転回路の入力が下図のときの出力を記入せよ
入力 I
入力 T
出力 O
出力 Q
クロック
問題 :
SRFFを用いたビット反転回路の動作

ビット反転回路の入力が下図のときの出力を記入せよ
入力 I
入力 S
入力 R
出力 O
出力 Q
クロック
問題 :
JKFFを用いたビット反転回路の動作

ビット反転回路の入力が下図のときの出力を記入せよ
入力 I
入力 J
入力 K
出力 O
出力 Q
クロック
bit.v
シフタ

同期したフリップフロップの集まり
– クロック入力ごとに、値が隣のFFに移動する
D
Di  Qi 1 (1  i ) D0  D
D0 Q0
DFF
D1 Q1
DFF
D2 Q2
DFF
D3 Q3
DFF
CK
CK
CK
CK
クロック
Q0
Q1
Q2
Q3
sft.v
演習問題 : シフタの動作

シフタの入力が下図のときの出力を記入せよ
入力 D
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
演習問題 : シフタの動作

シフタの入力が下図のときの出力を記入せよ
入力 D
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
レジスタ/ラッチ

同期したフリップフロップの集まり
– n ビットの一斉読み出し、書き込みが可能
D0
D1
D Q
DFF
CK
D2
D Q
DFF
CK
D3
D Q
DFF
CK
D Q
DFF
CK
クロック
Q0
Q1
Q2
Q3
reg.v
シフタ-レジスタ

シフタとレジスタの組み合わせ
I0
I1
I2
I3
マルチ
プレクサ
S
D0 Q0
DFF
D1 Q1
DFF
D2 Q2
DFF
D3 Q3
DFF
CK
CK
CK
CK
クロック
Q0
Q1
Q2
Q3
シフタ-レジスタ

シフタとレジスタの組み合わせ
S=0 ⇒ レジスタ
I0
I1
I2
I3
S
D0 Q0
DFF
D1 Q1
DFF
D2 Q2
DFF
D3 Q3
DFF
CK
CK
CK
CK
クロック
Q0
Q1
Q2
Q3
シフタ-レジスタ

シフタとレジスタの組み合わせ
S=1 ⇒ シフタ
I0
I1
I2
I3
S
D0 Q0
DFF
D1 Q1
DFF
D2 Q2
DFF
D3 Q3
DFF
CK
CK
CK
CK
クロック
Q0
Q1
Q2
Q3
sft_reg.v
マルチプレクサ
問題 : シフタレジスタの動作

シフタレジスタの入力が下図のときの出力を記入せよ
入力 sp
入力 D0
入力 D1
入力 D2
入力 D3
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
同期式16進カウンタ
𝑇𝑖 = 𝑄𝑖−1 ⋅ 𝑄𝑖−2 ⋅ … ⋅ 𝑄1 ⋅ 𝑄0 2 ≤ 𝑖
𝑇1 = 𝑄0
𝑇0 = 1
SW
T0 Q0
TFF
T1 Q1
TFF
T2 Q2
TFF
T3 Q3
TFF
CK
CK
CK
CK
クロック
Q0
Q1
Q2
Q3
ctr16.v
演習問題 : 16進カウンタの動作

16進カウンタの入力が下図のときの出力を記入せよ
入力 SW
出力 Q
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
演習問題 : 16進カウンタの動作

16進カウンタの入力が下図のときの出力を記入せよ
入力 SW
出力 Q
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
0 1 2 3 4 5 6 7 8 9 a
b c
d e
f
0
同期式10進カウンタ
𝐽3 = 𝑄2 ⋅ 𝑄1 ⋅ 𝑄0 𝐽2 = 𝑄1 ⋅ 𝑄0 𝐽1 = 𝑄3 ⋅ 𝑄0 𝐽0 = 1
𝐾3 = 𝑄0
𝐾2 = 𝑄1 ⋅ 𝑄0 𝐾1 = 𝑄0
𝐾0 = 1
SW
J0
クロ
ック
Q0
K0CK Q0
J1
Q1
K1CK Q1
J2
Q2
K2CK Q2
J3
Q3
K3CK Q3
ctr10.v
演習問題 : 10進カウンタの動作

10進カウンタの入力が下図のときの出力を記入せよ
入力 SW
出力 Q
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
演習問題 : 10進カウンタの動作

10進カウンタの入力が下図のときの出力を記入せよ
入力 SW
出力 Q
出力 Q0
出力 Q1
出力 Q2
出力 Q3
クロック
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
クリア信号付FFを用いたBCDカウンタ

16進カウンタ+リセット回路
リセット回路
clr
Q0
Q1
Q2
16進カウンタ
CK
クロック
1010になったときに
クリア信号を出す
Q3
クリア信号付FFを用いたBCDカウンタ
リセット回路
16進カウンタ
1
クロック
J0 clrQ0
J1 clrQ1
J2 clrQ2
J3clr Q3
K0CK Q0
K1CK Q1
K2CK Q2
K3CK Q3
ctrx.v
問題 : X進カウンタの動作

ctrx.v の実行結果を記入せよ
– ただし、 入力は以下の通りとする
DIP Switch NUM : 学籍番号の下1桁
(ただし、下1桁が 0 なら a(10), 8なら c(12) を入力)
 SW : 1


ctrx.v は何進カウンタになっているか?
進カウンタ
学籍番号の
下1桁を入力
reset にも
テスタを当てる