最近的几篇论文都改好投出去了,期望后边有好的成果。暂时也就有点空闲时刻空出来了,良久没有写技能文章来总结提炼一下了,今日可贵就写一点。
每年到了找作业的时节,总会有许多苍茫的小本乃至是小硕在处处讯问说:我是不是应该去参加个训练班,去学一门什么什么技能。然后学哪个比较好找作业一点,学哪个收入会高一点等等。每逢这个时分就有许多抱着作业意图的人来问究竟学什么技能好啊,哪个技能有出路啊,等等。
一般在这个时分,我是不引荐这帮人去学习FPGA的。当然,并不是FPGA技能欠好,也不是学FPGA技能没有出路,而是有其他许多原因。导致它并不合适引荐处以作业为意图的这帮人去学习。
原因一:FPGA的“逼格”太高
FPGA的运用规模相对而言一向不宽。之前我也谈过,其首要的运用面便是三个:高速接口电路、高速数学运算与数据处理、ASIC/SoC的验证原型;也有人说可重构核算是FPGA的第四大运用范畴,可是我觉得现在还没有什么真实意义上的可重构核算,即便有也可以将其归并到第二类里边去。在把握根本的HDL言语和FPGA开发流程的基础上,三个方向别离还需求把握其它相应的常识。
第一个方向是传统的,也是现在国内许多中小公司和部分科研院所运用FPGA的首要方向。首要包含接口扩展、协议转化、高速收发与处理等内容。一般在这个方向混饭还至少需求把握以下内容:1、高速电路板规划,2、核算机接口技能;或许还要求把握的技能包含:1、底层驱动开发,2、通讯协议。
第二个方向包含的内容较多,可是中心都是运用FPGA完结算法或运算加快,从传统的FFT、FIR到最新的一些所谓的NB的算法都有或许。这个方向门槛相关于第一个方向更高,一般都是需求有必定技能水平的公司才干完结。由于涉及到算法和FPGA的协同优化。现在国内的华为、中兴这样的大的通讯公司,以及一些电子通讯类的整机研讨所会招聘这个方向的人。一些有技能实力的创业型公司或特别范畴的公司(如金融、石油范畴的数据剖析计划处理)也有这方面的需求。更值得欣喜的是现在google、X讯这样的互联网公司看起来也在考虑引进FPGA完结算法加快。但这个方向混饭吃也不容易,至少需求把握以下内容:1、常用的数字信号处理/数值核算算法,2、根据Matlab/C++的算法仿真,3、常用的数字算法FPGA完结办法或技巧;或许还要求把握的技能包含:1、图画、视频处理算法,2、通讯体系理论,3、其它常见的并行核算算法。
第三个方向属所以给ASIC/SoC规划打下手,他人现已做好的许多模块、IP用FPGA的板子去验证一下。招人不多。并且现在跟着EDA tools的开展,许多时分也不是靠FPGA去做一个原型能验证出来的。这一块需求把握的技能包含:1、各种验证办法学,2、板级电路的调试经历;或许还要求把握的技能包含:前面说到的各种技能……
原因二:FPGA的“门槛”太高
FPGA“门槛”高是几个方面,一个是费用问题。尽管FPGA的价格现已一降再降,可是MCU、DSP的价格相同也是一降再降。在大多数场合FPGA仍是显得有点“奢华”。其他一个问题便是便是开发才干的问题。比较于MCU或许DSP而言FPGA愈加灵敏,但也意味着对资源的运用和掌控愈加“底层”。现在MCU和DSP的开发许多时分便是调用一些库函数,完结必定的功用即可。而FPGA却要安排更底层的逻辑资源去构建一整套完好的体系。尽管有许多IP可以用,可是一方面这些IP都不是免费的,另一方面运用IP可比调用一个函数难多了。这也是为什么前面说的3个方向要把握那么技能的原因,在FPGA开发上要从底层开端安排好这些资源,一些根本的理论、办法是必需求把握的。
门槛太高就导致用它做开发的公司、组织少。换言之能发明的作业岗位也就不多。
原因三:FPGA在面对转型
现在FPGA正在面对一个转型的问题,换言之便是传统商场萎缩,新式商场还待翻开的问题。这一转型既有开发手法上的转型,也有职业运用的改变。因而,现在学习到的这些FPGA开发的办法,在未来还有没有用,就成了一个疑问。现在以SoC-FPGA为代表的一种转型方向,是去抢占传统的高性能SoC商场。但这个商场好欠好抢,是很置疑的。之前我从前以为这一块应该是有所作为的,可是现在发现不是那么简略的。在ARM外面加上一圈可编程逻辑,用来做什么好呢?做接口?现在的高端SoC芯片上面接口现已如此的丰厚,在大多数状况仍是根本够用的。做算法加快?那么去加快什么算法呢?现在移动多媒体设备上面各类图形图画加快器也不少了。其他特其他运用需求加快的又需求是以SoC方式的加快的?也许是一些特种设备,我不是很了解。可是应该不会是通用的商场。剩余的便是做做研讨了。其他一种便是以高层言语综合为代表的转型方向,如Xilinx的Auto-ESL和Altera的OpenCL Based FPGA开发。这一类转型的未来在大数据、云核算加快方向。这一块现在是GPGPU的主场。关于Xilinx的Auto-ESL我不是很清楚。OpenCL Based FPGA开发现在看来仍是很有期望的。但问题在于OpenCL承继了GPGPU的优势,也承继了GPGPU的缺点。那便是传统的GPU是用来做图形图画处理的,数据都是一帧一帧加进去算的,并且算完今后就直接输出了。因而关于数据传输的latency其实并不是很大的问题。而假如涉及到通用核算,这GPU和CPU之间的交互latency便是大问题。上星期刚听了个讲座,便是专门讲这一方面的。不过我没怎么听懂便是了……
所以在这个转型期,其实FPGA开发需求的岗位是在萎缩的。之前听在华为的同学爆料,美国某大学教授预言FPGA在网络通讯商场大约还有10年的寿数,再往后就满是SDN了。这一大块FPGA传统商场的损失将是一个巨大的危机。而另一大商场,视频/图画范畴,跟着网络化视频监控SoC的遍及,本来选用FPGA作为首要技能计划的厂家也就逐步改弦更张或许被筛选出局了。其他一个危险便是现有的开发手法或许会存在被筛选的危险。尽管现在OpenCL去开发FPGA还存在许多问题,可是我以为在大数据、云核算加快范畴,运用OpenCL开发的快捷是完全或许补偿其功率的暂时低下的。从能效上来说,FPGA比GPGPU要高1到2个数量级。而这一块又是传统的软件开发者占据的地盘。换言之,这一块新增的作业岗位恐怕不是学习现在这些FPGA开发流程和技能的人可以去吃得到的。
以上三点原因,造成了一个即便参加了FPGA训练或许学习了FPGA半年的新手,其实是很难在作业商场上找到作业的。其他一方面也不得不慨叹咱们这个职业的开展是如此的敏捷。假如放在10年前,乃至5年前有人问我该学什么。我肯定会坚决果断的引荐学FPGA。由于在那个年代,会运用FPGA的人才是如此的缺少。以至于你只需学会了FPGA开发的一般流程,就可以找到一份还不错的作业。而现在,这个好年代现已一去不回了。类似问题其实也在困扰其它IT技能。以北大青鸟为代表的一大软件开发批训练组织的衰败,也相同标志着在软件技能范畴只把握一门编程言语就可以拿到好作业的日子也现已过去了。
所以,从名利的视点上来讲,假如是仅仅为了找作业的话。应该去挑选那些作业概率更大的技能学习。究竟,现已“流浪”到要靠上训练班才干找到作业的境地,“抱负”也都无从谈起了。比较与学习FPGA,恐怕仍是去学个什么Java编程愈加靠谱一点。