☆☆如何學(xué)習(xí)FPGA☆☆
發(fā)布時間:2022/6/10 瀏覽數(shù):5735
學(xué)習(xí)FPGA,我們假設(shè)朋友們對自己所在的專業(yè)領(lǐng)域的理論是熟悉的,并且對數(shù)字電路有著基礎(chǔ)的認(rèn)知。那么學(xué)習(xí)FPGA,個人總結(jié)主要分為如下幾個步驟:
通用學(xué)習(xí),不管什么專業(yè),均需要學(xué)習(xí)的過程
第一、Verilog HDL/system Verilog的掌握
由于國內(nèi)基本上使用Verilog HDL更多,所以我們推薦學(xué)習(xí)Verilog HDL,由于verilog和C語言有著70%的相似性,而大多數(shù)高校都有開設(shè)C語言課程,因此選擇Verilog HDL是首選。
在確定好語言之后,需要不斷的進(jìn)行練習(xí),常規(guī)的練習(xí)包括計數(shù)器,編碼器,簡單的邏輯電路,強(qiáng)化自己對數(shù)字電路與verilog HDL之間的關(guān)聯(lián)。爭取能做到看到數(shù)字電路,可以聯(lián)想到Verilog,看到Verilog可以聯(lián)想到數(shù)字電路等等。
在軟件平臺方面,目前應(yīng)用最多的是Intel的Quartus和Xilinx的Vivado兩個平臺,另外對于一些老款型號的芯片,Xilinx的ISE也可以使用。一開始對于這些開發(fā)軟件,不用完全掌握,只需要掌握這些軟件中將Verilog綜合編譯得到RTL數(shù)字電路的功能以及簡單的仿真功能。用來輔助自己的Verilog的學(xué)習(xí)。
剛開始當(dāng)然會遇到很多語法問題,雖然Verilog有官方的IEEE標(biāo)準(zhǔn)手冊,但是對于初學(xué)者來講,完全看一遍也不太現(xiàn)實,我建議是遇到問題,直接百度下找下解決方案即可。
第一階段的預(yù)期效果:可以通過Verilog HDL獨立完成一些簡單的數(shù)字電路的編程開發(fā),并進(jìn)行綜合編譯,實現(xiàn)電路的仿真。如計數(shù)器,電子鐘,編碼器等等。
第二、復(fù)雜數(shù)字電路的設(shè)計與verilog HDL的鞏固
在有了步驟一的基礎(chǔ)之后,可以購買一個開發(fā)板,一開始不用太貴,1000左右就可以了。一般情況下,購買的開發(fā)板會提供各種案例,如:
這個截圖是我以前購買的開發(fā)板附帶的案例,可以看到包括了按鍵控制,LED跑馬燈,串口,網(wǎng)口,存儲器,SUB,SD卡,VGA顯示器以及攝像頭等多個案例。這些案例基本都會有有詳細(xì)的注釋和解釋說明,幫助你了解FPGA是具體怎么操作硬件的。結(jié)合仿真分析,把每個案例都自己嘗試硬件上跑一邊。基本會對FPGA有了更進(jìn)一步的認(rèn)識。
第二階段的預(yù)期效果:這個階段的預(yù)期效果,會開發(fā)一些簡單的數(shù)字系統(tǒng),并在自己的硬件板子上進(jìn)行實際測試,同時會根據(jù)自己需求,使用FPGA上的多種不同類型的硬件資源。
第三、時序、電路優(yōu)化、資源,功耗等學(xué)習(xí)
FPGA在設(shè)計過程中,除了實現(xiàn)邏輯功能之外,還涉及到很多問題,如FPGA時序問題,電路資源問題,功耗問題等等,一個好的電路,肯定具備較少的資源占用,較低的功耗以及時序。這個環(huán)節(jié)會時鐘陪伴整個FPGA的學(xué)習(xí)生涯。剛開始不懂沒關(guān)系,但是要有這個意識。
此外,F(xiàn)PGA的軟件提供了大量的工具方便查看,如看時序可以通過modelsim仿真,通過片內(nèi)ILA信號采集來查看時序,通過功耗分析看FPGA的實際可能功耗等等。
專項學(xué)習(xí),根據(jù)自己的專業(yè)方向進(jìn)行深入學(xué)習(xí)(結(jié)合MATLAB等仿真軟件輔助FPGA設(shè)計)
FPGA目前應(yīng)用及其廣泛,如通信和信號處理,圖像處理,接口開發(fā),數(shù)據(jù)鏈,人工智能,CPU設(shè)計,控制系統(tǒng)等等。下面就其中幾個方面的學(xué)習(xí)做簡單的介紹。
第四、通信與信號處理,數(shù)據(jù)鏈
掌握通信原理,信號處理等通信類基礎(chǔ)課程原理,了解一個完整的數(shù)據(jù)鏈所設(shè)計的所有模塊的原理:包括調(diào)制解調(diào),載波同步,符號同步,幀同步,位同步,MIMO,F(xiàn)FT,IFFT,信道估計,均衡等原理,濾波器等等。使用FPGA對這些模塊進(jìn)行基礎(chǔ)的開發(fā),并嘗試自己搭建一個完整的通信系統(tǒng)。從而具備獨立開發(fā)一個通信系統(tǒng)數(shù)字信號處理部分的能力。
第五、接口開發(fā)
串口,SPI,USB,PCI/PCIE,DDR234,TCP/IP/UDP,SATA,HDMI,VGA等常見接口協(xié)議的開發(fā),并會自己根據(jù)實際情況,設(shè)計協(xié)議,開發(fā)接口協(xié)議。
第六、圖像處理
掌握FPGA對二維矩陣數(shù)據(jù)開發(fā)的技巧,F(xiàn)PGA加速處理,常規(guī)的圖像處理算法,中值濾波,小波變換,二維傅里葉,圖像增強(qiáng)等基礎(chǔ)算法的開發(fā)。同時對一些較為復(fù)雜的圖像處理算法進(jìn)行深入研究,如圖像去霧處理,去抖動處理等等。
第七、人工智能
人工智能方面,大部分用在目標(biāo)檢測和識別,需要有一定的圖像處理理論基礎(chǔ)。了解FPGA開發(fā)AI系統(tǒng)的基本流程,如xilinx的Vitis的AI功能模塊。并掌握MATLAB/PYTHON對深度學(xué)習(xí)訓(xùn)練的基本流程。目前FPGA做AI開發(fā),大多數(shù)AI網(wǎng)絡(luò)模塊都有現(xiàn)成的庫可以使用,因此要對已有的各種深度學(xué)習(xí)網(wǎng)絡(luò)模塊理論要有更為深入的認(rèn)識,學(xué)習(xí)什么樣的場景,選擇什么樣的網(wǎng)絡(luò)模型進(jìn)行AI開發(fā)。當(dāng)然,對于一些要求更高的需求,可自己開發(fā)新的網(wǎng)絡(luò)模型,并進(jìn)行FPGA實現(xiàn)。