FPGA方案
隨著一款產(chǎn)品在研發(fā)階段的日漸成熟,實現(xiàn)的功能也日趨復(fù)雜化和多樣化,對產(chǎn)品功能實現(xiàn)重定義的應(yīng)用需求也在日益加大。產(chǎn)品功能重定義就是在不改動設(shè)備硬件設(shè)計的前提下,通過更改FPGA的程序文件,達到產(chǎn)品功能重定義的方法。
一般的產(chǎn)品在設(shè)計時,研發(fā)會按照產(chǎn)品的定義完成功能代碼的開發(fā),然后用JTAG接口進行燒錄、調(diào)試,但是等產(chǎn)品上線時,所有的固件就會被固化,并且因為JTAG接口過于笨重,我們一般是不保留該接口;所以也無法在產(chǎn)品完成固化后進行重新燒錄進行重定義的操作。
目前也有一些應(yīng)用方案會使用BLE/WIFI SOC+存儲芯片的架構(gòu),BLE/WIFI SOC負責(zé)存儲芯片的讀寫,存儲芯片作為FPGA的程序代碼存儲器,工作時,BLE/WIFI SOC將存儲芯片中的數(shù)據(jù)讀出,并按照特定時序(FPGA加載時序)發(fā)送到FPGA,此過程即為FPGA的數(shù)據(jù)加載流程,如果需要升級功能,通過無線進行遠程OTA升級。而本方案是無需其它芯片參與的情況下通過邏輯設(shè)計和UART口進行產(chǎn)品功能的重定義。
邏輯設(shè)計
本方案的核心就是雙啟動,其中區(qū)域1為固化區(qū)域,此區(qū)域非功能區(qū)域,而是負責(zé)區(qū)域2的管理,其中區(qū)域2為功能區(qū)域,每次的功能重定義就是對區(qū)域2的刷新。區(qū)域2的刷新通過PC和串口調(diào)試助手模擬上位機,傳輸工程的 Bin 文件到 fpga 啟動配置的Flash 中,實現(xiàn)兩個存儲到 flash 程序的跳轉(zhuǎn)完成固件升級操作。
設(shè)置兩個區(qū)域,第一個區(qū)域執(zhí)行程序1,完成對區(qū)域2的管理和升級工作。第二個區(qū)域的程序2是我們用戶設(shè)計的功能程序或者說產(chǎn)品程序。在 FPGA 啟動中, 如果我們不升級區(qū)域 2 的程序,那么自動通過 ICap 接口跳轉(zhuǎn)到區(qū)域2的程序中。 區(qū)域1起始地址 0x0,區(qū)域2起始地址 0x0100000。
在本方案中,設(shè)計區(qū)域1的程序?qū)崿F(xiàn)的功能為:上電后自動加載此程序,此時開始計時如果 20 秒內(nèi)沒有檢測到串口發(fā)送的擦除指令,那么我們啟動 icap 跳轉(zhuǎn),跳轉(zhuǎn)到區(qū)域 2 程序中。
如果希望再次升級的話必須重新給板卡上電使得程序回到區(qū)域1中。
流程圖如下:
頂層結(jié)構(gòu)圖如下:
FPGA uart接收模塊,接收上位機發(fā)送的數(shù)據(jù),并實現(xiàn)波特率為115200的uart協(xié)議的串行數(shù)據(jù)到并行數(shù)據(jù)的轉(zhuǎn)換,將數(shù)據(jù)發(fā)送至flash_ctrl模塊,F(xiàn)lash_ctrl模塊是flash的控制模塊,該模塊自定義了一個簡單的協(xié)議,根據(jù)uart指令來控制flash的擦除、讀、寫,協(xié)議包括三種數(shù)據(jù)包來對應(yīng)相應(yīng)的指令,再將數(shù)據(jù)發(fā)送至對應(yīng)的模塊;而由flash擦除、讀、寫三個模塊處理的數(shù)據(jù)返回后經(jīng)過uart_tx模塊返回上位機,本文中即返回PC機串口模塊。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601238 -
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420879 -
存儲
+關(guān)注
關(guān)注
13文章
4226瀏覽量
85575
原文標題:【技術(shù)分享】基于FPGA的百變設(shè)計方案
文章出處:【微信號:gh_b555ac340b6b,微信公眾號:gh_b555ac340b6b】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論