很多fpga初学者,都会怀疑学习fpga有没有前途,发展前景怎么样,到底该怎样学习fpga???各种迷茫,导致无法踏踏实实、全身心投入fpga学习与开发工作中。下面请看看一个死磕fpga 15年的大神给大家的肺腑之言,相信看完之后的你不在徘徊、不再犹豫、能够勇往直前。
作为一个从事了15年fpga行业的大龄工程师。期间接也触过一些项目管理和技术支持之类的工作,但总觉得自己更适合死磕技术。在fpga的领域找到未来的指引。”
做fpga不只是写写代码
“fpga作为数字系统的主角儿,经过近20年的突飞猛进发展,大家都明白这个领域的工程师对经验是非常看重的,属于典型的入门简单,若要精深就很难,做fpga开发不只是会写写verilog和vhdl代码这么简单,而是要设计芯片,如果按照芯片的设计要求,才能提高自身的能力。”
“硬件开发语言是用来设计芯片的,而数字芯片也就是0/1的翻转,hdl能够逐渐映射出一个个与非门、触发器、存储器,以及他们之间的时序关系,时时刻刻考虑怎样设计才能保证面积小、延迟低。功能做对了还要考虑时序优化,即使功能设计的再完美,代码写的再简洁,设计的时候没有考虑时序,一切都是花架子、空摆设。”
fpga是数字系统的主角
“fpga逐渐从粘合逻辑转变为系统级角色。开始的时候主要用于做接口、做通信,也就是偏向硬件。如此,最基本的接口协议便很重要,不懂接口协议fpga就是孤家寡人,没有数据的交互,什么都干不了,故一个成熟的fpga工程师不是熟悉fpga就好。”
后来,fpga开始逐渐用来做做算法、做控制,如果要用fpga做算法,还需要学习更高级的语言做仿真和验证,更重要的是要把算法映射到fpga的硬件资源或者外设,并基于速度、面积和功能做平衡,做优化。还是挺有挑战呢。
现在,随着人工智能、机器视觉的崛起,fpga更加偏向系统级设计,有了软件算法的异构,能够替代gpu和cpu”.
所以,已经在路上的不用回头,也许你面前沟沟坎坎很难走,甚至有一堵墙遮光蔽日,但是,前途是绝对光明的。
01、fpga入门之道
对于新手学习fpga设计,要从基础开始做,基础牢,才有成为高手的可能。
以下几步是初学者必须要踏实走过的:
step 1:
了解fpga结构,fpga到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。只有了解了fpga内部的结构才能明白为什么写verilog和写c整体思路是不一样的。
step2:
了解了fpga的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要再为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一种表达的方式,重要的是你的思维模式,没有好的指导思想,语言用得再好,不过是个懂语言的人。
step3:
开始学习代码了。一定要系统的,由浅入深的去学习fpga。
step4:
template很重要。能不能高效利用fpga资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。fpga内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成fpga擅长表达的结构。
做fpga主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,但对于数字电路的知识应该很熟悉,fpga中是由触发器和查找表以及互联线等基本结构组成的,其实我们在代码里面能够看到的就是与非门以及触发器,切记不要把verilog和c语言等同起来,没有什么可比性,根本就是不同的东西,在写一句fpga程序的时候应该想到出来的是一个什么样的电路,计数器,选择器 ,三态门等等,理解时序,逻辑是一拍一拍的东西,如果在设计初期想的不是很清楚,可以先画画时序图,这样思路会更加的清晰。
仿真很重要,不要写完程序就去往fpga中去加载,首先要仿真,尤其是对较大型的程序,想像自己是在做asic,是没有第二次机会的,所以一定要把仿真做好。
很多新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了。
02、fpga设计者需修炼的5项基本功
成为一名说得过去的fpga设计者,需要练好5项基本功:仿真、综合、时序分析、调试、验证。练好这5项基本功,与用好相应的eda工具是同一过程,对应关系如下:
仿真:modelsim, quartus ii(simulator tool) riple,isim
综合:quartus ii (compiler tool, rtl viewer, technology map viewer, chip planner),ise,vivado
时序:quartus ii (timequest timing analyzer, technology map viewer, chip planner),ise,vivado
调试:quartus ii (signaltap ii logic analyzer, virtual jtag, assignment editor),chipscope
验证:modelsim, quartus ii(test bench template writer)
掌握hdl语言虽然不是fpga设计的全部,但是hdl语言对fpga设计的影响贯穿于整个fpga设计流程中,与fpga设计的5项基本功是相辅相成的。对于fpga设计者来说,用好“hdl语言的可综合子集”可以完成fpga设计50%的工作——设计编码。用好“hdl语言的验证子集”,可以完成fpga设计另外50%的工作——调试验证。
练好仿真、综合、时序分析这3项基本功,对于学习“hdl语言的可综合子集”有如下帮助:
通过仿真,可以观察hdl语言在fpga中的逻辑行为。
通过综合,可以观察hdl语言在fpga中的物理实现形式。
通过时序分析,可以分析hdl语言在fpga中的物理实现特性。
搭建验证环境,通过仿真的手段可以检验fpga设计的正确性。
全面的仿真验证可以减少fpga硬件调试的工作量。
把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于fpga设计项目的维护。
盘点控制器的五大种类
Intel发布新一代至强E-2200系列,全面供给小型服务器和消费级市场
vivo全新系统OriginOS或将推出
北方华创12英寸CCP晶边干法刻蚀设备已在客户端实现量产
智能手表为什么没能火起来?
从事15年FPGA的大龄工程师谈FPGA经验
科学家研发可伸缩超级电容器,其自带加热功能
NEC独家解析激光放映技术
iPhone8什么时候上市:情不知所起一往而深!iPhone8哪些黑科技青睐你心?
Intertek 5G产品测试和认证服务扩至亚太市场,实现高品质发展
RIO架构中的FPGA硬件应用与案例分析
磷酸铁锂电池的温度特性及其优化方法非常重要
基于EP4CE10F17C8N芯片详解Altera Cyclone系列器件命名规则
探索“What-If”场景通常意味着编写一次性的自定义代码来分析特定模型
机房动环监控系统架构
7种MOS管栅极驱动电路
扬尘噪声在线监测系统的建立
如何正确使用和维护电源适配器使其保持良好的性能状态?
新能源车辆与燃油车辆的差异在哪里?
全球首颗搭载主动激光雷达二氧化碳探测的大气环境监测卫星