一、FPGA基础知识

1 FPGA专业术语索引表

缩写全称注释ASICApplication-Specific Integrated Circuit专用集成电路,与FPGA相对,是一种定制的芯片,用于特定的应用领域,如电信、工业、汽车、医疗等。Bitstream/位流,是FPGA中的配置文件,包含了FPGA的逻辑配置信息。FPGA中用于配置逻辑的二进制文件。BRAMBlock RAM块RAM。BRAM是FPGA中的内存模块,可实现快速的读写操作。CDCClock Domain Crossing时钟域交叉(跨时钟域),处理FPGA中不同时钟域之间的数据传输。CLBConfigurable Logic Block可配置逻辑块,由多个LUT和其他逻辑单元组成的可编程逻辑块,是FPGA的基本逻辑单元。CLKClock时钟信号,FPGA中用于同步各个模块的信号。Clock Manager/时钟管理器。时钟管理器是FPGA中的模块,可实现时钟信号的分配和管理。Clock Skew/时钟偏差,FPGA中时钟信号传输过程中的延迟。CTSClock Tree Synthesis时钟树综合,FPGA中将时钟信号传输到各个模块的过程。DDRDouble Data Rate双倍数据率,一种高速存储器传输技术。Design Flow/设计流程。Design Flow是FPGA设计的整个流程,包括设计、仿真、综合、布局、布线等环节。DSPDigital Signal Processor数字信号处理器,FPGA中常用的数字信号处理模块,专用逻辑单元,可实现高速数字信号处理。Dynamic Timing Analysis/动态时序分析,分析FPGA在运行过程中的时序关系。Embedded FPGA/嵌入式FPGA,将FPGA集成到SoC中的技术。EDAElectronic Design Automation电子设计自动化,FPGA设计中常用的工具。FFFlip-Flop触发器,用于存储数据。Floorplanning/平面布局,将逻辑块放置在FPGA中的过程。FPGAField-Programmable Gate Array现场可编程门阵列,一种可编程逻辑器件。FPGA Acceleration/FPGA加速,使用FPGA加速计算或处理。FPGA Architecture/FPGA架构,FPGA中逻辑块、存储器、输入输出等组成的结构。FPGA-based AI/基于FPGA的人工智能,使用FPGA实现人工智能计算。FPGA-based Computing/基于FPGA的计算,使用FPGA实现计算任务。FPGA-based Cryptography/基于FPGA的加密技术,使用FPGA实现加密和解密任务。FPGA-based Edge Computing/基于FPGA的边缘计算,使用FPGA实现边缘计算任务。FPGA-based Vision Processing/基于FPGA的视觉处理,使用FPGA实现视觉处理任务。FPGA Cloud/FPGA云,云计算中使用FPGA进行计算。FPGA Cluster/FPGA集群,多个FPGA组成的计算集群。FPGA Prototyping/FPGA原型设计,用FPGA实现电子系统的原型设计。Hard IP/硬IP,FPGA中不可配置的硬件模块。Hard IP是FPGA中的硬件模块,可实现特定功能的硬件加速。HDLHardware Description Language硬件描述语言,用于FPGA设计的编程语言。HLSHigh-Level Synthesis高层次综合,将高级语言转换为硬件电路的过程。IOBInput/Output Block输入输出块,FPGA中用于控制输入输出的模块,可实现多种输入输出方式。IPIntellectual Property知识产权,FPGA中常用的可重用模块。JTAGJoint Test Action Group联合测试行动组,一种用于测试和调试电子设备的标准。JTAG是FPGA中的调试接口,可实现FPGA的调试和测试。LUTLook-Up Table查找表,FPGA中常用的逻辑实现方式,是FPGA中最基本的逻辑单元,可以实现任意逻辑函数。MUXMultiplexer多路选择器,用于实现复杂逻辑。Partial Reconfiguration/部分重配置,FPGA中只重配置部分逻辑块的技术。Place and Route/布局与布线,将逻辑块放置在FPGA中并进行布线的过程。Place and Route Optimization/布局和布线优化,优化FPGA中各个模块之间的布局和布线。PLLPhase-Locked Loop锁相环,用于时钟同步,是FPGA中的时钟管理模块,可实现时钟信号的锁相和频率合成。Power Analysis/功率分析,分析FPGA在运行过程中的功耗。Power Optimization/功耗优化,优化FPGA在运行过程中的功耗。Routing/布线,FPGA中将各个逻辑块连接起来的过程。RTLRegister Transfer Level寄存器传输级,FPGA设计中的一种抽象级别。RTL Design/寄存器传输级设计,FPGA设计中的一种抽象级别。SDRAMSynchronous Dynamic Random Access Memory同步动态随机存取存储器,FPGA中常用的存储器模块。SoCSystem on Chip 片上系统,将多个电子元件集成在一块芯片上的技术。SoC是FPGA中的系统级集成模块,可实现集成多种硬件和软件模块。

