FPGA是通過邏輯組合來實現各種功能的器件,幾乎可以進行任何類型的處理;對于常用的數字信號處理,有些FPGA專門還提供了DSP模塊來實現加速;FPGA的并行處理架構非常適合圖像處理、數字信號處理等運算密集的應用;用某款芯片無法滿足要求時,還可以通過使用同樣封裝且容量更大的FPGA芯片來提供更高的處理能力,這樣就可以保持管腳的兼容性,從而無須對PCB板進行修改;FPGA的可編程性使設計工程師可以隨時對設計進行修改,即使在產品部署后也能對設計錯誤進行更正;FPGA不但可以完成MCU和DSP的各種功能,還可以根據需要生成新的功能,或者調配各項功能之間的資源配比,使同一個硬件電路設計可以滿足不同的應用需求;FPGA還可以利用現成的處理器內核,直接生成軟處理器,并在其上運行操作系統。
由于FPGA是通過邏輯組合來實現功能的,所以其功耗和成本一般高于MCU和DSP。在幾年前,FPGA給人的印象一直是高高在上的價格,除了通信、航天、軍工、工業等少數行業,FPGA更多地是在扮演原型驗證開發的角色,在消費類電子等更廣大的市場中遲遲未打開局面。
隨著Xilinx和Altera競相采用新的制造工藝,其單位門電路的價格下降得比ASIC還要快,價格在很多應用中已不再是障礙了。特別是在一些需要特定功能的應用中,設計師在市場上找不到可以滿足要求的器件,他們就必須自己開發ASIC芯片,或者用FPGA進行設計。但開發ASIC的成本和風險在不斷提高,甚至超過了未來的收益,用FPGA就成了一個非常實際的選擇。
傳統嵌入式系統的開發流程是一般先做好硬件平臺,再在硬件平臺上面應用嵌入式系統開發工具進行軟件開發。這樣做的結果是軟件開發人員必須在硬件設計完成后才能工作,或者是用各種仿真工具在虛擬的硬件平臺上進行開發。
在用FPGA進行開發時,開發人員首先要設計輸入(FPGA廠商專用工具+語言/原理圖+IP CORE),然后編譯仿真(FPGA廠商工具+仿真工具),再進行板級調試(測試板制作+邏輯分析儀),如果發現問題,再循環進行上面的環節。
這種設計模式存在諸多問題:設計可移植性差,語言的不足及IP CORE的費用昂貴,系統仿真的可靠性及速度瓶頸,需要制作專用測試板,外接測試儀器的局限性,測試板的重復制作導致開發周期延長。
此外,從原理圖設計、邏輯驗證和仿真、電路板設計、嵌入式軟件的開發和調試,到最后的綜合調試,在整個過程中要用到多個廠商的不同工具,不但需要開發人員掌握各個軟件的使用方法和技巧,僅僅從資本投入上就是一筆不小的開支。而且,各個軟件之間還經常要互相調用文件,盡管各個廠商都宣稱自己的軟件可保證兼容性,但軟件日益復雜的功能和不斷增長的代碼讓人難以對兼容性完全放心。
隨著FPGA的制造工藝向65nm、45nm和更先進的工藝發展,FPGA的器件成本會越來越低。為了取得差異化的競爭優勢,系統廠商必須開發出獨特的產品功能,但采用ASSP和ASIC都只能提供固定的有限功能,而開發ASIC的巨大成本和風險又使得ASIC只能成為少數大公司的選擇。成本不斷下降的FPGA已經成為大多數系統廠商的不二之選,但在傳統設計流程中軟硬件的不同步、需要交叉使用多個軟件、硬件開發板的支持范圍有限,可能成為阻礙更多采用FPGA的問題。