以下文章來源于OpenFPGA,作者碎碎思
TinyFPGA-Bootloader:FPGA 上的開源 USB 引導(dǎo)加載器解決方案
在 FPGA 設(shè)計(jì)中,一個(gè)常見但略顯繁瑣的環(huán)節(jié)是:如何方便地將新的比特流加載到 FPGA。尤其是在沒有專用 USB-JTAG/編程芯片或者在低成本板卡中,傳統(tǒng)的編程方式可能需要額外硬件或較復(fù)雜流程。
而 TinyFPGA?Bootloader 項(xiàng)目正是為了解決這個(gè)痛點(diǎn)——它是一個(gè) 開源的 USB 引導(dǎo)加載器(bootloader)IP,可直接在 FPGA 的可編程邏輯中實(shí)現(xiàn),從而以 USB 虛擬串口的形式向 SPI Flash 編程上傳比特流。
項(xiàng)目簡介
名稱:TinyFPGA-Bootloader
開源地址:GitHub(由 TinyFPGA 組織維護(hù))
https://github.com/tinyfpga/TinyFPGA-Bootloader
許可證:Apache-2.0
功能:通過 USB 虛擬串口(USB CDC)將主機(jī)側(cè)的命令發(fā)送至 FPGA 內(nèi)部的 bootloader,再由 bootloader 內(nèi)部橋接至 SPI Flash,從而完成 FPGA 配置或用戶鏡像加載。
硬件需求示例:

FPGA 板卡需具備 USB_P、USB_N 3.3 V 信號(hào)。

板卡需有產(chǎn)生穩(wěn)定 48 MHz 時(shí)鐘的振蕩器 + PLL。
FPGA 配置需來源于外部 SPI Flash。
USB_P 信號(hào)連接上拉電阻(1.5 kΩ)并建議通過 usb_pu 信號(hào)控制。

建議支持多鏡像啟動(dòng)(bootloader + 用戶鏡像)結(jié)構(gòu)。
核心特點(diǎn)
● 無需額外 USB 轉(zhuǎn) SPI 芯片
由于 bootloader 完全在 FPGA 內(nèi)部邏輯實(shí)現(xiàn),板卡可以省去專用 USB 編程芯片,從而降低成本、簡化硬件設(shè)計(jì)。
● 使用熟悉的串口方式編程
主機(jī)將 FPGA 識(shí)別為“虛擬串口設(shè)備”,用戶通過簡單的命令即可觸發(fā) bootloader 功能,降低入門門檻。
● 支持用戶鏡像 + bootloader 鏡像分區(qū)
該設(shè)計(jì)支持多鏡像結(jié)構(gòu):bootloader 位于 SPI Flash 的專用區(qū)域,用戶配置位于另一鏡像區(qū),bootloader 在啟動(dòng)后可跳轉(zhuǎn)至用戶鏡像,或執(zhí)行更新機(jī)制。
● 板卡元數(shù)據(jù)存儲(chǔ)機(jī)制
SPI Flash 的安全寄存器頁可用于存儲(chǔ)諸如板卡名稱、FPGA 型號(hào)、硬件版本、序列號(hào)、地址映射等元數(shù)據(jù),便于通用軟件識(shí)別板卡并自動(dòng)執(zhí)行編程。元數(shù)據(jù)采用 JSON 格式,清晰易讀。
● SPI Flash 編程協(xié)議公開
bootloader 支持通過 “Access SPI” 命令在 USB 虛擬串口上執(zhí)行任意 SPI Flash 訪問操作(寫、讀、擦除等)。設(shè)計(jì)者可以查看 README 文檔中的完整協(xié)議描述。
例程
該項(xiàng)目中有幾款開發(fā)板的例程,核心還是自家制作的Tiny系列開發(fā)板:

當(dāng)然也有針對(duì)Xilinx A7系列入門開發(fā)板例程:

打開后即可查看相關(guān)DEMO:

注意:Vivado版本2017
適用場(chǎng)景