Soft IP/软IP,FPGA中可配置的软件模块。Soft IP是FPGA中的软件模块,可实现特定功能的软件加速。Static Timing Analysis/静态时序分析,分析FPGA中各个模块之间的时序关系。Synthesis/综合,将高级语言转换为硬件电路的过程。Timing Analysis/时序分析,分析FPGA中各个模块之间的时序关系。Verilog/一种硬件描述语言,用于FPGA设计。VHDLVHSIC Hardware Description Language高速集成电路硬件描述语言,一种用于FPGA设计的编程语言。Xilinx-7/ Xilinx公司推出的第七代FPGA芯片系列,是一种可编程逻辑器件(Field-Programmable Gate Array),可以根据用户的需求进行编程和配置,用于实现各种数字电路功能。

2 FPGA的结构

2.1 FPGA简介

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前FPGA的两大主要厂商为Xilinx和Altera。

Xilinx:公司网址为:www.xilinx.com。FPGA市场的龙头老大,市场份额接近50%,其主要产品包括:Sparten系列、Virtex系列、Artix系列、Kintex系列、Zynq系列等。开发工具:其第六代及以前的产品的开发工具为ISE ,从第七代产品开始,已全部转移到Vivado平台。Vivado是Xilinx公司推出的一款FPGA设计开发工具,可以用于设计、仿真、综合、实现和验证FPGA芯片的电路和系统。

Altera:公司网址为:www.altera.com,FPGA市场的二当家,市场份额40%以上,2015年6月被Intel以167亿美元收购。主要产品包含:Max系列、Cyclone系列、Arria系列、Stratix系列等。主要开发工具:Quartus。

此外,Lattice、Actel、Atmel等公司也有FPGA产品,由于市场份额小,市面上很少见到,此处不再介绍。

FPGA产品种类多种多样,但原理都是相同的。在介绍FPGA的结构之前,先对数字电路中所学的知识做一个简单的回顾。

现如今的集成电路绝大部分采用CMOS工艺,CMOS电路是互补型金属氧化物半导体电路(Complementary Metal-Oxide-Semiconductor)的英文字头缩写,它由绝缘场效应晶体管组成,由于只有一种载流子,因而是一种单极型晶体管集成电路,其基本结构是一个N沟道MOS管和一个P沟道MOS管。NMOS和PMOS可以认为是两种开关电路,两种电路均包含G(栅极)、D(漏极)、S(源极)三个极:对于NMOS,当G为高电平时,D、S导通,否则截止;对于PMOS,当G为低电平时,D、S导通,否则截止。

一个NMOS和一个PMOS可构成一个CMOS反相器:vi为高电平时,PMOS截止,NMOS导通,vo输出低电平;vi为低电平时,PMOS导通,NMOS截止,vo输出高电平。

其逻辑表达式可写成 :

Vo=~Vi

同理,可构成CMOS的与非门、或非门:

通过非门、与非门、或非门可实现所有的组合逻辑电路,多个与非门可组成一个带有复位、置位功能的D触发器,而D触发器则是时序逻辑电路的最核心部件。

由此可知,通过非门、与非门、或非门的有序堆叠,可实现任意功能的数字电路,如果有一款电路,其基本单元可配置成各种基本门,则其就具备了硬件编程能力。

2.1.1 LUT

FPGA基于查找表(LUT,Look Up Table)技术的可编程逻辑器件,通过配置,LUT可实现与门、或门、与非门、或非门或者其他简单组合逻辑功能,其本质上就是1bit位宽的RAM。如下图所示为一个2输入的查找表,通过输入a和b,控制选择器的通路,实现与门、或门和非门的功能。

以目前比较流行的Spartan6芯片为例来说明,其最底层便是一个6输入查找表(可拆成两个5输入LUT使用)以及两个D触发器的结构:

2.1.2 Slice

Slice是Xilinx FPGA的最基本单元,包含4个6输入LUT,3个数据选择器(MUX),1个进位链及8个D触发器:

