【参赛文章选登】我和FPGA第一次接触:回忆那段青葱岁月

人生总是有许多的第一次,第一次上学、第一次约会、第一次唱歌、第一次跳舞……每个“第一次”都是令人难忘的记忆。作为一名FPGA工程师,你一定还记得第一次和FPGA接触的时候是什么感受吧?基于此我们AET网于上周启动了“我和FPGA的第一次接触”有奖征文大赛!本次大赛很快引起电子工程师们热烈反响,短短一周就有数十篇佳作涌现!这周开始我们AET公众号会挑选其中的佳作分享给大家!

最初看到这个活动题目时,几年前第一次接触FPGA时的各种心酸历程井喷般涌现出来。
七年前,我读大三,2010年春学的EDA开发实践课程,第一次碰到了VHDL语言,我的老师姓易。学校的实验课是基于杭州康芯电子的实验箱,隐约记得是MAX II系列或者更早的产品。开发平台是MAX PLUS II,由于软件太老,后来同学们都在自己电脑上装的Quartus II,至于哪个版本,完全记不清了。
当时学的还可以,成绩也蛮不错的,恰逢省赛要开始了。于是乎,约上了俩好兄弟,开始备战省赛。第一次暑假没回家,第一次住在实验室,第一次爆电容,第一次看到电阻发光冒火,第一次网上买到假芯片……太多的第一次铸就了那段青葱的岁月。
那年是Xilinx给赞助的Spartan3E开发板,号称50W门,不过在当时没有一点概念。相信参加过电赛的同党们都有后面的类似经历,三天时间,没日没夜,就为了那几分钟的指标测试不出差错。我们的题目和语音采集回放有关,所以需要自己做语音采集滤波和AD电路,使用开发板上的RAM储存,同时需要做DA和功放电路。我负责搞程序和画板,睡在我上铺的兄弟负责滤波器参数计算,隔壁宿舍的好兄弟负责其他工作。那几天三氯化铁把指甲染黄,电熨斗转印玩的炉火纯青,实验室的破电烙铁(实验专用)用坏两三把。不负众望,最终也搞定了程序。自己的实验室没有扫频仪,靠耳朵又没准,滤波器参数稍微不太满足条件,最终得到二等。不过现在看来,这段经历确实是一个硬件工程师的宝贵财富。
在此之后,我买了第一块FPGA开发板,那是一块武汉某高校学生转让的Altera DE0 Board。在我看来我的FPGA学习之路是从此正式开始的。
从那之后拜读过安德鲁同学给某开发板写的代码,特权的入门视频,号称价值连城的好几个GB的原厂视频。不过我想对新入门或者想接触FPGA的兄弟们说:“淘宝卖家填鸭式的各种资料,远比不上一本本权威的语法手册和官方文档。”或许正经的学习本身就是枯燥乏味的,又或许每一个FPGAer都必须经历一个没人带领入门病急乱投医的过程。
毕业前的那段时间,除了考证就是考证。不是计算机专业的我凭借着从小的兴趣,那段时间开始研究MCSE的各种课程(后来觉得几千块钱的报名费用实在是大出血,最终图省钱报考的四级网工)。自己搭网站,做FLASH玩Action script其实也很有意思。但最终觉得毕设这么好研究点东西的机会不能白白浪费掉。于是本着研究一下以太网交换机的底层的想法,自己拿着自己定的题目然后找到了易老师,很自然的他成为了我的毕设指导老师。
由于这东西实在百度不出任何的可以研究的参考代码,图书馆也确实没有任何讲的更为深入的书籍。所以各种英文原版的Specification(因为中文翻译的很不准确,不同人能翻译出完全不同的意思)成了我每天的英文翻译资料。第一次硬着头皮看完一份完整的英文文档,第一次知道了MAC和PHY有那么多种类的接口,第一次知道了以太网帧的完整结构里面还有前导码……最终得到了一个较为满意的成果:功能仿真ok,硬件没调好(当时也不知道是什么问题)。虽然指标要求都是商量着来的,最后恍恍惚惚也就这样答辩了。前些日子偶然翻出来以前学校的文档资料,一眼就发现了问题——没好好约束,时序违例严重。不过以当时的水平估计也不能理解约束的本质。
转眼已经毕业五年了,有幸成为职业FPGAer也五年了。从那个时候只能接触MAX II,Spartan3E,Cyclone II,Cyclone III,到后面逐渐遇到的Cyclone IV ,Spartan6,Arria II,Kintex 7, Zynq,Stratix V,Arria 10。现在我把那段自认为曾经很发奋的日子,写成了流水账,希望大家不要喷太多水。
后来找到的一封以前的邮件,我相信很多玩FPGA的刚开始遇到设计困难的时候都和我一样会去寻求51核来解决问题,不过现在看来51能实现的功能还是用hdl搞定吧,复杂的上M3,再复杂的直接soc就好。
(0)

相关推荐