SPI バス受信の波形およびタイミング バジェット - 3.1 日本語

UltraScale Architecture Soft Error Mitigation Controller v3.1 LogiCORE IP 製品ガイド (PG187)

Document ID
PG187
Release Date
2019-05-22
Version
3.1 日本語

SPI フラッシュ デバイスは、入力クロックを基準とした出力データの出力スイッチ特性が決まっています。ここでは、SPI フラッシュ デバイスから受信したデータをシステム レベル サンプル デザインでキャプチャする場合について解析します。

図 G-4: SPI フラッシュ デバイスの出力データ スイッチ特性

X-Ref Target - Figure G-4

X22338-sem-spi-output-data.jpg

この図 に示したように、SPI フラッシュ デバイスの出力スイッチ動作として次のパラメーターが定義されています。

T clqv = クロックを基準とした SPI フラッシュの最大出力 Valid 時間

T clqx = クロックを基準とした SPI フラッシュの最小出力ホールド時間

この解析は、最小伝搬遅延を 0 と仮定しています。また、次に示すスキューが無視できるものと仮定しています。

FPGA 出力および入力フリップフロップへの入力クロック分配のスキュー。

PCB レベル変換器のチャネル遅延のスキュー。この条件を満たすには、クロックとデータパスのレベル変換器の遅延が一致していなければなりません。

デューティ サイクルの歪み。

SPI フラッシュ マスター ヘルパー ブロックと PCB のインプリメンテーション パラメーターとして次のパラメーターが定義されています。

T clk = 入力クロック サイクル時間 ( icap_clk )

T qfpga = icap_clk を基準とした FPGA 出力遅延

T sfpga = icap_clk を基準とした FPGA 入力セットアップ時間

T hfpga = icap_clk を基準とした FPGA 入力ホールド時間

T w1 = FPGA からレベル変換器までの PCB トレース遅延

T w2 = レベル変換器から SPI フラッシュまでの PCB トレース遅延

T w3 = SPI フラッシュからレベル変換器までの PCB トレース遅延

T w4 = レベル変換器から FPGA までの PCB トレース遅延

T dly = レベル変換器のチャネル遅延

このタイミング パスは SPI フラッシュ マスター ヘルパー ブロックに対しては 2 サイクル パスですが、SPI フラッシュ デバイスに対しては 1 サイクル パスです。タイミング解析では、SPI フラッシュ デバイスの Clock-to-Out を組み合わせ遅延としてモデル化します。FPGA 側でのセットアップとホールドの両方の要件を考慮する必要があります。

この図 この図 に、SPI フラッシュ マスター ヘルパー ブロック インプリメンテーションによって生成されるメモリ システムの信号を示します。

図 G-5: 出力データ キャプチャ タイミング (ホールド解析)

X-Ref Target - Figure G-5

X15967-sem-output-hold.jpg
図 G-6: 出力データ キャプチャ タイミング (セットアップ解析)

X-Ref Target - Figure G-6

X15968-sem-output-setup.jpg

ホールド パス解析は合否判定です。ホールド パス解析は最小値の遅延を使用して計算し、次の関係が成り立つかを確認する必要があります。

T hfpga T qfpga,min + T w1 + T dly + T w2 + T clqx + T w3 + T dly + T w4

遅延 T w1 、T w2 、T w3 、T w4 、および T dly に安全な最小値として 0 を代入すると、次式が得られます。

T hfpga T qfpga,min + T clqx

セットアップ パス解析は最大値の遅延を使用して計算する必要があります。

T clk 0.5 × (T qfpga,max + T w1 + T dly + T w2 + T clqv + T w3 + T dly + T w4 + T sfpga )

例: Vivado Design Suite、Kintex UltraScale FPGA

T clqv = 6ns (SPI フラッシュのデータシートより)

T clqx = 1ns (SPI フラッシュのデータシートより)

T dly = 2.8ns (レベル変換器のデータシートより)

T w1 = 1ns (ボード シミュレーションより)

T w2 = 1ns (ボード シミュレーションより)

T w3 = 1ns (ボード シミュレーションより)

