牛人牛語錄:關于FPGA、DSP和ARM
這世界真是瘋了,貌似有人連FPGA原理是什么都不知道就開始來學習FPGA了。
DSP就是一個指令比較獨特的處理器。它雖然是通用處理器,但是實際上不怎么“通用”。技術很牛的人可以用DSP做一臺電腦出來跑windows,而實際上真正這么干的肯定是蠢材。用DSP做信號處理,比其他種類的處理器要厲害;用DSP做信號處理之外的事情,卻并不見長。而且信號處理的代碼一般需要對算法很精通的人才能真正寫好。數據結構里面的時間復雜度和空間復雜度在這里是一把很嚴酷的尺子。
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,還有很多很多,看這些名字,很多人都知道干什么用的。 想要學習提升FPGA,嵌入式,加QQ1841388306獲取學習資料
|