FPGA圖像處理開發(fā)流程
【注意注意注意!?。?】?? ?? ?
硬件訓(xùn)練營高能來襲?。?!有啥不會皆可群內(nèi)詢問~?
信盈達——全力打造一個獨屬于硬件工程師們交流學(xué)習(xí)訓(xùn)練營
況且現(xiàn)如今可是——技能走天下!??!?
想要往硬件發(fā)展的朋友萌,趕緊掃描下方二維碼加入大佬的訓(xùn)練營吧?
(內(nèi)有行業(yè)專業(yè)大佬,入坑不虧)?


在掌握FPGA基本知識以及數(shù)字圖像處理基礎(chǔ)之后,還需要準(zhǔn)備的硬件有一塊FPGA開發(fā)板(包括顯示接口如VGA,HDMI,攝像頭接口)、一個入門級攝像頭如OV7725以及一個液晶顯示屏,在正式做FPGA圖像處理開發(fā)之前,務(wù)必使用FPGA驅(qū)動攝像頭視頻顯示,這里要掌握攝像頭驅(qū)動和液晶屏驅(qū)動接口和時序,能夠進行modelsim仿真。
一個常規(guī)的FPGA圖像處理開發(fā)流程是由需求分析及問題描述、軟件算法設(shè)計及驗證、硬件平臺設(shè)計、FPGA映射以及仿真驗證幾部分組成。如下圖所示:

下面對這五步進行一一介紹(可能不全面):
一、需求分析及問題描述:
1.系統(tǒng)功能:也就是你要做什么,需要一個詳細的圖像處理后的預(yù)期結(jié)果說明。
2.系統(tǒng)的性能:完成這個系統(tǒng)的指標(biāo)是什么,對于實時的圖像處理來說。系統(tǒng)所允許的最大延時以及需要每秒所處理的幀數(shù)是比較關(guān)鍵的兩個指標(biāo)。同時比如采用的攝像頭的分辨率、焦距等指標(biāo),還有車牌識別的識別率要求等。
3.系統(tǒng)的工作環(huán)境:圖像處理受光照的影響因素很大,因此考慮系統(tǒng)的工作環(huán)境對后期算法的選擇極其重要。還需要考慮要契合所工作的機械位置,對板子形狀體積等影響。
二、軟件算法設(shè)計及其驗證:
在進行FPGA圖像開發(fā)之前,首要做的就是軟件算法設(shè)計及其驗證,其中軟件算法復(fù)雜性會對,硬件的架構(gòu),硬件的選型以及資源的消耗。
因此做FPGA圖像開發(fā)不直接在FPGA上做,因為后期的編譯,調(diào)試將會花費很長時間。
在拿到需求之后,我們一般首先要做的就是使用Matlab/opencv軟件算法驗證,不斷的調(diào)試仿真,選取一個最優(yōu)的方案;然后嘗試將串行的軟件算法以及軟件封裝的函數(shù),改寫成適合FPGA處理的形式,在進行進一步仿真驗證。
其中最重要的一點就是精度問題,因為FPGA不善于處理浮點運算,因此要考慮浮點到定點的轉(zhuǎn)化,這樣做,當(dāng)然會帶來精度的丟失,因此需要評估精度對系統(tǒng)的影響,在滿足要求范圍內(nèi),進而來確定FPGA中定點轉(zhuǎn)換的位數(shù)。
舉一個例子:計算3.145/2(1.573);系統(tǒng)要求的精度在0.01之內(nèi),在FPGA計算中可以首先將3.145擴大256倍取整后為805進行計算;得到[805/2]=402,然后在縮小256倍(右移8bit)等于1.570;可以看到滿足系統(tǒng)精度要求。
三、硬件平臺設(shè)計:
1.軟件和硬件的劃分
這里所說的硬件指的是由FPGA邏輯實現(xiàn),軟件是由DSP、ARM、單片機編程實現(xiàn),像計算量較大的預(yù)處理算法(形態(tài)學(xué)濾波、sobel算子和均值濾波等)可以交由FPGA加入處理,像一些涉及到復(fù)雜浮點運算或者FPGA不易實現(xiàn)的可以交由軟件編程實現(xiàn),達到軟硬協(xié)同工作。
2.資源評估和FPGA選型
在硬件方案確定后,在系統(tǒng)選型之前,很有必要對系統(tǒng)資源的預(yù)估,對圖像處理系統(tǒng)來講,肯定會涉及到諸如行緩存,幀緩存,以及顯存,不可避免的會使用到片上資源(寄存器,SRAM資源),同時也會預(yù)留一些調(diào)試的片上資源(SigaltapII),一般片內(nèi)資源較多的FPGA比較貴,像大的幀緩存可以考慮存儲在片外資源上。
四、FPGA映射
FPAG映射也就說FPGA的硬件實現(xiàn),將軟件算法轉(zhuǎn)換成適合FPGA是實現(xiàn)的算法,F(xiàn)PGA操作是可以是并行的,考慮到時序約束問題,經(jīng)常使用的是流水線操作,同時考慮信號扇出問題可以進行邏輯賦值,說白了,這里涉及到了一個速度與面積的平衡。
很多情況會涉及到共享資源的使用,采用時分復(fù)用的方式實現(xiàn);這樣能節(jié)省很多資源,與之而來的就是要設(shè)計一個仲裁機制防止沖突。
五、仿真驗證
在RTL代碼完成之后,首先進行功能測試,其次才是下板測試,這里在設(shè)計RTL代碼時要設(shè)計一些debug信號便于定位問題,或者將一些關(guān)鍵信號引到頂層模塊便于在線查看(使用示波器或者在線邏輯分析儀);也可以硬件模擬一些激勵信號來輔助調(diào)試。

版權(quán)聲明:本文為CSDN博主「huanghu1230」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
版權(quán)歸原作者所有,有改動。如有侵權(quán),請聯(lián)系刪除。
原文鏈接:https://blog.csdn.net/huanghu1230/article/details/109400635