关于FPGA的学习

前几天有个学妹跟我说起她大二了会什么什么,并且想从事FPGA深入,询问我有没有什么建议。
这让我想起了我的往事。。。
大一的时候,刚开学同学们都用“体感游戏”的手机,而我的手机没有WIFI功能更没有体感功能,舍友几次问我怎么和她组队玩游戏,我说手机坏了,后来经常问怎么不去修,说“看到你学习,我玩游戏心里有负罪感”,最后我实在不好意思在宿舍学习就天天去图书馆刷题。硬是把我入学时只想混混日子能毕业就成的心态逼得无路可走,导致我专业课门门都是第一而且甩开第二名很多分,成了各个专业课老师口中传播的“学霸”。在大一拿到《江苏计算机一级》、《全国计算机二级C语言》,包揽各种奖学金,活动比赛的证书。由于我上课表现特别天真突出(老师上课会提问,我总能快速答对并且只有我一个人是有反应的,其他同学摇头与低头),不断地有几位老师陆续在我大一上学期的时候告诉我要开始准备代表学校参加全国电子设计大赛。曾经在入学的时候就有实验室勤工俭学(有奖金)的通知,但是面试当天我睡觉关机没有看到短信,以至于我没能第一学期进入实验室,当时觉得有点遗憾。而到下学期刚开学的时候,已经有副院长亲自找到我,说为我申请了一间不常用的实验室供我专门使用并且需要什么设备随时可以去借,给我实验室的钥匙,我不用打扫实验室做杂活并且能享受津贴奖金。
大学期间,我几乎被捧上了天
大多数同学使用的第一张板子是51单片机,成本5元,总体也不超过60元。我大一看的第一个单片机视频是郭天祥的,第一款使用超过三个月的板子是Xilinx ZYNQ 7020,芯片成本几百元,Demo板子近8千元,是一款FPGA+ARM架构的芯片,周边还有外围模块传感器等。那时候,我开始从verilog开始啃,网盘还不是很发达没有考虑上网看教程什么的,但是年轻毕竟有超凡的耐力,心非常静,竟然也能自学学会了例程,跑起来了。当然,这主要还是xilinx的软件集成做得好,vivado一次装成功,上届的优盘资料全部都在。我就拿着上届的FPGA去准备新的比赛。直到比赛结束后,归还设备,我才买了自己的51单片机。
那届的全国电子竞赛,我担任队长,参加了江苏省的“高校赛前集中封闭培训”,由xilinx中国区的工程师培训3天。一个学校买几套设备,就能进2倍的人进去,因为只买了一套,所以三人组只有我与另一名男生进去了。
也正是那三天,让我知道如何去快速高效掌握一门技术,就是带着项目及丰富的资源,并且有实物有工程师可以手把手调试,氛围也很重要,那几天我睡眠不足四小时,白天培训晚上调车,酸爽。和学校里死学,老师又没有项目,学生只能傻看,学习强度不高,天壤之别。
插一段。我在准备竞赛的过程中,其实已经是多方位都为我创造环境。例如,塑料舵机,当时正版还比较贵(现在的仿品只要几元,而且不精准用几次就坏),20元一个。我写程序将XY云台上的舵机互相卡死折断一个舵机烧毁了。我紧张地去找老师汇报我毁坏用具事情,老师兴奋地笑着跟我说:我要表扬你,现在我就去网上再买五个。损坏说明了你有能力,你继续每天烧一个,直到把问题想明白。只要你每次犯的错不一样,那就是值得的。 这种不差钱的氛围,让一个小女生,特别是在刚起步的时候,无所畏惧,才能在技术道路上大步向前走。
比赛主题是“智能仓储巡检机器人”,在2014年的这个比赛里我用到了openCV号码牌识别功能,尽管当时是赛方封装好的识别部分,但还是引起我对图像极大的兴趣,之后的2015年我也开始找了openCV的若干资源去学。
然而,我毕业2017年到深圳,市面上图像处理岗位的硬件都是用ZYNQ7020款,原来在爆款的情况下,我还是没有应聘上,后来找了硬件设计岗位。电子竞赛对于平台赞助商,就是为某一款产品几年后的市场做布局,先为市场预热,那么市场第一批工程师使用该产品里就会有这些来自竞赛的毕业生。由于xilinx是FPGA两巨头之一,再加上另一家巨头已经被其他公司收购,所以xilinx对于产品支持这块做得比较全,或者说注资扶持的第三方外包公司也蛮多,让xilinx FPGA的落地应用项目多了起来,方案齐全。FPGA解决处理速度问题,ARM解决显示与界面问题,都结合在了一块芯片中,跟价格倒是没什么关系,主要是又贵又难能不能保证能用起来,这可能需要原厂的部分技术支持,其次才是能不能充分利用发挥性能。
比赛的结束,意味着新比赛开始,以至于我每款其实并不精。
我只不过用了几千元去干了几百元能干的事情而已!
不满足市场或者当时不明白FPGA的精髓。
精髓绝不是跑几个Demo就完事的!
如果说: Windows是让简单的事更简单,Linux系统是让复杂的事变简单。
那么 ARM则是让界面更美更容易去控制,FPGA是让高效与稳定并存。
ARM的程序可能出现死机,例如你的手机。
然而FPGA是现场可编程门阵列,它烧好后电路是可以固定的,不会卡死。
例如:流水线上的啤酒盖,一分钟要过很多个啤酒瓶,如果死机了,后果不堪设想,场面一片狼藉。在国外一些流水线上高速精密场合用“硬件电路”代替“编程”场合很多,这就是用处。
亦或者是华为的交换机,它的硬件电路通道是可以根据流量改变通道的,这用FPGA极合适。
如果是ARM则会拥堵有死机风险。
还有一类人,可以不做架构与通道的变换内容框架大的。只深入到精度,例如电机控制的精度可以达到多少us等等。
总之,有深入的项目,有完整知识体系可以学得下来,做精才能成功。
半道子的本科生根本在南京没市场要。而且南京FPGA业务被“伊元素”(Xilinx的中国授权合作商)一家独大,老师的项目都被这家公司抢走了,这家公司培训或者工作几个月出来的专科生,对业务熟悉,南京本地的公司就喜欢要这样的人。死读书的本科娃,没有项目,知识量其实比培训出来的专科生差远了。
论学历也得看市场,论读书也得看看项目够不够等级。
论机遇,已经没有人还能比我在大学里更舒坦,要硬件又硬件,要培训有培训,老师都得捧着。
软硬件有那么多条路,FPGA与ARM,建议深入其中一个,例如ARM的路要更宽。我虽然FPGA“断头路”没有走通,但是我大二就会了ubuntu系统下编程等等技术,大三会手机安卓APP程序编写,VS下写openCV。
道路那么多,不妨多看看再决定哪个是自己喜欢的、要深入的。