解析FPGA从SPI Flash启动配置数据时的地址问题

时间:2025-07-26  作者:Diven  阅读:0

FPGA上电(Master)

解析FPGA从SPI Flash启动配置数据时的地址问题

fpga 上电时,默认是从 flash 的 0x00 地址开始读数据。如 UG470 文档 page144 描述

fpga 会从 0 开始读,地址不断自增,直到读取到有效的同步字 sync word(0xAA995566),才认为接下来的内容是一个有效的 bin 文件内容的开始。读到有效 sync word 后不会再继续读搜寻其 bin 文件。如 UG470 文档 page81 描述:

几种情况

只有一个 bit 文件,使用如下命令将该 bit 文件写出转换为 mcs 文件,并烧入 spi flash 中。

该 bit 文件在 flash 中存放的起始地址是 0x400000 ,上电 fpga 能正常启动,因为前部分的地址 0x000000-0x400000 之间都是无效数据, fpga 从 0x000000 地址开始读,没有有效的 sync word ,读地址不断增加,直到 0x400000 地址才会读到同步字,然后就能正常的从 0x400000 开始配置。

有两个 bit 文件,使用该命令转换为一个 mcs 文件

第一个 bit 文件放在 0x000000 地址,第二个放在 0x400000 地址,烧写 flash ,上电后 fpga 从 deign1.bit 启动,因为第一个 bit 在前面, fpga 上电后从 0x000000 地址开始读,会先读到 deign1.bit ,然后成功地从deign1.bit 初始化。

若把 mcs 文件中关于 deign1.bit 的 FDRI data 的内容手动改为其值,使得配置的时候会出现 CRC 校验错误, deign2.bit 相关的内容不变,烧写进flash,上电, FPGA 无法正常配置数据,既不会从deign1.bit启动,也不能从deign2.bit 启动,这是因为第一个bit在前面, fpga 上电后从 0x000000 地址开始读,会先读到 deign1.bit ,然后从 deign1.bit 开始初始化,但是会发生CRC错误,然后又fallback 回 0 地址读,依然是读到 design1.bit 的数据,还是 CRC 错误,最后发生配置失败。

若只把 mcs 文件中关于 deign1.bit 的 sync word 的内容手动改为其值,比如 0xAA997866 ,deign2.bit 相关的内容不变,烧写进 flash 上电, FPGA 成功从 deign2.bit 启动。这是因为第一个 bit 在前面, fpga 上电后从0x000000 地址开始读,读到 deign1.bit 的 sync word 为 0xAA997866 时,发现不是有效的 sync word ,不会判断接下来的内容是属于一个有效的配置文件,于是继续自增地址往上读,直到读到 0x400000 地址后面,成功读到 design2.bit 的 sync word ,发现有效,然后从 deign2.bit 开始初始化。这样就跳过了前面 deign1.bit 的内容。

bitstream 约束

对bit流进行压缩

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 

打开看门狗功能

set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design] 

如果加载 Update_Image 配置文件失败后,没有返回加载 Golden_Image ,则会根据指定的时间启动看门狗,强制返回加载 Golden_Image 。

生成 bit 文件的头部添加 IPROG 命令和设置 WBSTAR 的命令

set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x0400000 [current_design]

配置时执行到 IPROG 命令后,会直接跳转到指定的地址中继续执行配置。可用于 Golden_Image 中设置为跳转到 Update_Image 启动。其实加不加这个约束,生成的bit流中的头部,都会有 IPROG 和设置 WBSTAR 的相关命令的占位空间,只是不加该约束时, IPROG 的位置会由 000000 替代, NOP 指令,只是空的占位符;而写 WBSTAR 寄存器的指令依然存在,但是写 WBSTAR 的值却是 0 。


审核编辑:刘清

猜您喜欢

电阻器作为电子元器件中的重要组成部分,其质量和性能直接影响整个系统的稳定性和可靠性。在众多电阻品牌中,LIZ(丽智)铝壳电阻因其优良的品质和很好的性能,受到了关...
2017-12-19 12:19:30

贴片电阻计算器是一款专为电子工程师、爱好者和学生设计的便捷工具,它能帮助你快速解码贴片电阻上的色环或数字标识,并计算出其阻值。无需查阅复杂的阻值表,只需轻松输入...
2024-11-26 11:29:42


采样电阻作为关键组件,其性能直接影响整个电路系统的稳定性和精确度。台庆(TAI-TECH),作为业界知名的电子元件制造商,其采样电阻产品凭借很好的性能和一系列独...
2015-12-26 00:39:15

SOP7(StandardOperatingProcedure7)是一种标准操作程序,广泛应用于各个行业,尤其是在医疗、制药、食品加工等领域。它为组织提供了一套...
2025-02-24 13:26:24

贴片电阻的绿色和黑色外壳主要区别在于材质和生产工艺,对电阻本身的性能影响微乎其微。选择哪种颜色更多取决于制造商的习惯和库存,而不是性能上的优劣。一般来说,黑色贴...
2024-11-29 10:26:12

快速查找贴片电阻阻值,就用贴片电阻对照表!这款免费中文版软件提供便捷的阻值换算和查询功能,无需繁琐计算,轻松识别表面贴装电阻。软件内置完整数据库,涵盖常用贴片电...
2024-11-29 10:25:52


贴片电阻上的18y标记代表其阻值为470欧姆,误差为±0.05% (y代码)。贴片电阻通常使用三位数代码标注阻值。前两位数字表示有效数字,第三位数字表示10的幂...
2024-11-29 10:25:49

发光二极管(LED)是应用于照明、显示和指示灯等领域的电子元件。由于其节能、长寿命和小型化的特性,LED已逐渐取代传统的光源。在实际应用中,许多人可能会因为不熟...
2025-04-01 16:30:02