ソース・シンクロナス・インターフェイスの制約を学ぶ:必修! FPGAタイミング解析の基礎(4)(1/4 ページ)
今回はデータをクロックとともに送信する「ソース・シンクロナス方式」のインターフェイスのタイミング制約を解説する。
前回「共通クロック・インターフェイスの制約を学ぶ」ではI/Oタイミングの制約の1回目として、「共通クロック方式」の制約方法を解説しました。
今回は2つ目のインターフェイス方式、「ソース・シンクロナス方式」の制約方法について解説します。
ソース・シンクロナス方式とは、データをクロックとともに送信する方式です。クロックの立ち上がりエッジだけ合わせて、データを送る「シングル・データ・レート(SDR)」と、立ち上がり、立ち下がりの両エッジに合わせてデータを送る「ダブル・データ・レート(DDR)」がよく使われます(図1)。どちらも考え方は同じですが、DDRの場合は立ち下がりエッジに対する制約が必要になります。
タイミング制約の観点からは、クロックとデータの位相関係で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入力制約
続いて、センター・アラインの外部のタイミング・スペックを、図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]
Copyright © ITmedia, Inc. All Rights Reserved.