FPGA之道(16)FPGA开发流程之项目方案与FPGA设计方案

前言

FPGA的开发遵循一定的流程,我们要学会站在巨人的肩膀上进行FPGA开发,听取前人的经验,这篇博文摘自《FPGA之道》,一起来学习下作者对于FPGA开发的丰富经验。

FPGA开发流程

FPGA项目的开发应该遵循一定的开发流程。
针对一般的FPGA项目来说,简要的开发流程框图如下:
在这里插入图片描述
结合上图我们可以看出,当开始开发一个FPGA项目的时候,首先需要进行前期的一些调研和验证工作,然后制定FPGA设计的方案,这之后才能进行FPGA代码编写并以几乎并行的时间开始功能仿真工作。跟据功能仿真的情况,可能会不断的去修改之前编写的FPGA代码,直到所有的功能仿真通过之后,才能进入到时序分析环节。若在时序分析环节中出现了问题,则需要重新返回到FPGA代码编写环节进行修改,如此往复直到时序分析环节通过,然后便可以进行上板调试工作。若在调试的环节出现了问题并确认需要修改FPGA设计代码,则重新返回到FPGA代码编写环节,如此往复直到上板调试通过,方可确认项目结束。
对于非一般的FPGA项目开发,例如SOPC相关的FPGA设计等,则需要结合其特殊性,在一般的FPGA项目开发流程的基础上做出修改、添加、删除或调整,从而灵活应对。
接下来的部分,我们将结合一般FPGA项目的简要开发流程框图,详细的介绍各个流程环节的内容、方法和注意事项,让大家对FPGA项目的开发先有一个整体上的把握。

背景知识的分析与研究

每一个FPGA项目的诞生都是为了解决一些现实中碰到的问题,因此每一个FPGA项目都有着自己对应的背景知识。这些背景知识可能包括数学、物理、化学、生物等一级学科领域,也可能是更加具体一点的通信、控制、图像等二级甚至交叉学科领域。由于我们不太可能在做FPGA项目之前对这些领域都有所涉猎,因此要想做出满足要求的FPGA设计,就少不了对相关背景知识的学习、掌握和分析。
这一环节所消耗的时间根据FPGA项目相关理论深度的不同而不同,一般来说,数据缓存、简单控制类的FPGA项目在这方面消耗的时间较少,而类似调制解调、视音频压缩等有着较强理论背景的项目,在这方面消耗的时间就会比较长。
在进行背景知识学习的时候,可以“不求甚解”。

  • 首先,任何一个学科领域都是非常博大精深的。FPGA设计者接触的项目中,其理论背景肯定会是五花八门的,因此一般来说,FPGA设计者对于这些学科领域来说都是外行。那么,所谓“外行看热闹,内行看门道”,由于我们所掌握的知识底蕴有限,因此对背景知识的学习往往不够深入。不过牛顿说过:“如果说我比别人看得更远些,那是因为我站在了巨人的肩上”,没错,正因为从古至今人类一直在进行知识的不断积累,世界才会发展到今天这样一个高度文明的社会,因此,轻易不要怀疑书中总结出的公式和定理,尽管你可能看不懂它们的推导过程,除非你是爱因斯坦(爱因斯坦的相对论推翻了牛顿三大定律的普适性,它表明牛顿三大定律只是在物体低速运动时的一个近似)。
  • 其次,任何一个FPGA项目都是有一定开发周期的,而且一般都不会太长,因此不可能给开发者太多的时间去学习背景知识。主要有这样两点原因:一、动作稍微慢一拍,市场可能就被别人抢走了。二、FPGA芯片的集成度越来越高、性能越来越好、价格越来越便宜,很多旧的系统方案可能已经完全跟不上FPGA芯片的发展的步伐。
    当然,“不求甚解”也有一个拿捏的过程。对于在FPGA上实现一些已经很成熟的理论算法,那么“不求甚解”是可以的;如果要以FPGA为平台来简化、优化或者创造一些理论算法,那么就必须对相关背景知识具有一个比较深层次的理解。
    通常来说,FPGA设计者们往往将精力更多的投放于FPGA项目具体的芯片实现过程,而忽略了对背景知识的充分研究,这是非常非常错误的。因为背景知识是FPGA项目的土壤,它直接决定了FPGA项目这棵小树今后的生长环境。单独追求FPGA项目的具体芯片实现而不讲求对背景知识进行充分研究的FPGA开发者,就好比一个生活在原始部落的捕猎者一样,尽管你使用弓箭的本领有多么的出神入化,也不可能比得上带瞄准镜的狙击猎枪。

