組み込み回路 12 · タイミング・消費電力・メタステーブル

Chapter 12

タイミング・消費電力・メタステーブル

この章がなぜ必要なのか——「なぜか動かない」の物理的な原因がここにあるから.

これらは全部、タイミングの問題である。 そしてタイミングの問題は、確率的にしか現れないので極めて厄介である。

この章で使う既出の用語(定義は各リンク先). LED(04 章 4 節)、制御(06 章 6 節)、PLL(09 章)、インバータ(09 章 2 節)、ループ帯域(09 章 3 節)、\(V_{DD}\)(11 章 3 節)、プロセスばらつき(11 章 3 節)、温度(11 章 3 節)、発熱(11 章 5 節)

1. フリップフロップとタイミング制約

D フリップフロップ

DQDQCLKクロックの立ち上がりで D の値を取り込み、Q に出す
D フリップフロップ。「エッジの瞬間の値」を捕まえるので、その前後で D が安定している必要がある

クロックの立ち上がりで、D の値を取り込んで Q に出す。

3 つのタイミング制約

Dセットアップホールドこの間 D は動いてはいけないCLK取り込みエッジQt_cq(クロック・ツー・Q 遅延)
3 つの制約。エッジの前後に D が安定している窓が要り、Q が出るまでには遅延がある
制約記号意味
セットアップ時間\(t_{su}\)クロックの前に、D が安定していなければならない時間
ホールド時間\(t_{h}\)クロックの後に、D を保持しなければならない時間
クロック・ツー・Q\(t_{cq}\)クロックから Q が変化するまでの遅延

セットアップ違反とホールド違反

FF1組合せ論理FF2CLKt_cq + t_logic + t_su < T + skew を満たすこと
1 つのパス。ここが破れるとセットアップ違反になり、クロックを下げれば直る

セットアップ制約:

\[ t_{cq} + t_{logic(max)} + t_{su} \le T_{clk} + t_{skew} \]

ホールド制約:

\[ t_{cq} + t_{logic(min)} \ge t_{h} + t_{skew} \]
違反原因対策
セットアップ違反論理が遅すぎる/クロックが速すぎるクロックを下げる、論理を分割(パイプライン化)
ホールド違反論理が速すぎる/クロックスキュー遅延を挿入する。クロックを下げても直らない

決定的な違い: セットアップ違反はクロックを下げれば直るが、 ホールド違反は直らない.

ホールド制約の式に \(T_{clk}\) が現れないからである。

だから——

FPGA / ASIC の設計では、ホールド違反は必ずゼロにしてから出す。 動作周波数を変えても直らないからである。

タイミング制約を確かめる

論理遅延・クロック周期・スキューを変えて、 セットアップ/ホールドのマージンを確かめられる。

2. クロックスキューとジッタ

用語意味
スキュー空間的なずれ。別々の FF に届くクロックの時刻差
ジッタ時間的な揺らぎ。同じ点でのクロック周期のばらつき
【スキュー】空間的なずれFF1FF2ずれ配線長の差が原因。等長配線で減らす【ジッタ】時間的な揺らぎCLK周期が T ± Δ で揺れる位相雑音・電源変動・PLL が原因セットアップ余裕を直接削る
スキューは配線で決まる固定のずれ、ジッタは毎周期変わる揺らぎ。対策がまったく違う

スキューは「良い方向」にも働く.

受信側のクロックが遅れて届けば、セットアップ時間に余裕ができる。 一方でホールドは厳しくなる。

意図的にスキューを与える(useful skew)という最適化手法もある。

ただし組み込みの基板設計では—— クロック配線を等長にして、スキューを最小にするのが基本である(23 章)。

ジッタの種類

種類原因
ランダムジッタ (RJ)熱雑音など。ガウス分布。BER で規定する
決定論的ジッタ (DJ)電源変動、クロストーク、ISI(符号間干渉)。有界
周期ジッタPLL のループ帯域内のノイズ

高速シリアル通信(20 章)では、ジッタバジェットが設計の中心になる。

3. メタステーブル(準安定状態)

セットアップ/ホールドを守れないと、FF の出力が中間電位で止まることがある。

時間 tQVDD準安定状態(中間電位で止まる)H に確定L に確定この長さが確率的に決まる
メタステーブルは「起きるか」ではなく「どれだけ続くか」の問題。待ち時間が指数の肩にいる

なぜ起きるか

FF の中身は正帰還ループ(2 つのインバータが向かい合っている)である。 これは双安定だが、その中間にも平衡点がある(不安定な平衡)。

入力が閾値付近だと、この不安定平衡に乗ってしまう。

確率的な性質

