快速理解FPGA设计流程及工具软件

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

跑包最快的软件

这是一篇关于FPGA和Verilog HDL的快速入门教程的第二讲。本系列教程旨在帮助初学者入门FPGA和Verilog HDL。本文首发于作者的微信公众号“花蚂蚁”,如果您想追踪教程的更新,请关注作者的公众号,后续还会有视频教程发布。

一、FPGA设计流程

跑包最快的软件

FPGA设计流程是使用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的设计流程如上图所示,包括设计定义、代码实现、功能仿真、逻辑综合、前仿真、布局布线、后仿真和板级调试等步骤。

1.设计定义

设计定义阶段主要进行方案验证、系统设计和FPGA芯片选型等准备工作。根据任务要求,评估系统的指标和复杂度,对工作速度、芯片资源和成本等方面进行权衡,选择合理的设计方案和器件类型。这个阶段通常需要花费大量时间,完成系统建模、功能划分、模块划分和设计文档撰写等工作。

2.代码实现

代码实现阶段是使用硬件描述语言(HDL)将划分好的功能模块表达出来。常用的硬件描述语言有Verilog HDL和VHDL。在本教程中,我们将重点讲解如何使用Verilog HDL进行FPGA设计。下面是一个四选一电路的代码实现过程。

跑包最快的软件

常用的代码编辑器软件有Notepad++和UltraEdit等,它们支持几乎所有主流编程语言的高亮显示、代码补全和自定义快捷键等功能。它们外观漂亮、功能强大,具有丰富的插件包,可以极大地提高工作效率。

3.功能仿真

功能仿真是在编译之前对设计的电路进行逻辑功能验证。在功能仿真中,不考虑延迟信息,只对初步的功能进行检测。这里我们补充一个关于延迟的知识点。

跑包最快的软件

信号在电路中传输时会有两种延迟:器件延迟和路径延迟。器件延迟是信号在经过器件传输时的延迟时间,与器件本身特性相关;路径延迟是信号经过连接线时的延迟时间,与连线长度成正比。在功能仿真中,这些延迟信息都被视为零。

4.逻辑综合

逻辑综合是将高级抽象层次的语言描述转化为较低层次的电路结构的过程。它将硬件描述语言描述的电路逻辑转化为与门、或门、非门、触发器等基本逻辑单元的互连关系,也就是我们常说的门级网表。以四选一电路为例,综合过程将Verilog代码翻译成门级互连网表。

跑包最快的软件

综合是一个创造性的转化过程,它不仅可以翻译电路,还可以优化电路。例如,去除电路描述中的冗余结构或复用功能相同的电路结构。Verilog中的可综合语法主要用于电路设计,而不可综合语法用于仿真测试。在后续的教程中,我们将介绍可综合和不可综合的Verilog语法。

5.前仿真

前仿真,也称为综合后仿真,是在综合生成的标准延时文件中对设计网表进行仿真。由于综合后的网表只能体现基本逻辑门之间的互连关系,而没有连线长度信息,因此前仿真只能评估门延时带来的影响,无法估计路径延时。前仿真结果与布局布线后的实际情况可能存在一定差距,不够准确。目前的综合工具较为成熟,一般的设计可以省略前仿真。但如果在布局布线后发现电路功能与设计意图不符,就需要回溯到前仿真来确定问题所在。

6.布局布线

布局布线是将门级网表中的门的位置和连线信息确定下来的过程。综合后生成的门级网表只是表示门与门之间的虚拟连接关系,并没有规定每个门的位置和连线长度。布局布线的过程将每个门实际配置到固定位置的可编程逻辑块(CLB)中。

跑包最快的软件

在布局布线之前,我们先回顾一下FPGA的结构。FPGA拥有大量的可配置逻辑块(CLB)、丰富的布线资源以及其他资源。布局是将门级网表中的每个门放置到CLB中的过程,这是一个映射的过程。布线是利用FPGA中的布线资源将CLB根据逻辑关系连接在一起的过程。门的映射位置不是随意的,而是经过算法计算后精心排列的。布局布线策略通常是占用最少的CLB并尽量缩短连线长度,以实现面积和速度的最优化。布局布线策略有两种:速度优先和面积优先,往往不能同时达到两者的最优,因此在布局布线时需要在速度和面积之间做出选择。

布局布线完成后,可以进行静态时序分析。静态时序分析的方法是在布局布线后的实际电路中寻找寄存器和寄存器之间的最长路径延迟,通过最大延迟可以得出系统的最大时钟速率。静态时序分析也是由EDA工具自动完成的,延迟路径信息可以在生成的时序报告中进行分析。关于时序分析的概念,我们将在后续的教程中详细讲解。

7.后仿真

后仿真,也称为时序仿真,是将布局布线的延时信息反标注到设计网表中,以检测是否存在时序违规。经过布局布线后,门与门之间的连线长度也确定了,因此后仿真包含的延迟信息最全面、最精确,能更好地反映芯片的实际工作情况。

