2014年3月,我曾经写过一篇文章:
里面讨论为什么我不建议一个没有基础的学生为了找工作而选择去学习FPGA。这篇文章和我最早写的
一样被广泛的转(piao)发(qie)。很多个人博客、自媒体之类的转发的时候连个转发字眼都没有,更不要说把原文链接加上了。当然了,没加原文链接也主要是很多也是由于多次转发以后估计转发者也不知道原作者是谁了。
吐槽完毕,回过头来继续谈为什么不推荐学习FPGA
在六年前我讨论为什么不推荐学习FPGA主要是针对原本不是从事FPGA相关工作,也没有做过FPGA项目的一些应届毕业生或者初级求职者的。主要的原因是FPGA学习曲线和入门难度较高,而学成以后就业面其实并不宽,作为一个小白为了“谋生”而学习其实有更好的选择,没有必要在这里头铁的死磕。如果是本身就对FPGA有极大兴趣,或者已经是在这个领域里工作了,那不在我这篇文章的讨论范围之内。
在六年前我主要是从技术发展的角度、就业岗位数量、技术学习的难度等方面来讨论了为什么不建议学习FPGA。六年过去了,这些问题是否有改变呢?我认为是没有太大改变的。除了这些依然存在的问题之外,今天我想从另外一个方面谈一下这个问题,那就是学习条件的问题。
学习条件的问题主要是以下几点:
- FPGA的学习要依赖于硬件平台和仪器
- 目前FPGA缺乏适于自学优秀的教程
- FPGA缺乏有效的网络学习手段
- 实体培训班一言难尽
对以上四点接下来一一说明。
1.FPGA学习要依赖硬件平台和仪器。
这个是一个比较常规的老问题。FPGA的主要用途是用在通信/信号处理/网络/自动控制等硬件设备上,理解FPGA在硬件上的用法和“套路”是学习FPGA和学习软件编程的最大区别。因此,FPGA如果不借助硬件平台很难掌握其在硬件上的用法,尤其是无法培养出硬件的“直觉”和“世界观”。如果仅仅把学习FPGA当成学习硬件描述语言和仿真工具,兜兜转转一年估计都无法入门。
不过得益于现在包括FPGA在内的一系列硬件物料价格的下跌,现在市面上硬件开发板的价格低的也有不少。但此类开发板普遍都有一个问题:外围电路中“人机界面”多,而“接口电路”少。使用这类开发板难以学习FPGA主要用途的通信/信号处理/自动控制方面的知识(但却比较适合学习计算机组成或片上系统设计,这个后续再说)。即使有必要的外围电路,往往也需要有信号产生/分析相关的仪器配合,才能学习到较为深入的内容。而一台仪器本身就价格不菲,更何况一台仪器根本不够。几台仪器搞下来,几万块钱也就出去了。
对于这第一个问题呢,倒也还是有破解之法的。方法一就是把学习方向集中于图像/视频信号处理,这样可以免去很多仪器之苦而直接把处理后的信号用屏幕显示出来。这样基本上也能练习到信号处理相关的各种算法实现。这方面可以推荐一本书:FPGA设计技巧与案例开发详解(第2版)
第二个办法是可以采用虚拟仪器,大概几千块钱➕台好点的电脑就能实现个几台仪器的功能。例如这种: EPI-LITE系列小型化高性能口袋实验
以及这种:EPI-BE304
不过几千块钱对于一般的学生和初入社会的学习者也还是一笔不小的数目,相比于纯软件的学习,这依然是一种难以克服的困难。
2.目前FPGA缺乏适于自学优秀的教程
目前FPGA教育中教程是一个很大的问题。就是缺乏优秀的教材,尤其缺乏适用于自学的教程。目前的教程主要由两拨人写成,一种是大学老师写的,一种是开发板商家送的。
大学老师写的教程的问题在于,有能力有水平的大学老师事情很多,往往没什么时间写教材。我一本教材前年策划,到现在也还没写完。主要的原因就是事情太多,项目、论文、日常教学、国际会议都要占时间。而有些“著名数据手册翻译家”,把最新的数据手册翻译一下,加一点自己老掉牙的实验案例。一年几本甚至十几本的往外出。还有一些完全是为了应付学校考核而瞎凑出来的书。比如到了2016年还在基于MaxPLus II这种已经淘汰了快20年的工具来写书等等。这类书的普遍有个特点就是“掉书袋”,把硬件描述语言当个编程语言讲个透。但对于设计思想、设计方法以及设计案例这类具有“实战意义”的内容讲的很少。
开发板附送的教程问题在于,这类教程更多的是一种开发板的“演示说明”,而不能算真正的教程。一堆所谓的“例程”给到购买者,基本都是把外设连起来跑一跑。购买者拿到这足够多的教程,按流程自己跑了一遍。发现自己“会”了流水灯、LCD、SPI,后来还“会”了以太网等高级应用。其实大部分也就是自己跑了跑,体验了一把虚拟的“爽感”。以为自己会了,其实爽完以后才发现自己其实什么都没学明白。
相比于纯软件领域既有的多本经典教程,FPGA领域的教程确实是乏善可陈。这其实给初学者造成了很大困扰。如果你是一个小白,在选择要学习的内容的时候。同样的时间精力,一个有好的教程辅助而另外一个没有,把时间和精力用在哪个更划算?
3.FPGA缺乏有效的网络学习手段
这一点也很明显,比如纯软件的学习有类似于实验楼这样的网站:
在线做实验,高效学辨成-实验楼
而FPGA显然是缺乏这样完备、全面的网站的。也许是我孤陋寡闻,如果有好的FPGA学习网站欢迎各位知友推荐告知。
4.实体培训班一言难尽
在以上道路皆有问题的情况下,参加实体培训班就成为了一条可行的道路。参加实体培训班的好处是可以有人当面解决问题,减少一些很弱智但又很浪费时间的问题。从而加快进度,尽快进入到有意义的学习阶段。
但很多实体培训班却一言难尽,有些培训班拿一些什么SDH这种20年前的老旧项目混着。传授的开发方法和设计思想也……这一点谈多了容易得罪人,就点到为止吧。
最后再声明一点,本文是针对为了以后要想通过自学/报班学习来找工作的小白而言。建议其选择学习条件更好,更容易成才的方向。而如果能够有机会参与到靠谱的项目、准备参加各类比赛的学生或者是已经入行的新人,那还是认真的讨论如何好好的学习FPGA吧。
END
知乎:https://zhuanlan.zhihu.com/p/103057532
推荐阅读
更多内容请关注其实我是老莫的网络书场专栏内容