项目方案的设计与制定

项目方案是FPGA基本开发流程中第一个以文档为输出的环节,项目方案做的好与坏,直接决定了整个FPGA项目开发后续流程的顺利与否。对于一些比较简单的项目,例如用FPGA实现一个异步串口等,可能项目方案的作用不是很明显,甚至还会让人觉得有些多余和麻烦,这也是很多FPGA开发者在平时进行FPGA项目开发的时候都没有写过项目方案的一个主要原因,但是一旦项目上了规模,或者具有了一定的理论深度,那么项目方案的存在就显得十分必要了,否则以后的返工可能会对开发者或开发团队的信心造成毁灭性的打击。
项目方案其实也是计划书的一种,虽说计划赶不上变化,但是没有计划又是万万不行的。在经历了对所接手项目背景知识的分析与研究之后,通过项目方案的设计与制定环节,可以让开发者们对项目有一个全局的、原理性的掌握,并且可以提早发现项目中潜在的一些漏洞,从而最大程度的避免因为后续开发环节中出现一些不可解决的问题而导致的返工。
项目方案的设计与制定是一个比较自由的环节,对于最后输出的文档也没有非常严格的格式规定,但是作为整个项目的指导性文档,在设计与制定项目方案的过程中还是应该把握住一些基本原则的。

写清楚项目背景

项目方案第一步,就是要写明白为什么要做这个项目?想解决什么问题?做出来有什么好处?它有什么应用前景?等等一系列问题。因为通常来说,工程师都是服务于公司或者企业,而利润是所有公司、企业的终极目标,因此如果是一件对公司或企业没有任何好处的事情,那么别指望老总会为此投入人力、物力和财力。因此,为了能够让项目顺利开工,讲清楚这个项目的背景是很有必要的,当然自己就是老总的除外。
要写清楚项目背景,光解决上述的一系列问题还是不够的,因为这些问题都仅仅着眼于项目自身,兵家常说,“知己知彼,方能百战不殆”,所以还需要对行业中相关的公司和企业进行调研,分析一下行业目前的形式和竞争对手的威胁程度,看看别人在做什么,做到什么程度,它们有什么优势、有什么劣势,自已有什么优势、什么劣势等等。否则自己千辛万苦做出来一款产品,发现市场上别的公司的类似产品早都卖疯了,到时候就只有哭了。

写清楚项目需求

项目需求主要讲的是这个项目需要完成什么样的功能, 相对于项目背景来说,项目需求要写得稍微详细一些。

  • 首先,要讲清楚整个项目运行的环境状态。例如:这应该是一个车载的系统、机载的系统、舰载的系统还是手持电子设备等等。
  • 其次,要讲清楚项目的输入是什么。例如,声音处理相关项目的输入应该是声音,但具体是人声还是乐器声或是什么别的东西一定要说清楚;图像处理相关项目的输入应该是图像,但是是人脸识别还是红外成像什么的一定要说清楚。
  • 第三,要讲清楚项目的输出是什么。例如,可口可乐工厂的输出就是可口可乐,肯德基连锁店的输出就是汉堡、鸡腿。那么,我们项目最终的输出到底是数字、声音、图像或者是什么别的东西一定要说清楚。
    第四,要讲清楚项目的具体需求是什么。例如,该项目对处理的速度性能有什么要求,空间性能有什么要求,出现故障时有什么要求,成本控制有什么要求等等。
  • 最后,尽量详尽的列举一些细节需求,这也是项目需求中最重要的一环,越完备的列举细节需
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李锐博恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值