メタステーブルは「起きるかどうか」ではなく「どれくらい長く続くか」の問題である。

\[ \text{MTBF} = \frac{e^{t_r / \tau}}{T_0 \cdot f_{clk} \cdot f_{data}} \]
記号意味
\(t_r\)解決に許される時間(次段までの余裕)
\(\tau\)FF の解決時定数(プロセス依存。数十〜数百 ps)
\(T_0\)メタステーブル窓(数十〜数百 ps)
\(f_{clk}\)クロック周波数
\(f_{data}\)データの変化頻度

\(t_r\) が指数の肩にいる、というのが決定的である.

待ち時間を少し増やすだけで、MTBF が桁違いに改善する。

例: \(\tau = 100\) ps、\(T_0 = 100\) ps、\(f_{clk} = 100\) MHz、\(f_{data} = 1\) MHz

(分母は \(T_0 f_{clk} f_{data} = 10^{-10} \times 10^8 \times 10^6 = 10^4\) /s)

\(t_r\)MTBF
1 ns\(e^{10} / 10^{4}\) ≈ 2.2 秒
2 ns\(e^{20} / 10^{4}\) ≈ 13 時間
3 ns\(e^{30} / 10^{4}\) ≈ 34 年
5 ns\(e^{50} / 10^{4}\) ≈ 1.6 × 10¹⁰ 年(宇宙年齢を超える)

3 ns で数十年、5 ns 余裕を持たせれば実用上ゼロになる。

対策: 2 段シンクロナイザ

非同期入力FF1FF2同期化された信号CLKここは準安定になりうる1 クロック分の整定時間を稼ぐ
2 段シンクロナイザ。1 段目が準安定でも、次のエッジまでに整定する確率が桁違いに高くなる

FF1 がメタステーブルになっても、次のクロックまでの 1 周期で解決する。 FF2 は解決後の安定した値を取り込む。

段数用途
2 段標準。ほとんどの用途で十分
3 段高速クロック、高信頼性が要る場合
1 段不十分。使ってはいけない

メタステーブルの確率を確かめる

クロック周波数・データ頻度・許容時間を変えて、MTBF を確かめられる。

シンクロナイザで解決できない問題がある.

複数ビットの非同期信号を、各ビット独立にシンクロナイズしてはいけない。

【危険】各ビットを独立に同期化する非同期バス[7:0]8 個のシンクロナイザ同期バス[7:0](値が壊れる)ビットごとに整定タイミングが違うので、一瞬ありえない値が出る
複数ビットを独立に同期化してはいけない。グレイコードにするか、ハンドシェイクで受け渡す

各ビットが別々のクロックで確定する可能性がある。 0x0F → 0x10 の遷移で、途中で 0x1F や 0x00 が見える。

対策:

手法内容
グレイコード一度に 1 ビットしか変わらない符号(FIFO のポインタで使う)
ハンドシェイクreq/ack で受け渡す。遅いが確実
非同期 FIFO専用の構造。グレイコードのポインタを使う
MUX リサイクルデータはそのまま、制御信号だけを同期化して取り込む

組み込みの実務では、MCU の入力キャプチャや外部割り込みが 内部でシンクロナイザを持っていることが多い。データシートで確認すること。

4. 入出力タイミング

セットアップ/ホールドを外部インタフェースで守る

MCU周辺 ICSCLKMOSIMISOSCLK が届き、MISO が返ってくるまでが 1 往復=速度の上限を決める
SPI の速度は往復遅延で決まる。T/2 > 2·t_prop + t_co + t_su。配線を伸ばすと直接効く

MISO のタイミングが最も厳しい。

\[ t_{su(MCU)} \le T_{clk} - t_{prop(SCLK)} - t_{cq(slave)} - t_{prop(MISO)} \]

配線遅延が効いてくるのは、意外に低い周波数からである.

基板上の配線遅延は約 6〜7 ns/m(FR4、マイクロストリップ)。 20 cm の配線なら 1.3 ns。

SPI 50 MHz(周期 20 ns)なら、往復 2.6 ns は 13 % を占める。 スレーブの \(t_{cq}\) が 10 ns あれば、もう余裕がない。

対策:

出力の立ち上がり時間(スルーレート)制御

多くの MCU が、GPIO の出力ドライブ強度・スルーレートを設定できる。

設定効果
速い(強い)立ち上がりが速い。EMI が増える、リンギングが増える
遅い(弱い)立ち上がりが遅い。EMI が減る、タイミング余裕が減る

必要以上に速くしないこと.

03 章で見たとおり、\(f \approx 0.35 / t_r\)。

10 倍の差がある。 遅くて構わない信号(LED、リレー制御)を 高速設定にしておくと、無用な EMI を出す(24 章)。

