Xilinx FPGA开发全攻略: 十余种输出文件格式及其区别

Xilinx文档编号及其内容索引 Xilinx文档的数量非常多。即使全职从事FPGA相关工作,没有几年时间不可能对器件特性、应用、注意事项等等有较为全面的了解。本文记录了我自使用Xilinx系列FPGA以来或精读、或翻阅、或查询过的文档,及其主要内容。如果有新的会随时补录进来。以下按照个人理解对文档进行了分类,不一定恰当,也会有重叠的情况,欢迎提出意见。 器件概述 7系列器件 ds180:7系列器件概述,介绍不同器件的资源、... 阅读详情

Xilinx FPGA开发全攻略:详解.bit、.bin、.mcs等十余种输出文件格式及其区别

在Xilinx FPGA(现在属于AMD)的开发流程中,当我们使用Vivado或ISE软件完成设计、综合、实现后,会生成多种格式的输出文件。这些文件是连接逻辑设计与物理硬件的桥梁,用于不同的编程场景——有的直接烧录FPGA的SRAM进行在线调试,有的固化于外部Flash实现上电启动,还有的用于加密、回读验证等高级功能。本文将为你详细梳理Xilinx FPGA常见的输出文件格式,帮助你在不同的应用场景下选择正确的文件。

一、核心编程文件:从调试到固化的基石

1. .bit 文件(比特流文件)

这是Xilinx FPGA最核心、最常用的编程文件格式,适用于所有基于SRAM工艺的Xilinx FPGA(如Spartan系列、Artix系列、Kintex系列、Virtex系列等)。

定义:.bit文件是一个二进制文件,包含了两部分核心内容:专有的文件头信息和完整的FPGA配置数据。文件头中包含了器件型号、设计名称、生成时间、用户指定的ID码等元信息。

格式:二进制格式,不能直接用文本编辑器查看,但可以通过file命令(Linux/Mac/Git Bash)读取其文件头信息,例如显示:Xilinx BIT data - from top.ncd; UserID=0x12345678 - for xc7k325tffg900 - built 2023/05/15(10:22:26)。

用途:

  • 在线调试:通过JTAG直接下载到FPGA的SRAM中,快速验证逻辑功能。由于SRAM是易失性的,掉电后数据会丢失。
  • 作为中间文件:是生成其他所有编程文件(如.mcs、.bin)的基础输入。

生成方式:在Vivado中“Generate Bitstream”,或在ISE中通过BitGen工具生成。

2. .rbt 文件(Raw BIT File)

定义:.rbt文件是.bit文件的ASCII(文本)版本,本质上是同一个比特流数据的可读表示。

用途:主要用于调试目的,当需要查看或验证比特流中的具体数据内容时使用。也用于需要手动处理配置数据的场景。

3. .bin 文件(Raw Binary File)

定义:纯粹的二进制配置文件,不包含.bit文件中的文件头信息,只包含纯配置数据。

用途:

  • 嵌入式系统启动:非常适合被ARM、MicroBlaze或其他处理器直接从存储器(如SD卡、QSPI Flash)读取,通过被动配置接口发送给FPGA。
  • SPI Flash直接烧录:对于需要将FPGA配置文件存储在外部SPI Flash的场景,.bin是常见的选择。
  • MultiBoot/远程更新:在多启动或远程升级应用中,.bin格式因其简洁性而广泛使用。

生成方式:在Vivado中勾选“bin_file”选项,或在ISE BitGen设置中开启“Create Binary Configuration File”(-g Binary:Yes)。

4. .jed 文件(JEDEC文件)

定义:遵循JEDEC标准的编程文件格式,主要用于Xilinx的CPLD器件(如XC9500系列、CoolRunner系列)。

用途:编程Xilinx CPLD的内部非易失性存储器(Flash/EEPROM)。与FPGA的.bit不同,.jed文件编程后掉电不丢失。

技术细节:.jed文件描述的是逻辑熔丝的最终状态(通常以ASCII的“0”和“1”表示),编程时需要根据具体器件的物理布局进行“重排”(scramble)。


