看了题主的问题,猜测题主可能对这方面感兴趣的入门者,因为之前在学校里有七八年的带微电子专业研究生入门的经验,他们也多有这样的问题,所以尝试着给题主一些完整易懂的背景知识,当然最后题主怎么选还是要看自己的。
首先,题主的问题是源于“FPGA偏于硬件,ARM偏于软件”这样一种见解,所以我认为题主是想选择以后是学习基于FPGA相关器件的开发还是基于ARM相关器件的开发。这是一个很重要问题,同时也是两种不同专业选择的分水岭。这也是大多数微电子专业学生,在入学之后,经过数字电路还是模拟电路的选择之后,需要做的第二个选择。
基于FPGA相关器件的开发,作为一种工作种类,是隶属于数字集成电路设计这个门类的。因此在开发时,采用的输入语言目前基本还是verilog/VHDL这中硬件描述语言。而基于ARM相关器件的开发,则是隶属于嵌入式系统设计,采用的输入语言则是C/C++等高级语言。简单说下,这两种语言种类的区别,在硬件描述语言中,所有的语句和语句块是并行执行的,而在C语言中语句是顺序执行的。用形象的方式来说,硬件描述语言写出来的由与或非们和寄存器针组成的一块电路,而C语言写出的则是存在内存中将有CPU去一条一条执行的指令集合。这种区别造成的是在开发思维上的巨大不同,就像我们自己动手去做一个木桌,和指挥别人做一个木桌一样。
FPGA开发在整个IC设计产业里确实是一个占比很小的工种,目前最大量的应用场景仍旧是IC设计流程中做为硬件验证平台使用。也就是在芯片生产出来之前,工程师将整个数字电路设计放入FPGA,测试在实际应用场景下,数字电路的各项功能是否有误。同时,由于FPGA单片的价格远远超过ASIC芯片的价格,因此专门的基于FPGA的产品大多只用于特殊的用量较少的应用场合,这也是昂贵ASIC设计和流片成本所带来的折中选择。目前在国内FPGA开发我所接触到的比较有前景的方向大概就只有高性能计算,之前有个研究所和我们洽谈过要100多套的FPGA板卡,去组建一个高速网络数据挖掘的计算系统。而其他有些大型的网络公司和方案服务公司也提出过类似的要求。这还是因为为了一套高性能计算系统去做一个ASIC实在是得不偿失,而用GPU或者高性能CPU有时候不能达到他们的性能要求,而且FPGA的灵活性也大大减少了他们修改算法的成本。不过这还是一个细化分的小市场,比不了消费类电子那种出货量。所以,如果有意愿学习FPGA开发的话,倒不如投身IC设计这个大门类了,这样可选择的空间比指着FPGA大很多,只不过IC设计行业估计也是最苦逼的行业之一。。。。
再来说说基于ARM器件的开发,这个方面实际经验我就没有了,不过因为相关也有些了解。首先很不幸如同之前一个答案一样,做嵌入式系统的底层开发,比如写写driver或是firmware之类的,也是非常的苦逼,不仅很多时候是重复性劳动,而且在一个IC公司中底层工程师也大多属于那种不能缺但是也不是核心价值的位置。同样的我也推荐有兴趣的话,还是投入应用开发领域,在学习的过程也涵盖了基于ARM器件开发的相关知识,同样的可选择的空间就又大了很多。
最后总结一句,在学习阶段,多学些技能,会让你对这个专业的理解更深,这样会给你以后开始在一个方向专注努力的时候提供一个强大的知识结构基础。
— 完 —
本文作者:知乎用户(登录查看详情)
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 4 个回答,查看全部。
延伸阅读:
选择知名外企的优劣势是什么?有哪些可能的职业发展路径或方向?
嵌入式领域的职业发展方向是什么?