Xilinx的FPGA中包含三类Slice :SliceL、SliceM和SliceX。SLICEL(Logic-Only Slice)是仅包含逻辑资源的Slice,通常用于实现组合逻辑和简单的时序逻辑。SLICEL中的资源包括查找表(LUT)、触发器(Flip-Flop)和多路复用器,但不包含专用的算术逻辑单元(如进位链)。SLICEM(Memory-Enhanced Slice)是增强型Slice,除了包含逻辑资源外,还包含分布式RAM和移位寄存器资源。SLICEM可以用于实现更复杂的逻辑功能,如小型存储器、移位寄存器和算术运算。SLICEM中的查找表(LUT)可以配置为分布式RAM或移位寄存器,提供了更高的灵活性和资源利用率。在某些高端FPGA系列中,还存在SLICEX(Specialized Slice),这是一种专用Slice,通常用于实现特定的高性能功能,如高速算术运算、DSP功能等。SLICEX中的资源经过优化,能够提供更高的性能和更低的功耗。

2.1.3 MUX

6-LUT本身可以实现4位的多路选择器,利用3个MUX和4个6-LUT可以实现16位MUX

2.1.4 进位链

利用进位链可以在slice中快速进行加减法运算,同时进位链可以级联形成更宽的加减逻辑。

以8位加法器为例观察综合后的RTL网表:

可以注意到8位加法运算用到两个进位链CARRY4。进位链的级联数越多,路径延时越大,时序越紧张,因此设计位宽较大的计数器,可以选择DSP替换,也可以选择将位宽分隔。

2.1.5 D触发器

D触发器是一种基本的时序逻辑元件,用于存储一个二进制位。它在时钟信号的上升沿或下降沿将输入数据(D)传递到输出(Q)。D触发器常用于寄存器、计数器、状态机等电路中。

2.1.6 CLB

CLB(Configurable Logic Blocks)是Sparten6 的主要资源,包含两个Slice,如下图所示:

多个CLB再加上丰富的互联开关,便构成了Xilinx公司FPGA的最核心框架。

下图是xilinx一款型号为XC6SLC45T的FPGA在planAhead中的视图

从图中可以看出,FPGA内部,除了大量的CLB资源,用于实现可编程逻辑外,还有一些其它的硬件资源,包括block ram、内存控制器、时钟管理(CMT)单元、数字信号处理(DSP)端口控制(IOB)单元等,大大提高了其可编程性,几乎可以实现所有的数字电路功能。

下面是在planahead中对xc6slx4-2tqg144芯片的截图,通过这些图片,可以对其结构有一个整体的了解。更多的细节性问题,需要大家在实际使用过程中逐步掌握。

2.2 FPGA基本单元

2.2.1 可编程输入输出单元(IOB)

可编程输入/ 输出单元简称I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/ 输出信号的驱动与匹配要求,其示意结构如图2-4 所示。FPGA 内的I/O 按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O 口的频率也越来越高,一些高端的FPGA 通过DDR 寄存器技术可以支持高达2Gbps 的数据速率。

IOB 模块

外部输入信号可以通过IOB 模块的存储单元输入到FPGA 的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB 模块的存储单元输入到FPGA 内部时,其保持时间(Hold Time) 的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA 的IOB 被划分为若干个组(bank),每个bank 的接口标准由其接口电压VCCO 决定,一个bank 只能有一种VCCO,但不同bank 的VCCO 可以不同。只有相同电气标准的端口才能连接在一起,VCCO 电压相同是接口标准的基本条件。

2.2.2 可配置逻辑块(CLB)

CLB 是FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同,但是每个CLB 都包含一个可配置开关矩阵,此矩阵由4 或6 个输入、一些选型电路( 多路复用器等) 和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在赛灵思公司公司的FPGA 器件中,CLB 由多个( 一般为4 个或2 个) 相同的Slice 和附加逻辑构成,如下图所示。每个CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM 和分布式ROM。

Slice 是赛灵思公司公司定义的基本逻辑单位,其内部结构如图所示,一个Slice 由两个4 输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。

典型的4输入Slice结构示意图

算术逻辑包括一个异或门(XORG) 和一个专用与门(MULTAND),一个异或门可以使一个Slice 实现2bit 全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC) 组成,用于实现快速的算术加减法操作;4 输入函数发生器用于实现4 输入LUT、分布式RAM 或16 比特移位寄存器(Virtex-5 系列芯片的Slice 中的两个输入函数为6 输入,可以实现6 输入LUT 或64 比特移位寄存器) ;进位逻辑包括两条快速进位链,用于提高CLB 模块的处理速度。