二、固化与存储文件:让FPGA“上电即运行”

对于SRAM FPGA,必须将配置文件存储在外部非易失性存储器(如SPI Flash、BPI Flash)中。为此,Xilinx提供了多种格式的文件用于烧录这些存储器。

5. .mcs 文件(Intel格式的PROM文件)

定义:Intel HEX格式的ASCII文本文件,是Xilinx推荐用于烧录外部配置存储器的标准格式之一。

格式特点:.mcs文件由多行记录组成,每行包含起始码、字节长度、起始地址、记录类型、数据和校验码。例如:
:020000040000FA
:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:00000001FF

核心优势:由于每行都包含地址信息,PROM编程器可以跳过不需要编程的区域(如空白或保留区域),从而减少编程时间,特别是在大容量Flash中只烧录小文件时优势明显。

用途:通过JTAG间接编程外部SPI/BPI Flash(使用iMPACT或Vivado Programmer),是量产固化中最常见的文件格式。

6. .hex 文件(Hexadecimal File)

Xilinx工具也可以生成.hex文件用于PROM编程。需要注意字节顺序(Byte-swapping)问题:默认生成的HEX文件是“字节交换”(Byte-swapped)的,即D0引脚对应每个字节的LSB;而非交换格式下D0对应MSB。

7. .exo / .tek 文件

除了MCS和HEX,Xilinx PROM文件格式器还支持EXORmacs格式(.exo)和Tektronix格式(.tek),适用于特定的第三方编程器或旧系统。

8. .rpd 文件(Raw Programming Data File)

定义:原始编程数据文件,是直接映射到SPI/BPI Flash地址空间的二进制镜像。

用途:用于使用第三方专用编程器(非Xilinx JTAG链)直接烧录裸片Flash,或在某些嵌入式更新流程中作为最终镜像。


三、工程中间文件:开发流程的“半成品”

在Xilinx的实现流程中,各个阶段会生成一系列中间文件,了解它们有助于深入理解工具链和调试问题。

阶段文件后缀名称作用与特点
综合.edf / .ednEDIF网表文件第三方综合工具(如Synplify)生成的通用标准网表
.ngcNGC网表文件XST(Xilinx综合工具)生成的二进制网表,包含原语信息和约束,可用于IP保护
转换.ngd原生通用描述文件NGDBuild将EDIF/NGC和约束合并后生成的完整逻辑描述
.bld转换报告文件转换过程的运行报告
映射.ncd原生电路描述文件映射后生成的物理设计文件,包含逻辑在CLB、IOB等物理单元上的分配
.pcf物理约束文件映射后生成的物理约束,包含引脚、区域等信息
.ngm时序关系文件与静态时序分析相关
.mrp映射报告资源占用、优化细节等
布局布线.ncd(更新)布局布线后NCD包含完整的物理布局和布线信息,用于生成比特流
.par布局布线报告布局布线的详细报告,包括未布线网络、时序摘要等
.dly延时文件网络的时延信息
.padI/O管脚配置管脚最终配置信息

四、约束与调试文件

9. .ucf / .xdc 文件(约束文件)

  • UCF:User Constraints File,ISE时代使用,用于指定引脚位置、I/O电平、时序约束等。
  • XDC:Xilinx Design Constraints,Vivado时代使用,基于行业标准的SDC(Synopsys Design Constraints)格式。

10. 时序报告文件

  • .twr:时序报告文件,由TRCE工具生成,用于验证设计是否满足时序要求。
  • .timing_summary:Vivado中生成的时序摘要报告。

11. 读回与验证相关文件

