一、這世界真是瘋了,貌似有人連FPGA原理是什麼都不知道就開始來學習FPGA了。
二、DSP就是一個指令比較獨特的處理器。它雖然是通用處理器,可是實際上不怎麼「通用」。技術很牛的人能夠用DSP作一臺電腦出來跑windows, 而實際上真正這麼幹的確定是蠢材。用DSP作信號處理,比其餘種類的處理器要厲害;用DSP作信號處理以外的事情,卻並不見長。並且信號處理的代碼通常需 要對算法很精通的人才能真正寫好。數據結構裏面的時間複雜度和空間複雜度在這裏是一把很嚴酷的尺子。
三、FPGA只不過披着軟件的外 衣,其實是硬件。FPGA內部有兩層相對獨立的電路。使用者「編碼->編譯」後生成一個映像,這個映像做用於第一層電路。這層電路之際上就是一個 0,1的開關矩陣,這個開關矩陣用來控制第二層工做電路,將第二層工做電路配置成一個相應的處理器。理論上FPGA能夠配置成任何須要的處理器,而實際上 爲了儘可能少出bug,FPGA開發都使用已經開發好的「庫文件」,也就是把人家能穩定工做的電路圖拿過來。所以,對大多數FPGA開發者來講,FPGA內 部有幾個核基本上只能從庫文件裏面選——除非你有能力本身設計核心內部的電路和核間總線——ram和rom也是用宏來配置,本身只須要改改外部的專用電路 和接線方式等等。甚至外部的專用電路都有庫文件,搭個積木就完事了。玩FPGA真正掙錢的人是作積木的人,你原創幾個積木而且能申請專利,迫令人家給你交 專利費,那你這輩子能夠衣食無憂了。
四、FPGA區別於ASIC設計屬於硬件設計的範疇,ASIC是硬件全定製,FPGA是硬件半定 制。具體來講:ASIC整個電路都由設計師設計的,用多少資源設計多少資源,通常多用於產品設計。而FPGA資源事先由廠商給定,例如Altera、 Xilinx等都提供不一樣系列的FPGA芯片,設計師能夠在給定資源下作硬件設計開發。
五、DSP主要用於處理信號、事先算法,特色是多級流水,能夠加快數據處理的速度,開發環境主要是C語言。能夠說DSP應用的範圍更專。DSP的設計,能夠理解爲軟件設計,設計師不須要太瞭解DSP的結構。
六、DSP原意就是指數字信號處理,只不過DSP芯片因爲主要功能是實現數字信號處理,實現各類算法,因此簡稱爲DSP(數字信號處理器);FPGA同樣能夠作DSP(數字信號處理),就意味着能夠用FPGA作硬件設計來實現DSP芯片的功能,固然,相比較專業的DSP芯片、成本過高。
七、如今除了FPGA和DSP以外還有一個近幾年熱門的產品:ARM。ARM主要應用與手持設備和嵌入式產品,幾乎籠罩了90%的市場份額。能夠說ARM開發也偏向於軟件開發,設計者主要是講Wince系統或者Linux系統移植到ARM開發平臺上,而後作各類軟件應用開發。
因此,這三個方向都有其不一樣的應用場合,很難講誰更有前途。不過,做爲我我的而言,更喜歡作硬件設計,因此我選擇FPGA做爲本身的方向。FPGA主要 是給設計者提供了一個硬件平臺,開發的核心仍是須要獨立的應用設計和高效的算法設計。因此設計者應該處理好工具的掌握和具體設計的區別。
各自特色:
FPGA:並行處理,內部資源多。
DSP:成本低、低功耗、高性能的處理能力。具備強大的外部通訊接口(SCI,SPI,CAN)便於構成大的控制系統。
特色:
(1)在一個指令週期內可完成一次乘法和一次加法;
(2)程序和數據空間分開,能夠同時訪問指令和數據;
(3)片內具備快速RAM,一般可經過獨立的數據總線在兩塊中同時訪問;
(4)具備低開銷或無開銷循環及跳轉的硬件支持;
(5)快速的中斷處理和硬件I/O支持;
(6)具備在單週期內操做的多個硬件地址產生器;
(7)能夠並行執行多個操做;
(8)支持流水線操做,使取指、譯碼和執行等操做能夠重疊執行。算法
本人認爲FPGA更 有前途!DSP其實只是個特殊的處理器,有專用的硬件乘法器,有桶形移位器能夠把數據從存儲器移到ALU,還有流水線等技術。但FPGA一樣能夠完成這些 功能,而且FPGA是並行工做的,如今不少FPGA內部可使用軟DSP或者硬核的DSP,當你的項目須要時序很嚴格的狀況非FPGA莫屬。好比說用 DSP和USB芯 片CY68013進行FIFO(同步傳送)數據時,IFCLK能夠是外部或內部,USB芯片在(IFCONFIG的IFCLKSRC裏配置)。若是 IFCLK使用內部的狀況下,DSP根本沒法知道我把數據送到FIFO數據端口後USB芯片內部時鐘過了多少週期,但FPGA就能夠,由於FPGA的時鐘 取自於USB芯片的48M輸出,在FPGA內部作一個狀態機,當數據送到USB芯片的FIFO數據端口時,下一狀態把SLWR拉低,再下一狀態拉高,就等 於USB內部過了一週期,數據就寫進USB芯片內部的FIFO了,我只是舉個簡單的例子,不少關於時序的案例非FPGA莫屬,DSP作算法快速,成 熟,FPGA更有挑戰,據個人經驗,FPGA如今內部起碼有不少核是能夠用的,這像一個可配置的單片機,不用的我就不放進項目。以ACTEL的FPGA來 說,用的比較多的軟核是:Core8051S、CoreABC、微處理器軟核,特別說明CoreABC佔用的空間很是少,能夠裁減指令,能夠配置數據寬度 8,16,32,有1組通用輸入端口和輸出端口,可配置堆棧。有CoreDES,CoreAES128,CoreFROM,CoreI2C,CoreGPIO,CoreInterrupt,CoreLPC,CoreSDR,CoreUART, 還有不少不少,看這些名字,不少人都知道幹什麼用的。windows
來源:電子產品世界網數據結構