2.2.3 数字时钟管理模块(DCM)

业内大多数FPGA 均提供数字时钟管理( Xilinx的全部FPGA 均具有这种特性)。Xilinx推出最先进的FPGA 提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。

2.2.4 嵌入式块RAM(BRAM)

大多数FPGA 都具有内嵌的块RAM,这大大拓展了FPGA 的应用范围和灵活性。块RAM 可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM) 以及FIFO 等常用存储结构。RAM、FIFO 是比较普及的概念,在此就不冗述。CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM 中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA 中的LUT 灵活地配置成RAM、ROM 和FIFO 等结构。在实际应用中,芯片内部块RAM 的数量也是选择芯片的一个重要因素。

单片块RAM 的容量为18k 比特,即位宽为18 比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量( 位宽 深度) 不能大于18k 比特;其次,位宽最大不能超过36 比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。

2.2.5 丰富的布线资源

布线资源连通FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/ 置位的布线;第二类是长线资源,用以完成芯片Bank 间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。

2.2.6 底层内嵌功能单元

内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP 等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片FPGA 成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC 平台过渡。

DLL 和PLL 具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。赛灵思公司生产的芯片上集成了DCM 和DLL,Altera 公司的芯片集成了PLL,Lattice 公司的新型芯片上同时集成了PLL 和DLL。PLL 和DLL 可以通过IP 核生成的工具方便地进行管理和配置。DLL 的结构如下图所示。

2.2.7 内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA 处理能力强大的硬核(Hard Core),等效于ASIC 电路。为了提高FPGA 性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA 的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA 内部都集成了串并收发器(SERDES),可以达到数十Gbps 的收发速度。

赛灵思公司的高端产品不仅集成了Power PC 系列CPU,还内嵌了DSP Core 模块,其相应的系统级设计工具是EDK 和Platform Studio,并依此提出了片上系统(System on Chip) 的概念。通过PowerPC™、Miroblaze、Picoblaze 等平台,能够开发标准的DSP 处理器及其相关应用,达到SOC 的开发目的。

此外,新推出赛灵思的FPGA 系列如Virtex-5 LXT 还内建了PCI Express 和三态以太网MAC 硬核(TEMAC),与软核实现方式相比,硬核可以把功耗降低5~10 倍, 节约将近90% 的逻辑资源。

Xilinx 三态以太网MAC 核是一个可参数化的核,非常适合在网络设备中使用, 例如开关和路由器等。可定制的TEMAC 核使系统设计者能够实现宽范围的集成式以太网设计,从低成本10/100 以太网到性能更高的1GB端口。TEMAC 核设计符合 IEEE 802.3 规范的要求,并且可以在 1000Mbps、100 Mbps 和 10 Mbps 模式下运行。

另外,它还支持半双工和全双工操作。TEMAC 核通过 Xilinx CORE Generator™ 工具提供,是 Xilinx 全套以太网解决方案的一部分。

3 软核、硬核与固核

IP(Intelligent Property) 核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC 阶段,IP 核设计已成为ASIC 电路设计公司和FPGA 提供商的重要任务,也是其实力体现。对于FPGA 开发软件,其提供的IP 核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP 核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。从IP核的提供方式上,通常将其分为软核、固核和硬核这3类。从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。

3.1 软核(Soft IP Core)

软核在EDA设计领域指的是综合之前的寄存器传输级(RTL) 模型;具体在FPGA 设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP 核应用最广泛的形式。

3.2 固核(Firm IP Core)

固核在EDA设计领域指的是带有平面规划信息的网表;具体在FPGA 设计中可以看做带有布局规划的软核,通常以RTL 代码和对应具体工艺网表的混合形式提供。将RTL 描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。目前,固核也是IP 核的主流形式之一。

3.3 硬核 (Hard IP Core)

硬核在EDA设计领域指经过验证的设计版图;具体在FPGA 设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP 硬核的不许修改特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。

4 设计流程和工具

4.1 设计流程

FPGA开发主要包括系统设计、设计输入、功能仿真、综合优化、综合后仿真、实现与布局布线、时序方针与验证、板级方针与验证、芯片编程与调试等9个部分,如下图所示。

4.1.1 电路设计

在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。

4.1.2 设计输入

将设计的系统或电路硬件描述语言表示出来,输入至EDA工具中。如:Verilog HDL和VHDL等。

4.1.3 功能仿真

功能仿真也称为前仿真,即仅对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。如发现错误,则返回“设计输入”修改逻辑设计。

4.1.4 综合

综合就是将高级抽象层次的描述转换成较低层次的描述。综合优化是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,从而优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。

4.1.5 综合后仿真

综合后仿真用于检查综合结果与原设计是否一致,在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中,可估计门延时带来的影响。但还无法估计线延时,和布局布线后的实际情况由一定的差距。

4.1.6 实现与布局布线

实现是将从何生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中关键步骤。布局过程是将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部固有的硬件结构上;布线则是根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。

4.1.7 时序仿真与验证

时序仿真也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规,时序仿真包含的延迟信息最准确,能较好地反映芯片的实际工作情况。

4.1.8 板级仿真与验证

板级仿真主要应用于高速电路设计中,对高速心态的信号完整性、电磁干扰等特性进行分析。

4.1.9 芯片编程与调试

4.2 设计工具

4.2.1 Vivado

‌.cache‌:存储Vivado软件的运行缓存。

‌ .hw‌:保存所有波形文件。

‌ .ip_user_files‌:管理用户自定义IP相关的文件。

‌ .runs‌:包含编译与综合结果,其中.bin和.bit文件是编译生成的可执行文件。

‌.sdk‌:用于SDK环境代码,通常是ZYNQ设计中关于处理系统(PS)端的代码。

‌ .sim‌:存储仿真结果。

‌ .srcs‌:保存所有用户编写的源码、仿真文件与约束文件。

‌ .xpr‌:Vivado工程启动文件‌。

‌.dcp文件‌:在综合和布局布线过程中产生,包含物理约束、设备约束、网表以及设备信息,用于不同阶段的输入文件‌。

‌ .xdc文件‌:Vivado的约束文件,定义硬件设计的约束条件,如时钟频率和时序‌。

‌ .xci文件‌:定制IP产生的文件,包含定制IP核的所有信息‌。

‌ .rpt文件‌:记录各个过程报告的文件,包含过程中的一些信息‌。

4.2.2 Quartus

设计文件‌:

.v:Verilog设计文件,用于描述硬件逻辑的文本文件,采用Verilog HDL语言编写‌。

.vhd或.vht:VHDL设计文件,另一种用于描述硬件逻辑的文本文件,采用VHDL语言编写‌。

.gdf:图形设计文件,用于描述硬件设计‌。

.bdf:块设计文件,用于描述硬件设计‌。

.tdf:文本设计文件,用于描述硬件设计‌。

.atm:ATOM网表文件,用于描述硬件设计‌。

.edf或.edif:EDIF输入文件,用于描述硬件设计‌。

‌存储器初始化文件‌:

.mif、.rif、.hex:用于初始化FPGA内部存储器(如ROM、RAM)的文件,包含初始化的数据‌。

‌配置文件‌:

.qsf:Quartus设置文件,用于配置项目的设置,如引脚分配、编译选项等‌。

.tcl:Tool Command Language脚本文件,用于自动化Quartus软件的某些操作‌。

‌ 工程文件‌:

.qpf:Quartus工程文件,包含工程的所有设置和文件引用‌。

‌编译过程中生成的中间文件‌:

.eqn文件和db目录下的所有文件:这些文件是编译过程中生成的中间文件,用于Quartus内部处理,通常不需要用户直接操作‌。

‌编译结束后生成的报告文件‌:

.rpt、.qsmg等:报告文件,包含编译结果、时序分析报告、资源使用情况等信息,用于评估和优化设计‌。

‌ 编程下载文件‌:

.sof(SRAM对象文件):用于下载到FPGA的SRAM中,实现即时编程,但断电后配置会丢失‌。

.pof(编程对象文件):用于下载到FPGA的配置存储器(如Flash)中,实现永久编程,断电后配置不会丢失‌。

.jic文件:特定情况下用于将.sof文件固化到Flash等存储器中,以便在断电后保持配置‌。

.rbf文件:用于通过外部主机或特定启动阶段(如uboot或Linux应用程序)配置FPGA的二进制数据量格式文件‌。

‌其他文件‌:

.qws等:界面配置文件,保存了用户的界面设置和工作区布局,可以根据个人使用习惯进行定制‌。

.pin:引脚分配文件,用于记录FPGA引脚的分配情况,便于在不同项目间共享引脚分配信息‌。

.summary文件:项目概述文件,提供项目的简要信息和资源使用情况‌。