当使用BitGen的读回选项时,会生成一组特殊的文件用于配置验证:

  • .msk:掩码文件,与.bit文件结构相同,但数据位被掩码替代。用于验证时指示哪些位需要检查(0表示需要验证,1表示忽略)。
  • .ll:包含设计中每个节点可捕获读回信息的ASCII文件,包括比特流中的绝对位位置、帧地址等。
  • .rba / .rbb:读回数据的ASCII和二进制版本(适用于Virtex/-E/Spartan-II/E)。
  • .rbd:只包含预期读回数据(不包括命令)的ASCII文件。
  • .msd:只包含掩码验证信息(不包括命令)的ASCII文件。

12. 加密相关文件

  • .nky:在启用比特流加密时生成,包含FPGA器件的密钥信息,用于iMPACT编程密钥。

13. BitGen日志文件

  • .bgn:BitGen运行的主日志文件,包含命令行选项、错误和警告信息。
  • .drc:专门的设计规则检查日志。

五、常用文件对比总结

文件格式适用器件易失性典型用途关键特点
.bitSRAM FPGA是JTAG在线调试、功能验证包含文件头,最基础格式
.binSRAM FPGA是/否*嵌入式启动、SPI Flash烧录纯数据,无头文件,体积最小
.mcs外部PROM/Flash否量产固化、通过JTAG烧FlashIntel HEX格式,含地址信息,可跳转编程
.jedCPLD否编程CPLD内部非易失存储器JEDEC标准,ASCII格式
.rbtSRAM FPGA是调试、查看比特流内容.bit的ASCII版本
.mskSRAM FPGA-配置验证、回读检查配合.bit进行位屏蔽验证
.nkySRAM FPGA-比特流加密存储密钥信息

*注:.bin文件本身是数据,是否易失取决于存储它的介质。如果烧入Flash,则为非易失;如果直接送入SRAM,则为易失。


六、如何为你的Xilinx项目选择正确的文件?

  • 调试阶段(在线验证):选择 .bit 文件,通过JTAG直接下载到FPGA SRAM中,快速迭代验证。
  • 量产固化(外挂SPI Flash):生成 .mcs 文件,通过Vivado/iMPACT烧录到板载SPI Flash中。这是最通用的量产方案。
  • 嵌入式系统(处理器主动配置):选择 .bin 文件,存放在SD卡、eMMC或文件系统中,由ARM/MicroBlaze读取并通过SelectMAP/被动串行接口配置FPGA。
  • MultiBoot/远程更新:需要生成多个 .bin 或特定格式的镜像,并按照地址偏移存储在Flash中。
  • 配置CPLD:生成 .jed 文件,直接通过JTAG编程非易失CPLD。
  • 设计重用/IP保护:综合后生成 .ngc 文件(ISE)或 .edif + .xdc(Vivado),交付给其他人使用。
  • 高级调试(配置验证):启用BitGen的读回选项,生成 .msk、.ll 等文件,用于验证FPGA实际配置与预期是否一致。

理解这些文件格式,将帮助你在Xilinx FPGA的开发道路上更加得心应手,无论是进行前期的在线调试,还是最终的量产部署和系统集成。

XIlinx FPGA 和 Intel FPGA的区别 阅读详情

相关推荐

Vivado将程序固化到Xilinx的FPGA开发板的flash芯片中

Vivado将程序固化到Xilinx的FPGA开发板准备工作开始准备.mcs文件在HardWare Manager界面操作固化程序到flash中对开发板进行操作另外 准备工作 Vivado 2020.2 Xilinx VC709 FPGA开发板 开始 工程写好后,先生成bit文件。 准备.mcs文件 上图点击OK后,就会在你指定的位置,生成一个命名好的.mcs文件。当然你可以更改文件格式,也可以是.bin .hex文件格式,这点在上图中的Format中修改。 在HardWare Manager界面操作

Jason Bourne的博客 9481

Xilinx MCS(Memory Configuration File)解析

xilinx mcs文件解析

u010170039的博客 5342

浅谈Altera和Xilinx的FPGA区别

