【導讀】FPGA已成為現今的技術(shù)熱點(diǎn)之一,無(wú)論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門(mén)。那么我們要玩轉FPGA必須具備哪些基礎知識呢?下面我們慢慢道來(lái),希望能夠為學(xué)習FPGA的人帶來(lái)幫助。
(一) 要了解什么是FPGA
既然要玩轉FPGA,那我們首先最重要的當然是要了解什么FPGA.
FPGA(Field-Program mable Gate Array),即現場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數有限的缺點(diǎn)。所以,要想玩轉FPGA,就必須理解FPGA內部的工作原理,學(xué)習如何利用這些單元實(shí)現復雜的邏輯設計。
(二) FPGA的工作原理
FPGA一般來(lái)說(shuō)比ASIC(專(zhuān)用集成芯片)的速度要慢,無(wú)法完成復雜的設計,但是功耗較低。但是 他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯誤和更便宜的造價(jià)。廠(chǎng)商也可能會(huì )提供便宜的但是編輯能力差的FPGA.因為這些芯片有比 較差的可編輯能力,所以這些設計的開(kāi)發(fā)是在普通的FPGA上完成的,然后將設計轉移到一個(gè)類(lèi)似于A(yíng)SIC的芯片上。
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(xiàn)(Interconnect)三個(gè)部分。 現場(chǎng)可編程門(mén)陣列(FPGA)是可編程器件,與傳統邏輯電路和 門(mén)陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結構。FPGA利用小型查找表(16×1RAM)來(lái)實(shí)現組合邏輯,每個(gè)查找表連接到一 個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來(lái)驅動(dòng)其他邏輯電路或驅動(dòng)I/O,由此構成了既可實(shí)現組合邏輯功能又可實(shí)現時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用 金屬連線(xiàn)互相連接或連接到I/O模塊。FPGA的邏輯是通過(guò)向內部靜態(tài)存儲單元加載編程數據來(lái)實(shí)現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現的功能,FPGA允許無(wú)限次的編程。
三) FPGA設計的基礎問(wèn)題
FPGA的基礎就是數字電路和VHDL語(yǔ) 言,想學(xué)好FPGA的人,建議床頭都有一本數字電路的書(shū),不管是哪個(gè)版本的,這個(gè)是基礎,多了解也有助于形成硬件設計的思想。在語(yǔ)言方面,建議初學(xué)者學(xué)習 Verilog語(yǔ)言,VHDL語(yǔ)言語(yǔ)法規范嚴格,調試起來(lái)很慢,Verilog語(yǔ)言容易上手,而且,一般大型企業(yè)都是用Verilog語(yǔ)言,VHDL語(yǔ)言 規范,易讀性強,所以一般軍工都用VHDL.
1、工具問(wèn)題
熟悉幾個(gè)常用的就可以的,開(kāi)發(fā)環(huán)境QuartusII ,或ISE 就可以了,這兩個(gè)基本是相通的,會(huì )了哪一個(gè),另外的那個(gè)也就很Easy了。功能仿真建議使用Modelsim ,如果你是做芯片的,就可以學(xué)學(xué)別的仿真工具,做FPGA的,Modelsim就足夠了。綜合工具一般用Synplify,初學(xué)先不用太關(guān)心這個(gè),用 Quartus綜合就OK了。
2、思想問(wèn)題
對于初學(xué)者,特別是從軟件轉過(guò)來(lái)的,設計的程序既費資源又速度慢,而且很有可能綜合不了,這就要求我們熟悉一些固定模塊的寫(xiě)法,可綜合的模塊很多書(shū)上都有,語(yǔ)言介紹上都有,不要想當然的用軟件的思想去寫(xiě)硬件。
3、習慣問(wèn)題
FPGA學(xué)習要多練習,多仿真,signaltapII是很好的工具,可以看到每個(gè)信號的真實(shí)值, 建議初學(xué)者一定要自己多動(dòng)手,光看書(shū)是沒(méi)用的。關(guān)于英文文檔問(wèn)題,如果要學(xué)會(huì )Quartus II的所有功能,只要看它的handbook就可以了,很詳細,對于IT行業(yè)的人,大部分知識來(lái)源都是英文文檔,一定要耐心看,會(huì )從中收獲很多的。
4、算法問(wèn)題
做FPGA的工程師,最后一般都是專(zhuān)攻算法了,這些基礎知識都是順手捏來(lái)的,如果你沒(méi)有做好搞理論 的準備,學(xué)FPGA始終只能停留在初級階段上。對于初學(xué)者,數字信號處理是基礎,應該好好理解,往更深的方向,不用什么都學(xué),根據你以后從事的方向,比如 說(shuō)通信、圖像處理,雷達、聲納、導航定位等。

