連載
» 2009年02月13日 00時00分 UPDATE

必修! FPGAタイミング解析の基礎(4):ソース・シンクロナス・インターフェイスの制約を学ぶ (1/4)

今回はデータをクロックとともに送信する「ソース・シンクロナス方式」のインターフェイスのタイミング制約を解説する。

[小原成介(日本アルテラ),@IT MONOist]

 前回「共通クロック・インターフェイスの制約を学ぶ」ではI/Oタイミングの制約の1回目として、「共通クロック方式」の制約方法を解説しました。

 今回は2つ目のインターフェイス方式、「ソース・シンクロナス方式」の制約方法について解説します。

 ソース・シンクロナス方式とは、データをクロックとともに送信する方式です。クロックの立ち上がりエッジだけ合わせて、データを送る「シングル・データ・レート(SDR)」と、立ち上がり、立ち下がりの両エッジに合わせてデータを送る「ダブル・データ・レート(DDR)」がよく使われます(図1)。どちらも考え方は同じですが、DDRの場合は立ち下がりエッジに対する制約が必要になります。


SDRとDDR 図1 SDRとDDR

 タイミング制約の観点からは、クロックとデータの位相関係で2つに分ける方が考えやすくなります。ここでいう2つとは「エッジ・アライン」と「センター・アライン」のことです。エッジ・アラインは、送信するデータとクロックの位相がそろっている場合です。受信デバイスがクロックを遅らせて、データを取り込む必要があります。一方、センター・アラインは、送信するデータの中央にクロック・エッジが来る場合です(図2)。

エッジ・アラインとセンター・アライン 図2 エッジ・アラインとセンター・アライン

エッジ・アラインのSDR入力制約

 まず、エッジ・アラインのSDRの入力制約を考えてみましょう。

 外部のタイミング・スペックを、図3に示します。相手側、送信デバイスの出力ACスペックは、普通、送信クロックに対するスキュー「Tskew」として定義されます。クロックに対して、データが最も早く出力される場合のスキューが「Tskew_min」、最も遅い場合のスキューが「Tskew_max」です。

 図3には「データ有効ウィンドウ(Data Valid Window)」が描かれています。条件によらずデータが有効となる時間のことで、最も早いデータと、最も遅いデータが重なる部分を指します。メーカーによっては、データ有効ウィンドウでスペックを定義する場合もあります。

 次にボードのタイミング条件です。データの伝搬遅延の最大値と最小値を、「Tdata_max」「Tdata_min」で、クロックの伝搬遅延を「Tclk_max」「Tclk_min」で表します。

 制約のためのデータの遅延時間は、FPGAの入力ポートで定義します。FPGAのデータ入力「DATAIN」とクロック入力「CLKIN」の関係を考えると、「Tskew」よりも「Tdata」だけ遅延が大きくなり、「Tclk」だけ小さくなります。そこで、最大と最小の遅延時間はそれぞれ以下の式で表されます。

<最大データ遅延時間> = Tskew_max + Tdata_max − Tclk_min
<最小データ遅延時間> = −Tskew_min + Tdata_min − Tclk_max 

 クロックの定義も含めて書くと、タイミング制約は以下のようになります。<最大(最小)データ遅延時間>は、上の式から算出した値で置き換えます。<クロック周期>はもちろん、クロックの周期の値で置き換えてください。

create_clock -name clkin -period <クロック周期> [get_ports CLKIN]
create_clock -name vclk -period <クロック周期>
 
set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN]
set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN] 

SDRエッジ・アライン入力 図3 SDRエッジ・アライン入力

センター・アラインのSDR入力制約

 続いて、センター・アラインの外部のタイミング・スペックを、図4に示します。送信デバイスの出力ACスペックは、送信クロックに対する遅延「Tco」として定義されます。エッジ・アラインの場合と同様に、データとクロックの伝搬遅延を「Tdata」「Tclk」で表します。

 データの遅延時間は、エッジ・アラインの場合とあまり違いはありません。ただし、「Tco_min」は「Tskew_min」と時間軸を逆に取っているので注意してください。

<最大データ遅延時間> = Tco_max + Tdata_max − Tclk_min
<最小データ遅延時間> = Tco_min + Tdata_min − Tclk_max 

 クロックの定義も含めて書くと、タイミング制約は以下のようになります。やはり、<>内はそれぞれの数値に置き換えます。

create_clock -name clkin -period <クロック周期> [get_ports CLKIN]
create_clock -name vclk -period <クロック周期>
 
set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN]
set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN] 

SDRセンター・アライン入力 図4 SDRセンター・アライン入力

関連キーワード

FPGA関連 | 回路 | FPGA | 設計 | ASIC | 半導体


       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.