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

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

在Lattice FPGA的开发流程中,当我们使用Lattice Diamond、Radiant或早期的ispLEVER软件完成设计、综合、布局布线后,会生成多种格式的输出文件。这些文件是连接我们逻辑设计与物理硬件的桥梁,用于不同的编程场景------有的直接烧录FPGA的SRAM进行在线调试,有的固化于内部Flash实现上电启动,还有的用于外部配置芯片。本文将为你详细梳理Lattice FPGA常见的输出文件格式,帮助你在不同的应用场景下选择正确的文件。

一、核心编程文件:SRAM vs. 非易失性存储

根据编程目标是FPGA的易失性SRAM还是其内部/外部的非易失性存储器(如Flash),Lattice的编程文件主要分为以下两大类。

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

这是Lattice FPGA最常用的比特流文件之一,适用于所有基于SRAM配置的FPGA(如ECP系列、CrossLink-NX、Certus-NX等)。

  • 定义 :.bit文件是用于配置FPGA器件SRAM单元的配置数据文件。它包含了配置FPGA内部所有可编程资源(查找表、触发器、块内存等)的完整数据。
  • 格式 :它是一种二进制文件,通常以十六进制格式表示,不可打印。
  • 用途 :主要用于通过JTAG等方式直接下载到FPGA的SRAM中,进行在线调试或功能验证。由于SRAM是易失性的,掉电后数据会丢失,因此每次上电都需要重新配置。
  • 生成 :在Lattice Radiant或Diamond软件中,完成实现(Implement)流程后,会自动生成.bit文件。

2. .jed 文件(JEDEC文件)

JEDEC文件是遵循JEDEC标准(Joint Electron Device Engineering Council)的编程文件格式,主要用于配置Lattice的非易失性器件,如CPLD(如MachXO家族)或带有内部Flash的FPGA(如MachXO2、MachXO3等)。

  • 定义 :.jed文件是符合JEDEC 42.1C标准的编程数据文件。它包含了要写入器件内部非易失性存储器(如配置Flash、用户Flash存储器、特征行等)的所有配置信息。
  • 格式 :与二进制.bit文件不同,.jed文件是一种 ASCII文本格式 ,由ASCII字符"1"和"0"组成,因此是可打印的。这使得它容易被第三方编程器解析,用于大规模生产编程。
  • 用途 :直接编程到器件的 内部非易失性存储器 (如Flash)中。编程成功后,器件掉电后不会丢失配置,上电即可自动将内部Flash中的数据加载到SRAM中启动。
  • 适用器件 :适用于所有带有内部非易失性存储器的Lattice器件,包括MachXO家族、Platform Manager等。

核心区别:

  • .bit :用于配置易失性的SRAM,适合在线调试。
  • .jed :用于编程非易失性的内部Flash,用于固化程序,实现上电自启动。

二、辅助编程与配置文件:用于不同配置模式

在实际产品应用中,对于纯SRAM FPGA(如ECP5、CrossLink-NX),通常需要外挂一个SPI Flash来存储配置数据,由FPGA在上电时主动加载。为此,我们需要生成适用于外部Flash的文件。

3. .mcs 文件(PROM文件)

虽然Intel和Xilinx常用.pof或.mcs,但在Lattice Diamond软件中,也可以通过工具生成Intel格式的.mcs文件,用于编程外部PROM(可编程只读存储器)。

  • 用途 :用于对板载的外部SPI Flash进行编程。

三、Lattice特有的工程与IP文件

除了最终的编程文件,Lattice的开发工具还会生成一系列特有的中间文件,用于管理IP核、约束和工程设置。

4. .lpc 文件(Lattice参数配置文件)

这是Lattice Diamond和Radiant软件中与IP核生成相关的核心文件。

  • 定义 :.lpc文件是一个 文本文件 ,包含了用户在IPexpress或IP Catalog中为某个IP模块或IP核输入的所有配置参数值。
  • 用途
  • 配置存储 :当需要修改或重新生成IP时,双击.lpc文件可以直接打开IP配置界面,并载入之前设置的所有参数,方便进行修改或重新生成。
  • 工程占位符 :在Project Navigator中,.lpc文件作为组成该IP核的多个文件(如.v、.vhd、.ngo)的占位符,保持了工程结构的简洁。

5. .ipx 文件(IP核清单文件)

在Lattice Radiant软件中,IP核的配置信息也常以.ipx格式存在。

  • 用途 :类似于.lpc,.ipx文件是Radiant中IP核的清单文件。点击该文件可以重新打开IP配置器,对IP进行修改或重新生成。

6. .ldf 文件(Diamond工程文件)

这是Lattice Diamond软件的主工程文件。

  • 用途 :用于在Diamond中管理和实现所有工程文件。它记录了工程中包含的源文件、约束文件以及各种实现策略。

四、调试与约束文件

7. .lpf 文件(Lattice偏好设置文件 - Lattice Preference File)

这是Lattice FPGA设计中最主要的约束文件。

  • 用途 :.lpf文件用于存储 逻辑约束 ,包括引脚分配(Location)、I/O电平标准(I/O Type)、以及时序约束(如时钟频率、输入输出延迟)等。它是布局布线过程的输入。

8. .ldc / .sdc 文件(设计约束文件)

  • 用途 :用于为Lattice综合引擎(LSE)或第三方综合工具(如Synplify Pro)指定设计特定的 时序约束 。.ldc是Lattice的版本,而.sdc是行业标准的Synopsys设计约束格式。

9. .rvl 文件(Reveal Inserter调试文件)

Lattice的Reveal逻辑分析仪工具是片上调试的核心。

  • 定义 :.rvl文件定义了Reveal调试工程及其模块,标识了要追踪和触发的信号,并存储了追踪和触发的选项。
  • 用途 :当你需要在FPGA运行时观察内部节点信号时,通过Reveal Inserter配置好探针和触发条件,这些设置就保存在.rvl文件中。综合实现时,这些设置会以额外的逻辑形式被植入到原有的设计中。

10. .rva 文件(Reveal Analyzer文件)

  • 用途 :与.rvl配合使用,.rva文件定义了Reveal Analyzer工程,包含了波形视图中信号显示的相关数据。用于在采集到数据后进行分析。

五、中间文件与报告文件

在设计的各个阶段,Lattice工具也会生成各种中间文件和报告,用于调试、网表传递和设计检查。

文件后缀 主要用途 关键特点
.ngd 原生通用描述文件,包含设计的逻辑描述和层次结构 ngdbuild的产物,用于映射到物理元件
.ncd 原生电路描述文件,分为_map.ncd(映射后)和最终带布局布线信息的.ncd 相当于FPGA的物理版图描述
.ngo 原生通用对象文件,由EDIF转换而来,是映射过程的输入 可作为黑盒模块
.edf/.edn EDIF网表文件,综合工具(如Synplify)的标准输出 用于在不同EDA工具间传递设计
.v/.vhd Verilog/VHDL源文件或仿真文件 设计的逻辑描述
.vo/.vho 后仿真网表文件(Verilog/VHDL格式) 用于布局布线后的功能仿真
.sdf 标准延时格式文件,包含时序信息 用于后仿真中的时序标注
.twr 时序报告文件,TRACE工具的产物 分析设计是否满足时序要求
.par 布局布线报告文件 查看布局布线过程中的信息和警告
.ior I/O时序分析报告 查看端口的建立、保持时间和时钟到输出的延时

总结:如何为你的Lattice项目选择正确的文件?

  • 在线调试 :选择 .bit 文件,通过编程器直接下载到FPGA的SRAM中,快速验证逻辑功能。
  • 固化到内部Flash(如MachXO2) :生成 .jed 文件,直接编程器件,实现上电启动。
  • 固化到外部SPI Flash(如ECP5) :通过Diamond或Radiant的编程工具,生成 .mcs.hex 文件,用于烧录外部Flash。
  • 使用IP核 :记住 .lpc (Diamond) 或 .ipx (Radiant) 文件是你修改和配置IP的关键入口。
  • 进行时序约束和引脚分配 :你需要编辑 .lpf 文件。
  • 片上调试 :你需要创建 .rvl 文件来配置探针,并用 .rva 来分析波形。
  • 查看设计结果 :翻阅 .twr (时序)、 .par (布局布线) 等报告文件,确认设计质量和健康状况。

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

相关推荐
芯门16 小时前
基于 Xilinx K7 FPGA 的全套万兆 10G GigE Vision 商业级传输方案
计算机视觉·fpga开发·万兆gige
ehiway16 小时前
FPGA在未来产业中的应用潜力与商业机会分析
fpga开发
GateWorld17 小时前
FPGA内部模块详解之第1篇 FPGA内部结构总览
fpga开发·fpga内部模块
爱吃汽的小橘18 小时前
驱动GPIO使用GPIO中断模式
fpga开发
普密斯科技18 小时前
精准把控每一处细节——FPGA焊点高度精准检测实施方案
人工智能·深度学习·数码相机·计算机视觉·fpga开发·测量
FPGA_小田老师20 小时前
Xilinx AXI UART Lite IP核:IP核深度解析
fpga开发·uart·串口通讯·axi转uart
GateWorld1 天前
FPGA内部模块详解之二 FPGA的逻辑“心脏”——可编程逻辑块(PFU/CLB)深度解析
fpga开发·fpga内部结构
Saniffer_SH1 天前
【高清视频】如何针对电动汽车进行通信可靠性测试、故障注入与功率分析?
服务器·驱动开发·测试工具·fpga开发·计算机外设·硬件架构·压力测试
博览鸿蒙1 天前
基于FPGA技术的数字存储示波器设计探讨
fpga开发