ブログ | メタステーブル | ディー・クル―・テクノロジーズ

bookmark_borderフリップフロップ(FF)⑤

今回は、セットアップ・ホールドタイムについて触れたいと思います。

前回の記事はこちらです。

DFFの役目

DFFの役目は、「入力されたデータを意図したタイミングで‘1’or‘0’に判別する」です。(1ビットのA/Dコンバータとも言えます)では、どのタイミングで判別するか?と言うと、“マスターラッチが入力されたデータをラッチするタイミング”で判別が行われます。

CLKの“立上り”や“立下り”と表現することが多いのですが、動作原理からは“マスターラッチ回路がデータをラッチする時に、‘1’、‘0’に判別しています。

‘1’、‘0’に判別することも重要な役目なのですが、DFFの出力データは“意図したタイミング”で出力されることも重要な役目です。

つまり、判別するCLKのエッジを変化させることで、データが変化するのタイミングを変えることができます。

図1

図 1の様にDFFに入力するCLKの位相(エッジのタイミング)を変えることで、出力Qのデータが変化するタイミングを変えることができます。

データ変化のタイミング変化には、制限がある

この仕組みは、入力されたデータの変化するタイミングを、自分の都合の良いタイミングに変更する事に使われ、デジタル電子回路のあらゆるところに使われています。

ではこの機能に制限はないかというと、残念ながら制限があって、それが“セットアップ・ホールドタイム” です。

図2

図 2は、DATA(10交番)とCLKの周波数をわずかにずらしてシミュレーションした結果です。(回路は前回の図4です)

出力Qの様子がおかしい(10交番が出ていない)箇所があります。

この部分を拡大してみると、

図3
図4

ホールドタイムとは何か

上の図は、DATAが変化する直前にCLKのエッジが来るようになった場合を示しています。①と②では正しく動作していますが、③では正常な動作ができていません。

データの変化に対してどのくらい前にCLKエッジがいるかをホールドタイムと言います。

CLKエッジが入力されマスターラッチ回路がデータをラッチする、つまりホールド(つかむ)のに必要な時間です。この時間を確保した後に入力変化させないと、ラッチができずに正しい動作ができなくなってしまいます。

図5

逆に上の図は、DATAの変化直後にCLKのエッジが来るようになった場合を示しています。⑥以降では正しく動作していますが、④では正常な動作ができていません。

セットアップタイムとは何か

データの変化のどのくらい後にCLKエッジがいるかをセットアップタイムと言います。データが変化した後、ラッチの準備が整うまでの時間、つまりセットアップ(準備)の時間です。この時間を待ってやらないと、マスターラッチ回路が十分な準備ができず正しく動作できなくなってしまいます。

セットアップ・ホールドタイムを確保しないとDFFが正しく動作しないので、DFFの出力Qはどうなるか分かりません。上のシミュレーションの様に‘1’や‘0’になってくれれば良いのですが、場合に依っては‘1’‘0’の繰り返しが出力されたり、最悪の場合は、中間電位でとまってしまう場合があります。

厄介な現象「メタステーブル」とは何か

DFF出力に余計な10交番が混じったり、中間電位で止まってしまうと後段に及ぼす影響は計り知れません。特に中間電位で止まってしまうと後段のデジタル回路に貫通電流が流れ、デバイス自体にダメージを与えかねません。

こう言った現象を“メタステーブル”と言います。

メタステーブルの一番厄介な所は、必ず発生するとは限らないからです。

また、電源電圧や温度、トランジスタのバラツキや入力データ/クロックの波形などにも依存し、回路設計で「メタステーブルの発生を100%防止することは非常に困難」です。

この厄介な現象を確実に防止するには、セットアップ・ホールドタイムをきちんと確保することです。その為には、入力データの変化タイミングとクロックエッジの関係が確定していなくてはなりません。つまり、同期式の回路でなくてはいけない事になります。

しかし、実際には全ての回路を同期式に設計することが出来ず、外部との接続で必ず非同期の部分(例えばリセット回路など)が出てきます。

次回は、このメタステーブルが発生しても、その波及度を最小限にとどめるための回路を紹介したいと思います。