基于DSP和FPGA的實時圖像壓縮系統設計
實現這個功能的方法是采用EDMA ping_pong方式。在DSP中使用hEdmaPing和hEdmaPong雙通道EDMA并建立PingBuffer和PongBuffer兩個數據存儲區。 當寫完1幀圖像后,FPGA發送EXTINT4中斷信號啟動hEdmaPing將數據搬移到PingBuffer,同時將通道鏈接至hEdmaPong。在下一個中斷事件發生時將數據搬移到PongBuffer中,CPU在hEdmaPong通道完成中斷服務程序中鏈接hEdmaPing通道。如此往復,使系統數據搬移和處理連續進行。
3.2 DSP/BIOS調度程序設計
僅僅采用EDMA乒乓方式進行EDMA數據傳輸還是不夠的,不能實現數據的采集和壓縮同時進行,還需要DSP/BIOS調度程序。在任務、硬件中斷、軟件中斷中進行調度,在軟中斷服務函數中進行圖像壓縮任務。
DSP/BIOS是TI公司所設計開發的、尺寸可裁剪的實時多任務操作系統內核,通過使用DSP/BIOS提供的豐富的內核服務,開發者能快速地創建滿足實時性能要求的精細復雜的多任務應用程序。
DSP/BIOS程序編寫過程如下:
(1)在DSP/BIOS配置面板中添加1個軟中斷jpeg_swi,并將該軟中斷的服務函數設置為jpeg。
(2)添加軟中斷服務函數jpeg();代碼如下:
void jpeg(void)
{
Uint32 i;
if(pingpong)
bitstream_length=my_jpegenc->fxns->encode(my_jpegenc,(XDAS_Int8**)buf0,output_bitstream_buffer);
else
bitstream_length=my_jpegenc->fxns->encode(my_jpegenc,(XDAS_Int8 **)buf1,output_bitstream_buffer);
submit_qdma();
while(!(EDMA_getPriQStatus()EDMA_OPT_PRI_HIGH));
}
(3)在EDMA中斷服務函數中添加如下代碼:
SWI_post(jpeg_swi);
該函數的作用是觸發jpeg_swi軟中斷。
4 系統關鍵技術
4.1 時鐘
在使用內部生成的時鐘過程中,可能引起設計上的功能和時限問題。組合邏輯產生的時鐘會引入毛刺,造成功能問題,而引入的延遲則可能會導致時限問題。
本設計中用到很多全局時鐘的整數倍分頻,且由于分頻的整數倍較大,如果利用FPGA中自帶的DCM模塊很難實現這樣的功能。因此,采用同步計數器的分頻方法,并且在各個時鐘信號輸出之前,再加一級寄存器輸出,這樣的操作就避免了組合邏輯生成的毛刺被阻擋在寄存器的數據輸入端口上。
4.2 DSP與FPGA數據交換
由于壓縮算法采用MECOSO公司的JPEG壓縮算法,經過優化和處理后,壓縮1幅圖像僅需要4 ms。所以影響整個系統能否實現高頻幀的關鍵技術是EDMA向SDRAM中搬移數據的速度,在本設計中設幀圖像的大小為600×480=288 KB,傳輸1幅圖像所需的時間需要10 ms。影響其速度主要有2個因素:EMIF所使用的ECLOCK和EMIF相關設置的寄存器。
在本系統中,ECLOCK采用了DSP的CPU4分頻,使EMIF的CLOCK工作在150 MHz,大大提高了搬移速度。由于SRAM映射在DSP的CE2空間,考慮到讀取數據需要建立(setup)、選通(Strobe)和保持(Hold)3個步驟,故將CE2相關寄存器的建立時間和選通時間選擇為1個clk,經Hold時間設置為0。這樣設置后EMIF總線的數據吞吐量為:

本文設計的圖像壓縮系統實現了分辨率為600×480、幀頻率為100幀/s的視頻信號輸入的圖像采集,并能夠進行實時的JPEG壓縮。系統采用DSP+FPGA的方案,雖然是一種較常用的組織方式,但在該系統中解決了一些關鍵的問題,大大提高了圖像壓縮速度及系統的靈活性。本系統已經應用于航天領域某監測系統,效果良好,運行穩定。
參考文獻
[1] 李武森,遲澤英,陳文建.高速DSP圖像處理系統中的乒乓緩存結構研究[J].光電子技術與信息,2005(3):76-79.
[2] 周如輝.實時視頻處理系統中乒乓緩存控制器的設計[J].電子元器件應用,2006,33(4):66-68.
[3] 江思敏,劉暢.TMS320C6000 DSP應用開發教程[M].北京:機械工業出版社,2005.本文引用地址:http://www.j9360.com/article/191641.htm
評論