FPGA研發(1)FPGA是個什麼玩意?

       

FPGA是個什麼玩意?

             首先來說:

             FPGA是一種器件。其英文名 feild programable  gate arry 。很長,但不通俗。通俗來說,是一種功能強大似乎無所不能的器件。通常用於通信、網絡、圖像處理、工業控制等不同領域的器件。就像ARM、DSP等嵌入式器件一樣,成爲無數碼農碼工們情感傾瀉而出的代碼真正獲得生命的地方。只不過,一樣的編程,卻是不一樣的思想。嵌入式軟件人員看到的是C。而FPGA工程師看到是硬件描述語言,verilog或VHDL。軟件看到是函數、對象、重構。FPGA工程師則是模塊、流水、複用。從現象上看,都是代碼到下載程序再到硬件上運行。不能只看現象而忽略本質。FPGA 開發本質上是設計一顆IC,“小姐的身子,丫鬟的命”不是所有verilog/VHDL代碼,都能獲得青睞去流片成爲真正的芯片,而更多的則成爲運行在FPGA器件上,成爲完成相同功能的替代品。其實現的功能卻一點也不遜色於百萬身價流片的近親。從而成爲獨樹一幟的行業。

           FPGA開發的流程,是通過verilog/VHDL等硬件描述語言通過EDA工具編譯、綜合、佈局佈線成爲下載文件,最終加載到FPGA器件中去,完成所實現的功能。那硬件描述語言描述的是什麼?這裏描述的就是組合邏輯電路和時序邏輯電路。組合邏輯電路就是大家所熟知的 與門、或門、非門。時序邏輯電路則是觸發器。數字芯片上絕大部分邏輯都是這兩種邏輯實現的。也就是基本上每個電子行業的人所學過的數字電路。順便說一下,感謝香農大師,在其碩士畢業論文<繼電器與開關電路的符號分析>就奠定了數字電路的的根基。只不過在FPGA中,與或非的操作變成了查找表的操作。於是所有的數字電路變成了查找表和寄存器,這就構成了FPGA的基礎。查找表負責邏輯實現,寄存器存儲電路狀態。二者配合,雙劍合璧,天衣無縫。這是最初的FPGA的雛形。 現代FPGA內部出了查找表和寄存器之外,還有RAM塊,用於存儲大量的數據塊,這是因爲RAM塊較寄存器來存儲大量數據更能節省芯片實現的面積。FPGA內部的時序電路則需要時鐘的輸入,通常FPGA內部需要時鐘種類較多,因此需要在片內產生所需的的相關的時鐘,如不同頻率,不同相位的時鐘,因此時鐘管理單元DCM/PLL也是必不可少的內部部件。除此之外,FPGA內部還包括接口I/O,I/O分爲普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用於實現XAUI,PCIE等高速接口,這些接口動輒幾Gbps到10Gbps以上。此外種類多種多樣的硬核IP也是各FPGA廠商差異化競爭利器,例如POWERPC、ARM等硬核IP。從而構成CPU+FPGA於一體的集可編程性和可重構的處理平臺。因此,相對來所,FPGA雖然發展有二三十年的歷史,其基本架構一直不變不大。      

        回到問題開始的地方,FPGA的英文翻譯過來是現場可編程門陣列。這是相對ASIC來說的,ASIC的硬件也可看做是門陣列,但是其是非可編程的器件。流片完成其功能就固化了,而FPGA的可編程性就在其能夠重新下載配置文件,來改變其內在的功能,這就是其可編程性的由來。從前端開發流程來說,FPGA和ASIC開發並無二至。由於ASIC開發一次性投入成本較高,FPGA無疑是一種經濟的替代方案,用於實現的高速的數據並行處理。如業務能夠支撐大規模應用並且協議固化,則能夠分攤成本的ASIC實現就有成本的優勢。

       FPGA作爲一種器件,技術上主要壟斷在少數大公司手中,那就是雙巨頭ALTERA和XILINX。除此之外還有一些份額相對較小的公司,例如ACTEL和LATTICE。不止是FPGA的硬件芯片,其配套的EDA工具技術壁壘更高。因此相對於CPU來說,FPGA的國產化更不樂觀,不過已經有國內的廠商來從事這一行業,例如國微和京微雅格等,也在一些細分市場上推出自己的FPGA產品。     

      

     

 

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章