T w4 = 1ns (ボード シミュレーションより)

FPGA タイミング パラメーターは、アプリケーションで使用するターゲット FPGA にインプリメントしたシステム レベル サンプル デザインでのタイミング レポートから取得する必要があります。必要なレポートを生成するには、 report_timing_summary min_max オプションを付けて実行します。

次に示す例は、Kintex ® UltraScale™ デバイスにインプリメントしたシステム レベル サンプル デザインで生成したタイミング レポートの抜粋です。これは、タイミング レポートから必要な情報を得るための例として示しています。レポート内に必要な情報が見つからない場合は、レポートに含めるパスの最大数を増やしてください。

タイミング レポートの「 Destination: spi_c 」と表示された場所で、「Max at Slow Process Corner」にあるフリップフロップからパッドまでのパス解析を参照し、T qfpga の値を確認します。

T qfpga = I/O データパス遅延 ( spi_c )

T qfpga = 1.856ns、最大

Slack (MET): 15.037ns  (required time - arrival time)

Source:                 example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C

(rising edge-triggered cell FDRE clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Destination:            spi_c

(output port clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Path Group:             clk

Path Type:              Max at Slow Process Corner

Requirement:            11.111ns  (clk rise@11.111ns - clk rise@0.000ns)

Data Path Delay:        1.856ns  (logic 1.476ns (79.523%)  route 0.380ns (20.477%))

Logic Levels:           1  (OBUF=1)

Output Delay:           -11.111ns

Clock Path Skew:        -5.294ns (DCD - SCD + CPR)

Destination Clock Delay (DCD):    0.000ns = ( 11.111 - 11.111 )

Source Clock Delay      (SCD):    5.294ns

Clock Pessimism Removal (CPR):    0.000ns

Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE

Total System Jitter     (TSJ):    0.071ns

Total Input Jitter      (TIJ):    0.000ns

Discrete Jitter          (DJ):    0.000ns

Phase Error              (PE):    0.000ns

Clock Net Delay (Source):      2.304ns (routing 0.335ns, distribution 1.969ns)

Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)

-------------------------------------------------------------------    -------------------

(clock clk rise edge)        0.000     0.000 r

K20                                               0.000     0.000 r  clk (IN)

net (fo=0)                   0.000     0.000    example_ibuf/I

K20                                                               r  example_ibuf/INBUF_INST/PAD

K20                  INBUF (Prop_INBUF_HRIO_PAD_O)

0.805     0.805 r  example_ibuf/INBUF_INST/O

net (fo=1, routed)           0.092     0.897    example_ibuf/OUT

K20                                                               r  example_ibuf/IBUFCTRL_INST/I

K20                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)

0.043     0.940 r  example_ibuf/IBUFCTRL_INST/O

net (fo=1, routed)           1.967     2.907    example_support_wrapper/clk

BUFGCE_X1Y24                                                      r  example_support_wrapper/example_bufg/I

BUFGCE_X1Y24         BUFGCE (Prop_BUFCE_BUFGCE_I_O)

0.083     2.990 r  example_support_wrapper/example_bufg/O

X2Y1 (CLOCK_ROOT)    net (fo=1742, routed)        2.304     5.294    example_support_wrapper/example_support/example_spi/example_spi_byte/clk

BITSLICE_RX_TX_X0Y172

FDRE                                         r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C

-------------------------------------------------------------------    -------------------

BITSLICE_RX_TX_X0Y172

FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)

0.626     5.920 r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/Q

net (fo=1, routed)           0.380     6.300    spi_c_OBUF

AC23                                                              r  spi_c_OBUF_inst/I

AC23                 OBUF (Prop_OUTBUF_HPIOB_I_O)

0.850     7.150 r  spi_c_OBUF_inst/O

net (fo=0)                   0.000     7.150    spi_c

AC23                                                              r  spi_c (OUT)

-------------------------------------------------------------------    -------------------

(clock clk rise edge)       11.111    11.111 r

clock pessimism              0.000    11.111

clock uncertainty           -0.035    11.076

output delay                11.111    22.187

-------------------------------------------------------------------

