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