现在,我们可以总结一下功能仿真、前仿真和后仿真的区别:

  • 功能仿真:无延迟信息。
  • 前仿真:只有门级延迟。
  • 后仿真:门级延迟和连线延迟。

8.板级调试

FPGA设计不仅仅是在计算机上进行仿真,最终还需要在电路板上应用。设计的最后一步是板级调试,将EDA软件生成的数据文件(位数据流文件)下载到FPGA芯片中,进行实际的测试。FPGA工程师还需要具备一定的硬件知识,能够理解电路板原理图设计和PCB布局。最好的情况是能够独立设计原理图。

为了帮助初学者更好地理解FPGA的设计流程,我举了一个比喻,请看下图:

跑包最快的软件

FPGA的设计流程可以类比为盖房子的过程。代码实现、综合和布局布线是FPGA设计流程中的关键步骤。下面我将通过一个比喻来更好地解释这几个步骤的作用:

  • 代码实现:假设我要盖一座房子,我将房子的特点描述出来,比如面积、阳台、装修风格、挑高高度、房间数量等等要求。这个描述房屋特点的过程类似于使用Verilog描述电路功能的过程。
  • 逻辑综合:建筑师根据我们的要求绘制施工图纸,施工图纸将我们的需求具体化,包括墙的高度、门的宽度、窗户的面积等等。这个过程类似于综合的过程,将房屋需求翻译成具体的数字化图纸。不同的是,综合是将电路功能翻译成门级网表,而建筑师所做的工作类似于综合工具软件的工作。
  • 布局布线:工人根据图纸(综合后的网表)使用砖、水泥、钢筋、木材等材料建造房屋的过程。这个过程类似于布局布线的过程。图纸规定了墙的位置,但没有规定具体使用哪块砖来砌墙,工人可以自主决定使用哪些砖。布局布线是根据综合后的网表,利用FPGA芯片内部的可编程逻辑块(CLB)、布线资源和时钟资源等搭建电路的过程。

综合和布局布线过程中涉及到约束策略的问题,比如管脚约束、时钟约束、面积和速度优先级等。这些概念在盖房子的过程中也有对应,比如你可以要求阳台的大小、卧室的朝向、门窗的高度等。在采购建筑材料时,你也会在成本和质量之间做出平衡。这些都类似于综合和布局布线过程中的约束条件。

二、FPGA厂家、产品系列及设计软件介绍

  1. FPGA厂家

跑包最快的软件

FPGA市场目前呈现出“两大两小”的格局,由美国的Xilinx和Intel垄断市场,占据近90%的市场份额。另外两家小众的FPGA厂家是Microsemi和Lattice,它们主要专注于特殊市场,如军工和航天市场所使用的反熔丝FPGA。初学者学习Xilinx和Intel的FPGA即可,官方网站上有丰富的资料,而且开发板相对较便宜。

  1. FPGA产品系列

跑包最快的软件

主流的FPGA产品系列有Xilinx和Intel。Xilinx的产品系列包括6系(45nm)、7系(28nm)、UltraSCALE(20nm)和UltraSCALE+(16nm),按型号系列分为Spartan、Artix、Kintex和Virtex等系列,还有嵌入式系统开发的Zynq系列。Intel的产品系列包括MAX系列、Cyclone系列、Arria系列、Stratix系列、Agilex系列和SoC FPGA系列。

对于初学者来说,选择第一块开发板时建议选择Xilinx Spartan6系列开发板或Intel Cyclone IV开发板。这两种器件应该能够满足初学者的设计需求。当然,如果预算充足,也可以选择更高级的开发板。

  1. 设计软件

FPGA设计软件的使用与FPGA的设计流程是一致的。因此,学会使用其中一种软件后,再使用其他软件也会很容易上手。Xilinx的设计软件包括ISE和Vivado。ISE设计套件支持Spartan-6、Virtex-6和CoolRunner系列器件,以及它们的上一代器件系列。Vivado Design Suite是针对Virtex-7、Kintex-7、Artix-7和Zynq-7000等器件的全新设计套件。换句话说,如果您使用7系及更高级别的器件,请使用Vivado;如果使用6系及更早的器件,请使用ISE。ISE和Vivado都支持与第三方仿真平台的接口,其中最常用的第三方仿真软件是ModelSim。ISim是ISE自带的仿真工具,两者的功能相似。由于ModelSim在运行大型工程时速度更快,因此使用ModelSim的人较多。在后续的教程中,我们将使用ModelSim进行演示。

Intel的设计软件是Quartus,目前最新版本是19版。它分为三个版本:Quartus Prime Lite、Quartus Prime Standard和Quartus Prime Professional。其中,Quartus Prime Lite是免费的,无需付费许可,并且内置了ModelSim仿真软件。

总之,学习FPGA时,不仅要学习FPGA的设计思想和原理,还要注重动手实践。选择一款操作平台和软件是为了更好地进行实践,而不是为了局限于某个软件或平台。因为如果不理解原理,换个环境也无法理解。

赞(0)