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

时间:2025-05-02  作者: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 。


审核编辑:刘清

猜您喜欢

控制雪崩二极管(Zener Diode)是特殊的半导体器件,应用于电路中以实现电压稳压和过压保护。与普通二极管不同,控制雪崩二极管在其反向击穿区工作,能够稳定输...
2025-03-31 02:31:38

你有没有想过,为什么家用电器越来越高效节能了?这其中,PFC 电路功不可没!就像一位隐形的电力卫士,默默守护着我们电力的稳定使用。PFC 电路是什么?PFC,全...
2024-05-17 00:00:00

精密电阻作为电子元器件中的重要组成部分,其性能和规格直接影响到电子设备的稳定性和精准度。作为国内领先的电子元件制造企业,FH(风华高科)在精密电阻领域拥有丰富的...
2014-08-30 16:13:30

贴片电阻一盘的数量并非固定,通常取决于电阻的尺寸、封装类型以及制造商的包装标准。常见贴片电阻的包装方式有卷盘包装(reel packaging)和散装包装。卷盘...
2024-11-26 11:30:01

简称CCTC)作为中国领先的电子元器件制造企业,旗下拥有多个精密电阻品牌,应用于电子、通信、汽车、医疗等多个领域。本文将详细介绍三环集团旗下的主要精密电阻品牌及...
2014-09-10 16:24:30

交通标识在我们的日常生活中是非常重要的配件,应用于多个领域。在城市交通管理中,交通标识帮助驾驶员和行人识别道路情况,确保安全通行。例如,限速标志、停车标志和人行...
2012-05-29 00:00:00

引言西安某汽车电子有限公司生产的XLM油泵支架产 品功能测试台设计中,有一项针对高度阻值(TSG)的 功能测试。该测试内容要求阻值电压采样与液位高度进 行一一...
2020-07-14 16:36:00

球阀是应用于工业和民用领域的重要阀门,其主要作用是控制流体的流动。球阀的核心部件是一个圆形的阀球,通过旋转来开启或关闭流体通道。当阀球与阀体的孔对齐时,流体可以...
2010-11-05 00:00:00

LED 灯凭借其节能环保和超长寿命的特点,已经走进了千家万户。然而,即使是寿命最长的 LED 灯,其驱动器也可能出现故障,需要更换。别担心,更换 LED 灯驱动...
2024-10-25 00:00:00

在选择存储产品时,了解其参数非常重要。存储容量是一个关键指标,通常以GB或TB为单位,用户需根据自身需求选择合适的容量。读写速度直接影响数据传输效率,通常以MB...
2017-08-22 00:00:00