required time                         22.187

arrival time                          -7.150

-------------------------------------------------------------------

slack                                 15.037

タイミング レポートの「 Destination: spi_c 」と表示された場所で、「Min at Fast Process Corner」にあるフリップフロップからパッドまでのパス解析を参照し、T qfpga の値を確認します。

T qfpga = I/O データパス遅延 ( spi_c )

T qfpga = 0.919ns、最小

Slack (MET):              3.227ns  (arrival time - required time)

Source:                 example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C

(rising edge-triggered cell FDRE clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Destination:            spi_c

(output port clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Path Group:             clk

Path Type:              Min at Fast Process Corner

Requirement:            0.000ns  (clk rise@0.000ns - clk rise@0.000ns)

Data Path Delay:        0.919ns  (logic 0.752ns (81.829%)  route 0.167ns (18.171%))

Logic Levels:           1  (OBUF=1)

Output Delay:           0.000ns

Clock Path Skew:        -2.308ns (DCD - SCD - CPR)

Destination Clock Delay (DCD):    0.000ns

Source Clock Delay      (SCD):    2.308ns

Clock Pessimism Removal (CPR):    -0.000ns

Clock Net Delay (Source):      1.077ns (routing 0.127ns, distribution 0.950ns)

Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)

-------------------------------------------------------------------    -------------------

(clock clk rise edge)        0.000     0.000 r

K20                                               0.000     0.000 r  clk (IN)

net (fo=0)                   0.000     0.000    example_ibuf/I

K20                                                               r  example_ibuf/INBUF_INST/PAD

K20                  INBUF (Prop_INBUF_HRIO_PAD_O)

0.418     0.418 r  example_ibuf/INBUF_INST/O

net (fo=1, routed)           0.025     0.443    example_ibuf/OUT

K20                                                               r  example_ibuf/IBUFCTRL_INST/I

K20                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)

0.015     0.458 r  example_ibuf/IBUFCTRL_INST/O

net (fo=1, routed)           0.746     1.204    example_support_wrapper/clk

BUFGCE_X1Y24                                                      r  example_support_wrapper/example_bufg/I

BUFGCE_X1Y24         BUFGCE (Prop_BUFCE_BUFGCE_I_O)

0.027     1.231 r  example_support_wrapper/example_bufg/O

X2Y1 (CLOCK_ROOT)    net (fo=1742, routed)        1.077     2.308    example_support_wrapper/example_support/example_spi/example_spi_byte/clk

BITSLICE_RX_TX_X0Y172

FDRE                                         r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C

-------------------------------------------------------------------    -------------------

BITSLICE_RX_TX_X0Y172

FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)

0.268     2.576 r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/Q

net (fo=1, routed)           0.167     2.743    spi_c_OBUF

AC23                                                              r  spi_c_OBUF_inst/I

AC23                 OBUF (Prop_OUTBUF_HPIOB_I_O)

0.484     3.227 r  spi_c_OBUF_inst/O

net (fo=0)                   0.000     3.227    spi_c

AC23                                                              r  spi_c (OUT)

-------------------------------------------------------------------    -------------------

(clock clk rise edge)        0.000     0.000 r

clock pessimism              0.000     0.000

output delay                -0.000     0.000

-------------------------------------------------------------------

required time                         -0.000

arrival time                           3.227

-------------------------------------------------------------------

slack                                  3.227

タイミング レポートの「 Source: spi_q 」と表示された場所で、「Setup (Max at Fast Process Corner)」にあるパッドからフリップフロップまでのパス解析を参照し、T sfpga の値を確認します。

Tsfpga = I/O データパス遅延 ( spi_q )

Tsfpga = 0.658ns、最大

Slack (MET):              23.825ns  (required time - arrival time)

Source:                 spi_q

