◎劉會楊
實時視頻處理系統(tǒng)詳細設計
◎劉會楊
本文介紹了以FPGA和dsp框架的實時視頻采集、處理、傳輸以及后端的圖像壓縮處理算法設計。FPGA(Field- Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點,DSP(Digital Signal Process)即數字信號處理技術,DSP芯片即指能夠實現(xiàn)數字信號處理技術的芯片。
該系統(tǒng)采用了基于FPGA+DSP協(xié)同工作的模式來對實時視頻進行處理,實現(xiàn)了從視頻的采集、處理及傳輸的整個流程。
實時視頻圖像采集處理過程中,底層的數據處理量較大,但算法要求相對簡單一些,但是對處理的速度要求高,非常適用于FPGA來實現(xiàn)該處理,F(xiàn)PGA處理速度快、靈活性高。上層的圖像處理算法相對就較為復雜,適用于運算速度高、尋址方式靈活、通訊機制強的DSP芯片技術。
DSP+FPGA架構是當前圖像采集處理應用最為廣泛的,因為該框架 結構靈活、有較強的通用性、適合于模塊化設計,高速的算法運算處理縮短了開發(fā)周期,同時使系統(tǒng)易于維護和升級,為廣大的視頻處理工程師所追捧。
該系統(tǒng)框架采用了模塊化的設計方案,將整個系統(tǒng)劃分為三個部分:分視頻采集單元;視頻處理單元;視頻傳輸單元,清晰的描述了實時圖像輸出的處理流程。
FPGA作為核心控制單元,完成視頻信號的采集、濾波工作。以DSP作為整個系統(tǒng)的核心處理單元對采集的視頻圖像信息進行復雜的JPEG壓縮處理。而在視頻傳輸單元設計了以PDIUSBD12芯片為基礎的USB總線,專門負責視頻信號的傳輸工作。
視頻采集、處理框架分為視頻采集單元、視頻處理單元及視頻傳輸單元三部分組成而成。系統(tǒng)在設計時必須保證各個部分分工明確而又能無縫銜接。
FPGA和MB86S02視頻采集芯片作為圖像采集單元,實現(xiàn)了視頻信號的采集和預處理,快速而穩(wěn)定的將輸入的視頻信號轉換成數字圖像數據,并按照一定的格式存儲在確定的存儲區(qū)域。
DSP芯片為本系統(tǒng)的核心,對圖像數據進行壓縮處理,實現(xiàn)系統(tǒng)要達到的功能,將龐大的數據轉化為人眼能夠看到的jpg圖像。
圖像的上數據傳輸單元基于FPGA+USB模式,數據以PDIUSBD12芯片的USB總線為傳輸媒介,將處理后的的視頻圖像數據發(fā)送到數據接收端,接收的PC端將壓縮的數據解壓成RGB或其他格式顯示出來。
FPGA+DSP組成了該框架的硬件系統(tǒng),圖像采集單元為FPGA,將采集到的圖像信號處理后傳輸給DSP,圖像實時處理系統(tǒng)的核心模塊,即DSP,對已經預處過的圖像數據經過復雜的運算,壓縮成數據量較小的JPEG數據,這一步復雜的操作非常耗時,所以整個系統(tǒng)的性能由DSP單元決定著,圖像數據經過DSP處理完成圖后再次返回給FPGA,數據再經過FPGA寫到接口控制芯片的數據緩沖區(qū)中,最后數據由接口控制芯片負責信息的傳輸。
再此講述一個視頻采集、處理、傳輸用例。以FPGA控制的MB86S02視頻圖像傳感器負責圖像數據的采集,MB86S02傳感器在收到PC機的采集信號后開始視頻信號的采集,同時在負責圖像數據采集的FPGA單元還要擔負起視頻圖像信息的簡單理和系統(tǒng)其他各單元模塊之間的數據交互工作。系統(tǒng)應采用大容量的片外SDRAMR對采集到的視頻圖像信息進行緩存,因為視頻圖像數據量比較大,系統(tǒng)應保證圖像的實時處理,F(xiàn)PGA實現(xiàn)對SDRAM控制,F(xiàn)PGA首先要對緩存在SDRAM的視頻圖像進行簡單的濾波處理,消除圖像數據中的一些噪聲干擾,F(xiàn)PGA+DSP系統(tǒng)中采用中值濾波的方式對采集到的視頻信息進行簡單的預處理,預處理后的數據再通過FPGA內部FIFO進入DSP中進行復雜的壓縮處理。第一步首先上電加載DSP,加載后就可以等待FPGA發(fā)送的命令請求,當DSP收到FPGA的命令請求后,建立一個EDMA通道接收FPGA傳送的圖像數據,當接收滿一幀后便開始對視頻圖像進行負載的JPEG壓縮處理,視頻圖像信息經過DSP的壓縮處理后經過FIFO緩存,由 FPGA的控制寫入USB接口控制器的數據緩存區(qū),至此圖像數據處理完成,等待PC機的讀數請求,為方便PC端的下一步讀取數據,USB接口控制器在收到PC機的讀數請求后將數據寫入PDIUSBD12的端口1。
FPGA+DSP系統(tǒng)軟件設計和硬件設計一樣,同樣可以分為兩個部分來講述。FPGA和DSP之間的運行是相對獨立的,他們通過中斷信號來實現(xiàn)數據的實時交互。首先FPGA向DSP方向發(fā)送一個EDMA請求,DSP收到該請求后建立一個EDMA EDMA通道,DSP開始讀取緩存在FIFO中的FPGA已經預先處理過的數據,等待DSP壓縮處理完成后向FPGA發(fā)送一個中斷信號,F(xiàn)PGA收到DSP的處理完成信號后從FIFO中把壓縮后的圖像數據讀出來。
FPGA+DSP實時處理系統(tǒng)的整個操作流程,可以簡單描述為:系統(tǒng)上電后,DSP自行加載,加載完成后進入EDMA等待狀態(tài),等待數據處理信號,F(xiàn)PGA初始化后等待接收視頻圖像采集命令,收到視頻圖像采集命令后開始采集圖像,并對圖像進行簡單的預處理,以消除一些噪聲的干擾,最后將圖像數據放入FIFO緩沖區(qū),當處理了一定的數據量后,通知FPGA建立EDMA通道用來下一步的壓縮處理,通知信號發(fā)送后等待DSP建立EDMA通道的響應,DSP將預處理后的圖像數據從FIFO中讀取后放到到L2存儲器,存滿一幀圖像后開始JEPG圖像壓縮,壓縮處理完成后發(fā)送中斷信號通知FPGA,F(xiàn)PGA在收到中斷信號后再從 FIFO中讀取壓縮后的圖像數據。同時判斷編碼信號是否有效,如果無效則通知DSP結束,如果有效則按同樣的規(guī)則對下一幀圖像進行壓縮。
FPGA+DSP的系統(tǒng)方案體積僅為70×70mm,體積小,功耗低,濾波速度更是能達到25F/S,圖像數據壓縮速率更是能達到30F/s以上。不僅慢速了視頻處理系統(tǒng)的實時性要求,更是具有良好的靈活性和擴展性。FPGA+DSP的系統(tǒng)方案設計已經通過了硬件驗證,并達到了預定的設計要求,實現(xiàn)了大數據量的實時處理,并應用于廣大的視頻圖像市場。
(作者單位:石家莊優(yōu)創(chuàng)科技股份有限公司)