必要な速度で、最も遅い設定を選ぶ。

5. 消費電力の実務

静的(スリープ時)電流の内訳

要因対策
MCU のコア・周辺のリークスリープモードの選択(周辺の電源を切る)
プルアップ/プルダウン抵抗値を大きくする。不要なら外す
未使用 GPIO の設定アナログ入力か出力ローに設定する
オペアンプ・センサの静止電流シャットダウンピンで切る
LDO の静止電流低 \(I_Q\) 品を選ぶ(14 章)
リーク(レギュレータ、ダイオード)逆流防止ダイオードの漏れ電流にも注意

未使用 GPIO を「入力・プルアップなし」にすると、リークが増える.

ピンが中間電位で浮くと、入力バッファに貫通電流が流れる(11 章)。

最も低消費なのは「アナログ入力」設定である(入力バッファが切り離される)。 多くの MCU で、この設定が推奨されている。

次点は「出力ロー」。「入力・プルアップ/プルダウンあり」は 抵抗経由の電流が流れるので、外部が固定されているなら不要。

動的電流の見積り

\[ I_{avg} = I_{active} \times D + I_{sleep} \times (1 - D) \]
状態典型的な電流(Cortex-M4 @ 80 MHz の例)
アクティブ10〜30 mA
スリープ(クロック停止)1〜5 mA
ディープスリープ数十 µA
スタンバイ(RTC のみ)1〜3 µA

電池寿命の計算では、遷移時間を忘れないこと.

スリープから復帰するのに数百 µs〜数 msかかることがある。 その間はアクティブ電流が流れる。

「1 秒に 1 回、1 ms だけ動く」設計でも、 復帰に 2 ms かかるなら、実効デューティは 3 倍になる。

実測すること。 データシートの値だけで計算すると、 電池寿命が数分の 1 になることがある。

電流波形の測定

平均電流だけでは足りない。ピーク電流も重要である。

理由内容
電池の内部抵抗ピーク電流で電圧が下がり、リセットする
LDO の応答急激な負荷変動に追従できない(14 章)
デカップリング容量ピークを吸収するのは容量(16 章)

コイン電池(CR2032)は特に厳しい.

内部抵抗が 10〜30 Ω(新品)、低温や末期には 100 Ω 以上になる。

10 mA のピークで 0.1〜1 V の電圧降下。 3.0 V の電池が 2.0 V まで下がり、MCU がリセットする。

対策:

6. 温度と電圧によるタイミング変動

PVT コーナー

要因遅延への影響
Process(プロセスばらつき)Fast / Typical / Slow
Voltage(電源電圧)低いほど遅い
Temperature(温度)高いほど遅い(通常のプロセス)
\[ t_{pd,worst} = t_{pd,typ} \times k_P \times k_V \times k_T \]

全部が悪い方に振れると、typical の 2 倍近くになることがある。

温度反転(temperature inversion)という現象がある.

低電圧のプロセス(\(V_{DD}\) が \(V_{th}\) に近い)では、 高温の方が速くなることがある。

\(V_{th}\) が温度で下がる効果が、移動度低下の効果を上回るためである。

だから最悪ケースが「高温」とは限らない。両端で検証すること。

実務での確認

確認すべき条件内容
低温 + 低電圧最も遅い(通常のプロセス)
高温 + 低電圧リークが多く、電圧降下も大きい
高温 + 高電圧最も消費電力が大きい(発熱)
低温 + 高電圧最も速い(ホールド違反のリスク)

7. この章のまとめ

ポイント内容
3 つの制約セットアップ・ホールド・クロック・ツー・Q
決定的な違いセットアップ違反はクロックを下げれば直る、ホールド違反は直らない
スキューとジッタ空間的なずれ/時間的な揺らぎ。クロック配線は等長に
メタステーブル「起きるか」ではなく「どれだけ続くか」の問題
MTBF待ち時間が指数の肩にいる。5 ns 余裕で実用上ゼロに
シンクロナイザ2 段が標準。1 段は不十分
複数ビットの同期各ビット独立にやってはいけない。グレイコードかハンドシェイク
配線遅延約 6〜7 ns/m。SPI 50 MHz では 20 cm で 13 % を占める
スルーレート設定必要な速度で、最も遅い設定を選ぶ。EMI に直結
未使用 GPIOアナログ入力が最も低消費。入力開放は貫通電流が流れる
ピーク電流平均だけでは足りない。コイン電池は内部抵抗 10〜100 Ω
PVT低温・低電圧が最も遅い。温度反転もありうるので両端で検証

次章では、デジタル IC の中でも特殊な—— メモリの内部構造を扱う。