Z6尊龙凯时

【技术分享】基于FPGA的百变设计方案

日期:2021-10-19 作者:Z6尊龙凯时科技创研社 返回列表 Z6·尊龙凯时「中国区」官方网站 Z6·尊龙凯时「中国区」官方网站

FPGA方案


随着一款产品在研发阶段的日渐成熟 ,实现的功能也日趋复杂化和多样化 ,对产品功能实现重定义的应用需求也在日益加大。产品功能重定义就是在不改动设备硬件设计的前提下 ,通过更改FPGA的程序文件 ,达到产品功能重定义的方法。

一般的产品在设计时 ,研发会按照产品的定义完成功能代码的开发 ,然后用JTAG接口进行烧录、调试 ,但是等产品上线时 ,所有的固件就会被固化 ,并且因为JTAG接口过于笨重 ,我们一般是不保留该接口;所以也无法在产品完成固化后进行重新烧录进行重定义的操作。

目前也有一些应用方案会使用BLE/WIFI SOC+存储芯片的架构 ,BLE/WIFI SOC负责存储芯片的读写 ,存储芯片作为FPGA的程序代码存储器 ,工作时 ,BLE/WIFI SOC将存储芯片中的数据读出 ,并按照特定时序(FPGA加载时序)发送到FPGA ,此过程即为FPGA的数据加载流程 ,如果需要升级功能 ,通过无线进行远程OTA升级。而本方案是无需其它芯片参与的情况下通过逻辑设计和UART口进行产品功能的重定义。


逻辑设计


本方案的核心就是双启动 ,其中区域1为固化区域 ,此区域非功能区域 ,而是负责区域2的管理 ,其中区域2为功能区域 ,每次的功能重定义就是对区域2的刷新。区域2的刷新通过PC和串口调试助手模拟上位机 ,传输工程的 Bin 文件到 fpga 启动配置的Flash 中 ,实现两个存储到 flash 程序的跳转完成固件升级操作。

3-02.png

设置两个区域 ,第一个区域执行程序1 ,完成对区域2的管理和升级工作。第二个区域的程序2是我们用户设计的功能程序或者说产品程序。在 FPGA 启动中 , 如果我们不升级区域 2 的程序 ,那么自动通过 ICap 接口跳转到区域2的程序中。 区域1起始地址 0x0 ,区域2起始地址 0x0100000。

在本方案中 ,设计区域1的程序实现的功能为:上电后自动加载此程序 ,此时开始计时如果 20 秒内没有检测到串口发送的擦除指令 ,那么我们启动 icap 跳转 ,跳转到区域 2 程序中。

如果希望再次升级的话必须重新给板卡上电使得程序回到区域1中。


流程图如下:

2-02.png


顶层结构图如下:

图表-02.png


FPGA uart接收? ,接收上位机发送的数据 ,并实现波特率为115200的uart协议的串行数据到并行数据的转换 ,将数据发送至flash_ctrl? ,Flash_ctrl?槭莊lash的控制? ,该?樽远ㄒ辶艘桓黾虻サ男 ,根据uart指令来控制flash的擦除、读、写 ,协议包括三种数据包来对应相应的指令 ,再将数据发送至对应的?;而由flash擦除、读、写三个?榇淼氖莘祷睾缶齯art_tx?榉祷厣衔换 ,本文中即返回PC机串口?。

返回列表
【网站地图】