FPGA成长之路

FPGA成长之路

  • 初始FPGA
  • 为什么学习FPGA
  • 如何学习FPGA
  • 需要掌握的接口
  • 未来计划

初始FPGA

第一次听说FPGA是在大二下学期。当时有一位很严格的老师对我们说,这门课一定要学好,因为这是以后你们吃饭的家伙。当时学的是VHDL硬件语言,老师讲的也特别仔细,但是一直没觉得FPGA有什么特别之处。不过现在想想VHDL语法真的比较复杂,但是VHDL语法相比verilog在数学运算上更有优势,更容易实现浮点运算。经过一个学期的学习,算是对FPGA有了初步印象,期末的上机考试记得用了三段式状态机。

为什么学习FPGA

大二上完课之后便没有接触过FPGA,对其了解也仅限于状态机写时序逻辑。等到大四考完研之后,想细学一个方向,就思考起来学哪一个方向。首先排除了软件方向,因为本科是通信工程,专业基础学的也不错。如果放弃了自己大学四年积累的知识去学软件岂不是太亏了,这里我也想说周围很多同学都去做C++与JAVA开发,他们本科四年与研究生三年都没用过这些语言,只是因为工资高、招聘多。但是自己作为一个研究生和科班出身的本科生相比一点优势没有。甚至有部分同学连操作系统、数据结构都没接触过,知识学习一下基本语法、刷刷题便去找工作。这里,不否认确实可以找到挺不错的工作,毕竟我们专业与计算机类专业是一个大类,但我总感觉很亏。

或许会有些同学说,反正本科四年我什么都没学到,肯定去做工资高的软件。但是相比于软件的什么也不会,我们毕竟在电子专业中沉浸了四年,关于电子最起码知道二极管、三极管、锁存器、触发器、集成运放;信号处理方面我们知道信号、滤波器、DA、AD、量化编码;通信方面了解调制解调、BPSK、QPSK、载波,2\3\4G通信。那为什么还要去做软件方向呢?

至于为什么最后选择了FPGA方向,首先自己的专业基础课程学的还不错,而FPGA几乎可以把大学课程全给包括进来电子电路、编程语言、信号处理、通信等,这里也可以发现这也是FPGA的几个方向,这样感觉自己的竞争力更大点;其次FPGA是电子行业工资很高的一个方向,不比软件低,相比于嵌入式工资要高的多。而且现在看来,当时选择的方向并没有错,FPGA工程师的缺口很大,再加上国家在IC行业的支持,人才的需求量会越来越大,这带来了一系列的机遇。

这里劝解一下电子类的同学,不要一股脑扎进软件的方向中去,我们本专业同样有比软件方向更好的工作,毕竟我们的中年危机要比软件低的多,工资又不必他们低。

如何学习FPGA

啰嗦了那么多,终于到了重点,如何学习FPGA。有同学会说先看语法书,也有同学说买个开发板。
1、这里个人建议是先把数电学号,否则会发现一个很简单的现象自己都不明白原理,这里推荐慕课网上清华大学林红老师的数字电子技术基础(阎石老师主编),在bilibili上有完整的视频;
2、然后买个开发板,因为语法书太厚了,里面大多数是不可综合语句,也就是平常很少用得到。而且,书本看完之后几乎也记不清什么。这里入门推荐小梅哥的开发板AC620(约500元),因为小梅哥有完整的暑假班教学视频,是从零基础开始的,语法也是从零学习(bilibili上有完整视频、也有专门的答疑群)。学完小梅哥的开发板,你将会学到三大协议接口、千兆网、SOPC等,算是进入了入门阶段;
3、接下来需要进行进阶学习、这里推荐米联客的开发板,因为米联客的板子较便宜(也已经很贵了),历程也比较丰富,这里推荐MA7035FA 100T(1699元)。从这个开发板上,你可以学到HDMI接口、USB3.0接口、PCIE接口、SFP光口、DDR3、千兆网等。因为米联客的基础答疑服务做的不算完善(毕竟做的板卡较高级,时间有限可以理解),所以一定要有了较好的基础再接触,否则会感觉自己什么都学会了,自己又什么都没学会;
4、这时候可以接触时序约束课程了,入门还是建议小梅哥的时序约束视频,进阶可以看明德杨的时序约束(bilibili上面有完整视频),个人认为时序约束没那么重要,内部时序主要看自己的代码风格,这里推荐V3学院、开源骚客的代码风格,输入输出时序约束可以用PLL代替;
5、将FPGA的接口常见的接口逻辑学完,那么接下来应该注重算法了,这个市面上据我所知没有交完善的资料,顶多就是V3学院的深度学习课程、SOBEL边缘检测,开源骚客的直方图均衡、静脉显示,至芯的霍夫曼编码等等,各位同学如果需要可以联系他们。因为这些算法的FPGA实现已经很成熟,所以具有一定的参考作用。但是到达这个阶段主要就靠自己了,与自己的研究方向或工作方向联系起来。如果做基于FPGA的图像处理方向,推荐冈萨雷斯的数字图像处理、CrazyBingo的学习材料;如果做加速方向,可以关注V3学院的加速课程(SDSOC)、浙大与复旦也有研究生做了相应的课程;如果是做近来比较火的IC方向,这个我没关注过,就不解释了。。。。

至于应不应该报辅导班是很多同学想问的。如果自己实在静不下心又有时间,可以考虑报辅导班,但是要切记自主学习很重要。现在市面上的资料已经比较全,报辅导班就是遇见不会的bug,可以找到老师帮你立刻解决。但是这是一个FPGA工程师必备的技能,要学会自己解决问题,不能什么都问。这里建议报辅导班的同学属于,大学确实什么基础都没有,甚至C语言都不会,又想从事FPGA行业的同学。如果有相应的基础,还是自己学比较好,虽然过程比较曲折难受,但是这种能力是必备的。至于辅导班,主要有V3学院(上海)、至芯科技(北京)、明德扬(广州),还有一些小型的比如开源骚客(成都)、小梅哥(武汉)、大辉哥(暂未定)办的。至于内容其实大同小异(把常见的接口讲完,再附带几个简单算法),选择哪家看自己的方便程度就行了。

最后吐槽一句,上面提到的公司记得打钱哈,免费做了广告!!!!!

需要掌握的接口

这里稍微提一下需要学什么:
1、verilog、VHDL语法
2、常见接口:VGA、HDMI、UART、IIC、SPI等
3、常用外设:AD、DA、OV5640、LCD屏、DS18B20等
4、存储外设:SDRAM、DDR、EEPRO等
5、信号处理算法:FIR滤波器、FFT变换、CORDIC算法、自适应滤波算法、硬件排序算法,差值抽取等
6、图像处理算法:SOBEL图像边缘检测、中值滤波、图像腐蚀与膨胀、直方图均衡化等等(这里强烈推荐HLS工具,可以很方便的实现图像处理算法)
7、高速接口:USB2(480Mbps)、USB3(5Gbps)、千兆网(1Gbps)、PCIE(2.5、5、8GT/s)、SFP、万兆网等
8、ZYNQ:C语言基础、AXI协议、DMA操作,常用PS端外设的使用方法。
9、时序约束操作
10、项目实战
11、必备技能:MATLAB、C、C++

  • List item

未来计划

以后我将在CSDN上面从零基础开始写一些文章,总结自己学到的知识,同学们应该可以看出我这人比较啰嗦,自己写的文章也一定会很详细。以上知识,我己经基本掌握,对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群
FPGA成长之路_第1张图片

你可能感兴趣的:(FPGA,fpga,信号处理,神经网络,深度学习,自动驾驶)