明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 10340|回复: 3

【FPGA至简设计原理与应用】书籍连载02 第一篇 FPGA基础知识 第二章 FPGA开发流程

    [复制链接]
发表于 2020-5-13 14:36:41 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
温馨提示:明德扬2023推出了全新课程——逻辑设计基本功修炼课,降低学习FPGA门槛的同时,增加了学习的趣味性,并组织了考试赢积分活动
(点击→了解课程详情)http://www.mdy-edu.com/ffkc/415.html感兴趣请联系易老师:13112063618(微信同步)



本案例的编号为:001500000125,如果有疑问,请按编号在下面贴子查找答案:MDY案例交流【汇总贴】_FPGA-明德扬科教 (mdy-edu.com)
本文为明德扬原创及录用文章,转载请注明出处

大家好,近期我们会连载《FPGA至简设计原理与应用》一书,有兴趣的同学可以学习,也希望大家可以对我们的书提出宝贵的意见和建议。

FPGA至简设计原理与应用》书籍连载索引目录

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=989


读过的朋友可积极在贴后留言,书籍正式出版时,我们会从留言者中挑选20位幸运读者,幸运读者可获潘老师亲笔签名书籍一本。

注:手机浏览可能格式会乱,建议用电脑端进行浏览。





第一篇 FPGA基础知识          


第二章 FPGA开发流程

本文档编号:001500000029
需要看对应的视频,请点击视频编号: 001000000048
1. 本章主要介绍利用EDA开发软件和编程工具对FPGA芯片进行开发的过程,典型的FPGA开发流程如下:功能定义/器件选型、设计输入、功能仿真、综合优化、综合后仿真、布局布线、时序仿真、板级仿真与验证、芯片烧录与调试等主要步骤。
2. ALTERA和IVADO文档



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

111.jpg
                              

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

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


第2节 设计输入Design Entry

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

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

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


第3节 功能仿真RTL-Simulation

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


第4节 综合优化Synthesis

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

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

第6节 布局布线Place & Routes

    布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中从而决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。在完成综合之后,就是相当于有了各种元件,但如何建立元件之间的连接,就像在PCB上把元件放在哪里,元件之间的连接以及相连关系又是怎么样的,这个都是布局布线完成的工作,综合的结果可能每次都一样,但是布局布线的结构基本每次都不会一样。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。


第7节 时序仿真Timing

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


第8节 板级仿真与验证

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


第9节 编程与调试

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












MP801开发板 网络培训班 就业培训班 FPGA学习资料
吴老师18022857217

0

主题

8

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2020-5-14 14:10:57 | 显示全部楼层
千呼万唤始出来,终于等到你,学习了潘老师的设计方法之后受益匪浅,逻辑清晰易懂,坚持学习自己完成设计不是梦

0

主题

2

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2020-5-21 09:42:14 | 显示全部楼层
之前一本已入手,期待新的内容

0

主题

6

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2021-1-28 08:58:40 | 显示全部楼层

千呼万唤始出来,终于等到你,学习了潘老师的设计方法之后受益匪浅,逻辑清晰易懂,坚持学习自己完成设计不是梦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-11-22 18:09 , Processed in 0.057954 second(s), 24 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表