人生总是有许多的第一次,第一次上学、第一次约会、第一次唱歌、第一次跳舞……每个“第一次”都是令人难忘的记忆。作为一名FPGA工程师,你一定还记得第一次和FPGA接触的时候是什么感受吧?基于此我们AET网于上周启动了“我和FPGA的第一次接触”有奖征文大赛!本次大赛很快引起电子工程师们热烈反响,短短一周就有数十篇佳作涌现!这周开始我们AET公众号会挑选其中的佳作分享给大家!
学习FPGA至今已经有一年半之久了,我对她的感情非常深的。想想当初还在为寻找资料而发愁,现在去可以为别人解决一些问题,每天都在坚持与她见一面使我进步了很多,没有放弃对她的追求,使我终于爱上她——FPGA。以下我总结了学习FPGA的三个阶段,每一个阶段都是我与FPGA的初见,都是对她的重新认识。我个人是比较喜欢硬件的,从大一就在学校的实验室学习,最先上手的是51,也是实验室一直不变的规矩。51的东西太少这个大家也都是知道的,学了一年多算是比较久了的,到了进步的时候了,就想着学点新的东西,那是大二快的寒假的时候。我上一级学长就只有一个学习FPGA的,他给了我一些简单的视频资料和一本夏宇闻老师写的《Verilog数字系统设计教程》,初次看这本书感觉实在是晕眩,只能看懂些简单的语法,而且那些资料大多是直接上历程,感觉和学习51的时候差不多,只是换了语言而已,之所以有这样的感觉是因为不还没有系统的了解她。会了简单语法之后找了个板子开始玩,发现要下载一个程序是如此的复杂,要配置这么多信息,要安装这么多软件,感觉一下难了起来,但是最后还是完成了,我还记得第一个程序是抄的书上的一个与门逻辑。
我知道学习FPGA需要了解数字电路基础,因为我那时还没有学习数字电路,所以寒假的时候我就下载了好多的数字电路的视频教程,一个寒假基本上是看完了。寒假开学算是正式学习FPGA吧,虽然有很多的课要上,还有很多比赛要参加,但是那半年是我真正认准FPGA的时候。学习FPGA最痛苦的是没有好的资料,几度想放弃却还是坚持了下来。我狂加了好多FPGA的群,这也是我快速融入到这个圈子的一个办法吧,在各大群里,有很多热心的朋友帮着解决问题,我也结交了好多朋友,也找到一些容易入门的资料。真正的入门算是跟着腾讯课堂中尤恺元老师讲的基础视频,大约是在快暑假的时候我才发现这个资料的,尤老师讲的很好、很细致,让我对语法的细节上有了透彻的了解,因为我知道的比较晚,所以一般都是看的录播课,但有时为了和老师互动也会去听直播课。尤老师对我的影响非常大,通过尤老师的课,我感觉像是重新认识了FPGA,加上一些其他资料的学习使我真正了解什么是FPGA,她能做什么。渐渐地我才感觉真正的敲开了FPGA的大门,感觉自己已经爱上她了。暑假的电赛没能用上FPGA,真是一大遗憾,感觉只是会些基础的东西,对于应用还差很远。直到九月份加入了“芯航线”群,认识了小梅哥,才使我的进步真正看到了希望,那时“芯航线”群才只有二百多人,群主是小梅哥,小梅哥是在我学习FPGA之路中另一个重要的人,也是“芯航线”的群主。在这个群里我认识了很多朋友,一起学习交流,感觉很好,后来知道小梅哥还有自己制作的视频教程,就跟着一起学习,因为资料是偏向应用的,而且是进阶试的学习,感觉自己迅速得到提升。一直到现在我还在追随者梅哥的步伐和芯航线一起前进着。当我在群里能够解决朋友的一些简单的问题时才发现和一年前的自己有了很大的进步,寒假的时候还能够去培训实验室的学弟们,也希望他们能看到FPGA的优点,让他们入门更轻松一些,不再像我一样用了好久才入门。现在的我已经大三了,果断成了考研党中的一员,为了复习而学习FPGA的时间少了,但我依然没有失去对FPGA那种热情,依然保持着对她的爱,哪怕是每天在群里签个到也代表我没有离开,等考上研究生以后,我会继续学习的。学习FPGA首先要了解她是什么,能做什么,对她的起源、发展过程以及对于未来的发展的潜力有一定的了解,使之初学时能对FPGA有一种崇拜感,有着这样一种情感才能让你坚信学习她的重要性和意义,并会使你认真对待学习FPGA这个事情。其次你要初步了解她的把内部结构(建议要在有数电的基础上进行),虽然初学时是一头雾水,但也没必要在第一次接触时就完全明白,这会在以后的学习中有较大的帮助,特别是在深入学习的时候。初学时一定要对语法有一个初步的了解(特别要区别于C语言的串行思想),建议首先学习Verilog语言。虽然Verilog语言的语法不多但是不进行初步了解直接上手可能会不太轻松,之所以提前接触语法也起到预习的效果。对语法有初步了解后可以开始学习软件了,建议初学者学习QuartusII(开发软件)和Modelsim(仿真软件)。因为Altera资料多些而且操作较为简单上手快,记住软件一定要熟练操作,起码要把基本的操作学会使用,高级工能可以在以后用到时在进一步学习,记住不要在工具的操作上浪费太多时间。如过做到以上几点就开始学习的话,会使你感觉和学习单片机没有什么太大的差别,真正的精髓之处还没有开始,所以你还要对FPGA的开发有一个宏观的了解。包括:开发流程、设计原则、硬件设计思想、模块化设计思想、Top-Down的设计思想、并行性设计思想、仿真设计思想等,要区别开其学习与单片机的学习差异,要学会建模方法,要从后宏观上了解FPGA。如果把这些准备工作做好了之后学习FPGA的到道路才刚刚开始。接下来就是使用正确完整的开发流程做练习,从最简单的与非门开始做起,不要一开始就搞复杂的,并从练习中熟练语法,记住在学习中一定要做仿真,养成一个好的习惯。设计单元的复杂度要渐渐提升,在复杂的电路设计中一定要先设计电路路框图在进行设计,根据电路框图来设计会更加效率准确。并逐渐使用复杂的模块IP,可以适当以小的项目来训练。学习的过程是漫长而又辛苦的,当你耗时耗力掌握了她的时候,你会发现那些当初没有像你一向坚持下去的人已经被你甩掉好远!