這才是學(xué)習(xí)FPGA的正確路徑

2016年06月07日 10:51 來(lái)源:網(wǎng)站整理 作者:春波綠影 我要評(píng)論(0)

標(biāo)簽:fpga(588988)Verilog(108873)可編程邏輯門陣列(12311)

  學(xué)習(xí)FPGA,在不同層次的人明顯有不同的答案。先說一句,說不要開發(fā)版的都是菜鳥級(jí)選手。

  我把FPGA層次劃分為,雞蛋級(jí)別,菜鳥級(jí)別,老鳥級(jí)別,高手級(jí)別四類。題主是雞蛋級(jí)別的吧!啥也不會(huì)。那些得贊高的不少都是菜鳥級(jí)別的選手。當(dāng)然,我現(xiàn)在告訴你的如何成為一個(gè)菜鳥。當(dāng)然以后有空我也會(huì)寫從菜鳥變成老鳥的方法。

  1)熟悉語(yǔ)法,其實(shí)你不需要什么都會(huì),但是要記住幾個(gè)經(jīng)典的時(shí)序,邏輯電路的描述方式。

  2)熟悉三個(gè)經(jīng)典電路描述并仿真。仿真其實(shí)不是很重要,我開始學(xué)習(xí)壓根沒學(xué)那個(gè)玩意兒,因?yàn)橐侵蛔?a target="_blank">接口那玩意兒沒啥用。直接用ChipSchop抓抓數(shù)據(jù)更快。仿真是給做算法,工程相對(duì)較大的人用的。三個(gè)經(jīng)典電路分別是,分頻器,計(jì)數(shù)器(可做一個(gè)時(shí)鐘),序列檢測(cè)器。

  這樣你就基本熟悉了開發(fā)環(huán)境了。

  3)上板卡跑一個(gè)燈,熟悉一個(gè)板卡上時(shí)鐘資源使用,硬件的使用原理。

  4)知道了FPGA學(xué)習(xí)主要不在于編程!壓根沒有編程這回事??!Verilog是硬件描述語(yǔ)言!描述!!寫代碼時(shí)腦子里必須有電路圖!!知道FPGA主要學(xué)的是硬件和算法!!軟件最多能占10%就不錯(cuò)了!!

  只要你能完成這上面的東西,恭喜你進(jìn)入菜鳥行列,可以在別人設(shè)計(jì)好FPGA方案的條件下完成一些模塊的設(shè)計(jì)了。其實(shí)華為招聘員工,很多人FPGA水平一開始都差不多這么菜。

  先寫一下老鳥需要會(huì)什么,以后再答怎么做到。

  1)FPGA邏輯資源,特別是時(shí)鐘資源要非常熟悉。

  2)做算法的必須熟悉sysgen的使用。說的容易了,sysgen畫畫圖也沒那么容易哦,你要熟悉使用各種濾波器,理論知識(shí)要求起點(diǎn)就不小。

  3)充分理解FPGA從上而下的設(shè)計(jì)原則,能夠編寫中等程度的FPGA詳細(xì)設(shè)計(jì)方案。

  4)熟悉時(shí)序優(yōu)化,時(shí)序收斂,區(qū)域約束等知識(shí)。并且能運(yùn)用到編程之中,解決菜鳥們解決不了的“不科學(xué)”的問題。說白了就是會(huì)使用planhead,以及ISE中那些你還沒接觸過的功能。一般菜鳥們ISE都只會(huì)編程,默認(rèn)的編譯一下,然后下載,ChipSchop抓抓數(shù)看看。

  5)能夠熟悉FPGA常用的接口,不求都會(huì)編程,但是要知道他們功能是什么。比如ADC,DAC,串口,EMIF等等。并且熟悉DSP等FPGA周邊常用芯片工作原理

  6)熟悉硬件設(shè)計(jì),至少要知道Bank上IO規(guī)劃怎么好,全局時(shí)鐘,區(qū)域時(shí)鐘大致怎么規(guī)劃等等。

  7)信號(hào)源,示波器,頻譜儀都要熟悉使用吧!

  等這些都熟悉了,差不多是老鳥了。

  要成為高手,你沒有十來(lái)個(gè)FPGA程序設(shè)計(jì)經(jīng)驗(yàn),解決過十來(lái)個(gè)中大項(xiàng)目核心問題,沒有做過大系統(tǒng)還是停留在小板卡,都是不行的。

  發(fā)現(xiàn)入門沒那么容易。我覺得入門必須知道FPGA是做什么的,能做什么?和ARM,DSP,X86,GPU對(duì)比有啥優(yōu)勢(shì)?

  我下面簡(jiǎn)單說說,F(xiàn)PGA現(xiàn)在有三個(gè)方面:

  1)通信高速接口設(shè)計(jì)。一般速率太高了,需要用FPGA把高速數(shù)字信號(hào)分開,然后使信號(hào)容易處理,傳輸,存儲(chǔ)。3

  2)數(shù)字信號(hào)處理。包括圖像處理,雷達(dá)信號(hào)處理,醫(yī)學(xué)信號(hào)處理等。優(yōu)勢(shì)是實(shí)時(shí)性好,用面積換速度,比CPU快的多。

  3)SOPC。但是個(gè)人覺得這個(gè)方面不太主流。

  基本上60%以上應(yīng)用于做通信接口,也是FPGA最適合做,也是優(yōu)勢(shì)最大的方面。30%做信號(hào)處理。其實(shí)很多情況做信號(hào)處理也是由于一個(gè)系統(tǒng)中已經(jīng)需要一個(gè)做接口的FPGA,不想多花錢、費(fèi)事在買個(gè)DSP而已!

  以上各個(gè)芯片各有啥優(yōu)勢(shì)請(qǐng)自己百度。

  后記

  聽到有人批評(píng),其實(shí)我還是蠻高興的。有人說我水平是一個(gè)較高的菜鳥。確實(shí)嚴(yán)格來(lái)講沒有錯(cuò)。仿真一直是我忽略的一個(gè)環(huán)節(jié)。我在這里承認(rèn)自己說仿真不重要是不對(duì)的。仿真一般可以提高一個(gè)優(yōu)秀的FPGA工程師的工作效率,一些低級(jí)的錯(cuò)誤可以一下子反應(yīng)出來(lái)。特別是不熟悉FPGA語(yǔ)法的人需要仿真。畢竟一個(gè)較大的FPGA程序需要編譯幾個(gè)小時(shí)。但是請(qǐng)大家合理的看待仿真這件事,菜鳥又要學(xué)編程又要學(xué)仿真。關(guān)鍵仿真正確后實(shí)際還不一定對(duì)!這樣會(huì)打擊信心。

  在有條件的基礎(chǔ)上可以直接抓取信號(hào)看看波形,這樣比較準(zhǔn)確。一下子可以讓你縮短做一個(gè)簡(jiǎn)單工程的周期。菜鳥級(jí)別的工程一般直接寫出來(lái)也不怎么會(huì)錯(cuò)的。所以在上面我說了仿真對(duì)于菜鳥不是很重要。各自還是看每個(gè)人處在的階段看問題吧!

  一般從時(shí)間上來(lái)說一般1-2年能入門,就是我說的菜鳥水平?jīng)]有達(dá)到老鳥級(jí)別。3-5年算是一個(gè)老鳥級(jí)別吧!能不能到高手看個(gè)人造化。我學(xué)習(xí)FPGA目前是兩年左右,做過工程量大的項(xiàng)目2個(gè),小項(xiàng)目記不清了,級(jí)別在菜鳥和老鳥之間。熟悉FPGA各個(gè)方面的工作,但不熟練。歡迎交流和高手們批評(píng)指正。