文章目录
FPGA零基础入门指南
我从2021年10月份开始接触FPGA并进行系统学习,练习了已经两年了,离出道的两年半还差一点,不过也有很多收获。目前网上的FPGA的学习路线质量参差不一,对于资料的总结不够全面,导致我自己在学习过程中走了很多弯路,例如看了质量一般的网课、复现了一个错误的项目等,这些信息差都极大的影响了我的学习成本。
因此,我仅作为一名普通的FPGA爱好者,总结了一套适用于零基础的FPGA入门指南,包含全套学习路线和资料,都是我本人使用过,并且精心挑选后的资源,力求给大家呈现最简单的FPGA零基础入门!
本文开源地址(内含超多FPGA精品学习资料和license):
一、每个人都应该会使用GitHub
如果你是一枚Coder,但是你不知道GitHub,那么我觉得你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工。说明你根本不善于突破自己!
为什么这么说?原因很简单,很多优秀的代码以及各种框架源码都存放于GitHub当中!
学习之前我们先要明白Git和Github的基本概念:
Git是一个分布式版本控制系统,简单的说就是一个软件,用于记录一个或若干文件内容变化,以便来查阅特定版本修订情况的软件,通过Git我们可以从Github和Gitee等地方拉取和推送代码,便于管理和团队协作。
Github是一个为用户提供Git服务的网站,简单说就是一个可以放代码的地方(也可以放其他内容)。Github除了提供管理Git的web界面外,还提供了订阅、社区、讨论组、在线编辑器等丰富的功能。
总结起来就是:先学Git,再学GitHub。
学习资源推荐
如果你想更深入的理解Git,玩转GitHub,推荐以下资料
二、数字电路
数字电路是学习FPGA的前提
数字电路是指基于数字信号的电子电路,由数字逻辑门和触发器等元件组成。而FPGA(Field Programmable Gate Array)是一种可编程的数字逻辑芯片,它是由大量的可编程逻辑单元、I/O单元和时钟管理单元等组成的。
FPGA可以用来实现数字电路,因为它可以被编程成各种不同的数字逻辑电路,包括逻辑门、计数器、状态机等等。这使得FPGA成为一种灵活、高效的数字电路实现方式,特别适合于需要快速原型开发和设计迭代的应用场景。
FPGA也可以被用来实现数字信号处理(DSP)和嵌入式系统。在这些应用场景中,FPGA可以用来处理实时数字信号,例如音频和视频信号,而数字信号处理器(DSP)和微处理器可能无法处理这些信号。
因此,FPGA可以看作是数字电路的一种高级实现形式,可以用来实现各种不同的数字逻辑电路和数字信号处理应用。
学习资源推荐
- 数字电路速成课(约10h)
- 数字电路课本及讲义 百度网盘(提取码:ryan)
- 记得诚数字电路专栏
对于FPGA的入门开发,学完上面的教程即可,掌握程度70%就可以,如果想系统性的学习数字电路,建议自行上网寻找合适自己的网课进行学习,可参考B站清华大学王红老师讲的数字电路,但我不推荐,原因是时长过长、年限较久远(约10年前的课)、无配套讲义(知识点不够清晰)。
浩瀚互联网,找到适合自己的就行。
三、Verilog HDL
FPGA开发语言
FPGA的开发语言主要分为硬件描述语言和高级语言两种。
1.硬件描述语言:
硬件描述语言(HDL)是一种专门用于FPGA开发的语言,常见的有Verilog和VHDL。使用HDL编程可以直接描述硬件电路的结构和行为,实现电路的功能。HDL语言需要掌握一定的电路原理知识,通常被硬件工程师所使用。
2.高级语言:
高级语言包括C/C++、Python、MATLAB等,可以通过编译或解释实现对FPGA的控制。这种方法需要使用到对应的FPGA开发工具包,如Vivado等。使用高级语言可以简化FPGA的开发难度,但是会牺牲一定的性能。
总之,选择何种开发语言取决于FPGA应用的需求和开发者的技术水平。对于入门而言,先学Verilog即可。
学习资源推荐
- HDLBits刷题网站
- HDLBits答案及讲解(不习惯网站刷题也可以直接看这个)
- Verilog数字系统设计教程 夏宇闻(Verilog最强语法书,不接受反驳)
使用这门硬件描述语言的时候我们像是在建模,这点区别于编程语言,这往往是新手首先需要绕过来的难关!
入门只需把HDLBits刷70%即可,细节不必深究,在具体实验中去品味。
四、FPGA开发
正片开始,仅属于FPGA的浪漫。
基础扫盲
Xilinx和Altera是我们主要使用到的FPGA芯片厂商,此外还有国产的紫光、安陆等。
对我们用户来说,他们的区别主要在于EDA软件的不同,比如Xilinx使用的是Vivado、Altera使用的是Quartus。(Xilinx已被AMD收购,Altera已被Intel收购)
软件选择也就影响了我们的板卡选择,选择Vivado还是Quartus取决于设计人员所需要的功能和设计对象。
如果设计人员需要设计Xilinx FPGA芯片,则Vivado是更好的选择;如果需要设计Altera FPGA芯片,则Quartus更适合。同时,如果速度和处理能力是设计人员的首要考虑因素,那么Vivado是更好的选择;如果设计人员需要更多的工具和优化功能,则Quartus可能更适合。
虽然对于入门来说选择哪个没有太多区别,但学习FPGA的时候手上最好要有一块板卡,上板验证会有更多的成就感。所以,用什么家的板卡,就用什么软件。
学习资源推荐
目前我认为全网最好的免费FPGA逻辑端开发教程,只要你按照这套教程用心学完,你就是个有开发经验的FPGA工程师了。
如果走马观花,心浮气躁的浏览完整个课程,那就只能算是扩展知识面了。眼睛觉得会了,手表示自己不会写。按照教程推荐的方法学,越学越简单,越学越有信心,如果走马观花,不注重基础的打造,只想看结果,不注重学习和调试的过程,只会越学越困难,最后放弃。
宝藏网站,我总结了以下几种打开方式:
1.选择一款芯片(基本涵盖市面上所有常见的),找到对应小梅哥家的板卡名称,搜索即可查到全套软硬件、网课及开发资料。重点看开发板的文档手册,小梅哥的文档总结非常详细,强烈推荐。
2.开发时遇到报错,将报错信息复制到此网站的搜索栏,绝大部分报错都是有对应解决方法的。
3.逛三大专栏:FPGA学习交流、MCU学习交流、ARM Linux学习交流,你将会打开一个新世界。
至此,FPGA入门就结束了,如果你能用心学完这些,相信你会对FPGA的世界更感兴趣,就可以开始进阶学习了,例如ZYNQ、HLS高层次综合、计算机体系结构、深度神经网络加速器等等。
最后再推荐一个网站和一套人工智能的学习资料,供大家一起进步!
B站程序羊做的一个开源编程学习网站,有六大方向的学习路线和知识点大梳理,包括但不限于Java后端、前端、C/C++后台开发、大数据开发、嵌入式开发,还有很多宝藏资料,考研求职摸鱼…一起去探索吧!做一个全栈大佬!
B站Future做的全套学习路线,从0到1,这年头不会人工智能都不好意思坐在实验室了!
之后我会继续更新FPGA的详细进阶指南,先挖个坑(因为我也还在进阶中),希望我练习完两年半可以出道。
一起学起来吧!!
No gall no glory(不经磨练,难现辉煌)
微博:沂舟Ryan (@沂舟Ryan 的个人主页 - 微博 )
GitHub:ChinaRyan666
微信公众号:沂舟无限进步
如果对您有帮助的话请点赞支持下吧!