低成本 FPGA板卡:希望減少外部編程芯片、簡化 USB 接口設(shè)計(jì)。
FPGA 教學(xué) / 原型開發(fā):快速將新鏡像下載至板卡,在實(shí)驗(yàn)室或教學(xué)環(huán)境中尤為便利。
可編程系統(tǒng) / 多鏡像方案:支持 bootloader + 用戶鏡像結(jié)構(gòu),適合需要遠(yuǎn)程更新或 EEPROM 風(fēng)格的機(jī)制。
硬件開發(fā)者希望精簡流程:將編程流程簡化為“插 USB → 虛擬串口 → 下載鏡像”,提升工程效率。
使用建議 &注意事項(xiàng)
在使用前請(qǐng)確認(rèn)板卡 USB_P/N 信號(hào)設(shè)計(jì)正確、上拉電阻接入、“usb_pu”控制是否支持。
必須保證 FPGA 時(shí)鐘系統(tǒng)能產(chǎn)生準(zhǔn)確穩(wěn)定的 48 MHz 給 USB 棧,否則可能導(dǎo)致 USB 連接不可靠。
設(shè)計(jì) SPI Flash 容量時(shí)建議考慮“多鏡像 + 用戶數(shù)據(jù)”結(jié)構(gòu),需要預(yù)留足夠空間。
雖然 bootloader 功能強(qiáng)大,但安全機(jī)制(如加密鏡像、鏡像簽名、保護(hù)區(qū))需由用戶自行實(shí)現(xiàn)。
若需將該 bootloader 集成至大型 FPGA/SoC 項(xiàng)目,請(qǐng)?jiān)u估板卡資源占用、邏輯干擾和時(shí)序影響。
總結(jié)
TinyFPGA-Bootloader 是一個(gè)非常實(shí)用、工程友好、開源可信的解決方案,適合在 FPGA 板卡設(shè)計(jì)中快速實(shí)現(xiàn) USB 引導(dǎo)加載功能。它不僅降低了硬件復(fù)雜性,也顯著簡化了鏡像下載、更新與板卡上板流程。這對(duì)于教學(xué)、原型開發(fā)、板卡小批量生產(chǎn)都是一個(gè)極佳選擇。
注意大bit流的下載時(shí)間~
倉庫地址
https://github.com/tinyfpga/TinyFPGA-Bootloader
-
FPGA
+關(guān)注
關(guān)注
1656文章
22317瀏覽量
631047 -
開源
+關(guān)注
關(guān)注
3文章
4056瀏覽量
45649 -
比特流
+關(guān)注
關(guān)注
0文章
11瀏覽量
8377 -
GitHub
+關(guān)注
關(guān)注
3文章
486瀏覽量
18446
原文標(biāo)題:不用 JTAG 也能刷 FPGA:TinyFPGA-Bootloader 讓比特流加載更簡單
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
了解FPGA比特流結(jié)構(gòu)
如何使用IMPACT在FPGA xilinx中下載比特流
中途向ICAP中止寫入部分比特流
怎么在我的比特流中攻擊BRAM
如何集成Pynq FPGA教程或與Pynq通信?
無法在spi flash中加載比特流
怎么將Microblaze processsor比特串文件下載到FPGA中?
怎么在Virtex-7 FPGA上下載比特流?
請(qǐng)問如何在沒有靜態(tài)路由的情況下生成部分比特流?
是否需要在flash上??切換黃金比特流和多重比特流的位置?
使用IMPACT(ISE)將比特流下載到Zynq設(shè)備中而無需啟動(dòng)ARM?
Zynq開發(fā)板FPGA比特流文件下載方式
使用加密和身份驗(yàn)證來保護(hù)UltraScale/UltraScale+ FPGA比特流
使用加密保護(hù)7系列FPGA比特流
一文了解FPGA比特流的內(nèi)部結(jié)構(gòu)

使用TinyFPGA-Bootloader將比特流加載到FPGA
評(píng)論