1. 如果你是学习数字电路后,直接入行FPGA的话
你比较容易吃透FPGA的并行编程思想,比较容易入门FPGA的逻辑编程,然后在逻辑编程中越走越远,最后成为逻辑大牛,这样的人大有人在,但是也有很多 人成不了大牛,然后就去学习ZYNQ,其实不太建议直接去学习ZYNQ,因为 ZYNQ的门槛比较高,需要的基础知识比较多,而此时你只是逻辑并行编程厉害,串行世界处理器的C编程你或许是个小白,更不说操作系统的编程应用。
此时,建议你去学习下单片机C编程,学习单片机原理,吃透微处理器原理,然后在FPGA中使用NIOS等软核进行编程及应用。在这里,有很多人是按照教程使用软核的,导致最直接的后果就是微处理原理没吃透,学起来很累也很死板。如果你学的比较深的话,你会发现所有的微处理器基本都是基于SOC架构相连的,简单说就是通过总线互联FPGA的软核、外设及自己编写的逻辑。
当你把逻辑、微处理器、操作系统都理解了,还会点高级语言编程的话(建议学下QT、Python),你就可以自由组合这些资源来开发自己的项目:可以通过FPGA来开发项目,规划好彼此的分工协作(使用FPGA的软核或者硬核处理器搭建处理器平台);也可以集FPGA和单片机或ARM来开发项目。
当然,你也可以走另外一条路:做IC开发,IC开发还是比较难,但是由FPGA转入IC开发还是比较轻松的,也是为中国“芯”贡献力量。
你一般就业面很广,但时时刻刻会听到或接触FPGA,这很正常,因为FPGA这些年一年比一年好,很有可能以后都是用C来开发FPGA。并且你会发现FPGA待遇高的一逼,你有点慌了,想要学习FPGA,此时问题来了:单片机/ARM的开发一直是串行思维,你发现你根本很难入门FPGA,更谈不上灵活使用,看看Verlog和C没俩样,但为什么就是用起来这么难用,你可能就这样放弃学FPGA,在单片机/ARM上越走越远,最后可能做了项目经理,但每次项目要用到FPGA时总感觉差点什么,而且所做的项目档次也没有FPGA高,是不是?
其实,这是很正常,虽然你很擅长串行思维思考你的架构,但缺少并行思维的你离高端就是差很多。要从单片机/ARM转入FPGA开发,你需要摆脱以前学的东西,不用单片机、ARM的思维来学习FPGA,这是第一步,这有这步做好了后后面才有可能,然后就是拿起数电,从头开始学习FPGA的逻辑,切记:此时一定不能用以前的经验来学,要摸索并行的思维方式来学。
当你迈过最艰难的FPGA逻辑学习后,基本成功一大半,此时学习下SOC总线,结合以前学习的单片机.ARM。你就会变的越来越厉害,对嵌入式和系统理解收获更多,以后从事人工智能或者大数据就很容易。如果你对IC感兴趣,入行IC也行,但是不太建议,因为此时的你强项仍然是串行嵌入式思维方式。
3. 本文为什么以FPGA来说嵌入式的出路
因为,做嵌入式的最终做好的最终出路肯定是做项目研发的系统架构开发,那些螺丝钉的开发人员遍地都是,而能做系统的人很少,做系统的最大境界就是会灵活使用多种思维方式来思考项目、产品和开发。FPGA正是一个很好把各种思维方式结合的嵌入式工具:
FPGA的逻辑:并行加速思维方式;
FPGA的软核或硬核处理器:串行思维方式;
FPGA:软硬件协调合作思维方式,类似项目开发初期取舍优化。