牛人牛語(yǔ)錄:關(guān)于FPGA、DSP和ARM
這世界真是瘋了,貌似有人連FPGA原理是什么都不知道就開(kāi)始來(lái)學(xué)習(xí)FPGA了。
DSP就是一個(gè)指令比較獨(dú)特的處理器。它雖然是通用處理器,但是實(shí)際上不怎么“通用”。技術(shù)很牛的人可以用DSP做一臺(tái)電腦出來(lái)跑windows,而實(shí)際上真正這么干的肯定是蠢材。用DSP做信號(hào)處理,比其他種類(lèi)的處理器要厲害;用DSP做信號(hào)處理之外的事情,卻并不見(jiàn)長(zhǎng)。而且信號(hào)處理的代碼一般需要對(duì)算法很精通的人才能真正寫(xiě)好。數(shù)據(jù)結(jié)構(gòu)里面的時(shí)間復(fù)雜度和空間復(fù)雜度在這里是一把很?chē)?yán)酷的尺子。
FPGA只不過(guò)披著軟件的外衣,實(shí)際上是硬件。 FPGA內(nèi)部有兩層相對(duì)獨(dú)立的 電路。 使用者“編碼->編譯”后生成一個(gè)映像,這個(gè)映像作用于第一層電路。這層電路之際上就是一個(gè)0,1的開(kāi)關(guān)矩陣,這個(gè)開(kāi)關(guān)矩陣用來(lái)控制第二層工作電路,將第二層工作電路配置成一個(gè)相應(yīng)的處理器。理論上FPGA可以配置成任何需要的處理器,而實(shí)際上為了盡量少出bug,F(xiàn)PGA開(kāi)發(fā)都使用已經(jīng)開(kāi)發(fā)好的“庫(kù)文件”,也就是把人家能穩(wěn)定工作的 電路圖拿過(guò)來(lái)。因此,對(duì)大多數(shù)FPGA開(kāi)發(fā)者來(lái)說(shuō),F(xiàn)PGA內(nèi)部有幾個(gè)核基本上只能從庫(kù)文件里面選——除非你有能力自己設(shè)計(jì)核心內(nèi)部的電路和核間 總線——ram和rom也是用宏來(lái)配置,自己只需要改改外部的專(zhuān)用電路和接線方式等等。甚至外部的專(zhuān)用電路都有庫(kù)文件,搭個(gè)積木就完事了。玩FPGA真正掙錢(qián)的人是做積木的人,你原創(chuàng)幾個(gè)積木并且能申請(qǐng)專(zhuān)利,迫使人家給你交專(zhuān)利費(fèi),那你這輩子可以衣食無(wú)憂了。
FPGA 區(qū)別于ASIC設(shè)計(jì) 屬于硬件設(shè)計(jì)的范疇 ASIC是硬件全定制 FPGA是硬件半定制。 具體來(lái)說(shuō) ASIC整個(gè)電路都由設(shè)計(jì)師設(shè)計(jì)的 用多少資源設(shè)計(jì)多少資源 一般多用于產(chǎn)品設(shè)計(jì)。
FPGA資源事先由廠商給定 例如 Altera Xilinx等都提供不同系列的FPGA芯片 設(shè)計(jì)師可以在給定資源下做硬件設(shè)計(jì)開(kāi)發(fā)。
DSP 主要用于處理信號(hào) 事先算法 特點(diǎn)是多級(jí)流水 可以加快數(shù)據(jù)處理的速度 開(kāi)發(fā)環(huán)境主要是 C語(yǔ)言 可以說(shuō)DSP應(yīng)用的范圍更專(zhuān) DSP的設(shè)計(jì)
可以理解為軟件設(shè)計(jì) 設(shè)計(jì)師不需要太了解DSP的結(jié)構(gòu)
補(bǔ)充幾個(gè)小概念 DSP愿意就是指數(shù)字信號(hào)處理 只不過(guò)DSP芯片由于主要功能是實(shí)現(xiàn)數(shù)字信號(hào)處理 實(shí)現(xiàn)各種算法 所以簡(jiǎn)稱(chēng)為DSP(數(shù)字信號(hào)處理器) FPGA一樣可以做DSP(數(shù)字信號(hào)處理),就意味著可以用FPGA做硬件設(shè)計(jì)來(lái)實(shí)現(xiàn)DSP芯片的功能,當(dāng)然,相比較專(zhuān)業(yè)的DSP芯片 成本太高。
現(xiàn)在除了FPGA和DSP之外還有一個(gè)近幾年熱門(mén)的產(chǎn)品 ARM ARM主要應(yīng)用與手持設(shè)備和 嵌入式產(chǎn)品 幾乎籠罩了90%的市場(chǎng)份額 可以說(shuō)ARM開(kāi)發(fā)也偏向于軟件開(kāi)發(fā) 設(shè)計(jì)者主要是講wince系統(tǒng)或者linux系統(tǒng)移植到ARM開(kāi)發(fā)平臺(tái)上,然后做各種軟件應(yīng)用開(kāi)發(fā)。
所以 這三個(gè)方向都有其不同的應(yīng)用場(chǎng)合 很難講誰(shuí)更有前途 不過(guò) 作為我個(gè)人而言 更喜歡做硬件設(shè)計(jì) 所以我選擇FPGA作為自己的方向 FPGA。 主要是給設(shè)計(jì)者提供了一個(gè)硬件平臺(tái) 開(kāi)發(fā)的核心還是需要獨(dú)立的應(yīng)用設(shè)計(jì)和高效的算法設(shè)計(jì) 所以設(shè)計(jì)者應(yīng)該處理好工具的掌握和具體設(shè)計(jì)的區(qū)別。
FPGA: 并行處理,內(nèi)部資源多 DSP:成本低,低功耗,高性能的處理能力。具有強(qiáng)大的外部通信接口(SCI,SPI,CAN)便于構(gòu)成大的控制系統(tǒng)。 特點(diǎn):(1)在一個(gè)指令周期內(nèi)可完成一次乘法和一次加法; (2)程序和數(shù)據(jù)空間分開(kāi),可以同時(shí)訪問(wèn)指令和數(shù)據(jù); (3)片內(nèi)具有快速RAM,通?赏ㄟ^(guò)獨(dú)立的數(shù)據(jù)總線在兩塊中同時(shí)訪問(wèn); 。4)具有低開(kāi)銷(xiāo)或無(wú)開(kāi)銷(xiāo)循環(huán)及跳轉(zhuǎn)的硬件支持; (5)快速的中斷處理和硬件I/O支持; (6)具有在單周期內(nèi)操作的多個(gè)硬件地址產(chǎn)生器; (7)可以并行執(zhí)行多個(gè)操作; (8)支持流水線操作,使取指、譯碼和執(zhí)行等操作可以重疊執(zhí)行。
本人認(rèn)為FPGA更有前途,DSP其實(shí)只是個(gè)特殊的處理器,有專(zhuān)用的硬件乘法器,有桶形移位器可以把數(shù)據(jù)從存儲(chǔ)器移到ALU,還有流水線等技術(shù)。
但FPGA同樣可以完成這些功能,并且FPGA是并行工作的,現(xiàn)在很多FPGA內(nèi)部可以使用軟DSP或者硬核的DSP,當(dāng)你的項(xiàng)目需要時(shí)序很?chē)?yán)格的情況非FPGA莫屬。比如說(shuō)用DSP和 USB芯片CY68013進(jìn)行FIFO(同步傳送)數(shù)據(jù)時(shí),IFCLK可以是外部或內(nèi)部,USB芯片在(IFCONFIG的IFCLKSRC里配置)。如果IFCLK使用內(nèi)部的情況下,DSP根本無(wú)法知道我把數(shù)據(jù)送到FIFO數(shù)據(jù)端口后USB芯片內(nèi)部時(shí)鐘過(guò)了多少周期,但FPGA就可以,因?yàn)镕PGA的時(shí)鐘取自于USB芯片的48M輸出,在FPGA內(nèi)部做一個(gè)狀態(tài)機(jī),當(dāng)數(shù)據(jù)送到USB芯片的FIFO數(shù)據(jù)端口時(shí),下一狀態(tài)把SLWR拉低,再下一狀態(tài)拉高,就等于USB內(nèi)部過(guò)了一周期,數(shù)據(jù)就寫(xiě)進(jìn)USB芯片內(nèi)部的FIFO了,我只是舉個(gè)簡(jiǎn)單的例子,很多關(guān)于時(shí)序的案例非FPGA莫屬,DSP做算法快速,成熟,F(xiàn)PGA更有挑戰(zhàn),據(jù)我的經(jīng)驗(yàn),F(xiàn)PGA現(xiàn)在內(nèi)部起碼有很多核是可以用的,這像一個(gè)可配置的 單片機(jī),不用的我就不放進(jìn)項(xiàng)目。以ACTEL的FPGA來(lái)說(shuō),用的比較多的軟核是:Core8051S、CoreABC、微處理器軟核,特別說(shuō)明CoreABC占用的空間非常少,可以裁減指令,可以配置數(shù)據(jù)寬度8,16,32,有1組通用輸入端口和輸出端口,可配置堆棧。有CoreDES,CoreAES128,CoreFROM,CoreI2C,CoreGPIO,CoreInterrupt,CoreLPC,CoreSDR,CoreUART,還有很多很多,看這些名字,很多人都知道干什么用的。 想要學(xué)習(xí)提升FPGA,嵌入式,加QQ1841388306獲取學(xué)習(xí)資料
|