0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用TinyFPGA-Bootloader将比特流加载到FPGA

FPGA技术江湖 来源:OpenFPGA 2025-12-19 15:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以下文章来源于OpenFPGA,作者碎碎思

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 配置或用户镜像加载。

硬件需求示例:

35eadca0-d496-11f0-8c8f-92fbcf53809c.png

FPGA 板卡需具备 USB_P、USB_N 3.3 V 信号

364b201a-d496-11f0-8c8f-92fbcf53809c.png

板卡需有产生稳定 48 MHz 时钟振荡器 + PLL。

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

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

36ac692e-d496-11f0-8c8f-92fbcf53809c.png

建议支持多镜像启动(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系列开发板:

370b15c8-d496-11f0-8c8f-92fbcf53809c.png

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

3764915c-d496-11f0-8c8f-92fbcf53809c.png

打开后即可查看相关DEMO:

37be7c26-d496-11f0-8c8f-92fbcf53809c.png

注意:Vivado版本2017

适用场景

38194fb6-d496-11f0-8c8f-92fbcf53809c.png

低成本 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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1665

    文章

    22581

    浏览量

    641061
  • 开源
    +关注

    关注

    3

    文章

    4431

    浏览量

    46606
  • 比特流
    +关注

    关注

    0

    文章

    11

    浏览量

    8425
  • GitHub
    +关注

    关注

    3

    文章

    489

    浏览量

    18806

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

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    了解FPGA比特流结构

    FPGA上电或随后的FPGA重新配置期间,比特流从外部诸如闪存这样的非易失性存储器中读取,通过FPGA配置控制器的处理,加载到内部的配置SR
    发表于 11-30 10:59 1833次阅读

    如何使用IMPACT在FPGA xilinx中下载比特流

    你好,请有人解释我如何使用IMPACT在FPGA xilinx中下载比特流先谢谢你以上来自于谷歌翻译以下为原文hello,please can someone explain me how
    发表于 01-15 10:08

    中途向ICAP中止写入部分比特流

    嗨,我正在尝试部分自我重新配置。想法是通过介质将部分比特流发送到FPGAFPGA接收它(在多个块中)并将比特流写入ICAP。当连接发生时,我的FP
    发表于 02-14 09:40

    怎么在我的比特流中攻击BRAM

    嗨,我有一个应用程序,我希望在下载到FPGA之前使用类似于data2mem的工具来在FPGA比特流中破解块内存内容。FPGA可以是Virte
    发表于 03-19 12:44

    如何集成Pynq FPGA教程或与Pynq通信?

    你好,我想使用Vivado HLS开发FPGA比特流并将其加载到Pynqpython模块中或使用Linux使用C ++进行ARM加载。到目前为止,我能够生成
    发表于 09-30 10:50

    无法在spi flash中加载比特流

    嗨我有一个问题,我无法在我的spi flash中加载比特流,我在链中有两个不同的FPGA。 Impact看到了单个FPGA及其Flash,但是我无法在
    发表于 03-23 08:47

    怎么将Microblaze processsor比特串文件下载到FPGA中?

    我在使用EDK 10.1中的微填充处理器在FPGA中下载比特流文件时遇到问题。我只是将Microblaze processsor比特串文件下载到FP
    发表于 03-30 10:07

    怎么在Virtex-7 FPGA上下载比特流

    你好我有一个在MIcroBlaze上运行linux的设计要求。我能够在我的Virtex-7 FPGA上下载比特流(在Vivado 2014.4中生成)。我使用Impact来编程我的FPGA。我因此
    发表于 04-02 10:05

    请问如何在没有静态路由的情况下生成部分比特流

    reconfig。模块加载在可重新配置的插槽内,一个带有移位 - 右侧模块加载在可重新配置的插槽内)。部分设计正常工作,我能够通过PCAP接口加载FPGA中的部分
    发表于 06-04 08:52

    是否需要在flash上​​切换黄金比特流和多重比特流的位置?

    嗨专家, 我正在使用spartan-6 FPGA进行多重启动实验。我发现位文件位于ug380上,如下图所示。黄金比特流位于闪存的下部块上,多重引导比特流位于闪存的较高块上。 因此,如果我想使用保护区
    发表于 06-09 17:43

    使用IMPACT(ISE)将比特流下载到Zynq设备中而无需启动ARM?

    大家好,有没有一种简单的方法可以使用IMPACT(ISE)将比特流下载到Zynq设备中而无需启动ARM?我知道这可以用Vivado完成。TIA
    发表于 07-21 15:11

    Zynq开发板FPGA比特流文件下载方式

    Zynq开发板FPGA比特流文件可以通过三种途径下载: 1. 利用SDK生成的FSBL.elf文件自动加载FPGA比特流配置文件,
    发表于 02-08 15:20 1713次阅读

    使用加密和身份验证来保护UltraScale/UltraScale+ FPGA比特流

    电子发烧友网站提供《使用加密和身份验证来保护UltraScale/UltraScale+ FPGA比特流.pdf》资料免费下载
    发表于 09-13 17:14 4次下载
    使用加密和身份验证来保护UltraScale/UltraScale+ <b class='flag-5'>FPGA</b><b class='flag-5'>比特流</b>

    使用加密保护7系列FPGA比特流

    电子发烧友网站提供《使用加密保护7系列FPGA比特流.pdf》资料免费下载
    发表于 09-13 15:31 0次下载
    使用加密保护7系列<b class='flag-5'>FPGA</b><b class='flag-5'>比特流</b>

    一文了解FPGA比特流的内部结构

    电或随后的FPGA重新配置期间,比特流从外部诸如闪存这样的非易失性存储器中读取,通过FPGA配置控制器的处理,加载到内部的配置SRAM中。
    的头像 发表于 07-16 18:02 2.3w次阅读
    一文了解<b class='flag-5'>FPGA</b><b class='flag-5'>比特流</b>的内部结构