基于FPGA的機載顯示系統架構設計與優(yōu)化
?、?視頻旋轉模塊寫(xiě)數據,由于視頻處理速度和圖形處理速度不完全匹配,所以先將縮放及旋轉后的數據存儲到DDR3,等待圖形處理完后,再統一取出,讀寫(xiě)數據量為237.3 MB/s。
本文引用地址:http://dyxdggzs.com/article/264924.htm?、?視頻輸出讀數據,同時(shí)進(jìn)行平移、翻轉、鏡像等坐標變換操作,讀寫(xiě)數據量為237.3 MB/s 。
?、?預畸變參數讀數據,用64位來(lái)存儲每個(gè)像素點(diǎn)對應的四個(gè)預畸變參數,則讀數據量為

表1為該系統數據吞吐量的計算表,其吞吐量合計為2677.6 MB/s 。
表1系統數據吞吐量計算表

本文采用DDR3作為系統外部存儲器,其型號為W3H128M72E,數據寬度為72比特(64比特為數據位,8比特為校正位),采用的時(shí)鐘為400MHz,由于DDR3在上升沿和下降沿都進(jìn)行數據的讀寫(xiě)操作,等效于其內部讀寫(xiě)時(shí)鐘為800MHz,即數據帶寬為6400MB/s(800MHz*64bit),滿(mǎn)足本文設計系統的數據吞吐量要求。
3 機載顯示系統架構優(yōu)化
設計的機載顯示系統架構能夠滿(mǎn)足性能要求,但是還需要進(jìn)一步優(yōu)化。如圖 5所示,改變不同模塊之間的順序來(lái)優(yōu)化設計,同時(shí)改進(jìn)算法。具體改變如下:
?、?圖形整體相對于屏幕的縮放和旋轉功能在CPU端發(fā)送命令前實(shí)現,因為CPU端旋轉和縮放是針對頂點(diǎn)進(jìn)行的,方便快速,同時(shí)減少了FPGA的BRAM資源占用,減少了進(jìn)出DDR3的次數;
?、?改進(jìn)幀速率提升算法,進(jìn)一步減少延遲,提高實(shí)時(shí)性;
?、?改進(jìn)視頻旋轉算法,進(jìn)一步降低緩存區的大小,減少BRAM的占用率;
?、?幀速率提升和平移、翻轉、鏡像都需要通過(guò)讀寫(xiě)DDR3來(lái)完成,將兩者合并,同時(shí)完成,減少進(jìn)出DDR3的次數。

圖5 FPGA邏輯優(yōu)化的整體流程圖
3.1 實(shí)時(shí)性分析
實(shí)時(shí)性是機載顯示系統重要的衡量標準之一,為了確保飛機運行安全,必須確保視頻處理的各個(gè)模塊都有較高的實(shí)時(shí)性。視頻采集、視頻縮放、視頻校正、視頻輸出延遲都是幾行,延遲時(shí)間在 以?xún)?。幀速率提升模塊的延遲遠大于其他各個(gè)模塊延遲之和,需要進(jìn)一步改進(jìn),在保證顯示質(zhì)量的同時(shí),進(jìn)一步降低延遲時(shí)間。
3.1.1 幀速率提升算法優(yōu)化
改進(jìn)的幀速率提升算法仍使用幀復制法。在DDR3中開(kāi)辟4個(gè)存儲空間做切換用于存放幀速率為25Hz、場(chǎng)速率為50Hz的PAL圖像。有4個(gè)場(chǎng)緩存區,當接收當前幀的奇場(chǎng)后與前一幀的偶場(chǎng)結合成一幀數據輸出。
幀速率改進(jìn)算法示意圖如圖 6所示。A場(chǎng)正好寫(xiě)完,B場(chǎng)正好讀完,下一幀讀取A場(chǎng)數據,這樣延遲為PAL的1場(chǎng)(半幀);A場(chǎng)正好還差1行寫(xiě)完,B場(chǎng)已讀完,下一幀繼續讀B場(chǎng),這樣延遲為PAL的1+(25/60)=1.42場(chǎng)。延遲為PAL的1~1.42場(chǎng)。最大延遲為。

