インテル® FPGA IPの汎用シリアル・フラッシュ・インターフェイスのユーザーガイド

ID 683419
日付 4/10/2023
Public
ドキュメント目次

1.6.4. I/Oピンの制約

インテル® Quartus® Prime ソフトウェアは、汎用シリアル・フラッシュ・インターフェイス Intel® FPGA IP ファイルのI/Oタイミング制約を自動的に生成しません。汎用I/Oピンを使用してSPIピン・インターフェイスを有効にするには、タイミング制約を手動で入力する必要があります。タイミングガイドラインと例に従って、TimingAnalyzerがI/Oタイミングを正しく分析するようにします。

  • 汎用シリアル・フラッシュ・インターフェイス Intel® FPGA IPの入力クロックを制限します 。例:
    #**************************************************************
    # Create Clock
    #**************************************************************
    #constrain the base clock using create_clock, this is typically a clock coming into the device on an input clock pin
    #here, clk_clk is a 10ns clock with a 50 percent duty cycle, where the first rising edge occurs at 0ns applied to port clk_clk 
    create_clock -name {clk_clk} -period 10.000 -waveform { 0.000 5.00 } [get_ports {clk_clk}]
  • タイミング制約を作成して dclk、汎用シリアル・フラッシュ・インターフェイス Intel® FPGA IPからのSPI出力クロックです 。最大SPIクロックは入力クロックの半分です。例:
    #**************************************************************
    # Create Generated Clock
    #**************************************************************
    #constrain the generated clock dclk. The input clock of GSFI IP is used and created a counter logic to generate a slower DCLK that is used as SPI clock  
    #here, we set the maximum dclk, which is half of the input clk_clk
    #refer to the GSFI UG, and you find that the maximum SPI clock baud-rate divisor is 2.
    create_generated_clock -name {dclk_int} -source [get_ports {clk_clk}] -divide_by 2  [get_pins {u0|intel_generic_serial_flash_interface_top_0|intel_generic_serial_flash_interface_top_0|qspi_inf_inst|flash_clk_reg|q}]
    create_generated_clock -name {dclk} -source [get_pins {u0|intel_generic_serial_flash_interface_top_0|intel_generic_serial_flash_interface_top_0|qspi_inf_inst|flash_clk_reg|q}] [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_dclk}]
  • マルチサイクルパスを設定して、入力クロックとSPIクロック間のセットアップとホールドクロックの関係を変更します。例:
    #**************************************************************
    # Set Multicycle Path
    #**************************************************************
    # For a divide by 2 DCLK
    # SPI lactched data on rising edge dclk and FPGA driven data output on rising edge clk_clk
    set_multicycle_path -setup -start -from  [get_clocks {clk_clk}]  -to  [get_clocks {dclk}] 2
    set_multicycle_path -hold -start -from  [get_clocks {clk_clk}]  -to  [get_clocks {dclk}] 1
    # SPI driven data on falling edge of dclk and FPGA latched data on second rising edge of clk_clk
    set_multicycle_path -setup -end -from [get_clocks {dclk}] -to [get_clocks {clk_clk}]  2
    set_multicycle_path -hold -end -from [get_clocks {dclk}] -to [get_clocks {clk_clk}]  1
  • クワッド・シリアル・ペリフェラル・インターフェイス (QSPI) IO ピンの入力および出力遅延を設定します。 例:
    #**************************************************************
    # Set Input Delay
    #**************************************************************
    #$input_delay is determined by Tco values and board parameters (outside of FPGA) 
    #$input_delay max = data_trace_max - clk_trace_min + ext_tco_max
    #$input_delay min = data_trace_min - clk_trace_max + ext_tco_min
    
    set_input_delay -clock { dclk } -max -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[0]}]
    set_input_delay -clock { dclk } -min -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[0]}]
    set_input_delay -clock { dclk } -max -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[1]}]
    set_input_delay -clock { dclk } -min -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[1]}]
    set_input_delay -clock { dclk } -max -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[2]}]
    set_input_delay -clock { dclk } -min -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[2]}]
    set_input_delay -clock { dclk } -max -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[3]}]
    set_input_delay -clock { dclk } -min -clock_fall -add_delay $input_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[3]}]
    #**************************************************************
    # Set Output Delay
    #**************************************************************
    #$output_delay is determined by Th and Tsu values and board parameters (outside of FPGA) 
    #$output_delay max = data_trace_max + Tsu - clk_trace_min
    #$output_delay min = data_trace_min - Th - clk_trace_max
    set_output_delay -clock { dclk } -max -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[0]}]
    set_output_delay -clock { dclk } -min -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[0]}]
    set_output_delay -clock { dclk } -max -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[1]}]
    set_output_delay -clock { dclk } -min -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[1]}]
    set_output_delay -clock { dclk } -max -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[2]}]
    set_output_delay -clock { dclk } -min -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[2]}]
    set_output_delay -clock { dclk } -max -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[3]}]
    set_output_delay -clock { dclk } -min -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_data[3]}]
    set_output_delay -clock { dclk } -max -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_ncs}]
    set_output_delay -clock { dclk } -min -add_delay $output_delay [get_ports {intel_generic_serial_flash_interface_top_0_qspi_pins_ncs}]