(四) FPGA的配置模式
FPGA有多種配置模式:并行主模式為一片FPGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片FPGA;串行模式可以采用串行PROM編程FPGA;外設模式可以將FPGA作為微處理器的外設,由微處理器對其編程。
如何實(shí)現快速的時(shí)序收斂、降低功耗和成本、優(yōu)化時(shí)鐘管理并降低FPGA與PCB并行設計的復雜性等問(wèn)題,一直是采用FPGA的系統設計工程師需要考慮的關(guān)鍵問(wèn)題。如今,隨著(zhù)FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向發(fā)展,系統設計工 程師在從這些優(yōu)異性能獲益的同時(shí),不得不面對由于FPGA前所未有的性能和能力水平而帶來(lái)的新的設計挑戰。
(五) FPGA設計的三大法則
第一 面積與速度的互換
這里的面積指的是FPGA的芯片資源,包括邏輯資源和I/O資源等;這里的速度指的是FPGA工作 的最高頻率(和DSP或者ARM不同,FPGA設計的工 作頻率是不固定的,而是和設計本身的延遲緊密相連)。 在實(shí)際設計中,使用最小的面積設計出最高的速度是每一個(gè)開(kāi)發(fā)者追求的目標,但是“魚(yú)和熊掌不可兼得”,取舍之間展示了一個(gè)開(kāi)發(fā)者的智慧。
1.速度換面積
速度優(yōu)勢可以換取面積的節約。面積越小,就意味著(zhù)可以用更低的成本來(lái)實(shí)現產(chǎn)品的功 能。速度換面積的原則在一些較復雜的算法設計中常常會(huì )用到。在這些算法設計中,流水線(xiàn)設計常常是必須用到的技術(shù)。在流水線(xiàn)的設計中,這些被重復使用但是使 用次數不同的模塊將會(huì )占用大量的FPGA資源。對FPGA的設計技術(shù)進(jìn)行改造,將被重復使用的算法模塊提煉出最小的復用單元,并利用這個(gè)最小的高速代替原 設計中被重復使用但次數不同的模塊。當然,在改造的過(guò)程中必然會(huì )增加一些其他的資源來(lái)實(shí)現這個(gè)代替的過(guò)程。但是只要速度具有優(yōu)勢,那么增加的這部分邏輯依 然能夠實(shí)現降低面積提高速度的目的。
可以看到,速度換面積的關(guān)鍵是高速基本單元的復用。
2.面積換速度
在這種方法中面積的復制可以換取速度的提高。支持的速度越高,就意味著(zhù)可以實(shí)現更高的產(chǎn)品性能。一些注重產(chǎn)品性能的應用領(lǐng)域可以采用并行處理技術(shù),實(shí)現面積換速度。
第二 硬件可實(shí)現原則
FPGA設計通常會(huì )使用HDL語(yǔ)言,比如Verilog HDL或者VHDL.當采用HDL語(yǔ)言來(lái)描述一個(gè)硬件電路功能的時(shí)候,一定要確保代碼描述的電路是硬件可實(shí)現的。
Verilog HDL語(yǔ)言的語(yǔ)法與C語(yǔ)言很相似,但是它們之間有著(zhù)本質(zhì)的區別。C語(yǔ)言是基于過(guò)程的高級語(yǔ)言,編譯后可以在CPU上運行。而Verilog HDL語(yǔ)言描述的本身就是硬件結構,編譯后是硬件電路。因此,有些語(yǔ)句在C語(yǔ)言的環(huán)境中應用是沒(méi)有問(wèn)題的,但是在HDL語(yǔ)言環(huán)境下就會(huì )導致結果不正確或者 不理想。如:
for(i=0;i<16;i++)
DoSomething();
在C語(yǔ)言中運行沒(méi)有任何問(wèn)題,但是在Verilog HDL的環(huán)境下編譯就會(huì )導致綜合后的資源嚴重浪費。
第三 同步設計原則
同步電路和異步電路是FPGA設計的兩種基本電路結構形式。
異步電路的最大缺點(diǎn)是會(huì )產(chǎn)生毛刺。同步設計的核心電路是由各種觸發(fā)器構成的。這類(lèi)電路的任何輸出都是在某個(gè)時(shí)鐘的邊沿驅動(dòng)觸發(fā)器產(chǎn)生的。所以,同步設計可以很好地避免毛刺的產(chǎn)生。
(六) FPGA設計的主要應用
1、電路設計
連接邏輯,控制邏輯是FPGA早期發(fā)揮作用比較大的領(lǐng)域也是FPGA應用的基石。事實(shí)上在電路設計 中應用FPGA的難度還是比較大的這要求開(kāi)發(fā)者要具備相應的硬件知識(電路知識)和軟件應用能力(開(kāi)發(fā)工具)這方面的人才總是緊缺的,往往都從事新技術(shù), 新產(chǎn)品的開(kāi)發(fā)成功的產(chǎn)品將變成市場(chǎng)主流基礎產(chǎn)品供產(chǎn)品設計者應用在不遠的將來(lái),通用和專(zhuān)用IP的設計將成為一個(gè)熱門(mén)行業(yè)!搞電路設計的前提是必須要具備一 定的硬件知識。在這個(gè)層面,干重于學(xué),當然,快速入門(mén)是很重要的,越好的位子越不等人電路開(kāi)發(fā)是黃金飯碗。
2、產(chǎn)品設計
把相對成熟的技術(shù)應用到某些特定領(lǐng)域如通訊,視頻,信息處理等等開(kāi)發(fā)出滿(mǎn)足行業(yè)需要并能被行業(yè)客戶(hù) 接受的產(chǎn)品這方面主要是FPGA技術(shù)和專(zhuān)業(yè)技術(shù)的結合問(wèn)題,另外還有就是與專(zhuān)業(yè)客戶(hù)的界面問(wèn)題產(chǎn)品設計還包括專(zhuān)業(yè)工具類(lèi)產(chǎn)品及民用產(chǎn)品,前者重點(diǎn)在性能, 后者對價(jià)格敏感產(chǎn)品設計以實(shí)現產(chǎn)品功能為主要目的,FPGA技術(shù)是一個(gè)實(shí)現手段在這個(gè)領(lǐng)域,FPGA因為具備接口,控制,功能IP,內嵌CPU等特點(diǎn)有條 件實(shí)現一個(gè)構造簡(jiǎn)單,固化程度高,功能全面的系統產(chǎn)品設計將是FPGA技術(shù)應用最廣大的市場(chǎng),具有極大的爆發(fā)性的需求空間產(chǎn)品設計對技術(shù)人員的要求比較 高,路途也比較漫長(cháng)不過(guò)現在整個(gè)行業(yè)正處在組建“首發(fā)團隊”的狀態(tài),只要加入,前途光明產(chǎn)品設計是一種職業(yè)發(fā)展方向定位,不是簡(jiǎn)單的愛(ài)好就能做到的!產(chǎn)品 設計領(lǐng)域會(huì )造就大量的企業(yè)和企業(yè)家,是一個(gè)發(fā)展熱點(diǎn)和機遇。
3、系統級
系統級的應用是FPGA與傳統的計算機技術(shù)結合,實(shí)現一種FPGA版的計算機系統,實(shí)現一個(gè)基本環(huán)境,在這個(gè)平臺上跑LINUX等系統,這個(gè)系統也就支持各種標準外設和功能接口(如圖象接口)了這對于快速構成FPGA大型系統來(lái)講是很有幫助的。這種“山寨”味很濃的系統早期優(yōu)勢不一定很明顯,類(lèi)似ARM系統的境況但若能慢慢發(fā)揮出FPGA的優(yōu)勢,逐漸實(shí)現一些特色系統也是一種發(fā)展方向。若在系統級應用中,開(kāi)發(fā)人員不具備系統的擴充開(kāi)發(fā)能力,只是搞搞編程是沒(méi)什么意義的,當然設備驅動(dòng)程序的開(kāi)發(fā)是另一種情況,搞系統級應用看似起點(diǎn)高,但不具備深層開(kāi)發(fā)能力,很可能會(huì )變成愛(ài)好者,就如很多人會(huì )做網(wǎng)頁(yè)但不能稱(chēng)做會(huì )編程。類(lèi)似以上是幾點(diǎn)個(gè)人觀(guān)點(diǎn),希望能幫助想學(xué)FPGA但很茫然無(wú)措的人理一理思路。這是一個(gè)不錯的行業(yè),有很好的個(gè)人成功機會(huì )。但也肯定是一個(gè)競爭很激烈的行業(yè),關(guān)鍵看的就是速度和深度當然還有市場(chǎng)適應能力。
以上,我們了解到了FPGA基礎知識,雖然FPGA入門(mén)簡(jiǎn)單精通難,但是若要想入門(mén),買(mǎi)一塊開(kāi)發(fā)板跟著(zhù)例程走一遍,很多人都能在很短的時(shí)間內熟悉開(kāi)發(fā)軟件的操作方法并且點(diǎn)亮開(kāi)發(fā)板上的LED或者再實(shí)現個(gè)跑馬燈什么的。但是再往后進(jìn)步往往就進(jìn)展很慢。上面提到的六方面是FPGA入門(mén)的基礎知識,希望能夠為學(xué)習FPGA的人帶來(lái)幫助。
推薦閱讀: