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的开发道路上更加得心应手,无论是进行前期的调试,还是最终的量产部署。

相关推荐
Aaron158810 小时前
RFSOC+VU13P/VU9P+GPU通用一体化硬件平台
人工智能·算法·fpga开发·硬件架构·硬件工程·信息与通信·基带工程
XINVRY-FPGA14 小时前
XC7VX485T-2FFG1157I Xilinx Virtex-7 FPGA
arm开发·嵌入式硬件·fpga开发·硬件工程·fpga
鄙人菜鸡14 小时前
Xilinx IP Aurora 8B/10B 多级光纤串联复位时序
fpga开发
是大强15 小时前
数字 IC 设计
fpga开发
十年一梦实验室16 小时前
【Gemini+Claude】根据(工业级智能3D相机)系统描述创建软硬件架构图、爆炸图 +多线程主程序、主循环
数码相机·fpga开发
tiantianuser17 小时前
RDMA设计63:怎么进行网络嗅探功能测试
网络·fpga开发·rdma·高速传输·cmac·roce v2
Risehuxyc17 小时前
Verilog语言的标准发展历程及核心要点
fpga开发
maverick_1111 天前
【FPGA】关于两个数相加的“坑”
c语言·matlab·fpga开发
碎碎思1 天前
经典复活:3dfx Voodoo 显卡,正在被 FPGA“重做一遍”
fpga开发
listhi5202 天前
基于FPGA的电压表与串口通信系统设计
fpga开发