浅谈FPGA

我与FPGA之缘

突然想写博客了,这不应该是我这种学术渣渣该有的想法,哈哈哈,心里想着不能一直在废下去了,所以记录一下自己所感所想,行业大佬CrazyBingo说过:我深刻体会到 FPGA 与数电模电的基础的深层次联系。 对于本科生而言, 你可以把 FPGA 当作业余兴趣, 但不要把它当成今后的饭碗, 你可以保持这个兴趣直到研究生读完。 从我招聘的情况来看, 做 FPGA 的至少要读过研究生。做 FPGA, 一定要学, 一定要有兴趣, 至少要学 3 年才算可以掌握这门技术, 为什么这么说呢, 我每天与 FPGA 打交道, Xilinx 官方网站的基本上每个英文资料我都看了一下, 我看了整整两年的文档, 才在这个行业有话语权, 而我每天要研究 14 个小时的 FPGA, 差不多是一般人的两倍。 这是大佬说的话。好了,回归正题,我第一次听说FPGA还是在大三上学期,一个外校老师给我们上课说的,当时没什么感觉,就没在意。后来,大三下学期,我们开了这门课,说实话上的不咋地,理论课几节课就结束了,剩下时间开始做些实验,那时候也在准备考研,也没在在意,比较混,然后稀里糊涂就结束了这门课。再后来,就是毕业论文选题,我那时想着考完研学一个方向,以后可能会用到,然后就选了一个FPGA的课题。然后就开始了解FPGA,那时候,我们用的是VHDL语言,话说,VHDL有点复杂,现在大部分都学的是Verilog ,然后经过几个月,从网上搜集资料和问别人,才把论文搞定。研究生录取后,我从网上买了一个二手的开发板,但是也没用过几次,一直在吃灰。后面准备后面把板子利用起来,整几个小实验玩玩,这就是我与FPGA之缘。

什么是FPGA

FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。中文名称叫做现场可编程逻辑门阵列。(这是百度所解释的)。用我自己的话可以这样理解:在一块芯片上我们可以利用硬件描述语言来设计电路实现我们想要的功能,是不是感觉这芯片很强大啊。

FPGA的应用领域

1.通信领域
主要用于通信设备的高速接口电路设计,这一方向主要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。
2.算法领域
可以称为数字信号处理方向或者数学计算方向,因为很大程度上这一方向已经大大超出了信号处理的范畴。在这一方向要求FPGA设计者有一定的数学功底,能够理解并改进较为复杂的数学算法,并利用FPGA内部的各种资源使之能够变为实际的运算电路。目前真正投入实用的还是在通信领域的无线信号处理、信道编解码以及图像信号处理等领域。
3.嵌入式领域
第3个方向就是所谓的SOPC方向,其实严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到第二个方向的知识,而如果需要设计专用的接口电路则需要用到第一个方向的知识。

为什么要学FPGA

因为爱好啊,不瞎扯了,还是因为工资高,但是要求也会很高,所以任何事情都有两面,风险与投资并存。有些人改行学软件Java之类的,确实也挺好的,工资也不低。一切看自己选择,话说,如果不学FPGA,也可以学IC验证,目前岗位需求还是蛮高的,FPGA岗位相对于验证岗还是有点少的。

如何学习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学院(上海)、至芯科技(北京)、明德扬(广州),还有一些小型的比如开源骚客(成都)、小梅哥(武汉)、大辉哥(暂未定)办的。至于内容其实大同小异(把常见的接口讲完,再附带几个简单算法),选择哪家看自己的方便程度就行了。
最后吐槽一句,上面提到的公司记得打钱哈,免费做了广告!!!!!
原文链接:https://blog.csdn.net/zhangningning1996/article/details/103796031
需要掌握的接口
这里稍微提一下需要学什么:
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++
原文链接:https://blog.csdn.net/zhangningning1996/article/details/103796031
以上是复制一个大佬写的,本人学术渣渣,能力有限,我只是知识的搬运工,哈哈哈。
以上如有错误,请批评指正。

后期计划

有时间就会写写,转发一些我认为比较好的文章。开学后,估计也没多少时间,前两天导师发了一个论文合集给我们,话说,从放假都没看过论文了,开学要好好做实验看论文了,不然毕业都困难。
纵然努力了也不一定会成功,但不努力肯定不能成功!
既然选择了远方,便不顾风雨兼程,一路走下去 !

发布了2 篇原创文章 · 获赞 3 · 访问量 100

猜你喜欢

转载自blog.csdn.net/qq_45644646/article/details/105711578