可现实呢?几乎所有高校毕业的电子类学生,除了少数参与过一些竞赛项目或做与FPGA相关的毕业设计的,几乎没有人讲得清楚什么是FPGA;即便是高校从事研发工作的硕士/博士同学们,也只是对自己正在用的型号、有限的功能有一定的掌握;企业的工程师?还好一些,毕竟在实战的项目中得到了体验,但这个比例是非常的小。
我国高校每年有至少100万的本科学生(除了电子、电气、自动化之外,还有计算机、物理、物联网等专业)要学习数字电路这门课程,70%以上的学校仍然在面包板上用分立的门电路来做数字电路课程实验;70%以上的学校仍然用8086/8088/8255/8251来做微机原理与接口技术/计算机系统结构的实验;EDA课程基本上也都是若干年前Altera或Xilinx通过大学计划提供的教学套具(很强大、很贵的设备),常见的模式是学生按照实验手册上的流程走一遍过场,编写几行代码,而至于这玩意是怎么工作的,实事求是地讲,多数负责教学的老师都未必知道。
同在高校如火如荼的“嵌入式系统”课程、人人都可以号称懂“嵌入式”相比,为什么FPGA成了这么高冷的一门技能呢?
我认为主要是在学习和应用FPGA的过程中存在以下几个误区:
1、FPGA很难学-这是学生以及工程师在谈到FPGA的时候第一反应,因为他们看到的都是上千块甚至几千块钱一个的板子,配一个几百块钱的编程器;板子上安装的都是几百个管脚、看起来非常牛b闪闪的器件,据数据手册上说支持着各种自己从来都没听说过的技术术语-xx总线、xx接口、多少个CLB、挂着各种高速的DDR、USB、PCIe,据说还能跑什么软核、硬核,初学的菜鸟们脸立马涨的通红,我是不是太无知了?根本与他们拥有的知识结构对应不起来;软件?光下载个安装包就要10GB,安装需要半天时间,还经常蹦出来个错误信息,还是英文的;运行个案例试试?刚买的高性能的电脑也要跑十几分钟,出去上趟厕所回来,编译的进度条还停留在80%上。。。。哇,太强大了!学习中遇到问题请教老师,老师无奈地摇摇头:我也不懂,你问问你大师兄xxx吧,旁边大神级的师兄酷酷地走过来,修改几行代码,搞定,这一切都让你怀疑自己,怀疑你是不是学习FPGA的那块砖。其实我要说的是,学习FPGA比学会PCB设计都要容易的多-你已经学了数字电路,具备了数字逻辑的理论基础,比抽象的PCB库、原理图、网表、布局、布线要容易理解得多吧?编程语言,Verilog的语法太简单了,常用的都不到一页,比C语言不知道要简单几个量级;只要你学会了如何将要实现的功能从逻辑上描述清楚,再用HDL描述出来,基本就能让这个“万能芯片”给你表演一些很神奇的东西出来了。
4、我只学Xilinx、Altera的FPGA-这就像你想学开车,认为一定要用宝马、大奔才能学会开车一样,这种观念是非常错误的,是被某些势力严重误导了的。真正学习驾驶技能,你需要的是“大众”、“本田”,因为它们性价比高,比较适合学习用,当然对于不差钱的土豪来讲,他用玛莎拉蒂来学车也无可非议。重要的是我们普通的工程师要知道这个世界上除了Xilinx和Altera之外,还有Lattice、Microchip(原Actel的产品)提供更大众化的FPGA产品,他们的用量巨大而且价格便宜,在你初期的3、4年里,用这些公司的产品已经绰绰有余了,学会替你的老板省点钱,替你自己省点钱,也是做产品必须培养的优秀品质。
5、像C一样写Verilog-对于玩过单片机、嵌入式系统、软件编程的工程师来讲,他们把Verilog当成了C来写,这真的是暴殄天物,是对FPGA的“A”极大不敬。相对于MCU/MPU来讲,FPGA最值得傲娇的就是这个“A”,海量的门阵列,十万雄兵,你不能就让他们排着队干一件事情吧?学会并行处理、时序以及针对每个bit进行操作是学习FPGA的精髓。
6、不关心资源配置-用高档开发板习惯了,就像富二代的公子哥,根本没有成本这一概念,只要能实现功能就可以了,我管它用了多少LUT,耗费了多少RAM呢?哥不Care!这是不行滴,因为在实际的项目中,你的老板不同意你这么做,即便是他不懂,看不到这些问题,那你的设计一定比别人花费更大的代价,付出更高的成本,也就意味着在市场上不会有竞争力而被淘汰。如果从一开始就没有养成重视资源配置,尽一切努力优化自己的逻辑达到最佳资源利用的好习惯的话,最终你就会像一个纨绔子弟一样败家、败项目。就像淘宝、逛街的魅力在于你能从花最少的钱买到最多的东西中获得莫名的快感一样,用FPGA的时候通过你自己的设计节省了多少n个寄存器、少用了m%的存储器,也是让人感到非常愉悦的体验,何不养成这种习惯,在快乐中成长呢?





