第二章 FPGA开发流程

简介: 第二章 FPGA开发流程

第二章 FPGA开发流程


FPGA 的设计流程就是利用 EDA 开发软件和编程工具对 FPGA 芯片进行开发的过程。原理图和HDL(Hardware description language,硬件描述语言)是两种最常用的数字硬件电路描述方法。其中,运用 HDL 设计方法具有更好的移植性、通用性以及利于模块划分的特点,在工作学习中被广泛使用。典型 FPGA 的开发流程一般如下图所示,其包括功能定义/器件选型、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。

1670835727631.jpg


第1节 功能定义/器件选型


在 FPGA 设计项目开始之前需要进行方案论证、系统设计和 FPGA 芯片的选型等准备性工作,在确定并评估好方案后需要进行系统功能的定义和模块的划分。根据方案中任务要求,如方案中所确定的系统功能以及复杂度,对硬件的工作速度和器件自身的资源、成本、以及性能指标等各个方面进行综合考虑,选择出较合适的器件类型。在设计方法上,一般都采用自顶向下的设计方法,首先将整个系统划分成若干个基本模块,然后再将每个基本模块划分为下一层次的基本单元,这样依次划分后确定好各个模块的功能以及各个模块需要设计的输入输出信号,再通过 EDA 工具进行各个模块的设计。最终要实现的目标是:针对每个输入信号,利用 EDA 工具以及 FPGA 的资源设计出需要的输出信号逻辑。


第2节 设计输入


设计输入是指在 EDA 工具中,通过使用该开发软件设计出所希望得到的系统或电路的一个过程。


在日常工作学习中最常使用的方式是通过硬件描述语言(HDL)的方式来描绘设计出最终的数字电路。以此方式设计电路的过程需要在 EDA 软件上通过文本描述,将实际的电路用硬件语言表述出来。设计好文本后,编译器会将硬件语言进行综合、布局布线,最后转换成一个个的逻辑门、寄存器、数据选择器等实际电路。设计师接触比较多的 HDL 语言是行为 HDL,其主流语言是 Verilog HDL 和 VHDL,这两种语言都是 IEEE 的标准,虽然两者在语法结构以及设计标准上存在差别,但是都有一个共同的特点:语言与芯片工艺无关。在任一款 FPGA 芯片上,使用任何一种语言都可以设计出想要的数字电路。


另一种设计方式是使用原理图输入的方法进行设计输入。原理图输入方式是一种最直接的描述方式,通过从元件库中调出来需要的器件,画出原理图。这一方式有点类似于硬件开发过程中设计原理图的过程,其在可编程逻辑阵列发展的前期应用的比较广泛。使用这种方法具有设计直观且易于仿真的优势,但是设计效率不高,且难以维护改动,对模块的构造和重用的支持度极不友好。当芯片升级后,所有的原理图需要重新进行一定的改动,可移植性很差。


除了这 IEEE 标准语言外还有厂商自己的语言,在实际的设计中也可以用 HDL 为主,原理图为辅的混合设计方式,以发挥两者的各自特色与优势。


第3节 功能仿真


功能仿真也称为综合前仿真,用户设计好数字逻辑后需要检查自己的设计是否符合预期,在不需要综合之前通过仿真软件对电路进行逻辑验证。在功能仿真器件电路可以不用考虑延迟等因素,仅对初步的功能进行检验。通过建立测试平台即 Testbench,利用波形编译器(仿真软件)和硬件描述语言建立好波形文件和激励信号,在仿真软件上会模拟实际电路的波形显示出输出波形信号,并生成报告文件。用户通过观察各个时间点信号的变化情况来验证自己所设计逻辑的正确性。综合前仿真在 FPGA 开发过程中不是一定要进行的步骤,但却是极为关键的一步。在实际的工作学习中,充分利用好仿真工具,能够提高设计的效率并及时发现设计缺陷,从而为后续的开发过程提供保障。常用的硬件描述语言的仿真工具有 Model Tech 公司的 ModelSim、VCS、Ncsim 以及 NC-VHDL 等软件。


第4节 综合优化


所谓综合即针对给定的电路实现功能和实现该电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理获得一个能满足上述要求的电路设计方案。也就是说,被综合的文件是HDL 文件(或其他相应文件),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。常用的综合工具有 Synplicity 公司的Synplify/Sy nplify Pro 软件以及各个 FPGA 厂家自己推出的综合开发工具。


第5节 综合后仿真


综合后仿真是用来检查综合结果是否和原设计一致。后仿真与前仿真的区别在于:前仿真是指综合前的仿真,如在 Modelsim 对撰写的代码直接进行仿真,而后仿真是综合后的仿真,也就是功能仿真。假设设计师在 Modelsim 中用 HDL 编写了一个计数器代码,其通过了行为级的仿真后被加载到 quartus 或者其他的综合工具中进行综合,完成综合后会生成功能网表,将行为语言转换成寄存器传送级语言,此时设计师再将其加载到 Modelsim 中进行的仿真被叫做后仿真。后仿真成功后还需要在 quartus 中进行映射和布局布线,并进行时序分析生成时序网表,描述器件里门或者布线的延时。最后将延时网表和功能网表一起加载到 Modelsim 中仿真,这一仿真为门级仿真,而在实际的设计过程中,一般来说不做综合后仿真也不会带来太大的影响。


