不用 JTAG 也能刷 FPGA:TinyFPGA-Bootloader 让比特流加载更简单

TinyFPGA-Bootloader:FPGA 上的开源 USB 引导加载器解决方案

在 FPGA 设计中,一个常见但略显繁琐的环节是:如何方便地将新的比特流加载到 FPGA。尤其是在没有专用 USB-JTAG/编程芯片或者在低成本板卡中,传统的编程方式可能需要额外硬件或较复杂流程。

而 TinyFPGA‑Bootloader 项目正是为了解决这个痛点------它是一个 开源的 USB 引导加载器(bootloader)IP,可直接在 FPGA 的可编程逻辑中实现,从而以 USB 虚拟串口的形式向 SPI Flash 编程上传比特流。

项目简介

名称:TinyFPGA-Bootloader

开源地址:GitHub(由 TinyFPGA 组织维护)

https://github.com/tinyfpga/TinyFPGA-Bootloader

许可证:Apache-2.0

功能:通过 USB 虚拟串口(USB CDC)将主机侧的命令发送至 FPGA 内部的 bootloader,再由 bootloader 内部桥接至 SPI Flash,从而完成 FPGA 配置或用户镜像加载。

硬件需求示例:

  • FPGA 板卡需具备 USB_P、USB_N 3.3 V 信号。
  • 板卡需有产生稳定 48 MHz 时钟的振荡器 + PLL。

  • FPGA 配置需来源于外部 SPI Flash。

  • USB_P 信号连接上拉电阻(1.5 kΩ)并建议通过 usb_pu 信号控制。

  • 建议支持多镜像启动(bootloader + 用户镜像)结构。

核心特点

● 无需额外 USB 转 SPI 芯片

由于 bootloader 完全在 FPGA 内部逻辑实现,板卡可以省去专用 USB 编程芯片,从而降低成本、简化硬件设计。

● 使用熟悉的串口方式编程

主机将 FPGA 识别为"虚拟串口设备",用户通过简单的命令即可触发 bootloader 功能,降低入门门槛。

● 支持用户镜像 + bootloader 镜像分区

该设计支持多镜像结构:bootloader 位于 SPI Flash 的专用区域,用户配置位于另一镜像区,bootloader 在启动后可跳转至用户镜像,或执行更新机制。

● 板卡元数据存储机制

SPI Flash 的安全寄存器页可用于存储诸如板卡名称、FPGA 型号、硬件版本、序列号、地址映射等元数据,便于通用软件识别板卡并自动执行编程。元数据采用 JSON 格式,清晰易读。

● SPI Flash 编程协议公开

bootloader 支持通过 "Access SPI" 命令在 USB 虚拟串口上执行任意 SPI Flash 访问操作(写、读、擦除等)。设计者可以查看 README 文档中的完整协议描述。

例程

该项目中有几款开发板的例程,核心还是自家制作的Tiny系列开发板:

当然也有针对Xilinx A7系列入门开发板例程:

打开后即可查看相关DEMO:

注意:Vivado版本2017

适用场景

低成本 FPGA 板卡:希望减少外部编程芯片、简化 USB 接口设计。

FPGA 教学 / 原型开发:快速将新镜像下载至板卡,在实验室或教学环境中尤为便利。

可编程系统 / 多镜像方案:支持 bootloader + 用户镜像结构,适合需要远程更新或 EEPROM 风格的机制。

硬件开发者希望精简流程:将编程流程简化为"插 USB → 虚拟串口 → 下载镜像",提升工程效率。

使用建议 &注意事项

在使用前请确认板卡 USB_P/N 信号设计正确、上拉电阻接入、"usb_pu"控制是否支持。

必须保证 FPGA 时钟系统能产生准确稳定的 48 MHz 给 USB 栈,否则可能导致 USB 连接不可靠。

设计 SPI Flash 容量时建议考虑"多镜像 + 用户数据"结构,需要预留足够空间。

虽然 bootloader 功能强大,但安全机制(如加密镜像、镜像签名、保护区)需由用户自行实现。

若需将该 bootloader 集成至大型 FPGA/SoC 项目,请评估板卡资源占用、逻辑干扰和时序影响。

总结

TinyFPGA-Bootloader 是一个非常实用、工程友好、开源可信的解决方案,适合在 FPGA 板卡设计中快速实现 USB 引导加载功能。它不仅降低了硬件复杂性,也显著简化了镜像下载、更新与板卡上板流程。这对于教学、原型开发、板卡小批量生产都是一个极佳选择。

注意大bit流的下载时间~

仓库地址

https://github.com/tinyfpga/TinyFPGA-Bootloader

相关推荐
daxi15013 小时前
Verilog入门实战——第5讲:Testbench 仿真编写 + 波形查看与分析
fpga开发
FPGA的花路18 小时前
UDP协议
fpga开发·以太网·udp协议
LCMICRO-133108477461 天前
长芯微LPS123完全P2P替代ADP123,高性能、低压差的线性稳压器
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·线性稳压器
fei_sun1 天前
面经、笔试(持续更新中)
fpga开发·面试
xixixi777771 天前
通信领域的“中国速度”:从5G-A到6G,从地面到星空
人工智能·5g·安全·ai·fpga开发·多模态
Nobody331 天前
Verilog always语句详解:从组合逻辑到时序逻辑
fpga开发
李嘉图Ricado1 天前
FPGA 时序约束与分析
fpga开发
白又白、2 天前
时序优化和上板调试小结
fpga开发
Z22ZHaoGGGG2 天前
verilog实现采样电流有效值的计算
fpga开发
fei_sun2 天前
牛客Verilog刷题篇
fpga开发