小白入門FPGA必備基礎(chǔ)知識(shí)
發(fā)布時(shí)間:2017-01-17 責(zé)任編輯:wenwei
【導(dǎo)讀】FPGA已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門。那么我們要玩轉(zhuǎn)FPGA必須具備哪些基礎(chǔ)知識(shí)呢?下面我們慢慢道來,希望能夠?yàn)閷W(xué)習(xí)FPGA的人帶來幫助。
(一) 要了解什么是FPGA
既然要玩轉(zhuǎn)FPGA,那我們首先最重要的當(dāng)然是要了解什么FPGA.
FPGA(Field-Program mable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。所以,要想玩轉(zhuǎn)FPGA,就必須理解FPGA內(nèi)部的工作原理,學(xué)習(xí)如何利用這些單元實(shí)現(xiàn)復(fù)雜的邏輯設(shè)計(jì)。
(二) FPGA的工作原理
FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計(jì),但是功耗較低。但是 他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也可能會(huì)提供便宜的但是編輯能力差的FPGA.因?yàn)檫@些芯片有比 較差的可編輯能力,所以這些設(shè)計(jì)的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類似于ASIC的芯片上。
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。 現(xiàn)場可編程門陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和 門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一 個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用 金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無限次的編程。
三) FPGA設(shè)計(jì)的基礎(chǔ)問題
FPGA的基礎(chǔ)就是數(shù)字電路和VHDL語 言,想學(xué)好FPGA的人,建議床頭都有一本數(shù)字電路的書,不管是哪個(gè)版本的,這個(gè)是基礎(chǔ),多了解也有助于形成硬件設(shè)計(jì)的思想。在語言方面,建議初學(xué)者學(xué)習(xí) Verilog語言,VHDL語言語法規(guī)范嚴(yán)格,調(diào)試起來很慢,Verilog語言容易上手,而且,一般大型企業(yè)都是用Verilog語言,VHDL語言 規(guī)范,易讀性強(qiáng),所以一般軍工都用VHDL.
1、工具問題
熟悉幾個(gè)常用的就可以的,開發(fā)環(huán)境QuartusII ,或ISE 就可以了,這兩個(gè)基本是相通的,會(huì)了哪一個(gè),另外的那個(gè)也就很Easy了。功能仿真建議使用Modelsim ,如果你是做芯片的,就可以學(xué)學(xué)別的仿真工具,做FPGA的,Modelsim就足夠了。綜合工具一般用Synplify,初學(xué)先不用太關(guān)心這個(gè),用 Quartus綜合就OK了。
2、思想問題
對(duì)于初學(xué)者,特別是從軟件轉(zhuǎn)過來的,設(shè)計(jì)的程序既費(fèi)資源又速度慢,而且很有可能綜合不了,這就要求我們熟悉一些固定模塊的寫法,可綜合的模塊很多書上都有,語言介紹上都有,不要想當(dāng)然的用軟件的思想去寫硬件。
3、習(xí)慣問題
FPGA學(xué)習(xí)要多練習(xí),多仿真,signaltapII是很好的工具,可以看到每個(gè)信號(hào)的真實(shí)值, 建議初學(xué)者一定要自己多動(dòng)手,光看書是沒用的。關(guān)于英文文檔問題,如果要學(xué)會(huì)Quartus II的所有功能,只要看它的handbook就可以了,很詳細(xì),對(duì)于IT行業(yè)的人,大部分知識(shí)來源都是英文文檔,一定要耐心看,會(huì)從中收獲很多的。
4、算法問題
做FPGA的工程師,最后一般都是專攻算法了,這些基礎(chǔ)知識(shí)都是順手捏來的,如果你沒有做好搞理論 的準(zhǔn)備,學(xué)FPGA始終只能停留在初級(jí)階段上。對(duì)于初學(xué)者,數(shù)字信號(hào)處理是基礎(chǔ),應(yīng)該好好理解,往更深的方向,不用什么都學(xué),根據(jù)你以后從事的方向,比如 說通信、圖像處理,雷達(dá)、聲納、導(dǎo)航定位等。
(四) FPGA的配置模式
FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程。
如何實(shí)現(xiàn)快速的時(shí)序收斂、降低功耗和成本、優(yōu)化時(shí)鐘管理并降低FPGA與PCB并行設(shè)計(jì)的復(fù)雜性等問題,一直是采用FPGA的系統(tǒng)設(shè)計(jì)工程師需要考慮的關(guān)鍵問題。如今,隨著FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向發(fā)展,系統(tǒng)設(shè)計(jì)工 程師在從這些優(yōu)異性能獲益的同時(shí),不得不面對(duì)由于FPGA前所未有的性能和能力水平而帶來的新的設(shè)計(jì)挑戰(zhàn)。
(五) FPGA設(shè)計(jì)的三大法則
第一 面積與速度的互換
這里的面積指的是FPGA的芯片資源,包括邏輯資源和I/O資源等;這里的速度指的是FPGA工作 的最高頻率(和DSP或者ARM不同,F(xiàn)PGA設(shè)計(jì)的工 作頻率是不固定的,而是和設(shè)計(jì)本身的延遲緊密相連)。 在實(shí)際設(shè)計(jì)中,使用最小的面積設(shè)計(jì)出最高的速度是每一個(gè)開發(fā)者追求的目標(biāo),但是“魚和熊掌不可兼得”,取舍之間展示了一個(gè)開發(fā)者的智慧。
1.速度換面積
速度優(yōu)勢可以換取面積的節(jié)約。面積越小,就意味著可以用更低的成本來實(shí)現(xiàn)產(chǎn)品的功 能。速度換面積的原則在一些較復(fù)雜的算法設(shè)計(jì)中常常會(huì)用到。在這些算法設(shè)計(jì)中,流水線設(shè)計(jì)常常是必須用到的技術(shù)。在流水線的設(shè)計(jì)中,這些被重復(fù)使用但是使 用次數(shù)不同的模塊將會(huì)占用大量的FPGA資源。對(duì)FPGA的設(shè)計(jì)技術(shù)進(jìn)行改造,將被重復(fù)使用的算法模塊提煉出最小的復(fù)用單元,并利用這個(gè)最小的高速代替原 設(shè)計(jì)中被重復(fù)使用但次數(shù)不同的模塊。當(dāng)然,在改造的過程中必然會(huì)增加一些其他的資源來實(shí)現(xiàn)這個(gè)代替的過程。但是只要速度具有優(yōu)勢,那么增加的這部分邏輯依 然能夠?qū)崿F(xiàn)降低面積提高速度的目的。
可以看到,速度換面積的關(guān)鍵是高速基本單元的復(fù)用。
2.面積換速度
在這種方法中面積的復(fù)制可以換取速度的提高。支持的速度越高,就意味著可以實(shí)現(xiàn)更高的產(chǎn)品性能。一些注重產(chǎn)品性能的應(yīng)用領(lǐng)域可以采用并行處理技術(shù),實(shí)現(xiàn)面積換速度。
第二 硬件可實(shí)現(xiàn)原則
FPGA設(shè)計(jì)通常會(huì)使用HDL語言,比如Verilog HDL或者VHDL.當(dāng)采用HDL語言來描述一個(gè)硬件電路功能的時(shí)候,一定要確保代碼描述的電路是硬件可實(shí)現(xiàn)的。
Verilog HDL語言的語法與C語言很相似,但是它們之間有著本質(zhì)的區(qū)別。C語言是基于過程的高級(jí)語言,編譯后可以在CPU上運(yùn)行。而Verilog HDL語言描述的本身就是硬件結(jié)構(gòu),編譯后是硬件電路。因此,有些語句在C語言的環(huán)境中應(yīng)用是沒有問題的,但是在HDL語言環(huán)境下就會(huì)導(dǎo)致結(jié)果不正確或者 不理想。如:
for(i=0;i<16;i++)
DoSomething();
在C語言中運(yùn)行沒有任何問題,但是在Verilog HDL的環(huán)境下編譯就會(huì)導(dǎo)致綜合后的資源嚴(yán)重浪費(fèi)。
第三 同步設(shè)計(jì)原則
同步電路和異步電路是FPGA設(shè)計(jì)的兩種基本電路結(jié)構(gòu)形式。
異步電路的最大缺點(diǎn)是會(huì)產(chǎn)生毛刺。同步設(shè)計(jì)的核心電路是由各種觸發(fā)器構(gòu)成的。這類電路的任何輸出都是在某個(gè)時(shí)鐘的邊沿驅(qū)動(dòng)觸發(fā)器產(chǎn)生的。所以,同步設(shè)計(jì)可以很好地避免毛刺的產(chǎn)生。
(六) FPGA設(shè)計(jì)的主要應(yīng)用
1、電路設(shè)計(jì)
連接邏輯,控制邏輯是FPGA早期發(fā)揮作用比較大的領(lǐng)域也是FPGA應(yīng)用的基石。事實(shí)上在電路設(shè)計(jì) 中應(yīng)用FPGA的難度還是比較大的這要求開發(fā)者要具備相應(yīng)的硬件知識(shí)(電路知識(shí))和軟件應(yīng)用能力(開發(fā)工具)這方面的人才總是緊缺的,往往都從事新技術(shù), 新產(chǎn)品的開發(fā)成功的產(chǎn)品將變成市場主流基礎(chǔ)產(chǎn)品供產(chǎn)品設(shè)計(jì)者應(yīng)用在不遠(yuǎn)的將來,通用和專用IP的設(shè)計(jì)將成為一個(gè)熱門行業(yè)!搞電路設(shè)計(jì)的前提是必須要具備一 定的硬件知識(shí)。在這個(gè)層面,干重于學(xué),當(dāng)然,快速入門是很重要的,越好的位子越不等人電路開發(fā)是黃金飯碗。
2、產(chǎn)品設(shè)計(jì)
把相對(duì)成熟的技術(shù)應(yīng)用到某些特定領(lǐng)域如通訊,視頻,信息處理等等開發(fā)出滿足行業(yè)需要并能被行業(yè)客戶 接受的產(chǎn)品這方面主要是FPGA技術(shù)和專業(yè)技術(shù)的結(jié)合問題,另外還有就是與專業(yè)客戶的界面問題產(chǎn)品設(shè)計(jì)還包括專業(yè)工具類產(chǎn)品及民用產(chǎn)品,前者重點(diǎn)在性能, 后者對(duì)價(jià)格敏感產(chǎn)品設(shè)計(jì)以實(shí)現(xiàn)產(chǎn)品功能為主要目的,F(xiàn)PGA技術(shù)是一個(gè)實(shí)現(xiàn)手段在這個(gè)領(lǐng)域,F(xiàn)PGA因?yàn)榫邆浣涌?,控制,功能IP,內(nèi)嵌CPU等特點(diǎn)有條 件實(shí)現(xiàn)一個(gè)構(gòu)造簡單,固化程度高,功能全面的系統(tǒng)產(chǎn)品設(shè)計(jì)將是FPGA技術(shù)應(yīng)用最廣大的市場,具有極大的爆發(fā)性的需求空間產(chǎn)品設(shè)計(jì)對(duì)技術(shù)人員的要求比較 高,路途也比較漫長不過現(xiàn)在整個(gè)行業(yè)正處在組建“首發(fā)團(tuán)隊(duì)”的狀態(tài),只要加入,前途光明產(chǎn)品設(shè)計(jì)是一種職業(yè)發(fā)展方向定位,不是簡單的愛好就能做到的!產(chǎn)品 設(shè)計(jì)領(lǐng)域會(huì)造就大量的企業(yè)和企業(yè)家,是一個(gè)發(fā)展熱點(diǎn)和機(jī)遇。
3、系統(tǒng)級(jí)
系統(tǒng)級(jí)的應(yīng)用是FPGA與傳統(tǒng)的計(jì)算機(jī)技術(shù)結(jié)合,實(shí)現(xiàn)一種FPGA版的計(jì)算機(jī)系統(tǒng),實(shí)現(xiàn)一個(gè)基本環(huán)境,在這個(gè)平臺(tái)上跑LINUX等系統(tǒng),這個(gè)系統(tǒng)也就支持各種標(biāo)準(zhǔn)外設(shè)和功能接口(如圖象接口)了這對(duì)于快速構(gòu)成FPGA大型系統(tǒng)來講是很有幫助的。這種“山寨”味很濃的系統(tǒng)早期優(yōu)勢不一定很明顯,類似ARM系統(tǒng)的境況但若能慢慢發(fā)揮出FPGA的優(yōu)勢,逐漸實(shí)現(xiàn)一些特色系統(tǒng)也是一種發(fā)展方向。若在系統(tǒng)級(jí)應(yīng)用中,開發(fā)人員不具備系統(tǒng)的擴(kuò)充開發(fā)能力,只是搞搞編程是沒什么意義的,當(dāng)然設(shè)備驅(qū)動(dòng)程序的開發(fā)是另一種情況,搞系統(tǒng)級(jí)應(yīng)用看似起點(diǎn)高,但不具備深層開發(fā)能力,很可能會(huì)變成愛好者,就如很多人會(huì)做網(wǎng)頁但不能稱做會(huì)編程。類似以上是幾點(diǎn)個(gè)人觀點(diǎn),希望能幫助想學(xué)FPGA但很茫然無措的人理一理思路。這是一個(gè)不錯(cuò)的行業(yè),有很好的個(gè)人成功機(jī)會(huì)。但也肯定是一個(gè)競爭很激烈的行業(yè),關(guān)鍵看的就是速度和深度當(dāng)然還有市場適應(yīng)能力。
以上,我們了解到了FPGA基礎(chǔ)知識(shí),雖然FPGA入門簡單精通難,但是若要想入門,買一塊開發(fā)板跟著例程走一遍,很多人都能在很短的時(shí)間內(nèi)熟悉開發(fā)軟件的操作方法并且點(diǎn)亮開發(fā)板上的LED或者再實(shí)現(xiàn)個(gè)跑馬燈什么的。但是再往后進(jìn)步往往就進(jìn)展很慢。上面提到的六方面是FPGA入門的基礎(chǔ)知識(shí),希望能夠?yàn)閷W(xué)習(xí)FPGA的人帶來幫助。
推薦閱讀:
特別推薦
- 協(xié)同創(chuàng)新,助汽車行業(yè)邁向電氣化、自動(dòng)化和互聯(lián)化的未來
- 功率器件熱設(shè)計(jì)基礎(chǔ)(八)——利用瞬態(tài)熱阻計(jì)算二極管浪涌電流
- 用于模擬傳感器的回路供電(兩線)發(fā)射器
- 應(yīng)用于體外除顫器中的電容器
- 將“微型FPGA”集成到8位MCU,是種什么樣的體驗(yàn)?
- 能源、清潔科技和可持續(xù)發(fā)展的未來
- 博瑞集信推出高增益、內(nèi)匹配、單電源供電 | S、C波段驅(qū)動(dòng)放大器系列
技術(shù)文章更多>>
- 使用手持頻譜儀搭配高級(jí)軟件:精準(zhǔn)捕獲隱匿射頻信號(hào)
- 為什么超大規(guī)模數(shù)據(jù)中心要選用SiC MOSFET?
- 機(jī)電繼電器的特性及其在信號(hào)切換中的選型和應(yīng)用
- 雙向電源設(shè)計(jì)的優(yōu)點(diǎn)
- 利用兩個(gè)元件實(shí)現(xiàn) L 型網(wǎng)絡(luò)阻抗匹配
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
分頻器
風(fēng)力渦輪機(jī)
風(fēng)能
風(fēng)扇
風(fēng)速風(fēng)向儀
風(fēng)揚(yáng)高科
輔助駕駛系統(tǒng)
輔助設(shè)備
負(fù)荷開關(guān)
復(fù)用器
伽利略定位
干電池
干簧繼電器
感應(yīng)開關(guān)
高頻電感
高通
高通濾波器
隔離變壓器
隔離開關(guān)
個(gè)人保健
工業(yè)電子
工業(yè)控制
工業(yè)連接器
工字型電感
功率表
功率電感
功率電阻
功率放大器
功率管
功率繼電器