文章 ID: 000074881 内容类型: 故障排除 上次审核日期: 2021 年 08 月 27 日

在并行闪存加载英特尔® FPGA IP内核中,fpga_dclk与fpga_data之间应该使用哪些时序限制?

环境

    英特尔® Quartus® Prime Pro Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
说明

在使用并行闪存加载器英特尔® FPGA IP时,fpga_data和fpga_dclk的时序限制在并行闪存加载器 英特尔® FPGA IP 内核用户指南 中描述了限制 PFL 时序。 但是,文档版本 2019.02.19 及更早版本中的限制并不正确。

解决方法

要正确约束fpga_data和fpga_dclk的计时,可根据输入时钟和 DCLK 输出之间的比使用以下时序限制之一。

[ 当输入时钟和 DCLK 输出比率 = 1 ]
# 创建时钟
create_clock -name {pfl_clk} -period -波形 { 0.000 /2 } [get_ports {pfl_clk}]
# 创建生成的时钟
create_generated_clock -name {fpga_dclk} -source [get_ports {pfl_clk}]-master_clock {pfl_clk} -invert [get_ports {fpga_dclk}]
# 设置输出延迟
set_output_delay -add_delay -max-clock [get_clocks {fpga_dclk}] [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk}] [get_ports {fpga_data*}]

[ 当输入时钟和 DCLK 输出比> 1 ]
# 创建时钟
create_clock -name {pfl_clk} -period -波形 { 0.000 /2 } [get_ports {pfl_clk}]
# 创建生成的时钟
create_generated_clock -name {} -source [get_ports {pfl_clk}] -divide_by -master_clock {pfl_clk} [get_registers {} ]
create_generated_clock -name {} -source [get_registers {}] - master_clock DCLK 寄存器输出} [get_ports {fpga_dclk}]
# 设置输出延迟
set_output_delay -add_delay -max-clock [get_clocks {< DCLK 名称>}] -reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {< DCLK 的clock 名称>}]-reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
# 设置多周期路径
set_multicycle_path -setup -start-从 [get_clocks {pfl_clk}]-到 [get_clocks {}] /2
set_multicycle_path -hold-start-从 [get_clocks {pfl_clk}]-到 [get_clocks {}] -1

 

• 在此示例中,使用了 PFL 英特尔 FPGA IP core 的端口名称。
• DCLK 寄存器是一种除pfl_clk的寄存器。寄存器名称通常为"fpga_dclk_reg"。您可以使用 Technology Map Viewer 工具从fpga_dclk端口跟踪源目的地来查找寄存器。
• 英特尔建议使用时序分析器 GUI 来验证这些系列。

 

[示例]

• 条件
o pfl_clk周期 = 20 纳米 (50MHz)
输入时钟和 DCLK 输出之间的 o 比 = 2

• 时序限制

# 创建时钟
create_clock -name {pfl_clk} -period 20.000 -waveform { 0.000 10.000 } [get_ports {pfl_clk}]
# 创建生成的时钟
create_generated_clock -name {fpga_dclk_gen} -source [get_ports {pfl_clk}]-divide_by 2 -master_clock {pfl_clk} [get_registers {pfl:inst|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}]
create_generated_clock -name {fpga_dclk_pin} -source [get_registers {pfl_top:pfl_top_inst|altera_parallel_flash_loader:parallel_flash_loader_0|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}] -master_clock {fpga_dclk_gen} [get_ports {fpga_dclk}]
# 设置输出延迟
set_output_delay -add_delay -max-clock [get_clocks {fpga_dclk_gen}]-reference_pin [get_ports {fpga_dclk}] 5.500 [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk_gen}]-reference_pin [get_ports {fpga_dclk}] -1.000 [get_ports {fpga_data*}]
# 设置多周期路径
set_multicycle_path -setup-start-从 [get_clocks {pfl_clk}] - 到 [get_clocks {fpga_dclk_pin}] 1
set_multicycle_path -hold-start-从 [get_clocks {pfl_clk}]-到 [get_clocks {fpga_dclk_pin}] 1

相关产品

本文适用于 4 产品

英特尔® Cyclone®
英特尔® Stratix®
英特尔® Arria®
英特尔® MAX® CPLD 和 FPGA

1

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。