圖6 幀速率改進(jìn)算法示意圖
3.2 BRAM資源占用
原設計的機載顯示系統架構使用反向映射的方法實(shí)現旋轉算法,每一行旋轉后數據反向旋轉時(shí)需要緩存334行視頻旋轉前數據,即需要279個(gè)36Kb的BRAM。相對于其它模塊緩存幾行相比,占用了大量的BRAM空間,因此需要改進(jìn)。
3.2.1 視頻旋轉算法優(yōu)化
視頻旋轉提出了一種改進(jìn)的旋轉映射法,降低緩存空間。示意圖如圖 7所示。對以行掃描的方式獲取的視頻圖像,緩存兩行就能開(kāi)始旋轉處理,先進(jìn)行正向映射,根據當前兩行對應的旋轉后浮點(diǎn)坐標,找到兩行內的整點(diǎn)坐標,再對其進(jìn)行反向映射,利用當前兩行來(lái)得到旋轉后整點(diǎn)坐標的像素值。

圖7 視頻旋轉改進(jìn)算法示意圖
該算法涉及原始圖像中的2*2大小鄰域,為了提高該模塊的處理速度,設計了一組由三個(gè)雙端口塊存儲器BRAM組成的原始圖像數據緩存器。每個(gè)BRAM用來(lái)存儲1行原始圖像的數據,3個(gè)BRAM中存儲的原始圖像數據包括當前旋轉計算涉及的兩行原始圖像數據以及下一行旋轉計算涉及的一行原始圖像數據。因此,需要緩存3行,使用3個(gè)36Kb的BRAM。
3.3 DDR3吞吐量分析
從圖5可以看出,優(yōu)化后的系統流程最多經(jīng)過(guò)DDR3共5次,下面依次介紹每次讀寫(xiě)DDR3的必要性和數據量。
?、?圖形及字符生成模塊讀寫(xiě)數據,此與原模塊相同,則圖形生成模塊讀寫(xiě)數據量為

?、?圖形輸出模塊讀數據及清屏操作寫(xiě)數據,由于視頻輸出模塊是對整個(gè)畫(huà)面的處理,所以需要從DDR3中讀取出來(lái),而由于圖形及字符不是對每個(gè)像素點(diǎn)都進(jìn)行操作的,所以取出后,需要進(jìn)行清屏操作。則讀寫(xiě)數據量為474.6 MB/s 。
?、?視頻旋轉寫(xiě)數據,旋轉后的數據沒(méi)有嚴格按照屏幕自上而下的順序,必須將數據存儲到DDR3中進(jìn)行變換操作,讀寫(xiě)數據量為

?、?視頻輸出模塊讀數據,從DDR3中取出進(jìn)行視頻輸出操作,取出的同時(shí)還能進(jìn)行一些坐標變換操作,如平移、翻轉、鏡像等,讀寫(xiě)數據量為

?、?預畸變參數讀數據,用64位來(lái)存儲每個(gè)像素點(diǎn)對應的四個(gè)預畸變參數,則讀寫(xiě)數據量為

表 2為該系統數據吞吐量的計算表,其吞吐量合計為2135.7MB/s。DDR3的數據帶寬為6400MB/s(800MHz*64bit),滿(mǎn)足本文設計系統的數據吞吐量要求。
表2 優(yōu)化后系統數據吞吐量計算表

結論
本文設計一種基于FPGA的機載顯示系統架構,能夠實(shí)現2D圖形繪制,構成各種飛行參數畫(huà)面,同時(shí)疊加外景視頻圖像。實(shí)時(shí)性方面,幀速率提升模塊延遲最大為;BRAM資源占用方面,視頻旋轉算法需要279個(gè)36Kb的BRAM;DDR3吞吐量方面,系統吞吐量為2677.6 MB/s。
優(yōu)化后的機載顯示系統,實(shí)時(shí)性方面,幀速率提升模塊延遲最大為;BRAM資源占用方面,視頻旋轉算法需要3個(gè)36Kb的BRAM;DDR3吞吐量方面,吞吐量為2135.7 MB/s。
經(jīng)過(guò)對比分析,優(yōu)化后的機載顯示系統實(shí)時(shí)性提高、BRAM資源占用減少、吞吐量降低,整體性能得到了提升。
fpga相關(guān)文章:fpga是什么
評論