FPGA是一个高度集成化的芯片,其学习过程既需要编程,又需要弄懂硬件电路和计算机架构。涉及到的知识和基础非常多,如果不合理地安排学习内容,学习过程会非常漫长和枯燥。这篇文章主要阐述了对于入门FPGA的一些经验分享,希望能够给想学FPGA的人一些引导,少走一些弯路。入门学习FPGA主要分为以下三个阶段:

第一阶段(知识储备):

       在正式开始学习FPGA之前,这里希望各位拿一本数电书好好看一下(相关专业的应该都学过数电这门专业课)无论有没有学过,需要把基本的逻辑运算的规则,与或非、同或异或等都搞明白,了解数字电路的原理和基本常识,为后面的FPGA学习奠定良好的基础。这里推荐的数电教材是《数字电子技术基础(第六版)》,是由阎石主编、高等教育出版社2016年出版的教材。

       当然,学习FPGA基础的储备肯定不只是数电,还有模电,数字信号处理等等,后续可以看你是要做哪个方向再进行知识的补充,这里的数电基础是必须的有的。

第二阶段(正式入门学习):

       为了能更好的入门学习FPGA,小编根据自己的学习历程,整理了“三件套”学习方法来学习FPGA。

1.选择配套的开发板和视频课程进行FPGA开发的系统学习

       目前主流的FPGA开发工具主要是AMD的Vivado和英特尔的Quartus,这里建议初学者优先学习使用Quartus,也就是使用英特尔FPGA的开发板作为入门学习使用(Vivado的学习使用较为繁琐,建议先学Quartus)。 网上有很多关于FPGA的课程,包括像正点原子,野火,明德扬等等,他们视频配套的开发板也在某宝售卖。这里建议初学者选择野火的FPGA征途pro系列开发视频,视频使用的征途pro开发板采用的是英特尔的芯片,也就是使用Quartus作为开发工具。野火基于波形图的开发方式对初学者是极其友好的,并且野火的代码风格算是比较好的(代码风格很重要)。相关的配套视频也已经更新完毕,视频资源齐全也是小编推荐该课程的重要原因之一。野火的视频课程入门阶段看到第三十二讲SignalTap Ⅱ即可,后续课程多为进阶,按照需求观看,不必全部刷完(浪费时间)。

2.选择一本工具书对硬件编程语言进行学习

       主流的硬件编程语言主要有Verilog,HDL和Systemverilog。目前用的比较多的还是Verilog,入门阶段小编也建议优先学习Verilog,网上的配套视频也基本是以Verilog为主。虽然在视频课程里对于Verilog的语法有讲解,这边建议通过书籍对于Verilog语法进行一个学习,不一定面面俱到但要有一定了解,后续的视频学习中遇到不理解的地方也可以当成一本工具书进行查询,这里推荐的是夏宇闻的《Verilog数字系统设计教程》。

 3.通过刷题网站HDLbits巩固基础知识

       HDLbits是一个Verilog刷题网站,这个刷题网站可以在线完成编译。是对于语法基础知识的一个巩固。网上有许多博主已经更新了全套的答案,后续小编也会更新答案和讲解。

第三阶段(入门强化阶段)

        这一阶段你已经熟练掌握了FPGA基本的开发流程和了解了Verilog语言的使用。对于Quartus和modelsim这些软件的使用已经得心应手。这时候小编的建议是开始转向对于Vivado的学习,这个软件会比Quartus复杂一些,但是换汤不换药。这时候先不建议购入赛灵思的开发板,目前野火的赛灵思视频课程没有更新完毕,但是对于用来熟悉Vivado足够了。大资金比较充裕的大家也可以选择正点原子的达芬奇开发板(比较贵),使用正点的开发视频进行Vivado。在你习惯了野火的波形法后,正点的视频不像野火那么通俗易懂,要做好心理准备。小编这里还是建议暂时不买板子,利用视频熟悉一下Vivado开发流程即可。

        当然这一阶段对于野火的后续视频也可以继续开始有选择性的观看,比如一些串口通信对于以后找工作还是很有用处的。

        总结下来入门阶段你们最起码需要掌握的东西:

         (1)   基础知识:数电

       (2)编程语言:Verilog

       (3)开发工具:Quartus,Vivado,Modelsim

       (4)FPGA开发流程

         这些在上述推荐的学习方法中均涉及到,按照步骤来即可。

        通过这三个阶段的学习,能够坚持下来对于入门FPGA完全足够了。 这也只是FPGA学习第一步,想要成为一名合格的FPGA工程师后续的学习是非常枯燥漫长的。关于FPGA的学习其实网络上的视频课程相对于软件学习是很少的,但是不乏一些好的书籍,在这里也是希望大家能够养成啃书的习惯,到后续进阶看芯片手册和一些书籍时会轻松很多。

        后续会对FPGA进阶学习做出一些经验的分享。

更多推荐

FPGA学习经验分享——入门篇