(input port clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Destination:            example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D

(rising edge-triggered cell FDRE clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Path Group:             clk

Path Type:              Setup (Max at Fast Process Corner)

Requirement:            11.111ns  (clk rise@11.111ns - clk rise@0.000ns)

Data Path Delay:        0.658ns  (logic 0.495ns (75.210%)  route 0.163ns (24.790%))

Logic Levels:           2  (IBUFCTRL=1 INBUF=1)

Input Delay:            -11.111ns

Clock Path Skew:        2.318ns (DCD - SCD + CPR)

Destination Clock Delay (DCD):    2.318ns = ( 13.429 - 11.111 )

Source Clock Delay      (SCD):    0.000ns

Clock Pessimism Removal (CPR):    0.000ns

Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE

Total System Jitter     (TSJ):    0.071ns

Total Input Jitter      (TIJ):    0.000ns

Discrete Jitter          (DJ):    0.000ns

Phase Error              (PE):    0.000ns

Clock Net Delay (Destination): 1.087ns (routing 0.127ns, distribution 0.960ns)

Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)

-------------------------------------------------------------------    -------------------

(clock clk rise edge)        0.000     0.000 r

input delay                -11.111   -11.111

U21                                               0.000   -11.111 r  spi_q (IN)

net (fo=0)                   0.000   -11.111    spi_q_IBUF_inst/I

U21                                                               r  spi_q_IBUF_inst/INBUF_INST/PAD

U21                  INBUF (Prop_INBUF_HPIOB_PAD_O)

0.495   -10.616 r  spi_q_IBUF_inst/INBUF_INST/O

net (fo=1, routed)           0.047   -10.569    spi_q_IBUF_inst/OUT

U21                                                               r  spi_q_IBUF_inst/IBUFCTRL_INST/I

U21                  IBUFCTRL (Prop_IBUFCTRL_HPIOB_I_O)

0.000   -10.569 r  spi_q_IBUF_inst/IBUFCTRL_INST/O

net (fo=1, routed)           0.116   -10.453    example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q

BITSLICE_RX_TX_X0Y186

FDRE                                         r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D

-------------------------------------------------------------------    -------------------

(clock clk rise edge)       11.111    11.111 r

K20                                               0.000    11.111 r  clk (IN)

net (fo=0)                   0.000    11.111    example_ibuf/I

K20                  INBUF                                        r  example_ibuf/INBUF_INST/PAD

K20                  INBUF (Prop_INBUF_HRIO_PAD_O)

0.418    11.529 r  example_ibuf/INBUF_INST/O

net (fo=1, routed)           0.025    11.554    example_ibuf/OUT

K20                  IBUFCTRL                                     r  example_ibuf/IBUFCTRL_INST/I

K20                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)

0.015    11.569 r  example_ibuf/IBUFCTRL_INST/O

net (fo=1, routed)           0.746    12.315    example_support_wrapper/clk

BUFGCE_X1Y24         BUFGCE                                       r  example_support_wrapper/example_bufg/I

BUFGCE_X1Y24         BUFGCE (Prop_BUFCE_BUFGCE_I_O)

0.027    12.342 r  example_support_wrapper/example_bufg/O

X2Y1 (CLOCK_ROOT)    net (fo=1742, routed)        1.087    13.429    example_support_wrapper/example_support/example_spi/example_spi_byte/clk

BITSLICE_RX_TX_X0Y186

FDRE                                         r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/C

clock pessimism              0.000    13.429

clock uncertainty           -0.035    13.394

BITSLICE_RX_TX_X0Y186

FDRE (Setup_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)

-0.022    13.372    example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd

-------------------------------------------------------------------

required time                         13.372

arrival time                          10.453

-------------------------------------------------------------------

slack                                 23.825

タイミング レポートの「 Source: spi_q 」と表示された場所で、「Hold (Min at Slow Process Corner)」にあるパッドからフリップフロップまでのパス解析を参照し、T hfpga の値を確認します。

T hfpga = I/O データパス遅延 ( spi_q )

T hfpga = 0.468ns、最小

Slack (MET):              17.334ns  (arrival time - required time)

Source:                 spi_q

