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擦除、读、写三个?????榇χ玫氖莘祷睾缶齯art_tx?????榉祷厣衔换,,,,,,本文中即返回PC机串口?????椤!!。。。。