FPGA研發(fā)之道(1)FPGA是個什么玩意?
FPGA是個什么玩意?
本文引用地址:http://www.ex-cimer.com/article/263945.htm首先來說:
FPGA是一種器件。其英文名 feild programable gate arry 。很長,但不通俗。通俗來說,是一種功能強大似乎無所不能的器件。通常用于通信、網(wǎng)絡、圖像處理、工業(yè)控制等不同領域的器件。就像ARM、DSP等嵌入式器件一樣,成為無數(shù)碼農(nóng)碼工們情感傾瀉而出的代碼真正獲得生命的地方。只不過,一樣的編程,卻是不一樣的思想。嵌入式軟件人員看到的是C。而FPGA工程師看到是硬件描述語言,verilog或VHDL。軟件看到是函數(shù)、對象、重構。FPGA工程師則是模塊、流水、復用。從現(xiàn)象上看,都是代碼到下載程序再到硬件上運行。不能只看現(xiàn)象而忽略本質(zhì)。FPGA 開發(fā)本質(zhì)上是設計一顆IC,“**的身子,丫鬟的命”不是所有verilog/VHDL代碼,都能獲得青睞去流片成為真正的芯片,而更多的則成為運行在FPGA器件上,成為完成相同功能的替代品。其實現(xiàn)的功能卻一點也不遜色于百萬身價流片的近親。從而成為獨樹一幟的行業(yè)。
FPGA開發(fā)的流程,是通過verilog/VHDL等硬件描述語言通過EDA工具編譯、綜合、布局布線成為下載文件,最終加載到FPGA器件中去,完成所實現(xiàn)的功能。那硬件描述語言描述的是什么?這里描述的就是組合邏輯電路和時序邏輯電路。組合邏輯電路就是大家所熟知的 與門、或門、非門。時序邏輯電路則是觸發(fā)器。數(shù)字芯片上絕大部分邏輯都是這兩種邏輯實現(xiàn)的。也就是基本上每個電子行業(yè)的人所學過的數(shù)字電路。順便說一下,感謝香農(nóng)大師,在其碩士畢業(yè)論文<繼電器與開關電路的符號分析>就奠定了數(shù)字電路的的根基。只不過在FPGA中,與或非的操作變成了查找表的操作。于是所有的數(shù)字電路變成了查找表和寄存器,這就構成了FPGA的基礎。查找表負責邏輯實現(xiàn),寄存器存儲電路狀態(tài)。二者配合,雙劍合璧,天衣無縫。這是最初的FPGA的雛形。 現(xiàn)代FPGA內(nèi)部出了查找表和寄存器之外,還有RAM塊,用于存儲大量的數(shù)據(jù)塊,這是因為RAM塊較寄存器來存儲大量數(shù)據(jù)更能節(jié)省芯片實現(xiàn)的面積。FPGA內(nèi)部的時序電路則需要時鐘的輸入,通常FPGA內(nèi)部需要時鐘種類較多,因此需要在片內(nèi)產(chǎn)生所需的的相關的時鐘,如不同頻率,不同相位的時鐘,因此時鐘管理單元DCM/PLL也是必不可少的內(nèi)部部件。除此之外,F(xiàn)PGA內(nèi)部還包括接口I/O,I/O分為普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用于實現(xiàn)XAUI,PCIE等高速接口,這些接口動輒幾Gbps到10Gbps以上。此外種類多種多樣的硬核IP也是各FPGA廠商差異化競爭利器,例如POWERPC、ARM等硬核IP。從而構成CPU+FPGA于一體的集可編程性和可重構的處理平臺。因此,相對來所,F(xiàn)PGA雖然發(fā)展有二三十年的歷史,其基本架構一直不變不大。
回到問題開始的地方,F(xiàn)PGA的英文翻譯過來是現(xiàn)場可編程門陣列。這是相對ASIC來說的,ASIC的硬件也可看做是門陣列,但是其是非可編程的器件。流片完成其功能就固化了,而FPGA的可編程性就在其能夠重新下載配置文件,來改變其內(nèi)在的功能,這就是其可編程性的由來。從前端開發(fā)流程來說,F(xiàn)PGA和ASIC開發(fā)并無二至。由于ASIC開發(fā)一次性投入成本較高,F(xiàn)PGA無疑是一種經(jīng)濟的替代方案,用于實現(xiàn)的高速的數(shù)據(jù)并行處理。如業(yè)務能夠支撐大規(guī)模應用并且協(xié)議固化,則能夠分攤成本的ASIC實現(xiàn)就有成本的優(yōu)勢。
FPGA作為一種器件,技術上主要壟斷在少數(shù)大公司手中,那就是雙巨頭ALTERA和XILINX。除此之外還有一些份額相對較小的公司,例如ACTEL和LATTICE。不止是FPGA的硬件芯片,其配套的EDA工具技術壁壘更高。因此相對于CPU來說,F(xiàn)PGA的國產(chǎn)化更不樂觀,不過已經(jīng)有國內(nèi)的廠商來從事這一行業(yè),例如國微和京微雅格等,也在一些細分市場上推出自己的FPGA產(chǎn)品。
fpga相關文章:fpga是什么
評論