(input port clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Destination:            example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D

(rising edge-triggered cell FDRE clocked by clk  {rise@0.000ns fall@5.556ns period=11.111ns})

Path Group:             clk

Path Type:              Hold (Min at Slow Process Corner)

Requirement:            0.000ns  (clk rise@0.000ns - clk rise@0.000ns)

Data Path Delay:        0.468ns  (logic 0.242ns (51.750%)  route 0.226ns (48.250%))

Logic Levels:           2  (IBUFCTRL=1 INBUF=1)

Input Delay:            22.222ns

Clock Path Skew:        5.302ns (DCD - SCD - CPR)

Destination Clock Delay (DCD):    5.302ns

Source Clock Delay      (SCD):    0.000ns

Clock Pessimism Removal (CPR):    -0.000ns

Clock Net Delay (Destination): 2.312ns (routing 0.335ns, distribution 1.977ns)

Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)

-------------------------------------------------------------------    -------------------

(clock clk rise edge)        0.000     0.000 r

input delay                 22.222    22.222

U21                                               0.000    22.222 r  spi_q (IN)

net (fo=0)                   0.000    22.222    spi_q_IBUF_inst/I

U21                                                               r  spi_q_IBUF_inst/INBUF_INST/PAD

U21                  INBUF (Prop_INBUF_HPIOB_PAD_O)

0.242    22.464 r  spi_q_IBUF_inst/INBUF_INST/O

net (fo=1, routed)           0.050    22.514    spi_q_IBUF_inst/OUT

U21                                                               r  spi_q_IBUF_inst/IBUFCTRL_INST/I

U21                  IBUFCTRL (Prop_IBUFCTRL_HPIOB_I_O)

0.000    22.514 r  spi_q_IBUF_inst/IBUFCTRL_INST/O

net (fo=1, routed)           0.176    22.690    example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q

BITSLICE_RX_TX_X0Y186

FDRE                                         r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D

-------------------------------------------------------------------    -------------------

(clock clk rise edge)        0.000     0.000 r

K20                                               0.000     0.000 r  clk (IN)

net (fo=0)                   0.000     0.000    example_ibuf/I

K20                  INBUF                                        r  example_ibuf/INBUF_INST/PAD

K20                  INBUF (Prop_INBUF_HRIO_PAD_O)

0.805     0.805 r  example_ibuf/INBUF_INST/O

net (fo=1, routed)           0.092     0.897    example_ibuf/OUT

K20                  IBUFCTRL                                     r  example_ibuf/IBUFCTRL_INST/I

K20                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)

0.043     0.940 r  example_ibuf/IBUFCTRL_INST/O

net (fo=1, routed)           1.967     2.907    example_support_wrapper/clk

BUFGCE_X1Y24         BUFGCE                                       r  example_support_wrapper/example_bufg/I

BUFGCE_X1Y24         BUFGCE (Prop_BUFCE_BUFGCE_I_O)

0.083     2.990 r  example_support_wrapper/example_bufg/O

X2Y1 (CLOCK_ROOT)    net (fo=1742, routed)        2.312     5.302    example_support_wrapper/example_support/example_spi/example_spi_byte/clk

BITSLICE_RX_TX_X0Y186

FDRE                                         r  example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/C

clock pessimism              0.000     5.302

BITSLICE_RX_TX_X0Y186

FDRE (Hold_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)

0.054     5.356    example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd

-------------------------------------------------------------------

required time                         -5.356

arrival time                          22.690

-------------------------------------------------------------------

slack                                 17.334

チェック:

T hfpga ≤ T qfpga,min + T clqx であるか。

すなわち 0.468ns ≤ 0.919ns + 1ns であるか。

すなわち 0.468ns ≤ 1.919ns であるか。 Yes

計算:

T clk ≥ 0.5 × (T qfpga,max + T w1 + T dly + T w2 + T clqv + T w3 + T dly + T w4 + T sfpga )

すなわち

T clk ≥ 0.5 × (1.856ns + 1ns + 2.8ns + 1ns + 6ns + 1ns + 2.8ns + 1ns + 0.658ns)

すなわち

T clk ≥ 9.057ns

ホールド要件は満たされています。また、T clk に対する要件により、SPI バス受信の波形およびタイミング バジェットではシステム レベル サンプル デザインの入力クロック サイクル時間が 9.057ns 以上に制限されます。