《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > FPGA學(xué)習(xí)步驟

FPGA學(xué)習(xí)步驟

2015-10-15
關(guān)鍵詞: FPGA 學(xué)習(xí)步驟

  FPGA在目前應(yīng)用領(lǐng)域非常,,在目前的單板設(shè)計(jì)里面,幾乎都可以看到它的身影,。從簡單的邏輯組合,,到高端的圖像,、通信協(xié)議處理,從單片邏輯到復(fù)雜的ASIC原型驗(yàn)證,,從小家電到航天器,,都可以看到FPGA應(yīng)用,它的優(yōu)點(diǎn)在這里無庸贅述,。從個人實(shí)用角度看,,對于學(xué)生,,掌握FPGA可以找到一份很好的工作,,對于有經(jīng)驗(yàn)的工作人員,使用fgpa可以讓設(shè)計(jì)變得非常有靈活性,。掌握了fpga的設(shè)計(jì),,單板硬件設(shè)計(jì)就非常容易(不是系統(tǒng)設(shè)計(jì)),特別是上大學(xué)時如同天書的邏輯時序圖,,看起來就非常親切,。但fpga的入門卻有一定難度,因?yàn)樗幌褴浖O(shè)計(jì),,只要有一臺計(jì)算機(jī),,幾乎就可以完成所有的設(shè)計(jì)。fpga的設(shè)計(jì)與硬件直接相關(guān),,需要實(shí)實(shí)在在的調(diào)試儀器,,譬如示波器等。這些硬件設(shè)備一般比較昂貴,,這就造成一定的入門門檻,,新人在入門時遇到一點(diǎn)問題或者困難,由于沒有調(diào)試設(shè)備,,無法定位問題,,最后可能就會放棄,。其實(shí)這時如果有人稍微指點(diǎn)一下,這個門檻很容易就過去,。
  我用FPGA做設(shè)計(jì)很多年了,,遠(yuǎn)達(dá)不到精通的境界,只是熟悉使用,,在這里把我對fpga的學(xué)習(xí)步驟理解寫出來,,僅是作為一個參考,不對的地方,,歡迎大家討論和指正,。
  1、工欲善其事,,必先利其器,。
  計(jì)算機(jī)必不可少。目前FPGA應(yīng)用較多的是Altera和xilinx這兩個公司,,可以選擇安裝quartusII或者ISE軟件,。這是必備的軟件環(huán)境。
  硬件環(huán)境還需要下載器,、目標(biāo)板,。雖然有人說沒有下載器和目標(biāo)板也可學(xué)習(xí)fpga,但那總是紙上談兵,。這就像談女朋友,, 總是嘴上說說,通個電話,,連個手都沒牽,,能說人家是你朋友?雖說搭建硬件環(huán)境需要花費(fèi),,但想想,,硬件環(huán)境至多幾百元錢, 你要真的掌握FPGA的設(shè)計(jì),,起薪比別人都不止高出這么多,。這點(diǎn)花費(fèi)算什么?
  2,、熟悉verilog語言或者vhdl語言 ,,熟練使用quartusII或者ISE軟件。
  VHDL和verilog各有優(yōu)點(diǎn),,選擇一個,,建議選擇verilog。熟練使用設(shè)計(jì)軟件,,知道怎樣編譯,、仿真,、下載等過程。
  起步階段不希望報(bào)一些培訓(xùn)班,,除非你有錢,,或者運(yùn)氣好,碰到一個水平高,、又想把自己的經(jīng)驗(yàn)和別人共享的培訓(xùn)老師,, 不然的話,培訓(xùn)完后總會感覺自己是一個冤大頭,。入門階段可以在利用網(wǎng)絡(luò)資源完成,。
  3、設(shè)計(jì)一個小代碼,,下載到目標(biāo)板看看結(jié)果
  此時可以設(shè)計(jì)一個最簡答的程序,,譬如點(diǎn)燈。如果燈在閃爍了,,表示基本入門了,。如果此時能夠下載到fpga外掛的flash,fpga程序能夠從flash啟動,表明fpga的最簡單設(shè)計(jì)你已經(jīng)成功,,可以到下一步,。
  4、設(shè)計(jì)稍微復(fù)雜的代碼,,下載到目標(biāo)板看看結(jié)果,。
  可以設(shè)計(jì)一個UART程序,網(wǎng)上有參考,,你要懂RS232協(xié)議和fpga內(nèi)置的邏輯分析儀,。網(wǎng)上下載一個串口調(diào)試助手,調(diào)試一番,,如果通信成功了,   恭喜,,水平有提高,。進(jìn)入下一步。
  5,、設(shè)計(jì)復(fù)雜的代碼,,下載到目標(biāo)板看看結(jié)果。
  譬如sdram的程序,,網(wǎng)上也有參考,,這個設(shè)計(jì)難度有點(diǎn)大??捎么趤碚{(diào)試sdram,,把串口的數(shù)據(jù)存儲到sdram,,然后讀回,如果成功,,那你就比較熟悉fpga的設(shè)計(jì)餓了
  6,、設(shè)計(jì)高速接口,譬如ddr2或者高速串行接口
  這要對fpga的物理特性非常了解,,而且要懂得是時序約束等設(shè)計(jì)方法,,要看大量的原廠文檔,這部分成功了,,那就對fpga的物理接口掌握很深,,你就是設(shè)計(jì)高手了
  7、設(shè)計(jì)一個復(fù)雜的協(xié)議
  譬如USB,、PCIexpress,、圖像編解碼等,鍛煉對系統(tǒng)的整體把握和邏輯劃分,。完成這些,,你就是一個一流的高手、
  8,、學(xué)習(xí)再學(xué)習(xí)
  學(xué)習(xí)什么,,我也不知道,我只知道“學(xué)無止境,,山外有山”,。
  最近也面試了很多FPGA工程師,沒找到合適,,我覺得很多人從開始的時候就誤入歧途了,,對新手學(xué)習(xí)FPGA設(shè)計(jì)我也說一點(diǎn)看法吧。我認(rèn)為要從基礎(chǔ)開始做,,基礎(chǔ)牢,,才有成為高手的可能。
  我覺得有以下幾步必須要走:
  第一步:學(xué)習(xí)了解FPGA結(jié)構(gòu),,F(xiàn)PGA到底是什么東西,,芯片里面有什么,不要開始就拿個開發(fā)板照著別人的東西去編程,。很多開發(fā)板的程序?qū)懙暮軤€,,我也做過一段時間的開發(fā)板設(shè)計(jì),我覺得很大程度上,,開發(fā)板在誤人子弟,。不過原廠提供的正品開發(fā)板,代碼很優(yōu)秀的,,可以借鑒,。只有了解了FPGA內(nèi)部的結(jié)構(gòu)才能明白為什么寫Verilog和寫C整體思路是不一樣的,。
  第二步:掌握FPGA設(shè)計(jì)的流程。了解每一步在做什么,,為什么要那么做,。很多人都是不就是那幾步嗎,有什么奇怪的,?呵呵,,我想至少有一半以上的人不知道synthesize和traslate的區(qū)別吧。
  了解了FPGA的結(jié)構(gòu)和設(shè)計(jì)流程才有可能知道怎么去優(yōu)化設(shè)計(jì),,提高速度,,減少資源,不要急躁,,不要去在為選擇什么語言和選擇哪個公司的芯片上下功夫,。語言只是一個表達(dá)的方式,重要的是你的思維,,沒有一個好的指導(dǎo)思想,,語言用得再好,不過是個懂語言的人,。
  第三步:開始學(xué)習(xí)代碼了,。我建議要學(xué)代碼的人都去Altera或Xilinx的網(wǎng)站上下原廠工程師的代碼學(xué)習(xí)。不要一開始就走入誤區(qū),。
  第四步:template很重要,。能不能高效利用fpga資源,一是了解fpga結(jié)構(gòu),,二是了解欲實(shí)現(xiàn)的邏輯功能和基本機(jī)構(gòu),,三是使用正確的模板。FPGA內(nèi)部器件種類相對較單一,,用好模板,,你的邏輯才能被高效的綜合成FPGA擅長表達(dá)的結(jié)構(gòu):)
  做fpga主要是要有電路的思想,作為初學(xué)者,,往往對器件可能不是熟悉,,那么應(yīng)該對于數(shù)字電路的知識很熟悉吧,fpga中是由觸發(fā)器和查找表以及互聯(lián)線等基本結(jié)構(gòu)組成的,,其實(shí)在我們在代碼里面能夠看到的就是與非門以及觸發(fā)器,不要把verilog和c語言等同起來,,根本就是不同的東西,,沒有什么可比性,在寫一句程序的時候應(yīng)該想到出來的是一個什么樣的電路,,計(jì)數(shù)器 選擇器 三態(tài)門等等,,理解時序,,邏輯是一拍一拍的東西,在設(shè)計(jì)初期想的不是很清楚的時候可以畫畫時序圖,,這樣思路會更加的清晰,,還有就是仿真很重要,不要寫完程序就去往fpga中去加載,,首先要仿真,,尤其是對比較大型一點(diǎn)的程序,想像自己是在做asic,,是沒有二次機(jī)會的,,所以一定要把仿真做好,還有很多新手對于語言的學(xué)習(xí)不知道選vhdl好還是verilog好,,個人偏好verilog,,當(dāng)然不是說vhdl不好,反正寫出來的都是電路,,那當(dāng)然就不要在語言的語法上面花太多的功夫了,,verilog 言簡意賅assign always case if else 掌握這些幾乎可以寫出90%的電路了,上面是我的一些愚見,,希望對大家有所幫助 ,,個人愚見,歡迎大家討論,。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]