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 程序的跳转完成固件升级操作。。。。。

设置两个区域,,,,,,第一个区域执行程序1,,,,,,完成对区域2的治理和升级事情。。。。。第二个区域的程序2是我们用户设计的功效程序或者说产品程序。。。。。在 FPGA 启动中,,,,,, 若是我们不升级区域 2 的程序,,,,,,那么自动通过 ICap 接口跳转到区域2的程序中。。。。。 区域1起始地点 0x0,,,,,,区域2起始地点 0x0100000。。。。。
在本计划中,,,,,,设计区域1的程序实现的功效为:上电后自动加载此程序,,,,,,此时最先计时若是 20 秒内没有检测到串口发送的擦除指令,,,,,,那么我们启动 icap 跳转,,,,,,跳转到区域 2 程序中。。。。。
若是希望再次升级的话必需重新给板卡上电使得程序回到区域1中。。。。。
流程图如下:

顶层结构图如下:

FPGA uart吸收??????椋,,,,,吸收上位机发送的数据,,,,,,并实现波特率为115200的uart协议的串行数据到并行数据的转换,,,,,,将数据发送至flash_ctrl??????椋,,,,,Flash_ctrl??????槭莊lash的控制??????椋,,,,,该??????樽越缢盗艘桓黾蚱拥男椋,,,,,凭证uart指令来控制flash的擦除、读、写,,,,,,协议包括三种数据包来对应响应的指令,,,,,,再将数据发送至对应的??????椋;;;;而由flash擦除、读、写三个??????榇χ贸头5氖莘祷睾缶蓇art_tx??????榉祷厣衔换,,,,,本文中即返回PC机串口??????。。。。。