初學者愛問這個問題,我的新書中會告訴你:邏輯粘合是FPGA早期的任務,實時控制讓FPGA變得有用武之地,FPGA實現的各種協議靈活度很高,信號處理讓FPGA越來越高端,片上系統讓FPGA取代一切……
但是,特權很糾結,一直在問自己“FPGA到底能做什么”。事情源于要啟動的DVR項目,視頻搞定了,也顯示了,下一步要存儲,傳輸帶寬和存儲容量放出話來了“必須要壓縮”。那么,圖片要JPEG,視頻要H.264。各種方案雖然只是初步的了解一些,但是發現這方面雖然有類似SOPC概念的海思和TI雙核解決方案,而且是專門干這個的,不過發現這玩意是有門檻的,用我們經理的一句話是“一般人搞不定”,成本不僅僅是money的問題,還有工程師熟悉一個新的高復雜度的開發環境的時間和精力投入。那么退而求其次,貌似一個DSP也很難搞定,市場上常見的是DSP+FPGA,或者也有一些專用的ASIC能夠勝任諸如H.264的編碼,不過看看芯片價格只能用“死貴死貴”來形容了。
折衷下來,上午我還尋思著就再來一個DSP吧,也看好了ADI的blackfin,準備下一步慢慢籌備我的DSP之旅。但是,也許這幾天一直縈繞在我腦子里的問題越發強烈起來“FPGA到底能做什么”。很顯然,如果要在通用控制器或處理器和FPGA之間做一些比較,特權會很快的送上圖1和圖2(圖3)。
圖1基于控制器或處理器的一般處理流程
圖2基于FPGA的并行處理流程
圖3基于FPGA的流水線處理流程
很顯然,圖1中的一般控制器或處理器由于軟件固有的順序特性,決定了它的工作必須是按部就班,一個輸出的4個步驟完成才能接著開始下一個輸出的4個步驟,那么它完成4個輸出就需要20個步驟單位時間(假定輸出也算一個步驟,一個輸出需要5個步驟)。雖然現在很多的DSP中也帶有功能強大的硬件加速引擎,如簡單搬運數據的DMA等,但是它所做的工作量,或者說和軟件并行執行的工作量其實是很局限的,這里說的局限是指他的靈活性上很差,協調性不夠好也會讓處理速度大打折扣。
而反觀圖2和圖3的FPGA處理,先說圖2,并行處理方式很好很強大,是前面的軟件處理速度的4倍。并行是FPGA最大的優勢,只不過需要用大量的資源來換速度,通俗的說就是要用大量的money換性能,我想這并不是人人都能夠承受的解決方案。而看圖3,是一個不錯的折衷方案,流水線處理是FPGA乃至整個信號處理領域最經典的一種方法。能夠在基本不消減處理速度的前提下只用了并行處理方法的1/4資源就完成任務了。
那么話題回到JPEG和H.264的壓縮上來,其實FPGA足以勝任,網絡上一搜一籮筐這樣的解決方案。其實退一萬步來講,算法再復雜,實時性要求再高,FPGA都是足以勝任的,尤其是采用流水線方法,也許第一個數據輸出的時間需要很長(一般系統是許可的),但是這并不妨礙后續數據的實時輸出。我想,這就是成本(器件資源)和性能最好的折衷辦法。
那么,這些復雜的算法中無外乎存儲和運算。實時處理中的存儲其實很大程度上是要依賴器件的片內存儲器資源的,外擴的存儲器無論從復雜度和速度上都會只會減低處理性能。加減乘除好辦,內嵌的乘法器或是各種各樣專用的DSP處理單元就能搞定;但是開方求冪等比較無奈的運算就只能靠查表來解決了。
如此這般下來,其實FPGA就是要干這個的——算法,越是大家搞不定的問題我FPGA統統不在話下。話說到這,發現不對勁,有人要拍磚了。其實真沒有FPGA干不了的活,但是有FPGA不適合干的活,個人認為那些順序性很強的活,比如文件系統那種很折騰的活,就算簡單的SD卡文件系統的管理也是要不停的折騰,數據這里讀那里寫的,FPGA代碼就很難寫,一個偌大的狀態機也許能夠解決問題,但是很容易讓設計者深陷其中暈頭轉向。
-
dsp
+關注
關注
553文章
7987瀏覽量
348764 -
FPGA
+關注
關注
1629文章
21729瀏覽量
603017
原文標題:FPGA到底能做什么?
文章出處:【微信號:edn-china,微信公眾號:EDN電子技術設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論