不用 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

相关推荐
chenlance16 小时前
基于FPGA的激光器多通道数据采集与波形控制系统设计
fpga开发
9527华安18 小时前
FPGA实现GTP高速收发器2路视频传输,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
图像处理·fpga开发·aurora·高速收发器·8b10b·derdes
cjie22118 小时前
lanczos插值引起的振铃现象
计算机视觉·fpga开发
liuluyang53019 小时前
Verilog 中 wire 与 wor 的区别详解
fpga开发·verilog
GateWorld2 天前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之点屏五 miniLVDS
fpga开发·lcd显示·fpga点亮屏幕·minilvds
nuoxin1142 天前
WILX1200HC-5TG144I替代 LCMXO2-1200HC-5TG144I(富利威)
人工智能·嵌入式硬件·fpga开发·电脑·硬件工程·dsp开发
Bahair_2 天前
【FPGA】使用fdatool设计滤波器系数,使用FIR Compiler导入系数联合滤波
fpga开发
qq_411262422 天前
硬件是ESP32-P4连接LAN8720A,正常初始化之后,设备DHCP失败
stm32·单片机·fpga开发
第二层皮-合肥3 天前
【数据采集专栏】时钟同步(有时钟卡方案)
fpga开发
XINVRY-FPGA3 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga