0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx FPGA从spi flash启动配置数据时的地址问题

OpenFPGA 来源: 瓜大三哥 2023-11-29 09:20 次阅读

FPGA上电(Master)

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

6cfa7f00-8e4f-11ee-939d-92fbcf53809c.png

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

6d146406-8e4f-11ee-939d-92fbcf53809c.png

几种情况

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

write_cfgmem-formatmcs-interfacespix4-size8-loadbit{up
0x400000./soc_top.bit}-filesoc_top_0x400000.mcs-force

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

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

write_cfgmem-formatmcs-interfacespix4-size8-loadbit{up0x000000./design1.bit
up0x400000./design2.bit}-filemixed.mcs-force

第一个 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_propertyBITSTREAM.GENERAL.COMPRESSTRUE[current_design]

打开看门狗功能

set_propertyBITSTREAM.CONFIG.CONFIGFALLBACKENABLE[current_design]

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

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

set_propertyBITSTREAM.CONFIG.NEXT_CONFIG_ADDR0x0400000[current_design]

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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601666
  • FlaSh
    +关注

    关注

    10

    文章

    1621

    浏览量

    147735
  • Xilinx
    +关注

    关注

    71

    文章

    2163

    浏览量

    120971
  • 文件
    +关注

    关注

    1

    文章

    561

    浏览量

    24692
  • 命令
    +关注

    关注

    5

    文章

    678

    浏览量

    21981

原文标题:Xilinx FPGA 从spi flash启动配置数据时的地址问题

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于SPI FLASHFPGA多重配置

    通过FPGA的多重配置可以有效地精简控制结构的设计,同时可以用逻辑资源较少的FPGA器件实现需要很大资源才能实现的程序。以Virtex5系列开发板和配置存储器
    发表于 01-24 14:17 1.5w次阅读
    基于<b class='flag-5'>SPI</b> <b class='flag-5'>FLASH</b>的<b class='flag-5'>FPGA</b>多重<b class='flag-5'>配置</b>

    解析FPGASPI Flash启动配置数据时的地址问题

    fpga 上电时,默认是 flash 的 0x00 地址开始读数据
    发表于 07-15 09:03 3785次阅读
    解析<b class='flag-5'>FPGA</b><b class='flag-5'>从</b><b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b><b class='flag-5'>启动</b><b class='flag-5'>配置</b><b class='flag-5'>数据</b>时的<b class='flag-5'>地址</b>问题

    怎样SPI FLASH加载FPGA程序

    二进制码通过I2C存储到FPGA中?2.通过SPI总线SPI FLASH中读取程序后,FPGA
    发表于 04-29 14:46

    FX3SPI启动配置FPGA如何分离SPI闪存

    我想在同一个SPI闪存中存储多个FX3固件和一个FPGA比特流。我想选择哪个固件要加载。FX3应该SPI引导,然后允许FPGA
    发表于 11-29 11:50

    怎么使用SPI闪存启动选项实现FPGA配置文件的故障安全升级?

    Flash来存储我的FPGA配置数据。XAPP058中描述的方法是否可以用于故障安全升级,因为XCF32P只允许XC6SLX100的一个配置
    发表于 05-30 10:05

    FX3SPI启动配置FPGA

    您好!我想把FX3固件和FPGA比特流存储在同一个SPI闪存中。然后,FX3应该SPI启动,然后允许F
    发表于 06-19 11:50

    在BPI快速模式下配置FPGA无法Flash启动的解决办法?

    和CFGBVS参数并向Bank14添加一个IOSTANDARD声明。将MCS文件编程到FlashFPGA无法Flash启动。使用.bit
    发表于 06-04 12:45

    如何确定SPI FlashFPGA配置的大小

    伙计们,我的电路板提供了在FPGA处于硬复位状态时读取SPI闪存的能力(这种能力独立于FPGA;可以说是“侧读”)。假设我有一个具有有效FPGA配置
    发表于 06-09 13:28

    可以Virtex 6控制Xilinx Platform Flash XL?

    可以使用Impact实际编写与Virtex 6的FlashAG JTAG连接。闪存加载的设计在电源启动时可以正常工作。但是我们的问题是在配置完成后
    发表于 06-16 16:52

    使用高速SPI Nor FlashFPGA配置

    NOR闪存广泛用作FPGA配置设备。FPGA在工业和通信及汽车ADAS应用中的使用取决于NOR Flash的低延迟和高数据吞吐量特性。快速
    发表于 09-18 15:18

    SPI方式FPGA配置SPI flash编程

    SPI方式FPGA配置SPI flash编程
    发表于 05-16 18:01 165次下载
    <b class='flag-5'>SPI</b>方式<b class='flag-5'>FPGA</b><b class='flag-5'>配置</b>和<b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>编程

    Xilinx7系列基于PCIe的设计如何满足PCIe启动时间的要求

    /SlaveSerial是Xilinx早期的FPGA两类配置模式,SPI配置模式为SPI接口允许
    发表于 02-07 20:55 3459次阅读
    <b class='flag-5'>Xilinx</b>7系列基于PCIe的设计如何满足PCIe<b class='flag-5'>启动</b>时间的要求

    FPGA配置– 使用JTAG是如何烧写SPI/BPI Flash的?

    Xilinx的JTAG电缆可以通过FPGA“直接”烧写SPI/BPI。很多对xilinx开发环境不熟悉的用户,如果第一次接触这种烧写模式可能会有疑惑,
    发表于 02-08 02:40 8071次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>配置</b>– 使用JTAG是如何烧写<b class='flag-5'>SPI</b>/BPI <b class='flag-5'>Flash</b>的?

    基于FPGASPI Flash 控制器设计及验证

    现场可编程门阵列FPGA 常常进行大数据量的处理,数据的存储便成了问题,利用SPI Flash 大容量、读写速度快、成本低廉以及
    发表于 11-22 08:47 1.3w次阅读
    基于<b class='flag-5'>FPGA</b> 的<b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b> 控制器设计及验证

    采用Xilinx FPGA的AFE79xx SPI启动指南

    电子发烧友网站提供《采用Xilinx FPGA的AFE79xx SPI启动指南.pdf》资料免费下载
    发表于 11-15 15:28 0次下载
    采用<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的AFE79xx <b class='flag-5'>SPI</b><b class='flag-5'>启动</b>指南