FPGA零基礎(chǔ)入門指南
我從2021年10月份開始接觸FPGA并進(jìn)行系統(tǒng)學(xué)習(xí),練習(xí)了已經(jīng)兩年了,離出道的兩年半還差一點(diǎn),不過(guò)也有很多收獲。目前網(wǎng)上的FPGA的學(xué)習(xí)路線質(zhì)量參差不一,對(duì)于資料的總結(jié)不夠全面,導(dǎo)致我自己在學(xué)習(xí)過(guò)程中走了很多彎路,例如看了質(zhì)量一般的網(wǎng)課、復(fù)現(xiàn)了一個(gè)錯(cuò)誤的項(xiàng)目等,這些信息差都極大的影響了我的學(xué)習(xí)成本。
因此,我僅作為一名普通的FPGA愛好者,總結(jié)了一套適用于零基礎(chǔ)的FPGA入門指南,包含全套學(xué)習(xí)路線和資料,都是我本人使用過(guò),并且精心挑選后的資源,力求給大家呈現(xiàn)最簡(jiǎn)單的FPGA零基礎(chǔ)入門!
本文開源地址(內(nèi)含超多FPGA精品學(xué)習(xí)資料和license):
https://github.com/ChinaRyan666/FPGA-Getting-Started-Guide
一、每個(gè)人都應(yīng)該會(huì)使用GitHub
如果你是一枚Coder,但是你不知道GitHub,那么我覺得你就不是一個(gè)菜鳥級(jí)別的Coder,因?yàn)槟銐焊皇钦嬲鼵oder,你只是一個(gè)Code搬運(yùn)工。說(shuō)明你根本不善于突破自己!
為什么這么說(shuō)?原因很簡(jiǎn)單,很多優(yōu)秀的代碼以及各種框架源碼都存放于GitHub當(dāng)中!
學(xué)習(xí)之前我們先要明白Git和Github的基本概念:
Git是一個(gè)分布式版本控制系統(tǒng),簡(jiǎn)單的說(shuō)就是一個(gè)軟件,用于記錄一個(gè)或若干文件內(nèi)容變化,以便來(lái)查閱特定版本修訂情況的軟件,通過(guò)Git我們可以從Github和Gitee等地方拉取和推送代碼,便于管理和團(tuán)隊(duì)協(xié)作。
Github是一個(gè)為用戶提供Git服務(wù)的網(wǎng)站,簡(jiǎn)單說(shuō)就是一個(gè)可以放代碼的地方(也可以放其他內(nèi)容)。Github除了提供管理Git的web界面外,還提供了訂閱、社區(qū)、討論組、在線編輯器等豐富的功能。
總結(jié)起來(lái)就是:先學(xué)Git,再學(xué)GitHub。
學(xué)習(xí)資源推薦
-
黑馬程序員Git視頻教程(約4h)
-
GitHub新手入門圖文詳解
如果你想更深入的理解Git,玩轉(zhuǎn)GitHub,推薦以下資料
- 廖雪峰的Git教程
- 猴子都能懂的Git入門
- GitHub官方文檔
- 開源指北
二、數(shù)字電路
數(shù)字電路是學(xué)習(xí)FPGA的前提
數(shù)字電路是指基于數(shù)字信號(hào)的電子電路,由數(shù)字邏輯門和觸發(fā)器等元件組成。而FPGA(Field Programmable Gate Array)是一種可編程的數(shù)字邏輯芯片,它是由大量的可編程邏輯單元、I/O單元和時(shí)鐘管理單元等組成的。
FPGA可以用來(lái)實(shí)現(xiàn)數(shù)字電路,因?yàn)樗梢员痪幊坛筛鞣N不同的數(shù)字邏輯電路,包括邏輯門、計(jì)數(shù)器、狀態(tài)機(jī)等等。這使得FPGA成為一種靈活、高效的數(shù)字電路實(shí)現(xiàn)方式,特別適合于需要快速原型開發(fā)和設(shè)計(jì)迭代的應(yīng)用場(chǎng)景。
FPGA也可以被用來(lái)實(shí)現(xiàn)數(shù)字信號(hào)處理(DSP)和嵌入式系統(tǒng)。在這些應(yīng)用場(chǎng)景中,F(xiàn)PGA可以用來(lái)處理實(shí)時(shí)數(shù)字信號(hào),例如音頻和視頻信號(hào),而數(shù)字信號(hào)處理器(DSP)和微處理器可能無(wú)法處理這些信號(hào)。
因此,F(xiàn)PGA可以看作是數(shù)字電路的一種高級(jí)實(shí)現(xiàn)形式,可以用來(lái)實(shí)現(xiàn)各種不同的數(shù)字邏輯電路和數(shù)字信號(hào)處理應(yīng)用。
學(xué)習(xí)資源推薦
- 數(shù)字電路速成課(約10h)
- 數(shù)字電路課本及講義 百度網(wǎng)盤(提取碼:ryan)
- 記得誠(chéng)數(shù)字電路專欄
對(duì)于FPGA的入門開發(fā),學(xué)完上面的教程即可,掌握程度70%就可以,如果想系統(tǒng)性的學(xué)習(xí)數(shù)字電路,建議自行上網(wǎng)尋找合適自己的網(wǎng)課進(jìn)行學(xué)習(xí),可參考B站清華大學(xué)王紅老師講的數(shù)字電路,但我不推薦,原因是時(shí)長(zhǎng)過(guò)長(zhǎng)、年限較久遠(yuǎn)(約10年前的課)、無(wú)配套講義(知識(shí)點(diǎn)不夠清晰)。
浩瀚互聯(lián)網(wǎng),找到適合自己的就行。
三、Verilog HDL
FPGA開發(fā)語(yǔ)言
FPGA的開發(fā)語(yǔ)言主要分為硬件描述語(yǔ)言和高級(jí)語(yǔ)言兩種。
1.硬件描述語(yǔ)言:
硬件描述語(yǔ)言(HDL)是一種專門用于FPGA開發(fā)的語(yǔ)言,常見的有Verilog和VHDL。使用HDL編程可以直接描述硬件電路的結(jié)構(gòu)和行為,實(shí)現(xiàn)電路的功能。HDL語(yǔ)言需要掌握一定的電路原理知識(shí),通常被硬件工程師所使用。
2.高級(jí)語(yǔ)言:
高級(jí)語(yǔ)言包括C/C++、Python、MATLAB等,可以通過(guò)編譯或解釋實(shí)現(xiàn)對(duì)FPGA的控制。這種方法需要使用到對(duì)應(yīng)的FPGA開發(fā)工具包,如Vivado等。使用高級(jí)語(yǔ)言可以簡(jiǎn)化FPGA的開發(fā)難度,但是會(huì)犧牲一定的性能。
總之,選擇何種開發(fā)語(yǔ)言取決于FPGA應(yīng)用的需求和開發(fā)者的技術(shù)水平。對(duì)于入門而言,先學(xué)Verilog即可。
學(xué)習(xí)資源推薦
- HDLBits刷題網(wǎng)站
- HDLBits答案及講解(不習(xí)慣網(wǎng)站刷題也可以直接看這個(gè))
- Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程 夏宇聞(Verilog最強(qiáng)語(yǔ)法書,不接受反駁)
使用這門硬件描述語(yǔ)言的時(shí)候我們像是在建模,這點(diǎn)區(qū)別于編程語(yǔ)言,這往往是新手首先需要繞過(guò)來(lái)的難關(guān)!
入門只需把HDLBits刷70%即可,細(xì)節(jié)不必深究,在具體實(shí)驗(yàn)中去品味。
四、FPGA開發(fā)
正片開始,僅屬于FPGA的浪漫。
基礎(chǔ)掃盲
Xilinx和Altera是我們主要使用到的FPGA芯片廠商,此外還有國(guó)產(chǎn)的紫光、安陸等。
對(duì)我們用戶來(lái)說(shuō),他們的區(qū)別主要在于EDA軟件的不同,比如Xilinx使用的是Vivado、Altera使用的是Quartus。(Xilinx已被AMD收購(gòu),Altera已被Intel收購(gòu))
軟件選擇也就影響了我們的板卡選擇,選擇Vivado還是Quartus取決于設(shè)計(jì)人員所需要的功能和設(shè)計(jì)對(duì)象。
如果設(shè)計(jì)人員需要設(shè)計(jì)Xilinx FPGA芯片,則Vivado是更好的選擇;如果需要設(shè)計(jì)Altera FPGA芯片,則Quartus更適合。同時(shí),如果速度和處理能力是設(shè)計(jì)人員的首要考慮因素,那么Vivado是更好的選擇;如果設(shè)計(jì)人員需要更多的工具和優(yōu)化功能,則Quartus可能更適合。
雖然對(duì)于入門來(lái)說(shuō)選擇哪個(gè)沒有太多區(qū)別,但學(xué)習(xí)FPGA的時(shí)候手上最好要有一塊板卡,上板驗(yàn)證會(huì)有更多的成就感。所以,用什么家的板卡,就用什么軟件。
學(xué)習(xí)資源推薦
-
小梅哥Xilinx FPGA開發(fā)全套網(wǎng)課
目前我認(rèn)為全網(wǎng)最好的免費(fèi)FPGA邏輯端開發(fā)教程,只要你按照這套教程用心學(xué)完,你就是個(gè)有開發(fā)經(jīng)驗(yàn)的FPGA工程師了。
如果走馬觀花,心浮氣躁的瀏覽完整個(gè)課程,那就只能算是擴(kuò)展知識(shí)面了。眼睛覺得會(huì)了,手表示自己不會(huì)寫。按照教程推薦的方法學(xué),越學(xué)越簡(jiǎn)單,越學(xué)越有信心,如果走馬觀花,不注重基礎(chǔ)的打造,只想看結(jié)果,不注重學(xué)習(xí)和調(diào)試的過(guò)程,只會(huì)越學(xué)越困難,最后放棄。
-
小梅哥官網(wǎng)
寶藏網(wǎng)站,我總結(jié)了以下幾種打開方式:
1.選擇一款芯片(基本涵蓋市面上所有常見的),找到對(duì)應(yīng)小梅哥家的板卡名稱,搜索即可查到全套軟硬件、網(wǎng)課及開發(fā)資料。重點(diǎn)看開發(fā)板的文檔手冊(cè),小梅哥的文檔總結(jié)非常詳細(xì),強(qiáng)烈推薦。
2.開發(fā)時(shí)遇到報(bào)錯(cuò),將報(bào)錯(cuò)信息復(fù)制到此網(wǎng)站的搜索欄,絕大部分報(bào)錯(cuò)都是有對(duì)應(yīng)解決方法的。
3.逛三大專欄:FPGA學(xué)習(xí)交流、MCU學(xué)習(xí)交流、ARM Linux學(xué)習(xí)交流,你將會(huì)打開一個(gè)新世界。
至此,F(xiàn)PGA入門就結(jié)束了,如果你能用心學(xué)完這些,相信你會(huì)對(duì)FPGA的世界更感興趣,就可以開始進(jìn)階學(xué)習(xí)了,例如ZYNQ、HLS高層次綜合、計(jì)算機(jī)體系結(jié)構(gòu)、深度神經(jīng)網(wǎng)絡(luò)加速器等等。
最后再推薦一個(gè)網(wǎng)站和一套人工智能的學(xué)習(xí)資料,供大家一起進(jìn)步!
-
Road To Coding
B站程序羊做的一個(gè)開源編程學(xué)習(xí)網(wǎng)站,有六大方向的學(xué)習(xí)路線和知識(shí)點(diǎn)大梳理,包括但不限于Java后端、前端、C/C++后臺(tái)開發(fā)、大數(shù)據(jù)開發(fā)、嵌入式開發(fā),還有很多寶藏資料,考研求職摸魚…一起去探索吧!做一個(gè)全棧大佬!
-
人工智能全套學(xué)習(xí)路線
B站Future做的全套學(xué)習(xí)路線,從0到1,這年頭不會(huì)人工智能都不好意思坐在實(shí)驗(yàn)室了!
之后我會(huì)繼續(xù)更新FPGA的詳細(xì)進(jìn)階指南,先挖個(gè)坑(因?yàn)槲乙策€在進(jìn)階中),希望我練習(xí)完兩年半可以出道。
一起學(xué)起來(lái)吧??!
No gall no glory(不經(jīng)磨練,難現(xiàn)輝煌)
微博:沂舟Ryan (@沂舟Ryan 的個(gè)人主頁(yè) - 微博 )
GitHub:ChinaRyan666
微信公眾號(hào):沂舟無(wú)限進(jìn)步文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-599479.html
如果對(duì)您有幫助的話請(qǐng)點(diǎn)贊支持下吧!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-599479.html
到了這里,關(guān)于FPGA零基礎(chǔ)入門學(xué)習(xí)路線的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!