有很多小白想要从事FPGA,选择成为FPGA工程师,但对于FPGA的开发流程及内容不太了解,所以本文将归纳总结FPGA的具体开发流程,希望对小伙伴们有所帮助。
HDL(Hardware Design Language)和原理图是两种最常用的数字硬件电路描述方法,HDL设计法具有更好的可移植性、通用性和模块划分与重用性的特点,在目前的工程设计中被广泛使用,所以我们在使用FPGA设计数字电路时,其开发流程是基于HDL。
1、需求定义(功能定义)
设计和实现一个系统的第一步,是明确整个系统的性能指标,然后进一步将系统功能划分为可实现的具体功能模块,同时明确各模块的功能与基本时序,还可大致确定模块间的接口,如时钟、读写信号、数据流和控制信号等。
2、RTL级HDL描述
RTL级(寄存器传输级)指不关注寄存器和组合逻辑的细节,通过描述寄存器到寄存器之间的逻辑功能的HDL设计方法。RTL级比门级更抽血,同时也更简单和高效。RTL级的最大特点是开源直接用综合工具将其综合为门级网表、RTL级设计直接决定着系统的功能和效率。
3、功能仿真(前仿真)
功能仿真也叫作综合前仿真,目的是验证RTL级描述是否与设计意图一致,为了提高效率,功能仿真需建立testbench,其测试激励一般使用行为级HDL语言描述。
4、管脚分配与设计约束
无论是RTL级还是门级的HDL设计方法,在实现该逻辑时都需要与实际的FPGA芯片相匹配。管脚分配是指将设计文件的输入输出信号指定到器件的某个管脚,设置此管脚的电平标准、电流强度等。设计约束指对设计的时序约束和在综合、布局布线阶段附加的约束等。
5、综合
将RTL级HDL语言翻译成由与、或、非门等基本逻辑单元组成的门级连接(网表),并根据设计目标与要求(约束条件)优化所生成的逻辑连接,输出门级网表文件。
6、门级仿真(综合后仿真)
在综合后通过后仿真来检查综合结果是否与原设计一致,一般,综合后仿真和功能仿真的测试激励相同,由于综合工具日益完善,在目前的FPGA设计中,这一步骤被省略掉。
7、布局布线
布局布线是指使用综合后的网表文件,将工程的逻辑与时序要求与器件的可用资源相匹配,也可以简单地将布局布线理解为对FPGA内部查找表和寄存器资源的合理配置,那么“布局”可以理解成挑选可实现设计网表的最优资源组合,“布线”是指将这些查找表和寄存器资源以最优方式连接起来。
8、时序/时延分析
通过时序/时延分析获得布局布线后系统的延时信息,不仅包括门]延时,而且还有实际的配置与下载布线延时。时序/时延分析的时序仿真是最准确的,能较好地反映芯片的实际工作情况,同时发现时序违规(Timing Violation), 即不满足时序约束条件或者器件固有时序规则(建立时间、保持时间)的情况。
9、配置与下载
通过编译器将布局布线后的配置文件下载至FPGA中,对其硬件进行编程。配置文件一般为.pdf或.sof文件格式,下载方式包括AS(主动)、PS(北斗)、JTAG(边界扫描)等方式。