FPGA/CPLD ホーム 製品・サービス ソフトウェア メンター・グラフィックス 機能検証 コラム コラム:非同期クロック と 検証手法−1

コラム:非同期クロック と 検証手法−1

今日の FPGA デザインにおいて、異なるクロック・ドメイン間における信号の接続(CDC(Clock Domain Crossing ))によるメタステーブルが問題になっています。従来の構造による検証だけでは、CDC 信号の検証に有効ではありません。このコラムでは CDC の問題とその検証方法について4回に分けてご説明します。



第1回:セットアップタイムやホールドタイムとは

FPGAやASICなどのLSIに組み込まれている全てのFF(フリップフロップ)/レジスタ には、それぞれが入力時のデータを正しく取り入れて、出力信号を生成できるように、セットアップやホールド タイムなどのタイミング制約が定義されています。

つまり、クロックのエッジの最小時間(セットアップタイム tCO)とクロックのエッジの最小時間(ホールドタイム tH)の間は入力データが安定している必要があります。


今回は、セットアップやホールドタイムの制約がある理由を D-FF(フリップフロップ)の構造から説明したいと思いますが、D-FFの構造に興味が無い方へ簡単に説明すると、クロックが入る前後にデータが安定していないと、前後のどちらのデータを取るのか分からないだけでなく、出力が”Low(0)”と”High(1)”の中間の電位にしばらく留まるメタステーブルが起こります。そこで、セットアップ/ホールドタイムの制約が存在しています。
では、この現象を詳細にご説明します。


D-FF(フリップフロップ)の構造は色々とありますが、CMOS 回路では一般的に図1-1のように インバータやトランスファーゲートなどで構成されます。教科書に書いてあるD-FFの回路図とは違いますが、論理は同じでトランジスタ数が少ないのが特徴です。

トランスファーゲートはスイッチの役割を果たし、クロック“C” の状態値によってオンやオフになります。

インバータを2個使ったループ回路(ラッチ回路)が前段と後段にありますが、ここでデータを保持する仕組みになっています。

動作としては、クロック “C” が L(Low/0) の時にデータ “D” の信号を読み込んで、次に “C” が↑(立ち上がる)と そのデータを出力 “Q” に出力します。



図1-1 一般的な D-FF の回路構造


図1-2 は ”C” が L(Low/0) の時です。

前段のインバータ・ループに “D” の信号を格納し、後段のインバータ・ループで前サイクルのデータを保持します。

前段と後段のインバータ・ループを接続するトランスファーゲートは オフ なので信号は伝わりません。



図1-2 “C” が “Low(0)” の状態


図1-3 は “C” が H(High/1) の時です。
“C” を↑にすると、前段のインバータ・ループに格納したデータを後段へ伝送します。



図1-3 “C” が “Low(0)” の状態


“C” を↑にすると、図1-3のように “D” から信号は入って来ません。

この時に、信号が前段のインバータ・ループを1周していないと信号が “L” と “H” の間を ゆらりゆらり とゆれて 中間電位(メタステーブル)になります。もちろん、CMOS 回路なので ある時間後に “L” か “H” になるのですが、メタステーブル状態は遅延時間より長いのでデータを取りそこなうこともあります。

このために、セットアップ時間の制約があります。


また、“C” を↑にして “D” の入力が閉まる直前に “D” が変化すると、次のサイクルで取り込まれるはずのデータを早く取り込んだり、同じようにインバータ・ループで発振やメタステーブルが起きますので、“C” が↑になった後でも “D” の信号はしばらく安定している必要があります。

このために、ホールド時間の制約があります。

よって、クロックが1本の場合はセットアップやホールドタイム時間の制約を守っていれば問題ありません。しかし、クロックが複数ある時は注意する必要があります。


今回は ここまでです。次回はメタステーブルについて説明します。


<次ページに続く>


1

2

3

4

【次】 へ



メールマガジンお申込み