FPGA配置与SPI Flash烧录怎么理解?bitstream与加载流程怎么做?FPGA面试

浏览量:85
时间: 2026-09-10 21:42:01
FPGA设计中级技术基础题

FPGA开发板SPI Flash配置烧录调试

本文概述

FPGA配置(上电加载bitstream)是FPGA面试的基础必考题,很多人只会在工具里点下载却没想过原理。面试官想听的不是“点Program”,而是你懂不懂FPGA为什么需要配置(SRAM架构掉电丢失)、配置文件的种类(bit/hex/bin)、配置模式(JTAG、主动SPI、被动配置)、以及配置流程(上电→模式选择→加载→DONE)。本文从“FPGA是SRAM架构”讲起,讲为什么需要配置、bitstream是什么、配置模式(JTAG调试、SPI Flash主动加载、被动模式)、SPI Flash烧录流程(生成bin、烧录、上电加载)、以及配置时序和常见问题(DONE不拉高、加载失败排查),强调模式选择按产品应用定,不套固定值。

核心要点

  • FPGA基于SRAM存储配置,掉电丢失,上电必须从外部加载bitstream

  • 配置文件:bit(JTAG调试)、bin/hex(烧Flash用)

  • 配置模式:JTAG(在线调试)、主动SPI(FPGA自己从Flash读)、被动模式(外部控制)

  • SPI烧录:生成bin→通过JTAG烧进Flash→上电FPGA主动加载

  • 配置完成标志:DONE信号拉高,INIT_B状态指示

  • 常见问题:DONE不拉高、加载失败→查模式引脚、时钟、Flash、bit格式

FPGA的配置(加载)流程是怎样的?bit文件怎么烧到SPI Flash?有哪些配置模式?

面试官考察点

考察点拆解

面试官问FPGA配置,重点考察:第一,你懂不懂FPGA为什么需要配置(SRAM架构);第二,你懂不懂配置文件和配置模式;第三,你懂不懂SPI Flash烧录和上电加载流程;第四,你懂不懂配置失败的排查。

追问方向:为什么掉电丢失、几种配置模式、怎么烧Flash、DONE信号。

回答思路

答题主线

建议按“为什么需要配置 → 配置文件 → 配置模式 → 烧录与加载流程 → 问题排查”来答,从原理到操作。

  1. 先讲原因:SRAM架构。

  2. 讲文件:bit/bin。

  3. 讲模式:JTAG/主动SPI。

  4. 讲流程排查:烧录、DONE。

参考回答

我先讲FPGA为什么需要配置,再讲配置流程。

第一,为什么需要配置。FPGA(如Xilinx/Intel器件)的配置存储是SRAM架构:上电时逻辑是空的,掉电后配置丢失。所以每次上电必须从外部存储器(SPI Flash)或主机加载bitstream(配置数据流),把电路“编程”进FPGA。这和MCU的Flash运行程序不一样。

第二,配置文件。综合实现后生成:bit文件(在线调试/JTAG加载用);bin/hex文件(烧录到SPI Flash用,去掉bit的头信息)。量产板卡上电从Flash自动加载。

第三,配置模式。

  • JTAG模式:通过下载器直接在线配置(调试用,不保存,掉电丢失);

  • 主动SPI模式:FPGA上电后自己从SPI Flash读取配置(产品量产常用,掉电重上电自动加载);

  • 被动模式:由外部主机(如MCU/CPU)控制加载(灵活,由系统管理加载时机)。

第四,SPI Flash烧录与加载流程。把生成的bin文件通过JTAG下载器烧进SPI Flash(一次编程,多次上电加载);上电后FPGA根据模式引脚选择主动SPI,从Flash读配置数据,配置完成后DONE信号拉高,用户逻辑开始运行。

第五,配置失败排查。DONE不拉高/INIT_B异常:查模式引脚设置、配置时钟、Flash型号和连接、bit/bin格式是否正确、供电是否正常。模式选择按产品(调试/量产)和系统架构定。

面试官可能追问

追问 1:FPGA为什么掉电后配置会丢失?
FPGA的配置存储基于SRAM单元(易失性存储):SRAM靠电源保持状态,掉电即丢失。所以FPGA上电后需要重新加载bitstream才能工作。这和用Flash存程序/配置的MCU不同,也是FPGA产品必须配外部配置存储器的原因。
追问 2:bit文件和bin文件有什么区别?
bit文件是完整配置数据流(含文件头信息),主要给JTAG在线加载/调试用;bin文件是从bit转换出的纯配置数据(去掉头),用于烧录到SPI Flash,Flash容量占用更小。量产烧Flash用bin(或hex),在线调试用bit。
追问 3:主动SPI配置是怎么工作的?
FPGA上电后,根据模式引脚(如M[2:0])选择主动SPI模式,FPGA作为SPI主设备自己产生时钟,从外部SPI Flash按地址读出配置数据,完成内部配置,配置完成后拉高DONE。整个过程FPGA自动完成,不需要外部主机参与,适合产品上电自动启动的场景。
追问 4:配置失败怎么排查?
看DONE和INIT_B状态:1)DONE不拉高说明配置未完成——查模式引脚是否接对、配置时钟、Flash与FPGA的SPI连接(片选/时钟/数据);2)查Flash是否烧录正确(读回校验);3)查bin格式和Flash型号匹配;4)查供电(配置期间电压)。用下载器读状态寄存器定位。
追问 5:能不能不烧Flash,每次由主机加载?
可以。用被动配置模式(如BPI/从SPI/SelectMAP),外部主机(MCU/CPU)在上电后把配置数据推给FPGA,FPGA按主机节奏完成加载。好处:配置可灵活更换(系统升级)、省Flash或与系统共用;缺点:依赖主机和加载时序,主机要管理配置流程。常用在系统里已有主CPU的场景。

常见失分表达

✗ “FPGA配置是存在芯片里的” — SRAM架构掉电丢失,需外部加载。
✗ “烧Flash用bit文件” — 烧Flash用bin/hex,bit用于JTAG在线。
✗ “DONE不拉高是FPGA坏了” — 先查模式引脚、Flash、时钟和配置流程。
✗ “上电FPGA自己就有逻辑” — 上电是空的,必须加载配置。
✗ “配置模式随便选” — 按调试/量产/系统架构选JTAG、主动SPI或被动。

准备动作

1
在开发板上分别用JTAG在线配置和SPI Flash烧录,观察DONE
2
用工具生成bin文件,对比bit和bin大小
3
读FPGA配置手册:模式引脚、配置时序
4
模拟配置失败,用状态寄存器定位问题

核心关键词

FPGA配置bitstreamSPI FlashJTAG主动SPI被动配置DONEINIT_B烧录


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。侵权投诉
相关推荐HOT
开班信息