对于Altera和Xilinx的FPGA,可以分为两个方面去比较一下,基本逻辑资源和内部基本架构。 从目前企业中做开发使用的广泛性来说,Xilinx占得比重确实是大一些,但是从其他方面来说,比如价格,相对而言Altera的便宜些。对于两者的特点,Xilinx的短线资源非常丰富,这样在实现的时候,布线的成功率很高,尤其是逻辑做得比较满的时候。而Altera的FPGA的短线资源经常不够用,经常要占用LE来充当布线资源,这也是为什么Altera的FPGA可以便宜的原因,资源少些当然便宜,但是如果你是高手,也能把他

weixin_43668420的博客 4589

xilinx mcs、bin以及bit文件的区别

mcs,bin,bit文件的区别

qq_41305217的博客 5875

xilinx FPGA复位浅析

复位在FPGA设计中的重要性不言而喻, Altera的FPGA,xilinx 7系列的FPGA 同步复位,异步复位,建立时间,保持时间,恢复时间,撤销时间 硬件乘法器,BlockRAM,srl16,srl32

kuangxin的博客 9403

Xilinx 7系列FPGA架构之时钟资源(一)

引言:从本文开始,我们陆续介绍Xilinx 7系列FPGA的时钟资源架构,熟练掌握时钟资源对于FPGA硬件设计工程师及软件设计工程师都非常重要。本章概述7系列FPGA时钟,比较了7系列FPGA时钟和前几代FPGA差异,总结7系列FPGA中的时钟连接。有关7系列FPGA时钟资源使用的详细信息,请关注后续文章。 时钟资源架构概述 7系列FPGA与前一代FPGA时钟资源差异 时钟资源连接概述 1.时钟资源架构概述 1.1 时钟资源概述 7系列FPGA时钟资源通过专用的全局和区域I/O和时钟资源管理符合复

FPGA_Designer 7987

.MCS文件和.HEX的区别以及生成.MCS的代码

这里注意包含了一个很简洁的生成hex的代码。有一个开源的51单片机的C编译器叫做SDCC,里面有一段生成.HEX的代码。当然这代码使用“穷举”的方法,如果MCS文件可以再添加或者根据HEX的02开头协议改成更智能的。.MCS文件我们说的是XILINX的烧写文件,他是在.HEX的基础上发展而来的。我们看到每行16个字节(两个ASCII码表达一个字节),每隔4096行,也就是整整65536字节就会出现一次起始地址信息。.HEX是早起的INTEL提出的烧写文件的格式,由于历史原因只支持到64K的长度。

mcupro的专栏 613

编程软件和测试文件XILINX公司XC95系列CPLD文件说明

XILINX公司XC95系列CPLD文件说明 1、 TEST目录中JED文件清单: 9572_84 .JED:对应XC9572PC84-15芯片 9572_44. JED:对应XC9572PC44-15芯片 9536_44 .JED:对应XC9536PC44-15芯片 95108_84 JED:对应XC95108PC84-15芯片 2、 TEST目录中SCH文件清单 XC95_84.SCH:对应PC84封装的XC95系列CPLD XC95_44.SCH:对应PC44封装的XC95系列CPLD 3、 PROGRAM编程软件目录 安装后可以对XILINX公司的XC95系列CPLD和XC4000系列FPGA进行在系统编程(ISP)。 4、 DEMO目录 该目录中是XILINX公司的XC9536的一个演示例程,包括了原理图、VHDL源代码、ABEL源代码和VHDL设计文件。 5、 DATASHEE目录 该目录中是XILINX公司XC9536/XC9572/XC95108的数据手册。

Xilinx FPGA固化flash的方式

FPGA里面的可执行文件都涉及到和。bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试。bin 文件是二进制文件,按顺序只包含原始字节流,烧写进flash,上电加载自动加载。FPGA一般默认生成的是bit文件,bin文件生成是在ISE里property里勾选的,如下图所示。而VIVADO中是可以在settings->Bitstream->-bin_file勾选即可。mcs也是烧写到flash中的,上电后会自动加载到FPGA里,因此烧写进flash,需要断电重启。

dalingertong的博客 1万+

Xilinx-FPGA配置的一些细节

