在 Vivado 中,set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design] 命令用于设置 FPGA 配置 SPI Flash 时的时钟采样边沿。以下是详细说明:
一、命令语法
set_property BITSTREAM.CONFIG.SPI_FALL_EDGE <value> [current_design]
二、SPI_FALL_EDGE 可选值
| Value | 描述 | 时钟采样边沿 | 默认值 |
|---|---|---|---|
| YES | 下降沿采样 | 时钟下降沿采样数据 | 通常为 NO |
| NO | 上升沿采样 | 时钟上升沿采样数据 | 大多数器件 |
三、使用方法
1. 在 XDC 约束文件中(推荐)
# constraints.xdc # 下降沿采样 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] # 或上升沿采样(默认) set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design]
2. 完整的 SPI 时序配置
# 下降沿采样配置 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design] # 或上升沿采样配置 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 2 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]
3. 在 Tcl 控制台中使用
# 设置下降沿采样 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] # 验证设置 get_property BITSTREAM.CONFIG.SPI_FALL_EDGE [current_design]
四、时钟边沿示意图
1. 上升沿采样 (SPI_FALL_EDGE = NO)
CLK ───┐ ┌───┐ ┌───┐ ┌───
└───┘ └───┘ └───┘
DATA ──────║═══║═══║═══║═══║═══
↑ ↑ ↑ ↑ ↑
采样点 采样点 采样点
2. 下降沿采样 (SPI_FALL_EDGE = YES)
CLK ───┐ ┌───┐ ┌───┐ ┌───
└───┘ └───┘ └───┘
DATA ──────║═══║═══║═══║═══║═══
↑ ↑ ↑ ↑ ↑
采样点 采样点 采样点
五、与不同 SPI 模式的配合
1. 单线 SPI 模式
# 标准单线SPI - 通常上升沿采样 set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design] set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
2. 双线/四线 SPI 模式
# 高速Dual/Quad SPI - 常使用下降沿采样 set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 66 [current_design] set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]
六、不同 Flash 厂商的推荐设置
1. Winbond/Spansion Flash
# 通常支持两种边沿,推荐下降沿 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
2. Micron Flash
# 可能需要特定模式,参考数据手册 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 2 [current_design]
3. Macronix Flash
# 通常兼容性好,两种边沿都支持 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
七、验证配置的方法
1. 检查属性设置
# 查看SPI_FALL_EDGE设置 get_property BITSTREAM.CONFIG.SPI_FALL_EDGE [current_design] # 查看所有SPI配置 report_property [current_design] | findstr BITSTREAM.CONFIG.SPI
2. 生成配置报告
# 生成比特流 write_bitstream -force design.bit # 查看配置摘要 report_config_timing -file config_report.rpt
八、调试和故障排除
1. 配置失败时的调试步骤
# 尝试切换时钟边沿 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] # 或 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design] # 降低频率配合测试 set_property BITSTREAM.CONFIG.CONFIGRATE 25 [current_design]
2. 完整的调试配置
# 保守配置 - 最高兼容性 set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design] set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 10 [current_design] # 如果失败,尝试另一种边沿 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design]
九、相关属性说明
| 属性 | 描述 | 与 SPI_FALL_EDGE 的关系 |
|---|---|---|
SPI_BUSWIDTH | SPI 数据位宽 | 影响时序要求 |
CONFIGRATE | 配置时钟频率 | 高频时边沿选择更关键 |
SPI_32BIT_ADDR | 地址模式 | 独立于时钟边沿 |
十、重要注意事项
-
Flash 数据手册:必须参考具体 SPI Flash 的数据手册
-
信号完整性:下降沿采样可能对信号质量要求更高
-
PCB 布线:长走线可能影响最佳采样边沿选择
-
默认行为:大多数情况下使用默认值(NO)即可工作
十一、最佳实践建议
# 新设计开始时使用保守设置 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE NO [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 25 [current_design] # 验证稳定后优化性能 set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 66 [current_design]
SPI_FALL_EDGE 设置主要影响 FPGA 与 SPI Flash 之间的时序关系,正确的设置可以显著提高配置的可靠性。
Vivado中SPI采样边沿设置
1万+

被折叠的 条评论
为什么被折叠?