第6节 布局布线


布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中从而决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。实现是将综合生成的逻辑网表配置到具体的 FPGA 芯片上,布局布线是其中最重要的过程。在完成综合之后,就是相当于有了各种元件,但如何建立元件之间的连接,就像在 PCB 上把元件放在哪里,元

件之间的连接以及相连关系又是怎么样的,这个都是布局布线完成的工作,综合的结果可能每次都一样,但是布局布线的结构基本每次都不会一样。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。目前,FPGA 的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动

生成报告,提供有关设计中各部分资源的使用情况。由于只有 FPGA 芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。


第7节 时序仿真


时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估计。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的,唯一的差别是:时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中时序仿真后的信号加载了时延,而功能仿真没有。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。在功能仿真中介绍的软件工具一般都支持综合后仿真。


第8节 板级仿真与验证


板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证,在实际的工作中一般接触较少。


第9节 编程和调试


设计的最后一步就是芯片的编程与调试。编程是指将 FPGA 开发工具最后产生使用的数据文件(位数据流文件,Bitstream Generation)加载到 FPGA 芯片中。其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等,而这些条件一般厂家都会事先完成设计,设计师直接按照规范操作即可。数据文件下载到 FPGA 芯片中以后还需要进行调试验证,逻辑分析仪(Logic Analyzer,LA)便是 FPGA 设计的主要调试工具。使用 LA 需要引出大量的测试管脚,且 LA 价格昂贵,但是当工程较大、所需要调试观察的信号过多时,仍旧需要 LA 来对芯片内部的信号进行观察验证。目前,主流的 FPGA 芯片生产商都提供了内嵌的在线逻辑分析仪(如 Xilinx ISE 中的ChipScope、Altera QuartusII 中的 SignalTapII 以及 SignalProb),它们只需要占用芯片少量的逻辑资源便可达到同样的效果,在实际的工程调试中发挥了极大的作用。


以后将会详细介绍 SIGNALTAP 工具的使用。

相关文章
|
6月前
|
编译器 异构计算 内存技术
【FPGA】高云FPGA之科学的FPGA开发流程(三)
【FPGA】高云FPGA之科学的FPGA开发流程
217 0
【FPGA】高云FPGA之科学的FPGA开发流程(三)
|
6月前
|
异构计算
【FPGA】高云FPGA之科学的FPGA开发流程(二)
【FPGA】高云FPGA之科学的FPGA开发流程
214 0
|
6月前
|
芯片 异构计算
【FPGA】高云FPGA之科学的FPGA开发流程(一)
【FPGA】高云FPGA之科学的FPGA开发流程
174 0
|
11天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的1024QAM调制解调系统的仿真与实现。通过Vivado 2019.2进行仿真,分别在SNR=40dB和35dB下验证了算法效果,并将数据导入Matlab生成星座图。1024QAM调制将10比特映射到复数平面上的1024个星座点之一,适用于高数据传输速率的应用。系统包含数据接口、串并转换、星座映射、调制器、解调器等模块。Verilog核心程序实现了调制、加噪声信道和解调过程,并统计误码率。
32 1
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的64QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的64QAM调制解调通信系统的设计与实现,包括信号生成、调制、解调和误码率测试。系统在Vivado 2019.2中进行了仿真,通过设置不同SNR值(15、20、25)验证了系统的性能,并展示了相应的星座图。核心程序使用Verilog语言编写,加入了信道噪声模块和误码率统计功能,提升了仿真效率。
44 4
|
1月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
1月前
|
存储 算法 数据处理
基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统在原有的8PSK调制解调基础上,新增了高斯信道与误码率统计模块,验证了不同SNR条件下的8PSK性能。VIVADO2019.2仿真结果显示,在SNR分别为30dB、15dB和10dB时,系统表现出不同的误码率和星座图分布。8PSK作为一种高效的相位调制技术,广泛应用于无线通信中。FPGA凭借其高度灵活性和并行处理能力,成为实现此类复杂算法的理想平台。系统RTL结构展示了各模块间的连接与协同工作。
51 16
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现16QAM调制解调通信系统,使用Verilog语言编写,包括信道模块、误码率统计模块。通过设置不同SNR值(如8dB、12dB、16dB),仿真测试系统的误码性能。项目提供了完整的RTL结构图及操作视频,便于理解和操作。核心程序实现了信号的生成、调制、信道传输、解调及误码统计等功能。
42 3
|
14天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的256QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了256QAM调制解调算法的仿真效果及理论基础。使用Vivado 2019.2进行仿真,分别在SNR为40dB、32dB和24dB下生成星座图,并导入Matlab进行分析。256QAM通过将8比特数据映射到复平面上的256个点,实现高效的数据传输。Verilog核心程序包括调制、信道噪声添加和解调模块,最终统计误码率。
25 0
|
6月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。

热门文章

最新文章