学习FPGA,在不同层次的人明显有不同的答案。先说一句,说不要开发版的都是菜鸟级选手。
我把FPGA层次划分为,鸡蛋级别,菜鸟级别,老鸟级别,高手级别四类。题主是鸡蛋级别的吧!啥也不会。那些得赞高的不少都是菜鸟级别的选手。当然,我现在告诉你的如何成为一个菜鸟。当然以后有空我也会写从菜鸟变成老鸟的方法。
1)熟悉语法,其实你不需要什么都会,但是要记住几个经典的时序,逻辑电路的描述方式。
2)熟悉三个经典电路描述并仿真。仿真其实不是很重要,我开始学习压根没学那个玩意儿,因为要是只做接口那玩意儿没啥用。直接用ChipSchop抓抓数据更快。仿真是给做算法,工程相对较大的人用的。三个经典电路分别是,分频器,计数器(可做一个时钟),序列检测器。
这样你就基本熟悉了开发环境了。
3)上板卡跑一个灯,熟悉一个板卡上时钟资源使用,硬件的使用原理。
4)知道了FPGA学习主要不在于编程!压根没有编程这回事!!Verilog是硬件描述语言!描述!!写代码时脑子里必须有电路图!!知道FPGA主要学的是硬件和算法!!软件最多能占10%就不错了!!
只要你能完成这上面的东西,恭喜你进入菜鸟行列,可以在别人设计好FPGA方案的条件下完成一些模块的设计了。其实华为招聘员工,很多人FPGA水平一开始都差不多这么菜。
先写一下老鸟需要会什么,以后再答怎么做到。
1)FPGA逻辑资源,特别是时钟资源要非常熟悉。
2)做算法的必须熟悉sysgen的使用。说的容易了,sysgen画画图也没那么容易哦,你要熟悉使用各种滤波器,理论知识要求起点就不小。
3)充分理解FPGA从上而下的设计原则,能够编写中等程度的FPGA详细设计方案。
4)熟悉时序优化,时序收敛,区域约束等知识。并且能运用到编程之中,解决菜鸟们解决不了的“不科学”的问题。说白了就是会使用planhead,以及ISE中那些你还没接触过的功能。一般菜鸟们ISE都只会编程,默认的编译一下,然后下载,ChipSchop抓抓数看看。
5)能够熟悉FPGA常用的接口,不求都会编程,但是要知道他们功能是什么。比如ADC,DAC,串口,EMIF等等。并且熟悉DSP等FPGA周边常用芯片工作原理。
6)熟悉硬件设计,至少要知道Bank上IO规划怎么好,全局时钟,区域时钟大致怎么规划等等。
7)信号源,示波器,频谱仪都要熟悉使用吧!
等这些都熟悉了,差不多是老鸟了。
要成为高手,你没有十来个FPGA程序设计经验,解决过十来个中大项目核心问题,没有做过大系统还是停留在小板卡,都是不行的。
发现入门没那么容易。我觉得入门必须知道FPGA是做什么的,能做什么?和ARM,DSP,X86,GPU对比有啥优势?
我下面简单说说,FPGA现在有三个方面:
1)通信高速接口设计。一般速率太高了,需要用FPGA把高速数字信号分开,然后使信号容易处理,传输,存储。3
2)数字信号处理。包括图像处理,雷达信号处理,医学信号处理等。优势是实时性好,用面积换速度,比CPU快的多。
3)SOPC。但是个人觉得这个方面不太主流。
基本上60%以上应用于做通信接口,也是FPGA最适合做,也是优势最大的方面。30%做信号处理。其实很多情况做信号处理也是由于一个系统中已经需要一个做接口的FPGA,不想多花钱、费事在买个DSP而已!
后记
听到有人批评,其实我还是蛮高兴的。有人说我水平是一个较高的菜鸟。确实严格来讲没有错。仿真一直是我忽略的一个环节。我在这里承认自己说仿真不重要是不对的。仿真一般可以提高一个优秀的FPGA工程师的工作效率,一些低级的错误可以一下子反应出来。特别是不熟悉FPGA语法的人需要仿真。毕竟一个较大的FPGA程序需要编译几个小时。但是请大家合理的看待仿真这件事,菜鸟又要学编程又要学仿真。关键仿真正确后实际还不一定对!这样会打击信心。
在有条件的基础上可以直接抓取信号看看波形,这样比较准确。一下子可以让你缩短做一个简单工程的周期。菜鸟级别的工程一般直接写出来也不怎么会错的。所以在上面我说了仿真对于菜鸟不是很重要。各自还是看每个人处在的阶段看问题吧!
一般从时间上来说一般1-2年能入门,就是我说的菜鸟水平没有达到老鸟级别。3-5年算是一个老鸟级别吧!能不能到高手看个人造化。我学习FPGA目前是两年左右,做过工程量大的项目2个,小项目记不清了,级别在菜鸟和老鸟之间。熟悉FPGA各个方面的工作,但不熟练。欢迎交流和高手们批评指正。