用户数据的FLASH存储与应用(FPGA架构)

该系列为神经网络硬件加速器应用中涉及的模块接口部分,随手记录,以免时间久了遗忘。

一 背景

       我们知道,在FPGA做神经网络应用加速时,涉及到权重参数的存储和加载。通常在推理过程中,会将权重参数存储在外部DDR或片上SRAM上。但是对于一些大的网络模型,往往片上RAM受限而无法完全保存权重,因此需要将权重放置在外部DDR或者PSRAM等外部存储器中,等具体需要的时候,从片外load进片上,然后计算完丢弃,重新load下一批次权重。

       这里就涉及到,当我们的应用固化后,片外DDR存储器权重加载问题,通常包括集中方法,一是上电后,通过PCIE/UART/SD卡等load进DDR;另一种方法是将权重和FPGA bit文件一并打包存储在FLASH中,上电后,从FLASH中加载至片外DDR,或者直接load进片上SRAM。

       为了简化设计,这里采用第二种方法,将FPGA位流和权重等用户数据打包存入Flash配置芯片中。

二 方案设计

     FPGA:XC7A50T

     配置芯片:MX25L6433F Flash

为了简化设计,这里采用第二种方法,将FPGA位流和权重等用户数据打包存入Flash配置芯片中。

      简单讲就是通过VIVADO的工具,将用户数据和FPGA bit进行打包生成mcs,同时注意需要将用户数据存储在程序空间之外。上电后,通过SPI_Loader将Flash中的用户数据,加载至外部DDR即可。

架构分析:

       SPI接口部分,没有什么新意,和常规读写FLASH一样,用户接口为了方便,直接采用AXI协议进行控制,方便与标准总线互通。

       另外,由于涉及对FLASH读控制操作,需要配置FLASH管脚,需要调用STARTUPE2原语,用于对CCLK进行设置,用于该时钟。

调用方法:

相关推荐

  1. uniapp怎么存储用户登录所有数据

    2024-03-17 17:36:02       40 阅读
  2. 深入挖掘AI应用场景存储架构

    2024-03-17 17:36:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 17:36:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 17:36:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 17:36:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 17:36:02       20 阅读

热门阅读

  1. Spring体系架构

    2024-03-17 17:36:02       20 阅读
  2. 【TypeScript系列】缩小类型范围

    2024-03-17 17:36:02       23 阅读
  3. while 循环语句

    2024-03-17 17:36:02       19 阅读
  4. Elasticsearch(14) match_phrase_prefix的使用

    2024-03-17 17:36:02       18 阅读
  5. 策略模式业务实战

    2024-03-17 17:36:02       24 阅读
  6. MongoDB聚合运算符:$first

    2024-03-17 17:36:02       21 阅读
  7. 11. C++空基类优化

    2024-03-17 17:36:02       18 阅读
  8. 微信小程序睡眠X秒【while循环模式】

    2024-03-17 17:36:02       20 阅读
  9. 安装与配置FTP服务器(超详细)

    2024-03-17 17:36:02       20 阅读
  10. 奇怪需求之奇怪设计

    2024-03-17 17:36:02       17 阅读