☆☆如何学习FPGA☆☆

学习FPGA,我们假设朋友们对自己所在的专业领域的理论是熟悉的,并且对数字电路有着基础的认知。那么学习FPGA,个人总结主要分为如下几个步骤:

通用学习,不管什么专业,均需要学习的过程

第一、Verilog HDL/system Verilog的掌握

       由于国内基本上使用Verilog HDL更多,所以我们推荐学习Verilog HDL,由于verilog和C语言有着70%的相似性,而大多数高校都有开设C语言课程,因此选择Verilog HDL是首选。

       在确定好语言之后,需要不断的进行练习,常规的练习包括计数器,编码器,简单的逻辑电路,强化自己对数字电路与verilog HDL之间的关联。争取能做到看到数字电路,可以联想到Verilog,看到Verilog可以联想到数字电路等等。

       在软件平台方面,目前应用最多的是Intel的Quartus和Xilinx的Vivado两个平台,另外对于一些老款型号的芯片,Xilinx的ISE也可以使用。一开始对于这些开发软件,不用完全掌握,只需要掌握这些软件中将Verilog综合编译得到RTL数字电路的功能以及简单的仿真功能。用来辅助自己的Verilog的学习。

       刚开始当然会遇到很多语法问题,虽然Verilog有官方的IEEE标准手册,但是对于初学者来讲,完全看一遍也不太现实,我建议是遇到问题,直接百度下找下解决方案即可。

   

       第一阶段的预期效果:可以通过Verilog HDL独立完成一些简单的数字电路的编程开发,并进行综合编译,实现电路的仿真。如计数器,电子钟,编码器等等。

第二、复杂数字电路的设计与verilog HDL的巩固

       在有了步骤一的基础之后,可以购买一个开发板,一开始不用太贵,1000左右就可以了。一般情况下,购买的开发板会提供各种案例,如:

     

       这个截图是我以前购买的开发板附带的案例,可以看到包括了按键控制,LED跑马灯,串口,网口,存储器,SUB,SD卡,VGA显示器以及摄像头等多个案例。这些案例基本都会有有详细的注释和解释说明,帮助你了解FPGA是具体怎么操作硬件的。结合仿真分析,把每个案例都自己尝试硬件上跑一边。基本会对FPGA有了更进一步的认识。

       第二阶段的预期效果:这个阶段的预期效果,会开发一些简单的数字系统,并在自己的硬件板子上进行实际测试,同时会根据自己需求,使用FPGA上的多种不同类型的硬件资源。

第三、时序、电路优化、资源,功耗等学习

      FPGA在设计过程中,除了实现逻辑功能之外,还涉及到很多问题,如FPGA时序问题,电路资源问题,功耗问题等等,一个好的电路,肯定具备较少的资源占用,较低的功耗以及时序。这个环节会时钟陪伴整个FPGA的学习生涯。刚开始不懂没关系,但是要有这个意识。

      此外,FPGA的软件提供了大量的工具方便查看,如看时序可以通过modelsim仿真,通过片内ILA信号采集来查看时序,通过功耗分析看FPGA的实际可能功耗等等。

专项学习,根据自己的专业方向进行深入学习(结合MATLAB等仿真软件辅助FPGA设计)

       FPGA目前应用及其广泛,如通信和信号处理,图像处理,接口开发,数据链,人工智能,CPU设计,控制系统等等。下面就其中几个方面的学习做简单的介绍。

第四、通信与信号处理,数据链

       掌握通信原理,信号处理等通信类基础课程原理,了解一个完整的数据链所设计的所有模块的原理:包括调制解调,载波同步,符号同步,帧同步,位同步,MIMO,FFT,IFFT,信道估计,均衡等原理,滤波器等等。使用FPGA对这些模块进行基础的开发,并尝试自己搭建一个完整的通信系统。从而具备独立开发一个通信系统数字信号处理部分的能力。

第五、接口开发

       串口,SPI,USB,PCI/PCIE,DDR234,TCP/IP/UDP,SATA,HDMI,VGA等常见接口协议的开发,并会自己根据实际情况,设计协议,开发接口协议。

第六、图像处理

       掌握FPGA对二维矩阵数据开发的技巧,FPGA加速处理,常规的图像处理算法,中值滤波,小波变换,二维傅里叶,图像增强等基础算法的开发。同时对一些较为复杂的图像处理算法进行深入研究,如图像去雾处理,去抖动处理等等。 

第七、人工智能

      人工智能方面,大部分用在目标检测和识别,需要有一定的图像处理理论基础。了解FPGA开发AI系统的基本流程,如xilinx的Vitis的AI功能模块。并掌握MATLAB/PYTHON对深度学习训练的基本流程。目前FPGA做AI开发,大多数AI网络模块都有现成的库可以使用,因此要对已有的各种深度学习网络模块理论要有更为深入的认识,学习什么样的场景,选择什么样的网络模型进行AI开发。当然,对于一些要求更高的需求,可自己开发新的网络模型,并进行FPGA实现。

欢迎添加本博微信号:c840893。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Njc3NzMjI=,size_16,color_FFFFFF,t_70


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

  

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/113789801
今日推荐