Xilinx配置过程 bit文件的格式 bit文件和bin文件的区别 SelectMAP文件是加载.bit呢还是.bin EDK生成的.bit和ISE生成的.bit文件有什么区别吗 关于部分重加载

intel-mcs-example:Xilinx使用的英特尔MCS-86文件格式的示例解析器

英特尔-mcs示例 .MCS文件格式也称为Intel HEX格式(或I32HEX)。 有关更多信息,请参阅。 该协议全部采用ASCII格式,因此可以进行大量字符串扫描并以这种方式解析出十六进制数据。 我将其放入打包的结构中,因为它使校验和计算变得更轻松。 并非所有人都需要打包,但我喜欢一致性。

XILINX 7系列FPGA_时钟篇

XILINX 7系列FPGA的时钟简介,能够对基本的时钟结构有个了解

qq_35712169的博客 6313

vivado bit文件格式转mcs文件格式

vivado bit文件格式转mcs文件格式,console命令格式 write_cfgmem -format mcs -interface ………………

xilinx 7系列FPGA之XADC的学习笔记

Xilinx的7系列FPGA和Zynq器件在片上集成了模数转换器和相关的片上传感器(内置温度传感器和功耗传感器),可在系统设计中免去外置的ADC器件,有力地提高了系统的集成度,在7系列FPGA里,除了少数spartan系列的低端FPGA没有XADC外,其它所有的7系列FPGA里都有XADC模块。本文就这一新模块的使用进行简单介绍,希望对大家有所帮助,当然如有不当之处还请高手指正,以免误导大家...

亮仔的小天地 3万+

Android-音频配置文件详解

前言:   Android P 引入了一种新的音频政策配置文件格式 (XML),用于描述音频拓扑。新的 XML 文件支持定义输出输入流配置文件、可用于播放和捕获的设备以及音频属性的数量和类型。但是每个项目的代码里面都有很多音频配置文件,具体使用的是哪个文件呢?本文将详细讲述。 1. 查看运行时具体使用的xml adb shell dumpsys media.audio_policy | grep -iE "Config source:" 结果如下: Config source: /vendor

cheriyou_的博客 3943

【C++】小猫钓鱼纸牌游戏--C++实现

小猫钓鱼问题: 描述:初始,两个人各有n张牌(牌面0-10),顺序固定,只能按顺序出牌。然后,两个人轮流在桌面上以接龙的方式出牌,当某个人放置的牌在桌面上已经出现时,他收起相同牌面及其中间的牌作为自己的筹码,同时需要再放一张牌到桌面。某人手上的牌出完后,另一个人继续出,直到两人手上都没牌为止,输出结束时两个人手上的筹码数。 #include<iostream> using namespace std; struct queue { int head; //队列首 int tail; //

qq_41344430的博客 3202

Xilinx与Altera的FPGA区别

  最近被各大公司机试\笔试题虐的死去活来,其中一道就是主考的Xilinx与Altera的FPGA架构区别,本人小菜鸟基本只用过A家的FPGA对于X家的知之甚少,这里先简单总价一下,说的不对大家勿喷: 两家FPGA的区别本人认为有两方面吧:1.基本逻辑资源;2.内部基本架构。(也可以看成一方面吧)  从好用来说,肯定是Xilinx的好用,不过Altera的便宜   他们的特点,Xilinx的短线资...

u012923751的博客 4916

计算机视觉三大顶会(ICCV/CVPR/ECCV)投稿指南与趋势解析

本文详细解析计算机视觉三大顶会(ICCV/CVPR/ECCV)的投稿指南与最新趋势。从基础认知到实战经验,涵盖时间线管理、选题策略、论文写作技巧及实验设计要点,帮助研究者提升投稿成功率。特别关注2024年技术融合、评估维度和伦理要求等前沿趋势,为计算机视觉领域的研究者提供实用建议。

weixin_29165725的博客 1831

XILINX 的7系列与UltraScale+系列FPGA的Device DNA获取方法与区别及代码仿真与上板案例

