flip-flop (FF) flop (FF) flop (FF) の発振現象と同期化

● flipflip-flop (FF) の発振現象と
発振現象と同期化
下図で
下図で『○部に↑』は、 flipflip-flop(FF) 回路部であることを
回路部であることを示
であることを示し、『ck
『 ck』
ck』信号の
信号の立ち上り時 ('0'から
('0'から'1'
から'1'へ
'1'へ
の変化時)
変化時)に『data』
data』信号(
信号(の値)を内部に
内部に取りこむ(
りこむ(保持する
保持する)
する)ものとします。
ものとします。
FF に正しく data を取りこみ、
りこみ、保持させる
保持させるため
させるためには
ためには、
には、『data
『datadata-setup(Tsu)時間
setup(Tsu)時間』
時間』(ck 信号の
信号の立ち上りに先
りに先だ
って確定
って確定していなければならない
確定していなければならない時間
していなければならない時間)
時間)と『datadata-hold(Thd)時間
hold(Thd)時間』
時間』(ck 信号の
信号の立ち上り後も確定していなけれ
確定していなけれ
ばならない時間
ばならない時間)
時間)の両方で
両方 で、その最小規定
その最小規定を
最小規定を守らないと q_出力
q_出力が
出力が発振し
発振し、 '1'か
'1'か'0'のどちらの
'0'のどちらの状態
のどちらの 状態に
状態に落ち着
不定とな
となります
ります。
これは、
くかが
が不定
とな
ります
。これは
、FF を作るフィードバック回路
フィードバック回路の
回路の遅延時間
遅延時間の
時間の遅さによるものです。
よるものです。
くか
発振期間(Tvib)
発振期間(Tvib)は
(Tvib)は、TTL素子
TTL素子で
素子で数10ナノ
10ナノ秒
ナノ秒、CMOS素子
CMOS素子で
素子で数マイクロ秒
マイクロ秒程度と
程度と報告されています
報告されています。
されています。
『発振』
発振』が他の論理素子に
論理素子に伝わって行
わって行くと、
くと、誤動作(
誤動作(事故)
事故)の原因となる
原因となるので
となるので、
ので、外部から
外部から入
から入ってくる信号
ってくる信号を
信号を
自分勝手なタイミングで
自分勝手 なタイミングで取
なタイミングで取り込む場合には
場合には『
には『二段取り
二段取り込み』などの方法
などの方法で
方法で、入口部で
入口部で自分のタイミングに
自分 のタイミングに合
のタイミングに 合
わせた信号
せた信号に
信号に作り変えます。
えます。この処置
この処置を
処置を『同期化』
同期化』と呼びます。
びます。
このような発振現象
発振現象を
現象を知らないで、不具合(
不具合(事故)
事故)に頭を悩ましている人もいます。
電子回路設計
確実なタイミング設計
タイミング設計』
設計』が最も重要な
重要なのです。
電子回路設計で
設計では『 FF での確実な
ck
data
q
[正しい動作
しい動作]
動作]
data
Tsu
don't_Care(どのような
don't_Care(どのような値
どのような値でもよい)
でもよい)
'1'
'0'
Thd
ck
Tck
q
'1'
'0'
Tco
[誤動作の
誤動作の原因:
原因:発振現象]
発振現象]
data
Tsu
don't_Care(どのような
don't_Care(どのような値
どのような値でもよい)
でもよい)
Thd
Tsu
Thd
ck
Tsu 不足
q
Tvib
Thd 不足
'1' or '0'のどちらになるか
'0'のどちらになるか不定
のどちらになるか不定
・『clockclock-toto-output(Tco)』
output(Tco)』時間は
時間は、ck の立上りから
立上りから data_入力
data_入力の
入力の q_出力
q_出力への
出力への信号伝達時間
への信号伝達時間。
信号伝達時間。
- 1 -
【信号の
信号の同期化について
同期化について】
について】
二段の
二段の FF で受ける『
ける『二段取り
二段取り込み』の方法を
方法を紹介します
紹介します。
します。
ここでは、
ここでは、クロック周期
クロック周期_Tck
周期_Tck が、発振期間_Tvib
発振期間_Tvib よりも長
よりも長いことが必要
ことが必要条件
必要条件となります
条件となります。
となります。
次図で
次図で、rQ0 出力に
出力に発振が
発振が発生します
発生しますが
しますが、rQ1 出力には伝達
には伝達され
伝達されません
されません。
ません。
不定領域の
不定領域の値は、'1'か
'1'か'0'かどちらになるかはわかりません
'0'かどちらになるかはわかりませんが
かどちらになるかはわかりませんが、DATA 入力の
入力の値に落ち着けば良
けば良し、そうでな
くとも、
くとも、次クロックで DATA 入力値にな
入力値になります
になります。
ります。
結局、
結局、取り込みまでの時間
までの時間は
時間は、1クロック分
クロック分ばらつくことになりますが
ばらつくことになりますが、
ことになりますが、自分の
自分のクロック(CLK)
クロック(CLK)に
(CLK)に同期化した
同期化した
信号が
信号が得られます。
られます。
図では Tsu 時間違反の
時間違反の場合を
場合を示しますが、
しますが、Thd 時間違反の
時間違反の場合も
場合も同じです。
です。
CLK
DATA
q
rQ0
rQ1
[同期化]
同期化]
SCLK
Tck
Tsu
DATA
'0'
rQ0
'0'
rQ1
'0'
Thd
Tsu
Thd
'1'
'1'
Tvib
'1'
不定が
不定が '1' に落ち着けば良
けば良し。
'0' であれば次
であれば次クロックで'1'
クロックで'1'になる
'1'になる。
になる。
いずれにせよ、
いずれにせよ、SCLK に同期した
同期した信号
した信号 rQ1 が得られる。
られる。
- 2 -