BUFG_GT および BUFG_GT_SYNC

Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル (AM003)

Document ID
AM003
Release Date
2023-05-16
Revision
v1.5 日本語

BUFG_GT はギガビット トランシーバー (GT) によって駆動されます。BUFG_GT (下図参照) は、クロック入力 (I)、クロック出力 (O)、クリア入力 (CLR) と CLR マスク入力 (CLRMASK)、クロック イネーブル入力 (CE) と CE マスク入力 (CEMASK)、3 ビットの分周値入力 (DIV[2:0]) を 1 つずつ持つクロック バッファーです。BUFG_GT_SYNC は BUFG_GT のシンクロナイザー回路で、このセクションでは明示されています。BUFG_GT_SYNC プリミティブがデザインにない場合、Vivado ツールがこのプリミティブを自動的に挿入します。このクロック バッファーはゲーテッド入力とリセットを 1 つずつ持ち、配線および分配リソースを直接駆動できます。CE を Low にディアサートすると、出力は現在の状態のまま High または Low で停止します。CE が High の場合、入力 I がそのまま出力 O となります。CE の両エッジと CLR のディアサートはクロックに自動的に同期され、グリッチのない動作を実現します。Vivado ツールは CE ピンのタイミングをサポートしないため、確定的なレイテンシを得ることはできません。CLR は、BUFG_GT に対する非同期リセット アサートおよび同期リセット ディアサートです。シンクロナイザー回路には 2 つの段階がありますが、CLR ピンにはセットアップ/ホールド タイミング アークが割り当てられていません。このため、レイテンシは予測不可能です。BUFG_GT には、入力クロックを 1 ~ 8 分周する機能もあります。DIV[2:0] 値は、実際の分周値から 1 を引いた値です (すなわち 3'b000 は 1 分周、3'b111 は 8 分周に対応)。分周値 (DIV 入力)、CEMASK、CLRMASK は、バッファーがリセット状態のときに変更する必要があります。入力クロックは、CE がディアサートされているか、リセットがアサートされているときに変更できます。ただし、これらの制御信号には最小ディアサート/アサート時間があります。

図 1. BUFG_GT プリミティブ

Versal デバイスには、GT クワッド 1 つにつき 24 個の BUFG_GT と 41 個の BUFG_GT_SYNC があります。クワッド内の GT 出力クロックはいずれも BUFG_GT にマルチプレクスできます。41 個の BUFG_GT_SYNC に対応する 41 個の CE および CLR ピンがあり、これらで 24 個の BUFG_GT を駆動できます。各 BUFG_GT バッファーには CE と CLR 用に個別のマスクがあります (全部で 24 個)。同じクロック ソースによって駆動される BUFG_GT はすべて CE および CLR 信号を共通とする必要があります。この場合、CE と CLR を 1 つの定数信号に接続することはできませんが、マスクを設定して同じ機能を得ることができます。同じ入力クロックに接続された BUFG_GT の出力クロックは、リセット (CLR) 終了時または CE アサート時に互いに同期します (位相が揃う)。個々のマスク ピンを使用して、24 個の BUFG_GT のうちどれが CE および CLR に応答するか (すなわち互いに同調するか直前の位相および分周値を維持するか) を制御します。BUFG_GT は HCS にあり、GT 出力クロックで直接駆動されます。これらのバッファーは、配線/分配リソースを使用して CR 内のハード ブロックとロジックを直接駆動することを目的としています。GT には、これ以外にほかのクロック ソースに直接つながる専用の接続はありません。ただし、BUFG_GT およびクロック配線リソースを経由して XPLL、MMCM、DPLL および GCLK ブロックに接続可能です。

CLR (リセット) をディアサートすると、出力は次の入力クロック エッジで High に遷移し、入力クロックの分周値/2 サイクル後に Low に遷移します。リセットは同期してディアサートされるため、出力を High に遷移させるには、2 クロック サイクル分の同期レイテンシを追加する必要があります。次に、8 分周で必要な 4 サイクル後に Low に遷移します。出力は指定された分周値によって決まるクロック サイクル数を経過した後 High に遷移し、その後は分周後の周波数で出力クロックがトグルします。

CLR をアサートすると、Clock-to-Out 時間の経過後にクロックは Low のままトグルを停止します。分周値が奇数の場合、クロックが High の期間が Low の期間よりも 1 サイクル少ないため、デューティ サイクルは 50% になりません。たとえば分周値が 7 の場合、クロックは 3 サイクル間 High となり、4 サイクル間 Low となります。

CE をディアサートすると、出力は現在の状態のまま High または Low で停止します。CE を再びアサートすると、内部カウンターは停止したところから再開します。たとえば分周値が 8 で、出力が最後に High に遷移してから入力クロックの 2 サイクル後に CE をディアサートすると、出力は High のままとなります。次に CE を再びアサートすると、出力は入力クロックの 4 サイクル (同期に必要な 2 サイクルと、8 分周で必要な出力クロックの High 期間の 2 サイクル) 後に Low に遷移します。リセット入力を使用する場合、アサートすると出力は現在の状態が High なら直ちに Low に遷移し、Low ならそのままの状態を維持します。リセットはクロックに同期してディアサートされるため、上記の例でリセットをディアサートすると、出力は同期に必要な 2 サイクル後に High に遷移し、8 分周で必要な 4 サイクル後に Low に遷移します。

マスク ピン (CEMASK および CLRMASK) は、個々の BUFG_GT が CE/CLR 制御入力に対してどのように応答するかを制御します。マスク ピンをディアサートすると、対応する制御ピンは通常の動作となります。マスク ピンをアサートすると、対応する制御ピンは無視され、クロックはそのまま伝搬します (すなわち CE が High でリセットが Low の状態と同じ)。内部シンクロナイザー回路は、マスクされていない BUFG_GT のクロック出力の位相を揃えます。CE は両エッジが同期しますが、リセットはディアサートのみ同期します。リセットをアサートすると、BUFG_GT の出力が High であれば直ちに Low に遷移します。このため、グリッチまたはラント パルスが発生する可能性があります。これを回避するには、まず CE を使用して出力を停止し、入力クロックの (2 + 分周値/2) サイクル後に、リセットをアサートします。これにより、出力クロックが High の状態で無効になった場合に出力クロックの High 期間が通常より短くなるのを防ぐことができます。

重要: シンクロナイザー回路により、同じクロックで駆動されている BUFG_GT はすべてリセット終了時に位相が揃いますが、リセット マスクをアサートしていたために、リセットされていない BUFG_GT とは位相が揃わない場合があります。