本文介绍了在FPGA开发中如何获取FPGA的DNA(唯一标识符),并对比了Xilinx 7系列与UltraScale系列FPGA的DNA差异。FPGA的DNA具有唯一性,常用于硬件加密。获取DNA的方法包括JTAG查询和通过原语+代码获取。7系列FPGA的DNA为57位,输出顺序为大端;UltraScale系列为96位,输出顺序为小端。文中提供了兼容Xilinx和复旦微FPGA的代码案例,并通过仿真和上板验证了代码的准确性。最后,作者提供了获取例程的方式,并鼓励读者关注其公众号获取更多FPGA相关内容。

风中月隐的博客——FPGA加速者 2348

VH6501实战:手把手教你用CANoe脚本精准触发CAN总线干扰(附避坑点)

本文详细介绍了使用VH6501和CANoe脚本精准触发CAN总线干扰的实战技巧,包括触发位置控制、ValidityMask配置和干扰序列设置等关键步骤。通过具体代码示例和常见问题排查指南,帮助工程师避开实际应用中的常见陷阱,提升CAN总线干扰测试的准确性和效率。

weixin_33709219的博客 368

图形学基础|屏幕空间反射(SSR)

图形学基础|屏幕空间反射(SSR) 文章目录图形学基础|屏幕空间反射(SSR)一、前言二、反射技术概述2.1 环境贴图反射2.2 IBL反射2.3 平面反射(Planar Reflections)2.4 屏幕空间反射(Screen Space Reflection)2.4.1 SSR的基本原理2.4.2 SSR的优缺点三、SSR(Screen-Space Reflection)实现3.1 Efficient GPU Screen-Space Ray Tracing3.1.1 2D Raymarching v

【黑键】 3万+

Xilinx FPGA :开发使用及 Tips 总结

XilinxFPGA(FieldProgrammableGateArray,现场可编程门阵列)是一种非常灵活且强大的硬件平台,广泛应用于数字信号处理、嵌入式系统、软件定义无线电等领域。以下是一些关于XilinxFPGA开发使用的要点和技巧总结:

weixin_43817186的博客 1688

Opencv相机校准之棋盘格标定

Reference: https://yq.aliyun.com/articles/62472

y459541195的博客 3万+

《FPGA调试记录》Xilinx 7series FPGA 万兆网UDP

实现万兆网 UDP通信

qq_32353821的博客 1万+

《揭秘 BME688人工智能压力湿度温度气体传感器:气体检测的多面能手》:此文为AI自动生成

BME688 是博世推出的一款具有人工智能和集成高线性度高精度压力、湿度、温度传感器的气体传感器,专为移动和联网应用开发,尺寸紧凑且低功耗。BME688 作为一款先进的传感器,在多个领域展现出卓越的性能。它采用了坚固而紧凑的 3.0 x 3.0 x 0.9 mm³ 封装,这种小巧的尺寸使其能够轻松应用于对空间要求严格的移动设备和联网应用中。同时,低功耗的特性也使得它在能源有限的环境下能够长时间稳定运行。

zheng_ruiguo的专栏 1925

【实战】CANOE实现UDS安全访问过程的CAPL脚本

首先我已经有了包含安全访问算法的dll文件,并通过Diagnostics/ISO TP Configuration中加载了此dll文件,如下。在on start部分,要将“ECU qualifier“作为参数,执行diagSetTarget函数。这个函数是用于设置tester从现在开始与之通信的目标ECU,并配置/建立与该ECU的通信通道。我最近在做密钥学习上位机时,遇到一些问题:如何用CAPL脚本实现安全访问过程?ECU Qualifier可以通过加载cdd文件后,在如下位置找到。CAPL脚本如何编写。

weixin_46481662的博客 4938
上一篇: 主流FPGA厂商对SystemVerilog的支持现状
下一篇: Lattice FPGA开发全攻略--十余种输出文件格式及其区别
GateWorld
博客等级 码龄2年 489粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值