当前位置: 首页 > news >正文

用户数据的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进行设置,用于该时钟。

调用方法:

http://www.lryc.cn/news/319908.html

相关文章:

  • Chrome的V8引擎 和操作系统交互介绍
  • Redis:持久化、线程模型、大 key
  • Linux 16个常用脚本(初级)练习
  • 接口测试及接口测试工具【Postman】相关的面试题
  • android 怎么自定义view
  • JavaScript的事件
  • android 简单快速 自定义dialog(简单好用,不需要设置样式)
  • JAVA代理模式梳理
  • 推荐几个线上兼职,每天两小时收入几十到一百
  • excel封装和ddt D17
  • PHP8编译安装
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)
  • 二叉树<II>:二叉树的四种遍历方式代码实现Python3
  • vite ts vue 项目提示 . Projects must list all files or use an include pattern.
  • 鲸鱼优化算法改进风储机组一次调频出力分配系数,以频率偏差最小为目标优化函数,结合鲸鱼算法WOA捕食过程,改进风储出力分配系数simulink与matlab联合
  • C语言经典面试题目(七)
  • 2024华为春招Django面试题大全,最全知识点揭秘,面试必备!
  • 搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象
  • 独立服务器的优势
  • 前端框架vue的样式操作,以及vue提供的属性功能应用实战
  • 【自动化测试】如何在jenkins中搭建allure
  • 2.域控如何强制转移操作主机角色?使用命令如何强制转移域控的操作角色?
  • C# event的使用
  • 外包干了9天,技术退步明显。。。。。
  • Android Framework 之 Python
  • 【Fitten Code】“吊打“Github Copilot的国内免费代码辅助插件
  • Git中的换行符CRLF和LF问题
  • go语言文件操作
  • 七月论文审稿GPT第3.2版和第3.5版:通过paper-review数据集分别微调Mistral、gemma
  • QML 自定义时间编辑控件